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] gdb-17.2-rebase-f44: - Upgrade to the FSF GDB snapshot: 7.0.50.20100121 Date: Sat, 27 Jun 2026 23:54:31 GMT Message-ID: <178260447173.1.2028644144765881614.rpms-gdb-79563d6f81f0@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 79563d6f81f0d52d39f1d87f28aef92e56be9188 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogNzk1NjNkNmY4MWYwZDUyZDM5ZjFkODdmMjhhZWY5MmU1NmJl OTE4OAogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3Jh cHJvamVjdC5vcmc+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTAtMDEtMjFUMTY6MDk6MTErMDA6 MDAKICAgICAgICAgICAgU3RhdHMgIDogKzc4NDEvLTI0NDkgaW4gMTQgZmlsZShzKQogICAgICAg ICAgICBVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jLzc5 NTYzZDZmODFmMGQ1MmQzOWYxZDg3ZjI4YWVmOTJlNTZiZTkxODg/YnJhbmNoPWdkYi0xNy4yLXJl YmFzZS1mNDQKCiAgICAgICAgICAgIExvZzoKICAgICAgICAgICAgLSBVcGdyYWRlIHRvIHRoZSBG U0YgR0RCIHNuYXBzaG90OiA3LjAuNTAuMjAxMDAxMjEKLSBhcmNoZXItamFua3JhdG9jaHZpbC1m ZWRvcmExMyBjb21taXQ6CiAgICBjY2RlMTUzMDQ3OWNjOTY2Mzc0MzUxMDM4MDU3YjlkZGE5MGFh MjUxCi0gW2V4cHItY3VtdWxhdGl2ZV0gQXJjaGVyIGJyYW5jaCBpcyBub3cgaW5jbHVkZWQuCgot LS0KZGlmZiAtLWdpdCBhLy5jdnNpZ25vcmUgYi8uY3ZzaWdub3JlCmluZGV4IGE1YzM5MTUuLjFj YWZmZDQgMTAwNjQ0Ci0tLSBhLy5jdnNpZ25vcmUKKysrIGIvLmN2c2lnbm9yZQpAQCAtMSwyICsx LDIgQEAKLWdkYi03LjAuNTAuMjAxMDAxMTgudGFyLmJ6MgorZ2RiLTcuMC41MC4yMDEwMDEyMS50 YXIuYnoyCiBsaWJzdGRjKystdjMtcHl0aG9uLXIxNTU5NzgudGFyLmJ6MgoKZGlmZiAtLWdpdCBh L2dkYi02LjMtcmVhZG5ldmVyLTIwMDUwOTA3LnBhdGNoIGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAw NTA5MDcucGF0Y2gKaW5kZXggNDMzOTQ0ZC4uYmQ4OWRkNSAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1y ZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKKysrIGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcu cGF0Y2gKQEAgLTExLDExICsxMSwxMSBAQAogCiAgICAgICAgICogZ2RiLnRleGluZm8gKEZpbGUg T3B0aW9ucyk6IERvY3VtZW50IC0tcmVhZG5ldmVyLgogCi1JbmRleDogZ2RiLTcuMC41MC4yMDEw MDExNS9nZGIvZG9jL2dkYi50ZXhpbmZvCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIv ZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmln L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wMS0xNSAwMzoxNjo0My4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wMS0xNSAw MzoyMDowNC4wMDAwMDAwMDAgKzAxMDAKLUBAIC05OTUsNiArOTk1LDEyIEBAIFJlYWQgZWFjaCBz eW1ib2wgZmlsZSdzIGVudGlyZSBzeW1ib2wgdGEKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9y aWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTAxLTIxIDE1OjExOjA5LjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTAxLTIx IDE1OjEzOjAyLjAwMDAwMDAwMCArMDEwMAorQEAgLTk5Nyw2ICs5OTcsMTIgQEAgUmVhZCBlYWNo IHN5bWJvbCBmaWxlJ3MgZW50aXJlIHN5bWJvbCB0YQogIHRoZSBkZWZhdWx0LCB3aGljaCBpcyB0 byByZWFkIGl0IGluY3JlbWVudGFsbHkgYXMgaXQgaXMgbmVlZGVkLgogIFRoaXMgbWFrZXMgc3Rh cnR1cCBzbG93ZXIsIGJ1dCBtYWtlcyBmdXR1cmUgb3BlcmF0aW9ucyBmYXN0ZXIuCiAgCkBAIC0y OCwxMCArMjgsMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2RvYy9nZGIudGV4 aW5mbwogIEBlbmQgdGFibGUKICAKICBAbm9kZSBNb2RlIE9wdGlvbnMKLUluZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9tYWluLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9t YWluLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL21haW4u YwkyMDEwLTAxLTE1IDAzOjE4OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL21haW4uYwkyMDEwLTAxLTE1IDAzOjIwOjA0LjAwMDAwMDAwMCArMDEwMAorLS0t IGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvbWFpbi5jCTIwMTAtMDEtMjEgMTU6MTE6MTgu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvbWFpbi5jCTIwMTAt MDEtMjEgMTU6MTM6MDIuMDAwMDAwMDAwICswMTAwCiBAQCAtMzgyLDYgKzM4Miw3IEBAIGNhcHR1 cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICAgICAgeyJ4ZGIiLCBub19hcmd1bWVudCwgJnhkYl9j b21tYW5kcywgMX0sCiAgICAgICAgeyJkYngiLCBub19hcmd1bWVudCwgJmRieF9jb21tYW5kcywg MX0sCkBAIC00MCw3ICs0MCw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9tYWlu LmMKICAgICAgICB7InIiLCBub19hcmd1bWVudCwgJnJlYWRub3dfc3ltYm9sX2ZpbGVzLCAxfSwK ICAgICAgICB7InF1aWV0Iiwgbm9fYXJndW1lbnQsICZxdWlldCwgMX0sCiAgICAgICAgeyJxIiwg bm9fYXJndW1lbnQsICZxdWlldCwgMX0sCi1AQCAtMTAzMCw2ICsxMDMxLDcgQEAgT3B0aW9uczpc blxuXAorQEAgLTEwMzMsNiArMTAzNCw3IEBAIE9wdGlvbnM6XG5cblwKICAgIGZwdXRzX3VuZmls dGVyZWQgKF8oIlwKICAgIC0tcXVpZXQgICAgICAgICAgICBEbyBub3QgcHJpbnQgdmVyc2lvbiBu dW1iZXIgb24gc3RhcnR1cC5cblwKICAgIC0tcmVhZG5vdyAgICAgICAgICBGdWxseSByZWFkIHN5 bWJvbCBmaWxlcyBvbiBmaXJzdCBhY2Nlc3MuXG5cCkBAIC00OCwxMCArNDgsMTAgQEAgSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL21haW4uYwogICIpLCBzdHJlYW0pOwogICAgZnB1dHNf dW5maWx0ZXJlZCAoXygiXAogICAgLS1zZT1GSUxFICAgICAgICAgIFVzZSBGSUxFIGFzIHN5bWJv bCBmaWxlIGFuZCBleGVjdXRhYmxlIGZpbGUuXG5cCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvc3ltZmlsZS5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvc3ltZmlsZS5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9zeW1maWxlLmMJ MjAxMC0wMS0xNSAwMzoxNjo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9zeW1maWxlLmMJMjAxMC0wMS0xNSAwMzoyMDowNC4wMDAwMDAwMDAgKzAxMDAKKy0t LSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDEwLTAxLTIxIDE1OjEx OjA5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3N5bWZpbGUu YwkyMDEwLTAxLTIxIDE1OjEzOjAyLjAwMDAwMDAwMCArMDEwMAogQEAgLTc5LDYgKzc5LDcgQEAg c3RhdGljIHZvaWQgY2xlYXJfc3ltdGFiX3VzZXJzX2NsZWFudXAgKAogIAogIC8qIEdsb2JhbCB2 YXJpYWJsZXMgb3duZWQgYnkgdGhpcyBmaWxlICovCkBAIC02MCwxOSArNjAsMTkgQEAgSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bWZpbGUuYwogIAogIC8qIEV4dGVybmFsIHZhcmlh YmxlcyBhbmQgZnVuY3Rpb25zIHJlZmVyZW5jZWQuICovCiAgCi1JbmRleDogZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvZHdhcmYycmVhZC5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIv ZHdhcmYycmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dk Yi9kd2FyZjJyZWFkLmMJMjAxMC0wMS0xNSAwMzoxNjo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wMS0xNSAwMzoyMDoxOC4w MDAwMDAwMDAgKzAxMDAKLUBAIC01MCw2ICs1MCw3IEBACi0gI2luY2x1ZGUgImFkZHJtYXAuaCIK LSAjaW5jbHVkZSAiYmxvY2suaCIKLSAjaW5jbHVkZSAiZi1sYW5nLmgiCistLS0gZ2RiLTcuMC41 MC4yMDEwMDEyMS5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wMS0yMSAxNToxMTowOS4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9kd2FyZjJyZWFkLmMJMjAx MC0wMS0yMSAxNToxMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC01Myw2ICs1Myw3IEBACisgI2lu Y2x1ZGUgInR5cGVwcmludC5oIgorICNpbmNsdWRlICJqdi1sYW5nLmgiCisgI2luY2x1ZGUgInZl Yy5oIgogKyNpbmNsdWRlICJ0b3AuaCIKICAKICAjaW5jbHVkZSA8ZmNudGwuaD4KICAjaW5jbHVk ZSAiZ2RiX3N0cmluZy5oIgotQEAgLTEyMjYsNyArMTIyNyw4IEBAIGR3YXJmMl9oYXNfaW5mbyAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUKK0BAIC0xMjM3LDcgKzEyMzgsOCBAQCBkd2FyZjJfaGFz X2luZm8gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlCiAgCiAgICAgICAgYmZkX21hcF9vdmVyX3Nl Y3Rpb25zIChvYmpmaWxlLT5vYmZkLCBkd2FyZjJfbG9jYXRlX3NlY3Rpb25zLCBOVUxMKTsKICAg ICAgfQpAQCAtODIsMTAgKzgyLDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9k d2FyZjJyZWFkLmMKICAJICAmJiBkd2FyZjJfcGVyX29iamZpbGUtPmFiYnJldi5hc2VjdGlvbiAh PSBOVUxMKTsKICB9CiAgCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdG9wLmgKK0lu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90b3AuaAogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdG9wLmgJMjAxMC0wMS0wMSAwODozMTo0Mi4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90b3AuaAkyMDEwLTAxLTE1IDAz OjIwOjA0LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIv dG9wLmgJMjAxMC0wMS0wMSAwODozMTo0Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUw LjIwMTAwMTIxL2dkYi90b3AuaAkyMDEwLTAxLTIxIDE1OjEzOjAyLjAwMDAwMDAwMCArMDEwMAog QEAgLTYzLDYgKzYzLDcgQEAgZXh0ZXJuIHZvaWQgc2V0X3Byb21wdCAoY2hhciAqKTsKICAKICAv KiBGcm9tIHJhbmRvbSBwbGFjZXMuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi02LjMtc2VjdXJpdHkt ZXJyYXRhLTIwMDUwNjEwLnBhdGNoIGIvZ2RiLTYuMy1zZWN1cml0eS1lcnJhdGEtMjAwNTA2MTAu cGF0Y2gKaW5kZXggNTZkNzViOS4uNTU3ODU3MCAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1zZWN1cml0 eS1lcnJhdGEtMjAwNTA2MTAucGF0Y2gKKysrIGIvZ2RiLTYuMy1zZWN1cml0eS1lcnJhdGEtMjAw NTA2MTAucGF0Y2gKQEAgLTE5LDExICsxOSwxMSBAQCBQcm9wb3NlZCB1cHN0cmVhbSBidXQgbmV2 ZXIgY29tbWl0dGVkIHVwc3RyZWFtLgogICAgICAgICAoc291cmNlX2NvbW1hbmQpOiBVcGRhdGUg ZG9jdW1lbnRhdGlvbi4gIENoZWNrIHBlcm1pc3Npb25zIGlmCiAgICAgICAgIEZST01fVFRZIGlz IC0xLgogCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY2xpL2NsaS1jbWRzLmMKK0lu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9jbGkvY2xpLWNtZHMuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMC0wMS0x NSAwMzoxNjo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9j bGkvY2xpLWNtZHMuYwkyMDEwLTAxLTE1IDAzOjE5OjEzLjAwMDAwMDAwMCArMDEwMAotQEAgLTM3 LDYgKzM3LDcgQEAKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL2NsaS9jbGktY21k cy5jCTIwMTAtMDEtMTggMDc6MjU6MjIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4y MDEwMDEyMS9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMC0wMS0yMSAxNToxMjoyOC4wMDAwMDAwMDAg KzAxMDAKK0BAIC0zOCw2ICszOCw3IEBACiAgI2luY2x1ZGUgIm9iamZpbGVzLmgiCiAgI2luY2x1 ZGUgInNvdXJjZS5oIgogICNpbmNsdWRlICJkaXNhc20uaCIKQEAgLTMxLDE4ICszMSw5IEBAIElu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jbGkvY2xpLWNtZHMuYwogIGV4dGVybiB2b2lk IGRpc2Nvbm5lY3Rfb3Jfc3RvcF90cmFjaW5nIChpbnQgZnJvbV90dHkpOwogIAogICNpbmNsdWRl ICJ1aS1vdXQuaCIKLUBAIC00NzUsNyArNDc2LDcgQEAgc291cmNlX3NjcmlwdCAoY2hhciAqZmls ZSwgaW50IGZyb21fdHR5KQotIAotICAgaWYgKGZkID09IC0xKQotICAgICB7Ci0tICAgICAgaWYg KGZyb21fdHR5KQotKyAgICAgIGlmIChmcm9tX3R0eSA+IDApCi0gCXBlcnJvcl93aXRoX25hbWUg KGZpbGUpOwotICAgICAgIGVsc2UKLSAJewotQEAgLTQ4NCw2ICs0ODUsMjkgQEAgc291cmNlX3Nj cmlwdCAoY2hhciAqZmlsZSwgaW50IGZyb21fdHR5KQotIAl9Ci0gICAgIH0KK0BAIC00ODgsNiAr NDg5LDI5IEBAIGZpbmRfYW5kX29wZW5fc2NyaXB0IChpbnQgZnJvbV90dHksIGNoYXIKKyAJICAg ICAgZmlsZSwgT19SRE9OTFksICZmdWxsX3BhdGhuYW1lKTsKKyAgIG1ha2VfY2xlYW51cCAoeGZy ZWUsIGZ1bGxfcGF0aG5hbWUpOwogIAogKyNpZmRlZiBIQVZFX0dFVFVJRAogKyAgaWYgKGZyb21f dHR5ID09IC0xKQpAQCAtNjIsMTUgKzUzLDI0IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9jbGkvY2xpLWNtZHMuYwogKwkgIHdhcm5pbmcgKF8oIm5vdCB1c2luZyB1bnRydXN0ZWQg ZmlsZSBcIiVzXCIiKSwgZmlsZSk7CiArCSAgY2xvc2UgKGZkKTsKICsJICBkb19jbGVhbnVwcyAo b2xkX2NsZWFudXBzKTsKLSsJICByZXR1cm47CisrCSAgcmV0dXJuIDA7CiArCX0KICsgICAgfQog KyNlbmRpZgogKwotICAgaXNfcHl0aG9uID0gc291cmNlX3B5dGhvbjsKLSAgIGlmIChzdHJsZW4g KGZpbGUpID4gMyAmJiAhc3RyY21wICgmZmlsZVtzdHJsZW4gKGZpbGUpIC0gM10sICIucHkiKSkK LSAgICAgaXNfcHl0aG9uID0gMTsKLUBAIC00OTUsNiArNTE5LDcgQEAgc291cmNlX3NjcmlwdCAo Y2hhciAqZmlsZSwgaW50IGZyb21fdHR5KQorICAgLyogVXNlIHRoZSBmdWxsIHBhdGggbmFtZSwg aWYgaXQgaXMgZm91bmQuICAqLworICAgaWYgKGZ1bGxfcGF0aG5hbWUgIT0gTlVMTCAmJiBmZCAh PSAtMSkKKyAgICAgeworQEAgLTQ5Niw3ICs1MjAsNyBAQCBmaW5kX2FuZF9vcGVuX3NjcmlwdCAo aW50IGZyb21fdHR5LCBjaGFyCisgCisgICBpZiAoZmQgPT0gLTEpCisgICAgIHsKKy0gICAgICBp ZiAoZnJvbV90dHkpCisrICAgICAgaWYgKGZyb21fdHR5ID4gMCkKKyAJcGVycm9yX3dpdGhfbmFt ZSAoZmlsZSk7CisgICAgICAgZWxzZQorIAl7CitAQCAtNTU0LDYgKzU3OCw3IEBAIHNvdXJjZV9z Y3JpcHQgKGNoYXIgKmZpbGUsIGludCBmcm9tX3R0eSkKICAgIGVsc2UKICAgICAgc2NyaXB0X2Zy b21fZmlsZSAoc3RyZWFtLCBmaWxlKTsKICAKQEAgLTc4LDEwICs3OCwxMCBAQCBJbmRleDogZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvY2xpL2NsaS1jbWRzLmMKICAgIGRvX2NsZWFudXBzIChvbGRf Y2xlYW51cHMpOwogIH0KICAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZ2RiaW5pdC5leHAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5leHAJMjAxMC0wMS0xNSAwMzoxODoy My4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvZ2RiaW5pdC5leHAJMjAxMC0wMS0yMSAxNToxMToxOC4wMDAwMDAwMDAgKzAxMDAK IEBAIC0wLDAgKzEsOTggQEAKICsjICAgQ29weXJpZ2h0IDIwMDUKICsjICAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0xODEsMTcgKzE4MSwxNyBAQCBJbmRleDogZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCiArfQogKwogK3Jl bW90ZV9leGVjIGJ1aWxkICJybSAuZ2RiaW5pdCIKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5zYW1wbGUKK0luZGV4OiBnZGItNy4wLjUw LjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5zYW1wbGUKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5zYW1w bGUJMjAxMC0wMS0xNSAwMzoxODoyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIw MTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5zYW1wbGUJMjAxMC0wMS0yMSAx NToxMToxOC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEgQEAKICtlY2hvICJcbmluIGdkYmlu aXQiCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbWFpbi5jCitJbmRleDogZ2RiLTcu MC41MC4yMDEwMDEyMS9nZGIvbWFpbi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEw MDExNS5vcmlnL2dkYi9tYWluLmMJMjAxMC0wMS0xNSAwMzoxNjo0My4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9tYWluLmMJMjAxMC0wMS0xNSAwMzoxODoyMy4w MDAwMDAwMDAgKzAxMDAKLUBAIC04MTUsNyArODE1LDcgQEAgRXhjZXNzIGNvbW1hbmQgbGluZSBh cmd1bWVudHMgaWdub3JlZC4gKAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvbWFp bi5jCTIwMTAtMDEtMjEgMTU6MTE6MDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4y MDEwMDEyMS9nZGIvbWFpbi5jCTIwMTAtMDEtMjEgMTU6MTE6MTguMDAwMDAwMDAwICswMTAwCitA QCAtODE4LDcgKzgxOCw3IEBAIEV4Y2VzcyBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGlnbm9yZWQu ICgKICAgICAgIGRlYnVnZ2luZyBvciB3aGF0IGRpcmVjdG9yeSB5b3UgYXJlIGluLiAgKi8KICAK ICAgIGlmIChob21lX2dkYmluaXQgJiYgIWluaGliaXRfZ2RiaW5pdCkKQEAgLTIwMCw3ICsyMDAs NyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbWFpbi5jCiAgCiAgICAvKiBOb3cg cGVyZm9ybSBhbGwgdGhlIGFjdGlvbnMgaW5kaWNhdGVkIGJ5IHRoZSBhcmd1bWVudHMuICAqLwog ICAgaWYgKGNkYXJnICE9IE5VTEwpCi1AQCAtODg0LDcgKzg4NCw3IEBAIENhbid0IGF0dGFjaCB0 byBwcm9jZXNzIGFuZCBzcGVjaWZ5IGEgY28KK0BAIC04ODcsNyArODg3LDcgQEAgQ2FuJ3QgYXR0 YWNoIHRvIHByb2Nlc3MgYW5kIHNwZWNpZnkgYSBjbwogICAgLyogUmVhZCB0aGUgLmdkYmluaXQg ZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnksICppZiogaXQgaXNuJ3QKICAgICAgIHRoZSBz YW1lIGFzIHRoZSAkSE9NRS8uZ2RiaW5pdCBmaWxlIChpdCBzaG91bGQgZXhpc3QsIGFsc28pLiAg Ki8KICAgIGlmIChsb2NhbF9nZGJpbml0ICYmICFpbmhpYml0X2dkYmluaXQpCgpkaWZmIC0tZ2l0 IGEvZ2RiLTYuNy10ZXN0c3VpdGUtc3RhYmxlLXJlc3VsdHMucGF0Y2ggYi9nZGItNi43LXRlc3Rz dWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRjaAppbmRleCA4MWUwYzAyLi43NWY2OGIzIDEwMDY0NAot LS0gYS9nZGItNi43LXRlc3RzdWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRjaAorKysgYi9nZGItNi43 LXRlc3RzdWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRjaApAQCAtMTAyLDE1NCArMTAyLDMgQEAgZnJh bWVzLWludmFsaWQgY2FuIGhhcHBlbiBhc3luY2hyb25vdXNseS4KICAKICBzZXQgdGltZW91dCAk b2xkdGltZW91dAogIHJldHVybiAwCi0KLQotCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LXBhdGNoZXMvMjAwOS0xMi9tc2cwMDIzNC5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIHRlc3RzdWl0 ZTogRml4IGEgcmFjZSBieSBtZSAtIHdhdGNodGhyZWFkcy1yZW9yZGVyLmV4cAotCi1IaSwKLQot dGhlcmUgaXMgYSBidWcgZXhwbGFpbmFibGUgYnkgbWFuIHB0aHJlYWRfY29uZF9zaWduYWw6Ci0J VGhlIFsuLi5dIHB0aHJlYWRfY29uZF9zaWduYWwoKSBmdW5jdGlvbnMgc2hhbGwgaGF2ZSBubyBl ZmZlY3QgaWYKLQl0aGVyZSBhcmUgbm8gdGhyZWFkcyBjdXJyZW50bHkgYmxvY2tlZCBvbiBjb25k LgotCi1tZWFuaW5nIGEgcmFjZSBmb3IgdGhlIHRlc3RjYXNlLgotCStGQUlMOiBnZGIudGhyZWFk cy93YXRjaHRocmVhZHMtcmVvcmRlci5leHA6IHJlb3JkZXIxOiBjb250aW51ZSBhICh0aW1lb3V0 KQotCi1PbmUgY2FuIHJlcHJvZHVjZSB0aGUgcmFjZSBvbiBDVlMgSEVBRCBieToKLSMJLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMtcmVvcmRlci5jCi0jCSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzLXJlb3JkZXIuYwotIwlAQCAt ODksNiArODksNyBAQCB0aHJlYWQxX2Z1bmMgKHZvaWQgKnVudXNlZCkKLSMJICAgaW50IGk7Ci0j CSAgIHZvbGF0aWxlIGludCByd2F0Y2hfc3RvcmU7Ci0jCSAKLSMJK3NsZWVwKDEpOwotIwkgICB0 aHJlYWQxX3RpZCA9IGdldHRpZCAoKTsKLSMJICAgaSA9IHB0aHJlYWRfY29uZF9zaWduYWwgKCZ0 aHJlYWQxX3RpZF9jb25kKTsKLSMJICAgYXNzZXJ0IChpID09IDApOwotIwlAQCAtMzE3LDYgKzMx OCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSMJIAotIwkgICBpZiAodGhyZWFk MV90aWQgPT0gMCkKLSMJICAgICB7Ci0jCStzbGVlcCgyKTsKLSMJICAgICAgIGkgPSBwdGhyZWFk X2NvbmRfd2FpdCAoJnRocmVhZDFfdGlkX2NvbmQsICZ0aHJlYWQxX3RpZF9tdXRleCk7Ci0jCSAg ICAgICBhc3NlcnQgKGkgPT0gMCk7Ci0jCSAKLQotRml4ZWQ7IGdkYnN0b3BfbXV0ZXggZ290IHJl bW92ZWQgYXMgaXQgYmVjYW1lIHJlZHVuZGFudCB0aGVyZS4KLQotR29pbmcgdG8gY2hlY2sgaXQg aW4gYXMgb2J2aW91cyBpbiBzZXZlcmFsIGRheXMgKGNvZGUgaXMgYnkgbWUgKyBpdCBpcyBqdXN0 Ci1hIHRlc3RjYXNlKS4KLQotCi1Tb3JyeSwKLUphbgotCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDA5 LTEyLTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkq IGdkYi50aHJlYWRzL3dhdGNodGhyZWFkcy1yZW9yZGVyLmMgKGdkYnN0b3BfbXV0ZXgpOiBSZW1v dmUuCi0JKHRocmVhZDFfZnVuYyk6IFByb3RlY3QgdGhyZWFkMV90aWRfY29uZCBieSB0aHJlYWQx X3RpZF9tdXRleC4gIFJlbW92ZQotCWdkYnN0b3BfbXV0ZXggaGFuZGxpbmcuCi0JKHRocmVhZDJf ZnVuYyk6IFByb3RlY3QgdGhyZWFkMl90aWRfY29uZCBieSB0aHJlYWQyX3RpZF9tdXRleC4gIFJl bW92ZQotCWdkYnN0b3BfbXV0ZXggaGFuZGxpbmcuCi0JKG1haW4pOiBNb3ZlIHRocmVhZDFfdGlk X211dGV4IGFuZCB0aHJlYWQyX3RpZF9tdXRleCBsb2NrcyBiZWZvcmUKLQlwdGhyZWFkX2NyZWF0 ZS4gIFJlbW92ZSBnZGJzdG9wX211dGV4IGhhbmRsaW5nLiAgTmV3IGNvbW1lbnQuICBSZW1vdmUK LQlwdGhyZWFkX2NvbmRfd2FpdCBjb25kaXRpb25hbGl6YXRpb25zLgotCi0tLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkcy1yZW9yZGVyLmMKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzLXJlb3JkZXIuYwotQEAgLTM0LDggKzM0LDYg QEAKLSAgICBvdGhlcndpc2UuICAqLwotICNkZWZpbmUgVElNRU9VVCAoZ2V0dGlkICgpID09IGdl dHBpZCgpID8gMTAgOiAxNSkKLSAKLS1zdGF0aWMgcHRocmVhZF9tdXRleF90IGdkYnN0b3BfbXV0 ZXggPSBQVEhSRUFEX0VSUk9SQ0hFQ0tfTVVURVhfSU5JVElBTElaRVJfTlA7Ci0tCi0gc3RhdGlj IHBpZF90IHRocmVhZDFfdGlkOwotIHN0YXRpYyBwdGhyZWFkX2NvbmRfdCB0aHJlYWQxX3RpZF9j b25kID0gUFRIUkVBRF9DT05EX0lOSVRJQUxJWkVSOwotIHN0YXRpYyBwdGhyZWFkX211dGV4X3Qg dGhyZWFkMV90aWRfbXV0ZXggPSBQVEhSRUFEX0VSUk9SQ0hFQ0tfTVVURVhfSU5JVElBTElaRVJf TlA7Ci1AQCAtOTAsMTIgKzg4LDExIEBAIHRocmVhZDFfZnVuYyAodm9pZCAqdW51c2VkKQotICAg dm9sYXRpbGUgaW50IHJ3YXRjaF9zdG9yZTsKLSAKLSAgIHRocmVhZDFfdGlkID0gZ2V0dGlkICgp OwotKwotKyAgdGltZWRfbXV0ZXhfbG9jayAoJnRocmVhZDFfdGlkX211dGV4KTsKLSAgIGkgPSBw dGhyZWFkX2NvbmRfc2lnbmFsICgmdGhyZWFkMV90aWRfY29uZCk7Ci0gICBhc3NlcnQgKGkgPT0g MCk7Ci0tCi0tICAvKiBCZSBzdXJlIEdEQiBpcyBhbHJlYWR5IHN0b3BwZWQgYmVmb3JlIGNvbnRp bnVpbmcuICAqLwotLSAgdGltZWRfbXV0ZXhfbG9jayAoJmdkYnN0b3BfbXV0ZXgpOwotLSAgaSA9 IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZ2Ric3RvcF9tdXRleCk7Ci0rICBpID0gcHRocmVhZF9t dXRleF91bmxvY2sgKCZ0aHJlYWQxX3RpZF9tdXRleCk7Ci0gICBhc3NlcnQgKGkgPT0gMCk7Ci0g Ci0gICByd2F0Y2hfc3RvcmUgPSB0aHJlYWQxX3J3YXRjaDsKLUBAIC0xMTUsMTIgKzExMiwxMSBA QCB0aHJlYWQyX2Z1bmMgKHZvaWQgKnVudXNlZCkKLSAgIHZvbGF0aWxlIGludCByd2F0Y2hfc3Rv cmU7Ci0gCi0gICB0aHJlYWQyX3RpZCA9IGdldHRpZCAoKTsKLSsKLSsgIHRpbWVkX211dGV4X2xv Y2sgKCZ0aHJlYWQyX3RpZF9tdXRleCk7Ci0gICBpID0gcHRocmVhZF9jb25kX3NpZ25hbCAoJnRo cmVhZDJfdGlkX2NvbmQpOwotICAgYXNzZXJ0IChpID09IDApOwotLQotLSAgLyogQmUgc3VyZSBH REIgaXMgYWxyZWFkeSBzdG9wcGVkIGJlZm9yZSBjb250aW51aW5nLiAgKi8KLS0gIHRpbWVkX211 dGV4X2xvY2sgKCZnZGJzdG9wX211dGV4KTsKLS0gIGkgPSBwdGhyZWFkX211dGV4X3VubG9jayAo JmdkYnN0b3BfbXV0ZXgpOwotKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGhyZWFkMl90 aWRfbXV0ZXgpOwotICAgYXNzZXJ0IChpID09IDApOwotIAotICAgcndhdGNoX3N0b3JlID0gdGhy ZWFkMl9yd2F0Y2g7Ci1AQCAtMjY3LDcgKzI2Myw4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoq YXJndikKLSAKLSAgIHNldGJ1ZiAoc3Rkb3V0LCBOVUxMKTsKLSAKLS0gIHRpbWVkX211dGV4X2xv Y2sgKCZnZGJzdG9wX211dGV4KTsKLSsgIHRpbWVkX211dGV4X2xvY2sgKCZ0aHJlYWQxX3RpZF9t dXRleCk7Ci0rICB0aW1lZF9tdXRleF9sb2NrICgmdGhyZWFkMl90aWRfbXV0ZXgpOwotIAotICAg dGltZWRfbXV0ZXhfbG9jayAoJnRlcm1pbmF0ZV9tdXRleCk7Ci0gCi1AQCAtMzA2LDMwICszMDMs MjEgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgIHN0YXRlX3dhaXQgKHRy YWNlciwgIlQgKHN0b3BwZWQpIik7Ci0gICAgIH0KLSAKLS0gIHRpbWVkX211dGV4X2xvY2sgKCZ0 aHJlYWQxX3RpZF9tdXRleCk7Ci0tICB0aW1lZF9tdXRleF9sb2NrICgmdGhyZWFkMl90aWRfbXV0 ZXgpOwotLQotLSAgLyogTGV0IHRoZSB0aHJlYWRzIHN0YXJ0LiAgKi8KLS0gIGkgPSBwdGhyZWFk X211dGV4X3VubG9jayAoJmdkYnN0b3BfbXV0ZXgpOwotLSAgYXNzZXJ0IChpID09IDApOwotKyAg LyogVGhyZWFkcyBhcmUgbm93IHdhaXRpbmcgYXQgdGltZWRfbXV0ZXhfbG9jayAodGhyZWFkMV90 aWRfbXV0ZXgpIGFuZCBzbwotKyAgICAgdGhleSBjb3VsZCBub3QgdHJpZ2dlciB0aGUgd2F0Y2hw b2ludHMgYmVmb3JlIEdEQiBnZXRzIHVuc3RvcHBlZCBsYXRlci4KLSsgICAgIFRocmVhZHMgZ2V0 IHJlc3VtZWQgYXQgcHRocmVhZF9jb25kX3dhaXQgYmVsb3cuICAqLwotIAotICAgcHJpbnRmICgi V2FpdGluZyB0aWxsIHRoZSB0aHJlYWRzIGluaXRpYWxpemUgdGhlaXIgVElEcy5cbiIpOwotIAot LSAgaWYgKHRocmVhZDFfdGlkID09IDApCi0tICAgIHsKLS0gICAgICBpID0gcHRocmVhZF9jb25k X3dhaXQgKCZ0aHJlYWQxX3RpZF9jb25kLCAmdGhyZWFkMV90aWRfbXV0ZXgpOwotLSAgICAgIGFz c2VydCAoaSA9PSAwKTsKLSsgIGkgPSBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZDFfdGlkX2Nv bmQsICZ0aHJlYWQxX3RpZF9tdXRleCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0gCi0tICAgICAg YXNzZXJ0ICh0aHJlYWQxX3RpZCA+IDApOwotLSAgICB9Ci0rICBhc3NlcnQgKHRocmVhZDFfdGlk ID4gMCk7Ci0gCi0tICBpZiAodGhyZWFkMl90aWQgPT0gMCkKLS0gICAgewotLSAgICAgIGkgPSBw dGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZDJfdGlkX2NvbmQsICZ0aHJlYWQyX3RpZF9tdXRleCk7 Ci0tICAgICAgYXNzZXJ0IChpID09IDApOwotKyAgaSA9IHB0aHJlYWRfY29uZF93YWl0ICgmdGhy ZWFkMl90aWRfY29uZCwgJnRocmVhZDJfdGlkX211dGV4KTsKLSsgIGFzc2VydCAoaSA9PSAwKTsK LSAKLS0gICAgICBhc3NlcnQgKHRocmVhZDJfdGlkID4gMCk7Ci0tICAgIH0KLSsgIGFzc2VydCAo dGhyZWFkMl90aWQgPiAwKTsKLSAKLSAgIHByaW50ZiAoIlRocmVhZCAxIFRJRCA9ICVsdSwgdGhy ZWFkIDIgVElEID0gJWx1LCBQSUQgPSAlbHUuXG4iLAotIAkgICh1bnNpZ25lZCBsb25nKSB0aHJl YWQxX3RpZCwgKHVuc2lnbmVkIGxvbmcpIHRocmVhZDJfdGlkLAotCgpkaWZmIC0tZ2l0IGEvZ2Ri LTYuOC1pbmxpbmluZy1hZGRvbi5wYXRjaCBiL2dkYi02LjgtaW5saW5pbmctYWRkb24ucGF0Y2gK aW5kZXggYjQxYjgwNy4uN2I4NGVmOSAxMDA2NDQKLS0tIGEvZ2RiLTYuOC1pbmxpbmluZy1hZGRv bi5wYXRjaAorKysgYi9nZGItNi44LWlubGluaW5nLWFkZG9uLnBhdGNoCkBAIC01LDEwICs1LDEw IEBAIGNhdXNpbmc6IEZBSUw6IGdkYi5iYXNlL3Vud2luZG9uc2lnbmFsLmV4cDogdW53aW5kb25z aWduYWwsIHN0YWNrIHVud291bmQKIHJlc3VtZSgpIC0+IHRhcmdldF9yZXN1bWUoKSBtb3ZlIG9m IGNsZWFyX2lubGluZV9mcmFtZV9zdGF0ZSgpIGlzIGZvcjoKIGdkYi5taS9taS1uc21vcmlidW5k LmV4cAogCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQv aW5saW5lLWJ0LmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2Ri Lm9wdC9pbmxpbmUtYnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWJ0LmMJMjAxMC0wMS0wMSAwODozMjowNC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2Ri Lm9wdC9pbmxpbmUtYnQuYwkyMDEwLTAxLTE1IDExOjUwOjU5LjAwMDAwMDAwMCArMDEwMAorLS0t IGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWJ0 LmMJMjAxMC0wMS0wMSAwODozMjowNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIw MTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtYnQuYwkyMDEwLTAxLTIxIDE1OjE0 OjQ3LjAwMDAwMDAwMCArMDEwMAogQEAgLTEzLDEwICsxMywxNiBAQAogICAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAg ICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uICAqLwpAQCAtMjgsMTAgKzI4LDEwIEBAIEluZGV4OiBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtYnQuYwogIAogIGlubGluZSBp bnQgZnVuYzEodm9pZCkKICB7Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1 aXRlL2dkYi5vcHQvaW5saW5lLWNtZHMuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2Ri L3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1jbWRzLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4w LjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1jbWRzLmMJMjAx MC0wMS0wMSAwODozMjowNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtY21kcy5jCTIwMTAtMDEtMTUgMTE6NTA6NTku MDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi90ZXN0c3Vp dGUvZ2RiLm9wdC9pbmxpbmUtY21kcy5jCTIwMTAtMDEtMDEgMDg6MzI6MDQuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5l LWNtZHMuYwkyMDEwLTAxLTIxIDE1OjE0OjQ3LjAwMDAwMDAwMCArMDEwMAogQEAgLTEzLDEzICsx MywxOSBAQAogICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwpAQCAtNTQsMTAgKzU0 LDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9p bmxpbmUtY21kcy5jCiAgaW5saW5lIGludCBmdW5jMSh2b2lkKQogIHsKICAgIGJhciAoKTsKLUlu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtY21k cy5leHAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9p bmxpbmUtY21kcy5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcv Z2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1jbWRzLmV4cAkyMDEwLTAxLTAxIDA4OjMyOjA0 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9n ZGIub3B0L2lubGluZS1jbWRzLmV4cAkyMDEwLTAxLTE1IDExOjUwOjU5LjAwMDAwMDAwMCArMDEw MAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5s aW5lLWNtZHMuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDQuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMC41MC4yMDEwMDEyMS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWNtZHMuZXhwCTIw MTAtMDEtMjEgMTU6MTQ6NDcuMDAwMDAwMDAwICswMTAwCiBAQCAtMjMwLDcgKzIzMCw3IEBAIHNl dCBsaW5lMyBbZ2RiX2dldF9saW5lX251bWJlciAic2V0IGJyZWEKICBnZGJfYnJlYWtwb2ludCAk bGluZTMKICBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiY29uc2VjdXRpdmUgZnVuYzEiCkBA IC0xMTAsMTAgKzExMCwxMCBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1 aXRlL2dkYi5vcHQvaW5saW5lLWNtZHMuZXhwCiArZ2RiX3Rlc3QgImluZm8gZnJhbWUiICJpbmxp bmVkIGludG8gZnJhbWUuKiIgIm91dGVyX2lubGluZTIgaW5saW5lZCIKICtnZGJfdGVzdCAiZmlu aSIgIiIgInVwIGZyb20gb3V0ZXJfaW5saW5lMiIKICtnZGJfdGVzdCAiaW5mbyBmcmFtZSIgIiBp biBtYWluIFxbXlxuXF0qXG4gc291cmNlIGxhbmd1YWdlLioiICJtYWluIG5vdCBpbmxpbmVkIgot SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1s b2NhbHMuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0 L2lubGluZS1sb2NhbHMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWxvY2Fscy5jCTIwMTAtMDEtMDEgMDg6MzI6 MDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRl L2dkYi5vcHQvaW5saW5lLWxvY2Fscy5jCTIwMTAtMDEtMTUgMTE6NTA6NTkuMDAwMDAwMDAwICsw MTAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9p bmxpbmUtbG9jYWxzLmMJMjAxMC0wMS0wMSAwODozMjowNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmMJ MjAxMC0wMS0yMSAxNToxNDo0Ny4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xMywxMSArMTMsMTYgQEAK ICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQogICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KQEAgLTEzMywxMCArMTMzLDEwIEBA IEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUt bG9jYWxzLmMKICAKICBpbmxpbmUgaW50IGZ1bmMxKGludCBhcmcxKQogIHsKLUluZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmV4cAor SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1s b2NhbHMuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90 ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmV4cAkyMDEwLTAxLTAxIDA4OjMyOjA0LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIu b3B0L2lubGluZS1sb2NhbHMuZXhwCTIwMTAtMDEtMTUgMTE6NTA6NTkuMDAwMDAwMDAwICswMTAw CistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxp bmUtbG9jYWxzLmV4cAkyMDEwLTAxLTAxIDA4OjMyOjA0LjAwMDAwMDAwMCArMDEwMAorKysrIGdk Yi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2NhbHMuZXhw CTIwMTAtMDEtMjEgMTU6MTQ6NDcuMDAwMDAwMDAwICswMTAwCiBAQCAtNzcsNiArNzcsOSBAQCBp ZiB7ICEgJG5vX2ZyYW1lcyB9IHsKICAKICAjIE1ha2Ugc3VyZSB0aGF0IGxvY2FscyBvbiB0aGUg c3RhY2sgYXJlIGZvdW5kLiAgVGhpcyBpcyBhbiBhcnJheSB0bwpAQCAtMTU1LDEwICsxNTUsMTAg QEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGlu ZS1sb2NhbHMuZXhwCiArICAgIHNldHVwX2tmYWlsICotKi0qICJnY2MvZGVidWcub3B0aW1pemF0 aW9uIgogK30KICBnZGJfdGVzdCAicHJpbnQgYXJyYXlcWzBcXSIgIlxcXCQkZGVjaW1hbCA9IDE4 NCIgInByaW50IGxvY2FsICgzKSIKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9mcmFt ZS5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZnJhbWUuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZnJhbWUuYwkyMDEwLTAxLTE1IDAzOjIy OjE0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2ZyYW1lLmMJ MjAxMC0wMS0xNSAxMTo1MDo1OS4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAw MTIxLm9yaWcvZ2RiL2ZyYW1lLmMJMjAxMC0wMS0yMSAxNToxMzoyNi4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9mcmFtZS5jCTIwMTAtMDEtMjEgMTU6MTQ6NDcu MDAwMDAwMDAwICswMTAwCiBAQCAtMzE2LDcgKzMxNiw3IEBAIGZwcmludF9mcmFtZSAoc3RydWN0 IHVpX2ZpbGUgKmZpbGUsIHN0cnUKICBzdGF0aWMgc3RydWN0IGZyYW1lX2luZm8gKgogIHNraXBf aW5saW5lZF9mcmFtZXMgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKQEAgLTE5NSwxMCArMTk1 LDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9mcmFtZS5jCiAgCXsKICAJICBz YWwtPnN5bXRhYiA9IFNZTUJPTF9TWU1UQUIgKHN5bSk7CiAgCSAgc2FsLT5saW5lID0gU1lNQk9M X0xJTkUgKHN5bSk7Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvYnJlYWtwb2ludC5j CitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvYnJlYWtwb2ludC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMC0wMS0x NSAxMTo0OTo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9i cmVha3BvaW50LmMJMjAxMC0wMS0xNSAxMTo1MjoyMC4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGIt Ny4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLTAxLTIxIDE1OjE0OjQx LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2JyZWFrcG9pbnQu YwkyMDEwLTAxLTIxIDE1OjE0OjQ3LjAwMDAwMDAwMCArMDEwMAogQEAgLTYyLDYgKzYyLDcgQEAK ICAjaW5jbHVkZSAiaml0LmgiCiAgI2luY2x1ZGUgInhtbC1zeXNjYWxsLmgiCkBAIC0yMDcsNyAr MjA3LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2JyZWFrcG9pbnQuYwogIAog IC8qIHJlYWRsaW5lIGluY2x1ZGUgZmlsZXMgKi8KICAjaW5jbHVkZSAicmVhZGxpbmUvcmVhZGxp bmUuaCIKLUBAIC0zNTYwLDEwICszNTYxLDI0IEBAIGJwc3RhdF9jaGVja19icmVha3BvaW50X2Nv bmRpdGlvbnMgKGJwc3QKK0BAIC0zNTU4LDEwICszNTU5LDI0IEBAIGJwc3RhdF9jaGVja19icmVh a3BvaW50X2NvbmRpdGlvbnMgKGJwc3QKICAgIGNvbnN0IHN0cnVjdCBicF9sb2NhdGlvbiAqYmwg PSBicy0+YnJlYWtwb2ludF9hdDsKICAgIHN0cnVjdCBicmVha3BvaW50ICpiID0gYmwtPm93bmVy OwogIApAQCAtMjM2LDcgKzIzNiw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9i cmVha3BvaW50LmMKICAgICAgewogICAgICAgIGludCB2YWx1ZV9pc196ZXJvID0gMDsKICAgICAg ICAKLUBAIC0zNzMxLDYgKzM3NDYsMTIgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3QgYWRk cmVzc19zcGFjZQorQEAgLTM3MjksNiArMzc0NCwxMiBAQCBicHN0YXRfc3RvcF9zdGF0dXMgKHN0 cnVjdCBhZGRyZXNzX3NwYWNlCiAgCQkgIGJzLT5wcmludCA9IDA7CiAgCQl9CiAgCSAgICAgIGJz LT5jb21tYW5kcyA9IGNvcHlfY29tbWFuZF9saW5lcyAoYnMtPmNvbW1hbmRzKTsKQEAgLTI0OSw3 ICsyNDksNyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvYnJlYWtwb2ludC5jCiAg CSAgICB9CiAgCiAgCSAgLyogUHJpbnQgbm90aGluZyBmb3IgdGhpcyBlbnRyeSBpZiB3ZSBkb250 IHN0b3Agb3IgZG9udCBwcmludC4gICovCi1AQCAtNjAzOSw5ICs2MDYwLDkgQEAgc2V0X21vbWVu dGFyeV9icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaAorQEAgLTYwNDMsOSArNjA2NCw5IEBAIHNl dF9tb21lbnRhcnlfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2gKICB7CiAgICBzdHJ1Y3QgYnJl YWtwb2ludCAqYjsKICAKQEAgLTI2MiwxMCArMjYyLDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9icmVha3BvaW50LmMKICAKICAgIGIgPSBzZXRfcmF3X2JyZWFrcG9pbnQgKGdk YmFyY2gsIHNhbCwgdHlwZSk7CiAgICBiLT5lbmFibGVfc3RhdGUgPSBicF9lbmFibGVkOwotSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2lubGluZS1mcmFtZS5jCitJbmRleDogZ2RiLTcu MC41MC4yMDEwMDEyMS9nZGIvaW5saW5lLWZyYW1lLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4w LjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2lubGluZS1mcmFtZS5jCTIwMTAtMDEtMDEgMDg6MzE6MzYu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvaW5saW5lLWZyYW1l LmMJMjAxMC0wMS0xNSAxMTo1MDo1OS4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4wLjUwLjIw MTAwMTIxLm9yaWcvZ2RiL2lubGluZS1mcmFtZS5jCTIwMTAtMDEtMDEgMDg6MzE6MzYuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvaW5saW5lLWZyYW1lLmMJMjAx MC0wMS0yMSAxNToxNDo0Ny4wMDAwMDAwMDAgKzAxMDAKIEBAIC0yMTMsNiArMjEzLDEyIEBAIGlu bGluZV9mcmFtZV9zbmlmZmVyIChjb25zdCBzdHJ1Y3QgZnJhbWUKICAgIGlmIChmcmFtZV9ibG9j ayA9PSBOVUxMKQogICAgICByZXR1cm4gMDsKQEAgLTM0MiwxMCArMzQyLDEwIEBAIEluZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmxpbmUtZnJhbWUuYwogIC8qIFJldHVybiB0aGUgbnVt YmVyIG9mIGhpZGRlbiBmdW5jdGlvbnMgaW5saW5lZCBpbnRvIHRoZSBjdXJyZW50CiAgICAgZnJh bWUuICAqLwogIAotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIu b3B0L2lubGluZS1tYXJrZXJzLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0 c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbWFya2Vycy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41 MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbWFya2Vycy5jCTIw MTAtMDEtMDEgMDg6MzI6MDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLW1hcmtlcnMuYwkyMDEwLTAxLTE1IDExOjUw OjU5LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5vcHQvaW5saW5lLW1hcmtlcnMuYwkyMDEwLTAxLTAxIDA4OjMyOjA0LjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0 L2lubGluZS1tYXJrZXJzLmMJMjAxMC0wMS0yMSAxNToxNDo0Ny4wMDAwMDAwMDAgKzAxMDAKIEBA IC0xNSwxMSArMTUsNiBAQAogIAogIGV4dGVybiBpbnQgeCwgeTsKQEAgLTM1OCwxMCArMzU4LDEw IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxp bmUtbWFya2Vycy5jCiAgdm9pZCBtYXJrZXIodm9pZCkKICB7CiAgICB4ICs9IHk7IC8qIHNldCBi cmVha3BvaW50IDIgaGVyZSAqLwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2dkYnRo cmVhZC5oCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZ2RidGhyZWFkLmgKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2dkYnRocmVhZC5oCTIwMTAt MDEtMTUgMDM6MjI6MTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvZ2RidGhyZWFkLmgJMjAxMC0wMS0xNSAxMTo1MToxOS4wMDAwMDAwMDAgKzAxMDAKKy0tLSBn ZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL2dkYnRocmVhZC5oCTIwMTAtMDEtMjEgMTU6MTE6 MDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZ2RidGhyZWFk LmgJMjAxMC0wMS0yMSAxNToxNDo0Ny4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xOTUsNiArMTk1LDEy IEBAIHN0cnVjdCB0aHJlYWRfaW5mbwogICAgLyogRnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgdG8g ZnJlZSBQUklWQVRFLiAgSWYgdGhpcyBpcyBOVUxMLCB0aGVuCiAgICAgICB4ZnJlZSB3aWxsIGJl IGNhbGxlZCBvbiBQUklWQVRFLiAgKi8KQEAgLTM3NSwxMSArMzc1LDExIEBAIEluZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9nZGJ0aHJlYWQuaAogIH07CiAgCiAgLyogQ3JlYXRlIGFuIGVt cHR5IHRocmVhZCBsaXN0LCBvciBlbXB0eSB0aGUgZXhpc3Rpbmcgb25lLiAgKi8KLUluZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmZjbWQuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAx MjEvZ2RiL2luZmNtZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmln L2dkYi9pbmZjbWQuYwkyMDEwLTAxLTE1IDAzOjIyOjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL2luZmNtZC5jCTIwMTAtMDEtMTUgMTE6NTE6NTMuMDAwMDAw MDAwICswMTAwCi1AQCAtMTQzOCwxMSArMTQzOCwxMSBAQCBmaW5pc2hfY29tbWFuZF9jb250aW51 YXRpb24gKHZvaWQgKmFyZykKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL2luZmNt ZC5jCTIwMTAtMDEtMjEgMTU6MTE6MDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4y MDEwMDEyMS9nZGIvaW5mY21kLmMJMjAxMC0wMS0yMSAxNToxNDo0Ny4wMDAwMDAwMDAgKzAxMDAK K0BAIC0xNDM5LDExICsxNDM5LDExIEBAIGZpbmlzaF9jb21tYW5kX2NvbnRpbnVhdGlvbiAodm9p ZCAqYXJnKQogICAgICAgIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlOwogIAogICAgICAgIHZhbHVl X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChTWU1CT0xfVFlQRSAoYS0+ZnVuY3Rpb24pKTsKQEAg LTM5Myw3ICszOTMsNyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvaW5mY21kLmMK ICAJcHJpbnRfcmV0dXJuX3ZhbHVlIChTWU1CT0xfVFlQRSAoYS0+ZnVuY3Rpb24pLCB2YWx1ZV90 eXBlKTsKICAgICAgfQogIAotQEAgLTE1NTAsNiArMTU1MCwxNiBAQCBmaW5pc2hfZm9yd2FyZCAo c3RydWN0IHN5bWJvbCAqZnVuY3Rpb24sCitAQCAtMTU1MSw2ICsxNTUxLDE2IEBAIGZpbmlzaF9m b3J3YXJkIChzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiwKICAgIHRwLT5pbml0aWF0aW5nX2ZyYW1l ID0gZ2V0X2ZyYW1lX2lkIChmcmFtZSk7CiAgICBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sb25nam1w X2JyZWFrcG9pbnRfY2xlYW51cCwgJnRocmVhZCk7CiAgCkBAIC00MTAsNyArNDEwLDcgQEAgSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2luZmNtZC5jCiAgICB0cC0+cHJvY2VlZF90b19m aW5pc2ggPSAxOyAgICAvKiBXZSB3YW50IHN0b3BfcmVnaXN0ZXJzLCBwbGVhc2UuLi4gICovCiAg ICBjYXJncyA9IHhtYWxsb2MgKHNpemVvZiAoKmNhcmdzKSk7CiAgCi1AQCAtMTU3MCw3ICsxNTgw LDkgQEAgZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBzeW1ib2wgKmZ1bmN0aW9uLAorQEAgLTE1NzEs NyArMTU4MSw5IEBAIGZpbmlzaF9mb3J3YXJkIChzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiwKICBz dGF0aWMgdm9pZAogIGZpbmlzaF9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKICB7 CkBAIC00MjEsNyArNDIxLDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2luZmNt ZC5jCiAgICBzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbjsKICAKICAgIGludCBhc3luY19leGVjID0g MDsKLUBAIC0xNjAxLDQ1ICsxNjEzLDYzIEBAIGZpbmlzaF9jb21tYW5kIChjaGFyICphcmcsIGlu dCBmcm9tX3R0eSkKK0BAIC0xNjAyLDQ1ICsxNjE0LDYzIEBAIGZpbmlzaF9jb21tYW5kIChjaGFy ICphcmcsIGludCBmcm9tX3R0eSkKICAgIGlmICghdGFyZ2V0X2hhc19leGVjdXRpb24pCiAgICAg IGVycm9yIChfKCJUaGUgcHJvZ3JhbSBpcyBub3QgcnVubmluZy4iKSk7CiAgCkBAIC01MDIsNyAr NTAyLDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2luZmNtZC5jCiAgCiAgICAv KiBQcmludCBpbmZvIG9uIHRoZSBzZWxlY3RlZCBmcmFtZSwgaW5jbHVkaW5nIGxldmVsIG51bWJl ciBidXQgbm90CiAgICAgICBzb3VyY2UuICAqLwotQEAgLTE2NTMsMTAgKzE2ODMsMTQgQEAgZmlu aXNoX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQorQEAgLTE2NTQsMTAgKzE2ODQs MTQgQEAgZmluaXNoX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQogICAgICAgIHBy aW50X3N0YWNrX2ZyYW1lIChnZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpLCAxLCBMT0NBVElPTik7 CiAgICAgIH0KICAKQEAgLTUxOCwxMSArNTE4LDExIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9pbmZjbWQuYwogIH0KICAMCiAgCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvdGFyZ2V0LmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90YXJnZXQuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGFyZ2V0LmMJMjAxMC0w MS0xNSAwMzoyMjozMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi90YXJnZXQuYwkyMDEwLTAxLTE1IDExOjUwOjU5LjAwMDAwMDAwMCArMDEwMAotQEAgLTIyNDEs NiArMjI0MSw3IEBAIHRhcmdldF9yZXN1bWUgKHB0aWRfdCBwdGlkLCBpbnQgc3RlcCwgZW4KKy0t LSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL3RhcmdldC5jCTIwMTAtMDEtMjEgMTU6MTM6 MjYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvdGFyZ2V0LmMJ MjAxMC0wMS0yMSAxNToxNDo0Ny4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yMjE2LDYgKzIyMTYsNyBA QCB0YXJnZXRfcmVzdW1lIChwdGlkX3QgcHRpZCwgaW50IHN0ZXAsIGVuCiAgewogICAgc3RydWN0 IHRhcmdldF9vcHMgKnQ7CiAgCkBAIC01MzAsMTAgKzUzMCwxMCBAQCBJbmRleDogZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvdGFyZ2V0LmMKICAgIHRhcmdldF9kY2FjaGVfaW52YWxpZGF0ZSAoKTsK ICAKICAgIGZvciAodCA9IGN1cnJlbnRfdGFyZ2V0LmJlbmVhdGg7IHQgIT0gTlVMTDsgdCA9IHQt PmJlbmVhdGgpCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvaW5saW5lLWZyYW1lLmgK K0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9pbmxpbmUtZnJhbWUuaAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvaW5saW5lLWZyYW1lLmgJMjAxMC0w MS0wMSAwODozMTozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi9pbmxpbmUtZnJhbWUuaAkyMDEwLTAxLTE1IDExOjUwOjU5LjAwMDAwMDAwMCArMDEwMAorLS0t IGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvaW5saW5lLWZyYW1lLmgJMjAxMC0wMS0wMSAw ODozMTozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9pbmxp bmUtZnJhbWUuaAkyMDEwLTAxLTIxIDE1OjE0OjQ3LjAwMDAwMDAwMCArMDEwMAogQEAgLTQzLDYg KzQzLDEwIEBAIHZvaWQgY2xlYXJfaW5saW5lX2ZyYW1lX3N0YXRlIChwdGlkX3QgcHQKICAKICB2 b2lkIHN0ZXBfaW50b19pbmxpbmVfZnJhbWUgKHB0aWRfdCBwdGlkKTsKQEAgLTU0NSwxOSArNTQ1 LDE5IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmxpbmUtZnJhbWUuaAogIC8q IFJldHVybiB0aGUgbnVtYmVyIG9mIGhpZGRlbiBmdW5jdGlvbnMgaW5saW5lZCBpbnRvIHRoZSBj dXJyZW50CiAgICAgZnJhbWUuICAqLwogIAotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L2R3YXJmMnJlYWQuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2R3YXJmMnJlYWQu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZHdhcmYycmVh ZC5jCTIwMTAtMDEtMTUgMTE6NDY6MjkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDEtMTUgMTE6NTI6NTkuMDAwMDAwMDAwICsw MTAwCi1AQCAtNDA3OCw2ICs0MDc4LDcgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgcwotICAgQ09SRV9BRERSIGJhc2VhZGRyOworLS0tIGdkYi03LjAuNTAuMjAxMDAx MjEub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDEtMjEgMTU6MTQ6NDEuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDEtMjEg MTU6MTU6MDkuMDAwMDAwMDAwICswMTAwCitAQCAtNDEzNyw2ICs0MTM3LDcgQEAgcmVhZF9mdW5j X3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgcwogICAgc3RydWN0IGJsb2NrICpibG9jazsK KyAgIHVuc2lnbmVkIGRpZV9jaGlsZHJlbiA9IDA7CiAgICBpbnQgaW5saW5lZF9mdW5jID0gKGRp ZS0+dGFnID09IERXX1RBR19pbmxpbmVkX3N1YnJvdXRpbmUpOwogKyAgc3RydWN0IHR5cGUgKnR5 cGU7CiAgCiAgICBpZiAoaW5saW5lZF9mdW5jKQogICAgICB7Ci1AQCAtNDEwOSw3ICs0MTEwLDEw IEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHMKK0BAIC00MTc4LDcg KzQxNzksMTAgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgcwogICAg YWRkX3RvX2N1X2Z1bmNfbGlzdCAobmFtZSwgbG93cGMsIGhpZ2hwYywgY3UpOwogIAogICAgbmV3 ID0gcHVzaF9jb250ZXh0ICgwLCBsb3dwYyk7CgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci5wYXRj aCBiL2dkYi1hcmNoZXIucGF0Y2gKaW5kZXggNjdlNjUxMC4uMmU4OTQ1MCAxMDA2NDQKLS0tIGEv Z2RiLWFyY2hlci5wYXRjaAorKysgYi9nZGItYXJjaGVyLnBhdGNoCkBAIC0yLDcgKzIsNyBAQCBo dHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVjdEFyY2hlcgogaHR0cDovL3NvdXJj ZXdhcmUub3JnL2dkYi93aWtpL0FyY2hlckJyYW5jaE1hbmFnZW1lbnQKIAogR0lUIHNuYXBzaG90 OgotY29tbWl0IDgxODEwYTIwYjJkMmMzYmYxOGUxNTFkZTNjZGRmYzk2NDQ1YjNjNDYKK2NvbW1p dCBjY2RlMTUzMDQ3OWNjOTY2Mzc0MzUxMDM4MDU3YjlkZGE5MGFhMjUxCiAKIGJyYW5jaCBgYXJj aGVyJyAtIHRoZSBtZXJnZSBvZiBicmFuY2hlczoKIGFyY2hlci10cm9tZXktZGVsYXllZC1zeW1m aWxlCkBAIC0xMSw3ICsxMSw3IEBAIGFyY2hlci1wbXVsZG9vbi1uZXh0LW92ZXItdGhyb3cKIGFy Y2hlci1qYW5rcmF0b2NodmlsLWZvcnRyYW4tbW9kdWxlCiBhcmNoZXItamFua3JhdG9jaHZpbC13 YXRjaHBvaW50CiBhcmNoZXItamFua3JhdG9jaHZpbC12bGEKLVRPRE86YXJjaGVyLWtlaXRocy1l eHByLWN1bXVsYXRpdmUKK2FyY2hlci1rZWl0aHMtZXhwci1jdW11bGF0aXZlCiAKIAogZGlmZiAt LWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgpAQCAtMTg4LDM4ICsxODgs MjcgQEAgaW5kZXggZmY4Yjg2ZS4uZjQ1MGE3YiAxMDA2NDQKICAjCiAgIyBEZXBlbmRlbmN5IHRy YWNraW5nLiAgTW9zdCBvZiB0aGlzIGlzIGNvbmRpdGlvbmFsIG9uIEdOVSBNYWtlIGJlaW5nCiAg IyBmb3VuZCBieSBjb25maWd1cmU7IGlmIEdOVSBNYWtlIGlzIG5vdCBmb3VuZCwgd2UgZmFsbCBi YWNrIHRvIGEKLWRpZmYgLS1naXQgYS9nZGIvTkVXUyBiL2dkYi9ORVdTCi1pbmRleCAxN2Q2NGZi Li5lMGViMTYwIDEwMDY0NAotLS0tIGEvZ2RiL05FV1MKLSsrKyBiL2dkYi9ORVdTCi1AQCAtNjY5 LDYgKzY2OSwxMyBAQCB4ODYveDg2XzY0IERhcndpbgkJaVszNDU2N104Ni0qLWRhcndpbioKLSAK LSB4ODZfNjQgTWluR1cJCQl4ODZfNjQtKi1taW5ndyoKLSAKLSsqIE5ldyBuYXRpdmUgY29uZmln dXJhdGlvbnMKLSsKLSt4ODYveDg2XzY0IERhcndpbgkJaVszNDU2N104Ni0qLWRhcndpbioKLSsK LStpbmZvIG9zIHByb2Nlc3NlcwotKyAgU2hvdyBvcGVyYXRpbmcgc3lzdGVtIGluZm9ybWF0aW9u IGFib3V0IHByb2Nlc3Nlcy4KLSsKLSAqIE5ldyB0YXJnZXRzCi0gCi0gTGF0dGljZSBNaWNvMzIg ICAgICAgICAgICAgICAgICBsbTMyLSoKIGRpZmYgLS1naXQgYS9nZGIvYWRhLWxhbmcuYyBiL2dk Yi9hZGEtbGFuZy5jCi1pbmRleCAyNGRlZjk1Li40NjgyMDQ1IDEwMDY0NAoraW5kZXggNDBiNzBh Yi4uYjI5MWQ0MCAxMDA2NDQKIC0tLSBhL2dkYi9hZGEtbGFuZy5jCiArKysgYi9nZGIvYWRhLWxh bmcuYwotQEAgLTE2NDQsNyArMTY0NCw3IEBAIGFkYV90eXBlX29mX2FycmF5IChzdHJ1Y3QgdmFs dWUgKmFyciwgaW50IGJvdW5kcykKLSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgIHdoaWxl IChhcml0eSA+IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgIHN0cnVjdCB0eXBlICpyYW5nZV90 eXBlID0gYWxsb2NfdHlwZV9jb3B5ICh2YWx1ZV90eXBlIChhcnIpKTsKLSsJICBzdHJ1Y3QgdHlw ZSAqcmFuZ2VfdHlwZSA9IGFsbG9jX3R5cGVfY29weSAodmFsdWVfdHlwZSAoYXJyKSk7Ci0gICAg ICAgICAgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gYWxsb2NfdHlwZV9jb3B5ICh2YWx1ZV90 eXBlIChhcnIpKTsKLSAgICAgICAgICAgc3RydWN0IHZhbHVlICpsb3cgPSBkZXNjX29uZV9ib3Vu ZCAoZGVzY3JpcHRvciwgYXJpdHksIDApOwotICAgICAgICAgICBzdHJ1Y3QgdmFsdWUgKmhpZ2gg PSBkZXNjX29uZV9ib3VuZCAoZGVzY3JpcHRvciwgYXJpdHksIDEpOwotQEAgLTEwOTM3LDYgKzEw OTM3LDQwIEBAIGFkYV9vcGVyYXRvcl9sZW5ndGggKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGlu dCBwYywgaW50ICpvcGxlbnAsIGludCAqYXJnc3ApCitAQCAtNDc4MSwxNCArNDc4MSwxMCBAQCBh ZGFfbG9va3VwX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpi bG9jazAsCisgCisgc3RhdGljIHN0cnVjdCBzeW1ib2wgKgorIGFkYV9sb29rdXBfc3ltYm9sX25v bmxvY2FsIChjb25zdCBjaGFyICpuYW1lLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICpsaW5rYWdlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKKyB7CistICBpZiAobGlua2FnZV9uYW1lID09IE5VTEwp CistICAgIGxpbmthZ2VfbmFtZSA9IG5hbWU7CistICByZXR1cm4gYWRhX2xvb2t1cF9zeW1ib2wg KGxpbmthZ2VfbmFtZSwgYmxvY2tfc3RhdGljX2Jsb2NrIChibG9jayksIGRvbWFpbiwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisrICByZXR1cm4gYWRhX2xvb2t1cF9zeW1i b2wgKG5hbWUsIGJsb2NrX3N0YXRpY19ibG9jayAoYmxvY2spLCBkb21haW4sIE5VTEwpOworIH0K KyAKKyAKK0BAIC0xMDkzMSw2ICsxMDkyNyw0MCBAQCBhZGFfb3BlcmF0b3JfbGVuZ3RoIChzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcGMsIGludCAqb3BsZW5wLCBpbnQgKmFyZ3NwKQogICAg ICB9CiAgfQogIApAQCAtMjYwLDcgKzI0OSw3IEBAIGluZGV4IDI0ZGVmOTUuLjQ2ODIwNDUgMTAw NjQ0CiAgc3RhdGljIGNoYXIgKgogIGFkYV9vcF9uYW1lIChlbnVtIGV4cF9vcGNvZGUgb3Bjb2Rl KQogIHsKLUBAIC0xMTMyNSw2ICsxMTM1OSw3IEBAIHBhcnNlICh2b2lkKQorQEAgLTExMzE5LDYg KzExMzQ5LDcgQEAgcGFyc2UgKHZvaWQpCiAgc3RhdGljIGNvbnN0IHN0cnVjdCBleHBfZGVzY3Jp cHRvciBhZGFfZXhwX2Rlc2NyaXB0b3IgPSB7CiAgICBhZGFfcHJpbnRfc3ViZXhwLAogICAgYWRh X29wZXJhdG9yX2xlbmd0aCwKQEAgLTMwMSwxMSArMjkwLDM2IEBAIGluZGV4IDVjOWU1NTguLjU1 YTE4NzMgMTAwNjQ0CiAgICBpMzg2X3NldF9kZWJ1Z19yZWdpc3Rlcl9sZW5ndGggKDgpOwogIAog ICAgLyogT3ZlcnJpZGUgdGhlIEdOVS9MaW51eCBpbmZlcmlvciBzdGFydHVwIGhvb2suICAqLwor ZGlmZiAtLWdpdCBhL2dkYi9heC1nZGIuYyBiL2dkYi9heC1nZGIuYworaW5kZXggNTc3NmJiMC4u NjA5OWU5OSAxMDA2NDQKKy0tLSBhL2dkYi9heC1nZGIuYworKysrIGIvZ2RiL2F4LWdkYi5jCitA QCAtMTgxMCw3ICsxODEwLDcgQEAgZ2VuX2V4cHIgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHVu aW9uIGV4cF9lbGVtZW50ICoqcGMsCisgCisgCS8qIENhbGxpbmcgbG9va3VwX2Jsb2NrX3N5bWJv bCBpcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBMT0NfUkVHSVNURVIKKyAJICAgc3ltYm9sIGluc3Rl YWQgb2YgdGhlIExPQ19BUkcgb25lIChpZiBib3RoIGV4aXN0KS4gICovCistCXN5bSA9IGxvb2t1 cF9ibG9ja19zeW1ib2wgKGIsIHRoaXNfbmFtZSwgTlVMTCwgVkFSX0RPTUFJTik7CisrCXN5bSA9 IGxvb2t1cF9ibG9ja19zeW1ib2wgKGIsIHRoaXNfbmFtZSwgVkFSX0RPTUFJTik7CisgCWlmICgh c3ltKQorIAkgIGVycm9yIChfKCJubyBgJXMnIGZvdW5kIiksIHRoaXNfbmFtZSk7CisgCiBkaWZm IC0tZ2l0IGEvZ2RiL2Jsb2NrLmMgYi9nZGIvYmxvY2suYwotaW5kZXggNDhhYzIxYi4uODAwMDNi OCAxMDA2NDQKK2luZGV4IDQ4YWMyMWIuLjBlY2NlY2IgMTAwNjQ0CiAtLS0gYS9nZGIvYmxvY2su YwogKysrIGIvZ2RiL2Jsb2NrLmMKLUBAIC0zMTgsNiArMzE4LDI1IEBAIGFsbG9jYXRlX2Jsb2Nr IChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaykKK0BAIC0yMjcsOCArMjI3LDkgQEAgYmxvY2tfc2V0 X3Njb3BlIChzdHJ1Y3QgYmxvY2sgKmJsb2NrLCBjb25zdCBjaGFyICpzY29wZSwKKyAgIEJMT0NL X05BTUVTUEFDRSAoYmxvY2spLT5zY29wZSA9IHNjb3BlOworIH0KKyAKKy0vKiBUaGlzIHJldHVy bnMgdGhlIHVzaW5nIGRpcmVjdGl2ZXMgbGlzdCBhc3NvY2lhdGVkIHdpdGggQkxPQ0ssIGlmCist ICAgYW55LiAgKi8KKysvKiBUaGlzIHJldHVybnMgdGhlIGZpcnN0IHVzaW5nIGRpcmVjdGl2ZXMg YXNzb2NpYXRlZCB3aXRoIEJMT0NLLCBpZgorKyAgIGFueS4gIEVhY2ggQkxPQ0tfTkFNRVNQQUNF KCktPlVTSU5HIGFscmVhZHkgY29udGFpbnMgYWxsIHRoZSBuYW1lc3BhY2VzCisrICAgaW1wb3J0 ZWQgYXQgdGhhdCBjb2RlIHBvaW50IC0gZXZlbiB0aG9zZSBmcm9tIGl0cyBwYXJlbnQgYmxvY2tz LiAgKi8KKyAKKyBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICoKKyBibG9ja191c2luZyAoY29uc3Qgc3Ry dWN0IGJsb2NrICpibG9jaykKK0BAIC0zMTgsNiArMzE5LDI1IEBAIGFsbG9jYXRlX2Jsb2NrIChz dHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaykKICAgIEJMT0NLX1NVUEVSQkxPQ0sgKGJsKSA9IE5VTEw7 CiAgICBCTE9DS19ESUNUIChibCkgPSBOVUxMOwogICAgQkxPQ0tfTkFNRVNQQUNFIChibCkgPSBO VUxMOwpAQCAtMzY3LDcgKzM4MSw3IEBAIGluZGV4IDdlZWRiNmMuLmIxNDc4MjYgMTAwNjQ0CiAr CiAgI2VuZGlmIC8qIEJMT0NLX0ggKi8KIGRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5jIGIv Z2RiL2JyZWFrcG9pbnQuYwotaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKK2luZGV4IGQ0 MDRlZTcuLjJiZTM5N2YgMTAwNjQ0CiAtLS0gYS9nZGIvYnJlYWtwb2ludC5jCiArKysgYi9nZGIv YnJlYWtwb2ludC5jCiBAQCAtNjEsNiArNjEsNyBAQApAQCAtMzc4LDcgKzM5Miw3IEBAIGluZGV4 IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgCiAgLyogcmVhZGxpbmUgaW5jbHVkZSBmaWxlcyAq LwogICNpbmNsdWRlICJyZWFkbGluZS9yZWFkbGluZS5oIgotQEAgLTYxNiw2ICs2MTcsNTMgQEAg Z2V0X2JyZWFrcG9pbnQgKGludCBudW0pCitAQCAtNjE0LDYgKzYxNSw1MyBAQCBnZXRfYnJlYWtw b2ludCAoaW50IG51bSkKICB9CiAgCiAgDApAQCAtNDMyLDcgKzQ0Niw3IEBAIGluZGV4IDBkYzg0 NzQuLjFhMzA5YjUgMTAwNjQ0CiAgLyogY29uZGl0aW9uIE4gRVhQIC0tIHNldCBicmVhayBjb25k aXRpb24gb2YgYnJlYWtwb2ludCBOIHRvIEVYUC4gICovCiAgCiAgc3RhdGljIHZvaWQKLUBAIC02 MzYsNDIgKzY4NCw3IEBAIGNvbmRpdGlvbl9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0 eSkKK0BAIC02MzQsNDIgKzY4Miw3IEBAIGNvbmRpdGlvbl9jb21tYW5kIChjaGFyICphcmcsIGlu dCBmcm9tX3R0eSkKICAgIEFMTF9CUkVBS1BPSU5UUyAoYikKICAgICAgaWYgKGItPm51bWJlciA9 PSBibnVtKQogICAgICAgIHsKQEAgLTQ3Niw3ICs0OTAsNyBAQCBpbmRleCAwZGM4NDc0Li4xYTMw OWI1IDEwMDY0NAogIAlyZXR1cm47CiAgICAgICAgfQogIAotQEAgLTE4NzAsNiArMTg4MywzNiBA QCBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoY2hhciAqZnVuY19uYW1lKQorQEAg LTE4NjgsNiArMTg4MSwzNiBAQCBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoY2hh ciAqZnVuY19uYW1lKQogICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CiAgfQogIApAQCAtNTEz LDcgKzUyNyw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgdm9pZAogIHVwZGF0 ZV9icmVha3BvaW50c19hZnRlcl9leGVjICh2b2lkKQogIHsKLUBAIC0xOTExLDcgKzE5NTQsNyBA QCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKK0BAIC0xOTA5LDcgKzE5NTIs NyBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKICAgICAgLyogVGhyZWFk IGV2ZW50IGJyZWFrcG9pbnRzIG11c3QgYmUgc2V0IGFuZXcgYWZ0ZXIgYW4gZXhlYygpLAogICAg ICAgICBhcyBtdXN0IG92ZXJsYXkgZXZlbnQgYW5kIGxvbmdqbXAgbWFzdGVyIGJyZWFrcG9pbnRz LiAgKi8KICAgICAgaWYgKGItPnR5cGUgPT0gYnBfdGhyZWFkX2V2ZW50IHx8IGItPnR5cGUgPT0g YnBfb3ZlcmxheV9ldmVudApAQCAtNTIyLDcgKzUzNiw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5 YjUgMTAwNjQ0CiAgICAgICAgewogIAlkZWxldGVfYnJlYWtwb2ludCAoYik7CiAgCWNvbnRpbnVl OwotQEAgLTE5MjYsNyArMTk2OSw4IEBAIHVwZGF0ZV9icmVha3BvaW50c19hZnRlcl9leGVjICh2 b2lkKQorQEAgLTE5MjQsNyArMTk2Nyw4IEBAIHVwZGF0ZV9icmVha3BvaW50c19hZnRlcl9leGVj ICh2b2lkKQogIAogICAgICAvKiBMb25nam1wIGFuZCBsb25nam1wLXJlc3VtZSBicmVha3BvaW50 cyBhcmUgYWxzbyBtZWFuaW5nbGVzcwogICAgICAgICBhZnRlciBhbiBleGVjLiAgKi8KQEAgLTUz Miw3ICs1NDYsNyBAQCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogICAgICAgIHsKICAJ ZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwogIAljb250aW51ZTsKLUBAIC0xOTg3LDYgKzIwMzEsNyBA QCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKK0BAIC0xOTg1LDYgKzIwMjks NyBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKICAgIGNyZWF0ZV9sb25n am1wX21hc3Rlcl9icmVha3BvaW50ICgiX2xvbmdqbXAiKTsKICAgIGNyZWF0ZV9sb25nam1wX21h c3Rlcl9icmVha3BvaW50ICgic2lnbG9uZ2ptcCIpOwogICAgY3JlYXRlX2xvbmdqbXBfbWFzdGVy X2JyZWFrcG9pbnQgKCJfc2lnbG9uZ2ptcCIpOwpAQCAtNTQwLDcgKzU1NCw3IEBAIGluZGV4IDBk Yzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgfQogIAogIGludAotQEAgLTIwMTAsNiArMjA1NSw3IEBA IGRldGFjaF9icmVha3BvaW50cyAoaW50IHBpZCkKK0BAIC0yMDA4LDYgKzIwNTMsNyBAQCBkZXRh Y2hfYnJlYWtwb2ludHMgKGludCBwaWQpCiAgICAgIGlmIChiLT5pbnNlcnRlZCkKICAgICAgICB2 YWwgfD0gcmVtb3ZlX2JyZWFrcG9pbnRfMSAoYiwgbWFya19pbnNlcnRlZCk7CiAgICB9CkBAIC01 NDgsNyArNTYyLDcgQEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAgIGRvX2NsZWFu dXBzIChvbGRfY2hhaW4pOwogICAgcmV0dXJuIHZhbDsKICB9Ci1AQCAtMjEwOSwxMiArMjE1NSwx NCBAQCByZW1vdmVfYnJlYWtwb2ludF8xIChzdHJ1Y3QgYnBfbG9jYXRpb24gKmIsIGluc2VydGlv bl9zdGF0ZV90IGlzKQorQEAgLTIxMDcsMTIgKzIxNTMsMTQgQEAgcmVtb3ZlX2JyZWFrcG9pbnRf MSAoc3RydWN0IGJwX2xvY2F0aW9uICpiLCBpbnNlcnRpb25fc3RhdGVfdCBpcykKICAJcmV0dXJu IHZhbDsKICAgICAgICBiLT5pbnNlcnRlZCA9IChpcyA9PSBtYXJrX2luc2VydGVkKTsKICAgICAg fQpAQCAtNTY1LDcgKzU3OSw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgICAg ICAgdmFsID0gdGFyZ2V0X3JlbW92ZV93YXRjaHBvaW50IChiLT5hZGRyZXNzLCBiLT5sZW5ndGgs IAogIAkJCQkgICAgICBiLT53YXRjaHBvaW50X3R5cGUpOwogIAotQEAgLTI4OTQsNiArMjk0Miwx MiBAQCBwcmludF9pdF90eXBpY2FsIChicHN0YXQgYnMpCitAQCAtMjg5Miw2ICsyOTQwLDEyIEBA IHByaW50X2l0X3R5cGljYWwgKGJwc3RhdCBicykKICAgICAgICByZXN1bHQgPSBQUklOVF9OT1RI SU5HOwogICAgICAgIGJyZWFrOwogIApAQCAtNTc4LDcgKzU5Miw3IEBAIGluZGV4IDBkYzg0NzQu LjFhMzA5YjUgMTAwNjQ0CiAgICAgIGNhc2UgYnBfd2F0Y2hwb2ludDoKICAgICAgY2FzZSBicF9o YXJkd2FyZV93YXRjaHBvaW50OgogICAgICAgIGFubm90YXRlX3dhdGNocG9pbnQgKGItPm51bWJl cik7Ci1AQCAtMjk4MSw2ICszMDM1LDggQEAgcHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0IGJzKQor QEAgLTI5NzksNiArMzAzMyw4IEBAIHByaW50X2l0X3R5cGljYWwgKGJwc3RhdCBicykKICAgICAg Y2FzZSBicF9ub25lOgogICAgICBjYXNlIGJwX2xvbmdqbXA6CiAgICAgIGNhc2UgYnBfbG9uZ2pt cF9yZXN1bWU6CkBAIC01ODcsNyArNjAxLDcgQEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2 NDQKICAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKICAgICAgY2FzZSBicF93YXRjaHBvaW50X3Nj b3BlOgogICAgICBjYXNlIGJwX2NhbGxfZHVtbXk6Ci1AQCAtMzM4NSw4ICszNDQxLDEyIEBAIGJw c3RhdF9jaGVja19sb2NhdGlvbiAoY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpibCwKK0BAIC0z MzgzLDggKzM0MzksMTIgQEAgYnBzdGF0X2NoZWNrX2xvY2F0aW9uIChjb25zdCBzdHJ1Y3QgYnBf bG9jYXRpb24gKmJsLAogIAogIC8qIElmIEJTIHJlZmVycyB0byBhIHdhdGNocG9pbnQsIGRldGVy bWluZSBpZiB0aGUgd2F0Y2hlZCB2YWx1ZXMKICAgICBoYXMgYWN0dWFsbHkgY2hhbmdlZCwgYW5k IHdlIHNob3VsZCBzdG9wLiAgSWYgbm90LCBzZXQgQlMtPnN0b3AKQEAgLTYwMiw3ICs2MTYsNyBA QCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogIGJwc3RhdF9jaGVja193YXRjaHBvaW50 IChicHN0YXQgYnMpCiAgewogICAgY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpibCA9IGJzLT5i cmVha3BvaW50X2F0OwotQEAgLTM0NzUsOCArMzUzNSwxMCBAQCBicHN0YXRfY2hlY2tfd2F0Y2hw b2ludCAoYnBzdGF0IGJzKQorQEAgLTM0NzMsOCArMzUzMywxMCBAQCBicHN0YXRfY2hlY2tfd2F0 Y2hwb2ludCAoYnBzdGF0IGJzKQogIAkgICAgIGFueXRoaW5nIGZvciB0aGlzIHdhdGNocG9pbnQu ICAqLwogIAkgIGJzLT5wcmludF9pdCA9IHByaW50X2l0X25vb3A7CiAgCSAgYnMtPnN0b3AgPSAw OwpAQCAtNjEzLDcgKzYyNyw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgfQog IAogIAotQEAgLTM1OTAsNiArMzY1Miw4IEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0IGFk ZHJlc3Nfc3BhY2UgKmFzcGFjZSwKK0BAIC0zNTg4LDYgKzM2NTAsOCBAQCBicHN0YXRfc3RvcF9z dGF0dXMgKHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2UsCiAgCiAgICAgICAgZm9yIChibCA9 IGItPmxvYzsgYmwgIT0gTlVMTDsgYmwgPSBibC0+bmV4dCkKICAJewpAQCAtNjIyLDcgKzYzNiw3 IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgCSAgLyogRm9yIGhhcmR3YXJlIHdh dGNocG9pbnRzLCB3ZSBsb29rIG9ubHkgYXQgdGhlIGZpcnN0IGxvY2F0aW9uLgogIAkgICAgIFRo ZSB3YXRjaHBvaW50X2NoZWNrIGZ1bmN0aW9uIHdpbGwgd29yayBvbiBlbnRpcmUgZXhwcmVzc2lv biwKICAJICAgICBub3QgdGhlIGluZGl2aWR1YWwgbG9jYXRpb25zLiAgRm9yIHJlYWQgd2F0Y2hv cGludHMsIHRoZQotQEAgLTM2MDcsNiArMzY3MSw3IEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3Ry dWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKK0BAIC0zNjA1LDYgKzM2NjksNyBAQCBicHN0YXRf c3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2UsCiAgCSAgLyogQ29tZSBo ZXJlIGlmIGl0J3MgYSB3YXRjaHBvaW50LCBvciBpZiB0aGUgYnJlYWsgYWRkcmVzcyBtYXRjaGVz ICovCiAgCiAgCSAgYnMgPSBicHN0YXRfYWxsb2MgKGJsLCBicyk7CS8qIEFsbG9jIGEgYnBzdGF0 IHRvIGV4cGxhaW4gc3RvcCAqLwpAQCAtNjMwLDcgKzY0NCw3IEBAIGluZGV4IDBkYzg0NzQuLjFh MzA5YjUgMTAwNjQ0CiAgCiAgCSAgLyogQXNzdW1lIHdlIHN0b3AuICBTaG91bGQgd2UgZmluZCB3 YXRjaHBvaW50IHRoYXQgaXMgbm90IGFjdHVhbGx5CiAgCSAgICAgdHJpZ2dlcmVkLCBvciBpZiBj b25kaXRpb24gb2YgYnJlYWtwb2ludCBpcyBmYWxzZSwgd2UnbGwgcmVzZXQKLUBAIC0zNjE0LDEy ICszNjc5LDIyIEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFz cGFjZSwKK0BAIC0zNjEyLDEyICszNjc3LDIyIEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0 IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKICAJICBicy0+c3RvcCA9IDE7CiAgCSAgYnMtPnByaW50 ID0gMTsKICAKQEAgLTY1Nyw3ICs2NzEsNyBAQCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0 NAogIAkgICAgLyogV2UgZG8gbm90IHN0b3AgZm9yIHRoZXNlLiAgKi8KICAJICAgIGJzLT5zdG9w ID0gMDsKICAJICBlbHNlCi1AQCAtMzgyOSw2ICszOTA0LDcgQEAgYnBzdGF0X3doYXQgKGJwc3Rh dCBicykKK0BAIC0zODI3LDYgKzM5MDIsNyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQogICAg c3RydWN0IGJwc3RhdF93aGF0IHJldHZhbDsKICAKICAgIHJldHZhbC5jYWxsX2R1bW15ID0gMDsK QEAgLTY2NSw3ICs2NzksNyBAQCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogICAgZm9y ICg7IGJzICE9IE5VTEw7IGJzID0gYnMtPm5leHQpCiAgICAgIHsKICAgICAgICBlbnVtIGNsYXNz IGJzX2NsYXNzID0gbm9fZWZmZWN0OwotQEAgLTM4NzUsMTAgKzM5NTEsMTUgQEAgYnBzdGF0X3do YXQgKGJwc3RhdCBicykKK0BAIC0zODczLDEwICszOTQ5LDE1IEBAIGJwc3RhdF93aGF0IChicHN0 YXQgYnMpCiAgCSAgICBic19jbGFzcyA9IG5vX2VmZmVjdDsKICAJICBicmVhazsKICAJY2FzZSBi cF9sb25nam1wOgpAQCAtNjgxLDcgKzY5NSw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAw NjQ0CiAgCSAgYnJlYWs7CiAgCWNhc2UgYnBfc3RlcF9yZXN1bWU6CiAgCSAgaWYgKGJzLT5zdG9w KQotQEAgLTM5MDEsNiArMzk4Miw3IEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMpCitAQCAtMzg5 OSw2ICszOTgwLDcgQEAgYnBzdGF0X3doYXQgKGJwc3RhdCBicykKICAJY2FzZSBicF90aHJlYWRf ZXZlbnQ6CiAgCWNhc2UgYnBfb3ZlcmxheV9ldmVudDoKICAJY2FzZSBicF9sb25nam1wX21hc3Rl cjoKQEAgLTY4OSw3ICs3MDMsNyBAQCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogIAkg IGJzX2NsYXNzID0gYnBfbm9zdG9wOwogIAkgIGJyZWFrOwogIAljYXNlIGJwX2NhdGNocG9pbnQ6 Ci1AQCAtNDA0NSw2ICs0MTI3LDggQEAgcHJpbnRfb25lX2JyZWFrcG9pbnRfbG9jYXRpb24gKHN0 cnVjdCBicmVha3BvaW50ICpiLAorQEAgLTQwNDMsNiArNDEyNSw4IEBAIHByaW50X29uZV9icmVh a3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKICAgICAge2JwX2FjY2Vzc193 YXRjaHBvaW50LCAiYWNjIHdhdGNocG9pbnQifSwKICAgICAge2JwX2xvbmdqbXAsICJsb25nam1w In0sCiAgICAgIHticF9sb25nam1wX3Jlc3VtZSwgImxvbmdqbXAgcmVzdW1lIn0sCkBAIC02OTgs NyArNzEyLDcgQEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAgICAge2JwX3N0ZXBf cmVzdW1lLCAic3RlcCByZXN1bWUifSwKICAgICAge2JwX3dhdGNocG9pbnRfc2NvcGUsICJ3YXRj aHBvaW50IHNjb3BlIn0sCiAgICAgIHticF9jYWxsX2R1bW15LCAiY2FsbCBkdW1teSJ9LAotQEAg LTQwNTIsNiArNDEzNiw3IEBAIHByaW50X29uZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3Qg YnJlYWtwb2ludCAqYiwKK0BAIC00MDUwLDYgKzQxMzQsNyBAQCBwcmludF9vbmVfYnJlYWtwb2lu dF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCiAgICAgIHticF90aHJlYWRfZXZlbnQs ICJ0aHJlYWQgZXZlbnRzIn0sCiAgICAgIHticF9vdmVybGF5X2V2ZW50LCAib3ZlcmxheSBldmVu dHMifSwKICAgICAge2JwX2xvbmdqbXBfbWFzdGVyLCAibG9uZ2ptcCBtYXN0ZXIifSwKQEAgLTcw Niw3ICs3MjAsNyBAQCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogICAgICB7YnBfY2F0 Y2hwb2ludCwgImNhdGNocG9pbnQifSwKICAgICAge2JwX3RyYWNlcG9pbnQsICJ0cmFjZXBvaW50 In0sCiAgICAgIHticF9mYXN0X3RyYWNlcG9pbnQsICJmYXN0IHRyYWNlcG9pbnQifSwKLUBAIC00 MTc2LDYgKzQyNjEsOCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJy ZWFrcG9pbnQgKmIsCitAQCAtNDE3NCw2ICs0MjU5LDggQEAgcHJpbnRfb25lX2JyZWFrcG9pbnRf bG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAogICAgICAgIGNhc2UgYnBfZmluaXNoOgog ICAgICAgIGNhc2UgYnBfbG9uZ2ptcDoKICAgICAgICBjYXNlIGJwX2xvbmdqbXBfcmVzdW1lOgpA QCAtNzE1LDcgKzcyOSw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgICAgICAg Y2FzZSBicF9zdGVwX3Jlc3VtZToKICAgICAgICBjYXNlIGJwX3dhdGNocG9pbnRfc2NvcGU6CiAg ICAgICAgY2FzZSBicF9jYWxsX2R1bW15OgotQEAgLTQxODMsNiArNDI3MCw3IEBAIHByaW50X29u ZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BAIC00MTgxLDYg KzQyNjgsNyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9p bnQgKmIsCiAgICAgICAgY2FzZSBicF90aHJlYWRfZXZlbnQ6CiAgICAgICAgY2FzZSBicF9vdmVy bGF5X2V2ZW50OgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CkBAIC03MjMsNyArNzM3 LDcgQEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAgICAgICBjYXNlIGJwX3RyYWNl cG9pbnQ6CiAgICAgICAgY2FzZSBicF9mYXN0X3RyYWNlcG9pbnQ6CiAgICAgICAgY2FzZSBicF9q aXRfZXZlbnQ6Ci1AQCAtNDgyMSw2ICs0OTA5LDggQEAgYWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0 cnVjdCBicmVha3BvaW50ICpicHQpCitAQCAtNDgxOSw2ICs0OTA3LDggQEAgYWxsb2NhdGVfYnBf bG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCiAgICAgIGNhc2UgYnBfZmluaXNoOgog ICAgICBjYXNlIGJwX2xvbmdqbXA6CiAgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1bWU6CkBAIC03 MzIsNyArNzQ2LDcgQEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAgICAgY2FzZSBi cF9zdGVwX3Jlc3VtZToKICAgICAgY2FzZSBicF93YXRjaHBvaW50X3Njb3BlOgogICAgICBjYXNl IGJwX2NhbGxfZHVtbXk6Ci1AQCAtNDgyOSw2ICs0OTE5LDcgQEAgYWxsb2NhdGVfYnBfbG9jYXRp b24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCitAQCAtNDgyNyw2ICs0OTE3LDcgQEAgYWxsb2Nh dGVfYnBfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCiAgICAgIGNhc2UgYnBfb3Zl cmxheV9ldmVudDoKICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6CiAgICAgIGNhc2UgYnBfbG9uZ2pt cF9tYXN0ZXI6CkBAIC03NDAsNyArNzU0LDcgQEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2 NDQKICAgICAgICBsb2MtPmxvY190eXBlID0gYnBfbG9jX3NvZnR3YXJlX2JyZWFrcG9pbnQ7CiAg ICAgICAgYnJlYWs7CiAgICAgIGNhc2UgYnBfaGFyZHdhcmVfYnJlYWtwb2ludDoKLUBAIC01MDE1 LDggKzUxMDYsNyBAQCBtYWtlX2JyZWFrcG9pbnRfcGVybWFuZW50IChzdHJ1Y3QgYnJlYWtwb2lu dCAqYikKK0BAIC01MDEzLDggKzUxMDQsNyBAQCBtYWtlX2JyZWFrcG9pbnRfcGVybWFuZW50IChz dHJ1Y3QgYnJlYWtwb2ludCAqYikKICB9CiAgCiAgLyogQ2FsbCB0aGlzIHJvdXRpbmUgd2hlbiBz dGVwcGluZyBhbmQgbmV4dGluZyB0byBlbmFibGUgYSBicmVha3BvaW50CkBAIC03NTAsNyArNzY0 LDcgQEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAKICB2b2lkCiAgc2V0X2xvbmdq bXBfYnJlYWtwb2ludCAoaW50IHRocmVhZCkKLUBAIC01MDI5LDEwICs1MTE5LDExIEBAIHNldF9s b25nam1wX2JyZWFrcG9pbnQgKGludCB0aHJlYWQpCitAQCAtNTAyNywxMCArNTExNywxMSBAQCBz ZXRfbG9uZ2ptcF9icmVha3BvaW50IChpbnQgdGhyZWFkKQogICAgICAgY2xvbmVzIG9mIHRob3Nl IGFuZCBlbmFibGUgdGhlbSBmb3IgdGhlIHJlcXVlc3RlZCB0aHJlYWQuICAqLwogICAgQUxMX0JS RUFLUE9JTlRTX1NBRkUgKGIsIHRlbXApCiAgICAgIGlmIChiLT5wc3BhY2UgPT0gY3VycmVudF9w cm9ncmFtX3NwYWNlCkBAIC03NjQsNyArNzc4LDcgQEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAx MDA2NDQKICAJY2xvbmUtPnRocmVhZCA9IHRocmVhZDsKICAgICAgICB9CiAgfQotQEAgLTUwNDQs NyArNTEzNSw3IEBAIGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnQgKGludCB0aHJlYWQpCitAQCAt NTA0Miw3ICs1MTMzLDcgQEAgZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludCAoaW50IHRocmVhZCkK ICAgIHN0cnVjdCBicmVha3BvaW50ICpiLCAqdGVtcDsKICAKICAgIEFMTF9CUkVBS1BPSU5UU19T QUZFIChiLCB0ZW1wKQpAQCAtNzczLDcgKzc4Nyw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUg MTAwNjQ0CiAgICAgICAgewogIAlpZiAoYi0+dGhyZWFkID09IHRocmVhZCkKICAJICBkZWxldGVf YnJlYWtwb2ludCAoYik7Ci1AQCAtNjExOSw2ICs2MjEwLDggQEAgbWVudGlvbiAoc3RydWN0IGJy ZWFrcG9pbnQgKmIpCitAQCAtNjExNyw2ICs2MjA4LDggQEAgbWVudGlvbiAoc3RydWN0IGJyZWFr cG9pbnQgKmIpCiAgICAgICAgY2FzZSBicF9maW5pc2g6CiAgICAgICAgY2FzZSBicF9sb25nam1w OgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1bWU6CkBAIC03ODIsNyArNzk2LDcgQEAgaW5k ZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAgICAgICBjYXNlIGJwX3N0ZXBfcmVzdW1lOgog ICAgICAgIGNhc2UgYnBfY2FsbF9kdW1teToKICAgICAgICBjYXNlIGJwX3dhdGNocG9pbnRfc2Nv cGU6Ci1AQCAtNjEyNyw2ICs2MjIwLDcgQEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIp CitAQCAtNjEyNSw2ICs2MjE4LDcgQEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCiAg ICAgICAgY2FzZSBicF9vdmVybGF5X2V2ZW50OgogICAgICAgIGNhc2UgYnBfaml0X2V2ZW50Ogog ICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CkBAIC03OTAsNyArODA0LDcgQEAgaW5kZXgg MGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAJYnJlYWs7CiAgICAgICAgfQogIAotQEAgLTc1MTEs NiArNzYwNSw3IEBAIHN0cnVjdCB1bnRpbF9icmVha19jb21tYW5kX2NvbnRpbnVhdGlvbl9hcmdz CitAQCAtNzUwOSw2ICs3NjAzLDcgQEAgc3RydWN0IHVudGlsX2JyZWFrX2NvbW1hbmRfY29udGlu dWF0aW9uX2FyZ3MKICB7CiAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDsKICAgIHN0 cnVjdCBicmVha3BvaW50ICpicmVha3BvaW50MjsKQEAgLTc5OCw3ICs4MTIsNyBAQCBpbmRleCAw ZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogIH07CiAgCiAgLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxs ZWQgYnkgZmV0Y2hfaW5mZXJpb3JfZXZlbnQgdmlhIHRoZQotQEAgLTc1MjUsNiArNzYyMCw3IEBA IHVudGlsX2JyZWFrX2NvbW1hbmRfY29udGludWF0aW9uICh2b2lkICphcmcpCitAQCAtNzUyMyw2 ICs3NjE4LDcgQEAgdW50aWxfYnJlYWtfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFyZykK ICAgIGRlbGV0ZV9icmVha3BvaW50IChhLT5icmVha3BvaW50KTsKICAgIGlmIChhLT5icmVha3Bv aW50MikKICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGEtPmJyZWFrcG9pbnQyKTsKQEAgLTgwNiw3 ICs4MjAsNyBAQCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogIH0KICAKICB2b2lkCi1A QCAtNzUzNiw2ICs3NjMyLDggQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQg ZnJvbV90dHksIGludCBhbnl3aGVyZSkKK0BAIC03NTM0LDYgKzc2MzAsOCBAQCB1bnRpbF9icmVh a19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQogICAgc3Ry dWN0IGJyZWFrcG9pbnQgKmJyZWFrcG9pbnQ7CiAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtw b2ludDIgPSBOVUxMOwogICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKQEAgLTgxNSw3ICs4 MjksNyBAQCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogIAogICAgY2xlYXJfcHJvY2Vl ZF9zdGF0dXMgKCk7CiAgCi1AQCAtNzU3NCw2ICs3NjcyLDkgQEAgdW50aWxfYnJlYWtfY29tbWFu ZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHksIGludCBhbnl3aGVyZSkKK0BAIC03NTcyLDYgKzc2 NzAsOSBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50 IGFueXdoZXJlKQogIAogICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3Bv aW50IChicmVha3BvaW50KTsKICAKQEAgLTgyNSw3ICs4MzksNyBAQCBpbmRleCAwZGM4NDc0Li4x YTMwOWI1IDEwMDY0NAogICAgLyogS2VlcCB3aXRoaW4gdGhlIGN1cnJlbnQgZnJhbWUsIG9yIGlu IGZyYW1lcyBjYWxsZWQgYnkgdGhlIGN1cnJlbnQKICAgICAgIG9uZS4gICovCiAgCi1AQCAtNzU4 Niw2ICs3Njg3LDEwIEBAIHVudGlsX2JyZWFrX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21f dHR5LCBpbnQgYW55d2hlcmUpCitAQCAtNzU4NCw2ICs3Njg1LDEwIEBAIHVudGlsX2JyZWFrX2Nv bW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCiAgCQkJCQkgICAg ICBmcmFtZV91bndpbmRfY2FsbGVyX2lkIChmcmFtZSksCiAgCQkJCQkgICAgICBicF91bnRpbCk7 CiAgICAgICAgbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50IChicmVha3BvaW50Mik7CkBA IC04MzYsNyArODUwLDcgQEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAgICAgfQog IAogICAgcHJvY2VlZCAoLTEsIFRBUkdFVF9TSUdOQUxfREVGQVVMVCwgMCk7Ci1AQCAtNzYwMiw2 ICs3NzA3LDcgQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHks IGludCBhbnl3aGVyZSkKK0BAIC03NjAwLDYgKzc3MDUsNyBAQCB1bnRpbF9icmVha19jb21tYW5k IChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQogIAogICAgICAgIGFyZ3Mt PmJyZWFrcG9pbnQgPSBicmVha3BvaW50OwogICAgICAgIGFyZ3MtPmJyZWFrcG9pbnQyID0gYnJl YWtwb2ludDI7CkBAIC04NDQsNyArODU4LDcgQEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2 NDQKICAKICAgICAgICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOwogICAgICAgIGFkZF9j b250aW51YXRpb24gKGluZmVyaW9yX3RocmVhZCAoKSwKLUBAIC04ODIzLDYgKzg5MjksNyBAQCBk ZWxldGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCitAQCAtODc4NSw2ICs4ODkx LDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQogIAkgICAgJiYg Yi0+dHlwZSAhPSBicF90aHJlYWRfZXZlbnQKICAJICAgICYmIGItPnR5cGUgIT0gYnBfb3Zlcmxh eV9ldmVudAogIAkgICAgJiYgYi0+dHlwZSAhPSBicF9sb25nam1wX21hc3RlcgpAQCAtODUyLDcg Kzg2Niw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgCSAgICAmJiBiLT5udW1i ZXIgPj0gMCkKICAJICB7CiAgCSAgICBicmVha3NfdG9fZGVsZXRlID0gMTsKLUBAIC04ODQyLDYg Kzg5NDksNyBAQCBkZWxldGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCitAQCAt ODgwNCw2ICs4OTExLDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5 KQogIAkJJiYgYi0+dHlwZSAhPSBicF9qaXRfZXZlbnQKICAJCSYmIGItPnR5cGUgIT0gYnBfb3Zl cmxheV9ldmVudAogIAkJJiYgYi0+dHlwZSAhPSBicF9sb25nam1wX21hc3RlcgpAQCAtODYwLDcg Kzg3NCw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgCQkmJiBiLT5udW1iZXIg Pj0gMCkKICAJICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwogIAkgIH0KLUBAIC05MTUyLDYg KzkyNjAsNyBAQCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCitAQCAtOTExNCw2 ICs5MjIyLDcgQEAgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICpiaW50KQogIAkgcmVzZXQg bGF0ZXIgYnkgYnJlYWtwb2ludF9yZV9zZXQuICAqLwogICAgICBjYXNlIGJwX292ZXJsYXlfZXZl bnQ6CiAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CkBAIC04NjgsNyArODgyLDcgQEAgaW5k ZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAgICAgICBkZWxldGVfYnJlYWtwb2ludCAoYik7 CiAgICAgICAgYnJlYWs7CiAgCi1AQCAtOTE3NCw2ICs5MjgzLDggQEAgYnJlYWtwb2ludF9yZV9z ZXRfb25lICh2b2lkICpiaW50KQorQEAgLTkxMzYsNiArOTI0NSw4IEBAIGJyZWFrcG9pbnRfcmVf c2V0X29uZSAodm9pZCAqYmludCkKICAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKICAgICAgY2Fz ZSBicF9sb25nam1wOgogICAgICBjYXNlIGJwX2xvbmdqbXBfcmVzdW1lOgpAQCAtODc3LDcgKzg5 MSw3IEBAIGluZGV4IDBkYzg0NzQuLjFhMzA5YjUgMTAwNjQ0CiAgICAgIGNhc2UgYnBfaml0X2V2 ZW50OgogICAgICAgIGJyZWFrOwogICAgICB9Ci1AQCAtOTIxNiw2ICs5MzI3LDcgQEAgYnJlYWtw b2ludF9yZV9zZXQgKHZvaWQpCitAQCAtOTE3OCw2ICs5Mjg5LDcgQEAgYnJlYWtwb2ludF9yZV9z ZXQgKHZvaWQpCiAgICBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoIl9sb25nam1w Iik7CiAgICBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoInNpZ2xvbmdqbXAiKTsK ICAgIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICgiX3NpZ2xvbmdqbXAiKTsKQEAg LTg4NSw3ICs4OTksNyBAQCBpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAogIH0KICAMCiAg LyogUmVzZXQgdGhlIHRocmVhZCBudW1iZXIgb2YgdGhpcyBicmVha3BvaW50OgotQEAgLTEwMTc3 LDYgKzEwMjg5LDIyIEBAIGFsbF90cmFjZXBvaW50cyAoKQorQEAgLTEwMTczLDYgKzEwMjg1LDIy IEBAIGFsbF90cmFjZXBvaW50cyAoKQogICAgcmV0dXJuIHRwX3ZlYzsKICB9CiAgCkBAIC05MDgs NyArOTIyLDcgQEAgaW5kZXggMGRjODQ3NC4uMWEzMDliNSAxMDA2NDQKICAMCiAgLyogVGhpcyBo ZWxwIHN0cmluZyBpcyB1c2VkIGZvciB0aGUgYnJlYWssIGhicmVhaywgdGJyZWFrIGFuZCB0aGJy ZWFrIGNvbW1hbmRzLgogICAgIEl0IGlzIGRlZmluZWQgYXMgYSBtYWNybyB0byBwcmV2ZW50IGR1 cGxpY2F0aW9uLgotQEAgLTEwNzIxLDQgKzEwODQ5LDUgQEAgaW5mZXJpb3IgaW4gYWxsLXN0b3Ag bW9kZSwgZ2RiIGJlaGF2ZXMgYXMgaWYgYWx3YXlzLWluc2VydGVkIG1vZGUgaXMgb2ZmLiIpLAor QEAgLTEwNzE3LDQgKzEwODQ1LDUgQEAgaW5mZXJpb3IgaW4gYWxsLXN0b3AgbW9kZSwgZ2RiIGJl aGF2ZXMgYXMgaWYgYWx3YXlzLWluc2VydGVkIG1vZGUgaXMgb2ZmLiIpLAogICAgYXV0b21hdGlj X2hhcmR3YXJlX2JyZWFrcG9pbnRzID0gMTsKICAKICAgIG9ic2VydmVyX2F0dGFjaF9hYm91dF90 b19wcm9jZWVkIChicmVha3BvaW50X2Fib3V0X3RvX3Byb2NlZWQpOwpAQCAtOTYzLDMwICs5Nzcs MTczIEBAIGluZGV4IDZiMzczYTMuLjU5YWE0MTIgMTAwNjQ0CiAgLyogUmV0dXJuIGEgdHJhY2Vw b2ludCB3aXRoIHRoZSBnaXZlbiBudW1iZXIgaWYgZm91bmQuICAqLwogIGV4dGVybiBzdHJ1Y3Qg YnJlYWtwb2ludCAqZ2V0X3RyYWNlcG9pbnQgKGludCBudW0pOwogIAotZGlmZiAtLWdpdCBhL2dk Yi9jLWxhbmcuYyBiL2dkYi9jLWxhbmcuYwotaW5kZXggZDYyMDg4MS4uZDRhMjI5ZCAxMDA2NDQK LS0tLSBhL2dkYi9jLWxhbmcuYwotKysrIGIvZ2RiL2MtbGFuZy5jCi1AQCAtNzE3LDcgKzcxNyw3 IEBAIGNfZ2V0X3N0cmluZyAoc3RydWN0IHZhbHVlICp2YWx1ZSwgZ2RiX2J5dGUgKipidWZmZXIs IGludCAqbGVuZ3RoLAotICAgICAgSWYgbGVuZ3RoIHJldHVybmVkIGZyb20gcmVhZF9zdHJpbmcg d2FzID4gMCwgcmV0dXJuIHRoZSBudW1iZXIgb2YKLSAgICAgIGNoYXJhY3RlcnMgcmVhZCBieSBk aXZpZGluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGJ5IHdpZHRoLiAgKi8KLSAgIGlmICgqbGVuZ3Ro ICE9IDApCi0tICAgICAqbGVuZ3RoID0gKmxlbmd0aCAvIHdpZHRoOwotKyAgICAqbGVuZ3RoID0g Kmxlbmd0aCAvIHdpZHRoOwotIAotICAgKmNoYXJfdHlwZSA9IGVsZW1lbnRfdHlwZTsKK2RpZmYg LS1naXQgYS9nZGIvYy1leHAueSBiL2dkYi9jLWV4cC55CitpbmRleCA4ZTAwOTc5Li45MmVmYjM5 IDEwMDY0NAorLS0tIGEvZ2RiL2MtZXhwLnkKKysrKyBiL2dkYi9jLWV4cC55CitAQCAtNDE4LDYg KzQxOCwyNCBAQCBleHAgICAgIDogICAgICAgZXhwICcoJyBub25lbXB0eV90eXBlbGlzdCAnKScg Y29uc3Rfb3Jfdm9sYXRpbGUKKyAJCQl9CisgCTsKKyAKKysvKgorK2V4cCAgICAgOiAgICAgICBC TE9DS05BTUUgJygnIG5vbmVtcHR5X3R5cGVsaXN0ICcpJworKwkJCXsgaW50IGk7CisrCQkJICB3 cml0ZV9leHBfZWx0X29wY29kZSAoVFlQRV9JTlNUQU5DRV9MT09LVVApOworKwkJCSAgd3JpdGVf ZXhwX2VsdF9zeW0gKCQxLnN5bSk7CisrCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoVFlQRV9J TlNUQU5DRV9MT09LVVApOworKworKwkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFRZUEVfSU5T VEFOQ0UpOworKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0ICgoTE9OR0VTVCkgJDxpdmVjPjNb MF0pOworKwkJCSAgZm9yIChpID0gMDsgaSA8ICQ8aXZlYz4zWzBdOyArK2kpCisrCQkJICAgIHdy aXRlX2V4cF9lbHRfdHlwZSAoJDx0dmVjPjNbaSArIDFdKTsKKysJCQkgIHdyaXRlX2V4cF9lbHRf bG9uZ2NzdCgoTE9OR0VTVCkgJDxpdmVjPjNbMF0pOworKwkJCSAgd3JpdGVfZXhwX2VsdF9vcGNv ZGUgKFRZUEVfSU5TVEFOQ0UpOworKwkJCSAgZG9fY2xlYW51cHMgKHR5cGVsaXN0X2NsZWFudXAp OworKwkJCX0KKysJOworKyovCisrCisgcmN1cmx5CToJJ30nCisgCQkJeyAkJCA9IGVuZF9hcmds aXN0ICgpIC0gMTsgfQorIAk7CitAQCAtNzg1LDEyICs4MDMsMTMgQEAgcXVhbGlmaWVkX25hbWU6 CXR5cGViYXNlIENPTE9OQ09MT04gbmFtZQorIAk7CisgCisgdmFyaWFibGU6CXF1YWxpZmllZF9u YW1lCisrCXwJQ09MT05DT0xPTiBxdWFsaWZpZWRfbmFtZQorIAl8CUNPTE9OQ09MT04gbmFtZQor IAkJCXsKKyAJCQkgIGNoYXIgKm5hbWUgPSBjb3B5X25hbWUgKCQyKTsKKyAJCQkgIHN0cnVjdCBz eW1ib2wgKnN5bTsKKyAJCQkgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbDsKKy0KKysJ CQkgIAorIAkJCSAgc3ltID0KKyAJCQkgICAgbG9va3VwX3N5bWJvbCAobmFtZSwgKGNvbnN0IHN0 cnVjdCBibG9jayAqKSBOVUxMLAorIAkJCQkJICAgVkFSX0RPTUFJTiwgKGludCAqKSBOVUxMKTsK K0BAIC0yMDMzLDYgKzIwNTIsMTMgQEAgc3RhdGljIGludCBsYXN0X3dhc19zdHJ1Y3RvcDsKKyBz dGF0aWMgaW50CisgeXlsZXggKHZvaWQpCisgeworKyAgLyogbmFtZV9wcmVmaXggc3RvcmVzIHRo ZSBmdWxsIHF1YWxpZmljYXRpb24gb2YgYSB2YXJpYWJsZSB0aGF0IGlzCisrICAgICBzcGVjaWZp ZWQgaW4gdGhlIGV4cHJlc3Npb24uIEl0IGlzIHVzZWQgdG8gZWxlbWluYXRlIGNvbmZ1c2lvbiAK KysgICAgIGR1cmluZyBsb29rdXAuKi8KKysgIHN0YXRpYyBjaGFyICpuYW1lX3ByZWZpeCA9IE5V TEw7CisrICBzdGF0aWMgaW50IG5hbWVfcHJlZml4X2xlbiA9IDA7CisrICBzdGF0aWMgaW50IHRl cm1pbmF0ZV9wcmVmaXggPSAwOworKyAgCisgICBpbnQgYzsKKyAgIGludCBuYW1lbGVuOworICAg dW5zaWduZWQgaW50IGk7CitAQCAtMjA0MSw5ICsyMDY3LDE5IEBAIHl5bGV4ICh2b2lkKQorICAg Y2hhciAqY29weTsKICAKLUBAIC0xMDQwLDYgKzEwNDAsOSBAQCBldmFsdWF0ZV9zdWJleHBfYyAo c3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotICAgcmV0 dXJuIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoZXhwZWN0X3R5cGUsIGV4cCwgcG9zLCBub3Np ZGUpOwotIH0KKyAgIGxhc3Rfd2FzX3N0cnVjdG9wID0gMDsKKy0KKysgIAorICByZXRyeToKKy0K KysgIAorKyAgaWYgKHRlcm1pbmF0ZV9wcmVmaXgKKysgICAgICB8fCBsZXhwdHIgIT0gbmFtZV9w cmVmaXggKyBuYW1lX3ByZWZpeF9sZW4pCisrICAgIHsKKysgICAgICAvKiBTb21lIHRva2VuIHdh cyBza2lwcGVkLCBzbyBjbGVhciBuYW1lX3ByZWZpeC4gKi8KKysgICAgICBuYW1lX3ByZWZpeCA9 IE5VTEw7CisrICAgICAgbmFtZV9wcmVmaXhfbGVuID0gMDsKKysgICAgfQorKyAgICAKKysgIHRl cm1pbmF0ZV9wcmVmaXggPSAxOworKyAgCSAgCSAgCisgICAvKiBDaGVjayBpZiB0aGlzIGlzIGEg bWFjcm8gaW52b2NhdGlvbiB0aGF0IHdlIG5lZWQgdG8gZXhwYW5kLiAgKi8KKyAgIGlmICghIHNj YW5uaW5nX21hY3JvX2V4cGFuc2lvbiAoKSkKKyAgICAgeworQEAgLTIwNzksMTAgKzIxMTUsMTkg QEAgeXlsZXggKHZvaWQpCisgCSAgICAmJiBwYXJzZV9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgIT0g bGFuZ3VhZ2VfY3BsdXMpCisgCSAgYnJlYWs7CiAgCi0rDAotKy8qIFByZXByb2Nlc3NpbmcgYW5k IHBhcnNpbmcgQyBhbmQgQysrIGV4cHJlc3Npb25zLiAgKi8KKysJaWYgKHRva2VudGFiMltpXS50 b2tlbiA9PSBDT0xPTkNPTE9OKQorKwkgIHsKKysJICAgIG5hbWVfcHJlZml4X2xlbiArPSAyOwor KwkgICAgdGVybWluYXRlX3ByZWZpeCA9IDA7CisrCSAgICBpZiAobmFtZV9wcmVmaXggPT0gTlVM TCkKKysJICAgICAgbmFtZV9wcmVmaXggPSBsZXhwdHI7CisrCSAgfQogKworIAlsZXhwdHIgKz0g MjsKKyAJeXlsdmFsLm9wY29kZSA9IHRva2VudGFiMltpXS5vcGNvZGU7CisgCWlmIChpbl9wYXJz ZV9maWVsZCAmJiB0b2tlbnRhYjJbaV0udG9rZW4gPT0gQVJST1cpCisgCSAgbGFzdF93YXNfc3Ry dWN0b3AgPSAxOworKwkKKyAJcmV0dXJuIHRva2VudGFiMltpXS50b2tlbjsKKyAgICAgICB9CiAg Ci0gDAotIC8qIFRhYmxlIG1hcHBpbmcgb3Bjb2RlcyBpbnRvIHN0cmluZ3MgZm9yIHByaW50aW5n IG9wZXJhdG9ycwotQEAgLTExNDAsNiArMTE0Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXhw X2Rlc2NyaXB0b3IgZXhwX2Rlc2NyaXB0b3JfYyA9CitAQCAtMjExMSw2ICsyMTU2LDggQEAgeXls ZXggKHZvaWQpCisgICAgICAgICByZXR1cm4gMDsKKyAKKyAgICAgY2FzZSAnICc6CisrICAgICAg bmFtZV9wcmVmaXhfbGVuKys7CisrICAgICAgdGVybWluYXRlX3ByZWZpeCA9IDA7CisgICAgIGNh c2UgJ1x0JzoKKyAgICAgY2FzZSAnXG4nOgorICAgICAgIGxleHB0cisrOworQEAgLTIyNjgsMTEg KzIzMTUsMTMgQEAgeXlsZXggKHZvaWQpCisgICAgIGVycm9yICgiSW52YWxpZCBjaGFyYWN0ZXIg JyVjJyBpbiBleHByZXNzaW9uLiIsIGMpOworIAorICAgLyogSXQncyBhIG5hbWUuICBTZWUgaG93 IGxvbmcgaXQgaXMuICAqLworKyAgCisgICBuYW1lbGVuID0gMDsKKyAgIGZvciAoYyA9IHRva3N0 YXJ0W25hbWVsZW5dOworICAgICAgICAoYyA9PSAnXycgfHwgYyA9PSAnJCcgfHwgKGMgPj0gJzAn ICYmIGMgPD0gJzknKQorIAl8fCAoYyA+PSAnYScgJiYgYyA8PSAneicpIHx8IChjID49ICdBJyAm JiBjIDw9ICdaJykgfHwgYyA9PSAnPCcpOykKKyAgICAgeworKyAgICAKKyAgICAgICAvKiBUZW1w bGF0ZSBwYXJhbWV0ZXIgbGlzdHMgYXJlIHBhcnQgb2YgdGhlIG5hbWUuCisgCSBGSVhNRTogVGhp cyBtaXNoYW5kbGVzIGBwcmludCAkYTw0JiYkYT4zJy4gICovCisgCitAQCAtMjM1NywxNCArMjQw NiwyOSBAQCB5eWxleCAodm9pZCkKKyAgICAgIGN1cnJlbnRseSBhcyBuYW1lcyBvZiB0eXBlczsg TkFNRSBmb3Igb3RoZXIgc3ltYm9scy4KKyAgICAgIFRoZSBjYWxsZXIgaXMgbm90IGNvbnN0cmFp bmVkIHRvIGNhcmUgYWJvdXQgdGhlIGRpc3RpbmN0aW9uLiAgKi8KKyAgIHsKKysgICAgY2hhciAq dG1wID0gY29weTsKKyAgICAgc3RydWN0IHN5bWJvbCAqc3ltOworICAgICBpbnQgaXNfYV9maWVs ZF9vZl90aGlzID0gMDsKKyAgICAgaW50IGhleHR5cGU7CisgCistICAgIHN5bSA9IGxvb2t1cF9z eW1ib2wgKGNvcHksIGV4cHJlc3Npb25fY29udGV4dF9ibG9jaywKKysgICAgaWYgKG5hbWVfcHJl Zml4ICE9IE5VTEwpCisrICAgICAgdG1wID0gc2F2ZXN0cmluZyAobmFtZV9wcmVmaXgsIG5hbWVf cHJlZml4X2xlbituYW1lbGVuKTsKKysKKysgICAgc3ltID0gbG9va3VwX3N5bWJvbCAodG1wLCBl eHByZXNzaW9uX2NvbnRleHRfYmxvY2ssCisgCQkJIFZBUl9ET01BSU4sCisgCQkJIHBhcnNlX2xh bmd1YWdlLT5sYV9sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cworIAkJCSA/ICZpc19hX2ZpZWxk X29mX3RoaXMgOiAoaW50ICopIE5VTEwpOworKwkJCSAKKysgICAgLyogS2VlcCB0aGlzIG5hbWUg YXMgdGhlIHByZWZpeCBmb3IgdGhlIG5leHQgbmFtZS4gKi8KKysgICAgaWYgKHN5bSkKKysgICAg ICB7CisrCWlmIChuYW1lX3ByZWZpeCA9PSBOVUxMKQorKwkgIG5hbWVfcHJlZml4ID0gdG9rc3Rh cnQ7CisrCisrCW5hbWVfcHJlZml4X2xlbiArPSBuYW1lbGVuOworKwl0ZXJtaW5hdGVfcHJlZml4 ID0gMDsKKysgICAgICB9CisrCisgICAgIC8qIENhbGwgbG9va3VwX3N5bXRhYiwgbm90IGxvb2t1 cF9wYXJ0aWFsX3N5bXRhYiwgaW4gY2FzZSB0aGVyZSBhcmUKKyAgICAgICAgbm8gcHN5bXRhYnMg KGNvZmYsIHhjb2ZmLCBvciBzb21lIGZ1dHVyZSBjaGFuZ2UgdG8gYmxvdyBhd2F5IHRoZQorICAg ICAgICBwc3ltdGFicyBvbmNlIG9uY2Ugc3ltYm9scyBhcmUgcmVhZCkuICAqLworQEAgLTI0MjMs NiArMjQ4Nyw3IEBAIHl5bGV4ICh2b2lkKQorICAgICB5eWx2YWwuc3N5bS5pc19hX2ZpZWxkX29m X3RoaXMgPSBpc19hX2ZpZWxkX29mX3RoaXM7CisgICAgIGlmIChpbl9wYXJzZV9maWVsZCAmJiAq bGV4cHRyID09ICdcMCcpCisgICAgICAgc2F3X25hbWVfYXRfZW9mID0gMTsKKysgICAgICAgIAor ICAgICByZXR1cm4gTkFNRTsKKyAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvZ2RiL2MtbGFuZy5jIGIv Z2RiL2MtbGFuZy5jCitpbmRleCBkNjIwODgxLi4zNGNiMzRhIDEwMDY0NAorLS0tIGEvZ2RiL2Mt bGFuZy5jCisrKysgYi9nZGIvYy1sYW5nLmMKK0BAIC0xMTQwLDYgKzExNDAsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGV4cF9kZXNjcmlwdG9yIGV4cF9kZXNjcmlwdG9yX2MgPQogIHsKICAgIHBy aW50X3N1YmV4cF9zdGFuZGFyZCwKICAgIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCwKQEAgLTk5 NSwxNjMgKzExNTIsMTE3IEBAIGluZGV4IGQ2MjA4ODEuLmQ0YTIyOWQgMTAwNjQ0CiAgICBkdW1w X3N1YmV4cF9ib2R5X3N0YW5kYXJkLAogICAgZXZhbHVhdGVfc3ViZXhwX2MKIGRpZmYgLS1naXQg YS9nZGIvYy10eXBlcHJpbnQuYyBiL2dkYi9jLXR5cGVwcmludC5jCi1pbmRleCBkMWFmNDgxLi4x YzkzMGI1IDEwMDY0NAoraW5kZXggZDFhZjQ4MS4uOTZiMDcwNSAxMDA2NDQKIC0tLSBhL2dkYi9j LXR5cGVwcmludC5jCiArKysgYi9nZGIvYy10eXBlcHJpbnQuYwotQEAgLTU1OCw3ICs1NTgsMTIg QEAgY190eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwKLSAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSIpOwotIAot ICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIlsiKTsKLS0gICAgICBpZiAoVFlQRV9M RU5HVEggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSA+IDAKLSsgICAgICBpZiAoVFlQRV9BUlJB WV9VUFBFUl9CT1VORF9JU19EV0FSRl9CTE9DSyAodHlwZSkpCi0rCXsKLSsJICAvKiBObyBfKCkg LSBwcmludGVkIHNvdXJjZXMgc2hvdWxkIG5vdCBiZSBsb2NhbGUgZGVwZW5kZW50LiAgKi8KLSsJ ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ2YXJpYWJsZSIpOwotKwl9Ci0rICAgICAgZWxz ZSBpZiAoVFlQRV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSA+IDAKLSAJJiYgIVRZ UEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEICh0eXBlKSkKLSAJZnByaW50Zl9maWx0 ZXJlZCAoc3RyZWFtLCAiJWQiLAotIAkJCSAgKFRZUEVfTEVOR1RIICh0eXBlKQotZGlmZiAtLWdp dCBhL2dkYi9jbGkvY2xpLWNtZHMuYyBiL2dkYi9jbGkvY2xpLWNtZHMuYwotaW5kZXggNDgzMzg5 OC4uOTkyYzQ2ZiAxMDA2NDQKLS0tLSBhL2dkYi9jbGkvY2xpLWNtZHMuYwotKysrIGIvZ2RiL2Ns aS9jbGktY21kcy5jCi1AQCAtNDcsNiArNDcsOCBAQCBleHRlcm4gdm9pZCBkaXNjb25uZWN0X29y X3N0b3BfdHJhY2luZyAoaW50IGZyb21fdHR5KTsKLSAjaW5jbHVkZSAiY2xpL2NsaS1zZXRzaG93 LmgiCi0gI2luY2x1ZGUgImNsaS9jbGktY21kcy5oIgotIAotKyNpbmNsdWRlICJweXRob24vcHl0 aG9uLmgiCi0rCi0gI2lmZGVmIFRVSQotICNpbmNsdWRlICJ0dWkvdHVpLmgiCQkvKiBGb3IgdHVp X2FjdGl2ZSBldC5hbC4gICAqLwotICNlbmRpZgotQEAgLTE4NCw2ICsxODYsNyBAQCBzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqc2hvd2NoZWNrbGlzdDsKK0BAIC0zMiw2ICszMiw3IEBACisgI2lu Y2x1ZGUgImMtbGFuZy5oIgorICNpbmNsdWRlICJ0eXBlcHJpbnQuaCIKKyAjaW5jbHVkZSAiY3At YWJpLmgiCisrI2luY2x1ZGUgImp2LWxhbmcuaCIKICAKLSAvKiBDb21tYW5kIHRyYWNpbmcgc3Rh dGUuICAqLworICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCisgI2luY2x1ZGUgPGVycm5vLmg+CitA QCAtNDAsOCArNDEsNiBAQCBzdGF0aWMgdm9pZCBjcF90eXBlX3ByaW50X21ldGhvZF9hcmdzIChz dHJ1Y3QgdHlwZSAqbXR5cGUsIGNoYXIgKnByZWZpeCwKKyAJCQkJICAgICAgIGNoYXIgKnZhcnN0 cmluZywgaW50IHN0YXRpY3AsCisgCQkJCSAgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKTsK ICAKLStzdGF0aWMgaW50IHNvdXJjZV9weXRob24gPSAwOwotIGludCBzb3VyY2VfdmVyYm9zZSA9 IDA7Ci0gaW50IHRyYWNlX2NvbW1hbmRzID0gMDsKLSAMCi1AQCAtNDQ4LDYgKzQ1MSw3IEBAIHNv dXJjZV9zY3JpcHQgKGNoYXIgKmZpbGUsIGludCBmcm9tX3R0eSkKLSAgIHN0cnVjdCBjbGVhbnVw ICpvbGRfY2xlYW51cHM7Ci0gICBjaGFyICpmdWxsX3BhdGhuYW1lID0gTlVMTDsKLSAgIGludCBm ZDsKLSsgIGludCBpc19weXRob247Cistc3RhdGljIHZvaWQgY190eXBlX3ByaW50X2FyZ3MgKHN0 cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICopOworLQorIHN0YXRpYyB2b2lkIGNwX3R5cGVf cHJpbnRfZGVyaXZhdGlvbl9pbmZvIChzdHJ1Y3QgdWlfZmlsZSAqLCBzdHJ1Y3QgdHlwZSAqKTsK ICAKLSAgIGlmIChmaWxlID09IE5VTEwgfHwgKmZpbGUgPT0gMCkKLSAgICAgewotQEAgLTQ4MCw4 ICs0ODQsMTYgQEAgc291cmNlX3NjcmlwdCAoY2hhciAqZmlsZSwgaW50IGZyb21fdHR5KQotIAl9 Ci0gICAgIH0KKyBzdGF0aWMgdm9pZCBjX3R5cGVfcHJpbnRfdmFyc3BlY19wcmVmaXggKHN0cnVj dCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosIGludCwKK0BAIC0xOTcsNiArMTk2LDIzIEBAIGNw X3R5cGVfcHJpbnRfbWV0aG9kX2FyZ3MgKHN0cnVjdCB0eXBlICptdHlwZSwgY2hhciAqcHJlZml4 LCBjaGFyICp2YXJzdHJpbmcsCisgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgInZvaWQi KTsKICAKLSsgIGlzX3B5dGhvbiA9IHNvdXJjZV9weXRob247Ci0rICBpZiAoc3RybGVuIChmaWxl KSA+IDMgJiYgIXN0cmNtcCAoJmZpbGVbc3RybGVuIChmaWxlKSAtIDNdLCAiLnB5IikpCi0rICAg IGlzX3B5dGhvbiA9IDE7CisgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7CiArCi0g ICBzdHJlYW0gPSBmZG9wZW4gKGZkLCBGT1BFTl9SVCk7Ci0tICBzY3JpcHRfZnJvbV9maWxlIChz dHJlYW0sIGZpbGUpOworKyAgLyogRm9yIG5vbi1zdGF0aWMgbWV0aG9kcywgcmVhZCBxdWFsaWZp ZXJzIGZyb20gdGhlIHR5cGUgb2YKKysgICAgIFRISVMuICAqLworKyAgaWYgKCFzdGF0aWNwKQor KyAgICB7CisrICAgICAgc3RydWN0IHR5cGUgKmRvbWFpbjsKICsKLSsgIGlmIChpc19weXRob24p Ci0rICAgIHNvdXJjZV9weXRob25fc2NyaXB0IChzdHJlYW0sIGZpbGUpOwotKyAgZWxzZQotKyAg ICBzY3JpcHRfZnJvbV9maWxlIChzdHJlYW0sIGZpbGUpOwotIAotICAgZG9fY2xlYW51cHMgKG9s ZF9jbGVhbnVwcyk7Ci0gfQotQEAgLTQ5NSwxNSArNTA3LDMwIEBAIHNvdXJjZV92ZXJib3NlX2Ns ZWFudXAgKHZvaWQgKm9sZF92YWx1ZSkKLSAgIHhmcmVlIChvbGRfdmFsdWUpOworKyAgICAgIGdk Yl9hc3NlcnQgKG5hcmdzID4gMCk7CisrICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9DT0RFIChhcmdz WzBdLnR5cGUpID09IFRZUEVfQ09ERV9QVFIpOworKyAgICAgIGRvbWFpbiA9IFRZUEVfVEFSR0VU X1RZUEUgKGFyZ3NbMF0udHlwZSk7CisrCisrICAgICAgaWYgKFRZUEVfQ09OU1QgKGRvbWFpbikp CisrCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiBjb25zdCIpOworKworKyAgICAgIGlmIChU WVBFX1ZPTEFUSUxFIChkb21haW4pKQorKwlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIgdm9s YXRpbGUiKTsKKysgICAgfQogIH0KICAKLSsvKiBBIGhlbHBlciBmb3Igc291cmNlX2NvbW1hbmQu ICBMb29rIGZvciBhbiBhcmd1bWVudCBpbiAqQVJHUy4KLSsgICBVcGRhdGUgKkFSR1MgYnkgc3Ry aXBwaW5nIGxlYWRpbmcgd2hpdGVzcGFjZS4gIElmIGFuIGFyZ3VtZW50IGlzCi0rICAgZm91bmQs IHJldHVybiBpdCAoYSBjaGFyYWN0ZXIpLiAgT3RoZXJ3aXNlLCByZXR1cm4gMC4gICovCi0rc3Rh dGljIGludAotK2ZpbmRfYXJndW1lbnQgKGNoYXIgKiphcmdzKQotK3sKLSsgIGludCByZXN1bHQg PSAwOwotKyAgd2hpbGUgKGlzc3BhY2UgKCgqYXJncylbMF0pKQotKyAgICArKyphcmdzOwotKyAg aWYgKCgqYXJncylbMF0gPT0gJy0nICYmIGlzYWxwaGEgKCgqYXJncylbMV0pKQotKyAgICB7Ci0r ICAgICAgcmVzdWx0ID0gKCphcmdzKVsxXTsKLSsgICAgICAqYXJncyArPSAzOwotKyAgICB9Ci0r ICByZXR1cm4gcmVzdWx0OwotK30KLSsKLSBzdGF0aWMgdm9pZAotIHNvdXJjZV9jb21tYW5kIChj aGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0gewotICAgc3RydWN0IGNsZWFudXAgKm9sZF9jbGVh bnVwczsKLS0gIGNoYXIgKmZpbGUgPSBhcmdzOwotLSAgaW50ICpvbGRfc291cmNlX3ZlcmJvc2Ug PSB4bWFsbG9jIChzaXplb2YoaW50KSk7CiAgCi0tICAqb2xkX3NvdXJjZV92ZXJib3NlID0gc291 cmNlX3ZlcmJvc2U7Ci0tICBvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHNvdXJjZV92ZXJi b3NlX2NsZWFudXAsIG9sZF9zb3VyY2VfdmVyYm9zZSk7Ci0rICBvbGRfY2xlYW51cHMgPSBtYWtl X2NsZWFudXBfcmVzdG9yZV9pbnRlZ2VyICgmc291cmNlX3ZlcmJvc2UpOwotKyAgbWFrZV9jbGVh bnVwX3Jlc3RvcmVfaW50ZWdlciAoJnNvdXJjZV9weXRob24pOworQEAgLTM1MywxMCArMzY5LDE0 IEBAIGNfdHlwZV9wcmludF9tb2RpZmllciAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sCisgCisgLyogUHJpbnQgb3V0IHRoZSBhcmd1bWVudHMgb2YgVFlQRSwgd2hp Y2ggc2hvdWxkIGhhdmUgVFlQRV9DT0RFX01FVEhPRAorICAgIG9yIFRZUEVfQ09ERV9GVU5DLCB0 byBTVFJFQU0uICBBcnRpZmljaWFsIGFyZ3VtZW50cywgc3VjaCBhcyAidGhpcyIKKy0gICBpbiBu b24tc3RhdGljIG1ldGhvZHMsIGFyZSBkaXNwbGF5ZWQuICAqLworKyAgIGluIG5vbi1zdGF0aWMg bWV0aG9kcywgYXJlIGRpc3BsYXllZCBpZiBTSE9XX0FSVElGSUNJQUwgaXMKKysgICBub24temVy by4gTEFOR1VBR0UgaXMgdGhlIGxhbmd1YWdlIGluIHdoaWNoIFRZUEUgd2FzIGRlZmluZWQuICBU aGlzIGlzCisrICAgYSBuZWNlc3NhcnkgZXZpbCBzaW5jZSB0aGlzIGNvZGUgaXMgdXNlZCBieSB0 aGUgQywgQysrLCBhbmQgSmF2YQorKyAgIGJhY2tlbmRzLiAqLwogIAotICAgLyogLXYgY2F1c2Vz IHRoZSBzb3VyY2UgY29tbWFuZCB0byBydW4gaW4gdmVyYm9zZSBtb2RlLgotICAgICAgV2Ugc3Rp bGwgaGF2ZSB0byBiZSBhYmxlIHRvIGhhbmRsZSBmaWxlbmFtZXMgd2l0aCBzcGFjZXMgaW4gYQot QEAgLTUxMSwyMyArNTM4LDI4IEBAIHNvdXJjZV9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJv bV90dHkpCistc3RhdGljIHZvaWQKKy1jX3R5cGVfcHJpbnRfYXJncyAoc3RydWN0IHR5cGUgKnR5 cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCisrdm9pZAorK2NfdHlwZV9wcmludF9hcmdzIChz dHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKKysJCSAgIGludCBzaG93 X2FydGlmaWNpYWwsIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UpCisgeworICAgaW50IGksIGxlbjsK KyAgIHN0cnVjdCBmaWVsZCAqYXJnczsKK0BAIC0zNjgsMTMgKzM4OCwxOSBAQCBjX3R5cGVfcHJp bnRfYXJncyAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAgCi0g ICBpZiAoYXJncykKKyAgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBpKysp CiAgICAgIHsKLS0gICAgICAvKiBNYWtlIHN1cmUgbGVhZGluZyB3aGl0ZSBzcGFjZSBkb2VzIG5v dCBicmVhayB0aGUgY29tcGFyaXNvbnMuICAqLwotLSAgICAgIHdoaWxlIChpc3NwYWNlKGFyZ3Nb MF0pKQotLQlhcmdzKys7Ci0tCi0tICAgICAgLyogSXMgLXYgdGhlIGZpcnN0IHRoaW5nIGluIHRo ZSBzdHJpbmc/ICAqLwotLSAgICAgIGlmIChhcmdzWzBdID09ICctJyAmJiBhcmdzWzFdID09ICd2 JyAmJiBpc3NwYWNlIChhcmdzWzJdKSkKLSsgICAgICB3aGlsZSAoMSkKKysgICAgICBpZiAoVFlQ RV9GSUVMRF9BUlRJRklDSUFMICh0eXBlLCBpKSAmJiAhc2hvd19hcnRpZmljaWFsKQorKwljb250 aW51ZTsKKysKKyAgICAgICBpZiAocHJpbnRlZF9hbnkpCiAgCXsKLS0JICBzb3VyY2VfdmVyYm9z ZSA9IDE7Ci0tCi0tCSAgLyogVHJpbSAtdiBhbmQgd2hpdGVzcGFjZSBmcm9tIHRoZSBmaWxlbmFt ZS4gICovCi0tCSAgZmlsZSA9ICZhcmdzWzNdOwotLQkgIHdoaWxlIChpc3NwYWNlIChmaWxlWzBd KSkKLS0JICAgIGZpbGUrKzsKLSsJICBpbnQgYXJnID0gZmluZF9hcmd1bWVudCAoJmFyZ3MpOwot KwkgIGlmICghYXJnKQotKwkgICAgYnJlYWs7Ci0rCSAgc3dpdGNoIChhcmcpCi0rCSAgICB7Ci0r CSAgICBjYXNlICd2JzoKLSsJICAgICAgc291cmNlX3ZlcmJvc2UgPSAxOwotKwkgICAgICBicmVh azsKLSsJICAgIGNhc2UgJ3AnOgotKwkgICAgICBzb3VyY2VfcHl0aG9uID0gMTsKLSsJICAgICAg YnJlYWs7Ci0rCSAgICBkZWZhdWx0OgotKwkgICAgICBlcnJvciAoXygidW5yZWNvZ25pemVkIG9w dGlvbiAtJWMiKSwgYXJnKTsKLSsJICAgIH0KKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0s ICIsICIpOworIAkgIHdyYXBfaGVyZSAoIiAgICAiKTsKICAJfQotICAgICB9CiAgCi0tICBzb3Vy Y2Vfc2NyaXB0IChmaWxlLCBmcm9tX3R0eSk7Ci0rICBzb3VyY2Vfc2NyaXB0IChhcmdzLCBmcm9t X3R0eSk7Ci0rCi0rICBkb19jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKLSB9CistICAgICAgY19w cmludF90eXBlIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLCAiIiwgc3RyZWFtLCAtMSwgMCk7 CisrICAgICAgaWYgKGxhbmd1YWdlID09IGxhbmd1YWdlX2phdmEpCisrCWphdmFfcHJpbnRfdHlw ZSAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwgIiIsIHN0cmVhbSwgLTEsIDApOworKyAgICAg IGVsc2UKKysJY19wcmludF90eXBlIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLCAiIiwgc3Ry ZWFtLCAtMSwgMCk7CisgICAgICAgcHJpbnRlZF9hbnkgPSAxOworICAgICB9CiAgCitAQCAtNTU4 LDcgKzU4NCwxMiBAQCBjX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVjdCB0eXBlICp0 eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAorIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0s ICIpIik7CiAgCi1AQCAtMTMwOSw3ICsxMzQxLDkgQEAgUmVhZCBjb21tYW5kcyBmcm9tIGEgZmls ZSBuYW1lZCBGSUxFLlxuXAotIE9wdGlvbmFsIC12IHN3aXRjaCAoYmVmb3JlIHRoZSBmaWxlbmFt ZSkgY2F1c2VzIGVhY2ggY29tbWFuZCBpblxuXAotIEZJTEUgdG8gYmUgZWNob2VkIGFzIGl0IGlz IGV4ZWN1dGVkLlxuXAotIE5vdGUgdGhhdCB0aGUgZmlsZSBcIiVzXCIgaXMgcmVhZCBhdXRvbWF0 aWNhbGx5IGluIHRoaXMgd2F5XG5cCi0td2hlbiBHREIgaXMgc3RhcnRlZC4iKSwgZ2RiaW5pdCk7 Ci0rd2hlbiBHREIgaXMgc3RhcnRlZC5cblwKLStPcHRpb25hbCAtcCBzd2l0Y2ggKGJlZm9yZSB0 aGUgZmlsZW5hbWUpIGNhdXNlcyBGSUxFIHRvIGJlIGV2YWx1YXRlZFxuXAotK2FzIFB5dGhvbiBj b2RlLiIpLCBnZGJpbml0KTsKLSAgIGMgPSBhZGRfY21kICgic291cmNlIiwgY2xhc3Nfc3VwcG9y dCwgc291cmNlX2NvbW1hbmQsCi0gCSAgICAgICBzb3VyY2VfaGVscF90ZXh0LCAmY21kbGlzdCk7 Ci0gICBzZXRfY21kX2NvbXBsZXRlciAoYywgZmlsZW5hbWVfY29tcGxldGVyKTsKKyAgICAgICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJbIik7CistICAgICAgaWYgKFRZUEVfTEVOR1RIIChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgPiAwCisrICAgICAgaWYgKFRZUEVfQVJSQVlfVVBQRVJf Qk9VTkRfSVNfRFdBUkZfQkxPQ0sgKHR5cGUpKQorKwl7CisrCSAgLyogTm8gXygpIC0gcHJpbnRl ZCBzb3VyY2VzIHNob3VsZCBub3QgYmUgbG9jYWxlIGRlcGVuZGVudC4gICovCisrCSAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAidmFyaWFibGUiKTsKKysJfQorKyAgICAgIGVsc2UgaWYgKFRZ UEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgPiAwCisgCSYmICFUWVBFX0FSUkFZ X1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAodHlwZSkpCisgCWZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgIiVkIiwKKyAJCQkgIChUWVBFX0xFTkdUSCAodHlwZSkKK0BAIC01OTEsNyArNjIyLDcg QEAgY190eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwKKyAgICAgICBpZiAocGFzc2VkX2FfcHRyKQorIAlmcHJpbnRmX2Zp bHRlcmVkIChzdHJlYW0sICIpIik7CisgICAgICAgaWYgKCFkZW1hbmdsZWRfYXJncykKKy0JY190 eXBlX3ByaW50X2FyZ3MgKHR5cGUsIHN0cmVhbSk7CisrCWNfdHlwZV9wcmludF9hcmdzICh0eXBl LCBzdHJlYW0sIDEsIGxhbmd1YWdlX2MpOworICAgICAgIGNfdHlwZV9wcmludF92YXJzcGVjX3N1 ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgc2hvdywKKyAJCQkJICAgcGFz c2VkX2FfcHRyLCAwKTsKKyAgICAgICBicmVhazsKIGRpZmYgLS1naXQgYS9nZGIvY29mZnJlYWQu YyBiL2dkYi9jb2ZmcmVhZC5jCi1pbmRleCBlY2E2NjE4Li4wNTc5Y2U2IDEwMDY0NAoraW5kZXgg OGU1ZGNhOS4uN2U3ZmI4YiAxMDA2NDQKIC0tLSBhL2dkYi9jb2ZmcmVhZC5jCiArKysgYi9nZGIv Y29mZnJlYWQuYwotQEAgLTIxMjYsNiArMjEyNiw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyBj b2ZmX3N5bV9mbnMgPQorQEAgLTIxMjMsNiArMjEyMyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2Zu cyBjb2ZmX3N5bV9mbnMgPQogICAgY29mZl9uZXdfaW5pdCwJCS8qIHN5bV9uZXdfaW5pdDogaW5p dCBhbnl0aGluZyBnYmwgdG8gZW50aXJlIHN5bXRhYiAqLwogICAgY29mZl9zeW1maWxlX2luaXQs CQkvKiBzeW1faW5pdDogcmVhZCBpbml0aWFsIGluZm8sIHNldHVwIGZvciBzeW1fcmVhZCgpICov CiAgICBjb2ZmX3N5bWZpbGVfcmVhZCwJCS8qIHN5bV9yZWFkOiByZWFkIGEgc3ltYm9sIGZpbGUg aW50byBzeW10YWIgKi8KQEAgLTExODcsMjQ5ICsxMjk4LDggQEAgaW5kZXggZWJkZTg3Ni4uOTA3 YjI3NSAxMDA2NDQKICAvKiBSZWxvY2F0ZWQgZGlyZWN0b3J5IGZvciBzb3VyY2UgZmlsZXMuICov CiAgI3VuZGVmIFJFTE9DX1NSQ0RJUgogIAotZGlmZiAtLWdpdCBhL2dkYi9jb25maWcvaTM4Ni9u bS1pMzg2LmggYi9nZGIvY29uZmlnL2kzODYvbm0taTM4Ni5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0 NAotaW5kZXggMDAwMDAwMC4uNWYyMzdjYwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL2NvbmZp Zy9pMzg2L25tLWkzODYuaAotQEAgLTAsMCArMSwxMjUgQEAKLSsvKiBOYXRpdmUgbWFjcm8gZGVm aW5pdGlvbnMgZm9yIEdEQiBvbiBhbiBJbnRlbCBpWzM0NTZdODYuCi0rICAgQ29weXJpZ2h0IDIw MDEsIDIwMDQsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaWZuZGVmIE5NX0kzODZfSAotKyNkZWZpbmUg Tk1fSTM4Nl9IIDEKLSsKLSsvKiBIYXJkd2FyZS1hc3Npc3RlZCBicmVha3BvaW50cyBhbmQgd2F0 Y2hwb2ludHMuICAqLwotKwotKy8qIFRhcmdldHMgc2hvdWxkIGRlZmluZSB0aGlzIHRvIHVzZSB0 aGUgZ2VuZXJpYyB4ODYgd2F0Y2hwb2ludCBzdXBwb3J0LiAgKi8KLSsjaWZkZWYgSTM4Nl9VU0Vf R0VORVJJQ19XQVRDSFBPSU5UUwotKwotKy8qIEFkZCB3YXRjaHBvaW50IG1ldGhvZHMgdG8gdGhl IHByb3ZpZGVkIHRhcmdldF9vcHMuICBUYXJnZXRzIHdoaWNoIGNhbGwKLSsgICB0aGlzIHNob3Vs ZCBhbHNvIGRlZmluZSBJMzg2X1dBVENIUE9JTlRTX0lOX1RBUkdFVF9WRUNUT1IuICAqLwotK3N0 cnVjdCB0YXJnZXRfb3BzOwotK3ZvaWQgaTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJn ZXRfb3BzICopOwotKwotKy8qIENsZWFyIHRoZSByZWZlcmVuY2UgY291bnRzIGFuZCBmb3JnZXQg ZXZlcnl0aGluZyB3ZSBrbmV3IGFib3V0IERSaS4gICovCi0rZXh0ZXJuIHZvaWQgaTM4Nl9jbGVh bnVwX2RyZWdzICh2b2lkKTsKLSsKLSsvKiBJbnNlcnQgYSB3YXRjaHBvaW50IHRvIHdhdGNoIGEg bWVtb3J5IHJlZ2lvbiB3aGljaCBzdGFydHMgYXQKLSsgICBhZGRyZXNzIEFERFIgYW5kIHdob3Nl IGxlbmd0aCBpcyBMRU4gYnl0ZXMuICBXYXRjaCBtZW1vcnkgYWNjZXNzZXMKLSsgICBvZiB0aGUg dHlwZSBUWVBFLiAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZS4gICovCi0rZXh0 ZXJuIGludCBpMzg2X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwg aW50IHR5cGUpOwotKwotKy8qIFJlbW92ZSBhIHdhdGNocG9pbnQgdGhhdCB3YXRjaGVkIHRoZSBt ZW1vcnkgcmVnaW9uIHdoaWNoIHN0YXJ0cyBhdAotKyAgIGFkZHJlc3MgQUREUiwgd2hvc2UgbGVu Z3RoIGlzIExFTiBieXRlcywgYW5kIGZvciBhY2Nlc3NlcyBvZiB0aGUKLSsgICB0eXBlIFRZUEUu ICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBmYWlsdXJlLiAgKi8KLStleHRlcm4gaW50IGkz ODZfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSk7 Ci0rCi0rLyogUmV0dXJuIG5vbi16ZXJvIGlmIHdlIGNhbiB3YXRjaCBhIG1lbW9yeSByZWdpb24g dGhhdCBzdGFydHMgYXQKLSsgICBhZGRyZXNzIEFERFIgYW5kIHdob3NlIGxlbmd0aCBpcyBMRU4g Ynl0ZXMuICAqLwotK2V4dGVybiBpbnQgaTM4Nl9yZWdpb25fb2tfZm9yX3dhdGNocG9pbnQgKENP UkVfQUREUiBhZGRyLCBpbnQgbGVuKTsKLSsKLSsvKiBSZXR1cm4gbm9uLXplcm8gaWYgdGhlIGlu ZmVyaW9yIGhhcyBzb21lIGJyZWFrL3dhdGNocG9pbnQgdGhhdAotKyAgIHRyaWdnZXJlZC4gICov Ci0rZXh0ZXJuIGludCBpMzg2X3N0b3BwZWRfYnlfaHdicCAodm9pZCk7Ci0rCi0rLyogSWYgdGhl IGluZmVyaW9yIGhhcyBzb21lIGJyZWFrL3dhdGNocG9pbnQgdGhhdCB0cmlnZ2VyZWQsIHNldAot KyAgIHRoZSBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGJyZWFrL3dhdGNocG9pbnQgYW5k IHJldHVybgotKyAgIHRydWUuICBPdGhlcndpc2UsIHJldHVybiBmYWxzZS4gICovCi0rZXh0ZXJu IGludCBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLCBDT1JF X0FERFIgKik7Ci0rCi0rLyogSW5zZXJ0IGEgaGFyZHdhcmUtYXNzaXN0ZWQgYnJlYWtwb2ludCBh dCBCUF9UR1QtPnBsYWNlZF9hZGRyZXNzLgotKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIEVCVVNZ IG9uIGZhaWx1cmUuICAqLwotK3N0cnVjdCBicF90YXJnZXRfaW5mbzsKLStleHRlcm4gaW50IGkz ODZfaW5zZXJ0X2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBicF90YXJnZXRfaW5mbyAqYnBfdGd0KTsK LSsKLSsvKiBSZW1vdmUgYSBoYXJkd2FyZS1hc3Npc3RlZCBicmVha3BvaW50IGF0IEJQX1RHVC0+ cGxhY2VkX2FkZHJlc3MuCi0rICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZS4g ICovCi0rZXh0ZXJuIGludCAgaTM4Nl9yZW1vdmVfaHdfYnJlYWtwb2ludCAoc3RydWN0IGJwX3Rh cmdldF9pbmZvICpicF90Z3QpOwotKwotK2V4dGVybiBpbnQgaTM4Nl9zdG9wcGVkX2J5X3dhdGNo cG9pbnQgKHZvaWQpOwotKwotKyNpZm5kZWYgSTM4Nl9XQVRDSFBPSU5UU19JTl9UQVJHRVRfVkVD VE9SCi0rCi0rLyogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGhhcmR3YXJlIHdhdGNocG9pbnRzIG9m IHR5cGUgVFlQRSB0aGF0IHdlIGNhbgotKyAgIHNldC4gIFZhbHVlIGlzIHBvc2l0aXZlIGlmIHdl IGNhbiBzZXQgQ05UIHdhdGNocG9pbnRzLCB6ZXJvIGlmCi0rICAgc2V0dGluZyB3YXRjaHBvaW50 cyBvZiB0eXBlIFRZUEUgaXMgbm90IHN1cHBvcnRlZCwgYW5kIG5lZ2F0aXZlIGlmCi0rICAgQ05U IGlzIG1vcmUgdGhhbiB0aGUgbWF4aW11bSBudW1iZXIgb2Ygd2F0Y2hwb2ludHMgb2YgdHlwZSBU WVBFCi0rICAgdGhhdCB3ZSBjYW4gc3VwcG9ydC4gIFRZUEUgaXMgb25lIG9mIGJwX2hhcmR3YXJl X3dhdGNocG9pbnQsCi0rICAgYnBfcmVhZF93YXRjaHBvaW50LCBicF93cml0ZV93YXRjaHBvaW50 LCBvciBicF9oYXJkd2FyZV9icmVha3BvaW50LgotKyAgIENOVCBpcyB0aGUgbnVtYmVyIG9mIHN1 Y2ggd2F0Y2hwb2ludHMgdXNlZCBzbyBmYXIgKGluY2x1ZGluZyB0aGlzCi0rICAgb25lKS4gIE9U SEVSVFlQRSBpcyBub24temVybyBpZiBvdGhlciB0eXBlcyBvZiB3YXRjaHBvaW50cyBhcmUKLSsg ICBjdXJyZW50bHkgZW5hYmxlZC4KLSsKLSsgICBXZSBhbHdheXMgcmV0dXJuIDEgaGVyZSBiZWNh dXNlIHdlIGRvbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uCi0rICAgYWJvdXQgcG9zc2libGUg b3ZlcmxhcCBvZiBhZGRyZXNzZXMgdGhhdCB0aGV5IHdhbnQgdG8gd2F0Y2guICBBcyBhbgotKyAg IGV4dHJlbWUgZXhhbXBsZSwgY29uc2lkZXIgdGhlIGNhc2Ugd2hlcmUgYWxsIHRoZSB3YXRjaHBv aW50cyB3YXRjaAotKyAgIHRoZSBzYW1lIGFkZHJlc3MgYW5kIHRoZSBzYW1lIHJlZ2lvbiBsZW5n dGg6IHRoZW4gd2UgY2FuIGhhbmRsZSBhCi0rICAgdmlydHVhbGx5IHVubGltaXRlZCBudW1iZXIg b2Ygd2F0Y2hwb2ludHMsIGR1ZSB0byBkZWJ1ZyByZWdpc3RlcgotKyAgIHNoYXJpbmcgaW1wbGVt ZW50ZWQgdmlhIHJlZmVyZW5jZSBjb3VudHMgaW4gaTM4Ni1uYXQuYy4gICovCi0rCi0rI2RlZmlu ZSBUQVJHRVRfQ0FOX1VTRV9IQVJEV0FSRV9XQVRDSFBPSU5UKHR5cGUsIGNudCwgb3QpIDEKLSsK LSsvKiBSZXR1cm5zIG5vbi16ZXJvIGlmIHdlIGNhbiB1c2UgaGFyZHdhcmUgd2F0Y2hwb2ludHMg dG8gd2F0Y2ggYQotKyAgIHJlZ2lvbiB3aG9zZSBhZGRyZXNzIGlzIEFERFIgYW5kIHdob3NlIGxl bmd0aCBpcyBMRU4uICAqLwotKwotKyNkZWZpbmUgVEFSR0VUX1JFR0lPTl9PS19GT1JfSFdfV0FU Q0hQT0lOVChhZGRyLCBsZW4pIFwKLSsgIGkzODZfcmVnaW9uX29rX2Zvcl93YXRjaHBvaW50IChh ZGRyLCBsZW4pCi0rCi0rLyogQWZ0ZXIgYSB3YXRjaHBvaW50IHRyYXAsIHRoZSBQQyBwb2ludHMg dG8gdGhlIGluc3RydWN0aW9uIGFmdGVyIHRoZQotKyAgIG9uZSB0aGF0IGNhdXNlZCB0aGUgdHJh cC4gIFRoZXJlZm9yZSB3ZSBkb24ndCBuZWVkIHRvIHN0ZXAgb3ZlciBpdC4KLSsgICBCdXQgd2Ug ZG8gbmVlZCB0byByZXNldCB0aGUgc3RhdHVzIHJlZ2lzdGVyIHRvIGF2b2lkIGFub3RoZXIgdHJh cC4gICovCi0rCi0rI2RlZmluZSBIQVZFX0NPTlRJTlVBQkxFX1dBVENIUE9JTlQgMQotKwotKyNk ZWZpbmUgU1RPUFBFRF9CWV9XQVRDSFBPSU5UKFcpICAgICAgIChpMzg2X3N0b3BwZWRfYnlfd2F0 Y2hwb2ludCAoKSAhPSAwKQotKwotKyNkZWZpbmUgdGFyZ2V0X3N0b3BwZWRfZGF0YV9hZGRyZXNz KHRhcmdldCwgeCkgXAotKyAgaTM4Nl9zdG9wcGVkX2RhdGFfYWRkcmVzcyh0YXJnZXQsIHgpCi0r Ci0rLyogVXNlIHRoZXNlIG1hY3JvcyBmb3Igd2F0Y2hwb2ludCBpbnNlcnRpb24vcmVtb3ZhbC4g ICovCi0rCi0rI2RlZmluZSB0YXJnZXRfaW5zZXJ0X3dhdGNocG9pbnQoYWRkciwgbGVuLCB0eXBl KSBcCi0rICBpMzg2X2luc2VydF93YXRjaHBvaW50IChhZGRyLCBsZW4sIHR5cGUpCi0rCi0rI2Rl ZmluZSB0YXJnZXRfcmVtb3ZlX3dhdGNocG9pbnQoYWRkciwgbGVuLCB0eXBlKSBcCi0rICBpMzg2 X3JlbW92ZV93YXRjaHBvaW50IChhZGRyLCBsZW4sIHR5cGUpCi0rCi0rI2RlZmluZSB0YXJnZXRf aW5zZXJ0X2h3X2JyZWFrcG9pbnQoYnBfdGd0KSBcCi0rICBpMzg2X2luc2VydF9od19icmVha3Bv aW50IChicF90Z3QpCi0rCi0rI2RlZmluZSB0YXJnZXRfcmVtb3ZlX2h3X2JyZWFrcG9pbnQoYnBf dGd0KSBcCi0rICBpMzg2X3JlbW92ZV9od19icmVha3BvaW50IChicF90Z3QpCi0rCi0rI2VuZGlm IC8qIEkzODZfV0FUQ0hQT0lOVFNfSU5fVEFSR0VUX1ZFQ1RPUiAqLwotKwotKyNlbmRpZiAvKiBJ Mzg2X1VTRV9HRU5FUklDX1dBVENIUE9JTlRTICovCi0rCi0rI2VuZGlmIC8qIE5NX0kzODZfSCAq LwotZGlmZiAtLWdpdCBhL2dkYi9jb25maWcvaTM4Ni9ubS1saW51eDY0LmggYi9nZGIvY29uZmln L2kzODYvbm0tbGludXg2NC5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4u MTlkNzEwYQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQu aAotQEAgLTAsMCArMSw1NCBAQAotKy8qIE5hdGl2ZSBzdXBwb3J0IGZvciBHTlUvTGludXggeDg2 LTY0LgotKwotKyAgIENvcHlyaWdodCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA3 LCAyMDA4LCAyMDA5Ci0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAg Q29udHJpYnV0ZWQgYnkgSmlyaSBTbWlkLCBTdVNFIExhYnMuCi0rCi0rICAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KLSsKLSsjaWZuZGVmIE5NX0xJTlVYNjRfSAotKyNkZWZpbmUgTk1fTElOVVg2NF9ICi0rCi0r LyogR05VL0xpbnV4IHN1cHBvcnRzIHRoZSBpMzg2IGhhcmR3YXJlIGRlYnVnZ2luZyByZWdpc3Rl cnMuICAqLwotKyNkZWZpbmUgSTM4Nl9VU0VfR0VORVJJQ19XQVRDSFBPSU5UUwotKyNkZWZpbmUg STM4Nl9XQVRDSFBPSU5UU19JTl9UQVJHRVRfVkVDVE9SCi0rCi0rI2luY2x1ZGUgImkzODYvbm0t aTM4Ni5oIgotKyNpbmNsdWRlICJjb25maWcvbm0tbGludXguaCIKLSsKLSsvKiBTdXBwb3J0IGZv ciA4LWJ5dGUgd2lkZSBoYXJkd2FyZSB3YXRjaHBvaW50cy4gICovCi0rI2RlZmluZSBUQVJHRVRf SEFTX0RSX0xFTl84IDEKLSsKLSsvKiBQcm92aWRlIGFjY2VzcyB0byB0aGUgaTM4NiBoYXJkd2Fy ZSBkZWJ1Z2dpbmcgcmVnaXN0ZXJzLiAgKi8KLSsKLStleHRlcm4gdm9pZCBhbWQ2NF9saW51eF9k cl9zZXRfY29udHJvbCAodW5zaWduZWQgbG9uZyBjb250cm9sKTsKLSsjZGVmaW5lIEkzODZfRFJf TE9XX1NFVF9DT05UUk9MKGNvbnRyb2wpIFwKLSsgIGFtZDY0X2xpbnV4X2RyX3NldF9jb250cm9s IChjb250cm9sKQotKwotK2V4dGVybiB2b2lkIGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyIChpbnQg cmVnbnVtLCBDT1JFX0FERFIgYWRkcik7Ci0rI2RlZmluZSBJMzg2X0RSX0xPV19TRVRfQUREUihy ZWdudW0sIGFkZHIpIFwKLSsgIGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyIChyZWdudW0sIGFkZHIp Ci0rCi0rZXh0ZXJuIHZvaWQgYW1kNjRfbGludXhfZHJfcmVzZXRfYWRkciAoaW50IHJlZ251bSk7 Ci0rI2RlZmluZSBJMzg2X0RSX0xPV19SRVNFVF9BRERSKHJlZ251bSkgXAotKyAgYW1kNjRfbGlu dXhfZHJfcmVzZXRfYWRkciAocmVnbnVtKQotKwotK2V4dGVybiB1bnNpZ25lZCBsb25nIGFtZDY0 X2xpbnV4X2RyX2dldF9zdGF0dXMgKHZvaWQpOwotKyNkZWZpbmUgSTM4Nl9EUl9MT1dfR0VUX1NU QVRVUygpIFwKLSsgIGFtZDY0X2xpbnV4X2RyX2dldF9zdGF0dXMgKCkKLSsKLSsjZW5kaWYgLyog bm0tbGludXg2NC5oICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZy9taXBzL25tLWlyaXg1Lmgg Yi9nZGIvY29uZmlnL21pcHMvbm0taXJpeDUuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4 IDAwMDAwMDAuLjQ5YWM0MjAKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9jb25maWcvbWlwcy9u bS1pcml4NS5oCi1AQCAtMCwwICsxLDQ0IEBACi0rLyogRGVmaW5pdGlvbnMgZm9yIG5hdGl2ZSBz dXBwb3J0IG9mIGlyaXg1LgotKwotKyAgIENvcHlyaWdodCAxOTkzLCAxOTk2LCAxOTk4LCAxOTk5 LCAyMDAwLCAyMDA3LCAyMDA4LCAyMDA5Ci0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjZGVmaW5lIFRBUkdFVF9IQVNfSEFSRFdB UkVfV0FUQ0hQT0lOVFMKLSsKLSsvKiBUQVJHRVRfQ0FOX1VTRV9IQVJEV0FSRV9XQVRDSFBPSU5U IGlzIG5vdyBkZWZpbmVkIHRvIGdvIHRocm91Z2gKLSsgICB0aGUgdGFyZ2V0IHZlY3Rvci4gIEZv ciBJcml4NSwgcHJvY2ZzX2Nhbl91c2VfaHdfd2F0Y2hwb2ludCgpCi0rICAgc2hvdWxkIGJlIGlu dm9rZWQuICAqLwotKwotKy8qIFdoZW4gYSBoYXJkd2FyZSB3YXRjaHBvaW50IGZpcmVzIG9mZiB0 aGUgUEMgd2lsbCBiZSBsZWZ0IGF0IHRoZQotKyAgIGluc3RydWN0aW9uIHdoaWNoIGNhdXNlZCB0 aGUgd2F0Y2hwb2ludC4gIEl0IHdpbGwgYmUgbmVjZXNzYXJ5IGZvcgotKyAgIEdEQiB0byBzdGVw IG92ZXIgdGhlIHdhdGNocG9pbnQuICovCi0rCi0rI2RlZmluZSBTVE9QUEVEX0JZX1dBVENIUE9J TlQoVykgXAotKyAgICAgcHJvY2ZzX3N0b3BwZWRfYnlfd2F0Y2hwb2ludChpbmZlcmlvcl9wdGlk KQotK2V4dGVybiBpbnQgcHJvY2ZzX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAocHRpZF90KTsKLSsK LSsvKiBVc2UgdGhlc2UgbWFjcm9zIGZvciB3YXRjaHBvaW50IGluc2VydGlvbi9kZWxldGlvbi4g ICovCi0rLyogdHlwZSBjYW4gYmUgMDogd3JpdGUgd2F0Y2gsIDE6IHJlYWQgd2F0Y2gsIDI6IGFj Y2VzcyB3YXRjaCAocmVhZC93cml0ZSkgKi8KLSsjZGVmaW5lIHRhcmdldF9pbnNlcnRfd2F0Y2hw b2ludChBRERSLCBMRU4sIFRZUEUpIFwKLSsgICAgIHByb2Nmc19zZXRfd2F0Y2hwb2ludCAoaW5m ZXJpb3JfcHRpZCwgQUREUiwgTEVOLCBUWVBFLCAwKQotKyNkZWZpbmUgdGFyZ2V0X3JlbW92ZV93 YXRjaHBvaW50KEFERFIsIExFTiwgVFlQRSkgXAotKyAgICAgcHJvY2ZzX3NldF93YXRjaHBvaW50 IChpbmZlcmlvcl9wdGlkLCBBRERSLCAwLCAwLCAwKQotK2V4dGVybiBpbnQgcHJvY2ZzX3NldF93 YXRjaHBvaW50IChwdGlkX3QsIENPUkVfQUREUiwgaW50LCBpbnQsIGludCk7Ci0rCi0rI2RlZmlu ZSBUQVJHRVRfUkVHSU9OX1NJWkVfT0tfRk9SX0hXX1dBVENIUE9JTlQoU0laRSkgMQotKwogZGlm ZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCi1pbmRleCA3ZjI2YzY0Li4w NTQyZjdlIDEwMDc1NQoraW5kZXggNDk4MDEwNi4uYmU2OTQ4OCAxMDA3NTUKIC0tLSBhL2dkYi9j b25maWd1cmUKICsrKyBiL2dkYi9jb25maWd1cmUKIEBAIC02NzYsNiArNjc2LDggQEAgUkVQT1JU X0JVR1NfVE8KQEAgLTE1NDQsNyArMTQxNCw3IEBAIGluZGV4IDdmMjZjNjQuLjA1NDJmN2UgMTAw NzU1CiAgCiAgICAjIEZsYWdzIG5lZWRlZCB0byBjb21waWxlIFB5dGhvbiBjb2RlICh0YWtlbiBm cm9tIHB5dGhvbi1jb25maWcgLS1jZmxhZ3MpLgogZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUu YWMgYi9nZGIvY29uZmlndXJlLmFjCi1pbmRleCBlYmIwYTk1Li5jOGViYWZlIDEwMDY0NAoraW5k ZXggYTc1NmEyZC4uYjQ0ZTIxZCAxMDA2NDQKIC0tLSBhL2dkYi9jb25maWd1cmUuYWMKICsrKyBi L2dkYi9jb25maWd1cmUuYWMKIEBAIC0xMDgsNiArMTA4LDUxIEBAIEFTX0hFTFBfU1RSSU5HKFst LXdpdGgtcmVsb2NhdGVkLXNvdXJjZXM9UEFUSF0sIFthdXRvbWF0aWNhbGx5IHJlbG9jYXRlIHRo aXMgcGF0CkBAIC0xNjA4LDQyICsxNDc4LDYxMSBAQCBpbmRleCBlYmIwYTk1Li5jOGViYWZlIDEw MDY0NAogICAgRU5BQkxFX0NGTEFHUz0iJEVOQUJMRV9DRkxBR1MgXCQoU1VCRElSX1BZVEhPTl9D RkxBR1MpIgogIAogICAgIyBGbGFncyBuZWVkZWQgdG8gY29tcGlsZSBQeXRob24gY29kZSAodGFr ZW4gZnJvbSBweXRob24tY29uZmlnIC0tY2ZsYWdzKS4KLWRpZmYgLS1naXQgYS9nZGIvZGJ4cmVh ZC5jIGIvZ2RiL2RieHJlYWQuYwotaW5kZXggODE2YTM1NS4uZTlmNTZmOSAxMDA2NDQKLS0tLSBh L2dkYi9kYnhyZWFkLmMKLSsrKyBiL2dkYi9kYnhyZWFkLmMKLUBAIC0zNTcwLDYgKzM1NzAsNyBA QCBzdGF0aWMgc3RydWN0IHN5bV9mbnMgYW91dF9zeW1fZm5zID0KLSAgIGRieF9uZXdfaW5pdCwJ CS8qIHN5bV9uZXdfaW5pdDogaW5pdCBhbnl0aGluZyBnYmwgdG8gZW50aXJlIHN5bXRhYiAqLwot ICAgZGJ4X3N5bWZpbGVfaW5pdCwJLyogc3ltX2luaXQ6IHJlYWQgaW5pdGlhbCBpbmZvLCBzZXR1 cCBmb3Igc3ltX3JlYWQoKSAqLwotICAgZGJ4X3N5bWZpbGVfcmVhZCwJCS8qIHN5bV9yZWFkOiBy ZWFkIGEgc3ltYm9sIGZpbGUgaW50byBzeW10YWIgKi8KLSsgIE5VTEwsCQkJCS8qIHN5bV9yZWFk X3BzeW1ib2xzICovCi0gICBkYnhfc3ltZmlsZV9maW5pc2gsCQkvKiBzeW1fZmluaXNoOiBmaW5p c2hlZCB3aXRoIGZpbGUsIGNsZWFudXAgKi8KLSAgIGRlZmF1bHRfc3ltZmlsZV9vZmZzZXRzLCAv KiBzeW1fb2Zmc2V0czogcGFyc2UgdXNlcidzIG9mZnNldHMgdG8KLSAJCQkgICAgICBpbnRlcm5h bCBmb3JtICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2Ri LnRleGluZm8KLWluZGV4IDI1M2UyNTEuLjZkNzNmYzUgMTAwNjQ0Ci0tLS0gYS9nZGIvZG9jL2dk Yi50ZXhpbmZvCi0rKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCi1AQCAtOTYyLDggKzk2MiwxMCBA QCBDb25uZWN0IHRvIHByb2Nlc3MgSUQgQHZhcntudW1iZXJ9LCBhcyB3aXRoIHRoZSBAY29kZXth dHRhY2h9IGNvbW1hbmQuCi0gQGl0ZW14IC14IEB2YXJ7ZmlsZX0KLSBAY2luZGV4IEBjb2Rley0t Y29tbWFuZH0KLSBAY2luZGV4IEBjb2Rley14fQotLUV4ZWN1dGUgQHZhbHVle0dEQk59IGNvbW1h bmRzIGZyb20gZmlsZSBAdmFye2ZpbGV9LiAgQHhyZWZ7Q29tbWFuZAotLUZpbGVzLCwgQ29tbWFu ZCBmaWxlc30uCi0rRXhlY3V0ZSBjb21tYW5kcyBmcm9tIGZpbGUgQHZhcntmaWxlfS4gIElmIEB2 YXJ7ZmlsZX0gZW5kcyBpbgotK0BzYW1wey5weX0sIHRoZW4gdGhlIGZpbGUgaXMgZXZhbHVhdGVk IGFzIFB5dGhvbiBjb2RlLiAgSWYgUHl0aG9uCi0rc3VwcG9ydCBpcyBub3QgZW5hYmxlZCBpbiB0 aGlzIEB2YWx1ZXtHREJOfSwgdGhlbiBhbiBlcnJvciBvY2N1cnMuCi0rQHhyZWZ7Q29tbWFuZCBG aWxlcywsIENvbW1hbmQgZmlsZXN9LgotIAotIEBpdGVtIC1ldmFsLWNvbW1hbmQgQHZhcntjb21t YW5kfQotIEBpdGVteCAtZXggQHZhcntjb21tYW5kfQotQEAgLTExNTUsNiArMTE1NywxNiBAQCBm b3IgcmVtb3RlIGRlYnVnZ2luZy4KLSBSdW4gdXNpbmcgQHZhcntkZXZpY2V9IGZvciB5b3VyIHBy b2dyYW0ncyBzdGFuZGFyZCBpbnB1dCBhbmQgb3V0cHV0LgotIEBjIEZJWE1FOiBraW5nZG9uIHRo aW5rcyB0aGVyZSBpcyBtb3JlIHRvIC10dHkuICBJbnZlc3RpZ2F0ZS4KK2RpZmYgLS1naXQgYS9n ZGIvY3AtbmFtZS1wYXJzZXIueSBiL2dkYi9jcC1uYW1lLXBhcnNlci55CitpbmRleCA4MWY2YTVk Li4wOTdkYjY1IDEwMDY0NAorLS0tIGEvZ2RiL2NwLW5hbWUtcGFyc2VyLnkKKysrKyBiL2dkYi9j cC1uYW1lLXBhcnNlci55CitAQCAtMzg5LDcgKzM4OSw3IEBAIGZ1bmN0aW9uCisgCQl8CWNvbG9u X2V4dF9vbmx5IGZ1bmN0aW9uX2FyZ2xpc3Qgc3RhcnRfb3B0CisgCQkJeyAkJCA9IGZpbGxfY29t cCAoREVNQU5HTEVfQ09NUE9ORU5UX1RZUEVEX05BTUUsICQxLCAkMi5jb21wKTsKKyAJCQkgIGlm ICgkMykgJCQgPSBmaWxsX2NvbXAgKERFTUFOR0xFX0NPTVBPTkVOVF9MT0NBTF9OQU1FLCAkJCwg JDMpOyB9CistCisrCQl8CWNvbG9uX2V4dF9vbmx5CisgCQl8CWNvbnZlcnNpb25fb3BfbmFtZSBz dGFydF9vcHQKKyAJCQl7ICQkID0gJDEuY29tcDsKKyAJCQkgIGlmICgkMikgJCQgPSBmaWxsX2Nv bXAgKERFTUFOR0xFX0NPTVBPTkVOVF9MT0NBTF9OQU1FLCAkJCwgJDIpOyB9CitkaWZmIC0tZ2l0 IGEvZ2RiL2NwLW5hbWVzcGFjZS5jIGIvZ2RiL2NwLW5hbWVzcGFjZS5jCitpbmRleCAwNGI2NjVi Li4yMWUwMTNhIDEwMDY0NAorLS0tIGEvZ2RiL2NwLW5hbWVzcGFjZS5jCisrKysgYi9nZGIvY3At bmFtZXNwYWNlLmMKK0BAIC0zNCwxNCArMzQsMTcgQEAKKyAjaW5jbHVkZSAiYnVpbGRzeW0uaCIK KyAKKyBzdGF0aWMgc3RydWN0IHN5bWJvbCAqbG9va3VwX25hbWVzcGFjZV9zY29wZSAoY29uc3Qg Y2hhciAqbmFtZSwKKy0JCQkJCSAgICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKyAJCQkJ CSAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCisgCQkJCQkgICAgICBjb25zdCBkb21h aW5fZW51bSBkb21haW4sCisgCQkJCQkgICAgICBjb25zdCBjaGFyICpzY29wZSwKKyAJCQkJCSAg ICAgIGludCBzY29wZV9sZW4pOworIAorK3N0YXRpYyBzdHJ1Y3Qgc3ltYm9sICpjcF9sb29rdXBf c3ltYm9sX2luX25hbWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNwYWNlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFt ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pOworKwor IHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2ZpbGUgKGNvbnN0IGNoYXIgKm5h bWUsCistCQkJCQkgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKyAJCQkJCSAgY29uc3Qgc3Ry dWN0IGJsb2NrICpibG9jaywKKyAJCQkJCSAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluLAorIAkJ CQkJICBpbnQgYW5vbnltb3VzX25hbWVzcGFjZSk7CitAQCAtMTE3LDcgKzEyMCw3IEBAIGNwX3Nj YW5fZm9yX2Fub255bW91c19uYW1lc3BhY2VzIChjb25zdCBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wp CisgCQkgYW5vbnltb3VzIG5hbWVzcGFjZS4gIFNvIGFkZCBzeW1ib2xzIGluIGl0IHRvIHRoZQor IAkJIG5hbWVzcGFjZSBnaXZlbiBieSB0aGUgcHJldmlvdXMgY29tcG9uZW50IGlmIHRoZXJlIGlz CisgCQkgb25lLCBvciB0byB0aGUgZ2xvYmFsIG5hbWVzcGFjZSBpZiB0aGVyZSBpc24ndC4gICov CistCSAgICAgIGNwX2FkZF91c2luZ19kaXJlY3RpdmUgKGRlc3QsIHNyYyk7CisrCSAgICAgIGNw X2FkZF91c2luZ19kaXJlY3RpdmUgKGRlc3QsIHNyYywgIiIsICIiLCAwKTsKKyAJICAgIH0KKyAJ ICAvKiBUaGUgIisgMiIgaXMgZm9yIHRoZSAiOjoiLiAgKi8KKyAJICBwcmV2aW91c19jb21wb25l bnQgPSBuZXh0X2NvbXBvbmVudCArIDI7CitAQCAtMTMyLDcgKzEzNSw4IEBAIGNwX3NjYW5fZm9y X2Fub255bW91c19uYW1lc3BhY2VzIChjb25zdCBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wpCisgICAg aGFzIGFscmVhZHkgYmVlbiBhZGRlZCwgZG9uJ3QgYWRkIGl0IHR3aWNlLiAgKi8KICAKLStAaXRl bSAtUAotK0BjaW5kZXggQGNvZGV7LVB9Ci0rQGl0ZW14IC0tcHl0aG9uCisgdm9pZAorLWNwX2Fk ZF91c2luZ19kaXJlY3RpdmUgKGNvbnN0IGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYykKKytj cF9hZGRfdXNpbmdfZGlyZWN0aXZlIChjb25zdCBjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMs IGNvbnN0IGNoYXIqIGFsaWFzLAorKwkJCWNvbnN0IGNoYXIgKmRlY2xhcmF0aW9uLCBjb25zdCBp bnQgbGluZV9udW1iZXIpCisgeworICAgc3RydWN0IHVzaW5nX2RpcmVjdCAqY3VycmVudDsKKyAg IHN0cnVjdCB1c2luZ19kaXJlY3QgKm5ldzsKK0BAIC0xNDYsNyArMTUwLDggQEAgY3BfYWRkX3Vz aW5nX2RpcmVjdGl2ZSAoY29uc3QgY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKQorIAlyZXR1 cm47CisgICAgIH0KKyAKKy0gIHVzaW5nX2RpcmVjdGl2ZXMgPSBjcF9hZGRfdXNpbmcgKGRlc3Qs IHNyYywgdXNpbmdfZGlyZWN0aXZlcyk7CisrICB1c2luZ19kaXJlY3RpdmVzID0gY3BfYWRkX3Vz aW5nIChkZXN0LCBzcmMsIGFsaWFzLCBkZWNsYXJhdGlvbiwKKysJCQkJICAgbGluZV9udW1iZXIs IHVzaW5nX2RpcmVjdGl2ZXMpOworIAorIH0KKyAKK0BAIC0xOTksNyArMjA0LDEwIEBAIGNwX2lz X2Fub255bW91cyAoY29uc3QgY2hhciAqbmFtZXNwYWNlKQorIH0KKyAKKyAvKiBDcmVhdGUgYSBu ZXcgc3RydWN0IHVzaW5nIGRpcmVjdCB3aGljaCBpbXBvcnRzIHRoZSBuYW1lc3BhY2UgU1JDCist ICAgaW50byB0aGUgc2NvcGUgREVTVC4KKysgICBpbnRvIHRoZSBzY29wZSBERVNULiAgQUxJQVMg aXMgdGhlIG5hbWUgb2YgdGhlIGltcG9ydGVkIG5hbWVzcGFjZQorKyAgIGluIHRoZSBjdXJyZW50 IHNjb3BlLiAgSWYgQUxJQVMgaXMgYW4gZW1wdHkgc3RyaW5nICB0aGVuIHRoZQorKyAgIG5hbWVz cGFjZSBpcyBrbm93biBieSBpdHMgb3JpZ2luYWwgbmFtZS4KKysKKyAgICBTZXQgaXRzIG5leHQg bWVtYmVyIGluIHRoZSBsaW5rZWQgbGlzdCB0byBORVhUOyBhbGxvY2F0ZSBhbGwgbWVtb3J5Cisg ICAgdXNpbmcgeG1hbGxvYy4gIEl0IGNvcGllcyB0aGUgc3RyaW5ncywgc28gTkFNRSBjYW4gYmUg YSB0ZW1wb3JhcnkKKyAgICBzdHJpbmcuICAqLworQEAgLTIwNywxNCArMjE1LDIxIEBAIGNwX2lz X2Fub255bW91cyAoY29uc3QgY2hhciAqbmFtZXNwYWNlKQorIHN0cnVjdCB1c2luZ19kaXJlY3Qg KgorIGNwX2FkZF91c2luZyAoY29uc3QgY2hhciAqZGVzdCwKKyAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKnNyYywKKysgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFsaWFzLAorKyAgICAgICAg ICAgICAgY29uc3QgY2hhciAqZGVjbGFyYXRpb24sCisrICAgICAgICAgICAgICBjb25zdCBpbnQg bGluZV9udW1iZXIsCisgCSAgICAgIHN0cnVjdCB1c2luZ19kaXJlY3QgKm5leHQpCisgeworICAg c3RydWN0IHVzaW5nX2RpcmVjdCAqcmV0dmFsOworIAorICAgcmV0dmFsID0geG1hbGxvYyAoc2l6 ZW9mIChzdHJ1Y3QgdXNpbmdfZGlyZWN0KSk7CistICByZXR2YWwtPmltcG9ydF9zcmMgPSBzYXZl c3RyaW5nIChzcmMsIHN0cmxlbihzcmMpKTsKKy0gIHJldHZhbC0+aW1wb3J0X2Rlc3QgPSBzYXZl c3RyaW5nIChkZXN0LCBzdHJsZW4oZGVzdCkpOworKyAgcmV0dmFsLT5pbXBvcnRfc3JjID0gc2F2 ZXN0cmluZyAoc3JjLCBzdHJsZW4gKHNyYykpOworKyAgcmV0dmFsLT5pbXBvcnRfZGVzdCA9IHNh dmVzdHJpbmcgKGRlc3QsIHN0cmxlbiAoZGVzdCkpOworKyAgcmV0dmFsLT5hbGlhcyA9IHNhdmVz dHJpbmcgKGFsaWFzLCBzdHJsZW4gKGFsaWFzKSk7CisrICByZXR2YWwtPmRlY2xhcmF0aW9uID0g c2F2ZXN0cmluZyAoZGVjbGFyYXRpb24sIHN0cmxlbiAoZGVjbGFyYXRpb24pKTsKKysgIHJldHZh bC0+bGluZV9udW1iZXIgPSBsaW5lX251bWJlcjsKKyAgIHJldHZhbC0+bmV4dCA9IG5leHQ7Cisr ICByZXR2YWwtPnNlYXJjaGVkID0gMDsKKyAKKyAgIHJldHVybiByZXR2YWw7CisgfQorQEAgLTIy OSwxMiArMjQ0LDQ4IEBAIGNwX2FkZF91c2luZyAoY29uc3QgY2hhciAqZGVzdCwKKyAKKyBzdHJ1 Y3Qgc3ltYm9sICoKKyBjcF9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1l LAorLQkJCSAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKyAJCQkgICBjb25zdCBzdHJ1Y3Qg YmxvY2sgKmJsb2NrLAorIAkJCSAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKKyB7CistICBy ZXR1cm4gbG9va3VwX25hbWVzcGFjZV9zY29wZSAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywg ZG9tYWluLAorLQkJCQkgYmxvY2tfc2NvcGUgKGJsb2NrKSwgMCk7CisrICBzdHJ1Y3Qgc3ltYm9s ICpzeW07IAorKyAgY29uc3QgY2hhciAqc2NvcGUgPSBibG9ja19zY29wZSAoYmxvY2spOworKwor KyAgc3ltID0gbG9va3VwX25hbWVzcGFjZV9zY29wZSAobmFtZSwgYmxvY2ssIGRvbWFpbiwgc2Nv cGUsIDApOworKyAgaWYgKHN5bSAhPSBOVUxMKQorKyAgICByZXR1cm4gc3ltOworKworKyAgcmV0 dXJuIGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlKHNjb3BlLCBuYW1lLCBibG9jaywgZG9tYWlu KTsKKyt9CisrCisrLyogU2VhcmNoZXMgZm9yIE5BTUUgaW4gdGhlIGN1cnJlbnQgbmFtZXNwYWNl LCBhbmQgYnkgYXBwbHlpbmcgcmVsZXZhbnQgaW1wb3J0CisrICAgc3RhdGVtZW50cyBiZWxvbmdp bmcgdG8gQkxPQ0sgYW5kIGl0cyBwYXJlbnRzLiAgU0NPUEUgaXMgdGhlIG5hbWVzcGFjZQorKyAg IHNjb3BlIG9mIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSBzZWFyY2ggaXMgYmVpbmcgZXZhbHVh dGVkLiAgKi8KKysKKytzdHJ1Y3Qgc3ltYm9sKgorK2NwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNl IChjb25zdCBjaGFyICpzY29wZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqbmFtZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJs b2NrICpibG9jaywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tYWluX2Vu dW0gZG9tYWluKQorK3sKKysgIHN0cnVjdCBzeW1ib2wgKnN5bTsKKysKKysgIC8qIEZpcnN0LCB0 cnkgdG8gZmluZCB0aGUgc3ltYm9sIGluIHRoZSBnaXZlbiBuYW1lc3BhY2UuICAqLworKyAgc3lt ID0gY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgKHNjb3BlLCBuYW1lLCBibG9jaywgZG9t YWluKTsKKysgIGlmICggc3ltICE9IE5VTEwpCisrICAgIHJldHVybiBzeW07CisrICAgIAorKyAg LyogU2VhcmNoIGZvciBuYW1lIGluIG5hbWVzcGFjZXMgaW1wb3J0ZWQgdG8gdGhpcyBhbmQgcGFy ZW50IGJsb2Nrcy4gICovCisrICB3aGlsZSAoYmxvY2sgIT0gTlVMTCkKKysgICAgeworKyAgICAg IHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfaW1wb3J0cyhzY29wZSxuYW1lLCBibG9jaywgZG9tYWlu LDAsMSk7CisrCisrICAgICAgaWYgKHN5bSkKKysgICAgICAgIHJldHVybiBzeW07CisrCisrICAg ICAgYmxvY2sgPSBCTE9DS19TVVBFUkJMT0NLKGJsb2NrKTsKKysgICAgfQorKworKyAgcmV0dXJu IE5VTEw7CisgfQorIAorIC8qIExvb2t1cCBOQU1FIGF0IG5hbWVzcGFjZSBzY29wZSAob3IsIGlu IEMgdGVybXMsIGluIHN0YXRpYyBhbmQKK0BAIC0yNTIsOSArMzAzLDggQEAgY3BfbG9va3VwX3N5 bWJvbF9ub25sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwKKyAgICAiQTo6eCIsIGFuZCBpZiB0aGF0 IGNhbGwgZmFpbHMsIHRoZW4gdGhlIGZpcnN0IGNhbGwgbG9va3MgZm9yCisgICAgIngiLiAgKi8K KyAKKy1zdGF0aWMgc3RydWN0IHN5bWJvbCAqCisrc3RydWN0IHN5bWJvbCAqCisgbG9va3VwX25h bWVzcGFjZV9zY29wZSAoY29uc3QgY2hhciAqbmFtZSwKKy0JCQljb25zdCBjaGFyICpsaW5rYWdl X25hbWUsCisgCQkJY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKKyAJCQljb25zdCBkb21haW5f ZW51bSBkb21haW4sCisgCQkJY29uc3QgY2hhciAqc2NvcGUsCitAQCAtMjc2LDggKzMyNiw3IEBA IGxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUgKGNvbnN0IGNoYXIgKm5hbWUsCisgCSAgbmV3X3Njb3Bl X2xlbiArPSAyOworIAl9CisgICAgICAgbmV3X3Njb3BlX2xlbiArPSBjcF9maW5kX2ZpcnN0X2Nv bXBvbmVudCAoc2NvcGUgKyBuZXdfc2NvcGVfbGVuKTsKKy0gICAgICBzeW0gPSBsb29rdXBfbmFt ZXNwYWNlX3Njb3BlIChuYW1lLCBsaW5rYWdlX25hbWUsIGJsb2NrLAorLQkJCQkgICAgZG9tYWlu LCBzY29wZSwgbmV3X3Njb3BlX2xlbik7CisrICAgICAgc3ltID0gbG9va3VwX25hbWVzcGFjZV9z Y29wZSAobmFtZSwgYmxvY2ssIGRvbWFpbiwgc2NvcGUsIG5ld19zY29wZV9sZW4pOworICAgICAg IGlmIChzeW0gIT0gTlVMTCkKKyAJcmV0dXJuIHN5bTsKKyAgICAgfQorQEAgLTI4OCwyNSArMzM3 LDk4IEBAIGxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUgKGNvbnN0IGNoYXIgKm5hbWUsCisgICBuYW1l c3BhY2UgPSBhbGxvY2EgKHNjb3BlX2xlbiArIDEpOworICAgc3RybmNweSAobmFtZXNwYWNlLCBz Y29wZSwgc2NvcGVfbGVuKTsKKyAgIG5hbWVzcGFjZVtzY29wZV9sZW5dID0gJ1wwJzsKKy0gIHJl dHVybiBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAobmFtZXNwYWNlLCBuYW1lLCBsaW5rYWdl X25hbWUsCistCQkJCSAgICAgYmxvY2ssIGRvbWFpbik7CisrICByZXR1cm4gY3BfbG9va3VwX3N5 bWJvbF9pbl9uYW1lc3BhY2UgKG5hbWVzcGFjZSwgbmFtZSxibG9jaywgZG9tYWluKTsKKyB9Cisg CistLyogTG9vayB1cCBOQU1FIGluIHRoZSBDKysgbmFtZXNwYWNlIE5BTUVTUEFDRSwgYXBwbHlp bmcgdGhlIHVzaW5nCistICAgZGlyZWN0aXZlcyB0aGF0IGFyZSBhY3RpdmUgaW4gQkxPQ0suICBP dGhlciBhcmd1bWVudHMgYXJlIGFzIGluCisrLyogTG9vayB1cCBOQU1FIGluIHRoZSBDKysgbmFt ZXNwYWNlIE5BTUVTUEFDRS4gT3RoZXIgYXJndW1lbnRzIGFyZSBhcyBpbgorICAgIGNwX2xvb2t1 cF9zeW1ib2xfbm9ubG9jYWwuICAqLworIAorK3N0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKKytjcF9s b29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNwYWNlLAorKwkJCSAg ICAgICBjb25zdCBjaGFyICpuYW1lLAorKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJs b2NrLAorKwkJCSAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCisreworKworKyAgaWYg KG5hbWVzcGFjZVswXSA9PSAnXDAnKQorKyAgICB7CisrICAgICAgcmV0dXJuIGxvb2t1cF9zeW1i b2xfZmlsZSAobmFtZSwgYmxvY2ssZG9tYWluLCAwKTsKKysgICAgfQorKyAgZWxzZQorKyAgICB7 CisrICAgICAgY2hhciAqY29uY2F0ZW5hdGVkX25hbWUKKysJPSBhbGxvY2EgKHN0cmxlbiAobmFt ZXNwYWNlKSArIDIgKyBzdHJsZW4gKG5hbWUpICsgMSk7CisrICAgICAgc3RyY3B5IChjb25jYXRl bmF0ZWRfbmFtZSwgbmFtZXNwYWNlKTsKKysgICAgICBzdHJjYXQgKGNvbmNhdGVuYXRlZF9uYW1l LCAiOjoiKTsKKysgICAgICBzdHJjYXQgKGNvbmNhdGVuYXRlZF9uYW1lLCBuYW1lKTsKKysgICAg ICByZXR1cm4gbG9va3VwX3N5bWJvbF9maWxlIChjb25jYXRlbmF0ZWRfbmFtZSwgYmxvY2ssIGRv bWFpbiwKKysJCQkJY3BfaXNfYW5vbnltb3VzIChuYW1lc3BhY2UpKTsKKysgICAgfQorK30KKysK KysvKiBVc2VkIGZvciBjbGVhbnVwcyB0byByZXNldCB0aGUgInNlYXJjaGVkIiBmbGFnIGluY2Fz ZQorKyAgIG9mIGFuIGVycm9yLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Jlc2V0X2RpcmVjdGl2 ZV9zZWFyY2hlZCAodm9pZCAqZGF0YSkKKyt7CisrICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpkaXJl Y3QgPSBkYXRhOworKyAgZGlyZWN0LT5zZWFyY2hlZCA9IDA7CisrfQorKworKy8qIFNlYXJjaCBm b3IgTkFNRSBieSBhcHBseWluZyBhbGwgaW1wb3J0IHN0YXRlbWVudHMgYmVsb25naW5nCisrICAg dG8gQkxPQ0sgd2hpY2ggYXJlIGFwcGxpY2FibGUgaW4gU0NPUEUuIElmIERFQ0xBUkFUSU9OX09O TFkgdGhlIHNlYXJjaAorKyAgIGlzIHJlc3RyaWN0ZWQgdG8gdXNpbmcgZGVjbGFyYXRpb25zLgor KyAgIEV4YW1wbGU6CisrCisrICAgICBuYW1lc3BhY2UgQXsKKysgICAgICAgaW50IHg7CisrICAg ICB9CisrICAgICB1c2luZyBBOjp4OworKworKyAgIElmIFNFQVJDSF9QQVJFTlRTIHRoZSBzZWFy Y2ggd2lsbCBpbmNsdWRlIGltcG9ydHMgd2hpY2ggYXJlIGFwcGxpY2FibGUgaW4KKysgICBwYXJl bnRzIG9mIHNjb3Blcy4KKysgICBFeGFtcGxlOgorKworKyAgICAgbmFtZXNwYWNlIEF7CisrICAg ICAgIHVzaW5nIG5hbWVzcGFjZSBYOworKyAgICAgICBuYW1lc3BhY2UgQnsKKysgICAgICAgICB1 c2luZyBuYW1lc3BhY2UgWTsKKysgICAgICAgfQorKyAgICAgfQorKworKyAgIElmIFNDT1BFIGlz ICJBOjpCIiBhbmQgU0VBUkNIX1BBUkVOVFMgaXMgdHJ1ZSB0aGUgaW1wb3J0cyBvZiBuYW1lc3Bh Y2VzIFgKKysgICBhbmQgWSB3aWxsIGJlIGNvbnNpZGVyZWQuIElmIFNFQVJDSF9QQVJFTlRTIGlz IGZhbHNlIG9ubHkgdGhlIGltcG9ydCBvZiBZCisrICAgaXMgY29uc2lkZXJlZC4gICovCisrCisg c3RydWN0IHN5bWJvbCAqCistY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2UgKGNvbnN0IGNoYXIg Km5hbWVzcGFjZSwKKy0JCQkgICAgY29uc3QgY2hhciAqbmFtZSwKKy0JCQkgICAgY29uc3QgY2hh ciAqbGlua2FnZV9uYW1lLAorLQkJCSAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorLQkJ CSAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCisrY3BfbG9va3VwX3N5bWJvbF9pbXBvcnRz IChjb25zdCBjaGFyICpzY29wZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKm5hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sg KmJsb2NrLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9t YWluLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlY2xhcmF0aW9uX29ubHksCisr ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VhcmNoX3BhcmVudHMpCisgeworLSAgY29u c3Qgc3RydWN0IHVzaW5nX2RpcmVjdCAqY3VycmVudDsKKy0gIHN0cnVjdCBzeW1ib2wgKnN5bTsK KysgIHN0cnVjdCB1c2luZ19kaXJlY3QgKmN1cnJlbnQ7CisrICBzdHJ1Y3Qgc3ltYm9sICpzeW0g PSBOVUxMOworKyAgaW50IGRpcmVjdGl2ZV9tYXRjaDsKKysgIGludCBjdXJyZW50X2xpbmU7Cisr ICBzdHJ1Y3QgY2xlYW51cCAqc2VhcmNoZWRfY2xlYW51cDsKKysKKysgIGlmKCFkZWNsYXJhdGlv bl9vbmx5KQorKyAgICAvKiBGaXJzdCwgdHJ5IHRvIGZpbmQgdGhlIHN5bWJvbCBpbiB0aGUgZ2l2 ZW4gbmFtZXNwYWNlLiAgKi8KKysgICAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3Bh Y2UgKHNjb3BlLCBuYW1lLCBibG9jaywgZG9tYWluKTsKKyAKKy0gIC8qIEZpcnN0LCBnbyB0aHJv dWdoIHRoZSB1c2luZyBkaXJlY3RpdmVzLiAgSWYgYW55IG9mIHRoZW0gYWRkIG5ldworKyAgaWYg KCBzeW0gIT0gTlVMTCkKKysgICAgcmV0dXJuIHN5bTsKKysKKysgIGlmIChoYXNfc3RhY2tfZnJh bWVzICgpKQorKyAgICBjdXJyZW50X2xpbmUgPSBmaW5kX3BjX2xpbmUgKGdldF9mcmFtZV9wYyAo Z2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDApLmxpbmU7CisrICBlbHNlCisrICAgIGN1cnJlbnRfbGluZSA9 IDA7CisrCisrICAvKiBHbyB0aHJvdWdoIHRoZSB1c2luZyBkaXJlY3RpdmVzLiAgSWYgYW55IG9m IHRoZW0gYWRkIG5ldworICAgICAgbmFtZXMgdG8gdGhlIG5hbWVzcGFjZSB3ZSdyZSBzZWFyY2hp bmcgaW4sIHNlZSBpZiB3ZSBjYW4gZmluZCBhCisgICAgICBtYXRjaCBieSBhcHBseWluZyB0aGVt LiAgKi8KKyAKK0BAIC0zMTQsMzkgKzQzNiw3OCBAQCBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFj ZSAoY29uc3QgY2hhciAqbmFtZXNwYWNlLAorICAgICAgICBjdXJyZW50ICE9IE5VTEw7CisgICAg ICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KQorICAgICB7CistICAgICAgaWYgKHN0cmNtcCAo bmFtZXNwYWNlLCBjdXJyZW50LT5pbXBvcnRfZGVzdCkgPT0gMCkKKysgIAorKyAgICAgIC8qIElm IHRoZSBpbXBvcnQgZGVzdGluYXRpb24gaXMgdGhlIGN1cnJlbnQgc2NvcGUgb3Igb25lIG9mIGl0 cyBhbmNlc3RvcnMgdGhlbgorKyAgICAgICAgIGl0IGlzIGFwcGxpY2FibGUuICAqLworKyAgICAg IGRpcmVjdGl2ZV9tYXRjaCA9IHNlYXJjaF9wYXJlbnRzID8KKysgICAgICAgICAgICAgICAgICAg ICAgICBzdHJuY21wIChzY29wZSwgY3VycmVudC0+aW1wb3J0X2Rlc3QsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RybGVuKGN1cnJlbnQtPmltcG9ydF9kZXN0KSkgPT0gMCA6 CisrICAgICAgICAgICAgICAgICAgICAgICAgc3RyY21wIChzY29wZSwgY3VycmVudC0+aW1wb3J0 X2Rlc3QpID09IDA7CisrCisrICAgICAgaWYgKGRpcmVjdGl2ZV9tYXRjaCAmJgorKyAgICAgICAg ICBjdXJyZW50LT5saW5lX251bWJlciA8IGN1cnJlbnRfbGluZSAmJgorKyAgICAgICAgICAhY3Vy cmVudC0+c2VhcmNoZWQpCisgCXsKKy0JICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFj ZSAoY3VycmVudC0+aW1wb3J0X3NyYywKKy0JCQkJCSAgICBuYW1lLAorLQkJCQkJICAgIGxpbmth Z2VfbmFtZSwKKy0JCQkJCSAgICBibG9jaywKKy0JCQkJCSAgICBkb21haW4pOworKwkgIGN1cnJl bnQtPnNlYXJjaGVkID0gMTsKKysJICBzZWFyY2hlZF9jbGVhbnVwID0gbWFrZV9jbGVhbnVwIChy ZXNldF9kaXJlY3RpdmVfc2VhcmNoZWQsIGN1cnJlbnQpOworKworKwkgIC8qIElmIHRoZXJlIGlz IGFuIGltcG9ydCBvZiBhIHNpbmdsZSBkZWNsYXJhdGlvbiwgY29tcGFyZSB0aGUgaW1wb3J0ZWQK KysJICAgICBkZWNsYXJhdGlvbiB3aXRoIHRoZSBzb3VnaHQgb3V0IG5hbWUuIElmIHRoZXJlIGlz IGEgbWF0Y2ggcGFzcworKwkgICAgIGN1cnJlbnQtPmltcG9ydF9zcmMgYXMgTkFNRVNQQUNFIHRv IGRpcmVjdCB0aGUgc2VhcmNoIHRvd2FyZHMgdGhlCisrCSAgICAgaW1wb3J0ZWQgbmFtZXNwYWNl LiAgKi8KKysJICBpZiAoc3RyY21wICgiIiwgY3VycmVudC0+ZGVjbGFyYXRpb24pICE9IDApCisr CSAgICB7CisrCSAgICBpZiAoc3RyY21wIChuYW1lLCBjdXJyZW50LT5kZWNsYXJhdGlvbikgPT0g MCkKKysJICAgICAgeworKwkgICAgICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFj ZSAoY3VycmVudC0+aW1wb3J0X3NyYywKKysJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5hbWUsCisrCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBibG9jaywKKysJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRvbWFpbik7CisrCSAgICAgIH0KKysKKysJICAgIGN1cnJlbnQtPnNlYXJjaGVkID0gMDsK KysJICAgIGlmIChzeW0pCisrCSAgICAgIHJldHVybiBzeW07CisrCisrCSAgICBjb250aW51ZTsK KysJICAgIH0KKysJICAgCisrCSAgaWYgKGRlY2xhcmF0aW9uX29ubHkpCisrCSAgICB7CisrCSAg ICBjdXJyZW50LT5zZWFyY2hlZCA9IDA7CisrCSAgICBkaXNjYXJkX2NsZWFudXBzIChzZWFyY2hl ZF9jbGVhbnVwKTsKKysJICAgIGNvbnRpbnVlOworKwkgICAgfQorKworKwkgIGlmIChzdHJjbXAg KG5hbWUsIGN1cnJlbnQtPmFsaWFzKSA9PSAwKQorKwkgICAgLyogSWYgdGhlIGltcG9ydCBpcyBj cmVhdGluZyBhbiBhbGlhcyBhbmQgdGhlIGFsaWFzIG1hdGNoZXMgdGhlCisrCSAgICAgICBzb3Vn aHQgbmFtZS4gUGFzcyBjdXJyZW50LT5pbm5lciBhcyB0aGUgTkFNRSB0byBkaXJlY3QgdGhlCisr CSAgICAgICBzZWFyY2ggdG93YXJkcyB0aGUgYWxpYXNlZCBuYW1lc3BhY2UgKi8KKysJICAgIHsK KysJICAgIHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChzY29wZSwKKysJICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50LT5pbXBvcnRfc3Jj LAorKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAorKwkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbik7CisrCSAgICB9 IGVsc2UgaWYgKHN0cmNtcCAoIiIsIGN1cnJlbnQtPmFsaWFzKSA9PSAwKXsKKysJICAgIC8qIElm IHRoaXMgaW1wb3J0IHN0YXRlbWVudCBjcmVhdGVzIG5vIGFsaWFzLCBwYXNzIGN1cnJlbnQtPmlu bmVyIGFzCisrCSAgICAgICBOQU1FU1BBQ0UgdG8gZGlyZWN0IHRoZSBzZWFyY2ggdG93YXJkcyB0 aGUgaW1wb3J0ZWQgbmFtZXNwYWNlLiAqLworKwkgICAgICBzeW0gPSBjcF9sb29rdXBfc3ltYm9s X2ltcG9ydHMgKGN1cnJlbnQtPmltcG9ydF9zcmMsCisrCSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbmFtZSwKKysJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBibG9jaywKKysJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21h aW4sCisrCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKysJICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKysJICAgIH0KKysKKysJICBjdXJy ZW50LT5zZWFyY2hlZCA9IDA7CisrCSAgZGlzY2FyZF9jbGVhbnVwcyAoc2VhcmNoZWRfY2xlYW51 cCk7CisrCisgCSAgaWYgKHN5bSAhPSBOVUxMKQorIAkgICAgcmV0dXJuIHN5bTsKKyAJfQorICAg ICB9CisgCistICAvKiBXZSBkaWRuJ3QgZmluZCBhbnl0aGluZyBieSBhcHBseWluZyBhbnkgb2Yg dGhlIHVzaW5nIGRpcmVjdGl2ZXMKKy0gICAgIHRoYXQgYXJlIHN0aWxsIGFwcGxpY2FibGU7IHNv IGxldCdzIHNlZSBpZiB3ZSd2ZSBnb3QgYSBtYXRjaAorLSAgICAgdXNpbmcgdGhlIGN1cnJlbnQg bmFtZXNwYWNlLiAgKi8KKy0gIAorLSAgaWYgKG5hbWVzcGFjZVswXSA9PSAnXDAnKQorLSAgICB7 CistICAgICAgcmV0dXJuIGxvb2t1cF9zeW1ib2xfZmlsZSAobmFtZSwgbGlua2FnZV9uYW1lLCBi bG9jaywKKy0JCQkJIGRvbWFpbiwgMCk7CistICAgIH0KKy0gIGVsc2UKKy0gICAgeworLSAgICAg IGNoYXIgKmNvbmNhdGVuYXRlZF9uYW1lCistCT0gYWxsb2NhIChzdHJsZW4gKG5hbWVzcGFjZSkg KyAyICsgc3RybGVuIChuYW1lKSArIDEpOworLSAgICAgIHN0cmNweSAoY29uY2F0ZW5hdGVkX25h bWUsIG5hbWVzcGFjZSk7CistICAgICAgc3RyY2F0IChjb25jYXRlbmF0ZWRfbmFtZSwgIjo6Iik7 CistICAgICAgc3RyY2F0IChjb25jYXRlbmF0ZWRfbmFtZSwgbmFtZSk7CistICAgICAgc3ltID0g bG9va3VwX3N5bWJvbF9maWxlIChjb25jYXRlbmF0ZWRfbmFtZSwgbGlua2FnZV9uYW1lLAorLQkJ CQlibG9jaywgZG9tYWluLCAKKy0JCQkJY3BfaXNfYW5vbnltb3VzIChuYW1lc3BhY2UpKTsKKy0g ICAgICByZXR1cm4gc3ltOworLSAgICB9CisrICByZXR1cm4gTlVMTDsKKyB9CisgCisgLyogTG9v ayB1cCBOQU1FIGluIEJMT0NLJ3Mgc3RhdGljIGJsb2NrIGFuZCBpbiBnbG9iYWwgYmxvY2tzLiAg SWYKK0BAIC0zNTYsMTcgKzUxNywxNSBAQCBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAoY29u c3QgY2hhciAqbmFtZXNwYWNlLAorIAorIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKKyBsb29rdXBf c3ltYm9sX2ZpbGUgKGNvbnN0IGNoYXIgKm5hbWUsCistCQkgICAgY29uc3QgY2hhciAqbGlua2Fn ZV9uYW1lLAorIAkJICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCisgCQkgICAgY29uc3Qg ZG9tYWluX2VudW0gZG9tYWluLAorIAkJICAgIGludCBhbm9ueW1vdXNfbmFtZXNwYWNlKQorIHsK KyAgIHN0cnVjdCBzeW1ib2wgKnN5bSA9IE5VTEw7CisgCistICBzeW0gPSBsb29rdXBfc3ltYm9s X3N0YXRpYyAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKKysgIHN5bSA9IGxv b2t1cF9zeW1ib2xfc3RhdGljIChuYW1lLCBibG9jaywgZG9tYWluKTsKKyAgIGlmIChzeW0gIT0g TlVMTCkKKyAgICAgcmV0dXJuIHN5bTsKKy0KKyAgIGlmIChhbm9ueW1vdXNfbmFtZXNwYWNlKQor ICAgICB7CisgICAgICAgLyogU3ltYm9scyBkZWZpbmVkIGluIGFub255bW91cyBuYW1lc3BhY2Vz IGhhdmUgZXh0ZXJuYWwgbGlua2FnZQorQEAgLTM3NiwxMiArNTM1LDExIEBAIGxvb2t1cF9zeW1i b2xfZmlsZSAoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmds b2JhbF9ibG9jayA9IGJsb2NrX2dsb2JhbF9ibG9jayAoYmxvY2spOworICAgICAgIAorICAgICAg IGlmIChnbG9iYWxfYmxvY2sgIT0gTlVMTCkKKy0Jc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfYmxv Y2sgKG5hbWUsIGxpbmthZ2VfbmFtZSwgZ2xvYmFsX2Jsb2NrLAorLQkJCQkgICAgICAgZG9tYWlu KTsKKysJc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfYmxvY2sgKG5hbWUsIGdsb2JhbF9ibG9jaywg ZG9tYWluKTsKKyAgICAgfQorICAgZWxzZQorICAgICB7CistICAgICAgc3ltID0gbG9va3VwX3N5 bWJvbF9nbG9iYWwgKG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssIGRvbWFpbik7CisrICAgICAg c3ltID0gbG9va3VwX3N5bWJvbF9nbG9iYWwgKG5hbWUsIGJsb2NrLCBkb21haW4pOworICAgICB9 CisgCisgICBpZiAoc3ltICE9IE5VTEwpCitAQCAtNDAyLDYgKzU2MCw3IEBAIGxvb2t1cF9zeW1i b2xfZmlsZSAoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICBzeW0gPSBsb29rdXBfcG9zc2libGVf bmFtZXNwYWNlX3N5bWJvbCAobmFtZSk7CisgICAgICAgaWYgKHN5bSAhPSBOVUxMKQorIAlyZXR1 cm4gc3ltOworKworICAgICB9CisgCisgICByZXR1cm4gTlVMTDsKK0BAIC00MjksOSArNTg4LDgg QEAgY3BfbG9va3VwX25lc3RlZF90eXBlIChzdHJ1Y3QgdHlwZSAqcGFyZW50X3R5cGUsCisgCSAg IGxvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIHdvcmtzIHdoZW4gbG9va2luZyB0aGVtIHVwLiAgKi8K KyAKKyAJY29uc3QgY2hhciAqcGFyZW50X25hbWUgPSBUWVBFX1RBR19OQU1FIChwYXJlbnRfdHlw ZSk7CistCXN0cnVjdCBzeW1ib2wgKnN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChw YXJlbnRfbmFtZSwKKysJc3RydWN0IHN5bWJvbCAqc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbl9u YW1lc3BhY2UgKHBhcmVudF9uYW1lLAorIAkJCQkJCQkgbmVzdGVkX25hbWUsCistCQkJCQkJCSBO VUxMLAorIAkJCQkJCQkgYmxvY2ssCisgCQkJCQkJCSBWQVJfRE9NQUlOKTsKKyAJaWYgKHN5bSA9 PSBOVUxMIHx8IFNZTUJPTF9DTEFTUyAoc3ltKSAhPSBMT0NfVFlQRURFRikKK0BAIC02NzcsNyAr ODM1LDcgQEAgY2hlY2tfb25lX3Bvc3NpYmxlX25hbWVzcGFjZV9zeW1ib2wgKGNvbnN0IGNoYXIg Km5hbWUsIGludCBsZW4sCisgCisgICBtZW1jcHkgKG5hbWVfY29weSwgbmFtZSwgbGVuKTsKKyAg IG5hbWVfY29weVtsZW5dID0gJ1wwJzsKKy0gIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJs b2NrLCBuYW1lX2NvcHksIE5VTEwsIFZBUl9ET01BSU4pOworKyAgc3ltID0gbG9va3VwX2Jsb2Nr X3N5bWJvbCAoYmxvY2ssIG5hbWVfY29weSwgVkFSX0RPTUFJTik7CisgCisgICBpZiAoc3ltID09 IE5VTEwpCisgICAgIHsKK0BAIC03MTgsNyArODc2LDcgQEAgbG9va3VwX3Bvc3NpYmxlX25hbWVz cGFjZV9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUpCisgICAgICAgc3RydWN0IHN5bWJvbCAqc3lt OworIAorICAgICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGdldF9wb3NzaWJsZV9uYW1l c3BhY2VfYmxvY2sgKG9iamZpbGUpLAorLQkJCQkgbmFtZSwgTlVMTCwgVkFSX0RPTUFJTik7Cisr CQkJCSBuYW1lLCBWQVJfRE9NQUlOKTsKKyAKKyAgICAgICBpZiAoc3ltICE9IE5VTEwpCisgCXJl dHVybiBzeW07CitkaWZmIC0tZ2l0IGEvZ2RiL2NwLXN1cHBvcnQuYyBiL2dkYi9jcC1zdXBwb3J0 LmMKK2luZGV4IGMzMWZjZmYuLmZjMjk0YWUgMTAwNjQ0CistLS0gYS9nZGIvY3Atc3VwcG9ydC5j CisrKysgYi9nZGIvY3Atc3VwcG9ydC5jCitAQCAtMTkwLDcgKzE5MCw4IEBAIG1hbmdsZWRfbmFt ZV90b19jb21wIChjb25zdCBjaGFyICptYW5nbGVkX25hbWUsIGludCBvcHRpb25zLAorICAgcmV0 dXJuIHJldDsKKyB9CisgCistLyogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyBjb250YWlu aW5nIG1ldGhvZCBQSFlTTkFNRS4gICovCisrLyogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjbGFz cyBvciBuYW1lc3BhY2UgY29udGFpbmluZworKyAgIGZ1bmN0aW9uLCBtZXRob2QsIG9yIHZhcmlh YmxlIFBIWVNOQU1FLiAgKi8KKyAKKyBjaGFyICoKKyBjcF9jbGFzc19uYW1lX2Zyb21fcGh5c25h bWUgKGNvbnN0IGNoYXIgKnBoeXNuYW1lKQorQEAgLTg0MCw5ICs4NDEsOSBAQCByZWFkX2luX3Bz eW10YWJzIChjb25zdCBjaGFyICpmdW5jX25hbWUpCisgICAgIGlmIChwcy0+cmVhZGluKQorICAg ICAgIGNvbnRpbnVlOworIAorLSAgICBpZiAoKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIGZ1 bmNfbmFtZSwgTlVMTCwgMSwgVkFSX0RPTUFJTikKKysgICAgaWYgKChsb29rdXBfcGFydGlhbF9z eW1ib2wgKHBzLCBmdW5jX25hbWUsIDEsIFZBUl9ET01BSU4pCisgCSAhPSBOVUxMKQorLQl8fCAo bG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgZnVuY19uYW1lLCBOVUxMLCAwLCBWQVJfRE9NQUlO KQorKwl8fCAobG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgZnVuY19uYW1lLCAwLCBWQVJfRE9N QUlOKQorIAkgICAgIT0gTlVMTCkpCisgICAgICAgcHN5bXRhYl90b19zeW10YWIgKHBzKTsKKyAg IH0KK2RpZmYgLS1naXQgYS9nZGIvY3Atc3VwcG9ydC5oIGIvZ2RiL2NwLXN1cHBvcnQuaAoraW5k ZXggYTYyOTk1NS4uMmFmZGI0OCAxMDA2NDQKKy0tLSBhL2dkYi9jcC1zdXBwb3J0LmgKKysrKyBi L2dkYi9jcC1zdXBwb3J0LmgKK0BAIC0zOCwxNSArMzgsMzMgQEAgc3RydWN0IGRlbWFuZ2xlX2Nv bXBvbmVudDsKKyAKKyAvKiBUaGlzIHN0cnVjdCBpcyBkZXNpZ25lZCB0byBzdG9yZSBkYXRhIGZy b20gdXNpbmcgZGlyZWN0aXZlcy4gIEl0CisgICAgc2F5cyB0aGF0IG5hbWVzIGZyb20gbmFtZXNw YWNlIElNUE9SVF9TUkMgc2hvdWxkIGJlIHZpc2libGUgd2l0aGluCistICAgbmFtZXNwYWNlIElN UE9SVF9ERVNULiBJTVBPUlRfREVTVCBzaG91bGQgYWx3YXlzIGJlIGEgc3RyaWN0IGluaXRpYWwK Ky0gICBzdWJzdHJpbmcgb2YgSU1QT1JUX1NSQy4gVGhlc2UgZm9ybSBhIGxpbmtlZCBsaXN0OyBO RVhUIGlzIHRoZSBuZXh0IGVsZW1lbnQKKy0gICBvZiB0aGUgbGlzdC4gICovCisrICAgbmFtZXNw YWNlIElNUE9SVF9ERVNULiAgSU1QT1JUX0RFU1Qgc2hvdWxkIGFsd2F5cyBiZSBhIHN0cmljdCBp bml0aWFsCisrICAgc3Vic3RyaW5nIG9mIElNUE9SVF9TUkMuICBUaGVzZSBmb3JtIGEgbGlua2Vk IGxpc3Q7IE5FWFQgaXMgdGhlIG5leHQKKysgICBlbGVtZW50IG9mIHRoZSBsaXN0LiAgQUxJQVMg aXMgc2V0IHRvIGEgbm9uIGVtcHR5IHN0cmluZyBpZiB0aGUgaW1wb3J0ZWQKKysgICBuYW1lc3Bh Y2UgaGFzIGJlZW4gYWxpYXNlZC5FZzoKKysgICAgICAgbmFtZXNwYWNlIEM9QTo6QjsKKysgICBB TElBUyA9ICJDIgorKyAgIERFQ0xBUkFUSU9OIGlzIHRoZSBuYW1lIG9mIHRoZSBpbXBvcnRlZCBk ZWNsYXJhdGlvbiwgaWYgdGhpcyBpbXBvcnQgCisrICAgc3RhdGVtZW50IHJlcHJlc2VudHMgb25l LiBFZzoKKysgICAgICAgdXNpbmcgQTo6eDsKKysgICBXaGVyZSB4IGlzIHZhcmlhYmxlIGluIG5h bWVzcGFjZSBBLiBkZWNsYXJhdGlvbiBpcyBzZXQgdG8geC4gIAorKyovCisgCisgc3RydWN0IHVz aW5nX2RpcmVjdAorIHsKKyAgIGNoYXIgKmltcG9ydF9zcmM7CisgICBjaGFyICppbXBvcnRfZGVz dDsKKysKKysgIGNoYXIgKmFsaWFzOworKworKyAgY2hhciAqZGVjbGFyYXRpb247CisrCisrICBp bnQgbGluZV9udW1iZXI7CisrCisgICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpuZXh0OworKworKyAg LyogVXNlZCBkdXJpbmcgaW1wb3J0IHNlYXJjaCB0byB0ZW1wb3Jhcmx5IG1hcmsgdGhpcyBub2Rl IGFzIHNlYXJjZWQuICAqLworKyAgaW50IHNlYXJjaGVkOworIH07CisgCisgCitAQCAtNTQsNiAr NzIsNyBAQCBzdHJ1Y3QgdXNpbmdfZGlyZWN0CisgCisgZXh0ZXJuIGNoYXIgKmNwX2Nhbm9uaWNh bGl6ZV9zdHJpbmcgKGNvbnN0IGNoYXIgKnN0cmluZyk7CisgCisrCisgZXh0ZXJuIGNoYXIgKmNw X2NsYXNzX25hbWVfZnJvbV9waHlzbmFtZSAoY29uc3QgY2hhciAqcGh5c25hbWUpOworIAorIGV4 dGVybiBjaGFyICptZXRob2RfbmFtZV9mcm9tX3BoeXNuYW1lIChjb25zdCBjaGFyICpwaHlzbmFt ZSk7CitAQCAtNzksMTAgKzk4LDE2IEBAIGV4dGVybiBpbnQgY3BfdmFsaWRhdGVfb3BlcmF0b3Ig KGNvbnN0IGNoYXIgKmlucHV0KTsKKyBleHRlcm4gaW50IGNwX2lzX2Fub255bW91cyAoY29uc3Qg Y2hhciAqbmFtZXNwYWNlKTsKKyAKKyBleHRlcm4gdm9pZCBjcF9hZGRfdXNpbmdfZGlyZWN0aXZl IChjb25zdCBjaGFyICpkZXN0LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKnNyYyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqc3JjLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKmFsaWFzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKmRlY2xhcmF0aW9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGludCBsaW5lX251bWJlcik7CisgCisgZXh0ZXJuIHN0cnVjdCB1c2luZ19kaXJl Y3QgKmNwX2FkZF91c2luZyAoY29uc3QgY2hhciAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcmMsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYWxpYXMsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZGVjbGFyYXRpb24s CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGxp bmVfbnVtYmVyLAorIAkJCQkJICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpuZXh0KTsKKyAKKyBleHRl cm4gdm9pZCBjcF9pbml0aWFsaXplX25hbWVzcGFjZSAodm9pZCk7CitAQCAtOTksMTUgKzEyNCwy MCBAQCBleHRlcm4gdm9pZCBjcF9zZXRfYmxvY2tfc2NvcGUgKGNvbnN0IHN0cnVjdCBzeW1ib2wg KnN5bWJvbCwKKyBleHRlcm4gdm9pZCBjcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAo Y29uc3Qgc3RydWN0IHN5bWJvbCAqc3ltYm9sKTsKKyAKKyBleHRlcm4gc3RydWN0IHN5bWJvbCAq Y3BfbG9va3VwX3N5bWJvbF9ub25sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwKKy0JCQkJCQkgY29u c3QgY2hhciAqbGlua2FnZV9uYW1lLAorIAkJCQkJCSBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2Nr LAorIAkJCQkJCSBjb25zdCBkb21haW5fZW51bSBkb21haW4pOworIAorK3N0cnVjdCBzeW1ib2wg KmNwX2xvb2t1cF9zeW1ib2xfaW1wb3J0cyAoY29uc3QgY2hhciAqc2NvcGUsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpi bG9jaywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRv bWFpbl9lbnVtIGRvbWFpbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBkZWNsYXJhdGlvbl9vbmx5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IHNlYXJjaF9wYXJlbnRzKTsKKysKKyBleHRlcm4gc3RydWN0IHN5bWJv bCAqY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2UgKGNvbnN0IGNoYXIgKm5hbWVzcGFjZSwKKy0J CQkJCQkgIGNvbnN0IGNoYXIgKm5hbWUsCistCQkJCQkJICBjb25zdCBjaGFyICpsaW5rYWdlX25h bWUsCistCQkJCQkJICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorLQkJCQkJCSAgY29uc3Qg ZG9tYWluX2VudW0gZG9tYWluKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg ZG9tYWluX2VudW0gZG9tYWluKTsKKyAKKyBleHRlcm4gc3RydWN0IHR5cGUgKmNwX2xvb2t1cF9u ZXN0ZWRfdHlwZSAoc3RydWN0IHR5cGUgKnBhcmVudF90eXBlLAorIAkJCQkJICAgY29uc3QgY2hh ciAqbmVzdGVkX25hbWUsCitkaWZmIC0tZ2l0IGEvZ2RiL2RieHJlYWQuYyBiL2dkYi9kYnhyZWFk LmMKK2luZGV4IDZlZjY3NjcuLjVmNDgyNWMgMTAwNjQ0CistLS0gYS9nZGIvZGJ4cmVhZC5jCisr KysgYi9nZGIvZGJ4cmVhZC5jCitAQCAtMzU2NSw2ICszNTY1LDcgQEAgc3RhdGljIHN0cnVjdCBz eW1fZm5zIGFvdXRfc3ltX2ZucyA9CisgICBkYnhfbmV3X2luaXQsCQkvKiBzeW1fbmV3X2luaXQ6 IGluaXQgYW55dGhpbmcgZ2JsIHRvIGVudGlyZSBzeW10YWIgKi8KKyAgIGRieF9zeW1maWxlX2lu aXQsCS8qIHN5bV9pbml0OiByZWFkIGluaXRpYWwgaW5mbywgc2V0dXAgZm9yIHN5bV9yZWFkKCkg Ki8KKyAgIGRieF9zeW1maWxlX3JlYWQsCQkvKiBzeW1fcmVhZDogcmVhZCBhIHN5bWJvbCBmaWxl IGludG8gc3ltdGFiICovCisrICBOVUxMLAkJCQkvKiBzeW1fcmVhZF9wc3ltYm9scyAqLworICAg ZGJ4X3N5bWZpbGVfZmluaXNoLAkJLyogc3ltX2ZpbmlzaDogZmluaXNoZWQgd2l0aCBmaWxlLCBj bGVhbnVwICovCisgICBkZWZhdWx0X3N5bWZpbGVfb2Zmc2V0cywgLyogc3ltX29mZnNldHM6IHBh cnNlIHVzZXIncyBvZmZzZXRzIHRvCisgCQkJICAgICAgaW50ZXJuYWwgZm9ybSAqLworZGlmZiAt LWdpdCBhL2dkYi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZvCitpbmRleCBk NzE2ZDBkLi4zNWRjMTg1IDEwMDY0NAorLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbworKysrIGIv Z2RiL2RvYy9nZGIudGV4aW5mbworQEAgLTExNTksNiArMTE1OSwxNiBAQCBmb3IgcmVtb3RlIGRl YnVnZ2luZy4KKyBSdW4gdXNpbmcgQHZhcntkZXZpY2V9IGZvciB5b3VyIHByb2dyYW0ncyBzdGFu ZGFyZCBpbnB1dCBhbmQgb3V0cHV0LgorIEBjIEZJWE1FOiBraW5nZG9uIHRoaW5rcyB0aGVyZSBp cyBtb3JlIHRvIC10dHkuICBJbnZlc3RpZ2F0ZS4KKyAKKytAaXRlbSAtUAorK0BjaW5kZXggQGNv ZGV7LVB9CisrQGl0ZW14IC0tcHl0aG9uCiArQGNpbmRleCBAY29kZXstLXB5dGhvbn0KICtDaGFu Z2UgaW50ZXJwcmV0YXRpb24gb2YgY29tbWFuZCBsaW5lIHNvIHRoYXQgdGhlIGFyZ3VtZW50IGlt bWVkaWF0ZWx5CiArZm9sbG93aW5nIHRoaXMgc3dpdGNoIGlzIHRha2VuIHRvIGJlIHRoZSBuYW1l IG9mIGEgUHl0aG9uIHNjcmlwdCBmaWxlLgpAQCAtMTY1NCw3ICsyMDkzLDcgQEAgaW5kZXggMjUz ZTI1MS4uNmQ3M2ZjNSAxMDA2NDQKICBAYyByZXNvbHZlIHRoZSBzaXR1YXRpb24gb2YgdGhlc2Ug ZXZlbnR1YWxseQogIEBpdGVtIC10dWkKICBAY2luZGV4IEBjb2Rley0tdHVpfQotQEAgLTE5MTAx LDcgKzE5MTEzLDcgQEAgY29tbWFuZDoKK0BAIC0xOTE0NSw3ICsxOTE1NSw3IEBAIGNvbW1hbmQ6 CiAgQHRhYmxlIEBjb2RlCiAgQGtpbmRleCBzb3VyY2UKICBAY2luZGV4IGV4ZWN1dGUgY29tbWFu ZHMgZnJvbSBhIGZpbGUKQEAgLTE2NjMsMTkgKzIxMDIsNyBAQCBpbmRleCAyNTNlMjUxLi42ZDcz ZmM1IDEwMDY0NAogIEV4ZWN1dGUgdGhlIGNvbW1hbmQgZmlsZSBAdmFye2ZpbGVuYW1lfS4KICBA ZW5kIHRhYmxlCiAgCi1AQCAtMTkxMTgsNiArMTkxMzAsMTEgQEAgSWYgQGNvZGV7LXZ9LCBmb3Ig dmVyYm9zZSBtb2RlLCBpcyBnaXZlbiB0aGVuIEB2YWx1ZXtHREJOfSBkaXNwbGF5cwotIGVhY2gg Y29tbWFuZCBhcyBpdCBpcyBleGVjdXRlZC4gIFRoZSBvcHRpb24gbXVzdCBiZSBnaXZlbiBiZWZv cmUKLSBAdmFye2ZpbGVuYW1lfSwgYW5kIGlzIGludGVycHJldGVkIGFzIHBhcnQgb2YgdGhlIGZp bGVuYW1lIGFueXdoZXJlIGVsc2UuCi0gCi0rSWYgQHZhcntmaWxlbmFtZX0gZW5kcyBpbiBAc2Ft cHsucHl9LCBvciBpZiBAY29kZXstcH0sIGZvciBQeXRob24sIGlzCi0rZ2l2ZW4gdGhlbiBAdmFs dWV7R0RCTn0gZXZhbHVhdGVzIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBhcyBQeXRob24KLStj b2RlLiAgSWYgUHl0aG9uIHN1cHBvcnQgaXMgbm90IGNvbXBpbGVkIGluIHRvIEB2YWx1ZXtHREJO fSwgdGhlbiBhbgotK2Vycm9yIG9jY3Vycy4KLSsKLSBDb21tYW5kcyB0aGF0IHdvdWxkIGFzayBm b3IgY29uZmlybWF0aW9uIGlmIHVzZWQgaW50ZXJhY3RpdmVseSBwcm9jZWVkCi0gd2l0aG91dCBh c2tpbmcgd2hlbiB1c2VkIGluIGEgY29tbWFuZCBmaWxlLiAgTWFueSBAdmFsdWV7R0RCTn0gY29t bWFuZHMgdGhhdAotIG5vcm1hbGx5IHByaW50IG1lc3NhZ2VzIHRvIHNheSB3aGF0IHRoZXkgYXJl IGRvaW5nIG9taXQgdGhlIG1lc3NhZ2VzCi1AQCAtMTkzNzksOCArMTkzOTYsNiBAQCBjb250YWlu aW5nIEBjb2Rle2VuZH0uICBGb3IgZXhhbXBsZToKK0BAIC0xOTQyOCw4ICsxOTQzOCw2IEBAIGNv bnRhaW5pbmcgQGNvZGV7ZW5kfS4gIEZvciBleGFtcGxlOgogIAogIEBzbWFsbGV4YW1wbGUKICAo QHZhbHVle0dEQlB9KSBweXRob24KQEAgLTE2ODQsNyArMjExMSw3IEBAIGluZGV4IDI1M2UyNTEu LjZkNzNmYzUgMTAwNjQ0CiAgPnByaW50IDIzCiAgPmVuZAogIDIzCi1AQCAtMTkzOTMsNiArMTk0 MDgsMTQgQEAgaW4gYSBQeXRob24gc2NyaXB0LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCB1c2lu ZyBAY29kZXttYWludCBzZXQKK0BAIC0xOTQ0Miw2ICsxOTQ1MCwxNCBAQCBpbiBhIFB5dGhvbiBz Y3JpcHQuICBUaGlzIGNhbiBiZSBjb250cm9sbGVkIHVzaW5nIEBjb2Rle21haW50IHNldAogIHB5 dGhvbiBwcmludC1zdGFja306IGlmIEBjb2Rle29ufSwgdGhlIGRlZmF1bHQsIHRoZW4gUHl0aG9u IHN0YWNrCiAgcHJpbnRpbmcgaXMgZW5hYmxlZDsgaWYgQGNvZGV7b2ZmfSwgdGhlbiBQeXRob24g c3RhY2sgcHJpbnRpbmcgaXMKICBkaXNhYmxlZC4KQEAgLTE2OTksNyArMjEyNiw3IEBAIGluZGV4 IDI1M2UyNTEuLjZkNzNmYzUgMTAwNjQ0CiAgQGVuZCB0YWJsZQogIAogIEBub2RlIFB5dGhvbiBB UEkKLUBAIC0xOTQwMCw2ICsxOTQyMywxNCBAQCBkaXNhYmxlZC4KK0BAIC0xOTQ0OSw2ICsxOTQ2 NSwxNCBAQCBkaXNhYmxlZC4KICBAY2luZGV4IHB5dGhvbiBhcGkKICBAY2luZGV4IHByb2dyYW1t aW5nIGluIHB5dGhvbgogIApAQCAtMTcxNCw3ICsyMTQxLDcgQEAgaW5kZXggMjUzZTI1MS4uNmQ3 M2ZjNSAxMDA2NDQKICBAY2luZGV4IHB5dGhvbiBzdGRvdXQKICBAY2luZGV4IHB5dGhvbiBwYWdp bmF0aW9uCiAgQXQgc3RhcnR1cCwgQHZhbHVle0dEQk59IG92ZXJyaWRlcyBQeXRob24ncyBAY29k ZXtzeXMuc3Rkb3V0fSBhbmQKLUBAIC0xOTQxMiwxMyArMTk0NDMsMTcgQEAgc2l0dWF0aW9uLCBh IFB5dGhvbiBAY29kZXtLZXlib2FyZEludGVycnVwdH0gZXhjZXB0aW9uIGlzIHRocm93bi4KK0BA IC0xOTQ2MSwxMyArMTk0ODUsMTcgQEAgc2l0dWF0aW9uLCBhIFB5dGhvbiBAY29kZXtLZXlib2Fy ZEludGVycnVwdH0gZXhjZXB0aW9uIGlzIHRocm93bi4KICAqIEJhc2ljIFB5dGhvbjo6ICAgICAg ICAgICAgICAgIEJhc2ljIFB5dGhvbiBGdW5jdGlvbnMuCiAgKiBFeGNlcHRpb24gSGFuZGxpbmc6 OgogICogQXV0by1sb2FkaW5nOjogICAgICAgICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5n IFB5dGhvbiBjb2RlLgpAQCAtMTczMyw3ICsyMTYwLDcgQEAgaW5kZXggMjUzZTI1MS4uNmQ3M2Zj NSAxMDA2NDQKICAqIEZyYW1lcyBJbiBQeXRob246OiAgICAgICAgICAgIEFjZXNzaW5nIGluZmVy aW9yIHN0YWNrIGZyYW1lcyBmcm9tIFB5dGhvbi4KICAqIExhenkgU3RyaW5ncyBJbiBQeXRob246 OiAgICAgIFB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiBsYXp5IHN0cmluZ3MuCiAgQGVuZCBtZW51 Ci1AQCAtMTk0NDYsNiArMTk0ODEsMTIgQEAgY29tbWFuZCBhcyBoYXZpbmcgb3JpZ2luYXRlZCBm cm9tIHRoZSB1c2VyIGludm9raW5nIGl0IGludGVyYWN0aXZlbHkuCitAQCAtMTk0OTUsNiArMTk1 MjMsMTIgQEAgY29tbWFuZCBhcyBoYXZpbmcgb3JpZ2luYXRlZCBmcm9tIHRoZSB1c2VyIGludm9r aW5nIGl0IGludGVyYWN0aXZlbHkuCiAgSXQgbXVzdCBiZSBhIGJvb2xlYW4gdmFsdWUuICBJZiBv bWl0dGVkLCBpdCBkZWZhdWx0cyB0byBAY29kZXtGYWxzZX0uCiAgQGVuZCBkZWZ1bgogIApAQCAt MTc0Niw3ICsyMTczLDcgQEAgaW5kZXggMjUzZTI1MS4uNmQ3M2ZjNSAxMDA2NDQKICBAZmluZGV4 IGdkYi5wYXJhbWV0ZXIKICBAZGVmdW4gcGFyYW1ldGVyIHBhcmFtZXRlcgogIFJldHVybiB0aGUg dmFsdWUgb2YgYSBAdmFsdWV7R0RCTn0gcGFyYW1ldGVyLiAgQHZhcntwYXJhbWV0ZXJ9IGlzIGEK LUBAIC0xOTQ2Miw2ICsxOTUwMyw3IEBAIGEgUHl0aG9uIHZhbHVlIG9mIHRoZSBhcHByb3ByaWF0 ZSB0eXBlLCBhbmQgcmV0dXJuZWQuCitAQCAtMTk1MTEsNiArMTk1NDUsNyBAQCBhIFB5dGhvbiB2 YWx1ZSBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZSwgYW5kIHJldHVybmVkLgogIEBkZWZ1biBoaXN0 b3J5IG51bWJlcgogIFJldHVybiBhIHZhbHVlIGZyb20gQHZhbHVle0dEQk59J3MgdmFsdWUgaGlz dG9yeSAoQHB4cmVme1ZhbHVlCiAgSGlzdG9yeX0pLiAgQHZhcntudW1iZXJ9IGluZGljYXRlcyB3 aGljaCBoaXN0b3J5IGVsZW1lbnQgdG8gcmV0dXJuLgpAQCAtMTc1NCw3ICsyMTgxLDcgQEAgaW5k ZXggMjUzZTI1MS4uNmQ3M2ZjNSAxMDA2NDQKICBJZiBAdmFye251bWJlcn0gaXMgbmVnYXRpdmUs IHRoZW4gQHZhbHVle0dEQk59IHdpbGwgdGFrZSBpdHMgYWJzb2x1dGUgdmFsdWUKICBhbmQgY291 bnQgYmFja3dhcmQgZnJvbSB0aGUgbGFzdCBlbGVtZW50IChpLmUuLCB0aGUgbW9zdCByZWNlbnQg ZWxlbWVudCkgdG8KICBmaW5kIHRoZSB2YWx1ZSB0byByZXR1cm4uICBJZiBAdmFye251bWJlcn0g aXMgemVybywgdGhlbiBAdmFsdWV7R0RCTn0gd2lsbAotQEAgLTE5NDg2LDYgKzE5NTI4LDIxIEBA IGNvbXB1dGUgdmFsdWVzLCBmb3IgZXhhbXBsZSwgaXQgaXMgdGhlIG9ubHkgd2F5IHRvIGdldCB0 aGUgdmFsdWUgb2YgYQorQEAgLTE5NTM1LDYgKzE5NTcwLDIxIEBAIGNvbXB1dGUgdmFsdWVzLCBm b3IgZXhhbXBsZSwgaXQgaXMgdGhlIG9ubHkgd2F5IHRvIGdldCB0aGUgdmFsdWUgb2YgYQogIGNv bnZlbmllbmNlIHZhcmlhYmxlIChAcHhyZWZ7Q29udmVuaWVuY2UgVmFyc30pIGFzIGEgQGNvZGV7 Z2RiLlZhbHVlfS4KICBAZW5kIGRlZnVuCiAgCkBAIC0xNzc2LDcgKzIyMDMsNyBAQCBpbmRleCAy NTNlMjUxLi42ZDczZmM1IDEwMDY0NAogIEBmaW5kZXggZ2RiLndyaXRlCiAgQGRlZnVuIHdyaXRl IHN0cmluZwogIFByaW50IGEgc3RyaW5nIHRvIEB2YWx1ZXtHREJOfSdzIHBhZ2luYXRlZCBzdGFu ZGFyZCBvdXRwdXQgc3RyZWFtLgotQEAgLTE5NTAwLDYgKzE5NTU3LDExIEBAIEZsdXNoIEB2YWx1 ZXtHREJOfSdzIHBhZ2luYXRlZCBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtLiAgRmx1c2hpbmcKK0BA IC0xOTU0OSw2ICsxOTU5OSwxMSBAQCBGbHVzaCBAdmFsdWV7R0RCTn0ncyBwYWdpbmF0ZWQgc3Rh bmRhcmQgb3V0cHV0IHN0cmVhbS4gIEZsdXNoaW5nCiAgZnVuY3Rpb24uCiAgQGVuZCBkZWZ1bgog IApAQCAtMTc4OCw3ICsyMjE1LDcgQEAgaW5kZXggMjUzZTI1MS4uNmQ3M2ZjNSAxMDA2NDQKICBA bm9kZSBFeGNlcHRpb24gSGFuZGxpbmcKICBAc3Vic3Vic2VjdGlvbiBFeGNlcHRpb24gSGFuZGxp bmcKICBAY2luZGV4IHB5dGhvbiBleGNlcHRpb25zCi1AQCAtMTk3MzgsNiArMTk4MDAsOSBAQCBt b2R1bGU6CitAQCAtMTk3ODcsNiArMTk4NDIsOSBAQCBtb2R1bGU6CiAgVGhpcyBmdW5jdGlvbiBs b29rcyB1cCBhIHR5cGUgYnkgbmFtZS4gIEB2YXJ7bmFtZX0gaXMgdGhlIG5hbWUgb2YgdGhlCiAg dHlwZSB0byBsb29rIHVwLiAgSXQgbXVzdCBiZSBhIHN0cmluZy4KICAKQEAgLTE3OTgsNyArMjIy NSw3IEBAIGluZGV4IDI1M2UyNTEuLjZkNzNmYzUgMTAwNjQ0CiAgT3JkaW5hcmlseSwgdGhpcyBm dW5jdGlvbiB3aWxsIHJldHVybiBhbiBpbnN0YW5jZSBvZiBAY29kZXtnZGIuVHlwZX0uCiAgSWYg dGhlIG5hbWVkIHR5cGUgY2Fubm90IGJlIGZvdW5kLCBpdCB3aWxsIHRocm93IGFuIGV4Y2VwdGlv bi4KICBAZW5kIGRlZnVuCi1AQCAtMTk4NjAsNyArMTk5MjUsNyBAQCBJZiB0aGUgdHlwZSBkb2Vz IG5vdCBoYXZlIGEgdGFyZ2V0LCB0aGlzIG1ldGhvZCB3aWxsIHRocm93IGFuCitAQCAtMTk5MDks NyArMTk5NjcsNyBAQCBJZiB0aGUgdHlwZSBkb2VzIG5vdCBoYXZlIGEgdGFyZ2V0LCB0aGlzIG1l dGhvZCB3aWxsIHRocm93IGFuCiAgZXhjZXB0aW9uLgogIEBlbmQgZGVmbWV0aG9kCiAgCkBAIC0x ODA3LDcgKzIyMzQsNyBAQCBpbmRleCAyNTNlMjUxLi42ZDczZmM1IDEwMDY0NAogIElmIHRoaXMg QGNvZGV7Z2RiLlR5cGV9IGlzIGFuIGluc3RhbnRpYXRpb24gb2YgYSB0ZW1wbGF0ZSwgdGhpcyB3 aWxsCiAgcmV0dXJuIGEgbmV3IEBjb2Rle2dkYi5UeXBlfSB3aGljaCByZXByZXNlbnRzIHRoZSB0 eXBlIG9mIHRoZQogIEB2YXJ7bn10aCB0ZW1wbGF0ZSBhcmd1bWVudC4KLUBAIC0xOTg2OCw3ICsx OTkzMyw4IEBAIHJldHVybiBhIG5ldyBAY29kZXtnZGIuVHlwZX0gd2hpY2ggcmVwcmVzZW50cyB0 aGUgdHlwZSBvZiB0aGUKK0BAIC0xOTkxNyw3ICsxOTk3NSw4IEBAIHJldHVybiBhIG5ldyBAY29k ZXtnZGIuVHlwZX0gd2hpY2ggcmVwcmVzZW50cyB0aGUgdHlwZSBvZiB0aGUKICBJZiB0aGlzIEBj b2Rle2dkYi5UeXBlfSBpcyBub3QgYSB0ZW1wbGF0ZSB0eXBlLCB0aGlzIHdpbGwgdGhyb3cgYW4K ICBleGNlcHRpb24uICBPcmRpbmFyaWx5LCBvbmx5IENAdHsrK30gY29kZSB3aWxsIGhhdmUgdGVt cGxhdGUgdHlwZXMuCiAgCkBAIC0xODE3LDcgKzIyNDQsNyBAQCBpbmRleCAyNTNlMjUxLi42ZDcz ZmM1IDEwMDY0NAogIEBlbmQgZGVmbWV0aG9kCiAgQGVuZCB0YWJsZQogIAotQEAgLTIwMjIyLDYg KzIwMjg4LDEyMSBAQCBpbXBvcnQgZ2RiLmxpYnN0ZGN4eC52NgorQEAgLTIwMjcxLDYgKzIwMzMw LDEyMSBAQCBpbXBvcnQgZ2RiLmxpYnN0ZGN4eC52NgogIGdkYi5saWJzdGRjeHgudjYucmVnaXN0 ZXJfcHJpbnRlcnMgKGdkYi5jdXJyZW50X29iamZpbGUgKCkpCiAgQGVuZCBzbWFsbGV4YW1wbGUK ICAKQEAgLTE5MzksNyArMjM2Niw3IEBAIGluZGV4IDI1M2UyNTEuLjZkNzNmYzUgMTAwNjQ0CiAg QG5vZGUgQ29tbWFuZHMgSW4gUHl0aG9uCiAgQHN1YnN1YnNlY3Rpb24gQ29tbWFuZHMgSW4gUHl0 aG9uCiAgCi1AQCAtMjA0NzQsNiArMjA2NTUsMTM1IEBAIHJlZ2lzdHJhdGlvbiBvZiB0aGUgY29t bWFuZCB3aXRoIEB2YWx1ZXtHREJOfS4gIERlcGVuZGluZyBvbiBob3cgdGhlCitAQCAtMjA1MjMs NiArMjA2OTcsMTM1IEBAIHJlZ2lzdHJhdGlvbiBvZiB0aGUgY29tbWFuZCB3aXRoIEB2YWx1ZXtH REJOfS4gIERlcGVuZGluZyBvbiBob3cgdGhlCiAgUHl0aG9uIGNvZGUgaXMgcmVhZCBpbnRvIEB2 YWx1ZXtHREJOfSwgeW91IG1heSBuZWVkIHRvIGltcG9ydCB0aGUKICBAY29kZXtnZGJ9IG1vZHVs ZSBleHBsaWNpdGx5LgogIApAQCAtMjA3NSw3ICsyNTAyLDcgQEAgaW5kZXggMjUzZTI1MS4uNmQ3 M2ZjNSAxMDA2NDQKICBAbm9kZSBGdW5jdGlvbnMgSW4gUHl0aG9uCiAgQHN1YnN1YnNlY3Rpb24g V3JpdGluZyBuZXcgY29udmVuaWVuY2UgZnVuY3Rpb25zCiAgCi1AQCAtMjA1NzgsNiArMjA4ODgs ODIgQEAgd2hpY2ggaXMgdXNlZCB0byBmb3JtYXQgdGhlIHZhbHVlLiAgQHhyZWZ7UHJldHR5IFBy aW50aW5nfSwgZm9yIG1vcmUKK0BAIC0yMDYyNyw2ICsyMDkzMCw4MiBAQCB3aGljaCBpcyB1c2Vk IHRvIGZvcm1hdCB0aGUgdmFsdWUuICBAeHJlZntQcmV0dHkgUHJpbnRpbmd9LCBmb3IgbW9yZQog IGluZm9ybWF0aW9uLgogIEBlbmQgZGVmaXZhcgogIApAQCAtMjE1OCw3ICsyNTg1LDcgQEAgaW5k ZXggMjUzZTI1MS4uNmQ3M2ZjNSAxMDA2NDQKICBAbm9kZSBGcmFtZXMgSW4gUHl0aG9uCiAgQHN1 YnN1YnNlY3Rpb24gQWNlc3NpbmcgaW5mZXJpb3Igc3RhY2sgZnJhbWVzIGZyb20gUHl0aG9uLgog IAotQEAgLTIwNjQyLDYgKzIxMDI4LDE0IEBAIGZ1bmN0aW9uIHRvIGEgc3RyaW5nLgorQEAgLTIw NjkxLDYgKzIxMDcwLDE0IEBAIGZ1bmN0aW9uIHRvIGEgc3RyaW5nLgogIFJldHVybnMgdGhlIGZy YW1lJ3MgcmVzdW1lIGFkZHJlc3MuCiAgQGVuZCBkZWZtZXRob2QKICAKQEAgLTIxNzMsNyArMjYw MCw3IEBAIGluZGV4IDI1M2UyNTEuLjZkNzNmYzUgMTAwNjQ0CiAgQGRlZm1ldGhvZCBGcmFtZSBv bGRlcgogIFJldHVybiB0aGUgZnJhbWUgdGhhdCBjYWxsZWQgdGhpcyBmcmFtZS4KICBAZW5kIGRl Zm1ldGhvZAotQEAgLTIwNjUwLDEwICsyMTA0NCwxOCBAQCBSZXR1cm4gdGhlIGZyYW1lIHRoYXQg Y2FsbGVkIHRoaXMgZnJhbWUuCitAQCAtMjA2OTksMTAgKzIxMDg2LDE4IEBAIFJldHVybiB0aGUg ZnJhbWUgdGhhdCBjYWxsZWQgdGhpcyBmcmFtZS4KICBSZXR1cm4gdGhlIGZyYW1lIGNhbGxlZCBi eSB0aGlzIGZyYW1lLgogIEBlbmQgZGVmbWV0aG9kCiAgCkBAIC0yMzY1LDEwICsyNzkyLDEwIEBA IGluZGV4IDk5MTAwZDcuLjU5MTUyNDkgMTAwNjQ0CiAgICAgICAgaWYgKGZkZV90YWJsZSA9PSBO VUxMKQogIAljb250aW51ZTsKIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYyZXhwci5jIGIvZ2RiL2R3 YXJmMmV4cHIuYwotaW5kZXggNWUyN2QzOC4uNjI4YmE4OCAxMDA2NDQKK2luZGV4IGVkMjFlZGYu LjFiMTBjYjcgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYyZXhwci5jCiArKysgYi9nZGIvZHdhcmYy ZXhwci5jCi1AQCAtODQ4LDYgKzg0OCwxMyBAQCBleGVjdXRlX3N0YWNrX29wIChzdHJ1Y3QgZHdh cmZfZXhwcl9jb250ZXh0ICpjdHgsCitAQCAtODY4LDYgKzg2OCwxMyBAQCBleGVjdXRlX3N0YWNr X29wIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCiAgCSAgY3R4LT5pbml0aWFsaXpl ZCA9IDA7CiAgCSAgZ290byBub19wdXNoOwogIApAQCAtMjcxOCwxOSArMzE0NSwyMiBAQCBpbmRl eCBmYTBiZDExLi5mZGVhMmI0IDEwMDY0NAogIAogICNlbmRpZiAvKiBkd2FyZjJsb2MuaCAqLwog ZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJyZWFkLmMgYi9nZGIvZHdhcmYycmVhZC5jCi1pbmRleCAy NDM4NTljLi4yZmNjZWM1IDEwMDY0NAoraW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKIC0t LSBhL2dkYi9kd2FyZjJyZWFkLmMKICsrKyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBAIC00OCw2ICs0 OCw4IEBACitAQCAtNDgsNiArNDgsMTEgQEAKICAjaW5jbHVkZSAiZ2RiY21kLmgiCiAgI2luY2x1 ZGUgImJsb2NrLmgiCiAgI2luY2x1ZGUgImFkZHJtYXAuaCIKICsjaW5jbHVkZSAiYmxvY2suaCIK ICsjaW5jbHVkZSAiZi1sYW5nLmgiCisrI2luY2x1ZGUgInR5cGVwcmludC5oIgorKyNpbmNsdWRl ICJqdi1sYW5nLmgiCisrI2luY2x1ZGUgInZlYy5oIgogIAogICNpbmNsdWRlIDxmY250bC5oPgog ICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtOTYsNyArOTgsNyBAQCB0eXBlZGVmIHN0cnVj dCBwdWJuYW1lc19oZWFkZXIKK0BAIC05Niw3ICsxMDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBwdWJu YW1lc19oZWFkZXIKICBfUFVCTkFNRVNfSEVBREVSOwogICNkZWZpbmUgX0FDVFVBTF9QVUJOQU1F U19IRUFERVJfU0laRSAxMwogIApAQCAtMjczOSw3ICszMTY5LDcgQEAgaW5kZXggMjQzODU5Yy4u MmZjY2VjNSAxMDA2NDQKICAgICBCZWNhdXNlIG9mIGFsaWdubWVudCBjb25zdHJhaW50cywgdGhp cyBzdHJ1Y3R1cmUgaGFzIHBhZGRpbmcgYW5kIGNhbm5vdAogICAgIGJlIG1hcHBlZCBkaXJlY3Rs eSBvbnRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIC5kZWJ1Z19pbmZvIHNlY3Rpb24uICAqLwogIHR5 cGVkZWYgc3RydWN0IGFyYW5nZXNfaGVhZGVyCi1AQCAtMTUzLDcgKzE1NSwxMCBAQCBzdHJ1Y3Qg ZHdhcmYyX3NlY3Rpb25faW5mbworQEAgLTE1Myw3ICsxNTgsMTAgQEAgc3RydWN0IGR3YXJmMl9z ZWN0aW9uX2luZm8KICAgIGFzZWN0aW9uICphc2VjdGlvbjsKICAgIGdkYl9ieXRlICpidWZmZXI7 CiAgICBiZmRfc2l6ZV90eXBlIHNpemU7CkBAIC0yNzUxLDcgKzMxODEsNyBAQCBpbmRleCAyNDM4 NTljLi4yZmNjZWM1IDEwMDY0NAogIH07CiAgCiAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZQot QEAgLTMzMyw2ICszMzgsMTkgQEAgc3RydWN0IGR3YXJmMl9jdQorQEAgLTMzMyw2ICszNDEsMTkg QEAgc3RydWN0IGR3YXJmMl9jdQogICAgICAgRElFcyBmb3IgbmFtZXNwYWNlcywgd2UgZG9uJ3Qg bmVlZCB0byB0cnkgdG8gaW5mZXIgdGhlbQogICAgICAgZnJvbSBtYW5nbGVkIG5hbWVzLiAgKi8K ICAgIHVuc2lnbmVkIGludCBoYXNfbmFtZXNwYWNlX2luZm8gOiAxOwpAQCAtMjc3MSwxNyArMzIw MSw0MSBAQCBpbmRleCAyNDM4NTljLi4yZmNjZWM1IDEwMDY0NAogIH07CiAgCiAgLyogUGVyc2lz dGVudCBkYXRhIGhlbGQgZm9yIGEgY29tcGlsYXRpb24gdW5pdCwgZXZlbiB3aGVuIG5vdAotQEAg LTc4OCw2ICs4MDYsOSBAQCBzdGF0aWMgdm9pZCBzY2FuX3BhcnRpYWxfc3ltYm9scyAoc3RydWN0 IHBhcnRpYWxfZGllX2luZm8gKiwKK0BAIC00ODcsOCArNTA4LDcgQEAgc3RydWN0IHBhcnRpYWxf ZGllX2luZm8KKyAgICAgdW5zaWduZWQgaW50IGhhc19ieXRlX3NpemUgOiAxOworIAorICAgICAv KiBUaGUgbmFtZSBvZiB0aGlzIERJRS4gIE5vcm1hbGx5IHRoZSB2YWx1ZSBvZiBEV19BVF9uYW1l LCBidXQKKy0gICAgICAgc29tZXRpbWVzIERXX1RBR19NSVBTX2xpbmthZ2VfbmFtZSBvciBhIHN0 cmluZyBjb21wdXRlZCBpbiBzb21lCistICAgICAgIG90aGVyIGZhc2hpb24uICAqLworKyAgICAg ICBzb21ldGltZXMgYSBkZWZhdWx0IG5hbWUgZm9yIHVubmFtZWQgRElFcy4gICovCisgICAgIGNo YXIgKm5hbWU7CisgCisgICAgIC8qIFRoZSBzY29wZSB0byBwcmVwZW5kIHRvIG91ciBjaGlsZHJl bi4gIFRoaXMgaXMgZ2VuZXJhbGx5CitAQCAtNjc3LDYgKzY5NywxMSBAQCBzdHJ1Y3QgZmllbGRf aW5mbworICAgICBpbnQgbmZuZmllbGRzOworICAgfTsKKyAKKysvKiBBIHZlY3RvciB1c2VkIGR1 cmluZyBsaW5rYWdlIG5hbWUgZ2VuZXJhdGlvbi4gICovCisrdHlwZWRlZiBzdHJ1Y3QgZGllX2lu Zm8gKmRpZV9pbmZvX3A7CisrREVGX1ZFQ19QIChkaWVfaW5mb19wKTsKKytzdGF0aWMgVkVDKGRp ZV9pbmZvX3ApICpkaWVfbGlzdDsKKysKKyAvKiBPbmUgaXRlbSBvbiB0aGUgcXVldWUgb2YgY29t cGlsYXRpb24gdW5pdHMgdG8gcmVhZCBpbiBmdWxsIHN5bWJvbHMKKyAgICBmb3IuICAqLworIHN0 cnVjdCBkd2FyZjJfcXVldWVfaXRlbQorQEAgLTc4OCw3ICs4MTMsMTAgQEAgc3RhdGljIHZvaWQg c2Nhbl9wYXJ0aWFsX3N5bWJvbHMgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICosCiAgc3RhdGlj IHZvaWQgYWRkX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqLAogIAkJ CQlzdHJ1Y3QgZHdhcmYyX2N1ICopOwogIAorLXN0YXRpYyBpbnQgcGRpX25lZWRzX25hbWVzcGFj ZSAoZW51bSBkd2FyZl90YWcgdGFnKTsKICtzdGF0aWMgZ2RiX2J5dGUgKnJlYWRfY29tcF91bml0 X2hlYWQgKHN0cnVjdCBjb21wX3VuaXRfaGVhZCAqLCBnZGJfYnl0ZSAqLAogKwkJCQkgICAgICBi ZmQgKik7CiArCi0gc3RhdGljIGludCBwZGlfbmVlZHNfbmFtZXNwYWNlIChlbnVtIGR3YXJmX3Rh ZyB0YWcpOworK3N0YXRpYyBpbnQgZGllX25lZWRzX25hbWVzcGFjZSAoc3RydWN0IGRpZV9pbmZv ICosIHN0cnVjdCBkd2FyZjJfY3UgKik7CiAgCiAgc3RhdGljIHZvaWQgYWRkX3BhcnRpYWxfbmFt ZXNwYWNlIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGRpLAotQEAgLTgxMyw2ICs4MzQsMTAg QEAgc3RhdGljIHZvaWQgZHdhcmYyX3BzeW10YWJfdG9fc3ltdGFiIChzdHJ1Y3QgcGFydGlhbF9z eW10YWIgKik7CisgCQkJCSAgIENPUkVfQUREUiAqbG93cGMsIENPUkVfQUREUiAqaGlnaHBjLAor QEAgLTgxMyw2ICs4NDEsMTAgQEAgc3RhdGljIHZvaWQgZHdhcmYyX3BzeW10YWJfdG9fc3ltdGFi IChzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKik7CiAgCiAgc3RhdGljIHZvaWQgcHN5bXRhYl90b19z eW10YWJfMSAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICopOwogIApAQCAtMjc5Miw3ICszMjQ2LDMy IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgc3RhdGljIHZvaWQgZHdhcmYyX3Jl YWRfYWJicmV2cyAoYmZkICphYmZkLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7CiAgCiAgc3RhdGlj IHZvaWQgZHdhcmYyX2ZyZWVfYWJicmV2X3RhYmxlICh2b2lkICopOwotQEAgLTk5NSw2ICsxMDIw LDE1IEBAIHN0YXRpYyB2b2lkIHJlYWRfbW9kdWxlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpOworQEAgLTk0MCw2ICs5NzIsMTEgQEAgc3RhdGljIHN0cnVjdCB0 eXBlICp0YWdfdHlwZV90b190eXBlIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IGR3YXJmMl9j dSAqKTsKKyAKKyBzdGF0aWMgc3RydWN0IHR5cGUgKnJlYWRfdHlwZV9kaWUgKHN0cnVjdCBkaWVf aW5mbyAqLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOworIAorK3N0YXRpYyBjaGFyICpwaHlzbmFtZV9w cmVmaXggKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOworKworK3N0 YXRpYyB2b2lkIHBoeXNuYW1lX3ByZWZpeF8xIChzdHJ1Y3QgdWlfZmlsZSAqLCBzdHJ1Y3QgZGll X2luZm8gKiwKKysJCQkgICAgICAgc3RydWN0IGR3YXJmMl9jdSAqKTsKKysKKyBzdGF0aWMgY2hh ciAqZGV0ZXJtaW5lX3ByZWZpeCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKik7CisgCisgc3RhdGljIGNoYXIgKnR5cGVuYW1lX2NvbmNhdCAoc3RydWN0IG9ic3RhY2sg KiwKK0BAIC05ODQsMTcgKzEwMjEsMjUgQEAgc3RhdGljIHZvaWQgZHdhcmYyX2F0dGFjaF9mbl9m aWVsZHNfdG9fdHlwZSAoc3RydWN0IGZpZWxkX2luZm8gKiwKKyAKKyBzdGF0aWMgdm9pZCBwcm9j ZXNzX3N0cnVjdHVyZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCBkd2FyZjJfY3Ug Kik7CisgCistc3RhdGljIGNvbnN0IGNoYXIgKmRldGVybWluZV9jbGFzc19uYW1lIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwKKy0JCQkJCSBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7CistCisgc3RhdGlj IHZvaWQgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgZHdhcmYy X2N1ICopOworIAorIHN0YXRpYyB2b2lkIHJlYWRfbmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqKTsKKyAKKytzdGF0aWMgdm9pZCByZWFkX2ltcG9ydF9z dGF0ZW1lbnQgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOworKwor IHN0YXRpYyB2b2lkIHJlYWRfbW9kdWxlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpOwogIAogIHN0YXRpYyB2b2lkIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKik7CiAgCkBAIC0yODA4LDE3ICsz Mjg3LDE5IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgc3RhdGljIGNvbnN0IGNo YXIgKm5hbWVzcGFjZV9uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAJCQkJICAgaW50ICpp c19hbm9ueW1vdXMsIHN0cnVjdCBkd2FyZjJfY3UgKik7CiAgCi1AQCAtMTAzMCw2ICsxMDY0LDkg QEAgc3RhdGljIHZvaWQgcHJvY2Vzc19kaWUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgZHdh cmYyX2N1ICopOworQEAgLTEwMjgsNyArMTA3MywxMCBAQCBzdGF0aWMgZ2RiX2J5dGUgKnJlYWRf ZnVsbF9kaWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFkZXIsCiAgCi0gc3Rh dGljIGNoYXIgKmR3YXJmMl9saW5rYWdlX25hbWUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICopOworIHN0YXRpYyB2b2lkIHByb2Nlc3NfZGllIChzdHJ1Y3QgZGllX2luZm8g Kiwgc3RydWN0IGR3YXJmMl9jdSAqKTsKICAKKy1zdGF0aWMgY2hhciAqZHdhcmYyX2xpbmthZ2Vf bmFtZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCBkd2FyZjJfY3UgKik7Cisrc3RhdGljIGNo YXIgKmR3YXJmMl9waHlzbmFtZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCBkd2FyZjJfY3Ug Kik7CisrCiArc3RhdGljIGNoYXIgKmZvcnRyYW5fbW9kdWxlX2xpbmthZ2VfbmFtZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsCiArCQkJCQkgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKLSsKKyAKICBz dGF0aWMgY2hhciAqZHdhcmYyX2Nhbm9uaWNhbGl6ZV9uYW1lIChjaGFyICosIHN0cnVjdCBkd2Fy ZjJfY3UgKiwKICAJCQkJICAgICAgIHN0cnVjdCBvYnN0YWNrICopOwotIAotQEAgLTExNDQsNiAr MTE4MSw5IEBAIHN0YXRpYyB2b2lkIGFnZV9jYWNoZWRfY29tcF91bml0cyAodm9pZCk7CitAQCAt MTE0NCw2ICsxMTkyLDkgQEAgc3RhdGljIHZvaWQgYWdlX2NhY2hlZF9jb21wX3VuaXRzICh2b2lk KTsKICAKICBzdGF0aWMgdm9pZCBmcmVlX29uZV9jYWNoZWRfY29tcF91bml0ICh2b2lkICopOwog IApAQCAtMjgyOCw3ICszMzA5LDcgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQKICBz dGF0aWMgc3RydWN0IHR5cGUgKnNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVj dCB0eXBlICosCiAgCQkJCSAgc3RydWN0IGR3YXJmMl9jdSAqKTsKICAKLUBAIC0xMTYzLDIyICsx MjAzLDMxIEBAIHN0YXRpYyB2b2lkIGR3YXJmMl9jbGVhcl9tYXJrcyAoc3RydWN0IGR3YXJmMl9w ZXJfY3VfZGF0YSAqKTsKK0BAIC0xMTYzLDIyICsxMjE0LDMxIEBAIHN0YXRpYyB2b2lkIGR3YXJm Ml9jbGVhcl9tYXJrcyAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKTsKICAKICBzdGF0aWMg c3RydWN0IHR5cGUgKmdldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KTsKICAKQEAgLTI4NjksNyArMzM1MCw3IEBAIGluZGV4IDI0Mzg1OWMuLjJm Y2NlYzUgMTAwNjQ0CiAgfQogIAogIC8qIFdoZW4gbG9hZGluZyBzZWN0aW9ucywgd2UgY2FuIGVp dGhlciBsb29rIGZvciAiLjxuYW1lPiIsIG9yIGZvcgotQEAgLTEyNzEsMTAgKzEzMjAsMTMgQEAg ZHdhcmYyX2xvY2F0ZV9zZWN0aW9ucyAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjdHAsIHZvaWQg Kmlnbm9yZV9wdHIpCitAQCAtMTI3MSwxMCArMTMzMSwxMyBAQCBkd2FyZjJfbG9jYXRlX3NlY3Rp b25zIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0cCwgdm9pZCAqaWdub3JlX3B0cikKICB9CiAg CiAgLyogRGVjb21wcmVzcyBhIHNlY3Rpb24gdGhhdCB3YXMgY29tcHJlc3NlZCB1c2luZyB6bGli LiAgU3RvcmUgdGhlCkBAIC0yODg1LDcgKzMzNjYsNyBAQCBpbmRleCAyNDM4NTljLi4yZmNjZWM1 IDEwMDY0NAogICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfYnl0ZSAqKm91dGJ1ZiwgYmZk X3NpemVfdHlwZSAqb3V0c2l6ZSkKICB7CiAgICBiZmQgKmFiZmQgPSBvYmpmaWxlLT5vYmZkOwot QEAgLTEyOTEsNiArMTM0Myw3IEBAIHpsaWJfZGVjb21wcmVzc19zZWN0aW9uIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgYXNlY3Rpb24gKnNlY3RwLAorQEAgLTEyOTEsNiArMTM1NCw3IEBAIHps aWJfZGVjb21wcmVzc19zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgYXNlY3Rpb24g KnNlY3RwLAogICAgel9zdHJlYW0gc3RybTsKICAgIGludCByYzsKICAgIGludCBoZWFkZXJfc2l6 ZSA9IDEyOwpAQCAtMjg5Myw3ICszMzc0LDcgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2 NDQKICAKICAgIGlmIChiZmRfc2VlayAoYWJmZCwgc2VjdHAtPmZpbGVwb3MsIFNFRUtfU0VUKSAh PSAwCiAgICAgICAgfHwgYmZkX2JyZWFkIChjb21wcmVzc2VkX2J1ZmZlciwgY29tcHJlc3NlZF9z aXplLCBhYmZkKSAhPSBjb21wcmVzc2VkX3NpemUpCi1AQCAtMTMyMCw4ICsxMzczLDEzIEBAIHps aWJfZGVjb21wcmVzc19zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgYXNlY3Rpb24g KnNlY3RwLAorQEAgLTEzMjAsOCArMTM4NCwxMyBAQCB6bGliX2RlY29tcHJlc3Nfc2VjdGlvbiAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCwKICAgIHN0cm0uYXZhaWxf aW4gPSBjb21wcmVzc2VkX3NpemUgLSBoZWFkZXJfc2l6ZTsKICAgIHN0cm0ubmV4dF9pbiA9IChC eXRlZiopIGNvbXByZXNzZWRfYnVmZmVyICsgaGVhZGVyX3NpemU7CiAgICBzdHJtLmF2YWlsX291 dCA9IHVuY29tcHJlc3NlZF9zaXplOwpAQCAtMjkwOSw3ICszMzkwLDcgQEAgaW5kZXggMjQzODU5 Yy4uMmZjY2VjNSAxMDA2NDQKICAgIHJjID0gaW5mbGF0ZUluaXQgKCZzdHJtKTsKICAgIHdoaWxl IChzdHJtLmF2YWlsX2luID4gMCkKICAgICAgewotQEAgLTEzNDIsMjYgKzE0MDAsMTc2IEBAIHps aWJfZGVjb21wcmVzc19zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgYXNlY3Rpb24g KnNlY3RwLAorQEAgLTEzNDIsMjYgKzE0MTEsMTc2IEBAIHpsaWJfZGVjb21wcmVzc19zZWN0aW9u IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgYXNlY3Rpb24gKnNlY3RwLAogICAgICBlcnJvciAo XygiRHdhcmYgRXJyb3I6IGNvbmNsdWRpbmcgRFdBUkYgdW5jb21wcmVzc2lvbiBpbiAnJXMnOiAl ZCIpLAogICAgICAgICAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksIHJjKTsKICAKQEAgLTMw OTEsNyArMzU3Miw3IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgCiAgICBpZiAo aW5mby0+YXNlY3Rpb24gPT0gTlVMTCB8fCBpbmZvLT5zaXplID09IDApCiAgICAgIHJldHVybjsK LUBAIC0xMzc0LDcgKzE1ODIsNyBAQCBkd2FyZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmluZm8pCitAQCAtMTM3NCw3 ICsxNTkzLDcgQEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQogICAgICAgIC8qIFVwb24gZGVjb21w cmVzc2lvbiwgdXBkYXRlIHRoZSBidWZmZXIgYW5kIGl0cyBzaXplLiAgKi8KICAgICAgICBpZiAo c3RybmNtcCAoaGVhZGVyLCAiWkxJQiIsIHNpemVvZiAoaGVhZGVyKSkgPT0gMCkKICAgICAgICAg IHsKQEAgLTMxMDAsNyArMzU4MSw3IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAg CQkJCSAgICZpbmZvLT5zaXplKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQotQEAg LTEzOTcsNyArMTYwNSw3IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKK0BAIC0xMzk3LDcgKzE2 MTYsNyBAQCBkd2FyZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3Ry dWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmluZm8pCiAgCiAgICAgICAgaWYgKHJldGJ1ZiAhPSBN QVBfRkFJTEVEKQogIAl7CkBAIC0zMTA5LDcgKzM1OTAsNyBAQCBpbmRleCAyNDM4NTljLi4yZmNj ZWM1IDEwMDY0NAogIAkgIGluZm8tPmJ1ZmZlciA9IHJldGJ1ZiArIChzZWN0cC0+ZmlsZXBvcyAm IChwYWdlc2l6ZSAtIDEpKSA7CiAgCSAgcmV0dXJuOwogIAl9Ci1AQCAtMTQwNSw4ICsxNjEzLDE1 IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3Qg ZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKK0BAIC0xNDA1LDggKzE2MjQsMTUgQEAgZHdhcmYy X3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBkd2FyZjJfc2Vj dGlvbl9pbmZvICppbmZvKQogICNlbmRpZgogIAogICAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlIGFy ZSBhIG5vcm1hbCwgbm90LWNvbXByZXNzZWQgc2VjdGlvbi4gICovCkBAIC0zMTI3LDcgKzM2MDgs NyBAQCBpbmRleCAyNDM4NTljLi4yZmNjZWM1IDEwMDY0NAogIAogICAgLyogV2hlbiBkZWJ1Z2dp bmcgLm8gZmlsZXMsIHdlIG1heSBuZWVkIHRvIGFwcGx5IHJlbG9jYXRpb25zOyBzZWUKICAgICAg IGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDAyLTA0L21zZzAwMTM2Lmh0 bWwgLgotQEAgLTE0MTUsNiArMTYzMCw4IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKK0BAIC0x NDE1LDYgKzE2NDEsOCBAQCBkd2FyZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmluZm8pCiAgICByZXRidWYgPSBzeW1m aWxlX3JlbG9jYXRlX2RlYnVnX3NlY3Rpb24gKGFiZmQsIHNlY3RwLCBidWYpOwogICAgaWYgKHJl dGJ1ZiAhPSBOVUxMKQogICAgICB7CkBAIC0zMTM2LDcgKzM2MTcsNyBAQCBpbmRleCAyNDM4NTlj Li4yZmNjZWM1IDEwMDY0NAogICAgICAgIGluZm8tPmJ1ZmZlciA9IHJldGJ1ZjsKICAgICAgICBy ZXR1cm47CiAgICAgIH0KLUBAIC0xNDIzLDYgKzE2NDAsMTkgQEAgZHdhcmYyX3JlYWRfc2VjdGlv biAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpp bmZvKQorQEAgLTE0MjMsNiArMTY1MSwxOSBAQCBkd2FyZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmluZm8pCiAgICAg ICAgfHwgYmZkX2JyZWFkIChidWYsIGluZm8tPnNpemUsIGFiZmQpICE9IGluZm8tPnNpemUpCiAg ICAgIGVycm9yIChfKCJEd2FyZiBFcnJvcjogQ2FuJ3QgcmVhZCBEV0FSRiBkYXRhIGZyb20gJyVz JyIpLAogIAkgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7CkBAIC0zMTU2LDcgKzM2MzcsODAg QEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQKICB9CiAgCiAgLyogRmlsbCBpbiBTRUNU UCwgQlVGUCBhbmQgU0laRVAgd2l0aCBzZWN0aW9uIGluZm8sIGdpdmVuIE9CSkZJTEUgYW5kCi1A QCAtMjU0OCw2ICsyNzc4LDEzIEBAIGFkZF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxf ZGllX2luZm8gKnBkaSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMjM4OSwxMSArMjYzMCwx OCBAQCBwYXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpw ZGksCisgICAgICAgfHwgcGFyZW50LT50YWcgPT0gRFdfVEFHX3VuaW9uX3R5cGUKKyAgICAgICB8 fCBwYXJlbnQtPnRhZyA9PSBEV19UQUdfZW51bWVyYXRpb25fdHlwZSkKKyAgICAgeworKyAgICAg IGNoYXIgKnBhcmVudF9uYW1lID0gcGFyZW50LT5uYW1lOworKworKyAgICAgIC8qIEcrKyA0LjEg cHJvZHVjZWQgRFdfVEFHX25hbWVzcGFjZSB3aXRoIERXX0FUX25hbWUgIjo6Ii4gICovCisrICAg ICAgaWYgKHBhcmVudC0+dGFnID09IERXX1RBR19uYW1lc3BhY2UgJiYgcGFyZW50X25hbWUgIT0g TlVMTAorKyAgICAgICAgICAmJiBzdHJjbXAgKHBhcmVudF9uYW1lLCAiOjoiKSA9PSAwKQorKwlw YXJlbnRfbmFtZSA9IE5VTEw7CisrCisgICAgICAgaWYgKGdyYW5kcGFyZW50X3Njb3BlID09IE5V TEwpCistCXBhcmVudC0+c2NvcGUgPSBwYXJlbnQtPm5hbWU7CisrCXBhcmVudC0+c2NvcGUgPSBw YXJlbnRfbmFtZTsKKyAgICAgICBlbHNlCisgCXBhcmVudC0+c2NvcGUgPSB0eXBlbmFtZV9jb25j YXQgKCZjdS0+Y29tcF91bml0X29ic3RhY2ssIGdyYW5kcGFyZW50X3Njb3BlLAorLQkJCQkJIHBh cmVudC0+bmFtZSwgY3UpOworKwkJCQkJIHBhcmVudF9uYW1lLCBjdSk7CisgICAgIH0KKyAgIGVs c2UgaWYgKHBhcmVudC0+dGFnID09IERXX1RBR19lbnVtZXJhdG9yKQorICAgICAvKiBFbnVtZXJh dG9ycyBzaG91bGQgbm90IGdldCB0aGUgbmFtZSBvZiB0aGUgZW51bWVyYXRpb24gYXMgYSBwcmVm aXguICAqLworQEAgLTI0MDUsNyArMjY1Myw3IEBAIHBhcnRpYWxfZGllX3BhcmVudF9zY29wZSAo c3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwKKyAJIGlnbm9yaW5nIHRoZW0uICAqLworICAg ICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKyAJCSBfKCJ1bmhhbmRsZWQgY29u dGFpbmluZyBESUUgdGFnICVkIGZvciBESUUgYXQgJWQiKSwKKy0JCSBwYXJlbnQtPnRhZywgcGRp LT5vZmZzZXQpOworKwkJIHBhcmVudC0+dGFnLCByZWFsX3BkaS0+b2Zmc2V0KTsKKyAgICAgICBw YXJlbnQtPnNjb3BlID0gZ3JhbmRwYXJlbnRfc2NvcGU7CisgICAgIH0KKyAKK0BAIC0yNDIwLDEy ICsyNjY4LDIyIEBAIHBhcnRpYWxfZGllX2Z1bGxfbmFtZSAoc3RydWN0IHBhcnRpYWxfZGllX2lu Zm8gKnBkaSwKKyAJCSAgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyB7CisgICBjaGFyICpw YXJlbnRfc2NvcGU7CisrICBzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcmVhbF9wZGk7CisgCist ICBwYXJlbnRfc2NvcGUgPSBwYXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUgKHBkaSwgY3UpOworLSAg aWYgKHBhcmVudF9zY29wZSA9PSBOVUxMKQorLSAgICByZXR1cm4gTlVMTDsKKy0gIGVsc2UKKysg IC8qIFdlIG5lZWQgdG8gbG9vayBhdCBvdXIgcGFyZW50IERJRTsgaWYgd2UgaGF2ZSBhIERXX0FU X3NwZWNpZmljYXRpb24sCisrICAgICB0aGVuIHRoaXMgbWVhbnMgdGhlIHBhcmVudCBvZiB0aGUg c3BlY2lmaWNhdGlvbiBESUUuCisrICAgICBwYXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUgZG9lcyB0 aGlzIGxvb3AgYWxzbywgYnV0IHdlIGRvIGl0IGhlcmUKKysgICAgIHNpbmNlIHdlIG5lZWQgdG8g ZXhhbWluZSByZWFsX3BkaS0+cGFyZW50IG91cnNlbHZlcy4gICovCisrCisrICByZWFsX3BkaSA9 IHBkaTsKKysgIHdoaWxlIChyZWFsX3BkaS0+aGFzX3NwZWNpZmljYXRpb24pCisrICAgIHJlYWxf cGRpID0gZmluZF9wYXJ0aWFsX2RpZSAocmVhbF9wZGktPnNwZWNfb2Zmc2V0LCBjdSk7CisrCisr ICBwYXJlbnRfc2NvcGUgPSBwYXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUgKHJlYWxfcGRpLCBjdSk7 CisrICBpZiAocGFyZW50X3Njb3BlICE9IE5VTEwpCisgICAgIHJldHVybiB0eXBlbmFtZV9jb25j YXQgKE5VTEwsIHBhcmVudF9zY29wZSwgcGRpLT5uYW1lLCBjdSk7CisrCisrICByZXR1cm4gTlVM TDsKKyB9CisgCisgc3RhdGljIHZvaWQKK0BAIC0yNDQxLDEyICsyNjk5LDkgQEAgYWRkX3BhcnRp YWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGRpLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKKyAKKyAgIGJhc2VhZGRyID0gQU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0 cywgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOworIAorLSAgaWYgKHBkaV9uZWVkc19uYW1lc3Bh Y2UgKHBkaS0+dGFnKSkKKy0gICAgeworLSAgICAgIGFjdHVhbF9uYW1lID0gcGFydGlhbF9kaWVf ZnVsbF9uYW1lIChwZGksIGN1KTsKKy0gICAgICBpZiAoYWN0dWFsX25hbWUpCistCWJ1aWx0X2Fj dHVhbF9uYW1lID0gMTsKKy0gICAgfQorKyAgYWN0dWFsX25hbWUgPSBwYXJ0aWFsX2RpZV9mdWxs X25hbWUgKHBkaSwgY3UpOworKyAgaWYgKGFjdHVhbF9uYW1lKQorKyAgICBidWlsdF9hY3R1YWxf bmFtZSA9IDE7CisgCisgICBpZiAoYWN0dWFsX25hbWUgPT0gTlVMTCkKKyAgICAgYWN0dWFsX25h bWUgPSBwZGktPm5hbWU7CitAQCAtMjU0Myw2ICsyNzk4LDEzIEBAIGFkZF9wYXJ0aWFsX3N5bWJv bCAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAg CQkJICAgJm9iamZpbGUtPmdsb2JhbF9wc3ltYm9scywKICAJCQkgICAwLCAoQ09SRV9BRERSKSAw LCBjdS0+bGFuZ3VhZ2UsIG9iamZpbGUpOwogICAgICAgIGJyZWFrOwpAQCAtMzE3MCw3ICszNzI0 LDcwIEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgICAgIGNhc2UgRFdfVEFHX2Ns YXNzX3R5cGU6CiAgICAgIGNhc2UgRFdfVEFHX2ludGVyZmFjZV90eXBlOgogICAgICBjYXNlIERX X1RBR19zdHJ1Y3R1cmVfdHlwZToKLUBAIC0yNjYxLDEyICsyODk4LDEyIEBAIHN0YXRpYyB2b2lk CitAQCAtMjU4NiwzNCArMjg0OCwxNyBAQCBhZGRfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0 aWFsX2RpZV9pbmZvICpwZGksIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgICAgIGJyZWFrOwor ICAgICB9CisgCistICAvKiBDaGVjayB0byBzZWUgaWYgd2Ugc2hvdWxkIHNjYW4gdGhlIG5hbWUg Zm9yIHBvc3NpYmxlIG5hbWVzcGFjZQorLSAgICAgaW5mby4gIE9ubHkgZG8gdGhpcyBpZiB0aGlz IGlzIEMrKywgaWYgd2UgZG9uJ3QgaGF2ZSBuYW1lc3BhY2UKKy0gICAgIGRlYnVnZ2luZyBpbmZv IGluIHRoZSBmaWxlLCBpZiB0aGUgcHN5bSBpcyBvZiBhbiBhcHByb3ByaWF0ZSB0eXBlCistICAg ICAob3RoZXJ3aXNlIHdlJ2xsIGhhdmUgcHN5bSA9PSBOVUxMKSwgYW5kIGlmIHdlIGFjdHVhbGx5 IGhhZCBhCistICAgICBtYW5nbGVkIG5hbWUgdG8gYmVnaW4gd2l0aC4gICovCistCistICAvKiBG SVhNRSBkcm93LzIwMDQtMDItMjI6IFdoeSBkb24ndCB3ZSBkbyB0aGlzIGZvciBjbGFzc2VzLCBp LmUuIHRoZQorLSAgICAgY2FzZXMgd2hpY2ggZG8gbm90IHNldCBQU1lNIGFib3ZlPyAgKi8KKy0K Ky0gIGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMKKy0gICAgICAmJiBjdS0+aGFz X25hbWVzcGFjZV9pbmZvID09IDAKKy0gICAgICAmJiBwc3ltICE9IE5VTEwKKy0gICAgICAmJiBT WU1CT0xfQ1BMVVNfREVNQU5HTEVEX05BTUUgKHBzeW0pICE9IE5VTEwpCistICAgIGNwX2NoZWNr X3Bvc3NpYmxlX25hbWVzcGFjZV9zeW1ib2xzIChTWU1CT0xfQ1BMVVNfREVNQU5HTEVEX05BTUUg KHBzeW0pLAorLQkJCQkJIG9iamZpbGUpOworLQorICAgaWYgKGJ1aWx0X2FjdHVhbF9uYW1lKQor ICAgICB4ZnJlZSAoYWN0dWFsX25hbWUpOworIH0KKyAKKy0vKiBEZXRlcm1pbmUgd2hldGhlciBh IGRpZSBvZiB0eXBlIFRBRyBsaXZpbmcgaW4gYSBDKysgY2xhc3Mgb3IKKy0gICBuYW1lc3BhY2Ug bmVlZHMgdG8gaGF2ZSB0aGUgbmFtZSBvZiB0aGUgc2NvcGUgcHJlcGVuZGVkIHRvIHRoZQorLSAg IG5hbWUgbGlzdGVkIGluIHRoZSBkaWUuICAqLworKy8qIERldGVybWluZSB3aGV0aGVyIERJRSBu ZWVkcyB0byBoYXZlIHRoZSBuYW1lIG9mIHRoZSBzY29wZSBwcmVwZW5kZWQKKysgICB0byB0aGUg bmFtZSBsaXN0ZWQgaW4gdGhlIGRpZS4gICovCisgCisgc3RhdGljIGludAorLXBkaV9uZWVkc19u YW1lc3BhY2UgKGVudW0gZHdhcmZfdGFnIHRhZykKKytkaWVfbmVlZHNfbmFtZXNwYWNlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgeworLSAgc3dpdGNoICh0 YWcpCisrICBzd2l0Y2ggKGRpZS0+dGFnKQorICAgICB7CisgICAgIGNhc2UgRFdfVEFHX25hbWVz cGFjZToKKyAgICAgY2FzZSBEV19UQUdfdHlwZWRlZjoKK0BAIC0yNjIzLDcgKzI4NjgsMjMgQEAg cGRpX25lZWRzX25hbWVzcGFjZSAoZW51bSBkd2FyZl90YWcgdGFnKQorICAgICBjYXNlIERXX1RB R191bmlvbl90eXBlOgorICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgorICAgICBj YXNlIERXX1RBR19lbnVtZXJhdG9yOgorKyAgICBjYXNlIERXX1RBR19zdWJwcm9ncmFtOgorKyAg ICBjYXNlIERXX1RBR19tZW1iZXI6CisgICAgICAgcmV0dXJuIDE7CisrCisrICAgIGNhc2UgRFdf VEFHX3ZhcmlhYmxlOgorKyAgICAgIHsKKysJc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKysJYXR0 ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX3NwZWNpZmljYXRpb24sIGN1KTsKKysJaWYgKGF0 dHIpCisrCSAgcmV0dXJuIDE7CisrCWF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9leHRl cm5hbCwgY3UpOworKwlpZiAoYXR0ciA9PSBOVUxMICYmIGRpZS0+cGFyZW50LT50YWcgIT0gRFdf VEFHX25hbWVzcGFjZSkKKysJICByZXR1cm4gMDsKKysJcmV0dXJuIDE7CisrICAgICAgfQorKyAg ICAgIGJyZWFrOworKworICAgICBkZWZhdWx0OgorICAgICAgIHJldHVybiAwOworICAgICB9CitA QCAtMjY1NiwxMiArMjkxNywxMiBAQCBzdGF0aWMgdm9pZAogIGFkZF9wYXJ0aWFsX21vZHVsZSAo c3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwgQ09SRV9BRERSICpsb3dwYywKICAJCSAgICBD T1JFX0FERFIgKmhpZ2hwYywgaW50IG5lZWRfcGMsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIHsK QEAgLTMxODcsNyArMzgwNCwzNSBAQCBpbmRleCAyNDM4NTljLi4yZmNjZWM1IDEwMDY0NAogIH0K ICAKICAvKiBSZWFkIGEgcGFydGlhbCBkaWUgY29ycmVzcG9uZGluZyB0byBhIHN1YnByb2dyYW0g YW5kIGNyZWF0ZSBhIHBhcnRpYWwKLUBAIC0zMzMwLDYgKzM1NjcsMTQgQEAgcHJvY2Vzc19kaWUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0yNzUyLDI3 ICszMDEzLDYgQEAgZ3Vlc3Nfc3RydWN0dXJlX25hbWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZv ICpzdHJ1Y3RfcGRpLAorIAorICAgICAgIGlmIChyZWFsX3BkaS0+ZGllX3BhcmVudCAhPSBOVUxM KQorIAlyZXR1cm47CistCistICAgICAgd2hpbGUgKGNoaWxkX3BkaSAhPSBOVUxMKQorLQl7Cist CSAgaWYgKGNoaWxkX3BkaS0+dGFnID09IERXX1RBR19zdWJwcm9ncmFtKQorLQkgICAgeworLQkg ICAgICBjaGFyICphY3R1YWxfY2xhc3NfbmFtZQorLQkJPSBsYW5ndWFnZV9jbGFzc19uYW1lX2Zy b21fcGh5c25hbWUgKGN1LT5sYW5ndWFnZV9kZWZuLAorLQkJCQkJCSAgICAgY2hpbGRfcGRpLT5u YW1lKTsKKy0JICAgICAgaWYgKGFjdHVhbF9jbGFzc19uYW1lICE9IE5VTEwpCistCQl7CistCQkg IHN0cnVjdF9wZGktPm5hbWUKKy0JCSAgICA9IG9ic2F2ZXN0cmluZyAoYWN0dWFsX2NsYXNzX25h bWUsCistCQkJCSAgICBzdHJsZW4gKGFjdHVhbF9jbGFzc19uYW1lKSwKKy0JCQkJICAgICZjdS0+ Y29tcF91bml0X29ic3RhY2spOworLQkJICB4ZnJlZSAoYWN0dWFsX2NsYXNzX25hbWUpOworLQkJ fQorLQkgICAgICBicmVhazsKKy0JICAgIH0KKy0KKy0JICBjaGlsZF9wZGkgPSBjaGlsZF9wZGkt PmRpZV9zaWJsaW5nOworLQl9CisgICAgIH0KKyB9CisgCitAQCAtMzMyNSw2ICszNTY1LDE0IEBA IHByb2Nlc3NfZGllIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up CiAgICAgIGNhc2UgRFdfVEFHX2ltcG9ydGVkX2RlY2xhcmF0aW9uOgogICAgICBjYXNlIERXX1RB R19pbXBvcnRlZF9tb2R1bGU6CiAgICAgICAgcHJvY2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8g PSAxOwpAQCAtMzIwMiwzOCArMzg0NywzNjUgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2 NDQKICAgICAgICBpZiAoZGllLT5jaGlsZCAhPSBOVUxMICYmIChkaWUtPnRhZyA9PSBEV19UQUdf aW1wb3J0ZWRfZGVjbGFyYXRpb24KICAJCQkJIHx8IGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9m b3J0cmFuKSkKICAJY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJUYWcgJyVzJyBo YXMgdW5leHBlY3RlZCBjaGlsZHJlbiIpLAotQEAgLTM4ODEsNiArNDEyNiwxMyBAQCByZWFkX2Z1 bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BA IC0zMzQwLDQxICszNTg4LDcxIEBAIHByb2Nlc3NfZGllIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCisgLyogUmV0dXJuIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFt ZSBvZiBESUUsIGJhc2VkIG9uIGl0cyBEV19BVF9uYW1lLgorICAgIElmIHNjb3BlIHF1YWxpZmll cnMgYXJlIGFwcHJvcHJpYXRlIHRoZXkgd2lsbCBiZSBhZGRlZC4gIFRoZSByZXN1bHQKKyAgICB3 aWxsIGJlIGFsbG9jYXRlZCBvbiB0aGUgb2JqZmlsZV9vYnN0YWNrLCBvciBOVUxMIGlmIHRoZSBE SUUgZG9lcworLSAgIG5vdCBoYXZlIGEgbmFtZS4gICovCisrICAgbm90IGhhdmUgYSBuYW1lLgor KworKyAgIFRoZSBvdXRwdXQgc3RyaW5nIHdpbGwgYmUgY2Fub25pY2FsaXplZCAoaWYgQysrL0ph dmEpLiAqLwogIAotICAgY3UtPmxpc3RfaW5fc2NvcGUgPSAmbG9jYWxfc3ltYm9sczsKKyBzdGF0 aWMgY29uc3QgY2hhciAqCisgZHdhcmYyX2Z1bGxfbmFtZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIHsKKy0gIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Cist ICBjaGFyICpwcmVmaXgsICpuYW1lOworLSAgc3RydWN0IHVpX2ZpbGUgKmJ1ZiA9IE5VTEw7Cisr ICBjaGFyICpuYW1lOwogIAotKyAgc3dpdGNoIChjdS0+bGFuZ3VhZ2UpCisgICBuYW1lID0gZHdh cmYyX25hbWUgKGRpZSwgY3UpOworLSAgaWYgKCFuYW1lKQorLSAgICByZXR1cm4gTlVMTDsKKyAK KyAgIC8qIFRoZXNlIGFyZSB0aGUgb25seSBsYW5ndWFnZXMgd2Uga25vdyBob3cgdG8gcXVhbGlm eSBuYW1lcyBpbi4gICovCistICBpZiAoY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2NwbHVzCist ICAgICAgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2phdmEpCistICAgIHJldHVybiBuYW1l OworKyAgaWYgKG5hbWUgIT0gTlVMTAorKyAgICAgICYmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3Vh Z2VfY3BsdXMgfHwgY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2phdmEpKQogKyAgICB7Ci0rICAg IGNhc2UgbGFuZ3VhZ2VfZm9ydHJhbjoKLSsgICAgICBjdS0+bGFuZ3VhZ2Vfc3BlY2lmaWMuZm9y dHJhbi51c2UgPSBOVUxMOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0gICBpZiAoZGllLT5j aGlsZCAhPSBOVUxMKQotICAgICB7Ci0gICAgICAgY2hpbGRfZGllID0gZGllLT5jaGlsZDsKLUBA IC0zOTA0LDYgKzQxNTYsMTMgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gCQkJZGV0ZXJtaW5lX3ByZWZpeCAoZGllLCBjdSks Ci0gCQkJcHJvY2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8pOworKyAgICAgIGlmIChkaWVfbmVl ZHNfbmFtZXNwYWNlIChkaWUsIGN1KSkKKysJeworKwkgIGxvbmcgbGVuZ3RoOworKwkgIGNoYXIg KnByZWZpeDsKKysJICBzdHJ1Y3QgdWlfZmlsZSAqYnVmOworIAorLSAgLyogSWYgbm8gcHJlZml4 IGlzIG5lY2Vzc2FyeSBmb3IgdGhpcyB0eXBlIG9mIERJRSwgcmV0dXJuIHRoZQorLSAgICAgdW5x dWFsaWZpZWQgbmFtZS4gIFRoZSBvdGhlciB0aHJlZSB0YWdzIGxpc3RlZCBjb3VsZCBiZSBoYW5k bGVkCistICAgICBpbiBwZGlfbmVlZHNfbmFtZXNwYWNlLCBidXQgdGhhdCByZXF1aXJlcyBicm9h ZGVyIGNoYW5nZXMuICAqLworLSAgaWYgKCFwZGlfbmVlZHNfbmFtZXNwYWNlIChkaWUtPnRhZykK Ky0gICAgICAmJiBkaWUtPnRhZyAhPSBEV19UQUdfc3VicHJvZ3JhbQorLSAgICAgICYmIGRpZS0+ dGFnICE9IERXX1RBR192YXJpYWJsZQorLSAgICAgICYmIGRpZS0+dGFnICE9IERXX1RBR19tZW1i ZXIpCistICAgIHJldHVybiBuYW1lOworKwkgIGJ1ZiA9IG1lbV9maWxlb3BlbiAoKTsKKysJICBw cmVmaXggPSBkZXRlcm1pbmVfcHJlZml4IChkaWUsIGN1KTsKKysJICBpZiAoKnByZWZpeCAhPSAn XDAnKQorKwkgICAgeworKwkgICAgICBjaGFyICpwcmVmaXhlZF9uYW1lID0gdHlwZW5hbWVfY29u Y2F0IChOVUxMLCBwcmVmaXgsIG5hbWUsIGN1KTsKKysJICAgICAgZnB1dHNfdW5maWx0ZXJlZCAo cHJlZml4ZWRfbmFtZSwgYnVmKTsKKysJICAgICAgeGZyZWUgKHByZWZpeGVkX25hbWUpOworKwkg ICAgfQorKwkgIGVsc2UKKysJICAgIGZwdXRzX3VuZmlsdGVyZWQgKG5hbWUsIGJ1Zik7CiAgCi0r ICBzd2l0Y2ggKGN1LT5sYW5ndWFnZSkKLSsgICAgewotKyAgICBjYXNlIGxhbmd1YWdlX2ZvcnRy YW46Ci0rICAgICAgQkxPQ0tfRk9SVFJBTl9VU0UgKGJsb2NrKSA9IGN1LT5sYW5ndWFnZV9zcGVj aWZpYy5mb3J0cmFuLnVzZTsKLSsgICAgICBicmVhazsKLSsgICAgfQorLSAgcHJlZml4ID0gZGV0 ZXJtaW5lX3ByZWZpeCAoZGllLCBjdSk7CistICBpZiAoKnByZWZpeCAhPSAnXDAnKQorLSAgICBu YW1lID0gdHlwZW5hbWVfY29uY2F0ICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgcHJl Zml4LAorLQkJCSAgICBuYW1lLCBjdSk7CisrCSAgbmFtZSA9IHVpX2ZpbGVfb2JzYXZlc3RyaW5n IChidWYsICZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKwkJCQkgICAgICAgJmxlbmd0 aCk7CisrCSAgdWlfZmlsZV9kZWxldGUgKGJ1Zik7CiArCi0gICAvKiBJZiB3ZSBoYXZlIGFkZHJl c3MgcmFuZ2VzLCByZWNvcmQgdGhlbS4gICovCi0gICBkd2FyZjJfcmVjb3JkX2Jsb2NrX3Jhbmdl cyAoZGllLCBibG9jaywgYmFzZWFkZHIsIGN1KTsKLSAgIAotQEAgLTUzODUsNiArNTY0NCwyOSBA QCBwcm9jZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCi0gICBuZXdfc3ltYm9sIChkaWUsIHRoaXNfdHlwZSwgY3UpOwotIH0K LSAKKysJICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzKQorKwkgICAgeworKwkg ICAgICBjaGFyICpjbmFtZQorKwkJPSBkd2FyZjJfY2Fub25pY2FsaXplX25hbWUgKG5hbWUsIGN1 LAorKwkJCQkJICAgICZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrKTsKKysJICAgICAgaWYg KGNuYW1lICE9IE5VTEwpCisrCQluYW1lID0gY25hbWU7CisrCSAgICB9CisrCX0KKysgICAgfQor IAorICAgcmV0dXJuIG5hbWU7CisgfQorIAorKy8qIFJlYWQgdGhlIGdpdmVuIERJRSdzIERXX0FU X2RlY2xfbGluZSBudW1iZXIuICBSZXR1cm4gLTEgaWYgaW4gY2FzZSBvZiBhbgorKyAgIGVycm9y LiAgKi8KKysKKytzdGF0aWMgaW50CisrZHdhcmYyX3JlYWRfZGVjbF9saW5lIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisreworKyAgc3RydWN0IGF0dHJpYnV0 ZSAqbGluZV9hdHRyOworKworKyAgbGluZV9hdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRf ZGVjbF9saW5lLCBjdSk7CisrICBpZiAobGluZV9hdHRyKQorKyAgICByZXR1cm4gRFdfVU5TTkQg KGxpbmVfYXR0cik7CisrCisrICByZXR1cm4gLTE7CisrfQorKworIC8qIFJlYWQgdGhlIGltcG9y dCBzdGF0ZW1lbnQgc3BlY2lmaWVkIGJ5IHRoZSBnaXZlbiBkaWUgYW5kIHJlY29yZCBpdC4gICov CisgCisgc3RhdGljIHZvaWQKK0BAIC0zMzg1LDkgKzM2NjMsMTUgQEAgcmVhZF9pbXBvcnRfc3Rh dGVtZW50IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICBz dHJ1Y3QgZHdhcmYyX2N1ICppbXBvcnRlZF9jdTsKKyAgIGNvbnN0IGNoYXIgKmltcG9ydGVkX25h bWU7CisgICBjb25zdCBjaGFyICppbXBvcnRlZF9uYW1lX3ByZWZpeDsKKy0gIGNvbnN0IGNoYXIg KmltcG9ydF9wcmVmaXg7CisgICBjaGFyICpjYW5vbmljYWxfbmFtZTsKKy0KKysgIGNvbnN0IGNo YXIgKmltcG9ydF9hbGlhczsKKysgIGNvbnN0IGNoYXIgKmltcG9ydGVkX2RlY2xhcmF0aW9uID0g IiI7CisrICBjb25zdCBjaGFyICppbXBvcnRfcHJlZml4OworKyAgCisrICBpbnQgbGluZV9udW1i ZXIgPSAtMTsKKysgIAorKyAgaW50IGlzX2Fub255bW91cyA9IDA7CisrICAKKyAgIGltcG9ydF9h dHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfaW1wb3J0LCBjdSk7CisgICBpZiAoaW1wb3J0 X2F0dHIgPT0gTlVMTCkKKyAgICAgeworQEAgLTM0MzYsMTcgKzM3MjAsMjcgQEAgcmVhZF9pbXBv cnRfc3RhdGVtZW50IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up CisgICAgICAgcmV0dXJuOworICAgICB9CisgCistICAvKiBGSVhNRTogZHdhcmYyX25hbWUgKGRp ZSk7IGZvciB0aGUgbG9jYWwgbmFtZSBhZnRlciBpbXBvcnQuICAqLworLQorLSAgLyogRmlndXJl IG91dCB3aGVyZSB0aGUgc3RhdGVtZW50IGlzIGJlaW5nIGltcG9ydGVkIHRvLiAgKi8KKysgIC8q IEZpZ3VyZSBvdXQgdGhlIGxvY2FsIG5hbWUgYWZ0ZXIgaW1wb3J0LiAgKi8KKysgIGltcG9ydF9h bGlhcyA9IGR3YXJmMl9uYW1lKGRpZSwgY3UpOworKyAgaWYoaW1wb3J0X2FsaWFzID09IE5VTEwp eworKyAgICBpbXBvcnRfYWxpYXMgPSAiIjsKKysgIH0KKysgIAorKyAgLyogRGV0ZXJtaW5lIHRo ZSBsaW5lIG51bWJlciBhdCB3aGljaCB0aGUgaW1wb3J0IHdhcyBtYWRlICovCisrICBsaW5lX251 bWJlciA9IGR3YXJmMl9yZWFkX2RlY2xfbGluZShkaWUsIGN1KTsKKysgIAorKyAgLyogRmlndXJl IG91dCB3aGVyZSB0aGUgc3RhdGVtZW50IGlzIGJlaW5nIGltcG9ydGVkIHRvICovCisgICBpbXBv cnRfcHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZpeCAoZGllLCBjdSk7CisgCisgICAvKiBGaWd1cmUg b3V0IHdoYXQgdGhlIHNjb3BlIG9mIHRoZSBpbXBvcnRlZCBkaWUgaXMgYW5kIHByZXBlbmQgaXQK KyAgICAgIHRvIHRoZSBuYW1lIG9mIHRoZSBpbXBvcnRlZCBkaWUuICAqLworLSAgaW1wb3J0ZWRf bmFtZV9wcmVmaXggPSBkZXRlcm1pbmVfcHJlZml4IChpbXBvcnRlZF9kaWUsIGltcG9ydGVkX2N1 KTsKKy0KKy0gIGlmIChzdHJsZW4gKGltcG9ydGVkX25hbWVfcHJlZml4KSA+IDApCistICAgIHsK KysgIGltcG9ydGVkX25hbWVfcHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZpeCAoaW1wb3J0ZWRfZGll LCBjdSk7CisrICAKKysgIGlmKGltcG9ydGVkX2RpZS0+dGFnICE9IERXX1RBR19uYW1lc3BhY2Up eworKyAgICBpbXBvcnRlZF9kZWNsYXJhdGlvbiA9IGltcG9ydGVkX25hbWU7CisrICAgIGNhbm9u aWNhbF9uYW1lID0gKGNoYXIqKWltcG9ydGVkX25hbWVfcHJlZml4OworKyAgfWVsc2V7CisrICAg IGlmKHN0cmxlbiAoaW1wb3J0ZWRfbmFtZV9wcmVmaXgpID4gMCl7CisgICAgICAgY2Fub25pY2Fs X25hbWUgPSBhbGxvY2EgKHN0cmxlbiAoaW1wb3J0ZWRfbmFtZV9wcmVmaXgpICsgMiArIHN0cmxl biAoaW1wb3J0ZWRfbmFtZSkgKyAxKTsKKyAgICAgICBzdHJjcHkgKGNhbm9uaWNhbF9uYW1lLCBp bXBvcnRlZF9uYW1lX3ByZWZpeCk7CisgICAgICAgc3RyY2F0IChjYW5vbmljYWxfbmFtZSwgIjo6 Iik7CitAQCAtMzQ1Nyw4ICszNzUxLDE0IEBAIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgICAgIGNhbm9uaWNhbF9u YW1lID0gYWxsb2NhIChzdHJsZW4gKGltcG9ydGVkX25hbWUpICsgMSk7CisgICAgICAgc3RyY3B5 IChjYW5vbmljYWxfbmFtZSwgaW1wb3J0ZWRfbmFtZSk7CisgICAgIH0KKy0KKy0gIHVzaW5nX2Rp cmVjdGl2ZXMgPSBjcF9hZGRfdXNpbmcgKGltcG9ydF9wcmVmaXgsY2Fub25pY2FsX25hbWUsIHVz aW5nX2RpcmVjdGl2ZXMpOworKyAgfQorKyAgCisrICB1c2luZ19kaXJlY3RpdmVzID0gY3BfYWRk X3VzaW5nIChpbXBvcnRfcHJlZml4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2Fub25pY2FsX25hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bXBvcnRfYWxpYXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRl ZF9kZWNsYXJhdGlvbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVf bnVtYmVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdfZGlyZWN0 aXZlcyk7CisgfQorIAorIHN0YXRpYyB2b2lkCitAQCAtMzcyNyw2ICs0MDI3LDE0IEBAIGluaGVy aXRfYWJzdHJhY3RfZGllcyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQorICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKyAKKyAgIGF0dHIgPSBkd2FyZjJfYXR0 ciAoZGllLCBEV19BVF9hYnN0cmFjdF9vcmlnaW4sIGN1KTsKKysgIAorKyAgLyogR0NDIDQuMyBp bmNvcnJlY3RseSB1c2VzIERXX0FUX3NwZWNpZmljYXRpb24gdG8gaW5kaWNhdGUgZGllIGluaGVy aXRlbmNlCisrICAgICBpbiB0aGUgY2FzZSBvZiBpbXBvcnQgc3RhdGVtZW50cy4gVGhlIGZvbGxv d2luZyBpcyB0byBhY2NvbW1vZGF0ZSAKKysgICAgIHRoYXQuICAqLworKyAgaWYoIWF0dHIpewor KyAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfc3BlY2lmaWNhdGlvbiwgY3UpOwor KyAgfQorKyAgCisgICBpZiAoIWF0dHIpCisgICAgIHJldHVybjsKKyAKK0BAIC0zODI1LDYgKzQx MzMsNyBAQCByZWFkX2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKKyAgIGNoYXIgKm5hbWU7CisgICBDT1JFX0FERFIgYmFzZWFkZHI7CisgICBz dHJ1Y3QgYmxvY2sgKmJsb2NrOworKyAgdW5zaWduZWQgZGllX2NoaWxkcmVuID0gMDsKKyAgIGlu dCBpbmxpbmVkX2Z1bmMgPSAoZGllLT50YWcgPT0gRFdfVEFHX2lubGluZWRfc3Vicm91dGluZSk7 CisgCisgICBpZiAoaW5saW5lZF9mdW5jKQorQEAgLTM4NDMsMTMgKzQxNTIsMjMgQEAgcmVhZF9m dW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisg CisgICBiYXNlYWRkciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1Rf T0ZGX1RFWFQgKG9iamZpbGUpKTsKKyAKKy0gIG5hbWUgPSBkd2FyZjJfbGlua2FnZV9uYW1lIChk aWUsIGN1KTsKKysgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7CisgCisgICAvKiBJZ25v cmUgZnVuY3Rpb25zIHdpdGggbWlzc2luZyBvciBlbXB0eSBuYW1lcyBhbmQgZnVuY3Rpb25zIHdp dGgKKyAgICAgIG1pc3Npbmcgb3IgaW52YWxpZCBsb3cgYW5kIGhpZ2ggcGMgYXR0cmlidXRlcy4g ICovCistICBpZiAobmFtZSA9PSBOVUxMIHx8ICFkd2FyZjJfZ2V0X3BjX2JvdW5kcyAoZGllLCAm bG93cGMsICZoaWdocGMsIGN1LCBOVUxMKSkKKysgIGlmIChuYW1lID09IE5VTEwgfHwgIWR3YXJm Ml9nZXRfcGNfYm91bmRzIChkaWUsICZsb3dwYywgJmhpZ2hwYywgY3UsIE5VTEwpKXsKKysgICAg LyogZXhwbG9yZSBhYnN0cmFjdCBvcmlnaW5zIGlmIHByZXNlbnQuIFRoZXkgbWlnaHQgY29udGFp biB1c2VmdWwgaW5mb3JtYXRpb24KKysgICAgIHN1Y2ggYXMgaW1wb3J0IHN0YXRlbWVudHMuICov CisrICAgIGNoaWxkX2RpZSA9IGRpZS0+Y2hpbGQ7CisrICAgIHdoaWxlIChjaGlsZF9kaWUgJiYg Y2hpbGRfZGllLT50YWcpCisrICAgICAgeworKwljaGlsZF9kaWUgPSBzaWJsaW5nX2RpZSAoY2hp bGRfZGllKTsKKysJZGllX2NoaWxkcmVuKys7CisrICAgICAgfQorKyAgICBpbmhlcml0X2Fic3Ry YWN0X2RpZXMoZGllLCBjdSk7CisgICAgIHJldHVybjsKKy0KKysgIH0KKysgIAorICAgbG93cGMg Kz0gYmFzZWFkZHI7CisgICBoaWdocGMgKz0gYmFzZWFkZHI7CisgCitAQCAtMzg3NiwxNCArNDE5 NSwxOSBAQCByZWFkX2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKKyAKKyAgIGN1LT5saXN0X2luX3Njb3BlID0gJmxvY2FsX3N5bWJvbHM7Cisg CistICBpZiAoZGllLT5jaGlsZCAhPSBOVUxMKQorKyAgc3dpdGNoIChjdS0+bGFuZ3VhZ2UpCisg ICAgIHsKKy0gICAgICBjaGlsZF9kaWUgPSBkaWUtPmNoaWxkOworLSAgICAgIHdoaWxlIChjaGls ZF9kaWUgJiYgY2hpbGRfZGllLT50YWcpCistCXsKKy0JICBwcm9jZXNzX2RpZSAoY2hpbGRfZGll LCBjdSk7CistCSAgY2hpbGRfZGllID0gc2libGluZ19kaWUgKGNoaWxkX2RpZSk7CistCX0KKysg ICAgY2FzZSBsYW5ndWFnZV9mb3J0cmFuOgorKyAgICAgIGN1LT5sYW5ndWFnZV9zcGVjaWZpYy5m b3J0cmFuLnVzZSA9IE5VTEw7CisrICAgICAgYnJlYWs7CisrICAgIH0KKysKKysgIGNoaWxkX2Rp ZSA9IGRpZS0+Y2hpbGQ7CisrICB3aGlsZSAoY2hpbGRfZGllICYmIGNoaWxkX2RpZS0+dGFnKQor KyAgICB7CisrICAgICAgcHJvY2Vzc19kaWUgKGNoaWxkX2RpZSwgY3UpOworKyAgICAgIGNoaWxk X2RpZSA9IHNpYmxpbmdfZGllIChjaGlsZF9kaWUpOworKyAgICAgIGRpZV9jaGlsZHJlbisrOwor ICAgICB9CisgCisgICBpbmhlcml0X2Fic3RyYWN0X2RpZXMgKGRpZSwgY3UpOworQEAgLTM4OTks NiArNDIyMywxMyBAQCByZWFkX2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSkKKyAJCQlkZXRlcm1pbmVfcHJlZml4IChkaWUsIGN1KSwKKyAJCQlw cm9jZXNzaW5nX2hhc19uYW1lc3BhY2VfaW5mbyk7CisgCisrICBzd2l0Y2ggKGN1LT5sYW5ndWFn ZSkKKysgICAgeworKyAgICBjYXNlIGxhbmd1YWdlX2ZvcnRyYW46CisrICAgICAgQkxPQ0tfRk9S VFJBTl9VU0UgKGJsb2NrKSA9IGN1LT5sYW5ndWFnZV9zcGVjaWZpYy5mb3J0cmFuLnVzZTsKKysg ICAgICBicmVhazsKKysgICAgfQorKworICAgLyogSWYgd2UgaGF2ZSBhZGRyZXNzIHJhbmdlcywg cmVjb3JkIHRoZW0uICAqLworICAgZHdhcmYyX3JlY29yZF9ibG9ja19yYW5nZXMgKGRpZSwgYmxv Y2ssIGJhc2VhZGRyLCBjdSk7CisgICAKK0BAIC0zOTUyLDcgKzQyODMsNyBAQCByZWFkX2xleGlj YWxfYmxvY2tfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKKyAgICAgfQorICAgbmV3ID0gcG9wX2NvbnRleHQgKCk7CisgCistICBpZiAobG9jYWxfc3lt Ym9scyAhPSBOVUxMKQorKyAgaWYgKGxvY2FsX3N5bWJvbHMgIT0gTlVMTCB8fCB1c2luZ19kaXJl Y3RpdmVzICE9IE5VTEwpCisgICAgIHsKKyAgICAgICBzdHJ1Y3QgYmxvY2sgKmJsb2NrCisgICAg ICAgICA9IGZpbmlzaF9ibG9jayAoMCwgJmxvY2FsX3N5bWJvbHMsIG5ldy0+b2xkX2Jsb2Nrcywg bmV3LT5zdGFydF9hZGRyLAorQEAgLTQ1MTcsNyArNDg0OCw3IEBAIGR3YXJmMl9hZGRfZmllbGQg KHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAorIAlyZXR1cm47 CisgCisgICAgICAgLyogR2V0IHBoeXNpY2FsIG5hbWUuICAqLworLSAgICAgIHBoeXNuYW1lID0g ZHdhcmYyX2xpbmthZ2VfbmFtZSAoZGllLCBjdSk7CisrICAgICAgcGh5c25hbWUgPSBkd2FyZjJf cGh5c25hbWUgKGRpZSwgY3UpOworIAorICAgICAgIC8qIFRoZSBuYW1lIGlzIGFscmVhZHkgYWxs b2NhdGVkIGFsb25nIHdpdGggdGhpcyBvYmpmaWxlLCBzbyB3ZSBkb24ndAorIAkgbmVlZCB0byBk dXBsaWNhdGUgaXQgZm9yIHRoZSB0eXBlLiAgKi8KK0BAIC00Njc5LDcgKzUwMTAsNyBAQCBkd2Fy ZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gKmZpcCwgc3RydWN0IGRpZV9pbmZv ICpkaWUsCisgICAgIHJldHVybjsKKyAKKyAgIC8qIEdldCB0aGUgbWFuZ2xlZCBuYW1lLiAgKi8K Ky0gIHBoeXNuYW1lID0gZHdhcmYyX2xpbmthZ2VfbmFtZSAoZGllLCBjdSk7CisrICBwaHlzbmFt ZSA9IGR3YXJmMl9waHlzbmFtZSAoZGllLCBjdSk7CisgCisgICAvKiBMb29rIHVwIG1lbWJlciBm dW5jdGlvbiBuYW1lIGluIGZpZWxkbGlzdC4gICovCisgICBmb3IgKGkgPSAwOyBpIDwgZmlwLT5u Zm5maWVsZHM7IGkrKykKK0BAIC01MDEwLDE0ICs1MzQxLDE4IEBAIHJlYWRfc3RydWN0dXJlX3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgICAgICBp ZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzCisgCSAgfHwgY3UtPmxhbmd1YWdlID09 IGxhbmd1YWdlX2phdmEpCisgCXsKKy0JICBjb25zdCBjaGFyICpuZXdfcHJlZml4ID0gZGV0ZXJt aW5lX2NsYXNzX25hbWUgKGRpZSwgY3UpOworLQkgIFRZUEVfVEFHX05BTUUgKHR5cGUpID0gKGNo YXIgKikgbmV3X3ByZWZpeDsKKysJICBUWVBFX1RBR19OQU1FICh0eXBlKSA9IChjaGFyICopIGR3 YXJmMl9mdWxsX25hbWUgKGRpZSwgY3UpOworKwkgIGlmIChkaWUtPnRhZyA9PSBEV19UQUdfc3Ry dWN0dXJlX3R5cGUKKysJICAgICAgfHwgZGllLT50YWcgPT0gRFdfVEFHX2NsYXNzX3R5cGUpCisr CSAgICBUWVBFX05BTUUgKHR5cGUpID0gVFlQRV9UQUdfTkFNRSAodHlwZSk7CisgCX0KKyAgICAg ICBlbHNlCisgCXsKKyAJICAvKiBUaGUgbmFtZSBpcyBhbHJlYWR5IGFsbG9jYXRlZCBhbG9uZyB3 aXRoIHRoaXMgb2JqZmlsZSwgc28KKyAJICAgICB3ZSBkb24ndCBuZWVkIHRvIGR1cGxpY2F0ZSBp dCBmb3IgdGhlIHR5cGUuICAqLworLQkgIFRZUEVfVEFHX05BTUUgKHR5cGUpID0gbmFtZTsKKysJ ICBUWVBFX1RBR19OQU1FICh0eXBlKSA9IChjaGFyICopIG5hbWU7CisrCSAgaWYgKGRpZS0+dGFn ID09IERXX1RBR19jbGFzc190eXBlKQorKwkgICAgVFlQRV9OQU1FICh0eXBlKSA9IFRZUEVfVEFH X05BTUUgKHR5cGUpOworIAl9CisgICAgIH0KKyAKK0BAIC01MjU4LDUxICs1NTkzLDYgQEAgcmVh ZF9lbnVtZXJhdGlvbl90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCisgICByZXR1cm4gc2V0X2RpZV90eXBlIChkaWUsIHR5cGUsIGN1KTsKKyB9CisgCist LyogRGV0ZXJtaW5lIHRoZSBuYW1lIG9mIHRoZSB0eXBlIHJlcHJlc2VudGVkIGJ5IERJRSwgd2hp Y2ggc2hvdWxkIGJlCistICAgYSBuYW1lZCBDKysgb3IgSmF2YSBjb21wb3VuZCB0eXBlLiAgUmV0 dXJuIHRoZSBuYW1lIGluIHF1ZXN0aW9uLAorLSAgIGFsbG9jYXRlZCBvbiB0aGUgb2JqZmlsZSBv YnN0YWNrLiAgKi8KKy0KKy1zdGF0aWMgY29uc3QgY2hhciAqCistZGV0ZXJtaW5lX2NsYXNzX25h bWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKy17CistICBj b25zdCBjaGFyICpuZXdfcHJlZml4ID0gTlVMTDsKKy0KKy0gIC8qIElmIHdlIGRvbid0IGhhdmUg bmFtZXNwYWNlIGRlYnVnIGluZm8sIGd1ZXNzIHRoZSBuYW1lIGJ5IHRyeWluZworLSAgICAgdG8g ZGVtYW5nbGUgdGhlIG5hbWVzIG9mIG1lbWJlcnMsIGp1c3QgbGlrZSB3ZSBkaWQgaW4KKy0gICAg IGd1ZXNzX3N0cnVjdHVyZV9uYW1lLiAgKi8KKy0gIGlmICghcHJvY2Vzc2luZ19oYXNfbmFtZXNw YWNlX2luZm8pCistICAgIHsKKy0gICAgICBzdHJ1Y3QgZGllX2luZm8gKmNoaWxkOworLQorLSAg ICAgIGZvciAoY2hpbGQgPSBkaWUtPmNoaWxkOworLQkgICBjaGlsZCAhPSBOVUxMICYmIGNoaWxk LT50YWcgIT0gMDsKKy0JICAgY2hpbGQgPSBzaWJsaW5nX2RpZSAoY2hpbGQpKQorLQl7CistCSAg aWYgKGNoaWxkLT50YWcgPT0gRFdfVEFHX3N1YnByb2dyYW0pCistCSAgICB7CistCSAgICAgIGNo YXIgKnBoeXNfcHJlZml4CistCQk9IGxhbmd1YWdlX2NsYXNzX25hbWVfZnJvbV9waHlzbmFtZSAo Y3UtPmxhbmd1YWdlX2RlZm4sCistCQkJCQkJICAgICBkd2FyZjJfbGlua2FnZV9uYW1lCistCQkJ CQkJICAgICAoY2hpbGQsIGN1KSk7CistCistCSAgICAgIGlmIChwaHlzX3ByZWZpeCAhPSBOVUxM KQorLQkJeworLQkJICBuZXdfcHJlZml4CistCQkgICAgPSBvYnNhdmVzdHJpbmcgKHBoeXNfcHJl Zml4LCBzdHJsZW4gKHBoeXNfcHJlZml4KSwKKy0JCQkJICAgICZjdS0+b2JqZmlsZS0+b2JqZmls ZV9vYnN0YWNrKTsKKy0JCSAgeGZyZWUgKHBoeXNfcHJlZml4KTsKKy0JCSAgYnJlYWs7CistCQl9 CistCSAgICB9CistCX0KKy0gICAgfQorLQorLSAgaWYgKG5ld19wcmVmaXggPT0gTlVMTCkKKy0g ICAgbmV3X3ByZWZpeCA9IGR3YXJmMl9mdWxsX25hbWUgKGRpZSwgY3UpOworLQorLSAgcmV0dXJu IG5ld19wcmVmaXg7CistfQorLQorIC8qIEdpdmVuIGEgcG9pbnRlciB0byBhIGRpZSB3aGljaCBi ZWdpbnMgYW4gZW51bWVyYXRpb24sIHByb2Nlc3MgYWxsCisgICAgdGhlIGRpZXMgdGhhdCBkZWZp bmUgdGhlIG1lbWJlcnMgb2YgdGhlIGVudW1lcmF0aW9uLCBhbmQgY3JlYXRlIHRoZQorICAgIHN5 bWJvbCBmb3IgdGhlIGVudW1lcmF0aW9uIHR5cGUuCitAQCAtNTM4MCw2ICs1NjcwLDI5IEBAIHBy b2Nlc3NfZW51bWVyYXRpb25fc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKKyAgIG5ld19zeW1ib2wgKGRpZSwgdGhpc190eXBlLCBjdSk7CisgfQorIAog Ky8qIENyZWF0ZSBhIG5ldyBhcnJheSBkaW1lbnNpb24gcmVmZXJlbmNpbmcgaXRzIHRhcmdldCB0 eXBlIFRZUEUuCiArCiArICAgTXVsdGlkaW1lbnNpb25hbCBhcnJheXMgYXJlIGludGVybmFsbHkg cmVwcmVzZW50ZWQgYXMgYSBzdGFjayBvZgpAQCAtMzI2MCw3ICs0MjMyLDcgQEAgaW5kZXggMjQz ODU5Yy4uMmZjY2VjNSAxMDA2NDQKICAvKiBFeHRyYWN0IGFsbCBpbmZvcm1hdGlvbiBmcm9tIGEg RFdfVEFHX2FycmF5X3R5cGUgRElFIGFuZCBwdXQgaXQgaW4KICAgICB0aGUgRElFJ3MgdHlwZSBm aWVsZC4gIEZvciBub3csIHRoaXMgb25seSBoYW5kbGVzIG9uZSBkaW1lbnNpb25hbAogICAgIGFy cmF5cy4gICovCi1AQCAtNTM5OCw3ICs1NjgwLDcgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTM5Myw3ICs1NzA2LDcg QEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCiAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4 X3R5cGU7CiAgICBzdHJ1Y3QgdHlwZSAqKnJhbmdlX3R5cGVzID0gTlVMTDsKICAgIHN0cnVjdCBh dHRyaWJ1dGUgKmF0dHI7CkBAIC0zMjY5LDcgKzQyNDEsNyBAQCBpbmRleCAyNDM4NTljLi4yZmNj ZWM1IDEwMDY0NAogICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAgICBjaGFyICpuYW1lOwog IAotQEAgLTU0NDUsMTYgKzU3MjcsMTEgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTQ0MCwxNiArNTc1MywxMSBAQCBy ZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKICAgIHR5cGUgPSBlbGVtZW50X3R5cGU7CiAgCiAgICBpZiAocmVhZF9hcnJheV9vcmRlciAo ZGllLCBjdSkgPT0gRFdfT1JEX2NvbF9tYWpvcikKQEAgLTMyOTEsNyArNDI2MywxNiBAQCBpbmRl eCAyNDM4NTljLi4yZmNjZWM1IDEwMDY0NAogIAogICAgLyogVW5kZXJzdGFuZCBEd2FyZjIgc3Vw cG9ydCBmb3IgdmVjdG9yIHR5cGVzIChsaWtlIHRoZXkgb2NjdXIgb24KICAgICAgIHRoZSBQb3dl clBDIHcvIEFsdGlWZWMpLiAgR2NjIGp1c3QgYWRkcyBhbm90aGVyIGF0dHJpYnV0ZSB0byB0aGUK LUBAIC01NjU5LDIwICs1OTM2LDE1NSBAQCByZWFkX25hbWVzcGFjZSAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTU2MzgsNyArNTk0Niw3IEBAIHJlYWRf bmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisg ICAgICAgaWYgKGlzX2Fub255bW91cykKKyAJeworIAkgIGNvbnN0IGNoYXIgKnByZXZpb3VzX3By ZWZpeCA9IGRldGVybWluZV9wcmVmaXggKGRpZSwgY3UpOworLQkgIGNwX2FkZF91c2luZ19kaXJl Y3RpdmUgKHByZXZpb3VzX3ByZWZpeCwgVFlQRV9OQU1FICh0eXBlKSk7CisrCSAgY3BfYWRkX3Vz aW5nX2RpcmVjdGl2ZSAocHJldmlvdXNfcHJlZml4LCBUWVBFX05BTUUgKHR5cGUpLCAiIiwgIiIs IGR3YXJmMl9yZWFkX2RlY2xfbGluZShkaWUsIGN1KSk7CisgCX0KKyAgICAgfQorIAorQEAgLTU2 NTQsMjAgKzU5NjIsMTU1IEBAIHJlYWRfbmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgIH0KICB9CiAgCkBAIC0zMzA0LDE0ICs0Mjg1LDEz IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgewogLSAgc3RydWN0IGRpZV9pbmZv ICpjaGlsZF9kaWUgPSBkaWUtPmNoaWxkOwogKyAgc3RydWN0IHR5cGUgKnR5cGU7Ci0gCi0tICAv KiBGSVhNRTogU3VwcG9ydCB0aGUgc2VwYXJhdGUgRm9ydHJhbiBtb2R1bGUgbmFtZXNwYWNlcy4g ICovCisrCiArICB0eXBlID0gcmVhZF9tb2R1bGVfdHlwZSAoZGllLCBjdSk7CiArCiArICBpZiAo dHlwZSkKICsgICAgbmV3X3N5bWJvbCAoZGllLCB0eXBlLCBjdSk7CiArfQotIAorKwogKy8qIFJl YWQgYSBGb3J0cmFuIG1vZHVsZSBhcyB0eXBlLgogKwogKyAgIE1vZHVsZXMgcHJlc2VudCBvbmx5 IGFzIGRlY2xhcmF0aW9ucyAtIGJlaW5nIHVzZWQgb25seSBmb3IgRFdfQVRfaW1wb3J0IG9mCkBA IC0zMzQwLDkgKzQzMjAsMTAgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQKICsgIHR5 cGUgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9NT0RVTEUsIDAsIDAsIG1vZHVsZV9uYW1lLCBvYmpm aWxlKTsKICsKICsgIC8qIENyZWF0ZSBhIGNvbnRleHQgZm9yIHJlYWRpbmcgdGhlIG1vZHVsZSB2 YXJpYWJsZXMuICAqLwotKworIAorLSAgLyogRklYTUU6IFN1cHBvcnQgdGhlIHNlcGFyYXRlIEZv cnRyYW4gbW9kdWxlIG5hbWVzcGFjZXMuICAqLwogKyAgbmV3ID0gcHVzaF9jb250ZXh0ICgwLCAw KTsKLSsKKyAKICsgIHNhdmVfZmlsZV9zeW1ib2xzID0gZmlsZV9zeW1ib2xzOwogKyAgZmlsZV9z eW1ib2xzID0gTlVMTDsKICsgIHNhdmVfZ2xvYmFsX3N5bWJvbHMgPSBnbG9iYWxfc3ltYm9sczsK QEAgLTM0NTAsNyArNDQzMSw3IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgfQog IAogIC8qIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbmFtZXNwYWNlIHJlcHJlc2VudGVkIGJ5IERJ RS4gIFNldAotQEAgLTU4MzcsMjkgKzYyNDksMTEzIEBAIHJlYWRfdGFnX3N0cmluZ190eXBlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTgzMiwyOSAr NjI3NSwxMTMgQEAgcmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29i amZpbGVfYXJjaCAob2JqZmlsZSk7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwgKnJhbmdlX3R5cGUs ICppbmRleF90eXBlLCAqY2hhcl90eXBlOwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKQEAg LTM1NzgsNyArNDU1OSw3IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgICBjaGFy X3R5cGUgPSBsYW5ndWFnZV9zdHJpbmdfY2hhcl90eXBlIChjdS0+bGFuZ3VhZ2VfZGVmbiwgZ2Ri YXJjaCk7CiAgICB0eXBlID0gY3JlYXRlX3N0cmluZ190eXBlIChOVUxMLCBjaGFyX3R5cGUsIHJh bmdlX3R5cGUpOwogIAotQEAgLTU5NTksNyArNjQ1NSw2IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAq CitAQCAtNTk1NCw3ICs2NDgxLDYgQEAgc3RhdGljIHN0cnVjdCB0eXBlICoKICByZWFkX3R5cGVk ZWYgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICB7CiAgICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOwpAQCAtMzU4Niw3ICs0NTY3LDcg QEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQKICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBO VUxMOwogICAgc3RydWN0IHR5cGUgKnRoaXNfdHlwZTsKICAKLUBAIC02MDY3LDggKzY1NjIsNyBA QCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKK0BAIC02MDYyLDggKzY1ODgsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCB0eXBlICpi YXNlX3R5cGU7CiAgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKICAgIHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHI7CkBAIC0zNTk2LDcgKzQ1NzcsNyBAQCBpbmRleCAyNDM4NTljLi4yZmNjZWM1IDEw MDY0NAogICAgY2hhciAqbmFtZTsKICAgIExPTkdFU1QgbmVnYXRpdmVfbWFzazsKICAgIAotQEAg LTYwODIsNDkgKzY1NzYsMTAxIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTYwNzcsNDkgKzY2MDIsMTAxIEBAIHJl YWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQogIAkJICAgICAwLCBOVUxMLCBjdS0+b2JqZmlsZSk7CiAgICAgIH0KICAKQEAgLTM3MzQs NyArNDcxNSw3IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgCiAgICBuYW1lID0g ZHdhcmYyX25hbWUgKGRpZSwgY3UpOwogICAgaWYgKG5hbWUpCi1AQCAtNjU4Myw2ICs3MTI5LDcg QEAgbG9hZF9wYXJ0aWFsX2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKmJ1ZmZlciwgZ2RiX2J5 dGUgKmluZm9fcHRyLAorQEAgLTY1NzgsNiArNzE1NSw3IEBAIGxvYWRfcGFydGlhbF9kaWVzIChi ZmQgKmFiZmQsIGdkYl9ieXRlICpidWZmZXIsIGdkYl9ieXRlICppbmZvX3B0ciwKICAJICAmJiBh YmJyZXYtPnRhZyAhPSBEV19UQUdfbGV4aWNhbF9ibG9jawogIAkgICYmIGFiYnJldi0+dGFnICE9 IERXX1RBR192YXJpYWJsZQogIAkgICYmIGFiYnJldi0+dGFnICE9IERXX1RBR19uYW1lc3BhY2UK QEAgLTM3NDIsNyArNDcyMywyOCBAQCBpbmRleCAyNDM4NTljLi4yZmNjZWM1IDEwMDY0NAogIAkg ICYmIGFiYnJldi0+dGFnICE9IERXX1RBR19tZW1iZXIpCiAgCXsKICAJICAvKiBPdGhlcndpc2Ug d2Ugc2tpcCB0byB0aGUgbmV4dCBzaWJsaW5nLCBpZiBhbnkuICAqLwotQEAgLTgzMzEsMTAgKzg4 NzgsMTIgQEAgdmFyX2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3Ry dWN0IHN5bWJvbCAqc3ltLAorQEAgLTY3ODYsOCArNzM2NCw4IEBAIHJlYWRfcGFydGlhbF9kaWUg KHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwYXJ0X2RpZSwKKyAJICAgIH0KKyAJICBicmVhazsK KyAJY2FzZSBEV19BVF9NSVBTX2xpbmthZ2VfbmFtZToKKy0JICBwYXJ0X2RpZS0+bmFtZSA9IERX X1NUUklORyAoJmF0dHIpOworLQkgIGJyZWFrOworKwkgIGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFu Z3VhZ2VfYWRhKQorKwkgICAgcGFydF9kaWUtPm5hbWUgPSBEV19TVFJJTkcgKCZhdHRyKTsKKyAJ Y2FzZSBEV19BVF9sb3dfcGM6CisgCSAgaGFzX2xvd19wY19hdHRyID0gMTsKKyAJICBwYXJ0X2Rp ZS0+bG93cGMgPSBEV19BRERSICgmYXR0cik7CitAQCAtNjk4NCw3ICs3NTYyLDggQEAgZml4dXBf cGFydGlhbF9kaWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwYXJ0X2RpZSwKKyAgIC8qIElm IHdlIGZvdW5kIGEgcmVmZXJlbmNlIGF0dHJpYnV0ZSBhbmQgdGhlIERJRSBoYXMgbm8gbmFtZSwg dHJ5CisgICAgICB0byBmaW5kIGEgbmFtZSBpbiB0aGUgcmVmZXJyZWQgdG8gRElFLiAgKi8KKyAK Ky0gIGlmIChwYXJ0X2RpZS0+bmFtZSA9PSBOVUxMICYmIHBhcnRfZGllLT5oYXNfc3BlY2lmaWNh dGlvbikKKysgIGlmIChwYXJ0X2RpZS0+aGFzX3NwZWNpZmljYXRpb24KKysgICAgICAmJiAocGFy dF9kaWUtPm5hbWUgPT0gTlVMTCB8fCAhcGFydF9kaWUtPmlzX2V4dGVybmFsKSkKKyAgICAgewor ICAgICAgIHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpzcGVjX2RpZTsKKyAKK0BAIC04MzI2LDEw ICs4OTA1LDEyIEBAIHZhcl9kZWNvZGVfbG9jYXRpb24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIs IHN0cnVjdCBzeW1ib2wgKnN5bSwKICAgICAgIChpLmUuIHdoZW4gdGhlIHZhbHVlIG9mIGEgcmVn aXN0ZXIgb3IgbWVtb3J5IGxvY2F0aW9uIGlzCiAgICAgICByZWZlcmVuY2VkLCBvciBhIHRocmVh ZC1sb2NhbCBibG9jaywgZXRjLikuICBUaGVuIGFnYWluLCBpdCBtaWdodAogICAgICAgbm90IGJl IHdvcnRod2hpbGUuICBJJ20gYXNzdW1pbmcgdGhhdCBpdCBpc24ndCB1bmxlc3MgcGVyZm9ybWFu Y2UKQEAgLTM3NTcsMTYgKzQ3NTksMzUgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQK ICB9CiAgCiAgLyogR2l2ZW4gYSBwb2ludGVyIHRvIGEgRFdBUkYgaW5mb3JtYXRpb24gZW50cnks IGZpZ3VyZSBvdXQgaWYgd2UgbmVlZAotQEAgLTgzNjcsMTAgKzg5MTYsMTcgQEAgbmV3X3N5bWJv bCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKK0BAIC04MzUxLDIxICs4OTMyLDI5IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgCisg ICBiYXNlYWRkciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZG X1RFWFQgKG9iamZpbGUpKTsKKyAKKy0gIGlmIChkaWUtPnRhZyAhPSBEV19UQUdfbmFtZXNwYWNl KQorLSAgICBuYW1lID0gZHdhcmYyX2xpbmthZ2VfbmFtZSAoZGllLCBjdSk7CistICBlbHNlCist ICAgIG5hbWUgPSBUWVBFX05BTUUgKHR5cGUpOworLQorKyAgbmFtZSA9IGR3YXJmMl9uYW1lIChk aWUsIGN1KTsKKyAgIGlmIChuYW1lKQorICAgICB7CisrICAgICAgY29uc3QgY2hhciAqbGlua2Fn ZW5hbWU7CisrCisgICAgICAgc3ltID0gKHN0cnVjdCBzeW1ib2wgKikgb2JzdGFja19hbGxvYyAo Jm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKICAJCQkJCSAgICAgc2l6ZW9mIChzdHJ1Y3Qgc3lt Ym9sKSk7CiAgICAgICAgT0JKU1RBVCAob2JqZmlsZSwgbl9zeW1zKyspOwogICAgICAgIG1lbXNl dCAoc3ltLCAwLCBzaXplb2YgKHN0cnVjdCBzeW1ib2wpKTsKICsgICAgICAvKiBTb21lIG1ldGhv ZHMgYXJlIGNhbGxlZCB3L28gY2hlY2tpbmcgU1lNQk9MX0NPTVBVVEVEX09QUyB2YWxpZGl0eS4g ICovCiArICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbWlzc2luZ19m dW5jczsKICAKLSAgICAgICAvKiBDYWNoZSB0aGlzIHN5bWJvbCdzIG5hbWUgYW5kIHRoZSBuYW1l J3MgZGVtYW5nbGVkIGZvcm0gKGlmIGFueSkuICAqLworLSAgICAgIC8qIENhY2hlIHRoaXMgc3lt Ym9sJ3MgbmFtZSBhbmQgdGhlIG5hbWUncyBkZW1hbmdsZWQgZm9ybSAoaWYgYW55KS4gICovCiAg ICAgICAgU1lNQk9MX0xBTkdVQUdFIChzeW0pID0gY3UtPmxhbmd1YWdlOwotICAgICAgIFNZTUJP TF9TRVRfTkFNRVMgKHN5bSwgbmFtZSwgc3RybGVuIChuYW1lKSwgMCwgb2JqZmlsZSk7CistICAg ICAgU1lNQk9MX1NFVF9OQU1FUyAoc3ltLCBuYW1lLCBzdHJsZW4gKG5hbWUpLCAwLCBvYmpmaWxl KTsKKysKKysgICAgICAvKiBDYWNoZSB0aGlzIHN5bWJvbCdzIG5hbWUgYW5kIHRoZSBuYW1lJ3Mg ZGVtYW5nbGVkIGZvcm0gKGlmIGFueSkuICAqLworKworKyAgICAgIGxpbmthZ2VuYW1lID0gZHdh cmYyX3BoeXNuYW1lIChkaWUsIGN1KTsKKysgICAgICBTWU1CT0xfU0VUX05BTUVTIChzeW0sIGxp bmthZ2VuYW1lLCBzdHJsZW4gKGxpbmthZ2VuYW1lKSwgMCwgb2JqZmlsZSk7CiArICAgICAgaWYg KGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9mb3J0cmFuKQogKwl7CiArCSAgU1lNQk9MX0NQTFVT X0RFTUFOR0xFRF9OQU1FIChzeW0pID0gU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKTsKQEAgLTM3 NzUsNyArNDc5Niw3IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgCiAgICAgICAg LyogRGVmYXVsdCBhc3N1bXB0aW9ucy4KICAgICAgICAgICBVc2UgdGhlIHBhc3NlZCB0eXBlIG9y IGRlY29kZSBpdCBmcm9tIHRoZSBkaWUuICAqLwotQEAgLTg0NzAsNyArOTAyNiwxOCBAQCBuZXdf c3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQorQEAgLTg0NjUsNyArOTA1NCwxOCBAQCBuZXdfc3ltYm9sIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQog IAkgICAgICB2YXJfZGVjb2RlX2xvY2F0aW9uIChhdHRyLCBzeW0sIGN1KTsKICAJICAgICAgYXR0 cjIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9leHRlcm5hbCwgY3UpOwogIAkgICAgICBpZiAo YXR0cjIgJiYgKERXX1VOU05EIChhdHRyMikgIT0gMCkpCkBAIC0zNzk1LDcgKzQ4MTYsMTYgQEAg aW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQKICAJICAgICAgZWxzZQogIAkJYWRkX3N5bWJv bF90b19saXN0IChzeW0sIGN1LT5saXN0X2luX3Njb3BlKTsKICAJICAgIH0KLUBAIC04NjMxLDYg KzkxOTgsMTEgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBl ICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04NjAyLDcgKzkyMDIsNyBAQCBuZXdf c3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQorIAkgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCBjdS0+bGlzdF9pbl9z Y29wZSk7CisgCSAgYnJlYWs7CisgCWNhc2UgRFdfVEFHX2VudW1lcmF0b3I6CistCSAgU1lNQk9M X0xJTktBR0VfTkFNRSAoc3ltKSA9IChjaGFyICopIGR3YXJmMl9mdWxsX25hbWUgKGRpZSwgY3Up OworKwkgIFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSkgPSAoY2hhciAqKSBkd2FyZjJfbmFtZSAo ZGllLCBjdSk7CisgCSAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvbnN0X3ZhbHVl LCBjdSk7CisgCSAgaWYgKGF0dHIpCisgCSAgICB7CitAQCAtODYyNiw2ICs5MjI2LDExIEBAIG5l d19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCiAgCSAgU1lNQk9MX0NMQVNTIChzeW0pID0gTE9DX1RZUEVERUY7CiAg CSAgYWRkX3N5bWJvbF90b19saXN0IChzeW0sICZnbG9iYWxfc3ltYm9scyk7CiAgCSAgYnJlYWs7 CkBAIC0zODA3LDcgKzQ4MzcsMTcgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQKICAJ ZGVmYXVsdDoKICAJICAvKiBOb3QgYSB0YWcgd2UgcmVjb2duaXplLiAgSG9wZWZ1bGx5IHdlIGFy ZW4ndCBwcm9jZXNzaW5nCiAgCSAgICAgdHJhc2ggZGF0YSwgYnV0IHNpbmNlIHdlIG11c3Qgc3Bl Y2lmaWNhbGx5IGlnbm9yZSB0aGluZ3MKLUBAIC04OTU3LDEyICs5NTI5LDE4IEBAIHJlYWRfdHlw ZV9kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04 NjM5LDggKzkyNDQsNyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgICAgIC8qIEZvciB0aGUgYmVu ZWZpdCBvZiBvbGQgdmVyc2lvbnMgb2YgR0NDLCBjaGVjayBmb3IgYW5vbnltb3VzCisgCSBuYW1l c3BhY2VzIGJhc2VkIG9uIHRoZSBkZW1hbmdsZWQgbmFtZS4gICovCisgICAgICAgaWYgKCFwcm9j ZXNzaW5nX2hhc19uYW1lc3BhY2VfaW5mbworLQkgICYmIGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFn ZV9jcGx1cworLQkgICYmIGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX01JUFNfbGlua2FnZV9uYW1l LCBjdSkgIT0gTlVMTCkKKysJICAmJiBjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMpCisg CWNwX3NjYW5fZm9yX2Fub255bW91c19uYW1lc3BhY2VzIChzeW0pOworICAgICB9CisgICByZXR1 cm4gKHN5bSk7CitAQCAtODk1MiwxMiArOTU1NiwxOCBAQCByZWFkX3R5cGVfZGllIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgIGNhc2UgRFdfVEFHX25h bWVzcGFjZToKICAgICAgICB0aGlzX3R5cGUgPSByZWFkX25hbWVzcGFjZV90eXBlIChkaWUsIGN1 KTsKICAgICAgICBicmVhazsKQEAgLTM4MjYsMTAgKzQ4NjYsMTk1IEBAIGluZGV4IDI0Mzg1OWMu LjJmY2NlYzUgMTAwNjQ0CiAgICByZXR1cm4gdGhpc190eXBlOwogIH0KICAKLUBAIC05MTEwLDYg Kzk2ODgsMzkgQEAgZHdhcmYyX2xpbmthZ2VfbmFtZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgcmV0dXJuIGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKK0BA IC05MDM5LDEwICs5NjQ5LDEwMyBAQCBkZXRlcm1pbmVfcHJlZml4IChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgCSAgICAgU28gaXQgZG9lcyBub3QgbmVlZCBh IHByZWZpeC4gICovCisgCSAgcmV0dXJuICIiOworICAgICAgIGRlZmF1bHQ6CistCXJldHVybiBk ZXRlcm1pbmVfcHJlZml4IChwYXJlbnQsIGN1KTsKKysgICAgICAgIHJldHVybiBkZXRlcm1pbmVf cHJlZml4IChwYXJlbnQsIGN1KTsKKyAgICAgICB9CisgfQorIAorKy8qIERldGVybWluZXMgdGhl IHByZWZpeCBmb3IgYSBzeW1ib2wncyBwaHlzbmFtZS4gIFVubGlrZSBkZXRlcm1pbmVfcHJlZml4 LAorKyAgIHRoaXMgbWV0aG9kIGRvZXMgbm90IHNpbXBseSBsb29rIGF0IHRoZSBESUUncyBpbW1l ZGlhdGUgcGFyZW50LgorKyAgIEl0IHdpbGwgY29tcHV0ZSB0aGUgc3ltYm9sJ3MgcGh5c25hbWUg Ynkgc2Nhbm5pbmcgdGhyb3VnaCBhbGwgcGFyZW50CisrICAgRElFcyB1bnRpbCBpdCBnZXRzIHRv IHRoZSBjb21waWxhdGlvbiB1bml0J3MgRElFLiAgKi8KKysKKytzdGF0aWMgY2hhciAqCisrcGh5 c25hbWVfcHJlZml4IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up CisreworKyAgbG9uZyBsZW5ndGg7CisrICBzdHJ1Y3QgdWlfZmlsZSAqYnVmOworKyAgc3RydWN0 IGRpZV9pbmZvICpkLCAqc3BlY19kaWU7CisrICBzdHJ1Y3QgZHdhcmYyX2N1ICpzcGVjX2N1Owor KyAgY2hhciAqbmFtZTsKKysKKysgIC8qIENvbnN0cnVjdCBhIHN0YWNrIGNvbnRhaW5pbmcgYWxs IG9mIHRoZSBESUUncyBwYXJlbnRzLiAgQ2F1dGlvbgorKyAgICAgbXVzdCBiZSBvYnNlcnZlZCBm b3IgZGVhbGluZyB3aXRoIERXX0FUX3NwZWNpZmljYXRpb24uICovCisrICBzcGVjX2N1ID0gY3U7 CisrICBzcGVjX2RpZSA9IGRpZV9zcGVjaWZpY2F0aW9uIChkaWUsICZzcGVjX2N1KTsKKysgIGlm IChzcGVjX2RpZSAhPSBOVUxMKQorKyAgICBkID0gc3BlY19kaWUtPnBhcmVudDsKKysgIGVsc2UK KysgICAgZCA9IGRpZS0+cGFyZW50OworKyAgd2hpbGUgKGQgIT0gTlVMTCAmJiBkLT50YWcgIT0g RFdfVEFHX2NvbXBpbGVfdW5pdCkKKysgICAgeworKyAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0 dHI7CisrCisrICAgICAgc3BlY19kaWUgPSBkaWVfc3BlY2lmaWNhdGlvbiAoZCwgJnNwZWNfY3Up OworKyAgICAgIGlmIChzcGVjX2RpZSAhPSBOVUxMKQorKwlkID0gc3BlY19kaWU7CisrCisrICAg ICAgVkVDX3F1aWNrX3B1c2ggKGRpZV9pbmZvX3AsIGRpZV9saXN0LCBkKTsKKysgICAgICBkID0g ZC0+cGFyZW50OworKyAgICB9CisrCisrICAvKiBOb3cgcG9wIGFsbCB0aGUgZWxlbWVudHMsIHBy aW50aW5nIHRoZWlyIG5hbWVzIGFzIHdlIGdvLiAgKi8KKysgIGJ1ZiA9IG1lbV9maWxlb3BlbiAo KTsKKysgIHdoaWxlICghVkVDX2VtcHR5IChkaWVfaW5mb19wLCBkaWVfbGlzdCkpCisrICAgIHsK KysgICAgICBkID0gVkVDX3BvcCAoZGllX2luZm9fcCwgZGllX2xpc3QpOworKyAgICAgIHBoeXNu YW1lX3ByZWZpeF8xIChidWYsIGQsIGN1KTsKKysKKysgICAgICBpZiAoIVZFQ19lbXB0eSAoZGll X2luZm9fcCwgZGllX2xpc3QpKQorKwl7CisrCSAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFn ZV9jcGx1cykKKysJICAgIGZwdXRzX3VuZmlsdGVyZWQgKCI6OiIsIGJ1Zik7CisrCSAgZWxzZQor KwkgICAgZnB1dHNfdW5maWx0ZXJlZCAoIi4iLCBidWYpOworKwl9CisrICAgIH0KKysKKysgIG5h bWUgPSB1aV9maWxlX29ic2F2ZXN0cmluZyAoYnVmLCAmY3UtPm9iamZpbGUtPm9iamZpbGVfb2Jz dGFjaywgJmxlbmd0aCk7CisrICB1aV9maWxlX2RlbGV0ZSAoYnVmKTsKKysgIHJldHVybiBuYW1l OworK30KKysKKytzdGF0aWMgdm9pZAorK3BoeXNuYW1lX3ByZWZpeF8xIChzdHJ1Y3QgdWlfZmls ZSAqYnVmLCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKKysJCSAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQorK3sKKysgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMOworKyAgZ2RiX2Fzc2VydCAoYnVmICE9 IE5VTEwpOworKworKyAgaWYgKGRpZSAhPSBOVUxMKQorKyAgICB7CisrICAgICAgc3dpdGNoIChk aWUtPnRhZykKKysJeworKwljYXNlIERXX1RBR19uYW1lc3BhY2U6CisrCSAgbmFtZSA9IGR3YXJm Ml9uYW1lIChkaWUsIGN1KTsKKysJICBpZiAobmFtZSA9PSBOVUxMKQorKwkgICAgbmFtZSA9ICIo YW5vbnltb3VzIG5hbWVzcGFjZSkiOworKwkgIC8qIEcrKyA0LjEgcHJvZHVjZWQgRFdfVEFHX25h bWVzcGFjZSB3aXRoIERXX0FUX25hbWUgIjo6Ii4gICovCisrCSAgZWxzZSBpZiAoc3RyY21wIChu YW1lLCAiOjoiKSA9PSAwKQorKwkgICAgbmFtZSA9IE5VTEw7CisrCSAgYnJlYWs7CisrCisrCWNh c2UgRFdfVEFHX2NsYXNzX3R5cGU6CisrCWNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgorKwlj YXNlIERXX1RBR191bmlvbl90eXBlOgorKwljYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgor KwljYXNlIERXX1RBR19pbnRlcmZhY2VfdHlwZToKKysJY2FzZSBEV19UQUdfc3VicHJvZ3JhbToK KysJICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOworKwkgIGJyZWFrOworKworKwlkZWZh dWx0OgorKwkgIGJyZWFrOworKwl9CisrICAgIH0KKysKKysgIGlmIChuYW1lICE9IE5VTEwpCisr ICAgIGZwdXRzX3VuZmlsdGVyZWQgKG5hbWUsIGJ1Zik7CisrfQorKworIC8qIFJldHVybiBhIG5l d2x5LWFsbG9jYXRlZCBzdHJpbmcgZm9ybWVkIGJ5IGNvbmNhdGVuYXRpbmcgUFJFRklYIGFuZAor ICAgIFNVRkZJWCB3aXRoIGFwcHJvcHJpYXRlIHNlcGFyYXRvci4gIElmIFBSRUZJWCBvciBTVUZG SVggaXMgTlVMTCBvciBlbXB0eSwgdGhlbgorICAgIHNpbXBseSBjb3B5IHRoZSBTVUZGSVggb3Ig UFJFRklYLCByZXNwZWN0aXZlbHkuICBJZiBPQlMgaXMgbm9uLW51bGwsCitAQCAtOTA5MiwxNyAr OTc5NSwxMTEgQEAgc2libGluZ19kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllKQorICAgcmV0dXJu IGRpZS0+c2libGluZzsKICB9CiAgCistLyogR2V0IGxpbmthZ2UgbmFtZSBvZiBhIGRpZSwgcmV0 dXJuIE5VTEwgaWYgbm90IGZvdW5kLiAgKi8KKysvKiBDb25zdHJ1Y3QgYSBwaHlzbmFtZSBmb3Ig dGhlIGdpdmVuIERJRSBpbiBDVS4gKi8KKyAKKyBzdGF0aWMgY2hhciAqCistZHdhcmYyX2xpbmth Z2VfbmFtZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorK2R3 YXJmMl9waHlzbmFtZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQorIHsKKyAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CisrICBjaGFyICpuYW1lOworKworKyAg bmFtZSA9IGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKKysKKysgIC8qIFRoZXNlIGFyZSB0aGUgb25s eSBsYW5ndWFnZXMgd2Uga25vdyBob3cgdG8gcXVhbGlmeSBuYW1lcyBpbi4gICovCisrICBpZiAo Y3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2NwbHVzCisrICAgICAgJiYgY3UtPmxhbmd1YWdlICE9 IGxhbmd1YWdlX2phdmEpCisrICAgIHJldHVybiBuYW1lOworKworKyAgaWYgKGRpZV9uZWVkc19u YW1lc3BhY2UgKGRpZSwgY3UpKQorKyAgICB7CisrICAgICAgbG9uZyBsZW5ndGg7CisrICAgICAg Y2hhciAqcHJlZml4OworKyAgICAgIHN0cnVjdCB1aV9maWxlICpidWY7CisrCisrICAgICAgcHJl Zml4ID0gcGh5c25hbWVfcHJlZml4IChkaWUsIGN1KTsKKysgICAgICBidWYgPSBtZW1fZmlsZW9w ZW4gKCk7CisrICAgICAgaWYgKCpwcmVmaXggIT0gJ1wwJykKKysJeworKwkgIGNoYXIgKnByZWZp eGVkX25hbWUgPSB0eXBlbmFtZV9jb25jYXQgKE5VTEwsIHByZWZpeCwgbmFtZSwgY3UpOworKwkg IGZwdXRzX3VuZmlsdGVyZWQgKHByZWZpeGVkX25hbWUsIGJ1Zik7CisrCSAgeGZyZWUgKHByZWZp eGVkX25hbWUpOworKwl9CisrICAgICAgZWxzZQorKwlmcHV0c191bmZpbHRlcmVkIChuYW1lID8g bmFtZSA6ICIiLCBidWYpOworKworKyAgICAgIC8qIEZvciBKYXZhIGFuZCBDKysgbWV0aG9kcywg YXBwZW5kIGZvcm1hbCBwYXJhbWV0ZXIgdHlwZQorKwkgaW5mb3JtYXRpb24uICovCisrICAgICAg aWYgKChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMgfHwgY3UtPmxhbmd1YWdlID09IGxh bmd1YWdlX2phdmEpCisrCSAgJiYgZGllLT50YWcgPT0gRFdfVEFHX3N1YnByb2dyYW0pCisrCXsK KysJICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IHJlYWRfdHlwZV9kaWUgKGRpZSwgY3UpOworKworKwkg IGNfdHlwZV9wcmludF9hcmdzICh0eXBlLCBidWYsIDAsIGN1LT5sYW5ndWFnZSk7CisrCisrCSAg aWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9qYXZhKQorKwkgICAgeworKwkgICAgICAvKiBG b3IgamF2YSwgd2UgbXVzdCBhcHBlbmQgdGhlIHJldHVybiB0eXBlIHRvIG1ldGhvZCBuYW1lcy4g Ki8KKysJICAgICAgaWYgKGRpZS0+dGFnID09IERXX1RBR19zdWJwcm9ncmFtKQorKwkJamF2YV9w cmludF90eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgIiIsIGJ1ZiwgMCwgMCk7CisrCSAg ICB9CisrCSAgZWxzZSBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzKQorKwkgICAg eworKwkgICAgICAvKiBjX3R5cGVfcHJpbnRfYXJncyBhZGRzIGFyZ3VtZW50IHR5cGVzLCBidXQg aXQgZG9lcworKwkJIG5vdCBhZGQgYW55IG5lY2Vzc2FyeSAiY29uc3QiLiAqLworKwkgICAgICBp ZiAoVFlQRV9ORklFTERTICh0eXBlKSA+IDAgJiYgVFlQRV9GSUVMRF9BUlRJRklDSUFMICh0eXBl LCAwKQorKwkJICAmJiBUWVBFX0NPTlNUIChUWVBFX1RBUkdFVF9UWVBFIChUWVBFX0ZJRUxEX1RZ UEUgKHR5cGUsIDApKSkpCisrCQlmcHV0c191bmZpbHRlcmVkICgiIGNvbnN0IiwgYnVmKTsKKysJ ICAgIH0KKysJfQorKworKyAgICAgIG5hbWUgPSB1aV9maWxlX29ic2F2ZXN0cmluZyAoYnVmLCAm Y3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKysJCQkJICAgJmxlbmd0aCk7CisrICAgICAg dWlfZmlsZV9kZWxldGUgKGJ1Zik7CisrCisrICAgICAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5n dWFnZV9jcGx1cykKKysJeworKwkgIGNoYXIgKmNuYW1lCisrCSAgICA9IGR3YXJmMl9jYW5vbmlj YWxpemVfbmFtZSAobmFtZSwgY3UsCisrCQkJCQkmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFj ayk7CisrCSAgaWYgKGNuYW1lICE9IE5VTEwpCisrCSAgICBuYW1lID0gY25hbWU7CisrCX0KKysg ICAgfQorIAorLSAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX01JUFNfbGlua2FnZV9u YW1lLCBjdSk7CistICBpZiAoYXR0ciAmJiBEV19TVFJJTkcgKGF0dHIpKQorLSAgICByZXR1cm4g RFdfU1RSSU5HIChhdHRyKTsKKy0gIHJldHVybiBkd2FyZjJfbmFtZSAoZGllLCBjdSk7CisrICBy ZXR1cm4gbmFtZTsKKyt9CisrCiArLyogUmV0dXJuIHRoZSBmdWxseSBxdWFsaWZpZWQgLnN5bXRh YiBuYW1lIGZvciBzeW1ib2xzIGNvbnRhaW5lZCBpbiBGb3J0cmFuCiArICAgbW9kdWxlcy4gIFJl dHVybiBEV0FSRjJfTkFNRSBvdGhlcndpc2UuICAqLwogKwpAQCAtMzg2MSwxMiArNTA4NiwxMCBA QCBpbmRleCAyNDM4NTljLi4yZmNjZWM1IDEwMDY0NAogKyAgICB9CiArCiArICByZXR1cm4gbmFt ZTsKLSt9Ci0rCi0gLyogR2V0IG5hbWUgb2YgYSBkaWUsIHJldHVybiBOVUxMIGlmIG5vdCBmb3Vu ZC4gICovCisgfQogIAotIHN0YXRpYyBjaGFyICoKLUBAIC0xMTQ1NSw2ICsxMjA2NiwzNCBAQCBh dHRyX2Zvcm1faXNfY29uc3RhbnQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpCisgLyogR2V0IG5h bWUgb2YgYSBkaWUsIHJldHVybiBOVUxMIGlmIG5vdCBmb3VuZC4gICovCitAQCAtMTE0NTAsNiAr MTIyNDcsMzQgQEAgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChzdHJ1Y3QgYXR0cmlidXRlICphdHRy KQogICAgICB9CiAgfQogIApAQCAtMzkwMSw3ICs1MTI0LDcgQEAgaW5kZXggMjQzODU5Yy4uMmZj Y2VjNSAxMDA2NDQKICBzdGF0aWMgdm9pZAogIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAo c3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAogIAkJCSAgICAgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCi1AQCAtMTE0ODQsMzUgKzEyMTIzLDI1IEBAIGR3YXJmMl9zeW1i b2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAq c3ltLAorQEAgLTExNDc5LDM1ICsxMjMwNCwyNSBAQCBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0 ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKICAgICAgICBT WU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9sb2NsaXN0X2Z1bmNzOwogICAgICAg IFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3ltKSA9IGJhdG9uOwogICAgICB9CkBAIC0zOTUyLDcg KzUxNzUsNyBAQCBpbmRleCAyNDM4NTljLi4yZmNjZWM1IDEwMDY0NAogICAgICB9CiAgfQogIAot QEAgLTExODAwLDYgKzEyNDI5LDMxIEBAIG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAq aXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQorQEAgLTExNzk1LDYgKzEyNjEwLDMxIEBA IG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0 ZW1fcmhzKQogICAgcmV0dXJuIG9mc19saHMtPm9mZnNldCA9PSBvZnNfcmhzLT5vZmZzZXQ7CiAg fQogIApAQCAtMzk4NCw3ICs1MjA3LDcgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2VjNSAxMDA2NDQK ICAvKiBTZXQgdGhlIHR5cGUgYXNzb2NpYXRlZCB3aXRoIERJRSB0byBUWVBFLiAgU2F2ZSBpdCBp biBDVSdzIGhhc2gKICAgICB0YWJsZSBpZiBuZWNlc3NhcnkuICBGb3IgY29udmVuaWVuY2UsIHJl dHVybiBUWVBFLiAgKi8KICAKLUBAIC0xMTgwOCw2ICsxMjQ2Miw4IEBAIHNldF9kaWVfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKK0BAIC0xMTgwMyw2ICsxMjY0Myw4IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICB7CiAg ICBzdHJ1Y3QgZHdhcmYyX29mZnNldF9hbmRfdHlwZSAqKnNsb3QsIG9mczsKICAKQEAgLTM5OTMs NyArNTIxNiw3IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgICAvKiBGb3IgQWRh IHR5cGVzLCBtYWtlIHN1cmUgdGhhdCB0aGUgZ25hdC1zcGVjaWZpYyBkYXRhIGlzIGFsd2F5cwog ICAgICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCkuICBUaGVyZSBhcmUgYSBmZXcg dHlwZXMgd2hlcmUKICAgICAgIHdlIHNob3VsZCBub3QgYmUgZG9pbmcgc28sIGJlY2F1c2UgdGhl IHR5cGUtc3BlY2lmaWMgYXJlYSBpcwotQEAgLTExOTYzLDIzICsxMjYxOSwxMyBAQCBzaG93X2R3 YXJmMl9jbWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKK0BAIC0xMTk1OCwyMyArMTI4MDAs MTMgQEAgc2hvd19kd2FyZjJfY21kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAgICBjbWRf c2hvd19saXN0IChzaG93X2R3YXJmMl9jbWRsaXN0LCBmcm9tX3R0eSwgIiIpOwogIH0KICAKQEAg LTQwMjEsNyArNTI0NCw3IEBAIGluZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAgfQogIAog IC8qIG11bm1hcCBkZWJ1ZyBzZWN0aW9ucyBmb3IgT0JKRklMRSwgaWYgbmVjZXNzYXJ5LiAgKi8K LUBAIC0xMTk4OCwxNSArMTI2MzQsMTUgQEAgc3RhdGljIHZvaWQKK0BAIC0xMTk4MywxNSArMTI4 MTUsMTUgQEAgc3RhdGljIHZvaWQKICBkd2FyZjJfcGVyX29iamZpbGVfZnJlZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIHZvaWQgKmQpCiAgewogICAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmls ZSAqZGF0YSA9IGQ7CkBAIC00MDQ2LDYgKzUyNjksMTQgQEAgaW5kZXggMjQzODU5Yy4uMmZjY2Vj NSAxMDA2NDQKICB9CiAgCiAgdm9pZCBfaW5pdGlhbGl6ZV9kd2FyZjJfcmVhZCAodm9pZCk7CitA QCAtMTE5OTksNiArMTI4MzEsNyBAQCB2b2lkIF9pbml0aWFsaXplX2R3YXJmMl9yZWFkICh2b2lk KTsKKyB2b2lkCisgX2luaXRpYWxpemVfZHdhcmYyX3JlYWQgKHZvaWQpCisgeworKyAgZGllX2xp c3QgPSBWRUNfYWxsb2MgKGRpZV9pbmZvX3AsIDMyKTsKKyAgIGR3YXJmMl9vYmpmaWxlX2RhdGFf a2V5CisgICAgID0gcmVnaXN0ZXJfb2JqZmlsZV9kYXRhX3dpdGhfY2xlYW51cCAoTlVMTCwgZHdh cmYyX3Blcl9vYmpmaWxlX2ZyZWUpOworIAogZGlmZiAtLWdpdCBhL2dkYi9lbGZyZWFkLmMgYi9n ZGIvZWxmcmVhZC5jCiBpbmRleCA3OGU5MTYzLi40ZTIwOGQxIDEwMDY0NAogLS0tIGEvZ2RiL2Vs ZnJlYWQuYwpAQCAtNDEwNCwxNSArNTMzNSwxMCBAQCBpbmRleCA3OGU5MTYzLi40ZTIwOGQxIDEw MDY0NAogICAgZGVmYXVsdF9zeW1maWxlX29mZnNldHMsCS8qIHN5bV9vZmZzZXRzOiAgVHJhbnNs YXRlIGV4dC4gdG8gaW50LiByZWxvY2F0aW9uICovCiAgICBlbGZfc3ltZmlsZV9zZWdtZW50cywJ CS8qIHN5bV9zZWdtZW50czogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbQogZGlmZiAtLWdp dCBhL2dkYi9ldmFsLmMgYi9nZGIvZXZhbC5jCi1pbmRleCAzZGJiYzhiLi40ZGViODJkIDEwMDY0 NAoraW5kZXggMjdiNzg5NS4uOTBjMjlhMyAxMDA2NDQKIC0tLSBhL2dkYi9ldmFsLmMKICsrKyBi L2dkYi9ldmFsLmMKLUBAIC0zOSwxMCArMzksMTIgQEAKLSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5o IgotICNpbmNsdWRlICJyZWdjYWNoZS5oIgotICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKLSsjaW5j bHVkZSAicHl0aG9uL3B5dGhvbi5oIgotICNpbmNsdWRlICJ2YWxwcmludC5oIgorQEAgLTQzLDYg KzQzLDcgQEAKICAjaW5jbHVkZSAiZ2RiX29ic3RhY2suaCIKICAjaW5jbHVkZSAib2JqZmlsZXMu aCIKICAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgpAQCAtNDEyMCw3ICs1MzQ2LDcgQEAgaW5k ZXggM2RiYmM4Yi4uNGRlYjgyZCAxMDA2NDQKICAKICAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgog IAotQEAgLTY5Niw2ICs2OTgsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0 eXBlICpleHBlY3RfdHlwZSwKK0BAIC02OTYsNiArNjk3LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgICBsb25nIG1lbV9vZmZzZXQ7CiAg ICBzdHJ1Y3QgdHlwZSAqKmFyZ190eXBlczsKICAgIGludCBzYXZlX3BvczE7CkBAIC00MTI4LDI3 ICs1MzU0LDEyNiBAQCBpbmRleCAzZGJiYzhiLi40ZGViODJkIDEwMDY0NAogIAogICAgcGMgPSAo KnBvcykrKzsKICAgIG9wID0gZXhwLT5lbHRzW3BjXS5vcGNvZGU7Ci1AQCAtMTU4OCw2ICsxNTkx LDggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUs CitAQCAtMTMzMiw3ICsxMzM0LDYgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3Qg dHlwZSAqZXhwZWN0X3R5cGUsCisgICAgICAgYXJndmVjID0gKHN0cnVjdCB2YWx1ZSAqKikgYWxs b2NhIChzaXplb2YgKHN0cnVjdCB2YWx1ZSAqKSAqIChuYXJncyArIDMpKTsKKyAgICAgICBpZiAo b3AgPT0gU1RSVUNUT1BfTUVNQkVSIHx8IG9wID09IFNUUlVDVE9QX01QVFIpCisgCXsKKy0JICBu YXJncysrOworIAkgIC8qIEZpcnN0LCBldmFsdWF0ZSB0aGUgc3RydWN0dXJlIGludG8gYXJnMiAq LworIAkgIHBjMiA9ICgqcG9zKSsrOwogIAotICAgICAgIC8qIEZpcnN0IGRldGVybWluZSB0aGUg dHlwZSBjb2RlIHdlIGFyZSBkZWFsaW5nIHdpdGguICAqLwotICAgICAgIGFyZzEgPSBldmFsdWF0 ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0rICAgICAgb2xkX2NoYWlu ID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwotKyAgICAgIG9iamVjdF9hZGRyZXNz X3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKLSAgICAgICB0eXBlID0gY2hlY2tfdHlw ZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotICAgICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUp OworQEAgLTEzNTYsMjEgKzEzNTcsNDAgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1 Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCi1AQCAtMTYwOCw2ICsxNjEzLDcgQEAgZXZhbHVhdGVf c3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCSAgICAgIGNvZGUg PSBUWVBFX0NPREUgKHR5cGUpOwotIAkgICAgfQotIAl9IAotKyAgICAgIGRvX2NsZWFudXBzIChv bGRfY2hhaW4pOworIAkgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBw b3MsIG5vc2lkZSk7CiAgCi0gICAgICAgc3dpdGNoIChjb2RlKQotIAl7Ci1AQCAtMjA0MCwxMyAr MjA0NiwxOSBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3Rf dHlwZSwKLSAgICAgICB7Ci0gCWludCBzdWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107 Ci0gCWludCBhcnJheV9zaXplX2FycmF5W01BWF9GT1JUUkFOX0RJTVNdOworLQkgIGlmIChUWVBF X0NPREUgKGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKSkKKy0JICAgICAgIT0gVFlQ RV9DT0RFX01FVEhPRFBUUikKKy0JICAgIGVycm9yIChfKCJOb24tcG9pbnRlci10by1tZW1iZXIg dmFsdWUgdXNlZCBpbiBwb2ludGVyLXRvLW1lbWJlciAiCistCQkgICAgICJjb25zdHJ1Y3QiKSk7 CistCistCSAgaWYgKG5vc2lkZSA9PSBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUykKKysJICB0eXBl ID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOworKwkgIHN3aXRjaCAoVFlQRV9D T0RFICh0eXBlKSkKKyAJICAgIHsKKy0JICAgICAgc3RydWN0IHR5cGUgKm1ldGhvZF90eXBlID0g Y2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOworLQkgICAgICBhcmcxID0gdmFsdWVf emVybyAobWV0aG9kX3R5cGUsIG5vdF9sdmFsKTsKKysJICAgIGNhc2UgVFlQRV9DT0RFX01FVEhP RFBUUjoKKysJICAgICAgaWYgKG5vc2lkZSA9PSBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUykKKysJ CWFyZzEgPSB2YWx1ZV96ZXJvIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgbm90X2x2YWwpOwor KwkgICAgICBlbHNlCisrCQlhcmcxID0gY3BsdXNfbWV0aG9kX3B0cl90b192YWx1ZSAoJmFyZzIs IGFyZzEpOworKworKwkgICAgICAvKiBOb3csIHNheSB3aGljaCBhcmd1bWVudCB0byBzdGFydCBl dmFsdWF0aW5nIGZyb20gKi8KKysJICAgICAgbmFyZ3MrKzsKKysJICAgICAgdGVtID0gMjsKKysJ ICAgICAgYXJndmVjWzFdID0gYXJnMjsKKysJICAgICAgYnJlYWs7CisrCisrCSAgICBjYXNlIFRZ UEVfQ09ERV9NRU1CRVJQVFI6CisrCSAgICAgIC8qIE5vdywgY29udmVydCB0aGVzZSB2YWx1ZXMg dG8gYW4gYWRkcmVzcy4gICovCisrCSAgICAgIGFyZzIgPSB2YWx1ZV9jYXN0IChsb29rdXBfcG9p bnRlcl90eXBlIChUWVBFX0RPTUFJTl9UWVBFICh0eXBlKSksCisrCQkJCSBhcmcyKTsKKysKKysJ ICAgICAgbWVtX29mZnNldCA9IHZhbHVlX2FzX2xvbmcgKGFyZzEpOworKworKwkgICAgICBhcmcx ID0gdmFsdWVfZnJvbV9wb2ludGVyIChsb29rdXBfcG9pbnRlcl90eXBlIChUWVBFX1RBUkdFVF9U WVBFICh0eXBlKSksCisrCQkJCQkgdmFsdWVfYXNfbG9uZyAoYXJnMikgKyBtZW1fb2Zmc2V0KTsK KysJICAgICAgYXJnMSA9IHZhbHVlX2luZCAoYXJnMSk7CisrCSAgICAgIHRlbSA9IDE7CisrCSAg ICAgIGJyZWFrOworKworKwkgICAgZGVmYXVsdDoKKysJICAgICAgZXJyb3IgKF8oIk5vbi1wb2lu dGVyLXRvLW1lbWJlciB2YWx1ZSB1c2VkIGluIHBvaW50ZXItdG8tbWVtYmVyICIKKysJCSAgICAg ICAiY29uc3RydWN0IikpOworIAkgICAgfQorLQkgIGVsc2UKKy0JICAgIGFyZzEgPSBjcGx1c19t ZXRob2RfcHRyX3RvX3ZhbHVlICgmYXJnMiwgYXJnMSk7CisgCistCSAgLyogTm93LCBzYXkgd2hp Y2ggYXJndW1lbnQgdG8gc3RhcnQgZXZhbHVhdGluZyBmcm9tICovCistCSAgdGVtID0gMjsKKysJ ICBhcmd2ZWNbMF0gPSBhcmcxOworIAl9CisgICAgICAgZWxzZSBpZiAob3AgPT0gU1RSVUNUT1Bf U1RSVUNUIHx8IG9wID09IFNUUlVDVE9QX1BUUikKKyAJeworQEAgLTE0OTYsOCArMTUxNiw3IEBA IGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAl9 CisgICAgICAgZWxzZSBpZiAob3AgPT0gU1RSVUNUT1BfTUVNQkVSIHx8IG9wID09IFNUUlVDVE9Q X01QVFIpCisgCXsKKy0JICBhcmd2ZWNbMV0gPSBhcmcyOworLQkgIGFyZ3ZlY1swXSA9IGFyZzE7 CisrCSAgLyogUG9pbnRlciB0byBtZW1iZXIuICBhcmd2ZWMgaXMgYWxyZWFkeSBzZXQgdXAuICAq LworIAl9CisgICAgICAgZWxzZSBpZiAob3AgPT0gT1BfVkFSX1ZBTFVFKQorIAl7CitAQCAtMTU4 OCw2ICsxNjA3LDggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhw ZWN0X3R5cGUsCisgCisgICAgICAgLyogRmlyc3QgZGV0ZXJtaW5lIHRoZSB0eXBlIGNvZGUgd2Ug YXJlIGRlYWxpbmcgd2l0aC4gICovCisgICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoTlVM TF9UWVBFLCBleHAsIHBvcywgbm9zaWRlKTsKKysgICAgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFu dXAgKG51bGxfY2xlYW51cCwgMCk7CisrICAgICAgb2JqZWN0X2FkZHJlc3Nfc2V0ICh2YWx1ZV9y YXdfYWRkcmVzcyAoYXJnMSkpOworICAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90 eXBlIChhcmcxKSk7CisgICAgICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CisgCitAQCAtMTYw OCw2ICsxNjI5LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhw ZWN0X3R5cGUsCisgCSAgICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOworIAkgICAgfQorIAl9 IAorKyAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworIAorICAgICAgIHN3aXRjaCAoY29k ZSkKKyAJeworQEAgLTE3NjksNiArMTc5MSwyNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQg KHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKKyAgICAgICB4ZnJlZSAoZXhwZWN0X3R5cGUpOwor ICAgICAgIHJldHVybiBhcmcxOworIAorKyAgICBjYXNlIFRZUEVfSU5TVEFOQ0VfTE9PS1VQOgor KyAgICAgIHsKKysJaW50IGk7CisrCXN0cnVjdCBzeW1ib2wgKnN5bTsKKysJc3RydWN0IHR5cGUg KiphcmdfdHlwZXM7CisrCSgqcG9zKSArPSAzOworKwlwcmludGYgKCJUWVBFX0lOU1RBTkNFX0xP T0tVUFxuIik7CisrCWFyZ190eXBlcyA9IChzdHJ1Y3QgdHlwZSAqKikgYWxsb2NhIChUWVBFX05G SUVMRFMgKGV4cGVjdF90eXBlKQorKwkJCQkJICAgICAqIHNpemVvZiAoc3RydWN0IHR5cGUgKikp OworKwlmb3IgKGkgPSAwOyBpIDwgVFlQRV9ORklFTERTIChleHBlY3RfdHlwZSk7ICsraSkKKysJ ICBhcmdfdHlwZXNbaV0gPSBUWVBFX0ZJRUxEX1RZUEUgKGV4cGVjdF90eXBlLCBpKTsKKysJKHZv aWQpIGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKGFyZ190eXBlcywgVFlQRV9ORklFTERTIChleHBlY3Rf dHlwZSksCisrCQkJCSAgICBOVUxMIC8qIG5vIG5lZWQgZm9yIG5hbWUgKi8sCisrCQkJCSAgICAw IC8qIG5vdCBtZXRob2QgKi8sCisrCQkJCSAgICAwIC8qIHN0cmljdCBtYXRjaCAqLywKKysJCQkJ ICAgIE5VTEwsIGV4cC0+ZWx0c1twYyArIDFdLnN5bWJvbCwgTlVMTCwKKysJCQkJICAgICZzeW0s IE5VTEwpOworKwlpID0gMDsKKysgICAgICB9CisrICAgICAgYnJlYWs7CisrCisgICAgIGNhc2Ug QklOT1BfQ09OQ0FUOgorICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lv biAoZXhwLCBwb3MsIG5vc2lkZSk7CisgICAgICAgYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRo X2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsKK0BAIC0yMDQwLDEzICsyMDgzLDE5IEBAIGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorICAgICAg IHsKKyAJaW50IHN1YnNjcmlwdF9hcnJheVtNQVhfRk9SVFJBTl9ESU1TXTsKKyAJaW50IGFycmF5 X3NpemVfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107CiArCWludCBieXRlX3N0cmlkZV9hcnJheVtN QVhfRk9SVFJBTl9ESU1TXTsKICAJaW50IG5kaW1lbnNpb25zID0gMSwgaTsKICAJc3RydWN0IHR5 cGUgKnRtcF90eXBlOwpAQCAtNDE2NSw3ICs1NDkwLDcgQEAgaW5kZXggM2RiYmM4Yi4uNGRlYjgy ZCAxMDA2NDQKICAJdG1wX3R5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7 CiAgCW5kaW1lbnNpb25zID0gY2FsY19mNzdfYXJyYXlfZGltcyAodHlwZSk7CiAgCi1AQCAtMjA3 Niw2ICsyMDg4LDkgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhw ZWN0X3R5cGUsCitAQCAtMjA3Niw2ICsyMTI1LDkgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJk IChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCSAgICB1cHBlciA9IGY3N19nZXRfdXBwZXJi b3VuZCAodG1wX3R5cGUpOwogIAkgICAgbG93ZXIgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHRtcF90 eXBlKTsKICAKQEAgLTQxNzUsNyArNTUwMCw3IEBAIGluZGV4IDNkYmJjOGIuLjRkZWI4MmQgMTAw NjQ0CiAgCSAgICBhcnJheV9zaXplX2FycmF5W25hcmdzIC0gaSAtIDFdID0gdXBwZXIgLSBsb3dl ciArIDE7CiAgCiAgCSAgICAvKiBaZXJvLW5vcm1hbGl6ZSBzdWJzY3JpcHRzIHNvIHRoYXQgb2Zm c2V0dGluZyB3aWxsIHdvcmsuICovCi1AQCAtMjA5NCwxMyArMjEwOSwyNSBAQCBldmFsdWF0ZV9z dWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKK0BAIC0yMDk0LDEzICsy MTQ2LDI1IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90 eXBlLAogIAkgICAgICB0bXBfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUg KHRtcF90eXBlKSk7CiAgCSAgfQogIApAQCAtNDIwNSw3ICs1NTMwLDcgQEAgaW5kZXggM2RiYmM4 Yi4uNGRlYjgyZCAxMDA2NDQKICAKICAJLyogTGV0IHVzIG5vdyBwbGF5IGEgZGlydHkgdHJpY2s6 IHdlIHdpbGwgdGFrZSBhcmcxIAogIAkgICB3aGljaCBpcyBhIHZhbHVlIG5vZGUgcG9pbnRpbmcg dG8gdGhlIHRvcG1vc3QgbGV2ZWwKLUBAIC0yMTEwLDcgKzIxMzcsNyBAQCBldmFsdWF0ZV9zdWJl eHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKK0BAIC0yMTEwLDcgKzIxNzQs NyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwK ICAJICAgcmV0dXJucyB0aGUgY29ycmVjdCB0eXBlIHZhbHVlICovCiAgCiAgCWRlcHJlY2F0ZWRf c2V0X3ZhbHVlX3R5cGUgKGFyZzEsIHRtcF90eXBlKTsKQEAgLTQyMTQsNyArNTUzOSw3IEBAIGlu ZGV4IDNkYmJjOGIuLjRkZWI4MmQgMTAwNjQ0CiAgICAgICAgfQogIAogICAgICBjYXNlIEJJTk9Q X0xPR0lDQUxfQU5EOgotQEAgLTIzNDQsMTQgKzIzNzEsMjIgQEAgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMjM0NCwxNCArMjQwOCwyMiBA QCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAg ICAgICBpZiAoZXhwZWN0X3R5cGUgJiYgVFlQRV9DT0RFIChleHBlY3RfdHlwZSkgPT0gVFlQRV9D T0RFX1BUUikKICAJZXhwZWN0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChjaGVja190eXBlZGVm IChleHBlY3RfdHlwZSkpOwogICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKGV4cGVjdF90 eXBlLCBleHAsIHBvcywgbm9zaWRlKTsKQEAgLTQyMzksNyArNTU2NCw3IEBAIGluZGV4IDNkYmJj OGIuLjRkZWI4MmQgMTAwNjQ0CiAgICAgICAgZWxzZSBpZiAobm9zaWRlID09IEVWQUxfQVZPSURf U0lERV9FRkZFQ1RTKQogIAl7CiAgCSAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUg KGFyZzEpKTsKLUBAIC0yMzYwLDEyICsyMzk1LDE4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTIzNjAsMTIgKzI0MzIsMTggQEAgZXZh bHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCSAgLyog SW4gQyB5b3UgY2FuIGRlcmVmZXJlbmNlIGFuIGFycmF5IHRvIGdldCB0aGUgMXN0IGVsdC4gICov CiAgCSAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCiAgCSAgICAp CkBAIC00MjYzLDcgKzU1ODgsNyBAQCBpbmRleCAzZGJiYzhiLi40ZGViODJkIDEwMDY0NAogIAkg IGVsc2UKICAJICAgIGVycm9yIChfKCJBdHRlbXB0IHRvIHRha2UgY29udGVudHMgb2YgYSBub24t cG9pbnRlciB2YWx1ZS4iKSk7CiAgCX0KLUBAIC0yMzc1LDkgKzI0MTYsMTQgQEAgZXZhbHVhdGVf c3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMjM3NSw5ICsy NDUzLDE0IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90 eXBlLAogIAkgZG8uICAibG9uZyBsb25nIiB2YXJpYWJsZXMgYXJlIHJhcmUgZW5vdWdoIHRoYXQK ICAJIEJVSUxUSU5fVFlQRV9MT05HRVNUIHdvdWxkIHNlZW0gdG8gYmUgYSBtaXN0YWtlLiAgKi8K ICAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfSU5UKQpAQCAtNDI4MSw3 ICs1NjA2LDcgQEAgaW5kZXggM2RiYmM4Yi4uNGRlYjgyZCAxMDA2NDQKICAKICAgICAgY2FzZSBV Tk9QX0FERFI6CiAgICAgICAgLyogQysrOiBjaGVjayBmb3IgYW5kIGhhbmRsZSBwb2ludGVyIHRv IG1lbWJlcnMuICAqLwotQEAgLTI2OTYsNyArMjc0Miw3IEBAIGV2YWx1YXRlX3N1YmV4cF93aXRo X2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorQEAgLTI3MTIsNyArMjc5NSw3IEBA IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAog IHsKICAgIGVudW0gZXhwX29wY29kZSBvcDsKICAgIGludCBwYzsKQEAgLTQyOTAsNyArNTYxNSw3 IEBAIGluZGV4IDNkYmJjOGIuLjRkZWI4MmQgMTAwNjQ0CiAgICBzdHJ1Y3Qgc3ltYm9sICp2YXI7 CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKICAKLUBAIC0yNzA3LDEyICsyNzUzLDE3IEBAIGV2YWx1 YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorQEAgLTI3 MjMsMTIgKzI4MDYsMTcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBl eHByZXNzaW9uICpleHAsCiAgICAgIHsKICAgICAgY2FzZSBPUF9WQVJfVkFMVUU6CiAgICAgICAg dmFyID0gZXhwLT5lbHRzW3BjICsgMl0uc3ltYm9sOwpAQCAtNDMwOSw3ICs1NjM0LDcgQEAgaW5k ZXggM2RiYmM4Yi4uNGRlYjgyZCAxMDA2NDQKICAJICByZXR1cm4gdmFsdWVfY2FzdCAobG9va3Vw X3BvaW50ZXJfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpLAogIAkJCSAgICAgdmFsKTsK ICAJfQotQEAgLTI3NjQsOSArMjgxNSwxMyBAQCBldmFsdWF0ZV9zdWJleHBfZm9yX3NpemVvZiAo c3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MpCitAQCAtMjc4MCw5ICsyODY4LDEzIEBA IGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6ZW9mIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQg KnBvcykKICAKICAgICAgY2FzZSBPUF9WQVJfVkFMVUU6CiAgICAgICAgKCpwb3MpICs9IDQ7CkBA IC00MzI3LDE3ICs1NjUyLDI5IEBAIGluZGV4IDNkYmJjOGIuLjRkZWI4MmQgMTAwNjQ0CiAgICAg IGRlZmF1bHQ6CiAgICAgICAgdmFsID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwg cG9zLCBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUyk7CiBkaWZmIC0tZ2l0IGEvZ2RiL2V4cHJlc3Np b24uaCBiL2dkYi9leHByZXNzaW9uLmgKLWluZGV4IGU0ZTg1OTguLmNhOTZiOWIgMTAwNjQ0Citp bmRleCBjYTIxNmNmLi4yMTk1ZmVmIDEwMDY0NAogLS0tIGEvZ2RiL2V4cHJlc3Npb24uaAogKysr IGIvZ2RiL2V4cHJlc3Npb24uaAotQEAgLTQ0NSw0ICs0NDUsNSBAQCBleHRlcm4gY2hhciAqb3Bf c3RyaW5nIChlbnVtIGV4cF9vcGNvZGUpOworQEAgLTk1LDYgKzk1LDExIEBAIGVudW0gZXhwX29w Y29kZQorICAgICAgICBUWVBFX0lOU1RBTkNFIG51bV90eXBlcyB0eXBlMCAuLi4gdHlwZU4gbnVt X3R5cGVzIFRZUEVfSU5TVEFOQ0UgICovCisgICAgIFRZUEVfSU5TVEFOQ0UsCisgCisrICAgIC8q IFRZUEVfSU5TVEFOQ0VfTE9PS1VQIGlzIHVzZWQgd2hlbiB0aGUgdXNlciBzcGVjaWZpZXMgYSBz cGVjaWZpYworKyAgICAgICB0eXBlIGluc3RhbnRpYXRpb24gb2YgYSBmdW5jdGlvbiAobm90IGEg bWV0aG9kKS4gSW4gdGhpcyBjYXNlLAorKyAgICAgICB3ZSBtdXN0IHRvc3MgdGhlIHJlc3VsdHMg b2YgdGhlIHBhcnNlciBhbmQgbWFudWFsbHkgZG8gdGhlIGxvb2t1cC4gKi8KKysgICAgVFlQRV9J TlNUQU5DRV9MT09LVVAsCisrCisgICAgIC8qIGVuZCBvZiBDKysuICAqLworIAorICAgICAvKiBG b3IgTW9kdWxhLTIgaW50ZWdlciBkaXZpc2lvbiBESVYgKi8KK0BAIC00NTEsNCArNDU2LDUgQEAg ZXh0ZXJuIGNoYXIgKm9wX3N0cmluZyAoZW51bSBleHBfb3Bjb2RlKTsKICBleHRlcm4gdm9pZCBk dW1wX3Jhd19leHByZXNzaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBzdHJ1Y3QgdWlfZmlsZSAq LCBjaGFyICopOwogIGV4dGVybiB2b2lkIGR1bXBfcHJlZml4X2V4cHJlc3Npb24gKHN0cnVjdCBl eHByZXNzaW9uICosIHN0cnVjdCB1aV9maWxlICopOwogIAogKwogICNlbmRpZiAvKiAhZGVmaW5l ZCAoRVhQUkVTU0lPTl9IKSAqLwogZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuYyBiL2dkYi9mLWxh bmcuYwotaW5kZXggYjkxNGI0OS4uNzliNDZkMiAxMDA2NDQKK2luZGV4IGI5MTRiNDkuLjY3Yzcy MzIgMTAwNjQ0CiAtLS0gYS9nZGIvZi1sYW5nLmMKICsrKyBiL2dkYi9mLWxhbmcuYwogQEAgLTMx LDYgKzMxLDggQEAKQEAgLTQzNDksNyArNTY4Niw3IEBAIGluZGV4IGI5MTRiNDkuLjc5YjQ2ZDIg MTAwNjQ0CiAgCiAgCiAgLyogRm9sbG93aW5nIGlzIGR1YmlvdXMgc3R1ZmYgdGhhdCBoYWQgYmVl biBpbiB0aGUgeGNvZmYgcmVhZGVyLiAqLwotQEAgLTMwNiw2ICszMDgsNDggQEAgZl9sYW5ndWFn ZV9hcmNoX2luZm8gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTMwNiw2ICszMDgsNDYg QEAgZl9sYW5ndWFnZV9hcmNoX2luZm8gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICAgbGFp LT5ib29sX3R5cGVfZGVmYXVsdCA9IGJ1aWx0aW4tPmJ1aWx0aW5fbG9naWNhbF9zMjsKICB9CiAg CkBAIC00MzYxLDcgKzU2OTgsNiBAQCBpbmRleCBiOTE0YjQ5Li43OWI0NmQyIDEwMDY0NAogKwog K3N0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKICtmX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0 IGNoYXIgKm5hbWUsCi0rCQkJICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCiArCQkJICBjb25z dCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAogKwkJCSAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQog K3sKQEAgLTQzNzYsNyArNTcxMiw3IEBAIGluZGV4IGI5MTRiNDkuLjc5YjQ2ZDIgMTAwNjQ0CiAr ICAgICAgc3RydWN0IHR5cGUgKnR5cGU7CiArICAgICAgc3RydWN0IHN5bWJvbCAqcmV0dmFsOwog KwotKyAgICAgIHN5bSA9IGxvb2t1cF9zeW1ib2xfZ2xvYmFsICh1c2UtPm1vZHVsZV9uYW1lLCBO VUxMLCBibG9jaywgTU9EVUxFX0RPTUFJTik7CisrICAgICAgc3ltID0gbG9va3VwX3N5bWJvbF9n bG9iYWwgKHVzZS0+bW9kdWxlX25hbWUsIGJsb2NrLCBNT0RVTEVfRE9NQUlOKTsKICsKICsgICAg ICAvKiBNb2R1bGUgbmFtZSBsb29rdXAgc2hvdWxkIG5vdCBmYWlsIHdpdGggY29ycmVjdCBkZWJ1 ZyBpbmZvLiAgKi8KICsgICAgICBpZiAoc3ltID09IE5VTEwpCkBAIC00Mzg2LDggKzU3MjIsNyBA QCBpbmRleCBiOTE0YjQ5Li43OWI0NmQyIDEwMDY0NAogKyAgICAgIGdkYl9hc3NlcnQgKFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX01PRFVMRSk7CiArICAgICAgZ2RiX2Fzc2VydCAoVFlQ RV9NT0RVTEVfQkxPQ0sgKHR5cGUpICE9IE5VTEwpOwogKwotKyAgICAgIHJldHZhbCA9IGxvb2t1 cF9ibG9ja19zeW1ib2wgKFRZUEVfTU9EVUxFX0JMT0NLICh0eXBlKSwgbmFtZSwKLSsJCQkJICAg IGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKKysgICAgICByZXR2YWwgPSBsb29rdXBfYmxvY2tfc3lt Ym9sIChUWVBFX01PRFVMRV9CTE9DSyAodHlwZSksIG5hbWUsIGRvbWFpbik7CiArICAgICAgaWYg KHJldHZhbCkKICsJcmV0dXJuIHJldHZhbDsKICsgICAgfQpAQCAtNDM5OCw3ICs1NzMzLDcgQEAg aW5kZXggYjkxNGI0OS4uNzliNDZkMiAxMDA2NDQKICAvKiBUaGlzIGlzIGRlY2xhcmVkIGluIGMt bGFuZy5oIGJ1dCBpdCBpcyBzaWxseSB0byBpbXBvcnQgdGhhdCBmaWxlIGZvciB3aGF0CiAgICAg aXMgYWxyZWFkeSBqdXN0IGEgaGFjay4gKi8KICBleHRlcm4gaW50IGNfdmFsdWVfcHJpbnQgKHN0 cnVjdCB2YWx1ZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLAotQEAgLTMzMyw3ICszNzcsNyBAQCBjb25z dCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiBmX2xhbmd1YWdlX2RlZm4gPQorQEAgLTMzMyw3ICszNzUs NyBAQCBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiBmX2xhbmd1YWdlX2RlZm4gPQogICAgY192 YWx1ZV9wcmludCwJCS8qIEZJWE1FICovCiAgICBOVUxMLAkJCQkvKiBMYW5ndWFnZSBzcGVjaWZp YyBza2lwX3RyYW1wb2xpbmUgKi8KICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAJLyogbmFt ZV9vZl90aGlzICovCkBAIC01MDM4LDQxMiArNjM3Myw2IEBAIGluZGV4IGZmYjdmNTMuLmEyZTdl OTQgMTAwNjQ0CiAgc2V0IGNvbXBsYWludHMgMQogIAogIGIgaW50ZXJuYWxfZXJyb3IKLWRpZmYg LS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LWkzODYtbG93LmMgYi9nZGIvZ2Ric2VydmVyL2xp bnV4LWkzODYtbG93LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iOTVj MWIxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWkzODYtbG93LmMK LUBAIC0wLDAgKzEsMjEwIEBACi0rLyogR05VL0xpbnV4L2kzODYgc3BlY2lmaWMgbG93IGxldmVs IGludGVyZmFjZSwgZm9yIHRoZSByZW1vdGUgc2VydmVyIGZvciBHREIuCi0rICAgQ29weXJpZ2h0 IChDKSAxOTk1LCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDA0LCAyMDA1 LCAyMDA2LAotKyAgIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSAic2VydmVyLmgiCi0rI2lu Y2x1ZGUgImxpbnV4LWxvdy5oIgotKyNpbmNsdWRlICJpMzg3LWZwLmgiCi0rCi0rI2luY2x1ZGUg ImdkYl9wcm9jX3NlcnZpY2UuaCIKLSsKLSsjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotKwotKyNp ZmRlZiBIQVZFX1NZU19SRUdfSAotKyNpbmNsdWRlIDxzeXMvcmVnLmg+Ci0rI2VuZGlmCi0rCi0r I2lmbmRlZiBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBCi0rI2RlZmluZSBQVFJBQ0VfR0VUX1RIUkVB RF9BUkVBIDI1Ci0rI2VuZGlmCi0rCi0rLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxl IHJlZy1pMzg2LWxpbnV4LmMuICAqLwotK3ZvaWQgaW5pdF9yZWdpc3RlcnNfaTM4Nl9saW51eCAo dm9pZCk7Ci0rCi0rCi0rLyogVGhpcyBtb2R1bGUgb25seSBzdXBwb3J0cyBhY2Nlc3MgdG8gdGhl IGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMuICAqLwotKwotKyNkZWZpbmUgaTM4Nl9udW1fcmVn cyAxNgotKwotKy8qIFRoaXMgc3R1ZmYgY29tZXMgZnJvbSBpMzg2LWxpbnV4LW5hdC5jLiAgKi8K LSsKLSsvKiBNYXBwaW5nIGJldHdlZW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgaW4g YHN0cnVjdCB1c2VyJwotKyAgIGZvcm1hdCBhbmQgR0RCJ3MgcmVnaXN0ZXIgYXJyYXkgbGF5b3V0 LiAgKi8KLStzdGF0aWMgaW50IGkzODZfcmVnbWFwW10gPSAKLSt7Ci0rICBFQVggKiA0LCBFQ1gg KiA0LCBFRFggKiA0LCBFQlggKiA0LAotKyAgVUVTUCAqIDQsIEVCUCAqIDQsIEVTSSAqIDQsIEVE SSAqIDQsCi0rICBFSVAgKiA0LCBFRkwgKiA0LCBDUyAqIDQsIFNTICogNCwKLSsgIERTICogNCwg RVMgKiA0LCBGUyAqIDQsIEdTICogNAotK307Ci0rCi0rLyogQ2FsbGVkIGJ5IGxpYnRocmVhZF9k Yi4gICovCi0rCi0rcHNfZXJyX2UKLStwc19nZXRfdGhyZWFkX2FyZWEgKGNvbnN0IHN0cnVjdCBw c19wcm9jaGFuZGxlICpwaCwgCi0rCQkgICAgbHdwaWRfdCBsd3BpZCwgaW50IGlkeCwgdm9pZCAq KmJhc2UpCi0rewotKyAgdW5zaWduZWQgaW50IGRlc2NbNF07Ci0rCi0rICBpZiAocHRyYWNlIChQ VFJBQ0VfR0VUX1RIUkVBRF9BUkVBLCBsd3BpZCwKLSsJICAgICAgKHZvaWQgKikgaWR4LCAodW5z aWduZWQgbG9uZykgJmRlc2MpIDwgMCkKLSsgICAgcmV0dXJuIFBTX0VSUjsKLSsKLSsgICooaW50 ICopYmFzZSA9IGRlc2NbMV07Ci0rICByZXR1cm4gUFNfT0s7Ci0rfQotKwotK3N0YXRpYyBpbnQK LStpMzg2X2Nhbm5vdF9zdG9yZV9yZWdpc3RlciAoaW50IHJlZ25vKQotK3sKLSsgIHJldHVybiAo cmVnbm8gPj0gaTM4Nl9udW1fcmVncyk7Ci0rfQotKwotK3N0YXRpYyBpbnQKLStpMzg2X2Nhbm5v dF9mZXRjaF9yZWdpc3RlciAoaW50IHJlZ25vKQotK3sKLSsgIHJldHVybiAocmVnbm8gPj0gaTM4 Nl9udW1fcmVncyk7Ci0rfQotKwotKwotKyNpZmRlZiBIQVZFX1BUUkFDRV9HRVRSRUdTCi0rI2lu Y2x1ZGUgPHN5cy9wcm9jZnMuaD4KLSsjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotKwotK3N0YXRp YyB2b2lkCi0raTM4Nl9maWxsX2dyZWdzZXQgKHZvaWQgKmJ1ZikKLSt7Ci0rICBpbnQgaTsKLSsK LSsgIGZvciAoaSA9IDA7IGkgPCBpMzg2X251bV9yZWdzOyBpKyspCi0rICAgIGNvbGxlY3RfcmVn aXN0ZXIgKGksICgoY2hhciAqKSBidWYpICsgaTM4Nl9yZWdtYXBbaV0pOwotKwotKyAgY29sbGVj dF9yZWdpc3Rlcl9ieV9uYW1lICgib3JpZ19lYXgiLCAoKGNoYXIgKikgYnVmKSArIE9SSUdfRUFY ICogNCk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0raTM4Nl9zdG9yZV9ncmVnc2V0IChjb25zdCB2 b2lkICpidWYpCi0rewotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgaTM4Nl9udW1f cmVnczsgaSsrKQotKyAgICBzdXBwbHlfcmVnaXN0ZXIgKGksICgoY2hhciAqKSBidWYpICsgaTM4 Nl9yZWdtYXBbaV0pOwotKwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJvcmlnX2VheCIs ICgoY2hhciAqKSBidWYpICsgT1JJR19FQVggKiA0KTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStp Mzg2X2ZpbGxfZnByZWdzZXQgKHZvaWQgKmJ1ZikKLSt7Ci0rICBpMzg3X2NhY2hlX3RvX2ZzYXZl IChidWYpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2kzODZfc3RvcmVfZnByZWdzZXQgKGNvbnN0 IHZvaWQgKmJ1ZikKLSt7Ci0rICBpMzg3X2ZzYXZlX3RvX2NhY2hlIChidWYpOwotK30KLSsKLStz dGF0aWMgdm9pZAotK2kzODZfZmlsbF9mcHhyZWdzZXQgKHZvaWQgKmJ1ZikKLSt7Ci0rICBpMzg3 X2NhY2hlX3RvX2Z4c2F2ZSAoYnVmKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStpMzg2X3N0b3Jl X2ZweHJlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQotK3sKLSsgIGkzODdfZnhzYXZlX3RvX2NhY2hl IChidWYpOwotK30KLSsKLSsjZW5kaWYgLyogSEFWRV9QVFJBQ0VfR0VUUkVHUyAqLwotKwotK3N0 cnVjdCByZWdzZXRfaW5mbyB0YXJnZXRfcmVnc2V0c1tdID0gewotKyNpZmRlZiBIQVZFX1BUUkFD RV9HRVRSRUdTCi0rICB7IFBUUkFDRV9HRVRSRUdTLCBQVFJBQ0VfU0VUUkVHUywgc2l6ZW9mIChl bGZfZ3JlZ3NldF90KSwKLSsgICAgR0VORVJBTF9SRUdTLAotKyAgICBpMzg2X2ZpbGxfZ3JlZ3Nl dCwgaTM4Nl9zdG9yZV9ncmVnc2V0IH0sCi0rIyBpZmRlZiBIQVZFX1BUUkFDRV9HRVRGUFhSRUdT Ci0rICB7IFBUUkFDRV9HRVRGUFhSRUdTLCBQVFJBQ0VfU0VURlBYUkVHUywgc2l6ZW9mIChlbGZf ZnB4cmVnc2V0X3QpLAotKyAgICBFWFRFTkRFRF9SRUdTLAotKyAgICBpMzg2X2ZpbGxfZnB4cmVn c2V0LCBpMzg2X3N0b3JlX2ZweHJlZ3NldCB9LAotKyMgZW5kaWYKLSsgIHsgUFRSQUNFX0dFVEZQ UkVHUywgUFRSQUNFX1NFVEZQUkVHUywgc2l6ZW9mIChlbGZfZnByZWdzZXRfdCksCi0rICAgIEZQ X1JFR1MsCi0rICAgIGkzODZfZmlsbF9mcHJlZ3NldCwgaTM4Nl9zdG9yZV9mcHJlZ3NldCB9LAot KyNlbmRpZiAvKiBIQVZFX1BUUkFDRV9HRVRSRUdTICovCi0rICB7IDAsIDAsIC0xLCAtMSwgTlVM TCwgTlVMTCB9Ci0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBpMzg2X2JyZWFr cG9pbnRbXSA9IHsgMHhDQyB9OwotKyNkZWZpbmUgaTM4Nl9icmVha3BvaW50X2xlbiAxCi0rCi0r ZXh0ZXJuIGludCBkZWJ1Z190aHJlYWRzOwotKwotK3N0YXRpYyBDT1JFX0FERFIKLStpMzg2X2dl dF9wYyAoKQotK3sKLSsgIHVuc2lnbmVkIGxvbmcgcGM7Ci0rCi0rICBjb2xsZWN0X3JlZ2lzdGVy X2J5X25hbWUgKCJlaXAiLCAmcGMpOwotKwotKyAgaWYgKGRlYnVnX3RocmVhZHMpCi0rICAgIGZw cmludGYgKHN0ZGVyciwgInN0b3AgcGMgKGJlZm9yZSBhbnkgZGVjcmVtZW50KSBpcyAlMDhseFxu IiwgcGMpOwotKyAgcmV0dXJuIHBjOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2kzODZfc2V0X3Bj IChDT1JFX0FERFIgbmV3cGMpCi0rewotKyAgaWYgKGRlYnVnX3RocmVhZHMpCi0rICAgIGZwcmlu dGYgKHN0ZGVyciwgInNldCBwYyB0byAlMDhseFxuIiwgKGxvbmcpIG5ld3BjKTsKLSsgIHN1cHBs eV9yZWdpc3Rlcl9ieV9uYW1lICgiZWlwIiwgJm5ld3BjKTsKLSt9Ci0rCi0rc3RhdGljIGludAot K2kzODZfYnJlYWtwb2ludF9hdCAoQ09SRV9BRERSIHBjKQotK3sKLSsgIHVuc2lnbmVkIGNoYXIg YzsKLSsKLSsgIHJlYWRfaW5mZXJpb3JfbWVtb3J5IChwYywgJmMsIDEpOwotKyAgaWYgKGMgPT0g MHhDQykKLSsgICAgcmV0dXJuIDE7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RydWN0IGxp bnV4X3RhcmdldF9vcHMgdGhlX2xvd190YXJnZXQgPSB7Ci0rICBpbml0X3JlZ2lzdGVyc19pMzg2 X2xpbnV4LAotKyAgaTM4Nl9udW1fcmVncywKLSsgIGkzODZfcmVnbWFwLAotKyAgaTM4Nl9jYW5u b3RfZmV0Y2hfcmVnaXN0ZXIsCi0rICBpMzg2X2Nhbm5vdF9zdG9yZV9yZWdpc3RlciwKLSsgIGkz ODZfZ2V0X3BjLAotKyAgaTM4Nl9zZXRfcGMsCi0rICBpMzg2X2JyZWFrcG9pbnQsCi0rICBpMzg2 X2JyZWFrcG9pbnRfbGVuLAotKyAgTlVMTCwKLSsgIDEsCi0rICBpMzg2X2JyZWFrcG9pbnRfYXQs Ci0rICBOVUxMLAotKyAgTlVMTCwKLSsgIE5VTEwsCi0rICBOVUxMLAotKyAgTlVMTCwKLSsgIE5V TEwsCi0rfTsKLWRpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LXg4Ni02NC1sb3cuYyBi L2dkYi9nZGJzZXJ2ZXIvbGludXgteDg2LTY0LWxvdy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMC4uYjgyMTNmNQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL2dkYnNlcnZl ci9saW51eC14ODYtNjQtbG93LmMKLUBAIC0wLDAgKzEsMTg0IEBACi0rLyogR05VL0xpbnV4L3g4 Ni02NCBzcGVjaWZpYyBsb3cgbGV2ZWwgaW50ZXJmYWNlLCBmb3IgdGhlIHJlbW90ZSBzZXJ2ZXIK LSsgICBmb3IgR0RCLgotKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNCwgMjAwNSwgMjAwNiwg MjAwNywgMjAwOCwgMjAwOQotKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwot KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgInNlcnZlci5oIgotKyNpbmNsdWRlICJs aW51eC1sb3cuaCIKLSsjaW5jbHVkZSAiaTM4Ny1mcC5oIgotKwotKyNpbmNsdWRlICJnZGJfcHJv Y19zZXJ2aWNlLmgiCi0rCi0rLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxlIHJlZy14 ODYtNjQtbGludXguYy4gICovCi0rdm9pZCBpbml0X3JlZ2lzdGVyc194ODZfNjRfbGludXggKHZv aWQpOwotKwotKyNpbmNsdWRlIDxzeXMvcmVnLmg+Ci0rI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4K LSsjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotKwotKy8qIFRoaXMgZGVmaW5pdGlvbiBjb21lcyBm cm9tIHByY3RsLmgsIGJ1dCBzb21lIGtlcm5lbHMgbWF5IG5vdCBoYXZlIGl0LiAgKi8KLSsjaWZu ZGVmIFBUUkFDRV9BUkNIX1BSQ1RMCi0rI2RlZmluZSBQVFJBQ0VfQVJDSF9QUkNUTCAgICAgIDMw Ci0rI2VuZGlmCi0rCi0rLyogVGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyBjb21lIGZyb20gcHJj dGwuaCwgYnV0IG1heSBiZSBhYnNlbnQKLSsgICBmb3IgY2VydGFpbiBjb25maWd1cmF0aW9ucy4g ICovCi0rI2lmbmRlZiBBUkNIX0dFVF9GUwotKyNkZWZpbmUgQVJDSF9TRVRfR1MgMHgxMDAxCi0r I2RlZmluZSBBUkNIX1NFVF9GUyAweDEwMDIKLSsjZGVmaW5lIEFSQ0hfR0VUX0ZTIDB4MTAwMwot KyNkZWZpbmUgQVJDSF9HRVRfR1MgMHgxMDA0Ci0rI2VuZGlmCi0rCi0rc3RhdGljIGludCB4ODZf NjRfcmVnbWFwW10gPSB7Ci0rICBSQVggKiA4LCBSQlggKiA4LCBSQ1ggKiA4LCBSRFggKiA4LAot KyAgUlNJICogOCwgUkRJICogOCwgUkJQICogOCwgUlNQICogOCwKLSsgIFI4ICogOCwgUjkgKiA4 LCBSMTAgKiA4LCBSMTEgKiA4LAotKyAgUjEyICogOCwgUjEzICogOCwgUjE0ICogOCwgUjE1ICog OCwKLSsgIFJJUCAqIDgsIEVGTEFHUyAqIDgsIENTICogOCwgU1MgKiA4LCAKLSsgIERTICogOCwg RVMgKiA4LCBGUyAqIDgsIEdTICogOCwKLSsgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAt MSwKLSsgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwKLSsgIC0xLCAtMSwgLTEsIC0x LCAtMSwgLTEsIC0xLCAtMSwKLSsgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEs Ci0rICBPUklHX1JBWCAqIDgKLSt9OwotKwotKyNkZWZpbmUgWDg2XzY0X05VTV9HUkVHUyAoc2l6 ZW9mKHg4Nl82NF9yZWdtYXApL3NpemVvZihpbnQpKQotKwotKy8qIENhbGxlZCBieSBsaWJ0aHJl YWRfZGIuICAqLwotKwotK3BzX2Vycl9lCi0rcHNfZ2V0X3RocmVhZF9hcmVhIChjb25zdCBzdHJ1 Y3QgcHNfcHJvY2hhbmRsZSAqcGgsCi0rICAgICAgICAgICAgICAgICAgICBsd3BpZF90IGx3cGlk LCBpbnQgaWR4LCB2b2lkICoqYmFzZSkKLSt7Ci0rICBzd2l0Y2ggKGlkeCkKLSsgICAgewotKyAg ICBjYXNlIEZTOgotKyAgICAgIGlmIChwdHJhY2UgKFBUUkFDRV9BUkNIX1BSQ1RMLCBsd3BpZCwg YmFzZSwgQVJDSF9HRVRfRlMpID09IDApCi0rCXJldHVybiBQU19PSzsKLSsgICAgICBicmVhazsK LSsgICAgY2FzZSBHUzoKLSsgICAgICBpZiAocHRyYWNlIChQVFJBQ0VfQVJDSF9QUkNUTCwgbHdw aWQsIGJhc2UsIEFSQ0hfR0VUX0dTKSA9PSAwKQotKwlyZXR1cm4gUFNfT0s7Ci0rICAgICAgYnJl YWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgcmV0dXJuIFBTX0JBREFERFI7Ci0rICAgIH0KLSsg IHJldHVybiBQU19FUlI7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0reDg2XzY0X2ZpbGxfZ3JlZ3Nl dCAodm9pZCAqYnVmKQotK3sKLSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IFg4Nl82 NF9OVU1fR1JFR1M7IGkrKykKLSsgICAgaWYgKHg4Nl82NF9yZWdtYXBbaV0gIT0gLTEpCi0rICAg ICAgY29sbGVjdF9yZWdpc3RlciAoaSwgKChjaGFyICopIGJ1ZikgKyB4ODZfNjRfcmVnbWFwW2ld KTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLSt4ODZfNjRfc3RvcmVfZ3JlZ3NldCAoY29uc3Qgdm9p ZCAqYnVmKQotK3sKLSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IFg4Nl82NF9OVU1f R1JFR1M7IGkrKykKLSsgICAgaWYgKHg4Nl82NF9yZWdtYXBbaV0gIT0gLTEpCi0rICAgICAgc3Vw cGx5X3JlZ2lzdGVyIChpLCAoKGNoYXIgKikgYnVmKSArIHg4Nl82NF9yZWdtYXBbaV0pOwotK30K LSsKLStzdGF0aWMgdm9pZAotK3g4Nl82NF9maWxsX2ZwcmVnc2V0ICh2b2lkICpidWYpCi0rewot KyAgaTM4N19jYWNoZV90b19meHNhdmUgKGJ1Zik7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0reDg2 XzY0X3N0b3JlX2ZwcmVnc2V0IChjb25zdCB2b2lkICpidWYpCi0rewotKyAgaTM4N19meHNhdmVf dG9fY2FjaGUgKGJ1Zik7Ci0rfQotKwotK3N0cnVjdCByZWdzZXRfaW5mbyB0YXJnZXRfcmVnc2V0 c1tdID0gewotKyAgeyBQVFJBQ0VfR0VUUkVHUywgUFRSQUNFX1NFVFJFR1MsIHNpemVvZiAoZWxm X2dyZWdzZXRfdCksCi0rICAgIEdFTkVSQUxfUkVHUywKLSsgICAgeDg2XzY0X2ZpbGxfZ3JlZ3Nl dCwgeDg2XzY0X3N0b3JlX2dyZWdzZXQgfSwKLSsgIHsgUFRSQUNFX0dFVEZQUkVHUywgUFRSQUNF X1NFVEZQUkVHUywgc2l6ZW9mIChlbGZfZnByZWdzZXRfdCksCi0rICAgIEZQX1JFR1MsCi0rICAg IHg4Nl82NF9maWxsX2ZwcmVnc2V0LCB4ODZfNjRfc3RvcmVfZnByZWdzZXQgfSwKLSsgIHsgMCwg MCwgLTEsIC0xLCBOVUxMLCBOVUxMIH0KLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIHg4Nl82NF9icmVha3BvaW50W10gPSB7IDB4Q0MgfTsKLSsjZGVmaW5lIHg4Nl82NF9icmVh a3BvaW50X2xlbiAxCi0rICAgICAgICAgICAgICAgIAotK2V4dGVybiBpbnQgZGVidWdfdGhyZWFk czsKLSsKLStzdGF0aWMgQ09SRV9BRERSCi0reDg2XzY0X2dldF9wYyAoKQotK3sKLSsgIHVuc2ln bmVkIGxvbmcgcGM7Ci0rCi0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJyaXAiLCAmcGMp OwotKwotKyAgaWYgKGRlYnVnX3RocmVhZHMpCi0rICAgIGZwcmludGYgKHN0ZGVyciwgInN0b3Ag cGMgKGJlZm9yZSBhbnkgZGVjcmVtZW50KSBpcyAlMDhseFxuIiwgcGMpOwotKyAgcmV0dXJuIHBj OwotK30KLSsKLStzdGF0aWMgdm9pZAotK3g4Nl82NF9zZXRfcGMgKENPUkVfQUREUiBuZXdwYykK LSt7Ci0rICBpZiAoZGVidWdfdGhyZWFkcykKLSsgICAgZnByaW50ZiAoc3RkZXJyLCAic2V0IHBj IHRvICUwOGx4XG4iLCAobG9uZykgbmV3cGMpOwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUg KCJyaXAiLCAmbmV3cGMpOwotK30KLSsKLStzdGF0aWMgaW50Ci0reDg2XzY0X2JyZWFrcG9pbnRf YXQgKENPUkVfQUREUiBwYykKLSt7Ci0rICB1bnNpZ25lZCBjaGFyIGM7Ci0rCi0rICByZWFkX2lu ZmVyaW9yX21lbW9yeSAocGMsICZjLCAxKTsKLSsgIGlmIChjID09IDB4Q0MpCi0rICAgIHJldHVy biAxOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotKwotK3N0cnVjdCBsaW51eF90YXJnZXRfb3BzIHRo ZV9sb3dfdGFyZ2V0ID0gewotKyAgaW5pdF9yZWdpc3RlcnNfeDg2XzY0X2xpbnV4LAotKyAgLTEs Ci0rICBOVUxMLAotKyAgTlVMTCwKLSsgIE5VTEwsCi0rICB4ODZfNjRfZ2V0X3BjLAotKyAgeDg2 XzY0X3NldF9wYywKLSsgIHg4Nl82NF9icmVha3BvaW50LCAgCi0rICB4ODZfNjRfYnJlYWtwb2lu dF9sZW4sCi0rICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotKyAgMSwK LSsgIHg4Nl82NF9icmVha3BvaW50X2F0LAotKyAgTlVMTCwKLSsgIE5VTEwsCi0rICBOVUxMLAot KyAgTlVMTCwKLSsgIE5VTEwsCi0rICBOVUxMLAotK307CiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnRo cmVhZC5oIGIvZ2RiL2dkYnRocmVhZC5oCiBpbmRleCBjZDI0ZWFmLi4xMTlhZjdkIDEwMDY0NAog LS0tIGEvZ2RiL2dkYnRocmVhZC5oCkBAIC01NDcwLDcgKzYzOTksNyBAQCBpbmRleCBjZDI0ZWFm Li4xMTlhZjdkIDEwMDY0NAogICAgIG9uY2UgZm9yIGVhY2gga25vd24gdGhyZWFkLiAgKi8KICB0 eXBlZGVmIGludCAoKnRocmVhZF9jYWxsYmFja19mdW5jKSAoc3RydWN0IHRocmVhZF9pbmZvICos IHZvaWQgKik7CiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlwZXMuYwot aW5kZXggMTZiMzRjYS4uYjVlNjExMCAxMDA2NDQKK2luZGV4IDExNzYwNmEuLjUzNmJlZTIgMTAw NjQ0CiAtLS0gYS9nZGIvZ2RidHlwZXMuYwogKysrIGIvZ2RiL2dkYnR5cGVzLmMKIEBAIC0zOSw2 ICszOSw5IEBACkBAIC01ODMyLDcgKzY3NjEsNyBAQCBpbmRleCAxNmIzNGNhLi5iNWU2MTEwIDEw MDY0NAogICAgcmV0dXJuIHR5cGU7CiAgfQogIAotQEAgLTI4ODksMzMgKzMwNTEsNDIgQEAgdHlw ZV9wYWlyX2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCitA QCAtMjk4NiwzMyArMzE0OCw0MiBAQCB0eXBlX3BhaXJfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhz LCBjb25zdCB2b2lkICppdGVtX3JocykKICB9CiAgCiAgLyogQWxsb2NhdGUgdGhlIGhhc2ggdGFi bGUgdXNlZCBieSBjb3B5X3R5cGVfcmVjdXJzaXZlIHRvIHdhbGsKQEAgLTU4OTAsNyArNjgxOSw3 IEBAIGluZGV4IDE2YjM0Y2EuLmI1ZTYxMTAgMTAwNjQ0CiAgICAgIHJldHVybiB0eXBlOwogIAog ICAgLyogVGhpcyB0eXBlIHNob3VsZG4ndCBiZSBwb2ludGluZyB0byBhbnkgdHlwZXMgaW4gb3Ro ZXIgb2JqZmlsZXM7Ci1AQCAtMjkzMCw4ICszMTAxLDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTMwMjcsOCArMzE5OCwxMCBAQCBjb3B5X3R5 cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgIG5ld190eXBlID0gYWxs b2NfdHlwZV9hcmNoIChnZXRfdHlwZV9hcmNoICh0eXBlKSk7CiAgCiAgICAvKiBXZSBtdXN0IGFk ZCB0aGUgbmV3IHR5cGUgdG8gdGhlIGhhc2ggdGFibGUgaW1tZWRpYXRlbHksIGluIGNhc2UKQEAg LTU5MDMsNyArNjgzMiw3IEBAIGluZGV4IDE2YjM0Y2EuLmI1ZTYxMTAgMTAwNjQ0CiAgICBzdG9y ZWQtPm9sZCA9IHR5cGU7CiAgICBzdG9yZWQtPm5ldyA9IG5ld190eXBlOwogICAgKnNsb3QgPSBz dG9yZWQ7Ci1AQCAtMjk0Miw2ICszMTE1LDE5IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTMwMzksNiArMzIxMiwxOSBAQCBjb3B5X3R5cGVfcmVj dXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgIFRZUEVfT0JKRklMRV9PV05FRCAo bmV3X3R5cGUpID0gMDsKICAgIFRZUEVfT1dORVIgKG5ld190eXBlKS5nZGJhcmNoID0gZ2V0X3R5 cGVfYXJjaCAodHlwZSk7CiAgCkBAIC01OTIzLDcgKzY4NTIsNyBAQCBpbmRleCAxNmIzNGNhLi5i NWU2MTEwIDEwMDY0NAogICAgaWYgKFRZUEVfTkFNRSAodHlwZSkpCiAgICAgIFRZUEVfTkFNRSAo bmV3X3R5cGUpID0geHN0cmR1cCAoVFlQRV9OQU1FICh0eXBlKSk7CiAgICBpZiAoVFlQRV9UQUdf TkFNRSAodHlwZSkpCi1AQCAtMjk1MCwxMiArMzEzNiw0NSBAQCBjb3B5X3R5cGVfcmVjdXJzaXZl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0zMDQ3LDEyICszMjMzLDQ1IEBAIGNvcHlf dHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgVFlQRV9JTlNUQU5D RV9GTEFHUyAobmV3X3R5cGUpID0gVFlQRV9JTlNUQU5DRV9GTEFHUyAodHlwZSk7CiAgICBUWVBF X0xFTkdUSCAobmV3X3R5cGUpID0gVFlQRV9MRU5HVEggKHR5cGUpOwogIApAQCAtNTk2OSw3ICs2 ODk4LDcgQEAgaW5kZXggMTZiMzRjYS4uYjVlNjExMCAxMDA2NDQKICAgICAgICBUWVBFX0ZJRUxE UyAobmV3X3R5cGUpID0gWENBTExPQyAobmZpZWxkcywgc3RydWN0IGZpZWxkKTsKICAgICAgICBm b3IgKGkgPSAwOyBpIDwgbmZpZWxkczsgaSsrKQogIAl7Ci1AQCAtMjk2NCw4ICszMTgzLDggQEAg Y29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzA2MSw4 ICszMjgwLDggQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs CiAgCSAgVFlQRV9GSUVMRF9CSVRTSVpFIChuZXdfdHlwZSwgaSkgPSBUWVBFX0ZJRUxEX0JJVFNJ WkUgKHR5cGUsIGkpOwogIAkgIGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKQogIAkgICAg VFlQRV9GSUVMRF9UWVBFIChuZXdfdHlwZSwgaSkKQEAgLTU5ODAsNyArNjkwOSw3IEBAIGluZGV4 IDE2YjM0Y2EuLmI1ZTYxMTAgMTAwNjQ0CiAgCSAgaWYgKFRZUEVfRklFTERfTkFNRSAodHlwZSwg aSkpCiAgCSAgICBUWVBFX0ZJRUxEX05BTUUgKG5ld190eXBlLCBpKSA9IAogIAkgICAgICB4c3Ry ZHVwIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpKTsKLUBAIC0yOTkyLDI0ICszMjExLDc1IEBA IGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTMwODks MjQgKzMzMDgsNzUgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCiAgCX0KICAgICAgfQogIApAQCAtNjA2Miw3ICs2OTkxLDcgQEAgaW5kZXggMTZiMzRjYS4u YjVlNjExMCAxMDA2NDQKICAgIC8qIE1heWJlIGNvcHkgdGhlIHR5cGVfc3BlY2lmaWMgYml0cy4K ICAKICAgICAgIE5PVEUgZHJvdy8yMDA1LTEyLTA5OiBXZSBkbyBub3QgY29weSB0aGUgQysrLXNw ZWNpZmljIGJpdHMgbGlrZQotQEAgLTMwMjcsNiArMzI5NywxNyBAQCBjb3B5X3R5cGVfcmVjdXJz aXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0zMTI0LDYgKzMzOTQsMTcgQEAgY29w eV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgICByZXR1cm4gbmV3 X3R5cGU7CiAgfQogIApAQCAtNjA4MCwxMyArNzAwOSwyNSBAQCBpbmRleCAxNmIzNGNhLi5iNWU2 MTEwIDEwMDY0NAogIC8qIE1ha2UgYSBjb3B5IG9mIHRoZSBnaXZlbiBUWVBFLCBleGNlcHQgdGhh dCB0aGUgcG9pbnRlciAmIHJlZmVyZW5jZQogICAgIHR5cGVzIGFyZSBub3QgcHJlc2VydmVkLgog ICAgIAotQEAgLTMwNDksNiArMzMzMCwxOTkgQEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlw ZSAqdHlwZSkKK0BAIC0zMTQ2LDYgKzM0MjcsMjExIEBAIGNvcHlfdHlwZSAoY29uc3Qgc3RydWN0 IHR5cGUgKnR5cGUpCiAgICByZXR1cm4gbmV3X3R5cGU7CiAgfQogIAogKy8qIENhbGxiYWNrIHR5 cGUgZm9yIG1haW5fdHlwZV9jcmF3bC4gICovCiArdHlwZWRlZiBpbnQgKCptYWluX3R5cGVfY3Jh d2xfaXRlcikgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lkICpkYXRhKTsKICsKKysjaWYgMAorKwor Ky8qIEFsbG9jYXRlIGEgaGFzaCB0YWJsZSB3aGljaCBpcyB1c2VkIHdoZW4gZnJlZWluZyBhIHN0 cnVjdCB0eXBlLiAgKi8KKysKKytzdGF0aWMgaHRhYl90CisrY3JlYXRlX2RlbGV0ZWRfdHlwZXNf aGFzaCAodm9pZCkKKyt7CisrICByZXR1cm4gaHRhYl9jcmVhdGUgKDEsIGh0YWJfaGFzaF9wb2lu dGVyLCBodGFiX2VxX3BvaW50ZXIsIE5VTEwpOworK30KKysKKysjZW5kaWYKKysKICsvKiBJdGVy YXRlIGFsbCBtYWluX3R5cGUgc3RydWN0dXJlcyByZWFjaGFibGUgdGhyb3VnaCBhbnkgYHN0cnVj dCB0eXBlIConIGZyb20KICsgICBUWVBFLiAgSVRFUiB3aWxsIGJlIGNhbGxlZCBvbmx5IGZvciBv bmUgdHlwZSBvZiBlYWNoIG1haW5fdHlwZSwgdXNlCiArICAgVFlQRV9DSEFJTiB0cmF2ZXJzYWwg dG8gZmluZCBhbGwgdGhlIHR5cGUgaW5zdGFuY2VzLiAgSVRFUiBpcyBiZWluZyBjYWxsZWQKQEAg LTYyODAsNyArNzIyMSw3IEBAIGluZGV4IDE2YjM0Y2EuLmI1ZTYxMTAgMTAwNjQ0CiAgCiAgLyog SGVscGVyIGZ1bmN0aW9ucyB0byBpbml0aWFsaXplIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0eXBl cy4gICovCiAgCi1AQCAtMzUzOSw2ICs0MDEzLDExIEBAIHZvaWQKK0BAIC0zNjM2LDYgKzQxMjIs MTEgQEAgdm9pZAogIF9pbml0aWFsaXplX2dkYnR5cGVzICh2b2lkKQogIHsKICAgIGdkYnR5cGVz X2RhdGEgPSBnZGJhcmNoX2RhdGFfcmVnaXN0ZXJfcG9zdF9pbml0IChnZGJ0eXBlc19wb3N0X2lu aXQpOwpAQCAtNjI5Myw3ICs3MjM0LDcgQEAgaW5kZXggMTZiMzRjYS4uYjVlNjExMCAxMDA2NDQK ICAKICAgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2NtZCAoIm92ZXJsb2FkIiwgbm9fY2xhc3MsICZv dmVybG9hZF9kZWJ1ZywgXygiXAogZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5oIGIvZ2RiL2dk YnR5cGVzLmgKLWluZGV4IDhlNzNjYTAuLjg1ODg4ZTEgMTAwNjQ0CitpbmRleCAzODBmNzJhLi41 NGM4NzM5IDEwMDY0NAogLS0tIGEvZ2RiL2dkYnR5cGVzLmgKICsrKyBiL2dkYi9nZGJ0eXBlcy5o CiBAQCAtMTM4LDYgKzEzOCw4IEBAIGVudW0gdHlwZV9jb2RlCkBAIC02NDYyLDcgKzc0MDMsMjEg QEAgaW5kZXggOGU3M2NhMC4uODU4ODhlMSAxMDA2NDQKICAgIH0gdHlwZV9zcGVjaWZpYzsKICB9 OwogIAotQEAgLTkwMCw5ICs5NzUsOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90 eXBlIChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC04MzksMTMgKzkxNCw2IEBAIHN0cnVjdCBjcGx1c19z dHJ1Y3RfdHlwZQorICAgICBpbnQgaXNfZHluYW1pYyA6IDI7CisgICB9OworIAorLS8qIFN0cnVj dCB1c2VkIGluIGNvbXB1dGluZyB2aXJ0dWFsIGJhc2UgbGlzdCAqLworLXN0cnVjdCB2YmFzZQor LSAgeworLSAgICBzdHJ1Y3QgdHlwZSAqdmJhc2V0eXBlOwkvKiBwb2ludGVyIHRvIHZpcnR1YWwg YmFzZSAqLworLSAgICBzdHJ1Y3QgdmJhc2UgKm5leHQ7CQkvKiBuZXh0IGluIGNoYWluICovCist ICB9OworLQorIC8qIFN0cnVjdCB1c2VkIGZvciByYW5raW5nIGEgZnVuY3Rpb24gZm9yIG92ZXJs b2FkIHJlc29sdXRpb24gKi8KKyBzdHJ1Y3QgYmFkbmVzc192ZWN0b3IKKyAgIHsKK0BAIC05MDAs OSArOTY4LDkgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5 cGUgKik7CiAgI2RlZmluZSBUWVBFX1BPSU5URVJfVFlQRSh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+ cG9pbnRlcl90eXBlCiAgI2RlZmluZSBUWVBFX1JFRkVSRU5DRV9UWVBFKHRoaXN0eXBlKSAodGhp c3R5cGUpLT5yZWZlcmVuY2VfdHlwZQogICNkZWZpbmUgVFlQRV9DSEFJTih0aGlzdHlwZSkgKHRo aXN0eXBlKS0+Y2hhaW4KQEAgLTY0NzUsNyArNzQzMCw3IEBAIGluZGV4IDhlNzNjYTAuLjg1ODg4 ZTEgMTAwNjQ0CiAgICAgY2FsbHMgY2hlY2tfdHlwZWRlZiwgVFlQRV9MRU5HVEggKFZBTFVFX1RZ UEUgKFgpKSBpcyBzYWZlLiAgKi8KICAjZGVmaW5lIFRZUEVfTEVOR1RIKHRoaXN0eXBlKSAodGhp c3R5cGUpLT5sZW5ndGgKICAvKiBOb3RlIHRoYXQgVFlQRV9DT0RFIGNhbiBiZSBUWVBFX0NPREVf VFlQRURFRiwgc28gaWYgeW91IHdhbnQgdGhlIHJlYWwKLUBAIC05MTEsMTUgKzk4NiwyNiBAQCBl eHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC05 MTEsMTUgKzk3OSwyNiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1 Y3QgdHlwZSAqKTsKICAjZGVmaW5lIFRZUEVfTkZJRUxEUyh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZ UEUodGhpc3R5cGUpLT5uZmllbGRzCiAgI2RlZmluZSBUWVBFX0ZJRUxEUyh0aGlzdHlwZSkgVFlQ RV9NQUlOX1RZUEUodGhpc3R5cGUpLT5mbGRzX2JuZHMuZmllbGRzCiAgI2RlZmluZSBUWVBFX1RF TVBMQVRFX0FSR1ModGhpc3R5cGUpIFRZUEVfQ1BMVVNfU1BFQ0lGSUModGhpc3R5cGUpLT50ZW1w bGF0ZV9hcmdzCkBAIC02NTA0LDcgKzc0NTksNyBAQCBpbmRleCA4ZTczY2EwLi44NTg4OGUxIDEw MDY0NAogIAogIC8qIE1vdG8tc3BlY2lmaWMgc3R1ZmYgZm9yIEZPUlRSQU4gYXJyYXlzICovCiAg Ci1AQCAtOTI4LDExICsxMDE0LDIzIEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5 cGUgKHN0cnVjdCB0eXBlICopOworQEAgLTkyOCwxMSArMTAwNywyMyBAQCBleHRlcm4gdm9pZCBh bGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAjZGVmaW5lIFRZUEVfQVJS QVlfTE9XRVJfQk9VTkRfSVNfVU5ERUZJTkVEKGFycmF5dHlwZSkgXAogICAgIFRZUEVfTE9XX0JP VU5EX1VOREVGSU5FRChUWVBFX0lOREVYX1RZUEUoYXJyYXl0eXBlKSkKICAKQEAgLTY1MjksNyAr NzQ4NCw3IEBAIGluZGV4IDhlNzNjYTAuLjg1ODg4ZTEgMTAwNjQ0CiAgCiAgLyogQysrICovCiAg Ci1AQCAtOTYxLDYgKzEwNTksNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBl IChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC05NjEsNiArMTA1Miw3IEBAIGV4dGVybiB2b2lkIGFsbG9j YXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwogICNkZWZpbmUgVFlQRV9HTkFUX1NQ RUNJRklDKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPnR5cGVfc3BlY2lmaWMu Z25hdF9zdHVmZgogICNkZWZpbmUgVFlQRV9ERVNDUklQVElWRV9UWVBFKHRoaXN0eXBlKSBUWVBF X0dOQVRfU1BFQ0lGSUModGhpc3R5cGUpLT5kZXNjcmlwdGl2ZV90eXBlCiAgI2RlZmluZSBUWVBF X0NBTExJTkdfQ09OVkVOVElPTih0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT50 eXBlX3NwZWNpZmljLmNhbGxpbmdfY29udmVudGlvbgpAQCAtNjUzNyw3ICs3NDkyLDcgQEAgaW5k ZXggOGU3M2NhMC4uODU4ODhlMSAxMDA2NDQKICAjZGVmaW5lIFRZUEVfQkFTRUNMQVNTKHRoaXN0 eXBlLGluZGV4KSBUWVBFX0ZJRUxEX1RZUEUodGhpc3R5cGUsIGluZGV4KQogICNkZWZpbmUgVFlQ RV9OX0JBU0VDTEFTU0VTKHRoaXN0eXBlKSBUWVBFX0NQTFVTX1NQRUNJRklDKHRoaXN0eXBlKS0+ bl9iYXNlY2xhc3NlcwogICNkZWZpbmUgVFlQRV9CQVNFQ0xBU1NfTkFNRSh0aGlzdHlwZSxpbmRl eCkgVFlQRV9GSUVMRF9OQU1FKHRoaXN0eXBlLCBpbmRleCkKLUBAIC05NzksNyArMTA3OCw2IEBA IGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOworQEAg LTk3OSw3ICsxMDcxLDYgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3Ry dWN0IHR5cGUgKik7CiAgI2RlZmluZSBGSUVMRF9CSVRQT1ModGhpc2ZsZCkgKCh0aGlzZmxkKS5s b2MuYml0cG9zKQogICNkZWZpbmUgRklFTERfU1RBVElDX1BIWVNOQU1FKHRoaXNmbGQpICgodGhp c2ZsZCkubG9jLnBoeXNuYW1lKQogICNkZWZpbmUgRklFTERfU1RBVElDX1BIWVNBRERSKHRoaXNm bGQpICgodGhpc2ZsZCkubG9jLnBoeXNhZGRyKQpAQCAtNjU0NSw3ICs3NTAwLDcgQEAgaW5kZXgg OGU3M2NhMC4uODU4ODhlMSAxMDA2NDQKICAjZGVmaW5lIFNFVF9GSUVMRF9CSVRQT1ModGhpc2Zs ZCwgYml0cG9zKQkJCVwKICAgIChGSUVMRF9MT0NfS0lORCAodGhpc2ZsZCkgPSBGSUVMRF9MT0Nf S0lORF9CSVRQT1MsCQlcCiAgICAgRklFTERfQklUUE9TICh0aGlzZmxkKSA9IChiaXRwb3MpKQot QEAgLTk4OSw5ICsxMDg3LDYgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAo c3RydWN0IHR5cGUgKik7CitAQCAtOTg5LDkgKzEwODAsNiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0 ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAjZGVmaW5lIFNFVF9GSUVMRF9QSFlT QUREUih0aGlzZmxkLCBhZGRyKQkJCVwKICAgIChGSUVMRF9MT0NfS0lORCAodGhpc2ZsZCkgPSBG SUVMRF9MT0NfS0lORF9QSFlTQUREUiwJCVwKICAgICBGSUVMRF9TVEFUSUNfUEhZU0FERFIgKHRo aXNmbGQpID0gKGFkZHIpKQpAQCAtNjU1NSw3ICs3NTEwLDcgQEAgaW5kZXggOGU3M2NhMC4uODU4 ODhlMSAxMDA2NDQKICAjZGVmaW5lIEZJRUxEX0FSVElGSUNJQUwodGhpc2ZsZCkgKCh0aGlzZmxk KS5hcnRpZmljaWFsKQogICNkZWZpbmUgRklFTERfQklUU0laRSh0aGlzZmxkKSAoKHRoaXNmbGQp LmJpdHNpemUpCiAgCi1AQCAtMTAwMiw3ICsxMDk3LDYgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVf Z25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CitAQCAtMTAwMiw3ICsxMDkwLDYgQEAgZXh0 ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CiAgI2RlZmlu ZSBUWVBFX0ZJRUxEX0JJVFBPUyh0aGlzdHlwZSwgbikgRklFTERfQklUUE9TIChUWVBFX0ZJRUxE ICh0aGlzdHlwZSwgbikpCiAgI2RlZmluZSBUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTTkFNRSh0aGlz dHlwZSwgbikgRklFTERfU1RBVElDX1BIWVNOQU1FIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikp CiAgI2RlZmluZSBUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTQUREUih0aGlzdHlwZSwgbikgRklFTERf U1RBVElDX1BIWVNBRERSIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCkBAIC02NTYzLDcgKzc1 MTgsNyBAQCBpbmRleCA4ZTczY2EwLi44NTg4OGUxIDEwMDY0NAogICNkZWZpbmUgVFlQRV9GSUVM RF9BUlRJRklDSUFMKHRoaXN0eXBlLCBuKSBGSUVMRF9BUlRJRklDSUFMKFRZUEVfRklFTEQodGhp c3R5cGUsbikpCiAgI2RlZmluZSBUWVBFX0ZJRUxEX0JJVFNJWkUodGhpc3R5cGUsIG4pIEZJRUxE X0JJVFNJWkUoVFlQRV9GSUVMRCh0aGlzdHlwZSxuKSkKICAjZGVmaW5lIFRZUEVfRklFTERfUEFD S0VEKHRoaXN0eXBlLCBuKSAoRklFTERfQklUU0laRShUWVBFX0ZJRUxEKHRoaXN0eXBlLG4pKSE9 MCkKLUBAIC0xMzMzLDYgKzE0MjcsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJy YXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKK0BAIC0xMzMzLDYgKzE0MjAs MTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUg Kiwgc3RydWN0IHR5cGUgKiwKICAJCQkJICAgICAgIHN0cnVjdCB0eXBlICopOwogIGV4dGVybiBz dHJ1Y3QgdHlwZSAqbG9va3VwX2FycmF5X3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwg aW50KTsKICAKQEAgLTY1ODIsMTYgKzc1MzcsMTYgQEAgaW5kZXggOGU3M2NhMC4uODU4ODhlMSAx MDA2NDQKICBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9zdHJpbmdfdHlwZSAoc3RydWN0IHR5 cGUgKiwgc3RydWN0IHR5cGUgKiwKICAJCQkJCXN0cnVjdCB0eXBlICopOwogIGV4dGVybiBzdHJ1 Y3QgdHlwZSAqbG9va3VwX3N0cmluZ19yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGlu dCk7Ci1AQCAtMTM2OSw2ICsxNDc1LDggQEAgZXh0ZXJuIGludCBnZXRfZGlzY3JldGVfYm91bmRz IChzdHJ1Y3QgdHlwZSAqLCBMT05HRVNUICosIExPTkdFU1QgKik7CitAQCAtMTM3NSw2ICsxNDc0 LDggQEAgZXh0ZXJuIGludCBpc19wdWJsaWNfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0cnVj dCB0eXBlICopOwogIAotIGV4dGVybiBpbnQgaXNfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0 cnVjdCB0eXBlICopOworIGV4dGVybiBpbnQgaXNfdW5pcXVlX2FuY2VzdG9yIChzdHJ1Y3QgdHlw ZSAqLCBzdHJ1Y3QgdmFsdWUgKik7CiAgCiArZXh0ZXJuIHZvaWQgdHlwZV9tYXJrX3VzZWQgKHN0 cnVjdCB0eXBlICp0eXBlKTsKICsKICAvKiBPdmVybG9hZCByZXNvbHV0aW9uICovCiAgCiAgI2Rl ZmluZSBMRU5HVEhfTUFUQ0goYnYpICgoYnYpLT5yYW5rWzBdKQotQEAgLTE0MzEsMTAgKzE1Mzks MTEgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2VfcHJpbnRfdHlwZSAoY2hhciAqLCBpbnQpOwor QEAgLTE0MzcsMTAgKzE1MzgsMTEgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2VfcHJpbnRfdHlw ZSAoY2hhciAqLCBpbnQpOwogIAogIGV4dGVybiBodGFiX3QgY3JlYXRlX2NvcGllZF90eXBlc19o YXNoIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CiAgCkBAIC02NjA1LDIxICs3NTYwLDcyIEBA IGluZGV4IDhlNzNjYTAuLjg1ODg4ZTEgMTAwNjQ0CiArZXh0ZXJuIHZvaWQgZnJlZV9hbGxfdHlw ZXMgKHZvaWQpOwogKwogICNlbmRpZiAvKiBHREJUWVBFU19IICovCi1kaWZmIC0tZ2l0IGEvZ2Ri L2kzODYtbGludXgtbmF0LmMgYi9nZGIvaTM4Ni1saW51eC1uYXQuYwotaW5kZXggZmY4MzdmMi4u MTcxMDQ4NyAxMDA2NDQKLS0tLSBhL2dkYi9pMzg2LWxpbnV4LW5hdC5jCi0rKysgYi9nZGIvaTM4 Ni1saW51eC1uYXQuYwotQEAgLTY5Niw2ICs2OTYsMjEgQEAgaTM4Nl9saW51eF9kcl91bnNldF9z dGF0dXMgKHVuc2lnbmVkIGxvbmcgbWFzaykKLSAgICAgfQotIH0KK2RpZmYgLS1naXQgYS9nZGIv Z251LXYzLWFiaS5jIGIvZ2RiL2dudS12My1hYmkuYworaW5kZXggNTMyMTQwMS4uYjE4ODJhMiAx MDA2NDQKKy0tLSBhL2dkYi9nbnUtdjMtYWJpLmMKKysrKyBiL2dkYi9nbnUtdjMtYWJpLmMKK0BA IC0yNiw2ICsyNiw3IEBACisgI2luY2x1ZGUgImRlbWFuZ2xlLmgiCisgI2luY2x1ZGUgIm9iamZp bGVzLmgiCisgI2luY2x1ZGUgInZhbHByaW50LmgiCisrI2luY2x1ZGUgImMtbGFuZy5oIgogIAot Ky8qIFNlZSBpMzg2X2RyX2xvd190eXBlLmRldGFjaC4gIERvIG5vdCB1c2Ugd3JhcHBlcnMgaTM4 Nl9saW51eF9kcl9zZXRfY29udHJvbAotKyAgIG9yIGkzODZfbGludXhfZHJfcmVzZXRfYWRkciBh cyB0aGV5IHdvdWxkIG1vZGlmeSB0aGUgcmVnaXN0ZXIgY2FjaGUKLSsgICAoaTM4Nl9saW51eF9k cikuICAqLwotKwotK3N0YXRpYyB2b2lkCi0raTM4Nl9saW51eF9kcl9kZXRhY2ggKHZvaWQpCi0r eworICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCisgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKK0BA IC00NTYsMTAgKzQ1Nyw4IEBAIGdudXYzX2ZpbmRfbWV0aG9kX2luIChzdHJ1Y3QgdHlwZSAqZG9t YWluLCBDT1JFX0FERFIgdm9mZnNldCwKKyAJCSAgICAgIExPTkdFU1QgYWRqdXN0bWVudCkKKyB7 CisgICBpbnQgaTsKKy0gIGNvbnN0IGNoYXIgKnBoeXNuYW1lOworIAorICAgLyogU2VhcmNoIHRo aXMgY2xhc3MgZmlyc3QuICAqLworLSAgcGh5c25hbWUgPSBOVUxMOworICAgaWYgKGFkanVzdG1l bnQgPT0gMCkKKyAgICAgeworICAgICAgIGludCBsZW47CitAQCAtNTg3LDE1ICs1ODYsMjQgQEAg Z251djNfcHJpbnRfbWV0aG9kX3B0ciAoY29uc3QgZ2RiX2J5dGUgKmNvbnRlbnRzLAorIAl7Cisg CSAgY2hhciAqZGVtYW5nbGVkX25hbWUgPSBjcGx1c19kZW1hbmdsZSAocGh5c25hbWUsCisgCQkJ CQkJIERNR0xfQU5TSSB8IERNR0xfUEFSQU1TKTsKKy0JICBpZiAoZGVtYW5nbGVkX25hbWUgIT0g TlVMTCkKKysJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICImdmlydHVhbCAiKTsKKysJICBp ZiAoZGVtYW5nbGVkX25hbWUgPT0gTlVMTCkKKysJICAgIGZwdXRzX2ZpbHRlcmVkIChwaHlzbmFt ZSwgc3RyZWFtKTsKKysJICBlbHNlCisgCSAgICB7CistCSAgICAgIGZwcmludGZfZmlsdGVyZWQg KHN0cmVhbSwgIiZ2aXJ0dWFsICIpOworIAkgICAgICBmcHV0c19maWx0ZXJlZCAoZGVtYW5nbGVk X25hbWUsIHN0cmVhbSk7CisgCSAgICAgIHhmcmVlIChkZW1hbmdsZWRfbmFtZSk7CistCSAgICAg IHJldHVybjsKKyAJICAgIH0KKysJICByZXR1cm47CisgCX0KKyAgICAgfQorKyAgZWxzZSBpZiAo cHRyX3ZhbHVlICE9IDApCisrICAgIHsKKysgICAgICAvKiBGb3VuZCBhIG5vbi12aXJ0dWFsIGZ1 bmN0aW9uOiBwcmludCBvdXQgdGhlIHR5cGUuICAqLworKyAgICAgIGZwdXRzX2ZpbHRlcmVkICgi KCIsIHN0cmVhbSk7CisrICAgICAgY19wcmludF90eXBlICh0eXBlLCAiIiwgc3RyZWFtLCAtMSwg MCk7CisrICAgICAgZnB1dHNfZmlsdGVyZWQgKCIpICIsIHN0cmVhbSk7CisrICAgIH0KKyAKKyAg IC8qIFdlIGRpZG4ndCBmaW5kIGl0OyBwcmludCB0aGUgcmF3IGRhdGEuICAqLworICAgaWYgKHZi aXQpCitkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbGludXgtbmF0LmMgYi9nZGIvaTM4Ni1saW51eC1u YXQuYworaW5kZXggZmY4MzdmMi4uMTcxMDQ4NyAxMDA2NDQKKy0tLSBhL2dkYi9pMzg2LWxpbnV4 LW5hdC5jCisrKysgYi9nZGIvaTM4Ni1saW51eC1uYXQuYworQEAgLTY5Niw2ICs2OTYsMjEgQEAg aTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXMgKHVuc2lnbmVkIGxvbmcgbWFzaykKKyAgICAgfQor IH0KKyAKKysvKiBTZWUgaTM4Nl9kcl9sb3dfdHlwZS5kZXRhY2guICBEbyBub3QgdXNlIHdyYXBw ZXJzIGkzODZfbGludXhfZHJfc2V0X2NvbnRyb2wKKysgICBvciBpMzg2X2xpbnV4X2RyX3Jlc2V0 X2FkZHIgYXMgdGhleSB3b3VsZCBtb2RpZnkgdGhlIHJlZ2lzdGVyIGNhY2hlCisrICAgKGkzODZf bGludXhfZHIpLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2kzODZfbGludXhfZHJfZGV0YWNoICh2 b2lkKQorK3sKICsgIGludCByZWdudW07CiArCiArICBpMzg2X2xpbnV4X2RyX3NldCAoaW5mZXJp b3JfcHRpZCwgRFJfQ09OVFJPTCwgMCk7CkBAIC02NjkzLDEwICs3Njk5LDEwIEBAIGluZGV4IDcz MTdlN2QuLmVhOTE0YTUgMTAwNjQ0CiAgICB9OwogIAogZGlmZiAtLWdpdCBhL2dkYi9pbmZjbWQu YyBiL2dkYi9pbmZjbWQuYwotaW5kZXggMjFhMjIzMy4uMzRhMzcxOCAxMDA2NDQKK2luZGV4IGY5 OWE0YWUuLjU1OTk5MDggMTAwNjQ0CiAtLS0gYS9nZGIvaW5mY21kLmMKICsrKyBiL2dkYi9pbmZj bWQuYwotQEAgLTgwNSw3ICs4MDUsNyBAQCBuZXh0aV9jb21tYW5kIChjaGFyICpjb3VudF9zdHJp bmcsIGludCBmcm9tX3R0eSkKK0BAIC04MDYsNyArODA2LDcgQEAgbmV4dGlfY29tbWFuZCAoY2hh ciAqY291bnRfc3RyaW5nLCBpbnQgZnJvbV90dHkpCiAgICBzdGVwXzEgKDEsIDEsIGNvdW50X3N0 cmluZyk7CiAgfQogIApAQCAtNjcwNSw3ICs3NzExLDcgQEAgaW5kZXggMjFhMjIzMy4uMzRhMzcx OCAxMDA2NDQKICBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAgKHZvaWQgKmFyZykK ICB7CiAgICBpbnQgdGhyZWFkID0gKiAoaW50ICopIGFyZzsKLUBAIC04NDUsMTAgKzg0NSwxMyBA QCBzdGVwXzEgKGludCBza2lwX3N1YnJvdXRpbmVzLCBpbnQgc2luZ2xlX2luc3QsIGNoYXIgKmNv dW50X3N0cmluZykKK0BAIC04NDYsMTAgKzg0NiwxMyBAQCBzdGVwXzEgKGludCBza2lwX3N1YnJv dXRpbmVzLCBpbnQgc2luZ2xlX2luc3QsIGNoYXIgKmNvdW50X3N0cmluZykKICAKICAgIGlmICgh c2luZ2xlX2luc3QgfHwgc2tpcF9zdWJyb3V0aW5lcykJCS8qIGxlYXZlIHNpIGNvbW1hbmQgYWxv bmUgKi8KICAgICAgewpAQCAtNjcxOSw3ICs3NzI1LDcgQEAgaW5kZXggMjFhMjIzMy4uMzRhMzcx OCAxMDA2NDQKICAKICAgICAgICBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sb25nam1wX2JyZWFrcG9p bnRfY2xlYW51cCwgJnRocmVhZCk7CiAgICAgIH0KLUBAIC0xMTk3LDYgKzEyMDAsMTUgQEAgc2ln bmFsX2NvbW1hbmQgKGNoYXIgKnNpZ251bV9leHAsIGludCBmcm9tX3R0eSkKK0BAIC0xMTk4LDYg KzEyMDEsMTUgQEAgc2lnbmFsX2NvbW1hbmQgKGNoYXIgKnNpZ251bV9leHAsIGludCBmcm9tX3R0 eSkKICAgIHByb2NlZWQgKChDT1JFX0FERFIpIC0xLCBvdXJzaWcsIDApOwogIH0KICAKQEAgLTY3 MzUsNyArNzc0MSw3IEBAIGluZGV4IDIxYTIyMzMuLjM0YTM3MTggMTAwNjQ0CiAgLyogUHJvY2Vl ZCB1bnRpbCB3ZSByZWFjaCBhIGRpZmZlcmVudCBzb3VyY2UgbGluZSB3aXRoIHBjIGdyZWF0ZXIg dGhhbgogICAgIG91ciBjdXJyZW50IG9uZSBvciBleGl0IHRoZSBmdW5jdGlvbi4gIFdlIHNraXAg Y2FsbHMgaW4gYm90aCBjYXNlcy4KICAKLUBAIC0xMjEzLDYgKzEyMjUsOCBAQCB1bnRpbF9uZXh0 X2NvbW1hbmQgKGludCBmcm9tX3R0eSkKK0BAIC0xMjE0LDYgKzEyMjYsOCBAQCB1bnRpbF9uZXh0 X2NvbW1hbmQgKGludCBmcm9tX3R0eSkKICAgIHN0cnVjdCBzeW1ib2wgKmZ1bmM7CiAgICBzdHJ1 Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsKICAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBpbmZl cmlvcl90aHJlYWQgKCk7CkBAIC02NzQ0LDcgKzc3NTAsNyBAQCBpbmRleCAyMWEyMjMzLi4zNGEz NzE4IDEwMDY0NAogIAogICAgY2xlYXJfcHJvY2VlZF9zdGF0dXMgKCk7CiAgICBzZXRfc3RlcF9m cmFtZSAoKTsKLUBAIC0xMjQ4LDcgKzEyNjIsMTkgQEAgdW50aWxfbmV4dF9jb21tYW5kIChpbnQg ZnJvbV90dHkpCitAQCAtMTI0OSw3ICsxMjYzLDE5IEBAIHVudGlsX25leHRfY29tbWFuZCAoaW50 IGZyb21fdHR5KQogIAogICAgdHAtPnN0ZXBfbXVsdGkgPSAwOwkJLyogT25seSBvbmUgY2FsbCB0 byBwcm9jZWVkICovCiAgCkBAIC02NzY0LDcgKzc3NzAsNyBAQCBpbmRleCAyMWEyMjMzLi4zNGEz NzE4IDEwMDY0NAogIH0KICAKICBzdGF0aWMgdm9pZAotQEAgLTE0MjUsNiArMTQ1MSw3IEBAIGZp bmlzaF9jb21tYW5kX2NvbnRpbnVhdGlvbiAodm9pZCAqYXJnKQorQEAgLTE0MjYsNiArMTQ1Miw3 IEBAIGZpbmlzaF9jb21tYW5kX2NvbnRpbnVhdGlvbiAodm9pZCAqYXJnKQogICAgaWYgKGJzICE9 IE5VTEwgJiYgdHAtPnByb2NlZWRfdG9fZmluaXNoKQogICAgICBvYnNlcnZlcl9ub3RpZnlfbm9y bWFsX3N0b3AgKGJzLCAxIC8qIHByaW50IGZyYW1lICovKTsKICAgIGRlbGV0ZV9icmVha3BvaW50 IChhLT5icmVha3BvaW50KTsKQEAgLTY3NzIsNyArNzc3OCw3IEBAIGluZGV4IDIxYTIyMzMuLjM0 YTM3MTggMTAwNjQ0CiAgfQogIAogIHN0YXRpYyB2b2lkCi1AQCAtMTUwOCw2ICsxNTM1LDcgQEAg ZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBzeW1ib2wgKmZ1bmN0aW9uLCBzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWUpCitAQCAtMTUwOSw2ICsxNTM2LDcgQEAgZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBz eW1ib2wgKmZ1bmN0aW9uLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCiAgICBzdHJ1Y3QgYnJl YWtwb2ludCAqYnJlYWtwb2ludDsKICAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CiAgICBz dHJ1Y3QgZmluaXNoX2NvbW1hbmRfY29udGludWF0aW9uX2FyZ3MgKmNhcmdzOwpAQCAtNjc4MCw3 ICs3Nzg2LDcgQEAgaW5kZXggMjFhMjIzMy4uMzRhMzcxOCAxMDA2NDQKICAKICAgIHNhbCA9IGZp bmRfcGNfbGluZSAoZ2V0X2ZyYW1lX3BjIChmcmFtZSksIDApOwogICAgc2FsLnBjID0gZ2V0X2Zy YW1lX3BjIChmcmFtZSk7Ci1AQCAtMTUxOCw2ICsxNTQ2LDEwIEBAIGZpbmlzaF9mb3J3YXJkIChz dHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorQEAgLTE1 MTksNiArMTU0NywxMCBAQCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24s IHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAKICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51 cF9kZWxldGVfYnJlYWtwb2ludCAoYnJlYWtwb2ludCk7CiAgCkBAIC02NzkyLDEwICs3Nzk4LDEw IEBAIGluZGV4IDIxYTIyMzMuLjM0YTM3MTggMTAwNjQ0CiAgICBjYXJncyA9IHhtYWxsb2MgKHNp emVvZiAoKmNhcmdzKSk7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2luZmVyaW9yLmggYi9nZGIvaW5m ZXJpb3IuaAotaW5kZXggOTc5OGVmMS4uZTk3ODNmYiAxMDA2NDQKK2luZGV4IGU1NTdkNmMuLmQ0 YWUxZGYgMTAwNjQ0CiAtLS0gYS9nZGIvaW5mZXJpb3IuaAogKysrIGIvZ2RiL2luZmVyaW9yLmgK LUBAIC0yNzksNiArMjc5LDggQEAgZXh0ZXJuIHZvaWQgaW50ZXJydXB0X3RhcmdldF9jb21tYW5k IChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpOworQEAgLTI3NSw2ICsyNzUsOCBAQCBleHRlcm4g dm9pZCBpbnRlcnJ1cHRfdGFyZ2V0X2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSk7 CiAgCiAgZXh0ZXJuIHZvaWQgaW50ZXJydXB0X3RhcmdldF8xIChpbnQgYWxsX3RocmVhZHMpOwog IApAQCAtNjgwNSw3ICs3ODExLDcgQEAgaW5kZXggOTc5OGVmMS4uZTk3ODNmYiAxMDA2NDQKICAK ICBleHRlcm4gdm9pZCBub3RpY2VfbmV3X2luZmVyaW9yIChwdGlkX3QsIGludCwgaW50KTsKIGRp ZmYgLS1naXQgYS9nZGIvaW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMKLWluZGV4IDQyNmI4MTYuLmJk NjUyNTggMTAwNjQ0CitpbmRleCAwNmYzZWEwLi5mZTM3MTllIDEwMDY0NAogLS0tIGEvZ2RiL2lu ZnJ1bi5jCiArKysgYi9nZGIvaW5mcnVuLmMKIEBAIC00NSw2ICs0NSw4IEBACkBAIC02ODE3LDcg Kzc4MjMsNyBAQCBpbmRleCA0MjZiODE2Li5iZDY1MjU4IDEwMDY0NAogICNpbmNsdWRlICJnZGJf YXNzZXJ0LmgiCiAgI2luY2x1ZGUgIm1pL21pLWNvbW1vbi5oIgogICNpbmNsdWRlICJldmVudC10 b3AuaCIKLUBAIC0yMDEzLDYgKzIwMTUsOCBAQCBzdGF0aWMgdm9pZCBpbnNlcnRfc3RlcF9yZXN1 bWVfYnJlYWtwb2ludF9hdF9zYWwgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTIwMTAs NiArMjAxMiw4IEBAIHN0YXRpYyB2b2lkIGluc2VydF9zdGVwX3Jlc3VtZV9icmVha3BvaW50X2F0 X3NhbCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgCQkJCQkJICBzdHJ1Y3Qgc3ltdGFiX2Fu ZF9saW5lIHNyX3NhbCwKICAJCQkJCQkgIHN0cnVjdCBmcmFtZV9pZCBzcl9pZCk7CiAgc3RhdGlj IHZvaWQgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICos IENPUkVfQUREUik7CkBAIC02ODI2LDcgKzc4MzIsNyBAQCBpbmRleCA0MjZiODE2Li5iZDY1MjU4 IDEwMDY0NAogIAogIHN0YXRpYyB2b2lkIHN0b3Bfc3RlcHBpbmcgKHN0cnVjdCBleGVjdXRpb25f Y29udHJvbF9zdGF0ZSAqZWNzKTsKICBzdGF0aWMgdm9pZCBwcmVwYXJlX3RvX3dhaXQgKHN0cnVj dCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKTsKLUBAIC0yOTQyLDYgKzI5NDYsMTAgQEAg aGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVj cykKK0BAIC0yOTMwLDYgKzI5MzQsMTAgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3Qg ZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKICAKICAgICAgICBzdG9wX3BjID0gcmVnY2Fj aGVfcmVhZF9wYyAoZ2V0X3RocmVhZF9yZWdjYWNoZSAoZWNzLT5wdGlkKSk7CiAgCkBAIC02ODM3 LDcgKzc4NDMsNyBAQCBpbmRleCA0MjZiODE2Li5iZDY1MjU4IDEwMDY0NAogICAgICAgIGVjcy0+ ZXZlbnRfdGhyZWFkLT5zdG9wX2Jwc3RhdAogIAk9IGJwc3RhdF9zdG9wX3N0YXR1cyAoZ2V0X3Jl Z2NhY2hlX2FzcGFjZSAoZ2V0X2N1cnJlbnRfcmVnY2FjaGUgKCkpLAogIAkJCSAgICAgIHN0b3Bf cGMsIGVjcy0+cHRpZCk7Ci1AQCAtMzAyNiw2ICszMDM0LDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9l dmVudCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCitAQCAtMzAxNCw2ICsz MDIyLDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9s X3N0YXRlICplY3MpCiAgCiAgICAgICAgc3RvcF9wYyA9IHJlZ2NhY2hlX3JlYWRfcGMgKGdldF90 aHJlYWRfcmVnY2FjaGUgKGVjcy0+cHRpZCkpOwogIApAQCAtNjg0OCw3ICs3ODU0LDcgQEAgaW5k ZXggNDI2YjgxNi4uYmQ2NTI1OCAxMDA2NDQKICAgICAgICAvKiBEbyB3aGF0ZXZlciBpcyBuZWNl c3NhcnkgdG8gdGhlIHBhcmVudCBicmFuY2ggb2YgdGhlIHZmb3JrLiAgKi8KICAgICAgICBoYW5k bGVfdmZvcmtfY2hpbGRfZXhlY19vcl9leGl0ICgxKTsKICAKLUBAIC0zNzg0LDIzICszNzk2LDMz IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgorQEAgLTM3NzIsMjMgKzM3ODQsMzMgQEAgcHJv Y2Vzc19ldmVudF9zdG9wX3Rlc3Q6CiAgCiAgCWVjcy0+ZXZlbnRfdGhyZWFkLT5zdGVwcGluZ19v dmVyX2JyZWFrcG9pbnQgPSAxOwogIApAQCAtNjg5NCw3ICs3OTAwLDcgQEAgaW5kZXggNDI2Yjgx Ni4uYmQ2NTI1OCAxMDA2NDQKICAJa2VlcF9nb2luZyAoZWNzKTsKICAJcmV0dXJuOwogIAotQEAg LTM4MTIsNiArMzgzNCw1MyBAQCBpbmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VN RSAoIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0KVxuIik7CitAQCAtMzgwMCw2ICszODIyLDUz IEBAIGluZnJ1bjogQlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FICghZ2RiYXJjaF9nZXRf bG9uZ2ptcF90YXJnZXQpXG4iKTsKICAJZ2RiX2Fzc2VydCAoZWNzLT5ldmVudF90aHJlYWQtPnN0 ZXBfcmVzdW1lX2JyZWFrcG9pbnQgIT0gTlVMTCk7CiAgCWRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVh a3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7CiAgCkBAIC02OTQ4LDcgKzc5NTQsNyBAQCBpbmRl eCA0MjZiODE2Li5iZDY1MjU4IDEwMDY0NAogIAllY3MtPmV2ZW50X3RocmVhZC0+c3RvcF9zdGVw ID0gMTsKICAJcHJpbnRfc3RvcF9yZWFzb24gKEVORF9TVEVQUElOR19SQU5HRSwgMCk7CiAgCXN0 b3Bfc3RlcHBpbmcgKGVjcyk7Ci1AQCAtNDgzMSw2ICs0OTAwLDk2IEBAIGluc2VydF9sb25nam1w X3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHBj KQorQEAgLTQ4MTksNiArNDg4OCw5NiBAQCBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2lu dCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYykKICAgICAgc2V0X21vbWVu dGFyeV9icmVha3BvaW50X2F0X3BjIChnZGJhcmNoLCBwYywgYnBfbG9uZ2ptcF9yZXN1bWUpOwog IH0KICAKQEAgLTcwNTcsMTEgKzgwNjMsMzE4IEBAIGluZGV4IDI0YjY2NzMuLjIyZWQ5NjAgMTAw NjQ0CiAgICBvcF9uYW1lX3N0YW5kYXJkLAogICAgZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCwK ICAgIGV2YWx1YXRlX3N1YmV4cF9qYXZhCitkaWZmIC0tZ2l0IGEvZ2RiL2xhbmd1YWdlLmggYi9n ZGIvbGFuZ3VhZ2UuaAoraW5kZXggYWFlZmIwMy4uYzI3NDU3MiAxMDA2NDQKKy0tLSBhL2dkYi9s YW5ndWFnZS5oCisrKysgYi9nZGIvbGFuZ3VhZ2UuaAorQEAgLTIzNyw3ICsyMzcsNiBAQCBzdHJ1 Y3QgbGFuZ3VhZ2VfZGVmbgorICAgICAgICB2YXJpYWJsZXMuICAqLworIAorICAgICBzdHJ1Y3Qg c3ltYm9sICooKmxhX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwpIChjb25zdCBjaGFyICosCistCQkJ CQkJIGNvbnN0IGNoYXIgKiwKKyAJCQkJCQkgY29uc3Qgc3RydWN0IGJsb2NrICosCisgCQkJCQkJ IGNvbnN0IGRvbWFpbl9lbnVtKTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvbGluZXNwZWMuYyBiL2dk Yi9saW5lc3BlYy5jCitpbmRleCA3NDkwMmI2Li5hOWI0ZjFlIDEwMDY0NAorLS0tIGEvZ2RiL2xp bmVzcGVjLmMKKysrKyBiL2dkYi9saW5lc3BlYy5jCitAQCAtNTAsOCArNTAsNiBAQCBleHRlcm4g Y2hhciAqb3BlcmF0b3JfY2hhcnMgKGNoYXIgKiwgY2hhciAqKik7Cisgc3RhdGljIHZvaWQgaW5p dGlhbGl6ZV9kZWZhdWx0cyAoc3RydWN0IHN5bXRhYiAqKmRlZmF1bHRfc3ltdGFiLAorIAkJCQkg aW50ICpkZWZhdWx0X2xpbmUpOworIAorLXN0YXRpYyB2b2lkIHNldF9mbGFncyAoY2hhciAqYXJn LCBpbnQgKmlzX3F1b3RlZCwgY2hhciAqKnBhcmVuX3BvaW50ZXIpOworLQorIHN0YXRpYyBzdHJ1 Y3Qgc3ltdGFic19hbmRfbGluZXMgZGVjb2RlX2luZGlyZWN0IChjaGFyICoqYXJncHRyKTsKKyAK KyBzdGF0aWMgY2hhciAqbG9jYXRlX2ZpcnN0X2hhbGYgKGNoYXIgKiphcmdwdHIsIGludCAqaXNf cXVvdGVfZW5jbG9zZWQpOworQEAgLTY4OCw5ICs2ODYsNiBAQCBkZWNvZGVfbGluZV8xIChjaGFy ICoqYXJncHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBzdHJ1Y3Qgc3ltdGFiICpkZWZhdWx0X3N5bXRh YiwKKyAgIHN0cnVjdCBzeW10YWIgKmZpbGVfc3ltdGFiID0gTlVMTDsKKyAKKyAgIGNoYXIgKmNv cHk7CistICAvKiBUaGlzIGlzIE5VTEwgaWYgdGhlcmUgYXJlIG5vIHBhcmVucyBpbiAqQVJHUFRS LCBvciBhIHBvaW50ZXIgdG8KKy0gICAgIHRoZSBjbG9zaW5nIHBhcmVudGhlc2lzIGlmIHRoZXJl IGFyZSBwYXJlbnMuICAqLworLSAgY2hhciAqcGFyZW5fcG9pbnRlcjsKKyAgIC8qIFRoaXMgc2F5 cyB3aGV0aGVyIG9yIG5vdCBzb21ldGhpbmcgaW4gKkFSR1BUUiBpcyBxdW90ZWQgd2l0aAorICAg ICAgY29tcGxldGVyX3F1b3RlcyAoaS5lLiB3aXRoIHNpbmdsZSBxdW90ZXMpLiAgKi8KKyAgIGlu dCBpc19xdW90ZWQ7CitAQCAtNzExLDEyICs3MDYsOSBAQCBkZWNvZGVfbGluZV8xIChjaGFyICoq YXJncHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBzdHJ1Y3Qgc3ltdGFiICpkZWZhdWx0X3N5bXRhYiwK KyAgIGlmICgqKmFyZ3B0ciA9PSAnKicpCisgICAgIHJldHVybiBkZWNvZGVfaW5kaXJlY3QgKGFy Z3B0cik7CisgCistICAvKiBTZXQgdmFyaW91cyBmbGFncy4gICdwYXJlbl9wb2ludGVyJyBpcyBp bXBvcnRhbnQgZm9yIG92ZXJsb2FkCistICAgICBjaGVja2luZywgd2hlcmUgd2UgYWxsb3cgdGhp bmdzIGxpa2U6CistICAgICAgICAoZ2RiKSBicmVhayBjOjpmKGludCkKKy0gICovCistCistICBz ZXRfZmxhZ3MgKCphcmdwdHIsICZpc19xdW90ZWQsICZwYXJlbl9wb2ludGVyKTsKKysgIGlzX3F1 b3RlZCA9ICgqYXJncHRyCisrCSAgICAgICAmJiBzdHJjaHIgKGdldF9nZGJfY29tcGxldGVyX3F1 b3RlX2NoYXJhY3RlcnMgKCksCisrCQkJICAqKmFyZ3B0cikgIT0gTlVMTCk7CisgCisgICAvKiBD aGVjayB0byBzZWUgaWYgaXQncyBhIG11bHRpcGFydCBsaW5lc3BlYyAod2l0aCBjb2xvbnMgb3IK KyAgICAgIHBlcmlvZHMpLiAgKi8KK0BAIC03MzIsMTAgKzcyNCw3IEBAIGRlY29kZV9saW5lXzEg KGNoYXIgKiphcmdwdHIsIGludCBmdW5maXJzdGxpbmUsIHN0cnVjdCBzeW10YWIgKmRlZmF1bHRf c3ltdGFiLAorICAgLyogQ2hlY2sgaWYgdGhpcyBpcyBhbiBPYmplY3RpdmUtQyBtZXRob2QgKGFu eXRoaW5nIHRoYXQgc3RhcnRzIHdpdGgKKyAgICAgIGEgJysnIG9yICctJyBhbmQgYSAnWycpLiAg Ki8KKyAgIGlmIChpc19vYmpjX21ldGhvZF9mb3JtYXQgKHApKQorLSAgICB7CistICAgICAgaXNf b2JqY19tZXRob2QgPSAxOworLSAgICAgIHBhcmVuX3BvaW50ZXIgID0gTlVMTDsgLyogSnVzdCBh IGNhdGVnb3J5IG5hbWUuICBJZ25vcmUgaXQuICAqLworLSAgICB9CisrICAgIGlzX29iamNfbWV0 aG9kID0gMTsKKyAKKyAgIC8qIENoZWNrIGlmIHRoZSBzeW1ib2wgY291bGQgYmUgYW4gT2JqZWN0 aXZlLUMgc2VsZWN0b3IuICAqLworIAorQEAgLTc0OSwxMSArNzM4LDExIEBAIGRlY29kZV9saW5l XzEgKGNoYXIgKiphcmdwdHIsIGludCBmdW5maXJzdGxpbmUsIHN0cnVjdCBzeW10YWIgKmRlZmF1 bHRfc3ltdGFiLAorIAorICAgLyogRG9lcyBpdCBsb29rIGxpa2UgdGhlcmUgYWN0dWFsbHkgd2Vy ZSB0d28gcGFydHM/ICAqLworIAorLSAgaWYgKChwWzBdID09ICc6JyB8fCBwWzBdID09ICcuJykg JiYgcGFyZW5fcG9pbnRlciA9PSBOVUxMKQorKyAgaWYgKHBbMF0gPT0gJzonIHx8IHBbMF0gPT0g Jy4nKQorICAgICB7CisgICAgICAgaWYgKGlzX3F1b3RlZCkKKyAJKmFyZ3B0ciA9ICphcmdwdHIg KyAxOworLSAgICAgIAorKworICAgICAgIC8qIElzIGl0IGEgQysrIG9yIEphdmEgY29tcG91bmQg ZGF0YSBzdHJ1Y3R1cmU/CisgCSBUaGUgY2hlY2sgb24gcFsxXSA9PSAnOicgaXMgY2FwdHVyaW5n IHRoZSBjYXNlIG9mICI6OiIsCisgCSBzaW5jZSBwWzBdPT0nOicgd2FzIGNoZWNrZWQgYWJvdmUu ICAKK0BAIC03NjIsNDggKzc1MSwzMSBAQCBkZWNvZGVfbGluZV8xIChjaGFyICoqYXJncHRyLCBp bnQgZnVuZmlyc3RsaW5lLCBzdHJ1Y3Qgc3ltdGFiICpkZWZhdWx0X3N5bXRhYiwKKyAJIGNhbiBy ZXR1cm4gbm93LiAqLworIAkKKyAgICAgICBpZiAocFswXSA9PSAnLicgfHwgcFsxXSA9PSAnOicp CistCXJldHVybiBkZWNvZGVfY29tcG91bmQgKGFyZ3B0ciwgZnVuZmlyc3RsaW5lLCBjYW5vbmlj YWwsCistCQkJCXNhdmVkX2FyZywgcCwgbm90X2ZvdW5kX3B0cik7CisrCXsKKysJICBzdHJ1Y3Qg c3ltdGFic19hbmRfbGluZXMgdmFsdWVzOworKworKwkgIGlmIChpc19xdW90ZV9lbmNsb3NlZCkK KysJICAgICsrc2F2ZWRfYXJnOworKwkgIHZhbHVlcyA9IGRlY29kZV9jb21wb3VuZCAoYXJncHRy LCBmdW5maXJzdGxpbmUsIGNhbm9uaWNhbCwKKysJCQkJICAgIHNhdmVkX2FyZywgcCwgbm90X2Zv dW5kX3B0cik7CisrCSAgaWYgKGlzX3F1b3RlZCAmJiAqKmFyZ3B0ciA9PSAnXCcnKQorKwkgICAg KmFyZ3B0ciA9ICphcmdwdHIgKyAxOworKwkgIHJldHVybiB2YWx1ZXM7CisrCX0KKyAKKyAgICAg ICAvKiBObywgdGhlIGZpcnN0IHBhcnQgaXMgYSBmaWxlbmFtZTsgc2V0IGZpbGVfc3ltdGFiIHRv IGJlIHRoYXQgZmlsZSdzCisgCSBzeW10YWIuICBBbHNvLCBtb3ZlIGFyZ3B0ciBwYXN0IHRoZSBm aWxlbmFtZS4gICovCisgCisgICAgICAgZmlsZV9zeW10YWIgPSBzeW10YWJfZnJvbV9maWxlbmFt ZSAoYXJncHRyLCBwLCBpc19xdW90ZV9lbmNsb3NlZCwgCisgCQkgICAgICAJCQkgIG5vdF9mb3Vu ZF9wdHIpOworLSAgICB9CistI2lmIDAKKy0gIC8qIE5vIG9uZSByZWFsbHkgc2VlbXMgdG8ga25v dyB3aHkgdGhpcyB3YXMgYWRkZWQuIEl0IGNlcnRhaW5seQorLSAgICAgYnJlYWtzIHRoZSBjb21t YW5kIGxpbmUsIHRob3VnaCwgd2hlbmV2ZXIgdGhlIHBhc3NlZAorLSAgICAgbmFtZSBpcyBvZiB0 aGUgZm9ybSBDbGFzc05hbWU6Ok1ldGhvZC4gVGhpcyBiaXQgb2YgY29kZQorLSAgICAgc2luZ2xl cyBvdXQgdGhlIGNsYXNzIG5hbWUsIGFuZCBpZiBmdW5maXJzdGxpbmUgaXMgc2V0IChmb3IKKy0g ICAgIGV4YW1wbGUsIHlvdSBhcmUgc2V0dGluZyBhIGJyZWFrcG9pbnQgYXQgdGhpcyBmdW5jdGlv biksCistICAgICB5b3UgZ2V0IGFuIGVycm9yLiBUaGlzIGRpZCBub3Qgb2NjdXIgd2l0aCBlYXJs aWVyCistICAgICB2ZXJpb25zLCBzbyBJIGFtIGlmZGVmJ2luZyB0aGlzIG91dC4gMy8yOS85OSAq LworLSAgZWxzZQorLSAgICB7CistICAgICAgLyogQ2hlY2sgaWYgd2hhdCB3ZSBoYXZlIHRpbGwg bm93IGlzIGEgc3ltYm9sIG5hbWUgKi8KKy0KKy0gICAgICAvKiBXZSBtYXkgYmUgbG9va2luZyBh dCBhIHRlbXBsYXRlIGluc3RhbnRpYXRpb24gc3VjaAorLSAgICAgICAgIGFzICJmb288aW50PiIu ICBDaGVjayBoZXJlIHdoZXRoZXIgd2Uga25vdyBhYm91dCBpdCwKKy0gICAgICAgICBpbnN0ZWFk IG9mIGZhbGxpbmcgdGhyb3VnaCB0byB0aGUgY29kZSBiZWxvdyB3aGljaAorLSAgICAgICAgIGhh bmRsZXMgb3JkaW5hcnkgZnVuY3Rpb24gbmFtZXMsIGJlY2F1c2UgdGhhdCBjb2RlCistICAgICAg ICAgZG9lc24ndCBsaWtlIHNlZWluZyAnPCcgYW5kICc+JyBpbiBhIG5hbWUgLS0gdGhlCistICAg ICAgICAgc2tpcF9xdW90ZWQgY2FsbCBkb2Vzbid0IGdvIHBhc3QgdGhlbS4gIFNvIHNlZSBpZiB3 ZQorLSAgICAgICAgIGNhbiBmaWd1cmUgaXQgb3V0IHJpZ2h0IG5vdy4gKi8KKy0KKy0gICAgICBj b3B5ID0gKGNoYXIgKikgYWxsb2NhIChwIC0gKmFyZ3B0ciArIDEpOworLSAgICAgIG1lbWNweSAo Y29weSwgKmFyZ3B0ciwgcCAtICphcmdwdHIpOworLSAgICAgIGNvcHlbcCAtICphcmdwdHJdID0g J1wwMDAnOworLSAgICAgIHN5bSA9IGxvb2t1cF9zeW1ib2wgKGNvcHksIDAsIFZBUl9ET01BSU4s IDApOworLSAgICAgIGlmIChzeW0pCisrICAgICAgaWYgKGZpbGVfc3ltdGFiICE9IE5VTEwpCisg CXsKKy0JICAqYXJncHRyID0gKCpwID09ICdcJycpID8gcCArIDEgOiBwOworLQkgIHJldHVybiBz eW1ib2xfZm91bmQgKGZ1bmZpcnN0bGluZSwgY2Fub25pY2FsLCBjb3B5LCBzeW0sIE5VTEwpOwor KwkgIC8qIERvdWJsZS1jaGVjayBpZiB0aGUgcmVtYWluZGVyIG9mIHRoZSBhcmd1bWVudCBpcyBx dW90ZWQuCisrCSAgICAgVGhlIHJicmVhayBjb21tYW5kIHVzZXMgc3ludGF4IGxpa2UgdGhpcy4g ICovCisrCSAgaWYgKCoqYXJncHRyID09ICdcJycpCisrCSAgICBpc19xdW90ZWQgPSAxOworIAl9 CistICAgICAgLyogT3RoZXJ3aXNlIGZhbGwgb3V0IGZyb20gaGVyZSBhbmQgZ28gdG8gZmlsZS9s aW5lIHNwZWMKKy0gICAgICAgICBwcm9jZXNzaW5nLCBldGMuICovCisgICAgIH0KKy0jZW5kaWYK KyAKKyAgIC8qIGZpbGVfc3ltdGFiIGlzIHNwZWNpZmllZCBmaWxlJ3Mgc3ltdGFiLCBvciAwIGlm IG5vIGZpbGUgc3BlY2lmaWVkLgorICAgICAgYXJnIG5vIGxvbmdlciBjb250YWlucyB0aGUgZmls ZSBuYW1lLiAgKi8KK0BAIC04MzgsMTAgKzgxMCw2IEBAIGRlY29kZV9saW5lXzEgKGNoYXIgKiph cmdwdHIsIGludCBmdW5maXJzdGxpbmUsIHN0cnVjdCBzeW10YWIgKmRlZmF1bHRfc3ltdGFiLAor ICAgICAgIC8qIGFsbG93IHdvcmQgc2VwYXJhdG9ycyBpbiBtZXRob2QgbmFtZXMgZm9yIE9iai1D ICovCisgICAgICAgcCA9IHNraXBfcXVvdGVkX2NoYXJzICgqYXJncHRyLCBOVUxMLCAiIik7Cisg ICAgIH0KKy0gIGVsc2UgaWYgKHBhcmVuX3BvaW50ZXIgIT0gTlVMTCkKKy0gICAgeworLSAgICAg IHAgPSBwYXJlbl9wb2ludGVyICsgMTsKKy0gICAgfQorICAgZWxzZQorICAgICB7CisgICAgICAg cCA9IHNraXBfcXVvdGVkICgqYXJncHRyKTsKK0BAIC04NTEsNiArODE5LDE1IEBAIGRlY29kZV9s aW5lXzEgKGNoYXIgKiphcmdwdHIsIGludCBmdW5maXJzdGxpbmUsIHN0cnVjdCBzeW10YWIgKmRl ZmF1bHRfc3ltdGFiLAorICAgaWYgKCpwID09ICc8JykKKyAgICAgcCA9IGZpbmRfdGVtcGxhdGVf bmFtZV9lbmQgKHApOworIAorKyAgLyogS2VlcCBtZXRob2Qgb3ZlcmxvYWQgaW5mb3JtYXRpb24u ICAqLworKyAgcSA9IHN0cmNociAocCwgJygnKTsKKysgIGlmIChxICE9IE5VTEwpCisrICAgIHAg PSBzdHJyY2hyIChxLCAnKScpICsgMTsKKysKKysgIC8qIE1ha2Ugc3VyZSB3ZSBrZWVwIGltcG9y dGFudCBrZXdvcmRzIGxpa2UgImNvbnN0IiAqLworKyAgaWYgKHN0cm5jbXAgKHAsICIgY29uc3Qi LCA2KSA9PSAwKQorKyAgICBwICs9IDY7CisrCisgICBjb3B5ID0gKGNoYXIgKikgYWxsb2NhIChw IC0gKmFyZ3B0ciArIDEpOworICAgbWVtY3B5IChjb3B5LCAqYXJncHRyLCBwIC0gKmFyZ3B0cik7 CisgICBjb3B5W3AgLSAqYXJncHRyXSA9ICdcMCc7CitAQCAtOTI2LDQ0ICs5MDMsNiBAQCBpbml0 aWFsaXplX2RlZmF1bHRzIChzdHJ1Y3Qgc3ltdGFiICoqZGVmYXVsdF9zeW10YWIsIGludCAqZGVm YXVsdF9saW5lKQorICAgICB9CisgfQorIAorLXN0YXRpYyB2b2lkCistc2V0X2ZsYWdzIChjaGFy ICphcmcsIGludCAqaXNfcXVvdGVkLCBjaGFyICoqcGFyZW5fcG9pbnRlcikKKy17CistICBjaGFy ICppaTsKKy0gIGludCBoYXNfaWYgPSAwOworLQorLSAgLyogJ2hhc19pZicgaXMgZm9yIHRoZSBz eW50YXg6CistICAgICAgICAoZ2RiKSBicmVhayBmb28gaWYgKGE9PWIpCistICAqLworLSAgaWYg KChpaSA9IHN0cnN0ciAoYXJnLCAiIGlmICIpKSAhPSBOVUxMIHx8CistICAgICAgKGlpID0gc3Ry c3RyIChhcmcsICJcdGlmICIpKSAhPSBOVUxMIHx8CistICAgICAgKGlpID0gc3Ryc3RyIChhcmcs ICIgaWZcdCIpKSAhPSBOVUxMIHx8CistICAgICAgKGlpID0gc3Ryc3RyIChhcmcsICJcdGlmXHQi KSkgIT0gTlVMTCB8fAorLSAgICAgIChpaSA9IHN0cnN0ciAoYXJnLCAiIGlmKCIpKSAhPSBOVUxM IHx8CistICAgICAgKGlpID0gc3Ryc3RyIChhcmcsICJcdGlmKCAiKSkgIT0gTlVMTCkKKy0gICAg aGFzX2lmID0gMTsKKy0gIC8qIFRlbXBvcmFyaWx5IHphcCBvdXQgImlmIChjb25kaXRpb24pIiB0 byBub3QgY29uZnVzZSB0aGUKKy0gICAgIHBhcmVudGhlc2lzLWNoZWNraW5nIGNvZGUgYmVsb3cu ICBUaGlzIGlzIHVuZG9uZSBiZWxvdy4gRG8gbm90CistICAgICBjaGFuZ2UgaWkhISAgKi8KKy0g IGlmIChoYXNfaWYpCistICAgIHsKKy0gICAgICAqaWkgPSAnXDAnOworLSAgICB9CistCistICAq aXNfcXVvdGVkID0gKCphcmcKKy0JCSYmIHN0cmNociAoZ2V0X2dkYl9jb21wbGV0ZXJfcXVvdGVf Y2hhcmFjdGVycyAoKSwKKy0JCQkgICAqYXJnKSAhPSBOVUxMKTsKKy0KKy0gICpwYXJlbl9wb2lu dGVyID0gc3RyY2hyIChhcmcsICcoJyk7CistICBpZiAoKnBhcmVuX3BvaW50ZXIgIT0gTlVMTCkK Ky0gICAgKnBhcmVuX3BvaW50ZXIgPSBzdHJyY2hyICgqcGFyZW5fcG9pbnRlciwgJyknKTsKKy0K Ky0gIC8qIE5vdyB0aGF0IHdlJ3JlIHNhZmVseSBwYXN0IHRoZSBwYXJlbl9wb2ludGVyIGNoZWNr LCBwdXQgYmFjayAiIGlmCistICAgICAoY29uZGl0aW9uKSIgc28gb3V0ZXIgbGF5ZXJzIGNhbiBz ZWUgaXQuICAqLworLSAgaWYgKGhhc19pZikKKy0gICAgKmlpID0gJyAnOworLX0KKy0KKyAMCisg CisgLyogRGVjb2RlIGFyZyBvZiB0aGUgZm9ybSAqUEMuICAqLworQEAgLTEyNjQsNyArMTIwMyw4 IEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmZpcnN0bGluZSwgY2hh ciAqKipjYW5vbmljYWwsCisgICAgICAgLyogUEFTUzI6IHAyLT4iOjpmdW4iLCBwLT4iOmZ1biIg Ki8KKyAKKyAgICAgICAvKiBNb3ZlIHBvaW50ZXIgYWhlYWQgdG8gbmV4dCBkb3VibGUtY29sb24u ICAqLworLSAgICAgIHdoaWxlICgqcCAmJiAocFswXSAhPSAnICcpICYmIChwWzBdICE9ICdcdCcp ICYmIChwWzBdICE9ICdcJycpKQorKyAgICAgIHdoaWxlICgqcCAmJiAocFswXSAhPSAnICcpICYm IChwWzBdICE9ICdcdCcpICYmIChwWzBdICE9ICdcJycpCisrCSAgICAgJiYgKCpwICE9ICcoJykp CisgCXsKKyAJICBpZiAoY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2Vf Y3BsdXMpCisgCSAgICBwICs9IGNwX3ZhbGlkYXRlX29wZXJhdG9yIChwKTsKK0BAIC0xMzQyLDgg KzEyODIsMTAgQEAgZGVjb2RlX2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZmlyc3Rs aW5lLCBjaGFyICoqKmNhbm9uaWNhbCwKKyAgICAgICBlbHNlCisgCXsKKyAJICAvKiBBdCB0aGlz IHBvaW50IGFyZ3B0ci0+ImZ1biIuICAqLworKwkgIGNoYXIgKmE7CisgCSAgcCA9ICphcmdwdHI7 CistCSAgd2hpbGUgKCpwICYmICpwICE9ICcgJyAmJiAqcCAhPSAnXHQnICYmICpwICE9ICcsJyAm JiAqcCAhPSAnOicpCisrCSAgd2hpbGUgKCpwICYmICpwICE9ICcgJyAmJiAqcCAhPSAnXHQnICYm ICpwICE9ICcsJyAmJiAqcCAhPSAnOicKKysJCSAmJiAqcCAhPSAnKCcpCisgCSAgICBwKys7Cisg CSAgLyogQXQgdGhpcyBwb2ludCBwLT4iIi4gIFN0cmluZyBlbmRlZC4gICovCisgCSAgLyogTm9w ZSwgQysrIG9wZXJhdG9ycyBjb3VsZCBoYXZlIHNwYWNlcyBpbiB0aGVtCitAQCAtMTM1NSw2ICsx Mjk3LDE5IEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmZpcnN0bGlu ZSwgY2hhciAqKipjYW5vbmljYWwsCisgCSAgICAgIC8qIFRoZSBhYm92ZSBsb29wIGhhcyBhbHJl YWR5IHN3YWxsb3dlZCAib3BlcmF0b3IiLiAgKi8KKyAJICAgICAgcCArPSBjcF92YWxpZGF0ZV9v cGVyYXRvciAocCAtIDgpIC0gODsKKyAJICAgIH0KKysKKysJICAvKiBLZWVwIGFueSB0ZW1wbGF0 ZSBwYXJhbWV0ZXJzICovCisrCSAgaWYgKCpwID09ICc8JykKKysJICAgIHAgPSBmaW5kX3RlbXBs YXRlX25hbWVfZW5kIChwKTsKKysKKysJICAvKiBLZWVwIG1ldGhvZCBvdmVybG9hZCBpbmZvcm1h dGlvbi4gICovCisrCSAgYSA9IHN0cmNociAocCwgJygnKTsKKysJICBpZiAoYSAhPSBOVUxMKQor KwkgICAgcCA9IHN0cnJjaHIgKGEsICcpJykgKyAxOworKworKwkgIC8qIE1ha2Ugc3VyZSB3ZSBr ZWVwIGltcG9ydGFudCBrZXdvcmRzIGxpa2UgImNvbnN0IiAqLworKwkgIGlmIChzdHJuY21wIChw LCAiIGNvbnN0IiwgNikgPT0gMCkKKysJICAgIHAgKz0gNjsKKyAJfQorIAorICAgICAgIC8qIEFs bG9jYXRlIG91ciBvd24gY29weSBvZiB0aGUgc3Vic3RyaW5nIGJldHdlZW4gYXJncHRyIGFuZAor QEAgLTE1MDksOCArMTQ2NCwzOSBAQCBmaW5kX21ldGhvZCAoaW50IGZ1bmZpcnN0bGluZSwgY2hh ciAqKipjYW5vbmljYWwsIGNoYXIgKnNhdmVkX2FyZywKKyAgICAgfQorICAgaWYgKGkxID4gMCkK KyAgICAgeworLSAgICAgIC8qIFRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgZmllbGQgd2l0aCB0aGF0 IG5hbWUKKy0JIChvdmVybG9hZGVkKS4gIEFzayB0aGUgdXNlciB3aGljaCBvbmUgdG8gdXNlLiAg Ki8KKysgICAgICAvKiBJZiB3ZSB3ZXJlIGdpdmVuIGEgc3BlY2lmaWMgb3ZlcmxvYWQgaW5zdGFu Y2UsIHVzZSB0aGF0CisrCSAob3IgZXJyb3IgaWYgbm8gbWF0Y2hlcyB3ZXJlIGZvdW5kKS4gIE90 aGVyd2lzZSBhc2sgdGhlIHVzZXIKKysJIHdoaWNoIG9uZSB0byB1c2UuICAqLworKyAgICAgIGlm IChzdHJjaHIgKHNhdmVkX2FyZywgJygnKSAhPSBOVUxMKQorKwl7CisrCSAgaW50IGk7CisrCSAg Zm9yIChpID0gMDsgaSA8IGkxOyArK2kpCisrCSAgICB7CisrCSAgICAgIGNoYXIgKm5hbWUgPSBz YXZlZF9hcmc7CisrCSAgICAgIGNoYXIgKmNhbm9uID0gY3BfY2Fub25pY2FsaXplX3N0cmluZyAo bmFtZSk7CisrCSAgICAgIGlmIChjYW5vbiAhPSBOVUxMKQorKwkJbmFtZSA9IGNhbm9uOworKwor KwkgICAgICBpZiAoc3RyY21wX2l3IChuYW1lLCBTWU1CT0xfTElOS0FHRV9OQU1FIChzeW1fYXJy W2ldKSkgPT0gMCkKKysJCXsKKysJCSAgdmFsdWVzLnNhbHMgPSAoc3RydWN0IHN5bXRhYl9hbmRf bGluZSAqKQorKwkJICAgIHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSkp OworKwkJICB2YWx1ZXMubmVsdHMgPSAxOworKwkJICB2YWx1ZXMuc2Fsc1swXSA9IGZpbmRfZnVu Y3Rpb25fc3RhcnRfc2FsIChzeW1fYXJyW2ldLAorKwkJCQkJCQkgICAgZnVuZmlyc3RsaW5lKTsK KysJCSAgaWYgKGNhbm9uKQorKwkJICAgIHhmcmVlIChjYW5vbik7CisrCQkgIHJldHVybiB2YWx1 ZXM7CisrCQl9CisrCisrCSAgICAgIGlmIChjYW5vbikKKysJCXhmcmVlIChjYW5vbik7CisrCSAg ICB9CisrCisrCSAgZXJyb3IgKF8oInRoZSBjbGFzcyBgJXMnIGRvZXMgbm90IGhhdmUgYW55IG1l dGhvZCBpbnN0YW5jZSBuYW1lZCAlc1xuIiksCisrCQkgICBTWU1CT0xfUFJJTlRfTkFNRSAoc3lt X2NsYXNzKSwgY29weSk7CisrCX0KKysKKyAgICAgICByZXR1cm4gZGVjb2RlX2xpbmVfMiAoc3lt X2FyciwgaTEsIGZ1bmZpcnN0bGluZSwgY2Fub25pY2FsKTsKKyAgICAgfQorICAgZWxzZQorQEAg LTE4MTUsNyArMTgwMSw3IEBAIHN5bWJvbF9mb3VuZCAoaW50IGZ1bmZpcnN0bGluZSwgY2hhciAq KipjYW5vbmljYWwsIGNoYXIgKmNvcHksCisgCXsKKyAJICBzdHJ1Y3QgYmxvY2t2ZWN0b3IgKmJ2 ID0gQkxPQ0tWRUNUT1IgKFNZTUJPTF9TWU1UQUIgKHN5bSkpOworIAkgIHN0cnVjdCBibG9jayAq YiA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgU1RBVElDX0JMT0NLKTsKKy0JICBpZiAobG9va3Vw X2Jsb2NrX3N5bWJvbCAoYiwgY29weSwgTlVMTCwgVkFSX0RPTUFJTikgIT0gTlVMTCkKKysJICBp ZiAobG9va3VwX2Jsb2NrX3N5bWJvbCAoYiwgY29weSwgVkFSX0RPTUFJTikgIT0gTlVMTCkKKyAJ ICAgIGJ1aWxkX2Nhbm9uaWNhbF9saW5lX3NwZWMgKHZhbHVlcy5zYWxzLCBjb3B5LCBjYW5vbmlj YWwpOworIAl9CisgICAgICAgcmV0dXJuIHZhbHVlczsKIGRpZmYgLS1naXQgYS9nZGIvbGludXgt bmF0LmMgYi9nZGIvbGludXgtbmF0LmMKLWluZGV4IDAzNTYzY2QuLjgxNDU2MjkgMTAwNjQ0Citp bmRleCA3ZmM5NTg0Li5iMjg2ZGZkIDEwMDY0NAogLS0tIGEvZ2RiL2xpbnV4LW5hdC5jCiArKysg Yi9nZGIvbGludXgtbmF0LmMKLUBAIC0yNjQzLDYgKzI2NDMsMzkgQEAgbGludXhfbmF0X3N0b3Bw ZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBDT1JFX0FERFIgKmFkZHJf cCkKK0BAIC0yNjI0LDYgKzI2MjQsMzkgQEAgbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNz IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBDT1JFX0FERFIgKmFkZHJfcCkKICAgIHJldHVybiBs cC0+c3RvcHBlZF9kYXRhX2FkZHJlc3NfcDsKICB9CiAgCkBAIC03MTAxLDcgKzg0MTQsNyBAQCBp bmRleCAwMzU2M2NkLi44MTQ1NjI5IDEwMDY0NAogIC8qIFdhaXQgdW50aWwgTFAgaXMgc3RvcHBl ZC4gICovCiAgCiAgc3RhdGljIGludAotQEAgLTU1MTksNiArNTU1Miw4IEBAIGxpbnV4X25hdF9h ZGRfdGFyZ2V0IChzdHJ1Y3QgdGFyZ2V0X29wcyAqdCkKK0BAIC01NTAwLDYgKzU1MzMsOCBAQCBs aW51eF9uYXRfYWRkX3RhcmdldCAoc3RydWN0IHRhcmdldF9vcHMgKnQpCiAgICB0LT50b190aHJl YWRfYWRkcmVzc19zcGFjZSA9IGxpbnV4X25hdF90aHJlYWRfYWRkcmVzc19zcGFjZTsKICAgIHQt PnRvX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCA9IGxpbnV4X25hdF9zdG9wcGVkX2J5X3dhdGNocG9p bnQ7CiAgICB0LT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IGxpbnV4X25hdF9zdG9wcGVkX2Rh dGFfYWRkcmVzczsKQEAgLTcxMzUsNyArODQ0OCw3IEBAIGluZGV4IDAyYjYxZDMuLjEzYWI1OTUg MTAwNjQ0CiAgICBtYWNob19zeW1maWxlX29mZnNldHMsICAgICAgICAvKiBzeW1fb2Zmc2V0czog IHhsYXRlIGV4dGVybmFsIHRvIGludGVybmFsIGZvcm0gKi8KICAgIGRlZmF1bHRfc3ltZmlsZV9z ZWdtZW50cywJLyogc3ltX3NlZ21lbnRzOiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tCiBk aWZmIC0tZ2l0IGEvZ2RiL21haW4uYyBiL2dkYi9tYWluLmMKLWluZGV4IDBjYzBmNzUuLmUzZmMy ZTYgMTAwNjQ0CitpbmRleCBlMjYxMzQ4Li45MmM2M2E3IDEwMDY0NAogLS0tIGEvZ2RiL21haW4u YwogKysrIGIvZ2RiL21haW4uYwogQEAgLTQwLDYgKzQwLDcgQEAKQEAgLTcxODEsNDAgKzg0OTQs NDAgQEAgaW5kZXggMGNjMGY3NS4uZTNmYzJlNiAxMDA2NDQKICAJICBjYXNlIE9QVF9TRToKICAJ ICAgIHN5bWFyZyA9IG9wdGFyZzsKICAJICAgIGV4ZWNhcmcgPSBvcHRhcmc7Ci1AQCAtNjMxLDcg KzY0MSwzMSBAQCBleHRlcm4gaW50IGdkYnRrX3Rlc3QgKGNoYXIgKik7Ci0gCXVzZV93aW5kb3dz ID0gMDsKLSAgICAgICB9CitAQCAtNjQxLDcgKzY1MSwzMSBAQCBleHRlcm4gaW50IGdkYnRrX3Rl c3QgKGNoYXIgKik7CiAgCi0tICAgIGlmIChzZXRfYXJncykKLSsgICAgaWYgKHB5dGhvbl9zY3Jp cHQpCi0rICAgICAgewotKwkvKiBUaGUgZmlyc3QgYXJndW1lbnQgaXMgYSBweXRob24gc2NyaXB0 IHRvIGV2YWx1YXRlLCBhbmQKLSsJICAgc3Vic2VxdWVudCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0 byB0aGUgc2NyaXB0IGZvcgotKwkgICBwcm9jZXNzaW5nIHRoZXJlLiAgKi8KLSsJaWYgKG9wdGlu ZCA+PSBhcmdjKQotKwkgIHsKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwK LSsJCQkJXygiJXM6IFB5dGhvbiBzY3JpcHQgZmlsZSBuYW1lIHJlcXVpcmVkXG4iKSwKLSsJCQkJ YXJndlswXSk7Ci0rCSAgICBleGl0ICgxKTsKLSsJICB9CisgICAvKiBOb3cgdGhhdCBnZGJfaW5p dCBoYXMgY3JlYXRlZCB0aGUgaW5pdGlhbCBpbmZlcmlvciwgd2UncmUgaW4gcG9zaXRpb24KKyAg ICAgIHRvIHNldCBhcmdzIGZvciB0aGF0IGluZmVyaW9yLiAgKi8KKy0gIGlmIChzZXRfYXJncykK KysgIGlmIChweXRob25fc2NyaXB0KQorKyAgICB7CisrICAgICAgLyogVGhlIGZpcnN0IGFyZ3Vt ZW50IGlzIGEgcHl0aG9uIHNjcmlwdCB0byBldmFsdWF0ZSwgYW5kCisrCSBzdWJzZXF1ZW50IGFy Z3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZSBzY3JpcHQgZm9yCisrCSBwcm9jZXNzaW5nIHRoZXJl LiAgKi8KKysgICAgICBpZiAob3B0aW5kID49IGFyZ2MpCisrCXsKKysJICBmcHJpbnRmX3VuZmls dGVyZWQgKGdkYl9zdGRlcnIsCisrCQkJICAgICAgXygiJXM6IFB5dGhvbiBzY3JpcHQgZmlsZSBu YW1lIHJlcXVpcmVkXG4iKSwKKysJCQkgICAgICBhcmd2WzBdKTsKKysJICBleGl0ICgxKTsKKysJ fQogKwotKwkvKiBGSVhNRTogc2hvdWxkIGhhbmRsZSBpbmZlcmlvciBJL08gaW50ZWxsaWdlbnRs eSBoZXJlLgotKwkgICBFLmcuLCBzaG91bGQgYmUgcG9zc2libGUgdG8gcnVuIGdkYiBpbiBwaXBl bGluZSBhbmQgaGF2ZQotKwkgICBQeXRob24gKGFuZCBnZGIpIG91dHB1dCBnbyB0byBzdGRlcnIg b3IgZmlsZTsgYW5kIGlmIGEKLSsJICAgcHJvbXB0IGlzIG5lZWRlZCwgb3BlbiB0aGUgdHR5LiAg Ki8KLSsJcXVpZXQgPSAxOwotKwkvKiBGSVhNRTogc2hvdWxkIHJlYWQgLmdkYmluaXQgaWYsIGFu ZCBvbmx5IGlmLCBhIHByb21wdCBpcwotKwkgICByZXF1ZXN0ZWQgYnkgdGhlIHNjcmlwdC4gIFRo b3VnaC4uLiBtYXliZSB0aGlzIGlzIG5vdAotKwkgICBpZGVhbD8gICovCi0rCS8qIEZJWE1FOiBs aWtld2lzZSwgcmVhZGluZyBpbiBoaXN0b3J5LiAgKi8KLSsJaW5oaWJpdF9nZGJpbml0ID0gMTsK LSsgICAgICB9Ci0rICAgIGVsc2UgaWYgKHNldF9hcmdzKQotICAgICAgIHsKLSAJLyogVGhlIHJl bWFpbmluZyBvcHRpb25zIGFyZSB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMgZm9yIHRoZQotIAkg ICBpbmZlcmlvci4gIFRoZSBmaXJzdCBvbmUgaXMgdGhlIHN5bS9leGVjIGZpbGUsIGFuZCB0aGUg cmVzdAotQEAgLTg2NCw3ICs4OTgsOCBAQCBDYW4ndCBhdHRhY2ggdG8gcHJvY2VzcyBhbmQgc3Bl Y2lmeSBhIGNvcmUgZmlsZSBhdCB0aGUgc2FtZSB0aW1lLiIpKTsKKysgICAgICAvKiBGSVhNRTog c2hvdWxkIGhhbmRsZSBpbmZlcmlvciBJL08gaW50ZWxsaWdlbnRseSBoZXJlLgorKwkgRS5nLiwg c2hvdWxkIGJlIHBvc3NpYmxlIHRvIHJ1biBnZGIgaW4gcGlwZWxpbmUgYW5kIGhhdmUKKysJIFB5 dGhvbiAoYW5kIGdkYikgb3V0cHV0IGdvIHRvIHN0ZGVyciBvciBmaWxlOyBhbmQgaWYgYQorKwkg cHJvbXB0IGlzIG5lZWRlZCwgb3BlbiB0aGUgdHR5LiAgKi8KKysgICAgICBxdWlldCA9IDE7Cisr ICAgICAgLyogRklYTUU6IHNob3VsZCByZWFkIC5nZGJpbml0IGlmLCBhbmQgb25seSBpZiwgYSBw cm9tcHQgaXMKKysJIHJlcXVlc3RlZCBieSB0aGUgc2NyaXB0LiAgVGhvdWdoLi4uIG1heWJlIHRo aXMgaXMgbm90CisrCSBpZGVhbD8gICovCisrICAgICAgLyogRklYTUU6IGxpa2V3aXNlLCByZWFk aW5nIGluIGhpc3RvcnkuICAqLworKyAgICAgIGluaGliaXRfZ2RiaW5pdCA9IDE7CisrICAgIH0K KysgIGVsc2UgaWYgKHNldF9hcmdzKQorICAgICB7CisgICAgICAgLyogVGhlIHJlbWFpbmluZyBv cHRpb25zIGFyZSB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMgZm9yIHRoZQorIAkgaW5mZXJpb3Iu ICBUaGUgZmlyc3Qgb25lIGlzIHRoZSBzeW0vZXhlYyBmaWxlLCBhbmQgdGhlIHJlc3QKK0BAIC04 NjcsNyArOTAxLDggQEAgQ2FuJ3QgYXR0YWNoIHRvIHByb2Nlc3MgYW5kIHNwZWNpZnkgYSBjb3Jl IGZpbGUgYXQgdGhlIHNhbWUgdGltZS4iKSk7CiAgICB4ZnJlZSAoY21kYXJnKTsKICAKICAgIC8q IFJlYWQgaW4gdGhlIG9sZCBoaXN0b3J5IGFmdGVyIGFsbCB0aGUgY29tbWFuZCBmaWxlcyBoYXZl IGJlZW4gcmVhZC4gKi8KQEAgLTcyMjQsNyArODUzNyw3IEBAIGluZGV4IDBjYzBmNzUuLmUzZmMy ZTYgMTAwNjQ0CiAgCiAgICBpZiAoYmF0Y2gpCiAgICAgIHsKLUBAIC04OTMsMTMgKzkyOCwyNSBA QCBDYW4ndCBhdHRhY2ggdG8gcHJvY2VzcyBhbmQgc3BlY2lmeSBhIGNvcmUgZmlsZSBhdCB0aGUg c2FtZSB0aW1lLiIpKTsKK0BAIC04OTYsMTMgKzkzMSwyNSBAQCBDYW4ndCBhdHRhY2ggdG8gcHJv Y2VzcyBhbmQgc3BlY2lmeSBhIGNvcmUgZmlsZSBhdCB0aGUgc2FtZSB0aW1lLiIpKTsKICAjZW5k aWYKICAgICAgfQogIApAQCAtNzI1Niw3ICs4NTY5LDcgQEAgaW5kZXggMGNjMGY3NS4uZTNmYzJl NiAxMDA2NDQKICAgICAgfQogICAgLyogTm8gZXhpdCAtLSBleGl0IGlzIHRocm91Z2ggcXVpdF9j b21tYW5kLiAgKi8KICB9Ci1AQCAtOTMxLDcgKzk3OCwxMiBAQCBwcmludF9nZGJfaGVscCAoc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSkKK0BAIC05MzQsNyArOTgxLDEyIEBAIHByaW50X2dkYl9oZWxw IChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQogICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAogIFRo aXMgaXMgdGhlIEdOVSBkZWJ1Z2dlci4gIFVzYWdlOlxuXG5cCiAgICAgIGdkYiBbb3B0aW9uc10g W2V4ZWN1dGFibGUtZmlsZSBbY29yZS1maWxlIG9yIHByb2Nlc3MtaWRdXVxuXApAQCAtNzI3MCw3 ICs4NTgzLDcgQEAgaW5kZXggMGNjMGY3NS4uZTNmYzJlNiAxMDA2NDQKICBPcHRpb25zOlxuXG5c CiAgIiksIHN0cmVhbSk7CiAgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCi1AQCAtOTY5LDcgKzEw MjEsMTMgQEAgT3B0aW9uczpcblxuXAorQEAgLTk3Miw3ICsxMDI0LDEzIEBAIE9wdGlvbnM6XG5c blwKICAgIC0tbncJCSAgICAgRG8gbm90IHVzZSBhIHdpbmRvdyBpbnRlcmZhY2UuXG5cCiAgICAt LW54ICAgICAgICAgICAgICAgRG8gbm90IHJlYWQgIiksIHN0cmVhbSk7CiAgICBmcHV0c191bmZp bHRlcmVkIChnZGJpbml0LCBzdHJlYW0pOwpAQCAtNzMxNCwxOSArODYyNyw2IEBAIGluZGV4IGIy Mjc0MTEuLjNiOTMyZjAgMTAwNjQ0CiAgICAgICAgc3RydWN0IHZhcm9iaiAqdmFyID0gdmFyb2Jq X2dldF9oYW5kbGUgKG5hbWUpOwogIAogICAgICAgIHZhcm9ial91cGRhdGVfb25lICh2YXIsIHBy aW50X3ZhbHVlcywgMSAvKiBleHBsaWNpdCAqLyk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL21pL21pLW1h aW4uYyBiL2dkYi9taS9taS1tYWluLmMKLWluZGV4IGRkZTAwNjIuLjgzMmNmY2MgMTAwNjQ0Ci0t LS0gYS9nZGIvbWkvbWktbWFpbi5jCi0rKysgYi9nZGIvbWkvbWktbWFpbi5jCi1AQCAtMTQwMCw3 ICsxNDAwLDcgQEAgbWlfY21kX2xpc3RfZmVhdHVyZXMgKGNoYXIgKmNvbW1hbmQsIGNoYXIgKiph cmd2LCBpbnQgYXJnYykKLSAgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgTlVMTCwg ImZyb3plbi12YXJvYmpzIik7Ci0gICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsIE5V TEwsICJwZW5kaW5nLWJyZWFrcG9pbnRzIik7Ci0gICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAo dWlvdXQsIE5VTEwsICJ0aHJlYWQtaW5mbyIpOwotLSAgICAgIAotKwotICNpZiBIQVZFX1BZVEhP TgotICAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCBOVUxMLCAicHl0aG9uIik7Ci0g I2VuZGlmCiBkaWZmIC0tZ2l0IGEvZ2RiL21pcHNyZWFkLmMgYi9nZGIvbWlwc3JlYWQuYwogaW5k ZXggNGVmODE3ZS4uMWM1MzU3NCAxMDA2NDQKIC0tLSBhL2dkYi9taXBzcmVhZC5jCkBAIC03NDMx LDcgKzg3MzEsNyBAQCBpbmRleCBjNjg5NjIyLi5lYjNhZTEwIDEwMDY0NAogICAgQUxMX1BTUEFD RV9PQkpGSUxFUyAoc3MsIG9iamZpbGUpCQkJXAogICAgICBBTExfT0JKRklMRV9QU1lNVEFCUyAo b2JqZmlsZSwgcCkKIGRpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5jCi1pbmRl eCAyODg1NTA2Li43NzliODE5IDEwMDY0NAoraW5kZXggZDVhMTk5Yi4uZDJhMDRjMyAxMDA2NDQK IC0tLSBhL2dkYi9wYXJzZS5jCiArKysgYi9nZGIvcGFyc2UuYwogQEAgLTYyLDYgKzYyLDcgQEAg Y29uc3Qgc3RydWN0IGV4cF9kZXNjcmlwdG9yIGV4cF9kZXNjcmlwdG9yX3N0YW5kYXJkID0KQEAg LTc0NDIsNyArODc0MiwxOCBAQCBpbmRleCAyODg1NTA2Li43NzliODE5IDEwMDY0NAogICAgICBv cF9uYW1lX3N0YW5kYXJkLAogICAgICBkdW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkLAogICAgICBl dmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQKLUBAIC0xMzU5LDYgKzEzNjAsMTUwIEBAIHBhcnNlcl9m cHJpbnRmIChGSUxFICp4LCBjb25zdCBjaGFyICp5LCAuLi4pCitAQCAtODQxLDYgKzg0MiwxMCBA QCBvcGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHByLCBpbnQg ZW5kcG9zLAorICAgICAgIGFyZ3MgPSAxOworICAgICAgIGJyZWFrOworIAorKyAgICBjYXNlIFRZ UEVfSU5TVEFOQ0VfTE9PS1VQOgorKyAgICAgIG9wbGVuID0gMzsKKysgICAgICBicmVhazsKKysK KyAgICAgY2FzZSBPUF9PQkpDX01TR0NBTEw6CS8qIE9iamVjdGl2ZSBDIG1lc3NhZ2UgKG1ldGhv ZCkgY2FsbCAqLworICAgICAgIG9wbGVuID0gNDsKKyAgICAgICBhcmdzID0gMSArIGxvbmdlc3Rf dG9faW50IChleHByLT5lbHRzW2VuZHBvcyAtIDJdLmxvbmdjb25zdCk7CitAQCAtMTM2MSw2ICsx MzY2LDE1MCBAQCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwgLi4uKQog ICAgdmFfZW5kIChhcmdzKTsKICB9CiAgCkBAIC05NjkxLDcgKzExMDAyLDcgQEAgaW5kZXggMDAw MDAwMC4uNzgzMzg1ZQogKyAgYnJlYWtwb2ludF9vYmplY3RfZ2V0c2V0CSAgLyogdHBfZ2V0c2V0 ICovCiArfTsKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWNtZC5jIGIvZ2RiL3B5dGhvbi9w eS1jbWQuYwotaW5kZXggYWU0NjJkOS4uMjJkMTQwNSAxMDA2NDQKK2luZGV4IGFlNDYyZDkuLmRk MzY0ZGYgMTAwNjQ0CiAtLS0gYS9nZGIvcHl0aG9uL3B5LWNtZC5jCiArKysgYi9nZGIvcHl0aG9u L3B5LWNtZC5jCiBAQCAtNDksOCArNDksNyBAQCBzdGF0aWMgc3RydWN0IGNtZHB5X2NvbXBsZXRl ciBjb21wbGV0ZXJzW10gPQpAQCAtOTcwNCwxNSArMTEwMTUsNyBAQCBpbmRleCBhZTQ2MmQ5Li4y MmQxNDA1IDEwMDY0NAogIHN0cnVjdCBjbWRweV9vYmplY3QKICB7CiAgICBQeU9iamVjdF9IRUFE Ci1AQCAtNzAsNyArNjksNiBAQCB0eXBlZGVmIHN0cnVjdCBjbWRweV9vYmplY3QgY21kcHlfb2Jq ZWN0OwotIAotIHN0YXRpYyBQeVR5cGVPYmplY3QgY21kcHlfb2JqZWN0X3R5cGU7Ci0gCi0tCi0g LyogQ29uc3RhbnRzIHVzZWQgYnkgdGhpcyBtb2R1bGUuICAqLwotIHN0YXRpYyBQeU9iamVjdCAq aW52b2tlX2NzdDsKLSBzdGF0aWMgUHlPYmplY3QgKmNvbXBsZXRlX2NzdDsKLUBAIC0yNjMsMTAg KzI2MSwxMyBAQCBjbWRweV9jb21wbGV0ZXIgKHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjb21t YW5kLCBjaGFyICp0ZXh0LCBjaGFyICp3b3JkKQorQEAgLTI2MywxMCArMjYyLDEzIEBAIGNtZHB5 X2NvbXBsZXRlciAoc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNvbW1hbmQsIGNoYXIgKnRleHQs IGNoYXIgKndvcmQpCiAgICAgKkJBU0VfTElTVCBpcyBzZXQgdG8gdGhlIGZpbmFsIHByZWZpeCBj b21tYW5kJ3MgbGlzdCBvZgogICAgICpzdWItY29tbWFuZHMuCiAgICAgCkBAIC05NzI4LDcgKzEx MDMxLDcgQEAgaW5kZXggYWU0NjJkOS4uMjJkMTQwNSAxMDA2NDQKICB7CiAgICBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqZWx0OwogICAgaW50IGxlbiA9IHN0cmxlbiAodGV4dCk7Ci1AQCAtMjk5 LDcgKzMwMCw3IEBAIHBhcnNlX2NvbW1hbmRfbmFtZSAoY2hhciAqdGV4dCwgc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKioqYmFzZV9saXN0KQorQEAgLTI5OSw3ICszMDEsNyBAQCBwYXJzZV9jb21t YW5kX25hbWUgKGNoYXIgKnRleHQsIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqKmJhc2VfbGlz dCkKICAgICAgOwogICAgaWYgKGkgPCAwKQogICAgICB7CkBAIC05NzM3LDcgKzExMDQwLDcgQEAg aW5kZXggYWU0NjJkOS4uMjJkMTQwNSAxMDA2NDQKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg ICB9CiAgCi1AQCAtMzA4LDcgKzMwOSw3IEBAIHBhcnNlX2NvbW1hbmRfbmFtZSAoY2hhciAqdGV4 dCwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKioqYmFzZV9saXN0KQorQEAgLTMwOCw3ICszMTAs NyBAQCBwYXJzZV9jb21tYW5kX25hbWUgKGNoYXIgKnRleHQsIHN0cnVjdCBjbWRfbGlzdF9lbGVt ZW50ICoqKmJhc2VfbGlzdCkKICAgIHByZWZpeF90ZXh0W2kgKyAxXSA9ICdcMCc7CiAgCiAgICB0 ZXh0ID0gcHJlZml4X3RleHQ7CkBAIC05NzQ2LDcgKzExMDQ5LDcgQEAgaW5kZXggYWU0NjJkOS4u MjJkMTQwNSAxMDA2NDQKICAgIGlmICghZWx0IHx8IGVsdCA9PSAoc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQgKikgLTEpCiAgICAgIHsKICAgICAgICBQeUVycl9Gb3JtYXQgKFB5RXhjX1J1bnRpbWVF cnJvciwgXygiY291bGQgbm90IGZpbmQgY29tbWFuZCBwcmVmaXggJXMiKSwKLUBAIC0zOTksNyAr NDAwLDcgQEAgY21kcHlfaW5pdCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9i amVjdCAqa3cpCitAQCAtMzk5LDcgKzQwMSw3IEBAIGNtZHB5X2luaXQgKFB5T2JqZWN0ICpzZWxm LCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogICAgICAgIHJldHVybiAtMTsKICAgICAg fQogIApAQCAtMTM0MTksMjMgKzE0NzIyLDIyIEBAIGluZGV4IDkxOTZmMDguLjUyMzBhOGMgMTAw NjQ0CiAgCiAgI2VuZGlmIC8qIEdEQl9QWVRIT05fSU5URVJOQUxfSCAqLwogZGlmZiAtLWdpdCBh L2dkYi9weXRob24vcHl0aG9uLmMgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCi1pbmRleCA4MjczNzJj Li4xNzFjZDViIDEwMDY0NAoraW5kZXggMjkzODZjOS4uMTk1ZGFjZSAxMDA2NDQKIC0tLSBhL2dk Yi9weXRob24vcHl0aG9uLmMKICsrKyBiL2dkYi9weXRob24vcHl0aG9uLmMKLUBAIC0yNyw2ICsy Nyw3IEBACi0gI2luY2x1ZGUgIm9ic2VydmVyLmgiCitAQCAtMjgsNiArMjgsNyBAQAogICNpbmNs dWRlICJ2YWx1ZS5oIgogICNpbmNsdWRlICJsYW5ndWFnZS5oIgorICNpbmNsdWRlICJleGNlcHRp b25zLmgiCiArI2luY2x1ZGUgImV2ZW50LWxvb3AuaCIKICAKICAjaW5jbHVkZSA8Y3R5cGUuaD4K ICAKLUBAIC00NSwxMSArNDYsMTggQEAgc3RhdGljIGludCBnZGJweV9hdXRvX2xvYWQgPSAxOwor QEAgLTQ2LDEwICs0NywxNyBAQCBzdGF0aWMgaW50IGdkYnB5X2F1dG9fbG9hZCA9IDE7CiAgI2lu Y2x1ZGUgImNsaS9jbGktZGVjb2RlLmgiCiAgI2luY2x1ZGUgImNoYXJzZXQuaCIKICAjaW5jbHVk ZSAidG9wLmgiCiArI2luY2x1ZGUgInNvbGliLmgiCi0gI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIK ICAjaW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgiCiArI2luY2x1ZGUgImxpbmVzcGVjLmgiCiAr I2luY2x1ZGUgInN5bXRhYi5oIgpAQCAtMTM2MjQsNyArMTQ5MjYsNyBAQCBpbmRleCA4MjczNzJj Li4xNzFjZDViIDEwMDY0NAogIC8qIFBhcnNlIGEgc3RyaW5nIGFuZCBldmFsdWF0ZSBpdCBhcyBh biBleHByZXNzaW9uLiAgKi8KICBzdGF0aWMgUHlPYmplY3QgKgogIGdkYnB5X3BhcnNlX2FuZF9l dmFsIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi1AQCAtMzQ1LDYgKzQ1MiwxMTQg QEAgZ2RicHlfcGFyc2VfYW5kX2V2YWwgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykK K0BAIC0zNjEsNiArNDY4LDExNCBAQCBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqc3RyZWFt LCBjaGFyICpmaWxlKQogIAogIAwKICAKQEAgLTEzNzM5LDcgKzE1MDQxLDcgQEAgaW5kZXggODI3 MzcyYy4uMTcxY2Q1YiAxMDA2NDQKICAvKiBQcmludGluZy4gICovCiAgCiAgLyogQSBweXRob24g ZnVuY3Rpb24gdG8gd3JpdGUgYSBzaW5nbGUgc3RyaW5nIHVzaW5nIGdkYidzIGZpbHRlcmVkCi1A QCAtMzgxLDYgKzU5Niw2NyBAQCBnZGJweV9wcmludF9zdGFjayAodm9pZCkKK0BAIC0zOTcsNiAr NjEyLDU1IEBAIGdkYnB5X3ByaW50X3N0YWNrICh2b2lkKQogIAogIAwKICAKQEAgLTEzNzkwLDM4 ICsxNTA5MiwxMiBAQCBpbmRleCA4MjczNzJjLi4xNzFjZDViIDEwMDY0NAogKyAgZXhpdCAoMCk7 CiArfQogKwotK3ZvaWQKLStzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqc3RyZWFtLCBjaGFy ICpmaWxlKQotK3sKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKwotKyAgY2xlYW51cCA9 IGVuc3VyZV9weXRob25fZW52IChnZXRfY3VycmVudF9hcmNoICgpLCBjdXJyZW50X2xhbmd1YWdl KTsKLSsgIFB5UnVuX1NpbXBsZUZpbGUgKHN0cmVhbSwgZmlsZSk7Ci0rCi0rICBmY2xvc2UgKHN0 cmVhbSk7Ci0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rfQotKwogKwwKICsKICAvKiBUaGUg ImN1cnJlbnQiIG9iamZpbGUuICBUaGlzIGlzIHNldCB3aGVuIGdkYiBkZXRlY3RzIHRoYXQgYSBu ZXcKICAgICBvYmpmaWxlIGhhcyBiZWVuIGxvYWRlZC4gIEl0IGlzIG9ubHkgc2V0IGZvciB0aGUg ZHVyYXRpb24gb2YgYSBjYWxsCiAgICAgdG8gZ2RicHlfbmV3X29iamZpbGU7IGl0IGlzIE5VTEwg YXQgb3RoZXIgdGltZXMuICAqLwotQEAgLTUyNSw2ICs4MDEsMTMgQEAgZXZhbF9weXRob25fZnJv bV9jb250cm9sX2NvbW1hbmQgKHN0cnVjdCBjb21tYW5kX2xpbmUgKmNtZCkKLSAgIGVycm9yIChf KCJQeXRob24gc2NyaXB0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb3B5IG9mIEdEQi4i KSk7Ci0gfQotIAotK3ZvaWQKLStzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqc3RyZWFtKQot K3sKLSsgIGZjbG9zZSAoc3RyZWFtKTsKLSsgIGVycm9yIChfKCJQeXRob24gc2NyaXB0aW5nIGlz IG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb3B5IG9mIEdEQi4iKSk7Ci0rfQotKwotICNlbmRpZiAv KiBIQVZFX1BZVEhPTiAqLwotIAotIAwKLUBAIC02MTYsMTQgKzg5OSwyOCBAQCBFbmFibGVzIG9y IGRpc2FibGVzIGF1dG8tbG9hZGluZyBvZiBQeXRob24gY29kZSB3aGVuIGFuIG9iamVjdCBpcyBv cGVuZWQuIiksCitAQCAtNjQwLDE0ICs5MDQsMjggQEAgRW5hYmxlcyBvciBkaXNhYmxlcyBhdXRv LWxvYWRpbmcgb2YgUHl0aG9uIGNvZGUgd2hlbiBhbiBvYmplY3QgaXMgb3BlbmVkLiIpLAogICAg UHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQgKGdkYl9tb2R1bGUsICJWRVJTSU9OIiwgKGNoYXIq KSB2ZXJzaW9uKTsKICAgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50IChnZGJfbW9kdWxlLCAi SE9TVF9DT05GSUciLCAoY2hhciopIGhvc3RfbmFtZSk7CiAgICBQeU1vZHVsZV9BZGRTdHJpbmdD b25zdGFudCAoZ2RiX21vZHVsZSwgIlRBUkdFVF9DT05GSUciLCAoY2hhciopIHRhcmdldF9uYW1l KTsKQEAgLTEzODUwLDcgKzE1MTI2LDcgQEAgaW5kZXggODI3MzcyYy4uMTcxY2Q1YiAxMDA2NDQK ICAKICAgIFB5UnVuX1NpbXBsZVN0cmluZyAoImltcG9ydCBnZGIiKTsKICAgIFB5UnVuX1NpbXBs ZVN0cmluZyAoImdkYi5wcmV0dHlfcHJpbnRlcnMgPSBbXSIpOwotQEAgLTY1OSw2ICs5NTYsMTUg QEAgY2xhc3MgR2RiT3V0cHV0RmlsZTpcblwKK0BAIC02ODMsNiArOTYxLDE1IEBAIGNsYXNzIEdk Yk91dHB1dEZpbGU6XG5cCiAgXG5cCiAgc3lzLnN0ZGVyciA9IEdkYk91dHB1dEZpbGUoKVxuXAog IHN5cy5zdGRvdXQgPSBHZGJPdXRwdXRGaWxlKClcblwKQEAgLTEzODY2LDcgKzE1MTQyLDcgQEAg aW5kZXggODI3MzcyYy4uMTcxY2Q1YiAxMDA2NDQKICAiKTsKICAKICAgIC8qIFJlbGVhc2UgdGhl IEdJTCB3aGlsZSBnZGIgcnVucy4gICovCi1AQCAtNjc4LDkgKzk4NCwxNCBAQCBzdGF0aWMgUHlN ZXRob2REZWYgR2RiTWV0aG9kc1tdID0KK0BAIC03MDIsOSArOTg5LDE0IEBAIHN0YXRpYyBQeU1l dGhvZERlZiBHZGJNZXRob2RzW10gPQogICAgICAiR2V0IGEgdmFsdWUgZnJvbSBoaXN0b3J5IiB9 LAogICAgeyAiZXhlY3V0ZSIsIGV4ZWN1dGVfZ2RiX2NvbW1hbmQsIE1FVEhfVkFSQVJHUywKICAg ICAgIkV4ZWN1dGUgYSBnZGIgY29tbWFuZCIgfSwKQEAgLTEzODgxLDcgKzE1MTU3LDcgQEAgaW5k ZXggODI3MzcyYy4uMTcxY2Q1YiAxMDA2NDQKICAgIHsgImRlZmF1bHRfdmlzdWFsaXplciIsIGdk YnB5X2RlZmF1bHRfdmlzdWFsaXplciwgTUVUSF9WQVJBUkdTLAogICAgICAiRmluZCB0aGUgZGVm YXVsdCB2aXN1YWxpemVyIGZvciBhIFZhbHVlLiIgfSwKICAKLUBAIC03MDEsMTEgKzEwMTIsMzkg QEAgUmV0dXJuIGEgc3RyaW5nIGV4cGxhaW5pbmcgdW53aW5kIHN0b3AgcmVhc29uLiIgfSwKK0BA IC03MjUsMTEgKzEwMTcsMzkgQEAgUmV0dXJuIGEgc3RyaW5nIGV4cGxhaW5pbmcgdW53aW5kIHN0 b3AgcmVhc29uLiIgfSwKICAgICAgImxvb2t1cF90eXBlIChuYW1lIFssIGJsb2NrXSkgLT4gdHlw ZVxuXAogIFJldHVybiBhIFR5cGUgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gbmFtZS4iIH0s CiAgCkBAIC0xMzkyMiwyNSArMTUxOTgsMjMgQEAgaW5kZXggODI3MzcyYy4uMTcxY2Q1YiAxMDA2 NDQKICAgICAgIldyaXRlIGEgc3RyaW5nIHVzaW5nIGdkYidzIGZpbHRlcmVkIHN0cmVhbS4iIH0s CiAgICB7ICJmbHVzaCIsIGdkYnB5X2ZsdXNoLCBNRVRIX05PQVJHUywKIGRpZmYgLS1naXQgYS9n ZGIvcHl0aG9uL3B5dGhvbi5oIGIvZ2RiL3B5dGhvbi9weXRob24uaAotaW5kZXggZjM1ODI3Yi4u MWE1YjlhOCAxMDA2NDQKK2luZGV4IDVkOTNmNjcuLjFhNWI5YTggMTAwNjQ0CiAtLS0gYS9nZGIv cHl0aG9uL3B5dGhvbi5oCiArKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5oCi1AQCAtMjQsNiArMjQs MTAgQEAKK0BAIC0yNiw2ICsyNiw4IEBAIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2Nv bW1hbmQgKHN0cnVjdCBjb21tYW5kX2xpbmUgKik7CiAgCi0gdm9pZCBldmFsX3B5dGhvbl9mcm9t X2NvbnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1hbmRfbGluZSAqKTsKKyB2b2lkIHNvdXJjZV9w eXRob25fc2NyaXB0IChGSUxFICpzdHJlYW0sIGNoYXIgKmZpbGUpOwogIAotK3ZvaWQgc291cmNl X3B5dGhvbl9zY3JpcHQgKEZJTEUgKnN0cmVhbSwgY2hhciAqZmlsZSk7Ci0rCiArdm9pZCBydW5f cHl0aG9uX3NjcmlwdCAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKICsKICBpbnQgYXBwbHlfdmFs X3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIsCiAgCQkJICAgICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCiAg CQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiBkaWZmIC0tZ2l0 IGEvZ2RiL3NjbS1sYW5nLmMgYi9nZGIvc2NtLWxhbmcuYwotaW5kZXggMWQwNWY4YS4uZTIwMTVj NCAxMDA2NDQKK2luZGV4IDU4OThhYWQuLjIzZTVmMjIgMTAwNjQ0CiAtLS0gYS9nZGIvc2NtLWxh bmcuYwogKysrIGIvZ2RiL3NjbS1sYW5nLmMKLUBAIC0yMzMsNiArMjMzLDcgQEAgY29uc3Qgc3Ry dWN0IGV4cF9kZXNjcmlwdG9yIGV4cF9kZXNjcmlwdG9yX3NjbSA9CitAQCAtMjMxLDYgKzIzMSw3 IEBAIGNvbnN0IHN0cnVjdCBleHBfZGVzY3JpcHRvciBleHBfZGVzY3JpcHRvcl9zY20gPQogIHsK ICAgIHByaW50X3N1YmV4cF9zdGFuZGFyZCwKICAgIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCwK QEAgLTEzOTQ4LDYgKzE1MjIyLDExOCBAQCBpbmRleCAxZDA1ZjhhLi5lMjAxNWM0IDEwMDY0NAog ICAgb3BfbmFtZV9zdGFuZGFyZCwKICAgIGR1bXBfc3ViZXhwX2JvZHlfc3RhbmRhcmQsCiAgICBl dmFsdWF0ZV9leHAKK2RpZmYgLS1naXQgYS9nZGIvc2NtLXZhbHByaW50LmMgYi9nZGIvc2NtLXZh bHByaW50LmMKK2luZGV4IDFlOGQ0OGUuLjk1MTg1ZDQgMTAwNjQ0CistLS0gYS9nZGIvc2NtLXZh bHByaW50LmMKKysrKyBiL2dkYi9zY20tdmFscHJpbnQuYworQEAgLTYyLDkgKzYyLDkgQEAgc2Nt X2luZmVyaW9yX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9OR0VTVCB2YWx1ZSwgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwKKyAgICAgeworICAgICAgIC8qIFhYWDogU2hvdWxkIHdlIGNhY2hl IHRoZXNlIHN5bWJvbHM/ICAqLworICAgICAgIGdkYl9vdXRwdXRfc3ltID0KKy0JbG9va3VwX3N5 bWJvbF9nbG9iYWwgKCJnZGJfb3V0cHV0IiwgTlVMTCwgTlVMTCwgVkFSX0RPTUFJTik7CisrCWxv b2t1cF9zeW1ib2xfZ2xvYmFsICgiZ2RiX291dHB1dCIsIE5VTEwsIFZBUl9ET01BSU4pOworICAg ICAgIGdkYl9vdXRwdXRfbGVuX3N5bSA9CistCWxvb2t1cF9zeW1ib2xfZ2xvYmFsICgiZ2RiX291 dHB1dF9sZW5ndGgiLCBOVUxMLCBOVUxMLCBWQVJfRE9NQUlOKTsKKysJbG9va3VwX3N5bWJvbF9n bG9iYWwgKCJnZGJfb3V0cHV0X2xlbmd0aCIsIE5VTEwsIFZBUl9ET01BSU4pOworIAorICAgICAg IGlmICgoZ2RiX291dHB1dF9zeW0gPT0gTlVMTCkgfHwgKGdkYl9vdXRwdXRfbGVuX3N5bSA9PSBO VUxMKSkKKyAJcmV0ID0gLTE7CitkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLWRhcndpbi5jIGIvZ2Ri L3NvbGliLWRhcndpbi5jCitpbmRleCAzYzcwMDg5Li4wZWU3ZDg1IDEwMDY0NAorLS0tIGEvZ2Ri L3NvbGliLWRhcndpbi5jCisrKysgYi9nZGIvc29saWItZGFyd2luLmMKK0BAIC00MDgsNyArNDA4 LDYgQEAgZGFyd2luX3JlbG9jYXRlX3NlY3Rpb25fYWRkcmVzc2VzIChzdHJ1Y3Qgc29fbGlzdCAq c28sCisgc3RhdGljIHN0cnVjdCBzeW1ib2wgKgorIGRhcndpbl9sb29rdXBfbGliX3N5bWJvbCAo Y29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCQkJICBjb25zdCBjaGFyICpuYW1lLAor LQkJCSAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorIAkJCSAgY29uc3QgZG9tYWluX2VudW0g ZG9tYWluKQorIHsKKyAgIHJldHVybiBOVUxMOworZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zcHUu YyBiL2dkYi9zb2xpYi1zcHUuYworaW5kZXggOTRhNzdmYi4uN2VhNjhkMiAxMDA2NDQKKy0tLSBh L2dkYi9zb2xpYi1zcHUuYworKysrIGIvZ2RiL3NvbGliLXNwdS5jCitAQCAtMzI2LDE2ICszMjYs MTMgQEAgc3B1X2JmZF9vcGVuIChjaGFyICpwYXRobmFtZSkKKyBzdGF0aWMgc3RydWN0IHN5bWJv bCAqCisgc3B1X2xvb2t1cF9saWJfc3ltYm9sIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKKyAJCSAgICAgICBjb25zdCBjaGFyICpuYW1lLAorLQkJICAgICAgIGNvbnN0IGNoYXIgKmxp bmthZ2VfbmFtZSwKKyAJCSAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCisgeworICAg aWYgKGJmZF9nZXRfYXJjaCAob2JqZmlsZS0+b2JmZCkgPT0gYmZkX2FyY2hfc3B1KQorLSAgICBy ZXR1cm4gbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChvYmpmaWxlLCBuYW1lLCBs aW5rYWdlX25hbWUsCistCQkJCQkgICAgICBkb21haW4pOworKyAgICByZXR1cm4gbG9va3VwX2ds b2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChvYmpmaWxlLCBuYW1lLCBkb21haW4pOworIAorICAg aWYgKHN2cjRfc29fb3BzLmxvb2t1cF9saWJfZ2xvYmFsX3N5bWJvbCAhPSBOVUxMKQorLSAgICBy ZXR1cm4gc3ZyNF9zb19vcHMubG9va3VwX2xpYl9nbG9iYWxfc3ltYm9sIChvYmpmaWxlLCBuYW1l LCBsaW5rYWdlX25hbWUsCistCQkJCQkJIGRvbWFpbik7CisrICAgIHJldHVybiBzdnI0X3NvX29w cy5sb29rdXBfbGliX2dsb2JhbF9zeW1ib2wgKG9iamZpbGUsIG5hbWUsIGRvbWFpbik7CisgICBy ZXR1cm4gTlVMTDsKKyB9CisgCitkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXN2cjQuYyBiL2dkYi9z b2xpYi1zdnI0LmMKK2luZGV4IDgyNmY4YmYuLjRkZWY4OGQgMTAwNjQ0CistLS0gYS9nZGIvc29s aWItc3ZyNC5jCisrKysgYi9nZGIvc29saWItc3ZyNC5jCitAQCAtMTk2MCw3ICsxOTYwLDYgQEAg c3RydWN0IHRhcmdldF9zb19vcHMgc3ZyNF9zb19vcHM7Cisgc3RhdGljIHN0cnVjdCBzeW1ib2wg KgorIGVsZl9sb29rdXBfbGliX3N5bWJvbCAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUs CisgCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKy0JCSAgICAgICBjb25zdCBjaGFyICpsaW5r YWdlX25hbWUsCisgCQkgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQorIHsKKyAgIGJm ZCAqYWJmZDsKK0BAIC0xOTc4LDggKzE5NzcsNyBAQCBlbGZfbG9va3VwX2xpYl9zeW1ib2wgKGNv bnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorICAgaWYgKGFiZmQgPT0gTlVMTCB8fCBzY2Fu X2R5bnRhZyAoRFRfU1lNQk9MSUMsIGFiZmQsIE5VTEwpICE9IDEpCisgICAgIHJldHVybiBOVUxM OworIAorLSAgcmV0dXJuIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2JqZmlsZQorLQkJKG9i amZpbGUsIG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKKysgIHJldHVybiBsb29rdXBfZ2xv YmFsX3N5bWJvbF9mcm9tX29iamZpbGUgKG9iamZpbGUsIG5hbWUsIGRvbWFpbik7CisgfQorIAor IGV4dGVybiBpbml0aWFsaXplX2ZpbGVfZnR5cGUgX2luaXRpYWxpemVfc3ZyNF9zb2xpYjsgLyog LVdtaXNzaW5nLXByb3RvdHlwZXMgKi8KK2RpZmYgLS1naXQgYS9nZGIvc29saWIuYyBiL2dkYi9z b2xpYi5jCitpbmRleCA4NDJiMjdjLi5hYzFjNDA3IDEwMDY0NAorLS0tIGEvZ2RiL3NvbGliLmMK KysrKyBiL2dkYi9zb2xpYi5jCitAQCAtMTE1NCwxMyArMTE1NCwxMiBAQCBzaG93X2F1dG9fc29s aWJfYWRkIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorIHN0cnVjdCBzeW1i b2wgKgorIHNvbGliX2dsb2JhbF9sb29rdXAgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LAorIAkJICAgICBjb25zdCBjaGFyICpuYW1lLAorLQkJICAgICBjb25zdCBjaGFyICpsaW5rYWdl X25hbWUsCisgCQkgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKKyB7CisgICBzdHJ1Y3Qg dGFyZ2V0X3NvX29wcyAqb3BzID0gc29saWJfb3BzICh0YXJnZXRfZ2RiYXJjaCk7CisgCisgICBp ZiAob3BzLT5sb29rdXBfbGliX2dsb2JhbF9zeW1ib2wgIT0gTlVMTCkKKy0gICAgcmV0dXJuIG9w cy0+bG9va3VwX2xpYl9nbG9iYWxfc3ltYm9sIChvYmpmaWxlLCBuYW1lLCBsaW5rYWdlX25hbWUs IGRvbWFpbik7CisrICAgIHJldHVybiBvcHMtPmxvb2t1cF9saWJfZ2xvYmFsX3N5bWJvbCAob2Jq ZmlsZSwgbmFtZSwgZG9tYWluKTsKKyAgIHJldHVybiBOVUxMOworIH0KKyAKK2RpZmYgLS1naXQg YS9nZGIvc29saXN0LmggYi9nZGIvc29saXN0LmgKK2luZGV4IDU3M2Y3MzYuLjUxYmZjZTkgMTAw NjQ0CistLS0gYS9nZGIvc29saXN0LmgKKysrKyBiL2dkYi9zb2xpc3QuaAorQEAgLTExNyw3ICsx MTcsNiBAQCBzdHJ1Y3QgdGFyZ2V0X3NvX29wcworICAgICAvKiBIb29rIGZvciBsb29raW5nIHVw IGdsb2JhbCBzeW1ib2xzIGluIGEgbGlicmFyeS1zcGVjaWZpYyB3YXkuICAqLworICAgICBzdHJ1 Y3Qgc3ltYm9sICogKCpsb29rdXBfbGliX2dsb2JhbF9zeW1ib2wpIChjb25zdCBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKKyAJCQkJCQkgY29uc3QgY2hhciAqbmFtZSwKKy0JCQkJCQkgY29uc3Qg Y2hhciAqbGlua2FnZV9uYW1lLAorIAkJCQkJCSBjb25zdCBkb21haW5fZW51bSBkb21haW4pOwor IAorICAgICAvKiBHaXZlbiB0d28gc29fbGlzdCBvYmplY3RzLCBvbmUgZnJvbSB0aGUgR0RCIHRo cmVhZCBsaXN0CitAQCAtMTU3LDcgKzE1Niw2IEBAIGV4dGVybiBzdHJ1Y3QgdGFyZ2V0X3NvX29w cyAqY3VycmVudF90YXJnZXRfc29fb3BzOworIC8qIEhhbmRsZXIgZm9yIGxpYnJhcnktc3BlY2lm aWMgZ2xvYmFsIHN5bWJvbCBsb29rdXAgaW4gc29saWIuYy4gICovCisgc3RydWN0IHN5bWJvbCAq c29saWJfZ2xvYmFsX2xvb2t1cCAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCQkJ CSAgICBjb25zdCBjaGFyICpuYW1lLAorLQkJCQkgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1l LAorIAkJCQkgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKKyAKKyAjZW5kaWYKIGRpZmYg LS1naXQgYS9nZGIvc29tcmVhZC5jIGIvZ2RiL3NvbXJlYWQuYwogaW5kZXggYzdiZWFiYS4uZTMx MTY0YyAxMDA2NDQKIC0tLSBhL2dkYi9zb21yZWFkLmMKQEAgLTEzOTYwLDggKzE1MzQ2LDIxIEBA IGluZGV4IGM3YmVhYmEuLmUzMTE2NGMgMTAwNjQ0CiAgICBzb21fc3ltZmlsZV9maW5pc2gsCQkv KiBzeW1fZmluaXNoOiBmaW5pc2hlZCB3aXRoIGZpbGUsIGNsZWFudXAgKi8KICAgIHNvbV9zeW1m aWxlX29mZnNldHMsCQkvKiBzeW1fb2Zmc2V0czogIFRyYW5zbGF0ZSBleHQuIHRvIGludC4gcmVs b2NhdGlvbiAqLwogICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBzeW1fc2VnbWVudHM6 IEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20KK2RpZmYgLS1naXQgYS9nZGIvc3B1LXRkZXAu YyBiL2dkYi9zcHUtdGRlcC5jCitpbmRleCBjNmRiOGRjLi43MzU5YjUwIDEwMDY0NAorLS0tIGEv Z2RiL3NwdS10ZGVwLmMKKysrKyBiL2dkYi9zcHUtdGRlcC5jCitAQCAtMTg0MSw3ICsxODQxLDcg QEAgc3B1X2NhdGNoX3N0YXJ0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAgICAgICBzdHJ1 Y3Qgc3ltYm9sICpzeW07CisgICAgICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7CisgCist ICAgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssICJtYWluIiwgTlVMTCwgVkFS X0RPTUFJTik7CisrICAgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssICJtYWlu IiwgVkFSX0RPTUFJTik7CisgICAgICAgaWYgKHN5bSkKKyAJeworIAkgIGZpeHVwX3N5bWJvbF9z ZWN0aW9uIChzeW0sIG9iamZpbGUpOwogZGlmZiAtLWdpdCBhL2dkYi9zdGFjay5jIGIvZ2RiL3N0 YWNrLmMKLWluZGV4IDZlMTk4ZTAuLjk0YTNlZjkgMTAwNjQ0CitpbmRleCAyY2FmOWQyLi43YWRj Mzk5IDEwMDY0NAogLS0tIGEvZ2RiL3N0YWNrLmMKICsrKyBiL2dkYi9zdGFjay5jCiBAQCAtMTMw OSwyNCArMTMwOSwyNCBAQCBiYWNrdHJhY2VfY29tbWFuZF8xIChjaGFyICpjb3VudF9leHAsIGlu dCBzaG93X2xvY2FscywgaW50IGZyb21fdHR5KQpAQCAtMTQwMDgsMTAgKzE1NDA3LDEwIEBAIGlu ZGV4IDZlMTk4ZTAuLjk0YTNlZjkgMTAwNjQ0CiAgICBmb3IgKGkgPSAwLCBmaSA9IHRyYWlsaW5n OyBmaSAmJiBjb3VudC0tOyBpKyssIGZpID0gZ2V0X3ByZXZfZnJhbWUgKGZpKSkKICAgICAgewog ZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxlLmMgYi9nZGIvc3ltZmlsZS5jCi1pbmRleCA4OWNjMDdj Li5iNzU5ZjEwIDEwMDY0NAoraW5kZXggYmM1MjQwNi4uNWQ1ZDgzZiAxMDA2NDQKIC0tLSBhL2dk Yi9zeW1maWxlLmMKICsrKyBiL2dkYi9zeW1maWxlLmMKLUBAIC05NjgsMTMgKzk2OCwxNiBAQCBz eW1ib2xfZmlsZV9hZGRfd2l0aF9hZGRyc19vcl9vZmZzZXRzIChiZmQgKmFiZmQsCitAQCAtOTY2 LDEzICs5NjYsMTYgQEAgc3ltYm9sX2ZpbGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZk ICphYmZkLAogICAgLyogR2l2ZSB1c2VyIGEgY2hhbmNlIHRvIGJ1cnAgaWYgd2UnZCBiZQogICAg ICAgaW50ZXJhY3RpdmVseSB3aXBpbmcgb3V0IGFueSBleGlzdGluZyBzeW1ib2xzLiAgKi8KICAK QEAgLTE0MDMwLDcgKzE1NDI5LDcgQEAgaW5kZXggODljYzA3Yy4uYjc1OWYxMCAxMDA2NDQKICAg IGRpc2NhcmRfY2xlYW51cHMgKG15X2NsZWFudXBzKTsKICAKICAgIC8qIFdlIGVpdGhlciBjcmVh dGVkIGEgbmV3IG1hcHBlZCBzeW1ib2wgdGFibGUsIG1hcHBlZCBhbiBleGlzdGluZwotQEAgLTEw MDEsNiArMTAwNCw4IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMgKGJm ZCAqYWJmZCwKK0BAIC05OTksNiArMTAwMiw4IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJz X29yX29mZnNldHMgKGJmZCAqYWJmZCwKICAKICAgIGlmICgoZmxhZ3MgJiBPQkpGX1JFQUROT1cp IHx8IHJlYWRub3dfc3ltYm9sX2ZpbGVzKQogICAgICB7CkBAIC0xNDAzOSw3ICsxNTQzOCw3IEBA IGluZGV4IDg5Y2MwN2MuLmI3NTlmMTAgMTAwNjQ0CiAgICAgICAgaWYgKGZyb21fdHR5IHx8IGlu Zm9fdmVyYm9zZSkKICAJewogIAkgIHByaW50Zl91bmZpbHRlcmVkIChfKCJleHBhbmRpbmcgdG8g ZnVsbCBzeW1ib2xzLi4uIikpOwotQEAgLTIzMjMsNiArMjMyOCw3IEBAIHJlcmVhZF9zeW1ib2xz ICh2b2lkKQorQEAgLTIzMjEsNiArMjMyNiw3IEBAIHJlcmVhZF9zeW1ib2xzICh2b2lkKQogIAkg IG9iamZpbGUtPnN5bXRhYnMgPSBOVUxMOwogIAkgIG9iamZpbGUtPnBzeW10YWJzID0gTlVMTDsK ICAJICBvYmpmaWxlLT5wc3ltdGFic19hZGRybWFwID0gTlVMTDsKQEAgLTE0MDQ3LDcgKzE1NDQ2 LDcgQEAgaW5kZXggODljYzA3Yy4uYjc1OWYxMCAxMDA2NDQKICAJICBvYmpmaWxlLT5mcmVlX3Bz eW10YWJzID0gTlVMTDsKICAJICBvYmpmaWxlLT5jcF9uYW1lc3BhY2Vfc3ltdGFiID0gTlVMTDsK ICAJICBvYmpmaWxlLT5tc3ltYm9scyA9IE5VTEw7Ci1AQCAtMjMzMyw2ICsyMzM5LDggQEAgcmVy ZWFkX3N5bWJvbHMgKHZvaWQpCitAQCAtMjMzMSw2ICsyMzM3LDggQEAgcmVyZWFkX3N5bWJvbHMg KHZvaWQpCiAgCSAgbWVtc2V0ICgmb2JqZmlsZS0+bXN5bWJvbF9kZW1hbmdsZWRfaGFzaCwgMCwK ICAJCSAgc2l6ZW9mIChvYmpmaWxlLT5tc3ltYm9sX2RlbWFuZ2xlZF9oYXNoKSk7CiAgCkBAIC0x NDA1Nyw3ICsxNTQ1Niw3IEBAIGluZGV4IDg5Y2MwN2MuLmI3NTlmMTAgMTAwNjQ0CiAgCSAgb2Jq ZmlsZS0+bWFjcm9fY2FjaGUgPSBiY2FjaGVfeG1hbGxvYyAoKTsKICAJICBvYmpmaWxlLT5maWxl bmFtZV9jYWNoZSA9IGJjYWNoZV94bWFsbG9jICgpOwogZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxl LmggYi9nZGIvc3ltZmlsZS5oCi1pbmRleCA3YWU4MTljLi5mM2Y2ZWIzIDEwMDY0NAoraW5kZXgg ZWZhMDY5ZS4uYjUyMGI5MyAxMDA2NDQKIC0tLSBhL2dkYi9zeW1maWxlLmgKICsrKyBiL2dkYi9z eW1maWxlLmgKIEBAIC0xMzksNiArMTM5LDEyIEBAIHN0cnVjdCBzeW1fZm5zCkBAIC0xNDA3Myw3 ICsxNTQ3MiwxNyBAQCBpbmRleCA3YWU4MTljLi5mM2Y2ZWIzIDEwMDY0NAogICAgLyogQ2FsbGVk IHdoZW4gd2UgYXJlIGZpbmlzaGVkIHdpdGggYW4gb2JqZmlsZS4gIFNob3VsZCBkbyBhbGwKICAg ICAgIGNsZWFudXAgdGhhdCBpcyBzcGVjaWZpYyB0byB0aGUgb2JqZWN0IGZpbGUgZm9ybWF0IGZv ciB0aGUKICAgICAgIHBhcnRpY3VsYXIgb2JqZmlsZS4gICovCi1AQCAtMzg5LDcgKzM5NSw3IEBA IHZvaWQgZnJlZV9zeW1maWxlX3NlZ21lbnRfZGF0YSAoc3RydWN0IHN5bWZpbGVfc2VnbWVudF9k YXRhICpkYXRhKTsKK0BAIC0zMTUsOCArMzIxLDcgQEAgZXh0ZXJuIGludCBhdXRvX3NvbGliX2xp bWl0OworIAorIGV4dGVybiB2b2lkIHNldF9pbml0aWFsX2xhbmd1YWdlICh2b2lkKTsKKyAKKy1l eHRlcm4gc3RydWN0IHBhcnRpYWxfc3ltdGFiICphbGxvY2F0ZV9wc3ltdGFiIChjb25zdCBjaGFy ICosCistCQkJCQkJc3RydWN0IG9iamZpbGUgKik7CisrZXh0ZXJuIHN0cnVjdCBwYXJ0aWFsX3N5 bXRhYiAqYWxsb2NhdGVfcHN5bXRhYiAoY29uc3QgY2hhciAqLCBzdHJ1Y3Qgb2JqZmlsZSAqKTsK KyAKKyBleHRlcm4gdm9pZCBkaXNjYXJkX3BzeW10YWIgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAq KTsKKyAKK0BAIC0zODcsNyArMzkyLDcgQEAgdm9pZCBmcmVlX3N5bWZpbGVfc2VnbWVudF9kYXRh IChzdHJ1Y3Qgc3ltZmlsZV9zZWdtZW50X2RhdGEgKmRhdGEpOwogIC8qIEZyb20gZHdhcmYycmVh ZC5jICovCiAgCiAgZXh0ZXJuIGludCBkd2FyZjJfaGFzX2luZm8gKHN0cnVjdCBvYmpmaWxlICop OwpAQCAtMTQwODIsMTEgKzE1NDkxLDczIEBAIGluZGV4IDdhZTgxOWMuLmYzZjZlYjMgMTAwNjQ0 CiAgZXh0ZXJuIHZvaWQgZHdhcmYyX2J1aWxkX3BzeW10YWJzIChzdHJ1Y3Qgb2JqZmlsZSAqKTsK ICBleHRlcm4gdm9pZCBkd2FyZjJfYnVpbGRfZnJhbWVfaW5mbyAoc3RydWN0IG9iamZpbGUgKik7 CiAgCitkaWZmIC0tZ2l0IGEvZ2RiL3N5bW1pc2MuYyBiL2dkYi9zeW1taXNjLmMKK2luZGV4IDFm M2ViOWUuLmQwOTZkNWMgMTAwNjQ0CistLS0gYS9nZGIvc3ltbWlzYy5jCisrKysgYi9nZGIvc3lt bWlzYy5jCitAQCAtMTE0Myw3ICsxMTQzLDcgQEAgbWFpbnRlbmFuY2VfY2hlY2tfc3ltdGFicyAo Y2hhciAqaWdub3JlLCBpbnQgZnJvbV90dHkpCisgICAgIHdoaWxlIChsZW5ndGgtLSkKKyAgICAg ICB7CisgCXN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGIsIFNZTUJPTF9MSU5LQUdFX05BTUUg KCpwc3ltKSwKKy0JCQkJICAgTlVMTCwgU1lNQk9MX0RPTUFJTiAoKnBzeW0pKTsKKysJCQkJICAg U1lNQk9MX0RPTUFJTiAoKnBzeW0pKTsKKyAJaWYgKCFzeW0pCisgCSAgeworIAkgICAgcHJpbnRm X2ZpbHRlcmVkICgiU3RhdGljIHN5bWJvbCBgIik7CitAQCAtMTE2MCw3ICsxMTYwLDcgQEAgbWFp bnRlbmFuY2VfY2hlY2tfc3ltdGFicyAoY2hhciAqaWdub3JlLCBpbnQgZnJvbV90dHkpCisgICAg IHdoaWxlIChsZW5ndGgtLSkKKyAgICAgICB7CisgCXN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wg KGIsIFNZTUJPTF9MSU5LQUdFX05BTUUgKCpwc3ltKSwKKy0JCQkJICAgTlVMTCwgU1lNQk9MX0RP TUFJTiAoKnBzeW0pKTsKKysJCQkJICAgU1lNQk9MX0RPTUFJTiAoKnBzeW0pKTsKKyAJaWYgKCFz eW0pCisgCSAgeworIAkgICAgcHJpbnRmX2ZpbHRlcmVkICgiR2xvYmFsIHN5bWJvbCBgIik7CiBk aWZmIC0tZ2l0IGEvZ2RiL3N5bXRhYi5jIGIvZ2RiL3N5bXRhYi5jCi1pbmRleCA0MjYzMjZkLi5i YWM0Y2EzIDEwMDY0NAoraW5kZXggNDI2MzI2ZC4uMjBkOTBkZSAxMDA2NDQKIC0tLSBhL2dkYi9z eW10YWIuYwogKysrIGIvZ2RiL3N5bXRhYi5jCi1AQCAtMjcxLDcgKzI3MSw3IEBAIGxvb2t1cF9w YXJ0aWFsX3N5bXRhYiAoY29uc3QgY2hhciAqbmFtZSkKK0BAIC00Miw2ICs0Miw3IEBACisgI2lu Y2x1ZGUgImFkYS1sYW5nLmgiCisgI2luY2x1ZGUgInAtbGFuZy5oIgorICNpbmNsdWRlICJhZGRy bWFwLmgiCisrI2luY2x1ZGUgImNwLXN1cHBvcnQuaCIKKyAKKyAjaW5jbHVkZSAiaGFzaHRhYi5o IgorIAorQEAgLTg1LDcgKzg2LDYgQEAgc3RhdGljIGludCBmaW5kX2xpbmVfY29tbW9uIChzdHJ1 Y3QgbGluZXRhYmxlICosIGludCwgaW50ICopOworIGNoYXIgKm9wZXJhdG9yX2NoYXJzIChjaGFy ICpwLCBjaGFyICoqZW5kKTsKKyAKKyBzdGF0aWMgc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJv bF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsCistCQkJCQkgY29uc3QgY2hhciAqbGlua2FnZV9uYW1l LAorIAkJCQkJIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCisgCQkJCQkgY29uc3QgZG9tYWlu X2VudW0gZG9tYWluLAorIAkJCQkJIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UsCitAQCAtOTMsMjAg KzkzLDE5IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1eCAoY29uc3Qg Y2hhciAqbmFtZSwKKyAKKyBzdGF0aWMKKyBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1 eF9sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwKKy0JCQkJCWNvbnN0IGNoYXIgKmxpbmthZ2VfbmFt ZSwKKyAJCQkJCWNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCistCQkJCQljb25zdCBkb21haW5f ZW51bSBkb21haW4pOworKwkJCQkJY29uc3QgZG9tYWluX2VudW0gZG9tYWluLAorKwkJCQkJZW51 bSBsYW5ndWFnZSBsYW5ndWFnZSwKKysJCQkJCWludCAqaXNfYV9maWVsZF9vZl90aGlzKTsKKyAK KyBzdGF0aWMKKyBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzIChpbnQg YmxvY2tfaW5kZXgsCisgCQkJCQkgIGNvbnN0IGNoYXIgKm5hbWUsCistCQkJCQkgIGNvbnN0IGNo YXIgKmxpbmthZ2VfbmFtZSwKKyAJCQkJCSAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKKyAK KyBzdGF0aWMKKyBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAoaW50 IGJsb2NrX2luZGV4LAorIAkJCQkJICAgY29uc3QgY2hhciAqbmFtZSwKKy0JCQkJCSAgIGNvbnN0 IGNoYXIgKmxpbmthZ2VfbmFtZSwKKyAJCQkJCSAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7 CisgCisgc3RhdGljIGludCBmaWxlX21hdGNoZXMgKGNoYXIgKiwgY2hhciAqKiwgaW50KTsKK0BA IC0yNzEsNyArMjcwLDcgQEAgbG9va3VwX3BhcnRpYWxfc3ltdGFiIChjb25zdCBjaGFyICpuYW1l KQogICAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHJlYWxfcGF0aCk7CiAgICAgIH0KICAKQEAg LTE0MDk1LDcgKzE1NTY2LDcgQEAgaW5kZXggNDI2MzI2ZC4uYmFjNGNhMyAxMDA2NDQKICAgIHsK ICAgICAgaWYgKEZJTEVOQU1FX0NNUCAobmFtZSwgcHN0LT5maWxlbmFtZSkgPT0gMCkKICAgICAg ICB7Ci1AQCAtNDE0LDcgKzQxNCw4IEBAIHN5bWJvbF9pbml0X2xhbmd1YWdlX3NwZWNpZmljIChz dHJ1Y3QgZ2VuZXJhbF9zeW1ib2xfaW5mbyAqZ3N5bWJvbCwKK0BAIC00MTQsNyArNDEzLDggQEAg c3ltYm9sX2luaXRfbGFuZ3VhZ2Vfc3BlY2lmaWMgKHN0cnVjdCBnZW5lcmFsX3N5bWJvbF9pbmZv ICpnc3ltYm9sLAogICAgZ3N5bWJvbC0+bGFuZ3VhZ2UgPSBsYW5ndWFnZTsKICAgIGlmIChnc3lt Ym9sLT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cwogICAgICAgIHx8IGdzeW1ib2wtPmxhbmd1 YWdlID09IGxhbmd1YWdlX2phdmEKQEAgLTE0MTA1LDcgKzE1NTc2LDE2IEBAIGluZGV4IDQyNjMy NmQuLmJhYzRjYTMgMTAwNjQ0CiAgICAgIHsKICAgICAgICBnc3ltYm9sLT5sYW5ndWFnZV9zcGVj aWZpYy5jcGx1c19zcGVjaWZpYy5kZW1hbmdsZWRfbmFtZSA9IE5VTEw7CiAgICAgIH0KLUBAIC02 OTUsNiArNjk2LDcgQEAgc3ltYm9sX25hdHVyYWxfbmFtZSAoY29uc3Qgc3RydWN0IGdlbmVyYWxf c3ltYm9sX2luZm8gKmdzeW1ib2wpCitAQCAtNDk4LDcgKzQ5OCw3IEBAIHN5bWJvbF9maW5kX2Rl bWFuZ2xlZF9uYW1lIChzdHJ1Y3QgZ2VuZXJhbF9zeW1ib2xfaW5mbyAqZ3N5bWJvbCwKKyAgICAg ICB8fCBnc3ltYm9sLT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9hdXRvKQorICAgICB7CisgICAgICAg ZGVtYW5nbGVkID0KKy0gICAgICAgIGNwbHVzX2RlbWFuZ2xlIChtYW5nbGVkLCBETUdMX1BBUkFN UyB8IERNR0xfQU5TSSk7CisrICAgICAgICBjcGx1c19kZW1hbmdsZSAobWFuZ2xlZCwgRE1HTF9Q QVJBTVMgfCBETUdMX0FOU0kgfCBETUdMX1ZFUkJPU0UpOworICAgICAgIGlmIChkZW1hbmdsZWQg IT0gTlVMTCkKKyAJeworIAkgIGdzeW1ib2wtPmxhbmd1YWdlID0gbGFuZ3VhZ2VfY3BsdXM7CitA QCAtNjk1LDYgKzY5NSw3IEBAIHN5bWJvbF9uYXR1cmFsX25hbWUgKGNvbnN0IHN0cnVjdCBnZW5l cmFsX3N5bWJvbF9pbmZvICpnc3ltYm9sKQogICAgICBjYXNlIGxhbmd1YWdlX2NwbHVzOgogICAg ICBjYXNlIGxhbmd1YWdlX2phdmE6CiAgICAgIGNhc2UgbGFuZ3VhZ2Vfb2JqYzoKQEAgLTE0MTEz LDcgKzE1NTkzLDcgQEAgaW5kZXggNDI2MzI2ZC4uYmFjNGNhMyAxMDA2NDQKICAgICAgICBpZiAo Z3N5bWJvbC0+bGFuZ3VhZ2Vfc3BlY2lmaWMuY3BsdXNfc3BlY2lmaWMuZGVtYW5nbGVkX25hbWUg IT0gTlVMTCkKICAJcmV0dXJuIGdzeW1ib2wtPmxhbmd1YWdlX3NwZWNpZmljLmNwbHVzX3NwZWNp ZmljLmRlbWFuZ2xlZF9uYW1lOwogICAgICAgIGJyZWFrOwotQEAgLTcyMCw2ICs3MjIsNyBAQCBz eW1ib2xfZGVtYW5nbGVkX25hbWUgKGNvbnN0IHN0cnVjdCBnZW5lcmFsX3N5bWJvbF9pbmZvICpn c3ltYm9sKQorQEAgLTcyMCw2ICs3MjEsNyBAQCBzeW1ib2xfZGVtYW5nbGVkX25hbWUgKGNvbnN0 IHN0cnVjdCBnZW5lcmFsX3N5bWJvbF9pbmZvICpnc3ltYm9sKQogICAgICBjYXNlIGxhbmd1YWdl X2NwbHVzOgogICAgICBjYXNlIGxhbmd1YWdlX2phdmE6CiAgICAgIGNhc2UgbGFuZ3VhZ2Vfb2Jq YzoKQEAgLTE0MTIxLDcgKzE1NjAxLDcgQEAgaW5kZXggNDI2MzI2ZC4uYmFjNGNhMyAxMDA2NDQK ICAgICAgICBpZiAoZ3N5bWJvbC0+bGFuZ3VhZ2Vfc3BlY2lmaWMuY3BsdXNfc3BlY2lmaWMuZGVt YW5nbGVkX25hbWUgIT0gTlVMTCkKICAJcmV0dXJuIGdzeW1ib2wtPmxhbmd1YWdlX3NwZWNpZmlj LmNwbHVzX3NwZWNpZmljLmRlbWFuZ2xlZF9uYW1lOwogICAgICAgIGJyZWFrOwotQEAgLTkzMSw3 ICs5MzQsMTMgQEAgZmluZF9wY19zZWN0X3BzeW10YWIgKENPUkVfQUREUiBwYywgc3RydWN0IG9i al9zZWN0aW9uICpzZWN0aW9uKQorQEAgLTkzMSw3ICs5MzMsMTMgQEAgZmluZF9wY19zZWN0X3Bz eW10YWIgKENPUkVfQUREUiBwYywgc3RydWN0IG9ial9zZWN0aW9uICpzZWN0aW9uKQogICAgICAg dGhhbiB0aGUgbGF0ZXIgdXNlZCBURVhUTE9XL1RFWFRISUdIIG9uZS4gICovCiAgCiAgICBBTExf T0JKRklMRVMgKG9iamZpbGUpCkBAIC0xNDEzNiw3ICsxNTYxNiw3IEBAIGluZGV4IDQyNjMyNmQu LmJhYzRjYTMgMTAwNjQ0CiAgICAgICAgewogIAlzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdDsK ICAKLUBAIC05NjQsNiArOTczLDcgQEAgZmluZF9wY19zZWN0X3BzeW10YWIgKENPUkVfQUREUiBw Yywgc3RydWN0IG9ial9zZWN0aW9uICpzZWN0aW9uKQorQEAgLTk2NCw2ICs5NzIsNyBAQCBmaW5k X3BjX3NlY3RfcHN5bXRhYiAoQ09SRV9BRERSIHBjLCBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKnNlY3Rp b24pCiAgCSAgICByZXR1cm4gcHN0OwogIAkgIH0KICAgICAgICB9CkBAIC0xNDE0NCw3ICsxNTYy NCw3IEBAIGluZGV4IDQyNjMyNmQuLmJhYzRjYTMgMTAwNjQ0CiAgCiAgICAvKiBFeGlzdGluZyBQ U1lNVEFCU19BRERSTUFQIG1hcHBpbmcgaXMgcHJlc2VudCBldmVuIGZvciBQQVJUSUFMX1NZTVRB QnMKICAgICAgIHdoaWNoIHN0aWxsIGhhdmUgbm8gY29ycmVzcG9uZGluZyBmdWxsIFNZTVRBQnMg cmVhZC4gIEJ1dCBpdCBpcyBub3QKLUBAIC0xMjMxLDYgKzEyNDEsMjIgQEAgZml4dXBfcHN5bWJv bF9zZWN0aW9uIChzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKnBzeW0sIHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlKQorQEAgLTEyMzEsNiArMTI0MCwyMiBAQCBmaXh1cF9wc3ltYm9sX3NlY3Rpb24gKHN0 cnVjdCBwYXJ0aWFsX3N5bWJvbCAqcHN5bSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCiAgICBy ZXR1cm4gcHN5bTsKICB9CiAgCkBAIC0xNDE2Nyw3ICsxNTY0NywyNjYgQEAgaW5kZXggNDI2MzI2 ZC4uYmFjNGNhMyAxMDA2NDQKICAvKiBGaW5kIHRoZSBkZWZpbml0aW9uIGZvciBhIHNwZWNpZmll ZCBzeW1ib2wgbmFtZSBOQU1FCiAgICAgaW4gZG9tYWluIERPTUFJTiwgdmlzaWJsZSBmcm9tIGxl eGljYWwgYmxvY2sgQkxPQ0suCiAgICAgUmV0dXJucyB0aGUgc3RydWN0IHN5bWJvbCBwb2ludGVy LCBvciB6ZXJvIGlmIG5vIHN5bWJvbCBpcyBmb3VuZC4KLUBAIC0xNTM0LDYgKzE1NjAsNyBAQCBs b29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpt YWluX29iamZpbGUsCitAQCAtMTI1NywxMCArMTI4MiwxNCBAQCBsb29rdXBfc3ltYm9sX2luX2xh bmd1YWdlIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorIHsK KyAgIGNoYXIgKmRlbWFuZ2xlZF9uYW1lID0gTlVMTDsKKyAgIGNvbnN0IGNoYXIgKm1vZGlmaWVk X25hbWUgPSBOVUxMOworLSAgY29uc3QgY2hhciAqbWFuZ2xlZF9uYW1lID0gTlVMTDsKKyAgIHN0 cnVjdCBzeW1ib2wgKnJldHVybnZhbDsKKyAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwID0gbWFr ZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOworIAorKyAgaWYoc3RybmNtcChuYW1lLCAiOjoi LCAyKSA9PSAwKXsvKiB0aGlzIG11c3QgYmUgYSBnbG9iYWwgbmFtZSAqLworKyAgICBuYW1lID0g bmFtZSsyOworKyAgICBibG9jayA9IE5VTEw7CisrICB9CisrICAKKyAgIG1vZGlmaWVkX25hbWUg PSBuYW1lOworIAorICAgLyogSWYgd2UgYXJlIHVzaW5nIEMrKyBvciBKYXZhLCBkZW1hbmdsZSB0 aGUgbmFtZSBiZWZvcmUgZG9pbmcgYSBsb29rdXAsIHNvCitAQCAtMTI3MCw3ICsxMjk5LDYgQEAg bG9va3VwX3N5bWJvbF9pbl9sYW5ndWFnZSAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0 IGJsb2NrICpibG9jaywKKyAgICAgICBkZW1hbmdsZWRfbmFtZSA9IGNwbHVzX2RlbWFuZ2xlIChu YW1lLCBETUdMX0FOU0kgfCBETUdMX1BBUkFNUyk7CisgICAgICAgaWYgKGRlbWFuZ2xlZF9uYW1l KQorIAl7CistCSAgbWFuZ2xlZF9uYW1lID0gbmFtZTsKKyAJICBtb2RpZmllZF9uYW1lID0gZGVt YW5nbGVkX25hbWU7CisgCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVtYW5nbGVkX25hbWUpOwor IAl9CitAQCAtMTI5Miw3ICsxMzIwLDYgQEAgbG9va3VwX3N5bWJvbF9pbl9sYW5ndWFnZSAoY29u c3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKKyAJCSAgICAgIAkJICAg ICAgIERNR0xfQU5TSSB8IERNR0xfUEFSQU1TIHwgRE1HTF9KQVZBKTsKKyAgICAgICBpZiAoZGVt YW5nbGVkX25hbWUpCisgCXsKKy0JICBtYW5nbGVkX25hbWUgPSBuYW1lOworIAkgIG1vZGlmaWVk X25hbWUgPSBkZW1hbmdsZWRfbmFtZTsKKyAJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZW1hbmds ZWRfbmFtZSk7CisgCX0KK0BAIC0xMzExLDggKzEzMzgsOCBAQCBsb29rdXBfc3ltYm9sX2luX2xh bmd1YWdlIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorICAg ICAgIG1vZGlmaWVkX25hbWUgPSBjb3B5OworICAgICB9CisgCistICByZXR1cm52YWwgPSBsb29r dXBfc3ltYm9sX2F1eCAobW9kaWZpZWRfbmFtZSwgbWFuZ2xlZF9uYW1lLCBibG9jaywKKy0JCQkJ IGRvbWFpbiwgbGFuZywgaXNfYV9maWVsZF9vZl90aGlzKTsKKysgIHJldHVybnZhbCA9IGxvb2t1 cF9zeW1ib2xfYXV4IChtb2RpZmllZF9uYW1lLCBibG9jaywgZG9tYWluLCBsYW5nLAorKwkJCQkg aXNfYV9maWVsZF9vZl90aGlzKTsKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyAKKyAgIHJl dHVybiByZXR1cm52YWw7CitAQCAtMTMzNiw5ICsxMzYzLDkgQEAgbG9va3VwX3N5bWJvbCAoY29u c3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKKyAgICB3ZWxsLiAgKi8K KyAKKyBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCistbG9va3VwX3N5bWJvbF9hdXggKGNvbnN0IGNo YXIgKm5hbWUsIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKy0JCSAgIGNvbnN0IHN0cnVjdCBi bG9jayAqYmxvY2ssIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwKKy0JCSAgIGVudW0gbGFuZ3Vh Z2UgbGFuZ3VhZ2UsIGludCAqaXNfYV9maWVsZF9vZl90aGlzKQorK2xvb2t1cF9zeW1ib2xfYXV4 IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorKwkJICAgY29u c3QgZG9tYWluX2VudW0gZG9tYWluLCBlbnVtIGxhbmd1YWdlIGxhbmd1YWdlLAorKwkJICAgaW50 ICppc19hX2ZpZWxkX29mX3RoaXMpCisgeworICAgc3RydWN0IHN5bWJvbCAqc3ltOworICAgY29u c3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmdkZWY7CitAQCAtMTM1NCw1NSArMTM4MSwxOSBA QCBsb29rdXBfc3ltYm9sX2F1eCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbGlua2Fn ZV9uYW1lLAorICAgLyogU2VhcmNoIHNwZWNpZmllZCBibG9jayBhbmQgaXRzIHN1cGVyaW9ycy4g IERvbid0IHNlYXJjaAorICAgICAgU1RBVElDX0JMT0NLIG9yIEdMT0JBTF9CTE9DSy4gICovCisg CistICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9sb2NhbCAobmFtZSwgbGlua2FnZV9uYW1lLCBi bG9jaywgZG9tYWluKTsKKysgIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X2xvY2FsIChuYW1lLCBi bG9jaywgZG9tYWluLCBsYW5ndWFnZSwgaXNfYV9maWVsZF9vZl90aGlzKTsKKyAgIGlmIChzeW0g IT0gTlVMTCkKKyAgICAgcmV0dXJuIHN5bTsKKyAKKy0gIC8qIElmIHJlcXVlc3RlZCB0byBkbyBz byBieSB0aGUgY2FsbGVyIGFuZCBpZiBhcHByb3ByaWF0ZSBmb3IgTEFOR1VBR0UsCistICAgICBj aGVjayB0byBzZWUgaWYgTkFNRSBpcyBhIGZpZWxkIG9mIGB0aGlzJy4gKi8KKy0KKy0gIGxhbmdk ZWYgPSBsYW5ndWFnZV9kZWYgKGxhbmd1YWdlKTsKKy0KKy0gIGlmIChsYW5nZGVmLT5sYV9uYW1l X29mX3RoaXMgIT0gTlVMTCAmJiBpc19hX2ZpZWxkX29mX3RoaXMgIT0gTlVMTAorLSAgICAgICYm IGJsb2NrICE9IE5VTEwpCistICAgIHsKKy0gICAgICBzdHJ1Y3Qgc3ltYm9sICpzeW0gPSBOVUxM OworLSAgICAgIC8qICd0aGlzJyBpcyBvbmx5IGRlZmluZWQgaW4gdGhlIGZ1bmN0aW9uJ3MgYmxv Y2ssIHNvIGZpbmQgdGhlCistCSBlbmNsb3NpbmcgZnVuY3Rpb24gYmxvY2suICAqLworLSAgICAg IGZvciAoOyBibG9jayAmJiAhQkxPQ0tfRlVOQ1RJT04gKGJsb2NrKTsKKy0JICAgYmxvY2sgPSBC TE9DS19TVVBFUkJMT0NLIChibG9jaykpOworLQorLSAgICAgIGlmIChibG9jayAmJiAhZGljdF9l bXB0eSAoQkxPQ0tfRElDVCAoYmxvY2spKSkKKy0Jc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAo YmxvY2ssIGxhbmdkZWYtPmxhX25hbWVfb2ZfdGhpcywKKy0JCQkJICAgTlVMTCwgVkFSX0RPTUFJ Tik7CistICAgICAgaWYgKHN5bSkKKy0JeworLQkgIHN0cnVjdCB0eXBlICp0ID0gc3ltLT50eXBl OworLQorLQkgIC8qIEknbSBub3QgcmVhbGx5IHN1cmUgdGhhdCB0eXBlIG9mIHRoaXMgY2FuIGV2 ZXIKKy0JICAgICBiZSB0eXBlZGVmZWQ7IGp1c3QgYmUgc2FmZS4gICovCistCSAgQ0hFQ0tfVFlQ RURFRiAodCk7CistCSAgaWYgKFRZUEVfQ09ERSAodCkgPT0gVFlQRV9DT0RFX1BUUgorLQkgICAg ICB8fCBUWVBFX0NPREUgKHQpID09IFRZUEVfQ09ERV9SRUYpCistCSAgICB0ID0gVFlQRV9UQVJH RVRfVFlQRSAodCk7CistCistCSAgaWYgKFRZUEVfQ09ERSAodCkgIT0gVFlQRV9DT0RFX1NUUlVD VAorLQkgICAgICAmJiBUWVBFX0NPREUgKHQpICE9IFRZUEVfQ09ERV9VTklPTikKKy0JICAgIGVy cm9yIChfKCJJbnRlcm5hbCBlcnJvcjogYCVzJyBpcyBub3QgYW4gYWdncmVnYXRlIiksCistCQkg ICBsYW5nZGVmLT5sYV9uYW1lX29mX3RoaXMpOworLQorLQkgIGlmIChjaGVja19maWVsZCAodCwg bmFtZSkpCistCSAgICB7CistCSAgICAgICppc19hX2ZpZWxkX29mX3RoaXMgPSAxOworLQkgICAg ICByZXR1cm4gTlVMTDsKKy0JICAgIH0KKy0JfQorLSAgICB9CisrICAvKiB0aGlzIHN5bWJvbCB3 YXMgZm91bmQgdG8gYmUgYSBtZW1iZXIgdmFyaWFibGUKKysgICAgIGRvIG5vdCBwZXJmb3JtIHRo ZSBnbG9iYWwgc2VhcmNoLiAqLworKyAgaWYgKGlzX2FfZmllbGRfb2ZfdGhpcyAmJiAqaXNfYV9m aWVsZF9vZl90aGlzKQorKyAgICByZXR1cm4gTlVMTDsKKyAKKyAgIC8qIE5vdyBkbyB3aGF0ZXZl ciBpcyBhcHByb3ByaWF0ZSBmb3IgTEFOR1VBR0UgdG8gbG9vaworICAgICAgdXAgc3RhdGljIGFu ZCBnbG9iYWwgdmFyaWFibGVzLiAgKi8KKy0KKy0gIHN5bSA9IGxhbmdkZWYtPmxhX2xvb2t1cF9z eW1ib2xfbm9ubG9jYWwgKG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssIGRvbWFpbik7CisrICBs YW5nZGVmID0gbGFuZ3VhZ2VfZGVmIChsYW5ndWFnZSk7CisrICBzeW0gPSBsYW5nZGVmLT5sYV9s b29rdXBfc3ltYm9sX25vbmxvY2FsIChuYW1lLCBibG9jaywgZG9tYWluKTsKKyAgIGlmIChzeW0g IT0gTlVMTCkKKyAgICAgcmV0dXJuIHN5bTsKKyAKK0BAIC0xNDEyLDExICsxNDAzLDExIEBAIGxv b2t1cF9zeW1ib2xfYXV4IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpsaW5rYWdlX25h bWUsCisgICAgICBkZXNpcmVkIG5hbWUgYXMgYSBmaWxlLWxldmVsIHN0YXRpYywgdGhlbiBkbyBw c3ltdGFiLXRvLXN5bXRhYgorICAgICAgY29udmVyc2lvbiBvbiB0aGUgZmx5IGFuZCByZXR1cm4g dGhlIGZvdW5kIHN5bWJvbC4gKi8KKyAKKy0gIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRh YnMgKFNUQVRJQ19CTE9DSywgbmFtZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOworKyAgc3ltID0g bG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoU1RBVElDX0JMT0NLLCBuYW1lLCBkb21haW4pOwor ICAgaWYgKHN5bSAhPSBOVUxMKQorICAgICByZXR1cm4gc3ltOworIAorLSAgc3ltID0gbG9va3Vw X3N5bWJvbF9hdXhfcHN5bXRhYnMgKFNUQVRJQ19CTE9DSywgbmFtZSwgbGlua2FnZV9uYW1lLCBk b21haW4pOworKyAgc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKFNUQVRJQ19CTE9D SywgbmFtZSwgZG9tYWluKTsKKyAgIGlmIChzeW0gIT0gTlVMTCkKKyAgICAgcmV0dXJuIHN5bTsK KyAKK0BAIC0xNDI3LDMwICsxNDE4LDgxIEBAIGxvb2t1cF9zeW1ib2xfYXV4IChjb25zdCBjaGFy ICpuYW1lLCBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCisgICAgRG9uJ3Qgc2VhcmNoIFNUQVRJ Q19CTE9DSyBvciBHTE9CQUxfQkxPQ0suICAqLworIAorIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoK Ky1sb29rdXBfc3ltYm9sX2F1eF9sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAq bGlua2FnZV9uYW1lLAorLQkJCSBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorLQkJCSBjb25z dCBkb21haW5fZW51bSBkb21haW4pCisrbG9va3VwX3N5bWJvbF9hdXhfbG9jYWwgKGNvbnN0IGNo YXIgKm5hbWUsIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCisrCQkJIGNvbnN0IGRvbWFpbl9l bnVtIGRvbWFpbiwgZW51bSBsYW5ndWFnZSBsYW5ndWFnZSwKKysJCQkgaW50ICppc19hX2ZpZWxk X29mX3RoaXMpCisgeworICAgc3RydWN0IHN5bWJvbCAqc3ltOworLSAgY29uc3Qgc3RydWN0IGJs b2NrICpzdGF0aWNfYmxvY2sgPSBibG9ja19zdGF0aWNfYmxvY2sgKGJsb2NrKTsKKysgIGNvbnN0 IHN0cnVjdCBibG9jayAqZ2xvYmFsX2Jsb2NrID0gYmxvY2tfZ2xvYmFsX2Jsb2NrIChibG9jayk7 CisrICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrX2l0ZXJhdG9yID0gYmxvY2s7CisrICBjb25z dCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqbGFuZ2RlZjsKKysKKysgIGxhbmdkZWYgPSBsYW5ndWFn ZV9kZWYgKGxhbmd1YWdlKTsKKyAKKyAgIC8qIENoZWNrIGlmIGVpdGhlciBubyBibG9jayBpcyBz cGVjaWZpZWQgb3IgaXQncyBhIGdsb2JhbCBibG9jay4gICovCisgCistICBpZiAoc3RhdGljX2Js b2NrID09IE5VTEwpCisrICBpZiAoZ2xvYmFsX2Jsb2NrID09IE5VTEwpCisgICAgIHJldHVybiBO VUxMOworIAorLSAgd2hpbGUgKGJsb2NrICE9IHN0YXRpY19ibG9jaykKKysgIHdoaWxlIChibG9j a19pdGVyYXRvciAhPSBnbG9iYWxfYmxvY2spCisgICAgIHsKKy0gICAgICBzeW0gPSBsb29rdXBf c3ltYm9sX2F1eF9ibG9jayAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKKysK KysgICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9ibG9jayAobmFtZSwgYmxvY2tfaXRlcmF0 b3IsIGRvbWFpbik7CisrCisgICAgICAgaWYgKHN5bSAhPSBOVUxMKQorIAlyZXR1cm4gc3ltOwor KyAgICAKKysgICAgICBpZiAobGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMgKQorKyAgICAgICAg eworKyAgICAgICAgICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2ltcG9ydHMgKGJsb2NrX3Njb3Bl IChibG9ja19pdGVyYXRvciksIG5hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYmxvY2tfaXRlcmF0b3IsIGRvbWFpbiwgMSwgMSk7CisgCistICAgICAgaWYg KEJMT0NLX0ZVTkNUSU9OIChibG9jaykgIT0gTlVMTCAmJiBibG9ja19pbmxpbmVkX3AgKGJsb2Nr KSkKKy0JYnJlYWs7CistICAgICAgYmxvY2sgPSBCTE9DS19TVVBFUkJMT0NLIChibG9jayk7Cisr ICAgICAgICAgIGlmIChzeW0gIT0gTlVMTCkKKysgICAgICAgICAgICByZXR1cm4gc3ltOworKyAg ICAgICAgfQorKworKyAgICAgIGlmIChsYW5nZGVmLT5sYV9uYW1lX29mX3RoaXMgIT0gTlVMTCAm JiBpc19hX2ZpZWxkX29mX3RoaXMgIT0gTlVMTAorKwkgICYmIEJMT0NLX0ZVTkNUSU9OIChibG9j a19pdGVyYXRvcikpCisrICAgICAgICB7CisrICAgICAgICAgIGlmICghZGljdF9lbXB0eSAoQkxP Q0tfRElDVCAoYmxvY2tfaXRlcmF0b3IpKSkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAg ICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9ja19pdGVyYXRvciwKKysJCQkJCSBsYW5n ZGVmLT5sYV9uYW1lX29mX3RoaXMsCisrCQkJCQkgVkFSX0RPTUFJTik7CisrCisrCisrICAgICAg ICAgICAgICBpZiAoc3ltKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAg c3RydWN0IHR5cGUgKnQgPSBzeW0tPnR5cGU7CisrCisrICAgICAgICAgICAgICAgICAgLyogSSdt IG5vdCByZWFsbHkgc3VyZSB0aGF0IHR5cGUgb2YgdGhpcyBjYW4gZXZlcgorKyAgICAgICAgICAg ICAgICAgICAgIGJlIHR5cGVkZWZlZDsganVzdCBiZSBzYWZlLiAgKi8KKysgICAgICAgICAgICAg ICAgICBDSEVDS19UWVBFREVGICh0KTsKKysgICAgICAgICAgICAgICAgICBpZiAoVFlQRV9DT0RF ICh0KSA9PSBUWVBFX0NPREVfUFRSCisrICAgICAgICAgICAgICAgICAgICAgIHx8IFRZUEVfQ09E RSAodCkgPT0gVFlQRV9DT0RFX1JFRikKKysgICAgICAgICAgICAgICAgICAgICAgdCA9IFRZUEVf VEFSR0VUX1RZUEUgKHQpOworKworKyAgICAgICAgICAgICAgICAgIGlmIChUWVBFX0NPREUgKHQp ICE9IFRZUEVfQ09ERV9TVFJVQ1QKKysgICAgICAgICAgICAgICAgICAgICAgJiYgVFlQRV9DT0RF ICh0KSAhPSBUWVBFX0NPREVfVU5JT04pCisrICAgICAgICAgICAgICAgICAgICBlcnJvciAoXygi SW50ZXJuYWwgZXJyb3I6IGAlcycgaXMgbm90IGFuIGFnZ3JlZ2F0ZSIpLAorKyAgICAgICAgICAg ICAgICAgICAgICAgIGxhbmdkZWYtPmxhX25hbWVfb2ZfdGhpcyk7CisrCisrICAgICAgICAgICAg ICAgICAgaWYgKGNoZWNrX2ZpZWxkICh0LCBuYW1lKSkKKysgICAgICAgICAgICAgICAgICAgIHsK KysgICAgICAgICAgICAgICAgICAgICAgKmlzX2FfZmllbGRfb2ZfdGhpcyA9IDE7CisrICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworKyAgICAgICAgICAgICAgICAgICAgfQorKyAg ICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKworKyAgICAgIGlm IChCTE9DS19GVU5DVElPTiAoYmxvY2tfaXRlcmF0b3IpICE9IE5VTEwgJiYgYmxvY2tfaW5saW5l ZF9wIChibG9ja19pdGVyYXRvcikpCisrICAgICAgICBicmVhazsKKysKKysgICAgICBibG9ja19p dGVyYXRvciA9IEJMT0NLX1NVUEVSQkxPQ0sgKGJsb2NrX2l0ZXJhdG9yKTsKKyAgICAgfQorIAor LSAgLyogV2UndmUgcmVhY2hlZCB0aGUgZWRnZSBvZiB0aGUgZnVuY3Rpb24gd2l0aG91dCBmaW5k aW5nIGEgcmVzdWx0LiAgKi8KKysgIC8qIFdlJ3ZlIHJlYWNoZWQgdGhlIGdsb2JhbCBibG9jayB3 aXRob3V0IGZpbmRpbmcgYSByZXN1bHQuICAqLworIAorICAgcmV0dXJuIE5VTEw7CisgfQorQEAg LTE0ODQsMTMgKzE1MjYsMTIgQEAgbG9va3VwX29iamZpbGVfZnJvbV9ibG9jayAoY29uc3Qgc3Ry dWN0IGJsb2NrICpibG9jaykKKyAgICBibG9ja19mb3VuZCBhcHByb3ByaWF0ZWx5LiAgKi8KKyAK KyBzdHJ1Y3Qgc3ltYm9sICoKKy1sb29rdXBfc3ltYm9sX2F1eF9ibG9jayAoY29uc3QgY2hhciAq bmFtZSwgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorLQkJCSBjb25zdCBzdHJ1Y3QgYmxvY2sg KmJsb2NrLAorK2xvb2t1cF9zeW1ib2xfYXV4X2Jsb2NrIChjb25zdCBjaGFyICpuYW1lLCBjb25z dCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorIAkJCSBjb25zdCBkb21haW5fZW51bSBkb21haW4pCisg eworICAgc3RydWN0IHN5bWJvbCAqc3ltOworIAorLSAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJv bCAoYmxvY2ssIG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKKysgIHN5bSA9IGxvb2t1cF9i bG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBkb21haW4pOworICAgaWYgKHN5bSkKKyAgICAgewor ICAgICAgIGJsb2NrX2ZvdW5kID0gYmxvY2s7CitAQCAtMTUwNiw3ICsxNTQ3LDYgQEAgbG9va3Vw X3N5bWJvbF9hdXhfYmxvY2sgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmxpbmthZ2Vf bmFtZSwKKyBzdHJ1Y3Qgc3ltYm9sICoKKyBsb29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29iamZp bGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICptYWluX29iamZpbGUsCisgCQkJCSAgIGNvbnN0IGNo YXIgKm5hbWUsCistCQkJCSAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKyAJCQkJICAgY29u c3QgZG9tYWluX2VudW0gZG9tYWluKQorIHsKKyAgIGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlOworQEAgLTE1MjUsNyArMTU2NSw3IEBAIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2Jq ZmlsZSAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm1haW5fb2JqZmlsZSwKKyAgICAgICAgIHsKKyAg ICAgICAgICAgYnYgPSBCTE9DS1ZFQ1RPUiAocyk7CisgICAgICAgICAgIGJsb2NrID0gQkxPQ0tW RUNUT1JfQkxPQ0sgKGJ2LCBHTE9CQUxfQkxPQ0spOworLSAgICAgICAgICBzeW0gPSBsb29rdXBf YmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOworKyAgICAg ICAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgZG9tYWluKTsKKyAg ICAgICAgICAgaWYgKHN5bSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICBibG9ja19m b3VuZCA9IGJsb2NrOworQEAgLTE1MzQsMTYgKzE1NzQsMTYgQEAgbG9va3VwX2dsb2JhbF9zeW1i b2xfZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqbWFpbl9vYmpmaWxlLAogICAg ICAgICAgfQogIAogICAgICAgIC8qIE5vdyBnbyB0aHJvdWdoIHBzeW10YWJzLiAgKi8KQEAgLTE0 MTc1LDcgKzE1OTE0LDQ2IEBAIGluZGV4IDQyNjMyNmQuLmJhYzRjYTMgMTAwNjQ0CiAgICAgICAg QUxMX09CSkZJTEVfUFNZTVRBQlMgKG9iamZpbGUsIHBzKQogICAgICAgICAgewogICAgICAgICAg ICBpZiAoIXBzLT5yZWFkaW4KLUBAIC0xNjAxLDcgKzE2MjgsNyBAQCBsb29rdXBfc3ltYm9sX2F1 eF9wc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAorLSAgICAgICAg ICAgICAgJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgbGlua2FnZV9uYW1lLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBkb21haW4pKQorKyAg ICAgICAgICAgICAgJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgMSwgZG9tYWlu KSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICBzID0gUFNZTVRBQl9UT19TWU1UQUIg KHBzKTsKKyAgICAgICAgICAgICAgIGJ2ID0gQkxPQ0tWRUNUT1IgKHMpOworICAgICAgICAgICAg ICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIEdMT0JBTF9CTE9DSyk7CistICAgICAg ICAgICAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgbGlua2FnZV9u YW1lLCBkb21haW4pOworKyAgICAgICAgICAgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAo YmxvY2ssIG5hbWUsIGRvbWFpbik7CisgICAgICAgICAgICAgICByZXR1cm4gZml4dXBfc3ltYm9s X3NlY3Rpb24gKHN5bSwgKHN0cnVjdCBvYmpmaWxlICopb2JqZmlsZSk7CisgICAgICAgICAgICAg fQorICAgICAgICAgfQorQEAgLTE1NTgsOCArMTU5OCw3IEBAIGxvb2t1cF9nbG9iYWxfc3ltYm9s X2Zyb21fb2JqZmlsZSAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm1haW5fb2JqZmlsZSwKKyAgICBz dGF0aWMgc3ltYm9scy4gICovCisgCisgc3RhdGljIHN0cnVjdCBzeW1ib2wgKgorLWxvb2t1cF9z eW1ib2xfYXV4X3N5bXRhYnMgKGludCBibG9ja19pbmRleCwKKy0JCQkgICBjb25zdCBjaGFyICpu YW1lLCBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCisrbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFi cyAoaW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAorIAkJCSAgIGNvbnN0IGRvbWFp bl9lbnVtIGRvbWFpbikKKyB7CisgICBzdHJ1Y3Qgc3ltYm9sICpzeW07CitAQCAtMTU3Miw3ICsx NjExLDcgQEAgbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LAorICAg eworICAgICBidiA9IEJMT0NLVkVDVE9SIChzKTsKKyAgICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9C TE9DSyAoYnYsIGJsb2NrX2luZGV4KTsKKy0gICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAo YmxvY2ssIG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKKysgICAgc3ltID0gbG9va3VwX2Js b2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGRvbWFpbik7CisgICAgIGlmIChzeW0pCisgICAgICAg eworIAlibG9ja19mb3VuZCA9IGJsb2NrOworQEAgLTE1OTAsNyArMTYyOSw2IEBAIGxvb2t1cF9z eW1ib2xfYXV4X3N5bXRhYnMgKGludCBibG9ja19pbmRleCwKKyAKKyBzdGF0aWMgc3RydWN0IHN5 bWJvbCAqCisgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGludCBibG9ja19pbmRleCwgY29u c3QgY2hhciAqbmFtZSwKKy0JCQkgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorIAkJCSAg ICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCisgeworICAgc3RydWN0IHN5bWJvbCAqc3ltOwor QEAgLTE2MDEsMTYgKzE2MzksMTUgQEAgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGludCBi bG9ja19pbmRleCwgY29uc3QgY2hhciAqbmFtZSwKICAgIHN0cnVjdCBzeW10YWIgKnM7CiAgICBj b25zdCBpbnQgcHN5bXRhYl9pbmRleCA9IChibG9ja19pbmRleCA9PSBHTE9CQUxfQkxPQ0sgPyAx IDogMCk7CiAgCkBAIC0xNDE4MywzNyArMTU5NjEsMjIyIEBAIGluZGV4IDQyNjMyNmQuLmJhYzRj YTMgMTAwNjQ0CiArICBBTExfUFNZTVRBQlNfUkVRVUlSRUQgKG9iamZpbGUsIHBzKQogICAgewog ICAgICBpZiAoIXBzLT5yZWFkaW4KLSAJJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFt ZSwgbGlua2FnZV9uYW1lLAotQEAgLTE4ODYsNyArMTkxMywxMSBAQCBiYXNpY19sb29rdXBfdHJh bnNwYXJlbnRfdHlwZSAoY29uc3QgY2hhciAqbmFtZSkKLSAgICAgICB9Ci0gICB9CistCSYmIGxv b2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIG5hbWUsIGxpbmthZ2VfbmFtZSwKKy0JCQkJICBwc3lt dGFiX2luZGV4LCBkb21haW4pKQorKwkmJiBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBuYW1l LCBwc3ltdGFiX2luZGV4LCBkb21haW4pKQorICAgICAgIHsKKyAJcyA9IFBTWU1UQUJfVE9fU1lN VEFCIChwcyk7CisgCWJ2ID0gQkxPQ0tWRUNUT1IgKHMpOworIAlibG9jayA9IEJMT0NLVkVDVE9S X0JMT0NLIChidiwgYmxvY2tfaW5kZXgpOworLQlzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChi bG9jaywgbmFtZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOworKwlzeW0gPSBsb29rdXBfYmxvY2tf c3ltYm9sIChibG9jaywgbmFtZSwgZG9tYWluKTsKKyAJaWYgKCFzeW0pCisgCSAgeworIAkgICAg LyogVGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCBidXQgYXMgYSBsYXN0IHJlc29ydCB0cnkK K0BAIC0xNjI3LDcgKzE2NjQsNyBAQCBsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAoaW50IGJs b2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAorIAkgICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9C TE9DSyAoYnYsCisgCQkJCSAgICAgICBibG9ja19pbmRleCA9PSBHTE9CQUxfQkxPQ0sgPworIAkJ CQkgICAgICAgU1RBVElDX0JMT0NLIDogR0xPQkFMX0JMT0NLKTsKKy0JICAgIHN5bSA9IGxvb2t1 cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBsaW5rYWdlX25hbWUsIGRvbWFpbik7CisrCSAg ICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgZG9tYWluKTsKKyAJICAg IGlmICghc3ltKQorIAkgICAgICBlcnJvciAoXygiSW50ZXJuYWw6ICVzIHN5bWJvbCBgJXMnIGZv dW5kIGluICVzIHBzeW10YWIgYnV0IG5vdCBpbiBzeW10YWIuXG4lcyBtYXkgYmUgYW4gaW5saW5l ZCBmdW5jdGlvbiwgb3IgbWF5IGJlIGEgdGVtcGxhdGUgZnVuY3Rpb25cbihpZiBhIHRlbXBsYXRl LCB0cnkgc3BlY2lmeWluZyBhbiBpbnN0YW50aWF0aW9uOiAlczx0eXBlPikuIiksCisgCQkgICAg IGJsb2NrX2luZGV4ID09IEdMT0JBTF9CTE9DSyA/ICJnbG9iYWwiIDogInN0YXRpYyIsCitAQCAt MTY0Niw3ICsxNjgzLDYgQEAgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGludCBibG9ja19p bmRleCwgY29uc3QgY2hhciAqbmFtZSwKKyAKKyBzdHJ1Y3Qgc3ltYm9sICoKKyBiYXNpY19sb29r dXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1lLAorLQkJCSAgICAgIGNvbnN0IGNo YXIgKmxpbmthZ2VfbmFtZSwKKyAJCQkgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAor IAkJCSAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKKyB7CitAQCAtMTY4MCwxMSArMTcx NiwxMSBAQCBiYXNpY19sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1lLAor ICAgICAgdGhhbiB0aGF0IG9uZSwgc28gSSBkb24ndCB0aGluayB3ZSBzaG91bGQgd29ycnkgYWJv dXQgdGhhdCBmb3IKKyAgICAgIG5vdy4gICovCiAgCi0tICBBTExfUFNZTVRBQlMgKG9iamZpbGUs IHBzKQotKyAgLyogRklYTUU6IC5kZWJ1Z19wdWJuYW1lcyBzaG91bGQgYmUgcmVhZCBpbi4KLSsg ICAgIAotKyAgICAgT25lIG1heSBhbHNvIHRyeSB0byB0aGUgZmlyc3QgcGFzcyB3aXRob3V0IHRo ZSByZXF1aXJlX3BhcnRpYWxfc3ltYm9scwotKyAgICAgY2FsbCBidXQgdGhhdCB3b3VsZCBiZWhh dmUgbm9uZGV0ZXJtaW5pc3RpY2FsbHkuICAqLwotKyAgQUxMX1BTWU1UQUJTX1JFUVVJUkVEIChv YmpmaWxlLCBwcykKLSAgIHsKLSAgICAgaWYgKCFwcy0+cmVhZGluICYmIGxvb2t1cF9wYXJ0aWFs X3N5bWJvbCAocHMsIG5hbWUsIE5VTEwsCi0gCQkJCQkgICAgICAxLCBTVFJVQ1RfRE9NQUlOKSkK LUBAIC0xOTM0LDcgKzE5NjUsMTIgQEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNv bnN0IGNoYXIgKm5hbWUpCi0gICAgICAgfQotICAgfQorLSAgc3ltID0gbG9va3VwX3N5bWJvbF9z dGF0aWMgKG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssIGRvbWFpbik7CisrICBzeW0gPSBsb29r dXBfc3ltYm9sX3N0YXRpYyAobmFtZSwgYmxvY2ssIGRvbWFpbik7CisgICBpZiAoc3ltICE9IE5V TEwpCisgICAgIHJldHVybiBzeW07CiAgCi0tICBBTExfUFNZTVRBQlMgKG9iamZpbGUsIHBzKQot KyAgLyogRklYTUU6IFNvbWV0aGluZyBsaWtlIC5kZWJ1Z19wdWJuYW1lcyBjb250YWluaW5nIGFs c28gc3RhdGljIHN5bWJvbHMKLSsgICAgIHNob3VsZCBiZSByZWFkIGluLiAgQ29tcGlsZXIgbmVl ZHMgdG8gYmUgdGF1Z2h0IHRvIGdlbmVyYXRlIGl0IGZpcnN0LgotKyAgICAgCi0rICAgICBPbmUg bWF5IGFsc28gdHJ5IHRvIHRoZSBmaXJzdCBwYXNzIHdpdGhvdXQgdGhlIHJlcXVpcmVfcGFydGlh bF9zeW1ib2xzCi0rICAgICBjYWxsIGJ1dCB0aGF0IHdvdWxkIGJlaGF2ZSBub25kZXRlcm1pbmlz dGljYWxseS4gICovCi0rICBBTExfUFNZTVRBQlNfUkVRVUlSRUQgKG9iamZpbGUsIHBzKQotICAg ewotICAgICBpZiAoIXBzLT5yZWFkaW4gJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFt ZSwgTlVMTCwgMCwgU1RSVUNUX0RPTUFJTikpCi0gICAgICAgewotQEAgLTE5NzUsNyArMjAxMSwy MSBAQCBmaW5kX21haW5fcHN5bXRhYiAodm9pZCkKLSAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAq cHN0OwotICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CistICByZXR1cm4gbG9va3VwX3N5bWJv bF9nbG9iYWwgKG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssIGRvbWFpbik7CisrICByZXR1cm4g bG9va3VwX3N5bWJvbF9nbG9iYWwgKG5hbWUsIGJsb2NrLCBkb21haW4pOworIH0KKyAKKyAvKiBM b29rdXAgYSBzeW1ib2wgaW4gdGhlIHN0YXRpYyBibG9jayBhc3NvY2lhdGVkIHRvIEJMT0NLLCBp ZiB0aGVyZQorQEAgLTE2OTIsMTQgKzE3MjgsMTMgQEAgYmFzaWNfbG9va3VwX3N5bWJvbF9ub25s b2NhbCAoY29uc3QgY2hhciAqbmFtZSwKKyAKKyBzdHJ1Y3Qgc3ltYm9sICoKKyBsb29rdXBfc3lt Ym9sX3N0YXRpYyAoY29uc3QgY2hhciAqbmFtZSwKKy0JCSAgICAgIGNvbnN0IGNoYXIgKmxpbmth Z2VfbmFtZSwKKyAJCSAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCisgCQkgICAgICBj b25zdCBkb21haW5fZW51bSBkb21haW4pCisgeworICAgY29uc3Qgc3RydWN0IGJsb2NrICpzdGF0 aWNfYmxvY2sgPSBibG9ja19zdGF0aWNfYmxvY2sgKGJsb2NrKTsKKyAKKyAgIGlmIChzdGF0aWNf YmxvY2sgIT0gTlVMTCkKKy0gICAgcmV0dXJuIGxvb2t1cF9zeW1ib2xfYXV4X2Jsb2NrIChuYW1l LCBsaW5rYWdlX25hbWUsIHN0YXRpY19ibG9jaywgZG9tYWluKTsKKysgICAgcmV0dXJuIGxvb2t1 cF9zeW1ib2xfYXV4X2Jsb2NrIChuYW1lLCBzdGF0aWNfYmxvY2ssIGRvbWFpbik7CisgICBlbHNl CisgICAgIHJldHVybiBOVUxMOworIH0KK0BAIC0xNzA5LDcgKzE3NDQsNiBAQCBsb29rdXBfc3lt Ym9sX3N0YXRpYyAoY29uc3QgY2hhciAqbmFtZSwKKyAKKyBzdHJ1Y3Qgc3ltYm9sICoKKyBsb29r dXBfc3ltYm9sX2dsb2JhbCAoY29uc3QgY2hhciAqbmFtZSwKKy0JCSAgICAgIGNvbnN0IGNoYXIg KmxpbmthZ2VfbmFtZSwKKyAJCSAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCisgCQkg ICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCisgeworQEAgLTE3MTksMTUgKzE3NTMsMTUg QEAgbG9va3VwX3N5bWJvbF9nbG9iYWwgKGNvbnN0IGNoYXIgKm5hbWUsCisgICAvKiBDYWxsIGxp YnJhcnktc3BlY2lmaWMgbG9va3VwIHByb2NlZHVyZS4gICovCisgICBvYmpmaWxlID0gbG9va3Vw X29iamZpbGVfZnJvbV9ibG9jayAoYmxvY2spOworICAgaWYgKG9iamZpbGUgIT0gTlVMTCkKKy0g ICAgc3ltID0gc29saWJfZ2xvYmFsX2xvb2t1cCAob2JqZmlsZSwgbmFtZSwgbGlua2FnZV9uYW1l LCBkb21haW4pOworKyAgICBzeW0gPSBzb2xpYl9nbG9iYWxfbG9va3VwIChvYmpmaWxlLCBuYW1l LCBkb21haW4pOworICAgaWYgKHN5bSAhPSBOVUxMKQorICAgICByZXR1cm4gc3ltOworIAorLSAg c3ltID0gbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoR0xPQkFMX0JMT0NLLCBuYW1lLCBsaW5r YWdlX25hbWUsIGRvbWFpbik7CisrICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzIChH TE9CQUxfQkxPQ0ssIG5hbWUsIGRvbWFpbik7CisgICBpZiAoc3ltICE9IE5VTEwpCisgICAgIHJl dHVybiBzeW07CisgCistICByZXR1cm4gbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKEdMT0JB TF9CTE9DSywgbmFtZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOworKyAgcmV0dXJuIGxvb2t1cF9z eW1ib2xfYXV4X3BzeW10YWJzIChHTE9CQUxfQkxPQ0ssIG5hbWUsIGRvbWFpbik7CisgfQorIAor IGludAorQEAgLTE3NTEsMTQgKzE3ODUsMTEgQEAgc3ltYm9sX21hdGNoZXNfZG9tYWluIChlbnVt IGxhbmd1YWdlIHN5bWJvbF9sYW5ndWFnZSwKKyB9CisgCisgLyogTG9vaywgaW4gcGFydGlhbF9z eW10YWIgUFNULCBmb3Igc3ltYm9sIHdob3NlIG5hdHVyYWwgbmFtZSBpcyBOQU1FLgorLSAgIElm IExJTktBR0VfTkFNRSBpcyBub24tTlVMTCwgY2hlY2sgaW4gYWRkaXRpb24gdGhhdCB0aGUgc3lt Ym9sJ3MKKy0gICBsaW5rYWdlIG5hbWUgbWF0Y2hlcyBpdC4gIENoZWNrIHRoZSBnbG9iYWwgc3lt Ym9scyBpZiBHTE9CQUwsIHRoZQorLSAgIHN0YXRpYyBzeW1ib2xzIGlmIG5vdCAqLworKyAgIENo ZWNrIHRoZSBnbG9iYWwgc3ltYm9scyBpZiBHTE9CQUwsIHRoZSBzdGF0aWMgc3ltYm9scyBpZiBu b3QuICovCisgCisgc3RydWN0IHBhcnRpYWxfc3ltYm9sICoKKyBsb29rdXBfcGFydGlhbF9zeW1i b2wgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0LCBjb25zdCBjaGFyICpuYW1lLAorLQkJICAg ICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwgaW50IGdsb2JhbCwKKy0JCSAgICAgICBkb21h aW5fZW51bSBkb21haW4pCisrCQkgICAgICAgaW50IGdsb2JhbCwgZG9tYWluX2VudW0gZG9tYWlu KQorIHsKKyAgIHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqdGVtcDsKKyAgIHN0cnVjdCBwYXJ0aWFs X3N5bWJvbCAqKnN0YXJ0LCAqKnBzeW07CitAQCAtMTgxMCw5ICsxODQxLDcgQEAgbG9va3VwX3Bh cnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCwgY29uc3QgY2hhciAqbmFt ZSwKKyAJaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywgXygiZmFpbGVkIGludGVy bmFsIGNvbnNpc3RlbmN5IGNoZWNrIikpOworIAorICAgICAgIHdoaWxlICh0b3AgPD0gcmVhbF90 b3AKKy0JICAgICAmJiAobGlua2FnZV9uYW1lICE9IE5VTEwKKy0JCSA/IHN0cmNtcCAoU1lNQk9M X0xJTktBR0VfTkFNRSAoKnRvcCksIGxpbmthZ2VfbmFtZSkgPT0gMAorLQkJIDogU1lNQk9MX01B VENIRVNfU0VBUkNIX05BTUUgKCp0b3AsbmFtZSkpKQorKwkgICAgICYmIFNZTUJPTF9NQVRDSEVT X1NFQVJDSF9OQU1FICgqdG9wLCBuYW1lKSkKKyAJeworIAkgIGlmIChzeW1ib2xfbWF0Y2hlc19k b21haW4gKFNZTUJPTF9MQU5HVUFHRSAoKnRvcCksCisgCQkJCSAgICAgU1lNQk9MX0RPTUFJTiAo KnRvcCksIGRvbWFpbikpCitAQCAtMTgyOSwxNSArMTg1OCw5IEBAIGxvb2t1cF9wYXJ0aWFsX3N5 bWJvbCAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAg ICAgZm9yIChwc3ltID0gc3RhcnQ7IHBzeW0gPCBzdGFydCArIGxlbmd0aDsgcHN5bSsrKQorIAl7 CisgCSAgaWYgKHN5bWJvbF9tYXRjaGVzX2RvbWFpbiAoU1lNQk9MX0xBTkdVQUdFICgqcHN5bSks CistCQkJCSAgICAgU1lNQk9MX0RPTUFJTiAoKnBzeW0pLCBkb21haW4pKQorLQkgICAgeworLQkg ICAgICBpZiAobGlua2FnZV9uYW1lICE9IE5VTEwKKy0JCSAgPyBzdHJjbXAgKFNZTUJPTF9MSU5L QUdFX05BTUUgKCpwc3ltKSwgbGlua2FnZV9uYW1lKSA9PSAwCistCQkgIDogU1lNQk9MX01BVENI RVNfU0VBUkNIX05BTUUgKCpwc3ltLCBuYW1lKSkKKy0JCXsKKy0JCSAgcmV0dXJuICgqcHN5bSk7 CistCQl9CistCSAgICB9CisrCQkJCSAgICAgU1lNQk9MX0RPTUFJTiAoKnBzeW0pLCBkb21haW4p CisrCSAgICAgICYmIFNZTUJPTF9NQVRDSEVTX1NFQVJDSF9OQU1FICgqcHN5bSwgbmFtZSkpCisr CSAgICByZXR1cm4gKCpwc3ltKTsKKyAJfQorICAgICB9CisgCitAQCAtMTg3OSwyMiArMTkwMiwy NSBAQCBiYXNpY19sb29rdXBfdHJhbnNwYXJlbnRfdHlwZSAoY29uc3QgY2hhciAqbmFtZSkKKyAg IHsKKyAgICAgYnYgPSBCTE9DS1ZFQ1RPUiAocyk7CisgICAgIGJsb2NrID0gQkxPQ0tWRUNUT1Jf QkxPQ0sgKGJ2LCBHTE9CQUxfQkxPQ0spOworLSAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9s IChibG9jaywgbmFtZSwgTlVMTCwgU1RSVUNUX0RPTUFJTik7CisrICAgIHN5bSA9IGxvb2t1cF9i bG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBTVFJVQ1RfRE9NQUlOKTsKKyAgICAgaWYgKHN5bSAm JiAhVFlQRV9JU19PUEFRVUUgKFNZTUJPTF9UWVBFIChzeW0pKSkKKyAgICAgICB7CisgCXJldHVy biBTWU1CT0xfVFlQRSAoc3ltKTsKKyAgICAgICB9CisgICB9CisgCistICBBTExfUFNZTVRBQlMg KG9iamZpbGUsIHBzKQorKyAgLyogRklYTUU6IC5kZWJ1Z19wdWJuYW1lcyBzaG91bGQgYmUgcmVh ZCBpbi4KKysgICAgIAorKyAgICAgT25lIG1heSBhbHNvIHRyeSB0byB0aGUgZmlyc3QgcGFzcyB3 aXRob3V0IHRoZSByZXF1aXJlX3BhcnRpYWxfc3ltYm9scworKyAgICAgY2FsbCBidXQgdGhhdCB3 b3VsZCBiZWhhdmUgbm9uZGV0ZXJtaW5pc3RpY2FsbHkuICAqLworKyAgQUxMX1BTWU1UQUJTX1JF UVVJUkVEIChvYmpmaWxlLCBwcykKKyAgIHsKKy0gICAgaWYgKCFwcy0+cmVhZGluICYmIGxvb2t1 cF9wYXJ0aWFsX3N5bWJvbCAocHMsIG5hbWUsIE5VTEwsCistCQkJCQkgICAgICAxLCBTVFJVQ1Rf RE9NQUlOKSkKKysgICAgaWYgKCFwcy0+cmVhZGluICYmIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAo cHMsIG5hbWUsIDEsIFNUUlVDVF9ET01BSU4pKQorICAgICAgIHsKKyAJcyA9IFBTWU1UQUJfVE9f U1lNVEFCIChwcyk7CisgCWJ2ID0gQkxPQ0tWRUNUT1IgKHMpOworIAlibG9jayA9IEJMT0NLVkVD VE9SX0JMT0NLIChidiwgR0xPQkFMX0JMT0NLKTsKKy0Jc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJv bCAoYmxvY2ssIG5hbWUsIE5VTEwsIFNUUlVDVF9ET01BSU4pOworKwlzeW0gPSBsb29rdXBfYmxv Y2tfc3ltYm9sIChibG9jaywgbmFtZSwgU1RSVUNUX0RPTUFJTik7CisgCWlmICghc3ltKQorIAkg IHsKKyAJICAgIC8qIFRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSwgYnV0IGFzIGEgbGFzdCBy ZXNvcnQKK0BAIC0xOTAzLDcgKzE5MjksNyBAQCBiYXNpY19sb29rdXBfdHJhbnNwYXJlbnRfdHlw ZSAoY29uc3QgY2hhciAqbmFtZSkKKyAJICAgICAqIHRoZSBwc3ltdGFiIGdldHMgaXQgd3Jvbmcg aW4gc29tZSBjYXNlcy4KKyAJICAgICAqLworIAkgICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9D SyAoYnYsIFNUQVRJQ19CTE9DSyk7CistCSAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChi bG9jaywgbmFtZSwgTlVMTCwgU1RSVUNUX0RPTUFJTik7CisrCSAgICBzeW0gPSBsb29rdXBfYmxv Y2tfc3ltYm9sIChibG9jaywgbmFtZSwgU1RSVUNUX0RPTUFJTik7CisgCSAgICBpZiAoIXN5bSkK KyAJICAgICAgZXJyb3IgKF8oIkludGVybmFsOiBnbG9iYWwgc3ltYm9sIGAlcycgZm91bmQgaW4g JXMgcHN5bXRhYiBidXQgbm90IGluIHN5bXRhYi5cblwKKyAlcyBtYXkgYmUgYW4gaW5saW5lZCBm dW5jdGlvbiwgb3IgbWF5IGJlIGEgdGVtcGxhdGUgZnVuY3Rpb25cblwKK0BAIC0xOTI3LDIxICsx OTUzLDI2IEBAIGJhc2ljX2xvb2t1cF90cmFuc3BhcmVudF90eXBlIChjb25zdCBjaGFyICpuYW1l KQorICAgeworICAgICBidiA9IEJMT0NLVkVDVE9SIChzKTsKKyAgICAgYmxvY2sgPSBCTE9DS1ZF Q1RPUl9CTE9DSyAoYnYsIFNUQVRJQ19CTE9DSyk7CistICAgIHN5bSA9IGxvb2t1cF9ibG9ja19z eW1ib2wgKGJsb2NrLCBuYW1lLCBOVUxMLCBTVFJVQ1RfRE9NQUlOKTsKKysgICAgc3ltID0gbG9v a3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIFNUUlVDVF9ET01BSU4pOworICAgICBpZiAo c3ltICYmICFUWVBFX0lTX09QQVFVRSAoU1lNQk9MX1RZUEUgKHN5bSkpKQorICAgICAgIHsKKyAJ cmV0dXJuIFNZTUJPTF9UWVBFIChzeW0pOworICAgICAgIH0KKyAgIH0KKyAKKy0gIEFMTF9QU1lN VEFCUyAob2JqZmlsZSwgcHMpCisrICAvKiBGSVhNRTogU29tZXRoaW5nIGxpa2UgLmRlYnVnX3B1 Ym5hbWVzIGNvbnRhaW5pbmcgYWxzbyBzdGF0aWMgc3ltYm9scworKyAgICAgc2hvdWxkIGJlIHJl YWQgaW4uICBDb21waWxlciBuZWVkcyB0byBiZSB0YXVnaHQgdG8gZ2VuZXJhdGUgaXQgZmlyc3Qu CisrICAgICAKKysgICAgIE9uZSBtYXkgYWxzbyB0cnkgdG8gdGhlIGZpcnN0IHBhc3Mgd2l0aG91 dCB0aGUgcmVxdWlyZV9wYXJ0aWFsX3N5bWJvbHMKKysgICAgIGNhbGwgYnV0IHRoYXQgd291bGQg YmVoYXZlIG5vbmRldGVybWluaXN0aWNhbGx5LiAgKi8KKysgIEFMTF9QU1lNVEFCU19SRVFVSVJF RCAob2JqZmlsZSwgcHMpCisgICB7CistICAgIGlmICghcHMtPnJlYWRpbiAmJiBsb29rdXBfcGFy dGlhbF9zeW1ib2wgKHBzLCBuYW1lLCBOVUxMLCAwLCBTVFJVQ1RfRE9NQUlOKSkKKysgICAgaWYg KCFwcy0+cmVhZGluICYmIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIG5hbWUsIDAsIFNUUlVD VF9ET01BSU4pKQorICAgICAgIHsKKyAJcyA9IFBTWU1UQUJfVE9fU1lNVEFCIChwcyk7CisgCWJ2 ID0gQkxPQ0tWRUNUT1IgKHMpOworIAlibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgU1RB VElDX0JMT0NLKTsKKy0Jc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIE5V TEwsIFNUUlVDVF9ET01BSU4pOworKwlzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywg bmFtZSwgU1RSVUNUX0RPTUFJTik7CisgCWlmICghc3ltKQorIAkgIHsKKyAJICAgIC8qIFRoaXMg c2hvdWxkbid0IGJlIG5lY2Vzc2FyeSwgYnV0IGFzIGEgbGFzdCByZXNvcnQKK0BAIC0xOTUwLDcg KzE5ODEsNyBAQCBiYXNpY19sb29rdXBfdHJhbnNwYXJlbnRfdHlwZSAoY29uc3QgY2hhciAqbmFt ZSkKKyAJICAgICAqIHRoZSBwc3ltdGFiIGdldHMgaXQgd3JvbmcgaW4gc29tZSBjYXNlcy4KKyAJ ICAgICAqLworIAkgICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIEdMT0JBTF9CTE9D Syk7CistCSAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgTlVMTCwg U1RSVUNUX0RPTUFJTik7CisrCSAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywg bmFtZSwgU1RSVUNUX0RPTUFJTik7CisgCSAgICBpZiAoIXN5bSkKKyAJICAgICAgZXJyb3IgKF8o IkludGVybmFsOiBzdGF0aWMgc3ltYm9sIGAlcycgZm91bmQgaW4gJXMgcHN5bXRhYiBidXQgbm90 IGluIHN5bXRhYi5cblwKKyAlcyBtYXkgYmUgYW4gaW5saW5lZCBmdW5jdGlvbiwgb3IgbWF5IGJl IGEgdGVtcGxhdGUgZnVuY3Rpb25cblwKK0BAIC0xOTc1LDkgKzIwMDYsMjMgQEAgZmluZF9tYWlu X3BzeW10YWIgKHZvaWQpCisgICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdDsKKyAgIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlOwogIAogLSAgQUxMX1BTWU1UQUJTIChvYmpmaWxlLCBwc3QpCiAr ICBBTExfT0JKRklMRVMgKG9iamZpbGUpCkBAIC0xNDIyMyw3ICsxNjE4Niw3IEBAIGluZGV4IDQy NjMyNmQuLmJhYzRjYTMgMTAwNjQ0CiArICAgIHJlcXVpcmVfcGFydGlhbF9zeW1ib2xzIChvYmpm aWxlKTsKICsgICAgQUxMX09CSkZJTEVfUFNZTVRBQlMgKG9iamZpbGUsIHBzdCkKICsgICAgewot KyAgICAgIGlmIChsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzdCwgbWFpbl9uYW1lICgpLCBOVUxM LCAxLCBWQVJfRE9NQUlOKSkKKysgICAgICBpZiAobG9va3VwX3BhcnRpYWxfc3ltYm9sIChwc3Qs IG1haW5fbmFtZSAoKSwgMSwgVkFSX0RPTUFJTikpCiArCXsKICsJICByZXR1cm4gcHN0OwogKwl9 CkBAIC0xNDIzMiw5ICsxNjE5NSw0OSBAQCBpbmRleCA0MjYzMjZkLi5iYWM0Y2EzIDEwMDY0NAog KwogKyAgQUxMX1BTWU1UQUJTX1JFUVVJUkVEIChvYmpmaWxlLCBwc3QpCiAgICB7Ci0gICAgIGlm IChsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzdCwgbWFpbl9uYW1lICgpLCBOVUxMLCAxLCBWQVJf RE9NQUlOKSkKKy0gICAgaWYgKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHN0LCBtYWluX25hbWUg KCksIE5VTEwsIDEsIFZBUl9ET01BSU4pKQorKyAgICBpZiAobG9va3VwX3BhcnRpYWxfc3ltYm9s IChwc3QsIG1haW5fbmFtZSAoKSwgMSwgVkFSX0RPTUFJTikpCiAgICAgICAgewotQEAgLTMyNjEs NyArMzMxMSw3IEBAIHNlYXJjaF9zeW1ib2xzIChjaGFyICpyZWdleHAsIGRvbWFpbl9lbnVtIGtp bmQsIGludCBuZmlsZXMsIGNoYXIgKmZpbGVzW10sCisgCXJldHVybiAocHN0KTsKKyAgICAgICB9 CitAQCAtMTk5NSwxNCArMjA0MCwxMCBAQCBmaW5kX21haW5fcHN5bXRhYiAodm9pZCkKKyAgICBz ZWFyY2ggb24gdGhlIHN5bWJvbHMuICBFYWNoIHN5bWJvbCB3aGljaCBpcyBtYXJrZWQgYXMgYmVp bmcgYSBPYmpDL0MrKworICAgIHN5bWJvbCAobGFuZ3VhZ2VfY3BsdXMgb3IgbGFuZ3VhZ2Vfb2Jq YyBzZXQpIGhhcyBib3RoIHRoZSBlbmNvZGVkIGFuZAorICAgIG5vbi1lbmNvZGVkIG5hbWVzIHRl c3RlZCBmb3IgYSBtYXRjaC4KKy0KKy0gICBJZiBMSU5LQUdFX05BTUUgaXMgbm9uLU5VTEwsIHZl cmlmeSB0aGF0IGFueSBzeW1ib2wgd2UgZmluZCBoYXMgdGhpcworLSAgIHBhcnRpY3VsYXIgbWFu Z2xlZCBuYW1lLgorICovCisgCisgc3RydWN0IHN5bWJvbCAqCisgbG9va3VwX2Jsb2NrX3N5bWJv bCAoY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywgY29uc3QgY2hhciAqbmFtZSwKKy0JCSAgICAg Y29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorIAkJICAgICBjb25zdCBkb21haW5fZW51bSBkb21h aW4pCisgeworICAgc3RydWN0IGRpY3RfaXRlcmF0b3IgaXRlcjsKK0BAIC0yMDE1LDkgKzIwNTYs NyBAQCBsb29rdXBfYmxvY2tfc3ltYm9sIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLCBjb25z dCBjaGFyICpuYW1lLAorIAkgICBzeW0gPSBkaWN0X2l0ZXJfbmFtZV9uZXh0IChuYW1lLCAmaXRl cikpCisgCXsKKyAJICBpZiAoc3ltYm9sX21hdGNoZXNfZG9tYWluIChTWU1CT0xfTEFOR1VBR0Ug KHN5bSksCistCQkJCSAgICAgU1lNQk9MX0RPTUFJTiAoc3ltKSwgZG9tYWluKQorLQkgICAgICAm JiAobGlua2FnZV9uYW1lICE9IE5VTEwKKy0JCSAgPyBzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05B TUUgKHN5bSksIGxpbmthZ2VfbmFtZSkgPT0gMCA6IDEpKQorKwkJCQkgICAgIFNZTUJPTF9ET01B SU4gKHN5bSksIGRvbWFpbikpCisgCSAgICByZXR1cm4gc3ltOworIAl9CisgICAgICAgcmV0dXJu IE5VTEw7CitAQCAtMjAzNyw5ICsyMDc2LDcgQEAgbG9va3VwX2Jsb2NrX3N5bWJvbCAoY29uc3Qg c3RydWN0IGJsb2NrICpibG9jaywgY29uc3QgY2hhciAqbmFtZSwKKyAJICAgc3ltID0gZGljdF9p dGVyX25hbWVfbmV4dCAobmFtZSwgJml0ZXIpKQorIAl7CisgCSAgaWYgKHN5bWJvbF9tYXRjaGVz X2RvbWFpbiAoU1lNQk9MX0xBTkdVQUdFIChzeW0pLAorLQkJCQkgICAgIFNZTUJPTF9ET01BSU4g KHN5bSksIGRvbWFpbikKKy0JICAgICAgJiYgKGxpbmthZ2VfbmFtZSAhPSBOVUxMCistCQkgID8g c3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1FIChzeW0pLCBsaW5rYWdlX25hbWUpID09IDAgOiAx KSkKKysJCQkJICAgICBTWU1CT0xfRE9NQUlOIChzeW0pLCBkb21haW4pKQorIAkgICAgeworIAkg ICAgICBzeW1fZm91bmQgPSBzeW07CisgCSAgICAgIGlmICghU1lNQk9MX0lTX0FSR1VNRU5UIChz eW0pKQorQEAgLTMyNjEsNyArMzI5OCw3IEBAIHNlYXJjaF9zeW1ib2xzIChjaGFyICpyZWdleHAs IGRvbWFpbl9lbnVtIGtpbmQsIGludCBuZmlsZXMsIGNoYXIgKmZpbGVzW10sCiAgICAgICBtYXRj aGluZyB0aGUgcmVnZXhwLiAgVGhhdCB3YXkgd2UgZG9uJ3QgaGF2ZSB0byByZXByb2R1Y2UgYWxs IG9mCiAgICAgICB0aGUgbWFjaGluZXJ5IGJlbG93LiAqLwogIApAQCAtMTQyNDQsNyArMTYyNDcs NyBAQCBpbmRleCA0MjYzMjZkLi5iYWM0Y2EzIDEwMDY0NAogICAgICBzdHJ1Y3QgcGFydGlhbF9z eW1ib2wgKipib3VuZCwgKipnYm91bmQsICoqc2JvdW5kOwogICAgICBpbnQga2VlcF9nb2luZyA9 IDE7CiBkaWZmIC0tZ2l0IGEvZ2RiL3N5bXRhYi5oIGIvZ2RiL3N5bXRhYi5oCi1pbmRleCA4MDBm ZmQ4Li4zZWQ2OTQ3IDEwMDY0NAoraW5kZXggODAwZmZkOC4uNDI1M2Y5ZCAxMDA2NDQKIC0tLSBh L2dkYi9zeW10YWIuaAogKysrIGIvZ2RiL3N5bXRhYi5oCiBAQCAtMzk2LDcgKzM5NiwxMCBAQCB0 eXBlZGVmIGVudW0gZG9tYWluX2VudW1fdGFnCkBAIC0xNDI1OSw3ICsxNjI2Miw1MyBAQCBpbmRl eCA4MDBmZmQ4Li4zZWQ2OTQ3IDEwMDY0NAogIH0KICBkb21haW5fZW51bTsKICAKLUBAIC0xMDY1 LDYgKzEwNjgsOCBAQCBleHRlcm4gdm9pZCBjbGVhcl9wY19mdW5jdGlvbl9jYWNoZSAodm9pZCk7 CitAQCAtOTkzLDcgKzk5Niw2IEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9s IChjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCBibG9jayAqLAorICAgIHRoYXQgY2FuJ3QgdGhp bmsgb2YgYW55dGhpbmcgYmV0dGVyIHRvIGRvLiAgKi8KKyAKKyBleHRlcm4gc3RydWN0IHN5bWJv bCAqYmFzaWNfbG9va3VwX3N5bWJvbF9ub25sb2NhbCAoY29uc3QgY2hhciAqLAorLQkJCQkJCSAg ICBjb25zdCBjaGFyICosCisgCQkJCQkJICAgIGNvbnN0IHN0cnVjdCBibG9jayAqLAorIAkJCQkJ CSAgICBjb25zdCBkb21haW5fZW51bSk7CisgCitAQCAtMTAwNCw3ICsxMDA2LDYgQEAgZXh0ZXJu IHN0cnVjdCBzeW1ib2wgKmJhc2ljX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIg KiwKKyAgICBpcyBvbmU7IGRvIG5vdGhpbmcgaWYgQkxPQ0sgaXMgTlVMTCBvciBhIGdsb2JhbCBi bG9jay4gICovCisgCisgZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2xfc3RhdGlj IChjb25zdCBjaGFyICpuYW1lLAorLQkJCQkJICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwK KyAJCQkJCSAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorIAkJCQkJICAgIGNvbnN0IGRv bWFpbl9lbnVtIGRvbWFpbik7CisgCitAQCAtMTAxMiw3ICsxMDEzLDYgQEAgZXh0ZXJuIHN0cnVj dCBzeW1ib2wgKmxvb2t1cF9zeW1ib2xfc3RhdGljIChjb25zdCBjaGFyICpuYW1lLAorICAgIG5l Y2Vzc2FyeSkuICAqLworIAorIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2ds b2JhbCAoY29uc3QgY2hhciAqbmFtZSwKKy0JCQkJCSAgICBjb25zdCBjaGFyICpsaW5rYWdlX25h bWUsCisgCQkJCQkgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKKyAJCQkJCSAgICBjb25z dCBkb21haW5fZW51bSBkb21haW4pOworIAorQEAgLTEwMjEsMjEgKzEwMjEsMTggQEAgZXh0ZXJu IHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2xfZ2xvYmFsIChjb25zdCBjaGFyICpuYW1lLAor ICAgIHdpbGwgZml4IHVwIHRoZSBzeW1ib2wgaWYgbmVjZXNzYXJ5LiAgKi8KKyAKKyBleHRlcm4g c3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbF9hdXhfYmxvY2sgKGNvbnN0IGNoYXIgKm5hbWUs CistCQkJCQkgICAgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorIAkJCQkJICAgICAgIGNv bnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCisgCQkJCQkgICAgICAgY29uc3QgZG9tYWluX2VudW0g ZG9tYWluKTsKKyAKKyAvKiBMb29rdXAgYSBwYXJ0aWFsIHN5bWJvbC4gICovCisgCisgZXh0ZXJu IHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqbG9va3VwX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFy dGlhbF9zeW10YWIgKiwKKy0JCQkJCQkgICAgIGNvbnN0IGNoYXIgKiwKKyAJCQkJCQkgICAgIGNv bnN0IGNoYXIgKiwgaW50LAorIAkJCQkJCSAgICAgZG9tYWluX2VudW0pOworIAorIC8qIGxvb2t1 cCBhIHN5bWJvbCBieSBuYW1lLCB3aXRoaW4gYSBzcGVjaWZpZWQgYmxvY2sgKi8KKyAKKyBleHRl cm4gc3RydWN0IHN5bWJvbCAqbG9va3VwX2Jsb2NrX3N5bWJvbCAoY29uc3Qgc3RydWN0IGJsb2Nr ICosIGNvbnN0IGNoYXIgKiwKKy0JCQkJCSAgIGNvbnN0IGNoYXIgKiwKKyAJCQkJCSAgIGNvbnN0 IGRvbWFpbl9lbnVtKTsKKyAKKyAvKiBsb29rdXAgYSBbc3RydWN0LCB1bmlvbiwgZW51bV0gYnkg bmFtZSwgd2l0aGluIGEgc3BlY2lmaWVkIGJsb2NrICovCitAQCAtMTA2NSw2ICsxMDYyLDggQEAg ZXh0ZXJuIHZvaWQgY2xlYXJfcGNfZnVuY3Rpb25fY2FjaGUgKHZvaWQpOwogIAogIC8qIGZyb20g c3ltdGFiLmM6ICovCiAgCkBAIC0xNDI2OCwxMSArMTYzMTcsMTkgQEAgaW5kZXggODAwZmZkOC4u M2VkNjk0NyAxMDA2NDQKICAvKiBsb29rdXAgcGFydGlhbCBzeW1ib2wgdGFibGUgYnkgZmlsZW5h bWUgKi8KICAKICBleHRlcm4gc3RydWN0IHBhcnRpYWxfc3ltdGFiICpsb29rdXBfcGFydGlhbF9z eW10YWIgKGNvbnN0IGNoYXIgKik7CitAQCAtMTM2Nyw3ICsxMzY2LDYgQEAgZXh0ZXJuIC8qY29u c3QgKi8gY2hhciAqbWFpbl9uYW1lICh2b2lkKTsKKyAvKiBDaGVjayBnbG9iYWwgc3ltYm9scyBp biBvYmpmaWxlLiAgKi8KKyBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9t X29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAkJCQkJCSAgY29uc3Qg Y2hhciAqbmFtZSwKKy0JCQkJCQkgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKyAJCQkJCQkg IGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7CisgCisgZXh0ZXJuIHN0cnVjdCBzeW10YWJzX2Fu ZF9saW5lcwogZGlmZiAtLWdpdCBhL2dkYi90YXJnZXQuYyBiL2dkYi90YXJnZXQuYwotaW5kZXgg ZWRmODY5Ny4uYTdlZDIwNiAxMDA2NDQKK2luZGV4IGU2NjU5YzkuLmVhYmQ5ZmMgMTAwNjQ0CiAt LS0gYS9nZGIvdGFyZ2V0LmMKICsrKyBiL2dkYi90YXJnZXQuYwotQEAgLTEyNCw2ICsxMjQsOCBA QCBzdGF0aWMgaW50IGRlYnVnX3RvX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIsIGludCwg aW50KTsKK0BAIC0xMjAsNiArMTIwLDggQEAgc3RhdGljIGludCBkZWJ1Z190b19pbnNlcnRfd2F0 Y2hwb2ludCAoQ09SRV9BRERSLCBpbnQsIGludCk7CiAgCiAgc3RhdGljIGludCBkZWJ1Z190b19y ZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSLCBpbnQsIGludCk7CiAgCkBAIC0xNDI4MSw3ICsx NjMzOCw3IEBAIGluZGV4IGVkZjg2OTcuLmE3ZWQyMDYgMTAwNjQ0CiAgc3RhdGljIGludCBkZWJ1 Z190b19zdG9wcGVkX2J5X3dhdGNocG9pbnQgKHZvaWQpOwogIAogIHN0YXRpYyBpbnQgZGVidWdf dG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3BzICosIENPUkVfQUREUiAq KTsKLUBAIC02MjQsNiArNjI2LDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQorQEAg LTU4Myw2ICs1ODUsNyBAQCB1cGRhdGVfY3VycmVudF90YXJnZXQgKHZvaWQpCiAgICAgICAgSU5I RVJJVCAodG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQsIHQpOwogICAgICAgIElOSEVSSVQgKHRvX2lu c2VydF93YXRjaHBvaW50LCB0KTsKICAgICAgICBJTkhFUklUICh0b19yZW1vdmVfd2F0Y2hwb2lu dCwgdCk7CkBAIC0xNDI4OSw3ICsxNjM0Niw3IEBAIGluZGV4IGVkZjg2OTcuLmE3ZWQyMDYgMTAw NjQ0CiAgICAgICAgSU5IRVJJVCAodG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MsIHQpOwogICAgICAg IElOSEVSSVQgKHRvX2hhdmVfc3RlcHBhYmxlX3dhdGNocG9pbnQsIHQpOwogICAgICAgIElOSEVS SVQgKHRvX2hhdmVfY29udGludWFibGVfd2F0Y2hwb2ludCwgdCk7Ci1AQCAtNzQ3LDYgKzc1MCw5 IEBAIHVwZGF0ZV9jdXJyZW50X3RhcmdldCAodm9pZCkKK0BAIC03MTAsNiArNzEzLDkgQEAgdXBk YXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQogICAgZGVfZmF1bHQgKHRvX3JlbW92ZV93YXRjaHBv aW50LAogIAkgICAgKGludCAoKikgKENPUkVfQUREUiwgaW50LCBpbnQpKQogIAkgICAgcmV0dXJu X21pbnVzX29uZSk7CkBAIC0xNDI5OSw3ICsxNjM1Niw3IEBAIGluZGV4IGVkZjg2OTcuLmE3ZWQy MDYgMTAwNjQ0CiAgICBkZV9mYXVsdCAodG9fc3RvcHBlZF9ieV93YXRjaHBvaW50LAogIAkgICAg KGludCAoKikgKHZvaWQpKQogIAkgICAgcmV0dXJuX3plcm8pOwotQEAgLTMzMDIsNiArMzMwOCwx OSBAQCBkZWJ1Z190b19yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4s IGludCB0eXBlKQorQEAgLTMyNzcsNiArMzI4MywxOSBAQCBkZWJ1Z190b19yZW1vdmVfd2F0Y2hw b2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlKQogICAgcmV0dXJuIHJldHZh bDsKICB9CiAgCkBAIC0xNDMxOSw3ICsxNjM3Niw3IEBAIGluZGV4IGVkZjg2OTcuLmE3ZWQyMDYg MTAwNjQ0CiAgc3RhdGljIHZvaWQKICBkZWJ1Z190b190ZXJtaW5hbF9pbml0ICh2b2lkKQogIHsK LUBAIC0zNTQ5LDYgKzM1NjgsNyBAQCBzZXR1cF90YXJnZXRfZGVidWcgKHZvaWQpCitAQCAtMzUy NCw2ICszNTQzLDcgQEAgc2V0dXBfdGFyZ2V0X2RlYnVnICh2b2lkKQogICAgY3VycmVudF90YXJn ZXQudG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQgPSBkZWJ1Z190b19yZW1vdmVfaHdfYnJlYWtwb2lu dDsKICAgIGN1cnJlbnRfdGFyZ2V0LnRvX2luc2VydF93YXRjaHBvaW50ID0gZGVidWdfdG9faW5z ZXJ0X3dhdGNocG9pbnQ7CiAgICBjdXJyZW50X3RhcmdldC50b19yZW1vdmVfd2F0Y2hwb2ludCA9 IGRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50OwpAQCAtMTQzMjgsMTAgKzE2Mzg1LDEwIEBAIGlu ZGV4IGVkZjg2OTcuLmE3ZWQyMDYgMTAwNjQ0CiAgICBjdXJyZW50X3RhcmdldC50b19zdG9wcGVk X2RhdGFfYWRkcmVzcyA9IGRlYnVnX3RvX3N0b3BwZWRfZGF0YV9hZGRyZXNzOwogICAgY3VycmVu dF90YXJnZXQudG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSA9IGRlYnVnX3RvX3dhdGNo cG9pbnRfYWRkcl93aXRoaW5fcmFuZ2U7CiBkaWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC5oIGIvZ2Ri L3RhcmdldC5oCi1pbmRleCBhMDIwYmY3Li4yYzVlNThlIDEwMDY0NAoraW5kZXggNzEwM2FiMi4u NzQxYjJlNSAxMDA2NDQKIC0tLSBhL2dkYi90YXJnZXQuaAogKysrIGIvZ2RiL3RhcmdldC5oCi1A QCAtNDE5LDYgKzQxOSw3IEBAIHN0cnVjdCB0YXJnZXRfb3BzCitAQCAtNDIyLDYgKzQyMiw3IEBA IHN0cnVjdCB0YXJnZXRfb3BzCiAgICAgIGludCAoKnRvX3JlbW92ZV9od19icmVha3BvaW50KSAo c3RydWN0IGdkYmFyY2ggKiwgc3RydWN0IGJwX3RhcmdldF9pbmZvICopOwogICAgICBpbnQgKCp0 b19yZW1vdmVfd2F0Y2hwb2ludCkgKENPUkVfQUREUiwgaW50LCBpbnQpOwogICAgICBpbnQgKCp0 b19pbnNlcnRfd2F0Y2hwb2ludCkgKENPUkVfQUREUiwgaW50LCBpbnQpOwpAQCAtMTQzMzksNyAr MTYzOTYsNyBAQCBpbmRleCBhMDIwYmY3Li4yYzVlNThlIDEwMDY0NAogICAgICBpbnQgKCp0b19z dG9wcGVkX2J5X3dhdGNocG9pbnQpICh2b2lkKTsKICAgICAgaW50IHRvX2hhdmVfc3RlcHBhYmxl X3dhdGNocG9pbnQ7CiAgICAgIGludCB0b19oYXZlX2NvbnRpbnVhYmxlX3dhdGNocG9pbnQ7Ci1A QCAtMTI2Miw2ICsxMjYzLDE1IEBAIGV4dGVybiBjaGFyICpub3JtYWxfcGlkX3RvX3N0ciAocHRp ZF90IHB0aWQpOworQEAgLTEyNzQsNiArMTI3NSwxNSBAQCBleHRlcm4gY2hhciAqbm9ybWFsX3Bp ZF90b19zdHIgKHB0aWRfdCBwdGlkKTsKICAjZGVmaW5lCXRhcmdldF9yZW1vdmVfd2F0Y2hwb2lu dChhZGRyLCBsZW4sIHR5cGUpCVwKICAgICAgICgqY3VycmVudF90YXJnZXQudG9fcmVtb3ZlX3dh dGNocG9pbnQpIChhZGRyLCBsZW4sIHR5cGUpCiAgCkBAIC0xNDM1NSw3ICsxNjQxMiw3IEBAIGlu ZGV4IGEwMjBiZjcuLjJjNWU1OGUgMTAwNjQ0CiAgI2RlZmluZSB0YXJnZXRfaW5zZXJ0X2h3X2Jy ZWFrcG9pbnQoZ2RiYXJjaCwgYnBfdGd0KSBcCiAgICAgICAoKmN1cnJlbnRfdGFyZ2V0LnRvX2lu c2VydF9od19icmVha3BvaW50KSAoZ2RiYXJjaCwgYnBfdGd0KQogIAotQEAgLTEzMDIsNiArMTMx MiwyMCBAQCBleHRlcm4gaW50IHRhcmdldF9zZWFyY2hfbWVtb3J5IChDT1JFX0FERFIgc3RhcnRf YWRkciwKK0BAIC0xMzE0LDYgKzEzMjQsMjAgQEAgZXh0ZXJuIGludCB0YXJnZXRfc2VhcmNoX21l bW9yeSAoQ09SRV9BRERSIHN0YXJ0X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVUxPTkdFU1QgcGF0dGVybl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ09SRV9BRERSICpmb3VuZF9hZGRycCk7CiAgCkBAIC0xNTU3NiwxOSArMTc2MzMsNiBA QCBpbmRleCAwZWY2YzRiLi4zMzBlZDg3IDEwMDY0NAogKwl1bnN1cHBvcnRlZCAiJHRlc3QgKG5v IEdDQykiCiArICAgIH0KICt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9o ZWxwLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAKLWluZGV4IGQ3MTY0MWIu LmRiZTg2ZWIgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwCi1AQCAtNjA2LDcgKzYwNiw3IEBA IGdkYl90ZXN0ICJoZWxwIHN0ZXBpIiAiU3RlcCBvbmUgaW5zdHJ1Y3Rpb24gZXhhY3RseVwuXFtc clxuXF0rQXJndW1lbnQgTiBtZWFucyBkCi0gZ2RiX3Rlc3QgImhlbHAgc2lnbmFsIiAiQ29udGlu dWUgcHJvZ3JhbSBnaXZpbmcgaXQgc2lnbmFsLioiICJoZWxwIHNpZ25hbCIKLSAjIHRlc3QgaGVs cCBzb3VyY2UKLSAjIHZ4Z2RiIHJlYWRzIC52eGdkYmluaXQKLS1nZGJfdGVzdCAiaGVscCBzb3Vy Y2UiICJSZWFkIGNvbW1hbmRzIGZyb20gYSBmaWxlIG5hbWVkIEZJTEVcLlxbXHJcblxdK09wdGlv bmFsIC12IHN3aXRjaCBcXChiZWZvcmUgdGhlIGZpbGVuYW1lXFwpIGNhdXNlcyBlYWNoIGNvbW1h bmQgaW5cW1xyXG5cXStGSUxFIHRvIGJlIGVjaG9lZCBhcyBpdCBpcyBleGVjdXRlZFwuXFtcclxu XF0rTm90ZSB0aGF0IHRoZSBmaWxlIFwiXFteXCJcXSpcIiBpcyByZWFkIGF1dG9tYXRpY2FsbHkg aW4gdGhpcyB3YXlcW1xyXG5cXSt3aGVuIEdEQiBpcyBzdGFydGVkXC4iICJoZWxwIHNvdXJjZSIK LStnZGJfdGVzdCAiaGVscCBzb3VyY2UiICJSZWFkIGNvbW1hbmRzIGZyb20gYSBmaWxlIG5hbWVk IEZJTEVcLlxbXHJcblxdK09wdGlvbmFsIC12IHN3aXRjaCBcXChiZWZvcmUgdGhlIGZpbGVuYW1l XFwpIGNhdXNlcyBlYWNoIGNvbW1hbmQgaW5cW1xyXG5cXStGSUxFIHRvIGJlIGVjaG9lZCBhcyBp dCBpcyBleGVjdXRlZFwuXFtcclxuXF0rTm90ZSB0aGF0IHRoZSBmaWxlIFwiXFteXCJcXSpcIiBp cyByZWFkIGF1dG9tYXRpY2FsbHkgaW4gdGhpcyB3YXlcW1xyXG5cXSt3aGVuIEdEQiBpcyBzdGFy dGVkXC5cW1xyXG5cXStPcHRpb25hbCAtcCBzd2l0Y2ggXFwoYmVmb3JlIHRoZSBmaWxlbmFtZVxc KSBjYXVzZXMgRklMRSB0byBiZSBldmFsdWF0ZWRcW1xyXG5cXSthcyBQeXRob24gY29kZVwuIiAi aGVscCBzb3VyY2UiCi0gIyB0ZXN0IGhlbHAgc3RhY2sKLSB0ZXN0X2NsYXNzX2hlbHAgInN0YWNr IiB7Ci0gICAgICJFeGFtaW5pbmcgdGhlIHN0YWNrXC4uKlxbXHJcblxdKyIKIGRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMKIG5ldyBm aWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwLi5lZWI3Yjg1CkBAIC0xNTY0NywyNCArMTc2 OTEsNiBAQCBpbmRleCAwMDAwMDAwLi42ZDgyZTczCiArCiArZ2RiX3Rlc3Qge3NldCAkdmFyc3Ry dWN0ID0gc3RhdGljc3RydWN0fQogK2dkYl90ZXN0IHtwICR2YXJzdHJ1Y3QuZmllbGR9ICIgPSAx IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcmFkaXguZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9yYWRpeC5leHAKLWluZGV4IDlmZDZjYjUuLjkzYWExNDIgMTAwNjQ0 Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3JhZGl4LmV4cAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9yYWRpeC5leHAKLUBAIC0xNjMsMTMgKzE2Myw2IEBAIGdkYl90ZXN0ICJz ZXQgcmFkaXgiIFwKLSAgICAgIklucHV0IGFuZCBvdXRwdXQgcmFkaWNlcyBub3cgc2V0IHRvIGRl Y2ltYWwgMTAsIGhleCBhLCBvY3RhbCAxMlwuIiBcCi0gICAgICJSZXNldCByYWRpY2VzIgotIAot LWdkYl90ZXN0ICJzZXQgaW5wdXQtcmFkaXggMCIgXAotLSAgICAiTm9uc2Vuc2UgaW5wdXQgcmFk aXggYGBkZWNpbWFsIDAnJzsgaW5wdXQgcmFkaXggdW5jaGFuZ2VkXFwuIiBcCi0tICAgICJSZWpl Y3QgaW5wdXQtcmFkaXggMCIKLS1nZGJfdGVzdCAic2hvdyBpbnB1dC1yYWRpeCIgXAotLSAgICAi RGVmYXVsdCBpbnB1dCByYWRpeCBmb3IgZW50ZXJpbmcgbnVtYmVycyBpcyAxMFxcLiIgXAotLSAg ICAiSW5wdXQgcmFkaXggdW5jaGFuZ2VkIGFmdGVyIHJlamVjdGluZyAwIgotLQotIGdkYl90ZXN0 ICJzZXQgaW5wdXQtcmFkaXggMSIgXAotICAgICAiTm9uc2Vuc2UgaW5wdXQgcmFkaXggYGBkZWNp bWFsIDEnJzsgaW5wdXQgcmFkaXggdW5jaGFuZ2VkXFwuIiBcCi0gICAgICJSZWplY3QgaW5wdXQt cmFkaXggMSIKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxv dy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuYwogbmV3IGZpbGUgbW9k ZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLmM1ZDVlZTAKQEAgLTE1OTU3LDYgKzE3OTgzLDM2NCBA QCBpbmRleCBjOTkwYTY0Li5jOTY0ZGI5IDEwMDY0NAogIAogIGFsbCBpbmZvIGluc3RhbGwtaW5m byBkdmkgaW5zdGFsbCB1bmluc3RhbGwgaW5zdGFsbGNoZWNrIGNoZWNrOgogIAlAZWNobyAiTm90 aGluZyB0byBiZSBkb25lIGZvciAkQC4uLiIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9jcC1yZWxvY2F0ZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcC1yZWxvY2F0ZS5l eHAKK2luZGV4IGY4MWEyMTIuLjMwZDM2MmEgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9jcC1yZWxvY2F0ZS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwLXJlbG9j YXRlLmV4cAorQEAgLTMwLDcgKzMwLDcgQEAgcHJvYyBnZXRfZnVuY19hZGRyZXNzIHsgZnVuYyB9 IHsKKyAgICAgZ2xvYmFsIGdkYl9wcm9tcHQgaGV4CisgCisgICAgIHNldCByZnVuYyBbc3RyaW5n X3RvX3JlZ2V4cCAkZnVuY10KKy0gICAgZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50ICcke2Z1bmN9 JyIgImdldCBhZGRyZXNzIG9mICR7ZnVuY30iIHsKKysgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgInBy aW50ICR7ZnVuY30iICJnZXQgYWRkcmVzcyBvZiAke2Z1bmN9IiB7CisgCS1yZSAiXFxcJFxbMC05 XF0rID0gXFx7LipcXH0gKDB8KCRoZXgpIDwke3JmdW5jfT4pXFtcclxuXF0rJHtnZGJfcHJvbXB0 fSAkIiB7CisgCSAgICAjICQxID0ge2ludCAoKX0gMHgyNCA8ZnVuY3Rpb25fYmFyPgorIAkgICAg IyBCdXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGF0IHplcm8sIHRoZSBuYW1lIG1heSBiZSBvbWl0dGVk LgorQEAgLTEzMCw3ICsxMzAsNyBAQCBnZGJfdGVzdCAiYWRkLXN5bWJvbC1maWxlICR7YmluZmls ZX0gMCAtcyAke2Z1bmMxX3NlY30gMHgxMDAwMCAtcyAke2Z1bmMyX3NlY30gMAorIAkieSIKKyAK KyAjIE1ha2Ugc3VyZSB0aGUgZnVuY3Rpb24gYWRkcmVzc2VzIHdlcmUgdXBkYXRlZC4KKy1nZGJf dGVzdCAiYnJlYWsgKickZnVuYzFfbmFtZSciIFwKKytnZGJfdGVzdCAiYnJlYWsgKiRmdW5jMV9u YW1lIiBcCisgICAgICJCcmVha3BvaW50ICRkZWNpbWFsIGF0IDB4MS4uLi46IGZpbGUgLioiCist Z2RiX3Rlc3QgImJyZWFrIConJGZ1bmMyX25hbWUnIiBcCisrZ2RiX3Rlc3QgImJyZWFrICokZnVu YzJfbmFtZSIgXAorICAgICAiQnJlYWtwb2ludCAkZGVjaW1hbCBhdCAweDIuLi4uOiBmaWxlIC4q IgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwbHVzZnVuY3MuY2MgYi9nZGIv dGVzdHN1aXRlL2dkYi5jcC9jcGx1c2Z1bmNzLmNjCitpbmRleCBmNGY3OGE2Li4xMWRiYTA2IDEw MDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3BsdXNmdW5jcy5jYworKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvY3BsdXNmdW5jcy5jYworQEAgLTE5NSw2ICsxOTUsMTIgQEAgY2hh ciAqCWRtX3R5cGVfY2hhcl9zdGFyIChjaGFyICogcCkJCXsgcmV0dXJuIHA7IH0KKyBpbnQJZG1f dHlwZV9mb29fcmVmIChmb28gJiBmb28pCQl7IHJldHVybiBmb28uaWZvbzsgfQorIGludCAqCWRt X3R5cGVfaW50X3N0YXIgKGludCAqIHApCQl7IHJldHVybiBwOyB9CisgbG9uZyAqCWRtX3R5cGVf bG9uZ19zdGFyIChsb25nICogcCkJCXsgcmV0dXJuIHA7IH0KKytpbnQJZG1fdHlwZV9zaG9ydCAo c2hvcnQgaSkJCQl7IHJldHVybiBpOyB9CisraW50CWRtX3R5cGVfbG9uZyAobG9uZyBpKQkJCXsg cmV0dXJuIGk7IH0KKyBpbnQJZG1fdHlwZV91bnNpZ25lZF9pbnQgKHVuc2lnbmVkIGludCBpKQl7 IHJldHVybiBpOyB9CisraW50CWRtX3R5cGVfdW5zaWduZWRfc2hvcnQgKHVuc2lnbmVkIHNob3J0 IGkpCXsgcmV0dXJuIGk7IH0KKytpbnQJZG1fdHlwZV91bnNpZ25lZF9sb25nICh1bnNpZ25lZCBs b25nIGkpCXsgcmV0dXJuIGk7IH0KKyBpbnQJZG1fdHlwZV92b2lkICh2b2lkKQkJCXsgcmV0dXJu IDA7IH0KKyB2b2lkICoJZG1fdHlwZV92b2lkX3N0YXIgKHZvaWQgKiBwKQkJeyByZXR1cm4gcDsg fQorK3R5cGVkZWYgaW50IG15aW50OworK2ludAlkbV90eXBlX3R5cGVkZWYgKG15aW50IGkpCQl7 IHJldHVybiBpOyB9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3BsdXNmdW5j cy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcGx1c2Z1bmNzLmV4cAoraW5kZXggZjMyMjU4 Ni4uNDQzYWY3YSAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwbHVzZnVuY3Mu ZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcGx1c2Z1bmNzLmV4cAorQEAgLTY2LDkg KzY2LDI1IEBAIHNldCBkbV90eXBlX3Vuc2lnbmVkX2ludAkidW5zaWduZWQiCisgc2V0IGRtX3R5 cGVfdm9pZAkJInZvaWQiCisgc2V0IGRtX3R5cGVfdm9pZF9zdGFyCQkidm9pZCoiCisgCisrIyBT b21lIG90aGVyIHZhZ2FyaWVzIG9mIEdEQidzIHR5cGUgcHJpbnRpbmcgbWFjaGluZXJ5LiAgVGhl IGludGVnZXIgdHlwZXMKKysjIG1heSBoYXZlIHVuc2lnbmVkIGJlZm9yZSBvciBhZnRlciB0aGVp ciBsZW5ndGgsIGFuZCBtYXkgaGF2ZSAiaW50IgorKyMgYXBwZW5kZWQuICBUaGUgY2hhciogY29u dmVyc2lvbiBvcGVyYXRvciBtYXkgaGF2ZSBuYW1lICJjaGFyKiIgZXZlbiBpZgorKyMgdGhlIHR5 cGUgaXMgImNoYXIgKiIsIGJlY2F1c2UgdGhlIG5hbWUgY29tZXMgZnJvbSB0aGUgZGVidWcgaW5m b3JtYXRpb24KKysjIGFuZCB0aGUgdHlwZSBmcm9tIEdEQi4gIEZ1bmN0aW9uIHR5cGVzIG1heSBu b3Qgc2VlIHRocm91Z2ggdHlwZWRlZnMuCisrCisrc2V0IGRtX3R5cGVfc2hvcnQJCSJzaG9ydCIK KytzZXQgZG1fdHlwZV9sb25nCQkibG9uZyIKKytzZXQgZG1fdHlwZV91bnNpZ25lZF9zaG9ydAki dW5zaWduZWQgc2hvcnQiCisrc2V0IGRtX3R5cGVfdW5zaWduZWRfbG9uZwkidW5zaWduZWQgbG9u ZyIKKytzZXQgZG1fb3BlcmF0b3JfY2hhcl9zdGFyCSJjaGFyKiIKKytzZXQgZG1fb3BlcmF0b3Jf Y2hhcl9zdGFyX3F1b3RlZAkiY2hhclxcKiIKKytzZXQgZG1fdHlwZV90eXBlZGVmCQkwCisrCisg cHJvYyBwcm9iZV9kZW1hbmdsZXIgeyB9IHsKKyAgICAgZ2xvYmFsIGdkYl9wcm9tcHQKKyAgICAg Z2xvYmFsIGRtX29wZXJhdG9yX2NvbW1hCisrICAgIGdsb2JhbCBkbV9vcGVyYXRvcl9jaGFyX3N0 YXIKKysgICAgZ2xvYmFsIGRtX29wZXJhdG9yX2NoYXJfc3Rhcl9xdW90ZWQKKyAgICAgZ2xvYmFs IGRtX3R5cGVfY2hhcl9zdGFyCisgICAgIGdsb2JhbCBkbV90eXBlX2NoYXJfc3Rhcl9xdW90ZWQK KyAgICAgZ2xvYmFsIGRtX3R5cGVfZm9vX3JlZgorQEAgLTc3LDYgKzkzLDExIEBAIHByb2MgcHJv YmVfZGVtYW5nbGVyIHsgfSB7CisgICAgIGdsb2JhbCBkbV90eXBlX3Vuc2lnbmVkX2ludAorICAg ICBnbG9iYWwgZG1fdHlwZV92b2lkCisgICAgIGdsb2JhbCBkbV90eXBlX3ZvaWRfc3RhcgorKyAg ICBnbG9iYWwgZG1fdHlwZV9zaG9ydAorKyAgICBnbG9iYWwgZG1fdHlwZV91bnNpZ25lZF9zaG9y dAorKyAgICBnbG9iYWwgZG1fdHlwZV9sb25nCisrICAgIGdsb2JhbCBkbV90eXBlX3Vuc2lnbmVk X2xvbmcKKysgICAgZ2xvYmFsIGRtX3R5cGVfdHlwZWRlZgorIAorICAgICBzZW5kX2dkYiAicHJp bnQgJmZvbzo6b3BlcmF0b3IsKGZvbyYpXG4iCisgICAgIGdkYl9leHBlY3QgeworQEAgLTk3LDYg KzExOCwyNiBAQCBwcm9jIHByb2JlX2RlbWFuZ2xlciB7IH0geworIAl9CisgICAgIH0KKyAKKysg ICAgc2VuZF9nZGIgInByaW50ICZmb286Om9wZXJhdG9yIGNoYXIqKCRkbV90eXBlX3ZvaWQpXG4i CisrICAgIGdkYl9leHBlY3QgeworKwktcmUgIi4qZm9vOjpvcGVyYXRvciBjaGFyIFxcKlxcKHZv aWRcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICAjIHYyIGRlbWFuZ2xlciBvciBHREIg dHlwZSBwcmludGVyCisrCSAgICBzZXQgZG1fb3BlcmF0b3JfY2hhcl9zdGFyICJjaGFyICoiCisr CSAgICBzZXQgZG1fb3BlcmF0b3JfY2hhcl9zdGFyX3F1b3RlZCAiY2hhciBcXCoiCisrCSAgICBw YXNzICJkZXRlY3QgZG1fb3BlcmF0b3JfY2hhcl9zdGFyIgorKwl9CisrCS1yZSAiLipmb286Om9w ZXJhdG9yIGNoYXJcXCpcXChcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICAjIHYzIGRl bWFuZ2xlcgorKwkgICAgcGFzcyAiZGV0ZWN0IGRtX29wZXJhdG9yX2NoYXJfc3RhciIKKysJfQor KwktcmUgIi4qJGdkYl9wcm9tcHQgJCIgeworKwkgICAgZmFpbCAiZGV0ZWN0IGRtX29wZXJhdG9y X2NoYXJfc3RhciIKKysJfQorKwl0aW1lb3V0IHsKKysJICAgIGZhaWwgImRldGVjdCBkbV9vcGVy YXRvcl9jaGFyX3N0YXIiCisrCX0KKysgICAgfQorKworICAgICBzZW5kX2dkYiAicHJpbnQgJmRt X3R5cGVfY2hhcl9zdGFyXG4iCisgICAgIGdkYl9leHBlY3QgeworIAktcmUgIi4qZG1fdHlwZV9j aGFyX3N0YXJcXChjaGFyIFxcKlxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKK0BAIC0xNjYsNiAr MjA3LDExIEBAIHByb2MgcHJvYmVfZGVtYW5nbGVyIHsgfSB7CisgCSAgICAjIHYzIGRlbWFuZ2xl cgorIAkgICAgcGFzcyAiZGV0ZWN0IGRtX3R5cGVfbG9uZ19zdGFyIgorIAl9CisrCS1yZSAiLipk bV90eXBlX2xvbmdfc3RhclxcKGxvbmcgaW50IFxcKlxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsK KysJICAgICMgR0NDIHYzIGFuZCBHREIncyB0eXBlIHByaW50ZXIKKysJICAgIHNldCBkbV90eXBl X2xvbmdfc3RhciAibG9uZyBpbnQgKiIKKysJICAgIHBhc3MgImRldGVjdCBkbV90eXBlX2xvbmdf c3RhciIKKysJfQorIAktcmUgIi4qJGdkYl9wcm9tcHQgJCIgeworIAkgICAgZmFpbCAiZGV0ZWN0 IGRtX3R5cGVfbG9uZ19zdGFyIgorIAl9CitAQCAtMjMwLDYgKzI3NiwxMDEgQEAgcHJvYyBwcm9i ZV9kZW1hbmdsZXIgeyB9IHsKKyAJICAgIGZhaWwgImRldGVjdCBkbV90eXBlX3ZvaWRfc3RhciAo dGltZW91dCkiCisgCX0KKyAgICAgfQorKworKyAgICBzZW5kX2dkYiAicHJpbnQgJmRtX3R5cGVf c2hvcnRcbiIKKysgICAgZ2RiX2V4cGVjdCB7CisrCS1yZSAiLipkbV90eXBlX3Nob3J0XFwoc2hv cnRcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICAjIHYyIGFuZCB2MyBkZW1hbmdsZXJz CisrCSAgICBwYXNzICJkZXRlY3QgZG1fdHlwZV9zaG9ydCIKKysJfQorKwktcmUgIi4qZG1fdHlw ZV9zaG9ydFxcKHNob3J0IGludFxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgICMgR0RC IHR5cGUgcHJpbnRlcgorKwkgICAgc2V0IGRtX3R5cGVfc2hvcnQgInNob3J0IGludCIKKysJICAg IHBhc3MgImRldGVjdCBkbV90eXBlX3Nob3J0IgorKwl9CisrCS1yZSAiLiokZ2RiX3Byb21wdCAk IiB7CisrCSAgICBmYWlsICJkZXRlY3QgZG1fdHlwZV9zaG9ydCIKKysJfQorKwl0aW1lb3V0IHsK KysJICAgIGZhaWwgImRldGVjdCBkbV90eXBlX3Nob3J0ICh0aW1lb3V0KSIKKysJfQorKyAgICB9 CisrCisrICAgIHNlbmRfZ2RiICJwcmludCAmZG1fdHlwZV91bnNpZ25lZF9zaG9ydFxuIgorKyAg ICBnZGJfZXhwZWN0IHsKKysJLXJlICIuKmRtX3R5cGVfdW5zaWduZWRfc2hvcnRcXCh1bnNpZ25l ZCBzaG9ydFxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgICMgdjIgYW5kIHYzIGRlbWFu Z2xlcnMKKysJICAgIHBhc3MgImRldGVjdCBkbV90eXBlX3Vuc2lnbmVkX3Nob3J0IgorKwl9Cisr CS1yZSAiLipkbV90eXBlX3Vuc2lnbmVkX3Nob3J0XFwoc2hvcnQgdW5zaWduZWQgaW50XFwpLipc clxuJGdkYl9wcm9tcHQgJCIgeworKwkgICAgIyBHREIgdHlwZSBwcmludGVyCisrCSAgICBzZXQg ZG1fdHlwZV91bnNpZ25lZF9zaG9ydCAic2hvcnQgdW5zaWduZWQgaW50IgorKwkgICAgcGFzcyAi ZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRfc2hvcnQiCisrCX0KKysJLXJlICIuKiRnZGJfcHJvbXB0 ICQiIHsKKysJICAgIGZhaWwgImRldGVjdCBkbV90eXBlX3Vuc2lnbmVkX3Nob3J0IgorKwl9Cisr CXRpbWVvdXQgeworKwkgICAgZmFpbCAiZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRfc2hvcnQgKHRp bWVvdXQpIgorKwl9CisrICAgIH0KKysKKysgICAgc2VuZF9nZGIgInByaW50ICZkbV90eXBlX2xv bmdcbiIKKysgICAgZ2RiX2V4cGVjdCB7CisrCS1yZSAiLipkbV90eXBlX2xvbmdcXChsb25nXFwp LipcclxuJGdkYl9wcm9tcHQgJCIgeworKwkgICAgIyB2MiBhbmQgdjMgZGVtYW5nbGVycworKwkg ICAgcGFzcyAiZGV0ZWN0IGRtX3R5cGVfbG9uZyIKKysJfQorKwktcmUgIi4qZG1fdHlwZV9sb25n XFwobG9uZyBpbnRcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICAjIEdEQiB0eXBlIHBy aW50ZXIKKysJICAgIHNldCBkbV90eXBlX2xvbmcgImxvbmcgaW50IgorKwkgICAgcGFzcyAiZGV0 ZWN0IGRtX3R5cGVfbG9uZyIKKysJfQorKwktcmUgIi4qJGdkYl9wcm9tcHQgJCIgeworKwkgICAg ZmFpbCAiZGV0ZWN0IGRtX3R5cGVfbG9uZyIKKysJfQorKwl0aW1lb3V0IHsKKysJICAgIGZhaWwg ImRldGVjdCBkbV90eXBlX2xvbmcgKHRpbWVvdXQpIgorKwl9CisrICAgIH0KKysKKysgICAgc2Vu ZF9nZGIgInByaW50ICZkbV90eXBlX3Vuc2lnbmVkX2xvbmdcbiIKKysgICAgZ2RiX2V4cGVjdCB7 CisrCS1yZSAiLipkbV90eXBlX3Vuc2lnbmVkX2xvbmdcXCh1bnNpZ25lZCBsb25nXFwpLipcclxu JGdkYl9wcm9tcHQgJCIgeworKwkgICAgIyB2MiBhbmQgdjMgZGVtYW5nbGVycworKwkgICAgcGFz cyAiZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRfbG9uZyIKKysJfQorKwktcmUgIi4qZG1fdHlwZV91 bnNpZ25lZF9sb25nXFwobG9uZyB1bnNpZ25lZCBpbnRcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7 CisrCSAgICAjIEdEQiB0eXBlIHByaW50ZXIKKysJICAgIHNldCBkbV90eXBlX3Vuc2lnbmVkX2xv bmcgImxvbmcgdW5zaWduZWQgaW50IgorKwkgICAgcGFzcyAiZGV0ZWN0IGRtX3R5cGVfdW5zaWdu ZWRfbG9uZyIKKysJfQorKwktcmUgIi4qJGdkYl9wcm9tcHQgJCIgeworKwkgICAgZmFpbCAiZGV0 ZWN0IGRtX3R5cGVfdW5zaWduZWRfbG9uZyIKKysJfQorKwl0aW1lb3V0IHsKKysJICAgIGZhaWwg ImRldGVjdCBkbV90eXBlX3Vuc2lnbmVkX2xvbmcgKHRpbWVvdXQpIgorKwl9CisrICAgIH0KKysK KysgICAgc2VuZF9nZGIgInByaW50ICZkbV90eXBlX3R5cGVkZWZcbiIKKysgICAgZ2RiX2V4cGVj dCB7CisrCS1yZSAiLipkbV90eXBlX3R5cGVkZWZcXChpbnRcXCkuKlxyXG4kZ2RiX3Byb21wdCAk IiB7CisrCSAgICAjIHYyIGFuZCB2MyBkZW1hbmdsZXJzCisrCSAgICBwYXNzICJkZXRlY3QgZG1f dHlwZV90eXBlZGVmIgorKwl9CisrCS1yZSAiLipkbV90eXBlX3R5cGVkZWZcXChteWludFxcKS4q XHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgICMgR0RCIHR5cGUgcHJpbnRlcgorKwkgICAgc2V0 IGRtX3R5cGVfdHlwZWRlZiAxCisrCSAgICBwYXNzICJkZXRlY3QgZG1fdHlwZV90eXBlZGVmIgor Kwl9CisrCS1yZSAiLiokZ2RiX3Byb21wdCAkIiB7CisrCSAgICBmYWlsICJkZXRlY3QgZG1fdHlw ZV90eXBlZGVmIgorKwl9CisrCXRpbWVvdXQgeworKwkgICAgZmFpbCAiZGV0ZWN0IGRtX3R5cGVf dHlwZWRlZiAodGltZW91dCkiCisrCX0KKysgICAgfQorIH0KKyAKKyAjCitAQCAtMzUxLDggKzQ5 Miw5IEBAIHByb2MgcHJpbnRfYWRkciB7IG5hbWUgfSB7CisgCisgcHJvYyB0ZXN0X2xvb2t1cF9v cGVyYXRvcl9mdW5jdGlvbnMge30geworICAgICBnbG9iYWwgZG1fb3BlcmF0b3JfY29tbWEKKysg ICAgZ2xvYmFsIGRtX29wZXJhdG9yX2NoYXJfc3RhcgorICAgICBnbG9iYWwgZG1fdHlwZV9jaGFy X3N0YXIKKy0gICAgZ2xvYmFsIGRtX3R5cGVfY2hhcl9zdGFyX3F1b3RlZAorKyAgICBnbG9iYWwg ZG1fb3BlcmF0b3JfY2hhcl9zdGFyX3F1b3RlZAorICAgICBnbG9iYWwgZG1fdHlwZV9mb29fcmVm CisgICAgIGdsb2JhbCBkbV90eXBlX3ZvaWQKKyAgICAgZ2xvYmFsIGRtX3R5cGVfdm9pZF9zdGFy CitAQCAtNDEwLDggKzU1Miw4IEBAIHByb2MgdGVzdF9sb29rdXBfb3BlcmF0b3JfZnVuY3Rpb25z IHt9IHsKKyAKKyAgICAgaW5mb19mdW5jICJvcGVyYXRvciBpbnQoIgkiaW50IGZvbzo6b3BlcmF0 b3IgaW50KCRkbV90eXBlX3ZvaWQpOyIKKyAgICAgaW5mb19mdW5jICJvcGVyYXRvcigpKCIJInZv aWQgZm9vOjpvcGVyYXRvcigpKCRkbV90eXBlX2Zvb19yZWYpOyIKKy0gICAgaW5mb19mdW5jICJv cGVyYXRvciAkZG1fdHlwZV9jaGFyX3N0YXJfcXVvdGVkXCgiIFwKKy0JCQkJImNoYXIgKmZvbzo6 b3BlcmF0b3IgJGRtX3R5cGVfY2hhcl9zdGFyXCgkZG1fdHlwZV92b2lkKTsiCisrICAgIGluZm9f ZnVuYyAib3BlcmF0b3IgJGRtX29wZXJhdG9yX2NoYXJfc3Rhcl9xdW90ZWRcKCIgXAorKwkJCQki Y2hhciAqZm9vOjpvcGVyYXRvciAkZG1fb3BlcmF0b3JfY2hhcl9zdGFyXCgkZG1fdHlwZV92b2lk KTsiCisgCisgfQorIAorQEAgLTQyNiw2ICs1NjgsNyBAQCBwcm9jIHRlc3RfcGFkZHJfb3BlcmF0 b3JfZnVuY3Rpb25zIHt9IHsKKyAgICAgZ2xvYmFsIGRtX3R5cGVfdW5zaWduZWRfaW50CisgICAg IGdsb2JhbCBkbV90eXBlX3ZvaWQKKyAgICAgZ2xvYmFsIGRtX3R5cGVfdm9pZF9zdGFyCisrICAg IGdsb2JhbCBkbV9vcGVyYXRvcl9jaGFyX3N0YXIKKyAKKyAgICAgcHJpbnRfYWRkciAiZm9vOjpv cGVyYXRvciooJGRtX3R5cGVfZm9vX3JlZikiCisgICAgIHByaW50X2FkZHIgImZvbzo6b3BlcmF0 b3IlKCRkbV90eXBlX2Zvb19yZWYpIgorQEAgLTQ3OSw3ICs2MjIsNyBAQCBwcm9jIHRlc3RfcGFk ZHJfb3BlcmF0b3JfZnVuY3Rpb25zIHt9IHsKKyAgICAgfQorIAorICAgICBwcmludF9hZGRyICJm b286Om9wZXJhdG9yIGludCgkZG1fdHlwZV92b2lkKSIKKy0gICAgcHJpbnRfYWRkciAiZm9vOjpv cGVyYXRvciAkZG1fdHlwZV9jaGFyX3N0YXJcKCRkbV90eXBlX3ZvaWQpIgorKyAgICBwcmludF9h ZGRyICJmb286Om9wZXJhdG9yICRkbV9vcGVyYXRvcl9jaGFyX3N0YXJcKCRkbV90eXBlX3ZvaWQp IgorIH0KKyAKKyAjCitAQCAtNDg5LDE3ICs2MzIsMjEgQEAgcHJvYyB0ZXN0X3BhZGRyX29wZXJh dG9yX2Z1bmN0aW9ucyB7fSB7CisgcHJvYyB0ZXN0X3BhZGRyX292ZXJsb2FkZWRfZnVuY3Rpb25z IHt9IHsKKyAgICAgZ2xvYmFsIGRtX3R5cGVfdW5zaWduZWRfaW50CisgICAgIGdsb2JhbCBkbV90 eXBlX3ZvaWQKKysgICAgZ2xvYmFsIGRtX3R5cGVfc2hvcnQKKysgICAgZ2xvYmFsIGRtX3R5cGVf dW5zaWduZWRfc2hvcnQKKysgICAgZ2xvYmFsIGRtX3R5cGVfbG9uZworKyAgICBnbG9iYWwgZG1f dHlwZV91bnNpZ25lZF9sb25nCisgCisgICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZygkZG1f dHlwZV92b2lkKSIKKyAgICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKGNoYXIpIgorICAgICBw cmludF9hZGRyICJvdmVybG9hZDFhcmcoc2lnbmVkIGNoYXIpIgorICAgICBwcmludF9hZGRyICJv dmVybG9hZDFhcmcodW5zaWduZWQgY2hhcikiCistICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFy ZyhzaG9ydCkiCistICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZyh1bnNpZ25lZCBzaG9ydCki CisrICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZygkZG1fdHlwZV9zaG9ydCkiCisrICAgIHBy aW50X2FkZHIgIm92ZXJsb2FkMWFyZygkZG1fdHlwZV91bnNpZ25lZF9zaG9ydCkiCisgICAgIHBy aW50X2FkZHIgIm92ZXJsb2FkMWFyZyhpbnQpIgorICAgICBwcmludF9hZGRyICJvdmVybG9hZDFh cmcoJGRtX3R5cGVfdW5zaWduZWRfaW50KSIKKy0gICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJn KGxvbmcpIgorLSAgICBwcmludF9hZGRyICJvdmVybG9hZDFhcmcodW5zaWduZWQgbG9uZykiCisr ICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZygkZG1fdHlwZV9sb25nKSIKKysgICAgcHJpbnRf YWRkciAib3ZlcmxvYWQxYXJnKCRkbV90eXBlX3Vuc2lnbmVkX2xvbmcpIgorICAgICBwcmludF9h ZGRyICJvdmVybG9hZDFhcmcoZmxvYXQpIgorICAgICBwcmludF9hZGRyICJvdmVybG9hZDFhcmco ZG91YmxlKSIKKyAKK0BAIC01MjIsMTcgKzY2OSwzMSBAQCBwcm9jIHRlc3RfcGFkZHJfaGFpcnlf ZnVuY3Rpb25zIHt9IHsKKyAgICAgZ2xvYmFsIGRtX3R5cGVfY2hhcl9zdGFyCisgICAgIGdsb2Jh bCBkbV90eXBlX2ludF9zdGFyCisgICAgIGdsb2JhbCBkbV90eXBlX2xvbmdfc3RhcgorKyAgICBn bG9iYWwgZG1fdHlwZV90eXBlZGVmCisgCisgICAgIHByaW50X2FkZHJfMiAiaGFpcnlmdW5jMSIg ImhhaXJ5ZnVuYzEoaW50KSIKKy0gICAgcHJpbnRfYWRkcl8yICJoYWlyeWZ1bmMyIiAiaGFpcnlm dW5jMihpbnQgKCopKCRkbV90eXBlX2NoYXJfc3RhcikpIgorLSAgICBwcmludF9hZGRyXzIgImhh aXJ5ZnVuYzMiICJoYWlyeWZ1bmMzKGludCAoKikoc2hvcnQgKCopKCRkbV90eXBlX2xvbmdfc3Rh cikpKSIKKy0gICAgcHJpbnRfYWRkcl8yICJoYWlyeWZ1bmM0IiAiaGFpcnlmdW5jNChpbnQgKCop KHNob3J0ICgqKSgkZG1fdHlwZV9jaGFyX3N0YXIpKSkiCistCistICAgICMgZ2RiLWduYXRzIGJ1 ZyBnZGIvMTk6CistICAgICMgImdkYiB2MyBkZW1hbmdsZXIgZmFpbHMgb24gaGFpcnlmdW5jNSBo YWlyeWZ1bmM2IGhhaXJ5ZnVuYzciCistICAgIHByaW50X2FkZHJfMl9rZmFpbCAiaGFpcnlmdW5j NSIgImhhaXJ5ZnVuYzUoaW50ICgqKCopKCRkbV90eXBlX2NoYXJfc3RhcikpKGxvbmcpKSIgImhh aXJ5ZnVuYzUoaW50ICgqKShsb25nKSAoKikoY2hhciopKSIgImdkYi8xOSIKKy0gICAgcHJpbnRf YWRkcl8yX2tmYWlsICJoYWlyeWZ1bmM2IiAiaGFpcnlmdW5jNihpbnQgKCooKikoJGRtX3R5cGVf aW50X3N0YXIpKShsb25nKSkiICJoYWlyeWZ1bmM2KGludCAoKikobG9uZykgKCopKGludCopKSIg ImdkYi8xOSIKKy0gICAgcHJpbnRfYWRkcl8yX2tmYWlsICJoYWlyeWZ1bmM3IiAiaGFpcnlmdW5j NyhpbnQgKCooKikoaW50ICgqKSgkZG1fdHlwZV9jaGFyX3N0YXIpKSkobG9uZykpIiAiaGFpcnlm dW5jNyhpbnQgKCopKGxvbmcpICgqKShpbnQgKCopKGNoYXIqKSkpIiAiZ2RiLzE5IgorKworKyAg ICBpZiB7JGRtX3R5cGVfdHlwZWRlZiA9PSAwfSB7CisrCXByaW50X2FkZHJfMiAiaGFpcnlmdW5j MiIgImhhaXJ5ZnVuYzIoaW50ICgqKSgkZG1fdHlwZV9jaGFyX3N0YXIpKSIKKysJcHJpbnRfYWRk cl8yICJoYWlyeWZ1bmMzIiAiaGFpcnlmdW5jMyhpbnQgKCopKHNob3J0ICgqKSgkZG1fdHlwZV9s b25nX3N0YXIpKSkiCisrCXByaW50X2FkZHJfMiAiaGFpcnlmdW5jNCIgImhhaXJ5ZnVuYzQoaW50 ICgqKShzaG9ydCAoKikoJGRtX3R5cGVfY2hhcl9zdGFyKSkpIgorKworKwkjIGdkYi1nbmF0cyBi dWcgZ2RiLzE5OgorKwkjICJnZGIgdjMgZGVtYW5nbGVyIGZhaWxzIG9uIGhhaXJ5ZnVuYzUgaGFp cnlmdW5jNiBoYWlyeWZ1bmM3IgorKwlwcmludF9hZGRyXzJfa2ZhaWwgImhhaXJ5ZnVuYzUiICJo YWlyeWZ1bmM1KGludCAoKigqKSgkZG1fdHlwZV9jaGFyX3N0YXIpKShsb25nKSkiICJoYWlyeWZ1 bmM1KGludCAoKikobG9uZykgKCopKGNoYXIqKSkiICJnZGIvMTkiCisrCXByaW50X2FkZHJfMl9r ZmFpbCAiaGFpcnlmdW5jNiIgImhhaXJ5ZnVuYzYoaW50ICgqKCopKCRkbV90eXBlX2ludF9zdGFy KSkobG9uZykpIiAiaGFpcnlmdW5jNihpbnQgKCopKGxvbmcpICgqKShpbnQqKSkiICJnZGIvMTki CisrCXByaW50X2FkZHJfMl9rZmFpbCAiaGFpcnlmdW5jNyIgImhhaXJ5ZnVuYzcoaW50ICgqKCop KGludCAoKikoJGRtX3R5cGVfY2hhcl9zdGFyKSkpKGxvbmcpKSIgImhhaXJ5ZnVuYzcoaW50ICgq KShsb25nKSAoKikoaW50ICgqKShjaGFyKikpKSIgImdkYi8xOSIKKysgICAgfSBlbHNlIHsKKysJ cHJpbnRfYWRkcl8yICJoYWlyeWZ1bmMyIiAiaGFpcnlmdW5jMihQRlBjX2kpIgorKwlwcmludF9h ZGRyXzIgImhhaXJ5ZnVuYzMiICJoYWlyeWZ1bmMzKFBGUEZQbF9zX2kpIgorKwlwcmludF9hZGRy XzIgImhhaXJ5ZnVuYzQiICJoYWlyeWZ1bmM0KFBGUEZQY19zX2kpIgorKworKwkjIGdkYi1nbmF0 cyBidWcgZ2RiLzE5OgorKwkjICJnZGIgdjMgZGVtYW5nbGVyIGZhaWxzIG9uIGhhaXJ5ZnVuYzUg aGFpcnlmdW5jNiBoYWlyeWZ1bmM3IgorKwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzUiICJoYWly eWZ1bmM1KFBGUGNfUEZsX2kpIgorKwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzYiICJoYWlyeWZ1 bmM2KFBGUGlfUEZsX2kpIgorKwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzciICJoYWlyeWZ1bmM3 KFBGUEZQY19pX1BGbF9pKSIKKysgICAgfQorIH0KKyAKKyBwcm9jIGRvX3Rlc3RzIHt9IHsKK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jdHRpLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL2N0dGkuZXhwCitpbmRleCA0NTRjNmY0Li44Zjg4YWQ3IDEwMDY0NAorLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvY3R0aS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2N0 dGkuZXhwCitAQCAtODUsMTEgKzg1LDYgQEAgZ2RiX3Rlc3QgInByaW50IGMiICJcXCRcWzAtOVxd KyA9IDE5NCAuKiIKKyBnZGJfdGVzdCAicHJpbnQgZiIgIlxcJFxbMC05XF0rID0gOSIKKyBnZGJf dGVzdCAicHJpbnQgaSIgIlxcJFxbMC05XF0rID0gNCIKKyAKKy0jIFRPRE86IHRoaXMgbmVlZHMg bW9yZSB3b3JrIGJlZm9yZSBhY3R1YWxseSBkZXBsb3lpbmcgaXQuCistIyBTbyBiYWlsIG91dCBo ZXJlLgorLQorLWlmIHsgWyB0ZXN0X2NvbXBpbGVyX2luZm8gZ2NjLSpdIH0gdGhlbiB7IGNvbnRp bnVlIH0KKy0KKyBnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgYWRkPGludD4oMiwyKSIgInByaW50 IGFkZDxpbnQ+KDIsMikiIHsKKyAgICAgLXJlICJcXCRcWzAtOVxdKyA9IDRcclxuJGdkYl9wcm9t cHQgJCIgeworIAlwYXNzICJwcmludCBhZGQ8aW50PigyLDIpIgorZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL2V4cGFuZC1zYWxzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2V4 cGFuZC1zYWxzLmV4cAoraW5kZXggMjVlYzRhOS4uZTRmZDU5YiAxMDA2NDQKKy0tLSBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL2V4cGFuZC1zYWxzLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvZXhwYW5kLXNhbHMuZXhwCitAQCAtNDYsNyArNDYsNyBAQCBnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAiY2FsbGVyIiAiLipjYWxsZXItbGluZS4qIgorIAorICMgVGVzdCBHREIgY2F1Z2h0 IHRoaXMgcmV0dXJuIGNhbGwgYW5kIG5vdCB0aGUgbmV4dCBvbmUgdGhyb3VnaCBCOjpCKCkKKyBn ZGJfdGVzdCAiYnQiIFwKKy0JICIjMCBcW15cclxuXF0qIEEgXFteXHJcblxdKlxyXG4jMSBcW15c clxuXF0qIG1haW4gXFteXHJcblxdKiIgXAorKwkgIiMwIFxbXlxyXG5cXSogKEE6Oik/QSBcW15c clxuXF0qXHJcbiMxIFxbXlxyXG5cXSogbWFpbiBcW15cclxuXF0qIiBcCisgCSAiYnQgZnJvbSBB IgorIAorIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJuZXh0IGNhbGxlciBmdW5jIiAiLipm dW5jLWxpbmUuKiIKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmNj IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5jYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQK IGluZGV4IDAwMDAwMDAuLjc4M2M5NjIKQEAgLTE2MzE1LDI1ICsxODY5OSwyODQ0IEBAIGluZGV4 IDAwMDAwMDAuLmVlOWFlZmYKICsgICIuKm5leHRfY2FzZXMudW50aWwgKCkuKiIgXAogKyAgIm5l eHQgcGFzdCBjYXRjaCA2IgogKwotK2dkYl90ZXN0ICJzdGVwIiBcCi0rICAiLipmdW5jdGlvbjEg KCkuKiIgXAotKyAgInN0ZXAgaW50byB1bnRpbCIKKytnZGJfdGVzdCAic3RlcCIgXAorKyAgIi4q ZnVuY3Rpb24xICgpLioiIFwKKysgICJzdGVwIGludG8gdW50aWwiCisrCisrZ2RiX3Rlc3QgInVu dGlsICRsaW5lIiBcCisrICAiLipjYXRjaCAoLi4uKS4qIiBcCisrICAidW50aWwtb3Zlci10aHJv dyIKKysKKytnZGJfdGVzdCAibmV4dCIgXAorKyAgIi4qbmV4dF9jYXNlcy51bnRpbCAoKS4qIiBc CisrICAibmV4dCBwYXN0IGNhdGNoIDciCisrCisrZ2RiX3Rlc3QgInN0ZXAiIFwKKysgICIuKmZ1 bmN0aW9uMSAoKS4qIiBcCisrICAic3RlcCBpbnRvIHVudGlsLCBmb3IgYWR2YW5jZSIKKysKKytn ZGJfdGVzdCAiYWR2YW5jZSAkbGluZSIgXAorKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAorKyAgImFk dmFuY2Utb3Zlci10aHJvdyIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9tZW1i ZXItcHRyLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbWVtYmVyLXB0ci5jYworaW5kZXggZmZm ZmI0Yy4uYjQwNmE1OSAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL21lbWJlci1w dHIuY2MKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL21lbWJlci1wdHIuY2MKK0BAIC0xMzgs NiArMTM4LDcgQEAgY2xhc3MgRGlhbW9uZCA6IHB1YmxpYyBQYWRkaW5nLCBwdWJsaWMgTGVmdCwg cHVibGljIFJpZ2h0CisgeworIHB1YmxpYzoKKyAgIHZpcnR1YWwgaW50IHZnZXRfYmFzZSAoKTsK KysgIGludCAoKmZ1bmNfcHRyKSAoaW50KTsKKyB9OworIAorIGludCBEaWFtb25kOjp2Z2V0X2Jh c2UgKCkKK0BAIC0xNDUsNiArMTQ2LDEyIEBAIGludCBEaWFtb25kOjp2Z2V0X2Jhc2UgKCkKKyAg IHJldHVybiB0aGlzLT5MZWZ0Ojp4ICsgMjAwMDsKKyB9CisgCisraW50CisrZnVuYyAoaW50IHgp CisreworKyAgcmV0dXJuIDE5ICsgeDsKKyt9CisrCisgaW50IG1haW4gKCkKKyB7CisgICBBIGE7 CitAQCAtMTYyLDYgKzE2OSw3IEBAIGludCBtYWluICgpCisgICBpbnQgKERpYW1vbmQ6OipyaWdo dF92cG1mKSAoKTsKKyAgIGludCAoQmFzZTo6KmJhc2VfdnBtZikgKCk7CisgICBpbnQgRGlhbW9u ZDo6KmRpYW1vbmRfcG1pOworKyAgaW50ICgqIERpYW1vbmQ6OipkaWFtb25kX3BmdW5jX3B0cikg KGludCk7CisgCisgICBQTUkgbnVsbF9wbWk7CisgICBQTUYgbnVsbF9wbWY7CitAQCAtMTc5LDYg KzE4Nyw3IEBAIGludCBtYWluICgpCisgCisgICBkaWFtb25kLkxlZnQ6OnggPSA3NzsKKyAgIGRp YW1vbmQuUmlnaHQ6OnggPSA4ODsKKysgIGRpYW1vbmQuZnVuY19wdHIgPSBmdW5jOworIAorICAg LyogU29tZSB2YWxpZCBwb2ludGVyIHRvIG1lbWJlcnMgZnJvbSBhIGJhc2UgY2xhc3MuICAqLwor ICAgbGVmdF9wbWYgPSAoaW50IChEaWFtb25kOjoqKSAoKSkgKGludCAoTGVmdDo6KikgKCkpICgm QmFzZTo6Z2V0X3gpOworQEAgLTE5MywxMSArMjAyLDE5IEBAIGludCBtYWluICgpCisgICAvKiBB IHBvaW50ZXIgdG8gZGF0YSBtZW1iZXIgZnJvbSBhIGJhc2UgY2xhc3MuICAqLworICAgZGlhbW9u ZF9wbWkgPSAoaW50IERpYW1vbmQ6OiopIChpbnQgTGVmdDo6KikgJkJhc2U6Ong7CisgCisrICAv KiBBIHBvaW50ZXIgdG8gZGF0YSBtZW1iZXIsIHdoZXJlIHRoZSBtZW1iZXIgaXMgaXRzZWxmIGEg cG9pbnRlciB0bworKyAgICAgYSBmdW5jdGlvbi4gICovCisrICBkaWFtb25kX3BmdW5jX3B0ciA9 IChpbnQgKCogRGlhbW9uZDo6KikgKGludCkpICZEaWFtb25kOjpmdW5jX3B0cjsKKysKKyAgIG51 bGxfcG1pID0gTlVMTDsKKyAgIG51bGxfcG1mID0gTlVMTDsKKyAKKyAgIHBtaSA9IE5VTEw7IC8q IEJyZWFrcG9pbnQgMSBoZXJlLiAgKi8KKyAKKysgIC8vIEludmFsaWQgKHVzZXMgZGlhbW9uZF9w ZnVuY19wdHIgYXMgYSBmdW5jdGlvbik6CisrICAvLyBkaWFtb25kLipkaWFtb25kX3BmdW5jX3B0 ciAoMjApOworKyAgKGRpYW1vbmQuKmRpYW1vbmRfcGZ1bmNfcHRyKSAoMjApOworKworICAgayA9 IChhLipwbWYpKDMpOworIAorICAgcG1pID0gJkE6OmpqOworZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL21lbWJlci1wdHIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbWVtYmVy LXB0ci5leHAKK2luZGV4IDY4MzJmM2IuLmJhZjA4ZDcgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9tZW1iZXItcHRyLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbWVt YmVyLXB0ci5leHAKK0BAIC0zOTAsNiArMzkwLDMzIEBAIGdkYl90ZXN0X211bHRpcGxlICJwcmlu dCAoKGludCkgcG1pKSA9PSAoKGNoYXIgKikgJmEuaiAtIChjaGFyICopICYgYSkiICRuYW1lIHsK KyAgICAgfQorIH0KKyAKKysjIENoZWNrIHBvaW50ZXJzIHRvIGRhdGEgbWVtYmVycywgd2hpY2gg YXJlIHRoZW1zZWx2ZXMgcG9pbnRlcnMgdG8KKysjIGZ1bmN0aW9ucy4gIFRoZXNlIGJlaGF2ZSBs aWtlIGRhdGEgbWVtYmVycywgbm90IGxpa2UgcG9pbnRlcnMgdG8KKysjIG1lbWJlciBmdW5jdGlv bnMuCisrCisrZ2RiX3Rlc3QgInB0eXBlIGRpYW1vbmRfcGZ1bmNfcHRyIiBcCisrICAgICJ0eXBl ID0gaW50IFxcKFxcKkRpYW1vbmQ6OlxcKlxcKVxcKGludFxcKSIKKysKKytnZGJfdGVzdCAicHR5 cGUgZGlhbW9uZC4qZGlhbW9uZF9wZnVuY19wdHIiIFwKKysgICAgInR5cGUgPSBpbnQgXFwoXFwq XFwpXFwoaW50XFwpIgorKworKyMgVGhpcyBvbmUgaXMgaW52YWxpZDsgKCkgYmluZHMgbW9yZSB0 aWdodGx5IHRoYW4gLiosIHNvIGl0IHRyaWVzIHRvCisrIyBjYWxsIHRoZSBtZW1iZXIgcG9pbnRl ciBhcyBhIG5vcm1hbCBwb2ludGVyLXRvLWZ1bmN0aW9uLgorKworK2dkYl90ZXN0ICJwcmludCBk aWFtb25kLipkaWFtb25kX3BmdW5jX3B0ciAoMjApIiBcCisrICAgICJJbnZhbGlkIGRhdGEgdHlw ZSBmb3IgZnVuY3Rpb24gdG8gYmUgY2FsbGVkLiIKKysKKysjIFdpdGggcGFyZW50aGVzZXMsIGl0 IGlzIHZhbGlkLgorKworK2dkYl90ZXN0ICJwcmludCAoZGlhbW9uZC4qZGlhbW9uZF9wZnVuY19w dHIpICgyMCkiIFwKKysgICAgIiR2aG4gPSAzOSIKKysKKysjIE1ha2Ugc3VyZSB0aGF0IHdlIGRv IG5vdCBpbnRlcnByZXQgdGhpcyBhcyBlaXRoZXIgYSBtZW1iZXIgcG9pbnRlcgorKyMgY2FsbCBv ciBhIG1lbWJlciBmdW5jdGlvbiBjYWxsLgorKworK2dkYl90ZXN0ICJwcmludCBkaWFtb25kLmZ1 bmNfcHRyICgyMCkiIFwKKysgICAgIiR2aG4gPSAzOSIKKysKKyAjID09PT09PT09PT09PT09PT09 PT09PT09PT09CisgIyBwb2ludGVyIHRvIG1lbWJlciBmdW5jdGlvbgorICMgPT09PT09PT09PT09 PT09PT09PT09PT09PT0KK0BAIC00MjAsNyArNDQ3LDcgQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgInB0 eXBlIHBtZiIgJG5hbWUgeworIAorIHNldCBuYW1lICJwcmludCBwbWYiCisgZ2RiX3Rlc3RfbXVs dGlwbGUgInByaW50IHBtZiIgJG5hbWUgeworLSAgICAtcmUgIiR2aG4gPSAkaGV4IDxBOjpiYXJc XChpbnRcXCk+XHJcbiRnZGJfcHJvbXB0ICQiIHsKKysgICAgLXJlICIkdmhuID0gXFwoaW50IFxc KEE6OlxcKlxcKVxcKEEgXFwqLCBpbnRcXClcXCkgJGhleCA8QTo6YmFyXFwoaW50XFwpPlxyXG4k Z2RiX3Byb21wdCAkIiB7CisgCXBhc3MgJG5hbWUKKyAgICAgfQorICAgICAtcmUgIiR2aG4gPSAu Km5vdCBzdXBwb3J0ZWQgd2l0aCBIUCBhQ0MuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CitAQCAtNjA4 LDYgKzYzNSw5IEBAIGdkYl90ZXN0X211bHRpcGxlICJwcmludCAoYS4qcG1mKSgzKSIgJG5hbWUg eworICAgICB9CisgfQorIAorK2dkYl90ZXN0ICJwdHlwZSBhLipwbWYiICJ0eXBlID0gaW50IFxc KEEgXFwqLCBpbnRcXCkiCisrZ2RiX3Rlc3QgInB0eXBlIChhLipwbWYpKDMpIiAidHlwZSA9IGlu dCIKKysKKyAjIFByaW50IG91dCBhIHBvaW50ZXIgdG8gZGF0YSBtZW1iZXIgd2hpY2ggcmVxdWly ZXMgbG9va2luZyBpbnRvCisgIyBhIGJhc2UgY2xhc3MuCisgZ2RiX3Rlc3QgInByaW50IGRpYW1v bmRfcG1pIiAiJHZobiA9ICZCYXNlOjp4IgorQEAgLTY1OCw1ICs2ODgsNSBAQCBnZGJfdGVzdCAi cHJpbnQgbnVsbF9wbWkgPSAmQTo6aiIgIiR2aG4gPSAmQTo6aiIKKyBnZGJfdGVzdCAicHJpbnQg bnVsbF9wbWkgPSAwIiAiJHZobiA9IE5VTEwiCisgCisgZ2RiX3Rlc3QgInByaW50IG51bGxfcG1m IiAiJHZobiA9IE5VTEwiCistZ2RiX3Rlc3QgInByaW50IG51bGxfcG1mID0gJkE6OmZvbyIgIiR2 aG4gPSAkaGV4IDxBOjpmb28gP1xcKGludFxcKT4iCisrZ2RiX3Rlc3QgInByaW50IG51bGxfcG1m ID0gJkE6OmZvbyIgIiR2aG4gPSBcXChpbnQgXFwoQTo6XFwqXFwpXFwoQSBcXCosIGludFxcKVxc KSAkaGV4IDxBOjpmb28gP1xcKGludFxcKT4iCisgZ2RiX3Rlc3QgInByaW50IG51bGxfcG1mID0g MCIgIiR2aG4gPSBOVUxMIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVz cGFjZS1tdWx0aXBsZS1pbXBvcnRzLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNl LW11bHRpcGxlLWltcG9ydHMuY2MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw Li42YjE4MGQ2CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1l c3BhY2UtbXVsdGlwbGUtaW1wb3J0cy5jYworQEAgLTAsMCArMSwyMCBAQAorK25hbWVzcGFjZSBB IHsKKysgIGludCB4ID0gMTE7CisrICBuYW1lc3BhY2V7CisrICAgIGludCB4eCA9IDIyOworKyAg fQorK30KKysKKyt1c2luZyBuYW1lc3BhY2UgQTsKKysKKytuYW1lc3BhY2V7CisrICBpbnQgeHh4 ID0gMzM7CisrfTsKKysKKytpbnQgbWFpbigpCisreworKyAgeDsKKysgIHh4OworKyAgeHh4Owor KyAgcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVz cGFjZS1tdWx0aXBsZS1pbXBvcnRzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFj ZS1tdWx0aXBsZS1pbXBvcnRzLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAw MDAuLmU0YmI5ZjgKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25h bWVzcGFjZS1tdWx0aXBsZS1pbXBvcnRzLmV4cAorQEAgLTAsMCArMSw0OSBAQAorKyMgQ29weXJp Z2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorKworK2lmICR0cmFjZWxldmVsIHRoZW4geworKyAgICBzdHJhY2Ug JHRyYWNlbGV2ZWwKKyt9CisrCisrc2V0IHBybXNfaWQgMAorK3NldCBidWdfaWQgMAorKworK3Nl dCB0ZXN0ZmlsZSBuYW1lc3BhY2UtbXVsdGlwbGUtaW1wb3J0cworK3NldCBzcmNmaWxlICR7dGVz dGZpbGV9LmNjCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQor K2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHti aW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgYysrfV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVk ICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKKysgICAgcmV0dXJuIC0xCisrfQorKwor KyMgR2V0IHRoaW5ncyBzdGFydGVkLgorKworK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3Jl aW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxlfQorKwor KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyB0ZXN0IHBy aW50aW5nIG9mIG5hbWVzcGFjZSBpbXBvcnRlZCB3aXRoaW4KKysjIHRoZSBmdW5jdGlvbi4KKysK KytpZiAhW3J1bnRvX21haW5dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBi cmVha3BvaW50IG1haW4iCisrICAgIGNvbnRpbnVlCisrfQorKworK2dkYl90ZXN0ICJwcmludCB4 IiAiXFwkXFswLTlcXS4qID0gMTEiCisrZ2RiX3Rlc3QgInByaW50IHh4IiAiXFwkXFswLTlcXS4q ID0gMjIiCisrZ2RiX3Rlc3QgInByaW50IHh4eCIgIlxcJFxbMC05XF0uKiA9IDMzIgorZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1uZXN0ZWQtaW1wb3J0cy5jYyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1uZXN0ZWQtaW1wb3J0cy5jYworbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjk3MjNmODcKKy0tLSAvZGV2L251bGwKKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1uZXN0ZWQtaW1wb3J0cy5jYworQEAg LTAsMCArMSwzNiBAQAorK25hbWVzcGFjZSBBCisreworKyAgbmFtZXNwYWNlIEIKKysgIHsKKysg ICAgaW50IGFiID0gMTE7CisrICB9CisrfQorKworK25hbWVzcGFjZSBDCisreworKyAgbmFtZXNw YWNlIEQKKysgIHsKKysgICAgdXNpbmcgbmFtZXNwYWNlIEE6OkI7CisrCisrICAgIGludAorKyAg ICBzZWNvbmQoKQorKyAgICB7CisrICAgICAgYWI7CisrICAgICAgcmV0dXJuIDA7CisrICAgIH0K KysgIH0KKysKKysgIGludAorKyAgZmlyc3QoKQorKyAgeworKyAgICAvL2FiOworKyAgICByZXR1 cm4gRDo6c2Vjb25kKCk7CisrICB9CisrfQorKworK2ludAorK21haW4oKQorK3sKKysgIC8vYWI7 CisrICByZXR1cm4gQzo6Zmlyc3QoKTsKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3AvbmFtZXNwYWNlLW5lc3RlZC1pbXBvcnRzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L25hbWVzcGFjZS1uZXN0ZWQtaW1wb3J0cy5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwLi5kMjc5ZmI1CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMuZXhwCitAQCAtMCwwICsxLDU3IEBACisrIyBD b3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisraWYgJHRyYWNlbGV2ZWwgdGhlbiB7CisrICAgIHN0 cmFjZSAkdHJhY2VsZXZlbAorK30KKysKKytzZXQgcHJtc19pZCAwCisrc2V0IGJ1Z19pZCAwCisr Cisrc2V0IHRlc3RmaWxlIG5hbWVzcGFjZS1uZXN0ZWQtaW1wb3J0cworK3NldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmNjCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxl fQorK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAi JHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgYysrfV0gIT0gIiIgfSB7CisrICAgIHVudGVz dGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKKysgICAgcmV0dXJuIC0xCisrfQor KworKyMgR2V0IHRoaW5ncyBzdGFydGVkLgorKworK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrZ2Ri X3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxlfQor KworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisraWYgIVty dW50b19tYWluXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2lu dCBtYWluIgorKyAgICBjb250aW51ZQorK30KKysKKytnZGJfdGVzdCAicHJpbnQgYWIiICJObyBz eW1ib2wgLiogaW4gY3VycmVudCBjb250ZXh0LiIKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworK2dkYl9icmVha3BvaW50IEM6OmZpcnN0CisrZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgIkM6OmZpcnN0IgorKworK2dkYl90ZXN0ICJwcmludCBhYiIg Ik5vIHN5bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQuIgorK2dkYl90ZXN0ICJwcmludCBDOjpE OjphYiIgIj0gMTEiCisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKytnZGJfYnJlYWtwb2ludCBDOjpEOjpzZWNvbmQKKytnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAiQzo6RDo6c2Vjb25kIgorKworK2dkYl90ZXN0ICJwcmludCBhYiIgIj0gMTEiCitk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLW5vLWltcG9ydHMuY2Mg Yi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Utbm8taW1wb3J0cy5jYworbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmQxYzY4YWIKKy0tLSAvZGV2L251bGwKKysrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1uby1pbXBvcnRzLmNjCitAQCAtMCwwICsx LDM3IEBACisrCisrbmFtZXNwYWNlIEEKKyt7CisrICBpbnQgX2EgPSAxMTsKKysKKysgIG5hbWVz cGFjZSBCeworKworKyAgICBpbnQgYWIgPSAyMjsKKysKKysgICAgbmFtZXNwYWNlIEN7CisrCisr ICAgICAgaW50IGFiYyA9IDMzOworKworKyAgICAgIGludCBzZWNvbmQoKXsKKysgICAgICAgIHJl dHVybiAwOworKyAgICAgIH0KKysKKysgICAgfQorKworKyAgICBpbnQgZmlyc3QoKXsKKysgICAg ICBfYTsKKysgICAgICBhYjsKKysgICAgICBDOjphYmM7CisrICAgICAgcmV0dXJuIEM6OnNlY29u ZCgpOworKyAgICB9CisrICB9CisrfQorKworKworK2ludAorK21haW4oKQorK3sKKysgIEE6Ol9h OworKyAgQTo6Qjo6YWI7CisrICBBOjpCOjpDOjphYmM7CisrICByZXR1cm4gQTo6Qjo6Zmlyc3Qo KTsKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLW5vLWlt cG9ydHMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLW5vLWltcG9ydHMuZXhw CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZTUwODEwMworLS0tIC9kZXYv bnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLW5vLWltcG9ydHMuZXhw CitAQCAtMCwwICsxLDc2IEBACisrIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisraWYgJHRy YWNlbGV2ZWwgdGhlbiB7CisrICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorK30KKysKKytzZXQgcHJt c19pZCAwCisrc2V0IGJ1Z19pZCAwCisrCisrc2V0IHRlc3RmaWxlIG5hbWVzcGFjZS1uby1pbXBv cnRzCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uY2MKKytzZXQgYmluZmlsZSAke29iamRpcn0v JHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisraWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtz dWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBjKyt9XSAh PSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgor KyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBHZXQgdGhpbmdzIHN0YXJ0ZWQuCisrCisrZ2RiX2V4 aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytn ZGJfbG9hZCAke2JpbmZpbGV9CisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKytpZiAhW3J1bnRvX21haW5dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxk bid0IHJ1biB0byBicmVha3BvaW50IG1haW4iCisrICAgIGNvbnRpbnVlCisrfQorKworK2dkYl90 ZXN0ICJwcmludCBBOjpfYSIgIj0gMTEiCisrZ2RiX3Rlc3QgInByaW50IEE6OkI6OmFiIiAiPSAy MiIKKytnZGJfdGVzdCAicHJpbnQgQTo6Qjo6Qzo6YWJjIiAiPSAzMyIKKysKKytnZGJfdGVzdCAi cHJpbnQgX2EiICJObyBzeW1ib2wgLiogaW4gY3VycmVudCBjb250ZXh0LiIKKytnZGJfdGVzdCAi cHJpbnQgYWIiICJObyBzeW1ib2wgLiogaW4gY3VycmVudCBjb250ZXh0LiIKKytnZGJfdGVzdCAi cHJpbnQgYWJjIiAiTm8gc3ltYm9sIC4qIGluIGN1cnJlbnQgY29udGV4dC4iCisrCisrIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKytnZGJfYnJlYWtwb2ludCBB OjpCOjpmaXJzdAorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJBOjpCOjpmaXJzdCIKKysK KytnZGJfdGVzdCAicHJpbnQgQTo6X2EiICI9IDExIgorK2dkYl90ZXN0ICJwcmludCBBOjpCOjph YiIgIj0gMjIiCisrZ2RiX3Rlc3QgInByaW50IEE6OkI6OkM6OmFiYyIgIj0gMzMiCisrCisrZ2Ri X3Rlc3QgInByaW50IF9hIiAiPSAxMSIKKytnZGJfdGVzdCAicHJpbnQgYWIiICI9IDIyIgorK2dk Yl90ZXN0ICJwcmludCBDOjphYmMiICI9IDMzIgorKworK2dkYl90ZXN0ICJwcmludCBhYmMiICJO byBzeW1ib2wgLiogaW4gY3VycmVudCBjb250ZXh0LiIKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworK2dkYl9icmVha3BvaW50IEE6OkI6OkM6OnNlY29u ZAorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJBOjpCOjpDOjpzZWNvbmQiCisrCisrZ2Ri X3Rlc3QgInByaW50IEE6Ol9hIiAiPSAxMSIKKytnZGJfdGVzdCAicHJpbnQgQTo6Qjo6YWIiICI9 IDIyIgorK2dkYl90ZXN0ICJwcmludCBBOjpCOjpDOjphYmMiICI9IDMzIgorKworK2dkYl90ZXN0 ICJwcmludCBfYSIgIj0gMTEiCisrZ2RiX3Rlc3QgInByaW50IGFiIiAiPSAyMiIKKytnZGJfdGVz dCAicHJpbnQgYWJjIiAiPSAzMyIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9u YW1lc3BhY2UtcmVjdXJzaXZlLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXJl Y3Vyc2l2ZS5jYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjQ2ZDRjMTgK Ky0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1yZWN1 cnNpdmUuY2MKK0BAIC0wLDAgKzEsNDcgQEAKKytuYW1lc3BhY2UgQXsKKysgIGludCBheCA9IDk7 CisrfQorKworK25hbWVzcGFjZSBCeworKyAgdXNpbmcgbmFtZXNwYWNlIEE7CisrfQorKworK25h bWVzcGFjZSBDeworKyAgdXNpbmcgbmFtZXNwYWNlIEI7CisrfQorKworK3VzaW5nIG5hbWVzcGFj ZSBDOworKworKy8vLS0tLS0tLS0tLS0tLS0tCisrbmFtZXNwYWNlIER7CisrICB1c2luZyBuYW1l c3BhY2UgRDsKKysgIGludCBkeCA9IDk5OworK30KKyt1c2luZyBuYW1lc3BhY2UgRDsKKysKKysv Ly0tLS0tLS0tLS0tLS0tLQorK25hbWVzcGFjZXsKKysgIG5hbWVzcGFjZXsKKysgICAgaW50IHh4 ID0gOTk5OworKyAgfQorK30KKysKKysvLy0tLS0tLS0tLS0tLS0tLQorK25hbWVzcGFjZSBFewor KyAgaW50IGV4ID0gOTk5OTsKKyt9CisrCisrbmFtZXNwYWNlIEZ7CisrICBuYW1lc3BhY2UgRkUg PSBFOworK30KKysKKytuYW1lc3BhY2UgR3sKKysgIG5hbWVzcGFjZSBHRiA9IEY7CisrfQorKwor Ky8vLS0tLS0tLS0tLS0tLS0tLQorK2ludCBtYWluKCl7CisrICB1c2luZyBuYW1lc3BhY2UgRDsK KysgIG5hbWVzcGFjZSBHWCA9IEc7CisrICByZXR1cm4gYXggKyBkeCArIHh4ICsgRzo6R0Y6OkZF OjpleDsKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXJl Y3Vyc2l2ZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtcmVjdXJzaXZlLmV4 cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjU1NDM3NTcKKy0tLSAvZGV2 L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1yZWN1cnNpdmUuZXhw CitAQCAtMCwwICsxLDc1IEBACisrIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisraWYgJHRy YWNlbGV2ZWwgdGhlbiB7CisrICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorK30KKysKKytzZXQgcHJt c19pZCAwCisrc2V0IGJ1Z19pZCAwCisrCisrc2V0IHRlc3RmaWxlIG5hbWVzcGFjZS1yZWN1cnNp dmUKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jYworK3NldCBiaW5maWxlICR7b2JqZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1 YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31dICE9 ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCisr ICAgIHJldHVybiAtMQorK30KKysKKytpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0g eworKyAgICByZXR1cm4gLTE7CisrfQorKworKworKyMgR2V0IHRoaW5ncyBzdGFydGVkLgorKwor K2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3Vi ZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxlfQorKworK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Cisr ICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgbWFpbiIKKysgICAgY29udGlu dWUKKyt9CisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KysjIHRlc3QgcHJpbnRpbmcgZnJvbSBuYW1lc3BhY2UgaW1wb3J0ZWQgaW50bworKyMgaW1wb3J0 ZWQgbmFtZXNwYWNlCisrCisrZ2RiX3Rlc3QgInByaW50IGF4IiAiPSA5IgorKworKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyB0ZXN0IHRoYXQgZ2RiIGNh biBwcmludCB3aXRob3V0IGZhbGxpbmcgCisrIyBpbnRvIHNlYXJjaCBsb29wCisrCisrZ2RiX3Rl c3QgInByaW50IGR4IiAiPSA5OSIKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworKyMgdGVzdCBwcmludGluZyBmcm9tIG5hbWVzcGFjZSBpbXBvcnRlZCBp bnRvCisrIyBpbXBvcnRlZCBuYW1lc3BhY2Ugd2hlcmUgaW1wb3J0cyBhcmUgaW1wbGljaXQKKysj IGFub255bW91cyBuYW1lc3BhY2UgaW1wb3J0cy4KKysKKytnZGJfdGVzdCAicHJpbnQgeHgiICI9 IDk5OSIKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor KyMgVGVzdCBwcmludGluZyB1c2luZyByZWN1cnNpdmUgbmFtZXNwYWNlCisrIyBhbGlhc2VzLgor KworK3NldHVwX2tmYWlsICJnZGIvMTA1NDEiICIqLSotKiIKKytnZGJfdGVzdCAicHR5cGUgRzo6 R0YiICI9IG5hbWVzcGFjZSBGIgorKworK3NldHVwX2tmYWlsICJnZGIvMTA1NDEiICIqLSotKiIK KytnZGJfdGVzdCAicHJpbnQgRzo6R0Y6OkZFOjpleCIgIj0gOTk5OSIKK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Utc3RyZXNzLWRlY2xhcmF0aW9ucy5jYyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRpb25zLmNjCituZXcg ZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMTczZTQ5YgorLS0tIC9kZXYvbnVsbAor KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlvbnMu Y2MKK0BAIC0wLDAgKzEsOTMgQEAKKytpbnQgYTsKKytpbnQgYjsKKytpbnQgYzsKKytpbnQgZDsK KytpbnQgZTsKKytpbnQgZjsKKytpbnQgZzsKKytpbnQgaDsKKytpbnQgaTsKKytpbnQgajsKKytp bnQgazsKKytpbnQgbDsKKytpbnQgbTsKKytpbnQgbjsKKytpbnQgbzsKKytpbnQgcDsKKytpbnQg cTsKKytpbnQgcjsKKytpbnQgczsKKytpbnQgdDsKKytpbnQgdTsKKytpbnQgdjsKKytpbnQgdzsK KytpbnQgeDsKKytpbnQgeTsKKytpbnQgejsKKysKKytuYW1lc3BhY2UgQQorK3sKKysgIGludCB4 eXo7CisrCisrICB1c2luZyA6OmE7CisrICB1c2luZyA6OmI7CisrICB1c2luZyA6OmM7CisrICB1 c2luZyA6OmQ7CisrICB1c2luZyA6OmU7CisrICB1c2luZyA6OmY7CisrICB1c2luZyA6Omc7Cisr ICB1c2luZyA6Omg7CisrICB1c2luZyA6Omk7CisrICB1c2luZyA6Omo7CisrICB1c2luZyA6Oms7 CisrICB1c2luZyA6Omw7CisrICB1c2luZyA6Om07CisrICB1c2luZyA6Om47CisrICB1c2luZyA6 Om87CisrICB1c2luZyA6OnA7CisrICB1c2luZyA6OnE7CisrICB1c2luZyA6OnI7CisrICB1c2lu ZyA6OnM7CisrICB1c2luZyA6OnQ7CisrICB1c2luZyA6OnU7CisrICB1c2luZyA6OnY7CisrICB1 c2luZyA6Onc7CisrICB1c2luZyA6Ong7CisrICB1c2luZyA6Onk7CisrICB1c2luZyA6Ono7Cisr CisrfQorKworK3VzaW5nIEE6OmE7CisrdXNpbmcgQTo6YjsKKyt1c2luZyBBOjpjOworK3VzaW5n IEE6OmQ7CisrdXNpbmcgQTo6ZTsKKyt1c2luZyBBOjpmOworK3VzaW5nIEE6Omc7CisrdXNpbmcg QTo6aDsKKyt1c2luZyBBOjppOworK3VzaW5nIEE6Omo7CisrdXNpbmcgQTo6azsKKyt1c2luZyBB OjpsOworK3VzaW5nIEE6Om07CisrdXNpbmcgQTo6bjsKKyt1c2luZyBBOjpvOworK3VzaW5nIEE6 OnA7CisrdXNpbmcgQTo6cTsKKyt1c2luZyBBOjpyOworK3VzaW5nIEE6OnM7CisrdXNpbmcgQTo6 dDsKKyt1c2luZyBBOjp1OworK3VzaW5nIEE6OnY7CisrdXNpbmcgQTo6dzsKKyt1c2luZyBBOjp4 OworK3VzaW5nIEE6Onk7CisrdXNpbmcgQTo6ejsKKysKKyt1c2luZyBuYW1lc3BhY2UgQTsKKysK KytpbnQgbWFpbiAoKQorK3sKKysgIHJldHVybiAwOworK30KK1wgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJl c3MtZGVjbGFyYXRpb25zLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJl c3MtZGVjbGFyYXRpb25zLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAu LmYyMmExNGUKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVz cGFjZS1zdHJlc3MtZGVjbGFyYXRpb25zLmV4cAorQEAgLTAsMCArMSw1MCBAQAorKyMgQ29weXJp Z2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorKworK2lmICR0cmFjZWxldmVsIHRoZW4geworKyAgICBzdHJhY2Ug JHRyYWNlbGV2ZWwKKyt9CisrCisrc2V0IHBybXNfaWQgMAorK3NldCBidWdfaWQgMAorKworK3Nl dCB0ZXN0ZmlsZSBuYW1lc3BhY2Utc3RyZXNzLWRlY2xhcmF0aW9ucworK3NldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmNjCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxl fQorK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAi JHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgYysrfV0gIT0gIiIgfSB7CisrICAgIHVudGVz dGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKKysgICAgcmV0dXJuIC0xCisrfQor KworK2lmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGV9XSB7CisrICAgIHJldHVybiAtMTsK Kyt9CisrCisrIyBHZXQgdGhpbmdzIHN0YXJ0ZWQuCisrCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQK KytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2JpbmZp bGV9CisrCisraWYgIVtydW50b19tYWluXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBy dW4gdG8gYnJlYWtwb2ludCBtYWluIgorKyAgICBjb250aW51ZQorK30KKysKKysjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgVGVzdCB0aGF0IHRoZSBzZWFy Y2ggY2FuIGZhaWwgZWZmaWNpZW50bHkgCisrCisrZ2RiX3Rlc3QgInByaW50IGZha2V4IiAiTm8g c3ltYm9sIFwiZmFrZXhcIiBpbiBjdXJyZW50IGNvbnRleHQuIgorZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5j cC9uYW1lc3BhY2Utc3RyZXNzLmNjCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAw MC4uZjM0MDgzZQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFt ZXNwYWNlLXN0cmVzcy5jYworQEAgLTAsMCArMSw2MCBAQAorKworK25hbWVzcGFjZSBBeyBpbnQg eDsgfQorK25hbWVzcGFjZSBCeyBpbnQgeDsgfQorK25hbWVzcGFjZSBDeyBpbnQgeDsgfQorK25h bWVzcGFjZSBEeyBpbnQgeDsgfQorK25hbWVzcGFjZSBFeyBpbnQgeDsgfQorK25hbWVzcGFjZSBG eyBpbnQgeDsgfQorK25hbWVzcGFjZSBHeyBpbnQgeDsgfQorK25hbWVzcGFjZSBIeyBpbnQgeDsg fQorK25hbWVzcGFjZSBJeyBpbnQgeDsgfQorK25hbWVzcGFjZSBKeyBpbnQgeDsgfQorK25hbWVz cGFjZSBLeyBpbnQgeDsgfQorK25hbWVzcGFjZSBMeyBpbnQgeDsgfQorK25hbWVzcGFjZSBNeyBp bnQgeDsgfQorK25hbWVzcGFjZSBOeyBpbnQgeDsgfQorK25hbWVzcGFjZSBPeyBpbnQgeDsgfQor K25hbWVzcGFjZSBQeyBpbnQgeDsgfQorK25hbWVzcGFjZSBReyBpbnQgeDsgfQorK25hbWVzcGFj ZSBSeyBpbnQgeDsgfQorK25hbWVzcGFjZSBTeyBpbnQgeDsgfQorK25hbWVzcGFjZSBUeyBpbnQg eDsgfQorK25hbWVzcGFjZSBVeyBpbnQgeDsgfQorK25hbWVzcGFjZSBWeyBpbnQgeDsgfQorK25h bWVzcGFjZSBXeyBpbnQgeDsgfQorK25hbWVzcGFjZSBYeyBpbnQgeDsgfQorK25hbWVzcGFjZSBZ eyBpbnQgeDsgfQorK25hbWVzcGFjZSBaeyBpbnQgeDsgfQorKworKworK2ludCBtYWluKCl7Cisr CisrICB1c2luZyBuYW1lc3BhY2UgQTsKKysgIHVzaW5nIG5hbWVzcGFjZSBCOworKyAgdXNpbmcg bmFtZXNwYWNlIEM7CisrICB1c2luZyBuYW1lc3BhY2UgRDsKKysgIHVzaW5nIG5hbWVzcGFjZSBF OworKyAgdXNpbmcgbmFtZXNwYWNlIEY7CisrICB1c2luZyBuYW1lc3BhY2UgRzsKKysgIHVzaW5n IG5hbWVzcGFjZSBIOworKyAgdXNpbmcgbmFtZXNwYWNlIEk7CisrICB1c2luZyBuYW1lc3BhY2Ug SjsKKysgIHVzaW5nIG5hbWVzcGFjZSBLOworKyAgdXNpbmcgbmFtZXNwYWNlIEw7CisrICB1c2lu ZyBuYW1lc3BhY2UgTTsKKysgIHVzaW5nIG5hbWVzcGFjZSBOOworKyAgdXNpbmcgbmFtZXNwYWNl IE87CisrICB1c2luZyBuYW1lc3BhY2UgUDsKKysgIHVzaW5nIG5hbWVzcGFjZSBROworKyAgdXNp bmcgbmFtZXNwYWNlIFI7CisrICB1c2luZyBuYW1lc3BhY2UgUzsKKysgIHVzaW5nIG5hbWVzcGFj ZSBUOworKyAgdXNpbmcgbmFtZXNwYWNlIFU7CisrICB1c2luZyBuYW1lc3BhY2UgVjsKKysgIHVz aW5nIG5hbWVzcGFjZSBXOworKyAgdXNpbmcgbmFtZXNwYWNlIFg7CisrICB1c2luZyBuYW1lc3Bh Y2UgWTsKKysgIHVzaW5nIG5hbWVzcGFjZSBaOworKworKyAgcmV0dXJuIDA7CisrfQorXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av bmFtZXNwYWNlLXN0cmVzcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Utc3Ry ZXNzLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjE4MDY1MjMKKy0t LSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3Mu ZXhwCitAQCAtMCwwICsxLDUwIEBACisrIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisraWYg JHRyYWNlbGV2ZWwgdGhlbiB7CisrICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorK30KKysKKytzZXQg cHJtc19pZCAwCisrc2V0IGJ1Z19pZCAwCisrCisrc2V0IHRlc3RmaWxlIG5hbWVzcGFjZS1zdHJl c3MKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jYworK3NldCBiaW5maWxlICR7b2JqZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1 YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31dICE9 ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCisr ICAgIHJldHVybiAtMQorK30KKysKKytpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0g eworKyAgICByZXR1cm4gLTE7CisrfQorKworKyMgR2V0IHRoaW5ncyBzdGFydGVkLgorKworK2dk Yl9leGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGly CisrZ2RiX2xvYWQgJHtiaW5maWxlfQorKworK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7CisrICAg IHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgbWFpbiIKKysgICAgY29udGludWUK Kyt9CisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysj IFRlc3QgdGhhdCB0aGUgc2VhcmNoIGNhbiBmYWlsIGVmZmljaWVudGx5IAorKworK2dkYl90ZXN0 ICJwcmludCB5IiAiTm8gc3ltYm9sIFwieVwiIGluIGN1cnJlbnQgY29udGV4dC4iCitkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmNjIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmNjCitpbmRleCA0Nzg2ZmQ1Li44ZmY1NjIyIDEw MDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmNjCisrKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtdXNpbmcuY2MKK0BAIC0xLDI2ICsxLDEy OSBAQAorK25hbWVzcGFjZSBNCisreworKyAgaW50IHggPSA5MTE7CisrfQorKworK25hbWVzcGFj ZSBOCisreworKyAgaW50IHggPSA5MTI7CisrfQorKworK2ludCBtYXJrZXIxMCAoKQorK3sKKysg IHVzaW5nIG5hbWVzcGFjZSBNOworKyAgaW50IHkgPSB4ICsgMTsgICAgICAgLy8gbWFya2VyMTAg c3RvcAorKyAgdXNpbmcgbmFtZXNwYWNlIE47CisrICByZXR1cm4geTsKKyt9CisrCisrbmFtZXNw YWNlIEoKKyt7CisrICBpbnQganggPSA0NDsKKyt9CisrCisrbmFtZXNwYWNlIEsKKyt7CisrICBp bnQKKysgIG1hcmtlcjkgKCkKKysgIHsKKysgICAgLy94OworKyAgICByZXR1cm4gbWFya2VyMTAg KCk7CisrICB9CisrfQorKworK25hbWVzcGFjZSBMCisreworKyAgdXNpbmcgbmFtZXNwYWNlIEo7 CisrICBpbnQKKysgIG1hcmtlcjggKCkKKysgIHsKKysgICAgang7CisrICAgIHJldHVybiBLOjpt YXJrZXI5ICgpOworKyAgfQorK30KKysKKytuYW1lc3BhY2UgRworK3sKKysgIG5hbWVzcGFjZSBI CisrICB7CisrICAgIGludCBnaHggPSA2OworKyAgfQorK30KKysKKytuYW1lc3BhY2UgSQorK3sg IAorKyAgaW50CisrICBtYXJrZXI3ICgpCisrICB7CisrICAgIHVzaW5nIG5hbWVzcGFjZSBHOjpI OworKyAgICBnaHg7CisrICAgIHJldHVybiBMOjptYXJrZXI4ICgpOworKyAgfQorK30KKysKKytu YW1lc3BhY2UgRQorK3sKKysgIG5hbWVzcGFjZSBGCisrICB7CisrICAgIGludCBlZnggPSA1Owor KyAgfQorK30KKysKKyt1c2luZyBuYW1lc3BhY2UgRTo6RjsKKytpbnQKKyttYXJrZXI2ICgpCisr eworKyAgZWZ4OworKyAgcmV0dXJuIEk6Om1hcmtlcjcgKCk7CisrfQorKworIG5hbWVzcGFjZSBB CisgeworICAgaW50IF9hID0gMTsKKyAgIGludCB4ID0gMjsKKyB9CisgCistaW50IG1hcmtlcjQo KXsKKy0JdXNpbmcgQTo6eDsKKy0JcmV0dXJuIDA7CisrbmFtZXNwYWNlIEMKKyt7CisrICBpbnQg Y2MgPSAzOworK30KKysKKytuYW1lc3BhY2UgRAorK3sKKysgIGludCBkeCA9IDQ7CisrfQorKwor K3VzaW5nIG5hbWVzcGFjZSBDOworK2ludAorK21hcmtlcjUgKCkKKyt7CisrICBjYzsKKysgIHJl dHVybiBtYXJrZXI2ICgpOworK30KKysKKytpbnQKKyttYXJrZXI0ICgpCisreworKyAgdXNpbmcg RDo6ZHg7CisrICByZXR1cm4gbWFya2VyNSAoKTsKKyB9CisgCistaW50IG1hcmtlcjMoKXsKKy0J cmV0dXJuIG1hcmtlcjQoKTsKKytpbnQKKyttYXJrZXIzICgpCisreworKyAgcmV0dXJuIG1hcmtl cjQgKCk7CisgfQorIAorLWludCBtYXJrZXIyKCkKKytpbnQKKyttYXJrZXIyICgpCisgeworICAg bmFtZXNwYWNlIEIgPSBBOworICAgQjo6X2E7CistICByZXR1cm4gbWFya2VyMygpOworKyAgcmV0 dXJuIG1hcmtlcjMgKCk7CisgfQorIAorLWludCBtYXJrZXIxKCkKKytpbnQKKyttYXJrZXIxICgp CisgeworICAgaW50IHRvdGFsID0gMDsKKyAgIHsKK0BAIC0yOSwxNyArMTMyLDE4IEBAIGludCBt YXJrZXIxKCkKKyAgICAgICB1c2luZyBuYW1lc3BhY2UgQTsKKyAgICAgICBpbnQgYyA9IDI7Cisg ICAgICAgeworLSAgICAgICAgaW50IGQgPSAzOworLSAgICAgICAgdG90YWwgPSBfYSArIGIgKyBj ICsgZCArIG1hcmtlcjIoKTsgLy8gbWFya2VyMSBzdG9wCisrCWludCBkID0gMzsKKysJdG90YWwg PSBfYSArIGIgKyBjICsgZCArIG1hcmtlcjIgKCk7IC8vIG1hcmtlcjEgc3RvcAorICAgICAgIH0K KyAgICAgfQorICAgfQorICAgcmV0dXJuIHRvdGFsOworIH0KKyAKKy1pbnQgbWFpbigpCisraW50 CisrbWFpbiAoKQorIHsKKyAgIHVzaW5nIG5hbWVzcGFjZSBBOworICAgX2E7CistICByZXR1cm4g bWFya2VyMSgpOworKyAgcmV0dXJuIG1hcmtlcjEgKCk7CisgfQorZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS11c2luZy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5j cC9uYW1lc3BhY2UtdXNpbmcuZXhwCitpbmRleCAzMTk1NTJiLi4wNjczMDg4IDEwMDY0NAorLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmV4cAorKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmV4cAorQEAgLTI4LDYgKzI4LDExIEBAIGlm ICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5m aWxlfSIgZXhlY3V0YWJsZSB7ZGViCisgICAgIHJldHVybiAtMQorIH0KKyAKKytpZiBbZ2V0X2Nv bXBpbGVyX2luZm8gJHtiaW5maWxlfV0geworKyAgICByZXR1cm4gLTE7CisrfQorKworKworICMg R2V0IHRoaW5ncyBzdGFydGVkLgorIAorIGdkYl9leGl0CitAQCAtNDYsNDIgKzUxLDE1NSBAQCBp ZiAhW3J1bnRvX21haW5dIHRoZW4geworIAorIGdkYl90ZXN0ICJwcmludCBfYSIgIj0gMSIKKyAK KysjIFRlc3QgdGhhdCBuYW1lcyBhcmUgbm90IHByaW50ZWQgd2hlbiB0aGV5IAorKyMgYXJlIG5v dCBpbXBvcnRlZAorKworK2dkYl9icmVha3BvaW50IG1hcmtlcjMKKytnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAibWFya2VyMyIKKysKKysjc2VuZF9nZGIgImJyZWFrIG1hcmtlcjNcbiIKKysj c2VuZF9nZGIgImNvbnRpbnVlXG4iCisrCisrZ2RiX3Rlc3QgInByaW50IF9hIiAiTm8gc3ltYm9s IFwiX2FcIiBpbiBjdXJyZW50IGNvbnRleHQuIiAiUHJpbnQgX2Egd2l0aG91dCBpbXBvcnQiCisr CisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRz dWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CisrCisrCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAjIHRlc3QgcHJpbnRpbmcgb2YgbmFtZXNwYWNlIGlt cG9ydGVkIGludG8gCisgIyBhIHNjb3BlIGNvbnRhaW5pbmcgdGhlIHBjLgorIAorK2lmICFbcnVu dG9fbWFpbl0gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQg bWFpbiIKKysgICAgY29udGludWUKKyt9CisrCisgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGlu ZV9udW1iZXIgIm1hcmtlcjEgc3RvcCJdCisgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm1h cmtlcjEgc3RvcCIKKyAKKyBnZGJfdGVzdCAicHJpbnQgX2EiICI9IDEiICJwcmludCBfYSBpbiBh IG5lc3RlZCBzY29wZSIKKyAKKysKKytnZGJfZXhpdAorK2dkYl9zdGFydAorK2dkYl9yZWluaXRp YWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl9sb2FkICR7YmluZmlsZX0KKysKKysjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgdGVzdCBwcmludGlu ZyBvZiBuYW1lc3BhY2UgaW1wb3J0ZWQgaW50byAKKysjIGZpbGUgc2NvcGUuCisrCisrCisraWYg IVtydW50byBtYXJrZXI1XSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJl YWtwb2ludCBtYXJrZXI1IgorKyAgICBjb250aW51ZQorK30KKysKKytnZGJfdGVzdCAicHJpbnQg Y2MiICI9IDMiCisrCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2Rp ciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CisrCisrCisgIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAjIFRlc3QgcHJpbnRpbmcgb2Yg bmFtZXNwYWNlIGFsaWFzZXMKKyAKKy1zZXR1cF9rZmFpbCAiZ2RiLzc5MzUiICIqLSotKiIKKyBp ZiAhW3J1bnRvIG1hcmtlcjJdIHRoZW4geworICAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBi cmVha3BvaW50IG1hcmtlcjIiCisgICAgIGNvbnRpbnVlCisgfQorIAorLWdkYl90ZXN0ICJwcmlu dCBCOjphIiAiPSAxIgorK2dkYl90ZXN0ICJwcmludCBCOjpfYSIgIj0gMSIKKysKKytnZGJfdGVz dCAicHJpbnQgX2EiICJObyBzeW1ib2wgXCJfYVwiIGluIGN1cnJlbnQgY29udGV4dC4iICJwcmlu dCBfYSBpbiBuYW1lc3BhY2UgYWxpYXMgc2NvcGUiCisrZ2RiX3Rlc3QgInByaW50IHgiICJObyBz eW1ib2wgXCJ4XCIgaW4gY3VycmVudCBjb250ZXh0LiIgInByaW50IHggaW4gbmFtZXNwYWNlIGFs aWFzIHNjb3BlIgorKworK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9k aXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxlfQorKworIAorICMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgIyBUZXN0IHRoYXQgbmFtZXMg YXJlIG5vdCBwcmludGVkIHdoZW4gdGhleSAKKyAjIGFyZSBub3QgaW1wb3J0ZWQKKyAKKy1nZGJf YnJlYWtwb2ludCAibWFya2VyMyIKKy1nZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibWFya2Vy MyIKKytpZiB7IVtydW50byBtYXJrZXIzXX0geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0 byBicmVha3BvaW50IG1hcmtlcjMiCisrfQorIAorLWdkYl90ZXN0ICJwcmludCBfYSIgIk5vIHN5 bWJvbCBcIl9hXCIgaW4gY3VycmVudCBjb250ZXh0LiIgIlByaW50IGEgd2l0aG91dCBpbXBvcnQi CisrIyBnY2MtNC0zIHB1dHMgaW1wb3J0IHN0YXRlbWVudHMgZm9yIGFsaWFzZXMgaW4KKysjIHRo ZSBnbG9iYWwgc2NvcGUgaW5zdGVhZCBvZiB0aGUgY29ycmVzcG9uZGluZworKyMgZnVuY3Rpb24g c2NvcGUuIFRoZXNlIHdyb25nIGltcG9ydCBzdGF0ZW1lbnRzIHRocm93CisrIyB0aGlzIHRlc3Qg b2ZmLiBUaGlzIGlzIGZpeGVkIGluIGdjYy00LTQuCisraWYgW3Rlc3RfY29tcGlsZXJfaW5mbyBn Y2MtNC0zLSpdIHRoZW4geyBzZXR1cF94ZmFpbCAqLSotKiB9CisrCisrZ2RiX3Rlc3QgInByaW50 IF9hIiAiTm8gc3ltYm9sIFwiX2FcIiBpbiBjdXJyZW50IGNvbnRleHQuIiAiUHJpbnQgX2Egd2l0 aG91dCBpbXBvcnQiCisgCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyAjIFRlc3QgcHJpbnRpbmcgb2YgaW5kaXZpZHVhbGx5IGltcG9ydGVkIGVsZW1lbnRz CisgCistc2V0dXBfa2ZhaWwgImdkYi83OTM2IiAiKi0qLSoiCisgaWYgIVtydW50byBtYXJrZXI0 XSB0aGVuIHsKKyAgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBtYXJrZXI0 IgorICAgICBjb250aW51ZQorIH0KKyAKKy1nZGJfdGVzdCAicHJpbnQgeCIgIj0gMiIKKytnZGJf dGVzdCAicHJpbnQgZHgiICI9IDQiCisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKysjIFRlc3QgcHJpbnRpbmcgb2YgbmFtZXNwYWNlIGFsaWFzZXMKKysK KytpZiAhW3J1bnRvIG1hcmtlcjVdIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0 byBtYXJrZXI1IgorKyAgICBjb250aW51ZQorK30KKysKKytnZGJfdGVzdCAicHJpbnQgZWZ4IiAi PSA1IgorKworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisr IyBUZXN0IHByaW50aW5nIG9mIHZhcmlhYmxlcyBpbXBvcnRlZCBmcm9tCisrIyBuZXN0ZWQgbmFt ZXNwYWNlcworKworK2lmICFbcnVudG8gSTo6bWFya2VyN10gdGhlbiB7CisrICAgIHBlcnJvciAi Y291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgSTo6bWFya2VyNyIKKysgICAgY29udGludWUKKyt9 CisrCisrZ2RiX3Rlc3QgInByaW50IGdoeCIgIj0gNiIKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgVGVzdCB0aGF0IHZhcmlhYmxlcyBhcmUgbm90 IHByaW50ZWQgaW4gYSBuYW1lc3BhY2UKKysjIHRoYXQgaXMgc2libGluZyB0byB0aGUgbmFtZXNw YWNlIGNvbnRhaW5pbmcgYW4gaW1wb3J0CisrCisraWYgIVtydW50byBMOjptYXJrZXI4XSB0aGVu IHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBMOjptYXJrZXI4Igor KyAgICBjb250aW51ZQorK30KKysKKytnZGJfdGVzdCAicHJpbnQgangiICI9IDQ0IgorKworK2dk Yl9icmVha3BvaW50ICJLOjptYXJrZXI5IgorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJL OjptYXJrZXI5IgorKworK2dkYl90ZXN0ICJwcmludCBqeCIgIk5vIHN5bWJvbCBcImp4XCIgaW4g Y3VycmVudCBjb250ZXh0LiIKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworKyMgVGVzdCB0aGF0IHZhcmlhYmxlcyBhcmUgb25seSBwcmludGVkIGFmdGVy IHRoZSBsaW5lCisrIyBjb250YWluaW5nIHRoZSBpbXBvcnQKKysKKytpZiAhW3J1bnRvX21haW5d IHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IG1haW4iCisr ICAgIGNvbnRpbnVlCisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJtYXJrZXIxMCBzdG9wIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibWFya2VyMTAg c3RvcCIKKysKKysjIEFzc2VydCB0aGF0IE06OnggaXMgcHJpbnRlZCBhbmQgbm90IE46OngKKytn ZGJfdGVzdCAicHJpbnQgeCIgIj0gOTExIiAicHJpbnQgeCAoZnJvbSBNOjp4KSIKKysKK2RpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UuZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvbmFtZXNwYWNlLmV4cAoraW5kZXggNDM2MmZkOC4uZjdjZmQ1NyAxMDA2NDQKKy0t LSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS5leHAKKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL25hbWVzcGFjZS5leHAKK0BAIC0yNCw2ICsyNCw3IEBACisgIyBmb3IgbmFtZXNw YWNlcy4KKyAjIE5vdGU6IEFzIG9mIDIwMDAtMDYtMDMsIHRoZXkgcGFzc2VkIHVuZGVyIGcrKyAt IGRqYgorIAorK2xvYWRfbGliICJjcC1zdXBwb3J0LmV4cCIKKyAKKyBpZiAkdHJhY2VsZXZlbCB0 aGVuIHsKKyAgICAgICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorQEAgLTI0MSwxMSArMjQyLDE2IEBA IGdkYl90ZXN0ICJwdHlwZSBFIiAidHlwZSA9IG5hbWVzcGFjZSBDOjpEOjpFIgorIGdkYl90ZXN0 ICJwdHlwZSBDQ2xhc3MiICJ0eXBlID0gKGNsYXNzIEM6OkNDbGFzcyBce1xyXG4gIHB1YmxpYzp8 c3RydWN0IEM6OkNDbGFzcyBceylcclxuICAgIGludCB4O1xyXG5cfSIKKyBnZGJfdGVzdCAicHR5 cGUgQ0NsYXNzOjpOZXN0ZWRDbGFzcyIgInR5cGUgPSAoY2xhc3MgQzo6Q0NsYXNzOjpOZXN0ZWRD bGFzcyBce1xyXG4gIHB1YmxpYzp8c3RydWN0IEM6OkNDbGFzczo6TmVzdGVkQ2xhc3MgXHspXHJc biAgICBpbnQgeTtcclxuXH0iCisgZ2RiX3Rlc3QgInB0eXBlIE5lc3RlZENsYXNzIiAiTm8gc3lt Ym9sIFwiTmVzdGVkQ2xhc3NcIiBpbiBjdXJyZW50IGNvbnRleHQuIgorLXNldHVwX2tmYWlsICJn ZGIvMTQ0OCIgIiotKi0qIgorLWdkYl90ZXN0ICJwdHlwZSA6OkM6OkNDbGFzcyIgInR5cGUgPSBj bGFzcyBDOjpDQ2xhc3MgXHtcclxuICBwdWJsaWM6XHJcbiAgICBpbnQgeDtcclxuXH0iCistc2V0 dXBfa2ZhaWwgImdkYi8xNDQ4IiAiKi0qLSoiCistZ2RiX3Rlc3QgInB0eXBlIDo6Qzo6Q0NsYXNz OjpOZXN0ZWRDbGFzcyIgInR5cGUgPSBjbGFzcyBDOjpDQ2xhc3M6Ok5lc3RlZENsYXNzIFx7XHJc biAgcHVibGljOlxyXG4gICAgaW50IHk7XHJcblx9IgorLXNldHVwX2tmYWlsICJnZGIvMTQ0OCIg IiotKi0qIgorK2NwX3Rlc3RfcHR5cGVfY2xhc3MgXAorKwkicHR5cGUgOjpDOjpDQ2xhc3MiICIi ICJjbGFzcyIgIkM6OkNDbGFzcyIgXAorKwl7CisrCSAgICB7IGZpZWxkIHB1YmxpYyAiaW50IHg7 IiB9CisrCX0KKytjcF90ZXN0X3B0eXBlX2NsYXNzIFwKKysJInB0eXBlIDo6Qzo6Q0NsYXNzOjpO ZXN0ZWRDbGFzcyIgIiIgImNsYXNzIiAiQzo6Q0NsYXNzOjpOZXN0ZWRDbGFzcyIgXAorKwl7Cisr CSAgICB7IGZpZWxkIHB1YmxpYyAiaW50IHk7IiB9CisrCX0KKyBnZGJfdGVzdCAicHR5cGUgOjpD OjpOZXN0ZWRDbGFzcyIgIk5vIHN5bWJvbCBcIk5lc3RlZENsYXNzXCIgaW4gbmFtZXNwYWNlIFwi Q1wiLiIKKyBnZGJfdGVzdCAicHR5cGUgQzo6Q0NsYXNzIiAiTm8gc3ltYm9sIFwiQ0NsYXNzXCIg aW4gbmFtZXNwYWNlIFwiQzo6Q1wiLiIKKyBnZGJfdGVzdCAicHR5cGUgQzo6Q0NsYXNzOjpOZXN0 ZWRDbGFzcyIgIk5vIHR5cGUgXCJDQ2xhc3NcIiB3aXRoaW4gY2xhc3Mgb3IgbmFtZXNwYWNlIFwi Qzo6Q1wiLiIKK0BAIC0yNTUsOCArMjYxLDExIEBAIGdkYl90ZXN0ICJwdHlwZSBDOjpOZXN0ZWRD bGFzcyIgIk5vIHN5bWJvbCBcIk5lc3RlZENsYXNzXCIgaW4gbmFtZXNwYWNlIFwiQzo6Q1wiCisg CisgZ2RiX3Rlc3QgInByaW50IGNPdGhlckZpbGUiICJcXCRcWzAtOVxdLiogPSAzMTYiCisgZ2Ri X3Rlc3QgInB0eXBlIE90aGVyRmlsZUNsYXNzIiAidHlwZSA9IChjbGFzcyBDOjpPdGhlckZpbGVD bGFzcyBce1xyXG4gIHB1YmxpYzp8c3RydWN0IEM6Ok90aGVyRmlsZUNsYXNzIFx7KVxyXG4gICAg aW50IHo7XHJcblx9IgorLXNldHVwX2tmYWlsICJnZGIvMTQ0OCIgIiotKi0qIgorLWdkYl90ZXN0 ICJwdHlwZSA6OkM6Ok90aGVyRmlsZUNsYXNzIiAidHlwZSA9IGNsYXNzIEM6Ok90aGVyRmlsZUNs YXNzIFx7XHJcbiAgcHVibGljOlxyXG4gICAgaW50IHo7XHJcblx9IgorK2NwX3Rlc3RfcHR5cGVf Y2xhc3MgXAorKwkicHR5cGUgOjpDOjpPdGhlckZpbGVDbGFzcyIgIiIgImNsYXNzIiAiQzo6T3Ro ZXJGaWxlQ2xhc3MiIFwKKysJeworKwkgICAgeyBmaWVsZCBwdWJsaWMgImludCB6OyIgfQorKwl9 CisgZ2RiX3Rlc3QgInB0eXBlIEM6Ok90aGVyRmlsZUNsYXNzIiAiTm8gc3ltYm9sIFwiT3RoZXJG aWxlQ2xhc3NcIiBpbiBuYW1lc3BhY2UgXCJDOjpDXCIuIgorIAorICMgU29tZSBhbm9ueW1vdXMg bmFtZXNwYWNlIHRlc3RzLgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL292ZXJs b2FkLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL292ZXJsb2FkLmV4cAoraW5kZXggMWJmYTBm My4uOWZkMzFhOCAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL292ZXJsb2FkLmV4 cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avb3ZlcmxvYWQuZXhwCitAQCAtNzQsMTIgKzc0 LDEyIEBAIHNldCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJn XFwoKHZvaWR8KVxcKTsiCisgc2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBv dmVybG9hZDFhcmdcXChjaGFyXFwpOyIKKyBzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7 d3N9aW50IG92ZXJsb2FkMWFyZ1xcKHNpZ25lZCBjaGFyXFwpOyIKKyBzZXQgcmVfbWV0aG9kcwki JHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIGNoYXJcXCk7Igor LXNldCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwoc2hv cnRcXCk7IgorLXNldCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQx YXJnXFwodW5zaWduZWQgc2hvcnRcXCk7IgorK3NldCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9 JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwoc2hvcnQoIGludCk/XFwpOyIKKytzZXQgcmVfbWV0aG9k cwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBzaG9ydHxz aG9ydCB1bnNpZ25lZCkoIGludCk/XFwpOyIKKyBzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2Rz fSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xcKGludFxcKTsiCisgc2V0IHJlX21ldGhvZHMJIiR7cmVf bWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBpbnRcXCk7IgorLXNldCBy ZV9tZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwobG9uZ1xcKTsi Cistc2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXCh1 bnNpZ25lZCBsb25nXFwpOyIKKytzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50 IG92ZXJsb2FkMWFyZ1xcKGxvbmcoIGludCk/XFwpOyIKKytzZXQgcmVfbWV0aG9kcwkiJHtyZV9t ZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBsb25nfGxvbmcgdW5zaWdu ZWQpKCBpbnQpP1xcKTsiCisgc2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBv dmVybG9hZDFhcmdcXChmbG9hdFxcKTsiCisgc2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30k e3dzfWludCBvdmVybG9hZDFhcmdcXChkb3VibGVcXCk7IgorIHNldCByZV9tZXRob2RzCSIke3Jl X21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWRmbmFyZ1xcKCh2b2lkfClcXCk7IgorZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL292bGRicmVhay5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9vdmxkYnJlYWsuZXhwCitpbmRleCA1YjA2YjMxLi4zZTQ3Yzc3IDEwMDY0NAorLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3Avb3ZsZGJyZWFrLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3Avb3ZsZGJyZWFrLmV4cAorQEAgLTEyNywxMCArMTI3LDI0IEBAIHByb2Mgc2V0X2JwX292 ZXJsb2FkZWQge25hbWUgZXhwZWN0ZWRtZW51IG15Y2hvaWNlIGJwbnVtYmVyIGxpbmVudW1iZXJ9 IHsKKyB9CisgCisgIyBUaGlzIGlzIHRoZSBleHBlY3RlZCBtZW51IGZvciBvdmVybG9hZDFhcmcu CistIyBOb3RlIHRoZSBhcmcgdHlwZSB2YXJpYXRpb25zIG9uIGxpbmVzIDYgYW5kIDEzLgorKyMg Tm90ZSB0aGUgYXJnIHR5cGUgdmFyaWF0aW9ucyBmb3Igdm9pZCBhbmQgaW50ZWdlciB0eXBlcy4K KyAjIFRoaXMgYWNjb21tb2RhdGVzIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBnKysuCisgCistc2V0 IG1lbnVfb3ZlcmxvYWQxYXJnICJcXFxbMFxcXF0gY2FuY2VsXHJcblxcXFsxXFxcXSBhbGxcclxu XFxcWzJcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoZG91YmxlXFwpIGF0Liokc3JjZmlsZToxMjFc clxuXFxcWzNcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoZmxvYXRcXCkgYXQuKiRzcmNmaWxlOjEy MFxyXG5cXFxbNFxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBsb25nXFwpIGF0Liok c3JjZmlsZToxMTlcclxuXFxcWzVcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwobG9uZ1xcKSBhdC4q JHNyY2ZpbGU6MTE4XHJcblxcXFs2XFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBp bnR8dW5zaWduZWQpXFwpIGF0Liokc3JjZmlsZToxMTdcclxuXFxcWzdcXFxdIGZvbzo6b3Zlcmxv YWQxYXJnXFwoaW50XFwpIGF0Liokc3JjZmlsZToxMTZcclxuXFxcWzhcXFxdIGZvbzo6b3Zlcmxv YWQxYXJnXFwodW5zaWduZWQgc2hvcnRcXCkgYXQuKiRzcmNmaWxlOjExNVxyXG5cXFxbOVxcXF0g Zm9vOjpvdmVybG9hZDFhcmdcXChzaG9ydFxcKSBhdC4qJHNyY2ZpbGU6MTE0XHJcblxcXFsxMFxc XF0gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBjaGFyXFwpIGF0Liokc3JjZmlsZToxMTNc clxuXFxcWzExXFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKHNpZ25lZCBjaGFyXFwpIGF0Liokc3Jj ZmlsZToxMTJcclxuXFxcWzEyXFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKGNoYXJcXCkgYXQuKiRz cmNmaWxlOjExMVxyXG5cXFxbMTNcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHZvaWR8KVxcKSBh dC4qJHNyY2ZpbGU6MTEwXHJcbj4gJCIKKytzZXQgICAgbWVudV9vdmVybG9hZDFhcmcgIlxcXFsw XFxcXSBjYW5jZWxcclxuIgorK2FwcGVuZCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzFcXFxdIGFs bFxyXG4iCisrYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJcXFxbMlxcXF0gZm9vOjpvdmVybG9h ZDFhcmdcXChkb3VibGVcXCkgYXQuKiRzcmNmaWxlOjEyMVxyXG4iCisrYXBwZW5kIG1lbnVfb3Zl cmxvYWQxYXJnICJcXFxbM1xcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChmbG9hdFxcKSBhdC4qJHNy Y2ZpbGU6MTIwXHJcbiIKKythcHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIlxcXFs0XFxcXSBmb286 Om92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBsb25nfGxvbmcgdW5zaWduZWQpKCBpbnQpP1xcKSBh dC4qJHNyY2ZpbGU6MTE5XHJcbiIKKythcHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIlxcXFs1XFxc XSBmb286Om92ZXJsb2FkMWFyZ1xcKGxvbmcoIGludCk/XFwpIGF0Liokc3JjZmlsZToxMThcclxu IgorK2FwcGVuZCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzZcXFxdIGZvbzo6b3ZlcmxvYWQxYXJn XFwoKHVuc2lnbmVkIGludHx1bnNpZ25lZClcXCkgYXQuKiRzcmNmaWxlOjExN1xyXG4iCisrYXBw ZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJcXFxbN1xcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChpbnRc XCkgYXQuKiRzcmNmaWxlOjExNlxyXG4iCisrYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJcXFxb OFxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWQgc2hvcnR8c2hvcnQgdW5zaWduZWQp KCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE1XHJcbiIKKythcHBlbmQgbWVudV9vdmVybG9hZDFh cmcgIlxcXFs5XFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKHNob3J0KCBpbnQpP1xcKSBhdC4qJHNy Y2ZpbGU6MTE0XHJcbiIKKythcHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIlxcXFsxMFxcXF0gZm9v OjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBjaGFyXFwpIGF0Liokc3JjZmlsZToxMTNcclxuIgor K2FwcGVuZCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzExXFxcXSBmb286Om92ZXJsb2FkMWFyZ1xc KHNpZ25lZCBjaGFyXFwpIGF0Liokc3JjZmlsZToxMTJcclxuIgorK2FwcGVuZCBtZW51X292ZXJs b2FkMWFyZyAiXFxcWzEyXFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKGNoYXJcXCkgYXQuKiRzcmNm aWxlOjExMVxyXG4iCisrYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJcXFxbMTNcXFxdIGZvbzo6 b3ZlcmxvYWQxYXJnXFwoKHZvaWR8KVxcKSBhdC4qJHNyY2ZpbGU6MTEwXHJcbiIKKythcHBlbmQg bWVudV9vdmVybG9hZDFhcmcgIj4gJCIKKyAKKyAjIFNldCBtdWx0aXBsZS1zeW1ib2xzIHRvICJh c2siLCB0byBhbGxvdyB1cyB0byB0ZXN0IHRoZSB1c2UKKyAjIG9mIHRoZSBtdWx0aXBsZS1jaG9p Y2UgbWVudSB3aGVuIGJyZWFraW5nIG9uIGFuIG92ZXJsb2FkZWQgbWV0aG9kLgorQEAgLTE1Nywx NyArMTcxLDE3IEBAIHNldF9icF9vdmVybG9hZGVkICJmb286Om92ZXJsb2FkMWFyZyIgIiRtZW51 X292ZXJsb2FkMWFyZyIgMTMgICAxMyAxMTAKKyAKKyBnZGJfdGVzdCAiaW5mbyBicmVhayIgXAor ICAgICAiTnVtICAgICBUeXBlXFtcdCBcXStEaXNwIEVuYiBBZGRyZXNzXFtcdCBcXStXaGF0LioK Ky1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBc XStpbiBtYWluIGF0Liokc3JjZmlsZTo0OVxyCisrXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQg ICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gbWFpbihcXCgofHZvaWQpXFwpKT8gYXQu KiRzcmNmaWxlOjQ5XHIKKyBcW1x0IFxdK2JyZWFrcG9pbnQgYWxyZWFkeSBoaXQgMSB0aW1lXHIK KyBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBc XStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExMVxyCisgXFsw LTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4g Zm9vOjpvdmVybG9hZDFhcmdcXChzaWduZWQgY2hhclxcKSBhdC4qJHNyY2ZpbGU6MTEyXHIKKyBc WzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStp biBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExM1xy CistXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQg XF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChzaG9ydFxcKSBhdC4qJHNyY2ZpbGU6MTE0XHIKKy1c WzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStp biBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIHNob3J0XFwpIGF0Liokc3JjZmlsZToxMTVc cgorK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0 IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoc2hvcnQoIGludCk/XFwpIGF0Liokc3JjZmlsZTox MTRccgorK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhc W1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHVuc2lnbmVkIHNob3J0fHNob3J0IHVuc2ln bmVkKSggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExNVxyCisgXFswLTlcXStcW1x0IFxdK2JyZWFr cG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdc XChpbnRcXCkgYXQuKiRzcmNmaWxlOjExNlxyCisgXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQg ICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5z aWduZWR8dW5zaWduZWQgaW50KVxcKSBhdC4qJHNyY2ZpbGU6MTE3XHIKKy1cWzAtOVxdK1xbXHQg XF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJs b2FkMWFyZ1xcKGxvbmdcXCkgYXQuKiRzcmNmaWxlOjExOFxyCistXFswLTlcXStcW1x0IFxdK2Jy ZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFh cmdcXCh1bnNpZ25lZCBsb25nXFwpIGF0Liokc3JjZmlsZToxMTlccgorK1xbMC05XF0rXFtcdCBc XSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3Zlcmxv YWQxYXJnXFwobG9uZyggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExOFxyCisrXFswLTlcXStcW1x0 IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVy bG9hZDFhcmdcXCgodW5zaWduZWQgbG9uZ3xsb25nIHVuc2lnbmVkKSggaW50KT9cXCkgYXQuKiRz cmNmaWxlOjExOVxyCisgXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQg XF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChmbG9hdFxcKSBhdC4qJHNyY2Zp bGU6MTIwXHIKKyBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSsk aGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGRvdWJsZVxcKSBhdC4qJHNyY2ZpbGU6 MTIxXHIKKyBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4 XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKCh2b2lkfClcXCkgYXQuKiRzcmNmaWxlOjEx MCIgXAorQEAgLTIxNSwxNyArMjI5LDE3IEBAIGdkYl9leHBlY3QgeworIAorIGdkYl90ZXN0ICJp bmZvIGJyZWFrIiBcCisgICAgICJOdW0gICAgIFR5cGVcW1x0IFxdK0Rpc3AgRW5iIEFkZHJlc3Nc W1x0IFxdK1doYXQuKgorLVxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0 IFxdKyRoZXhcW1x0IFxdK2luIG1haW4gYXQuKiRzcmNmaWxlOjQ5XHIKKytcWzAtOVxdK1xbXHQg XF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBtYWluKFxcKCh8 dm9pZClcXCkpPyBhdC4qJHNyY2ZpbGU6NDlccgorIFxbXHQgXF0rYnJlYWtwb2ludCBhbHJlYWR5 IGhpdCAxIHRpbWVccgorIFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0 IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoY2hhclxcKSBhdC4qJHNyY2Zp bGU6MTExXHIKKyBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSsk aGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHNpZ25lZCBjaGFyXFwpIGF0Liokc3Jj ZmlsZToxMTJccgorIFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxd KyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwodW5zaWduZWQgY2hhclxcKSBhdC4q JHNyY2ZpbGU6MTEzXHIKKy1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtc dCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHNob3J0XFwpIGF0Liokc3Jj ZmlsZToxMTRccgorLVxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxd KyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwodW5zaWduZWQgc2hvcnRcXCkgYXQu KiRzcmNmaWxlOjExNVxyCisrXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxb XHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChzaG9ydCggaW50KT9cXCkg YXQuKiRzcmNmaWxlOjExNFxyCisrXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAg eVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWQgc2hv cnR8c2hvcnQgdW5zaWduZWQpKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE1XHIKKyBcWzAtOVxd K1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286 Om92ZXJsb2FkMWFyZ1xcKGludFxcKSBhdC4qJHNyY2ZpbGU6MTE2XHIKKyBcWzAtOVxdK1xbXHQg XF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJs b2FkMWFyZ1xcKCh1bnNpZ25lZHx1bnNpZ25lZCBpbnQpXFwpIGF0Liokc3JjZmlsZToxMTdccgor LVxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxd K2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwobG9uZ1xcKSBhdC4qJHNyY2ZpbGU6MTE4XHIKKy1cWzAt OVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBm b286Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIGxvbmdcXCkgYXQuKiRzcmNmaWxlOjExOVxyCisr XFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0r aW4gZm9vOjpvdmVybG9hZDFhcmdcXChsb25nKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE4XHIK KytcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBc XStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBsb25nfGxvbmcgdW5zaWduZWQpKCBp bnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE5XHIKKyBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAg ICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGZsb2F0 XFwpIGF0Liokc3JjZmlsZToxMjBccgorIFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBr ZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoZG91YmxlXFwp IGF0Liokc3JjZmlsZToxMjFccgorIFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVw IHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHZvaWR8KVxcKSBh dC4qJHNyY2ZpbGU6MTEwIiBcCitAQCAtMjk2LDEyICszMTAsMTIgQEAgZ2RiX3Rlc3QgImluZm8g YnJlYWsiIFwKKyAgICAgIk51bSAgICAgVHlwZVxbXHQgXF0rRGlzcCBFbmIgQWRkcmVzc1xbXHQg XF0rV2hhdC4qCisgXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0r JGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChkb3VibGVcXCkgYXQuKiRzcmNmaWxl OjEyMVxyCisgXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhl eFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChmbG9hdFxcKSBhdC4qJHNyY2ZpbGU6MTIw XHIKKy1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtc dCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIGxvbmdcXCkgYXQuKiRzcmNmaWxl OjExOVxyCistXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhl eFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChsb25nXFwpIGF0Liokc3JjZmlsZToxMThc cgorK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0 IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHVuc2lnbmVkIGxvbmd8bG9uZyB1bnNpZ25lZCko IGludCk/XFwpIGF0Liokc3JjZmlsZToxMTlccgorK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50 ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwobG9u ZyggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExOFxyCisgXFswLTlcXStcW1x0IFxdK2JyZWFrcG9p bnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgo dW5zaWduZWR8dW5zaWduZWQgaW50KVxcKSBhdC4qJHNyY2ZpbGU6MTE3XHIKKyBcWzAtOVxdK1xb XHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92 ZXJsb2FkMWFyZ1xcKGludFxcKSBhdC4qJHNyY2ZpbGU6MTE2XHIKKy1cWzAtOVxdK1xbXHQgXF0r YnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2Fk MWFyZ1xcKHVuc2lnbmVkIHNob3J0XFwpIGF0Liokc3JjZmlsZToxMTVccgorLVxbMC05XF0rXFtc dCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3Zl cmxvYWQxYXJnXFwoc2hvcnRcXCkgYXQuKiRzcmNmaWxlOjExNFxyCisrXFswLTlcXStcW1x0IFxd K2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9h ZDFhcmdcXCgodW5zaWduZWQgc2hvcnR8c2hvcnQgdW5zaWduZWQpKCBpbnQpP1xcKSBhdC4qJHNy Y2ZpbGU6MTE1XHIKKytcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBc XSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHNob3J0KCBpbnQpP1xcKSBhdC4q JHNyY2ZpbGU6MTE0XHIKKyBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtc dCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIGNoYXJcXCkg YXQuKiRzcmNmaWxlOjExM1xyCisgXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAg eVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChzaWduZWQgY2hhclxc KSBhdC4qJHNyY2ZpbGU6MTEyXHIKKyBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2Vl cCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGNoYXJcXCkgYXQu KiRzcmNmaWxlOjExMVxyCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcmVhbGNw cC5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3JlYWxjcHAuY2MKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwLi44ZTRmNzJhCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5jcC9yZWFsY3BwLmNjCitAQCAtMCwwICsxLDQwOSBAQAorKyNpbmNsdWRlIDxz dGRsaWIuaD4KKysjaW5jbHVkZSA8aW9zdHJlYW0+CisrCisrLy8gRm9yd2FyZCBkZWNscworK2Ns YXNzIGJhc2U7CisrY2xhc3MgZGVyaXZlZDsKKysKKysvLyBBIHNpbXBsZSB0ZW1wbGF0ZSB3aXRo IHNwZWNpYWxpemF0aW9ucworK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorK2NsYXNzIHRjbGFzcwor K3sKKytwdWJsaWM6CisrICB2b2lkIGRvX3NvbWV0aGluZyAoKSB7IH0gLy8gdGNsYXNzPFQ+Ojpk b19zb21ldGhpbmcKKyt9OworKworK3RlbXBsYXRlIDw+Cisrdm9pZCB0Y2xhc3M8Y2hhcj46OmRv X3NvbWV0aGluZyAoKSB7IH0gLy8gdGNsYXNzPGNoYXI+Ojpkb19zb21ldGhpbmcKKysKKyt0ZW1w bGF0ZSA8PgorK3ZvaWQgdGNsYXNzPGludD46OmRvX3NvbWV0aGluZyAoKSB7IH0gLy8gdGNsYXNz PGludD46OmRvX3NvbWV0aGluZworKworK3RlbXBsYXRlPD4KKyt2b2lkIHRjbGFzczxsb25nPjo6 ZG9fc29tZXRoaW5nICgpIHsgfSAvLyB0Y2xhc3M8bG9uZz46OmRvX3NvbWV0aGluZworKworK3Rl bXBsYXRlPD4KKyt2b2lkIHRjbGFzczxzaG9ydD46OmRvX3NvbWV0aGluZyAoKSB7IH0gLy8gdGNs YXNzPHNob3J0Pjo6ZG9fc29tZXRoaW5nCisrCisrLy8gQSBzaW1wbGUgdGVtcGxhdGUgd2l0aCBt dWx0aXBsZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzCisrdGVtcGxhdGUgPGNsYXNzIEEsIGNsYXNzIEIs IGNsYXNzIEMsIGNsYXNzIEQsIGNsYXNzIEU+Cisrdm9pZCBmbHViYmVyICh2b2lkKSAvLyBmbHVi YmVyCisreworKyAgQSBhOworKyAgQiBiOworKyAgQyBjOworKyAgRCBkOworKyAgRSBlOworKwor KyAgKythOworKyAgKytiOworKyAgKytjOworKyAgKytkOworKyAgKytlOworK30KKysKKysvLyBT b21lIGNvbnRyaXZlZCBwb2xpY2llcworK3RlbXBsYXRlIDxjbGFzcyBUPgorK3N0cnVjdCBvcGVy YXRpb25fMQorK3sKKysgIHN0YXRpYyB2b2lkIGZ1bmN0aW9uICh2b2lkKSB7IH0gLy8gb3BlcmF0 aW9uXzE8VD46OmZ1bmN0aW9uCisrfTsKKysKKyt0ZW1wbGF0ZSA8Y2xhc3MgVD4KKytzdHJ1Y3Qg b3BlcmF0aW9uXzIKKyt7CisrICBzdGF0aWMgdm9pZCBmdW5jdGlvbiAodm9pZCkgeyB9IC8vIG9w ZXJhdGlvbl8yPFQ+OjpmdW5jdGlvbgorK307CisrCisrdGVtcGxhdGUgPGNsYXNzIFQ+Cisrc3Ry dWN0IG9wZXJhdGlvbl8zCisreworKyAgc3RhdGljIHZvaWQgZnVuY3Rpb24gKHZvaWQpIHsgfSAv LyBvcGVyYXRpb25fMzxUPjo6ZnVuY3Rpb24KKyt9OworKworK3RlbXBsYXRlIDxjbGFzcyBUPgor K3N0cnVjdCBvcGVyYXRpb25fNAorK3sKKysgIHN0YXRpYyB2b2lkIGZ1bmN0aW9uICh2b2lkKSB7 IH0gLy8gb3BlcmF0aW9uXzQ8VD46OmZ1bmN0aW9uCisrfTsKKysKKysvLyBBIHBvbGljeS1iYXNl ZCBjbGFzcyB3LyBhbmQgdy9vIGRlZmF1bHQgcG9saWN5CisrdGVtcGxhdGUgPGNsYXNzIFQsIGNs YXNzIFBvbGljeT4KKytjbGFzcyBwb2xpY3kgOiBwdWJsaWMgUG9saWN5CisreworK3B1YmxpYzoK KysgIHBvbGljeSAoVCBvYmopIDogb2JqXyAob2JqKSB7IH0gLy8gcG9saWN5PFQsIFBvbGljeT46 OnBvbGljeQorKworK3ByaXZhdGU6CisrICBUIG9ial87CisrfTsKKysKKyt0ZW1wbGF0ZSA8Y2xh c3MgVCwgY2xhc3MgUG9saWN5ID0gb3BlcmF0aW9uXzE8VD4gPgorK2NsYXNzIHBvbGljeWQgOiBw dWJsaWMgUG9saWN5CisreworK3B1YmxpYzoKKysgIHBvbGljeWQgKFQgb2JqKSA6IG9ial8gKG9i aikgeyB9IC8vIHBvbGljeWQ8VCwgUG9saWN5Pjo6cG9saWN5ZAorKyAgfnBvbGljeWQgKHZvaWQp IHsgfSAvLyBwb2xpY3lkPFQsIFBvbGljeT46On5wb2xpY3lkCisrCisrcHJpdmF0ZToKKysgIFQg b2JqXzsKKyt9OworKworK3R5cGVkZWYgcG9saWN5PGludCwgb3BlcmF0aW9uXzE8dm9pZCo+ID4g cG9saWN5MTsKKyt0eXBlZGVmIHBvbGljeTxpbnQsIG9wZXJhdGlvbl8yPHZvaWQqPiA+IHBvbGlj eTI7CisrdHlwZWRlZiBwb2xpY3k8aW50LCBvcGVyYXRpb25fMzx2b2lkKj4gPiBwb2xpY3kzOwor K3R5cGVkZWYgcG9saWN5PGludCwgb3BlcmF0aW9uXzQ8dm9pZCo+ID4gcG9saWN5NDsKKysKKyt0 eXBlZGVmIHBvbGljeWQ8aW50PiBwb2xpY3lkMTsKKyt0eXBlZGVmIHBvbGljeWQ8bG9uZz4gcG9s aWN5ZDI7CisrdHlwZWRlZiBwb2xpY3lkPGNoYXI+IHBvbGljeWQzOworK3R5cGVkZWYgcG9saWN5 ZDxiYXNlPiBwb2xpY3lkNDsKKyt0eXBlZGVmIHBvbGljeWQ8dGNsYXNzPGludD4gPiBwb2xpY3lk NTsKKysKKytjbGFzcyBmbHVmZiB7IH07Cisrc3RhdGljIGZsdWZmICpnX2ZsdWZmID0gbmV3IGZs dWZmICgpOworKworK2NsYXNzIGJhc2UKKyt7CisrcHJvdGVjdGVkOgorKyAgaW50IGZvb187Cisr CisrcHVibGljOgorKyAgYmFzZSAodm9pZCkgOiBmb29fICg0MikgeyB9IC8vIGJhc2U6OmJhc2Uo dm9pZCkKKysgIGJhc2UgKGludCBmb28pIDogZm9vXyAoZm9vKSB7IH0gLy8gYmFzZTo6YmFzZShp bnQpCisrICB+YmFzZSAodm9pZCkgeyB9IC8vIGJhc2U6On5iYXNlCisrCisrICAvLyBTb21lIG92 ZXJsb2FkZWQgbWV0aG9kcworKyAgaW50IG92ZXJsb2FkICh2b2lkKSBjb25zdCB7IHJldHVybiAw OyB9IC8vIGJhc2U6Om92ZXJsb2FkKHZvaWQpIGNvbnN0CisrICBpbnQgb3ZlcmxvYWQgKGludCBp KSBjb25zdCB7IHJldHVybiAxOyB9IC8vIGJhc2U6Om92ZXJsb2FkKGludCkgY29uc3QKKysgIGlu dCBvdmVybG9hZCAoc2hvcnQgcykgY29uc3QgeyByZXR1cm4gMjsgfSAvLyBiYXNlOjpvdmVybG9h ZChzaG9ydCkgY29uc3QKKysgIGludCBvdmVybG9hZCAobG9uZyBsKSBjb25zdCB7IHJldHVybiAz OyB9IC8vIGJhc2U6Om92ZXJsb2FkKGxvbmcpIGNvbnN0CisrICBpbnQgb3ZlcmxvYWQgKGNoYXIq IGEpIGNvbnN0IHsgcmV0dXJuIDQ7IH0gLy8gYmFzZTo6b3ZlcmxvYWQoY2hhciopIGNvbnN0Cisr ICBpbnQgb3ZlcmxvYWQgKGJhc2UmIGIpIGNvbnN0IHsgcmV0dXJuIDU7IH0gLy8gYmFzZTo6b3Zl cmxvYWQoYmFzZSYpIGNvbnN0CisrCisrICAvLyBPcGVyYXRvcnMKKysgIGludCBvcGVyYXRvcisg KGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yKworKyAgeyByZXR1cm4gZm9v XyArIG8uZm9vXzsgfQorKworKyAgYmFzZSBvcGVyYXRvcisrICh2b2lkKSAvLyBiYXNlOjpvcGVy YXRvcisrCisrICB7ICsrZm9vXzsgcmV0dXJuICp0aGlzOyB9CisrCisrICBiYXNlIG9wZXJhdG9y Kz0oYmFzZSBjb25zdCYgbykgLy8gYmFzZTo6b3BlcmF0b3IrPQorKyAgeyBmb29fICs9IG8uZm9v XzsgcmV0dXJuICp0aGlzOyB9CisrCisrICBpbnQgb3BlcmF0b3ItIChiYXNlIGNvbnN0JiBvKSBj b25zdCAvLyBiYXNlOjpvcGVyYXRvci0KKysgIHsgcmV0dXJuIGZvb18gLSBvLmZvb187IH0KKysK KysgIGJhc2Ugb3BlcmF0b3ItLSAodm9pZCkgLy8gYmFzZTo6b3BlcmF0b3ItLQorKyAgeyAtLWZv b187IHJldHVybiAqdGhpczsgfQorKworKyAgYmFzZSBvcGVyYXRvci09IChiYXNlIGNvbnN0JiBv KSAvLyBiYXNlOjpvcGVyYXRvci09CisrICB7IGZvb18gLT0gby5mb29fOyByZXR1cm4gKnRoaXM7 IH0KKysKKysgIGludCBvcGVyYXRvciogKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9w ZXJhdG9yKgorKyAgeyByZXR1cm4gZm9vXyAqIG8uZm9vXzsgfQorKworKyAgYmFzZSBvcGVyYXRv cio9IChiYXNlIGNvbnN0JiBvKSAvLyBiYXNlOjpvcGVyYXRvcio9CisrICB7IGZvb18gKj0gby5m b29fOyByZXR1cm4gKnRoaXM7IH0KKysKKysgIGludCBvcGVyYXRvci8gKGJhc2UgY29uc3QmIG8p IGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yLworKyAgeyByZXR1cm4gZm9vXyAvIG8uZm9vXzsgfQor KworKyAgYmFzZSBvcGVyYXRvci89IChiYXNlIGNvbnN0JiBvKSAvLyBiYXNlOjpvcGVyYXRvci89 CisrICB7IGZvb18gLz0gby5mb29fOyByZXR1cm4gKnRoaXM7IH0KKysKKysgIGludCBvcGVyYXRv ciUgKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yJQorKyAgeyByZXR1cm4g Zm9vXyAlIG8uZm9vXzsgfQorKyAgCisrICBiYXNlIG9wZXJhdG9yJT0gKGJhc2UgY29uc3QmIG8p IC8vIGJhc2U6Om9wZXJhdG9yJT0KKysgIHsgZm9vXyAlPSBvLmZvb187IHJldHVybiAqdGhpczsg fQorKworKyAgYm9vbCBvcGVyYXRvcjwgKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9w ZXJhdG9yPAorKyAgeyByZXR1cm4gZm9vXyA8IG8uZm9vXzsgfQorKworKyAgYm9vbCBvcGVyYXRv cjw9IChiYXNlIGNvbnN0JiBvKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcjw9CisrICB7IHJldHVy biBmb29fIDw9IG8uZm9vXzsgfQorKworKyAgYm9vbCBvcGVyYXRvcj4gKGJhc2UgY29uc3QmIG8p IGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yPgorKyAgeyByZXR1cm4gZm9vXyA+IG8uZm9vXzsgfQor KworKyAgYm9vbCBvcGVyYXRvcj49IChiYXNlIGNvbnN0JiBvKSBjb25zdCAvLyBiYXNlOjpvcGVy YXRvcj49CisrICB7IHJldHVybiBmb29fID49IG8uZm9vXzsgfQorKworKyAgYm9vbCBvcGVyYXRv ciE9IChiYXNlIGNvbnN0JiBvKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvciE9CisrICB7IHJldHVy biBmb29fICE9IG8uZm9vXzsgfQorKworKyAgYm9vbCBvcGVyYXRvcj09IChiYXNlIGNvbnN0JiBv KSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcj09CisrICB7IHJldHVybiBmb29fID09IG8uZm9vXzsg fQorKworKyAgYm9vbCBvcGVyYXRvciEgKHZvaWQpIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yIQor KyAgeyByZXR1cm4gIWZvb187IH0KKysKKysgIGJvb2wgb3BlcmF0b3ImJiAoYmFzZSBjb25zdCYg bykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3ImJgorKyAgeyByZXR1cm4gZm9vXyAmJiBvLmZvb187 IH0KKysKKysgIGJvb2wgb3BlcmF0b3J8fCAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6 b3BlcmF0b3J8fAorKyAgeyByZXR1cm4gZm9vXyB8fCBvLmZvb187IH0KKysKKysgIGludCBvcGVy YXRvcjw8IChpbnQgdmFsdWUpIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yPDwKKysgIHsgcmV0dXJu IGZvb18gIDw8IHZhbHVlOyB9CisrCisrICBiYXNlIG9wZXJhdG9yPDw9IChpbnQgdmFsdWUpIC8v IGJhc2U6Om9wZXJhdG9yPDw9CisrICB7IGZvb18gPDw9IHZhbHVlOyByZXR1cm4gKnRoaXM7IH0K KysKKysgIGludCBvcGVyYXRvcj4+IChpbnQgdmFsdWUpIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9y Pj4KKysgIHsgcmV0dXJuIGZvb18gID4+IHZhbHVlOyB9CisrCisrICBiYXNlIG9wZXJhdG9yPj49 IChpbnQgdmFsdWUpIC8vIGJhc2U6Om9wZXJhdG9yPj49CisrICB7IGZvb18gPj49IHZhbHVlOyBy ZXR1cm4gKnRoaXM7IH0KKysKKysgIGludCBvcGVyYXRvcn4gKHZvaWQpIGNvbnN0IC8vIGJhc2U6 Om9wZXJhdG9yfgorKyAgeyByZXR1cm4gfmZvb187IH0KKysKKysgIGludCBvcGVyYXRvciYgKGJh c2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yJgorKyAgeyByZXR1cm4gZm9vXyAm IG8uZm9vXzsgfQorKworKyAgYmFzZSBvcGVyYXRvciY9IChiYXNlIGNvbnN0JiBvKSAvLyBiYXNl OjpvcGVyYXRvciY9CisrICB7IGZvb18gJj0gby5mb29fOyByZXR1cm4gKnRoaXM7IH0KKysKKysg IGludCBvcGVyYXRvcnwgKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yfAor KyAgeyByZXR1cm4gZm9vXyB8IG8uZm9vXzsgfQorKworKyAgYmFzZSBvcGVyYXRvcnw9IChiYXNl IGNvbnN0JiBvKSAvLyBiYXNlOjpvcGVyYXRvcnw9CisrICB7IGZvb18gfD0gby5mb29fOyByZXR1 cm4gKnRoaXM7IH0KKysgIAorKyAgaW50IG9wZXJhdG9yXiAoYmFzZSBjb25zdCYgbykgY29uc3Qg Ly8gYmFzZTo6b3BlcmF0b3JeCisrICB7IHJldHVybiBmb29fIF4gby5mb29fOyB9CisrCisrICBi YXNlIG9wZXJhdG9yXj0gKGJhc2UgY29uc3QmIG8pIC8vIGJhc2U6Om9wZXJhdG9yXj0KKysgIHsg Zm9vXyBePSBvLmZvb187IHJldHVybiAqdGhpczsgfQorKworKyAgYmFzZSBvcGVyYXRvcj0gKGJh c2UgY29uc3QmIG8pIC8vIGJhc2U6Om9wZXJhdG9yPQorKyAgeyBmb29fID0gby5mb29fOyByZXR1 cm4gKnRoaXM7IH0KKysKKysgIHZvaWQgb3BlcmF0b3IoKSAodm9pZCkgY29uc3QgLy8gYmFzZTo6 b3BlcmF0b3IoKQorKyAgeyByZXR1cm47IH0KKysKKysgIGludCBvcGVyYXRvcltdIChpbnQgaWR4 KSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcltdCisrICB7IHJldHVybiBpZHg7IH0KKysKKysgIHZv aWQqIG9wZXJhdG9yIG5ldyAoc2l6ZV90IHNpemUpIHRocm93ICgpIC8vIGJhc2U6Om9wZXJhdG9y IG5ldworKyAgeyByZXR1cm4gbWFsbG9jIChzaXplKTsgfQorKworKyAgdm9pZCBvcGVyYXRvciBk ZWxldGUgKHZvaWQqIHB0cikgLy8gYmFzZTo6b3BlcmF0b3IgZGVsZXRlCisrICB7IGZyZWUgKHB0 cik7IH0KKysKKysgIHZvaWQqIG9wZXJhdG9yIG5ld1tdIChzaXplX3Qgc2l6ZSkgdGhyb3cgKCkg Ly8gYmFzZTo6b3BlcmF0b3IgbmV3W10KKysgIHsgcmV0dXJuIG1hbGxvYyAoc2l6ZSk7IH0KKysK KysgIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10gKHZvaWQqIHB0cikgLy8gYmFzZTo6b3BlcmF0b3Ig ZGVsZXRlW10KKysgIHsgZnJlZSAocHRyKTsgfQorKworKyAgYmFzZSBjb25zdCogb3BlcmF0b3It PiAodm9pZCkgY29uc3QgLy8gYmFzZTo6b3BlYXJ0b3ItPgorKyAgeyByZXR1cm4gdGhpczsgfQor KworKyAgaW50IG9wZXJhdG9yLT4qIChiYXNlIGNvbnN0JiBiKSBjb25zdCAvLyBiYXNlOjpvcGVy YXRvci0+KgorKyAgeyAgcmV0dXJuIGZvb18gKiBiLmZvb187IH0KKysKKysgIG9wZXJhdG9yIGNo YXIqICgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Y2hhcio+ICgiaGVsbG8iKTsgfSAvLyBi YXNlOjpvcGVyYXRvciBjaGFyKgorKyAgb3BlcmF0b3IgaW50ICgpIGNvbnN0IHsgcmV0dXJuIDIx OyB9IC8vIGJhc2U6Om9wZXJhdG9yIGludAorKyAgb3BlcmF0b3IgZmx1ZmYqICgpIGNvbnN0IHsg cmV0dXJuIG5ldyBmbHVmZiAoKTsgfSAvLyBiYXNlOjpvcGVyYXRvciBmbHVmZioKKysgIG9wZXJh dG9yIGZsdWZmKiogKCkgY29uc3QgeyByZXR1cm4gJmdfZmx1ZmY7IH0gLy8gYmFzZTo6b3BlcmF0 b3IgZmx1ZmYqKgorK307CisrCisrY2xhc3MgYmFzZTEgOiBwdWJsaWMgdmlydHVhbCBiYXNlCisr eworK3B1YmxpYzoKKysgIGJhc2UxICh2b2lkKSA6IGZvb18gKDIxKSB7IH0gLy8gYmFzZTE6OmJh c2UxKHZvaWQpCisrICBiYXNlMSAoaW50IGEpIDogZm9vXyhhKSB7IH0gLy8gYmFzZTE6OmJhc2Ux KGludCkKKysgIHZvaWQgYV9mdW5jdGlvbiAodm9pZCkgY29uc3QgeyB9IC8vIGJhc2UxOjphX2Z1 bmN0aW9uCisrCisrcHJvdGVjdGVkOgorKyAgaW50IGZvb187CisrfTsKKysKKytjbGFzcyBiYXNl MiA6IHB1YmxpYyB2aXJ0dWFsIGJhc2UKKyt7CisrcHVibGljOgorKyAgYmFzZTIgKCkgOiBmb29f ICgzKSB7IH0gLy8gYmFzZTI6OmJhc2UyCisrCisrcHJvdGVjdGVkOgorKyAgdm9pZCBhX2Z1bmN0 aW9uICh2b2lkKSBjb25zdCB7IH0gLy8gYmFzZTI6OmFfZnVuY3Rpb24KKysgIGludCBmb29fOwor K307CisrCisrY2xhc3MgZGVyaXZlZCA6IHB1YmxpYyBiYXNlMSwgcHVibGljIGJhc2UyCisrewor KyAgcHVibGljOgorKyAgZGVyaXZlZCh2b2lkKSA6IGZvb18gKDQpIHsgfSAvLyBkZXJpdmVkOjpk ZXJpdmVkCisrICB2b2lkIGFfZnVuY3Rpb24gKHZvaWQpIGNvbnN0IC8vIGRlcml2ZWQ6OmFfZnVu Y3Rpb24KKysgIHsgCisrICAgIHRoaXMtPmJhc2UxOjphX2Z1bmN0aW9uICgpOworKyAgICB0aGlz LT5iYXNlMjo6YV9mdW5jdGlvbiAoKTsKKysgIH0KKysKKysgIHByb3RlY3RlZDoKKysgIGludCBm b29fOworK307CisrCisraW50CisrbWFpbiAoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgLy8gbWFp bgorK3sgLy8gbWFpbgorKyAgZGVyaXZlZCBkOworKyAgdm9pZCAoZGVyaXZlZDo6KnBmdW5jKSAo dm9pZCkgY29uc3QgPSAmZGVyaXZlZDo6YV9mdW5jdGlvbjsKKysgIChkLipwZnVuYykgKCk7Cisr CisrICBiYXNlIGEgKDEpLCBiICgzKSwgYyAoOCk7CisrICAodm9pZCkgYS5vdmVybG9hZCAoKTsK KysgICh2b2lkKSBhLm92ZXJsb2FkIChzdGF0aWNfY2FzdDxpbnQ+ICgwKSk7CisrICAodm9pZCkg YS5vdmVybG9hZCAoc3RhdGljX2Nhc3Q8c2hvcnQ+ICgwKSk7CisrICAodm9pZCkgYS5vdmVybG9h ZCAoc3RhdGljX2Nhc3Q8bG9uZz4gKDApKTsKKysgICh2b2lkKSBhLm92ZXJsb2FkIChzdGF0aWNf Y2FzdDxjaGFyKj4gKDApKTsKKysgICh2b2lkKSBhLm92ZXJsb2FkIChhKTsKKysKKysgIGludCBy OworKyAgciA9IGIgKyBjOworKyAgKythOworKyAgYSArPSBiOworKyAgciA9IGIgLSBjOworKyAg LS1hOworKyAgYSAtPSBiOworKyAgciA9IGIgKiBjOworKyAgYSAqPSBiOworKyAgciA9IGIgLyBj OworKyAgYSAvPSBiOworKyAgciA9IGIgJSBjOworKyAgYSAlPSBiOworKyAgYm9vbCB4ID0gKGIg PCBjKTsKKysgIHggPSAoYiA8PSBjKTsKKysgIHggPSAoYiA+IGMpOworKyAgeCA9IChiID49IGMp OworKyAgeCA9IChiICE9IGMpOworKyAgeCA9IChiID09IGMpOworKyAgeCA9ICghYik7CisrICB4 ID0gKGIgJiYgYyk7CisrICB4ID0gKGIgfHwgYyk7CisrICByID0gYiA8PCAyOworKyAgYSA8PD0g MTsKKysgIHIgPSBiID4+IDI7CisrICBhID4+PSAxOworKyAgciA9IH5iOworKyAgciA9IGIgJiBj OworKyAgYSAmPSBjOworKyAgciA9IGIgfCBjOworKyAgYSB8PSBjOworKyAgciA9IGIgXiBjOwor KyAgYSBePSBjOworKyAgYSA9IGM7CisrICBhICgpOworKyAgaW50IGkgPSBhWzNdOworKyAgZGVy aXZlZCogZiA9IG5ldyBkZXJpdmVkICgpOworKyAgZGVyaXZlZCogZyA9IG5ldyBkZXJpdmVkWzNd OworKyAgZGVsZXRlIGY7CisrICBkZWxldGVbXSBnOworKyAgYS0+b3ZlcmxvYWQgKCk7CisrICBy ID0gYS0+KmI7CisrCisrICB0Y2xhc3M8Y2hhcj4gY2hhcl90Y2xhc3M7CisrICB0Y2xhc3M8aW50 PiBpbnRfdGNsYXNzOworKyAgdGNsYXNzPHNob3J0PiBzaG9ydF90Y2xhc3M7CisrICB0Y2xhc3M8 bG9uZz4gbG9uZ190Y2xhc3M7CisrICB0Y2xhc3M8YmFzZT4gYmFzZV90Y2xhc3M7CisrICBjaGFy X3RjbGFzcy5kb19zb21ldGhpbmcgKCk7CisrICBpbnRfdGNsYXNzLmRvX3NvbWV0aGluZyAoKTsK KysgIHNob3J0X3RjbGFzcy5kb19zb21ldGhpbmcgKCk7CisrICBsb25nX3RjbGFzcy5kb19zb21l dGhpbmcgKCk7CisrICBiYXNlX3RjbGFzcy5kb19zb21ldGhpbmcgKCk7CisrCisrICBmbHViYmVy PGludCwgaW50LCBpbnQsIGludCwgaW50PiAoKTsKKysgIGZsdWJiZXI8aW50LCBpbnQsIGludCwg aW50LCBzaG9ydD4gKCk7CisrICBmbHViYmVyPGludCwgaW50LCBpbnQsIGludCwgbG9uZz4gKCk7 CisrICBmbHViYmVyPGludCwgaW50LCBpbnQsIGludCwgY2hhcj4gKCk7CisrICBmbHViYmVyPGlu dCwgaW50LCBpbnQsIHNob3J0LCBpbnQ+ICgpOworKyAgZmx1YmJlcjxpbnQsIGludCwgaW50LCBz aG9ydCwgc2hvcnQ+ICgpOworKyAgZmx1YmJlcjxpbnQsIGludCwgaW50LCBzaG9ydCwgbG9uZz4g KCk7CisrICBmbHViYmVyPGludCwgaW50LCBpbnQsIHNob3J0LCBjaGFyPiAoKTsKKysgIGZsdWJi ZXI8aW50LCBpbnQsIGludCwgbG9uZywgaW50PiAoKTsKKysgIGZsdWJiZXI8aW50LCBpbnQsIGlu dCwgbG9uZywgc2hvcnQ+ICgpOworKyAgZmx1YmJlcjxpbnQsIGludCwgaW50LCBsb25nLCBsb25n PiAoKTsKKysgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgbG9uZywgY2hhcj4gKCk7CisrICBmbHVi YmVyPGludCwgaW50LCBpbnQsIGNoYXIsIGludD4gKCk7CisrICBmbHViYmVyPGludCwgaW50LCBp bnQsIGNoYXIsIHNob3J0PiAoKTsKKysgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgY2hhciwgbG9u Zz4gKCk7CisrICBmbHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIsIGNoYXI+ICgpOworKyAgZmx1 YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwgaW50PiAoKTsKKysgIGZsdWJiZXI8aW50LCBpbnQs IHNob3J0LCBpbnQsIHNob3J0PiAoKTsKKysgIGZsdWJiZXI8aW50LCBpbnQsIHNob3J0LCBpbnQs IGxvbmc+ICgpOworKyAgZmx1YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwgY2hhcj4gKCk7Cisr ICBmbHViYmVyPGludCwgaW50LCBzaG9ydCwgc2hvcnQsIGludD4gKCk7CisrICBmbHViYmVyPHNo b3J0LCBpbnQsIHNob3J0LCBpbnQsIHNob3J0PiAoKTsKKysgIGZsdWJiZXI8bG9uZywgc2hvcnQs IGxvbmcsIHNob3J0LCBsb25nPiAoKTsKKysKKysgIHBvbGljeTEgcDEgKDEpOworKyAgcDEuZnVu Y3Rpb24gKCk7CisrICBwb2xpY3kyIHAyICgyKTsKKysgIHAyLmZ1bmN0aW9uICgpOworKyAgcG9s aWN5MyBwMyAoMyk7CisrICBwMy5mdW5jdGlvbiAoKTsKKysgIHBvbGljeTQgcDQgKDQpOworKyAg cDQuZnVuY3Rpb24gKCk7CisrCisrICBwb2xpY3lkMSBwZDEgKDUpOworKyAgcGQxLmZ1bmN0aW9u ICgpOworKyAgcG9saWN5ZDIgcGQyICg2KTsKKysgIHBkMi5mdW5jdGlvbiAoKTsKKysgIHBvbGlj eWQzIHBkMyAoNyk7CisrICBwZDMuZnVuY3Rpb24gKCk7CisrICBwb2xpY3lkNCBwZDQgKGQpOwor KyAgcGQ0LmZ1bmN0aW9uICgpOworKyAgcG9saWN5ZDUgcGQ1IChpbnRfdGNsYXNzKTsKKysgIHBk NS5mdW5jdGlvbiAoKTsKKysKKysgIGJhc2UxIGIxICgzKTsKKysKKysgIHIgPSBhOworKyAgY2hh ciogc3RyID0gYTsKKysgIGZsdWZmKiBmbHAgPSBhOworKyAgZmx1ZmYqKiBmbHBwID0gYTsKKyt9 CisrCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcmVhbGNwcC5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5jcC9yZWFsY3BwLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAuLjRlOTJlNzUKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL3JlYWxjcHAuZXhwCitAQCAtMCwwICsxLDg5MSBAQAorKyMgQ29weXJpZ2h0IDIwMDggRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorKworKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuCisrCisr IyMjCisrIworKyMgU09NRSBJTVBPUlRBTlQgTk9URVMKKysjCisrIyMjCisrCisrIyBUaGUgImlu Zm8gZnVuYyIgdGVzdHMgaGVyZSBhcmVuJ3QgY29tcGxldGUuIEkndmUgY29tbWVudGVkIHRoZW0K KysjIG91dCBmb3Igbm93LgorKworKyMgQSBoZWxwZXIgcHJvYyB3aGljaCBzZXRzIGEgYnJlYWtw b2ludCBhdCBGVU5DIGFuZCBhdHRlbXB0cyB0bworKyMgcnVuIHRvIHRoZSBicmVha3BvaW50Lgor K3Byb2MgdGVzdF9icmVha3BvaW50IHtmdW5jfSB7CisrICAgIGdsb2JhbCBERUMKKysKKysgICAg IyBSZXN0YXJ0IGV2ZXJ5IHRpbWUKKysgICAgaWYgeyFbcnVudG9fbWFpbl19IHsKKysJcGVycm9y ICJjb3VsZCBub3QgcnVuIHRvIG1haW4gd2hlbiBhdHRlbXB0aW5nIHRvIGJyZWFrIGF0ICRmdW5j IgorKwljb250aW51ZQorKyAgICB9IGVsc2UgeworKwlnZGJfYnJlYWtwb2ludCAiJGZ1bmMiCisr CXNldCBpIFtleHByIHtbc3RyaW5nIGxhc3QgOiAkZnVuY10gKyAxfV0KKysJc2V0IGVmdW5jIFtl c2NhcGUgW3N0cmluZyByYW5nZSAkZnVuYyAkaSBlbmRdXQorKwlnZGJfdGVzdCAiY29udGludWUi IFwKKysJICAgICJDb250aW51aW5nLlxyXG5cclxuQnJlYWtwb2ludCAkREVDKywuKiRlZnVuYy4q IiBcCisrCSAgICAiY29udGludWUgdG8gJGZ1bmMiCisrICAgIH0KKyt9CisrCisrIyBFc2NhcGUg ZXhwZWN0LXJlc2VydmVkIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZworK3Byb2MgZXNjYXBlIHtz dHJpbmd9IHsKKysgICAgcmVnc3ViIC1hbGwge1wqfSAkc3RyaW5nIHtcKn0gc3RyaW5nCisrICAg IHJlZ3N1YiAtYWxsIHtcKH0gJHN0cmluZyB7XCh9IHN0cmluZworKyAgICByZWdzdWIgLWFsbCB7 XCl9ICRzdHJpbmcge1wpfSBzdHJpbmcKKysgICAgcmVnc3ViIC1hbGwge1xdfSAkc3RyaW5nIHtc XX0gc3RyaW5nCisrICAgIHJlZ3N1YiAtYWxsIHtcW30gJHN0cmluZyB7XFt9IHN0cmluZworKyAg ICByZWdzdWIgLWFsbCB7XCt9ICRzdHJpbmcge1wrfSBzdHJpbmcKKysgICAgcmVnc3ViIC1hbGwg e1xefSAkc3RyaW5nIHtcXn0gc3RyaW5nCisrICAgIHJlZ3N1YiAtYWxsIHtcIX0gJHN0cmluZyB7 XCF9IHN0cmluZworKyAgICByZXR1cm4gJHN0cmluZworK30KKysKKysjIEFkZCBhIGZ1bmN0aW9u IHRvIHRoZSBsaXN0IG9mIHRlc3RlZCBmdW5jdGlvbnMKKysjIEZVTkMgaXMgdGhlIG5hbWUgb2Yg dGhlIGZ1bmN0aW9uICh3aGljaCB3aWxsIGJlIHBhc3NlZCB0byBnZGIgY29tbWFuZHMpCisrIyBU WVBFIGlzIHRoZSB0eXBlIG9mIHRoZSBmdW5jdGlvbiwgYXMgZXhwZWN0ZWQgZnJvbSB0aGUgInBy aW50IiBjb21tYW5kCisrIyBQUklOVCBpcyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24sIGFzIGV4 cGVjdGVkIHJlc3VsdCBvZiB0aGUgcHJpbnQgY29tbWFuZAorKyMgICpPUiogIi0iLCBpbmRpY2F0 aW5nIHRoYXQgRlVOQyBzaG91bGQgYmUgdXNlZCAobmVlZGVkIGZvciB2aXJ0dWFsL2luaGVyaXRl ZAorKyMgICBmdW5jcykKKysjIExTVCBpcyBlaXRoZXIgdGhlIGV4cGVjdGVkIHJlc3VsdCBvZiB0 aGUgbGlzdCBjb21tYW5kICh0aGUgY29tbWVudCBmcm9tCisrIyAgdGhlIHNvdXJjZSBjb2RlKSAq T1IqICItIiwgaW4gd2hpY2ggY2FzZSBGVU5DIHdpbGwgYmUgdXNlZAorKyMgSU5GIGlzIHRoZSBl eHBlY3RlZCByZXN1bHQgb2YgImluZm8gZnVuYyIKKysjCisrIyBJZiBhbnkgb2YgUFJJTlQsIExT VCwgb3IgSU5GIGlzICIiLCB0aGUgdGVzdCB3aWxsIGJlIHNraXBwZWQKKysjCisrIyBVc2FnZToK KysjIGFkZCBOQU1FIFRZUEUgUFJJTlQgTFNUIElORk8KKysjIGFkZCBOQU1FIFRZUEUgUFJJTlQg LSBJTkZPCisrcHJvYyBhZGQge2Z1bmMgdHlwZSBwcmludCBsc3QgaW5mfSB7CisrICAgIGdsb2Jh bCBhbGxfZnVuY3Rpb25zIENPTlZBUiBBRERSCisrCisrICAgIHNldCBhbGxfZnVuY3Rpb25zKCRm dW5jLHR5cGUpICR0eXBlCisrICAgIGlmIHskcHJpbnQgPT0gIi0ifSB7CisrCXNldCBwcmludCAk ZnVuYworKyAgICB9CisrCisrICAgICMgQW4gZXhjZXB0aW9uOiBzaW5jZSBnZGIgY2Fub25pY2Fs aXplcyBDKysgb3V0cHV0LAorKyAgICAjICIodm9pZCkiIG11c3QgYmUgbXV0YXRlZCB0byAiKCki LgorKyAgICBzZXQgcHJpbnQgW3JlZ3N1YiB7XCh2b2lkXCl9ICRwcmludCB7KCl9XQorKworKyAg ICBzZXQgYWxsX2Z1bmN0aW9ucygkZnVuYyxwcmludCkgXAorKwkiJENPTlZBUiA9IHtbZXNjYXBl ICR0eXBlXX0gJEFERFIgPFtlc2NhcGUgJHByaW50XS4qPiIKKysgICAgaWYgeyRsc3QgPT0gIi0i fSB7CisrCXNldCBsc3QgIiRmdW5jIgorKyAgICB9CisrICAgIHNldCBhbGxfZnVuY3Rpb25zKCRm dW5jLGxpc3QpICIuKi8vIFtlc2NhcGUgJGxzdF0iCisrICAgIHNldCBhbGxfZnVuY3Rpb25zKCRm dW5jLGluZm9fZnVuYykgJGluZgorK30KKysKKytwcm9jIGdldCB7ZnVuYyBjbWR9IHsKKysgICAg Z2xvYmFsIGFsbF9mdW5jdGlvbnMKKysgICAgcmV0dXJuICRhbGxfZnVuY3Rpb25zKCRmdW5jLCRj bWQpCisrfQorKworKyMgUmV0dXJucyBhIGxpc3Qgb2YgZnVuY3Rpb24gbmFtZXMgZm9yIGEgZ2l2 ZW4gY29tbWFuZAorK3Byb2MgZ2V0X2Z1bmN0aW9ucyB7Y21kfSB7CisrICAgIGdsb2JhbCBhbGxf ZnVuY3Rpb25zCisrICAgIHNldCByZXN1bHQge30KKysgICAgZm9yZWFjaCBpIFthcnJheSBuYW1l cyBhbGxfZnVuY3Rpb25zICosJGNtZF0geworKwlpZiB7JGFsbF9mdW5jdGlvbnMoJGkpICE9ICIi fSB7CisrCSAgICBzZXQgaWR4IFtzdHJpbmcgbGFzdCAsICRpXQorKwkgICAgaWYgeyRpZHggIT0g LTF9IHsKKysJCWxhcHBlbmQgcmVzdWx0IFtzdHJpbmcgcmFuZ2UgJGkgMCBbZXhwciB7JGlkeCAt IDF9XV0KKysJICAgIH0KKysJfQorKyAgICB9CisrCisrICAgIHJldHVybiBbbHNvcnQgJHJlc3Vs dF0KKyt9CisrCisrIyBTb21lIGNvbnZlbmllbmNlIHZhcmlhYmxlcyBmb3IgdGhpcyB0ZXN0Cisr c2V0IERFQyB7WzAtOV19OyAjIGEgZGVjaW1hbCBudW1iZXIKKytzZXQgSEVYIHtbMC05YS1mQS1G XX07ICMgYSBoZXhpZGVjaW1hbCBudW1iZXIKKytzZXQgQ09OVkFSICJcXFwkJERFQysiOyAjIGNv bnZlbmllbmNlIHZhcmlhYmxlIHJlZ2V4cAorK3NldCBBRERSICIweCRIRVgrIjsgIyBhZGRyZXNz CisrCisrIyBBbiBhcnJheSBvZiBmdW5jdGlvbnMvbWV0aG9kcyB0aGF0IHdlIGFyZSB0ZXN0aW5n Li4uCisrIyBFYWNoIGVsZW1lbnQgY29uc2lzdHMgaXMgaW5kZXhlZCBieSBOQU1FLENPTU1BTkQs IHdoZXJlCisrIyBOQU1FIGlzIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCBDT01NQU5EIGlzIHRoZSBn ZGIgY29tbWFuZCB0aGF0CisrIyB3ZSBhcmUgdGVzdGluZy4gVGhlIHZhbHVlIG9mIHRoZSBhcnJh eSBmb3IgYW55IGluZGV4IHBhaXIgaXMKKysjIHRoZSBleHBlY3RlZCByZXN1bHQgb2YgcnVubmlu ZyBDT01NQU5EIHdpdGggdGhlIE5BTUUgYXMgYXJndW1lbnQuCisrIyBJZiB0aGUgdmFsdWUgaXMg YmxhbmssIHRoZSB0ZXN0IHdpbGwgYmUgc2tpcHBlZCBmb3IgdGhlIGdpdmVuIGZ1bmN0aW9uLgor KworKyMgVGhlIGFycmF5IGhvbGRpbmcgYWxsIGZ1bmN0aW9ucy9tZXRob2RzIHRvIHRlc3QuIFZh bGlkIHN1YmluZGV4ZXMKKysjIGFyZSAobm9uZSBuZWVkIGNoYXJhY3RlciBlc2NhcGluZyAtLSAi YWRkIiB3aWxsIHRha2UgY2FyZSBvZiB0aGF0KToKKysKKysjIGFkZCBuYW1lIHR5cGUgcHJpbnRf bmFtZSBsaXN0IGluZm9fZnVuYworKyMgTkFNRSx0eXBlOiB2YWx1ZSBpcyB0eXBlIG9mIGZ1bmN0 aW9uIAorKyMgTkFNRSxwcmludDogdmFsdWUgaXMgcHJpbnQgbmFtZSBvZiBmdW5jdGlvbiAoY2Fy ZWZ1bCB3L2luaGVyaXRlZC92aXJ0dWFsISkKKysjIE5BTUUsbGlzdDogdmFsdWUgaXMgY29tbWVu dCBpbiBzb3VyY2UgY29kZSBvbiBmaXJzdCBsaW5lIG9mIGZ1bmN0aW9uCisrIyAgICh3aXRob3V0 IHRoZSBsZWFkaW5nICIvLyIpCisrIyBOQU1FLGluZm9fZnVuYzogdmFsdWUgaXMgdGhlIGV4cGVj dGVkIHJlc3VsdCBvZiAiaW5mbyBmdW5jIgorK2FycmF5IHNldCBhbGxfZnVuY3Rpb25zIHt9Cisr CisrIyAiTm9ybWFsIiBmdW5jdGlvbnMvbWV0aG9kcworK2FkZCB7bWFpbn0gXAorKyAgICB7aW50 IChpbnQsIGNoYXIgKiopfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAge2ludCBtYWluKGlu dCwgY2hhciAqKik7fQorK2FkZCB7ZGVyaXZlZDo6YV9mdW5jdGlvbn0gXAorKyAgICB7dm9pZCAo Y29uc3QgZGVyaXZlZCAqIGNvbnN0KX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIHt2b2lk IGRlcml2ZWQ6OmFfZnVuY3Rpb24oKTt9CisrYWRkIHtiYXNlMTo6YV9mdW5jdGlvbn0gXAorKyAg ICB7dm9pZCAoY29uc3QgYmFzZTEgKiBjb25zdCl9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAg ICB7dm9pZCBiYXNlMTo6YV9mdW5jdGlvbigpO30KKythZGQge2Jhc2UyOjphX2Z1bmN0aW9ufSBc CisrICAgIHt2b2lkIChjb25zdCBiYXNlMiAqIGNvbnN0KX0gXAorKyAgICAtIFwKKysgICAgLSBc CisrICAgIHt2b2lkIGJhc2UyOjphX2Z1bmN0aW9uKCk7fQorKworKyMgQ29uc3RydWN0b3JzCisr YWRkIHtkZXJpdmVkOjpkZXJpdmVkfSBcCisrICAgIHt2b2lkIChkZXJpdmVkICogY29uc3QpfSBc CisrICAgIC0gXAorKyAgICAtIFwKKysgICAge3ZvaWQgZGVyaXZlZDo6ZGVyaXZlZCgpO30KKyth ZGQge2Jhc2UxOjpiYXNlMSh2b2lkKX0gXAorKyAgICB7dm9pZCAoYmFzZTEgKiBjb25zdCwgY29u c3Qgdm9pZCAqKiBjb25zdCl9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICB7dm9pZCBiYXNl MTo6YmFzZTEoKTt9CisrYWRkIHtiYXNlMTo6YmFzZTEoaW50KX0gXAorKyAgICB7dm9pZCAoYmFz ZTEgKiBjb25zdCwgaW50KX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIHt2b2lkIGJhc2Ux OjpiYXNlMShpbnQpO30KKythZGQge2Jhc2UyOjpiYXNlMn0gXAorKyAgICB7dm9pZCAoYmFzZTIg KiBjb25zdCwgY29uc3Qgdm9pZCAqKiBjb25zdCl9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAg ICB7dm9pZCBiYXNlMjo6YmFzZTIoKTt9CisrYWRkIHtiYXNlOjpiYXNlKHZvaWQpfSBcCisrICAg IHt2b2lkIChiYXNlICogY29uc3QpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAge3ZvaWQg YmFzZTo6YmFzZSgpO30KKythZGQge2Jhc2U6OmJhc2UoaW50KX0gXAorKyAgICB7dm9pZCAoYmFz ZSAqIGNvbnN0LCBpbnQpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAge3ZvaWQgYmFzZTo6 YmFzZSgpO30KKysKKysjIERlc3RydWN0b3JzCisrYWRkIHtiYXNlOjp+YmFzZX0gXAorKyAgICB7 dm9pZCAoYmFzZSAqIGNvbnN0KX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIHt2b2lkIGJh c2U6On5iYXNlKCk7fQorKworKyMgT3ZlcmxvYWRlZCBtZXRob2RzIChhbGwgYXJlIGNvbnN0IC0t IHdlIHRyeSB0byB1c2UgdGhlIHZvaWQKKysjIG1ldGhvZCB3aXRoIGFuZCB3aXRob3V0IHNwZWNp ZnlpbmcgImNvbnN0IikKKythZGQge2Jhc2U6Om92ZXJsb2FkKHZvaWQpfSBcCisrICAgIHtpbnQg KGNvbnN0IGJhc2UgKiBjb25zdCl9IFwKKysgICAgLSBcCisrICAgIHtiYXNlOjpvdmVybG9hZCh2 b2lkKSBjb25zdH0gXAorKyAgICB7aW50IGJhc2U6Om92ZXJsb2FkKCkgY29uc3Q7fQorK2FkZCB7 YmFzZTo6b3ZlcmxvYWQodm9pZCkgY29uc3R9IFwKKysgICAge2ludCAoY29uc3QgYmFzZSAqIGNv bnN0KX0gXAorKyAgICAtIFwKKysgICAge2Jhc2U6Om92ZXJsb2FkKHZvaWQpIGNvbnN0fSBcCisr ICAgIHtpbnQgYmFzZTo6b3ZlcmxvYWQoKSBjb25zdDt9CisrYWRkIHtiYXNlOjpvdmVybG9hZChp bnQpIGNvbnN0fSBcCisrICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgaW50KX0gXAorKyAg ICAtIFwKKysgICAgLSBcCisrICAgIHtpbnQgYmFzZTo6b3ZlcmxvYWQoaW50KSBjb25zdDt9Cisr YWRkIHtiYXNlOjpvdmVybG9hZChzaG9ydCkgY29uc3R9IFwKKysgICAge2ludCAoY29uc3QgYmFz ZSAqIGNvbnN0LCBzaG9ydCl9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICB7aW50IGJhc2U6 Om92ZXJsb2FkKHNob3J0KSBjb25zdDt9CisrYWRkIHtiYXNlOjpvdmVybG9hZChsb25nKSBjb25z dH0gXAorKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGxvbmcpfSBcCisrICAgIC0gXAor KyAgICAtIFwKKysgICAge2ludCBiYXNlOjpvdmVybG9hZChsb25nKSBjb25zdDt9CisrYWRkIHti YXNlOjpvdmVybG9hZChjaGFyKikgY29uc3R9IFwKKysgICAge2ludCAoY29uc3QgYmFzZSAqIGNv bnN0LCBjaGFyICopfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAge2ludCBiYXNlOjpvdmVy bG9hZChjaGFyICopIGNvbnN0O30KKythZGQge2Jhc2U6Om92ZXJsb2FkKGJhc2UmKSBjb25zdH0g XAorKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGJhc2UgJil9IFwKKysgICAgLSBcCisr ICAgIC0gXAorKyAgICB7aW50IGJhc2U6Om92ZXJsb2FkKGJhc2UgJikgY29uc3Q7fQorKworKyMg T3BlcmF0b3JzCisrYWRkIHtiYXNlOjpvcGVyYXRvcit9IFwKKysgICAge2ludCAoY29uc3QgYmFz ZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAgLQor K2FkZCB7YmFzZTo6b3BlcmF0b3IrK30gXAorKyAgICB7YmFzZSAoYmFzZSAqIGNvbnN0KX0gXAor KyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yKz19IFwKKysg ICAge2Jhc2UgKGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAg LSBcCisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yLX0gXAorKyAgICB7aW50IChjb25zdCBi YXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICAt CisrYWRkIHtiYXNlOjpvcGVyYXRvci0tfSBcCisrICAgIHtiYXNlIChiYXNlICogY29uc3QpfSBc CisrICAgIC0gXAorKyAgICAtIFwKKysgICAgLQorK2FkZCB7YmFzZTo6b3BlcmF0b3ItPX0gXAor KyAgICB7YmFzZSAoYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCisrICAgIC0gXAorKyAg ICAtIFwKKysgICAgLQorK2FkZCB7YmFzZTo6b3BlcmF0b3IqfSBcCisrICAgIHtpbnQgKGNvbnN0 IGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAg IC0KKythZGQge2Jhc2U6Om9wZXJhdG9yKj19IFwKKysgICAge2Jhc2UgKGJhc2UgKiBjb25zdCwg Y29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQge2Jhc2U6 Om9wZXJhdG9yL30gXAorKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2Ug Jil9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRvci89 fSBcCisrICAgIHtiYXNlIChiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKKysgICAgLSBc CisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRvciV9IFwKKysgICAge2ludCAo Y29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCisrICAgIC0gXAorKyAgICAtIFwK KysgICAgLQorK2FkZCB7YmFzZTo6b3BlcmF0b3IlPX0gXAorKyAgICB7YmFzZSAoYmFzZSAqIGNv bnN0LCBjb25zdCBiYXNlICYpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAgLQorK2FkZCB7 YmFzZTo6b3BlcmF0b3I8fSBcCisrICAgIHtib29sIChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0 IGJhc2UgJil9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVy YXRvcjw9fSBcCisrICAgIHtib29sIChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9 IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRvcj59IFwK KysgICAge2Jvb2wgKGNvbnN0IGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAt IFwKKysgICAgLSBcCisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yPj19IFwKKysgICAge2Jv b2wgKGNvbnN0IGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAg LSBcCisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yIT19IFwKKysgICAge2Jvb2wgKGNvbnN0 IGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAg IC0KKythZGQge2Jhc2U6Om9wZXJhdG9yPT19IFwKKysgICAge2Jvb2wgKGNvbnN0IGJhc2UgKiBj b25zdCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQg e2Jhc2U6Om9wZXJhdG9yIX0gXAorKyAgICB7Ym9vbCAoY29uc3QgYmFzZSAqIGNvbnN0KX0gXAor KyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yJiZ9IFwKKysg ICAge2Jvb2wgKGNvbnN0IGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwK KysgICAgLSBcCisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yfHx9IFwKKysgICAge2Jvb2wg KGNvbnN0IGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAgLSBc CisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yPDx9IFwKKysgICAge2ludCAoY29uc3QgYmFz ZSAqIGNvbnN0LCBpbnQpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAgLQorK2FkZCB7YmFz ZTo6b3BlcmF0b3I8PD19IFwKKysgICAge2Jhc2UgKGJhc2UgKiBjb25zdCwgaW50KX0gXAorKyAg ICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yPj59IFwKKysgICAg e2ludCAoY29uc3QgYmFzZSAqIGNvbnN0LCBpbnQpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysg ICAgLQorK2FkZCB7YmFzZTo6b3BlcmF0b3I+Pj19IFwKKysgICAge2Jhc2UgKGJhc2UgKiBjb25z dCwgaW50KX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJh dG9yfn0gXAorKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QpfSBcCisrICAgIC0gXAorKyAg ICAtIFwKKysgICAgLQorK2FkZCB7YmFzZTo6b3BlcmF0b3ImfSBcCisrICAgIHtpbnQgKGNvbnN0 IGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAg IC0KKythZGQge2Jhc2U6Om9wZXJhdG9yJj19IFwKKysgICAge2Jhc2UgKGJhc2UgKiBjb25zdCwg Y29uc3QgYmFzZSAmKX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQge2Jhc2U6 Om9wZXJhdG9yfH0gXAorKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2Ug Jil9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRvcnw9 fSBcCisrICAgIHtiYXNlIChiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKKysgICAgLSBc CisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRvcl59IFwKKysgICAge2ludCAo Y29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCisrICAgIC0gXAorKyAgICAtIFwK KysgICAgLQorK2FkZCB7YmFzZTo6b3BlcmF0b3JePX0gXAorKyAgICB7YmFzZSAoYmFzZSAqIGNv bnN0LCBjb25zdCBiYXNlICYpfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAgLQorK2FkZCB7 YmFzZTo6b3BlcmF0b3I9fSBcCisrICAgIHtiYXNlIChiYXNlICogY29uc3QsIGNvbnN0IGJhc2Ug Jil9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRvcigp fSBcCisrICAgIHt2b2lkIChjb25zdCBiYXNlICogY29uc3QpfSBcCisrICAgIC0gXAorKyAgICAt IFwKKysgICAgLQorK2FkZCB7YmFzZTo6b3BlcmF0b3JbXX0gXAorKyAgICB7aW50IChjb25zdCBi YXNlICogY29uc3QsIGludCl9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHti YXNlOjpvcGVyYXRvciBuZXd9IFwKKysgICAge3ZvaWQgKihzaXplX3QpfSBcCisrICAgIC0gXAor KyAgICAtIFwKKysgICAgLQorK2FkZCB7YmFzZTo6b3BlcmF0b3IgZGVsZXRlfSBcCisrICAgIHt2 b2lkICh2b2lkICopfSBcCisrICAgIC0gXAorKyAgICAtIFwKKysgICAgLQorK2FkZCB7YmFzZTo6 b3BlcmF0b3IgbmV3W119IFwKKysgICAge3ZvaWQgKihzaXplX3QpfSBcCisrICAgIC0gXAorKyAg ICAtIFwKKysgICAgLQorK2FkZCB7YmFzZTo6b3BlcmF0b3IgZGVsZXRlW119IFwKKysgICAge3Zv aWQgKHZvaWQgKil9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpv cGVyYXRvciBjaGFyKn0gXAorKyAgICB7Y2hhciAqKGNvbnN0IGJhc2UgKiBjb25zdCl9IFwKKysg ICAgLSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtiYXNlOjpvcGVyYXRvciBmbHVmZip9IFwK KysgICAge2ZsdWZmICooY29uc3QgYmFzZSAqIGNvbnN0KX0gXAorKyAgICAtIFwKKysgICAgLSBc CisrICAgIC0KKythZGQge2Jhc2U6Om9wZXJhdG9yIGZsdWZmKip9IFwKKysgICAge2ZsdWZmICoq KGNvbnN0IGJhc2UgKiBjb25zdCl9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICAtCisrYWRk IHtiYXNlOjpvcGVyYXRvciBpbnR9IFwKKysgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0KX0g XAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKysKKysjIFRlbXBsYXRlcworK2FkZCB7dGNs YXNzPGNoYXI+Ojpkb19zb21ldGhpbmd9IFwKKysgICAge3ZvaWQgKHRjbGFzczxjaGFyPiAqIGNv bnN0KX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAgIC0KKythZGQge3RjbGFzczxpbnQ+Ojpk b19zb21ldGhpbmd9IFwKKysgICAge3ZvaWQgKHRjbGFzczxpbnQ+ICogY29uc3QpfSBcCisrICAg IC0gXAorKyAgICAtIFwKKysgICAgLQorK2FkZCB7dGNsYXNzPGxvbmc+Ojpkb19zb21ldGhpbmd9 IFwKKysgICAge3ZvaWQgKHRjbGFzczxsb25nPiAqIGNvbnN0KX0gXAorKyAgICAtIFwKKysgICAg LSBcCisrICAgIC0KKythZGQge3RjbGFzczxzaG9ydD46OmRvX3NvbWV0aGluZ30gXAorKyAgICB7 dm9pZCAodGNsYXNzPHNob3J0PiAqIGNvbnN0KX0gXAorKyAgICAtIFwKKysgICAgLSBcCisrICAg IC0KKythZGQge3RjbGFzczxiYXNlPjo6ZG9fc29tZXRoaW5nfSBcCisrICAgIHt2b2lkICh0Y2xh c3M8YmFzZT4gKiBjb25zdCl9IFwKKysgICAgLSBcCisrICAgIC0gXAorKyAgICAtCisrYWRkIHtm bHViYmVyPGludCwgaW50LCBpbnQsIGludCwgaW50Pn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwK KysgICAgLSBcCisrICAgIGZsdWJiZXIgXAorKyAgICAtCisrYWRkIHtmbHViYmVyPGludCwgaW50 LCBpbnQsIGludCwgc2hvcnQ+fSBcCisrICAgIHt2b2lkICh2b2lkKX0gXAorKyAgICAtIFwKKysg ICAgZmx1YmJlciBcCisrICAgIC0KKythZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgaW50LCBs b25nPn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAgLSBcCisrICAgIGZsdWJiZXIgXAor KyAgICAtCisrYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGludCwgY2hhcj59IFwKKysgICAg e3ZvaWQgKHZvaWQpfSBcCisrICAgIC0gXAorKyAgICBmbHViYmVyIFwKKysgICAgLQorK2FkZCB7 Zmx1YmJlcjxpbnQsIGludCwgaW50LCBzaG9ydCwgaW50Pn0gXAorKyAgICB7dm9pZCAodm9pZCl9 IFwKKysgICAgLSBcCisrICAgIGZsdWJiZXIgXAorKyAgICAtCisrYWRkIHtmbHViYmVyPGludCwg aW50LCBpbnQsIHNob3J0LCBzaG9ydD59IFwKKysgICAge3ZvaWQgKHZvaWQpfSBcCisrICAgIC0g XAorKyAgICBmbHViYmVyIFwKKysgICAgLQorK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgaW50LCBz aG9ydCwgbG9uZz59IFwKKysgICAge3ZvaWQgKHZvaWQpfSBcCisrICAgIC0gXAorKyAgICBmbHVi YmVyIFwKKysgICAgLQorK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgaW50LCBzaG9ydCwgY2hhcj59 IFwKKysgICAge3ZvaWQgKHZvaWQpfSBcCisrICAgIC0gXAorKyAgICBmbHViYmVyIFwKKysgICAg LQorK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgaW50LCBsb25nLCBpbnQ+fSBcCisrICAgIHt2b2lk ICh2b2lkKX0gXAorKyAgICAtIFwKKysgICAgZmx1YmJlciBcCisrICAgIC0KKythZGQge2ZsdWJi ZXI8aW50LCBpbnQsIGludCwgbG9uZywgc2hvcnQ+fSBcCisrICAgIHt2b2lkICh2b2lkKX0gXAor KyAgICAtIFwKKysgICAgZmx1YmJlciBcCisrICAgIC0KKythZGQge2ZsdWJiZXI8aW50LCBpbnQs IGludCwgbG9uZywgbG9uZz59IFwKKysgICAge3ZvaWQgKHZvaWQpfSBcCisrICAgIC0gXAorKyAg ICBmbHViYmVyIFwKKysgICAgLQorK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgaW50LCBsb25nLCBj aGFyPn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAgLSBcCisrICAgIGZsdWJiZXIgXAor KyAgICAtCisrYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIsIGludD59IFwKKysgICAg e3ZvaWQgKHZvaWQpfSBcCisrICAgIC0gXAorKyAgICBmbHViYmVyIFwKKysgICAgLQorK2FkZCB7 Zmx1YmJlcjxpbnQsIGludCwgaW50LCBjaGFyLCBzaG9ydD59IFwKKysgICAge3ZvaWQgKHZvaWQp fSBcCisrICAgIC0gXAorKyAgICBmbHViYmVyIFwKKysgICAgLQorK2FkZCB7Zmx1YmJlcjxpbnQs IGludCwgaW50LCBjaGFyLCBsb25nPn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAgLSBc CisrICAgIGZsdWJiZXIgXAorKyAgICAtCisrYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGNo YXIsIGNoYXI+fSBcCisrICAgIHt2b2lkICh2b2lkKX0gXAorKyAgICAtIFwKKysgICAgZmx1YmJl ciBcCisrICAgIC0KKythZGQge2ZsdWJiZXI8aW50LCBpbnQsIHNob3J0LCBpbnQsIGludD59IFwK KysgICAge3ZvaWQgKHZvaWQpfSBcCisrICAgIC0gXAorKyAgICBmbHViYmVyIFwKKysgICAgLQor K2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwgc2hvcnQ+fSBcCisrICAgIHt2b2lk ICh2b2lkKX0gXAorKyAgICAtIFwKKysgICAgZmx1YmJlciBcCisrICAgIC0KKythZGQge2ZsdWJi ZXI8aW50LCBpbnQsIHNob3J0LCBpbnQsIGxvbmc+fSBcCisrICAgIHt2b2lkICh2b2lkKX0gXAor KyAgICAtIFwKKysgICAgZmx1YmJlciBcCisrICAgIC0KKythZGQge2ZsdWJiZXI8aW50LCBpbnQs IHNob3J0LCBpbnQsIGNoYXI+fSBcCisrICAgIHt2b2lkICh2b2lkKX0gXAorKyAgICAtIFwKKysg ICAgZmx1YmJlciBcCisrICAgIC0KKythZGQge2ZsdWJiZXI8aW50LCBpbnQsIHNob3J0LCBzaG9y dCwgaW50Pn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAgLSBcCisrICAgIGZsdWJiZXIg XAorKyAgICAtCisrYWRkIHtmbHViYmVyPHNob3J0LCBpbnQsIHNob3J0LCBpbnQsIHNob3J0Pn0g XAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAgLSBcCisrICAgIGZsdWJiZXIgXAorKyAgICAt CisrYWRkIHtmbHViYmVyPGxvbmcsIHNob3J0LCBsb25nLCBzaG9ydCwgbG9uZz59IFwKKysgICAg e3ZvaWQgKHZvaWQpfSBcCisrICAgIC0gXAorKyAgICBmbHViYmVyIFwKKysgICAgLQorK2FkZCB7 dGNsYXNzPGJhc2U+Ojpkb19zb21ldGhpbmd9IFwKKysgICAge3ZvaWQgKHRjbGFzczxiYXNlPiAq IGNvbnN0KX0gXAorKyAgICAtIFwKKysgICAge3RjbGFzczxUPjo6ZG9fc29tZXRoaW5nfSBcCisr ICAgIC0KKythZGQge3BvbGljeTE6OnBvbGljeX0gXAorKyAgICB7dm9pZCAocG9saWN5PGludCwg b3BlcmF0aW9uXzE8dm9pZCo+ID4gKiBjb25zdCwgaW50KX0gXAorKyAgICB7cG9saWN5PGludCwg b3BlcmF0aW9uXzE8dm9pZCo+ID46OnBvbGljeX0gXAorKyAgICB7cG9saWN5PFQsIFBvbGljeT46 OnBvbGljeX0gXAorKyAgICAtCisrYWRkIHtwb2xpY3kyOjpwb2xpY3l9IFwKKysgICAge3ZvaWQg KHBvbGljeTxpbnQsIG9wZXJhdGlvbl8yPHZvaWQqPiA+ICogY29uc3QsIGludCl9IFwKKysgICAg e3BvbGljeTxpbnQsIG9wZXJhdGlvbl8yPHZvaWQqPiA+Ojpwb2xpY3l9IFwKKysgICAge3BvbGlj eTxULCBQb2xpY3k+Ojpwb2xpY3l9IFwKKysgICAgLQorK2FkZCB7cG9saWN5Mzo6cG9saWN5fSBc CisrICAgIHt2b2lkIChwb2xpY3k8aW50LCBvcGVyYXRpb25fMzx2b2lkKj4gPiAqIGNvbnN0LCBp bnQpfSBcCisrICAgIHtwb2xpY3k8aW50LCBvcGVyYXRpb25fMzx2b2lkKj4gPjo6cG9saWN5fSBc CisrICAgIHtwb2xpY3k8VCwgUG9saWN5Pjo6cG9saWN5fSBcCisrICAgIC0KKythZGQge3BvbGlj eTQ6OnBvbGljeX0gXAorKyAgICB7dm9pZCAocG9saWN5PGludCwgb3BlcmF0aW9uXzQ8dm9pZCo+ ID4gKiBjb25zdCwgaW50KX0gXAorKyAgICB7cG9saWN5PGludCwgb3BlcmF0aW9uXzQ8dm9pZCo+ ID46OnBvbGljeX0gXAorKyAgICB7cG9saWN5PFQsIFBvbGljeT46OnBvbGljeX0gXAorKyAgICAt CisrYWRkIHtwb2xpY3kxOjpmdW5jdGlvbn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAg e29wZXJhdGlvbl8xPHZvaWQqPjo6ZnVuY3Rpb259IFwKKysgICAge29wZXJhdGlvbl8xPFQ+Ojpm dW5jdGlvbn0gXAorKyAgICAtCisrYWRkIHtwb2xpY3kyOjpmdW5jdGlvbn0gXAorKyAgICB7dm9p ZCAodm9pZCl9IFwKKysgICAge29wZXJhdGlvbl8yPHZvaWQqPjo6ZnVuY3Rpb259IFwKKysgICAg e29wZXJhdGlvbl8yPFQ+OjpmdW5jdGlvbn0gXAorKyAgICAtCisrYWRkIHtwb2xpY3kzOjpmdW5j dGlvbn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAge29wZXJhdGlvbl8zPHZvaWQqPjo6 ZnVuY3Rpb259IFwKKysgICAge29wZXJhdGlvbl8zPFQ+OjpmdW5jdGlvbn0gXAorKyAgICAtCisr YWRkIHtwb2xpY3k0OjpmdW5jdGlvbn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAge29w ZXJhdGlvbl80PHZvaWQqPjo6ZnVuY3Rpb259IFwKKysgICAge29wZXJhdGlvbl80PFQ+OjpmdW5j dGlvbn0gXAorKyAgICAtCisrYWRkIHtwb2xpY3lkPGludCwgb3BlcmF0aW9uXzE8aW50PiA+Ojpw b2xpY3lkfSBcCisrICAgIHt2b2lkIChwb2xpY3lkPGludCwgb3BlcmF0aW9uXzE8aW50PiA+ICog Y29uc3QsIGludCl9IFwKKysgICAgLSBcCisrICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGlj eWR9IFwKKysgICAgLQorK2FkZCB7cG9saWN5ZDE6OnBvbGljeWR9IFwKKysgICAge3ZvaWQgKHBv bGljeWQ8aW50LCBvcGVyYXRpb25fMTxpbnQ+ID4gKiBjb25zdCwgaW50KX0gXAorKyAgICB7cG9s aWN5ZDxpbnQsIG9wZXJhdGlvbl8xPGludD4gPjo6cG9saWN5ZH0gXAorKyAgICB7cG9saWN5ZDxU LCBQb2xpY3k+Ojpwb2xpY3lkfSBcCisrICAgIC0KKythZGQge3BvbGljeWQ8aW50LCBvcGVyYXRp b25fMTxpbnQ+ID46On5wb2xpY3lkfSBcCisrICAgIHt2b2lkIChwb2xpY3lkPGludCwgb3BlcmF0 aW9uXzE8aW50PiA+ICogY29uc3QpfSBcCisrICAgIC0gXAorKyAgICB7cG9saWN5ZDxULCBQb2xp Y3k+Ojp+cG9saWN5ZH0gXAorKyAgICAtCisrYWRkIHtwb2xpY3lkMTo6fnBvbGljeWR9IFwKKysg ICAge3ZvaWQgKHBvbGljeWQ8aW50LCBvcGVyYXRpb25fMTxpbnQ+ID4gKiBjb25zdCl9IFwKKysg ICAge3BvbGljeWQ8aW50LCBvcGVyYXRpb25fMTxpbnQ+ID46On5wb2xpY3lkfSBcCisrICAgIHtw b2xpY3lkPFQsIFBvbGljeT46On5wb2xpY3lkfSBcCisrICAgIC0KKythZGQge3BvbGljeWQ8bG9u Zywgb3BlcmF0aW9uXzE8bG9uZz4gPjo6cG9saWN5ZH0gXAorKyAgICB7dm9pZCAocG9saWN5ZDxs b25nLCBvcGVyYXRpb25fMTxsb25nPiA+ICogY29uc3QsIGxvbmcpfSBcCisrICAgIC0gXAorKyAg ICB7cG9saWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkfSBcCisrICAgIC0KKythZGQge3BvbGljeWQy Ojpwb2xpY3lkfSBcCisrICAgIHt2b2lkIChwb2xpY3lkPGxvbmcsIG9wZXJhdGlvbl8xPGxvbmc+ ID4gKiBjb25zdCwgbG9uZyl9IFwKKysgICAge3BvbGljeWQ8bG9uZywgb3BlcmF0aW9uXzE8bG9u Zz4gPjo6cG9saWN5ZH0gXAorKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkfSBcCisr ICAgIC0KKythZGQge3BvbGljeWQ8bG9uZywgb3BlcmF0aW9uXzE8bG9uZz4gPjo6fnBvbGljeWR9 IFwKKysgICAge3ZvaWQgKHBvbGljeWQ8bG9uZywgb3BlcmF0aW9uXzE8bG9uZz4gPiAqIGNvbnN0 KX0gXAorKyAgICAtIFwKKysgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6fnBvbGljeWR9IFwKKysg ICAgLQorK2FkZCB7cG9saWN5ZDI6On5wb2xpY3lkfSBcCisrICAgIHt2b2lkIChwb2xpY3lkPGxv bmcsIG9wZXJhdGlvbl8xPGxvbmc+ID4gKiBjb25zdCl9IFwKKysgICAge3BvbGljeWQ8bG9uZywg b3BlcmF0aW9uXzE8bG9uZz4gPjo6fnBvbGljeWR9IFwKKysgICAge3BvbGljeWQ8VCwgUG9saWN5 Pjo6fnBvbGljeWR9IFwKKysgICAgLQorK2FkZCB7cG9saWN5ZDxjaGFyLCBvcGVyYXRpb25fMTxj aGFyPiA+Ojpwb2xpY3lkfSBcCisrICAgIHt2b2lkIChwb2xpY3lkPGNoYXIsIG9wZXJhdGlvbl8x PGNoYXI+ID4gKiBjb25zdCwgY2hhcil9IFwKKysgICAgLSBcCisrICAgIHtwb2xpY3lkPFQsIFBv bGljeT46OnBvbGljeWR9IFwKKysgICAgLQorK2FkZCB7cG9saWN5ZDM6OnBvbGljeWR9IFwKKysg ICAge3ZvaWQgKHBvbGljeWQ8Y2hhciwgb3BlcmF0aW9uXzE8Y2hhcj4gPiAqIGNvbnN0LCBjaGFy KX0gXAorKyAgICB7cG9saWN5ZDxjaGFyLCBvcGVyYXRpb25fMTxjaGFyPiA+Ojpwb2xpY3lkfSBc CisrICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9IFwKKysgICAgLQorK2FkZCB7cG9s aWN5ZDxjaGFyLCBvcGVyYXRpb25fMTxjaGFyPiA+Ojp+cG9saWN5ZH0gXAorKyAgICB7dm9pZCAo cG9saWN5ZDxjaGFyLCBvcGVyYXRpb25fMTxjaGFyPiA+ICogY29uc3QpfSBcCisrICAgIC0gXAor KyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojp+cG9saWN5ZH0gXAorKyAgICAtCisrYWRkIHtwb2xp Y3lkMzo6fnBvbGljeWR9IFwKKysgICAge3ZvaWQgKHBvbGljeWQ8Y2hhciwgb3BlcmF0aW9uXzE8 Y2hhcj4gPiAqIGNvbnN0KX0gXAorKyAgICB7cG9saWN5ZDxjaGFyLCBvcGVyYXRpb25fMTxjaGFy PiA+Ojp+cG9saWN5ZH0gXAorKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojp+cG9saWN5ZH0gXAor KyAgICAtCisrYWRkIHtwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID46OnBvbGljeWR9 IFwKKysgICAge3ZvaWQgKHBvbGljeWQ8YmFzZSwgb3BlcmF0aW9uXzE8YmFzZT4gPiAqIGNvbnN0 LCBiYXNlKX0gXAorKyAgICAtIFwKKysgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6cG9saWN5ZH0g XAorKyAgICAtCisrYWRkIHtwb2xpY3lkNDo6cG9saWN5ZH0gXAorKyAgICB7dm9pZCAocG9saWN5 ZDxiYXNlLCBvcGVyYXRpb25fMTxiYXNlPiA+ICogY29uc3QsIGJhc2UpfSBcCisrICAgIHtwb2xp Y3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID46OnBvbGljeWR9IFwKKysgICAge3BvbGljeWQ8 VCwgUG9saWN5Pjo6cG9saWN5ZH0gXAorKyAgICAtCisrYWRkIHtwb2xpY3lkPGJhc2UsIG9wZXJh dGlvbl8xPGJhc2U+ID46On5wb2xpY3lkfSBcCisrICAgIHt2b2lkIChwb2xpY3lkPGJhc2UsIG9w ZXJhdGlvbl8xPGJhc2U+ID4gKiBjb25zdCl9IFwKKysgICAgLSBcCisrICAgIHtwb2xpY3lkPFQs IFBvbGljeT46On5wb2xpY3lkfSBcCisrICAgIC0KKythZGQge3BvbGljeWQ0Ojp+cG9saWN5ZH0g XAorKyAgICB7dm9pZCAocG9saWN5ZDxiYXNlLCBvcGVyYXRpb25fMTxiYXNlPiA+ICogY29uc3Qp fSBcCisrICAgIHtwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID46On5wb2xpY3lkfSBc CisrICAgIHtwb2xpY3lkPFQsIFBvbGljeT46On5wb2xpY3lkfSBcCisrICAgIC0KKythZGQge3Bv bGljeWQ8dGNsYXNzPGludD4sIG9wZXJhdGlvbl8xPHRjbGFzczxpbnQ+ID4gPjo6cG9saWN5ZH0g XAorKyAgICB7dm9pZCAocG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGlu dD4gPiA+ICogY29uc3QsIHRjbGFzczxpbnQ+KX0gXAorKyAgICAtIFwKKysgICAge3BvbGljeWQ8 VCwgUG9saWN5Pjo6cG9saWN5ZH0gXAorKyAgICAtCisrYWRkIHtwb2xpY3lkNTo6cG9saWN5ZH0g XAorKyAgICB7dm9pZCAocG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGlu dD4gPiA+ICogY29uc3QsIHRjbGFzczxpbnQ+KX0gXAorKyAgICB7cG9saWN5ZDx0Y2xhc3M8aW50 Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+Ojpwb2xpY3lkfSBcCisrICAgIHtwb2xpY3lk PFQsIFBvbGljeT46OnBvbGljeWR9IFwKKysgICAgLQorK2FkZCB7cG9saWN5ZDx0Y2xhc3M8aW50 Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+Ojp+cG9saWN5ZH0gXAorKyAgICB7dm9pZCAo cG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+ICogY29uc3Qp fSBcCisrICAgIC0gXAorKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojp+cG9saWN5ZH0gXAorKyAg ICAtCisrYWRkIHtwb2xpY3lkNTo6fnBvbGljeWR9IFwKKysgICAge3ZvaWQgKHBvbGljeWQ8dGNs YXNzPGludD4sIG9wZXJhdGlvbl8xPHRjbGFzczxpbnQ+ID4gPiAqIGNvbnN0KX0gXAorKyAgICB7 cG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+Ojp+cG9saWN5 ZH0gXAorKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojp+cG9saWN5ZH0gXAorKyAgICAtCisrYWRk IHtwb2xpY3lkPGludCwgb3BlcmF0aW9uXzE8aW50PiA+OjpmdW5jdGlvbn0gXAorKyAgICB7dm9p ZCAodm9pZCl9IFwKKysgICAge29wZXJhdGlvbl8xPGludD46OmZ1bmN0aW9ufVwKKysgICAge29w ZXJhdGlvbl8xPFQ+OjpmdW5jdGlvbn0gXAorKyAgICAtCisrYWRkIHtwb2xpY3lkMTo6ZnVuY3Rp b259IFwKKysgICAge3ZvaWQgKHZvaWQpfSBcCisrICAgIHtvcGVyYXRpb25fMTxpbnQ+OjpmdW5j dGlvbn0gXAorKyAgICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0aW9ufSBcCisrICAgIC0KKythZGQg e3BvbGljeWQyOjpmdW5jdGlvbn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysgICAge29wZXJh dGlvbl8xPGxvbmc+OjpmdW5jdGlvbn0gXAorKyAgICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0aW9u fSBcCisrICAgIC0KKythZGQge3BvbGljeWQ8Y2hhciwgb3BlcmF0aW9uXzE8Y2hhcj4gPjo6ZnVu Y3Rpb259IFwKKysgICAge3ZvaWQgKHZvaWQpfSBcCisrICAgIHtvcGVyYXRpb25fMTxjaGFyPjo6 ZnVuY3Rpb259IFwKKysgICAge29wZXJhdGlvbl8xPFQ+OjpmdW5jdGlvbn0gXAorKyAgICAtCisr YWRkIHtwb2xpY3lkMzo6ZnVuY3Rpb259IFwKKysgICAge3ZvaWQgKHZvaWQpfSBcCisrICAgIHtv cGVyYXRpb25fMTxjaGFyPjo6ZnVuY3Rpb259IFwKKysgICAge29wZXJhdGlvbl8xPFQ+OjpmdW5j dGlvbn0gXAorKyAgICAtCisrYWRkIHtwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID46 OmZ1bmN0aW9ufSBcCisrICAgIHt2b2lkICh2b2lkKX0gXAorKyAgICB7b3BlcmF0aW9uXzE8YmFz ZT46OmZ1bmN0aW9ufSBcCisrICAgIHtvcGVyYXRpb25fMTxUPjo6ZnVuY3Rpb259IFwKKysgICAg LQorK2FkZCB7cG9saWN5ZDQ6OmZ1bmN0aW9ufSBcCisrICAgIHt2b2lkICh2b2lkKX0gXAorKyAg ICB7b3BlcmF0aW9uXzE8YmFzZT46OmZ1bmN0aW9ufSBcCisrICAgIHtvcGVyYXRpb25fMTxUPjo6 ZnVuY3Rpb259IFwKKysgICAgLQorK2FkZCB7cG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9u XzE8dGNsYXNzPGludD4gPiA+OjpmdW5jdGlvbn0gXAorKyAgICB7dm9pZCAodm9pZCl9IFwKKysg ICAge29wZXJhdGlvbl8xPHRjbGFzczxpbnQ+ID46OmZ1bmN0aW9ufSBcCisrICAgIHtvcGVyYXRp b25fMTxUPjo6ZnVuY3Rpb259IFwKKysgICAgLQorK2FkZCB7cG9saWN5ZDU6OmZ1bmN0aW9ufSBc CisrICAgIHt2b2lkICh2b2lkKX0gXAorKyAgICB7b3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPjo6 ZnVuY3Rpb259IFwKKysgICAge29wZXJhdGlvbl8xPFQ+OjpmdW5jdGlvbn0gXAorKyAgICAtCisr IyBUaGUgYmVsb3cgdGVzdCBkZWZhdWx0IHRlbXBsYXRlIGFyZ3VtZW50cworK2FkZCB7cG9saWN5 ZDxpbnQ+Ojpwb2xpY3lkfSBcCisrICAgIHt2b2lkIChwb2xpY3lkPGludCwgb3BlcmF0aW9uXzE8 aW50PiA+ICogY29uc3QsIGludCl9IFwKKysgICAgLSBcCisrICAgIHtwb2xpY3lkPFQsIFBvbGlj eT46OnBvbGljeWR9IFwKKysgICAgLQorK2FkZCB7cG9saWN5ZDxsb25nPjo6cG9saWN5ZH0gXAor KyAgICB7dm9pZCAocG9saWN5ZDxsb25nLCBvcGVyYXRpb25fMTxsb25nPiA+ICogY29uc3QsIGxv bmcpfSBcCisrICAgIC0gXAorKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkfSBcCisr ICAgIC0KKythZGQge3BvbGljeWQ8Y2hhcj46OnBvbGljeWR9IFwKKysgICAge3ZvaWQgKHBvbGlj eWQ8Y2hhciwgb3BlcmF0aW9uXzE8Y2hhcj4gPiAqIGNvbnN0LCBjaGFyKX0gXAorKyAgICAtIFwK KysgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6cG9saWN5ZH0gXAorKyAgICAtCisrYWRkIHtwb2xp Y3lkPGJhc2U+Ojpwb2xpY3lkfSBcCisrICAgIHt2b2lkIChwb2xpY3lkPGJhc2UsIG9wZXJhdGlv bl8xPGJhc2U+ID4gKiBjb25zdCwgYmFzZSl9IFwKKysgICAgLSBcCisrICAgIHtwb2xpY3lkPFQs IFBvbGljeT46OnBvbGljeWR9IFwKKysgICAgLQorK2FkZCB7cG9saWN5ZDx0Y2xhc3M8aW50PiA+ Ojpwb2xpY3lkfSBcCisrICAgIHt2b2lkIChwb2xpY3lkPHRjbGFzczxpbnQ+ID4sIG9wZXJhdGlv bl8xPHRjbGFzczxpbnQ+ID4gPiAqIGNvbnN0LCBpbnQpfSBcCisrICAgIC0gXAorKyAgICB7cG9s aWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkfSBcCisrICAgIC0KKysKKysjIFN0YXJ0IHRoZSB0ZXN0 CisraWYgeyR0cmFjZWxldmVsfSB7CisrICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorK30KKysKKytp ZiB7W3NraXBfY3BsdXNfdGVzdHNdfSB7IGNvbnRpbnVlIH0KKysKKysjCisrIyB0ZXN0IHJ1bm5p bmcgcHJvZ3JhbXMKKysjCisrc2V0IHBybXNfaWQgMAorK3NldCBidWdfaWQgMAorKworK3NldCB0 ZXN0ZmlsZSAicmVhbGNwcCIKKytzZXQgc3JjZmlsZSAiJHt0ZXN0ZmlsZX0uY2MiCisrc2V0IGJp bmZpbGUgW2ZpbGUgam9pbiAkb2JqZGlyICRzdWJkaXIgJHRlc3RmaWxlXQorKworK2lmICB7W2dk Yl9jb21waWxlIFtmaWxlIGpvaW4gJHNyY2RpciAkc3ViZGlyICRzcmNmaWxlXSAkYmluZmlsZSBc CisrCSAgZXhlY3V0YWJsZSB7ZGVidWcgYysrfV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICIk dGVzdGZpbGUuZXhwIgorKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYge1tnZXRfY29tcGlsZXJf aW5mbyAkYmluZmlsZSAiYysrIl19IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2dkYl9leGl0 CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgW2ZpbGUgam9pbiAkc3JjZGlyICRz dWJkaXJdCisrZ2RiX2xvYWQgJGJpbmZpbGUKKysKKysjIFNldCB0aGUgbGlzdHNpemUgdG8gb25l LiBUaGlzIHdpbGwgaGVscCB3aXRoIHRlc3RpbmcgImxpc3QiLgorK2dkYl90ZXN0ICJzZXQgbGlz dHNpemUgMSIKKysKKysjICJwcmludCBNRVRIT0QiCisrZm9yZWFjaCBuYW1lIFtnZXRfZnVuY3Rp b25zIHByaW50XSB7CisrICAgIGdkYl90ZXN0ICJwcmludCAkbmFtZSIgW2dldCAkbmFtZSBwcmlu dF0gInByaW50ICRuYW1lIgorK30KKysKKysjICJsaXN0IE1FVEhPRCIKKytmb3JlYWNoIG5hbWUg W2dldF9mdW5jdGlvbnMgbGlzdF0geworKyAgICBnZGJfdGVzdCAibGlzdCAkbmFtZSIgW2dldCAk bmFtZSBsaXN0XSAibGlzdCAkbmFtZSIKKyt9CisrCisrIyBSdW5uaW5nIHRvIGJyZWFrcG9pbnQg LS0gdXNlIGFueSBmdW5jdGlvbiB3ZSBjYW4gImxpc3QiCisrZm9yZWFjaCBuYW1lIFtnZXRfZnVu Y3Rpb25zIGxpc3RdIHsKKysgICAgIyBTa2lwICJtYWluIiwgc2luY2UgdGVzdF9icmVha3BvaW50 IHVzZXMgaXQKKysgICAgaWYge1tzdHJpbmcgY29tcGFyZSAkbmFtZSAibWFpbiJdICE9IDB9IHsK KysJdGVzdF9icmVha3BvaW50ICRuYW1lCisrICAgIH0KKyt9CisrCisrIyAiaW5mbyBmdW5jIE1F VEhPRCIKKytpZiB7ZmFsc2V9IHsKKytmb3JlYWNoIG5hbWUgW2dldF9mdW5jdGlvbnMgImluZm9f ZnVuYyJdIHsKKysgICAgcmVnc3ViIC1hbGwge1wqfSAkbmFtZSB7XCp9IG4KKysgICAgcmVnc3Vi IC1hbGwge1xefSAkbiB7XF59IG4KKysgICAgcmVnc3ViIC1hbGwge1xdfSAkbiB7XF19IG4KKysg ICAgcmVnc3ViIC1hbGwge1xbfSAkbiB7XFt9IG4KKysgICAgZ2RiX3Rlc3QgImluZm8gZnVuYyAk biIgW2dldCAkbmFtZSBpbmZvX2Z1bmNdICJpbmZvIGZ1bmMgJG5hbWUiCisrfQorK30KKysKKysj IFdoYXQgb2YgdGhlc2UgaXMgbm90IGNvdmVyZWQgYnkgYWJvdmU/CisrIyBvcGVyYXRvci1zcGVj aWZpYyB0ZXN0cyAoJ3AgYSArIGInLCAncHJpbnQgY291dCA8PCAiaGVsbG8iJywgZXRjKQorKyMg b3ZlcmxvYWRlZCBvcGVyYXRvcnMgJiBjdG9ycworKyMgb3BlcmF0b3IgbmFtZXMgd2l0aCBzcGFj ZXMgaW4gdGhlbSAob3RoZXIgdGhhbiBkZWxldGUgYW5kIG5ldykKKysjIHB0eXBlIG9mIGNsYXNz ZXMvdGVtcGxhdGVzCisrIyBiYWNrdHJhY2VzCisrIyBwcmludGluZyBkYXRhIG1lbWJlcnMKKysj IGNhdGNoaW5nLCB0aHJvd2luZyBleGNlcHRpb25zCisrIyBTVEwgKGVzcCBjb250YWluZXJzIGFu ZCBpdGVyYXRvcnMpCisrIyBpbmhlcml0YW5jZSB0ZXN0cworKyMgY29tcGxldGlvbiBzY29waW5n CisrCisrZ2RiX2V4aXQKKytyZXR1cm4gMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL3NoYWRvd2luZy5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5jYworbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjZkOWMyZjEKKy0tLSAvZGV2L251bGwK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5jYworQEAgLTAsMCArMSw0OCBA QAorK25hbWVzcGFjZSBBCisreworKyAgaW50IHggPSAxMTsKKyt9CisrCisraW50IHggPSAyMjsK KytpbnQgeSA9IDA7CisrCisrY2xhc3MgQgorK3sKKytwdWJsaWM6CisrICBpbnQgeDsKKysKKysg IGludAorKyAgZnVuYygpCisrICB7CisrICAgIHggPSAzMzsKKysgICAgeSs9eDsgLy8gbWFya2Vy MQorKworKyAgICAgIHsKKysgICAgICAgIGludCB4ID0gNDQ7CisrICAgICAgICB5Kz14OyAvLyBt YXJrZXIyCisrCisrICAgICAgICAgIHsKKysgICAgICAgICAgICBpbnQgeCA9IDU1OworKyAgICAg ICAgICAgIHkrPXg7IC8vIG1hcmtlcjMKKysKKysgICAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgICAgaW50IHogPSB4OyAvL3ByZXZlbnQgZ2NjIGZyb20gb3B0aW1pemluZyBhd2F5IHRoaXMg c2NvcGUKKysgICAgICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEE7CisrICAgICAgICAgICAg ICAgIHkrPXg7IC8vIG1hcmtlcjQKKysKKysgICAgICAgICAgICAgICAgdXNpbmcgQTo6eDsKKysg ICAgICAgICAgICAgICAgeSs9eDsgLy8gbWFya2VyNQorKyAgICAgICAgICAgICAgICAKKysgICAg ICAgICAgICAgICAgcmV0dXJuIHRoaXMtPng7CisrICAgICAgICAgICAgICB9CisrICAgICAgICAg IH0KKysgICAgICB9CisrICB9CisrfTsKKysKKytpbnQKKyttYWluKCkKKyt7CisrICBCIHRoZUI7 CisrICByZXR1cm4gdGhlQi5mdW5jKCk7CisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL3NoYWRvd2luZy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9zaGFkb3dpbmcuZXhw CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNjkyMmVlZAorLS0tIC9kZXYv bnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avc2hhZG93aW5nLmV4cAorQEAgLTAsMCAr MSw5MSBAQAorKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK2lmICR0cmFjZWxldmVsIHRo ZW4geworKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKKyt9CisrCisrc2V0IHBybXNfaWQgMAorK3Nl dCBidWdfaWQgMAorKworK3NldCB0ZXN0ZmlsZSBzaGFkb3dpbmcKKytzZXQgc3JjZmlsZSAke3Rl c3RmaWxlfS5jYworK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0K KytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7 YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31dICE9ICIiIH0geworKyAgICB1bnRlc3Rl ZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCisrICAgIHJldHVybiAtMQorK30KKysK KytpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0geworKyAgICByZXR1cm4gLTE7Cisr fQorKworKyMgR2V0IHRoaW5ncyBzdGFydGVkLgorKworK2dkYl9leGl0CisrZ2RiX3N0YXJ0Cisr Z2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxl fQorKworK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVu IHRvIGJyZWFrcG9pbnQgbWFpbiIKKysgICAgY29udGludWUKKyt9CisrCisrIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjIFRlc3QgcHJpbnRpbmcgb2YgY2xh c3MgdmFyaWFibGUgaXMgbm90IHNoYWRvd2VkCisrIyBieSBnbG9iYWwgdmFyaWFibGUKKysKKytn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAibWFya2VyMSJdCisrZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgIm1hcmtlcjEiCisrCisrZ2RiX3Rlc3QgInByaW50IHgiICI9IDMz IiAiUHJpbnQgY2xhc3MgeCBzaGFkb3dpbmcgZ2xvYmFsIHgiCisrCisrCisrIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjIFRlc3QgcHJpbnRpbmcgbG9jYWwg dmFyaWFibGUgaXMgbm90IHNoYWRvd2VkCisrIyBieSBjbGFzcyB2YXJpYWJsZQorKworK2dkYl9i cmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXIyIl0KKytnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAibWFya2VyMiIKKysKKytnZGJfdGVzdCAicHJpbnQgeCIgIj0gNDQiICJQ cmludCBsb2NhbCB4IHNoYWRvd2luZyBjbGFzcyB4IgorKworKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyBUZXN0IGlubmVyIHNjb3BlIHggaXMgcHJpbnRl ZCBub3Qgb3V0ZXIgc2NvcGUKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAibWFya2VyMyJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm1hcmtlcjMiCisrCisr Z2RiX3Rlc3QgInByaW50IHgiICI9IDU1IiAiUHJpbnQgaW5uZXIgc2NvcGUgeCIKKysKKysjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgVGVzdCBwcmludGlu ZyBsb2NhbCB2YXJpYWJsZSBpcyBub3Qgc2hhZG93ZWQKKysjIGJ5IG5hbWVzcGFjZSB2YXJpYWJs ZQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXI0Il0KKytn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibWFya2VyNCIKICsKLStnZGJfdGVzdCAidW50aWwg JGxpbmUiIFwKLSsgICIuKmNhdGNoICguLi4pLioiIFwKLSsgICJ1bnRpbC1vdmVyLXRocm93Igor K2dkYl90ZXN0ICJwcmludCB4IiAiPSA1NSIgIlByaW50IGxvY2FsIHggbm90IG5hbWVzcGFjZSB4 IgogKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLnVudGlsICgpLioiIFwK LSsgICJuZXh0IHBhc3QgY2F0Y2ggNyIKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworKyMgVGVzdCBpbXBvcnRlZCBuYW1lc3BhY2UgZWxlbWVudCBpcyBwcmlu dGVkCiArCi0rZ2RiX3Rlc3QgInN0ZXAiIFwKLSsgICIuKmZ1bmN0aW9uMSAoKS4qIiBcCi0rICAi c3RlcCBpbnRvIHVudGlsLCBmb3IgYWR2YW5jZSIKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAibWFya2VyNSJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm1hcmtl cjUiCiArCi0rZ2RiX3Rlc3QgImFkdmFuY2UgJGxpbmUiIFwKLSsgICIuKmNhdGNoICguLi4pLioi IFwKLSsgICJhZHZhbmNlLW92ZXItdGhyb3ciCisraWYgW3Rlc3RfY29tcGlsZXJfaW5mbyBnY2Mt NC0zLSpdIHRoZW4geyBzZXR1cF94ZmFpbCAqLSotKiB9CisrCisrZ2RiX3Rlc3QgInByaW50IHgi ICI9IDExIiAiUHJpbnQgaW1wb3J0ZWQgbmFtZXNwYWNlIHgiCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1hcmFuZ2VzLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvZHcyLWFyYW5nZXMuUwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLmQ1 YjljYTUKQEAgLTE2NTI2LDYgKzIxNzI5LDE2OSBAQCBpbmRleCAwMDAwMDAwLi4zOTYzMmQ1CiAr CiArIyBGYWlsZWQgZ2RiX2xvYWQgd291bGQgYWJvcnQgdGhlIHRlc3RjYXNlIGV4ZWN1dGlvbiBl YXJsaWVyLgogK3Bhc3MgImZpbGUgbG9hZGVkIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9kdzItZW1wdHktbmFtZXNwYWNlLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvZHcyLWVtcHR5LW5hbWVzcGFjZS5TCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw MDAwMC4uN2IwM2ZmMQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdh cmYyL2R3Mi1lbXB0eS1uYW1lc3BhY2UuUworQEAgLTAsMCArMSwxMDggQEAKKysvKiBUaGlzIHRl c3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdo dCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysvKiBUZXN0IEcrKyA0LjEgcHJvZHVjaW5n IERXX1RBR19uYW1lc3BhY2Ugd2l0aCBEV19BVF9uYW1lICI6OiIuICAqLworKworKwkuZGF0YQor K3ZhcjoJLjRieXRlCTEKKysKKysJLnNlY3Rpb24gLmRlYnVnX2luZm8KKysuTGN1MV9iZWdpbjoK KysJLyogQ1UgaGVhZGVyICovCisrCS40Ynl0ZQkuTGN1MV9lbmQgLSAuTGN1MV9zdGFydAkJLyog TGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8KKysuTGN1MV9zdGFydDoKKysJLjJieXRlCTIJ CQkJLyogRFdBUkYgVmVyc2lvbiAqLworKwkuNGJ5dGUJLkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zm c2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8KKysJLmJ5dGUJNAkJCQkvKiBQb2ludGVyIHNpemUg Ki8KKysKKysJLyogQ1UgZGllICovCisrCS51bGViMTI4IDEJCQkJLyogQWJicmV2OiBEV19UQUdf Y29tcGlsZV91bml0ICovCisrCS5hc2NpaQkiZmlsZTEudHh0XDAiCQkJLyogRFdfQVRfbmFtZSAq LworKwkuYXNjaWkJIkdOVSBDIDMuMy4zXDAiCQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KKysJLmJ5 dGUJNAkJCQkvKiBEV19MQU5HX0NfcGx1c19wbHVzIChDKyspICovCisrCisrLkx0eXBlX2ludDoK KysJLnVsZWIxMjgJMgkJCS8qIEFiYnJldjogRFdfVEFHX2Jhc2VfdHlwZSAqLworKwkuYXNjaWkJ CSJpbnRcMCIJCQkvKiBEV19BVF9uYW1lICovCisrCS5ieXRlCQk0CQkJLyogRFdfQVRfYnl0ZV9z aXplICovCisrCS5ieXRlCQk1CQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KKysKKysJLnVsZWIxMjgJ MwkJCS8qIEFiYnJldjogRFdfVEFHX25hbWVzcGFjZSAqLworKwkuYXNjaWkJCSI6OlwwIgkJCS8q IERXX0FUX25hbWUgKi8KKysKKysJLnVsZWIxMjgJNwkJCS8qIEFiYnJldjogRFdfVEFHX3Zhcmlh YmxlIChsb2NhdGlvbikgKi8KKysJLmFzY2lpCQkidmFyXDAiCQkJLyogRFdfQVRfbmFtZSAqLwor KwkuYnl0ZQkJMmYgLSAxZgkJCS8qIERXX0FUX2xvY2F0aW9uICovCisrMToJLmJ5dGUJCTMJCQkv KiAgIERXX09QX2FkZHIgKi8KKysJLjRieXRlCQl2YXIJCQkvKiAgIDxhZGRyPiAqLworKzI6CS40 Ynl0ZQkJLkx0eXBlX2ludC0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCisrCisrCS5ieXRl CQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIERXX1RBR19uYW1lc3BhY2UgKi8KKysKKysJLmJ5 dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8KKysKKysuTGN1MV9lbmQ6CisrCisr LyogQWJicmV2IHRhYmxlICovCisrCS5zZWN0aW9uIC5kZWJ1Z19hYmJyZXYKKysuTGFiYnJldjFf YmVnaW46CisrCS51bGViMTI4CTEJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkweDEx CQkJLyogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLworKwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJl biAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCisrCS51bGViMTI4CTB4OAkJ CS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNl ciAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkw eDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9k YXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJ LyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAkyCQkJLyogQWJicmV2IGNvZGUgKi8KKysJ LnVsZWIxMjgJMHgyNAkJCS8qIERXX1RBR19iYXNlX3R5cGUgKi8KKysJLmJ5dGUJCTAJCQkvKiBo YXNfY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLworKwkudWxl YjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweGIJCQkvKiBEV19B VF9ieXRlX3NpemUgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwku dWxlYjEyOAkweDNlCQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyog RFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAkzCQkJLyogQWJicmV2IGNv ZGUgKi8KKysJLnVsZWIxMjgJMHgzOQkJCS8qIERXX1RBR19uYW1lc3BhY2UgKi8KKysJLmJ5dGUJ CTEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAq LworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkuYnl0ZQkJMHgwCQkJ LyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwku dWxlYjEyOAk3CQkJLyogQWJicmV2IGNvZGUgKGxvY2F0aW9uKSAqLworKwkudWxlYjEyOAkweDM0 CQkJLyogRFdfVEFHX3ZhcmlhYmxlICovCisrCS5ieXRlCQkwCQkJLyogaGFzX2NoaWxkcmVuICov CisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVsZWIxMjgJMHg4CQkJLyog RFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJMHgyCQkJLyogRFdfQVRfbG9jYXRpb24gKi8K KysJLnVsZWIxMjgJMHhhCQkJLyogRFdfRk9STV9ibG9jazEgKi8KKysJLnVsZWIxMjgJMHg0OQkJ CS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLwor KwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWlu YXRvciAqLworKworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgw CQkJLyogVGVybWluYXRvciAqLworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9kdzItZW1wdHktbmFtZXNwYWNlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzIt ZW1wdHktbmFtZXNwYWNlLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAu LjFhOGRhMTYKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9k dzItZW1wdHktbmFtZXNwYWNlLmV4cAorQEAgLTAsMCArMSw0MyBAQAorKyMgQ29weXJpZ2h0IDIw MDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorKworKyMgVGVzdCBHKysgNC4xIHByb2R1Y2luZyBEV19UQUdfbmFtZXNwYWNl IHdpdGggRFdfQVRfbmFtZSAiOjoiLgorKworKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBv biB0YXJnZXRzIHdoaWNoIHN1cHBvcnQgRFdBUkYtMiBhbmQgdXNlIGdhcy4KKysjIEZvciBub3cg cGljayBhIHNhbXBsaW5nIG9mIGxpa2VseSB0YXJnZXRzLgorK2lmIHshW2lzdGFyZ2V0ICotKi1s aW51eCpdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLWdudSpdCisrICAgICYmICFbaXN0YXJnZXQg Ki0qLWVsZipdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLW9wZW5ic2QqXQorKyAgICAmJiAhW2lz dGFyZ2V0IGFybS0qLWVhYmkqXQorKyAgICAmJiAhW2lzdGFyZ2V0IHBvd2VycGMtKi1lYWJpKl19 IHsKKysgICAgcmV0dXJuIDAgIAorK30KKysKKytzZXQgdGVzdGZpbGUgImR3Mi1lbXB0eS1uYW1l c3BhY2UiCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uUworK3NldCBleGVjdXRhYmxlICR7dGVz dGZpbGV9LngKKysKKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNmaWxlfSIgIiR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfSIgb2JqZWN0IHtub2Rl YnVnfV0gIT0gIiIgfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytjbGVhbl9yZXN0YXJ0ICRl eGVjdXRhYmxlCisrCisrIyBgcCB2YXInIGJlbG93IGNhbiB3b3JrIHdpdGhvdXQgaWRlbnRpZmll ZCBEV0FSRiBESUUganVzdCBiYXNlZCBvbiBpdHMgRUxGIHN5bWJvbC4KKysjIENhdGNoIGl0IGhl cmUgYXMgYHR5cGUgPSA8ZGF0YSB2YXJpYWJsZSwgbm8gZGVidWcgaW5mbz4nLgorK2dkYl90ZXN0 ICJwdHlwZSB2YXIiICJ0eXBlID0gaW50IgorKworK2dkYl90ZXN0ICJwIHZhciIgIiA9IDEiCiBk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAogaW5kZXggMDAwMDAwMC4uMWYwMmQ5MApAQCAtMTg0NTIsNDQgKzIzODE4LDYgQEAgaW5kZXgg YWE0ZTUxOS4uZjg3Mjc3ZCAxMDA2NDQKICAKICAjIFRoZSBmb2xsb3dpbmcgdGVzdCByZWNvbXBp bGVzIHRoZSBiaW5hcnkgdG8gdGVzdCBlaXRoZXIgQyBvciBDKysKICAjIHZhbHVlcy4gCi1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5dGhvbi5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHl0aG9uLmV4cAotaW5kZXggOTUxYzI5NS4uOWRkMGMxMiAxMDA2NDQK LS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weXRob24uZXhwCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHl0aG9uLmV4cAotQEAgLTI2LDMwICsyNiw5IEBAIGdkYl9leGl0 Ci0gZ2RiX3N0YXJ0Ci0gZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0gCi0t Z2RiX3Rlc3RfbXVsdGlwbGUgInB5dGhvbiBwcmludCAyMyIgInZlcmlmeSBweXRob24gc3VwcG9y dCIgewotLSAgICAtcmUgIm5vdCBzdXBwb3J0ZWQuKiRnZGJfcHJvbXB0ICQiCXsKLS0gICAgICB1 bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCi0tICAgICAgcmV0dXJuIC0x Ci0tICAgIH0KLS0gICAgLXJlICIkZ2RiX3Byb21wdCAkIgl7fQotLX0KLS0KLS0jIFVzYWdlOiBn ZGJfcHlfdGVzdF9tdWx0aXBsZSBOQU1FIElOUFVUIFJFU1VMVCB7SU5QVVQgUkVTVUxUfS4uLgot LSMgUnVuIGEgdGVzdCBuYW1lZCBOQU1FLCBjb25zaXN0aW5nIG9mIG11bHRpcGxlIGxpbmVzIG9m IGlucHV0LgotLSMgQWZ0ZXIgZWFjaCBpbnB1dCBsaW5lIElOUFVULCBzZWFyY2ggZm9yIHJlc3Vs dCBsaW5lIFJFU1VMVC4KLS0jIFN1Y2NlZWQgaWYgYWxsIHJlc3VsdHMgYXJlIHNlZW47IGZhaWwg b3RoZXJ3aXNlLgotLXByb2MgZ2RiX3B5X3Rlc3RfbXVsdGlwbGUge25hbWUgYXJnc30gewotLSAg ICBnbG9iYWwgZ2RiX3Byb21wdAotLSAgICBmb3JlYWNoIHtpbnB1dCByZXN1bHR9ICRhcmdzIHsK LS0JaWYge1tnZGJfdGVzdF9tdWx0aXBsZSAkaW5wdXQgIiRuYW1lIC0gJGlucHV0IiB7Ci0tCSAg ICAtcmUgIlxbXHJcblxdKigkcmVzdWx0KVxbXHJcblxdKygkZ2RiX3Byb21wdCB8ICo+KSQiIHsK LS0JCXBhc3MgIiRuYW1lIC0gJGlucHV0IgotLQkgICAgfQotLQl9XX0gewotLQkgICAgcmV0dXJu IDEKLS0JfQotLSAgICB9Ci0tICAgIHJldHVybiAwCi0raWYgIVtweXRob25fc3VwcG9ydGVkXSB0 aGVuIHsKLSsgIHVuc3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLSsgIHJl dHVybiAtMQotIH0KLSAKLSBnZGJfcHlfdGVzdF9tdWx0aXBsZSAibXVsdGktbGluZSBweXRob24g Y29tbWFuZCIgXAogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hw b2ludC1mb3JrLWZvcmtvZmYuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2lu dC1mb3JrLWZvcmtvZmYuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLjRk YzMwOGIKQEAgLTE5MDMzLDYgKzI0MzYxLDI3IEBAIGluZGV4IDAwMDAwMDAuLjFkYzkzYWIKICtp ZiB7W2lzdGFyZ2V0ICIqLSotbGludXgqIl19IHsKICsgICAgdGVzdCBjaGlsZCBGT0xMT1dfQ0hJ TEQKICt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvY3Atc3VwcG9ydC5leHAgYi9n ZGIvdGVzdHN1aXRlL2xpYi9jcC1zdXBwb3J0LmV4cAoraW5kZXggNmZiZWU4NC4uMTE4OWNmZCAx MDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2NwLXN1cHBvcnQuZXhwCisrKysgYi9nZGIv dGVzdHN1aXRlL2xpYi9jcC1zdXBwb3J0LmV4cAorQEAgLTIyMiw3ICsyMjIsNyBAQCBwcm9jIGNw X3Rlc3RfcHR5cGVfY2xhc3MgeyBpbl9jb21tYW5kIGluX3Rlc3RuYW1lIGluX2tleSBpbl90YWcg aW5fY2xhc3NfdGFibGUgeworIAorICAgICBzZXQgcGFyc2Vfb2theSAwCisgICAgIGdkYl90ZXN0 X211bHRpcGxlICIkaW5fY29tbWFuZCIgIiRpbl90ZXN0bmFtZSAvLyBwYXJzZSBmYWlsZWQiIHsK Ky0JLXJlICJ0eXBlID0gKHN0cnVjdHxjbGFzcykke3dzb3B0fShcW0EtWmEtejAtOV9cXSopJHt3 c29wdH0oKDpcW15ce1xdKik/KSR7d3NvcHR9XHsoLiopXH0ke3dzb3B0fShcW15cclxuXF0qKVxb XHJcblxdKyRnZGJfcHJvbXB0ICQiIHsKKysJLXJlICJ0eXBlID0gKHN0cnVjdHxjbGFzcykke3dz b3B0fShcW0EtWmEtejAtOV86XF0qKSR7d3NvcHR9KCg6XFteXHtcXSopPykke3dzb3B0fVx7KC4q KVx9JHt3c29wdH0oXFteXHJcblxdKilcW1xyXG5cXSskZ2RiX3Byb21wdCAkIiB7CisgCSAgICBz ZXQgcGFyc2Vfb2theSAgICAgICAgICAxCisgCSAgICBzZXQgYWN0dWFsX2tleSAgICAgICAgICAk ZXhwZWN0X291dCgxLHN0cmluZykKKyAJICAgIHNldCBhY3R1YWxfdGFnICAgICAgICAgICRleHBl Y3Rfb3V0KDIsc3RyaW5nKQorQEAgLTIzMSw2ICsyMzEsNyBAQCBwcm9jIGNwX3Rlc3RfcHR5cGVf Y2xhc3MgeyBpbl9jb21tYW5kIGluX3Rlc3RuYW1lIGluX2tleSBpbl90YWcgaW5fY2xhc3NfdGFi bGUgeworIAkgICAgc2V0IGFjdHVhbF90YWlsICAgICAgICAgJGV4cGVjdF9vdXQoNixzdHJpbmcp CisgCX0KKyAgICAgfQorKyAgICAKKyAgICAgaWYgeyAhICRwYXJzZV9va2F5IH0gdGhlbiB7IHJl dHVybiB9CisgCisgICAgICMgQ2hlY2sgdGhlIGFjdHVhbCBrZXkuICBJdCB3b3VsZCBiZSBuaWNl IHRvIHJlcXVpcmUgdGhhdCBpdCBtYXRjaAogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiBpbmRleCA5YjA2YTJmLi40MTlk NWE5IDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cApAQCAtMTkxMjYsMTAg KzI0NDc1LDEwIEBAIGluZGV4IDE2YTIwN2MuLmMzY2ZmMDYgMTAwNjQ0CiAgewogICAgc3RydWN0 IHRocmVhZF9pbmZvICp0cCwgKm5leHQ7CiBkaWZmIC0tZ2l0IGEvZ2RiL3RvcC5jIGIvZ2RiL3Rv cC5jCi1pbmRleCA4NWU3YjYyLi5iNGYwYmY3IDEwMDY0NAoraW5kZXggOTBlOGYxZS4uNDg5ZTI0 YSAxMDA2NDQKIC0tLSBhL2dkYi90b3AuYwogKysrIGIvZ2RiL3RvcC5jCi1AQCAtMzQ2LDYgKzM0 Niw3IEBAIHZvaWQKK0BAIC0zMzcsNiArMzM3LDcgQEAgdm9pZAogIHByZXBhcmVfZXhlY3V0ZV9j b21tYW5kICh2b2lkKQogIHsKICAgIGZyZWVfYWxsX3ZhbHVlcyAoKTsKQEAgLTE5MTk0LDggKzI0 NTQzLDEyMCBAQCBpbmRleCBjZTlmNTUxLi41ZjlkNzM5IDEwMDY0NAogIH0KICAKICBzdGF0aWMg dm9pZAorZGlmZiAtLWdpdCBhL2dkYi90eXBlcHJpbnQuaCBiL2dkYi90eXBlcHJpbnQuaAoraW5k ZXggN2Q3ZTZiYy4uNmVlNjVjZiAxMDA2NDQKKy0tLSBhL2dkYi90eXBlcHJpbnQuaAorKysrIGIv Z2RiL3R5cGVwcmludC5oCitAQCAtMjAsMTAgKzIwLDEzIEBACisgI2lmbmRlZiBUWVBFUFJJTlRf SAorICNkZWZpbmUgVFlQRVBSSU5UX0gKKyAKKytlbnVtIGxhbmd1YWdlOworIHN0cnVjdCB1aV9m aWxlOworIAorIHZvaWQgcHJpbnRfdHlwZV9zY2FsYXIgKHN0cnVjdCB0eXBlICogdHlwZSwgTE9O R0VTVCwgc3RydWN0IHVpX2ZpbGUgKik7CisgCisgdm9pZCBjX3R5cGVfcHJpbnRfdmFyc3BlY19z dWZmaXggKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosIGludCwKKyAJCQkJICBpbnQs IGludCk7CisrCisrdm9pZCBjX3R5cGVfcHJpbnRfYXJncyAoc3RydWN0IHR5cGUgKiwgc3RydWN0 IHVpX2ZpbGUgKiwgaW50LCBlbnVtIGxhbmd1YWdlKTsKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9n ZGIvdWktZmlsZS5jIGIvZ2RiL3VpLWZpbGUuYworaW5kZXggZTZhYWY5My4uMTc2MGI0YyAxMDA2 NDQKKy0tLSBhL2dkYi91aS1maWxlLmMKKysrKyBiL2dkYi91aS1maWxlLmMKK0BAIC0yMiw2ICsy Miw3IEBACisgCisgI2luY2x1ZGUgImRlZnMuaCIKKyAjaW5jbHVkZSAidWktZmlsZS5oIgorKyNp bmNsdWRlICJnZGJfb2JzdGFjay5oIgorICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCisgI2luY2x1 ZGUgImdkYl9zZWxlY3QuaCIKKyAKK0BAIC0yNjQsNyArMjY1LDcgQEAgc2V0X3VpX2ZpbGVfZGF0 YSAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEsCisgfQorIAorIC8qIHVpX2ZpbGUg dXRpbGl0eSBmdW5jdGlvbiBmb3IgY29udmVydGluZyBhIGBgc3RydWN0IHVpX2ZpbGUnJyBpbnRv CistICAgYSBtZW1vcnkgYnVmZmVyJycuICovCisrICAgYSBtZW1vcnkgYnVmZmVyLiAqLworIAor IHN0cnVjdCBhY2N1bXVsYXRlZF91aV9maWxlCisgeworQEAgLTI5OCw2ICsyOTksMjMgQEAgdWlf ZmlsZV94c3RyZHVwIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgbG9uZyAqbGVuZ3RoKQorICAgICAq bGVuZ3RoID0gYWNjLmxlbmd0aDsKKyAgIHJldHVybiBhY2MuYnVmZmVyOworIH0KKysKKytzdGF0 aWMgdm9pZAorK2RvX3VpX2ZpbGVfb2JzYXZlc3RyaW5nICh2b2lkICpjb250ZXh0LCBjb25zdCBj aGFyICpidWZmZXIsIGxvbmcgbGVuZ3RoKQorK3sKKysgIHN0cnVjdCBvYnN0YWNrICpvYnN0YWNr ID0gKHN0cnVjdCBvYnN0YWNrICopIGNvbnRleHQ7CisrICBvYnN0YWNrX2dyb3cgKG9ic3RhY2ss IGJ1ZmZlciwgbGVuZ3RoKTsKKyt9CisrCisrY2hhciAqCisrdWlfZmlsZV9vYnNhdmVzdHJpbmcg KHN0cnVjdCB1aV9maWxlICpmaWxlLCBzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywKKysJCSAgICAg IGxvbmcgKmxlbmd0aCkKKyt7CisrICB1aV9maWxlX3B1dCAoZmlsZSwgZG9fdWlfZmlsZV9vYnNh dmVzdHJpbmcsIG9ic3RhY2spOworKyAgKmxlbmd0aCA9IG9ic3RhY2tfb2JqZWN0X3NpemUgKG9i c3RhY2spOworKyAgb2JzdGFja18xZ3JvdyAob2JzdGFjaywgJ1wwJyk7CisrICByZXR1cm4gb2Jz dGFja19maW5pc2ggKG9ic3RhY2spOworK30KKyAMCisgLyogQSBwdXJlIG1lbW9yeSBiYXNlZCBg YHN0cnVjdCB1aV9maWxlJycgdGhhdCBjYW4gYmUgdXNlZCBhbiBvdXRwdXQKKyAgICBidWZmZXIu IFRoZSBidWZmZXJzIGFjY3VtdWxhdGVkIGNvbnRlbnRzIGFyZSBhdmFpbGFibGUgdmlhCitkaWZm IC0tZ2l0IGEvZ2RiL3VpLWZpbGUuaCBiL2dkYi91aS1maWxlLmgKK2luZGV4IDYxNTU2OTkuLmJi OTRmNGIgMTAwNjQ0CistLS0gYS9nZGIvdWktZmlsZS5oCisrKysgYi9nZGIvdWktZmlsZS5oCitA QCAtMjAsNiArMjAsNyBAQAorICNpZm5kZWYgVUlfRklMRV9ICisgI2RlZmluZSBVSV9GSUxFX0gK KyAKKytzdHJ1Y3Qgb2JzdGFjazsKKyBzdHJ1Y3QgdWlfZmlsZTsKKyAKKyAvKiBDcmVhdGUgYSBn ZW5lcmljIHVpX2ZpbGUgb2JqZWN0IHdpdGggbnVsbCBtZXRob2RzLiAqLworQEAgLTc4LDcgKzc5 LDEwIEBAIGV4dGVybiB2b2lkIHVpX2ZpbGVfcHV0IChzdHJ1Y3QgdWlfZmlsZSAqc3JjLCB1aV9m aWxlX3B1dF9tZXRob2RfZnR5cGUgKndyaXRlLCB2CisgICAgbWludXMgdGhhdCBhcHBlbmRlZCBO VUwuICovCisgZXh0ZXJuIGNoYXIgKnVpX2ZpbGVfeHN0cmR1cCAoc3RydWN0IHVpX2ZpbGUgKmZp bGUsIGxvbmcgKmxlbmd0aCk7CisgCistCisrLyogU2ltaWxhciB0byB1aV9maWxlX3hzdHJkdXAs IGJ1dCByZXR1cm4gYSBuZXcgc3RyaW5nIGFsbG9jYXRlZCBvbgorKyAgIE9CU1RBQ0suICAqLwor K2V4dGVybiBjaGFyICp1aV9maWxlX29ic2F2ZXN0cmluZyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUs CisrCQkJCSAgIHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCBsb25nICpsZW5ndGgpOworIAorIGV4 dGVybiBsb25nIHVpX2ZpbGVfcmVhZCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGNoYXIgKmJ1Ziwg bG9uZyBsZW5ndGhfYnVmKTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvdXRpbHMuYyBiL2dkYi91dGls cy5jCitpbmRleCA4MmE2NmExLi5jMzA1NTA2IDEwMDY0NAorLS0tIGEvZ2RiL3V0aWxzLmMKKysr KyBiL2dkYi91dGlscy5jCitAQCAtMjY1Niw3ICsyNjU2LDEwIEBAIGZwcmludGZfc3ltYm9sX2Zp bHRlcmVkIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBjaGFyICpuYW1lLAorICAgIEFzIGFuIGV4 dHJhIGhhY2ssIHN0cmluZzE9PSJGT08oQVJHUykiIG1hdGNoZXMgc3RyaW5nMj09IkZPTyIuCisg ICAgVGhpcyAiZmVhdHVyZSIgaXMgdXNlZnVsIHdoZW4gc2VhcmNoaW5nIGZvciBtYXRjaGluZyBD KysgZnVuY3Rpb24gbmFtZXMKKyAgICAoc3VjaCBhcyBpZiB0aGUgdXNlciB0eXBlcyAnYnJlYWsg Rk9PJywgd2hlcmUgRk9PIGlzIGEgbWFuZ2xlZCBDKysKKy0gICBmdW5jdGlvbikuICovCisrICAg ZnVuY3Rpb24pLgorKworKyAgIEFzIGFuIGV4dHJhLXNwZWNpYWwgaGFjaywgd2UgZG8gdGhlIHNh bWUgd2l0aCAnICcsIHNvIHRoYXQKKysgICAiRk9PKEFSR1MpIGNvbnN0IiBjYW4gbWF0Y2ggIkZP TyIsIHRvby4gICovCisgCisgaW50Cisgc3RyY21wX2l3IChjb25zdCBjaGFyICpzdHJpbmcxLCBj b25zdCBjaGFyICpzdHJpbmcyKQorQEAgLTI2ODEsNyArMjY4NCw3IEBAIHN0cmNtcF9pdyAoY29u c3QgY2hhciAqc3RyaW5nMSwgY29uc3QgY2hhciAqc3RyaW5nMikKKyAJICBzdHJpbmcyKys7Cisg CX0KKyAgICAgfQorLSAgcmV0dXJuICgqc3RyaW5nMSAhPSAnXDAnICYmICpzdHJpbmcxICE9ICco JykgfHwgKCpzdHJpbmcyICE9ICdcMCcpOworKyAgcmV0dXJuICgqc3RyaW5nMSAhPSAnICcgJiYg KnN0cmluZzEgIT0gJ1wwJyAmJiAqc3RyaW5nMSAhPSAnKCcpIHx8ICgqc3RyaW5nMiAhPSAnXDAn ICYmICpzdHJpbmcyICE9ICcoJyk7CisgfQorIAorIC8qIFRoaXMgaXMgbGlrZSBzdHJjbXAgZXhj ZXB0IHRoYXQgaXQgaWdub3JlcyB3aGl0ZXNwYWNlIGFuZCB0cmVhdHMKIGRpZmYgLS1naXQgYS9n ZGIvdmFsYXJpdGguYyBiL2dkYi92YWxhcml0aC5jCi1pbmRleCAyYjY2Zjg1Li45YzM2ZTU2IDEw MDY0NAoraW5kZXggZWQ3NmIwOS4uOGJmMzYzNCAxMDA2NDQKIC0tLSBhL2dkYi92YWxhcml0aC5j CiArKysgYi9nZGIvdmFsYXJpdGguYwogQEAgLTEzOSw3ICsxMzksNiBAQCBhbiBpbnRlZ2VyIG5v ciBhIHBvaW50ZXIgb2YgdGhlIHNhbWUgdHlwZS4iKSk7CkBAIC0xOTI4NSw3ICsyNDc0Niw3IEBA IGluZGV4IDJiNjZmODUuLjljMzZlNTYgMTAwNjQ0CiAgfQogIAogZGlmZiAtLWdpdCBhL2dkYi92 YWxvcHMuYyBiL2dkYi92YWxvcHMuYwotaW5kZXggMTY2NzM2OC4uZTFhNmJlZiAxMDA2NDQKK2lu ZGV4IGNhMzQwODMuLmMyM2ZkNjggMTAwNjQ0CiAtLS0gYS9nZGIvdmFsb3BzLmMKICsrKyBiL2dk Yi92YWxvcHMuYwogQEAgLTM4LDYgKzM4LDcgQEAKQEAgLTE5MzA1LDcgKzI0NzY2LDcgQEAgaW5k ZXggMTY2NzM2OC4uZTFhNmJlZiAxMDA2NDQKICAJICByYW5nZV90eXBlID0gY3JlYXRlX3Jhbmdl X3R5cGUgKChzdHJ1Y3QgdHlwZSAqKSBOVUxMLAogIAkJCQkJICBUWVBFX1RBUkdFVF9UWVBFIChy YW5nZV90eXBlKSwKICAJCQkJCSAgbG93X2JvdW5kLAotQEAgLTU3MCw2ICs1NjksNjQgQEAgdmFs dWVfb25lIChzdHJ1Y3QgdHlwZSAqdHlwZSwgZW51bSBsdmFsX3R5cGUgbHYpCitAQCAtODIyLDYg KzgyMSw2NCBAQCB2YWx1ZV9vbmUgKHN0cnVjdCB0eXBlICp0eXBlLCBlbnVtIGx2YWxfdHlwZSBs dikKICAgIHJldHVybiB2YWw7CiAgfQogIApAQCAtMTkzNzAsNyArMjQ4MzEsNyBAQCBpbmRleCAx NjY3MzY4Li5lMWE2YmVmIDEwMDY0NAogIC8qIEhlbHBlciBmdW5jdGlvbiBmb3IgdmFsdWVfYXQs IHZhbHVlX2F0X2xhenksIGFuZCB2YWx1ZV9hdF9sYXp5X3N0YWNrLiAgKi8KICAKICBzdGF0aWMg c3RydWN0IHZhbHVlICoKLUBAIC02NjEsMTUgKzcxOCwyMSBAQCB2YWx1ZV9mZXRjaF9sYXp5IChz dHJ1Y3QgdmFsdWUgKnZhbCkKK0BAIC05MTMsMTUgKzk3MCwyMSBAQCB2YWx1ZV9mZXRjaF9sYXp5 IChzdHJ1Y3QgdmFsdWUgKnZhbCkKICAgICAgfQogICAgZWxzZSBpZiAoVkFMVUVfTFZBTCAodmFs KSA9PSBsdmFsX21lbW9yeSkKICAgICAgewpAQCAtMTkzOTksNyArMjQ4NjAsNyBAQCBpbmRleCAx NjY3MzY4Li5lMWE2YmVmIDEwMDY0NAogIAl9CiAgICAgIH0KICAgIGVsc2UgaWYgKFZBTFVFX0xW QUwgKHZhbCkgPT0gbHZhbF9yZWdpc3RlcikKLUBAIC0xMDc3LDcgKzExNDAsMTggQEAgYWRkcmVz c19vZl92YXJpYWJsZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgYmxvY2sgKmIpCitAQCAt MTMyOSw3ICsxMzkyLDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnZh ciwgc3RydWN0IGJsb2NrICpiKQogICAgaWYgKChWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfbWVt b3J5ICYmIHZhbHVlX2xhenkgKHZhbCkpCiAgICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBU WVBFX0NPREVfRlVOQykKICAgICAgewpAQCAtMTk0MTksNyArMjQ4ODAsNyBAQCBpbmRleCAxNjY3 MzY4Li5lMWE2YmVmIDEwMDY0NAogICAgICAgIHJldHVybiB2YWx1ZV9mcm9tX3BvaW50ZXIgKGxv b2t1cF9wb2ludGVyX3R5cGUgKHR5cGUpLCBhZGRyKTsKICAgICAgfQogIAotQEAgLTExODMsNiAr MTI1Nyw3IEBAIHN0cnVjdCB2YWx1ZSAqCitAQCAtMTQzNSw2ICsxNTA5LDcgQEAgc3RydWN0IHZh bHVlICoKICB2YWx1ZV9jb2VyY2VfYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJnMSkKICB7CiAgICBz dHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKQEAg LTE5NDI3LDcgKzI0ODg4LDcgQEAgaW5kZXggMTY2NzM2OC4uZTFhNmJlZiAxMDA2NDQKICAKICAg IC8qIElmIHRoZSB1c2VyIHRyaWVzIHRvIGRvIHNvbWV0aGluZyByZXF1aXJpbmcgYSBwb2ludGVy IHdpdGggYW4KICAgICAgIGFycmF5IHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBwdXNoZWQgdG8gdGhl IHRhcmdldCwgdGhlbiB0aGlzIHdvdWxkCi1AQCAtMTE5Miw4ICsxMjY3LDEyIEBAIHZhbHVlX2Nv ZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICphcmcxKQorQEAgLTE0NDQsOCArMTUxOSwxMiBAQCB2 YWx1ZV9jb2VyY2VfYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJnMSkKICAgIGlmIChWQUxVRV9MVkFM IChhcmcxKSAhPSBsdmFsX21lbW9yeSkKICAgICAgZXJyb3IgKF8oIkF0dGVtcHQgdG8gdGFrZSBh ZGRyZXNzIG9mIHZhbHVlIG5vdCBsb2NhdGVkIGluIG1lbW9yeS4iKSk7CiAgCkBAIC0xOTQ0MSw3 ICsyNDkwMiw5NCBAQCBpbmRleCAxNjY3MzY4Li5lMWE2YmVmIDEwMDY0NAogIH0KICAKICAvKiBH aXZlbiBhIHZhbHVlIHdoaWNoIGlzIGEgZnVuY3Rpb24sIHJldHVybiBhIHZhbHVlIHdoaWNoIGlz IGEgcG9pbnRlcgotQEAgLTMwNDIsOCArMzEyMSw2IEBAIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFs dWUgKmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgpCitAQCAtMjMyOCwxMiArMjQwNywy NSBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdHlwZSAqKmFyZ190eXBlcywgaW50IG5h cmdzLAorICAgaWYgKG1ldGhvZCkKKyAgICAgeworICAgICAgIGdkYl9hc3NlcnQgKG9iaik7Cisr CisrICAgICAgLyogT0JKIG1heSBiZSBhIHBvaW50ZXIgdmFsdWUgcmF0aGVyIHRoYW4gdGhlIG9i amVjdCBpdHNlbGYuICAqLworKyAgICAgIG9iaiA9IGNvZXJjZV9yZWYgKG9iaik7CisrICAgICAg d2hpbGUgKFRZUEVfQ09ERSAoY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAob2JqKSkpID09IFRZ UEVfQ09ERV9QVFIpCisrCW9iaiA9IGNvZXJjZV9yZWYgKHZhbHVlX2luZCAob2JqKSk7CisgICAg ICAgb2JqX3R5cGVfbmFtZSA9IFRZUEVfTkFNRSAodmFsdWVfdHlwZSAob2JqKSk7CistICAgICAg LyogSGFjazogZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIG9mdGVuIHBhc3NlcyBpbiBhIHBvaW50 ZXIKKy0gICAgICAgICB2YWx1ZSByYXRoZXIgdGhhbiB0aGUgb2JqZWN0IGl0c2VsZiwgc28gdHJ5 IGFnYWluLiAgKi8KKy0gICAgICBpZiAoKCFvYmpfdHlwZV9uYW1lIHx8ICEqb2JqX3R5cGVfbmFt ZSkgCistCSAgJiYgKFRZUEVfQ09ERSAodmFsdWVfdHlwZSAob2JqKSkgPT0gVFlQRV9DT0RFX1BU UikpCistCW9ial90eXBlX25hbWUgPSBUWVBFX05BTUUgKFRZUEVfVEFSR0VUX1RZUEUgKHZhbHVl X3R5cGUgKG9iaikpKTsKKysKKysgICAgICAvKiBGaXJzdCBjaGVjayB3aGV0aGVyIHRoaXMgaXMg YSBkYXRhIG1lbWJlciwgZS5nLiBhIHBvaW50ZXIgdG8KKysJIGEgZnVuY3Rpb24uICAqLworKyAg ICAgIGlmIChUWVBFX0NPREUgKGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKG9iaikpKSA9PSBU WVBFX0NPREVfU1RSVUNUKQorKwl7CisrCSAgKnZhbHAgPSBzZWFyY2hfc3RydWN0X2ZpZWxkIChu YW1lLCBvYmosIDAsCisrCQkJCSAgICAgICBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChvYmop KSwgMCk7CisrCSAgaWYgKCp2YWxwKQorKwkgICAgeworKwkgICAgICAqc3RhdGljcCA9IDE7Cisr CSAgICAgIHJldHVybiAwOworKwkgICAgfQorKwl9CisgCisgICAgICAgZm5zX3B0ciA9IHZhbHVl X2ZpbmRfb2xvYWRfbWV0aG9kX2xpc3QgKCZ0ZW1wLCBuYW1lLCAKKyAJCQkJCSAgICAgIDAsICZu dW1fZm5zLCAKK0BAIC0yMzUzLDE2ICsyNDQ1LDI5IEBAIGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0 cnVjdCB0eXBlICoqYXJnX3R5cGVzLCBpbnQgbmFyZ3MsCisgICAgIH0KKyAgIGVsc2UKKyAgICAg eworLSAgICAgIGNvbnN0IGNoYXIgKnF1YWxpZmllZF9uYW1lID0gU1lNQk9MX0NQTFVTX0RFTUFO R0xFRF9OQU1FIChmc3ltKTsKKysgICAgICBjb25zdCBjaGFyICpxdWFsaWZpZWRfbmFtZSA9IFNZ TUJPTF9OQVRVUkFMX05BTUUgKGZzeW0pOworIAorLSAgICAgIC8qIElmIHdlIGhhdmUgYSBDKysg bmFtZSwgdHJ5IHRvIGV4dHJhY3QganVzdCB0aGUgZnVuY3Rpb24KKy0JIHBhcnQuICAqLworLSAg ICAgIGlmIChxdWFsaWZpZWRfbmFtZSkKKy0JZnVuY19uYW1lID0gY3BfZnVuY19uYW1lIChxdWFs aWZpZWRfbmFtZSk7CisrICAgICAgLyogSWYgd2UgaGF2ZSBhIGZ1bmN0aW9uIHdpdGggYSBDKysg bmFtZSwgdHJ5IHRvIGV4dHJhY3QganVzdAorKwkgdGhlIGZ1bmN0aW9uIHBhcnQuICBEbyBub3Qg dHJ5IHRoaXMgZm9yIG5vbi1mdW5jdGlvbnMgKGUuZy4KKysJIGZ1bmN0aW9uIHBvaW50ZXJzKS4g ICovCisrICAgICAgaWYgKHF1YWxpZmllZF9uYW1lCisrCSAgJiYgVFlQRV9DT0RFIChjaGVja190 eXBlZGVmIChTWU1CT0xfVFlQRSAoZnN5bSkpKSA9PSBUWVBFX0NPREVfRlVOQykKKysJeworKwkg IGZ1bmNfbmFtZSA9IGNwX2Z1bmNfbmFtZSAocXVhbGlmaWVkX25hbWUpOworKworKwkgIC8qIElm IGNwX2Z1bmNfbmFtZSBkaWQgbm90IHJlbW92ZSBhbnl0aGluZywgdGhlIG5hbWUgb2YgdGhlCisr CSAgICAgc3ltYm9sIGRpZCBub3QgaW5jbHVkZSBzY29wZSBvciBhcmd1bWVudCB0eXBlcyAtIGl0 IHdhcworKwkgICAgIHByb2JhYmx5IGEgQy1zdHlsZSBmdW5jdGlvbi4gICovCisrCSAgaWYgKGZ1 bmNfbmFtZSAmJiBzdHJjbXAgKGZ1bmNfbmFtZSwgcXVhbGlmaWVkX25hbWUpID09IDApCisrCSAg ICB7CisrCSAgICAgIHhmcmVlIChmdW5jX25hbWUpOworKwkgICAgICBmdW5jX25hbWUgPSBOVUxM OworKwkgICAgfQorKwl9CisgCistICAgICAgLyogSWYgdGhlcmUgd2FzIG5vIEMrKyBuYW1lLCB0 aGlzIG11c3QgYmUgYSBDLXN0eWxlIGZ1bmN0aW9uLgorLQkgSnVzdCByZXR1cm4gdGhlIHNhbWUg c3ltYm9sLiAgRG8gdGhlIHNhbWUgaWYgY3BfZnVuY19uYW1lCistCSBmYWlscyBmb3Igc29tZSBy ZWFzb24uICAqLworKyAgICAgIC8qIElmIHRoZXJlIHdhcyBubyBDKysgbmFtZSwgdGhpcyBtdXN0 IGJlIGEgQy1zdHlsZSBmdW5jdGlvbiBvcgorKwkgbm90IGEgZnVuY3Rpb24gYXQgYWxsLiAgSnVz dCByZXR1cm4gdGhlIHNhbWUgc3ltYm9sLiAgRG8gdGhlCisrCSBzYW1lIGlmIGNwX2Z1bmNfbmFt ZSBmYWlscyBmb3Igc29tZSByZWFzb24uICAqLworICAgICAgIGlmIChmdW5jX25hbWUgPT0gTlVM TCkKKyAgICAgICAgIHsKKyAJICAqc3ltcCA9IGZzeW07CitAQCAtMzA5Niw3ICszMjAxLDcgQEAg dmFsdWVfbWF5YmVfbmFtZXNwYWNlX2VsdCAoY29uc3Qgc3RydWN0IHR5cGUgKmN1cnR5cGUsCisg ICBzdHJ1Y3Qgc3ltYm9sICpzeW07CisgICBzdHJ1Y3QgdmFsdWUgKnJlc3VsdDsKKyAKKy0gIHN5 bSA9IGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChuYW1lc3BhY2VfbmFtZSwgbmFtZSwgTlVM TCwKKysgIHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlKG5hbWVzcGFjZV9uYW1lLCBu YW1lLAorIAkJCQkgICAgZ2V0X3NlbGVjdGVkX2Jsb2NrICgwKSwgCisgCQkJCSAgICBWQVJfRE9N QUlOKTsKKyAKK0BAIC0zMjQwLDcgKzMzNDUsNyBAQCB2YWx1ZV9vZl9sb2NhbCAoY29uc3QgY2hh ciAqbmFtZSwgaW50IGNvbXBsYWluKQorIAorICAgLyogQ2FsbGluZyBsb29rdXBfYmxvY2tfc3lt Ym9sIGlzIG5lY2Vzc2FyeSB0byBnZXQgdGhlIExPQ19SRUdJU1RFUgorICAgICAgc3ltYm9sIGlu c3RlYWQgb2YgdGhlIExPQ19BUkcgb25lIChpZiBib3RoIGV4aXN0KS4gICovCistICBzeW0gPSBs b29rdXBfYmxvY2tfc3ltYm9sIChiLCBuYW1lLCBOVUxMLCBWQVJfRE9NQUlOKTsKKysgIHN5bSA9 IGxvb2t1cF9ibG9ja19zeW1ib2wgKGIsIG5hbWUsIFZBUl9ET01BSU4pOworICAgaWYgKHN5bSA9 PSBOVUxMKQorICAgICB7CisgICAgICAgaWYgKGNvbXBsYWluKQorQEAgLTMyOTQsOCArMzM5OSw2 IEBAIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBs ZW5ndGgpCiAgICAgICAgfHwgbG93Ym91bmQgKyBsZW5ndGggLSAxID4gdXBwZXJib3VuZCkKICAg ICAgZXJyb3IgKF8oInNsaWNlIG91dCBvZiByYW5nZSIpKTsKICAKQEAgLTE5NzM0LDcgKzI1Mjgy LDcgQEAgaW5kZXggYTQ2MmVlNC4uOTY4Y2RmNCAxMDA2NDQKICsgIG9ic2VydmVyX2F0dGFjaF9t YXJrX3VzZWQgKHZhbHVlX3R5cGVzX21hcmtfdXNlZCk7CiAgfQogZGlmZiAtLWdpdCBhL2dkYi92 YWx1ZS5oIGIvZ2RiL3ZhbHVlLmgKLWluZGV4IDhhYzYyYjguLjA1MWM4YzUgMTAwNjQ0CitpbmRl eCA0MmI0NDk3Li42Zjk5MjNjIDEwMDY0NAogLS0tIGEvZ2RiL3ZhbHVlLmgKICsrKyBiL2dkYi92 YWx1ZS5oCiBAQCAtMzQyLDExICszNDIsMTYgQEAgZXh0ZXJuIExPTkdFU1QgdW5wYWNrX2ZpZWxk X2FzX2xvbmcgKHN0cnVjdCB0eXBlICp0eXBlLApAQCAtMTk3NTQsNyArMjUzMDIsNyBAQCBpbmRl eCA4YWM2MmI4Li4wNTFjOGM1IDEwMDY0NAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2F0 IChzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSIGFkZHIpOwogIGV4dGVybiBzdHJ1Y3QgdmFs dWUgKnZhbHVlX2F0X2xhenkgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcik7CiAg Ci1AQCAtNjg0LDcgKzY4OSw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2FsbG9jYXRl X3NwYWNlX2luX2luZmVyaW9yIChpbnQpOworQEAgLTY4OSw3ICs2OTQsNyBAQCBleHRlcm4gc3Ry dWN0IHZhbHVlICp2YWx1ZV9hbGxvY2F0ZV9zcGFjZV9pbl9pbmZlcmlvciAoaW50KTsKICBleHRl cm4gc3RydWN0IHZhbHVlICp2YWx1ZV9vZl9sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwgaW50IGNv bXBsYWluKTsKICAKICBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9zdWJzY3JpcHRlZF9ydmFs dWUgKHN0cnVjdCB2YWx1ZSAqYXJyYXksCkBAIC0xOTc2NCw3ICsyNTMxMiw3IEBAIGluZGV4IDhh YzYyYjguLjA1MWM4YzUgMTAwNjQ0CiAgLyogVXNlciBmdW5jdGlvbiBoYW5kbGVyLiAgKi8KICAK IGRpZmYgLS1naXQgYS9nZGIvdmFyb2JqLmMgYi9nZGIvdmFyb2JqLmMKLWluZGV4IDQ2ZDZiMzQu LjA1MzY3NTMgMTAwNjQ0CitpbmRleCA2ZWM4N2IzLi5iMjc0YWRlIDEwMDY0NAogLS0tIGEvZ2Ri L3Zhcm9iai5jCiArKysgYi9nZGIvdmFyb2JqLmMKIEBAIC0yNiw2ICsyNiw4IEBACkBAIC0xOTc3 Niw3NSArMjUzMjQsMjAgQEAgaW5kZXggNDZkNmIzNC4uMDUzNjc1MyAxMDA2NDQKICAKICAjaW5j bHVkZSAiZ2RiX2Fzc2VydC5oIgogICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtMzQ2OCw2 ICszNDcwLDE5IEBAIGphdmFfdmFsdWVfb2ZfdmFyaWFibGUgKHN0cnVjdCB2YXJvYmogKnZhciwg ZW51bSB2YXJvYmpfZGlzcGxheV9mb3JtYXRzIGZvcm1hdCkKLSAgIHJldHVybiBjcGx1c192YWx1 ZV9vZl92YXJpYWJsZSAodmFyLCBmb3JtYXQpOwotIH0KLSAKLSsvKiBJdGVyYXRlIGFsbCB0aGUg ZXhpc3RpbmcgVkFST0JKcyBhbmQgY2FsbCB0aGUgRlVOQyBjYWxsYmFjayBmb3IgdGhlbSB3aXRo IGFuCi0rICAgYXJiaXRyYXJ5IGNhbGxlciBzdXBwbGllZCBEQVRBIHBvaW50ZXIuICAqLwotKwot K3N0YXRpYyB2b2lkCi0rYWxsX3Zhcm9ianMgKHZvaWQgKCpmdW5jKSAoc3RydWN0IHZhcm9iaiAq dmFyLCB2b2lkICpkYXRhKSwgdm9pZCAqZGF0YSkKLSt7Ci0rICBzdHJ1Y3Qgdmxpc3QgKip2bHAs ICp2bDsKLSsKLSsgIGZvciAodmxwID0gdmFyb2JqX3RhYmxlOyB2bHAgPCB2YXJvYmpfdGFibGUg KyBWQVJPQkpfVEFCTEVfU0laRTsgdmxwKyspCi0rICAgIGZvciAodmwgPSAqdmxwOyB2bCAhPSBO VUxMOyB2bCA9IHZsLT5uZXh0KQotKyAgICAgICgqZnVuYykgKHZsLT52YXIsIGRhdGEpOwotK30K LSsKLSAvKiBJdGVyYXRlIGFsbCB0aGUgZXhpc3RpbmcgX3Jvb3RfIFZBUk9CSnMgYW5kIGNhbGwg dGhlIEZVTkMgY2FsbGJhY2sgZm9yIHRoZW0KLSAgICB3aXRoIGFuIGFyYml0cmFyeSBjYWxsZXIg c3VwcGxpZWQgREFUQSBwb2ludGVyLiAgKi8KLSAKLUBAIC0zNDg1LDYgKzM1MDAsNDMgQEAgYWxs X3Jvb3RfdmFyb2JqcyAodm9pZCAoKmZ1bmMpIChzdHJ1Y3QgdmFyb2JqICp2YXIsIHZvaWQgKmRh dGEpLCB2b2lkICpkYXRhKQorQEAgLTM0OTUsNyArMzQ5Nyw3IEBAIGFsbF9yb290X3Zhcm9ianMg KHZvaWQgKCpmdW5jKSAoc3RydWN0IHZhcm9iaiAqdmFyLCB2b2lkICpkYXRhKSwgdm9pZCAqZGF0 YSkKICAgICAgICAoKmZ1bmMpICh2YXJfcm9vdC0+cm9vdHZhciwgZGF0YSk7CiAgICAgIH0KICB9 CistDAogKwotKy8qIEhlbHBlciBmb3IgdmFyb2JqX3R5cGVzX21hcmtfdXNlZC4gIENhbGwgdHlw ZV9tYXJrX3VzZWQgZm9yIGFueSBUWVBFcwotKyAgIHJlZmVyZW5jZWQgZnJvbSB0aGlzIFZBUi4g ICovCi0rCi0rc3RhdGljIHZvaWQKLSt2YXJvYmpfdHlwZXNfbWFya191c2VkX2l0ZXIgKHN0cnVj dCB2YXJvYmogKnZhciwgdm9pZCAqdW51c2VkKQotK3sKLSsgIC8qIEV2ZW4gRkxPQVRJTkcgb3Ig SVNfSU5WQUxJRCBWQVJzIHdpdGggbm9uLU5VTEwgVFlQRSByZWZlcmVuY2VzIHdpbGwKLSsgICAg IGZyZWUgdGhlbSBpbiBmcmVlX3ZhcmlhYmxlLiAgU3RpbGwgRVhQIG1heSBhbHNvIHJlZmVyZW5j ZSBUWVBFcwotKyAgICAgYnV0IHRoZXNlIGJlbG9uZyB0byBTWU1CT0xzIHdoaWNoIHNob3VsZCBi ZSBhbHdheXMgYXNzb2NpYXRlZCB3aXRoCi0rICAgICBhbiBPQkpGSUxFIChhbmQgdGhlcmVmb3Jl IG5vdCB1c2VmdWwgdG8gYmUgdHlwZV9tYXJrX3VzZWQpLiAgKi8KLSsKLSsgIHR5cGVfbWFya191 c2VkICh2YXItPnR5cGUpOwotKyAgaWYgKHZhci0+dmFsdWUpCi0rICAgIHR5cGVfbWFya191c2Vk ICh2YWx1ZV90eXBlICh2YXItPnZhbHVlKSk7Ci0rCi0rICAvKiBDaGVjayBWQVJPQkpST09UcyBv bmx5IG9uY2UgZHVyaW5nIHRoZSB2YXJvYmpfdHlwZXNfbWFya191c2VkIHBhc3MuICAqLwotKwot KyAgaWYgKHZhci0+cm9vdC0+cm9vdHZhciA9PSB2YXIpCi0rICAgIHsKLSsgICAgICBpZiAodmFy LT5yb290LT5leHApCi0rCWV4cF90eXBlc19tYXJrX3VzZWQgKHZhci0+cm9vdC0+ZXhwKTsKLSsg ICAgfQotK30KLSsKLSsvKiBDYWxsIHR5cGVfbWFya191c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJl bmNlZCBmcm9tIHRoaXMgR0RCIHNvdXJjZSBmaWxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Zh cm9ial90eXBlc19tYXJrX3VzZWQgKHZvaWQpCi0rewotKyAgLyogQ2hlY2sgYWxsIHRoZSBWQVJP QkpzLCBldmVuIG5vbi1yb290IG9uZXMuICBDaGlsZCBWQVJPQkpzIGNhbiByZWZlcmVuY2UKLSsg ICAgIHR5cGVzIGZyb20gb3RoZXIgT0JKRklMRXMgdGhyb3VnaCBUWVBFX0lTX09QQVFVRSByZXNv bHV0aW9ucyBieQotKyAgICAgY2hlY2tfdHlwZWRlZi4gIFN1Y2ggdHlwZXMgcmVmZXJlbmNlcyB3 aWxsIG5vdCBiZSBpbnRlcmNvbm5lY3RlZCBpbnRvIHRoZQotKyAgICAgc2FtZSBUWVBFX0dST1VQ LiAgKi8KLSsKLSsgIGFsbF92YXJvYmpzICh2YXJvYmpfdHlwZXNfbWFya191c2VkX2l0ZXIsIE5V TEwpOwotK30KLSAMCiAgZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfdmFyb2JqICh2b2lkKTsKICB2 b2lkCisgX2luaXRpYWxpemVfdmFyb2JqICh2b2lkKQogZGlmZiAtLWdpdCBhL2dkYi94Y29mZnJl YWQuYyBiL2dkYi94Y29mZnJlYWQuYwotaW5kZXggNjMwMWI2MS4uNDdjMmFjYiAxMDA2NDQKK2lu ZGV4IDI1Y2MyZDkuLjY3ODQ2NTQgMTAwNjQ0CiAtLS0gYS9nZGIveGNvZmZyZWFkLmMKICsrKyBi L2dkYi94Y29mZnJlYWQuYwotQEAgLTMwMzUsNiArMzAzNSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3lt X2ZucyB4Y29mZl9zeW1fZm5zID0KK0BAIC0zMDMwLDYgKzMwMzAsNyBAQCBzdGF0aWMgc3RydWN0 IHN5bV9mbnMgeGNvZmZfc3ltX2ZucyA9CiAgICB4Y29mZl9uZXdfaW5pdCwJCS8qIHN5bV9uZXdf aW5pdDogaW5pdCBhbnl0aGluZyBnYmwgdG8gZW50aXJlIHN5bXRhYiAqLwogICAgeGNvZmZfc3lt ZmlsZV9pbml0LAkJLyogc3ltX2luaXQ6IHJlYWQgaW5pdGlhbCBpbmZvLCBzZXR1cCBmb3Igc3lt X3JlYWQoKSAqLwogICAgeGNvZmZfaW5pdGlhbF9zY2FuLAkJLyogc3ltX3JlYWQ6IHJlYWQgYSBz eW1ib2wgZmlsZSBpbnRvIHN5bXRhYiAqLwoKZGlmZiAtLWdpdCBhL2dkYi1iejUzOTU5MC1nbnUt aWZ1bmMucGF0Y2ggYi9nZGItYno1Mzk1OTAtZ251LWlmdW5jLnBhdGNoCmluZGV4IGZiNGY1NmQu LmE1Y2UxNjAgMTAwNjQ0Ci0tLSBhL2dkYi1iejUzOTU5MC1nbnUtaWZ1bmMucGF0Y2gKKysrIGIv Z2RiLWJ6NTM5NTkwLWdudS1pZnVuYy5wYXRjaApAQCAtMSw0MSArMSw2NSBAQAotZ2RiLwotMjAw OS0xMS0yNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgoraHR0 cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL1Byb2plY3RBcmNoZXIKK2h0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9nZGIvd2lraS9BcmNoZXJCcmFuY2hNYW5hZ2VtZW50CiAKLQlUcmFuc3BhcmVudCBH TlUtSUZVTkNzIHN1cHBvcnQuCi0JKiBlbGZyZWFkLmMgKHJlY29yZF9taW5pbWFsX3N5bWJvbCk6 IEFwcGx5IGFsc28gZm9yIG1zdF90ZXh0X2dudV9pZnVuYy4KLQkoZWxmX3N5bXRhYl9yZWFkKTog U2V0IGFsc28gbXN0X3RleHRfZ251X2lmdW5jLgotCSogZ2RidHlwZXMuYyAoaW5pdF90eXBlKTog U3VwcG9ydCBUWVBFX0ZMQUdfR05VX0lGVU5DLgotCShnZGJ0eXBlc19wb3N0X2luaXQpOiBJbml0 aWFsaXplIGJ1aWx0aW5fZnVuY19mdW5jX3B0ci4KLQkob2JqZmlsZV90eXBlKTogSW5pdGlhbGl6 ZSBub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbC4KLQkqIGdkYnR5cGVzLmggKGVudW0gdHlw ZV9mbGFnX3ZhbHVlIDxUWVBFX0ZMQUdfR05VX0lGVU5DPikKLQkoVFlQRV9HTlVfSUZVTkMsIHN0 cnVjdCBtYWluX3R5cGUgPGZsYWdfZ251X2lmdW5jPikKLQkoc3RydWN0IGJ1aWx0aW5fdHlwZSA8 YnVpbHRpbl9mdW5jX2Z1bmNfcHRyPikKLQkoc3RydWN0IG9iamZpbGVfdHlwZSA8bm9kZWJ1Z190 ZXh0X2dudV9pZnVuY19zeW1ib2w+KTogTmV3LgotCSogaW5mY2FsbC5jIChmaW5kX2Z1bmN0aW9u X2FkZHIgPFRZUEVfR05VX0lGVU5DIChmdHlwZSk+KTogTmV3LgotCSogbWluc3ltcy5jIChsb29r dXBfbWluaW1hbF9zeW1ib2xfdGV4dCwgcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wpCi0JKGZp bmRfc29saWJfdHJhbXBvbGluZV90YXJnZXQpOiBTdXBwb3J0IGFsc28gbXN0X3RleHRfZ251X2lm dW5jLgotCShpbl9nbnVfaWZ1bmNfc3R1Yik6IE5ldy4KLQkqIHBhcnNlLmMgKHdyaXRlX2V4cF9t c3ltYm9sIDxtc3RfdGV4dF9nbnVfaWZ1bmM+KTogTmV3LgotCSogc29saWItc3ZyNC5jIChzdnI0 X2luX2R5bnN5bV9yZXNvbHZlX2NvZGUpOiBDYWxsIGFsc28KLQlpbl9nbnVfaWZ1bmNfc3R1Yi4K LQkqIHN5bW1pc2MuYyAoZHVtcF9tc3ltYm9scyA8bXN0X3RleHRfZ251X2lmdW5jPik6IE5ldy4K LQkqIHN5bXRhYi5jIChzZWFyY2hfc3ltYm9scyk6IFN1cHBvcnQgYWxzbyBtc3RfdGV4dF9nbnVf aWZ1bmMuCi0JKiBzeW10YWIuaCAoZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIDxtc3RfdGV4dF9n bnVfaWZ1bmM+KQotCShpbl9nbnVfaWZ1bmNfc3R1Yik6IE5ldy4KLQkqIGxpbmVzcGVjLmM6IElu Y2x1ZGUgaW5mY2FsbC5oLgotCShtaW5zeW1fZm91bmQgPE1TWU1CT0xfVFlQRSAobXN5bWJvbCkg PT0gbXN0X3RleHRfZ251X2lmdW5jPik6IE5ldy4KK0dJVCBzbmFwc2hvdDoKK2NvbW1pdCA3OTEx NjVkZjA3ZmQyMmQzODFkZWYxMzE4OTU0YzM4OWE2MDZmODFhCiAKLWdkYi90ZXN0c3VpdGUvCi0y MDA5LTExLTI0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Cith cmNoZXItamFua3JhdG9jaHZpbC1pZnVuYwogCi0JVHJhbnNwYXJlbnQgR05VLUlGVU5DcyBzdXBw b3J0LgotCSogZ2RiLmJhc2UvZ251LWlmdW5jLWxpYi5jLCBnZGIuYmFzZS9nbnUtaWZ1bmMuYywK LQlnZGIuYmFzZS9nbnUtaWZ1bmMuZXhwOiBOZXcuCi0KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9lbGZyZWFkLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9hbHBoYS1s aW51eC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2Ri L2VsZnJlYWQuYwkyMDEwLTAxLTE1IDExOjQ1OjM0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYwkyMDEwLTAxLTE1IDEyOjE3OjE2LjAwMDAwMDAw MCArMDEwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvYWxwaGEtbGludXgtdGRl cC5jCTIwMTAtMDEtMDEgMDg6MzE6MjkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4y MDEwMDEyMS9nZGIvYWxwaGEtbGludXgtdGRlcC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAw MDAwICswMTAwCitAQCAtMjYsNiArMjYsNyBAQAorICNpbmNsdWRlICJzeW10YWIuaCIKKyAjaW5j bHVkZSAicmVnc2V0LmgiCisgI2luY2x1ZGUgInJlZ2NhY2hlLmgiCisrI2luY2x1ZGUgImxpbnV4 LXRkZXAuaCIKKyAKKyAjaW5jbHVkZSAiYWxwaGEtdGRlcC5oIgorIAorQEAgLTIzNiw2ICsyMzcs OSBAQCBhbHBoYV9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mCisgCisgICBzZXRf Z2RiYXJjaF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24KKyAgICAgKGdkYmFyY2gsIGFscGhhX2xp bnV4X3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbik7CisrCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0 X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9t X2Z1bmNfcHRyX2FkZHIpOworIH0KKyAKKyAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVu Y2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEv Z2RiL2FtZDY0LWxpbnV4LXRkZXAuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAx MjEub3JpZy9nZGIvYW1kNjQtbGludXgtdGRlcC5jCTIwMTAtMDEtMjEgMTU6MTM6MjYuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvYW1kNjQtbGludXgtdGRlcC5j CTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitAQCAtMTU1Nyw2ICsxNTU3LDkg QEAgYW1kNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZgorICAgYW1kNjRfbGlu dXhfcmVjb3JkX3RkZXAuYXJnNiA9IEFNRDY0X1I5X1JFR05VTTsKKyAKKyAgIHRkZXAtPmkzODZf c3lzY2FsbF9yZWNvcmQgPSBhbWQ2NF9saW51eF9zeXNjYWxsX3JlY29yZDsKKysKKysgIHNldF9n ZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAorKwkJCQkJICBsaW51 eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7CisgfQorIAwKKyAKK0luZGV4OiBnZGItNy4w LjUwLjIwMTAwMTIxL2dkYi9hcm0tbGludXgtdGRlcC5jCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcu MC41MC4yMDEwMDEyMS5vcmlnL2dkYi9hcm0tbGludXgtdGRlcC5jCTIwMTAtMDEtMDEgMDg6MzE6 MjkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvYXJtLWxpbnV4 LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAorQEAgLTkwNyw2ICs5 MDcsOSBAQCBhcm1fbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gCisgICBzZXRf Z2RiYXJjaF9kaXNwbGFjZWRfc3RlcF9mcmVlX2Nsb3N1cmUgKGdkYmFyY2gsCisgCQkJCQkgICBz aW1wbGVfZGlzcGxhY2VkX3N0ZXBfZnJlZV9jbG9zdXJlKTsKKyAgIHNldF9nZGJhcmNoX2Rpc3Bs YWNlZF9zdGVwX2xvY2F0aW9uIChnZGJhcmNoLCBkaXNwbGFjZWRfc3RlcF9hdF9lbnRyeV9wb2lu dCk7CisrCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJj aCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOworIH0KKyAKKyAv KiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAq LworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2VsZnJlYWQuYworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvZWxmcmVhZC5jCTIwMTAtMDEtMjEgMTU6 MTM6MjcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZWxmcmVh ZC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCiBAQCAtMTg0LDcgKzE4NCw4 IEBAIHJlY29yZF9taW5pbWFsX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwKICB7CiAgICBzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwpAQCAtNTgs MTAgKzgyLDgwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9lbGZyZWFkLmMKICAJ CX0KICAJICAgICAgZWxzZSBpZiAoKHN5bS0+bmFtZVswXSA9PSAnLicgJiYgc3ltLT5uYW1lWzFd ID09ICdMJykKICAJCSAgICAgICB8fCAoKHN5bS0+ZmxhZ3MgJiBCU0ZfTE9DQUwpCi1JbmRleDog Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZ2RidHlwZXMuYworSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMjEvZ2RiL2Zydi1saW51eC10ZGVwLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIw MTAwMTIxLm9yaWcvZ2RiL2Zydi1saW51eC10ZGVwLmMJMjAxMC0wMS0wMSAwODozMTozMi4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9mcnYtbGludXgtdGRlcC5j CTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitAQCAtMzIsNiArMzIsNyBAQAor ICNpbmNsdWRlICJmcmFtZS11bndpbmQuaCIKKyAjaW5jbHVkZSAicmVnc2V0LmgiCisgI2luY2x1 ZGUgImdkYl9zdHJpbmcuaCIKKysjaW5jbHVkZSAibGludXgtdGRlcC5oIgorIAorIC8qIERlZmlu ZSB0aGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIGFuIEZSLVYgaW5zdHJ1Y3Rpb24uICAqLworIHN0YXRp YyBjb25zdCBpbnQgZnJ2X2luc3RyX3NpemUgPSA0OworQEAgLTQ4Niw3ICs0ODcsMjEgQEAgZnJ2 X2xpbnV4X3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbiAoc3RydQorICAgcmV0dXJuIE5VTEw7Cisg fQorIAorLQwKKytzdGF0aWMgQ09SRV9BRERSCisrZnJ2X2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5j X3B0cl9hZGRyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkJICAgICAgQ09SRV9BRERS IGFkZHIsCisrCQkJCSAgICAgIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnKQorK3sKKysgIENPUkVf QUREUiBwYyA9IGZydl9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgYWRkciwg dGFyZyk7CisrICBDT1JFX0FERFIgcmVzb2x2ZWQ7CisrCisrICByZXNvbHZlZCA9IGxpbnV4X2Nv bnZlcnRfZnJvbV9mdW5jX2FuZF9wdHIgKGdkYmFyY2gsIGFkZHIsIHBjKTsKKysgIGlmIChyZXNv bHZlZCAhPSBwYykKKysgICAgcGMgPSBmcnZfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdk YmFyY2gsIHJlc29sdmVkLCB0YXJnKTsKKysKKysgIHJldHVybiBwYzsKKyt9CisrCisgc3RhdGlj IHZvaWQKKyBmcnZfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gpCisgeworQEAgLTQ5NCw2ICs1MDksMTAgQEAgZnJ2X2xpbnV4 X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIAorICAgZnJhbWVfdW53aW5kX2FwcGVuZF91 bndpbmRlciAoZ2RiYXJjaCwgJmZydl9saW51eF9zaWd0cmFtcF9mcmFtZV91bndpbmQpOyAKKyAg IHNldF9nZGJhcmNoX3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbiAoZ2RiYXJjaCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJ2X2xpbnV4X3JlZ3NldF9mcm9tX2Nv cmVfc2VjdGlvbik7CisrCisrICBpZiAoZnJ2X2FiaSAoZ2RiYXJjaCkgPT0gRlJWX0FCSV9GRFBJ QykKKysgICAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gs CisrCQkJCQkgIGZydl9saW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7CisgfQorIAor IHN0YXRpYyBlbnVtIGdkYl9vc2FiaQorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2Zy di10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2dk YnR5cGVzLmMJMjAxMC0wMS0xNSAwMzoyMjozMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9nZGJ0eXBlcy5jCTIwMTAtMDEtMTUgMTI6MTY6NDkuMDAwMDAwMDAw ICswMTAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9mcnYtdGRlcC5jCTIwMTAt MDEtMDEgMDg6MzE6MzIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9n ZGIvZnJ2LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAorQEAgLTEx NjksNyArMTE2OSw3IEBAIGZpbmRfZnVuY19kZXNjciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gK KyAgIHJldHVybiBkZXNjcjsKKyB9CisgCistc3RhdGljIENPUkVfQUREUgorK0NPUkVfQUREUgor IGZydl9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IENPUkVfQUREUiBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHRhcmdldF9vcHMgKnRhcmcpCisgeworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2Zy di10ZGVwLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL2Zy di10ZGVwLmgJMjAxMC0wMS0wMSAwODozMTozMi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4w LjUwLjIwMTAwMTIxL2dkYi9mcnYtdGRlcC5oCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAw ICswMTAwCitAQCAtMTE4LDMgKzExOCw2IEBAIENPUkVfQUREUiBmcnZfZmV0Y2hfb2JqZmlsZV9s aW5rX21hcCAoc3QKKyBzdHJ1Y3QgdGFyZ2V0X3NvX29wczsKKyBleHRlcm4gc3RydWN0IHRhcmdl dF9zb19vcHMgZnJ2X3NvX29wczsKKyAKKytDT1JFX0FERFIgZnJ2X2NvbnZlcnRfZnJvbV9mdW5j X3B0cl9hZGRyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkJCSAgQ09SRV9BRERSIGFk ZHIsCisrCQkJCQkgIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnKTsKK0luZGV4OiBnZGItNy4wLjUw LjIwMTAwMTIxL2dkYi9nZGJ0eXBlcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEw MDEyMS5vcmlnL2dkYi9nZGJ0eXBlcy5jCTIwMTAtMDEtMjEgMTU6MTM6MjYuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZ2RidHlwZXMuYwkyMDEwLTAxLTIxIDE1 OjE1OjQxLjAwMDAwMDAwMCArMDEwMAogQEAgLTE5NDYsNiArMTk0Niw4IEBAIGluaXRfdHlwZSAo ZW51bSB0eXBlX2NvZGUgY29kZSwgaW50IGxlbmcKICAgICAgVFlQRV9OT1RURVhUICh0eXBlKSA9 IDE7CiAgICBpZiAoZmxhZ3MgJiBUWVBFX0ZMQUdfRklYRURfSU5TVEFOQ0UpCkBAIC03MSwxNiAr MTY1LDE2IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nZGJ0eXBlcy5jCiAgCiAg ICBpZiAobmFtZSkKICAgICAgVFlQRV9OQU1FICh0eXBlKSA9IG9ic2F2ZXN0cmluZyAobmFtZSwg c3RybGVuIChuYW1lKSwKLUBAIC0zODQ2LDYgKzM4NDgsOCBAQCBnZGJ0eXBlc19wb3N0X2luaXQg KHN0cnVjdCBnZGJhcmNoICpnZGJhCitAQCAtMzk1NSw2ICszOTU3LDggQEAgZ2RidHlwZXNfcG9z dF9pbml0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYQogICAgICA9IGxvb2t1cF9wb2ludGVyX3R5cGUg KGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl92b2lkKTsKICAgIGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9m dW5jX3B0cgogICAgICA9IGxvb2t1cF9wb2ludGVyX3R5cGUgKGxvb2t1cF9mdW5jdGlvbl90eXBl IChidWlsdGluX3R5cGUtPmJ1aWx0aW5fdm9pZCkpOwotKyAgYnVpbHRpbl90eXBlLT5idWlsdGlu X2Z1bmNfZnVuY19wdHIKLSsgICAgPSBsb29rdXBfcG9pbnRlcl90eXBlIChsb29rdXBfZnVuY3Rp b25fdHlwZSAoYnVpbHRpbl90eXBlLT5idWlsdGluX2Z1bmNfcHRyKSk7CisrICBidWlsdGluX3R5 cGUtPmJ1aWx0aW5fZnVuY19mdW5jCisrICAgID0gbG9va3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0 aW5fdHlwZS0+YnVpbHRpbl9mdW5jX3B0cik7CiAgCiAgICAvKiBUaGlzIHR5cGUgcmVwcmVzZW50 cyBhIEdEQiBpbnRlcm5hbCBmdW5jdGlvbi4gICovCiAgICBidWlsdGluX3R5cGUtPmludGVybmFs X2ZuCi1AQCAtMzk2Miw2ICszOTY2LDExIEBAIG9iamZpbGVfdHlwZSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUpCitAQCAtNDA3MSw2ICs0MDc1LDExIEBAIG9iamZpbGVfdHlwZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUpCiAgCQkgIjx0ZXh0IHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPiIsIG9i amZpbGUpOwogICAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRf c3ltYm9sKQogICAgICA9IG9iamZpbGVfdHlwZS0+YnVpbHRpbl9pbnQ7CkBAIC05MiwxMCArMTg2 LDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nZGJ0eXBlcy5jCiAgICBvYmpm aWxlX3R5cGUtPm5vZGVidWdfZGF0YV9zeW1ib2wKICAgICAgPSBpbml0X3R5cGUgKFRZUEVfQ09E RV9JTlQsCiAgCQkgZ2RiYXJjaF9pbnRfYml0IChnZGJhcmNoKSAvIEhPU1RfQ0hBUl9CSVQsIDAs Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZ2RidHlwZXMuaAorSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMjEvZ2RiL2dkYnR5cGVzLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUw LjIwMTAwMTE1Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMC0wMS0xNSAxMTo0OToyNi4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nZGJ0eXBlcy5oCTIwMTAtMDEt MTUgMTI6MTY6NDkuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmln L2dkYi9nZGJ0eXBlcy5oCTIwMTAtMDEtMjEgMTU6MTQ6NDEuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZ2RidHlwZXMuaAkyMDEwLTAxLTIxIDE1OjE2OjM5LjAw MDAwMDAwMCArMDEwMAogQEAgLTE4OCw2ICsxODgsNyBAQCBlbnVtIHR5cGVfZmxhZ192YWx1ZQog ICAgVFlQRV9GTEFHX0ZJWEVEX0lOU1RBTkNFID0gKDEgPDwgMTUpLAogICAgVFlQRV9GTEFHX1NU VUJfU1VQUE9SVEVEID0gKDEgPDwgMTYpLApAQCAtMTI1LDE4ICsyMTksMTggQEAgSW5kZXg6IGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL2dkYnR5cGVzLmgKICAgIHVuc2lnbmVkIGludCBmbGFnX2Zp eGVkX2luc3RhbmNlIDogMTsKICAgIHVuc2lnbmVkIGludCBmbGFnX29iamZpbGVfb3duZWQgOiAx OwogICAgdW5zaWduZWQgaW50IGZsYWdfZGlzY2FyZGFibGUgOiAxOwotQEAgLTEyNTAsNiArMTI1 OCwxMCBAQCBzdHJ1Y3QgYnVpbHRpbl90eXBlCitAQCAtMTI0Myw2ICsxMjUxLDEwIEBAIHN0cnVj dCBidWlsdGluX3R5cGUKICAgICAgICgqKSAoKSBjYW4gc2VydmVyIGFzIGEgZ2VuZXJpYyBmdW5j dGlvbiBwb2ludGVyLiAgKi8KICAgIHN0cnVjdCB0eXBlICpidWlsdGluX2Z1bmNfcHRyOwogIAot KyAgLyogYHBvaW50ZXIgdG8gZnVuY3Rpb24gcmV0dXJuaW5nIHBvaW50ZXIgdG8gZnVuY3Rpb24g KHJldHVybmluZyB2b2lkKScgdHlwZS4KKysgIC8qIGBmdW5jdGlvbiByZXR1cm5pbmcgcG9pbnRl ciB0byBmdW5jdGlvbiAocmV0dXJuaW5nIHZvaWQpJyB0eXBlLgogKyAgICAgVGhlIGZpbmFsIHZv aWQgcmV0dXJuIHR5cGUgaXMgbm90IHNpZ25pZmljYW50IGZvciBpdC4gICovCi0rICBzdHJ1Y3Qg dHlwZSAqYnVpbHRpbl9mdW5jX2Z1bmNfcHRyOworKyAgc3RydWN0IHR5cGUgKmJ1aWx0aW5fZnVu Y19mdW5jOwogKwogIAogICAgLyogU3BlY2lhbC1wdXJwb3NlIHR5cGVzLiAgKi8KICAKLUBAIC0x MjkyLDYgKzEzMDQsNyBAQCBzdHJ1Y3Qgb2JqZmlsZV90eXBlCitAQCAtMTI4NSw2ICsxMjk3LDcg QEAgc3RydWN0IG9iamZpbGVfdHlwZQogIAogICAgLyogVHlwZXMgdXNlZCBmb3Igc3ltYm9scyB3 aXRoIG5vIGRlYnVnIGluZm9ybWF0aW9uLiAgKi8KICAgIHN0cnVjdCB0eXBlICpub2RlYnVnX3Rl eHRfc3ltYm9sOwpAQCAtMTQ0LDc3ICsyMzgsMjYwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9nZGJ0eXBlcy5oCiAgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z19kYXRhX3N5bWJvbDsK ICAgIHN0cnVjdCB0eXBlICpub2RlYnVnX3Vua25vd25fc3ltYm9sOwogICAgc3RydWN0IHR5cGUg Km5vZGVidWdfdGxzX3N5bWJvbDsKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmZj YWxsLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9ocHBhLWxpbnV4LXRkZXAuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvaW5mY2FsbC5jCTIw MTAtMDEtMDEgMDg6MzE6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvaW5mY2FsbC5jCTIwMTAtMDEtMTUgMTI6MTY6NDkuMDAwMDAwMDAwICswMTAwCi1AQCAt Mjg2LDYgKzI4NiwyNyBAQCBmaW5kX2Z1bmN0aW9uX2FkZHIgKHN0cnVjdCB2YWx1ZSAqZnVuY3Rp Ci0gICBlbHNlCi0gICAgIGVycm9yIChfKCJJbnZhbGlkIGRhdGEgdHlwZSBmb3IgZnVuY3Rpb24g dG8gYmUgY2FsbGVkLiIpKTsKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL2hwcGEt bGludXgtdGRlcC5jCTIwMTAtMDEtMDEgMDg6MzE6MzMuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMC41MC4yMDEwMDEyMS9nZGIvaHBwYS1saW51eC10ZGVwLmMJMjAxMC0wMS0yMSAxNToxNTo0 MS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zMiw2ICszMiw3IEBACisgI2luY2x1ZGUgInJlZ3NldC5o IgorICNpbmNsdWRlICJyZWdjYWNoZS5oIgorICNpbmNsdWRlICJocHBhLXRkZXAuaCIKKysjaW5j bHVkZSAibGludXgtdGRlcC5oIgogIAotKyAgaWYgKFRZUEVfR05VX0lGVU5DIChmdHlwZSkpCi0r ICAgIHsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqZnVuY19mdW5jX3B0cjsKKyAjaW5jbHVkZSAiZWxm L2NvbW1vbi5oIgorIAorQEAgLTUxMyw3ICs1MTQsMjEgQEAgaHBwYV9saW51eF9yZWdzZXRfZnJv bV9jb3JlX3NlY3Rpb24gKHN0cgorIAorICAgcmV0dXJuIE5VTEw7CisgfQorLQwKICsKLSsgICAg ICBmdW5hZGRyICs9IGdkYmFyY2hfZGVwcmVjYXRlZF9mdW5jdGlvbl9zdGFydF9vZmZzZXQgKGdk YmFyY2gpOworK3N0YXRpYyBDT1JFX0FERFIKKytocHBhMzJfbGludXhfY29udmVydF9mcm9tX2Z1 bmNfcHRyX2FkZHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKwkJCQkJIENPUkVfQUREUiBh ZGRyLAorKwkJCQkJIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnKQorK3sKKysgIENPUkVfQUREUiBw YyA9IGhwcGEzMl9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgYWRkciwgdGFy Zyk7CisrICBDT1JFX0FERFIgcmVzb2x2ZWQ7CiArCi0rICAgICAgLyogQ2FzdCBGVU5BRERSIHRv IGRyb3AgVFlQRV9HTlVfSUZVTkMgYW5kIGJlaW5nIGFibGUgdG8gY2FsbCBnbnUtaWZ1bmMKLSsJ IEZVTkFERFIgd2l0aG91dCBjYXVzaW5nIGRlYWRsb2NrIGJ5IHRoaXMgYmxvY2sgb2YgY29kZS4g ICovCisrICByZXNvbHZlZCA9IGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX2FuZF9wdHIgKGdkYmFy Y2gsIGFkZHIsIHBjKTsKKysgIGlmIChyZXNvbHZlZCAhPSBwYykKKysgICAgcGMgPSBocHBhMzJf Y29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIHJlc29sdmVkLCB0YXJnKTsKICsK LSsgICAgICBmdW5jX2Z1bmNfcHRyID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9m dW5jX2Z1bmNfcHRyOwotKyAgICAgIGZ1bmN0aW9uID0gdmFsdWVfZnJvbV9wb2ludGVyIChmdW5j X2Z1bmNfcHRyLCBmdW5hZGRyKTsKKysgIHJldHVybiBwYzsKKyt9CisgCisgLyogRm9yd2FyZCBk ZWNsYXJhdGlvbnMuICAqLworIGV4dGVybiBpbml0aWFsaXplX2ZpbGVfZnR5cGUgX2luaXRpYWxp emVfaHBwYV9saW51eF90ZGVwOworQEAgLTU1NSw2ICs1NzAsMTAgQEAgaHBwYV9saW51eF9pbml0 X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbworICAgLyogRW5hYmxlIFRMUyBzdXBwb3J0LiAgKi8K KyAgIHNldF9nZGJhcmNoX2ZldGNoX3Rsc19sb2FkX21vZHVsZV9hZGRyZXNzIChnZGJhcmNoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2cjRfZmV0Y2hf b2JqZmlsZV9saW5rX21hcCk7CiArCi0rICAgICAgLyogZ251LWlmdW5jcyBoYXZlIG5vIGFyZ3Vt ZW50cy4gICovCi0rICAgICAgZnVuY3Rpb24gPSBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKGZ1bmN0 aW9uLCAwLCBOVUxMKTsKKysgIGlmICh0ZGVwLT5ieXRlc19wZXJfYWRkcmVzcyA9PSA0KQorKyAg ICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKKysJCQkJ ICAgICAgIGhwcGEzMl9saW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7CisgfQorIAor IHZvaWQKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9ocHBhLXRkZXAuYworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvaHBwYS10ZGVwLmMJMjAxMC0w MS0xOSAxMDozOToxMi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dk Yi9ocHBhLXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAorQEAgLTEy NDcsNyArMTI0Nyw3IEBAIGhwcGE2NF9yZXR1cm5fdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGIK KyB9CisgDAorIAorLXN0YXRpYyBDT1JFX0FERFIKKytDT1JFX0FERFIKKyBocHBhMzJfY29udmVy dF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIg YWRkciwKKyAJCQkJICAgc3RydWN0IHRhcmdldF9vcHMgKnRhcmcpCisgeworSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMjEvZ2RiL2hwcGEtdGRlcC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41 MC4yMDEwMDEyMS5vcmlnL2dkYi9ocHBhLXRkZXAuaAkyMDEwLTAxLTAxIDA4OjMxOjMzLjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2hwcGEtdGRlcC5oCTIwMTAt MDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitAQCAtMjQ2LDQgKzI0Niw4IEBAIGV4dGVy biBpbnQgaHBwYV9pbl9zb2xpYl9jYWxsX3RyYW1wb2xpbmUKKyAJCQkJCSAgQ09SRV9BRERSIHBj LCBjaGFyICpuYW1lKTsKKyBleHRlcm4gQ09SRV9BRERSIGhwcGFfc2tpcF90cmFtcG9saW5lX2Nv ZGUgKHN0cnVjdCBmcmFtZV9pbmZvICosIENPUkVfQUREUiBwYyk7CisgCisrZXh0ZXJuIENPUkVf QUREUiBocHBhMzJfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLAorKwkJCQkJCSAgICBDT1JFX0FERFIgYWRkciwKKysJCQkJCQkgICAgc3RydWN0IHRh cmdldF9vcHMgKnRhcmcpOwogKwotKyAgICAgIGZ1bmFkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChm dW5jdGlvbik7CisgI2VuZGlmICAvKiBocHBhLXRkZXAuaCAqLworSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMjEvZ2RiL2kzODYtbGludXgtdGRlcC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41 MC4yMDEwMDEyMS5vcmlnL2dkYi9pMzg2LWxpbnV4LXRkZXAuYwkyMDEwLTAxLTA0IDE1OjU3OjQz LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2kzODYtbGludXgt dGRlcC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitAQCAtNzk4LDYgKzc5 OCw5IEBAIGkzODZfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaTM4Nl9saW51eF9nZXRfc3lzY2FsbF9udW1iZXIp OworIAorICAgc2V0X2dkYmFyY2hfZ2V0X3NpZ2luZm9fdHlwZSAoZ2RiYXJjaCwgbGludXhfZ2V0 X3NpZ2luZm9fdHlwZSk7CiArCi0rICAgICAgLyogVGhpcyBpcyBgaW50JyBhcyB0aGUgcmV0dXJu IHR5cGUgb2YgdGhlIGZpbmFsIGZ1bmN0aW9uLiAgKi8KLSsgICAgICB2YWx1ZV90eXBlID0gVFlQ RV9UQVJHRVRfVFlQRSAodmFsdWVfdHlwZSk7Ci0rICAgIH0KKysgIHNldF9nZGJhcmNoX2NvbnZl cnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAorKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zy b21fZnVuY19wdHJfYWRkcik7CisgfQorIAorIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2ls ZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEy MS9nZGIvaWE2NC1saW51eC10ZGVwLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAw MTIxLm9yaWcvZ2RiL2lhNjQtbGludXgtdGRlcC5jCTIwMTAtMDEtMDEgMDg6MzE6MzYuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvaWE2NC1saW51eC10ZGVwLmMJ MjAxMC0wMS0yMSAxNToxNTo0MS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yNiw2ICsyNiw3IEBACisg I2luY2x1ZGUgIm9zYWJpLmgiCisgI2luY2x1ZGUgInNvbGliLXN2cjQuaCIKKyAjaW5jbHVkZSAi c3ltdGFiLmgiCisrI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAvKiBUaGUgc2lndHJhbXAg Y29kZSBpcyBpbiBhIG5vbi1yZWFkYWJsZSAoZXhlY3V0YWJsZS1vbmx5KSByZWdpb24KKyAgICBv ZiBtZW1vcnkgY2FsbGVkIHRoZSBgYGdhdGUgcGFnZScnLiAgVGhlIGFkZHJlc3NlcyBpbiBxdWVz dGlvbgorQEAgLTEzOSw2ICsxNDAsOSBAQCBpYTY0X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2Ri YXJjaF9pbmZvCisgICAvKiBFbmFibGUgVExTIHN1cHBvcnQuICAqLworICAgc2V0X2dkYmFyY2hf ZmV0Y2hfdGxzX2xvYWRfbW9kdWxlX2FkZHJlc3MgKGdkYmFyY2gsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZyNF9mZXRjaF9vYmpmaWxlX2xpbmtfbWFw KTsKICsKLSAgIGlmIChyZXR2YWxfdHlwZSAhPSBOVUxMKQotICAgICAqcmV0dmFsX3R5cGUgPSB2 YWx1ZV90eXBlOwotICAgcmV0dXJuIGZ1bmFkZHIgKyBnZGJhcmNoX2RlcHJlY2F0ZWRfZnVuY3Rp b25fc3RhcnRfb2Zmc2V0IChnZGJhcmNoKTsKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi9saW5lc3BlYy5jCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAo Z2RiYXJjaCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOworIH0K KyAKKyAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlw ZXMuICAqLworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2luZmNhbGwuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvbGluZXNwZWMuYwkyMDEwLTAx LTEyIDA2OjQ4OjU2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L2xpbmVzcGVjLmMJMjAxMC0wMS0xNSAxMjoxNjo0OS4wMDAwMDAwMDAgKzAxMDAKLUBAIC00MCw2 ICs0MCw3IEBACi0gI2luY2x1ZGUgImludGVycHMuaCIKLSAjaW5jbHVkZSAibWkvbWktY21kcy5o IgorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvaW5mY2FsbC5jCTIwMTAtMDEtMDEg MDg6MzE6MzYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvaW5m Y2FsbC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitAQCAtMjUyLDkgKzI1 MiwxNyBAQCBmaW5kX2Z1bmN0aW9uX2FkZHIgKHN0cnVjdCB2YWx1ZSAqZnVuY3RpCisgICAgICAg aWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9GVU5DCisgCSAgfHwgVFlQRV9DT0RF IChmdHlwZSkgPT0gVFlQRV9DT0RFX01FVEhPRCkKKyAJeworLQkgIGZ1bmFkZHIgPSBnZGJhcmNo X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBmdW5hZGRyLAorLQkJCQkJCQkm Y3VycmVudF90YXJnZXQpOworLQkgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChmdHlw ZSk7CisrCSAgQ09SRV9BRERSIGZ1bmFkZHIyOworKworKwkgIGZ1bmFkZHIyID0gZ2RiYXJjaF9j b252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgZnVuYWRkciwKKysJCQkJCQkJICZj dXJyZW50X3RhcmdldCk7CisrCisrCSAgLyogSWYgVFlQRV9HTlVfSUZVTkMgaXMgY3VycmVudGx5 IG5vdCByZXNvbHZhYmxlIGtlZXAgaXRzIHR5cGUuICAqLworKwkgIGlmIChmdW5hZGRyMiAhPSBm dW5hZGRyIHx8ICFUWVBFX0dOVV9JRlVOQyAoZnR5cGUpKQorKwkgICAgeworKwkgICAgICBmdW5h ZGRyID0gZnVuYWRkcjI7CisrCSAgICAgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChm dHlwZSk7CisrCSAgICB9CisgCX0KKyAgICAgfQorICAgZWxzZSBpZiAoY29kZSA9PSBUWVBFX0NP REVfSU5UKQorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2xpbnV4LXRkZXAuYworPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvbGludXgtdGRlcC5jCTIw MTAtMDEtMTQgMjI6MjA6MTEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEy MS9nZGIvbGludXgtdGRlcC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitA QCAtMjMsNiArMjMsOCBAQAorICNpbmNsdWRlICJhdXh2LmgiCiAgI2luY2x1ZGUgInRhcmdldC5o IgorICNpbmNsdWRlICJlbGYvY29tbW9uLmgiCisrI2luY2x1ZGUgInZhbHVlLmgiCiArI2luY2x1 ZGUgImluZmNhbGwuaCIKICAKLSAvKiBXZSBzaGFyZSB0aGlzIG9uZSB3aXRoIHN5bXRhYi5jLCBi dXQgaXQgaXMgbm90IGV4cG9ydGVkIHdpZGVseS4gKi8KKyAvKiBUaGlzIGZ1bmN0aW9uIGlzIHN1 aXRhYmxlIGZvciBhcmNoaXRlY3R1cmVzIHRoYXQgZG9uJ3QKKyAgICBleHRlbmQvb3ZlcnJpZGUg dGhlIHN0YW5kYXJkIHNpZ2luZm8gc3RydWN0dXJlLiAgKi8KK0BAIC0xNTIsMyArMTU0LDQzIEBA IGxpbnV4X2hhc19zaGFyZWRfYWRkcmVzc19zcGFjZSAodm9pZCkKICAKLUBAIC0xODY3LDYgKzE4 NjgsMjIgQEAgbWluc3ltX2ZvdW5kIChpbnQgZnVuZmlyc3RsaW5lLCBzdHJ1Y3QgbQotICAgcGMg PSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuc2Fsc1swXS5wYywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN1cnJlbnRfdGFyZ2V0 KTsKKyAgIHJldHVybiB0YXJnZXRfaXNfdWNsaW51eDsKKyB9CiArCi0rICAvKiBDYWxsIGdudS1p ZnVuYyB0byByZXNvbHZlIGJyZWFrcG9pbnQgYXQgaXRzIHJldHVybmVkIGZ1bmN0aW9uLiAgKi8K LSsgIGlmIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0X2dudV9pZnVuYykKLSsg ICAgewotKyAgICAgIHN0cnVjdCB0eXBlICpmdW5jX2Z1bmNfcHRyOwotKyAgICAgIHN0cnVjdCB2 YWx1ZSAqZnVuY3Rpb247CisrLyogQ2FsbCBnbnUtaWZ1bmMgdG8gcmVzb2x2ZSBicmVha3BvaW50 IGF0IGl0cyByZXR1cm5lZCBmdW5jdGlvbi4gICovCiArCi0rICAgICAgZnVuY19mdW5jX3B0ciA9 IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19mdW5jX3B0cjsKLSsgICAgICBm dW5jdGlvbiA9IHZhbHVlX2Zyb21fcG9pbnRlciAoZnVuY19mdW5jX3B0ciwgcGMpOworK0NPUkVf QUREUgorK2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX2FuZF9wdHIgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLCBDT1JFX0FERFIgZnVuY19wdHIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ09SRV9BRERSIHBjKQorK3sKKysgIHN0cnVjdCB0eXBlICpmdW5jX2Z1bmNfdHlwZSA9 IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19mdW5jOworKyAgc3RydWN0IG1p bmltYWxfc3ltYm9sICptc3ltYm9sOworKyAgc3RydWN0IHZhbHVlICpmdW5jdGlvbiwgKmFkZHJl c3M7CiArCi0rICAgICAgLyogZ251LWlmdW5jcyBoYXZlIG5vIGFyZ3VtZW50cy4gICovCi0rICAg ICAgZnVuY3Rpb24gPSBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKGZ1bmN0aW9uLCAwLCBOVUxMKTsK KysgIGlmICghdGFyZ2V0X2hhc19leGVjdXRpb24pCisrICAgIHJldHVybiBwYzsKICsKLSsgICAg ICBwYyA9IHZhbHVlX2FzX2FkZHJlc3MgKGZ1bmN0aW9uKTsKLSsgICAgfQorKyAgbXN5bWJvbCA9 IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZnVuY19wdHIpOworKyAgaWYgKG1zeW1ib2wg PT0gTlVMTCkKKysgICAgcmV0dXJuIHBjOworKyAgaWYgKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkg IT0gbXN0X3RleHRfZ251X2lmdW5jKQorKyAgICByZXR1cm4gcGM7CisrCisrICAvKiBOb3QgYXQg dGhlIGdudS1pZnVuYyBlbnRyeSBwb2ludD8gICovCisrICBpZiAoU1lNQk9MX1ZBTFVFX0FERFJF U1MgKG1zeW1ib2wpICE9IGZ1bmNfcHRyKQorKyAgICByZXR1cm4gcGM7CisrCisrICBmdW5jdGlv biA9IGFsbG9jYXRlX3ZhbHVlIChmdW5jX2Z1bmNfdHlwZSk7CisrICBzZXRfdmFsdWVfYWRkcmVz cyAoZnVuY3Rpb24sIHBjKTsKKysKKysgIC8qIGdudS1pZnVuY3MgaGF2ZSBubyBhcmd1bWVudHMu ICBGVU5DVElPTiBpcyB0aGUgY29kZSBpbnN0cnVjdGlvbiBhZGRyZXNzCisrICAgICB3aGlsZSBB RERSRVNTIGlzIGEgZnVuY3Rpb24gZGVzY3JpcHRvci4gICovCisrICBhZGRyZXNzID0gY2FsbF9m dW5jdGlvbl9ieV9oYW5kIChmdW5jdGlvbiwgMCwgTlVMTCk7CisrCisrICByZXR1cm4gdmFsdWVf YXNfYWRkcmVzcyAoYWRkcmVzcyk7CisrfQorKworK0NPUkVfQUREUgorK2xpbnV4X2NvbnZlcnRf ZnJvbV9mdW5jX3B0cl9hZGRyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFk ZHIsCisrCQkJCSAgc3RydWN0IHRhcmdldF9vcHMgKnRhcmcpCisreworKyAgcmV0dXJuIGxpbnV4 X2NvbnZlcnRfZnJvbV9mdW5jX2FuZF9wdHIgKGdkYmFyY2gsIGFkZHIsIGFkZHIpOworK30KK0lu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9saW51eC10ZGVwLmgKKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t LSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL2xpbnV4LXRkZXAuaAkyMDEwLTAxLTAxIDA4 OjMxOjM3LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2xpbnV4 LXRkZXAuaAkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAorQEAgLTIyLDQgKzIy LDExIEBACisgCisgc3RydWN0IHR5cGUgKmxpbnV4X2dldF9zaWdpbmZvX3R5cGUgKHN0cnVjdCBn ZGJhcmNoICopOworIAorK0NPUkVfQUREUiBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19hbmRfcHRy IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkJCSAgIENPUkVfQUREUiBmdW5jX3B0ciwg Q09SRV9BRERSIHBjKTsKKysKKytDT1JFX0FERFIgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRy X2FkZHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKwkJCQkJICAgIENPUkVfQUREUiBhZGRy LAorKwkJCQkJICAgIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnKTsKKysKKyAjZW5kaWYgLyogbGlu dXgtdGRlcC5oICovCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvbTMyci1saW51eC10 ZGVwLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL20zMnIt bGludXgtdGRlcC5jCTIwMTAtMDEtMDEgMDg6MzE6MzcuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMC41MC4yMDEwMDEyMS9nZGIvbTMyci1saW51eC10ZGVwLmMJMjAxMC0wMS0yMSAxNToxNTo0 MS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zMCw2ICszMCw3IEBACisgI2luY2x1ZGUgImdkYl9zdHJp bmcuaCIKKyAKKyAjaW5jbHVkZSAiZ2xpYmMtdGRlcC5oIgorKyNpbmNsdWRlICJsaW51eC10ZGVw LmgiCisgI2luY2x1ZGUgInNvbGliLXN2cjQuaCIKKyAjaW5jbHVkZSAic3ltdGFiLmgiCisgCitA QCAtNDIyLDYgKzQyMyw5IEBAIG0zMnJfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2lu Zm8KKyAgIC8qIEVuYWJsZSBUTFMgc3VwcG9ydC4gICovCisgICBzZXRfZ2RiYXJjaF9mZXRjaF90 bHNfbG9hZF9tb2R1bGVfYWRkcmVzcyAoZ2RiYXJjaCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdnI0X2ZldGNoX29iamZpbGVfbGlua19tYXApOwogKwot ICAgaWYgKHBjICE9IHZhbHVlcy5zYWxzWzBdLnBjKQotICAgICB2YWx1ZXMuc2Fsc1swXSA9IGZp bmRfcGNfc2VjdF9saW5lIChwYywgTlVMTCwgMCk7CisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zy b21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1 bmNfcHRyX2FkZHIpOworIH0KICAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9taW5z eW1zLmMKKyAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3Rv dHlwZXMuICAqLworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL21pY3JvYmxhemUtbGlu dXgtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9t aW5zeW1zLmMJMjAxMC0wMS0xNSAwMzoyMjozMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9taW5zeW1zLmMJMjAxMC0wMS0xNSAxMjoxNjo0OS4wMDAwMDAwMDAg KzAxMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL21pY3JvYmxhemUtbGludXgt dGRlcC5jCTIwMTAtMDEtMDEgMDg6MzE6MzcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41 MC4yMDEwMDEyMS9nZGIvbWljcm9ibGF6ZS1saW51eC10ZGVwLmMJMjAxMC0wMS0yMSAxNToxNTo0 MS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zNSw2ICszNSw3IEBACisgI2luY2x1ZGUgInRyYWQtZnJh bWUuaCIKKyAjaW5jbHVkZSAiZnJhbWUtdW53aW5kLmgiCisgI2luY2x1ZGUgInRyYW1wLWZyYW1l LmgiCisrI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAKKyBzdGF0aWMgaW50CitAQCAtMTMz LDYgKzEzNCw5IEBAIG1pY3JvYmxhemVfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmMKKyAg IC8qIFRyYW1wb2xpbmVzLiAgKi8KKyAgIHRyYW1wX2ZyYW1lX3ByZXBlbmRfdW53aW5kZXIgKGdk YmFyY2gsCisgCQkJCSZtaWNyb2JsYXplX2xpbnV4X3NpZ2hhbmRsZXJfdHJhbXBfZnJhbWUpOwor KworKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCisr CQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKKyB9CisgCisgdm9pZAor SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL21pbnN5bXMuYworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvbWluc3ltcy5jCTIwMTAtMDEtMjEgMTU6MTM6 MjYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvbWluc3ltcy5j CTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCiBAQCAtMzMxLDggKzMzMSw5IEBA IGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0IChjb25zdCBjaGFyICoKICAJICAgICAgIG1zeW1i b2wgPSBtc3ltYm9sLT5oYXNoX25leHQpCiAgCSAgICB7CkBAIC0yNjIsMTAgKzUzOSw5MyBAQCBJ bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbWluc3ltcy5jCiAgCSAgICAmJiBzdHJjbXAg KFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpLAogIAkJICAgICAgIFNZTUJPTF9MSU5LQUdF X05BTUUgKHRzeW1ib2wpKSA9PSAwKQogIAkgIHJldHVybiBTWU1CT0xfVkFMVUVfQUREUkVTUyAo bXN5bWJvbCk7Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvcGFyc2UuYworSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL21pcHMtbGludXgtdGRlcC5jCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9taXBzLWxpbnV4LXRkZXAuYwkyMDEwLTAx LTAxIDA4OjMxOjM3LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2Ri L21pcHMtbGludXgtdGRlcC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitA QCAtMzgsNiArMzgsNyBAQAorICNpbmNsdWRlICJ0YXJnZXQtZGVzY3JpcHRpb25zLmgiCisgI2lu Y2x1ZGUgIm1pcHMtbGludXgtdGRlcC5oIgorICNpbmNsdWRlICJnbGliYy10ZGVwLmgiCisrI2lu Y2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyBzdGF0aWMgc3RydWN0IHRhcmdldF9zb19vcHMgbWlw c19zdnI0X3NvX29wczsKKyAKK0BAIC0xMjI1LDYgKzEyMjYsOSBAQCBtaXBzX2xpbnV4X2luaXRf YWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvCisgCXRkZXNjX251bWJlcmVkX3JlZ2lzdGVyIChmZWF0 dXJlLCB0ZGVzY19kYXRhLCBNSVBTX1JFU1RBUlRfUkVHTlVNLAorIAkJCQkgInJlc3RhcnQiKTsK KyAgICAgfQorKworKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdk YmFyY2gsCisrCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKKyB9Cisg CisgLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5cGVz LiAgKi8KK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9tbjEwMzAwLWxpbnV4LXRkZXAu YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvbW4xMDMwMC1s aW51eC10ZGVwLmMJMjAxMC0wMS0wMSAwODozMTozNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny4wLjUwLjIwMTAwMTIxL2dkYi9tbjEwMzAwLWxpbnV4LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1 OjQxLjAwMDAwMDAwMCArMDEwMAorQEAgLTMyLDYgKzMyLDcgQEAKKyAjaW5jbHVkZSAiZnJhbWUu aCIKKyAjaW5jbHVkZSAidHJhZC1mcmFtZS5oIgorICNpbmNsdWRlICJ0cmFtcC1mcmFtZS5oIgor KyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCisgCisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorIAorQEAg LTcxOCw2ICs3MTksOSBAQCBhbTMzX2xpbnV4X2luaXRfb3NhYmkgKHN0cnVjdCBnZGJhcmNoX2lu CisgCisgICB0cmFtcF9mcmFtZV9wcmVwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmYW0zM19saW51 eF9zaWdmcmFtZSk7CisgICB0cmFtcF9mcmFtZV9wcmVwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAm YW0zM19saW51eF9ydF9zaWdmcmFtZSk7CisrCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21f ZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNf cHRyX2FkZHIpOworIH0KKyAKKyAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdt aXNzaW5nLXByb3RvdHlwZXMuICAqLworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL29i amMtbGFuZy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9v YmpjLWxhbmcuYwkyMDEwLTAxLTE0IDA5OjAzOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjAuNTAuMjAxMDAxMjEvZ2RiL29iamMtbGFuZy5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAw MDAwICswMTAwCitAQCAtMTE3OCwxNiArMTE3OCw2IEBAIGZpbmRfbWV0aG9kcyAoc3RydWN0IHN5 bXRhYiAqc3ltdGFiLCBjaGEKKyAKKyAJICBRVUlUOworIAorLQkgIC8qIFRoZSBtaW5pbWFsIHN5 bWJvbCBtaWdodCBwb2ludCB0byBhIGZ1bmN0aW9uIGRlc2NyaXB0b3I7CistCSAgICAgcmVzb2x2 ZSBpdCB0byB0aGUgYWN0dWFsIGNvZGUgYWRkcmVzcyBpbnN0ZWFkLiAgKi8KKy0JICBwYyA9IGdk YmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIHBjLAorLQkJCQkJCSAg ICZjdXJyZW50X3RhcmdldCk7CistCistCSAgaWYgKHN5bXRhYikKKy0JICAgIGlmIChwYyA8IEJM T0NLX1NUQVJUIChibG9jaykgfHwgcGMgPj0gQkxPQ0tfRU5EIChibG9jaykpCistCSAgICAgIC8q IE5vdCBpbiB0aGUgc3BlY2lmaWVkIHN5bXRhYi4gICovCistCSAgICAgIGNvbnRpbnVlOworLQor IAkgIHN5bW5hbWUgPSBTWU1CT0xfTkFUVVJBTF9OQU1FIChtc3ltYm9sKTsKKyAJICBpZiAoc3lt bmFtZSA9PSBOVUxMKQorIAkgICAgY29udGludWU7CitAQCAtMTIyMyw2ICsxMjEzLDE3IEBAIGZp bmRfbWV0aG9kcyAoc3RydWN0IHN5bXRhYiAqc3ltdGFiLCBjaGEKKyAJICAgICAgKChuc2VsZWN0 b3IgPT0gTlVMTCkgfHwgKHN0cmNtcCAoc2VsZWN0b3IsIG5zZWxlY3RvcikgIT0gMCkpKQorIAkg ICAgY29udGludWU7CisgCisrCSAgLyogVGhlIG1pbmltYWwgc3ltYm9sIG1pZ2h0IHBvaW50IHRv IGEgZnVuY3Rpb24gZGVzY3JpcHRvcjsKKysJICAgICByZXNvbHZlIGl0IHRvIHRoZSBhY3R1YWwg Y29kZSBhZGRyZXNzIGluc3RlYWQuICBEZWxheSB0aGUgY2FsbCBhcworKwkgICAgIGl0cyByZXNv bHV0aW9uIG1heSBiZSBleHBlbnNpdmUuICAqLworKwkgIHBjID0gZ2RiYXJjaF9jb252ZXJ0X2Zy b21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgcGMsCisrCQkJCQkJICAgJmN1cnJlbnRfdGFyZ2V0 KTsKKysKKysJICBpZiAoc3ltdGFiKQorKwkgICAgaWYgKHBjIDwgQkxPQ0tfU1RBUlQgKGJsb2Nr KSB8fCBwYyA+PSBCTE9DS19FTkQgKGJsb2NrKSkKKysJICAgICAgLyogTm90IGluIHRoZSBzcGVj aWZpZWQgc3ltdGFiLiAgKi8KKysJICAgICAgY29udGludWU7CisrCisgCSAgc3ltID0gZmluZF9w Y19mdW5jdGlvbiAocGMpOworIAkgIGlmIChzeW0gIT0gTlVMTCkKKyAJICAgIHsKK0luZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9wYXJzZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41 MC4yMDEwMDExNS5vcmlnL2dkYi9wYXJzZS5jCTIwMTAtMDEtMTUgMDM6MjI6MzEuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvcGFyc2UuYwkyMDEwLTAxLTE1IDEy OjE2OjQ5LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIv cGFyc2UuYwkyMDEwLTAxLTIxIDE1OjEzOjI2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAu NTAuMjAxMDAxMjEvZ2RiL3BhcnNlLmMJMjAxMC0wMS0yMSAxNToxNjoxNS4wMDAwMDAwMDAgKzAx MDAKIEBAIC01MTYsNiArNTE2LDExIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChzdHJ1Y3QgbWluaW1h bF9zeW1ib2wKICAJd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5u b2RlYnVnX3RleHRfc3ltYm9sKTsKICAgICAgICBicmVhazsKQEAgLTI3OCwxMCArNjM4LDY2IEBA IEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9wYXJzZS5jCiAgICAgIGNhc2UgbXN0X2Rh dGE6CiAgICAgIGNhc2UgbXN0X2ZpbGVfZGF0YToKICAgICAgY2FzZSBtc3RfYnNzOgotSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMjEvZ2RiL3BwYy1saW51eC10ZGVwLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUw LjIwMTAwMTIxLm9yaWcvZ2RiL3BwYy1saW51eC10ZGVwLmMJMjAxMC0wMS0wNCAxNTo1Nzo0NC4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9wcGMtbGludXgtdGRl cC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCitAQCAtNDgsNiArNDgsNyBA QAorICNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCisgI2luY2x1ZGUgInNwdS10ZGVwLmgiCisgI2lu Y2x1ZGUgInhtbC1zeXNjYWxsLmgiCisrI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAjaW5j bHVkZSAiZmVhdHVyZXMvcnM2MDAwL3Bvd2VycGMtMzJsLmMiCisgI2luY2x1ZGUgImZlYXR1cmVz L3JzNjAwMC9wb3dlcnBjLWFsdGl2ZWMzMmwuYyIKK0BAIC02NzIsOCArNjczLDE5IEBAIHBwYzY0 X2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyICgKKyAgICAgICByZXMgPSBiZmRfZ2V0 X3NlY3Rpb25fY29udGVudHMgKHMtPmJmZCwgcy0+dGhlX2JmZF9zZWN0aW9uLAorIAkJCQkgICAg ICAmYnVmLCBhZGRyIC0gcy0+YWRkciwgOCk7CisgICAgICAgaWYgKHJlcyAhPSAwKQorLQlyZXR1 cm4gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChidWYsIDgsIGJ5dGVfb3JkZXIpCistCQktIGJm ZF9zZWN0aW9uX3ZtYSAocy0+YmZkLCBzLT50aGVfYmZkX3NlY3Rpb24pICsgcy0+YWRkcjsKKysJ eworKwkgIENPUkVfQUREUiBwYywgcmVzb2x2ZWQ7CisrCSAgCisrCSAgcGMgPSBleHRyYWN0X3Vu c2lnbmVkX2ludGVnZXIgKGJ1ZiwgOCwgYnl0ZV9vcmRlcikKKysJICAgICAgIC0gYmZkX3NlY3Rp b25fdm1hIChzLT5iZmQsIHMtPnRoZV9iZmRfc2VjdGlvbikgKyBzLT5hZGRyOworKworKwkgIHJl c29sdmVkID0gbGludXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0ciAoZ2RiYXJjaCwgYWRkciwg cGMpOworKwkgIGlmIChyZXNvbHZlZCAhPSBwYykKKysJICAgIHBjID0gcHBjNjRfbGludXhfY29u dmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIHJlc29sdmVkLAorKwkJCQkJCQkgdGFy Zyk7CisrCisrCSAgcmV0dXJuIHBjOworKwl9CisgICAgfQorIAorICAgcmV0dXJuIGFkZHI7CitJ bmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvc2gtbGludXgtdGRlcC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAxMC0wMS0x NSAxMjoxNjo0MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9z b2xpYi1zdnI0LmMJMjAxMC0wMS0xNSAxMjoxNzo0MC4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGIt Ny4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL3NoLWxpbnV4LXRkZXAuYwkyMDEwLTAxLTAxIDA4OjMx OjQxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3NoLWxpbnV4 LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAorQEAgLTI1LDYgKzI1 LDcgQEAKKyAKKyAjaW5jbHVkZSAiZ2xpYmMtdGRlcC5oIgorICNpbmNsdWRlICJzaC10ZGVwLmgi CisrI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAjZGVmaW5lIFJFR1N4MTYoYmFzZSkgXAor ICAgeyhiYXNlKSwgICAgICAwfSwgXAorQEAgLTg5LDYgKzkwLDkgQEAgc2hfbGludXhfaW5pdF9h YmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaQorICAgICAgIHRkZXAtPmNvcmVfZ3JlZ21hcCA9IChz dHJ1Y3Qgc2hfY29yZWZpbGVfcmVnbWFwICopZ3JlZ3NfdGFibGU7CisgICAgICAgdGRlcC0+Y29y ZV9mcHJlZ21hcCA9IChzdHJ1Y3Qgc2hfY29yZWZpbGVfcmVnbWFwICopZnByZWdzX3RhYmxlOwor ICAgICB9CisrCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2Ri YXJjaCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOworIH0KKyAK KyAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMu ICAqLworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3NvbGliLXN2cjQuYworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTAt MDEtMjEgMTU6MTU6MjIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9n ZGIvc29saWItc3ZyNC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCiBAQCAt MTI1Nyw3ICsxMjU3LDggQEAgc3ZyNF9pbl9keW5zeW1fcmVzb2x2ZV9jb2RlIChDT1JFX0FERFIg cAogIAkgICAmJiBwYyA8IGluZm8tPmludGVycF90ZXh0X3NlY3RfaGlnaCkKICAJICB8fCAocGMg Pj0gaW5mby0+aW50ZXJwX3BsdF9zZWN0X2xvdwpAQCAtMjkyLDEwICs3MDgsNTQgQEAgSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3NvbGliLXN2cjQuYwogIH0KICAKICAvKiBHaXZlbiBh biBleGVjdXRhYmxlJ3MgQUJGRCBhbmQgdGFyZ2V0LCBjb21wdXRlIHRoZSBlbnRyeS1wb2ludAot SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bW1pc2MuYworSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMjEvZ2RiL3NwYXJjLWxpbnV4LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvc3ltbWlzYy5jCTIwMTAtMDEtMTUgMDM6MjI6MzIuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltbWlzYy5jCTIwMTAt MDEtMTUgMTI6MTY6NDkuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5v cmlnL2dkYi9zcGFyYy1saW51eC10ZGVwLmMJMjAxMC0wMS0wMSAwODozMTo0Mi4wMDAwMDAwMDAg KzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9zcGFyYy1saW51eC10ZGVwLmMJMjAx MC0wMS0yMSAxNToxNTo0MS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zMiw2ICszMiw3IEBACisgI2lu Y2x1ZGUgInN5bXRhYi5oIgorICNpbmNsdWRlICJ0cmFkLWZyYW1lLmgiCisgI2luY2x1ZGUgInRy YW1wLWZyYW1lLmgiCisrI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAjaW5jbHVkZSAic3Bh cmMtdGRlcC5oIgorIAorQEAgLTI3OSw2ICsyODAsOSBAQCBzcGFyYzMyX2xpbnV4X2luaXRfYWJp IChzdHJ1Y3QgZ2RiYXJjaF9pCisgICBkd2FyZjJfYXBwZW5kX3Vud2luZGVycyAoZ2RiYXJjaCk7 CisgCisgICBzZXRfZ2RiYXJjaF93cml0ZV9wYyAoZ2RiYXJjaCwgc3BhcmNfbGludXhfd3JpdGVf cGMpOworKworKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFy Y2gsCisrCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKKyB9CisgCisg LyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5cGVzLiAg Ki8KK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9zcGFyYzY0LWxpbnV4LXRkZXAuYwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvc3BhcmM2NC1saW51 eC10ZGVwLmMJMjAxMC0wMS0wMSAwODozMTo0Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4w LjUwLjIwMTAwMTIxL2dkYi9zcGFyYzY0LWxpbnV4LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQx LjAwMDAwMDAwMCArMDEwMAorQEAgLTMxLDYgKzMxLDcgQEAKKyAjaW5jbHVkZSAic3ltdGFiLmgi CisgI2luY2x1ZGUgInRyYWQtZnJhbWUuaCIKKyAjaW5jbHVkZSAidHJhbXAtZnJhbWUuaCIKKysj aW5jbHVkZSAibGludXgtdGRlcC5oIgorIAorICNpbmNsdWRlICJzcGFyYzY0LXRkZXAuaCIKKyAK K0BAIC0yNDQsNiArMjQ1LDkgQEAgc3BhcmM2NF9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFy Y2hfaQorICAgdGRlcC0+c3RlcF90cmFwID0gc3BhcmM2NF9saW51eF9zdGVwX3RyYXA7CisgCisg ICBzZXRfZ2RiYXJjaF93cml0ZV9wYyAoZ2RiYXJjaCwgc3BhcmM2NF9saW51eF93cml0ZV9wYyk7 CisrCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwK KysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOworIH0KKyAMCisgCitJ bmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvc3ltbWlzYy5jCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9zeW1taXNjLmMJMjAxMC0wMS0yMSAxNToxMzoy Ny4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9zeW1taXNjLmMJ MjAxMC0wMS0yMSAxNToxNTo0MS4wMDAwMDAwMDAgKzAxMDAKIEBAIC0yOTQsNiArMjk0LDkgQEAg ZHVtcF9tc3ltYm9scyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIAogIAljYXNlIG1zdF90ZXh0 OgogIAkgIG1zX3R5cGUgPSAnVCc7CkBAIC0zMDYsMTEgKzc2NiwxMSBAQCBJbmRleDogZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvc3ltbWlzYy5jCiAgCWNhc2UgbXN0X3NvbGliX3RyYW1wb2xpbmU6 CiAgCSAgbXNfdHlwZSA9ICdTJzsKICAJICBicmVhazsKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9zeW10YWIuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3N5bXRhYi5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9zeW10YWIuYwky MDEwLTAxLTE1IDAzOjIyOjMxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL3N5bXRhYi5jCTIwMTAtMDEtMTUgMTI6MTY6NDkuMDAwMDAwMDAwICswMTAwCi1AQCAt MzI1Nyw3ICszMjU3LDcgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9tYWluX2Vu dQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvc3ltdGFiLmMJMjAxMC0wMS0yMSAx NToxMzoyNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9zeW10 YWIuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAorQEAgLTMyNDQsNyArMzI0 NCw3IEBAIHNlYXJjaF9zeW1ib2xzIChjaGFyICpyZWdleHAsIGRvbWFpbl9lbnUKICAgIHttc3Rf ZmlsZV9kYXRhLCBtc3Rfc29saWJfdHJhbXBvbGluZSwgbXN0X2FicywgbXN0X3Vua25vd259Owog ICAgc3RhdGljIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSB0eXBlczRbXQogICAgPQpAQCAtMzE5 LDEwICs3NzksMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bXRhYi5jCiAg ICBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgb3VydHlwZTsKICAgIGVudW0gbWluaW1hbF9zeW1i b2xfdHlwZSBvdXJ0eXBlMjsKICAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBvdXJ0eXBlMzsK LUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zeW10YWIuaAorSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMjEvZ2RiL3N5bXRhYi5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEw MDExNS5vcmlnL2dkYi9zeW10YWIuaAkyMDEwLTAxLTE1IDAzOjIyOjEzLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bXRhYi5oCTIwMTAtMDEtMTUgMTI6MTY6 NDkuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9zeW10 YWIuaAkyMDEwLTAxLTIxIDE1OjExOjA5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAu MjAxMDAxMjEvZ2RiL3N5bXRhYi5oCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAw CiBAQCAtMjgwLDYgKzI4MCw4IEBAIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZQogIHsKICAgIG1z dF91bmtub3duID0gMCwJCS8qIFVua25vd24gdHlwZSwgdGhlIGRlZmF1bHQgKi8KQEAgLTMzMiw3 ICs3OTIsNyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltdGFiLmgKICAgIG1z dF9kYXRhLAkJCS8qIEdlbmVyYWxseSBpbml0aWFsaXplZCBkYXRhICovCiAgICBtc3RfYnNzLAkJ CS8qIEdlbmVyYWxseSB1bmluaXRpYWxpemVkIGRhdGEgKi8KICAgIG1zdF9hYnMsCQkJLyogR2Vu ZXJhbGx5IGFic29sdXRlIChub25yZWxvY2F0YWJsZSkgKi8KLUBAIC0xMTYzLDYgKzExNjUsOCBA QCBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sICpsb29rdXBfbWluCitAQCAtMTE1Nyw2ICsx MTU5LDggQEAgZXh0ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9va3VwX21pbgogIAogIGV4 dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAo Q09SRV9BRERSKTsKICAKQEAgLTM0MSwxMSArODAxLDExIEBAIEluZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9zeW10YWIuaAogIGV4dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wKICAgICps b29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGNfc2VjdGlvbiAoQ09SRV9BRERSLCBzdHJ1Y3Qgb2Jq X3NlY3Rpb24gKik7CiAgCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2dudS1pZnVuYy1saWIuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtbGliLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLWxpYi5jCTIwMTAtMDEt MTUgMTI6MTY6NDkuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDQ1IEBACisrKysgZ2RiLTcu MC41MC4yMDEwMDEyMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy1saWIuYwkyMDEw LTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSw1NCBAQAogKy8qIFRo aXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCiArICAgQ29w eXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0zNjgsNiArODI4 LDEyIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv Z251LWlmdW5jLWxpYi5jCiArdHlwZWRlZiBpbnQgKCpmaW5hbF90KSAoaW50IGFyZyk7CiArCiAr c3RhdGljIGludAorK2luaXRfc3R1YiAoaW50IGFyZykKKyt7CisrICByZXR1cm4gMDsKKyt9Cisr Cisrc3RhdGljIGludAogK2ZpbmFsIChpbnQgYXJnKQogK3sKICsgIHJldHVybiBhcmcgKyAxOwpA QCAtMzc5LDYgKzg0NSw4IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZ251LWlmdW5jLWxpYi5jCiArZ251X2lmdW5jX3ByZSAodm9pZCkKICt7CiAr ICBhc3NlcnQgKCFnbnVfaWZ1bmNfaW5pdGlhbGl6ZWQpOworKworKyAgZ251X2lmdW5jX2luaXRp YWxpemVkID0gMTsKICt9CiArCiArZmluYWxfdCBnbnVfaWZ1bmNYICh2b2lkKSBhc20gKCJnbnVf aWZ1bmMiKTsKQEAgLTM4NywxNCArODU1LDE1IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLWxpYi5jCiArZmluYWxfdAogK2dudV9p ZnVuY1ggKHZvaWQpCiArewotKyAgZ251X2lmdW5jX2luaXRpYWxpemVkID0gMTsKLSsKLSsgIHJl dHVybiBmaW5hbDsKKysgIGlmICghZ251X2lmdW5jX2luaXRpYWxpemVkKQorKyAgICByZXR1cm4g aW5pdF9zdHViOworKyAgZWxzZQorKyAgICByZXR1cm4gZmluYWw7CiArfQotSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuYworSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUt aWZ1bmMuYwkyMDEwLTAxLTE1IDEyOjE2OjQ5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAu NTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuYwkyMDEwLTAxLTIx IDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSwzNiBAQAogKy8qIFRoaXMgdGVz dGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCkBAIC00MzIsMTEgKzkw MSwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2dudS1pZnVuYy5jCiArCiArICByZXR1cm4gMDsJLyogYnJlYWstYXQtZXhpdCAqLwogK30KLUlu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5j LmV4cAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9n bnUtaWZ1bmMuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6 MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2dudS1pZnVuYy5leHAJMjAxMC0wMS0xNSAxMjoxNjo0OS4wMDAwMDAwMDAgKzAx MDAKLUBAIC0wLDAgKzEsNzIgQEAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cAkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCAr MDEwMAorQEAgLTAsMCArMSwxMTUgQEAKICsjIENvcHlyaWdodCAoQykgMjAwOSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC00NjQsNyArOTMzLDE0 IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251 LWlmdW5jLmV4cAogK3NldCBsaWJzcmMgJHtsaWJmaWxlfS5jCiArc2V0IGxpYl9zbyAke29iamRp cn0vJHtzdWJkaXJ9LyR7bGliZmlsZX0uc28KICsKKytzZXQgbGliX25vZGVidWdfc29fYmFzZSAk e2xpYmZpbGV9LW5vZGVidWcuc28KKytzZXQgbGliX25vZGVidWdfc28gJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke2xpYl9ub2RlYnVnX3NvX2Jhc2V9CisrCisrIyB7ZGVidWd9IHByb3ZpZGVzIERXQVJG IHN5bWJvbCBnbnVfaWZ1bmNYIGNvbmZ1c2luZyB0aGUgRUxGIHN5bWJvbAorKyMgZ251X2lmdW5j IGR1cmluZyBhZGRyZXNzLT5zeW1ib2wgcmVzb2x1dGlvbiBmb3IgcHJpbnRpbmcgdGhlIHN5bWJv bC4KKysjIFN0aWxsIHdlIG5lZWQgaXQgaGVyZSBmb3IgInN0ZXAicGluZyBpbnRvIHRoZSBmdW5j dGlvbi4KICtzZXQgbGliX29wdHMgW2xpc3QgZGVidWddCisrc2V0IGxpYl9ub2RlYnVnX29wdHMg W2xpc3RdCiArc2V0IGV4ZWNfb3B0cyBbbGlzdCBkZWJ1ZyBzaGxpYj0kbGliX3NvXQogKwogK2lm IFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGV9XSB7CkBAIC00ODcsNyArOTYzLDggQEAgSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMu ZXhwCiArICAgIHJldHVybiAxOwogK30KICsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAiYnJlYWstYXQtbmV4dGNhbGwiXQorKyMgVGhlICJpZiIgY29uZGl0aW9uIGlzIGFy dGlmaWNhbCB0byB0ZXN0IHJlZ3Jlc3Npb24gb2YgYSBmb3JtYXQgcGF0Y2guCisrZ2RiX2JyZWFr cG9pbnQgIltnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1hdC1uZXh0Y2FsbCJdIGlmIGkgJiYg Z251X2lmdW5jIChpKSAhPSA0MiIKICsKICtnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAiYnJlYWstYXQtY2FsbCJdCiArZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFr LWF0LWNhbGwiICIuKmJyZWFrLWF0LWNhbGwuKiIKQEAgLTUwMiwxMCArOTc5LDY3IEBAIEluZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4 cAogKwogKyMgVGVzdCBHREIgd2lsbCBub3QgYnJlYWsgYmVmb3JlIHRoZSBmaW5hbCBjaG9zZW4g aW1wbGVtZW50YXRpb24uCiArCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWF0 LW5leHRjYWxsIiAiLipicmVhay1hdC1uZXh0Y2FsbC4qIgorKyMgQWxzbyB0ZXN0IGEgZm9ybWF0 IHBhdGNoIHJlZ3Jlc3Npb246CisrIyBDb250aW51aW5nLgorKyMgRXJyb3IgaW4gdGVzdGluZyBi cmVha3BvaW50IGNvbmRpdGlvbjoKKysjIEF0dGVtcHQgdG8gdGFrZSBhZGRyZXNzIG9mIHZhbHVl IG5vdCBsb2NhdGVkIGluIG1lbW9yeS4KKysjIAorKyMgQnJlYWtwb2ludCAyLCBtYWluICgpIGF0 IC4vZ2RiLmJhc2UvZ251LWlmdW5jLmM6MzMKKysKKytnZGJfdGVzdCAiY29udGludWUiICJDb250 aW51aW5nLlxyXG5cclxuQnJlYWtwb2ludCAuKiAoYXR8aW4pIC4qYnJlYWstYXQtbmV4dGNhbGwu KiIgXAorKwkgImNvbnRpbnVlIHRvIGJyZWFrLWF0LW5leHRjYWxsIgogKwogK2dkYl9icmVha3Bv aW50ICJnbnVfaWZ1bmMiCiArCiArZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5leHRjYWxs IGdudV9pZnVuYyIKICsKLStnZGJfdGVzdCAiZnJhbWUiICIjMCArZmluYWwgXFwoLioiICJuZXh0 Y2FsbCBnbnVfaWZ1bmMgc2tpcHBlZCIKKytnZGJfdGVzdCAiZnJhbWUiICIjMCArKDB4XFswLTlh LWZcXSsgaW4gKyk/ZmluYWwgXFwoLioiICJuZXh0Y2FsbCBnbnVfaWZ1bmMgc2tpcHBlZCIKKysK KysKKysjIENvbXBhcmUgdGhlIHR3byBkaWZmZXJlbnQgYWRkcmVzc2VzOgorKworK2dkYl90ZXN0 ICJwIGdudV9pZnVuYyIgIiA9IHs8dGV4dCB2YXJpYWJsZSwgbm8gZGVidWcgaW5mbz59IDB4XFsw LTlhLWZcXSsgPGZpbmFsPiIgInAgZ251X2lmdW5jIGV4ZWN1dGluZyIKKytnZGJfdGVzdCAiaW5m byBzeW0gZ251X2lmdW5jIiAiZmluYWwgaW4gc2VjdGlvbiAuKiIgImluZm8gc3ltIGdudV9pZnVu YyBleGVjdXRpbmciCisrCisrc2V0IHRlc3QgImluZm8gYWRkciBnbnVfaWZ1bmMiCisrZ2RiX3Rl c3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKyAgICAtcmUgIlN5bWJvbCBcImdudV9pZnVuY1wi IGlzIGF0ICgweFxbMC05YS1mXF0rKSBpbiAuKiRnZGJfcHJvbXB0ICQiIHsKKysJcGFzcyAkdGVz dAorKyAgICB9CisrfQorK2dkYl90ZXN0ICJpbmZvIHN5bSAkZXhwZWN0X291dCgxLHN0cmluZyki ICJnbnVfaWZ1bmMgaW4gc2VjdGlvbiAuKiIgImluZm8gc3ltIDxnbnVfaWZ1bmMtYWRkcmVzcz4i CisrCisrIyA8KmdudV9pZnVuYz4gd291bGQgYmUgYW4gaW5jb3JyZWN0IHJlc29sdXRpb24gZnJv bSBEV19BVF9NSVBTX2xpbmthZ2VfbmFtZS4KKysjIFdlIGRvIG5vdCB1c2Uge2RlYnVnfSBidWls ZCBvcHRpb24gZm9yIHRoaXMgcHVycG9zZS4KKysKKytpZiB7IFtnZGJfY29tcGlsZV9zaGxpYiAk e3NyY2Rpcn0vJHtzdWJkaXJ9LyRsaWJzcmMgJGxpYl9ub2RlYnVnX3NvICRsaWJfbm9kZWJ1Z19v cHRzXSAhPSAiIn0geworKyAgICB1bnRlc3RlZCAiQ291bGQgbm90IGNvbXBpbGUgZWl0aGVyICRs aWJzcmMuIgorKyAgICByZXR1cm4gLTEKKyt9CisrCisrY2xlYW5fcmVzdGFydCAkbGliX25vZGVi dWdfc29fYmFzZQorKworK2dkYl90ZXN0ICJwIGdudV9pZnVuYyIgIiA9IHs8dGV4dCBnbnUtaWZ1 bmMgdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+fSAweFxbMC05YS1mXF0rIDxnbnVfaWZ1bmM+IiAi cCBnbnVfaWZ1bmMgbm90IGV4ZWN1dGluZyB3aXRob3V0IGRlYnVnIgorK2dkYl90ZXN0ICJpbmZv IHN5bSBnbnVfaWZ1bmMiICJnbnVfaWZ1bmMgaW4gc2VjdGlvbiAuKiIgImluZm8gc3ltIGdudV9p ZnVuYyBub3QgZXhlY3V0aW5nIHdpdGhvdXQgZGVidWciCitJbmRleDogZ2RiLTcuMC41MC4yMDEw MDEyMS9nZGIveHRlbnNhLWxpbnV4LXRkZXAuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAu MjAxMDAxMjEub3JpZy9nZGIveHRlbnNhLWxpbnV4LXRkZXAuYwkyMDEwLTAxLTAxIDA4OjMxOjQ2 LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3h0ZW5zYS1saW51 eC10ZGVwLmMJMjAxMC0wMS0yMSAxNToxNTo0MS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yMiw2ICsy Miw3IEBACisgCisgI2luY2x1ZGUgInNvbGliLXN2cjQuaCIKKyAjaW5jbHVkZSAic3ltdGFiLmgi CisrI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAvKiBPUyBzcGVjaWZpYyBpbml0aWFsaXph dGlvbiBvZiBnZGJhcmNoLiAgKi8KKyAKK0BAIC0zMCw2ICszMSw5IEBAIHh0ZW5zYV9saW51eF9p bml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW4KKyB7CisgICBzZXRfc29saWJfc3ZyNF9mZXRjaF9s aW5rX21hcF9vZmZzZXRzCisgICAgIChnZGJhcmNoLCBzdnI0X2lscDMyX2ZldGNoX2xpbmtfbWFw X29mZnNldHMpOworKworKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIg KGdkYmFyY2gsCisrCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKKyB9 CisgCisgLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5 cGVzLiAgKi8KCmRpZmYgLS1naXQgYS9nZGItZW1wdHktbmFtZXNwYWNlLnBhdGNoIGIvZ2RiLWVt cHR5LW5hbWVzcGFjZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFhNzY1 NC4uMDAwMDAwMAotLS0gYS9nZGItZW1wdHktbmFtZXNwYWNlLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMjA0ICswLDAgQEAKLSMjI2dkYi8KLSMjIzIwMDktMTItMjAgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSMjIwotIyMjCUZpeCBjb21wYXRpYmlsaXR5 IHdpdGggRysrLTQuMS4KLSMjIwkqIGR3YXJmMnJlYWQuYyAocGFydGlhbF9kaWVfcGFyZW50X3Nj b3BlKTogTmV3IHZhcmlhYmxlIFBBUkVOVF9OQU1FLgotIyMjCUlnbm9yZSBwYXJlbnQgbmFtZXNw YWNlcyB3aXRoIG5hbWUgIjo6Ii4KLSMjIwkocGh5c25hbWVfcHJlZml4XzEpOiBJZ25vcmUgbmFt ZXNwYWNlcyB3aXRoIG5hbWUgIjo6Ii4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMDktMTItMjAgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLmR3YXJm Mi9kdzItZW1wdHktbmFtZXNwYWNlLmV4cCwgZ2RiLmR3YXJmMi9kdzItZW1wdHktbmFtZXNwYWNl LlM6Ci0JTmV3LgotCi0jIyMtLS0gYS9nZGIvZHdhcmYycmVhZC5jCi0jIyMrKysgYi9nZGIvZHdh cmYycmVhZC5jCi0jIyNAQCAtMjM1NSwxMSArMjM1NSwxOCBAQCBwYXJ0aWFsX2RpZV9wYXJlbnRf c2NvcGUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwZGksCi0jIyMgICAgICAgfHwgcGFyZW50 LT50YWcgPT0gRFdfVEFHX2ludGVyZmFjZV90eXBlCi0jIyMgICAgICAgfHwgcGFyZW50LT50YWcg PT0gRFdfVEFHX3VuaW9uX3R5cGUpCi0jIyMgICAgIHsKLSMjIysgICAgICBjaGFyICpwYXJlbnRf bmFtZSA9IHBhcmVudC0+bmFtZTsKLSMjIysKLSMjIysgICAgICAvKiBHKysgNC4xIHByb2R1Y2Vk IERXX1RBR19uYW1lc3BhY2Ugd2l0aCBEV19BVF9uYW1lICI6OiIuICAqLwotIyMjKyAgICAgIGlm IChwYXJlbnQtPnRhZyA9PSBEV19UQUdfbmFtZXNwYWNlICYmIHBhcmVudF9uYW1lICE9IE5VTEwK LSMjIysgICAgICAgICAgJiYgc3RyY21wIChwYXJlbnRfbmFtZSwgIjo6IikgPT0gMCkKLSMjIysJ cGFyZW50X25hbWUgPSBOVUxMOwotIyMjKwotIyMjICAgICAgIGlmIChncmFuZHBhcmVudF9zY29w ZSA9PSBOVUxMKQotIyMjLQlwYXJlbnQtPnNjb3BlID0gcGFyZW50LT5uYW1lOwotIyMjKwlwYXJl bnQtPnNjb3BlID0gcGFyZW50X25hbWU7Ci0jIyMgICAgICAgZWxzZQotIyMjIAlwYXJlbnQtPnNj b3BlID0gdHlwZW5hbWVfY29uY2F0ICgmY3UtPmNvbXBfdW5pdF9vYnN0YWNrLCBncmFuZHBhcmVu dF9zY29wZSwKLSMjIy0JCQkJCSBwYXJlbnQtPm5hbWUsIGN1KTsKLSMjIysJCQkJCSBwYXJlbnRf bmFtZSwgY3UpOwotIyMjICAgICB9Ci0jIyMgICBlbHNlIGlmIChwYXJlbnQtPnRhZyA9PSBEV19U QUdfZW51bWVyYXRpb25fdHlwZSkKLSMjIyAgICAgLyogRW51bWVyYXRvcnMgc2hvdWxkIG5vdCBn ZXQgdGhlIG5hbWUgb2YgdGhlIGVudW1lcmF0aW9uIGFzIGEgcHJlZml4LiAgKi8KLSMjI0BAIC05 MDA4LDYgKzkwMTUsOSBAQCBwaHlzbmFtZV9wcmVmaXhfMSAoc3RydWN0IHVpX2ZpbGUgKmJ1Ziwg c3RydWN0IGRpZV9pbmZvICpkaWUsCi0jIyMgCSAgbmFtZSA9IGR3YXJmMl9uYW1lIChkaWUsIGN1 KTsKLSMjIyAJICBpZiAobmFtZSA9PSBOVUxMKQotIyMjIAkgICAgbmFtZSA9ICIoYW5vbnltb3Vz IG5hbWVzcGFjZSkiOwotIyMjKwkgIC8qIEcrKyA0LjEgcHJvZHVjZWQgRFdfVEFHX25hbWVzcGFj ZSB3aXRoIERXX0FUX25hbWUgIjo6Ii4gICovCi0jIyMrCSAgZWxzZSBpZiAoc3RyY21wIChuYW1l LCAiOjoiKSA9PSAwKQotIyMjKwkgICAgbmFtZSA9IE5VTEw7Ci0jIyMgCSAgYnJlYWs7Ci0jIyMg Ci0jIyMgCWNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVtcHR5LW5hbWVzcGFjZS5TCi1AQCAtMCwwICsxLDEw OCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu Ci0rCi0rICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKy8qIFRlc3Qg RysrIDQuMSBwcm9kdWNpbmcgRFdfVEFHX25hbWVzcGFjZSB3aXRoIERXX0FUX25hbWUgIjo6Ii4g ICovCi0rCi0rCS5kYXRhCi0rdmFyOgkuNGJ5dGUJMQotKwotKwkuc2VjdGlvbiAuZGVidWdfaW5m bwotKy5MY3UxX2JlZ2luOgotKwkvKiBDVSBoZWFkZXIgKi8KLSsJLjRieXRlCS5MY3UxX2VuZCAt IC5MY3UxX3N0YXJ0CQkvKiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCAqLwotKy5MY3UxX3N0 YXJ0OgotKwkuMmJ5dGUJMgkJCQkvKiBEV0FSRiBWZXJzaW9uICovCi0rCS40Ynl0ZQkuTGFiYnJl djFfYmVnaW4JCQkvKiBPZmZzZXQgaW50byBhYmJyZXYgc2VjdGlvbiAqLwotKwkuYnl0ZQk0CQkJ CS8qIFBvaW50ZXIgc2l6ZSAqLwotKwotKwkvKiBDVSBkaWUgKi8KLSsJLnVsZWIxMjggMQkJCQkv KiBBYmJyZXY6IERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmFzY2lpCSJmaWxlMS50eHRcMCIJ CQkvKiBEV19BVF9uYW1lICovCi0rCS5hc2NpaQkiR05VIEMgMy4zLjNcMCIJCQkvKiBEV19BVF9w cm9kdWNlciAqLwotKwkuYnl0ZQk0CQkJCS8qIERXX0xBTkdfQ19wbHVzX3BsdXMgKEMrKykgKi8K LSsKLSsuTHR5cGVfaW50OgotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfYmFzZV90 eXBlICovCi0rCS5hc2NpaQkJImludFwwIgkJCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJCTQJ CQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmJ5dGUJCTUJCQkvKiBEV19BVF9lbmNvZGluZyAq LwotKwotKwkudWxlYjEyOAkzCQkJLyogQWJicmV2OiBEV19UQUdfbmFtZXNwYWNlICovCi0rCS5h c2NpaQkJIjo6XDAiCQkJLyogRFdfQVRfbmFtZSAqLwotKwotKwkudWxlYjEyOAk3CQkJLyogQWJi cmV2OiBEV19UQUdfdmFyaWFibGUgKGxvY2F0aW9uKSAqLwotKwkuYXNjaWkJCSJ2YXJcMCIJCQkv KiBEV19BVF9uYW1lICovCi0rCS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8K LSsxOgkuYnl0ZQkJMwkJCS8qICAgRFdfT1BfYWRkciAqLwotKwkuNGJ5dGUJCXZhcgkJCS8qICAg PGFkZHI+ICovCi0rMjoJLjRieXRlCQkuTHR5cGVfaW50LS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5 cGUgKi8KLSsKLSsJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgRFdfVEFHX25hbWVz cGFjZSAqLwotKwotKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLwotKwot Ky5MY3UxX2VuZDoKLSsKLSsvKiBBYmJyZXYgdGFibGUgKi8KLSsJLnNlY3Rpb24gLmRlYnVnX2Fi YnJldgotKy5MYWJicmV2MV9iZWdpbjoKLSsJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2RlICov Ci0rCS51bGViMTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5ieXRlCQkx CQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8K LSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHgyNQkJ CS8qIERXX0FUX3Byb2R1Y2VyICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5n ICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLwotKwkudWxlYjEyOAkw eGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICov Ci0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTIJCQkvKiBB YmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDI0CQkJLyogRFdfVEFHX2Jhc2VfdHlwZSAqLwot KwkuYnl0ZQkJMAkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19B VF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGVi MTI4CTB4YgkJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19G T1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4M2UJCQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwku dWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJt aW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4 CTMJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDM5CQkJLyogRFdfVEFHX25hbWVz cGFjZSAqLwotKwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJ CQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICov Ci0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJt aW5hdG9yICovCi0rCi0rCS51bGViMTI4CTcJCQkvKiBBYmJyZXYgY29kZSAobG9jYXRpb24pICov Ci0rCS51bGViMTI4CTB4MzQJCQkvKiBEV19UQUdfdmFyaWFibGUgKi8KLSsJLmJ5dGUJCTAJCQkv KiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwku dWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDIJCQkvKiBE V19BVF9sb2NhdGlvbiAqLwotKwkudWxlYjEyOAkweGEJCQkvKiBEV19GT1JNX2Jsb2NrMSAqLwot KwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOAkweDEzCQkJLyog RFdfRk9STV9yZWY0ICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRl CQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9y ICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0tLS0gL2Rldi9udWxsCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVtcHR5LW5hbWVzcGFjZS5leHAKLUBAIC0w LDAgKzEsNDMgQEAKLSsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRlc3QgRysrIDQu MSBwcm9kdWNpbmcgRFdfVEFHX25hbWVzcGFjZSB3aXRoIERXX0FUX25hbWUgIjo6Ii4KLSsKLSsj IFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJG LTIgYW5kIHVzZSBnYXMuCi0rIyBGb3Igbm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFy Z2V0cy4KLStpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICot Ki1nbnUqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQotKyAgICAmJiAhW2lzdGFyZ2V0 ICotKi1vcGVuYnNkKl0KLSsgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KLSsgICAgJiYg IVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7Ci0rICAgIHJldHVybiAwICAKLSt9Ci0rCi0r c2V0IHRlc3RmaWxlICJkdzItZW1wdHktbmFtZXNwYWNlIgotK3NldCBzcmNmaWxlICR7dGVzdGZp bGV9LlMKLStzZXQgZXhlY3V0YWJsZSAke3Rlc3RmaWxlfS54Ci0rCi0raWYgIHsgW2dkYl9jb21w aWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke29iamRpcn0vJHtzdWJkaXJ9 LyR7ZXhlY3V0YWJsZX0iIG9iamVjdCB7bm9kZWJ1Z31dICE9ICIiIH0gewotKyAgICByZXR1cm4g LTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQotKwotKyMgYHAgdmFyJyBiZWxv dyBjYW4gd29yayB3aXRob3V0IGlkZW50aWZpZWQgRFdBUkYgRElFIGp1c3QgYmFzZWQgb24gaXRz IEVMRiBzeW1ib2wuCi0rIyBDYXRjaCBpdCBoZXJlIGFzIGB0eXBlID0gPGRhdGEgdmFyaWFibGUs IG5vIGRlYnVnIGluZm8+Jy4KLStnZGJfdGVzdCAicHR5cGUgdmFyIiAidHlwZSA9IGludCIKLSsK LStnZGJfdGVzdCAicCB2YXIiICIgPSAxIgoKZGlmZiAtLWdpdCBhL2dkYi1zb2xpYi1kaXNwbGF5 LnBhdGNoIGIvZ2RiLXNvbGliLWRpc3BsYXkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZGFjMzQyMAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1zb2xpYi1kaXNwbGF5 LnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDEwLTAxL21zZzAwNDg1Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gRml4IHNvbGliLWRp c3BsYXkuZXhwIGNyYXNoCisKK1sgTWFkZSBtb3JlIHNhZmUgZm9yIGRvd25zdHJlYW0gcGF0Y2gg KyBwb3J0ZWQgZm9yIFZMQS4gIF0KKworSGksCisKK2l0IGlzIGEgdGVzdHN1aXRlIHJlZ3Jlc3Np b24gYWdhaW5zdCBnZGItNy4wIGFsdGhvdWdoIHRoZSBidWcgd2FzIHByb2JhYmx5CitwcmVzZW50 IGV2ZW4gaW4gZ2RiLTcuMCAoaXQgc3RhcnRlZCB0byByZXByb2R1Y2Ugc2luY2Ugb25lIGNvbXBs ZXRlbHkKK3VucmVsYXRlZCBEYW5pZWwgSi4ncyBwYXRjaCkuICBUaGlzIHBhdGNoIGZpeGVzICgt bG1jaGVjayBtYXkgYmUgcmVxdWlyZWQpOgorCisgUEFTUzogZ2RiLmJhc2Uvc29saWItZGlzcGxh eS5leHA6IGRpc3BsYXkgYV9nbG9iYWwKKyBQQVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4 cDogZGlzcGxheSBiX2dsb2JhbAorIFBBU1M6IGdkYi5iYXNlL3NvbGliLWRpc3BsYXkuZXhwOiBk aXNwbGF5IGNfZ2xvYmFsCistRVJST1I6IFByb2Nlc3Mgbm8gbG9uZ2VyIGV4aXN0cworLVVOUkVT T0xWRUQ6IGdkYi5iYXNlL3NvbGliLWRpc3BsYXkuZXhwOiBhZnRlciByZXJ1bgorLVdBUk5JTkc6 IHJlbW90ZV9leHBlY3Qgc3RhdGVtZW50IHdpdGhvdXQgYSBkZWZhdWx0IGNhc2U/IQorLUZBSUw6 IGdkYi5iYXNlL3NvbGliLWRpc3BsYXkuZXhwOiBDYW4ndCBydW4gdG8gbWFpbiAoMykKKytQQVNT OiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDogYWZ0ZXIgcmVydW4KKytQQVNTOiBnZGIuYmFz ZS9zb2xpYi1kaXNwbGF5LmV4cDogYWZ0ZXIgcmVydW4KKytQQVNTOiBnZGIuYmFzZS9zb2xpYi1k aXNwbGF5LmV4cDogYnJlYWsgMjUKKytQQVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDog Y29udGludWUKKytQQVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDogZGlzcGxheSBtYWlu X2dsb2JhbAorK1BBU1M6IGdkYi5iYXNlL3NvbGliLWRpc3BsYXkuZXhwOiBkaXNwbGF5IGFfbG9j YWwKKytQQVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDogZGlzcGxheSBhX3N0YXRpYwor K1BBU1M6IGdkYi5iYXNlL3NvbGliLWRpc3BsYXkuZXhwOiBicmVhayAyNQorK1BBU1M6IGdkYi5i YXNlL3NvbGliLWRpc3BsYXkuZXhwOiBjb250aW51ZQorCitObyByZWdyZXNzaW9ucyBvbiB7eDg2 XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTItbGludXgtZ251LgorCitUaGUgcXVlc3Rpb24g aXMgd2hldGhlciBTWU1CT0xfU1lNVEFCIChzeW1ib2wpIGNhbiBiZSBldmVyIE5VTEwgYXQgdGhp cyBwb2ludC4KK0lNTyBub3QsIGl0IGNhbiBiZSBOVUxMIG9ubHkgdGVtcG9yYXJpbHkgZHVyaW5n IHJlYWRpbmcgc3ltYm9scy4KKworCitUaGFua3MsCitKYW4KKworCisyMDEwLTAxLTIwICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIHByaW50Y21kLmMg KGRpc3BsYXlfdXNlc19zb2xpYl9wKTogUmVtb3ZlIHZhcmlhYmxlIHNlY3Rpb24uICBBY2Nlc3MK KwlvYmpmaWxlIHZpYSBTWU1CT0xfU1lNVEFCLgorCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEy MS9nZGIvcGFyc2UuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9n ZGIvcGFyc2UuYwkyMDEwLTAxLTIxIDE1OjE2OjE1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjAuNTAuMjAxMDAxMjEvZ2RiL3BhcnNlLmMJMjAxMC0wMS0yMSAxNToyMTo0NS4wMDAwMDAwMDAg KzAxMDAKK0BAIC0xNDI1LDYgKzE0MjUsMTAgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0 cnVjdCBleHByZXNzaQorIAlpZiAoc2VjdGlvbiAmJiBvYmpmaWxlX2Z1bmMgJiYgKCpvYmpmaWxl X2Z1bmMpIChzZWN0aW9uLT5vYmpmaWxlLCBkYXRhKSkKKyAJICByZXR1cm4gMTsKKyAKKysJLyog U1lNQk9MX09CSl9TRUNUSU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAgKi8KKysJaWYgKFNZTUJP TF9TWU1UQUIgKHN5bWJvbCkgJiYgb2JqZmlsZV9mdW5jICYmICgqb2JqZmlsZV9mdW5jKSAoU1lN Qk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkpCisrCSAgcmV0dXJuIDE7CisrCisg CS8qIENoZWNrIG9iamZpbGUgd2hlcmUgaXMgcGxhY2VkIHRoZSBjb2RlIHRvdWNoaW5nIHRoZSB2 YXJpYWJsZS4gICovCisgCW9iamZpbGUgPSBibG9ja19vYmpmaWxlIChibG9jayk7CisgCgpkaWZm IC0tZ2l0IGEvZ2RiLXRlc3RzdWl0ZS1saW5lbm8ucGF0Y2ggYi9nZGItdGVzdHN1aXRlLWxpbmVu by5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGViYzgyNy4uMDAwMDAwMAot LS0gYS9nZGItdGVzdHN1aXRlLWxpbmVuby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiAr MCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cw MDQ2MS5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIHRlc3RzdWl0ZTogRml4IG1pc3BsYWNlZCBsaW5l IG51bWJlcnMKLQotSGksCi0KLWNvbW1pdCA3YTgyZGZiMmE5YmU2NmYwMjMwMjI5NjQyY2JlZTU0 ZWJkYTNiMGRhCi1BdXRob3I6IEpvZWwgQnJvYmVja2VyIDxicm9iZWNrZXJAZ25hdC5jb20+Ci1E YXRlOiAgIEZyaSBKYW4gMSAwNzozMToyOCAyMDEwICswMDAwCi0KLSAgICBVcGRhdGUgY29weXJp Z2h0IHllYXIgaW4gbW9zdCBoZWFkZXJzLgotICAgIAotICAgIEF1dG9tYXRpYyB1cGRhdGUgYnkg Y29weXJpZ2h0LnNoLgotCi1yZWdyZXNzZWQ6Ci0KLS1QQVNTOiBnZGIubWkvbWktYnJlYWsuZXhw OiBydW4gdG8gYnJlYWtwb2ludCB3aXRoIGlnbm9yZSBjb3VudAotK0ZBSUw6IGdkYi5taS9taS1i cmVhay5leHA6IHJ1biB0byBicmVha3BvaW50IHdpdGggaWdub3JlIGNvdW50IChzdG9wcGVkIGF0 IHdyb25nIHBsYWNlKQotLVBBU1M6IGdkYi5taS9taS1jbGkuZXhwOiBjb250aW51ZSB0byBjYWxs ZWU0Ci0rRkFJTDogZ2RiLm1pL21pLWNsaS5leHA6IGNvbnRpbnVlIHRvIGNhbGxlZTQgKHN0b3Bw ZWQgYXQgd3JvbmcgcGxhY2UpCi0tUEFTUzogZ2RiLm1pL21pLWNsaS5leHA6IGNoZWNrICpzdG9w cGVkIGZyb20gQ0xJIGNvbW1hbmQKLStGQUlMOiBnZGIubWkvbWktY2xpLmV4cDogY2hlY2sgKnN0 b3BwZWQgZnJvbSBDTEkgY29tbWFuZCAoc3RvcHBlZCBhdCB3cm9uZyBwbGFjZSkKLS1QQVNTOiBn ZGIubWkvbWkyLWNsaS5leHA6IGNvbnRpbnVlIHRvIGNhbGxlZTQKLStGQUlMOiBnZGIubWkvbWky LWNsaS5leHA6IGNvbnRpbnVlIHRvIGNhbGxlZTQgKHN0b3BwZWQgYXQgd3JvbmcgcGxhY2UpCi0K LWR1ZSB0bzoKLQotIy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL2Jhc2ljcy5jCi0jKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIubWkvYmFzaWNzLmMKLSNAQCAtMSw0ICsxLDUgQEAKLSMtLyogQ29w eXJpZ2h0IDE5OTksIDIwMDAsIDIwMDQsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0jKy8qIENvcHlyaWdodCAxOTk5LCAyMDAwLCAyMDA0LCAyMDA3LCAy MDA4LCAyMDA5LCAyMDEwCi0jK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi0KLVRl c3RlZCBvbiB4ODZfNjQtZmVkb3JhMTItbGludXgtZ251LgotCi0KLVRoYW5rcywKLUphbgotCi0K LTIwMTAtMDEtMTggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LQotCSogZ2RiLm1pL21pLWJyZWFrLmV4cCAoc2V0IGxpbmVfY2FsbG1lX2hlYWQsIHNldCBsaW5l X2NhbGxtZV9ib2R5KTogTmV3LgotCSh0ZXN0X2lnbm9yZV9jb3VudCk6IERlY2xhcmUgbGluZV9j YWxsbWVfYm9keSBnbG9iYWwuCi0JKHJ1biB0byBicmVha3BvaW50IHdpdGggaWdub3JlIGNvdW50 KTogVXNlIGxpbmVfY2FsbG1lX2JvZHkuCi0JKiBnZGIubWkvbWktY2xpLmV4cCAoc2V0IGxpbmVf bWFpbl9oZWFkLCBzZXQgbGluZV9tYWluX2JvZHkpCi0JKHNldCBsaW5lX21haW5faGVsbG8sIHNl dCBsaW5lX21haW5fcmV0dXJuKTogUmVpbmRlbnQuCi0JKHNldCBsaW5lX2NhbGxlZTRfaGVhZCwg c2V0IGxpbmVfY2FsbGVlNF9ib2R5LCBzZXQgbGluZV9jYWxsZWU0X25leHQpOgotCU5ldy4KLQko Y29udGludWUgdG8gY2FsbGVlNCk6IFVzZSBsaW5lX2NhbGxlZTRfYm9keS4KLQkoY2hlY2sgKnN0 b3BwZWQgZnJvbSBDTEkgY29tbWFuZCk6IFVzZSBsaW5lX2NhbGxlZTRfbmV4dC4KLQkqIGdkYi5t aS9taTItY2xpLmV4cCAoc2V0IGxpbmVfbWFpbl9oZWFkLCBzZXQgbGluZV9tYWluX2JvZHkpCi0J KHNldCBsaW5lX21haW5faGVsbG8sIHNldCBsaW5lX21haW5fcmV0dXJuKTogUmVpbmRlbnQuCi0J KHNldCBsaW5lX2NhbGxlZTRfaGVhZCwgc2V0IGxpbmVfY2FsbGVlNF9ib2R5KTogTmV3LgotCShj b250aW51ZSB0byBjYWxsZWU0KTogVXNlIGxpbmVfY2FsbGVlNF9ib2R5LgotCi0tLS0gYS9nZGIv dGVzdHN1aXRlL2dkYi5taS9taS1icmVhay5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1p L21pLWJyZWFrLmV4cAotQEAgLTU2LDYgKzU2LDggQEAgc2V0IGxpbmVfY2FsbGVlMV9oZWFkICBb Z2RiX2dldF9saW5lX251bWJlciAiY2FsbGVlMSAoIl0KLSBzZXQgbGluZV9jYWxsZWUxX2JvZHkg IFtleHByICRsaW5lX2NhbGxlZTFfaGVhZCArIDJdCi0gc2V0IGxpbmVfbWFpbl9oZWFkICAgICBb Z2RiX2dldF9saW5lX251bWJlciAibWFpbiAoIl0KLSBzZXQgbGluZV9tYWluX2JvZHkgICAgIFtl eHByICRsaW5lX21haW5faGVhZCArIDJdCi0rc2V0IGxpbmVfY2FsbG1lX2hlYWQgICBbZ2RiX2dl dF9saW5lX251bWJlciAiY2FsbG1lICgiXQotK3NldCBsaW5lX2NhbGxtZV9ib2R5ICAgW2V4cHIg JGxpbmVfY2FsbG1lX2hlYWQgKyAyXQotIAotIHNldCBmdWxsbmFtZSAiZnVsbG5hbWU9XCIke2Z1 bGxuYW1lX3N5bnRheH0ke3NyY2ZpbGV9XCIiCi0gCi1AQCAtMTUyLDYgKzE1NCw3IEBAIHByb2Mg dGVzdF9yYnJlYWtfY3JlYXRpb25fYW5kX2xpc3Rpbmcge30gewotIAotIHByb2MgdGVzdF9pZ25v cmVfY291bnQge30gewotICAgICBnbG9iYWwgbWlfZ2RiX3Byb21wdAotKyAgICBnbG9iYWwgbGlu ZV9jYWxsbWVfYm9keQotIAotICAgICBtaV9nZGJfdGVzdCAiLWJyZWFrLWluc2VydCAtaSAxIGNh bGxtZSIgXAotICAgICAgICAgIlxcXmRvbmUuKmlnbm9yZT1cIjFcIi4qIiBcCi1AQCAtMTU5LDcg KzE2Miw3IEBAIHByb2MgdGVzdF9pZ25vcmVfY291bnQge30gewotIAotICAgICBtaV9ydW5fY21k Ci0gCi0tICAgIG1pX2V4cGVjdF9zdG9wICJicmVha3BvaW50LWhpdCIgImNhbGxtZSIgIlx7bmFt ZT1cImlcIix2YWx1ZT1cIjJcIlx9IiAiLipiYXNpY3MuYyIgIjUyIiBcCi0rICAgIG1pX2V4cGVj dF9zdG9wICJicmVha3BvaW50LWhpdCIgImNhbGxtZSIgIlx7bmFtZT1cImlcIix2YWx1ZT1cIjJc Ilx9IiAiLipiYXNpY3MuYyIgJGxpbmVfY2FsbG1lX2JvZHkgXAotICAgICAgICAgeyIiICJkaXNw PVwia2VlcFwiIiB9ICJydW4gdG8gYnJlYWtwb2ludCB3aXRoIGlnbm9yZSBjb3VudCIKLSB9Ci0g Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5taS9taS1jbGkuZXhwCi1AQCAtNjMsMTAgKzYzLDEzIEBAIG1pX2dkYl90ZXN0ICIt aW50ZXJwcmV0ZXItZXhlYyBjb25zb2xlIFwiZmlsZSAkYmluZmlsZVwiIiBcCi0gCi0gbWlfcnVu X3RvX21haW4KLSAKLS1zZXQgbGluZV9tYWluX2hlYWQgICBbZ2RiX2dldF9saW5lX251bWJlciAi bWFpbiAoIl0KLS1zZXQgbGluZV9tYWluX2JvZHkgICBbZXhwciAkbGluZV9tYWluX2hlYWQgKyAy XQotLXNldCBsaW5lX21haW5faGVsbG8gIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJIZWxsbywgV29y bGQhIl0KLS1zZXQgbGluZV9tYWluX3JldHVybiBbZXhwciAkbGluZV9tYWluX2hlbGxvICsgMl0K LStzZXQgbGluZV9tYWluX2hlYWQgICAgW2dkYl9nZXRfbGluZV9udW1iZXIgIm1haW4gKCJdCi0r c2V0IGxpbmVfbWFpbl9ib2R5ICAgIFtleHByICRsaW5lX21haW5faGVhZCArIDJdCi0rc2V0IGxp bmVfbWFpbl9oZWxsbyAgIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJIZWxsbywgV29ybGQhIl0KLStz ZXQgbGluZV9tYWluX3JldHVybiAgW2V4cHIgJGxpbmVfbWFpbl9oZWxsbyArIDJdCi0rc2V0IGxp bmVfY2FsbGVlNF9oZWFkIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJjYWxsZWU0ICgiXQotK3NldCBs aW5lX2NhbGxlZTRfYm9keSBbZXhwciAkbGluZV9jYWxsZWU0X2hlYWQgKyAyXQotK3NldCBsaW5l X2NhbGxlZTRfbmV4dCBbZXhwciAkbGluZV9jYWxsZWU0X2JvZHkgKyAxXQotIAotIG1pX2dkYl90 ZXN0ICItaW50ZXJwcmV0ZXItZXhlYyBjb25zb2xlIFwic2V0IGFyZ3MgZm9vYmFyXCIiIFwKLSAg IHtcXmRvbmV9IFwKLUBAIC05Nyw3ICsxMDAsNyBAQCBtaV9nZGJfdGVzdCAiLWludGVycHJldGVy LWV4ZWMgY29uc29sZSBcImxpc3RcIiIgXAotICAgIi4qXH5cIiRsaW5lX21haW5fYm9keVxbXFxc XHQgXF0qY2FsbGVlMS4qO1xcXFxuXCIuKlxcXmRvbmUiIFwKLSAgICItaW50ZXJwcmV0ZXItZXhl YyBjb25zb2xlIFwibGlzdFwiIgotIAotLW1pX2V4ZWN1dGVfdG8gImV4ZWMtY29udGludWUiICJi cmVha3BvaW50LWhpdCIgImNhbGxlZTQiICIiICIuKmJhc2ljcy5jIiAiMjgiIFwKLSttaV9leGVj dXRlX3RvICJleGVjLWNvbnRpbnVlIiAiYnJlYWtwb2ludC1oaXQiICJjYWxsZWU0IiAiIiAiLipi YXNpY3MuYyIgJGxpbmVfY2FsbGVlNF9ib2R5IFwKLSAgICAgeyAiIiAiZGlzcD1cImtlZXBcIiIg fSAiY29udGludWUgdG8gY2FsbGVlNCIKLSAKLSAjIE5PVEU6IGNhZ25leS8yMDAzLTAyLTAzOiBO b3QgeWV0LgotQEAgLTE1NSw3ICsxNTgsNyBAQCBpZiB7JGFzeW5jfSB7Ci0gICAgIHNldCByZWFz b24gIiIKLSB9Ci0gCi0tbWlfZXhlY3V0ZV90byAiaW50ZXJwcmV0ZXItZXhlYyBjb25zb2xlIHN0 ZXAiICRyZWFzb24gImNhbGxlZTQiICIiICIuKmJhc2ljcy5jIiAiMjkiIFwKLSttaV9leGVjdXRl X3RvICJpbnRlcnByZXRlci1leGVjIGNvbnNvbGUgc3RlcCIgJHJlYXNvbiAiY2FsbGVlNCIgIiIg Ii4qYmFzaWNzLmMiICRsaW5lX2NhbGxlZTRfbmV4dCBcCi0gICAgICIiICJjaGVjayAqc3RvcHBl ZCBmcm9tIENMSSBjb21tYW5kIgotIAotICMgTk9URTogY2FnbmV5LzIwMDMtMDItMDM6IE5vdCB5 ZXQuCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItY2xpLmV4cAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIubWkvbWkyLWNsaS5leHAKLUBAIC02MywxMCArNjMsMTIgQEAgbWlfZ2RiX3Rl c3QgIi1pbnRlcnByZXRlci1leGVjIGNvbnNvbGUgXCJmaWxlICRiaW5maWxlXCIiIFwKLSAKLSBt aV9ydW5fdG9fbWFpbgotIAotLXNldCBsaW5lX21haW5faGVhZCAgIFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJtYWluICgiXQotLXNldCBsaW5lX21haW5fYm9keSAgIFtleHByICRsaW5lX21haW5faGVh ZCArIDJdCi0tc2V0IGxpbmVfbWFpbl9oZWxsbyAgW2dkYl9nZXRfbGluZV9udW1iZXIgIkhlbGxv LCBXb3JsZCEiXQotLXNldCBsaW5lX21haW5fcmV0dXJuIFtleHByICRsaW5lX21haW5faGVsbG8g KyAyXQotK3NldCBsaW5lX21haW5faGVhZCAgICBbZ2RiX2dldF9saW5lX251bWJlciAibWFpbiAo Il0KLStzZXQgbGluZV9tYWluX2JvZHkgICAgW2V4cHIgJGxpbmVfbWFpbl9oZWFkICsgMl0KLStz ZXQgbGluZV9tYWluX2hlbGxvICAgW2dkYl9nZXRfbGluZV9udW1iZXIgIkhlbGxvLCBXb3JsZCEi XQotK3NldCBsaW5lX21haW5fcmV0dXJuICBbZXhwciAkbGluZV9tYWluX2hlbGxvICsgMl0KLStz ZXQgbGluZV9jYWxsZWU0X2hlYWQgW2dkYl9nZXRfbGluZV9udW1iZXIgImNhbGxlZTQgKCJdCi0r c2V0IGxpbmVfY2FsbGVlNF9ib2R5IFtleHByICRsaW5lX2NhbGxlZTRfaGVhZCArIDJdCi0gCi0g bWlfZ2RiX3Rlc3QgIi1pbnRlcnByZXRlci1leGVjIGNvbnNvbGUgXCJzZXQgYXJncyBmb29iYXJc IiIgXAotICAge1xeZG9uZX0gXAotQEAgLTk3LDcgKzEwMCw3IEBAIG1pX2dkYl90ZXN0ICItaW50 ZXJwcmV0ZXItZXhlYyBjb25zb2xlIFwibGlzdFwiIiBcCi0gICAiLipcflwiJGxpbmVfbWFpbl9i b2R5XFtcXFxcdCBcXSpjYWxsZWUxLio7XFxcXG5cIi4qXFxeZG9uZSIgXAotICAgIi1pbnRlcnBy ZXRlci1leGVjIGNvbnNvbGUgXCJsaXN0XCIiCi0gCi0tbWlfZXhlY3V0ZV90byAiZXhlYy1jb250 aW51ZSIgImJyZWFrcG9pbnQtaGl0IiAiY2FsbGVlNCIgIiIgIi4qYmFzaWNzLmMiICIyOCIgXAot K21pX2V4ZWN1dGVfdG8gImV4ZWMtY29udGludWUiICJicmVha3BvaW50LWhpdCIgImNhbGxlZTQi ICIiICIuKmJhc2ljcy5jIiAkbGluZV9jYWxsZWU0X2JvZHkgXAotICAgICB7ICIiICJkaXNwPVwi a2VlcFwiIiB9IFwKLSAgICAgImNvbnRpbnVlIHRvIGNhbGxlZTQiCi0gCi0KCmRpZmYgLS1naXQg YS9nZGItdW51c2VkLXJldmVydC5wYXRjaCBiL2dkYi11bnVzZWQtcmV2ZXJ0LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhYmUzY2YKLS0tIC9kZXYvbnVsbAorKysg Yi9nZGItdW51c2VkLXJldmVydC5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitbUkZBL2NvbW1pdCA1 LzVdIEFkZCAtV3VudXNlZC1mdW5jdGlvbiB0byBjb21waWxlIGZsYWdzLgoraHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDEvbXNnMDAzNzEuaHRtbAoraHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wMS9tc2cwMDE2My5odG1sCisKK1JFVkVSVEVE CisKKy0tLSBzcmMvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEwLzAxLzE1IDAwOjM0OjM3CTEuMTEyCisr Kysgc3JjL2dkYi9jb25maWd1cmUuYWMJMjAxMC8wMS8xOSAwOTo1MjozMQkxLjExMworQEAgLTE1 NDQsOCArMTU0NCw3IEBACisgIyBnZGIvZG9jL2dkYmludC50ZXhpbmZvLgorIGJ1aWxkX3dhcm5p bmdzPSItV2FsbCAtV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCAtV3BvaW50ZXItYXJpdGgg XAorIC1XZm9ybWF0LW5vbmxpdGVyYWwgLVduby1wb2ludGVyLXNpZ24gXAorLS1Xbm8tdW51c2Vk IC1XdW51c2VkLXZhbHVlIC1XdW51c2VkLWZ1bmN0aW9uIFwKKy0tV25vLXN3aXRjaCAtV25vLWNo YXItc3Vic2NyaXB0cyIKKystV25vLXVudXNlZCAtV3VudXNlZC12YWx1ZSAtV25vLXN3aXRjaCAt V25vLWNoYXItc3Vic2NyaXB0cyIKKyAKKyAjIEVuYWJsZSAtV25vLWZvcm1hdCBieSBkZWZhdWx0 IHdoZW4gdXNpbmcgZ2NjIG9uIG1pbmd3IHNpbmNlIG1hbnkKKyAjIEdDQyB2ZXJzaW9ucyBjb21w bGFpbiBhYm91dCAlSTY0LgorLS0tIHNyYy9nZGIvY29uZmlndXJlCTIwMTAvMDEvMTUgMDA6MzQ6 MzcJMS4yOTcKKysrKyBzcmMvZ2RiL2NvbmZpZ3VyZQkyMDEwLzAxLzE5IDA5OjUyOjMyCTEuMjk4 CitAQCAtMTM0MzUsOCArMTM0MzUsNyBAQAorICMgZ2RiL2RvYy9nZGJpbnQudGV4aW5mby4KKyBi dWlsZF93YXJuaW5ncz0iLVdhbGwgLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQgLVdwb2lu dGVyLWFyaXRoIFwKKyAtV2Zvcm1hdC1ub25saXRlcmFsIC1Xbm8tcG9pbnRlci1zaWduIFwKKy0t V25vLXVudXNlZCAtV3VudXNlZC12YWx1ZSAtV3VudXNlZC1mdW5jdGlvbiBcCistLVduby1zd2l0 Y2ggLVduby1jaGFyLXN1YnNjcmlwdHMiCisrLVduby11bnVzZWQgLVd1bnVzZWQtdmFsdWUgLVdu by1zd2l0Y2ggLVduby1jaGFyLXN1YnNjcmlwdHMiCisgCisgIyBFbmFibGUgLVduby1mb3JtYXQg YnkgZGVmYXVsdCB3aGVuIHVzaW5nIGdjYyBvbiBtaW5ndyBzaW5jZSBtYW55CisgIyBHQ0MgdmVy c2lvbnMgY29tcGxhaW4gYWJvdXQgJUk2NC4KKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzAx LzE5IDA5OjUwOjQ4CTEuMTEyNzEKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzAxLzE5IDA5 OjUyOjMzCTEuMTEyNzIKKyMjIC0xLDExICsxLDUgQEAKKyAyMDEwLTAxLTE5ICBKb2VsIEJyb2Jl Y2tlciAgPGJyb2JlY2tlckBhZGFjb3JlLmNvbT4KKyAKKy0JQWRkIC1XdW51c2VkLWZ1bmN0aW9u IHRvIGNvbXBpbGUgZmxhZ3MuCistCSogY29uZmlndXJlLmFjOiBBZGQgLVd1bnVzZWQtZnVuY3Rp b24gdG8gYnVpbGRfd2FybmluZ3MuCistCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorLQorLTIw MTAtMDEtMTkgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGFkYWNvcmUuY29tPgorLQorIAki ZGVsZXRlIiBhZGEtbGV4LmM6aW5wdXQgZnVuY3Rpb24sIG5vdCB1c2VkLgorIAkqIGFkYS1sZXgu bDogI2RlZmluZSBZWV9OT19JTlBVVC4KKyAKCmRpZmYgLS1naXQgYS9nZGItd2F0Y2hwb2ludC1j b25kLWdvbmUucGF0Y2ggYi9nZGItd2F0Y2hwb2ludC1jb25kLWdvbmUucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyYTRjNzYuLjAwMDAwMDAKLS0tIGEvZ2RiLXdhdGNocG9p bnQtY29uZC1nb25lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTEyL21zZzAwMzk0Lmh0bWwKLVN1 YmplY3Q6IFtwYXRjaF0gRml4IHdhdGNocG9pbnQtYXQtZXBpbG9ndWUgNy4wIHJlZ3Jlc3Npb24g KHMzOTB4KQotCi1IaSwKLQotYXR0YWNoZWQgdGVzdGNhc2UgcmVncmVzc2VkIDYuOC0+Ny4wIG9u IHNvbWUgczM5MHggc3lzdGVtcy4KLQotQXQgdGhlIG1vbWVudCBQQyBpcyBhdCBlcGlsb2d1ZSAo YWZ0ZXIgZnJhbWUgcG9pbnRlciBnb3QgZGVzdHJveWVkIGFuZCBQQyBpcwotc3RpbGwgaW4gdGhl IGNhbGxlZWQgZnVuY3Rpb24pIHdlIG11c3Qgbm90IHRyeSBhbnkgdW53aW5kaW5nIGFzIGl0IGNh biB0cnkgdG8KLXVud2luZCBhIGdhcmJhZ2UuCi0KLUNvcnJlY3Qgd2F5IHdvdWxkIGJlIHRvIGlt cGxlbWVudCBlcGlsb2d1ZSB1bndpbmRlciAoc3VjaCBhcwotYW1kNjRfZXBpbG9ndWVfZnJhbWVf dW53aW5kIG9yIGkzODZfZXBpbG9ndWVfZnJhbWVfdW53aW5kIG9uZXMpIGJ1dCBpdCB3b3VsZAot bm90IGJlIHNvIGVhc3kgb24gczM5MHggYXMgaXQgd291bGQgbmVlZCBmdWxsIHByb2xvZ3VlLWFu YWx5emVyOiBBZnRlciBTUCBnZXRzCi1yZXN0b3JlZCB0aGVyZSBjYW4gYmUgdmFyaW91cyBpbnN0 cnVjdGlvbnMgYmVmb3JlIHRoZSBsYXN0IGp1bXAgLSBHREIgbmVlZHMgdG8KLWludGVycHJldCB0 aGUganVtcCB0byBmaW5kIHRoZSByZWdpc3RlciB2YWx1ZSB3aGVyZSBpdCBpcyBnb2luZyB0byBq dW1wIHRvLgotMDAwMDAwNDgyNzlhYTA5YyA8cm91bmRfYW5kX3JldHVybj46Ci1bLi4uXQotICA0 ODI3OWFhMWI4OiBlYiA2ZiBmMCBkMCAwMCAwNCBsbWcgICVyNiwlcjE1LDIwOCglcjE1KQotICA0 ODI3OWFhMWJlOiA1MCAzMiAxMCAwMCAgICAgICBzdCAgICVyMywwKCVyMiwlcjEpCSMgU1AgKCVy MTUpIGlzIGdvbmUgaG9uZQotICA0ODI3OWFhMWMyOiBiMyA3NCAwMCAwMCAgICAgICBsemVyICVy MAotICA0ODI3OWFhMWM2OiAwNyBmNCAgICAgICAgICAgICBiciAgICVyNAkJIyAlcjQgaXMgdGhl IHRhcmdldAotWy4uLl0KLQotSnVzdCBhbiBlYXN5IGZpeCBpcyB0byBiZSBtb3JlIGNhcmVmdWwg YW5kIGRvIG5vdCB0cnkgYW55IHVud2luZGluZyBpZiB3ZSBmaW5kCi1QQyBpcyBpbiB0aGUgZXBp bG9ndWUgKHByZXZpb3VzIGluc3RydWN0aW9uIG1vZGlmaWVzIFNQPSVyMTUpLgotCi1JdCBpcyBl dmVuIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIGFuZCBJIHNlZSBubyByZWdyZXNzaW9uIHJp c2sgdGhlcmUuCi0KLVRoZSBzcGVjaWZpYyBzMzkweCBlcnJvciBpczoKLSMwICB0aHJvd19lcnJv ciAoZXJyb3I9TUVNT1JZX0VSUk9SLCBmbXQ9MHg4MDQyNjc2YSAiQ2Fubm90IGFjY2VzcyBtZW1v cnkgYXQgYWRkcmVzcyAlcyIpIGF0IGV4Y2VwdGlvbnMuYzo0MTUKLSMxICBpbiBtZW1vcnlfZXJy b3IgKHN0YXR1cz01LCBtZW1hZGRyPTApIGF0IGNvcmVmaWxlLmM6MjIwCi0jMiAgaW4gcmVhZF9t ZW1vcnkgKG1lbWFkZHI9MCwgbXlhZGRyPTB4M2ZmZmZjN2Y3ZjAgIiIsIGxlbj04KSBhdCBjb3Jl ZmlsZS5jOjIzOAotIzMgIGluIHJlYWRfbWVtb3J5X3Vuc2lnbmVkX2ludGVnZXIgKG1lbWFkZHI9 MCwgbGVuPTgsIGJ5dGVfb3JkZXI9QkZEX0VORElBTl9CSUcpIGF0IGNvcmVmaWxlLmM6MzIxCi0j NCAgaW4gczM5MF9iYWNrY2hhaW5fZnJhbWVfdW53aW5kX2NhY2hlICh0aGlzX2ZyYW1lPTB4ODA2 MDg5NTgsIGluZm89MHg4MDYwOGEwOCkgYXQgczM5MC10ZGVwLmM6MTUyNQotIzUgIGluIHMzOTBf ZnJhbWVfdW53aW5kX2NhY2hlICh0aGlzX2ZyYW1lPTB4ODA2MDg5NTgsIHRoaXNfcHJvbG9ndWVf Y2FjaGU9MHg4MDYwODk3MCkgYXQgczM5MC10ZGVwLmM6MTU3MgotIzYgIGluIHMzOTBfZnJhbWVf dGhpc19pZCAodGhpc19mcmFtZT0weDgwNjA4OTU4LCB0aGlzX3Byb2xvZ3VlX2NhY2hlPTB4ODA2 MDg5NzAsIHRoaXNfaWQ9MHg4MDYwODliOCkgYXQgczM5MC10ZGVwLmM6MTU4MwotIzcgIGluIGdl dF9mcmFtZV9pZCAoZmk9MHg4MDYwODk1OCkgYXQgZnJhbWUuYzozMzUKLSM4ICBpbiBmcmFtZV9m aW5kX2J5X2lkIChpZD17c3RhY2tfYWRkciA9IDQzOTgwNDQ4MjQ5NTIsIGNvZGVfYWRkciA9IDIx NDc0ODQ5NTIsIHNwZWNpYWxfYWRkciA9IDAsIHN0YWNrX2FkZHJfcCA9IDEsIGNvZGVfYWRkcl9w ID0gMSwgc3BlY2lhbF9hZGRyX3AgPSAwLCBpbmxpbmVfZGVwdGggPSAwfSkgYXQgZnJhbWUuYzo1 ODcgCi0jOSAgaW4gd2F0Y2hwb2ludF9jaGVjayAocD0weDgwOTViYmMwKSBhdCBicmVha3BvaW50 LmM6MzIwMwotIzEwIGluIGNhdGNoX2Vycm9ycyAoZnVuYz0weDgwMTI2MmMwIDx3YXRjaHBvaW50 X2NoZWNrPiwgZnVuY19hcmdzPTB4ODA5NWJiYzAsIGVycnN0cmluZz0weDgwYTI2NDEwICJFcnJv ciBldmFsdWF0aW5nIGV4cHJlc3Npb24gZm9yIHdhdGNocG9pbnQgM1xuIiwgbWFzaz02KSBhdCBl eGNlcHRpb25zLmM6NTEwCi0jMTEgaW4gYnBzdGF0X2NoZWNrX3dhdGNocG9pbnQgKGJzPTB4ODA5 NWJiYzApIGF0IGJyZWFrcG9pbnQuYzozNDA0Ci0jMTIgaW4gYnBzdGF0X3N0b3Bfc3RhdHVzIChh c3BhY2U9MHg4MDYxZmNiMCwgYnBfYWRkcj0yMTQ3NDg1MDQwLCBwdGlkPXtwaWQgPSAxNzM3Miwg bHdwID0gMTczNzIsIHRpZCA9IDB9KSBhdCBicmVha3BvaW50LmM6MzU5NAotIzEzIGluIGhhbmRs ZV9pbmZlcmlvcl9ldmVudCAoZWNzPTB4M2ZmZmZjODA1MjApIGF0IGluZnJ1bi5jOjM1ODgKLQot SSBkaWQgbm90IGFuYWx5emUgd2h5IDYuOCBkaWQgbm90IGVycm9yIG91dCwgdGhlIEdEQiBjb2Rl IGlzIHNpbWlsYXIgdGhlcmUuCi0KLU5vIHJlZ3Jlc3Npb25zIG9uOgote3g4Nl82NCx4ODZfNjQt bTMyLGk2ODZ9LWZlZG9yYTEyLWxpbnV4LWdudSAoQ1ZTIEhFQUQgR0RCKQotczM5MHgtcmhlbDQ4 LWxpbnV4LWdudSAoQ1ZTIEhFQUQgR0RCKQotczM5MC1yaGVsNDgtbGludXgtZ251IChDVlMgSEVB RCBHREIpCi1zMzkweC1yaGVsNTQtbGludXgtZ251IChGZWRvcmEgMTIgR0RCKQotczM5MC1yaGVs NTQtbGludXgtZ251IChGZWRvcmEgMTIgR0RCKQotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8K LTIwMDktMTItMjUgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LQotCSogYnJlYWtwb2ludC5jICh3YXRjaHBvaW50X2NoZWNrKTogQ2hlY2sgdGhlIGNhbGwKLQln ZGJhcmNoX2luX2Z1bmN0aW9uX2VwaWxvZ3VlX3AgYmVmb3JlIGNhbGxpbmcgZnJhbWVfZmluZF9i eV9pZC4KLQlFeHRlbmQgdGhlIGNvbW1lbnQuCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDA5LTEyLTI1 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi5i YXNlL3dhdGNocG9pbnQtY29uZC1nb25lLmV4cCwgZ2RiLmJhc2Uvd2F0Y2hwb2ludC1jb25kLWdv bmUuYywKLQlnZGIuYmFzZS93YXRjaHBvaW50LWNvbmQtZ29uZS1zdHJpcHBlZC5jOiBOZXcuCi0K LS0tLSBhL2dkYi9icmVha3BvaW50LmMKLSsrKyBiL2dkYi9icmVha3BvaW50LmMKLUBAIC0zMjAw LDYgKzMyMDAsMTcgQEAgd2F0Y2hwb2ludF9jaGVjayAodm9pZCAqcCkKLSAgICAgICBzdHJ1Y3Qg Z2RiYXJjaCAqZnJhbWVfYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7Ci0gICAgICAgQ09S RV9BRERSIGZyYW1lX3BjID0gZ2V0X2ZyYW1lX3BjIChmcmFtZSk7Ci0gCi0rICAgICAgLyogaW5f ZnVuY3Rpb25fZXBpbG9ndWVfcCgpIHJldHVybnMgYSBub24temVybyB2YWx1ZSBpZiB3ZSdyZSBz dGlsbAotKwkgaW4gdGhlIGZ1bmN0aW9uIGJ1dCB0aGUgc3RhY2sgZnJhbWUgaGFzIGFscmVhZHkg YmVlbiBpbnZhbGlkYXRlZC4KLSsJIFNpbmNlIHdlIGNhbid0IHJlbHkgb24gdGhlIHZhbHVlcyBv ZiBsb2NhbCB2YXJpYWJsZXMgYWZ0ZXIgdGhlCi0rCSBzdGFjayBoYXMgYmVlbiBkZXN0cm95ZWQs IHdlIGFyZSB0cmVhdGluZyB0aGUgd2F0Y2hwb2ludCBpbiB0aGF0Ci0rCSBzdGF0ZSBhcyBgbm90 IGNoYW5nZWQnIHdpdGhvdXQgZnVydGhlciBjaGVja2luZy4gIERvbid0IG1hcmsKLSsJIHdhdGNo cG9pbnRzIGFzIGNoYW5nZWQgaWYgdGhlIGN1cnJlbnQgZnJhbWUgaXMgaW4gYW4gZXBpbG9ndWUg LQotKwkgZXZlbiBpZiB0aGV5IGFyZSBpbiBzb21lIG90aGVyIGZyYW1lLCBvdXIgdmlldyBvZiB0 aGUgc3RhY2sKLSsJIGlzIGxpa2VseSB0byBiZSB3cm9uZyBhbmQgZnJhbWVfZmluZF9ieV9pZCBj b3VsZCBlcnJvciBvdXQuICAqLwotKyAgICAgIGlmIChnZGJhcmNoX2luX2Z1bmN0aW9uX2VwaWxv Z3VlX3AgKGZyYW1lX2FyY2gsIGZyYW1lX3BjKSkKLSsJcmV0dXJuIFdQX1ZBTFVFX05PVF9DSEFO R0VEOwotKwotICAgICAgIGZyID0gZnJhbWVfZmluZF9ieV9pZCAoYi0+d2F0Y2hwb2ludF9mcmFt ZSk7Ci0gICAgICAgd2l0aGluX2N1cnJlbnRfc2NvcGUgPSAoZnIgIT0gTlVMTCk7Ci0gCi1AQCAt MzIxNiwxNyArMzIyNyw2IEBAIHdhdGNocG9pbnRfY2hlY2sgKHZvaWQgKnApCi0gCSAgICB3aXRo aW5fY3VycmVudF9zY29wZSA9IDA7Ci0gCX0KLSAKLS0gICAgICAvKiBpbl9mdW5jdGlvbl9lcGls b2d1ZV9wKCkgcmV0dXJucyBhIG5vbi16ZXJvIHZhbHVlIGlmIHdlJ3JlIHN0aWxsCi0tCSBpbiB0 aGUgZnVuY3Rpb24gYnV0IHRoZSBzdGFjayBmcmFtZSBoYXMgYWxyZWFkeSBiZWVuIGludmFsaWRh dGVkLgotLQkgU2luY2Ugd2UgY2FuJ3QgcmVseSBvbiB0aGUgdmFsdWVzIG9mIGxvY2FsIHZhcmlh YmxlcyBhZnRlciB0aGUKLS0JIHN0YWNrIGhhcyBiZWVuIGRlc3Ryb3llZCwgd2UgYXJlIHRyZWF0 aW5nIHRoZSB3YXRjaHBvaW50IGluIHRoYXQKLS0JIHN0YXRlIGFzIGBub3QgY2hhbmdlZCcgd2l0 aG91dCBmdXJ0aGVyIGNoZWNraW5nLiAgRG9uJ3QgbWFyawotLQkgd2F0Y2hwb2ludHMgYXMgY2hh bmdlZCBpZiB0aGUgY3VycmVudCBmcmFtZSBpcyBpbiBhbiBlcGlsb2d1ZSAtCi0tCSBldmVuIGlm IHRoZXkgYXJlIGluIHNvbWUgb3RoZXIgZnJhbWUsIG91ciB2aWV3IG9mIHRoZSBzdGFjawotLQkg aXMgbGlrZWx5IHRvIGJlIHdyb25nLiAgKi8KLS0gICAgICBpZiAoZ2RiYXJjaF9pbl9mdW5jdGlv bl9lcGlsb2d1ZV9wIChmcmFtZV9hcmNoLCBmcmFtZV9wYykpCi0tCXJldHVybiBXUF9WQUxVRV9O T1RfQ0hBTkdFRDsKLS0KLSAgICAgICBpZiAod2l0aGluX2N1cnJlbnRfc2NvcGUpCi0gCS8qIElm IHdlIGVuZCB1cCBzdG9wcGluZywgdGhlIGN1cnJlbnQgZnJhbWUgd2lsbCBnZXQgc2VsZWN0ZWQK LSAJICAgaW4gbm9ybWFsX3N0b3AuICBTbyB0aGlzIGNhbGwgdG8gc2VsZWN0X2ZyYW1lIHdvbid0 IGFmZmVjdAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRj aHBvaW50LWNvbmQtZ29uZS1zdHJpcHBlZC5jCi1AQCAtMCwwICsxLDIzIEBACi0rLyogVGhpcyB0 ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmln aHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIAotKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBT dWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAqLwotKwotK3ZvaWQKLStqdW1w ZXIgKHZvaWQgKCpqdW1wdG8pICh2b2lkKSkKLSt7Ci0rICAoKmp1bXB0bykgKCk7Ci0rfQotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWNvbmQt Z29uZS5jCi1AQCAtMCwwICsxLDM3IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdE QiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwot KyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIAotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBG b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg MDIxMTEtMTMwNywgVVNBLiAqLwotKwotK2V4dGVybiB2b2lkIGp1bXBlciAodm9pZCAoKmp1bXB0 bykgKHZvaWQpKTsKLSsKLStzdGF0aWMgdm9pZAotK2Z1bmMgKHZvaWQpCi0rewotKyAgdm9sYXRp bGUgaW50IGM7Ci0rCi0rICBjID0gNTsKLSsgIGMgPSAxMDsJLyogd2F0Y2hwb2ludC1oZXJlICov Ci0rICBjID0gMjA7Ci0rfQotKwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAganVtcGVyIChm dW5jKTsKLSsKLSsgIHJldHVybiAwOwotK30KLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1jb25kLWdvbmUuZXhwCi1AQCAtMCwwICsxLDUxIEBA Ci0rIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0r IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAt IFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rc2V0IHRlc3RmaWxl ICJ3YXRjaHBvaW50LWNvbmQtZ29uZSIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0 IHNyY2ZpbGVzdHJpcHBlZCAke3Rlc3RmaWxlfS1zdHJpcHBlZC5jCi0rc2V0IG9iamZpbGVzdHJp cHBlZCAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LXN0cmlwcGVkLm8KLStzZXQgYmlu ZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0rIyBXZSBuZWVkIHRvIGdl bmVyYXRlIGEgZnVuY3Rpb24gd2l0aG91dCBEV0FSRiB0byBjcmFzaCBvbGRlciBHREIuCi0rIyBT dGVwcGluZyBpbnRvIGEgZHluYW1pYyBmdW5jdGlvbiB0cmFtcG9saW5lIG9yIHN0ZXBwaW5nIG91 dCBvZiBNQUlOIG1heSB3b3JrCi0rIyBidXQgaXQgaXMgbm90IGEgcmVsaWFibGUgRkFJTCBjYXNl LgotKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGVz dHJpcHBlZH0iICIke29iamZpbGVzdHJpcHBlZH0iIG9iamVjdCB7fV0gIT0gIiIKLSsgICAgICB8 fCBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSAke29iamZpbGVz dHJpcHBlZH0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0gewotKyAg ICBnZGJfc3VwcHJlc3NfZW50aXJlX2ZpbGUgIlRlc3RjYXNlIGNvbXBpbGUgZmFpbGVkLCBzbyBh bGwgdGVzdHMgaW4gdGhpcyBmaWxlIHdpbGwgYXV0b21hdGljYWxseSBmYWlsLiIKLSt9Ci0rCi0r Y2xlYW5fcmVzdGFydCAke3Rlc3RmaWxlfQotKwotKyMgUHJvYmxlbSBkb2VzIG5vdCBvY2N1ciBv dGhlcndpc2UuCi0rZ2RiX3Rlc3QgInNldCBjYW4tdXNlLWh3LXdhdGNocG9pbnRzIDAiCi0rCi0r aWYgIVtydW50b19tYWluXSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAid2F0Y2hwb2ludC1oZXJlIl0KLStnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAiUGxhY2UgdG8gc2V0IHRoZSB3YXRjaHBvaW50IgotKwotKyMgVGhlIGNv bmRpdGlvbiBgYyA9PSAzMCcgaXMgdGhlIHN1YmplY3QgYmVpbmcgdGVzdGVkLgotK2dkYl90ZXN0 ICJ3YXRjaCBjIGlmIGMgPT0gMzAiICIiICJQbGFjZSB0aGUgd2F0Y2hwb2ludCIKLSsKLSsjIFdl IG1heSBzdGF5IGVpdGhlciBpbiB0aGUgZnVuY3Rpb24gaXRzZWxmIG9yIG9ubHkgYXQgdGhlIGZp cnN0IGluc3RydWN0aW9uIG9mCi0rIyBpdHMgY2FsbGVyIGRlcGVuZGluZyBvbiB0aGUgZXBpbG9n dWUgdW53aW5kZXIgKG9yIHZhbGlkIGVwaWxvZ3VlIENGSSkgcHJlc2VuY2UuCi0rZ2RiX3Rlc3Qg ImZpbmlzaCIgXAotKwkgIldhdGNocG9pbnQgLiogZGVsZXRlZCBiZWNhdXNlIHRoZSBwcm9ncmFt IGhhcyBsZWZ0IHRoZSBibG9jayBpbi4qd2hpY2ggaXRzIGV4cHJlc3Npb24gaXMgdmFsaWQuLipp biAoanVtcGVyfGZ1bmMpLioiIFwKLSsJICJDYXRjaCB0aGUgbm8gbG9uZ2VyIHZhbGlkIHdhdGNo cG9pbnQiCi0KCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDNkNTlmY2Qu LjIyOGQ0ODQgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0zMiwxMSAr MzIsMTEgQEAgTmFtZTogZ2RiJXs/X3dpdGhfZGVidWc6LWRlYnVnfQogIyBTZXQgdmVyc2lvbiB0 byBjb250ZW50cyBvZiBnZGIvdmVyc2lvbi5pbi4KICMgTk9URTogdGhlIEZTRiBnZGIgdmVyc2lv bnMgYXJlIG51bWJlcmVkIE4uTSBmb3Igb2ZmaWNpYWwgcmVsZWFzZXMsIGxpa2UgNi4zCiAjIGFu ZCwgc2luY2UgSmFudWFyeSAyMDA1LCBYLlkuWi5kYXRlIGZvciBkYWlseSBzbmFwc2hvdHMsIGxp a2UgNi4zLjUwLjIwMDUwMTEyICMgKGRhaWx5IHNuYXBzaG90IGZyb20gbWFpbGluZSksIG9yIDYu My4wLjIwMDQwMTEyIChoZWFkIG9mIHRoZSByZWxlYXNlIGJyYW5jaCkuCi1WZXJzaW9uOiA3LjAu NTAuMjAxMDAxMTgKK1ZlcnNpb246IDcuMC41MC4yMDEwMDEyMQogCiAjIFRoZSByZWxlYXNlIGFs d2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgog IyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRl cGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDIlez9fd2l0 aF91cHN0cmVhbToudXBzdHJlYW19JXtkaXN0fQorUmVsZWFzZTogMSV7P193aXRoX3Vwc3RyZWFt Oi51cHN0cmVhbX0le2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKwogR3JvdXA6IERldmVsb3BtZW50 L0RlYnVnZ2VycwpAQCAtMzIyLDkgKzMyMiw2IEBAIFBhdGNoMzA5OiBnZGItNi4zLW1hcHBpbmct emVyby1pbm9kZS10ZXN0LnBhdGNoCiAjIFRlc3QgYSBjcmFzaCBvbiBgZm9jdXMgY21kJywgYGZv Y3VzIHByZXYnIGNvbW1hbmRzLgogUGF0Y2gzMTE6IGdkYi02LjMtZm9jdXMtY21kLXByZXYtdGVz dC5wYXRjaAogCi0jIEZpeCBlcnJvciBvbiBhIHN3IHdhdGNocG9pbnQgYWN0aXZlIGF0IGZ1bmN0 aW9uIGVwaWxvZ3VlIChoaXQgb24gczM5MHgpLgotUGF0Y2gzMTQ6IGdkYi13YXRjaHBvaW50LWNv bmQtZ29uZS5wYXRjaAotCiAjIFRlc3QgdmFyaW91cyBmb3JtcyBvZiB0aHJlYWRzIHRyYWNraW5n IGFjcm9zcyBleGVjKCkgKEJaIDQ0Mjc2NSkuCiBQYXRjaDMxNTogZ2RiLTYuOC1iejQ0Mjc2NS10 aHJlYWRlZC1leGVjLXRlc3QucGF0Y2gKIApAQCAtNDAzLDkgKzQwMCw2IEBAIFBhdGNoMzkzOiBn ZGItcmhlbDUtZ2NjNDQucGF0Y2gKICMgV29ya2Fyb3VuZCBSSEVMLTUga2VybmVscyBmb3IgZGV0 YWNoaW5nIFNJR1NUT1BwZWQgcHJvY2Vzc2VzIChCWiA0OTg1OTUpLgogUGF0Y2gzMzU6IGdkYi1y aGVsNS1jb21wYXQucGF0Y2gKIAotIyBGaXggYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIEcr KyA0LjEgbmFtZXNwYWNlcyAiOjoiLgotUGF0Y2gzOTU6IGdkYi1lbXB0eS1uYW1lc3BhY2UucGF0 Y2gKLQogIyBGaXggcmVncmVzc2lvbiBieSBweXRob24gb24gaWE2NCBkdWUgdG8gc3RhbGUgY3Vy cmVudCBmcmFtZS4KIFBhdGNoMzk3OiBnZGItZm9sbG93LWNoaWxkLXN0YWxlLXBhcmVudC5wYXRj aAogCkBAIC00MjgsOCArNDIyLDExIEBAIFBhdGNoNDA3OiBnZGItbGluZW5vLW1ha2V1cC10ZXN0 LnBhdGNoCiAjIFRlc3QgcG93ZXI3IHBwYyBkaXNhc3NlbWJseS4KIFBhdGNoNDA4OiBnZGItcHBj LXBvd2VyNy10ZXN0LnBhdGNoCiAKLSMgW3BhdGNoXSB0ZXN0c3VpdGU6IEZpeCBtaXNwbGFjZWQg bGluZSBudW1iZXJzCi1QYXRjaDQxMDogZ2RiLXRlc3RzdWl0ZS1saW5lbm8ucGF0Y2gKKyMgRml4 IHNvbGliLWRpc3BsYXkuZXhwIGNyYXNoCitQYXRjaDQxMTogZ2RiLXNvbGliLWRpc3BsYXkucGF0 Y2gKKworIyBSZXZlcnQ6IEFkZCAtV3VudXNlZC1mdW5jdGlvbiB0byBjb21waWxlIGZsYWdzLgor UGF0Y2g0MTI6IGdkYi11bnVzZWQtcmV2ZXJ0LnBhdGNoCiAKIEJ1aWxkUmVxdWlyZXM6IG5jdXJz ZXMtZGV2ZWwlez9faXNhfSB0ZXhpbmZvIGdldHRleHQgZmxleCBiaXNvbiBleHBhdC1kZXZlbCV7 P19pc2F9CiBSZXF1aXJlczogcmVhZGxpbmUlez9faXNhfQpAQCAtNjQxLDcgKzYzOCw2IEBAIHJt IC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMK ICVwYXRjaDMwNCAtcDEKICVwYXRjaDMwOSAtcDEKICVwYXRjaDMxMSAtcDEKLSVwYXRjaDMxNCAt cDEKICVwYXRjaDMxNSAtcDEKICVwYXRjaDMxNyAtcDEKICVwYXRjaDMxOCAtcDEKQEAgLTY2NSw3 ICs2NjEsNiBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5j IGdkYi9wLWV4cC5jCiAlcGF0Y2gzOTAgLXAxCiAlcGF0Y2gzOTEgLXAxCiAlcGF0Y2gzOTIgLXAx Ci0lcGF0Y2gzOTUgLXAxCiAlcGF0Y2gzOTcgLXAxCiAlcGF0Y2g0MDAgLXAxCiAlcGF0Y2g0MDMg LXAxCkBAIC02NzYsNyArNjcxLDggQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBn ZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoNDA2IC1wMQogJXBhdGNoNDA3IC1wMQog JXBhdGNoNDA4IC1wMQotJXBhdGNoNDEwIC1wMQorJXBhdGNoNDExIC1wMQorJXBhdGNoNDEyIC1w MQogIyBBbHdheXMgdmVyaWZ5IGl0cyBhcHBsaWNhYmlsaXR5LgogJXBhdGNoMzkzIC1wMQogJXBh dGNoMzM1IC1wMQpAQCAtMTAwMiw2ICs5OTgsMTEgQEAgZmkKICVlbmRpZgogCiAlY2hhbmdlbG9n CisqIFRodSBKYW4gMjEgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4gLSA3LjAuNTAuMjAxMDAxMjEtMS5mYzEzCistIFVwZ3JhZGUgdG8gdGhlIEZTRiBHREIg c25hcHNob3Q6IDcuMC41MC4yMDEwMDEyMQorLSBhcmNoZXItamFua3JhdG9jaHZpbC1mZWRvcmEx MyBjb21taXQ6IGNjZGUxNTMwNDc5Y2M5NjYzNzQzNTEwMzgwNTdiOWRkYTkwYWEyNTEKKy0gW2V4 cHItY3VtdWxhdGl2ZV0gQXJjaGVyIGJyYW5jaCBpcyBub3cgaW5jbHVkZWQuCisKICogVHVlIEph biAxOSAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcu MC41MC4yMDEwMDExOC0yLmZjMTMKIC0gRml4IGZhbHNlIFBBU1MtPkZBSUwgb2YgZ2RiLmFyY2gv aTM4Ni1iaWFyY2gtY29yZS5leHAuCiAKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwpp bmRleCAyMjIxNzYxLi43ZmE2YTQ0IDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMK QEAgLTEsMiArMSwyIEBACi0yZmIxYTJhYzc4YjNiZGM0OTViYmFiZDg1ZTMxMGE1ZCAgZ2RiLTcu MC41MC4yMDEwMDExOC50YXIuYnoyCitmY2ZiZTZjY2IzNmQ4NmJjMDY4OTFmYmQ3MGYxNjY0ZCAg Z2RiLTcuMC41MC4yMDEwMDEyMS50YXIuYnoyCiAwNGU1YzRiMWI5ZTYzMzQyMmNjNDg5OTBmZTYx OTU4ZCAgbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIK