From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: - iFort compat. - case insensitive DWARF not in lowercase (BZ 645773). Date: Thu, 23 Jul 2026 18:29:34 GMT Message-ID: <178483137454.1.18046615930951787513.rpms-gdb-1bcf9b660433@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 1bcf9b66043337ff64ba1a7a093256dc5682ff09 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogMWJjZjliNjYwNDMzMzdmZjY0YmExYTdhMDkzMjU2ZGM1 NjgyZmYwOQpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KRGF0ZSAgIDogMjAxMC0xMS0xNlQwNTo1NDoxOCswMTowMApTdGF0cyAgOiArNjkzNS8tNDE5 IGluIDQxIGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBt cy9nZGIvYy8xYmNmOWI2NjA0MzMzN2ZmNjRiYTFhN2EwOTMyNTZkYzU2ODJmZjA5P2JyYW5jaD1m aXgtZHVwLXBhdGNoCgpMb2c6Ci0gaUZvcnQgY29tcGF0LiAtIGNhc2UgaW5zZW5zaXRpdmUgRFdB UkYgbm90IGluIGxvd2VyY2FzZSAoQlogNjQ1NzczKS4KCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGln bm9yZSBiLy5naXRpZ25vcmUKaW5kZXggNGIwZTRiNC4uODE4YjFlNiAxMDA2NDQKLS0tIGEvLmdp dGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0xICsxIEBACi1nZGItNy4xLjkwLjIwMTAwNzIx LnRhci5iejIKK2dkYi03LjIudGFyLmJ6MgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtZ3N0YWNrLTIw MDUwNDExLnBhdGNoIGIvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKaW5kZXggMTAwYjg3 Ny4uMmQ5OTQyOCAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKKysr IGIvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKQEAgLTQsMTAgKzQsMTEgQEAKIAl0byBp bnN0YWxsIGFuZCB1bmluc3RhbGwuCiAJKiBnc3RhY2suc2gsIGdzdGFjay4xOiBOZXcgZmlsZXMu CiAKLWRpZmYgLXVwIC1ydU5wIGdkYi03LjAuMS1lbXB0eS9nZGIvTWFrZWZpbGUuaW4gZ2RiLTcu MC4xL2dkYi9NYWtlZmlsZS5pbgotLS0tIGdkYi03LjAuMS1lbXB0eS9nZGIvTWFrZWZpbGUuaW4J MjAxMC0wNC0wNyAyMDozNjowNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4wLjEvZ2RiL01h a2VmaWxlLmluCTIwMTAtMDQtMDcgMjA6MzY6NDIuMDAwMDAwMDAwICswMjAwCi1AQCAtOTg5LDcg Kzk4OSw3IEBAIGluc3RhbGw6IGFsbCBpbnN0YWxsLW9ubHkgCitJbmRleDogZ2RiLTcuMi9nZGIv TWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4yLm9yaWcvZ2RiL01ha2VmaWxlLmlu CTIwMTAtMDktMDMgMDk6Mzc6NTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvTWFr ZWZpbGUuaW4JMjAxMC0wOS0wMyAwOTozODo0NS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMDEwLDcg KzEwMTAsNyBAQCBpbnN0YWxsOiBhbGwgaW5zdGFsbC1vbmx5IAogIAogICMgVGhlICJpbnN0YWxs LW9ubHkiIHRhcmdldCBhbHNvIGluc3RhbGxzIHRoZSBzeXNjYWxscycgWE1MIGZpbGVzIGluCiAg IyB0aGUgc3lzdGVtLgpAQCAtMTYsMTAgKzE3LDExIEBAIGRpZmYgLXVwIC1ydU5wIGdkYi03LjAu MS1lbXB0eS9nZGIvTWFrZWZpbGUuaW4gZ2RiLTcuMC4xL2dkYi9NYWtlZmlsZS5pbgogIAl0cmFu c2Zvcm1lZF9uYW1lPWB0PSckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJzsgXAogIAkJCSAgZWNo byBnZGIgfCBzZWQgLWUgIiQkdCJgIDsgXAogIAkJaWYgdGVzdCAieCQkdHJhbnNmb3JtZWRfbmFt ZSIgPSB4OyB0aGVuIFwKLUBAIC0xMDIxLDkgKzEwMjEsMjYgQEAgaW5zdGFsbC10dWk6Ci0gCQkJ JChERVNURElSKSQobWFuMWRpcikgOyBcCi0gCQkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL2dk Yi4xIFwKLSAJCQkkKERFU1RESVIpJChtYW4xZGlyKS8kJHRyYW5zZm9ybWVkX25hbWUuMQorQEAg LTEwNDYsNyArMTA0NiwyNSBAQCBpbnN0YWxsLXR1aToKKyBpbnN0YWxsLXB5dGhvbjoKKyAJJChT SEVMTCkgJChzcmNkaXIpLy4uL21raW5zdGFsbGRpcnMgJChERVNURElSKSQoR0RCX0RBVEFESVIp L3B5dGhvbi9nZGIKKyAKKy11bmluc3RhbGw6IGZvcmNlICQoQ09ORklHX1VOSU5TVEFMTCkKICtH U1RBQ0s9Z3N0YWNrCiArLlBIT05ZOiBpbnN0YWxsLWdzdGFjawogK2luc3RhbGwtZ3N0YWNrOgpA QCAtMzcsMTQgKzM5LDEyIEBAIGRpZmYgLXVwIC1ydU5wIGdkYi03LjAuMS1lbXB0eS9nZGIvTWFr ZWZpbGUuaW4gZ2RiLTcuMC4xL2dkYi9NYWtlZmlsZS5pbgogKwkJCSQoREVTVERJUikkKG1hbjFk aXIpIDsgXAogKwkJOiAkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL2dzdGFjay4xIFwKICsJCQkk KERFU1RESVIpJChtYW4xZGlyKS8kJHRyYW5zZm9ybWVkX25hbWUuMQotIAotIAotLXVuaW5zdGFs bDogZm9yY2UgJChDT05GSUdfVU5JTlNUQUxMKQorKwogK3VuaW5zdGFsbDogZm9yY2UgdW5pbnN0 YWxsLWdzdGFjayAkKENPTkZJR19VTklOU1RBTEwpCiAgCXRyYW5zZm9ybWVkX25hbWU9YHQ9JyQo cHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknOyBcCiAgCQkJICBlY2hvIGdkYiB8IHNlZCAtZSAkJHRg IDsgXAogIAkJaWYgdGVzdCAieCQkdHJhbnNmb3JtZWRfbmFtZSIgPSB4OyB0aGVuIFwKLUBAIC0x MDQ1LDYgKzEwNjIsMTcgQEAgdW5pbnN0YWxsLXR1aToKK0BAIC0xMDY4LDYgKzEwODYsMTcgQEAg dW5pbnN0YWxsLXR1aToKICAJCWZpIDsgXAogIAkJcm0gLWYgJChERVNURElSKSQoYmluZGlyKS8k JHRyYW5zZm9ybWVkX25hbWUkKEVYRUVYVCkgXAogIAkJICAgICAgJChERVNURElSKSQobWFuMWRp cikvJCR0cmFuc2Zvcm1lZF9uYW1lLjEKQEAgLTYyLDkgKzYyLDEwIEBAIGRpZmYgLXVwIC1ydU5w IGdkYi03LjAuMS1lbXB0eS9nZGIvTWFrZWZpbGUuaW4gZ2RiLTcuMC4xL2dkYi9NYWtlZmlsZS5p bgogIAogICMgVGhlIEMrKyBuYW1lIHBhcnNlciBjYW4gYmUgYnVpbHQgc3RhbmRhbG9uZSBmb3Ig dGVzdGluZy4KICB0ZXN0LWNwLW5hbWUtcGFyc2VyLm86IGNwLW5hbWUtcGFyc2VyLmMKLWRpZmYg LXVwIC1ydU5wIGdkYi03LjAuMS1lbXB0eS9nZGIvZ3N0YWNrLnNoIGdkYi03LjAuMS9nZGIvZ3N0 YWNrLnNoCi0tLS0gZ2RiLTcuMC4xLWVtcHR5L2dkYi9nc3RhY2suc2gJMTk3MC0wMS0wMSAwMTow MDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjEvZ2RiL2dzdGFjay5zaAkyMDEwLTA0 LTA3IDIwOjM2OjQ3LjAwMDAwMDAwMCArMDIwMAorSW5kZXg6IGdkYi03LjIvZ2RiL2dzdGFjay5z aAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAorKysrIGdkYi03LjIvZ2RiL2dzdGFjay5zaAkyMDEwLTA5LTAzIDA5OjM4OjEyLjAw MDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSw0OCBAQAogKyMhL2Jpbi9zaAogKwpAQCAtMTE0LDgg KzExNSwxMCBAQCBkaWZmIC11cCAtcnVOcCBnZGItNy4wLjEtZW1wdHkvZ2RiL2dzdGFjay5zaCBn ZGItNy4wLjEvZ2RiL2dzdGFjay5zaAogKyAgICAtZSAncy9eXCgoZ2RiKSBcKSovLycgXAogKyAg ICAtZSAnL14jL3AnIFwKICsgICAgLWUgJy9eVGhyZWFkL3AnCi0tLS0gL2Rldi9udWxsCTIwMTAt MDQtMDcgMDY6MjA6NTIuMjg5OTk0NTA4ICswMjAwCi0rKysgZ2RiLTcuMC4xL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZ3N0YWNrLmV4cAkyMDEwLTA0LTA3IDIxOjUzOjU3LjAwMDAwMDAwMCArMDIw MAorSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nc3RhY2suZXhwCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw CisrKysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dzdGFjay5leHAJMjAxMC0wOS0w MyAwOTozODoxMi4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNzEgQEAKICsjIENvcHlyaWdo dCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTE4OCw4ICsx OTEsMTAgQEAgZGlmZiAtdXAgLXJ1TnAgZ2RiLTcuMC4xLWVtcHR5L2dkYi9nc3RhY2suc2ggZ2Ri LTcuMC4xL2dkYi9nc3RhY2suc2gKICtnZGJfZXhpdAogKwogK3JlbW90ZV9leGVjIGhvc3QgImtp bGwgLTkgJHBpZCIKLS0tLSAvZGV2L251bGwJMjAxMC0wNC0wNyAwNjoyMDo1Mi4yODk5OTQ1MDgg KzAyMDAKLSsrKyBnZGItNy4wLjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nc3RhY2suYwkyMDEw LTA0LTA3IDIxOjQ2OjUyLjAwMDAwMDAwMCArMDIwMAorSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9nc3RhY2suYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAx LTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9nc3RhY2suYwkyMDEwLTA5LTAzIDA5OjM4OjEyLjAwMDAwMDAwMCArMDIwMAogQEAg LTAsMCArMSw0MyBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCiArCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0 Y2ggYi9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAppbmRleCAwYmRmOTQ4Li43Y2Rj MGY3IDEwMDY0NAotLS0gYS9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAorKysgYi9n ZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaApAQCAtMTMsOCArMTMsOCBAQAogCiBJbmRl eDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wNy0y MiAxMTo1NzowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9k b2MvZ2RiLnRleGluZm8JMjAxMC0wNy0yMiAxMTo1NzozNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBn ZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTA3LTIzIDIw OjU4OjUyLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2RvYy9n ZGIudGV4aW5mbwkyMDEwLTA3LTIzIDIwOjU5OjE1LjAwMDAwMDAwMCArMDIwMAogQEAgLTk5OCw2 ICs5OTgsMTIgQEAgUmVhZCBlYWNoIHN5bWJvbCBmaWxlJ3MgZW50aXJlIHN5bWJvbCB0YQogIHRo ZSBkZWZhdWx0LCB3aGljaCBpcyB0byByZWFkIGl0IGluY3JlbWVudGFsbHkgYXMgaXQgaXMgbmVl ZGVkLgogIFRoaXMgbWFrZXMgc3RhcnR1cCBzbG93ZXIsIGJ1dCBtYWtlcyBmdXR1cmUgb3BlcmF0 aW9ucyBmYXN0ZXIuCkBAIC0zMCw4ICszMCw4IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIx L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAbm9kZSBNb2RlIE9wdGlvbnMKIEluZGV4OiBnZGItNy4x LjkwLjIwMTAwNzIxL2dkYi9tYWluLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAw NzIxLm9yaWcvZ2RiL21haW4uYwkyMDEwLTA3LTIyIDExOjU3OjEwLjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL21haW4uYwkyMDEwLTA3LTIyIDExOjU3OjQ5LjAw MDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvbWFpbi5jCTIw MTAtMDctMjMgMjA6NTg6NTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcy MS9nZGIvbWFpbi5jCTIwMTAtMDctMjMgMjA6NTk6MTUuMDAwMDAwMDAwICswMjAwCiBAQCAtMzkx LDYgKzM5MSw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICAgICAgeyJ4ZGIiLCBu b19hcmd1bWVudCwgJnhkYl9jb21tYW5kcywgMX0sCiAgICAgICAgeyJkYngiLCBub19hcmd1bWVu dCwgJmRieF9jb21tYW5kcywgMX0sCkBAIC01MCw4ICs1MCw4IEBAIEluZGV4OiBnZGItNy4xLjkw LjIwMTAwNzIxL2dkYi9tYWluLmMKICAgIC0tc2U9RklMRSAgICAgICAgICBVc2UgRklMRSBhcyBz eW1ib2wgZmlsZSBhbmQgZXhlY3V0YWJsZSBmaWxlLlxuXAogSW5kZXg6IGdkYi03LjEuOTAuMjAx MDA3MjEvZ2RiL3N5bWZpbGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEu b3JpZy9nZGIvc3ltZmlsZS5jCTIwMTAtMDctMjIgMTE6NTc6MDkuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvc3ltZmlsZS5jCTIwMTAtMDctMjIgMTE6NTc6MzQu MDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9zeW1maWxl LmMJMjAxMC0wNy0yMyAyMDo1ODo1Mi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIw MTAwNzIxL2dkYi9zeW1maWxlLmMJMjAxMC0wNy0yMyAyMDo1OToxNS4wMDAwMDAwMDAgKzAyMDAK IEBAIC04MCw2ICs4MCw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N5bXRhYl91c2Vyc19jbGVhbnVw ICgKICAKICAvKiBHbG9iYWwgdmFyaWFibGVzIG93bmVkIGJ5IHRoaXMgZmlsZSAqLwpAQCAtNjIs MTcgKzYyLDE3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9zeW1maWxlLmMKICAK IEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9kd2FyZjJyZWFkLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTIy IDExOjU3OjEwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2R3 YXJmMnJlYWQuYwkyMDEwLTA3LTIyIDExOjU4OjA1LjAwMDAwMDAwMCArMDIwMAotQEAgLTUzLDYg KzUzLDcgQEAKLSAjaW5jbHVkZSAicHN5bXByaXYuaCIKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzIx Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTIzIDIwOjU4OjUzLjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTIzIDIw OjU5OjI2LjAwMDAwMDAwMCArMDIwMAorQEAgLTU0LDYgKzU0LDcgQEAKICAjaW5jbHVkZSAiZXhj ZXB0aW9ucy5oIgogICNpbmNsdWRlICJnZGJfc3RhdC5oIgorICNpbmNsdWRlICJjb21wbGV0ZXIu aCIKICsjaW5jbHVkZSAidG9wLmgiCiAgCiAgI2luY2x1ZGUgPGZjbnRsLmg+CiAgI2luY2x1ZGUg ImdkYl9zdHJpbmcuaCIKLUBAIC0xMjgyLDggKzEyODMsOSBAQCBkd2FyZjJfaGFzX2luZm8gKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlCitAQCAtMTI4Myw4ICsxMjg0LDkgQEAgZHdhcmYyX2hhc19p bmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQogICAgICAgIGJmZF9tYXBfb3Zlcl9zZWN0aW9u cyAob2JqZmlsZS0+b2JmZCwgZHdhcmYyX2xvY2F0ZV9zZWN0aW9ucywgTlVMTCk7CiAgICAgICAg ZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlID0gb2JqZmlsZTsKICAgICAgfQpAQCAtODcsNyAr ODcsNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvZHdhcmYycmVhZC5jCiBJbmRl eDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdG9wLmgKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBnZGItNy4x LjkwLjIwMTAwNzIxLm9yaWcvZ2RiL3RvcC5oCTIwMTAtMDQtMDcgMTg6NTQ6MzkuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdG9wLmgJMjAxMC0wNy0yMiAxMTo1 NzozNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi90b3AuaAky MDEwLTA3LTIzIDIwOjU5OjE1LjAwMDAwMDAwMCArMDIwMAogQEAgLTYxLDYgKzYxLDcgQEAgZXh0 ZXJuIHZvaWQgc2V0X3Byb21wdCAoY2hhciAqKTsKICAKICAvKiBGcm9tIHJhbmRvbSBwbGFjZXMu ICAqLwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLWxpYnJwbS13b3Jr YXJvdW5kLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdvcmthcm91 bmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgwN2FjZQotLS0g L2Rldi9udWxsCisrKyBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLWxpYnJwbS13b3JrYXJv dW5kLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKKy0tLSAuL2dkYi9lbGZyZWFkLmMJMjAxMC0xMC0x NCAxNzowNzo0NS4wMDAwMDAwMDAgKzAyMDAKKysrKyAuL2dkYi9lbGZyZWFkLmMJMjAxMC0xMC0x NCAxNzowNjozMC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMzgyLDYgKzEzODIsMTggQEAgYnVpbGRf aWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9pZCAqYgorICNpbmNsdWRlIDxkbGZjbi5oPgor ICNlbmRpZgorIAorKy8qIFdvcmthcm9kdW4gaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3No b3dfYnVnLmNnaT9pZD02NDMwMzEKKysgICBsaWJycG0gbXVzdCBub3QgZXhpdCgpIGFuIGFwcGxp Y2F0aW9uIG9uIFNJR0lOVAorKworKyAgIEVuYWJsZSBvciBkaXNhYmxlIGEgc2lnbmFsIGhhbmRs ZXIuICBTSUdOVU06IHNpZ25hbCB0byBlbmFibGUgKG9yIGRpc2FibGUKKysgICBpZiBuZWdhdGl2 ZSkuICBIQU5ETEVSOiBzYV9zaWdhY3Rpb24gaGFuZGxlciAob3IgTlVMTCB0byB1c2UKKysgICBy cG1zcUhhbmRsZXIoKSkuICBSZXR1cm5zOiBuby4gb2YgcmVmcywgLTEgb24gZXJyb3IuICAqLwor K2ludAorK3JwbXNxRW5hYmxlIChpbnQgc2lnbnVtLCAvKiBycG1zcUFjdGlvbl90IGhhbmRsZXIg Ki8gdm9pZCAqaGFuZGxlcikKKyt7CisrICByZXR1cm4gMDsKKyt9CisrCisgLyogVGhpcyBNSVNT SU5HX1JQTV9IQVNIIHRyYWNrZXIgaXMgdXNlZCB0byBjb2xsZWN0IGFsbCB0aGUgbWlzc2luZyBy cG0gZmlsZXMKKyAgICBhbmQgYXZvaWQgdGhlaXIgZHVwbGljaXRpZXMgZHVyaW5nIGEgc2luZ2xl IGluZmVyaW9yIHJ1bi4gICovCisgCistLS0gLi9nZGIvcHJvYy1zZXJ2aWNlLmxpc3QJMjAxMC0w NS0yOCAyMDo1MDozMC4wMDAwMDAwMDAgKzAyMDAKKysrKyAuL2dkYi9wcm9jLXNlcnZpY2UubGlz dAkyMDEwLTEwLTE0IDE3OjA2OjMwLjAwMDAwMDAwMCArMDIwMAorQEAgLTM3LDQgKzM3LDcgQEAK KyAgIHBzX3BzdG9wOworICAgcHNfcHRyZWFkOworICAgcHNfcHR3cml0ZTsKKysKKysgIC8qIGdk Yi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoICovCisrICBycG1zcUVuYWJsZTsKKyB9OwoK ZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoIGIvZ2RiLTYuNi1i dWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKaW5kZXggZTExZmIzYy4uMzA4MzJjNiAxMDA2NDQKLS0t IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlk LWxvY2F0ZS1ycG0ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1JbmRleDogZ2RiLTcuMS45MC4yMDEw MDcyMS9nZGIvZXZlbnQtdG9wLmMKK0luZGV4OiBnZGItNy4yL2dkYi9ldmVudC10b3AuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvZXZlbnQtdG9wLmMJMjAx MC0wNi0yNiAwODo0NDo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzIx L2dkYi9ldmVudC10b3AuYwkyMDEwLTA3LTIyIDExOjU4OjI0LjAwMDAwMDAwMCArMDIwMAorLS0t IGdkYi03LjIub3JpZy9nZGIvZXZlbnQtdG9wLmMJMjAxMC0wNi0yNiAwODo0NDo0Ny4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4yL2dkYi9ldmVudC10b3AuYwkyMDEwLTEwLTA2IDIyOjM5OjMy LjAwMDAwMDAwMCArMDIwMAogQEAgLTMzLDYgKzMzLDcgQEAKICAjaW5jbHVkZSAiY2xpL2NsaS1z Y3JpcHQuaCIgICAgIC8qIGZvciByZXNldF9jb21tYW5kX25lc3RfZGVwdGggKi8KICAjaW5jbHVk ZSAibWFpbi5oIgpAQCAtMjgsMTAgKzI4LDEwIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIx L2dkYi9ldmVudC10b3AuYwogICAgLyogRWFjaCBpbnRlcnByZXRlciBoYXMgaXRzIG93biBydWxl cyBvbiBkaXNwbGF5aW5nIHRoZSBjb21tYW5kCiAgICAgICBwcm9tcHQuICAqLwogICAgaWYgKCFj dXJyZW50X2ludGVycF9kaXNwbGF5X3Byb21wdF9wICgpKQotSW5kZXg6IGdkYi03LjEuOTAuMjAx MDA3MjEvZ2RiL2VsZnJlYWQuYworSW5kZXg6IGdkYi03LjIvZ2RiL2VsZnJlYWQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvZWxmcmVhZC5jCTIwMTAtMDct MjIgMTE6NTg6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIv ZWxmcmVhZC5jCTIwMTAtMDctMjIgMTE6NTg6MjQuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcu Mi5vcmlnL2dkYi9lbGZyZWFkLmMJMjAxMC0xMC0wNiAyMjozOTozMi4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy4yL2dkYi9lbGZyZWFkLmMJMjAxMC0xMC0wNiAyMjozOTo1Mi4wMDAwMDAwMDAg KzAyMDAKIEBAIC00Miw2ICs0Miw3IEBACiAgI2luY2x1ZGUgImdkYmNvcmUuaCIKICAjaW5jbHVk ZSAiZ2RiY21kLmgiCkBAIC00MCw3ICs0MCw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIx L2dkYi9lbGZyZWFkLmMKICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lk KTsKICAKLUBAIC0xMzcxLDggKzEzNzIsMzUzIEBAIGJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChzdHJ1 Y3QgYnVpbGRfaWQgKmIKK0BAIC0xMzcxLDggKzEzNzIsMzYxIEBAIGJ1aWxkX2lkX3RvX2ZpbGVu YW1lIChzdHJ1Y3QgYnVpbGRfaWQgKmIKICAgIHJldHVybiByZXR2YWw7CiAgfQogIApAQCAtMTEz LDkgKzExMywxNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvZWxmcmVhZC5jCiAr IyBkZWZpbmUgcnBtdHNJbml0SXRlcmF0b3JfcCBycG10c0luaXRJdGVyYXRvcgogKyNlbmRpZgkv KiAhRExPUEVOX0xJQlJQTSAqLwogKwotKyAgaWYgKGZpbGVuYW1lID09IE5VTEwpCisrICBnZGJf YXNzZXJ0IChmaWxlbmFtZSAhPSBOVUxMKTsKKysKKysgIGlmIChzdHJjbXAgKGZpbGVuYW1lLCBC VUlMRF9JRF9NQUlOX0VYRUNVVEFCTEVfRklMRU5BTUUpID09IDApCiArICAgIHJldHVybiAwOwog KworKyAgaWYgKGZpbGVuYW1lWzBdICE9ICcvJykKKysgICAgeworKyAgICAgIHdhcm5pbmcgKF8o Iklnbm9yaW5nIG5vbi1hYnNvbHV0ZSBmaWxlbmFtZTogPCVzPiIpLCBmaWxlbmFtZSk7CisrICAg ICAgcmV0dXJuIDA7CisrICAgIH0KKysKICsgIGlmICghcnBtX2luaXRfZG9uZSkKICsgICAgewog KyAgICAgIHN0YXRpYyBpbnQgaW5pdF90cmllZDsKQEAgLTM5NSw3ICs0MDMsNyBAQCBJbmRleDog Z2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvZWxmcmVhZC5jCiAgICAgYXZvaWRhbmNlLiAgKi8KICAK ICBzdHJ1Y3QgbWlzc2luZ19maWxlcGFpcgotQEAgLTE0MjYsMTEgKzE3NzIsMTcgQEAgbWlzc2lu Z19maWxlcGFpcl9jaGFuZ2UgKHZvaWQpCitAQCAtMTQyNiwxMSArMTc4MCwxNyBAQCBtaXNzaW5n X2ZpbGVwYWlyX2NoYW5nZSAodm9pZCkKICAgICAgICAvKiBBbGwgdGhlaXIgbWVtb3J5IGNhbWUg anVzdCBmcm9tIG1pc3NpbmdfZmlsZXBhaXJfT0JTVEFDSy4gICovCiAgICAgICAgbWlzc2luZ19m aWxlcGFpcl9oYXNoID0gTlVMTDsKICAgICAgfQpAQCAtNDEzLDcgKzQyMSw3IEBAIEluZGV4OiBn ZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9lbGZyZWFkLmMKICAgIG1pc3NpbmdfZmlsZXBhaXJfY2hh bmdlICgpOwogIH0KICAKLUBAIC0xNDk3LDE0ICsxODQ5LDM0IEBAIGRlYnVnX3ByaW50X21pc3Np bmcgKGNvbnN0IGNoYXIgKmJpbmFyeSwKK0BAIC0xNDk3LDE0ICsxODU3LDM1IEBAIGRlYnVnX3By aW50X21pc3NpbmcgKGNvbnN0IGNoYXIgKmJpbmFyeSwKICAKICAgICpzbG90ID0gbWlzc2luZ19m aWxlcGFpcjsKICAKQEAgLTQzOSw3ICs0NDcsOCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcy MS9nZGIvZWxmcmVhZC5jCiArCX0KICsgICAgfQogKyAgaWYgKG1pc3NpbmdfZXhlYyAhPSBNSVNT SU5HX0VYRUNfRU5MSVNURUQpCi0rICAgIGlmIChtaXNzaW5nX3JwbV9lbmxpc3QgKGJpbmFyeSkg PT0gMCAmJiBtaXNzaW5nX3JwbV9lbmxpc3QgKGRlYnVnKSA9PSAwKQorKyAgICBpZiAoKGJpbmFy eVswXSA9PSAwIHx8IG1pc3NpbmdfcnBtX2VubGlzdCAoYmluYXJ5KSA9PSAwKQorKwkmJiAoZGVi dWcgPT0gTlVMTCB8fCBtaXNzaW5nX3JwbV9lbmxpc3QgKGRlYnVnKSA9PSAwKSkKICsjZW5kaWYJ LyogSEFWRV9MSUJSUE0gKi8KICsgICAgICB7CiArCS8qIFdlIGRvIG5vdCBjb2xsZWN0IGFuZCBm bHVzaCB0aGVzZSBtZXNzYWdlcyBhcyBlYWNoIHN1Y2ggbWVzc2FnZQpAQCAtNDU1LDIyICs0NjQs MjMgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2VsZnJlYWQuYwogIH0KICAKICBz dGF0aWMgY2hhciAqCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvc3ltZmlsZS5oCitJ bmRleDogZ2RiLTcuMi9nZGIvc3ltZmlsZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4y MDEwMDcyMS5vcmlnL2dkYi9zeW1maWxlLmgJMjAxMC0wNy0yMiAxMTo1ODoxNC4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9zeW1maWxlLmgJMjAxMC0wNy0yMiAx MTo1ODoyNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC01NzcsNiArNTc3LDcgQEAgZXh0ZXJuIHN0cnVj dCBidWlsZF9pZCAqYnVpbGRfaWRfYWRkcl9nZQorLS0tIGdkYi03LjIub3JpZy9nZGIvc3ltZmls ZS5oCTIwMTAtMTAtMDYgMjI6Mzk6MzIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIv c3ltZmlsZS5oCTIwMTAtMTAtMDYgMjI6Mzk6NTIuMDAwMDAwMDAwICswMjAwCitAQCAtNTc3LDYg KzU3Nyw4IEBAIGV4dGVybiBzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkX2FkZHJfZ2UKICBleHRl cm4gY2hhciAqYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWQs CiAgCQkJCSAgIGNoYXIgKipsaW5rX3JldHVybiwgaW50IGFkZF9kZWJ1Z19zdWZmaXgpOwogIGV4 dGVybiB2b2lkIGRlYnVnX3ByaW50X21pc3NpbmcgKGNvbnN0IGNoYXIgKmJpbmFyeSwgY29uc3Qg Y2hhciAqZGVidWcpOwogK2V4dGVybiB2b2lkIGRlYnVnX2ZsdXNoX21pc3NpbmcgKHZvaWQpOwor KyNkZWZpbmUgQlVJTERfSURfTUFJTl9FWEVDVVRBQkxFX0ZJTEVOQU1FIF8oInRoZSBtYWluIGV4 ZWN1dGFibGUgZmlsZSIpCiAgCiAgLyogRnJvbSBkd2FyZjJyZWFkLmMgKi8KICAKLUluZGV4OiBn ZGItNy4xLjkwLjIwMTAwNzIxL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKK0luZGV4OiBnZGIt Ny4yL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkw LjIwMTAwNzIxLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEwLTA3LTIyIDExOjU4 OjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL3Rlc3RzdWl0 ZS9saWIvZ2RiLmV4cAkyMDEwLTA3LTIyIDExOjU4OjI0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdk Yi03LjIub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTAtMTAtMDYgMjI6Mzk6MzIu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIw MTAtMTAtMDYgMjI6Mzk6MzIuMDAwMDAwMDAwICswMjAwCiBAQCAtMTM1OSw3ICsxMzU5LDcgQEAg cHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0gewogIAkgICAgd2FybmluZyAiQ291bGRuJ3Qgc2V0 IHRoZSB3aWR0aCB0byAwLiIKICAJfQpAQCAtNDgwLDEwICs0OTAsMTAgQEAgSW5kZXg6IGdkYi03 LjEuOTAuMjAxMDA3MjEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogICAgICBzZW5kX2dkYiAi c2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxuIgogICAgICBnZGJfZXhwZWN0IDEwIHsKICAJLXJlICIk Z2RiX3Byb21wdCAkIiB7Ci1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdGVzdHN1aXRl L2xpYi9taS1zdXBwb3J0LmV4cAorSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9saWIvbWkt c3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMC0wNy0yMiAxMTo1ODoxNC4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1 cHBvcnQuZXhwCTIwMTAtMDctMjIgMTE6NTg6MjQuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcu Mi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTAtMTAtMDYgMjI6Mzk6 MzIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBw b3J0LmV4cAkyMDEwLTEwLTA2IDIyOjM5OjMyLjAwMDAwMDAwMCArMDIwMAogQEAgLTIyMSw3ICsy MjEsNyBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0YXJ0IHsgYXJncyB9IHsKICAJICAgIH0KICAg ICAgCX0KQEAgLTQ5MywxMCArNTAzLDEwIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dk Yi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCiAgICAgIHNlbmRfZ2RiICIxOTAtZ2RiLXNl dCBidWlsZC1pZC12ZXJib3NlIDBcbiIKICAgICAgZ2RiX2V4cGVjdCAxMCB7CiAgCS1yZSAiLiox OTAtZ2RiLXNldCBidWlsZC1pZC12ZXJib3NlIDBcclxuMTkwXFxcXmRvbmVcclxuJG1pX2dkYl9w cm9tcHQkIiB7Ci1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdHVpL3R1aS1pbnRlcnAu YworSW5kZXg6IGdkYi03LjIvZ2RiL3R1aS90dWktaW50ZXJwLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL3R1aS90dWktaW50ZXJwLmMJMjAxMC0wNS0xOCAw MDoyMTo0My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi90dWkv dHVpLWludGVycC5jCTIwMTAtMDctMjIgMTE6NTg6MjQuMDAwMDAwMDAwICswMjAwCistLS0gZ2Ri LTcuMi5vcmlnL2dkYi90dWkvdHVpLWludGVycC5jCTIwMTAtMDUtMTggMDA6MjE6NDMuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDEwLTEwLTA2IDIy OjM5OjMyLjAwMDAwMDAwMCArMDIwMAogQEAgLTMwLDYgKzMwLDcgQEAKICAjaW5jbHVkZSAidHVp L3R1aS5oIgogICNpbmNsdWRlICJ0dWkvdHVpLWlvLmgiCkBAIC01MTQsMTAgKzUyNCwxMCBAQCBJ bmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdHVpL3R1aS1pbnRlcnAuYwogICAgICAgIC8q IFRlbGwgcmVhZGxpbmUgd2hhdCB0aGUgcHJvbXB0IHRvIGRpc3BsYXkgaXMgYW5kIHdoYXQgZnVu Y3Rpb24KICAgICAgICAgICBpdCB3aWxsIG5lZWQgdG8gY2FsbCBhZnRlciBhIHdob2xlIGxpbmUg aXMgcmVhZC4gVGhpcyBhbHNvCiAgICAgICAgICAgZGlzcGxheXMgdGhlIGZpcnN0IHByb21wdC4g ICovCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvYWNsb2NhbC5tNAorSW5kZXg6IGdk Yi03LjIvZ2RiL2FjbG9jYWwubTQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzIx Lm9yaWcvZ2RiL2FjbG9jYWwubTQJMjAxMC0wNS0yMyAwMjo1Njo1OS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9hY2xvY2FsLm00CTIwMTAtMDctMjIgMTE6NTg6 MjQuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi5vcmlnL2dkYi9hY2xvY2FsLm00CTIwMTAt MDUtMjMgMDI6NTY6NTkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvYWNsb2NhbC5t NAkyMDEwLTEwLTA2IDIyOjM5OjMyLjAwMDAwMDAwMCArMDIwMAogQEAgLTE5LDYgKzE5LDE2MiBA QCBZb3UgaGF2ZSBhbm90aGVyIHZlcnNpb24gb2YgYXV0b2NvbmYuICBJCiAgSWYgeW91IGhhdmUg cHJvYmxlbXMsIHlvdSBtYXkgbmVlZCB0byByZWdlbmVyYXRlIHRoZSBidWlsZCBzeXN0ZW0gZW50 aXJlbHkuCiAgVG8gZG8gc28sIHVzZSB0aGUgcHJvY2VkdXJlIGRvY3VtZW50ZWQgYnkgdGhlIHBh Y2thZ2UsIHR5cGljYWxseSBgYXV0b3JlY29uZicuXSldKQpAQCAtNjgxLDEwICs2OTEsMTAgQEAg SW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2FjbG9jYWwubTQKICAjIENvcHlyaWdodCAo QykgMjAwMiwgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCiAgIwogICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24KLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9jb25m aWcuaW4KK0luZGV4OiBnZGItNy4yL2dkYi9jb25maWcuaW4KID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL2NvbmZpZy5pbgkyMDEwLTA3LTIyIDExOjU3OjA5LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2NvbmZpZy5pbgkyMDEw LTA3LTIyIDExOjU4OjI0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIub3JpZy9nZGIvY29u ZmlnLmluCTIwMTAtMTAtMDYgMjI6Mzk6MzEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9n ZGIvY29uZmlnLmluCTIwMTAtMTAtMDYgMjI6Mzk6MzIuMDAwMDAwMDAwICswMjAwCiBAQCAtNDYs NiArNDYsOSBAQAogIC8qIERlZmluZSB0byBCRkQncyBkZWZhdWx0IHRhcmdldCB2ZWN0b3IuICov CiAgI3VuZGVmIERFRkFVTFRfQkZEX1ZFQwpAQCAtNzA1LDEwICs3MTUsMTAgQEAgSW5kZXg6IGdk Yi03LjEuOTAuMjAxMDA3MjEvZ2RiL2NvbmZpZy5pbgogIC8qIERlZmluZSBpZiBsaWJ1bndpbmQg bGlicmFyeSBpcyBiZWluZyB1c2VkLiAqLwogICN1bmRlZiBIQVZFX0xJQlVOV0lORAogIAotSW5k ZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2NvbmZpZ3VyZQorSW5kZXg6IGdkYi03LjIvZ2Ri L2NvbmZpZ3VyZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIv Y29uZmlndXJlCTIwMTAtMDctMjIgMTE6NTc6MDkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu MS45MC4yMDEwMDcyMS9nZGIvY29uZmlndXJlCTIwMTAtMDctMjIgMTE6NTk6MTMuMDAwMDAwMDAw ICswMjAwCistLS0gZ2RiLTcuMi5vcmlnL2dkYi9jb25maWd1cmUJMjAxMC0xMC0wNiAyMjozOToz MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yL2dkYi9jb25maWd1cmUJMjAxMC0xMC0wNiAy MjozOTozMi4wMDAwMDAwMDAgKzAyMDAKIEBAIC02NzksNiArNjc5LDkgQEAgUkVQT1JUX0JVR1Nf VE8KICBQS0dWRVJTSU9OCiAgVEFSR0VUX09CUwpAQCAtMTI0MiwxMCArMTI1MiwxMCBAQCBJbmRl eDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvY29uZmlndXJlCiAgCiAgCiAgCi1JbmRleDogZ2Ri LTcuMS45MC4yMDEwMDcyMS9nZGIvY29uZmlndXJlLmFjCitJbmRleDogZ2RiLTcuMi9nZGIvY29u ZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9j b25maWd1cmUuYWMJMjAxMC0wNy0yMiAxMTo1NzowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4xLjkwLjIwMTAwNzIxL2dkYi9jb25maWd1cmUuYWMJMjAxMC0wNy0yMiAxMTo1OTowNC4wMDAw MDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEwLTEwLTA2 IDIyOjM5OjMxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIvZ2RiL2NvbmZpZ3VyZS5hYwky MDEwLTEwLTA2IDIyOjM5OjMyLjAwMDAwMDAwMCArMDIwMAogQEAgLTE1Miw2ICsxNTIsMTk4IEBA IGVsc2UKICBmaQogIEFDX1NVQlNUKHB5dGhvbmRpcikKQEAgLTE0NDUsMTAgKzE0NTUsMTAgQEAg SW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2NvbmZpZ3VyZS5hYwogIAogIEFDX0NPTkZJ R19TVUJESVJTKGRvYyB0ZXN0c3VpdGUpCiAgCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9n ZGIvYWNpbmNsdWRlLm00CitJbmRleDogZ2RiLTcuMi9nZGIvYWNpbmNsdWRlLm00CiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9hY2luY2x1ZGUubTQJMjAxMC0w NS0yNyAwNTo0MDo0NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dk Yi9hY2luY2x1ZGUubTQJMjAxMC0wNy0yMiAxMTo1ODoyNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBn ZGItNy4yLm9yaWcvZ2RiL2FjaW5jbHVkZS5tNAkyMDEwLTA1LTI3IDA1OjQwOjQ1LjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjIvZ2RiL2FjaW5jbHVkZS5tNAkyMDEwLTEwLTA2IDIyOjM5OjMy LjAwMDAwMDAwMCArMDIwMAogQEAgLTEsMyArMSw1IEBACiArIyBzZXJpYWwgMQogKwpAQCAtMTQ2 NCwzICsxNDc0LDE2IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9hY2luY2x1ZGUu bTQKICAjIEBkZWZtYWMgQUNfUFJPR19DQ19TVERDCiAgIyBAbWFpbmRleCBQUk9HX0NDX1NUREMK ICAjIEBvdmluZGV4IENDCitJbmRleDogZ2RiLTcuMi9nZGIvY29yZWxvdy5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gZ2RiLTcuMi5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMC0xMC0wNiAyMjozOTozOS4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy4yL2dkYi9jb3JlbG93LmMJMjAxMC0xMC0wNiAyMjozOTo1 Mi4wMDAwMDAwMDAgKzAyMDAKK0BAIC0zMzEsNyArMzMxLDcgQEAgYnVpbGRfaWRfbG9jYXRlX2V4 ZWMgKGludCBmcm9tX3R0eSkKKyAgICAgICAgIHN5bWZpbGVfb2JqZmlsZS0+ZmxhZ3MgfD0gT0JK Rl9CVUlMRF9JRF9DT1JFX0xPQURFRDsKKyAgICAgfQorICAgZWxzZQorLSAgICBkZWJ1Z19wcmlu dF9taXNzaW5nIChfKCJ0aGUgbWFpbiBleGVjdXRhYmxlIGZpbGUiKSwgYnVpbGRfaWRfZmlsZW5h bWUpOworKyAgICBkZWJ1Z19wcmludF9taXNzaW5nIChCVUlMRF9JRF9NQUlOX0VYRUNVVEFCTEVf RklMRU5BTUUsIGJ1aWxkX2lkX2ZpbGVuYW1lKTsKKyAKKyAgIGRvX2NsZWFudXBzIChiYWNrX3Rv KTsKKyAKCmRpZmYgLS1naXQgYS9nZGItNi44LWJ6NDU3MTg3LWxhcmdlZmlsZS10ZXN0LnBhdGNo IGIvZ2RiLTYuOC1iejQ1NzE4Ny1sYXJnZWZpbGUtdGVzdC5wYXRjaApvbGQgbW9kZSAxMDA3NTUK bmV3IG1vZGUgMTAwNjQ0CgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci5wYXRjaCBiL2dkYi1hcmNo ZXIucGF0Y2gKaW5kZXggNmM4Y2Q1Ni4uNDNmZGE5ZSAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci5w YXRjaAorKysgYi9nZGItYXJjaGVyLnBhdGNoCkBAIC0yLDcgKzIsNyBAQCBodHRwOi8vc291cmNl d2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVjdEFyY2hlcgogaHR0cDovL3NvdXJjZXdhcmUub3JnL2dk Yi93aWtpL0FyY2hlckJyYW5jaE1hbmFnZW1lbnQKIAogR0lUIHNuYXBzaG90OgotY29tbWl0IDIw MmY0ZDBlM2FmOGQ4YThkN2MwYjQwOGQ5ZTBhOGNiNjlmOTEyYjYKK2NvbW1pdCA3NGZmZjU4ZDAw NzZmZTk3YzZjOTlkNjVmYTU4MTI2MzE1MjY2NjQ2CiAKIGJyYW5jaCBgYXJjaGVyJyAtIHRoZSBt ZXJnZSBvZiBicmFuY2hlczoKIGFyY2hlci1qYW5rcmF0b2NodmlsLXZsYQpAQCAtMTUsNyArMTUs NyBAQCBhcmNoZXItdHJvbWV5LW9wdGlvbmFsLXBzeW10YWIgKGNoZXJyeS1waWNrZWQgZnJvbSBw b3N0LTcuMiBtYXN0ZXIpCiAKIAogZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9N YWtlZmlsZS5pbgotaW5kZXggNmRiYjI4NC4uNjEzM2RhMyAxMDA2NDQKK2luZGV4IGYwN2JjOGIu LjM3MDNkY2EgMTAwNjQ0CiAtLS0gYS9nZGIvTWFrZWZpbGUuaW4KICsrKyBiL2dkYi9NYWtlZmls ZS5pbgogQEAgLTE2OSw2ICsxNjksMTIgQEAgVEFSR0VUX1NZU1RFTV9ST09UID0gQFRBUkdFVF9T WVNURU1fUk9PVEAKQEAgLTU3LDcgKzU3LDcgQEAgaW5kZXggNmRiYjI4NC4uNjEzM2RhMyAxMDA2 NDQKICAKICAjIEhlYWRlciBmaWxlcyB0aGF0IGFscmVhZHkgaGF2ZSBzcmNkaXIgaW4gdGhlbSwg b3Igd2hpY2ggYXJlIGluIG9iamRpci4KICAKLUBAIC0xMjk5LDYgKzEzMDUsMTIgQEAgc3RhbXAt aDogJChzcmNkaXIpL2NvbmZpZy5pbiBjb25maWcuc3RhdHVzCitAQCAtMTMwMSw2ICsxMzA3LDEy IEBAIHN0YW1wLWg6ICQoc3JjZGlyKS9jb25maWcuaW4gY29uZmlnLnN0YXR1cwogIAkgIENPTkZJ R19MSU5LUz0gXAogIAkgICQoU0hFTEwpIGNvbmZpZy5zdGF0dXMKICAKQEAgLTcwLDcgKzcwLDcg QEAgaW5kZXggNmRiYjI4NC4uNjEzM2RhMyAxMDA2NDQKICBjb25maWcuc3RhdHVzOiAkKHNyY2Rp cikvY29uZmlndXJlIGNvbmZpZ3VyZS50Z3QgY29uZmlndXJlLmhvc3QKICAJJChTSEVMTCkgY29u ZmlnLnN0YXR1cyAtLXJlY2hlY2sKICAKLUBAIC0yMDIyLDYgKzIwMzQsMTAgQEAgcHktZnVuY3Rp b24ubzogJChzcmNkaXIpL3B5dGhvbi9weS1mdW5jdGlvbi5jCitAQCAtMjAyNCw2ICsyMDM2LDEw IEBAIHB5LWZ1bmN0aW9uLm86ICQoc3JjZGlyKS9weXRob24vcHktZnVuY3Rpb24uYwogIAkkKENP TVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1mdW5jdGlvbi5jCiAg CSQoUE9TVENPTVBJTEUpCiAgCkBAIC04MSw3ICs4MSw3IEBAIGluZGV4IDZkYmIyODQuLjYxMzNk YTMgMTAwNjQ0CiAgcHktaW5mZXJpb3IubzogJChzcmNkaXIpL3B5dGhvbi9weS1pbmZlcmlvci5j CiAgCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LWluZmVy aW9yLmMKICAJJChQT1NUQ09NUElMRSkKLUBAIC0yMDcwLDYgKzIwODYsMzYgQEAgcHktdmFsdWUu bzogJChzcmNkaXIpL3B5dGhvbi9weS12YWx1ZS5jCitAQCAtMjA3Miw2ICsyMDg4LDM2IEBAIHB5 LXZhbHVlLm86ICQoc3JjZGlyKS9weXRob24vcHktdmFsdWUuYwogIAkkKENPTVBJTEUpICQoUFlU SE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS12YWx1ZS5jCiAgCSQoUE9TVENPTVBJTEUp CiAgCkBAIC0yODksNyArMjg5LDcgQEAgaW5kZXggMDM0OGJmNC4uZjAxZDBlZSAxMDA2NDQKICAK ICAvKiBSZXR1cm4gdGhlIGlubmVybW9zdCBzdGFjayBmcmFtZSBleGVjdXRpbmcgaW5zaWRlIG9m IEJMT0NLLAogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtwb2ludC5j Ci1pbmRleCA0YWZmZTBhLi41ODRjNjhlIDEwMDY0NAoraW5kZXggNmE2ODY0Yy4uNWRmMzM2ZCAx MDA2NDQKIC0tLSBhL2dkYi9icmVha3BvaW50LmMKICsrKyBiL2dkYi9icmVha3BvaW50LmMKIEBA IC02Miw2ICs2Miw3IEBACkBAIC0xMzQ5LDcgKzEzNDksNyBAQCBpbmRleCAxZmM0NTdkLi5mNGM4 NDZhIDEwMDY0NAogICN1bmRlZiBQWVRIT05fUEFUSF9SRUxPQ0FUQUJMRQogIAogZGlmZiAtLWdp dCBhL2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCi1pbmRleCA5NGViOWI5Li5lNDlkYTA4 IDEwMDc1NQoraW5kZXggMDQxZmZjMS4uODI0M2FiYiAxMDA3NTUKIC0tLSBhL2dkYi9jb25maWd1 cmUKICsrKyBiL2dkYi9jb25maWd1cmUKIEBAIC02NzksNiArNjc5LDggQEAgUkVQT1JUX0JVR1Nf VE8KQEAgLTE0NTQsMTcgKzE0NTQsMTYgQEAgaW5kZXggOTRlYjliOS4uZTQ5ZGEwOCAxMDA3NTUK ICAKICAKICBzdWJkaXJzPSIkc3ViZGlycyBkb2MgdGVzdHN1aXRlIgotQEAgLTEwODgxLDYgKzEw OTU1LDggQEAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9QWVRIT04gMSIgPj5jb25mZGVmcy5oCi0g ICBDT05GSUdfT0JTPSIkQ09ORklHX09CUyBcJChTVUJESVJfUFlUSE9OX09CUykiCitAQCAtMTA5 MTksNiArMTA5OTMsNyBAQCAkYXNfZWNobyAiI2RlZmluZSBIQVZFX1BZVEhPTiAxIiA+PmNvbmZk ZWZzLmgKICAgIENPTkZJR19ERVBTPSIkQ09ORklHX0RFUFMgXCQoU1VCRElSX1BZVEhPTl9ERVBT KSIKICAgIENPTkZJR19TUkNTPSIkQ09ORklHX1NSQ1MgXCQoU1VCRElSX1BZVEhPTl9TUkNTKSIK LSsgIENPTkZJR19JTlNUQUxMPSIkQ09ORklHX0lOU1RBTEwgaW5zdGFsbC1weXRob24iCisgICBD T05GSUdfSU5TVEFMTD0iJENPTkZJR19JTlNUQUxMIGluc3RhbGwtcHl0aG9uIgogKyAgQ09ORklH X1VOSU5TVEFMTD0iJENPTkZJR19VTklOU1RBTEwgdW5pbnN0YWxsLXB5dGhvbiIKICAgIEVOQUJM RV9DRkxBR1M9IiRFTkFCTEVfQ0ZMQUdTIFwkKFNVQkRJUl9QWVRIT05fQ0ZMQUdTKSIKICAKICAg ICMgRmxhZ3MgbmVlZGVkIHRvIGNvbXBpbGUgUHl0aG9uIGNvZGUgKHRha2VuIGZyb20gcHl0aG9u LWNvbmZpZyAtLWNmbGFncykuCiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5hYyBiL2dkYi9j b25maWd1cmUuYWMKLWluZGV4IDkzMDA1NDQuLjM4MDQ3M2EgMTAwNjQ0CitpbmRleCBiNjljM2I2 Li40ZTg5NTU4IDEwMDY0NAogLS0tIGEvZ2RiL2NvbmZpZ3VyZS5hYwogKysrIGIvZ2RiL2NvbmZp Z3VyZS5hYwogQEAgLTEwOCw2ICsxMDgsNTEgQEAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1yZWxv Y2F0ZWQtc291cmNlcz1QQVRIXSwgW2F1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBwYXQKQEAg LTE1MTksMzEgKzE1MTgsMTYgQEAgaW5kZXggOTMwMDU0NC4uMzgwNDczYSAxMDA2NDQKICBBQ19D T05GSUdfU1VCRElSUyhkb2MgdGVzdHN1aXRlKQogIAogICMgQ2hlY2sgd2hldGhlciB0byBzdXBw b3J0IGFsdGVybmF0aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucwotQEAgLTgyOCw2ICs4NzMsOCBA QCBpZiB0ZXN0ICIke2hhdmVfbGlicHl0aG9ufSIgIT0gbm87IHRoZW4KLSAgIENPTkZJR19PQlM9 IiRDT05GSUdfT0JTIFwkKFNVQkRJUl9QWVRIT05fT0JTKSIKK0BAIC04MzMsNiArODc4LDcgQEAg aWYgdGVzdCAiJHtoYXZlX2xpYnB5dGhvbn0iICE9IG5vOyB0aGVuCiAgICBDT05GSUdfREVQUz0i JENPTkZJR19ERVBTIFwkKFNVQkRJUl9QWVRIT05fREVQUykiCiAgICBDT05GSUdfU1JDUz0iJENP TkZJR19TUkNTIFwkKFNVQkRJUl9QWVRIT05fU1JDUykiCi0rICBDT05GSUdfSU5TVEFMTD0iJENP TkZJR19JTlNUQUxMIGluc3RhbGwtcHl0aG9uIgorICAgQ09ORklHX0lOU1RBTEw9IiRDT05GSUdf SU5TVEFMTCBpbnN0YWxsLXB5dGhvbiIKICsgIENPTkZJR19VTklOU1RBTEw9IiRDT05GSUdfVU5J TlNUQUxMIHVuaW5zdGFsbC1weXRob24iCiAgICBFTkFCTEVfQ0ZMQUdTPSIkRU5BQkxFX0NGTEFH UyBcJChTVUJESVJfUFlUSE9OX0NGTEFHUykiCiAgCiAgICAjIEZsYWdzIG5lZWRlZCB0byBjb21w aWxlIFB5dGhvbiBjb2RlICh0YWtlbiBmcm9tIHB5dGhvbi1jb25maWcgLS1jZmxhZ3MpLgotZGlm ZiAtLWdpdCBhL2dkYi9kb2MvQ2hhbmdlTG9nIGIvZ2RiL2RvYy9DaGFuZ2VMb2cKLWluZGV4IDA0 ZjE2ODMuLmEyYTZlMzAgMTAwNjQ0Ci0tLS0gYS9nZGIvZG9jL0NoYW5nZUxvZwotKysrIGIvZ2Ri L2RvYy9DaGFuZ2VMb2cKLUBAIC0xLDUgKzEsOSBAQAotIDIwMTAtMDctMTMgIFRvbSBUcm9tZXkg IDx0cm9tZXlAcmVkaGF0LmNvbT4KLSAKLSsJKiBnZGIudGV4aW5mbyAoSW5kZXggRmlsZXMpOiBO ZXcgbm9kZS4KLSsKLSsyMDEwLTA3LTEzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+ Ci0rCi0gCSogZ2RiLnRleGluZm8gKEdEQi9NSSBWYXJpYWJsZSBPYmplY3RzKTogUmVtb3ZlIGV4 dHJhICdmb3InLgotIAotIDIwMTAtMDctMDEgIFBlZHJvIEFsdmVzICA8cGVkcm9AY29kZXNvdXJj ZXJ5LmNvbT4KIGRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIu dGV4aW5mbwotaW5kZXggMTI5NzE3NS4uYzAzMGI2NSAxMDA2NDQKK2luZGV4IDY1ZDQ4OTkuLjk2 NzY3YjAgMTAwNjQ0CiAtLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCiArKysgYi9nZGIvZG9jL2dk Yi50ZXhpbmZvCiBAQCAtMTE2Miw2ICsxMTYyLDE2IEBAIGZvciByZW1vdGUgZGVidWdnaW5nLgpA QCAtMTU2Myw3ICsxNTQ3LDcgQEAgaW5kZXggMTI5NzE3NS4uYzAzMGI2NSAxMDA2NDQKICBAYyBy ZXNvbHZlIHRoZSBzaXR1YXRpb24gb2YgdGhlc2UgZXZlbnR1YWxseQogIEBpdGVtIC10dWkKICBA Y2luZGV4IEBjb2Rley0tdHVpfQotQEAgLTE0MjgyLDYgKzE0MjkyLDcgQEAgcHJvZ3JhbS4gIFRv IGRlYnVnIGEgY29yZSBkdW1wIG9mIGEgcHJldmlvdXMgcnVuLCB5b3UgbXVzdCBhbHNvIHRlbGwK K0BAIC0xNDMwOCw2ICsxNDMxOCw3IEBAIHByb2dyYW0uICBUbyBkZWJ1ZyBhIGNvcmUgZHVtcCBv ZiBhIHByZXZpb3VzIHJ1biwgeW91IG11c3QgYWxzbyB0ZWxsCiAgQG1lbnUKICAqIEZpbGVzOjog ICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRzIHRvIHNwZWNpZnkgZmlsZXMKICAqIFNlcGFy YXRlIERlYnVnIEZpbGVzOjogICAgICAgIERlYnVnZ2luZyBpbmZvcm1hdGlvbiBpbiBzZXBhcmF0 ZSBmaWxlcwpAQCAtMTU3MSw3ICsxNTU1LDcgQEAgaW5kZXggMTI5NzE3NS4uYzAzMGI2NSAxMDA2 NDQKICAqIFN5bWJvbCBFcnJvcnM6OiAgICAgICAgICAgICAgIEVycm9ycyByZWFkaW5nIHN5bWJv bCBmaWxlcwogICogRGF0YSBGaWxlczo6ICAgICAgICAgICAgICAgICAgR0RCIGRhdGEgZmlsZXMK ICBAZW5kIG1lbnUKLUBAIC0xNTE3MSw2ICsxNTE4Miw0NiBAQCBnbnVfZGVidWdsaW5rX2NyYzMy ICh1bnNpZ25lZCBsb25nIGNyYywKK0BAIC0xNTE5Nyw2ICsxNTIwOCw0NiBAQCBnbnVfZGVidWds aW5rX2NyYzMyICh1bnNpZ25lZCBsb25nIGNyYywKICBUaGlzIGNvbXB1dGF0aW9uIGRvZXMgbm90 IGFwcGx5IHRvIHRoZSBgYGJ1aWxkIElEJycgbWV0aG9kLgogIAogIApAQCAtMTYxOCw3ICsxNjAy LDcgQEAgaW5kZXggMTI5NzE3NS4uYzAzMGI2NSAxMDA2NDQKICBAbm9kZSBTeW1ib2wgRXJyb3Jz CiAgQHNlY3Rpb24gRXJyb3JzIFJlYWRpbmcgU3ltYm9sIEZpbGVzCiAgCi1AQCAtMjAzMTAsOCAr MjAzNjEsNiBAQCBjb250YWluaW5nIEBjb2Rle2VuZH0uICBGb3IgZXhhbXBsZToKK0BAIC0yMDM0 OSw4ICsyMDQwMCw2IEBAIGNvbnRhaW5pbmcgQGNvZGV7ZW5kfS4gIEZvciBleGFtcGxlOgogIAog IEBzbWFsbGV4YW1wbGUKICAoQHZhbHVle0dEQlB9KSBweXRob24KQEAgLTE2MjcsNyArMTYxMSw3 IEBAIGluZGV4IDEyOTcxNzUuLmMwMzBiNjUgMTAwNjQ0CiAgPnByaW50IDIzCiAgPmVuZAogIDIz Ci1AQCAtMjAzMjQsNiArMjAzNzMsMTQgQEAgaW4gYSBQeXRob24gc2NyaXB0LiAgVGhpcyBjYW4g YmUgY29udHJvbGxlZCB1c2luZyBAY29kZXttYWludCBzZXQKK0BAIC0yMDM2Myw2ICsyMDQxMiwx NCBAQCBpbiBhIFB5dGhvbiBzY3JpcHQuICBUaGlzIGNhbiBiZSBjb250cm9sbGVkIHVzaW5nIEBj b2Rle21haW50IHNldAogIHB5dGhvbiBwcmludC1zdGFja306IGlmIEBjb2Rle29ufSwgdGhlIGRl ZmF1bHQsIHRoZW4gUHl0aG9uIHN0YWNrCiAgcHJpbnRpbmcgaXMgZW5hYmxlZDsgaWYgQGNvZGV7 b2ZmfSwgdGhlbiBQeXRob24gc3RhY2sgcHJpbnRpbmcgaXMKICBkaXNhYmxlZC4KQEAgLTE2NDIs NyArMTYyNiw3IEBAIGluZGV4IDEyOTcxNzUuLmMwMzBiNjUgMTAwNjQ0CiAgQGVuZCB0YWJsZQog IAogIEl0IGlzIGFsc28gcG9zc2libGUgdG8gZXhlY3V0ZSBhIFB5dGhvbiBzY3JpcHQgZnJvbSB0 aGUgQHZhbHVle0dEQk59Ci1AQCAtMjAzNDUsNiArMjA0MDIsMTQgQEAgYW5kIHRodXMgaXMgYWx3 YXlzIGF2YWlsYWJsZS4KK0BAIC0yMDM4NCw2ICsyMDQ0MSwxNCBAQCBhbmQgdGh1cyBpcyBhbHdh eXMgYXZhaWxhYmxlLgogIEBjaW5kZXggcHl0aG9uIGFwaQogIEBjaW5kZXggcHJvZ3JhbW1pbmcg aW4gcHl0aG9uCiAgCkBAIC0xNjU3LDcgKzE2NDEsNyBAQCBpbmRleCAxMjk3MTc1Li5jMDMwYjY1 IDEwMDY0NAogIEBjaW5kZXggcHl0aG9uIHN0ZG91dAogIEBjaW5kZXggcHl0aG9uIHBhZ2luYXRp b24KICBBdCBzdGFydHVwLCBAdmFsdWV7R0RCTn0gb3ZlcnJpZGVzIFB5dGhvbidzIEBjb2Rle3N5 cy5zdGRvdXR9IGFuZAotQEAgLTIwMzU2LDcgKzIwNDIxLDcgQEAgc2l0dWF0aW9uLCBhIFB5dGhv biBAY29kZXtLZXlib2FyZEludGVycnVwdH0gZXhjZXB0aW9uIGlzIHRocm93bi4KK0BAIC0yMDM5 NSw3ICsyMDQ2MCw3IEBAIHNpdHVhdGlvbiwgYSBQeXRob24gQGNvZGV7S2V5Ym9hcmRJbnRlcnJ1 cHR9IGV4Y2VwdGlvbiBpcyB0aHJvd24uCiAgQG1lbnUKICAqIEJhc2ljIFB5dGhvbjo6ICAgICAg ICAgICAgICAgIEJhc2ljIFB5dGhvbiBGdW5jdGlvbnMuCiAgKiBFeGNlcHRpb24gSGFuZGxpbmc6 OgpAQCAtMTY2Niw3ICsxNjUwLDcgQEAgaW5kZXggMTI5NzE3NS4uYzAzMGI2NSAxMDA2NDQKICAq IFR5cGVzIEluIFB5dGhvbjo6ICAgICAgICAgICAgIFB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiB0 eXBlcy4KICAqIFByZXR0eSBQcmludGluZyBBUEk6OiAgICAgICAgIFByZXR0eS1wcmludGluZyB2 YWx1ZXMuCiAgKiBTZWxlY3RpbmcgUHJldHR5LVByaW50ZXJzOjogICBIb3cgR0RCIGNob29zZXMg YSBwcmV0dHktcHJpbnRlci4KLUBAIC0yMDQxNSw2ICsyMDQ4MCwxMiBAQCBSZXR1cm4gYSBzZXF1 ZW5jZSBob2xkaW5nIGFsbCBvZiBAdmFsdWV7R0RCTn0ncyBicmVha3BvaW50cy4KK0BAIC0yMDQ1 Niw2ICsyMDUyMSwxMiBAQCBSZXR1cm4gYSBzZXF1ZW5jZSBob2xkaW5nIGFsbCBvZiBAdmFsdWV7 R0RCTn0ncyBicmVha3BvaW50cy4KICBAeHJlZntCcmVha3BvaW50cyBJbiBQeXRob259LCBmb3Ig bW9yZSBpbmZvcm1hdGlvbi4KICBAZW5kIGRlZnVuCiAgCkBAIC0xNjc5LDcgKzE2NjMsNyBAQCBp bmRleCAxMjk3MTc1Li5jMDMwYjY1IDEwMDY0NAogIEBmaW5kZXggZ2RiLnBhcmFtZXRlcgogIEBk ZWZ1biBwYXJhbWV0ZXIgcGFyYW1ldGVyCiAgUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIEB2YWx1ZXtH REJOfSBwYXJhbWV0ZXIuICBAdmFye3BhcmFtZXRlcn0gaXMgYQotQEAgLTIwNDMxLDYgKzIwNTAy LDcgQEAgYSBQeXRob24gdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUsIGFuZCByZXR1cm5l ZC4KK0BAIC0yMDQ3Miw2ICsyMDU0Myw3IEBAIGEgUHl0aG9uIHZhbHVlIG9mIHRoZSBhcHByb3By aWF0ZSB0eXBlLCBhbmQgcmV0dXJuZWQuCiAgQGRlZnVuIGhpc3RvcnkgbnVtYmVyCiAgUmV0dXJu IGEgdmFsdWUgZnJvbSBAdmFsdWV7R0RCTn0ncyB2YWx1ZSBoaXN0b3J5IChAcHhyZWZ7VmFsdWUK ICBIaXN0b3J5fSkuICBAdmFye251bWJlcn0gaW5kaWNhdGVzIHdoaWNoIGhpc3RvcnkgZWxlbWVu dCB0byByZXR1cm4uCkBAIC0xNjg3LDcgKzE2NzEsNyBAQCBpbmRleCAxMjk3MTc1Li5jMDMwYjY1 IDEwMDY0NAogIElmIEB2YXJ7bnVtYmVyfSBpcyBuZWdhdGl2ZSwgdGhlbiBAdmFsdWV7R0RCTn0g d2lsbCB0YWtlIGl0cyBhYnNvbHV0ZSB2YWx1ZQogIGFuZCBjb3VudCBiYWNrd2FyZCBmcm9tIHRo ZSBsYXN0IGVsZW1lbnQgKGkuZS4sIHRoZSBtb3N0IHJlY2VudCBlbGVtZW50KSB0bwogIGZpbmQg dGhlIHZhbHVlIHRvIHJldHVybi4gIElmIEB2YXJ7bnVtYmVyfSBpcyB6ZXJvLCB0aGVuIEB2YWx1 ZXtHREJOfSB3aWxsCi1AQCAtMjA0NTUsNiArMjA1MjcsMjEgQEAgY29tcHV0ZSB2YWx1ZXMsIGZv ciBleGFtcGxlLCBpdCBpcyB0aGUgb25seSB3YXkgdG8gZ2V0IHRoZSB2YWx1ZSBvZiBhCitAQCAt MjA0OTYsNiArMjA1NjgsMjEgQEAgY29tcHV0ZSB2YWx1ZXMsIGZvciBleGFtcGxlLCBpdCBpcyB0 aGUgb25seSB3YXkgdG8gZ2V0IHRoZSB2YWx1ZSBvZiBhCiAgY29udmVuaWVuY2UgdmFyaWFibGUg KEBweHJlZntDb252ZW5pZW5jZSBWYXJzfSkgYXMgYSBAY29kZXtnZGIuVmFsdWV9LgogIEBlbmQg ZGVmdW4KICAKQEAgLTE4OTQsNyArMTg3OCw3IEBAIGluZGV4IDYxYjhmMDAuLmQ5NGMwM2MgMTAw NjQ0CiAgICAvKiBUaGUgY3VycmVudCBkZXB0aCBvZiBkd2FyZiBleHByZXNzaW9uIHJlY3Vyc2lv biwgdmlhIERXX09QX2NhbGwqLAogICAgICAgRFdfT1BfZmJyZWcsIERXX09QX3B1c2hfb2JqZWN0 X2FkZHJlc3MsIGV0Yy4sIGFuZCB0aGUgbWF4aW11bQogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJs b2MuYyBiL2dkYi9kd2FyZjJsb2MuYwotaW5kZXggMmE4ZTU1Ny4uYmU3NDQxMiAxMDA2NDQKK2lu ZGV4IGY1OWJjNDAuLjdmZjBlZjkgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYybG9jLmMKICsrKyBi L2dkYi9kd2FyZjJsb2MuYwogQEAgLTQ4LDYgKzQ4LDEyIEBAIHN0YXRpYyB2b2lkCkBAIC0yMTcy LDcgKzIxNTYsNyBAQCBpbmRleCAyYThlNTU3Li5iZTc0NDEyIDEwMDY0NAogIAkgICAgcmV0dmFs ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwogIAkgICAgVkFMVUVfTFZBTCAocmV0dmFsKSA9IGx2 YWxfbWVtb3J5OwogIAkgICAgc2V0X3ZhbHVlX2xhenkgKHJldHZhbCwgMSk7Ci1AQCAtMjU4Niwx MSArMjc0NCw1MSBAQCBsb2NsaXN0X3RyYWNlcG9pbnRfdmFyX3JlZiAoc3RydWN0IHN5bWJvbCAq c3ltYm9sLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC0yNTkwLDExICsyNzQ4LDUxIEBA IGxvY2xpc3RfdHJhY2Vwb2ludF92YXJfcmVmIChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLAogIAkJCSBkbGJhdG9uLT5wZXJfY3UpOwogIH0KICAKQEAgLTIy NDYsMTkgKzIyMzAsMjAgQEAgaW5kZXggODI2YmM0NS4uMWU3ZDhkYyAxMDA2NDQKICAKICAjZW5k aWYgLyogZHdhcmYybG9jLmggKi8KIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2Ri L2R3YXJmMnJlYWQuYwotaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKK2luZGV4IDFlNzUy MzUuLmQ1NGUyNjYgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYycmVhZC5jCiArKysgYi9nZGIvZHdh cmYycmVhZC5jCi1AQCAtNTEsNiArNTEsOCBAQAorQEAgLTUxLDYgKzUxLDkgQEAKICAjaW5jbHVk ZSAidHlwZXByaW50LmgiCiAgI2luY2x1ZGUgImp2LWxhbmcuaCIKICAjaW5jbHVkZSAicHN5bXBy aXYuaCIKICsjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgogKyNpbmNsdWRlICJnZGJfc3RhdC5oIgor KyNpbmNsdWRlICJjb21wbGV0ZXIuaCIKICAKICAjaW5jbHVkZSA8ZmNudGwuaD4KICAjaW5jbHVk ZSAiZ2RiX3N0cmluZy5oIgotQEAgLTEyOSw2ICsxMzEsMzMgQEAgc3RydWN0IGR3YXJmMl9zZWN0 aW9uX2luZm8KK0BAIC0xMjksNiArMTMyLDMzIEBAIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZv CiAgICBpbnQgcmVhZGluOwogIH07CiAgCkBAIC0yMjkyLDcgKzIyNzcsNyBAQCBpbmRleCAxNjM4 MWRlLi4zMWE3ZDgzIDEwMDY0NAogIHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUKICB7CiAgICBz dHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBpbmZvOwotQEAgLTE0MSw2ICsxNzAsNyBAQCBzdHJ1 Y3QgZHdhcmYyX3Blcl9vYmpmaWxlCitAQCAtMTQxLDYgKzE3MSw3IEBAIHN0cnVjdCBkd2FyZjJf cGVyX29iamZpbGUKICAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIHR5cGVzOwogICAgc3Ry dWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gZnJhbWU7CiAgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25f aW5mbyBlaF9mcmFtZTsKQEAgLTIzMDAsNyArMjI4NSw3IEBAIGluZGV4IDE2MzgxZGUuLjMxYTdk ODMgMTAwNjQ0CiAgCiAgICAvKiBCYWNrIGxpbmsuICAqLwogICAgc3RydWN0IG9iamZpbGUgKm9i amZpbGU7Ci1AQCAtMTYzLDYgKzE5MywxMiBAQCBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlCitA QCAtMTYzLDYgKzE5NCwxMiBAQCBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlCiAgICAvKiBBIGZs YWcgaW5kaWNhdGluZyB3ZXRoZXIgdGhpcyBvYmpmaWxlIGhhcyBhIHNlY3Rpb24gbG9hZGVkIGF0 IGEKICAgICAgIFZNQSBvZiAwLiAgKi8KICAgIGludCBoYXNfc2VjdGlvbl9hdF96ZXJvOwpAQCAt MjMxMyw3ICsyMjk4LDcgQEAgaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICB9OwogIAog IHN0YXRpYyBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlICpkd2FyZjJfcGVyX29iamZpbGU7Ci1A QCAtMTgyLDYgKzIxOCw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlICpkd2Fy ZjJfcGVyX29iamZpbGU7CitAQCAtMTgyLDYgKzIxOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHdhcmYy X3Blcl9vYmpmaWxlICpkd2FyZjJfcGVyX29iamZpbGU7CiAgI2RlZmluZSBUWVBFU19TRUNUSU9O ICAgICJkZWJ1Z190eXBlcyIKICAjZGVmaW5lIEZSQU1FX1NFQ1RJT04gICAgImRlYnVnX2ZyYW1l IgogICNkZWZpbmUgRUhfRlJBTUVfU0VDVElPTiAiZWhfZnJhbWUiCkBAIC0yMzIxLDcgKzIzMDYs NyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAogIAogIC8qIGxvY2FsIGRhdGEgdHlw ZXMgKi8KICAKLUBAIC0zMDcsNiArMzQ0LDMyIEBAIHN0cnVjdCBkd2FyZjJfY3UKK0BAIC0zMDcs NiArMzQ1LDMyIEBAIHN0cnVjdCBkd2FyZjJfY3UKICAgIHVuc2lnbmVkIGludCBoYXNfbmFtZXNw YWNlX2luZm8gOiAxOwogIH07CiAgCkBAIC0yMzU0LDcgKzIzMzksNyBAQCBpbmRleCAxNjM4MWRl Li4zMWE3ZDgzIDEwMDY0NAogIC8qIFBlcnNpc3RlbnQgZGF0YSBoZWxkIGZvciBhIGNvbXBpbGF0 aW9uIHVuaXQsIGV2ZW4gd2hlbiBub3QKICAgICBwcm9jZXNzaW5nIGl0LiAgV2UgcHV0IGEgcG9p bnRlciB0byB0aGlzIHN0cnVjdHVyZSBpbiB0aGUKICAgICByZWFkX3N5bXRhYl9wcml2YXRlIGZp ZWxkIG9mIHRoZSBwc3ltdGFiLiAgSWYgd2UgZW5jb3VudGVyCi1AQCAtMzQ3LDEwICs0MTAsMjEg QEAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YQorQEAgLTM0NywxMCArNDExLDIxIEBAIHN0cnVj dCBkd2FyZjJfcGVyX2N1X2RhdGEKICAgICAgIGl0LiAgKi8KICAgIGh0YWJfdCB0eXBlX2hhc2g7 CiAgCkBAIC0yMzgwLDcgKzIzNjUsNyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAog IH07CiAgCiAgLyogRW50cnkgaW4gdGhlIHNpZ25hdHVyZWRfdHlwZXMgaGFzaCB0YWJsZS4gICov Ci1AQCAtMTA4Myw2ICsxMTU3LDkgQEAgc3RhdGljIGludCBhdHRyX2Zvcm1faXNfc2VjdGlvbl9v ZmZzZXQgKHN0cnVjdCBhdHRyaWJ1dGUgKik7CitAQCAtMTA4Myw2ICsxMTU4LDkgQEAgc3RhdGlj IGludCBhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKHN0cnVjdCBhdHRyaWJ1dGUgKik7CiAg CiAgc3RhdGljIGludCBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKHN0cnVjdCBhdHRyaWJ1dGUgKik7 CiAgCkBAIC0yMzkwLDcgKzIzNzUsNyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAog IHN0YXRpYyB2b2lkIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0 ZSAqYXR0ciwKICAJCQkJCSBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAgCQkJCQkgc3RydWN0IGR3YXJm Ml9jdSAqY3UpOwotQEAgLTExMTMsNiArMTE5MCw5IEBAIHN0YXRpYyB2b2lkIGFnZV9jYWNoZWRf Y29tcF91bml0cyAodm9pZCk7CitAQCAtMTExMyw2ICsxMTkxLDkgQEAgc3RhdGljIHZvaWQgYWdl X2NhY2hlZF9jb21wX3VuaXRzICh2b2lkKTsKICAKICBzdGF0aWMgdm9pZCBmcmVlX29uZV9jYWNo ZWRfY29tcF91bml0ICh2b2lkICopOwogIApAQCAtMjQwMCw3ICsyMzg1LDcgQEAgaW5kZXggMTYz ODFkZS4uMzFhN2Q4MyAxMDA2NDQKICBzdGF0aWMgc3RydWN0IHR5cGUgKnNldF9kaWVfdHlwZSAo c3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCB0eXBlICosCiAgCQkJCSAgc3RydWN0IGR3YXJmMl9j dSAqKTsKICAKLUBAIC0xMTMyLDYgKzEyMTIsNTYgQEAgc3RhdGljIHZvaWQgZHdhcmYyX2NsZWFy X21hcmtzIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICopOworQEAgLTExMzIsNiArMTIxMyw1 NiBAQCBzdGF0aWMgdm9pZCBkd2FyZjJfY2xlYXJfbWFya3MgKHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdGEgKik7CiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICpnZXRfZGllX3R5cGUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7CiAgCkBAIC0yNDU3LDcgKzI0NDIs NyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAogIC8qIFRyeSB0byBsb2NhdGUgdGhl IHNlY3Rpb25zIHdlIG5lZWQgZm9yIERXQVJGIDIgZGVidWdnaW5nCiAgICAgaW5mb3JtYXRpb24g YW5kIHJldHVybiB0cnVlIGlmIHdlIGhhdmUgZW5vdWdoIHRvIGRvIHNvbWV0aGluZy4gICovCiAg Ci1AQCAtMTIzMCw2ICsxMzYwLDExIEBAIGR3YXJmMl9sb2NhdGVfc2VjdGlvbnMgKGJmZCAqYWJm ZCwgYXNlY3Rpb24gKnNlY3RwLCB2b2lkICppZ25vcmVfcHRyKQorQEAgLTEyMzAsNiArMTM2MSwx MSBAQCBkd2FyZjJfbG9jYXRlX3NlY3Rpb25zIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0cCwg dm9pZCAqaWdub3JlX3B0cikKICAgICAgICBkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVzLmFzZWN0 aW9uID0gc2VjdHA7CiAgICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlcy5zaXplID0gYmZk X2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKICAgICAgfQpAQCAtMjQ2OSwxNyArMjQ1NCwxMyBA QCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAogIAogICAgaWYgKChiZmRfZ2V0X3NlY3Rp b25fZmxhZ3MgKGFiZmQsIHNlY3RwKSAmIFNFQ19MT0FEKQogICAgICAgICYmIGJmZF9zZWN0aW9u X3ZtYSAoYWJmZCwgc2VjdHApID09IDApCi1AQCAtMTM0OSw5MSArMTQ4NCw5NDQgQEAgZHdhcmYy X3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBkd2FyZjJfc2Vj dGlvbl9pbmZvICppbmZvKQotICAgICAgICAgfQotICAgICB9CitAQCAtMTM1Myw4NyArMTQ4OSw5 NDAgQEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVj dCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQorICAgaWYgKHBhZ2VzaXplID09IDApCisgICAg IHBhZ2VzaXplID0gZ2V0cGFnZXNpemUgKCk7CiAgCi0tI2lmZGVmIEhBVkVfTU1BUAotLSAgaWYg KHBhZ2VzaXplID09IDApCi0tICAgIHBhZ2VzaXplID0gZ2V0cGFnZXNpemUgKCk7Ci0rI2lmZGVm IEhBVkVfTU1BUAotKyAgaWYgKHBhZ2VzaXplID09IDApCi0rICAgIHBhZ2VzaXplID0gZ2V0cGFn ZXNpemUgKCk7Ci0rCistICAvKiBPbmx5IHRyeSB0byBtbWFwIHNlY3Rpb25zIHdoaWNoIGFyZSBs YXJnZSBlbm91Z2g6IHdlIGRvbid0IHdhbnQgdG8KKy0gICAgIHdhc3RlIHNwYWNlIGR1ZSB0byBm cmFnbWVudGF0aW9uLiAgQWxzbywgb25seSB0cnkgbW1hcCBmb3Igc2VjdGlvbnMKKy0gICAgIHdp dGhvdXQgcmVsb2NhdGlvbnMuICAqLwogKyAgLyogT25seSB0cnkgdG8gbW1hcCBzZWN0aW9ucyB3 aGljaCBhcmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50IHRvCiArICAgICB3YXN0ZSBzcGFj ZSBkdWUgdG8gZnJhZ21lbnRhdGlvbi4gIEFsc28sIG9ubHkgdHJ5IG1tYXAgZm9yIHNlY3Rpb25z CiArICAgICB3aXRob3V0IHJlbG9jYXRpb25zLiAgKi8KQEAgLTMyOTYsMTMgKzMyNzcsMTAgQEAg aW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICsgIG9mZnNldF90eXBlIGl0ZXI7CiArICBk dzJfc2V0dXAgKG9iamZpbGUpOwogIAotLSAgLyogT25seSB0cnkgdG8gbW1hcCBzZWN0aW9ucyB3 aGljaCBhcmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50IHRvCi0tICAgICB3YXN0ZSBzcGFj ZSBkdWUgdG8gZnJhZ21lbnRhdGlvbi4gIEFsc28sIG9ubHkgdHJ5IG1tYXAgZm9yIHNlY3Rpb25z Ci0tICAgICB3aXRob3V0IHJlbG9jYXRpb25zLiAgKi8KKy0gIGlmIChpbmZvLT5zaXplID4gNCAq IHBhZ2VzaXplICYmIChzZWN0cC0+ZmxhZ3MgJiBTRUNfUkVMT0MpID09IDApCiArICBpZiAoIWR3 YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUpCiArICAgIHJldHVybjsKLSAKLS0gIGlmIChp bmZvLT5zaXplID4gNCAqIHBhZ2VzaXplICYmIChzZWN0cC0+ZmxhZ3MgJiBTRUNfUkVMT0MpID09 IDApCisrCiArICBmb3IgKGl0ZXIgPSAwOwogKyAgICAgICBpdGVyIDwgZHdhcmYyX3Blcl9vYmpm aWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVfc2xvdHM7CiArICAgICAgICsraXRlcikKQEAg LTM0NzksNyArMzQ1NywxNSBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAogIC8qIEJ1 aWxkIGEgcGFydGlhbCBzeW1ib2wgdGFibGUuICAqLwogIAogIHZvaWQKLUBAIC0xODk3LDcgKzI4 ODUsNyBAQCBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKK0BAIC0xNjk5LDYgKzI2ODgsNyBAQCBjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgICAgICAgdHlwZV9zaWctPnNpZ25hdHVyZSA9IHNp Z25hdHVyZTsKKyAgICAgICB0eXBlX3NpZy0+b2Zmc2V0ID0gb2Zmc2V0OworICAgICAgIHR5cGVf c2lnLT50eXBlX29mZnNldCA9IHR5cGVfb2Zmc2V0OworKyAgICAgIHR5cGVfc2lnLT5wZXJfY3Uu b2JqZmlsZSA9IG9iamZpbGU7CisgCisgICAgICAgc2xvdCA9IGh0YWJfZmluZF9zbG90ICh0eXBl c19odGFiLCB0eXBlX3NpZywgSU5TRVJUKTsKKyAgICAgICBnZGJfYXNzZXJ0IChzbG90ICE9IE5V TEwpOworQEAgLTE4OTcsNyArMjg4Nyw3IEBAIHByb2Nlc3NfcHN5bXRhYl9jb21wX3VuaXQgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgLyogU3RvcmUgdGhlIGZ1bmN0aW9uIHRoYXQgcmVh ZHMgaW4gdGhlIHJlc3Qgb2YgdGhlIHN5bWJvbCB0YWJsZSAqLwogICAgcHN0LT5yZWFkX3N5bXRh YiA9IGR3YXJmMl9wc3ltdGFiX3RvX3N5bXRhYjsKICAKQEAgLTM0ODgsNyArMzQ3NCw3IEBAIGlu ZGV4IDE2MzgxZGUuLjMxYTdkODMgMTAwNjQ0CiAgCiAgICBkd2FyZjJfZmluZF9iYXNlX2FkZHJl c3MgKGNvbXBfdW5pdF9kaWUsICZjdSk7CiAgCi1AQCAtMjE4Miw2ICszMTcwLDcgQEAgY3JlYXRl X2FsbF9jb21wX3VuaXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKK0BAIC0yMTgyLDYgKzMx NzIsNyBAQCBjcmVhdGVfYWxsX2NvbXBfdW5pdHMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQog ICAgICAgIG1lbXNldCAodGhpc19jdSwgMCwgc2l6ZW9mICgqdGhpc19jdSkpOwogICAgICAgIHRo aXNfY3UtPm9mZnNldCA9IG9mZnNldDsKICAgICAgICB0aGlzX2N1LT5sZW5ndGggPSBsZW5ndGgg KyBpbml0aWFsX2xlbmd0aF9zaXplOwpAQCAtMzQ5Niw3ICszNDgyLDcgQEAgaW5kZXggMTYzODFk ZS4uMzFhN2Q4MyAxMDA2NDQKICAKICAgICAgICBpZiAobl9jb21wX3VuaXRzID09IG5fYWxsb2Nh dGVkKQogIAl7Ci1AQCAtMjYxMyw3ICszNjAyLDcgQEAgYWRkX3BhcnRpYWxfc3VicHJvZ3JhbSAo c3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwKK0BAIC0yNjEzLDcgKzM2MDQsNyBAQCBhZGRf cGFydGlhbF9zdWJwcm9ncmFtIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGRpLAogIAkgICAg ICBhZGRybWFwX3NldF9lbXB0eSAob2JqZmlsZS0+cHN5bXRhYnNfYWRkcm1hcCwKICAJCQkJIHBk aS0+bG93cGMgKyBiYXNlYWRkciwKICAJCQkJIHBkaS0+aGlnaHBjIC0gMSArIGJhc2VhZGRyLApA QCAtMzUwNSw3ICszNDkxLDcgQEAgaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICAJICAg IH0KICAgICAgICAgICAgaWYgKCFwZGktPmlzX2RlY2xhcmF0aW9uKQogIAkgICAgLyogSWdub3Jl IHN1YnByb2dyYW0gRElFcyB0aGF0IGRvIG5vdCBoYXZlIGEgbmFtZSwgdGhleSBhcmUKLUBAIC0y ODg1LDcgKzM4NzQsNiBAQCBsb2NhdGVfcGRpX3NpYmxpbmcgKHN0cnVjdCBwYXJ0aWFsX2RpZV9p bmZvICpvcmlnX3BkaSwKK0BAIC0yODg1LDcgKzM4NzYsNiBAQCBsb2NhdGVfcGRpX3NpYmxpbmcg KHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpvcmlnX3BkaSwKICBzdGF0aWMgdm9pZAogIGR3YXJm Ml9wc3ltdGFiX3RvX3N5bXRhYiAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QpCiAgewpAQCAt MzUxMyw3ICszNDk5LDcgQEAgaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICAgIGlmIChw c3QgIT0gTlVMTCkKICAgICAgewogICAgICAgIGlmIChwc3QtPnJlYWRpbikKLUBAIC0yOTU4LDcg KzM5NDYsOSBAQCBwcm9jZXNzX3F1ZXVlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKK0BAIC0y OTU4LDcgKzM5NDgsOSBAQCBwcm9jZXNzX3F1ZXVlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkK ICAgICAgIG1heSBsb2FkIGEgbmV3IENVLCBhZGRpbmcgaXQgdG8gdGhlIGVuZCBvZiB0aGUgcXVl dWUuICAqLwogICAgZm9yIChpdGVtID0gZHdhcmYyX3F1ZXVlOyBpdGVtICE9IE5VTEw7IGR3YXJm Ml9xdWV1ZSA9IGl0ZW0gPSBuZXh0X2l0ZW0pCiAgICAgIHsKQEAgLTM1MjQsNyArMzUxMCw3IEBA IGluZGV4IDE2MzgxZGUuLjMxYTdkODMgMTAwNjQ0CiAgCXByb2Nlc3NfZnVsbF9jb21wX3VuaXQg KGl0ZW0tPnBlcl9jdSk7CiAgCiAgICAgICAgaXRlbS0+cGVyX2N1LT5xdWV1ZWQgPSAwOwotQEAg LTMwMzUsMjIgKzQwMjUsNyBAQCBwc3ltdGFiX3RvX3N5bXRhYl8xIChzdHJ1Y3QgcGFydGlhbF9z eW10YWIgKnBzdCkKK0BAIC0zMDM1LDIyICs0MDI3LDcgQEAgcHN5bXRhYl90b19zeW10YWJfMSAo c3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QpCiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgCkBA IC0zNTQ4LDcgKzM1MzQsNyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAogIH0KICAK ICAvKiBMb2FkIHRoZSBESUVzIGFzc29jaWF0ZWQgd2l0aCBQRVJfQ1UgaW50byBtZW1vcnkuICAq LwotQEAgLTMxMzAsOSArNDEwNSw4IEBAIGxvYWRfZnVsbF9jb21wX3VuaXQgKHN0cnVjdCBkd2Fy ZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCitAQCAtMzEz MCw5ICs0MTA3LDggQEAgbG9hZF9mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3Vf ZGF0YSAqcGVyX2N1LCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKICBzdGF0aWMgdm9pZAogIHBy b2Nlc3NfZnVsbF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkK ICB7CkBAIC0zNTU5LDcgKzM1NDUsNyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAog ICAgQ09SRV9BRERSIGxvd3BjLCBoaWdocGM7CiAgICBzdHJ1Y3Qgc3ltdGFiICpzeW10YWI7CiAg ICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLUBAIC0zMTY1LDggKzQxMzksMTUgQEAgcHJvY2Vz c19mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQorQEAg LTMxNjUsOCArNDE0MSwxNSBAQCBwcm9jZXNzX2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYy X3Blcl9jdV9kYXRhICpwZXJfY3UpCiAgICAgIHsKICAgICAgICBzeW10YWItPmxhbmd1YWdlID0g Y3UtPmxhbmd1YWdlOwogICAgICB9CkBAIC0zNTc3LDcgKzM1NjMsNyBAQCBpbmRleCAxNjM4MWRl Li4zMWE3ZDgzIDEwMDY0NAogIAogICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwogIH0KLUBAIC0z NTU5LDYgKzQ1NDAsNDYgQEAgZnJlZV9jdV9saW5lX2hlYWRlciAodm9pZCAqYXJnKQorQEAgLTM1 NTcsNiArNDU0MCw0NiBAQCBmcmVlX2N1X2xpbmVfaGVhZGVyICh2b2lkICphcmcpCiAgfQogIAog IHN0YXRpYyB2b2lkCkBAIC0zNjI0LDcgKzM2MTAsNyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgz IDEwMDY0NAogIHJlYWRfZmlsZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQogIHsKICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gY3UtPm9iamZp bGU7Ci1AQCAtMzU4NCwzNSArNDYwNSw3IEBAIHJlYWRfZmlsZV9zY29wZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTM1ODIsMzUgKzQ2MDUsNyBAQCBy ZWFkX2ZpbGVfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKICAgIGxvd3BjICs9IGJhc2VhZGRyOwogICAgaGlnaHBjICs9IGJhc2VhZGRyOwogIApAQCAt MzY2MSw3ICszNjQ3LDcgQEAgaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICAKICAgIGF0 dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9sYW5ndWFnZSwgY3UpOwogICAgaWYgKGF0dHIp Ci1AQCAtNTUzMSw2ICs2NTI0LDI5IEBAIHByb2Nlc3NfZW51bWVyYXRpb25fc2NvcGUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC01NTI5LDYgKzY1MjQs MjkgQEAgcHJvY2Vzc19lbnVtZXJhdGlvbl9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgbmV3X3N5bWJvbCAoZGllLCB0aGlzX3R5cGUsIGN1KTsK ICB9CiAgCkBAIC0zNjkxLDcgKzM2NzcsNyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0 NAogIC8qIEV4dHJhY3QgYWxsIGluZm9ybWF0aW9uIGZyb20gYSBEV19UQUdfYXJyYXlfdHlwZSBE SUUgYW5kIHB1dCBpdCBpbgogICAgIHRoZSBESUUncyB0eXBlIGZpZWxkLiAgRm9yIG5vdywgdGhp cyBvbmx5IGhhbmRsZXMgb25lIGRpbWVuc2lvbmFsCiAgICAgYXJyYXlzLiAgKi8KLUBAIC01NTQ0 LDcgKzY1NjAsNyBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC01NTQyLDcgKzY1NjAsNyBAQCByZWFkX2FycmF5X3R5cGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCB0 eXBlICplbGVtZW50X3R5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZTsKICAgIHN0cnVjdCB0 eXBlICoqcmFuZ2VfdHlwZXMgPSBOVUxMOwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKQEAg LTM3MDAsNyArMzY4Niw3IEBAIGluZGV4IDE2MzgxZGUuLjMxYTdkODMgMTAwNjQ0CiAgICBzdHJ1 Y3QgY2xlYW51cCAqYmFja190bzsKICAgIGNoYXIgKm5hbWU7CiAgCi1AQCAtNTU5NywxNyArNjYx MywxMSBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKK0BAIC01NTk1LDE3ICs2NjEzLDExIEBAIHJlYWRfYXJyYXlfdHlwZSAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgdHlwZSA9IGVsZW1l bnRfdHlwZTsKICAKICAgIGlmIChyZWFkX2FycmF5X29yZGVyIChkaWUsIGN1KSA9PSBEV19PUkRf Y29sX21ham9yKQpAQCAtMzcyMyw3ICszNzA5LDcgQEAgaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAx MDA2NDQKICAKICAgIC8qIFVuZGVyc3RhbmQgRHdhcmYyIHN1cHBvcnQgZm9yIHZlY3RvciB0eXBl cyAobGlrZSB0aGV5IG9jY3VyIG9uCiAgICAgICB0aGUgUG93ZXJQQyB3LyBBbHRpVmVjKS4gIEdj YyBqdXN0IGFkZHMgYW5vdGhlciBhdHRyaWJ1dGUgdG8gdGhlCi1AQCAtNjA2MSwyOSArNzA3MSwx MTQgQEAgcmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKK0BAIC02MDU5LDI5ICs3MDcxLDExNCBAQCByZWFkX3RhZ19zdHJpbmdf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKICAgIHN0 cnVjdCB0eXBlICp0eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpjaGFyX3R5cGU7CiAg ICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtMzg1Miw3ICszODM4LDcgQEAgaW5kZXggMTYz ODFkZS4uMzFhN2Q4MyAxMDA2NDQKICAgIGNoYXJfdHlwZSA9IGxhbmd1YWdlX3N0cmluZ19jaGFy X3R5cGUgKGN1LT5sYW5ndWFnZV9kZWZuLCBnZGJhcmNoKTsKICAgIHR5cGUgPSBjcmVhdGVfc3Ry aW5nX3R5cGUgKE5VTEwsIGNoYXJfdHlwZSwgcmFuZ2VfdHlwZSk7CiAgCi1AQCAtNjMyNiw2MCAr NzQyMSwxMzYgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNjMyNCw2MCArNzQyMSwxMzYgQEAgcmVhZF9zdWJyYW5n ZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBz dHJ1Y3QgdHlwZSAqYmFzZV90eXBlOwogICAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGU7CiAgICBz dHJ1Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtNDAyMyw3ICs0MDA5LDcgQEAgaW5kZXggMTYzODFk ZS4uMzFhN2Q4MyAxMDA2NDQKICAgICAgfQogIAogICAgLyogRHdhcmYtMiBzcGVjaWZpY2F0aW9u cyBleHBsaWNpdGx5IGFsbG93cyB0byBjcmVhdGUgc3VicmFuZ2UgdHlwZXMKLUBAIC02NDIxLDIw ICs3NTkyLDQxIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTY0MTksMjAgKzc1OTIsNDEgQEAgcmVhZF9zdWJyYW5n ZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCX0K ICAgICAgfQogIApAQCAtNDA3Nyw3ICs0MDYzLDcgQEAgaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAx MDA2NDQKICAKICAgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7CiAgICBpZiAobmFtZSkK LUBAIC04NzE0LDEwICs5OTA2LDEyIEBAIHZhcl9kZWNvZGVfbG9jYXRpb24gKHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKK0BAIC04NzEyLDEwICs5OTA2LDEyIEBA IHZhcl9kZWNvZGVfbG9jYXRpb24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1i b2wgKnN5bSwKICAgICAgIChpLmUuIHdoZW4gdGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgb3IgbWVt b3J5IGxvY2F0aW9uIGlzCiAgICAgICByZWZlcmVuY2VkLCBvciBhIHRocmVhZC1sb2NhbCBibG9j aywgZXRjLikuICBUaGVuIGFnYWluLCBpdCBtaWdodAogICAgICAgbm90IGJlIHdvcnRod2hpbGUu ICBJJ20gYXNzdW1pbmcgdGhhdCBpdCBpc24ndCB1bmxlc3MgcGVyZm9ybWFuY2UKQEAgLTQwOTIs NyArNDA3OCw3IEBAIGluZGV4IDE2MzgxZGUuLjMxYTdkODMgMTAwNjQ0CiAgfQogIAogIC8qIEdp dmVuIGEgcG9pbnRlciB0byBhIERXQVJGIGluZm9ybWF0aW9uIGVudHJ5LCBmaWd1cmUgb3V0IGlm IHdlIG5lZWQKLUBAIC04NzQ4LDYgKzk5NDIsOCBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTg3 NDYsNiArOTk0Miw4IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg dHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCQkJCQkgICAgIHNpemVvZiAoc3Ry dWN0IHN5bWJvbCkpOwogICAgICAgIE9CSlNUQVQgKG9iamZpbGUsIG5fc3ltcysrKTsKICAgICAg ICBtZW1zZXQgKHN5bSwgMCwgc2l6ZW9mIChzdHJ1Y3Qgc3ltYm9sKSk7CkBAIC00MTAxLDcgKzQw ODcsNyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAogIAogICAgICAgIC8qIENhY2hl IHRoaXMgc3ltYm9sJ3MgbmFtZSBhbmQgdGhlIG5hbWUncyBkZW1hbmdsZWQgZm9ybSAoaWYgYW55 KS4gICovCiAgICAgICAgU1lNQk9MX0xBTkdVQUdFIChzeW0pID0gY3UtPmxhbmd1YWdlOwotQEAg LTkzNzksNiArMTA1NzUsOSBAQCByZWFkX3R5cGVfZGllIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtOTM3NSw2ICsxMDU3Myw5IEBAIHJlYWRfdHlwZV9k aWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgICAgICBi cmVhazsKICAgICAgfQogIApAQCAtNDExMSw3ICs0MDk3LDcgQEAgaW5kZXggMTYzODFkZS4uMzFh N2Q4MyAxMDA2NDQKICAgIHJldHVybiB0aGlzX3R5cGU7CiAgfQogIAotQEAgLTExOTgzLDY3ICsx MzE4MiwxMDIgQEAgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChzdHJ1Y3QgYXR0cmlidXRlICphdHRy KQorQEAgLTExOTc5LDY3ICsxMzE4MCwxMDIgQEAgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChzdHJ1 Y3QgYXR0cmlidXRlICphdHRyKQogICAgICB9CiAgfQogIApAQCAtNDI2Myw3ICs0MjQ5LDcgQEAg aW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICAgICAgfQogIH0KICAKLUBAIC0xMjA1NCw3 ICsxMzI4OCw3IEBAIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0 ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAorQEAgLTEyMDUwLDcgKzEzMjg2LDcgQEAgZHdh cmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qg c3ltYm9sICpzeW0sCiAgc3RydWN0IG9iamZpbGUgKgogIGR3YXJmMl9wZXJfY3Vfb2JqZmlsZSAo c3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQogIHsKQEAgLTQyNzIsNyArNDI1OCw3 IEBAIGluZGV4IDE2MzgxZGUuLjMxYTdkODMgMTAwNjQ0CiAgCiAgICAvKiBSZXR1cm4gdGhlIG1h c3RlciBvYmpmaWxlLCBzbyB0aGF0IHdlIGNhbiByZXBvcnQgYW5kIGxvb2sgdXAgdGhlCiAgICAg ICBjb3JyZWN0IGZpbGUgY29udGFpbmluZyB0aGlzIHZhcmlhYmxlLiAgKi8KLUBAIC0xMjA3NCw3 ICsxMzMwOCw3IEBAIGR3YXJmMl9wZXJfY3VfYWRkcl9zaXplIChzdHJ1Y3QgZHdhcmYyX3Blcl9j dV9kYXRhICpwZXJfY3UpCitAQCAtMTIwNzAsNyArMTMzMDYsNyBAQCBkd2FyZjJfcGVyX2N1X2Fk ZHJfc2l6ZSAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQogICAgZWxzZQogICAg ICB7CiAgICAgICAgLyogSWYgdGhlIENVIGlzIG5vdCBjdXJyZW50bHkgcmVhZCBpbiwgd2UgcmUt cmVhZCBpdHMgaGVhZGVyLiAgKi8KQEAgLTQyODEsNyArNDI2Nyw3IEBAIGluZGV4IDE2MzgxZGUu LjMxYTdkODMgMTAwNjQ0CiAgICAgICAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29i amZpbGUKICAJPSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsIGR3YXJmMl9vYmpmaWxlX2RhdGFfa2V5 KTsKICAgICAgICBnZGJfYnl0ZSAqaW5mb19wdHIgPSBwZXJfb2JqZmlsZS0+aW5mby5idWZmZXIg KyBwZXJfY3UtPm9mZnNldDsKLUBAIC0xMjA5Niw3ICsxMzMzMCw3IEBAIGR3YXJmMl9wZXJfY3Vf b2Zmc2V0X3NpemUgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKK0BAIC0xMjA5 Miw3ICsxMzMyOCw3IEBAIGR3YXJmMl9wZXJfY3Vfb2Zmc2V0X3NpemUgKHN0cnVjdCBkd2FyZjJf cGVyX2N1X2RhdGEgKnBlcl9jdSkKICAgIGVsc2UKICAgICAgewogICAgICAgIC8qIElmIHRoZSBD VSBpcyBub3QgY3VycmVudGx5IHJlYWQgaW4sIHdlIHJlLXJlYWQgaXRzIGhlYWRlci4gICovCkBA IC00MjkwLDcgKzQyNzYsNyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAogICAgICAg IHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9vYmpmaWxlCiAgCT0gb2JqZmlsZV9kYXRh IChvYmpmaWxlLCBkd2FyZjJfb2JqZmlsZV9kYXRhX2tleSk7CiAgICAgICAgZ2RiX2J5dGUgKmlu Zm9fcHRyID0gcGVyX29iamZpbGUtPmluZm8uYnVmZmVyICsgcGVyX2N1LT5vZmZzZXQ7Ci1AQCAt MTIxMTYsNyArMTMzNTAsNyBAQCBkd2FyZjJfcGVyX2N1X29mZnNldF9zaXplIChzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCitAQCAtMTIxMTIsNyArMTMzNDgsNyBAQCBkd2FyZjJf cGVyX2N1X29mZnNldF9zaXplIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCiAg Q09SRV9BRERSCiAgZHdhcmYyX3Blcl9jdV90ZXh0X29mZnNldCAoc3RydWN0IGR3YXJmMl9wZXJf Y3VfZGF0YSAqcGVyX2N1KQogIHsKQEAgLTQyOTksNyArNDI4NSw3IEBAIGluZGV4IDE2MzgxZGUu LjMxYTdkODMgMTAwNjQ0CiAgCiAgICByZXR1cm4gQU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rpb25f b2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOwogIH0KLUBAIC0xMjMzOCw2ICsxMzU3 MiwzMCBAQCBkd2FyZjJfZnJlZV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKK0BA IC0xMjMzNCw2ICsxMzU3MCwzMCBAQCBkd2FyZjJfZnJlZV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSkKICAgIC8qIENhY2hlZCBESUUgdHJlZXMgdXNlIHhtYWxsb2MgYW5kIHRoZSBj b21wX3VuaXRfb2JzdGFjay4gICovCiAgICBmcmVlX2NhY2hlZF9jb21wX3VuaXRzIChOVUxMKTsK ICAKQEAgLTQzMzAsNyArNDMxNiw3IEBAIGluZGV4IDE2MzgxZGUuLjMxYTdkODMgMTAwNjQ0CiAg ICAvKiBFdmVyeXRoaW5nIGVsc2Ugc2hvdWxkIGJlIG9uIHRoZSBvYmpmaWxlIG9ic3RhY2suICAq LwogIH0KICAKLUBAIC0xMjM3Miw2ICsxMzYzMCwzMSBAQCBvZmZzZXRfYW5kX3R5cGVfZXEgKGNv bnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKK0BAIC0xMjM2OCw2ICsx MzYyOCwzMSBAQCBvZmZzZXRfYW5kX3R5cGVfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25z dCB2b2lkICppdGVtX3JocykKICAgIHJldHVybiBvZnNfbGhzLT5vZmZzZXQgPT0gb2ZzX3Jocy0+ b2Zmc2V0OwogIH0KICAKQEAgLTQzNjIsNyArNDM0OCw3IEBAIGluZGV4IDE2MzgxZGUuLjMxYTdk ODMgMTAwNjQ0CiAgLyogU2V0IHRoZSB0eXBlIGFzc29jaWF0ZWQgd2l0aCBESUUgdG8gVFlQRS4g IFNhdmUgaXQgaW4gQ1UncyBoYXNoCiAgICAgdGFibGUgaWYgbmVjZXNzYXJ5LiAgRm9yIGNvbnZl bmllbmNlLCByZXR1cm4gVFlQRS4KICAKLUBAIC0xMjM5NSw2ICsxMzY3OCw4IEBAIHNldF9kaWVf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKK0BAIC0xMjM5MSw2ICsxMzY3Niw4IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK ICB7CiAgICBzdHJ1Y3QgZHdhcmYyX29mZnNldF9hbmRfdHlwZSAqKnNsb3QsIG9mczsKICAKQEAg LTQzNzEsOCArNDM1Nyw4IEBAIGluZGV4IDE2MzgxZGUuLjMxYTdkODMgMTAwNjQ0CiAgICAvKiBG b3IgQWRhIHR5cGVzLCBtYWtlIHN1cmUgdGhhdCB0aGUgZ25hdC1zcGVjaWZpYyBkYXRhIGlzIGFs d2F5cwogICAgICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCkuICBUaGVyZSBhcmUg YSBmZXcgdHlwZXMgd2hlcmUKICAgICAgIHdlIHNob3VsZCBub3QgYmUgZG9pbmcgc28sIGJlY2F1 c2UgdGhlIHR5cGUtc3BlY2lmaWMgYXJlYSBpcwotQEAgLTEyNTkyLDggKzEzODc3LDU2NyBAQCBk d2FyZjJfcGVyX29iamZpbGVfZnJlZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmQp Ci0gICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5sb2MpOworQEAgLTEyNTkxLDggKzEz ODc4LDU2NyBAQCBkd2FyZjJfcGVyX29iamZpbGVfZnJlZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIHZvaWQgKmQpCisgICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT50eXBlcyk7CiAg ICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5mcmFtZSk7CiAgICBtdW5tYXBfc2VjdGlv bl9idWZmZXIgKCZkYXRhLT5laF9mcmFtZSk7CiArICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZk YXRhLT5nZGJfaW5kZXgpOwpAQCAtNDUzNyw4ICs0NTIzLDggQEAgaW5kZXggMTYzODFkZS4uMzFh N2Q4MyAxMDA2NDQKICsJcmV0dXJuICZzeW10YWItPmRhdGFbaW5kZXhdOwogKyAgICAgIGluZGV4 ID0gKGluZGV4ICsgc3RlcCkgJiAoc3ltdGFiLT5zaXplIC0gMSk7CiArICAgIH0KLSt9Ci0rCisg fQorIAogKy8qIEV4cGFuZCBTWU1UQUIncyBoYXNoIHRhYmxlLiAgKi8KICtzdGF0aWMgdm9pZAog K2hhc2hfZXhwYW5kIChzdHJ1Y3QgbWFwcGVkX3N5bXRhYiAqc3ltdGFiKQpAQCAtNDkwNyw3ICs0 ODkzLDcgQEAgaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICsgIHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlOwogKwogKyAgaWYgKCFhcmcgfHwgISphcmcpCi0rICAgIGVycm9yIChfKCJ1c2Fn ZTogbWFpbnRlbmFuY2Ugc2F2ZS1nZGItaW5kZXggRElSRUNUT1JZIikpOworKyAgICBlcnJvciAo XygidXNhZ2U6IHNhdmUgZ2RiLWluZGV4IERJUkVDVE9SWSIpKTsKICsKICsgIEFMTF9PQkpGSUxF UyAob2JqZmlsZSkKICsgIHsKQEAgLTQ5MzIsMjEgKzQ5MTgsMzEgQEAgaW5kZXggMTYzODFkZS4u MzFhN2Q4MyAxMDA2NDQKICsJCQkgICAgIG9iamZpbGUtPm5hbWUpOwogKyAgICAgIH0KICsgIH0K LSB9Ci0gCisrfQorKwogKwwKICsKICBpbnQgZHdhcmYyX2Fsd2F5c19kaXNhc3NlbWJsZTsKICAK ICBzdGF0aWMgdm9pZAotQEAgLTEyNjU3LDQgKzE0NTAxLDggQEAgVGhlIHZhbHVlIGlzIHRoZSBt YXhpbXVtIGRlcHRoIHRvIHByaW50LiIpLAorQEAgLTEyNjA5LDYgKzE0NDU1LDggQEAgdm9pZCBf aW5pdGlhbGl6ZV9kd2FyZjJfcmVhZCAodm9pZCk7Cisgdm9pZAorIF9pbml0aWFsaXplX2R3YXJm Ml9yZWFkICh2b2lkKQorIHsKKysgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjOworKworICAg ZHdhcmYyX29iamZpbGVfZGF0YV9rZXkKKyAgICAgPSByZWdpc3Rlcl9vYmpmaWxlX2RhdGFfd2l0 aF9jbGVhbnVwIChOVUxMLCBkd2FyZjJfcGVyX29iamZpbGVfZnJlZSk7CisgCitAQCAtMTI2NTYs NCArMTQ1MDQsOSBAQCBUaGUgdmFsdWUgaXMgdGhlIG1heGltdW0gZGVwdGggdG8gcHJpbnQuIiks CiAgCQkJICAgIE5VTEwsCiAgCQkJICAgIE5VTEwsCiAgCQkJICAgICZzZXRkZWJ1Z2xpc3QsICZz aG93ZGVidWdsaXN0KTsKICsKLSsgIGFkZF9jbWQgKCJnZGItaW5kZXgiLCBjbGFzc19maWxlcywg c2F2ZV9nZGJfaW5kZXhfY29tbWFuZCwKLSsJICAgXygiU2F2ZSBhIC5nZGItaW5kZXggZmlsZSIp LAotKwkgICAmc2F2ZV9jbWRsaXN0KTsKKysgIGMgPSBhZGRfY21kICgiZ2RiLWluZGV4IiwgY2xh c3NfZmlsZXMsIHNhdmVfZ2RiX2luZGV4X2NvbW1hbmQsCisrCSAgICAgICBfKCJTYXZlIGEgLmdk Yi1pbmRleCBmaWxlIiksCisrCSAgICAgICAmc2F2ZV9jbWRsaXN0KTsKKysgIHNldF9jbWRfY29t cGxldGVyIChjLCBmaWxlbmFtZV9jb21wbGV0ZXIpOwogIH0KIGRpZmYgLS1naXQgYS9nZGIvZWxm cmVhZC5jIGIvZ2RiL2VsZnJlYWQuYwogaW5kZXggOGMwMDkzOC4uYTI1MGM1OCAxMDA2NDQKQEAg LTYxMTMsNyArNjEwOSw3IEBAIGluZGV4IGUwY2ExMmMuLmRlNjMxMWEgMTAwNjQ0CiAgICBlbHNl CiAgICAgIHsKIGRpZmYgLS1naXQgYS9nZGIvZ2RiY21kLmggYi9nZGIvZ2RiY21kLmgKLWluZGV4 IDZhMjMwYzAuLmQ4N2E4MTMgMTAwNjQ0CitpbmRleCA3ODE1MWRkLi5kYTExNjg2IDEwMDY0NAog LS0tIGEvZ2RiL2dkYmNtZC5oCiArKysgYi9nZGIvZ2RiY21kLmgKIEBAIC0xMjQsNiArMTI0LDEw IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqc2V0Y2hlY2tsaXN0OwpAQCAtNjEy NSw4ICs2MTIxLDggQEAgaW5kZXggNmEyMzBjMC4uZDg3YTgxMyAxMDA2NDQKICtleHRlcm4gc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKnNhdmVfY21kbGlzdDsKICsKICBleHRlcm4gdm9pZCBleGVj dXRlX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKKyBleHRlcm4gY2hhciAqZXhlY3V0ZV9jb21tYW5k X3RvX3N0cmluZyAoY2hhciAqcCwgaW50IGZyb21fdHR5KTsKICAKLSBlbnVtIGNvbW1hbmRfY29u dHJvbF90eXBlIGV4ZWN1dGVfY29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5lICop OwogZGlmZiAtLWdpdCBhL2dkYi9nZGJpbml0LmluIGIvZ2RiL2dkYmluaXQuaW4KIGluZGV4IGZm YjdmNTMuLmEyZTdlOTQgMTAwNjQ0CiAtLS0gYS9nZGIvZ2RiaW5pdC5pbgpAQCAtNzcwOCw3ICs3 NzA0LDcgQEAgaW5kZXggNWFiZWM2OC4uZTMwOTI3NyAxMDA2NDQKICAKICBleHRlcm4gdm9pZCBu b3RpY2VfbmV3X2luZmVyaW9yIChwdGlkX3QsIGludCwgaW50KTsKIGRpZmYgLS1naXQgYS9nZGIv aW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMKLWluZGV4IDU3ZjJhYjguLjU3NjJhN2YgMTAwNjQ0Citp bmRleCA1NGIxZDlmLi41OGQwNDVhIDEwMDY0NAogLS0tIGEvZ2RiL2luZnJ1bi5jCiArKysgYi9n ZGIvaW5mcnVuLmMKIEBAIC00NSw2ICs0NSw4IEBACkBAIC04NTkyLDcgKzg1ODgsNyBAQCBpbmRl eCBiYjc5YWUxLi5mYmJkNjAwIDEwMDY0NAogKwogICNlbmRpZiAvKiBQQVJTRVJfREVGU19IICov CiBkaWZmIC0tZ2l0IGEvZ2RiL3BwYy1saW51eC1uYXQuYyBiL2dkYi9wcGMtbGludXgtbmF0LmMK LWluZGV4IGU4ZDk2ZjYuLjhiZjA5N2MgMTAwNjQ0CitpbmRleCAxOGRkZWU3Li42NTJiMDJhIDEw MDY0NAogLS0tIGEvZ2RiL3BwYy1saW51eC1uYXQuYwogKysrIGIvZ2RiL3BwYy1saW51eC1uYXQu YwogQEAgLTIwMTAsNiArMjAxMCwyNCBAQCBwcGNfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKENP UkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCkBAIC04Njc1LDcgKzg2NzEsNyBAQCBpbmRl eCA1ZmZhMDk5Li41OGQ5Yzc5IDEwMDY0NAogKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAo cHJpbnRfdHlwZXNfbWFya191c2VkKTsKICB9CiBkaWZmIC0tZ2l0IGEvZ2RiL3BzeW10YWIuYyBi L2dkYi9wc3ltdGFiLmMKLWluZGV4IDM2N2NmMWUuLmMxMjA4OTQgMTAwNjQ0CitpbmRleCA5N2E0 ZWVjLi5mY2UxOWM5IDEwMDY0NAogLS0tIGEvZ2RiL3BzeW10YWIuYwogKysrIGIvZ2RiL3BzeW10 YWIuYwogQEAgLTQyMSw2ICs0MjEsMTQgQEAgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLApAQCAtMTAzNDEsNyArMTAzMzcsNyBAQCBpbmRleCAyYjhk MzAxLi4wYWY5OWM4IDEwMDY0NAogIAogIGV4dGVybiBQeU9iamVjdCAqZ2RicHlfZ2RiZXJyb3Jf ZXhjOwogZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLmMgYi9nZGIvcHl0aG9uL3B5dGhv bi5jCi1pbmRleCA2NjgwMTI2Li4yZWVlMzFmIDEwMDY0NAoraW5kZXggNzM0NmZiYS4uMzQ3MDhj NCAxMDA2NDQKIC0tLSBhL2dkYi9weXRob24vcHl0aG9uLmMKICsrKyBiL2dkYi9weXRob24vcHl0 aG9uLmMKIEBAIC0yOCw2ICsyOCw3IEBACkBAIC0xMDM3MCw3ICsxMDM2Niw3IEBAIGluZGV4IDY2 ODAxMjYuLjJlZWUzMWYgMTAwNjQ0CiAgCiAgc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNb XTsKICAKLUBAIC00MTMsNiArNDIxLDEwNSBAQCBleGVjdXRlX2dkYl9jb21tYW5kIChQeU9iamVj dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKK0BAIC0zNzQsNiArMzgyLDEw NSBAQCBleGVjdXRlX2dkYl9jb21tYW5kIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3Ms IFB5T2JqZWN0ICprdykKICAgIFB5X1JFVFVSTl9OT05FOwogIH0KICAKQEAgLTEwNDc2LDcgKzEw NDcyLDcgQEAgaW5kZXggNjY4MDEyNi4uMmVlZTMxZiAxMDA2NDQKICAvKiBQYXJzZSBhIHN0cmlu ZyBhbmQgZXZhbHVhdGUgaXQgYXMgYW4gZXhwcmVzc2lvbi4gICovCiAgc3RhdGljIFB5T2JqZWN0 ICoKICBnZGJweV9wYXJzZV9hbmRfZXZhbCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdz KQotQEAgLTQ1Myw2ICs1NjAsMTE0IEBAIHNvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpzdHJl YW0sIGNvbnN0IGNoYXIgKmZpbGUpCitAQCAtNDE0LDYgKzUyMSwxMTQgQEAgc291cmNlX3B5dGhv bl9zY3JpcHQgKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZmlsZSkKICAKICAMCiAgCkBAIC0x MDU5MSw3ICsxMDU4Nyw3IEBAIGluZGV4IDY2ODAxMjYuLjJlZWUzMWYgMTAwNjQ0CiAgLyogUHJp bnRpbmcuICAqLwogIAogIC8qIEEgcHl0aG9uIGZ1bmN0aW9uIHRvIHdyaXRlIGEgc2luZ2xlIHN0 cmluZyB1c2luZyBnZGIncyBmaWx0ZXJlZAotQEAgLTQ5OCw2ICs3MTMsNTMgQEAgZ2RicHlfcHJp bnRfc3RhY2sgKHZvaWQpCitAQCAtNDU5LDYgKzY3NCw1MyBAQCBnZGJweV9wcmludF9zdGFjayAo dm9pZCkKICAKICAvKiBSZXR1cm4gdGhlIGN1cnJlbnQgUHJvZ3NwYWNlLgogICAgIFRoZXJlIGFs d2F5cyBpcyBvbmUuICAqLwpAQCAtMTA2NDUsNyArMTA2NDEsNyBAQCBpbmRleCA2NjgwMTI2Li4y ZWVlMzFmIDEwMDY0NAogIAogIHN0YXRpYyBQeU9iamVjdCAqCiAgZ2RicHlfZ2V0X2N1cnJlbnRf cHJvZ3NwYWNlIChQeU9iamVjdCAqdW51c2VkMSwgUHlPYmplY3QgKnVudXNlZDIpCi1AQCAtNzU5 LDYgKzEwMjEsNyBAQCBFbmFibGVzIG9yIGRpc2FibGVzIHByaW50aW5nIG9mIFB5dGhvbiBzdGFj ayB0cmFjZXMuIiksCitAQCAtNzIwLDYgKzk4Miw3IEBAIEVuYWJsZXMgb3IgZGlzYWJsZXMgcHJp bnRpbmcgb2YgUHl0aG9uIHN0YWNrIHRyYWNlcy4iKSwKICAgIGdkYnB5X2luaXRpYWxpemVfbGF6 eV9zdHJpbmcgKCk7CiAgICBnZGJweV9pbml0aWFsaXplX3RocmVhZCAoKTsKICAgIGdkYnB5X2lu aXRpYWxpemVfaW5mZXJpb3IgKCk7CkBAIC0xMDY1Myw3ICsxMDY0OSw3IEBAIGluZGV4IDY2ODAx MjYuLjJlZWUzMWYgMTAwNjQ0CiAgCiAgICBQeVJ1bl9TaW1wbGVTdHJpbmcgKCJpbXBvcnQgZ2Ri Iik7CiAgICBQeVJ1bl9TaW1wbGVTdHJpbmcgKCJnZGIucHJldHR5X3ByaW50ZXJzID0gW10iKTsK LUBAIC04MjYsNiArMTA4OSw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQor QEAgLTc4Nyw2ICsxMDUwLDggQEAgc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNbXSA9CiAg ICAgICJHZXQgYSB2YWx1ZSBmcm9tIGhpc3RvcnkiIH0sCiAgICB7ICJleGVjdXRlIiwgKFB5Q0Z1 bmN0aW9uKSBleGVjdXRlX2dkYl9jb21tYW5kLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRT LAogICAgICAiRXhlY3V0ZSBhIGdkYiBjb21tYW5kIiB9LApAQCAtMTA2NjIsMTMgKzEwNjU4LDEz IEBAIGluZGV4IDY2ODAxMjYuLjJlZWUzMWYgMTAwNjQ0CiAgICB7ICJwYXJhbWV0ZXIiLCBnZGJw eV9wYXJhbWV0ZXIsIE1FVEhfVkFSQVJHUywKICAgICAgIlJldHVybiBhIGdkYiBwYXJhbWV0ZXIn cyB2YWx1ZSIgfSwKICAKLUBAIC04NjQsMTEgKzExMjksMjEgQEAgYSBib29sZWFuIGluZGljYXRp bmcgaWYgbmFtZSBpcyBhIGZpZWxkIG9mIHRoZSBjdXJyZW50IGltcGxpZWQgYXJndW1lbnRcblwK K0BAIC04MjUsMTEgKzEwOTAsMjEgQEAgYSBib29sZWFuIGluZGljYXRpbmcgaWYgbmFtZSBpcyBh IGZpZWxkIG9mIHRoZSBjdXJyZW50IGltcGxpZWQgYXJndW1lbnRcblwKICBgdGhpcycgKHdoZW4g dGhlIGN1cnJlbnQgbGFuZ3VhZ2UgaXMgb2JqZWN0LW9yaWVudGVkKS4iIH0sCiAgICB7ICJibG9j a19mb3JfcGMiLCBnZGJweV9ibG9ja19mb3JfcGMsIE1FVEhfVkFSQVJHUywKICAgICAgIlJldHVy biB0aGUgYmxvY2sgY29udGFpbmluZyB0aGUgZ2l2ZW4gcGMgdmFsdWUsIG9yIE5vbmUuIiB9LAot KyAgeyAic29saWJfYWRkcmVzcyAoTG9uZykgLT4gU3RyaW5nLlxuXAorKyAgeyAic29saWJfYWRk cmVzcyIsIGdkYnB5X3NvbGliX2FkZHJlc3MsIE1FVEhfVkFSQVJHUywKKysgICAgInNvbGliX2Fk ZHJlc3MgKExvbmcpIC0+IFN0cmluZy5cblwKICtSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHNoYXJl ZCBsaWJyYXJ5IGhvbGRpbmcgYSBnaXZlbiBhZGRyZXNzLCBvciBOb25lLiIgfSwKLSsKICsgIHsg ImRlY29kZV9saW5lIiwgZ2RicHlfZGVjb2RlX2xpbmUsIE1FVEhfVkFSQVJHUywKICsgICAgIkRl Y29kZSBhIHN0cmluZyBhcmd1bWVudCB0aGUgd2F5IHRoYXQgJ2JyZWFrJyBvciAnZWRpdCcgZG9l cy5cblwKICtSZXR1cm4gYSB0dXBsZSBob2xkaW5nIHRoZSBmaWxlIG5hbWUgKG9yIE5vbmUpIGFu ZCBsaW5lIG51bWJlciAob3IgTm9uZSkuXG5cCkBAIC0xMDcxMiw3ICsxMDcwOCw3IEBAIGluZGV4 IDFmMTM1ZDQuLjQ4OTgzOGQgMTAwNjQ0CiAgCiAgLyogR2l2ZW4gYW4gZXhlY3V0YWJsZSdzIEFC RkQgYW5kIHRhcmdldCwgY29tcHV0ZSB0aGUgZW50cnktcG9pbnQKIGRpZmYgLS1naXQgYS9nZGIv c3ltZmlsZS5jIGIvZ2RiL3N5bWZpbGUuYwotaW5kZXggYWI1MWZhNC4uYmFiZTljZiAxMDA2NDQK K2luZGV4IDQyZjdhZTMuLjM3MWRiMGQgMTAwNjQ0CiAtLS0gYS9nZGIvc3ltZmlsZS5jCiArKysg Yi9nZGIvc3ltZmlsZS5jCiBAQCAtMTA1OSw2ICsxMDU5LDkgQEAgc3ltYm9sX2ZpbGVfYWRkX3dp dGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICphYmZkLApAQCAtMTA3MzQsNyArMTA3MzAsNyBAQCBp bmRleCBhYjUxZmE0Li5iYWJlOWNmIDEwMDY0NAogICAgICB7CiAgICAgICAgaWYgKGZyb21fdHR5 IHx8IGluZm9fdmVyYm9zZSkKICAJewotQEAgLTE1MzUsNyArMTUzOCw3IEBAIHN5bWJvbF9maWxl X2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKK0BAIC0xNTMzLDcgKzE1MzYsNyBA QCBzeW1ib2xfZmlsZV9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAgdm9pZAog IHNldF9pbml0aWFsX2xhbmd1YWdlICh2b2lkKQogIHsKQEAgLTEwNzQzLDcgKzEwNzM5LDcgQEAg aW5kZXggYWI1MWZhNC4uYmFiZTljZiAxMDA2NDQKICAgIGVudW0gbGFuZ3VhZ2UgbGFuZyA9IGxh bmd1YWdlX3Vua25vd247CiAgCiAgICBmaWxlbmFtZSA9IGZpbmRfbWFpbl9maWxlbmFtZSAoKTsK LUBAIC0yNjYyLDcgKzI2NjUsNyBAQCBpbml0X2ZpbGVuYW1lX2xhbmd1YWdlX3RhYmxlICh2b2lk KQorQEAgLTI2NjAsNyArMjY2Myw3IEBAIGluaXRfZmlsZW5hbWVfbGFuZ3VhZ2VfdGFibGUgKHZv aWQpCiAgfQogIAogIGVudW0gbGFuZ3VhZ2UKQEAgLTEwODA0LDcgKzEwODAwLDcgQEAgaW5kZXgg NjJlNmI5Ny4uMDBkYzYxMyAxMDA2NDQKICAJICBtc190eXBlID0gJ1MnOwogIAkgIGJyZWFrOwog ZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuYyBiL2dkYi9zeW10YWIuYwotaW5kZXggOTQ3MmMyNC4u YzNiMTc5MiAxMDA2NDQKK2luZGV4IDJjNGM5ZTQuLjI4ZjA0NTAgMTAwNjQ0CiAtLS0gYS9nZGIv c3ltdGFiLmMKICsrKyBiL2dkYi9zeW10YWIuYwogQEAgLTEyOTUsMTYgKzEyOTUsMjUgQEAgbG9v a3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1l LApAQCAtMTA5NzMsNyArMTA5NjksNyBAQCBpbmRleCBiZWRjMTBhLi5kYzI4NGU0IDEwMDY0NAog IC8qIHN5bXRhYi5jICovCiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC5jIGIvZ2RiL3Rhcmdl dC5jCi1pbmRleCA4NjJkZjRlLi5hOGYxYmRkIDEwMDY0NAoraW5kZXggNGNhYmNiZC4uMzRiM2I2 MCAxMDA2NDQKIC0tLSBhL2dkYi90YXJnZXQuYwogKysrIGIvZ2RiL3RhcmdldC5jCiBAQCAtMTIz LDYgKzEyMyw4IEBAIHN0YXRpYyBpbnQgZGVidWdfdG9faW5zZXJ0X3dhdGNocG9pbnQgKENPUkVf QUREUiwgaW50LCBpbnQsCkBAIC0xMTAwMyw3ICsxMDk5OSw3IEBAIGluZGV4IDg2MmRmNGUuLmE4 ZjFiZGQgMTAwNjQ0CiAgICBkZV9mYXVsdCAodG9fc3RvcHBlZF9ieV93YXRjaHBvaW50LAogIAkg ICAgKGludCAoKikgKHZvaWQpKQogIAkgICAgcmV0dXJuX3plcm8pOwotQEAgLTM0NDEsNiArMzQ0 NywxOSBAQCBkZWJ1Z190b19yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBs ZW4sIGludCB0eXBlLAorQEAgLTM0NDAsNiArMzQ0NiwxOSBAQCBkZWJ1Z190b19yZW1vdmVfd2F0 Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAogICAgcmV0dXJuIHJl dHZhbDsKICB9CiAgCkBAIC0xMTAyMyw3ICsxMTAxOSw3IEBAIGluZGV4IDg2MmRmNGUuLmE4ZjFi ZGQgMTAwNjQ0CiAgc3RhdGljIHZvaWQKICBkZWJ1Z190b190ZXJtaW5hbF9pbml0ICh2b2lkKQog IHsKLUBAIC0zNjg4LDYgKzM3MDcsNyBAQCBzZXR1cF90YXJnZXRfZGVidWcgKHZvaWQpCitAQCAt MzY4Nyw2ICszNzA2LDcgQEAgc2V0dXBfdGFyZ2V0X2RlYnVnICh2b2lkKQogICAgY3VycmVudF90 YXJnZXQudG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQgPSBkZWJ1Z190b19yZW1vdmVfaHdfYnJlYWtw b2ludDsKICAgIGN1cnJlbnRfdGFyZ2V0LnRvX2luc2VydF93YXRjaHBvaW50ID0gZGVidWdfdG9f aW5zZXJ0X3dhdGNocG9pbnQ7CiAgICBjdXJyZW50X3RhcmdldC50b19yZW1vdmVfd2F0Y2hwb2lu dCA9IGRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50OwpAQCAtMTQyMTAsNyArMTQyMDYsNyBAQCBp bmRleCAwMDAwMDAwLi4yMjZkYzVkCiArICBjYWxsIGZvbyAoZywgaCkKICtlbmQKIGRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZ2RiL3NlbGZ0ZXN0LmV4cAotaW5kZXggMWFlZDI1Mi4uNTkzYWE1NSAxMDA2NDQKK2luZGV4 IGZjOGJjY2MuLmUwNTM4MTMgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2Vs ZnRlc3QuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCiBAQCAt OTIsNiArOTIsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30gewpAQCAtMTQ4NDYsNiAr MTQ4NDIsMzYgQEAgaW5kZXggYTI0YmMxMS4uZTMwNDNiYyAxMDA2NDQKICAKICAjIFRoZSBmb2xs b3dpbmcgdGVzdCByZWNvbXBpbGVzIHRoZSBiaW5hcnkgdG8gdGVzdCBlaXRoZXIgQyBvciBDKysK ICAjIHZhbHVlcy4gCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3JoNjM0 MTA4LXNvbGliX2FkZHJlc3MuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3JoNjM0MTA4 LXNvbGliX2FkZHJlc3MuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4u NzAzMTlmZgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3Jo NjM0MTA4LXNvbGliX2FkZHJlc3MuZXhwCitAQCAtMCwwICsxLDI0IEBACisrIyBDb3B5cmlnaHQg KEMpIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisr IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIwor KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyMgaHR0cHM6Ly9idWd6aWxsYS5yZWRo YXQuY29tL3Nob3dfYnVnLmNnaT9pZD02MzQxMDgKKysKKytnZGJfZXhpdAorK2dkYl9zdGFydAor KworKyMgU2tpcCBhbGwgdGVzdHMgaWYgUHl0aG9uIHNjcmlwdGluZyBpcyBub3QgZW5hYmxlZC4K KytpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVlIH0KKysKKytnZGJfdGVzdCAi cHl0aG9uIHByaW50IGdkYi5zb2xpYl9hZGRyZXNzKC0xKSIgIk5vbmUiICJnZGIuc29saWJfYWRk cmVzcyBleGlzdHMiCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRj aHBvaW50LWZvcmstZm9ya29mZi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBv aW50LWZvcmstZm9ya29mZi5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4u NGRjMzA4YgpAQCAtMTUzOTAsNyArMTU0MTYsNyBAQCBpbmRleCAwMDAwMDAwLi4xZGM5M2FiCiAr ICAgIHRlc3QgY2hpbGQgRk9MTE9XX0NISUxECiArfQogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvbGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi1pbmRleCBiNWIzMzYy Li5kOTE2ZTk0IDEwMDY0NAoraW5kZXggMjBlMmZiNy4uYjI3ZDI1YyAxMDA2NDQKIC0tLSBhL2dk Yi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICsrKyBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAK IEBAIC0yNyw2ICsyNyw3IEBAIGlmIHskdG9vbCA9PSAiIn0gewpAQCAtMTU0OTYsNyArMTU1MjIs NyBAQCBpbmRleCAwMDAwMDAwLi5iOGU5ODM2CiArICAgIHJldHVybiAwCiArfQogZGlmZiAtLWdp dCBhL2dkYi90aHJlYWQuYyBiL2dkYi90aHJlYWQuYwotaW5kZXggMmZkYzdmOS4uMmE1ZDBmMSAx MDA2NDQKK2luZGV4IDBiMjkxYmEuLmFlM2U0ZmYgMTAwNjQ0CiAtLS0gYS9nZGIvdGhyZWFkLmMK ICsrKyBiL2dkYi90aHJlYWQuYwogQEAgLTkwLDYgKzkwLDE2IEBAIGRlbGV0ZV9zdGVwX3Jlc3Vt ZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwKQpAQCAtMTU1MzAsNyArMTU1NTYs NyBAQCBpbmRleCAyZmRjN2Y5Li4yYTVkMGYxIDEwMDY0NAogIAogICAgZGlzY2FyZF9hbGxfaW50 ZXJtZWRpYXRlX2NvbnRpbnVhdGlvbnNfdGhyZWFkICh0cCk7CiBkaWZmIC0tZ2l0IGEvZ2RiL3Rv cC5jIGIvZ2RiL3RvcC5jCi1pbmRleCA5MzQ0N2ZlLi5kNjg3NWE3IDEwMDY0NAoraW5kZXggYjI5 ZTY4ZC4uOGVkYWM3MCAxMDA2NDQKIC0tLSBhL2dkYi90b3AuYwogKysrIGIvZ2RiL3RvcC5jCiBA QCAtMzM3LDYgKzMzNyw3IEBAIHZvaWQKCmRpZmYgLS1naXQgYS9nZGItYno1NTUwNzYtZ2NvcmUt c21hbGwtaGVpZ2h0LnBhdGNoIGIvZ2RiLWJ6NTU1MDc2LWdjb3JlLXNtYWxsLWhlaWdodC5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2FkNjZiCi0tLSAvZGV2L251 bGwKKysrIGIvZ2RiLWJ6NTU1MDc2LWdjb3JlLXNtYWxsLWhlaWdodC5wYXRjaApAQCAtMCwwICsx LDEyIEBACistLS0gYS9nZGIvZ2RiX2djb3JlLnNoCisrKysgYi9nZGIvZ2RiX2djb3JlLnNoCitA QCAtNjQsNiArNjQsOSBAQCBmb3IgcGlkIGluICQqCisgZG8KKyAJIyBXcml0ZSBnZGIgc2NyaXB0 IGZvciBwaWQgJHBpZC4gIAorIAljYXQgPj4kdG1wZmlsZSA8PEVPRgorK3NldCBwYWdpbmF0aW9u IG9mZgorK3NldCB3aWR0aCAwCisrc2V0IGhlaWdodCAwCisgYXR0YWNoICRwaWQKKyBnY29yZSAk bmFtZS4kcGlkCisgZGV0YWNoCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTY4MjQ4LW9vbS1pcy1lcnJv ci5wYXRjaCBiL2dkYi1iejU2ODI0OC1vb20taXMtZXJyb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMmFhZjUyMgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1iejU2 ODI0OC1vb20taXMtZXJyb3IucGF0Y2gKQEAgLTAsMCArMSw2OSBAQAoraHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDYvbXNnMDAwMDUuaHRtbAorU3ViamVjdDogW3Jm YyBwYXRjaF0gbm9tZW06IGludGVybmFsX2Vycm9yIC0+IGVycm9yCisKK0hpLAorCit1bmZvcnR1 bmF0ZWx5IEkgc2VlIHRoaXMgcHJvYmxlbSByZXByb2R1Y2libGUgb25seSB3aXRoIHRoZQorYXJj aGVyLWphbmtyYXRvY2h2aWwtdmxhIGJyYW5jaCAoVkxBID0gVmFyaWFibGUgTGVuZ3RoIEFycmF5 cyAtIGNoYXJbdmFyXSkuCitPVE9IIHRoaXMgYnJhbmNoIEkgaG9wZWZ1bGx5IHN1Ym1pdCBpbiBz b21lIGZvcm0gZm9yIEZTRiBHREIgbGF0ZXIuCisKK0luIHRoaXMgY2FzZSAoYSBnZW5lcmFsIHBy b2JsZW0gYnV0IHRlc3RlZCBmb3IgZXhhbXBsZSBvbiBGZWRvcmEgMTMgaTY4Nik6CisKK2ludAor bWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICBjaGFyIGFbYXJnY107CisgIHJldHVy biBhWzBdOworfQorCisoZ2RiKSBzdGFydAorKGdkYikgcHJpbnQgYQorLi4vLi4vZ2RiL3V0aWxz LmM6MTI1MTogaW50ZXJuYWwtZXJyb3I6IHZpcnR1YWwgbWVtb3J5IGV4aGF1c3RlZDogY2FuJ3Qg YWxsb2NhdGUgNDI5NDk1MTY4OSBieXRlcy4KKworSXQgaXMgYXBwYXJlbnRseSBiZWNhdXNlIGJv dW5kYXJ5IGZvciB0aGUgdmFyaWFibGUgYGEnIGlzIG5vdCBpbml0aWFsaXplZAordGhlcmUuICBV c2VycyBub3RpY2UgaXQgZHVlIHRvIEVjbGlwc2UtQ0RUIHRyeWluZyB0byBhdXRvbWF0aWNhbGx5 IGRpc3BsYXkgYWxsCit0aGUgbG9jYWwgdmFyaWFibGVzIG9uIGVhY2ggc3RlcC4KKworCitBcHBh cmVudGwgbm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEz LWxpbnV4LWdudS4KK0J1dCBpcyBhbm9uZSBhd2FyZSBvZiB0aGUgcmVhc29ucyB0byB1c2UgaW50 ZXJuYWxfZXJyb3IgdGhlcmU/CitJIGZpbmQgc2ltcGxlIGVycm9yIGFzIGEgcGVyZmVjdGx5IHJl YXNvbmFibGUgdGhlcmUuCisoaGlzdG9yeSBvbmx5IHRyYWNrcyBpdCBzaW5jZSB0aGUgaW5pdGlh bCBpbXBvcnQpCisKK0lJUkMgdGhpcyBpZGVhIGhhcyBiZWVuIGRpc2N1c3NlZCB3aXRoIFRvbSBU cm9tZXksIG5vdCBzdXJlIG9mIGl0cyBvcmlnaW4uCisKK0kgdW5kZXJzdGFuZCBpdCBtYXkgYmUg b2ZmdG9waWMgZm9yIEZTRiBHREIgYnV0IGZyb20gc29tZSBHREIgY3Jhc2hlcyBJIGFtIG5vdAor c3VyZSBpZiBpdCBjYW4gaGFwcGVuIG9ubHkgZHVlIHRvIHRoZSBWTEEgdmFyaWFibGVzLgorCisK K1RoYW5rcywKK0phbgorCisKK2dkYi8KKzIwMTAtMDYtMDEgIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKwkgICAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQu Y29tPgorCisJKiB1dGlscy5jIChub21lbSk6IENoYW5nZSBpbnRlcm5hbF9lcnJvciB0byBlcnJv ci4KKworLS0tIGEvZ2RiL3V0aWxzLmMKKysrKyBiL2dkYi91dGlscy5jCitAQCAtMTI2NSwxNSAr MTI2NSw5IEBAIHZvaWQKKyBub21lbSAobG9uZyBzaXplKQorIHsKKyAgIGlmIChzaXplID4gMCkK Ky0gICAgeworLSAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCistCQkg ICAgICBfKCJ2aXJ0dWFsIG1lbW9yeSBleGhhdXN0ZWQ6IGNhbid0IGFsbG9jYXRlICVsZCBieXRl cy4iKSwKKy0JCSAgICAgIHNpemUpOworLSAgICB9CisrICAgIGVycm9yIChfKCJ2aXJ0dWFsIG1l bW9yeSBleGhhdXN0ZWQ6IGNhbid0IGFsbG9jYXRlICVsZCBieXRlcy4iKSwgc2l6ZSk7CisgICBl bHNlCistICAgIHsKKy0gICAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBf KCJ2aXJ0dWFsIG1lbW9yeSBleGhhdXN0ZWQuIikpOworLSAgICB9CisrICAgIGVycm9yIChfKCJ2 aXJ0dWFsIG1lbW9yeSBleGhhdXN0ZWQuIikpOworIH0KKyAKKyAvKiBUaGUgeG1hbGxvYygpIChs aWJpYmVydHkuaCkgZmFtaWx5IG9mIG1lbW9yeSBtYW5hZ2VtZW50IHJvdXRpbmVzLgorCgpkaWZm IC0tZ2l0IGEvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC0xb2Y1LnBhdGNoIGIvZ2RiLWJ6NTky MDMxLXNpZ2luZm8tbG9zdC0xb2Y1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjE2Yzc4OWYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYno1OTIwMzEtc2lnaW5mby1s b3N0LTFvZjUucGF0Y2gKQEAgLTAsMCArMSw4NyBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTAtMDgvbXNnMDA1NTkuaHRtbAoraHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1jdnMvMjAxMC0wOC9tc2cwMDE5OS5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxv ZwkyMDEwLzA4LzMxIDE4OjA4OjQyCTEuMTIxMjkKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEw LzA4LzMxIDE4OjExOjQ4CTEuMTIxMzAKKyMjIC0xLDUgKzEsMTQgQEAKKyAyMDEwLTA4LTMxICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisrCU1ha2UgbGlu dXhfZ2V0X3NpZ2luZm9fdHlwZSBgdHlwZSAqJyB1bmlxdWUuCisrCSogbGludXgtdGRlcC5jIChs aW51eF9nZGJhcmNoX2RhdGFfaGFuZGxlLCBzdHJ1Y3QgbGludXhfZ2RiYXJjaF9kYXRhKQorKwko aW5pdF9saW51eF9nZGJhcmNoX2RhdGEsIGdldF9saW51eF9nZGJhcmNoX2RhdGEpOiBOZXcuCisr CShsaW51eF9nZXRfc2lnaW5mb190eXBlKTogTmV3IHZhcmlhYmxlIGxpbnV4X2dkYmFyY2hfZGF0 YS4gIEluaXRpYWxpemUKKysJaXQuICBVc2UgbGludXhfZ2RiYXJjaF9kYXRhLT5zaWdpbmZvX3R5 cGUgYXMgYSBwZXJzaXN0ZW50IHN0b3JhZ2UuCisrCShfaW5pdGlhbGl6ZV9saW51eF90ZGVwKTog TmV3LgorKworKzIwMTAtMDgtMzEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KKysKKyAJQ29kZSBjbGVhbnVwLgorIAkqIGRlZnMuaCAoZmluZF9tZW1vcnlfcmVn aW9uX2Z0eXBlKTogTmV3IHR5cGVkZWYuCisgCShleGVjX3NldF9maW5kX21lbW9yeV9yZWdpb25z KTogVXNlIGl0LgorSW5kZXg6IGdkYi03LjIvZ2RiL2xpbnV4LXRkZXAuYworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjIub3JpZy9nZGIvbGludXgtdGRlcC5jCTIwMTAtMDktMjUgMTU6MzA6NTAuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvbGludXgtdGRlcC5jCTIwMTAtMDktMjUgMTU6 MzE6NTQuMDAwMDAwMDAwICswMjAwCitAQCAtMjYsMTggKzI2LDQyIEBACisgI2luY2x1ZGUgInZh bHVlLmgiCisgI2luY2x1ZGUgImluZmNhbGwuaCIKKyAKKytzdGF0aWMgc3RydWN0IGdkYmFyY2hf ZGF0YSAqbGludXhfZ2RiYXJjaF9kYXRhX2hhbmRsZTsKKysKKytzdHJ1Y3QgbGludXhfZ2RiYXJj aF9kYXRhCisrICB7CisrICAgIHN0cnVjdCB0eXBlICpzaWdpbmZvX3R5cGU7CisrICB9OworKwor K3N0YXRpYyB2b2lkICoKKytpbml0X2xpbnV4X2dkYmFyY2hfZGF0YSAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gpCisreworKyAgcmV0dXJuIEdEQkFSQ0hfT0JTVEFDS19aQUxMT0MgKGdkYmFyY2gs IHN0cnVjdCBsaW51eF9nZGJhcmNoX2RhdGEpOworK30KKysKKytzdGF0aWMgc3RydWN0IGxpbnV4 X2dkYmFyY2hfZGF0YSAqCisrZ2V0X2xpbnV4X2dkYmFyY2hfZGF0YSAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gpCisreworKyAgcmV0dXJuIGdkYmFyY2hfZGF0YSAoZ2RiYXJjaCwgbGludXhfZ2Ri YXJjaF9kYXRhX2hhbmRsZSk7CisrfQorKworIC8qIFRoaXMgZnVuY3Rpb24gaXMgc3VpdGFibGUg Zm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBkb24ndAorICAgIGV4dGVuZC9vdmVycmlkZSB0aGUgc3Rh bmRhcmQgc2lnaW5mbyBzdHJ1Y3R1cmUuICAqLworIAorIHN0cnVjdCB0eXBlICoKKyBsaW51eF9n ZXRfc2lnaW5mb190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyB7CisrICBzdHJ1Y3Qg bGludXhfZ2RiYXJjaF9kYXRhICpsaW51eF9nZGJhcmNoX2RhdGE7CisgICBzdHJ1Y3QgdHlwZSAq aW50X3R5cGUsICp1aW50X3R5cGUsICpsb25nX3R5cGUsICp2b2lkX3B0cl90eXBlOworICAgc3Ry dWN0IHR5cGUgKnVpZF90eXBlLCAqcGlkX3R5cGU7CisgICBzdHJ1Y3QgdHlwZSAqc2lndmFsX3R5 cGUsICpjbG9ja190eXBlOworICAgc3RydWN0IHR5cGUgKnNpZ2luZm9fdHlwZSwgKnNpZmllbGRz X3R5cGU7CisgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKKyAKKysgIGxpbnV4X2dkYmFyY2hfZGF0YSA9 IGdldF9saW51eF9nZGJhcmNoX2RhdGEgKGdkYmFyY2gpOworKyAgaWYgKGxpbnV4X2dkYmFyY2hf ZGF0YS0+c2lnaW5mb190eXBlICE9IE5VTEwpCisrICAgIHJldHVybiBsaW51eF9nZGJhcmNoX2Rh dGEtPnNpZ2luZm9fdHlwZTsKKysKKyAgIGludF90eXBlID0gYXJjaF9pbnRlZ2VyX3R5cGUgKGdk YmFyY2gsIGdkYmFyY2hfaW50X2JpdCAoZ2RiYXJjaCksCisgCQkJIAkwLCAiaW50Iik7CisgICB1 aW50X3R5cGUgPSBhcmNoX2ludGVnZXJfdHlwZSAoZ2RiYXJjaCwgZ2RiYXJjaF9pbnRfYml0IChn ZGJhcmNoKSwKK0BAIC0xMzcsNiArMTYxLDggQEAgbGludXhfZ2V0X3NpZ2luZm9fdHlwZSAoc3Ry dWN0IGdkYmFyY2ggKgorIAkJCQkgICAgICAgIl9zaWZpZWxkcyIsIHNpZmllbGRzX3R5cGUsCisg CQkJCSAgICAgICBUWVBFX0xFTkdUSCAobG9uZ190eXBlKSk7CisgCisrICBsaW51eF9nZGJhcmNo X2RhdGEtPnNpZ2luZm9fdHlwZSA9IHNpZ2luZm9fdHlwZTsKKysKKyAgIHJldHVybiBzaWdpbmZv X3R5cGU7CisgfQorIAorQEAgLTE1NCwzICsxODAsMTAgQEAgbGludXhfaGFzX3NoYXJlZF9hZGRy ZXNzX3NwYWNlICh2b2lkKQorIAorICAgcmV0dXJuIHRhcmdldF9pc191Y2xpbnV4OworIH0KKysK Kyt2b2lkCisrX2luaXRpYWxpemVfbGludXhfdGRlcCAodm9pZCkKKyt7CisrICBsaW51eF9nZGJh cmNoX2RhdGFfaGFuZGxlID0KKysgICAgZ2RiYXJjaF9kYXRhX3JlZ2lzdGVyX3Bvc3RfaW5pdCAo aW5pdF9saW51eF9nZGJhcmNoX2RhdGEpOworK30KCmRpZmYgLS1naXQgYS9nZGItYno1OTIwMzEt c2lnaW5mby1sb3N0LTJvZjUucGF0Y2ggYi9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTJvZjUu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUxODRlMAotLS0gL2Rl di9udWxsCisrKyBiL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtMm9mNS5wYXRjaApAQCAtMCww ICsxLDEzOSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDkv bXNnMDA0MzAuaHRtbAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wOS9t c2cwMDE1Mi5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5LzI0IDExOjE1OjUx CTEuMTIxOTkKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5LzI0IDEzOjQxOjQyCTEuMTIy MDAKKyMjIC0xLDUgKzEsMTIgQEAKKyAyMDEwLTA5LTI0ICBQZWRybyBBbHZlcyAgPHBlZHJvQGNv ZGVzb3VyY2VyeS5jb20+CisgCisrCSogYW1kNjQtbGludXgtbmF0LmMgKGNvbXBhdF9zaWdpbmZv X2Zyb21fc2lnaW5mbykKKysJKHNpZ2luZm9fZnJvbV9jb21wYXRfc2lnaW5mbyk6IEFsc28gY29w eSBzaV9waWQgYW5kIHNpX3VpZCB3aGVuCisrCXNpX2NvZGUgaXMgPCAwLiAgQ2hlY2sgZm9yIHNp X2NvZGUgPT0gU0lfVElNRVIgYmVmb3JlIGNoZWNraW5nIGZvcgorKwlzaV9jb2RlIDwgMC4KKysK KysyMDEwLTA5LTI0ICBQZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+CisrCisg CSogb2JqZmlsZXMuaCAoQUxMX09CSlNFQ1RJT05TKTogSGFuZGxlIGJyZWFrcyBpbiB0aGUgaW5u ZXIgbG9vcC4KKyAKKyAyMDEwLTA5LTIyICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBhZGFj b3JlLmNvbT4KKy0tLSBzcmMvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMTAvMDQvMjIgMjA6MDI6 NTUJMS4zMgorKysrIHNyYy9nZGIvYW1kNjQtbGludXgtbmF0LmMJMjAxMC8wOS8yNCAxMzo0MTo0 MwkxLjMzCitAQCAtNTc0LDggKzU3NCwxMCBAQAorICAgdG8tPnNpX2Vycm5vID0gZnJvbS0+c2lf ZXJybm87CisgICB0by0+c2lfY29kZSA9IGZyb20tPnNpX2NvZGU7CisgCistICBpZiAodG8tPnNp X2NvZGUgPCAwKQorKyAgaWYgKHRvLT5zaV9jb2RlID09IFNJX1RJTUVSKQorICAgICB7CisrICAg ICAgdG8tPmNwdF9zaV90aW1lcmlkID0gZnJvbS0+c2lfdGltZXJpZDsKKysgICAgICB0by0+Y3B0 X3NpX292ZXJydW4gPSBmcm9tLT5zaV9vdmVycnVuOworICAgICAgIHRvLT5jcHRfc2lfcHRyID0g KGludHB0cl90KSBmcm9tLT5zaV9wdHI7CisgICAgIH0KKyAgIGVsc2UgaWYgKHRvLT5zaV9jb2Rl ID09IFNJX1VTRVIpCitAQCAtNTgzLDEwICs1ODUsMTAgQEAKKyAgICAgICB0by0+Y3B0X3NpX3Bp ZCA9IGZyb20tPnNpX3BpZDsKKyAgICAgICB0by0+Y3B0X3NpX3VpZCA9IGZyb20tPnNpX3VpZDsK KyAgICAgfQorLSAgZWxzZSBpZiAodG8tPnNpX2NvZGUgPT0gU0lfVElNRVIpCisrICBlbHNlIGlm ICh0by0+c2lfY29kZSA8IDApCisgICAgIHsKKy0gICAgICB0by0+Y3B0X3NpX3RpbWVyaWQgPSBm cm9tLT5zaV90aW1lcmlkOworLSAgICAgIHRvLT5jcHRfc2lfb3ZlcnJ1biA9IGZyb20tPnNpX292 ZXJydW47CisrICAgICAgdG8tPmNwdF9zaV9waWQgPSBmcm9tLT5zaV9waWQ7CisrICAgICAgdG8t PmNwdF9zaV91aWQgPSBmcm9tLT5zaV91aWQ7CisgICAgICAgdG8tPmNwdF9zaV9wdHIgPSAoaW50 cHRyX3QpIGZyb20tPnNpX3B0cjsKKyAgICAgfQorICAgZWxzZQorQEAgLTYyOCw4ICs2MzAsMTAg QEAKKyAgIHRvLT5zaV9lcnJubyA9IGZyb20tPnNpX2Vycm5vOworICAgdG8tPnNpX2NvZGUgPSBm cm9tLT5zaV9jb2RlOworIAorLSAgaWYgKHRvLT5zaV9jb2RlIDwgMCkKKysgIGlmICh0by0+c2lf Y29kZSA9PSBTSV9USU1FUikKKyAgICAgeworKyAgICAgIHRvLT5zaV90aW1lcmlkID0gZnJvbS0+ Y3B0X3NpX3RpbWVyaWQ7CisrICAgICAgdG8tPnNpX292ZXJydW4gPSBmcm9tLT5jcHRfc2lfb3Zl cnJ1bjsKKyAgICAgICB0by0+c2lfcHRyID0gKHZvaWQgKikgKGludHB0cl90KSBmcm9tLT5jcHRf c2lfcHRyOworICAgICB9CisgICBlbHNlIGlmICh0by0+c2lfY29kZSA9PSBTSV9VU0VSKQorQEAg LTYzNywxMCArNjQxLDEwIEBACisgICAgICAgdG8tPnNpX3BpZCA9IGZyb20tPmNwdF9zaV9waWQ7 CisgICAgICAgdG8tPnNpX3VpZCA9IGZyb20tPmNwdF9zaV91aWQ7CisgICAgIH0KKy0gIGVsc2Ug aWYgKHRvLT5zaV9jb2RlID09IFNJX1RJTUVSKQorKyAgaWYgKHRvLT5zaV9jb2RlIDwgMCkKKyAg ICAgeworLSAgICAgIHRvLT5zaV90aW1lcmlkID0gZnJvbS0+Y3B0X3NpX3RpbWVyaWQ7CistICAg ICAgdG8tPnNpX292ZXJydW4gPSBmcm9tLT5jcHRfc2lfb3ZlcnJ1bjsKKysgICAgICB0by0+c2lf cGlkID0gZnJvbS0+Y3B0X3NpX3BpZDsKKysgICAgICB0by0+c2lfdWlkID0gZnJvbS0+Y3B0X3Np X3VpZDsKKyAgICAgICB0by0+c2lfcHRyID0gKHZvaWQgKikgKGludHB0cl90KSBmcm9tLT5jcHRf c2lfcHRyOworICAgICB9CisgICBlbHNlCisjIyMgc3JjL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9n CTIwMTAvMDkvMTMgMTk6MTE6MDMJMS40MzEKKyMjIyBzcmMvZ2RiL2dkYnNlcnZlci9DaGFuZ2VM b2cJMjAxMC8wOS8yNCAxMzo0MTo0MwkxLjQzMgorIyMgLTEsMyArMSwxMCBAQAorKzIwMTAtMDkt MjQgIFBlZHJvIEFsdmVzICA8cGVkcm9AY29kZXNvdXJjZXJ5LmNvbT4KKysKKysJKiBsaW51eC14 ODYtbG93LmMgKGNvbXBhdF9zaWdpbmZvX2Zyb21fc2lnaW5mbykKKysJKHNpZ2luZm9fZnJvbV9j b21wYXRfc2lnaW5mbyk6IEFsc28gY29weSBzaV9waWQgYW5kIHNpX3VpZCB3aGVuCisrCXNpX2Nv ZGUgaXMgPCAwLiAgQ2hlY2sgZm9yIHNpX2NvZGUgPT0gU0lfVElNRVIgYmVmb3JlIGNoZWNraW5n IGZvcgorKwlzaV9jb2RlIDwgMC4KKysKKyAyMDEwLTA5LTEzICBKb2VsIEJyb2JlY2tlciAgPGJy b2JlY2tlckBhZGFjb3JlLmNvbT4KKyAKKyAJKiBseW54LWkzODYtbG93LmM6IE5ldyBmaWxlLgor LS0tIHNyYy9nZGIvZ2Ric2VydmVyL2xpbnV4LXg4Ni1sb3cuYwkyMDEwLzA4LzI3IDAwOjE2OjQ4 CTEuMjMKKysrKyBzcmMvZ2RiL2dkYnNlcnZlci9saW51eC14ODYtbG93LmMJMjAxMC8wOS8yNCAx Mzo0MTo0MwkxLjI0CitAQCAtNzkyLDggKzc5MiwxMCBAQAorICAgdG8tPnNpX2Vycm5vID0gZnJv bS0+c2lfZXJybm87CisgICB0by0+c2lfY29kZSA9IGZyb20tPnNpX2NvZGU7CisgCistICBpZiAo dG8tPnNpX2NvZGUgPCAwKQorKyAgaWYgKHRvLT5zaV9jb2RlID09IFNJX1RJTUVSKQorICAgICB7 CisrICAgICAgdG8tPmNwdF9zaV90aW1lcmlkID0gZnJvbS0+c2lfdGltZXJpZDsKKysgICAgICB0 by0+Y3B0X3NpX292ZXJydW4gPSBmcm9tLT5zaV9vdmVycnVuOworICAgICAgIHRvLT5jcHRfc2lf cHRyID0gKGludHB0cl90KSBmcm9tLT5zaV9wdHI7CisgICAgIH0KKyAgIGVsc2UgaWYgKHRvLT5z aV9jb2RlID09IFNJX1VTRVIpCitAQCAtODAxLDEwICs4MDMsMTAgQEAKKyAgICAgICB0by0+Y3B0 X3NpX3BpZCA9IGZyb20tPnNpX3BpZDsKKyAgICAgICB0by0+Y3B0X3NpX3VpZCA9IGZyb20tPnNp X3VpZDsKKyAgICAgfQorLSAgZWxzZSBpZiAodG8tPnNpX2NvZGUgPT0gU0lfVElNRVIpCisrICBl bHNlIGlmICh0by0+c2lfY29kZSA8IDApCisgICAgIHsKKy0gICAgICB0by0+Y3B0X3NpX3RpbWVy aWQgPSBmcm9tLT5zaV90aW1lcmlkOworLSAgICAgIHRvLT5jcHRfc2lfb3ZlcnJ1biA9IGZyb20t PnNpX292ZXJydW47CisrICAgICAgdG8tPmNwdF9zaV9waWQgPSBmcm9tLT5zaV9waWQ7CisrICAg ICAgdG8tPmNwdF9zaV91aWQgPSBmcm9tLT5zaV91aWQ7CisgICAgICAgdG8tPmNwdF9zaV9wdHIg PSAoaW50cHRyX3QpIGZyb20tPnNpX3B0cjsKKyAgICAgfQorICAgZWxzZQorQEAgLTg0Niw4ICs4 NDgsMTAgQEAKKyAgIHRvLT5zaV9lcnJubyA9IGZyb20tPnNpX2Vycm5vOworICAgdG8tPnNpX2Nv ZGUgPSBmcm9tLT5zaV9jb2RlOworIAorLSAgaWYgKHRvLT5zaV9jb2RlIDwgMCkKKysgIGlmICh0 by0+c2lfY29kZSA9PSBTSV9USU1FUikKKyAgICAgeworKyAgICAgIHRvLT5zaV90aW1lcmlkID0g ZnJvbS0+Y3B0X3NpX3RpbWVyaWQ7CisrICAgICAgdG8tPnNpX292ZXJydW4gPSBmcm9tLT5jcHRf c2lfb3ZlcnJ1bjsKKyAgICAgICB0by0+c2lfcHRyID0gKHZvaWQgKikgKGludHB0cl90KSBmcm9t LT5jcHRfc2lfcHRyOworICAgICB9CisgICBlbHNlIGlmICh0by0+c2lfY29kZSA9PSBTSV9VU0VS KQorQEAgLTg1NSwxMCArODU5LDEwIEBACisgICAgICAgdG8tPnNpX3BpZCA9IGZyb20tPmNwdF9z aV9waWQ7CisgICAgICAgdG8tPnNpX3VpZCA9IGZyb20tPmNwdF9zaV91aWQ7CisgICAgIH0KKy0g IGVsc2UgaWYgKHRvLT5zaV9jb2RlID09IFNJX1RJTUVSKQorKyAgZWxzZSBpZiAodG8tPnNpX2Nv ZGUgPCAwKQorICAgICB7CistICAgICAgdG8tPnNpX3RpbWVyaWQgPSBmcm9tLT5jcHRfc2lfdGlt ZXJpZDsKKy0gICAgICB0by0+c2lfb3ZlcnJ1biA9IGZyb20tPmNwdF9zaV9vdmVycnVuOworKyAg ICAgIHRvLT5zaV9waWQgPSBmcm9tLT5jcHRfc2lfcGlkOworKyAgICAgIHRvLT5zaV91aWQgPSBm cm9tLT5jcHRfc2lfdWlkOworICAgICAgIHRvLT5zaV9wdHIgPSAodm9pZCAqKSAoaW50cHRyX3Qp IGZyb20tPmNwdF9zaV9wdHI7CisgICAgIH0KKyAgIGVsc2UKCmRpZmYgLS1naXQgYS9nZGItYno1 OTIwMzEtc2lnaW5mby1sb3N0LTNvZjUucGF0Y2ggYi9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0 LTNvZjUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ1YzgzZAot LS0gL2Rldi9udWxsCisrKyBiL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtM29mNS5wYXRjaApA QCAtMCwwICsxLDI1OSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIw MTAtMDkvbXNnMDA0MzguaHRtbAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAx MC0wOS9tc2cwMDE1Ni5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5LzI0IDE2 OjExOjQ0CTEuMTIyMDMKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5LzI0IDE4OjM1OjIw CTEuMTIyMDQKKyMjIC0xLDMgKzEsMTYgQEAKKysyMDEwLTA5LTI0ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCUZpeCBsb3N0IHNpZ2luZm9fdCBmb3Ig aW5mZXJpb3IgY2FsbHMuCisrCSogaW5mcnVuLmMKKysJKHN0cnVjdCBpbmZlcmlvcl90aHJlYWRf c3RhdGUpIDxzaWdpbmZvX2dkYmFyY2gsIHNpZ2luZm9fZGF0YT46IE5ldy4KKysJKHNhdmVfaW5m ZXJpb3JfdGhyZWFkX3N0YXRlKTogTmV3IHZhcmlhYmxlcyByZWdjYWNoZSwgZ2RiYXJjaCBhbmQK KysJc2lnaW5mb19kYXRhLiAgSW5pdGlhbGl6ZSBTSUdJTkZPX0RBVEEgaWYgZ2RiYXJjaF9nZXRf c2lnaW5mb190eXBlX3AuCisrCU1vdmUgSU5GX1NUQVRFIGFsbG9jYXRpb24gbGF0ZXIsIHByZS1j bGVhciBpdC4gIEluaXRpYWxpemUgUkVHSVNURVJTCisrCXVzaW5nIFJFR0NBQ0hFLgorKwkocmVz dG9yZV9pbmZlcmlvcl90aHJlYWRfc3RhdGUpOiBOZXcgdmFyaWFibGVzIHJlZ2NhY2hlIGFuZCBn ZGJhcmNoLgorKwlSZXN0b3JlIFNJR0lORk9fREFUQSBmb3IgbWF0Y2hpbmcgR0RCQVJDSC4gIFJl c3RvcmUgUkVHSVNURVJTIHVzaW5nCisrCVJFR0NBQ0hFLiAgRnJlZSBhbHNvIFNJR0lORk9fREFU QS4KKysKKyAyMDEwLTA5LTI0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CisgCisg CSogZHdhcmYycmVhZC5jIChkdzJfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcpOiBBZGQgbWlzc2lu ZworLS0tIHNyYy9nZGIvaW5mcnVuLmMJMjAxMC8wOS8wNiAxNDoyMjowNwkxLjQ1MAorKysrIHNy Yy9nZGIvaW5mcnVuLmMJMjAxMC8wOS8yNCAxODozNToyNwkxLjQ1MQorQEAgLTYwMzcsMTggKzYw MzcsNTcgQEAKKyAgIGVudW0gdGFyZ2V0X3NpZ25hbCBzdG9wX3NpZ25hbDsKKyAgIENPUkVfQURE UiBzdG9wX3BjOworICAgc3RydWN0IHJlZ2NhY2hlICpyZWdpc3RlcnM7CisrCisrICAvKiBGb3Jt YXQgb2YgU0lHSU5GTyBvciBOVUxMIGlmIGl0IGlzIG5vdCBwcmVzZW50LiAgKi8KKysgIHN0cnVj dCBnZGJhcmNoICpzaWdpbmZvX2dkYmFyY2g7CisrCisrICAvKiBUaGUgaW5mZXJpb3IgZm9ybWF0 IGRlcGVuZHMgb24gU0lHSU5GT19HREJBUkNIIGFuZCBpdCBoYXMgYSBsZW5ndGggb2YKKysgICAg IFRZUEVfTEVOR1RIIChnZGJhcmNoX2dldF9zaWdpbmZvX3R5cGUgKCkpLiAgRm9yIGRpZmZlcmVu dCBnZGJhcmNoIHRoZQorKyAgICAgY29udGVudCB3b3VsZCBiZSBpbnZhbGlkLiAgKi8KKysgIGdk Yl9ieXRlICpzaWdpbmZvX2RhdGE7CisgfTsKKyAKKyBzdHJ1Y3QgaW5mZXJpb3JfdGhyZWFkX3N0 YXRlICoKKyBzYXZlX2luZmVyaW9yX3RocmVhZF9zdGF0ZSAodm9pZCkKKyB7CistICBzdHJ1Y3Qg aW5mZXJpb3JfdGhyZWFkX3N0YXRlICppbmZfc3RhdGUgPSBYTUFMTE9DIChzdHJ1Y3QgaW5mZXJp b3JfdGhyZWFkX3N0YXRlKTsKKysgIHN0cnVjdCBpbmZlcmlvcl90aHJlYWRfc3RhdGUgKmluZl9z dGF0ZTsKKyAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBpbmZlcmlvcl90aHJlYWQgKCk7Cisr ICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlID0gZ2V0X2N1cnJlbnRfcmVnY2FjaGUgKCk7Cisr ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9yZWdjYWNoZV9hcmNoIChyZWdjYWNoZSk7 CisrICBnZGJfYnl0ZSAqc2lnaW5mb19kYXRhID0gTlVMTDsKKysKKysgIGlmIChnZGJhcmNoX2dl dF9zaWdpbmZvX3R5cGVfcCAoZ2RiYXJjaCkpCisrICAgIHsKKysgICAgICBzdHJ1Y3QgdHlwZSAq dHlwZSA9IGdkYmFyY2hfZ2V0X3NpZ2luZm9fdHlwZSAoZ2RiYXJjaCk7CisrICAgICAgc2l6ZV90 IGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKKysgICAgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190 bzsKKysKKysgICAgICBzaWdpbmZvX2RhdGEgPSB4bWFsbG9jIChsZW4pOworKyAgICAgIGJhY2tf dG8gPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBzaWdpbmZvX2RhdGEpOworKworKyAgICAgIGlmICh0 YXJnZXRfcmVhZCAoJmN1cnJlbnRfdGFyZ2V0LCBUQVJHRVRfT0JKRUNUX1NJR05BTF9JTkZPLCBO VUxMLAorKwkJICAgICAgIHNpZ2luZm9fZGF0YSwgMCwgbGVuKSA9PSBsZW4pCisrCWRpc2NhcmRf Y2xlYW51cHMgKGJhY2tfdG8pOworKyAgICAgIGVsc2UKKysJeworKwkgIC8qIEVycm9ycyBpZ25v cmVkLiAgKi8KKysJICBkb19jbGVhbnVwcyAoYmFja190byk7CisrCSAgc2lnaW5mb19kYXRhID0g TlVMTDsKKysJfQorKyAgICB9CisrCisrICBpbmZfc3RhdGUgPSBYWkFMTE9DIChzdHJ1Y3QgaW5m ZXJpb3JfdGhyZWFkX3N0YXRlKTsKKysKKysgIGlmIChzaWdpbmZvX2RhdGEpCisrICAgIHsKKysg ICAgICBpbmZfc3RhdGUtPnNpZ2luZm9fZ2RiYXJjaCA9IGdkYmFyY2g7CisrICAgICAgaW5mX3N0 YXRlLT5zaWdpbmZvX2RhdGEgPSBzaWdpbmZvX2RhdGE7CisrICAgIH0KKyAKKyAgIGluZl9zdGF0 ZS0+c3RvcF9zaWduYWwgPSB0cC0+c3RvcF9zaWduYWw7CisgICBpbmZfc3RhdGUtPnN0b3BfcGMg PSBzdG9wX3BjOworIAorLSAgaW5mX3N0YXRlLT5yZWdpc3RlcnMgPSByZWdjYWNoZV9kdXAgKGdl dF9jdXJyZW50X3JlZ2NhY2hlICgpKTsKKysgIGluZl9zdGF0ZS0+cmVnaXN0ZXJzID0gcmVnY2Fj aGVfZHVwIChyZWdjYWNoZSk7CisgCisgICByZXR1cm4gaW5mX3N0YXRlOworIH0KK0BAIC02MDU5 LDE2ICs2MDk4LDI5IEBACisgcmVzdG9yZV9pbmZlcmlvcl90aHJlYWRfc3RhdGUgKHN0cnVjdCBp bmZlcmlvcl90aHJlYWRfc3RhdGUgKmluZl9zdGF0ZSkKKyB7CisgICBzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRwID0gaW5mZXJpb3JfdGhyZWFkICgpOworKyAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSA9IGdldF9jdXJyZW50X3JlZ2NhY2hlICgpOworKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gg PSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUpOworIAorICAgdHAtPnN0b3Bfc2lnbmFsID0g aW5mX3N0YXRlLT5zdG9wX3NpZ25hbDsKKyAgIHN0b3BfcGMgPSBpbmZfc3RhdGUtPnN0b3BfcGM7 CisgCisrICBpZiAoaW5mX3N0YXRlLT5zaWdpbmZvX2dkYmFyY2ggPT0gZ2RiYXJjaCkKKysgICAg eworKyAgICAgIHN0cnVjdCB0eXBlICp0eXBlID0gZ2RiYXJjaF9nZXRfc2lnaW5mb190eXBlIChn ZGJhcmNoKTsKKysgICAgICBzaXplX3QgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOworKworKyAg ICAgIC8qIEVycm9ycyBpZ25vcmVkLiAgKi8KKysgICAgICB0YXJnZXRfd3JpdGUgKCZjdXJyZW50 X3RhcmdldCwgVEFSR0VUX09CSkVDVF9TSUdOQUxfSU5GTywgTlVMTCwKKysJCSAgICBpbmZfc3Rh dGUtPnNpZ2luZm9fZGF0YSwgMCwgbGVuKTsKKysgICAgfQorKworICAgLyogVGhlIGluZmVyaW9y IGNhbiBiZSBnb25lIGlmIHRoZSB1c2VyIHR5cGVzICJwcmludCBleGl0KDApIgorICAgICAgKGFu ZCBwZXJoYXBzIG90aGVyIHRpbWVzKS4gICovCisgICBpZiAodGFyZ2V0X2hhc19leGVjdXRpb24p CisgICAgIC8qIE5COiBUaGUgcmVnaXN0ZXIgd3JpdGUgZ29lcyB0aHJvdWdoIHRvIHRoZSB0YXJn ZXQuICAqLworLSAgICByZWdjYWNoZV9jcHkgKGdldF9jdXJyZW50X3JlZ2NhY2hlICgpLCBpbmZf c3RhdGUtPnJlZ2lzdGVycyk7CisrICAgIHJlZ2NhY2hlX2NweSAocmVnY2FjaGUsIGluZl9zdGF0 ZS0+cmVnaXN0ZXJzKTsKKyAgIHJlZ2NhY2hlX3hmcmVlIChpbmZfc3RhdGUtPnJlZ2lzdGVycyk7 CisrICB4ZnJlZSAoaW5mX3N0YXRlLT5zaWdpbmZvX2RhdGEpOworICAgeGZyZWUgKGluZl9zdGF0 ZSk7CisgfQorIAorIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEwLzA5LzIyIDIw OjA4OjA0CTEuMjQ1NgorIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEwLzA5LzI0 IDE4OjM1OjI4CTEuMjQ1NworIyMgLTEsMyArMSw5IEBACisrMjAxMC0wOS0yNCAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwlGaXggbG9zdCBzaWdpbmZv X3QgZm9yIGluZmVyaW9yIGNhbGxzLgorKwkqIGdkYi5iYXNlL3NpZ2luZm8taW5mY2FsbC5leHA6 IE5ldyBmaWxlLgorKwkqIGdkYi5iYXNlL3NpZ2luZm8taW5mY2FsbC5jOiBOZXcgZmlsZS4KKysK KyAyMDEwLTA5LTIyICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBhZGFjb3JlLmNvbT4KKyAK KyAJKiBnZGIuZHdhcmYyL2R3Mi1jb25zdC5TOiBNaW5vciAoc3BhY2UpIHJlZm9ybWF0dGluZy4K Ky0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdpbmZvLWluZmNhbGwuYworKysrIHNy Yy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2luZm8taW5mY2FsbC5jCTIwMTAtMDktMjUgMTM6 MjU6MjUuMDA3MTY5MDAwICswMDAwCitAQCAtMCwwICsxLDc5IEBACisrLyogVGhpcyB0ZXN0Y2Fz ZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAx MCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPHNpZ25hbC5oPgorKyNpbmNsdWRl IDxhc3NlcnQuaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPHVuaXN0ZC5oPgor KworKyNpZm5kZWYgU0FfU0lHSU5GTworKyMgZXJyb3IgIlNBX1NJR0lORk8gaXMgcmVxdWlyZWQg Zm9yIHRoaXMgdGVzdCIKKysjZW5kaWYKKysKKytzdGF0aWMgaW50CisrY2FsbG1lICh2b2lkKQor K3sKKysgIHJldHVybiA0MjsKKyt9CisrCisrc3RhdGljIGludAorK3Bhc3MgKHZvaWQpCisrewor KyAgcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBpbnQKKytmYWlsICh2b2lkKQorK3sKKysgIHJl dHVybiAxOworK30KKysKKytzdGF0aWMgdm9pZAorK2hhbmRsZXIgKGludCBzaWcsIHNpZ2luZm9f dCAqc2lnaW5mbywgdm9pZCAqY29udGV4dCkKKyt7CisrICBhc3NlcnQgKHNpZyA9PSBTSUdVU1Ix KTsKKysgIGFzc2VydCAoc2lnaW5mby0+c2lfc2lnbm8gPT0gU0lHVVNSMSk7CisrICBpZiAoc2ln aW5mby0+c2lfcGlkID09IGdldHBpZCAoKSkKKysgICAgcGFzcyAoKTsKKysgIGVsc2UKKysgICAg ZmFpbCAoKTsKKyt9CisrCisraW50CisrbWFpbiAodm9pZCkKKyt7CisrICBzdHJ1Y3Qgc2lnYWN0 aW9uIHNhOworKyAgaW50IGk7CisrCisrICBjYWxsbWUgKCk7CisrCisrICBtZW1zZXQgKCZzYSwg MCwgc2l6ZW9mIChzYSkpOworKyAgc2Euc2Ffc2lnYWN0aW9uID0gaGFuZGxlcjsKKysgIHNhLnNh X2ZsYWdzID0gU0FfU0lHSU5GTzsKKysKKysgIGkgPSBzaWdlbXB0eXNldCAoJnNhLnNhX21hc2sp OworKyAgYXNzZXJ0IChpID09IDApOworKworKyAgaSA9IHNpZ2FjdGlvbiAoU0lHVVNSMSwgJnNh LCBOVUxMKTsKKysgIGFzc2VydCAoaSA9PSAwKTsKKysKKysgIGkgPSByYWlzZSAoU0lHVVNSMSk7 CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICBzbGVlcCAoNjAwKTsKKysgIHJldHVybiAwOwor K30KKy0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdpbmZvLWluZmNhbGwuZXhwCisr Kysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnaW5mby1pbmZjYWxsLmV4cAkyMDEwLTA5 LTI1IDEzOjI1OjI1LjM1NzcyNDAwMCArMDAwMAorQEAgLTAsMCArMSw0NyBAQAorKyMgQ29weXJp Z2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorKworK2lmIFt0YXJnZXRfaW5mbyBleGlzdHMgZ2RiLG5vc2lnbmFs c10geworKyAgICB2ZXJib3NlICJTa2lwcGluZyBzaWdpbmZvLWluZmNhbGwuZXhwIGJlY2F1c2Ug b2Ygbm9zaWduYWxzLiIKKysgICAgY29udGludWUKKyt9CisrCisrc2V0IHRlc3RmaWxlIHNpZ2lu Zm8taW5mY2FsbAorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytzZXQgZXhlY3V0YWJsZSAk e3Rlc3RmaWxlfQorK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICRl eGVjdXRhYmxlXSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFbcnVudG9fbWFpbl0g eworKyAgICByZXR1cm4gLTEKKyt9CisrCisrZ2RiX2JyZWFrcG9pbnQgInBhc3MiCisrZ2RiX2Jy ZWFrcG9pbnQgImZhaWwiCisrCisrZ2RiX3Rlc3QgImNvbnRpbnVlIiAiUHJvZ3JhbSByZWNlaXZl ZCBzaWduYWwgU0lHVVNSMSwgLioiICJjb250aW51ZSB0byBTSUdVU1IxIgorKworK2dkYl90ZXN0 ICJwIGNhbGxtZSAoKSIgIiA9IDQyIgorKworK3NldCB0ZXN0ICJjb250aW51ZSB0byB0aGUgaGFu ZGxlciIKKytnZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICR0ZXN0IHsKKysgICAgLXJlICJC cmVha3BvaW50IFxbMC05XF0rLFxbXlxyXG5cXSogcGFzcyAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7 CisrCXBhc3MgJHRlc3QKKysgICAgfQorKyAgICAtcmUgIkJyZWFrcG9pbnQgXFswLTlcXSssXFte XHJcblxdKiBmYWlsIC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJZmFpbCAkdGVzdAorKyAgICB9 CisrfQoKZGlmZiAtLWdpdCBhL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNG9mNS5wYXRjaCBi L2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNG9mNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5hNzNhYjMzCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6NTkyMDMx LXNpZ2luZm8tbG9zdC00b2Y1LnBhdGNoCkBAIC0wLDAgKzEsOTkyIEBACitodHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wOS9tc2cwMDM2MC5odG1sCitTdWJqZWN0OiBb cGF0Y2ggMy80XSMzIGxpbnV4LW5hdDogRG8gbm90IHJlc3Bhd24gc2lnbmFscworCitIaSwKKwor bGludXgtbmF0LmMgaXMgZml4ZWQgdG8gbmV2ZXIgcmVzcGF3biBzaWduYWxzOyBwb3NzaWJseSBr ZWVwaW5nIFNJR1NUT1AKK3BlbmRpbmcsIGFzIGlzIGRvbmUgaW4gY3VycmVudCBpbiBGU0YgZ2Ri c2VydmVyIGFuZCBhcyBzdWdnZXN0ZWQgYnkgUGVkcm86CisJaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1wYXRjaGVzLzIwMTAtMDgvbXNnMDA1NDQuaHRtbAorCitUaGUgbGFzdCBsaW51eC1u YXQuYyByZW1vdmVkIHBhdGNoIGNodW5rIGNvbWVzIGZyb20gdGhlIGluaXRpYWwgaW1wbGVtZW50 YXRpb24KK2J5IE1hcmsgS2V0dGVuaXM6CisJW1BBVENIXSBOZXcgTGludXggdGhyZWFkcyBzdXBw b3J0CisJaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDAtMDkvbXNnMDAw MjAuaHRtbAorCTkyMjgwYTc1ZTAxNzY4M2JmOGU0ZjMzOWY0Zjg1NjQwYjA3MDA1MDkKK0l0IGdl dHMgaW4gcGFydCByZWltcGxlbWVudGVkIGludG8gdGhlIG5ldyBzdG9wX3dhaXRfY2FsbGJhY2sg PGlmIChscC0+c3RlcCk+CitwYXJ0IGFuZCBwYXJ0aWFsbHkganVzdCBub3QgbmVlZGVkIGFzIGN1 cnJlbnRseSBHREIgbmV2ZXIgZHJvcHMgdGhlIHNpZ25hbHMgYXMKK2l0IGRvZXMgbm90IFBUUkFD RV9DT05UIHRoZSB0aHJlYWQ7IHNpZ25hbCBpcyBrZXB0IGZvciBwcm9jZXNzaW5nOgorCSJSQzog Tm90IHJlc3VtaW5nIHNpYmxpbmcgJXMgKGhhcyBwZW5kaW5nKVxuIgorCitJbiBzdG9wX3dhaXRf Y2FsbGJhY2sgSSBiZWxpZXZlIGJyZWFrcG9pbnRzIGNhbmNlbGxhdGlvbiBpcyBub3QgbmVlZGVk IGhlcmUsCitpdCB3b3VsZCBiZSBkb25lIGxhdGVyLgorCisKK1RoZSB0ZXN0Y2FzZSBzaWdzdGVw LXRocmVhZHMuZXhwIHdhcyB3cml0dGVuIHRvIGNhdGNoIGEgcmVncmVzc2lvbi1saWtlCithcHBl YXJhbmNlIHRoZW4gdGhlIG5ldyA8aWYgKGxwLT5zdGVwKT4gcGFydCBvZiBzdG9wX3dhaXRfY2Fs bGJhY2sgZ2V0cworcmVtb3ZlZC4gIFN0aWxsIHRoZSB0ZWNhc2UgZmFpbHMgZXZlbiB3aXRoIEZT RiBIRUFEOgorCiszMiAgICAgICAgdmFyKys7ICAgICAgICAgICAgICAgIC8qIHN0ZXAtMSAqLwor KGdkYikgc3RlcAorUHJvZ3JhbSByZWNlaXZlZCBzaWduYWwgU0lHVVNSMSwgVXNlciBkZWZpbmVk IHNpZ25hbCAxLgorUHJvZ3JhbSByZWNlaXZlZCBzaWduYWwgU0lHVVNSMSwgVXNlciBkZWZpbmVk IHNpZ25hbCAxLgorMzEgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAvKiBzdGVwLTAgKi8K KworVGhlcmUgaXMgbm8gcmVhc29uIHdoeSBpdCBzaG91bGRuJ3Qgc3RvcCBvbiBsaW5lIDMzLCBi ZXR3ZWVuIGxpbmUgMzIgYW5kIGxpbmUKKzMzIG5vIHNpZ25hbCB3b3VsZCBvY2N1ci4gIFN0ZXBw aW5nIG9mIHRoZSBjdXJyZW50IHRocmVhZCBzaG91bGQgbm90IGJlCithZmZlY3RlZCBieSB3aGF0 ZXZlciBoYXBwZW5zIGluIHRoZSBvdGhlciB0aHJlYWRzIGFzIHNlbGVjdF9ldmVudF9sd3AgaGFz OgorICAvKiBHaXZlIHByZWZlcmVuY2UgdG8gYW55IExXUCB0aGF0IGlzIGJlaW5nIHNpbmdsZS1z dGVwcGVkLiAgKi8KKworVGhlcmUgaXMgYSBwcm9ibGVtIHRoYXQgd2l0aCBGU0YgSEVBRCBHREIg ZG9lcyBQVFJBQ0VfU0lOR0xFU1RFUCBmb3IgdGhyZWFkIEEsCitQVFJBQ0VfQ09OVCBmb3IgdGhy ZWFkIEIgKGJlY2F1c2Ugb2Ygc2V0IHNjaGVkdWxlci1sb2NraW5nIG9mZiksIHRocmVhZCBCIGhp dHMKK1NJR1VTUjEsIHNvIEdEQiB0a2lsbHMgdGhyZWFkIEEgd2l0aCBTSUdTVE9QIGFuZCBpdCBj YW4gcmVjZWl2ZSBTSUdTVE9QIGZvcgordGhyZWFkIEEgYmVmb3JlIHRoZSBTSUdUUkFQIGZvciBj b21wbGV0ZWQgUFRSQUNFX1NJTkdMRVNURVAuICBBdCB0aGF0IG1vbWVudAorc2VsZWN0X2V2ZW50 X2x3cC4gZm9yZ2V0cyBpdCB3YXMgc3RlcHBpbmcgdGhyZWFkIEEgYmVjYXVzZSB0aGVyZSBpcyBu byBwZW5kaW5nCitTSUdUUkFQIGV2ZW50LiAgY3VycmVudGx5X3N0ZXBwaW5nIHN0aWxsIHJlbWVt YmVycyB0aHJlYWQgQSB3YXMgc3RlcHBpbmcgc28gaXQKK3dpbGwgbGF0ZXIgc3RvcCBidXQgYXMg dGhyZWFkIEEgd2FzIFBUUkFDRV9DT05ULWVkIGluIHRoZSBtZWFudGltZSBpdCBpcyB0b28KK2xh dGUuCisKK1RoZXJlIGlzIHRoZSBuZXcgPGlmIChscC0+c3RlcCk+IHBhcnQgb2Ygc3RvcF93YWl0 X2NhbGxiYWNrIHRvIGFsd2F5cyB0cmFjawordGhyZWFkIEEgaXMgc3RlcHBpbmcuICBEdWUgdG8g ZGlmZmVyZW50IHNjaGVkdWxpbmcgd2l0aG91dCB0aGlzIHBhcnQgdGhlCitjaGFuZ2VkIEdEQiB3 b3VsZCB2ZXJ5IHJhcmVseSBzdG9wIGluIHRoaXMgdGVzdGNhc2Ugb3RoZXJ3aXNlLCBtYWtpbmcg aXQgbG9vaworYXMgYSByZWdyZXNzaW9uLgorCitJIGhhdmUgc29tZSBhbm90aGVyIHBhdGNoIEkg bWF5IHBvc3Qgc2VwYXJhdGVseSBhcyBpZiBtdWx0aXBsZSBzaWduYWxzIGhhcHBlbgorYmVzaWRl cyBTSUdUUkFQIEdEQiBzdGlsbCBtYXkgc3dpdGNoIGZyb20gdGhyZWFkIEEgYXdheSAoYXMgbm90 IGNvbnNpZGVyaW5nIGl0CitzdGVwcGluZykgdG8gdGhyZWFkIEIgZm9yIFNJR1VTUiBhbmQgYWNj aWRlbnRhbGx5IFBUUkFDRV9DT05UIHRocmVhZCBBLgorQnV0IEkgZG8gbm90IGZpbmQgdGhpcyBh cyBhIHByZXJlcXVpc2l0ZSBmb3IgdGhpcyBwYXRjaHNldC4KKworCisKK1RoYW5rcywKK0phbgor CisKK2dkYi8KKzIwMTAtMDktMjAgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KKworCSogbGludXgtbmF0LmMgKHN0b3Bfd2FpdF9jYWxsYmFjayk6IE5ldyBnZGJf YXNzZXJ0LiAgUmVtb3ZlIHNpZ25hbHMKKwlyZXNwYXduaW5nOyBrZWVwIFRQIHdpdGggU0lHTkFM TEVELiAgTmV3IGRlYnVnZ2luZyBtZXNzYWdlICJTV0M6CisJRGVsYXllZCBTSUdTVE9QIGNhdWdo dCBmb3IgJXMuIi4gIENhdGNoIG5leHQgc2lnbmFsIGlmIFNJR1NUT1AgaGFzCisJYmVlbiBjYXVn aHQgYW5kIExQLT5TVEVQIGlzIHNldC4KKwkobGludXhfbmF0X3dhaXRfMSkgPGxwICYmIGxwLT5z aWduYWxsZWQ+OiBSZW1vdmUuCisKK2dkYi90ZXN0c3VpdGUvCisyMDEwLTA5LTIwICBKYW4gS3Jh dG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIGdkYi50aHJlYWRzL3Np Z2luZm8tdGhyZWFkcy5leHA6IE5ldyBmaWxlLgorCSogZ2RiLnRocmVhZHMvc2lnaW5mby10aHJl YWRzLmM6IE5ldyBmaWxlLgorCSogZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmV4cDogTmV3 IGZpbGUuCisJKiBnZGIudGhyZWFkcy9zaWdzdGVwLXRocmVhZHMuYzogTmV3IGZpbGUuCisKK0lu ZGV4OiBnZGItNy4yL2dkYi9saW51eC1uYXQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjIub3Jp Zy9nZGIvbGludXgtbmF0LmMJMjAxMC0wOS0yNSAxNTozMDo1NC4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4yL2dkYi9saW51eC1uYXQuYwkyMDEwLTA5LTI1IDE1OjM3OjIzLjAwMDAwMDAwMCAr MDIwMAorQEAgLTI3MDIsNiArMjcwMiw4IEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3 cF9pbmZvICpscCwKKyAgICAgeworICAgICAgIGludCBzdGF0dXM7CisgCisrICAgICAgZ2RiX2Fz c2VydCAobHAtPnJlc3VtZWQpOworKworICAgICAgIHN0YXR1cyA9IHdhaXRfbHdwIChscCk7Cisg ICAgICAgaWYgKHN0YXR1cyA9PSAwKQorIAlyZXR1cm4gMDsKK0BAIC0yNzI2LDExMCArMjcyOCw2 MSBAQCBzdG9wX3dhaXRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsCisgCisgICAgICAg aWYgKFdTVE9QU0lHIChzdGF0dXMpICE9IFNJR1NUT1ApCisgCXsKKy0JICBpZiAoV1NUT1BTSUcg KHN0YXR1cykgPT0gU0lHVFJBUCkKKy0JICAgIHsKKy0JICAgICAgLyogSWYgYSBMV1Agb3RoZXIg dGhhbiB0aGUgTFdQIHRoYXQgd2UncmUgcmVwb3J0aW5nIGFuCistCSAgICAgICAgIGV2ZW50IGZv ciBoYXMgaGl0IGEgR0RCIGJyZWFrcG9pbnQgKGFzIG9wcG9zZWQgdG8KKy0JICAgICAgICAgc29t ZSByYW5kb20gdHJhcCBzaWduYWwpLCB0aGVuIGp1c3QgYXJyYW5nZSBmb3IgaXQgdG8KKy0JICAg ICAgICAgaGl0IGl0IGFnYWluIGxhdGVyLiAgV2UgZG9uJ3Qga2VlcCB0aGUgU0lHVFJBUCBzdGF0 dXMKKy0JICAgICAgICAgYW5kIGRvbid0IGZvcndhcmQgdGhlIFNJR1RSQVAgc2lnbmFsIHRvIHRo ZSBMV1AuICBXZQorLQkgICAgICAgICB3aWxsIGhhbmRsZSB0aGUgY3VycmVudCBldmVudCwgZXZl bnR1YWxseSB3ZSB3aWxsCistCSAgICAgICAgIHJlc3VtZSBhbGwgTFdQcywgYW5kIHRoaXMgb25l IHdpbGwgZ2V0IGl0cyBicmVha3BvaW50CistCSAgICAgICAgIHRyYXAgYWdhaW4uCistCistCSAg ICAgICAgIElmIHdlIGRvIG5vdCBkbyB0aGlzLCB0aGVuIHdlIHJ1biB0aGUgcmlzayB0aGF0IHRo ZQorLQkgICAgICAgICB1c2VyIHdpbGwgZGVsZXRlIG9yIGRpc2FibGUgdGhlIGJyZWFrcG9pbnQs IGJ1dCB0aGUKKy0JICAgICAgICAgdGhyZWFkIHdpbGwgaGF2ZSBhbHJlYWR5IHRyaXBwZWQgb24g aXQuICAqLworLQorLQkgICAgICAvKiBTYXZlIHRoZSB0cmFwJ3Mgc2lnaW5mbyBpbiBjYXNlIHdl IG5lZWQgaXQgbGF0ZXIuICAqLworLQkgICAgICBzYXZlX3NpZ2luZm8gKGxwKTsKKy0KKy0JICAg ICAgc2F2ZV9zaWd0cmFwIChscCk7CistCistCSAgICAgIC8qIE5vdyByZXN1bWUgdGhpcyBMV1Ag YW5kIGdldCB0aGUgU0lHU1RPUCBldmVudC4gKi8KKy0JICAgICAgZXJybm8gPSAwOworLQkgICAg ICBwdHJhY2UgKFBUUkFDRV9DT05ULCBHRVRfTFdQIChscC0+cHRpZCksIDAsIDApOworLQkgICAg ICBpZiAoZGVidWdfbGludXhfbmF0KQorLQkJeworLQkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdk Yl9zdGRsb2csCistCQkJCSAgICAgICJQVFJBQ0VfQ09OVCAlcywgMCwgMCAoJXMpXG4iLAorLQkJ CQkgICAgICB0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpLAorLQkJCQkgICAgICBlcnJubyA/ IHNhZmVfc3RyZXJyb3IgKGVycm5vKSA6ICJPSyIpOworLQorLQkJICBmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csCistCQkJCSAgICAgICJTV0M6IENhbmRpZGF0ZSBTSUdUUkFQIGV2ZW50 IGluICVzXG4iLAorLQkJCQkgICAgICB0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpKTsKKy0J CX0KKy0JICAgICAgLyogSG9sZCB0aGlzIGV2ZW50L3dhaXRzdGF0dXMgd2hpbGUgd2UgY2hlY2sg dG8gc2VlIGlmCistCQkgdGhlcmUgYXJlIGFueSBtb3JlICh3ZSBzdGlsbCB3YW50IHRvIGdldCB0 aGF0IFNJR1NUT1ApLiAqLworLQkgICAgICBzdG9wX3dhaXRfY2FsbGJhY2sgKGxwLCBOVUxMKTsK KysJICAvKiBUaGUgdGhyZWFkIHdhcyBzdG9wcGVkIHdpdGggYSBzaWduYWwgb3RoZXIgdGhhbiBT SUdTVE9QLiAgKi8KKyAKKy0JICAgICAgLyogSG9sZCB0aGUgU0lHVFJBUCBmb3IgaGFuZGxpbmcg YnkgbGludXhfbmF0X3dhaXQuICBJZgorLQkJIHRoZXJlJ3MgYW5vdGhlciBldmVudCwgdGhyb3cg aXQgYmFjayBpbnRvIHRoZQorLQkJIHF1ZXVlLiAqLworLQkgICAgICBpZiAobHAtPnN0YXR1cykK Ky0JCXsKKy0JCSAgaWYgKGRlYnVnX2xpbnV4X25hdCkKKy0JCSAgICBmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csCistCQkJCQkiU1dDOiBraWxsICVzLCAlc1xuIiwKKy0JCQkJCXRhcmdl dF9waWRfdG9fc3RyIChscC0+cHRpZCksCistCQkJCQlzdGF0dXNfdG9fc3RyICgoaW50KSBzdGF0 dXMpKTsKKy0JCSAga2lsbF9sd3AgKEdFVF9MV1AgKGxwLT5wdGlkKSwgV1NUT1BTSUcgKGxwLT5z dGF0dXMpKTsKKy0JCX0KKysJICAvKiBTYXZlIHRoZSB0cmFwJ3Mgc2lnaW5mbyBpbiBjYXNlIHdl IG5lZWQgaXQgbGF0ZXIuICAqLworKwkgIHNhdmVfc2lnaW5mbyAobHApOworIAorLQkgICAgICAv KiBTYXZlIHRoZSBzaWd0cmFwIGV2ZW50LiAqLworLQkgICAgICBscC0+c3RhdHVzID0gc3RhdHVz OworLQkgICAgICByZXR1cm4gMDsKKy0JICAgIH0KKy0JICBlbHNlCistCSAgICB7CistCSAgICAg IC8qIFRoZSB0aHJlYWQgd2FzIHN0b3BwZWQgd2l0aCBhIHNpZ25hbCBvdGhlciB0aGFuCistCSAg ICAgICAgIFNJR1NUT1AsIGFuZCBkaWRuJ3QgYWNjaWRlbnRhbGx5IHRyaXAgYSBicmVha3BvaW50 LiAqLworKwkgIHNhdmVfc2lndHJhcCAobHApOworIAorLQkgICAgICBpZiAoZGVidWdfbGludXhf bmF0KQorLQkJeworLQkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCistCQkJCSAg ICAgICJTV0M6IFBlbmRpbmcgZXZlbnQgJXMgaW4gJXNcbiIsCistCQkJCSAgICAgIHN0YXR1c190 b19zdHIgKChpbnQpIHN0YXR1cyksCistCQkJCSAgICAgIHRhcmdldF9waWRfdG9fc3RyIChscC0+ cHRpZCkpOworLQkJfQorLQkgICAgICAvKiBOb3cgcmVzdW1lIHRoaXMgTFdQIGFuZCBnZXQgdGhl IFNJR1NUT1AgZXZlbnQuICovCistCSAgICAgIGVycm5vID0gMDsKKy0JICAgICAgcHRyYWNlIChQ VFJBQ0VfQ09OVCwgR0VUX0xXUCAobHAtPnB0aWQpLCAwLCAwKTsKKy0JICAgICAgaWYgKGRlYnVn X2xpbnV4X25hdCkKKy0JCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKy0JCQkJICAg ICJTV0M6IFBUUkFDRV9DT05UICVzLCAwLCAwICglcylcbiIsCistCQkJCSAgICB0YXJnZXRfcGlk X3RvX3N0ciAobHAtPnB0aWQpLAorLQkJCQkgICAgZXJybm8gPyBzYWZlX3N0cmVycm9yIChlcnJu bykgOiAiT0siKTsKKy0KKy0JICAgICAgLyogSG9sZCB0aGlzIGV2ZW50L3dhaXRzdGF0dXMgd2hp bGUgd2UgY2hlY2sgdG8gc2VlIGlmCistCSAgICAgICAgIHRoZXJlIGFyZSBhbnkgbW9yZSAod2Ug c3RpbGwgd2FudCB0byBnZXQgdGhhdCBTSUdTVE9QKS4gKi8KKy0JICAgICAgc3RvcF93YWl0X2Nh bGxiYWNrIChscCwgTlVMTCk7CisrCSAgaWYgKGRlYnVnX2xpbnV4X25hdCkKKysJICAgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKysJCQkJIlNXQzogUGVuZGluZyBldmVudCAlcyBp biAlc1xuIiwKKysJCQkJc3RhdHVzX3RvX3N0ciAoKGludCkgc3RhdHVzKSwKKysJCQkJdGFyZ2V0 X3BpZF90b19zdHIgKGxwLT5wdGlkKSk7CisgCistCSAgICAgIC8qIElmIHRoZSBscC0+c3RhdHVz IGZpZWxkIGlzIHN0aWxsIGVtcHR5LCB1c2UgaXQgdG8KKy0JCSBob2xkIHRoaXMgZXZlbnQuICBJ ZiBub3QsIHRoZW4gdGhpcyBldmVudCBtdXN0IGJlCistCQkgcmV0dXJuZWQgdG8gdGhlIGV2ZW50 IHF1ZXVlIG9mIHRoZSBMV1AuICAqLworLQkgICAgICBpZiAobHAtPnN0YXR1cykKKy0JCXsKKy0J CSAgaWYgKGRlYnVnX2xpbnV4X25hdCkKKy0JCSAgICB7CistCQkgICAgICBmcHJpbnRmX3VuZmls dGVyZWQgKGdkYl9zdGRsb2csCistCQkJCQkgICJTV0M6IGtpbGwgJXMsICVzXG4iLAorLQkJCQkJ ICB0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpLAorLQkJCQkJICBzdGF0dXNfdG9fc3RyICgo aW50KSBzdGF0dXMpKTsKKy0JCSAgICB9CistCQkgIGtpbGxfbHdwIChHRVRfTFdQIChscC0+cHRp ZCksIFdTVE9QU0lHIChzdGF0dXMpKTsKKy0JCX0KKy0JICAgICAgZWxzZQorLQkJbHAtPnN0YXR1 cyA9IHN0YXR1czsKKy0JICAgICAgcmV0dXJuIDA7CistCSAgICB9CisrCSAgLyogU2F2ZSB0aGUg c2lndHJhcCBldmVudC4gKi8KKysJICBscC0+c3RhdHVzID0gc3RhdHVzOworKwkgIGdkYl9hc3Nl cnQgKCEgbHAtPnN0b3BwZWQpOworKwkgIGdkYl9hc3NlcnQgKGxwLT5zaWduYWxsZWQpOworKwkg IGxwLT5zdG9wcGVkID0gMTsKKyAJfQorICAgICAgIGVsc2UKKyAJeworIAkgIC8qIFdlIGNhdWdo dCB0aGUgU0lHU1RPUCB0aGF0IHdlIGludGVuZGVkIHRvIGNhdGNoLCBzbworIAkgICAgIHRoZXJl J3Mgbm8gU0lHU1RPUCBwZW5kaW5nLiAgKi8KKy0JICBscC0+c3RvcHBlZCA9IDE7CisrCisrCSAg aWYgKGRlYnVnX2xpbnV4X25hdCkKKysJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywKKysJCQkJIlNXQzogRGVsYXllZCBTSUdTVE9QIGNhdWdodCBmb3IgJXMuXG4iLAorKwkJCQl0 YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpKTsKKysKKysJICBpZiAobHAtPnN0ZXApCisrCSAg ICB7CisrCSAgICAgIC8qIExQLT5TVEFUVVMgaXMgMCBoZXJlLiAgVGhhdCBtZWFucyBTSUdUUkFQ IGZyb20KKysJCSBQVFJBQ0VfU0lOR0xFU1RFUCBzdGlsbCBoYXMgdG8gYmUgZGVsaXZlcmVkIGZv ciB0aGlzIGluZmVyaW9yCisrCQkgc3RvcC4gIENhdGNoaW5nIHRoZSBTSUdUUkFQIGV2ZW50IGlz IGltcG9ydGFudCB0byBwcmV2ZW50CisrCQkgc3RhcnZhdGlvbiBpbiBzZWxlY3RfZXZlbnRfbHdw LiAgKi8KKysKKysJICAgICAgcmVnaXN0ZXJzX2NoYW5nZWQgKCk7CisrCSAgICAgIGxpbnV4X29w cy0+dG9fcmVzdW1lIChsaW51eF9vcHMsIHBpZF90b19wdGlkIChHRVRfTFdQIChscC0+cHRpZCkp LAorKwkJCQkgICAgMSwgVEFSR0VUX1NJR05BTF8wKTsKKysJICAgICAgaWYgKGRlYnVnX2xpbnV4 X25hdCkKKysJCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKysJCQkJICAgICJTV0M6 ICVzICVzLCAwLCAwIChkaXNjYXJkIFNJR1NUT1ApXG4iLAorKwkJCQkgICAgIlBUUkFDRV9TSU5H TEVTVEVQIiwKKysJCQkJICAgIHRhcmdldF9waWRfdG9fc3RyIChscC0+cHRpZCkpOworKworKwkg ICAgICBscC0+c3RvcHBlZCA9IDA7CisrCSAgICAgIGdkYl9hc3NlcnQgKGxwLT5yZXN1bWVkKTsK KysJICAgICAgc3RvcF93YWl0X2NhbGxiYWNrIChscCwgTlVMTCk7CisrCSAgICAgIGdkYl9hc3Nl cnQgKGxwLT5zdG9wcGVkKTsKKysJICAgIH0KKysJICBlbHNlCisrCSAgICBscC0+c3RvcHBlZCA9 IDE7CisrCisrCSAgLyogUmVzZXQgU0lHTkFMTEVEIG9ubHkgYWZ0ZXIgdGhlIHN0b3Bfd2FpdF9j YWxsYmFjayBjYWxsIGFib3ZlIGFzCisrCSAgICAgaXQgZG9lcyBnZGJfYXNzZXJ0IG9uIFNJR05B TExFRC4gICovCisgCSAgbHAtPnNpZ25hbGxlZCA9IDA7CisgCX0KKyAgICAgfQorQEAgLTM0MTYs NTIgKzMzNjksNiBAQCByZXRyeToKKyAJbHAgPSBOVUxMOworICAgICB9CisgCistICBpZiAobHAg JiYgbHAtPnNpZ25hbGxlZCkKKy0gICAgeworLSAgICAgIC8qIEEgcGVuZGluZyBTSUdTVE9QIG1h eSBpbnRlcmZlcmUgd2l0aCB0aGUgbm9ybWFsIHN0cmVhbSBvZgorLSAgICAgICAgIGV2ZW50cy4g IEluIGEgdHlwaWNhbCBjYXNlIHdoZXJlIGludGVyZmVyZW5jZSBpcyBhIHByb2JsZW0sCistICAg ICAgICAgd2UgaGF2ZSBhIFNJR1NUT1Agc2lnbmFsIHBlbmRpbmcgZm9yIExXUCBBIHdoaWxlCist ICAgICAgICAgc2luZ2xlLXN0ZXBwaW5nIGl0LCBlbmNvdW50ZXIgYW4gZXZlbnQgaW4gTFdQIEIs IGFuZCB0YWtlIHRoZQorLSAgICAgICAgIHBlbmRpbmcgU0lHU1RPUCB3aGlsZSB0cnlpbmcgdG8g c3RvcCBMV1AgQS4gIEFmdGVyIHByb2Nlc3NpbmcKKy0gICAgICAgICB0aGUgZXZlbnQgaW4gTFdQ IEIsIExXUCBBIGlzIGNvbnRpbnVlZCwgYW5kIHdlJ2xsIG5ldmVyIHNlZQorLSAgICAgICAgIHRo ZSBTSUdUUkFQIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGFzdCB0aW1lIHdlIHdlcmUKKy0gICAgICAg ICBzaW5nbGUtc3RlcHBpbmcgTFdQIEEuICAqLworLQorLSAgICAgIC8qIFJlc3VtZSB0aGUgdGhy ZWFkLiAgSXQgc2hvdWxkIGhhbHQgaW1tZWRpYXRlbHkgcmV0dXJuaW5nIHRoZQorLSAgICAgICAg IHBlbmRpbmcgU0lHU1RPUC4gICovCistICAgICAgcmVnaXN0ZXJzX2NoYW5nZWQgKCk7CistICAg ICAgbGludXhfb3BzLT50b19yZXN1bWUgKGxpbnV4X29wcywgcGlkX3RvX3B0aWQgKEdFVF9MV1Ag KGxwLT5wdGlkKSksCistCQkJICAgIGxwLT5zdGVwLCBUQVJHRVRfU0lHTkFMXzApOworLSAgICAg IGlmIChkZWJ1Z19saW51eF9uYXQpCistCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywK Ky0JCQkgICAgIkxMVzogJXMgJXMsIDAsIDAgKGV4cGVjdCBTSUdTVE9QKVxuIiwKKy0JCQkgICAg bHAtPnN0ZXAgPyAiUFRSQUNFX1NJTkdMRVNURVAiIDogIlBUUkFDRV9DT05UIiwKKy0JCQkgICAg dGFyZ2V0X3BpZF90b19zdHIgKGxwLT5wdGlkKSk7CistICAgICAgbHAtPnN0b3BwZWQgPSAwOwor LSAgICAgIGdkYl9hc3NlcnQgKGxwLT5yZXN1bWVkKTsKKy0KKy0gICAgICAvKiBDYXRjaCB0aGUg cGVuZGluZyBTSUdTVE9QLiAgKi8KKy0gICAgICBzdGF0dXMgPSBscC0+c3RhdHVzOworLSAgICAg IGxwLT5zdGF0dXMgPSAwOworLQorLSAgICAgIHN0b3Bfd2FpdF9jYWxsYmFjayAobHAsIE5VTEwp OworLQorLSAgICAgIC8qIElmIHRoZSBscC0+c3RhdHVzIGZpZWxkIGlzbid0IGVtcHR5LCB3ZSBj YXVnaHQgYW5vdGhlciBzaWduYWwKKy0JIHdoaWxlIGZsdXNoaW5nIHRoZSBTSUdTVE9QLiAgUmV0 dXJuIGl0IGJhY2sgdG8gdGhlIGV2ZW50CistCSBxdWV1ZSBvZiB0aGUgTFdQLCBhcyB3ZSBhbHJl YWR5IGhhdmUgYW4gZXZlbnQgdG8gaGFuZGxlLiAgKi8KKy0gICAgICBpZiAobHAtPnN0YXR1cykK Ky0JeworLQkgIGlmIChkZWJ1Z19saW51eF9uYXQpCistCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQg KGdkYl9zdGRsb2csCistCQkJCSJMTFc6IGtpbGwgJXMsICVzXG4iLAorLQkJCQl0YXJnZXRfcGlk X3RvX3N0ciAobHAtPnB0aWQpLAorLQkJCQlzdGF0dXNfdG9fc3RyIChscC0+c3RhdHVzKSk7Cist CSAga2lsbF9sd3AgKEdFVF9MV1AgKGxwLT5wdGlkKSwgV1NUT1BTSUcgKGxwLT5zdGF0dXMpKTsK Ky0JfQorLQorLSAgICAgIGxwLT5zdGF0dXMgPSBzdGF0dXM7CistICAgIH0KKy0KKyAgIGlmICgh dGFyZ2V0X2Nhbl9hc3luY19wICgpKQorICAgICB7CisgICAgICAgLyogQ2F1c2VzIFNJR0lOVCB0 byBiZSBwYXNzZWQgb24gdG8gdGhlIGF0dGFjaGVkIHByb2Nlc3MuICAqLworSW5kZXg6IGdkYi03 LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRocmVhZHMuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysr IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRocmVhZHMuYwkyMDEw LTA5LTI1IDE1OjMyOjMyLjAwMDAwMDAwMCArMDIwMAorQEAgLTAsMCArMSw0NDcgQEAKKysvKiBU aGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENv cHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjZGVmaW5lIF9HTlVfU09VUkNF CisrI2luY2x1ZGUgPHB0aHJlYWQuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8 bGltaXRzLmg+CisrI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNp bmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrI2luY2x1ZGUgPHN5cy90 eXBlcy5oPgorKyNpbmNsdWRlIDxzaWduYWwuaD4KKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2lu Y2x1ZGUgPGFzbS91bmlzdGQuaD4KKysKKysjZGVmaW5lIGdldHRpZCgpIHN5c2NhbGwgKF9fTlJf Z2V0dGlkKQorKyNkZWZpbmUgdGdraWxsKHRnaWQsIHRpZCwgc2lnKSBzeXNjYWxsIChfX05SX3Rn a2lsbCwgdGdpZCwgdGlkLCBzaWcpCisrCisrLyogVGVybWluYXRlIGFsd2F5cyBpbiB0aGUgbWFp biB0YXNrLCBpdCBjYW4gbG9jayB1cCB3aXRoIFNJR1NUT1BwZWQgR0RCCisrICAgb3RoZXJ3aXNl LiAgKi8KKysjZGVmaW5lIFRJTUVPVVQgKGdldHRpZCAoKSA9PSBnZXRwaWQoKSA/IDEwIDogMTUp CisrCisrc3RhdGljIHBpZF90IHRocmVhZDFfdGlkOworK3N0YXRpYyBwdGhyZWFkX2NvbmRfdCB0 aHJlYWQxX3RpZF9jb25kID0gUFRIUkVBRF9DT05EX0lOSVRJQUxJWkVSOworK3N0YXRpYyBwdGhy ZWFkX211dGV4X3QgdGhyZWFkMV90aWRfbXV0ZXggPSBQVEhSRUFEX0VSUk9SQ0hFQ0tfTVVURVhf SU5JVElBTElaRVJfTlA7Cisrc3RhdGljIGludCB0aHJlYWQxX3NpZ3VzcjFfaGl0OworK3N0YXRp YyBpbnQgdGhyZWFkMV9zaWd1c3IyX2hpdDsKKysKKytzdGF0aWMgcGlkX3QgdGhyZWFkMl90aWQ7 Cisrc3RhdGljIHB0aHJlYWRfY29uZF90IHRocmVhZDJfdGlkX2NvbmQgPSBQVEhSRUFEX0NPTkRf SU5JVElBTElaRVI7Cisrc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCB0aHJlYWQyX3RpZF9tdXRleCA9 IFBUSFJFQURfRVJST1JDSEVDS19NVVRFWF9JTklUSUFMSVpFUl9OUDsKKytzdGF0aWMgaW50IHRo cmVhZDJfc2lndXNyMV9oaXQ7Cisrc3RhdGljIGludCB0aHJlYWQyX3NpZ3VzcjJfaGl0OworKwor K3N0YXRpYyBwdGhyZWFkX211dGV4X3QgdGVybWluYXRlX211dGV4ID0gUFRIUkVBRF9FUlJPUkNI RUNLX01VVEVYX0lOSVRJQUxJWkVSX05QOworKworKy8qIERvIG5vdCB1c2UgYWxhcm0gYXMgaXQg d291bGQgY3JlYXRlIGEgcHRyYWNlIGV2ZW50IHdoaWNoIHdvdWxkIGhhbmcgdXAgdXMgaWYKKysg ICB3ZSBhcmUgYmVpbmcgdHJhY2VkIGJ5IEdEQiB3aGljaCB3ZSBzdG9wcGVkIG91cnNlbHZlcy4g ICovCisrCisrc3RhdGljIHZvaWQgdGltZWRfbXV0ZXhfbG9jayAocHRocmVhZF9tdXRleF90ICpt dXRleCkKKyt7CisrICBpbnQgaTsKKysgIHN0cnVjdCB0aW1lc3BlYyBzdGFydCwgbm93OworKwor KyAgaSA9IGNsb2NrX2dldHRpbWUgKENMT0NLX01PTk9UT05JQywgJnN0YXJ0KTsKKysgIGFzc2Vy dCAoaSA9PSAwKTsKKysKKysgIGRvCisrICAgIHsKKysgICAgICBpID0gcHRocmVhZF9tdXRleF90 cnlsb2NrIChtdXRleCk7CisrICAgICAgaWYgKGkgPT0gMCkKKysJcmV0dXJuOworKyAgICAgIGFz c2VydCAoaSA9PSBFQlVTWSk7CisrCisrICAgICAgaSA9IGNsb2NrX2dldHRpbWUgKENMT0NLX01P Tk9UT05JQywgJm5vdyk7CisrICAgICAgYXNzZXJ0IChpID09IDApOworKyAgICAgIGFzc2VydCAo bm93LnR2X3NlYyA+PSBzdGFydC50dl9zZWMpOworKyAgICB9CisrICB3aGlsZSAobm93LnR2X3Nl YyAtIHN0YXJ0LnR2X3NlYyA8IFRJTUVPVVQpOworKworKyAgZnByaW50ZiAoc3RkZXJyLCAiVGlt ZWQgb3V0IHdhaXRpbmcgZm9yIGludGVybmFsIGxvY2shXG4iKTsKKysgIGV4aXQgKEVYSVRfRkFJ TFVSRSk7CisrfQorKworK3N0YXRpYyB2b2lkCisraGFuZGxlciAoaW50IHNpZ25vLCBzaWdpbmZv X3QgKnNpZ2luZm8sIHZvaWQgKmV4Y2VwdGlvbikKKyt7CisrICBpbnQgKnZhcnA7CisrCisrICBh c3NlcnQgKHNpZ2luZm8tPnNpX3NpZ25vID09IHNpZ25vKTsKKysgIGFzc2VydCAoc2lnaW5mby0+ c2lfY29kZSA9PSBTSV9US0lMTCk7CisrICBhc3NlcnQgKHNpZ2luZm8tPnNpX3BpZCA9PSBnZXRw aWQgKCkpOworKworKyAgaWYgKGdldHRpZCAoKSA9PSB0aHJlYWQxX3RpZCkKKysgICAgeworKyAg ICAgIGlmIChzaWdubyA9PSBTSUdVU1IxKQorKwl2YXJwID0gJnRocmVhZDFfc2lndXNyMV9oaXQ7 CisrICAgICAgZWxzZSBpZiAoc2lnbm8gPT0gU0lHVVNSMikKKysJdmFycCA9ICZ0aHJlYWQxX3Np Z3VzcjJfaGl0OworKyAgICAgIGVsc2UKKysJYXNzZXJ0ICgwKTsKKysgICAgfQorKyAgZWxzZSBp ZiAoZ2V0dGlkICgpID09IHRocmVhZDJfdGlkKQorKyAgICB7CisrICAgICAgaWYgKHNpZ25vID09 IFNJR1VTUjEpCisrCXZhcnAgPSAmdGhyZWFkMl9zaWd1c3IxX2hpdDsKKysgICAgICBlbHNlIGlm IChzaWdubyA9PSBTSUdVU1IyKQorKwl2YXJwID0gJnRocmVhZDJfc2lndXNyMl9oaXQ7CisrICAg ICAgZWxzZQorKwlhc3NlcnQgKDApOworKyAgICB9CisrICBlbHNlCisrICAgIGFzc2VydCAoMCk7 CisrCisrICBpZiAoKnZhcnApCisrICAgIHsKKysgICAgICBmcHJpbnRmIChzdGRlcnIsICJTaWdu YWwgJWQgZm9yIFRJRCAlbHUgaGFzIGJlZW4gYWxyZWFkeSBoaXQhXG4iLCBzaWdubywKKysJICAg ICAgICh1bnNpZ25lZCBsb25nKSBnZXR0aWQgKCkpOworKyAgICAgIGV4aXQgKEVYSVRfRkFJTFVS RSk7CisrICAgIH0KKysgICp2YXJwID0gMTsKKyt9CisrCisrc3RhdGljIHZvaWQgKgorK3RocmVh ZDFfZnVuYyAodm9pZCAqdW51c2VkKQorK3sKKysgIGludCBpOworKworKyAgdGltZWRfbXV0ZXhf bG9jayAoJnRocmVhZDFfdGlkX211dGV4KTsKKysKKysgIC8qIFRIUkVBRDFfVElEX01VVEVYIG11 c3QgYmUgYWxyZWFkeSBsb2NrZWQgdG8gYXZvaWQgcmFjZS4gICovCisrICB0aHJlYWQxX3RpZCA9 IGdldHRpZCAoKTsKKysKKysgIGkgPSBwdGhyZWFkX2NvbmRfc2lnbmFsICgmdGhyZWFkMV90aWRf Y29uZCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sg KCZ0aHJlYWQxX3RpZF9tdXRleCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICAvKiBCZSBz dXJlIHRoZSAidCAodHJhY2luZyBzdG9wKSIgdGVzdCBjYW4gcHJvY2VlZCBmb3IgYm90aCB0aHJl YWRzLiAgKi8KKysgIHRpbWVkX211dGV4X2xvY2sgKCZ0ZXJtaW5hdGVfbXV0ZXgpOworKyAgaSA9 IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGVybWluYXRlX211dGV4KTsKKysgIGFzc2VydCAoaSA9 PSAwKTsKKysKKysgIGlmICghIHRocmVhZDFfc2lndXNyMV9oaXQpCisrICAgIHsKKysgICAgICBm cHJpbnRmIChzdGRlcnIsICJUaHJlYWQgMSBzaWduYWwgU0lHVVNSMSBub3QgaGl0IVxuIik7Cisr ICAgICAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKKysgICAgfQorKyAgaWYgKCEgdGhyZWFkMV9zaWd1 c3IyX2hpdCkKKysgICAgeworKyAgICAgIGZwcmludGYgKHN0ZGVyciwgIlRocmVhZCAxIHNpZ25h bCBTSUdVU1IyIG5vdCBoaXQhXG4iKTsKKysgICAgICBleGl0IChFWElUX0ZBSUxVUkUpOworKyAg ICB9CisrCisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrc3RhdGljIHZvaWQgKgorK3RocmVhZDJf ZnVuYyAodm9pZCAqdW51c2VkKQorK3sKKysgIGludCBpOworKworKyAgdGltZWRfbXV0ZXhfbG9j ayAoJnRocmVhZDJfdGlkX211dGV4KTsKKysKKysgIC8qIFRIUkVBRDJfVElEX01VVEVYIG11c3Qg YmUgYWxyZWFkeSBsb2NrZWQgdG8gYXZvaWQgcmFjZS4gICovCisrICB0aHJlYWQyX3RpZCA9IGdl dHRpZCAoKTsKKysKKysgIGkgPSBwdGhyZWFkX2NvbmRfc2lnbmFsICgmdGhyZWFkMl90aWRfY29u ZCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sgKCZ0 aHJlYWQyX3RpZF9tdXRleCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICAvKiBCZSBzdXJl IHRoZSAidCAodHJhY2luZyBzdG9wKSIgdGVzdCBjYW4gcHJvY2VlZCBmb3IgYm90aCB0aHJlYWRz LiAgKi8KKysgIHRpbWVkX211dGV4X2xvY2sgKCZ0ZXJtaW5hdGVfbXV0ZXgpOworKyAgaSA9IHB0 aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGVybWluYXRlX211dGV4KTsKKysgIGFzc2VydCAoaSA9PSAw KTsKKysKKysgIGlmICghIHRocmVhZDJfc2lndXNyMV9oaXQpCisrICAgIHsKKysgICAgICBmcHJp bnRmIChzdGRlcnIsICJUaHJlYWQgMiBzaWduYWwgU0lHVVNSMSBub3QgaGl0IVxuIik7CisrICAg ICAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKKysgICAgfQorKyAgaWYgKCEgdGhyZWFkMl9zaWd1c3Iy X2hpdCkKKysgICAgeworKyAgICAgIGZwcmludGYgKHN0ZGVyciwgIlRocmVhZCAyIHNpZ25hbCBT SUdVU1IyIG5vdCBoaXQhXG4iKTsKKysgICAgICBleGl0IChFWElUX0ZBSUxVUkUpOworKyAgICB9 CisrCisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKgorK3Byb2Nf c3RyaW5nIChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqbGluZSkKKyt7CisrICBG SUxFICpmOworKyAgc3RhdGljIGNoYXIgYnVmW0xJTkVfTUFYXTsKKysgIHNpemVfdCBsaW5lX2xl biA9IHN0cmxlbiAobGluZSk7CisrCisrICBmID0gZm9wZW4gKGZpbGVuYW1lLCAiciIpOworKyAg aWYgKGYgPT0gTlVMTCkKKysgICAgeworKyAgICAgIGZwcmludGYgKHN0ZGVyciwgImZvcGVuIChc IiVzXCIpIGZvciBcIiVzXCI6ICVzXG4iLCBmaWxlbmFtZSwgbGluZSwKKysJICAgICAgIHN0cmVy cm9yIChlcnJubykpOworKyAgICAgIGV4aXQgKEVYSVRfRkFJTFVSRSk7CisrICAgIH0KKysgIHdo aWxlIChlcnJubyA9IDAsIGZnZXRzIChidWYsIHNpemVvZiAoYnVmKSwgZikpCisrICAgIHsKKysg ICAgICBjaGFyICpzOworKworKyAgICAgIHMgPSBzdHJjaHIgKGJ1ZiwgJ1xuJyk7CisrICAgICAg YXNzZXJ0IChzICE9IE5VTEwpOworKyAgICAgICpzID0gMDsKKysKKysgICAgICBpZiAoc3RybmNt cCAoYnVmLCBsaW5lLCBsaW5lX2xlbikgIT0gMCkKKysJY29udGludWU7CisrCisrICAgICAgaWYg KGZjbG9zZSAoZikpCisrCXsKKysJICBmcHJpbnRmIChzdGRlcnIsICJmY2xvc2UgKFwiJXNcIikg Zm9yIFwiJXNcIjogJXNcbiIsIGZpbGVuYW1lLCBsaW5lLAorKwkJICAgc3RyZXJyb3IgKGVycm5v KSk7CisrCSAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKKysJfQorKworKyAgICAgIHJldHVybiAmYnVm W2xpbmVfbGVuXTsKKysgICAgfQorKyAgaWYgKGVycm5vICE9IDApCisrICAgIHsKKysgICAgICBm cHJpbnRmIChzdGRlcnIsICJmZ2V0cyAoXCIlc1wiOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVycm9y IChlcnJubykpOworKyAgICAgIGV4aXQgKEVYSVRfRkFJTFVSRSk7CisrICAgIH0KKysgIGZwcmlu dGYgKHN0ZGVyciwgIlwiJXNcIjogTm8gbGluZSBcIiVzXCIgZm91bmQuXG4iLCBmaWxlbmFtZSwg bGluZSk7CisrICBleGl0IChFWElUX0ZBSUxVUkUpOworK30KKysKKytzdGF0aWMgdW5zaWduZWQg bG9uZworK3Byb2NfdWxvbmcgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpsaW5l KQorK3sKKysgIGNvbnN0IGNoYXIgKnMgPSBwcm9jX3N0cmluZyAoZmlsZW5hbWUsIGxpbmUpOwor KyAgbG9uZyByZXR2YWw7CisrICBjaGFyICplbmQ7CisrCisrICBlcnJubyA9IDA7CisrICByZXR2 YWwgPSBzdHJ0b2wgKHMsICZlbmQsIDEwKTsKKysgIGlmIChyZXR2YWwgPCAwIHx8IHJldHZhbCA+ PSBMT05HX01BWCB8fCAoZW5kICYmICplbmQpKQorKyAgICB7CisrICAgICAgZnByaW50ZiAoc3Rk ZXJyLCAiXCIlc1wiOlwiJXNcIjogJWxkLCAlc1xuIiwgZmlsZW5hbWUsIGxpbmUsIHJldHZhbCwK KysJICAgICAgIHN0cmVycm9yIChlcnJubykpOworKyAgICAgIGV4aXQgKEVYSVRfRkFJTFVSRSk7 CisrICAgIH0KKysgIHJldHVybiByZXR2YWw7CisrfQorKworK3N0YXRpYyB2b2lkCisrc3RhdGVf d2FpdCAocGlkX3QgcHJvY2VzcywgY29uc3QgY2hhciAqd2FudGVkKQorK3sKKysgIGNoYXIgKmZp bGVuYW1lOworKyAgaW50IGk7CisrICBzdHJ1Y3QgdGltZXNwZWMgc3RhcnQsIG5vdzsKKysgIGNv bnN0IGNoYXIgKnN0YXRlOworKworKyAgaSA9IGFzcHJpbnRmICgmZmlsZW5hbWUsICIvcHJvYy8l bHUvc3RhdHVzIiwgKHVuc2lnbmVkIGxvbmcpIHByb2Nlc3MpOworKyAgYXNzZXJ0IChpID4gMCk7 CisrCisrICBpID0gY2xvY2tfZ2V0dGltZSAoQ0xPQ0tfTU9OT1RPTklDLCAmc3RhcnQpOworKyAg YXNzZXJ0IChpID09IDApOworKworKyAgZG8KKysgICAgeworKyAgICAgIHN0YXRlID0gcHJvY19z dHJpbmcgKGZpbGVuYW1lLCAiU3RhdGU6XHQiKTsKKysKKysgICAgICAvKiB0b3J2YWxkcy9saW51 eC0yLjYuZ2l0IDQ2NDc2M2NmMWM2ZGY2MzJkY2NjOGYyZjRjN2U1MDE2MzE1NGEyYzAKKysJIGhh cyBjaGFuZ2VkICJUICh0cmFjaW5nIHN0b3ApIiB0byAidCAodHJhY2luZyBzdG9wKSIuICBNYWtl IHRoZSBHREIKKysJIHRlc3RjYXNlIGJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCBvbGRlciBMaW51 eCBrZXJuZWxzLiAgKi8KKysgICAgICBpZiAoc3RyY21wIChzdGF0ZSwgIlQgKHRyYWNpbmcgc3Rv cCkiKSA9PSAwKQorKwlzdGF0ZSA9ICJ0ICh0cmFjaW5nIHN0b3ApIjsKKysKKysgICAgICBpZiAo c3RyY21wIChzdGF0ZSwgd2FudGVkKSA9PSAwKQorKwl7CisrCSAgZnJlZSAoZmlsZW5hbWUpOwor KwkgIHJldHVybjsKKysJfQorKworKyAgICAgIGlmIChzY2hlZF95aWVsZCAoKSkKKysJeworKwkg IHBlcnJvciAoInNjaGVkX3lpZWxkKCkiKTsKKysJICBleGl0IChFWElUX0ZBSUxVUkUpOworKwl9 CisrCisrICAgICAgaSA9IGNsb2NrX2dldHRpbWUgKENMT0NLX01PTk9UT05JQywgJm5vdyk7Cisr ICAgICAgYXNzZXJ0IChpID09IDApOworKyAgICAgIGFzc2VydCAobm93LnR2X3NlYyA+PSBzdGFy dC50dl9zZWMpOworKyAgICB9CisrICB3aGlsZSAobm93LnR2X3NlYyAtIHN0YXJ0LnR2X3NlYyA8 IFRJTUVPVVQpOworKworKyAgZnByaW50ZiAoc3RkZXJyLCAiVGltZWQgb3V0IHdhaXRpbmcgZm9y IFBJRCAlbHUgXCIlc1wiIChub3cgaXQgaXMgXCIlc1wiKSFcbiIsCisrCSAgICh1bnNpZ25lZCBs b25nKSBwcm9jZXNzLCB3YW50ZWQsIHN0YXRlKTsKKysgIGV4aXQgKEVYSVRfRkFJTFVSRSk7Cisr fQorKworK3N0YXRpYyB2b2xhdGlsZSBwaWRfdCB0cmFjZXIgPSAwOworK3N0YXRpYyBwdGhyZWFk X3QgdGhyZWFkMSwgdGhyZWFkMjsKKysKKytzdGF0aWMgdm9pZAorK2NsZWFudXAgKHZvaWQpCisr eworKyAgcHJpbnRmICgiUmVzdW1pbmcgR0RCIFBJRCAlbHUuXG4iLCAodW5zaWduZWQgbG9uZykg dHJhY2VyKTsKKysKKysgIGlmICh0cmFjZXIpCisrICAgIHsKKysgICAgICBpbnQgaTsKKysgICAg ICBpbnQgdHJhY2VyX3NhdmUgPSB0cmFjZXI7CisrCisrICAgICAgdHJhY2VyID0gMDsKKysKKysg ICAgICBpID0ga2lsbCAodHJhY2VyX3NhdmUsIFNJR0NPTlQpOworKyAgICAgIGFzc2VydCAoaSA9 PSAwKTsKKysgICAgfQorK30KKysKKytpbnQKKyttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CisreworKyAgaW50IGk7CisrICBpbnQgc3RhbmRhbG9uZSA9IDA7CisrICBzdHJ1Y3Qgc2lnYWN0 aW9uIGFjdDsKKysKKysgIGlmIChhcmdjID09IDIgJiYgc3RyY21wIChhcmd2WzFdLCAiLXMiKSA9 PSAwKQorKyAgICBzdGFuZGFsb25lID0gMTsKKysgIGVsc2UKKysgICAgYXNzZXJ0IChhcmdjID09 IDEpOworKworKyAgc2V0YnVmIChzdGRvdXQsIE5VTEwpOworKworKyAgdGltZWRfbXV0ZXhfbG9j ayAoJnRocmVhZDFfdGlkX211dGV4KTsKKysgIHRpbWVkX211dGV4X2xvY2sgKCZ0aHJlYWQyX3Rp ZF9tdXRleCk7CisrCisrICB0aW1lZF9tdXRleF9sb2NrICgmdGVybWluYXRlX211dGV4KTsKKysK KysgIGVycm5vID0gMDsKKysgIG1lbXNldCAoJmFjdCwgMCwgc2l6ZW9mIChhY3QpKTsKKysgIGFj dC5zYV9zaWdhY3Rpb24gPSBoYW5kbGVyOworKyAgYWN0LnNhX2ZsYWdzID0gU0FfUkVTVEFSVCB8 IFNBX1NJR0lORk87CisrICBpID0gc2lnZW1wdHlzZXQgKCZhY3Quc2FfbWFzayk7CisrICBhc3Nl cnRfcGVycm9yIChlcnJubyk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrICBpID0gc2lnYWN0aW9u IChTSUdVU1IxLCAmYWN0LCBOVUxMKTsKKysgIGFzc2VydF9wZXJyb3IgKGVycm5vKTsKKysgIGFz c2VydCAoaSA9PSAwKTsKKysgIGkgPSBzaWdhY3Rpb24gKFNJR1VTUjIsICZhY3QsIE5VTEwpOwor KyAgYXNzZXJ0X3BlcnJvciAoZXJybm8pOworKyAgYXNzZXJ0IChpID09IDApOworKworKyAgaSA9 IHB0aHJlYWRfY3JlYXRlICgmdGhyZWFkMSwgTlVMTCwgdGhyZWFkMV9mdW5jLCBOVUxMKTsKKysg IGFzc2VydCAoaSA9PSAwKTsKKysKKysgIGkgPSBwdGhyZWFkX2NyZWF0ZSAoJnRocmVhZDIsIE5V TEwsIHRocmVhZDJfZnVuYywgTlVMTCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICBpZiAo IXN0YW5kYWxvbmUpCisrICAgIHsKKysgICAgICB0cmFjZXIgPSBwcm9jX3Vsb25nICgiL3Byb2Mv c2VsZi9zdGF0dXMiLCAiVHJhY2VyUGlkOlx0Iik7CisrICAgICAgaWYgKHRyYWNlciA9PSAwKQor Kwl7CisrCSAgZnByaW50ZiAoc3RkZXJyLCAiVGhlIHRlc3RjYXNlIG11c3QgYmUgcnVuIGJ5IEdE QiFcbiIpOworKwkgIGV4aXQgKEVYSVRfRkFJTFVSRSk7CisrCX0KKysgICAgICBpZiAodHJhY2Vy ICE9IGdldHBwaWQgKCkpCisrCXsKKysJICBmcHJpbnRmIChzdGRlcnIsICJUaGUgdGVzdGNhc2Ug cGFyZW50IG11c3QgYmUgb3VyIEdEQiB0cmFjZXIhXG4iKTsKKysJICBleGl0IChFWElUX0ZBSUxV UkUpOworKwl9CisrICAgIH0KKysKKysgIC8qIFNJR0NPTlQgb3VyIGRlYnVnZ2VyIGluIHRoZSBj YXNlIG9mIG91ciBjcmFzaCBhcyB3ZSB3b3VsZCBkZWFkbG9jaworKyAgICAgb3RoZXJ3aXNlLiAg Ki8KKysKKysgIGF0ZXhpdCAoY2xlYW51cCk7CisrCisrICBwcmludGYgKCJTdG9wcGluZyBHREIg UElEICVsdS5cbiIsICh1bnNpZ25lZCBsb25nKSB0cmFjZXIpOworKworKyAgaWYgKHRyYWNlcikK KysgICAgeworKyAgICAgIGkgPSBraWxsICh0cmFjZXIsIFNJR1NUT1ApOworKyAgICAgIGFzc2Vy dCAoaSA9PSAwKTsKKysgICAgICBzdGF0ZV93YWl0ICh0cmFjZXIsICJUIChzdG9wcGVkKSIpOwor KyAgICB9CisrCisrICAvKiBUaHJlYWRzIGFyZSBub3cgd2FpdGluZyBhdCB0aW1lZF9tdXRleF9s b2NrICh0aHJlYWQxX3RpZF9tdXRleCkgYW5kIHNvCisrICAgICB0aGV5IGNvdWxkIG5vdCB0cmln Z2VyIHRoZSBzaWduYWxzIGJlZm9yZSBHREIgZ2V0cyB1bnN0b3BwZWQgbGF0ZXIuCisrICAgICBU aHJlYWRzIGdldCByZXN1bWVkIGF0IHB0aHJlYWRfY29uZF93YWl0IGJlbG93LiAgVXNlIGB3aGls ZScgbG9vcHMgZm9yCisrICAgICBwcm90ZWN0aW9uIGFnYWluc3Qgc3B1cmlvdXMgcHRocmVhZF9j b25kX3dhaXQgd2FrZXVwcy4gICovCisrCisrICBwcmludGYgKCJXYWl0aW5nIHRpbGwgdGhlIHRo cmVhZHMgaW5pdGlhbGl6ZSB0aGVpciBUSURzLlxuIik7CisrCisrICB3aGlsZSAodGhyZWFkMV90 aWQgPT0gMCkKKysgICAgeworKyAgICAgIGkgPSBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZDFf dGlkX2NvbmQsICZ0aHJlYWQxX3RpZF9tdXRleCk7CisrICAgICAgYXNzZXJ0IChpID09IDApOwor KyAgICB9CisrCisrICB3aGlsZSAodGhyZWFkMl90aWQgPT0gMCkKKysgICAgeworKyAgICAgIGkg PSBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZDJfdGlkX2NvbmQsICZ0aHJlYWQyX3RpZF9tdXRl eCk7CisrICAgICAgYXNzZXJ0IChpID09IDApOworKyAgICB9CisrCisrICBwcmludGYgKCJUaHJl YWQgMSBUSUQgPSAlbHUsIHRocmVhZCAyIFRJRCA9ICVsdSwgUElEID0gJWx1LlxuIiwKKysJICAo dW5zaWduZWQgbG9uZykgdGhyZWFkMV90aWQsICh1bnNpZ25lZCBsb25nKSB0aHJlYWQyX3RpZCwK KysJICAodW5zaWduZWQgbG9uZykgZ2V0cGlkICgpKTsKKysKKysgIGVycm5vID0gMDsKKysgIGkg PSB0Z2tpbGwgKGdldHBpZCAoKSwgdGhyZWFkMV90aWQsIFNJR1VTUjEpOworKyAgYXNzZXJ0X3Bl cnJvciAoZXJybm8pOworKyAgYXNzZXJ0IChpID09IDApOworKyAgaSA9IHRna2lsbCAoZ2V0cGlk ICgpLCB0aHJlYWQxX3RpZCwgU0lHVVNSMik7CisrICBhc3NlcnRfcGVycm9yIChlcnJubyk7Cisr ICBhc3NlcnQgKGkgPT0gMCk7CisrICBpID0gdGdraWxsIChnZXRwaWQgKCksIHRocmVhZDJfdGlk LCBTSUdVU1IxKTsKKysgIGFzc2VydF9wZXJyb3IgKGVycm5vKTsKKysgIGFzc2VydCAoaSA9PSAw KTsKKysgIGkgPSB0Z2tpbGwgKGdldHBpZCAoKSwgdGhyZWFkMl90aWQsIFNJR1VTUjIpOworKyAg YXNzZXJ0X3BlcnJvciAoZXJybm8pOworKyAgYXNzZXJ0IChpID09IDApOworKworKyAgcHJpbnRm ICgiV2FpdGluZyB0aWxsIHRoZSB0aHJlYWRzIGdldCB0cmFwcGVkIGJ5IHRoZSBzaWduYWxzLlxu Iik7CisrCisrICBpZiAodHJhY2VyKQorKyAgICB7CisrICAgICAgLyogczM5MHgtdW5rbm93bi1s aW51eC1nbnUgd2lsbCBmYWlsIHdpdGggIlIgKHJ1bm5pbmcpIi4gICovCisrCisrICAgICAgc3Rh dGVfd2FpdCAodGhyZWFkMV90aWQsICJ0ICh0cmFjaW5nIHN0b3ApIik7CisrCisrICAgICAgc3Rh dGVfd2FpdCAodGhyZWFkMl90aWQsICJ0ICh0cmFjaW5nIHN0b3ApIik7CisrICAgIH0KKysKKysg IGNsZWFudXAgKCk7CisrCisrICBwcmludGYgKCJKb2luaW5nIHRoZSB0aHJlYWRzLlxuIik7Cisr CisrICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sgKCZ0ZXJtaW5hdGVfbXV0ZXgpOworKyAgYXNz ZXJ0IChpID09IDApOworKworKyAgaSA9IHB0aHJlYWRfam9pbiAodGhyZWFkMSwgTlVMTCk7Cisr ICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICBpID0gcHRocmVhZF9qb2luICh0aHJlYWQyLCBOVUxM KTsKKysgIGFzc2VydCAoaSA9PSAwKTsKKysKKysgIHByaW50ZiAoIkV4aXRpbmcuXG4iKTsJLyog YnJlYWstYXQtZXhpdCAqLworKworKyAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKKyt9CitJbmRleDog Z2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5leHAKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKKysrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnaW5mby10aHJlYWRz LmV4cAkyMDEwLTA5LTI1IDE1OjMyOjMyLjAwMDAwMDAwMCArMDIwMAorQEAgLTAsMCArMSw5NCBA QAorKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisr IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIwor KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK3NldCB0ZXN0ZmlsZSAic2lnaW5mby10 aHJlYWRzIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytzZXQgYmluZmlsZSAke29iamRp cn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisraWYge1tnZGJfY29tcGlsZV9wdGhyZWFkcyAiJHtz cmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAke2JpbmZpbGV9IGV4ZWN1dGFibGUgW2xpc3Qg ZGVidWcgYWRkaXRpb25hbF9mbGFncz0tbHJ0XV0gIT0gIiIgfSB7CisrICAgIHJldHVybiAtMQor K30KKysKKytjbGVhbl9yZXN0YXJ0ICR0ZXN0ZmlsZQorKworK2lmICFbcnVudG9fbWFpbl0gewor KyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBgbm9zdG9wIG5vcHJpbnQgcGFzcycgY291bGQgaW4g c29tZSBjYXNlcyByZXBvcnQgZmFsc2UgUEFTUyBkdWUgdG8gdGhlCisrIyAocHJlZW1wdCAnaGFu ZGxlJykgY29kZSBwYXRoLgorKworK2dkYl90ZXN0ICJoYW5kbGUgU0lHVVNSMSBzdG9wIHByaW50 IHBhc3MiICJTaWduYWxcWyBcdFxdK1N0b3BcWyBcdFxdK1ByaW50XFsgXHRcXStQYXNzIHRvIHBy b2dyYW1cWyBcdFxdK0Rlc2NyaXB0aW9uXHJcblNJR1VTUjFcWyBcdFxdK1llc1xbIFx0XF0rWWVz XFsgXHRcXStZZXNcWyBcdFxdLioiCisrZ2RiX3Rlc3QgImhhbmRsZSBTSUdVU1IyIHN0b3AgcHJp bnQgcGFzcyIgIlNpZ25hbFxbIFx0XF0rU3RvcFxbIFx0XF0rUHJpbnRcWyBcdFxdK1Bhc3MgdG8g cHJvZ3JhbVxbIFx0XF0rRGVzY3JpcHRpb25cclxuU0lHVVNSMlxbIFx0XF0rWWVzXFsgXHRcXStZ ZXNcWyBcdFxdK1llc1xbIFx0XF0uKiIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAiYnJlYWstYXQtZXhpdCJdCisrCisrc2V0IHRlc3QgImdldCBwaWQiCisrZ2RiX3Rl c3RfbXVsdGlwbGUgInAgZ2V0cGlkICgpIiAkdGVzdCB7CisrICAgIC1yZSAiID0gKFxbMC05XF0r KVxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXNldCBwaWQgJGV4cGVjdF9vdXQoMSxzdHJpbmcpCisr CXBhc3MgJHRlc3QKKysgICAgfQorK30KKysKKytmb3Ige3NldCBzaWdjb3VudCAwfSB7JHNpZ2Nv dW50IDwgNH0ge2luY3Igc2lnY291bnR9IHsKKysgICAgc2V0IHRlc3QgImNhdGNoIHNpZ25hbCAk c2lnY291bnQiCisrICAgIHNldCBzaWd1c3IgIiIKKysgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgImNv bnRpbnVlIiAkdGVzdCB7CisrCS1yZSAiUHJvZ3JhbSByZWNlaXZlZCBzaWduYWwgU0lHVVNSKFxb MTJcXSksIFVzZXIgZGVmaW5lZCBzaWduYWwgXFsxMlxdXFwuXHJcbi4qXHJcbiRnZGJfcHJvbXB0 ICQiIHsKKysJICAgIHNldCBzaWd1c3IgJGV4cGVjdF9vdXQoMSxzdHJpbmcpCisrCSAgICBwYXNz ICR0ZXN0CisrCX0KKysgICAgfQorKyAgICBpZiB7JHNpZ3VzciA9PSAiIn0geworKwlyZXR1cm4g LTEKKysgICAgfQorKworKyAgICBzZXQgdGVzdCAic2lnbmFsICRzaWdjb3VudCBzaV9zaWdubyIK KysgICAgaWYgeyRzaWd1c3IgPT0gMX0geworKwlzZXQgc2lnbm8gMTAKKysgICAgfSBlbHNlIHsK KysJc2V0IHNpZ25vIDEyCisrICAgIH0KKysgICAgZ2RiX3Rlc3RfbXVsdGlwbGUge3AgJF9zaWdp bmZvLnNpX3NpZ25vfSAkdGVzdCB7CisrCS1yZSAiID0gJHNpZ25vXHJcbiRnZGJfcHJvbXB0ICQi IHsKKysJICAgIHBhc3MgJHRlc3QKKysJfQorKwktcmUgIkF0dGVtcHQgdG8gZXh0cmFjdCBhIGNv bXBvbmVudCBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGEgc3RydWN0dXJlXFwuXHJcbiRnZGJfcHJv bXB0ICQiIHsKKysJICAgIHVuc3VwcG9ydGVkICR0ZXN0CisrCX0KKysgICAgfQorKworKyAgICBz ZXQgdGVzdCAic2lnbmFsICRzaWdjb3VudCBzaV9jb2RlIGlzIFNJX1RLSUxMIgorKyAgICBnZGJf dGVzdF9tdWx0aXBsZSB7cCAkX3NpZ2luZm8uc2lfY29kZX0gJHRlc3QgeworKwktcmUgIiA9IC02 XHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgIHBhc3MgJHRlc3QKKysJfQorKwktcmUgIkF0dGVt cHQgdG8gZXh0cmFjdCBhIGNvbXBvbmVudCBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGEgc3RydWN0 dXJlXFwuXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgIHVuc3VwcG9ydGVkICR0ZXN0CisrCX0K KysgICAgfQorKworKyAgICBzZXQgdGVzdCAic2lnbmFsICRzaWdjb3VudCBzaV9waWQiCisrICAg IGdkYl90ZXN0X211bHRpcGxlIHtwICRfc2lnaW5mby5fc2lmaWVsZHMuX2tpbGwuc2lfcGlkfSAk dGVzdCB7CisrCS1yZSAiID0gJHBpZFxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICBwYXNzICR0 ZXN0CisrCX0KKysJLXJlICJBdHRlbXB0IHRvIGV4dHJhY3QgYSBjb21wb25lbnQgb2YgYSB2YWx1 ZSB0aGF0IGlzIG5vdCBhIHN0cnVjdHVyZVxcLlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICB1 bnN1cHBvcnRlZCAkdGVzdAorKwl9CisrICAgIH0KKyt9CisrCisrZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgYnJlYWstYXQtZXhpdCAiLipicmVhay1hdC1leGl0LioiCitJbmRleDogZ2RiLTcu Mi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysg Z2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5jCTIwMTAt MDktMjUgMTU6MzI6MzIuMDAwMDAwMDAwICswMjAwCitAQCAtMCwwICsxLDU0IEBACisrLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5 cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPHB0aHJlYWQuaD4K KysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrI2luY2x1ZGUgPHNpZ25hbC5oPgorKworKyNpbmNsdWRl IDxhc20vdW5pc3RkLmg+CisrI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNkZWZpbmUgdGdraWxsKHRn aWQsIHRpZCwgc2lnKSBzeXNjYWxsIChfX05SX3Rna2lsbCwgKHRnaWQpLCAodGlkKSwgKHNpZykp CisrI2RlZmluZSBnZXR0aWQoKSBzeXNjYWxsIChfX05SX2dldHRpZCkKKysKKytzdGF0aWMgdm9s YXRpbGUgaW50IHZhcjsKKysKKytzdGF0aWMgdm9pZAorK2hhbmRsZXIgKGludCBzaWdubykJLyog c3RlcC0wICovCisrewkJCS8qIHN0ZXAtMCAqLworKyAgdmFyKys7CQkvKiBzdGVwLTEgKi8KKysg IHRna2lsbCAoZ2V0cGlkICgpLCBnZXR0aWQgKCksIFNJR1VTUjEpOwkvKiBzdGVwLTIgKi8KKyt9 CisrCisrc3RhdGljIHZvaWQgKgorK3N0YXJ0ICh2b2lkICphcmcpCisreworKyAgc2lnbmFsIChT SUdVU1IxLCBoYW5kbGVyKTsKKysgIHRna2lsbCAoZ2V0cGlkICgpLCBnZXR0aWQgKCksIFNJR1VT UjEpOworKyAgYXNzZXJ0ICgwKTsKKysKKysgIHJldHVybiBOVUxMOworK30KKysKKytpbnQKKytt YWluICh2b2lkKQorK3sKKysgIHB0aHJlYWRfdCB0aHJlYWQ7CisrCisrICBwdGhyZWFkX2NyZWF0 ZSAoJnRocmVhZCwgTlVMTCwgc3RhcnQsIE5VTEwpOworKyAgc3RhcnQgKE5VTEwpOwkvKiBtYWlu LXN0YXJ0ICovCisrICByZXR1cm4gMDsKKyt9CitJbmRleDogZ2RiLTcuMi9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5leHAKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251 bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4yL2dkYi90 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmV4cAkyMDEwLTA5LTI1IDE1OjMy OjMyLjAwMDAwMDAwMCArMDIwMAorQEAgLTAsMCArMSw3NCBAQAorKyMgQ29weXJpZ2h0IDIwMTAg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorKworK3NldCB0ZXN0ZmlsZSBzaWdzdGVwLXRocmVhZHMKKytzZXQgc3JjZmlsZSAk e3Rlc3RmaWxlfS5jCisrc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KKytzZXQgYmluZmlsZSAk e29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0KKysKKytpZiB7IFtnZGJfY29tcGlsZV9w dGhyZWFkcyAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhl Y3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhw CisrICAgIHJldHVybiAtMQorK30KKysKKytjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCisrCisr aWYgIVtydW50b19tYWluXSB7CisrICAgIHJldHVybiAtMTsKKyt9CisrCisrIyBgbm9wcmludCcg d291bGQgbm90IHRlc3QgdGhlIGZ1bGwgbG9naWMgb2YgR0RCLgorK2dkYl90ZXN0ICJoYW5kbGUg U0lHVVNSMSBub3N0b3AgcHJpbnQgcGFzcyIgIlxyXG5TSUdVU1IxXFsgXHRcXStOb1xbIFx0XF0r WWVzXFsgXHRcXStZZXNcWyBcdFxdLioiCisrCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgc2No ZWR1bGVyLWxvY2tpbmcgb2ZmIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJzdGVwLTEiXQorK2dkYl90ZXN0X25vX291dHB1dCB7c2V0ICRzdGVwMT0kYnBudW19Cisr Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInN0ZXAtMSIgIi4qIHN0ZXAtMSAuKiIKKytnZGJf dGVzdF9ub19vdXRwdXQge2Rpc2FibGUgJHN0ZXAxfQorKworKyMgMSBhcyB3ZSBhcmUgbm93IHN0 b3BwZWQgYXQgdGhlIGBzdGVwLTEnIGxhYmVsLgorK3NldCBzdGVwX2F0IDEKKytmb3Ige3NldCBp IDB9IHskaSA8IDEwMH0ge2luY3IgaX0geworKyAgICBzZXQgdGVzdCAic3RlcCAkaSIKKysgICAg IyBQcmVzdW1lIHRoaXMgc3RlcCBmYWlsZWQgLSBhcyBpbiB0aGUgY2FzZSBvZiBhIHRpbWVvdXQu CisrICAgIHNldCBmYWlsZWQgMQorKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAic3RlcCIgJHRlc3Qg eworKwktcmUgIlxyXG5Qcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdVU1IxLCBVc2VyIGRlZmlu ZWQgc2lnbmFsIDEuXHJcbiIgeworKwkgICAgZXhwX2NvbnRpbnVlIC1jb250aW51ZV90aW1lcgor Kwl9CisrCS1yZSAic3RlcC0oXFswMTJcXSkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICBz ZXQgbm93ICRleHBlY3Rfb3V0KDEsc3RyaW5nKQorKwkgICAgaWYgeyRzdGVwX2F0ID09IDIgJiYg JG5vdyA9PSAxfSB7CisrCQlzZXQgZmFpbGVkIDAKKysJICAgIH0gZWxzZWlmIHskc3RlcF9hdCA9 PSAxICYmICRub3cgPT0gMn0geworKwkJc2V0IGZhaWxlZCAwCisrCQkjIENvbnRpbnVlIG92ZXIg dGhlIHJlLXNpZ25hbGxpbmcgYmFjayB0byB0aGUgaGFuZGxlIGVudHJ5LgorKwkJZ2RiX3Rlc3Rf bm9fb3V0cHV0IHtlbmFibGUgJHN0ZXAxfSAiIgorKwkJZ2RiX3Rlc3QgImNvbnRpbnVlIiAiIHN0 ZXAtMSAuKiIgIiIKKysJCXNldCBub3cgMQorKwkJZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtkaXNhYmxl ICRzdGVwMX0gIiIKKysJICAgIH0gZWxzZSAgeworKwkJZmFpbCAkdGVzdAorKwkgICAgfQorKwkg ICAgc2V0IHN0ZXBfYXQgJG5vdworKwl9CisrICAgIH0KKysgICAgaWYgJGZhaWxlZCB7CisrCXJl dHVybgorKyAgICB9CisrfQorKyMgV2UgY2FuIG5ldmVyIHJlbGlhYmx5IHNheSB0aGUgcmFjeSBw cm9ibGVtYXRpYyBjYXNlIGhhcyBiZWVuIHRlc3RlZC4KKytwYXNzICJzdGVwIgoKZGlmZiAtLWdp dCBhL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNW9mNS5wYXRjaCBiL2dkYi1iejU5MjAzMS1z aWdpbmZvLWxvc3QtNW9mNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li42YmY5M2VmCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC01 b2Y1LnBhdGNoCkBAIC0wLDAgKzEsMTQxIEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LXBhdGNoZXMvMjAxMC0wOS9tc2cwMDM2MS5odG1sCitTdWJqZWN0OiBbcGF0Y2ggNC80XSMzIFJl bW92ZSByZWR1bmRhbnQgbHAtPnNpZ2luZm8KKworSGksCisKK3RoaXMgaXMgYSBzaW1wbGlmaWNh dGlvbiB3aGljaCBzaG91bGQgbm90IGFmZmVjdCBHREIgYmVoYXZpb3IuICBBcyBsaW51eC1uYXQK K25vdyBzdG9wcyBvbiBlYWNoIHJlY2VpdmVkIHNpZ25hbCB3aXRob3V0IGFueSByZW9yZGVyaW5n IG9mIHRoZW0gdGhlbgorUFRSQUNFX0dFVFNJR0lORk8gaXMgZW5vdWdoIHRvIGFjY2VzcyBzaWdp bmZvLCB3aXRob3V0IGFueSBuZWVkIHRvIGNvcHkgaXQgaW4KK2FkdmFuY2UuCisKKworVGhhbmtz LAorSmFuCisKKworZ2RiLworMjAxMC0wOS0yMCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgorCisJKiBsaW51eC1uYXQuYyAocmVzdW1lX2NhbGxiYWNrKSA8bHAt PnN0b3BwZWQgJiYgbHAtPnN0YXR1cyA9PSAwPgorCShsaW51eF9uYXRfcmVzdW1lKTogUmVtb3Zl IExQLT5TSUdJTkZPIGNsZWFyaW5nLgorCShzYXZlX3NpZ2luZm8pOiBSZW1vdmUuCisJKHN0b3Bf d2FpdF9jYWxsYmFjaykgPFdTVE9QU0lHIChzdGF0dXMpICE9IFNJR1NUT1A+CisJKGxpbnV4X25h dF9maWx0ZXJfZXZlbnQpIDxsaW51eF9uYXRfc3RhdHVzX2lzX2V2ZW50IChzdGF0dXMpPjogUmVt b3ZlCisJdGhlIHNhdmVfc2lnaW5mbyBjYWxsLgorCShyZXN1bWVfc3RvcHBlZF9yZXN1bWVkX2x3 cHMpOiBSZW1vdmUgTFAtPlNJR0lORk8gY2xlYXJpbmcuCisJKGxpbnV4X25hdF9zZXRfc2lnaW5m b19maXh1cCk6IFVzZSBQVFJBQ0VfR0VUU0lHSU5GTy4KKwkqIGxpbnV4LW5hdC5oIChzdHJ1Y3Qg bHdwX2luZm8pIDxzaWdpbmZvPjogUmVtb3ZlLgorCitJbmRleDogZ2RiLTcuMi9nZGIvbGludXgt bmF0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4yLm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAt MDktMjUgMTU6Mzc6MjMuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvbGludXgtbmF0 LmMJMjAxMC0wOS0yNSAxNTozODoxOC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xODUxLDcgKzE4NTEs NiBAQCByZXN1bWVfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsIHZvCisgCQkJICAgIHRh cmdldF9waWRfdG9fc3RyIChscC0+cHRpZCkpOworICAgICAgIGxwLT5zdG9wcGVkID0gMDsKKyAg ICAgICBscC0+c3RlcCA9IDA7CistICAgICAgbWVtc2V0ICgmbHAtPnNpZ2luZm8sIDAsIHNpemVv ZiAobHAtPnNpZ2luZm8pKTsKKyAgICAgICBscC0+c3RvcHBlZF9ieV93YXRjaHBvaW50ID0gMDsK KyAgICAgfQorICAgZWxzZSBpZiAobHAtPnN0b3BwZWQgJiYgZGVidWdfbGludXhfbmF0KQorQEAg LTE5OTMsNyArMTk5Miw2IEBAIGxpbnV4X25hdF9yZXN1bWUgKHN0cnVjdCB0YXJnZXRfb3BzICpv cHMKKyAgIHB0aWQgPSBwaWRfdG9fcHRpZCAoR0VUX0xXUCAobHAtPnB0aWQpKTsKKyAKKyAgIGxp bnV4X29wcy0+dG9fcmVzdW1lIChsaW51eF9vcHMsIHB0aWQsIHN0ZXAsIHNpZ25vKTsKKy0gIG1l bXNldCAoJmxwLT5zaWdpbmZvLCAwLCBzaXplb2YgKGxwLT5zaWdpbmZvKSk7CisgICBscC0+c3Rv cHBlZF9ieV93YXRjaHBvaW50ID0gMDsKKyAKKyAgIGlmIChkZWJ1Z19saW51eF9uYXQpCitAQCAt MjQ4MywyMiArMjQ4MSw2IEBAIHdhaXRfbHdwIChzdHJ1Y3QgbHdwX2luZm8gKmxwKQorICAgcmV0 dXJuIHN0YXR1czsKKyB9CisgCistLyogU2F2ZSB0aGUgbW9zdCByZWNlbnQgc2lnaW5mbyBmb3Ig TFAuICBUaGlzIGlzIGN1cnJlbnRseSBvbmx5IGNhbGxlZAorLSAgIGZvciBTSUdUUkFQOyBzb21l IHBvcnRzIHVzZSB0aGUgc2lfYWRkciBmaWVsZCBmb3IKKy0gICB0YXJnZXRfc3RvcHBlZF9kYXRh X2FkZHJlc3MuICBJbiB0aGUgZnV0dXJlLCBpdCBtYXkgYWxzbyBiZSB1c2VkIHRvCistICAgcmVz dG9yZSB0aGUgc2lnaW5mbyBvZiByZXF1ZXVlZCBzaWduYWxzLiAgKi8KKy0KKy1zdGF0aWMgdm9p ZAorLXNhdmVfc2lnaW5mbyAoc3RydWN0IGx3cF9pbmZvICpscCkKKy17CistICBlcnJubyA9IDA7 CistICBwdHJhY2UgKFBUUkFDRV9HRVRTSUdJTkZPLCBHRVRfTFdQIChscC0+cHRpZCksCistCSAg KFBUUkFDRV9UWVBFX0FSRzMpIDAsICZscC0+c2lnaW5mbyk7CistCistICBpZiAoZXJybm8gIT0g MCkKKy0gICAgbWVtc2V0ICgmbHAtPnNpZ2luZm8sIDAsIHNpemVvZiAobHAtPnNpZ2luZm8pKTsK Ky19CistCisgLyogU2VuZCBhIFNJR1NUT1AgdG8gTFAuICAqLworIAorIHN0YXRpYyBpbnQKK0BA IC0yNzMwLDkgKzI3MTIsNiBAQCBzdG9wX3dhaXRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAq bHAsCisgCXsKKyAJICAvKiBUaGUgdGhyZWFkIHdhcyBzdG9wcGVkIHdpdGggYSBzaWduYWwgb3Ro ZXIgdGhhbiBTSUdTVE9QLiAgKi8KKyAKKy0JICAvKiBTYXZlIHRoZSB0cmFwJ3Mgc2lnaW5mbyBp biBjYXNlIHdlIG5lZWQgaXQgbGF0ZXIuICAqLworLQkgIHNhdmVfc2lnaW5mbyAobHApOworLQor IAkgIHNhdmVfc2lndHJhcCAobHApOworIAorIAkgIGlmIChkZWJ1Z19saW51eF9uYXQpCitAQCAt MzEwMiwxMiArMzA4MSw3IEBAIGxpbnV4X25hdF9maWx0ZXJfZXZlbnQgKGludCBsd3BpZCwgaW50 IHMKKyAgICAgfQorIAorICAgaWYgKFdJRlNUT1BQRUQgKHN0YXR1cykgJiYgV1NUT1BTSUcgKHN0 YXR1cykgPT0gU0lHVFJBUCkKKy0gICAgeworLSAgICAgIC8qIFNhdmUgdGhlIHRyYXAncyBzaWdp bmZvIGluIGNhc2Ugd2UgbmVlZCBpdCBsYXRlci4gICovCistICAgICAgc2F2ZV9zaWdpbmZvIChs cCk7CistCistICAgICAgc2F2ZV9zaWd0cmFwIChscCk7CistICAgIH0KKysgICAgc2F2ZV9zaWd0 cmFwIChscCk7CisgCisgICAvKiBDaGVjayBpZiB0aGUgdGhyZWFkIGhhcyBleGl0ZWQuICAqLwor ICAgaWYgKChXSUZFWElURUQgKHN0YXR1cykgfHwgV0lGU0lHTkFMRUQgKHN0YXR1cykpCitAQCAt MzcwNiw3ICszNjgwLDYgQEAgcmVzdW1lX3N0b3BwZWRfcmVzdW1lZF9sd3BzIChzdHJ1Y3QgbHdw XworICAgICAgIGxpbnV4X29wcy0+dG9fcmVzdW1lIChsaW51eF9vcHMsIHBpZF90b19wdGlkIChH RVRfTFdQIChscC0+cHRpZCkpLAorIAkJCSAgICBscC0+c3RlcCwgVEFSR0VUX1NJR05BTF8wKTsK KyAgICAgICBscC0+c3RvcHBlZCA9IDA7CistICAgICAgbWVtc2V0ICgmbHAtPnNpZ2luZm8sIDAs IHNpemVvZiAobHAtPnNpZ2luZm8pKTsKKyAgICAgICBscC0+c3RvcHBlZF9ieV93YXRjaHBvaW50 ID0gMDsKKyAgICAgfQorIAorQEAgLTU4NzgsMTEgKzU4NTEsMTkgQEAgbGludXhfbmF0X3NldF9z aWdpbmZvX2ZpeHVwIChzdHJ1Y3QgdGFyZworIHN0cnVjdCBzaWdpbmZvICoKKyBsaW51eF9uYXRf Z2V0X3NpZ2luZm8gKHB0aWRfdCBwdGlkKQorIHsKKy0gIHN0cnVjdCBsd3BfaW5mbyAqbHAgPSBm aW5kX2x3cF9waWQgKHB0aWQpOworKyAgc3RhdGljIHN0cnVjdCBzaWdpbmZvIHNpZ2luZm87Cisr ICBpbnQgcGlkOworIAorLSAgZ2RiX2Fzc2VydCAobHAgIT0gTlVMTCk7CisrICBwaWQgPSBHRVRf TFdQIChwdGlkKTsKKysgIGlmIChwaWQgPT0gMCkKKysgICAgcGlkID0gR0VUX1BJRCAocHRpZCk7 CisrCisrICBlcnJubyA9IDA7CisrICBwdHJhY2UgKFBUUkFDRV9HRVRTSUdJTkZPLCBwaWQsIChQ VFJBQ0VfVFlQRV9BUkczKSAwLCAmc2lnaW5mbyk7CisrICBpZiAoZXJybm8gIT0gMCkKKysgICAg bWVtc2V0ICgmc2lnaW5mbywgMCwgc2l6ZW9mIChzaWdpbmZvKSk7CisgCistICByZXR1cm4gJmxw LT5zaWdpbmZvOworKyAgcmV0dXJuICZzaWdpbmZvOworIH0KKyAKKyAvKiBQcm92aWRlIGEgcHJv dG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLworSW5kZXg6IGdkYi03 LjIvZ2RiL2xpbnV4LW5hdC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5vcmlnL2dkYi9saW51 eC1uYXQuaAkyMDEwLTA5LTI1IDE1OjMwOjUwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIv Z2RiL2xpbnV4LW5hdC5oCTIwMTAtMDktMjUgMTU6Mzc6NTcuMDAwMDAwMDAwICswMjAwCitAQCAt NTgsMTAgKzU4LDYgQEAgc3RydWN0IGx3cF9pbmZvCisgICAvKiBUaGUga2luZCBvZiBzdGVwcGlu ZyBvZiB0aGlzIExXUC4gICovCisgICBlbnVtIHJlc3VtZV9zdGVwIHN0ZXA7CisgCistICAvKiBO b24temVybyBzaV9zaWdubyBpZiB0aGlzIExXUCBzdG9wcGVkIHdpdGggYSB0cmFwLiAgc2lfYWRk ciBtYXkKKy0gICAgIGJlIHRoZSBhZGRyZXNzIG9mIGEgaGFyZHdhcmUgd2F0Y2hwb2ludC4gICov CistICBzdHJ1Y3Qgc2lnaW5mbyBzaWdpbmZvOworLQorICAgLyogU1RPUFBFRF9CWV9XQVRDSFBP SU5UIGlzIG5vbi16ZXJvIGlmIHRoaXMgTFdQIHN0b3BwZWQgd2l0aCBhIGRhdGEKKyAgICAgIHdh dGNocG9pbnQgdHJhcC4gICovCisgICBpbnQgc3RvcHBlZF9ieV93YXRjaHBvaW50OwoKZGlmZiAt LWdpdCBhL2dkYi1iejYyMzc0OS1nY29yZS1yZWxyby5wYXRjaCBiL2dkYi1iejYyMzc0OS1nY29y ZS1yZWxyby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDE1YTdh Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6NjIzNzQ5LWdjb3JlLXJlbHJvLnBhdGNoCkBAIC0w LDAgKzEsMTY5IEBACitnZGI6CitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcu Y2dpP2lkPTYyMzc0OQora2VybmVsOgoraHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3df YnVnLmNnaT9pZD02MzY5MzcKKworaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVz LzIwMTAtMDkvbXNnMDAzOTUuaHRtbAorU3ViamVjdDogUmU6IFtwYXRjaF0gRml4IGdjb3JlIHdy aXRlciBmb3IgLVdsLC16LHJlbHJvIChQUiBjb3JlZmlsZXMvMTE4MDQpCisKK2dkYi90ZXN0c3Vp dGUvCisyMDEwLTA5LTIyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+CisKKwlGaXggZ2NvcmUgd3JpdGVyIGZvciAtV2wsLXoscmVscm8uCisJKiBnZGIuYmFzZS9n Y29yZS1yZWxyby5leHA6IE5ldyBmaWxlLgorCSogZ2RiLmJhc2UvZ2NvcmUtcmVscm8tbWFpbi5j OiBOZXcgZmlsZS4KKwkqIGdkYi5iYXNlL2djb3JlLXJlbHJvLWxpYi5jOiBOZXcgZmlsZS4KKwor LS0tIC4vZ2RiL2djb3JlLmMJMjAxMC0wOS0yMyAyMDoxNDo1Ni4wMDAwMDAwMDAgKzAyMDAKKysr KyAuL2dkYi9nY29yZS5jCTIwMTAtMDktMjMgMjA6Mzc6NTYuMDAwMDAwMDAwICswMjAwCitAQCAt NDAxLDYgKzQwMSw3IEBAIGdjb3JlX2NyZWF0ZV9jYWxsYmFjayAoQ09SRV9BRERSIHZhZGRyLCAK KyAKKyAgIGlmICh3cml0ZSA9PSAwICYmICFzb2xpYl9rZWVwX2RhdGFfaW5fY29yZSAodmFkZHIs IHNpemUpKQorICAgICB7CisrI2lmIDAgLyogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3No b3dfYnVnLmNnaT9pZD02MzY5MzcgICovCisgICAgICAgLyogU2VlIGlmIHRoaXMgcmVnaW9uIG9m IG1lbW9yeSBsaWVzIGluc2lkZSBhIGtub3duIGZpbGUgb24gZGlzay4KKyAJIElmIHNvLCB3ZSBj YW4gYXZvaWQgY29weWluZyBpdHMgY29udGVudHMgYnkgY2xlYXJpbmcgU0VDX0xPQUQuICAqLwor ICAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworQEAgLTQzMyw2ICs0MzQsNyBAQCBnY29y ZV9jcmVhdGVfY2FsbGJhY2sgKENPUkVfQUREUiB2YWRkciwgCisgCX0KKyAKKyAgICAga2VlcDoK KysjZW5kaWYKKyAgICAgICBmbGFncyB8PSBTRUNfUkVBRE9OTFk7CisgICAgIH0KKyAKKy0tLSAv ZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2NvcmUtcmVscm8tbGliLmMK K0BAIC0wLDAgKzEsMjEgQEAKKysvKiBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisrCisrICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKwor KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworK3ZvaWQKKytsaWIgKHZvaWQp CisreworK30KKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2Nv cmUtcmVscm8tbWFpbi5jCitAQCAtMCwwICsxLDI1IEBACisrLyogQ29weXJpZ2h0IDIwMTAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisr ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKytl eHRlcm4gdm9pZCBsaWIgKHZvaWQpOworKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgbGli ICgpOworKyAgcmV0dXJuIDA7CisrfQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9nY29yZS1yZWxyby5leHAKK0BAIC0wLDAgKzEsODAgQEAKKysjIENvcHlyaWdo dCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisr IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKysKKytpZiB7W3NraXBfc2hsaWJfdGVzdHNdfSB7CisrICAgIHJldHVy biAwCisrfQorKworK3NldCB0ZXN0ZmlsZSAiZ2NvcmUtcmVscm8iCisrc2V0IHNyY21haW5maWxl ICR7dGVzdGZpbGV9LW1haW4uYworK3NldCBzcmNsaWJmaWxlICR7dGVzdGZpbGV9LWxpYi5jCisr c2V0IGxpYmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1saWIuc28KKytzZXQg b2JqZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LW1haW4ubworK3NldCBleGVj dXRhYmxlICR7dGVzdGZpbGV9LW1haW4KKytzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9 LyR7ZXhlY3V0YWJsZX0KKytzZXQgZ2NvcmVmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVj dXRhYmxlfS5nY29yZQorKworK2lmIHsgW2dkYl9jb21waWxlX3NobGliICR7c3JjZGlyfS8ke3N1 YmRpcn0vJHtzcmNsaWJmaWxlfSAke2xpYmZpbGV9IHtkZWJ1Z31dICE9ICIiCisrICAgICB8fCBb Z2RiX2NvbXBpbGUgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY21haW5maWxlfSAke29iamZpbGV9 IG9iamVjdCB7ZGVidWd9XSAhPSAiIiB9IHsKKysgICAgIHVudGVzdGVkICR7dGVzdGZpbGV9LmV4 cAorKyAgICAgcmV0dXJuIC0xCisrfQorK3NldCBvcHRzIFtsaXN0IGRlYnVnIHNobGliPSR7bGli ZmlsZX0gYWRkaXRpb25hbF9mbGFncz0tV2wsLXoscmVscm9dCisraWYgeyBbZ2RiX2NvbXBpbGUg JHtvYmpmaWxlfSAke2JpbmZpbGV9IGV4ZWN1dGFibGUgJG9wdHNdICE9ICIiIH0geworKyAgICAg dW5zdXBwb3J0ZWQgIi1XbCwteixyZWxybyBjb21waWxhdGlvbiBmYWlsZWQiCisrICAgICByZXR1 cm4gLTEKKyt9CisrCisrY2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQorK2dkYl9sb2FkX3NobGli cyAkbGliZmlsZQorKworKyMgRG9lcyB0aGlzIGdkYiBzdXBwb3J0IGdjb3JlPworK3NldCB0ZXN0 ICJoZWxwIGdjb3JlIgorK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysgICAgLXJl ICJVbmRlZmluZWQgY29tbWFuZDogLmdjb3JlLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwkjIGdj b3JlIGNvbW1hbmQgbm90IHN1cHBvcnRlZCAtLSBub3RoaW5nIHRvIHRlc3QgaGVyZS4KKysJdW5z dXBwb3J0ZWQgImdkYiBkb2VzIG5vdCBzdXBwb3J0IGdjb3JlIG9uIHRoaXMgdGFyZ2V0IgorKwly ZXR1cm4gLTE7CisrICAgIH0KKysgICAgLXJlICJTYXZlIGEgY29yZSBmaWxlIC4qXHJcbiRnZGJf cHJvbXB0ICQiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrfQorKworK2lmIHsgIVtydW50byBs aWJdIH0gdGhlbiB7CisrICAgIHJldHVybiAtMQorK30KKysKKytzZXQgZXNjYXBlZGZpbGVuYW1l IFtzdHJpbmdfdG9fcmVnZXhwICR7Z2NvcmVmaWxlfV0KKysKKytzZXQgdGVzdCAic2F2ZSBhIGNv cmVmaWxlIgorK2dkYl90ZXN0X211bHRpcGxlICJnY29yZSAke2djb3JlZmlsZX0iICR0ZXN0IHsK KysgICAgLXJlICJTYXZlZCBjb3JlZmlsZSAke2VzY2FwZWRmaWxlbmFtZX1cclxuJGdkYl9wcm9t cHQgJCIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICJDYW4ndCBjcmVhdGUgYSBj b3JlZmlsZVxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXVuc3VwcG9ydGVkICR0ZXN0CisrCXJldHVy biAtMQorKyAgICB9CisrfQorKworKyMgTm93IHJlc3RhcnQgZ2RiIGFuZCBsb2FkIHRoZSBjb3Jl ZmlsZS4KKysKKytjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCisrZ2RiX2xvYWRfc2hsaWJzICRs aWJmaWxlCisrCisrZ2RiX3Rlc3QgImNvcmUgJHtnY29yZWZpbGV9IiAiQ29yZSB3YXMgZ2VuZXJh dGVkIGJ5IC4qIiAicmUtbG9hZCBnZW5lcmF0ZWQgY29yZWZpbGUiCisrCisrZ2RiX3Rlc3QgImZy YW1lIiAiIzAgXFteXHJcblxdKiBsaWIgLioiICJsaWJyYXJ5IGdvdCBsb2FkZWQiCgpkaWZmIC0t Z2l0IGEvZ2RiLWJ6NjI3NDMyLWxvb3Atc3RhdGljLXNlbGYtY2xhc3MucGF0Y2ggYi9nZGItYno2 Mjc0MzItbG9vcC1zdGF0aWMtc2VsZi1jbGFzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi43YTAzZjE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6NjI3NDMyLWxv b3Atc3RhdGljLXNlbGYtY2xhc3MucGF0Y2gKQEAgLTAsMCArMSwyODAgQEAKK2h0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAwNDQwLmh0bWwKK1N1YmplY3Q6 IFtwYXRjaF0gRml4IGluZmluaXRlIGxvb3AgY3Jhc2ggb24gc2VsZi1yZWZlcmVuY2luZyBjbGFz cworCitIaSwKKworY2xhc3MgQyB7IHN0YXRpYyBDIHM7IH07IGlzIGEgcHJvYmxlbSBmb3IgR0RC IGFzIGl0IHJlZmVyZW5jZXMgaXRzZWxmIGFuZCBpdAorY2FuIGNyYXNoLiAgRG93bnN0cmVhbSBC dWc6CisJaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02Mjc0MzIK KworIzMgIDB4MDAwMDAwMDAwMDViMmNjNSBpbiBnbnV2M19wYXNzX2J5X3JlZmVyZW5jZSAodHlw ZT0weDEwNDRkM2M4KSBhdCAuLi8uLi9nZGIvZ251LXYzLWFiaS5jOjg0MAorIzQgIDB4MDAwMDAw MDAwMDViMmNjNSBpbiBnbnV2M19wYXNzX2J5X3JlZmVyZW5jZSAodHlwZT0weDEwNDRkM2M4KSBh dCAuLi8uLi9nZGIvZ251LXYzLWFiaS5jOjg0MAorWy4uLl0KKworTm8gcmVncmVzc2lvbnMgb24g e3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEzLWxpbnV4LWdudS4KKworRllJIHRoZSAu Y2MgZmlsZSBpcyBub3QgcmVwcm9kdWNpYmxlIG9uIC0gYW5kIG9ubHkgb24gLSBGZWRvcmEgMTQg R0NDLCBmaWxlZDoKKwlodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lk PTYzNzMxNQorCitJIHdvdWxkIGV2ZW4gY2hlY2sgaXQgaW4gaW4gc29tZSB0aW1lLgorCisKK1Ro YW5rcywKK0phbgorCisKK2dkYi8KKzIwMTAtMDktMjQgIEphbiBLcmF0b2NodmlsICA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCUZpeCBHREIgY3Jhc2ggb24gaW5mZXJpb3IgY2FsbHMg d2l0aCBzZWxmLXJlZmVyZW5jaW5nIGNsYXNzZXMuCisJKiBnbnUtdjMtYWJpLmMgKGdudXYzX3Bh c3NfYnlfcmVmZXJlbmNlKTogRG8gbm90IGNhbGwgaXRzZWxmIG9uIHN0YXRpYworCW1lbWJlciBm aWVsZHMuCisKK2dkYi90ZXN0c3VpdGUvCisyMDEwLTA5LTI0ICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwlGaXggR0RCIGNyYXNoIG9uIGluZmVyaW9yIGNh bGxzIHdpdGggc2VsZi1yZWZlcmVuY2luZyBjbGFzc2VzLgorCSogZ2RiLmR3YXJmMi9kdzItY3At aW5mY2FsbC1yZWYtc3RhdGljLmV4cDogTmV3IGZpbGUuCisJKiBnZGIuZHdhcmYyL2R3Mi1jcC1p bmZjYWxsLXJlZi1zdGF0aWMtbWFpbi5jOiBOZXcgZmlsZS4KKwkqIGdkYi5kd2FyZjIvZHcyLWNw LWluZmNhbGwtcmVmLXN0YXRpYy5TOiBOZXcgZmlsZS4KKworLS0tIGEvZ2RiL2dudS12My1hYmku YworKysrIGIvZ2RiL2dudS12My1hYmkuYworQEAgLTgzNSw5ICs4MzUsMTAgQEAgZ251djNfcGFz c19ieV9yZWZlcmVuY2UgKHN0cnVjdCB0eXBlICp0eXBlKQorICAgICAgYnkgcmVmZXJlbmNlLCBz byBkb2VzIHRoaXMgY2xhc3MuICBTaW1pbGFybHkgZm9yIG1lbWJlcnMsIHdoaWNoCisgICAgICBh cmUgY29uc3RydWN0ZWQgd2hlbmV2ZXIgdGhpcyBjbGFzcyBpcy4gIFdlIGRvIG5vdCBuZWVkIHRv IHdvcnJ5CisgICAgICBhYm91dCByZWN1cnNpdmUgbG9vcHMgaGVyZSwgc2luY2Ugd2UgYXJlIG9u bHkgbG9va2luZyBhdCBtZW1iZXJzCistICAgICBvZiBjb21wbGV0ZSBjbGFzcyB0eXBlLiAgKi8K KysgICAgIG9mIGNvbXBsZXRlIGNsYXNzIHR5cGUuICBBbHNvIGlnbm9yZSBhbnkgc3RhdGljIG1l bWJlcnMuICAqLworICAgZm9yIChmaWVsZG51bSA9IDA7IGZpZWxkbnVtIDwgVFlQRV9ORklFTERT ICh0eXBlKTsgZmllbGRudW0rKykKKy0gICAgaWYgKGdudXYzX3Bhc3NfYnlfcmVmZXJlbmNlIChU WVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGZpZWxkbnVtKSkpCisrICAgIGlmIChUWVBFX0ZJRUxEX0xP Q19LSU5EICh0eXBlLCBmaWVsZG51bSkgPT0gRklFTERfTE9DX0tJTkRfQklUUE9TCisrICAgICAg ICAmJiBnbnV2M19wYXNzX2J5X3JlZmVyZW5jZSAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBmaWVs ZG51bSkpKQorICAgICAgIHJldHVybiAxOworIAorICAgcmV0dXJuIDA7CistLS0gL2Rldi9udWxs CisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWNwLWluZmNhbGwtcmVmLXN0YXRp Yy1tYWluLmMKK0BAIC0wLDAgKzEsNTEgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2Yg R0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisr CisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KKysKKysvKiBjbGFzcyBDCisrICAgICB7CisrICAgICBwdWJsaWM6CisrICAgICAg IHN0YXRpYyBDIHM7CisrICAgICB9OworKyAgIEMgQzo6czsKKysgICBDIGYoKQorKyAgIHsKKysg ICAgIHJldHVybiBDOjpzOworKyAgIH0gICovCisrCisrYXNtICgiLmdsb2JsIGN1X3RleHRfc3Rh cnQiKTsKKythc20gKCJjdV90ZXh0X3N0YXJ0OiIpOworKworK2FzbSAoIi5nbG9ibCBmX3N0YXJ0 Iik7CisrYXNtICgiZl9zdGFydDoiKTsKKysKKyt2b2lkCisrZiAodm9pZCkKKyt7CisrfQorKwor K2FzbSAoIi5nbG9ibCBmX2VuZCIpOworK2FzbSAoImZfZW5kOiIpOworKworK2ludAorK21haW4g KHZvaWQpCisreworKyAgZiAoKTsKKysgIHJldHVybiAwOworK30KKysKKythc20gKCIuZ2xvYmwg Y3VfdGV4dF9lbmQiKTsKKythc20gKCJjdV90ZXh0X2VuZDoiKTsKKy0tLSAvZGV2L251bGwKKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItY3AtaW5mY2FsbC1yZWYtc3RhdGljLlMK K0BAIC0wLDAgKzEsMTE1IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov CisrCisrLyogRGVidWcgaW5mb3JtYXRpb24gKi8KKysKKysJLnNlY3Rpb24gLmRlYnVnX2luZm8K KysuTGN1MV9iZWdpbjoKKysJLyogQ1UgaGVhZGVyICovCisrCS40Ynl0ZQkuTGN1MV9lbmQgLSAu TGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8KKysuTGN1MV9zdGFy dDoKKysJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLworKwkuNGJ5dGUJLkxhYmJyZXYx X2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8KKysJLmJ5dGUJNAkJCQkv KiBQb2ludGVyIHNpemUgKi8KKysKKysJLyogQ1UgZGllICovCisrCS51bGViMTI4IDEJCQkJLyog QWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS40Ynl0ZQljdV90ZXh0X3N0YXJ0CQkJ LyogRFdfQVRfbG93X3BjICovCisrCS40Ynl0ZQljdV90ZXh0X2VuZAkJCS8qIERXX0FUX2hpZ2hf cGMgKi8KKysJLmFzY2lpCSJmaWxlMS50eHRcMCIJCQkvKiBEV19BVF9uYW1lICovCisrCS5hc2Np aQkiR05VIEMgMy4zLjNcMCIJCQkvKiBEV19BVF9wcm9kdWNlciAqLworKwkuYnl0ZQk0CQkJCS8q IERXX0FUX2xhbmd1YWdlIChEV19MQU5HX0NfcGx1c19wbHVzKSAqLworKworKy5MdHlwZV9jbGFz czoKKysJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX2NsYXNzX3R5cGUgKi8KKysJLmFz Y2lpCQkiQ1wwIgkJCS8qIERXX0FUX25hbWUgKi8KKysKKysJLnVsZWIxMjgJNAkJCS8qIEFiYnJl djogRFdfVEFHX21lbWJlciAqLworKwkuYXNjaWkJCSJzXDAiCQkJLyogRFdfQVRfbmFtZSAqLwor KwkuNGJ5dGUJCS5MdHlwZV9jbGFzcy0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBlICovCisrCS5i eXRlCQkxCQkJLyogRFdfQVRfZGVjbGFyYXRpb24gKi8KKysJLmJ5dGUJCTEJCQkvKiBEV19BVF9l eHRlcm5hbCAqLworKworKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBEV19UQUdf Y2xhc3NfdHlwZSAqLworKworKwkudWxlYjEyOAk1CQkJLyogQWJicmV2OiBEV19UQUdfc3VicHJv Z3JhbSAqLworKwkuYXNjaWkJCSJmXDAiCQkJLyogRFdfQVRfbmFtZSAqLworKwkuNGJ5dGUJCS5M dHlwZV9jbGFzcy0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBlICovCisrCS40Ynl0ZQkJZl9zdGFy dAkJCS8qIERXX0FUX2xvd19wYyAqLworKwkuNGJ5dGUJCWZfZW5kCQkJLyogRFdfQVRfaGlnaF9w YyAqLworKworKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLworKworKy5M Y3UxX2VuZDoKKysKKysvKiBBYmJyZXYgdGFibGUgKi8KKysJLnNlY3Rpb24gLmRlYnVnX2FiYnJl dgorKy5MYWJicmV2MV9iZWdpbjoKKysJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2RlICovCisr CS51bGViMTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS5ieXRlCQkxCQkJ LyogaGFzX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8K KysJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCisrCS51bGViMTI4CTB4MTIJCQkv KiBEV19BVF9oaWdoX3BjICovCisrCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLwor KwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCisrCS51bGViMTI4CTB4OAkJCS8qIERX X0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLwor KwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweDEzCQkJ LyogRFdfQVRfbGFuZ3VhZ2UgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAq LworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVy bWluYXRvciAqLworKworKwkudWxlYjEyOAkzCQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIx MjgJMHgyCQkJLyogRFdfVEFHX2NsYXNzX3R5cGUgKi8KKysJLmJ5dGUJCTEJCQkvKiBoYXNfY2hp bGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLworKwkudWxlYjEyOAkw eDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAk0CQkJLyog QWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHhkCQkJLyogRFdfVEFHX21lbWJlciAqLworKwku Ynl0ZQkJMAkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9u YW1lICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4 CTB4NDkJCQkvKiBEV19BVF90eXBlICovCisrCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3Jl ZjQgKi8KKysJLnVsZWIxMjgJMHgzYwkJCS8qIERXX0FUX2RlY2xhcmF0aW9uICovCisrCS51bGVi MTI4CTB4YwkJCS8qIERXX0ZPUk1fZmxhZyAqLworKwkudWxlYjEyOAkweDNmCQkJLyogRFdfQVRf ZXh0ZXJuYWwgKi8KKysJLnVsZWIxMjgJMHhjCQkJLyogRFdfRk9STV9mbGFnICovCisrCS5ieXRl CQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICov CisrCisrCS51bGViMTI4CTUJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkweDJlCQkJ LyogRFdfVEFHX3N1YnByb2dyYW0gKi8KKysJLmJ5dGUJCTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8K KysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLworKwkudWxlYjEyOAkweDgJCQkvKiBE V19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLworKwku dWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCisrCS51bGViMTI4CTB4MTEJCQkvKiBE V19BVF9sb3dfcGMgKi8KKysJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCisrCS51 bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICovCisrCS51bGViMTI4CTB4MQkJCS8qIERX X0ZPUk1fYWRkciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJ MHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworLS0tIC9kZXYvbnVsbAorKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1jcC1pbmZjYWxsLXJlZi1zdGF0aWMuZXhwCitA QCAtMCwwICsxLDQ5IEBACisrIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK KysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisr IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBDaGVjayB0 aGF0IEdEQiBjYW4gY2FsbCBDKysgZnVuY3Rpb25zIHdob3NlIHBhcmFtZXRlcnMgb3IgcmV0dXJu IHZhbHVlcyBoYXZlCisrIyB0eXBlIGNvbnRhaW5pbmcgYSBzdGF0aWMgbWVtYmVyIG9mIHRoZSBz YW1lIHR5cGUuCisrCisrIyBTdGlsbCBubyBDKysgY29tcGlsZXIgaXMgdXNlZC4KKytpZiB7IFtz a2lwX2NwbHVzX3Rlc3RzXSB9IHsgY29udGludWUgfQorKworKyMgVGhpcyB0ZXN0IGNhbiBvbmx5 IGJlIHJ1biBvbiB0YXJnZXRzIHdoaWNoIHN1cHBvcnQgRFdBUkYtMiBhbmQgdXNlIGdhcy4KKysj IEZvciBub3cgcGljayBhIHNhbXBsaW5nIG9mIGxpa2VseSB0YXJnZXRzLgorK2lmIHshW2lzdGFy Z2V0ICotKi1saW51eCpdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLWdudSpdCisrICAgICYmICFb aXN0YXJnZXQgKi0qLWVsZipdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLW9wZW5ic2QqXQorKyAg ICAmJiAhW2lzdGFyZ2V0IGFybS0qLWVhYmkqXQorKyAgICAmJiAhW2lzdGFyZ2V0IHBvd2VycGMt Ki1lYWJpKl19IHsKKysgICAgcmV0dXJuIDAgIAorK30KKysKKytzZXQgdGVzdGZpbGUgImR3Mi1j cC1pbmZjYWxsLXJlZi1zdGF0aWMiCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3Rm aWxlfS5leHAgJHt0ZXN0ZmlsZX0gW2xpc3QgJHt0ZXN0ZmlsZX0tbWFpbi5jICR7dGVzdGZpbGV9 LlNdIHt9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFbcnVudG9fbWFpbl0gdGhl biB7CisrICAgIHJldHVybiAtMQorK30KKysKKysjIG1haW4gaXMgbm90IHByb3ZpZGVkIGJ5IERX QVJGLgorK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGxhbmd1YWdlIGMrKyIKKysKKysjIFRoZXJl IGFyZSBubyBtYW5nbGVkIG5hbWVzIGluIERXQVJGIHRvIHN1Z2dlc3QgdGhlIHYzIEFCSS4KKytn ZGJfdGVzdF9ub19vdXRwdXQgInNldCBjcC1hYmkgZ251LXYzIgorKworKyMgR0RCIGNvdWxkIGNy YXNoLiAgVGhlcmUgaXMgbm8gRFdfQVRfbG9jYXRpb24gc28gaXQgaXMgPG9wdGltaXplZCBvdXQ+ LgorK2dkYl90ZXN0ICJwIGYoKSIgeyA9IHtzdGF0aWMgcyA9IDxvcHRpbWl6ZWQgb3V0Pn19CisK CmRpZmYgLS1naXQgYS9nZGItYno2MzExNTgtY3h4LXRoaXMtbG9va3VwLnBhdGNoIGIvZ2RiLWJ6 NjMxMTU4LWN4eC10aGlzLWxvb2t1cC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4wZDdhZTA1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6NjMxMTU4LWN4eC10aGlz LWxvb2t1cC5wYXRjaApAQCAtMCwwICsxLDE0IEBACitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5j b20vc2hvd19idWcuY2dpP2lkPTYzMTE1OAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1w YXRjaGVzLzIwMTAtMDkvbXNnMDAyMjkuaHRtbAorU3ViamVjdDogW3BhdGNoXSBQUiAxMTk5MiAi UmVncmVzc2lvbjogQysrIHRoaXMgc2NvcGUgc29tZXRpbWVzIGRvZXMgbm90IHdvcmsiCisKKy0t LSBnZGItNy4yL2dkYi9jLWV4cC55Lm9yaWcJMjAxMC0wOC0xOSAxNzo1MDowMC4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy4yL2dkYi9jLWV4cC55CTIwMTAtMDktMTEgMjA6MzA6MTUuMDAwMDAw MDAwICswMjAwCitAQCAtMjQyMiw2ICsyNDIyLDcgQEAgY2xhc3NpZnlfbmFtZSAoc3RydWN0IGJs b2NrICpibG9jaykKKyAKKyAgIGlmIChzeW0gPT0gTlVMTAorICAgICAgICYmIHBhcnNlX2xhbmd1 YWdlLT5sYV9sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cworKyAgICAgICYmICFpc19hX2ZpZWxk X29mX3RoaXMKKyAgICAgICAmJiAhbG9va3VwX21pbmltYWxfc3ltYm9sIChjb3B5LCBOVUxMLCBO VUxMKSkKKyAgICAgcmV0dXJuIFVOS05PV05fQ1BQX05BTUU7CisgCgpkaWZmIC0tZ2l0IGEvZ2Ri LWJ6NjMxNTc1LWdkYi1pbmRleC1ub2JpdHMucGF0Y2ggYi9nZGItYno2MzE1NzUtZ2RiLWluZGV4 LW5vYml0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDdhNjEz Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6NjMxNTc1LWdkYi1pbmRleC1ub2JpdHMucGF0Y2gK QEAgLTAsMCArMSw2MSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIw MTAtMDkvbXNnMDAxODMuaHRtbAorU3ViamVjdDogW3BhdGNoXSAuZ2RiX2luZGV4OiBEbyBub3Qg Y3Jhc2ggb24gTk9CSVRTCisKK0hpLAorCitlbGZ1dGlscy0wLjE0OCBzdGlsbCBkbyBub3QgY29u dGFpbiBwYXRjaCBvZiBpdHMgR0lUCis4MDRlOWNhNGQ2NDRlNjRhNjEyNTMwN2NiZjBhMGI4OTQ3 N2Q3NjExIHdoZXJlIHRoZSAuZ2RiX2luZGV4IHNlY3Rpb24gaGFzIGJlZW4KK2Fsc28gc3BsaXQg aW50byB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBmaWxlLgorCitEdWUgdG8gaXQgYmluYXJpZXMg c3BsaXQgdXNpbmcgZWxmdXRpbHMtMC4xNDggY29udGFpbgorICBbMzhdIC5nZGJfaW5kZXggICAg ICAgIE5PQklUUyAgICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAgMDAwMDMzOGMKK2luc3RlYWQg b2YgZXhwZWN0ZWQKKyAgWzI4XSAuZ2RiX2luZGV4ICAgICAgICBQUk9HQklUUyAgICAgICAgIDAw MDAwMDAwMDAwMDAwMDAgIDAwMDAyMTFjCisKK2FuZCBkdWUgdG8gaXQgR0RCIHdoaWxlIHJlYWRp bmcgdGhlIGZpbGUgY2FuIGVycm9yKCkgYnk6CitSZWFkaW5nIHN5bWJvbHMgZnJvbSB4LmRlYnVn Li4uRHdhcmYgRXJyb3I6IENhbid0IHJlYWQgRFdBUkYgZGF0YSBmcm9tICd4LmRlYnVnJworCit3 aGljaCBzaG91bGQgbm90IGJlIGZhdGFsIGJ1dCBkdWUgdG8gc29tZSBvdGhlciBidWdzIHRoZXJl aW4gaXQgY2FuIGNyYXNoIEdEQi4KKworVGhlIHdyb25nIHNlcGFyYXRlIGRlYnVnIGluZm8gZmls ZSBpcyBmb3IgZXhhbXBsZToKK2h0dHA6Ly9rb2ppcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9wYWNr YWdlcy9nbGliYy8yLjEyLjkwLzEwL3g4Nl82NC9nbGliYy1kZWJ1Z2luZm8tMi4xMi45MC0xMC54 ODZfNjQucnBtCisvdXNyL2xpYi9kZWJ1Zy9saWI2NC9saWJ1dGlsLTIuMTIuOTAuc28uZGVidWcK KworT0sgdG8gY2hlY2staW4/CisKK0l0IGRvZXMgbm90IGF0dGVtcHQgdG8gdXNlIC5nZGJfaW5k ZXggZnJvbSB0aGUgbWFpbiBiaW5hcnksIGl0IHdpbGwganVzdAorZGlzYWJsZSAuZ2RiX2luZGV4 IHVzYWdlIG9uIHRoZXNlIGJpbmFyaWVzLgorCisKK1RoYW5rcywKK0phbgorCisKK2h0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDkvbXNnMDAwNjIuaHRtbAorCisjIyMgc3Jj L2dkYi9DaGFuZ2VMb2cJMjAxMC8wOS8wOCAxOTowOTo0MgkxLjEyMTYyCisjIyMgc3JjL2dkYi9D aGFuZ2VMb2cJMjAxMC8wOS8wOCAxOTo0OToyOAkxLjEyMTYzCisjIyAtMSwzICsxLDcgQEAKKysy MDEwLTA5LTA4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Cisr CisrCSogZHdhcmYycmVhZC5jIChkd2FyZjJfcmVhZF9pbmRleCk6IFJldHVybiBvbiBubyBTRUNf SEFTX0NPTlRFTlRTLgorKworIDIwMTAtMDktMDggIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNv ZGVzb3VyY2VyeS5jb20+CisgCisgCSogZHdhcmYycmVhZC5jIChyZWFkX3N0cnVjdHVyZV90eXBl KTogTW92ZSBwcm9jZXNzaW5nIG9mCistLS0gc3JjL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC8wOS8w OCAxOTowOTo0MgkxLjQ1MgorKysrIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIwMTAvMDkvMDggMTk6 NDk6MjgJMS40NTMKK0BAIC0xOTA0LDYgKzE5MDQsMTMgQEAKKyAgIGlmIChkd2FyZjJfcGVyX29i amZpbGUtPmdkYl9pbmRleC5hc2VjdGlvbiA9PSBOVUxMCisgICAgICAgfHwgZHdhcmYyX3Blcl9v YmpmaWxlLT5nZGJfaW5kZXguc2l6ZSA9PSAwKQorICAgICByZXR1cm4gMDsKKysKKysgIC8qIE9s ZGVyIGVsZnV0aWxzIHN0cmlwIHZlcnNpb25zIGNvdWxkIGtlZXAgdGhlIHNlY3Rpb24gaW4gdGhl IG1haW4KKysgICAgIGV4ZWN1dGFibGUgd2hpbGUgc3BsaXR0aW5nIGl0IGZvciB0aGUgc2VwYXJh dGUgZGVidWcgaW5mbyBmaWxlLiAgKi8KKysgIGlmICgoYmZkX2dldF9maWxlX2ZsYWdzIChkd2Fy ZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5hc2VjdGlvbikKKysgICAgICAgJiBTRUNfSEFTX0NP TlRFTlRTKSA9PSAwKQorKyAgICByZXR1cm4gMDsKKysKKyAgIGR3YXJmMl9yZWFkX3NlY3Rpb24g KG9iamZpbGUsICZkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleCk7CisgCisgICBhZGRyID0g ZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguYnVmZmVyOwoKZGlmZiAtLWdpdCBhL2dkYi1i ejYzNDY2MC1nZGJweS1sb2FkLW9uLWF0dGFjaC5wYXRjaCBiL2dkYi1iejYzNDY2MC1nZGJweS1s b2FkLW9uLWF0dGFjaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y MjIzNzc2Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6NjM0NjYwLWdkYnB5LWxvYWQtb24tYXR0 YWNoLnBhdGNoCkBAIC0wLDAgKzEsNjEgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt cGF0Y2hlcy8yMDEwLTA5L21zZzAwMzY1Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gcHl0aG9uOiBs b2FkICotZ2RiLnB5IGZvciBzaGxpYnMgZHVyaW5nIGF0dGFjaAorCitIaSwKKworY3VycmVudGx5 IGlmIHlvdSBhdHRhY2ggdG8gb3IgbG9hZCBhIGNvcmUgZmlsZSBmb3IgZXhlY3V0YWJsZSwgaXRz IC1nZGIucHkKK3NjcmlwdCBpcyBsb2FkZWQuICBCdXQgbm9uZSAtZ2RiLnB5IGZvciB0aGUgc2hh cmVkIGxpYnJhcmllcy4KKworU3Bhd25lZCBvciB3aXRoIHRoZSBmaXggKGxpYnN0ZGMrKy1nZGIu cHkpOgorIzEgIDB4MDAwMDAwMDAwMDQwMDdiNSBpbiBmIChzPSJhIikgYXQgMS5DOjQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXiBpcyBzdGQ6OnN0cmluZworCitBdHRhY2hlZC9jb3Jl IHdpdGhvdXQgdGhlIGZpeDoKKyMxICAweDAwMDAwMDAwMDA0MDA3YjUgaW4gZiAocz0uLi4pIGF0 IDEuQzo0CisKK05vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMixpNjg2fS1mZWRv cmExMy1saW51eC1nbnUuCisKK01vc3RseSBvYnZpb3VzLCBJIHdpbGwgY2hlY2sgaXQgaW4gbGF0 ZXIuCisKKworVGhhbmtzLAorSmFuCisKKworZ2RiLworMjAxMC0wOS0yMiAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJKiBtYWluLmM6IEluY2x1ZGUgb2Jq ZmlsZXMuaC4KKwkoY2FwdHVyZWRfbWFpbik6IE5ldyB2YXJpYWJsZSBvYmpmaWxlLiAgQ2FsbAor CWxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIGZvciBBTExfT0JKRklMRVMuCisKKy0tLSAu L2dkYi9tYWluLmMJMjAxMC0wOS0yMiAxMDo1MTozMi4wMDAwMDAwMDAgKzAyMDAKKysrKyAuL2dk Yi9tYWluLmMJMjAxMC0wOS0yMiAxMDo1MDo0NC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00Myw2ICs0 Myw3IEBACisgI2luY2x1ZGUgInNvdXJjZS5oIgorICNpbmNsdWRlICJjbGkvY2xpLWNtZHMuaCIK KyAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgorKyNpbmNsdWRlICJvYmpmaWxlcy5oIgorIAor IC8qIFRoZSBzZWxlY3RlZCBpbnRlcnByZXRlci4gIFRoaXMgd2lsbCBiZSB1c2VkIGFzIGEgc2V0 IGNvbW1hbmQKKyAgICB2YXJpYWJsZSwgc28gaXQgc2hvdWxkIGFsd2F5cyBiZSBtYWxsb2MnZWQg LSBzaW5jZQorQEAgLTMyMyw2ICszMjQsNyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQor IAorICAgaW50IGk7CisgICBpbnQgc2F2ZV9hdXRvX2xvYWQ7CisrICBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZTsKKyAKKyAgIHN0cnVjdCBjbGVhbnVwICpwcmVfc3RhdF9jaGFpbiA9IG1ha2VfY29t bWFuZF9zdGF0c19jbGVhbnVwICgwKTsKKyAKK0BAIC05NTcsOCArOTU5LDggQEAgQ2FuJ3QgYXR0 YWNoIHRvIHByb2Nlc3MgYW5kIHNwZWNpZnkgYSBjbworICAgICAgV2Ugd2FpdCB1bnRpbCBub3cg YmVjYXVzZSBpdCBpcyBjb21tb24gdG8gYWRkIHRvIHRoZSBzb3VyY2Ugc2VhcmNoCisgICAgICBw YXRoIGluIGxvY2FsX2dkYmluaXQuICAqLworICAgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IHNh dmVfYXV0b19sb2FkOworLSAgaWYgKHN5bWZpbGVfb2JqZmlsZSAhPSBOVUxMKQorLSAgICBsb2Fk X2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3ltZmlsZV9vYmpmaWxlKTsKKysgIEFMTF9PQkpG SUxFUyAob2JqZmlsZSkKKysgICAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKG9iamZp bGUpOworIAorICAgZm9yIChpID0gMDsgaSA8IG5jbWQ7IGkrKykKKyAgICAgeworCgpkaWZmIC0t Z2l0IGEvZ2RiLWJ6NjM3NzcwLWlmdW5jLXdhdGNocG9pbnQtZGVsZXRlLnBhdGNoIGIvZ2RiLWJ6 NjM3NzcwLWlmdW5jLXdhdGNocG9pbnQtZGVsZXRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjE3MDE1ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYno2Mzc3NzAt aWZ1bmMtd2F0Y2hwb2ludC1kZWxldGUucGF0Y2gKQEAgLTAsMCArMSwxMTEgQEAKK2NvbW1pdCAz MGZlZGFkZjIyNGE4YzExOTU3NWZjYzhhNmNlZDUxZjBkNGFlZTlmCitBdXRob3I6IEphbiBLcmF0 b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorRGF0ZTogICBXZWQgU2VwIDI5IDAx OjI1OjM5IDIwMTAgKzAyMDAKKworICAgIEZpeCB0aGUgY3Jhc2guCisKK2NvbW1pdCBkMTAxY2U1 OTdmMmQ2MTQzZTlmMDIzYTQ0NDQzNTJiY2VmZmIyNjc5CitBdXRob3I6IEphbiBLcmF0b2Nodmls IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorRGF0ZTogICBXZWQgU2VwIDI5IDAwOjQyOjM3 IDIwMTAgKzAyMDAKKworICAgIE5ldyB0ZXN0Y2FzZSBmb3I6IGh0dHBzOi8vYnVnemlsbGEucmVk aGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjM3NzcwCisKK2RpZmYgLS1naXQgYS9nZGIvYnJlYWtw b2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQuYworaW5kZXggZGU1MTIzMS4uMThiNzg2OCAxMDA2NDQK Ky0tLSBhL2dkYi9icmVha3BvaW50LmMKKysrKyBiL2dkYi9icmVha3BvaW50LmMKK0BAIC0xMDU2 MCw2ICsxMDU2MCwxMSBAQCBtYXBfYnJlYWtwb2ludF9udW1iZXJzIChjaGFyICphcmdzLCB2b2lk ICgqZnVuY3Rpb24pIChzdHJ1Y3QgYnJlYWtwb2ludCAqLAorIAkJICAgIC8qIEZVTkNUSU9OIGNh biBiZSBhbHNvIGRlbGV0ZV9icmVha3BvaW50LiAgKi8KKyAJCSAgICBuZXh0X3JlbGF0ZWRfYiA9 IHJlbGF0ZWRfYnJlYWtwb2ludC0+cmVsYXRlZF9icmVha3BvaW50OworIAkJICAgIGZ1bmN0aW9u IChyZWxhdGVkX2JyZWFrcG9pbnQsIGRhdGEpOworKworKwkJICAgIC8qIEZvciBkZWxldGVfYnJl YWtwb2ludCBvZiB0aGUgbGFzdCBlbnRyeSBvZiB0aGUgcmluZyB3ZQorKwkJICAgICAgIHdlcmUg dHJhdmVyc2luZyB3ZSB3b3VsZCBuZXZlciBnZXQgYmFjayB0byBCLiAgKi8KKysJCSAgICBpZiAo bmV4dF9yZWxhdGVkX2IgPT0gcmVsYXRlZF9icmVha3BvaW50KQorKwkJICAgICAgYnJlYWs7Cisg CQkgICAgcmVsYXRlZF9icmVha3BvaW50ID0gbmV4dF9yZWxhdGVkX2I7CisgCQkgIH0KKyAJCXdo aWxlIChyZWxhdGVkX2JyZWFrcG9pbnQgIT0gYik7CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRlbGV0ZS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93 YXRjaHBvaW50LWRlbGV0ZS5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4u MDMxZWY5MgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRj aHBvaW50LWRlbGV0ZS5jCitAQCAtMCwwICsxLDMzIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBw YXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxMCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4gICovCisrCisrdm9pZAorK2Z1bmMgKHZvaWQpCisreworKyAgdm9sYXRpbGUg aW50IHggPSAwOworKworKyAgeCsrOwkvKiBicmVhay1oZXJlICovCisrICB4Kys7CisrfQorKwor K2ludAorK21haW4gKHZvaWQpCisreworKyAgZnVuYyAoKTsKKysKKysgIHJldHVybiAwOworK30K K2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtZGVsZXRlLmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1kZWxldGUuZXhwCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNDViYzY1MAorLS0tIC9kZXYvbnVsbAorKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRlbGV0ZS5leHAKK0BAIC0wLDAg KzEsMzggQEAKKysjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzZXQgdGVzdGZpbGUgIndh dGNocG9pbnQtZGVsZXRlIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytzZXQgYmluZmls ZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisrCisraWYgeyBbcHJlcGFyZV9mb3Jf dGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfV0gfSB7CisrICAg IHVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAorKyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBJdCBp cyBtb3JlIGNvbXBhdGlibGUgdGhpcyB3YXkuCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgY2Fu LXVzZS1ody13YXRjaHBvaW50cyAwIgorKworK2lmICFbcnVudG9fbWFpbl0geworKyAgICByZXR1 cm4gLTEKKyt9CisrCisrIyBFbnN1cmUgdGhlcmUgaXMgYSBwYXJlbnQgZnJhbWUgdG8gY3JlYXRl IHJlbGF0ZWQgYnBfd2F0Y2hwb2ludF9zY29wZS4KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAiYnJlYWstaGVyZSJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJy ZWFrLWhlcmUiICIuKiBicmVhay1oZXJlIC4qIgorKworK2dkYl90ZXN0ICJ3YXRjaCB4IiB7V2F0 Y2hwb2ludCBbMC05XSs6IHh9CisrCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtkZWxldGUgJGJwbnVt fQoKZGlmZiAtLWdpdCBhL2dkYi1iejY0Mjg3OS1lbGZyZWFkLXNpZ2ludC1zdGFsZS5wYXRjaCBi L2dkYi1iejY0Mjg3OS1lbGZyZWFkLXNpZ2ludC1zdGFsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi41YTA3OWVmCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6NjQy ODc5LWVsZnJlYWQtc2lnaW50LXN0YWxlLnBhdGNoCkBAIC0wLDAgKzEsODUgQEAKK2h0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAwMTkyLmh0bWwKK1N1Ympl Y3Q6IFtwYXRjaF0gRml4IEVMRiBzdGFsZSByZWZlcmVuY2UgIFtSZTogW3BhdGNoXSAuZ2RiX2lu ZGV4OiBEbyBub3QgY3Jhc2ggb24gTk9CSVRTXQorCitPbiBXZWQsIDA4IFNlcCAyMDEwIDIxOjQw OjEyICswMjAwLCBUb20gVHJvbWV5IHdyb3RlOgorPiA+Pj4+PiAiSmFuIiA9PSBKYW4gS3JhdG9j aHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gd3JpdGVzOgorPiAKKz4gSmFuPiB3aGlj aCBzaG91bGQgbm90IGJlIGZhdGFsIGJ1dCBkdWUgdG8gc29tZSBvdGhlciBidWdzIHRoZXJlaW4g aXQgY2FuCis+IEphbj4gY3Jhc2ggR0RCLgorPiAKKz4gSSBhbSBjdXJpb3VzIGFib3V0IHRoZXNl IG90aGVyIGJ1Z3MuCisKKysgICAgICAvKiBNZW1vcnkgZ2V0cyBwZXJtYW5lbnRseSByZWZlcmVu Y2VkIGZyb20gQUJGRCBhZnRlcgorKwkgYmZkX2dldF9zeW50aGV0aWNfc3ltdGFiIHNvIGl0IG11 c3Qgbm90IGdldCBmcmVlZCBiZWZvcmUgQUJGRCBnZXRzLgorKwkgSXQgaGFwcGVucyBvbmx5IGlu IHRoZSBjYXNlIHdoZW4gZWxmX3NsdXJwX3JlbG9jX3RhYmxlIHNlZXMKKysJIGFzZWN0aW9uLT5y ZWxvY2F0aW9uIE5VTEwuICBEZXRlcm1pbmluZyB3aGljaCBzZWN0aW9uIGlzIGFzZWN0aW9uIGlz CisrCSBkb25lIGJ5IF9iZmRfZWxmX2dldF9zeW50aGV0aWNfc3ltdGFiIHdoaWNoIGlzIGFsbCBh IGJmZAorKwkgaW1wbGVtZW50YXRpb24gZGV0YWlsLCB0aG91Z2guICAqLworCitUaGF0IGlzIGZy b206CisKKyMwICBpbiBlbGZfc2x1cnBfcmVsb2NfdGFibGVfZnJvbV9zZWN0aW9uIChhYmZkLCBh c2VjdCwgcmVsX2hkciwgcmVsb2NfY291bnQ9MTE3MCwgcmVsZW50cywgc3ltYm9scywgZHluYW1p Yz0xKSBhdCBlbGZjb2RlLmg6MTQ4MgorIzEgIGluIGJmZF9lbGY2NF9zbHVycF9yZWxvY190YWJs ZSAoYWJmZCwgYXNlY3QsIHN5bWJvbHMsIGR5bmFtaWM9MSkgYXQgZWxmY29kZS5oOjE1NjMKKyMy ICBpbiBfYmZkX2VsZl9nZXRfc3ludGhldGljX3N5bXRhYiAoYWJmZCwgc3ltY291bnQ9MCwgc3lt cywgZHluc3ltY291bnQ9MTc5MiwgZHluc3ltcywgcmV0KSBhdCBlbGYuYzo5MjY5CisjMyAgaW4g ZWxmX3N5bWZpbGVfcmVhZCAob2JqZmlsZSwgc3ltZmlsZV9mbGFncz02KSBhdCBlbGZyZWFkLmM6 ODA5CisKK1doZXJlCisJICBlbGZjb2RlLmg6ZWxmX3NsdXJwX3JlbG9jX3RhYmxlX2Zyb21fc2Vj dGlvbgorY29udGFpbnMKKyAgICAgICAgICBwcyA9IHN5bWJvbHMgKyBFTEZfUl9TWU0gKHJlbGEu cl9pbmZvKSAtIDE7CisgICAgICAgICAgcmVsZW50LT5zeW1fcHRyX3B0ciA9IHBzOworCitgc3lt Ym9scycgaGVyZSBpcyBlbGZfc3ltZmlsZV9yZWFkJ3MgYGR5bl9zeW1ib2xfdGFibGUnLiAgYGR5 bl9zeW1ib2xfdGFibGUnCitnb3QgaW1tZWRpYXRlbHkgeGZyZWUnZCBidXQgdGhlIGZyZWVkIG1l bW9yeSByZW1haW5lZCByZWZlcmVuY2VkIGJ5Cithc2VjdC0+cmVsb2NhdGlvbiAoY29udGFpbmlu ZyB0aGUgUkVMRU5UIG1lbW9yeSBhYm92ZSwgc3RvcmVkIHRoZXJlIGJ5CitlbGZfc2x1cnBfcmVs b2NfdGFibGUpLgorCithc2VjdC0+cmVsb2NhdGlvbiBwcm9iYWJseSBkb2VzIG5vdCBnZXQgdXNl ZCBpZiBBQkZEIGlzIG5vdCBiZWluZyByZWFkLWluIHRoZQorc2Vjb25kIHRpbWUsIHdoaWNoIGhh cHBlbnMgb25seSBpZiBPQkpGSUxFIGlzIGJlaW5nIGNyZWF0ZWQgdGhlIHNlY29uZCB0aW1lLAor d2hpY2ggaGFwcGVucyBkdWUgdG8gdGhlIGVycm9yIGNhbGwgaW4gdGhlIHByZXZpb3VzIG1haWwu CisKKworSSB3YXMgY3VyaW91cyB0aGVyZSBlbGZfc3ltZmlsZV9yZWFkIHVzZXMgMCBmb3IgQ09Q WV9OQU1FUyBpbiBhIHNpbWlsYXIgY2FzZToKKyAgICAgIGVsZl9zeW10YWJfcmVhZCAob2JqZmls ZSwgU1RfUkVHVUxBUiwgc3ltY291bnQsIHN5bWJvbF90YWJsZSwgMCk7Cit3aGVyZSBTWU1CT0xf VEFCTEUgaXMgYWxzbyBpbW1lZGlhdGVseSB4ZnJlZWQuICBCdXQgdGhhdCBzZWVtcyB0byBiZSBj b3JyZWN0IGFzCitlbGZfc2x1cnBfc3ltYm9sX3RhYmxlIHVzZXMgCisgICAgICBzeW1iYXNlID0g KGVsZl9zeW1ib2xfdHlwZSAqKSBiZmRfemFsbG9jIChhYmZkLCBhbXQpOworZm9yIHRoZSBjb250 ZW50IHdoZXJlIGxhdGVyIGVsZnJlYWQuYydzIFNZTUJPTF9UQUJMRSBwb2ludHMgdG8uICBPbmx5 IHRoZQorcG9pbnRlcnMgZ2V0IHhmcmVlZCB3aGljaCBpcyBPSy4KKworCitObyByZWdyZXNzaW9u cyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTRzbmFwc2hvdC1saW51eC1nbnUu CisKKworVGhhbmtzLAorSmFuCisKKworZ2RiLworMjAxMC0wOS0wOSAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJRml4IHN0YWxlIG1lbW9yeSByZWZlcmVu Y2VzLgorCSogZWxmcmVhZC5jOiBJbmNsdWRlIGxpYmJmZC5oLgorCShlbGZfc3ltZmlsZV9yZWFk KTogUmVwbGFjZSB4bWFsbG9jIGJ5IGJmZF9hbGxvYywgZHJvcCB4ZnJlZSwgbmV3CisJY29tbWVu dC4KKworLS0tIGEvZ2RiL2VsZnJlYWQuYworKysrIGIvZ2RiL2VsZnJlYWQuYworQEAgLTc5Miw4 ICs3OTMsMTQgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGlu dCBzeW1maWxlX2ZsYWdzKQorIAorICAgaWYgKHN0b3JhZ2VfbmVlZGVkID4gMCkKKyAgICAgewor LSAgICAgIGR5bl9zeW1ib2xfdGFibGUgPSAoYXN5bWJvbCAqKikgeG1hbGxvYyAoc3RvcmFnZV9u ZWVkZWQpOworLSAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGR5bl9zeW1ib2xfdGFibGUpOwor KyAgICAgIC8qIE1lbW9yeSBnZXRzIHBlcm1hbmVudGx5IHJlZmVyZW5jZWQgZnJvbSBBQkZEIGFm dGVyCisrCSBiZmRfZ2V0X3N5bnRoZXRpY19zeW10YWIgc28gaXQgbXVzdCBub3QgZ2V0IGZyZWVk IGJlZm9yZSBBQkZEIGdldHMuCisrCSBJdCBoYXBwZW5zIG9ubHkgaW4gdGhlIGNhc2Ugd2hlbiBl bGZfc2x1cnBfcmVsb2NfdGFibGUgc2VlcworKwkgYXNlY3Rpb24tPnJlbG9jYXRpb24gTlVMTC4g IERldGVybWluaW5nIHdoaWNoIHNlY3Rpb24gaXMgYXNlY3Rpb24gaXMKKysJIGRvbmUgYnkgX2Jm ZF9lbGZfZ2V0X3N5bnRoZXRpY19zeW10YWIgd2hpY2ggaXMgYWxsIGEgYmZkCisrCSBpbXBsZW1l bnRhdGlvbiBkZXRhaWwsIHRob3VnaC4gICovCisrCisrICAgICAgZHluX3N5bWJvbF90YWJsZSA9 IGJmZF9hbGxvYyAoYWJmZCwgc3RvcmFnZV9uZWVkZWQpOworICAgICAgIGR5bnN5bWNvdW50ID0g YmZkX2Nhbm9uaWNhbGl6ZV9keW5hbWljX3N5bXRhYiAob2JqZmlsZS0+b2JmZCwKKyAJCQkJCQkg ICAgIGR5bl9zeW1ib2xfdGFibGUpOworIAorCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjQ1NzczLWlm b3J0LWNhc2UtMW9mMy5wYXRjaCBiL2dkYi1iejY0NTc3My1pZm9ydC1jYXNlLTFvZjMucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM5Zjg4ZAotLS0gL2Rldi9udWxs CisrKyBiL2dkYi1iejY0NTc3My1pZm9ydC1jYXNlLTFvZjMucGF0Y2gKQEAgLTAsMCArMSwzMTMg QEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTExL21zZzAwMDg0 Lmh0bWwKK1N1YmplY3Q6IFtuZXcgdGVzdGNhc2VdIFJlZ3Jlc3Npb24gNy4xLT43LjIgZm9yIGlG b3J0ICBbUmU6IFtSRkEtdjJdIGR3YXJmIGRlYnVnIGZvcm1hdDogU3VwcG9ydCBEV19BVF92YXJp YWJsZV9wYXJhbWV0ZXIgYXR0cmlidXRlXQorCitPbiBGcmksIDIxIE1heSAyMDEwIDIyOjQ1OjM1 ICswMjAwLCBQaWVycmUgTXVsbGVyIHdyb3RlOgorPiAgIFRoYW5rcywgSSBjb21taXR0ZWQgdGhl IHBhdGNoLgorCitjb21taXQgNTcwZDVkMDFkZTM1ZWZmYWRhMjc3YTY5NTUyYzA5MDNhNDkyODI0 MQorQXV0aG9yOiBQaWVycmUgTXVsbGVyIDxtdWxsZXJAaWNzLnUtc3RyYXNiZy5mcj4KK0RhdGU6 ICAgRnJpIE1heSAyMSAyMDo0NToxOCAyMDEwICswMDAwCisKKwkqIGR3YXJmMnJlYWQuYyAobmV3 X3N5bWJvbCk6IEhhbmRsZSBEV19BVF92YXJpYWJsZV9wYXJhbWV0ZXIKKwlhdHRyaWJ1dGUuCisK KworUGxlYXNlIHJldmVydCB0aGlzIHBhdGNoLgorCis+RnJvbSB0aGUgRFdBUkYtNCBkZXNjcmlw dGlvbiBvZiBEV19BVF92YXJpYWJsZV9wYXJhbWV0ZXIgSSBkbyBub3QgdGhpbmsgaXQKK2NoYW5n ZXMgdGhlIGRhdGEgc3RydWN0dXJlcyBtZWFuaW5nIGluIGFueSB3YXkuICBJdCBqdXN0IHN0YXRl cyB3aGljaCBkYXRhIGNhbgorYmUgbW9kaWZpZWQgYnkgd2hvbS4gIEkgZG8gbm90IHRoaW5rIHRo aXMgaXMgdXNlZnVsIGZvciBHREIgaW4gYW55IHdheS4KKworCis+ID4gSSB0aGluayBpdCB3b3Vs ZCBiZSBpbXByb3ZlZCBieSBhIHRlc3QgY2FzZSwgYnV0IHRoYXQgaXMgdXAgdG8geW91LgorPiAK Kz4gICBUaGlzIHRlc3Qgd291bGQgYmUgcGFzY2FsIHNwZWNpZmljIGFueWhvdywKKworSSBiZWxp ZXZlIHRoZSBQYXNjYWwgY29tcGlsZXIgc2hvdWxkIGdlbmVyYXRlIGRpZmZlcmVudCBkZWJ1ZyBp bmZvLiAgRm9yIHRoZQorYHZhcicga2V5d29yZCB5b3UgY2FuIGVpdGhlciAoYSkgdXNlIERXX1RB R19yZWZlcmVuY2VfdHlwZSBhbmQgcG9pbnQKK0RXX0FUX2xvY2F0aW9uIGF0IHRoZSBwb2ludGVy IG9yIChiKSB1c2UgRFdfT1BfZGVyZWYgKGFzIGlGb3J0IGRvZXMpIG9uIHRoZQorcGFzc2VkIHBv aW50ZXIgYW5kIHBvaW50IERXX0FUX2xvY2F0aW9uIGF0IHRoZSB2YWx1ZSBpdHNlbGYuCitEV19B VF92YXJpYWJsZV9wYXJhbWV0ZXIgd291bGQgYmUgdHJ1ZSBvbmx5IGZvciB0aGUgKGEpIGNob2lj ZS4KKworMQkgIHN1YnJvdXRpbmUgZiAoaSkKKzIJICBpbnRlZ2VyIGkKKzMJICBpID0gMgorNAkg IGVuZAorNQkgIHByb2dyYW0gdmFycGFyYW0KKzYJICBpbnRlZ2VyIG0KKzcJICBtID0gMQorOAkg IGNhbGwgZiAobSkKKzkJICB3cml0ZSgqLCopIG0KKzEwCSAgZW5kCisKK2ZvciBpRm9ydCAxMS4x IDIwMTAwODA2IGl0IHJlZ3Jlc3NlZCB0aGlzIGNvZGUsIEdEQi03LjEgZGlzcGxheWVkOgorCitC cmVha3BvaW50IDEsIGYgKGk9MSkgYXQgdmFycGFyYW0uZjkwOjMKKzMJICBpID0gMgorKGdkYikg cCBpCiskMSA9IDEKKword2hpbGUgR0RCLTcuMiBkaXNwbGF5czoKKworQnJlYWtwb2ludCAyLCBm IChpPUAweDEpIGF0IHZhcnBhcmFtLmY5MDozCiszCSAgaSA9IDIKKyhnZGIpIHAgaQorJDEgPSAo UkVGIFRPIC0+ICggSU5URUdFUig0KSApKSBAMHgxOiA8ZXJyb3IgcmVhZGluZyB2YXJpYWJsZT4K KworKG5vdGUgdGhhdCBgMHgxJyBHREIgY29uc2lkZXJzIGFzIGFuIGFkZHJlc3MgaGVyZSkKKwor CisKK0EgbmV3IHRlc3RjYXNlIGZvciB0aGUgaUZvcnQgdXNhZ2UgY2FzZSBpcyBhdHRhY2hlZC4K KworTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTE0c25h cHNob3QtbGludXgtZ251LgorCitJIHdpbGwgdGhlbiBjaGVjay1pbiB0aGUgdGVzdGNhc2Ugb3Ig eW91IGNhbiBvciBzby4KKworCitSZWdhcmRzLAorSmFuCisKKworZ2RiLworMjAxMC0xMS0wNCAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJUmV2ZXJ0Ogor CTIwMTAtMDUtMjEgIFBpZXJyZSBNdWxsZXIgIDxtdWxsZXJAaWNzLnUtc3RyYXNiZy5mcj4KKwkq IGR3YXJmMnJlYWQuYyAobmV3X3N5bWJvbCk6IEhhbmRsZSBEV19BVF92YXJpYWJsZV9wYXJhbWV0 ZXIKKwlhdHRyaWJ1dGUuCisKK2dkYi90ZXN0c3VpdGUvCisyMDEwLTExLTA0ICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIGR3Mi1pZm9ydC1wYXJhbWV0 ZXItZGVidWcuUzogTmV3IGZpbGUuCisJKiBkdzItaWZvcnQtcGFyYW1ldGVyLmM6IE5ldyBmaWxl LgorCSogZHcyLWlmb3J0LXBhcmFtZXRlci5leHA6IE5ldyBmaWxlLgorCitJbmRleDogZ2RiLTcu Mi9nZGIvZHdhcmYycmVhZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5vcmlnL2dkYi9kd2Fy ZjJyZWFkLmMJMjAxMC0xMS0wNyAwNToyNDowMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4y L2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0xMS0wNyAwNTozNjozNC4wMDAwMDAwMDAgKzAxMDAKK0BA IC0xMDQ3NCwxNCArMTA0NzQsNiBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0CisgCSAgICB7CisgCSAgICAgIGR3YXJmMl9jb25zdF92YWx1ZSAoYXR0ciwgc3ltLCBj dSk7CisgCSAgICB9CistCSAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX3ZhcmlhYmxl X3BhcmFtZXRlciwgY3UpOworLQkgIGlmIChhdHRyICYmIERXX1VOU05EIChhdHRyKSkKKy0JICAg IHsKKy0JICAgICAgc3RydWN0IHR5cGUgKnJlZl90eXBlOworLQorLQkgICAgICByZWZfdHlwZSA9 IGxvb2t1cF9yZWZlcmVuY2VfdHlwZSAoU1lNQk9MX1RZUEUgKHN5bSkpOworLQkgICAgICBTWU1C T0xfVFlQRSAoc3ltKSA9IHJlZl90eXBlOworLQkgICAgfQorIAorIAkgIGFkZF9zeW1ib2xfdG9f bGlzdCAoc3ltLCBjdS0+bGlzdF9pbl9zY29wZSk7CisgCSAgYnJlYWs7CitJbmRleDogZ2RiLTcu Mi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWlmb3J0LXBhcmFtZXRlci1kZWJ1Zy5TCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCisrKysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWlmb3J0LXBhcmFt ZXRlci1kZWJ1Zy5TCTIwMTAtMTEtMDcgMDU6MzY6MTguMDAwMDAwMDAwICswMTAwCitAQCAtMCww ICsxLDEyMiBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVi dWdnZXIuCisrCisrICAgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKwku c2VjdGlvbiAuZGVidWdfaW5mbworKy5MY3UxX2JlZ2luOgorKwkvKiBDVSBoZWFkZXIgKi8KKysJ LjRieXRlCS5MY3UxX2VuZCAtIC5MY3UxX3N0YXJ0CQkvKiBMZW5ndGggb2YgQ29tcGlsYXRpb24g VW5pdCAqLworKy5MY3UxX3N0YXJ0OgorKwkuMmJ5dGUJMgkJCQkvKiBEV0FSRiBWZXJzaW9uICov CisrCS40Ynl0ZQkuTGFiYnJldjFfYmVnaW4JCQkvKiBPZmZzZXQgaW50byBhYmJyZXYgc2VjdGlv biAqLworKwkuYnl0ZQk0CQkJCS8qIFBvaW50ZXIgc2l6ZSAqLworKworKwkvKiBDVSBkaWUgKi8K KysJLnVsZWIxMjggMQkJCQkvKiBBYmJyZXY6IERXX1RBR19jb21waWxlX3VuaXQgKi8KKysJLmFz Y2lpCSJmaWxlMS50eHRcMCIJCQkvKiBEV19BVF9uYW1lICovCisrCS5hc2NpaQkiR05VIEMgMy4z LjNcMCIJCQkvKiBEV19BVF9wcm9kdWNlciAqLworKwkuYnl0ZQkxCQkJCS8qIERXX0FUX2xhbmd1 YWdlIChDKSAqLworKwkuNGJ5dGUJZnVuYwkJCQkvKiBEV19BVF9sb3dfcGMgKi8KKysJLjRieXRl CW1haW4JCQkJLyogRFdfQVRfaGlnaF9wYyAqLworKworKwkudWxlYjEyOAkyCQkJLyogQWJicmV2 OiBEV19UQUdfc3VicHJvZ3JhbSAqLworKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2V4dGVybmFsICov CisrCS5hc2NpaQkJImZ1bmNcMCIJCS8qIERXX0FUX25hbWUgKi8KKysJLjRieXRlCQlmdW5jCQkJ LyogRFdfQVRfbG93X3BjICovCisrCS40Ynl0ZQkJbWFpbgkJCS8qIERXX0FUX2hpZ2hfcGMgKi8K KysKKysJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIgKi8K KysJLmFzY2lpCQkicGFyYW1cMCIJCS8qIERXX0FUX25hbWUgKi8KKysJLmJ5dGUJCTEJCQkvKiBE V19BVF92YXJpYWJsZV9wYXJhbWV0ZXIgKi8KKysJLjRieXRlCQkuTHR5cGVfaW50IC0gLkxjdTFf YmVnaW4JLyogRFdfQVRfdHlwZSAqLworKwkuYnl0ZQkJMmYgLSAxZgkJCS8qIERXX0FUX2xvY2F0 aW9uICovCisrMToJLmJ5dGUJCTMJCQkvKiAgIERXX09QX2FkZHIgKi8KKysJLjRieXRlCQlwdHIJ CQkvKiAgIDxhZGRyPiAqLworKwkuYnl0ZQkJMHg2CQkJLyogICBEV19PUF9kZXJlZiAqLworKzI6 CisrCisrCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIGZ1bmMgKi8KKysKKysuTHR5 cGVfaW50OgorKwkudWxlYjEyOAk0CQkJLyogQWJicmV2OiBEV19UQUdfYmFzZV90eXBlICovCisr CS5hc2NpaQkJImludFwwIgkJCS8qIERXX0FUX25hbWUgKi8KKysJLmJ5dGUJCTQJCQkvKiBEV19B VF9ieXRlX3NpemUgKi8KKysJLmJ5dGUJCTUJCQkvKiBEV19BVF9lbmNvZGluZyAqLworKworKwku Ynl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLworKy5MY3UxX2VuZDoKKysKKysv KiBBYmJyZXYgdGFibGUgKi8KKysJLnNlY3Rpb24gLmRlYnVnX2FiYnJldgorKy5MYWJicmV2MV9i ZWdpbjoKKysJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MTEJ CQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS5ieXRlCQkxCQkJLyogaGFzX2NoaWxkcmVu ICovCisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVsZWIxMjgJMHg4CQkJ LyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJMHgyNQkJCS8qIERXX0FUX3Byb2R1Y2Vy ICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4 MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLworKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2Rh dGExICovCisrCS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8KKysJLnVsZWIxMjgJ MHgxCQkJLyogRFdfRk9STV9hZGRyICovCisrCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdo X3BjICovCisrCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLworKwkuYnl0ZQkJMHgw CQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwor KwkudWxlYjEyOAkyCQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgyZQkJCS8qIERX X1RBR19zdWJwcm9ncmFtICovCisrCS5ieXRlCQkxCQkJLyogaGFzX2NoaWxkcmVuICovCisrCS51 bGViMTI4CTB4M2YJCQkvKiBEV19BVF9leHRlcm5hbCAqLworKwkudWxlYjEyOAkweGMJCQkvKiBE V19GT1JNX2ZsYWcgKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLworKwkudWxl YjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweDExCQkJLyogRFdf QVRfbG93X3BjICovCisrCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLworKwkudWxl YjEyOAkweDEyCQkJLyogRFdfQVRfaGlnaF9wYyAqLworKwkudWxlYjEyOAkweDEJCQkvKiBEV19G T1JNX2FkZHIgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4 MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysKKysJLnVsZWIxMjgJMwkJCS8qIEFiYnJldiBjb2RlICov CisrCS51bGViMTI4CTB4MDUJCQkvKiBEV19UQUdfZm9ybWFsX3BhcmFtZXRlciAqLworKwkuYnl0 ZQkJMAkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1l ICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4 NGIJCQkvKiBEV19BVF92YXJpYWJsZV9wYXJhbWV0ZXIgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyog RFdfRk9STV9kYXRhMSAqLworKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLworKwku dWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCisrCS51bGViMTI4CTB4MgkJCS8qIERX X0FUX2xvY2F0aW9uICovCisrCS51bGViMTI4CTB4YQkJCS8qIERXX0ZPUk1fYmxvY2sxICovCisr CS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5h dG9yICovCisrCisrCS51bGViMTI4CTQJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkw eDI0CQkJLyogRFdfVEFHX2Jhc2VfdHlwZSAqLworKwkuYnl0ZQkJMAkJCS8qIGhhc19jaGlsZHJl biAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCisrCS51bGViMTI4CTB4OAkJ CS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4YgkJCS8qIERXX0FUX2J5dGVfc2l6 ZSAqLworKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCisrCS51bGViMTI4CTB4 M2UJCQkvKiBEV19BVF9lbmNvZGluZyAqLworKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2Rh dGExICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkv KiBUZXJtaW5hdG9yICovCisrCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5i eXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCitJbmRleDogZ2RiLTcuMi9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvZHcyLWlmb3J0LXBhcmFtZXRlci5jCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9u dWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuMi9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWlmb3J0LXBhcmFtZXRlci5jCTIwMTAtMTEtMDcgMDU6 MzY6MTguMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDMxIEBACisrLyogVGhpcyB0ZXN0Y2Fz ZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAx MCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCisrCisraW50IHZhbHVlID0gMHhkZWFkZjAwZDsKKytpbnQg KnB0ciA9ICZ2YWx1ZTsKKysKKyt2b2lkCisrZnVuYyAodm9pZCkKKyt7CisrfQorKworK2ludAor K21haW4gKHZvaWQpCisreworKyAgZnVuYyAoKTsKKysgIHJldHVybiAwOworK30KK0luZGV4OiBn ZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaWZvcnQtcGFyYW1ldGVyLmV4cAor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAorKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1pZm9ydC1wYXJh bWV0ZXIuZXhwCTIwMTAtMTEtMDcgMDU6MzY6MTguMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsx LDQwIEBACisrIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBWZXJpZnkgRFdfQVRfdmFy aWFibGVfcGFyYW1ldGVyIGRvZXMgbm90IG1vZGlmeSB0aGUgZGF0YSBzdHJ1Y3R1cmVzIG1lYW5p bmcKKysjIGZvciBHREIsIGFzIGJlaW5nIHVzZWQgYnkgaUZvcnQuCisrCisrIyBUaGlzIHRlc3Qg Y2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yIGFuZCB1c2Ug Z2FzLgorKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcgb2YgbGlrZWx5IHRhcmdldHMuCisraWYg eyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KKysgICAgJiYgIVtpc3RhcmdldCAqLSotZ251Kl0KKysg ICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KKysgICAgJiYgIVtpc3RhcmdldCAqLSotb3BlbmJz ZCpdCisrICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFiaSpdCisrICAgICYmICFbaXN0YXJnZXQg cG93ZXJwYy0qLWVhYmkqXX0geworKyAgICByZXR1cm4gMAorK30KKysKKytzZXQgdGVzdGZpbGUg ImR3Mi1pZm9ydC1wYXJhbWV0ZXIiCisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rl c3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gW2xpc3QgJHt0ZXN0ZmlsZX0uYyAke3Rlc3RmaWxlfS1k ZWJ1Zy5TXSB7bm9kZWJ1Z31dIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYgIVtydW50 byBmdW5jXSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytnZGJfdGVzdCAicC94IHBhcmFtIiAi ID0gMHhkZWFkZjAwZCIKCmRpZmYgLS1naXQgYS9nZGItYno2NDU3NzMtaWZvcnQtY2FzZS0yb2Yz LnBhdGNoIGIvZ2RiLWJ6NjQ1NzczLWlmb3J0LWNhc2UtMm9mMy5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODcxYTcwCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6 NjQ1NzczLWlmb3J0LWNhc2UtMm9mMy5wYXRjaApAQCAtMCwwICsxLDIwNCBAQAoraHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMTEvbXNnMDAxMDcuaHRtbAorU3ViamVj dDogW3BhdGNoIDEvMl0gQ29kZSBjbGVhbnVwOiBOZXcgaW5pdF9vbmVfY29tcF91bml0CisKK0hp LAorCit1bmlmeSBzb21lIGNvZGUgaW50byBhIGZ1bmN0aW9uLCB0byBiZSBleHRlbmRlZCBpbiB0 aGUgbmV4dCBwYXRjaC4KKworCitUaGFua3MsCitKYW4KKworCitnZGIvCisyMDEwLTExLTA2ICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwlDb2RlIGNsZWFu dXAuCisJKiBkd2FyZjJyZWFkLmMgKGFsbG9jX29uZV9jb21wX3VuaXQpOiBSZW5hbWUgcHJvdG90 eXBlIHRvIC4uLgorCShpbml0X29uZV9jb21wX3VuaXQpOiAuLi4gdGhpcyBvbmUuCisJKHByZXBh cmVfb25lX2NvbXBfdW5pdCk6IE5ldyBwcm90b3R5cGUuCisJKGR3Ml9yZXF1aXJlX2xpbmVfaGVh ZGVyLCBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0KTogVXNlCisJaW5pdF9vbmVfY29tcF91bml0 LgorCShwcm9jZXNzX3BzeW10YWJfY29tcF91bml0KTogVXNlIHByZXBhcmVfb25lX2NvbXBfdW5p dC4KKwkobG9hZF9wYXJ0aWFsX2NvbXBfdW5pdCk6IFJlbW92ZSB2YXJpYWJsZSBhdHRyLiAgVXNl CisJaW5pdF9vbmVfY29tcF91bml0IHdpdGggeG1hbGxvYy4gIFVzZSBwcmVwYXJlX29uZV9jb21w X3VuaXQuCisJKGxvYWRfZnVsbF9jb21wX3VuaXQpOiBVc2UgaW5pdF9vbmVfY29tcF91bml0IHdp dGggeG1hbGxvYy4gIFVzZQorCXByZXBhcmVfb25lX2NvbXBfdW5pdC4KKwkocmVhZF9zaWduYXR1 cmVkX3R5cGUpOiBSZW1vdmUgdmFyaWFibGUgYXR0ci4gIFVzZSBpbml0X29uZV9jb21wX3VuaXQu CisJVXNlIHByZXBhcmVfb25lX2NvbXBfdW5pdC4KKwkoYWxsb2Nfb25lX2NvbXBfdW5pdCk6IFJl bmFtZSB0byAuLi4KKwkoaW5pdF9vbmVfY29tcF91bml0KTogLi4uIGhlcmUgYW5kIHJlbW92ZSB0 aGVyZSBjYWxsb2MsIG5ldyBwYXJhbWV0ZXIKKwljdS4KKwkocHJlcGFyZV9vbmVfY29tcF91bml0 KTogTmV3IGZ1bmN0aW9uLgorCitJbmRleDogZ2RiLTcuMi9nZGIvZHdhcmYycmVhZC5jCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuMi5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0xMS0wNyAwNToz NjozNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0x MS0wNyAwNTozODoyMS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMjE0LDcgKzEyMTQsMTEgQEAgc3Rh dGljIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmR3YXJmMgorIHN0YXRpYyBzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICpkd2FyZjJfZmluZF9jb21wX3VuaXQKKyAgICh1bnNpZ25lZCBpbnQg b2Zmc2V0LCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisgCistc3RhdGljIHN0cnVjdCBkd2Fy ZjJfY3UgKmFsbG9jX29uZV9jb21wX3VuaXQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKytz dGF0aWMgdm9pZCBpbml0X29uZV9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorKwkJ CQlzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisrCisrc3RhdGljIHZvaWQgcHJlcGFyZV9vbmVf Y29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKKysJCQkJICAgc3RydWN0IGRpZV9pbmZv ICpjb21wX3VuaXRfZGllKTsKKyAKKyBzdGF0aWMgdm9pZCBmcmVlX29uZV9jb21wX3VuaXQgKHZv aWQgKik7CisgCitAQCAtMTk4MCwxMCArMTk4NCw3IEBAIGR3Ml9yZXF1aXJlX2xpbmVfaGVhZGVy IChzdHJ1Y3Qgb2JqZmlsZSAKKyAgICAgcmV0dXJuOworICAgdGhpc19jdS0+di5xdWljay0+cmVh ZF9saW5lcyA9IDE7CisgCistICBtZW1zZXQgKCZjdSwgMCwgc2l6ZW9mIChjdSkpOworLSAgY3Uu b2JqZmlsZSA9IG9iamZpbGU7CistICBvYnN0YWNrX2luaXQgKCZjdS5jb21wX3VuaXRfb2JzdGFj ayk7CistCisrICBpbml0X29uZV9jb21wX3VuaXQgKCZjdSwgb2JqZmlsZSk7CisgICBjbGVhbnVw cyA9IG1ha2VfY2xlYW51cCAoZnJlZV9zdGFja19jb21wX3VuaXQsICZjdSk7CisgCisgICBkd2Fy ZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCAmZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvKTsKK0BA IC0yOTc4LDEwICsyOTc5LDcgQEAgcHJvY2Vzc19wc3ltdGFiX2NvbXBfdW5pdCAoc3RydWN0IG9i amZpbAorICAgQ09SRV9BRERSIGJlc3RfbG93cGMgPSAwLCBiZXN0X2hpZ2hwYyA9IDA7CisgICBz dHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyByZWFkZXJfc3BlY3M7CisgCistICBtZW1zZXQgKCZjdSwg MCwgc2l6ZW9mIChjdSkpOworLSAgY3Uub2JqZmlsZSA9IG9iamZpbGU7CistICBvYnN0YWNrX2lu aXQgKCZjdS5jb21wX3VuaXRfb2JzdGFjayk7CistCisrICBpbml0X29uZV9jb21wX3VuaXQgKCZj dSwgb2JqZmlsZSk7CisgICBiYWNrX3RvX2lubmVyID0gbWFrZV9jbGVhbnVwIChmcmVlX3N0YWNr X2NvbXBfdW5pdCwgJmN1KTsKKyAKKyAgIGluZm9fcHRyID0gcGFydGlhbF9yZWFkX2NvbXBfdW5p dF9oZWFkICgmY3UuaGVhZGVyLCBpbmZvX3B0ciwKK0BAIC0zMDM1LDEyICszMDMzLDcgQEAgcHJv Y2Vzc19wc3ltdGFiX2NvbXBfdW5pdCAoc3RydWN0IG9iamZpbAorICAgICAgIHJldHVybiBpbmZv X3B0cjsKKyAgICAgfQorIAorLSAgLyogU2V0IHRoZSBsYW5ndWFnZSB3ZSdyZSBkZWJ1Z2dpbmcu ICAqLworLSAgYXR0ciA9IGR3YXJmMl9hdHRyIChjb21wX3VuaXRfZGllLCBEV19BVF9sYW5ndWFn ZSwgJmN1KTsKKy0gIGlmIChhdHRyKQorLSAgICBzZXRfY3VfbGFuZ3VhZ2UgKERXX1VOU05EIChh dHRyKSwgJmN1KTsKKy0gIGVsc2UKKy0gICAgc2V0X2N1X2xhbmd1YWdlIChsYW5ndWFnZV9taW5p bWFsLCAmY3UpOworKyAgcHJlcGFyZV9vbmVfY29tcF91bml0ICgmY3UsIGNvbXBfdW5pdF9kaWUp OworIAorICAgLyogQWxsb2NhdGUgYSBuZXcgcGFydGlhbCBzeW1ib2wgdGFibGUgc3RydWN0dXJl LiAgKi8KKyAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoY29tcF91bml0X2RpZSwgRFdfQVRfbmFtZSwg JmN1KTsKK0BAIC0zMjYzLDcgKzMyNTYsOCBAQCBsb2FkX3BhcnRpYWxfY29tcF91bml0IChzdHJ1 Y3QgZHdhcmYyX3BlCisgICBpbmZvX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZm ZXIgKyB0aGlzX2N1LT5vZmZzZXQ7CisgICBiZWdfb2ZfY29tcF91bml0ID0gaW5mb19wdHI7Cisg CistICBjdSA9IGFsbG9jX29uZV9jb21wX3VuaXQgKG9iamZpbGUpOworKyAgY3UgPSB4bWFsbG9j IChzaXplb2YgKCpjdSkpOworKyAgaW5pdF9vbmVfY29tcF91bml0IChjdSwgb2JqZmlsZSk7Cisg CisgICAvKiA/Pz8gTWlzc2luZyBjbGVhbnVwIGZvciBDVT8gICovCisgCitAQCAtMzI5MCwxMiAr MzI4NCw3IEBAIGxvYWRfcGFydGlhbF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGUKKyAgIGlu Zm9fcHRyID0gcmVhZF9mdWxsX2RpZSAoJnJlYWRlcl9zcGVjcywgJmNvbXBfdW5pdF9kaWUsIGlu Zm9fcHRyLAorIAkJCSAgICAmaGFzX2NoaWxkcmVuKTsKKyAKKy0gIC8qIFNldCB0aGUgbGFuZ3Vh Z2Ugd2UncmUgZGVidWdnaW5nLiAgKi8KKy0gIGF0dHIgPSBkd2FyZjJfYXR0ciAoY29tcF91bml0 X2RpZSwgRFdfQVRfbGFuZ3VhZ2UsIGN1KTsKKy0gIGlmIChhdHRyKQorLSAgICBzZXRfY3VfbGFu Z3VhZ2UgKERXX1VOU05EIChhdHRyKSwgY3UpOworLSAgZWxzZQorLSAgICBzZXRfY3VfbGFuZ3Vh Z2UgKGxhbmd1YWdlX21pbmltYWwsIGN1KTsKKysgIHByZXBhcmVfb25lX2NvbXBfdW5pdCAoY3Us IGNvbXBfdW5pdF9kaWUpOworIAorICAgLyogQ2hlY2sgaWYgY29tcCB1bml0IGhhc19jaGlsZHJl bi4KKyAgICAgIElmIHNvLCByZWFkIHRoZSByZXN0IG9mIHRoZSBwYXJ0aWFsIHN5bWJvbHMgZnJv bSB0aGlzIGNvbXAgdW5pdC4KK0BAIC00MjI3LDcgKzQyMTYsOCBAQCBsb2FkX2Z1bGxfY29tcF91 bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jCisgICBpbmZvX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmls ZS0+aW5mby5idWZmZXIgKyBvZmZzZXQ7CisgICBiZWdfb2ZfY29tcF91bml0ID0gaW5mb19wdHI7 CisgCistICBjdSA9IGFsbG9jX29uZV9jb21wX3VuaXQgKG9iamZpbGUpOworKyAgY3UgPSB4bWFs bG9jIChzaXplb2YgKCpjdSkpOworKyAgaW5pdF9vbmVfY29tcF91bml0IChjdSwgb2JqZmlsZSk7 CisgCisgICAvKiBJZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgbG9hZGluZywgcmVsZWFzZSBvdXIg c3RvcmFnZS4gICovCisgICBmcmVlX2N1X2NsZWFudXAgPSBtYWtlX2NsZWFudXAgKGZyZWVfb25l X2NvbXBfdW5pdCwgY3UpOworQEAgLTQyNTQsMTEgKzQyNDQsNyBAQCBsb2FkX2Z1bGxfY29tcF91 bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jCisgICAgICBhbGwgb2JqZmlsZXMgbmVlZGVkIGZvciBy ZWZlcmVuY2VzIGhhdmUgYmVlbiBsb2FkZWQgeWV0LCBhbmQgc3ltYm9sCisgICAgICB0YWJsZSBw cm9jZXNzaW5nIGlzbid0IGluaXRpYWxpemVkLiAgQnV0IHdlIGhhdmUgdG8gc2V0IHRoZSBDVSBs YW5ndWFnZSwKKyAgICAgIG9yIHdlIHdvbid0IGJlIGFibGUgdG8gYnVpbGQgdHlwZXMgY29ycmVj dGx5LiAgKi8KKy0gIGF0dHIgPSBkd2FyZjJfYXR0ciAoY3UtPmRpZXMsIERXX0FUX2xhbmd1YWdl LCBjdSk7CistICBpZiAoYXR0cikKKy0gICAgc2V0X2N1X2xhbmd1YWdlIChEV19VTlNORCAoYXR0 ciksIGN1KTsKKy0gIGVsc2UKKy0gICAgc2V0X2N1X2xhbmd1YWdlIChsYW5ndWFnZV9taW5pbWFs LCBjdSk7CisrICBwcmVwYXJlX29uZV9jb21wX3VuaXQgKGN1LCBjdS0+ZGllcyk7CisgCisgICAv KiBTaW1pbGFybHksIGlmIHdlIGRvIG5vdCByZWFkIHRoZSBwcm9kdWNlciwgd2UgY2FuIG5vdCBh cHBseQorICAgICAgcHJvZHVjZXItc3BlY2lmaWMgaW50ZXJwcmV0YXRpb24uICAqLworQEAgLTEy NjE3LDE3ICsxMjYwMywxNSBAQCByZWFkX3NpZ25hdHVyZWRfdHlwZSAoc3RydWN0IG9iamZpbGUg Km9iCisgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdTsKKyAgIFVMT05HRVNUIHNpZ25hdHVyZTsKKyAg IHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvLCAqZnJlZV9jdV9jbGVhbnVwOworLSAgc3RydWN0IGF0 dHJpYnV0ZSAqYXR0cjsKKyAKKyAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsICZkd2Fy ZjJfcGVyX29iamZpbGUtPnR5cGVzKTsKKyAgIHR5cGVzX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmls ZS0+dHlwZXMuYnVmZmVyICsgdHlwZV9zaWctPm9mZnNldDsKKyAKKyAgIGdkYl9hc3NlcnQgKHR5 cGVfc2lnLT5wZXJfY3UuY3UgPT0gTlVMTCk7CisgCistICBjdSA9IHhtYWxsb2MgKHNpemVvZiAo c3RydWN0IGR3YXJmMl9jdSkpOworLSAgbWVtc2V0IChjdSwgMCwgc2l6ZW9mIChzdHJ1Y3QgZHdh cmYyX2N1KSk7CistICBvYnN0YWNrX2luaXQgKCZjdS0+Y29tcF91bml0X29ic3RhY2spOworLSAg Y3UtPm9iamZpbGUgPSBvYmpmaWxlOworKyAgY3UgPSB4bWFsbG9jIChzaXplb2YgKCpjdSkpOwor KyAgaW5pdF9vbmVfY29tcF91bml0IChjdSwgb2JqZmlsZSk7CisrCisgICB0eXBlX3NpZy0+cGVy X2N1LmN1ID0gY3U7CisgICBjdS0+cGVyX2N1ID0gJnR5cGVfc2lnLT5wZXJfY3U7CisgCitAQCAt MTI2NTksMTEgKzEyNjQzLDcgQEAgcmVhZF9zaWduYXR1cmVkX3R5cGUgKHN0cnVjdCBvYmpmaWxl ICpvYgorICAgICAgYWxsIG9iamZpbGVzIG5lZWRlZCBmb3IgcmVmZXJlbmNlcyBoYXZlIGJlZW4g bG9hZGVkIHlldCwgYW5kIHN5bWJvbAorICAgICAgdGFibGUgcHJvY2Vzc2luZyBpc24ndCBpbml0 aWFsaXplZC4gIEJ1dCB3ZSBoYXZlIHRvIHNldCB0aGUgQ1UgbGFuZ3VhZ2UsCisgICAgICBvciB3 ZSB3b24ndCBiZSBhYmxlIHRvIGJ1aWxkIHR5cGVzIGNvcnJlY3RseS4gICovCistICBhdHRyID0g ZHdhcmYyX2F0dHIgKGN1LT5kaWVzLCBEV19BVF9sYW5ndWFnZSwgY3UpOworLSAgaWYgKGF0dHIp CistICAgIHNldF9jdV9sYW5ndWFnZSAoRFdfVU5TTkQgKGF0dHIpLCBjdSk7CistICBlbHNlCist ICAgIHNldF9jdV9sYW5ndWFnZSAobGFuZ3VhZ2VfbWluaW1hbCwgY3UpOworKyAgcHJlcGFyZV9v bmVfY29tcF91bml0IChjdSwgY3UtPmRpZXMpOworIAorICAgZG9fY2xlYW51cHMgKGJhY2tfdG8p OworIAorQEAgLTEzNzU1LDE1ICsxMzczNSwyOSBAQCBkd2FyZjJfZmluZF9jb21wX3VuaXQgKHVu c2lnbmVkIGludCBvZmZzCisgICByZXR1cm4gdGhpc19jdTsKKyB9CisgCistLyogTWFsbG9jIHNw YWNlIGZvciBhIGR3YXJmMl9jdSBmb3IgT0JKRklMRSBhbmQgaW5pdGlhbGl6ZSBpdC4gICovCisr LyogSW5pdGlhbGl6ZSBkd2FyZjJfY3UgQ1UgZm9yIE9CSkZJTEUgaW4gYSBwcmUtYWxsb2NhdGVk IHNwYWNlLiAgKi8KKyAKKy1zdGF0aWMgc3RydWN0IGR3YXJmMl9jdSAqCistYWxsb2Nfb25lX2Nv bXBfdW5pdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisrc3RhdGljIHZvaWQKKytpbml0X29u ZV9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfY3UgKmN1LCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSkKKyB7CistICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSA9IHhjYWxsb2MgKDEsIHNpemVvZiAoc3Ry dWN0IGR3YXJmMl9jdSkpOworKyAgbWVtc2V0IChjdSwgMCwgc2l6ZW9mICgqY3UpKTsKKyAgIGN1 LT5vYmpmaWxlID0gb2JqZmlsZTsKKyAgIG9ic3RhY2tfaW5pdCAoJmN1LT5jb21wX3VuaXRfb2Jz dGFjayk7CistICByZXR1cm4gY3U7CisrfQorKworKy8qIEluaXRpYWlsaXplIGJhc2ljIGZpZWxk cyBvZiBkd2FyZl9jdSBDVSBhY2NvcmRpbmcgdG8gRElFIENPTVBfVU5JVF9ESUUuICAqLworKwor K3N0YXRpYyB2b2lkCisrcHJlcGFyZV9vbmVfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX2N1ICpj dSwgc3RydWN0IGRpZV9pbmZvICpjb21wX3VuaXRfZGllKQorK3sKKysgIHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHI7CisrCisrICAvKiBTZXQgdGhlIGxhbmd1YWdlIHdlJ3JlIGRlYnVnZ2luZy4gICov CisrICBhdHRyID0gZHdhcmYyX2F0dHIgKGNvbXBfdW5pdF9kaWUsIERXX0FUX2xhbmd1YWdlLCBj dSk7CisrICBpZiAoYXR0cikKKysgICAgc2V0X2N1X2xhbmd1YWdlIChEV19VTlNORCAoYXR0ciks IGN1KTsKKysgIGVsc2UKKysgICAgc2V0X2N1X2xhbmd1YWdlIChsYW5ndWFnZV9taW5pbWFsLCBj dSk7CisgfQorIAorIC8qIFJlbGVhc2Ugb25lIGNhY2hlZCBjb21waWxhdGlvbiB1bml0LCBDVS4g IFdlIHVubGluayBpdCBmcm9tIHRoZSB0cmVlCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjQ1NzczLWlm b3J0LWNhc2UtM29mMy5wYXRjaCBiL2dkYi1iejY0NTc3My1pZm9ydC1jYXNlLTNvZjMucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg0ZjlkMgotLS0gL2Rldi9udWxs CisrKyBiL2dkYi1iejY0NTc3My1pZm9ydC1jYXNlLTNvZjMucGF0Y2gKQEAgLTAsMCArMSw0NDgg QEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTExL21zZzAwMTA4 Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaCAyLzJdIGlGb3J0IGNvbXBhdC46IGNhc2UgaW5zZW5zaXRp dmUgc3ltYm9scyAoUFIgMTEzMTMpCisKK0hpLAorCitpRm9ydCAoSW50ZWwgRm9ydHJhbiBjb21w aWxlcikgcHJvZHVjZXMgRElFcyBsaWtlOgorCisgPDE+PDFkYz46IEFiYnJldiBOdW1iZXI6IDYg KERXX1RBR19tb2R1bGUpCisgICAgPDFlMD4gICBEV19BVF9uYW1lICAgICAgICA6IE1PRDEgICAg CisKK0J1dCBGb3J0cmFuIGlzIGNhc2UgaW5zZW5zaXRpdmUsIHRoZXJlZm9yZSBHREIgbG93ZXJj YXNlcyBhbnkgdXNlciBpbnB1dAorZmlyc3QuICBTeW1ib2xzIGNhbm5vdCBtYXRjaC4gIGdmb3J0 cmFuIGFsd2F5cyBwcm9kdWNlcyBsb3dlcmNhc2VkIERJRSBuYW1lcy4KKworSSB3YXMgdG9sZCBi eSBKYWt1YiBKZWxpbmVrIEdDQyBmcm9udGVuZCB3aWxsIG5ldmVyIGJlIHByb3Blcmx5IGNhc2UK K3ByZXNlcnZpbmcgLSB0byBvdXRwdXQgIk1vZDEiIGlmIHVzZXIgc3RhdGVkIGl0IGluIHN1Y2gg Y2FzZSBpbiB0aGUgc291cmNlcy4KKworVGhlcmVmb3JlIEdEQiB3aWxsIG5vdyBsb3dlcmNhc2Ug YW55IGNhc2UgaW5zZW5zaXRpdmUgc3ltYm9sIG5hbWVzIG9uIHRoZWlyCityZWFkLWluIGZyb20g RFdBUkYuCisKK0VMRiBzeW1ib2wgdGFibGVzIGFyZSBjdXJyZW50bHkgbm90IHRvdWNoZWQgLSB0 aGVpciBtYXRjaGluZyB0byB0aGVpciBDVSAoYW5kCit0aHVzIHRvIHRoZWlyIERXX0FUX2lkZW50 aWZpZXJfY2FzZSAvIERXX0FUX2xhbmd1YWdlKSBpcyBleHBlbnNpdmUgYW5kIGl0IGRvZXMKK25v dCBzZWVtIHRvIG1lIHRvIGJlIG5lZWRlZCBmb3IgaUZvcnQgYXMgb25seSB0aGUgbW9kdWxlIG5h bWVzIGFyZSB1cHBlcmNhc2VkCit0aGVyZS4KKworRm9yIHRoZSBpRm9ydCBjb21wYXRpYmlsaXR5 IHRoZXJlIGlzIGFsc28gbmVlZGVkOgorCVtuZXcgdGVzdGNhc2VdIFJlZ3Jlc3Npb24gNy4xLT43 LjIgZm9yIGlGb3J0IFtSZTogW1JGQS12Ml0gZHdhcmYgZGVidWcgZm9ybWF0OiBTdXBwb3J0IERX X0FUX3ZhcmlhYmxlX3BhcmFtZXRlciBhdHRyaWJ1dGVdCisJaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1wYXRjaGVzLzIwMTAtMTEvbXNnMDAwODQuaHRtbAorCitObyByZWdyZXNzaW9ucyBv biB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTRzbmFwc2hvdC1saW51eC1nbnUuCisK KworVGhhbmtzLAorSmFuCisKKworZ2RiLworMjAxMC0xMS0wNyAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJUFIgMTEzMTMgLSBjYXNlIGluc2Vuc2l0aXZl IGlkZW50aWZpZXJzIGluIERXQVJGIG5vdCBpbiBsb3dlcmNhc2UuCisJKiBkd2FyZjJyZWFkLmM6 IEluY2x1ZGUgY3R5cGUuaC4KKwkoc3RydWN0IGR3YXJmMl9jdSkgPGNhc2Vfc2Vuc2l0aXZpdHk+ OiBOZXcuCisJKHN0cnVjdCBhdHRyaWJ1dGUpIDxzdHJpbmdfaXNfY2Fub25pY2FsPjogVXBkYXRl IHRoZSBjb21tZW50LgorCShjYW5vbmljYWxfY2FzZSk6IE5ldyBkZWNsYXJhdGlvbi4KKwkocmVh ZF9wYXJ0aWFsX2RpZSk6IENhbGwgY2Fub25pY2FsX2Nhc2UuCisJKGNhbm9uaWNhbF9jYXNlKTog TmV3IGZ1bmN0aW9uLgorCShkd2FyZjJfY2Fub25pY2FsaXplX25hbWUpOiBVcGRhdGUgdGhlIGZ1 bmN0aW9uIGNvbW1lbnQuICBDYWxsCisJY2Fub25pY2FsX2Nhc2UsIGFkanVzdCB0aGUgb2JzdGFj ayBhbGxvY2F0aW9uLgorCShkd2FyZjJfbmFtZSk6IENhbGwgY2Fub25pY2FsX2Nhc2UsIHNldCBE V19TVFJJTkdfSVNfQ0FOT05JQ0FMLgorCShpbml0X29uZV9jb21wX3VuaXQsIHByZXBhcmVfb25l X2NvbXBfdW5pdCk6IFNldCBjdS0+Y2FzZV9zZW5zaXRpdml0eS4KKworZ2RiL3Rlc3RzdWl0ZS8K KzIwMTAtMTEtMDcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K KworCVBSIDExMzEzIC0gY2FzZSBpbnNlbnNpdGl2ZSBpZGVudGlmaWVycyBpbiBEV0FSRiBub3Qg aW4gbG93ZXJjYXNlLgorCSogZ2RiLmR3YXJmMi9kdzItY2FzZS1pbnNlbnNpdGl2ZS1kZWJ1Zy5T OiBOZXcuCisJKiBnZGIuZHdhcmYyL2R3Mi1jYXNlLWluc2Vuc2l0aXZlLmM6IE5ldy4KKwkqIGdk Yi5kd2FyZjIvZHcyLWNhc2UtaW5zZW5zaXRpdmUuZXhwOiBOZXcuCisJKiBnZGIubWkvbWktdmFy LWNoaWxkLWYuZXhwIChtaV9ydW50byk6IFVzZSBsb3dlcmNhc2UgbWFpbl9fLgorCitJbmRleDog Z2RiLTcuMi9nZGIvZHdhcmYycmVhZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5vcmlnL2dk Yi9kd2FyZjJyZWFkLmMJMjAxMC0xMS0wNyAwNTozODoyMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4yL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0xMS0wNyAwNTozODo0Ny4wMDAwMDAwMDAgKzAx MDAKK0BAIC01NSw2ICs1NSw3IEBACisgI2luY2x1ZGUgImdkYl9zdGF0LmgiCisgI2luY2x1ZGUg ImNvbXBsZXRlci5oIgorICNpbmNsdWRlICJ0b3AuaCIKKysjaW5jbHVkZSA8Y3R5cGUuaD4KKyAK KyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgorQEAgLTM3Niw2 ICszNzcsMTAgQEAgc3RydWN0IGR3YXJmMl9jdQorICAgICAgRElFcyBmb3IgbmFtZXNwYWNlcywg d2UgZG9uJ3QgbmVlZCB0byB0cnkgdG8gaW5mZXIgdGhlbQorICAgICAgZnJvbSBtYW5nbGVkIG5h bWVzLiAgKi8KKyAgIHVuc2lnbmVkIGludCBoYXNfbmFtZXNwYWNlX2luZm8gOiAxOworKworKyAg LyogQXJlIGlkZW50aWZpZXJzIGluIHRoaXMgQ1UgY2FzZSBzZW5zaXRpdmUgb3Igc2hvdWxkIHRo ZXkgYmUgbG93ZXJjYXNlZAorKyAgICAgYmVmb3JlIHN0b3JpbmcgdGhlbSBpbnRvIEdEQiBzeW1i b2wgdGFibGVzPyAgKi8KKysgIGVudW0gY2FzZV9zZW5zaXRpdml0eSBjYXNlX3NlbnNpdGl2aXR5 OworIH07CisgCisgLyogV2hlbiB1c2luZyB0aGUgaW5kZXggKGFuZCB0aHVzIG5vdCB1c2luZyBw c3ltdGFicyksIGVhY2ggQ1UgaGFzIGFuCitAQCAtNjIxLDkgKzYyNiwxMCBAQCBzdHJ1Y3QgYXR0 cmlidXRlCisgICAgIEVOVU1fQklURklFTEQoZHdhcmZfYXR0cmlidXRlKSBuYW1lIDogMTY7Cisg ICAgIEVOVU1fQklURklFTEQoZHdhcmZfZm9ybSkgZm9ybSA6IDE1OworIAorLSAgICAvKiBIYXMg RFdfU1RSSU5HIGFscmVhZHkgYmVlbiB1cGRhdGVkIGJ5IGR3YXJmMl9jYW5vbmljYWxpemVfbmFt ZT8gIFRoaXMKKy0gICAgICAgZmllbGQgc2hvdWxkIGJlIGluIHUuc3RyIChleGlzdGluZyBvbmx5 IGZvciBEV19TVFJJTkcpIGJ1dCBpdCBpcyBrZXB0CistICAgICAgIGhlcmUgZm9yIGJldHRlciBz dHJ1Y3QgYXR0cmlidXRlIGFsaWdubWVudC4gICovCisrICAgIC8qIEhhcyBEV19TVFJJTkcgYWxy ZWFkeSBiZWVuIHVwZGF0ZWQgYnkgZHdhcmYyX2Nhbm9uaWNhbGl6ZV9uYW1lIG9yCisrICAgICAg IGNhbm9uaWNhbF9jYXNlPyAgVGhpcyBmaWVsZCBzaG91bGQgYmUgaW4gdS5zdHIgKGV4aXN0aW5n IG9ubHkgZm9yCisrICAgICAgIERXX1NUUklORykgYnV0IGl0IGlzIGtlcHQgaGVyZSBmb3IgYmV0 dGVyIHN0cnVjdCBhdHRyaWJ1dGUgYWxpZ25tZW50LgorKyAgICAgICAqLworICAgICB1bnNpZ25l ZCBpbnQgc3RyaW5nX2lzX2Nhbm9uaWNhbCA6IDE7CisgCisgICAgIHVuaW9uCitAQCAtMTEwOSw2 ICsxMTE1LDkgQEAgc3RhdGljIGdkYl9ieXRlICpyZWFkX2Z1bGxfZGllIChjb25zdCBzdAorIAor IHN0YXRpYyB2b2lkIHByb2Nlc3NfZGllIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IGR3YXJm Ml9jdSAqKTsKKyAKKytzdGF0aWMgY2hhciAqY2Fub25pY2FsX2Nhc2UgKGNoYXIgKm5hbWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1LAorKwkJCSAgICAgc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwor KworIHN0YXRpYyBjaGFyICpkd2FyZjJfY2Fub25pY2FsaXplX25hbWUgKGNoYXIgKiwgc3RydWN0 IGR3YXJmMl9jdSAqLAorIAkJCQkgICAgICAgc3RydWN0IG9ic3RhY2sgKik7CisgCitAQCAtODU4 OSw3ICs4NTk4LDggQEAgcmVhZF9wYXJ0aWFsX2RpZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZgor IAkgICAgY2FzZSBEV19UQUdfZW51bWVyYXRvcjoKKyAJICAgICAgLyogVGhlc2UgdGFncyBhbHdh eXMgaGF2ZSBzaW1wbGUgaWRlbnRpZmllcnMgYWxyZWFkeTsgbm8gbmVlZAorIAkJIHRvIGNhbm9u aWNhbGl6ZSB0aGVtLiAgKi8KKy0JICAgICAgcGFydF9kaWUtPm5hbWUgPSBEV19TVFJJTkcgKCZh dHRyKTsKKysJICAgICAgcGFydF9kaWUtPm5hbWUgPSBjYW5vbmljYWxfY2FzZSAoRFdfU1RSSU5H ICgmYXR0ciksIGN1LAorKwkJCQkJICAgICAgICZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNr KTsKKyAJICAgICAgYnJlYWs7CisgCSAgICBkZWZhdWx0OgorIAkgICAgICBwYXJ0X2RpZS0+bmFt ZQorQEAgLTExMDQzLDcgKzExMDUzLDM2IEBAIHNpYmxpbmdfZGllIChzdHJ1Y3QgZGllX2luZm8g KmRpZSkKKyAgIHJldHVybiBkaWUtPnNpYmxpbmc7CisgfQorIAorLS8qIEdldCBuYW1lIG9mIGEg ZGllLCByZXR1cm4gTlVMTCBpZiBub3QgZm91bmQuICAqLworKy8qIENvbnZlcnQgTkFNRSB0byB0 aGUgbG93ZXIgY2FzZSBpZiBDVSBpcyBjYXNlX3NlbnNpdGl2ZV9vZmYuICBBbGxvY2F0ZQorKyAg IG1lbW9yeSBvbiBPQlNUQUNLIGlmIG5lZWRlZCwgb3RoZXJ3aXNlIHJldHVybiB0aGUgTkFNRSBw b2ludGVyLiAgKi8KKysKKytzdGF0aWMgY2hhciAqCisrY2Fub25pY2FsX2Nhc2UgKGNoYXIgKm5h bWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorKwkJc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spCisr eworKyAgY2hhciAqcmV0dmFsOworKyAgaW50IGk7CisrCisrICBpZiAoY3UtPmNhc2Vfc2Vuc2l0 aXZpdHkgPT0gY2FzZV9zZW5zaXRpdmVfb24pCisrICAgIHJldHVybiBuYW1lOworKworKyAgZm9y IChpID0gMDsgbmFtZVtpXSAhPSAwOyBpKyspCisrICAgIGlmICh0b2xvd2VyIChuYW1lW2ldKSAh PSBuYW1lW2ldKQorKyAgICAgIGJyZWFrOworKyAgaWYgKG5hbWVbaV0gPT0gMCkKKysgICAgcmV0 dXJuIG5hbWU7CisrCisrICByZXR2YWwgPSBvYnN0YWNrX2FsbG9jIChvYnN0YWNrLCBzdHJsZW4g KG5hbWUpICsgMSk7CisrCisrICBmb3IgKGkgPSAwOyBuYW1lW2ldICE9IDA7IGkrKykKKysgICAg cmV0dmFsW2ldID0gdG9sb3dlciAobmFtZVtpXSk7CisrICByZXR2YWxbaV0gPSAwOworKworKyAg cmV0dXJuIHJldHZhbDsKKyt9CisrCisrLyogR2V0IG5hbWUgb2YgYSBkaWUsIHJldHVybiBOVUxM IGlmIG5vdCBmb3VuZC4gIGNhbm9uaWNhbF9jYXNlIGlzIGFsd2F5cworKyAgIGFscmVhZHkgY2Fs bGVkIGZvciB0aGUgcmV0dXJuZWQgc3RyaW5nLiAgKi8KKyAKKyBzdGF0aWMgY2hhciAqCisgZHdh cmYyX2Nhbm9uaWNhbGl6ZV9uYW1lIChjaGFyICpuYW1lLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwK K0BAIC0xMTA1NSwxNCArMTEwOTQsMjYgQEAgZHdhcmYyX2Nhbm9uaWNhbGl6ZV9uYW1lIChjaGFy ICpuYW1lLCBzdAorIAorICAgICAgIGlmIChjYW5vbl9uYW1lICE9IE5VTEwpCisgCXsKKy0JICBp ZiAoc3RyY21wIChjYW5vbl9uYW1lLCBuYW1lKSAhPSAwKQorLQkgICAgbmFtZSA9IG9ic2F2ZXN0 cmluZyAoY2Fub25fbmFtZSwgc3RybGVuIChjYW5vbl9uYW1lKSwKKysJICBjaGFyICpjYXNlZF9u YW1lOworKworKwkgIGNhc2VkX25hbWUgPSBjYW5vbmljYWxfY2FzZSAoY2Fub25fbmFtZSwgY3Us IG9ic3RhY2spOworKworKwkgIC8qIFB1c2ggQ0FTRURfTkFNRSBvbiBPQlNUQUNLIG9ubHkgaWYg aXQgaXNuJ3QgYWxyZWFkeSBwdXNoZWQgdGhlcmUKKysJICAgICBieSBjYW5vbmljYWxfY2FzZSBh bmQgaWYgaXQgd2FzIGFsbG9jYXRlZCB1c2luZyB4bWFsbG9jIGJ5CisrCSAgICAgY3BfY2Fub25p Y2FsaXplX3N0cmluZy4gICovCisrCSAgaWYgKHN0cmNtcCAoY2Fub25fbmFtZSwgY2FzZWRfbmFt ZSkgPT0gMAorKwkgICAgICAmJiBzdHJjbXAgKGNhbm9uX25hbWUsIG5hbWUpICE9IDApCisrCSAg ICBuYW1lID0gb2JzYXZlc3RyaW5nIChjYXNlZF9uYW1lLCBzdHJsZW4gKGNhc2VkX25hbWUpLAor IAkJCQkgb2JzdGFjayk7CisrCSAgZWxzZQorKwkgICAgbmFtZSA9IGNhc2VkX25hbWU7CisgCSAg eGZyZWUgKGNhbm9uX25hbWUpOworKworKwkgIHJldHVybiBuYW1lOworIAl9CisgICAgIH0KKyAK Ky0gIHJldHVybiBuYW1lOworKyAgcmV0dXJuIGNhbm9uaWNhbF9jYXNlIChuYW1lLCBjdSwgb2Jz dGFjayk7CisgfQorIAorIC8qIEdldCBuYW1lIG9mIGEgZGllLCByZXR1cm4gTlVMTCBpZiBub3Qg Zm91bmQuICAqLworQEAgLTExMDg4LDcgKzExMTM5LDEzIEBAIGR3YXJmMl9uYW1lIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWMKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToK KyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRvcjoKKyAgICAgICAvKiBUaGVzZSB0YWdzIGFsd2F5 cyBoYXZlIHNpbXBsZSBpZGVudGlmaWVycyBhbHJlYWR5OyBubyBuZWVkCistCSB0byBjYW5vbmlj YWxpemUgdGhlbS4gICovCisrCSB0byBjYWxsIGR3YXJmMl9jYW5vbmljYWxpemVfbmFtZSBmb3Ig dGhlbS4gICovCisrICAgICAgaWYgKCFEV19TVFJJTkdfSVNfQ0FOT05JQ0FMIChhdHRyKSkKKysJ eworKwkgIERXX1NUUklORyAoYXR0cikgPSBjYW5vbmljYWxfY2FzZSAoRFdfU1RSSU5HIChhdHRy KSwgY3UsCisrCQkJCQkgICAgICZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrKTsKKysJICBE V19TVFJJTkdfSVNfQ0FOT05JQ0FMIChhdHRyKSA9IDE7CisrCX0KKyAgICAgICByZXR1cm4gRFdf U1RSSU5HIChhdHRyKTsKKyAKKyAgICAgY2FzZSBEV19UQUdfc3VicHJvZ3JhbToKK0BAIC0xMzc0 Myw2ICsxMzgwMCw3IEBAIGluaXRfb25lX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9jdSAqY3UK KyAgIG1lbXNldCAoY3UsIDAsIHNpemVvZiAoKmN1KSk7CisgICBjdS0+b2JqZmlsZSA9IG9iamZp bGU7CisgICBvYnN0YWNrX2luaXQgKCZjdS0+Y29tcF91bml0X29ic3RhY2spOworKyAgY3UtPmNh c2Vfc2Vuc2l0aXZpdHkgPSBjYXNlX3NlbnNpdGl2ZV9vbjsKKyB9CisgCisgLyogSW5pdGlhaWxp emUgYmFzaWMgZmllbGRzIG9mIGR3YXJmX2N1IENVIGFjY29yZGluZyB0byBESUUgQ09NUF9VTklU X0RJRS4gICovCitAQCAtMTM3NTgsNiArMTM4MTYsMTMgQEAgcHJlcGFyZV9vbmVfY29tcF91bml0 IChzdHJ1Y3QgZHdhcmYyX2N1IAorICAgICBzZXRfY3VfbGFuZ3VhZ2UgKERXX1VOU05EIChhdHRy KSwgY3UpOworICAgZWxzZQorICAgICBzZXRfY3VfbGFuZ3VhZ2UgKGxhbmd1YWdlX21pbmltYWws IGN1KTsKKysKKysgIGF0dHIgPSBkd2FyZjJfYXR0ciAoY29tcF91bml0X2RpZSwgRFdfQVRfaWRl bnRpZmllcl9jYXNlLCBjdSk7CisrICBpZiAoYXR0cikKKysgICAgY3UtPmNhc2Vfc2Vuc2l0aXZp dHkgPSAoRFdfVU5TTkQgKGF0dHIpID09IERXX0lEX2Nhc2Vfc2Vuc2l0aXZlCisrCQkJICAgID8g Y2FzZV9zZW5zaXRpdmVfb24gOiBjYXNlX3NlbnNpdGl2ZV9vZmYpOworKyAgZWxzZQorKyAgICBj dS0+Y2FzZV9zZW5zaXRpdml0eSA9IGN1LT5sYW5ndWFnZV9kZWZuLT5sYV9jYXNlX3NlbnNpdGl2 aXR5OworIH0KKyAKKyAvKiBSZWxlYXNlIG9uZSBjYWNoZWQgY29tcGlsYXRpb24gdW5pdCwgQ1Uu ICBXZSB1bmxpbmsgaXQgZnJvbSB0aGUgdHJlZQorSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1jYXNlLWluc2Vuc2l0aXZlLWRlYnVnLlMKKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGIt Ny4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItY2FzZS1pbnNlbnNpdGl2ZS1kZWJ1Zy5T CTIwMTAtMTEtMDcgMDU6Mzg6MzUuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDEyMiBAQAor Ky8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisr ICAgQ29weXJpZ2h0IDIwMDQsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLworKworKwkuc2VjdGlvbiAuZGVidWdfaW5mbworKy5MY3UxX2JlZ2luOgorKwkvKiBDVSBo ZWFkZXIgKi8KKysJLjRieXRlCS5MY3UxX2VuZCAtIC5MY3UxX3N0YXJ0CQkvKiBMZW5ndGggb2Yg Q29tcGlsYXRpb24gVW5pdCAqLworKy5MY3UxX3N0YXJ0OgorKwkuMmJ5dGUJMgkJCQkvKiBEV0FS RiBWZXJzaW9uICovCisrCS40Ynl0ZQkuTGFiYnJldjFfYmVnaW4JCQkvKiBPZmZzZXQgaW50byBh YmJyZXYgc2VjdGlvbiAqLworKwkuYnl0ZQk0CQkJCS8qIFBvaW50ZXIgc2l6ZSAqLworKworKwkv KiBDVSBkaWUgKi8KKysJLnVsZWIxMjggMgkJCQkvKiBBYmJyZXY6IERXX1RBR19jb21waWxlX3Vu aXQgKi8KKysJLmFzY2lpCSJmaWxlMS50eHRcMCIJCQkvKiBEV19BVF9uYW1lICovCisrCS5hc2Np aQkiR05VIEMgMy4zLjNcMCIJCQkvKiBEV19BVF9wcm9kdWNlciAqLworKwkuYnl0ZQkyCQkJCS8q IERXX0FUX2xhbmd1YWdlIChEV19MQU5HX0MpICovCisrCS5ieXRlCTMJCQkJLyogRFdfQVRfaWRl bnRpZmllcl9jYXNlIChEV19JRF9jYXNlX2luc2Vuc2l0aXZlKSAqLworKwkuNGJ5dGUJCUZVTkNf YXR0cgkJLyogRFdfQVRfbG93X3BjICovCisrCS40Ynl0ZQkJRlVOQ19sYW5nIAkJLyogRFdfQVRf aGlnaF9wYyAqLworKworKwkudWxlYjEyOAkzCQkJLyogQWJicmV2OiBEV19UQUdfc3VicHJvZ3Jh bSAqLworKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2V4dGVybmFsICovCisrCS5hc2NpaQkJIkZVTkNf YXR0clwwIgkJLyogRFdfQVRfbmFtZSAqLworKwkuNGJ5dGUJCUZVTkNfYXR0cgkJLyogRFdfQVRf bG93X3BjICovCisrCS40Ynl0ZQkJRlVOQ19sYW5nIAkJLyogRFdfQVRfaGlnaF9wYyAqLworKwor KwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLworKy5MY3UxX2VuZDoKKysK KysuTGN1Ml9iZWdpbjoKKysJLyogQ1UgaGVhZGVyICovCisrCS40Ynl0ZQkuTGN1Ml9lbmQgLSAu TGN1Ml9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8KKysuTGN1Ml9zdGFy dDoKKysJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLworKwkuNGJ5dGUJLkxhYmJyZXYx X2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8KKysJLmJ5dGUJNAkJCQkv KiBQb2ludGVyIHNpemUgKi8KKysKKysJLyogQ1UgZGllICovCisrCS51bGViMTI4IDEJCQkJLyog QWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS5hc2NpaQkiZmlsZTEudHh0XDAiCQkJ LyogRFdfQVRfbmFtZSAqLworKwkuYXNjaWkJIkdOVSBDIDMuMy4zXDAiCQkJLyogRFdfQVRfcHJv ZHVjZXIgKi8KKysJLmJ5dGUJOAkJCQkvKiBEV19BVF9sYW5ndWFnZSAoRFdfTEFOR19Gb3J0cmFu OTApICovCisrCS40Ynl0ZQkJRlVOQ19sYW5nCQkvKiBEV19BVF9sb3dfcGMgKi8KKysJLjRieXRl CQltYWluCQkJLyogRFdfQVRfaGlnaF9wYyAqLworKworKwkudWxlYjEyOAkzCQkJLyogQWJicmV2 OiBEV19UQUdfc3VicHJvZ3JhbSAqLworKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2V4dGVybmFsICov CisrCS5hc2NpaQkJIkZVTkNfbGFuZ1wwIgkJLyogRFdfQVRfbmFtZSAqLworKwkuNGJ5dGUJCUZV TkNfbGFuZwkJLyogRFdfQVRfbG93X3BjICovCisrCS40Ynl0ZQkJbWFpbgkJCS8qIERXX0FUX2hp Z2hfcGMgKi8KKysKKysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8KKysu TGN1Ml9lbmQ6CisrCisrLyogQWJicmV2IHRhYmxlICovCisrCS5zZWN0aW9uIC5kZWJ1Z19hYmJy ZXYKKysuTGFiYnJldjFfYmVnaW46CisrCS51bGViMTI4CTEJCQkvKiBBYmJyZXYgY29kZSAqLwor KwkudWxlYjEyOAkweDExCQkJLyogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLworKwkuYnl0ZQkJMQkJ CS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCisr CS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4MjUJCQkv KiBEV19BVF9wcm9kdWNlciAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAq LworKwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KKysJLnVsZWIxMjgJMHhi CQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkudWxlYjEyOAkweDExCQkJLyogRFdfQVRfbG93X3Bj ICovCisrCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLworKwkudWxlYjEyOAkweDEy CQkJLyogRFdfQVRfaGlnaF9wYyAqLworKwkudWxlYjEyOAkweDEJCQkvKiBEV19GT1JNX2FkZHIg Ki8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KKysKKysJLnVsZWIxMjgJMgkJCS8qIEFiYnJldiBjb2RlICovCisrCS51bGVi MTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS5ieXRlCQkxCQkJLyogaGFz X2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVsZWIx MjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJMHgyNQkJCS8qIERXX0FU X3Byb2R1Y2VyICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51 bGViMTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLworKwkudWxlYjEyOAkweGIJCQkvKiBE V19GT1JNX2RhdGExICovCisrCS51bGViMTI4CTB4NDIJCQkvKiBEV19BVF9pZGVudGlmaWVyX2Nh c2UgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkudWxlYjEyOAkw eDExCQkJLyogRFdfQVRfbG93X3BjICovCisrCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRk ciAqLworKwkudWxlYjEyOAkweDEyCQkJLyogRFdfQVRfaGlnaF9wYyAqLworKwkudWxlYjEyOAkw eDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8K KysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysKKysJLnVsZWIxMjgJMwkJCS8qIEFi YnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MmUJCQkvKiBEV19UQUdfc3VicHJvZ3JhbSAqLwor KwkuYnl0ZQkJMAkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDNmCQkJLyogRFdf QVRfZXh0ZXJuYWwgKi8KKysJLnVsZWIxMjgJMHhjCQkJLyogRFdfRk9STV9mbGFnICovCisrCS51 bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9S TV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJMHgxMQkJCS8qIERXX0FUX2xvd19wYyAqLworKwkudWxl YjEyOAkweDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KKysJLnVsZWIxMjgJMHgxMgkJCS8qIERXX0FU X2hpZ2hfcGMgKi8KKysJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCisrCS5ieXRl CQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICov CisrCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBU ZXJtaW5hdG9yICovCitJbmRleDogZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcy LWNhc2UtaW5zZW5zaXRpdmUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1jYXNlLWluc2Vuc2l0aXZlLmMJMjAxMC0xMS0wNyAwNTozODozNS4wMDAwMDAw MDAgKzAxMDAKK0BAIC0wLDAgKzEsMzYgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2Yg R0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA0LCAyMDA3LCAyMDA4 LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysvKiBUaGlzIG9uZSBpcyBEV19M QU5HX0MgYnV0IGl0IHVzZXMgRFdfSURfY2FzZV9pbnNlbnNpdGl2ZS4gICovCisrCisrdm9pZAor K0ZVTkNfYXR0ciAodm9pZCkKKyt7CisrfQorKworKy8qIFRoaXMgb25lIGhhcyBubyBEV19BVF9p ZGVudGlmaWVyX2Nhc2UgYnV0IGl0IGlzIERXX0xBTkdfRm9ydHJhbjkwLiAgKi8KKysKKyt2b2lk CisrRlVOQ19sYW5nICh2b2lkKQorK3sKKyt9CisrCisraW50CisrbWFpbigpCisreworKyAgcmV0 dXJuIDA7CisrfQorSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1j YXNlLWluc2Vuc2l0aXZlLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1jYXNlLWluc2Vuc2l0aXZlLmV4cAkyMDEwLTExLTA3IDA1OjM4OjM1LjAwMDAw MDAwMCArMDEwMAorQEAgLTAsMCArMSw0MSBAQAorKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMK KysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgor KworKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRzIHdoaWNoIHN1cHBvcnQg RFdBUkYtMiBhbmQgdXNlIGdhcy4KKysjIEZvciBub3cgcGljayBhIHNhbXBsaW5nIG9mIGxpa2Vs eSB0YXJnZXRzLgorK2lmIHshW2lzdGFyZ2V0ICotKi1saW51eCpdCisrICAgICYmICFbaXN0YXJn ZXQgKi0qLWdudSpdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLWVsZipdCisrICAgICYmICFbaXN0 YXJnZXQgKi0qLW9wZW5ic2QqXQorKyAgICAmJiAhW2lzdGFyZ2V0IGFybS0qLWVhYmkqXQorKyAg ICAmJiAhW2lzdGFyZ2V0IHBvd2VycGMtKi1lYWJpKl19IHsKKysgICAgcmV0dXJuIDAKKyt9Cisr Cisrc2V0IHRlc3RmaWxlICJkdzItY2FzZS1pbnNlbnNpdGl2ZSIKKysKKytpZiB7IFtwcmVwYXJl X2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSBbbGlzdCAke3Rlc3RmaWxl fS5jICR7dGVzdGZpbGV9LWRlYnVnLlNdIHtub2RlYnVnfV0gfSB7CisrICAgIHJldHVybiAtMQor K30KKysKKytnZGJfdGVzdF9ub19vdXRwdXQgInNldCBsYW5ndWFnZSBmb3J0cmFuIgorKworK2lm IHtbZ2RiX2JyZWFrcG9pbnQgImZ1TkNfYXR0ciJdID09IDF9IHsKKysgICAgcGFzcyAic2V0dGlu ZyBicmVha3BvaW50IGF0IGZ1TkNfYXR0ciIKKyt9CisrCisraWYge1tnZGJfYnJlYWtwb2ludCAi ZnVOQ19sYW5nIl0gPT0gMX0geworKyAgICBwYXNzICJzZXR0aW5nIGJyZWFrcG9pbnQgYXQgZnVO Q19sYW5nIgorK30KK0luZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZhci1j aGlsZC1mLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjIub3JpZy9nZGIvdGVzdHN1aXRlL2dk Yi5taS9taS12YXItY2hpbGQtZi5leHAJMjAxMC0wMS0wMSAwODozMjowMy4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZhci1jaGlsZC1mLmV4cAky MDEwLTExLTA3IDA1OjM4OjM1LjAwMDAwMDAwMCArMDEwMAorQEAgLTM2LDcgKzM2LDcgQEAgaWYg e1tnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8keworIG1pX2dkYl9yZWluaXRpYWxp emVfZGlyICRzcmNkaXIvJHN1YmRpcgorIG1pX2dkYl9sb2FkICR7YmluZmlsZX0KKyAKKy1taV9y dW50byBNQUlOX18KKyttaV9ydW50byBtYWluX18KKyAKKyBtaV9nZGJfdGVzdCAiLXZhci1jcmVh dGUgYXJyYXkgKiBhcnJheSIgXAorICAgICAiXFxeZG9uZSxuYW1lPVwiYXJyYXlcIixudW1jaGls ZD1cIjNcIix2YWx1ZT1cIi4qXCIsdHlwZT1cImludGVnZXIgXFwoMiwtMToxXFwpXCIiIFwKCmRp ZmYgLS1naXQgYS9nZGItZXhlYy1waWUtYW1kNjQucGF0Y2ggYi9nZGItZXhlYy1waWUtYW1kNjQu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg0MDNhZAotLS0gL2Rl di9udWxsCisrKyBiL2dkYi1leGVjLXBpZS1hbWQ2NC5wYXRjaApAQCAtMCwwICsxLDQxOCBAQAor aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDkvbXNnMDA1MTkuaHRt bAorU3ViamVjdDogW3BhdGNoXSBGaXggaW5mZXJpb3IgZXhlY2wgb2YgbmV3IFBJRSB4ODZfNjQK KworSGksCisKK2djYyAtbyAxIDEuYyAtV2FsbCAtZyAtZlBJRSAtcGllOyBnZGIgLW54IC4vMSAt ZXggJ2IgbWFpbicgLWV4IHIgLWV4IGMgCisKK1N0YXJ0aW5nIHByb2dyYW06IC4uLi9nZGIvMSAK K0JyZWFrcG9pbnQgMSwgbWFpbiAoYXJnYz0xLCBhcmd2PTB4N2ZmZmZmZmZkZmY4KSBhdCAxLmM6 NworNwkgIHNldGJ1ZiAoc3Rkb3V0LCBOVUxMKTsKK0NvbnRpbnVpbmcuCityZS1leGVjCitwcm9j ZXNzIDI4MDU2IGlzIGV4ZWN1dGluZyBuZXcgcHJvZ3JhbTogLi4uL2dkYi8xCitFcnJvciBpbiBy ZS1zZXR0aW5nIGJyZWFrcG9pbnQgMTogQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVzcyAw eDgwYworZXhpdAorUHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkuCisoZ2RiKSBfCisKK3doaWxlIGl0 IHNob3VsZCBiZToKKworcmUtZXhlYworcHJvY2VzcyAyODA5NSBpcyBleGVjdXRpbmcgbmV3IHBy b2dyYW06IC4uLi9nZGIvMQorQnJlYWtwb2ludCAxLCBtYWluIChhcmdjPTIsIGFyZ3Y9MHg3ZmZm ZmZmZmUwMDgpIGF0IDEuYzo3Cis3CSAgc2V0YnVmIChzdGRvdXQsIE5VTEwpOworKGdkYikgXwor CitUaGUgZXJyb3IgY29tZXMgZnJvbToKKwordGhyb3dfZXJyb3IgPC0gbWVtb3J5X2Vycm9yIDwt IHJlYWRfbWVtb3J5IDwtIHJlYWRfbWVtb3J5X3Vuc2lnbmVkX2ludGVnZXIgPC0KK2FtZDY0X2Fu YWx5emVfcHJvbG9ndWUgPC0gYW1kNjRfc2tpcF9wcm9sb2d1ZSA8LSBnZGJhcmNoX3NraXBfcHJv bG9ndWUgPC0KK3NraXBfcHJvbG9ndWVfc2FsIDwtIGZpbmRfZnVuY3Rpb25fc3RhcnRfc2FsIDwt IHN5bWJvbF9mb3VuZCA8LSBkZWNvZGVfdmFyaWFibGUKKzwtIGRlY29kZV9saW5lXzEgPC0gYnJl YWtwb2ludF9yZV9zZXRfb25lIDwtIGNhdGNoX2Vycm9ycyA8LSBicmVha3BvaW50X3JlX3NldAor PC0gY2xlYXJfc3ltdGFiX3VzZXJzIDwtIG5ld19zeW1maWxlX29iamZpbGUgPC0KK3N5bWJvbF9m aWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMgPC0gc3ltYm9sX2ZpbGVfYWRkX2Zyb21fYmZk IDwtCitzeW1ib2xfZmlsZV9hZGQgPC0gc3ltYm9sX2ZpbGVfYWRkX21haW5fMSA8LSBzeW1ib2xf ZmlsZV9hZGRfbWFpbiA8LQorZm9sbG93X2V4ZWMKKworCitJIHVuZGVyc3RhbmQgdGhpcyBoYWNr IGlzIG5vdCBuaWNlLCB0aGUgY29ycmVjdCB3YXkgd291bGQgYmUgdG8gdW5pZnkgbW9yZQorZm9s bG93X2V4ZWMgd2l0aCBwb3N0X2NyZWF0ZV9pbmZlcmlvci4gIEJ1dCBJIGNvdWxkIGJyZWFrIGl0 IGZvciBub24tR05VL0xpbnV4Cit0YXJnZXRzIGEgbG90LgorCitObyByZWdyZXNzaW9ucyBvbiB7 eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTRzbmFwc2hvdC1saW51eC1nbnUuCisKKwor VGhhbmtzLAorSmFuCisKKworZm9yIHRoZSBkZW1vIGFib3ZlOgorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8 c3RkaW8uaD4KK2ludAorbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICBzZXRidWYg KHN0ZG91dCwgTlVMTCk7CisgIGlmIChhcmdjID09IDEpCisgICAgeworICAgICAgcHV0cyAoInJl LWV4ZWMiKTsKKyAgICAgIGV4ZWNsICgiL3Byb2Mvc2VsZi9leGUiLCBhcmd2WzBdLCAiZm9vIiwg TlVMTCk7CisgICAgICBhc3NlcnQgKDApOworICAgIH0KKyAgcHV0cyAoImV4aXQiKTsKKyAgcmV0 dXJuIDA7Cit9CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitnZGIvCisyMDEwLTA5LTMwICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIGluZnJ1bi5j IChmb2xsb3dfZXhlYyk6IFJlcGxhY2Ugc3ltYm9sX2ZpbGVfYWRkX21haW4gYnkKKwlzeW1ib2xf ZmlsZV9hZGQgd2l0aCBTWU1GSUxFX0RFRkVSX0JQX1JFU0VULCBzZXRfaW5pdGlhbF9sYW5ndWFn ZSBhbmQKKwlicmVha3BvaW50X3JlX3NldC4KKwkqIG0zMnItcm9tLmMgKG0zMnJfbG9hZCwgbTMy cl91cGxvYWRfY29tbWFuZCk6IFVzZSBwYXJhbWV0ZXIgMCBmb3IKKwljbGVhcl9zeW10YWJfdXNl cnMuCisJKiBvYmpmaWxlcy5jIChmcmVlX2FsbF9vYmpmaWxlcyk6IExpa2V3aXNlLgorCSogcmVt b3RlLW0zMnItc2RpLmMgKG0zMnJfbG9hZCk6IExpa2V3aXNlLgorCSogc29saWItc29tLmMgKHNv bV9zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayk6IExpa2V3aXNlLgorCSogc3ltZmlsZS5jIChu ZXdfc3ltZmlsZV9vYmpmaWxlKTogTmV3IGNvbW1lbnQgZm9yIGFkZF9mbGFncy4gIENhbGwKKwlj bGVhcl9zeW10YWJfdXNlcnMgd2l0aCBBRERfRkxBR1MuCisJKHJlcmVhZF9zeW1ib2xzKTogVXNl IHBhcmFtZXRlciAwIGZvciBjbGVhcl9zeW10YWJfdXNlcnMuCisJKGNsZWFyX3N5bXRhYl91c2Vy cyk6IE5ldyBwYXJhbWV0ZXIgYWRkX2ZsYWdzLiAgRG8gbm90IGNhbGwKKwlicmVha3BvaW50X3Jl X3NldCBpZiBTWU1GSUxFX0RFRkVSX0JQX1JFU0VULgorCShjbGVhcl9zeW10YWJfdXNlcnNfY2xl YW51cCk6IFVzZSBwYXJhbWV0ZXIgMCBmb3IgY2xlYXJfc3ltdGFiX3VzZXJzLgorCSogc3ltdGFi LmggKGNsZWFyX3N5bXRhYl91c2Vycyk6IE5ldyBwYXJhbWV0ZXIgYWRkX2ZsYWdzLgorCitnZGIv dGVzdHN1aXRlLworMjAxMC0wOS0zMCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPgorCisJKiBnZGIuYmFzZS9waWUtZXhlY2wuZXhwOiBOZXcgZmlsZS4KKwkqIGdk Yi5iYXNlL3BpZS1leGVjbC5jOiBOZXcgZmlsZS4KKworSW5kZXg6IGdkYi03LjIvZ2RiL2luZnJ1 bi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5vcmlnL2dkYi9pbmZydW4uYwkyMDEwLTEwLTEy IDE4OjI3OjU4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIvZ2RiL2luZnJ1bi5jCTIwMTAt MTAtMTIgMTg6Mjk6MjQuMDAwMDAwMDAwICswMjAwCitAQCAtODQwLDggKzg0MCwxNSBAQCBmb2xs b3dfZXhlYyAocHRpZF90IHBpZCwgY2hhciAqZXhlY2RfcGF0CisgICAvKiBUaGF0IGEub3V0IGlz IG5vdyB0aGUgb25lIHRvIHVzZS4gKi8KKyAgIGV4ZWNfZmlsZV9hdHRhY2ggKGV4ZWNkX3BhdGhu YW1lLCAwKTsKKyAKKy0gIC8qIExvYWQgdGhlIG1haW4gZmlsZSdzIHN5bWJvbHMuICAqLworLSAg c3ltYm9sX2ZpbGVfYWRkX21haW4gKGV4ZWNkX3BhdGhuYW1lLCAwKTsKKysgIC8qIFNZTUZJTEVf REVGRVJfQlBfUkVTRVQgaXMgdXNlZCBhcyB0aGUgcHJvcGVyIGRpc3BsYWNlbWVudCBmb3IgUElF CisrICAgICAoUG9zaXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0YWJsZSkgbWFpbiBzeW1ib2wgZmls ZSB3aWxsIGdldCBhcHBsaWVkIGJ5CisrICAgICBzb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayBi ZWxvdy4gIGJyZWFrcG9pbnRfcmVfc2V0IHdvdWxkIGZhaWwgdG8gaW5zZXJ0CisrICAgICB0aGUg YnJlYWtwb2ludHMgd2l0aCB0aGUgemVybyBkaXNwbGFjZW1lbnQuICAqLworKworKyAgc3ltYm9s X2ZpbGVfYWRkIChleGVjZF9wYXRobmFtZSwgU1lNRklMRV9NQUlOTElORSB8IFNZTUZJTEVfREVG RVJfQlBfUkVTRVQsCisrCQkgICBOVUxMLCAwKTsKKysKKysgIHNldF9pbml0aWFsX2xhbmd1YWdl ICgpOworIAorICNpZmRlZiBTT0xJQl9DUkVBVEVfSU5GRVJJT1JfSE9PSworICAgU09MSUJfQ1JF QVRFX0lORkVSSU9SX0hPT0sgKFBJREdFVCAoaW5mZXJpb3JfcHRpZCkpOworQEAgLTg1MSw2ICs4 NTgsOCBAQCBmb2xsb3dfZXhlYyAocHRpZF90IHBpZCwgY2hhciAqZXhlY2RfcGF0CisgCisgICBq aXRfaW5mZXJpb3JfY3JlYXRlZF9ob29rICgpOworIAorKyAgYnJlYWtwb2ludF9yZV9zZXQgKCk7 CisrCisgICAvKiBSZWluc2VydCBhbGwgYnJlYWtwb2ludHMuICAoVGhvc2Ugd2hpY2ggd2VyZSBz eW1ib2xpYyBoYXZlCisgICAgICBiZWVuIHJlc2V0IHRvIHRoZSBwcm9wZXIgYWRkcmVzcyBpbiB0 aGUgbmV3IGEub3V0LCB0aGFua3MKKyAgICAgIHRvIHN5bWJvbF9maWxlX2NvbW1hbmQuLi4pICov CitJbmRleDogZ2RiLTcuMi9nZGIvbTMyci1yb20uYworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjIu b3JpZy9nZGIvbTMyci1yb20uYwkyMDEwLTAxLTAxIDA4OjMxOjM3LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjIvZ2RiL20zMnItcm9tLmMJMjAxMC0xMC0xMiAxODoyOToyNC4wMDAwMDAwMDAg KzAyMDAKK0BAIC0xODgsNyArMTg4LDcgQEAgbTMycl9sb2FkIChjaGFyICpmaWxlbmFtZSwgaW50 IGZyb21fdHR5KQorICAgICAgdGhlIHN0YWNrIG1heSBub3QgYmUgdmFsaWQsIGFuZCB0aGluZ3Mg d291bGQgZ2V0IGhvcnJpYmx5CisgICAgICBjb25mdXNlZC4uLiAqLworIAorLSAgY2xlYXJfc3lt dGFiX3VzZXJzICgpOworKyAgY2xlYXJfc3ltdGFiX3VzZXJzICgwKTsKKyB9CisgCisgc3RhdGlj IHZvaWQKK0BAIC01NTEsNyArNTUxLDcgQEAgbTMycl91cGxvYWRfY29tbWFuZCAoY2hhciAqYXJn cywgaW50IGZybworICAgICAgdGhlIHN0YWNrIG1heSBub3QgYmUgdmFsaWQsIGFuZCB0aGluZ3Mg d291bGQgZ2V0IGhvcnJpYmx5CisgICAgICBjb25mdXNlZC4uLiAqLworIAorLSAgY2xlYXJfc3lt dGFiX3VzZXJzICgpOworKyAgY2xlYXJfc3ltdGFiX3VzZXJzICgwKTsKKyB9CisgCisgLyogUHJv dmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8KK0lu ZGV4OiBnZGItNy4yL2dkYi9vYmpmaWxlcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5vcmln L2dkYi9vYmpmaWxlcy5jCTIwMTAtMTAtMTIgMTg6Mjc6NTYuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuMi9nZGIvb2JqZmlsZXMuYwkyMDEwLTEwLTEyIDE4OjI5OjM5LjAwMDAwMDAwMCArMDIw MAorQEAgLTY5OSw3ICs2OTksNyBAQCBmcmVlX2FsbF9vYmpmaWxlcyAodm9pZCkKKyAgIHsKKyAg ICAgZnJlZV9vYmpmaWxlIChvYmpmaWxlKTsKKyAgIH0KKy0gIGNsZWFyX3N5bXRhYl91c2VycyAo KTsKKysgIGNsZWFyX3N5bXRhYl91c2VycyAoMCk7CisgfQorIAwKKyAvKiBSZWxvY2F0ZSBPQkpG SUxFIHRvIE5FV19PRkZTRVRTLiAgVGhlcmUgc2hvdWxkIGJlIE9CSkZJTEUtPk5VTV9TRUNUSU9O UworSW5kZXg6IGdkYi03LjIvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuMi5vcmlnL2dkYi9yZW1vdGUtbTMyci1zZGkuYwkyMDEwLTA3LTA3IDE4OjE1OjE2LjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jCTIwMTAtMTAt MTIgMTg6Mjk6MjQuMDAwMDAwMDAwICswMjAwCitAQCAtMTM3Nyw3ICsxMzc3LDcgQEAgbTMycl9s b2FkIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisgICAgICBtaWdodCBiZSB0byBjYWxsIG5v cm1hbF9zdG9wLCBleGNlcHQgdGhhdCB0aGUgc3RhY2sgbWF5IG5vdCBiZSB2YWxpZCwKKyAgICAg IGFuZCB0aGluZ3Mgd291bGQgZ2V0IGhvcnJpYmx5IGNvbmZ1c2VkLi4uICovCisgCistICBjbGVh cl9zeW10YWJfdXNlcnMgKCk7CisrICBjbGVhcl9zeW10YWJfdXNlcnMgKDApOworIAorICAgaWYg KCFub3N0YXJ0KQorICAgICB7CitJbmRleDogZ2RiLTcuMi9nZGIvc29saWItc29tLmMKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy4yLm9yaWcvZ2RiL3NvbGliLXNvbS5jCTIwMTAtMDUtMTcgMDE6NDk6 NTguMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvc29saWItc29tLmMJMjAxMC0xMC0x MiAxODoyOToyNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0zNTQsNyArMzU0LDcgQEAga2VlcF9nb2lu ZzoKKyAgIC8qIE1ha2UgdGhlIGJyZWFrcG9pbnQgYXQgIl9zdGFydCIgYSBzaGFyZWQgbGlicmFy eSBldmVudCBicmVha3BvaW50LiAgKi8KKyAgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50 ICh0YXJnZXRfZ2RiYXJjaCwgYW5hZGRyKTsKKyAKKy0gIGNsZWFyX3N5bXRhYl91c2VycyAoKTsK KysgIGNsZWFyX3N5bXRhYl91c2VycyAoMCk7CisgfQorIAorIHN0YXRpYyB2b2lkCitJbmRleDog Z2RiLTcuMi9nZGIvc3ltZmlsZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5vcmlnL2dkYi9z eW1maWxlLmMJMjAxMC0xMC0xMiAxODoyNzo1Ny4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4y L2dkYi9zeW1maWxlLmMJMjAxMC0xMC0xMiAxODoyOToyNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0x MDM2LDcgKzEwMzYsNyBAQCBzeW1zX2Zyb21fb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZp CisgCisgLyogUGVyZm9ybSByZXF1aXJlZCBhY3Rpb25zIGFmdGVyIGVpdGhlciByZWFkaW5nIGlu IHRoZSBpbml0aWFsCisgICAgc3ltYm9scyBmb3IgYSBuZXcgb2JqZmlsZSwgb3IgbWFwcGluZyBp biB0aGUgc3ltYm9scyBmcm9tIGEgcmV1c2FibGUKKy0gICBvYmpmaWxlLiAqLworKyAgIG9iamZp bGUuICBBRERfRkxBR1MgaXMgYSBiaXRtYXNrIG9mIGVudW0gc3ltZmlsZV9hZGRfZmxhZ3MuICAq LworIAorIHZvaWQKKyBuZXdfc3ltZmlsZV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgaW50IGFkZF9mbGFncykKK0BAIC0xMDQ5LDcgKzEwNDksNyBAQCBuZXdfc3ltZmlsZV9vYmpm aWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCisgICAgICAgLyogT0ssIG1ha2UgaXQgdGhlICJyZWFs IiBzeW1ib2wgZmlsZS4gICovCisgICAgICAgc3ltZmlsZV9vYmpmaWxlID0gb2JqZmlsZTsKKyAK Ky0gICAgICBjbGVhcl9zeW10YWJfdXNlcnMgKCk7CisrICAgICAgY2xlYXJfc3ltdGFiX3VzZXJz IChhZGRfZmxhZ3MpOworICAgICB9CisgICBlbHNlIGlmICgoYWRkX2ZsYWdzICYgU1lNRklMRV9E RUZFUl9CUF9SRVNFVCkgPT0gMCkKKyAgICAgeworQEAgLTI1MjcsNyArMjUyNyw3IEBAIHJlcmVh ZF9zeW1ib2xzICh2b2lkKQorICAgICAgIC8qIE5vdGlmeSBvYmpmaWxlcyB0aGF0IHdlJ3ZlIG1v ZGlmaWVkIG9iamZpbGUgc2VjdGlvbnMuICAqLworICAgICAgIG9iamZpbGVzX2NoYW5nZWQgKCk7 CisgCistICAgICAgY2xlYXJfc3ltdGFiX3VzZXJzICgpOworKyAgICAgIGNsZWFyX3N5bXRhYl91 c2VycyAoMCk7CisgICAgICAgLyogQXQgbGVhc3Qgb25lIG9iamZpbGUgaGFzIGNoYW5nZWQsIHNv IHdlIGNhbiBjb25zaWRlciB0aGF0CisgICAgICAgICAgdGhlIGV4ZWN1dGFibGUgd2UncmUgZGVi dWdnaW5nIGhhcyBjaGFuZ2VkIHRvby4gICovCisgICAgICAgb2JzZXJ2ZXJfbm90aWZ5X2V4ZWN1 dGFibGVfY2hhbmdlZCAoKTsKK0BAIC0yNzQ1LDEwICsyNzQ1LDEwIEBAIGFsbG9jYXRlX3N5bXRh YiAoY2hhciAqZmlsZW5hbWUsIHN0cnVjdCAKKyAMCisgCisgLyogUmVzZXQgYWxsIGRhdGEgc3Ry dWN0dXJlcyBpbiBnZGIgd2hpY2ggbWF5IGNvbnRhaW4gcmVmZXJlbmNlcyB0byBzeW1ib2wKKy0g ICB0YWJsZSBkYXRhLiAgKi8KKysgICB0YWJsZSBkYXRhLiAgQUREX0ZMQUdTIGlzIGEgYml0bWFz ayBvZiBlbnVtIHN5bWZpbGVfYWRkX2ZsYWdzLiAgKi8KKyAKKyB2b2lkCistY2xlYXJfc3ltdGFi X3VzZXJzICh2b2lkKQorK2NsZWFyX3N5bXRhYl91c2VycyAoaW50IGFkZF9mbGFncykKKyB7Cisg ICAvKiBTb21lZGF5LCB3ZSBzaG91bGQgZG8gYmV0dGVyIHRoYW4gdGhpcywgYnkgb25seSBibG93 aW5nIGF3YXkKKyAgICAgIHRoZSB0aGluZ3MgdGhhdCByZWFsbHkgbmVlZCB0byBiZSBibG93bi4g ICovCitAQCAtMjc1OCw3ICsyNzU4LDggQEAgY2xlYXJfc3ltdGFiX3VzZXJzICh2b2lkKQorICAg Y2xlYXJfY3VycmVudF9zb3VyY2Vfc3ltdGFiX2FuZF9saW5lICgpOworIAorICAgY2xlYXJfZGlz cGxheXMgKCk7CistICBicmVha3BvaW50X3JlX3NldCAoKTsKKysgIGlmICgoYWRkX2ZsYWdzICYg U1lNRklMRV9ERUZFUl9CUF9SRVNFVCkgPT0gMCkKKysgICAgYnJlYWtwb2ludF9yZV9zZXQgKCk7 CisgICBzZXRfZGVmYXVsdF9icmVha3BvaW50ICgwLCBOVUxMLCAwLCAwLCAwKTsKKyAgIGNsZWFy X3BjX2Z1bmN0aW9uX2NhY2hlICgpOworICAgb2JzZXJ2ZXJfbm90aWZ5X25ld19vYmpmaWxlIChO VUxMKTsKK0BAIC0yNzc3LDcgKzI3NzgsNyBAQCBjbGVhcl9zeW10YWJfdXNlcnMgKHZvaWQpCisg c3RhdGljIHZvaWQKKyBjbGVhcl9zeW10YWJfdXNlcnNfY2xlYW51cCAodm9pZCAqaWdub3JlKQor IHsKKy0gIGNsZWFyX3N5bXRhYl91c2VycyAoKTsKKysgIGNsZWFyX3N5bXRhYl91c2VycyAoMCk7 CisgfQorIAwKKyAvKiBPVkVSTEFZUzoKK0luZGV4OiBnZGItNy4yL2dkYi9zeW10YWIuaAorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjIub3JpZy9nZGIvc3ltdGFiLmgJMjAxMC0xMC0xMiAxODoyNzo1 Ni4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yL2dkYi9zeW10YWIuaAkyMDEwLTEwLTEyIDE4 OjI5OjI0LjAwMDAwMDAwMCArMDIwMAorQEAgLTExNzAsNyArMTE3MCw3IEBAIGV4dGVybiB2b2lk IHNraXBfcHJvbG9ndWVfc2FsIChzdHJ1Y3Qgc3kKKyAKKyAvKiBzeW1maWxlLmMgKi8KKyAKKy1l eHRlcm4gdm9pZCBjbGVhcl9zeW10YWJfdXNlcnMgKHZvaWQpOworK2V4dGVybiB2b2lkIGNsZWFy X3N5bXRhYl91c2VycyAoaW50IGFkZF9mbGFncyk7CisgCisgZXh0ZXJuIGVudW0gbGFuZ3VhZ2Ug ZGVkdWNlX2xhbmd1YWdlX2Zyb21fZmlsZW5hbWUgKGNvbnN0IGNoYXIgKik7CisgCitJbmRleDog Z2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3BpZS1leGVjbC5jCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2Ri LTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3BpZS1leGVjbC5jCTIwMTAtMTAtMTIgMTg6Mjk6 MjQuMDAwMDAwMDAwICswMjAwCitAQCAtMCwwICsxLDUxIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBp cyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxMCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHVu aXN0ZC5oPgorKyNpbmNsdWRlIDxhc3NlcnQuaD4KKysKKytzdGF0aWMgdm9pZCBwaWVfZXhlY2xf bWFya2VyICh2b2lkKTsKKysKKytpbnQKKyttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisr eworKyAgc2V0YnVmIChzdGRvdXQsIE5VTEwpOworKworKyNpZiBCSU4gPT0gMQorKyAgaWYgKGFy Z2MgPT0gMikKKysgICAgeworKyAgICAgIHByaW50ZiAoInBpZS1leGVjbDogcmUtZXhlYzogJXNc biIsIGFyZ3ZbMV0pOworKyAgICAgIGV4ZWNsIChhcmd2WzFdLCBhcmd2WzFdLCBOVUxMKTsKKysg ICAgICBhc3NlcnQgKDApOworKyAgICB9CisrI2VuZGlmCisrCisrICBwaWVfZXhlY2xfbWFya2Vy ICgpOworKworKyAgcmV0dXJuIDA7CisrfQorKworKy8qIHBpZV9leGVjbF9tYXJrZXIgbXVzdCBi ZSBvbiBhIGRpZmZlcmVudCBhZGRyZXNzIHRoYW4gaW4gYHBpZS1leGVjbDIuYycuICAqLworKwor K3ZvbGF0aWxlIGludCB2OworKworK3N0YXRpYyB2b2lkCisrcGllX2V4ZWNsX21hcmtlciAodm9p ZCkKKyt7CisrICB2ID0gMTsKKyt9CitJbmRleDogZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3BpZS1leGVjbC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvcGllLWV4ZWNsLmV4cAkyMDEwLTEwLTEyIDE4OjI5OjI0LjAwMDAwMDAwMCArMDIwMAorQEAg LTAsMCArMSw5NCBAQAorKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyMgVGhlIHByb2Js ZW0gd2FzIGR1ZSB0byBhbWQ2NF9za2lwX3Byb2xvZ3VlIGF0dGVtcHRpbmcgdG8gYWNjZXNzIGlu ZmVyaW9yCisrIyBtZW1vcnkgYmVmb3JlIHRoZSBQSUUgKFBvc2l0aW9uIEluZGVwZW5kZW50IEV4 ZWN1dGFibGUpIGdldHMgcmVsb2NhdGVkLgorKworK2lmIHsgIVtpc3RhcmdldCAqLWxpbnV4Kl19 IHsKKysgICAgY29udGludWUKKyt9CisrCisrc2V0IHRlc3RmaWxlICJwaWUtZXhlY2wiCisrc2V0 IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYworK3NldCBleGVjdXRhYmxlMSAke3Rlc3RmaWxlfTEKKytz ZXQgZXhlY3V0YWJsZTIgJHt0ZXN0ZmlsZX0yCisrc2V0IGJpbmZpbGUxICR7b2JqZGlyfS8ke3N1 YmRpcn0vJHtleGVjdXRhYmxlMX0KKytzZXQgYmluZmlsZTIgJHtvYmpkaXJ9LyR7c3ViZGlyfS8k e2V4ZWN1dGFibGUyfQorKworKyMgVXNlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFjY29yZGlu ZyB0byBgQklOJyBhcyBHREIgcmVtZW1iZXJzIHRoZSBzb3VyY2UKKysjIGZpbGUgbmFtZSBvZiB0 aGUgYnJlYWtwb2ludC4KKysKKytzZXQgb3B0cyBbbGlzdCBkZWJ1ZyB7YWRkaXRpb25hbF9mbGFn cz0tZlBJRSAtcGllfV0KKytpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0uZXhwICRl eGVjdXRhYmxlMSAkc3JjZmlsZSBbY29uY2F0ICRvcHRzIHthZGRpdGlvbmFsX2ZsYWdzPS1EQklO PTF9XV0gPT0gIiIKKysgICAgfHwgW2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0uZXhwICRl eGVjdXRhYmxlMiAkc3JjZmlsZSBbY29uY2F0ICRvcHRzIHthZGRpdGlvbmFsX2ZsYWdzPS1EQklO PTJ9XV0gPT0gIiJ9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2NsZWFuX3Jlc3RhcnQgJHtl eGVjdXRhYmxlMX0KKysKKytnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhcmdzICR7YmluZmlsZTJ9 IgorKworK2lmICFbcnVudG9fbWFpbl0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBEbyBu b3Qgc3RvcCBvbiBgbWFpbicgYWZ0ZXIgcmUtZXhlYy4KKytkZWxldGVfYnJlYWtwb2ludHMKKysK KytnZGJfYnJlYWtwb2ludCAicGllX2V4ZWNsX21hcmtlciIKKytnZGJfdGVzdCAiaW5mbyBicmVh a3BvaW50cyIgIi4qIiAiIgorKworK3NldCBhZGRyMSAiIgorK3NldCB0ZXN0ICJwaWVfZXhlY2xf bWFya2VyIGFkZHJlc3MgZmlyc3QiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgInAveCAmcGllX2V4ZWNs X21hcmtlciIgJHRlc3QgeworKyAgICAtcmUgIiA9ICgweFxbMC05YS1mXF0rKVxyXG4kZ2RiX3By b21wdCAkIiB7CisrCXNldCBhZGRyMSAkZXhwZWN0X291dCgxLHN0cmluZykKKysJcGFzcyAkdGVz dAorKyAgICB9CisrfQorK3ZlcmJvc2UgLWxvZyAiYWRkcjEgaXMgJGFkZHIxIgorKworK3NldCB0 ZXN0ICJjb250aW51ZSIKKytnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrICAgIC1y ZSAiRXJyb3IgaW4gcmUtc2V0dGluZyBicmVha3BvaW50IiB7CisrCWZhaWwgJHRlc3QKKysgICAg fQorKyAgICAtcmUgIkNhbm5vdCBhY2Nlc3MgbWVtb3J5IiB7CisrCWZhaWwgJHRlc3QKKysgICAg fQorKyAgICAtcmUgInBpZS1leGVjbDogcmUtZXhlYy4qZXhlY3V0aW5nIG5ldyBwcm9ncmFtLipc clxuQnJlYWtwb2ludCBcWzAtOVxdKyxcW15cclxuXF0qIHBpZV9leGVjbF9tYXJrZXIgLipcclxu JGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKyt9CisrCisrZ2RiX3Rlc3Qg ImluZm8gYnJlYWtwb2ludHMiICIuKiIgIiIKKysKKytzZXQgYWRkcjIgIiIKKytzZXQgdGVzdCAi cGllX2V4ZWNsX21hcmtlciBhZGRyZXNzIHNlY29uZCIKKytnZGJfdGVzdF9tdWx0aXBsZSAicC94 ICZwaWVfZXhlY2xfbWFya2VyIiAkdGVzdCB7CisrICAgIC1yZSAiID0gKDB4XFswLTlhLWZcXSsp XHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJc2V0IGFkZHIyICRleHBlY3Rfb3V0KDEsc3RyaW5nKQor KwlwYXNzICR0ZXN0CisrICAgIH0KKyt9CisrdmVyYm9zZSAtbG9nICJhZGRyMiBpcyAkYWRkcjIi CisrCisrIyBFbnN1cmUgd2UgY2Fubm90IGdldCBhIGZhbHNlIFBBU1MgYW5kIHRoZSBpbmZlcmlv ciBoYXMgcmVhbGx5IGNoYW5nZWQuCisrc2V0IHRlc3QgInBpZV9leGVjbF9tYXJrZXIgYWRkcmVz cyBoYXMgY2hhbmdlZCIKKytpZiBbc3RyaW5nIGVxdWFsICRhZGRyMSAkYWRkcjJdIHsKKysgICAg ZmFpbCAkdGVzdAorK30gZWxzZSB7CisrICAgIHBhc3MgJHRlc3QKKyt9CgpkaWZmIC0tZ2l0IGEv Z2RiLWZhbHNlLWdjYy13YXJuaW5nLnBhdGNoIGIvZ2RiLWZhbHNlLWdjYy13YXJuaW5nLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYWQwOGMKLS0tIC9kZXYvbnVs bAorKysgYi9nZGItZmFsc2UtZ2NjLXdhcm5pbmcucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0t IGdkYi03LjEuOTAuMjAxMDA4MDYvZ2RiL2luZmNhbGwuYy5vcmlnCTIwMTAtMDgtMTAgMDA6MzQ6 MTAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDgwNi9nZGIvaW5mY2FsbC5j CTIwMTAtMDgtMTAgMDA6MzY6MDMuMDAwMDAwMDAwICswMjAwCitAQCAtMjg0LDcgKzI4NCw3IEBA IGZpbmRfZnVuY3Rpb25fYWRkciAoc3RydWN0IHZhbHVlICpmdW5jdGkKKyAgIHN0cnVjdCB0eXBl ICpmdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGZ1bmN0aW9uKSk7CisgICBzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF90eXBlX2FyY2ggKGZ0eXBlKTsKKyAgIHN0cnVjdCB0 eXBlICp2YWx1ZV90eXBlID0gTlVMTDsKKy0gIENPUkVfQUREUiBmdW5hZGRyOworKyAgQ09SRV9B RERSIGZ1bmFkZHIgPSAwOwkvKiBHQ0MgZmFsc2UgLWZwcm9maWxlLXVzZSB3YXJuaW5nLiAgKi8K KyAKKyAgIC8qIElmIGl0J3MgYSBtZW1iZXIgZnVuY3Rpb24sIGp1c3QgbG9vayBhdCB0aGUgZnVu Y3Rpb24KKyAgICAgIHBhcnQgb2YgaXQuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1nZGItYWRkLWlu ZGV4LXNjcmlwdC5wYXRjaCBiL2dkYi1nZGItYWRkLWluZGV4LXNjcmlwdC5wYXRjaAppbmRleCBk YTE0OWVjLi5jNzcwYTc3IDEwMDY0NAotLS0gYS9nZGItZ2RiLWFkZC1pbmRleC1zY3JpcHQucGF0 Y2gKKysrIGIvZ2RiLWdkYi1hZGQtaW5kZXgtc2NyaXB0LnBhdGNoCkBAIC0xMDksNyArMTA5LDcg QEAgaW5kZXggMDAwMDAwMC4uYzlhMDNiMAogK2Rpcj0iJHtmaWxlJS8qfSIKICsKICsjIFdlIGRv bid0IGNhcmUgaWYgZ2RiIGdpdmVzIGFuIGVycm9yLgotK2dkYiAtLWJhdGNoLXNpbGVudCAtZXgg ImZpbGUgJGZpbGUiIC1leCAic2F2ZSBnZGItaW5kZXggJGRpciIKKytnZGIgLW54IC0tYmF0Y2gt c2lsZW50IC1leCAiZmlsZSAkZmlsZSIgLWV4ICJzYXZlIGdkYi1pbmRleCAkZGlyIgogKwogK2lm IHRlc3QgLWYgIiR7ZmlsZX0uZ2RiLWluZGV4IjsgdGhlbgogKyAgIG9iamNvcHkgLS1hZGQtc2Vj dGlvbiAuZ2RiX2luZGV4PSIke2ZpbGV9LmdkYi1pbmRleCIgLS1zZXQtc2VjdGlvbi1mbGFncyAu Z2RiX2luZGV4PXJlYWRvbmx5ICIkZmlsZSIgIiRmaWxlIgoKZGlmZiAtLWdpdCBhL2dkYi1nZGJp bmRleC1hZGEtcmVncmVzc2lvbi5wYXRjaCBiL2dkYi1nZGJpbmRleC1hZGEtcmVncmVzc2lvbi5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDY3ZDU4Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2RiLWdkYmluZGV4LWFkYS1yZWdyZXNzaW9uLnBhdGNoCkBAIC0wLDAgKzEs NTAgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAw MjczLmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gLmdkYl9pbmRleDogRml4IEFkYSByZWdyZXNzaW9u CisKK0hpLAorCitvbiBhIHN5c3RlbSB3aXRoIGxpYnJhcmllcyB1c2luZyAuZ2RiX2luZGV4IGFs bCB0aGUgQWRhIHRlc3RjYXNlcyBGQUlMOgorCitSdW5uaW5nIC4vZ2RiLmFkYS9wcmludF9wYy5l eHAgLi4uCitGQUlMOiBnZGIuYWRhL3ByaW50X3BjLmV4cDogc3RhcnQgaW5mZXJpb3IgKEdEQiBp bnRlcm5hbCBlcnJvcikKK0ZBSUw6IGdkYi5hZGEvcHJpbnRfcGMuZXhwOiBwIC94ICRwYworCitk d2FyZjJyZWFkLmM6MjM3NDogaW50ZXJuYWwtZXJyb3I6IG1hcF9hZGFfc3ltdGFicyBjYWxsZWQg dmlhIGluZGV4IG1ldGhvZAorCitGQUlsIGlzIG9uIEZlZG9yYSAxNCBzbmFwc2hvdCB1c2luZyBn Y2MtZGVidWdpbmZvLTQuNS4xLTMuZmMxNC54ODZfNjQgZmlsZToKKwkvdXNyL2xpYi9kZWJ1Zy9s aWI2NC9saWJnY2Nfcy00LjUuMS0yMDEwMDkwNy5zby4xLmRlYnVnCisKK1RoZSByZWdyZXNzaW9u cyBnZXQgZml4ZWQgb24geDg2XzY0LWZlZG9yYTE0c25hcHNob3QtbGludXgtZ251IGJ5IHRoZSBh dHRhY2hlZAorcGF0Y2guICBObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4 Nn0tZmVkb3JhMTRzbmFwc2hvdC1saW51eC1nbnUuCisKK0R1cmluZyBteSB0ZXN0cyB3aXRoIGBz ZXQgbGFuZ3VhZ2UgYWRhJyBJIGNvdWxkIG5vdCBsb29rdXAgbm9uLUFkYSBzeW1ib2xzCithbnl3 YXkgc28gSSBiZWxpZXZlIHRoZSBwYXRjaCBpcyBPSyBidXQgc3VyZSBpdCBuZWVkcyBhbiBBZGEt d2lzZSByZXZpZXcuCisKKworVGhhbmtzLAorSmFuCisKKworZ2RiLworMjAxMC0wOS0xNCAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJKiBkd2FyZjJyZWFk LmMgKGR3Ml9tYXBfYWRhX3N5bXRhYnMpOiBSZW1vdmUgdGhlIGludGVybmFsX2Vycm9yLgorCVVw ZGF0ZSB0aGUgY29tbWVudC4KKworLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYworKysrIGIvZ2RiL2R3 YXJmMnJlYWQuYworQEAgLTIzNjksMTAgKzIzNjksOSBAQCBkdzJfbWFwX2FkYV9zeW10YWJzIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAJCSAgICAgZG9tYWluX2VudW0gbmFtZXNwYWNlLCBp bnQgd2lsZCwKKyAJCSAgICAgdm9pZCAqZGF0YSkKKyB7CistICAvKiBGb3Igbm93LCB3ZSBkb24n dCBzdXBwb3J0IEFkYSwgc28gdGhpcyBmdW5jdGlvbiBjYW4ndCBiZQorLSAgICAgcmVhY2hlZC4g ICovCistICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAorLQkJICBfKCJtYXBf YWRhX3N5bXRhYnMgY2FsbGVkIHZpYSBpbmRleCBtZXRob2QiKSk7CisrICAvKiBGb3Igbm93LCB3 ZSBkb24ndCBzdXBwb3J0IEFkYS4gIFN0aWxsIHRoZSBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGlm IHRoZQorKyAgICAgY3VycmVudCBsYW5ndWFnZSBpcyBBZGEgZm9yIGEgbm9uLUFkYSBvYmpmaWxl IHVzaW5nIEdOVSBpbmRleC4gIEFzIEFkYQorKyAgICAgZG9lcyBub3QgbG9vayBmb3Igbm9uLUFk YSBzeW1ib2xzIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGp1c3QgcmV0dXJuLiAgKi8KKyB9CisgCisg c3RhdGljIHZvaWQKKwoKZGlmZiAtLWdpdCBhL2dkYi1nZGJpbmRleC1iaWdlbmRpYW4ucGF0Y2gg Yi9nZGItZ2RiaW5kZXgtYmlnZW5kaWFuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmVkZDRmNGYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZ2RiaW5kZXgtYmlnZW5k aWFuLnBhdGNoCkBAIC0wLDAgKzEsOTYgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt cGF0Y2hlcy8yMDEwLTA5L21zZzAwNDM0Lmh0bWwKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItY3ZzLzIwMTAtMDkvbXNnMDAxNTUuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAx MC8wOS8yNCAxNDo0Nzo1MgkxLjEyMjAyCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wOS8y NCAxNjoxMTo0NAkxLjEyMjAzCisjIyAtMSwzICsxLDkgQEAKKysyMDEwLTA5LTI0ICBUb20gVHJv bWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CisrCisrCSogZHdhcmYycmVhZC5jIChkdzJfZXhwYW5k X3N5bXRhYnNfbWF0Y2hpbmcpOiBBZGQgbWlzc2luZworKwlNQVlCRV9TV0FQcy4KKysJKGR3Ml9t YXBfc3ltYm9sX25hbWVzKTogTGlrZXdpc2UuCisrCisgMjAxMC0wOS0yNCAgU2FtaSBXYWdpYWFs bGEgIDxzd2FnaWFhbEByZWRoYXQuY29tPgorIAorIAkqIHZhbG9wcy5jIChmaW5kX29sb2FkX2No YW1wX25hbWVzcGFjZV9sb29wKTogcmVwbGFjZSBpbmNvcnJlY3QKKy0tLSBzcmMvZ2RiL2R3YXJm MnJlYWQuYwkyMDEwLzA5LzIyIDE5OjIyOjQ0CTEuNDYwCisrKysgc3JjL2dkYi9kd2FyZjJyZWFk LmMJMjAxMC8wOS8yNCAxNjoxMTo0NgkxLjQ2MQorQEAgLTIzODIsMTAgKzIzODIsMTIgQEAKKyB7 CisgICBpbnQgaTsKKyAgIG9mZnNldF90eXBlIGl0ZXI7CisrICBzdHJ1Y3QgbWFwcGVkX2luZGV4 ICppbmRleDsKKyAKKyAgIGR3Ml9zZXR1cCAob2JqZmlsZSk7CisgICBpZiAoIWR3YXJmMl9wZXJf b2JqZmlsZS0+aW5kZXhfdGFibGUpCisgICAgIHJldHVybjsKKysgIGluZGV4ID0gZHdhcmYyX3Bl cl9vYmpmaWxlLT5pbmRleF90YWJsZTsKKyAKKyAgIGZvciAoaSA9IDA7IGkgPCAoZHdhcmYyX3Bl cl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMKKyAJCSAgICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX3R5 cGVfY29tcF91bml0cyk7ICsraSkKK0BAIC0yNDExLDI4ICsyNDEzLDI0IEBACisgCX0KKyAgICAg fQorIAorLSAgZm9yIChpdGVyID0gMDsKKy0gICAgICAgaXRlciA8IGR3YXJmMl9wZXJfb2JqZmls ZS0+aW5kZXhfdGFibGUtPmluZGV4X3RhYmxlX3Nsb3RzOworLSAgICAgICArK2l0ZXIpCisrICBm b3IgKGl0ZXIgPSAwOyBpdGVyIDwgaW5kZXgtPmluZGV4X3RhYmxlX3Nsb3RzOyArK2l0ZXIpCisg ICAgIHsKKyAgICAgICBvZmZzZXRfdHlwZSBpZHggPSAyICogaXRlcjsKKyAgICAgICBjb25zdCBj aGFyICpuYW1lOworICAgICAgIG9mZnNldF90eXBlICp2ZWMsIHZlY19sZW4sIHZlY19pZHg7Cisg CistICAgICAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmluZGV4X3RhYmxl W2lkeF0gPT0gMAorLQkgICYmIGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmluZGV4 X3RhYmxlW2lkeCArIDFdID09IDApCisrICAgICAgaWYgKGluZGV4LT5pbmRleF90YWJsZVtpZHhd ID09IDAgJiYgaW5kZXgtPmluZGV4X3RhYmxlW2lkeCArIDFdID09IDApCisgCWNvbnRpbnVlOwor IAorLSAgICAgIG5hbWUgPSAoZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+Y29uc3Rh bnRfcG9vbAorLQkgICAgICArIGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmluZGV4 X3RhYmxlW2lkeF0pOworKyAgICAgIG5hbWUgPSBpbmRleC0+Y29uc3RhbnRfcG9vbCArIE1BWUJF X1NXQVAgKGluZGV4LT5pbmRleF90YWJsZVtpZHhdKTsKKyAKKyAgICAgICBpZiAoISAoKm5hbWVf bWF0Y2hlcikgKG5hbWUsIGRhdGEpKQorIAljb250aW51ZTsKKyAKKyAgICAgICAvKiBUaGUgbmFt ZSB3YXMgbWF0Y2hlZCwgbm93IGV4cGFuZCBjb3JyZXNwb25kaW5nIENVcyB0aGF0IHdlcmUKKyAJ IG1hcmtlZC4gICovCistICAgICAgdmVjID0gKG9mZnNldF90eXBlICopIChkd2FyZjJfcGVyX29i amZpbGUtPmluZGV4X3RhYmxlLT5jb25zdGFudF9wb29sCistCQkJICAgICArIGR3YXJmMl9wZXJf b2JqZmlsZS0+aW5kZXhfdGFibGUtPmluZGV4X3RhYmxlW2lkeCArIDFdKTsKKysgICAgICB2ZWMg PSAob2Zmc2V0X3R5cGUgKikgKGluZGV4LT5jb25zdGFudF9wb29sCisrCQkJICAgICArIE1BWUJF X1NXQVAgKGluZGV4LT5pbmRleF90YWJsZVtpZHggKyAxXSkpOworICAgICAgIHZlY19sZW4gPSBN QVlCRV9TV0FQICh2ZWNbMF0pOworICAgICAgIGZvciAodmVjX2lkeCA9IDA7IHZlY19pZHggPCB2 ZWNfbGVuOyArK3ZlY19pZHgpCisgCXsKK0BAIC0yNDc2LDI1ICsyNDc0LDI0IEBACisgCQkgICAg ICB2b2lkICpkYXRhKQorIHsKKyAgIG9mZnNldF90eXBlIGl0ZXI7CisrICBzdHJ1Y3QgbWFwcGVk X2luZGV4ICppbmRleDsKKysKKyAgIGR3Ml9zZXR1cCAob2JqZmlsZSk7CisgCisgICBpZiAoIWR3 YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUpCisgICAgIHJldHVybjsKKysgIGluZGV4ID0g ZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZTsKKyAKKy0gIGZvciAoaXRlciA9IDA7Cist ICAgICAgIGl0ZXIgPCBkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJs ZV9zbG90czsKKy0gICAgICAgKytpdGVyKQorKyAgZm9yIChpdGVyID0gMDsgaXRlciA8IGluZGV4 LT5pbmRleF90YWJsZV9zbG90czsgKytpdGVyKQorICAgICB7CisgICAgICAgb2Zmc2V0X3R5cGUg aWR4ID0gMiAqIGl0ZXI7CisgICAgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICAgICBvZmZzZXRf dHlwZSAqdmVjLCB2ZWNfbGVuLCB2ZWNfaWR4OworIAorLSAgICAgIGlmIChkd2FyZjJfcGVyX29i amZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHhdID09IDAKKy0JICAmJiBkd2FyZjJf cGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHggKyAxXSA9PSAwKQorKyAg ICAgIGlmIChpbmRleC0+aW5kZXhfdGFibGVbaWR4XSA9PSAwICYmIGluZGV4LT5pbmRleF90YWJs ZVtpZHggKyAxXSA9PSAwKQorIAljb250aW51ZTsKKyAKKy0gICAgICBuYW1lID0gKGR3YXJmMl9w ZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmNvbnN0YW50X3Bvb2wKKy0JICAgICAgKyBkd2FyZjJf cGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHhdKTsKKysgICAgICBuYW1l ID0gKGluZGV4LT5jb25zdGFudF9wb29sICsgTUFZQkVfU1dBUCAoaW5kZXgtPmluZGV4X3RhYmxl W2lkeF0pKTsKKyAKKyAgICAgICAoKmZ1bikgKG5hbWUsIGRhdGEpOworICAgICB9CgpkaWZmIC0t Z2l0IGEvZ2RiLWdkYmluZGV4LXYxLXRvLXYyLnBhdGNoIGIvZ2RiLWdkYmluZGV4LXYxLXRvLXYy LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhN2I5YjcKLS0tIC9k ZXYvbnVsbAorKysgYi9nZGItZ2RiaW5kZXgtdjEtdG8tdjIucGF0Y2gKQEAgLTAsMCArMSw2ODkg QEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDcvbXNnMDAxMzkuaHRt bAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wNy8yMyAyMToxMDo1NAkxLjEyMDEzCisj IyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wNy8yMyAyMjoxNToxMwkxLjEyMDE0CisjIyAtMSwz ICsxLDMxIEBACisrMjAxMC0wNy0yMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgor KworKwkqIGR3YXJmMnJlYWQuYyAoc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSkgPG5fdHlwZV9j b21wX3VuaXRzLAorKwl0eXBlX2NvbXBfdW5pdHM+OiBOZXcgZmllbGRzLgorKwkoZHcyX2dldF9j dSk6IE5ldyBmdW5jdGlvbi4KKysJKGNyZWF0ZV9jdXNfZnJvbV9pbmRleCk6IFJlbW92ZSB1bnVz ZWQgYXJndW1lbnQuCisrCShjcmVhdGVfc2lnbmF0dXJlZF90eXBlX2hhc2hfZnJvbV9pbmRleCk6 IE5ldyBmdW5jdGlvbi4KKysJKGNyZWF0ZV9hZGRybWFwX2Zyb21faW5kZXgpOiBVcGRhdGUuCisr CShkd2FyZjJfcmVhZF9pbmRleCk6IEhhbmRsZSB2ZXJzaW9uIDIuCisrCShkdzJfZmluZF9sYXN0 X3NvdXJjZV9zeW10YWIsIGR3Ml9mb3JnZXRfY2FjaGVkX3NvdXJjZV9pbmZvKQorKwkoZHcyX2xv b2t1cF9zeW10YWIsIGR3Ml9kb19leHBhbmRfc3ltdGFic19tYXRjaGluZykKKysJKGR3Ml9wcmlu dF9zdGF0cywgZHcyX2V4cGFuZF9hbGxfc3ltdGFicykKKysJKGR3Ml9leHBhbmRfc3ltdGFic193 aXRoX2ZpbGVuYW1lLCBkdzJfZmluZF9zeW1ib2xfZmlsZSkKKysJKGR3Ml9leHBhbmRfc3ltdGFi c19tYXRjaGluZywgZHcyX21hcF9zeW1ib2xfZmlsZW5hbWVzKTogVXBkYXRlLgorKwkoZHdhcmYy X2luaXRpYWxpemVfb2JqZmlsZSk6IENhbGwgY3JlYXRlX2RlYnVnX3R5cGVzX2hhc2hfdGFibGUu CisrCShhbGxvY2F0ZV9zaWduYXR1cmVkX3R5cGVfaGFzaF90YWJsZSk6IE5ldyBmdW5jdGlvbi4K KysJKGFkZF9zaWduYXR1cmVkX3R5cGVfY3VfdG9fbGlzdCk6IExpa2V3aXNlLgorKwkoY3JlYXRl X2RlYnVnX3R5cGVzX2hhc2hfdGFibGUpOiBVc2UgdGhlbS4gIFNldCB0eXBlX2NvbXBfdW5pdHMu CisrCShyZWFkX3NpZ25hdHVyZWRfdHlwZSk6IEVuc3VyZSBzZWN0aW9uIGRhdGEgaXMgYXZhaWxh YmxlLgorKwkoYWRkX2FkZHJlc3NfZW50cnkpOiBEb24ndCByZWNvcmQgZW1wdHkgcmFuZ2VzLgor Kwkoc3RydWN0IHNpZ25hdHVyZWRfdHlwZV9pbmRleF9kYXRhKTogTmV3LgorKwkod3JpdGVfb25l X3NpZ25hdHVyZWRfdHlwZSk6IE5ldyBmdW5jdGlvbi4KKysJKHdyaXRlX3BzeW10YWJzX3RvX2lu ZGV4KTogV3JpdGUgdHlwZSBDVXMuCisrCShzYXZlX2dkYl9pbmRleF9jb21tYW5kKTogVXBkYXRl IGNvbW1lbnQuCisrCShwcm9jZXNzX3R5cGVfY29tcF91bml0KTogTW92ZSBpbml0aXRhbGl6YXRp b24gb2YKKysJZnJvbV9kZWJ1Z190eXBlcy4uLgorKwkoY3JlYXRlX2RlYnVnX3R5cGVzX2hhc2hf dGFibGUpOiAuLi4gaGVyZS4KKysKKyAyMDEwLTA3LTIzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisgCSogZ2RiX2djb3JlLnNoICh0bXBmaWxlKTogUmVt b3ZlIHRoZSB2YXJpYWJsZSwgaXRzIGluaXRpYWxpemF0aW9uLAorSW5kZXg6IGdkYi03LjIvZ2Ri L2R3YXJmMnJlYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjIub3JpZy9nZGIvZHdhcmYycmVh ZC5jCTIwMTAtMTAtMTIgMTg6MTA6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIv ZHdhcmYycmVhZC5jCTIwMTAtMTAtMTIgMTg6MTE6MTYuMDAwMDAwMDAwICswMjAwCitAQCAtMTg0 LDYgKzE4NCwxMiBAQCBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlCisgICAvKiBUaGUgbnVtYmVy IG9mIGNvbXBpbGF0aW9uIHVuaXRzIGluIEFMTF9DT01QX1VOSVRTLiAgKi8KKyAgIGludCBuX2Nv bXBfdW5pdHM7CisgCisrICAvKiBUaGUgbnVtYmVyIG9mIC5kZWJ1Z190eXBlcy1yZWxhdGVkIENV cy4gICovCisrICBpbnQgbl90eXBlX2NvbXBfdW5pdHM7CisrCisrICAvKiBUaGUgLmRlYnVnX3R5 cGVzLXJlbGF0ZWQgQ1VzLiAgKi8KKysgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKip0eXBl X2NvbXBfdW5pdHM7CisrCisgICAvKiBBIGNoYWluIG9mIGNvbXBpbGF0aW9uIHVuaXRzIHRoYXQg YXJlIGN1cnJlbnRseSByZWFkIGluLCBzbyB0aGF0CisgICAgICB0aGV5IGNhbiBiZSBmcmVlZCBs YXRlci4gICovCisgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpyZWFkX2luX2NoYWluOwor QEAgLTEyMjYsNiArMTIzMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqc2V0X2RpZV90eXBlIChz dHJ1Y3QKKyAKKyBzdGF0aWMgdm9pZCBjcmVhdGVfYWxsX2NvbXBfdW5pdHMgKHN0cnVjdCBvYmpm aWxlICopOworIAorK3N0YXRpYyBpbnQgY3JlYXRlX2RlYnVnX3R5cGVzX2hhc2hfdGFibGUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKysKKyBzdGF0aWMgdm9pZCBsb2FkX2Z1bGxfY29tcF91 bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICosCisgCQkJCSBzdHJ1Y3Qgb2JqZmlsZSAq KTsKKyAKK0BAIC0xMjY5LDYgKzEyNzcsOCBAQCBzdGF0aWMgdm9pZCBpbml0X2N1X2RpZV9yZWFk ZXIgKHN0cnVjdCBkCisgc3RhdGljIGNvbnN0IGNoYXIgKmR3YXJmMl9waHlzbmFtZSAoY2hhciAq bmFtZSwgc3RydWN0IGRpZV9pbmZvICpkaWUsCisgCQkJCSAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSk7CisgCisrc3RhdGljIGh0YWJfdCBhbGxvY2F0ZV9zaWduYXR1cmVkX3R5cGVfaGFzaF90YWJs ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworKworICNpZiBXT1JEU19CSUdFTkRJQU4KKyAK KyAvKiBDb252ZXJ0IFZBTFVFIGJldHdlZW4gYmlnLSBhbmQgbGl0dGxlLWVuZGlhbi4gICovCitA QCAtMTY0Niw2ICsxNjU2LDE4IEBAIGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKHN0cnVjdCBvYmpm aWxlICoKKyAgIHJldHVybiBwZXJfY3UtPnYucXVpY2stPnN5bXRhYjsKKyB9CisgCisrLyogUmV0 dXJuIHRoZSBDVSBnaXZlbiBpdHMgaW5kZXguICAqLworK3N0YXRpYyBzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhICoKKytkdzJfZ2V0X2N1IChpbnQgaW5kZXgpCisreworKyAgaWYgKGluZGV4ID49 IGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzKQorKyAgICB7CisrICAgICAgaW5kZXgg LT0gZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7CisrICAgICAgcmV0dXJuIGR3YXJm Ml9wZXJfb2JqZmlsZS0+dHlwZV9jb21wX3VuaXRzW2luZGV4XTsKKysgICAgfQorKyAgcmV0dXJu IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbaW5kZXhdOworK30KKysKKyAvKiBB IGhlbHBlciBmdW5jdGlvbiB0aGF0IGtub3dzIGhvdyB0byByZWFkIGEgNjQtYml0IHZhbHVlIGlu IGEgd2F5CisgICAgdGhhdCBkb2Vzbid0IG1ha2UgZ2RiIGRpZS4gIFJldHVybnMgMSBpZiB0aGUg Y29udmVyc2lvbiB3ZW50IG9rLCAwCisgICAgb3RoZXJ3aXNlLiAgKi8KK0BAIC0xNjcyLDExICsx Njk0LDEwIEBAIGV4dHJhY3RfY3VfdmFsdWUgKGNvbnN0IGNoYXIgKmJ5dGVzLCBVTE8KKyAgICB0 aGUgQ1Ugb2JqZWN0cyBmb3IgdGhpcyBvYmpmaWxlLiAgUmV0dXJuIDAgaWYgc29tZXRoaW5nIHdl bnQgd3JvbmcsCisgICAgMSBpZiBldmVyeXRoaW5nIHdlbnQgb2suICAqLworIHN0YXRpYyBpbnQK Ky1jcmVhdGVfY3VzX2Zyb21faW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3Qg bWFwcGVkX2luZGV4ICppbmRleCwKKy0JCSAgICAgICBjb25zdCBnZGJfYnl0ZSAqY3VfbGlzdCwg b2Zmc2V0X3R5cGUgY3VfbGlzdF9lbGVtZW50cykKKytjcmVhdGVfY3VzX2Zyb21faW5kZXggKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBnZGJfYnl0ZSAqY3VfbGlzdCwKKysJCSAgICAg ICBvZmZzZXRfdHlwZSBjdV9saXN0X2VsZW1lbnRzKQorIHsKKyAgIG9mZnNldF90eXBlIGk7Cist ICBjb25zdCBjaGFyICplbnRyeTsKKyAKKyAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3Vu aXRzID0gY3VfbGlzdF9lbGVtZW50cyAvIDI7CisgICBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9j b21wX3VuaXRzCitAQCAtMTcwNyw2ICsxNzI4LDU4IEBAIGNyZWF0ZV9jdXNfZnJvbV9pbmRleCAo c3RydWN0IG9iamZpbGUgKm8KKyAgIHJldHVybiAxOworIH0KKyAKKysvKiBDcmVhdGUgdGhlIHNp Z25hdHVyZWQgdHlwZSBoYXNoIHRhYmxlIGZyb20gdGhlIGluZGV4LiAgKi8KKytzdGF0aWMgaW50 CisrY3JlYXRlX3NpZ25hdHVyZWRfdHlwZV9oYXNoX2Zyb21faW5kZXggKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAorKwkJCQkJY29uc3QgZ2RiX2J5dGUgKmJ5dGVzLAorKwkJCQkJb2Zmc2V0X3R5 cGUgZWxlbWVudHMpCisreworKyAgb2Zmc2V0X3R5cGUgaTsKKysgIGh0YWJfdCB0eXBlX2hhc2g7 CisrCisrICBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9jb21wX3VuaXRzID0gZWxlbWVudHMg LyAzOworKyAgZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlX2NvbXBfdW5pdHMKKysgICAgPSBvYnN0 YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKwkJICAgICBkd2FyZjJfcGVy X29iamZpbGUtPm5fdHlwZV9jb21wX3VuaXRzCisrCQkgICAgICogc2l6ZW9mIChzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICopKTsKKysKKysgIHR5cGVfaGFzaCA9IGFsbG9jYXRlX3NpZ25hdHVy ZWRfdHlwZV9oYXNoX3RhYmxlIChvYmpmaWxlKTsKKysKKysgIGZvciAoaSA9IDA7IGkgPCBlbGVt ZW50czsgaSArPSAzKQorKyAgICB7CisrICAgICAgc3RydWN0IHNpZ25hdHVyZWRfdHlwZSAqdHlw ZV9zaWc7CisrICAgICAgVUxPTkdFU1Qgb2Zmc2V0LCB0eXBlX29mZnNldCwgc2lnbmF0dXJlOwor KyAgICAgIHZvaWQgKipzbG90OworKworKyAgICAgIGlmICghZXh0cmFjdF9jdV92YWx1ZSAoYnl0 ZXMsICZvZmZzZXQpCisrCSAgfHwgIWV4dHJhY3RfY3VfdmFsdWUgKGJ5dGVzICsgOCwgJnR5cGVf b2Zmc2V0KSkKKysJcmV0dXJuIDA7CisrICAgICAgc2lnbmF0dXJlID0gZXh0cmFjdF91bnNpZ25l ZF9pbnRlZ2VyIChieXRlcyArIDE2LCA4LCBCRkRfRU5ESUFOX0xJVFRMRSk7CisrICAgICAgYnl0 ZXMgKz0gMyAqIDg7CisrCisrICAgICAgdHlwZV9zaWcgPSBPQlNUQUNLX1pBTExPQyAoJm9iamZp bGUtPm9iamZpbGVfb2JzdGFjaywKKysJCQkJIHN0cnVjdCBzaWduYXR1cmVkX3R5cGUpOworKyAg ICAgIHR5cGVfc2lnLT5zaWduYXR1cmUgPSBzaWduYXR1cmU7CisrICAgICAgdHlwZV9zaWctPm9m ZnNldCA9IG9mZnNldDsKKysgICAgICB0eXBlX3NpZy0+dHlwZV9vZmZzZXQgPSB0eXBlX29mZnNl dDsKKysgICAgICB0eXBlX3NpZy0+cGVyX2N1LmZyb21fZGVidWdfdHlwZXMgPSAxOworKyAgICAg IHR5cGVfc2lnLT5wZXJfY3Uub2Zmc2V0ID0gb2Zmc2V0OworKyAgICAgIHR5cGVfc2lnLT5wZXJf Y3Uub2JqZmlsZSA9IG9iamZpbGU7CisrICAgICAgdHlwZV9zaWctPnBlcl9jdS52LnF1aWNrCisr CT0gT0JTVEFDS19aQUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCisrCQkJICBzdHJ1 Y3QgZHdhcmYyX3Blcl9jdV9xdWlja19kYXRhKTsKKysKKysgICAgICBzbG90ID0gaHRhYl9maW5k X3Nsb3QgKHR5cGVfaGFzaCwgdHlwZV9zaWcsIElOU0VSVCk7CisrICAgICAgKnNsb3QgPSB0eXBl X3NpZzsKKysKKysgICAgICBkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVfY29tcF91bml0c1tpIC8g M10gPSAmdHlwZV9zaWctPnBlcl9jdTsKKysgICAgfQorKworKyAgZHdhcmYyX3Blcl9vYmpmaWxl LT5zaWduYXR1cmVkX3R5cGVzID0gdHlwZV9oYXNoOworKworKyAgcmV0dXJuIDE7CisrfQorKwor IC8qIFJlYWQgdGhlIGFkZHJlc3MgbWFwIGRhdGEgZnJvbSB0aGUgbWFwcGVkIGluZGV4LCBhbmQg dXNlIGl0IHRvCisgICAgcG9wdWxhdGUgdGhlIG9iamZpbGUncyBwc3ltdGFic19hZGRybWFwLiAg Ki8KKyBzdGF0aWMgdm9pZAorQEAgLTE3MzgsNyArMTgxMSw3IEBAIGNyZWF0ZV9hZGRybWFwX2Zy b21faW5kZXggKHN0cnVjdCBvYmpmaWwKKyAgICAgICBpdGVyICs9IDQ7CisgICAgICAgCisgICAg ICAgYWRkcm1hcF9zZXRfZW1wdHkgKG11dGFibGVfbWFwLCBsbyArIGJhc2VhZGRyLCBoaSArIGJh c2VhZGRyIC0gMSwKKy0JCQkgZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tjdV9p bmRleF0pOworKwkJCSBkdzJfZ2V0X2N1IChjdV9pbmRleCkpOworICAgICB9CisgCisgICBvYmpm aWxlLT5wc3ltdGFic19hZGRybWFwID0gYWRkcm1hcF9jcmVhdGVfZml4ZWQgKG11dGFibGVfbWFw LAorQEAgLTE4MDUsOCArMTg3OCw5IEBAIGR3YXJmMl9yZWFkX2luZGV4IChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmkKKyAgIGNoYXIgKmFkZHI7CisgICBzdHJ1Y3QgbWFwcGVkX2luZGV4ICptYXA7Cisg ICBvZmZzZXRfdHlwZSAqbWV0YWRhdGE7CistICBjb25zdCBnZGJfYnl0ZSAqY3VfbGlzdDsKKy0g IG9mZnNldF90eXBlIGN1X2xpc3RfZWxlbWVudHM7CisrICBjb25zdCBnZGJfYnl0ZSAqY3VfbGlz dCwgKnR5cGVzX2xpc3Q7CisrICBvZmZzZXRfdHlwZSB2ZXJzaW9uLCBjdV9saXN0X2VsZW1lbnRz LCB0eXBlc19saXN0X2VsZW1lbnRzOworKyAgaW50IGk7CisgCisgICBpZiAoZHdhcmYyX3Blcl9v YmpmaWxlLT5nZGJfaW5kZXguYXNlY3Rpb24gPT0gTlVMTAorICAgICAgIHx8IGR3YXJmMl9wZXJf b2JqZmlsZS0+Z2RiX2luZGV4LnNpemUgPT0gMCkKK0BAIC0xODIyLDI2ICsxODk2LDU4IEBAIGR3 YXJmMl9yZWFkX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKKyAKKyAgIGFkZHIgPSBkd2Fy ZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5idWZmZXI7CisgICAvKiBWZXJzaW9uIGNoZWNrLiAg Ki8KKy0gIGlmIChNQVlCRV9TV0FQICgqKG9mZnNldF90eXBlICopIGFkZHIpICE9IDEpCisrICB2 ZXJzaW9uID0gTUFZQkVfU1dBUCAoKihvZmZzZXRfdHlwZSAqKSBhZGRyKTsKKysgIGlmICh2ZXJz aW9uID09IDEpCisrICAgIHsKKysgICAgICAvKiBJbmRleCB2ZXJzaW9uIDEgbmVnbGVjdGVkIHRv IGFjY291bnQgZm9yIC5kZWJ1Z190eXBlcy4gIFNvLAorKwkgaWYgd2Ugc2VlIC5kZWJ1Z190eXBl cywgd2UgY2Fubm90IHVzZSB0aGlzIGluZGV4LiAgKi8KKysgICAgICBpZiAoZHdhcmYyX3Blcl9v YmpmaWxlLT50eXBlcy5hc2VjdGlvbiAhPSBOVUxMCisrCSAgJiYgZHdhcmYyX3Blcl9vYmpmaWxl LT50eXBlcy5zaXplICE9IDApCisrCXJldHVybiAwOworKyAgICB9CisrICBlbHNlIGlmICh2ZXJz aW9uICE9IDIpCisgICAgIHJldHVybiAwOworIAorICAgbWFwID0gT0JTVEFDS19aQUxMT0MgKCZv YmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHN0cnVjdCBtYXBwZWRfaW5kZXgpOworICAgbWFwLT50 b3RhbF9zaXplID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguc2l6ZTsKKyAKKyAgIG1l dGFkYXRhID0gKG9mZnNldF90eXBlICopIChhZGRyICsgc2l6ZW9mIChvZmZzZXRfdHlwZSkpOwor LSAgY3VfbGlzdCA9IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVswXSk7CistICBjdV9saXN0 X2VsZW1lbnRzID0gKChNQVlCRV9TV0FQIChtZXRhZGF0YVsxXSkgLSBNQVlCRV9TV0FQIChtZXRh ZGF0YVswXSkpCisrCisrICBpID0gMDsKKysgIGN1X2xpc3QgPSBhZGRyICsgTUFZQkVfU1dBUCAo bWV0YWRhdGFbaV0pOworKyAgY3VfbGlzdF9lbGVtZW50cyA9ICgoTUFZQkVfU1dBUCAobWV0YWRh dGFbaSArIDFdKSAtIE1BWUJFX1NXQVAgKG1ldGFkYXRhW2ldKSkKKyAJCSAgICAgIC8gOCk7Cist ICBtYXAtPmFkZHJlc3NfdGFibGUgPSBhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbMV0pOwor LSAgbWFwLT5hZGRyZXNzX3RhYmxlX3NpemUgPSAoTUFZQkVfU1dBUCAobWV0YWRhdGFbMl0pCist CQkJICAgICAtIE1BWUJFX1NXQVAgKG1ldGFkYXRhWzFdKSk7CistICBtYXAtPmluZGV4X3RhYmxl ID0gKG9mZnNldF90eXBlICopIChhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbMl0pKTsKKy0g IG1hcC0+aW5kZXhfdGFibGVfc2xvdHMgPSAoKE1BWUJFX1NXQVAgKG1ldGFkYXRhWzNdKQorLQkJ CSAgICAgLSBNQVlCRV9TV0FQIChtZXRhZGF0YVsyXSkpCisrICArK2k7CisrCisrICBpZiAodmVy c2lvbiA9PSAyKQorKyAgICB7CisrICAgICAgdHlwZXNfbGlzdCA9IGFkZHIgKyBNQVlCRV9TV0FQ IChtZXRhZGF0YVtpXSk7CisrICAgICAgdHlwZXNfbGlzdF9lbGVtZW50cyA9ICgoTUFZQkVfU1dB UCAobWV0YWRhdGFbaSArIDFdKQorKwkJCSAgICAgIC0gTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0p KQorKwkJCSAgICAgLyA4KTsKKysgICAgICArK2k7CisrICAgIH0KKysKKysgIG1hcC0+YWRkcmVz c190YWJsZSA9IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSk7CisrICBtYXAtPmFkZHJl c3NfdGFibGVfc2l6ZSA9IChNQVlCRV9TV0FQIChtZXRhZGF0YVtpICsgMV0pCisrCQkJICAgICAt IE1BWUJFX1NXQVAgKG1ldGFkYXRhW2ldKSk7CisrICArK2k7CisrCisrICBtYXAtPmluZGV4X3Rh YmxlID0gKG9mZnNldF90eXBlICopIChhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pKTsK KysgIG1hcC0+aW5kZXhfdGFibGVfc2xvdHMgPSAoKE1BWUJFX1NXQVAgKG1ldGFkYXRhW2kgKyAx XSkKKysJCQkgICAgIC0gTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pKQorIAkJCSAgICAvICgyICog c2l6ZW9mIChvZmZzZXRfdHlwZSkpKTsKKy0gIG1hcC0+Y29uc3RhbnRfcG9vbCA9IGFkZHIgKyBN QVlCRV9TV0FQIChtZXRhZGF0YVszXSk7CisrICArK2k7CisgCistICBpZiAoIWNyZWF0ZV9jdXNf ZnJvbV9pbmRleCAob2JqZmlsZSwgbWFwLCBjdV9saXN0LCBjdV9saXN0X2VsZW1lbnRzKSkKKysg IG1hcC0+Y29uc3RhbnRfcG9vbCA9IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSk7Cisr CisrICBpZiAoIWNyZWF0ZV9jdXNfZnJvbV9pbmRleCAob2JqZmlsZSwgY3VfbGlzdCwgY3VfbGlz dF9lbGVtZW50cykpCisrICAgIHJldHVybiAwOworKworKyAgaWYgKHZlcnNpb24gPT0gMgorKyAg ICAgICYmIHR5cGVzX2xpc3RfZWxlbWVudHMKKysgICAgICAmJiAhY3JlYXRlX3NpZ25hdHVyZWRf dHlwZV9oYXNoX2Zyb21faW5kZXggKG9iamZpbGUsIHR5cGVzX2xpc3QsCisrCQkJCQkJICB0eXBl c19saXN0X2VsZW1lbnRzKSkKKyAgICAgcmV0dXJuIDA7CisgCisgICBjcmVhdGVfYWRkcm1hcF9m cm9tX2luZGV4IChvYmpmaWxlLCBtYXApOworQEAgLTE5NjgsOCArMjA3NCw3IEBAIGR3Ml9maW5k X2xhc3Rfc291cmNlX3N5bXRhYiAoc3RydWN0IG9iamYKKyAgIGludCBpbmRleDsKKyAgIGR3Ml9z ZXR1cCAob2JqZmlsZSk7CisgICBpbmRleCA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3Vu aXRzIC0gMTsKKy0gIHJldHVybiBkdzJfaW5zdGFudGlhdGVfc3ltdGFiIChvYmpmaWxlLAorLQkJ CQkgZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tpbmRleF0pOworKyAgcmV0dXJu IGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKG9iamZpbGUsIGR3Ml9nZXRfY3UgKGluZGV4KSk7Cisg fQorIAorIHN0YXRpYyB2b2lkCitAQCAtMTk3OCw5ICsyMDgzLDEwIEBAIGR3Ml9mb3JnZXRfY2Fj aGVkX3NvdXJjZV9pbmZvIChzdHJ1Y3Qgb2IKKyAgIGludCBpOworIAorICAgZHcyX3NldHVwIChv YmpmaWxlKTsKKy0gIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91 bml0czsgKytpKQorKyAgZm9yIChpID0gMDsgaSA8IChkd2FyZjJfcGVyX29iamZpbGUtPm5fY29t cF91bml0cworKwkJICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9jb21wX3VuaXRzKTsg KytpKQorICAgICB7CistICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2Fy ZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOworKyAgICAgIHN0cnVjdCBkd2FyZjJf cGVyX2N1X2RhdGEgKmN1ID0gZHcyX2dldF9jdSAoaSk7CisgCisgICAgICAgaWYgKGN1LT52LnF1 aWNrLT5mdWxsX25hbWVzKQorIAl7CitAQCAtMjAwMiwxMCArMjEwOCwxMSBAQCBkdzJfbG9va3Vw X3N5bXRhYiAoc3RydWN0IG9iamZpbGUgKm9iamZpCisgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9k YXRhICpiYXNlX2N1ID0gTlVMTDsKKyAKKyAgIGR3Ml9zZXR1cCAob2JqZmlsZSk7CistICBmb3Ig KGkgPSAwOyBpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKKysgIGZv ciAoaSA9IDA7IGkgPCAoZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMKKysJCSAgICsg ZHdhcmYyX3Blcl9vYmpmaWxlLT5uX3R5cGVfY29tcF91bml0cyk7ICsraSkKKyAgICAgeworICAg ICAgIGludCBqOworLSAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYy X3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tpXTsKKysgICAgICBzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhICpjdSA9IGR3Ml9nZXRfY3UgKGkpOworIAorICAgICAgIGlmIChjdS0+di5xdWlj ay0+c3ltdGFiKQorIAljb250aW51ZTsKK0BAIC0yMDk3LDggKzIyMDQsOCBAQCBkdzJfZG9fZXhw YW5kX3N5bXRhYnNfbWF0Y2hpbmcgKHN0cnVjdCBvCisgCSAgZm9yIChpID0gMDsgaSA8IGxlbjsg KytpKQorIAkgICAgeworIAkgICAgICBvZmZzZXRfdHlwZSBjdV9pbmRleCA9IE1BWUJFX1NXQVAg KHZlY1tpICsgMV0pOworLQkgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdTsKKy0J ICAgICAgY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2N1X2luZGV4XTsK KysJICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkdzJfZ2V0X2N1IChjdV9p bmRleCk7CisrCisgCSAgICAgIGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKG9iamZpbGUsIGN1KTsK KyAJICAgIH0KKyAJfQorQEAgLTIxMjAsOSArMjIyNywxMCBAQCBkdzJfcHJpbnRfc3RhdHMgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlCisgCisgICBkdzJfc2V0dXAgKG9iamZpbGUpOworICAgY291 bnQgPSAwOworLSAgZm9yIChpID0gMDsgaSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3Vu aXRzOyArK2kpCisrICBmb3IgKGkgPSAwOyBpIDwgKGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21w X3VuaXRzCisrCQkgICArIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl90eXBlX2NvbXBfdW5pdHMpOyAr K2kpCisgICAgIHsKKy0gICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3YXJm Ml9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbaV07CisrICAgICAgc3RydWN0IGR3YXJmMl9w ZXJfY3VfZGF0YSAqY3UgPSBkdzJfZ2V0X2N1IChpKTsKKyAKKyAgICAgICBpZiAoIWN1LT52LnF1 aWNrLT5zeW10YWIpCisgCSsrY291bnQ7CitAQCAtMjE1Niw5ICsyMjY0LDExIEBAIGR3Ml9leHBh bmRfYWxsX3N5bXRhYnMgKHN0cnVjdCBvYmpmaWxlICoKKyAgIGludCBpOworIAorICAgZHcyX3Nl dHVwIChvYmpmaWxlKTsKKy0gIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5f Y29tcF91bml0czsgKytpKQorKworKyAgZm9yIChpID0gMDsgaSA8IChkd2FyZjJfcGVyX29iamZp bGUtPm5fY29tcF91bml0cworKwkJICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9jb21w X3VuaXRzKTsgKytpKQorICAgICB7CistICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAq Y3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOworKyAgICAgIHN0cnVj dCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHcyX2dldF9jdSAoaSk7CisgCisgICAgICAgZHcy X2luc3RhbnRpYXRlX3N5bXRhYiAob2JqZmlsZSwgY3UpOworICAgICB9CitAQCAtMjE3MSwxMCAr MjI4MSwxMSBAQCBkdzJfZXhwYW5kX3N5bXRhYnNfd2l0aF9maWxlbmFtZSAoc3RydWN0CisgICBp bnQgaTsKKyAKKyAgIGR3Ml9zZXR1cCAob2JqZmlsZSk7CistICBmb3IgKGkgPSAwOyBpIDwgZHdh cmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKKysgIGZvciAoaSA9IDA7IGkgPCAo ZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMKKysJCSAgICsgZHdhcmYyX3Blcl9vYmpm aWxlLT5uX3R5cGVfY29tcF91bml0cyk7ICsraSkKKyAgICAgeworICAgICAgIGludCBqOworLSAg ICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5h bGxfY29tcF91bml0c1tpXTsKKysgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9 IGR3Ml9nZXRfY3UgKGkpOworIAorICAgICAgIGlmIChjdS0+di5xdWljay0+c3ltdGFiKQorIAlj b250aW51ZTsKK0BAIC0yMjE1LDcgKzIzMjYsNyBAQCBkdzJfZmluZF9zeW1ib2xfZmlsZSAoc3Ry dWN0IG9iamZpbGUgKm9iCisgICAgICBzaG91bGQgYmUgcmV3cml0dGVuIHNvIHRoYXQgaXQgZG9l c24ndCByZXF1aXJlIGEgY3VzdG9tIGhvb2suICBJdAorICAgICAgY291bGQganVzdCB1c2UgdGhl IG9yZGluYXJ5IHN5bWJvbCB0YWJsZXMuICAqLworICAgLyogdmVjWzBdIGlzIHRoZSBsZW5ndGgs IHdoaWNoIG11c3QgYWx3YXlzIGJlID4wLiAgKi8KKy0gIGN1ID0gZHdhcmYyX3Blcl9vYmpmaWxl LT5hbGxfY29tcF91bml0c1tNQVlCRV9TV0FQICh2ZWNbMV0pXTsKKysgIGN1ID0gZHcyX2dldF9j dSAoTUFZQkVfU1dBUCAodmVjWzFdKSk7CisgCisgICBkdzJfcmVxdWlyZV9saW5lX2hlYWRlciAo b2JqZmlsZSwgY3UpOworICAgaWYgKCFjdS0+di5xdWljay0+bGluZXMpCitAQCAtMjI1MywxMCAr MjM2NCwxMSBAQCBkdzJfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcgKHN0cnVjdCBvYmpmCisgICBp ZiAoIWR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUpCisgICAgIHJldHVybjsKKyAKKy0g IGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0czsgKytpKQor KyAgZm9yIChpID0gMDsgaSA8IChkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0cworKwkJ ICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9jb21wX3VuaXRzKTsgKytpKQorICAgICB7 CisgICAgICAgaW50IGo7CistICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBk d2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOworKyAgICAgIHN0cnVjdCBkd2Fy ZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHcyX2dldF9jdSAoaSk7CisgCisgICAgICAgY3UtPnYucXVp Y2stPm1hcmsgPSAwOworICAgICAgIGlmIChjdS0+di5xdWljay0+c3ltdGFiKQorQEAgLTIzMDEs OCArMjQxMyw5IEBAIGR3Ml9leHBhbmRfc3ltdGFic19tYXRjaGluZyAoc3RydWN0IG9iamYKKyAg ICAgICB2ZWNfbGVuID0gTUFZQkVfU1dBUCAodmVjWzBdKTsKKyAgICAgICBmb3IgKHZlY19pZHgg PSAwOyB2ZWNfaWR4IDwgdmVjX2xlbjsgKyt2ZWNfaWR4KQorIAl7CistCSAgc3RydWN0IGR3YXJm Ml9wZXJfY3VfZGF0YSAqY3UKKy0JICAgID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91 bml0c1tNQVlCRV9TV0FQICh2ZWNbdmVjX2lkeCArIDFdKV07CisrCSAgc3RydWN0IGR3YXJmMl9w ZXJfY3VfZGF0YSAqY3U7CisrCisrCSAgY3UgPSBkdzJfZ2V0X2N1IChNQVlCRV9TV0FQICh2ZWNb dmVjX2lkeCArIDFdKSk7CisgCSAgaWYgKGN1LT52LnF1aWNrLT5tYXJrKQorIAkgICAgZHcyX2lu c3RhbnRpYXRlX3N5bXRhYiAob2JqZmlsZSwgY3UpOworIAl9CitAQCAtMjM3MiwxMCArMjQ4NSwx MSBAQCBkdzJfbWFwX3N5bWJvbF9maWxlbmFtZXMgKHN0cnVjdCBvYmpmaWxlCisgICBpbnQgaTsK KyAKKyAgIGR3Ml9zZXR1cCAob2JqZmlsZSk7CistICBmb3IgKGkgPSAwOyBpIDwgZHdhcmYyX3Bl cl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKKysgIGZvciAoaSA9IDA7IGkgPCAoZHdhcmYy X3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMKKysJCSAgICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5u X3R5cGVfY29tcF91bml0cyk7ICsraSkKKyAgICAgeworICAgICAgIGludCBqOworLSAgICAgIHN0 cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29t cF91bml0c1tpXTsKKysgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3Ml9n ZXRfY3UgKGkpOworIAorICAgICAgIGlmIChjdS0+di5xdWljay0+c3ltdGFiKQorIAljb250aW51 ZTsKK0BAIC0yNDM2LDEwICsyNTUwLDEyIEBAIGR3YXJmMl9pbml0aWFsaXplX29iamZpbGUgKHN0 cnVjdCBvYmpmaWwKKyAKKyAgICAgICBkd2FyZjJfcGVyX29iamZpbGUtPnVzaW5nX2luZGV4ID0g MTsKKyAgICAgICBjcmVhdGVfYWxsX2NvbXBfdW5pdHMgKG9iamZpbGUpOworKyAgICAgIGNyZWF0 ZV9kZWJ1Z190eXBlc19oYXNoX3RhYmxlIChvYmpmaWxlKTsKKyAKKy0gICAgICBmb3IgKGkgPSAw OyBpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKKysgICAgICBmb3Ig KGkgPSAwOyBpIDwgKGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzCisrCQkgICAgICAg KyBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9jb21wX3VuaXRzKTsgKytpKQorIAl7CistCSAg c3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9j b21wX3VuaXRzW2ldOworKwkgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHcyX2dl dF9jdSAoaSk7CisgCisgCSAgY3UtPnYucXVpY2sgPSBPQlNUQUNLX1pBTExPQyAoJm9iamZpbGUt Pm9iamZpbGVfb2JzdGFjaywKKyAJCQkJCXN0cnVjdCBkd2FyZjJfcGVyX2N1X3F1aWNrX2RhdGEp OworQEAgLTI2NTMsNiArMjc2OSwzNCBAQCBlcV90eXBlX3NpZ25hdHVyZSAoY29uc3Qgdm9pZCAq aXRlbV9saHMsCisgICByZXR1cm4gbGhzLT5zaWduYXR1cmUgPT0gcmhzLT5zaWduYXR1cmU7Cisg fQorIAorKy8qIEFsbG9jYXRlIGEgaGFzaCB0YWJsZSBmb3Igc2lnbmF0dXJlZCB0eXBlcy4gICov CisrCisrc3RhdGljIGh0YWJfdAorK2FsbG9jYXRlX3NpZ25hdHVyZWRfdHlwZV9oYXNoX3RhYmxl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyt7CisrICByZXR1cm4gaHRhYl9jcmVhdGVfYWxs b2NfZXggKDQxLAorKwkJCSAgICAgICBoYXNoX3R5cGVfc2lnbmF0dXJlLAorKwkJCSAgICAgICBl cV90eXBlX3NpZ25hdHVyZSwKKysJCQkgICAgICAgTlVMTCwKKysJCQkgICAgICAgJm9iamZpbGUt Pm9iamZpbGVfb2JzdGFjaywKKysJCQkgICAgICAgaGFzaHRhYl9vYnN0YWNrX2FsbG9jYXRlLAor KwkJCSAgICAgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOworK30KKysKKysvKiBBIGhlbHBl ciBmdW5jdGlvbiB0byBhZGQgYSBzaWduYXR1cmVkIHR5cGUgQ1UgdG8gYSBsaXN0LiAgKi8KKysK KytzdGF0aWMgaW50CisrYWRkX3NpZ25hdHVyZWRfdHlwZV9jdV90b19saXN0ICh2b2lkICoqc2xv dCwgdm9pZCAqZGF0dW0pCisreworKyAgc3RydWN0IHNpZ25hdHVyZWRfdHlwZSAqc2lndCA9ICpz bG90OworKyAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKipkYXRhcCA9IGRhdHVtOworKwor KyAgKipkYXRhcCA9ICZzaWd0LT5wZXJfY3U7CisrICArKypkYXRhcDsKKysKKysgIHJldHVybiAx OworK30KKysKKyAvKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgb2YgYWxsIGVudHJpZXMgaW4gdGhl IC5kZWJ1Z190eXBlcyBzZWN0aW9uLgorICAgIFRoZSByZXN1bHQgaXMgemVybyBpZiB0aGVyZSBp cyBhbiBlcnJvciAoZS5nLiBtaXNzaW5nIC5kZWJ1Z190eXBlcyBzZWN0aW9uKSwKKyAgICBvdGhl cndpc2Ugbm9uLXplcm8uCSovCitAQCAtMjY2Miw2ICsyODA2LDcgQEAgY3JlYXRlX2RlYnVnX3R5 cGVzX2hhc2hfdGFibGUgKHN0cnVjdCBvYgorIHsKKyAgIGdkYl9ieXRlICppbmZvX3B0cjsKKyAg IGh0YWJfdCB0eXBlc19odGFiOworKyAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKml0ZXI7 CisgCisgICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCAmZHdhcmYyX3Blcl9vYmpmaWxl LT50eXBlcyk7CisgICBpbmZvX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+dHlwZXMuYnVmZmVy OworQEAgLTI2NzIsMTMgKzI4MTcsNyBAQCBjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSAo c3RydWN0IG9iCisgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKyAKKy0gIHR5cGVzX2h0YWIgPSBo dGFiX2NyZWF0ZV9hbGxvY19leCAoNDEsCistCQkJCSAgICAgaGFzaF90eXBlX3NpZ25hdHVyZSwK Ky0JCQkJICAgICBlcV90eXBlX3NpZ25hdHVyZSwKKy0JCQkJICAgICBOVUxMLAorLQkJCQkgICAg ICZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCistCQkJCSAgICAgaGFzaHRhYl9vYnN0YWNrX2Fs bG9jYXRlLAorLQkJCQkgICAgIGR1bW15X29ic3RhY2tfZGVhbGxvY2F0ZSk7CisrICB0eXBlc19o dGFiID0gYWxsb2NhdGVfc2lnbmF0dXJlZF90eXBlX2hhc2hfdGFibGUgKG9iamZpbGUpOworIAor ICAgaWYgKGR3YXJmMl9kaWVfZGVidWcpCisgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywgIlNpZ25hdHVyZWQgdHlwZXM6XG4iKTsKK0BAIC0yNzI2LDYgKzI4NjUsNyBAQCBjcmVh dGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSAoc3RydWN0IG9iCisgICAgICAgdHlwZV9zaWctPm9m ZnNldCA9IG9mZnNldDsKKyAgICAgICB0eXBlX3NpZy0+dHlwZV9vZmZzZXQgPSB0eXBlX29mZnNl dDsKKyAgICAgICB0eXBlX3NpZy0+cGVyX2N1Lm9iamZpbGUgPSBvYmpmaWxlOworKyAgICAgIHR5 cGVfc2lnLT5wZXJfY3UuZnJvbV9kZWJ1Z190eXBlcyA9IDE7CisgCisgICAgICAgc2xvdCA9IGh0 YWJfZmluZF9zbG90ICh0eXBlc19odGFiLCB0eXBlX3NpZywgSU5TRVJUKTsKKyAgICAgICBnZGJf YXNzZXJ0IChzbG90ICE9IE5VTEwpOworQEAgLTI3NDAsNiArMjg4MCwxNiBAQCBjcmVhdGVfZGVi dWdfdHlwZXNfaGFzaF90YWJsZSAoc3RydWN0IG9iCisgCisgICBkd2FyZjJfcGVyX29iamZpbGUt PnNpZ25hdHVyZWRfdHlwZXMgPSB0eXBlc19odGFiOworIAorKyAgZHdhcmYyX3Blcl9vYmpmaWxl LT5uX3R5cGVfY29tcF91bml0cyA9IGh0YWJfZWxlbWVudHMgKHR5cGVzX2h0YWIpOworKyAgZHdh cmYyX3Blcl9vYmpmaWxlLT50eXBlX2NvbXBfdW5pdHMKKysgICAgPSBvYnN0YWNrX2FsbG9jICgm b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKwkJICAgICBkd2FyZjJfcGVyX29iamZpbGUtPm5f dHlwZV9jb21wX3VuaXRzCisrCQkgICAgICogc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9k YXRhICopKTsKKysgIGl0ZXIgPSAmZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlX2NvbXBfdW5pdHNb MF07CisrICBodGFiX3RyYXZlcnNlX25vcmVzaXplICh0eXBlc19odGFiLCBhZGRfc2lnbmF0dXJl ZF90eXBlX2N1X3RvX2xpc3QsICZpdGVyKTsKKysgIGdkYl9hc3NlcnQgKGl0ZXIgLSAmZHdhcmYy X3Blcl9vYmpmaWxlLT50eXBlX2NvbXBfdW5pdHNbMF0KKysJICAgICAgPT0gZHdhcmYyX3Blcl9v YmpmaWxlLT5uX3R5cGVfY29tcF91bml0cyk7CisrCisgICByZXR1cm4gMTsKKyB9CisgCitAQCAt MzAwOCw3ICszMTU4LDYgQEAgcHJvY2Vzc190eXBlX2NvbXBfdW5pdCAodm9pZCAqKnNsb3QsIHZv aQorICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqdGhpc19jdTsKKyAKKyAgIHRoaXNfY3Ug PSAmZW50cnktPnBlcl9jdTsKKy0gIHRoaXNfY3UtPmZyb21fZGVidWdfdHlwZXMgPSAxOworIAor ICAgZ2RiX2Fzc2VydCAoZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlcy5yZWFkaW4pOworICAgcHJv Y2Vzc19wc3ltdGFiX2NvbXBfdW5pdCAob2JqZmlsZSwgdGhpc19jdSwKK0BAIC0xMjQ4MywxMyAr MTI2MzIsMTYgQEAgc3RhdGljIHZvaWQKKyByZWFkX3NpZ25hdHVyZWRfdHlwZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCisgCQkgICAgICBzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlICp0eXBlX3Np ZykKKyB7CistICBnZGJfYnl0ZSAqdHlwZXNfcHRyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBl cy5idWZmZXIgKyB0eXBlX3NpZy0+b2Zmc2V0OworKyAgZ2RiX2J5dGUgKnR5cGVzX3B0cjsKKyAg IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzIHJlYWRlcl9zcGVjczsKKyAgIHN0cnVjdCBkd2FyZjJf Y3UgKmN1OworICAgVUxPTkdFU1Qgc2lnbmF0dXJlOworICAgc3RydWN0IGNsZWFudXAgKmJhY2tf dG8sICpmcmVlX2N1X2NsZWFudXA7CisgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOworIAorKyAg ZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgJmR3YXJmMl9wZXJfb2JqZmlsZS0+dHlwZXMp OworKyAgdHlwZXNfcHRyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlcy5idWZmZXIgKyB0eXBl X3NpZy0+b2Zmc2V0OworKworICAgZ2RiX2Fzc2VydCAodHlwZV9zaWctPnBlcl9jdS5jdSA9PSBO VUxMKTsKKyAKKyAgIGN1ID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2N1KSk7CitA QCAtMTQ0MDIsNiArMTQ1NTQsMTAgQEAgYWRkX2FkZHJlc3NfZW50cnkgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaQorICAgY2hhciBhZGRyWzhdOworICAgQ09SRV9BRERSIGJhc2VhZGRyOworIAorKyAg LyogRG9uJ3QgYm90aGVyIHJlY29yZGluZyBlbXB0eSByYW5nZXMuICAqLworKyAgaWYgKHBzdC0+ dGV4dGxvdyA9PSBwc3QtPnRleHRoaWdoKQorKyAgICByZXR1cm47CisrCisgICBiYXNlYWRkciA9 IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKG9iamZp bGUpKTsKKyAKKyAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGFkZHIsIDgsIEJGRF9FTkRJQU5f TElUVExFLCBwc3QtPnRleHRsb3cgLSBiYXNlYWRkcik7CitAQCAtMTQ0NDcsMTMgKzE0NjAzLDUz IEBAIHVubGlua19pZl9zZXQgKHZvaWQgKnApCisgICAgIHVubGluayAoKmZpbGVuYW1lKTsKKyB9 CisgCisrLyogQSBoZWxwZXIgc3RydWN0IHVzZWQgd2hlbiBpdGVyYXRpbmcgb3ZlciBkZWJ1Z190 eXBlcy4gICovCisrc3RydWN0IHNpZ25hdHVyZWRfdHlwZV9pbmRleF9kYXRhCisreworKyAgc3Ry dWN0IG9iamZpbGUgKm9iamZpbGU7CisrICBzdHJ1Y3QgbWFwcGVkX3N5bXRhYiAqc3ltdGFiOwor KyAgc3RydWN0IG9ic3RhY2sgKnR5cGVzX2xpc3Q7CisrICBpbnQgY3VfaW5kZXg7CisrfTsKKysK KysvKiBBIGhlbHBlciBmdW5jdGlvbiB0aGF0IHdyaXRlcyBhIHNpbmdsZSBzaWduYXR1cmVkX3R5 cGUgdG8gYW4KKysgICBvYnN0YWNrLiAgKi8KKytzdGF0aWMgaW50Cisrd3JpdGVfb25lX3NpZ25h dHVyZWRfdHlwZSAodm9pZCAqKnNsb3QsIHZvaWQgKmQpCisreworKyAgc3RydWN0IHNpZ25hdHVy ZWRfdHlwZV9pbmRleF9kYXRhICppbmZvID0gZDsKKysgIHN0cnVjdCBzaWduYXR1cmVkX3R5cGUg KmVudHJ5ID0gKHN0cnVjdCBzaWduYXR1cmVkX3R5cGUgKikgKnNsb3Q7CisrICBzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICpjdSA9ICZlbnRyeS0+cGVyX2N1OworKyAgc3RydWN0IHBhcnRpYWxf c3ltdGFiICpwc3ltdGFiID0gY3UtPnYucHN5bXRhYjsKKysgIGdkYl9ieXRlIHZhbFs4XTsKKysK KysgIHdyaXRlX3BzeW1ib2xzIChpbmZvLT5zeW10YWIsCisrCQkgIGluZm8tPm9iamZpbGUtPmds b2JhbF9wc3ltYm9scy5saXN0ICsgcHN5bXRhYi0+Z2xvYmFsc19vZmZzZXQsCisrCQkgIHBzeW10 YWItPm5fZ2xvYmFsX3N5bXMsIGluZm8tPmN1X2luZGV4KTsKKysgIHdyaXRlX3BzeW1ib2xzIChp bmZvLT5zeW10YWIsCisrCQkgIGluZm8tPm9iamZpbGUtPnN0YXRpY19wc3ltYm9scy5saXN0ICsg cHN5bXRhYi0+c3RhdGljc19vZmZzZXQsCisrCQkgIHBzeW10YWItPm5fc3RhdGljX3N5bXMsIGlu Zm8tPmN1X2luZGV4KTsKKysKKysgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKHZhbCwgOCwgQkZE X0VORElBTl9MSVRUTEUsIGVudHJ5LT5vZmZzZXQpOworKyAgb2JzdGFja19ncm93IChpbmZvLT50 eXBlc19saXN0LCB2YWwsIDgpOworKyAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAodmFsLCA4LCBC RkRfRU5ESUFOX0xJVFRMRSwgZW50cnktPnR5cGVfb2Zmc2V0KTsKKysgIG9ic3RhY2tfZ3JvdyAo aW5mby0+dHlwZXNfbGlzdCwgdmFsLCA4KTsKKysgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKHZh bCwgOCwgQkZEX0VORElBTl9MSVRUTEUsIGVudHJ5LT5zaWduYXR1cmUpOworKyAgb2JzdGFja19n cm93IChpbmZvLT50eXBlc19saXN0LCB2YWwsIDgpOworKworKyAgKytpbmZvLT5jdV9pbmRleDsK KysKKysgIHJldHVybiAxOworK30KKysKKyAvKiBDcmVhdGUgYW4gaW5kZXggZmlsZSBmb3IgT0JK RklMRSBpbiB0aGUgZGlyZWN0b3J5IERJUi4gICovCisgc3RhdGljIHZvaWQKKyB3cml0ZV9wc3lt dGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKmRpcikK KyB7CisgICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKKyAgIGNoYXIgKmZpbGVuYW1lLCAqY2xl YW51cF9maWxlbmFtZTsKKy0gIHN0cnVjdCBvYnN0YWNrIGNvbnRlbnRzLCBhZGRyX29ic3RhY2ss IGNvbnN0YW50X3Bvb2wsIHN5bXRhYl9vYnN0YWNrLCBjdV9saXN0OworKyAgc3RydWN0IG9ic3Rh Y2sgY29udGVudHMsIGFkZHJfb2JzdGFjaywgY29uc3RhbnRfcG9vbCwgc3ltdGFiX29ic3RhY2s7 CisrICBzdHJ1Y3Qgb2JzdGFjayBjdV9saXN0LCB0eXBlc19jdV9saXN0OworICAgaW50IGk7Cisg ICBGSUxFICpvdXRfZmlsZTsKKyAgIHN0cnVjdCBtYXBwZWRfc3ltdGFiICpzeW10YWI7CitAQCAt MTQ0ODksNiArMTQ2ODUsMTIgQEAgd3JpdGVfcHN5bXRhYnNfdG9faW5kZXggKHN0cnVjdCBvYmpm aWxlIAorICAgb2JzdGFja19pbml0ICgmY3VfbGlzdCk7CisgICBtYWtlX2NsZWFudXBfb2JzdGFj a19mcmVlICgmY3VfbGlzdCk7CisgCisrICBvYnN0YWNrX2luaXQgKCZ0eXBlc19jdV9saXN0KTsK KysgIG1ha2VfY2xlYW51cF9vYnN0YWNrX2ZyZWUgKCZ0eXBlc19jdV9saXN0KTsKKysKKysgIC8q IFRoZSBsaXN0IGlzIGFscmVhZHkgc29ydGVkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFkZGl0 aW9uYWwKKysgICAgIHdvcmsgaGVyZS4gIEFsc28sIHRoZSBkZWJ1Z190eXBlcyBlbnRyaWVzIGRv IG5vdCBhcHBlYXIgaW4KKysgICAgIGFsbF9jb21wX3VuaXRzLCBidXQgb25seSBpbiB0aGVpciBv d24gaGFzaCB0YWJsZS4gICovCisgICBmb3IgKGkgPSAwOyBpIDwgZHdhcmYyX3Blcl9vYmpmaWxl LT5uX2NvbXBfdW5pdHM7ICsraSkKKyAgICAgeworICAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tpXTsKK0BAIC0x NDUxMCw2ICsxNDcxMiwxOSBAQCB3cml0ZV9wc3ltdGFic190b19pbmRleCAoc3RydWN0IG9iamZp bGUgCisgICAgICAgb2JzdGFja19ncm93ICgmY3VfbGlzdCwgdmFsLCA4KTsKKyAgICAgfQorIAor KyAgLyogV3JpdGUgb3V0IHRoZSAuZGVidWdfdHlwZSBlbnRyaWVzLCBpZiBhbnkuICAqLworKyAg aWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+c2lnbmF0dXJlZF90eXBlcykKKysgICAgeworKyAgICAg IHN0cnVjdCBzaWduYXR1cmVkX3R5cGVfaW5kZXhfZGF0YSBzaWdfZGF0YTsKKysKKysgICAgICBz aWdfZGF0YS5vYmpmaWxlID0gb2JqZmlsZTsKKysgICAgICBzaWdfZGF0YS5zeW10YWIgPSBzeW10 YWI7CisrICAgICAgc2lnX2RhdGEudHlwZXNfbGlzdCA9ICZ0eXBlc19jdV9saXN0OworKyAgICAg IHNpZ19kYXRhLmN1X2luZGV4ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7Cisr ICAgICAgaHRhYl90cmF2ZXJzZV9ub3Jlc2l6ZSAoZHdhcmYyX3Blcl9vYmpmaWxlLT5zaWduYXR1 cmVkX3R5cGVzLAorKwkJCSAgICAgIHdyaXRlX29uZV9zaWduYXR1cmVkX3R5cGUsICZzaWdfZGF0 YSk7CisrICAgIH0KKysKKyAgIG9ic3RhY2tfaW5pdCAoJmNvbnN0YW50X3Bvb2wpOworICAgbWFr ZV9jbGVhbnVwX29ic3RhY2tfZnJlZSAoJmNvbnN0YW50X3Bvb2wpOworICAgb2JzdGFja19pbml0 ICgmc3ltdGFiX29ic3RhY2spOworQEAgLTE0NTE4LDExICsxNDczMywxMSBAQCB3cml0ZV9wc3lt dGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgCisgCisgICBvYnN0YWNrX2luaXQgKCZjb250 ZW50cyk7CisgICBtYWtlX2NsZWFudXBfb2JzdGFja19mcmVlICgmY29udGVudHMpOworLSAgc2l6 ZV9vZl9jb250ZW50cyA9IDUgKiBzaXplb2YgKG9mZnNldF90eXBlKTsKKysgIHNpemVfb2ZfY29u dGVudHMgPSA2ICogc2l6ZW9mIChvZmZzZXRfdHlwZSk7CisgICB0b3RhbF9sZW4gPSBzaXplX29m X2NvbnRlbnRzOworIAorICAgLyogVGhlIHZlcnNpb24gbnVtYmVyLiAgKi8KKy0gIHZhbCA9IE1B WUJFX1NXQVAgKDEpOworKyAgdmFsID0gTUFZQkVfU1dBUCAoMik7CisgICBvYnN0YWNrX2dyb3cg KCZjb250ZW50cywgJnZhbCwgc2l6ZW9mICh2YWwpKTsKKyAKKyAgIC8qIFRoZSBvZmZzZXQgb2Yg dGhlIENVIGxpc3QgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUuICAqLworQEAgLTE0NTMwLDYg KzE0NzQ1LDExIEBAIHdyaXRlX3BzeW10YWJzX3RvX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAKKyAg IG9ic3RhY2tfZ3JvdyAoJmNvbnRlbnRzLCAmdmFsLCBzaXplb2YgKHZhbCkpOworICAgdG90YWxf bGVuICs9IG9ic3RhY2tfb2JqZWN0X3NpemUgKCZjdV9saXN0KTsKKyAKKysgIC8qIFRoZSBvZmZz ZXQgb2YgdGhlIHR5cGVzIENVIGxpc3QgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUuICAqLwor KyAgdmFsID0gTUFZQkVfU1dBUCAodG90YWxfbGVuKTsKKysgIG9ic3RhY2tfZ3JvdyAoJmNvbnRl bnRzLCAmdmFsLCBzaXplb2YgKHZhbCkpOworKyAgdG90YWxfbGVuICs9IG9ic3RhY2tfb2JqZWN0 X3NpemUgKCZ0eXBlc19jdV9saXN0KTsKKysKKyAgIC8qIFRoZSBvZmZzZXQgb2YgdGhlIGFkZHJl c3MgdGFibGUgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUuICAqLworICAgdmFsID0gTUFZQkVf U1dBUCAodG90YWxfbGVuKTsKKyAgIG9ic3RhY2tfZ3JvdyAoJmNvbnRlbnRzLCAmdmFsLCBzaXpl b2YgKHZhbCkpOworQEAgLTE0NTQ5LDYgKzE0NzY5LDcgQEAgd3JpdGVfcHN5bXRhYnNfdG9faW5k ZXggKHN0cnVjdCBvYmpmaWxlIAorIAorICAgd3JpdGVfb2JzdGFjayAob3V0X2ZpbGUsICZjb250 ZW50cyk7CisgICB3cml0ZV9vYnN0YWNrIChvdXRfZmlsZSwgJmN1X2xpc3QpOworKyAgd3JpdGVf b2JzdGFjayAob3V0X2ZpbGUsICZ0eXBlc19jdV9saXN0KTsKKyAgIHdyaXRlX29ic3RhY2sgKG91 dF9maWxlLCAmYWRkcl9vYnN0YWNrKTsKKyAgIHdyaXRlX29ic3RhY2sgKG91dF9maWxlLCAmc3lt dGFiX29ic3RhY2spOworICAgd3JpdGVfb2JzdGFjayAob3V0X2ZpbGUsICZjb25zdGFudF9wb29s KTsKK0BAIC0xNDU3MywxOCArMTQ3OTQsMzMgQEAgd3JpdGVfcHN5bXRhYnNfdG9faW5kZXggKHN0 cnVjdCBvYmpmaWxlIAorIAorICAgIDEuIFRoZSBmaWxlIGhlYWRlci4gIFRoaXMgaXMgYSBzZXF1 ZW5jZSBvZiB2YWx1ZXMsIG9mIG9mZnNldF90eXBlCisgICAgdW5sZXNzIG90aGVyd2lzZSBub3Rl ZDoKKy0gICBbMF0gVGhlIHZlcnNpb24gbnVtYmVyLiAgQ3VycmVudGx5IDEuCisrICAgWzBdIFRo ZSB2ZXJzaW9uIG51bWJlci4gIEN1cnJlbnRseSAxIG9yIDIuICBUaGUgZGlmZmVyZW5jZXMgYXJl CisrICAgbm90ZWQgYmVsb3cuICBWZXJzaW9uIDEgZGlkIG5vdCBhY2NvdW50IGZvciAuZGVidWdf dHlwZXMgc2VjdGlvbnM7CisrICAgdGhlIHByZXNlbmNlIG9mIGEgLmRlYnVnX3R5cGVzIHNlY3Rp b24gaW52YWxpZGF0ZXMgYW55IHZlcnNpb24gMQorKyAgIGluZGV4IHRoYXQgbWF5IGV4aXN0Lgor ICAgIFsxXSBUaGUgb2Zmc2V0LCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZSwgb2YgdGhlIENV IGxpc3QuCisrICAgWzEuNV0gSW4gdmVyc2lvbiAyLCB0aGUgb2Zmc2V0LCBmcm9tIHRoZSBzdGFy dCBvZiB0aGUgZmlsZSwgb2YgdGhlCisrICAgdHlwZXMgQ1UgbGlzdC4gIFRoaXMgb2Zmc2V0IGRv ZXMgbm90IGFwcGVhciBpbiB2ZXJzaW9uIDEuICBOb3RlCisrICAgdGhhdCB0aGlzIGNhbiBiZSBl bXB0eSwgaW4gd2hpY2ggY2FzZSB0aGlzIG9mZnNldCB3aWxsIGJlIGVxdWFsIHRvCisrICAgdGhl IG5leHQgb2Zmc2V0LgorICAgIFsyXSBUaGUgb2Zmc2V0LCBmcm9tIHRoZSBzdGFydCBvZiB0aGUg ZmlsZSwgb2YgdGhlIGFkZHJlc3Mgc2VjdGlvbi4KKyAgICBbM10gVGhlIG9mZnNldCwgZnJvbSB0 aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRoZSBzeW1ib2wgdGFibGUuCisgICAgWzRdIFRoZSBv ZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUgY29uc3RhbnQgcG9vbC4K KyAKKyAgICAyLiBUaGUgQ1UgbGlzdC4gIFRoaXMgaXMgYSBzZXF1ZW5jZSBvZiBwYWlycyBvZiA2 NC1iaXQKKy0gICBsaXR0bGUtZW5kaWFuIHZhbHVlcy4gIFRoZSBmaXJzdCBlbGVtZW50IGluIGVh Y2ggcGFpciBpcyB0aGUgb2Zmc2V0CistICAgb2YgYSBDVSBpbiB0aGUgLmRlYnVnX2luZm8gc2Vj dGlvbi4gIFRoZSBzZWNvbmQgZWxlbWVudCBpbiBlYWNoCistICAgcGFpciBpcyB0aGUgbGVuZ3Ro IG9mIHRoYXQgQ1UuICBSZWZlcmVuY2VzIHRvIGEgQ1UgZWxzZXdoZXJlIGluIHRoZQorLSAgIG1h cCBhcmUgZG9uZSB1c2luZyBhIENVIGluZGV4LCB3aGljaCBpcyBqdXN0IHRoZSAwLWJhc2VkIGlu ZGV4IGludG8KKy0gICB0aGlzIHRhYmxlLgorKyAgIGxpdHRsZS1lbmRpYW4gdmFsdWVzLCBzb3J0 ZWQgYnkgdGhlIENVIG9mZnNldC4gIFRoZSBmaXJzdCBlbGVtZW50CisrICAgaW4gZWFjaCBwYWly IGlzIHRoZSBvZmZzZXQgb2YgYSBDVSBpbiB0aGUgLmRlYnVnX2luZm8gc2VjdGlvbi4gIFRoZQor KyAgIHNlY29uZCBlbGVtZW50IGluIGVhY2ggcGFpciBpcyB0aGUgbGVuZ3RoIG9mIHRoYXQgQ1Uu ICBSZWZlcmVuY2VzCisrICAgdG8gYSBDVSBlbHNld2hlcmUgaW4gdGhlIG1hcCBhcmUgZG9uZSB1 c2luZyBhIENVIGluZGV4LCB3aGljaCBpcworKyAgIGp1c3QgdGhlIDAtYmFzZWQgaW5kZXggaW50 byB0aGlzIHRhYmxlLiAgTm90ZSB0aGF0IGlmIHRoZXJlIGFyZQorKyAgIHR5cGUgQ1VzLCB0aGVu IGNvbmNlcHR1YWxseSBDVXMgYW5kIHR5cGUgQ1VzIGZvcm0gYSBzaW5nbGUgbGlzdCBmb3IKKysg ICB0aGUgcHVycG9zZXMgb2YgQ1UgaW5kaWNlcy4KKysKKysgICAyLjUgVGhlIHR5cGVzIENVIGxp c3QuICBUaGlzIGRvZXMgbm90IGFwcGVhciBpbiBhIHZlcnNpb24gMSBpbmRleC4KKysgICBUaGlz IGlzIGEgc2VxdWVuY2Ugb2YgdHJpcGxldHMgb2YgNjQtYml0IGxpdHRsZS1lbmRpYW4gdmFsdWVz LiAgSW4KKysgICBhIHRyaXBsZXQsIHRoZSBmaXJzdCB2YWx1ZSBpcyB0aGUgQ1Ugb2Zmc2V0LCB0 aGUgc2Vjb25kIHZhbHVlIGlzCisrICAgdGhlIHR5cGUgb2Zmc2V0IGluIHRoZSBDVSwgYW5kIHRo ZSB0aGlyZCB2YWx1ZSBpcyB0aGUgdHlwZQorKyAgIHNpZ25hdHVyZS4gIFRoZSB0eXBlcyBDVSBs aXN0IGlzIG5vdCBzb3J0ZWQuCisgCisgICAgMy4gVGhlIGFkZHJlc3Mgc2VjdGlvbi4gIFRoZSBh ZGRyZXNzIHNlY3Rpb24gY29uc2lzdHMgb2YgYSBzZXF1ZW5jZQorICAgIG9mIGFkZHJlc3MgZW50 cmllcy4gIEVhY2ggYWRkcmVzcyBlbnRyeSBoYXMgdGhyZWUgZWxlbWVudHMuCgpkaWZmIC0tZ2l0 IGEvZ2RiLWdkYmluZGV4LXYyLXRvLXYzLnBhdGNoIGIvZ2RiLWdkYmluZGV4LXYyLXRvLXYzLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiZDcwNDUKLS0tIC9kZXYv bnVsbAorKysgYi9nZGItZ2RiaW5kZXgtdjItdG8tdjMucGF0Y2gKQEAgLTAsMCArMSwyNzggQEAK K0ZZSTogaW5kZXggcHJlLWV4cGFuc2lvbiBmaXgKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAwNDUyLmh0bWwKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItY3ZzLzIwMTAtMDkvbXNnMDAxNjUuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMC8wOS8yNyAxNzo0MTozNQkxLjEyMjA2CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8w OS8yNyAxODo0MjozNQkxLjEyMjA3CisjIyAtMSw1ICsxLDE3IEBACisgMjAxMC0wOS0yNyAgVG9t IFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgorIAorKwkqIGR3YXJmMnJlYWQuYyAoZHdhcmYy X3JlYWRfaW5kZXgpOiBPbmx5IGFsbG93IHZlcnNpb24gMy4KKysJKHdyaXRlX3BzeW1ib2xzKTog QWRkICdwc3ltc19zZWVuJyBhbmQgJ2lzX3N0YXRpYycgYXJndW1lbnRzLgorKwlPbmx5IGVtaXQg YSBnaXZlbiBwc3ltYm9sIG9uY2UuCisrCShzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlX2luZGV4X2Rh dGEpIDxwc3ltc19zZWVuPjogTmV3IGZpZWxkLgorKwkod3JpdGVfb25lX3NpZ25hdHVyZWRfdHlw ZSk6IFVwZGF0ZS4KKysJKGNsZWFudXBfaHRhYik6IE5ldyBmdW5jdGlvbi4KKysJKHdyaXRlX3Bz eW10YWJzX3RvX2luZGV4KTogVXBkYXRlLiAgQ3JlYXRlIHBzeW1zX3NlZW4gaGFzaC4gIEJ1bXAK KysJdmVyc2lvbiB0byAzLgorKwkoc2F2ZV9nZGJfaW5kZXhfY29tbWFuZCk6IFVwZGF0ZSBpbmRl eCBkb2N1bWVudGF0aW9uLgorKworKzIwMTAtMDktMjcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVk aGF0LmNvbT4KKysKKyAJKiBiY2FjaGUuYyAoZXhwYW5kX2hhc2hfdGFibGUpOiBVc2UgaGFzaF9m dW5jdGlvbiwgbm90IGhhc2guCisgCisgMjAxMC0wOS0yNyAgVG9tIFRyb21leSAgPHRyb21leUBy ZWRoYXQuY29tPgorSW5kZXg6IGdkYi03LjIvZ2RiL2R3YXJmMnJlYWQuYworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjIub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMTAtMTIgMTg6MTE6MjcuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMTAtMTIgMTg6 MTI6MDMuMDAwMDAwMDAwICswMjAwCitAQCAtMTg5NywxNSArMTg5NywxMCBAQCBkd2FyZjJfcmVh ZF9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpCisgICBhZGRyID0gZHdhcmYyX3Blcl9vYmpm aWxlLT5nZGJfaW5kZXguYnVmZmVyOworICAgLyogVmVyc2lvbiBjaGVjay4gICovCisgICB2ZXJz aW9uID0gTUFZQkVfU1dBUCAoKihvZmZzZXRfdHlwZSAqKSBhZGRyKTsKKy0gIGlmICh2ZXJzaW9u ID09IDEpCistICAgIHsKKy0gICAgICAvKiBJbmRleCB2ZXJzaW9uIDEgbmVnbGVjdGVkIHRvIGFj Y291bnQgZm9yIC5kZWJ1Z190eXBlcy4gIFNvLAorLQkgaWYgd2Ugc2VlIC5kZWJ1Z190eXBlcywg d2UgY2Fubm90IHVzZSB0aGlzIGluZGV4LiAgKi8KKy0gICAgICBpZiAoZHdhcmYyX3Blcl9vYmpm aWxlLT50eXBlcy5hc2VjdGlvbiAhPSBOVUxMCistCSAgJiYgZHdhcmYyX3Blcl9vYmpmaWxlLT50 eXBlcy5zaXplICE9IDApCistCXJldHVybiAwOworLSAgICB9CistICBlbHNlIGlmICh2ZXJzaW9u ICE9IDIpCisrICAvKiBWZXJzaW9ucyBlYXJsaWVyIHRoYW4gMyBlbWl0dGVkIGV2ZXJ5IGNvcHkg b2YgYSBwc3ltYm9sLiAgVGhpcworKyAgICAgY2F1c2VzIHRoZSBpbmRleCB0byBiZWhhdmUgdmVy eSBwb29ybHkgZm9yIGNlcnRhaW4gcmVxdWVzdHMuICBTbywKKysgICAgIGl0IHNlZW1zIGJldHRl ciB0byBqdXN0IGlnbm9yZSBzdWNoIGluZGljZXMuICAqLworKyAgaWYgKHZlcnNpb24gPCAzKQor ICAgICByZXR1cm4gMDsKKyAKKyAgIG1hcCA9IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2Jq ZmlsZV9vYnN0YWNrLCBzdHJ1Y3QgbWFwcGVkX2luZGV4KTsKK0BAIC0xOTE5LDE0ICsxOTE0LDEx IEBAIGR3YXJmMl9yZWFkX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKKyAJCSAgICAgIC8g OCk7CisgICArK2k7CisgCistICBpZiAodmVyc2lvbiA9PSAyKQorLSAgICB7CistICAgICAgdHlw ZXNfbGlzdCA9IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSk7CistICAgICAgdHlwZXNf bGlzdF9lbGVtZW50cyA9ICgoTUFZQkVfU1dBUCAobWV0YWRhdGFbaSArIDFdKQorLQkJCSAgICAg IC0gTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pKQorLQkJCSAgICAgLyA4KTsKKy0gICAgICArK2k7 CistICAgIH0KKysgIHR5cGVzX2xpc3QgPSBhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0p OworKyAgdHlwZXNfbGlzdF9lbGVtZW50cyA9ICgoTUFZQkVfU1dBUCAobWV0YWRhdGFbaSArIDFd KQorKwkJCSAgLSBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSkpCisrCQkJIC8gOCk7CisrICArK2k7 CisgCisgICBtYXAtPmFkZHJlc3NfdGFibGUgPSBhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFb aV0pOworICAgbWFwLT5hZGRyZXNzX3RhYmxlX3NpemUgPSAoTUFZQkVfU1dBUCAobWV0YWRhdGFb aSArIDFdKQorQEAgLTE5NDQsOCArMTkzNiw3IEBAIGR3YXJmMl9yZWFkX2luZGV4IChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmkKKyAgIGlmICghY3JlYXRlX2N1c19mcm9tX2luZGV4IChvYmpmaWxlLCBj dV9saXN0LCBjdV9saXN0X2VsZW1lbnRzKSkKKyAgICAgcmV0dXJuIDA7CisgCistICBpZiAodmVy c2lvbiA9PSAyCistICAgICAgJiYgdHlwZXNfbGlzdF9lbGVtZW50cworKyAgaWYgKHR5cGVzX2xp c3RfZWxlbWVudHMKKyAgICAgICAmJiAhY3JlYXRlX3NpZ25hdHVyZWRfdHlwZV9oYXNoX2Zyb21f aW5kZXggKG9iamZpbGUsIHR5cGVzX2xpc3QsCisgCQkJCQkJICB0eXBlc19saXN0X2VsZW1lbnRz KSkKKyAgICAgcmV0dXJuIDA7CitAQCAtMTQ1NjgsMTUgKzE0NTU5LDM4IEBAIGFkZF9hZGRyZXNz X2VudHJ5IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKKyAvKiBBZGQgYSBsaXN0IG9mIHBhcnRpYWwg c3ltYm9scyB0byBTWU1UQUIuICAqLworIHN0YXRpYyB2b2lkCisgd3JpdGVfcHN5bWJvbHMgKHN0 cnVjdCBtYXBwZWRfc3ltdGFiICpzeW10YWIsCisrCQlodGFiX3QgcHN5bXNfc2VlbiwKKyAJCXN0 cnVjdCBwYXJ0aWFsX3N5bWJvbCAqKnBzeW1wLAorIAkJaW50IGNvdW50LAorLQkJb2Zmc2V0X3R5 cGUgY3VfaW5kZXgpCisrCQlvZmZzZXRfdHlwZSBjdV9pbmRleCwKKysJCWludCBpc19zdGF0aWMp CisgeworICAgZm9yICg7IGNvdW50LS0gPiAwOyArK3BzeW1wKQorICAgICB7CisrICAgICAgdm9p ZCAqKnNsb3QsICpsb29rdXA7CisrCisgICAgICAgaWYgKFNZTUJPTF9MQU5HVUFHRSAoKnBzeW1w KSA9PSBsYW5ndWFnZV9hZGEpCisgCWVycm9yIChfKCJBZGEgaXMgbm90IGN1cnJlbnRseSBzdXBw b3J0ZWQgYnkgdGhlIGluZGV4IikpOworLSAgICAgIGFkZF9pbmRleF9lbnRyeSAoc3ltdGFiLCBT WU1CT0xfTkFUVVJBTF9OQU1FICgqcHN5bXApLCBjdV9pbmRleCk7CisrCisrICAgICAgLyogV2Ug b25seSB3YW50IHRvIGFkZCBhIGdpdmVuIHBzeW1ib2wgb25jZS4gIEhvd2V2ZXIsIHdlIGFsc28K KysJIHdhbnQgdG8gYWNjb3VudCBmb3Igd2hldGhlciBpdCBpcyBnbG9iYWwgb3Igc3RhdGljLiAg U28sIHdlCisrCSBtYXkgYWRkIGl0IHR3aWNlLCB1c2luZyBzbGlnaHRseSBkaWZmZXJlbnQgdmFs dWVzLiAgKi8KKysgICAgICBpZiAoaXNfc3RhdGljKQorKwl7CisrCSAgdWludHB0cl90IHZhbCA9 IDEgfCAodWludHB0cl90KSAqcHN5bXA7CisrCisrCSAgbG9va3VwID0gKHZvaWQgKikgdmFsOwor Kwl9CisrICAgICAgZWxzZQorKwlsb29rdXAgPSAqcHN5bXA7CisrCisrICAgICAgLyogT25seSBh ZGQgYSBnaXZlbiBwc3ltYm9sIG9uY2UuICAqLworKyAgICAgIHNsb3QgPSBodGFiX2ZpbmRfc2xv dCAocHN5bXNfc2VlbiwgbG9va3VwLCBJTlNFUlQpOworKyAgICAgIGlmICghKnNsb3QpCisrCXsK KysJICAqc2xvdCA9IGxvb2t1cDsKKysJICBhZGRfaW5kZXhfZW50cnkgKHN5bXRhYiwgU1lNQk9M X05BVFVSQUxfTkFNRSAoKnBzeW1wKSwgY3VfaW5kZXgpOworKwl9CisgICAgIH0KKyB9CisgCitA QCAtMTQ2MDYsNiArMTQ2MjAsNyBAQCBzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlX2luZGV4X2RhdGEK KyAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworICAgc3RydWN0IG1hcHBlZF9zeW10YWIgKnN5 bXRhYjsKKyAgIHN0cnVjdCBvYnN0YWNrICp0eXBlc19saXN0OworKyAgaHRhYl90IHBzeW1zX3Nl ZW47CisgICBpbnQgY3VfaW5kZXg7CisgfTsKKyAKK0BAIC0xNDYyMSwxMSArMTQ2MzYsMTUgQEAg d3JpdGVfb25lX3NpZ25hdHVyZWRfdHlwZSAodm9pZCAqKnNsb3QsIAorICAgZ2RiX2J5dGUgdmFs WzhdOworIAorICAgd3JpdGVfcHN5bWJvbHMgKGluZm8tPnN5bXRhYiwKKysJCSAgaW5mby0+cHN5 bXNfc2VlbiwKKyAJCSAgaW5mby0+b2JqZmlsZS0+Z2xvYmFsX3BzeW1ib2xzLmxpc3QgKyBwc3lt dGFiLT5nbG9iYWxzX29mZnNldCwKKy0JCSAgcHN5bXRhYi0+bl9nbG9iYWxfc3ltcywgaW5mby0+ Y3VfaW5kZXgpOworKwkJICBwc3ltdGFiLT5uX2dsb2JhbF9zeW1zLCBpbmZvLT5jdV9pbmRleCwK KysJCSAgMCk7CisgICB3cml0ZV9wc3ltYm9scyAoaW5mby0+c3ltdGFiLAorKwkJICBpbmZvLT5w c3ltc19zZWVuLAorIAkJICBpbmZvLT5vYmpmaWxlLT5zdGF0aWNfcHN5bWJvbHMubGlzdCArIHBz eW10YWItPnN0YXRpY3Nfb2Zmc2V0LAorLQkJICBwc3ltdGFiLT5uX3N0YXRpY19zeW1zLCBpbmZv LT5jdV9pbmRleCk7CisrCQkgIHBzeW10YWItPm5fc3RhdGljX3N5bXMsIGluZm8tPmN1X2luZGV4 LAorKwkJICAxKTsKKyAKKyAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKHZhbCwgOCwgQkZEX0VO RElBTl9MSVRUTEUsIGVudHJ5LT5vZmZzZXQpOworICAgb2JzdGFja19ncm93IChpbmZvLT50eXBl c19saXN0LCB2YWwsIDgpOworQEAgLTE0NjM5LDYgKzE0NjU4LDE0IEBAIHdyaXRlX29uZV9zaWdu YXR1cmVkX3R5cGUgKHZvaWQgKipzbG90LCAKKyAgIHJldHVybiAxOworIH0KKyAKKysvKiBBIGNs ZWFudXAgZnVuY3Rpb24gZm9yIGFuIGh0YWJfdC4gICovCisrCisrc3RhdGljIHZvaWQKKytjbGVh bnVwX2h0YWIgKHZvaWQgKmFyZykKKyt7CisrICBodGFiX2RlbGV0ZSAoYXJnKTsKKyt9CisrCisg LyogQ3JlYXRlIGFuIGluZGV4IGZpbGUgZm9yIE9CSkZJTEUgaW4gdGhlIGRpcmVjdG9yeSBESVIu ICAqLworIHN0YXRpYyB2b2lkCisgd3JpdGVfcHN5bXRhYnNfdG9faW5kZXggKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpkaXIpCitAQCAtMTQ2NTMsNiArMTQ2ODAsNyBAQCB3 cml0ZV9wc3ltdGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgCisgICBvZmZzZXRfdHlwZSB2 YWwsIHNpemVfb2ZfY29udGVudHMsIHRvdGFsX2xlbjsKKyAgIHN0cnVjdCBzdGF0IHN0OworICAg Y2hhciBidWZbOF07CisrICBodGFiX3QgcHN5bXNfc2VlbjsKKyAKKyAgIGlmICghb2JqZmlsZS0+ cHN5bXRhYnMpCisgICAgIHJldHVybjsKK0BAIC0xNDY4NSw2ICsxNDcxMywxMCBAQCB3cml0ZV9w c3ltdGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgCisgICBvYnN0YWNrX2luaXQgKCZ0eXBl c19jdV9saXN0KTsKKyAgIG1ha2VfY2xlYW51cF9vYnN0YWNrX2ZyZWUgKCZ0eXBlc19jdV9saXN0 KTsKKyAKKysgIHBzeW1zX3NlZW4gPSBodGFiX2NyZWF0ZV9hbGxvYyAoMTAwLCBodGFiX2hhc2hf cG9pbnRlciwgaHRhYl9lcV9wb2ludGVyLAorKwkJCQkgIE5VTEwsIHhjYWxsb2MsIHhmcmVlKTsK KysgIG1ha2VfY2xlYW51cCAoY2xlYW51cF9odGFiLCBwc3ltc19zZWVuKTsKKysKKyAgIC8qIFRo ZSBsaXN0IGlzIGFscmVhZHkgc29ydGVkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFkZGl0aW9u YWwKKyAgICAgIHdvcmsgaGVyZS4gIEFsc28sIHRoZSBkZWJ1Z190eXBlcyBlbnRyaWVzIGRvIG5v dCBhcHBlYXIgaW4KKyAgICAgIGFsbF9jb21wX3VuaXRzLCBidXQgb25seSBpbiB0aGVpciBvd24g aGFzaCB0YWJsZS4gICovCitAQCAtMTQ2OTUsMTEgKzE0NzI3LDE1IEBAIHdyaXRlX3BzeW10YWJz X3RvX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAKKyAgICAgICBnZGJfYnl0ZSB2YWxbOF07CisgCisg ICAgICAgd3JpdGVfcHN5bWJvbHMgKHN5bXRhYiwKKysJCSAgICAgIHBzeW1zX3NlZW4sCisgCQkg ICAgICBvYmpmaWxlLT5nbG9iYWxfcHN5bWJvbHMubGlzdCArIHBzeW10YWItPmdsb2JhbHNfb2Zm c2V0LAorLQkJICAgICAgcHN5bXRhYi0+bl9nbG9iYWxfc3ltcywgaSk7CisrCQkgICAgICBwc3lt dGFiLT5uX2dsb2JhbF9zeW1zLCBpLAorKwkJICAgICAgMCk7CisgICAgICAgd3JpdGVfcHN5bWJv bHMgKHN5bXRhYiwKKysJCSAgICAgIHBzeW1zX3NlZW4sCisgCQkgICAgICBvYmpmaWxlLT5zdGF0 aWNfcHN5bWJvbHMubGlzdCArIHBzeW10YWItPnN0YXRpY3Nfb2Zmc2V0LAorLQkJICAgICAgcHN5 bXRhYi0+bl9zdGF0aWNfc3ltcywgaSk7CisrCQkgICAgICBwc3ltdGFiLT5uX3N0YXRpY19zeW1z LCBpLAorKwkJICAgICAgMSk7CisgCisgICAgICAgYWRkX2FkZHJlc3NfZW50cnkgKG9iamZpbGUs ICZhZGRyX29ic3RhY2ssIHBzeW10YWIsIGkpOworIAorQEAgLTE0NzE3LDYgKzE0NzUzLDcgQEAg d3JpdGVfcHN5bXRhYnNfdG9faW5kZXggKHN0cnVjdCBvYmpmaWxlIAorICAgICAgIHNpZ19kYXRh Lm9iamZpbGUgPSBvYmpmaWxlOworICAgICAgIHNpZ19kYXRhLnN5bXRhYiA9IHN5bXRhYjsKKyAg ICAgICBzaWdfZGF0YS50eXBlc19saXN0ID0gJnR5cGVzX2N1X2xpc3Q7CisrICAgICAgc2lnX2Rh dGEucHN5bXNfc2VlbiA9IHBzeW1zX3NlZW47CisgICAgICAgc2lnX2RhdGEuY3VfaW5kZXggPSBk d2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0czsKKyAgICAgICBodGFiX3RyYXZlcnNlX25v cmVzaXplIChkd2FyZjJfcGVyX29iamZpbGUtPnNpZ25hdHVyZWRfdHlwZXMsCisgCQkJICAgICAg d3JpdGVfb25lX3NpZ25hdHVyZWRfdHlwZSwgJnNpZ19kYXRhKTsKK0BAIC0xNDczNCw3ICsxNDc3 MSw3IEBAIHdyaXRlX3BzeW10YWJzX3RvX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAKKyAgIHRvdGFs X2xlbiA9IHNpemVfb2ZfY29udGVudHM7CisgCisgICAvKiBUaGUgdmVyc2lvbiBudW1iZXIuICAq LworLSAgdmFsID0gTUFZQkVfU1dBUCAoMik7CisrICB2YWwgPSBNQVlCRV9TV0FQICgzKTsKKyAg IG9ic3RhY2tfZ3JvdyAoJmNvbnRlbnRzLCAmdmFsLCBzaXplb2YgKHZhbCkpOworIAorICAgLyog VGhlIG9mZnNldCBvZiB0aGUgQ1UgbGlzdCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZS4gICov CitAQCAtMTQ3OTEsMTggKzE0ODI4LDE2IEBAIHdyaXRlX3BzeW10YWJzX3RvX2luZGV4IChzdHJ1 Y3Qgb2JqZmlsZSAKKyAKKyAgICAxLiBUaGUgZmlsZSBoZWFkZXIuICBUaGlzIGlzIGEgc2VxdWVu Y2Ugb2YgdmFsdWVzLCBvZiBvZmZzZXRfdHlwZQorICAgIHVubGVzcyBvdGhlcndpc2Ugbm90ZWQ6 CistICAgWzBdIFRoZSB2ZXJzaW9uIG51bWJlci4gIEN1cnJlbnRseSAxIG9yIDIuICBUaGUgZGlm ZmVyZW5jZXMgYXJlCistICAgbm90ZWQgYmVsb3cuICBWZXJzaW9uIDEgZGlkIG5vdCBhY2NvdW50 IGZvciAuZGVidWdfdHlwZXMgc2VjdGlvbnM7CistICAgdGhlIHByZXNlbmNlIG9mIGEgLmRlYnVn X3R5cGVzIHNlY3Rpb24gaW52YWxpZGF0ZXMgYW55IHZlcnNpb24gMQorLSAgIGluZGV4IHRoYXQg bWF5IGV4aXN0LgorKworKyAgIFswXSBUaGUgdmVyc2lvbiBudW1iZXIsIGN1cnJlbnRseSAzLiAg VmVyc2lvbnMgMSBhbmQgMiBhcmUKKysgICBvYnNvbGV0ZS4KKyAgICBbMV0gVGhlIG9mZnNldCwg ZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRoZSBDVSBsaXN0LgorLSAgIFsxLjVdIElu IHZlcnNpb24gMiwgdGhlIG9mZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRo ZQorLSAgIHR5cGVzIENVIGxpc3QuICBUaGlzIG9mZnNldCBkb2VzIG5vdCBhcHBlYXIgaW4gdmVy c2lvbiAxLiAgTm90ZQorLSAgIHRoYXQgdGhpcyBjYW4gYmUgZW1wdHksIGluIHdoaWNoIGNhc2Ug dGhpcyBvZmZzZXQgd2lsbCBiZSBlcXVhbCB0bworLSAgIHRoZSBuZXh0IG9mZnNldC4KKy0gICBb Ml0gVGhlIG9mZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRoZSBhZGRyZXNz IHNlY3Rpb24uCistICAgWzNdIFRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxl LCBvZiB0aGUgc3ltYm9sIHRhYmxlLgorLSAgIFs0XSBUaGUgb2Zmc2V0LCBmcm9tIHRoZSBzdGFy dCBvZiB0aGUgZmlsZSwgb2YgdGhlIGNvbnN0YW50IHBvb2wuCisrICAgWzJdIFRoZSBvZmZzZXQs IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUgdHlwZXMgQ1UgbGlzdC4KKysgICBO b3RlIHRoYXQgdGhpcyBzZWN0aW9uIGNhbiBiZSBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGlzIG9m ZnNldCB3aWxsCisrICAgYmUgZXF1YWwgdG8gdGhlIG5leHQgb2Zmc2V0LgorKyAgIFszXSBUaGUg b2Zmc2V0LCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZSwgb2YgdGhlIGFkZHJlc3Mgc2VjdGlv bi4KKysgICBbNF0gVGhlIG9mZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRo ZSBzeW1ib2wgdGFibGUuCisrICAgWzVdIFRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRo ZSBmaWxlLCBvZiB0aGUgY29uc3RhbnQgcG9vbC4KKyAKKyAgICAyLiBUaGUgQ1UgbGlzdC4gIFRo aXMgaXMgYSBzZXF1ZW5jZSBvZiBwYWlycyBvZiA2NC1iaXQKKyAgICBsaXR0bGUtZW5kaWFuIHZh bHVlcywgc29ydGVkIGJ5IHRoZSBDVSBvZmZzZXQuICBUaGUgZmlyc3QgZWxlbWVudAorQEAgLTE0 ODEzLDE5ICsxNDg0OCwxOSBAQCB3cml0ZV9wc3ltdGFic190b19pbmRleCAoc3RydWN0IG9iamZp bGUgCisgICAgdHlwZSBDVXMsIHRoZW4gY29uY2VwdHVhbGx5IENVcyBhbmQgdHlwZSBDVXMgZm9y bSBhIHNpbmdsZSBsaXN0IGZvcgorICAgIHRoZSBwdXJwb3NlcyBvZiBDVSBpbmRpY2VzLgorIAor LSAgIDIuNSBUaGUgdHlwZXMgQ1UgbGlzdC4gIFRoaXMgZG9lcyBub3QgYXBwZWFyIGluIGEgdmVy c2lvbiAxIGluZGV4LgorLSAgIFRoaXMgaXMgYSBzZXF1ZW5jZSBvZiB0cmlwbGV0cyBvZiA2NC1i aXQgbGl0dGxlLWVuZGlhbiB2YWx1ZXMuICBJbgorLSAgIGEgdHJpcGxldCwgdGhlIGZpcnN0IHZh bHVlIGlzIHRoZSBDVSBvZmZzZXQsIHRoZSBzZWNvbmQgdmFsdWUgaXMKKy0gICB0aGUgdHlwZSBv ZmZzZXQgaW4gdGhlIENVLCBhbmQgdGhlIHRoaXJkIHZhbHVlIGlzIHRoZSB0eXBlCistICAgc2ln bmF0dXJlLiAgVGhlIHR5cGVzIENVIGxpc3QgaXMgbm90IHNvcnRlZC4KKysgICAzLiBUaGUgdHlw ZXMgQ1UgbGlzdC4gIFRoaXMgaXMgYSBzZXF1ZW5jZSBvZiB0cmlwbGV0cyBvZiA2NC1iaXQKKysg ICBsaXR0bGUtZW5kaWFuIHZhbHVlcy4gIEluIGEgdHJpcGxldCwgdGhlIGZpcnN0IHZhbHVlIGlz IHRoZSBDVQorKyAgIG9mZnNldCwgdGhlIHNlY29uZCB2YWx1ZSBpcyB0aGUgdHlwZSBvZmZzZXQg aW4gdGhlIENVLCBhbmQgdGhlCisrICAgdGhpcmQgdmFsdWUgaXMgdGhlIHR5cGUgc2lnbmF0dXJl LiAgVGhlIHR5cGVzIENVIGxpc3QgaXMgbm90CisrICAgc29ydGVkLgorIAorLSAgIDMuIFRoZSBh ZGRyZXNzIHNlY3Rpb24uICBUaGUgYWRkcmVzcyBzZWN0aW9uIGNvbnNpc3RzIG9mIGEgc2VxdWVu Y2UKKysgICA0LiBUaGUgYWRkcmVzcyBzZWN0aW9uLiAgVGhlIGFkZHJlc3Mgc2VjdGlvbiBjb25z aXN0cyBvZiBhIHNlcXVlbmNlCisgICAgb2YgYWRkcmVzcyBlbnRyaWVzLiAgRWFjaCBhZGRyZXNz IGVudHJ5IGhhcyB0aHJlZSBlbGVtZW50cy4KKyAgICBbMF0gVGhlIGxvdyBhZGRyZXNzLiAgVGhp cyBpcyBhIDY0LWJpdCBsaXR0bGUtZW5kaWFuIHZhbHVlLgorICAgIFsxXSBUaGUgaGlnaCBhZGRy ZXNzLiAgVGhpcyBpcyBhIDY0LWJpdCBsaXR0bGUtZW5kaWFuIHZhbHVlLgorICAgIFsyXSBUaGUg Q1UgaW5kZXguICBUaGlzIGlzIGFuIG9mZnNldF90eXBlIHZhbHVlLgorIAorLSAgIDQuIFRoZSBz eW1ib2wgdGFibGUuICBUaGlzIGlzIGEgaGFzaCB0YWJsZS4gIFRoZSBzaXplIG9mIHRoZSBoYXNo CisrICAgNS4gVGhlIHN5bWJvbCB0YWJsZS4gIFRoaXMgaXMgYSBoYXNoIHRhYmxlLiAgVGhlIHNp emUgb2YgdGhlIGhhc2gKKyAgICB0YWJsZSBpcyBhbHdheXMgYSBwb3dlciBvZiAyLiAgVGhlIGlu aXRpYWwgaGFzaCBhbmQgdGhlIHN0ZXAgYXJlCisgICAgY3VycmVudGx5IGRlZmluZWQgYnkgdGhl IGBmaW5kX3Nsb3QnIGZ1bmN0aW9uLgorIAorQEAgLTE0ODQ3LDcgKzE0ODgyLDcgQEAgd3JpdGVf cHN5bXRhYnNfdG9faW5kZXggKHN0cnVjdCBvYmpmaWxlIAorICAgIGVsZW1lbnQgaW4gdGhlIGhh c2ggdGFibGUgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGljaCBDVXMgZGVmaW5lIHRoZQorICAgIHN5 bWJvbC4KKyAKKy0gICA1LiBUaGUgY29uc3RhbnQgcG9vbC4gIFRoaXMgaXMgc2ltcGx5IGEgYnVu Y2ggb2YgYnl0ZXMuICBJdCBpcworKyAgIDYuIFRoZSBjb25zdGFudCBwb29sLiAgVGhpcyBpcyBz aW1wbHkgYSBidW5jaCBvZiBieXRlcy4gIEl0IGlzCisgICAgb3JnYW5pemVkIHNvIHRoYXQgYWxp Z25tZW50IGlzIGNvcnJlY3Q6IENVIHZlY3RvcnMgYXJlIHN0b3JlZAorICAgIGZpcnN0LCBmb2xs b3dlZCBieSBzdHJpbmdzLiAgKi8KKyBzdGF0aWMgdm9pZAoKZGlmZiAtLWdpdCBhL2dkYi1wcjEy MDI4LWRvdWJsZS1mcmVlLnBhdGNoIGIvZ2RiLXByMTIwMjgtZG91YmxlLWZyZWUucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGViMjExNQotLS0gL2Rldi9udWxsCisr KyBiL2dkYi1wcjEyMDI4LWRvdWJsZS1mcmVlLnBhdGNoCkBAIC0wLDAgKzEsOTkgQEAKK2h0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAwMzIxLmh0bWwKK1N1 YmplY3Q6IFtwYXRjaF0gUFIgMTIwMjggIkdEQiBjcmFzaGVzIG9uIGEgZG91YmxlIGZyZWUgZHVy aW5nIG92ZXJsb2FkIHJlc29sdXRpb24iCisKK29sZF9jbGVhbnVwcyB3YXMgYmVpbmcgc2V0IHR3 aWNlIG1ha2luZyB0aGUgbGF0ZXIgY2FsbCB0byAKK2Rpc2NhcmRfY2xlYW51cHMgaWdub3JlIHRo ZSBmaXJzdCAnbWFrZV9jbGVhbnVwJyByZXF1ZXN0LgorCitUaGUgcGF0Y2ggaXMgcHJvcG9zZWQg Zm9yIGJvdGggaGVhZCBhbmQgdGhlIDcuMiBicmFuY2guCisKK1RoaXMgaGFzIGJlZW4gcmVncmVz c2lvbiB0ZXN0ZWQgb24geDg2NjQgd2l0aCBnY2MtNC40LjQtMTAuZmMxMworCisKK0ZpeCBQUiAx MjAyODogIkdEQiBjcmFzaGVzIG9uIGEgZG91YmxlIGZyZWUgZHVyaW5nIG92ZXJsb2FkIHJlc29s dXRpb24gIgorCisyMDEwLTA5LTE2ICBTYW1pIFdhZ2lhYWxsYSAgPHN3YWdpYWFsQHJlZGhhdC5j b20+CisKKwlQUiBDKysvMTIwMjgKKwkqIHZhbG9wcy5jIChmaW5kX29sb2FkX2NoYW1wX25hbWVz cGFjZV9sb29wKTogcmVtb3ZlZCBpbmNvcnJlY3QKKwknb2xkX2NsZWFudXBzJyByZWFzc2lnbm1l bnQuCisKKzIwMTAtMDktMTYgIFNhbWkgV2FnaWFhbGxhICA8c3dhZ2lhYWxAcmVkaGF0LmNvbT4K KworCSogZ2RiLmNwL3ByMTIwMjguY2M6IE5ldy4KKwkqIGdkYi5jcC9wcjEyMDI4LmV4cDogTmV3 LgorCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMjAyOC5jYyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL3ByMTIwMjguY2MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwLi4wZmNhYjZiCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5j cC9wcjEyMDI4LmNjCitAQCAtMCwwICsxLDIxIEBACisrY2xhc3MgQXt9OworK2NsYXNzIEJ7fTsK KytjbGFzcyBDOiBwdWJsaWMgQiB7fTsKKysKKytuYW1lc3BhY2UgRHsKKysgIGludCBmb28gKEEp IHsgcmV0dXJuIDExOyB9CisrICBpbnQgZm9vIChDKSB7IHJldHVybiAxMjsgfQorK30KKysKKytp bnQgbWFpbigpCisreworKyAgQSBhOworKyAgQiBiOworKyAgQyBjOworKworKyAgRDo6Zm9vIChh KTsKKysgIC8vICBEOjpmb28gKGIpOworKyAgRDo6Zm9vIChjKTsKKysKKysgIHJldHVybiAwOwor K30KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9wcjEyMDI4LmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL3ByMTIwMjguZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMC4uNzQ2YzZiNQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvcHIxMjAyOC5leHAKK0BAIC0wLDAgKzEsMjkgQEAKKysjIENvcHlyaWdodCAyMDA4IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKysKKytzZXQgdGVzdGZpbGUgcHIxMjAyOAorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmNj CisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0g JHtzcmNmaWxlfSB7ZGVidWcgYysrfV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKysjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKworK2lmICFbcnVudG9f bWFpbl0gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgbWFp biIKKysgICAgY29udGludWUKKyt9CisrCisrZ2RiX3Rlc3QgInAgRDo6Zm9vKGIpIiAiQ2Fubm90 IHJlc29sdmUgZnVuY3Rpb24gZm9vIHRvIGFueSBvdmVybG9hZGVkIGluc3RhbmNlIgorZGlmZiAt LWdpdCBhL2dkYi92YWxvcHMuYyBiL2dkYi92YWxvcHMuYworaW5kZXggN2ZiYWQxMC4uNGU4M2Ew NCAxMDA2NDQKKy0tLSBhL2dkYi92YWxvcHMuYworKysrIGIvZ2RiL3ZhbG9wcy5jCitAQCAtMjcx NSw3ICsyNzE1LDcgQEAgZmluZF9vbG9hZF9jaGFtcF9uYW1lc3BhY2VfbG9vcCAoc3RydWN0IHR5 cGUgKiphcmdfdHlwZXMsIGludCBuYXJncywKKyAgICAgIGZ1bmN0aW9uIHN5bWJvbCB0byBzdGFy dCBvZmYgd2l0aC4pICAqLworIAorICAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwICh4ZnJl ZSwgKm9sb2FkX3N5bXMpOworLSAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwg Km9sb2FkX2NoYW1wX2J2KTsKKysgIG1ha2VfY2xlYW51cCAoeGZyZWUsICpvbG9hZF9jaGFtcF9i dik7CisgICBuZXdfbmFtZXNwYWNlID0gYWxsb2NhIChuYW1lc3BhY2VfbGVuICsgMSk7CisgICBz dHJuY3B5IChuZXdfbmFtZXNwYWNlLCBxdWFsaWZpZWRfbmFtZSwgbmFtZXNwYWNlX2xlbik7Cisg ICBuZXdfbmFtZXNwYWNlW25hbWVzcGFjZV9sZW5dID0gJ1wwJzsKCmRpZmYgLS1naXQgYS9nZGIt cHl0aG9uLWVycm9yLXN0YXRlLnBhdGNoIGIvZ2RiLXB5dGhvbi1lcnJvci1zdGF0ZS5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2RmNTE4Ci0tLSAvZGV2L251bGwK KysrIGIvZ2RiLXB5dGhvbi1lcnJvci1zdGF0ZS5wYXRjaApAQCAtMCwwICsxLDU5MiBAQAoraHR0 cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMTAvbXNnMDAxNzUuaHRtbAor U3ViamVjdDogUmU6IFtwYXRjaF0gcHl0aG9uOiBzYXZlL3Jlc3RvcmUvZml4IGVycm9yIHN0YXRl CisKK09uIEZyaSwgMDggT2N0IDIwMTAgMjI6MDg6MjcgKzAyMDAsIERvdWcgRXZhbnMgd3JvdGU6 Cis+IFRoZSBjb21tZW50IGFib3ZlIHRoaXMgY29kZSBzYXlzOgorPiAKKz4gICAvKiBOb3RlOiBJ ZiBhbiBleGNlcHRpb24gb2NjdXJzIHB5dGhvbiB3aWxsIHByaW50IHRoZSB0cmFjZWJhY2sgYW5k Cis+ICAgICAgY2xlYXIgdGhlIGVycm9yIGluZGljYXRvci4gICovCis+IAorPiBJU1RNIHRoYXQg ZWl0aGVyIHRoaXMgY29tbWVudCBpcyB3cm9uZyBvciB0aGUgYWJvdmUgcGF0Y2ggaXMgd3Jvbmcs IG9yCis+IHNvbWUgY29tYmluYXRpb24gdGhlcmVvZi4KKworVGhpcyBjb21tZW50IGlzIHJpZ2h0 LCBQeXRob24gaGFzIG5vIGJ1ZyB0aGVyZSwgb3RoZXIgZ2RiL3B5dGhvbi8gY29kZSBoYXMKK2J1 Z3MuICBUaGF0IGlzIHNvbWUgZ2RiL3B5dGhvbi8gY29kZSByZXR1cm5lZCBzdWNjZXNzIHZhbHVl IHdoaWxlIHN0aWxsCitsZWF2aW5nIHRoZSBweXRob24gZXhjZXB0aW9uIHNldC4gIFN1Y2ggY2Fz ZSBpcyB1bmRlZmluZWQgYW5kIHVuY2hlY2tlZCBieQorUHl0aG9uLiAgUHl0aG9uIGVycm9yIHN0 YXRlIGRvZXMgbm90IGZvbGxvdyB0aGUgZXJybm8gUE9TSVggc2VtYW50aWNzCisJVGhlIHNldHRp bmcgb2YgZXJybm8gYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgdG8gYSBmdW5jdGlvbiBpcworCXVu c3BlY2lmaWVkIFsuLi5dLgorYXMgUHl0aG9uIHJlcXVpcmVzIGluc3RlYWQ6CisJVGhlIFB5dGhv biBlcnJvciBzdGF0ZSBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCB0byBhIGZ1bmN0aW9uIG11c3Qg YmUKKwljbGVhcmVkLgorCitJIGhhdmUgY2hlY2tlZCBjYWxsZXJzIG9mIHRoZXNlIGZ1bmN0aW9u cywgYXMgYSBjbG9zdXJlIG9uIHRoZSBjYWxsZXJzIG9mIHRoZQordG9wIHB5LXV0aWxzLmMgZnVu Y3Rpb25zLiAgVGhhdCBkb2VzIG5vdCBtZWFuIHRoaXMgUHl0aG9uIGVycm9yIHN0YXRlIGhhbmRs aW5nCit2ZXJpZmljYXRpb24gaXMgY29tcGxldGU6CisJcHl0aG9uX3N0cmluZ190b191bmljb2Rl IHVuaWNvZGVfdG9fZW5jb2RlZF9zdHJpbmcKKwl1bmljb2RlX3RvX2VuY29kZWRfcHl0aG9uX3N0 cmluZyB1bmljb2RlX3RvX3RhcmdldF9zdHJpbmcKKwl1bmljb2RlX3RvX3RhcmdldF9weXRob25f c3RyaW5nIHB5dGhvbl9zdHJpbmdfdG9fdGFyZ2V0X3N0cmluZworCXB5dGhvbl9zdHJpbmdfdG9f dGFyZ2V0X3B5dGhvbl9zdHJpbmcgcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZworCXRhcmdl dF9zdHJpbmdfdG9fdW5pY29kZSBnZGJweV9vYmpfdG9fc3RyaW5nIGdkYnB5X2V4Y2VwdGlvbl90 b19zdHJpbmcKKwlnZXRfYWRkcl9mcm9tX3B5dGhvbiBjb252ZXJ0X3ZhbHVlX2Zyb21fcHl0aG9u IGZyYXB5X3JlYWRfdmFyCisJZ2RicHlfZ2V0X2Rpc3BsYXlfaGludCB2YWxweV9nZXRpdGVtIEZJ WE1FIHNldF9wYXJhbWV0ZXJfdmFsdWUKKwljb21wdXRlX2VudW1fdmFsdWVzIGluZnB5X3JlYWRf bWVtb3J5IGluZnB5X3dyaXRlX21lbW9yeQorCWluZnB5X3NlYXJjaF9tZW1vcnkgdmFscHlfbmV3 IHZhbHB5X2NhbGwgdmFscHlfYmlub3AgdmFscHlfcmljaGNvbXBhcmUKKwlwcmV0dHlfcHJpbnRf b25lX3ZhbHVlIHNldF9hdHRyIHBhcm1weV9pbml0CisKK1RoZXJlZm9yZSBJIGhhdmUgcmVtb3Zl ZCB0aGUgY2hlY2sgYWZ0ZXIgUHlSdW5fU2ltcGxlRmlsZS4KKworTm8gcmVncmVzc2lvbnMgb24g e3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTE0c25hcHNob3QtbGludXgtZ251LgorCisK K1RoYW5rcywKK0phbgorCisKK2dkYi8KKzIwMTAtMTAtMDkgIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogcHl0aG9uL3B5LWJyZWFrcG9pbnQuYyAoYnBw eV9zZXRfY29uZGl0aW9uKTogTmV3IGNvbW1lbnQuCisJKiBweXRob24vcHktY21kLmMgKGNtZHB5 X2Z1bmN0aW9uKTogQ2FsbCBhbHNvIGdkYnB5X3ByaW50X3N0YWNrIGZvcgorCWZhaWxlZCBQeVVu aWNvZGVfRGVjb2RlLgorCShjbWRweV9jb21wbGV0ZXIpOiBTa2lwIGVsZW1lbnQgZm9yIGZhaWxl ZAorCXB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcuCisJKGNtZHB5X2luaXQpOiBSZXR1cm4g LTEgb24gZmFpbGVkIHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcuCisJKiBweXRob24vcHkt ZnJhbWUuYyAoZnJhcHlfcmVhZF92YXIpOiBFeHRlbmQgdGhlIGZ1bmN0aW9uIGNvbW1lbnQuCisJ KiBweXRob24vcHktZnVuY3Rpb24uYyAoZm5weV9pbml0KTogUmV0dXJuIC0xIG9uIGZhaWxlZAor CXB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcuCisJKiBweXRob24vcHktaW5mZXJpb3IuYyAo aW5mcHlfcmVhZF9tZW1vcnksIGluZnB5X3dyaXRlX21lbW9yeSk6IEV4dGVuZAorCXRoZSBmdW5j dGlvbiBjb21tZW50LgorCShpbmZweV9zZWFyY2hfbWVtb3J5KTogRXh0ZW5kIHRoZSBmdW5jdGlv biBjb21tZW50LiAgUmVtb3ZlIHRoZQorCVB5RXJyX1NldFN0cmluZyBjYWxsIG9uIGFscmVhZHkg c2V0IGVycm9yIHN0YXRlLgorCSogcHl0aG9uL3B5LXBhcmFtLmMgKHNldF9wYXJhbWV0ZXJfdmFs dWUpOiBFeHRlbmQgdGhlIGZ1bmN0aW9uCisJY29tbWVudC4gIFJldHVybiAtMSBvbiBmYWlsZWQg cHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZywgdHdpY2UuCisJKHNldF9hdHRyKTogRXh0ZW5k IHRoZSBmdW5jdGlvbiBjb21tZW50LgorCShjb21wdXRlX2VudW1fdmFsdWVzKTogRXh0ZW5kIHRo ZSBmdW5jdGlvbiBjb21tZW50LiAgTmV3IHZhcmlhYmxlCisJYmFja190by4gIFByb3RlY3Qgc2Vs Zi0+ZW51bWVyYXRpb24gYnkgQkFDS19UTyBjbGVhbnVwcy4gIFJldHVybiAwIG9uCisJZmFpbGVk IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcuCisJKGdldF9kb2Nfc3RyaW5nKTogQ2FsbCBn ZGJweV9wcmludF9zdGFjayBvbiBmYWlsZWQKKwlweXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5n LgorCShwYXJtcHlfaW5pdCk6IEV4dGVuZCB0aGUgZnVuY3Rpb24gY29tbWVudC4KKwkqIHB5dGhv bi9weS1wcmV0dHlwcmludC5jIChwcmV0dHlfcHJpbnRfb25lX3ZhbHVlKTogTGlrZXdpc2UuCisJ KGdkYnB5X2dldF9kaXNwbGF5X2hpbnQsIHByaW50X2NoaWxkcmVuKTogQ2FsbCBnZGJweV9wcmlu dF9zdGFjayBvbgorCWZhaWxlZCBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nLgorCSogcHl0 aG9uL3B5LXZhbHVlLmMgKHZhbHB5X25ldywgdmFscHlfZ2V0aXRlbSwgdmFscHlfY2FsbCkKKwko dmFscHlfYmlub3AsIHZhbHB5X3JpY2hjb21wYXJlKTogRXh0ZW5kIHRoZSBmdW5jdGlvbiBjb21t ZW50LgorCSogcHl0aG9uL3B5dGhvbi5jCisJKHN0cnVjdCBweXRob25fZW52KSA8ZXJyb3JfdHlw ZSwgZXJyb3JfdmFsdWUsIGVycm9yX3RyYWNlYmFjaz46IE5ldworCWZpZWxkcy4KKwkocmVzdG9y ZV9weXRob25fZW52KTogSGFuZGxlIFB5RXJyX09jY3VycmVkLiAgQ2FsbCBQeUVycl9SZXN0b3Jl LgorCShlbnN1cmVfcHl0aG9uX2Vudik6IENhbGwgUHlFcnJfRmV0Y2guCisJKiB2YXJvYmouYyAo dXBkYXRlX2R5bmFtaWNfdmFyb2JqX2NoaWxkcmVuKTogQ2FsbCBnZGJweV9wcmludF9zdGFjayBv bgorCWZhaWxlZCBjb252ZXJ0X3ZhbHVlX2Zyb21fcHl0aG9uLgorCSh2YWx1ZV9nZXRfcHJpbnRf dmFsdWUpOiBDYWxsIGdkYnB5X3ByaW50X3N0YWNrIG9uIGZhaWxlZAorCXB5dGhvbl9zdHJpbmdf dG9fdGFyZ2V0X3B5dGhvbl9zdHJpbmcuCisKK2dkYi90ZXN0c3VpdGUvCisyMDEwLTEwLTA5ICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIGdkYi5weXRo b24vcHktZXJyb3IuZXhwOiBOZXcgZmlsZS4KKwkqIGdkYi5weXRob24vcHktZXJyb3IucHk6IE5l dyBmaWxlLgorCitJbmRleDogZ2RiLTcuMi9nZGIvcHl0aG9uL3B5LWJyZWFrcG9pbnQuYworPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjIub3JpZy9nZGIvcHl0aG9uL3B5LWJyZWFrcG9pbnQuYwkyMDEw LTEwLTEyIDE4OjI3OjU0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIvZ2RiL3B5dGhvbi9w eS1icmVha3BvaW50LmMJMjAxMC0xMC0xMiAxODoyODo1OC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00 MjAsNiArNDIwLDkgQEAgYnBweV9nZXRfY29uZGl0aW9uIChQeU9iamVjdCAqc2VsZiwgdm9pZAor ICAgcmV0dXJuIFB5U3RyaW5nX0RlY29kZSAoc3RyLCBzdHJsZW4gKHN0ciksIGhvc3RfY2hhcnNl dCAoKSwgTlVMTCk7CisgfQorIAorKy8qIFJldHVybnMgMCBvbiBzdWNjZXNzLiAgUmV0dXJucyAt MSBvbiBlcnJvciwgd2l0aCBhIHB5dGhvbiBleGNlcHRpb24gc2V0LgorKyAgICovCisrCisgc3Rh dGljIGludAorIGJwcHlfc2V0X2NvbmRpdGlvbiAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpu ZXd2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKKyB7CitJbmRleDogZ2RiLTcuMi9nZGIvcHl0aG9uL3B5 LWNtZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5vcmlnL2dkYi9weXRob24vcHktY21kLmMJ MjAxMC0xMC0xMiAxODoyNzo1NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yL2dkYi9weXRo b24vcHktY21kLmMJMjAxMC0xMC0xMiAxODoyODo1OC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMzgs NyArMTM4LDEwIEBAIGNtZHB5X2Z1bmN0aW9uIChzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAKKyAg ICAgYXJncyA9ICIiOworICAgYXJnb2JqID0gUHlVbmljb2RlX0RlY29kZSAoYXJncywgc3RybGVu IChhcmdzKSwgaG9zdF9jaGFyc2V0ICgpLCBOVUxMKTsKKyAgIGlmICghIGFyZ29iaikKKy0gICAg ZXJyb3IgKF8oIkNvdWxkIG5vdCBjb252ZXJ0IGFyZ3VtZW50cyB0byBQeXRob24gc3RyaW5nLiIp KTsKKysgICAgeworKyAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOworKyAgICAgIGVycm9yIChf KCJDb3VsZCBub3QgY29udmVydCBhcmd1bWVudHMgdG8gUHl0aG9uIHN0cmluZy4iKSk7CisrICAg IH0KKyAKKyAgIHR0eW9iaiA9IGZyb21fdHR5ID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOworICAgUHlf SU5DUkVGICh0dHlvYmopOworQEAgLTI1NSw2ICsyNTgsMTIgQEAgY21kcHlfY29tcGxldGVyIChz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudAorIAkgICAgICBjb250aW51ZTsKKyAJICAgIH0KKyAJICBy ZXN1bHRbb3V0XSA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKGVsdCk7CisrCSAgaWYg KHJlc3VsdFtvdXRdID09IE5VTEwpCisrCSAgICB7CisrCSAgICAgIC8qIFNraXAgcHJvYmxlbSBl bGVtZW50cy4gICovCisrCSAgICAgIFB5RXJyX0NsZWFyICgpOworKwkgICAgICBjb250aW51ZTsK KysJICAgIH0KKyAJICArK291dDsKKyAJfQorICAgICAgIHJlc3VsdFtvdXRdID0gTlVMTDsKK0BA IC00NjUsNyArNDc0LDE1IEBAIGNtZHB5X2luaXQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAq YXIKKyAgICAgICBQeU9iamVjdCAqZHNfb2JqID0gUHlPYmplY3RfR2V0QXR0ciAoc2VsZiwgZ2Ri cHlfZG9jX2NzdCk7CisgCisgICAgICAgaWYgKGRzX29iaiAmJiBnZGJweV9pc19zdHJpbmcgKGRz X29iaikpCistCWRvY3N0cmluZyA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKGRzX29i aik7CisrCXsKKysJICBkb2NzdHJpbmcgPSBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nIChk c19vYmopOworKwkgIGlmIChkb2NzdHJpbmcgPT0gTlVMTCkKKysJICAgIHsKKysJICAgICAgeGZy ZWUgKGNtZF9uYW1lKTsKKysJICAgICAgeGZyZWUgKHBmeF9uYW1lKTsKKysJICAgICAgcmV0dXJu IC0xOworKwkgICAgfQorKwl9CisgICAgIH0KKyAgIGlmICghIGRvY3N0cmluZykKKyAgICAgZG9j c3RyaW5nID0geHN0cmR1cCAoXygiVGhpcyBjb21tYW5kIGlzIG5vdCBkb2N1bWVudGVkLiIpKTsK K0luZGV4OiBnZGItNy4yL2dkYi9weXRob24vcHktZnJhbWUuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjIub3JpZy9nZGIvcHl0aG9uL3B5LWZyYW1lLmMJMjAxMC0wNi0yOCAyMzoxNjowMy4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy4yL2dkYi9weXRob24vcHktZnJhbWUuYwkyMDEwLTEwLTEy IDE4OjI4OjU4LjAwMDAwMDAwMCArMDIwMAorQEAgLTM4NSw3ICszODUsOCBAQCBmcmFweV9maW5k X3NhbCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0CisgICAgc3RhcnQgdGhlIHNlYXJjaCBmcm9t IHRoYXQgYmxvY2ssIG90aGVyd2lzZSBzZWFyY2ggZnJvbSB0aGUgZnJhbWUncworICAgIGN1cnJl bnQgYmxvY2sgKGRldGVybWluZWQgYnkgZXhhbWluaW5nIHRoZSByZXN1bWUgYWRkcmVzcyBvZiB0 aGUKKyAgICBmcmFtZSkuICBUaGUgdmFyaWFibGUgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyBv ciBhbiBpbnN0YW5jZSBvZiBhCistICAgZ2RiLlN5bWJvbC4gIFRoZSBibG9jayBhcmd1bWVudCBt dXN0IGJlIGFuIGluc3RhbmNlIG9mIGdkYi5CbG9jay4gICovCisrICAgZ2RiLlN5bWJvbC4gIFRo ZSBibG9jayBhcmd1bWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGdkYi5CbG9jay4gIFJldHVy bnMKKysgICBOVUxMIG9uIGVycm9yLCB3aXRoIGEgcHl0aG9uIGV4Y2VwdGlvbiBzZXQuICAqLwor IHN0YXRpYyBQeU9iamVjdCAqCisgZnJhcHlfcmVhZF92YXIgKFB5T2JqZWN0ICpzZWxmLCBQeU9i amVjdCAqYXJncykKKyB7CitJbmRleDogZ2RiLTcuMi9nZGIvcHl0aG9uL3B5LWZ1bmN0aW9uLmMK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy4yLm9yaWcvZ2RiL3B5dGhvbi9weS1mdW5jdGlvbi5jCTIw MTAtMDUtMTcgMjM6MjM6MjUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvcHl0aG9u L3B5LWZ1bmN0aW9uLmMJMjAxMC0xMC0xMiAxODoyODo1OC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0x MTMsNyArMTEzLDE0IEBAIGZucHlfaW5pdCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcK KyAgICAgeworICAgICAgIFB5T2JqZWN0ICpkc19vYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5n IChzZWxmLCAiX19kb2NfXyIpOworICAgICAgIGlmIChkc19vYmogJiYgZ2RicHlfaXNfc3RyaW5n IChkc19vYmopKQorLQlkb2NzdHJpbmcgPSBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nIChk c19vYmopOworKwl7CisrCSAgZG9jc3RyaW5nID0gcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmlu ZyAoZHNfb2JqKTsKKysJICBpZiAoZG9jc3RyaW5nID09IE5VTEwpCisrCSAgICB7CisrCSAgICAg IFB5X0RFQ1JFRiAoc2VsZik7CisrCSAgICAgIHJldHVybiAtMTsKKysJICAgIH0KKysJfQorICAg ICB9CisgICBpZiAoISBkb2NzdHJpbmcpCisgICAgIGRvY3N0cmluZyA9IHhzdHJkdXAgKF8oIlRo aXMgZnVuY3Rpb24gaXMgbm90IGRvY3VtZW50ZWQuIikpOworSW5kZXg6IGdkYi03LjIvZ2RiL3B5 dGhvbi9weS1pbmZlcmlvci5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5vcmlnL2dkYi9weXRo b24vcHktaW5mZXJpb3IuYwkyMDEwLTA2LTI4IDIzOjE2OjAzLjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjIvZ2RiL3B5dGhvbi9weS1pbmZlcmlvci5jCTIwMTAtMTAtMTIgMTg6Mjg6NTguMDAw MDAwMDAwICswMjAwCitAQCAtMjkzLDcgKzI5Myw4IEBAIGdkYnB5X2luZmVyaW9ycyAoUHlPYmpl Y3QgKnVudXNlZCwgUHlPYmoKKyAKKyAvKiBJbXBsZW1lbnRhdGlvbiBvZiBnZGIucmVhZF9tZW1v cnkgKGFkZHJlc3MsIGxlbmd0aCkuCisgICAgUmV0dXJucyBhIFB5dGhvbiBidWZmZXIgb2JqZWN0 IHdpdGggTEVOR1RIIGJ5dGVzIG9mIHRoZSBpbmZlcmlvcidzCistICAgbWVtb3J5IGF0IEFERFJF U1MuICBCb3RoIGFyZ3VtZW50cyBhcmUgaW50ZWdlcnMuICAqLworKyAgIG1lbW9yeSBhdCBBRERS RVNTLiAgQm90aCBhcmd1bWVudHMgYXJlIGludGVnZXJzLiAgUmV0dXJucyBOVUxMIG9uIGVycm9y LAorKyAgIHdpdGggYSBweXRob24gZXhjZXB0aW9uIHNldC4gICovCisgc3RhdGljIFB5T2JqZWN0 ICoKKyBpbmZweV9yZWFkX21lbW9yeSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQ eU9iamVjdCAqa3cpCisgeworQEAgLTM2MSw3ICszNjIsOCBAQCBpbmZweV9yZWFkX21lbW9yeSAo UHlPYmplY3QgKnNlbGYsIFB5T2JqCisgICAgV3JpdGVzIHRoZSBjb250ZW50cyBvZiBCVUZGRVIg KGEgUHl0aG9uIG9iamVjdCBzdXBwb3J0aW5nIHRoZSByZWFkCisgICAgYnVmZmVyIHByb3RvY29s KSBhdCBBRERSRVNTIGluIHRoZSBpbmZlcmlvcidzIG1lbW9yeS4gIFdyaXRlIExFTkdUSAorICAg IGJ5dGVzIGZyb20gQlVGRkVSLCBvciBpdHMgZW50aXJlIGNvbnRlbnRzIGlmIHRoZSBhcmd1bWVu dCBpcyBub3QKKy0gICBwcm92aWRlZC4gIFRoZSBmdW5jdGlvbiByZXR1cm5zIG5vdGhpbmcuICAq LworKyAgIHByb3ZpZGVkLiAgVGhlIGZ1bmN0aW9uIHJldHVybnMgbm90aGluZy4gIFJldHVybnMg TlVMTCBvbiBlcnJvciwgd2l0aAorKyAgIGEgcHl0aG9uIGV4Y2VwdGlvbiBzZXQuICAqLworIHN0 YXRpYyBQeU9iamVjdCAqCisgaW5mcHlfd3JpdGVfbWVtb3J5IChQeU9iamVjdCAqc2VsZiwgUHlP YmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKKyB7CitAQCAtNDczLDcgKzQ3NSw4IEBAIGdldF9j aGFyX2J1ZmZlciAoUHlPYmplY3QgKnNlbGYsIFB5X3NzaXoKKyAgICBzZWFyY2ggZnJvbSBBRERS RVNTLiAgUEFUVEVSTiBpcyB0aGUgcGF0dGVybiB0byBzZWFyY2ggZm9yIChhbmQKKyAgICBtdXN0 IGJlIGEgUHl0aG9uIG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgcHJvdG9jb2wpLgorICAg IFJldHVybnMgYSBQeXRob24gTG9uZyBvYmplY3QgaG9sZGluZyB0aGUgYWRkcmVzcyB3aGVyZSB0 aGUgcGF0dGVybgorLSAgIHdhcyBsb2NhdGVkLCBvciBpZiB0aGUgcGF0dGVybiB3YXMgbm90IGZv dW5kLCByZXR1cm5zIE5vbmUuICAqLworKyAgIHdhcyBsb2NhdGVkLCBvciBpZiB0aGUgcGF0dGVy biB3YXMgbm90IGZvdW5kLCByZXR1cm5zIE5vbmUuICBSZXR1cm5zIE5VTEwKKysgICBvbiBlcnJv ciwgd2l0aCBhIHB5dGhvbiBleGNlcHRpb24gc2V0LiAgKi8KKyBzdGF0aWMgUHlPYmplY3QgKgor IGluZnB5X3NlYXJjaF9tZW1vcnkgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlP YmplY3QgKmt3KQorIHsKK0BAIC01MTEsMTIgKzUxNCw3IEBAIGluZnB5X3NlYXJjaF9tZW1vcnkg KFB5T2JqZWN0ICpzZWxmLCBQeU8KKyAJfQorICAgICB9CisgICBlbHNlCistICAgIHsKKy0gICAg ICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVFcnJvciwKKy0JCSAgICAgICBfKCJDYW5u b3QgZ2V0IHNlYXJjaCBhZGRyZXNzL3JhbmdlIGZyb20gUHl0aG9uLiIpKTsKKy0KKy0gICAgICBy ZXR1cm4gTlVMTDsKKy0gICAgfQorKyAgICByZXR1cm4gTlVMTDsKKyAKKyAgIGlmICghUHlPYmpl Y3RfQ2hlY2tSZWFkQnVmZmVyIChwYXR0ZXJuKSkKKyAgICAgeworSW5kZXg6IGdkYi03LjIvZ2Ri L3B5dGhvbi9weS1wYXJhbS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5vcmlnL2dkYi9weXRo b24vcHktcGFyYW0uYwkyMDEwLTA1LTE3IDIzOjIzOjI1LjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjIvZ2RiL3B5dGhvbi9weS1wYXJhbS5jCTIwMTAtMTAtMTIgMTg6Mjg6NTguMDAwMDAwMDAw ICswMjAwCitAQCAtMTEwLDggKzExMCw4IEBAIGdldF9hdHRyIChQeU9iamVjdCAqb2JqLCBQeU9i amVjdCAqYXR0cl8KKyAgIHJldHVybiBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciAob2JqLCBhdHRy X25hbWUpOworIH0KKyAKKy0vKiBTZXQgYSBwYXJhbWV0ZXIgdmFsdWUgZnJvbSBhIFB5dGhvbiB2 YWx1ZS4gIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xCistICAgb24gZmFpbHVyZS4gICovCisrLyog U2V0IGEgcGFyYW1ldGVyIHZhbHVlIGZyb20gYSBQeXRob24gdmFsdWUuICBSZXR1cm4gMCBvbiBz dWNjZXNzLiAgUmV0dXJucworKyAgIC0xIG9uIGVycm9yLCB3aXRoIGEgcHl0aG9uIGV4Y2VwdGlv biBzZXQuICAqLworIHN0YXRpYyBpbnQKKyBzZXRfcGFyYW1ldGVyX3ZhbHVlIChwYXJtcHlfb2Jq ZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCisgeworQEAgLTE0Miw3ICsxNDIsMTEgQEAgc2V0 X3BhcmFtZXRlcl92YWx1ZSAocGFybXB5X29iamVjdCAqc2VsZgorIAkgICAgc2VsZi0+dmFsdWUu c3RyaW5ndmFsID0gTlVMTDsKKyAJfQorICAgICAgIGVsc2UKKy0Jc2VsZi0+dmFsdWUuc3RyaW5n dmFsID0gcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZyAodmFsdWUpOworKwl7CisrCSAgc2Vs Zi0+dmFsdWUuc3RyaW5ndmFsID0gcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZyAodmFsdWUp OworKwkgIGlmIChzZWxmLT52YWx1ZS5zdHJpbmd2YWwgPT0gTlVMTCkKKysJICAgIHJldHVybiAt MTsKKysJfQorICAgICAgIGJyZWFrOworIAorICAgICBjYXNlIHZhcl9lbnVtOgorQEAgLTE1OCw2 ICsxNjIsOCBAQCBzZXRfcGFyYW1ldGVyX3ZhbHVlIChwYXJtcHlfb2JqZWN0ICpzZWxmCisgCSAg fQorIAorIAlzdHIgPSBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nICh2YWx1ZSk7CisrCWlm IChzdHIgPT0gTlVMTCkKKysJICByZXR1cm4gLTE7CisgCWZvciAoaSA9IDA7IHNlbGYtPmVudW1l cmF0aW9uW2ldOyArK2kpCisgCSAgaWYgKCEgc3RyY21wIChzZWxmLT5lbnVtZXJhdGlvbltpXSwg c3RyKSkKKyAJICAgIGJyZWFrOworQEAgLTI1OCw3ICsyNjQsNyBAQCBzZXRfcGFyYW1ldGVyX3Zh bHVlIChwYXJtcHlfb2JqZWN0ICpzZWxmCisgICByZXR1cm4gMDsKKyB9CisgCistLyogU2V0IGFu IGF0dHJpYnV0ZS4gICovCisrLyogU2V0IGFuIGF0dHJpYnV0ZS4gIFJldHVybnMgLTEgb24gZXJy b3IsIHdpdGggYSBweXRob24gZXhjZXB0aW9uIHNldC4gICovCisgc3RhdGljIGludAorIHNldF9h dHRyIChQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXR0cl9uYW1lLCBQeU9iamVjdCAqdmFsKQor IHsKK0BAIC0zNTgsMTIgKzM2NCwxMyBAQCBhZGRfc2V0c2hvd19nZW5lcmljIChpbnQgcGFybWNs YXNzLCBlbnVtCisgICAgIH0KKyB9CisgCistLyogQSBoZWxwZXIgd2hpY2ggY29tcHV0ZXMgZW51 bSB2YWx1ZXMuICBSZXR1cm5zIDEgb24gc3VjY2VzcywgMCBvbgorLSAgIGVycm9yLiAgKi8KKysv KiBBIGhlbHBlciB3aGljaCBjb21wdXRlcyBlbnVtIHZhbHVlcy4gIFJldHVybnMgMSBvbiBzdWNj ZXNzLiAgUmV0dXJucyAwIG9uCisrICAgZXJyb3IsIHdpdGggYSBweXRob24gZXhjZXB0aW9uIHNl dC4gICovCisgc3RhdGljIGludAorIGNvbXB1dGVfZW51bV92YWx1ZXMgKHBhcm1weV9vYmplY3Qg KnNlbGYsIFB5T2JqZWN0ICplbnVtX3ZhbHVlcykKKyB7CisgICBQeV9zc2l6ZV90IHNpemUsIGk7 CisrICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKKyAKKyAgIGlmICghIGVudW1fdmFsdWVzKQor ICAgICB7CitAQCAtMzkwLDYgKzM5Nyw3IEBAIGNvbXB1dGVfZW51bV92YWx1ZXMgKHBhcm1weV9v YmplY3QgKnNlbGYKKyAgICAgfQorIAorICAgc2VsZi0+ZW51bWVyYXRpb24gPSB4bWFsbG9jICgo c2l6ZSArIDEpICogc2l6ZW9mIChjaGFyICopKTsKKysgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAg KGZyZWVfY3VycmVudF9jb250ZW50cywgJnNlbGYtPmVudW1lcmF0aW9uKTsKKyAgIG1lbXNldCAo c2VsZi0+ZW51bWVyYXRpb24sIDAsIChzaXplICsgMSkgKiBzaXplb2YgKGNoYXIgKikpOworIAor ICAgZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkKK0BAIC0zOTcsMTYgKzQwNSwyNyBAQCBjb21w dXRlX2VudW1fdmFsdWVzIChwYXJtcHlfb2JqZWN0ICpzZWxmCisgICAgICAgUHlPYmplY3QgKml0 ZW0gPSBQeVNlcXVlbmNlX0dldEl0ZW0gKGVudW1fdmFsdWVzLCBpKTsKKyAKKyAgICAgICBpZiAo ISBpdGVtKQorLQlyZXR1cm4gMDsKKysJeworKwkgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKysJ ICByZXR1cm4gMDsKKysJfQorICAgICAgIGlmICghIGdkYnB5X2lzX3N0cmluZyAoaXRlbSkpCisg CXsKKysJICBkb19jbGVhbnVwcyAoYmFja190byk7CisgCSAgUHlFcnJfU2V0U3RyaW5nIChQeUV4 Y19SdW50aW1lRXJyb3IsIAorIAkJCSAgIF8oIlRoZSBlbnVtZXJhdGlvbiBpdGVtIG5vdCBhIHN0 cmluZy4iKSk7CisgCSAgcmV0dXJuIDA7CisgCX0KKyAgICAgICBzZWxmLT5lbnVtZXJhdGlvbltp XSA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKGl0ZW0pOworKyAgICAgIGlmIChzZWxm LT5lbnVtZXJhdGlvbltpXSA9PSBOVUxMKQorKwl7CisrCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8p OworKwkgIHJldHVybiAwOworKwl9CisrICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgKGNoYXIg Kikgc2VsZi0+ZW51bWVyYXRpb25baV0pOworICAgICB9CisgCisrICBkaXNjYXJkX2NsZWFudXBz IChiYWNrX3RvKTsKKyAgIHJldHVybiAxOworIH0KKyAKK0BAIC00MjIsNyArNDQxLDExIEBAIGdl dF9kb2Nfc3RyaW5nIChQeU9iamVjdCAqb2JqZWN0LCBQeU9iamUKKyAgICAgICBQeU9iamVjdCAq ZHNfb2JqID0gUHlPYmplY3RfR2V0QXR0ciAob2JqZWN0LCBhdHRyKTsKKyAKKyAgICAgICBpZiAo ZHNfb2JqICYmIGdkYnB5X2lzX3N0cmluZyAoZHNfb2JqKSkKKy0JcmVzdWx0ID0gcHl0aG9uX3N0 cmluZ190b19ob3N0X3N0cmluZyAoZHNfb2JqKTsKKysJeworKwkgIHJlc3VsdCA9IHB5dGhvbl9z dHJpbmdfdG9faG9zdF9zdHJpbmcgKGRzX29iaik7CisrCSAgaWYgKHJlc3VsdCA9PSBOVUxMKQor KwkgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7CisrCX0KKyAgICAgfQorICAgaWYgKCEgcmVzdWx0 KQorICAgICByZXN1bHQgPSB4c3RyZHVwIChfKCJUaGlzIGNvbW1hbmQgaXMgbm90IGRvY3VtZW50 ZWQuIikpOworQEAgLTQ0OSw4ICs0NzIsOSBAQCBnZXRfZG9jX3N0cmluZyAoUHlPYmplY3QgKm9i amVjdCwgUHlPYmplCisgCisgICAgVGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBwYXJhbWV0ZXIg aXMgdGFrZW4gZnJvbSB0aGUgZG9jIHN0cmluZworICAgIGZvciB0aGUgcHl0aG9uIGNsYXNzLgor LSAgIAorLSovCisrCisrICAgUmV0dXJucyAtMSBvbiBlcnJvciwgd2l0aCBhIHB5dGhvbiBleGNl cHRpb24gc2V0LiAgKi8KKysKKyBzdGF0aWMgaW50CisgcGFybXB5X2luaXQgKFB5T2JqZWN0ICpz ZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCisgeworSW5kZXg6IGdkYi03LjIv Z2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5vcmln L2dkYi9weXRob24vcHktcHJldHR5cHJpbnQuYwkyMDEwLTEwLTEyIDE4OjI3OjU3LjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjIvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCTIwMTAtMTAt MTIgMTg6Mjg6NTguMDAwMDAwMDAwICswMjAwCitAQCAtMTg1LDggKzE4NSw4IEBAIGZpbmRfcHJl dHR5X3ByaW50ZXIgKFB5T2JqZWN0ICp2YWx1ZSkKKyAgICBpcyByZXR1cm5lZC4gIElmIHRoZSBm dW5jdGlvbiByZXR1cm5zIFB5X05PTkUgdGhhdCBtZWFucyB0aGUgcHJldHR5CisgICAgcHJpbnRl ciByZXR1cm5lZCB0aGUgUHl0aG9uIE5vbmUgYXMgYSB2YWx1ZS4gIE90aGVyd2lzZSwgaWYgdGhl CisgICAgZnVuY3Rpb24gcmV0dXJucyBhIHZhbHVlLCAgKk9VVF9WQUxVRSBpcyBzZXQgdG8gdGhl IHZhbHVlLCBhbmQgTlVMTAorLSAgIGlzIHJldHVybmVkLiAgT24gZXJyb3IsICpPVVRfVkFMVUUg aXMgc2V0IHRvIE5VTEwsIGFuZCBOVUxMIGlzCistICAgcmV0dXJuZWQuICAqLworKyAgIGlzIHJl dHVybmVkLiAgT24gZXJyb3IsICpPVVRfVkFMVUUgaXMgc2V0IHRvIE5VTEwsIE5VTEwgaXMKKysg ICByZXR1cm5lZCwgd2l0aCBhIHB5dGhvbiBleGNlcHRpb24gc2V0LiAgKi8KKyAKKyBzdGF0aWMg UHlPYmplY3QgKgorIHByZXR0eV9wcmludF9vbmVfdmFsdWUgKFB5T2JqZWN0ICpwcmludGVyLCBz dHJ1Y3QgdmFsdWUgKipvdXRfdmFsdWUpCitAQCAtMjMyLDcgKzIzMiwxMSBAQCBnZGJweV9nZXRf ZGlzcGxheV9oaW50IChQeU9iamVjdCAqcHJpbnRlCisgICBpZiAoaGludCkKKyAgICAgeworICAg ICAgIGlmIChnZGJweV9pc19zdHJpbmcgKGhpbnQpKQorLQlyZXN1bHQgPSBweXRob25fc3RyaW5n X3RvX2hvc3Rfc3RyaW5nIChoaW50KTsKKysJeworKwkgIHJlc3VsdCA9IHB5dGhvbl9zdHJpbmdf dG9faG9zdF9zdHJpbmcgKGhpbnQpOworKwkgIGlmIChyZXN1bHQgPT0gTlVMTCkKKysJICAgIGdk YnB5X3ByaW50X3N0YWNrICgpOworKwl9CisgICAgICAgUHlfREVDUkVGIChoaW50KTsKKyAgICAg fQorICAgZWxzZQorQEAgLTU3NCw3ICs1NzgsMTAgQEAgcHJpbnRfY2hpbGRyZW4gKFB5T2JqZWN0 ICpwcmludGVyLCBjb25zdAorIAkgIGVsc2UKKyAJICAgIHsKKyAJICAgICAgb3V0cHV0ID0gcHl0 aG9uX3N0cmluZ190b19ob3N0X3N0cmluZyAocHlfdik7CistCSAgICAgIGZwdXRzX2ZpbHRlcmVk IChvdXRwdXQsIHN0cmVhbSk7CisrCSAgICAgIGlmICghb3V0cHV0KQorKwkJZ2RicHlfcHJpbnRf c3RhY2sgKCk7CisrCSAgICAgIGVsc2UKKysJCWZwdXRzX2ZpbHRlcmVkIChvdXRwdXQsIHN0cmVh bSk7CisgCSAgICAgIHhmcmVlIChvdXRwdXQpOworIAkgICAgfQorIAl9CitJbmRleDogZ2RiLTcu Mi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4yLm9yaWcvZ2Ri L3B5dGhvbi9weS12YWx1ZS5jCTIwMTAtMTAtMTIgMTg6Mjc6NTQuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuMi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMJMjAxMC0xMC0xMiAxODoyODo1OC4wMDAw MDAwMDAgKzAyMDAKK0BAIC0xMTQsNyArMTE0LDggQEAgbm90ZV92YWx1ZSAodmFsdWVfb2JqZWN0 ICp2YWx1ZV9vYmopCisgICB2YWx1ZXNfaW5fcHl0aG9uID0gdmFsdWVfb2JqOworIH0KKyAKKy0v KiBDYWxsZWQgd2hlbiBhIG5ldyBnZGIuVmFsdWUgb2JqZWN0IG5lZWRzIHRvIGJlIGFsbG9jYXRl ZC4gICovCisrLyogQ2FsbGVkIHdoZW4gYSBuZXcgZ2RiLlZhbHVlIG9iamVjdCBuZWVkcyB0byBi ZSBhbGxvY2F0ZWQuICBSZXR1cm5zIE5VTEwgb24KKysgICBlcnJvciwgd2l0aCBhIHB5dGhvbiBl eGNlcHRpb24gc2V0LiAgKi8KKyBzdGF0aWMgUHlPYmplY3QgKgorIHZhbHB5X25ldyAoUHlUeXBl T2JqZWN0ICpzdWJ0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzKQorIHsK K0BAIC0zMzQsNyArMzM1LDcgQEAgdmFscHlfbGVuZ3RoIChQeU9iamVjdCAqc2VsZikKKyB9Cisg CisgLyogR2l2ZW4gc3RyaW5nIG5hbWUgb2YgYW4gZWxlbWVudCBpbnNpZGUgc3RydWN0dXJlLCBy ZXR1cm4gaXRzIHZhbHVlCistICAgb2JqZWN0LiAgKi8KKysgICBvYmplY3QuICBSZXR1cm5zIE5V TEwgb24gZXJyb3IsIHdpdGggYSBweXRob24gZXhjZXB0aW9uIHNldC4gICovCisgc3RhdGljIFB5 T2JqZWN0ICoKKyB2YWxweV9nZXRpdGVtIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSkK KyB7CitAQCAtNDY4LDcgKzQ2OSw4IEBAIGVudW0gdmFscHlfb3Bjb2RlCisgICAoKFRZUEVfQ09E RSAoVFlQRSkgPT0gVFlQRV9DT0RFX1JFRikgPyAoVFlQRV9UQVJHRVRfVFlQRSAoVFlQRSkpIDog KFRZUEUpKQorIAorIC8qIFJldHVybnMgYSB2YWx1ZSBvYmplY3Qgd2hpY2ggaXMgdGhlIHJlc3Vs dCBvZiBhcHBseWluZyB0aGUgb3BlcmF0aW9uCistICAgc3BlY2lmaWVkIGJ5IE9QQ09ERSB0byB0 aGUgZ2l2ZW4gYXJndW1lbnRzLiAgKi8KKysgICBzcGVjaWZpZWQgYnkgT1BDT0RFIHRvIHRoZSBn aXZlbiBhcmd1bWVudHMuICBSZXR1cm5zIE5VTEwgb24gZXJyb3IsIHdpdGgKKysgICBhIHB5dGhv biBleGNlcHRpb24gc2V0LiAgKi8KKyBzdGF0aWMgUHlPYmplY3QgKgorIHZhbHB5X2Jpbm9wIChl bnVtIHZhbHB5X29wY29kZSBvcGNvZGUsIFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIp CisgeworQEAgLTcyMyw3ICs3MjUsOCBAQCB2YWxweV94b3IgKFB5T2JqZWN0ICpzZWxmLCBQeU9i amVjdCAqb3RoCisgICByZXR1cm4gdmFscHlfYmlub3AgKFZBTFBZX0JJVFhPUiwgc2VsZiwgb3Ro ZXIpOworIH0KKyAKKy0vKiBJbXBsZW1lbnRzIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBmb3IgdmFs dWUgb2JqZWN0cy4gICovCisrLyogSW1wbGVtZW50cyBjb21wYXJpc29uIG9wZXJhdGlvbnMgZm9y IHZhbHVlIG9iamVjdHMuICBSZXR1cm5zIE5VTEwgb24gZXJyb3IsCisrICAgd2l0aCBhIHB5dGhv biBleGNlcHRpb24gc2V0LiAgKi8KKyBzdGF0aWMgUHlPYmplY3QgKgorIHZhbHB5X3JpY2hjb21w YXJlIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyLCBpbnQgb3ApCisgeworSW5kZXg6 IGdkYi03LjIvZ2RiL3B5dGhvbi9weXRob24uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjIub3Jp Zy9nZGIvcHl0aG9uL3B5dGhvbi5jCTIwMTAtMTAtMTIgMTg6Mjc6NTQuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuMi9nZGIvcHl0aG9uL3B5dGhvbi5jCTIwMTAtMTAtMTIgMTg6Mjg6NTguMDAw MDAwMDAwICswMjAwCitAQCAtODIsNiArODIsNyBAQCBzdHJ1Y3QgcHl0aG9uX2VudgorICAgUHlH SUxTdGF0ZV9TVEFURSBzdGF0ZTsKKyAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOworICAgY29u c3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmd1YWdlOworKyAgUHlPYmplY3QgKmVycm9yX3R5 cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKKyB9OworIAorIHN0YXRpYyB2b2lk CitAQCAtODksNiArOTAsMTYgQEAgcmVzdG9yZV9weXRob25fZW52ICh2b2lkICpwKQorIHsKKyAg IHN0cnVjdCBweXRob25fZW52ICplbnYgPSAoc3RydWN0IHB5dGhvbl9lbnYgKilwOworIAorKyAg LyogTGVmdG92ZXIgUHl0aG9uIGVycm9yIGlzIGZvcmJpZGRlbiBieSBQeXRob24gRXhjZXB0aW9u IEhhbmRsaW5nLiAgKi8KKysgIGlmIChQeUVycl9PY2N1cnJlZCAoKSkKKysgICAgeworKyAgICAg IC8qIFRoaXMgb3JkZXIgaXMgc2ltaWxhciB0byB0aGUgb25lIGNhbGxpbmcgZXJyb3IgYWZ0ZXJ3 YXJkcy4gKi8KKysgICAgICBnZGJweV9wcmludF9zdGFjayAoKTsKKysgICAgICB3YXJuaW5nIChf KCJpbnRlcm5hbCBlcnJvcjogVW5oYW5kbGVkIFB5dGhvbiBleGNlcHRpb24iKSk7CisrICAgIH0K KysKKysgIFB5RXJyX1Jlc3RvcmUgKGVudi0+ZXJyb3JfdHlwZSwgZW52LT5lcnJvcl92YWx1ZSwg ZW52LT5lcnJvcl90cmFjZWJhY2spOworKworICAgUHlHSUxTdGF0ZV9SZWxlYXNlIChlbnYtPnN0 YXRlKTsKKyAgIHB5dGhvbl9nZGJhcmNoID0gZW52LT5nZGJhcmNoOworICAgcHl0aG9uX2xhbmd1 YWdlID0gZW52LT5sYW5ndWFnZTsKK0BAIC0xMTEsNiArMTIyLDkgQEAgZW5zdXJlX3B5dGhvbl9l bnYgKHN0cnVjdCBnZGJhcmNoICpnZGJhcgorICAgcHl0aG9uX2dkYmFyY2ggPSBnZGJhcmNoOwor ICAgcHl0aG9uX2xhbmd1YWdlID0gbGFuZ3VhZ2U7CisgCisrICAvKiBTYXZlIGl0IGFuZCBlbnN1 cmUgISBQeUVycl9PY2N1cnJlZCAoKSBhZnRlcndhcmRzLiAgKi8KKysgIFB5RXJyX0ZldGNoICgm ZW52LT5lcnJvcl90eXBlLCAmZW52LT5lcnJvcl92YWx1ZSwgJmVudi0+ZXJyb3JfdHJhY2ViYWNr KTsKKysgIAorICAgcmV0dXJuIG1ha2VfY2xlYW51cCAocmVzdG9yZV9weXRob25fZW52LCBlbnYp OworIH0KKyAKK0luZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1lcnJv ci5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKKysrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1lcnJv ci5leHAJMjAxMC0xMC0xMiAxODoyODo1OC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0wLDAgKzEsNTYg QEAKKysjIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBUZXN0IGVycm9yIHdoaWxl IGxvYWRpbmcgKi1nZGIucHkuICBJQk0xMDQ3IGlzIGNob3NlbiBhcyBwb3NzaWJseSBzdXBwb3J0 ZWQKKysjIGJ5IGdsaWJjIGJ1dCB1bnN1cHBvcnRlZCBieSBQeXRob24KKysKKytzZXQgdGVzdGZp bGUgInB5LWVycm9yIgorKworK2xvYWRfbGliIGdkYi1weXRob24uZXhwCisrCisrIyBTdGFydCB3 aXRoIGEgZnJlc2ggZ2RiLgorK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrCisrIyBTa2lwIGFsbCB0 ZXN0cyBpZiBQeXRob24gc2NyaXB0aW5nIGlzIG5vdCBlbmFibGVkLgorK2lmIHsgW3NraXBfcHl0 aG9uX3Rlc3RzXSB9IHsgY29udGludWUgfQorKworK3NldCBjaGFyc2V0ICJJQk0xMDQ3IgorKwor K3NldCB0ZXN0MiAibWFpbiByZWFjaGVkIgorKworK3NldCB0ZXN0ICJzZXQgaG9zdC1jaGFyc2V0 ICRjaGFyc2V0IgorK3NldCB0ZXN0X3JlZ2V4IFtzdHJpbmdfdG9fcmVnZXhwICR0ZXN0XQorK2dk Yl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysgICAgLXJlICJeJHRlc3RfcmVnZXhcclxu JGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICJeJHRlc3Rf cmVnZXhcclxuVW5kZWZpbmVkIGl0ZW06IFwiJGNoYXJzZXRcIlxcLlxyXG4kZ2RiX3Byb21wdCAk IiB7CisrCXhmYWlsICR0ZXN0CisrCXVudGVzdGVkICR0ZXN0MgorKwlzZXQgdGVzdDIgIiIKKysg ICAgfQorK30KKysKKytpZiB7JHRlc3QyID09ICIifSB7CisrICAgIHJldHVybiAwCisrfQorKwor K3NldCByZW1vdGVfcHl0aG9uX2ZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICR7c3JjZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0ucHldCisrCisrIyBhcmdjPUxvb2t1cEVycm9yOiB1bmtub3du IGVuY29kaW5nOiBJQk0xMDQ3CisrZ2RiX3Rlc3QgInNvdXJjZSAkcmVtb3RlX3B5dGhvbl9maWxl IiAiVHJhY2ViYWNrLipDbGFzc05hbWUuKlxyXG5Mb29rdXBFcnJvcjogdW5rbm93biBlbmNvZGlu ZzogJGNoYXJzZXQiICR0ZXN0MgorKworK2dkYl90ZXN0ICJwIDEiICIgPSAxIiAibm8gZGVsYXll ZCBlcnJvciIKK0luZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1lcnJv ci5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAorKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWVycm9y LnB5CTIwMTAtMTAtMTIgMTg6Mjg6NTguMDAwMDAwMDAwICswMjAwCitAQCAtMCwwICsxLDI1IEBA CisrIyBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisr CisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisr IworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK2ltcG9ydCBnZGIKKysKKytjbGFz cyBDbGFzc05hbWUoZ2RiLkNvbW1hbmQpOgorKyAgICAnYScKKysgICAgZGVmIF9faW5pdF9fKHNl bGYpOgorKyAgICAgICAgZ2RiLkNvbW1hbmQuX19pbml0X18gKHNlbGYsICJDbGFzc05hbWUiLCBn ZGIuQ09NTUFORF9EQVRBLCBwcmVmaXg9VHJ1ZSkKKysgICAgZGVmIGludm9rZShzZWxmLCBhcmdz LCBmcm9tX3R0eSk6CisrICAgICAgICBwcmludAorKworK0NsYXNzTmFtZSgpCitJbmRleDogZ2Ri LTcuMi9nZGIvdmFyb2JqLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4yLm9yaWcvZ2RiL3Zhcm9i ai5jCTIwMTAtMTAtMTIgMTg6Mjc6NTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIv dmFyb2JqLmMJMjAxMC0xMC0xMiAxODoyODo1OC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMDU0LDYg KzEwNTQsOCBAQCB1cGRhdGVfZHluYW1pY192YXJvYmpfY2hpbGRyZW4gKHN0cnVjdCB2CisgCSAg ICBlcnJvciAoXygiSW52YWxpZCBpdGVtIGZyb20gdGhlIGNoaWxkIGxpc3QiKSk7CisgCisgCSAg diA9IGNvbnZlcnRfdmFsdWVfZnJvbV9weXRob24gKHB5X3YpOworKwkgIGlmICh2ID09IE5VTEwp CisrCSAgICBnZGJweV9wcmludF9zdGFjayAoKTsKKyAJICBpbnN0YWxsX2R5bmFtaWNfY2hpbGQg KHZhciwgY2FuX21lbnRpb24gPyBjaGFuZ2VkIDogTlVMTCwKKyAJCQkJIGNhbl9tZW50aW9uID8g bmV3IDogTlVMTCwKKyAJCQkJIGNhbl9tZW50aW9uID8gdW5jaGFuZ2VkIDogTlVMTCwKK0BAIC0y NTQyLDYgKzI1NDQsOCBAQCB2YWx1ZV9nZXRfcHJpbnRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFs CisgCQkJdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fY2hhcjsKKyAJCQlQ eV9ERUNSRUYgKHB5X3N0cik7CisgCQkgICAgICB9CisrCQkgICAgZWxzZQorKwkJICAgICAgZ2Ri cHlfcHJpbnRfc3RhY2sgKCk7CisgCQkgIH0KKyAJCVB5X0RFQ1JFRiAob3V0cHV0KTsKKyAJICAg ICAgfQoKZGlmZiAtLWdpdCBhL2dkYi10ZXN0c3VpdGUtbGliLXB5dGhvbi5wYXRjaCBiL2dkYi10 ZXN0c3VpdGUtbGliLXB5dGhvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi41YTRhNTYwCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXRlc3RzdWl0ZS1saWItcHl0aG9u LnBhdGNoCkBAIC0wLDAgKzEsNzUgQEAKK2FkMjBlNWViMTVkMDM3YTMxZTNiNDg0ZTlmNTc1NDJk YzkyN2MwYTkKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMTAvbXNnMDAw MDUuaHRtbAorCisjIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTAvMDkvMzAgMTg6 NTg6MDcJMS4yNDYyCisjIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTAvMTAvMDEg MTc6MDM6NDkJMS4yNDYzCisjIyAtMSwzICsxLDE5IEBACisrMjAxMC0xMC0wMSAgRG91ZyBFdmFu cyAgPGRqZUBnb29nbGUuY29tPgorKworKwkqIGxpYi9nZGItcHl0aG9uLmV4cDogTmV3IGZpbGUu CisrCSogZ2RiLnB5dGhvbi9weS1ibG9jay5leHA6IFVzZSBpdC4KKysJKiBnZGIucHl0aG9uL3B5 LWJyZWFrcG9pbnQuZXhwOiBEaXR0by4KKysJKiBnZGIucHl0aG9uL3B5LWZyYW1lLmV4cDogRGl0 dG8uCisrCSogZ2RiLnB5dGhvbi9weS1pbmZlcmlvci5leHA6IERpdHRvLgorKwkqIGdkYi5weXRo b24vcHktcGFyYW0uZXhwOiBEaXR0by4KKysJKiBnZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4 cDogRGl0dG8uCisrCSogZ2RiLnB5dGhvbi9weS1zaGFyZWQuZXhwOiBEaXR0by4KKysJKiBnZGIu cHl0aG9uL3B5LXN5bWJvbC5leHA6IERpdHRvLgorKwkqIGdkYi5weXRob24vcHktc3ltdGFiLmV4 cDogRGl0dG8uCisrCSogZ2RiLnB5dGhvbi9weS10eXBlLmV4cDogRGl0dG8uCisrCSogZ2RiLnB5 dGhvbi9weS12YWx1ZS5leHA6IERpdHRvLgorKwkqIGdkYi5weXRob24vcHl0aG9uLmV4cDogRGl0 dG8uCisrCisgMjAxMC0wOS0zMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgorIAor IAkqIGdkYi5iYXNlL2Fub24uZXhwOiBOZXcgZmlsZS4KKy0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9s aWIvZ2RiLXB5dGhvbi5leHAKKysrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLXB5dGhvbi5l eHAJMjAxMC0xMC0xMiAxNzo1ODozNS45MDQ0NjgwMDAgKzAwMDAKK0BAIC0wLDAgKzEsNDcgQEAK KysjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysjIFV0aWxpdGllcyBmb3IgcHl0aG9uLXNj cmlwdGluZyByZWxhdGVkIHRlc3RzLgorKworKyMgUnVuIGEgY29tbWFuZCBpbiBHREIsIGFuZCBy ZXBvcnQgYSBmYWlsdXJlIGlmIGEgUHl0aG9uIGV4Y2VwdGlvbiBpcyB0aHJvd24uCisrIyBJZiBy ZXBvcnRfcGFzcyBpcyB0cnVlLCByZXBvcnQgYSBwYXNzIGlmIG5vIGV4Y2VwdGlvbiBpcyB0aHJv d24uCisrCisrcHJvYyBnZGJfcHlfdGVzdF9zaWxlbnRfY21kIHsgY21kIG5hbWUgcmVwb3J0X3Bh c3MgfSB7CisrICAgIGdsb2JhbCBnZGJfcHJvbXB0CisrCisrICAgIGdkYl90ZXN0X211bHRpcGxl ICRjbWQgJG5hbWUgeworKwktcmUgIlRyYWNlYmFjay4qJGdkYl9wcm9tcHQgJCIgeyBmYWlsICRu YW1lIH0KKysJLXJlICIkZ2RiX3Byb21wdCAkIiAgICAgICAgICAgIHsgaWYgJHJlcG9ydF9wYXNz IHsgcGFzcyAkbmFtZSB9IH0KKysgICAgfQorK30KKysKKysjIFVzYWdlOiBnZGJfcHlfdGVzdF9t dWx0aXBsZSBOQU1FIElOUFVUIFJFU1VMVCB7SU5QVVQgUkVTVUxUfS4uLgorKyMgUnVuIGEgdGVz dCBuYW1lZCBOQU1FLCBjb25zaXN0aW5nIG9mIG11bHRpcGxlIGxpbmVzIG9mIGlucHV0LgorKyMg QWZ0ZXIgZWFjaCBpbnB1dCBsaW5lIElOUFVULCBzZWFyY2ggZm9yIHJlc3VsdCBsaW5lIFJFU1VM VC4KKysjIFN1Y2NlZWQgaWYgYWxsIHJlc3VsdHMgYXJlIHNlZW47IGZhaWwgb3RoZXJ3aXNlLgor KworK3Byb2MgZ2RiX3B5X3Rlc3RfbXVsdGlwbGUgeyBuYW1lIGFyZ3MgfSB7CisrICAgIGdsb2Jh bCBnZGJfcHJvbXB0CisrICAgIGZvcmVhY2gge2lucHV0IHJlc3VsdH0gJGFyZ3MgeworKwlpZiB7 W2dkYl90ZXN0X211bHRpcGxlICRpbnB1dCAiJG5hbWUgLSAkaW5wdXQiIHsKKysJICAgIC1yZSAi XFtcclxuXF0qKCRyZXN1bHQpXFtcclxuXF0rKCRnZGJfcHJvbXB0IHwgKj4pJCIgeworKwkJcGFz cyAiJG5hbWUgLSAkaW5wdXQiCisrCSAgICB9CisrCX1dfSB7CisrCSAgICByZXR1cm4gMQorKwl9 CisrICAgIH0KKysgICAgcmV0dXJuIDAKKyt9CgpkaWZmIC0tZ2l0IGEvZ2RiLXVwc3RyZWFtLnBh dGNoIGIvZ2RiLXVwc3RyZWFtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmFkM2QxMGMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdXBzdHJlYW0ucGF0Y2gKQEAgLTAs MCArMSw0NjcgQEAKK2h0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9 NjEwOTg2CitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEwLTA4L21zZzAwMTEy Lmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDgvMTggMjI6NTc6NDUJMS4xMjA5 NworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDgvMTkgMDc6MzQ6MjYJMS4xMjA5OAorIyMg LTEsMyArMSw5IEBACisrMjAxMC0wOC0xOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgorKworKwkqIHZhcm9iai5jICh2YXJvYmpfY3JlYXRlKTogUmVwbGFjZSB2 YXJpYWJsZSBvbGRfZmkgd2l0aCBvbGRfaWQsCisrCWluaXRpYWxpemUgaXQgYnkgbnVsbF9mcmFt ZV9pZCwgd3JhcCBpdHMgdXNhZ2UgYnkgZ2V0X2ZyYW1lX2lkLAorKwlmcmFtZV9pZF9wIGFuZCBm cmFtZV9maW5kX2J5X2lkLgorKworIDIwMTAtMDgtMTggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVk aGF0LmNvbT4KKyAKKyAJUFIgcHl0aG9uLzExOTAwOgorLS0tIHNyYy9nZGIvdmFyb2JqLmMJMjAx MC8wOC8wNiAxNDoxNzo1NgkxLjE1OQorKysrIHNyYy9nZGIvdmFyb2JqLmMJMjAxMC8wOC8xOSAw NzozNDoyNwkxLjE2MAorQEAgLTUyNCw3ICs1MjQsNyBAQCB2YXJvYmpfY3JlYXRlIChjaGFyICpv YmpuYW1lLAorIHsKKyAgIHN0cnVjdCB2YXJvYmogKnZhcjsKKyAgIHN0cnVjdCBmcmFtZV9pbmZv ICpmaTsKKy0gIHN0cnVjdCBmcmFtZV9pbmZvICpvbGRfZmkgPSBOVUxMOworKyAgc3RydWN0IGZy YW1lX2lkIG9sZF9pZCA9IG51bGxfZnJhbWVfaWQ7CisgICBzdHJ1Y3QgYmxvY2sgKmJsb2NrOwor ICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKKyAKK0BAIC02MTEsNyArNjExLDcgQEAKKyAK KyAJICB2YXItPnJvb3QtPmZyYW1lID0gZ2V0X2ZyYW1lX2lkIChmaSk7CisgCSAgdmFyLT5yb290 LT50aHJlYWRfaWQgPSBwaWRfdG9fdGhyZWFkX2lkIChpbmZlcmlvcl9wdGlkKTsKKy0JICBvbGRf ZmkgPSBnZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpOworKwkgIG9sZF9pZCA9IGdldF9mcmFtZV9p ZCAoZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKSk7CisgCSAgc2VsZWN0X2ZyYW1lIChmaSk7CSAK KyAJfQorIAorQEAgLTYzOSw4ICs2MzksOCBAQAorICAgICAgIHZhci0+cm9vdC0+cm9vdHZhciA9 IHZhcjsKKyAKKyAgICAgICAvKiBSZXNldCB0aGUgc2VsZWN0ZWQgZnJhbWUgKi8KKy0gICAgICBp ZiAob2xkX2ZpICE9IE5VTEwpCistCXNlbGVjdF9mcmFtZSAob2xkX2ZpKTsKKysgICAgICBpZiAo ZnJhbWVfaWRfcCAob2xkX2lkKSkKKysJc2VsZWN0X2ZyYW1lIChmcmFtZV9maW5kX2J5X2lkIChv bGRfaWQpKTsKKyAgICAgfQorIAorICAgLyogSWYgdGhlIHZhcmlhYmxlIG9iamVjdCBuYW1lIGlz IG51bGwsIHRoYXQgbWVhbnMgdGhpcworCisKKworaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29t L3Nob3dfYnVnLmNnaT9pZD02Mjc1MDYKK1JlOiBbcGF0Y2hdIEZpeCBuZXN0aW5nIG9mIHVpX291 dF9yZWRpcmVjdAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDkv bXNnMDAxMjIuaHRtbAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wOS9t c2cwMDAzMS5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5LzAzIDAxOjI5OjA5 CTEuMTIxNDkKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5LzAzIDE1OjQxOjU5CTEuMTIx NTAKKyMjIC0xLDMgKzEsMjcgQEAKKysyMDEwLTA5LTAzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCSogYnJlYWtwb2ludC5jIChzYXZlX2JyZWFrcG9p bnRzKTogVXNlIFJFVFVSTl9NQVNLX0FMTC4KKysJKiBjbGktb3V0LmM6IEluY2x1ZGUgdmVjLmgu CisrCShjbGlfZmllbGRfZm10LCBjbGlfc3BhY2VzLCBjbGlfdGV4dCwgY2xpX21lc3NhZ2UsIGNs aV9mbHVzaCk6IE5ldworKwl2YXJpYWJsZSBzdHJlYW0sIGluaXRpYWxpemUgaXQsIHVzZSBpdC4K KysJKGNsaV9yZWRpcmVjdCk6IE5ldyBmdW5jdGlvbiBjb21tZW50LiAgUmVwbGFjZSB0aGUgc3Ry ZWFtIGFuZAorKwlvcmlnaW5hbF9zdHJlYW0gZmllbGRzIGJ5IHRoZSBuZXcgc3RyZWFtcyBmaWVs ZC4gIFJlbW92ZSB0aGUKKysJb3JpZ2luYWxfc3RyZWFtICE9IE5VTEwgY29uZGl0aW9uYWwsIGFz c2VydCBlcnJvciBvbiBOVUxMIGluc3RlYWQuCisrCShvdXRfZmllbGRfZm10LCBmaWVsZF9zZXBh cmF0b3IpOiBOZXcgdmFyaWFibGUgc3RyZWFtLCBpbml0aWFsaXplIGl0LCB1c2UgaXQuCisrCShj bGlfb3V0X2RhdGFfY3Rvcik6IEFzc2VydCBub24tTlVMTCBzdHJlYW0uICBSZXBsYWNlIHRoZSBz dHJlYW0gYW5kCisrCW9yaWdpbmFsX3N0cmVhbSBmaWVsZHMgYnkgdGhlIG5ldyBzdHJlYW1zIGZp ZWxkLgorKwkoY2xpX291dF9zZXRfc3RyZWFtKTogUmVwbGFjZSB0aGUgc3RyZWFtIGZpZWxkIGJ5 IHRoZSBuZXcgc3RyZWFtcworKwlmaWVsZC4KKysJKiBjbGktb3V0Lmg6IEluY2x1ZGUgdmVjLmgu CisrCSh1aV9maWxlcCk6IE5ldyB0eXBlZGVmLCBjYWxsIERFRl9WRUNfUCBmb3IgaXQuCisrCShz dHJ1Y3QgY2xpX3VpX291dF9kYXRhKTogUmVwbGFjZSB0aGUgc3RyZWFtIGFuZCBvcmlnaW5hbF9z dHJlYW0KKysJZmllbGRzIGJ5IHRoZSBuZXcgc3RyZWFtcyBmaWVsZC4KKysJKiBjbGkvY2xpLWxv Z2dpbmcuYyAoc2V0X2xvZ2dpbmdfcmVkaXJlY3QpOiBDYWxsIHVpX291dF9yZWRpcmVjdCB3aXRo CisrCU5VTEwgZmlyc3QuICBFeHRlbmQgdGhlIGNvbW1lbnQuCisrCShoYW5kbGVfcmVkaXJlY3Rp b25zKTogQ2FsbCB1aV9vdXRfcmVkaXJlY3Qgd2l0aCBvdXRwdXQuCisrCSogcHl0aG9uL3B5LWJy ZWFrcG9pbnQuYyAoYnBweV9nZXRfY29tbWFuZHMpOiBNb3ZlIHVpX291dF9yZWRpcmVjdAorKwlj YWxscyBvdXRzaWRlIG9mIHRoZSBUUllfQ0FUQ0ggYmxvY2suCisrCisKK1sgY2xpL2NsaS1sb2dn aW5nLmMgcmVtb3ZlZC4gIF0KKworLS0tIHNyYy9nZGIvYnJlYWtwb2ludC5jCTIwMTAvMDgvMzAg MDk6NDk6MTIJMS41MTEKKysrKyBzcmMvZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLzA5LzAzIDE1OjQy OjAyCTEuNTEyCitAQCAtMTE0ODcsNyArMTE0ODcsNyBAQAorIAlmcHJpbnRmX3VuZmlsdGVyZWQg KGZwLCAiICBjb21tYW5kc1xuIik7CisgCQorIAl1aV9vdXRfcmVkaXJlY3QgKHVpb3V0LCBmcCk7 CistCVRSWV9DQVRDSCAoZXgsIFJFVFVSTl9NQVNLX0VSUk9SKQorKwlUUllfQ0FUQ0ggKGV4LCBS RVRVUk5fTUFTS19BTEwpCisgCSAgeworIAkgICAgcHJpbnRfY29tbWFuZF9saW5lcyAodWlvdXQs IHRwLT5jb21tYW5kcy0+Y29tbWFuZHMsIDIpOworIAkgIH0KKy0tLSBzcmMvZ2RiL2NsaS1vdXQu YwkyMDEwLzA1LzEzIDIzOjUzOjMyCTEuMzAKKysrKyBzcmMvZ2RiL2NsaS1vdXQuYwkyMDEwLzA5 LzAzIDE1OjQyOjAyCTEuMzEKK0BAIC0yNiw2ICsyNiw3IEBACisgI2luY2x1ZGUgImNsaS1vdXQu aCIKKyAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgorICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCisr I2luY2x1ZGUgInZlYy5oIgorIAorIHR5cGVkZWYgc3RydWN0IGNsaV91aV9vdXRfZGF0YSBjbGlf b3V0X2RhdGE7CisgCitAQCAtMjI0LDExICsyMjUsMTMgQEAKKyAJICAgICAgIHZhX2xpc3QgYXJn cykKKyB7CisgICBjbGlfb3V0X2RhdGEgKmRhdGEgPSB1aV9vdXRfZGF0YSAodWlvdXQpOworKyAg c3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsKKyAKKyAgIGlmIChkYXRhLT5zdXBwcmVzc19vdXRwdXQp CisgICAgIHJldHVybjsKKyAKKy0gIHZmcHJpbnRmX2ZpbHRlcmVkIChkYXRhLT5zdHJlYW0sIGZv cm1hdCwgYXJncyk7CisrICBzdHJlYW0gPSBWRUNfbGFzdCAodWlfZmlsZXAsIGRhdGEtPnN0cmVh bXMpOworKyAgdmZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgZm9ybWF0LCBhcmdzKTsKKyAKKyAg IGlmIChhbGlnbiAhPSB1aV9ub2FsaWduKQorICAgICBmaWVsZF9zZXBhcmF0b3IgKCk7CitAQCAt MjM4LDIwICsyNDEsMjYgQEAKKyBjbGlfc3BhY2VzIChzdHJ1Y3QgdWlfb3V0ICp1aW91dCwgaW50 IG51bXNwYWNlcykKKyB7CisgICBjbGlfb3V0X2RhdGEgKmRhdGEgPSB1aV9vdXRfZGF0YSAodWlv dXQpOworKyAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsKKyAKKyAgIGlmIChkYXRhLT5zdXBwcmVz c19vdXRwdXQpCisgICAgIHJldHVybjsKKy0gIHByaW50X3NwYWNlc19maWx0ZXJlZCAobnVtc3Bh Y2VzLCBkYXRhLT5zdHJlYW0pOworKworKyAgc3RyZWFtID0gVkVDX2xhc3QgKHVpX2ZpbGVwLCBk YXRhLT5zdHJlYW1zKTsKKysgIHByaW50X3NwYWNlc19maWx0ZXJlZCAobnVtc3BhY2VzLCBzdHJl YW0pOworIH0KKyAKKyBzdGF0aWMgdm9pZAorIGNsaV90ZXh0IChzdHJ1Y3QgdWlfb3V0ICp1aW91 dCwgY29uc3QgY2hhciAqc3RyaW5nKQorIHsKKyAgIGNsaV9vdXRfZGF0YSAqZGF0YSA9IHVpX291 dF9kYXRhICh1aW91dCk7CisrICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtOworIAorICAgaWYgKGRh dGEtPnN1cHByZXNzX291dHB1dCkKKyAgICAgcmV0dXJuOworLSAgZnB1dHNfZmlsdGVyZWQgKHN0 cmluZywgZGF0YS0+c3RyZWFtKTsKKysKKysgIHN0cmVhbSA9IFZFQ19sYXN0ICh1aV9maWxlcCwg ZGF0YS0+c3RyZWFtcyk7CisrICBmcHV0c19maWx0ZXJlZCAoc3RyaW5nLCBzdHJlYW0pOworIH0K KyAKKyBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfUFJJTlRGICgzLCAwKQorQEAgLTI2Miw4ICsyNzEs MTMgQEAKKyAKKyAgIGlmIChkYXRhLT5zdXBwcmVzc19vdXRwdXQpCisgICAgIHJldHVybjsKKysK KyAgIGlmICh1aV9vdXRfZ2V0X3ZlcmJsdmwgKHVpb3V0KSA+PSB2ZXJib3NpdHkpCistICAgIHZm cHJpbnRmX3VuZmlsdGVyZWQgKGRhdGEtPnN0cmVhbSwgZm9ybWF0LCBhcmdzKTsKKysgICAgewor KyAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0gPSBWRUNfbGFzdCAodWlfZmlsZXAsIGRhdGEt PnN0cmVhbXMpOworKworKyAgICAgIHZmcHJpbnRmX3VuZmlsdGVyZWQgKHN0cmVhbSwgZm9ybWF0 LCBhcmdzKTsKKysgICAgfQorIH0KKyAKKyBzdGF0aWMgdm9pZAorQEAgLTI4MCwyNSArMjk0LDI0 IEBACisgY2xpX2ZsdXNoIChzdHJ1Y3QgdWlfb3V0ICp1aW91dCkKKyB7CisgICBjbGlfb3V0X2Rh dGEgKmRhdGEgPSB1aV9vdXRfZGF0YSAodWlvdXQpOworKyAgc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSA9IFZFQ19sYXN0ICh1aV9maWxlcCwgZGF0YS0+c3RyZWFtcyk7CisgCistICBnZGJfZmx1c2gg KGRhdGEtPnN0cmVhbSk7CisrICBnZGJfZmx1c2ggKHN0cmVhbSk7CisgfQorIAorKy8qIE9VVFNU UkVBTSBhcyBub24tTlVMTCB3aWxsIHB1c2ggT1VUU1RSRUFNIG9uIHRoZSBzdGFjayBvZiBvdXRw dXQgc3RyZWFtcworKyAgIGFuZCBtYWtlIGl0IHRoZXJlZm9yZSBhY3RpdmUuICBPVVRTVFJFQU0g YXMgTlVMTCB3aWxsIHBvcCB0aGUgbGFzdCBwdXNoZWQKKysgICBvdXRwdXQgc3RyZWFtOyBpdCBp cyBhbiBpbnRlcm5hbCBlcnJvciBpZiBpdCBkb2VzIG5vdCBleGlzdC4gICovCisrCisgc3RhdGlj IGludAorIGNsaV9yZWRpcmVjdCAoc3RydWN0IHVpX291dCAqdWlvdXQsIHN0cnVjdCB1aV9maWxl ICpvdXRzdHJlYW0pCisgeworICAgY2xpX291dF9kYXRhICpkYXRhID0gdWlfb3V0X2RhdGEgKHVp b3V0KTsKKyAKKyAgIGlmIChvdXRzdHJlYW0gIT0gTlVMTCkKKy0gICAgeworLSAgICAgIGRhdGEt Pm9yaWdpbmFsX3N0cmVhbSA9IGRhdGEtPnN0cmVhbTsKKy0gICAgICBkYXRhLT5zdHJlYW0gPSBv dXRzdHJlYW07CistICAgIH0KKy0gIGVsc2UgaWYgKGRhdGEtPm9yaWdpbmFsX3N0cmVhbSAhPSBO VUxMKQorLSAgICB7CistICAgICAgZGF0YS0+c3RyZWFtID0gZGF0YS0+b3JpZ2luYWxfc3RyZWFt OworLSAgICAgIGRhdGEtPm9yaWdpbmFsX3N0cmVhbSA9IE5VTEw7CistICAgIH0KKysgICAgVkVD X3NhZmVfcHVzaCAodWlfZmlsZXAsIGRhdGEtPnN0cmVhbXMsIG91dHN0cmVhbSk7CisrICBlbHNl CisrICAgIFZFQ19wb3AgKHVpX2ZpbGVwLCBkYXRhLT5zdHJlYW1zKTsKKyAKKyAgIHJldHVybiAw OworIH0KK0BAIC0zMTUsMTAgKzMyOCwxMSBAQAorIAkgICAgICAgY29uc3QgY2hhciAqZm9ybWF0 LC4uLikKKyB7CisgICBjbGlfb3V0X2RhdGEgKmRhdGEgPSB1aV9vdXRfZGF0YSAodWlvdXQpOwor KyAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSA9IFZFQ19sYXN0ICh1aV9maWxlcCwgZGF0YS0+c3Ry ZWFtcyk7CisgICB2YV9saXN0IGFyZ3M7CisgCisgICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsK Ky0gIHZmcHJpbnRmX2ZpbHRlcmVkIChkYXRhLT5zdHJlYW0sIGZvcm1hdCwgYXJncyk7CisrICB2 ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCBmb3JtYXQsIGFyZ3MpOworIAorICAgdmFfZW5kIChh cmdzKTsKKyB9CitAQCAtMzI5LDggKzM0Myw5IEBACisgZmllbGRfc2VwYXJhdG9yICh2b2lkKQor IHsKKyAgIGNsaV9vdXRfZGF0YSAqZGF0YSA9IHVpX291dF9kYXRhICh1aW91dCk7CisrICBzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtID0gVkVDX2xhc3QgKHVpX2ZpbGVwLCBkYXRhLT5zdHJlYW1zKTsK KyAKKy0gIGZwdXRjX2ZpbHRlcmVkICgnICcsIGRhdGEtPnN0cmVhbSk7CisrICBmcHV0Y19maWx0 ZXJlZCAoJyAnLCBzdHJlYW0pOworIH0KKyAKKyAvKiBUaGlzIGlzIHRoZSBDTEkgdWktb3V0IGlt cGxlbWVudGF0aW9uIGZ1bmN0aW9ucyB2ZWN0b3IgKi8KK0BAIC0zNjQsOCArMzc5LDExIEBACisg dm9pZAorIGNsaV9vdXRfZGF0YV9jdG9yIChjbGlfb3V0X2RhdGEgKnNlbGYsIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0pCisgeworLSAgc2VsZi0+c3RyZWFtID0gc3RyZWFtOworLSAgc2VsZi0+b3Jp Z2luYWxfc3RyZWFtID0gTlVMTDsKKysgIGdkYl9hc3NlcnQgKHN0cmVhbSAhPSBOVUxMKTsKKysK KysgIHNlbGYtPnN0cmVhbXMgPSBOVUxMOworKyAgVkVDX3NhZmVfcHVzaCAodWlfZmlsZXAsIHNl bGYtPnN0cmVhbXMsIHN0cmVhbSk7CisrCisgICBzZWxmLT5zdXBwcmVzc19vdXRwdXQgPSAwOwor IH0KKyAKK0BAIC0zODUsOCArNDAzLDEwIEBACisgY2xpX291dF9zZXRfc3RyZWFtIChzdHJ1Y3Qg dWlfb3V0ICp1aW91dCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKKyB7CisgICBjbGlfb3V0X2Rh dGEgKmRhdGEgPSB1aV9vdXRfZGF0YSAodWlvdXQpOworLSAgc3RydWN0IHVpX2ZpbGUgKm9sZCA9 IGRhdGEtPnN0cmVhbTsKKysgIHN0cnVjdCB1aV9maWxlICpvbGQ7CisrICAKKysgIG9sZCA9IFZF Q19wb3AgKHVpX2ZpbGVwLCBkYXRhLT5zdHJlYW1zKTsKKysgIFZFQ19xdWlja19wdXNoICh1aV9m aWxlcCwgZGF0YS0+c3RyZWFtcywgc3RyZWFtKTsKKyAKKy0gIGRhdGEtPnN0cmVhbSA9IHN0cmVh bTsKKyAgIHJldHVybiBvbGQ7CisgfQorLS0tIHNyYy9nZGIvY2xpLW91dC5oCTIwMTAvMDQvMTgg MDA6MTE6NTUJMS4xMQorKysrIHNyYy9nZGIvY2xpLW91dC5oCTIwMTAvMDkvMDMgMTU6NDI6MDIJ MS4xMgorQEAgLTIyLDE0ICsyMiwxOSBAQAorICNkZWZpbmUgQ0xJX09VVF9ICisgCisgI2luY2x1 ZGUgInVpLW91dC5oIgorKyNpbmNsdWRlICJ2ZWMuaCIKKysKKysvKiBVc2VkIGZvciBjbGlfdWlf b3V0X2RhdGEtPnN0cmVhbXMuICAqLworKworK3R5cGVkZWYgc3RydWN0IHVpX2ZpbGUgKnVpX2Zp bGVwOworK0RFRl9WRUNfUCAodWlfZmlsZXApOworIAorIC8qIFRoZXNlIGFyZSBleHBvcnRlZCBz byB0aGF0IHRoZXkgY2FuIGJlIGV4dGVuZGVkIGJ5IG90aGVyIGB1aV9vdXQnCisgICAgaW1wbGVt ZW50YXRpb25zLCBsaWtlIFRVSSdzLiAgKi8KKyAKKyBzdHJ1Y3QgY2xpX3VpX291dF9kYXRhCisg ICB7CistICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW07CistICAgIHN0cnVjdCB1aV9maWxlICpv cmlnaW5hbF9zdHJlYW07CisrICAgIFZFQyAodWlfZmlsZXApICpzdHJlYW1zOworICAgICBpbnQg c3VwcHJlc3Nfb3V0cHV0OworICAgfTsKKyAKKy0tLSBzcmMvZ2RiL3B5dGhvbi9weS1icmVha3Bv aW50LmMJMjAxMC8wNy8wMSAxMDozNjoxMgkxLjQKKysrKyBzcmMvZ2RiL3B5dGhvbi9weS1icmVh a3BvaW50LmMJMjAxMC8wOS8wMyAxNTo0MjowMwkxLjUKK0BAIC00NzQsMTIgKzQ3NCwxMiBAQAor ICAgc3RyaW5nX2ZpbGUgPSBtZW1fZmlsZW9wZW4gKCk7CisgICBjaGFpbiA9IG1ha2VfY2xlYW51 cF91aV9maWxlX2RlbGV0ZSAoc3RyaW5nX2ZpbGUpOworIAorKyAgdWlfb3V0X3JlZGlyZWN0ICh1 aW91dCwgc3RyaW5nX2ZpbGUpOworICAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FM TCkKKyAgICAgeworLSAgICAgIHVpX291dF9yZWRpcmVjdCAodWlvdXQsIHN0cmluZ19maWxlKTsK KyAgICAgICBwcmludF9jb21tYW5kX2xpbmVzICh1aW91dCwgYnJlYWtwb2ludF9jb21tYW5kcyAo YnApLCAwKTsKKy0gICAgICB1aV9vdXRfcmVkaXJlY3QgKHVpb3V0LCBOVUxMKTsKKyAgICAgfQor KyAgdWlfb3V0X3JlZGlyZWN0ICh1aW91dCwgTlVMTCk7CisgICBjbWRzdHIgPSB1aV9maWxlX3hz dHJkdXAgKHN0cmluZ19maWxlLCAmbGVuZ3RoKTsKKyAgIEdEQl9QWV9IQU5ETEVfRVhDRVBUSU9O IChleGNlcHQpOworIAorIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEwLzA5LzAy IDE1OjE5OjU2CTEuMjQzNQorIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEwLzA5 LzAzIDE1OjQyOjA0CTEuMjQzNgorIyMgLTEsMyArMSw3IEBACisrMjAxMC0wOS0wMyAgSmFuIEty YXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwkqIGdkYi5iYXNlL3Vp LXJlZGlyZWN0LmV4cDogTmV3IGZpbGUuCisrCisgMjAxMC0wOS0wMiAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorICAgICAgICAgICAgIEpvZWwgQnJvYmVja2Vy ICA8YnJvYmVja2VyQGFkYWNvcmUuY29tPgorIAorLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3VpLXJlZGlyZWN0LmV4cAorKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3VpLXJl ZGlyZWN0LmV4cAkyMDEwLTA5LTExIDE4OjQyOjQwLjA0MDkxMDAwMCArMDAwMAorQEAgLTAsMCAr MSw0MSBAQAorKyMgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytpZiB7IFtwcmVwYXJl X2Zvcl90ZXN0aW5nIHVpLXJlZGlyZWN0LmV4cCB1aS1yZWRpcmVjdCBzdGFydC5jXSB9IHsKKysg ICAgcmV0dXJuIC0xCisrfQorKworK2dkYl9icmVha3BvaW50IG1haW4KKysKKytzZXQgdGVzdCAi Y29tbWFuZHMiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKyAgICAtcmUgIkVu ZCB3aXRoIGEgbGluZSBzYXlpbmcganVzdCBcImVuZFwiXFwuXHJcbj4kIiB7CisrCXBhc3MgJHRl c3QKKysgICAgfQorK30KKysKKytzZXQgdGVzdCAicHJpbnQgMSIKKytnZGJfdGVzdF9tdWx0aXBs ZSAkdGVzdCAkdGVzdCB7CisrICAgIC1yZSAiXHJcbj4kIiB7CisrCXBhc3MgJHRlc3QKKysgICAg fQorK30KKytnZGJfdGVzdF9ub19vdXRwdXQgImVuZCIKKysKKytnZGJfdGVzdF9ub19vdXRwdXQg InNldCBsb2dnaW5nIGZpbGUgL2Rldi9udWxsIgorK2dkYl90ZXN0ICJzZXQgbG9nZ2luZyBvbiIg IkNvcHlpbmcgb3V0cHV0IHRvIC9kZXYvbnVsbFxcLiIKKytnZGJfdGVzdCAic2F2ZSBicmVha3Bv aW50cyAvZGV2L251bGwiICJTYXZlZCB0byBmaWxlICcvZGV2L251bGwnXFwuIgorK2dkYl90ZXN0 ICJzZXQgbG9nZ2luZyBvZmYiICJEb25lIGxvZ2dpbmcgdG8gL2Rldi9udWxsXFwuIgorK2dkYl90 ZXN0ICJoZWxwIiAiTGlzdCBvZiBjbGFzc2VzIG9mIGNvbW1hbmRzOi4qIgorCisKKworaHR0cHM6 Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02Mjc1MDYKK1JlOiBbcGF0Y2hd IEZpeCB1aW91dCBmb3IgZXhlY3V0ZV9jb21tYW5kX3RvX3N0cmluZworaHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDkvbXNnMDAyMzUuaHRtbAoraHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wOS9tc2cwMDA4MC5odG1sCisKKyMjIyBzcmMvZ2Ri L0NoYW5nZUxvZwkyMDEwLzA5LzEwIDE2OjE3OjExCTEuMTIxNzAKKyMjIyBzcmMvZ2RiL0NoYW5n ZUxvZwkyMDEwLzA5LzExIDE2OjAwOjIwCTEuMTIxNzEKKyMjIC0xLDMgKzEsMjEgQEAKKysyMDEw LTA5LTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCSAg ICBQYXVsIEJvbGxlICA8cGVib2xsZUB0aXNjYWxpLm5sPgorKworKwlSZWRpcmVjdCBhbHNvIHVp b3V0IGFuZCBzdGR0YXJneyxlcnJ9IGluIGV4ZWN1dGVfY29tbWFuZF90b19zdHJpbmcuCisrCSog Y2xpLWxvZ2dpbmcuYyAoc3RydWN0IHNhdmVkX291dHB1dF9maWxlcykgPHRhcmdlcnI+OiBOZXcu CisrCShzZXRfbG9nZ2luZ19yZWRpcmVjdCwgcG9wX291dHB1dF9maWxlcywgaGFuZGxlX3JlZGly ZWN0aW9ucyk6CisrCVJlZGlyZWN0IGFsc28gZ2RiX3N0ZHRhcmdlcnIuCisrCSogZGVmcy5oIChz dHJ1Y3QgdWlfb3V0LCBtYWtlX2NsZWFudXBfdWlfb3V0X3JlZGlyZWN0X3BvcCk6IE5ldworKwlk ZWNsYXJhdGlvbnMuCisrCSogZXZlbnQtdG9wLmMgKGdkYl9zZXR1cF9yZWFkbGluZSwgZ2RiX2Rp c2FibGVfcmVhZGxpbmUpOiBSZWRpcmVjdAorKwlhbHNvIGdkYl9zdGR0YXJnZXJyLgorKwkqIHRv cC5jIChleGVjdXRlX2NvbW1hbmRfdG9fc3RyaW5nKTogTW92ZSBtYWtlX2NsZWFudXBfdWlfZmls ZV9kZWxldGUKKysJdG8gdGhlIHRvcC4gIFJlZGlyZWN0IGFsc28gZ2RiX3N0ZGxvZywgZ2RiX3N0 ZHRhcmcgYW5kIGdkYl9zdGR0YXJnZXJyLgorKwlVc2UgdWlfb3V0X3JlZGlyZWN0LCByZWdpc3Rl ciBtYWtlX2NsZWFudXBfdWlfb3V0X3JlZGlyZWN0X3BvcC4KKysJKiB0dWkvdHVpLWlvLmMgKHR1 aV9zZXR1cF9pbyk6IFJlZGlyZWN0IGFsc28gZ2RiX3N0ZHRhcmdlcnIuCisrCSogdXRpbHMuYyAo ZG9fdWlfb3V0X3JlZGlyZWN0X3BvcCwgbWFrZV9jbGVhbnVwX3VpX291dF9yZWRpcmVjdF9wb3Ap OgorKwlOZXcgZnVuY3Rpb25zLgorKworCisjIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9n CTIwMTAvMDkvMTAgMjA6Mjk6MjUJMS4yNDQ0CisjIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdl TG9nCTIwMTAvMDkvMTEgMTY6MDA6MjYJMS4yNDQ1CisjIyAtMSwzICsxLDggQEAKKysyMDEwLTA5 LTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCSog Z2RiLnB5dGhvbi9weXRob24uZXhwIChzZXQgaGVpZ2h0IDAsIGNvbGxlY3QgaGVscCBmcm9tIHVp b3V0KQorKwkodmVyaWZ5IGhlbHAgdG8gdWlvdXQpOiBOZXcgdGVzdHMuCisrCisKK1sgZ2RiX3N0 ZHRhcmdlcnIgaGFuZGxpbmcgZHJvcHBlZC4gIF0KKworLS0tIHNyYy9nZGIvZGVmcy5oCTIwMTAv MDgvMzEgMTg6MDg6NDMJMS4yNzgKKysrKyBzcmMvZ2RiL2RlZnMuaAkyMDEwLzA5LzExIDE2OjAw OjI1CTEuMjc5CitAQCAtMzM3LDYgKzMzNywxMCBAQAorIHN0cnVjdCB1aV9maWxlOworIGV4dGVy biBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3VpX2ZpbGVfZGVsZXRlIChzdHJ1Y3QgdWlf ZmlsZSAqKTsKKyAKKytzdHJ1Y3QgdWlfb3V0OworK2V4dGVybiBzdHJ1Y3QgY2xlYW51cCAqCisr ICBtYWtlX2NsZWFudXBfdWlfb3V0X3JlZGlyZWN0X3BvcCAoc3RydWN0IHVpX291dCAqdWlvdXQp OworKworIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbzsKKyBleHRlcm4gc3RydWN0IGNsZWFudXAg KihtYWtlX2NsZWFudXBfZnJlZV9zZWN0aW9uX2FkZHJfaW5mbyAKKyAgICAgICAgICAgICAgICAg ICAgICAgICAoc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICopKTsKKy0tLSBzcmMvZ2RiL3RvcC5j CTIwMTAvMDgvMDcgMTU6MDA6MzcJMS4xODMKKysrKyBzcmMvZ2RiL3RvcC5jCTIwMTAvMDkvMTEg MTY6MDA6MjUJMS4xODQKK0BAIC00NzUsMTIgKzQ3NSwyMyBAQAorIAorICAgc3RyX2ZpbGUgPSBt ZW1fZmlsZW9wZW4gKCk7CisgCisrICBtYWtlX2NsZWFudXBfdWlfZmlsZV9kZWxldGUgKHN0cl9m aWxlKTsKKyAgIG1ha2VfY2xlYW51cF9yZXN0b3JlX3VpX2ZpbGUgKCZnZGJfc3Rkb3V0KTsKKyAg IG1ha2VfY2xlYW51cF9yZXN0b3JlX3VpX2ZpbGUgKCZnZGJfc3RkZXJyKTsKKy0gIG1ha2VfY2xl YW51cF91aV9maWxlX2RlbGV0ZSAoc3RyX2ZpbGUpOworKyAgbWFrZV9jbGVhbnVwX3Jlc3RvcmVf dWlfZmlsZSAoJmdkYl9zdGRsb2cpOworKyAgbWFrZV9jbGVhbnVwX3Jlc3RvcmVfdWlfZmlsZSAo JmdkYl9zdGR0YXJnKTsKKysgIG1ha2VfY2xlYW51cF9yZXN0b3JlX3VpX2ZpbGUgKCZnZGJfc3Rk dGFyZ2Vycik7CisrCisrICBpZiAodWlfb3V0X3JlZGlyZWN0ICh1aW91dCwgc3RyX2ZpbGUpIDwg MCkKKysgICAgd2FybmluZyAoXygiQ3VycmVudCBvdXRwdXQgcHJvdG9jb2wgZG9lcyBub3Qgc3Vw cG9ydCByZWRpcmVjdGlvbiIpKTsKKysgIGVsc2UKKysgICAgbWFrZV9jbGVhbnVwX3VpX291dF9y ZWRpcmVjdF9wb3AgKHVpb3V0KTsKKyAKKyAgIGdkYl9zdGRvdXQgPSBzdHJfZmlsZTsKKyAgIGdk Yl9zdGRlcnIgPSBzdHJfZmlsZTsKKysgIGdkYl9zdGRsb2cgPSBzdHJfZmlsZTsKKysgIGdkYl9z dGR0YXJnID0gc3RyX2ZpbGU7CisrICBnZGJfc3RkdGFyZ2VyciA9IHN0cl9maWxlOworIAorICAg ZXhlY3V0ZV9jb21tYW5kIChwLCBmcm9tX3R0eSk7CisgCistLS0gc3JjL2dkYi91dGlscy5jCTIw MTAvMDgvMDcgMTU6MDA6MzcJMS4yMzkKKysrKyBzcmMvZ2RiL3V0aWxzLmMJMjAxMC8wOS8xMSAx NjowMDoyNQkxLjI0MAorQEAgLTMxMSw2ICszMTEsMjYgQEAKKyAgIHJldHVybiBtYWtlX215X2Ns ZWFudXAgKCZjbGVhbnVwX2NoYWluLCBkb191aV9maWxlX2RlbGV0ZSwgYXJnKTsKKyB9CisgCisr LyogSGVscGVyIGZ1bmN0aW9uIGZvciBtYWtlX2NsZWFudXBfdWlfb3V0X3JlZGlyZWN0X3BvcC4g ICovCisrCisrc3RhdGljIHZvaWQKKytkb191aV9vdXRfcmVkaXJlY3RfcG9wICh2b2lkICphcmcp CisreworKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBhcmc7CisrCisrICBpZiAodWlfb3V0X3Jl ZGlyZWN0ICh1aW91dCwgTlVMTCkgPCAwKQorKyAgICB3YXJuaW5nIChfKCJDYW5ub3QgcmVzdG9y ZSByZWRpcmVjdGlvbiBvZiB0aGUgY3VycmVudCBvdXRwdXQgcHJvdG9jb2wiKSk7CisrfQorKwor Ky8qIFJldHVybiBhIG5ldyBjbGVhbnVwIHRoYXQgcG9wcyB0aGUgbGFzdCByZWRpcmVjdGlvbiBi eSB1aV9vdXRfcmVkaXJlY3QKKysgICB3aXRoIE5VTEwgcGFyYW1ldGVyLiAgKi8KKysKKytzdHJ1 Y3QgY2xlYW51cCAqCisrbWFrZV9jbGVhbnVwX3VpX291dF9yZWRpcmVjdF9wb3AgKHN0cnVjdCB1 aV9vdXQgKnVpb3V0KQorK3sKKysgIHJldHVybiBtYWtlX215X2NsZWFudXAgKCZjbGVhbnVwX2No YWluLCBkb191aV9vdXRfcmVkaXJlY3RfcG9wLCB1aW91dCk7CisrfQorKworIHN0YXRpYyB2b2lk CisgZG9fZnJlZV9zZWN0aW9uX2FkZHJfaW5mbyAodm9pZCAqYXJnKQorIHsKKy0tLSBnZGItNy4y L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weXRob24uZXhwLW9yaWcJMjAxMC0wOC0wOSAyMToy MzowMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weXRob24uZXhwCTIwMTAtMDktMTEgMjA6NDk6MjIuMDAwMDAwMDAwICswMjAwCitAQCAtMTEw LDMgKzExMCw5IEBAIGdkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJpbnQgXCJcXG5cIiAKKyAg ICAgfQorIH0KKyBnZGJfdGVzdCAicSIgIlF1aXQiICJ2ZXJpZnkgcGFnaW5hdGlvbiBhZnRlcndh cmRzOiBxIgorKworK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGhlaWdodCAwIgorKworK2dkYl90 ZXN0X25vX291dHB1dCAicHl0aG9uIGEgPSBnZGIuZXhlY3V0ZSgnaGVscCcsIHRvX3N0cmluZz1U cnVlKSIgImNvbGxlY3QgaGVscCBmcm9tIHVpb3V0IgorKworK2dkYl90ZXN0ICJweXRob24gcHJp bnQgYSIgIi4qYWxpYXNlcyAtLSBBbGlhc2VzIG9mIG90aGVyIGNvbW1hbmRzLioiICJ2ZXJpZnkg aGVscCB0byB1aW91dCIKCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDM2 MDRjMzIuLmE3MDkxMjAgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0z LDYgKzMsOCBAQAogIyAtLXdpdGggZGVidWc6IEJ1aWxkIHdpdGhvdXQgb3B0aW1pemF0aW9ucyBh bmQgd2l0aG91dCBzcGxpdHRpbmcgdGhlIGRlYnVnaW5mby4KICMgLS13aXRoIHVwc3RyZWFtOiBO byBGZWRvcmEgc3BlY2lmaWMgcGF0Y2hlcyBnZXQgYXBwbGllZC4KICMgLS13aXRob3V0IHB5dGhv bjogTm8gcHl0aG9uIHN1cHBvcnQuCisjIC0td2l0aCBwcm9maWxlOiBnY2MgLWZwcm9maWxlLWdl bmVyYXRlIC8gLWZwcm9maWxlLXVzZTogQmVmb3JlIGJldHRlcgorIyAgICAgICAgICAgICAgICAg d29ya2xvYWQgZ2V0cyBydW4gaXQgZGVjcmVhc2VzIHRoZSBnZW5lcmFsIHBlcmZvcm1hbmNlIG5v dy4KIAogIyBSSEVMLTUgd2FzIHRoZSBsYXN0IG5vdCBwcm92aWRpbmcgYC9ldGMvcnBtL21hY3Jv cy5kaXN0Jy4KICVpZiAwJXshP2Rpc3Q6MX0KQEAgLTEyLDE3ICsxNCw2IEBACiAlZW5kaWYKICMg UkhFTC01IEJyZXcgZG9lcyBub3Qgc2V0ICV7ZWw1fS4KICVpZiAiJXtkaXN0fSIgPT0gIi5lbDUi Ci0jIFJIRUwtNSBwcGMqIHB5dGhvbiAuc28gZmlsZXMgYXJlIHNoaXBwZWQgb25seSBhcyBwcGMg YnV0IGdkYiBpcyBwcGM2NCB0aGVyZS4KLSMgQnJldyBidWlsZHMgaXQgZmluZSBhcyBpdHMgcHBj NjQgYnVpbGRyb290IGhhcyBmdWxsIHBwYzY0IHBhY2thZ2Ugc2V0LgotIyBNYWtlIHRoaXMgY29u ZGl0aW9uYWwgc28gdGhhdCBCcmV3LWJ1aWx0IEdEQiBoYXMgbm8gcHl0aG9uIG9uIGFueSBhcmNo IGJ1dAotIyBHREIgcmVidWlsdCBvbiBuYXRpdmUgbm9uLXBwYzY0IGhvc3QgZG9lcyBoYXZlIGl0 LgotJWlmIDAleyE/ZWw1OjF9Ci0lZGVmaW5lIF93aXRob3V0X3B5dGhvbiAxCi0lZWxzZQotJWlm YXJjaCBwcGM2NAotJWRlZmluZSBfd2l0aG91dF9weXRob24gMQotJWVuZGlmCi0lZW5kaWYKICVk ZWZpbmUgZWw1IDEKICVlbmRpZgogCkBAIC0zMiwxMSArMjMsMTEgQEAgTmFtZTogZ2RiJXs/X3dp dGhfZGVidWc6LWRlYnVnfQogIyBTZXQgdmVyc2lvbiB0byBjb250ZW50cyBvZiBnZGIvdmVyc2lv bi5pbi4KICMgTk9URTogdGhlIEZTRiBnZGIgdmVyc2lvbnMgYXJlIG51bWJlcmVkIE4uTSBmb3Ig b2ZmaWNpYWwgcmVsZWFzZXMsIGxpa2UgNi4zCiAjIGFuZCwgc2luY2UgSmFudWFyeSAyMDA1LCBY LlkuWi5kYXRlIGZvciBkYWlseSBzbmFwc2hvdHMsIGxpa2UgNi4zLjUwLjIwMDUwMTEyICMgKGRh aWx5IHNuYXBzaG90IGZyb20gbWFpbGluZSksIG9yIDYuMy4wLjIwMDQwMTEyIChoZWFkIG9mIHRo ZSByZWxlYXNlIGJyYW5jaCkuCi1WZXJzaW9uOiA3LjEuOTAuMjAxMDA3MjEKK1ZlcnNpb246IDcu MgogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVt YmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUn IHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGlu Zy4KLVJlbGVhc2U6IDYlez9fd2l0aF91cHN0cmVhbToudXBzdHJlYW19JXtkaXN0fQorUmVsZWFz ZTogMjUlez9fd2l0aF91cHN0cmVhbToudXBzdHJlYW19JXtkaXN0fQogCiBMaWNlbnNlOiBHUEx2 MysgYW5kIEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGgg ZXhjZXB0aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYyKyBhbmQgR0ZETCBhbmQgQlNEIGFuZCBQdWJs aWMgRG9tYWluCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC03MiwzNTQgKzYzLDU3 OCBAQCBQcm92aWRlczogcHN0YWNrID0gMS4yLTcuMi4yLjEKICVlbmRpZiAjIDAleyE/X3dpdGhf dXBzdHJlYW06MX0KICVlbmRpZiAjIDAleyE/ZWw1OjF9CiAKKyMgZXUtc3RyaXA6IC1nIHJlY29n bml6ZXMgLmdkYl9pbmRleCBhcyBhIGRlYnVnZ2luZyBzZWN0aW9uLiAoIzYzMTk5NykKK0NvbmZs aWN0czogZWxmdXRpbHMgPCAwLjE0OQorCiAjIEdEQiBwYXRjaGVzIGhhdmUgdGhlIGZvcm1hdCBg Z2RiLTx2ZXJzaW9uPi1iejxyZWQtaGF0LWJ6LSM+LTxkZXNjPi5wYXRjaCcuCiAjIFRoZXkgc2hv dWxkIGJlIGNyZWF0ZWQgdXNpbmcgcGF0Y2ggbGV2ZWwgMTogZGlmZiAtdXAgLi9nZGIgKG9yIGdk Yi02LjMvZ2RiKS4KIAorIz0KKyNwdXNoPVNob3VsZCBiZSBwdXNoZWQgdXBzdHJlYW0uCisjbWF5 YmVwdXNoPVNob3VsZCBiZSBwdXNoZWQgdXBzdHJlYW0gdW5sZXNzIGl0IGdvdCBvYnNvbGV0ZWQg dGhlcmUuCisjZmVkb3JhPVNob3VsZCBzdGF5IGFzIGEgRmVkb3JhIHBhdGNoLgorI2lhNjQ9RHJv cCBhZnRlciBSSEVMLTUgcmViYXNlcyBhbmQgcmVidWlsZHMgYXJlIG5vIGxvbmdlciBtZWFuaW5n ZnVsLgorI2ZlZG9yYXRlc3Q9S2VlcCBpdCBpbiBGZWRvcmEgb25seSBhcyBhIHJlZ3Jlc3Npb24g dGVzdCBzYWZldHkuCisjK3BwYz1TcGVjaWZpYyBmb3IgcHBjMzIvcHBjNjQvcHBjKgorIyt3b3Jr PVJlcXVpcmVzIHNvbWUgbm9udHJpdmlhbCB3b3JrLgorCiAjIENsZWFudXAgYW55IGxlZnRvdmVy IHRlc3RzdWl0ZSBwcm9jZXNzZXMgYXMgaXQgbWF5IHN0dWNrIG1vY2soMSkgYnVpbGRzLgorIz1w dXNoCiBTb3VyY2UyOiBnZGItb3JwaGFucmlwcGVyLmMKIAogIyBNYW4gcGFnZSBmb3IgZ3N0YWNr KDEpLgorIz1wdXNoCiBTb3VyY2UzOiBnZGItZ3N0YWNrLm1hbgogCiAjIFdvcmsgYXJvdW5kIG91 dC1vZi1kYXRlIGRlamFnbnUgdGhhdCBkb2VzIG5vdCBoYXZlIEtGQUlMCisjPWRyb3A6IFRoYXQg ZGVqYWdudSBpcyB0b28gb2xkIHRvIGJlIHN1cHBvcnRlZC4KIFBhdGNoMTogZ2RiLTYuMy1yaC1k dW1teWtmYWlsLTIwMDQxMjAyLnBhdGNoCiAKICMgTWF0Y2ggdGhlIEZlZG9yYSdzIHZlcnNpb24g aW5mby4KKyM9ZmVkb3JhCiBQYXRjaDI6IGdkYi02LjMtcmgtdGVzdHZlcnNpb24tMjAwNDEyMDIu cGF0Y2gKIAogIyBDaGVjayB0aGF0IGxpYnVud2luZCB3b3JrcyAtIG5ldyB0ZXN0IHRoZW4gZml4 CisjPWlhNjQKIFBhdGNoMzogZ2RiLTYuMy1yaC10ZXN0bGlidW53aW5kLTIwMDQxMjAyLnBhdGNo CiAKICMgVXNlIGNvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIG9uIHRoZSBzb2xpYiBicmVha3Bv aW50IGFkZHJlc3M7CiAjIHNpbXBsaWZpZXMgYW5kIG1ha2VzIG1vcmUgY29uc2lzdGVudCB0aGUg bG9naWMuCisjPW1heWJlcHVzaCtwcGM6IFdyaXRlIG5ldyB0ZXN0Y2FzZS4KIFBhdGNoMTA0OiBn ZGItNi4zLXBwY2RvdHNvbGliLTIwMDQxMDIyLnBhdGNoCiAKICMgQmV0dGVyIHBhcnNlIDY0LWJp dCBQUEMgc3lzdGVtIGNhbGwgcHJvbG9ndWVzLgorIz1tYXliZXB1c2grcHBjOiBXcml0ZSBuZXcg dGVzdGNhc2UuCiBQYXRjaDEwNTogZ2RiLTYuMy1wcGM2NHN5c2NhbGwtMjAwNDA2MjIucGF0Y2gK IAogIyBTdG9wIGEgYmFja3RyYWNlIHdoZW4gYSB6ZXJvIFBDIGlzIGVuY291bnRlcmVkLgorIz1t YXliZXB1c2g6IFdyaXRlIG5ldyB0ZXN0Y2FzZS4KIFBhdGNoMTA2OiBnZGItNi4zLWZyYW1lcGN6 ZXJvLTIwMDQwOTI3LnBhdGNoCiAKICMgSW5jbHVkZSB0aGUgcGMncyBzZWN0aW9uIHdoZW4gZG9p bmcgYSBzeW1ib2wgbG9va3VwIHNvIHRoYXQgdGhlCiAjIGNvcnJlY3Qgc3ltYm9sIGlzIGZvdW5k LgorIz1tYXliZXB1c2g6IFdyaXRlIG5ldyB0ZXN0Y2FzZS4KIFBhdGNoMTExOiBnZGItNi4zLXBw YzY0ZGlzcGxheXN5bWJvbC0yMDA0MTEyNC5wYXRjaAogCiAjIEZpeCB1cHN0cmVhbSBgc2V0IHNj aGVkdWxlci1sb2NraW5nIHN0ZXAnIHZzLiB1cHN0cmVhbSBQUEMgYXRvbWljIHNlcXMuCisjPW1h eWJlcHVzaCt3b3JrOiBJdCBpcyBhIGJpdCBkaWZmaWN1bHQgcGF0Y2gsIGEgcGFydCBpcyBwcGMg c3BlY2lmaWMuCiBQYXRjaDExMjogZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLXN3LXdh dGNocG9pbnRzMi5wYXRjaAogIyBNYWtlIHVwc3RyZWFtIGBzZXQgc2NoZWR1bGVyLWxvY2tpbmcg c3RlcCcgYXMgZGVmYXVsdC4KKyM9bWF5YmVwdXNoK3dvcms6IEhvdyBtdWNoIGlzIHNjaGVkdWxl ci1sb2NraW5nIHJlbGV2YW50IGFmdGVyIG5vbi1zdG9wPwogUGF0Y2gyNjA6IGdkYi02LjYtc2No ZWR1bGVyX2xvY2tpbmctc3RlcC1pcy1kZWZhdWx0LnBhdGNoCiAKICMgQWRkIGEgd3JhcHBlciBz Y3JpcHQgdG8gR0RCIHRoYXQgaW1wbGVtZW50cyBwc3RhY2sgdXNpbmcgdGhlCiAjIC0tcmVhZG5l dmVyIG9wdGlvbi4KKyM9cHVzaCt3b3JrOiB3aXRoIGdkYmluZGV4IG1heWJlIC0tcmVhZG5ldmVy IHNob3VsZCBubyBsb25nZXIgYmUgdXNlZC4KIFBhdGNoMTE4OiBnZGItNi4zLWdzdGFjay0yMDA1 MDQxMS5wYXRjaAogCiAjIFZTWVNDQUxMIGFuZCBQSUUKKyM9ZmVkb3JhdGVzdAogUGF0Y2gxMjI6 IGdkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2gKKyM9bWF5YmVwdXNoOiBNYXkgZ2V0IG9i c29sZXRlZCBieSBUb20ncyB1bnJlbG9jYXRlZCBvYmpmaWxlcyBwYXRjaC4KIFBhdGNoMzg5OiBn ZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2gKKyM9cHVzaCt3b3JrOiBCcmVha3BvaW50cyBkaXNh YmxpbmcgbWF0Y2hpbmcgc2hvdWxkIG5vdCBiZSBiYXNlZCBvbiBhZGRyZXNzLgogUGF0Y2gzOTQ6 IGdkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCiAKICMgR2V0IHNlbGZ0 ZXN0IHdvcmtpbmcgd2l0aCBzZXAtZGVidWctaW5mbworIz1tYXliZXB1c2gKIFBhdGNoMTI1OiBn ZGItNi4zLXRlc3Qtc2VsZi0yMDA1MDExMC5wYXRjaAogCiAjIFRlc3Qgc3VwcG9ydCBvZiBtdWx0 aXBsZSBkZXN0cnVjdG9ycyBqdXN0IGxpa2UgbXVsdGlwbGUgY29uc3RydWN0b3JzCisjPWZlZG9y YXRlc3QKIFBhdGNoMTMzOiBnZGItNi4zLXRlc3QtZHRvcmZpeC0yMDA1MDEyMS5wYXRjaAogCiAj IEZpeCB0byBzdXBwb3J0IGV4ZWN1dGFibGUgbW92aW5nCisjPWZlZG9yYXRlc3QKIFBhdGNoMTM2 OiBnZGItNi4zLXRlc3QtbW92ZWRpci0yMDA1MDEyNS5wYXRjaAogCi0jIEZpeCB0byBzdXBwb3J0 IHVud2luZGluZyBzeXNjYWxscyBpbiBpYTY0IGNvcmVmaWxlcwotIyBQYXRjaDEzODogZ2RiLTYu My1pYTY0LWNvcmVmaWxlLWZpeC0yMDA1MDEyNy5wYXRjaAotCiAjIEZpeCBnY29yZSBmb3IgdGhy ZWFkcworIz1pYTY0CiBQYXRjaDE0MDogZ2RiLTYuMy1nY29yZS10aHJlYWQtMjAwNTAyMDQucGF0 Y2gKIAogIyBTdG9wIHdoaWxlIGludGVudGlvbmFsbHkgc3RlcHBpbmcgYW5kIHRoZSB0aHJlYWQg ZXhpdCBpcyBtZXQuCisjPXB1c2gKIFBhdGNoMTQxOiBnZGItNi42LXN0ZXAtdGhyZWFkLWV4aXQu cGF0Y2gKKyM9cHVzaAogUGF0Y2gyNTk6IGdkYi02LjMtc3RlcC10aHJlYWQtZXhpdC0yMDA1MDIx MS10ZXN0LnBhdGNoCiAKICMgUHJldmVudCBnZGIgZnJvbSBiZWluZyBwdXNoZWQgaW50byBiYWNr Z3JvdW5kCisjPW1heWJlcHVzaAogUGF0Y2gxNDI6IGdkYi02LjMtdGVybWluYWwtZml4LTIwMDUw MjE0LnBhdGNoCiAKICMgVGVzdCBzaWJsaW5nIHRocmVhZHMgdG8gc2V0IHRocmVhZGVkIHdhdGNo cG9pbnRzIGZvciB4ODYgYW5kIHg4Ni02NAorIz1mZWRvcmF0ZXN0CiBQYXRjaDE0NTogZ2RiLTYu My10aHJlYWRlZC13YXRjaHBvaW50czItMjAwNTAyMjUucGF0Y2gKIAogIyBGaXggcHJpbnRpbmcg b2YgaW5oZXJpdGVkIG1lbWJlcnMKKyM9bWF5YmVwdXNoCiBQYXRjaDE0ODogZ2RiLTYuMy1pbmhl cml0YW5jZS0yMDA1MDMyNC5wYXRjaAogCiAjIERvIG5vdCBpc3N1ZSB3YXJuaW5nIG1lc3NhZ2Ug YWJvdXQgZmlyc3QgcGFnZSBvZiBzdG9yYWdlIGZvciBpYTY0IGdjb3JlCisjPWlhNjQKIFBhdGNo MTUzOiBnZGItNi4zLWlhNjQtZ2NvcmUtcGFnZTAtMjAwNTA0MjEucGF0Y2gKIAogIyBTZWN1cml0 eSBlcnJhdGEgZm9yIHVudHJ1c3RlZCAuZ2RiaW5pdAorIz1wdXNoCiBQYXRjaDE1NzogZ2RiLTYu My1zZWN1cml0eS1lcnJhdGEtMjAwNTA2MTAucGF0Y2gKIAogIyBJQTY0IHNpZ3RyYW1wIHByZXYg cmVnaXN0ZXIgcGF0Y2gKKyM9aWE2NAogUGF0Y2gxNTg6IGdkYi02LjMtaWE2NC1zaWd0cmFtcC1m cmFtZS0yMDA1MDcwOC5wYXRjaAogCiAjIElBNjQgZ2NvcmUgc3BlZWQtdXAgcGF0Y2gKKyM9aWE2 NAogUGF0Y2gxNjA6IGdkYi02LjMtaWE2NC1nY29yZS1zcGVlZHVwLTIwMDUwNzE0LnBhdGNoCiAK ICMgTm90aWZ5IG9ic2VydmVycyB0aGF0IHRoZSBpbmZlcmlvciBoYXMgYmVlbiBjcmVhdGVkCisj PWZlZG9yYXRlc3QKIFBhdGNoMTYxOiBnZGItNi4zLWluZmVyaW9yLW5vdGlmaWNhdGlvbi0yMDA1 MDcyMS5wYXRjaAogCiAjIEZpeCBpYTY0IGluZm8gZnJhbWUgYnVnCisjPWlhNjQKIFBhdGNoMTYy OiBnZGItNi4zLWlhNjQtaW5mby1mcmFtZS1maXgtMjAwNTA3MjUucGF0Y2gKIAogIyBWZXJpZnkg cHJpbnRpbmcgb2YgaW5oZXJpdGVkIG1lbWJlcnMgdGVzdAorIz1mZWRvcmF0ZXN0CiBQYXRjaDE2 MzogZ2RiLTYuMy1pbmhlcml0YW5jZXRlc3QtMjAwNTA3MjYucGF0Y2gKIAogIyBBZGQgcmVhZG5l dmVyIG9wdGlvbgorIz1wdXNoCiBQYXRjaDE2NDogZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcu cGF0Y2gKIAogIyBGaXggaWE2NCBnZGIgcHJvYmxlbSB3aXRoIHVzZXItc3BlY2lmaWVkIFNJR0lM TCBoYW5kbGluZworIz1pYTY0CiBQYXRjaDE2OTogZ2RiLTYuMy1pYTY0LXNpZ2lsbC0yMDA1MTEx NS5wYXRjaAogCiAjIEFsbG93IG9wdGlvbiB0byBjb250aW51ZSBiYWNrdHJhY2luZyBwYXN0IGEg emVybyBwYyB2YWx1ZQorIz1tYXliZXB1c2gKIFBhdGNoMTcwOiBnZGItNi4zLWJ0LXBhc3QtemVy by0yMDA1MTIwMS5wYXRjaAogCiAjIFVzZSBiaWdnZXIgbnVtYmVycyB0aGFuIGludC4KKyM9cHVz aAogUGF0Y2gxNzY6IGdkYi02LjMtbGFyZ2UtY29yZS0yMDA1MTIwNi5wYXRjaAogCiAjIEZpeCBk ZWJ1Z2luZm8gYWRkcmVzc2VzIHJlc29sdmluZyBmb3IgLS1lbWl0LXJlbG9jcyBMaW51eCBrZXJu ZWxzIChCWiAyMDM2NjEpLgorIz1wdXNoK3dvcms6IFRoZXJlIHdhcyBzb21lIG1haWwgdGhyZWFk IGFib3V0IGl0LCB0aGlzIHBhdGNoIG1heSBiZSBhIGhhY2suCiBQYXRjaDE4ODogZ2RiLTYuNS1i ejIwMzY2MS1lbWl0LXJlbG9jcy5wYXRjaAogCiAjIFNlY3VyaXR5IHBhdGNoOiBhdm9pZCBzdGFj ayBvdmVyZmxvd3MgaW4gZHdhcmYgZXhwcmVzc2lvbiBjb21wdXRhdGlvbi4KICMgQ1ZFLTIwMDYt NDE0NgorIz1wdXNoCiBQYXRjaDE5MDogZ2RiLTYuNS1kd2FyZi1zdGFjay1vdmVyZmxvdy5wYXRj aAogCiAjIFN1cHBvcnQgVExTIHN5bWJvbHMgKCtgZXJybm8nIHN1Z2dlc3Rpb24gaWYgbm8gcHRo cmVhZCBpcyBmb3VuZCkgKEJaIDE4NTMzNykuCisjPXB1c2grd29yazogSXQgc2hvdWxkIGJlIHJl cGxhY2VkIGJ5IGV4aXN0aW5nIHVuY29tbWl0dGVkIFJvbGFuZCdzIGdsaWJjIHBhdGNoIGZvciBU TFMgd2l0aG91dCBsaWJwdGhyZWFkcy4KIFBhdGNoMTk0OiBnZGItNi41LWJ6MTg1MzM3LXJlc29s dmUtdGxzLXdpdGhvdXQtZGVidWdpbmZvLXYyLnBhdGNoCiAKICMgRml4IFRMUyBzeW1ib2xzIHJl c29sdmluZyBmb3Igc2hhcmVkIGxpYnJhcmllcyB3aXRoIGEgcmVsYXRpdmUgcGF0aG5hbWUuCiAj IFRoZSB0ZXN0c3VpdGUgbmVlZHMgYGdkYi02LjUtdGxzLW9mLXNlcGFyYXRlLWRlYnVnaW5mby5w YXRjaCcuCisjPWZlZG9yYXRlc3Qrd29yazogT25lIHNob3VsZCByZWNoZWNrIGlmIGl0IGlzIHJl YWxseSBmaXhlZCB1cHN0cmVhbS4KIFBhdGNoMTk2OiBnZGItNi41LXNoYXJlZGxpYnJhcnktcGF0 aC5wYXRjaAogCiAjIFN1Z2dlc3QgZml4aW5nIHlvdXIgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmb3Ig Z2Ric2VydmVyKDEpIChCWiAxOTA4MTApLgogIyBGSVhNRTogSXQgY291bGQgYmUgYXV0b2RldGVj dGVkLgorIz1wdXNoK3dvcms6IFRoZXJlIGFyZSBtb3JlIHN1Y2ggZXJyb3IgY2FzZXMgdGhhdCBj YW4gaGFwcGVuLgogUGF0Y2gxOTk6IGdkYi02LjUtYnoxOTA4MTAtZ2Ric2VydmVyLWFyY2gtYWR2 aWNlLnBhdGNoCiAKICMgVGVzdGNhc2UgZm9yIGRlYWRsb2NraW5nIG9uIGxhc3QgYWRkcmVzcyBz cGFjZSBieXRlOyBmb3IgY29ycnVwdGVkIGJhY2t0cmFjZXMuCisjPWZlZG9yYXRlc3QKIFBhdGNo MjExOiBnZGItNi41LWxhc3QtYWRkcmVzcy1zcGFjZS1ieXRlLXRlc3QucGF0Y2gKIAogIyBJbXBy b3ZlZCB0ZXN0c3VpdGUgcmVzdWx0cyBieSB0aGUgdGVzdHN1aXRlIHByb3ZpZGVkIGJ5IHRoZSBj b3VydGVzeSBvZiBCRUEuCisjPWZlZG9yYXRlc3Qrd29yazogRm9yIHVwc3RyZWFtIGl0IHNob3Vs ZCBiZSByZXdyaXR0ZW4gYXMgYSBkZWphZ251IHRlc3QsIHRoZSB0ZXN0IG9mIG5vICI/PyIgd2Fz IHVzZWZ1bC4KIFBhdGNoMjA4OiBnZGItNi41LUJFQS10ZXN0c3VpdGUucGF0Y2gKIAogIyBGaXgg cmVhZGxpbmUgc2VnZmF1bHQgb24gZXhjZXNzaXZlbHkgbG9uZyBoYW5kLXR5cGVkIGxpbmVzLgor Iz1kcm9wOiBBZnRlciB1cHN0cmVhbSdzIHJlYWRsaW5lIHJlYmFzZSBpdCB3aWxsIGJlIG9ic29s ZXRlLgogUGF0Y2gyMDk6IGdkYi02LjUtcmVhZGxpbmUtbG9uZy1saW5lLWNyYXNoLnBhdGNoCisj PWZlZG9yYXRlc3QKIFBhdGNoMjEzOiBnZGItNi41LXJlYWRsaW5lLWxvbmctbGluZS1jcmFzaC10 ZXN0LnBhdGNoCiAKICMgRml4IGJvZ3VzIDB4MCB1bndpbmQgb2YgdGhlIHRocmVhZCdzIHRvcG1v c3QgZnVuY3Rpb24gY2xvbmUoMykgKEJaIDIxNjcxMSkuCisjPWZlZG9yYXRlc3QKIFBhdGNoMjE0 OiBnZGItNi41LWJ6MjE2NzExLWNsb25lLWlzLW91dGVybW9zdC5wYXRjaAogCiAjIFRlc3Qgc2lk ZWVmZmVjdHMgb2Ygc2tpcHBpbmcgcHBjIC5zbyBsaWJzIHRyYW1wb2xpbmVzIChCWiAyMTgzNzkp LgorIz1mZWRvcmF0ZXN0CiBQYXRjaDIxNjogZ2RiLTYuNS1iejIxODM3OS1wcGMtc29saWItdHJh bXBvbGluZS10ZXN0LnBhdGNoCiAKICMgRml4IGxvY2t1cCBvbiB0cmFtcG9saW5lIHZzLiBpdHMg ZnVuY3Rpb24gbG9va3VwOyB1bnJlcHJvZHVjaWJsZSAoQlogMjE4Mzc5KS4KKyM9cHVzaAogUGF0 Y2gyMTc6IGdkYi02LjUtYnoyMTgzNzktc29saWItdHJhbXBvbGluZS1sb29rdXAtbG9jay1maXgu cGF0Y2gKIAogIyBGaW5kIHN5bWJvbHMgcHJvcGVybHkgYXQgdGhlaXIgb3JpZ2luYWwgKGluY2x1 ZGVkKSBmaWxlIChCWiAxMDk5MjEpLgorIz1mZWRvcmF0ZXN0CiBQYXRjaDIyNTogZ2RiLTYuNS1i ejEwOTkyMS1EV19BVF9kZWNsX2ZpbGUtdGVzdC5wYXRjaAogCiAjIFVwZGF0ZSBQUEMgdW53aW5k aW5nIHBhdGNoZXMgdG8gdGhlaXIgdXBzdHJlYW0gdmFyaWFudHMgKEJaIDE0MDUzMikuCisjPWZl ZG9yYXRlc3QrcHBjCiBQYXRjaDIyOTogZ2RiLTYuMy1iejE0MDUzMi1wcGMtdW53aW5kaW5nLXRl c3QucGF0Y2gKIAogIyBUZXN0Y2FzZSBmb3IgZXhlYygpIGZyb20gdGhyZWFkZWQgcHJvZ3JhbSAo QlogMjAyNjg5KS4KKyM9ZmVkb3JhdGVzdAogUGF0Y2gyMzE6IGdkYi02LjMtYnoyMDI2ODktZXhl Yy1mcm9tLXB0aHJlYWQtdGVzdC5wYXRjaAogCiAjIEJhY2twb3J0ZWQgZml4dXBzIHBvc3QgdGhl IHNvdXJjZSB0YXJiYWxsLgotI1BhdGNoMjMyOiBnZGItdXBzdHJlYW0ucGF0Y2gKKyM9ZHJvcDog SnVzdCBiYWNrcG9ydHMuCitQYXRjaDIzMjogZ2RiLXVwc3RyZWFtLnBhdGNoCiAKICMgVGVzdGNh c2UgZm9yIFBQQyBQb3dlcjYvREZQIGluc3RydWN0aW9ucyBkaXNhc3NlbWJseSAoQlogMjMwMDAw KS4KKyM9ZmVkb3JhdGVzdCtwcGMKIFBhdGNoMjM0OiBnZGItNi42LWJ6MjMwMDAwLXBvd2VyNi1k aXNhc3NlbWJseS10ZXN0LnBhdGNoCiAKICMgVGVtcG9yYXJ5IHN1cHBvcnQgZm9yIHNoYXJlZCBs aWJyYXJpZXMgPjJHQiBvbiA2NGJpdCBob3N0cy4gKEJaIDIzMTgzMikKKyM9cHVzaCt3b3JrOiBV cHN0cmVhbSBzaG91bGQgaGF2ZSBiYWNrd2FyZCBjb21wYXQuIEFQSTogbGliYy1hbHBoYTogPDIw MDcwMTI3MTA0NTM5LkdBOTQ0NEAuKj4KIFBhdGNoMjM1OiBnZGItNi4zLWJ6MjMxODMyLW9ic3Rh Y2stMmdiLnBhdGNoCiAKICMgRml4IGRlYnVnZ2luZyBHREIgaXRzZWxmIC0gdGhlIGNvbXBpbGVk IGluIHNvdXJjZSBmaWxlcyBwYXRocyAoQlogMjI1NzgzKS4KKyM9cHVzaAogUGF0Y2gyNDE6IGdk Yi02LjYtYnoyMjU3ODMtZ2RiLWRlYnVnaW5mby1wYXRocy5wYXRjaAogCiAjIEFsbG93IHJ1bm5p bmcgYC91c3IvYmluL2djb3JlJyB3aXRoIHByb3ZpZGVkIGJ1dCBpbmFjY2Vzc2libGUgdHR5IChC WiAyMjk1MTcpLgorIz1mZWRvcmF0ZXN0OiBEcm9wIHRoZSBvYnNvbGV0ZWQgZ2RiX2djb3JlLnNo IGNoYW5nZS4KIFBhdGNoMjQ1OiBnZGItNi42LWJ6MjI5NTE3LWdjb3JlLXdpdGhvdXQtdGVybWlu YWwucGF0Y2gKIAogIyBOb3RpZnkgdXNlciBvZiBhIGNoaWxkIGZvcmtlZCBwcm9jZXNzIGJlaW5n IGRldGFjaGVkIChCWiAyMzUxOTcpLgorIz1wdXNoOiBUaGlzIGlzIG1vcmUgYWJvdXQgZGlzY3Vz c2lvbiBpZi93aGF0IHNob3VsZCBiZSBwcmludGVkLgogUGF0Y2gyNDc6IGdkYi02LjYtYnoyMzUx OTctZm9yay1kZXRhY2gtaW5mby5wYXRjaAogCiAjIEF2b2lkIHRvbyBsb25nIHRpbWVvdXRzIG9u IGZhaWxpbmcgY2FzZXMgb2YgImFubm90YTEuZXhwIGFubm90YTMuZXhwIi4KKyM9cHVzaAogUGF0 Y2gyNTQ6IGdkYi02LjYtdGVzdHN1aXRlLXRpbWVvdXRzLnBhdGNoCiAKICMgU3VwcG9ydCBmb3Ig c3RlcHBpbmcgb3ZlciBQUEMgYXRvbWljIGluc3RydWN0aW9uIHNlcXVlbmNlcyAoQlogMjM3NTcy KS4KKyM9ZmVkb3JhdGVzdAogUGF0Y2gyNTg6IGdkYi02LjYtYnoyMzc1NzItcHBjLWF0b21pYy1z ZXF1ZW5jZS10ZXN0LnBhdGNoCiAKICMgTGluayB3aXRoIGxpYnJlYWRsaW5lIHByb3ZpZGVkIGJ5 IHRoZSBvcGVyYXRpbmcgc3lzdGVtLgorIz1wdXNoCiBQYXRjaDI2MTogZ2RiLTYuNi1yZWFkbGlu ZS1zeXN0ZW0ucGF0Y2gKIAogIyBUZXN0IGtlcm5lbCBWRFNPIGRlY29kaW5nIHdoaWxlIGF0dGFj aGluZyB0byBhbiBpMzg2IHByb2Nlc3MuCisjPWZlZG9yYXRlc3QKIFBhdGNoMjYzOiBnZGItNi4z LWF0dGFjaC1zZWUtdmRzby10ZXN0LnBhdGNoCiAKICMgRG8gbm90IGhhbmcgb24gZXhpdCBvZiBh IHRocmVhZCBncm91cCBsZWFkZXIgKEJaIDI0NzM1NCkuCisjPXB1c2gKIFBhdGNoMjY1OiBnZGIt Ni42LWJ6MjQ3MzU0LWxlYWRlci1leGl0LWZpeC5wYXRjaAorIz1wdXNoCiBQYXRjaDI2NjogZ2Ri LTYuNi1iejI0NzM1NC1sZWFkZXItZXhpdC10ZXN0LnBhdGNoCiAKICMgVGVzdCBsZWZ0b3ZlciB6 b21iaWUgcHJvY2VzcyAoQlogMjQzODQ1KS4KKyM9ZmVkb3JhdGVzdAogUGF0Y2gyNzE6IGdkYi02 LjUtYnoyNDM4NDUtc3RhbGUtdGVzdGluZy16b21iaWUtdGVzdC5wYXRjaAogCiAjIE5ldyBsb2Nh dGluZyBvZiB0aGUgbWF0Y2hpbmcgYmluYXJpZXMgZnJvbSB0aGUgcHVyZSBjb3JlIGZpbGUgKGJ1 aWxkLWlkKS4KKyM9cHVzaAogUGF0Y2gyNzQ6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gK KyM9cHVzaAogUGF0Y2gzNTM6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCisjPXB1 c2gKIFBhdGNoNDE1OiBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNoCisj IFdvcmthcm91bmQgbGlicnBtIEJaIDY0MzAzMSBkdWUgdG8gaXRzIHVuZXhwZWN0ZWQgZXhpdCgp IGNhbGxzIChCWiA2NDI4NzkpLgorIz1wdXNoCitQYXRjaDUxOTogZ2RiLTYuNi1idWlsZGlkLWxv Y2F0ZS1ycG0tbGlicnBtLXdvcmthcm91bmQucGF0Y2gKIAogIyBGaXggZGlzcGxheWluZyBvZiBu dW1lcmljIGNoYXIgYXJyYXlzIGFzIHN0cmluZ3MgKEJaIDIyNDEyOCkuCisjPWZlZG9yYXRlc3Q6 IEJ1dCBpdCBpcyBmYWlsaW5nIGFueXdheSwgb25lIHNob3VsZCBjaGVjayB0aGUgYmVoYXZpb3Ig bW9yZS4KIFBhdGNoMjgyOiBnZGItNi43LWNoYXJzaWduLXRlc3QucGF0Y2gKIAogIyBUZXN0IFBQ QyBoaWRpbmcgb2YgY2FsbC12b2xhdGlsZSBwYXJhbWV0ZXIgcmVnaXN0ZXIuCisjPWZlZG9yYXRl c3QrcHBjCiBQYXRjaDI4NDogZ2RiLTYuNy1wcGMtY2xvYmJlcmVkLXJlZ2lzdGVycy1PMi10ZXN0 LnBhdGNoCiAKICMgVGVzdHN1aXRlIGZpeGVzIGZvciBtb3JlIHN0YWJsZS9jb21wYXJhYmxlIHJl c3VsdHMuCisjPXB1c2gKIFBhdGNoMjg3OiBnZGItNi43LXRlc3RzdWl0ZS1zdGFibGUtcmVzdWx0 cy5wYXRjaAogCiAjIFRlc3QgaWE2NCBtZW1vcnkgbGVha3Mgb2YgdGhlIGNvZGUgdXNpbmcgbGli dW53aW5kLgorIz1mZWRvcmF0ZXN0CiBQYXRjaDI4OTogZ2RiLTYuNS1pYTY0LWxpYnVud2luZC1s ZWFrLXRlc3QucGF0Y2gKIAogIyBUZXN0IGhpZGluZyB1bmV4cGVjdGVkIGJyZWFrcG9pbnRzIG9u IGludGVudGlvbmFsIHN0ZXAgY29tbWFuZHMuCisjPWZlZG9yYXRlc3QKIFBhdGNoMjkwOiBnZGIt Ni41LW1pc3NlZC10cmFwLW9uLXN0ZXAtdGVzdC5wYXRjaAogCiAjIFN1cHBvcnQgRFdfVEFHX2lu dGVyZmFjZV90eXBlIHRoZSBzYW1lIHdheSBhcyBEV19UQUdfY2xhc3NfdHlwZSAoQlogNDI2NjAw KS4KKyM9bWF5YmVwdXNoCiBQYXRjaDI5MzogZ2RiLTYuNy1iejQyNjYwMC1EV19UQUdfaW50ZXJm YWNlX3R5cGUtZml4LnBhdGNoCisjPWZlZG9yYXRlc3QKIFBhdGNoMjk0OiBnZGItNi43LWJ6NDI2 NjAwLURXX1RBR19pbnRlcmZhY2VfdHlwZS10ZXN0LnBhdGNoCiAKICMgVGVzdCBnY29yZSBtZW1v cnkgYW5kIHRpbWUgcmVxdWlyZW1lbnRzIGZvciBsYXJnZSBpbmZlcmlvcnMuCisjPWZlZG9yYXRl c3QKIFBhdGNoMjk2OiBnZGItNi41LWdjb3JlLWJ1ZmZlci1saW1pdC10ZXN0LnBhdGNoCiAKICMg VGVzdCBkZWJ1Z2dpbmcgc3RhdGljYWxseSBsaW5rZWQgdGhyZWFkZWQgaW5mZXJpb3JzIChCWiAy Mzk2NTIpLgogIyAgLSBJdCByZXF1aXJlcyByZWNlbnQgZ2xpYmMgdG8gd29yayBpbiB0aGlzIGNh c2UgcHJvcGVybHkuCisjPWZlZG9yYXRlc3QKIFBhdGNoMjk4OiBnZGItNi42LXRocmVhZHMtc3Rh dGljLXRlc3QucGF0Y2gKIAogIyBGaXggI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4gb24ga2VybmVs LWhlYWRlcnMtMi42LjI1LTAuNDAucmMxLmdpdDIuZmM5Lng4Nl82NC4KKyM9cHVzaAogUGF0Y2gz MDQ6IGdkYi02Ljcta2VybmVsLWhlYWRlcnMtY29tcGF0LnBhdGNoCiAKICMgVGVzdCBHQ09SRSBm b3Igc2htaWQgMCBzaGFyZWQgbWVtb3J5IG1hcHBpbmdzLgorIz1mZWRvcmF0ZXN0OiBCdXQgaXQg aXMgYnJva2VuIGFueXdheSwgc29tZXRpbWVzIHRoZSBjYXNlIGJlaW5nIHRlc3RlZCBpcyBub3Qg cmVwcm9kdWNpYmxlLgogUGF0Y2gzMDk6IGdkYi02LjMtbWFwcGluZy16ZXJvLWlub2RlLXRlc3Qu cGF0Y2gKIAogIyBUZXN0IGEgY3Jhc2ggb24gYGZvY3VzIGNtZCcsIGBmb2N1cyBwcmV2JyBjb21t YW5kcy4KKyM9ZmVkb3JhdGVzdAogUGF0Y2gzMTE6IGdkYi02LjMtZm9jdXMtY21kLXByZXYtdGVz dC5wYXRjaAogCiAjIFRlc3QgdmFyaW91cyBmb3JtcyBvZiB0aHJlYWRzIHRyYWNraW5nIGFjcm9z cyBleGVjKCkgKEJaIDQ0Mjc2NSkuCisjPWZlZG9yYXRlc3QKIFBhdGNoMzE1OiBnZGItNi44LWJ6 NDQyNzY1LXRocmVhZGVkLWV4ZWMtdGVzdC5wYXRjaAogCiAjIFNpbGVuY2UgbWVtY3B5IGNoZWNr IHdoaWNoIHJldHVybnMgZmFsc2UgcG9zaXRpdmUgKHNwYXJjNjQpCisjPXB1c2g6IEJ1dCBpdCBp cyBqdXN0IGEgR0NDIHdvcmthcm91bmQsIGxvb2sgdXAgdGhlIGV4aXN0aW5nIEdDQyBQUiBmb3Ig aXQuCiBQYXRjaDMxNzogZ2RiLTYuOC1zcGFyYzY0LXNpbGVuY2UtbWVtY3B5LWNoZWNrLnBhdGNo CiAKICMgRml4IG1lbW9yeSB0cmFzaGluZyBvbiBiaW5hcmllcyBmcm9tIEdDQyBBZGEgKHdvcmth cm91bmQgR0NDIFBSIDM1OTk4KS4KKyM9cHVzaAogUGF0Y2gzMTg6IGdkYi02LjgtZ2NjMzU5OTgt YWRhLW1lbW9yeS10cmFzaC5wYXRjaAogCiAjIFRlc3QgYSBjcmFzaCBvbiBsaWJyYXJpZXMgbWlz c2luZyB0aGUgLnRleHQgc2VjdGlvbi4KKyM9ZmVkb3JhdGVzdAogUGF0Y2gzMjA6IGdkYi02LjUt c2VjdGlvbi1udW0tZml4dXAtdGVzdC5wYXRjaAogCiAjIEZpeCBjb21wYXRpYmlsaXR5IHdpdGgg cmVjZW50IGdsaWJjIGhlYWRlcnMuCisjPXB1c2gKIFBhdGNoMzI0OiBnZGItNi44LWdsaWJjLWhl YWRlcnMtY29tcGF0LnBhdGNoCiAKICMgQ3JlYXRlIGEgc2luZ2xlIGJpbmFyeSBgZ2RiJyBhdXRv ZGV0ZWN0aW5nIC0tdHVpIGJ5IGl0cyBhcmd2WzBdLgorIz1wdXNoK3dvcms6IElJUkMgVG9tIHRv bGQgYXJndlswXSBzaG91bGQgbm90IGJlIHVzZWQgYnkgR05VIHByb2dyYW1zLCBhbHNvIGRyb3Ag bGliZ2RiLmEuCiBQYXRjaDMyNjogZ2RiLTYuOC10dWktc2luZ2xlYmluYXJ5LnBhdGNoCiAKICMg Rml4IFBSUFNJTkZPIGluIHRoZSBjb3JlIGZpbGVzIGR1bXBlZCBieSBnY29yZSAoQlogMjU0MjI5 KS4KKyM9cHVzaAogUGF0Y2gzMjk6IGdkYi02LjgtYnoyNTQyMjktZ2NvcmUtcHJwc2luZm8ucGF0 Y2gKIAogIyBGaXggcmVnaXN0ZXIgYXNzaWdubWVudHMgd2l0aCBubyBHREIgc3RhY2sgZnJhbWVz IChCWiA0MzYwMzcpLgorIz1wdXNoK3dvcms6IFRoaXMgZml4IGlzIGluY29ycmVjdC4KIFBhdGNo MzMwOiBnZGItNi44LWJ6NDM2MDM3LXJlZy1uby1sb25nZXItYWN0aXZlLnBhdGNoCiAKICMgTWFr ZSB0aGUgR0RCIHF1aXQgcHJvY2Vzc2luZyBub24tYWJvcnRhYmxlIHRvIGNsZWFudXAgZXZlcnl0 aGluZyBwcm9wZXJseS4KKyM9cHVzaDogVXNlZnVsIG9ubHkgYWZ0ZXIgZ2RiLTYuOC1hdHRhY2gt c2lnbmFsbGVkLWRldGFjaC1zdG9wcGVkLnBhdGNoIC4KIFBhdGNoMzMxOiBnZGItNi44LXF1aXQt bmV2ZXItYWJvcnRzLnBhdGNoCiAKICMgU3VwcG9ydCBEV19UQUdfY29uc3RhbnQgZm9yIEZvcnRy YW4gaW4gcmVjZW50IEZlZG9yYS9SSCBHQ0NzLgorIz1wdXNoCiBQYXRjaDMzMjogZ2RiLTYuOC1m b3J0cmFuLXRhZy1jb25zdGFudC5wYXRjaAogCiAjIEZpeCBhdHRhY2hpbmcgdG8gc3RvcHBlZCBw cm9jZXNzZXMgYW5kL29yIHBlbmRpbmcgc2lnbmFscy4KKyM9cHVzaCt3b3JrCiBQYXRjaDMzNzog Z2RiLTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRldGFjaC1zdG9wcGVkLnBhdGNoCiAKICMgVGVzdCB0 aGUgd2F0Y2hwb2ludHMgY29uZGl0aW9uYWxzIHdvcmtzLgorIz1mZWRvcmF0ZXN0CiBQYXRjaDM0 MzogZ2RiLTYuOC13YXRjaHBvaW50LWNvbmRpdGlvbmFscy10ZXN0LnBhdGNoCiAKICMgRml4IHJl c29sdmluZyBvZiB2YXJpYWJsZXMgYXQgbG9jYXRpb25zIGxpc3RzIGluIHByZWxpbmtlZCBsaWJz IChCWiA0NjY5MDEpLgorIz1mZWRvcmF0ZXN0CiBQYXRjaDM0ODogZ2RiLTYuOC1iejQ2NjkwMS1i YWNrdHJhY2UtZnVsbC1wcmVsaW5rZWQucGF0Y2gKIAogIyBUaGUgbWVyZ2VkIGJyYW5jaCBgYXJj aGVyJyBvZjogaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL1Byb2plY3RBcmNoZXIKKyM9 cHVzaAorI2FyY2hlci1qYW5rcmF0b2NodmlsLXZsYQorIz1wdXNoCisjYXJjaGVyLWphbmtyYXRv Y2h2aWwtd2F0Y2hwb2ludDMKKyM9cHVzaAorI2FyY2hlci1qYW5rcmF0b2NodmlsLWlmdW5jCisj PXB1c2gKKyNhcmNoZXItcG11bGRvb24tbmV4dC1vdmVyLXRocm93MgorIz1tYXliZXB1c2gKKyNh cmNoZXItdHJvbWV5LXB5dGhvbgorIz1tYXliZXB1c2gKKyNhcmNoZXItdHJvbWV5LW9wdGlvbmFs LXBzeW10YWIKIFBhdGNoMzQ5OiBnZGItYXJjaGVyLnBhdGNoCisjPW1heWJlcHVzaAogUGF0Y2g0 MjA6IGdkYi1hcmNoZXItYWRhLnBhdGNoCiAKICMgRml4IHBhcnNpbmcgZWxmNjQtaTM4NiBmaWxl cyBmb3Iga2R1bXAgUEFFIHZtY29yZSBkdW1wcyAoQlogNDU3MTg3KS4KICMgLSBUdXJuIG9uIDY0 LWJpdCBCRkQgc3VwcG9ydCwgZ2xvYmFsbHkgZW5hYmxlIEFDX1NZU19MQVJHRUZJTEUuCisjPWZl ZG9yYXRlc3QKIFBhdGNoMzYwOiBnZGItNi44LWJ6NDU3MTg3LWxhcmdlZmlsZS10ZXN0LnBhdGNo CiAKICMgTmV3IHRlc3QgZm9yIHN0ZXAtcmVzdW1lIGJyZWFrcG9pbnQgcGxhY2VkIGluIG11bHRp cGxlIHRocmVhZHMgYXQgb25jZS4KKyM9ZmVkb3JhdGVzdAogUGF0Y2gzODE6IGdkYi1zaW11bHRh bmVvdXMtc3RlcC1yZXN1bWUtYnJlYWtwb2ludC10ZXN0LnBhdGNoCiAKICMgRml4IEdOVS9MaW51 eCBjb3JlIG9wZW46IENhbid0IHJlYWQgcGF0aG5hbWUgZm9yIGxvYWQgbWFwOiBJbnB1dC9vdXRw dXQgZXJyb3IuCisjPXB1c2grd29yazogSXQgc2hvdWxkIGJlIGluIGdsaWJjOiBsaWJjLWFscGhh OiA8MjAwOTEwMDQxNjE3MDYuR0EyNzQ1MEAuKj4KIFBhdGNoMzgyOiBnZGItY29yZS1vcGVuLXZk c28td2FybmluZy5wYXRjaAogCiAjIEZpeCBzeXNjYWxsIHJlc3RhcnRzIGZvciBhbWQ2NC0+aTM4 NiBiaWFyY2guCisjPXB1c2gKIFBhdGNoMzkxOiBnZGIteDg2XzY0LWkzODYtc3lzY2FsbC1yZXN0 YXJ0LnBhdGNoCiAKICMgRml4IHN0ZXBwaW5nIHdpdGggT01QIHBhcmFsbGVsIEZvcnRyYW4gc2Vj dGlvbnMgKEJaIDUzMzE3NikuCisjPXB1c2grd29yazogSXQgcmVxdWlyZXMgc29tZSBiZXR0ZXIg RFdBUkYgYW5ub3RhdGlvbnMuCiBQYXRjaDM5MjogZ2RiLWJ6NTMzMTc2LWZvcnRyYW4tb21wLXN0 ZXAucGF0Y2gKIAogIyBVc2UgZ2ZvcnRyYW40NCB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzdWl0ZSBv biBSSEVMLTUuCisjPWZlZG9yYXRlc3QKIFBhdGNoMzkzOiBnZGItcmhlbDUtZ2NjNDQucGF0Y2gK IAogIyBEaXNhYmxlIHdhcm5pbmcgbWVzc2FnZXMgbmV3IGZvciBnZGItNi44KyBmb3IgUkhFTC01 IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCiAjIFdvcmthcm91bmQgUkhFTC01IGtlcm5lbHMgZm9y IGRldGFjaGluZyBTSUdTVE9QcGVkIHByb2Nlc3NlcyAoQlogNDk4NTk1KS4KKyM9ZmVkb3JhdGVz dAogUGF0Y2gzMzU6IGdkYi1yaGVsNS1jb21wYXQucGF0Y2gKIAogIyBGaXggcmVncmVzc2lvbiBi eSBweXRob24gb24gaWE2NCBkdWUgdG8gc3RhbGUgY3VycmVudCBmcmFtZS4KKyM9cHVzaAogUGF0 Y2gzOTc6IGdkYi1mb2xsb3ctY2hpbGQtc3RhbGUtcGFyZW50LnBhdGNoCiAKICMgV29ya2Fyb3Vu ZCBjY2FjaGUgbWFraW5nIGxpbmVubyBub24temVybyBmb3IgY29tbWFuZC1saW5lIGRlZmluaXRp b25zLgorIz1kcm9wOiBjY2FjaGUgaXMgcmFyZWx5IHVzZWQgYW5kIGl0IGlzIGV2ZW4gZml4ZWQg bm93LgogUGF0Y2g0MDM6IGdkYi1jY2FjaGUtd29ya2Fyb3VuZC5wYXRjaAogCiAjIEltcGxlbWVu dCBgaW5mbyBjb21tb24nIGZvciBGb3J0cmFuLgorIz1wdXNoCiBQYXRjaDQwNDogZ2RiLWZvcnRy YW4tY29tbW9uLXJlZHVjZS5wYXRjaAorIz1wdXNoCiBQYXRjaDQwNTogZ2RiLWZvcnRyYW4tY29t bW9uLnBhdGNoCiAKICMgVGVzdGNhc2UgZm9yICJEbyBub3QgbWFrZSB1cCBsaW5lIGluZm9ybWF0 aW9uIiBmaXggYnkgRGFuaWVsIEphY29ib3dpdHouCisjPWZlZG9yYXRlc3QKIFBhdGNoNDA3OiBn ZGItbGluZW5vLW1ha2V1cC10ZXN0LnBhdGNoCiAKICMgVGVzdCBwb3dlcjcgcHBjIGRpc2Fzc2Vt Ymx5LgorIz1mZWRvcmF0ZXN0K3BwYwogUGF0Y2g0MDg6IGdkYi1wcGMtcG93ZXI3LXRlc3QucGF0 Y2gKIAogIyBSZXZlcnQ6IEFkZCAtV3VudXNlZC1mdW5jdGlvbiB0byBjb21waWxlIGZsYWdzLgor Iz1kcm9wCiBQYXRjaDQxMjogZ2RiLXVudXNlZC1yZXZlcnQucGF0Y2gKIAogIyBGaXggaTM4Nit4 ODZfNjQgcndhdGNoK2F3YXRjaCBiZWZvcmUgcnVuLCByZWdyZXNzaW9uIGFnYWluc3QgNi44IChC WiA1NDE4NjYpLgorIz1wdXNoK3dvcms6IEl0IHNob3VsZCBiZSBmaXhlZCBwcm9wZXJseSBpbnN0 ZWFkLgogUGF0Y2g0MTc6IGdkYi1iejU0MTg2Ni1yd2F0Y2gtYmVmb3JlLXJ1bi5wYXRjaAogCiAj IEZpeCBjcmFzaCBvbiBDKysgdHlwZXMgaW4gc29tZSBkZWJ1ZyBpbmZvIGZpbGVzIChCWiA1NzUy OTIsIEtlaXRoIFNlaXR6KS4KICMgVGVtcG9yYXJpbHkgd29ya2Fyb3VuZCB0aGUgY3Jhc2ggb2Yg QlogNTc1MjkyIGFzIHRoZXJlIHdhcyBub3cgQlogNTg1NDQ1LgogIyBSZS1lbmFibGUgdGhlIEJa IDU3NTI5MiBhbmQgQlogNTg1NDQ1IEMrKyBmaXggdXNpbmcgYW4gdXBkYXRlZCBwYXRjaC4KKyM9 bWF5YmVwdXNoOiBOb3Qgc3VyZSBpZiBhbGwgdGhlIHBhcnRzIGFyZSB1cHN0cmVhbS4KIFBhdGNo NDUxOiBnZGItYno1NzUyOTItZGVsYXllZC1waHlzbmFtZS5wYXRjaAogCiAjIEZpeCBjcmFzaCB3 aGVuIHVzaW5nIEdOVSBJRlVOQyBjYWxsIGZyb20gYnJlYWtwb2ludCBjb25kaXRpb24uCisjPWRy b3A6IEFmdGVyIGFyY2hlci1qYW5rcmF0b2NodmlsLWlmdW5jIGdldHMgaW4gdGhpcyBvbmUgZ2V0 cyBvYnNvbGV0ZWQuCiBQYXRjaDQ1NDogZ2RiLWJ6NTM5NTkwLWdudS1pZnVuYy1maXgtY29uZC5w YXRjaAogCiAjIFdvcmthcm91bmQgbm9uLXN0b3AgbW9yaWJ1bmQgbG9jYXRpb25zIGV4cGxvaXRl ZCBieSBrZXJuZWwgdXRyYWNlIChCWiA1OTA2MjMpLgorIz1wdXNoK3dvcms6IEN1cnJlbnRseSBp dCBpcyBzdGlsbCBub3QgZnVsbHkgc2FmZS4KIFBhdGNoNDU5OiBnZGItbW9yaWJ1bmQtdXRyYWNl LXdvcmthcm91bmQucGF0Y2gKIAogIyBSZW1vdmUgY29yZSBmaWxlIHdoZW4gc3RhcnRpbmcgYSBw cm9jZXNzIChCWiA1OTQ1NjApLgorIz1tYXliZXB1c2gKIFBhdGNoNDYxOiBnZGItYno1OTQ1NjAt Y29yZS12cy1wcm9jZXNzLnBhdGNoCiAKICMgRml4IGZvbGxvdy1leGVjIGZvciBDKysgcHJvZ3Jh bXMgKGJ1Z3JlcG9ydGVkIGJ5IE1hcnRpbiBTdHJhbnNreSkuCisjPWZlZG9yYXRlc3QKIFBhdGNo NDcwOiBnZGItYXJjaGVyLW5leHQtb3Zlci10aHJvdy1jeHgtZXhlYy5wYXRjaAogCiAjIEJhY2tw b3J0IERXQVJGLTQgc3VwcG9ydCAoQlogNjAxODg3LCBUb20gVHJvbWV5KS4KKyM9ZmVkb3JhdGVz dAogUGF0Y2g0NzU6IGdkYi1iejYwMTg4Ny1kd2FyZjQtcmgtdGVzdC5wYXRjaAogCiAjIFByaW50 IDJEIEMrKyB2ZWN0b3JzIGFzIG1hdHJpY2VzIChCWiA1NjI3NjMsIHNvdXJjZXdhcmUxMDY1OSwg Q2hyaXMgTW9sbGVyKS4KKyM9cHVzaCt3b3JrOiBUaGVyZSBhcmUgc29tZSBvdXRzdGFuZGluZyBp c3N1ZXMsIGNoZWNrIHRoZSBtYWlscy4KIFBhdGNoNDg2OiBnZGItYno1NjI3NjMtcHJldHR5LXBy aW50LTJkLXZlY3RvcnMucGF0Y2gKKyM9cHVzaCt3b3JrOiBUaGVyZSBhcmUgc29tZSBvdXRzdGFu ZGluZyBpc3N1ZXMsIGNoZWNrIHRoZSBtYWlscy4KIFBhdGNoNDg3OiBnZGItYno1NjI3NjMtcHJl dHR5LXByaW50LTJkLXZlY3RvcnMtbGlic3RkY3h4LnBhdGNoCiAKICMgRml4IHByZWxpbmtlZCBl eGVjdXRhYmxlcyB3aXRoIHNlcGRlYnVnIGFuZCBjb3B5IHJlbG9jYXRpb25zIChCWiA2MTQ2NTkp LgorIz1kcm9wOiBVcHN0cmVhbWVkLgogUGF0Y2g0ODk6IGdkYi1iejYxNDY1OS1wcmVsaW5rLWR5 bmJzcy5wYXRjaAogCiAjIFByb3ZpZGUgL3Vzci9iaW4vZ2RiLWFkZC1pbmRleCBmb3IgcnBtLWJ1 aWxkIChUb20gVHJvbWV5KS4KKyM9ZHJvcDogUmUtY2hlY2sgYWdhaW5zdCB0aGUgdXBzdHJlYW0g dmVyc2lvbi4KIFBhdGNoNDkxOiBnZGItZ2RiLWFkZC1pbmRleC1zY3JpcHQucGF0Y2gKIAorIyBG aXggZ2NvcmUgZnJvbSB2ZXJ5IHNtYWxsIHRlcm1pbmFsIHdpbmRvd3MgKEJaIDU1NTA3NikuCisj PWRyb3A6IFVwc3RyZWFtZWQuCitQYXRjaDQ5MzogZ2RiLWJ6NTU1MDc2LWdjb3JlLXNtYWxsLWhl aWdodC5wYXRjaAorCisjIE91dCBvZiBtZW1vcnkgaXMganVzdCBhbiBlcnJvciwgbm90IGZhdGFs ICh1bmluaXRpYWxpemVkIFZMUyB2YXJzLCBCWiA1NjgyNDgpLgorIz1kcm9wK3dvcms6IEluZmVy aW9yIG9iamVjdHMgc2hvdWxkIGJlIHJlYWQgaW4gcGFydHMsIHRoZW4gdGhpcyBwYXRjaCBnZXRz IG9ic29sZXRlZC4KK1BhdGNoNDk2OiBnZGItYno1NjgyNDgtb29tLWlzLWVycm9yLnBhdGNoCisK KyMgV29ya2Fyb3VuZCBmYWxzZSBHQ0Mgd2FybmluZyhzKS4KKyM9cHVzaAorUGF0Y2g0OTc6IGdk Yi1mYWxzZS1nY2Mtd2FybmluZy5wYXRjaAorCisjIERvIG5vdCBjcmFzaCBvbiBicm9rZW4gc2Vw YXJhdGUgZGVidWdpbmZvIGR1ZSB0byBvbGQgZWxmdXRpbHMgKEJaIDYzMTU3NSkuCisjPWRyb3A6 IFVwc3RyZWFtZWQuCitQYXRjaDQ5OTogZ2RiLWJ6NjMxNTc1LWdkYi1pbmRleC1ub2JpdHMucGF0 Y2gKKworIyBGaXggc3ltYm9sIGxvb2t1cCBtaXNzZXMgbWV0aG9kcyBvZiBjdXJyZW50IGNsYXNz IChCWiA2MzExNTgsIFNhbWkgV2FnaWFhbGxhKS4KKyM9bWF5YmVwdXNoCitQYXRjaDUwMDogZ2Ri LWJ6NjMxMTU4LWN4eC10aGlzLWxvb2t1cC5wYXRjaAorCisjIEZpeCBBZGEgcmVncmVzc2lvbiB3 aGVuIGFueSAuZ2RiX2luZGV4IGxpYnJhcnkgaXMgcHJlc2VudC4KKyM9ZHJvcDogVXBzdHJlYW1l ZC4KK1BhdGNoNTAxOiBnZGItZ2RiaW5kZXgtYWRhLXJlZ3Jlc3Npb24ucGF0Y2gKKworIyBweXRo b246IGxvYWQgKi1nZGIucHkgZm9yIHNobGlicyBkdXJpbmcgYXR0YWNoIChCWiA2MzQ2NjApLgor Iz1kcm9wOiBVcHN0cmVhbWVkLgorUGF0Y2g1MDI6IGdkYi1iejYzNDY2MC1nZGJweS1sb2FkLW9u LWF0dGFjaC5wYXRjaAorCisjIEZpeCBkb3VibGUgZnJlZSBjcmFzaCBkdXJpbmcgb3ZlcmxvYWQg cmVzb2x1dGlvbiAoUFIgMTIwMjgsIFNhbWkgV2FnaWFhbGxhKS4KKyM9ZHJvcDogVXBzdHJlYW1l ZC4KK1BhdGNoNTAzOiBnZGItcHIxMjAyOC1kb3VibGUtZnJlZS5wYXRjaAorCisjIEZpeCBnY29y ZSB3cml0ZXIgZm9yIC1XbCwteixyZWxybyAoUFIgY29yZWZpbGVzLzExODA0KS4KKyM9cHVzaDog VGhlcmUgaXMgZGlmZmVyZW50IHBhdGNoIG9uIGdkYi1wYXRjaGVzLCB3YWl0aW5nIG5vdyBmb3Ig cmVzb2x1dGlvbiBpbiBrZXJuZWwuCitQYXRjaDUwNDogZ2RiLWJ6NjIzNzQ5LWdjb3JlLXJlbHJv LnBhdGNoCisKKyMgRml4IGluZmluaXRlIGxvb3AgY3Jhc2ggb24gc2VsZi1yZWZlcmVuY2luZyBj bGFzcyAoQlogNjI3NDMyKS4KKyM9ZHJvcDogVXBzdHJlYW1lZC4KK1BhdGNoNTA2OiBnZGItYno2 Mjc0MzItbG9vcC1zdGF0aWMtc2VsZi1jbGFzcy5wYXRjaAorCisjIEZpeCBsb3N0IHNpZ2luZm9f dCBpbiBsaW51eC1uYXQgKEJaIDU5MjAzMSkuCisjPWRyb3A6IFVwc3RyZWFtZWQuCitQYXRjaDUw NzogZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC0xb2Y1LnBhdGNoCisjPWRyb3A6IFVwc3RyZWFt ZWQuCitQYXRjaDUwODogZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC0yb2Y1LnBhdGNoCisjPWRy b3A6IFVwc3RyZWFtZWQuCitQYXRjaDUwOTogZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC0zb2Y1 LnBhdGNoCisjPXB1c2gKK1BhdGNoNTEwOiBnZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTRvZjUu cGF0Y2gKKyM9cHVzaAorUGF0Y2g1MTE6IGdkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNW9mNS5w YXRjaAorCisjIEZpeCAuZ2RiX2luZGV4IGZvciBiaWctZW5kaWFuIGhvc3RzIChUb20gVHJvbWV5 KS4KKyM9ZHJvcDogVXBzdHJlYW1lZC4KK1BhdGNoNTE0OiBnZGItZ2RiaW5kZXgtdjEtdG8tdjIu cGF0Y2gKKyM9ZHJvcDogVXBzdHJlYW1lZC4KK1BhdGNoNTEyOiBnZGItZ2RiaW5kZXgtYmlnZW5k aWFuLnBhdGNoCisjPWRyb3A6IFVwc3RyZWFtZWQuCitQYXRjaDUxNTogZ2RiLWdkYmluZGV4LXYy LXRvLXYzLnBhdGNoCisKKyMgW2lmdW5jXSBGaXggY3Jhc2ggb24gZGVsZXRpbmcgd2F0Y2hwb2lu dCBvZiBhbiBhdXRvdmFyaWFibGUgKEJaIDYzNzc3MCkuCisjPWRyb3A6IEEgcGFydCBvZiBhcmNo ZXItamFua3JhdG9jaHZpbC1pZnVuYyB3b3JrLgorUGF0Y2g1MTM6IGdkYi1iejYzNzc3MC1pZnVu Yy13YXRjaHBvaW50LWRlbGV0ZS5wYXRjaAorCisjIEZpeCBweXRob24gc3RhbGUgZXJyb3Igc3Rh dGUsIGFsc28gZml4IGl0cyBzYXZlL3Jlc3RvcmUgKEJaIDYzOTA4OSkuCisjPWRyb3A6IEp1c3Qg YSBiYWNrcG9ydC4KK1BhdGNoNTE4OiBnZGItdGVzdHN1aXRlLWxpYi1weXRob24ucGF0Y2gKKyM9 ZHJvcDogVXBzdHJlYW1lZC4KK1BhdGNoNTE2OiBnZGItcHl0aG9uLWVycm9yLXN0YXRlLnBhdGNo CisKKyMgRml4IGluZmVyaW9yIGV4ZWMgb2YgbmV3IFBJRSB4ODZfNjQgKEJaIDYzODk3OSkuCisj PWRyb3A6IFVwc3RyZWFtZWQuCitQYXRjaDUxNzogZ2RiLWV4ZWMtcGllLWFtZDY0LnBhdGNoCisK KyMgRml4IGNyYXNoIG9uIENUUkwtQyB3aGlsZSByZWFkaW5nIGFuIEVMRiBzeW1ib2wgZmlsZSAo QlogNjQyODc5KS4KKyM9cHVzaAorUGF0Y2g1MjA6IGdkYi1iejY0Mjg3OS1lbGZyZWFkLXNpZ2lu dC1zdGFsZS5wYXRjaAorCisjIGlGb3J0IGNvbXBhdC4gLSBjYXNlIGluc2Vuc2l0aXZlIERXQVJG IG5vdCBpbiBsb3dlcmNhc2UgKEJaIDY0NTc3MykuCitQYXRjaDUyMjogZ2RiLWJ6NjQ1NzczLWlm b3J0LWNhc2UtMW9mMy5wYXRjaAorUGF0Y2g1MjM6IGdkYi1iejY0NTc3My1pZm9ydC1jYXNlLTJv ZjMucGF0Y2gKK1BhdGNoNTI0OiBnZGItYno2NDU3NzMtaWZvcnQtY2FzZS0zb2YzLnBhdGNoCisK IEJ1aWxkUmVxdWlyZXM6IG5jdXJzZXMtZGV2ZWwlez9faXNhfSB0ZXhpbmZvIGdldHRleHQgZmxl eCBiaXNvbiBleHBhdC1kZXZlbCV7P19pc2F9CiBSZXF1aXJlczogcmVhZGxpbmUlez9faXNhfQog QnVpbGRSZXF1aXJlczogcmVhZGxpbmUtZGV2ZWwlez9faXNhfQpAQCAtNDM0LDEzICs2NDksMTEg QEAgQnVpbGRSZXF1aXJlczogemxpYi1kZXZlbCV7P19pc2F9CiAlaWYgMCV7IT9lbDU6MX0KIFJl cXVpcmVzOiBweXRob24tbGlicyV7P19pc2F9CiAlZWxzZQotUmVxdWlyZXM6IHB5dGhvbiV7P19p c2F9CisjIFRoaXMgUkhFTC01LjYgcHl0aG9uIHZlcnNpb24gZ290IHNwbGl0IG91dCBweXRob24t bGlicyBmb3IgcHBjNjQuCisjIFJIRUwtNSBycG0gZG9lcyBub3Qgc3VwcG9ydCAuJXtfYXJjaH0g ZGVwZW5kZW5jaWVzLgorUmVxdWlyZXM6IHB5dGhvbi1saWJzLSV7X2FyY2h9ID49IDIuNC4zLTMy LmVsNQogJWVuZGlmCiBCdWlsZFJlcXVpcmVzOiBweXRob24tZGV2ZWwlez9faXNhfQotIyBUZW1w b3JhcmlseSBiZWZvcmUgcHl0aG9uIGZpbGVzIGdldCBtb3ZlZCB0byBsaWJzdGRjKysucnBtCi0j IGxpYnN0ZGMrKyV7Yml0c19vdGhlcn0gaXMgbm90IHByZXNlbnQgaW4gS29qaSwgdGhlIC5zcGVj IHNjcmlwdCBnZW5lcmF0aW5nCi0jIGdkYi9weXRob24vbGlic3RkY3h4LyBhbHNvIGRvZXMgbm90 IGRlcGVuZCBvbiB0aGUgJXtiaXRzX290aGVyfSBmaWxlcy4KLUJ1aWxkUmVxdWlyZXM6IGxpYnN0 ZGMrKyV7P19pc2F9CiAlZW5kaWYgIyAwJXshP193aXRob3V0X3B5dGhvbjoxfQogCiAlaWYgMCV7 P193aXRoX3Rlc3RzdWl0ZToxfQpAQCAtNTU2LDcgKzc2OSw3IEBAIHJtIC1mIGdkYi9qdi1leHAu YyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMKIAogJWlmIDAleyE/X3dp dGhfdXBzdHJlYW06MX0KIAotI3BhdGNoMjMyIC1wMQorJXBhdGNoMjMyIC1wMQogJXBhdGNoMzQ5 IC1wMQogJXBhdGNoNDIwIC1wMQogJXBhdGNoMSAtcDEKQEAgLTY2OSw4ICs4ODIsMzUgQEAgcm0g LWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwog IyBUaGlzIHBhdGNoIHNob3VsZCBiZSBhcHBsaWVkIHRvIGdjYy00LjUrLnNyYy5ycG06CiAjcGF0 Y2g0ODcgLXAxCiAlcGF0Y2g0MTUgLXAxCislcGF0Y2g1MTkgLXAxCiAlcGF0Y2g0ODkgLXAxCiAl cGF0Y2g0OTEgLXAxCislcGF0Y2g0OTMgLXAxCislcGF0Y2g0OTYgLXAxCislcGF0Y2g0OTcgLXAx CislcGF0Y2g0OTkgLXAxCislcGF0Y2g1MDAgLXAxCislcGF0Y2g1MDEgLXAxCislcGF0Y2g1MDIg LXAxCislcGF0Y2g1MDMgLXAxCislcGF0Y2g1MDQgLXAxCislcGF0Y2g1MDYgLXAxCislcGF0Y2g1 MDcgLXAxCislcGF0Y2g1MDggLXAxCislcGF0Y2g1MDkgLXAxCislcGF0Y2g1MTAgLXAxCislcGF0 Y2g1MTEgLXAxCislcGF0Y2g1MTQgLXAxCislcGF0Y2g1MTIgLXAxCislcGF0Y2g1MTUgLXAxCisl cGF0Y2g1MTMgLXAxCislcGF0Y2g1MTYgLXAxCislcGF0Y2g1MTcgLXAxCislcGF0Y2g1MTggLXAx CislcGF0Y2g1MjAgLXAxCislcGF0Y2g1MjIgLXAxCislcGF0Y2g1MjMgLXAxCislcGF0Y2g1MjQg LXAxCiAKICVwYXRjaDM5MyAtcDEKICVwYXRjaDMzNSAtcDEKQEAgLTcwNyw5ICs5NDcsMTEgQEAg cm0gLWYgZ2RiL2RvYy8qLmluZm8tKgogIyBidWlsdC4KICMgSW5pdGlhbGx5IHdlJ3JlIGluIHRo ZSAle2dkYl9zcmN9IGRpcmVjdG9yeS4KIAotcm0gLWZyICV7Z2RiX2J1aWxkfQotbWtkaXIgJXtn ZGJfYnVpbGR9Ci1jZCAle2dkYl9idWlsZH0KK2ZvciBmcHJvZmlsZSBpbiAlez9fd2l0aF9wcm9m aWxlOi1mcHJvZmlsZX0gIiIKK2RvCisKK21rZGlyICV7Z2RiX2J1aWxkfSRmcHJvZmlsZQorY2Qg JXtnZGJfYnVpbGR9JGZwcm9maWxlCiAKICMgZzc3IGV4ZWN1dGFibGUgaXMgbm8gbG9uZ2VyIHBy ZXNlbnQgaW4gRmVkb3JhIGdjYy00LngrLgogZzc3PSJgd2hpY2ggZ2ZvcnRyYW4gMj4vZGV2L251 bGwgfHwgdHJ1ZWAiCkBAIC03NzYsNyArMTAxOCw1NiBAQCAkKDogUkhFTC01IGxpYnJwbSBoYXMg aW5jb21wYXRpYmxlIEFQSS4gKQkJCVwKIAkle190YXJnZXRfcGxhdGZvcm19CiAlZW5kaWYKIAot bWFrZSAlez9fc21wX21mbGFnc30KK2lmIFsgLXogIiV7IT9fd2l0aF9wcm9maWxlOm5vfSIgXQor dGhlbgorICAjIFJ1biBhbGwgdGhlIGNvbmZpZ3VyZSB0ZXN0cyBiZWluZyBpbmNvbXBhdGlibGUg d2l0aCAkRlBST0ZJTEVfQ0ZMQUdTLgorICBtYWtlICV7P19zbXBfbWZsYWdzfSBjb25maWd1cmUt aG9zdCBjb25maWd1cmUtdGFyZ2V0CisgIG1ha2UgJXs/X3NtcF9tZmxhZ3N9IGNsZWFuCisKKyAg IyBXb3JrYXJvdW5kIC1mcHJvZmlsZS11c2U6CisgICMgbGludXgteDg2LWxvdy5jOjIyMjU6IEVy cm9yOiBzeW1ib2wgYHN0YXJ0X2kzODZfZ290bycgaXMgYWxyZWFkeSBkZWZpbmVkCisgIG1ha2Ug JXs/X3NtcF9tZmxhZ3N9IC1DIGdkYi9nZGJzZXJ2ZXIgbGludXgteDg2LWxvdy5vCitmaQorCisj IEdsb2JhbCBDRkxBR1Mgd291bGQgZmFpbCBvbjoKKyMgY29uZnRlc3QuYzoxOjE6IGVycm9yOiBj b3ZlcmFnZSBtaXNtYXRjaCBmb3IgZnVuY3Rpb24gJ21haW4nIHdoaWxlIHJlYWRpbmcgY291bnRl ciAnYXJjcycKK2lmIFsgIiRmcHJvZmlsZSIgPSAiLWZwcm9maWxlIiBdCit0aGVuCisgIEZQUk9G SUxFX0NGTEFHUz0nLWZwcm9maWxlLWdlbmVyYXRlJworZWxpZiBbIC16ICIleyE/X3dpdGhfcHJv ZmlsZTpub30iIF0KK3RoZW4KKyAgRlBST0ZJTEVfQ0ZMQUdTPSctZnByb2ZpbGUtdXNlJworICAj IFdlIGNhbm5vdCB1c2UgLWZwcm9maWxlLWRpciBhcyB0aGUgYmFyZSBmaWxlbmFtZXMgY2xhc2gu CisgIChjZCAuLi8le2dkYl9idWlsZH0tZnByb2ZpbGU7CisgICAjIEl0IHdhcyAzMzMgb24geDg2 XzY0LgorICAgdGVzdCAkKGZpbmQgLW5hbWUgIiouZ2NkYSJ8d2MgLWwpIC1ndCAzMDAKKyAgIGZp bmQgLW5hbWUgIiouZ2NkYSIgfCB3aGlsZSByZWFkIC1yIGkKKyAgIGRvCisgICAgIGxuICRpIC4u LyV7Z2RiX2J1aWxkfS8kaQorICAgZG9uZQorICApCitlbHNlCisgIEZQUk9GSUxFX0NGTEFHUz0i IgorZmkKKworbWFrZSAlez9fc21wX21mbGFnc30gQ0ZMQUdTPSIkQ0ZMQUdTICRGUFJPRklMRV9D RkxBR1MiIExERkxBR1M9IiRGUFJPRklMRV9DRkxBR1MiCisKK2lmIFsgIiRmcHJvZmlsZSIgPSAi LWZwcm9maWxlIiBdCit0aGVuCisgIGNkIGdkYgorICBjcCAtcCBnZGIgZ2RiLXdpdGhpbmRleAor ICBQQVRIPSIkUFdEOiRQQVRIIiBzaCAuLi8uLi9nZGIvZ2RiLWFkZC1pbmRleCAkUFdEL2dkYi13 aXRoaW5kZXgKKyAgLi9nZGIgLW54IC1leCBxIC4vZ2RiLXdpdGhpbmRleAorICAuL2dkYiAtbngg LXJlYWRub3cgLWV4IHEgLi9nZGItd2l0aGluZGV4CisgIGNkIC4uCitmaQorCitjZCAuLgorCitk b25lCSMgZnByb2ZpbGUKKworY2QgJXtnZGJfYnVpbGR9CisKIG1ha2UgJXs/X3NtcF9tZmxhZ3N9 IGluZm8KIAogZ3JlcCAnI2RlZmluZSBIQVZFX1pMSUJfSCAxJyBnZGIvY29uZmlnLmgKQEAgLTg5 MCwyMiArMTE4MSwxMSBAQCBsbiAtc2YgZ2RiICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vYmlu L2dkYnR1aQogY21wICRSUE1fQlVJTERfUk9PVCV7X21hbmRpcn0vKi9nZGIuMSAkUlBNX0JVSUxE X1JPT1Qle19tYW5kaXJ9LyovZ2RidHVpLjEKIGxuIC1zZiBnZGIuMSAkUlBNX0JVSUxEX1JPT1Ql e19tYW5kaXJ9LyovZ2RidHVpLjEKIAotIyBEaXNhYmxlZCBub3cgZm9yIEYtMTQgYmVmb3JlIHJl YmFzZS4KLSMlaWYgMCV7IT9fd2l0aG91dF9weXRob246MX0KLSMjIFRlbXBvcmFyaWx5IG5vdzoK LSNmb3IgTElCIGluIGxpYiBsaWI2NDtkbwotIyAgTElCUEFUSD0iJFJQTV9CVUlMRF9ST09UJXtf ZGF0YWRpcn0vZ2RiL2F1dG8tbG9hZCV7X3ByZWZpeH0vJExJQiIKLSMgIG1rZGlyIC1wICRMSUJQ QVRICi0jICAjIGJhc2VuYW1lIGlzIGJlaW5nIHJ1biBvbmx5IGZvciB0aGUgbmF0aXZlIChub24t YmlhcmNoKSBmaWxlLgotIyAgc2VkIC1lICdzLEBweXRob25kaXJALCV7X2RhdGFkaXJ9L2dkYi9w eXRob24sJwkJXAotIyAgICAgIC1lICdzLEB0b29sZXhlY2xpYmRpckAsJXtfcHJlZml4fS8nIiRM SUIsIgkJXAotIyAgICAgIDwgJFJQTV9CVUlMRF9ESVIvJXtnZGJfc3JjfS8le2xpYnN0ZGN4eHB5 dGhvbn0vaG9vay5pbglcCi0jICAgICAgPiAkTElCUEFUSC8kKGJhc2VuYW1lICV7X3ByZWZpeH0v JXtfbGlifS9saWJzdGRjKysuc28uNi4qKS1nZGIucHkKLSNkb25lCi0jdGVzdCAhIC1lICRSUE1f QlVJTERfUk9PVCV7X2RhdGFkaXJ9L2dkYi9weXRob24vbGlic3RkY3h4Ci0jY3AgLWEgJFJQTV9C VUlMRF9ESVIvJXtnZGJfc3JjfS8le2xpYnN0ZGN4eHB5dGhvbn0vbGlic3RkY3h4CVwKLSMgICAg ICAkUlBNX0JVSUxEX1JPT1Qle19kYXRhZGlyfS9nZGIvcHl0aG9uL2xpYnN0ZGN4eAotIyVlbmRp ZiAjIDAleyE/X3dpdGhvdXRfcHl0aG9uOjF9Citmb3IgaSBpbiBgZmluZCAkUlBNX0JVSUxEX1JP T1Qle19kYXRhZGlyfS9nZGIvcHl0aG9uL2dkYiAtbmFtZSAiKi5weSJgCitkbworICAjIEZpbGVz IGNvdWxkIGJlIGFsc28gcGF0Y2hlZCBnZXR0aW5nIHRoZSBjdXJyZW50IHRpbWUuCisgIHRvdWNo IC1yICRSUE1fQlVJTERfRElSLyV7Z2RiX3NyY30vZ2RiL0NoYW5nZUxvZyAkaQorZG9uZQogCiAj IFJlbW92ZSB0aGUgZmlsZXMgdGhhdCBhcmUgcGFydCBvZiBhIGdkYiBidWlsZCBidXQgdGhhdCBh cmUgb3duZWQgYW5kCiAjIHByb3ZpZGVkIGJ5IG90aGVyIHBhY2thZ2VzLgpAQCAtOTk1LDEwICsx Mjc1LDExNCBAQCBmaQogJWVuZGlmCiAle19iaW5kaXJ9L2dkYnNlcnZlcgogJXtfbWFuZGlyfS8q L2dkYnNlcnZlci4xKgorJWlmbmFyY2ggczM5MCBzMzkweCAle3NwYXJjfQogJXtfbGliZGlyfS9s aWJpbnByb2N0cmFjZS5zbwogJWVuZGlmCislZW5kaWYKIAogJWNoYW5nZWxvZworKiBTdW4gTm92 ICA3IDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4y LTI1LmZjMTQKKy0gaUZvcnQgY29tcGF0LiAtIGNhc2UgaW5zZW5zaXRpdmUgRFdBUkYgbm90IGlu IGxvd2VyY2FzZSAoQlogNjQ1NzczKS4KKworKiBUaHUgT2N0IDE0IDIwMTAgSmFuIEtyYXRvY2h2 aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4yLTI0LmZjMTQKKy0gQWRkIGdkYi5z cGVjIGNvbW1lbnRzIG9uIHRoZSAqLnBhdGNoIGZpbGVzIHVwc3RyZWFtIG1lcmdlIHN0YXR1cy4K KworKiBUaHUgT2N0IDE0IDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+IC0gNy4yLTIzLmZjMTQKKy0gV29ya2Fyb3VuZCBsaWJycG0gQlogNjQzMDMxIGR1ZSB0 byBpdHMgdW5leHBlY3RlZCBleGl0KCkgY2FsbHMgKEJaIDY0Mjg3OSkuCistIEZpeCBjcmFzaCBv biBDVFJMLUMgd2hpbGUgcmVhZGluZyBhbiBFTEYgc3ltYm9sIGZpbGUgKEJaIDY0Mjg3OSkuCisK KyogVHVlIE9jdCAxMiAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPiAtIDcuMi0yMi5mYzE0CistIHRlc3RzdWl0ZTogUHJvdmlkZSBtaXNzaW5nIGxpYi9nZGIt cHl0aG9uLmV4cCAoZm9yIEJaIDYzOTA4OSkuCisKKyogVHVlIE9jdCAxMiAyMDEwIEphbiBLcmF0 b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMi0yMS5mYzE0CistIEZpeCBw eXRob24gc3RhbGUgZXJyb3Igc3RhdGUsIGFsc28gZml4IGl0cyBzYXZlL3Jlc3RvcmUgKEJaIDYz OTA4OSkuCistIEZpeCBpbmZlcmlvciBleGVjIG9mIG5ldyBQSUUgeDg2XzY0IChCWiA2Mzg5Nzkp LgorCisqIFR1ZSBPY3QgMTIgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4gLSA3LjItMjAuZmMxNAorLSBGaXh1cCBSZWxlYXNlIGZvciAyMC5mYzE0LgorCisq IFR1ZSBPY3QgMTIgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4gLSA3LjItMTkuZmMxNAorLSBVc2UgLmdkYl9pbmRleCB2MyB0byBmaXggZXhjZXNzaXZlIHJl c291cmNlcyBycW1udHMgKEJaIDY0MDYzNCwgVG9tIFRyb21leSkuCisKKyogV2VkIE9jdCAgNiAy MDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMi0xOC5m YzE0CistIEZpeCBmYWxzZSB3YXJuaW5nOiBub24tYWJzb2x1dGUgZmlsZW5hbWU6IDx0aGUgbWFp biBleGVjLiBmaWxlPiAoQlogNjQwNjQ4KS4KKworKiBUaHUgU2VwIDMwIDIwMTAgSmFuIEtyYXRv Y2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4yLTE3LmZjMTQKKy0gTmV3IENv bmZsaWN0czogZWxmdXRpbHMgPCAwLjE0OSBkdWUgdG8gdGhlIC5nZGJfaW5kZXggLmRlYnVnIHN1 cHBvcnQuCisKKyogV2VkIFNlcCAyOSAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPiAtIDcuMi0xNi5mYzE0CistIFtpZnVuY10gRml4IGNyYXNoIG9uIGRlbGV0 aW5nIHdhdGNocG9pbnQgb2YgYW4gYXV0b3ZhcmlhYmxlIChCWiA2Mzc3NzApLgorCisqIE1vbiBT ZXAgMjcgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3 LjItMTUuZmMxNAorLSBSZXZlcnQgdGhlIC1PMCBzd2l0Y2ggZm9ybWVybHkgdG8gd29ya2Fyb3Vu ZCBHQ0MgQlogNjM0NzU3IChjbW92ZSBidWcpLgorLSBSZW1vdmUgbm8gbG9uZ2VyIHVzZWQgQnVp bGRSZXF1aXJlczogbGlic3RkYysrLgorLSBSZW1vdmUgY29tbWVudGVkIG91dCBweXRob24gbGli c3RkYysrIC5zcGVjIGNvZGUuCisKKyogU2F0IFNlcCAyNSAyMDEwIEphbiBLcmF0b2NodmlsIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMi0xNC5mYzE0CistIEZpeHVwICV7X2RhdGFk aXJ9L2dkYi9weXRob24vZ2RiIHRpbWVzdGFtcHMgZm9yIG11bHRpbGliIGNvbmZsaWN0cy4KKwor KiBTYXQgU2VwIDI1IDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+IC0gNy4yLTEzLmZjMTQKKy0gRml4IC5nZGJfaW5kZXggZm9yIGJpZy1lbmRpYW4gaG9zdHMg KFRvbSBUcm9tZXkpLgorCisqIFNhdCBTZXAgMjUgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjItMTIuZmMxNAorLSBGaXggbG9zdCBzaWdpbmZvX3Qg aW4gbGludXgtbmF0IChCWiA1OTIwMzEpLgorCisqIFNhdCBTZXAgMjUgMjAxMCBKYW4gS3JhdG9j aHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjItMTEuZmMxNAorLSBGaXggaW5m aW5pdGUgbG9vcCBjcmFzaCBvbiBzZWxmLXJlZmVyZW5jaW5nIGNsYXNzIChCWiA2Mjc0MzIpLgor CisqIFRodSBTZXAgMjMgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4gLSA3LjItMTAuZmMxNAorLSBnY29yZS8tV2wsLXoscmVscm86IEFsd2F5cyB3cml0ZSBv dXQgYWxsIHRoZSBwYWdlcyB1bnRpbCBrZXJuZWwgZ2V0cyBhIGZpeC4KKworKiBXZWQgU2VwIDIy IDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4yLTku ZmMxNAorLSBGaXggZ2NvcmUgd3JpdGVyIGZvciAtV2wsLXoscmVscm8gKFBSIGNvcmVmaWxlcy8x MTgwNCkuCisKKyogV2VkIFNlcCAyMiAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPiAtIDcuMi04LmZjMTQKKy0gRW5hYmxlIHB5dGhvbiBieSBkZWZhdWx0IGV2 ZW4gaW4gQnJldyBhbmQgb24gYWxsIHRoZSBhcmNoZXMgKEJaIDYwOTE1NykuCisKKyogV2VkIFNl cCAyMiAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcu Mi03LmZjMTQKKy0gcHl0aG9uOiBsb2FkICotZ2RiLnB5IGZvciBzaGxpYnMgZHVyaW5nIGF0dGFj aCAoQlogNjM0NjYwKS4KKy0gRml4IGRvdWJsZSBmcmVlIGNyYXNoIGR1cmluZyBvdmVybG9hZCBy ZXNvbHV0aW9uIChQUiAxMjAyOCwgU2FtaSBXYWdpYWFsbGEpLgorCisqIFNhdCBTZXAgMTggMjAx MCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjItNi5mYzE0 CistIEZpeCBweXRob24gZ2RiLnNvbGliX2FkZHJlc3MgKEJaIDYzNDEwOCwgZml4IGJ5IFBoaWwg TXVsZG9vbikuCistIFRlbXBvcmFyaWx5IGJ1aWxkIHdpdGggLU8wIHRvIHdvcmthcm91bmQgR0ND IEJaIDYzNDc1NyAoY21vdmUgYnVnKS4KKworKiBUdWUgU2VwIDE0IDIwMTAgSmFuIEtyYXRvY2h2 aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4yLTUuZmMxNAorLSBGaXggQWRhIHJl Z3Jlc3Npb24gd2hlbiBhbnkgLmdkYl9pbmRleCBsaWJyYXJ5IGlzIHByZXNlbnQuCisKKyogU2F0 IFNlcCAxMSAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAt IDcuMi00LmZjMTQKKy0gRml4IHN5bWJvbCBsb29rdXAgbWlzc2VzIG1ldGhvZHMgb2YgY3VycmVu dCBjbGFzcyAoQlogNjMxMTU4LCBTYW1pIFdhZ2lhYWxsYSkuCistIEZpeCBweXRob24gZ2RiLmV4 ZWN1dGUtdG9fc3RyaW5nIHJlZGlyZWN0aW9uIChCWiA2Mjc1MDYsIHdpdGggUGF1bCBCb2xsZSku CisKKyogV2VkIFNlcCAgOCAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPiAtIDcuMi0zLmZjMTQKKy0gRG8gbm90IGNyYXNoIG9uIGJyb2tlbiBzZXBhcmF0ZSBk ZWJ1Z2luZm8gZHVlIHRvIG9sZCBlbGZ1dGlscyAoQlogNjMxNTc1KS4KKworKiBTYXQgU2VwIDA0 IDIwMTAgRGVubmlzIEdpbG1vcmUgPGRlbm5pc0BhdXNpbC51cz4gLSA3LjItMi5mYzE0CistIGxp YmlucHJvY3RyYWNlIGRvZXNudCBleGlzdCBvbiBzcGFyYyBhcmNoZXMKKworKiBGcmkgU2VwICAz IDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4yLTEu ZmMxNAorLSBGb3JtYWwgdXBkYXRlIHRvIHRoZSBmaW5hbCBGU0YgR0RCIHJlbGVhc2UuCisKKyog VHVlIEF1ZyAyNCAyMDEwIERhbiBIb3LDoWsgPGRhblthdF1kYW5ueS5jej4gLSA3LjEuOTAuMjAx MDA4MDYtMTIuZmMxNAorLSBsaWJpbnByb2N0cmFjZSBkb2Vzbid0IGV4aXN0IG9uIHMzOTAoeCkK KworKiBUaHUgQXVnIDE5IDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+IC0gNy4xLjkwLjIwMTAwODA2LTExLmZjMTQKKy0gRml4IGNyYXNoIG9uIE1JIHZhcmlh YmxlIGNhbGxpbmcgaW5mZXJpb3IgZnVuY3Rpb24gKEJaIDYxMDk4NikuCisKKyogVHVlIEF1ZyAx MCAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMS45 MC4yMDEwMDgwNi0xMC5mYzE0CistIEZpeCAvdXNyL2Jpbi9nZGItYWRkLWluZGV4IG1pc3Npbmcg LW54IGZvciBnZGIuCistIE5ldyBvcHRpb24gLS13aXRoIHByb2ZpbGUgKGRpc2FibGVkIGJ5IGRl ZmF1bHQgLSBtaXNzaW5nIHdvcmtsb2FkLCBCWiA2MTU2MDMpLgorCisqIFNhdCBBdWcgIDcgMjAx MCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjEuOTAuMjAx MDA4MDYtOS5mYzE0CistIEZpeCBweXRob24gZ2RiLmV4ZWN1dGUgdG9fc3RyaW5nIHBhZ2luYXRp b24gKEJaIDYyMDkzMCkuCisKKyogRnJpIEF1ZyAgNiAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMS45MC4yMDEwMDgwNi04LmZjMTQKKy0gT3V0IG9m IG1lbW9yeSBpcyBqdXN0IGFuIGVycm9yLCBub3QgZmF0YWwgKHVuaW5pdGlhbGl6ZWQgVkxTIHZh cnMsIEJaIDU2ODI0OCkuCisKKyogRnJpIEF1ZyAgNiAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMS45MC4yMDEwMDgwNi03LmZjMTQKKy0gRml4IGdj b3JlIGZyb20gdmVyeSBzbWFsbCB0ZXJtaW5hbCB3aW5kb3dzIChCWiA1NTUwNzYpLgorLSBGaXgg ZmFsc2UgYGZpbGVzeXN0ZW0nIGRlYnVnaW5mbyBycG0gcmVxdWVzdCAoQlogNTk5NTk4KS4KKwog KiBXZWQgSnVsIDI4IDIwMTAgTWFtb3J1IFRhc2FrYSA8bXRhc2FrYUBpb2Eucy51LXRva3lvLmFj LmpwPiAtIDcuMS45MC4yMDEwMDcyMS02LmZjMTQKIC0gUmVidWlsZCBhZ2FpbnN0IHB5dGhvbiAy LjcKIAoKZGlmZiAtLWdpdCBhL2dkYjJmYWlsLnNoIGIvZ2RiMmZhaWwuc2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNzU1CmluZGV4IDkzOWMxZTcuLjAwMDAwMDAKLS0tIGEvZ2RiMmZhaWwuc2gKKysr IC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0jIS9iaW4vc2gKLQotaWYgdGVzdCAiJCMiIC1l cSAwCi10aGVuCi0gICAgZWNobyA+JjIgIlVzYWdlOiAkMCBbIC9tbnQvYnJldy9wYWNrYWdlcy9n ZGIvVkVSU0lPTi9ESVNUL2RhdGEvbG9ncy9BUkNIL2J1aWxkLmxvZyBdIgotICAgIGVjaG8gPiYy ICIgICAgICAgWyAvbW50L2JyZXcvc2NyYXRjaC9VU0VSTkFNRS90YXNrX1RBU0tJRC9sb2dzL0FS Q0gvYnVpbGQubG9nIF0iCi0gICAgZWNobyA+JjIgIiAgICAgICBbIC9tbnQvYnJldy93b3JrL3Rh c2tzL1RBU0tJRC9idWlsZC5sb2cgXSAuLi4iCi0gICAgZXhpdCAxCi1maQotCi1pZiBbIC1kIHRl c3RzIF07dGhlbgotCWlmIFsgISAtZiB0ZXN0cy8udjIgXTt0aGVuCi0JCWVjaG8gPiYyICJEaXJl Y3Rvcnkgd2lsbCBiZSBkZWxldGVkITogdGVzdHMiCi0JCWV4aXQgMQotCWZpCi0Jcm0gLXJmIHRl c3RzCi1maQotbWtkaXIgdGVzdHMKLXRvdWNoIHRlc3RzLy52MgkjIE1hcmtlciBmb3IgdGhpcyB0 ZW1wb3JhcnkgZGlyZWN0b3J5IHR5cGUKLQotZmluZCAiJEAiIC1wYXRoICcqL2J1aWxkLmxvZycg LXByaW50IHwgd2hpbGUgcmVhZCBmCi1kbwotICAgIGVjaG8gIiRmIiA+JjIKLSAgICB2ZXI9YGVj aG8gIiRmIiB8IHNlZCAtbiAtZSAncyxeLipnZGIvXChbLTAtOVwuXSpcKS9cKFteL10qXCkvZGF0 YS9sb2dzL1woW14vXSpcKS8uKiQsLVwxLHAnYAotICAgIHJlbD1gZWNobyAiJGYiIHwgc2VkIC1u IC1lICdzLF4uKmdkYi9cKFstMC05XC5dKlwpL1woW14vXSpcKS9kYXRhL2xvZ3MvXChbXi9dKlwp Ly4qJCwtXDIscCdgCi0gICAgaXNhPWBlY2hvICIkZiIgfCBzZWQgLW4gLWUgJ3MsXi4qZ2RiL1wo Wy0wLTlcLl0qXCkvXChbXi9dKlwpL2RhdGEvbG9ncy9cKFteL10qXCkvLiokLC5cMyxwJ2AKLSAg ICBpZiB0ZXN0IC16ICIkdmVyIiA7IHRoZW4KLSAgICB2ZXI9YGVjaG8gIiRmIiB8IHNlZCAtbiAt ZSAncyxeLiovc2NyYXRjaC8uKi90YXNrX1woWzAtOV0qXCkvbG9ncy9cKFteL10qXCkvLiokLC1c MSxwJ2AKLSAgICBmaQotICAgIGlmIHRlc3QgLXogIiR2ZXIiIDsgdGhlbgotICAgIHZlcj1gZWNo byAiJGYiIHwgc2VkIC1uIC1lICdzLF4uKi9idWlsZC1cKFswLTldKlwpLy4qJCwtXDEscCdgCi0g ICAgZmkKLSAgICBpZiB0ZXN0IC16ICIkaXNhIiA7IHRoZW4KLSAgICBpc2E9YGVjaG8gIiRmIiB8 IHNlZCAtbiAtZSAncyxeLiovc2NyYXRjaC8uKi90YXNrX1woWzAtOV0qXCkvbG9ncy9cKFteL10q XCkvLiokLC1cMixwJ2AKLSAgICBmaQotICAgIGlmIHRlc3QgLXogIiR2ZXIiIDsgdGhlbgotICAg IHZlcj1gZWNobyAiJGYiIHwgc2VkIC1uIC1lICdzLF4uKi93b3JrL3Rhc2tzL1woWzAtOV0qXCkv LiokLC1cMSxwJ2AKLSAgICBmaQotICAgICMgYmVnaW4gNjQ0IGdkYi1pMzg2LXJlZGhhdC1saW51 eC1nbnUudGFyLmJ6MgotICAgIGZvciB0IGluIHN1bSBsb2cgOyBkbwotCWlmIHRlc3QgLXogIiRp c2EiIDsgdGhlbgotCQlpc2E9YHV1ZGVjb2RlIDwgIiRmIiAtbyAvZGV2L3N0ZG91dCB8IGJ1bnpp cDIgXAotCQl8IHRhciAtdCAtZiAtICJnZGItKi1yZWRoYXQtbGludXgtZ251LiR0IiAyPiYxIFwK LQkJfCBzZWQgLW4gJ3MvXmdkYi1cKC4qXCktcmVkaGF0LWxpbnV4LWdudVsuXS4qJC8tXDEvcCcg XAotCQlgCi0JZmkKLQlsaW5lPSJnZGIke3Zlcn0ke3JlbH0ke2lzYX0iCi0JdXVkZWNvZGUgPCAi JGYiIC1vIC9kZXYvc3Rkb3V0IHwgYnVuemlwMiBcCi0JICAgIHwgdGFyIC14cHZ2TyAtZiAtICJn ZGItKi1yZWRoYXQtbGludXgtZ251LiR0IiBcCi0JICAgID4gInRlc3RzLyRsaW5lLiR0IgotICAg IGRvbmUKLWRvbmUKLQotKCBjZCB0ZXN0cyAmJiAvaG9tZS9jeWdudXMvY2FnbmV5L2Jpbi9kby1h bmFsaXplLXRlc3RzICouc3VtICkKLQotZWNobyAiJFBXRC90ZXN0cy8qLmh0bWwiCi1scyAtMSB0 ZXN0cy8qLmh0bWwgMT4mMgoKZGlmZiAtLWdpdCBhL2dkYjJwYXRjaC5zaCBiL2dkYjJwYXRjaC5z aApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYWY4ODhlMy4uMDAwMDAwMAotLS0gYS9n ZGIycGF0Y2guc2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0jIS9iaW4vc2gKLQot IyBHZW5lcmF0ZSBhIHBhdGNoIHRoYXQgYnJpbmdzIHRoZSBtb3N0IHJlY2VudCBzbmFwc2hvdCB1 cC10by1kYXRlCi0KLSNicmFuY2g9SEVBRAotZGF0ZT0nLUQgMjAwNC0wNi0wNy1nbXQnCi1kaXI9 YGVjaG8gImN2cyR7YnJhbmNofSR7ZGF0ZX0iIHwgdHIgJyAnICctJ2AKLXBhdGNoPWdkYi1gc2Vk IC1uIC1lICdzL15WZXJzaW9uOlsJIF0qXCguKlwpJC9cMS9wJyBnZGIuc3BlY2AKLQotaWYgdGVz dCAhIC1kICR7ZGlyfS9zcmMKLXRoZW4KLSAgKCBta2RpciAtcCAke2Rpcn0gJiYgY2QgJHtkaXJ9 ICYmIGN2cyBcCi0JLWQgOnBzZXJ2ZXI6YW5vbmN2c0Bzb3VyY2VzLnJlZGhhdC5jb206L2N2cy9z cmMgXAotCWNoZWNrb3V0ICR7YnJhbmNofSAke2RhdGV9IGdkYiApCi1maQotCi0oIGNkICR7ZGly fS9zcmMgJiYgY3ZzIGRpZmYgLU51IC1yIEJBU0UgLUQgYGRhdGUgLXUgKyIlWS0lbS0lZC1nbXQi YCAuL2dkYiApIHwgc2VkIC1lICcKLS9eSW5kZXg6IC4qXC92ZXJzaW9uXC5pbiQvLC9eSW5kZXgv IGQKLS9eSW5kZXg6L2QKLS9ePT09PS9kCi0vXlJDUy9kCi0vXnJldHJpZXZpbmcvZAotL15kaWZm L2QKLS9eLS0tIC9OCi0vXi0tLS4qIFwvZGV2XC9udWxsLyB7Ci0gIHAKLSAgZAotfQotL14tLS0g XC5cLy8gewotICBzL14tLS0gXChbLWEtekEtWlwvXC4wLTlcK10qXCkvLS0tIFwxLjEvCi0gIHAK LSAgZAotfQotJyB8IHRlZSAkcGF0Y2gtc3luYy1gZGF0ZSAtdSArJVklbSVkYAotCi1leGl0Ci0K LSMgcy9eLS0tIFwoWy1hLXpBLVpcL1wuMC05XCtdKlwpLy0tLSBcMS4xLwotIyBzL15bXCtdW1wr XVtcK10gXChbLWEtekEtWlwvXC4wLTlcK10qXCkvKysrIFwxLwotCgpkaWZmIC0tZ2l0IGEvZ2Ri Y29tcGFyZSBiL2dkYmNvbXBhcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGFiYTQ0 OTMuLjAwMDAwMDAKLS0tIGEvZ2RiY29tcGFyZQorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAg QEAKLSMhIC91c3IvYmluL3BlcmwKLSMgJElkOiBnZGJjb21wYXJlLHYgMS41IDIwMDgvMDMvMDEg MDg6MDE6NTcgamtyYXRvY2ggRXhwICQKLQotCi11c2Ugc3RyaWN0OwotdXNlIHdhcm5pbmdzOwot dXNlIERhdGE6OkR1bXBlcjsKLQotbXkgJHJldmVyc2U9c2hpZnQgQEFSR1YgaWYgKCRBUkdWWzBd fHwiIikgZXEgIi1yIjsKLW15ICRzdWZmaXg9c2hpZnQgQEFSR1YgaWYgKCRBUkdWWzBdfHwiIik9 fi9eKD86c3VtfGxvZykkLzsKLSRzdWZmaXh8fD0ic3VtIjsKLQotbG9jYWwgKkRJUjsKLW9wZW5k aXIgRElSLCJ0ZXN0cyIgb3IgZGllICJvcGVuZGlyOiAkISI7Ci1teSAlYXJjaDsKLWZvciBteSAk bmFtZSAoc29ydCByZWFkZGlyKERJUikpIHsKLQkjIG5leHQgaWYgJG5hbWUhfi9eZ2RiLS4qWy0u XShbXi0uXSspWy5dJHN1ZmZpeCQvbzsKLQluZXh0IGlmICRuYW1lIX4vXlxkKy0oLiopWy5dJHN1 ZmZpeCQvbzsKLQlwdXNoIEB7JGFyY2h7JDF9fSwkbmFtZTsKLX0KLWNsb3NlZGlyIERJUiBvciBk aWUgImNsb3NlZGlyOiAkISI7Ci0KLWZvciAodmFsdWVzKCVhcmNoKSkgewotCW5leHQgaWYgMj09 QCRfOwotCXdhcm4gIlNpbmdsZSBlbGVtZW50OiAiLiR7JF99WzBdLiJcbiIgaWYgMT09QCRfOwot CWRpZSAiTm90IDIgZWxlbWVudHM6XG4iLkR1bXBlcigkXykgaWYgMSE9QCRfOwotfQotCi1zeXN0 ZW0oInJtIC1mIHRlc3RzL2dkYmNvbXBhcmUtKi5kaWZmIikgYW5kIGRpZTsKLQotZm9yIG15ICRh cmNoIChzb3J0IGtleXMoJWFyY2gpKSB7Ci0JbmV4dCBpZiAyIT1AeyRhcmNoeyRhcmNofX07Ci0J IyBzdWIgdHJhbnMgeyByZXR1cm4geyIuIj0+MCwiLSI9PjF9LT57KCRfWzBdPX4vKFstLl0pW14t Ll0rWy5dXHcrJC8pWzBdfS4kX1swXTsgfTsKLQlzdWIgdHJhbnMgeyByZXR1cm4gJF9bMF07IH07 Ci0JbXkgQHNvcnRlZD1zb3J0IHsgbXkgJGExPXRyYW5zICRhOyBteSAkYjE9dHJhbnMgJGI7ICgk YjEgY21wICRhMSkgKiAoJHJldmVyc2UgPyAtMSA6ICsxKTsgfSBAeyRhcmNoeyRhcmNofX07Ci0J ZG8geyBzeXN0ZW0gJF8gYW5kIGRpZSAkXzsgfSBmb3IgImRpZmYgLXUgdGVzdHMvJyIuJHNvcnRl ZFsxXS4iJyB0ZXN0cy8nIi4kc29ydGVkWzBdLiInID50ZXN0cy9nZGJjb21wYXJlLSckYXJjaCcu JyRzdWZmaXgnLmRpZmY7dHJ1ZSI7Ci19Ci0KLXN5c3RlbSgidmltIHRlc3RzL2dkYmNvbXBhcmUt Ki4nJHN1ZmZpeCcuZGlmZiIpOwotCi1fX0VORF9fOwotCi0tcnctcnctci0tICAxIGprcmF0b2No IGprcmF0b2NoIDI4MjA1OTkgRGVjIDExIDE2OjIzIGdkYi00NTA4OTQtaTM4Ni5sb2cKLS1ydy1y dy1yLS0gIDEgamtyYXRvY2ggamtyYXRvY2ggIDY2MTY1NyBEZWMgMTEgMTY6MjMgZ2RiLTQ1MDg5 NC1pMzg2LnN1bQotLXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAzMjM4MDg4IERlYyAx MSAxNjoyMyBnZGItNDUwODk0LWlhNjQubG9nCi0tcnctcnctci0tICAxIGprcmF0b2NoIGprcmF0 b2NoICA2NjI3OTYgRGVjIDExIDE2OjIzIGdkYi00NTA4OTQtaWE2NC5zdW0KLS1ydy1ydy1yLS0g IDEgamtyYXRvY2ggamtyYXRvY2ggMjk1OTMzOSBEZWMgMTEgMTY6MjMgZ2RiLTQ1MDg5NC1wcGMu bG9nCi0tcnctcnctci0tICAxIGprcmF0b2NoIGprcmF0b2NoICA2NzgxMTQgRGVjIDExIDE2OjIz IGdkYi00NTA4OTQtcHBjLnN1bQotLXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAyOTMy NzYwIERlYyAxMSAxNjoyMyBnZGItNDUwODk0LXBwYzY0LmxvZwotLXJ3LXJ3LXItLSAgMSBqa3Jh dG9jaCBqa3JhdG9jaCAgNjc0MDQ4IERlYyAxMSAxNjoyMyBnZGItNDUwODk0LXBwYzY0LnN1bQot LXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAyODU1MjcwIERlYyAxMSAxNjoyMyBnZGIt NDUwODk0LXMzOTAubG9nCi0tcnctcnctci0tICAxIGprcmF0b2NoIGprcmF0b2NoICA2NjYwNzkg RGVjIDExIDE2OjIzIGdkYi00NTA4OTQtczM5MC5zdW0KLS1ydy1ydy1yLS0gIDEgamtyYXRvY2gg amtyYXRvY2ggMjg4MzAyNyBEZWMgMTEgMTY6MjMgZ2RiLTQ1MDg5NC1zMzkweC5sb2cKLS1ydy1y dy1yLS0gIDEgamtyYXRvY2ggamtyYXRvY2ggIDY2ODI3OSBEZWMgMTEgMTY6MjMgZ2RiLTQ1MDg5 NC1zMzkweC5zdW0KLS1ydy1ydy1yLS0gIDEgamtyYXRvY2ggamtyYXRvY2ggMjkxMTEzOCBEZWMg MTEgMTY6MjMgZ2RiLTQ1MDg5NC14ODZfNjQubG9nCi0tcnctcnctci0tICAxIGprcmF0b2NoIGpr cmF0b2NoICA2NjY5OTkgRGVjIDExIDE2OjIzIGdkYi00NTA4OTQteDg2XzY0LnN1bQotLXJ3LXJ3 LXItLSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAyODgyMjU3IERlYyAxMSAxNjoyMyBnZGItNi41LTEz LmZjNi5pMzg2LmxvZwotLXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAgNjY3OTI5IERl YyAxMSAxNjoyMyBnZGItNi41LTEzLmZjNi5pMzg2LnN1bQotLXJ3LXJ3LXItLSAgMSBqa3JhdG9j aCBqa3JhdG9jaCAzMzExNDI3IERlYyAxMSAxNjoyMyBnZGItNi41LTEzLmZjNi5pYTY0LmxvZwot LXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAgNjY5MjIxIERlYyAxMSAxNjoyMyBnZGIt Ni41LTEzLmZjNi5pYTY0LnN1bQotLXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAzMDI1 MTI2IERlYyAxMSAxNjoyMyBnZGItNi41LTEzLmZjNi5wcGMubG9nCi0tcnctcnctci0tICAxIGpr cmF0b2NoIGprcmF0b2NoICA2ODQ1NzcgRGVjIDExIDE2OjIzIGdkYi02LjUtMTMuZmM2LnBwYy5z dW0KLS1ydy1ydy1yLS0gIDEgamtyYXRvY2ggamtyYXRvY2ggMzI2NzYxMSBEZWMgMTEgMTY6MjMg Z2RiLTYuNS0xMy5mYzYucHBjNjQubG9nCi0tcnctcnctci0tICAxIGprcmF0b2NoIGprcmF0b2No ICA2ODIzNDggRGVjIDExIDE2OjIzIGdkYi02LjUtMTMuZmM2LnBwYzY0LnN1bQotLXJ3LXJ3LXIt LSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAyOTEyOTYzIERlYyAxMSAxNjoyMyBnZGItNi41LTEzLmZj Ni5zMzkwLmxvZwotLXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAgNjcyNTA1IERlYyAx MSAxNjoyMyBnZGItNi41LTEzLmZjNi5zMzkwLnN1bQotLXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBq a3JhdG9jaCAyOTQyMjk3IERlYyAxMSAxNjoyMyBnZGItNi41LTEzLmZjNi5zMzkweC5sb2cKLS1y dy1ydy1yLS0gIDEgamtyYXRvY2ggamtyYXRvY2ggIDY3NDY3NiBEZWMgMTEgMTY6MjMgZ2RiLTYu NS0xMy5mYzYuczM5MHguc3VtCi0tcnctcnctci0tICAxIGprcmF0b2NoIGprcmF0b2NoIDI5NzQ4 ODAgRGVjIDExIDE2OjIzIGdkYi02LjUtMTMuZmM2Lng4Nl82NC5sb2cKLS1ydy1ydy1yLS0gIDEg amtyYXRvY2ggamtyYXRvY2ggIDY3MzM5NiBEZWMgMTEgMTY6MjMgZ2RiLTYuNS0xMy5mYzYueDg2 XzY0LnN1bQotCgpkaWZmIC0tZ2l0IGEvZ2RicGF0Y2hubyBiL2dkYnBhdGNobm8KZGVsZXRlZCBm aWxlIG1vZGUgMTAwNzU1CmluZGV4IGIzNTU2MTguLjAwMDAwMDAKLS0tIGEvZ2RicGF0Y2hubwor KysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotIyEgL2Jpbi9zaAotIyAkSWQ6IGdkYnBhdGNo bm8sdiAxLjEgMjAwNi8xMi8yOSAyMDozNTo0MyBqa3JhdG9jaCBFeHAgJAotIyBQcmludCB0aGUg Zmlyc3QgdW51c2VkIHBhdGNoIG51bWJlciBhY3Jvc3MgYWxsIHRoZSBjdXJyZW50IHBhY2thZ2Un cyBicmFuY2hlcy4KLQotZWNobyAkWzErJChjYXQgLi4vKi8qLnNwZWN8c2VkIC1uICdzL15bIyAl XSpwYXRjaFwoWzAtOV0qXCkuKiQvXDEvcCd8c29ydCAtcm51fGhlYWQgLW4xKV0KCmRpZmYgLS1n aXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCA4MmNlZDYyLi42YzJkNzM0IDEwMDY0NAotLS0g YS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEgKzEgQEAKLTI2YzY0MzI1MjFlZmEyOTZiZjhi ZGNhZTQ2NWMwNDhiICBnZGItNy4xLjkwLjIwMTAwNzIxLnRhci5iejIKKzY0MjYwZTZjNTY5Nzll ZTc1MGEwMTA1NWYxNjA5MWE1ICBnZGItNy4yLnRhci5iejIK