From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Rebase to FSF GDB 7.6.50.20130731 (pre-7.6 snapshot). Date: Sat, 27 Jun 2026 23:56:17 GMT Message-ID: <178260457782.1.18055807752573713650.rpms-gdb-872aab074e11@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 872aab074e11aed36687613518976ae0d243f832 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogODcyYWFiMDc0ZTExYWVkMzY2ODc2MTM1MTg5 NzZhZTBkMjQzZjgzMgpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KRGF0ZSAgIDogMjAxMy0wOC0wMlQyMjoyNjowMyswMjowMApTdGF0cyAgOiArMTU1 Mi8tMTM1NDYgaW4gNDYgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0 Lm9yZy9ycG1zL2dkYi9jLzg3MmFhYjA3NGUxMWFlZDM2Njg3NjEzNTE4OTc2YWUwZDI0M2Y4MzI/ YnJhbmNoPWdkYi0xNy4yLXJlYmFzZS1mNDQKCkxvZzoKUmViYXNlIHRvIEZTRiBHREIgNy42LjUw LjIwMTMwNzMxIChwcmUtNy42IHNuYXBzaG90KS4KCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9y ZSBiLy5naXRpZ25vcmUKaW5kZXggNzU2NDk2NS4uNTJiMDQyYiAxMDA2NDQKLS0tIGEvLmdpdGln bm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0xLDIgKzEsMyBAQAogL2dkYi1saWJzdGRjKystdjMt cHl0aG9uLXIxNTU5NzgudGFyLmJ6MgotL2dkYi03LjYudGFyLmJ6MgorL2dkYi03LjYuNTAuMjAx MzA2MjQudGFyLmJ6MgorL2dkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLnRhci5iejIKCmRpZmYgLS1n aXQgYS9nZGItNi4zLW1hcHBpbmctemVyby1pbm9kZS10ZXN0LnBhdGNoIGIvZ2RiLTYuMy1tYXBw aW5nLXplcm8taW5vZGUtdGVzdC5wYXRjaAppbmRleCA3M2QyNDQ2Li4yYzNmMDVhIDEwMDY0NAot LS0gYS9nZGItNi4zLW1hcHBpbmctemVyby1pbm9kZS10ZXN0LnBhdGNoCisrKyBiL2dkYi02LjMt bWFwcGluZy16ZXJvLWlub2RlLXRlc3QucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogZ2Ri LTYuOC41MC4yMDA5MDMwMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLXNobWlkMC5leHAK K0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dj b3JlLXNobWlkMC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwMzAyL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZ2NvcmUtc2htaWQwLmV4cAkyMDA5LTA2LTI5IDE2OjI0OjM2LjAwMDAwMDAw MCArMDIwMAotQEAgLTAsMCArMSw5NiBAQAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2NvcmUtc2htaWQwLmV4cAkyMDEzLTA4LTAyIDIyOjI0OjA0 Ljc0Nzc0NTEzMyArMDIwMAorQEAgLTAsMCArMSwxMDEgQEAKICsjIENvcHlyaWdodCAyMDA3LCAy MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAg LTQ2LDE2ICs0NiwyMSBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDMwMi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2djb3JlLXNobWlkMC5leHAKICtnZGJfYnJlYWtwb2ludCAiaW5pdGlhbGl6ZWQi CiArZ2RiX2JyZWFrcG9pbnQgInVucmVzb2x2ZWQiCiArCisrc2V0IG9sZHRpbWVvdXQgJHRpbWVv dXQKKytzZXQgdGltZW91dCBbZXhwciAkb2xkdGltZW91dCArIDEyMF0KKysKICtzZXQgdGVzdCAi Q29udGludWUgdG8gaW5pdGlhbGl6ZWQuIgogK2dkYl90ZXN0X211bHRpcGxlICJjb250aW51ZSIg JHRlc3QgewogKyAgICAtcmUgIkJyZWFrcG9pbnQgLiosIGluaXRpYWxpemVkIC4qIGF0IC4qXHJc biRnZGJfcHJvbXB0ICQiIHsKICsJcGFzcyAkdGVzdAogKyAgICB9CiArICAgIC1yZSAiQnJlYWtw b2ludCAuKiwgdW5yZXNvbHZlZCAuKiBhdCAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXNldCB0 aW1lb3V0ICRvbGR0aW1lb3V0CiArCXVuc3VwcG9ydGVkICR0ZXN0CiArCXJldHVybiAtMQogKyAg ICB9CiArfQorK3NldCB0aW1lb3V0ICRvbGR0aW1lb3V0CiArCiArc2V0IGVzY2FwZWRmaWxlbmFt ZSBbc3RyaW5nX3RvX3JlZ2V4cCAke29iamRpcn0vJHtzdWJkaXJ9L2djb3JlLXNobWlkMC50ZXN0 XQogKwpAQCAtOTksMTEgKzEwNCwxMSBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDMwMi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLXNobWlkMC5leHAKICsJZmFpbCAkdGVzdAogKyAgICB9 CiArfQotSW5kZXg6IGdkYi02LjguNTAuMjAwOTAzMDIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9n Y29yZS1zaG1pZDAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZ2NvcmUtc2htaWQwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwMzAy L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2NvcmUtc2htaWQwLmMJMjAwOS0wNi0yOSAxNjoyMjo0 OS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMTIzIEBACisrKysgZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1zaG1pZDAuYwkyMDEzLTA4LTAy IDIyOjIyOjE3LjU3MzU5OTQ5NiArMDIwMAorQEAgLTAsMCArMSwxMjcgQEAKICsvKiBDb3B5cmln aHQgMjAwNywgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsgICBUaGlz IGZpbGUgaXMgcGFydCBvZiBHREIuCkBAIC0xNDAsMTQgKzE0NSwxOCBAQCBJbmRleDogZ2RiLTYu OC41MC4yMDA5MDMwMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLXNobWlkMC5jCiArCiAr I2RlZmluZSBUSU1FT1VUX1NFQyAxMAogKworK3N0YXRpYyB2b2xhdGlsZSBpbnQgdjsKKysKICtz dGF0aWMgdm9pZAogK2luaXRpYWxpemVkICh2b2lkKQogK3sKKysgIHYrKzsKICt9CiArCiArc3Rh dGljIHZvaWQKICt1bnJlc29sdmVkICh2b2lkKQogK3sKKysgIHYrKzsKICt9CiArCiAraW50CkBA IC0xODksNyArMTk4LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTAzMDIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9nY29yZS1zaG1pZDAuYwogKwkgICAgfQogKwogKwkgIHByaW50ZiAoIlByb2Js ZW0gaXMgbm90IHJlcHJvZHVjaWJsZSBvbiB0aGlzIGtlcm5lbCAoYXR0ZW1wdCAlZCwgIgotKwkJ ICAicm91bmQgJWQpKVxuIiwgYXR0ZW1wdCwgcm91bmQpOworKwkJICAicm91bmQgJWQpXG4iLCBh dHRlbXB0LCByb3VuZCk7CiArCSAgdW5yZXNvbHZlZCAoKTsKICsJICBleGl0ICgxKTsKICsJfQoK ZGlmZiAtLWdpdCBhL2dkYi02LjMtcmVhZG5ldmVyLTIwMDUwOTA3LnBhdGNoIGIvZ2RiLTYuMy1y ZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKaW5kZXggNWZiNTFiMi4uOTQ0ZTEwNCAxMDA2NDQKLS0t IGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKKysrIGIvZ2RiLTYuMy1yZWFkbmV2 ZXItMjAwNTA5MDcucGF0Y2gKQEAgLTExLDExICsxMSwxMSBAQAogCiAgICAgICAgICogZ2RiLnRl eGluZm8gKEZpbGUgT3B0aW9ucyk6IERvY3VtZW50IC0tcmVhZG5ldmVyLgogCi1JbmRleDogZ2Ri LTcuNS41MC4yMDEzMDIxNS9nZGIvZG9jL2dkYi50ZXhpbmZvCitJbmRleDogZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL2RvYy9nZGIudGV4aW5mbwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu NTAuMjAxMzAyMTUub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTMtMDItMTUgMjI6MzE6Mzcu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTMtMDItMTUgMjI6MzQ6MjIuMzgxMTY1NDQzICswMTAwCi1AQCAtMTAyNiw2ICsxMDI2 LDEyIEBAIFJlYWQgZWFjaCBzeW1ib2wgZmlsZSdzIGVudGlyZSBzeW1ib2wgdGEKKy0tLSBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMy0wOC0wMiAx NjoxMjo1NC45NzAwODU5NDIgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIv ZG9jL2dkYi50ZXhpbmZvCTIwMTMtMDgtMDIgMTY6MjA6MjEuMTY0Njg3ODg2ICswMjAwCitAQCAt MTAzMCw2ICsxMDMwLDEyIEBAIFJlYWQgZWFjaCBzeW1ib2wgZmlsZSdzIGVudGlyZSBzeW1ib2wg dGEKICB0aGUgZGVmYXVsdCwgd2hpY2ggaXMgdG8gcmVhZCBpdCBpbmNyZW1lbnRhbGx5IGFzIGl0 IGlzIG5lZWRlZC4KICBUaGlzIG1ha2VzIHN0YXJ0dXAgc2xvd2VyLCBidXQgbWFrZXMgZnV0dXJl IG9wZXJhdGlvbnMgZmFzdGVyLgogIApAQCAtMjgsMTEgKzI4LDExIEBAIEluZGV4OiBnZGItNy41 LjUwLjIwMTMwMjE1L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAZW5kIHRhYmxlCiAgCiAgQG5vZGUg TW9kZSBPcHRpb25zCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbWFpbi5jCitJbmRl eDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL21haW4uYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvbWFpbi5jCTIwMTMtMDItMTUgMjI6MzE6MzcuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbWFpbi5jCTIwMTMtMDIt MTUgMjI6MzQ6MjIuMzgyMTY1NDQ1ICswMTAwCi1AQCAtNDQ3LDYgKzQ0Nyw3IEBAIGNhcHR1cmVk X21haW4gKHZvaWQgKmRhdGEpCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIv bWFpbi5jCTIwMTMtMDgtMDIgMTY6MTI6NTQuOTc0MDg1OTQ4ICswMjAwCisrKysgZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMvZ2RiL21haW4uYwkyMDEzLTA4LTAyIDE2OjIwOjUzLjcwNDczMTQ0OSAr MDIwMAorQEAgLTQ1OSw2ICs0NTksNyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogICAg ICAgIHsieGRiIiwgbm9fYXJndW1lbnQsICZ4ZGJfY29tbWFuZHMsIDF9LAogICAgICAgIHsiZGJ4 Iiwgbm9fYXJndW1lbnQsICZkYnhfY29tbWFuZHMsIDF9LAogICAgICAgIHsicmVhZG5vdyIsIG5v X2FyZ3VtZW50LCAmcmVhZG5vd19zeW1ib2xfZmlsZXMsIDF9LApAQCAtNDAsMTkgKzQwLDE5IEBA IEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9tYWluLmMKICAgICAgICB7InIiLCBub19h cmd1bWVudCwgJnJlYWRub3dfc3ltYm9sX2ZpbGVzLCAxfSwKICAgICAgICB7InF1aWV0Iiwgbm9f YXJndW1lbnQsICZxdWlldCwgMX0sCiAgICAgICAgeyJxIiwgbm9fYXJndW1lbnQsICZxdWlldCwg MX0sCi1AQCAtMTE2NSw2ICsxMTY2LDcgQEAgT3B0aW9uczpcblxuXAotICAgZnB1dHNfdW5maWx0 ZXJlZCAoXygiXAotICAgLS1xdWlldCAgICAgICAgICAgIERvIG5vdCBwcmludCB2ZXJzaW9uIG51 bWJlciBvbiBzdGFydHVwLlxuXAorQEAgLTExNTQsNiArMTE1NSw3IEBAIFNlbGVjdGlvbiBvZiBk ZWJ1Z2dlZSBhbmQgaXRzIGZpbGVzOlxuXG4KKyAgIC0tc2U9RklMRSAgICAgICAgICBVc2UgRklM RSBhcyBzeW1ib2wgZmlsZSBhbmQgZXhlY3V0YWJsZSBmaWxlLlxuXAorICAgLS1zeW1ib2xzPVNZ TUZJTEUgIFJlYWQgc3ltYm9scyBmcm9tIFNZTUZJTEUuXG5cCiAgICAtLXJlYWRub3cgICAgICAg ICAgRnVsbHkgcmVhZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXAogKyAgLS1yZWFk bmV2ZXIgICAgICAgIERvIG5vdCByZWFkIHN5bWJvbCBmaWxlcy5cblwKKyAgIC0td3JpdGUgICAg ICAgICAgICBTZXQgd3JpdGluZyBpbnRvIGV4ZWN1dGFibGUgYW5kIGNvcmUgZmlsZXMuXG5cblwK ICAiKSwgc3RyZWFtKTsKICAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKLSAgIC0tc2U9RklMRSAg ICAgICAgICBVc2UgRklMRSBhcyBzeW1ib2wgZmlsZSBhbmQgZXhlY3V0YWJsZSBmaWxlLlxuXAot SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3N5bWZpbGUuYworSW5kZXg6IGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi9zeW1maWxlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUw LjIwMTMwMjE1Lm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDEzLTAyLTAxIDIwOjM5OjAzLjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3N5bWZpbGUuYwkyMDEzLTAyLTE1 IDIyOjM0OjIyLjM4MzE2NTQ0NyArMDEwMAotQEAgLTgxLDYgKzgxLDcgQEAgc3RhdGljIHZvaWQg Y2xlYXJfc3ltdGFiX3VzZXJzX2NsZWFudXAgKAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz Lm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDEzLTA4LTAyIDE2OjEyOjU0Ljk3NTA4NTk0OSArMDIwMAor KysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9zeW1maWxlLmMJMjAxMy0wOC0wMiAxNjoy MDoyMS4xNjU2ODc4ODggKzAyMDAKK0BAIC04Miw2ICs4Miw3IEBAIHN0YXRpYyB2b2lkIGNsZWFy X3N5bXRhYl91c2Vyc19jbGVhbnVwICgKICAKICAvKiBHbG9iYWwgdmFyaWFibGVzIG93bmVkIGJ5 IHRoaXMgZmlsZS4gICovCiAgaW50IHJlYWRub3dfc3ltYm9sX2ZpbGVzOwkvKiBSZWFkIGZ1bGwg c3ltYm9scyBpbW1lZGlhdGVseS4gICovCkBAIC02MCwxOSArNjAsMTkgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL3N5bWZpbGUuYwogIAogIC8qIEZ1bmN0aW9ucyB0aGlzIGZpbGUg ZGVmaW5lcy4gICovCiAgCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZHdhcmYycmVh ZC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2R3YXJmMnJlYWQuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIw MTMtMDItMTUgMjI6MzE6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvZHdhcmYycmVhZC5jCTIwMTMtMDItMTUgMjI6MzQ6MzQuNDc5MTgxNTg0ICswMTAwCi1A QCAtNjgsNiArNjgsNyBAQAotICNpbmNsdWRlICJnZGJfYmZkLmgiCistLS0gZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTMtMDgtMDIgMTY6MTI6NTQuOTc5 MDg1OTU0ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2R3YXJmMnJlYWQu YwkyMDEzLTA4LTAyIDE2OjIwOjM3LjE5MDcwOTY4OSArMDIwMAorQEAgLTY5LDYgKzY5LDcgQEAK ICAjaW5jbHVkZSAiZi1sYW5nLmgiCiAgI2luY2x1ZGUgInNvdXJjZS5oIgorICNpbmNsdWRlICJm aWxlc3R1ZmYuaCIKICsjaW5jbHVkZSAidG9wLmgiCiAgCiAgI2luY2x1ZGUgPGZjbnRsLmg+CiAg I2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC0xNzkzLDggKzE3OTQsOSBAQCBkd2FyZjJfaGFz X2luZm8gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlCitAQCAtMTgzNCw4ICsxODM1LDkgQEAgZHdh cmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHZvaWQgKikgbmFtZXMpOwogICAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+ b2JqZmlsZSA9IG9iamZpbGU7CiAgICAgIH0KQEAgLTg0LDExICs4NCwxMSBAQCBJbmRleDogZ2Ri LTcuNS41MC4yMDEzMDIxNS9nZGIvZHdhcmYycmVhZC5jCiAgfQogIAogIC8qIFdoZW4gbG9hZGlu ZyBzZWN0aW9ucywgd2UgbG9vayBlaXRoZXIgZm9yIHVuY29tcHJlc3NlZCBzZWN0aW9uIG9yIGZv cgotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RvcC5oCitJbmRleDogZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMvZ2RiL3RvcC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEz MDIxNS5vcmlnL2dkYi90b3AuaAkyMDEzLTAxLTA3IDE3OjQwOjM2LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RvcC5oCTIwMTMtMDItMTUgMjI6MzQ6MjIuMzg5 MTY1NDU5ICswMTAwCi1AQCAtNTgsNiArNTgsNyBAQCBleHRlcm4gdm9pZCBzZXRfcHJvbXB0IChj b25zdCBjaGFyICpzKTsKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi90b3Au aAkyMDEzLTA4LTAyIDE2OjEyOjU0Ljk4MDA4NTk1NiArMDIwMAorKysrIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi90b3AuaAkyMDEzLTA4LTAyIDE2OjIwOjIxLjE2OTY4Nzg5MyArMDIwMAor QEAgLTU5LDYgKzU5LDcgQEAgZXh0ZXJuIHZvaWQgc2V0X3Byb21wdCAoY29uc3QgY2hhciAqcyk7 CiAgCiAgLyogRnJvbSByYW5kb20gcGxhY2VzLiAgKi8KICBleHRlcm4gaW50IHJlYWRub3dfc3lt Ym9sX2ZpbGVzOwoKZGlmZiAtLWdpdCBhL2dkYi02LjMtdGVzdC1zZWxmLTIwMDUwMTEwLnBhdGNo IGIvZ2RiLTYuMy10ZXN0LXNlbGYtMjAwNTAxMTAucGF0Y2gKaW5kZXggYTNhZGEwOC4uM2E1NzQ1 YiAxMDA2NDQKLS0tIGEvZ2RiLTYuMy10ZXN0LXNlbGYtMjAwNTAxMTAucGF0Y2gKKysrIGIvZ2Ri LTYuMy10ZXN0LXNlbGYtMjAwNTAxMTAucGF0Y2gKQEAgLTYsOTYgKzYsMzAgQEAKICAgICAgICAg KiBnZGIuZ2RiL3hmdWxscGF0aC5leHA6IERpdHRvLgogICAgICAgICAqIGdkYi5nZGIvb2JzZXJ2 ZXIuZXhwOiBEaXR0by4KIAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZ2RiL2NvbXBsYWludHMuZXhwCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL3Rlc3RzdWl0ZS9saWIvc2VsZnRlc3Qtc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNi44LjUwLjIwMDkwMjI2Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL2NvbXBsYWludHMu ZXhwCTIwMDktMDEtMDMgMDY6NTg6MDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTYuOC41MC4y MDA5MDIyNi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvY29tcGxhaW50cy5leHAJMjAwOS0wMi0yNiAy MjoxMDo0OC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0zMDIsMTMgKzMwMiwxMyBAQCBwcm9jIGZpbmRf Z2RiIHsgYXJnIH0gewotIHNldCBHREJfRlVMTFBBVEggW2ZpbmRfZ2RiICRHREJdCi0gCi0gIyBS ZW1vdmUgYW55IG9sZCBjb3B5IGx5aW5nIGFyb3VuZC4KLS1yZW1vdGVfZmlsZSBob3N0IGRlbGV0 ZSB4JHRvb2wKLSsjcmVtb3RlX2ZpbGUgaG9zdCBkZWxldGUgeCR0b29sCi0gCi0gZ2RiX3N0YXJ0 Ci0gCi0tc2V0IGZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICRHREJfRlVMTFBBVEggeCR0b29s XQotKyNzZXQgZmlsZSBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgJEdEQl9GVUxMUEFUSCB4JHRvb2xd Ci0gCi0tc2V0IHNldHVwX3Jlc3VsdCBbc2V0dXBfdGVzdCAkZmlsZSBdCi0rc2V0IHNldHVwX3Jl c3VsdCBbc2V0dXBfdGVzdCAkR0RCX0ZVTExQQVRIIF0KLSBpZiB7JHNldHVwX3Jlc3VsdCA8MH0g dGhlbiB7Ci0gICAgIHJldHVybiAtMQotIH0KLUBAIC0zMTksNCArMzE5LDQgQEAgdGVzdF9zaG9y dF9jb21wbGFpbnRzCi0gdGVzdF9lbXB0eV9jb21wbGFpbnRzCi0gCi0gZ2RiX2V4aXQ7Ci0tY2F0 Y2ggInJlbW90ZV9maWxlIGhvc3QgZGVsZXRlICRmaWxlIjsKLSsjY2F0Y2ggInJlbW90ZV9maWxl IGhvc3QgZGVsZXRlICRmaWxlIjsKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwMjI2L2dkYi90ZXN0 c3VpdGUvZ2RiLmdkYi9vYnNlcnZlci5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIw MDkwMjI2Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL29ic2VydmVyLmV4cAkyMDA5LTAyLTE3 IDIwOjUyOjI3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3Rl c3RzdWl0ZS9nZGIuZ2RiL29ic2VydmVyLmV4cAkyMDA5LTAyLTI2IDIyOjExOjQwLjAwMDAwMDAw MCArMDEwMAotQEAgLTI1OCwxMyArMjU4LDEzIEBAIHByb2MgZmluZF9nZGIgeyBhcmcgfSB7Ci0g c2V0IEdEQl9GVUxMUEFUSCBbZmluZF9nZGIgJEdEQl0KLSAKLSAjIFJlbW92ZSBhbnkgb2xkIGNv cHkgbHlpbmcgYXJvdW5kLgotLXJlbW90ZV9maWxlIGhvc3QgZGVsZXRlIHgkdG9vbAotKyNyZW1v dGVfZmlsZSBob3N0IGRlbGV0ZSB4JHRvb2wKLSAKLSBnZGJfc3RhcnQKLS1zZXQgZmlsZSBbcmVt b3RlX2Rvd25sb2FkIGhvc3QgJEdEQl9GVUxMUEFUSCB4JHRvb2xdCi0tc2V0IHJlc3VsdCBbdGVz dF9vYnNlcnZlciAkZmlsZV07Ci0rI3NldCBmaWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCAkR0RC X0ZVTExQQVRIIHgkdG9vbF0KLStzZXQgcmVzdWx0IFt0ZXN0X29ic2VydmVyICRHREJfRlVMTFBB VEhdOwotIGdkYl9leGl0OwotLWNhdGNoICJyZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSAkZmlsZSI7 Ci0rI2NhdGNoICJyZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSAkZmlsZSI7Ci0gCi0gaWYgeyRyZXN1 bHQgPDB9IHRoZW4gewotICAgICB3YXJuaW5nICJDb3VsZG4ndCB0ZXN0IHNlbGYiCi1JbmRleDog Z2RiLTYuOC41MC4yMDA5MDIyNi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDIyNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2Ri LmdkYi9zZWxmdGVzdC5leHAJMjAwOS0wMi0yNiAyMjowOTo1OS4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNi44LjUwLjIwMDkwMjI2L2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAJ MjAwOS0wMi0yNiAyMjoxMDo0OC4wMDAwMDAwMDAgKzAxMDAKLUBAIC01NTEsMTMgKzU1MSwxMyBA QCBwcm9jIGZpbmRfZ2RiIHsgYXJnIH0gewotIHNldCBHREJfRlVMTFBBVEggW2ZpbmRfZ2RiICRH REJdCi0gCi0gIyBSZW1vdmUgYW55IG9sZCBjb3B5IGx5aW5nIGFyb3VuZC4KLS1yZW1vdGVfZmls ZSBob3N0IGRlbGV0ZSB4JHRvb2wKLSsjcmVtb3RlX2ZpbGUgaG9zdCBkZWxldGUgeCR0b29sCi0g Ci0gZ2RiX3N0YXJ0Ci0tc2V0IGZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICRHREJfRlVMTFBB VEggeCR0b29sXQotLXNldCByZXN1bHQgW3Rlc3Rfd2l0aF9zZWxmICRmaWxlXTsKLSsjc2V0IGZp bGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICRHREJfRlVMTFBBVEggeCR0b29sXQotK3NldCByZXN1 bHQgW3Rlc3Rfd2l0aF9zZWxmICRHREJfRlVMTFBBVEhdOwotIGdkYl9leGl0OwotLWNhdGNoICJy ZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSAkZmlsZSI7Ci0rI2NhdGNoICJyZW1vdGVfZmlsZSBob3N0 IGRlbGV0ZSAkZmlsZSI7Ci0gCi0gaWYgeyRyZXN1bHQgPDB9IHRoZW4gewotICAgICB3YXJuaW5n ICJDb3VsZG4ndCB0ZXN0IHNlbGYiCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDIyNi9nZGIvdGVz dHN1aXRlL2dkYi5nZGIveGZ1bGxwYXRoLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAu MjAwOTAyMjYub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5nZGIveGZ1bGxwYXRoLmV4cAkyMDA5LTAx LTAzIDA2OjU4OjA0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi02LjguNTAuMjAwOTAyMjYvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZ2RiL3hmdWxscGF0aC5leHAJMjAwOS0wMi0yNiAyMjoxMDo0OC4wMDAw MDAwMDAgKzAxMDAKLUBAIC0xNzksMTMgKzE3OSwxMyBAQCBwcm9jIGZpbmRfZ2RiIHsgYXJnIH0g ewotIHNldCBHREJfRlVMTFBBVEggW2ZpbmRfZ2RiICRHREJdCi0gCi0gIyBSZW1vdmUgYW55IG9s ZCBjb3B5IGx5aW5nIGFyb3VuZC4KLS1yZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSB4JHRvb2wKLSsj cmVtb3RlX2ZpbGUgaG9zdCBkZWxldGUgeCR0b29sCi0gCi0gZ2RiX3N0YXJ0Ci0tc2V0IGZpbGUg W3JlbW90ZV9kb3dubG9hZCBob3N0ICRHREJfRlVMTFBBVEggeCR0b29sXQotLXNldCByZXN1bHQg W3Rlc3Rfd2l0aF9zZWxmICRmaWxlXTsKLSsjc2V0IGZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0 ICRHREJfRlVMTFBBVEggeCR0b29sXQotK3NldCByZXN1bHQgW3Rlc3Rfd2l0aF9zZWxmICRHREJf RlVMTFBBVEhdOwotIGdkYl9leGl0OwotLWNhdGNoICJyZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSAk ZmlsZSI7Ci0rI2NhdGNoICJyZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSAkZmlsZSI7Ci0gCi0gaWYg eyRyZXN1bHQgPDB9IHRoZW4gewotICAgICB3YXJuaW5nICJDb3VsZG4ndCB0ZXN0IHNlbGYiCist LS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9zZWxmdGVz dC1zdXBwb3J0LmV4cAkyMDEzLTA4LTAyIDE2OjExOjI5LjE5NTk3MTkyMiArMDIwMAorKysrIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvbGliL3NlbGZ0ZXN0LXN1cHBvcnQu ZXhwCTIwMTMtMDgtMDIgMTY6MTI6MjAuNDA0MDQwMzc4ICswMjAwCitAQCAtMTMwLDE4ICsxMzAs MTggQEAgcHJvYyBkb19zZWxmX3Rlc3RzIHtmdW5jdGlvbiBib2R5fSB7CisgICAgIHNldCBHREJf RlVMTFBBVEggW2ZpbmRfZ2RiICRHREJdCisgCisgICAgICMgUmVtb3ZlIGFueSBvbGQgY29weSBs eWluZyBhcm91bmQuCistICAgIHJlbW90ZV9maWxlIGhvc3QgZGVsZXRlIHgkdG9vbAorKyAgICAj cmVtb3RlX2ZpbGUgaG9zdCBkZWxldGUgeCR0b29sCisgCisgICAgIGdkYl9zdGFydAorLSAgICBz ZXQgZmlsZSBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgJEdEQl9GVUxMUEFUSCB4JHRvb2xdCisrICAg ICNzZXQgZmlsZSBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgJEdEQl9GVUxMUEFUSCB4JHRvb2xdCisg CistICAgIHNldCByZXN1bHQgW3NlbGZ0ZXN0X3NldHVwICRmaWxlICRmdW5jdGlvbl0KKysgICAg c2V0IHJlc3VsdCBbc2VsZnRlc3Rfc2V0dXAgJEdEQl9GVUxMUEFUSCAkZnVuY3Rpb25dCisgICAg IGlmIHskcmVzdWx0ID09IDB9IHRoZW4geworIAlzZXQgcmVzdWx0IFt1cGxldmVsICRib2R5XQor ICAgICB9CisgCisgICAgIGdkYl9leGl0CistICAgIGNhdGNoICJyZW1vdGVfZmlsZSBob3N0IGRl bGV0ZSAkZmlsZSIKKysgICAgI2NhdGNoICJyZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSAkZmlsZSIK KyAKKyAgICAgaWYgeyRyZXN1bHQgPCAwfSB0aGVuIHsKKyAJd2FybmluZyAiQ291bGRuJ3QgdGVz dCBzZWxmIgoKZGlmZiAtLWdpdCBhL2dkYi02LjUtYnoxODUzMzctcmVzb2x2ZS10bHMtd2l0aG91 dC1kZWJ1Z2luZm8tdjIucGF0Y2ggYi9nZGItNi41LWJ6MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhv dXQtZGVidWdpbmZvLXYyLnBhdGNoCmluZGV4IGZhMmY0ZWQuLjFjOGY5OWIgMTAwNjQ0Ci0tLSBh L2dkYi02LjUtYnoxODUzMzctcmVzb2x2ZS10bHMtd2l0aG91dC1kZWJ1Z2luZm8tdjIucGF0Y2gK KysrIGIvZ2RiLTYuNS1iejE4NTMzNy1yZXNvbHZlLXRscy13aXRob3V0LWRlYnVnaW5mby12Mi5w YXRjaApAQCAtMzIsMjEgKzMyLDIzIEBAIGdsaWJjLWRlYnVnaW5mby0yLjctMi54ODZfNjQ6IC91 c3IvbGliL2RlYnVnL2xpYjY0L2xpYmMuc28uNi5kZWJ1ZzoKICAgPDgxYTI+ICAgICBEV19BVF9u YW1lICAgICAgICA6IChpbmRpcmVjdCBzdHJpbmcsIG9mZnNldDogMHgyODBlKTogX19lcnJub19s b2NhdGlvbgogICA8ODFhOD4gICAgIERXX0FUX01JUFNfbGlua2FnZV9uYW1lOiAoaW5kaXJlY3Qg c3RyaW5nLCBvZmZzZXQ6IDB4MjgwOCk6ICpfX0dJX19fZXJybm9fbG9jYXRpb24KIAotLS0tIGEv Z2RiL3ByaW50Y21kLmMKLSsrKyBiL2dkYi9wcmludGNtZC5jCi1AQCAtOTY3LDYgKzk2Nyw4IEBA IHByaW50X2NvbW1hbmRfMSAoY2hhciAqZXhwLCBpbnQgaW5zcGVjdCwgaW50IHZvaWRwcmludCkK K0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcHJpbnRjbWQuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3ByaW50Y21kLmMJMjAxMy0w OC0wMiAxNjoyMToxMy42NjU3NTgzMjQgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvcHJpbnRjbWQuYwkyMDEzLTA4LTAyIDE2OjIyOjI0LjM2Nzg1MzMyMiArMDIwMAorQEAg LTk4Miw2ICs5ODIsOCBAQCBwcmludF9jb21tYW5kXzEgKGNvbnN0IGNoYXIgKmV4cCwgaW50IHZv CiAgCiAgICBpZiAoZXhwICYmICpleHApCiAgICAgIHsKICsgICAgICBpZiAoc3RyY21wIChleHAs ICJlcnJubyIpID09IDApCiArCWV4cCA9ICIqKChpbnQgKigqKSAodm9pZCkpIF9fZXJybm9fbG9j YXRpb24pICgpIjsKICAgICAgICBleHByID0gcGFyc2VfZXhwcmVzc2lvbiAoZXhwKTsKLSAgICAg ICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJmV4cHIp OwotICAgICAgIGNsZWFudXAgPSAxOwotSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1lcnJuby5jCisgICAgICAgbWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29u dGVudHMsICZleHByKTsKKyAgICAgICB2YWwgPSBldmFsdWF0ZV9leHByZXNzaW9uIChleHByKTsK K0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIv ZHcyLWVycm5vLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9k dzItZXJybm8uYwkyMDExLTAzLTI5IDEwOjU1OjM1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uYwky MDEzLTA4LTAyIDE2OjIxOjEzLjY2NTc1ODMyNCArMDIwMAogQEAgLTAsMCArMSwyOCBAQAogKy8q IFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCkBAIC03 NiwxMCArNzgsMTAgQEAgSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3 Mi1lcnJuby5jCiArCiArICByZXR1cm4gMDsJLyogYnJlYWtwb2ludCAqLwogK30KLUluZGV4OiBn ZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uZXhwCitJbmRleDogZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lcnJuby5l eHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8u ZXhwCTIwMTEtMDMtMjkgMTA6NTU6MzUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lcnJuby5leHAJMjAxMy0w OC0wMiAxNjoyMToxMy42NjU3NTgzMjQgKzAyMDAKIEBAIC0wLDAgKzEsNjAgQEAKICsjIENvcHly aWdodCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwoKZGlmZiAtLWdpdCBh L2dkYi02LjUtYnoyMTgzNzktc29saWItdHJhbXBvbGluZS1sb29rdXAtbG9jay1maXgucGF0Y2gg Yi9nZGItNi41LWJ6MjE4Mzc5LXNvbGliLXRyYW1wb2xpbmUtbG9va3VwLWxvY2stZml4LnBhdGNo CmluZGV4IDY4Mzk2NzguLjBiMzkzMWYgMTAwNjQ0Ci0tLSBhL2dkYi02LjUtYnoyMTgzNzktc29s aWItdHJhbXBvbGluZS1sb29rdXAtbG9jay1maXgucGF0Y2gKKysrIGIvZ2RiLTYuNS1iejIxODM3 OS1zb2xpYi10cmFtcG9saW5lLWxvb2t1cC1sb2NrLWZpeC5wYXRjaApAQCAtMSwxMSArMSwxMSBA QAogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0y MTgzNzkKIAogCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc3ltdGFiLmMKK0luZGV4 OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvc3ltdGFiLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3N5bXRhYi5jCTIwMTMtMDEtMTggMjM6NTM6MjIu MDA5Nzk3Nzg4ICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc3ltdGFiLmMJMjAx My0wMS0xOCAyMzo1Mzo1MS4wNDQ4NDY3NzcgKzAxMDAKLUBAIC0yMzU2LDYgKzIzNTYsMTMgQEAg ZmluZF9wY19zZWN0X2xpbmUgKENPUkVfQUREUiBwYywgc3RydWN0CistLS0gZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMub3JpZy9nZGIvc3ltdGFiLmMJMjAxMy0wOC0wMiAxNzowNjoxOS44NTQ2NjM4 MDEgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvc3ltdGFiLmMJMjAxMy0w OC0wMiAxNzowNzowNC4zMTc3MjE0NzEgKzAyMDAKK0BAIC0yMzI3LDYgKzIzMjcsMTMgQEAgZmlu ZF9wY19zZWN0X2xpbmUgKENPUkVfQUREUiBwYywgc3RydWN0CiAgCSAgICAgU1lNQk9MX0xJTktB R0VfTkFNRSAobXN5bWJvbCkpOyAqLwogIAkgIDsKICAJLyogZmFsbCB0aHJvdWdoICovCkBAIC0x NCw3ICsxNCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zeW10YWIuYwogKwkg ICBBdm9pZCBgZmluZF9wY19zZWN0X2xpbmUnPC0+YGZpbmRfcGNfbGluZScgaW5maW5pdGUgbG9v cC4KICsJICAgUmVkIEhhdCBCdWcgMjE4Mzc5LiAgKi8KICsJZWxzZSBpZiAoU1lNQk9MX1ZBTFVF IChtZnVuc3ltKSA9PSBwYykKLSsJICB3YXJuaW5nICgiSW4gc3R1YiBmb3IgJXMgKDB4JXMpOyBp bnRlcmxvY2tlZCwgcGxlYXNlIHN1Ym1pdCB0aGUgYmluYXJ5IHRvIGh0dHA6Ly9idWd6aWxsYS5y ZWRoYXQuY29tIiwgU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbCksIHBhZGRyZXNzICh0YXJn ZXRfZ2RiYXJjaCAoKSwgcGMpKTsKKysJICB3YXJuaW5nICgiSW4gc3R1YiBmb3IgJXMgKDB4JXMp OyBpbnRlcmxvY2tlZCwgcGxlYXNlIHN1Ym1pdCB0aGUgYmluYXJ5IHRvIGh0dHA6Ly9idWd6aWxs YS5yZWRoYXQuY29tIiwgU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbC5taW5zeW0pLCBwYWRk cmVzcyAodGFyZ2V0X2dkYmFyY2ggKCksIHBjKSk7CiArCS8qIGZhbGwgdGhyb3VnaCAqLwogIAll bHNlCiAgCSAgcmV0dXJuIGZpbmRfcGNfbGluZSAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1mdW5z eW0pLCAwKTsKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLWNvcmUtYXMtYXJn LnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaAppbmRleCBl ZmFjYWI1Li5kZmQ1YTFlIDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLWNvcmUt YXMtYXJnLnBhdGNoCisrKyBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0 Y2gKQEAgLTU4LDEwICs1OCwxMCBAQCBIdHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNo ZXMvMjAxMC0wMS9tc2cwMDUxNy5odG1sCiAJKiBleGVjLmMgKGV4ZWNfZmlsZV9hdHRhY2gpOiBQ cmludCBhIG1vcmUgdXNlZnVsIGVycm9yIG1lc3NhZ2UgaWYgdGhlCiAJdXNlciBkaWQgImdkYiBj b3JlIi4KIAotSW5kZXg6IGdkYi03LjUuOTEuMjAxMzAzMjMvZ2RiL2V4Y2VwdGlvbnMuaAorSW5k ZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9leGNlcHRpb25zLmgKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjkxLjIwMTMwMzIzLm9yaWcvZ2RiL2V4Y2VwdGlvbnMuaAkyMDEzLTAzLTIy IDIxOjQxOjQ1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuOTEuMjAxMzAzMjMvZ2RiL2V4 Y2VwdGlvbnMuaAkyMDEzLTAzLTIzIDE5OjQ5OjA1LjczODQ1OTE4NSArMDEwMAorLS0tIGdkYi03 LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2V4Y2VwdGlvbnMuaAkyMDEzLTA4LTAyIDE2OjI5 OjQ0Ljc3MDQ0MDI2MiArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9leGNl cHRpb25zLmgJMjAxMy0wOC0wMiAxNjozMDowNi4xOTc0Njg3MjcgKzAyMDAKIEBAIC05MCw2ICs5 MCw5IEBAIGVudW0gZXJyb3JzIHsKICAgICAgIGFib3J0ZWQgYXMgdGhlIGluZmVyaW9yIHN0YXRl IGlzIG5vIGxvbmdlciB2YWxpZC4gICovCiAgICBUQVJHRVRfQ0xPU0VfRVJST1IsCkBAIC03Miwx MCArNzIsMTAgQEAgSW5kZXg6IGdkYi03LjUuOTEuMjAxMzAzMjMvZ2RiL2V4Y2VwdGlvbnMuaAog ICAgLyogQWRkIG1vcmUgZXJyb3JzIGhlcmUuICAqLwogICAgTlJfRVJST1JTCiAgfTsKLUluZGV4 OiBnZGItNy41LjkxLjIwMTMwMzIzL2dkYi9leGVjLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy9nZGIvZXhlYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS45MS4yMDEzMDMyMy5v cmlnL2dkYi9leGVjLmMJMjAxMy0wMS0zMSAxOTozNzozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy41LjkxLjIwMTMwMzIzL2dkYi9leGVjLmMJMjAxMy0wMy0yMyAxOTo0ODo1My4yODQ1NzU5 MTIgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9leGVjLmMJMjAx My0wOC0wMiAxNjoyOTo0NC43NzE0NDAyNjQgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy9nZGIvZXhlYy5jCTIwMTMtMDgtMDIgMTY6MzE6MzAuMTAwNjE4NjU3ICswMjAwCiBAQCAt MzQsNiArMzQsNyBAQAogICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKICAjaW5jbHVkZSAicHJvZ3Nw YWNlLmgiCkBAIC04NCw3ICs4NCw3IEBAIEluZGV4OiBnZGItNy41LjkxLjIwMTMwMzIzL2dkYi9l eGVjLmMKICAKICAjaW5jbHVkZSA8ZmNudGwuaD4KICAjaW5jbHVkZSAicmVhZGxpbmUvcmVhZGxp bmUuaCIKLUBAIC0yNDAsMTIgKzI0MSwyNyBAQCBleGVjX2ZpbGVfYXR0YWNoIChjaGFyICpmaWxl bmFtZSwgaW50IGZyCitAQCAtMjE3LDEyICsyMTgsMjcgQEAgZXhlY19maWxlX2F0dGFjaCAoY2hh ciAqZmlsZW5hbWUsIGludCBmcgogIAogICAgICAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdF9tYXRj aGVzIChleGVjX2JmZCwgYmZkX29iamVjdCwgJm1hdGNoaW5nKSkKICAJewpAQCAtMTE0LDEyICsx MTQsMTIgQEAgSW5kZXg6IGdkYi03LjUuOTEuMjAxMzAzMjMvZ2RiL2V4ZWMuYwogKwkJICAgZ2Ri X2JmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCksIG1hdGNoaW5nKSk7CiAgCX0KICAKLSAgICAg ICAvKiBGSVhNRSAtIFRoaXMgc2hvdWxkIG9ubHkgYmUgcnVuIGZvciBSUzYwMDAsIGJ1dCB0aGUg aWZkZWYgaXMgYSBwb29yCi1JbmRleDogZ2RiLTcuNS45MS4yMDEzMDMyMy9nZGIvbWFpbi5jCisg ICAgICAgaWYgKGJ1aWxkX3NlY3Rpb25fdGFibGUgKGV4ZWNfYmZkLCAmc2VjdGlvbnMsICZzZWN0 aW9uc19lbmQpKQorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9tYWluLmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy41LjkxLjIwMTMwMzIzLm9yaWcvZ2RiL21haW4uYwkyMDEzLTAz LTIzIDE5OjQ4OjE4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuOTEuMjAxMzAzMjMvZ2Ri L21haW4uYwkyMDEzLTAzLTIzIDE5OjQ4OjUzLjI4NTU3NTkwMSArMDEwMAotQEAgLTI5Niw2ICsy OTYsMzYgQEAgdHlwZWRlZiBzdHJ1Y3QgY21kYXJnIHsKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy5vcmlnL2dkYi9tYWluLmMJMjAxMy0wOC0wMiAxNjoyOTo0NC43NzI0NDAyNjUgKzAyMDAK KysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbWFpbi5jCTIwMTMtMDgtMDIgMTY6MzA6 MDYuMTk5NDY4NzMwICswMjAwCitAQCAtMzAwLDYgKzMwMCwzNiBAQCB0eXBlZGVmIHN0cnVjdCBj bWRhcmcgewogIC8qIERlZmluZSB0eXBlIFZFQyAoY21kYXJnX3MpLiAgKi8KICBERUZfVkVDX08g KGNtZGFyZ19zKTsKICAKQEAgLTE1Niw3ICsxNTYsNyBAQCBJbmRleDogZ2RiLTcuNS45MS4yMDEz MDMyMy9nZGIvbWFpbi5jCiAgc3RhdGljIGludAogIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEp CiAgewotQEAgLTc5Niw2ICs4MjYsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorQEAg LTgxMCw2ICs4NDAsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogIAl7CiAgCSAgc3lt YXJnID0gYXJndltvcHRpbmRdOwogIAkgIGV4ZWNhcmcgPSBhcmd2W29wdGluZF07CkBAIC0xNjUs NyArMTY1LDcgQEAgSW5kZXg6IGdkYi03LjUuOTEuMjAxMzAzMjMvZ2RiL21haW4uYwogIAkgIG9w dGluZCsrOwogIAl9CiAgCi1AQCAtOTUxLDExICs5ODMsMjUgQEAgY2FwdHVyZWRfbWFpbiAodm9p ZCAqZGF0YSkKK0BAIC05NzUsMTEgKzEwMDcsMjUgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0 YSkKICAgICAgICAmJiBzeW1hcmcgIT0gTlVMTAogICAgICAgICYmIHN0cmNtcCAoZXhlY2FyZywg c3ltYXJnKSA9PSAwKQogICAgICB7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0 ZS1ycG0ucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaAppbmRleCA4Mjg5 YmFlLi4wMWU1NjBkIDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRj aAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaApAQCAtMSwxNiArMSwxNiBA QAotSW5kZXg6IGdkYi03LjYvZ2RiL2V2ZW50LXRvcC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL2V2ZW50LXRvcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dk Yi9ldmVudC10b3AuYwkyMDEzLTAxLTMxIDE5OjM3OjM3LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjYvZ2RiL2V2ZW50LXRvcC5jCTIwMTMtMDctMTcgMTk6NTE6MDIuNjc5MzU3NjU2ICswMjAw Ci1AQCAtMzYsNiArMzYsNyBAQAotICNpbmNsdWRlICJjb250aW51YXRpb25zLmgiCistLS0gZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvZXZlbnQtdG9wLmMJMjAxMy0wOC0wMiAxNjoy NToyNC45NjgwOTQzOTggKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZXZl bnQtdG9wLmMJMjAxMy0wOC0wMiAxNjoyNTozOC42MzgxMTI4NzQgKzAyMDAKK0BAIC0zNyw2ICsz Nyw3IEBACiAgI2luY2x1ZGUgImdkYmNtZC5oIgkJLyogZm9yIGRvbnRfcmVwZWF0KCkgKi8KICAj aW5jbHVkZSAiYW5ub3RhdGUuaCIKKyAjaW5jbHVkZSAibWFpbnQuaCIKICsjaW5jbHVkZSAic3lt ZmlsZS5oIgogIAogIC8qIHJlYWRsaW5lIGluY2x1ZGUgZmlsZXMuICAqLwogICNpbmNsdWRlICJy ZWFkbGluZS9yZWFkbGluZS5oIgotQEAgLTE3MCw2ICsxNzEsOCBAQCBybF9jYWxsYmFja19yZWFk X2NoYXJfd3JhcHBlciAoZ2RiX2NsaWVuCitAQCAtMTcxLDYgKzE3Miw4IEBAIHJsX2NhbGxiYWNr X3JlYWRfY2hhcl93cmFwcGVyIChnZGJfY2xpZW4KICB2b2lkCiAgY2xpX2NvbW1hbmRfbG9vcCAo dm9pZCkKICB7CkBAIC0xOSw3ICsxOSw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9ldmVudC10b3Au YwogICAgZGlzcGxheV9nZGJfcHJvbXB0ICgwKTsKICAKICAgIC8qIE5vdyBpdCdzIHRpbWUgdG8g c3RhcnQgdGhlIGV2ZW50IGxvb3AuICAqLwotQEAgLTIzNyw2ICsyNDAsOCBAQCBkaXNwbGF5X2dk Yl9wcm9tcHQgKGNoYXIgKm5ld19wcm9tcHQpCitAQCAtMjM4LDYgKzI0MSw4IEBAIGRpc3BsYXlf Z2RiX3Byb21wdCAoY2hhciAqbmV3X3Byb21wdCkKICAgIC8qIFJlc2V0IHRoZSBuZXN0aW5nIGRl cHRoIHVzZWQgd2hlbiB0cmFjZS1jb21tYW5kcyBpcyBzZXQuICAqLwogICAgcmVzZXRfY29tbWFu ZF9uZXN0X2RlcHRoICgpOwogIApAQCAtMjgsMTAgKzI4LDEwIEBAIEluZGV4OiBnZGItNy42L2dk Yi9ldmVudC10b3AuYwogICAgLyogRWFjaCBpbnRlcnByZXRlciBoYXMgaXRzIG93biBydWxlcyBv biBkaXNwbGF5aW5nIHRoZSBjb21tYW5kCiAgICAgICBwcm9tcHQuICAqLwogICAgaWYgKCFjdXJy ZW50X2ludGVycF9kaXNwbGF5X3Byb21wdF9wICgpKQotSW5kZXg6IGdkYi03LjYvZ2RiL2VsZnJl YWQuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9lbGZyZWFkLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEzLTA3LTE3IDE5OjUxOjAy LjYzOTM1NzYyOSArMDIwMAotKysrIGdkYi03LjYvZ2RiL2VsZnJlYWQuYwkyMDEzLTA3LTE3IDE5 OjUxOjUwLjczODM5MDA2OCArMDIwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcv Z2RiL2VsZnJlYWQuYwkyMDEzLTA4LTAyIDE2OjI1OjI0Ljk3MDA5NDQwMSArMDIwMAorKysrIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9lbGZyZWFkLmMJMjAxMy0wOC0wMiAxNjoyNToyNy4z MzYwOTc1NTcgKzAyMDAKIEBAIC00OSw2ICs0OSw3IEBACiAgI2luY2x1ZGUgImdkYmNvcmUuaCIK ICAjaW5jbHVkZSAiZ2RiY21kLmgiCkBAIC00MCw3ICs0MCw3IEBAIEluZGV4OiBnZGItNy42L2dk Yi9lbGZyZWFkLmMKICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICAKICBleHRlcm4gdm9pZCBfaW5p dGlhbGl6ZV9lbGZyZWFkICh2b2lkKTsKLUBAIC0xNjgyLDggKzE2ODMsMzYwIEBAIGJ1aWxkX2lk X3RvX2ZpbGVuYW1lIChjb25zdCBzdHJ1Y3QgZWxmX2IKK0BAIC0xNzAxLDggKzE3MDIsMzYwIEBA IGJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChjb25zdCBzdHJ1Y3QgZWxmX2IKICAgIHJldHVybiByZXR2 YWw7CiAgfQogIApAQCAtNDAyLDcgKzQwMiw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9lbGZyZWFk LmMKICAgICBhdm9pZGFuY2UuICAqLwogIAogIHN0cnVjdCBtaXNzaW5nX2ZpbGVwYWlyCi1AQCAt MTczNywxMSArMjA5MCwxNyBAQCBtaXNzaW5nX2ZpbGVwYWlyX2NoYW5nZSAodm9pZCkKK0BAIC0x NzU2LDExICsyMTA5LDE3IEBAIG1pc3NpbmdfZmlsZXBhaXJfY2hhbmdlICh2b2lkKQogICAgICAg IC8qIEFsbCB0aGVpciBtZW1vcnkgY2FtZSBqdXN0IGZyb20gbWlzc2luZ19maWxlcGFpcl9PQlNU QUNLLiAgKi8KICAgICAgICBtaXNzaW5nX2ZpbGVwYWlyX2hhc2ggPSBOVUxMOwogICAgICB9CkBA IC00MjAsNyArNDIwLDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL2VsZnJlYWQuYwogICAgbWlzc2lu Z19maWxlcGFpcl9jaGFuZ2UgKCk7CiAgfQogIAotQEAgLTE4MDgsMTQgKzIxNjcsMzQgQEAgZGVi dWdfcHJpbnRfbWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5LAorQEAgLTE4MjcsMTQgKzIxODYs MzQgQEAgZGVidWdfcHJpbnRfbWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5LAogIAogICAgKnNs b3QgPSBtaXNzaW5nX2ZpbGVwYWlyOwogIApAQCAtNDYyLDExICs0NjIsMTEgQEAgSW5kZXg6IGdk Yi03LjYvZ2RiL2VsZnJlYWQuYwogIH0KICAKICBzdGF0aWMgY2hhciAqCi1JbmRleDogZ2RiLTcu Ni9nZGIvc3ltZmlsZS5oCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3N5bWZp bGUuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvc3ltZmlsZS5oCTIwMTMtMDct MTcgMTk6NTE6MDIuNjM5MzU3NjI5ICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvc3ltZmlsZS5oCTIw MTMtMDctMTcgMTk6NTE6MDIuNjg3MzU3NjYxICswMjAwCi1AQCAtNTk4LDYgKzU5OCw4IEBAIGV4 dGVybiBzdHJ1Y3QgZWxmX2J1aWxkX2lkICpidWlsZF9pZF9hZGQKKy0tLSBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy5vcmlnL2dkYi9zeW1maWxlLmgJMjAxMy0wOC0wMiAxNjoyNToyNC45NzEwOTQ0 MDIgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvc3ltZmlsZS5oCTIwMTMt MDgtMDIgMTY6MjU6MjcuMzM2MDk3NTU3ICswMjAwCitAQCAtNjAyLDYgKzYwMiw4IEBAIGV4dGVy biBzdHJ1Y3QgZWxmX2J1aWxkX2lkICpidWlsZF9pZF9hZGQKICBleHRlcm4gY2hhciAqYnVpbGRf aWRfdG9fZmlsZW5hbWUgKGNvbnN0IHN0cnVjdCBlbGZfYnVpbGRfaWQgKmJ1aWxkX2lkLAogIAkJ CQkgICBjaGFyICoqbGlua19yZXR1cm4sIGludCBhZGRfZGVidWdfc3VmZml4KTsKICBleHRlcm4g dm9pZCBkZWJ1Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNoYXIg KmRlYnVnKTsKQEAgLTQ3NSwxMCArNDc1LDEwIEBAIEluZGV4OiBnZGItNy42L2dkYi9zeW1maWxl LmgKICAKICAvKiBGcm9tIGR3YXJmMnJlYWQuYyAqLwogIAotSW5kZXg6IGdkYi03LjYvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90 ZXN0c3VpdGUvbGliL2dkYi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEzLTA3LTE3IDE5OjUxOjAyLjY0MDM1NzYyOSArMDIwMAot KysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEzLTA3LTE3IDE5OjUxOjAy LjY4ODM1NzY2MiArMDIwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEzLTA4LTAyIDE2OjI1OjI0Ljk3MjA5NDQwNCArMDIwMAor KysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAx My0wOC0wMiAxNjoyNToyNy4zMzcwOTc1NTkgKzAyMDAKIEBAIC0xNDgyLDcgKzE0ODIsNyBAQCBw cm9jIGRlZmF1bHRfZ2RiX3N0YXJ0IHsgfSB7CiAgCSAgICB3YXJuaW5nICJDb3VsZG4ndCBzZXQg dGhlIHdpZHRoIHRvIDAuIgogIAl9CkBAIC00ODgsMTAgKzQ4OCwxMCBAQCBJbmRleDogZ2RiLTcu Ni9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiAgICAgIHNlbmRfZ2RiICJzZXQgYnVpbGQtaWQt dmVyYm9zZSAwXG4iCiAgICAgIGdkYl9leHBlY3QgMTAgewogIAktcmUgIiRnZGJfcHJvbXB0ICQi IHsKLUluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCitJbmRl eDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5l eHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3Vw cG9ydC5leHAJMjAxMy0wNy0xNyAxOTo1MTowMi42NTYzNTc2NDAgKzAyMDAKLSsrKyBnZGItNy42 L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTMtMDctMTcgMTk6NTE6MDIuNjg5 MzU3NjYzICswMjAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvdGVzdHN1 aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDEzLTA4LTAyIDE2OjI1OjI0Ljk3MzA5NDQwNSArMDIw MAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBv cnQuZXhwCTIwMTMtMDgtMDIgMTY6MjU6MjcuMzM4MDk3NTYwICswMjAwCiBAQCAtMjEyLDcgKzIx Miw3IEBAIHByb2MgZGVmYXVsdF9taV9nZGJfc3RhcnQgeyBhcmdzIH0gewogIAkgICAgd2Fybmlu ZyAiQ291bGRuJ3Qgc2V0IHRoZSB3aWR0aCB0byAwLiIKICAJfQpAQCAtNTAxLDEwICs1MDEsMTAg QEAgSW5kZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKICAgICAg c2VuZF9nZGIgIjE5MC1nZGItc2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxuIgogICAgICBnZGJfZXhw ZWN0IDEwIHsKICAJLXJlICIuKjE5MC1nZGItc2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxyXG4xOTBc XFxeZG9uZVxyXG4kbWlfZ2RiX3Byb21wdCQiIHsKLUluZGV4OiBnZGItNy42L2dkYi90dWkvdHVp LWludGVycC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3R1aS90dWktaW50 ZXJwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3R1aS90dWktaW50ZXJwLmMJ MjAxMy0wMS0wMSAwNzo0MTozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi90dWkv dHVpLWludGVycC5jCTIwMTMtMDctMTcgMTk6NTE6MDIuNjg5MzU3NjYzICswMjAwCistLS0gZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDEzLTA4LTAy IDE2OjI1OjI0Ljk3NDA5NDQwNiArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi90dWkvdHVpLWludGVycC5jCTIwMTMtMDgtMDIgMTY6MjU6MjcuMzM4MDk3NTYwICswMjAwCiBA QCAtMzAsNiArMzAsNyBAQAogICNpbmNsdWRlICJ0dWkvdHVpLmgiCiAgI2luY2x1ZGUgInR1aS90 dWktaW8uaCIKQEAgLTUxMywxMCArNTEzLDEwIEBAIEluZGV4OiBnZGItNy42L2dkYi90dWkvdHVp LWludGVycC5jCiAgCiAgLyogU2V0IHRvIDEgd2hlbiB0aGUgVFVJIG1vZGUgbXVzdCBiZSBhY3Rp dmF0ZWQgd2hlbiB3ZSBmaXJzdCBzdGFydAogICAgIGdkYi4gICovCi1JbmRleDogZ2RiLTcuNi9n ZGIvYWNsb2NhbC5tNAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hY2xvY2Fs Lm00CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9hY2xvY2FsLm00CTIwMTMtMDEt MTcgMTI6MDY6MjYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNi9nZGIvYWNsb2NhbC5tNAky MDEzLTA3LTE3IDE5OjUxOjAyLjY4OTM1NzY2MyArMDIwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3 MzEtY3ZzLm9yaWcvZ2RiL2FjbG9jYWwubTQJMjAxMy0wOC0wMiAxNjoyNToyNC45NzQwOTQ0MDYg KzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYWNsb2NhbC5tNAkyMDEzLTA4 LTAyIDE2OjI1OjI3LjMzOTA5NzU2MSArMDIwMAogQEAgLTExLDYgKzExLDE2NCBAQAogICMgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QQogICMgUEFSVElDVUxBUiBQVVJQT1NFLgpAQCAtNjgyLDEwICs2ODIsMTAgQEAgSW5kZXg6IGdk Yi03LjYvZ2RiL2FjbG9jYWwubTQKICAjIEFNX0NPTkRJVElPTkFMICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCiAgCiAgIyBDb3B5cmln aHQgKEMpIDE5OTcsIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgKLUlu ZGV4OiBnZGItNy42L2dkYi9jb25maWcuaW4KK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvY29uZmlnLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9jb25maWcu aW4JMjAxMi0xMi0wOSAxOTozOTo1OC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9j b25maWcuaW4JMjAxMy0wNy0xNyAxOTo1MTowMi42ODkzNTc2NjMgKzAyMDAKKy0tLSBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9jb25maWcuaW4JMjAxMy0wOC0wMiAxNjoyNToyNC45 NzUwOTQ0MDcgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvY29uZmlnLmlu CTIwMTMtMDgtMDIgMTY6MjU6MjcuMzM5MDk3NTYxICswMjAwCiBAQCAtMzMsNiArMzMsOSBAQAog IC8qIERlZmluZSB0byBCRkQncyBkZWZhdWx0IHRhcmdldCB2ZWN0b3IuICovCiAgI3VuZGVmIERF RkFVTFRfQkZEX1ZFQwpAQCAtNjk2LDcgKzY5Niw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9jb25m aWcuaW4KICAvKiBEZWZpbmUgdG8gMSBpZiB0cmFuc2xhdGlvbiBvZiBwcm9ncmFtIG1lc3NhZ2Vz IHRvIHRoZSB1c2VyJ3MgbmF0aXZlCiAgICAgbGFuZ3VhZ2UgaXMgcmVxdWVzdGVkLiAqLwogICN1 bmRlZiBFTkFCTEVfTkxTCi1AQCAtMjEwLDYgKzIxMyw5IEBACitAQCAtMjE5LDYgKzIyMiw5IEBA CiAgLyogRGVmaW5lIGlmIFB5dGhvbiAyLjcgaXMgYmVpbmcgdXNlZC4gKi8KICAjdW5kZWYgSEFW RV9MSUJQWVRIT04yXzcKICAKQEAgLTcwNiwxMSArNzA2LDExIEBAIEluZGV4OiBnZGItNy42L2dk Yi9jb25maWcuaW4KICAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpYnVud2luZC1p YTY0Lmg+IGhlYWRlciBmaWxlLiAqLwogICN1bmRlZiBIQVZFX0xJQlVOV0lORF9JQTY0X0gKICAK LUluZGV4OiBnZGItNy42L2dkYi9jb25maWd1cmUKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy9nZGIvY29uZmlndXJlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9jb25m aWd1cmUJMjAxMy0wNy0xNyAxOTo1MTowMS42NjUzNTY5NjMgKzAyMDAKLSsrKyBnZGItNy42L2dk Yi9jb25maWd1cmUJMjAxMy0wNy0xNyAxOTo1MTowMi42OTEzNTc2NjQgKzAyMDAKLUBAIC02ODYs NiArNjg2LDExIEBAIFBLR1ZFUlNJT04KKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmln L2dkYi9jb25maWd1cmUJMjAxMy0wOC0wMiAxNjoyNToyNC45ODEwOTQ0MTUgKzAyMDAKKysrKyBn ZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvY29uZmlndXJlCTIwMTMtMDgtMDIgMTY6MjU6Mjcu MzQzMDk3NTY3ICswMjAwCitAQCAtNjg5LDYgKzY4OSwxMSBAQCBQS0dWRVJTSU9OCiAgSEFWRV9O QVRJVkVfR0NPUkVfVEFSR0VUCiAgVEFSR0VUX09CUwogIHN1YmRpcnMKQEAgLTcyMiw3ICs3MjIs NyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvY29uZmlndXJlCiAgR0RCX0RBVEFESVIKICBERUJVR0RJ UgogIE1BS0VJTkZPX0VYVFJBX0ZMQUdTCi1AQCAtNzg2LDYgKzc5MSw3IEBAIHdpdGhfZ2RiX2Rh dGFkaXIKK0BAIC03ODksNiArNzk0LDcgQEAgd2l0aF9nZGJfZGF0YWRpcgogIHdpdGhfcmVsb2Nh dGVkX3NvdXJjZXMKICB3aXRoX2F1dG9fbG9hZF9kaXIKICB3aXRoX2F1dG9fbG9hZF9zYWZlX3Bh dGgKQEAgLTczMCw3ICs3MzAsNyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvY29uZmlndXJlCiAgZW5h YmxlX3RhcmdldHMKICBlbmFibGVfNjRfYml0X2JmZAogIGVuYWJsZV9nZGJjbGkKLUBAIC04MzQs NiArODQwLDExIEBAIENQUEZMQUdTCitAQCAtODM5LDYgKzg0NSwxMSBAQCBDUFBGTEFHUwogIENQ UAogIE1BS0VJTkZPCiAgTUFLRUlORk9GTEFHUwpAQCAtNzQyLDcgKzc0Miw3IEBAIEluZGV4OiBn ZGItNy42L2dkYi9jb25maWd1cmUKICBZQUNDCiAgWUZMQUdTCiAgWE1LTUYnCi1AQCAtMTUwNCw2 ICsxNTE1LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CitAQCAtMTUwOSw2ICsxNTIwLDggQEAgT3B0 aW9uYWwgUGFja2FnZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLS13aXRoLWF1dG8t bG9hZC1kaXJdCiAgICAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9u cwpAQCAtNzUxLDcgKzc1MSw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9jb25maWd1cmUKICAgIC0t d2l0aC1saWJ1bndpbmQtaWE2NCAgIHVzZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIGZvciBp YTY0IHRhcmdldHMKICAgIC0td2l0aC1jdXJzZXMgICAgICAgICAgIHVzZSB0aGUgY3Vyc2VzIGxp YnJhcnkgaW5zdGVhZCBvZiB0aGUgdGVybWNhcAogICAgICAgICAgICAgICAgICAgICAgICAgICAg bGlicmFyeQotQEAgLTE1NDgsNiArMTU2MSwxMyBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25t ZW50IHZhcmlhYmxlczoKK0BAIC0xNTU2LDYgKzE1NjksMTMgQEAgU29tZSBpbmZsdWVudGlhbCBl bnZpcm9ubWVudCB2YXJpYWJsZXM6CiAgICBNQUtFSU5GTyAgICBQYXJlbnQgY29uZmlndXJlIGRl dGVjdHMgaWYgaXQgaXMgb2Ygc3VmZmljaWVudCB2ZXJzaW9uLgogICAgTUFLRUlORk9GTEFHUwog ICAgICAgICAgICAgICAgUGFyYW1ldGVycyBmb3IgTUFLRUlORk8uCkBAIC03NjUsNyArNzY1LDcg QEAgSW5kZXg6IGdkYi03LjYvZ2RiL2NvbmZpZ3VyZQogICAgWUFDQyAgICAgICAgVGhlIGBZZXQg QW5vdGhlciBDIENvbXBpbGVyJyBpbXBsZW1lbnRhdGlvbiB0byB1c2UuIERlZmF1bHRzIHRvCiAg ICAgICAgICAgICAgICB0aGUgZmlyc3QgcHJvZ3JhbSBmb3VuZCBvdXQgb2Y6IGBiaXNvbiAteScs IGBieWFjYycsIGB5YWNjJy4KICAgIFlGTEFHUyAgICAgIFRoZSBsaXN0IG9mIGFyZ3VtZW50cyB0 aGF0IHdpbGwgYmUgcGFzc2VkIGJ5IGRlZmF1bHQgdG8gJFlBQ0MuCi1AQCAtNTAzMyw2ICs1MDUz LDQ5MSBAQCBfQUNFT0YKK0BAIC01MDM5LDYgKzUwNTksNDkxIEBAIF9BQ0VPRgogIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9hdXRvX2xvYWRf c2FmZV9wYXRoIiA+JjUKICAkYXNfZWNobyAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPiY2 OyB9CiAgCkBAIC0xMjU3LDExICsxMjU3LDExIEBAIEluZGV4OiBnZGItNy42L2dkYi9jb25maWd1 cmUKICAKICAKICBzdWJkaXJzPSIkc3ViZGlycyB0ZXN0c3VpdGUiCi1JbmRleDogZ2RiLTcuNi9n ZGIvY29uZmlndXJlLmFjCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2NvbmZp Z3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvY29uZmlndXJlLmFjCTIw MTMtMDctMTcgMTk6NTE6MDEuNjY2MzU2OTY0ICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvY29uZmln dXJlLmFjCTIwMTMtMDctMTcgMTk6NTE6MDIuNjkyMzU3NjY1ICswMjAwCi1AQCAtMTY2LDYgKzE2 NiwxOTkgQEAgQUNfREVGSU5FX0RJUihBVVRPX0xPQURfU0FGRV9QQVRILCBlc2NhcAorLS0tIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEzLTA4LTAyIDE2 OjI1OjI0Ljk4MzA5NDQxOCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9j b25maWd1cmUuYWMJMjAxMy0wOC0wMiAxNjoyNToyNy4zNDQwOTc1NjggKzAyMDAKK0BAIC0xNjQs NiArMTY0LDE5OSBAQCBBQ19ERUZJTkVfRElSKEFVVE9fTE9BRF9TQUZFX1BBVEgsIGVzY2FwCiAg CSAgICAgIFtEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuXSkKICBB Q19NU0dfUkVTVUxUKFskd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoXSkKICAKQEAgLTE0NjEsMTEg KzE0NjEsMTEgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL2NvbmZpZ3VyZS5hYwogIEFDX0NPTkZJR19T VUJESVJTKHRlc3RzdWl0ZSkKICAKICAjIENoZWNrIHdoZXRoZXIgdG8gc3VwcG9ydCBhbHRlcm5h dGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMKLUluZGV4OiBnZGItNy42L2dkYi9jb3JlbG93LmMK K0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvY29yZWxvdy5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMy0wNy0xNyAxOTo1MTowMi42MDgz NTc2MDcgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9jb3JlbG93LmMJMjAxMy0wNy0xNyAxOTo1MTow Mi42OTIzNTc2NjUgKzAyMDAKLUBAIC0zMTQsNyArMzE0LDcgQEAgYnVpbGRfaWRfbG9jYXRlX2V4 ZWMgKGludCBmcm9tX3R0eSkKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9j b3JlbG93LmMJMjAxMy0wOC0wMiAxNjoyNToyNC45ODQwOTQ0MTkgKzAyMDAKKysrKyBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy9nZGIvY29yZWxvdy5jCTIwMTMtMDgtMDIgMTY6MjU6MjcuMzQ0MDk3 NTY4ICswMjAwCitAQCAtMzE2LDcgKzMxNiw3IEBAIGJ1aWxkX2lkX2xvY2F0ZV9leGVjIChpbnQg ZnJvbV90dHkpCiAgICAgICAgICBzeW1maWxlX29iamZpbGUtPmZsYWdzIHw9IE9CSkZfQlVJTERf SURfQ09SRV9MT0FERUQ7CiAgICAgIH0KICAgIGVsc2UKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ1 aWxkaWQtbG9jYXRlLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaAppbmRleCAz MGI0Mzc1Li4yYTU1MTdmIDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNo CisrKyBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKQEAgLTEsMTggKzEsMTggQEAKLUlu ZGV4OiBnZGItNy42L2dkYi9jb3JlbG93LmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvY29yZWxvdy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9jb3JlbG93 LmMJMjAxMy0wMS0zMSAxOTozNzozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9j b3JlbG93LmMJMjAxMy0wNy0xNyAwNToyODo0OS4yNzcyMDM1MzYgKzAyMDAKLUBAIC00Niw2ICs0 Niw5IEBACi0gI2luY2x1ZGUgInByb2dzcGFjZS5oIgotICNpbmNsdWRlICJvYmpmaWxlcy5oIgor LS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2NvcmVsb3cuYwkyMDEzLTA4LTAy IDE3OjA3OjE3Ljg4NjczOTUxMyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi9jb3JlbG93LmMJMjAxMy0wOC0wMiAxNzowNzoyOC40MzQ3NTMyOTMgKzAyMDAKK0BAIC00OCw2 ICs0OCw5IEBACiAgI2luY2x1ZGUgImdkYl9iZmQuaCIKKyAjaW5jbHVkZSAiY29tcGxldGVyLmgi CisgI2luY2x1ZGUgImZpbGVzdHVmZi5oIgogKyNpbmNsdWRlICJhdXh2LmgiCiArI2luY2x1ZGUg ImVsZi9jb21tb24uaCIKICsjaW5jbHVkZSAiZ2RiY21kLmgiCiAgCiAgI2lmbmRlZiBPX0xBUkdF RklMRQogICNkZWZpbmUgT19MQVJHRUZJTEUgMAotQEAgLTI3MSw2ICsyNzQsNTMgQEAgYWRkX3Rv X3RocmVhZF9saXN0IChiZmQgKmFiZmQsIGFzZWN0aW9uCitAQCAtMjczLDYgKzI3Niw1MyBAQCBh ZGRfdG9fdGhyZWFkX2xpc3QgKGJmZCAqYWJmZCwgYXNlY3Rpb24KICAgICAgaW5mZXJpb3JfcHRp ZCA9IHB0aWQ7CQkJLyogWWVzLCBtYWtlIGl0IGN1cnJlbnQuICAqLwogIH0KICAKQEAgLTY2LDcg KzY2LDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL2NvcmVsb3cuYwogIC8qIFRoaXMgcm91dGluZSBv cGVucyBhbmQgc2V0cyB1cCB0aGUgY29yZSBmaWxlIGJmZC4gICovCiAgCiAgc3RhdGljIHZvaWQK LUBAIC00MDksNiArNDU5LDE0IEBAIGNvcmVfb3BlbiAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9t X3R0eSkKK0BAIC00MTEsNiArNDYxLDE0IEBAIGNvcmVfb3BlbiAoY2hhciAqZmlsZW5hbWUsIGlu dCBmcm9tX3R0eSkKICAJc3dpdGNoX3RvX3RocmVhZCAodGhyZWFkLT5wdGlkKTsKICAgICAgfQog IApAQCAtODEsMTAgKzgxLDEwIEBAIEluZGV4OiBnZGItNy42L2dkYi9jb3JlbG93LmMKICAgIHBv c3RfY3JlYXRlX2luZmVyaW9yICgmY29yZV9vcHMsIGZyb21fdHR5KTsKICAKICAgIC8qIE5vdyBn byB0aHJvdWdoIHRoZSB0YXJnZXQgc3RhY2sgbG9va2luZyBmb3IgdGhyZWFkcyBzaW5jZSB0aGVy ZQotQEAgLTk3OCw0ICsxMDM2LDExIEBAIF9pbml0aWFsaXplX2NvcmVsb3cgKHZvaWQpCitAQCAt OTc0LDQgKzEwMzIsMTEgQEAgX2luaXRpYWxpemVfY29yZWxvdyAodm9pZCkKICAgIGluaXRfY29y ZV9vcHMgKCk7CiAgCi0gICBhZGRfdGFyZ2V0ICgmY29yZV9vcHMpOworICAgYWRkX3RhcmdldF93 aXRoX2NvbXBsZXRlciAoJmNvcmVfb3BzLCBmaWxlbmFtZV9jb21wbGV0ZXIpOwogKwogKyAgYWRk X3NldHNob3dfYm9vbGVhbl9jbWQgKCJidWlsZC1pZC1jb3JlLWxvYWRzIiwgY2xhc3NfZmlsZXMs CiArCQkJICAgJmJ1aWxkX2lkX2NvcmVfbG9hZHMsIF8oIlwKQEAgLTkzLDExICs5MywxMSBAQCBJ bmRleDogZ2RiLTcuNi9nZGIvY29yZWxvdy5jCiArCQkJICAgTlVMTCwgTlVMTCwgTlVMTCwKICsJ CQkgICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKICB9Ci1JbmRleDogZ2RiLTcuNi9nZGIvZG9jL2dk Yi50ZXhpbmZvCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2RvYy9nZGIudGV4 aW5mbwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTMtMDctMTcgMDU6Mjg6NDguODgyMjAzMzg0ICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvZG9jL2dk Yi50ZXhpbmZvCTIwMTMtMDctMTcgMDU6Mjg6NDkuMjg2MjAzNTM5ICswMjAwCi1AQCAtMTY4MzEs NiArMTY4MzEsMjcgQEAgaW5mb3JtYXRpb24gZmlsZXMuCistLS0gZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTMtMDgtMDIgMTc6MDc6MTcuODg2NzM5 NTEzICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2RvYy9nZGIudGV4aW5m bwkyMDEzLTA4LTAyIDE3OjA3OjI4LjQ0Mzc1MzMwNCArMDIwMAorQEAgLTE3MTE5LDYgKzE3MTE5 LDI3IEBAIGluZm9ybWF0aW9uIGZpbGVzLgogIAogIEBlbmQgdGFibGUKICAKQEAgLTEyNSwxMSAr MTI1LDExIEBAIEluZGV4OiBnZGItNy42L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAY2luZGV4IEBj b2Rley5nbnVfZGVidWdsaW5rfSBzZWN0aW9ucwogIEBjaW5kZXggZGVidWcgbGluayBzZWN0aW9u cwogIEEgZGVidWcgbGluayBpcyBhIHNwZWNpYWwgc2VjdGlvbiBvZiB0aGUgZXhlY3V0YWJsZSBm aWxlIG5hbWVkCi1JbmRleDogZ2RiLTcuNi9nZGIvc29saWItc3ZyNC5jCitJbmRleDogZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMvZ2RiL3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjYub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTMtMDEtMzEgMTQ6NTI6NTIuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNi9nZGIvc29saWItc3ZyNC5jCTIwMTMtMDctMTcgMDU6Mjg6NDkuMjg3 MjAzNTM5ICswMjAwCi1AQCAtMTIyNCw5ICsxMjI0LDUyIEBAIHN2cjRfcmVhZF9zb19saXN0IChD T1JFX0FERFIgbG0sIHN0cnVjdAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2Ri L3NvbGliLXN2cjQuYwkyMDEzLTA4LTAyIDE3OjA3OjE3Ljg4NjczOTUxMyArMDIwMAorKysrIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9zb2xpYi1zdnI0LmMJMjAxMy0wOC0wMiAxNzowNzoy OC40NDQ3NTMzMDUgKzAyMDAKK0BAIC0xMzY1LDkgKzEzNjUsNTIgQEAgc3ZyNF9yZWFkX3NvX2xp c3QgKENPUkVfQUREUiBsbSwgQ09SRV9BRAogIAkgIGNvbnRpbnVlOwogIAl9CiAgCkBAIC0xODUs MTAgKzE4NSwxMCBAQCBJbmRleDogZ2RiLTcuNi9nZGIvc29saWItc3ZyNC5jCiAgICAgICAgeGZy ZWUgKGJ1ZmZlcik7CiAgCiAgICAgICAgLyogSWYgdGhpcyBlbnRyeSBoYXMgbm8gbmFtZSwgb3Ig aXRzIG5hbWUgbWF0Y2hlcyB0aGUgbmFtZQotSW5kZXg6IGdkYi03LjYvZ2RiL2VsZnJlYWQuYwor SW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9lbGZyZWFkLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy42Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEzLTAzLTE4IDEwOjIwOjAyLjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjYvZ2RiL2VsZnJlYWQuYwkyMDEzLTA3LTE3IDA1OjMxOjIx LjI0MjI1NjE0MSArMDIwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2Vs ZnJlYWQuYwkyMDEzLTA4LTAyIDE3OjA3OjE3Ljg4NjczOTUxMyArMDIwMAorKysrIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi9lbGZyZWFkLmMJMjAxMy0wOC0wMiAxNzowOTowNi40NjA4ODE1 MDMgKzAyMDAKIEBAIC00NSw2ICs0NSwxMSBAQAogICNpbmNsdWRlICJyZWdjYWNoZS5oIgogICNp bmNsdWRlICJiY2FjaGUuaCIKQEAgLTIwMSw3ICsyMDEsNyBAQCBJbmRleDogZ2RiLTcuNi9nZGIv ZWxmcmVhZC5jCiAgCiAgZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCk7CiAg Ci1AQCAtMTA2OCwxMCArMTA3Myw1OSBAQCBlbGZfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9z dG9wIChzdHJ1CitAQCAtMTA4NywxMCArMTA5Miw1OSBAQCBlbGZfZ251X2lmdW5jX3Jlc29sdmVy X3JldHVybl9zdG9wIChzdHJ1CiAgICB1cGRhdGVfYnJlYWtwb2ludF9sb2NhdGlvbnMgKGIsIHNh bHMsIHNhbHNfZW5kKTsKICB9CiAgCkBAIC0yMzMsNyArMjMzLDcgQEAgSW5kZXg6IGdkYi03LjYv Z2RiL2VsZnJlYWQuYwogKyAgICAgIEVsZl9FeHRlcm5hbF9Ob3RlICp4bnAgPSAoRWxmX0V4dGVy bmFsX05vdGUgKikgcDsKICsgICAgICBzaXplX3QgbmFtZXN6ID0gSF9HRVRfMzIgKHRlbXBsLCB4 bnAtPm5hbWVzeik7CiArICAgICAgc2l6ZV90IGRlc2NzeiA9IEhfR0VUXzMyICh0ZW1wbCwgeG5w LT5kZXNjc3opOwotKyAgICAgIGJmZF9ieXRlICpkZXNjZGF0YSA9IHhucC0+bmFtZSArIEJGRF9B TElHTiAobmFtZXN6LCA0KTsKKysgICAgICBiZmRfYnl0ZSAqZGVzY2RhdGEgPSAoZ2RiX2J5dGUg KikgeG5wLT5uYW1lICsgQkZEX0FMSUdOIChuYW1lc3osIDQpOwogKwogKyAgICAgIGlmIChIX0dF VF8zMiAodGVtcGwsIHhucC0+dHlwZSkgPT0gTlRfR05VX0JVSUxEX0lECiArCSAgJiYgbmFtZXN6 ID09IHNpemVvZiAiR05VIgpAQCAtMjYzLDcgKzI2Myw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9l bGZyZWFkLmMKICB7CiAgICBpZiAoIWJmZF9jaGVja19mb3JtYXQgKGFiZmQsIGJmZF9vYmplY3Qp CiAgICAgICAgfHwgYmZkX2dldF9mbGF2b3VyIChhYmZkKSAhPSBiZmRfdGFyZ2V0X2VsZl9mbGF2 b3VyCi1AQCAtMTA4MSw2ICsxMTM1LDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQgKmFiZmQp CitAQCAtMTEwMCw2ICsxMTU0LDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQgKmFiZmQpCiAg ICByZXR1cm4gZWxmX3RkYXRhIChhYmZkKS0+YnVpbGRfaWQ7CiAgfQogIApAQCAtNjEyLDcgKzYx Miw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9lbGZyZWFkLmMKICAvKiBSZXR1cm4gaWYgRklMRU5B TUUgaGFzIE5UX0dOVV9CVUlMRF9JRCBtYXRjaGluZyB0aGUgQ0hFQ0sgdmFsdWUuICAqLwogIAog IHN0YXRpYyBpbnQKLUBAIC0xMDk1LDcgKzE0OTEsNyBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0 IGNoYXIgKmZpbGVuYW1lLCBjCitAQCAtMTExNCw3ICsxNTEwLDcgQEAgYnVpbGRfaWRfdmVyaWZ5 IChjb25zdCBjaGFyICpmaWxlbmFtZSwgYwogICAgaWYgKGFiZmQgPT0gTlVMTCkKICAgICAgcmV0 dXJuIDA7CiAgCkBAIC02MjEsNyArNjIxLDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL2VsZnJlYWQu YwogIAogICAgaWYgKGZvdW5kID09IE5VTEwpCiAgICAgIHdhcm5pbmcgKF8oIkZpbGUgXCIlc1wi IGhhcyBubyBidWlsZC1pZCwgZmlsZSBza2lwcGVkIiksIGZpbGVuYW1lKTsKLUBAIC0xMTEyLDE2 ICsxNTA4LDUzIEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGMKK0BA IC0xMTMxLDE2ICsxNTI3LDUzIEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29uc3QgY2hhciAqZmlsZW5h bWUsIGMKICB9CiAgCiAgc3RhdGljIGNoYXIgKgpAQCAtNjc4LDcgKzY3OCw3IEBAIEluZGV4OiBn ZGItNy42L2dkYi9lbGZyZWFkLmMKICAKICAgIC8qIEtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0 eSBzbyB0aGF0IERFQlVHX0ZJTEVfRElSRUNUT1JZIGJlaW5nICIiIHdpbGwKICAgICAgIGNhdXNl ICIvLmJ1aWxkLWlkLy4uLiIgbG9va3Vwcy4gICovCi1AQCAtMTEzNCw3ICsxNTY3LDEwIEBAIGJ1 aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChjb25zdCBzdHJ1Y3QKK0BAIC0xMTUzLDcgKzE1ODYs MTAgQEAgYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKGNvbnN0IHN0cnVjdAogICAgICAgIHNp emVfdCBkZWJ1Z2Rpcl9sZW4gPSBzdHJsZW4gKGRlYnVnZGlyKTsKICAgICAgICBjb25zdCBnZGJf Ynl0ZSAqZGF0YSA9IGJ1aWxkX2lkLT5kYXRhOwogICAgICAgIHNpemVfdCBzaXplID0gYnVpbGRf aWQtPnNpemU7CkBAIC02OTAsNyArNjkwLDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL2VsZnJlYWQu YwogIAogICAgICAgIG1lbWNweSAobGluaywgZGVidWdkaXIsIGRlYnVnZGlyX2xlbik7CiAgICAg ICAgcyA9ICZsaW5rW2RlYnVnZGlyX2xlbl07Ci1AQCAtMTE0OCwzNyArMTU4NCwyNTYgQEAgYnVp bGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKGNvbnN0IHN0cnVjdAorQEAgLTExNjcsMzcgKzE2MDMs MjU2IEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChjb25zdCBzdHJ1Y3QKICAJKnMrKyA9 ICcvJzsKICAgICAgICB3aGlsZSAoc2l6ZS0tID4gMCkKICAJcyArPSBzcHJpbnRmIChzLCAiJTAy eCIsICh1bnNpZ25lZCkgKmRhdGErKyk7CkBAIC05NTgsNyArOTU4LDcgQEAgSW5kZXg6IGdkYi03 LjYvZ2RiL2VsZnJlYWQuYwogICAgICAgIC8qIFByZXZlbnQgbG9vcGluZyBvbiBhIHN0cmlwcGVk IC5kZWJ1ZyBmaWxlLiAgKi8KICAgICAgICBpZiAoYnVpbGRfaWRfbmFtZSAhPSBOVUxMCiAgCSAg JiYgZmlsZW5hbWVfY21wIChidWlsZF9pZF9uYW1lLCBvYmpmaWxlLT5uYW1lKSA9PSAwKQotQEAg LTExODgsNyArMTg0Myw3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChz dHIKK0BAIC0xMjA3LDcgKzE4NjIsNyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVp bGRpZCAoc3RyCiAgCSAgeGZyZWUgKGJ1aWxkX2lkX25hbWUpOwogIAl9CiAgICAgICAgZWxzZSBp ZiAoYnVpbGRfaWRfbmFtZSAhPSBOVUxMKQpAQCAtOTY3LDcgKzk2Nyw3IEBAIEluZGV4OiBnZGIt Ny42L2dkYi9lbGZyZWFkLmMKICAgICAgfQogICAgcmV0dXJuIE5VTEw7CiAgfQotQEAgLTE0MjYs OSArMjA4MSwxMCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCitA QCAtMTQ0NSw5ICsyMTAwLDEwIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWwKICAJICAgJiYgb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSA9PSBOVUxMCiAg CSAgICYmIG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsgPT0gTlVMTCkK ICAgICAgewpAQCAtOTgwLDcgKzk4MCw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9lbGZyZWFkLmMK ICAKICAgICAgICBpZiAoZGVidWdmaWxlID09IE5VTEwpCiAgCWRlYnVnZmlsZSA9IGZpbmRfc2Vw YXJhdGVfZGVidWdfZmlsZV9ieV9kZWJ1Z2xpbmsgKG9iamZpbGUpOwotQEAgLTE0NDIsNiArMjA5 OCwxMiBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCitAQCAtMTQ2 MSw2ICsyMTE3LDEyIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwK ICAJICBzeW1ib2xfZmlsZV9hZGRfc2VwYXJhdGUgKGFiZmQsIHN5bWZpbGVfZmxhZ3MsIG9iamZp bGUpOwogIAkgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKICAJfQpAQCAtOTkzLDcgKzk5Myw3IEBA IEluZGV4OiBnZGItNy42L2dkYi9lbGZyZWFkLmMKICAgICAgfQogIH0KICAKLUBAIC0xNzYxLDQg KzI0MjMsMTYgQEAgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCkKK0BAIC0xNzkwLDQgKzI0NTIs MTYgQEAgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCkKICAKICAgIGVsZl9vYmpmaWxlX2dudV9p ZnVuY19jYWNoZV9kYXRhID0gcmVnaXN0ZXJfb2JqZmlsZV9kYXRhICgpOwogICAgZ251X2lmdW5j X2Zuc19wID0gJmVsZl9nbnVfaWZ1bmNfZm5zOwpAQCAtMTAxMCwxMSArMTAxMCwxMSBAQCBJbmRl eDogZ2RiLTcuNi9nZGIvZWxmcmVhZC5jCiArCiArICBvYnNlcnZlcl9hdHRhY2hfZXhlY3V0YWJs ZV9jaGFuZ2VkIChkZWJ1Z19wcmludF9leGVjdXRhYmxlX2NoYW5nZWQpOwogIH0KLUluZGV4OiBn ZGItNy42L2dkYi9zeW1maWxlLmgKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIv c3ltZmlsZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9zeW1maWxlLmgJMjAx My0wMi0wMyAxNzoyMDoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9zeW1maWxl LmgJMjAxMy0wNy0xNyAwNToyODo0OS4yOTEyMDM1NDEgKzAyMDAKLUBAIC01OTMsNiArNTkzLDEy IEBAIHZvaWQgZnJlZV9zeW1maWxlX3NlZ21lbnRfZGF0YSAoc3RydWN0IHMKKy0tLSBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9zeW1maWxlLmgJMjAxMy0wOC0wMiAxNzowNzoxNy44 ODY3Mzk1MTMgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvc3ltZmlsZS5o CTIwMTMtMDgtMDIgMTc6MDc6MjguNDQ2NzUzMzA4ICswMjAwCitAQCAtNTk3LDYgKzU5NywxMiBA QCB2b2lkIGZyZWVfc3ltZmlsZV9zZWdtZW50X2RhdGEgKHN0cnVjdCBzCiAgCiAgZXh0ZXJuIHN0 cnVjdCBjbGVhbnVwICppbmNyZW1lbnRfcmVhZGluZ19zeW10YWIgKHZvaWQpOwogIApAQCAtMTAy NywxMCArMTAyNywxMCBAQCBJbmRleDogZ2RiLTcuNi9nZGIvc3ltZmlsZS5oCiAgLyogRnJvbSBk d2FyZjJyZWFkLmMgKi8KICAKICAvKiBOYW1lcyBmb3IgYSBkd2FyZjIgZGVidWdnaW5nIHNlY3Rp b24uICBUaGUgZmllbGQgTk9STUFMIGlzIHRoZSBub3JtYWwKLUluZGV4OiBnZGItNy42L2dkYi90 ZXN0c3VpdGUvbGliL2dkYi5leHAKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIv dGVzdHN1aXRlL2xpYi9nZGIuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi90 ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMy0wNy0xNyAwNToyODo0OC4zMzQyMDMxNzIgKzAyMDAK LSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMy0wNy0xNyAwNToyODo0 OS4yOTIyMDM1NDEgKzAyMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi90 ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMy0wOC0wMiAxNzowNzoxNy44ODY3Mzk1MTMgKzAyMDAK KysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIw MTMtMDgtMDIgMTc6MDc6MjguNDQ2NzUzMzA4ICswMjAwCiBAQCAtMTQ4Miw2ICsxNDgyLDE2IEBA IHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNl dCB0aGUgd2lkdGggdG8gMC4iCiAgCX0KQEAgLTEwNDUsMTMgKzEwNDUsMTMgQEAgSW5kZXg6IGdk Yi03LjYvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogKwkgICAgd2FybmluZyAiQ291bGQgbm90 IGRpc2FibGUgdGhlIG1pc3NpbmcgZGVidWcgaW5mb3Mgd2FybmluZ3MuLiIKICsJfQogKyAgICB9 Ci0gICAgIHJldHVybiAwOworICAgICByZXR1cm4gMAogIH0KICAKLUluZGV4OiBnZGItNy42L2dk Yi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy42Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMy0wMS0yMiAw MDo1Nzo1OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvbGliL21p LXN1cHBvcnQuZXhwCTIwMTMtMDctMTcgMDU6Mjg6NDkuMjkyMjAzNTQxICswMjAwCistLS0gZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4 cAkyMDEzLTA4LTAyIDE3OjA3OjE3Ljg4NjczOTUxMyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTMtMDgtMDIgMTc6 MDc6MjguNDQ3NzUzMzEwICswMjAwCiBAQCAtMjEyLDYgKzIxMiwxNiBAQCBwcm9jIGRlZmF1bHRf bWlfZ2RiX3N0YXJ0IHsgYXJncyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNldCB0aGUg d2lkdGggdG8gMC4iCiAgCX0KQEAgLTEwNjksMTEgKzEwNjksMTEgQEAgSW5kZXg6IGdkYi03LjYv Z2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKICAgICAgIyBJZiBhbGxvd2luZyB0aGUg aW5mZXJpb3IgdG8gaGF2ZSBpdHMgb3duIFBUWSB0aGVuIGFzc2lnbiB0aGUgaW5mZXJpb3IKICAg ICAgIyBpdHMgb3duIHRlcm1pbmFsIGRldmljZSBoZXJlLgogICAgICBpZiB7ICRzZXBhcmF0ZV9p bmZlcmlvcl9wdHkgfSB7Ci1JbmRleDogZ2RiLTcuNi9nZGIvb2JqZmlsZXMuaAorSW5kZXg6IGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9vYmpmaWxlcy5oCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNi5vcmlnL2dkYi9vYmpmaWxlcy5oCTIwMTMtMDItMjggMjA6MDA6MzEuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNi9nZGIvb2JqZmlsZXMuaAkyMDEzLTA3LTE3IDA1OjI4OjQ5LjI5MzIw MzU0MiArMDIwMAotQEAgLTQzMiw2ICs0MzIsMTAgQEAgc3RydWN0IG9iamZpbGUKKy0tLSBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9vYmpmaWxlcy5oCTIwMTMtMDgtMDIgMTc6MDc6 MTcuODg2NzM5NTEzICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL29iamZp bGVzLmgJMjAxMy0wOC0wMiAxNzowNzoyOC40NDc3NTMzMTAgKzAyMDAKK0BAIC00MjksNiArNDI5 LDEwIEBAIHN0cnVjdCBvYmpmaWxlCiAgCiAgI2RlZmluZSBPQkpGX01BSU5MSU5FICgxIDw8IDUp CiAgCkBAIC0xMDg0LDExICsxMDg0LDExIEBAIEluZGV4OiBnZGItNy42L2dkYi9vYmpmaWxlcy5o CiAgLyogVGhlIG9iamVjdCBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHJ1bnRpbWUgY29tbW9uIG1p bmltYWwgc3ltYm9scwogICAgIGZvciBTdW5PUzQuICBOb3RlIHRoYXQgdGhpcyBvYmpmaWxlIGhh cyBubyBhc3NvY2lhdGVkIEJGRC4gICovCiAgCi1JbmRleDogZ2RiLTcuNi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2NvcmVmaWxlLmV4cAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ni5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCTIwMTMtMDEtMDEgMDc6 MzM6MjUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2NvcmVmaWxlLmV4cAkyMDEzLTA3LTE3IDA1OjI4OjQ5LjI5MzIwMzU0MiArMDIwMAotQEAgLTI1 NiwzICsyNTYsMzMgQEAgaWYgIVtpc19yZW1vdGUgdGFyZ2V0XSB7CistLS0gZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cAkyMDEz LTA4LTAyIDE3OjA3OjE3Ljg4NjczOTUxMyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCTIwMTMtMDgtMDIgMTc6MDc6 MjguNDQ3NzUzMzEwICswMjAwCitAQCAtMjU1LDMgKzI1NSwzMyBAQCBpZiAhW2lzX3JlbW90ZSB0 YXJnZXRdIHsKICAKICAgICAgZ2RiX2V4aXQKICB9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi10ZXN0 c3VpdGUtdGltZW91dHMucGF0Y2ggYi9nZGItNi42LXRlc3RzdWl0ZS10aW1lb3V0cy5wYXRjaApp bmRleCAwMGY1ZDg1Li5iN2I2MmVhIDEwMDY0NAotLS0gYS9nZGItNi42LXRlc3RzdWl0ZS10aW1l b3V0cy5wYXRjaAorKysgYi9nZGItNi42LXRlc3RzdWl0ZS10aW1lb3V0cy5wYXRjaApAQCAtMSwy MyArMSwyMyBAQAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9hbm5vdGExLmV4cAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIw MTIwNjAyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmV4cAkyMDEyLTAzLTE2 IDE3OjQ3OjMzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmV4cAkyMDEyLTA2LTAyIDE4OjI3OjQ2LjYyMzIxMDcx MSArMDIwMAotQEAgLTQ1LDYgKzQ1LDggQEAgZ2RiX3N0YXJ0Ci0gZ2RiX3JlaW5pdGlhbGl6ZV9k aXIgJHNyY2Rpci8kc3ViZGlyCi0gZ2RiX2xvYWQgJHtiaW5maWxlfQorLS0tIGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmV4cAkyMDEz LTA4LTAyIDE2OjIzOjI2LjU1OTkzNjI1OCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5leHAJMjAxMy0wOC0wMiAxNjoyMzo1 Ni41OTA5NzY0MTggKzAyMDAKK0BAIC00MSw2ICs0MSw4IEBAIGlmICB7IFtnZGJfY29tcGlsZSAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8KKyAKKyBjbGVhbl9yZXN0YXJ0ICR7YmluZmlsZX0KICAKICtn ZGJfdGVzdCAic2V0IGJyZWFrcG9pbnQgcGVuZGluZyBvZmYiICIiICJBdm9pZCBsb2NrdXAgb24g bm9uZXhpc3RpbmcgZnVuY3Rpb25zIgogKwogICMgVGhlIGNvbW1hbmRzIHdlIHRlc3QgaGVyZSBw cm9kdWNlIG1hbnkgbGluZXMgb2Ygb3V0cHV0OyBkaXNhYmxlICJwcmVzcyAKICAjIDxyZXR1cm4+ IHRvIGNvbnRpbnVlIiBwcm9tcHRzLgogIGdkYl90ZXN0X25vX291dHB1dCAic2V0IGhlaWdodCAw IgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5v dGEzLmV4cAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvYW5ub3RhMy5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9y aWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmV4cAkyMDEyLTAyLTI4IDIzOjQwOjQ4 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9hbm5vdGEzLmV4cAkyMDEyLTA2LTAyIDE4OjI4OjAwLjM3NTIwNjQ1NyArMDIwMAot QEAgLTQ1LDYgKzQ1LDggQEAgZ2RiX3N0YXJ0Ci0gZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rp ci8kc3ViZGlyCi0gZ2RiX2xvYWQgJHtiaW5maWxlfQorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmV4cAkyMDEzLTA4LTAyIDE2 OjIzOjI2LjU2MDkzNjI1OSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5leHAJMjAxMy0wOC0wMiAxNjoyNDoxMS42NTQ5OTYy NjcgKzAyMDAKK0BAIC00MCw2ICs0MCw4IEBAIGlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9 LyR7c3ViZGlyfS8KKyAKKyBjbGVhbl9yZXN0YXJ0ICR7YmluZmlsZX0KICAKICtnZGJfdGVzdCAi c2V0IGJyZWFrcG9pbnQgcGVuZGluZyBvZmYiICIiICJBdm9pZCBsb2NrdXAgb24gbm9uZXhpc3Rp bmcgZnVuY3Rpb25zIgogKwoKZGlmZiAtLWdpdCBhL2dkYi02LjctdGVzdHN1aXRlLXN0YWJsZS1y ZXN1bHRzLnBhdGNoIGIvZ2RiLTYuNy10ZXN0c3VpdGUtc3RhYmxlLXJlc3VsdHMucGF0Y2gKaW5k ZXggN2UyZmIzOS4uMzk3YzA2MSAxMDA2NDQKLS0tIGEvZ2RiLTYuNy10ZXN0c3VpdGUtc3RhYmxl LXJlc3VsdHMucGF0Y2gKKysrIGIvZ2RiLTYuNy10ZXN0c3VpdGUtc3RhYmxlLXJlc3VsdHMucGF0 Y2gKQEAgLTIwLDEwICsyMCwxMCBAQCByYW5kb20gRkFJTDogZ2RiLmJhc2UvYXV4di5leHA6IG1h dGNoaW5nIGF1eHYgZGF0YSBmcm9tIGxpdmUgYW5kIGdjb3JlCiBnZGItNi44LjUwLjIwMDkwMjA5 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5leHA6CiBmcmFtZXMtaW52YWxpZCBjYW4g aGFwcGVuIGFzeW5jaHJvbm91c2x5LgogCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9maWxlaW8uYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjQuNTAuMjAxMjAxMDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5jCTIwMDkt MTAtMDEgMTc6Mzk6MTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEwMy9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5jCTIwMTItMDEtMDMgMTU6MjE6MjguMTIyNzI5 MjQ5ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2ZpbGVpby5jCTIwMTMtMDgtMDIgMTY6MjU6NDkuNDY2MTI3MDc0ICswMjAwCisr KysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9maWxlaW8u YwkyMDEzLTA4LTAyIDE2OjI2OjExLjcyNDE1Njc1MCArMDIwMAogQEAgLTU4LDYgKzU4LDggQEAg c3lzdGVtIChjb25zdCBjaGFyICogc3RyaW5nKTsKICAxKSBJbnZhbGlkIHN0cmluZy9jb21tYW5k LiAtICByZXR1cm5zIDEyNy4gICovCiAgc3RhdGljIGNvbnN0IGNoYXIgKnN0cmVycm5vIChpbnQg ZXJyKTsKQEAgLTcxLDEyICs3MSwxMiBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5jCiAgICAvKiBEb24ndCBjaGFuZ2UgdGhlIG9yZGVy IG9mIHRoZSBjYWxscy4gIFRoZXkgcGFydGx5IGRlcGVuZCBvbiBlYWNoIG90aGVyICovCiAgICB0 ZXN0X29wZW4gKCk7CiAgICB0ZXN0X3dyaXRlICgpOwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9maWxlaW8uZXhwCitJbmRleDogZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9maWxlaW8uZXhwCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmls ZWlvLmV4cAkyMDExLTEyLTI2IDEyOjI0OjU1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQu NTAuMjAxMjAxMDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9maWxlaW8uZXhwCTIwMTItMDEtMDMg MTU6MjI6MDIuNzE2NjAxOTU2ICswMTAwCi1AQCAtNDIsOCArNDIsOCBAQCBpZiBbZ2V0X2NvbXBp bGVyX2luZm8gJHtiaW5maWxlfV0gewotICAgICByZXR1cm4gLTE7CistLS0gZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5leHAJMjAxMy0w OC0wMiAxNjoyNTo0OS40NjcxMjcwNzUgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5leHAJMjAxMy0wOC0wMiAxNjoyNzoxMC4x NDIyMzQ2MTggKzAyMDAKK0BAIC0zNSw4ICszNSw4IEBAIGlmIFtnZXRfY29tcGlsZXJfaW5mb10g eworICAgICByZXR1cm4gLTEKICB9CiAgCiAtcmVtb3RlX2V4ZWMgYnVpbGQge3NoIC14YyB0ZXN0 XCAtclwgZGlyMi5maWxlaW8udGVzdFwgJiZcIGNobW9kXCAtZlwgK3dcIGRpcjIuZmlsZWlvLnRl c3R9CkBAIC04Niw3ICs4Niw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvZmlsZWlvLmV4cAogIAogIHNldCBvbGR0aW1lb3V0ICR0aW1lb3V0CiAg c2V0IHRpbWVvdXQgW2V4cHIgIiR0aW1lb3V0ICsgNjAiXQotQEAgLTg1LDcgKzg1LDcgQEAgZ2Ri X3Rlc3QgY29udGludWUgXAorQEAgLTc4LDcgKzc4LDcgQEAgZ2RiX3Rlc3QgY29udGludWUgXAog IAogIGdkYl90ZXN0ICJjb250aW51ZSIgIi4qIiAiIgogIApAQCAtOTUsNyArOTUsNyBAQCBJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5leHAK ICAKICBnZGJfdGVzdCBjb250aW51ZSBcCiAgIkNvbnRpbnVpbmdcXC4uKm9wZW4gNTouKkVBQ0NF UyRzdG9wX21zZyIgXAotQEAgLTI1MSw4ICsyNTEsOCBAQCBnZGJfZXhpdAorQEAgLTI0NCw4ICsy NDQsOCBAQCBnZGJfZXhpdAogICMgV2FpdCB0aWxsIEdEQiByZWFsbHkgZXhpdHMuCiAgc2xlZXAg MQogIAoKZGlmZiAtLWdpdCBhL2dkYi02LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2ggYi9nZGIt Ni44LXF1aXQtbmV2ZXItYWJvcnRzLnBhdGNoCmluZGV4IDc0NTM1YmUuLmY0NWM3MDcgMTAwNjQ0 Ci0tLSBhL2dkYi02LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2gKKysrIGIvZ2RiLTYuOC1xdWl0 LW5ldmVyLWFib3J0cy5wYXRjaApAQCAtNSwxMSArNSwxMSBAQCBTb21lIG9mIHRoZSB0aHJlYWRz IG1heSBub3QgYmUgcHJvcGVybHkgUFRSQUNFX0RFVEFDSGVkIHdoaWNoIGh1cnRzIGlmIHRoZXkK IHNob3VsZCBoYXZlIGJlZW4gZGV0YWNoZWQgd2l0aCBTSUdTVE9QIChhcyB0aGV5IGFyZSBhY2Np ZGVudGFsbHkgbGVmdCBydW5uaW5nCiBvbiB0aGUgZGVidWdnZXIgdGVybWluYXRpb24pLgogCi1J bmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZGVmcy5oCitJbmRleDogZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL2RlZnMuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAx MTgub3JpZy9nZGIvZGVmcy5oCTIwMTMtMDEtMDEgMDc6MzI6NDEuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZGVmcy5oCTIwMTMtMDEtMjEgMTY6NDA6MjkuODg5 MjU2NjMzICswMTAwCi1AQCAtMTc2LDYgKzE3Niw3IEBAIGV4dGVybiBpbnQgY2hlY2tfcXVpdF9m bGFnICh2b2lkKTsKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9kZWZzLmgJ MjAxMy0wOC0wMiAxNjo1ODozMS40NTMwMTY1NzMgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy9nZGIvZGVmcy5oCTIwMTMtMDgtMDIgMTY6NTg6NDEuMjIxMDMwNDEyICswMjAwCitA QCAtMTc3LDYgKzE3Nyw3IEBAIGV4dGVybiBpbnQgY2hlY2tfcXVpdF9mbGFnICh2b2lkKTsKICAv KiBTZXQgdGhlIHF1aXQgZmxhZy4gICovCiAgZXh0ZXJuIHZvaWQgc2V0X3F1aXRfZmxhZyAodm9p ZCk7CiAgCkBAIC0xNywyNiArMTcsMjYgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L2RlZnMuaAogIGV4dGVybiBpbnQgaW1tZWRpYXRlX3F1aXQ7CiAgCiAgZXh0ZXJuIHZvaWQgcXVp dCAodm9pZCk7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdG9wLmMKK0luZGV4OiBn ZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdG9wLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3RvcC5jCTIwMTMtMDEtMjEgMTQ6NTY6MTIuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdG9wLmMJMjAxMy0wMS0yMSAxNDo1 NjoxNi4zODU3MTAwNTYgKzAxMDAKLUBAIC0xMzI5LDcgKzEzMjksOSBAQCBxdWl0X2ZvcmNlIChj aGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0gICBxdC5hcmdzID0gYXJnczsKLSAgIHF0LmZyb21f dHR5ID0gZnJvbV90dHk7CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvdG9w LmMJMjAxMy0wOC0wMiAxNjo1ODo0MS4yMjIwMzA0MTQgKzAyMDAKKysrKyBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy9nZGIvdG9wLmMJMjAxMy0wOC0wMiAxNjo1OTowNi4zMjEwNjYyMjggKzAyMDAK K0BAIC0xNDE1LDcgKzE0MTUsOSBAQCBxdWl0X2ZvcmNlIChjaGFyICphcmdzLCBpbnQgZnJvbV90 dHkpCisgICBpZiAoZXgucmVhc29uIDwgMCkgXAorICAgICBleGNlcHRpb25fcHJpbnQgKGdkYl9z dGRlcnIsIGV4KQogIAogLSAgLyogV2Ugd2FudCB0byBoYW5kbGUgYW55IHF1aXQgZXJyb3JzIGFu ZCBleGl0IHJlZ2FyZGxlc3MuICAqLwogKyAgLyogV2Ugd2FudCB0byBoYW5kbGUgYW55IHF1aXQg ZXJyb3JzIGFuZCBleGl0IHJlZ2FyZGxlc3MgYnV0IHdlIHNob3VsZCBuZXZlcgogKyAgICAgZ2V0 IHVzZXItaW50ZXJydXB0ZWQgdG8gcHJvcGVybHkgZGV0YWNoIHRoZSBpbmZlcmlvci4gICovCiAr ICBxdWl0X2ZsYWdfY2xlYW51cCA9IDE7Ci0gICBjYXRjaF9lcnJvcnMgKHF1aXRfdGFyZ2V0LCAm cXQsCi0gCSAgICAgICAgIlF1aXR0aW5nOiAiLCBSRVRVUk5fTUFTS19BTEwpOwogIAotSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3V0aWxzLmMKKyAgIC8qIEdldCBvdXQgb2YgdGZpbmQg bW9kZSwgYW5kIGtpbGwgb3IgZGV0YWNoIGFsbCBpbmZlcmlvcnMuICAqLworICAgRE9fVFJZCitJ bmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3V0aWxzLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3V0aWxzLmMJMjAxMy0wMS0yMSAxNDo1Njox Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi91dGlscy5jCTIw MTMtMDEtMjEgMTY6NDE6MDIuMjI1MjMzNDkzICswMTAwCi1AQCAtMTQxLDYgKzE0MSwxMSBAQCBp bnQgcXVpdF9mbGFnOworLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3V0aWxz LmMJMjAxMy0wOC0wMiAxNjo1ODozMS40NTUwMTY1NzUgKzAyMDAKKysrKyBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy9nZGIvdXRpbHMuYwkyMDEzLTA4LTAyIDE2OjU4OjQxLjIyMzAzMDQxNSArMDIw MAorQEAgLTEzNiw2ICsxMzYsMTEgQEAgaW50IHF1aXRfZmxhZzsKICAKICBpbnQgaW1tZWRpYXRl X3F1aXQ7CiAgCkBAIC00OCw3ICs0OCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi91dGlscy5jCiAgI2lmbmRlZiBIQVZFX1BZVEhPTgogIAogIC8qIENsZWFyIHRoZSBxdWl0IGZs YWcuICAqLwotQEAgLTE2NCw2ICsxNjksOSBAQCBzZXRfcXVpdF9mbGFnICh2b2lkKQorQEAgLTE1 OSw2ICsxNjQsOSBAQCBzZXRfcXVpdF9mbGFnICh2b2lkKQogIGludAogIGNoZWNrX3F1aXRfZmxh ZyAodm9pZCkKICB7CkBAIC01OCwxMSArNTgsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL3V0aWxzLmMKICAgIC8qIFRoaXMgaXMgd3JpdHRlbiBpbiBhIHBhcnRpY3VsYXIgd2F5 IHRvIGF2b2lkIHJhY2VzLiAgKi8KICAgIGlmIChxdWl0X2ZsYWcpCiAgICAgIHsKLUluZGV4OiBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi9weXRob24vcHl0aG9uLmMKK0luZGV4OiBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIvcHl0aG9uL3B5dGhvbi5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NS41MC4yMDEzMDExOC5vcmlnL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMy0wMS0yMSAxNjozOTow My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9weXRob24vcHl0 aG9uLmMJMjAxMy0wMS0yMSAxNjozOTozMC42OTgyOTkxNDIgKzAxMDAKLUBAIC0xODEsNiArMTgx LDkgQEAgc2V0X3F1aXRfZmxhZyAodm9pZCkKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5v cmlnL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMy0wOC0wMiAxNjo1ODozMS40NTYwMTY1NzcgKzAy MDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcHl0aG9uL3B5dGhvbi5jCTIwMTMt MDgtMDIgMTY6NTg6NDEuMjI0MDMwNDE2ICswMjAwCitAQCAtMTkxLDYgKzE5MSw5IEBAIHNldF9x dWl0X2ZsYWcgKHZvaWQpCiAgaW50CiAgY2hlY2tfcXVpdF9mbGFnICh2b2lkKQogIHsKCmRpZmYg LS1naXQgYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaCBiL2dkYi1h cmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCmluZGV4IGU2N2MzMzYuLjY4YTZh MWEgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNo CisrKyBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCkBAIC0xLDgg KzEsOCBAQAotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2JyZWFrcG9pbnQuYworSW5k ZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9icmVha3BvaW50LmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEzLTAyLTE1 IDIyOjMxOjM3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2Jy ZWFrcG9pbnQuYwkyMDEzLTAyLTE1IDIyOjM3OjA4LjIxNjM4MTk4OCArMDEwMAotQEAgLTE2MDIw LDYgKzE2MDIwLDUwIEBAIGluaXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQpCistLS0gZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTMtMDgtMDIgMTY6 Mjk6MTYuMDY1NDAyMTE2ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2Jy ZWFrcG9pbnQuYwkyMDEzLTA4LTAyIDE2OjI5OjE3LjA3MzQwMzQ1NiArMDIwMAorQEAgLTE1OTYz LDYgKzE1OTYzLDUwIEBAIGluaXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQpCiAgc3RhdGlj IHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICplbmFibGVicmVha2xpc3QgPSBOVUxMOwogIAogIHZv aWQKQEAgLTUzLDIzICs1MywyMyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYnJl YWtwb2ludC5jCiAgX2luaXRpYWxpemVfYnJlYWtwb2ludCAodm9pZCkKICB7CiAgICBzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqYzsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9icmVh a3BvaW50LmgKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYnJlYWtwb2ludC5o CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9icmVha3BvaW50 LmgJMjAxMy0wMi0wMyAxNjo1NzowNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi9icmVha3BvaW50LmgJMjAxMy0wMi0xNSAyMjozNzoxOS4wMjUzOTU2OTMgKzAx MDAKLUBAIC0xNTU2LDQgKzE1NTYsNyBAQCBleHRlcm4gdm9pZCBoYW5kbGVfc29saWJfZXZlbnQg KHZvaWQpOworLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2JyZWFrcG9pbnQu aAkyMDEzLTA4LTAyIDE2OjI5OjE3LjA3NDQwMzQ1NyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi9icmVha3BvaW50LmgJMjAxMy0wOC0wMiAxNjoyOTozMC4yMjE0MjA4OTYg KzAyMDAKK0BAIC0xNTU1LDQgKzE1NTUsNyBAQCBleHRlcm4gdm9pZCBicmVha3BvaW50X2ZyZWVf b2JqZmlsZSAoc3RyCiAgCi0gZXh0ZXJuIHZvaWQgYnJlYWtwb2ludF9mcmVlX29iamZpbGUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKyBleHRlcm4gY2hhciAqZXBfcGFyc2Vfb3B0aW9uYWxf aWZfY2xhdXNlIChjaGFyICoqYXJnKTsKICAKICtleHRlcm4gdm9pZCBicmVha3BvaW50c19yZWxv Y2F0ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiArCQkJCSAgc3RydWN0IHNlY3Rpb25fb2Zm c2V0cyAqZGVsdGEpOwogKwogICNlbmRpZiAvKiAhZGVmaW5lZCAoQlJFQUtQT0lOVF9IKSAqLwot SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL29iamZpbGVzLmMKK0luZGV4OiBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy9nZGIvb2JqZmlsZXMuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu NTAuMjAxMzAyMTUub3JpZy9nZGIvb2JqZmlsZXMuYwkyMDEzLTAyLTAzIDE2OjU3OjA3LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL29iamZpbGVzLmMJMjAxMy0w Mi0xNSAyMjozNzowOC4yMTczODE5OTAgKzAxMDAKLUBAIC04MzEsNiArODMxLDExIEBAIG9iamZp bGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKKy0tLSBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy5vcmlnL2dkYi9vYmpmaWxlcy5jCTIwMTMtMDgtMDIgMTY6Mjk6MTYuMDY4NDAyMTIw ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL29iamZpbGVzLmMJMjAxMy0w OC0wMiAxNjoyOToxNy4wNzU0MDM0NTggKzAyMDAKK0BAIC04NTEsNiArODUxLDExIEBAIG9iamZp bGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKICAgICAgb2JqZmlsZS0+c2YtPnN5 bV9wcm9iZV9mbnMtPnN5bV9yZWxvY2F0ZV9wcm9iZSAob2JqZmlsZSwKICAJCQkJCQkgICAgbmV3 X29mZnNldHMsIGRlbHRhKTsKICAKCmRpZmYgLS1naXQgYS9nZGItYXJjaGVyLnBhdGNoIGIvZ2Ri LWFyY2hlci5wYXRjaAppbmRleCBhYjA2NTdmLi45OGZmMGY2IDEwMDY0NAotLS0gYS9nZGItYXJj aGVyLnBhdGNoCisrKyBiL2dkYi1hcmNoZXIucGF0Y2gKQEAgLTIsMjAgKzIsMjAgQEAgaHR0cDov L3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL1Byb2plY3RBcmNoZXIKIGh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9nZGIvd2lraS9BcmNoZXJCcmFuY2hNYW5hZ2VtZW50CiAKIEdJVCBzbmFwc2hvdDoKLWNv bW1pdCBiMWY4YzY4MjEzMDNmNmViMDg3ZmI3ZjU3NDA1NDgzYWM4ODEyMjI3Citjb21taXQgYTk4 MGJlM2I5Y2M2Njc3NGFkZmI5YTI1ZGE4MDVmNjVjZmVkNDI0NQogCi1icmFuY2ggamFua3JhdG9j aHZpbC9mZWRvcmExOSAtIHRoZSBtZXJnZSBvZiBicmFuY2hlczoKK2JyYW5jaCBqYW5rcmF0b2No dmlsL2ZlZG9yYTIwIC0gdGhlIG1lcmdlIG9mIGJyYW5jaGVzOgogamFua3JhdG9jaHZpbC92bGEK IHRyb21leS9weXRob24KIAogCiBkaWZmIC0tZ2l0IGEvUkVBRE1FLmFyY2hlciBiL1JFQURNRS5h cmNoZXIKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xZjdhYjQ4CitpbmRl eCAwMDAwMDAwLi4yMTM1N2U0CiAtLS0gL2Rldi9udWxsCiArKysgYi9SRUFETUUuYXJjaGVyCiBA QCAtMCwwICsxLDEzIEBACi0rTWVyZ2UgZm9yIEZlZG9yYSAxOTogaHR0cDovL3BrZ3MuZmVkb3Jh cHJvamVjdC5vcmcvY2dpdC9nZGIuZ2l0LworK01lcmdlIGZvciBGZWRvcmEgMjA6IGh0dHA6Ly9w a2dzLmZlZG9yYXByb2plY3Qub3JnL2NnaXQvZ2RiLmdpdC8KICsKICtqYW5rcmF0b2NodmlsL3Zs YQogK3Ryb21leS9weXRob24KQEAgLTI5LDEwICsyOSwxMCBAQCBpbmRleCAwMDAwMDAwLi4xZjdh YjQ4CiAraW1wbGVtZW50YXRpb24gcGxhbjogICAgICAgICAgICAgaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi8yMDEyLTExL21zZzAwMDk0Lmh0bWwKICtleHBsYW5hdGlvbiBvZiBpdHMgbWVy Z2Ugc3RhdHVzOiBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLzIwMTEtMDMvbXNnMDAwMjEu aHRtbAogZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgotaW5k ZXggZWQzMGRiNS4uNDM1NmJlNyAxMDA2NDQKK2luZGV4IDhmNGVlOWUuLmU5MTRkZmIgMTAwNjQ0 CiAtLS0gYS9nZGIvTWFrZWZpbGUuaW4KICsrKyBiL2dkYi9NYWtlZmlsZS5pbgotQEAgLTEzMTMs NiArMTMxMywxMiBAQCBzdGFtcC1oOiAkKHNyY2RpcikvY29uZmlnLmluIGNvbmZpZy5zdGF0dXMK K0BAIC0xMzUxLDYgKzEzNTEsMTIgQEAgc3RhbXAtaDogJChzcmNkaXIpL2NvbmZpZy5pbiBjb25m aWcuc3RhdHVzCiAgCSAgQ09ORklHX0xJTktTPSBcCiAgCSAgJChTSEVMTCkgY29uZmlnLnN0YXR1 cwogIApAQCAtNDIsMTQgKzQyLDE0IEBAIGluZGV4IGVkMzBkYjUuLjQzNTZiZTcgMTAwNjQ0CiAr CSAgQ09ORklHX0hFQURFUlM9IFwKICsJICAkKFNIRUxMKSBjb25maWcuc3RhdHVzCiArCi0gY29u ZmlnLnN0YXR1czogJChzcmNkaXIpL2NvbmZpZ3VyZSBjb25maWd1cmUudGd0IGNvbmZpZ3VyZS5o b3N0CisgY29uZmlnLnN0YXR1czogJChzcmNkaXIpL2NvbmZpZ3VyZSBjb25maWd1cmUudGd0IGNv bmZpZ3VyZS5ob3N0IGRldmVsb3BtZW50LnNoCiAgCSQoU0hFTEwpIGNvbmZpZy5zdGF0dXMgLS1y ZWNoZWNrCiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2FkYS1sYW5nLmMgYi9nZGIvYWRhLWxhbmcuYwot aW5kZXggNzVmMWMzZC4uNjI0MzgxOCAxMDA2NDQKK2luZGV4IGRjNWYyYjYuLjVmZWFjNDkgMTAw NjQ0CiAtLS0gYS9nZGIvYWRhLWxhbmcuYwogKysrIGIvZ2RiL2FkYS1sYW5nLmMKLUBAIC0xMjI4 Nyw2ICsxMjI4Nyw3IEBAIGFkYV9vcGVyYXRvcl9sZW5ndGggKGNvbnN0IHN0cnVjdCBleHByZXNz aW9uICpleHAsIGludCBwYywgaW50ICpvcGxlbnAsCitAQCAtMTIzMDksNiArMTIzMDksNyBAQCBh ZGFfb3BlcmF0b3JfbGVuZ3RoIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcGMs IGludCAqb3BsZW5wLAogIAogIHN0YXRpYyBpbnQKICBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCkBAIC01Nyw3ICs1Nyw3IEBAIGluZGV4IDc1ZjFj M2QuLjYyNDM4MTggMTAwNjQ0CiAgCQkgICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAogIAkJICAgIHZvaWQgKmRhdGEpCiAgewotQEAg LTEyMzAxLDEyICsxMjMwMiwxNSBAQCBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBleHByZXNz aW9uICpleHAsIGludCBwb3MsCitAQCAtMTIzMjMsMTIgKzEyMzI0LDE1IEBAIGFkYV9vcGVyYXRv cl9jaGVjayAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKICAJYnJlYWs7CiAgCiAg ICAgICAgZGVmYXVsdDoKQEAgLTc2LDEwICs3NiwxMCBAQCBpbmRleCA3NWYxYzNkLi42MjQzODE4 IDEwMDY0NAogICAgICByZXR1cm4gMTsKICAKIGRpZmYgLS1naXQgYS9nZGIvYmxvY2suYyBiL2dk Yi9ibG9jay5jCi1pbmRleCAyNjM4ZGU4Li5iMjk2YWUwIDEwMDY0NAoraW5kZXggNjQzZTE0NC4u NzRjNTE2YiAxMDA2NDQKIC0tLSBhL2dkYi9ibG9jay5jCiArKysgYi9nZGIvYmxvY2suYwotQEAg LTY5MiwzICs2OTIsMjEgQEAgYmxvY2tfaXRlcl9tYXRjaF9uZXh0IChjb25zdCBjaGFyICpuYW1l LAorQEAgLTY5MywzICs2OTMsMjEgQEAgYmxvY2tfaXRlcl9tYXRjaF9uZXh0IChjb25zdCBjaGFy ICpuYW1lLAogIAogICAgcmV0dXJuIGJsb2NrX2l0ZXJfbWF0Y2hfc3RlcCAoaXRlcmF0b3IsIG5h bWUsIGNvbXBhcmUsIDApOwogIH0KQEAgLTExMywxMCArMTEzLDEwIEBAIGluZGV4IDAyZTdlOGIu LjI5MzE0MDEgMTAwNjQ0CiArCiAgI2VuZGlmIC8qIEJMT0NLX0ggKi8KIGRpZmYgLS1naXQgYS9n ZGIvYnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQuYwotaW5kZXggZDZmOGJjNS4uOGExNDIy NCAxMDA2NDQKK2luZGV4IDFlODk0MDcuLjFmNGRlMzMgMTAwNjQ0CiAtLS0gYS9nZGIvYnJlYWtw b2ludC5jCiArKysgYi9nZGIvYnJlYWtwb2ludC5jCi1AQCAtMTU2NTMsNiArMTU2NTMsMjQgQEAg YWxsX3RyYWNlcG9pbnRzICh2b2lkKQorQEAgLTE1NjA1LDYgKzE1NjA1LDI0IEBAIGFsbF90cmFj ZXBvaW50cyAodm9pZCkKICAgIHJldHVybiB0cF92ZWM7CiAgfQogIApAQCAtMTQxLDcgKzE0MSw3 IEBAIGluZGV4IGQ2ZjhiYzUuLjhhMTQyMjQgMTAwNjQ0CiAgDAogIC8qIFRoaXMgaGVscCBzdHJp bmcgaXMgdXNlZCBmb3IgdGhlIGJyZWFrLCBoYnJlYWssIHRicmVhayBhbmQgdGhicmVhawogICAg IGNvbW1hbmRzLiAgSXQgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIHRvIHByZXZlbnQgZHVwbGljYXRp b24uCi1AQCAtMTY2MzYsNCArMTY2NTQsNyBAQCBhZ2VudC1wcmludGYgXCJwcmludGYgZm9ybWF0 IHN0cmluZ1wiLCBhcmcxLCBhcmcyLCBhcmczLCAuLi4sIGFyZ25cblwKK0BAIC0xNjU2OCw0ICsx NjU4Niw3IEBAIGFnZW50LXByaW50ZiBcInByaW50ZiBmb3JtYXQgc3RyaW5nXCIsIGFyZzEsIGFy ZzIsIGFyZzMsIC4uLiwgYXJnblxuXAogICAgYXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9pbnRz ID0gMTsKICAKICAgIG9ic2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChicmVha3BvaW50 X2Fib3V0X3RvX3Byb2NlZWQpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIGluZGV4IGQ2ZjhiYzUuLjhh MTQyMjQgMTAwNjQ0CiArI2VuZGlmCiAgfQogZGlmZiAtLWdpdCBhL2dkYi9jLXR5cGVwcmludC5j IGIvZ2RiL2MtdHlwZXByaW50LmMKLWluZGV4IGNhOGQ4OWIuLjgxMWFkNzIgMTAwNjQ0CitpbmRl eCBiZjQ1NjRmLi5lOGQwMjgxIDEwMDY0NAogLS0tIGEvZ2RiL2MtdHlwZXByaW50LmMKICsrKyBi L2dkYi9jLXR5cGVwcmludC5jCiBAQCAtNjg5LDcgKzY4OSwxMyBAQCBjX3R5cGVfcHJpbnRfdmFy c3BlY19zdWZmaXggKHN0cnVjdCB0eXBlICp0eXBlLApAQCAtMTY4LDIwICsxNjgsMzMgQEAgaW5k ZXggY2E4ZDg5Yi4uODExYWQ3MiAxMDA2NDQKICAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0s ICIlcyIsIAogIAkJCSAgICBwbG9uZ2VzdCAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpKTsK ICAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAoaXNfdmVjdG9yID8gIikpKSIgOiAiXSIpKTsK K2RpZmYgLS1naXQgYS9nZGIvY2xlYW51cHMuYyBiL2dkYi9jbGVhbnVwcy5jCitpbmRleCA4OThl NTI2Li4xOGViYWVlIDEwMDY0NAorLS0tIGEvZ2RiL2NsZWFudXBzLmMKKysrKyBiL2dkYi9jbGVh bnVwcy5jCitAQCAtMjYxLDkgKzI2MSwxMSBAQCBzYXZlX2ZpbmFsX2NsZWFudXBzICh2b2lkKQor IHN0YXRpYyB2b2lkCisgcmVzdG9yZV9teV9jbGVhbnVwcyAoc3RydWN0IGNsZWFudXAgKipwbXlf Y2hhaW4sIHN0cnVjdCBjbGVhbnVwICpjaGFpbikKKyB7CisrI2lmIDAgLyogYXJjaGVyLWphbmty YXRvY2h2aWwtdmxhICovCisgICBpZiAoKnBteV9jaGFpbiAhPSBTRU5USU5FTF9DTEVBTlVQKQor ICAgICBpbnRlcm5hbF93YXJuaW5nIChfX0ZJTEVfXywgX19MSU5FX18sCisgCQkgICAgICBfKCJy ZXN0b3JlX215X2NsZWFudXBzIGhhcyBmb3VuZCBhIHN0YWxlIGNsZWFudXAiKSk7CisrI2VuZGlm CisgCisgICAqcG15X2NoYWluID0gY2hhaW47CisgfQogZGlmZiAtLWdpdCBhL2dkYi9kYXRhLWRp cmVjdG9yeS9NYWtlZmlsZS5pbiBiL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgotaW5k ZXggZDk4YWM3Ny4uZjZhNGI5OSAxMDA2NDQKK2luZGV4IGRlYzYyMDcuLmZiYjRkYzAgMTAwNjQ0 CiAtLS0gYS9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KICsrKyBiL2dkYi9kYXRhLWRp cmVjdG9yeS9NYWtlZmlsZS5pbgotQEAgLTUzLDE2ICs1MywyMSBAQCBQWVRIT05fRElSID0gcHl0 aG9uCi0gUFlUSE9OX0lOU1RBTExfRElSID0gJChERVNURElSKSQoR0RCX0RBVEFESVIpLyQoUFlU SE9OX0RJUikKLSBQWVRIT05fRklMRVMgPSBcCi0gCWdkYi9fX2luaXRfXy5weSBcCi0tCWdkYi90 eXBlcy5weSBcCi0tCWdkYi9wcmludGluZy5weSBcCi0tCWdkYi9wcm9tcHQucHkgXAorQEAgLTYx LDEzICs2MSwyMSBAQCBQWVRIT05fRklMRVMgPSBcCisgCWdkYi9wcmludGluZy5weSBcCisgCWdk Yi9wcm9tcHQucHkgXAogIAlnZGIvY29tbWFuZC9fX2luaXRfXy5weSBcCiArCWdkYi9jb21tYW5k L2lnbm9yZV9lcnJvcnMucHkgXAogKwlnZGIvY29tbWFuZC9wYWhvbGUucHkgXAorIAlnZGIvY29t bWFuZC9mcmFtZV9maWx0ZXJzLnB5IFwKICAJZ2RiL2NvbW1hbmQvdHlwZV9wcmludGVycy5weSBc CiAgCWdkYi9jb21tYW5kL3ByZXR0eV9wcmludGVycy5weSBcCiAgCWdkYi9jb21tYW5kL3Byb21w dC5weSBcCkBAIC0xOTYsMTMgKzIwOSwxMyBAQCBpbmRleCBkOThhYzc3Li5mNmE0Yjk5IDEwMDY0 NAogKwlnZGIvcHJvbXB0LnB5IFwKICsJZ2RiL3R5cGVzLnB5CiAgCi0gRkxBR1NfVE9fUEFTUyA9 IFwKLSAJInByZWZpeD0kKHByZWZpeCkiIFwKKyBTWVNURU1fR0RCSU5JVF9ESVIgPSBzeXN0ZW0t Z2RiaW5pdAorIFNZU1RFTV9HREJJTklUX0lOU1RBTExfRElSID0gJChERVNURElSKSQoR0RCX0RB VEFESVIpLyQoU1lTVEVNX0dEQklOSVRfRElSKQogZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiLnRl eGluZm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZvCi1pbmRleCBhNjA3MTY2Li42OTEzNjI4IDEwMDY0 NAoraW5kZXggY2IzOTNlOC4uMWRmY2EyMiAxMDA2NDQKIC0tLSBhL2dkYi9kb2MvZ2RiLnRleGlu Zm8KICsrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLUBAIC0xMjE2LDYgKzEyMTYsMTYgQEAgZm9y IHJlbW90ZSBkZWJ1Z2dpbmcuCitAQCAtMTIyMSw2ICsxMjIxLDE2IEBAIGZvciByZW1vdGUgZGVi dWdnaW5nLgogIFJ1biB1c2luZyBAdmFye2RldmljZX0gZm9yIHlvdXIgcHJvZ3JhbSdzIHN0YW5k YXJkIGlucHV0IGFuZCBvdXRwdXQuCiAgQGMgRklYTUU6IGtpbmdkb24gdGhpbmtzIHRoZXJlIGlz IG1vcmUgdG8gLXR0eS4gIEludmVzdGlnYXRlLgogIApAQCAtMjE5LDcgKzIzMiw3IEBAIGluZGV4 IGE2MDcxNjYuLjY5MTM2MjggMTAwNjQ0CiAgQGMgcmVzb2x2ZSB0aGUgc2l0dWF0aW9uIG9mIHRo ZXNlIGV2ZW50dWFsbHkKICBAaXRlbSAtdHVpCiAgQGNpbmRleCBAY29kZXstLXR1aX0KLUBAIC0y MjgwNCw4ICsyMjgxNCw2IEBAIGNvbnRhaW5pbmcgQGNvZGV7ZW5kfS4gIEZvciBleGFtcGxlOgor QEAgLTIzMTg5LDggKzIzMTk5LDYgQEAgY29udGFpbmluZyBAY29kZXtlbmR9LiAgRm9yIGV4YW1w bGU6CiAgCiAgQHNtYWxsZXhhbXBsZQogIChAdmFsdWV7R0RCUH0pIHB5dGhvbgpAQCAtMjI4LDcg KzI0MSw3IEBAIGluZGV4IGE2MDcxNjYuLjY5MTM2MjggMTAwNjQ0CiAgPnByaW50IDIzCiAgPmVu ZAogIDIzCi1AQCAtMjI4MTksNiArMjI4MjcsMTQgQEAgY29udHJvbGxlZCB1c2luZyBAY29kZXtz ZXQgcHl0aG9uIHByaW50LXN0YWNrfTogaWYgQGNvZGV7ZnVsbH0sIHRoZW4KK0BAIC0yMzIwNCw2 ICsyMzIxMiwxNCBAQCBjb250cm9sbGVkIHVzaW5nIEBjb2Rle3NldCBweXRob24gcHJpbnQtc3Rh Y2t9OiBpZiBAY29kZXtmdWxsfSwgdGhlbgogIGZ1bGwgUHl0aG9uIHN0YWNrIHByaW50aW5nIGlz IGVuYWJsZWQ7IGlmIEBjb2Rle25vbmV9LCB0aGVuIFB5dGhvbiBzdGFjawogIGFuZCBtZXNzYWdl IHByaW50aW5nIGlzIGRpc2FibGVkOyBpZiBAY29kZXttZXNzYWdlfSwgdGhlIGRlZmF1bHQsIG9u bHkKICB0aGUgbWVzc2FnZSBjb21wb25lbnQgb2YgdGhlIGVycm9yIGlzIHByaW50ZWQuCkBAIC0y NDMsMjYgKzI1NiwxMSBAQCBpbmRleCBhNjA3MTY2Li42OTEzNjI4IDEwMDY0NAogIEBlbmQgdGFi bGUKICAKICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGV4ZWN1dGUgYSBQeXRob24gc2NyaXB0IGZy b20gdGhlIEB2YWx1ZXtHREJOfQotQEAgLTIyODQwLDYgKzIyODU2LDE0IEBAIGFuZCB0aHVzIGlz IGFsd2F5cyBhdmFpbGFibGUuCi0gQGNpbmRleCBweXRob24gYXBpCi0gQGNpbmRleCBwcm9ncmFt bWluZyBpbiBweXRob24KLSAKLStZb3UgY2FuIGdldCBxdWljayBvbmxpbmUgaGVscCBmb3IgQHZh bHVle0dEQk59J3MgUHl0aG9uIEFQSSBieSBpc3N1aW5nCi0rdGhlIGNvbW1hbmQgQHd7QGtiZHtw eXRob24gaGVscCAoZ2RiKX19LgotKwotK0Z1bmN0aW9ucyBhbmQgbWV0aG9kcyB3aGljaCBoYXZl IHR3byBvciBtb3JlIG9wdGlvbmFsIGFyZ3VtZW50cyBhbGxvdwotK3RoZW0gdG8gYmUgc3BlY2lm aWVkIHVzaW5nIGtleXdvcmQgc3ludGF4LiAgVGhpcyBhbGxvd3MgcGFzc2luZyBzb21lCi0rb3B0 aW9uYWwgYXJndW1lbnRzIHdoaWxlIHNraXBwaW5nIG90aGVycy4gIEV4YW1wbGU6Ci0rQHd7QGNv ZGV7Z2RiLnNvbWVfZnVuY3Rpb24gKCdmb28nLCBiYXIgPSAxLCBiYXogPSAyKX19LgotKwotIEBj aW5kZXggcHl0aG9uIHN0ZG91dAotIEBjaW5kZXggcHl0aG9uIHBhZ2luYXRpb24KLSBBdCBzdGFy dHVwLCBAdmFsdWV7R0RCTn0gb3ZlcnJpZGVzIFB5dGhvbidzIEBjb2Rle3N5cy5zdGRvdXR9IGFu ZAogZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiaW50LnRleGluZm8gYi9nZGIvZG9jL2dkYmludC50 ZXhpbmZvCi1pbmRleCA0YTc1YzI2Li45MTQ0NmZlIDEwMDY0NAoraW5kZXggNjA4MDVhZC4uNTQx MTAxMiAxMDA2NDQKIC0tLSBhL2dkYi9kb2MvZ2RiaW50LnRleGluZm8KICsrKyBiL2dkYi9kb2Mv Z2RiaW50LnRleGluZm8KLUBAIC0yMTAxLDYgKzIxMDEsMTggQEAgdGltZSwgYW5kIHNvIHdlIGF0 dGVtcHQgdG8gaGFuZGxlIHN5bWJvbHMgaW5jcmVtZW50YWxseS4gIEZvciBpbnN0YW5jZSwKK0BA IC0yMTQ2LDYgKzIxNDYsMTggQEAgdGltZSwgYW5kIHNvIHdlIGF0dGVtcHQgdG8gaGFuZGxlIHN5 bWJvbHMgaW5jcmVtZW50YWxseS4gIEZvciBpbnN0YW5jZSwKICB3ZSBjcmVhdGUgQGRmbntwYXJ0 aWFsIHN5bWJvbCB0YWJsZXN9IGNvbnNpc3Rpbmcgb2Ygb25seSBzZWxlY3RlZAogIHN5bWJvbHMs IGFuZCBvbmx5IGV4cGFuZCB0aGVtIHRvIGZ1bGwgc3ltYm9sIHRhYmxlcyB3aGVuIG5lY2Vzc2Fy eS4KICAKQEAgLTI4MSw3ICsyNzksNyBAQCBpbmRleCA0YTc1YzI2Li45MTQ0NmZlIDEwMDY0NAog IEBzZWN0aW9uIFN5bWJvbCBSZWFkaW5nCiAgCiAgQGNpbmRleCBzeW1ib2wgcmVhZGluZwotQEAg LTIxOTMsNiArMjIwNSw3IEBAIHN5bXRhYi4gIFVwb24gcmV0dXJuLCBAY29kZXtwc3QtPnJlYWRp bn0gc2hvdWxkIGhhdmUgYmVlbiBzZXQgdG8gMSwgYW5kCitAQCAtMjIzOCw2ICsyMjUwLDcgQEAg c3ltdGFiLiAgVXBvbiByZXR1cm4sIEBjb2Rle3BzdC0+cmVhZGlufSBzaG91bGQgaGF2ZSBiZWVu IHNldCB0byAxLCBhbmQKICB6ZXJvIGlmIHRoZXJlIHdlcmUgbm8gc3ltYm9scyBpbiB0aGF0IHBh cnQgb2YgdGhlIHN5bWJvbCBmaWxlLgogIEBlbmQgdGFibGUKICAKQEAgLTI4OSw3ICsyODcsNyBA QCBpbmRleCA0YTc1YzI2Li45MTQ0NmZlIDEwMDY0NAogIEBzZWN0aW9uIFBhcnRpYWwgU3ltYm9s IFRhYmxlcwogIAogIEB2YWx1ZXtHREJOfSBoYXMgdGhyZWUgdHlwZXMgb2Ygc3ltYm9sIHRhYmxl czoKLUBAIC0yMjk0LDYgKzIzMDcsNyBAQCBhbmQgcGFydGlhbCBzeW1ib2wgdGFibGVzIGJlaGlu ZCBhIHNldCBvZiBmdW5jdGlvbiBwb2ludGVycyBrbm93biBhcworQEAgLTIzMzksNiArMjM1Miw3 IEBAIGFuZCBwYXJ0aWFsIHN5bWJvbCB0YWJsZXMgYmVoaW5kIGEgc2V0IG9mIGZ1bmN0aW9uIHBv aW50ZXJzIGtub3duIGFzCiAgdGhlIEBkZm57cXVpY2sgc3ltYm9sIGZ1bmN0aW9uc30uICBUaGVz ZSBhcmUgZG9jdW1lbnRlZCBpbgogIEBmaWxle3N5bWZpbGUuaH0uCiAgCkBAIC0yOTcsNyArMjk1 LDcgQEAgaW5kZXggNGE3NWMyNi4uOTE0NDZmZSAxMDA2NDQKICBAc2VjdGlvbiBUeXBlcwogIAog IEB1bm51bWJlcmVkc3Vic2VjIEZ1bmRhbWVudGFsIFR5cGVzIChlLmcuLCBAY29kZXtGVF9WT0lE fSwgQGNvZGV7RlRfQk9PTEVBTn0pLgotQEAgLTIzMTYsNiArMjMzMCw3IEBAIHR5cGVzIG1hcCB0 byBvbmUgQGNvZGV7VFlQRV9DT0RFXyp9IHR5cGUsIGFuZCBhcmUgZGlzdGluZ3Vpc2hlZCBieQor QEAgLTIzNjEsNiArMjM3NSw3IEBAIHR5cGVzIG1hcCB0byBvbmUgQGNvZGV7VFlQRV9DT0RFXyp9 IHR5cGUsIGFuZCBhcmUgZGlzdGluZ3Vpc2hlZCBieQogIG90aGVyIG1lbWJlcnMgb2YgdGhlIHR5 cGUgc3RydWN0LCBzdWNoIGFzIHdoZXRoZXIgdGhlIHR5cGUgaXMgc2lnbmVkCiAgb3IgdW5zaWdu ZWQsIGFuZCBob3cgbWFueSBiaXRzIGl0IHVzZXMuCiAgCkBAIC0zMDUsNyArMzAzLDcgQEAgaW5k ZXggNGE3NWMyNi4uOTE0NDZmZSAxMDA2NDQKICBAdW5udW1iZXJlZHN1YnNlYyBCdWlsdGluIFR5 cGVzIChlLmcuLCBAY29kZXtidWlsdGluX3R5cGVfdm9pZH0sIEBjb2Rle2J1aWx0aW5fdHlwZV9j aGFyfSkuCiAgCiAgVGhlc2UgYXJlIGluc3RhbmNlcyBvZiB0eXBlIHN0cnVjdHMgdGhhdCByb3Vn aGx5IGNvcnJlc3BvbmQgdG8KLUBAIC0yMzMwLDYgKzIzNDUsNyBAQCBvbmx5IG9uZSBpbnN0YW5j ZSBleGlzdHMsIHdoaWxlIEBmaWxle2MtbGFuZy5jfSBidWlsZHMgYXMgbWFueQorQEAgLTIzNzUs NiArMjM5MCw3IEBAIG9ubHkgb25lIGluc3RhbmNlIGV4aXN0cywgd2hpbGUgQGZpbGV7Yy1sYW5n LmN9IGJ1aWxkcyBhcyBtYW55CiAgQGNvZGV7VFlQRV9DT0RFX0lOVH0gdHlwZXMgYXMgbmVlZGVk LCB3aXRoIGVhY2ggb25lIGFzc29jaWF0ZWQgd2l0aAogIHNvbWUgcGFydGljdWxhciBvYmpmaWxl LgogIApAQCAtMzEzLDcgKzMxMSw3IEBAIGluZGV4IDRhNzVjMjYuLjkxNDQ2ZmUgMTAwNjQ0CiAg QHNlY3Rpb24gT2JqZWN0IEZpbGUgRm9ybWF0cwogIEBjaW5kZXggb2JqZWN0IGZpbGUgZm9ybWF0 cwogIAotQEAgLTI0MTUsNiArMjQzMSw3IEBAIFNPTSwgd2hpY2ggaXMgYSBjcm9zcy1sYW5ndWFn ZSBBQkkpLgorQEAgLTI0NjAsNiArMjQ3Niw3IEBAIFNPTSwgd2hpY2ggaXMgYSBjcm9zcy1sYW5n dWFnZSBBQkkpLgogIAogIFRoZSBTT00gcmVhZGVyIGlzIGluIEBmaWxle3NvbXJlYWQuY30uCiAg CkBAIC0zMjEsNyArMzE5LDcgQEAgaW5kZXggNGE3NWMyNi4uOTE0NDZmZSAxMDA2NDQKICBAc2Vj dGlvbiBEZWJ1Z2dpbmcgRmlsZSBGb3JtYXRzCiAgCiAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBj aGFyYWN0ZXJpc3RpY3Mgb2YgZGVidWdnaW5nIGluZm9ybWF0aW9uIHRoYXQKLUBAIC0yNDg2LDYg KzI1MDMsNyBAQCBEV0FSRiAzIGlzIGFuIGltcHJvdmVkIHZlcnNpb24gb2YgRFdBUkYgMi4KK0BA IC0yNTMxLDYgKzI1NDgsNyBAQCBEV0FSRiAzIGlzIGFuIGltcHJvdmVkIHZlcnNpb24gb2YgRFdB UkYgMi4KICBAY2luZGV4IFNPTSBkZWJ1Z2dpbmcgaW5mbwogIExpa2UgQ09GRiwgdGhlIFNPTSBk ZWZpbml0aW9uIGluY2x1ZGVzIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4KICAKQEAgLTMyOSw3ICsz MjcsNyBAQCBpbmRleCA0YTc1YzI2Li45MTQ0NmZlIDEwMDY0NAogIEBzZWN0aW9uIEFkZGluZyBh IE5ldyBTeW1ib2wgUmVhZGVyIHRvIEB2YWx1ZXtHREJOfQogIAogIEBjaW5kZXggYWRkaW5nIGRl YnVnZ2luZyBpbmZvIHJlYWRlcgotQEAgLTI1MDgsNiArMjUyNiw3IEBAIHdpbGwgb25seSBldmVy IGJlIGltcGxlbWVudGVkIGJ5IG9uZSBvYmplY3QgZmlsZSBmb3JtYXQgbWF5IGJlIGNhbGxlZAor QEAgLTI1NTMsNiArMjU3MSw3IEBAIHdpbGwgb25seSBldmVyIGJlIGltcGxlbWVudGVkIGJ5IG9u ZSBvYmplY3QgZmlsZSBmb3JtYXQgbWF5IGJlIGNhbGxlZAogIGRpcmVjdGx5LiAgVGhpcyBpbnRl cmZhY2Ugc2hvdWxkIGJlIGRlc2NyaWJlZCBpbiBhIGZpbGUKICBAZmlsZXtiZmQvbGliQHZhcnt4 eXp9Lmh9LCB3aGljaCBpcyBpbmNsdWRlZCBieSBAdmFsdWV7R0RCTn0uCiAgCkBAIC0zMzcsNyAr MzM1LDcgQEAgaW5kZXggNGE3NWMyNi4uOTE0NDZmZSAxMDA2NDQKICBAc2VjdGlvbiBNZW1vcnkg TWFuYWdlbWVudCBmb3IgU3ltYm9sIEZpbGVzCiAgCiAgTW9zdCBtZW1vcnkgYXNzb2NpYXRlZCB3 aXRoIGEgbG9hZGVkIHN5bWJvbCBmaWxlIGlzIHN0b3JlZCBvbgotQEAgLTI1MTksMTAgKzI1Mzgs NDUgQEAgcmVsZWFzZWQgd2hlbiB0aGUgb2JqZmlsZSBpcyB1bmxvYWRlZCBvciByZWxvYWRlZC4g IFRoZXJlZm9yZSBvbmUKK0BAIC0yNTY0LDEwICsyNTgzLDQ1IEBAIHJlbGVhc2VkIHdoZW4gdGhl IG9iamZpbGUgaXMgdW5sb2FkZWQgb3IgcmVsb2FkZWQuICBUaGVyZWZvcmUgb25lCiAgb2JqZmls ZSBtdXN0IG5vdCByZWZlcmVuY2Ugc3ltYm9sIG9yIHR5cGUgZGF0YSBmcm9tIGFub3RoZXIgb2Jq ZmlsZTsKICB0aGV5IGNvdWxkIGJlIHVubG9hZGVkIGF0IGRpZmZlcmVudCB0aW1lcy4KICAKQEAg LTQ0MCwxMCArNDM4LDEwIEBAIGluZGV4IGU4NTQ4NmEuLmU3YWM3OTkgMTAwNjQ0CiAgCiAgLyog VGhlIGxvY2F0aW9uIG9mIGEgdmFsdWUuICAqLwogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2Mu YyBiL2dkYi9kd2FyZjJsb2MuYwotaW5kZXggOGE2MWFlNi4uNDUxYTc1OSAxMDA2NDQKK2luZGV4 IDAyYWZjZGYuLjVhMjE2MjkgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYybG9jLmMKICsrKyBiL2dk Yi9kd2FyZjJsb2MuYwotQEAgLTI5OCw2ICsyOTgsOSBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRv bgorQEAgLTMwNiw2ICszMDYsOSBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbgogIHsKICAgIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBl cl9jdTsKQEAgLTQ1Myw0MiArNDUxLDcgQEAgaW5kZXggOGE2MWFlNi4uNDUxYTc1OSAxMDA2NDQK ICB9OwogIAogIC8qIEhlbHBlciBmdW5jdGlvbnMgZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVz Yy4gICovCi1AQCAtMzYxLDE2ICszNjQsMTQgQEAgc3RhdGljIHZvaWQKLSBkd2FyZl9leHByX2Zy YW1lX2Jhc2VfMSAoc3RydWN0IHN5bWJvbCAqZnJhbWVmdW5jLCBDT1JFX0FERFIgcGMsCi0gCQkJ IGNvbnN0IGdkYl9ieXRlICoqc3RhcnQsIHNpemVfdCAqbGVuZ3RoKQotIHsKLS0gIGlmIChTWU1C T0xfTE9DQVRJT05fQkFUT04gKGZyYW1lZnVuYykgPT0gTlVMTCkKLS0gICAgKmxlbmd0aCA9IDA7 Ci0tICBlbHNlIGlmIChTWU1CT0xfQ09NUFVURURfT1BTIChmcmFtZWZ1bmMpID09ICZkd2FyZjJf bG9jbGlzdF9mdW5jcykKLSsgIGlmIChTWU1CT0xfQ09NUFVURURfT1BTIChmcmFtZWZ1bmMpID09 ICZkd2FyZjJfbG9jbGlzdF9mdW5jcykKLSAgICAgewotICAgICAgIHN0cnVjdCBkd2FyZjJfbG9j bGlzdF9iYXRvbiAqc3ltYmF0b247Ci0gCi0gICAgICAgc3ltYmF0b24gPSBTWU1CT0xfTE9DQVRJ T05fQkFUT04gKGZyYW1lZnVuYyk7Ci0gICAgICAgKnN0YXJ0ID0gZHdhcmYyX2ZpbmRfbG9jYXRp b25fZXhwcmVzc2lvbiAoc3ltYmF0b24sIGxlbmd0aCwgcGMpOwotICAgICB9Ci0tICBlbHNlCi0r ICBlbHNlIGlmIChTWU1CT0xfQ09NUFVURURfT1BTIChmcmFtZWZ1bmMpID09ICZkd2FyZjJfbG9j ZXhwcl9mdW5jcykKLSAgICAgewotICAgICAgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAq c3ltYmF0b247Ci0gCi1AQCAtMzgzLDEwICszODQsMjMgQEAgZHdhcmZfZXhwcl9mcmFtZV9iYXNl XzEgKHN0cnVjdCBzeW1ib2wgKmZyYW1lZnVuYywgQ09SRV9BRERSIHBjLAotICAgICAgIGVsc2UK LSAJKmxlbmd0aCA9IDA7Ci0gICAgIH0KLSsgIGVsc2UgaWYgKFNZTUJPTF9DT01QVVRFRF9PUFMg KGZyYW1lZnVuYykgPT0gJmR3YXJmMl9taXNzaW5nX2Z1bmNzKQotKyAgICB7Ci0rICAgICAgc3Ry dWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpzeW1iYXRvbjsKLSsKLSsgICAgICBzeW1iYXRvbiA9 IFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoZnJhbWVmdW5jKTsKLSsgICAgICBnZGJfYXNzZXJ0IChz eW1iYXRvbiA9PSBOVUxMKTsKLSsgICAgICAqbGVuZ3RoID0gMDsKLSsgICAgfQotKyAgZWxzZQot KyAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAgIF8oIlVuc3Vw cG9ydGVkIFNZTUJPTF9DT01QVVRFRF9PUFMgJXAgZm9yIFwiJXNcIiIpLAotKwkJICAgIFNZTUJP TF9DT01QVVRFRF9PUFMgKGZyYW1lZnVuYyksCi0rCQkgICAgU1lNQk9MX1BSSU5UX05BTUUgKGZy YW1lZnVuYykpOworQEAgLTQyMSw3ICs0MjQsNyBAQCBkd2FyZl9leHByX2ZyYW1lX2Jhc2VfMSAo c3RydWN0IHN5bWJvbCAqZnJhbWVmdW5jLCBDT1JFX0FERFIgcGMsCiAgCiAgICBpZiAoKmxlbmd0 aCA9PSAwKQogICAgICBlcnJvciAoXygiQ291bGQgbm90IGZpbmQgdGhlIGZyYW1lIGJhc2UgZm9y IFwiJXNcIi4iKSwKQEAgLTQ5Nyw3ICs0NjAsNyBAQCBpbmRleCA4YTYxYWU2Li40NTFhNzU5IDEw MDY0NAogIH0KICAKICAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2Nf ZGVzYy4gIENvbXB1dGVzIHRoZSBDRkEgZm9yCi1AQCAtNDUzLDYgKzQ2Nyw4NSBAQCBkd2FyZl9l eHByX2R3YXJmX2NhbGwgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwgY3Vfb2Zmc2V0 IGRpZV9vZmZzZXQpCitAQCAtNDg4LDYgKzQ5MSw4NSBAQCBkd2FyZl9leHByX2R3YXJmX2NhbGwg KHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwgY3Vfb2Zmc2V0IGRpZV9vZmZzZXQpCiAg CQkgICAgIGN0eC0+ZnVuY3MtPmdldF9mcmFtZV9wYywgY3R4LT5iYXRvbik7CiAgfQogIApAQCAt NTgzLDcgKzU0Niw3IEBAIGluZGV4IDhhNjFhZTYuLjQ1MWE3NTkgMTAwNjQ0CiAgLyogQ2FsbGJh Y2sgZnVuY3Rpb24gZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYy4gICovCiAgCiAgc3RhdGlj IHN0cnVjdCB0eXBlICoKLUBAIC0xMTU2LDEwICsxMjQ5LDEyIEBAIGR3YXJmX2V4cHJfcHVzaF9k d2FyZl9yZWdfZW50cnlfdmFsdWUgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKK0BA IC0xMjAyLDEwICsxMjg0LDEyIEBAIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFs dWUgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKICAKICAgIHNhdmVkX2N0eC5nZGJh cmNoID0gY3R4LT5nZGJhcmNoOwogICAgc2F2ZWRfY3R4LmFkZHJfc2l6ZSA9IGN0eC0+YWRkcl9z aXplOwpAQCAtNTk2LDcgKzU1OSw3IEBAIGluZGV4IDhhNjFhZTYuLjQ1MWE3NTkgMTAwNjQ0CiAg ICBjdHgtPm9mZnNldCA9IGR3YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQgKGJhdG9uX2xvY2FsLnBl cl9jdSk7CiAgICBjdHgtPmJhdG9uID0gJmJhdG9uX2xvY2FsOwogIAotQEAgLTExNjcsMTAgKzEy NjIsOTUgQEAgZHdhcmZfZXhwcl9wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAoc3RydWN0IGR3 YXJmX2V4cHJfY29udGV4dCAqY3R4LAorQEAgLTEyMTMsMTAgKzEyOTcsOTUgQEAgZHdhcmZfZXhw cl9wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAq Y3R4LAogIAogICAgY3R4LT5nZGJhcmNoID0gc2F2ZWRfY3R4LmdkYmFyY2g7CiAgICBjdHgtPmFk ZHJfc2l6ZSA9IHNhdmVkX2N0eC5hZGRyX3NpemU7CkBAIC02OTIsOSArNjU1LDkgQEAgaW5kZXgg OGE2MWFlNi4uNDUxYTc1OSAxMDA2NDQKICAvKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgZHdhcmYy X2V2YWx1YXRlX2xvY19kZXNjLgogICAgIEZldGNoIHRoZSBhZGRyZXNzIGluZGV4ZWQgYnkgRFdf T1BfR05VX2FkZHJfaW5kZXguICAqLwogIAotQEAgLTIxMDYsMjIgKzIyODYsNiBAQCBpbnZhbGlk X3N5bnRoZXRpY19wb2ludGVyICh2b2lkKQotIAkgICAicmVmZXJlbmNlZCB2aWEgc3ludGhldGlj IHBvaW50ZXIiKSk7Ci0gfQorQEAgLTIxNzcsMjIgKzIzNDYsNiBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGx2YWxfZnVuY3MgcGllY2VkX3ZhbHVlX2Z1bmNzID0geworICAgZnJlZV9waWVjZWRfdmFs dWVfY2xvc3VyZQorIH07CiAgCiAtLyogVmlydHVhbCBtZXRob2QgdGFibGUgZm9yIGR3YXJmMl9l dmFsdWF0ZV9sb2NfZGVzY19mdWxsIGJlbG93LiAgKi8KIC0KQEAgLTcxNSw3ICs2NzgsNyBAQCBp bmRleCA4YTYxYWU2Li40NTFhNzU5IDEwMDY0NAogIC8qIEV2YWx1YXRlIGEgbG9jYXRpb24gZGVz Y3JpcHRpb24sIHN0YXJ0aW5nIGF0IERBVEEgYW5kIHdpdGggbGVuZ3RoCiAgICAgU0laRSwgdG8g ZmluZCB0aGUgY3VycmVudCBsb2NhdGlvbiBvZiB2YXJpYWJsZSBvZiBUWVBFIGluIHRoZQogICAg IGNvbnRleHQgb2YgRlJBTUUuICBCWVRFX09GRlNFVCBpcyBhcHBsaWVkIGFmdGVyIHRoZSBjb250 ZW50cyBhcmUKLUBAIC0yMTM0LDcgKzIyOTgsNiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2Nf ZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKK0BAIC0y MjA1LDcgKzIzNTgsNiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5 cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICAJCQkgICAgICAgTE9OR0VTVCBi eXRlX29mZnNldCkKICB7CiAgICBzdHJ1Y3QgdmFsdWUgKnJldHZhbDsKQEAgLTcyMyw3ICs2ODYs NyBAQCBpbmRleCA4YTYxYWU2Li40NTFhNzU5IDEwMDY0NAogICAgc3RydWN0IGR3YXJmX2V4cHJf Y29udGV4dCAqY3R4OwogICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiwgKnZhbHVlX2NoYWlu OwogICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX2N1X29iamZpbGUgKHBl cl9jdSk7Ci1AQCAtMjE0NiwyOSArMjMwOSwxOCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2Nf ZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKK0BAIC0y MjE3LDI5ICsyMzY5LDE4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAogICAgaWYgKHNpemUgPT0gMCkK ICAgICAgcmV0dXJuIGFsbG9jYXRlX29wdGltaXplZF9vdXRfdmFsdWUgKHR5cGUpOwogIApAQCAt NzU0LDcgKzcxNyw3IEBAIGluZGV4IDhhNjFhZTYuLjQ1MWE3NTkgMTAwNjQ0CiAgCSAgcmV0dmFs ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwogIAkgIG1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFpbGFi bGUgKHJldHZhbCwgMCwgVFlQRV9MRU5HVEggKHR5cGUpKTsKICAJICByZXR1cm4gcmV0dmFsOwot QEAgLTIyMzIsNiArMjM4NCwxNiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKK0BAIC0yMzAzLDYgKzI0 NDQsMTYgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAgCSAgICBpbnQgaW5fc3RhY2tfbWVtb3J5ID0g ZHdhcmZfZXhwcl9mZXRjaF9pbl9zdGFja19tZW1vcnkgKGN0eCwgMCk7CiAgCiAgCSAgICBkb19j bGVhbnVwcyAodmFsdWVfY2hhaW4pOwpAQCAtNzcxLDcgKzczNCw3IEBAIGluZGV4IDhhNjFhZTYu LjQ1MWE3NTkgMTAwNjQ0CiAgCSAgICByZXR2YWwgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5ICh0eXBl KTsKICAJICAgIFZBTFVFX0xWQUwgKHJldHZhbCkgPSBsdmFsX21lbW9yeTsKICAJICAgIGlmIChp bl9zdGFja19tZW1vcnkpCi1AQCAtNDE0OCw4ICs0MzEwLDcgQEAgbG9jbGlzdF90cmFjZXBvaW50 X3Zhcl9yZWYgKHN0cnVjdCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs CitAQCAtNDIwNCw4ICs0MzU1LDcgQEAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9yZWYgKHN0cnVj dCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgCQkJICAgICAgIGRs YmF0b24tPnBlcl9jdSk7CiAgfQogIApAQCAtNzgxLDYwICs3NDQsMTEgQEAgaW5kZXggOGE2MWFl Ni4uNDUxYTc1OSAxMDA2NDQKICBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2Fy ZjJfbG9jbGlzdF9mdW5jcyA9IHsKICAgIGxvY2xpc3RfcmVhZF92YXJpYWJsZSwKICAgIGxvY2xp c3RfcmVhZF92YXJpYWJsZV9hdF9lbnRyeSwKLUBAIC00MTU4LDYgKzQzMTksNDggQEAgY29uc3Qg c3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMgZHdhcmYyX2xvY2xpc3RfZnVuY3MgPSB7Ci0gICBs b2NsaXN0X3RyYWNlcG9pbnRfdmFyX3JlZgotIH07Ci0gCi0rc3RhdGljIHN0cnVjdCB2YWx1ZSAq Ci0rbWlzc2luZ19yZWFkX3ZhcmlhYmxlIChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVjdCBm cmFtZV9pbmZvICpmcmFtZSkKLSt7Ci0rICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmRs YmF0b24gPSBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bWJvbCk7Ci0rCi0rICBnZGJfYXNzZXJ0 IChkbGJhdG9uID09IE5VTEwpOwotKyAgZXJyb3IgKF8oIlVuYWJsZSB0byByZXNvbHZlIHZhcmlh YmxlIFwiJXNcIiIpLCBTWU1CT0xfUFJJTlRfTkFNRSAoc3ltYm9sKSk7Ci0rfQotKwotK3N0YXRp YyBpbnQKLSttaXNzaW5nX3JlYWRfbmVlZHNfZnJhbWUgKHN0cnVjdCBzeW1ib2wgKnN5bWJvbCkK LSt7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLSttaXNzaW5nX2Rlc2NyaWJl X2xvY2F0aW9uIChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsIENPUkVfQUREUiBhZGRyLAotKwkJCSAg IHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCi0rewotKyAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt LCBfKCJhIHZhcmlhYmxlIHdlIGFyZSB1bmFibGUgdG8gcmVzb2x2ZSIpKTsKLSt9Ci0rCi0rc3Rh dGljIHZvaWQKLSttaXNzaW5nX3RyYWNlcG9pbnRfdmFyX3JlZiAoc3RydWN0IHN5bWJvbCAqc3lt Ym9sLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsJCQkgICAgc3RydWN0IGFnZW50X2V4cHIg KmF4LCBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSkKLSt7Ci0rICBzdHJ1Y3QgZHdhcmYyX2xvY2xp c3RfYmF0b24gKmRsYmF0b24gPSBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bWJvbCk7Ci0rCi0r ICBnZGJfYXNzZXJ0IChkbGJhdG9uID09IE5VTEwpOwotKyAgZXJyb3IgKF8oIlVuYWJsZSB0byBy ZXNvbHZlIHZhcmlhYmxlIFwiJXNcIiIpLCBTWU1CT0xfUFJJTlRfTkFNRSAoc3ltYm9sKSk7Ci0r fQotKwotKy8qIFRoZSBzZXQgb2YgbG9jYXRpb24gZnVuY3Rpb25zIHVzZWQgd2l0aCB0aGUgRFdB UkYtMiBldmFsdWF0b3Igd2hlbiB3ZSBhcmUKLSsgICB1bmFibGUgdG8gcmVzb2x2ZSB0aGUgc3lt Ym9scy4gICovCi0rY29uc3Qgc3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMgZHdhcmYyX21pc3Np bmdfZnVuY3MgPSB7Ci0rICBtaXNzaW5nX3JlYWRfdmFyaWFibGUsCi0rICBtaXNzaW5nX3JlYWRf dmFyaWFibGUsCS8qIHJlYWRfdmFyaWFibGVfYXRfZW50cnkgKi8KLSsgIG1pc3NpbmdfcmVhZF9u ZWVkc19mcmFtZSwKLSsgIG1pc3NpbmdfZGVzY3JpYmVfbG9jYXRpb24sCi0rICBtaXNzaW5nX3Ry YWNlcG9pbnRfdmFyX3JlZgotK307Ci0rCi0gLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxl bmNlIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8KLSBleHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0 eXBlIF9pbml0aWFsaXplX2R3YXJmMmxvYzsKLSAKIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYybG9j LmggYi9nZGIvZHdhcmYybG9jLmgKLWluZGV4IDM2NjQxYjMuLjEzOTQ1NzggMTAwNjQ0CitpbmRl eCA5YmM4Y2E1Li4yODQ2N2RjIDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMmxvYy5oCiArKysgYi9n ZGIvZHdhcmYybG9jLmgKLUBAIC0xMzIsNiArMTMyLDE1IEBAIHN0cnVjdCBkd2FyZjJfbG9jbGlz dF9iYXRvbgorQEAgLTEzNyw2ICsxMzcsMTUgQEAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9u CiAgCiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2Nl eHByX2Z1bmNzOwogIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2Fy ZjJfbG9jbGlzdF9mdW5jczsKQEAgLTg0OCwyMyArNzYyLDIzIEBAIGluZGV4IDM2NjQxYjMuLjEz OTQ1NzggMTAwNjQ0CiArZXh0ZXJuIGludCBkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwgKHN0cnVj dCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqZGxsYmF0b24sCiArCQkJCSAgICAgc3RydWN0IHR5cGUg KnR5cGUsIENPUkVfQUREUiAqYWRkcnApOwogIAotIC8qIENvbXBpbGUgYSBEV0FSRiBsb2NhdGlv biBleHByZXNzaW9uIHRvIGFuIGFnZW50IGV4cHJlc3Npb24uCi0gICAgCisgZXh0ZXJuIGNvbnN0 IHN0cnVjdCBzeW1ib2xfYmxvY2tfb3BzIGR3YXJmMl9ibG9ja19mcmFtZV9iYXNlX2xvY2V4cHJf ZnVuY3M7CisgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfYmxvY2tfb3BzIGR3YXJmMl9ibG9j a19mcmFtZV9iYXNlX2xvY2xpc3RfZnVuY3M7CiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMnJlYWQu YyBiL2dkYi9kd2FyZjJyZWFkLmMKLWluZGV4IGRmNjI5OGIuLmIxMWFiZjAgMTAwNjQ0CitpbmRl eCBkMThlYWVkLi45MWM0NzZjIDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYwogKysrIGIv Z2RiL2R3YXJmMnJlYWQuYwotQEAgLTE2MjQsNiArMTYyNCw5IEBAIHN0YXRpYyB2b2lkIGZpbGxf aW5fbG9jbGlzdF9iYXRvbiAoc3RydWN0IGR3YXJmMl9jdSAqY3UsCitAQCAtMTY2MSw2ICsxNjYx LDkgQEAgc3RhdGljIHZvaWQgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSwKICAJCQkJICAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpiYXRvbiwKLSAJCQkJ ICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cik7CisgCQkJCSAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHIpOwogIAogK3N0YXRpYyBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmR3YXJm Ml9hdHRyX3RvX2xvY2xpc3RfYmF0b24KLSsgIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSk7CisrICAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpOwogKwotIHN0YXRpYyB2b2lkIGR3YXJmMl9zeW1ib2xfbWFya19j b21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwKKyBzdGF0aWMgdm9pZCBkd2FyZjJfc3lt Ym9sX21hcmtfY29tcHV0ZWQgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCiAgCQkJCQkg c3RydWN0IHN5bWJvbCAqc3ltLAotIAkJCQkJIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKLUBAIC0x NjU2LDYgKzE2NTksOSBAQCBzdGF0aWMgdm9pZCBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMgKHZvaWQp OworIAkJCQkJIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorQEAgLTE2OTQsNiArMTY5Nyw5IEBAIHN0 YXRpYyB2b2lkIGFnZV9jYWNoZWRfY29tcF91bml0cyAodm9pZCk7CiAgCiAgc3RhdGljIHZvaWQg ZnJlZV9vbmVfY2FjaGVkX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKTsK ICAKQEAgLTg3NCwxNyArNzg4LDE3IEBAIGluZGV4IGRmNjI5OGIuLmIxMWFiZjAgMTAwNjQ0CiAg c3RhdGljIHN0cnVjdCB0eXBlICpzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1 Y3QgdHlwZSAqLAogIAkJCQkgIHN0cnVjdCBkd2FyZjJfY3UgKik7CiAgCi1AQCAtMTY4NCw2ICsx NjkwLDkgQEAgc3RhdGljIHN0cnVjdCB0eXBlICpnZXRfZGllX3R5cGVfYXRfb2Zmc2V0IChzZWN0 X29mZnNldCwKK0BAIC0xNzIyLDYgKzE3MjgsOSBAQCBzdGF0aWMgc3RydWN0IHR5cGUgKmdldF9k aWVfdHlwZV9hdF9vZmZzZXQgKHNlY3Rfb2Zmc2V0LAogIAogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAq Z2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up OwogIAogK3N0YXRpYyBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmR3YXJmMl9hdHRyX3Rv X2xvY2V4cHJfYmF0b24KLSsgIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSk7CisrICAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpOwogKwogIHN0YXRpYyB2b2lkIGR3YXJmMl9yZWxlYXNlX3F1ZXVlICh2b2lkICpk dW1teSk7CiAgCiAgc3RhdGljIHZvaWQgcXVldWVfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhICpwZXJfY3UsCi1AQCAtMTE3MDIsNiArMTE3MTEsMjkgQEAgcHJvY2Vzc19lbnVt ZXJhdGlvbl9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQorQEAgLTEyMjYzLDYgKzEyMjcyLDI5IEBAIHByb2Nlc3NfZW51bWVyYXRpb25fc2NvcGUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIG5ld19zeW1ib2wg KGRpZSwgdGhpc190eXBlLCBjdSk7CiAgfQogIApAQCAtOTE0LDcgKzgyOCw3IEBAIGluZGV4IGRm NjI5OGIuLmIxMWFiZjAgMTAwNjQ0CiAgLyogRXh0cmFjdCBhbGwgaW5mb3JtYXRpb24gZnJvbSBh IERXX1RBR19hcnJheV90eXBlIERJRSBhbmQgcHV0IGl0IGluCiAgICAgdGhlIERJRSdzIHR5cGUg ZmllbGQuICBGb3Igbm93LCB0aGlzIG9ubHkgaGFuZGxlcyBvbmUgZGltZW5zaW9uYWwKICAgICBh cnJheXMuICAqLwotQEAgLTExNzE1LDcgKzExNzQ3LDcgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMTIyNzYsNyArMTIz MDgsNyBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKICAgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGUsICpyYW5nZV90eXBlLCAq aW5kZXhfdHlwZTsKICAgIHN0cnVjdCB0eXBlICoqcmFuZ2VfdHlwZXMgPSBOVUxMOwogICAgc3Ry dWN0IGF0dHJpYnV0ZSAqYXR0cjsKQEAgLTkyMyw3ICs4MzcsNyBAQCBpbmRleCBkZjYyOThiLi5i MTFhYmYwIDEwMDY0NAogICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAgICBjb25zdCBjaGFy ICpuYW1lOwogIAotQEAgLTExNzY4LDE3ICsxMTgwMCwxOSBAQCByZWFkX2FycmF5X3R5cGUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0xMjMyOSwxNyAr MTIzNjEsMTkgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCiAgICB0eXBlID0gZWxlbWVudF90eXBlOwogIAogICAgaWYgKHJlYWRf YXJyYXlfb3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9jb2xfbWFqb3IpCkBAIC05NTQsNyArODY4 LDcgQEAgaW5kZXggZGY2Mjk4Yi4uYjExYWJmMCAxMDA2NDQKICAKICAgIC8qIFVuZGVyc3RhbmQg RHdhcmYyIHN1cHBvcnQgZm9yIHZlY3RvciB0eXBlcyAobGlrZSB0aGV5IG9jY3VyIG9uCiAgICAg ICB0aGUgUG93ZXJQQyB3LyBBbHRpVmVjKS4gIEdjYyBqdXN0IGFkZHMgYW5vdGhlciBhdHRyaWJ1 dGUgdG8gdGhlCi1AQCAtMTI0MTMsMjkgKzEyNDQ3LDExNCBAQCByZWFkX3RhZ19zdHJpbmdfdHlw ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTEyOTcz LDI5ICsxMzAwNywxMTQgQEAgcmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0g Z2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwgKnJhbmdl X3R5cGUsICppbmRleF90eXBlLCAqY2hhcl90eXBlOwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0 cjsKQEAgLTEwODIsNyArOTk2LDcgQEAgaW5kZXggZGY2Mjk4Yi4uYjExYWJmMCAxMDA2NDQKICAg IGNoYXJfdHlwZSA9IGxhbmd1YWdlX3N0cmluZ19jaGFyX3R5cGUgKGN1LT5sYW5ndWFnZV9kZWZu LCBnZGJhcmNoKTsKICAgIHR5cGUgPSBjcmVhdGVfc3RyaW5nX3R5cGUgKE5VTEwsIGNoYXJfdHlw ZSwgcmFuZ2VfdHlwZSk7CiAgCi1AQCAtMTI3MzksNyArMTI4NTgsNyBAQCByZWFkX3N1YnJhbmdl X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0x MzMyMCw3ICsxMzQzOSw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZSwgKm9y aWdfYmFzZV90eXBlOwogICAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGU7CiAgICBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyOwpAQCAtMTA5MSwxNCArMTAwNSwxNCBAQCBpbmRleCBkZjYyOThiLi5iMTFh YmYwIDEwMDY0NAogICAgaW50IGxvd19kZWZhdWx0X2lzX3ZhbGlkOwogICAgY29uc3QgY2hhciAq bmFtZTsKICAgIExPTkdFU1QgbmVnYXRpdmVfbWFzazsKLUBAIC0xMjc5OCw0MiArMTI5MTcsNiBA QCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKK0BAIC0xMzM3OSw0MiArMTM0OTgsNiBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAJCQkJICAgICAgIi0g RElFIGF0IDB4JXggW2luIG1vZHVsZSAlc10iKSwKICAJICAgICAgIGRpZS0+b2Zmc2V0LnNlY3Rf b2ZmLCBjdS0+b2JqZmlsZS0+bmFtZSk7CiAgCiAtICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwg RFdfQVRfdXBwZXJfYm91bmQsIGN1KTsKIC0gIGlmIChhdHRyKQogLSAgICB7Ci0tICAgICAgaWYg KGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgfHwgaXNfcmVmX2F0dHIgKGF0dHIpKQorLSAgICAg IGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpIHx8IGF0dHJfZm9ybV9pc19yZWYgKGF0dHIp KQogLSAgICAgICAgewogLSAgICAgICAgICAvKiBHQ0MgZW5jb2RlcyBhcnJheXMgd2l0aCB1bnNw ZWNpZmllZCBvciBkeW5hbWljIGxlbmd0aAogLSAgICAgICAgICAgICB3aXRoIGEgRFdfRk9STV9i bG9jazEgYXR0cmlidXRlIG9yIGEgcmVmZXJlbmNlIGF0dHJpYnV0ZS4KQEAgLTExMzQsNyArMTA0 OCw3IEBAIGluZGV4IGRmNjI5OGIuLmIxMWFiZjAgMTAwNjQ0CiAgICAvKiBEd2FyZi0yIHNwZWNp ZmljYXRpb25zIGV4cGxpY2l0bHkgYWxsb3dzIHRvIGNyZWF0ZSBzdWJyYW5nZSB0eXBlcwogICAg ICAgd2l0aG91dCBzcGVjaWZ5aW5nIGEgYmFzZSB0eXBlLgogICAgICAgSW4gdGhhdCBjYXNlLCB0 aGUgYmFzZSB0eXBlIG11c3QgYmUgc2V0IHRvIHRoZSB0eXBlIG9mCi1AQCAtMTI4NzIsMjQgKzEy OTU1LDE2MyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0xMzQ1MywyNCArMTM1MzYsMTYzIEBAIHJlYWRfc3VicmFu Z2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAl9 CiAgICAgIH0KICAKQEAgLTExNzEsNyArMTA4NSw3IEBAIGluZGV4IGRmNjI5OGIuLmIxMWFiZjAg MTAwNjQ0CiArICAgICAgLyogRm9yIHNldHRpbmcgYSBkZWZhdWx0IGlmIERXX0FUX1VQUEVSX0JP VU5EIHdvdWxkIGJlIG1pc3NpbmcuICAqLwogKyAgICAgIGxvdyA9IDA7CiArICAgIH0KLSsgIGVs c2UgaWYgKGF0dHIgJiYgaXNfcmVmX2F0dHIgKGF0dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5n dWFnZV9hZGEpCisrICBlbHNlIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19yZWYgKGF0dHIpICYm IGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEpCiArICAgIHsKICsgICAgICBzdHJ1Y3QgZGll X2luZm8gKnRhcmdldF9kaWU7CiArICAgICAgc3RydWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1ID0g Y3U7CkBAIC0xMjIwLDcgKzExMzQsNyBAQCBpbmRleCBkZjYyOThiLi5iMTFhYmYwIDEwMDY0NAog LSAgICBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSA9IDE7CiArICBhdHRy ID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfdXBwZXJfYm91bmQsIGN1KTsKICsgIGlmICghYXR0 ciB8fCAoIWF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgIWF0dHJfZm9ybV9pc19jb25zdGFu dCAoYXR0cikKLSsJCSYmICFpc19yZWZfYXR0ciAoYXR0cikpKQorKwkJJiYgIWF0dHJfZm9ybV9p c19yZWYgKGF0dHIpKSkKICsgICAgewogKyAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBE V19BVF9jb3VudCwgY3UpOwogKyAgICAgIC8qIEl0IGRvZXMgbm90IGh1cnQgYnV0IGl0IGlzIG5l ZWRsZXNzbHkgaW5lZmZlY3RpdmUgaW4gY2hlY2tfdHlwZWRlZi4gICovCkBAIC0xMjM5LDcgKzEx NTMsNyBAQCBpbmRleCBkZjYyOThiLi5iMTFhYmYwIDEwMDY0NAogKwkJCQkJZHdhcmYyX2F0dHJf dG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwogKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2Vf dHlwZSkgPSAxOwogKyAgICB9Ci0rICBlbHNlIGlmIChhdHRyICYmIGlzX3JlZl9hdHRyIChhdHRy KSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQorKyAgZWxzZSBpZiAoYXR0ciAmJiBh dHRyX2Zvcm1faXNfcmVmIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQog KyAgICB7CiArICAgICAgc3RydWN0IGRpZV9pbmZvICp0YXJnZXRfZGllOwogKyAgICAgIHN0cnVj dCBkd2FyZjJfY3UgKnRhcmdldF9jdSA9IGN1OwpAQCAtMTI4NCw3ICsxMTk4LDcgQEAgaW5kZXgg ZGY2Mjk4Yi4uYjExYWJmMCAxMDA2NDQKICsJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0 b24gKGF0dHIsIGN1KTsKICsgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKICsg ICAgfQotKyAgZWxzZSBpZiAoYXR0ciAmJiBpc19yZWZfYXR0ciAoYXR0cikgJiYgY3UtPmxhbmd1 YWdlICE9IGxhbmd1YWdlX2FkYSkKKysgIGVsc2UgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX3Jl ZiAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKICsgICAgewogKyAgICAg IHN0cnVjdCBkaWVfaW5mbyAqdGFyZ2V0X2RpZTsKICsgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICp0 YXJnZXRfY3UgPSBjdTsKQEAgLTEzMTIsNyArMTIyNiw3IEBAIGluZGV4IGRmNjI5OGIuLmIxMWFi ZjAgMTAwNjQ0CiAgCiAgICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwogICAgaWYgKG5h bWUpCi1AQCAtMTU3NDksMTAgKzE1OTcxLDEyIEBAIHZhcl9kZWNvZGVfbG9jYXRpb24gKHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKK0BAIC0xNjM4MCwxMSArMTY2 MDIsMTQgQEAgdmFyX2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3Ry dWN0IHN5bWJvbCAqc3ltLAogICAgICAgKGkuZS4gd2hlbiB0aGUgdmFsdWUgb2YgYSByZWdpc3Rl ciBvciBtZW1vcnkgbG9jYXRpb24gaXMKICAgICAgIHJlZmVyZW5jZWQsIG9yIGEgdGhyZWFkLWxv Y2FsIGJsb2NrLCBldGMuKS4gIFRoZW4gYWdhaW4sIGl0IG1pZ2h0CiAgICAgICBub3QgYmUgd29y dGh3aGlsZS4gIEknbSBhc3N1bWluZyB0aGF0IGl0IGlzbid0IHVubGVzcyBwZXJmb3JtYW5jZQpA QCAtMTMyMSwyMiArMTIzNSwxNSBAQCBpbmRleCBkZjYyOThiLi5iMTFhYmYwIDEwMDY0NAogKyAg ICAgCiArICAgICBTWU1CT0xfQ0xBU1MgbWF5IGdldCBvdmVycmlkZW4gYnkgZHdhcmYyX3N5bWJv bF9tYXJrX2NvbXB1dGVkLiAgKi8KICAKLS0gIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAo YXR0ciwgc3ltLCBjdSk7Ci0gICBTWU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfQ09NUFVURUQ7Ci0r ICBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKGF0dHIsIHN5bSwgY3UpOworICAgZHdhcmYy X3N5bWJvbF9tYXJrX2NvbXB1dGVkIChhdHRyLCBzeW0sIGN1LCAwKTsKICAKLSAgIGlmIChTWU1C T0xfQ09NUFVURURfT1BTIChzeW0pID09ICZkd2FyZjJfbG9jbGlzdF9mdW5jcykKKy0gIGlmIChT WU1CT0xfQ09NUFVURURfT1BTIChzeW0pLT5sb2NhdGlvbl9oYXNfbG9jbGlzdCkKKysgIGlmIChT WU1CT0xfQ09NUFVURURfT1BTIChzeW0pICE9IE5VTEwKKysgICAgICAmJiBTWU1CT0xfQ09NUFVU RURfT1BTIChzeW0pLT5sb2NhdGlvbl9oYXNfbG9jbGlzdCkKICAgICAgY3UtPmhhc19sb2NsaXN0 ID0gMTsKLUBAIC0xNTc5Myw2ICsxNjAxNyw4IEBAIG5ld19zeW1ib2xfZnVsbCAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKLSAg ICAgICBlbHNlCi0gCXN5bSA9IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0 YWNrLCBzdHJ1Y3Qgc3ltYm9sKTsKLSAgICAgICBPQkpTVEFUIChvYmpmaWxlLCBuX3N5bXMrKyk7 Ci0rICAgICAgLyogU29tZSBtZXRob2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9D T01QVVRFRF9PUFMgdmFsaWRpdHkuICAqLwotKyAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5 bSkgPSAmZHdhcmYyX21pc3NpbmdfZnVuY3M7Ci0gCi0gICAgICAgLyogQ2FjaGUgdGhpcyBzeW1i b2wncyBuYW1lIGFuZCB0aGUgbmFtZSdzIGRlbWFuZ2xlZCBmb3JtIChpZiBhbnkpLiAgKi8KLSAg ICAgICBTWU1CT0xfU0VUX0xBTkdVQUdFIChzeW0sIGN1LT5sYW5ndWFnZSk7Ci1AQCAtMTY2MDIs NiArMTY4MjgsOSBAQCByZWFkX3R5cGVfZGllXzEgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSkKKyB9CisgCitAQCAtMTcyMjUsNiArMTc0NTAsOSBAQCByZWFkX3R5 cGVfZGllXzEgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAg ICAgICBicmVhazsKICAgICAgfQogIApAQCAtMTM0NiwyMyArMTI1MywyNCBAQCBpbmRleCBkZjYy OThiLi5iMTFhYmYwIDEwMDY0NAogICAgcmV0dXJuIHRoaXNfdHlwZTsKICB9CiAgCi1AQCAtMTkw NDYsNjIgKzE5Mjc1LDEwMCBAQCBmaWxsX2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJf Y3UgKmN1LAorQEAgLTE5OTEwLDY2ICsyMDEzOCwxMDkgQEAgZmlsbF9pbl9sb2NsaXN0X2JhdG9u IChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKICAgIGJhdG9uLT5mcm9tX2R3byA9IGN1LT5kd29fdW5p dCAhPSBOVUxMOwogIH0KICAKIC1zdGF0aWMgdm9pZAotLWR3YXJmMl9zeW1ib2xfbWFya19jb21w dXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAotLQkJCSAg ICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCistZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChj b25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCistCQkJICAg ICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgaW50IGlzX2Jsb2NrKQogKy8qIENvbnZlcnQgRFdfQkxP Q0sgaW50byBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24uICBBVFRSIG11c3QgYmUgYSBEV19C TE9DSwogKyAgIGF0dHJpYnV0ZSB0eXBlLiAgKi8KICsKICtzdGF0aWMgc3RydWN0IGR3YXJmMl9s b2NleHByX2JhdG9uICoKLStkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChzdHJ1Y3QgYXR0 cmlidXRlICphdHRyLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKytkd2FyZjJfYXR0cl90b19sb2Nl eHByX2JhdG9uIChjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLAorKwkJCSAgICAgIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQogK3sKICsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gZHdhcmYy X3Blcl9vYmpmaWxlLT5vYmpmaWxlOwogKyAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpi YXRvbjsKICsKLSsgIGdkYl9hc3NlcnQgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpOworKyAg Z2RiX2Fzc2VydCAoYXR0ciA9PSBOVUxMIHx8IGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpOwog KwogKyAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBz aXplb2YgKCpiYXRvbikpOwogKyAgYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7CkBAIC0xMzcz LDE1ICsxMjgxLDI0IEBAIGluZGV4IGRmNjI5OGIuLmIxMWFiZjAgMTAwNjQ0CiArICAgICBpbmZv X2J1ZmZlciBmb3IgU1lNJ3Mgb2JqZmlsZTsgcmlnaHQgbm93IHdlIG5ldmVyIHJlbGVhc2UKICsg ICAgIHRoYXQgYnVmZmVyLCBidXQgd2hlbiB3ZSBkbyBjbGVhbiB1cCBwcm9wZXJseSB0aGlzIG1h eQogKyAgICAgbmVlZCB0byBjaGFuZ2UuICAqLwotKyAgYmF0b24tPnNpemUgPSBEV19CTE9DSyAo YXR0ciktPnNpemU7Ci0rICBiYXRvbi0+ZGF0YSA9IERXX0JMT0NLIChhdHRyKS0+ZGF0YTsKKysg IGlmIChhdHRyICE9IE5VTEwpCisrICAgIHsKKysgICAgICBiYXRvbi0+c2l6ZSA9IERXX0JMT0NL IChhdHRyKS0+c2l6ZTsKKysgICAgICBiYXRvbi0+ZGF0YSA9IERXX0JMT0NLIChhdHRyKS0+ZGF0 YTsKKysgICAgfQorKyAgZWxzZQorKyAgICB7CisrICAgICAgYmF0b24tPnNpemUgPSAwOworKyAg ICAgIGJhdG9uLT5kYXRhID0gTlVMTDsKKysgICAgfQogKyAgZ2RiX2Fzc2VydCAoYmF0b24tPnNp emUgPT0gMCB8fCBiYXRvbi0+ZGF0YSAhPSBOVUxMKTsKICsKICsgIHJldHVybiBiYXRvbjsKICt9 CiArCiArc3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqCi0rZHdhcmYyX2F0dHJf dG9fbG9jbGlzdF9iYXRvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCisrZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAoY29uc3Qgc3RydWN0IGF0dHJp YnV0ZSAqYXR0ciwKKysJCQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICB7CiAgICBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZTsKICAgIHN0 cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpzZWN0aW9uID0gY3VfZGVidWdfbG9jX3NlY3Rpb24g KGN1KTsKQEAgLTE0MjgsMzUgKzEzNDUsMzYgQEAgaW5kZXggZGY2Mjk4Yi4uYjExYWJmMCAxMDA2 NDQKICsvKiBTWU0gbWF5IGdldCBpdHMgU1lNQk9MX0NMQVNTIG92ZXJyaWRlbiBvbiBpbnZhbGlk IEFUVFIgY29udGVudC4gICovCiArCiArc3RhdGljIHZvaWQKLStkd2FyZjJfc3ltYm9sX21hcmtf Y29tcHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKLSsJ CQkgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorK2R3YXJmMl9zeW1ib2xfbWFya19jb21wdXRl ZCAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAorKwkJ CSAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UsIGludCBpc19ibG9jaykKICt7CiArICBzdHJ1Y3Qg ZHdhcmYyX2xvY2xpc3RfYmF0b24gKmxvY2xpc3RfYmF0b247CiAgCiArICBsb2NsaXN0X2JhdG9u ID0gZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAoYXR0ciwgY3UpOwogKyAgaWYgKGxvY2xp c3RfYmF0b24pCiArICAgIHsKLSAgICAgICBTWU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3 YXJmMl9sb2NsaXN0X2Z1bmNzOworICAgICAgIFNZTUJPTF9BQ0xBU1NfSU5ERVggKHN5bSkgPSAo aXNfYmxvY2sKKyAJCQkJICAgPyBkd2FyZjJfbG9jbGlzdF9ibG9ja19pbmRleAorIAkJCQkgICA6 IGR3YXJmMl9sb2NsaXN0X2luZGV4KTsKIC0gICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5 bSkgPSBiYXRvbjsKICsgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBsb2NsaXN0 X2JhdG9uOwogKyAgICB9CiArICBlbHNlIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQog KyAgICB7Ci0rICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbG9jZXhw cl9mdW5jczsKKysgICAgICBTWU1CT0xfQUNMQVNTX0lOREVYIChzeW0pID0gKGlzX2Jsb2NrCisr CQkJCSAgID8gZHdhcmYyX2xvY2V4cHJfYmxvY2tfaW5kZXgKKysJCQkJICAgOiBkd2FyZjJfbG9j ZXhwcl9pbmRleCk7CiArICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChzeW0pID0gZHdhcmYy X2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwogICAgICB9CiAgICBlbHNlCiAgICAg IHsKIC0gICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmJhdG9uOwotKyAgICAgIGR3 YXJmMl9pbnZhbGlkX2F0dHJpYl9jbGFzc19jb21wbGFpbnQgKCJsb2NhdGlvbiBkZXNjcmlwdGlv biIsCi0rCQkJCQkgICAgIFNZTUJPTF9OQVRVUkFMX05BTUUgKHN5bSkpOwotIAorLQogLSAgICAg IGJhdG9uID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKIC0JCQkg ICAgIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uKSk7CiAtICAgICAgYmF0b24t PnBlcl9jdSA9IGN1LT5wZXJfY3U7CiAtICAgICAgZ2RiX2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7 Ci0rICAgICAgLyogU29tZSBtZXRob2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9D T01QVVRFRF9PUFMgdmFsaWRpdHkuICAqLwotIAorLQogLSAgICAgIGlmIChhdHRyX2Zvcm1faXNf YmxvY2sgKGF0dHIpKQogLQl7CiAtCSAgLyogTm90ZSB0aGF0IHdlJ3JlIGp1c3QgY29weWluZyB0 aGUgYmxvY2sncyBkYXRhIHBvaW50ZXIKQEAgLTE0NzMsMTkgKzEzOTEsMTggQEAgaW5kZXggZGY2 Mjk4Yi4uYjExYWJmMCAxMDA2NDQKIC0JCQkJCQkgU1lNQk9MX05BVFVSQUxfTkFNRSAoc3ltKSk7 CiAtCSAgYmF0b24tPnNpemUgPSAwOwogLQl9Ci0rICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAo c3ltKSA9ICZkd2FyZjJfbWlzc2luZ19mdW5jczsKLSsgICAgICBTWU1CT0xfTE9DQVRJT05fQkFU T04gKHN5bSkgPSBOVUxMOworKyAgICAgIGR3YXJmMl9pbnZhbGlkX2F0dHJpYl9jbGFzc19jb21w bGFpbnQgKCJsb2NhdGlvbiBkZXNjcmlwdGlvbiIsCisrCQkJCQkgICAgIFNZTUJPTF9OQVRVUkFM X05BTUUgKHN5bSkpOwogIAotLSAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5bSkgPSAmZHdh cmYyX2xvY2V4cHJfZnVuY3M7CisgICAgICAgU1lNQk9MX0FDTEFTU19JTkRFWCAoc3ltKSA9IChp c19ibG9jaworIAkJCQkgICA/IGR3YXJmMl9sb2NleHByX2Jsb2NrX2luZGV4CisgCQkJCSAgIDog ZHdhcmYyX2xvY2V4cHJfaW5kZXgpOwogLSAgICAgIFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3lt KSA9IGJhdG9uOwotKyAgICAgIC8qIEZvciBmdW5jdGlvbnMgYSBtaXNzaW5nIERXX0FUX2ZyYW1l X2Jhc2UgZG9lcyBub3Qgb3B0aW1pemUgb3V0IHRoZQotKwkgd2hvbGUgZnVuY3Rpb24gZGVmaW5p dGlvbiwgb25seSBpdHMgZnJhbWUgYmFzZSByZXNvbHZpbmcuICAqLwotKyAgICAgIGlmIChhdHRy LT5uYW1lID09IERXX0FUX2xvY2F0aW9uKQotKwlTWU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfT1BU SU1JWkVEX09VVDsKKysgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBkd2FyZjJf YXR0cl90b19sb2NleHByX2JhdG9uIChOVUxMLCBjdSk7CiAgICAgIH0KICB9CiAgCi1AQCAtMTk0 NzIsNiArMTk3MzksMjUgQEAgcGVyX2N1X29mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAq aXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQorQEAgLTIwMzQyLDYgKzIwNjEzLDI1IEBA IHBlcl9jdV9vZmZzZXRfYW5kX3R5cGVfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2 b2lkICppdGVtX3JocykKICAJICAmJiBvZnNfbGhzLT5vZmZzZXQuc2VjdF9vZmYgPT0gb2ZzX3Jo cy0+b2Zmc2V0LnNlY3Rfb2ZmKTsKICB9CiAgCkBAIC0xNTExLDcgKzE0MjgsNyBAQCBpbmRleCBk ZjYyOThiLi5iMTFhYmYwIDEwMDY0NAogIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGgg RElFIHRvIFRZUEUuICBTYXZlIGl0IGluIENVJ3MgaGFzaAogICAgIHRhYmxlIGlmIG5lY2Vzc2Fy eS4gIEZvciBjb252ZW5pZW5jZSwgcmV0dXJuIFRZUEUuCiAgCi1AQCAtMTk0OTYsNiArMTk3ODIs OCBAQCBzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlw ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMjAzNjYsNiArMjA2NTYsOCBAQCBzZXRfZGll X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCiAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9vZmZzZXRfYW5kX3R5cGUgKipz bG90LCBvZnM7CiAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOwogIApA QCAtMTUyMSw3ICsxNDM4LDcgQEAgaW5kZXggZGY2Mjk4Yi4uYjExYWJmMCAxMDA2NDQKICAgICAg IGluaXRpYWxpemVkIChpZiBub3QgYWxyZWFkeSBzZXQpLiAgVGhlcmUgYXJlIGEgZmV3IHR5cGVz IHdoZXJlCiAgICAgICB3ZSBzaG91bGQgbm90IGJlIGRvaW5nIHNvLCBiZWNhdXNlIHRoZSB0eXBl LXNwZWNpZmljIGFyZWEgaXMKIGRpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYwot aW5kZXggZDdmODBlMi4uOGVjYTRjOCAxMDA2NDQKK2luZGV4IDUzOTQ4OWYuLjEzYmExYTkgMTAw NjQ0CiAtLS0gYS9nZGIvZXZhbC5jCiArKysgYi9nZGIvZXZhbC5jCiBAQCAtNDEsNiArNDEsNyBA QApAQCAtMTUzMiw3ICsxNDQ5LDcgQEAgaW5kZXggZDdmODBlMi4uOGVjYTRjOCAxMDA2NDQKICAK ICAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgogIAotQEAgLTM5MywyNyArMzk0LDIxNyBAQCBpbml0 X2FycmF5X2VsZW1lbnQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCB2YWx1ZSAqZWxlbWVu dCwKK0BAIC0zOTMsMjcgKzM5NCwyMjEgQEAgaW5pdF9hcnJheV9lbGVtZW50IChzdHJ1Y3QgdmFs dWUgKmFycmF5LCBzdHJ1Y3QgdmFsdWUgKmVsZW1lbnQsCiAgfQogIAogIHN0YXRpYyBzdHJ1Y3Qg dmFsdWUgKgpAQCAtMTY1MiwxMSArMTU2OSwxMSBAQCBpbmRleCBkN2Y4MGUyLi44ZWNhNGM4IDEw MDY0NAogKyAgICAgIGVsc2UKICsJewogKwkgIHN0cnVjdCB2YWx1ZSAqdmFsOwotKwotKwkgIGlu ZGV4LT5raW5kID0gU1VCU0NSSVBUX05VTUJFUjsKICAKIC0gIGlmIChyYW5nZV90eXBlID09IEhJ R0hfQk9VTkRfREVGQVVMVCB8fCByYW5nZV90eXBlID09IEJPVEhfQk9VTkRfREVGQVVMVCkKIC0g ICAgaGlnaF9ib3VuZCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2UpOworKwkgIGluZGV4LT5raW5k ID0gU1VCU0NSSVBUX05VTUJFUjsKKysKICsJICAvKiBFdmFsdWF0ZSBlYWNoIHN1YnNjcmlwdDsg aXQgbXVzdCBiZSBhIGxlZ2FsIGludGVnZXIgaW4gRjc3LiAgKi8KICsJICB2YWwgPSBldmFsdWF0 ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7CiArCSAgaW5kZXgtPm51 bWJlciA9IHZhbHVlX2FzX2xvbmcgKHZhbCk7CkBAIC0xNzUwLDIzICsxNjY3LDI3IEBAIGluZGV4 IGQ3ZjgwZTIuLjhlY2E0YzggMTAwNjQ0CiArICBpZiAoVkFMVUVfTFZBTCAoYXJyYXkpICE9IGx2 YWxfaW50ZXJuYWx2YXIpCiArICAgIHNldF92YWx1ZV9hZGRyZXNzIChhcnJheSwgdmFsdWVfYnl0 ZV9hZGRyZXNzICsgdmFsdWVfYnl0ZV9vZmZzZXQpOwogKwotKyAgaWYgKCF2YWx1ZV9sYXp5IChz YXZlZF9hcnJheSkpCisrICBpZiAoIXZhbHVlX2xhenkgKHNhdmVkX2FycmF5KQorKyAgICAgICYm IFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlIChzYXZlZF9hcnJheSkpID4gMAorKyAgICAgICYmIFRZ UEVfTEVOR1RIIChuZXdfYXJyYXlfdHlwZSkgPiAwKQogKyAgICB7CisrICAgICAgZ2RiX2Fzc2Vy dCAoVFlQRV9MRU5HVEggKG5ld19hcnJheV90eXBlKQorKwkJICA8PSBUWVBFX0xFTkdUSCAodmFs dWVfdHlwZSAoc2F2ZWRfYXJyYXkpKSk7CiArICAgICAgYWxsb2NhdGVfdmFsdWVfY29udGVudHMg KGFycmF5KTsKICsgICAgICBzZXRfdmFsdWVfbGF6eSAoYXJyYXksIDApOwotIAotLSAgcmV0dXJu IHZhbHVlX3NsaWNlIChhcnJheSwgbG93X2JvdW5kLCBoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsg MSk7CisrCiArICAgICAgbWVtY3B5ICh2YWx1ZV9jb250ZW50c193cml0ZWFibGUgKGFycmF5KSwK ICsJICAgICAgdmFsdWVfY29udGVudHMgKHNhdmVkX2FycmF5KSArIHZhbHVlX2J5dGVfb2Zmc2V0 LAogKwkgICAgICBUWVBFX0xFTkdUSCAobmV3X2FycmF5X3R5cGUpKTsKICsgICAgfQotKworIAor LSAgcmV0dXJuIHZhbHVlX3NsaWNlIChhcnJheSwgbG93X2JvdW5kLCBoaWdoX2JvdW5kIC0gbG93 X2JvdW5kICsgMSk7CiArICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKICsgIHJldHVybiBhcnJh eTsKICB9CiAgCiAgCi1AQCAtNzEwLDYgKzkwMSw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTcxMCw2ICs5MDUsNyBAQCBldmFsdWF0 ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAgIGludCBzYXZl X3BvczE7CiAgICBzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiA9IE5VTEw7CiAgICBjaGFyICpmdW5j dGlvbl9uYW1lID0gTlVMTDsKQEAgLTE3NzQsNyArMTY5NSw3IEBAIGluZGV4IGQ3ZjgwZTIuLjhl Y2E0YzggMTAwNjQ0CiAgCiAgICBwYyA9ICgqcG9zKSsrOwogICAgb3AgPSBleHAtPmVsdHNbcGNd Lm9wY29kZTsKLUBAIC0xNzc2LDYgKzE5NjgsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQg KHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKK0BAIC0xNzc2LDYgKzE5NzIsOCBAQCBldmFsdWF0 ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAKICAgICAgICAv KiBGaXJzdCBkZXRlcm1pbmUgdGhlIHR5cGUgY29kZSB3ZSBhcmUgZGVhbGluZyB3aXRoLiAgKi8K ICAgICAgICBhcmcxID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3Np ZGUpOwpAQCAtMTc4Myw3ICsxNzA0LDcgQEAgaW5kZXggZDdmODBlMi4uOGVjYTRjOCAxMDA2NDQK ICAgICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwogICAgICAg IGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOwogIAotQEAgLTE3OTYsMjMgKzE5OTAsMTMgQEAgZXZh bHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMTc5 NiwyMyArMTk5NCwxMyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpl eHBlY3RfdHlwZSwKICAJICAgICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CiAgCSAgICB9CiAg CX0gCkBAIC0xODA5LDcgKzE3MzAsNyBAQCBpbmRleCBkN2Y4MGUyLi44ZWNhNGM4IDEwMDY0NAog IAogIAljYXNlIFRZUEVfQ09ERV9QVFI6CiAgCWNhc2UgVFlQRV9DT0RFX0ZVTkM6Ci1AQCAtMjIz OSw0OSArMjQyMyw2IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4 cGVjdF90eXBlLAorQEAgLTIyMjUsNDkgKzI0MTMsNiBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRh cmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAJfQogICAgICAgIHJldHVybiAoYXJnMSk7 CiAgCkBAIC0xODU5LDcgKzE3ODAsNyBAQCBpbmRleCBkN2Y4MGUyLi44ZWNhNGM4IDEwMDY0NAog ICAgICBjYXNlIEJJTk9QX0xPR0lDQUxfQU5EOgogICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJl eHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7CiAgICAgICAgaWYgKG5vc2lkZSA9PSBF VkFMX1NLSVApCi1AQCAtMjUxMywxNSArMjY1NCwyMyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRh cmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKK0BAIC0yNDk5LDE1ICsyNjQ0LDIzIEBAIGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogICAgICAg IGlmIChleHBlY3RfdHlwZSAmJiBUWVBFX0NPREUgKGV4cGVjdF90eXBlKSA9PSBUWVBFX0NPREVf UFRSKQogIAlleHBlY3RfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGNoZWNrX3R5cGVkZWYgKGV4 cGVjdF90eXBlKSk7CiAgICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoZXhwZWN0X3R5cGUs IGV4cCwgcG9zLCBub3NpZGUpOwpAQCAtMTg4NSw3ICsxODA2LDcgQEAgaW5kZXggZDdmODBlMi4u OGVjYTRjOCAxMDA2NDQKICAgICAgICBlbHNlIGlmIChub3NpZGUgPT0gRVZBTF9BVk9JRF9TSURF X0VGRkVDVFMpCiAgCXsKICAJICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJn MSkpOwotQEAgLTI1MzAsMTIgKzI2NzksMTggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChz dHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMjUxNiwxMiArMjY2OSwxOCBAQCBldmFsdWF0 ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAJICAvKiBJbiBD IHlvdSBjYW4gZGVyZWZlcmVuY2UgYW4gYXJyYXkgdG8gZ2V0IHRoZSAxc3QgZWx0LiAgKi8KICAJ ICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKICAJICAgICkKQEAg LTE5MDksNyArMTgzMCw3IEBAIGluZGV4IGQ3ZjgwZTIuLjhlY2E0YzggMTAwNjQ0CiAgCSAgZWxz ZQogIAkgICAgZXJyb3IgKF8oIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2lu dGVyIHZhbHVlLiIpKTsKICAJfQotQEAgLTI1NDUsOSArMjcwMCwxNCBAQCBldmFsdWF0ZV9zdWJl eHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKK0BAIC0yNTMxLDkgKzI2OTAs MTQgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUs CiAgCSBkby4gICJsb25nIGxvbmciIHZhcmlhYmxlcyBhcmUgcmFyZSBlbm91Z2ggdGhhdAogIAkg QlVJTFRJTl9UWVBFX0xPTkdFU1Qgd291bGQgc2VlbSB0byBiZSBhIG1pc3Rha2UuICAqLwogICAg ICAgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9JTlQpCkBAIC0xOTI3LDcgKzE4 NDgsNyBAQCBpbmRleCBkN2Y4MGUyLi44ZWNhNGM4IDEwMDY0NAogIAogICAgICBjYXNlIFVOT1Bf QUREUjoKICAgICAgICAvKiBDKys6IGNoZWNrIGZvciBhbmQgaGFuZGxlIHBvaW50ZXIgdG8gbWVt YmVycy4gICovCi1AQCAtMjk2MCw3ICszMTIwLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29l cmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCitAQCAtMjk2Myw3ICszMTI3LDcgQEAgZXZh bHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCiAgewog ICAgZW51bSBleHBfb3Bjb2RlIG9wOwogICAgaW50IHBjOwpAQCAtMTkzNiw3ICsxODU3LDcgQEAg aW5kZXggZDdmODBlMi4uOGVjYTRjOCAxMDA2NDQKICAgIHN0cnVjdCBzeW1ib2wgKnZhcjsKICAg IHN0cnVjdCB0eXBlICp0eXBlOwogIAotQEAgLTI5NzEsMTMgKzMxMzEsMTggQEAgZXZhbHVhdGVf c3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCitAQCAtMjk3NCwx MyArMzEzOCwxOCBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4cHJl c3Npb24gKmV4cCwKICAgICAgewogICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKICAgICAgICB2YXIg PSBleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2w7CkBAIC0xOTU2LDcgKzE4NzcsNyBAQCBpbmRleCBk N2Y4MGUyLi44ZWNhNGM4IDEwMDY0NAogIAkgIHJldHVybiB2YWx1ZV9jYXN0IChsb29rdXBfcG9p bnRlcl90eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSksCiAgCQkJICAgICB2YWwpOwogIAl9 Ci1AQCAtMzAzNSw5ICszMjAwLDEzIEBAIGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6ZW9mIChzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcykKK0BAIC0zMDM4LDkgKzMyMDcsMTMgQEAgZXZh bHVhdGVfc3ViZXhwX2Zvcl9zaXplb2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9z KQogIAogICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKICAgICAgICAoKnBvcykgKz0gNDsKQEAgLTE5 NzMsNyArMTg5NCw3IEBAIGluZGV4IGQ3ZjgwZTIuLjhlY2E0YzggMTAwNjQ0CiAgCiAgICAgIGRl ZmF1bHQ6CiAgICAgICAgdmFsID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9z LCBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUyk7Ci1AQCAtMzA2OCwxOCArMzIzNywyNSBAQCBwYXJz ZV9hbmRfZXZhbF90eXBlIChjaGFyICpwLCBpbnQgbGVuZ3RoKQorQEAgLTMwNzEsMTggKzMyNDQs MjUgQEAgcGFyc2VfYW5kX2V2YWxfdHlwZSAoY2hhciAqcCwgaW50IGxlbmd0aCkKICBpbnQKICBj YWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSkKICB7CkBAIC0yMjQ3 LDcgKzIxNjgsNyBAQCBpbmRleCBkMDFkNmVjLi44YTIxMTQ5IDEwMDY0NAogICAgc3dpdGNoIChU WVBFX0NPREUgKHR5cGUpKQogICAgICB7CiBkaWZmIC0tZ2l0IGEvZ2RiL2ZpbmR2YXIuYyBiL2dk Yi9maW5kdmFyLmMKLWluZGV4IGZiNjZlMGYuLjQ1Njg0ZjAgMTAwNjQ0CitpbmRleCBmNTg2Y2Uy Li44ZmQ1YTA4IDEwMDY0NAogLS0tIGEvZ2RiL2ZpbmR2YXIuYwogKysrIGIvZ2RiL2ZpbmR2YXIu YwogQEAgLTM0LDYgKzM0LDcgQEAKQEAgLTIyNTgsNyArMjE3OSw3IEBAIGluZGV4IGZiNjZlMGYu LjQ1Njg0ZjAgMTAwNjQ0CiAgCiAgLyogQmFzaWMgYnl0ZS1zd2FwcGluZyByb3V0aW5lcy4gIEFs bCAnZXh0cmFjdCcgZnVuY3Rpb25zIHJldHVybiBhCiAgICAgaG9zdC1mb3JtYXQgaW50ZWdlciBm cm9tIGEgdGFyZ2V0LWZvcm1hdCBpbnRlZ2VyIGF0IEFERFIgd2hpY2ggaXMKLUBAIC00MzcsNyAr NDM4LDEwIEBAIG1pbnN5bV9sb29rdXBfaXRlcmF0b3JfY2IgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCB2b2lkICpjYl9kYXRhKQorQEAgLTQ0Myw3ICs0NDQsMTAgQEAgbWluc3ltX2xvb2t1cF9p dGVyYXRvcl9jYiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmNiX2RhdGEpCiAgfQog IAogIC8qIEEgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlICJsYV9yZWFkX3Zhcl92YWx1 ZSIgaG9vayBpbgpAQCAtMjI3MCw3ICsyMTkxLDcgQEAgaW5kZXggZmI2NmUwZi4uNDU2ODRmMCAx MDA2NDQKICAKICBzdHJ1Y3QgdmFsdWUgKgogIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVj dCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotQEAgLTQ0NiwxMyArNDUw LDYgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNDUyLDEzICs0NTYsNiBAQCBkZWZhdWx0X3JlYWRfdmFy X3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAg IHN0cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7CiAgICBDT1JFX0FERFIgYWRk cjsKICAKQEAgLTIyODQsMTUgKzIyMDUsMTUgQEAgaW5kZXggZmI2NmUwZi4uNDU2ODRmMCAxMDA2 NDQKICAgIGlmIChzeW1ib2xfcmVhZF9uZWVkc19mcmFtZSAodmFyKSkKICAgICAgZ2RiX2Fzc2Vy dCAoZnJhbWUpOwogIAotQEAgLTQ5Miw3ICs0ODksNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVl IChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC01MDIs NyArNDk5LDYgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBz dHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCiAgICAgICAgcmV0dXJuIHY7CiAgCiAgICAgIGNhc2Ug TE9DX1NUQVRJQzoKIC0gICAgICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7CiAgICAg ICAgaWYgKG92ZXJsYXlfZGVidWdnaW5nKQogIAlhZGRyID0gc3ltYm9sX292ZXJsYXllZF9hZGRy ZXNzIChTWU1CT0xfVkFMVUVfQUREUkVTUyAodmFyKSwKLSAJCQkJCSBTWU1CT0xfT0JKX1NFQ1RJ T04gKHZhcikpOwotQEAgLTUwNiw3ICs1MDIsNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChz dHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAJCQkJCSBTWU1C T0xfT0JKX1NFQ1RJT04gKFNZTUJPTF9PQkpGSUxFICh2YXIpLAorQEAgLTUxNyw3ICs1MTMsNiBA QCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFt ZV9pbmZvICpmcmFtZSkKICAJZXJyb3IgKF8oIlVua25vd24gYXJndW1lbnQgbGlzdCBhZGRyZXNz IGZvciBgJXMnLiIpLAogIAkgICAgICAgU1lNQk9MX1BSSU5UX05BTUUgKHZhcikpOwogICAgICAg IGFkZHIgKz0gU1lNQk9MX1ZBTFVFICh2YXIpOwpAQCAtMjMwMCw3ICsyMjIxLDcgQEAgaW5kZXgg ZmI2NmUwZi4uNDU2ODRmMCAxMDA2NDQKICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBMT0Nf UkVGX0FSRzoKLUBAIC01MjEsMTQgKzUxNiwxMiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChz dHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC01MzIsMTQg KzUyNywxMiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAJYXJncmVmICs9IFNZTUJPTF9WQUxVRSAodmFyKTsK ICAJcmVmID0gdmFsdWVfYXQgKGxvb2t1cF9wb2ludGVyX3R5cGUgKHR5cGUpLCBhcmdyZWYpOwog IAlhZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAocmVmKTsKQEAgLTIzMTUsMTUgKzIyMzYsMTUgQEAg aW5kZXggZmI2NmUwZi4uNDU2ODRmMCAxMDA2NDQKICAgICAgICBicmVhazsKICAKICAgICAgY2Fz ZSBMT0NfVFlQRURFRjoKLUBAIC01MzcsNyArNTMwLDYgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1 ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNTQ4 LDcgKzU0MSw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwg c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogICAgICAgIGJyZWFrOwogIAogICAgICBjYXNlIExP Q19CTE9DSzoKIC0gICAgICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7CiAgICAgICAg aWYgKG92ZXJsYXlfZGVidWdnaW5nKQogIAlhZGRyID0gc3ltYm9sX292ZXJsYXllZF9hZGRyZXNz Ci0gCSAgKEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikpLCBTWU1CT0xfT0JK X1NFQ1RJT04gKHZhcikpOwotQEAgLTU2Myw3ICs1NTUsNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3Zh bHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAJICAo QkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAodmFyKSksIFNZTUJPTF9PQkpfU0VDVElP TiAoU1lNQk9MX09CSkZJTEUgKHZhciksCitAQCAtNTc1LDcgKzU2Nyw2IEBAIGRlZmF1bHRfcmVh ZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1l KQogIAkgICAgICAgICAgICAgU1lNQk9MX1BSSU5UX05BTUUgKHZhcikpOwogIAogIAkgICAgYWRk ciA9IHZhbHVlX2FzX2FkZHJlc3MgKHJlZ3ZhbCk7CkBAIC0yMzMxLDcgKzIyNTIsNyBAQCBpbmRl eCBmYjY2ZTBmLi40NTY4NGYwIDEwMDY0NAogIAkgIH0KICAJZWxzZQogIAkgIHsKLUBAIC02MTIs NyArNjAzLDYgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBz dHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNjIwLDcgKzYxMSw2IEBAIGRlZmF1bHRfcmVh ZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1l KQogIAlpZiAob2JqX3NlY3Rpb24KICAJICAgICYmIChvYmpfc2VjdGlvbi0+dGhlX2JmZF9zZWN0 aW9uLT5mbGFncyAmIFNFQ19USFJFQURfTE9DQUwpICE9IDApCiAgCSAgYWRkciA9IHRhcmdldF90 cmFuc2xhdGVfdGxzX2FkZHJlc3MgKG9ial9zZWN0aW9uLT5vYmpmaWxlLCBhZGRyKTsKQEAgLTIz MzksNyArMjI2MCw3IEBAIGluZGV4IGZiNjZlMGYuLjQ1Njg0ZjAgMTAwNjQ0CiAgICAgICAgfQog ICAgICAgIGJyZWFrOwogIAotQEAgLTYyNSw2ICs2MTUsMTAgQEAgZGVmYXVsdF9yZWFkX3Zhcl92 YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAt NjMzLDYgKzYyMywxMCBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2 YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAgICAgICBicmVhazsKICAgICAgfQogIApA QCAtMjM1MCw3ICsyMjcxLDcgQEAgaW5kZXggZmI2NmUwZi4uNDU2ODRmMCAxMDA2NDQKICAgIFZB TFVFX0xWQUwgKHYpID0gbHZhbF9tZW1vcnk7CiAgICBzZXRfdmFsdWVfYWRkcmVzcyAodiwgYWRk cik7CiAgICByZXR1cm4gdjsKLUBAIC03MjksMTAgKzcyMywxMSBAQCBzdHJ1Y3QgdmFsdWUgKgor QEAgLTczNywxMCArNzMxLDExIEBAIHN0cnVjdCB2YWx1ZSAqCiAgdmFsdWVfZnJvbV9yZWdpc3Rl ciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFt ZSkKICB7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFt ZSk7CkBAIC0yMzY0LDcgKzIyODUsNyBAQCBpbmRleCBmYjY2ZTBmLi40NTY4NGYwIDEwMDY0NAog ICAgICB7CiAgICAgICAgaW50IG9wdGltLCB1bmF2YWlsLCBvazsKICAKLUBAIC03NDcsNyArNzQy LDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0s IHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC03NTUsNyArNzUwLDcgQEAgdmFsdWVfZnJv bV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZSkKICAgICAgICBWQUxVRV9MVkFMICh2KSA9IGx2YWxfcmVnaXN0ZXI7CiAgICAg ICAgVkFMVUVfRlJBTUVfSUQgKHYpID0gZ2V0X2ZyYW1lX2lkIChmcmFtZSk7CiAgICAgICAgVkFM VUVfUkVHTlVNICh2KSA9IHJlZ251bTsKQEAgLTIzOTQsMjAgKzIzMTUsMjAgQEAgaW5kZXggMDVh MzhiMi4uOTgwMWZkZiAxMDA2NDQKICAgIHNldCB2YXJpYWJsZSAkZ2RiX2luaXRfZG9uZSA9IDEK ICAKIGRpZmYgLS1naXQgYS9nZGIvZ2RidHlwZXMuYyBiL2dkYi9nZGJ0eXBlcy5jCi1pbmRleCAx MjczMGQ3Li41YTYxNGUwIDEwMDY0NAoraW5kZXggZDE5YzU5My4uMzk5NTkxMyAxMDA2NDQKIC0t LSBhL2dkYi9nZGJ0eXBlcy5jCiArKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTM3LDYgKzM3LDkg QEAKLSAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgorQEAgLTM4LDYgKzM4LDkgQEAKICAjaW5jbHVk ZSAiaGFzaHRhYi5oIgogICNpbmNsdWRlICJleGNlcHRpb25zLmgiCisgI2luY2x1ZGUgImNwLXN1 cHBvcnQuaCIKICsjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKICsjaW5jbHVkZSAiZHdhcmYyZXhwci5o IgogKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKICAKICAvKiBJbml0aWFsaXplIEJBRE5FU1MgY29u c3RhbnRzLiAgKi8KICAKLUBAIC0xODUsNiArMTg4LDQzIEBAIGFsbG9jX3R5cGUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlKQorQEAgLTE4Niw2ICsxODksNDMgQEAgYWxsb2NfdHlwZSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUpCiAgICByZXR1cm4gdHlwZTsKICB9CiAgCkBAIC0yNDUxLDcgKzIz NzIsNyBAQCBpbmRleCAxMjczMGQ3Li41YTYxNGUwIDEwMDY0NAogIC8qIEFsbG9jYXRlIGEgbmV3 IEdEQkFSQ0gtYXNzb2NpYXRlZCB0eXBlIHN0cnVjdHVyZSBhbmQgZmlsbCBpdAogICAgIHdpdGgg c29tZSBkZWZhdWx0cy4gIFNwYWNlIGZvciB0aGUgdHlwZSBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVk CiAgICAgb24gdGhlIGhlYXAuICAqLwotQEAgLTMxMCw3ICszNTAsNyBAQCBtYWtlX3BvaW50ZXJf dHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICoqdHlwZXB0cikKK0BAIC0zMTEs NyArMzUxLDcgQEAgbWFrZV9wb2ludGVyX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3Qg dHlwZSAqKnR5cGVwdHIpCiAgCiAgICBpZiAodHlwZXB0ciA9PSAwIHx8ICp0eXBlcHRyID09IDAp CS8qIFdlJ2xsIG5lZWQgdG8gYWxsb2NhdGUgb25lLiAgKi8KICAgICAgewpAQCAtMjQ2MCw3ICsy MzgxLDcgQEAgaW5kZXggMTI3MzBkNy4uNWE2MTRlMCAxMDA2NDQKICAgICAgICBpZiAodHlwZXB0 cikKICAJKnR5cGVwdHIgPSBudHlwZTsKICAgICAgfQotQEAgLTM4Myw3ICs0MjMsNyBAQCBtYWtl X3JlZmVyZW5jZV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKip0eXBlcHRy KQorQEAgLTM4NCw3ICs0MjQsNyBAQCBtYWtlX3JlZmVyZW5jZV90eXBlIChzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IHR5cGUgKip0eXBlcHRyKQogIAogICAgaWYgKHR5cGVwdHIgPT0gMCB8fCAq dHlwZXB0ciA9PSAwKQkvKiBXZSdsbCBuZWVkIHRvIGFsbG9jYXRlIG9uZS4gICovCiAgICAgIHsK QEAgLTI0NjksNyArMjM5MCw3IEBAIGluZGV4IDEyNzMwZDcuLjVhNjE0ZTAgMTAwNjQ0CiAgICAg ICAgaWYgKHR5cGVwdHIpCiAgCSp0eXBlcHRyID0gbnR5cGU7CiAgICAgIH0KLUBAIC04MDYsNiAr ODQ2LDcgQEAgY3JlYXRlX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwgc3Ry dWN0IHR5cGUgKmluZGV4X3R5cGUsCitAQCAtODA3LDYgKzg0Nyw3IEBAIGNyZWF0ZV9yYW5nZV90 eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBlLAog ICAgICBUWVBFX1pBTExPQyAocmVzdWx0X3R5cGUsIHNpemVvZiAoc3RydWN0IHJhbmdlX2JvdW5k cykpOwogICAgVFlQRV9MT1dfQk9VTkQgKHJlc3VsdF90eXBlKSA9IGxvd19ib3VuZDsKICAgIFRZ UEVfSElHSF9CT1VORCAocmVzdWx0X3R5cGUpID0gaGlnaF9ib3VuZDsKQEAgLTI0NzcsNyArMjM5 OCw3IEBAIGluZGV4IDEyNzMwZDcuLjVhNjE0ZTAgMTAwNjQ0CiAgCiAgICBpZiAobG93X2JvdW5k ID49IDApCiAgICAgIFRZUEVfVU5TSUdORUQgKHJlc3VsdF90eXBlKSA9IDE7Ci1AQCAtOTI2LDYg Kzk2NywxMCBAQCBnZXRfYXJyYXlfYm91bmRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9OR0VTVCAq bG93X2JvdW5kLCBMT05HRVNUICpoaWdoX2JvdW5kKQorQEAgLTkyNyw2ICs5NjgsMTAgQEAgZ2V0 X2FycmF5X2JvdW5kcyAoc3RydWN0IHR5cGUgKnR5cGUsIExPTkdFU1QgKmxvd19ib3VuZCwgTE9O R0VTVCAqaGlnaF9ib3VuZCkKICAgIHJldHVybiAxOwogIH0KICAKQEAgLTI0ODgsNyArMjQwOSw3 IEBAIGluZGV4IDEyNzMwZDcuLjVhNjE0ZTAgMTAwNjQ0CiAgLyogQ3JlYXRlIGFuIGFycmF5IHR5 cGUgdXNpbmcgZWl0aGVyIGEgYmxhbmsgdHlwZSBzdXBwbGllZCBpbgogICAgIFJFU1VMVF9UWVBF LCBvciBjcmVhdGluZyBhIG5ldyB0eXBlLCBpbmhlcml0aW5nIHRoZSBvYmpmaWxlIGZyb20KICAg ICBSQU5HRV9UWVBFLgotQEAgLTk0OSwyNiArOTk0LDMxIEBAIGNyZWF0ZV9hcnJheV90eXBlIChz dHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsCitAQCAtOTUwLDI2ICs5OTUsMzEgQEAgY3JlYXRlX2Fy cmF5X3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwKICAKICAgIFRZUEVfQ09ERSAocmVz dWx0X3R5cGUpID0gVFlQRV9DT0RFX0FSUkFZOwogICAgVFlQRV9UQVJHRVRfVFlQRSAocmVzdWx0 X3R5cGUpID0gZWxlbWVudF90eXBlOwpAQCAtMjUzMyw3ICsyNDU0LDcgQEAgaW5kZXggMTI3MzBk Ny4uNWE2MTRlMCAxMDA2NDQKICAKICAgIHJldHVybiByZXN1bHRfdHlwZTsKICB9Ci1AQCAtMTQ4 OSw2ICsxNTM5LDEwNSBAQCBzdHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCitAQCAtMTQ5MCw2 ICsxNTQwLDEwNSBAQCBzdHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCiAgICBjb21wbGFpbnQg KCZzeW1maWxlX2NvbXBsYWludHMsIF8oInN0dWIgdHlwZSBoYXMgTlVMTCBuYW1lIikpOwogIH0K ICAKQEAgLTI2MzksNyArMjU2MCw3IEBAIGluZGV4IDEyNzMwZDcuLjVhNjE0ZTAgMTAwNjQ0CiAg LyogRmluZCB0aGUgcmVhbCB0eXBlIG9mIFRZUEUuICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhl IHJlYWwgdHlwZSwKICAgICBhZnRlciByZW1vdmluZyBhbGwgbGF5ZXJzIG9mIHR5cGVkZWZzLCBh bmQgY29tcGxldGluZyBvcGFxdWUgb3Igc3R1YgogICAgIHR5cGVzLiAgQ29tcGxldGlvbiBjaGFu Z2VzIHRoZSBUWVBFIGFyZ3VtZW50LCBidXQgc3RyaXBwaW5nIG9mCi1AQCAtMTY1NSw1MiArMTgw NCwzNyBAQCBjaGVja190eXBlZGVmIChzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BAIC0xNjU2LDUyICsx ODA1LDM3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQogICAgICAgICAgfQog ICAgICB9CiAgCkBAIC0yNzEzLDcgKzI2MzQsNyBAQCBpbmRleCAxMjczMGQ3Li41YTYxNGUwIDEw MDY0NAogIAkgIFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpID0gMDsKICAJfQogICAgICAgIGVsc2Ug aWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdFKQotQEAgLTE3MDgsNiArMTg0 Miw3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTE3MDksNiArMTg0 Myw3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQogIAkgIFRZUEVfTEVOR1RI ICh0eXBlKSA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7CiAgCSAgVFlQRV9UQVJHRVRfU1RV QiAodHlwZSkgPSAwOwogIAl9CkBAIC0yNzIxLDcgKzI2NDIsNyBAQCBpbmRleCAxMjczMGQ3Li41 YTYxNGUwIDEwMDY0NAogICAgICB9CiAgCiAgICB0eXBlID0gbWFrZV9xdWFsaWZpZWRfdHlwZSAo dHlwZSwgaW5zdGFuY2VfZmxhZ3MsIE5VTEwpOwotQEAgLTMzODQsMzMgKzM1MTksNDIgQEAgdHlw ZV9wYWlyX2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCitA QCAtMzQwNCwzMyArMzUzOSw0MiBAQCB0eXBlX3BhaXJfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhz LCBjb25zdCB2b2lkICppdGVtX3JocykKICB9CiAgCiAgLyogQWxsb2NhdGUgdGhlIGhhc2ggdGFi bGUgdXNlZCBieSBjb3B5X3R5cGVfcmVjdXJzaXZlIHRvIHdhbGsKQEAgLTI3NzksNyArMjcwMCw3 IEBAIGluZGV4IDEyNzMwZDcuLjVhNjE0ZTAgMTAwNjQ0CiAgICAgIHJldHVybiB0eXBlOwogIAog ICAgLyogVGhpcyB0eXBlIHNob3VsZG4ndCBiZSBwb2ludGluZyB0byBhbnkgdHlwZXMgaW4gb3Ro ZXIgb2JqZmlsZXM7Ci1AQCAtMzQyNSw5ICszNTY5LDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTM0NDUsOSArMzU4OSwxMCBAQCBjb3B5X3R5 cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgIG5ld190eXBlID0gYWxs b2NfdHlwZV9hcmNoIChnZXRfdHlwZV9hcmNoICh0eXBlKSk7CiAgCiAgICAvKiBXZSBtdXN0IGFk ZCB0aGUgbmV3IHR5cGUgdG8gdGhlIGhhc2ggdGFibGUgaW1tZWRpYXRlbHksIGluIGNhc2UKQEAg LTI3OTMsNyArMjcxNCw3IEBAIGluZGV4IDEyNzMwZDcuLjVhNjE0ZTAgMTAwNjQ0CiAgICBzdG9y ZWQtPm9sZCA9IHR5cGU7CiAgICBzdG9yZWQtPm5ldyA9IG5ld190eXBlOwogICAgKnNsb3QgPSBz dG9yZWQ7Ci1AQCAtMzQzOCw2ICszNTgzLDIxIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTM0NTgsNiArMzYwMywyMSBAQCBjb3B5X3R5cGVfcmVj dXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgIFRZUEVfT0JKRklMRV9PV05FRCAo bmV3X3R5cGUpID0gMDsKICAgIFRZUEVfT1dORVIgKG5ld190eXBlKS5nZGJhcmNoID0gZ2V0X3R5 cGVfYXJjaCAodHlwZSk7CiAgCkBAIC0yODE1LDcgKzI3MzYsNyBAQCBpbmRleCAxMjczMGQ3Li41 YTYxNGUwIDEwMDY0NAogICAgaWYgKFRZUEVfTkFNRSAodHlwZSkpCiAgICAgIFRZUEVfTkFNRSAo bmV3X3R5cGUpID0geHN0cmR1cCAoVFlQRV9OQU1FICh0eXBlKSk7CiAgICBpZiAoVFlQRV9UQUdf TkFNRSAodHlwZSkpCi1AQCAtMzQ0NiwxMiArMzYwNiw0OCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0zNDY2LDEyICszNjI2LDQ4IEBAIGNvcHlf dHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgVFlQRV9JTlNUQU5D RV9GTEFHUyAobmV3X3R5cGUpID0gVFlQRV9JTlNUQU5DRV9GTEFHUyAodHlwZSk7CiAgICBUWVBF X0xFTkdUSCAobmV3X3R5cGUpID0gVFlQRV9MRU5HVEggKHR5cGUpOwogIApAQCAtMjg2NCw3ICsy Nzg1LDcgQEAgaW5kZXggMTI3MzBkNy4uNWE2MTRlMCAxMDA2NDQKICAgICAgICBUWVBFX0ZJRUxE UyAobmV3X3R5cGUpID0gWENBTExPQyAobmZpZWxkcywgc3RydWN0IGZpZWxkKTsKICAgICAgICBm b3IgKGkgPSAwOyBpIDwgbmZpZWxkczsgaSsrKQogIAl7Ci1AQCAtMzQ2MCw4ICszNjU2LDggQEAg Y29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzQ4MCw4 ICszNjc2LDggQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs CiAgCSAgVFlQRV9GSUVMRF9CSVRTSVpFIChuZXdfdHlwZSwgaSkgPSBUWVBFX0ZJRUxEX0JJVFNJ WkUgKHR5cGUsIGkpOwogIAkgIGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKQogIAkgICAg VFlQRV9GSUVMRF9UWVBFIChuZXdfdHlwZSwgaSkKQEAgLTI4NzUsNyArMjc5Niw3IEBAIGluZGV4 IDEyNzMwZDcuLjVhNjE0ZTAgMTAwNjQ0CiAgCSAgaWYgKFRZUEVfRklFTERfTkFNRSAodHlwZSwg aSkpCiAgCSAgICBUWVBFX0ZJRUxEX05BTUUgKG5ld190eXBlLCBpKSA9IAogIAkgICAgICB4c3Ry ZHVwIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpKTsKLUBAIC0zNDkyLDI0ICszNjg4LDE4NCBA QCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0zNTEy LDI0ICszNzA4LDE4NCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKICAJfQogICAgICB9CiAgCkBAIC0zMDY3LDcgKzI5ODgsNyBAQCBpbmRleCAxMjczMGQ3 Li41YTYxNGUwIDEwMDY0NAogICAgLyogTWF5YmUgY29weSB0aGUgdHlwZV9zcGVjaWZpYyBiaXRz LgogIAogICAgICAgTk9URSBkcm93LzIwMDUtMTItMDk6IFdlIGRvIG5vdCBjb3B5IHRoZSBDKyst c3BlY2lmaWMgYml0cyBsaWtlCi1AQCAtMzUyNiw2ICszODgyLDE3IEBAIGNvcHlfdHlwZV9yZWN1 cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTM1NDYsNiArMzkwMiwxNyBAQCBj b3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgIHJldHVybiBu ZXdfdHlwZTsKICB9CiAgCkBAIC0zMDg1LDcgKzMwMDYsNyBAQCBpbmRleCAxMjczMGQ3Li41YTYx NGUwIDEwMDY0NAogIC8qIE1ha2UgYSBjb3B5IG9mIHRoZSBnaXZlbiBUWVBFLCBleGNlcHQgdGhh dCB0aGUgcG9pbnRlciAmIHJlZmVyZW5jZQogICAgIHR5cGVzIGFyZSBub3QgcHJlc2VydmVkLgog ICAgIAotQEAgLTQwOTAsNiArNDQ1NywxMyBAQCB2b2lkCitAQCAtNDExMCw2ICs0NDc3LDEzIEBA IHZvaWQKICBfaW5pdGlhbGl6ZV9nZGJ0eXBlcyAodm9pZCkKICB7CiAgICBnZGJ0eXBlc19kYXRh ID0gZ2RiYXJjaF9kYXRhX3JlZ2lzdGVyX3Bvc3RfaW5pdCAoZ2RidHlwZXNfcG9zdF9pbml0KTsK QEAgLTMzMzIsNyArMzI1Myw3IEBAIGluZGV4IDBjYTdhODcuLmM2MDI5ZGMgMTAwNjQ0CiAgCiAg ZXh0ZXJuIHN0cnVjdCB0eXBlICpjb3B5X3R5cGUgKGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKTsK IGRpZmYgLS1naXQgYS9nZGIvbWFpbi5jIGIvZ2RiL21haW4uYwotaW5kZXggMDZmM2ZlYi4uMTQx YTAxYiAxMDA2NDQKK2luZGV4IDY3N2Y1ODcuLjMwYjg0OWUgMTAwNjQ0CiAtLS0gYS9nZGIvbWFp bi5jCiArKysgYi9nZGIvbWFpbi5jCiBAQCAtMzcsNiArMzcsNyBAQApAQCAtMzM0Myw3ICszMjY0 LDcgQEAgaW5kZXggMDZmM2ZlYi4uMTQxYTAxYiAxMDA2NDQKICAjaW5jbHVkZSAic291cmNlLmgi CiAgI2luY2x1ZGUgImNsaS9jbGktY21kcy5oIgogICNpbmNsdWRlICJweXRob24vcHl0aG9uLmgi Ci1AQCAtMzE0LDYgKzMxNSw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtMzE4 LDYgKzMxOSw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICBjaGFyICpjZGFyZyA9 IE5VTEw7CiAgICBjaGFyICp0dHlhcmcgPSBOVUxMOwogIApAQCAtMzM1Miw3ICszMjczLDcgQEAg aW5kZXggMDZmM2ZlYi4uMTQxYTAxYiAxMDA2NDQKICAgIC8qIFRoZXNlIGFyZSBzdGF0aWMgc28g dGhhdCB3ZSBjYW4gdGFrZSB0aGVpciBhZGRyZXNzIGluIGFuCiAgICAgICBpbml0aWFsaXplci4g ICovCiAgICBzdGF0aWMgaW50IHByaW50X2hlbHA7Ci1AQCAtNTA0LDEwICs1MDcsMTQgQEAgY2Fw dHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKK0BAIC01MTcsMTAgKzUyMCwxNCBAQCBjYXB0dXJlZF9t YWluICh2b2lkICpkYXRhKQogICAgICAgIHsiYXJncyIsIG5vX2FyZ3VtZW50LCAmc2V0X2FyZ3Ms IDF9LAogICAgICAgIHsibCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCAnbCd9LAogICAgICAgIHsi cmV0dXJuLWNoaWxkLXJlc3VsdCIsIG5vX2FyZ3VtZW50LCAmcmV0dXJuX2NoaWxkX3Jlc3VsdCwg MX0sCkBAIC0zMzY4LDcgKzMyODksNyBAQCBpbmRleCAwNmYzZmViLi4xNDFhMDFiIDEwMDY0NAog ICAgICAgIHsKICAJaW50IG9wdGlvbl9pbmRleDsKICAKLUBAIC01MjUsNiArNTMyLDkgQEAgY2Fw dHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKK0BAIC01MzgsNiArNTQ1LDkgQEAgY2FwdHVyZWRfbWFp biAodm9pZCAqZGF0YSkKICAJICBjYXNlIDA6CiAgCSAgICAvKiBMb25nIG9wdGlvbiB0aGF0IGp1 c3Qgc2V0cyBhIGZsYWcuICAqLwogIAkgICAgYnJlYWs7CkBAIC0zMzc4LDcgKzMyOTksNyBAQCBp bmRleCAwNmYzZmViLi4xNDFhMDFiIDEwMDY0NAogIAkgIGNhc2UgT1BUX1NFOgogIAkgICAgc3lt YXJnID0gb3B0YXJnOwogIAkgICAgZXhlY2FyZyA9IG9wdGFyZzsKLUBAIC03MzMsNyArNzQzLDMx IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtNzQ3LDcgKzc1NywzMSBAQCBjYXB0 dXJlZF9tYWluICh2b2lkICpkYXRhKQogIAogICAgLyogTm93IHRoYXQgZ2RiX2luaXQgaGFzIGNy ZWF0ZWQgdGhlIGluaXRpYWwgaW5mZXJpb3IsIHdlJ3JlIGluCiAgICAgICBwb3NpdGlvbiB0byBz ZXQgYXJncyBmb3IgdGhhdCBpbmZlcmlvci4gICovCkBAIC0zNDExLDcgKzMzMzIsNyBAQCBpbmRl eCAwNmYzZmViLi4xNDFhMDFiIDEwMDY0NAogICAgICB7CiAgICAgICAgLyogVGhlIHJlbWFpbmlu ZyBvcHRpb25zIGFyZSB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMgZm9yIHRoZQogIAkgaW5mZXJp b3IuICBUaGUgZmlyc3Qgb25lIGlzIHRoZSBzeW0vZXhlYyBmaWxlLCBhbmQgdGhlIHJlc3QKLUBA IC0xMDEzLDcgKzEwNDcsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorQEAgLTEwMzcs NyArMTA3MSw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgCiAgICAvKiBSZWFkIGlu IHRoZSBvbGQgaGlzdG9yeSBhZnRlciBhbGwgdGhlIGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVuCiAg ICAgICByZWFkLiAgKi8KQEAgLTM0MjEsNyArMzM0Miw3IEBAIGluZGV4IDA2ZjNmZWIuLjE0MWEw MWIgMTAwNjQ0CiAgCiAgICBpZiAoYmF0Y2hfZmxhZykKICAgICAgewotQEAgLTEwMjQsMTMgKzEw NTksMjUgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKK0BAIC0xMDQ4LDEzICsxMDgzLDI1 IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICAvKiBTaG93IHRpbWUgYW5kL29yIHNw YWNlIHVzYWdlLiAgKi8KICAgIGRvX2NsZWFudXBzIChwcmVfc3RhdF9jaGFpbik7CiAgCkBAIC0z NDUzLDM3ICszMzc0LDM1IEBAIGluZGV4IDA2ZjNmZWIuLjE0MWEwMWIgMTAwNjQ0CiAgICAgIH0K ICAgIC8qIE5vIGV4aXQgLS0gZXhpdCBpcyB0aHJvdWdoIHF1aXRfY29tbWFuZC4gICovCiAgfQot QEAgLTEwNjIsNyArMTEwOSwxMiBAQCBwcmludF9nZGJfaGVscCAoc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSkKK0BAIC0xMDg5LDYgKzExMzYsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9m aWxlICpzdHJlYW0pCiAgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCiAgVGhpcyBpcyB0aGUgR05V IGRlYnVnZ2VyLiAgVXNhZ2U6XG5cblwKICAgICAgZ2RiIFtvcHRpb25zXSBbZXhlY3V0YWJsZS1m aWxlIFtjb3JlLWZpbGUgb3IgcHJvY2Vzcy1pZF1dXG5cCi0tICAgIGdkYiBbb3B0aW9uc10gLS1h cmdzIGV4ZWN1dGFibGUtZmlsZSBbaW5mZXJpb3ItYXJndW1lbnRzIC4uLl1cblxuXAogKyAgICBn ZGIgW29wdGlvbnNdIC0tYXJncyBleGVjdXRhYmxlLWZpbGUgW2luZmVyaW9yLWFyZ3VtZW50cyAu Li5dXG4iKSwgc3RyZWFtKTsKICsjaWYgSEFWRV9QWVRIT04KICsgIGZwdXRzX3VuZmlsdGVyZWQg KF8oIlwKICsgICAgZ2RiIFtvcHRpb25zXSBbLS1weXRob258LVBdIHNjcmlwdC1maWxlIFtzY3Jp cHQtYXJndW1lbnRzIC4uLl1cbiIpLCBzdHJlYW0pOwogKyNlbmRpZgogKyAgZnB1dHNfdW5maWx0 ZXJlZCAoXygiXG5cCi0gT3B0aW9uczpcblxuXAorICAgICBnZGIgW29wdGlvbnNdIC0tYXJncyBl eGVjdXRhYmxlLWZpbGUgW2luZmVyaW9yLWFyZ3VtZW50cyAuLi5dXG5cblwKICAiKSwgc3RyZWFt KTsKICAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKLUBAIC0xMTA0LDcgKzExNTYsMTMgQEAgT3B0 aW9uczpcblxuXAotICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiIGZpbGVzLlxuXAotICAgLS1uaCAg ICAgICAgICAgICAgIERvIG5vdCByZWFkICIpLCBzdHJlYW0pOwotICAgZnB1dHNfdW5maWx0ZXJl ZCAoZ2RiaW5pdCwgc3RyZWFtKTsKLS0gIGZwdXRzX3VuZmlsdGVyZWQgKF8oIiBmaWxlIGZyb20g aG9tZSBkaXJlY3RvcnkuXG5cCi0rICBmcHV0c191bmZpbHRlcmVkIChfKCIgZmlsZSBmcm9tIGhv bWUgZGlyZWN0b3J5LlxuIiksIHN0cmVhbSk7CitAQCAtMTEzNCw2ICsxMTg3LDEzIEBAIE91dHB1 dCBhbmQgdXNlciBpbnRlcmZhY2UgY29udHJvbDpcblxuXAorICAgZnB1dHNfdW5maWx0ZXJlZCAo XygiXAorICAgLS1kYnggICAgICAgICAgICAgIERCWCBjb21wYXRpYmlsaXR5IG1vZGUuXG5cCisg ICAtLXhkYiAgICAgICAgICAgICAgWERCIGNvbXBhdGliaWxpdHkgbW9kZS5cblwKKysiKSwgc3Ry ZWFtKTsKICsjaWYgSEFWRV9QWVRIT04KICsgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKICsgIC0t cHl0aG9uLCAtUCAgICAgICBGb2xsb3dpbmcgYXJndW1lbnQgaXMgUHl0aG9uIHNjcmlwdCBmaWxl OyByZW1haW5pbmdcblwKICsgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgYXJlIHBhc3Nl ZCB0byBzY3JpcHQuXG4iKSwgc3RyZWFtKTsKICsjZW5kaWYKICsgIGZwdXRzX3VuZmlsdGVyZWQg KF8oIlwKLSAgIC0tcXVpZXQgICAgICAgICAgICBEbyBub3QgcHJpbnQgdmVyc2lvbiBudW1iZXIg b24gc3RhcnR1cC5cblwKLSAgIC0tcmVhZG5vdyAgICAgICAgICBGdWxseSByZWFkIHN5bWJvbCBm aWxlcyBvbiBmaXJzdCBhY2Nlc3MuXG5cCisgICAtLXF1aWV0ICAgICAgICAgICAgRG8gbm90IHBy aW50IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cblwKICAiKSwgc3RyZWFtKTsKKyAgIGZw dXRzX3VuZmlsdGVyZWQgKF8oIlwKIGRpZmYgLS1naXQgYS9nZGIvcC12YWxwcmludC5jIGIvZ2Ri L3AtdmFscHJpbnQuYwotaW5kZXggYmNjMDU1ZS4uOGE5ZDY0NSAxMDA2NDQKK2luZGV4IDA1ZDRj NmYuLmFjZWMyYTIgMTAwNjQ0CiAtLS0gYS9nZGIvcC12YWxwcmludC5jCiArKysgYi9nZGIvcC12 YWxwcmludC5jCiBAQCAtMzgsNiArMzgsNyBAQApAQCAtMzU0Niw3ICszNDY1LDcgQEAgaW5kZXgg YmNjMDU1ZS4uOGE5ZDY0NSAxMDA2NDQKICAJICByZXR1cm47CiAgCX0KICAKLUBAIC0yNzAsNiAr Mjk1LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9i eXRlICp2YWxhZGRyLAorQEAgLTI3MSw2ICsyOTYsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCSAgICB9CiAgCX0KICAK QEAgLTM1NTQsNyArMzQ3Myw3IEBAIGluZGV4IGJjYzA1NWUuLjhhOWQ2NDUgMTAwNjQ0CiAgICAg ICAgcmV0dXJuOwogIAogICAgICBjYXNlIFRZUEVfQ09ERV9SRUY6Ci1AQCAtNDEwLDYgKzQzNiw3 IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwKK0BAIC00MTEsNiArNDM3LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5 cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogIAkgICAgIFRZUEVfQ09ERSAodHlw ZSkpOwogICAgICB9CiAgICBnZGJfZmx1c2ggKHN0cmVhbSk7CkBAIC0zNTYzLDEwICszNDgyLDEw IEBAIGluZGV4IGJjYzA1NWUuLjhhOWQ2NDUgMTAwNjQ0CiAgDAogIHZvaWQKIGRpZmYgLS1naXQg YS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5jCi1pbmRleCAwOWMzNzhiLi45M2M0MzRmIDEwMDY0 NAoraW5kZXggMTM2OTlhOC4uN2I5MzBjMSAxMDA2NDQKIC0tLSBhL2dkYi9wYXJzZS5jCiArKysg Yi9nZGIvcGFyc2UuYwotQEAgLTE3NTcsNiArMTc1Nyw3IEBAIHBhcnNlcl9mcHJpbnRmIChGSUxF ICp4LCBjb25zdCBjaGFyICp5LCAuLi4pCitAQCAtMTc4MCw2ICsxNzgwLDcgQEAgcGFyc2VyX2Zw cmludGYgKEZJTEUgKngsIGNvbnN0IGNoYXIgKnksIC4uLikKICAKICBpbnQKICBvcGVyYXRvcl9j aGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKQEAgLTM1NzQs NyArMzQ5Myw3IEBAIGluZGV4IDA5YzM3OGIuLjkzYzQzNGYgMTAwNjQ0CiAgCQkJIGludCAoKm9i amZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkJCQkJICAgICAgdm9pZCAq ZGF0YSksCiAgCQkJIHZvaWQgKmRhdGEpCi1AQCAtMTc5Niw3ICsxNzk3LDcgQEAgb3BlcmF0b3Jf Y2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCitAQCAtMTgx OSw3ICsxODIwLDcgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCBwb3MsCiAgCSAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGVsdHNbcG9zICsgMiAr IGFyZ10udHlwZTsKICAJICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxF ICh0eXBlKTsKICAKQEAgLTM1ODMsNyArMzUwMiw3IEBAIGluZGV4IDA5YzM3OGIuLjkzYzQzNGYg MTAwNjQ0CiAgCSAgICAgIHJldHVybiAxOwogIAkgIH0KICAgICAgICB9Ci1AQCAtMTgxNCw3ICsx ODE1LDggQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAs IGludCBwb3MsCitAQCAtMTgzNyw3ICsxODM4LDggQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQg KHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCiAgCiAgCS8qIENoZWNrIG9iamZpbGUg d2hlcmUgdGhlIHZhcmlhYmxlIGl0c2VsZiBpcyBwbGFjZWQuCiAgCSAgIFNZTUJPTF9PQkpfU0VD VElPTiAoc3ltYm9sKSBtYXkgYmUgTlVMTC4gICovCkBAIC0zNTkzLDcgKzM1MTIsNyBAQCBpbmRl eCAwOWMzNzhiLi45M2M0MzRmIDEwMDY0NAogIAkgIHJldHVybiAxOwogIAogIAkvKiBDaGVjayBv YmpmaWxlIHdoZXJlIGlzIHBsYWNlZCB0aGUgY29kZSB0b3VjaGluZyB0aGUgdmFyaWFibGUuICAq LwotQEAgLTE4MjcsMjQgKzE4MjksMjcgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCitAQCAtMTg1MCwyNCArMTg1MiwyNyBAQCBvcGVy YXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKICAK ICAgIC8qIEludm9rZSBjYWxsYmFja3MgZm9yIFRZUEUgYW5kIE9CSkZJTEUgaWYgdGhleSB3ZXJl IHNldCBhcyBub24tTlVMTC4gICovCiAgCkBAIC0zNjI5LDcgKzM1NDgsNyBAQCBpbmRleCAwOWMz NzhiLi45M2M0MzRmIDEwMDY0NAogIAkgICAgIGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRhKSwKICAJICAgICB2b2lkICpkYXRhKQogIHsKLUBA IC0xODU5LDcgKzE4NjQsOSBAQCBleHBfaXRlcmF0ZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwK K0BAIC0xODgyLDcgKzE4ODcsOSBAQCBleHBfaXRlcmF0ZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwKICAKICAgICAgICBwb3MgPSBlbmRwb3MgLSBvcGxlbjsKICAgICAgICBpZiAoZXhwLT5sYW5n dWFnZV9kZWZuLT5sYV9leHBfZGVzYy0+b3BlcmF0b3JfY2hlY2sgKGV4cCwgcG9zLApAQCAtMzY0 MCw3ICszNTU5LDcgQEAgaW5kZXggMDljMzc4Yi4uOTNjNDM0ZiAxMDA2NDQKICAJcmV0dXJuIDE7 CiAgCiAgICAgICAgZW5kcG9zID0gcG9zOwotQEAgLTE4OTAsOCArMTg5NywyOSBAQCBleHBfdXNl c19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSkKK0BAIC0xOTEzLDggKzE5MjAsMjkgQEAgZXhwX3VzZXNfb2JqZmlsZSAoc3RydWN0IGV4cHJl c3Npb24gKmV4cCwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCiAgewogICAgZ2RiX2Fzc2VydCAo b2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluayA9PSBOVUxMKTsKICAKQEAg LTM2NzIsMTAgKzM1OTEsMTAgQEAgaW5kZXggMDljMzc4Yi4uOTNjNDM0ZiAxMDA2NDQKICB2b2lk CiAgX2luaXRpYWxpemVfcGFyc2UgKHZvaWQpCiBkaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlci1kZWZz LmggYi9nZGIvcGFyc2VyLWRlZnMuaAotaW5kZXggOGQyNTMxMS4uMjMzZWQ0NiAxMDA2NDQKK2lu ZGV4IDVmYmFlMGQuLjFmZGFkNDYgMTAwNjQ0CiAtLS0gYS9nZGIvcGFyc2VyLWRlZnMuaAogKysr IGIvZ2RiL3BhcnNlci1kZWZzLmgKLUBAIC0yNDQsNiArMjQ0LDggQEAgZXh0ZXJuIHZvaWQgb3Bl cmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQsIGlu dCAqLAorQEAgLTI0NSw2ICsyNDUsOCBAQCBleHRlcm4gdm9pZCBvcGVyYXRvcl9sZW5ndGhfc3Rh bmRhcmQgKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICosIGludCwgaW50ICosCiAgCQkJCSAgICAg IGludCAqKTsKICAKICBleHRlcm4gaW50IG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3Qg ZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLApAQCAtMzY4NCw3ICszNjAzLDcgQEAgaW5kZXggOGQy NTMxMS4uMjMzZWQ0NiAxMDA2NDQKICAJCQkJICAgIGludCAoKm9iamZpbGVfZnVuYykKICAJCQkJ ICAgICAgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRhKSwKICAJCQkJICAgIHZv aWQgKmRhdGEpOwotQEAgLTMzMCw2ICszMzIsNyBAQCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IKK0BA IC0zMzEsNiArMzMzLDcgQEAgc3RydWN0IGV4cF9kZXNjcmlwdG9yCiAgICAgICAgIHZhbHVlIHNo b3VsZCBiZSBpbW1lZGlhdGVseSByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgT3RoZXJ3aXNlIHpl cm8KICAgICAgICAgc2hvdWxkIGJlIHJldHVybmVkLiAgKi8KICAgICAgaW50ICgqb3BlcmF0b3Jf Y2hlY2spIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLApAQCAtMzY5Myw3ICszNjEy LDcgQEAgaW5kZXggOGQyNTMxMS4uMjMzZWQ0NiAxMDA2NDQKICAJCQkJCQl2b2lkICpkYXRhKSwK ICAJCQkgICB2b2lkICpkYXRhKTsKIGRpZmYgLS1naXQgYS9nZGIvcHJpbnRjbWQuYyBiL2dkYi9w cmludGNtZC5jCi1pbmRleCAxNTU3MDNkLi41NDVhNjE1IDEwMDY0NAoraW5kZXggMWNjMjQ4ZC4u ZWVmMGM2NiAxMDA2NDQKIC0tLSBhL2dkYi9wcmludGNtZC5jCiArKysgYi9nZGIvcHJpbnRjbWQu YwogQEAgLTUxLDYgKzUxLDcgQEAKQEAgLTM3MDQsNyArMzYyMyw3IEBAIGluZGV4IDE1NTcwM2Qu LjU0NWE2MTUgMTAwNjQ0CiAgCiAgI2lmZGVmIFRVSQogICNpbmNsdWRlICJ0dWkvdHVpLmgiCQkv KiBGb3IgdHVpX2FjdGl2ZSBldCBhbC4gICAqLwotQEAgLTk2Nyw2ICs5NjgsMTEgQEAgcHJpbnRf Y29tbWFuZF8xIChjaGFyICpleHAsIGludCB2b2lkcHJpbnQpCitAQCAtOTgwLDYgKzk4MSwxMSBA QCBwcmludF9jb21tYW5kXzEgKGNvbnN0IGNoYXIgKmV4cCwgaW50IHZvaWRwcmludCkKICAgIGVs c2UKICAgICAgdmFsID0gYWNjZXNzX3ZhbHVlX2hpc3RvcnkgKDApOwogIApAQCAtMzcxNiw3ICsz NjM1LDcgQEAgaW5kZXggMTU1NzAzZC4uNTQ1YTYxNSAxMDA2NDQKICAgIGlmICh2b2lkcHJpbnQg fHwgKHZhbCAmJiB2YWx1ZV90eXBlICh2YWwpICYmCiAgCQkgICAgVFlQRV9DT0RFICh2YWx1ZV90 eXBlICh2YWwpKSAhPSBUWVBFX0NPREVfVk9JRCkpCiAgICAgIHsKLUBAIC0xMDM5LDYgKzEwNDUs OSBAQCBvdXRwdXRfY29tbWFuZCAoY2hhciAqZXhwLCBpbnQgZnJvbV90dHkpCitAQCAtMTA2MSw2 ICsxMDY3LDkgQEAgb3V0cHV0X2NvbW1hbmRfY29uc3QgKGNvbnN0IGNoYXIgKmV4cCwgaW50IGZy b21fdHR5KQogIAogICAgdmFsID0gZXZhbHVhdGVfZXhwcmVzc2lvbiAoZXhwcik7CiAgCkBAIC0z NzI2LDcgKzM2NDUsNyBAQCBpbmRleCAxNTU3MDNkLi41NDVhNjE1IDEwMDY0NAogICAgYW5ub3Rh dGVfdmFsdWVfYmVnaW4gKHZhbHVlX3R5cGUgKHZhbCkpOwogIAogICAgZ2V0X2Zvcm1hdHRlZF9w cmludF9vcHRpb25zICgmb3B0cywgZm9ybWF0KTsKLUBAIC0xNDY3LDYgKzE0NzYsMjQgQEAgeF9j b21tYW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKK0BAIC0xNDk1LDYgKzE1MDQsMjQgQEAg eF9jb21tYW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKICAJc2V0X2ludGVybmFsdmFyIChs b29rdXBfaW50ZXJuYWx2YXIgKCJfXyIpLCBsYXN0X2V4YW1pbmVfdmFsdWUpOwogICAgICB9CiAg fQpAQCAtMzc1MSw3ICszNjcwLDcgQEAgaW5kZXggMTU1NzAzZC4uNTQ1YTYxNSAxMDA2NDQKICAM CiAgCiAgLyogQWRkIGFuIGV4cHJlc3Npb24gdG8gdGhlIGF1dG8tZGlzcGxheSBjaGFpbi4KLUBA IC0xOTY0LDYgKzE5OTEsMTAgQEAgcHJpbnRfdmFyaWFibGVfYW5kX3ZhbHVlIChjb25zdCBjaGFy ICpuYW1lLCBzdHJ1Y3Qgc3ltYm9sICp2YXIsCitAQCAtMTk5Myw2ICsyMDIwLDEwIEBAIHByaW50 X3ZhcmlhYmxlX2FuZF92YWx1ZSAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN5bWJvbCAqdmFy LAogICAgICAgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CiAgCiAgICAgICAgdmFs ID0gcmVhZF92YXJfdmFsdWUgKHZhciwgZnJhbWUpOwpAQCAtMzc2Miw3ICszNjgxLDcgQEAgaW5k ZXggMTU1NzAzZC4uNTQ1YTYxNSAxMDA2NDQKICAgICAgICBnZXRfdXNlcl9wcmludF9vcHRpb25z ICgmb3B0cyk7CiAgICAgICAgb3B0cy5kZXJlZl9yZWYgPSAxOwogICAgICAgIGNvbW1vbl92YWxf cHJpbnQgKHZhbCwgc3RyZWFtLCBpbmRlbnQsICZvcHRzLCBjdXJyZW50X2xhbmd1YWdlKTsKLUBA IC0yNjEzLDQgKzI2NDQsOCBAQCBTaG93IHByaW50aW5nIG9mIHNvdXJjZSBmaWxlbmFtZSBhbmQg bGluZSBudW1iZXIgd2l0aCA8c3ltYm9sPi4iKSwgTlVMTCwKK0BAIC0yNjQ4LDQgKzI2NzksOCBA QCBTaG93IHByaW50aW5nIG9mIHNvdXJjZSBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIgd2l0aCA8 c3ltYm9sPi4iKSwgTlVMTCwKICAgIGFkZF9jb20gKCJldmFsIiwgbm9fY2xhc3MsIGV2YWxfY29t bWFuZCwgXygiXAogIENvbnZlcnQgXCJwcmludGYgZm9ybWF0IHN0cmluZ1wiLCBhcmcxLCBhcmcy LCBhcmczLCAuLi4sIGFyZ24gdG9cblwKICBhIGNvbW1hbmQgbGluZSwgYW5kIGNhbGwgaXQuIikp OwpAQCAtNDAxOSw3ICszOTM4LDcgQEAgaW5kZXggMDAwMDAwMC4uZGViYjNiYgogKwogK0luU2Nv cGUgKCkKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXR5cGUuYyBiL2dkYi9weXRob24vcHkt dHlwZS5jCi1pbmRleCAwNTFjZmYwLi5lMmYyZWJlIDEwMDY0NAoraW5kZXggMzM3ZTMwNy4uYmU5 MWM1YSAxMDA2NDQKIC0tLSBhL2dkYi9weXRob24vcHktdHlwZS5jCiArKysgYi9nZGIvcHl0aG9u L3B5LXR5cGUuYwogQEAgLTMxLDYgKzMxLDggQEAKQEAgLTQwNDksMTAgKzM5NjgsMTAgQEAgaW5k ZXggMDUxY2ZmMC4uZTJmMmViZSAxMDA2NDQKICtzdGF0aWMgdHlwZV9vYmplY3QgKnB5dHlfb2Jq ZWN0c19kaXNjYXJkYWJsZTsKICsjZW5kaWYKICsKLSBzdGF0aWMgUHlUeXBlT2JqZWN0IHR5cGVf b2JqZWN0X3R5cGU7Cisgc3RhdGljIFB5VHlwZU9iamVjdCB0eXBlX29iamVjdF90eXBlCisgICAg IENQWUNIRUNLRVJfVFlQRV9PQkpFQ1RfRk9SX1RZUEVERUYgKCJ0eXBlX29iamVjdCIpOwogIAot IC8qIEEgRmllbGQgb2JqZWN0LiAgKi8KLUBAIC0xMTkyLDggKzEyMDIsNjMgQEAgdHlweV9yaWNo Y29tcGFyZSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQorQEAgLTEx ODAsOCArMTE5MCw2MyBAQCB0eXB5X3JpY2hjb21wYXJlIChQeU9iamVjdCAqc2VsZiwgUHlPYmpl Y3QgKm90aGVyLCBpbnQgb3ApCiAgCiAgDAogIApAQCAtNDExNiw3ICs0MDM1LDcgQEAgaW5kZXgg MDUxY2ZmMC4uZTJmMmViZSAxMDA2NDQKICBzdGF0aWMgdm9pZAogIHNhdmVfb2JqZmlsZV90eXBl cyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdHVtKQogIHsKLUBAIC0xMjExLDEy ICsxMjc2LDEzIEBAIHNhdmVfb2JqZmlsZV90eXBlcyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IHZvaWQgKmRhdHVtKQorQEAgLTEyMDIsMTIgKzEyNjcsMTMgQEAgc2F2ZV9vYmpmaWxlX3R5cGVz IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCiAgICAgIHsKICAgICAgICB0 eXBlX29iamVjdCAqbmV4dCA9IG9iai0+bmV4dDsKICAKQEAgLTQxMzQsNyArNDA1Myw3IEBAIGlu ZGV4IDA1MWNmZjAuLmUyZjJlYmUgMTAwNjQ0CiAgCiAgICAgICAgb2JqID0gbmV4dDsKICAgICAg fQotQEAgLTEyMjcsNDMgKzEyOTMsMjggQEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCitAQCAtMTIxOCw0MyArMTI4NCwyOCBAQCBzYXZl X29iamZpbGVfdHlwZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKICB9 CiAgCiAgc3RhdGljIHZvaWQKQEAgLTQxOTIsNyArNDExMSw3IEBAIGluZGV4IDA1MWNmZjAuLmUy ZjJlYmUgMTAwNjQ0CiAgCiAgLyogUmV0dXJuIG51bWJlciBvZiBmaWVsZHMgKCJsZW5ndGgiIG9m IHRoZSBmaWVsZCBkaWN0aW9uYXJ5KS4gICovCiAgCi1AQCAtMTQ4Myw3ICsxNTM0LDEwIEBAIHR5 cGVfdG9fdHlwZV9vYmplY3QgKHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTE0NzQsNyArMTUyNSwx MCBAQCB0eXBlX3RvX3R5cGVfb2JqZWN0IChzdHJ1Y3QgdHlwZSAqdHlwZSkKICAKICAgIHR5cGVf b2JqID0gUHlPYmplY3RfTmV3ICh0eXBlX29iamVjdCwgJnR5cGVfb2JqZWN0X3R5cGUpOwogICAg aWYgKHR5cGVfb2JqKQpAQCAtNDIwNCwxOSArNDEyMyw4IEBAIGluZGV4IDA1MWNmZjAuLmUyZjJl YmUgMTAwNjQ0CiAgCiAgICByZXR1cm4gKFB5T2JqZWN0ICopIHR5cGVfb2JqOwogIH0KLUBAIC0x NTYzLDYgKzE2MTcsMTAgQEAgZ2RicHlfaW5pdGlhbGl6ZV90eXBlcyAodm9pZCkKLSAKLSAgIFB5 X0lOQ1JFRiAoJmZpZWxkX29iamVjdF90eXBlKTsKLSAgIFB5TW9kdWxlX0FkZE9iamVjdCAoZ2Ri X21vZHVsZSwgIkZpZWxkIiwgKFB5T2JqZWN0ICopICZmaWVsZF9vYmplY3RfdHlwZSk7Ci0rCi0r I2lmIDAKLSsgIG9ic2VydmVyX2F0dGFjaF9tYXJrX3VzZWQgKHR5cHlfdHlwZXNfbWFya191c2Vk KTsKLSsjZW5kaWYKLSB9Ci0gCi0gDAogZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktdmFsdWUu YyBiL2dkYi9weXRob24vcHktdmFsdWUuYwotaW5kZXggMTFjYzAzOC4uZWYyMzhmNiAxMDA2NDQK K2luZGV4IDBkODcyMTkuLmMwMTkxODQgMTAwNjQ0CiAtLS0gYS9nZGIvcHl0aG9uL3B5LXZhbHVl LmMKICsrKyBiL2dkYi9weXRob24vcHktdmFsdWUuYwogQEAgLTI5LDYgKzI5LDcgQEAKQEAgLTQy MjcsNyArNDEzNSw3IEBAIGluZGV4IDExY2MwMzguLmVmMjM4ZjYgMTAwNjQ0CiAgCiAgI2lmZGVm IEhBVkVfUFlUSE9OCiAgCi1AQCAtMTM4NSw2ICsxMzg2LDE5IEBAIGdkYnB5X2lzX3ZhbHVlX29i amVjdCAoUHlPYmplY3QgKm9iaikKK0BAIC0xMzg1LDEyICsxMzg2LDI4IEBAIGdkYnB5X2lzX3Zh bHVlX29iamVjdCAoUHlPYmplY3QgKm9iaikKICAgIHJldHVybiBQeU9iamVjdF9UeXBlQ2hlY2sg KG9iaiwgJnZhbHVlX29iamVjdF90eXBlKTsKICB9CiAgCkBAIC00MjQ0LDIyICs0MTUyLDIwIEBA IGluZGV4IDExY2MwMzguLmVmMjM4ZjYgMTAwNjQ0CiArfQogKyNlbmRpZgogKwotIHZvaWQKKyBp bnQKICBnZGJweV9pbml0aWFsaXplX3ZhbHVlcyAodm9pZCkKICB7Ci1AQCAtMTM5NSw2ICsxNDA5 LDEwIEBAIGdkYnB5X2luaXRpYWxpemVfdmFsdWVzICh2b2lkKQotICAgUHlNb2R1bGVfQWRkT2Jq ZWN0IChnZGJfbW9kdWxlLCAiVmFsdWUiLCAoUHlPYmplY3QgKikgJnZhbHVlX29iamVjdF90eXBl KTsKKyAgIGlmIChQeVR5cGVfUmVhZHkgKCZ2YWx1ZV9vYmplY3RfdHlwZSkgPCAwKQorICAgICBy ZXR1cm4gLTE7CiAgCi0gICB2YWx1ZXNfaW5fcHl0aG9uID0gTlVMTDsKLSsKICsjaWYgMAogKyAg b2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAocHl0aG9uX3R5cGVzX21hcmtfdXNlZCk7CiArI2Vu ZGlmCisgICByZXR1cm4gZ2RiX3B5bW9kdWxlX2FkZG9iamVjdCAoZ2RiX21vZHVsZSwgIlZhbHVl IiwKKyAJCQkJIChQeU9iamVjdCAqKSAmdmFsdWVfb2JqZWN0X3R5cGUpOwogIH0KLSAKLSAMCiBk aWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uYyBiL2dkYi9weXRob24vcHl0aG9uLmMKLWlu ZGV4IGNkOGRkZmIuLmU5MDZjNGYgMTAwNjQ0CitpbmRleCAwMDA5MmM3Li5lYzQ5ZmM5IDEwMDY0 NAogLS0tIGEvZ2RiL3B5dGhvbi9weXRob24uYwogKysrIGIvZ2RiL3B5dGhvbi9weXRob24uYwog QEAgLTY3LDYgKzY3LDggQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdkYnB5X3Nob3VsZF9wcmludF9z dGFjayA9IHB5dGhvbl9leGNwX21lc3NhZ2U7CkBAIC00MjcxLDcgKzQxNzcsNyBAQCBpbmRleCBj ZDhkZGZiLi5lOTA2YzRmIDEwMDY0NAogICNpbmNsdWRlICJ0YXJnZXQuaCIKICAjaW5jbHVkZSAi Z2RidGhyZWFkLmgiCiAgI2luY2x1ZGUgIm9ic2VydmVyLmgiCi1AQCAtMTA5OSw2ICsxMTAxLDUz IEBAIGdkYnB5X3ByaW50X3N0YWNrICh2b2lkKQorQEAgLTExMTYsNiArMTExOCw1MyBAQCBnZGJw eV9wcmludF9zdGFjayAodm9pZCkKICAKICAvKiBSZXR1cm4gdGhlIGN1cnJlbnQgUHJvZ3NwYWNl LgogICAgIFRoZXJlIGFsd2F5cyBpcyBvbmUuICAqLwpAQCAtNDMyNSw3ICs0MjMxLDcgQEAgaW5k ZXggY2Q4ZGRmYi4uZTkwNmM0ZiAxMDA2NDQKICAKICBzdGF0aWMgUHlPYmplY3QgKgogIGdkYnB5 X2dldF9jdXJyZW50X3Byb2dzcGFjZSAoUHlPYmplY3QgKnVudXNlZDEsIFB5T2JqZWN0ICp1bnVz ZWQyKQotQEAgLTE3NDksNiArMTc5OCw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2Rz W10gPQorQEAgLTE4MjYsNiArMTg3NSw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2Rz W10gPQogICAgICAiR2V0IGEgdmFsdWUgZnJvbSBoaXN0b3J5IiB9LAogICAgeyAiZXhlY3V0ZSIs IChQeUNGdW5jdGlvbikgZXhlY3V0ZV9nZGJfY29tbWFuZCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9L RVlXT1JEUywKICAgICAgIkV4ZWN1dGUgYSBnZGIgY29tbWFuZCIgfSwKQEAgLTQzMzUsMTAgKzQy NDEsMTAgQEAgaW5kZXggY2Q4ZGRmYi4uZTkwNmM0ZiAxMDA2NDQKICAgICAgIlJldHVybiBhIGdk YiBwYXJhbWV0ZXIncyB2YWx1ZSIgfSwKICAKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhv bi5oIGIvZ2RiL3B5dGhvbi9weXRob24uaAotaW5kZXggMjRlMzA3Ny4uMDQ0MzA4NyAxMDA2NDQK K2luZGV4IDFhMWU1YzIuLjMxMmJlOTQgMTAwNjQ0CiAtLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5o CiArKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5oCi1AQCAtMzQsNiArMzQsOCBAQCB2b2lkIGV2YWxf cHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5lICopOworQEAg LTk1LDYgKzk1LDggQEAgdm9pZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAoc3Ry dWN0IGNvbW1hbmRfbGluZSAqKTsKICAKICB2b2lkIHNvdXJjZV9weXRob25fc2NyaXB0IChGSUxF ICpmaWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSk7CiAgCkBAIC00MzQ4LDEwICs0MjU0LDEwIEBA IGluZGV4IDI0ZTMwNzcuLjA0NDMwODcgMTAwNjQ0CiAgCQkJICAgICAgaW50IGVtYmVkZGVkX29m ZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCiAgCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSwgaW50IHJlY3Vyc2UsCiBkaWZmIC0tZ2l0IGEvZ2RiL3N0YWNrLmMgYi9nZGIvc3RhY2suYwot aW5kZXggZjJhZWIxMC4uZDIwYjJmMSAxMDA2NDQKK2luZGV4IGQ4OWZmODkuLjMwMWQ1NjkgMTAw NjQ0CiAtLS0gYS9nZGIvc3RhY2suYwogKysrIGIvZ2RiL3N0YWNrLmMKLUBAIC01MDksNiArNTA5 LDEwIEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wgKmZ1bmMsIHN0cnVjdCBmcmFt ZV9pbmZvICpmcmFtZSwKK0BAIC01MTEsNiArNTExLDEwIEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0 cnVjdCBzeW1ib2wgKmZ1bmMsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICAgIHN0YiA9IG1l bV9maWxlb3BlbiAoKTsKICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cF91aV9maWxlX2RlbGV0 ZSAoc3RiKTsKICAKQEAgLTU1NjEsMTAgKzU0NjcsMTAgQEAgaW5kZXggMmNjOTM1Yi4uMzBjN2Y4 NSAxMDA2NDQKICBtYWluICh2b2lkKQogIHsKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2FycmF5aWR4LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhw Ci1pbmRleCAzODdiMzRmLi5kNTk1NmNlIDEwMDY0NAoraW5kZXggMzdlZDRjMy4uODJmMzBjYiAx MDA2NDQKIC0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCiArKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cAotQEAgLTUzLDQgKzUzLDEyIEBAIGdk Yl90ZXN0ICJwcmludCBhcnJheSIgXAorQEAgLTQ5LDQgKzQ5LDEyIEBAIGdkYl90ZXN0ICJwcmlu dCBhcnJheSIgXAogICAgICAgICAgICJcXHtcXFxbMFxcXF0gPSAxLCBcXFxbMVxcXF0gPSAyLCBc XFxbMlxcXF0gPSAzLCBcXFxbM1xcXF0gPSA0XFx9IiBcCiAgICAgICAgICAgIlByaW50IGFycmF5 IHdpdGggYXJyYXktaW5kZXhlcyBvbiIKICAKQEAgLTc0MjYsMTAgKzczMzIsMTAgQEAgaW5kZXgg MDAwMDAwMC4uNDc0N2VhOQogKyAgd3JpdGUgKCosKikgYSAgICAgICAgICAgICAgICAgISBicmVh ay1zdGF0aWMKICtlbmQKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRl c3QuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAotaW5kZXggNTVlMTNj Zi4uNDQxYzI4YiAxMDA2NDQKK2luZGV4IGQ3MDA3MTUuLjZlYmNhMGEgMTAwNjQ0CiAtLS0gYS9n ZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5nZGIvc2VsZnRlc3QuZXhwCi1AQCAtOTEsNiArOTEsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRf bmV4dHMge30geworQEAgLTkyLDYgKzkyLDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9 IHsKICAJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIGNtZGFyZ192ZWMgaW5pdGlhbGl6YXRp b24iCiAgCQlzZXQgY29tbWFuZCAic3RlcCIKICAJICAgIH0KQEAgLTc4NzMsNyArNzc3OSw3IEBA IGluZGV4IDkxNDJjNzIuLjI4NTUyMjAgMTAwNjQ0CiAgIyBUZXN0IGVpdGhlciBDIG9yIEMrKyB2 YWx1ZXMuIAogIHRlc3Rfc3Vic2NyaXB0X3JlZ3Jlc3Npb24gIiR7YmluZmlsZX0iICJjIgogZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9n ZGIuZXhwCi1pbmRleCA4YjE2YjM4Li5mNmU1OWIwIDEwMDY0NAoraW5kZXggNzBiNzk3ZS4uMzU4 OGUxZCAxMDA2NDQKIC0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICsrKyBiL2dkYi90 ZXN0c3VpdGUvbGliL2dkYi5leHAKIEBAIC0xNDMsNiArMTQzLDExIEBAIHByb2MgZ2RiX3VubG9h ZCB7fSB7CkBAIC03ODg5LDcgKzc3OTUsNyBAQCBpbmRleCA4YjE2YjM4Li5mNmU1OWIwIDEwMDY0 NAogIAkgICAgc2VuZF9nZGIgInlcbiIKICAJICAgIGV4cF9jb250aW51ZQogZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwu ZXhwCi1pbmRleCA1NjlmYjAyLi5jYWNlY2Y0IDEwMDY0NAoraW5kZXggNzg0YWI2Yy4uOWUwYTg0 NCAxMDA2NDQKIC0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKICsrKyBiL2dkYi90 ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKIEBAIC0zNyw2ICszNyw5IEBAIHByb2MgcGFzY2FsX2lu aXQge30gewpAQCAtNzkyNCwxMCArNzgzMCwxMCBAQCBpbmRleCA1NjlmYjAyLi5jYWNlY2Y0IDEw MDY0NAogICAgICBzZXQgcGFzY2FsX2luaXRfZG9uZSAxCiAgfSAgIAogZGlmZiAtLWdpdCBhL2dk Yi90b3AuYyBiL2dkYi90b3AuYwotaW5kZXggZTlhNDBmYy4uZGUwNTFjOCAxMDA2NDQKK2luZGV4 IDMzYTc4ZGEuLjIyOTkyYmEgMTAwNjQ0CiAtLS0gYS9nZGIvdG9wLmMKICsrKyBiL2dkYi90b3Au YwotQEAgLTM1MCw2ICszNTAsOSBAQCBwcmVwYXJlX2V4ZWN1dGVfY29tbWFuZCAodm9pZCkKK0BA IC0zNDIsNiArMzQyLDkgQEAgcHJlcGFyZV9leGVjdXRlX2NvbW1hbmQgKHZvaWQpCiAgCiAgICBt YXJrID0gdmFsdWVfbWFyayAoKTsKICAgIGNsZWFudXAgPSBtYWtlX2NsZWFudXBfdmFsdWVfZnJl ZV90b19tYXJrIChtYXJrKTsKQEAgLTc5MzgsNyArNzg0NCw3IEBAIGluZGV4IGU5YTQwZmMuLmRl MDUxYzggMTAwNjQ0CiAgICAvKiBXaXRoIG11bHRpcGxlIHRocmVhZHMgcnVubmluZyB3aGlsZSB0 aGUgb25lIHdlJ3JlIGV4YW1pbmluZyBpcwogICAgICAgc3RvcHBlZCwgdGhlIGRjYWNoZSBjYW4g Z2V0IHN0YWxlIHdpdGhvdXQgdXMgYmVpbmcgYWJsZSB0byBkZXRlY3QKIGRpZmYgLS1naXQgYS9n ZGIvdHlwZXByaW50LmMgYi9nZGIvdHlwZXByaW50LmMKLWluZGV4IDJkNWE2YWYuLjUyNTFlM2Yg MTAwNjQ0CitpbmRleCA0ZTcwNTkzLi5lODQwMmEyIDEwMDY0NAogLS0tIGEvZ2RiL3R5cGVwcmlu dC5jCiArKysgYi9nZGIvdHlwZXByaW50LmMKIEBAIC0zNCw2ICszNCw3IEBACkBAIC03OTc2LDEw ICs3ODgyLDEwIEBAIGluZGV4IDJkNWE2YWYuLjUyNTFlM2YgMTAwNjQ0CiAgCiAgICBnZXRfdXNl cl9wcmludF9vcHRpb25zICgmb3B0cyk7CiBkaWZmIC0tZ2l0IGEvZ2RiL3V0aWxzLmMgYi9nZGIv dXRpbHMuYwotaW5kZXggNGMyZjA4Yy4uZDFjODcxMCAxMDA2NDQKK2luZGV4IDk0ZWJjZTguLjIz YTQ5ODYgMTAwNjQ0CiAtLS0gYS9nZGIvdXRpbHMuYwogKysrIGIvZ2RiL3V0aWxzLmMKLUBAIC0x ODA1LDYgKzE4MDUsMzYgQEAgc2V0X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3Jl X3BhZ2VfaW5mbyAodm9pZCkKK0BAIC0xNzI1LDYgKzE3MjUsMzYgQEAgc2V0X2JhdGNoX2ZsYWdf YW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCkKICAgIHJldHVybiBiYWNr X3RvOwogIH0KICAKQEAgLTgwMTcsMTIgKzc5MjMsMTIgQEAgaW5kZXggNGMyZjA4Yy4uZDFjODcx MCAxMDA2NDQKICAKICBzdGF0aWMgdm9pZAogZGlmZiAtLWdpdCBhL2dkYi91dGlscy5oIGIvZ2Ri L3V0aWxzLmgKLWluZGV4IDUyYmNhZmYuLjZhYjQxN2IgMTAwNjQ0CitpbmRleCAwZjZiYjA2Li4y ODMxMzdlIDEwMDY0NAogLS0tIGEvZ2RiL3V0aWxzLmgKICsrKyBiL2dkYi91dGlscy5oCi1AQCAt Mzc1LDQgKzM3NSw2IEBAIGV4dGVybiBpbnQgbXlyZWFkIChpbnQsIGNoYXIgKiwgaW50KTsKLSBl eHRlcm4gVUxPTkdFU1QgYWxpZ25fdXAgKFVMT05HRVNUIHYsIGludCBuKTsKLSBleHRlcm4gVUxP TkdFU1QgYWxpZ25fZG93biAoVUxPTkdFU1QgdiwgaW50IG4pOworQEAgLTM4NCw0ICszODQsNiBA QCBleHRlcm4gVUxPTkdFU1QgYWxpZ25fZG93biAoVUxPTkdFU1QgdiwgaW50IG4pOworIAorIGV4 dGVybiBMT05HRVNUIGdkYl9zaWduX2V4dGVuZCAoTE9OR0VTVCB2YWx1ZSwgaW50IGJpdCk7CiAg CiArZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBfcmVzdG9yZV9zZWxlY3RlZF9m cmFtZSAodm9pZCk7CiArCkBAIC04MDU1LDEwICs3OTYxLDEwIEBAIGluZGV4IDE4YzE0ZmMuLjBh M2EzYWEgMTAwNjQ0CiAgfQogIAogZGlmZiAtLWdpdCBhL2dkYi92YWxvcHMuYyBiL2dkYi92YWxv cHMuYwotaW5kZXggOTNjMDlkOC4uYWVmMDk5MSAxMDA2NDQKK2luZGV4IGEzYWIyNGYuLjUzYWY4 NDIgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsb3BzLmMKICsrKyBiL2dkYi92YWxvcHMuYwotQEAgLTQ1 LDYgKzQ1LDcgQEAKK0BAIC00NCw2ICs0NCw3IEBACiAgI2luY2x1ZGUgIm9iamZpbGVzLmgiCiAg I2luY2x1ZGUgInN5bXRhYi5oIgogICNpbmNsdWRlICJleGNlcHRpb25zLmgiCkBAIC04MDY2LDcg Kzc5NzIsNyBAQCBpbmRleCA5M2MwOWQ4Li5hZWYwOTkxIDEwMDY0NAogIAogIGV4dGVybiB1bnNp Z25lZCBpbnQgb3ZlcmxvYWRfZGVidWc7CiAgLyogTG9jYWwgZnVuY3Rpb25zLiAgKi8KLUBAIC05 MDMsNiArOTA0LDY1IEBAIHZhbHVlX29uZSAoc3RydWN0IHR5cGUgKnR5cGUpCitAQCAtOTAyLDYg KzkwMyw2NSBAQCB2YWx1ZV9vbmUgKHN0cnVjdCB0eXBlICp0eXBlKQogICAgcmV0dXJuIHZhbDsK ICB9CiAgCkBAIC04MTMyLDQ4ICs4MDM4LDcgQEAgaW5kZXggOTNjMDlkOC4uYWVmMDk5MSAxMDA2 NDQKICAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHZhbHVlX2F0LCB2YWx1ZV9hdF9sYXp5LCBhbmQg dmFsdWVfYXRfbGF6eV9zdGFjay4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi1AQCAt OTY1LDcgKzEwMjUsOCBAQCBpbnQKLSB2YWx1ZV9mZXRjaF9sYXp5IChzdHJ1Y3QgdmFsdWUgKnZh bCkKLSB7Ci0gICBnZGJfYXNzZXJ0ICh2YWx1ZV9sYXp5ICh2YWwpKTsKLS0gIGFsbG9jYXRlX3Zh bHVlX2NvbnRlbnRzICh2YWwpOwotKyAgaWYgKFZBTFVFX0xWQUwgKHZhbCkgIT0gbHZhbF9tZW1v cnkpCi0rICAgIGFsbG9jYXRlX3ZhbHVlX2NvbnRlbnRzICh2YWwpOwotICAgaWYgKHZhbHVlX2Jp dHNpemUgKHZhbCkpCi0gICAgIHsKLSAgICAgICAvKiBUbyByZWFkIGEgbGF6eSBiaXRmaWVsZCwg cmVhZCB0aGUgZW50aXJlIGVuY2xvc2luZyB2YWx1ZS4gIFRoaXMKLUBAIC05OTgsMTMgKzEwNTks MjQgQEAgdmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCi0gICAgIH0KLSAgIGVs c2UgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkpCi0gICAgIHsKLS0gICAgICBD T1JFX0FERFIgYWRkciA9IHZhbHVlX2FkZHJlc3MgKHZhbCk7Ci0tICAgICAgc3RydWN0IHR5cGUg KnR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV9lbmNsb3NpbmdfdHlwZSAodmFsKSk7Ci0rICAg ICAgQ09SRV9BRERSIGFkZHIgPSB2YWx1ZV9yYXdfYWRkcmVzcyAodmFsKTsKLSAKLS0gICAgICBp ZiAoVFlQRV9MRU5HVEggKHR5cGUpKQotLQlyZWFkX3ZhbHVlX21lbW9yeSAodmFsLCAwLCB2YWx1 ZV9zdGFjayAodmFsKSwKLS0JCQkgICBhZGRyLCB2YWx1ZV9jb250ZW50c19hbGxfcmF3ICh2YWwp LAotLQkJCSAgIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0rICAgICAgaWYgKG9iamVjdF9hZGRyZXNz X2dldF9kYXRhICh2YWx1ZV90eXBlICh2YWwpLCAmYWRkcikpCi0rCXsKLSsJICBzdHJ1Y3QgdHlw ZSAqdHlwZSA9IHZhbHVlX2VuY2xvc2luZ190eXBlICh2YWwpOwotKwkgIGludCBsZW5ndGggPSBU WVBFX0xFTkdUSCAoY2hlY2tfdHlwZWRlZiAodHlwZSkpOwotKwotKwkgIGlmIChsZW5ndGgpCi0r CSAgICB7Ci0rCSAgICAgIC8qIERlbGF5IGl0IGFmdGVyIG9iamVjdF9hZGRyZXNzX2dldF9kYXRh IGFib3ZlLiAgKi8KLSsJICAgICAgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKHZhbCk7Ci0rCSAg ICAgIGFkZHIgKz0gdmFsdWVfb2Zmc2V0ICh2YWwpOwotKwkgICAgICByZWFkX3ZhbHVlX21lbW9y eSAodmFsLCAwLCB2YWx1ZV9zdGFjayAodmFsKSwKLSsJCQkJIGFkZHIsIHZhbHVlX2NvbnRlbnRz X2FsbF9yYXcgKHZhbCksIGxlbmd0aCk7Ci0rCSAgICB9Ci0rCX0KLSsgICAgICAvKiBKdXN0IHRv IGJlIHN1cmUgaXQgaGFzIGJlZW4gY2FsbGVkLiAgKi8KLSsgICAgICBhbGxvY2F0ZV92YWx1ZV9j b250ZW50cyAodmFsKTsKLSAgICAgfQotICAgZWxzZSBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBs dmFsX3JlZ2lzdGVyKQotICAgICB7Ci1AQCAtMTUyOSw3ICsxNjAxLDE4IEBAIGFkZHJlc3Nfb2Zf dmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnZhciwgY29uc3Qgc3RydWN0IGJsb2NrICpiKQorQEAg LTEzNjYsNyArMTQyNiwxOCBAQCBhZGRyZXNzX29mX3ZhcmlhYmxlIChzdHJ1Y3Qgc3ltYm9sICp2 YXIsIGNvbnN0IHN0cnVjdCBibG9jayAqYikKICAgIGlmICgoVkFMVUVfTFZBTCAodmFsKSA9PSBs dmFsX21lbW9yeSAmJiB2YWx1ZV9sYXp5ICh2YWwpKQogICAgICAgIHx8IFRZUEVfQ09ERSAodHlw ZSkgPT0gVFlQRV9DT0RFX0ZVTkMpCiAgICAgIHsKQEAgLTgxOTMsNyArODA1OCw3IEBAIGluZGV4 IDkzYzA5ZDguLmFlZjA5OTEgMTAwNjQ0CiAgCiAgICAgICAgcmV0dXJuIHZhbHVlX2Zyb21fcG9p bnRlciAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFkZHIpOwogICAgICB9Ci1AQCAtMTYz Niw2ICsxNzE5LDcgQEAgc3RydWN0IHZhbHVlICoKK0BAIC0xNDczLDYgKzE1NDQsNyBAQCBzdHJ1 Y3QgdmFsdWUgKgogIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICphcmcxKQogIHsK ICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkp OwpAQCAtODIwMSw3ICs4MDY2LDcgQEAgaW5kZXggOTNjMDlkOC4uYWVmMDk5MSAxMDA2NDQKICAK ICAgIC8qIElmIHRoZSB1c2VyIHRyaWVzIHRvIGRvIHNvbWV0aGluZyByZXF1aXJpbmcgYSBwb2lu dGVyIHdpdGggYW4KICAgICAgIGFycmF5IHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBwdXNoZWQgdG8g dGhlIHRhcmdldCwgdGhlbiB0aGlzIHdvdWxkCi1AQCAtMTY0NSw4ICsxNzI5LDEyIEBAIHZhbHVl X2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICphcmcxKQorQEAgLTE0ODIsOCArMTU1NCwxMiBA QCB2YWx1ZV9jb2VyY2VfYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJnMSkKICAgIGlmIChWQUxVRV9M VkFMIChhcmcxKSAhPSBsdmFsX21lbW9yeSkKICAgICAgZXJyb3IgKF8oIkF0dGVtcHQgdG8gdGFr ZSBhZGRyZXNzIG9mIHZhbHVlIG5vdCBsb2NhdGVkIGluIG1lbW9yeS4iKSk7CiAgCkBAIC04MjE1 LDcgKzgwODAsNyBAQCBpbmRleCA5M2MwOWQ4Li5hZWYwOTkxIDEwMDY0NAogIH0KICAKICAvKiBH aXZlbiBhIHZhbHVlIHdoaWNoIGlzIGEgZnVuY3Rpb24sIHJldHVybiBhIHZhbHVlIHdoaWNoIGlz IGEgcG9pbnRlcgotQEAgLTM3MjEsNiArMzgwOSw4IEBAIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFs dWUgKmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgpCitAQCAtMzU1OCw2ICszNjM0LDgg QEAgdmFsdWVfc2xpY2UgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxl bmd0aCkKICAJCQkJCVRZUEVfVEFSR0VUX1RZUEUgKHJhbmdlX3R5cGUpLAogIAkJCQkJbG93Ym91 bmQsIAogIAkJCQkJbG93Ym91bmQgKyBsZW5ndGggLSAxKTsKQEAgLTgyMjUsNyArODA5MCw3IEBA IGluZGV4IDkzYzA5ZDguLmFlZjA5OTEgMTAwNjQ0CiAgICAgIHsKICAgICAgICBzdHJ1Y3QgdHlw ZSAqZWxlbWVudF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7CiBkaWZmIC0t Z2l0IGEvZ2RiL3ZhbHByaW50LmMgYi9nZGIvdmFscHJpbnQuYwotaW5kZXggMThjZmY0OS4uODlj YjAxYSAxMDA2NDQKK2luZGV4IDc1M2FlMzQuLjZkODdkOWMgMTAwNjQ0CiAtLS0gYS9nZGIvdmFs cHJpbnQuYwogKysrIGIvZ2RiL3ZhbHByaW50LmMKIEBAIC0zNyw2ICszNyw3IEBACkBAIC04MjM2 LDcgKzgxMDEsNyBAQCBpbmRleCAxOGNmZjQ5Li44OWNiMDFhIDEwMDY0NAogIAogICNpbmNsdWRl IDxlcnJuby5oPgogIAotQEAgLTI4Nyw3ICsyODgsNiBAQCBzY2FsYXJfdHlwZV9wIChzdHJ1Y3Qg dHlwZSAqdHlwZSkKK0BAIC0yOTAsNyArMjkxLDYgQEAgc2NhbGFyX3R5cGVfcCAoc3RydWN0IHR5 cGUgKnR5cGUpCiAgICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoKICAgICAgY2FzZSBUWVBFX0NP REVfVU5JT046CiAgICAgIGNhc2UgVFlQRV9DT0RFX1NFVDoKQEAgLTgyNDQsNyArODEwOSw3IEBA IGluZGV4IDE4Y2ZmNDkuLjg5Y2IwMWEgMTAwNjQ0CiAgICAgICAgcmV0dXJuIDA7CiAgICAgIGRl ZmF1bHQ6CiAgICAgICAgcmV0dXJuIDE7Ci1AQCAtMTYwNCw2ICsxNjA0LDcgQEAgdmFsX3ByaW50 X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC0xNjA3LDYgKzE2MDcsNyBA QCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBlLAogIHsKICAgIHVu c2lnbmVkIGludCB0aGluZ3NfcHJpbnRlZCA9IDA7CiAgICB1bnNpZ25lZCBsZW47CkBAIC04MjUy LDcgKzgxMTcsNyBAQCBpbmRleCAxOGNmZjQ5Li44OWNiMDFhIDEwMDY0NAogICAgc3RydWN0IHR5 cGUgKmVsdHR5cGUsICppbmRleF90eXBlOwogICAgdW5zaWduZWQgZWx0bGVuOwogICAgLyogUG9z aXRpb24gb2YgdGhlIGFycmF5IGVsZW1lbnQgd2UgYXJlIGV4YW1pbmluZyB0byBzZWUKLUBAIC0x NjEyLDkgKzE2MTMsMzMgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAq dHlwZSwKK0BAIC0xNjE1LDkgKzE2MTYsMzMgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChz dHJ1Y3QgdHlwZSAqdHlwZSwKICAgIC8qIE51bWJlciBvZiByZXBldGl0aW9ucyB3ZSBoYXZlIGRl dGVjdGVkIHNvIGZhci4gICovCiAgICB1bnNpZ25lZCBpbnQgcmVwczsKICAgIExPTkdFU1QgbG93 X2JvdW5kLCBoaWdoX2JvdW5kOwpAQCAtODI4OCw3ICs4MTUzLDcgQEAgaW5kZXggMThjZmY0OS4u ODljYjAxYSAxMDA2NDQKICAgIGluZGV4X3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUpOwog IAogICAgaWYgKGdldF9hcnJheV9ib3VuZHMgKHR5cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5k KSkKLUBAIC0xNzAxLDYgKzE3MjYsOCBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVj dCB0eXBlICp0eXBlLAorQEAgLTE3MDQsNiArMTcyOSw4IEBAIHZhbF9wcmludF9hcnJheV9lbGVt ZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsCiAgICAgIHsKICAgICAgICBmcHJpbnRmX2ZpbHRlcmVk IChzdHJlYW0sICIuLi4iKTsKICAgICAgfQpAQCAtODI5OCwxOCArODE2MywxOCBAQCBpbmRleCAx OGNmZjQ5Li44OWNiMDFhIDEwMDY0NAogIAogIC8qIFJlYWQgTEVOIGJ5dGVzIG9mIHRhcmdldCBt ZW1vcnkgYXQgYWRkcmVzcyBNRU1BRERSLCBwbGFjaW5nIHRoZQogZGlmZiAtLWdpdCBhL2dkYi92 YWx1ZS5jIGIvZ2RiL3ZhbHVlLmMKLWluZGV4IDRiNzBlY2UuLjc0NDljMmEgMTAwNjQ0CitpbmRl eCA4ZDYzNWM3Li5jY2U4N2M2IDEwMDY0NAogLS0tIGEvZ2RiL3ZhbHVlLmMKICsrKyBiL2dkYi92 YWx1ZS5jCi1AQCAtNDIsNiArNDIsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgorQEAgLTQzLDYg KzQzLDcgQEAKICAjaW5jbHVkZSAidHJhY2Vwb2ludC5oIgogICNpbmNsdWRlICJjcC1hYmkuaCIK KyAjaW5jbHVkZSAidXNlci1yZWdzLmgiCiArI2luY2x1ZGUgIm9ic2VydmVyLmgiCiAgCiAgLyog UHJvdG90eXBlcyBmb3IgZXhwb3J0ZWQgZnVuY3Rpb25zLiAgKi8KICAKLUBAIC0xNDM1LDEyICsx NDM2LDE1IEBAIHZvaWQKK0BAIC0xNDQ4LDEyICsxNDQ5LDE1IEBAIHZvaWQKICBzZXRfdmFsdWVf Y29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBvbmVudCwKICAJCQkgICAgICBj b25zdCBzdHJ1Y3QgdmFsdWUgKndob2xlKQogIHsKQEAgLTgzMjUsNyArODE5MCw3IEBAIGluZGV4 IDRiNzBlY2UuLjc0NDljMmEgMTAwNjQ0CiAgICBpZiAod2hvbGUtPmx2YWwgPT0gbHZhbF9jb21w dXRlZCkKICAgICAgewogICAgICAgIGNvbnN0IHN0cnVjdCBsdmFsX2Z1bmNzICpmdW5jcyA9IHdo b2xlLT5sb2NhdGlvbi5jb21wdXRlZC5mdW5jczsKLUBAIC0xNDQ4LDYgKzE0NTIsMTIgQEAgc2V0 X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbHVlICpjb21wb25lbnQsCitAQCAt MTQ2MSw2ICsxNDY1LDEyIEBAIHNldF92YWx1ZV9jb21wb25lbnRfbG9jYXRpb24gKHN0cnVjdCB2 YWx1ZSAqY29tcG9uZW50LAogICAgICAgIGlmIChmdW5jcy0+Y29weV9jbG9zdXJlKQogICAgICAg ICAgY29tcG9uZW50LT5sb2NhdGlvbi5jb21wdXRlZC5jbG9zdXJlID0gZnVuY3MtPmNvcHlfY2xv c3VyZSAod2hvbGUpOwogICAgICB9CkBAIC04MzM4LDcgKzgyMDMsNyBAQCBpbmRleCA0YjcwZWNl Li43NDQ5YzJhIDEwMDY0NAogIH0KICAKICAMCi1AQCAtMTU4MSw2ICsxNTkxLDMxIEBAIHNob3df dmFsdWVzIChjaGFyICpudW1fZXhwLCBpbnQgZnJvbV90dHkpCitAQCAtMTU5NCw2ICsxNjA0LDMx IEBAIHNob3dfdmFsdWVzIChjaGFyICpudW1fZXhwLCBpbnQgZnJvbV90dHkpCiAgICAgICAgbnVt X2V4cFsxXSA9ICdcMCc7CiAgICAgIH0KICB9CkBAIC04MzcwLDcgKzgyMzUsNyBAQCBpbmRleCA0 YjcwZWNlLi43NDQ5YzJhIDEwMDY0NAogIAwKICAvKiBJbnRlcm5hbCB2YXJpYWJsZXMuICBUaGVz ZSBhcmUgdmFyaWFibGVzIHdpdGhpbiB0aGUgZGVidWdnZXIKICAgICB0aGF0IGhvbGQgdmFsdWVz IGFzc2lnbmVkIGJ5IGRlYnVnZ2VyIGNvbW1hbmRzLgotQEAgLTIxMTYsNiArMjE1MSwzOCBAQCBj YWxsX2ludGVybmFsX2Z1bmN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC0yMTI5 LDYgKzIxNjQsMzggQEAgY2FsbF9pbnRlcm5hbF9mdW5jdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsCiAgICByZXR1cm4gKCppZm4tPmhhbmRsZXIpIChnZGJhcmNoLCBsYW5ndWFnZSwgaWZu LT5jb29raWUsIGFyZ2MsIGFyZ3YpOwogIH0KICAKQEAgLTg0MDksNyArODI3NCw3IEBAIGluZGV4 IDRiNzBlY2UuLjc0NDljMmEgMTAwNjQ0CiAgLyogVGhlICdmdW5jdGlvbicgY29tbWFuZC4gIFRo aXMgZG9lcyBub3RoaW5nIC0tIGl0IGlzIGp1c3QgYQogICAgIHBsYWNlaG9sZGVyIHRvIGxldCAi aGVscCBmdW5jdGlvbiBOQU1FIiB3b3JrLiAgVGhpcyBpcyBhbHNvIHVzZWQgYXMKICAgICB0aGUg aW1wbGVtZW50YXRpb24gb2YgdGhlIHN1Yi1jb21tYW5kIHRoYXQgaXMgY3JlYXRlZCB3aGVuCi1A QCAtMjE2MywxMSArMjIzMCwxMCBAQCBwcmVzZXJ2ZV9vbmVfdmFsdWUgKHN0cnVjdCB2YWx1ZSAq dmFsdWUsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTIxNzYsMTEgKzIyNDMsMTAgQEAg cHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKICAJCSAgICBodGFiX3QgY29waWVkX3R5cGVzKQogIHsKICAgIGlmIChUWVBFX09C SkZJTEUgKHZhbHVlLT50eXBlKSA9PSBvYmpmaWxlKQpAQCAtODQyMyw3ICs4Mjg4LDcgQEAgaW5k ZXggNGI3MGVjZS4uNzQ0OWMyYSAxMDA2NDQKICAJCQkJCQkgY29waWVkX3R5cGVzKTsKICB9CiAg Ci1AQCAtMjE4Miw3ICsyMjQ4LDcgQEAgcHJlc2VydmVfb25lX2ludGVybmFsdmFyIChzdHJ1Y3Qg aW50ZXJuYWx2YXIgKnZhciwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMjE5NSw3ICsy MjYxLDcgQEAgcHJlc2VydmVfb25lX2ludGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZh ciwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgICAgIGNhc2UgSU5URVJOQUxWQVJfSU5URUdF UjoKICAgICAgICBpZiAodmFyLT51LmludGVnZXIudHlwZSAmJiBUWVBFX09CSkZJTEUgKHZhci0+ dS5pbnRlZ2VyLnR5cGUpID09IG9iamZpbGUpCiAgCXZhci0+dS5pbnRlZ2VyLnR5cGUKQEAgLTg0 MzIsNyArODI5Nyw3IEBAIGluZGV4IDRiNzBlY2UuLjc0NDljMmEgMTAwNjQ0CiAgICAgICAgYnJl YWs7CiAgCiAgICAgIGNhc2UgSU5URVJOQUxWQVJfVkFMVUU6Ci1AQCAtMzI4MCwxMCArMzM0Niwy NyBAQCByZWFkanVzdF9pbmRpcmVjdF92YWx1ZV90eXBlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBz dHJ1Y3QgdHlwZSAqZW5jX3R5cGUsCitAQCAtMzMwOCwxMCArMzM3NCwyNyBAQCByZWFkanVzdF9p bmRpcmVjdF92YWx1ZV90eXBlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3QgdHlwZSAqZW5j X3R5cGUsCiAgc3RydWN0IHZhbHVlICoKICBjb2VyY2VfcmVmIChzdHJ1Y3QgdmFsdWUgKmFyZykK ICB7CkBAIC04NDYxLDcgKzgzMjYsNDggQEAgaW5kZXggNGI3MGVjZS4uNzQ0OWMyYSAxMDA2NDQK ICAgIHJldHZhbCA9IGNvZXJjZV9yZWZfaWZfY29tcHV0ZWQgKGFyZyk7CiAgICBpZiAocmV0dmFs KQogICAgICByZXR1cm4gcmV0dmFsOwotQEAgLTM0MDUsNCArMzQ4OCwxMCBAQCBWQVJJQUJMRSBp cyBhbHJlYWR5IGluaXRpYWxpemVkLiIpKTsKK0BAIC0zNDE5LDcgKzM1MDIsOCBAQCBpbnQKKyB2 YWx1ZV9mZXRjaF9sYXp5IChzdHJ1Y3QgdmFsdWUgKnZhbCkKKyB7CisgICBnZGJfYXNzZXJ0ICh2 YWx1ZV9sYXp5ICh2YWwpKTsKKy0gIGFsbG9jYXRlX3ZhbHVlX2NvbnRlbnRzICh2YWwpOworKyAg aWYgKFZBTFVFX0xWQUwgKHZhbCkgIT0gbHZhbF9tZW1vcnkpCisrICAgIGFsbG9jYXRlX3ZhbHVl X2NvbnRlbnRzICh2YWwpOworICAgaWYgKHZhbHVlX2JpdHNpemUgKHZhbCkpCisgICAgIHsKKyAg ICAgICAvKiBUbyByZWFkIGEgbGF6eSBiaXRmaWVsZCwgcmVhZCB0aGUgZW50aXJlIGVuY2xvc2lu ZyB2YWx1ZS4gIFRoaXMKK0BAIC0zNDU0LDEzICszNTM4LDI0IEBAIHZhbHVlX2ZldGNoX2xhenkg KHN0cnVjdCB2YWx1ZSAqdmFsKQorICAgICB9CisgICBlbHNlIGlmIChWQUxVRV9MVkFMICh2YWwp ID09IGx2YWxfbWVtb3J5KQorICAgICB7CistICAgICAgQ09SRV9BRERSIGFkZHIgPSB2YWx1ZV9h ZGRyZXNzICh2YWwpOworLSAgICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAo dmFsdWVfZW5jbG9zaW5nX3R5cGUgKHZhbCkpOworKyAgICAgIENPUkVfQUREUiBhZGRyID0gdmFs dWVfcmF3X2FkZHJlc3MgKHZhbCk7CisrCisrICAgICAgaWYgKG9iamVjdF9hZGRyZXNzX2dldF9k YXRhICh2YWx1ZV90eXBlICh2YWwpLCAmYWRkcikpCisrCXsKKysJICBzdHJ1Y3QgdHlwZSAqdHlw ZSA9IHZhbHVlX2VuY2xvc2luZ190eXBlICh2YWwpOworKwkgIGludCBsZW5ndGggPSBUWVBFX0xF TkdUSCAoY2hlY2tfdHlwZWRlZiAodHlwZSkpOworIAorLSAgICAgIGlmIChUWVBFX0xFTkdUSCAo dHlwZSkpCistCXJlYWRfdmFsdWVfbWVtb3J5ICh2YWwsIDAsIHZhbHVlX3N0YWNrICh2YWwpLAor LQkJCSAgIGFkZHIsIHZhbHVlX2NvbnRlbnRzX2FsbF9yYXcgKHZhbCksCistCQkJICAgVFlQRV9M RU5HVEggKHR5cGUpKTsKKysJICBpZiAobGVuZ3RoKQorKwkgICAgeworKwkgICAgICAvKiBEZWxh eSBpdCBhZnRlciBvYmplY3RfYWRkcmVzc19nZXRfZGF0YSBhYm92ZS4gICovCisrCSAgICAgIGFs bG9jYXRlX3ZhbHVlX2NvbnRlbnRzICh2YWwpOworKwkgICAgICBhZGRyICs9IHZhbHVlX29mZnNl dCAodmFsKTsKKysJICAgICAgcmVhZF92YWx1ZV9tZW1vcnkgKHZhbCwgMCwgdmFsdWVfc3RhY2sg KHZhbCksCisrCQkJCSBhZGRyLCB2YWx1ZV9jb250ZW50c19hbGxfcmF3ICh2YWwpLCBsZW5ndGgp OworKwkgICAgfQorKwl9CisrICAgICAgLyogSnVzdCB0byBiZSBzdXJlIGl0IGhhcyBiZWVuIGNh bGxlZC4gICovCisrICAgICAgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKHZhbCk7CisgICAgIH0K KyAgIGVsc2UgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9yZWdpc3RlcikKKyAgICAgewor QEAgLTM1OTksNCArMzY5NCwxMCBAQCBWQVJJQUJMRSBpcyBhbHJlYWR5IGluaXRpYWxpemVkLiIp KTsKICAgIGFkZF9wcmVmaXhfY21kICgiZnVuY3Rpb24iLCBub19jbGFzcywgZnVuY3Rpb25fY29t bWFuZCwgXygiXAogIFBsYWNlaG9sZGVyIGNvbW1hbmQgZm9yIHNob3dpbmcgaGVscCBvbiBjb252 ZW5pZW5jZSBmdW5jdGlvbnMuIiksCiAgCQkgICZmdW5jdGlvbmxpc3QsICJmdW5jdGlvbiAiLCAw LCAmY21kbGlzdCk7CkBAIC04NDczLDEwICs4Mzc5LDEwIEBAIGluZGV4IDRiNzBlY2UuLjc0NDlj MmEgMTAwNjQ0CiArI2VuZGlmCiAgfQogZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5oIGIvZ2RiL3Zh bHVlLmgKLWluZGV4IGMxMGMzZWMuLjhkMDczNDggMTAwNjQ0CitpbmRleCA1ZTAwYzg5Li5kOWVm ZTNlIDEwMDY0NAogLS0tIGEvZ2RiL3ZhbHVlLmgKICsrKyBiL2dkYi92YWx1ZS5oCi1AQCAtNTM3 LDYgKzUzNywxMCBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9mcm9tX2RlY2Zsb2F0IChz dHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC01NDgsNiArNTQ4LDEwIEBAIGV4dGVybiBzdHJ1Y3QgdmFs dWUgKnZhbHVlX2Zyb21fZGVjZmxvYXQgKHN0cnVjdCB0eXBlICp0eXBlLAogIAkJCQkJICBjb25z dCBnZGJfYnl0ZSAqZGVjYnl0ZXMpOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Zyb21f aGlzdG9yeV9yZWYgKGNoYXIgKiwgY2hhciAqKik7CiAgCgpkaWZmIC0tZ2l0IGEvZ2RiLWF0dGFj aC1mYWlsLXJlYXNvbnMtNW9mNS5wYXRjaCBiL2dkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUu cGF0Y2gKaW5kZXggYTk4ZTI1Ni4uNzNlM2Y5NyAxMDA2NDQKLS0tIGEvZ2RiLWF0dGFjaC1mYWls LXJlYXNvbnMtNW9mNS5wYXRjaAorKysgYi9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBh dGNoCkBAIC0zNywxMCArMzcsMTAgQEAgZ2RiL2dkYnNlcnZlci8KIAkobGludXhfY3JlYXRlX2lu ZmVyaW9yLCBsaW51eF90cmFjZWZvcmtfY2hpbGQpOiBDYWxsIGl0IGluc3RlYWQgb2YKIAlkaXJl Y3QgcHRyYWNlLgogCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvY29tbW9uL2xpbnV4 LXB0cmFjZS5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2NvbW1vbi9saW51 eC1wdHJhY2UuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIv Y29tbW9uL2xpbnV4LXB0cmFjZS5jCTIwMTMtMDEtMDggMjA6Mzg6NTEuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5jCTIwMTMt MDItMTUgMjI6Mzg6MDUuNzgyNDU2Mjc5ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMub3JpZy9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5jCTIwMTMtMDgtMDIgMTY6MzM6NTIuNzY3 ODcyNDEyICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2NvbW1vbi9saW51 eC1wdHJhY2UuYwkyMDEzLTA4LTAyIDE2OjM0OjE2LjEyMjkxMDkzNCArMDIwMAogQEAgLTI5LDYg KzI5LDEwIEBACiAgI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKICAjaW5jbHVkZSAiZ2RiX3dhaXQu aCIKQEAgLTYxLDcgKzYxLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2NvbW1v bi9saW51eC1wdHJhY2UuYwogIH0KICAKICAjaWYgZGVmaW5lZCBfX2kzODZfXyB8fCBkZWZpbmVk IF9feDg2XzY0X18KLUBAIC0yNDMsMyArMjQ5LDE5IEBAIGxpbnV4X3B0cmFjZV9pbml0X3dhcm5p bmdzICh2b2lkKQorQEAgLTIzNiwzICsyNDIsMTkgQEAgbGludXhfcHRyYWNlX2luaXRfd2Fybmlu Z3MgKHZvaWQpCiAgCiAgICBsaW51eF9wdHJhY2VfdGVzdF9yZXRfdG9fbnggKCk7CiAgfQpAQCAt ODEsMTAgKzgxLDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9jb21tb24vbGlu dXgtcHRyYWNlLmMKICsJCQkgIihnZGIpIHNoZWxsIHN1ZG8gc2V0c2Vib29sIGRlbnlfcHRyYWNl PTAiKSk7CiArI2VuZGlmIC8qIEhBVkVfTElCU0VMSU5VWCAqLwogK30KLUluZGV4OiBnZGItNy41 LjUwLjIwMTMwMjE1L2dkYi9jb21tb24vbGludXgtcHRyYWNlLmgKK0luZGV4OiBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5oCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9jb21tb24vbGludXgtcHRyYWNlLmgJMjAxMy0w MS0wMSAwNzozMjo1NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9jb21tb24vbGludXgtcHRyYWNlLmgJMjAxMy0wMi0xNSAyMjozODowNS43ODI0NTYyNzkgKzAx MDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9jb21tb24vbGludXgtcHRy YWNlLmgJMjAxMy0wOC0wMiAxNjozMzo1Mi43Njg4NzI0MTQgKzAyMDAKKysrKyBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5oCTIwMTMtMDgtMDIgMTY6MzQ6 MTYuMTIyOTEwOTM0ICswMjAwCiBAQCAtNjksNSArNjksNiBAQCBzdHJ1Y3QgYnVmZmVyOwogIAog IGV4dGVybiB2b2lkIGxpbnV4X3B0cmFjZV9hdHRhY2hfd2FybmluZ3MgKHBpZF90IHBpZCwgc3Ry dWN0IGJ1ZmZlciAqYnVmZmVyKTsKQEAgLTkyLDEzICs5MiwxMyBAQCBJbmRleDogZ2RiLTcuNS41 MC4yMDEzMDIxNS9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5oCiArZXh0ZXJuIHZvaWQgbGludXhf cHRyYWNlX2NyZWF0ZV93YXJuaW5ncyAoc3RydWN0IGJ1ZmZlciAqYnVmZmVyKTsKICAKICAjZW5k aWYgLyogQ09NTU9OX0xJTlVYX1BUUkFDRV9IICovCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvY29uZmlndXJlLmFjCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2Nv bmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIv Y29uZmlndXJlLmFjCTIwMTMtMDItMTUgMjI6Mzc6NTcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNS41MC4yMDEzMDIxNS9nZGIvY29uZmlndXJlLmFjCTIwMTMtMDItMTUgMjI6Mzg6MDUuNzgz NDU2MjgxICswMTAwCi1AQCAtMjA2OCw2ICsyMDY4LDEwIEBAIHRoZW4KLSAJICAgICAgW0RlZmlu ZSBpZiB5b3Ugc3VwcG9ydCB0aGUgcGVyc29uYWxpdHkgc3lzY2FsbC5dKQotIGZpCistLS0gZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTMtMDgtMDIgMTY6 MzQ6MTYuMTIzOTEwOTM2ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2Nv bmZpZ3VyZS5hYwkyMDEzLTA4LTAyIDE2OjM0OjQ2LjUxOTk2MDA2MyArMDIwMAorQEAgLTIwNzEs NiArMjA3MSwxMCBAQCBjYXNlICRob3N0X29zIGluCisgZXNhYworIEFDX0RFRklORV9VTlFVT1RF RChHREJJTklULCIkZ2RiaW5pdCIsW1RoZSAuZ2RiaW5pdCBmaWxlbmFtZS5dKQogIAogK2RubCBD aGVjayBzZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUgYXZhaWxhYmlsaXR5LgogK0FDX0NIRUNL X0hFQURFUlMoc2VsaW51eC9zZWxpbnV4LmgpCkBAIC0xMDcsMTEgKzEwNywxMSBAQCBJbmRleDog Z2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvY29uZmlndXJlLmFjCiAgZG5sIEhhbmRsZSBvcHRpb25h bCBmZWF0dXJlcyB0aGF0IGNhbiBiZSBlbmFibGVkLgogIAogICMgU3VwcG9ydCBmb3IgLS13aXRo LXN5c3Jvb3QgaXMgYSBjb3B5IG9mIEdEQl9BQ19XSVRIX0RJUiwKLUluZGV4OiBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjCitJbmRleDogZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuYWMJMjAxMy0w MS0wMSAwNzozMzowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjCTIwMTMtMDItMTUgMjI6Mzg6MDUuNzgzNDU2MjgxICsw MTAwCi1AQCAtNDUxLDYgKzQ1MSwxMCBAQCBpZiAkd2FudF9pcGEgOyB0aGVuCistLS0gZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5hYwkyMDEzLTA4 LTAyIDE2OjM0OjE2LjEyNDkxMDkzOCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz L2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjCTIwMTMtMDgtMDIgMTY6MzU6MDYuNjM0OTkxODky ICswMjAwCitAQCAtNDcxLDYgKzQ3MSwxMCBAQCBpZiAkd2FudF9pcGEgOyB0aGVuCiAgICAgZmkK ICBmaQogIApAQCAtMTIxLDEyICsxMjEsMTIgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL2dkYnNlcnZlci9jb25maWd1cmUuYWMKICsKICBBQ19TVUJTVChHREJTRVJWRVJfREVQRklM RVMpCiAgQUNfU1VCU1QoR0RCU0VSVkVSX0xJQlMpCi0gQUNfU1VCU1QoVVNFX1RIUkVBRF9EQikK LUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKKyBB Q19TVUJTVChzcnZfeG1sYnVpbHRpbikKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9n ZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEz MDIxNS5vcmlnL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMJMjAxMy0wMi0wNCAxODo0NzowMC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nZGJzZXJ2ZXIvbGlu dXgtbG93LmMJMjAxMy0wMi0xNSAyMjozOTo1NC4yNTY1OTEwNjkgKzAxMDAKLUBAIC02MDIsNiAr NjAyLDI5IEBAIGFkZF9sd3AgKHB0aWRfdCBwdGlkKQorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzLm9yaWcvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEzLTA4LTAyIDE2OjMzOjUyLjc3 Mjg3MjQyMSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9nZGJzZXJ2ZXIv bGludXgtbG93LmMJMjAxMy0wOC0wMiAxNjozNDoxNi4xMjY5MTA5NDEgKzAyMDAKK0BAIC02MjIs NiArNjIyLDI5IEBAIGFkZF9sd3AgKHB0aWRfdCBwdGlkKQogICAgcmV0dXJuIGx3cDsKICB9CiAg CkBAIC0xNTYsNyArMTU2LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2dkYnNl cnZlci9saW51eC1sb3cuYwogIC8qIFN0YXJ0IGFuIGluZmVyaW9yIHByb2Nlc3MgYW5kIHJldHVy bnMgaXRzIHBpZC4KICAgICBBTExBUkdTIGlzIGEgdmVjdG9yIG9mIHByb2dyYW0tbmFtZSBhbmQg YXJncy4gKi8KICAKLUBAIC02NDIsNyArNjY1LDcgQEAgbGludXhfY3JlYXRlX2luZmVyaW9yIChj aGFyICpwcm9ncmFtLCBjaAorQEAgLTY2Miw3ICs2ODUsNyBAQCBsaW51eF9jcmVhdGVfaW5mZXJp b3IgKGNoYXIgKnByb2dyYW0sIGNoCiAgCiAgICBpZiAocGlkID09IDApCiAgICAgIHsKQEAgLTE2 NSw3ICsxNjUsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZ2Ric2VydmVyL2xp bnV4LWxvdy5jCiAgCiAgI2lmbmRlZiBfX0FORFJPSURfXyAvKiBCaW9uaWMgZG9lc24ndCB1c2Ug U0lHUlRNSU4gdGhlIHdheSBnbGliYyBkb2VzLiAgKi8KICAgICAgICBzaWduYWwgKF9fU0lHUlRN SU4gKyAxLCBTSUdfREZMKTsKLUBAIC00NTg3LDcgKzQ2MTAsNyBAQCBsaW51eF90cmFjZWZvcmtf Z3JhbmRjaGlsZCAodm9pZCAqYXJnKQorQEAgLTQ2ODUsNyArNDcwOCw3IEBAIGxpbnV4X3RyYWNl Zm9ya19ncmFuZGNoaWxkICh2b2lkICphcmcpCiAgc3RhdGljIGludAogIGxpbnV4X3RyYWNlZm9y a19jaGlsZCAodm9pZCAqYXJnKQogIHsKQEAgLTE3NCwxMCArMTc0LDEwIEBAIEluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKICAgIGtpbGwgKGdldHBp ZCAoKSwgU0lHU1RPUCk7CiAgCiAgI2lmICEoZGVmaW5lZChfX1VDTElCQ19fKSAmJiBkZWZpbmVk KEhBU19OT01NVSkpCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvaW5mLXB0cmFjZS5j CitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2luZi1wdHJhY2UuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvaW5mLXB0cmFjZS5jCTIwMTMt MDEtMDEgMDc6MzI6NDUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9n ZGIvaW5mLXB0cmFjZS5jCTIwMTMtMDItMTUgMjI6Mzg6MDUuNzg2NDU2Mjg5ICswMTAwCistLS0g Z2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvaW5mLXB0cmFjZS5jCTIwMTMtMDgtMDIg MTY6MzM6NTIuNzcyODcyNDIxICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2Ri L2luZi1wdHJhY2UuYwkyMDEzLTA4LTAyIDE2OjM0OjE2LjEyNjkxMDk0MSArMDIwMAogQEAgLTEw NCw3ICsxMDQsMTUgQEAgc3RhdGljIHZvaWQKICBpbmZfcHRyYWNlX21lICh2b2lkKQogIHsKQEAg LTE5NCwxMSArMTk0LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9pbmYtcHRy YWNlLmMKICB9CiAgCiAgLyogU3RhcnQgYSBuZXcgaW5mZXJpb3IgVW5peCBjaGlsZCBwcm9jZXNz LiAgRVhFQ19GSUxFIGlzIHRoZSBmaWxlIHRvCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9n ZGIvbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbGludXgt bmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2xpbnV4 LW5hdC5jCTIwMTMtMDItMTUgMjI6MzQ6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41 MC4yMDEzMDIxNS9nZGIvbGludXgtbmF0LmMJMjAxMy0wMi0xNSAyMjozODowNS43ODc0NTYyOTEg KzAxMDAKLUBAIC0xNTU3LDYgKzE1NTcsNyBAQCBsaW51eF9uYXRfY3JlYXRlX2luZmVyaW9yIChz dHJ1Y3QgdGFyZ2V0CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvbGludXgt bmF0LmMJMjAxMy0wOC0wMiAxNjozMzo1Mi43NzQ4NzI0MjQgKzAyMDAKKysrKyBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIvbGludXgtbmF0LmMJMjAxMy0wOC0wMiAxNjozNDoxNi4xMjg5MTA5 NDQgKzAyMDAKK0BAIC0xNTU0LDYgKzE1NTQsNyBAQCBsaW51eF9uYXRfY3JlYXRlX2luZmVyaW9y IChzdHJ1Y3QgdGFyZ2V0CiAgI2lmZGVmIEhBVkVfUEVSU09OQUxJVFkKICAgIGludCBwZXJzb25h bGl0eV9vcmlnID0gMCwgcGVyc29uYWxpdHlfc2V0ID0gMDsKICAjZW5kaWYgLyogSEFWRV9QRVJT T05BTElUWSAqLwpAQCAtMjA2LDcgKzIwNiw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1 L2dkYi9saW51eC1uYXQuYwogIAogICAgLyogVGhlIGZvcmtfY2hpbGQgbWVjaGFuaXNtIGlzIHN5 bmNocm9ub3VzIGFuZCBjYWxscyB0YXJnZXRfd2FpdCwgc28KICAgICAgIHdlIGhhdmUgdG8gbWFz ayB0aGUgYXN5bmMgbW9kZS4gICovCi1AQCAtMTU4MSw3ICsxNTgyLDEwIEBAIGxpbnV4X25hdF9j cmVhdGVfaW5mZXJpb3IgKHN0cnVjdCB0YXJnZXQKK0BAIC0xNTc4LDcgKzE1NzksMTAgQEAgbGlu dXhfbmF0X2NyZWF0ZV9pbmZlcmlvciAoc3RydWN0IHRhcmdldAogICAgLyogTWFrZSBzdXJlIHdl IHJlcG9ydCBhbGwgc2lnbmFscyBkdXJpbmcgc3RhcnR1cC4gICovCiAgICBsaW51eF9uYXRfcGFz c19zaWduYWxzICgwLCBOVUxMKTsKICAKQEAgLTIxOCw3ICsyMTgsNyBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvbGludXgtbmF0LmMKICAKICAjaWZkZWYgSEFWRV9QRVJTT05BTElU WQogICAgaWYgKHBlcnNvbmFsaXR5X3NldCkKLUBAIC0xNTkzLDYgKzE1OTcsMjQgQEAgbGludXhf bmF0X2NyZWF0ZV9pbmZlcmlvciAoc3RydWN0IHRhcmdldAorQEAgLTE1OTAsNiArMTU5NCwyNCBA QCBsaW51eF9uYXRfY3JlYXRlX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0CiAgCQkgc2FmZV9zdHJl cnJvciAoZXJybm8pKTsKICAgICAgfQogICNlbmRpZiAvKiBIQVZFX1BFUlNPTkFMSVRZICovCkBA IC0yNDMsMyArMjQzLDE5MiBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbGludXgt bmF0LmMKICB9CiAgCiAgc3RhdGljIHZvaWQKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvY29uZmlnLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMu b3JpZy9nZGIvY29uZmlnLmluCTIwMTMtMDgtMDIgMTY6MjU6MjcuMzM5MDk3NTYxICswMjAwCisr KysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2NvbmZpZy5pbgkyMDEzLTA4LTAyIDE2OjM2 OjE2LjI0OTA5OTg0MSArMDIwMAorQEAgLTIyNSw2ICsyMjUsOSBAQAorIC8qIERlZmluZSBpZiBs aWJycG0gbGlicmFyeSBpcyBiZWluZyB1c2VkLiAqLworICN1bmRlZiBIQVZFX0xJQlJQTQorIAor Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VsaW51eCcgbGlicmFyeSAoLWxzZWxp bnV4KS4gKi8KKysjdW5kZWYgSEFWRV9MSUJTRUxJTlVYCisrCisgLyogRGVmaW5lIHRvIDEgaWYg eW91IGhhdmUgdGhlIDxsaWJ1bndpbmQtaWE2NC5oPiBoZWFkZXIgZmlsZS4gKi8KKyAjdW5kZWYg SEFWRV9MSUJVTldJTkRfSUE2NF9ICisgCitAQCAtMzcyLDYgKzM3NSw5IEBACisgLyogRGVmaW5l IHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzYnJrJyBmdW5jdGlvbi4gKi8KKyAjdW5kZWYgSEFWRV9T QlJLCisgCisrLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzZWxpbnV4L3NlbGludXgu aD4gaGVhZGVyIGZpbGUuICovCisrI3VuZGVmIEhBVkVfU0VMSU5VWF9TRUxJTlVYX0gKKysKKyAv KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldGxvY2FsZScgZnVuY3Rpb24uICovCisg I3VuZGVmIEhBVkVfU0VUTE9DQUxFCisgCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL2NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9y aWcvZ2RiL2NvbmZpZ3VyZQkyMDEzLTA4LTAyIDE2OjI1OjI3LjM0MzA5NzU2NyArMDIwMAorKysr IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9jb25maWd1cmUJMjAxMy0wOC0wMiAxNjozNjox NC42NjUwOTc0MzQgKzAyMDAKK0BAIC0xMjg1MSw2ICsxMjg1MSw2NCBAQCBjYXQgPj5jb25mZGVm cy5oIDw8X0FDRU9GCisgX0FDRU9GCisgCisgCisrZm9yIGFjX2hlYWRlciBpbiBzZWxpbnV4L3Nl bGludXguaAorK2RvIDoKKysgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8i ICJzZWxpbnV4L3NlbGludXguaCIgImFjX2N2X2hlYWRlcl9zZWxpbnV4X3NlbGludXhfaCIgIiRh Y19pbmNsdWRlc19kZWZhdWx0IgorK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3NlbGludXhfc2Vs aW51eF9oIiA9IHgiInllczsgdGhlbiA6CisrICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisr I2RlZmluZSBIQVZFX1NFTElOVVhfU0VMSU5VWF9IIDEKKytfQUNFT0YKKysKKytmaQorKworK2Rv bmUKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n IGZvciBzZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUgaW4gLWxzZWxpbnV4IiA+JjUKKyskYXNf ZWNob19uICJjaGVja2luZyBmb3Igc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIGluIC1sc2Vs aW51eC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfbGliX3NlbGludXhfc2VjdXJpdHlf Z2V0X2Jvb2xlYW5fYWN0aXZlK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihj YWNoZWQpICIgPiY2CisrZWxzZQorKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworK0xJ QlM9Ii1sc2VsaW51eCAgJExJQlMiCisrY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl c3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKysvKiBPdmVycmlkZSBhbnkg R0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKysgICBVc2UgY2hhciBi ZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKysgICBidWls dGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAq LworKyNpZmRlZiBfX2NwbHVzcGx1cworK2V4dGVybiAiQyIKKysjZW5kaWYKKytjaGFyIHNlY3Vy aXR5X2dldF9ib29sZWFuX2FjdGl2ZSAoKTsKKytpbnQKKyttYWluICgpCisreworK3JldHVybiBz ZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUgKCk7CisrICA7CisrICByZXR1cm4gMDsKKyt9Cisr X0FDRU9GCisraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorKyAgYWNfY3Zf bGliX3NlbGludXhfc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlPXllcworK2Vsc2UKKysgIGFj X2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZT1ubworK2ZpCisrcm0g LWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisrICAgIGNvbmZ0ZXN0 JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisrTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElC UworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 ICRhY19jdl9saWJfc2VsaW51eF9zZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUiID4mNQorKyRh c19lY2hvICIkYWNfY3ZfbGliX3NlbGludXhfc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIiA+ JjY7IH0KKytpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFu X2FjdGl2ZSIgPSB4IiJ5ZXM7IHRoZW4gOgorKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgor KyNkZWZpbmUgSEFWRV9MSUJTRUxJTlVYIDEKKytfQUNFT0YKKysKKysgIExJQlM9Ii1sc2VsaW51 eCAkTElCUyIKKysKKytmaQorKworKworIAorICMgU3VwcG9ydCBmb3IgLS13aXRoLXN5c3Jvb3Qg aXMgYSBjb3B5IG9mIEdEQl9BQ19XSVRIX0RJUiwKKyAjIGV4Y2VwdCB0aGF0IHRoZSBhcmd1bWVu dCB0byAtLXdpdGgtc3lzcm9vdCBpcyBvcHRpb25hbC4KK0luZGV4OiBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy9nZGIvZ2Ric2VydmVyL2NvbmZpZy5pbgorPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2dkYnNlcnZlci9jb25maWcuaW4JMjAxMy0wNy0zMSAy MTo0MTo1NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIv Z2Ric2VydmVyL2NvbmZpZy5pbgkyMDEzLTA4LTAyIDE2OjM2OjIxLjcxOTEwODE0MSArMDIwMAor QEAgLTc2LDYgKzc2LDEyIEBACisgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBkbCcg bGlicmFyeSAoLWxkbCkuICovCisgI3VuZGVmIEhBVkVfTElCREwKKyAKKysvKiBEZWZpbmUgdG8g MSBpZiB5b3UgaGF2ZSB0aGUgYG1jaGVjaycgbGlicmFyeSAoLWxtY2hlY2spLiAqLworKyN1bmRl ZiBIQVZFX0xJQk1DSEVDSworKworKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2Vs aW51eCcgbGlicmFyeSAoLWxzZWxpbnV4KS4gKi8KKysjdW5kZWYgSEFWRV9MSUJTRUxJTlVYCisr CisgLyogRGVmaW5lIGlmIHRoZSB0YXJnZXQgc3VwcG9ydHMgYnJhbmNoIHRyYWNpbmcuICovCisg I3VuZGVmIEhBVkVfTElOVVhfQlRSQUNFCisgCitAQCAtMTQ2LDYgKzE1Miw5IEBACisgLyogRGVm aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWFkbGluaycgZnVuY3Rpb24uICovCisgI3VuZGVm IEhBVkVfUkVBRExJTksKKyAKKysvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHNlbGlu dXgvc2VsaW51eC5oPiBoZWFkZXIgZmlsZS4gKi8KKysjdW5kZWYgSEFWRV9TRUxJTlVYX1NFTElO VVhfSAorKworIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2d0dHkuaD4gaGVhZGVy IGZpbGUuICovCisgI3VuZGVmIEhBVkVfU0dUVFlfSAorIAorSW5kZXg6IGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZQkyMDEzLTA3LTMx IDIxOjQxOjU0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi9nZGJzZXJ2ZXIvY29uZmlndXJlCTIwMTMtMDgtMDIgMTY6MzY6MjAuMjM3MTA1ODk0ICswMjAw CitAQCAtNjAwMyw2ICs2MDAzLDY0IEBAIGlmICR3YW50X2lwYSA7IHRoZW4KKyAgICBmaQorIGZp CisgCisrZm9yIGFjX2hlYWRlciBpbiBzZWxpbnV4L3NlbGludXguaAorK2RvIDoKKysgIGFjX2Zu X2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJzZWxpbnV4L3NlbGludXguaCIgImFj X2N2X2hlYWRlcl9zZWxpbnV4X3NlbGludXhfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorK2lm IHRlc3QgIngkYWNfY3ZfaGVhZGVyX3NlbGludXhfc2VsaW51eF9oIiA9IHgiInllczsgdGhlbiA6 CisrICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisrI2RlZmluZSBIQVZFX1NFTElOVVhfU0VM SU5VWF9IIDEKKytfQUNFT0YKKysKKytmaQorKworK2RvbmUKKysKKyt7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzZWN1cml0eV9nZXRfYm9vbGVh bl9hY3RpdmUgaW4gLWxzZWxpbnV4IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc2Vj dXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIGluIC1sc2VsaW51eC4uLiAiID4mNjsgfQorK2lmIHRl c3QgIiR7YWNfY3ZfbGliX3NlbGludXhfc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlK3NldH0i ID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAg YWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworK0xJQlM9Ii1sc2VsaW51eCAgJExJQlMiCisr Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KKysKKysvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0 byBhdm9pZCBhbiBlcnJvci4KKysgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0 aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKysgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVu dCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworKyNpZmRlZiBfX2NwbHVzcGx1cwor K2V4dGVybiAiQyIKKysjZW5kaWYKKytjaGFyIHNlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSAo KTsKKytpbnQKKyttYWluICgpCisreworK3JldHVybiBzZWN1cml0eV9nZXRfYm9vbGVhbl9hY3Rp dmUgKCk7CisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlf bGluayAiJExJTkVOTyI7IHRoZW4gOgorKyAgYWNfY3ZfbGliX3NlbGludXhfc2VjdXJpdHlfZ2V0 X2Jvb2xlYW5fYWN0aXZlPXllcworK2Vsc2UKKysgIGFjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5 X2dldF9ib29sZWFuX2FjdGl2ZT1ubworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29u ZnRlc3QuJGFjX29iamV4dCBcCisrICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNf ZXh0CisrTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworK2ZpCisreyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfc2VsaW51eF9zZWN1 cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUiID4mNQorKyRhc19lY2hvICIkYWNfY3ZfbGliX3NlbGlu dXhfc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIiA+JjY7IH0KKytpZiB0ZXN0ICJ4JGFjX2N2 X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSIgPSB4IiJ5ZXM7IHRoZW4g OgorKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZpbmUgSEFWRV9MSUJTRUxJTlVY IDEKKytfQUNFT0YKKysKKysgIExJQlM9Ii1sc2VsaW51eCAkTElCUyIKKysKKytmaQorKworKwor IAorIAorIAoKZGlmZiAtLWdpdCBhL2dkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjVjb25maWd1 cmUucGF0Y2ggYi9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1Y29uZmlndXJlLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmI4MGVlLi4wMDAwMDAwCi0tLSBhL2dkYi1h dHRhY2gtZmFpbC1yZWFzb25zLTVvZjVjb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwxODYgKzAsMCBAQAotSW5kZXg6IGdkYi03LjUuOTEuMjAxMzAzMjMvZ2RiL2NvbmZpZy5pbgot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjUuOTEuMjAxMzAzMjMub3JpZy9nZGIvY29uZmlnLmluCTIw MTMtMDMtMjMgMTk6NDg6MTguMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS45MS4yMDEzMDMy My9nZGIvY29uZmlnLmluCTIwMTMtMDMtMjMgMTk6NTA6NTMuMzAwMDY2Mzc4ICswMTAwCi1AQCAt MjE2LDYgKzIxNiw5IEBACi0gLyogRGVmaW5lIGlmIGxpYnJwbSBsaWJyYXJ5IGlzIGJlaW5nIHVz ZWQuICovCi0gI3VuZGVmIEhBVkVfTElCUlBNCi0gCi0rLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh dmUgdGhlIGBzZWxpbnV4JyBsaWJyYXJ5ICgtbHNlbGludXgpLiAqLwotKyN1bmRlZiBIQVZFX0xJ QlNFTElOVVgKLSsKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpYnVud2luZC1p YTY0Lmg+IGhlYWRlciBmaWxlLiAqLwotICN1bmRlZiBIQVZFX0xJQlVOV0lORF9JQTY0X0gKLSAK LUBAIC0zNjAsNiArMzYzLDkgQEAKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNi cmsnIGZ1bmN0aW9uLiAqLwotICN1bmRlZiBIQVZFX1NCUksKLSAKLSsvKiBEZWZpbmUgdG8gMSBp ZiB5b3UgaGF2ZSB0aGUgPHNlbGludXgvc2VsaW51eC5oPiBoZWFkZXIgZmlsZS4gKi8KLSsjdW5k ZWYgSEFWRV9TRUxJTlVYX1NFTElOVVhfSAotKwotIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZl IHRoZSBgc2V0bG9jYWxlJyBmdW5jdGlvbi4gKi8KLSAjdW5kZWYgSEFWRV9TRVRMT0NBTEUKLSAK LUluZGV4OiBnZGItNy41LjkxLjIwMTMwMzIzL2dkYi9jb25maWd1cmUKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy41LjkxLjIwMTMwMzIzLm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDEzLTAzLTIzIDE5OjQ4 OjE4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuOTEuMjAxMzAzMjMvZ2RiL2NvbmZpZ3Vy ZQkyMDEzLTAzLTIzIDE5OjUwOjUzLjMwMzA2NjM3NiArMDEwMAotQEAgLTEyODE0LDYgKzEyODE0 LDY0IEBAICRhc19lY2hvICIjZGVmaW5lIEhBVkVfUEVSU09OQUxJVFkgMSIgPj4KLSAKLSBmaQot IAotK2ZvciBhY19oZWFkZXIgaW4gc2VsaW51eC9zZWxpbnV4LmgKLStkbyA6Ci0rICBhY19mbl9j X2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAic2VsaW51eC9zZWxpbnV4LmgiICJhY19j dl9oZWFkZXJfc2VsaW51eF9zZWxpbnV4X2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLStpZiB0 ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zZWxpbnV4X3NlbGludXhfaCIgPSB4IiJ5ZXM7IHRoZW4gOgot KyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUgSEFWRV9TRUxJTlVYX1NFTElO VVhfSCAxCi0rX0FDRU9GCi0rCi0rZmkKLSsKLStkb25lCi0rCi0reyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2VjdXJpdHlfZ2V0X2Jvb2xlYW5f YWN0aXZlIGluIC1sc2VsaW51eCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNlY3Vy aXR5X2dldF9ib29sZWFuX2FjdGl2ZSBpbiAtbHNlbGludXguLi4gIiA+JjY7IH0KLStpZiB0ZXN0 ICIke2FjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZStzZXR9IiA9 IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGFj X2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKLStMSUJTPSItbHNlbGludXggICRMSUJTIgotK2Nh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRl ZnMuaC4gICovCi0rCi0rLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8g YXZvaWQgYW4gZXJyb3IuCi0rICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhl IHJldHVybiB0eXBlIG9mIGEgR0NDCi0rICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQg cHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLSsjaWZkZWYgX19jcGx1c3BsdXMKLStl eHRlcm4gIkMiCi0rI2VuZGlmCi0rY2hhciBzZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUgKCk7 Ci0raW50Ci0rbWFpbiAoKQotK3sKLStyZXR1cm4gc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZl ICgpOwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2xp bmsgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGFjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9i b29sZWFuX2FjdGl2ZT15ZXMKLStlbHNlCi0rICBhY19jdl9saWJfc2VsaW51eF9zZWN1cml0eV9n ZXRfYm9vbGVhbl9hY3RpdmU9bm8KLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0 ZXN0LiRhY19vYmpleHQgXAotKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4 dAotK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3NlbGludXhfc2VjdXJp dHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIiA+JjUKLSskYXNfZWNobyAiJGFjX2N2X2xpYl9zZWxpbnV4 X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSIgPiY2OyB9Ci0raWYgdGVzdCAieCRhY19jdl9s aWJfc2VsaW51eF9zZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUiID0geCIieWVzOyB0aGVuIDoK LSsgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIEhBVkVfTElCU0VMSU5VWCAx Ci0rX0FDRU9GCi0rCi0rICBMSUJTPSItbHNlbGludXggJExJQlMiCi0rCi0rZmkKLSsKLSsKLSAK LSAjIFN1cHBvcnQgZm9yIC0td2l0aC1zeXNyb290IGlzIGEgY29weSBvZiBHREJfQUNfV0lUSF9E SVIsCi0gIyBleGNlcHQgdGhhdCB0aGUgYXJndW1lbnQgdG8gLS13aXRoLXN5c3Jvb3QgaXMgb3B0 aW9uYWwuCi1JbmRleDogZ2RiLTcuNS45MS4yMDEzMDMyMy9nZGIvZ2Ric2VydmVyL2NvbmZpZy5p bgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuOTEuMjAxMzAzMjMub3JpZy9nZGIvZ2Ric2VydmVy L2NvbmZpZy5pbgkyMDEzLTAzLTExIDA5OjM1OjA5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjUuOTEuMjAxMzAzMjMvZ2RiL2dkYnNlcnZlci9jb25maWcuaW4JMjAxMy0wMy0yMyAxOTo1MTox NC4zMjMwNTI0MTkgKzAxMDAKLUBAIC03Myw2ICs3Myw5IEBACi0gLyogRGVmaW5lIHRvIDEgaWYg eW91IGhhdmUgdGhlIGBkbCcgbGlicmFyeSAoLWxkbCkuICovCi0gI3VuZGVmIEhBVkVfTElCREwK LSAKLSsvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNlbGludXgnIGxpYnJhcnkgKC1s c2VsaW51eCkuICovCi0rI3VuZGVmIEhBVkVfTElCU0VMSU5VWAotKwotIC8qIERlZmluZSBpZiB0 aGUgdGFyZ2V0IHN1cHBvcnRzIGJyYW5jaCB0cmFjaW5nLiAqLwotICN1bmRlZiBIQVZFX0xJTlVY X0JUUkFDRQotIAotQEAgLTE0MCw2ICsxNDMsOSBAQAotIC8qIERlZmluZSB0byAxIGlmIHlvdSBo YXZlIHRoZSBgcmVhZGxpbmsnIGZ1bmN0aW9uLiAqLwotICN1bmRlZiBIQVZFX1JFQURMSU5LCi0g Ci0rLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzZWxpbnV4L3NlbGludXguaD4gaGVh ZGVyIGZpbGUuICovCi0rI3VuZGVmIEhBVkVfU0VMSU5VWF9TRUxJTlVYX0gKLSsKLSAvKiBEZWZp bmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHNndHR5Lmg+IGhlYWRlciBmaWxlLiAqLwotICN1bmRl ZiBIQVZFX1NHVFRZX0gKLSAKLUluZGV4OiBnZGItNy41LjkxLjIwMTMwMzIzL2dkYi9nZGJzZXJ2 ZXIvY29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS45MS4yMDEzMDMyMy5vcmlnL2dk Yi9nZGJzZXJ2ZXIvY29uZmlndXJlCTIwMTMtMDMtMTEgMDk6MzU6MDkuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNS45MS4yMDEzMDMyMy9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZQkyMDEzLTAz LTIzIDE5OjUwOjUzLjMwNTA2NjM3NCArMDEwMAotQEAgLTU5MTEsNiArNTkxMSw2NCBAQCBpZiAk d2FudF9pcGEgOyB0aGVuCi0gICAgZmkKLSBmaQotIAotK2ZvciBhY19oZWFkZXIgaW4gc2VsaW51 eC9zZWxpbnV4LmgKLStkbyA6Ci0rICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElO RU5PIiAic2VsaW51eC9zZWxpbnV4LmgiICJhY19jdl9oZWFkZXJfc2VsaW51eF9zZWxpbnV4X2gi ICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLStpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zZWxpbnV4 X3NlbGludXhfaCIgPSB4IiJ5ZXM7IHRoZW4gOgotKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VP RgotKyNkZWZpbmUgSEFWRV9TRUxJTlVYX1NFTElOVVhfSCAxCi0rX0FDRU9GCi0rCi0rZmkKLSsK LStkb25lCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj a2luZyBmb3Igc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIGluIC1sc2VsaW51eCIgPiY1Ci0r JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSBpbiAt bHNlbGludXguLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X2xpYl9zZWxpbnV4X3NlY3Vy aXR5X2dldF9ib29sZWFuX2FjdGl2ZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19u ICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMK LStMSUJTPSItbHNlbGludXggICRMSUJTIgotK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv bmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0rLyogT3ZlcnJpZGUg YW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCi0rICAgVXNlIGNo YXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCi0rICAg YnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5 LiAgKi8KLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiCi0rI2VuZGlmCi0rY2hhciBz ZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUgKCk7Ci0raW50Ci0rbWFpbiAoKQotK3sKLStyZXR1 cm4gc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlICgpOwotKyAgOwotKyAgcmV0dXJuIDA7Ci0r fQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGFj X2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZT15ZXMKLStlbHNlCi0r ICBhY19jdl9saWJfc2VsaW51eF9zZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmU9bm8KLStmaQot K3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotKyAgICBjb25m dGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZl X0xJQlMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz dWx0OiAkYWNfY3ZfbGliX3NlbGludXhfc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIiA+JjUK LSskYXNfZWNobyAiJGFjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2 ZSIgPiY2OyB9Ci0raWYgdGVzdCAieCRhY19jdl9saWJfc2VsaW51eF9zZWN1cml0eV9nZXRfYm9v bGVhbl9hY3RpdmUiID0geCIieWVzOyB0aGVuIDoKLSsgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNF T0YKLSsjZGVmaW5lIEhBVkVfTElCU0VMSU5VWCAxCi0rX0FDRU9GCi0rCi0rICBMSUJTPSItbHNl bGludXggJExJQlMiCi0rCi0rZmkKLSsKLSsKLSAKLSAKLSAKCmRpZmYgLS1naXQgYS9nZGItYno1 MzMxNzYtZm9ydHJhbi1vbXAtc3RlcC5wYXRjaCBiL2dkYi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1z dGVwLnBhdGNoCmluZGV4IDA3MjVhZDIuLjE5NzhkNWUgMTAwNjQ0Ci0tLSBhL2dkYi1iejUzMzE3 Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoCisrKyBiL2dkYi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1z dGVwLnBhdGNoCkBAIC0yMSwxNiArMjEsMTYgQEAgZGVidWdnaW5nIHByb2JsZW0gb2YgR09NUCBv dXRzaWRlIG9mIHRoZSBzY29wZSBvZiB0aGlzIEJ1Zy4KIAogCiAKLUluZGV4OiBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi9pbmZydW4uYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi9pbmZydW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIv aW5mcnVuLmMJMjAxMy0wMS0xOSAyMzozODoyMi4zMjkzNzE0MTAgKzAxMDAKLSsrKyBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi9pbmZydW4uYwkyMDEzLTAxLTE5IDIzOjM5OjAzLjMyMjQyOTA0MSAr MDEwMAotQEAgLTQ5MTgsNiArNDkxOCwxNiBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoKKy0t LSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9pbmZydW4uYwkyMDEzLTA4LTAyIDE3 OjEwOjA4LjQ0Njk2Mjk1OCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9p bmZydW4uYwkyMDEzLTA4LTAyIDE3OjEwOjQ5LjEwOTAxNjY4NSArMDIwMAorQEAgLTQ5MzAsNiAr NDkzMCwxNiBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoKICAKICAgICAgICBpZiAoZWNzLT5l dmVudF90aHJlYWQtPmNvbnRyb2wuc3RlcF9vdmVyX2NhbGxzID09IFNURVBfT1ZFUl9BTEwpCiAg CXsKICsJICBzdHJ1Y3Qgc3ltYm9sICpzdG9wX2ZuID0gZmluZF9wY19mdW5jdGlvbiAoc3RvcF9w Yyk7Ci0rCSAgc3RydWN0IG1pbmltYWxfc3ltYm9sICpzdG9wZiA9IGxvb2t1cF9taW5pbWFsX3N5 bWJvbF9ieV9wYyAoc3RvcF9wYyk7CisrCSAgc3RydWN0IG1pbmltYWxfc3ltYm9sICpzdG9wZiA9 IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoc3RvcF9wYykubWluc3ltOwogKwogKwkgIGlm ICgoc3RvcF9mbiA9PSBOVUxMCiArCSAgICAgICB8fCBzdHJzdHIgKFNZTUJPTF9MSU5LQUdFX05B TUUgKHN0b3BfZm4pLCAiLm9tcF9mbi4iKSA9PSBOVUxMKQpAQCAtNDIsNyArNDIsNyBAQCBJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvaW5mcnVuLmMKICAJICAvKiBXZSdyZSBkb2luZyBh ICJuZXh0Ii4KICAKICAJICAgICBOb3JtYWwgKGZvcndhcmQpIGV4ZWN1dGlvbjogc2V0IGEgYnJl YWtwb2ludCBhdCB0aGUKLUBAIC00OTUzLDYgKzQ5NjMsNyBAQCBwcm9jZXNzX2V2ZW50X3N0b3Bf dGVzdDoKK0BAIC00OTY1LDYgKzQ5NzUsNyBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoKICAK ICAJICBrZWVwX2dvaW5nIChlY3MpOwogIAkgIHJldHVybjsKQEAgLTUwLDEwICs1MCwxMCBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvaW5mcnVuLmMKICAJfQogIAogICAgICAgIC8q IElmIHdlIGFyZSBpbiBhIGZ1bmN0aW9uIGNhbGwgdHJhbXBvbGluZSAoYSBzdHViIGJldHdlZW4g dGhlCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L29tcC1zdGVwLmV4cAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAkyMDEzLTAxLTE5IDIzOjM4 OjIzLjIxMzM3MjYyMiArMDEwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCTIwMTMtMDgtMDIgMTc6MTA6MzcuMDYzMDAw NTcxICswMjAwCiBAQCAtMCwwICsxLDMxIEBACiArIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTg2LDEwICs4NiwxMCBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAogKwog K2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzdWNjZXNzIl0KICtnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAic3VjY2VzcyIgIi4qc3VjY2Vzcy4qIgotSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5mOTAKK0lu ZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29t cC1zdGVwLmY5MAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9vbXAtc3RlcC5mOTAJMjAxMy0wMS0xOSAyMzozODoyMy4yMTMzNzI2MjIgKzAx MDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L29tcC1zdGVwLmY5MAkyMDEzLTA4LTAyIDE3OjEwOjM3LjA2MzAwMDU3MSArMDIwMAogQEAgLTAs MCArMSwzMiBAQAogKyEgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCiArCgpkaWZmIC0tZ2l0IGEvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2ggYi9n ZGItY29yZS1vcGVuLXZkc28td2FybmluZy5wYXRjaAppbmRleCBjYWZkODQ0Li42YzQyZTVhIDEw MDY0NAotLS0gYS9nZGItY29yZS1vcGVuLXZkc28td2FybmluZy5wYXRjaAorKysgYi9nZGItY29y ZS1vcGVuLXZkc28td2FybmluZy5wYXRjaApAQCAtMywxMSArMywxMSBAQCBTdWJqZWN0OiBbcGF0 Y2hdIEZpeCBHTlUvTGludXggY29yZSBvcGVuOiBDYW4ndCByZWFkIHBhdGhuYW1lIGZvciBsb2Fk IG1hcDogIElucAogCiBbIE5ldyBwYXRjaCB2YXJpYW50LiAgXQogCi1JbmRleDogZ2RiLTcuNS41 MC4yMDEzMDExOC9nZGIvc29saWItc3ZyNC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMvZ2RiL3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgu b3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTMtMDEtMTggMjM6MDU6MTkuNDE0MjEwMDE1ICswMTAw Ci0rKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc29saWItc3ZyNC5jCTIwMTMtMDEtMTggMjM6 MDU6MzQuODEzMjMxNjY0ICswMTAwCi1AQCAtMTIyMSw4ICsxMjIxLDE3IEBAIHN2cjRfcmVhZF9z b19saXN0IChDT1JFX0FERFIgbG0sIHN0cnVjdAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz Lm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEzLTA4LTAyIDE2OjI3OjI4LjgzMTI1OTQ2OCArMDIw MAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9zb2xpYi1zdnI0LmMJMjAxMy0wOC0w MiAxNjoyNzo0Ny44NzEyODQ4MTMgKzAyMDAKK0BAIC0xMzU5LDggKzEzNTksMTcgQEAgc3ZyNF9y ZWFkX3NvX2xpc3QgKENPUkVfQUREUiBsbSwgQ09SRV9BRAogIAkJCSAgU09fTkFNRV9NQVhfUEFU SF9TSVpFIC0gMSwgJmVycmNvZGUpOwogICAgICAgIGlmIChlcnJjb2RlICE9IDApCiAgCXsKQEAg LTI3LDIwICsyNywyMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc29saWItc3Zy NC5jCiAgCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CiAgCSAgY29udGludWU7CiAgCX0KLUlu ZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zb2xpYi5jCitJbmRleDogZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL3NvbGliLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMw MTE4Lm9yaWcvZ2RiL3NvbGliLmMJMjAxMy0wMS0xOCAyMzowNToxOS40MTUyMTAwMTcgKzAxMDAK LSsrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zb2xpYi5jCTIwMTMtMDEtMTggMjM6MDU6NTcu NDIxMjYzMTczICswMTAwCi1AQCAtNjY2LDcgKzY2Niw3IEBAIHNvbGliX3VzZWQgKGNvbnN0IHN0 cnVjdCBzb19saXN0ICpjb25zdAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2Ri L3NvbGliLmMJMjAxMy0wOC0wMiAxNjoyNzoyOC44MzIyNTk0NzAgKzAyMDAKKysrKyBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy9nZGIvc29saWIuYwkyMDEzLTA4LTAyIDE2OjI4OjUwLjQyMTM2NzY5 NCArMDIwMAorQEAgLTY2OSw3ICs2NjksNyBAQCBzb2xpYl91c2VkIChjb25zdCBzdHJ1Y3Qgc29f bGlzdCAqY29uc3QKICAgICBwcm9jZXNzZXMgd2UndmUganVzdCBhdHRhY2hlZCB0bywgc28gdGhh dCdzIG9rYXkuICAqLwogIAogIHN0YXRpYyB2b2lkCiAtdXBkYXRlX3NvbGliX2xpc3QgKGludCBm cm9tX3R0eSwgc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCkKICt1cGRhdGVfc29saWJfbGlzdF8x IChpbnQgZnJvbV90dHksIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQpCiAgewotICAgc3RydWN0 IHRhcmdldF9zb19vcHMgKm9wcyA9IHNvbGliX29wcyAodGFyZ2V0X2dkYmFyY2ggKCkpOworICAg Y29uc3Qgc3RydWN0IHRhcmdldF9zb19vcHMgKm9wcyA9IHNvbGliX29wcyAodGFyZ2V0X2dkYmFy Y2ggKCkpOwogICAgc3RydWN0IHNvX2xpc3QgKmluZmVyaW9yID0gb3BzLT5jdXJyZW50X3Nvcygp OwotQEAgLTgzNyw2ICs4MzcsMjEgQEAgRG8geW91IG5lZWQgXCJzZXQgc29saWItc2VhcmNoLXBh dGhcIiBvcgorQEAgLTg0MCw2ICs4NDAsMjEgQEAgRG8geW91IG5lZWQgXCJzZXQgc29saWItc2Vh cmNoLXBhdGhcIiBvcgogICAgICB9CiAgfQogIApAQCAtNjIsMTEgKzYyLDExIEBAIEluZGV4OiBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zb2xpYi5jCiAgCiAgLyogUmV0dXJuIG5vbi16ZXJvIGlm IE5BTUUgaXMgdGhlIGxpYnB0aHJlYWQgc2hhcmVkIGxpYnJhcnkuCiAgCi1JbmRleDogZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cAorSW5kZXg6 IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUu ZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCTIwMTMtMDEtMTggMjM6MDU6MTkuNDE2MjEwMDIwICsw MTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVm aWxlLmV4cAkyMDEzLTAxLTE4IDIzOjA1OjM0LjgxNDIzMTY2NyArMDEwMAotQEAgLTI4NiwzICsy ODYsMTkgQEAgaWYgeyRidWlsZGlkID09ICIifSB7CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cAkyMDEzLTA4LTAyIDE2 OjI3OjI4LjgzMzI1OTQ3MSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCTIwMTMtMDgtMDIgMTY6Mjc6NDcuODcyMjg0 ODE0ICswMjAwCitAQCAtMjg1LDMgKzI4NSwxOSBAQCBpZiB7JGJ1aWxkaWQgPT0gIiJ9IHsKICAg ICAgZ2RiX3Rlc3QgImluZm8gZmlsZXMiICJMb2NhbCBleGVjIGZpbGU6XHJcblxbIFx0XF0qYFtz dHJpbmdfdG9fcmVnZXhwICRkZWJ1Z2Rpci8kYnVpbGRpZF0nLCBmaWxlIHR5cGUgLioiCiAgICAg IHBhc3MgJHdob2xldGVzdAogIH0KQEAgLTg2LDIwICs4NiwxOCBAQCBJbmRleDogZ2RiLTcuNS41 MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cAogKwlwYXNzICR0 ZXN0CiArICAgIH0KICt9Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zb2xpYi1z eW1ib2wuZXhwCTIwMTMtMDEtMTggMjM6MDU6MTkuNDE2MjEwMDIwICswMTAwCi0rKysgZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAJMjAx My0wMS0xOCAyMzowNTozNC44MTQyMzE2NjcgKzAxMDAKLUBAIC0yNyw3ICsyNyw4IEBAIHNldCBs aWJfZmxhZ3MgW2xpc3QgZGVidWcgbGRmbGFncz0tV2wsLUIKLSAjIEJpbmFyeSBmaWxlLgotIHNl dCB0ZXN0ZmlsZSAic29saWItc3ltYm9sLW1haW4iCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAJMjAxMy0wOC0w MiAxNjoyNzoyOC44MzMyNTk0NzEgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAJMjAxMy0wOC0wMiAxNjoyODoy Mi41NDkzMzA5NzMgKzAyMDAKK0BAIC0yOSw2ICsyOSw3IEBAIHNldCB0ZXN0ZmlsZSAic29saWIt c3ltYm9sLW1haW4iCiAgc2V0IHNyY2ZpbGUgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxl fS5jCi0tc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotK3NldCBl eGVjdXRhYmxlICR7dGVzdGZpbGV9Ci0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8k e2V4ZWN1dGFibGV9Cisgc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICR7dGVzdGZp bGV9XQogIHNldCBiaW5fZmxhZ3MgW2xpc3QgZGVidWcgc2hsaWI9JHtiaW5maWxlX2xpYn1dCisr c2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KICAKICBpZiBbZ2V0X2NvbXBpbGVyX2luZm9dIHsK KyAgICAgcmV0dXJuIC0xCiBAQCAtNzIsOCArNzMsMjYgQEAgZ2RiX3Rlc3QgImJyIGZvbzIiIFwK ICAJICJCcmVha3BvaW50Lio6IGZvbzIuIC4yIGxvY2F0aW9ucy4uKiIgXAogIAkgImZvbzIgaW4g bWRsaWIiCgpkaWZmIC0tZ2l0IGEvZ2RiLWN4eC1wZXJmb3JtYW5jZS0xb2YyLnBhdGNoIGIvZ2Ri LWN4eC1wZXJmb3JtYW5jZS0xb2YyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA5MDc3M2VjLi4wMDAwMDAwCi0tLSBhL2dkYi1jeHgtcGVyZm9ybWFuY2UtMW9mMi5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDIwOSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLWN2cy8yMDEzLTA2L21zZzAwMDM0Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIw MTMvMDYvMDUgMjA6NDM6NTMJMS4xNTY4OQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTMvMDYv MDUgMjI6Mjg6NTEJMS4xNTY5MAotIyMgLTEsMyArMSwxNCBAQAotKzIwMTMtMDYtMDUgIERvdWcg RXZhbnMgIDxkamVAZ29vZ2xlLmNvbT4KLSsJICAgIEtlaXRoIFNlaXR6ICA8a2VpdGhzQHJlZGhh dC5jb20+Ci0rCi0rCVBSIDE1NTE5Ci0rCSogY3AtbmFtZXNwYWNlLmMgKGZpbmRfc3ltYm9sX2lu X2Jhc2VjbGFzcyk6IENhbGwKLSsJY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgaW5zdGVh ZCBvZiBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZS4KLSsJQ2hlY2sgcmVzdWx0IG9mIGNhbGwg dG8gbG9va3VwX3N5bWJvbF9zdGF0aWMuCi0rCUNhbGwgbG9va3VwX3N0YXRpY19zeW1ib2xfYXV4 IHVuY29uZGl0aW9uYWxseS4KLSsJQ2FsbCBjaGVja190eXBlZGVmIG9uIGJhc2UgdHlwZXMgYmVm b3JlIGFjY2Vzc2luZyB0aGVtLgotKwkoY3BfbG9va3VwX25lc3RlZF9zeW1ib2wpOiBGaXggY29t bWVudC4KLSsKLSAyMDEzLTA2LTA1ICBMdWlzIE1hY2hhZG8gIDxsZ3VzdGF2b0Bjb2Rlc291cmNl cnkuY29tPgotIAotIAkqIGdudS12My1hYmkuYyAoZ251djNfc2tpcF90cmFtcG9saW5lKTogSGFu ZGxlIHRodW5rCi0tLS0gc3JjL2dkYi9jcC1uYW1lc3BhY2UuYwkyMDEzLzA1LzMwIDE3OjI5OjA2 CTEuNjcKLSsrKyBzcmMvZ2RiL2NwLW5hbWVzcGFjZS5jCTIwMTMvMDYvMDUgMjI6Mjg6NTEJMS42 OAotQEAgLTcyMCwzNiArNzIwLDQwIEBACi0gICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9OX0JBU0VD TEFTU0VTIChwYXJlbnRfdHlwZSk7ICsraSkKLSAgICAgewotICAgICAgIHNpemVfdCBsZW47Ci0r ICAgICAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZSA9IFRZUEVfQkFTRUNMQVNTIChwYXJlbnRfdHlw ZSwgaSk7Ci0gICAgICAgY29uc3QgY2hhciAqYmFzZV9uYW1lID0gVFlQRV9CQVNFQ0xBU1NfTkFN RSAocGFyZW50X3R5cGUsIGkpOwotIAotICAgICAgIGlmIChiYXNlX25hbWUgPT0gTlVMTCkKLSAJ Y29udGludWU7Ci0gCi0gICAgICAgLyogU2VhcmNoIHRoaXMgcGFydGljdWxhciBiYXNlIGNsYXNz LiAgKi8KLS0gICAgICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAoYmFzZV9uYW1l LCBuYW1lLCBibG9jaywgVkFSX0RPTUFJTik7Ci0rICAgICAgc3ltID0gY3BfbG9va3VwX3N5bWJv bF9pbl9uYW1lc3BhY2UgKGJhc2VfbmFtZSwgbmFtZSwgYmxvY2ssCi0rCQkJCQkgICBWQVJfRE9N QUlOLCAwKTsKLSAgICAgICBpZiAoc3ltICE9IE5VTEwpCi0gCWJyZWFrOwotIAotKyAgICAgIC8q IE5vdyBzZWFyY2ggYWxsIHN0YXRpYyBmaWxlLWxldmVsIHN5bWJvbHMuICBXZSBoYXZlIHRvIGRv IHRoaXMgZm9yCi0rCSB0aGluZ3MgbGlrZSB0eXBlZGVmcyBpbiB0aGUgY2xhc3MuICBGaXJzdCBz ZWFyY2ggaW4gdGhpcyBzeW10YWIsCi0rCSB3aGF0IHdlIHdhbnQgaXMgcG9zc2libHkgdGhlcmUu ICAqLwotICAgICAgIGxlbiA9IHN0cmxlbiAoYmFzZV9uYW1lKSArIDIgKyBzdHJsZW4gKG5hbWUp ICsgMTsKLSAgICAgICBjb25jYXRlbmF0ZWRfbmFtZSA9IHhyZWFsbG9jIChjb25jYXRlbmF0ZWRf bmFtZSwgbGVuKTsKLSAgICAgICB4c25wcmludGYgKGNvbmNhdGVuYXRlZF9uYW1lLCBsZW4sICIl czo6JXMiLCBiYXNlX25hbWUsIG5hbWUpOwotICAgICAgIHN5bSA9IGxvb2t1cF9zeW1ib2xfc3Rh dGljIChjb25jYXRlbmF0ZWRfbmFtZSwgYmxvY2ssIFZBUl9ET01BSU4pOwotKyAgICAgIGlmIChz eW0gIT0gTlVMTCkKLSsJYnJlYWs7Ci0gCi0tICAgICAgLyogSWYgdGhlcmUgaXMgY3VycmVudGx5 IG5vIEJMT0NLLCBlLmcuLCB0aGUgaW5mZXJpb3IgaGFzbid0IHlldAotLQkgYmVlbiBzdGFydGVk LCB0aGVuIHRyeSBzZWFyY2hpbmcgYWxsIFNUQVRJQ19CTE9DSyBzeW1ib2xzIGluCi0tCSBhbGwg b2JqZmlsZXMuICAqLwotLSAgICAgIGlmIChibG9jayA9PSBOVUxMKQotLQl7Ci0tCSAgc3ltID0g bG9va3VwX3N0YXRpY19zeW1ib2xfYXV4IChjb25jYXRlbmF0ZWRfbmFtZSwgVkFSX0RPTUFJTik7 Ci0tCSAgaWYgKHN5bSAhPSBOVUxMKQotLQkgICAgYnJlYWs7Ci0tCX0KLSsgICAgICAvKiBOb3Bl LiAgV2Ugbm93IGhhdmUgdG8gc2VhcmNoIGFsbCBzdGF0aWMgYmxvY2tzIGluIGFsbCBvYmpmaWxl cywKLSsJIGV2ZW4gaWYgYmxvY2sgIT0gTlVMTCwgYmVjYXVzZSB0aGVyZSdzIG5vIGd1YXJhbnRl ZXMgYXMgdG8gd2hpY2gKLSsJIHN5bXRhYiB0aGUgc3ltYm9sIHdlIHdhbnQgaXMgaW4uICAqLwot KyAgICAgIHN5bSA9IGxvb2t1cF9zdGF0aWNfc3ltYm9sX2F1eCAoY29uY2F0ZW5hdGVkX25hbWUs IFZBUl9ET01BSU4pOwotKyAgICAgIGlmIChzeW0gIT0gTlVMTCkKLSsJYnJlYWs7Ci0gCi0gICAg ICAgLyogSWYgdGhpcyBjbGFzcyBoYXMgYmFzZSBjbGFzc2VzLCBzZWFyY2ggdGhlbSBuZXh0LiAg Ki8KLS0gICAgICBpZiAoVFlQRV9OX0JBU0VDTEFTU0VTIChUWVBFX0JBU0VDTEFTUyAocGFyZW50 X3R5cGUsIGkpKSA+IDApCi0rICAgICAgQ0hFQ0tfVFlQRURFRiAoYmFzZV90eXBlKTsKLSsgICAg ICBpZiAoVFlQRV9OX0JBU0VDTEFTU0VTIChiYXNlX3R5cGUpID4gMCkKLSAJewotLQkgIHN5bSA9 IGZpbmRfc3ltYm9sX2luX2Jhc2VjbGFzcyAoVFlQRV9CQVNFQ0xBU1MgKHBhcmVudF90eXBlLCBp KSwKLS0JCQkJCSAgbmFtZSwgYmxvY2spOwotKwkgIHN5bSA9IGZpbmRfc3ltYm9sX2luX2Jhc2Vj bGFzcyAoYmFzZV90eXBlLCBuYW1lLCBibG9jayk7Ci0gCSAgaWYgKHN5bSAhPSBOVUxMKQotIAkg ICAgYnJlYWs7Ci0gCX0KLUBAIC03OTcsOCArODAxLDggQEAKLSAJaWYgKHN5bSAhPSBOVUxMKQot IAkgIHJldHVybiBzeW07Ci0gCi0tCS8qIE5vdyBzZWFyY2ggYWxsIHN0YXRpYyBmaWxlLWxldmVs IHN5bWJvbHMuICBOb3Qgc3RyaWN0bHkKLS0JICAgY29ycmVjdCwgYnV0IG1vcmUgdXNlZnVsIHRo YW4gYW4gZXJyb3IuICBXZSBkbyBub3QgdHJ5IHRvCi0rCS8qIE5vdyBzZWFyY2ggYWxsIHN0YXRp YyBmaWxlLWxldmVsIHN5bWJvbHMuICBXZSBoYXZlIHRvIGRvIHRoaXMKLSsJICAgZm9yIHRoaW5n cyBsaWtlIHR5cGVkZWZzIGluIHRoZSBjbGFzcy4gIFdlIGRvIG5vdCB0cnkgdG8KLSAJICAgZ3Vl c3MgYW55IGltcG9ydGVkIG5hbWVzcGFjZSBhcyBldmVuIHRoZSBmdWxseSBzcGVjaWZpZWQKLSAJ ICAgbmFtZXNwYWNlIHNlYXJjaCBpcyBhbHJlYWR5IG5vdCBDKysgY29tcGxpYW50IGFuZCBtb3Jl Ci0gCSAgIGFzc3VtcHRpb25zIGNvdWxkIG1ha2UgaXQgdG9vIG1hZ2ljLiAgKi8KLSMjIyBzcmMv Z2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMy8wNi8wNSAyMDozODozNwkxLjM2ODUKLSMjIyBz cmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMy8wNi8wNSAyMjoyODo1MQkxLjM2ODYKLSMj IC0xLDMgKzEsMTEgQEAKLSsyMDEzLTA2LTA1ICBEb3VnIEV2YW5zICA8ZGplQGdvb2dsZS5jb20+ Ci0rCSAgICBLZWl0aCBTZWl0eiAgPGtlaXRoc0ByZWRoYXQuY29tPgotKwotKwkqIGdkYi5jcC9k ZXJpdmF0aW9uMi5jYzogTmV3IGZpbGUuCi0rCSogZ2RiLmNwL2Rlcml2YXRpb24uY2MgKG1haW4p OiBDYWxsIGZvbzIuCi0rCSogZ2RiLmNwL2Rlcml2YXRpb24uZXhwOiBBZGQgdGVzdHMgZm9yIHR5 cGVkZWZzIGluIGFub3RoZXIKLSsJZmlsZSwgYW5kIHdoZW4gdGhlcmUncyBhbiBhY3RpdmUgYmxv Y2suCi0rCi0gMjAxMy0wNi0wNSAgTHVpcyBNYWNoYWRvICA8bGd1c3Rhdm9AY29kZXNvdXJjZXJ5 LmNvbT4KLSAKLSAJKiBnZGIuY3AvdmlydGZ1bmMuZXhwIChtYWtlX29uZV92dGFibGVfcmVzdWx0 KTogSGFuZGxlIGV4dHJhIG91dHB1dAotLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9kZXJp dmF0aW9uMi5jYwotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9kZXJpdmF0aW9uMi5jYwky MDEzLTA2LTEwIDEyOjM1OjE0Ljg4MTI3MjI0NyArMDAwMAotQEAgLTAsMCArMSw0OSBAQAotKy8q IFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAg Q29weXJpZ2h0IDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwot KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rICAgKi8KLSsKLSsvKiBBIGNvcHkgb2Yg c29tZSBjbGFzc2VzIGluIGRlcml2YXRpb24uY2Mgc28gdGhhdCB3ZSBjYW4gdGVzdCBzeW1ib2wg bG9va3VwCi0rICAgaW4gb3RoZXIgQ1VzLiAgKi8KLSsKLStjbGFzcyBBMiB7Ci0rcHVibGljOgot KyAgICB0eXBlZGVmIGludCB2YWx1ZV90eXBlOwotKyAgICB2YWx1ZV90eXBlIGE7Ci0rCi0rICAg IEEyKCkKLSsgICAgewotKyAgICAgICAgYT0xOwotKyAgICB9Ci0rfTsKLSsKLStjbGFzcyBEMiA6 IHB1YmxpYyBBMiB7Ci0rcHVibGljOgotKyAgICB2YWx1ZV90eXBlIGQ7Ci0rCi0rICAgIEQyKCkK LSsgICAgewotKyAgICAgICAgZD03OwotKyAgICB9Ci0rfTsKLSsKLSt2b2lkCi0rZm9vMiAoKQot K3sKLSsgIEQyIGQyX2luc3RhbmNlOwotKyAgZDJfaW5zdGFuY2UuYSA9IDQyOwotKyAgZDJfaW5z dGFuY2UuZCA9IDQzOwotK30KLS0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZGVyaXZhdGlv bi5jYwkyMDEzLzAxLzAxIDA2OjMzOjI3CTEuNQotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5j cC9kZXJpdmF0aW9uLmNjCTIwMTMvMDYvMDUgMjI6Mjg6NTEJMS42Ci1AQCAtMTYsNiArMTYsOCBA QAotICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgotICAgICovCi0gCi0rZXh0ZXJuIHZvaWQgZm9vMiAoKTsgLyog ZnJvbSBkZXJpdmF0aW9uMi5jYyAqLwotKwotIG5hbWVzcGFjZSBOIHsKLSAgIHR5cGVkZWYgZG91 YmxlIHZhbHVlX3R5cGU7Ci0gICBzdHJ1Y3QgQmFzZSB7IHR5cGVkZWYgaW50IHZhbHVlX3R5cGU7 IH07Ci1AQCAtMzA2LDkgKzMwOCw3IEBACi0gICAgIE46OkRlcml2ZWQ6OnZhbHVlX3R5cGUgZCA9 IDE7Ci0gICAgIE46OnZhbHVlX3R5cGUgbiA9IDMuMDsKLSAgICAgZG9iai5kb2l0ICgpOwotKyAg ICBmb28yICgpOwotICAgICByZXR1cm4gMDsKLSAgICAgCi0gfQotLQotLSAgICAKLS0gICAgCi0t LS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2Rlcml2YXRpb24uZXhwCTIwMTMvMDEvMDEgMDY6 MzM6MjcJMS4yNAotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9kZXJpdmF0aW9uLmV4cAky MDEzLzA2LzA1IDIyOjI4OjUxCTEuMjUKLUBAIC0zMiwxNCArMzIsMTUgQEAKLSAKLSBsb2FkX2xp YiAiY3Atc3VwcG9ydC5leHAiCi0gCi0tc3RhbmRhcmRfdGVzdGZpbGUgLmNjCi0rc3RhbmRhcmRf dGVzdGZpbGUgZGVyaXZhdGlvbi5jYyBkZXJpdmF0aW9uMi5jYwotIAotLWlmIHtbcHJlcGFyZV9m b3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSB7ZGVidWcgYysrfV19 IHsKLStpZiB7W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgXAot KwlbbGlzdCAkc3JjZmlsZSAkc3JjZmlsZTJdIHtkZWJ1ZyBjKyt9XX0gewotICAgICByZXR1cm4g LTEKLSB9Ci0gCi0gIyBDaGVjayBpbmhlcml0YW5jZSBvZiB0eXBlZGVmcy4KLS1mb3JlYWNoIGts YXNzIHsiQSIgIkQiICJFIiAiRiJ9IHsKLStmb3JlYWNoIGtsYXNzIHsiQSIgIkQiICJFIiAiRiIg IkEyIiAiRDIifSB7Ci0gICAgIGdkYl90ZXN0ICJwdHlwZSAke2tsYXNzfTo6dmFsdWVfdHlwZSIg InR5cGUgPSBpbnQiCi0gICAgIGdkYl90ZXN0ICJ3aGF0aXMgJHtrbGFzc306OnZhbHVlX3R5cGUi ICJ0eXBlID0gaW50IgotICAgICBnZGJfdGVzdCAicCAoJHtrbGFzc306OnZhbHVlX3R5cGUpIDAi ICIgPSAwIgotQEAgLTU3LDYgKzU4LDEzIEBACi0gICAgIGNvbnRpbnVlCi0gfQotIAotKyMgQ2hl Y2sgaW5oZXJpdGFuY2Ugb2YgdHlwZWRlZnMgYWdhaW4sIGJ1dCB0aGlzIHRpbWUgd2l0aCBhbiBh Y3RpdmUgYmxvY2suCi0rZm9yZWFjaCBrbGFzcyB7IkEiICJEIiAiQTIiICJEMiJ9IHsKLSsgICAg Z2RiX3Rlc3QgInB0eXBlICR7a2xhc3N9Ojp2YWx1ZV90eXBlIiAidHlwZSA9IGludCIKLSsgICAg Z2RiX3Rlc3QgIndoYXRpcyAke2tsYXNzfTo6dmFsdWVfdHlwZSIgInR5cGUgPSBpbnQiCi0rICAg IGdkYl90ZXN0ICJwICgke2tsYXNzfTo6dmFsdWVfdHlwZSkgMCIgIiA9IDAiCi0rfQotKwotIGdk Yl90ZXN0ICJ1cCIgIi4qbWFpbi4qIiAidXAgZnJvbSBtYXJrZXIxIgotIAotICMgUHJpbnQgY2xh c3MgdHlwZXMgYW5kIHZhbHVlcy4KCmRpZmYgLS1naXQgYS9nZGItY3h4LXBlcmZvcm1hbmNlLTJv ZjIucGF0Y2ggYi9nZGItY3h4LXBlcmZvcm1hbmNlLTJvZjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDIwNTY5OGQuLjAwMDAwMDAKLS0tIGEvZ2RiLWN4eC1wZXJmb3JtYW5j ZS0yb2YyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotaHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMy0wNi9tc2cwMDA0NC5odG1sCi0KLSMjIyBzcmMvZ2Ri L3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMy8wNi8wNiAxOTowMDoxMwkxLjM2ODgKLSMjIyBzcmMv Z2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMy8wNi8wNiAxOTowMjoyNgkxLjM2ODkKLSMjIC0x LDMgKzEsNyBAQAotKzIwMTMtMDYtMDYgIERvdWcgRXZhbnMgIDxkamVAZ29vZ2xlLmNvbT4KLSsK LSsJKiBnZGIuY3AvZGVyaXZhdGlvbi5leHA6IE1ha2UgdGVzdHMgaGF2ZSB1bmlxdWUgbmFtZXMu Ci0rCi0gMjAxMy0wNi0wNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgotIAotIAkq IGdkYi5iYXNlL2R1bXAuZXhwIChjYXB0dXJlX3ZhbHVlKTogRG9uJ3QgcHV0IGV4cHJlc3Npb24g aW50bwotLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9kZXJpdmF0aW9uLmV4cAkyMDEzLzA2 LzA1IDIyOjI4OjUxCTEuMjUKLSsrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZGVyaXZhdGlv bi5leHAJMjAxMy8wNi8wNiAxOTowMjoyNwkxLjI2Ci1AQCAtNDAsMTUgKzQwLDE3IEBACi0gfQot IAotICMgQ2hlY2sgaW5oZXJpdGFuY2Ugb2YgdHlwZWRlZnMuCi0tZm9yZWFjaCBrbGFzcyB7IkEi ICJEIiAiRSIgIkYiICJBMiIgIkQyIn0gewotLSAgICBnZGJfdGVzdCAicHR5cGUgJHtrbGFzc306 OnZhbHVlX3R5cGUiICJ0eXBlID0gaW50IgotLSAgICBnZGJfdGVzdCAid2hhdGlzICR7a2xhc3N9 Ojp2YWx1ZV90eXBlIiAidHlwZSA9IGludCIKLS0gICAgZ2RiX3Rlc3QgInAgKCR7a2xhc3N9Ojp2 YWx1ZV90eXBlKSAwIiAiID0gMCIKLS19Ci0tZm9yZWFjaCBrbGFzcyB7IloiICJaWiJ9IHsKLS0g ICAgZ2RiX3Rlc3QgInB0eXBlICR7a2xhc3N9Ojp2YWx1ZV90eXBlIiAidHlwZSA9IGZsb2F0Igot LSAgICBnZGJfdGVzdCAid2hhdGlzICR7a2xhc3N9Ojp2YWx1ZV90eXBlIiAidHlwZSA9IGZsb2F0 IgotLSAgICBnZGJfdGVzdCAicCAoJHtrbGFzc306OnZhbHVlX3R5cGUpIDAiICIgPSAwIgotK3dp dGhfdGVzdF9wcmVmaXggImJlZm9yZSBydW4iIHsKLSsgICAgZm9yZWFjaCBrbGFzcyB7IkEiICJE IiAiRSIgIkYiICJBMiIgIkQyIn0gewotKwlnZGJfdGVzdCAicHR5cGUgJHtrbGFzc306OnZhbHVl X3R5cGUiICJ0eXBlID0gaW50IgotKwlnZGJfdGVzdCAid2hhdGlzICR7a2xhc3N9Ojp2YWx1ZV90 eXBlIiAidHlwZSA9IGludCIKLSsJZ2RiX3Rlc3QgInAgKCR7a2xhc3N9Ojp2YWx1ZV90eXBlKSAw IiAiID0gMCIKLSsgICAgfQotKyAgICBmb3JlYWNoIGtsYXNzIHsiWiIgIlpaIn0gewotKwlnZGJf dGVzdCAicHR5cGUgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0gZmxvYXQiCi0rCWdkYl90 ZXN0ICJ3aGF0aXMgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0gZmxvYXQiCi0rCWdkYl90 ZXN0ICJwICgke2tsYXNzfTo6dmFsdWVfdHlwZSkgMCIgIiA9IDAiCi0rICAgIH0KLSB9Ci0gCi0g IyBTZXQgaXQgdXAgYXQgYSBicmVha3BvaW50IHNvIHdlIGNhbiBwbGF5IHdpdGggdGhlIHZhcmlh YmxlIHZhbHVlcy4KLUBAIC01OSwxMCArNjEsMTIgQEAKLSB9Ci0gCi0gIyBDaGVjayBpbmhlcml0 YW5jZSBvZiB0eXBlZGVmcyBhZ2FpbiwgYnV0IHRoaXMgdGltZSB3aXRoIGFuIGFjdGl2ZSBibG9j ay4KLS1mb3JlYWNoIGtsYXNzIHsiQSIgIkQiICJBMiIgIkQyIn0gewotLSAgICBnZGJfdGVzdCAi cHR5cGUgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0gaW50IgotLSAgICBnZGJfdGVzdCAi d2hhdGlzICR7a2xhc3N9Ojp2YWx1ZV90eXBlIiAidHlwZSA9IGludCIKLS0gICAgZ2RiX3Rlc3Qg InAgKCR7a2xhc3N9Ojp2YWx1ZV90eXBlKSAwIiAiID0gMCIKLSt3aXRoX3Rlc3RfcHJlZml4ICJh dCBtYXJrZXIxIiB7Ci0rICAgIGZvcmVhY2gga2xhc3MgeyJBIiAiRCIgIkEyIiAiRDIifSB7Ci0r CWdkYl90ZXN0ICJwdHlwZSAke2tsYXNzfTo6dmFsdWVfdHlwZSIgInR5cGUgPSBpbnQiCi0rCWdk Yl90ZXN0ICJ3aGF0aXMgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0gaW50IgotKwlnZGJf dGVzdCAicCAoJHtrbGFzc306OnZhbHVlX3R5cGUpIDAiICIgPSAwIgotKyAgICB9Ci0gfQotIAot IGdkYl90ZXN0ICJ1cCIgIi4qbWFpbi4qIiAidXAgZnJvbSBtYXJrZXIxIgoKZGlmZiAtLWdpdCBh L2dkYi1kbG9wZW4tc3RhcC1wcm9iZS0xb2Y5LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2Jl LTFvZjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MTlkYzkuLjAwMDAw MDAKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTFvZjkucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxMDIgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMy0w Ni9tc2cwMDAxMi5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDAyOjQ0 OjM0CTEuMTU2ODAKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDEyOjUwOjIwCTEu MTU2ODEKLSMjIC0xLDMgKzEsMTEgQEAKLSsyMDEzLTA2LTA0ICBHYXJ5IEJlbnNvbiAgPGdiZW5z b25AcmVkaGF0LmNvbT4KLSsKLSsJKiBwcm9iZS5oIChnZXRfcHJvYmVfYXJndW1lbnRfY291bnQp OiBOZXcgZGVjbGFyYXRpb24uCi0rCShldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCk6IExpa2V3aXNl LgotKwkqIHByb2JlLmMgKGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCk6IE5ldyBmdW5jdGlvbi4K LSsJKGV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50KTogTGlrZXdpc2UuCi0rCShwcm9iZV9zYWZlX2V2 YWx1YXRlX2F0X3BjKTogVXNlIHRoZSBhYm92ZSBuZXcgZnVuY3Rpb25zLgotKwotIDIwMTMtMDYt MDQgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotIAkqIHBwYy10ZGVwLmggKHBw Y19pbnNuc19tYXRjaF9wYXR0ZXJuKTogVXBkYXRlIHByb3RvdHlwZS4KLS0tLSBzcmMvZ2RiL3By b2JlLmMJMjAxMy8wNS8zMCAxNzozOTozNAkxLjgKLSsrKyBzcmMvZ2RiL3Byb2JlLmMJMjAxMy8w Ni8wNCAxMjo1MDoyMAkxLjkKLUBAIC02MTEsMjggKzYxMSw1NSBAQAotIAotIC8qIFNlZSBjb21t ZW50cyBpbiBwcm9iZS5oLiAgKi8KLSAKLSt1bnNpZ25lZAotK2dldF9wcm9iZV9hcmd1bWVudF9j b3VudCAoc3RydWN0IHByb2JlICpwcm9iZSkKLSt7Ci0rICBjb25zdCBzdHJ1Y3Qgc3ltX3Byb2Jl X2ZucyAqcHJvYmVfZm5zOwotKwotKyAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUgIT0gTlVM TCk7Ci0rICBnZGJfYXNzZXJ0IChwcm9iZS0+b2JqZmlsZS0+c2YgIT0gTlVMTCk7Ci0rCi0rICBw cm9iZV9mbnMgPSBwcm9iZS0+b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnM7Ci0rCi0rICBnZGJf YXNzZXJ0IChwcm9iZV9mbnMgIT0gTlVMTCk7Ci0rCi0rICByZXR1cm4gcHJvYmVfZm5zLT5zeW1f Z2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChwcm9iZSk7Ci0rfQotKwotKy8qIFNlZSBjb21tZW50 cyBpbiBwcm9iZS5oLiAgKi8KLSsKLStzdHJ1Y3QgdmFsdWUgKgotK2V2YWx1YXRlX3Byb2JlX2Fy Z3VtZW50IChzdHJ1Y3QgcHJvYmUgKnByb2JlLCB1bnNpZ25lZCBuKQotK3sKLSsgIGNvbnN0IHN0 cnVjdCBzeW1fcHJvYmVfZm5zICpwcm9iZV9mbnM7Ci0rCi0rICBnZGJfYXNzZXJ0IChwcm9iZS0+ b2JqZmlsZSAhPSBOVUxMKTsKLSsgIGdkYl9hc3NlcnQgKHByb2JlLT5vYmpmaWxlLT5zZiAhPSBO VUxMKTsKLSsKLSsgIHByb2JlX2ZucyA9IHByb2JlLT5vYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zu czsKLSsKLSsgIGdkYl9hc3NlcnQgKHByb2JlX2ZucyAhPSBOVUxMKTsKLSsKLSsgIHJldHVybiBw cm9iZV9mbnMtPnN5bV9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAocHJvYmUsIG4pOwotK30KLSsK LSsvKiBTZWUgY29tbWVudHMgaW4gcHJvYmUuaC4gICovCi0rCi0gc3RydWN0IHZhbHVlICoKLSBw cm9iZV9zYWZlX2V2YWx1YXRlX2F0X3BjIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIHVuc2ln bmVkIG4pCi0gewotICAgc3RydWN0IHByb2JlICpwcm9iZTsKLS0gIGNvbnN0IHN0cnVjdCBzeW1f cHJvYmVfZm5zICpwcm9iZV9mbnM7Ci0gICB1bnNpZ25lZCBuX2FyZ3M7Ci0gCi0gICBwcm9iZSA9 IGZpbmRfcHJvYmVfYnlfcGMgKGdldF9mcmFtZV9wYyAoZnJhbWUpKTsKLSAgIGlmICghcHJvYmUp Ci0gICAgIHJldHVybiBOVUxMOwotIAotLSAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUgIT0g TlVMTCk7Ci0tICBnZGJfYXNzZXJ0IChwcm9iZS0+b2JqZmlsZS0+c2YgIT0gTlVMTCk7Ci0tICBn ZGJfYXNzZXJ0IChwcm9iZS0+b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMgIT0gTlVMTCk7Ci0t Ci0tICBwcm9iZV9mbnMgPSBwcm9iZS0+b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnM7Ci0tICBu X2FyZ3MgPSBwcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHByb2JlKTsK LS0KLSsgIG5fYXJncyA9IGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCAocHJvYmUpOwotICAgaWYg KG4gPj0gbl9hcmdzKQotICAgICByZXR1cm4gTlVMTDsKLSAKLS0gIHJldHVybiBwcm9iZV9mbnMt PnN5bV9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAocHJvYmUsIG4pOwotKyAgcmV0dXJuIGV2YWx1 YXRlX3Byb2JlX2FyZ3VtZW50IChwcm9iZSwgbik7Ci0gfQotIAotIC8qIFNlZSBjb21tZW50IGlu IHByb2JlLmguICAqLwotLS0tIHNyYy9nZGIvcHJvYmUuaAkyMDEzLzAxLzAxIDA2OjMyOjQ5CTEu NAotKysrIHNyYy9nZGIvcHJvYmUuaAkyMDEzLzA2LzA0IDEyOjUwOjIxCTEuNQotQEAgLTIxNCw2 ICsyMTQsMTYgQEAKLSAKLSBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKippbmZvX3By b2Jlc19jbWRsaXN0X2dldCAodm9pZCk7Ci0gCi0rLyogUmV0dXJuIHRoZSBhcmd1bWVudCBjb3Vu dCBvZiB0aGUgc3BlY2lmaWVkIHByb2JlLiAgKi8KLSsKLStleHRlcm4gdW5zaWduZWQgZ2V0X3By b2JlX2FyZ3VtZW50X2NvdW50IChzdHJ1Y3QgcHJvYmUgKnByb2JlKTsKLSsKLSsvKiBFdmFsdWF0 ZSBhcmd1bWVudCBOIG9mIHRoZSBzcGVjaWZpZWQgcHJvYmUuICBOIG11c3QgYmUgYmV0d2VlbiAw Ci0rICAgaW5jbHVzaXZlIGFuZCBnZXRfcHJvYmVfYXJndW1lbnRfY291bnQgZXhjbHVzaXZlLiAg Ki8KLSsKLStleHRlcm4gc3RydWN0IHZhbHVlICpldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAoc3Ry dWN0IHByb2JlICpwcm9iZSwKLSsJCQkJCSAgICAgIHVuc2lnbmVkIG4pOwotKwotIC8qIEEgY29u dmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBmaW5kcyBhIHByb2JlIGF0IHRoZSBQQyBpbiBGUkFNRSBh bmQKLSAgICBldmFsdWF0ZXMgYXJndW1lbnQgTiwgd2l0aCAwIDw9IE4gPCBudW1iZXJfb2ZfYXJn cy4gIElmIHRoZXJlIGlzIG5vCi0gICAgcHJvYmUgYXQgdGhhdCBsb2NhdGlvbiwgb3IgaWYgdGhl IHByb2JlIGRvZXMgbm90IGhhdmUgZW5vdWdoIGFyZ3VtZW50cywKCmRpZmYgLS1naXQgYS9nZGIt ZGxvcGVuLXN0YXAtcHJvYmUtMm9mOS5wYXRjaCBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS0yb2Y5 LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzFhNzlhLi4wMDAwMDAwCi0t LSBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS0yb2Y5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MTgxICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDYvbXNn MDAwMTMuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNi8wNCAxMjo1MDoyMAkx LjE1NjgxCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNi8wNCAxMjo1MzozMwkxLjE1Njgy Ci0jIyAtMSw1ICsxLDI0IEBACi0gMjAxMy0wNi0wNCAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJl ZGhhdC5jb20+Ci0gCi0rCSogb2JqZmlsZXMuaCAoaW5oaWJpdF9zZWN0aW9uX21hcF91cGRhdGVz KTogTmV3IGZ1bmN0aW9uCi0rCWRlY2xhcmF0aW9uLgotKwkocmVzdW1lX3NlY3Rpb25fbWFwX3Vw ZGF0ZXMpOiBMaWtld2lzZS4KLSsJKHJlc3VtZV9zZWN0aW9uX21hcF91cGRhdGVzX2NsZWFudXAp OiBMaWtld2lzZS4KLSsJKiBvYmpmaWxlcy5jIChvYmpmaWxlX3BzcGFjZV9pbmZvKTogUmVtb3Zl ZCBmaWVsZAotKwkib2JqZmlsZXNfY2hhbmdlZF9wIi4gIE5ldyBmaWVsZHMgIm5ld19vYmpmaWxl c19hdmFpbGFibGUiLAotKwkic2VjdGlvbl9tYXBfZGlydHkiIGFuZCAiaW5oaWJpdF91cGRhdGVz Ii4KLSsJKGFsbG9jYXRlX29iamZpbGUpOiBTZXQgbmV3X29iamZpbGVzX2F2YWlsYWJsZS4KLSsJ KGZyZWVfb2JqZmlsZSk6IFNldCBzZWN0aW9uX21hcF9kaXJ0eS4KLSsJKG9iamZpbGVfcmVsb2Nh dGUxKTogTGlrZXdpc2UuCi0rCShpbl9wbHRfc2VjdGlvbik6IExpa2V3aXNlLgotKwkoZmluZF9w Y19zZWN0aW9uKTogVXBkYXRlIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZQotKwlzZWN0 aW9uIG1hcCB3aWxsIGJlIHVwZGF0ZWQuCi0rCShpbmhpYml0X3NlY3Rpb25fbWFwX3VwZGF0ZXMp OiBOZXcgZnVuY3Rpb24uCi0rCShyZXN1bWVfc2VjdGlvbl9tYXBfdXBkYXRlcyk6IExpa2V3aXNl LgotKwkocmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXNfY2xlYW51cCk6IExpa2V3aXNlLgotKwot KzIwMTMtMDYtMDQgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRoYXQuY29tPgotKwotIAkqIHBy b2JlLmggKGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCk6IE5ldyBkZWNsYXJhdGlvbi4KLSAJKGV2 YWx1YXRlX3Byb2JlX2FyZ3VtZW50KTogTGlrZXdpc2UuCi0gCSogcHJvYmUuYyAoZ2V0X3Byb2Jl X2FyZ3VtZW50X2NvdW50KTogTmV3IGZ1bmN0aW9uLgotLS0tIHNyYy9nZGIvb2JqZmlsZXMuYwky MDEzLzA1LzA2IDE5OjE1OjE3CTEuMTYwCi0rKysgc3JjL2dkYi9vYmpmaWxlcy5jCTIwMTMvMDYv MDQgMTI6NTM6MzQJMS4xNjEKLUBAIC02Nyw5ICs2NywxOCBAQAotIAotIHN0cnVjdCBvYmpmaWxl X3BzcGFjZV9pbmZvCi0gewotLSAgaW50IG9iamZpbGVzX2NoYW5nZWRfcDsKLSAgIHN0cnVjdCBv Ympfc2VjdGlvbiAqKnNlY3Rpb25zOwotICAgaW50IG51bV9zZWN0aW9uczsKLSsKLSsgIC8qIE5v bnplcm8gaWYgb2JqZWN0IGZpbGVzIGhhdmUgYmVlbiBhZGRlZCBzaW5jZSB0aGUgc2VjdGlvbiBt YXAKLSsgICAgIHdhcyBsYXN0IHVwZGF0ZWQuICAqLwotKyAgaW50IG5ld19vYmpmaWxlc19hdmFp bGFibGU7Ci0rCi0rICAvKiBOb256ZXJvIGlmIHRoZSBzZWN0aW9uIG1hcCBNVVNUIGJlIHVwZGF0 ZWQgYmVmb3JlIHVzZS4gICovCi0rICBpbnQgc2VjdGlvbl9tYXBfZGlydHk7Ci0rCi0rICAvKiBO b256ZXJvIGlmIHNlY3Rpb24gbWFwIHVwZGF0ZXMgc2hvdWxkIGJlIGluaGliaXRlZCBpZiBwb3Nz aWJsZS4gICovCi0rICBpbnQgaW5oaWJpdF91cGRhdGVzOwotIH07Ci0gCi0gLyogUGVyLXByb2dy YW0tc3BhY2UgZGF0YSBrZXkuICAqLwotQEAgLTMxNyw3ICszMjYsNyBAQAotICAgb2JqZmlsZS0+ ZmxhZ3MgfD0gZmxhZ3M7Ci0gCi0gICAvKiBSZWJ1aWxkIHNlY3Rpb24gbWFwIG5leHQgdGltZSB3 ZSBuZWVkIGl0LiAgKi8KLS0gIGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChvYmpmaWxlLT5wc3Bh Y2UpLT5vYmpmaWxlc19jaGFuZ2VkX3AgPSAxOwotKyAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEg KG9iamZpbGUtPnBzcGFjZSktPm5ld19vYmpmaWxlc19hdmFpbGFibGUgPSAxOwotIAotICAgcmV0 dXJuIG9iamZpbGU7Ci0gfQotQEAgLTY0Niw3ICs2NTUsNyBAQAotICAgb2JzdGFja19mcmVlICgm b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCAwKTsKLSAKLSAgIC8qIFJlYnVpbGQgc2VjdGlvbiBt YXAgbmV4dCB0aW1lIHdlIG5lZWQgaXQuICAqLwotLSAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEg KG9iamZpbGUtPnBzcGFjZSktPm9iamZpbGVzX2NoYW5nZWRfcCA9IDE7Ci0rICBnZXRfb2JqZmls ZV9wc3BhY2VfZGF0YSAob2JqZmlsZS0+cHNwYWNlKS0+c2VjdGlvbl9tYXBfZGlydHkgPSAxOwot IAotICAgeGZyZWUgKG9iamZpbGUpOwotIH0KLUBAIC04MjYsNyArODM1LDcgQEAKLSAgIH0KLSAK LSAgIC8qIFJlYnVpbGQgc2VjdGlvbiBtYXAgbmV4dCB0aW1lIHdlIG5lZWQgaXQuICAqLwotLSAg Z2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKG9iamZpbGUtPnBzcGFjZSktPm9iamZpbGVzX2NoYW5n ZWRfcCA9IDE7Ci0rICBnZXRfb2JqZmlsZV9wc3BhY2VfZGF0YSAob2JqZmlsZS0+cHNwYWNlKS0+ c2VjdGlvbl9tYXBfZGlydHkgPSAxOwotIAotICAgLyogVXBkYXRlIHRoZSB0YWJsZSBpbiBleGVj X29wcywgdXNlZCB0byByZWFkIG1lbW9yeS4gICovCi0gICBBTExfT0JKRklMRV9PU0VDVElPTlMg KG9iamZpbGUsIHMpCi1AQCAtMTI5MSwxMSArMTMwMCwxNCBAQAotIHVwZGF0ZV9zZWN0aW9uX21h cCAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwKLSAJCSAgICBzdHJ1Y3Qgb2JqX3NlY3Rp b24gKioqcG1hcCwgaW50ICpwbWFwX3NpemUpCi0gewotKyAgc3RydWN0IG9iamZpbGVfcHNwYWNl X2luZm8gKnBzcGFjZV9pbmZvOwotICAgaW50IGFsbG9jX3NpemUsIG1hcF9zaXplLCBpOwotICAg c3RydWN0IG9ial9zZWN0aW9uICpzLCAqKm1hcDsKLSAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl OwotIAotLSAgZ2RiX2Fzc2VydCAoZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKHBzcGFjZSktPm9i amZpbGVzX2NoYW5nZWRfcCAhPSAwKTsKLSsgIHBzcGFjZV9pbmZvID0gZ2V0X29iamZpbGVfcHNw YWNlX2RhdGEgKHBzcGFjZSk7Ci0rICBnZGJfYXNzZXJ0IChwc3BhY2VfaW5mby0+c2VjdGlvbl9t YXBfZGlydHkgIT0gMAotKwkgICAgICB8fCBwc3BhY2VfaW5mby0+bmV3X29iamZpbGVzX2F2YWls YWJsZSAhPSAwKTsKLSAKLSAgIG1hcCA9ICpwbWFwOwotICAgeGZyZWUgKG1hcCk7Ci1AQCAtMTM2 NSw3ICsxMzc3LDkgQEAKLSAgICAgcmV0dXJuIHM7Ci0gCi0gICBwc3BhY2VfaW5mbyA9IGdldF9v YmpmaWxlX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwotLSAgaWYgKHBzcGFj ZV9pbmZvLT5vYmpmaWxlc19jaGFuZ2VkX3AgIT0gMCkKLSsgIGlmIChwc3BhY2VfaW5mby0+c2Vj dGlvbl9tYXBfZGlydHkKLSsgICAgICB8fCAocHNwYWNlX2luZm8tPm5ld19vYmpmaWxlc19hdmFp bGFibGUKLSsJICAmJiAhcHNwYWNlX2luZm8tPmluaGliaXRfdXBkYXRlcykpCi0gICAgIHsKLSAg ICAgICB1cGRhdGVfc2VjdGlvbl9tYXAgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSwKLSAJCQkgICZw c3BhY2VfaW5mby0+c2VjdGlvbnMsCi1AQCAtMTM3Myw3ICsxMzg3LDggQEAKLSAKLSAgICAgICAv KiBEb24ndCBuZWVkIHVwZGF0ZXMgdG8gc2VjdGlvbiBtYXAgdW50aWwgb2JqZmlsZXMgYXJlIGFk ZGVkLAotICAgICAgICAgIHJlbW92ZWQgb3IgcmVsb2NhdGVkLiAgKi8KLS0gICAgICBwc3BhY2Vf aW5mby0+b2JqZmlsZXNfY2hhbmdlZF9wID0gMDsKLSsgICAgICBwc3BhY2VfaW5mby0+bmV3X29i amZpbGVzX2F2YWlsYWJsZSA9IDA7Ci0rICAgICAgcHNwYWNlX2luZm8tPnNlY3Rpb25fbWFwX2Rp cnR5ID0gMDsKLSAgICAgfQotIAotICAgLyogVGhlIEMgc3RhbmRhcmQgKElTTy9JRUMgOTg5OTpU QzIpIHJlcXVpcmVzIHRoZSBCQVNFIGFyZ3VtZW50IHRvCi1AQCAtMTQxNCwxNCArMTQyOSwzOCBA QAotIH0KLSAMCi0gCi0tLyogU2V0IG9iamZpbGVzX2NoYW5nZWRfcCBzbyBzZWN0aW9uIG1hcCB3 aWxsIGJlIHJlYnVpbHQgbmV4dCB0aW1lIGl0Ci0rLyogU2V0IHNlY3Rpb25fbWFwX2RpcnR5IHNv IHNlY3Rpb24gbWFwIHdpbGwgYmUgcmVidWlsdCBuZXh0IHRpbWUgaXQKLSAgICBpcyB1c2VkLiAg Q2FsbGVkIGJ5IHJlcmVhZF9zeW1ib2xzLiAgKi8KLSAKLSB2b2lkCi0gb2JqZmlsZXNfY2hhbmdl ZCAodm9pZCkKLSB7Ci0gICAvKiBSZWJ1aWxkIHNlY3Rpb24gbWFwIG5leHQgdGltZSB3ZSBuZWVk IGl0LiAgKi8KLS0gIGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3Bh Y2UpLT5vYmpmaWxlc19jaGFuZ2VkX3AgPSAxOwotKyAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEg KGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSktPnNlY3Rpb25fbWFwX2RpcnR5ID0gMTsKLSt9Ci0rCi0r LyogU2VlIGNvbW1lbnRzIGluIG9iamZpbGVzLmguICAqLwotKwotK3ZvaWQKLStpbmhpYml0X3Nl Y3Rpb25fbWFwX3VwZGF0ZXMgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCi0rewotKyAg Z2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKHBzcGFjZSktPmluaGliaXRfdXBkYXRlcyA9IDE7Ci0r fQotKwotKy8qIFNlZSBjb21tZW50cyBpbiBvYmpmaWxlcy5oLiAgKi8KLSsKLSt2b2lkCi0rcmVz dW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXMgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCi0r ewotKyAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKHBzcGFjZSktPmluaGliaXRfdXBkYXRlcyA9 IDA7Ci0rfQotKwotKy8qIFNlZSBjb21tZW50cyBpbiBvYmpmaWxlcy5oLiAgKi8KLSsKLSt2b2lk Ci0rcmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXNfY2xlYW51cCAodm9pZCAqYXJnKQotK3sKLSsg IHJlc3VtZV9zZWN0aW9uX21hcF91cGRhdGVzIChhcmcpOwotIH0KLSAKLSAvKiBUaGUgZGVmYXVs dCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlICJpdGVyYXRlX292ZXJfb2JqZmlsZXNfaW5fc2VhcmNo X29yZGVyIgotLS0tIHNyYy9nZGIvb2JqZmlsZXMuaAkyMDEzLzA1LzA2IDE5OjE1OjE3CTEuMTA2 Ci0rKysgc3JjL2dkYi9vYmpmaWxlcy5oCTIwMTMvMDYvMDQgMTI6NTM6MzQJMS4xMDcKLUBAIC01 MDEsNiArNTAxLDIyIEBACi0gICAgbW9kdWxlcy4gICovCi0gREVDTEFSRV9SRUdJU1RSWShvYmpm aWxlKTsKLSAKLSsvKiBJbiBub3JtYWwgdXNlLCB0aGUgc2VjdGlvbiBtYXAgd2lsbCBiZSByZWJ1 aWx0IGJ5IGZpbmRfcGNfc2VjdGlvbgotKyAgIGlmIG9iamZpbGVzIGhhdmUgYmVlbiBhZGRlZCwg cmVtb3ZlZCBvciByZWxvY2F0ZWQgc2luY2UgaXQgd2FzIGxhc3QKLSsgICBjYWxsZWQuICBDYWxs aW5nIGluaGliaXRfc2VjdGlvbl9tYXBfdXBkYXRlcyB3aWxsIGluaGliaXQgdGhpcwotKyAgIGJl aGF2aW9yIHVudGlsIHJlc3VtZV9zZWN0aW9uX21hcF91cGRhdGVzIGlzIGNhbGxlZC4gIElmIHlv dSBjYWxsCi0rICAgaW5oaWJpdF9zZWN0aW9uX21hcF91cGRhdGVzIHlvdSBtdXN0IGVuc3VyZSB0 aGF0IGV2ZXJ5IGNhbGwgdG8KLSsgICBmaW5kX3BjX3NlY3Rpb24gaW4gdGhlIGluaGliaXRlZCBy ZWdpb24gcmVsYXRlcyB0byBhIHNlY3Rpb24gdGhhdAotKyAgIGlzIGFscmVhZHkgaW4gdGhlIHNl Y3Rpb24gbWFwIGFuZCBoYXMgbm90IHNpbmNlIGJlZW4gcmVtb3ZlZCBvcgotKyAgIHJlbG9jYXRl ZC4gICovCi0rZXh0ZXJuIHZvaWQgaW5oaWJpdF9zZWN0aW9uX21hcF91cGRhdGVzIChzdHJ1Y3Qg cHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsKLSsKLSsvKiBSZXN1bWUgYXV0b21hdGljYWxseSByZWJ1 aWxkaW5nIHRoZSBzZWN0aW9uIG1hcCBhcyByZXF1aXJlZC4gICovCi0rZXh0ZXJuIHZvaWQgcmVz dW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXMgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpOwot KwotKy8qIFZlcnNpb24gb2YgdGhlIGFib3ZlIHN1aXRhYmxlIGZvciB1c2UgYXMgYSBjbGVhbnVw LiAgKi8KLStleHRlcm4gdm9pZCByZXN1bWVfc2VjdGlvbl9tYXBfdXBkYXRlc19jbGVhbnVwICh2 b2lkICphcmcpOwotKwotIGV4dGVybiB2b2lkIGRlZmF1bHRfaXRlcmF0ZV9vdmVyX29iamZpbGVz X2luX3NlYXJjaF9vcmRlcgotICAgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgIGl0ZXJh dGVfb3Zlcl9vYmpmaWxlc19pbl9zZWFyY2hfb3JkZXJfY2JfZnR5cGUgKmNiLAoKZGlmZiAtLWdp dCBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS0zb2Y5LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXBy b2JlLTNvZjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1MWY0YmQuLjAw MDAwMDAKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTNvZjkucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwyOTggKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAx My0wNi9tc2cwMDAxNC5odG1sCi0KLSMjIyBzcmMvZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cJMjAx My8wNS8zMSAxOToxNDozMwkxLjcyMAotIyMjIHNyYy9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZwky MDEzLzA2LzA0IDEyOjU5OjIwCTEuNzIxCi0jIyAtMSwzICsxLDEyIEBACi0rMjAxMy0wNi0wNCAg R2FyeSBCZW5zb24gIDxnYmVuc29uQHJlZGhhdC5jb20+Ci0rCi0rCSogc2VydmVyLmMgKGhhbmRs ZV9xdWVyeSk6IEFkZCAiYXVnbWVudGVkLWxpYnJhcmllcy1zdnI0LXJlYWQrIgotKwl0byBxU3Vw cG9ydGVkIHJlc3BvbnNlIHdoZW4gYXBwcm9wcmlhdGUuCi0rCShoYW5kbGVfcXhmZXJfbGlicmFy aWVzX3N2cjQpOiBBbGxvdyBxWGZlcjpsaWJyYXJpZXMtc3ZyNDpyZWFkCi0rCXdpdGggbm9uemVy by1sZW5ndGggYW5uZXguCi0rCSogbGludXgtbG93LmMgKGxpbnV4X3F4ZmVyX2xpYnJhcmllc19z dnI0KTogUGFyc2UgYW5kIGhhbmRsZQotKwlhcmd1bWVudHMgc3VwcGxpZWQgaW4gYW5uZXguCi0r Ci0gMjAxMy0wNS0zMSAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgotIAotIAkqIGxpbnV4 LXg4Ni1sb3cuYyAocHNfZ2V0X3RocmVhZF9hcmVhKTogUHJvcGVybHkgZXh0ZW5kIGFkZHJlc3Mg dG8KLS0tLSBzcmMvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEzLzA1LzIzIDE3OjE3OjUw CTEuMjM3Ci0rKysgc3JjL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMJMjAxMy8wNi8wNCAxMjo1 OToyMQkxLjIzOAotQEAgLTU3MjgsNiArNTcyOCwxMiBAQAotICAgICB9OwotICAgY29uc3Qgc3Ry dWN0IGxpbmtfbWFwX29mZnNldHMgKmxtbzsKLSAgIHVuc2lnbmVkIGludCBtYWNoaW5lOwotKyAg aW50IHB0cl9zaXplOwotKyAgQ09SRV9BRERSIGxtX2FkZHIgPSAwLCBsbV9wcmV2ID0gMDsKLSsg IGludCBhbGxvY2F0ZWQgPSAxMDI0OwotKyAgY2hhciAqcDsKLSsgIENPUkVfQUREUiBsX25hbWUs IGxfYWRkciwgbF9sZCwgbF9uZXh0LCBsX3ByZXY7Ci0rICBpbnQgaGVhZGVyX2RvbmUgPSAwOwot IAotICAgaWYgKHdyaXRlYnVmICE9IE5VTEwpCi0gICAgIHJldHVybiAtMjsKLUBAIC01NzM4LDEy OCArNTc0NCwxNDQgQEAKLSAgIHhzbnByaW50ZiAoZmlsZW5hbWUsIHNpemVvZiBmaWxlbmFtZSwg Ii9wcm9jLyVkL2V4ZSIsIHBpZCk7Ci0gICBpc19lbGY2NCA9IGVsZl82NF9maWxlX3AgKGZpbGVu YW1lLCAmbWFjaGluZSk7Ci0gICBsbW8gPSBpc19lbGY2NCA/ICZsbW9fNjRiaXRfb2Zmc2V0cyA6 ICZsbW9fMzJiaXRfb2Zmc2V0czsKLSsgIHB0cl9zaXplID0gaXNfZWxmNjQgPyA4IDogNDsKLSAK LS0gIGlmIChwcml2LT5yX2RlYnVnID09IDApCi0tICAgIHByaXYtPnJfZGVidWcgPSBnZXRfcl9k ZWJ1ZyAocGlkLCBpc19lbGY2NCk7Ci0tCi0tICAvKiBXZSBmYWlsZWQgdG8gZmluZCBEVF9ERUJV Ry4gIFN1Y2ggc2l0dWF0aW9uIHdpbGwgbm90IGNoYW5nZSBmb3IgdGhpcwotLSAgICAgaW5mZXJp b3IgLSBkbyBub3QgcmV0cnkgaXQuICBSZXBvcnQgaXQgdG8gR0RCIGFzIEUwMSwgc2VlIGZvciB0 aGUgcmVhc29ucwotLSAgICAgYXQgdGhlIEdEQiBzb2xpYi1zdnI0LmMgc2lkZS4gICovCi0tICBp ZiAocHJpdi0+cl9kZWJ1ZyA9PSAoQ09SRV9BRERSKSAtMSkKLS0gICAgcmV0dXJuIC0xOwotLQot LSAgaWYgKHByaXYtPnJfZGVidWcgPT0gMCkKLSsgIHdoaWxlIChhbm5leFswXSAhPSAnXDAnKQot ICAgICB7Ci0tICAgICAgZG9jdW1lbnQgPSB4c3RyZHVwICgiPGxpYnJhcnktbGlzdC1zdnI0IHZl cnNpb249XCIxLjBcIi8+XG4iKTsKLSsgICAgICBjb25zdCBjaGFyICpzZXA7Ci0rICAgICAgQ09S RV9BRERSICphZGRycDsKLSsgICAgICBpbnQgbGVuOwotKwotKyAgICAgIHNlcCA9IHN0cmNociAo YW5uZXgsICc9Jyk7Ci0rICAgICAgaWYgKHNlcCA9PSBOVUxMKQotKwlicmVhazsKLSsKLSsgICAg ICBsZW4gPSBzZXAgLSBhbm5leDsKLSsgICAgICBpZiAobGVuID09IDUgJiYgc3RybmNtcCAoYW5u ZXgsICJzdGFydCIsIDUpID09IDApCi0rCWFkZHJwID0gJmxtX2FkZHI7Ci0rICAgICAgZWxzZSBp ZiAobGVuID09IDQgJiYgc3RybmNtcCAoYW5uZXgsICJwcmV2IiwgNCkgPT0gMCkKLSsJYWRkcnAg PSAmbG1fcHJldjsKLSsgICAgICBlbHNlCi0rCXsKLSsJICBhbm5leCA9IHN0cmNociAoc2VwLCAn OycpOwotKwkgIGlmIChhbm5leCA9PSBOVUxMKQotKwkgICAgYnJlYWs7Ci0rCSAgYW5uZXgrKzsK LSsJICBjb250aW51ZTsKLSsJfQotKwotKyAgICAgIGFubmV4ID0gZGVjb2RlX2FkZHJlc3NfdG9f c2VtaWNvbG9uIChhZGRycCwgc2VwICsgMSk7Ci0gICAgIH0KLS0gIGVsc2UKLSsKLSsgIGlmIChs bV9hZGRyID09IDApCi0gICAgIHsKLS0gICAgICBpbnQgYWxsb2NhdGVkID0gMTAyNDsKLS0gICAg ICBjaGFyICpwOwotLSAgICAgIGNvbnN0IGludCBwdHJfc2l6ZSA9IGlzX2VsZjY0ID8gOCA6IDQ7 Ci0tICAgICAgQ09SRV9BRERSIGxtX2FkZHIsIGxtX3ByZXYsIGxfbmFtZSwgbF9hZGRyLCBsX2xk LCBsX25leHQsIGxfcHJldjsKLS0gICAgICBpbnQgcl92ZXJzaW9uLCBoZWFkZXJfZG9uZSA9IDA7 Ci0tCi0tICAgICAgZG9jdW1lbnQgPSB4bWFsbG9jIChhbGxvY2F0ZWQpOwotLSAgICAgIHN0cmNw eSAoZG9jdW1lbnQsICI8bGlicmFyeS1saXN0LXN2cjQgdmVyc2lvbj1cIjEuMFwiIik7Ci0tICAg ICAgcCA9IGRvY3VtZW50ICsgc3RybGVuIChkb2N1bWVudCk7Ci0tCi0tICAgICAgcl92ZXJzaW9u ID0gMDsKLS0gICAgICBpZiAobGludXhfcmVhZF9tZW1vcnkgKHByaXYtPnJfZGVidWcgKyBsbW8t PnJfdmVyc2lvbl9vZmZzZXQsCi0tCQkJICAgICAodW5zaWduZWQgY2hhciAqKSAmcl92ZXJzaW9u LAotLQkJCSAgICAgc2l6ZW9mIChyX3ZlcnNpb24pKSAhPSAwCi0tCSAgfHwgcl92ZXJzaW9uICE9 IDEpCi0rICAgICAgaW50IHJfdmVyc2lvbiA9IDA7Ci0rCi0rICAgICAgaWYgKHByaXYtPnJfZGVi dWcgPT0gMCkKLSsJcHJpdi0+cl9kZWJ1ZyA9IGdldF9yX2RlYnVnIChwaWQsIGlzX2VsZjY0KTsK LSsKLSsgICAgICAvKiBXZSBmYWlsZWQgdG8gZmluZCBEVF9ERUJVRy4gIFN1Y2ggc2l0dWF0aW9u IHdpbGwgbm90IGNoYW5nZQotKwkgZm9yIHRoaXMgaW5mZXJpb3IgLSBkbyBub3QgcmV0cnkgaXQu ICBSZXBvcnQgaXQgdG8gR0RCIGFzCi0rCSBFMDEsIHNlZSBmb3IgdGhlIHJlYXNvbnMgYXQgdGhl IEdEQiBzb2xpYi1zdnI0LmMgc2lkZS4gICovCi0rICAgICAgaWYgKHByaXYtPnJfZGVidWcgPT0g KENPUkVfQUREUikgLTEpCi0rCXJldHVybiAtMTsKLSsKLSsgICAgICBpZiAocHJpdi0+cl9kZWJ1 ZyAhPSAwKQotIAl7Ci0tCSAgd2FybmluZyAoInVuZXhwZWN0ZWQgcl9kZWJ1ZyB2ZXJzaW9uICVk Iiwgcl92ZXJzaW9uKTsKLS0JICBnb3RvIGRvbmU7Ci0rCSAgaWYgKGxpbnV4X3JlYWRfbWVtb3J5 IChwcml2LT5yX2RlYnVnICsgbG1vLT5yX3ZlcnNpb25fb2Zmc2V0LAotKwkJCQkgKHVuc2lnbmVk IGNoYXIgKikgJnJfdmVyc2lvbiwKLSsJCQkJIHNpemVvZiAocl92ZXJzaW9uKSkgIT0gMAotKwkg ICAgICB8fCByX3ZlcnNpb24gIT0gMSkKLSsJICAgIHsKLSsJICAgICAgd2FybmluZyAoInVuZXhw ZWN0ZWQgcl9kZWJ1ZyB2ZXJzaW9uICVkIiwgcl92ZXJzaW9uKTsKLSsJICAgIH0KLSsJICBlbHNl IGlmIChyZWFkX29uZV9wdHIgKHByaXYtPnJfZGVidWcgKyBsbW8tPnJfbWFwX29mZnNldCwKLSsJ CQkJICZsbV9hZGRyLCBwdHJfc2l6ZSkgIT0gMCkKLSsJICAgIHsKLSsJICAgICAgd2FybmluZyAo InVuYWJsZSB0byByZWFkIHJfbWFwIGZyb20gMHglbHgiLAotKwkJICAgICAgIChsb25nKSBwcml2 LT5yX2RlYnVnICsgbG1vLT5yX21hcF9vZmZzZXQpOwotKwkgICAgfQotIAl9Ci0rICAgIH0KLSsK LSsgIGRvY3VtZW50ID0geG1hbGxvYyAoYWxsb2NhdGVkKTsKLSsgIHN0cmNweSAoZG9jdW1lbnQs ICI8bGlicmFyeS1saXN0LXN2cjQgdmVyc2lvbj1cIjEuMFwiIik7Ci0rICBwID0gZG9jdW1lbnQg KyBzdHJsZW4gKGRvY3VtZW50KTsKLSsKLSsgIHdoaWxlIChsbV9hZGRyCi0rCSAmJiByZWFkX29u ZV9wdHIgKGxtX2FkZHIgKyBsbW8tPmxfbmFtZV9vZmZzZXQsCi0rCQkJICAmbF9uYW1lLCBwdHJf c2l6ZSkgPT0gMAotKwkgJiYgcmVhZF9vbmVfcHRyIChsbV9hZGRyICsgbG1vLT5sX2FkZHJfb2Zm c2V0LAotKwkJCSAgJmxfYWRkciwgcHRyX3NpemUpID09IDAKLSsJICYmIHJlYWRfb25lX3B0ciAo bG1fYWRkciArIGxtby0+bF9sZF9vZmZzZXQsCi0rCQkJICAmbF9sZCwgcHRyX3NpemUpID09IDAK LSsJICYmIHJlYWRfb25lX3B0ciAobG1fYWRkciArIGxtby0+bF9wcmV2X29mZnNldCwKLSsJCQkg ICZsX3ByZXYsIHB0cl9zaXplKSA9PSAwCi0rCSAmJiByZWFkX29uZV9wdHIgKGxtX2FkZHIgKyBs bW8tPmxfbmV4dF9vZmZzZXQsCi0rCQkJICAmbF9uZXh0LCBwdHJfc2l6ZSkgPT0gMCkKLSsgICAg ewotKyAgICAgIHVuc2lnbmVkIGNoYXIgbGlibmFtZVtQQVRIX01BWF07Ci0gCi0tICAgICAgaWYg KHJlYWRfb25lX3B0ciAocHJpdi0+cl9kZWJ1ZyArIGxtby0+cl9tYXBfb2Zmc2V0LAotLQkJCSZs bV9hZGRyLCBwdHJfc2l6ZSkgIT0gMCkKLSsgICAgICBpZiAobG1fcHJldiAhPSBsX3ByZXYpCi0g CXsKLS0JICB3YXJuaW5nICgidW5hYmxlIHRvIHJlYWQgcl9tYXAgZnJvbSAweCVseCIsCi0tCQkg ICAobG9uZykgcHJpdi0+cl9kZWJ1ZyArIGxtby0+cl9tYXBfb2Zmc2V0KTsKLS0JICBnb3RvIGRv bmU7Ci0rCSAgd2FybmluZyAoIkNvcnJ1cHRlZCBzaGFyZWQgbGlicmFyeSBsaXN0OiAweCVseCAh PSAweCVseCIsCi0rCQkgICAobG9uZykgbG1fcHJldiwgKGxvbmcpIGxfcHJldik7Ci0rCSAgYnJl YWs7Ci0gCX0KLSAKLS0gICAgICBsbV9wcmV2ID0gMDsKLS0gICAgICB3aGlsZSAocmVhZF9vbmVf cHRyIChsbV9hZGRyICsgbG1vLT5sX25hbWVfb2Zmc2V0LAotLQkJCSAgICZsX25hbWUsIHB0cl9z aXplKSA9PSAwCi0tCSAgICAgJiYgcmVhZF9vbmVfcHRyIChsbV9hZGRyICsgbG1vLT5sX2FkZHJf b2Zmc2V0LAotLQkJCSAgICAgICZsX2FkZHIsIHB0cl9zaXplKSA9PSAwCi0tCSAgICAgJiYgcmVh ZF9vbmVfcHRyIChsbV9hZGRyICsgbG1vLT5sX2xkX29mZnNldCwKLS0JCQkgICAgICAmbF9sZCwg cHRyX3NpemUpID09IDAKLS0JICAgICAmJiByZWFkX29uZV9wdHIgKGxtX2FkZHIgKyBsbW8tPmxf cHJldl9vZmZzZXQsCi0tCQkJICAgICAgJmxfcHJldiwgcHRyX3NpemUpID09IDAKLS0JICAgICAm JiByZWFkX29uZV9wdHIgKGxtX2FkZHIgKyBsbW8tPmxfbmV4dF9vZmZzZXQsCi0tCQkJICAgICAg JmxfbmV4dCwgcHRyX3NpemUpID09IDApCi0rICAgICAgLyogTm90IGNoZWNraW5nIGZvciBlcnJv ciBiZWNhdXNlIHJlYWRpbmcgbWF5IHN0b3AgYmVmb3JlCi0rCSB3ZSd2ZSBnb3QgUEFUSF9NQVgg d29ydGggb2YgY2hhcmFjdGVycy4gICovCi0rICAgICAgbGlibmFtZVswXSA9ICdcMCc7Ci0rICAg ICAgbGludXhfcmVhZF9tZW1vcnkgKGxfbmFtZSwgbGlibmFtZSwgc2l6ZW9mIChsaWJuYW1lKSAt IDEpOwotKyAgICAgIGxpYm5hbWVbc2l6ZW9mIChsaWJuYW1lKSAtIDFdID0gJ1wwJzsKLSsgICAg ICBpZiAobGlibmFtZVswXSAhPSAnXDAnKQotIAl7Ci0tCSAgdW5zaWduZWQgY2hhciBsaWJuYW1l W1BBVEhfTUFYXTsKLSsJICAvKiA2eCB0aGUgc2l6ZSBmb3IgeG1sX2VzY2FwZV90ZXh0IGJlbG93 LiAgKi8KLSsJICBzaXplX3QgbGVuID0gNiAqIHN0cmxlbiAoKGNoYXIgKikgbGlibmFtZSk7Ci0r CSAgY2hhciAqbmFtZTsKLSAKLS0JICBpZiAobG1fcHJldiAhPSBsX3ByZXYpCi0rCSAgaWYgKCFo ZWFkZXJfZG9uZSkKLSAJICAgIHsKLS0JICAgICAgd2FybmluZyAoIkNvcnJ1cHRlZCBzaGFyZWQg bGlicmFyeSBsaXN0OiAweCVseCAhPSAweCVseCIsCi0tCQkgICAgICAgKGxvbmcpIGxtX3ByZXYs IChsb25nKSBsX3ByZXYpOwotLQkgICAgICBicmVhazsKLSsJICAgICAgLyogVGVybWluYXRlIGA8 bGlicmFyeS1saXN0LXN2cjQnLiAgKi8KLSsJICAgICAgKnArKyA9ICc+JzsKLSsJICAgICAgaGVh ZGVyX2RvbmUgPSAxOwotIAkgICAgfQotIAotLQkgIC8qIE5vdCBjaGVja2luZyBmb3IgZXJyb3Ig YmVjYXVzZSByZWFkaW5nIG1heSBzdG9wIGJlZm9yZQotLQkgICAgIHdlJ3ZlIGdvdCBQQVRIX01B WCB3b3J0aCBvZiBjaGFyYWN0ZXJzLiAgKi8KLS0JICBsaWJuYW1lWzBdID0gJ1wwJzsKLS0JICBs aW51eF9yZWFkX21lbW9yeSAobF9uYW1lLCBsaWJuYW1lLCBzaXplb2YgKGxpYm5hbWUpIC0gMSk7 Ci0tCSAgbGlibmFtZVtzaXplb2YgKGxpYm5hbWUpIC0gMV0gPSAnXDAnOwotLQkgIGlmIChsaWJu YW1lWzBdICE9ICdcMCcpCi0rCSAgd2hpbGUgKGFsbG9jYXRlZCA8IHAgLSBkb2N1bWVudCArIGxl biArIDIwMCkKLSAJICAgIHsKLS0JICAgICAgLyogNnggdGhlIHNpemUgZm9yIHhtbF9lc2NhcGVf dGV4dCBiZWxvdy4gICovCi0tCSAgICAgIHNpemVfdCBsZW4gPSA2ICogc3RybGVuICgoY2hhciAq KSBsaWJuYW1lKTsKLS0JICAgICAgY2hhciAqbmFtZTsKLS0KLS0JICAgICAgaWYgKCFoZWFkZXJf ZG9uZSkKLS0JCXsKLS0JCSAgLyogVGVybWluYXRlIGA8bGlicmFyeS1saXN0LXN2cjQnLiAgKi8K LS0JCSAgKnArKyA9ICc+JzsKLS0JCSAgaGVhZGVyX2RvbmUgPSAxOwotLQkJfQotLQotLQkgICAg ICB3aGlsZSAoYWxsb2NhdGVkIDwgcCAtIGRvY3VtZW50ICsgbGVuICsgMjAwKQotLQkJewotLQkJ ICAvKiBFeHBhbmQgdG8gZ3VhcmFudGVlIHN1ZmZpY2llbnQgc3RvcmFnZS4gICovCi0tCQkgIHVp bnRwdHJfdCBkb2N1bWVudF9sZW4gPSBwIC0gZG9jdW1lbnQ7Ci0tCi0tCQkgIGRvY3VtZW50ID0g eHJlYWxsb2MgKGRvY3VtZW50LCAyICogYWxsb2NhdGVkKTsKLS0JCSAgYWxsb2NhdGVkICo9IDI7 Ci0tCQkgIHAgPSBkb2N1bWVudCArIGRvY3VtZW50X2xlbjsKLS0JCX0KLS0KLS0JICAgICAgbmFt ZSA9IHhtbF9lc2NhcGVfdGV4dCAoKGNoYXIgKikgbGlibmFtZSk7Ci0tCSAgICAgIHAgKz0gc3By aW50ZiAocCwgIjxsaWJyYXJ5IG5hbWU9XCIlc1wiIGxtPVwiMHglbHhcIiAiCi0tCQkJICAgICAg ICJsX2FkZHI9XCIweCVseFwiIGxfbGQ9XCIweCVseFwiLz4iLAotLQkJCSAgICBuYW1lLCAodW5z aWduZWQgbG9uZykgbG1fYWRkciwKLS0JCQkgICAgKHVuc2lnbmVkIGxvbmcpIGxfYWRkciwgKHVu c2lnbmVkIGxvbmcpIGxfbGQpOwotLQkgICAgICBmcmVlIChuYW1lKTsKLS0JICAgIH0KLS0JICBl bHNlIGlmIChsbV9wcmV2ID09IDApCi0tCSAgICB7Ci0tCSAgICAgIHNwcmludGYgKHAsICIgbWFp bi1sbT1cIjB4JWx4XCIiLCAodW5zaWduZWQgbG9uZykgbG1fYWRkcik7Ci0tCSAgICAgIHAgPSBw ICsgc3RybGVuIChwKTsKLS0JICAgIH0KLSsJICAgICAgLyogRXhwYW5kIHRvIGd1YXJhbnRlZSBz dWZmaWNpZW50IHN0b3JhZ2UuICAqLwotKwkgICAgICB1aW50cHRyX3QgZG9jdW1lbnRfbGVuID0g cCAtIGRvY3VtZW50OwotIAotLQkgIGlmIChsX25leHQgPT0gMCkKLS0JICAgIGJyZWFrOwotKwkg ICAgICBkb2N1bWVudCA9IHhyZWFsbG9jIChkb2N1bWVudCwgMiAqIGFsbG9jYXRlZCk7Ci0rCSAg ICAgIGFsbG9jYXRlZCAqPSAyOwotKwkgICAgICBwID0gZG9jdW1lbnQgKyBkb2N1bWVudF9sZW47 Ci0rCSAgICB9Ci0gCi0tCSAgbG1fcHJldiA9IGxtX2FkZHI7Ci0tCSAgbG1fYWRkciA9IGxfbmV4 dDsKLSsJICBuYW1lID0geG1sX2VzY2FwZV90ZXh0ICgoY2hhciAqKSBsaWJuYW1lKTsKLSsJICBw ICs9IHNwcmludGYgKHAsICI8bGlicmFyeSBuYW1lPVwiJXNcIiBsbT1cIjB4JWx4XCIgIgotKwkJ CSJsX2FkZHI9XCIweCVseFwiIGxfbGQ9XCIweCVseFwiLz4iLAotKwkJCW5hbWUsICh1bnNpZ25l ZCBsb25nKSBsbV9hZGRyLAotKwkJCSh1bnNpZ25lZCBsb25nKSBsX2FkZHIsICh1bnNpZ25lZCBs b25nKSBsX2xkKTsKLSsJICBmcmVlIChuYW1lKTsKLSAJfQotLSAgICBkb25lOgotLSAgICAgIGlm ICghaGVhZGVyX2RvbmUpCi0rICAgICAgZWxzZSBpZiAobG1fcHJldiA9PSAwKQotIAl7Ci0tCSAg LyogRW1wdHkgbGlzdDsgdGVybWluYXRlIGA8bGlicmFyeS1saXN0LXN2cjQnLiAgKi8KLS0JICBz dHJjcHkgKHAsICIvPiIpOwotKwkgIHNwcmludGYgKHAsICIgbWFpbi1sbT1cIjB4JWx4XCIiLCAo dW5zaWduZWQgbG9uZykgbG1fYWRkcik7Ci0rCSAgcCA9IHAgKyBzdHJsZW4gKHApOwotIAl9Ci0t ICAgICAgZWxzZQotLQlzdHJjcHkgKHAsICI8L2xpYnJhcnktbGlzdC1zdnI0PiIpOwotKwotKyAg ICAgIGxtX3ByZXYgPSBsbV9hZGRyOwotKyAgICAgIGxtX2FkZHIgPSBsX25leHQ7Ci0gICAgIH0K LSAKLSsgIGlmICghaGVhZGVyX2RvbmUpCi0rICAgIHsKLSsgICAgICAvKiBFbXB0eSBsaXN0OyB0 ZXJtaW5hdGUgYDxsaWJyYXJ5LWxpc3Qtc3ZyNCcuICAqLwotKyAgICAgIHN0cmNweSAocCwgIi8+ Iik7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgc3RyY3B5IChwLCAiPC9saWJyYXJ5LWxpc3Qtc3Zy ND4iKTsKLSsKLSAgIGRvY3VtZW50X2xlbiA9IHN0cmxlbiAoZG9jdW1lbnQpOwotICAgaWYgKG9m ZnNldCA8IGRvY3VtZW50X2xlbikKLSAgICAgZG9jdW1lbnRfbGVuIC09IG9mZnNldDsKLS0tLSBz cmMvZ2RiL2dkYnNlcnZlci9zZXJ2ZXIuYwkyMDEzLzA1LzI0IDExOjI4OjA2CTEuMTkxCi0rKysg c3JjL2dkYi9nZGJzZXJ2ZXIvc2VydmVyLmMJMjAxMy8wNi8wNCAxMjo1OToyMQkxLjE5MgotQEAg LTExMTUsOCArMTExNSw3IEBACi0gICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLSAgICAgcmV0dXJu IC0yOwotIAotLSAgaWYgKGFubmV4WzBdICE9ICdcMCcgfHwgIXRhcmdldF9ydW5uaW5nICgpCi0t ICAgICAgfHwgdGhlX3RhcmdldC0+cXhmZXJfbGlicmFyaWVzX3N2cjQgPT0gTlVMTCkKLSsgIGlm ICghdGFyZ2V0X3J1bm5pbmcgKCkgfHwgdGhlX3RhcmdldC0+cXhmZXJfbGlicmFyaWVzX3N2cjQg PT0gTlVMTCkKLSAgICAgcmV0dXJuIC0xOwotIAotICAgcmV0dXJuIHRoZV90YXJnZXQtPnF4ZmVy X2xpYnJhcmllc19zdnI0IChhbm5leCwgcmVhZGJ1Ziwgd3JpdGVidWYsIG9mZnNldCwgbGVuKTsK LUBAIC0xNzQzLDcgKzE3NDIsOCBAQAotIAkgICAgICAgUEJVRlNJWiAtIDEpOwotIAotICAgICAg IGlmICh0aGVfdGFyZ2V0LT5xeGZlcl9saWJyYXJpZXNfc3ZyNCAhPSBOVUxMKQotLQlzdHJjYXQg KG93bl9idWYsICI7cVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCsiKTsKLSsJc3RyY2F0IChvd25f YnVmLCAiO3FYZmVyOmxpYnJhcmllcy1zdnI0OnJlYWQrIgotKwkJIjthdWdtZW50ZWQtbGlicmFy aWVzLXN2cjQtcmVhZCsiKTsKLSAgICAgICBlbHNlCi0gCXsKLSAJICAvKiBXZSBkbyBub3QgaGF2 ZSBhbnkgaG9vayB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBub24tU1ZSNCB0YXJnZXQKCmRpZmYg LS1naXQgYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUtNG9mOS5wYXRjaCBiL2dkYi1kbG9wZW4tc3Rh cC1wcm9iZS00b2Y5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTljNTgx Li4wMDAwMDAwCi0tLSBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS00b2Y5LnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMzUgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMv MjAxMy0wNi9tc2cwMDAxNS5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA0 IDEyOjUzOjMzCTEuMTU2ODIKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDEzOjAy OjE1CTEuMTU2ODMKLSMjIC0xLDUgKzEsOSBAQAotIDIwMTMtMDYtMDQgIEdhcnkgQmVuc29uICA8 Z2JlbnNvbkByZWRoYXQuY29tPgotIAotKwkqIE5FV1M6IFVwZGF0ZS4KLSsKLSsyMDEzLTA2LTA0 ICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4KLSsKLSAJKiBvYmpmaWxlcy5oIChp bmhpYml0X3NlY3Rpb25fbWFwX3VwZGF0ZXMpOiBOZXcgZnVuY3Rpb24KLSAJZGVjbGFyYXRpb24u Ci0gCShyZXN1bWVfc2VjdGlvbl9tYXBfdXBkYXRlcyk6IExpa2V3aXNlLgotSW5kZXg6IGdkYi03 LjYvZ2RiL05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL05FV1MJMjAxMy0w Ni0xMCAxNDoyNzowMi4wNzExODQxNTMgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9ORVdTCTIwMTMt MDYtMTAgMTQ6Mjg6MzQuMzkxMTQ1MzM5ICswMjAwCi1AQCAtNCw2ICs0LDE2IEBACi0gKiBOZXds eSBpbnN0YWxsZWQgJHByZWZpeC9iaW4vZ2NvcmUgYWN0cyBhcyBhIHNoZWxsIGludGVyZmFjZSBm b3IgdGhlCi0gICBHREIgY29tbWFuZCBnY29yZS4KLSAKLSsqIE5ldyByZW1vdGUgcGFja2V0cwot KwotK3FYZmVyOmxpYnJhcmllcy1zdnI0OnJlYWQncyBhbm5leAotKyAgVGhlIHByZXZpb3VzbHkg dW51c2VkIGFubmV4IG9mIHRoZSBxWGZlcjpsaWJyYXJpZXMtc3ZyNDpyZWFkIHBhY2tldAotKyAg aXMgbm93IHVzZWQgdG8gc3VwcG9ydCBwYXNzaW5nIGFuIGFyZ3VtZW50IGxpc3QuICBUaGUgcmVt b3RlIHN0dWIKLSsgIHJlcG9ydHMgc3VwcG9ydCBmb3IgdGhpcyBhcmd1bWVudCBsaXN0IHRvIEdE QidzIHFTdXBwb3J0ZWQgcXVlcnkuCi0rICBUaGUgZGVmaW5lZCBhcmd1bWVudHMgYXJlICJzdGFy dCIgYW5kICJwcmV2IiwgdXNlZCB0byByZWR1Y2Ugd29yawotKyAgbmVjZXNzYXJ5IGZvciBsaWJy YXJ5IGxpc3QgdXBkYXRpbmcsIHJlc3VsdGluZyBpbiBzaWduaWZpY2FudAotKyAgc3BlZWR1cC4K LSsKLSAqKiogQ2hhbmdlcyBpbiBHREIgNy42Ci0gCi0gKiBUYXJnZXQgcmVjb3JkIGhhcyBiZWVu IHJlbmFtZWQgdG8gcmVjb3JkLWZ1bGwuCgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFwLXBy b2JlLTVvZjkucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtNW9mOS5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFiNTk4Zi4uMDAwMDAwMAotLS0gYS9nZGItZGxvcGVu LXN0YXAtcHJvYmUtNW9mOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLWh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDYvbXNnMDAwMTYuaHRtbAotCi0j IyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDUvMjQgMDQ6NTA6MjYJMS4xNDYzCi0jIyMg c3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDYvMDQgMTM6MDc6NDUJMS4xNDY0Ci0jIyAtMSwz ICsxLDEyIEBACi0rMjAxMy0wNi0wNCBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4K LSsKLSsJKiBnZGIudGV4aW5mbyAoR2VuZXJhbCBRdWVyeSBQYWNrZXRzL3FTdXBwb3J0ZWQpOiBB ZGRlZAotKwkicVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCIgYW5kICJhdWdtZW50ZWQtbGlicmFy aWVzLXN2cjQtcmVhZCIuCi0rCXRvIHRoZSB0YWJsZSBvZiBjdXJyZW50bHkgZGVmaW5lZCBzdHVi IGZlYXR1cmVzLgotKwlBZGRlZCBhIG1vcmUgZGV0YWlsZWQgZW50cnkgZm9yICJhdWdtZW50ZWQt bGlicmFyaWVzLXN2cjQtcmVhZCIuCi0rCShHZW5lcmFsIFF1ZXJ5IFBhY2tldHMvcVhmZXI6bGli cmFyaWVzLXN2cjQ6cmVhZCk6IERvY3VtZW50ZWQKLSsJdGhlIGF1Z21lbnRlZCBmb3JtIG9mIHRo aXMgcGFja2V0LgotKwotIDIwMTMtMDUtMjMgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGFk YWNvcmUuY29tPgotIAotIAkqIGdkYi50ZXhpbmZvIChTeXN0ZW0td2lkZSBDb25maWd1cmF0aW9u IFNjcmlwdHMpOiBSZW5hbWVzCi0tLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMy8wNS8y NCAwNDo1MDoyNgkxLjEwOTMKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEzLzA2LzA0 IDEzOjA3OjQ1CTEuMTA5NAotQEAgLTM4NTk0LDYgKzM4NTk0LDE2IEBACi0gQHRhYiBAc2FtcHst fQotIEB0YWIgWWVzCi0gCi0rQGl0ZW0gQHNhbXB7cVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZH0K LStAdGFiIE5vCi0rQHRhYiBAc2FtcHstfQotK0B0YWIgWWVzCi0rCi0rQGl0ZW0gQHNhbXB7YXVn bWVudGVkLWxpYnJhcmllcy1zdnI0LXJlYWR9Ci0rQHRhYiBObwotK0B0YWIgQHNhbXB7LX0KLStA dGFiIE5vCi0rCi0gQGl0ZW0gQHNhbXB7cVhmZXI6bWVtb3J5LW1hcDpyZWFkfQotIEB0YWIgTm8K LSBAdGFiIEBzYW1wey19Ci1AQCAtMzg3NzAsNiArMzg3ODAsMTEgQEAKLSBUaGUgcmVtb3RlIHN0 dWIgdW5kZXJzdGFuZHMgdGhlIEBzYW1we3FYZmVyOmxpYnJhcmllcy1zdnI0OnJlYWR9IHBhY2tl dAotIChAcHhyZWZ7cVhmZXIgc3ZyNCBsaWJyYXJ5IGxpc3QgcmVhZH0pLgotIAotK0BpdGVtIGF1 Z21lbnRlZC1saWJyYXJpZXMtc3ZyNC1yZWFkCi0rVGhlIHJlbW90ZSBzdHViIHVuZGVyc3RhbmRz IHRoZSBhdWdtZW50ZWQgZm9ybSBvZiB0aGUKLStAc2FtcHtxWGZlcjpsaWJyYXJpZXMtc3ZyNDpy ZWFkfSBwYWNrZXQKLSsoQHB4cmVme3FYZmVyIHN2cjQgbGlicmFyeSBsaXN0IHJlYWR9KS4KLSsK LSBAaXRlbSBxWGZlcjptZW1vcnktbWFwOnJlYWQKLSBUaGUgcmVtb3RlIHN0dWIgdW5kZXJzdGFu ZHMgdGhlIEBzYW1we3FYZmVyOm1lbW9yeS1tYXA6cmVhZH0gcGFja2V0Ci0gKEBweHJlZntxWGZl ciBtZW1vcnkgbWFwIHJlYWR9KS4KLUBAIC0zOTA2NSw3ICszOTA4MCwxMCBAQAotIEBhbmNob3J7 cVhmZXIgc3ZyNCBsaWJyYXJ5IGxpc3QgcmVhZH0KLSBBY2Nlc3MgdGhlIHRhcmdldCdzIGxpc3Qg b2YgbG9hZGVkIGxpYnJhcmllcyB3aGVuIHRoZSB0YXJnZXQgaXMgYW4gU1ZSNAotIHBsYXRmb3Jt LiAgQHhyZWZ7TGlicmFyeSBMaXN0IEZvcm1hdCBmb3IgU1ZSNCBUYXJnZXRzfS4gIFRoZSBhbm5l eCBwYXJ0Ci0tb2YgdGhlIGdlbmVyaWMgQHNhbXB7cVhmZXJ9IHBhY2tldCBtdXN0IGJlIGVtcHR5 IChAcHhyZWZ7cVhmZXIgcmVhZH0pLgotK29mIHRoZSBnZW5lcmljIEBzYW1we3FYZmVyfSBwYWNr ZXQgbXVzdCBiZSBlbXB0eSB1bmxlc3MgdGhlIHJlbW90ZQotK3N0dWIgaW5kaWNhdGVkIGl0IHN1 cHBvcnRzIHRoZSBhdWdtZW50ZWQgZm9ybSBvZiB0aGlzIHBhY2tldAotK2J5IHN1cHBseWluZyBh biBhcHByb3ByaWF0ZSBAc2FtcHtxU3VwcG9ydGVkfSByZXNwb25zZQotKyhAcHhyZWZ7cVhmZXIg cmVhZH0sIEByZWZ7cVN1cHBvcnRlZH0pLgotIAotIFRoaXMgcGFja2V0IGlzIG9wdGlvbmFsIGZv ciBiZXR0ZXIgcGVyZm9ybWFuY2Ugb24gU1ZSNCB0YXJnZXRzLiAgCi0gQHZhbHVle0dEQk59IHVz ZXMgbWVtb3J5IHJlYWQgcGFja2V0cyB0byByZWFkIHRoZSBTVlI0IGxpYnJhcnkgbGlzdCBvdGhl cndpc2UuCi1AQCAtMzkwNzMsNiArMzkwOTEsMzAgQEAKLSBUaGlzIHBhY2tldCBpcyBub3QgcHJv YmVkIGJ5IGRlZmF1bHQ7IHRoZSByZW1vdGUgc3R1YiBtdXN0IHJlcXVlc3QgaXQsCi0gYnkgc3Vw cGx5aW5nIGFuIGFwcHJvcHJpYXRlIEBzYW1we3FTdXBwb3J0ZWR9IHJlc3BvbnNlIChAcHhyZWZ7 cVN1cHBvcnRlZH0pLgotIAotK0lmIHRoZSByZW1vdGUgc3R1YiBpbmRpY2F0ZXMgaXQgc3VwcG9y dHMgdGhlIGF1Z21lbnRlZCBmb3JtIG9mIHRoaXMKLStwYWNrZXQgdGhlbiB0aGUgYW5uZXggcGFy dCBvZiB0aGUgZ2VuZXJpYyBAc2FtcHtxWGZlcn0gcGFja2V0IG1heQotK2NvbnRhaW4gYSBzZW1p Y29sb24tc2VwYXJhdGVkIGxpc3Qgb2YgQHNhbXB7QHZhcntuYW1lfT1AdmFye3ZhbHVlfX0KLSth cmd1bWVudHMuICBUaGUgY3VycmVudGx5IHN1cHBvcnRlZCBhcmd1bWVudHMgYXJlOgotKwotK0B0 YWJsZSBAY29kZQotK0BpdGVtIHN0YXJ0PUB2YXJ7YWRkcmVzc30KLStBIGhleGFkZWNpbWFsIG51 bWJlciBzcGVjaWZ5aW5nIHRoZSBhZGRyZXNzIG9mIHRoZSBAc2FtcHtzdHJ1Y3QKLStsaW5rX21h cH0gdG8gc3RhcnQgcmVhZGluZyB0aGUgbGlicmFyeSBsaXN0IGZyb20uICBJZiB1bnNldCBvciB6 ZXJvCi0rdGhlbiB0aGUgZmlyc3QgQHNhbXB7c3RydWN0IGxpbmtfbWFwfSBpbiB0aGUgbGlicmFy eSBsaXN0IHdpbGwgYmUKLStjaG9zZW4gYXMgdGhlIHN0YXJ0aW5nIHBvaW50LgotKwotK0BpdGVt IHByZXY9QHZhcnthZGRyZXNzfQotK0EgaGV4YWRlY2ltYWwgbnVtYmVyIHNwZWNpZnlpbmcgdGhl IGFkZHJlc3Mgb2YgdGhlIEBzYW1we3N0cnVjdAotK2xpbmtfbWFwfSBpbW1lZGlhdGVseSBwcmVj ZWRpbmcgdGhlIEBzYW1we3N0cnVjdCBsaW5rX21hcH0KLStzcGVjaWZpZWQgYnkgdGhlIEBzYW1w e3N0YXJ0fSBhcmd1bWVudC4gIElmIHVuc2V0IG9yIHplcm8gdGhlbgotK3RoZSByZW1vdGUgc3R1 YiB3aWxsIGV4cGVjdCB0aGF0IG5vIEBzYW1we3N0cnVjdCBsaW5rX21hcH0KLStleGlzdHMgcHJp b3IgdG8gdGhlIHN0YXJ0aW5nIHBvaW50LgotKwotK0BlbmQgdGFibGUKLSsKLStBcmd1bWVudHMg dGhhdCBhcmUgbm90IHVuZGVyc3Rvb2QgYnkgdGhlIHJlbW90ZSBzdHViIHdpbGwgYmUgc2lsZW50 bHkKLStpZ25vcmVkLgotKwotIEBpdGVtIHFYZmVyOm1lbW9yeS1tYXA6cmVhZDo6QHZhcntvZmZz ZXR9LEB2YXJ7bGVuZ3RofQotIEBhbmNob3J7cVhmZXIgbWVtb3J5IG1hcCByZWFkfQotIEFjY2Vz cyB0aGUgdGFyZ2V0J3MgQGRmbnttZW1vcnktbWFwfS4gIEB4cmVme01lbW9yeSBNYXAgRm9ybWF0 fS4gIFRoZQoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS02b2Y5LnBhdGNoIGIv Z2RiLWRsb3Blbi1zdGFwLXByb2JlLTZvZjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDFhMWMzMzguLjAwMDAwMDAKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTZvZjku cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1jdnMvMjAxMy0wNi9tc2cwMDAxNy5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5n ZUxvZwkyMDEzLzA2LzA0IDEzOjAyOjE1CTEuMTU2ODMKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEzLzA2LzA0IDEzOjEwOjUzCTEuMTU2ODQKLSMjIC0xLDUgKzEsMjEgQEAKLSAyMDEzLTA2LTA0 ICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4KLSAKLSsJKiB0YXJnZXQuaCAodGFy Z2V0X29wcyk6IE5ldyBmaWVsZAotKwkidG9fYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQi LgotKwkodGFyZ2V0X2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkKTogTmV3IG1hY3JvLgot KwkqIHRhcmdldC5jICh1cGRhdGVfY3VycmVudF90YXJnZXQpOiBIYW5kbGUKLSsJdG9fYXVnbWVu dGVkX2xpYnJhcmllc19zdnI0X3JlYWQuCi0rCSogcmVtb3RlLmMgKHJlbW90ZV9zdGF0ZSk6IE5l dyBmaWVsZAotKwkiYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQiLgotKwkocmVtb3RlX2F1 Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkX2ZlYXR1cmUpOiBOZXcgZnVuY3Rpb24uCi0rCShy ZW1vdGVfcHJvdG9jb2xfZmVhdHVyZXMpOiBBZGQgZW50cnkgZm9yCi0rCSJhdWdtZW50ZWQtbGli cmFyaWVzLXN2cjQtcmVhZCIuCi0rCShyZW1vdGVfYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3Jl YWQpOiBOZXcgZnVuY3Rpb24uCi0rCShpbml0X3JlbW90ZV9vcHMpOiBJbml0aWFsaXplCi0rCXJl bW90ZV9vcHMudG9fYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQuCi0rCi0rMjAxMy0wNi0w NCAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJlZGhhdC5jb20+Ci0rCi0gCSogTkVXUzogVXBkYXRl LgotIAotIDIwMTMtMDYtMDQgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRoYXQuY29tPgotLS0t IHNyYy9nZGIvcmVtb3RlLmMJMjAxMy8wNS8zMCAwOToyOToxOAkxLjU1MgotKysrIHNyYy9nZGIv cmVtb3RlLmMJMjAxMy8wNi8wNCAxMzoxMDo1MwkxLjU1MwotQEAgLTM2MSw2ICszNjEsMTAgQEAK LSAgIC8qIFRydWUgaWYgdGhlIHN0dWIgY2FuIGNvbGxlY3Qgc3RyaW5ncyB1c2luZyB0cmFjZW56 IGJ5dGVjb2RlLiAgKi8KLSAgIGludCBzdHJpbmdfdHJhY2luZzsKLSAKLSsgIC8qIFRydWUgaWYg dGhlIHN0dWIgc3VwcG9ydHMgcVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCB3aXRoIGEKLSsgICAg IG5vbi1lbXB0eSBhbm5leC4gICovCi0rICBpbnQgYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3Jl YWQ7Ci0rCi0gICAvKiBOb256ZXJvIGlmIHRoZSB1c2VyIGhhcyBwcmVzc2VkIEN0cmwtQywgYnV0 IHRoZSB0YXJnZXQgaGFzbid0Ci0gICAgICByZXNwb25kZWQgdG8gdGhhdC4gICovCi0gICBpbnQg Y3RybGNfcGVuZGluZ19wOwotQEAgLTM5NDksNiArMzk1MywxNiBAQAotICAgcnMtPnN0cmluZ190 cmFjaW5nID0gKHN1cHBvcnQgPT0gUEFDS0VUX0VOQUJMRSk7Ci0gfQotIAotK3N0YXRpYyB2b2lk Ci0rcmVtb3RlX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkX2ZlYXR1cmUKLSsgIChjb25z dCBzdHJ1Y3QgcHJvdG9jb2xfZmVhdHVyZSAqZmVhdHVyZSwKLSsgICBlbnVtIHBhY2tldF9zdXBw b3J0IHN1cHBvcnQsIGNvbnN0IGNoYXIgKnZhbHVlKQotK3sKLSsgIHN0cnVjdCByZW1vdGVfc3Rh dGUgKnJzID0gZ2V0X3JlbW90ZV9zdGF0ZSAoKTsKLSsKLSsgIHJzLT5hdWdtZW50ZWRfbGlicmFy aWVzX3N2cjRfcmVhZCA9IChzdXBwb3J0ID09IFBBQ0tFVF9FTkFCTEUpOwotK30KLSsKLSBzdGF0 aWMgc3RydWN0IHByb3RvY29sX2ZlYXR1cmUgcmVtb3RlX3Byb3RvY29sX2ZlYXR1cmVzW10gPSB7 Ci0gICB7ICJQYWNrZXRTaXplIiwgUEFDS0VUX0RJU0FCTEUsIHJlbW90ZV9wYWNrZXRfc2l6ZSwg LTEgfSwKLSAgIHsgInFYZmVyOmF1eHY6cmVhZCIsIFBBQ0tFVF9ESVNBQkxFLCByZW1vdGVfc3Vw cG9ydGVkX3BhY2tldCwKLUBAIC0zOTU5LDYgKzM5NzMsOCBAQAotICAgICBQQUNLRVRfcVhmZXJf bGlicmFyaWVzIH0sCi0gICB7ICJxWGZlcjpsaWJyYXJpZXMtc3ZyNDpyZWFkIiwgUEFDS0VUX0RJ U0FCTEUsIHJlbW90ZV9zdXBwb3J0ZWRfcGFja2V0LAotICAgICBQQUNLRVRfcVhmZXJfbGlicmFy aWVzX3N2cjQgfSwKLSsgIHsgImF1Z21lbnRlZC1saWJyYXJpZXMtc3ZyNC1yZWFkIiwgUEFDS0VU X0RJU0FCTEUsCi0rICAgIHJlbW90ZV9hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZF9mZWF0 dXJlLCAtMSB9LAotICAgeyAicVhmZXI6bWVtb3J5LW1hcDpyZWFkIiwgUEFDS0VUX0RJU0FCTEUs IHJlbW90ZV9zdXBwb3J0ZWRfcGFja2V0LAotICAgICBQQUNLRVRfcVhmZXJfbWVtb3J5X21hcCB9 LAotICAgeyAicVhmZXI6c3B1OnJlYWQiLCBQQUNLRVRfRElTQUJMRSwgcmVtb3RlX3N1cHBvcnRl ZF9wYWNrZXQsCi1AQCAtMTE0MzksNiArMTE0NTUsMTQgQEAKLSAgIHJldHVybiBidHJhY2U7Ci0g fQotIAotK3N0YXRpYyBpbnQKLStyZW1vdGVfYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQg KHZvaWQpCi0rewotKyAgc3RydWN0IHJlbW90ZV9zdGF0ZSAqcnMgPSBnZXRfcmVtb3RlX3N0YXRl ICgpOwotKwotKyAgcmV0dXJuIHJzLT5hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZDsKLSt9 Ci0rCi0gc3RhdGljIHZvaWQKLSBpbml0X3JlbW90ZV9vcHMgKHZvaWQpCi0gewotQEAgLTExNTYx LDYgKzExNTg1LDggQEAKLSAgIHJlbW90ZV9vcHMudG9fZGlzYWJsZV9idHJhY2UgPSByZW1vdGVf ZGlzYWJsZV9idHJhY2U7Ci0gICByZW1vdGVfb3BzLnRvX3RlYXJkb3duX2J0cmFjZSA9IHJlbW90 ZV90ZWFyZG93bl9idHJhY2U7Ci0gICByZW1vdGVfb3BzLnRvX3JlYWRfYnRyYWNlID0gcmVtb3Rl X3JlYWRfYnRyYWNlOwotKyAgcmVtb3RlX29wcy50b19hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRf cmVhZCA9Ci0rICAgIHJlbW90ZV9hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZDsKLSB9Ci0g Ci0gLyogU2V0IHVwIHRoZSBleHRlbmRlZCByZW1vdGUgdmVjdG9yIGJ5IG1ha2luZyBhIGNvcHkg b2YgdGhlIHN0YW5kYXJkCi0tLS0gc3JjL2dkYi90YXJnZXQuYwkyMDEzLzA1LzE0IDIwOjMzOjM2 CTEuMzM1Ci0rKysgc3JjL2dkYi90YXJnZXQuYwkyMDEzLzA2LzA0IDEzOjEwOjUzCTEuMzM2Ci1A QCAtNzMxLDYgKzczMSw3IEBACi0gICAgICAgSU5IRVJJVCAodG9fdHJhY2VmcmFtZV9pbmZvLCB0 KTsKLSAgICAgICBJTkhFUklUICh0b191c2VfYWdlbnQsIHQpOwotICAgICAgIElOSEVSSVQgKHRv X2Nhbl91c2VfYWdlbnQsIHQpOwotKyAgICAgIElOSEVSSVQgKHRvX2F1Z21lbnRlZF9saWJyYXJp ZXNfc3ZyNF9yZWFkLCB0KTsKLSAgICAgICBJTkhFUklUICh0b19tYWdpYywgdCk7Ci0gICAgICAg SU5IRVJJVCAodG9fc3VwcG9ydHNfZXZhbHVhdGlvbl9vZl9icmVha3BvaW50X2NvbmRpdGlvbnMs IHQpOwotICAgICAgIElOSEVSSVQgKHRvX2Nhbl9ydW5fYnJlYWtwb2ludF9jb21tYW5kcywgdCk7 Ci1AQCAtOTc1LDYgKzk3Niw5IEBACi0gICBkZV9mYXVsdCAodG9fY2FuX3VzZV9hZ2VudCwKLSAJ ICAgIChpbnQgKCopICh2b2lkKSkKLSAJICAgIHJldHVybl96ZXJvKTsKLSsgIGRlX2ZhdWx0ICh0 b19hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZCwKLSsJICAgIChpbnQgKCopICh2b2lkKSkK LSsJICAgIHJldHVybl96ZXJvKTsKLSAgIGRlX2ZhdWx0ICh0b19leGVjdXRpb25fZGlyZWN0aW9u LCBkZWZhdWx0X2V4ZWN1dGlvbl9kaXJlY3Rpb24pOwotIAotICN1bmRlZiBkZV9mYXVsdAotLS0t IHNyYy9nZGIvdGFyZ2V0LmgJMjAxMy8wNS8xNCAyMDozMzozNgkxLjI2MgotKysrIHNyYy9nZGIv dGFyZ2V0LmgJMjAxMy8wNi8wNCAxMzoxMDo1MwkxLjI2MwotQEAgLTk0MSw2ICs5NDEsMTAgQEAK LSAgICAgICAgKGluY2x1c2l2ZSkgdG8gZnVuY3Rpb24gRU5EIChleGNsdXNpdmUpLiAgKi8KLSAg ICAgdm9pZCAoKnRvX2NhbGxfaGlzdG9yeV9yYW5nZSkgKFVMT05HRVNUIGJlZ2luLCBVTE9OR0VT VCBlbmQsIGludCBmbGFncyk7Ci0gCi0rICAgIC8qIE5vbnplcm8gaWYgVEFSR0VUX09CSkVDVF9M SUJSQVJJRVNfU1ZSNCBtYXkgYmUgcmVhZCB3aXRoIGEKLSsgICAgICAgbm9uLWVtcHR5IGFubmV4 LiAgKi8KLSsgICAgaW50ICgqdG9fYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQpICh2b2lk KTsKLSsKLSAgICAgaW50IHRvX21hZ2ljOwotICAgICAvKiBOZWVkIHN1Yi1zdHJ1Y3R1cmUgZm9y IHRhcmdldCBtYWNoaW5lIHJlbGF0ZWQgcmF0aGVyIHRoYW4gY29tbSByZWxhdGVkPwotICAgICAg Ki8KLUBAIC0xODA5LDYgKzE4MTMsOSBAQAotICNkZWZpbmUgdGFyZ2V0X2Nhbl91c2VfYWdlbnQo KSBcCi0gICAoKmN1cnJlbnRfdGFyZ2V0LnRvX2Nhbl91c2VfYWdlbnQpICgpCi0gCi0rI2RlZmlu ZSB0YXJnZXRfYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQoKSBcCi0rICAoKmN1cnJlbnRf dGFyZ2V0LnRvX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkKSAoKQotKwotIC8qIENvbW1h bmQgbG9nZ2luZyBmYWNpbGl0eS4gICovCi0gCi0gI2RlZmluZSB0YXJnZXRfbG9nX2NvbW1hbmQo cCkJCQkJCQlcCgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTdvZjkucGF0Y2gg Yi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtN29mOS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggOWNkNWY1Ni4uMDAwMDAwMAotLS0gYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUtN29m OS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMDcgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1jdnMvMjAxMy0wNi9tc2cwMDAxOC5odG1sCi0KLSMjIyBzcmMvZ2RiL0No YW5nZUxvZwkyMDEzLzA2LzA0IDEzOjEwOjUzCTEuMTU2ODQKLSMjIyBzcmMvZ2RiL0NoYW5nZUxv ZwkyMDEzLzA2LzA0IDEzOjE3OjA1CTEuMTU2ODUKLSMjIC0xLDUgKzEsNTggQEAKLSAyMDEzLTA2 LTA0ICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4KLSAKLSsJKiBicmVha3BvaW50 LmggKGhhbmRsZV9zb2xpYl9ldmVudCk6IE1vdmVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9uCi0rCXRv IHNvbGliLmguCi0rCSogYnJlYWtwb2ludC5jIChoYW5kbGVfc29saWJfZXZlbnQpOiBNb3ZlZCBm dW5jdGlvbiB0byBzb2xpYi5jLgotKwkoYnBzdGF0X3N0b3Bfc3RhdHVzKTogUGFzcyBuZXcgYXJn dW1lbnQgdG8gaGFuZGxlX3NvbGliX2V2ZW50LgotKwkqIHNvbGliLmggKHVwZGF0ZV9zb2xpYl9i cmVha3BvaW50cyk6IE5ldyBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KLSsJKGhhbmRsZV9zb2xpYl9l dmVudCk6IE1vdmVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGZyb20KLSsJYnJlYWtwb2ludC5oLgot KwkqIHNvbGliLmMgKHVwZGF0ZV9zb2xpYl9icmVha3BvaW50cyk6IE5ldyBmdW5jdGlvbi4KLSsJ KGhhbmRsZV9zb2xpYl9ldmVudCk6IE1vdmVkIGZ1bmN0aW9uIGZyb20gYnJlYWtwb2ludC5jLgot KwlVcGRhdGVkIHRvIGNhbGwgc29saWJfb3BzLT5oYW5kbGVfZXZlbnQgaWYgbm90IE5VTEwuCi0r CSogc29saXN0LmggKHRhcmdldF9zb19vcHMpOiBOZXcgZmllbGRzICJ1cGRhdGVfYnJlYWtwb2lu dHMiIGFuZAotKwkiaGFuZGxlX2V2ZW50Ii4KLSsJKiBpbmZydW4uYyAoc2V0X3N0b3Bfb25fc29s aWJfZXZlbnRzKTogTmV3IGZ1bmN0aW9uLgotKwkoX2luaXRpYWxpemVfaW5mcnVuKTogVXNlIHRo ZSBhYm92ZSBmb3IgInNldAotKwlzdG9wLW9uLXNvbGliLWV2ZW50cyIuCi0rCShoYW5kbGVfaW5m ZXJpb3JfZXZlbnQpOiBQYXNzIG5ldyBhcmd1bWVudCB0byBoYW5kbGVfc29saWJfZXZlbnQuCi0r CSogc29saWItc3ZyNC5jIChwcm9iZS5oKTogTmV3IGluY2x1ZGUuCi0rCShzdnI0X2ZyZWVfbGli cmFyeV9saXN0KTogTmV3IGZvcndhcmQgZGVjbGFyYXRpb24uCi0rCShwcm9iZV9hY3Rpb24pOiBO ZXcgZW51bS4KLSsJKHByb2JlX2luZm8pOiBOZXcgc3RydWN0LgotKwkocHJvYmVfaW5mbyk6IE5l dyBzdGF0aWMgdmFyaWFibGUuCi0rCShOVU1fUFJPQkVTKTogTmV3IGRlZmluaXRpb24uCi0rCShz dnI0X2luZm8pOiBOZXcgZmllbGRzICJ1c2luZ194ZmVyIiwgInByb2Jlc190YWJsZSIgYW5kCi0r CSJzb2xpYl9saXN0Ii4KLSsJKGZyZWVfcHJvYmVzX3RhYmxlKTogTmV3IGZ1bmN0aW9uLgotKwko ZnJlZV9zb2xpYl9saXN0KTogTmV3IGZ1bmN0aW9uLgotKwkoc3ZyNF9wc3BhY2VfZGF0YV9jbGVh bnVwKTogRnJlZSBwcm9iZXMgdGFibGUgYW5kIHNvbGliIGxpc3QuCi0rCShzdnI0X2NvcHlfbGli cmFyeV9saXN0KTogTmV3IGZ1bmN0aW9uLgotKwkoc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9s aWJyYXJpZXMpOiBOZXcgcGFyYW1ldGVyICJhbm5leCIuCi0rCShzdnI0X3JlYWRfc29fbGlzdCk6 IE5ldyBwYXJhbWV0ZXIgInByZXZfbG0iLgotKwkoc3ZyNF9jdXJyZW50X3Nvc19kaXJlY3QpOiBS ZW5hbWVkIGZyb20gInN2cjRfY3VycmVudF9zb3MiLgotKwkoc3ZyNF9jdXJyZW50X3Nvcyk6IE5l dyBmdW5jdGlvbi4KLSsJKHByb2JlX2FuZF9hY3Rpb24pOiBOZXcgc3RydWN0LgotKwkoaGFzaF9w cm9iZV9hbmRfYWN0aW9uKTogTmV3IGZ1bmN0aW9uLgotKwkoZXF1YWxfcHJvYmVfYW5kX2FjdGlv bik6IExpa2V3aXNlLgotKwkocmVnaXN0ZXJfc29saWJfZXZlbnRfcHJvYmUpOiBMaWtld2lzZS4K LSsJKHNvbGliX2V2ZW50X3Byb2JlX2F0KTogTGlrZXdpc2UuCi0rCShzb2xpYl9ldmVudF9wcm9i ZV9hY3Rpb24pOiBMaWtld2lzZS4KLSsJKHNvbGlzdF91cGRhdGVfZnVsbCk6IExpa2V3aXNlLgot Kwkoc29saXN0X3VwZGF0ZV9pbmNyZW1lbnRhbCk6IExpa2V3aXNlLgotKwkoZGlzYWJsZV9wcm9i ZXNfaW50ZXJmYWNlX2NsZWFudXApOiBMaWtld2lzZS4KLSsJKHN2cjRfaGFuZGxlX3NvbGliX2V2 ZW50KTogTGlrZXdpc2UuCi0rCShzdnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50KTog TGlrZXdpc2UuCi0rCShzdnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyk6IExpa2V3 aXNlLgotKwkoc3ZyNF9jcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMpOiBMaWtld2lzZS4K LSsJKGVuYWJsZV9icmVhayk6IEZyZWUgcHJvYmVzIHRhYmxlIGJlZm9yZSBjcmVhdGluZyBicmVh a3BvaW50cy4KLSsJVXNlIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzIHRvIGNy ZWF0ZSBicmVha3BvaW50cy4KLSsJKHN2cjRfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2spOiBG cmVlIHRoZSBzb2xpYiBsaXN0LgotKwkoX2luaXRpYWxpemVfc3ZyNF9zb2xpYik6IEluaXRpYWxp c2UKLSsJc3ZyNF9zb19vcHMuaGFuZGxlX3NvbGliX2V2ZW50IGFuZCBzdnI0X3NvX29wcy51cGRh dGVfYnJlYWtwb2ludHMuCi0rCi0rMjAxMy0wNi0wNCAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJl ZGhhdC5jb20+Ci0rCi0gCSogdGFyZ2V0LmggKHRhcmdldF9vcHMpOiBOZXcgZmllbGQKLSAJInRv X2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkIi4KLSAJKHRhcmdldF9hdWdtZW50ZWRfbGli cmFyaWVzX3N2cjRfcmVhZCk6IE5ldyBtYWNyby4KLUluZGV4OiBnZGItNy42L2dkYi9icmVha3Bv aW50LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAkyMDEz LTA2LTEwIDE0OjQ0OjM3LjQ1NTgxMjY1NiArMDIwMAotKysrIGdkYi03LjYvZ2RiL2JyZWFrcG9p bnQuaAkyMDEzLTA2LTEwIDE0OjQ0OjM3LjcwOTgxMjU3OSArMDIwMAotQEAgLTE1NTIsOCArMTU1 Miw2IEBAIGV4dGVybiBpbnQgdXNlcl9icmVha3BvaW50X3AgKHN0cnVjdCBicmUKLSAvKiBBdHRl bXB0IHRvIGRldGVybWluZSBhcmNoaXRlY3R1cmUgb2YgbG9jYXRpb24gaWRlbnRpZmllZCBieSBT QUwuICAqLwotIGV4dGVybiBzdHJ1Y3QgZ2RiYXJjaCAqZ2V0X3NhbF9hcmNoIChzdHJ1Y3Qgc3lt dGFiX2FuZF9saW5lIHNhbCk7Ci0gCi0tZXh0ZXJuIHZvaWQgaGFuZGxlX3NvbGliX2V2ZW50ICh2 b2lkKTsKLS0KLSBleHRlcm4gdm9pZCBicmVha3BvaW50X2ZyZWVfb2JqZmlsZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUpOwotIAotIGV4dGVybiB2b2lkIGJyZWFrcG9pbnRzX3JlbG9jYXRlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLUluZGV4OiBnZGItNy42L2dkYi9pbmZydW4uYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvaW5mcnVuLmMJMjAxMy0wNi0xMCAxNDo0NDoz Ny40Mjc4MTI2NjQgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9pbmZydW4uYwkyMDEzLTA2LTEwIDE0 OjQ0OjM3LjcxMTgxMjU3OSArMDIwMAotQEAgLTM3MCw2ICszNzAsMTYgQEAgc3RhdGljIHN0cnVj dCBzeW1ib2wgKnN0ZXBfc3RhcnRfZnVuY3RpbwotIC8qIE5vbnplcm8gaWYgd2Ugd2FudCB0byBn aXZlIGNvbnRyb2wgdG8gdGhlIHVzZXIgd2hlbiB3ZSdyZSBub3RpZmllZAotICAgIG9mIHNoYXJl ZCBsaWJyYXJ5IGV2ZW50cyBieSB0aGUgZHluYW1pYyBsaW5rZXIuICAqLwotIGludCBzdG9wX29u X3NvbGliX2V2ZW50czsKLSsKLSsvKiBFbmFibGUgb3IgZGlzYWJsZSBvcHRpb25hbCBzaGFyZWQg bGlicmFyeSBldmVudCBicmVha3BvaW50cwotKyAgIGFzIGFwcHJvcHJpYXRlIHdoZW4gdGhlIGFi b3ZlIGZsYWcgaXMgY2hhbmdlZC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzZXRfc3RvcF9vbl9z b2xpYl9ldmVudHMgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQgKmMpCi0rewotKyAgdXBkYXRlX3NvbGliX2JyZWFrcG9pbnRzICgpOwotK30KLSsKLSBz dGF0aWMgdm9pZAotIHNob3dfc3RvcF9vbl9zb2xpYl9ldmVudHMgKHN0cnVjdCB1aV9maWxlICpm aWxlLCBpbnQgZnJvbV90dHksCi0gCQkJICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNv bnN0IGNoYXIgKnZhbHVlKQotQEAgLTczMzUsNyArNzM0NSw3IEBAIFNob3cgc3RvcHBpbmcgZm9y IHNoYXJlZCBsaWJyYXJ5IGV2ZW50cy4KLSBJZiBub256ZXJvLCBnZGIgd2lsbCBnaXZlIGNvbnRy b2wgdG8gdGhlIHVzZXIgd2hlbiB0aGUgZHluYW1pYyBsaW5rZXJcblwKLSBub3RpZmllcyBnZGIg b2Ygc2hhcmVkIGxpYnJhcnkgZXZlbnRzLiAgVGhlIG1vc3QgY29tbW9uIGV2ZW50IG9mIGludGVy ZXN0XG5cCi0gdG8gdGhlIHVzZXIgd291bGQgYmUgbG9hZGluZy91bmxvYWRpbmcgb2YgYSBuZXcg bGlicmFyeS4iKSwKLS0JCQkgICAgTlVMTCwKLSsJCQkgICAgc2V0X3N0b3Bfb25fc29saWJfZXZl bnRzLAotIAkJCSAgICBzaG93X3N0b3Bfb25fc29saWJfZXZlbnRzLAotIAkJCSAgICAmc2V0bGlz dCwgJnNob3dsaXN0KTsKLSAKLUluZGV4OiBnZGItNy42L2dkYi9zb2xpYi1zdnI0LmMKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEzLTA2LTEwIDE0OjQ0 OjM3LjM5MjgxMjY3NSArMDIwMAotKysrIGdkYi03LjYvZ2RiL3NvbGliLXN2cjQuYwkyMDEzLTA2 LTEwIDE0OjQ0OjM3LjcxMjgxMjU3OCArMDIwMAotQEAgLTQ2LDEwICs0NiwxMiBAQAotICNpbmNs dWRlICJhdXh2LmgiCi0gI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKLSAjaW5jbHVkZSAiZ2RiX2Jm ZC5oIgotKyNpbmNsdWRlICJwcm9iZS5oIgotIAotIHN0YXRpYyBzdHJ1Y3QgbGlua19tYXBfb2Zm c2V0cyAqc3ZyNF9mZXRjaF9saW5rX21hcF9vZmZzZXRzICh2b2lkKTsKLSBzdGF0aWMgaW50IHN2 cjRfaGF2ZV9saW5rX21hcF9vZmZzZXRzICh2b2lkKTsKLSBzdGF0aWMgdm9pZCBzdnI0X3JlbG9j YXRlX21haW5fZXhlY3V0YWJsZSAodm9pZCk7Ci0rc3RhdGljIHZvaWQgc3ZyNF9mcmVlX2xpYnJh cnlfbGlzdCAodm9pZCAqcF9saXN0KTsKLSAKLSAvKiBMaW5rIG1hcCBpbmZvIHRvIGluY2x1ZGUg aW4gYW4gYWxsb2NhdGVkIHNvX2xpc3QgZW50cnkuICAqLwotIAotQEAgLTEwNiw2ICsxMDgsNTUg QEAgc3RhdGljIGNvbnN0ICBjaGFyICogY29uc3QgbWFpbl9uYW1lX2xpcwotICAgTlVMTAotIH07 Ci0gCi0rLyogV2hhdCB0byBkbyB3aGVuIGEgcHJvYmUgc3RvcCBvY2N1cnMuICAqLwotKwotK2Vu dW0gcHJvYmVfYWN0aW9uCi0rewotKyAgLyogU29tZXRoaW5nIHdlbnQgc2VyaW91c2x5IHdyb25n LiAgU3RvcCB1c2luZyBwcm9iZXMgYW5kCi0rICAgICByZXZlcnQgdG8gdXNpbmcgdGhlIG9sZGVy IGludGVyZmFjZS4gICovCi0rICBQUk9CRVNfSU5URVJGQUNFX0ZBSUxFRCwKLSsKLSsgIC8qIE5v IGFjdGlvbiBpcyByZXF1aXJlZC4gIFRoZSBzaGFyZWQgb2JqZWN0IGxpc3QgaXMgc3RpbGwKLSsg ICAgIHZhbGlkLiAgKi8KLSsgIERPX05PVEhJTkcsCi0rCi0rICAvKiBUaGUgc2hhcmVkIG9iamVj dCBsaXN0IHNob3VsZCBiZSByZWxvYWRlZCBlbnRpcmVseS4gICovCi0rICBGVUxMX1JFTE9BRCwK LSsKLSsgIC8qIEF0dGVtcHQgdG8gaW5jcmVtZW50YWxseSB1cGRhdGUgdGhlIHNoYXJlZCBvYmpl Y3QgbGlzdC4gSWYKLSsgICAgIHRoZSB1cGRhdGUgZmFpbHMgb3IgaXMgbm90IHBvc3NpYmxlLCBm YWxsIGJhY2sgdG8gcmVsb2FkaW5nCi0rICAgICB0aGUgbGlzdCBpbiBmdWxsLiAgKi8KLSsgIFVQ REFURV9PUl9SRUxPQUQsCi0rfTsKLSsKLSsvKiBBIHByb2JlJ3MgbmFtZSBhbmQgaXRzIGFzc29j aWF0ZWQgYWN0aW9uLiAgKi8KLSsKLStzdHJ1Y3QgcHJvYmVfaW5mbwotK3sKLSsgIC8qIFRoZSBu YW1lIG9mIHRoZSBwcm9iZS4gICovCi0rICBjb25zdCBjaGFyICpuYW1lOwotKwotKyAgLyogV2hh dCB0byBkbyB3aGVuIGEgcHJvYmUgc3RvcCBvY2N1cnMuICAqLwotKyAgZW51bSBwcm9iZV9hY3Rp b24gYWN0aW9uOwotK307Ci0rCi0rLyogQSBsaXN0IG9mIG5hbWVkIHByb2JlcyBhbmQgdGhlaXIg YXNzb2NpYXRlZCBhY3Rpb25zLiAgSWYgYWxsCi0rICAgcHJvYmVzIGFyZSBwcmVzZW50IGluIHRo ZSBkeW5hbWljIGxpbmtlciB0aGVuIHRoZSBwcm9iZXMtYmFzZWQKLSsgICBpbnRlcmZhY2Ugd2ls bCBiZSB1c2VkLiAgKi8KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHByb2JlX2luZm8gcHJvYmVf aW5mb1tdID0KLSt7Ci0rICB7ICJpbml0X3N0YXJ0IiwgRE9fTk9USElORyB9LAotKyAgeyAiaW5p dF9jb21wbGV0ZSIsIEZVTExfUkVMT0FEIH0sCi0rICB7ICJtYXBfc3RhcnQiLCBET19OT1RISU5H IH0sCi0rICB7ICJtYXBfZmFpbGVkIiwgRE9fTk9USElORyB9LAotKyAgeyAicmVsb2NfY29tcGxl dGUiLCBVUERBVEVfT1JfUkVMT0FEIH0sCi0rICB7ICJ1bm1hcF9zdGFydCIsIERPX05PVEhJTkcg fSwKLSsgIHsgInVubWFwX2NvbXBsZXRlIiwgRlVMTF9SRUxPQUQgfSwKLSt9OwotKwotKyNkZWZp bmUgTlVNX1BST0JFUyBBUlJBWV9TSVpFIChwcm9iZV9pbmZvKQotKwotIC8qIFJldHVybiBub24t emVybyBpZiBHREJfU09fTkFNRSBhbmQgSU5GRVJJT1JfU09fTkFNRSByZXByZXNlbnQKLSAgICB0 aGUgc2FtZSBzaGFyZWQgbGlicmFyeS4gICovCi0gCi1AQCAtMzEzLDE3ICszNjQsNTggQEAgc3Ry dWN0IHN2cjRfaW5mbwotICAgQ09SRV9BRERSIGludGVycF90ZXh0X3NlY3RfaGlnaDsKLSAgIENP UkVfQUREUiBpbnRlcnBfcGx0X3NlY3RfbG93OwotICAgQ09SRV9BRERSIGludGVycF9wbHRfc2Vj dF9oaWdoOwotKwotKyAgLyogTm9uemVybyBpZiB0aGUgbGlzdCBvZiBvYmplY3RzIHdhcyBsYXN0 IG9idGFpbmVkIGZyb20gdGhlIHRhcmdldAotKyAgICAgdmlhIHFYZmVyOmxpYnJhcmllcy1zdnI0 OnJlYWQuICAqLwotKyAgaW50IHVzaW5nX3hmZXI7Ci0rCi0rICAvKiBUYWJsZSBvZiBzdHJ1Y3Qg cHJvYmVfYW5kX2FjdGlvbiBpbnN0YW5jZXMsIHVzZWQgYnkgdGhlCi0rICAgICBwcm9iZXMtYmFz ZWQgaW50ZXJmYWNlIHRvIG1hcCBicmVha3BvaW50IGFkZHJlc3NlcyB0byBwcm9iZXMKLSsgICAg IGFuZCB0aGVpciBhc3NvY2lhdGVkIGFjdGlvbnMuICBMb29rdXAgaXMgcGVyZm9ybWVkIHVzaW5n Ci0rICAgICBwcm9iZV9hbmRfYWN0aW9uLT5wcm9iZS0+YWRkcmVzcy4gICovCi0rICBodGFiX3Qg cHJvYmVzX3RhYmxlOwotKwotKyAgLyogTGlzdCBvZiBvYmplY3RzIGxvYWRlZCBpbnRvIHRoZSBp bmZlcmlvciwgdXNlZCBieSB0aGUgcHJvYmVzLQotKyAgICAgYmFzZWQgaW50ZXJmYWNlLiAgKi8K LSsgIHN0cnVjdCBzb19saXN0ICpzb2xpYl9saXN0OwotIH07Ci0gCi0gLyogUGVyLXByb2dyYW0t c3BhY2UgZGF0YSBrZXkuICAqLwotIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZV9k YXRhICpzb2xpYl9zdnI0X3BzcGFjZV9kYXRhOwotIAotKy8qIEZyZWUgdGhlIHByb2JlcyB0YWJs ZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStmcmVlX3Byb2Jlc190YWJsZSAoc3RydWN0IHN2cjRf aW5mbyAqaW5mbykKLSt7Ci0rICBpZiAoaW5mby0+cHJvYmVzX3RhYmxlID09IE5VTEwpCi0rICAg IHJldHVybjsKLSsKLSsgIGh0YWJfZGVsZXRlIChpbmZvLT5wcm9iZXNfdGFibGUpOwotKyAgaW5m by0+cHJvYmVzX3RhYmxlID0gTlVMTDsKLSt9Ci0rCi0rLyogRnJlZSB0aGUgc29saWIgbGlzdC4g ICovCi0rCi0rc3RhdGljIHZvaWQKLStmcmVlX3NvbGliX2xpc3QgKHN0cnVjdCBzdnI0X2luZm8g KmluZm8pCi0rewotKyAgc3ZyNF9mcmVlX2xpYnJhcnlfbGlzdCAoJmluZm8tPnNvbGliX2xpc3Qp OwotKyAgaW5mby0+c29saWJfbGlzdCA9IE5VTEw7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gc3Zy NF9wc3BhY2VfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlLCB2b2lk ICphcmcpCi0gewotICAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbzsKLSAKLSAgIGluZm8gPSBwcm9n cmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgc29saWJfc3ZyNF9wc3BhY2VfZGF0YSk7Ci0rICBpZiAo aW5mbyA9PSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0rICBmcmVlX3Byb2Jlc190YWJsZSAoaW5m byk7Ci0rICBmcmVlX3NvbGliX2xpc3QgKGluZm8pOwotKwotICAgeGZyZWUgKGluZm8pOwotIH0K LSAKLUBAIC05ODIsNiArMTA3NCwzNCBAQCBzdnI0X2ZyZWVfbGlicmFyeV9saXN0ICh2b2lkICpw X2xpc3QpCi0gICAgIH0KLSB9Ci0gCi0rLyogQ29weSBsaWJyYXJ5IGxpc3QuICAqLwotKwotK3N0 YXRpYyBzdHJ1Y3Qgc29fbGlzdCAqCi0rc3ZyNF9jb3B5X2xpYnJhcnlfbGlzdCAoc3RydWN0IHNv X2xpc3QgKnNyYykKLSt7Ci0rICBzdHJ1Y3Qgc29fbGlzdCAqZHN0ID0gTlVMTDsKLSsgIHN0cnVj dCBzb19saXN0ICoqbGluayA9ICZkc3Q7Ci0rCi0rICB3aGlsZSAoc3JjICE9IE5VTEwpCi0rICAg IHsKLSsgICAgICBzdHJ1Y3Qgc29fbGlzdCAqbmV3OwotKwotKyAgICAgIG5ldyA9IHhtYWxsb2Mg KHNpemVvZiAoc3RydWN0IHNvX2xpc3QpKTsKLSsgICAgICBtZW1jcHkgKG5ldywgc3JjLCBzaXpl b2YgKHN0cnVjdCBzb19saXN0KSk7Ci0rCi0rICAgICAgbmV3LT5sbV9pbmZvID0geG1hbGxvYyAo c2l6ZW9mIChzdHJ1Y3QgbG1faW5mbykpOwotKyAgICAgIG1lbWNweSAobmV3LT5sbV9pbmZvLCBz cmMtPmxtX2luZm8sIHNpemVvZiAoc3RydWN0IGxtX2luZm8pKTsKLSsKLSsgICAgICBuZXctPm5l eHQgPSBOVUxMOwotKyAgICAgICpsaW5rID0gbmV3OwotKyAgICAgIGxpbmsgPSAmbmV3LT5uZXh0 OwotKwotKyAgICAgIHNyYyA9IHNyYy0+bmV4dDsKLSsgICAgfQotKwotKyAgcmV0dXJuIGRzdDsK LSt9Ci0rCi0gI2lmZGVmIEhBVkVfTElCRVhQQVQKLSAKLSAjaW5jbHVkZSAieG1sLXN1cHBvcnQu aCIKLUBAIC0xMDk3LDIzICsxMjE3LDMwIEBAIHN2cjRfcGFyc2VfbGlicmFyaWVzIChjb25zdCBj aGFyICpkb2N1bWUKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiBBdHRlbXB0IHRvIGdldCBzb19s aXN0IGZyb20gdGFyZ2V0IHZpYSBxWGZlcjpsaWJyYXJpZXM6cmVhZCBwYWNrZXQuCi0rLyogQXR0 ZW1wdCB0byBnZXQgc29fbGlzdCBmcm9tIHRhcmdldCB2aWEgcVhmZXI6bGlicmFyaWVzLXN2cjQ6 cmVhZCBwYWNrZXQuCi0gCi0gICAgUmV0dXJuIDAgaWYgcGFja2V0IG5vdCBzdXBwb3J0ZWQsICpT T19MSVNUX1JFVFVSTiBpcyBub3QgbW9kaWZpZWQgaW4gc3VjaAotICAgIGNhc2UuICBSZXR1cm4g MSBpZiAqU09fTElTVF9SRVRVUk4gY29udGFpbnMgdGhlIGxpYnJhcnkgbGlzdCwgaXQgbWF5IGJl Ci0tICAgZW1wdHksIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyBhbGwgaXRzIGVu dHJpZXMuICAqLwotKyAgIGVtcHR5LCBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcg YWxsIGl0cyBlbnRyaWVzLgotKwotKyAgIE5vdGUgdGhhdCBBTk5FWCBtdXN0IGJlIE5VTEwgaWYg dGhlIHJlbW90ZSBkb2VzIG5vdCBleHBsaWNpdGx5IGFsbG93Ci0rICAgcVhmZXI6bGlicmFyaWVz LXN2cjQ6cmVhZCBwYWNrZXRzIHdpdGggbm9uLWVtcHR5IGFubmV4ZXMuICBTdXBwb3J0IGZvcgot KyAgIHRoaXMgY2FuIGJlIGNoZWNrZWQgdXNpbmcgdGFyZ2V0X2F1Z21lbnRlZF9saWJyYXJpZXNf c3ZyNF9yZWFkICgpLiAgKi8KLSAKLSBzdGF0aWMgaW50Ci0tc3ZyNF9jdXJyZW50X3Nvc192aWFf eGZlcl9saWJyYXJpZXMgKHN0cnVjdCBzdnI0X2xpYnJhcnlfbGlzdCAqbGlzdCkKLStzdnI0X2N1 cnJlbnRfc29zX3ZpYV94ZmVyX2xpYnJhcmllcyAoc3RydWN0IHN2cjRfbGlicmFyeV9saXN0ICps aXN0LAotKwkJCQkgICAgIGNvbnN0IGNoYXIgKmFubmV4KQotIHsKLSAgIGNoYXIgKnN2cjRfbGli cmFyeV9kb2N1bWVudDsKLSAgIGludCByZXN1bHQ7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqYmFja190 bzsKLSAKLSsgIGdkYl9hc3NlcnQgKGFubmV4ID09IE5VTEwgfHwgdGFyZ2V0X2F1Z21lbnRlZF9s aWJyYXJpZXNfc3ZyNF9yZWFkICgpKTsKLSsKLSAgIC8qIEZldGNoIHRoZSBsaXN0IG9mIHNoYXJl ZCBsaWJyYXJpZXMuICAqLwotICAgc3ZyNF9saWJyYXJ5X2RvY3VtZW50ID0gdGFyZ2V0X3JlYWRf c3RyYWxsb2MgKCZjdXJyZW50X3RhcmdldCwKLSAJCQkJCQlUQVJHRVRfT0JKRUNUX0xJQlJBUklF U19TVlI0LAotLQkJCQkJCU5VTEwpOwotKwkJCQkJCWFubmV4KTsKLSAgIGlmIChzdnI0X2xpYnJh cnlfZG9jdW1lbnQgPT0gTlVMTCkKLSAgICAgcmV0dXJuIDA7Ci0gCi1AQCAtMTEyNyw3ICsxMjU0 LDggQEAgc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9saWJyYXJpZXMgKHN0cgotICNlbHNlCi0g Ci0gc3RhdGljIGludAotLXN2cjRfY3VycmVudF9zb3NfdmlhX3hmZXJfbGlicmFyaWVzIChzdHJ1 Y3Qgc3ZyNF9saWJyYXJ5X2xpc3QgKmxpc3QpCi0rc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9s aWJyYXJpZXMgKHN0cnVjdCBzdnI0X2xpYnJhcnlfbGlzdCAqbGlzdCwKLSsJCQkJICAgICBjb25z dCBjaGFyICphbm5leCkKLSB7Ci0gICByZXR1cm4gMDsKLSB9Ci1AQCAtMTE2MSwxNSArMTI4OSwx OSBAQCBzdnI0X2RlZmF1bHRfc29zICh2b2lkKQotICAgcmV0dXJuIG5ldzsKLSB9Ci0gCi0tLyog UmVhZCB0aGUgd2hvbGUgaW5mZXJpb3IgbGlicmFyaWVzIGNoYWluIHN0YXJ0aW5nIGF0IGFkZHJl c3MgTE0uICBBZGQgdGhlCi0tICAgZW50cmllcyB0byB0aGUgdGFpbCByZWZlcmVuY2VkIGJ5IExJ TktfUFRSX1BUUi4gIElnbm9yZSB0aGUgZmlyc3QgZW50cnkgaWYKLS0gICBJR05PUkVfRklSU1Qg YW5kIHNldCBnbG9iYWwgTUFJTl9MTV9BRERSIGFjY29yZGluZyB0byBpdC4gICovCi0rLyogUmVh ZCB0aGUgd2hvbGUgaW5mZXJpb3IgbGlicmFyaWVzIGNoYWluIHN0YXJ0aW5nIGF0IGFkZHJlc3Mg TE0uCi0rICAgRXhwZWN0IHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgY2hhaW4ncyBwcmV2aW91cyBl bnRyeSB0byBiZSBQUkVWX0xNLgotKyAgIEFkZCB0aGUgZW50cmllcyB0byB0aGUgdGFpbCByZWZl cmVuY2VkIGJ5IExJTktfUFRSX1BUUi4gIElnbm9yZSB0aGUKLSsgICBmaXJzdCBlbnRyeSBpZiBJ R05PUkVfRklSU1QgYW5kIHNldCBnbG9iYWwgTUFJTl9MTV9BRERSIGFjY29yZGluZwotKyAgIHRv IGl0LiAgUmV0dXJucyBub256ZXJvIHVwb24gc3VjY2Vzcy4gIElmIHplcm8gaXMgcmV0dXJuZWQg dGhlCi0rICAgZW50cmllcyBzdG9yZWQgdG8gTElOS19QVFJfUFRSIGFyZSBzdGlsbCB2YWxpZCBh bHRob3VnaCB0aGV5IG1heQotKyAgIHJlcHJlc2VudCBvbmx5IHBhcnQgb2YgdGhlIGluZmVyaW9y IGxpYnJhcnkgbGlzdC4gICovCi0gCi0tc3RhdGljIHZvaWQKLS1zdnI0X3JlYWRfc29fbGlzdCAo Q09SRV9BRERSIGxtLCBzdHJ1Y3Qgc29fbGlzdCAqKipsaW5rX3B0cl9wdHIsCi0tCQkgICBpbnQg aWdub3JlX2ZpcnN0KQotK3N0YXRpYyBpbnQKLStzdnI0X3JlYWRfc29fbGlzdCAoQ09SRV9BRERS IGxtLCBDT1JFX0FERFIgcHJldl9sbSwKLSsJCSAgIHN0cnVjdCBzb19saXN0ICoqKmxpbmtfcHRy X3B0ciwgaW50IGlnbm9yZV9maXJzdCkKLSB7Ci0tICBDT1JFX0FERFIgcHJldl9sbSA9IDAsIG5l eHRfbG07Ci0rICBDT1JFX0FERFIgbmV4dF9sbTsKLSAKLSAgIGZvciAoOyBsbSAhPSAwOyBwcmV2 X2xtID0gbG0sIGxtID0gbmV4dF9sbSkKLSAgICAgewotQEAgLTExODUsNyArMTMxNyw3IEBAIHN2 cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0sIHN0cnVjdAotICAgICAgIGlmIChuZXctPmxt X2luZm8gPT0gTlVMTCkKLSAJewotIAkgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotLQkgIGJy ZWFrOwotKwkgIHJldHVybiAwOwotIAl9Ci0gCi0gICAgICAgbmV4dF9sbSA9IG5ldy0+bG1faW5m by0+bF9uZXh0OwotQEAgLTExOTYsNyArMTMyOCw3IEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JF X0FERFIgbG0sIHN0cnVjdAotIAkJICAgcGFkZHJlc3MgKHRhcmdldF9nZGJhcmNoICgpLCBwcmV2 X2xtKSwKLSAJCSAgIHBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCAoKSwgbmV3LT5sbV9pbmZvLT5s X3ByZXYpKTsKLSAJICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLS0JICBicmVhazsKLSsJICBy ZXR1cm4gMDsKLSAJfQotIAotICAgICAgIC8qIEZvciBTVlI0IHZlcnNpb25zLCB0aGUgZmlyc3Qg ZW50cnkgaW4gdGhlIGxpbmsgbWFwIGlzIGZvciB0aGUKLUBAIC0xMjkxLDE3ICsxNDIzLDIxIEBA IHN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0sIHN0cnVjdAotICAgICAgICoqbGlua19w dHJfcHRyID0gbmV3OwotICAgICAgICpsaW5rX3B0cl9wdHIgPSAmbmV3LT5uZXh0OwotICAgICB9 Ci0rCi0rICByZXR1cm4gMTsKLSB9Ci0gCi0tLyogSW1wbGVtZW50IHRoZSAiY3VycmVudF9zb3Mi IHRhcmdldF9zb19vcHMgbWV0aG9kLiAgKi8KLSsvKiBSZWFkIHRoZSBmdWxsIGxpc3Qgb2YgY3Vy cmVudGx5IGxvYWRlZCBzaGFyZWQgb2JqZWN0cyBkaXJlY3RseQotKyAgIGZyb20gdGhlIGluZmVy aW9yLCB3aXRob3V0IHJlZmVycmluZyB0byBhbnkgbGlicmFyaWVzIHJlYWQgYW5kCi0rICAgc3Rv cmVkIGJ5IHRoZSBwcm9iZXMgaW50ZXJmYWNlLiAgSGFuZGxlIHNwZWNpYWwgY2FzZXMgcmVsYXRp bmcKLSsgICB0byB0aGUgZmlyc3QgZWxlbWVudHMgb2YgdGhlIGxpc3QuICAqLwotIAotIHN0YXRp YyBzdHJ1Y3Qgc29fbGlzdCAqCi0tc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKLStzdnI0X2N1cnJl bnRfc29zX2RpcmVjdCAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbykKLSB7Ci0gICBDT1JFX0FERFIg bG07Ci0gICBzdHJ1Y3Qgc29fbGlzdCAqaGVhZCA9IE5VTEw7Ci0gICBzdHJ1Y3Qgc29fbGlzdCAq KmxpbmtfcHRyID0gJmhlYWQ7Ci0tICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvOwotICAgc3RydWN0 IGNsZWFudXAgKmJhY2tfdG87Ci0gICBpbnQgaWdub3JlX2ZpcnN0OwotICAgc3RydWN0IHN2cjRf bGlicmFyeV9saXN0IGxpYnJhcnlfbGlzdDsKLUBAIC0xMzE0LDE5ICsxNDUwLDE2IEBAIHN2cjRf Y3VycmVudF9zb3MgKHZvaWQpCi0gICAgICBVbmZvcnR1bmF0ZWx5IHN0YXRpY2FsbHkgbGlua2Vk IGluZmVyaW9ycyB3aWxsIGFsc28gZmFsbCBiYWNrIHRocm91Z2ggdGhpcwotICAgICAgc3Vib3B0 aW1hbCBjb2RlIHBhdGguICAqLwotIAotLSAgaWYgKHN2cjRfY3VycmVudF9zb3NfdmlhX3hmZXJf bGlicmFyaWVzICgmbGlicmFyeV9saXN0KSkKLSsgIGluZm8tPnVzaW5nX3hmZXIgPSBzdnI0X2N1 cnJlbnRfc29zX3ZpYV94ZmVyX2xpYnJhcmllcyAoJmxpYnJhcnlfbGlzdCwKLSsJCQkJCQkJICBO VUxMKTsKLSsgIGlmIChpbmZvLT51c2luZ194ZmVyKQotICAgICB7Ci0gICAgICAgaWYgKGxpYnJh cnlfbGlzdC5tYWluX2xtKQotLQl7Ci0tCSAgaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7Ci0tCSAg aW5mby0+bWFpbl9sbV9hZGRyID0gbGlicmFyeV9saXN0Lm1haW5fbG07Ci0tCX0KLSsJaW5mby0+ bWFpbl9sbV9hZGRyID0gbGlicmFyeV9saXN0Lm1haW5fbG07Ci0gCi0gICAgICAgcmV0dXJuIGxp YnJhcnlfbGlzdC5oZWFkID8gbGlicmFyeV9saXN0LmhlYWQgOiBzdnI0X2RlZmF1bHRfc29zICgp OwotICAgICB9Ci0gCi0tICBpbmZvID0gZ2V0X3N2cjRfaW5mbyAoKTsKLS0KLSAgIC8qIEFsd2F5 cyBsb2NhdGUgdGhlIGRlYnVnIHN0cnVjdCwgaW4gY2FzZSBpdCBoYXMgbW92ZWQuICAqLwotICAg aW5mby0+ZGVidWdfYmFzZSA9IDA7Ci0gICBsb2NhdGVfYmFzZSAoaW5mbyk7Ci1AQCAtMTM0OSw3 ICsxNDgyLDcgQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKLSAgICAgIGBzdHJ1Y3Qgc29fbGlz dCcgbm9kZXMuICAqLwotICAgbG0gPSBzb2xpYl9zdnI0X3JfbWFwIChpbmZvKTsKLSAgIGlmIChs bSkKLS0gICAgc3ZyNF9yZWFkX3NvX2xpc3QgKGxtLCAmbGlua19wdHIsIGlnbm9yZV9maXJzdCk7 Ci0rICAgIHN2cjRfcmVhZF9zb19saXN0IChsbSwgMCwgJmxpbmtfcHRyLCBpZ25vcmVfZmlyc3Qp OwotIAotICAgLyogT24gU29sYXJpcywgdGhlIGR5bmFtaWMgbGlua2VyIGlzIG5vdCBpbiB0aGUg bm9ybWFsIGxpc3Qgb2YKLSAgICAgIHNoYXJlZCBvYmplY3RzLCBzbyBtYWtlIHN1cmUgd2UgcGlj ayBpdCB1cCB0b28uICBIYXZpbmcKLUBAIC0xMzU3LDcgKzE0OTAsNyBAQCBzdnI0X2N1cnJlbnRf c29zICh2b2lkKQotICAgICAgZm9yIHNraXBwaW5nIGR5bmFtaWMgbGlua2VyIHJlc29sdmVyIGNv ZGUuICAqLwotICAgbG0gPSBzb2xpYl9zdnI0X3JfbGRzb21hcCAoaW5mbyk7Ci0gICBpZiAobG0p Ci0tICAgIHN2cjRfcmVhZF9zb19saXN0IChsbSwgJmxpbmtfcHRyLCAwKTsKLSsgICAgc3ZyNF9y ZWFkX3NvX2xpc3QgKGxtLCAwLCAmbGlua19wdHIsIDApOwotIAotICAgZGlzY2FyZF9jbGVhbnVw cyAoYmFja190byk7Ci0gCi1AQCAtMTM2Nyw2ICsxNTAwLDIyIEBAIHN2cjRfY3VycmVudF9zb3Mg KHZvaWQpCi0gICByZXR1cm4gaGVhZDsKLSB9Ci0gCi0rLyogSW1wbGVtZW50IHRoZSAiY3VycmVu dF9zb3MiIHRhcmdldF9zb19vcHMgbWV0aG9kLiAgKi8KLSsKLStzdGF0aWMgc3RydWN0IHNvX2xp c3QgKgotK3N2cjRfY3VycmVudF9zb3MgKHZvaWQpCi0rewotKyAgc3RydWN0IHN2cjRfaW5mbyAq aW5mbyA9IGdldF9zdnI0X2luZm8gKCk7Ci0rCi0rICAvKiBJZiB0aGUgc29saWIgbGlzdCBoYXMg YmVlbiByZWFkIGFuZCBzdG9yZWQgYnkgdGhlIHByb2JlcwotKyAgICAgaW50ZXJmYWNlIHRoZW4g d2UgcmV0dXJuIGEgY29weSBvZiB0aGUgc3RvcmVkIGxpc3QuICAqLwotKyAgaWYgKGluZm8tPnNv bGliX2xpc3QgIT0gTlVMTCkKLSsgICAgcmV0dXJuIHN2cjRfY29weV9saWJyYXJ5X2xpc3QgKGlu Zm8tPnNvbGliX2xpc3QpOwotKwotKyAgLyogT3RoZXJ3aXNlIG9idGFpbiB0aGUgc29saWIgbGlz dCBkaXJlY3RseSBmcm9tIHRoZSBpbmZlcmlvci4gICovCi0rICByZXR1cm4gc3ZyNF9jdXJyZW50 X3Nvc19kaXJlY3QgKGluZm8pOwotK30KLSsKLSAvKiBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIGxp bmtfbWFwIGZvciBhIGdpdmVuIE9CSkZJTEUuICAqLwotIAotIENPUkVfQUREUgotQEAgLTE0NDks NiArMTU5OCw0NzYgQEAgZXhlY19lbnRyeV9wb2ludCAoc3RydWN0IGJmZCAqYWJmZCwgc3RydQot ICAgcmV0dXJuIGdkYmFyY2hfYWRkcl9iaXRzX3JlbW92ZSAodGFyZ2V0X2dkYmFyY2ggKCksIGFk ZHIpOwotIH0KLSAKLSsvKiBBIHByb2JlIGFuZCBpdHMgYXNzb2NpYXRlZCBhY3Rpb24uICAqLwot KwotK3N0cnVjdCBwcm9iZV9hbmRfYWN0aW9uCi0rewotKyAgLyogVGhlIHByb2JlLiAgKi8KLSsg IHN0cnVjdCBwcm9iZSAqcHJvYmU7Ci0rCi0rICAvKiBUaGUgYWN0aW9uLiAgKi8KLSsgIGVudW0g cHJvYmVfYWN0aW9uIGFjdGlvbjsKLSt9OwotKwotKy8qIFJldHVybnMgYSBoYXNoIGNvZGUgZm9y IHRoZSBwcm9iZV9hbmRfYWN0aW9uIHJlZmVyZW5jZWQgYnkgcC4gICovCi0rCi0rc3RhdGljIGhh c2h2YWxfdAotK2hhc2hfcHJvYmVfYW5kX2FjdGlvbiAoY29uc3Qgdm9pZCAqcCkKLSt7Ci0rICBj b25zdCBzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbiAqcGEgPSBwOwotKwotKyAgcmV0dXJuIChoYXNo dmFsX3QpIHBhLT5wcm9iZS0+YWRkcmVzczsKLSt9Ci0rCi0rLyogUmV0dXJucyBub24temVybyBp ZiB0aGUgcHJvYmVfYW5kX2FjdGlvbnMgcmVmZXJlbmNlZCBieSBwMSBhbmQgcDIKLSsgICBhcmUg ZXF1YWwuICAqLwotKwotK3N0YXRpYyBpbnQKLStlcXVhbF9wcm9iZV9hbmRfYWN0aW9uIChjb25z dCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpCi0rewotKyAgY29uc3Qgc3RydWN0IHByb2JlX2Fu ZF9hY3Rpb24gKnBhMSA9IHAxOwotKyAgY29uc3Qgc3RydWN0IHByb2JlX2FuZF9hY3Rpb24gKnBh MiA9IHAyOwotKwotKyAgcmV0dXJuIHBhMS0+cHJvYmUtPmFkZHJlc3MgPT0gcGEyLT5wcm9iZS0+ YWRkcmVzczsKLSt9Ci0rCi0rLyogUmVnaXN0ZXIgYSBzb2xpYiBldmVudCBwcm9iZSBhbmQgaXRz IGFzc29jaWF0ZWQgYWN0aW9uIGluIHRoZQotKyAgIHByb2JlcyB0YWJsZS4gICovCi0rCi0rc3Rh dGljIHZvaWQKLStyZWdpc3Rlcl9zb2xpYl9ldmVudF9wcm9iZSAoc3RydWN0IHByb2JlICpwcm9i ZSwgZW51bSBwcm9iZV9hY3Rpb24gYWN0aW9uKQotK3sKLSsgIHN0cnVjdCBzdnI0X2luZm8gKmlu Zm8gPSBnZXRfc3ZyNF9pbmZvICgpOwotKyAgc3RydWN0IHByb2JlX2FuZF9hY3Rpb24gbG9va3Vw LCAqcGE7Ci0rICB2b2lkICoqc2xvdDsKLSsKLSsgIC8qIENyZWF0ZSB0aGUgcHJvYmVzIHRhYmxl LCBpZiBuZWNlc3NhcnkuICAqLwotKyAgaWYgKGluZm8tPnByb2Jlc190YWJsZSA9PSBOVUxMKQot KyAgICBpbmZvLT5wcm9iZXNfdGFibGUgPSBodGFiX2NyZWF0ZV9hbGxvYyAoMSwgaGFzaF9wcm9i ZV9hbmRfYWN0aW9uLAotKwkJCQkJICAgIGVxdWFsX3Byb2JlX2FuZF9hY3Rpb24sCi0rCQkJCQkg ICAgeGZyZWUsIHhjYWxsb2MsIHhmcmVlKTsKLSsKLSsgIGxvb2t1cC5wcm9iZSA9IHByb2JlOwot KyAgc2xvdCA9IGh0YWJfZmluZF9zbG90IChpbmZvLT5wcm9iZXNfdGFibGUsICZsb29rdXAsIElO U0VSVCk7Ci0rICBnZGJfYXNzZXJ0ICgqc2xvdCA9PSBIVEFCX0VNUFRZX0VOVFJZKTsKLSsKLSsg IHBhID0gWENORVcgKHN0cnVjdCBwcm9iZV9hbmRfYWN0aW9uKTsKLSsgIHBhLT5wcm9iZSA9IHBy b2JlOwotKyAgcGEtPmFjdGlvbiA9IGFjdGlvbjsKLSsKLSsgICpzbG90ID0gcGE7Ci0rfQotKwot Ky8qIEdldCB0aGUgc29saWIgZXZlbnQgcHJvYmUgYXQgdGhlIHNwZWNpZmllZCBsb2NhdGlvbiwg YW5kIHRoZQotKyAgIGFjdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuICBSZXR1cm5zIE5VTEwgaWYg bm8gc29saWIgZXZlbnQgcHJvYmUKLSsgICB3YXMgZm91bmQuICAqLwotKwotK3N0YXRpYyBzdHJ1 Y3QgcHJvYmVfYW5kX2FjdGlvbiAqCi0rc29saWJfZXZlbnRfcHJvYmVfYXQgKHN0cnVjdCBzdnI0 X2luZm8gKmluZm8sIENPUkVfQUREUiBhZGRyZXNzKQotK3sKLSsgIHN0cnVjdCBwcm9iZSBsb29r dXBfcHJvYmU7Ci0rICBzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbiBsb29rdXA7Ci0rICB2b2lkICoq c2xvdDsKLSsKLSsgIGxvb2t1cF9wcm9iZS5hZGRyZXNzID0gYWRkcmVzczsKLSsgIGxvb2t1cC5w cm9iZSA9ICZsb29rdXBfcHJvYmU7Ci0rICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKGluZm8tPnBy b2Jlc190YWJsZSwgJmxvb2t1cCwgTk9fSU5TRVJUKTsKLSsKLSsgIGlmIChzbG90ID09IE5VTEwp Ci0rICAgIHJldHVybiBOVUxMOwotKwotKyAgcmV0dXJuIChzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlv biAqKSAqc2xvdDsKLSt9Ci0rCi0rLyogRGVjaWRlIHdoYXQgYWN0aW9uIHRvIHRha2Ugd2hlbiB0 aGUgc3BlY2lmaWVkIHNvbGliIGV2ZW50IHByb2JlIGlzCi0rICAgaGl0LiAgKi8KLSsKLStzdGF0 aWMgZW51bSBwcm9iZV9hY3Rpb24KLStzb2xpYl9ldmVudF9wcm9iZV9hY3Rpb24gKHN0cnVjdCBw cm9iZV9hbmRfYWN0aW9uICpwYSkKLSt7Ci0rICBlbnVtIHByb2JlX2FjdGlvbiBhY3Rpb247Ci0r ICB1bnNpZ25lZCBwcm9iZV9hcmdjOwotKwotKyAgYWN0aW9uID0gcGEtPmFjdGlvbjsKLSsgIGlm IChhY3Rpb24gPT0gRE9fTk9USElORyB8fCBhY3Rpb24gPT0gUFJPQkVTX0lOVEVSRkFDRV9GQUlM RUQpCi0rICAgIHJldHVybiBhY3Rpb247Ci0rCi0rICBnZGJfYXNzZXJ0IChhY3Rpb24gPT0gRlVM TF9SRUxPQUQgfHwgYWN0aW9uID09IFVQREFURV9PUl9SRUxPQUQpOwotKwotKyAgLyogQ2hlY2sg dGhhdCBhbiBhcHByb3ByaWF0ZSBudW1iZXIgb2YgYXJndW1lbnRzIGhhcyBiZWVuIHN1cHBsaWVk LgotKyAgICAgV2UgZXhwZWN0OgotKyAgICAgICBhcmcwOiBMbWlkX3QgbG1pZCAobWFuZGF0b3J5 KQotKyAgICAgICBhcmcxOiBzdHJ1Y3Qgcl9kZWJ1ZyAqZGVidWdfYmFzZSAobWFuZGF0b3J5KQot KyAgICAgICBhcmcyOiBzdHJ1Y3QgbGlua19tYXAgKm5ldyAob3B0aW9uYWwsIGZvciBpbmNyZW1l bnRhbCB1cGRhdGVzKSAgKi8KLSsgIHByb2JlX2FyZ2MgPSBnZXRfcHJvYmVfYXJndW1lbnRfY291 bnQgKHBhLT5wcm9iZSk7Ci0rICBpZiAocHJvYmVfYXJnYyA9PSAyKQotKyAgICBhY3Rpb24gPSBG VUxMX1JFTE9BRDsKLSsgIGVsc2UgaWYgKHByb2JlX2FyZ2MgPCAyKQotKyAgICBhY3Rpb24gPSBQ Uk9CRVNfSU5URVJGQUNFX0ZBSUxFRDsKLSsKLSsgIHJldHVybiBhY3Rpb247Ci0rfQotKwotKy8q IFBvcHVsYXRlIHRoZSBzaGFyZWQgb2JqZWN0IGxpc3QgYnkgcmVhZGluZyB0aGUgZW50aXJlIGxp c3Qgb2YKLSsgICBzaGFyZWQgb2JqZWN0cyBmcm9tIHRoZSBpbmZlcmlvci4gIEhhbmRsZSBzcGVj aWFsIGNhc2VzIHJlbGF0aW5nCi0rICAgdG8gdGhlIGZpcnN0IGVsZW1lbnRzIG9mIHRoZSBsaXN0 LiAgUmV0dXJucyBub256ZXJvIG9uIHN1Y2Nlc3MuICAqLwotKwotK3N0YXRpYyBpbnQKLStzb2xp c3RfdXBkYXRlX2Z1bGwgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCi0rewotKyAgZnJlZV9zb2xp Yl9saXN0IChpbmZvKTsKLSsgIGluZm8tPnNvbGliX2xpc3QgPSBzdnI0X2N1cnJlbnRfc29zX2Rp cmVjdCAoaW5mbyk7Ci0rCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogVXBkYXRlIHRoZSBzaGFy ZWQgb2JqZWN0IGxpc3Qgc3RhcnRpbmcgZnJvbSB0aGUgbGluay1tYXAgZW50cnkKLSsgICBwYXNz ZWQgYnkgdGhlIGxpbmtlciBpbiB0aGUgcHJvYmUncyB0aGlyZCBhcmd1bWVudC4gIFJldHVybnMK LSsgICBub256ZXJvIGlmIHRoZSBsaXN0IHdhcyBzdWNjZXNzZnVsbHkgdXBkYXRlZCwgb3IgemVy byB0byBpbmRpY2F0ZQotKyAgIGZhaWx1cmUuICAqLwotKwotK3N0YXRpYyBpbnQKLStzb2xpc3Rf dXBkYXRlX2luY3JlbWVudGFsIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBDT1JFX0FERFIgbG0p Ci0rewotKyAgc3RydWN0IHNvX2xpc3QgKnRhaWw7Ci0rICBDT1JFX0FERFIgcHJldl9sbTsKLSsK LSsgIC8qIHN2cjRfY3VycmVudF9zb3NfZGlyZWN0IGNvbnRhaW5zIGxvZ2ljIHRvIGhhbmRsZSBh IG51bWJlciBvZgotKyAgICAgc3BlY2lhbCBjYXNlcyByZWxhdGluZyB0byB0aGUgZmlyc3QgZWxl bWVudHMgb2YgdGhlIGxpc3QuICBUbwotKyAgICAgYXZvaWQgZHVwbGljYXRpbmcgdGhpcyBsb2dp YyB3ZSBkZWZlciB0byBzb2xpc3RfdXBkYXRlX2Z1bGwKLSsgICAgIGlmIHRoZSBsaXN0IGlzIGVt cHR5LiAgKi8KLSsgIGlmIChpbmZvLT5zb2xpYl9saXN0ID09IE5VTEwpCi0rICAgIHJldHVybiAw OwotKwotKyAgLyogRmFsbCBiYWNrIHRvIGEgZnVsbCB1cGRhdGUgaWYgd2UgYXJlIHVzaW5nIGEg cmVtb3RlIHRhcmdldAotKyAgICAgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IGluY3JlbWVudGFsIHRy YW5zZmVycy4gICovCi0rICBpZiAoaW5mby0+dXNpbmdfeGZlciAmJiAhdGFyZ2V0X2F1Z21lbnRl ZF9saWJyYXJpZXNfc3ZyNF9yZWFkICgpKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIC8qIFdhbGsg dG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4gICovCi0rICBmb3IgKHRhaWwgPSBpbmZvLT5zb2xpYl9s aXN0OyB0YWlsLT5uZXh0ICE9IE5VTEw7IHRhaWwgPSB0YWlsLT5uZXh0KQotKyAgICAvKiBOb3Ro aW5nLiAgKi87Ci0rICBwcmV2X2xtID0gdGFpbC0+bG1faW5mby0+bG1fYWRkcjsKLSsKLSsgIC8q IFJlYWQgdGhlIG5ldyBvYmplY3RzLiAgKi8KLSsgIGlmIChpbmZvLT51c2luZ194ZmVyKQotKyAg ICB7Ci0rICAgICAgc3RydWN0IHN2cjRfbGlicmFyeV9saXN0IGxpYnJhcnlfbGlzdDsKLSsgICAg ICBjaGFyIGFubmV4WzY0XTsKLSsKLSsgICAgICB4c25wcmludGYgKGFubmV4LCBzaXplb2YgKGFu bmV4KSwgInN0YXJ0PSVzO3ByZXY9JXMiLAotKwkJIHBoZXhfbnogKGxtLCBzaXplb2YgKGxtKSks Ci0rCQkgcGhleF9ueiAocHJldl9sbSwgc2l6ZW9mIChwcmV2X2xtKSkpOwotKyAgICAgIGlmICgh c3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9saWJyYXJpZXMgKCZsaWJyYXJ5X2xpc3QsIGFubmV4 KSkKLSsJcmV0dXJuIDA7Ci0rCi0rICAgICAgdGFpbC0+bmV4dCA9IGxpYnJhcnlfbGlzdC5oZWFk OwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBzdHJ1Y3Qgc29fbGlzdCAqKmxpbmsg PSAmdGFpbC0+bmV4dDsKLSsKLSsgICAgICAvKiBJR05PUkVfRklSU1QgbWF5IHNhZmVseSBiZSBz ZXQgdG8gemVybyBoZXJlIGJlY2F1c2UgdGhlCi0rCSBhYm92ZSBjaGVjayBhbmQgZGVmZXJyYWwg dG8gc29saXN0X3VwZGF0ZV9mdWxsIGVuc3VyZXMKLSsJIHRoYXQgdGhpcyBjYWxsIHRvIHN2cjRf cmVhZF9zb19saXN0IHdpbGwgbmV2ZXIgc2VlIHRoZQotKwkgZmlyc3QgZWxlbWVudC4gICovCi0r ICAgICAgaWYgKCFzdnI0X3JlYWRfc29fbGlzdCAobG0sIHByZXZfbG0sICZsaW5rLCAwKSkKLSsJ cmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsgIHJldHVybiAxOwotK30KLSsKLSsvKiBEaXNhYmxlIHRo ZSBwcm9iZXMtYmFzZWQgbGlua2VyIGludGVyZmFjZSBhbmQgcmV2ZXJ0IHRvIHRoZQotKyAgIG9y aWdpbmFsIGludGVyZmFjZS4gIFdlIGRvbid0IHJlc2V0IHRoZSBicmVha3BvaW50cyBhcyB0aGUK LSsgICBvbmVzIHNldCB1cCBmb3IgdGhlIHByb2Jlcy1iYXNlZCBpbnRlcmZhY2UgYXJlIGFkZXF1 YXRlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2Rpc2FibGVfcHJvYmVzX2ludGVyZmFjZV9jbGVh bnVwICh2b2lkICphcmcpCi0rewotKyAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9zdnI0 X2luZm8gKCk7Ci0rCi0rICB3YXJuaW5nIChfKCJQcm9iZXMtYmFzZWQgZHluYW1pYyBsaW5rZXIg aW50ZXJmYWNlIGZhaWxlZC5cbiIKLSsJICAgICAiUmV2ZXJ0aW5nIHRvIG9yaWdpbmFsIGludGVy ZmFjZS5cbiIpKTsKLSsKLSsgIGZyZWVfcHJvYmVzX3RhYmxlIChpbmZvKTsKLSsgIGZyZWVfc29s aWJfbGlzdCAoaW5mbyk7Ci0rfQotKwotKy8qIFVwZGF0ZSB0aGUgc29saWIgbGlzdCBhcyBhcHBy b3ByaWF0ZSB3aGVuIHVzaW5nIHRoZQotKyAgIHByb2Jlcy1iYXNlZCBsaW5rZXIgaW50ZXJmYWNl LiAgRG8gbm90aGluZyBpZiB1c2luZyB0aGUKLSsgICBzdGFuZGFyZCBpbnRlcmZhY2UuICAqLwot KwotK3N0YXRpYyB2b2lkCi0rc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQgKHZvaWQpCi0rewotKyAg c3RydWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7Ci0rICBzdHJ1Y3QgcHJv YmVfYW5kX2FjdGlvbiAqcGE7Ci0rICBlbnVtIHByb2JlX2FjdGlvbiBhY3Rpb247Ci0rICBzdHJ1 Y3QgY2xlYW51cCAqb2xkX2NoYWluLCAqdXNtX2NoYWluOwotKyAgc3RydWN0IHZhbHVlICp2YWw7 Ci0rICBDT1JFX0FERFIgcGMsIGRlYnVnX2Jhc2UsIGxtID0gMDsKLSsgIGludCBpc19pbml0aWFs X25zOwotKwotKyAgLyogRG8gbm90aGluZyBpZiBub3QgdXNpbmcgdGhlIHByb2JlcyBpbnRlcmZh Y2UuICAqLwotKyAgaWYgKGluZm8tPnByb2Jlc190YWJsZSA9PSBOVUxMKQotKyAgICByZXR1cm47 Ci0rCi0rICAvKiBJZiBhbnl0aGluZyBnb2VzIHdyb25nIHdlIHJldmVydCB0byB0aGUgb3JpZ2lu YWwgbGlua2VyCi0rICAgICBpbnRlcmZhY2UuICAqLwotKyAgb2xkX2NoYWluID0gbWFrZV9jbGVh bnVwIChkaXNhYmxlX3Byb2Jlc19pbnRlcmZhY2VfY2xlYW51cCwgTlVMTCk7Ci0rCi0rICBwYyA9 IHJlZ2NhY2hlX3JlYWRfcGMgKGdldF9jdXJyZW50X3JlZ2NhY2hlICgpKTsKLSsgIHBhID0gc29s aWJfZXZlbnRfcHJvYmVfYXQgKGluZm8sIHBjKTsKLSsgIGlmIChwYSA9PSBOVUxMKQotKyAgICB7 Ci0rICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9 Ci0rCi0rICBhY3Rpb24gPSBzb2xpYl9ldmVudF9wcm9iZV9hY3Rpb24gKHBhKTsKLSsgIGlmIChh Y3Rpb24gPT0gUFJPQkVTX0lOVEVSRkFDRV9GQUlMRUQpCi0rICAgIHsKLSsgICAgICBkb19jbGVh bnVwcyAob2xkX2NoYWluKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIGlmIChhY3Rp b24gPT0gRE9fTk9USElORykKLSsgICAgewotKyAgICAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9j aGFpbik7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICAvKiBldmFsdWF0ZV9wcm9iZV9h cmd1bWVudCBsb29rcyB1cCBzeW1ib2xzIGluIHRoZSBkeW5hbWljIGxpbmtlcgotKyAgICAgdXNp bmcgZmluZF9wY19zZWN0aW9uLiAgZmluZF9wY19zZWN0aW9uIGlzIGFjY2VsZXJhdGVkIGJ5IGEg Y2FjaGUKLSsgICAgIGNhbGxlZCB0aGUgc2VjdGlvbiBtYXAuICBUaGUgc2VjdGlvbiBtYXAgaXMg aW52YWxpZGF0ZWQgZXZlcnkKLSsgICAgIHRpbWUgYSBzaGFyZWQgbGlicmFyeSBpcyBsb2FkZWQg b3IgdW5sb2FkZWQsIGFuZCBpZiB0aGUgaW5mZXJpb3IKLSsgICAgIGlzIGdlbmVyYXRpbmcgYSBs b3Qgb2Ygc2hhcmVkIGxpYnJhcnkgZXZlbnRzIHRoZW4gdGhlIHNlY3Rpb24gbWFwCi0rICAgICB3 aWxsIGJlIHVwZGF0ZWQgZXZlcnkgdGltZSBzdnI0X2hhbmRsZV9zb2xpYl9ldmVudCBpcyBjYWxs ZWQuCi0rICAgICBXZSBjYWxsZWQgZmluZF9wY19zZWN0aW9uIGluIHN2cjRfY3JlYXRlX3NvbGli X2V2ZW50X2JyZWFrcG9pbnRzLAotKyAgICAgc28gd2UgY2FuIGd1YXJhbnRlZSB0aGF0IHRoZSBk eW5hbWljIGxpbmtlcidzIHNlY3Rpb25zIGFyZSBpbiB0aGUKLSsgICAgIHNlY3Rpb24gbWFwLiAg V2UgY2FuIHRoZXJlZm9yZSBpbmhpYml0IHNlY3Rpb24gbWFwIHVwZGF0ZXMgYWNyb3NzCi0rICAg ICB0aGVzZSBjYWxscyB0byBldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCBhbmQgc2F2ZSBhIGxvdCBv ZiB0aW1lLiAgKi8KLSsgIGluaGliaXRfc2VjdGlvbl9tYXBfdXBkYXRlcyAoY3VycmVudF9wcm9n cmFtX3NwYWNlKTsKLSsgIHVzbV9jaGFpbiA9IG1ha2VfY2xlYW51cCAocmVzdW1lX3NlY3Rpb25f bWFwX3VwZGF0ZXNfY2xlYW51cCwKLSsJCQkgICAgY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLSsK LSsgIHZhbCA9IGV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChwYS0+cHJvYmUsIDEpOwotKyAgaWYg KHZhbCA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0r ICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICBkZWJ1Z19iYXNlID0gdmFsdWVfYXNfYWRkcmVz cyAodmFsKTsKLSsgIGlmIChkZWJ1Z19iYXNlID09IDApCi0rICAgIHsKLSsgICAgICBkb19jbGVh bnVwcyAob2xkX2NoYWluKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIC8qIEFsd2F5 cyBsb2NhdGUgdGhlIGRlYnVnIHN0cnVjdCwgaW4gY2FzZSBpdCBtb3ZlZC4gICovCi0rICBpbmZv LT5kZWJ1Z19iYXNlID0gMDsKLSsgIGlmIChsb2NhdGVfYmFzZSAoaW5mbykgPT0gMCkKLSsgICAg ewotKyAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotKyAgICAgIHJldHVybjsKLSsgICAg fQotKwotKyAgLyogR0RCIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IGxpYnJhcmllcyBsb2Fk ZWQgdmlhIGRsbW9wZW4KLSsgICAgIGludG8gbmFtZXNwYWNlcyBvdGhlciB0aGFuIHRoZSBpbml0 aWFsIG9uZS4gIFdlIG11c3QgaWdub3JlCi0rICAgICBhbnkgbmFtZXNwYWNlIG90aGVyIHRoYW4g dGhlIGluaXRpYWwgbmFtZXNwYWNlIGhlcmUgdW50aWwKLSsgICAgIHN1cHBvcnQgZm9yIHRoaXMg aXMgYWRkZWQgdG8gR0RCLiAgKi8KLSsgIGlmIChkZWJ1Z19iYXNlICE9IGluZm8tPmRlYnVnX2Jh c2UpCi0rICAgIGFjdGlvbiA9IERPX05PVEhJTkc7Ci0rCi0rICBpZiAoYWN0aW9uID09IFVQREFU RV9PUl9SRUxPQUQpCi0rICAgIHsKLSsgICAgICB2YWwgPSBldmFsdWF0ZV9wcm9iZV9hcmd1bWVu dCAocGEtPnByb2JlLCAyKTsKLSsgICAgICBpZiAodmFsICE9IE5VTEwpCi0rCWxtID0gdmFsdWVf YXNfYWRkcmVzcyAodmFsKTsKLSsKLSsgICAgICBpZiAobG0gPT0gMCkKLSsJYWN0aW9uID0gRlVM TF9SRUxPQUQ7Ci0rICAgIH0KLSsKLSsgIC8qIFJlc3VtZSBzZWN0aW9uIG1hcCB1cGRhdGVzLiAg Ki8KLSsgIGRvX2NsZWFudXBzICh1c21fY2hhaW4pOwotKwotKyAgaWYgKGFjdGlvbiA9PSBVUERB VEVfT1JfUkVMT0FEKQotKyAgICB7Ci0rICAgICAgaWYgKCFzb2xpc3RfdXBkYXRlX2luY3JlbWVu dGFsIChpbmZvLCBsbSkpCi0rCWFjdGlvbiA9IEZVTExfUkVMT0FEOwotKyAgICB9Ci0rCi0rICBp ZiAoYWN0aW9uID09IEZVTExfUkVMT0FEKQotKyAgICB7Ci0rICAgICAgaWYgKCFzb2xpc3RfdXBk YXRlX2Z1bGwgKGluZm8pKQotKwl7Ci0rCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rCSAg cmV0dXJuOwotKwl9Ci0rICAgIH0KLSsKLSsgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7 Ci0rfQotKwotKy8qIEhlbHBlciBmdW5jdGlvbiBmb3Igc3ZyNF91cGRhdGVfc29saWJfZXZlbnRf YnJlYWtwb2ludHMuICAqLwotKwotK3N0YXRpYyBpbnQKLStzdnI0X3VwZGF0ZV9zb2xpYl9ldmVu dF9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgdm9pZCAqYXJnKQotK3sKLSsgIHN0 cnVjdCBicF9sb2NhdGlvbiAqbG9jOwotKwotKyAgaWYgKGItPnR5cGUgIT0gYnBfc2hsaWJfZXZl bnQpCi0rICAgIHsKLSsgICAgICAvKiBDb250aW51ZSBpdGVyYXRpbmcuICAqLwotKyAgICAgIHJl dHVybiAwOwotKyAgICB9Ci0rCi0rICBmb3IgKGxvYyA9IGItPmxvYzsgbG9jICE9IE5VTEw7IGxv YyA9IGxvYy0+bmV4dCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBzdnI0X2luZm8gKmluZm87Ci0r ICAgICAgc3RydWN0IHByb2JlX2FuZF9hY3Rpb24gKnBhOwotKwotKyAgICAgIGluZm8gPSBwcm9n cmFtX3NwYWNlX2RhdGEgKGxvYy0+cHNwYWNlLCBzb2xpYl9zdnI0X3BzcGFjZV9kYXRhKTsKLSsg ICAgICBpZiAoaW5mbyA9PSBOVUxMIHx8IGluZm8tPnByb2Jlc190YWJsZSA9PSBOVUxMKQotKwlj b250aW51ZTsKLSsKLSsgICAgICBwYSA9IHNvbGliX2V2ZW50X3Byb2JlX2F0IChpbmZvLCBsb2Mt PmFkZHJlc3MpOwotKyAgICAgIGlmIChwYSA9PSBOVUxMKQotKwljb250aW51ZTsKLSsKLSsgICAg ICBpZiAocGEtPmFjdGlvbiA9PSBET19OT1RISU5HKQotKwl7Ci0rCSAgaWYgKGItPmVuYWJsZV9z dGF0ZSA9PSBicF9kaXNhYmxlZCAmJiBzdG9wX29uX3NvbGliX2V2ZW50cykKLSsJICAgIGVuYWJs ZV9icmVha3BvaW50IChiKTsKLSsJICBlbHNlIGlmIChiLT5lbmFibGVfc3RhdGUgPT0gYnBfZW5h YmxlZCAmJiAhc3RvcF9vbl9zb2xpYl9ldmVudHMpCi0rCSAgICBkaXNhYmxlX2JyZWFrcG9pbnQg KGIpOwotKwl9Ci0rCi0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgIC8qIENvbnRpbnVlIGl0 ZXJhdGluZy4gICovCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogRW5hYmxlIG9yIGRpc2FibGUg b3B0aW9uYWwgc29saWIgZXZlbnQgYnJlYWtwb2ludHMgYXMgYXBwcm9wcmlhdGUuCi0rICAgQ2Fs bGVkIHdoZW5ldmVyIHN0b3Bfb25fc29saWJfZXZlbnRzIGlzIGNoYW5nZWQuICAqLwotKwotK3N0 YXRpYyB2b2lkCi0rc3ZyNF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMgKHZvaWQpCi0r ewotKyAgaXRlcmF0ZV9vdmVyX2JyZWFrcG9pbnRzIChzdnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9i cmVha3BvaW50LCBOVUxMKTsKLSt9Ci0rCi0rLyogQ3JlYXRlIGFuZCByZWdpc3RlciBzb2xpYiBl dmVudCBicmVha3BvaW50cy4gIFBST0JFUyBpcyBhbiBhcnJheQotKyAgIG9mIE5VTV9QUk9CRVMg ZWxlbWVudHMsIGVhY2ggb2Ygd2hpY2ggaXMgdmVjdG9yIG9mIHByb2Jlcy4gIEEKLSsgICBzb2xp YiBldmVudCBicmVha3BvaW50IHdpbGwgYmUgY3JlYXRlZCBhbmQgcmVnaXN0ZXJlZCBmb3IgZWFj aAotKyAgIHByb2JlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3N2cjRfY3JlYXRlX3Byb2JlX2Jy ZWFrcG9pbnRzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsJCQkgICAgICAgVkVDIChwcm9i ZV9wKSAqKnByb2JlcykKLSt7Ci0rICBpbnQgaTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBOVU1f UFJPQkVTOyBpKyspCi0rICAgIHsKLSsgICAgICBlbnVtIHByb2JlX2FjdGlvbiBhY3Rpb24gPSBw cm9iZV9pbmZvW2ldLmFjdGlvbjsKLSsgICAgICBzdHJ1Y3QgcHJvYmUgKnByb2JlOwotKyAgICAg IGludCBpeDsKLSsKLSsgICAgICBmb3IgKGl4ID0gMDsKLSsJICAgVkVDX2l0ZXJhdGUgKHByb2Jl X3AsIHByb2Jlc1tpXSwgaXgsIHByb2JlKTsKLSsJICAgKytpeCkKLSsJewotKwkgIGNyZWF0ZV9z b2xpYl9ldmVudF9icmVha3BvaW50IChnZGJhcmNoLCBwcm9iZS0+YWRkcmVzcyk7Ci0rCSAgcmVn aXN0ZXJfc29saWJfZXZlbnRfcHJvYmUgKHByb2JlLCBhY3Rpb24pOwotKwl9Ci0rICAgIH0KLSsK LSsgIHN2cjRfdXBkYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzICgpOwotK30KLSsKLSsvKiBC b3RoIHRoZSBTdW5PUyBhbmQgdGhlIFNWUjQgZHluYW1pYyBsaW5rZXJzIGNhbGwgYSBtYXJrZXIg ZnVuY3Rpb24KLSsgICBiZWZvcmUgYW5kIGFmdGVyIG1hcHBpbmcgYW5kIHVubWFwcGluZyBzaGFy ZWQgbGlicmFyaWVzLiAgVGhlIHNvbGUKLSsgICBwdXJwb3NlIG9mIHRoaXMgbWV0aG9kIGlzIHRv IGFsbG93IGRlYnVnZ2VycyB0byBzZXQgYSBicmVha3BvaW50IHNvCi0rICAgdGhleSBjYW4gdHJh Y2sgdGhlc2UgY2hhbmdlcy4KLSsKLSsgICBTb21lIHZlcnNpb25zIG9mIHRoZSBnbGliYyBkeW5h bWljIGxpbmtlciBjb250YWluIG5hbWVkIHByb2JlcwotKyAgIHRvIGFsbG93IG1vcmUgZmluZSBn cmFpbmVkIHN0b3BwaW5nLiAgR2l2ZW4gdGhlIGFkZHJlc3Mgb2YgdGhlCi0rICAgb3JpZ2luYWwg bWFya2VyIGZ1bmN0aW9uLCB0aGlzIGZ1bmN0aW9uIGF0dGVtcHRzIHRvIGZpbmQgdGhlc2UKLSsg ICBwcm9iZXMsIGFuZCBpZiBmb3VuZCwgc2V0cyBicmVha3BvaW50cyBvbiB0aG9zZSBpbnN0ZWFk LiAgSWYgdGhlCi0rICAgcHJvYmVzIGFyZW4ndCBmb3VuZCwgYSBzaW5nbGUgYnJlYWtwb2ludCBp cyBzZXQgb24gdGhlIG9yaWdpbmFsCi0rICAgbWFya2VyIGZ1bmN0aW9uLiAgKi8KLSsKLStzdGF0 aWMgdm9pZAotK3N2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwKLSsJCQkJICAgICBDT1JFX0FERFIgYWRkcmVzcykKLSt7Ci0rICBzdHJ1 Y3Qgb2JqX3NlY3Rpb24gKm9zOwotKwotKyAgb3MgPSBmaW5kX3BjX3NlY3Rpb24gKGFkZHJlc3Mp OwotKyAgaWYgKG9zICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBpbnQgd2l0aF9wcmVmaXg7Ci0r Ci0rICAgICAgZm9yICh3aXRoX3ByZWZpeCA9IDA7IHdpdGhfcHJlZml4IDw9IDE7IHdpdGhfcHJl Zml4KyspCi0rCXsKLSsJICBWRUMgKHByb2JlX3ApICpwcm9iZXNbTlVNX1BST0JFU107Ci0rCSAg aW50IGFsbF9wcm9iZXNfZm91bmQgPSAxOwotKwkgIGludCBpOwotKwotKwkgIG1lbXNldCAocHJv YmVzLCAwLCBzaXplb2YgKHByb2JlcykpOwotKwkgIGZvciAoaSA9IDA7IGkgPCBOVU1fUFJPQkVT OyBpKyspCi0rCSAgICB7Ci0rCSAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBwcm9iZV9pbmZvW2ld Lm5hbWU7Ci0rCSAgICAgIGNoYXIgYnVmWzMyXTsKLSsKLSsJICAgICAgLyogRmVkb3JhIDE3IGFu ZCBSZWQgSGF0IEVudGVycHJpc2UgTGludXggNi4yLTYuNAotKwkJIHNoaXBwZWQgd2l0aCBhbiBl YXJseSB2ZXJzaW9uIG9mIHRoZSBwcm9iZXMgY29kZSBpbgotKwkJIHdoaWNoIHRoZSBwcm9iZXMn IG5hbWVzIHdlcmUgcHJlZml4ZWQgd2l0aCAicnRsZF8iCi0rCQkgYW5kIHRoZSAibWFwX2ZhaWxl ZCIgcHJvYmUgZGlkIG5vdCBleGlzdC4gIFRoZQotKwkJIGxvY2F0aW9ucyBvZiB0aGUgcHJvYmVz IGFyZSBvdGhlcndpc2UgdGhlIHNhbWUsIHNvCi0rCQkgd2UgY2hlY2sgZm9yIHByb2JlcyB3aXRo IHByZWZpeGVkIG5hbWVzIGlmIHByb2JlcwotKwkJIHdpdGggdW5wcmVmaXhlZCBuYW1lcyBhcmUg bm90IHByZXNlbnQuICAqLwotKwkgICAgICBpZiAod2l0aF9wcmVmaXgpCi0rCQl7Ci0rCQkgIHhz bnByaW50ZiAoYnVmLCBzaXplb2YgKGJ1ZiksICJydGxkXyVzIiwgbmFtZSk7Ci0rCQkgIG5hbWUg PSBidWY7Ci0rCQl9Ci0rCi0rCSAgICAgIHByb2Jlc1tpXSA9IGZpbmRfcHJvYmVzX2luX29iamZp bGUgKG9zLT5vYmpmaWxlLCAicnRsZCIsIG5hbWUpOwotKwotKwkgICAgICAvKiBUaGUgIm1hcF9m YWlsZWQiIHByb2JlIGRpZCBub3QgZXhpc3QgaW4gZWFybHkKLSsJCSB2ZXJzaW9ucyBvZiB0aGUg cHJvYmVzIGNvZGUgaW4gd2hpY2ggdGhlIHByb2JlcycKLSsJCSBuYW1lcyB3ZXJlIHByZWZpeGVk IHdpdGggInJ0bGRfIi4gICovCi0rCSAgICAgIGlmIChzdHJjbXAgKG5hbWUsICJydGxkX21hcF9m YWlsZWQiKSA9PSAwKQotKwkJY29udGludWU7Ci0rCi0rCSAgICAgIGlmIChWRUNfZW1wdHkgKHBy b2JlX3AsIHByb2Jlc1tpXSkpCi0rCQl7Ci0rCQkgIGFsbF9wcm9iZXNfZm91bmQgPSAwOwotKwkJ ICBicmVhazsKLSsJCX0KLSsJICAgIH0KLSsKLSsJICBpZiAoYWxsX3Byb2Jlc19mb3VuZCkKLSsJ ICAgIHN2cjRfY3JlYXRlX3Byb2JlX2JyZWFrcG9pbnRzIChnZGJhcmNoLCBwcm9iZXMpOwotKwot KwkgIGZvciAoaSA9IDA7IGkgPCBOVU1fUFJPQkVTOyBpKyspCi0rCSAgICBWRUNfZnJlZSAocHJv YmVfcCwgcHJvYmVzW2ldKTsKLSsKLSsJICBpZiAoYWxsX3Byb2Jlc19mb3VuZCkKLSsJICAgIHJl dHVybjsKLSsJfQotKyAgICB9Ci0rCi0rICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAo Z2RiYXJjaCwgYWRkcmVzcyk7Ci0rfQotKwotIC8qIEhlbHBlciBmdW5jdGlvbiBmb3IgZ2RiX2Jm ZF9sb29rdXBfc3ltYm9sLiAgKi8KLSAKLSBzdGF0aWMgaW50Ci1AQCAtMTUzMiw3ICsyMTUxLDcg QEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgotIAkgVGhhdCBrbm93 bGVkZ2UgaXMgZW5jb2RlZCBpbiB0aGUgYWRkcmVzcywgaWYgaXQncyBUaHVtYiB0aGUgbG93IGJp dAotIAkgaXMgMS4gIEhvd2V2ZXIsIHdlJ3ZlIHN0cmlwcGVkIHRoYXQgaW5mbyBhYm92ZSBhbmQg aXQncyBub3QgY2xlYXIKLSAJIHdoYXQgYWxsIHRoZSBjb25zZXF1ZW5jZXMgYXJlIG9mIHBhc3Np bmcgYSBub24tYWRkcl9iaXRzX3JlbW92ZSdkCi0tCSBhZGRyZXNzIHRvIGNyZWF0ZV9zb2xpYl9l dmVudF9icmVha3BvaW50LiAgVGhlIGNhbGwgdG8KLSsJIGFkZHJlc3MgdG8gc3ZyNF9jcmVhdGVf c29saWJfZXZlbnRfYnJlYWtwb2ludHMuICBUaGUgY2FsbCB0bwotIAkgZmluZF9wY19zZWN0aW9u IHZlcmlmaWVzIHdlIGtub3cgYWJvdXQgdGhlIGFkZHJlc3MgYW5kIGhhdmUgc29tZQotIAkgaG9w ZSBvZiBjb21wdXRpbmcgdGhlIHJpZ2h0IGtpbmQgb2YgYnJlYWtwb2ludCB0byB1c2UgKHZpYQot IAkgc3ltYm9sIGluZm8pLiAgSXQgZG9lcyBtZWFuIHRoYXQgR0RCIG5lZWRzIHRvIGJlIHBvaW50 ZWQgYXQgYQotQEAgLTE1NzAsNyArMjE4OSw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRf aW5mbyAqaW5mbywgaW4KLSAJCSsgYmZkX3NlY3Rpb25fc2l6ZSAodG1wX2JmZCwgaW50ZXJwX3Nl Y3QpOwotIAkgICAgfQotIAotLQkgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50ICh0YXJn ZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOwotKwkgIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2Jy ZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOwotIAkgIHJldHVybiAxOwot IAl9Ci0gICAgIH0KLUBAIC0xNzI4LDcgKzIzNDcsOCBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBz dnI0X2luZm8gKmluZm8sIGluCi0gCi0gICAgICAgaWYgKHN5bV9hZGRyICE9IDApCi0gCXsKLS0J ICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAodGFyZ2V0X2dkYmFyY2ggKCksIGxvYWRf YWRkciArIHN5bV9hZGRyKTsKLSsJICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50 cyAodGFyZ2V0X2dkYmFyY2ggKCksCi0rCQkJCQkgICAgICAgbG9hZF9hZGRyICsgc3ltX2FkZHIp OwotIAkgIHhmcmVlIChpbnRlcnBfbmFtZSk7Ci0gCSAgcmV0dXJuIDE7Ci0gCX0KLUBAIC0xNzU0 LDcgKzIzNzQsNyBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCi0g CSAgc3ltX2FkZHIgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyICh0YXJnZXRf Z2RiYXJjaCAoKSwKLSAJCQkJCQkJIHN5bV9hZGRyLAotIAkJCQkJCQkgJmN1cnJlbnRfdGFyZ2V0 KTsKLS0JICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAodGFyZ2V0X2dkYmFyY2ggKCks IHN5bV9hZGRyKTsKLSsJICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyAodGFy Z2V0X2dkYmFyY2ggKCksIHN5bV9hZGRyKTsKLSAJICByZXR1cm4gMTsKLSAJfQotICAgICB9Ci1A QCAtMTc3MCw3ICsyMzkwLDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZv LCBpbgotIAkgICAgICBzeW1fYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2Fk ZHIgKHRhcmdldF9nZGJhcmNoICgpLAotIAkJCQkJCQkgICAgIHN5bV9hZGRyLAotIAkJCQkJCQkg ICAgICZjdXJyZW50X3RhcmdldCk7Ci0tCSAgICAgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3Bv aW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOwotKwkgICAgICBzdnI0X2NyZWF0ZV9z b2xpYl9ldmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2ggKCksIHN5bV9hZGRyKTsKLSAJ ICAgICAgcmV0dXJuIDE7Ci0gCSAgICB9Ci0gCX0KLUBAIC0yMjY2LDYgKzI4ODYsMTAgQEAgc3Zy NF9zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoaW50IGZybwotIAotICAgaW5mbyA9IGdldF9z dnI0X2luZm8gKCk7Ci0gCi0rICAvKiBDbGVhciB0aGUgcHJvYmVzLWJhc2VkIGludGVyZmFjZSdz IHN0YXRlLiAgKi8KLSsgIGZyZWVfcHJvYmVzX3RhYmxlIChpbmZvKTsKLSsgIGZyZWVfc29saWJf bGlzdCAoaW5mbyk7Ci0rCi0gICAvKiBSZWxvY2F0ZSB0aGUgbWFpbiBleGVjdXRhYmxlIGlmIG5l Y2Vzc2FyeS4gICovCi0gICBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAoKTsKLSAKLUBA IC0yNTA3LDQgKzMxMzEsNiBAQCBfaW5pdGlhbGl6ZV9zdnI0X3NvbGliICh2b2lkKQotICAgc3Zy NF9zb19vcHMubG9va3VwX2xpYl9nbG9iYWxfc3ltYm9sID0gZWxmX2xvb2t1cF9saWJfc3ltYm9s OwotICAgc3ZyNF9zb19vcHMuc2FtZSA9IHN2cjRfc2FtZTsKLSAgIHN2cjRfc29fb3BzLmtlZXBf ZGF0YV9pbl9jb3JlID0gc3ZyNF9rZWVwX2RhdGFfaW5fY29yZTsKLSsgIHN2cjRfc29fb3BzLnVw ZGF0ZV9icmVha3BvaW50cyA9IHN2cjRfdXBkYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzOwot KyAgc3ZyNF9zb19vcHMuaGFuZGxlX2V2ZW50ID0gc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQ7Ci0g fQotSW5kZXg6IGdkYi03LjYvZ2RiL3NvbGliLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9y aWcvZ2RiL3NvbGliLmMJMjAxMy0wNi0xMCAxNDo0NDozNy4zOTI4MTI2NzUgKzAyMDAKLSsrKyBn ZGItNy42L2dkYi9zb2xpYi5jCTIwMTMtMDYtMTAgMTQ6NDQ6MzcuNzEzODEyNTc4ICswMjAwCi1A QCAtMTIyMSw2ICsxMjIxLDM3IEBAIG5vX3NoYXJlZF9saWJyYXJpZXMgKGNoYXIgKmlnbm9yZWQs IGludAotICAgb2JqZmlsZV9wdXJnZV9zb2xpYnMgKCk7Ci0gfQotIAotKy8qIFNlZSBzb2xpYi5o LiAgKi8KLSsKLSt2b2lkCi0rdXBkYXRlX3NvbGliX2JyZWFrcG9pbnRzICh2b2lkKQotK3sKLSsg IGNvbnN0IHN0cnVjdCB0YXJnZXRfc29fb3BzICpvcHMgPSBzb2xpYl9vcHMgKHRhcmdldF9nZGJh cmNoICgpKTsKLSsKLSsgIGlmIChvcHMtPnVwZGF0ZV9icmVha3BvaW50cyAhPSBOVUxMKQotKyAg ICBvcHMtPnVwZGF0ZV9icmVha3BvaW50cyAoKTsKLSt9Ci0rCi0rLyogU2VlIHNvbGliLmguICAq LwotKwotK3ZvaWQKLStoYW5kbGVfc29saWJfZXZlbnQgKHZvaWQpCi0rewotKyAgY29uc3Qgc3Ry dWN0IHRhcmdldF9zb19vcHMgKm9wcyA9IHNvbGliX29wcyAodGFyZ2V0X2dkYmFyY2ggKCkpOwot KwotKyAgaWYgKG9wcy0+aGFuZGxlX2V2ZW50ICE9IE5VTEwpCi0rICAgIG9wcy0+aGFuZGxlX2V2 ZW50ICgpOwotKwotKyAgY2xlYXJfcHJvZ3JhbV9zcGFjZV9zb2xpYl9jYWNoZSAoY3VycmVudF9p bmZlcmlvciAoKS0+cHNwYWNlKTsKLSsKLSsgIC8qIENoZWNrIGZvciBhbnkgbmV3bHkgYWRkZWQg c2hhcmVkIGxpYnJhcmllcyBpZiB3ZSdyZSBzdXBwb3NlZCB0bwotKyAgICAgYmUgYWRkaW5nIHRo ZW0gYXV0b21hdGljYWxseS4gIFN3aXRjaCB0ZXJtaW5hbCBmb3IgYW55IG1lc3NhZ2VzCi0rICAg ICBwcm9kdWNlZCBieSBicmVha3BvaW50X3JlX3NldC4gICovCi0rICB0YXJnZXRfdGVybWluYWxf b3Vyc19mb3Jfb3V0cHV0ICgpOwotKyAgc29saWJfYWRkIChOVUxMLCAwLCAmY3VycmVudF90YXJn ZXQsIGF1dG9fc29saWJfYWRkKTsKLSsgIHRhcmdldF90ZXJtaW5hbF9pbmZlcmlvciAoKTsKLSt9 Ci0rCi0gLyogUmVsb2FkIHNoYXJlZCBsaWJyYXJpZXMsIGJ1dCBhdm9pZCByZWxvYWRpbmcgdGhl IHNhbWUgc3ltYm9sIGZpbGUKLSAgICB3ZSBhbHJlYWR5IGhhdmUgbG9hZGVkLiAgKi8KLSAKLUlu ZGV4OiBnZGItNy42L2dkYi9zb2xpYi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dk Yi9zb2xpYi5oCTIwMTMtMDEtMDEgMDc6MzI6NTEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu Ni9nZGIvc29saWIuaAkyMDEzLTA2LTEwIDE0OjQ0OjM3LjcxMzgxMjU3OCArMDIwMAotQEAgLTkw LDQgKzkwLDEyIEBAIGV4dGVybiBDT1JFX0FERFIgZ2RiX2JmZF9sb29rdXBfc3ltYm9sX2YKLSAJ CQkJCQkJCSAgICAgIHZvaWQgKiksCi0gCQkJCQkJICAgIHZvaWQgKmRhdGEpOwotIAotKy8qIEVu YWJsZSBvciBkaXNhYmxlIG9wdGlvbmFsIHNvbGliIGV2ZW50IGJyZWFrcG9pbnRzIGFzIGFwcHJv cHJpYXRlLiAgKi8KLSsKLStleHRlcm4gdm9pZCB1cGRhdGVfc29saWJfYnJlYWtwb2ludHMgKHZv aWQpOwotKwotKy8qIEhhbmRsZSBhbiBzb2xpYiBldmVudCBieSBjYWxsaW5nIHNvbGliX2FkZC4g ICovCi0rCi0rZXh0ZXJuIHZvaWQgaGFuZGxlX3NvbGliX2V2ZW50ICh2b2lkKTsKLSsKLSAjZW5k aWYgLyogU09MSUJfSCAqLwotSW5kZXg6IGdkYi03LjYvZ2RiL3NvbGlzdC5oCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9zb2xpc3QuaAkyMDEzLTAxLTAxIDA3OjMyOjUxLjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjYvZ2RiL3NvbGlzdC5oCTIwMTMtMDYtMTAgMTQ6NDQ6Mzcu NzEzODEyNTc4ICswMjAwCi1AQCAtMTQ4LDYgKzE0OCwxOSBAQCBzdHJ1Y3QgdGFyZ2V0X3NvX29w cwotICAgICAgICBjb3JlIGZpbGUgKGluIHBhcnRpY3VsYXIsIGZvciByZWFkb25seSBzZWN0aW9u cykuICAqLwotICAgICBpbnQgKCprZWVwX2RhdGFfaW5fY29yZSkgKENPUkVfQUREUiB2YWRkciwK LSAJCQkgICAgICB1bnNpZ25lZCBsb25nIHNpemUpOwotKwotKyAgICAvKiBFbmFibGUgb3IgZGlz YWJsZSBvcHRpb25hbCBzb2xpYiBldmVudCBicmVha3BvaW50cyBhcwotKyAgICAgICBhcHByb3By aWF0ZS4gIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3aGVuZXZlcgotKyAgICAgICBzdG9wX29uX3Nv bGliX2V2ZW50cyBpcyBjaGFuZ2VkLiAgVGhpcyBwb2ludGVyIGNhbiBiZQotKyAgICAgICBOVUxM LCBpbiB3aGljaCBjYXNlIG5vIGVuYWJsaW5nIG9yIGRpc2FibGluZyBpcyBuZWNlc3NhcnkKLSsg ICAgICAgZm9yIHRoaXMgdGFyZ2V0LiAgKi8KLSsgICAgdm9pZCAoKnVwZGF0ZV9icmVha3BvaW50 cykgKHZvaWQpOwotKwotKyAgICAvKiBUYXJnZXQtc3BlY2lmaWMgcHJvY2Vzc2luZyBvZiBzb2xp YiBldmVudHMgdGhhdCB3aWxsIGJlCi0rICAgICAgIHBlcmZvcm1lZCBiZWZvcmUgc29saWJfYWRk IGlzIGNhbGxlZC4gIFRoaXMgcG9pbnRlciBjYW4gYmUKLSsgICAgICAgTlVMTCwgaW4gd2hpY2gg Y2FzZSBubyBzcGVjaWZpYyBwcmVwcm9jZXNzaW5nIGlzIG5lY2Vzc2FyeQotKyAgICAgICBmb3Ig dGhpcyB0YXJnZXQuICAqLwotKyAgICB2b2lkICgqaGFuZGxlX2V2ZW50KSAodm9pZCk7Ci0gICB9 OwotIAotIC8qIEZyZWUgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggYSAoc29fbGlzdCAqKS4g ICovCi1JbmRleDogZ2RiLTcuNi9nZGIvYnJlYWtwb2ludC5jCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNi5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMy0wNi0xMCAxNDo0NDozNy41MDA4MTI2NDIg KzAyMDAKLSsrKyBnZGItNy42L2dkYi9icmVha3BvaW50LmMJMjAxMy0wNi0xMCAxNDo0NDo1Ny4z MDE4MDY3MDggKzAyMDAKLUBAIC01MzQ4LDI1ICs1MzQ4LDYgQEAgaGFuZGxlX2ppdF9ldmVudCAo dm9pZCkKLSAgIHRhcmdldF90ZXJtaW5hbF9pbmZlcmlvciAoKTsKLSB9Ci0gCi0tLyogSGFuZGxl IGFuIHNvbGliIGV2ZW50IGJ5IGNhbGxpbmcgc29saWJfYWRkLiAgKi8KLS0KLS12b2lkCi0taGFu ZGxlX3NvbGliX2V2ZW50ICh2b2lkKQotLXsKLS0gIGNsZWFyX3Byb2dyYW1fc3BhY2Vfc29saWJf Y2FjaGUgKGN1cnJlbnRfaW5mZXJpb3IgKCktPnBzcGFjZSk7Ci0tCi0tICAvKiBDaGVjayBmb3Ig YW55IG5ld2x5IGFkZGVkIHNoYXJlZCBsaWJyYXJpZXMgaWYgd2UncmUgc3VwcG9zZWQgdG8KLS0g ICAgIGJlIGFkZGluZyB0aGVtIGF1dG9tYXRpY2FsbHkuICBTd2l0Y2ggdGVybWluYWwgZm9yIGFu eSBtZXNzYWdlcwotLSAgICAgcHJvZHVjZWQgYnkgYnJlYWtwb2ludF9yZV9zZXQuICAqLwotLSAg dGFyZ2V0X3Rlcm1pbmFsX291cnNfZm9yX291dHB1dCAoKTsKLS0jaWZkZWYgU09MSUJfQURECi0t ICBTT0xJQl9BREQgKE5VTEwsIDAsICZjdXJyZW50X3RhcmdldCwgYXV0b19zb2xpYl9hZGQpOwot LSNlbHNlCi0tICBzb2xpYl9hZGQgKE5VTEwsIDAsICZjdXJyZW50X3RhcmdldCwgYXV0b19zb2xp Yl9hZGQpOwotLSNlbmRpZgotLSAgdGFyZ2V0X3Rlcm1pbmFsX2luZmVyaW9yICgpOwotLX0KLS0K LSAvKiBQcmVwYXJlIFdIQVQgZmluYWwgZGVjaXNpb24gZm9yIGluZnJ1bi4gICovCi0gCi0gLyog RGVjaWRlIHdoYXQgaW5mcnVuIG5lZWRzIHRvIGRvIHdpdGggdGhpcyBicHN0YXQuICAqLwoKZGlm ZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS04b2Y5LnBhdGNoIGIvZ2RiLWRsb3Blbi1z dGFwLXByb2JlLThvZjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNjYz OGEuLjAwMDAwMDAKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLThvZjkucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSw0NjIgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1j dnMvMjAxMy0wNi9tc2cwMDAxOS5odG1sCi0KLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VM b2cJMjAxMy8wNS8zMCAwMDoyNToxNgkxLjM2ODIKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFu Z2VMb2cJMjAxMy8wNi8wNCAxMzoyMzozMQkxLjM2ODMKLSMjIC0xLDMgKzEsMTkgQEAKLSsyMDEz LTA2LTA0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCSAg ICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4KLSsKLSsJKiBsaWIvZ2RiLmV4cCAo YnVpbGRfZXhlY3V0YWJsZV9mcm9tX3NwZWNzKTogVXNlIGdkYl9jb21waWxlX3B0aHJlYWQsCi0r CWdkYl9jb21waWxlX3NobGliIG9yIGdkYl9jb21waWxlX3NobGliX3B0aHJlYWRzIHdoZXJlIGFw cHJvcHJpYXRlLgotKwkqIGxpYi9wcmVsaW5rLXN1cHBvcnQuZXhwIChidWlsZF9leGVjdXRhYmxl X293bl9saWJzKTogQWxsb3cgSU5URVJQCi0rCXRvIGJlIHNldCB0byAibm8iIHRvIGluZGljYXRl IHRoYXQgbm8gbGQuc28gY29weSBzaG91bGQgYmUgbWFkZS4KLSsJKiBnZGIuYmFzZS9icmVhay1p bnRlcnAuZXhwIChzb2xpYl9icCk6IE5ldyBjb25zdGFudC4KLSsJKHJlYWNoXzEpOiBVc2UgdGhl IGFib3ZlIGluc3RlYWQgb2YgIl9kbF9kZWJ1Z19zdGF0ZSIuCi0rCSh0ZXN0X2F0dGFjaCk6IExp a2V3aXNlLgotKwkodGVzdF9sZCk6IExpa2V3aXNlLgotKwkqIGdkYi50aHJlYWRzL2Rsb3Blbi1s aWJwdGhyZWFkLmV4cDogTmV3IGZpbGUuCi0rCSogZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJl YWQuYzogTGlrZXdpc2UuCi0rCSogZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQtbGliLmM6 IExpa2V3aXNlLgotKwkqIGdkYi5iYXNlL3NvbGliLWNvcnJ1cHRlZC5leHA6IERpc2FibGUgdGVz dCBpZiBHREIgaXMgdXNpbmcgcHJvYmVzLgotKwotIDIwMTMtMDUtMzAgIFlhbyBRaSAgPHlhb0Bj b2Rlc291cmNlcnkuY29tPgotIAotIAkqIGdkYi5taS9taS1jbWQtcGFyYW0tY2hhbmdlZC5leHAg KHRlc3RfY29tbWFuZF9wYXJhbV9jaGFuZ2VkKToKLUluZGV4OiBnZGItNy42L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMy0wNi0xMCAxNDoy OToyNC44MTUxMjM5NDEgKzAyMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YnJlYWstaW50ZXJwLmV4cAkyMDEzLTA2LTEwIDE0OjMwOjE4LjA4NjEwMjM3NSArMDIwMAotQEAg LTEwOSwxMiArMTA5LDE5IEBAIHByb2Mgc3RyaXBfZGVidWcge2Rlc3R9IHsKLSAgICAgfQotIH0K LSAKLSsjIFRoZSBtYXJrZXIgZnVuY3Rpb24gZm9yIHRoZSBzdGFuZGFyZCBydW50aW1lIGxpbmtl ciBpbnRlcmZhY2UgaXMKLSsjIF9kbF9kZWJ1Z19zdGF0ZS4gIFRoZSBwcm9iZXMtYmFzZWQgaW50 ZXJmYWNlIGhhcyBubyBzcGVjaWZpYyBtYXJrZXIKLSsjIGZ1bmN0aW9uOyB0aGUgcHJvYmUgd2Ug d2lsbCBzdG9wIG9uIChpbml0X3N0YXJ0KSBpcyBpbiBkbF9tYWluIHNvIHdlCi0rIyBjaGVjayBm b3IgdGhhdC4KLSsKLStzZXQgc29saWJfYnAgeyhfZGxfZGVidWdfc3RhdGV8ZGxfbWFpbil9Ci0r Ci0gIyBJbXBsZW1lbnRhdGlvbiBvZiByZWFjaC4KLSAKLSBwcm9jIHJlYWNoXzEge2Z1bmMgY29t bWFuZCBkaXNwbGFjZW1lbnR9IHsKLS0gICAgZ2xvYmFsIGdkYl9wcm9tcHQgZXhwZWN0X291dAot KyAgICBnbG9iYWwgZ2RiX3Byb21wdCBleHBlY3Rfb3V0IHNvbGliX2JwCi0gCi0tICAgIGlmIHsk ZnVuYyA9PSAiX2RsX2RlYnVnX3N0YXRlIn0gewotKyAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2Jw fSB7Ci0gCSMgQnJlYWtwb2ludCBvbiBfZGxfZGVidWdfc3RhdGUgY2FuIGhhdmUgcHJvYmxlbXMg ZHVlIHRvIGl0cyBvdmVybGFwCi0gCSMgd2l0aCB0aGUgZXhpc3RpbmcgaW50ZXJuYWwgYnJlYWtw b2ludCBmcm9tIEdEQi4KLSAJZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgc3RvcC1vbi1zb2xpYi1l dmVudHMgMSIKLUBAIC0xNDIsMjEgKzE0OSwyMSBAQCBwcm9jIHJlYWNoXzEge2Z1bmMgY29tbWFu ZCBkaXNwbGFjZW1lbnR9Ci0gCSAgICBleHBfY29udGludWUKLSAJfQotIAktcmUgIkJyZWFrcG9p bnQgXFswLTlcXSssIFxcLj8oX19HSV8pPyRmdW5jIFxcKC4qXFwpIGF0IC4qOlxbMC05XF0rXHJc bi4qJGdkYl9wcm9tcHQgJCIgewotLQkgICAgaWYgeyRmdW5jID09ICJfZGxfZGVidWdfc3RhdGUi fSB7Ci0rCSAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7Ci0gCQlmYWlsICR0ZXN0Ci0gCSAg ICB9IGVsc2UgewotIAkJcGFzcyAkdGVzdAotIAkgICAgfQotIAl9Ci0gCS1yZSAiQnJlYWtwb2lu dCBcWzAtOVxdKywgXFswLTl4YS1mXF0rIGluIFxcLj8oX19HSV8pPyRmdW5jIFxcKFxcKS4qXHJc biRnZGJfcHJvbXB0ICQiIHsKLS0JICAgIGlmIHskZnVuYyA9PSAiX2RsX2RlYnVnX3N0YXRlIn0g ewotKwkgICAgaWYgeyRmdW5jID09ICRzb2xpYl9icH0gewotIAkJZmFpbCAkdGVzdAotIAkgICAg fSBlbHNlIHsKLSAJCXBhc3MgJHRlc3QKLSAJICAgIH0KLSAJfQotIAktcmUgIlN0b3BwZWQgZHVl IHRvIChzcHVyaW91cyApP3NoYXJlZCBsaWJyYXJ5IGV2ZW50LipcclxuJGdkYl9wcm9tcHQgJCIg ewotLQkgICAgaWYgeyRmdW5jID09ICJfZGxfZGVidWdfc3RhdGUifSB7Ci0rCSAgICBpZiB7JGZ1 bmMgPT0gJHNvbGliX2JwfSB7Ci0gCQlpZiB7JGRlYnVnX3N0YXRlX2NvdW50ID09IDB9IHsKLSAJ CSAgICAjIEZpcnN0IHN0b3AgZG9lcyBub3QgeWV0IHJlbG9jYXRlIHRoZSBfc3RhcnQgZnVuY3Rp b24KLSAJCSAgICAjIGRlc2NyaXB0b3Igb24gcHBjNjQuCi1AQCAtMTc1LDcgKzE4Miw3IEBAIHBy b2MgcmVhY2hfMSB7ZnVuYyBjb21tYW5kIGRpc3BsYWNlbWVudH0KLSAJZmFpbCAkdGVzdF9kaXNw bGFjZW1lbnQKLSAgICAgfQotIAotLSAgICBpZiB7JGZ1bmMgPT0gIl9kbF9kZWJ1Z19zdGF0ZSJ9 IHsKLSsgICAgaWYgeyRmdW5jID09ICRzb2xpYl9icH0gewotIAlnZGJfdGVzdF9ub19vdXRwdXQg InNldCBzdG9wLW9uLXNvbGliLWV2ZW50cyAwIgotICAgICB9Ci0gfQotQEAgLTM1Nyw3ICszNjQs NyBAQCBwcm9jIHRlc3RfYXR0YWNoIHtmaWxlIGRpc3BsYWNlbWVudCB7cmVsCi0gfQotIAotIHBy b2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGxhY2VtZW50fSB7Ci0tICAgIGds b2JhbCBzcmNkaXIgc3ViZGlyIGdkYl9wcm9tcHQgZXhwZWN0X291dCBpbmZlcmlvcl9leGl0ZWRf cmUKLSsgICAgZ2xvYmFsIHNyY2RpciBzdWJkaXIgZ2RiX3Byb21wdCBleHBlY3Rfb3V0IGluZmVy aW9yX2V4aXRlZF9yZSBzb2xpYl9icAotIAotICAgICAjIEZpcnN0IHRlc3Qgbm9ybWFsIGBmaWxl Jy1jb21tYW5kIGxvYWRlZCAkRklMRSB3aXRoIHN5bWJvbHMuCi0gCi1AQCAtMzg1LDkgKzM5Miw5 IEBAIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKLSAJZ2RiX3Rlc3Rf bm9fb3V0cHV0ICJzZXQgYXJncyAke29iamRpcn0vJHtzdWJkaXJ9LyRiaW5maWxlX3Rlc3QiICJz ZXQgYXJncyBPQkpESVIvJHtzdWJkaXJ9LyRiaW5maWxlX3Rlc3QiCi0gICAgIH0KLSAKLS0gICAg cmVhY2ggIl9kbF9kZWJ1Z19zdGF0ZSIgInJ1biIgJGRpc3BsYWNlbWVudAotKyAgICByZWFjaCAk c29saWJfYnAgInJ1biIgJGRpc3BsYWNlbWVudAotIAotLSAgICBnZGJfdGVzdCAiYnQiICIjMCAr XFteXHJcblxdKlxcbShfX0dJXyk/X2RsX2RlYnVnX3N0YXRlXFxNLioiICJkbCBidCIKLSsgICAg Z2RiX3Rlc3QgImJ0IiAiIzAgK1xbXlxyXG5cXSpcXG0oX19HSV8pPyRzb2xpYl9icFxcTS4qIiAi ZGwgYnQiCi0gCi0gICAgIGlmICRpZm1haW4gewotIAlyZWFjaCAibWFpbiIgY29udGludWUgIk5P TkUiCi1AQCAtMzk5LDcgKzQwNiw3IEBAIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9z eW0gZGlzcGwKLSAKLSAgICAgIyBUcnkgcmUtcnVuIGlmIHRoZSBuZXcgUElFIGRpc3BsYWNlbWVu dCB0YWtlcyBlZmZlY3QuCi0gICAgIGdkYl90ZXN0ICJraWxsIiAiIiAia2lsbCIge0tpbGwgdGhl IHByb2dyYW0gYmVpbmcgZGVidWdnZWRcPyBcKHkgb3IgblwpIH0gInkiCi0tICAgIHJlYWNoICJf ZGxfZGVidWdfc3RhdGUiICJydW4iICRkaXNwbGFjZW1lbnQKLSsgICAgcmVhY2ggJHNvbGliX2Jw ICJydW4iICRkaXNwbGFjZW1lbnQKLSAKLSAgICAgaWYgJGlmbWFpbiB7Ci0gCXRlc3RfY29yZSAk ZmlsZSAkZGlzcGxhY2VtZW50Ci1AQCAtNDMxLDcgKzQzOCw3IEBAIHByb2MgdGVzdF9sZCB7Zmls ZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKLSAJZ2RiX3Rlc3QgImV4ZWMtZmlsZSAkZmlsZSIgImV4 ZWMtZmlsZSAkZXNjYXBlZGZpbGUiICJsb2FkIgotIAotIAlpZiAkaWZtYWluIHsKLS0JICAgIHJl YWNoICJfZGxfZGVidWdfc3RhdGUiIHJ1biAkZGlzcGxhY2VtZW50Ci0rCSAgICByZWFjaCAkc29s aWJfYnAgcnVuICRkaXNwbGFjZW1lbnQKLSAKLSAJICAgICMgVXNlIHR3byBzZXBhcmF0ZSBnZGJf dGVzdF9tdWx0aXBsZSBzdGF0ZW1lbnRzIHRvIGF2b2lkIHRpbWVvdXRzIGR1ZQotIAkgICAgIyB0 byBzbG93IHByb2Nlc3Npbmcgb2Ygd2lsZGNhcmQgY2FwdHVyaW5nIGxvbmcgb3V0cHV0Ci1JbmRl eDogZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLWNvcnJ1cHRlZC5leHAKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zb2xpYi1j b3JydXB0ZWQuZXhwCTIwMTMtMDYtMTAgMTQ6Mjk6MjQuODE2MTIzOTQxICswMjAwCi0rKysgZ2Ri LTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLWNvcnJ1cHRlZC5leHAJMjAxMy0wNi0x MCAxNDozMDoxOC4wODYxMDIzNzUgKzAyMDAKLUBAIC0zNiw2ICszNiwzMyBAQCBpZiAhW3J1bnRv X21haW5dIHsKLSAgICAgcmV0dXJuCi0gfQotIAotKyMgV2l0aCBwcm9iZXMgaW50ZXJmYWNlIEdE QiBubyBsb25nZXIgc2NhbnMgdGhlIGluZmVyaW9yIGxpYnJhcnkgbGlzdCBzbyBpdHMKLSsjIGNv cnJ1cHRpb24gY2Fubm90IGJlIHRlc3RlZC4gIFRoZXJlIGlzIG5vIHdheSB0byBkaXNhYmxlIHRo ZSBwcm9iZXMKLSsjIGludGVyZmFjZS4KLSsKLStzZXQgcHJvYmVzIHsgaW5pdF9zdGFydCBpbml0 X2NvbXBsZXRlIG1hcF9zdGFydCByZWxvY19jb21wbGV0ZSB1bm1hcF9zdGFydAotKwkgICAgIHVu bWFwX2NvbXBsZXRlIH0KLStzZXQgdGVzdCAiaW5mbyBwcm9iZXMiCi0rZ2RiX3Rlc3RfbXVsdGlw bGUgJHRlc3QgJHRlc3QgewotKyAgICAtcmUgIl5ydGxkXFsgXHRcXSsoPzpydGxkXyk/KFxbYS16 X1xdKylcWyBcdFxdIiB7Ci0rCXNldCBpZHggW2xzZWFyY2ggLWV4YWN0ICRwcm9iZXMgJGV4cGVj dF9vdXQoMSxzdHJpbmcpXQotKwlpZiB7ICRpZHggPj0gMCB9IHsKLSsJICAgIHNldCBwcm9iZXMg W2xyZXBsYWNlICRwcm9iZXMgJGlkeCAkaWR4XQotKwl9Ci0rCWV4cF9jb250aW51ZQotKyAgICB9 Ci0rICAgIC1yZSAiXlxbXlxyXG5cXSpcclxuIiB7Ci0rCWV4cF9jb250aW51ZQotKyAgICB9Ci0r ICAgIC1yZSAiXiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgfQotK30KLStpZiB7IFtsbGVuZ3RoICRw cm9iZXNdID09IDAgfSB7Ci0rICAgIHhmYWlsICR0ZXN0Ci0rICAgIHVudGVzdGVkICJHREIgaXMg dXNpbmcgcHJvYmVzIgotKyAgICByZXR1cm4KLSt9Ci0rCi0gZ2RiX3Rlc3QgImluZm8gc2hhcmVk bGlicmFyeSIgIkZyb20gKiBUbyAuKiIgIm5vcm1hbCBsaXN0IgotIAotICMgR0RCIGNoZWNrcyB0 aGVyZSBmb3IgbWF0Y2hpbmcgTF9QUkVWLgotSW5kZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC1saWIuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYv bnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjYvZ2Ri L3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC1saWIuYwkyMDEzLTA2LTEw IDE0OjMwOjE4LjA4NjEwMjM3NSArMDIwMAotQEAgLTAsMCArMSw0MCBAQAotKy8qIFRoaXMgdGVz dGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0 IDIwMTEtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgPHB0aHJlYWQuaD4K LSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rCi0rc3RhdGljIHZvaWQgKgotK3RmdW5jICh2b2lkICph cmcpCi0rewotKyAgdm9pZCAoKm5vdGlmeXApICh2b2lkKSA9IGFyZzsKLSsKLSsgIG5vdGlmeXAg KCk7Ci0rfQotKwotK3ZvaWQKLStmICh2b2lkICgqbm90aWZ5cCkgKHZvaWQpKQotK3sKLSsgIHB0 aHJlYWRfdCB0OwotKyAgaW50IGk7Ci0rCi0rICBpID0gcHRocmVhZF9jcmVhdGUgKCZ0LCBOVUxM LCB0ZnVuYywgbm90aWZ5cCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rCi0rICBpID0gcHRocmVh ZF9qb2luICh0LCBOVUxMKTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSt9Ci1JbmRleDogZ2RiLTcu Ni9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLmMKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQuYwky MDEzLTA2LTEwIDE0OjMwOjE4LjA4NzEwMjM3NSArMDIwMAotQEAgLTAsMCArMSw0NiBAQAotKy8q IFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAg Q29weXJpZ2h0IDIwMTEtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsg ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgPGRs ZmNuLmg+Ci0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsKLStz dGF0aWMgY29uc3QgY2hhciAqdm9sYXRpbGUgZmlsZW5hbWU7Ci0rCi0rc3RhdGljIHZvaWQKLStu b3RpZnkgKHZvaWQpCi0rewotKyAgZmlsZW5hbWUgPSBOVUxMOyAvKiBub3RpZnktaGVyZSAqLwot K30KLSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIHZvaWQgKmg7Ci0rICB2b2lkICgqZnAp ICh2b2lkICgqKSAodm9pZCkpOwotKwotKyAgYXNzZXJ0IChmaWxlbmFtZSAhPSBOVUxMKTsKLSsg IGggPSBkbG9wZW4gKGZpbGVuYW1lLCBSVExEX0xBWlkpOwotKyAgYXNzZXJ0IChoICE9IE5VTEwp OwotKwotKyAgZnAgPSBkbHN5bSAoaCwgImYiKTsKLSsgIGFzc2VydCAoZnAgIT0gTlVMTCk7Ci0r Ci0rICBmcCAobm90aWZ5KTsKLSsKLSsgIHJldHVybiAwOwotK30KLUluZGV4OiBnZGItNy42L2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQuZXhwCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysg Z2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLmV4cAky MDEzLTA2LTEwIDE0OjMwOjE4LjA4NzEwMjM3NSArMDIwMAotQEAgLTAsMCArMSw3NCBAQAotKyMg Q29weXJpZ2h0IDIwMTEtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCi0r IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwot KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2lmIHshW2lzdGFyZ2V0ICotbGludXgq XSB8fCBbc2tpcF9zaGxpYl90ZXN0c119IHsKLSsgICAgcmV0dXJuIDAKLSt9Ci0rCi0rbG9hZF9s aWIgcHJlbGluay1zdXBwb3J0LmV4cAotKwotK3NldCB0ZXN0ZmlsZSAiZGxvcGVuLWxpYnB0aHJl YWQiCi0rc2V0IHNyY21haW5maWxlICR7dGVzdGZpbGV9LmMKLStzZXQgc3JjbGliZmlsZSAke3Rl c3RmaWxlfS1saWIuYwotK3NldCBleGVjdXRhYmxlICR7dGVzdGZpbGV9Ci0rc2V0IGJpbmZpbGVf bGliICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfS5zbwotK3NldCBiaW5maWxlICR7 b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfQotK3NldCBsaWJfZGxvcGVuIFtzaGxpYl90 YXJnZXRfZmlsZSAke2V4ZWN1dGFibGV9LnNvXQotKwotKyMgVXNlIGJ1aWxkX2V4ZWN1dGFibGVf b3duX2xpYnMgYXMgcHJlbGlua2VkIGxpYnB0aHJlYWQuc28gY2FuIHByb2R1Y2UgZmFsc2UKLSsj IFBBU1MgLSBpdCBpcyBPSyBpZiBHREIgcHJvY2Vzc2VzIGl0IHN0aWxsIGJlZm9yZSByZWxvY2F0 aW9uLgotKwotK3NldCByZWxpbmtfYXJncyBbYnVpbGRfZXhlY3V0YWJsZV9vd25fbGlicyAke3Rl c3RmaWxlfS5leHAgJHtleGVjdXRhYmxlfS5zbyAkc3JjbGliZmlsZSB7ZGVidWcgc2hsaWJfcHRo cmVhZHN9IG5vXQotK2lmIHskcmVsaW5rX2FyZ3MgPT0gIiIgfHwgIVtwcmVsaW5rX25vICRyZWxp bmtfYXJnc10KLSsgICAgfHwgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7 ZXhlY3V0YWJsZX0gJHtzcmNtYWluZmlsZX0ge2RlYnVnIHNobGliX2xvYWR9XSB9IHsKLSsgICAg cmV0dXJuIC0xCi0rfQotK2dkYl9sb2FkX3NobGlicyAkYmluZmlsZV9saWIKLSsKLStpZiB7ICFb cnVudG9fbWFpbl0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStzZXQgdGVzdCAiaW5mbyBw cm9iZXMgYWxsIHJ0bGQgcnRsZF9tYXBfY29tcGxldGUiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRl c3QgJHRlc3QgewotKyAgICAtcmUgIlxbIFx0XF1ydGxkX21hcF9jb21wbGV0ZVxbIFx0XF0rMHhc WzAtOWEtZlxdKy4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0r ICAgIC1yZSAiTm8gcHJvYmVzIG1hdGNoZWRcXC5cclxuJGdkYl9wcm9tcHQgJCIgewotKwl4ZmFp bCAkdGVzdAotKwl1bnRlc3RlZCAke3Rlc3RmaWxlfS5leHAKLSsJcmV0dXJuCi0rICAgIH0KLSt9 Ci0rCi0rc2V0IHRlc3QgImxpYnB0aHJlYWQuc28gbm90IGZvdW5kIgotK2dkYl90ZXN0X211bHRp cGxlICJpbmZvIHNoYXJlZGxpYnJhcnkiICR0ZXN0IHsKLSsgICAgLXJlICIvbGlicHRocmVhZFxc LnNvLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwlmYWlsICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJl ICIvbGliY1xcLnNvLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0K LSt9Ci0rCi0rZ2RiX3Rlc3QgInNldCB2YXJpYWJsZSBmaWxlbmFtZT1cIiRsaWJfZGxvcGVuXCIi Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgIm5vdGlmeSIKLSsKLSsjIFRoZSBlcnJvciB3YXM6Ci0rIyBD YW5ub3QgZmluZCBuZXcgdGhyZWFkczogZ2VuZXJpYyBlcnJvcgotK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJub3RpZnkiICIuKiBub3RpZnktaGVyZSAuKiIKLSsKLStnZGJfdGVzdCAiaW5m byBzaGFyZWRsaWJyYXJ5IiB7L2xpYnB0aHJlYWRcLnNvLip9ICJsaWJwdGhyZWFkLnNvIGZvdW5k IgotSW5kZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjYub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTMtMDYtMTAgMTQ6 Mjk6MjQuODE5MTIzOTQwICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIu ZXhwCTIwMTMtMDYtMTAgMTQ6MzA6NDQuNjU0MDkyMTQwICswMjAwCi1AQCAtNDAxMSwyMiArNDAx MSw2IEBAIHByb2MgYnVpbGRfZXhlY3V0YWJsZV9mcm9tX3NwZWNzIHt0ZXN0bmEKLSAKLSAgICAg c2V0IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICRleGVjdXRhYmxlXQotIAotLSAgICBz ZXQgb2JqZWN0cyB7fQotLSAgICBzZXQgaSAwCi0tICAgIGZvcmVhY2gge3MgbG9jYWxfb3B0aW9u c30gJGFyZ3MgewotLSAgICAgICAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJk aXJ9LyR7c30iICIke2JpbmZpbGV9JHtpfS5vIiBvYmplY3QgJGxvY2FsX29wdGlvbnNdICE9ICIi IH0gewotLSAgICAgICAgICAgIHVudGVzdGVkICR0ZXN0bmFtZQotLSAgICAgICAgICAgIHJldHVy biAtMQotLSAgICAgICAgfQotLSAgICAgICAgbGFwcGVuZCBvYmplY3RzICIke2JpbmZpbGV9JHtp fS5vIgotLQlpbmNyIGkKLS0gICAgfQotLSAgICAKLS0gICAgaWYgIHsgW2dkYl9jb21waWxlICRv YmplY3RzICIke2JpbmZpbGV9IiBleGVjdXRhYmxlICRvcHRpb25zXSAhPSAiIiB9IHsKLS0gICAg ICAgIHVudGVzdGVkICR0ZXN0bmFtZQotLSAgICAgICAgcmV0dXJuIC0xCi0tICAgIH0KLS0KLSAg ICAgc2V0IGluZm9fb3B0aW9ucyAiIgotICAgICBpZiB7IFtsc2VhcmNoIC1leGFjdCAkb3B0aW9u cyAiYysrIl0gPj0gMCB9IHsKLSAJc2V0IGluZm9fb3B0aW9ucyAiYysrIgotQEAgLTQwMzQsNiAr NDAxOCw0MiBAQCBwcm9jIGJ1aWxkX2V4ZWN1dGFibGVfZnJvbV9zcGVjcyB7dGVzdG5hCi0gICAg IGlmIFtnZXRfY29tcGlsZXJfaW5mbyAke2luZm9fb3B0aW9uc31dIHsKLSAgICAgICAgIHJldHVy biAtMQotICAgICB9Ci0rCi0rICAgIHNldCBiaW5maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAk ZXhlY3V0YWJsZV0KLSsKLSsgICAgc2V0IGZ1bmMgZ2RiX2NvbXBpbGUKLSsgICAgc2V0IGZ1bmNf aW5kZXggW2xzZWFyY2ggLXJlZ2V4cCAkb3B0aW9ucyB7XihwdGhyZWFkc3xzaGxpYnxzaGxpYl9w dGhyZWFkcykkfV0KLSsgICAgaWYgeyRmdW5jX2luZGV4ICE9IC0xfSB7Ci0rCXNldCBmdW5jICIk e2Z1bmN9X1tsaW5kZXggJG9wdGlvbnMgJGZ1bmNfaW5kZXhdIgotKyAgICB9Ci0rCi0rICAgICMg Z2RiX2NvbXBpbGVfc2hsaWIgYW5kIGdkYl9jb21waWxlX3NobGliX3B0aHJlYWRzIGRvIG5vdCB1 c2UgdGhlIDNyZAotKyAgICAjIHBhcmFtZXRlci4gIFRoZXkgYWxzbyByZXF1aXJlcyAkc291cmNl cyB3aGlsZSBnZGJfY29tcGlsZSBhbmQKLSsgICAgIyBnZGJfY29tcGlsZV9wdGhyZWFkcyByZXF1 aXJlICRvYmplY3RzLiAgTW9yZW92ZXIgdGhleSBpZ25vcmUgYW55IG9wdGlvbnMuCi0rICAgIGlm IFtzdHJpbmcgbWF0Y2ggZ2RiX2NvbXBpbGVfc2hsaWIqICRmdW5jXSB7Ci0rCXNldCBzb3VyY2Vz X3BhdGgge30KLSsJZm9yZWFjaCB7cyBsb2NhbF9vcHRpb25zfSAkYXJncyB7Ci0rCSAgICBsYXBw ZW5kIHNvdXJjZXNfcGF0aCAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3N9IgotKwl9Ci0rCXNldCBy ZXQgWyRmdW5jICRzb3VyY2VzX3BhdGggIiR7YmluZmlsZX0iICRvcHRpb25zXQotKyAgICB9IGVs c2UgewotKwlzZXQgb2JqZWN0cyB7fQotKwlzZXQgaSAwCi0rCWZvcmVhY2gge3MgbG9jYWxfb3B0 aW9uc30gJGFyZ3MgewotKwkgICAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJk aXJ9LyR7c30iICIke2JpbmZpbGV9JHtpfS5vIiBvYmplY3QgJGxvY2FsX29wdGlvbnNdICE9ICIi IH0gewotKwkJdW50ZXN0ZWQgJHRlc3RuYW1lCi0rCQlyZXR1cm4gLTEKLSsJICAgIH0KLSsJICAg IGxhcHBlbmQgb2JqZWN0cyAiJHtiaW5maWxlfSR7aX0ubyIKLSsJICAgIGluY3IgaQotKwl9Ci0r CXNldCByZXQgWyRmdW5jICRvYmplY3RzICIke2JpbmZpbGV9IiBleGVjdXRhYmxlICRvcHRpb25z XQotKyAgICB9Ci0rICAgIGlmICB7ICRyZXQgIT0gIiIgfSB7Ci0rICAgICAgICB1bnRlc3RlZCAk dGVzdG5hbWUKLSsgICAgICAgIHJldHVybiAtMQotKyAgICB9Ci0rCi0gICAgIHJldHVybiAwCi0g fQotIAotSW5kZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4 cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5r LXN1cHBvcnQuZXhwCTIwMTMtMDYtMTAgMTQ6Mjk6MjQuODE5MTIzOTQwICswMjAwCi0rKysgZ2Ri LTcuNi9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTMtMDYtMTAgMTQ6 MzA6MTguMDg5MTAyMzc0ICswMjAwCi1AQCAtOTUsOCArOTUsOSBAQCBwcm9jIGZpbGVfY29weSB7 c3JjIGRlc3R9IHsKLSAjIFdyYXAgZnVuY3Rpb24gYnVpbGRfZXhlY3V0YWJsZSBzbyB0aGF0IHRo ZSByZXN1bHRpbmcgZXhlY3V0YWJsZSBpcyBmdWxseQotICMgc2VsZi1zdWZmaWNpZW50ICh3aXRo b3V0IGRlcGVuZGVuY2llcyBvbiBzeXN0ZW0gbGlicmFyaWVzKS4gIFBhcmFtZXRlcgotICMgSU5U RVJQIG1heSBiZSB1c2VkIHRvIHNwZWNpZnkgYSBsb2FkZXIgKGxkLnNvKSB0byBiZSB1c2VkIHRo YXQgaXMKLS0jIGRpZmZlcmVudCBmcm9tIHRoZSBkZWZhdWx0IHN5c3RlbSBvbmUuICBMaWJyYXJp ZXMgb24gd2hpY2ggdGhlIGV4ZWN1dGFibGUKLS0jIGRlcGVuZHMgYXJlIGNvcGllZCBpbnRvIGRp cmVjdG9yeSBESVIuICBEZWZhdWx0IERJUiB2YWx1ZSB0bwotKyMgZGlmZmVyZW50IGZyb20gdGhl IGRlZmF1bHQgc3lzdGVtIG9uZS4gIElOVEVSUCBjYW4gYmUgc2V0IHRvICJubyIgaWYgbm8gbGQu c28KLSsjIGNvcHkgc2hvdWxkIGJlIG1hZGUuICBMaWJyYXJpZXMgb24gd2hpY2ggdGhlIGV4ZWN1 dGFibGUgZGVwZW5kcyBhcmUgY29waWVkCi0rIyBpbnRvIGRpcmVjdG9yeSBESVIuICBEZWZhdWx0 IERJUiB2YWx1ZSB0bwotICMgYCR7b2JqZGlyfS8ke3N1YmRpcn0vJHtFWEVDVVRBQkxFfS5kJy4K LSAjCi0gIyBJbiBjYXNlIG9mIHN1Y2Nlc3MsIHJldHVybiBhIHN0cmluZyBjb250YWluaW5nIHRo ZSBhcmd1bWVudHMgdG8gYmUgdXNlZAotQEAgLTE1MSw4ICsxNTIsMTUgQEAgcHJvYyBidWlsZF9l eGVjdXRhYmxlX293bl9saWJzIHt0ZXN0bmFtZQotIAotICAgICBpZiB7JGludGVycCA9PSAiIn0g ewotIAlzZXQgaW50ZXJwX3N5c3RlbSBbc2VjdGlvbl9nZXQgJGJpbmZpbGUgLmludGVycF0KLS0J c2V0IGludGVycCAke2Rpcn0vW2ZpbGUgdGFpbCAkaW50ZXJwX3N5c3RlbV0KLS0JZmlsZV9jb3B5 ICRpbnRlcnBfc3lzdGVtICRpbnRlcnAKLSsJaWYgeyRpbnRlcnBfc3lzdGVtID09ICIifSB7Ci0r CSAgICBmYWlsICIkdGVzdCBjb3VsZCBub3QgZmluZCAuaW50ZXJwIgotKwl9IGVsc2UgewotKwkg ICAgc2V0IGludGVycCAke2Rpcn0vW2ZpbGUgdGFpbCAkaW50ZXJwX3N5c3RlbV0KLSsJICAgIGZp bGVfY29weSAkaW50ZXJwX3N5c3RlbSAkaW50ZXJwCi0rCX0KLSsgICAgfQotKyAgICBpZiB7JGlu dGVycCA9PSAibm8ifSB7Ci0rCXNldCBpbnRlcnAgIiIKLSAgICAgfQotIAotICAgICBzZXQgZGVz dHMge30KLUBAIC0xNjQsMTMgKzE3MiwxOSBAQCBwcm9jIGJ1aWxkX2V4ZWN1dGFibGVfb3duX2xp YnMge3Rlc3RuYW1lCi0gCi0gICAgICMgRG8gbm90IGxhcHBlbmQgaXQgc28gdGhhdCAiLXJwYXRo ICRkaXIiIG92ZXJyaWRlcyBhbnkgcG9zc2libGUgIi1ycGF0aCJzCi0gICAgICMgc3BlY2lmaWVk IGJ5IHRoZSBjYWxsZXIgdG8gYmUgYWJsZSB0byBsaW5rIGl0IGZvciBsZGQiIGFib3ZlLgotLSAg ICBzZXQgb3B0aW9ucyBbbGluc2VydCAkb3B0aW9ucyAwICJsZGZsYWdzPS1XbCwtLWR5bmFtaWMt bGlua2VyLCRpbnRlcnAsLXJwYXRoLCRkaXIiXQotKyAgICBzZXQgb3B0aW9ucyBbbGluc2VydCAk b3B0aW9ucyAwICJsZGZsYWdzPS1XbCwtcnBhdGgsJGRpciJdCi0rICAgIGlmIHskaW50ZXJwICE9 ICIifSB7Ci0rCXNldCBvcHRpb25zIFtsaW5zZXJ0ICRvcHRpb25zIDAgImxkZmxhZ3M9LVdsLC0t ZHluYW1pYy1saW5rZXIsJGludGVycCJdCi0rICAgIH0KLSAKLSAgICAgaWYge1tidWlsZF9leGVj dXRhYmxlICR0ZXN0bmFtZSAkZXhlY3V0YWJsZSAkc291cmNlcyAkb3B0aW9uc10gPT0gLTF9IHsK LSAJcmV0dXJuICIiCi0gICAgIH0KLSAKLS0gICAgc2V0IHByZWxpbmtfYXJncyAiLS1keW5hbWlj LWxpbmtlcj0kaW50ZXJwIC0tbGQtbGlicmFyeS1wYXRoPSRkaXIgJGJpbmZpbGUgJGludGVycCBb Y29uY2F0ICRkZXN0c10iCi0rICAgIHNldCBwcmVsaW5rX2FyZ3MgIi0tbGQtbGlicmFyeS1wYXRo PSRkaXIgJGJpbmZpbGUgW2NvbmNhdCAkZGVzdHNdIgotKyAgICBpZiB7JGludGVycCAhPSAiIn0g ewotKwlzZXQgcHJlbGlua19hcmdzICItLWR5bmFtaWMtbGlua2VyPSRpbnRlcnAgJHByZWxpbmtf YXJncyAkaW50ZXJwIgotKyAgICB9Ci0gICAgIHJldHVybiAkcHJlbGlua19hcmdzCi0gfQotIAoK ZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS05b2Y5LnBhdGNoIGIvZ2RiLWRsb3Bl bi1zdGFwLXByb2JlLTlvZjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMy YmI4OTcuLjAwMDAwMDAKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTlvZjkucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSw0MTUgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1jdnMvMjAxMy0wNi9tc2cwMDAyMC5odG1sCi0KLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFu Z2VMb2cJMjAxMy8wNi8wNCAxMzoyMzozMQkxLjM2ODMKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9D aGFuZ2VMb2cJMjAxMy8wNi8wNCAxMzozMTowMAkxLjM2ODQKLSMjIC0xLDMgKzEsMTMgQEAKLSsy MDEzLTA2LTA0ICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIu YmFzZS9icmVhay1wcm9iZXMuZXhwOiBOZXcgZmlsZS4KLSsJKiBnZGIuYmFzZS9icmVhay1wcm9i ZXMuYzogTGlrZXdpc2UuCi0rCSogZ2RiLmJhc2UvYnJlYWstcHJvYmVzLXNvbGliLmM6IExpa2V3 aXNlLgotKwkqIGdkYi5iYXNlL2luZm8tc2hhcmVkLmV4cDogTmV3IGZpbGUuCi0rCSogZ2RiLmJh c2UvaW5mby1zaGFyZWQuYzogTGlrZXdpc2UuCi0rCSogZ2RiLmJhc2UvaW5mby1zaGFyZWQtc29s aWIxLmM6IExpa2V3aXNlLgotKwkqIGdkYi5iYXNlL2luZm8tc2hhcmVkLXNvbGliMi5jOiBMaWtl d2lzZS4KLSsKLSAyMDEzLTA2LTA0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+Ci0gCSAgICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4KLSAKLS0t LSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMtc29saWIuYwotKysrIHNy Yy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy1zb2xpYi5jCTIwMTMtMDYtMTAg MTI6MTU6MTEuNTQ4OTM1NDEzICswMDAwCi1AQCAtMCwwICsxLDIyIEBACi0rLyogQ29weXJpZ2h0 IDIwMTItMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0r Ci0raW50Ci0rZm9vIChpbnQgbikKLSt7Ci0rICByZXR1cm4gbiAqIG4gLyAxNzsKLSt9Ci0tLS0g c3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmMKLSsrKyBzcmMvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMuYwkyMDEzLTA2LTEwIDEyOjE1OjEyLjA0Nzcx NzM4MyArMDAwMAotQEAgLTAsMCArMSwzMCBAQAotKy8qIENvcHlyaWdodCAyMDEyLTIwMTMgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxkbGZjbi5oPgotKyNpbmNsdWRlIDxhc3Nl cnQuaD4KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0r ICB2b2lkICpoYW5kbGUgPSBkbG9wZW4gKFNITElCX05BTUUsIFJUTERfTEFaWSk7Ci0rCi0rICBh c3NlcnQgKGhhbmRsZSAhPSBOVUxMKTsKLSsKLSsgIGRsY2xvc2UgKGhhbmRsZSk7Ci0rCi0rICBy ZXR1cm4gMDsKLSt9Ci0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVz LmV4cAotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy5leHAJMjAx My0wNi0xMCAxMjoxNToxMi42MjAzNjgwNDAgKzAwMDAKLUBAIC0wLDAgKzEsNzggQEAKLSsjIENv cHlyaWdodCAyMDEyLTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2lmIHsgW3NraXBfc2hsaWJfdGVzdHNdIH0g ewotKyAgICByZXR1cm4gMAotK30KLSsKLStzdGFuZGFyZF90ZXN0ZmlsZQotKwotK3NldCBsaWJu YW1lICR0ZXN0ZmlsZS1zb2xpYgotK3NldCBzcmNmaWxlX2xpYiAkc3JjZGlyLyRzdWJkaXIvJGxp Ym5hbWUuYwotK3NldCBiaW5maWxlX2xpYiBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJGxpYm5hbWUu c29dCi0rCi0rc2V0IG5vcm1hbF9icCAiX2RsX2RlYnVnX3N0YXRlIgotK3NldCBwcm9iZXNfYnAg ImRsX21haW4iCi0rCi0raWYgeyBbZ2RiX2NvbXBpbGVfc2hsaWIgJHNyY2ZpbGVfbGliICRiaW5m aWxlX2xpYiBcCi0rCSAgW2xpc3QgYWRkaXRpb25hbF9mbGFncz0tZlBJQ11dICE9ICIiIH0gewot KyAgICB1bnRlc3RlZCAiQ291bGQgbm90IGNvbXBpbGUgJGJpbmZpbGVfbGliLiIKLSsgICAgcmV0 dXJuIC0xCi0rfQotKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAk dGVzdGZpbGUgJHNyY2ZpbGUgXAotKwkgIFtsaXN0IGFkZGl0aW9uYWxfZmxhZ3M9LURTSExJQl9O QU1FPVwiJGJpbmZpbGVfbGliXCIgbGlicz0tbGRsXV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30K LSsKLSsjIEVuYWJsZSBzdG9wLW9uLXNvbGliLWV2ZW50cwotK2dkYl90ZXN0X25vX291dHB1dCAi c2V0IHN0b3Atb24tc29saWItZXZlbnRzIDEiCi0rCi0rIyBTdGFydCB0aGUgaW5mZXJpb3IgYW5k IHJ1biB0byB0aGUgZmlyc3Qgc3RvcAotK2dkYl9ydW5fY21kCi0rZ2RiX3Rlc3QgIiIgIi4qU3Rv cHBlZCBkdWUgdG8gc2hhcmVkIGxpYnJhcnkgZXZlbnQuKiIKLSsKLSsjIFhGQUlMIGlmIHdlIGFy ZSBub3QgdXNpbmcgcHJvYmVzCi0rc2V0IHRlc3QgImVuc3VyZSB1c2luZyBwcm9iZXMiCi0rc2V0 IHVzaW5nX3Byb2JlcyAwCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgImJ0IiAkdGVzdCB7Ci0rICAgIC1y ZSAiIzAgK1xbXlxyXG5cXSpcXG0oX19HSV8pPyRub3JtYWxfYnBcXE0uKiRnZGJfcHJvbXB0ICQi IHsKLSsJdW50ZXN0ZWQgInByb2JlcyBub3QgcHJlc2VudCBvbiB0aGlzIHN5c3RlbSIKLSsgICAg fQotKyAgICAtcmUgIiMwICtcW15cclxuXF0qXFxtKF9fR0lfKT8kcHJvYmVzX2JwXFxNLiokZ2Ri X3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsJc2V0IHVzaW5nX3Byb2JlcyAxCi0rICAgIH0K LSt9Ci0rCi0raWYgeyAkdXNpbmdfcHJvYmVzIH0gewotKyAgICAjIFJ1biB0aWwgaXQgbG9hZHMg b3VyIGxpYnJhcnkKLSsgICAgc2V0IHRlc3QgInJ1biB0aWwgb3VyIGxpYnJhcnkgbG9hZHMiCi0r ICAgIHNldCBub3RfbG9hZGVkX2xpYnJhcnkgMQotKyAgICB3aGlsZSB7ICRub3RfbG9hZGVkX2xp YnJhcnkgfSB7Ci0rCXNldCBub3RfbG9hZGVkX2xpYnJhcnkgMAotKwlnZGJfdGVzdF9tdWx0aXBs ZSAiYyIgJHRlc3QgewotKwkgICAgLXJlICJJbmZlcmlvciBsb2FkZWQgJGJpbmZpbGVfbGliXFxN LiokZ2RiX3Byb21wdCAkIiB7Ci0rCQlwYXNzICR0ZXN0Ci0rCSAgICB9Ci0rCSAgICAtcmUgIlN0 b3BwZWQgZHVlIHRvIHNoYXJlZCBsaWJyYXJ5IGV2ZW50XFxNLiokZ2RiX3Byb21wdCAkIiB7Ci0r CQlzZXQgbm90X2xvYWRlZF9saWJyYXJ5IDEKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rCi0rICAg ICMgQ2FsbCBzb21ldGhpbmcgdG8gZW5zdXJlIHRoYXQgcmVsb2NhdGlvbiBvY2N1cnJlZAotKyAg ICBnZGJfdGVzdCAiY2FsbCBmb28oMjMpIiAiXFxcJC4qID0gMzEuKlxcXE0uKiIKLSt9Ci0tLS0g c3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQtc29saWIxLmMKLSsrKyBzcmMv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjEuYwkyMDEzLTA2LTEwIDEy OjE1OjE0LjM5OTEyOTI4OCArMDAwMAotQEAgLTAsMCArMSwyNCBAQAotKy8qIENvcHlyaWdodCAy MDEyLTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKwot K2ludAotK2ZvbyAoaW50IG4pCi0rewotKyAgcHJpbnRmICgiZm9vICVkXG4iLCBuKTsKLSsKLSsg IHJldHVybiAwOwotK30KLS0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJl ZC1zb2xpYjIuYwotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLXNv bGliMi5jCTIwMTMtMDYtMTAgMTI6MTU6MTQuOTMwMTM1NzQyICswMDAwCi1AQCAtMCwwICsxLDI0 IEBACi0rLyogQ29weXJpZ2h0IDIwMTItMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2lu Y2x1ZGUgPHN0ZGlvLmg+Ci0rCi0raW50Ci0rYmFyIChpbnQgbikKLSt7Ci0rICBwcmludGYgKCJi YXIgJWRcbiIsIG4pOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotLS0tIHNyYy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2luZm8tc2hhcmVkLmMKLSsrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9p bmZvLXNoYXJlZC5jCTIwMTMtMDYtMTAgMTI6MTU6MTUuMzk1NDc0ODE5ICswMDAwCi1AQCAtMCww ICsxLDUyIEBACi0rLyogQ29weXJpZ2h0IDIwMTItMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0r Ci0rI2luY2x1ZGUgPGRsZmNuLmg+Ci0rI2luY2x1ZGUgPGFzc2VydC5oPgotKyNpbmNsdWRlIDxz dGRkZWYuaD4KLSsKLSt2b2lkCi0rc3RvcCAodm9pZCkKLSt7Ci0rfQotKwotK2ludAotK21haW4g KHZvaWQpCi0rewotKyAgdm9pZCAqaGFuZGxlMSwgKmhhbmRsZTI7Ci0rICB2b2lkICgqZnVuYyko aW50KTsKLSsKLSsgIGhhbmRsZTEgPSBkbG9wZW4gKFNITElCMV9OQU1FLCBSVExEX0xBWlkpOwot KyAgYXNzZXJ0IChoYW5kbGUxICE9IE5VTEwpOwotKyAgc3RvcCAoKTsKLSsKLSsgIGhhbmRsZTIg PSBkbG9wZW4gKFNITElCMl9OQU1FLCBSVExEX0xBWlkpOwotKyAgYXNzZXJ0IChoYW5kbGUyICE9 IE5VTEwpOwotKyAgc3RvcCAoKTsKLSsKLSsgIGZ1bmMgPSAodm9pZCAoKikoaW50KSkgZGxzeW0g KGhhbmRsZTEsICJmb28iKTsKLSsgIGZ1bmMgKDEpOwotKwotKyAgZnVuYyA9ICh2b2lkICgqKShp bnQpKSBkbHN5bSAoaGFuZGxlMiwgImJhciIpOwotKyAgZnVuYyAoMik7Ci0rCi0rICBkbGNsb3Nl IChoYW5kbGUxKTsKLSsgIHN0b3AgKCk7Ci0rCi0rICBkbGNsb3NlIChoYW5kbGUyKTsKLSsgIHN0 b3AgKCk7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvaW5mby1zaGFyZWQuZXhwCi0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1z aGFyZWQuZXhwCTIwMTMtMDYtMTAgMTI6MTU6MTUuODkxNDUwMjg1ICswMDAwCi1AQCAtMCwwICsx LDE0NiBAQAotKyMgQ29weXJpZ2h0IDIwMTItMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raWYgeyBbc2tpcF9z aGxpYl90ZXN0c10gfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK3N0YW5kYXJkX3Rlc3RmaWxl Ci0rCi0rc2V0IGxpYjFuYW1lICR0ZXN0ZmlsZS1zb2xpYjEKLStzZXQgc3JjZmlsZV9saWIxICRz cmNkaXIvJHN1YmRpci8kbGliMW5hbWUuYwotK3NldCBiaW5maWxlX2xpYjEgW3N0YW5kYXJkX291 dHB1dF9maWxlICRsaWIxbmFtZS5zb10KLStzZXQgZGVmaW5lMSAtRFNITElCMV9OQU1FPVwiJGJp bmZpbGVfbGliMVwiCi0rCi0rc2V0IGxpYjJuYW1lICR0ZXN0ZmlsZS1zb2xpYjIKLStzZXQgc3Jj ZmlsZV9saWIyICRzcmNkaXIvJHN1YmRpci8kbGliMm5hbWUuYwotK3NldCBiaW5maWxlX2xpYjIg W3N0YW5kYXJkX291dHB1dF9maWxlICRsaWIybmFtZS5zb10KLStzZXQgZGVmaW5lMiAtRFNITElC Ml9OQU1FPVwiJGJpbmZpbGVfbGliMlwiCi0rCi0raWYgeyBbZ2RiX2NvbXBpbGVfc2hsaWIgJHNy Y2ZpbGVfbGliMSAkYmluZmlsZV9saWIxIFwKLSsJICBbbGlzdCBhZGRpdGlvbmFsX2ZsYWdzPS1m UElDXV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZCBub3QgY29tcGlsZSAkYmluZmls ZV9saWIxLiIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmIHsgW2dkYl9jb21waWxlX3NobGli ICRzcmNmaWxlX2xpYjIgJGJpbmZpbGVfbGliMiBcCi0rCSAgW2xpc3QgYWRkaXRpb25hbF9mbGFn cz0tZlBJQ11dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGQgbm90IGNvbXBpbGUgJGJp bmZpbGVfbGliMi4iCi0rICAgIHJldHVybiAtMQotK30KLSsKLStzZXQgY2ZsYWdzICIkZGVmaW5l MSAkZGVmaW5lMiIKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRl c3RmaWxlICRzcmNmaWxlIFwKLSsJICBbbGlzdCBhZGRpdGlvbmFsX2ZsYWdzPSRjZmxhZ3MgbGli cz0tbGRsXV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIFJ1biAiaW5mbyBzaGFyZWRs aWJyYXJ5IiBhbmQgY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvciBhYnNlbmNlIG9mCi0rIyBvdXIg bGlicmFyaWVzLgotK3Byb2MgY2hlY2tfaW5mb19zaGFyZWQgeyB0ZXN0IGV4cGVjdDEgZXhwZWN0 MiB9IHsKLSsgICAgZ2xvYmFsIGxpYjFuYW1lCi0rICAgIGdsb2JhbCBsaWIybmFtZQotKyAgICBn bG9iYWwgZ2RiX3Byb21wdAotKwotKyAgICBzZXQgYWN0dWFsMSAwCi0rICAgIHNldCBhY3R1YWwy IDAKLSsKLSsgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgImluZm8gc2hhcmVkbGlicmFyeSIgJHRlc3Qg ewotKwktcmUgJGxpYjFuYW1lIHsKLSsJICAgIHNldCBhY3R1YWwxIDEKLSsJICAgIGV4cF9jb250 aW51ZQotKwl9Ci0rCS1yZSAkbGliMm5hbWUgewotKwkgICAgc2V0IGFjdHVhbDIgMQotKwkgICAg ZXhwX2NvbnRpbnVlCi0rCX0KLSsJLXJlICJcclxuJGdkYl9wcm9tcHQgJCIgewotKwkgICAgaWYg eyAkYWN0dWFsMSA9PSAkZXhwZWN0MSAmJiAkYWN0dWFsMiA9PSAkZXhwZWN0MiB9IHsKLSsJCXBh c3MgJHRlc3QKLSsJICAgIH0gZWxzZSB7Ci0rCQlmYWlsICR0ZXN0Ci0rCSAgICB9Ci0rCX0KLSsg ICAgfQotK30KLSsKLSsjIFN0YXJ0IHRoZSBpbmZlcmlvciwgYW5kIGNoZWNrIG5laXRoZXIgb2Yg dGhlIGxpYnJhcmllcyBhcmUgbG9hZGVkIGF0Ci0rIyB0aGUgc3RhcnQuCi0raWYgIVtydW50b19t YWluXSB7Ci0rICAgIHJldHVybiAwCi0rfQotK2NoZWNrX2luZm9fc2hhcmVkICJpbmZvIHNoYXJl ZGxpYnJhcnkgIzEiIDAgMAotKwotKyMgU2V0IHVwIGJyZWFrcG9pbnRzLgotK2dkYl9icmVha3Bv aW50ICJzdG9wIgotK2dkYl9icmVha3BvaW50ICJmb28iIGFsbG93LXBlbmRpbmcKLStnZGJfYnJl YWtwb2ludCAiYmFyIiBhbGxvdy1wZW5kaW5nCi0rCi0rIyBSdW4gdG8gdGhlIGZpcnN0IHN0b3Ag YW5kIGNoZWNrIHRoYXQgb25seSB0aGUgZmlyc3QgbGlicmFyeSBpcyBsb2FkZWQuCi0rZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgImxpYnJhcnkgbG9hZCAjMSIgInN0b3AgLioiCi0rY2hlY2tf aW5mb19zaGFyZWQgImluZm8gc2hhcmVkbGlicmFyeSAjMiIgMSAwCi0rCi0rIyBSdW4gdG8gdGhl IHNlY29uZCBzdG9wIGFuZCBjaGVjayB0aGF0IGJvdGggbGlicmFyaWVzIGFyZSBsb2FkZWQuCi0r Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImxpYnJhcnkgbG9hZCAjMiIgInN0b3AgLioiCi0r Y2hlY2tfaW5mb19zaGFyZWQgImluZm8gc2hhcmVkbGlicmFyeSAjMyIgMSAxCi0rCi0rIyBDaGVj ayB0aGF0IHRoZSBuZXh0IHN0b3AgaXMgaW4gZm9vLgotK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJsaWJyYXJ5IGZ1bmN0aW9uICMxIiAiZm9vIC4qIgotKwotKyMgQ2hlY2sgdGhhdCB0aGUg bmV4dCBzdG9wIGlzIGluIGJhci4KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibGlicmFy eSBmdW5jdGlvbiAjMiIgImJhciAuKiIKLSsKLSsjIFJlc3RhcnQgdGhlIGluZmVyaW9yIGFuZCBt YWtlIHN1cmUgdGhlcmUgYXJlIG5vIGJyZWFrcG9pbnQgcmVzZXQKLSsjIGVycm9ycy4gIFRoZXNl IGNhbiBoYXBwZW4gd2l0aCB0aGUgcHJvYmVzLWJhc2VkIHJ1bnRpbWUgbGlua2VyCi0rIyBpbnRl cmZhY2UgaWYgdGhlIGNhY2hlIGlzIG5vdCBjbGVhcmVkIGNvcnJlY3RseS4KLStzZXQgdGVzdCAi cmVzdGFydCIKLStnZGJfcnVuX2NtZAotK2dkYl90ZXN0X211bHRpcGxlICIiICR0ZXN0IHsKLSsg ICAgLXJlIHtTdGFydCBpdCBmcm9tIHRoZSBiZWdpbm5pbmdcPyBcKHkgb3IgblwpICR9IHsKLSsJ c2VuZF9nZGIgInlcbiIKLSsJZXhwX2NvbnRpbnVlCi0rICAgIH0KLSsgICAgLXJlIHtFcnJvciBp biByZS1zZXR0aW5nIGJyZWFrcG9pbnR9IHsKLSsJZmFpbCAkdGVzdAotKyAgICB9Ci0rICAgIC1y ZSAiXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rfQotKwotKyMg Q2hlY2sgdGhhdCBuZWl0aGVyIGxpYnJhcnkgaXMgbG9hZGVkLgotK2NoZWNrX2luZm9fc2hhcmVk ICJpbmZvIHNoYXJlZGxpYnJhcnkgIzQiIDAgMAotKwotKyMgUnVuIHRvIHRoZSBmaXJzdCBzdG9w IGFuZCBjaGVjayB0aGF0IG9ubHkgdGhlIGZpcnN0IGxpYnJhcnkgaXMgbG9hZGVkLgotK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJsaWJyYXJ5IGxvYWQgIzMiICJzdG9wIC4qIgotK2NoZWNr X2luZm9fc2hhcmVkICJpbmZvIHNoYXJlZGxpYnJhcnkgIzUiIDEgMAotKwotKyMgUnVuIHRvIHRo ZSBzZWNvbmQgc3RvcCBhbmQgY2hlY2sgdGhhdCBib3RoIGxpYnJhcmllcyBhcmUgbG9hZGVkLgot K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJsaWJyYXJ5IGxvYWQgIzQiICJzdG9wIC4qIgot K2NoZWNrX2luZm9fc2hhcmVkICJpbmZvIHNoYXJlZGxpYnJhcnkgIzYiIDEgMQotKwotKyMgQ2hl Y2sgdGhhdCB0aGUgbmV4dCBzdG9wIGlzIGluIGZvby4KLStnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAibGlicmFyeSBmdW5jdGlvbiAjMyIgImZvbyAuKiIKLSsKLSsjIENoZWNrIHRoYXQgdGhl IG5leHQgc3RvcCBpcyBpbiBiYXIuCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImxpYnJh cnkgZnVuY3Rpb24gIzQiICJiYXIgLioiCi0rCi0rIyBSdW4gdG8gdGhlIG5leHQgc3RvcCBhbmQg Y2hlY2sgdGhhdCB0aGUgZmlyc3QgbGlicmFyeSBoYXMgYmVlbiB1bmxvYWRlZC4KLStnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAibGlicmFyeSB1bmxvYWQgIzEiICJzdG9wIC4qIgotK2NoZWNr X2luZm9fc2hhcmVkICJpbmZvIHNoYXJlZGxpYnJhcnkgIzciIDAgMQotKwotKyMgUnVuIHRvIHRo ZSBsYXN0IHN0b3AgYW5kIGNoZWNrIHRoYXQgYm90aCBsaWJyYXJpZXMgYXJlIGdvbmUuCi0rZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImxpYnJhcnkgdW5sb2FkICMyIiAic3RvcCAuKiIKLStj aGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICM4IiAwIDAKCmRpZmYgLS1naXQg YS9nZGItZ2RiLWFkZC1pbmRleC1zY3JpcHQucGF0Y2ggYi9nZGItZ2RiLWFkZC1pbmRleC1zY3Jp cHQucGF0Y2gKaW5kZXggMWY0NDdiMS4uODFjMTk3YyAxMDA2NDQKLS0tIGEvZ2RiLWdkYi1hZGQt aW5kZXgtc2NyaXB0LnBhdGNoCisrKyBiL2dkYi1nZGItYWRkLWluZGV4LXNjcmlwdC5wYXRjaApA QCAtNDAsMTEgKzQwLDExIEBAIFN1YmplY3Q6IFtQQVRDSCA0LzRdIGFkZCBnZGItYWRkLWluZGV4 CiAgNSBmaWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQogIGNy ZWF0ZSBtb2RlIDEwMDc1NSBnZGIvZ2RiLWFkZC1pbmRleAogCi1JbmRleDogZ2RiLTcuNS45MS4y MDEzMDQwNy9nZGIvTWFrZWZpbGUuaW4KK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9n ZGIvTWFrZWZpbGUuaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjkxLjIwMTMwNDA3Lm9yaWcv Z2RiL01ha2VmaWxlLmluCTIwMTMtMDQtMTEgMTY6NTI6NTEuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuNS45MS4yMDEzMDQwNy9nZGIvTWFrZWZpbGUuaW4JMjAxMy0wNC0xMSAxNjo1Mzo1OS4x OTkyNzkzODggKzAyMDAKLUBAIC0xMDUzLDYgKzEwNTMsMTUgQEAgaW5zdGFsbC1vbmx5OiBpbnN0 YWxsLWdzdGFjayAkKENPTkZJR19JTgorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcv Z2RiL01ha2VmaWxlLmluCTIwMTMtMDgtMDIgMTY6MzE6NTkuNjAzNjc0MTk0ICswMjAwCisrKysg Z2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL01ha2VmaWxlLmluCTIwMTMtMDgtMDIgMTY6MzI6 MDguMjYwNjkwMTU2ICswMjAwCitAQCAtMTA3MCw2ICsxMDcwLDE1IEBAIGluc3RhbGwtb25seTog aW5zdGFsbC1nc3RhY2sgJChDT05GSUdfSU4KICAJCSAgJChJTlNUQUxMX1BST0dSQU0pIGdjb3Jl IFwKICAJCQkgICQoREVTVERJUikkKGJpbmRpcikvJCR0cmFuc2Zvcm1lZF9uYW1lOyBcCiAgCWZp CkBAIC02MCwxMSArNjAsMTEgQEAgSW5kZXg6IGdkYi03LjUuOTEuMjAxMzA0MDcvZ2RiL01ha2Vm aWxlLmluCiAgCUAkKE1BS0UpIERPPWluc3RhbGwgIkRPRElSUz0kKFNVQkRJUlMpIiAkKEZMQUdT X1RPX1BBU1MpIHN1YmRpcl9kbwogIAogIGluc3RhbGwtcHl0aG9uOgotSW5kZXg6IGdkYi03LjUu OTEuMjAxMzA0MDcvZ2RiL2RvYy9nZGIudGV4aW5mbworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3 MzEtY3ZzL2dkYi9kb2MvZ2RiLnRleGluZm8KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjkxLjIw MTMwNDA3Lm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEzLTA0LTExIDE2OjUzOjAwLjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjUuOTEuMjAxMzA0MDcvZ2RiL2RvYy9nZGIudGV4aW5mbwky MDEzLTA0LTExIDE2OjU1OjA3LjAwNDI3ODg0MiArMDIwMAotQEAgLTE3MTU5LDYgKzE3MTU5LDE0 IEBAIFRoZXJlIGFyZSBjdXJyZW50bHkgc29tZSBsaW1pdGF0aW9uIG9uIGkKKy0tLSBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMy0wOC0wMiAxNjoz MTo1OS42MTY2NzQyMTggKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZG9j L2dkYi50ZXhpbmZvCTIwMTMtMDgtMDIgMTY6MzI6MDguMjcxNjkwMTc2ICswMjAwCitAQCAtMTc0 NDcsNiArMTc0NDcsMTQgQEAgVGhlcmUgYXJlIGN1cnJlbnRseSBzb21lIGxpbWl0YXRpb24gb24g aQogIGZvciBEV0FSRiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24sIG5vdCBzdGFicy4gIEFuZCwgdGhl eSBkbyBub3QKICBjdXJyZW50bHkgd29yayBmb3IgcHJvZ3JhbXMgdXNpbmcgQWRhLgogIApAQCAt NzksNyArNzksNyBAQCBJbmRleDogZ2RiLTcuNS45MS4yMDEzMDQwNy9nZGIvZG9jL2dkYi50ZXhp bmZvCiAgQG5vZGUgU3ltYm9sIEVycm9ycwogIEBzZWN0aW9uIEVycm9ycyBSZWFkaW5nIFN5bWJv bCBGaWxlcwogIAotQEAgLTQxNzMwLDYgKzQxNzM4LDcgQEAgc3dpdGNoIChkaWUtPnRhZykKK0BA IC00MzA0NCw2ICs0MzA1Miw3IEBAIHN3aXRjaCAoZGllLT50YWcpCiAgKiBnZGJzZXJ2ZXIgbWFu OjogICAgICAgICAgICAgICBSZW1vdGUgU2VydmVyIGZvciB0aGUgR05VIERlYnVnZ2VyIG1hbiBw YWdlCiAgKiBnY29yZSBtYW46OiAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZSBhIGNvcmUgZmls ZSBvZiBhIHJ1bm5pbmcgcHJvZ3JhbQogICogZ2RiaW5pdCBtYW46OiAgICAgICAgICAgICAgICAg Z2RiaW5pdCBzY3JpcHRzCkBAIC04Nyw3ICs4Nyw3IEBAIEluZGV4OiBnZGItNy41LjkxLjIwMTMw NDA3L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAZW5kIG1lbnUKICAKICBAbm9kZSBnZGIgbWFuCi1A QCAtNDIzODIsNiArNDIzOTEsNTQgQEAgZ2RiKDEpLCBAY29kZXtpbmZvIC1mIGdkYiAtbiBTdGFy dHVwfQorQEAgLTQzNjk2LDYgKzQzNzA1LDU0IEBAIGdkYigxKSwgQGNvZGV7aW5mbyAtZiBnZGIg LW4gU3RhcnR1cH0KICBUaGUgZnVsbCBkb2N1bWVudGF0aW9uIGZvciBAdmFsdWV7R0RCTn0gaXMg bWFpbnRhaW5lZCBhcyBhIFRleGluZm8gbWFudWFsLgogIElmIHRoZSBAY29kZXtpbmZvfSBhbmQg QGNvZGV7Z2RifSBwcm9ncmFtcyBhbmQgQHZhbHVle0dEQk59J3MgVGV4aW5mbwogIGRvY3VtZW50 YXRpb24gYXJlIHByb3Blcmx5IGluc3RhbGxlZCBhdCB5b3VyIHNpdGUsIHRoZSBjb21tYW5kCkBA IC0xNDIsMTAgKzE0MiwxMCBAQCBJbmRleDogZ2RiLTcuNS45MS4yMDEzMDQwNy9nZGIvZG9jL2dk Yi50ZXhpbmZvCiAgCiAgQHNtYWxsZXhhbXBsZQogIGluZm8gZ2RiCi1JbmRleDogZ2RiLTcuNS45 MS4yMDEzMDQwNy9nZGIvZ2RiLWFkZC1pbmRleAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi9nZGItYWRkLWluZGV4CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNS45MS4yMDEzMDQwNy9nZGIv Z2RiLWFkZC1pbmRleAkyMDEzLTA0LTExIDE2OjUzOjIxLjUyNDI3OTkwOSArMDIwMAorKysrIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9nZGItYWRkLWluZGV4CTIwMTMtMDgtMDIgMTY6MzI6 MDguMjcxNjkwMTc2ICswMjAwCiBAQCAtMCwwICsxLDMwIEBACiArIyEgL2Jpbi9zaAogKwpAQCAt MTc3LDEyICsxNzcsMTIgQEAgSW5kZXg6IGdkYi03LjUuOTEuMjAxMzA0MDcvZ2RiL2dkYi1hZGQt aW5kZXgKICtmaQogKwogK2V4aXQgMAotSW5kZXg6IGdkYi03LjUuOTEuMjAxMzA0MDcvZ2RiL2Rv Yy9NYWtlZmlsZS5pbgorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9kb2MvTWFr ZWZpbGUuaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjkxLjIwMTMwNDA3Lm9yaWcvZ2RiL2Rv Yy9NYWtlZmlsZS5pbgkyMDEzLTA0LTExIDE2OjUwOjMzLjIwMjI4NjkyOCArMDIwMAotKysrIGdk Yi03LjUuOTEuMjAxMzA0MDcvZ2RiL2RvYy9NYWtlZmlsZS5pbgkyMDEzLTA0LTExIDE2OjU1OjA2 Ljk5MzI3OTMwNCArMDIwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2Rv Yy9NYWtlZmlsZS5pbgkyMDEzLTA4LTAyIDE2OjMxOjU5LjYxODY3NDIyMiArMDIwMAorKysrIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9kb2MvTWFrZWZpbGUuaW4JMjAxMy0wOC0wMiAxNjoz MjoyOC44Mjg3MjczMTQgKzAyMDAKIEBAIC0xNzcsNyArMTc3LDcgQEAgUE9EMk1BTjUgPSBwb2Qy bWFuIC0tY2VudGVyPSJHTlUgRGV2ZWxvcAotIAkJICAgLS1yZWxlYXNlPSJnZGItYHNlZCBxICQo c3JjZGlyKS8uLi92ZXJzaW9uLmluYCIgLS1zZWN0aW9uPTUKKyAJCSAgIC0tcmVsZWFzZT0iZ2Ri LWBzZWQgcSB2ZXJzaW9uLnN1YnN0YCIgLS1zZWN0aW9uPTUKICAKICAjIExpc3Qgb2YgbWFuIHBh Z2VzIGdlbmVyYXRlZCBmcm9tIGdkYi50ZXhpCiAtTUFOMVMgPSBnZGIuMSBnZGJzZXJ2ZXIuMSBn Y29yZS4xCkBAIC0xOTAsNyArMTkwLDcgQEAgSW5kZXg6IGdkYi03LjUuOTEuMjAxMzA0MDcvZ2Ri L2RvYy9NYWtlZmlsZS5pbgogIE1BTjVTID0gZ2RiaW5pdC41CiAgTUFOUyA9ICQoTUFOMVMpICQo TUFONVMpCiAgCi1AQCAtNjI2LDYgKzYyNiwxMyBAQCBnY29yZS4xOiAkKEdEQl9ET0NfRklMRVMp CitAQCAtNjMwLDYgKzYzMCwxMyBAQCBnY29yZS4xOiAkKEdEQl9ET0NfRklMRVMpCiAgCQltdiAt ZiAkQC5UJCQkJCAkQCkgfHwgKHJtIC1mICRALlQkJCQkICYmIGV4aXQgMSkKICAJcm0gLWYgZ2Nv cmUucG9kCiAgCgpkaWZmIC0tZ2l0IGEvZ2RiLWdsaWJjLXN0cnN0ci13b3JrYXJvdW5kLnBhdGNo IGIvZ2RiLWdsaWJjLXN0cnN0ci13b3JrYXJvdW5kLnBhdGNoCmluZGV4IDgzZjZiMDkuLmRjOTI0 MmUgMTAwNjQ0Ci0tLSBhL2dkYi1nbGliYy1zdHJzdHItd29ya2Fyb3VuZC5wYXRjaAorKysgYi9n ZGItZ2xpYmMtc3Ryc3RyLXdvcmthcm91bmQucGF0Y2gKQEAgLTEsMTAgKzEsMTAgQEAKLUluZGV4 OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIvZHdhcmYycmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41 MC4yMDEzMDExOC5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMy0wMS0xOSAyMToxNjoyMi40Mzc5 NjE3ODkgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9kd2FyZjJyZWFkLmMJMjAx My0wMS0xOSAyMToyNDoyMi4yNDI5NjkyNjYgKzAxMDAKLUBAIC0xNTk4Nyw2ICsxNTk4NywyNSBA QCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzCistLS0gZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTMtMDgtMDIgMTY6Mzc6NTEu NjE5MjQxNjk2ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2R3YXJmMnJl YWQuYwkyMDEzLTA4LTAyIDE2OjM4OjE2LjE1OTI3NzQ2MSArMDIwMAorQEAgLTE2NjU0LDYgKzE2 NjU0LDI1IEBAIG5ld19zeW1ib2xfZnVsbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHMKICAgICAg ICAvKiBDYWNoZSB0aGlzIHN5bWJvbCdzIG5hbWUgYW5kIHRoZSBuYW1lJ3MgZGVtYW5nbGVkIGZv cm0gKGlmIGFueSkuICAqLwotICAgICAgIFNZTUJPTF9TRVRfTEFOR1VBR0UgKHN5bSwgY3UtPmxh bmd1YWdlKTsKKyAgICAgICBTWU1CT0xfU0VUX0xBTkdVQUdFIChzeW0sIGN1LT5sYW5ndWFnZSwg Jm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7CiAgICAgICAgbGlua2FnZW5hbWUgPSBkd2FyZjJf cGh5c25hbWUgKG5hbWUsIGRpZSwgY3UpOwogKwogKyAgICAgIC8qIFdvcmthcm91bmQgZm9yOgpA QCAtMjgsMTAgKzI4LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9kd2FyZjJy ZWFkLmMKICAgICAgICBTWU1CT0xfU0VUX05BTUVTIChzeW0sIGxpbmthZ2VuYW1lLCBzdHJsZW4g KGxpbmthZ2VuYW1lKSwgMCwgb2JqZmlsZSk7CiAgCiAgICAgICAgLyogRm9ydHJhbiBkb2VzIG5v dCBoYXZlIG1hbmdsaW5nIHN0YW5kYXJkIGFuZCB0aGUgbWFuZ2xpbmcgZG9lcyBkaWZmZXIKLUlu ZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5j LXN0cnN0ci13b3JrYXJvdW5kLmV4cAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLXN0cnN0ci13b3JrYXJvdW5kLmV4cAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1 bmMtc3Ryc3RyLXdvcmthcm91bmQuZXhwCTIwMTMtMDEtMTkgMjE6MjM6MDkuMTE5ODI3OTYzICsw MTAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9n bnUtaWZ1bmMtc3Ryc3RyLXdvcmthcm91bmQuZXhwCTIwMTMtMDgtMDIgMTY6Mzc6NTEuNjIwMjQx Njk3ICswMjAwCiBAQCAtMCwwICsxLDEwOCBAQAogKyMgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwoKZGlmZiAtLWdpdCBhL2dkYi1wb3dlcjgtMW9m Mi5wYXRjaCBiL2dkYi1wb3dlcjgtMW9mMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggNzA0ZDYwMy4uMDAwMDAwMAotLS0gYS9nZGItcG93ZXI4LTFvZjIucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSw3MzEgKzAsMCBAQAotW1BBVENIXSBGdWxsIFBPV0VSOCBiaW51dGlscyBz dXBwb3J0Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvYmludXRpbHMvMjAxMy0wNS9tc2cwMDIz NS5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvYmludXRpbHMtY3ZzLzIwMTMtMDUvbXNn MDAwOTUuaHRtbAotCi0jIyMgc3JjL29wY29kZXMvQ2hhbmdlTG9nCTIwMTMvMDUvMTcgMTI6NTc6 MTUJMS4xOTY0Ci0jIyMgc3JjL29wY29kZXMvQ2hhbmdlTG9nCTIwMTMvMDUvMjEgMDE6MzY6NDYJ MS4xOTY1Ci0jIyAtMSwzICsxLDI4IEBACi0rMjAxMy0wNS0yMCAgUGV0ZXIgQmVyZ25lciA8YmVy Z25lckB2bmV0LmlibS5jb20+Ci0rCi0rCSogcHBjLWRpcy5jIChwb3dlcnBjX2luaXRfZGlhbGVj dCk6IFNldCBkZWZhdWx0IGRpYWxlY3QgdG8gcG93ZXI4LgotKwkqIHBwYy1vcGMuYyAoQkhSQkUs IFNULCBTSVgsIFBTLCBTWEwsIFZYUFNfTUFTSywgWFgxUkJfTUFTSywKLSsJWExTX01BU0ssIFBQ Q1ZTWDIpOiBOZXcgZGVmaW5lcy4KLSsJKHBvd2VycGNfb3Bjb2RlcykgPGJjZGFkZC4sIGJjZHN1 Yi4sIGJjdGFyLCBiY3RhciwgYmN0YXJsLCBjbHJiaHJiLAotKwlmbXJnZXcsIGZtcmdvdywgbHFh cngsIGx4c2l3YXgsIGx4c2l3engsIGx4c3NweCwgbWZiaHJiZSwKLSsJbWZmcHJkLCBtZmZwcnd6 LCBtZnZyZCwgbWZ2cnd6LCBtZnZzcmQsIG1mdnNyd3osIG1zZ2NscnAsIG1zZ3NuZHAsCi0rCW10 ZnByZCwgbXRmcHJ3YSwgbXRmcHJ3eiwgbXRzbGUsIG10dnJkLCBtdHZyd2EsIG10dnJ3eiwgbXR2 c3JkLAotKwltdHZzcndhLCBtdHZzcnd6LCBwYnQuLCByZmViYiwgc3RxY3guLCBzdHhzaXd4LCBz dHhzc3B4LAotKwl2YWRkY3VxLCB2YWRkZWN1cSwgdmFkZGV1cW0sIHZhZGR1ZG0sIHZhZGR1cW0s IHZicGVybXEsIHZjaXBoZXIsCi0rCXZjaXBoZXJsYXN0LCB2Y2x6YiwgdmNsemQsIHZjbHpoLCB2 Y2x6dywgdmNtcGVxdWQsIHZjbXBlcXVkLiwKLSsJdmNtcGd0c2QsIHZjbXBndHNkLiwgdmNtcGd0 dWQsIHZjbXBndHVkLiwgdmVxdiwgdmdiYmQsIHZtYXhzZCwKLSsJdm1heHVkLCB2bWluc2QsIHZt aW51ZCwgdm1yZ2V3LCB2bXJnb3csIHZtdWxlc3csIHZtdWxldXcsIHZtdWxvc3csCi0rCXZtdWxv dXcsIHZtdWx1d20sIHZuYW5kLCB2bmNpcGhlciwgdm5jaXBoZXJsYXN0LCB2b3JjLCB2cGVybXhv ciwKLSsJdnBrc2RzcywgdnBrc2R1cywgdnBrdWR1bSwgdnBrdWR1cywgdnBtc3VtYiwgdnBtc3Vt ZCwgdnBtc3VtaCwKLSsJdnBtc3VtdywgdnBvcGNudGIsIHZwb3BjbnRkLCB2cG9wY250aCwgdnBv cGNudHcsIHZybGQsIHZzYm94LAotKwl2c2hhc2lnbWFkLCB2c2hhc2lnbWF3LCB2c2xkLCB2c3Jh ZCwgdnNyZCwgdnN1YmN1cSwgdnN1YmVjdXEsCi0rCXZzdWJldXFtLCB2c3VidWRtLCB2c3VidXFt LCB2dXBraHN3LCB2dXBrbHN3LCB3YWl0YXNlYywgeHNhZGRzcCwKLSsJeHNjdmRwc3BuLCB4c2N2 c3BkcG4sIHhzY3ZzeGRzcCwgeHNjdnV4ZHNwLCB4c2RpdnNwLCB4c21hZGRhc3AsCi0rCXhzbWFk ZG1zcCwgeHNtc3ViYXNwLCB4c21zdWJtc3AsIHhzbXVsc3AsIHhzbm1hZGRhc3AsIHhzbm1hZGRt c3AsCi0rCXhzbm1zdWJhc3AsIHhzbm1zdWJtc3AsIHhzcmVzcCwgeHNyc3AsIHhzcnNxcnRlc3As IHhzc3FydHNwLAotKwl4c3N1YnNwLCB4eGxlcXYsIHh4bG5hbmQsIHh4bG9yYz46IE5ldyBpbnN0 cnVjdGlvbnMuCi0rCTxseHZ4LCBzdHh2eD46IE5ldyBleHRlbmRlZCBtbmVtb25pY3MuCi0rCi0g MjAxMy0wNS0xNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0gCi0gCSogaWE2NC1y YXcudGJsOiBSZXBsYWNlIG5vbi1BU0NJSSBjaGFyLgotLS0tIHNyYy9vcGNvZGVzL3BwYy1kaXMu YwkyMDEzLzAxLzExIDAyOjI1OjM2CTEuNjIKLSsrKyBzcmMvb3Bjb2Rlcy9wcGMtZGlzLmMJMjAx My8wNS8yMSAwMTozNjo0NgkxLjYzCi1AQCAtMzE1LDEwICszMTUsNyBAQAotICAgICAgIGRpYWxl Y3QgPSAoUFBDX09QQ09ERV9QUEMgfCBQUENfT1BDT0RFX0lTRUwgfCBQUENfT1BDT0RFX1ZMRSk7 Ci0gICAgICAgYnJlYWs7Ci0gICAgIGRlZmF1bHQ6Ci0tICAgICAgZGlhbGVjdCA9IChQUENfT1BD T0RFX1BQQyB8IFBQQ19PUENPREVfSVNFTCB8IFBQQ19PUENPREVfNjQKLS0JCSB8IFBQQ19PUENP REVfUE9XRVI0IHwgUFBDX09QQ09ERV9QT1dFUjUgfCBQUENfT1BDT0RFX1BPV0VSNgotLQkJIHwg UFBDX09QQ09ERV9QT1dFUjcgfCBQUENfT1BDT0RFX0FMVElWRUMgfCBQUENfT1BDT0RFX1ZTWAot LQkJIHwgUFBDX09QQ09ERV9BTlkpOwotKyAgICAgIGRpYWxlY3QgPSBwcGNfcGFyc2VfY3B1IChk aWFsZWN0LCAmc3RpY2t5LCAicG93ZXI4IikgfCBQUENfT1BDT0RFX0FOWTsKLSAgICAgfQotIAot ICAgYXJnID0gaW5mby0+ZGlzYXNzZW1ibGVyX29wdGlvbnM7Ci0tLS0gc3JjL29wY29kZXMvcHBj LW9wYy5jCTIwMTMvMDUvMDkgMDQ6MzI6NTUJMS4xNTkKLSsrKyBzcmMvb3Bjb2Rlcy9wcGMtb3Bj LmMJMjAxMy8wNS8yMSAwMTozNjo0NgkxLjE2MAotQEAgLTMxNSwxNCArMzE1LDE4IEBACi0gICB7 IDB4ZmZmYywgMCwgTlVMTCwgTlVMTCwKLSAgICAgUFBDX09QRVJBTkRfUEFSRU5TIHwgUFBDX09Q RVJBTkRfU0lHTkVEIHwgUFBDX09QRVJBTkRfRFMgfSwKLSAKLS0gIC8qIFRoZSBEVUlTIGZpZWxk IGluIGEgWEZYIGZvcm0gaW5zdHJ1Y3Rpb24sIDEwIGJpdHMgdW5zaWduZWQgaW1lZGlhdGUgKi8K LSsgIC8qIFRoZSBEVUlTIG9yIEJIUkJFIGZpZWxkcyBpbiBhIFhGWCBmb3JtIGluc3RydWN0aW9u LCAxMCBiaXRzCi0rICAgICB1bnNpZ25lZCBpbWVkaWF0ZSAqLwotICNkZWZpbmUgRFVJUyBEUyAr IDEKLSsjZGVmaW5lIEJIUkJFIERVSVMKLSAgIHsgMHgzZmYsIDExLCBOVUxMLCBOVUxMLCAwIH0s Ci0gCi0gICAvKiBUaGUgRSBmaWVsZCBpbiBhIHdydGVlaSBpbnN0cnVjdGlvbi4gICovCi0gICAv KiBBbmQgdGhlIFcgYml0IGluIHRoZSBwYWlyIHNpbmdsZXMgaW5zdHJ1Y3Rpb25zLiAgKi8KLSsg IC8qIEFuZCB0aGUgU1QgZmllbGQgaW4gYSBWWCBmb3JtIGluc3RydWN0aW9uLiAgKi8KLSAjZGVm aW5lIEUgRFVJUyArIDEKLSAjZGVmaW5lIFBTVyBFCi0rI2RlZmluZSBTVCBFCi0gICB7IDB4MSwg MTUsIE5VTEwsIE5VTEwsIDAgfSwKLSAKLSAgIC8qIFRoZSBGTDEgZmllbGQgaW4gYSBQT1dFUiBT QyBmb3JtIGluc3RydWN0aW9uLiAgKi8KLUBAIC02OTUsOCArNjk5LDE2IEBACi0gI2RlZmluZSBV SU1NMyBVSU1NICsgMQotICAgeyAweDcsIDE2LCBOVUxMLCBOVUxMLCAwIH0sCi0gCi0rICAvKiBU aGUgU0lYIGZpZWxkIGluIGEgVlggZm9ybSBpbnN0cnVjdGlvbi4gICovCi0rI2RlZmluZSBTSVgg VUlNTTMgKyAxCi0rICB7IDB4ZiwgMTEsIE5VTEwsIE5VTEwsIDAgfSwKLSsKLSsgIC8qIFRoZSBQ UyBmaWVsZCBpbiBhIFZYIGZvcm0gaW5zdHJ1Y3Rpb24uICAqLwotKyNkZWZpbmUgUFMgU0lYICsg MQotKyAgeyAweDEsIDksIE5VTEwsIE5VTEwsIDAgfSwKLSsKLSAgIC8qIFRoZSBTSEIgZmllbGQg aW4gYSBWQSBmb3JtIGluc3RydWN0aW9uLiAgKi8KLS0jZGVmaW5lIFNIQiBVSU1NMyArIDEKLSsj ZGVmaW5lIFNIQiBQUyArIDEKLSAgIHsgMHhmLCA2LCBOVUxMLCBOVUxMLCAwIH0sCi0gCi0gICAv KiBUaGUgb3RoZXIgVUlNTSBmaWVsZCBpbiBhIGhhbGYgd29yZCBFVlggZm9ybSBpbnN0cnVjdGlv bi4gICovCi1AQCAtNzUxLDggKzc2MywxMiBAQAotICNkZWZpbmUgUyBTUCArIDEKLSAgIHsgMHgx LCAyMCwgTlVMTCwgTlVMTCwgMCB9LAotIAotKyAgLyogVGhlIFMgZmllbGQgaW4gYSBYTCBmb3Jt IGluc3RydWN0aW9uLiAgKi8KLSsjZGVmaW5lIFNYTCBTICsgMQotKyAgeyAweDEsIDExLCBOVUxM LCBOVUxMLCBQUENfT1BFUkFORF9PUFRJT05BTCB9LAotKwotICAgLyogU0ggZmllbGQgc3RhcnRp bmcgYXQgYml0IHBvc2l0aW9uIDE2LiAgKi8KLS0jZGVmaW5lIFNIMTYgUyArIDEKLSsjZGVmaW5l IFNIMTYgU1hMICsgMQotICAgLyogVGhlIERDTSBhbmQgREdNIGZpZWxkcyBpbiBhIFogZm9ybSBp bnN0cnVjdGlvbi4gICovCi0gI2RlZmluZSBEQ00gU0gxNgotICNkZWZpbmUgREdNIERDTQotQEAg LTIzMjUsNiArMjM0MSw5IEBACi0gLyogQSBWWF9NQVNLIHdpdGggYSBVSU1NMiBmaWVsZC4gICov Ci0gI2RlZmluZSBWWFVJTU0yX01BU0sgKFZYX01BU0sgfCAoMHg3IDw8IDE4KSkKLSAKLSsvKiBB IFZYX01BU0sgd2l0aCBhIFBTIGZpZWxkLiAgKi8KLSsjZGVmaW5lIFZYUFNfTUFTSyAoVlhfTUFT SyAmIH4oMHgxIDw8IDkpKQotKwotIC8qIEEgVkEgZm9ybSBpbnN0cnVjdGlvbi4gICovCi0gI2Rl ZmluZSBWWEEob3AsIHhvcCkgKE9QIChvcCkgfCAoKCh1bnNpZ25lZCBsb25nKSh4b3ApKSAmIDB4 MDNmKSkKLSAKLUBAIC0yMzc5LDYgKzIzOTgsOSBAQAotIC8qIFRoZSBtYXNrIGZvciBhbiBYWDEg Zm9ybSBpbnN0cnVjdGlvbi4gICovCi0gI2RlZmluZSBYWDFfTUFTSyBYICgweDNmLCAweDNmZikK LSAKLSsvKiBBbiBYWDFfTUFTSyB3aXRoIHRoZSBSQiBmaWVsZCBmaXhlZC4gICovCi0rI2RlZmlu ZSBYWDFSQl9NQVNLIChYWDFfTUFTSyB8IFJCX01BU0spCi0rCi0gLyogVGhlIG1hc2sgZm9yIGFu IFhYMiBmb3JtIGluc3RydWN0aW9uLiAgKi8KLSAjZGVmaW5lIFhYMl9NQVNLIChYWDIgKDB4M2Ys IDB4MWZmKSB8ICgweDFmIDw8IDE2KSkKLSAKLUBAIC0yNTE2LDYgKzI1MzgsOSBAQAotIC8qIFRo ZSBtYXNrIGZvciBhbiBYTCBmb3JtIGluc3RydWN0aW9uLiAgKi8KLSAjZGVmaW5lIFhMX01BU0sg WExMSyAoMHgzZiwgMHgzZmYsIDEpCi0gCi0rLyogQW4gWExfTUFTSyB3aXRoIHRoZSBSVCwgUkEg YW5kIFJCIGZpZWxkcyBmaXhlZCwgYnV0IFMgYml0IGNsZWFyLiAgKi8KLSsjZGVmaW5lIFhMU19N QVNLICgoWExfTUFTSyB8IFJUX01BU0sgfCBSQV9NQVNLIHwgUkJfTUFTSykgJiB+KDEgPDwgMTEp KQotKwotIC8qIEFuIFhMIGZvcm0gaW5zdHJ1Y3Rpb24gd2hpY2ggZXhwbGljaXRseSBzZXRzIHRo ZSBCTyBmaWVsZC4gICovCi0gI2RlZmluZSBYTE8ob3AsIGJvLCB4b3AsIGxrKSBcCi0gICAoWExM SyAoKG9wKSwgKHhvcCksIChsaykpIHwgKCgoKHVuc2lnbmVkIGxvbmcpKGJvKSkgJiAweDFmKSA8 PCAyMSkpCi1AQCAtMjY5OSw2ICsyNzI0LDcgQEAKLSAjZGVmaW5lIFBQQ1ZFQwlQUENfT1BDT0RF X0FMVElWRUMKLSAjZGVmaW5lIFBQQ1ZFQzIJUFBDX09QQ09ERV9BTFRJVkVDMgotICNkZWZpbmUg UFBDVlNYCVBQQ19PUENPREVfVlNYCi0rI2RlZmluZSBQUENWU1gyCVBQQ19PUENPREVfVlNYCi0g I2RlZmluZSBQT1dFUglQUENfT1BDT0RFX1BPV0VSCi0gI2RlZmluZSBQT1dFUjIJUFBDX09QQ09E RV9QT1dFUiB8IFBQQ19PUENPREVfUE9XRVIyCi0gI2RlZmluZSBQV1IyQ09NIFBQQ19PUENPREVf UE9XRVIgfCBQUENfT1BDT0RFX1BPV0VSMiB8IFBQQ19PUENPREVfQ09NTU9OCi1AQCAtMjg0NSw2 ICsyODcxLDcgQEAKLSB7InZwZXJtIiwJVlhBKDQsCTQzKSwJVlhBX01BU0ssICAgIFBQQ1ZFQ3xQ UENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCLCBWQ319LAotIHsidnNsZG9pIiwJVlhBKDQsCTQ0 KSwJVlhBU0hCX01BU0ssIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCLCBTSEJ9 fSwKLSB7InBzX3NlbCIsCUEgICg0LAkyMywwKSwJQV9NQVNLLCAgICAgIFBQQ1BTLAlQUENOT05F LAl7RlJULCBGUkEsIEZSQywgRlJCfX0sCi0reyJ2cGVybXhvciIsCVZYQSg0LAk0NSksCVZYQV9N QVNLLCAgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZBLCBWQiwgVkN9fSwKLSB7InZtYWRkZnAi LAlWWEEoNCwJNDYpLAlWWEFfTUFTSywgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBW QSwgVkMsIFZCfX0sCi0geyJwc19zZWwuIiwJQSAgKDQsCTIzLDEpLAlBX01BU0ssICAgICAgUFBD UFMsCVBQQ05PTkUsCXtGUlQsIEZSQSwgRlJDLCBGUkJ9fSwKLSB7InZubXN1YmZwIiwJVlhBKDQs CTQ3KSwJVlhBX01BU0ssICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZDLCBW Qn19LAotQEAgLTI4NjMsNiArMjg5MCwxMCBAQAotIHsicHNfbm1hZGQiLAlBICAoNCwJMzEsMCks CUFfTUFTSywgICAgICBQUENQUywJUFBDTk9ORSwJe0ZSVCwgRlJBLCBGUkMsIEZSQn19LAotIHsi cHNfbm1hZGQuIiwJQSAgKDQsCTMxLDEpLAlBX01BU0ssICAgICAgUFBDUFMsCVBQQ05PTkUsCXtG UlQsIEZSQSwgRlJDLCBGUkJ9fSwKLSB7InBzX2NtcG8wIiwJWCAgKDQsCTMyKSwgWF9NQVNLfCgz PDwyMSksIFBQQ1BTLAlQUENOT05FLAl7QkYsIEZSQSwgRlJCfX0sCi0reyJ2YWRkZXVxbSIsCVZY QSg0LAk2MCksCVZYQV9NQVNLLCAgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZBLCBWQiwgVkN9 fSwKLSt7InZhZGRlY3VxIiwJVlhBKDQsCTYxKSwJVlhBX01BU0ssICAgIFBQQ1ZFQzIsCVBQQ05P TkUsCXtWRCwgVkEsIFZCLCBWQ319LAotK3sidnN1YmV1cW0iLAlWWEEoNCwJNjIpLAlWWEFfTUFT SywgICAgUFBDVkVDMiwJUFBDTk9ORSwJe1ZELCBWQSwgVkIsIFZDfX0sCi0reyJ2c3ViZWN1cSIs CVZYQSg0LAk2MyksCVZYQV9NQVNLLCAgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZBLCBWQiwg VkN9fSwKLSB7InZhZGR1aG0iLAlWWCAoNCwJNjQpLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZM RSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InZtYXh1aCIsCVZYICg0LAk2NiksCVZYX01B U0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsidnJsaCIs CVZYICg0LAk2OCksCVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZB LCBWQn19LAotQEAgLTI4ODYsNiArMjkxNyw4IEBACi0geyJ2bWF4dXciLAlWWCAoNCwJMTMwKSwJ VlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ2 cmx3IiwJVlggKDQsCTEzMiksCVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7 VkQsIFZBLCBWQn19LAotIHsidmNtcGVxdXciLAlWWFIoNCwJMTM0LDApLCBWWFJfTUFTSywgICAg UFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSt7InZtdWxvdXciLAlWWCAo NCwgIDEzNiksCVZYX01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9 fSwKLSt7InZtdWx1d20iLAlWWCAoNCwgIDEzNyksCVZYX01BU0ssICAgICBQUENWRUMyLAkgICAg UFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InZtcmdodyIsCVZYICg0LAkxNDApLAlWWF9NQVNL LCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InZwa3VodXMi LAlWWCAoNCwJMTQyKSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwg VkEsIFZCfX0sCi0geyJwc19tciIsCVhSQyg0LAk3MiwwKSwJWFJBX01BU0ssICAgIFBQQ1BTLAlQ UENOT05FLAl7RlJULCBGUkJ9fSwKLUBAIC0yODkzLDEyICsyOTI2LDE3IEBACi0geyJtYWNoaHdz dSIsCVhPICg0LAk3NiwwLDApLFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUsICBQUENOT05FLAl7 UlQsIFJBLCBSQn19LAotIHsibWFjaGh3c3UuIiwJWE8gKDQsCTc2LDAsMSksWE9fTUFTSywgICAg IE1VTEhXfFBQQ1ZMRSwgIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0geyJwc19jbXBvMSIsCVgg ICg0LAk5NiksIFhfTUFTS3woMzw8MjEpLCBQUENQUywJUFBDTk9ORSwJe0JGLCBGUkEsIEZSQn19 LAotK3sidmFkZHVkbSIsCVZYICg0LCAxOTIpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJUFBDTk9O RSwJe1ZELCBWQSwgVkJ9fSwKLSt7InZtYXh1ZCIsCVZYICg0LCAxOTQpLAlWWF9NQVNLLCAgICAg UFBDVkVDMiwJUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSt7InZybGQiLAlWWCAoNCwgMTk2KSwJ VlhfTUFTSywgICAgIFBQQ1ZFQzIsCVBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ2Y21wZXFm cCIsCVZYUig0LCAxOTgsMCksCVZYUl9NQVNLLCAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7 VkQsIFZBLCBWQn19LAotK3sidmNtcGVxdWQiLAlWWFIoNCwgMTk5LDApLAlWWFJfTUFTSywgICAg UFBDVkVDMiwJUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InZwa3V3dXMiLAlWWCAoNCwgMjA2 KSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0g eyJtYWNoaHdzIiwJWE8gKDQsIDEwOCwwLDApLFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUsIFBQ Q05PTkUsCXtSVCwgUkEsIFJCfX0sCi0geyJtYWNoaHdzLiIsCVhPICg0LCAxMDgsMCwxKSxYT19N QVNLLCAgICAgTVVMSFd8UFBDVkxFLCBQUENOT05FLAl7UlQsIFJBLCBSQn19LAotIHsibm1hY2ho d3MiLAlYTyAoNCwgMTEwLDAsMCksWE9fTUFTSywgICAgIE1VTEhXfFBQQ1ZMRSwgUFBDTk9ORSwJ e1JULCBSQSwgUkJ9fSwKLSB7Im5tYWNoaHdzLiIsCVhPICg0LCAxMTAsMCwxKSxYT19NQVNLLCAg ICAgTVVMSFd8UFBDVkxFLCBQUENOT05FLAl7UlQsIFJBLCBSQn19LAotK3sidmFkZHVxbSIsCVZY ICg0LCAyNTYpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwK LSB7InZtYXhzYiIsCVZYICg0LCAyNTgpLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBD Tk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InZzbGIiLAlWWCAoNCwgMjYwKSwJVlhfTUFTSywgICAg IFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ2bXVsb3NiIiwJVlgg KDQsIDI2NCksCVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBW Qn19LAotQEAgLTI5MTEsNiArMjk0OSw3IEBACi0geyJtdWxjaHd1LiIsCVhSQyg0LCAxMzYsMSks CVhfTUFTSywgICAgICBNVUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0geyJt YWNjaHd1IiwJWE8gKDQsIDE0MCwwLDApLFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUsIFBQQ05P TkUsCXtSVCwgUkEsIFJCfX0sCi0geyJtYWNjaHd1LiIsCVhPICg0LCAxNDAsMCwxKSxYT19NQVNL LCAgICAgTVVMSFd8UFBDVkxFLCBQUENOT05FLAl7UlQsIFJBLCBSQn19LAotK3sidmFkZGN1cSIs CVZYICg0LCAzMjApLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwgICAgICBQUENOT05FLAl7VkQsIFZB LCBWQn19LAotIHsidm1heHNoIiwJVlggKDQsIDMyMiksCVZYX01BU0ssICAgICBQUENWRUN8UFBD VkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsidnNsaCIsCVZYICg0LCAzMjQpLAlWWF9N QVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InZtdWxv c2giLAlWWCAoNCwgMzI4KSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtW RCwgVkEsIFZCfX0sCi1AQCAtMjkyNiwxMSArMjk2NSwxMyBAQAotIHsidmFkZGN1dyIsCVZYICg0 LCAzODQpLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9 fSwKLSB7InZtYXhzdyIsCVZYICg0LCAzODYpLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwg UFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InZzbHciLAlWWCAoNCwgMzg4KSwJVlhfTUFTSywg ICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0reyJ2bXVsb3N3IiwJ VlggKDQsIDM5MiksCVZYX01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBWQSwg VkJ9fSwKLSB7InZleHB0ZWZwIiwJVlggKDQsIDM5NCksCVZYVkFfTUFTSywgICBQUENWRUN8UFBD VkxFLCBQUENOT05FLAl7VkQsIFZCfX0sCi0geyJ2bXJnbHciLAlWWCAoNCwgMzk2KSwJVlhfTUFT SywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ2cGtzaHNz IiwJVlggKDQsIDM5OCksCVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQs IFZBLCBWQn19LAotIHsibWFjY2h3c3UiLAlYTyAoNCwgMjA0LDAsMCksWE9fTUFTSywgICAgIE1V TEhXfFBQQ1ZMRSwgUFBDTk9ORSwJe1JULCBSQSwgUkJ9fSwKLSB7Im1hY2Nod3N1LiIsCVhPICg0 LCAyMDQsMCwxKSxYT19NQVNLLCAgICAgTVVMSFd8UFBDVkxFLCBQUENOT05FLAl7UlQsIFJBLCBS Qn19LAotK3sidm1heHNkIiwJVlggKDQsIDQ1MCksCVZYX01BU0ssICAgICBQUENWRUMyLAkgICAg UFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InZzbCIsCQlWWCAoNCwgNDUyKSwJVlhfTUFTSywg ICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ2Y21wZ2VmcCIs CVZYUig0LCA0NTQsMCksCVZYUl9NQVNLLCAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQs IFZBLCBWQn19LAotIHsidmxvZ2VmcCIsCVZYICg0LCA0NTgpLAlWWFZBX01BU0ssICAgUFBDVkVD fFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQn19LAotQEAgLTMwMTQsNiArMzA1NSw3IEBACi0geyJl dmZzbmFicyIsCVZYICg0LCA2NDUpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9O RSwJe1JTLCBSQX19LAotIHsiZXZmc25lZyIsCVZYICg0LCA2NDYpLAlWWF9NQVNLLCAgICAgUFBD U1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQX19LAotIHsidmNtcGd0dXciLAlWWFIoNCwgNjQ2 LDApLAlWWFJfTUFTSywgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwK LSt7InZtdWxldXciLAlWWCAoNCwgNjQ4KSwJVlhfTUFTSywgICAgIFBQQ1ZFQzIsCSAgICBQUENO T05FLAl7VkQsIFZBLCBWQn19LAotIHsiZXZmc211bCIsCVZYICg0LCA2NDgpLAlWWF9NQVNLLCAg ICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7ImV2ZnNkaXYiLAlW WCAoNCwgNjQ5KSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEs IFJCfX0sCi0geyJ2cmZpcCIsCVZYICg0LCA2NTApLAlWWFZBX01BU0ssICAgUFBDVkVDfFBQQ1ZM RSwgUFBDTk9ORSwJe1ZELCBWQn19LAotQEAgLTMwMzksMTEgKzMwODEsMTMgQEAKLSB7ImNwdXQi LAlBUFUoNCwgMzQ4LDApLAlBUFVfUlRfTUFTSywgUFBDNDA1LAlQUENOT05FLAl7UkEsIEZTTH19 LAotIHsiZWZzYWRkIiwJVlggKDQsIDcwNCksCVZYX01BU0ssICAgICBQUENFRlN8UFBDVkxFLCBQ UENOT05FLAl7UlMsIFJBLCBSQn19LAotIHsiZWZzc3ViIiwJVlggKDQsIDcwNSksCVZYX01BU0ss ICAgICBQUENFRlN8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAotK3sidm1pbnVkIiwJ VlggKDQsIDcwNiksCVZYX01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBWQSwg VkJ9fSwKLSB7ImVmc2FicyIsCVZYICg0LCA3MDgpLAlWWF9NQVNLLCAgICAgUFBDRUZTfFBQQ1ZM RSwgUFBDTk9ORSwJe1JTLCBSQX19LAotIHsidnNyIiwJCVZYICg0LCA3MDgpLAlWWF9NQVNLLCAg ICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7ImVmc25hYnMiLAlW WCAoNCwgNzA5KSwJVlhfTUFTSywgICAgIFBQQ0VGU3xQUENWTEUsIFBQQ05PTkUsCXtSUywgUkF9 fSwKLSB7ImVmc25lZyIsCVZYICg0LCA3MTApLAlWWF9NQVNLLCAgICAgUFBDRUZTfFBQQ1ZMRSwg UFBDTk9ORSwJe1JTLCBSQX19LAotIHsidmNtcGd0ZnAiLAlWWFIoNCwgNzEwLDApLAlWWFJfTUFT SywgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSt7InZjbXBndHVk IiwJVlhSKDQsIDcxMSwwKSwJVlhSX01BU0ssICAgIFBQQ1ZFQzIsCSAgICBQUENOT05FLAl7VkQs IFZBLCBWQn19LAotIHsiZWZzbXVsIiwJVlggKDQsIDcxMiksCVZYX01BU0ssICAgICBQUENFRlN8 UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAotIHsiZWZzZGl2IiwJVlggKDQsIDcxMyks CVZYX01BU0ssICAgICBQUENFRlN8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAotIHsi dnJmaW0iLAlWWCAoNCwgNzE0KSwJVlhWQV9NQVNLLCAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUs CXtWRCwgVkJ9fSwKLUBAIC0zMTYzLDEyICszMjA3LDE2IEBACi0geyJ2bWluc3ciLAlWWCAoNCwg ODk4KSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0s Ci0geyJ2c3JhdyIsCVZYICg0LCA5MDApLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBD Tk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InZjbXBndHN3IiwJVlhSKDQsIDkwMiwwKSwJVlhSX01B U0ssICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0reyJ2bXVsZXN3 IiwJVlggKDQsIDkwNCksCVZYX01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBW QSwgVkJ9fSwKLSB7InZjdHV4cyIsCVZYICg0LCA5MDYpLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQ Q1ZMRSwgUFBDTk9ORSwJe1ZELCBWQiwgVUlNTX19LAotIHsidmNmcHV4d3MiLAlWWCAoNCwgOTA2 KSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkIsIFVJTU19fSwK LSB7InZzcGx0aXN3IiwJVlggKDQsIDkwOCksCVZYVkJfTUFTSywgICBQUENWRUN8UFBDVkxFLCBQ UENOT05FLAl7VkQsIFNJTU19fSwKLSB7Im1hY2xod3N1IiwJWE8gKDQsIDQ2MCwwLDApLFhPX01B U0ssICAgICBNVUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0geyJtYWNsaHdz dS4iLAlYTyAoNCwgNDYwLDAsMSksWE9fTUFTSywgICAgIE1VTEhXfFBQQ1ZMRSwgUFBDTk9ORSwJ e1JULCBSQSwgUkJ9fSwKLSt7InZtaW5zZCIsCVZYICg0LCA5NjIpLAlWWF9NQVNLLCAgICAgUFBD VkVDMiwJICAgIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0reyJ2c3JhZCIsCVZYICg0LCA5NjQp LAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJICAgIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ2 Y21wYmZwIiwJVlhSKDQsIDk2NiwwKSwJVlhSX01BU0ssICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05P TkUsCXtWRCwgVkEsIFZCfX0sCi0reyJ2Y21wZ3RzZCIsCVZYUig0LCA5NjcsMCksCVZYUl9NQVNL LCAgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsidmN0c3hzIiwJVlggKDQs IDk3MCksCVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZCLCBVSU1N fX0sCi0geyJ2Y2Zwc3h3cyIsCVZYICg0LCA5NzApLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZM RSwgUFBDTk9ORSwJe1ZELCBWQiwgVUlNTX19LAotIHsidnVwa2xweCIsCVZYICg0LCA5NzQpLAlW WFZBX01BU0ssICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQn19LAotQEAgLTMxNzcs NiArMzIyNSw3IEBACi0geyJubWFjbGh3cyIsCVhPICg0LCA0OTQsMCwwKSxYT19NQVNLLCAgICAg TVVMSFd8UFBDVkxFLCBQUENOT05FLAl7UlQsIFJBLCBSQn19LAotIHsibm1hY2xod3MuIiwJWE8g KDQsIDQ5NCwwLDEpLFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEs IFJCfX0sCi0geyJ2c3VidWJtIiwJVlggKDQsMTAyNCksCVZYX01BU0ssICAgICBQUENWRUN8UFBD VkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotK3siYmNkYWRkLiIsCVZYICg0LDEwMjUpLAlW WFBTX01BU0ssICAgUFBDVkVDMiwJICAgIFBQQ05PTkUsCXtWRCwgVkEsIFZCLCBQU319LAotIHsi dmF2Z3ViIiwJVlggKDQsMTAyNiksCVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05F LAl7VkQsIFZBLCBWQn19LAotIHsidmFic2R1YiIsCVZYICg0LDEwMjcpLAlWWF9NQVNLLCAgICAg UFBDVkVDMiwJUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7ImV2bWhlc3NmIiwJVlggKDQsMTAy NyksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAot QEAgLTMxODUsNiArMzIzNCw3IEBACi0geyJ1ZGkwZmNtLiIsCUFQVSg0LCA1MTUsMCksIEFQVV9N QVNLLCBQUEM0MDV8UFBDNDQwLCBQUEM0NzYsCQl7VVJULCBVUkEsIFVSQn19LAotIHsidWRpMGZj bSIsCUFQVSg0LCA1MTUsMSksIEFQVV9NQVNLLCBQUEM0MDV8UFBDNDQwLCBQUEM0NzYsCQl7VVJU LCBVUkEsIFVSQn19LAotIHsiZXZtaG9zc2YiLAlWWCAoNCwxMDMxKSwJVlhfTUFTSywgICAgIFBQ Q1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0reyJ2cG1zdW1iIiwJVlggKDQs MTAzMiksCVZYX01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwK LSB7ImV2bWhldW1pIiwJVlggKDQsMTAzMiksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQ UENOT05FLAl7UlMsIFJBLCBSQn19LAotIHsiZXZtaGVzbWkiLAlWWCAoNCwxMDMzKSwJVlhfTUFT SywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0geyJ2bWF4ZnAi LAlWWCAoNCwxMDM0KSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwg VkEsIFZCfX0sCi1AQCAtMzIwNiw2ICszMjU2LDcgQEAKLSB7ImV2bWhvc21pYSIsCVZYICg0LDEw NjkpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwK LSB7ImV2bWhvc21mYSIsCVZYICg0LDEwNzEpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwg UFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7InZzdWJ1aG0iLAlWWCAoNCwxMDg4KSwJVlhfTUFT SywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0reyJiY2RzdWIu IiwJVlggKDQsMTA4OSksCVZYUFNfTUFTSywgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBW QSwgVkIsIFBTfX0sCi0geyJ2YXZndWgiLAlWWCAoNCwxMDkwKSwJVlhfTUFTSywgICAgIFBQQ1ZF Q3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ2YWJzZHVoIiwJVlggKDQsMTA5 MSksCVZYX01BU0ssICAgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsidmFu ZGMiLAlWWCAoNCwxMDkyKSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtW RCwgVkEsIFZCfX0sCi1AQCAtMzIxMywxMSArMzI2NCwxMyBAQAotIHsidWRpMWZjbS4iLAlBUFUo NCwgNTQ3LDApLCBBUFVfTUFTSywgUFBDNDA1fFBQQzQ0MCwgUFBDNDc2LAkJe1VSVCwgVVJBLCBV UkJ9fSwKLSB7InVkaTFmY20iLAlBUFUoNCwgNTQ3LDEpLCBBUFVfTUFTSywgUFBDNDA1fFBQQzQ0 MCwgUFBDNDc2LAkJe1VSVCwgVVJBLCBVUkJ9fSwgICAKLSB7ImV2bXdoc3NmIiwJVlggKDQsMTA5 NSksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAot K3sidnBtc3VtaCIsCVZYICg0LDEwOTYpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJICAgIFBQQ05P TkUsCXtWRCwgVkEsIFZCfX0sCi0geyJldm13bHVtaSIsCVZYICg0LDEwOTYpLAlWWF9NQVNLLCAg ICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7InZtaW5mcCIsCVZY ICg0LDEwOTgpLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwg VkJ9fSwKLSB7ImV2bXdodW1pIiwJVlggKDQsMTEwMCksCVZYX01BU0ssICAgICBQUENTUEV8UFBD VkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAotIHsidnNybyIsCVZYICg0LDExMDApLAlWWF9N QVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7ImV2bXdo c21pIiwJVlggKDQsMTEwMSksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7 UlMsIFJBLCBSQn19LAotK3sidnBrdWR1bSIsCVZYICg0LDExMDIpLAlWWF9NQVNLLCAgICAgUFBD VkVDMiwJICAgIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJldm13aHNtZiIsCVZYICg0LDEx MDMpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwK LSB7ImV2bXdzc2YiLAlWWCAoNCwxMTA3KSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQ Q05PTkUsCXtSUywgUkEsIFJCfX0sCi0geyJtYWNoaHdvIiwJWE8gKDQsCTQ0LDEsMCksWE9fTUFT SywgICAgIE1VTEhXfFBQQ1ZMRSwgUFBDTk9ORSwJe1JULCBSQSwgUkJ9fSwKLUBAIC0zMjQzLDYg KzMyOTYsNyBAQAotIHsidmFic2R1dyIsCVZYICg0LDExNTUpLAlWWF9NQVNLLCAgICAgUFBDVkVD MiwJUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InZtciIsCQlWWCAoNCwxMTU2KSwJVlhfTUFT SywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCQX19LAotIHsidm9yIiwJ CVZYICg0LDExNTYpLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBW QSwgVkJ9fSwKLSt7InZwbXN1bXciLAlWWCAoNCwxMTYwKSwJVlhfTUFTSywgICAgIFBQQ1ZFQzIs CSAgICBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsidmNtcGVxdXcuIiwJVlhSKDQsIDEzNCwx KSwJVlhSX01BU0ssICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0g eyJ1ZGkyZmNtLiIsCUFQVSg0LCA1NzksMCksIEFQVV9NQVNLLCBQUEM0MDV8UFBDNDQwLCBQUEM0 NzYsCQl7VVJULCBVUkEsIFVSQn19LAotIHsidWRpMmZjbSIsCUFQVSg0LCA1NzksMSksIEFQVV9N QVNLLCBQUEM0MDV8UFBDNDQwLCBQUEM0NzYsCQl7VVJULCBVUkEsIFVSQn19LCAgIAotQEAgLTMy NTAsNiArMzMwNCw3IEBACi0geyJtYWNoaHdzdW8uIiwJWE8gKDQsCTc2LDEsMSksWE9fTUFTSywg ICAgIE1VTEhXfFBQQ1ZMRSwgUFBDTk9ORSwJe1JULCBSQSwgUkJ9fSwKLSB7InBzX21lcmdlMTAi LAlYT1BTKDQsNTkyLDApLAlYT1BTX01BU0ssICAgUFBDUFMsCVBQQ05PTkUsCXtGUlQsIEZSQSwg RlJCfX0sCi0geyJwc19tZXJnZTEwLiIsCVhPUFMoNCw1OTIsMSksCVhPUFNfTUFTSywgICBQUENQ UywJUFBDTk9ORSwJe0ZSVCwgRlJBLCBGUkJ9fSwKLSt7InZzdWJ1ZG0iLAlWWCAoNCwxMjE2KSwJ VlhfTUFTSywgICAgIFBQQ1ZFQzIsCSAgICBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsiZXZh ZGR1c2lhYXciLAlWWCAoNCwxMjE2KSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05P TkUsCXtSUywgUkF9fSwKLSB7ImV2YWRkc3NpYWF3IiwJVlggKDQsMTIxNyksCVZYX01BU0ssICAg ICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBfX0sCi0geyJldnN1YmZ1c2lhYXciLFZY ICg0LDEyMTgpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQX19 LAotQEAgLTMyNTksMTggKzMzMTQsMjIgQEAKLSB7ImV2ZGl2d3MiLAlWWCAoNCwxMjIyKSwJVlhf TUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0geyJ2Y21w ZXFmcC4iLAlWWFIoNCwgMTk4LDEpLAlWWFJfTUFTSywgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9O RSwJe1ZELCBWQSwgVkJ9fSwKLSB7InVkaTNmY20uIiwJQVBVKDQsIDYxMSwwKSwgQVBVX01BU0ss IFBQQzQwNXxQUEM0NDAsIFBQQzQ3NiwJCXtVUlQsIFVSQSwgVVJCfX0sCi0reyJ2Y21wZXF1ZC4i LAlWWFIoNCwgMTk5LDEpLAlWWFJfTUFTSywgICAgUFBDVkVDMiwJUFBDTk9ORSwJe1ZELCBWQSwg VkJ9fSwKLSB7InVkaTNmY20iLAlBUFUoNCwgNjExLDEpLCBBUFVfTUFTSywgUFBDNDA1fFBQQzQ0 MCwgUFBDNDc2LAkJe1VSVCwgVVJBLCBVUkJ9fSwgICAKLSB7ImV2ZGl2d3UiLAlWWCAoNCwxMjIz KSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0r eyJ2cG1zdW1kIiwJVlggKDQsMTIyNCksCVZYX01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9O RSwJe1ZELCBWQSwgVkJ9fSwKLSB7ImV2YWRkdW1pYWF3IiwJVlggKDQsMTIyNCksCVZYX01BU0ss ICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBfX0sCi0geyJldmFkZHNtaWFhdyIs CVZYICg0LDEyMjUpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBS QX19LAotIHsiZXZzdWJmdW1pYWF3IixWWCAoNCwxMjI2KSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQ UENWTEUsIFBQQ05PTkUsCXtSUywgUkF9fSwKLSB7ImV2c3ViZnNtaWFhdyIsVlggKDQsMTIyNyks CVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBfX0sCi0reyJ2cGt1 ZHVzIiwJVlggKDQsMTIzMCksCVZYX01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZE LCBWQSwgVkJ9fSwKLSB7Im1hY2hod3NvIiwJWE8gKDQsIDEwOCwxLDApLFhPX01BU0ssICAgICBN VUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0geyJtYWNoaHdzby4iLAlYTyAo NCwgMTA4LDEsMSksWE9fTUFTSywgICAgIE1VTEhXfFBQQ1ZMRSwgUFBDTk9ORSwJe1JULCBSQSwg UkJ9fSwKLSB7Im5tYWNoaHdzbyIsCVhPICg0LCAxMTAsMSwwKSxYT19NQVNLLCAgICAgTVVMSFd8 UFBDVkxFLCBQUENOT05FLAl7UlQsIFJBLCBSQn19LAotIHsibm1hY2hod3NvLiIsCVhPICg0LCAx MTAsMSwxKSxYT19NQVNLLCAgICAgTVVMSFd8UFBDVkxFLCBQUENOT05FLAl7UlQsIFJBLCBSQn19 LAotIHsicHNfbWVyZ2UxMSIsCVhPUFMoNCw2MjQsMCksCVhPUFNfTUFTSywgICBQUENQUywJUFBD Tk9ORSwJe0ZSVCwgRlJBLCBGUkJ9fSwKLSB7InBzX21lcmdlMTEuIiwJWE9QUyg0LDYyNCwxKSwJ WE9QU19NQVNLLCAgIFBQQ1BTLAlQUENOT05FLAl7RlJULCBGUkEsIEZSQn19LAotK3sidnN1YnVx bSIsCVZYICg0LDEyODApLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJUFBDTk9ORSwJe1ZELCBWQSwg VkJ9fSwKLSB7ImV2bWhldXNpYWF3IiwJVlggKDQsMTI4MCksCVZYX01BU0ssICAgICBQUENTUEV8 UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAotIHsiZXZtaGVzc2lhYXciLAlWWCAoNCwx MjgxKSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0s Ci0geyJ2YXZnc2IiLAlWWCAoNCwxMjgyKSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQ Q05PTkUsCXtWRCwgVkEsIFZCfX0sCi1AQCAtMzI4Myw4ICszMzQyLDExIEBACi0geyJ1ZGk0ZmNt IiwJQVBVKDQsIDY0MywxKSwgQVBVX01BU0ssIFBQQzQwNXxQUEM0NDAsIFBQQzQ3NiwJCXtVUlQs IFVSQSwgVVJCfX0sCi0geyJldm1ob3NzZmFhdyIsCVZYICg0LDEyODcpLAlWWF9NQVNLLCAgICAg UFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7ImV2bWhldW1pYWF3IiwJ VlggKDQsMTI4OCksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJB LCBSQn19LAotK3sidmNpcGhlciIsCVZYICg0LDEyODgpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJ ICAgIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0reyJ2Y2lwaGVybGFzdCIsCVZYICg0LDEyODkp LAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJICAgIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJl dm1oZXNtaWFhdyIsCVZYICg0LDEyODkpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBD Tk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7ImV2bWhlc21mYWF3IiwJVlggKDQsMTI5MSksCVZYX01B U0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAotK3sidmdiYmQi LAlWWCAoNCwxMjkyKSwJVlhWQV9NQVNLLCAgIFBQQ1ZFQzIsCSAgICBQUENOT05FLAl7VkQsIFZC fX0sCi0geyJldm1ob3VtaWFhdyIsCVZYICg0LDEyOTIpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQ Q1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7ImV2bWhvc21pYWF3IiwJVlggKDQsMTI5 MyksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAot IHsiZXZtaG9zbWZhYXciLAlWWCAoNCwxMjk1KSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUs IFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi1AQCAtMzI5NiwxMyArMzM1OCwxOSBAQAotIHsiZXZt aG9ndW1pYWEiLAlWWCAoNCwxMzI0KSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05P TkUsCXtSUywgUkEsIFJCfX0sCi0geyJldm1ob2dzbWlhYSIsCVZYICg0LDEzMjUpLAlWWF9NQVNL LCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7ImV2bWhvZ3Nt ZmFhIiwJVlggKDQsMTMyNyksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7 UlMsIFJBLCBSQn19LAotK3sidnN1YmN1cSIsCVZYICg0LDEzNDQpLAlWWF9NQVNLLCAgICAgUFBD VkVDMiwJICAgIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJldm13bHVzaWFhdyIsCVZYICg0 LDEzNDQpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9 fSwKLSB7ImV2bXdsc3NpYWF3IiwJVlggKDQsMTM0NSksCVZYX01BU0ssICAgICBQUENTUEV8UFBD VkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAotIHsidmF2Z3NoIiwJVlggKDQsMTM0NiksCVZY X01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotK3sidm9y YyIsCVZYICg0LDEzNDgpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJICAgIFBQQ05PTkUsCXtWRCwg VkEsIFZCfX0sCi0geyJ1ZGk1ZmNtLiIsCUFQVSg0LCA2NzUsMCksIEFQVV9NQVNLLCBQUEM0MDV8 UFBDNDQwLCBQUEM0NzYsCQl7VVJULCBVUkEsIFVSQn19LAotIHsidWRpNWZjbSIsCUFQVSg0LCA2 NzUsMSksIEFQVV9NQVNLLCBQUEM0MDV8UFBDNDQwLCBQUEM0NzYsCQl7VVJULCBVUkEsIFVSQn19 LAotK3sidm5jaXBoZXIiLAlWWCAoNCwxMzUyKSwJVlhfTUFTSywgICAgIFBQQ1ZFQzIsCSAgICBQ UENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsiZXZtd2x1bWlhYXciLAlWWCAoNCwxMzUyKSwJVlhf TUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0reyJ2bmNp cGhlcmxhc3QiLFZYICg0LDEzNTMpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJICAgIFBQQ05PTkUs CXtWRCwgVkEsIFZCfX0sCi0geyJldm13bHNtaWFhdyIsCVZYICg0LDEzNTMpLAlWWF9NQVNLLCAg ICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSt7InZicGVybXEiLAlW WCAoNCwxMzU2KSwJVlhfTUFTSywgICAgIFBQQ1ZFQzIsCSAgICBQUENOT05FLAl7VkQsIFZBLCBW Qn19LAotK3sidnBrc2R1cyIsCVZYICg0LDEzNTgpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJICAg IFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJldm13c3NmYWEiLAlWWCAoNCwxMzYzKSwJVlhf TUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0geyJtYWNj aHdvIiwJWE8gKDQsIDE3MiwxLDApLFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUsIFBQQ05PTkUs CXtSVCwgUkEsIFJCfX0sCi0geyJldm13dW1pYWEiLAlWWCAoNCwxMzY4KSwJVlhfTUFTSywgICAg IFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi1AQCAtMzMxNiw2ICszMzg0 LDcgQEAKLSB7ImV2bWhlc3NpYW53IiwJVlggKDQsMTQwOSksCVZYX01BU0ssICAgICBQUENTUEV8 UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAotIHsidmF2Z3N3IiwJVlggKDQsMTQxMCks CVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsi ZXZtaGVzc2ZhbnciLAlWWCAoNCwxNDExKSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQ Q05PTkUsCXtSUywgUkEsIFJCfX0sCi0reyJ2bmFuZCIsCVZYICg0LDE0MTIpLAlWWF9NQVNLLCAg ICAgUFBDVkVDMiwJICAgIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJldm1ob3VzaWFudyIs CVZYICg0LDE0MTIpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBS QSwgUkJ9fSwKLSB7ImV2bWhvc3NpYW53IiwJVlggKDQsMTQxMyksCVZYX01BU0ssICAgICBQUENT UEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAotIHsidWRpNmZjbS4iLAlBUFUoNCwg NzA3LDApLCBBUFVfTUFTSywgUFBDNDA1fFBQQzQ0MCwgUFBDNDc2LAkJe1VSVCwgVVJBLCBVUkJ9 fSwKLUBAIC0zMzM3LDExICszNDA2LDE0IEBACi0geyJldm1ob2dzbWZhbiIsCVZYICg0LDE0NTUp LAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7 ImV2bXdsdXNpYW53IiwJVlggKDQsMTQ3MiksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQ UENOT05FLAl7UlMsIFJBLCBSQn19LAotIHsiZXZtd2xzc2lhbnciLAlWWCAoNCwxNDczKSwJVlhf TUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0reyJ2c2xk IiwJVlggKDQsMTQ3NiksCVZYX01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBW QSwgVkJ9fSwKLSB7InZjbXBnZWZwLiIsCVZYUig0LCA0NTQsMSksCVZYUl9NQVNLLCAgICBQUENW RUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsidWRpN2ZjbS4iLAlBUFUoNCwg NzM5LDApLCBBUFVfTUFTSywgUFBDNDA1fFBQQzQ0MCwgUFBDNDc2LAkJe1VSVCwgVVJBLCBVUkJ9 fSwKLSB7InVkaTdmY20iLAlBUFUoNCwgNzM5LDEpLCBBUFVfTUFTSywgUFBDNDA1fFBQQzQ0MCwg UFBDNDc2LAkJe1VSVCwgVVJBLCBVUkJ9fSwKLSt7InZzYm94IiwJVlggKDQsMTQ4MCksCVZYVkJf TUFTSywgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBWQX19LAotIHsiZXZtd2x1bWlhbnci LAlWWCAoNCwxNDgwKSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywg UkEsIFJCfX0sCi0geyJldm13bHNtaWFudyIsCVZYICg0LDE0ODEpLAlWWF9NQVNLLCAgICAgUFBD U1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSt7InZwa3Nkc3MiLAlWWCAoNCwx NDg2KSwJVlhfTUFTSywgICAgIFBQQ1ZFQzIsCSAgICBQUENOT05FLAl7VkQsIFZBLCBWQn19LAot IHsiZXZtd3NzZmFuIiwJVlggKDQsMTQ5MSksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQ UENOT05FLAl7UlMsIFJBLCBSQn19LAotIHsibWFjY2h3c28iLAlYTyAoNCwgMjM2LDEsMCksWE9f TUFTSywgICAgIE1VTEhXfFBQQ1ZMRSwgUFBDTk9ORSwJe1JULCBSQSwgUkJ9fSwKLSB7ImV2bXd1 bWlhbiIsCVZYICg0LDE0OTYpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJ e1JTLCBSQSwgUkJ9fSwKLUBAIC0zMzYyLDE1ICszNDM0LDI1IEBACi0geyJ2c3VtNHNocyIsCVZY ICg0LDE2MDgpLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwg VkJ9fSwKLSB7InVkaTlmY20uIiwJQVBVKDQsIDgwNCwwKSwJQVBVX01BU0ssICAgIFBQQzQ0MCwJ UFBDNDc2LAkJe1VSVCwgVVJBLCBVUkJ9fSwKLSB7InVkaTlmY20iLAlBUFUoNCwgODA0LDEpLAlB UFVfTUFTSywgICAgUFBDNDQwLAlQUEM0NzYsCQl7VVJULCBVUkEsIFVSQn19LAotK3sidnVwa2hz dyIsCVZYICg0LDE2MTQpLAlWWFZBX01BU0ssICAgUFBDVkVDMiwJICAgIFBQQ05PTkUsCXtWRCwg VkJ9fSwKLSB7InZzdWJ1d3MiLAlWWCAoNCwxNjY0KSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENW TEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0reyJ2c2hhc2lnbWF3IiwJVlggKDQsMTY2Niks CVZYX01BU0ssICAgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZBLCBTVCwgU0lYfX0sCi0reyJ2 ZXF2IiwJVlggKDQsMTY2OCksCVZYX01BU0ssICAgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZB LCBWQn19LAotIHsidmNtcGd0dXcuIiwJVlhSKDQsIDY0NiwxKSwJVlhSX01BU0ssICAgIFBQQ1ZF Q3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ1ZGkxMGZjbS4iLAlBUFUoNCwg ODM1LDApLAlBUFVfTUFTSywgICAgUFBDNDQwLAlQUEM0NzYsCQl7VVJULCBVUkEsIFVSQn19LAot IHsidWRpMTBmY20iLAlBUFUoNCwgODM1LDEpLAlBUFVfTUFTSywgICAgUFBDNDQwLAlQUEM0NzYs CQl7VVJULCBVUkEsIFVSQn19LAotIHsidnN1bTJzd3MiLAlWWCAoNCwxNjcyKSwJVlhfTUFTSywg ICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0reyJ2bXJnb3ciLAlW WCAoNCwxNjc2KSwJVlhfTUFTSywgICAgIFBQQ1ZFQzIsCVBQQ05PTkUsCXtWRCwgVkEsIFZCfX0s Ci0reyJ2c2hhc2lnbWFkIiwJVlggKDQsMTczMCksCVZYX01BU0ssICAgICBQUENWRUMyLAlQUENO T05FLAl7VkQsIFZBLCBTVCwgU0lYfX0sCi0reyJ2c3JkIiwJVlggKDQsMTczMiksCVZYX01BU0ss ICAgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsidmNtcGd0ZnAuIiwJVlhS KDQsIDcxMCwxKSwJVlhSX01BU0ssICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEs IFZCfX0sCi0geyJ1ZGkxMWZjbS4iLAlBUFUoNCwgODY3LDApLAlBUFVfTUFTSywgICAgUFBDNDQw LAlQUEM0NzYsCQl7VVJULCBVUkEsIFVSQn19LAotK3sidmNtcGd0dWQuIiwJVlhSKDQsIDcxMSwx KSwJVlhSX01BU0ssICAgIFBQQ1ZFQzIsCVBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ1ZGkx MWZjbSIsCUFQVSg0LCA4NjcsMSksCUFQVV9NQVNLLCAgICBQUEM0NDAsCVBQQzQ3NiwJCXtVUlQs IFVSQSwgVVJCfX0sCi0reyJ2dXBrbHN3IiwJVlggKDQsMTc0MiksCVZYVkFfTUFTSywgICBQUENW RUMyLAlQUENOT05FLAl7VkQsIFZCfX0sCi0geyJ2c3Vic2JzIiwJVlggKDQsMTc5MiksCVZYX01B U0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotK3sidmNsemIi LAlWWCAoNCwxNzk0KSwJVlhWQV9NQVNLLCAgIFBQQ1ZFQzIsCVBQQ05PTkUsCXtWRCwgVkJ9fSwK LSt7InZwb3BjbnRiIiwJVlggKDQsMTc5NSksCVZYVkFfTUFTSywgICBQUENWRUMyLAlQUENOT05F LAl7VkQsIFZCfX0sCi0geyJ2Y21wZ3RzYi4iLAlWWFIoNCwgNzc0LDEpLAlWWFJfTUFTSywgICAg UFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InVkaTEyZmNtLiIsCUFQ VSg0LCA4OTksMCksCUFQVV9NQVNLLCAgICBQUEM0NDAsCVBQQzQ3NiwJCXtVUlQsIFVSQSwgVVJC fX0sCi0geyJ1ZGkxMmZjbSIsCUFQVSg0LCA4OTksMSksCUFQVV9NQVNLLCAgICBQUEM0NDAsCVBQ QzQ3NiwJCXtVUlQsIFVSQSwgVVJCfX0sCi1AQCAtMzM3OCw2ICszNDYwLDggQEAKLSB7Im1hY2xo d3VvIiwJWE8gKDQsIDM5NiwxLDApLFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUsIFBQQ05PTkUs CXtSVCwgUkEsIFJCfX0sCi0geyJtYWNsaHd1by4iLAlYTyAoNCwgMzk2LDEsMSksWE9fTUFTSywg ICAgIE1VTEhXfFBQQ1ZMRSwgUFBDTk9ORSwJe1JULCBSQSwgUkJ9fSwKLSB7InZzdWJzaHMiLAlW WCAoNCwxODU2KSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEs IFZCfX0sCi0reyJ2Y2x6aCIsCVZYICg0LDE4NTgpLAlWWFZBX01BU0ssICAgUFBDVkVDMiwJUFBD Tk9ORSwJe1ZELCBWQn19LAotK3sidnBvcGNudGgiLAlWWCAoNCwxODU5KSwJVlhWQV9NQVNLLCAg IFBQQ1ZFQzIsCVBQQ05PTkUsCXtWRCwgVkJ9fSwKLSB7InZjbXBndHNoLiIsCVZYUig0LCA4Mzgs MSksCVZYUl9NQVNLLCAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAot IHsidWRpMTNmY20uIiwJQVBVKDQsIDkzMSwwKSwJQVBVX01BU0ssICAgIFBQQzQ0MCwJUFBDNDc2 LAkJe1VSVCwgVVJBLCBVUkJ9fSwKLSB7InVkaTEzZmNtIiwJQVBVKDQsIDkzMSwxKSwJQVBVX01B U0ssICAgIFBQQzQ0MCwJUFBDNDc2LAkJe1VSVCwgVVJBLCBVUkJ9fSwKLUBAIC0zMzg2LDE0ICsz NDcwLDIwIEBACi0geyJubWFjbGh3byIsCVhPICg0LCA0MzAsMSwwKSxYT19NQVNLLCAgICAgTVVM SFd8UFBDVkxFLCBQUENOT05FLAl7UlQsIFJBLCBSQn19LAotIHsibm1hY2xod28uIiwJWE8gKDQs IDQzMCwxLDEpLFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJC fX0sCi0geyJ2c3Vic3dzIiwJVlggKDQsMTkyMCksCVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxF LCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotK3sidmNsenciLAlWWCAoNCwxOTIyKSwJVlhWQV9N QVNLLCAgIFBQQ1ZFQzIsCVBQQ05PTkUsCXtWRCwgVkJ9fSwKLSt7InZwb3BjbnR3IiwJVlggKDQs MTkyMyksCVZYVkFfTUFTSywgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZCfX0sCi0geyJ2Y21w Z3Rzdy4iLAlWWFIoNCwgOTAyLDEpLAlWWFJfTUFTSywgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9O RSwJe1ZELCBWQSwgVkJ9fSwKLSB7InVkaTE0ZmNtLiIsCUFQVSg0LCA5NjMsMCksCUFQVV9NQVNL LCAgICBQUEM0NDAsCVBQQzQ3NiwJCXtVUlQsIFVSQSwgVVJCfX0sCi0geyJ1ZGkxNGZjbSIsCUFQ VSg0LCA5NjMsMSksCUFQVV9NQVNLLCAgICBQUEM0NDAsCVBQQzQ3NiwJCXtVUlQsIFVSQSwgVVJC fX0sCi0geyJ2c3Vtc3dzIiwJVlggKDQsMTkyOCksCVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxF LCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotK3sidm1yZ2V3IiwJVlggKDQsMTkzMiksCVZYX01B U0ssICAgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsibWFjbGh3c3VvIiwJ WE8gKDQsIDQ2MCwxLDApLFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwg UkEsIFJCfX0sCi0geyJtYWNsaHdzdW8uIiwJWE8gKDQsIDQ2MCwxLDEpLFhPX01BU0ssICAgICBN VUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0reyJ2Y2x6ZCIsCVZYICg0LDE5 ODYpLAlWWFZBX01BU0ssICAgUFBDVkVDMiwJUFBDTk9ORSwJe1ZELCBWQn19LAotK3sidnBvcGNu dGQiLAlWWCAoNCwxOTg3KSwJVlhWQV9NQVNLLCAgIFBQQ1ZFQzIsCVBQQ05PTkUsCXtWRCwgVkJ9 fSwKLSB7InZjbXBiZnAuIiwJVlhSKDQsIDk2NiwxKSwJVlhSX01BU0ssICAgIFBQQ1ZFQywJUFBD Tk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InVkaTE1ZmNtLiIsCUFQVSg0LCA5OTUsMCksCUFQVV9N QVNLLCAgICBQUEM0NDAsCVBQQzQ3NiwJCXtVUlQsIFVSQSwgVVJCfX0sCi0reyJ2Y21wZ3RzZC4i LAlWWFIoNCwgOTY3LDEpLAlWWFJfTUFTSywgICAgUFBDVkVDMiwJUFBDTk9ORSwJe1ZELCBWQSwg VkJ9fSwKLSB7InVkaTE1ZmNtIiwJQVBVKDQsIDk5NSwxKSwJQVBVX01BU0ssICAgIFBQQzQ0MCwJ UFBDNDc2LAkJe1VSVCwgVVJBLCBVUkJ9fSwKLSB7Im1hY2xod3NvIiwJWE8gKDQsIDQ5MiwxLDAp LFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0geyJt YWNsaHdzby4iLAlYTyAoNCwgNDkyLDEsMSksWE9fTUFTSywgICAgIE1VTEhXfFBQQ1ZMRSwgUFBD Tk9ORSwJe1JULCBSQSwgUkJ9fSwKLUBAIC0zOTY1LDYgKzQwNTUsOCBAQAotIAotIHsiY3JhbmRj IiwJWEwoMTksMTI5KSwJWExfTUFTSywgICAgIENPTSwJUFBDTk9ORSwJe0JULCBCQSwgQkJ9fSwK LSAKLSt7InJmZWJiIiwJWEwoMTksMTQ2KSwJWExTX01BU0ssICAgIFBPV0VSOCwJUFBDTk9ORSwJ e1NYTH19LAotKwotIHsiaXN5bmMiLAlYTCgxOSwxNTApLAkweGZmZmZmZmZmLCAgUFBDQ09NLAlQ UENOT05FLAl7MH19LAotIHsiaWNzIiwJCVhMKDE5LDE1MCksCTB4ZmZmZmZmZmYsICBQV1JDT00s CVBQQ05PTkUsCXswfX0sCi0gCi1AQCAtNDE0OCw2ICs0MjQwLDEzIEBACi0geyJiY2N0cmwiLCAg WExMSygxOSw1MjgsMSksCQlYTEJIX01BU0ssICAgICBQUENDT00sCSBQUENOT05FLAl7Qk8sIEJJ LCBCSH19LAotIHsiYmNjbCIsICAgIFhMTEsoMTksNTI4LDEpLAkJWExCQl9NQVNLLCAgICAgUFdS Q09NLAkgUFBDTk9ORSwJe0JPLCBCSX19LAotIAotK3siYmN0YXItIiwgIFhMWUxLKDE5LDU2MCww LDApLAkJWExZQkJfTUFTSywgICAgUE9XRVI4LAkgUFBDTk9ORSwJe0JPRSwgQkl9fSwKLSt7ImJj dGFybC0iLCBYTFlMSygxOSw1NjAsMCwxKSwJCVhMWUJCX01BU0ssICAgIFBPV0VSOCwJIFBQQ05P TkUsCXtCT0UsIEJJfX0sCi0reyJiY3RhcisiLCAgWExZTEsoMTksNTYwLDEsMCksCQlYTFlCQl9N QVNLLCAgICBQT1dFUjgsCSBQUENOT05FLAl7Qk9FLCBCSX19LAotK3siYmN0YXJsKyIsIFhMWUxL KDE5LDU2MCwxLDEpLAkJWExZQkJfTUFTSywgICAgUE9XRVI4LAkgUFBDTk9ORSwJe0JPRSwgQkl9 fSwKLSt7ImJjdGFyIiwgICBYTExLKDE5LDU2MCwwKSwJCVhMQkhfTUFTSywgICAgIFBPV0VSOCwJ IFBQQ05PTkUsCXtCTywgQkksIEJIfX0sCi0reyJiY3RhcmwiLCAgWExMSygxOSw1NjAsMSksCQlY TEJIX01BU0ssICAgICBQT1dFUjgsCSBQUENOT05FLAl7Qk8sIEJJLCBCSH19LAotKwotIHsicmx3 aW1pIiwJTSgyMCwwKSwJTV9NQVNLLCAgICAgIFBQQ0NPTSwJUFBDTk9ORSwJe1JBLCBSUywgU0gs IE1CRSwgTUV9fSwKLSB7InJsaW1pIiwJTSgyMCwwKSwJTV9NQVNLLCAgICAgIFBXUkNPTSwJUFBD Tk9ORSwJe1JBLCBSUywgU0gsIE1CRSwgTUV9fSwKLSAKLUBAIC00Mjc2LDYgKzQzNzUsOCBAQAot IHsibXVsaHd1IiwJWE8oMzEsMTEsMCwwKSwJWE9fTUFTSywgICAgIFBQQ3xQUENWTEUsIFBQQ05P TkUsCXtSVCwgUkEsIFJCfX0sCi0geyJtdWxod3UuIiwJWE8oMzEsMTEsMCwxKSwJWE9fTUFTSywg ICAgIFBQQ3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0gCi0reyJseHNpd3p4IiwJ WCgzMSwxMiksCVhYMV9NQVNLLCAgICBQUENWU1gyLAlQUENOT05FLAl7WFQ2LCBSQTAsIFJCfX0s Ci0rCi0geyJpc2VsbHQiLAlYKDMxLDE1KSwJWF9NQVNLLCAgICAgIFBQQ0lTRUwsCVBQQ05PTkUs CXtSVCwgUkEwLCBSQn19LAotIAotIHsidGxiaWx4bHBpZCIsCVhUTygzMSwxOCwwKSwJWFRPX01B U0ssIEU1MDBNQ3xQUENBMiwJUFBDTk9ORSwJezB9fSwKLUBAIC00MzE2LDYgKzQ0MTcsOSBAQAot IHsibWFza2cuIiwJWFJDKDMxLDI5LDEpLAlYX01BU0ssICAgICAgTTYwMSwJUFBDQTIsCQl7UkEs IFJTLCBSQn19LAotIAotIHsibGRlcHgiLAlYKDMxLDI5KSwJWF9NQVNLLCAgICAgIEU1MDBNQ3xQ UENBMnxQUENWTEUsIFBQQ05PTkUsIHtSVCwgUkEwLCBSQn19LAotKwotK3sid2FpdGFzZWMiLAlY KDMxLDMwKSwJWFJUUkFSQl9NQVNLLFBPV0VSOCwJUFBDTk9ORSwJezB9fSwKLSsKLSB7Imx3ZXB4 IiwJWCgzMSwzMSksCVhfTUFTSywJICAgICBFNTAwTUN8UFBDQTJ8UFBDVkxFLCBQUENOT05FLCB7 UlQsIFJBMCwgUkJ9fSwKLSAKLSB7ImNtcGx3IiwJWE9QTCgzMSwzMiwwKSwJWENNUExfTUFTSywg IFBQQ0NPTXxQUENWTEUsIFBQQ05PTkUsCXtPQkYsIFJBLCBSQn19LAotQEAgLTQzMzUsNiArNDQz OSw4IEBACi0gCi0geyJhZGRnNnMiLAlYTygzMSw3NCwwLDApLAlYT19NQVNLLCAgICAgUE9XRVI2 LAlQUENOT05FLAl7UlQsIFJBLCBSQn19LAotIAotK3sibHhzaXdheCIsCVgoMzEsNzYpLAlYWDFf TUFTSywgICAgUFBDVlNYMiwJUFBDTk9ORSwJe1hUNiwgUkEwLCBSQn19LAotKwotIHsiaXNlbGVx IiwJWCgzMSw3OSksCVhfTUFTSywgICAgICBQUENJU0VMLAlQUENOT05FLAl7UlQsIFJBMCwgUkJ9 fSwKLSAKLSB7ImlzZWwiLAlYSVNFTCgzMSwxNSksIFhJU0VMX01BU0ssIFBQQ0lTRUx8VElUQU58 UFBDVkxFLCBQUENOT05FLCB7UlQsIFJBMCwgUkIsIENSQn19LAotQEAgLTQzNDQsNiArNDQ1MCw5 IEBACi0geyJzdWJmLiIsCVhPKDMxLDQwLDAsMSksCVhPX01BU0ssICAgICBQUEN8UFBDVkxFLCBQ UENOT05FLAl7UlQsIFJBLCBSQn19LAotIHsic3ViLiIsCVhPKDMxLDQwLDAsMSksCVhPX01BU0ss ICAgICBQUEN8UFBDVkxFLCBQUENOT05FLAl7UlQsIFJCLCBSQX19LAotIAotK3sibWZ2c3JkIiwJ WCgzMSw1MSksCVhYMVJCX01BU0ssICAgUFBDVlNYMiwJUFBDTk9ORSwJe1JBLCBYUzZ9fSwKLSt7 Im1mZnByZCIsCVgoMzEsNTEpLAlYWDFSQl9NQVNLfDEsIFBQQ1ZTWDIsCVBQQ05PTkUsCXtSQSwg RlJTfX0sCi0reyJtZnZyZCIsCVgoMzEsNTEpfDEsCVhYMVJCX01BU0t8MSwgUFBDVlNYMiwJUFBD Tk9ORSwJe1JBLCBWU319LAotIHsiZXJhdGlseCIsCVgoMzEsNTEpLAlYX01BU0ssCSAgICAgUFBD QTIsCVBQQ05PTkUsCXtFUkFUX1QsIFJBLCBSQn19LAotIAotIHsibGJhcngiLAlYKDMxLDUyKSwJ WEVIX01BU0ssICAgIFBPV0VSN3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEwLCBSQiwgRUh9fSwK LUBAIC00NDIxLDYgKzQ1MzAsMTAgQEAKLSAKLSB7Im10c3JkaW4iLAlYKDMxLDExNCksCVhSQV9N QVNLLCAgICBQUEM2NCwJUFBDTk9ORSwJe1JTLCBSQn19LAotIAotK3sibWZmcHJ3eiIsCVgoMzEs MTE1KSwJWFgxUkJfTUFTS3wxLCBQUENWU1gyLAlQUENOT05FLAl7UkEsIEZSU319LAotK3sibWZ2 cnd6IiwJWCgzMSwxMTUpfDEsCVhYMVJCX01BU0t8MSwgUFBDVlNYMiwJUFBDTk9ORSwJe1JBLCBW U319LAotK3sibWZ2c3J3eiIsCVgoMzEsMTE1KSwJWFgxUkJfTUFTSywgICBQUENWU1gyLAlQUENO T05FLAl7UkEsIFhTNn19LAotKwotIHsibGhhcngiLAlYKDMxLDExNiksCVhFSF9NQVNLLCAgICBQ T1dFUjd8UFBDVkxFLCBQUENOT05FLAl7UlQsIFJBMCwgUkIsIEVIfX0sCi0gCi0geyJjbGYiLAkJ WCgzMSwxMTgpLAlYVE9fTUFTSywgICAgUE9XRVIsCVBQQ05PTkUsCXtSQSwgUkJ9fSwKLUBAIC00 NDUzLDYgKzQ1NjYsOSBAQAotIHsiYWRkZS4iLAlYTygzMSwxMzgsMCwxKSwJWE9fTUFTSywgICAg IFBQQ0NPTXxQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0geyJhZS4iLAkJWE8oMzEs MTM4LDAsMSksCVhPX01BU0ssICAgICBQV1JDT00sCVBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0g Ci0reyJzdHhzaXd4IiwJWCgzMSwxNDApLAlYWDFfTUFTSywgICAgUFBDVlNYMiwJUFBDTk9ORSwJ e1hTNiwgUkEwLCBSQn19LAotKwotK3sibXNnc25kcCIsCVhSVFJBKDMxLDE0MiwwLDApLCBYUlRS QV9NQVNLLCBQT1dFUjgsCVBQQ05PTkUsCXtSQn19LAotIHsiZGNidHN0bHNlIiwJWCgzMSwxNDIp LAlYX01BU0ssICAgICAgUFBDQ0hMSywJRTUwME1DLAkJe0NULCBSQTAsIFJCfX0sCi0gCi0geyJt dGNyIiwJWEZYTSgzMSwxNDQsMHhmZiwwKSwgWFJBUkJfTUFTSywgQ09NLAlQUENOT05FLAl7UlN9 fSwKLUBAIC00NDYxLDYgKzQ1NzcsOCBAQAotIAotIHsibXRtc3IiLAlYKDMxLDE0NiksCVhSTEFS Ql9NQVNLLCBDT018UFBDVkxFLCBQUENOT05FLAl7UlMsIEFfTH19LAotIAotK3sibXRzbGUiLAlY KDMxLDE0NyksICAgIFhSVExSQVJCX01BU0ssIFBPV0VSOCwJUFBDTk9ORSwJe0x9fSwKLSsKLSB7 ImVyYXRzeCIsCVhSQygzMSwxNDcsMCksCVhfTUFTSywJICAgICBQUENBMiwJUFBDTk9ORSwJe1JU LCBSQTAsIFJCfX0sCi0geyJlcmF0c3guIiwJWFJDKDMxLDE0NywxKSwJWF9NQVNLLAkgICAgIFBQ Q0EyLAlQUENOT05FLAl7UlQsIFJBMCwgUkJ9fSwKLSAKLUBAIC00NDkwLDE0ICs0NjA4LDE5IEBA Ci0geyJzdHZlaHgiLAlYKDMxLDE2NyksCVhfTUFTSywgICAgICBQUENWRUMsCVBQQ05PTkUsCXtW UywgUkEwLCBSQn19LAotIHsic3RoZmNteCIsCUFQVSgzMSwxNjcsMCksIAlBUFVfTUFTSywgICAg UFBDNDA1LAlQUENOT05FLAl7RkNSVCwgUkEsIFJCfX0sCi0gCi0reyJtc2djbHJwIiwJWFJUUkEo MzEsMTc0LDAsMCksIFhSVFJBX01BU0ssIFBPV0VSOCwJUFBDTk9ORSwJe1JCfX0sCi0geyJkY2J0 bHNlIiwJWCgzMSwxNzQpLAlYX01BU0ssICAgICAgUFBDQ0hMSywJRTUwME1DLAkJe0NULCBSQTAs IFJCfX0sCi0gCi0geyJtdG1zcmQiLAlYKDMxLDE3OCksCVhSTEFSQl9NQVNLLCBQUEM2NCwJUFBD Tk9ORSwJe1JTLCBBX0x9fSwKLSAKLSt7Im10dnNyZCIsCVgoMzEsMTc5KSwJWFgxUkJfTUFTSywg ICBQUENWU1gyLAlQUENOT05FLAl7WFQ2LCBSQX19LAotK3sibXRmcHJkIiwJWCgzMSwxNzkpLAlY WDFSQl9NQVNLfDEsIFBQQ1ZTWDIsCVBQQ05PTkUsCXtGUlQsIFJBfX0sCi0reyJtdHZyZCIsCVgo MzEsMTc5KXwxLAlYWDFSQl9NQVNLfDEsIFBQQ1ZTWDIsCVBQQ05PTkUsCXtWRCwgUkF9fSwKLSB7 ImVyYXRyZSIsCVgoMzEsMTc5KSwJWF9NQVNLLAkgICAgIFBQQ0EyLAlQUENOT05FLAl7UlQsIFJB LCBXU319LAotIAotIHsic3RkdXgiLAlYKDMxLDE4MSksCVhfTUFTSywgICAgICBQUEM2NHxQUENW TEUsIFBQQ05PTkUsCXtSUywgUkFTLCBSQn19LAotIAotK3sic3RxY3guIiwJWFJDKDMxLDE4Miwx KSwJWF9NQVNLLCAgICAgIFBPV0VSOCwJUFBDTk9ORSwJe1JTUSwgUkEwLCBSQn19LAotIHsid2No a2FsbCIsCVgoMzEsMTgyKSwJWF9NQVNLLCAgICAgIFBQQ0EyLAlQUENOT05FLAl7T0JGfX0sCi0g Ci0geyJzdHd1eCIsCVgoMzEsMTgzKSwJWF9NQVNLLCAgICAgIFBQQ0NPTXxQUENWTEUsIFBQQ05P TkUsCXtSUywgUkFTLCBSQn19LAotQEAgLTQ1MjcsNiArNDY1MCw5IEBACi0gCi0geyJtdHNyIiwJ WCgzMSwyMTApLCBYUkJfTUFTS3woMTw8MjApLCBDT00sCU5PTjMyLCAgCXtTUiwgUlN9fSwKLSAK LSt7Im10ZnByd2EiLAlYKDMxLDIxMSksCVhYMVJCX01BU0t8MSwgUFBDVlNYMiwJUFBDTk9ORSwJ e0ZSVCwgUkF9fSwKLSt7Im10dnJ3YSIsCVgoMzEsMjExKXwxLAlYWDFSQl9NQVNLfDEsIFBQQ1ZT WDIsCVBQQ05PTkUsCXtWRCwgUkF9fSwKLSt7Im10dnNyd2EiLAlYKDMxLDIxMSksCVhYMVJCX01B U0ssICAgUFBDVlNYMiwJUFBDTk9ORSwJe1hUNiwgUkF9fSwKLSB7ImVyYXR3ZSIsCVgoMzEsMjEx KSwJWF9NQVNLLAkgICAgIFBQQ0EyLAlQUENOT05FLAl7UlMsIFJBLCBXU319LAotIAotIHsibGRh d3guIiwJWFJDKDMxLDIxMiwxKSwJWF9NQVNLLAkgICAgIFBQQ0EyLAlQUENOT05FLAl7UlQsIFJB MCwgUkJ9fSwKLUBAIC00NTcxLDYgKzQ2OTcsMTAgQEAKLSB7Im10c3JpbiIsCVgoMzEsMjQyKSwJ WFJBX01BU0ssICAgIFBQQywJTk9OMzIsICAJe1JTLCBSQn19LAotIHsibXRzcmkiLAlYKDMxLDI0 MiksCVhSQV9NQVNLLCAgICBQT1dFUiwJTk9OMzIsCQl7UlMsIFJCfX0sCi0gCi0reyJtdGZwcnd6 IiwJWCgzMSwyNDMpLAlYWDFSQl9NQVNLfDEsIFBQQ1ZTWDIsCVBQQ05PTkUsCXtGUlQsIFJBfX0s Ci0reyJtdHZyd3oiLAlYKDMxLDI0Myl8MSwJWFgxUkJfTUFTS3wxLCBQUENWU1gyLAlQUENOT05F LAl7VkQsIFJBfX0sCi0reyJtdHZzcnd6IiwJWCgzMSwyNDMpLAlYWDFSQl9NQVNLLCAgIFBQQ1ZT WDIsCVBQQ05PTkUsCXtYVDYsIFJBfX0sCi0rCi0geyJkY2J0c3R0IiwJWFJUKDMxLDI0NiwweDEw KSwgWFJUX01BU0ssICBQT1dFUjcsCVBQQ05PTkUsCXtSQTAsIFJCfX0sCi0geyJkY2J0c3QiLAlY KDMxLDI0NiksCVhfTUFTSywgICAgICBQT1dFUjQsCVBQQ05PTkUsCXtSQTAsIFJCLCBDVH19LAot IHsiZGNidHN0IiwJWCgzMSwyNDYpLAlYX01BU0ssICAgICAgUFBDfFBQQ1ZMRSwgUE9XRVI0LAl7 Q1QsIFJBMCwgUkJ9fSwKLUBAIC00NjA4LDYgKzQ3MzgsOCBAQAotIAotIHsibWZhcGlkaSIsCVgo MzEsMjc1KSwJWF9NQVNLLCAgICAgIEJPT0tFLAlUSVRBTiwgIAl7UlQsIFJBfX0sCi0gCi0reyJs cWFyeCIsCVgoMzEsMjc2KSwJWEVIX01BU0ssICAgIFBPV0VSOCwJUFBDTk9ORSwJe1JUUSwgUkFY LCBSQlgsIEVIfX0sCi0rCi0geyJsc2NieCIsCVhSQygzMSwyNzcsMCksCVhfTUFTSywgICAgICBN NjAxLAlQUENOT05FLAl7UlQsIFJBLCBSQn19LAotIHsibHNjYnguIiwJWFJDKDMxLDI3NywxKSwJ WF9NQVNLLCAgICAgIE02MDEsCVBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0gCi1AQCAtNDYyOSw2 ICs0NzYxLDggQEAKLSB7Imx2ZXhoeCIsCVgoMzEsMjkzKSwJWF9NQVNLLCAgICAgIFBQQ1ZFQzIs CVBQQ05PTkUsCXtWRCwgUkEwLCBSQn19LAotIHsibHZlcHgiLAlYKDMxLDI5NSksCVhfTUFTSywg ICAgICBQUENWRUMyfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBSQTAsIFJCfX0sCi0gCi0reyJtZmJo cmJlIiwJWCgzMSwzMDIpLAlYX01BU0ssICAgICAgUE9XRVI4LAlQUENOT05FLAl7UlQsIEJIUkJF fX0sCi0rCi0geyJ0bGJpZSIsCVgoMzEsMzA2KSwJWFJUTFJBX01BU0ssIFBQQywJVElUQU4sICAJ e1JCLCBMfX0sCi0geyJ0bGJpIiwJWCgzMSwzMDYpLAlYUlRfTUFTSywgICAgUE9XRVIsCVBQQ05P TkUsCXtSQTAsIFJCfX0sCi0gCi1AQCAtNDkzNyw2ICs1MDcxLDggQEAKLSAKLSB7InNsYm10ZSIs CVgoMzEsNDAyKSwJWFJBX01BU0ssICAgIFBQQzY0LAlQUENOT05FLAl7UlMsIFJCfX0sCi0gCi0r eyJwYnQuIiwJWFJDKDMxLDQwNCwxKSwJWF9NQVNLLCAgICAgIFBPV0VSOCwJUFBDTk9ORSwJe1JT LCBSQTAsIFJCfX0sCi0rCi0geyJpY3N3eCIsCVhSQygzMSw0MDYsMCksCVhfTUFTSywgICBQT1dF Ujd8UFBDQTIsCVBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0geyJpY3N3eC4iLAlYUkMoMzEsNDA2 LDEpLAlYX01BU0ssICAgUE9XRVI3fFBQQ0EyLAlQUENOT05FLAl7UlMsIFJBLCBSQn19LAotIAot QEAgLTQ5NTgsNiArNTA5NCw4IEBACi0geyJkaXZ3ZSIsCVhPKDMxLDQyNywwLDApLAlYT19NQVNL LCAgUE9XRVI3fFBQQ0EyLAlQUENOT05FLAl7UlQsIFJBLCBSQn19LAotIHsiZGl2d2UuIiwJWE8o MzEsNDI3LDAsMSksCVhPX01BU0ssICBQT1dFUjd8UFBDQTIsCVBQQ05PTkUsCXtSVCwgUkEsIFJC fX0sCi0gCi0reyJjbHJiaHJiIiwJWCgzMSw0MzApLAkweGZmZmZmZmZmLCAgUE9XRVI4LAlQUENO T05FLAl7MH19LAotKwotIHsic2xiaWUiLAlYKDMxLDQzNCksCVhSVFJBX01BU0ssICBQUEM2NCwJ UFBDTk9ORSwJe1JCfX0sCi0gCi0geyJlY293eCIsCVgoMzEsNDM4KSwJWF9NQVNLLCAgICAgIFBQ QywJVElUQU4sICAJe1JULCBSQTAsIFJCfX0sCi1AQCAtNTI0Niw2ICs1Mzg0LDggQEAKLSB7ImFk ZGNvLiIsCVhPKDMxLDEwLDEsMSksCVhPX01BU0ssICAgICBQUENDT018UFBDVkxFLCBQUENOT05F LAl7UlQsIFJBLCBSQn19LAotIHsiYW8uIiwJCVhPKDMxLDEwLDEsMSksCVhPX01BU0ssICAgICBQ V1JDT00sCVBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0gCi0reyJseHNzcHgiLAlYKDMxLDUyNCks CVhYMV9NQVNLLCAgICBQUENWU1gyLAlQUENOT05FLAl7WFQ2LCBSQTAsIFJCfX0sCi0rCi0geyJj bGNzIiwJWCgzMSw1MzEpLAlYUkJfTUFTSywgICAgTTYwMSwJUFBDTk9ORSwJe1JULCBSQX19LAot IAotIHsibGRicngiLAlYKDMxLDUzMiksCVhfTUFTSywgQ0VMTHxQT1dFUjd8UFBDQTIsIFBQQ05P TkUsCXtSVCwgUkEwLCBSQn19LAotQEAgLTUzNDAsNiArNTQ4MCw4IEBACi0geyJzdHZseCIsCVgo MzEsNjQ3KSwJWF9NQVNLLCAgICAgIENFTEwsCVBQQ05PTkUsCXtWUywgUkEwLCBSQn19LAotIHsi c3RiZmNtdXgiLAlBUFUoMzEsNjQ3LDApLCAJQVBVX01BU0ssICAgIFBQQzQwNSwJUFBDTk9ORSwJ e0ZDUlQsIFJBLCBSQn19LAotIAotK3sic3R4c3NweCIsCVgoMzEsNjUyKSwJWFgxX01BU0ssICAg IFBQQ1ZTWDIsCVBQQ05PTkUsCXtYUzYsIFJBMCwgUkJ9fSwKLSsKLSB7InRiZWdpbi4iLAlYUkMo MzEsNjU0LDEpLCBYUlRMUkFSQl9NQVNLLFBQQ0hUTSwJUFBDTk9ORSwJe0hUTV9SfX0sCi0gCi0g eyJzdWJmZW8iLAlYTygzMSwxMzYsMSwwKSwJWE9fTUFTSywgUFBDQ09NfFBQQ1ZMRSwgUFBDTk9O RSwJe1JULCBSQSwgUkJ9fSwKLUBAIC01NTI1LDYgKzU2NjcsNyBAQAotIHsiZGl2by4iLAlYTygz MSwzMzEsMSwxKSwJWE9fTUFTSywgICAgIE02MDEsCVBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0g Ci0geyJseHZkMngiLAlYKDMxLDg0NCksCVhYMV9NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtY VDYsIFJBMCwgUkJ9fSwKLSt7Imx4dngiLAlYKDMxLDg0NCksCVhYMV9NQVNLLCAgICBQUENWU1gs CVBQQ05PTkUsCXtYVDYsIFJBMCwgUkJ9fSwKLSAKLSB7InRhYm9ydHdjaS4iLAlYUkMoMzEsODQ2 LDEpLAlYX01BU0ssICAgICAgUFBDSFRNLAlQUENOT05FLAl7VE8sIFJBLCBIVE1fU0l9fSwKLSAK LUBAIC01NjM2LDYgKzU3NzksNyBAQAotIHsiZGl2d3VvLiIsCVhPKDMxLDQ1OSwxLDEpLAlYT19N QVNLLCAgICAgUFBDfFBQQ1ZMRSwgUFBDTk9ORSwJe1JULCBSQSwgUkJ9fSwKLSAKLSB7InN0eHZk MngiLAlYKDMxLDk3MiksCVhYMV9NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtYUzYsIFJBMCwg UkJ9fSwKLSt7InN0eHZ4IiwJWCgzMSw5NzIpLAlYWDFfTUFTSywgICAgUFBDVlNYLAlQUENOT05F LAl7WFM2LCBSQTAsIFJCfX0sCi0gCi0geyJ0bGJsZCIsCVgoMzEsOTc4KSwJWFJUUkFfTUFTSywg IFBQQywgUFBDNDAzfEJPT0tFfFBQQ0EyfFBQQzQ3Niwge1JCfX0sCi0geyJ0bGJ3ZWhpIiwJWFRM QigzMSw5NzgsMCksCVhUTEJfTUFTSywgICBQUEM0MDMsCVBQQ05PTkUsCXtSVCwgUkF9fSwKLUBA IC01ODY4LDE0ICs2MDEyLDI1IEBACi0geyJmY2ZpZHVzIiwJWFJDKDU5LDk3NCwwKSwJWFJBX01B U0ssIFBPV0VSN3xQUENBMiwJUFBDTk9ORSwJe0ZSVCwgRlJCfX0sCi0geyJmY2ZpZHVzLiIsCVhS Qyg1OSw5NzQsMSksCVhSQV9NQVNLLCBQT1dFUjd8UFBDQTIsCVBQQ05PTkUsCXtGUlQsIEZSQn19 LAotIAotK3sieHNhZGRzcCIsCVhYMyg2MCwwKSwJWFgzX01BU0ssICAgIFBQQ1ZTWDIsCVBQQ05P TkUsCXtYVDYsIFhBNiwgWEI2fX0sCi0reyJ4c21hZGRhc3AiLAlYWDMoNjAsMSksCVhYM19NQVNL LCAgICBQUENWU1gyLAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNn19LAotIHsieHhzbGR3aSIsCVhY Myg2MCwyKSwJWFgzU0hXX01BU0ssIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEE2LCBYQjYsIFNI V319LAotIHsieHhzZWwiLAlYWDQoNjAsMyksCVhYNF9NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUs CXtYVDYsIFhBNiwgWEI2LCBYQzZ9fSwKLSt7Inhzc3Vic3AiLAlYWDMoNjAsOCksCVhYM19NQVNL LCAgICBQUENWU1gyLAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNn19LAotK3sieHNtYWRkbXNwIiwJ WFgzKDYwLDkpLAlYWDNfTUFTSywgICAgUFBDVlNYMiwJUFBDTk9ORSwJe1hUNiwgWEE2LCBYQjZ9 fSwKLSB7Inh4c3BsdGQiLAlYWDMoNjAsMTApLAlYWDNETV9NQVNLLCAgUFBDVlNYLAlQUENOT05F LAl7WFQ2LCBYQTYsIFhCNlMsIERNRVh9fSwKLSB7Inh4bXJnaGQiLAlYWDMoNjAsMTApLAlYWDNf TUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNn19LAotIHsieHhzd2FwZCIs CVhYMyg2MCwxMCl8KDI8PDgpLCBYWDNfTUFTSywgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQTYs IFhCNlN9fSwKLSB7Inh4bXJnbGQiLAlYWDMoNjAsMTApfCgzPDw4KSwgWFgzX01BU0ssIFBQQ1ZT WCwJUFBDTk9ORSwJe1hUNiwgWEE2LCBYQjZ9fSwKLSB7Inh4cGVybWRpIiwJWFgzKDYwLDEwKSwJ WFgzRE1fTUFTSywgIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEE2LCBYQjYsIERNfX0sCi0reyJ4 c3JzcXJ0ZXNwIiwJWFgyKDYwLDEwKSwJWFgyX01BU0ssICAgIFBQQ1ZTWDIsCVBQQ05PTkUsCXtY VDYsIFhCNn19LAotK3sieHNzcXJ0c3AiLAlYWDIoNjAsMTEpLAlYWDJfTUFTSywgICAgUFBDVlNY MiwJUFBDTk9ORSwJe1hUNiwgWEI2fX0sCi0reyJ4c211bHNwIiwJWFgzKDYwLDE2KSwJWFgzX01B U0ssICAgIFBQQ1ZTWDIsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2fX0sCi0reyJ4c21zdWJhc3Ai LAlYWDMoNjAsMTcpLAlYWDNfTUFTSywgICAgUFBDVlNYMiwJUFBDTk9ORSwJe1hUNiwgWEE2LCBY QjZ9fSwKLSB7Inh4bXJnaHciLAlYWDMoNjAsMTgpLAlYWDNfTUFTSywgICAgUFBDVlNYLAlQUENO T05FLAl7WFQ2LCBYQTYsIFhCNn19LAotK3sieHNkaXZzcCIsCVhYMyg2MCwyNCksCVhYM19NQVNL LCAgICBQUENWU1gyLAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNn19LAotK3sieHNtc3VibXNwIiwJ WFgzKDYwLDI1KSwJWFgzX01BU0ssICAgIFBQQ1ZTWDIsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2 fX0sCi0reyJ4c3Jlc3AiLAlYWDIoNjAsMjYpLAlYWDJfTUFTSywgICAgUFBDVlNYMiwJUFBDTk9O RSwJe1hUNiwgWEI2fX0sCi0geyJ4c2FkZGRwIiwJWFgzKDYwLDMyKSwJWFgzX01BU0ssICAgIFBQ Q1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEE2LCBYQjZ9fSwKLSB7InhzbWFkZGFkcCIsCVhYMyg2MCwz MyksCVhYM19NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2fX0sCi0geyJ4 c2NtcHVkcCIsCVhYMyg2MCwzNSksCVhYM0JGX01BU0ssICBQUENWU1gsCVBQQ05PTkUsCXtCRiwg WEE2LCBYQjZ9fSwKLUBAIC01OTI5LDE0ICs2MDg0LDE4IEBACi0geyJ4dm1zdWJtZHAiLAlYWDMo NjAsMTIxKSwJWFgzX01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEE2LCBYQjZ9fSwK LSB7InhzcmRwaW0iLAlYWDIoNjAsMTIxKSwJWFgyX01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9ORSwJ e1hUNiwgWEI2fX0sCi0geyJ4dnRkaXZkcCIsCVhYMyg2MCwxMjUpLAlYWDNCRl9NQVNLLCAgUFBD VlNYLAlQUENOT05FLAl7QkYsIFhBNiwgWEI2fX0sCi0reyJ4c25tYWRkYXNwIiwJWFgzKDYwLDEy OSksCVhYM19NQVNLLCAgICBQUENWU1gyLAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNn19LAotIHsi eHhsYW5kIiwJWFgzKDYwLDEzMCksCVhYM19NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtYVDYs IFhBNiwgWEI2fX0sCi0geyJ4dmN2c3B1eHdzIiwJWFgyKDYwLDEzNiksCVhYMl9NQVNLLCAgICBQ UENWU1gsCVBQQ05PTkUsCXtYVDYsIFhCNn19LAotK3sieHNubWFkZG1zcCIsCVhYMyg2MCwxMzcp LAlYWDNfTUFTSywgICAgUFBDVlNYMiwJUFBDTk9ORSwJe1hUNiwgWEE2LCBYQjZ9fSwKLSB7Inh2 cnNwaSIsCVhYMig2MCwxMzcpLAlYWDJfTUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBY QjZ9fSwKLSB7Inh4bGFuZGMiLAlYWDMoNjAsMTM4KSwJWFgzX01BU0ssICAgIFBQQ1ZTWCwJUFBD Tk9ORSwJe1hUNiwgWEE2LCBYQjZ9fSwKLSB7Inh2cnNxcnRlc3AiLAlYWDIoNjAsMTM4KSwJWFgy X01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEI2fX0sCi0geyJ4dnNxcnRzcCIsCVhY Mig2MCwxMzkpLAlYWDJfTUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQjZ9fSwKLSt7 Inhzbm1zdWJhc3AiLAlYWDMoNjAsMTQ1KSwJWFgzX01BU0ssICAgIFBQQ1ZTWDIsCVBQQ05PTkUs CXtYVDYsIFhBNiwgWEI2fX0sCi0geyJ4eGxvciIsCVhYMyg2MCwxNDYpLAlYWDNfTUFTSywgICAg UFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNn19LAotIHsieHZjdnNwc3h3cyIsCVhYMig2 MCwxNTIpLAlYWDJfTUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQjZ9fSwKLSt7Inhz bm1zdWJtc3AiLAlYWDMoNjAsMTUzKSwJWFgzX01BU0ssICAgIFBQQ1ZTWDIsCVBQQ05PTkUsCXtY VDYsIFhBNiwgWEI2fX0sCi0geyJ4dnJzcGl6IiwJWFgyKDYwLDE1MyksCVhYMl9NQVNLLCAgICBQ UENWU1gsCVBQQ05PTkUsCXtYVDYsIFhCNn19LAotIHsieHhseG9yIiwJWFgzKDYwLDE1NCksCVhY M19NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2fX0sCi0geyJ4dnJlc3Ai LAlYWDIoNjAsMTU0KSwJWFgyX01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEI2fX0s Ci1AQCAtNTk0OSwxMiArNjEwOCwxNSBAQAotIHsieHNubWFkZG1kcCIsCVhYMyg2MCwxNjkpLAlY WDNfTUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNn19LAotIHsieHZyc3Bp cCIsCVhYMig2MCwxNjkpLAlYWDJfTUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQjZ9 fSwKLSB7Inh2dHNxcnRzcCIsCVhYMig2MCwxNzApLAlYWDJCRl9NQVNLLCAgUFBDVlNYLAlQUENO T05FLAl7QkYsIFhCNn19LAotK3sieHhsb3JjIiwJWFgzKDYwLDE3MCksCVhYM19NQVNLLCAgICBQ UENWU1gyLAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNn19LAotIHsieHZyc3BpYyIsCVhYMig2MCwx NzEpLAlYWDJfTUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQjZ9fSwKLSB7InhzY3Bz Z25kcCIsCVhYMyg2MCwxNzYpLAlYWDNfTUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBY QTYsIFhCNn19LAotIHsieHNubXN1YmFkcCIsCVhYMyg2MCwxNzcpLAlYWDNfTUFTSywgICAgUFBD VlNYLAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNn19LAotK3sieHhsbmFuZCIsCVhYMyg2MCwxNzgp LAlYWDNfTUFTSywgICAgUFBDVlNYMiwJUFBDTk9ORSwJe1hUNiwgWEE2LCBYQjZ9fSwKLSB7Inh2 Y3ZzeHdzcCIsCVhYMig2MCwxODQpLAlYWDJfTUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2 LCBYQjZ9fSwKLSB7Inhzbm1zdWJtZHAiLAlYWDMoNjAsMTg1KSwJWFgzX01BU0ssICAgIFBQQ1ZT WCwJUFBDTk9ORSwJe1hUNiwgWEE2LCBYQjZ9fSwKLSB7Inh2cnNwaW0iLAlYWDIoNjAsMTg1KSwJ WFgyX01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEI2fX0sCi0reyJ4eGxlcXYiLAlY WDMoNjAsMTg2KSwJWFgzX01BU0ssICAgIFBQQ1ZTWDIsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2 fX0sCi0geyJ4dm1heHNwIiwJWFgzKDYwLDE5MiksCVhYM19NQVNLLCAgICBQUENWU1gsCVBQQ05P TkUsCXtYVDYsIFhBNiwgWEI2fX0sCi0geyJ4dm5tYWRkYXNwIiwJWFgzKDYwLDE5MyksCVhYM19N QVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2fX0sCi0geyJ4dm1pbnNwIiwJ WFgzKDYwLDIwMCksCVhYM19NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2 fX0sCi1AQCAtNTk4NSw4ICs2MTQ3LDEzIEBACi0geyJ4dm5tc3VibWRwIiwJWFgzKDYwLDI0OSks CVhYM19NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2fX0sCi0geyJ4dnJk cGltIiwJWFgyKDYwLDI0OSksCVhYMl9NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtYVDYsIFhC Nn19LAotIHsieHNjdmRwc3AiLAlYWDIoNjAsMjY1KSwJWFgyX01BU0ssICAgIFBQQ1ZTWCwJUFBD Tk9ORSwJe1hUNiwgWEI2fX0sCi0reyJ4c2N2ZHBzcG4iLAlYWDIoNjAsMjY3KSwJWFgyX01BU0ss ICAgIFBQQ1ZTWDIsCVBQQ05PTkUsCXtYVDYsIFhCNn19LAotK3sieHNyc3AiLAlYWDIoNjAsMjgx KSwJWFgyX01BU0ssICAgIFBQQ1ZTWDIsCVBQQ05PTkUsCXtYVDYsIFhCNn19LAotK3sieHNjdnV4 ZHNwIiwJWFgyKDYwLDI5NiksCVhYMl9NQVNLLCAgICBQUENWU1gyLAlQUENOT05FLAl7WFQ2LCBY QjZ9fSwKLSt7InhzY3ZzeGRzcCIsCVhYMig2MCwzMTIpLAlYWDJfTUFTSywgICAgUFBDVlNYMiwJ UFBDTk9ORSwJe1hUNiwgWEI2fX0sCi0geyJ4c2N2ZHB1eGRzIiwJWFgyKDYwLDMyOCksCVhYMl9N QVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtYVDYsIFhCNn19LAotIHsieHNjdnNwZHAiLAlYWDIo NjAsMzI5KSwJWFgyX01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEI2fX0sCi0reyJ4 c2N2c3BkcG4iLAlYWDIoNjAsMzMxKSwJWFgyX01BU0ssICAgIFBQQ1ZTWDIsCVBQQ05PTkUsCXtY VDYsIFhCNn19LAotIHsieHNjdmRwc3hkcyIsCVhYMig2MCwzNDQpLAlYWDJfTUFTSywgICAgUFBD VlNYLAlQUENOT05FLAl7WFQ2LCBYQjZ9fSwKLSB7InhzYWJzZHAiLAlYWDIoNjAsMzQ1KSwJWFgy X01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEI2fX0sCi0geyJ4c2N2dXhkZHAiLAlY WDIoNjAsMzYwKSwJWFgyX01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEI2fX0sCi1A QCAtNjIyMiw2ICs2Mzg5LDggQEAKLSB7ImRlbmJjZHEiLAlYUkMoNjMsODM0LDApLAlYX01BU0ss ICAgICAgUE9XRVI2LAlQUENOT05FLAl7UywgRlJUcCwgRlJCcH19LAotIHsiZGVuYmNkcS4iLAlY UkMoNjMsODM0LDEpLAlYX01BU0ssICAgICAgUE9XRVI2LAlQUENOT05FLAl7UywgRlJUcCwgRlJC cH19LAotIAotK3siZm1yZ293IiwJWCg2Myw4MzgpLAlYX01BU0ssICAgICAgUFBDVlNYMiwJUFBD Tk9ORSwJe0ZSVCwgRlJBLCBGUkJ9fSwKLSsKLSB7ImZjZmlkIiwJWFJDKDYzLDg0NiwwKSwJWFJB X01BU0ssICAgIFBQQzY0LAlQUENOT05FLAl7RlJULCBGUkJ9fSwKLSB7ImZjZmlkIiwJWFJDKDYz LDg0NiwwKSwJWFJBX01BU0ssICAgIFBQQzQ3NiwJUFBDTk9ORSwJe0ZSVCwgRlJCfX0sCi0geyJm Y2ZpZC4iLAlYUkMoNjMsODQ2LDEpLAlYUkFfTUFTSywgICAgUFBDNjQsCVBQQ05PTkUsCXtGUlQs IEZSQn19LAotQEAgLTYyMzYsNiArNjQwNSw4IEBACi0geyJmY3RpZHV6IiwJWFJDKDYzLDk0Myww KSwJWFJBX01BU0ssIFBPV0VSN3xQUENBMiwJUFBDTk9ORSwJe0ZSVCwgRlJCfX0sCi0geyJmY3Rp ZHV6LiIsCVhSQyg2Myw5NDMsMSksCVhSQV9NQVNLLCBQT1dFUjd8UFBDQTIsCVBQQ05PTkUsCXtG UlQsIEZSQn19LAotIAotK3siZm1yZ2V3IiwJWCg2Myw5NjYpLAlYX01BU0ssICAgICAgUFBDVlNY MiwJUFBDTk9ORSwJe0ZSVCwgRlJBLCBGUkJ9fSwKLSsKLSB7ImZjZmlkdSIsCVhSQyg2Myw5NzQs MCksCVhSQV9NQVNLLCBQT1dFUjd8UFBDQTIsCVBQQ05PTkUsCXtGUlQsIEZSQn19LAotIHsiZmNm aWR1LiIsCVhSQyg2Myw5NzQsMSksCVhSQV9NQVNLLCBQT1dFUjd8UFBDQTIsCVBQQ05PTkUsCXtG UlQsIEZSQn19LAotIH07CgpkaWZmIC0tZ2l0IGEvZ2RiLXBvd2VyOC0yb2YyLnBhdGNoIGIvZ2Ri LXBvd2VyOC0yb2YyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjE2Zjlm Li4wMDAwMDAwCi0tLSBhL2dkYi1wb3dlcjgtMm9mMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDYwICswLDAgQEAKLVtQQVRDSF0gRW5hYmxlIGh3IHdhdGNocG9pbnQgd2l0aCBsb25nZXIgcmFu Z2VzIHVzaW5nIERBV1Igb24gUG93ZXIKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDEzLTA3L21zZzAwMDg1Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt Y3ZzLzIwMTMtMDcvbXNnMDAwOTcuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8w Ny8yMiAxMTo0MjozMAkxLjE1ODEyCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNy8yMiAx MzoxNzo1MQkxLjE1ODEzCi0jIyAtMSwzICsxLDkgQEAKLSsyMDEzLTA3LTIyICBFZGp1bmlvciBC YXJib3NhIE1hY2hhZG8gIDxlbWFjaGFkb0BsaW51eC52bmV0LmlibS5jb20+Ci0rCi0rCSogcHBj LWxpbnV4LW5hdC5jIChQUENfREVCVUdfRkVBVFVSRV9EQVRBX0JQX0RBV1IpOiBOZXcgZGVmaW5l LgotKwkocHBjX2xpbnV4X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCk6IEFkZCBjaGVja2lu ZyB0byB1c2UgdGhlIG5ldwotKwlEQVdSIGludGVyZmFjZSBmb3IgbG9uZ2VyIHJhbmdlcyBoYXJk d2FyZSB3YXRjaHBvaW50ICh1cCB0byA1MTIgYnl0ZXMpLgotKwotIDIwMTMtMDctMjIgIFBoaWwg TXVsZG9vbiAgPHBtdWxkb29uQHJlZGhhdC5jb20+Ci0gCi0gCSogdG9wLmMgKHByaW50X2dkYl92 ZXJzaW9uKTogQWRkIGhlbHAsIGFwcm9wb3MgZGVzY3JpcHRpb24gYW5kCi0tLS0gZ2RiLTcuNi9n ZGIvcHBjLWxpbnV4LW5hdC5jLm9yaWcJMjAxMy0wNy0yNCAxNzozOTozMC40MzQ1NDkyNzkgKzAy MDAKLSsrKyBnZGItNy42L2dkYi9wcGMtbGludXgtbmF0LmMJMjAxMy0wNy0yNCAxNzo0MTozMS4z Mzc3MDY1MDIgKzAyMDAKLUBAIC0xNzgsNyArMTc4LDExIEBAIHN0cnVjdCBwcGNfaHdfYnJlYWtw b2ludAotICAgICAgICAgKDE8PCgobikrUFBDX0JSRUFLUE9JTlRfQ09ORElUSU9OX0JFX1NISUZU KSkKLSAjZW5kaWYgLyogUFBDX1BUUkFDRV9HRVRIV0RCR0lORk8gKi8KLSAKLS0KLSsvKiBGZWF0 dXJlIGRlZmluZWQgb24gTGludXgga2VybmVsIHYzLjk6IERBV1IgaW50ZXJmYWNlLCB0aGF0IGVu YWJsZXMgd2lkZXIKLSsgICB3YXRjaHBvaW50ICh1cCB0byA1MTIgYnl0ZXMpLiAgKi8KLSsjaWZu ZGVmIFBQQ19ERUJVR19GRUFUVVJFX0RBVEFfQlBfREFXUgotKyNkZWZpbmUgUFBDX0RFQlVHX0ZF QVRVUkVfREFUQV9CUF9EQVdSCTB4MTAKLSsjZW5kaWYgLyogUFBDX0RFQlVHX0ZFQVRVUkVfREFU QV9CUF9EQVdSICovCi0gCi0gLyogU2ltaWxhcmx5IGZvciB0aGUgZ2VuZXJhbC1wdXJwb3NlIChn cDAgLS0gZ3AzMSkKLSAgICBhbmQgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzIChmcDAgLS0gZnAz MSkuICAqLwotQEAgLTE1MDMsNiArMTUwNyw3IEBAIHBwY19saW51eF9yZWdpb25fb2tfZm9yX2h3 X3dhdGNocG9pbnQgKEMKLSAgICAgIHRvIGRldGVybWluZSB0aGUgaGFyZGNvZGVkIHdhdGNoYWJs ZSByZWdpb24gZm9yIHdhdGNocG9pbnRzLiAgKi8KLSAgIGlmIChoYXZlX3B0cmFjZV9ib29rZV9p bnRlcmZhY2UgKCkpCi0gICAgIHsKLSsgICAgICBpbnQgcmVnaW9uX3NpemU7Ci0gICAgICAgLyog RW1iZWRkZWQgREFDLWJhc2VkIHByb2Nlc3NvcnMsIGxpa2UgdGhlIFBvd2VyUEMgNDQwIGhhdmUg cmFuZ2VkCi0gCSB3YXRjaHBvaW50cyBhbmQgY2FuIHdhdGNoIGFueSBhY2Nlc3Mgd2l0aGluIGFu IGFyYml0cmFyeSBtZW1vcnkKLSAJIHJlZ2lvbi4gVGhpcyBpcyB1c2VmdWwgdG8gd2F0Y2ggYXJy YXlzIGFuZCBzdHJ1Y3RzLCBmb3IgaW5zdGFuY2UuICBJdAotQEAgLTE1MTEsMTEgKzE1MTYsMTcg QEAgcHBjX2xpbnV4X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAoQwotIAkgICYmIGJvb2tl X2RlYnVnX2luZm8uZmVhdHVyZXMgJiBQUENfREVCVUdfRkVBVFVSRV9EQVRBX0JQX1JBTkdFCi0g CSAgJiYgcHBjX2xpbnV4X2dldF9od2NhcCAoKSAmIFBQQ19GRUFUVVJFX0JPT0tFKQotIAlyZXR1 cm4gMjsKLSsgICAgICAvKiBDaGVjayBpZiB0aGUgcHJvY2Vzc29yIHByb3ZpZGVzIERBV1IgaW50 ZXJmYWNlLiAgKi8KLSsgICAgICBpZiAoYm9va2VfZGVidWdfaW5mby5mZWF0dXJlcyAmIFBQQ19E RUJVR19GRUFUVVJFX0RBVEFfQlBfREFXUikKLSsJLyogREFXUiBpbnRlcmZhY2UgYWxsb3dzIHRv IHdhdGNoIHVwIHRvIDUxMiBieXRlIHdpZGUgcmFuZ2VzIHdoaWNoCi0rCSAgIGNhbid0IGNyb3Nz IGEgNTEyIGJ5dGUgYm91bmRhcnkuICAqLwotKwlyZWdpb25fc2l6ZSA9IDUxMjsKLSsgICAgICBl bHNlCi0rCXJlZ2lvbl9zaXplID0gYm9va2VfZGVidWdfaW5mby5kYXRhX2JwX2FsaWdubWVudDsK LSAgICAgICAvKiBTZXJ2ZXIgcHJvY2Vzc29ycyBwcm92aWRlIG9uZSBoYXJkd2FyZSB3YXRjaHBv aW50IGFuZCBhZGRyK2xlbiBzaG91bGQKLSAgICAgICAgICBmYWxsIGluIHRoZSB3YXRjaGFibGUg cmVnaW9uIHByb3ZpZGVkIGJ5IHRoZSBwdHJhY2UgaW50ZXJmYWNlLiAgKi8KLS0gICAgICBpZiAo Ym9va2VfZGVidWdfaW5mby5kYXRhX2JwX2FsaWdubWVudAotLQkgICYmIChhZGRyICsgbGVuID4g KGFkZHIgJiB+KGJvb2tlX2RlYnVnX2luZm8uZGF0YV9icF9hbGlnbm1lbnQgLSAxKSkKLS0JICAg ICAgKyBib29rZV9kZWJ1Z19pbmZvLmRhdGFfYnBfYWxpZ25tZW50KSkKLSsgICAgICBpZiAocmVn aW9uX3NpemUKLSsJICAmJiAoYWRkciArIGxlbiA+IChhZGRyICYgfihyZWdpb25fc2l6ZSAtIDEp KSArIHJlZ2lvbl9zaXplKSkKLSAJcmV0dXJuIDA7Ci0gICAgIH0KLSAgIC8qIGFkZHIrbGVuIG11 c3QgZmFsbCBpbiB0aGUgOCBieXRlIHdhdGNoYWJsZSByZWdpb24gZm9yIERBQlItYmFzZWQKCmRp ZmYgLS1naXQgYS9nZGItcHN5bXRhYi1leHBhbmQucGF0Y2ggYi9nZGItcHN5bXRhYi1leHBhbmQu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OTJlNDguLjAwMDAwMDAKLS0t IGEvZ2RiLXBzeW10YWItZXhwYW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBA QAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTMtMDUvbXNnMDAzMDAu aHRtbAotU3ViamVjdDogW1JGQV0gRml4IGZpbGUgbmFtZSBtYXRjaGluZyBpbiBleHBhbmRfc3lt dGFic19tYXRjaGluZ192aWFfcGFydGlhbAotCi1bYmxlY2gsIGFwb2xvZ2llcyBmb3IgdGhlIHJl c2VuZCwgdHlwbyBpbiBhZGRyZXNzXQotCi1IaS4KLUkgbm90aWNlZCB0aGlzIHdoaWxlIHBsYXlp bmcgd2l0aCBteSBuZXcgIm10IGV4cGFuZC1zeW10YWJzIiBjb21tYW5kCi1hbmQgd2F0Y2hpbmcg Im10IHNldCBwZXIgb24iIG91dHB1dC4KLQotVGhlIHRlc3QgaGVyZSBpcyB3cm9uZy4KLXJlZjog aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTMtMDIvbXNnMDAwNjMuaHRt bAotCi1UaGUgdGVzdAotICAoYmFzZW5hbWVzX21heV9kaWZmZXIKLSAgIHx8ICgqZmlsZV9tYXRj aGVyKSAobGJhc2VuYW1lIChwcy0+ZmlsZW5hbWUpLCBkYXRhLCAxKSkKLWZhaWxzIGFuZCB0aGUg Y29kZSBmYWxscyB0aHJvdWdoIGFzc3VtaW5nIHRoZSBmaWxlIG5hbWUgbWF0Y2hlZC4KLQotUmVn cmVzc2lvbiB0ZXN0ZWQgb24gYW1kNjQtbGludXguCi0KLU9rIHRvIGNoZWNrIGluPwotT2sgZm9y IDcuNiBicmFuY2ggdG9vPwotCi0yMDEzLTA1LTA4ICBEb3VnIEV2YW5zICA8ZGplQGdvb2dsZS5j b20+Ci0KLQkqIHBzeW10YWIuYyAoZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmdfdmlhX3BhcnRpYWwp OiBGaXggZmlsZSBuYW1lCi0JbWF0Y2hpbmcgdGVzdC4KLQotSW5kZXg6IHBzeW10YWIuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvcHN5bXRhYi5jLHYKLXJldHJpZXZp bmcgcmV2aXNpb24gMS43NAotZGlmZiAtdSAtcCAtcjEuNzQgcHN5bXRhYi5jCi0tLS0gLi9nZGIv cHN5bXRhYi5jCTYgTWF5IDIwMTMgMTk6MTU6MTcgLTAwMDAJMS43NAotKysrIC4vZ2RiL3BzeW10 YWIuYwk4IE1heSAyMDEzIDE5OjE4OjUxIC0wMDAwCi1AQCAtMTQwMCwxNSArMTQwNSwyMSBAQCBl eHBhbmRfc3ltdGFic19tYXRjaGluZ192aWFfcGFydGlhbAotIAotICAgICAgIGlmIChmaWxlX21h dGNoZXIpCi0gCXsKLSsJICBpbnQgbWF0Y2g7Ci0rCi0gCSAgaWYgKHBzLT5hbm9ueW1vdXMpCi0g CSAgICBjb250aW51ZTsKLSAKLS0JICAvKiBCZWZvcmUgd2UgaW52b2tlIHJlYWxwYXRoLCB3aGlj aCBjYW4gZ2V0IGV4cGVuc2l2ZSB3aGVuIG1hbnkKLS0JICAgICBmaWxlcyBhcmUgaW52b2x2ZWQs IGRvIGEgcXVpY2sgY29tcGFyaXNvbiBvZiB0aGUgYmFzZW5hbWVzLiAgKi8KLS0JICBpZiAoISgq ZmlsZV9tYXRjaGVyKSAocHMtPmZpbGVuYW1lLCBkYXRhLCAwKQotLQkgICAgICAmJiAoYmFzZW5h bWVzX21heV9kaWZmZXIKLSsJICBtYXRjaCA9ICgqZmlsZV9tYXRjaGVyKSAocHMtPmZpbGVuYW1l LCBkYXRhLCAwKTsKLSsJICBpZiAoISBtYXRjaCkKLSsJICAgIHsKLSsJICAgICAgLyogQmVmb3Jl IHdlIGludm9rZSByZWFscGF0aCwgd2hpY2ggY2FuIGdldCBleHBlbnNpdmUgd2hlbiBtYW55Ci0r CQkgZmlsZXMgYXJlIGludm9sdmVkLCBkbyBhIHF1aWNrIGNvbXBhcmlzb24gb2YgdGhlIGJhc2Vu YW1lcy4gICovCi0rCSAgICAgIGlmIChiYXNlbmFtZXNfbWF5X2RpZmZlcgotIAkJICB8fCAoKmZp bGVfbWF0Y2hlcikgKGxiYXNlbmFtZSAocHMtPmZpbGVuYW1lKSwgZGF0YSwgMSkpCi0tCSAgICAg ICYmICEoKmZpbGVfbWF0Y2hlcikgKHBzeW10YWJfdG9fZnVsbG5hbWUgKHBzKSwgZGF0YSwgMCkp Ci0rCQltYXRjaCA9ICgqZmlsZV9tYXRjaGVyKSAocHN5bXRhYl90b19mdWxsbmFtZSAocHMpLCBk YXRhLCAwKTsKLSsJICAgIH0KLSsJICBpZiAoISBtYXRjaCkKLSAJICAgIGNvbnRpbnVlOwotIAl9 Ci0gCi0KCmRpZmYgLS1naXQgYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjBvZjI1LnBhdGNoIGIv Z2RiLXJoYno3OTU0MjQtYml0cG9zLTIwb2YyNS5wYXRjaAppbmRleCBkZDE1M2I0Li41ZmM2MzY5 IDEwMDY0NAotLS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjBvZjI1LnBhdGNoCisrKyBiL2dk Yi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMG9mMjUucGF0Y2gKQEAgLTQ2MywxMCArNDYzLDEwIEBAIENv bnRlbnQtVHlwZTogdGV4dC94LXBhdGNoCiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0 CiBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1iaXRwb3MtbWFpbi5w YXRjaAogCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLWxhbmcuYworSW5kZXg6 IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hZGEtbGFuZy5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9hZGEtbGFuZy5jCTIwMTMtMDItMTUgMjI6MzE6 MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLWxhbmcu YwkyMDEzLTAyLTE1IDIyOjQwOjE4LjUxMzYyMjAzNSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzLm9yaWcvZ2RiL2FkYS1sYW5nLmMJMjAxMy0wOC0wMiAxNjozODoyNi40MDgyOTIx NjAgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYWRhLWxhbmcuYwkyMDEz LTA4LTAyIDE2OjM5OjQ4LjA1MjQwODI1NiArMDIwMAogQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGlj IHN0cnVjdCB0eXBlICpkZXNjX2JvdW5kc190eXBlIChzdAogIAogIHN0YXRpYyBzdHJ1Y3QgdmFs dWUgKmRlc2NfYm91bmRzIChzdHJ1Y3QgdmFsdWUgKik7CkBAIC02NTMsNyArNjUzLDcgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmMKICAKICAgICAgICBzZXRfdmFs dWVfY29tcG9uZW50X2xvY2F0aW9uICh2LCBvYmopOwogICAgICAgIHNldF92YWx1ZV9iaXRwb3Mg KHYsIGJpdF9vZmZzZXQgKyB2YWx1ZV9iaXRwb3MgKG9iaikpOwotQEAgLTI0MjcsNyArMjQzMCw3 IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfcGFja2VkX3ZhbCAoc3RydWN0IHYKK0BAIC0yNDI2LDcg KzI0MjksNyBAQCBhZGFfdmFsdWVfcHJpbWl0aXZlX3BhY2tlZF92YWwgKHN0cnVjdCB2CiAgICAg bm90IG92ZXJsYXAuICAqLwogIHN0YXRpYyB2b2lkCiAgbW92ZV9iaXRzIChnZGJfYnl0ZSAqdGFy Z2V0LCBpbnQgdGFyZ19vZmZzZXQsIGNvbnN0IGdkYl9ieXRlICpzb3VyY2UsCkBAIC02NjIsMTYg KzY2MiwxNiBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLWxhbmcuYwogIHsK ICAgIHVuc2lnbmVkIGludCBhY2N1bSwgbWFzazsKICAgIGludCBhY2N1bV9iaXRzLCBjaHVua19z aXplOwotQEAgLTI1MTcsNyArMjUyMCw3IEBAIGFkYV92YWx1ZV9hc3NpZ24gKHN0cnVjdCB2YWx1 ZSAqdG92YWwsIHMKK0BAIC0yNTE2LDcgKzI1MTksNyBAQCBhZGFfdmFsdWVfYXNzaWduIChzdHJ1 Y3QgdmFsdWUgKnRvdmFsLCBzCiAgICAgIHsKICAgICAgICBpbnQgbGVuID0gKHZhbHVlX2JpdHBv cyAodG92YWwpCiAgCQkgKyBiaXRzICsgSE9TVF9DSEFSX0JJVCAtIDEpIC8gSE9TVF9DSEFSX0JJ VDsKIC0gICAgICBpbnQgZnJvbV9zaXplOwogKyAgICAgIExPTkdFU1QgZnJvbV9zaXplOwotICAg ICAgIGNoYXIgKmJ1ZmZlciA9IChjaGFyICopIGFsbG9jYSAobGVuKTsKKyAgICAgICBnZGJfYnl0 ZSAqYnVmZmVyID0gYWxsb2NhIChsZW4pOwogICAgICAgIHN0cnVjdCB2YWx1ZSAqdmFsOwogICAg ICAgIENPUkVfQUREUiB0b19hZGRyID0gdmFsdWVfYWRkcmVzcyAodG92YWwpOwotQEAgLTI1NjIs NyArMjU2NSw3IEBAIHZhbHVlX2Fzc2lnbl90b19jb21wb25lbnQgKHN0cnVjdCB2YWx1ZQorQEAg LTI1NjEsNyArMjU2NCw3IEBAIHZhbHVlX2Fzc2lnbl90b19jb21wb25lbnQgKHN0cnVjdCB2YWx1 ZQogICAgICAoTE9OR0VTVCkgICh2YWx1ZV9hZGRyZXNzIChjb21wb25lbnQpIC0gdmFsdWVfYWRk cmVzcyAoY29udGFpbmVyKSk7CiAgICBpbnQgYml0X29mZnNldF9pbl9jb250YWluZXIgPSAKICAg ICAgdmFsdWVfYml0cG9zIChjb21wb25lbnQpIC0gdmFsdWVfYml0cG9zIChjb250YWluZXIpOwpA QCAtNjgwLDcgKzY4MCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hZGEtbGFu Zy5jCiAgICAKICAgIHZhbCA9IHZhbHVlX2Nhc3QgKHZhbHVlX3R5cGUgKGNvbXBvbmVudCksIHZh bCk7CiAgCi1AQCAtNDA4NCw3ICs0MDg3LDcgQEAgZW5zdXJlX2x2YWwgKHN0cnVjdCB2YWx1ZSAq dmFsKQorQEAgLTQwODIsNyArNDA4NSw3IEBAIGVuc3VyZV9sdmFsIChzdHJ1Y3QgdmFsdWUgKnZh bCkKICAgIGlmIChWQUxVRV9MVkFMICh2YWwpID09IG5vdF9sdmFsCiAgICAgICAgfHwgVkFMVUVf TFZBTCAodmFsKSA9PSBsdmFsX2ludGVybmFsdmFyKQogICAgICB7CkBAIC02ODksNyArNjg5LDcg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmMKICAgICAgICBjb25z dCBDT1JFX0FERFIgYWRkciA9CiAgICAgICAgICB2YWx1ZV9hc19sb25nICh2YWx1ZV9hbGxvY2F0 ZV9zcGFjZV9pbl9pbmZlcmlvciAobGVuKSk7CiAgCi1AQCAtNDE1OCw3ICs0MTYxLDcgQEAgc3Rh dGljIENPUkVfQUREUgorQEAgLTQxNTYsNyArNDE1OSw3IEBAIHN0YXRpYyBDT1JFX0FERFIKICB2 YWx1ZV9wb2ludGVyIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3QgdHlwZSAqdHlwZSkKICB7 CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF90eXBlX2FyY2ggKHR5cGUpOwpAQCAt Njk4LDcgKzY5OCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hZGEtbGFuZy5j CiAgICBnZGJfYnl0ZSAqYnVmID0gYWxsb2NhIChsZW4pOwogICAgQ09SRV9BRERSIGFkZHI7CiAg Ci1AQCAtNjA1Myw3ICs2MDU2LDcgQEAgdmFsdWVfdGFnX2Zyb21fY29udGVudHNfYW5kX2FkZHJl c3MgKHN0cgorQEAgLTYwODcsNyArNjA5MCw3IEBAIHZhbHVlX3RhZ19mcm9tX2NvbnRlbnRzX2Fu ZF9hZGRyZXNzIChzdHIKICAJCQkJICAgICBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09SRV9BRERSIGFkZHJlc3MpCiAgewpA QCAtNzA3LDcgKzcwNyw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hZGEtbGFu Zy5jCiAgICBzdHJ1Y3QgdHlwZSAqdGFnX3R5cGU7CiAgCiAgICBpZiAoZmluZF9zdHJ1Y3RfZmll bGQgKCJfdGFnIiwgdHlwZSwgMCwgJnRhZ190eXBlLCAmdGFnX2J5dGVfb2Zmc2V0LAotQEAgLTY1 MTgsNyArNjUyMSw3IEBAIGFkYV9pbl92YXJpYW50IChMT05HRVNUIHZhbCwgc3RydWN0IHR5cGUK K0BAIC02NTUyLDcgKzY1NTUsNyBAQCBhZGFfaW5fdmFyaWFudCAoTE9OR0VTVCB2YWwsIHN0cnVj dCB0eXBlCiAgICAgb25seSBpbiB0aGF0IGl0IGNhbiBoYW5kbGUgcGFja2VkIHZhbHVlcyBvZiBh cmJpdHJhcnkgdHlwZS4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCkBAIC03MTYsNyAr NzE2LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmMKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdHlwZSAqYXJnX3R5cGUpCiAgewogICAgc3Ry dWN0IHR5cGUgKnR5cGU7Ci1AQCAtNjUzMCw3ICs2NTMzLDcgQEAgYWRhX3ZhbHVlX3ByaW1pdGl2 ZV9maWVsZCAoc3RydWN0IHZhbHVlCitAQCAtNjU2NCw3ICs2NTY3LDcgQEAgYWRhX3ZhbHVlX3By aW1pdGl2ZV9maWVsZCAoc3RydWN0IHZhbHVlCiAgCiAgICBpZiAoVFlQRV9GSUVMRF9CSVRTSVpF IChhcmdfdHlwZSwgZmllbGRubykgIT0gMCkKICAgICAgewpAQCAtNzI1LDcgKzcyNSw3IEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hZGEtbGFuZy5jCiAgICAgICAgaW50IGJpdF9z aXplID0gVFlQRV9GSUVMRF9CSVRTSVpFIChhcmdfdHlwZSwgZmllbGRubyk7CiAgCiAgICAgICAg cmV0dXJuIGFkYV92YWx1ZV9wcmltaXRpdmVfcGFja2VkX3ZhbCAoYXJnMSwgdmFsdWVfY29udGVu dHMgKGFyZzEpLAotQEAgLTY1NTcsOSArNjU2MCw5IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfZmll bGQgKHN0cnVjdCB2YWx1ZQorQEAgLTY1OTEsOSArNjU5NCw5IEBAIGFkYV92YWx1ZV9wcmltaXRp dmVfZmllbGQgKHN0cnVjdCB2YWx1ZQogICAgIFJldHVybnMgMSBpZiBmb3VuZCwgMCBvdGhlcndp c2UuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTczNyw3ICs3MzcsNyBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvYWRhLWxhbmcuYwogIAkJICAgaW50ICppbmRleF9wKQogIHsKICAg IGludCBpOwotQEAgLTY1NzcsOCArNjU4MCw4IEBAIGZpbmRfc3RydWN0X2ZpZWxkIChjb25zdCBj aGFyICpuYW1lLCBzdHIKK0BAIC02NjExLDggKzY2MTQsOCBAQCBmaW5kX3N0cnVjdF9maWVsZCAo Y29uc3QgY2hhciAqbmFtZSwgc3RyCiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9ORklFTERT ICh0eXBlKTsgaSArPSAxKQogICAgICB7CkBAIC03NDgsNyArNzQ4LDcgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmMKICAgICAgICBjb25zdCBjaGFyICp0X2ZpZWxk X25hbWUgPSBUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpOwogIAogICAgICAgIGlmICh0X2ZpZWxk X25hbWUgPT0gTlVMTCkKLUBAIC02NjQ4LDcgKzY2NTEsNyBAQCBudW1fdmlzaWJsZV9maWVsZHMg KHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTY2ODIsNyArNjY4NSw3IEBAIG51bV92aXNpYmxlX2Zp ZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUpCiAgICAgU2VhcmNoZXMgcmVjdXJzaXZlbHkgdGhyb3Vn aCB3cmFwcGVyIGZpZWxkcyAoZS5nLiwgJ19wYXJlbnQnKS4gICovCiAgCiAgc3RhdGljIHN0cnVj dCB2YWx1ZSAqCkBAIC03NTcsNyArNzU3LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL2FkYS1sYW5nLmMKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHR5cGUgKnR5 cGUpCiAgewogICAgaW50IGk7Ci1AQCAtNjY4MSw3ICs2Njg0LDcgQEAgYWRhX3NlYXJjaF9zdHJ1 Y3RfZmllbGQgKGNoYXIgKm5hbWUsIHN0cgorQEAgLTY3MTUsNyArNjcxOCw3IEBAIGFkYV9zZWFy Y2hfc3RydWN0X2ZpZWxkIChjaGFyICpuYW1lLCBzdHIKICAgICAgICAgICAgaW50IGo7CiAgICAg ICAgICAgIHN0cnVjdCB0eXBlICpmaWVsZF90eXBlID0gYWRhX2NoZWNrX3R5cGVkZWYgKFRZUEVf RklFTERfVFlQRSAodHlwZSwKICAJCQkJCQkJCQlpKSk7CkBAIC03NjYsNyArNzY2LDcgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmMKICAKICAgICAgICAgICAgZm9y IChqID0gMDsgaiA8IFRZUEVfTkZJRUxEUyAoZmllbGRfdHlwZSk7IGogKz0gMSkKICAgICAgICAg ICAgICB7Ci1AQCAtNjY5OSw4ICs2NzAyLDggQEAgYWRhX3NlYXJjaF9zdHJ1Y3RfZmllbGQgKGNo YXIgKm5hbWUsIHN0cgorQEAgLTY3MzMsOCArNjczNiw4IEBAIGFkYV9zZWFyY2hfc3RydWN0X2Zp ZWxkIChjaGFyICpuYW1lLCBzdHIKICAgIHJldHVybiBOVUxMOwogIH0KICAKQEAgLTc3Nyw3ICs3 NzcsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLWxhbmcuYwogIAogIAog IC8qIFJldHVybiBmaWVsZCAjSU5ERVggaW4gQVJHLCB3aGVyZSB0aGUgaW5kZXggaXMgdGhhdCBy ZXR1cm5lZCBieQotQEAgLTY3MDksNyArNjcxMiw3IEBAIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKmFk YV9pbmRleF9zdHJ1Y3RfZmkKK0BAIC02NzQzLDcgKzY3NDYsNyBAQCBzdGF0aWMgc3RydWN0IHZh bHVlICphZGFfaW5kZXhfc3RydWN0X2ZpCiAgICogSWYgZm91bmQsIHJldHVybiB2YWx1ZSwgZWxz ZSByZXR1cm4gTlVMTC4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCkBAIC03ODYsNyAr Nzg2LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmMKICAJCQlz dHJ1Y3QgdHlwZSAqdHlwZSkKICB7CiAgICByZXR1cm4gYWRhX2luZGV4X3N0cnVjdF9maWVsZF8x ICgmaW5kZXgsIGFyZywgb2Zmc2V0LCB0eXBlKTsKLUBAIC02NzIxLDcgKzY3MjQsNyBAQCBhZGFf aW5kZXhfc3RydWN0X2ZpZWxkIChpbnQgaW5kZXgsIHN0cnVjCitAQCAtNjc1NSw3ICs2NzU4LDcg QEAgYWRhX2luZGV4X3N0cnVjdF9maWVsZCAoaW50IGluZGV4LCBzdHJ1YwogICAqICpJTkRFWF9Q LiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHZhbHVlICoKQEAgLTc5NSw3ICs3OTUsNyBAQCBJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLWxhbmcuYwogIAkJCSAgc3RydWN0IHR5cGUg KnR5cGUpCiAgewogICAgaW50IGk7Ci1AQCAtNjgxMSw3ICs2ODE0LDggQEAgYWRhX3ZhbHVlX3N0 cnVjdF9lbHQgKHN0cnVjdCB2YWx1ZSAqYXJnLAorQEAgLTY4NDUsNyArNjg0OCw4IEBAIGFkYV92 YWx1ZV9zdHJ1Y3RfZWx0IChzdHJ1Y3QgdmFsdWUgKmFyZywKICAgICAgdiA9IGFkYV9zZWFyY2hf c3RydWN0X2ZpZWxkIChuYW1lLCBhcmcsIDAsIHQpOwogICAgZWxzZQogICAgICB7CkBAIC04MDUs NyArODA1LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmMKICAg ICAgICBzdHJ1Y3QgdHlwZSAqZmllbGRfdHlwZTsKICAgICAgICBDT1JFX0FERFIgYWRkcmVzczsK ICAKLUBAIC03MTI0LDggKzcxMjgsOCBAQCBhZGFfY29lcmNlX3JlZiAoc3RydWN0IHZhbHVlICp2 YWwwKQorQEAgLTcxNTgsOCArNzE2Miw4IEBAIGFkYV9jb2VyY2VfcmVmIChzdHJ1Y3QgdmFsdWUg KnZhbDApCiAgLyogUmV0dXJuIE9GRiByb3VuZGVkIHVwd2FyZCBpZiBuZWNlc3NhcnkgdG8gYSBt dWx0aXBsZSBvZgogICAgIEFMSUdOTUVOVCAoYSBwb3dlciBvZiAyKS4gICovCiAgCkBAIC04MTYs NyArODE2LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmMKICB7 CiAgICByZXR1cm4gKG9mZiArIGFsaWdubWVudCAtIDEpICYgfihhbGlnbm1lbnQgLSAxKTsKICB9 Ci1AQCAtNzUwNCwxMCArNzUwOCw5IEBAIGFkYV90ZW1wbGF0ZV90b19maXhlZF9yZWNvcmRfdHlw ZV8xIChzdHIKK0BAIC03NTM4LDEwICs3NTQyLDkgQEAgYWRhX3RlbXBsYXRlX3RvX2ZpeGVkX3Jl Y29yZF90eXBlXzEgKHN0cgogICAgc3RydWN0IHZhbHVlICptYXJrID0gdmFsdWVfbWFyayAoKTsK ICAgIHN0cnVjdCB2YWx1ZSAqZHZhbDsKICAgIHN0cnVjdCB0eXBlICpydHlwZTsKQEAgLTgyOSw3 ICs4MjksNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLWxhbmcuYwogICAg aW50IGY7CiAgCiAgICAvKiBDb21wdXRlIHRoZSBudW1iZXIgb2YgZmllbGRzIGluIHRoaXMgcmVj b3JkIHR5cGUgdGhhdCBhcmUgZ29pbmcKLUBAIC03NTc4LDcgKzc1ODEsNyBAQCBhZGFfdGVtcGxh dGVfdG9fZml4ZWRfcmVjb3JkX3R5cGVfMSAoc3RyCitAQCAtNzYxMiw3ICs3NjE1LDcgQEAgYWRh X3RlbXBsYXRlX3RvX2ZpeGVkX3JlY29yZF90eXBlXzEgKHN0cgogIAkgICAgIHRoYXQgZm9sbG93 IHRoaXMgb25lLiAgKi8KICAJICBpZiAoYWRhX2lzX2FsaWduZXJfdHlwZSAoZmllbGRfdHlwZSkp CiAgCSAgICB7CkBAIC04MzgsNyArODM4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL2FkYS1sYW5nLmMKICAKICAJICAgICAgZmllbGRfdmFsYWRkciA9IGNvbmRfb2Zmc2V0X2hv c3QgKGZpZWxkX3ZhbGFkZHIsIGZpZWxkX29mZnNldCk7CiAgCSAgICAgIGZpZWxkX2FkZHJlc3Mg PSBjb25kX29mZnNldF90YXJnZXQgKGZpZWxkX2FkZHJlc3MsIGZpZWxkX29mZnNldCk7Ci1AQCAt NzcwNywxMSArNzcxMCwxMSBAQCBhZGFfdGVtcGxhdGVfdG9fZml4ZWRfcmVjb3JkX3R5cGVfMSAo c3RyCitAQCAtNzc0MSwxMSArNzc0NCwxMSBAQCBhZGFfdGVtcGxhdGVfdG9fZml4ZWRfcmVjb3Jk X3R5cGVfMSAoc3RyCiAgICBpZiAoVFlQRV9MRU5HVEggKHR5cGUpIDw9IDApCiAgICAgIHsKICAg ICAgICBpZiAoVFlQRV9OQU1FIChydHlwZSkpCkBAIC04NTQsNyArODU0LDcgQEAgSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmMKICAgICAgfQogICAgZWxzZQogICAgICB7 Ci1AQCAtODA0OCw3ICs4MDUxLDggQEAgdG9fZml4ZWRfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUg KnR5cGUwLAorQEAgLTgwODIsNyArODA4NSw4IEBAIHRvX2ZpeGVkX2FycmF5X3R5cGUgKHN0cnVj dCB0eXBlICp0eXBlMCwKICAJIHR5cGUgd2FzIGEgcmVndWxhciAobm9uLXBhY2tlZCkgYXJyYXkg dHlwZS4gIEFzIGEgcmVzdWx0LCB0aGUKICAJIGJpdHNpemUgb2YgdGhlIGFycmF5IGVsZW1lbnRz IG5lZWRzIHRvIGJlIHNldCBhZ2FpbiwgYW5kIHRoZSBhcnJheQogIAkgbGVuZ3RoIG5lZWRzIHRv IGJlIHJlY29tcHV0ZWQgYmFzZWQgb24gdGhhdCBiaXRzaXplLiAgKi8KQEAgLTg2NCwxMCArODY0 LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hZGEtbGFuZy5jCiAgICAgICAg aW50IGVsdF9iaXRzaXplID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlMCwgMCk7CiAgCiAgICAg ICAgVFlQRV9GSUVMRF9CSVRTSVpFIChyZXN1bHQsIDApID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0 eXBlMCwgMCk7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLWxhbmcuaAorSW5k ZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hZGEtbGFuZy5oCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9hZGEtbGFuZy5oCTIwMTMtMDEtMjQgMTk6 MDQ6MzQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLWxh bmcuaAkyMDEzLTAyLTE1IDIyOjQwOjE4LjUxMzYyMjAzNSArMDEwMAorLS0tIGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2FkYS1sYW5nLmgJMjAxMy0wOC0wMiAxNjozODoyNi40MDky OTIxNjIgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYWRhLWxhbmcuaAky MDEzLTA4LTAyIDE2OjM4OjMyLjM0MzMwMDcxMyArMDIwMAogQEAgLTE2OSw3ICsxNjksNyBAQCBl eHRlcm4gdm9pZCBhZGFfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUKICBleHRlcm4gdm9pZCBhZGFf cHJpbnRfdHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBzeW1ib2wgKm5ld19zeW1i b2wsCiAgCQkJICAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOwpAQCAtODg2LDcgKzg4Niw3 IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hZGEtbGFuZy5oCiAgCQkJICBjb25z dCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKICAKICBzdHJ1Y3QgdmFsdWUgKmFkYV9j b252ZXJ0X2FjdHVhbCAoc3RydWN0IHZhbHVlICphY3R1YWwsCi1AQCAtMjU4LDcgKzI1OCw3IEBA IGV4dGVybiBpbnQgYWRhX2lzX2NvbnN0cmFpbmVkX3BhY2tlZF9hcnIKK0BAIC0yNTcsNyArMjU3 LDcgQEAgZXh0ZXJuIGludCBhZGFfaXNfY29uc3RyYWluZWRfcGFja2VkX2FycgogIAogIGV4dGVy biBzdHJ1Y3QgdmFsdWUgKmFkYV92YWx1ZV9wcmltaXRpdmVfcGFja2VkX3ZhbCAoc3RydWN0IHZh bHVlICosCiAgCQkJCQkJICAgICBjb25zdCBnZGJfYnl0ZSAqLApAQCAtODk1LDEwICs4OTUsMTAg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmgKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0eXBlICop OwogIAogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqYWRhX2NvZXJjZV90b19zaW1wbGVfYXJyYXlfdHlw ZSAoc3RydWN0IHR5cGUgKik7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLXR5 cGVwcmludC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2FkYS10eXBlcHJp bnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvYWRhLXR5 cGVwcmludC5jCTIwMTMtMDEtMDEgMDc6MzI6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvYWRhLXR5cGVwcmludC5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTE0 NjIyMDM4ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvYWRhLXR5 cGVwcmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDI0MjkyMTg0ICswMjAwCisrKysgZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMvZ2RiL2FkYS10eXBlcHJpbnQuYwkyMDEzLTA4LTAyIDE2OjM4OjMy LjM0MzMwMDcxMyArMDIwMAogQEAgLTgyOSw4ICs4MjksOCBAQCBhZGFfcHJpbnRfdHlwZSAoc3Ry dWN0IHR5cGUgKnR5cGUwLCBjb25zCiAgCSAgICBjb25zdCBjaGFyICpuYW1lID0gYWRhX3R5cGVf bmFtZSAodHlwZSk7CiAgCkBAIC05MjAsMTAgKzkyMCwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDIxNS9nZGIvYWRhLXR5cGVwcmludC5jCiAgCWJyZWFrOwogICAgICAgIGNhc2UgVFlQRV9D T0RFX0VOVU06CiAgCWlmIChzaG93IDwgMCkKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9hZGEtdmFscHJpbnQuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hZGEt dmFscHJpbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIv YWRhLXZhbHByaW50LmMJMjAxMy0wMi0wMSAyMTowODo0NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hZGEtdmFscHJpbnQuYwkyMDEzLTAyLTE1IDIyOjQwOjE4 LjUxNDYyMjAzOCArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2Fk YS12YWxwcmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDI1MjkyMTg1ICswMjAwCisrKysgZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2FkYS12YWxwcmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6 MzIuMzQ0MzAwNzE1ICswMjAwCiBAQCAtNDEsMTYgKzQxLDE2IEBAIHN0YXRpYyB2b2lkIHByaW50 X3JlY29yZCAoc3RydWN0IHR5cGUgKiwKICAJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9v cHRpb25zICopOwogIApAQCAtMTA4NCwxMCArMTA4NCwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDIxNS9nZGIvYWRhLXZhbHByaW50LmMKICAJICAgICAgaW50IGJpdF9zaXplID0gVFlQRV9G SUVMRF9CSVRTSVpFICh0eXBlLCBpKTsKICAJICAgICAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlv bnMgb3B0czsKICAKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hbm5vdGF0ZS5jCitJ bmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2Fubm90YXRlLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2Fubm90YXRlLmMJMjAxMy0wMS0yMiAy MToyMjozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hbm5v dGF0ZS5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTE0NjIyMDM4ICswMTAwCistLS0gZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvYW5ub3RhdGUuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQy NTI5MjE4NSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hbm5vdGF0ZS5j CTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzQ0MzAwNzE1ICswMjAwCiBAQCAtNTIzLDIxICs1MjMsMjEg QEAgYW5ub3RhdGVfZnJhbWVfZW5kICh2b2lkKQogIH0KICAMCkBAIC0xMTE0LDEwICsxMTE0LDEw IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hbm5vdGF0ZS5jCiAgfQogIAogIHZv aWQKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hbm5vdGF0ZS5oCitJbmRleDogZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2Fubm90YXRlLmgKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2Fubm90YXRlLmgJMjAxMy0wMS0yMiAyMToxOTozOC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hbm5vdGF0ZS5oCTIw MTMtMDItMTUgMjI6NDA6MTguNTE1NjIyMDQxICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMub3JpZy9nZGIvYW5ub3RhdGUuaAkyMDEzLTA4LTAyIDE2OjM4OjI2LjQyNjI5MjE4NiAr MDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hbm5vdGF0ZS5oCTIwMTMtMDgt MDIgMTY6Mzg6MzIuMzQ0MzAwNzE1ICswMjAwCiBAQCAtOTIsOCArOTIsOCBAQCBleHRlcm4gdm9p ZCBhbm5vdGF0ZV9mcmFtZV9zb3VyY2VfZW5kICh2CiAgZXh0ZXJuIHZvaWQgYW5ub3RhdGVfZnJh bWVfd2hlcmUgKHZvaWQpOwogIGV4dGVybiB2b2lkIGFubm90YXRlX2ZyYW1lX2VuZCAodm9pZCk7 CkBAIC0xMTI5LDEwICsxMTI5LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9h bm5vdGF0ZS5oCiAgZXh0ZXJuIHZvaWQgYW5ub3RhdGVfZWx0X3JlcF9lbmQgKHZvaWQpOwogIGV4 dGVybiB2b2lkIGFubm90YXRlX2VsdCAodm9pZCk7CiAgZXh0ZXJuIHZvaWQgYW5ub3RhdGVfYXJy YXlfc2VjdGlvbl9lbmQgKHZvaWQpOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2Fy bS1saW51eC1uYXQuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hcm0tbGlu dXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2Fy bS1saW51eC1uYXQuYwkyMDEzLTAxLTAxIDA3OjMyOjM4LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FybS1saW51eC1uYXQuYwkyMDEzLTAyLTE1IDIyOjQwOjE4 LjUxNTYyMjA0MSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2Fy bS1saW51eC1uYXQuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQyNjI5MjE4NiArMDIwMAorKysrIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hcm0tbGludXgtbmF0LmMJMjAxMy0wOC0wMiAxNjoz ODozMi4zNDUzMDA3MTYgKzAyMDAKIEBAIC0xMDczLDcgKzEwNzMsNyBAQCBhcm1fbGludXhfcmVt b3ZlX2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBnCiAgLyogQXJlIHdlIGFibGUgdG8gdXNlIGEgaGFy ZHdhcmUgd2F0Y2hwb2ludCBmb3IgdGhlIExFTiBieXRlcyBzdGFydGluZyBhdCAKICAgICBBRERS PyAgKi8KQEAgLTExNDIsMTAgKzExNDIsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL2FybS1saW51eC1uYXQuYwogIHsKICAgIGNvbnN0IHN0cnVjdCBhcm1fbGludXhfaHdicF9j YXAgKmNhcCA9IGFybV9saW51eF9nZXRfaHdicF9jYXAgKCk7CiAgICBDT1JFX0FERFIgbWF4X3dw X2xlbmd0aCwgYWxpZ25lZF9hZGRyOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2F4 LWdkYi5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2F4LWdkYi5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9heC1nZGIuYwkyMDEzLTAx LTMxIDE3OjI3OjUwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2Ri L2F4LWdkYi5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTE2NjIyMDQzICswMTAwCistLS0gZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvYXgtZ2RiLmMJMjAxMy0wOC0wMiAxNjozODoyNi40 MjcyOTIxODggKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYXgtZ2RiLmMJ MjAxMy0wOC0wMiAxNjozODozMi4zNDYzMDA3MTcgKzAyMDAKIEBAIC04MywxMiArODMsMTIgQEAg c3RhdGljIHZvaWQgZ2VuX3RyYWNlZF9wb3AgKHN0cnVjdCBnZGJhcgogIHN0YXRpYyB2b2lkIGdl bl9zaWduX2V4dGVuZCAoc3RydWN0IGFnZW50X2V4cHIgKiwgc3RydWN0IHR5cGUgKik7CiAgc3Rh dGljIHZvaWQgZ2VuX2V4dGVuZCAoc3RydWN0IGFnZW50X2V4cHIgKiwgc3RydWN0IHR5cGUgKik7 CkBAIC0xMTgxLDcgKzExODEsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYXgt Z2RiLmMKICAJCQkJICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSk7CiAgc3RhdGljIHZvaWQgZ2VuX3N0 cnVjdF9yZWYgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBhZ2VudF9leHByICpheCwK ICAJCQkgICAgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUsCi1AQCAtNTY5LDcgKzU3MCw3IEBAIGdl bl9mZXRjaCAoc3RydWN0IGFnZW50X2V4cHIgKmF4LCBzdHJ1Y3QKK0BAIC01MzksNyArNTQwLDcg QEAgZ2VuX2ZldGNoIChzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsIHN0cnVjdAogICAgIHJpZ2h0IHNo aWZ0IGl0IGJ5IC1ESVNUQU5DRSBiaXRzIGlmIERJU1RBTkNFIDwgMC4gIFRoaXMgZ2VuZXJhdGVz CiAgICAgdW5zaWduZWQgKGxvZ2ljYWwpIHJpZ2h0IHNoaWZ0cy4gICovCiAgc3RhdGljIHZvaWQK QEAgLTExOTAsNyArMTE5MCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9heC1n ZGIuYwogIHsKICAgIGlmIChkaXN0YW5jZSA+IDApCiAgICAgIHsKLUBAIC02MjMsNyArNjI0LDcg QEAgZ2VuX2ZyYW1lX2xvY2Fsc19hZGRyZXNzIChzdHJ1Y3QgZ2RiYXJjaAorQEAgLTU5Myw3ICs1 OTQsNyBAQCBnZW5fZnJhbWVfbG9jYWxzX2FkZHJlc3MgKHN0cnVjdCBnZGJhcmNoCiAgICAgcHJv Z3JhbW1pbmcgaW4gTUwsIGl0IHdvdWxkIGJlIGNsZWFyZXIgd2h5IHRoZXNlIGFyZSB0aGUgc2Ft ZQogICAgIHRoaW5nLiAgKi8KICBzdGF0aWMgdm9pZApAQCAtMTE5OSw3ICsxMTk5LDcgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2F4LWdkYi5jCiAgewogICAgLyogSXQgd291bGQg c3VmZmljZSB0byBzaW1wbHkgcHVzaCB0aGUgb2Zmc2V0IGFuZCBhZGQgaXQsIGJ1dCB0aGlzCiAg ICAgICBtYWtlcyBpdCBlYXNpZXIgdG8gcmVhZCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgb2Zmc2V0 cyBpbiB0aGUKLUBAIC0xMjc5LDcgKzEyODAsNyBAQCBnZW5fYWRkcmVzc19vZiAoc3RydWN0IGFn ZW50X2V4cHIgKmF4LCBzCitAQCAtMTI0OSw3ICsxMjUwLDcgQEAgZ2VuX2FkZHJlc3Nfb2YgKHN0 cnVjdCBhZ2VudF9leHByICpheCwgcwogIHN0YXRpYyB2b2lkCiAgZ2VuX2JpdGZpZWxkX3JlZiAo c3RydWN0IGV4cHJlc3Npb24gKmV4cCwgc3RydWN0IGFnZW50X2V4cHIgKmF4LAogIAkJICBzdHJ1 Y3QgYXhzX3ZhbHVlICp2YWx1ZSwgc3RydWN0IHR5cGUgKnR5cGUsCkBAIC0xMjA4LDcgKzEyMDgs NyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYXgtZ2RiLmMKICB7CiAgICAvKiBO b3RlIHRoYXQgb3BzW2ldIGZldGNoZXMgOCA8PCBpIGJpdHMuICAqLwogICAgc3RhdGljIGVudW0g YWdlbnRfb3Agb3BzW10KLUBAIC0xMzE0LDEzICsxMzE1LDEzIEBAIGdlbl9iaXRmaWVsZF9yZWYg KHN0cnVjdCBleHByZXNzaW9uICpleHAKK0BAIC0xMjg0LDEzICsxMjg1LDEzIEBAIGdlbl9iaXRm aWVsZF9yZWYgKHN0cnVjdCBleHByZXNzaW9uICpleHAKICAKICAgIC8qIFRoZSBmaXJzdCBhbmQg b25lLWFmdGVyLWxhc3QgYml0cyBpbiB0aGUgZmllbGQsIGJ1dCByb3VuZGVkIGRvd24KICAgICAg IGFuZCB1cCB0byBieXRlIGJvdW5kYXJpZXMuICAqLwpAQCAtMTIyNyw3ICsxMjI3LDcgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2F4LWdkYi5jCiAgCiAgICAvKiBUaGUgaW5kZXgg aW4gb3BzIG9mIHRoZSBvcGNvZGUgd2UncmUgY29uc2lkZXJpbmcuICAqLwogICAgaW50IG9wOwot QEAgLTE0MzksNyArMTQ0MCw3IEBAIGdlbl9iaXRmaWVsZF9yZWYgKHN0cnVjdCBleHByZXNzaW9u ICpleHAKK0BAIC0xNDA5LDcgKzE0MTAsNyBAQCBnZW5fYml0ZmllbGRfcmVmIChzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwCiAgc3RhdGljIHZvaWQKICBnZW5fcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3Qg ZXhwcmVzc2lvbiAqZXhwLAogIAkJICAgICBzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsIHN0cnVjdCBh eHNfdmFsdWUgKnZhbHVlLApAQCAtMTIzNiw3ICsxMjM2LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAyMTUvZ2RiL2F4LWdkYi5jCiAgewogICAgLyogSXMgdGhpcyBhIGJpdGZpZWxkPyAgKi8K ICAgIGlmIChUWVBFX0ZJRUxEX1BBQ0tFRCAodHlwZSwgZmllbGRubykpCi1AQCAtMTQ2NCw3ICsx NDY1LDcgQEAgZ2VuX3ByaW1pdGl2ZV9maWVsZCAoc3RydWN0IGV4cHJlc3Npb24gKgorQEAgLTE0 MzQsNyArMTQzNSw3IEBAIGdlbl9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCBleHByZXNzaW9uICoK ICBzdGF0aWMgaW50CiAgZ2VuX3N0cnVjdF9yZWZfcmVjdXJzaXZlIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLCBzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsCiAgCQkJICBzdHJ1Y3QgYXhzX3ZhbHVlICp2 YWx1ZSwKQEAgLTEyNDUsMTEgKzEyNDUsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL2F4LWdkYi5jCiAgewogICAgaW50IGksIHJzbHQ7CiAgICBpbnQgbmJhc2VzID0gVFlQRV9O X0JBU0VDTEFTU0VTICh0eXBlKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9heC1n ZW5lcmFsLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYXgtZ2VuZXJhbC5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9heC1nZW5lcmFs LmMJMjAxMy0wMS0zMSAxNzoyNzo1MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi9heC1nZW5lcmFsLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41MTY2MjIwNDMgKzAx MDAKLUBAIC0xOTIsNyArMTkyLDcgQEAgYXhfemVyb19leHQgKHN0cnVjdCBhZ2VudF9leHByICp4 LCBpbnQgbgorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2F4LWdlbmVyYWwu YwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQyODI5MjE4OSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi9heC1nZW5lcmFsLmMJMjAxMy0wOC0wMiAxNjozODozMi4zNDYzMDA3MTcg KzAyMDAKK0BAIC0xOTUsNyArMTk1LDcgQEAgYXhfemVyb19leHQgKHN0cnVjdCBhZ2VudF9leHBy ICp4LCBpbnQgbgogIAogIC8qIEFwcGVuZCBhIHRyYWNlX3F1aWNrIGluc3RydWN0aW9uIHRvIEVY UFIsIHRvIHJlY29yZCBOIGJ5dGVzLiAgKi8KICB2b2lkCkBAIC0xMjU4LDExICsxMjU4LDExIEBA IEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9heC1nZW5lcmFsLmMKICB7CiAgICAvKiBO IG11c3QgZml0IGluIGEgYnl0ZS4gICovCiAgICBpZiAobiA8IDAgfHwgbiA+IDI1NSkKLUluZGV4 OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9heC5oCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMvZ2RiL2F4LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcv Z2RiL2F4LmgJMjAxMy0wMS0wMSAwNzozMjozOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41 LjUwLjIwMTMwMjE1L2dkYi9heC5oCTIwMTMtMDItMTUgMjI6NDA6MTguNTE3NjIyMDQ1ICswMTAw Ci1AQCAtMTkwLDcgKzE5MCw3IEBAIGV4dGVybiB2b2lkIGF4X2V4dCAoc3RydWN0IGFnZW50X2V4 cHIgKkUKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9heC5oCTIwMTMtMDgt MDIgMTY6Mzg6MjYuNDI4MjkyMTg5ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL2F4LmgJMjAxMy0wOC0wMiAxNjozODozMi4zNDYzMDA3MTcgKzAyMDAKK0BAIC0yMDcsNyAr MjA3LDcgQEAgZXh0ZXJuIHZvaWQgYXhfZXh0IChzdHJ1Y3QgYWdlbnRfZXhwciAqRQogIGV4dGVy biB2b2lkIGF4X3plcm9fZXh0IChzdHJ1Y3QgYWdlbnRfZXhwciAqRVhQUiwgaW50IE4pOwogIAog IC8qIEFwcGVuZCBhIHRyYWNlX3F1aWNrIGluc3RydWN0aW9uIHRvIEVYUFIsIHRvIHJlY29yZCBO IGJ5dGVzLiAgKi8KQEAgLTEyNzEsMTEgKzEyNzEsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAyMTUvZ2RiL2F4LmgKICAKICAvKiBBcHBlbmQgYSBnb3RvIG9wIHRvIEVYUFIuICBPUCBpcyB0 aGUgYWN0dWFsIG9wIChtdXN0IGJlIGFvcF9nb3RvIG9yCiAgICAgYW9wX2lmX2dvdG8pLiAgV2Ug YXNzdW1lIHdlIGRvbid0IGtub3cgdGhlIHRhcmdldCBvZmZzZXQgeWV0LAotSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL2JyZWFrcG9pbnQuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3 MzEtY3ZzL2dkYi9icmVha3BvaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMw MjE1Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEzLTAyLTE1IDIyOjM3OjM1LjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2JyZWFrcG9pbnQuYwkyMDEzLTAyLTE1 IDIyOjQwOjE4LjUyMTYyMjA1MyArMDEwMAotQEAgLTY2NjAsNyArNjY2MCw3IEBAIGJyZWFrcG9p bnRfYWRkcmVzc19tYXRjaCAoc3RydWN0IGFkZHJlc3MKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMy0wOC0wMiAxNjozODoyNi40MzIyOTIxOTUg KzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYnJlYWtwb2ludC5jCTIwMTMt MDgtMDIgMTY6Mzg6MzIuMzUwMzAwNzIzICswMjAwCitAQCAtNjcxMCw3ICs2NzEwLDcgQEAgYnJl YWtwb2ludF9hZGRyZXNzX21hdGNoIChzdHJ1Y3QgYWRkcmVzcwogIAogIHN0YXRpYyBpbnQKICBi cmVha3BvaW50X2FkZHJlc3NfbWF0Y2hfcmFuZ2UgKHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3Bh Y2UxLCBDT1JFX0FERFIgYWRkcjEsCkBAIC0xMjg0LDcgKzEyODQsNyBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvYnJlYWtwb2ludC5jCiAgCQkJCUNPUkVfQUREUiBhZGRyMikKICB7 CiAgICByZXR1cm4gKChnZGJhcmNoX2hhc19nbG9iYWxfYnJlYWtwb2ludHMgKHRhcmdldF9nZGJh cmNoICgpKQotQEAgLTExMTgyLDcgKzExMTgyLDcgQEAgY2FuX3VzZV9oYXJkd2FyZV93YXRjaHBv aW50IChzdHJ1Y3QgdmFsdQorQEAgLTExMjQ3LDcgKzExMjQ3LDcgQEAgY2FuX3VzZV9oYXJkd2Fy ZV93YXRjaHBvaW50IChzdHJ1Y3QgdmFsdQogIAkJICAgICAgJiYgVFlQRV9DT0RFICh2dHlwZSkg IT0gVFlQRV9DT0RFX0FSUkFZKSkKICAJCXsKICAJCSAgQ09SRV9BRERSIHZhZGRyID0gdmFsdWVf YWRkcmVzcyAodik7CkBAIC0xMjkzLDExICsxMjkzLDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi9icmVha3BvaW50LmMKICAJCSAgaW50IG51bV9yZWdzOwogIAogIAkJICBsZW4g PSAodGFyZ2V0X2V4YWN0X3dhdGNocG9pbnRzCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9n ZGIvYnJlYWtwb2ludC5oCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2JyZWFr cG9pbnQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvYnJl YWtwb2ludC5oCTIwMTMtMDItMTUgMjI6Mzc6NDcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvYnJlYWtwb2ludC5oCTIwMTMtMDItMTUgMjI6NDA6MTguNTIxNjIy MDUzICswMTAwCi1AQCAtMjUwLDcgKzI1MCw3IEBAIHN0cnVjdCBicF90YXJnZXRfaW5mbworLS0t IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAkyMDEzLTA4LTAy IDE2OjM4OjI2LjQzNDI5MjE5OCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi9icmVha3BvaW50LmgJMjAxMy0wOC0wMiAxNjozODozMi4zNTEzMDA3MjUgKzAyMDAKK0BAIC0y NDIsNyArMjQyLDcgQEAgc3RydWN0IGJwX3RhcmdldF9pbmZvCiAgCiAgICAvKiBJZiB0aGlzIGlz IGEgcmFuZ2VkIGJyZWFrcG9pbnQsIHRoZW4gdGhpcyBmaWVsZCBjb250YWlucyB0aGUKICAgICAg IGxlbmd0aCBvZiB0aGUgcmFuZ2UgdGhhdCB3aWxsIGJlIHdhdGNoZWQgZm9yIGV4ZWN1dGlvbi4g ICovCkBAIC0xMzA2LDcgKzEzMDYsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIv YnJlYWtwb2ludC5oCiAgCiAgICAvKiBJZiB0aGUgYnJlYWtwb2ludCBsaXZlcyBpbiBtZW1vcnkg YW5kIHJlYWRpbmcgdGhhdCBtZW1vcnkgd291bGQKICAgICAgIGdpdmUgYmFjayB0aGUgYnJlYWtw b2ludCwgaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgY29udGVudHMsIHRoZW4KLUBAIC00MTksNyAr NDE5LDcgQEAgc3RydWN0IGJwX2xvY2F0aW9uCitAQCAtNDExLDcgKzQxMSw3IEBAIHN0cnVjdCBi cF9sb2NhdGlvbgogICAgLyogRm9yIGhhcmR3YXJlIHdhdGNocG9pbnRzLCB0aGUgc2l6ZSBvZiB0 aGUgbWVtb3J5IHJlZ2lvbiBiZWluZwogICAgICAgd2F0Y2hlZC4gIEZvciBoYXJkd2FyZSByYW5n ZWQgYnJlYWtwb2ludHMsIHRoZSBzaXplIG9mIHRoZQogICAgICAgYnJlYWtwb2ludCByYW5nZS4g ICovCkBAIC0xMzE1LDEwICsxMzE1LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9icmVha3BvaW50LmgKICAKICAgIC8qIFR5cGUgb2YgaGFyZHdhcmUgd2F0Y2hwb2ludC4gICov CiAgICBlbnVtIHRhcmdldF9od19icF90eXBlIHdhdGNocG9pbnRfdHlwZTsKLUluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi9jLWxhbmcuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi9jLWxhbmcuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3Jp Zy9nZGIvYy1sYW5nLmMJMjAxMy0wMi0xMyAxMTo0MToxMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy41LjUwLjIwMTMwMjE1L2dkYi9jLWxhbmcuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjUyMjYy MjA1NSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2MtbGFuZy5j CTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDM0MjkyMTk4ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL2MtbGFuZy5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzUxMzAwNzI1ICswMjAw CiBAQCAtMTg4LDcgKzE4OCw3IEBAIGNfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5 cGUsIHMKICAKICB2b2lkCkBAIC0xMzQ2LDEwICsxMzQ2LDEwIEBAIEluZGV4OiBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi9jLWxhbmcuYwogIAogIAkJaWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKFRZ UEVfSU5ERVhfVFlQRSAoZXhwZWN0X3R5cGUpLAogIAkJCQkJICZsb3dfYm91bmQsICZoaWdoX2Jv dW5kKSA8IDApCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYy1sYW5nLmgKK0luZGV4 OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYy1sYW5nLmgKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2MtbGFuZy5oCTIwMTMtMDEtMDEgMDc6MzI6NDAu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYy1sYW5nLmgJMjAx My0wMi0xNSAyMjo0MDoxOC41MjI2MjIwNTUgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy5vcmlnL2dkYi9jLWxhbmcuaAkyMDEzLTA4LTAyIDE2OjM4OjI2LjQzNDI5MjE5OCArMDIw MAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9jLWxhbmcuaAkyMDEzLTA4LTAyIDE2 OjM4OjMyLjM1MTMwMDcyNSArMDIwMAogQEAgLTczLDcgKzczLDcgQEAgZXh0ZXJuIHZvaWQgY19w cmludF90eXBlZGVmIChzdHJ1Y3QgdHlwZQogIAkJCSAgICAgc3RydWN0IHVpX2ZpbGUgKik7CiAg CkBAIC0xMzg1LDEwICsxMzg1LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9j LWxhbmcuaAogIAkJCQkJc3RydWN0IHVpX2ZpbGUgKiwgaW50LAogIAkJCQkJY29uc3Qgc3RydWN0 IHZhbHVlICosCiAgCQkJCQljb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqLAotSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2MtdmFscHJpbnQuYworSW5kZXg6IGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi9jLXZhbHByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2MtdmFscHJpbnQuYwkyMDEzLTAxLTAxIDA3OjMyOjQwLjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2MtdmFscHJpbnQuYwky MDEzLTAyLTE1IDIyOjQwOjE4LjUyMjYyMjA1NSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3 MzEtY3ZzLm9yaWcvZ2RiL2MtdmFscHJpbnQuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQzNTI5MjE5 OSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9jLXZhbHByaW50LmMJMjAx My0wOC0wMiAxNjozODozMi4zNTIzMDA3MjYgKzAyMDAKIEBAIC0xMzIsNyArMTMyLDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBnZW5lcmljX3ZhbF9wcmludF9kZQogIAogIHZvaWQKQEAgLTE0MzAs MTAgKzE0MzAsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2MtdmFscHJpbnQu YwogICAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0cyA9ICpvcHRpb25zOwogIAogICAg b3B0cy5kZXJlZl9yZWYgPSAxOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2NwLWFi aS5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2NwLWFiaS5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9jcC1hYmkuYwkyMDEzLTAxLTE3 IDIxOjI2OjE0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2Nw LWFiaS5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTIzNjIyMDU3ICswMTAwCistLS0gZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvY3AtYWJpLmMJMjAxMy0wOC0wMiAxNjozODoyNi40MzUy OTIxOTkgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvY3AtYWJpLmMJMjAx My0wOC0wMiAxNjozODozMi4zNTIzMDA3MjYgKzAyMDAKIEBAIC02OCwxMyArNjgsMTMgQEAgaXNf b3BlcmF0b3JfbmFtZSAoY29uc3QgY2hhciAqbmFtZSkKICAgIHJldHVybiAoKmN1cnJlbnRfY3Bf YWJpLmlzX29wZXJhdG9yX25hbWUpIChuYW1lKTsKICB9CkBAIC0xNDY5LDEwICsxNDY5LDEwIEBA IEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9jcC1hYmkuYwogIHsKICAgIHN0cnVjdCB0 eXBlICpyZXQgPSBOVUxMOwogICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZTsKLUlu ZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9jcC1hYmkuaAorSW5kZXg6IGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzL2dkYi9jcC1hYmkuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAx MzAyMTUub3JpZy9nZGIvY3AtYWJpLmgJMjAxMy0wMS0wMSAwNzozMjo0MC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9jcC1hYmkuaAkyMDEzLTAyLTE1IDIyOjQw OjE4LjUyMzYyMjA1NyArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2Ri L2NwLWFiaS5oCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDM1MjkyMTk5ICswMjAwCisrKysgZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMvZ2RiL2NwLWFiaS5oCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzUyMzAw NzI2ICswMjAwCiBAQCAtMTA4LDcgKzEwOCw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVl X3ZpcnR1YWxfZm5fZmkKICAJCQkJCSAgICAgc3RydWN0IGZuX2ZpZWxkICpmLAogIAkJCQkJICAg ICBpbnQgaiwKQEAgLTE1MDgsNyArMTUwOCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1 L2dkYi9jcC1hYmkuaAogIAogIC8qIERlc2NyaWJlIHRoZSB0YXJnZXQgb2YgYSBwb2ludGVyIHRv IG1ldGhvZC4gIENPTlRFTlRTIGlzIHRoZSBieXRlCiAgICAgcGF0dGVybiByZXByZXNlbnRpbmcg dGhlIHBvaW50ZXIgdG8gbWV0aG9kLiAgVFlQRSBpcyB0aGUgcG9pbnRlciB0bwotQEAgLTIwNCwx MiArMjA0LDEzIEBAIHN0cnVjdCBjcF9hYmlfb3BzCitAQCAtMjI3LDEyICsyMjcsMTMgQEAgc3Ry dWN0IGNwX2FiaV9vcHMKICAgIHN0cnVjdCB2YWx1ZSAqKCp2aXJ0dWFsX2ZuX2ZpZWxkKSAoc3Ry dWN0IHZhbHVlICoqYXJnMXAsCiAgCQkJCSAgICAgc3RydWN0IGZuX2ZpZWxkICogZiwKICAJCQkJ ICAgICBpbnQgaiwgc3RydWN0IHR5cGUgKiB0eXBlLApAQCAtMTUyNywxMCArMTUyNywxMCBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvY3AtYWJpLmgKICAgIHZvaWQgKCpwcmludF9t ZXRob2RfcHRyKSAoY29uc3QgZ2RiX2J5dGUgKmNvbnRlbnRzLAogIAkJCSAgICBzdHJ1Y3QgdHlw ZSAqdHlwZSwKICAJCQkgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7Ci1JbmRleDogZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvY3AtdmFscHJpbnQuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3 MzEtY3ZzL2dkYi9jcC12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEz MDIxNS5vcmlnL2dkYi9jcC12YWxwcmludC5jCTIwMTMtMDEtMDcgMTc6NDA6MzYuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvY3AtdmFscHJpbnQuYwkyMDEzLTAy LTE1IDIyOjQwOjE4LjUyMzYyMjA1NyArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz Lm9yaWcvZ2RiL2NwLXZhbHByaW50LmMJMjAxMy0wOC0wMiAxNjozODoyNi40MzYyOTIyMDEgKzAy MDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvY3AtdmFscHJpbnQuYwkyMDEzLTA4 LTAyIDE2OjM4OjMyLjM1MzMwMDcyNyArMDIwMAogQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIHZv aWQgY3BfcHJpbnRfc3RhdGljX2ZpZWxkIChzdHJ1YwogIAkJCQkgICBjb25zdCBzdHJ1Y3QgdmFs dWVfcHJpbnRfb3B0aW9ucyAqKTsKICAKQEAgLTE2MDQsMTAgKzE2MDQsMTAgQEAgSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL2NwLXZhbHByaW50LmMKICAgICAgICBpbnQgc2tpcDsKICAg ICAgICBzdHJ1Y3QgdHlwZSAqYmFzZWNsYXNzID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9CQVNFQ0xB U1MgKHR5cGUsIGkpKTsKICAgICAgICBjb25zdCBjaGFyICpiYXNlbmFtZSA9IFRZUEVfTkFNRSAo YmFzZWNsYXNzKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9kLWxhbmcuaAorSW5k ZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9kLWxhbmcuaAogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvZC1sYW5nLmgJMjAxMy0wMS0wMSAwNzozMjo0 MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9kLWxhbmcuaAky MDEzLTAyLTE1IDIyOjQwOjE4LjUyMzYyMjA1NyArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3 MzEtY3ZzLm9yaWcvZ2RiL2QtbGFuZy5oCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDM2MjkyMjAxICsw MjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2QtbGFuZy5oCTIwMTMtMDgtMDIg MTY6Mzg6MzIuMzUzMzAwNzI3ICswMjAwCiBAQCAtMjUsNyArMjUsNyBAQAogIGV4dGVybiBjaGFy ICpkX2RlbWFuZ2xlIChjb25zdCBjaGFyICptYW5nbGVkLCBpbnQgb3B0aW9ucyk7CiAgCkBAIC0x NjE3LDEwICsxNjE3LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9kLWxhbmcu aAogIAkJCSBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCQkgY29uc3Qg c3RydWN0IHZhbHVlICp2YWwsCiAgCQkJIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25z ICpvcHRpb25zKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9kLXZhbHByaW50LmMK K0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZC12YWxwcmludC5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9kLXZhbHByaW50LmMJMjAxMy0w MS0wMSAwNzozMjo0MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9kLXZhbHByaW50LmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41MjQ2MjIwNTkgKzAxMDAKKy0tLSBn ZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9kLXZhbHByaW50LmMJMjAxMy0wOC0wMiAx NjozODoyNi40MzYyOTIyMDEgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIv ZC12YWxwcmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzUzMzAwNzI3ICswMjAwCiBAQCAtMjks NyArMjksNyBAQAogIAogIHN0YXRpYyBpbnQKQEAgLTE2NDMsMTEgKzE2NDMsMTEgQEAgSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2QtdmFscHJpbnQuYwogICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKICB7CiAgICBpbnQgcmV0Owot SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2RvdWJsZXN0LmMKK0luZGV4OiBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy9nZGIvZG91Ymxlc3QuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu NTAuMjAxMzAyMTUub3JpZy9nZGIvZG91Ymxlc3QuYwkyMDEzLTAxLTAxIDA3OjMyOjQxLjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2RvdWJsZXN0LmMJMjAxMy0w Mi0xNSAyMjo0MDoxOC41MjQ2MjIwNTkgKzAxMDAKLUBAIC03OTEsNyArNzkxLDcgQEAgZmxvYXRm b3JtYXRfZnJvbV9kb3VibGVzdCAoY29uc3Qgc3RydWN0CistLS0gZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMub3JpZy9nZGIvZG91Ymxlc3QuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQzNjI5MjIwMSAr MDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9kb3VibGVzdC5jCTIwMTMtMDgt MDIgMTY6Mzg6MzIuMzU0MzAwNzI5ICswMjAwCitAQCAtNzQ0LDcgKzc0NCw3IEBAIGZsb2F0Zm9y bWF0X2Zyb21fZG91Ymxlc3QgKGNvbnN0IHN0cnVjdAogICAgIGJ1dCBub3QgcGFzc2VkIG9uIGJ5 IEdEQi4gIFRoaXMgc2hvdWxkIGJlIGZpeGVkLiAgKi8KICAKICBzdGF0aWMgY29uc3Qgc3RydWN0 IGZsb2F0Zm9ybWF0ICoKQEAgLTE2NTYsNyArMTY1Niw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi9kb3VibGVzdC5jCiAgewogICAgY29uc3Qgc3RydWN0IGZsb2F0Zm9ybWF0ICpm b3JtYXQ7CiAgCi1AQCAtODE5LDggKzgxOSw4IEBAIGZsb2F0Zm9ybWF0X2Zyb21fbGVuZ3RoIChz dHJ1Y3QgZ2RiYXJjaAorQEAgLTc3Miw4ICs3NzIsOCBAQCBmbG9hdGZvcm1hdF9mcm9tX2xlbmd0 aCAoc3RydWN0IGdkYmFyY2gKICAgIGVsc2UKICAgICAgZm9ybWF0ID0gTlVMTDsKICAgIGlmIChm b3JtYXQgPT0gTlVMTCkKQEAgLTE2NjcsMTEgKzE2NjcsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAyMTUvZ2RiL2RvdWJsZXN0LmMKICAgIHJldHVybiBmb3JtYXQ7CiAgfQogIAotSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2R3YXJmMmxvYy5jCitJbmRleDogZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL2R3YXJmMmxvYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4y MDEzMDIxNS5vcmlnL2dkYi9kd2FyZjJsb2MuYwkyMDEzLTAyLTE1IDIyOjMxOjM3LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2R3YXJmMmxvYy5jCTIwMTMtMDIt MTUgMjI6NDA6MTguNTI1NjIyMDYxICswMTAwCi1AQCAtMTY3NywxOSArMTY3NywxOSBAQCBpbnNl cnRfYml0cyAodW5zaWduZWQgaW50IGRhdHVtLAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz Lm9yaWcvZ2RiL2R3YXJmMmxvYy5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDM4MjkyMjA0ICswMjAw CisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2R3YXJmMmxvYy5jCTIwMTMtMDgtMDIg MTY6NDI6MTEuMjE3NjA3NzAzICswMjAwCitAQCAtMTcxMywxOSArMTcxMywxOSBAQCBpbnNlcnRf Yml0cyAodW5zaWduZWQgaW50IGRhdHVtLAogICAgIEJJVFNfQklHX0VORElBTiBpcyB0YWtlbiBk aXJlY3RseSBmcm9tIGdkYmFyY2guICAqLwogIAogIHN0YXRpYyB2b2lkCkBAIC0xNjk3LDcgKzE2 OTcsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZHdhcmYybG9jLmMKICAKICAg IGRlc3RfYXZhaWwgPSA4IC0gZGVzdF9vZmZzZXRfYml0cyAlIDg7CiAgCi1AQCAtMTcyNywxMyAr MTcyNywxMyBAQCBzdGF0aWMgdm9pZAorQEAgLTE3NjMsMTMgKzE3NjMsMTMgQEAgc3RhdGljIHZv aWQKICByZWFkX3BpZWNlZF92YWx1ZSAoc3RydWN0IHZhbHVlICp2KQogIHsKICAgIGludCBpOwpA QCAtMTcxMSw5ICsxNzExLDkgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2R3YXJm MmxvYy5jCiAtICBzaXplX3QgdHlwZV9sZW47CiArICBVTE9OR0VTVCB0eXBlX2xlbjsKICAgIHNp emVfdCBidWZmZXJfc2l6ZSA9IDA7Ci0gICBjaGFyICpidWZmZXIgPSBOVUxMOworICAgZ2RiX2J5 dGUgKmJ1ZmZlciA9IE5VTEw7CiAgICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKLUBAIC0xNzYw LDggKzE3NjAsOCBAQCByZWFkX3BpZWNlZF92YWx1ZSAoc3RydWN0IHZhbHVlICp2KQorQEAgLTE3 OTYsOCArMTc5Niw4IEBAIHJlYWRfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnYpCiAgICBm b3IgKGkgPSAwOyBpIDwgYy0+bl9waWVjZXMgJiYgb2Zmc2V0IDwgdHlwZV9sZW47IGkrKykKICAg ICAgewogICAgICAgIHN0cnVjdCBkd2FyZl9leHByX3BpZWNlICpwID0gJmMtPnBpZWNlc1tpXTsK QEAgLTE3MjQsNyArMTcyNCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9kd2Fy ZjJsb2MuYwogICAgICAgIGNvbnN0IGdkYl9ieXRlICppbnRlcm1lZGlhdGVfYnVmZmVyOwogIAog ICAgICAgIC8qIENvbXB1dGUgc2l6ZSwgc291cmNlLCBhbmQgZGVzdGluYXRpb24gb2Zmc2V0cyBm b3IgY29weWluZywgaW4KLUBAIC0xOTEwLDEzICsxOTEwLDEzIEBAIHN0YXRpYyB2b2lkCitAQCAt MTk0NiwxMyArMTk0NiwxMyBAQCBzdGF0aWMgdm9pZAogIHdyaXRlX3BpZWNlZF92YWx1ZSAoc3Ry dWN0IHZhbHVlICp0bywgc3RydWN0IHZhbHVlICpmcm9tKQogIHsKICAgIGludCBpOwpAQCAtMTcz OCw5ICsxNzM4LDkgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2R3YXJmMmxvYy5j CiAtICBzaXplX3QgdHlwZV9sZW47CiArICBVTE9OR0VTVCB0eXBlX2xlbjsKICAgIHNpemVfdCBi dWZmZXJfc2l6ZSA9IDA7Ci0gICBjaGFyICpidWZmZXIgPSBOVUxMOworICAgZ2RiX2J5dGUgKmJ1 ZmZlciA9IE5VTEw7CiAgICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKLUBAIC0xOTQ0LDggKzE5 NDQsOCBAQCB3cml0ZV9waWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdG8sIHN0CitAQCAtMTk4 MCw4ICsxOTgwLDggQEAgd3JpdGVfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnRvLCBzdAog ICAgZm9yIChpID0gMDsgaSA8IGMtPm5fcGllY2VzICYmIG9mZnNldCA8IHR5cGVfbGVuOyBpKysp CiAgICAgIHsKICAgICAgICBzdHJ1Y3QgZHdhcmZfZXhwcl9waWVjZSAqcCA9ICZjLT5waWVjZXNb aV07CkBAIC0xNzUxLDcgKzE3NTEsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIv ZHdhcmYybG9jLmMKICAgICAgICBpbnQgbmVlZF9iaXR3aXNlOwogICAgICAgIGNvbnN0IGdkYl9i eXRlICpzb3VyY2VfYnVmZmVyOwogIAotQEAgLTIwNzQsOCArMjA3NCw4IEBAIHdyaXRlX3BpZWNl ZF92YWx1ZSAoc3RydWN0IHZhbHVlICp0bywgc3QKK0BAIC0yMTEwLDggKzIxMTAsOCBAQCB3cml0 ZV9waWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdG8sIHN0CiAgICAgaW1wbGljaXQgcG9pbnRl ci4gICovCiAgCiAgc3RhdGljIGludApAQCAtMTc2Miw3ICsxNzYyLDcgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL2R3YXJmMmxvYy5jCiAgCQkJIGVudW0gZHdhcmZfdmFsdWVfbG9j YXRpb24gY2hlY2tfZm9yKQogIHsKICAgIHN0cnVjdCBwaWVjZV9jbG9zdXJlICpjCi1AQCAtMjA5 MSw3ICsyMDkxLDcgQEAgY2hlY2tfcGllY2VkX3ZhbHVlX2JpdHMgKGNvbnN0IHN0cnVjdCB2YQor QEAgLTIxMjcsNyArMjEyNyw3IEBAIGNoZWNrX3BpZWNlZF92YWx1ZV9iaXRzIChjb25zdCBzdHJ1 Y3QgdmEKICAgIGZvciAoaSA9IDA7IGkgPCBjLT5uX3BpZWNlcyAmJiBiaXRfbGVuZ3RoID4gMDsg aSsrKQogICAgICB7CiAgICAgICAgc3RydWN0IGR3YXJmX2V4cHJfcGllY2UgKnAgPSAmYy0+cGll Y2VzW2ldOwpAQCAtMTc3MSw3ICsxNzcxLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL2R3YXJmMmxvYy5jCiAgCiAgICAgICAgaWYgKGJpdF9vZmZzZXQgPiAwKQogIAl7Ci1AQCAt MjEyOSw4ICsyMTI5LDggQEAgY2hlY2tfcGllY2VkX3ZhbHVlX2JpdHMgKGNvbnN0IHN0cnVjdCB2 YQorQEAgLTIxNjUsOCArMjE2NSw4IEBAIGNoZWNrX3BpZWNlZF92YWx1ZV9iaXRzIChjb25zdCBz dHJ1Y3QgdmEKICB9CiAgCiAgc3RhdGljIGludApAQCAtMTc4Miw3ICsxNzgyLDcgQEAgSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2R3YXJmMmxvYy5jCiAgewogICAgcmV0dXJuIGNoZWNr X3BpZWNlZF92YWx1ZV9iaXRzICh2YWx1ZSwgYml0X29mZnNldCwgYml0X2xlbmd0aCwKICAJCQkJ ICBEV0FSRl9WQUxVRV9NRU1PUlkpOwotQEAgLTIxNDgsOCArMjE0OCw4IEBAIGNoZWNrX3BpZWNl ZF92YWx1ZV9pbnZhbGlkIChjb25zdCBzdHJ1Y3QKK0BAIC0yMTg0LDggKzIxODQsOCBAQCBjaGVj a19waWVjZWRfdmFsdWVfaW52YWxpZCAoY29uc3Qgc3RydWN0CiAgICAgYSBzeW50aGV0aWMgcG9p bnRlci4gICovCiAgCiAgc3RhdGljIGludApAQCAtMTc5Myw3ICsxNzkzLDcgQEAgSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL2R3YXJmMmxvYy5jCiAgewogICAgcmV0dXJuIGNoZWNrX3Bp ZWNlZF92YWx1ZV9iaXRzICh2YWx1ZSwgYml0X29mZnNldCwgYml0X2xlbmd0aCwKICAJCQkJICBE V0FSRl9WQUxVRV9JTVBMSUNJVF9QT0lOVEVSKTsKLUBAIC0yMTc0LDkgKzIxNzQsMTAgQEAgaW5k aXJlY3RfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbAorQEAgLTIyMTAsOSArMjIxMCwx MCBAQCBpbmRpcmVjdF9waWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsCiAgICBzdHJ1Y3Qg dHlwZSAqdHlwZTsKICAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKICAgIHN0cnVjdCBkd2Fy ZjJfbG9jZXhwcl9iYXRvbiBiYXRvbjsKQEAgLTE4MDYsNyArMTgwNiw3IEBAIEluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi9kd2FyZjJsb2MuYwogIAogICAgdHlwZSA9IGNoZWNrX3R5cGVk ZWYgKHZhbHVlX3R5cGUgKHZhbHVlKSk7CiAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBF X0NPREVfUFRSKQotQEAgLTIxOTAsNyArMjE5MSw3IEBAIGluZGlyZWN0X3BpZWNlZF92YWx1ZSAo c3RydWN0IHZhbHVlICp2YWwKK0BAIC0yMjI2LDcgKzIyMjcsNyBAQCBpbmRpcmVjdF9waWVjZWRf dmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsCiAgICBmb3IgKGkgPSAwOyBpIDwgYy0+bl9waWVjZXMg JiYgYml0X2xlbmd0aCA+IDA7IGkrKykKICAgICAgewogICAgICAgIHN0cnVjdCBkd2FyZl9leHBy X3BpZWNlICpwID0gJmMtPnBpZWNlc1tpXTsKQEAgLTE4MTUsNyArMTgxNSw3IEBAIEluZGV4OiBn ZGItNy41LjUwLjIwMTMwMjE1L2dkYi9kd2FyZjJsb2MuYwogIAogICAgICAgIGlmIChiaXRfb2Zm c2V0ID4gMCkKICAJewotQEAgLTI0MDYsNyArMjQwNyw3IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2Nf ZGVzY19mdWxsIChzdHJ1Y3QgdHkKK0BAIC0yNDY3LDcgKzI0NjgsNyBAQCBkd2FyZjJfZXZhbHVh dGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5CiAgCSAgICBzdHJ1Y3QgdmFsdWUgKnZhbHVlID0g ZHdhcmZfZXhwcl9mZXRjaCAoY3R4LCAwKTsKICAJICAgIGdkYl9ieXRlICpjb250ZW50czsKICAJ ICAgIGNvbnN0IGdkYl9ieXRlICp2YWxfYnl0ZXM7CkBAIC0xODI0LDExICsxODI0LDExIEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9kd2FyZjJsb2MuYwogIAogIAkgICAgaWYgKGJ5 dGVfb2Zmc2V0ICsgVFlQRV9MRU5HVEggKHR5cGUpID4gbikKICAJICAgICAgaW52YWxpZF9zeW50 aGV0aWNfcG9pbnRlciAoKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9kd2FyZjJy ZWFkLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZHdhcmYycmVhZC5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJ MjAxMy0wMi0xNSAyMjo0MDoxMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi9kd2FyZjJyZWFkLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41Mjg2MjIwNjcgKzAxMDAK LUBAIC0xMjI3LDEyICsxMjI3LDEyIEBAIGR3YXJmMl9jb21wbGV4X2xvY2F0aW9uX2V4cHJfY29t cGxhaW50ICgKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9kd2FyZjJyZWFk LmMJMjAxMy0wOC0wMiAxNjozODoyNi40NDEyOTIyMDggKzAyMDAKKysrKyBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy9nZGIvZHdhcmYycmVhZC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzU4MzAwNzM1 ICswMjAwCitAQCAtMTI1OCwxMiArMTI1OCwxMiBAQCBkd2FyZjJfY29tcGxleF9sb2NhdGlvbl9l eHByX2NvbXBsYWludCAoCiAgfQogIAogIHN0YXRpYyB2b2lkCkBAIC0xODQ1LDcgKzE4NDUsNyBA QCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZHdhcmYycmVhZC5jCiAgfQogIAogIHN0 YXRpYyB2b2lkCi1AQCAtMTA2NDEsOCArMTA2NDEsOCBAQCBkd2FyZjJfYWRkX2ZpZWxkIChzdHJ1 Y3QgZmllbGRfaW5mbyAqZmlwCitAQCAtMTEyMTUsOCArMTEyMTUsOCBAQCBkd2FyZjJfYWRkX2Zp ZWxkIChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwCiAgCSAgICAgICAgIG9iamVjdCwgYW5kIHRoZW4g c3VidHJhY3Qgb2ZmIHRoZSBudW1iZXIgb2YgYml0cyBvZgogIAkgICAgICAgICB0aGUgZmllbGQg aXRzZWxmLiAgVGhlIHJlc3VsdCBpcyB0aGUgYml0IG9mZnNldCBvZgogIAkgICAgICAgICB0aGUg TFNCIG9mIHRoZSBmaWVsZC4gICovCkBAIC0xODU2LDEwICsxODU2LDEwIEBAIEluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi9kd2FyZjJyZWFkLmMKICAKICAJICAgICAgYXR0ciA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX2J5dGVfc2l6ZSwgY3UpOwogIAkgICAgICBpZiAoYXR0cikKLUlu ZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9ldmFsLmMKK0luZGV4OiBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy9nZGIvZXZhbC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIx NS5vcmlnL2dkYi9ldmFsLmMJMjAxMy0wMi0xNSAyMjozMTozNy4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9ldmFsLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41Mjk2 MjIwNzAgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9ldmFsLmMJ MjAxMy0wOC0wMiAxNjozODoyNi40NDMyOTIyMTEgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy9nZGIvZXZhbC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzU5MzAwNzM2ICswMjAwCiBA QCAtMjk0LDcgKzI5NCw4IEBAIGV2YWx1YXRlX3N0cnVjdF90dXBsZSAoc3RydWN0IHZhbHVlICpz dHIKICAgIHdoaWxlICgtLW5hcmdzID49IDApCiAgICAgIHsKQEAgLTE4NzksNyArMTg3OSw3IEBA IEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9ldmFsLmMKICAKICAgIGlmIChleHAtPmVs dHNbKnBvc10ub3Bjb2RlID09IEJJTk9QX0NPTU1BKQogICAgICB7Ci1AQCAtNzA5LDExICs3MTAs MTEgQEAgYmlub3BfcHJvbW90ZSAoY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZgorQEAgLTcxMywx MSArNzE0LDExIEBAIGJpbm9wX3Byb21vdGUgKGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWYKICAg ICAgLyogRklYTUU6IEFsc28gbWl4ZWQgaW50ZWdyYWwvYm9vbGVhbnMsIHdpdGggcmVzdWx0IGFu IGludGVnZXIuICAqLwogICAgICB7CiAgICAgICAgY29uc3Qgc3RydWN0IGJ1aWx0aW5fdHlwZSAq YnVpbHRpbiA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCk7CkBAIC0xODk0LDcgKzE4OTQsNyBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZXZhbC5jCiAgICAgICAgaW50IHVuc2lnbmVk X29wZXJhdGlvbjsKICAKICAgICAgICAvKiBEZXRlcm1pbmUgdHlwZSBsZW5ndGggYW5kIHNpZ25l ZG5lc3MgYWZ0ZXIgcHJvbW90aW9uIGZvcgotQEAgLTg5Niw3ICs4OTcsNyBAQCBldmFsdWF0ZV9z dWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICplCitAQCAtOTAwLDcgKzkwMSw3IEBAIGV2YWx1 YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmUKICAgIHN0cnVjdCB2YWx1ZSAqKmFy Z3ZlYzsKICAgIGludCBjb2RlOwogICAgaW50IGl4OwpAQCAtMTkwMyw3ICsxOTAzLDcgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2V2YWwuYwogICAgc3RydWN0IHR5cGUgKiphcmdf dHlwZXM7CiAgICBpbnQgc2F2ZV9wb3MxOwogICAgc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24gPSBO VUxMOwotQEAgLTEwNzYsNyArMTA3Nyw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3Ry dWN0IHR5cGUgKmUKK0BAIC0xMDgwLDcgKzEwODEsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRh cmQgKHN0cnVjdCB0eXBlICplCiAgCSAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGUgPSBUWVBFX0lO REVYX1RZUEUgKHR5cGUpOwogIAkgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGUgPSBUWVBFX1RB UkdFVF9UWVBFICh0eXBlKTsKICAJICBzdHJ1Y3QgdmFsdWUgKmFycmF5ID0gYWxsb2NhdGVfdmFs dWUgKGV4cGVjdF90eXBlKTsKQEAgLTE5MTIsNyArMTkxMiw3IEBAIEluZGV4OiBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi9ldmFsLmMKICAJICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZCwg aW5kZXg7CiAgCiAgCSAgaWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3df Ym91bmQsICZoaWdoX2JvdW5kKSA8IDApCi1AQCAtMjA3OCw3ICsyMDc5LDggQEAgZXZhbHVhdGVf c3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZQorQEAgLTIwNzUsNyArMjA3Niw4IEBAIGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmUKICAgICAgICB7CiAgICAgICAg ICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IHZhbHVlX3R5cGUgKGFyZzEpOwogICAgICAgICAgc3RydWN0 IHR5cGUgKnJlYWxfdHlwZTsKQEAgLTE5MjIsMTAgKzE5MjIsMTAgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL2V2YWwuYwogIAlzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRz OwogIAogIAlnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7Ci1JbmRleDogZ2RiLTcuNS41 MC4yMDEzMDIxNS9nZGIvZi1sYW5nLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9n ZGIvZi1sYW5nLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2Ri L2YtbGFuZy5jCTIwMTMtMDEtMDEgMDc6MzI6NDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvZi1sYW5nLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41Mjk2MjIwNzAg KzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9mLWxhbmcuYwkyMDEz LTA4LTAyIDE2OjM4OjI2LjQ0MzI5MjIxMSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi9mLWxhbmcuYwkyMDEzLTA4LTAyIDE2OjM4OjMyLjM1OTMwMDczNiArMDIwMAogQEAg LTEwMyw3ICsxMDMsNyBAQCBmX3ByaW50Y2hhciAoaW50IGMsIHN0cnVjdCB0eXBlICp0eXBlLCBz CiAgCiAgc3RhdGljIHZvaWQKQEAgLTE5MzUsMTAgKzE5MzUsMTAgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL2YtbGFuZy5jCiAgCSAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRf b3B0aW9ucyAqb3B0aW9ucykKICB7CiAgICBjb25zdCBjaGFyICp0eXBlX2VuY29kaW5nID0gZl9n ZXRfZW5jb2RpbmcgKHR5cGUpOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2YtbGFu Zy5oCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2YtbGFuZy5oCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9mLWxhbmcuaAkyMDEzLTAyLTE1 IDIyOjMxOjM3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2Yt bGFuZy5oCTIwMTMtMDItMTUgMjI6NDA6MTguNTI5NjIyMDcwICswMTAwCistLS0gZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvZi1sYW5nLmgJMjAxMy0wOC0wMiAxNjozODoyNi40NDMy OTIyMTEgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZi1sYW5nLmgJMjAx My0wOC0wMiAxNjozODozMi4zNTkzMDA3MzYgKzAyMDAKIEBAIC0zMyw3ICszMyw3IEBAIGV4dGVy biBjb25zdCBjaGFyICpmX29iamVjdF9hZGRyZXNzX2RhdGEKICAgIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7CiAgZXh0ZXJuIHZvaWQgZl9vYmplY3RfYWRkcmVz c19kYXRhX3ZhbGlkX29yX2Vycm9yIChzdHJ1Y3QgdHlwZSAqdHlwZSk7CkBAIC0xOTQ4LDEwICsx OTQ4LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9mLWxhbmcuaAogIAkJCSBz dHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCiAgCQkJIGNvbnN0IHN0cnVjdCB2YWx1ZSAqLAogIAkJCSBj b25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKLUluZGV4OiBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi9mLXZhbHByaW50LmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9n ZGIvZi12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmln L2dkYi9mLXZhbHByaW50LmMJMjAxMy0wMi0xNSAyMjozMTozNy4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9mLXZhbHByaW50LmMJMjAxMy0wMi0xNSAyMjo0MDox OC41Mjk2MjIwNzAgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9m LXZhbHByaW50LmMJMjAxMy0wOC0wMiAxNjozODoyNi40NDQyOTIyMTIgKzAyMDAKKysrKyBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZi12YWxwcmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIu MzU5MzAwNzM2ICswMjAwCiBAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdm9pZCBmNzdfY3JlYXRl X2FycmF5cHJpbnRfb2Zmc2V0CiAgCQkJCQkgICAgICBzdHJ1Y3QgdWlfZmlsZSAqKTsKICBzdGF0 aWMgdm9pZCBmNzdfZ2V0X2R5bmFtaWNfbGVuZ3RoX29mX2FnZ3JlZ2F0ZSAoc3RydWN0IHR5cGUg Kik7CkBAIC0yMDE2LDExICsyMDE2LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9mLXZhbHByaW50LmMKICAKICAgICAgICAgICAgdmFsX3ByaW50IChUWVBFX0ZJRUxEX1RZUEUg KHR5cGUsIGluZGV4KSwgdmFsYWRkciwKICAJCSAgICAgZW1iZWRkZWRfb2Zmc2V0ICsgb2Zmc2V0 LAotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2ZpbmR2YXIuYworSW5kZXg6IGdkYi03 LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9maW5kdmFyLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2ZpbmR2YXIuYwkyMDEzLTAyLTE1IDIyOjMxOjM3LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2ZpbmR2YXIuYwkyMDEzLTAy LTE1IDIyOjQwOjE4LjUyOTYyMjA3MCArMDEwMAotQEAgLTY0NCw3ICs2NDQsNyBAQCBkZWZhdWx0 X3ZhbHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlCistLS0gZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMub3JpZy9nZGIvZmluZHZhci5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDQ0MjkyMjEyICsw MjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2ZpbmR2YXIuYwkyMDEzLTA4LTAy IDE2OjM4OjMyLjM2MDMwMDczOCArMDIwMAorQEAgLTY1Miw3ICs2NTIsNyBAQCBkZWZhdWx0X3Zh bHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlCiAgCQkJICAgICBzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWUpCiAgewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJj aCAoZnJhbWUpOwpAQCAtMjAyOSw3ICsyMDI5LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAy MTUvZ2RiL2ZpbmR2YXIuYwogICAgc3RydWN0IHZhbHVlICp2YWx1ZSA9IGFsbG9jYXRlX3ZhbHVl ICh0eXBlKTsKICAKICAgIFZBTFVFX0xWQUwgKHZhbHVlKSA9IGx2YWxfcmVnaXN0ZXI7Ci1AQCAt Njc3LDEwICs2NzcsMTAgQEAgdm9pZAorQEAgLTY4NSwxMCArNjg1LDEwIEBAIHZvaWQKICByZWFk X2ZyYW1lX3JlZ2lzdGVyX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3QgZnJhbWVf aW5mbyAqZnJhbWUpCiAgewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVf YXJjaCAoZnJhbWUpOwpAQCAtMjA0Myw3ICsyMDQzLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAyMTUvZ2RiL2ZpbmR2YXIuYwogIAogICAgZ2RiX2Fzc2VydCAoVkFMVUVfTFZBTCAodmFsdWUp ID09IGx2YWxfcmVnaXN0ZXIpOwogIAotQEAgLTY5NSw3ICs2OTUsNyBAQCByZWFkX2ZyYW1lX3Jl Z2lzdGVyX3ZhbHVlIChzdHJ1Y3QgdmFsdWUKK0BAIC03MDMsNyArNzAzLDcgQEAgcmVhZF9mcmFt ZV9yZWdpc3Rlcl92YWx1ZSAoc3RydWN0IHZhbHVlCiAgICB3aGlsZSAobGVuID4gMCkKICAgICAg ewogICAgICAgIHN0cnVjdCB2YWx1ZSAqcmVndmFsID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3ZhbHVl IChmcmFtZSwgcmVnbnVtKTsKQEAgLTIwNTIsMTEgKzIwNTIsMTEgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL2ZpbmR2YXIuYwogIAogICAgICAgIGlmICh2YWx1ZV9vcHRpbWl6ZWRf b3V0IChyZWd2YWwpKQogIAl7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZnJhbWUu YworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9mcmFtZS5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9mcmFtZS5jCTIwMTMtMDEtMDEgMDc6 MzI6NDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZnJhbWUu YwkyMDEzLTAyLTE1IDIyOjQwOjE4LjUzMDYyMjA3MyArMDEwMAotQEAgLTExMTMsNyArMTExMyw3 IEBAIGRlcHJlY2F0ZWRfZnJhbWVfcmVnaXN0ZXJfcmVhZCAoc3RydWN0IGYKKy0tLSBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9mcmFtZS5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDQ1 MjkyMjE0ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2ZyYW1lLmMJMjAx My0wOC0wMiAxNjozODozMi4zNjAzMDA3MzggKzAyMDAKK0BAIC0xMTgyLDcgKzExODIsNyBAQCBk ZXByZWNhdGVkX2ZyYW1lX3JlZ2lzdGVyX3JlYWQgKHN0cnVjdCBmCiAgCiAgaW50CiAgZ2V0X2Zy YW1lX3JlZ2lzdGVyX2J5dGVzIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIGludCByZWdudW0s CkBAIC0yMDY1LDcgKzIwNjUsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZnJh bWUuYwogIAkJCSAgaW50ICpvcHRpbWl6ZWRwLCBpbnQgKnVuYXZhaWxhYmxlcCkKICB7CiAgICBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7Ci1AQCAtMTE0 Miw3ICsxMTQyLDcgQEAgZ2V0X2ZyYW1lX3JlZ2lzdGVyX2J5dGVzIChzdHJ1Y3QgZnJhbWVfaQor QEAgLTEyMTEsNyArMTIxMSw3IEBAIGdldF9mcmFtZV9yZWdpc3Rlcl9ieXRlcyAoc3RydWN0IGZy YW1lX2kKICAgICAgfQogICAgaWYgKGxlbiA+IG1heHNpemUpCiAgICAgIGVycm9yIChfKCJCYWQg ZGVidWcgaW5mb3JtYXRpb24gZGV0ZWN0ZWQ6ICIKQEAgLTIwNzQsMTAgKzIwNzQsMTAgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2ZyYW1lLmMKICAKICAgIC8qIENvcHkgdGhlIGRh dGEuICAqLwogICAgd2hpbGUgKGxlbiA+IDApCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9n ZGIvZnJhbWUuaAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9mcmFtZS5oCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9mcmFtZS5oCTIwMTMt MDItMDEgMjA6NTg6MDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9n ZGIvZnJhbWUuaAkyMDEzLTAyLTE1IDIyOjQwOjE4LjUzMDYyMjA3MyArMDEwMAorLS0tIGdkYi03 LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2ZyYW1lLmgJMjAxMy0wOC0wMiAxNjozODoyNi40 NDUyOTIyMTQgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZnJhbWUuaAky MDEzLTA4LTAyIDE2OjM4OjMyLjM2MDMwMDczOCArMDIwMAogQEAgLTUzMiw3ICs1MzIsNyBAQCBl eHRlcm4gdm9pZCBwdXRfZnJhbWVfcmVnaXN0ZXIgKHN0cnVjdCBmCiAgICAgY29udGVudHMgYXJl IG9wdGltaXplZCBvdXQgb3IgdW5hdmFpbGFibGUsIHNldCAqT1BUSU1JWkVEUCwKICAgICAqVU5B VkFJTEFCTEVQIGFjY29yZGluZ2x5LiAgKi8KQEAgLTIwODcsMTEgKzIwODcsMTEgQEAgSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2ZyYW1lLmgKICAJCQkJICAgICBnZGJfYnl0ZSAqbXlh ZGRyLAogIAkJCQkgICAgIGludCAqb3B0aW1pemVkcCwgaW50ICp1bmF2YWlsYWJsZXApOwogIAot SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2dkYnR5cGVzLmMKK0luZGV4OiBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy9nZGIvZ2RidHlwZXMuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu NTAuMjAxMzAyMTUub3JpZy9nZGIvZ2RidHlwZXMuYwkyMDEzLTAyLTE1IDIyOjMxOjM3LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2dkYnR5cGVzLmMJMjAxMy0w Mi0xNSAyMjo0MDozOS40OTY2NDgwNTIgKzAxMDAKLUBAIC0yMDkwLDcgKzIwOTAsNyBAQCBhbGxv Y2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwCistLS0gZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMub3JpZy9nZGIvZ2RidHlwZXMuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ0NjI5MjIx NSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9nZGJ0eXBlcy5jCTIwMTMt MDgtMDIgMTY6Mzg6MzIuMzYxMzAwNzM5ICswMjAwCitAQCAtMjA5MSw3ICsyMDkxLDcgQEAgYWxs b2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKnR5cAogICAgIGxlYXN0IGFzIGxvbmcg YXMgT0JKRklMRS4gICovCiAgCiAgc3RydWN0IHR5cGUgKgpAQCAtMjEwMCw3ICsyMTAwLDcgQEAg SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2dkYnR5cGVzLmMKICAJICAgY29uc3QgY2hh ciAqbmFtZSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCiAgewogICAgc3RydWN0IHR5cGUgKnR5 cGU7Ci1AQCAtMjMyMSw4ICsyMzIxLDggQEAgaXNfcHVibGljX2FuY2VzdG9yIChzdHJ1Y3QgdHlw ZSAqYmFzZSwgcworQEAgLTIzMjIsOCArMjMyMiw4IEBAIGlzX3B1YmxpY19hbmNlc3RvciAoc3Ry dWN0IHR5cGUgKmJhc2UsIHMKICAKICBzdGF0aWMgaW50CiAgaXNfdW5pcXVlX2FuY2VzdG9yX3dv cmtlciAoc3RydWN0IHR5cGUgKmJhc2UsIHN0cnVjdCB0eXBlICpkY2xhc3MsCkBAIC0yMTExLDcg KzIxMTEsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZ2RidHlwZXMuYwogIAkJ CSAgIENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdmFsdWUgKnZhbCkKICB7CiAgICBpbnQgaSwg Y291bnQgPSAwOwotQEAgLTIzMzMsNyArMjMzMyw3IEBAIGlzX3VuaXF1ZV9hbmNlc3Rvcl93b3Jr ZXIgKHN0cnVjdCB0eXBlICoKK0BAIC0yMzM0LDcgKzIzMzQsNyBAQCBpc191bmlxdWVfYW5jZXN0 b3Jfd29ya2VyIChzdHJ1Y3QgdHlwZSAqCiAgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9OX0JBU0VD TEFTU0VTIChkY2xhc3MpICYmIGNvdW50IDwgMjsgKytpKQogICAgICB7CiAgICAgICAgc3RydWN0 IHR5cGUgKml0ZXI7CkBAIC0yMTIwLDcgKzIxMjAsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvZ2RidHlwZXMuYwogIAogICAgICAgIGl0ZXIgPSBjaGVja190eXBlZGVmIChUWVBF X0JBU0VDTEFTUyAoZGNsYXNzLCBpKSk7CiAgCi1AQCAtMjM3NCw3ICsyMzc0LDcgQEAgaXNfdW5p cXVlX2FuY2VzdG9yX3dvcmtlciAoc3RydWN0IHR5cGUgKgorQEAgLTIzNzUsNyArMjM3NSw3IEBA IGlzX3VuaXF1ZV9hbmNlc3Rvcl93b3JrZXIgKHN0cnVjdCB0eXBlICoKICBpbnQKICBpc191bmlx dWVfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICpiYXNlLCBzdHJ1Y3QgdmFsdWUgKnZhbCkKICB7CkBA IC0yMTI5LDcgKzIxMjksNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZ2RidHlw ZXMuYwogIAogICAgcmV0dXJuIGlzX3VuaXF1ZV9hbmNlc3Rvcl93b3JrZXIgKGJhc2UsIHZhbHVl X3R5cGUgKHZhbCksICZvZmZzZXQsCiAgCQkJCSAgICB2YWx1ZV9jb250ZW50c19mb3JfcHJpbnRp bmcgKHZhbCksCi1AQCAtMzI4Myw3ICszMjgzLDcgQEAgcmVjdXJzaXZlX2R1bXBfdHlwZSAoc3Ry dWN0IHR5cGUgKnR5cGUsCitAQCAtMzMwMyw3ICszMzAzLDcgQEAgcmVjdXJzaXZlX2R1bXBfdHlw ZSAoc3RydWN0IHR5cGUgKnR5cGUsCiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIHB1dHNfZmls dGVyZWQgKCJcbiIpOwpAQCAtMjEzOCw3ICsyMTM4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAyMTUvZ2RiL2dkYnR5cGVzLmMKICAgIGlmIChUWVBFX09CSkZJTEVfT1dORUQgKHR5cGUpKQog ICAgICB7CiAgICAgICAgcHJpbnRmaV9maWx0ZXJlZCAoc3BhY2VzLCAib2JqZmlsZSAiKTsKLUBA IC0zNDA3LDggKzM0MDcsOCBAQCByZWN1cnNpdmVfZHVtcF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlw ZSwKK0BAIC0zNDI3LDggKzM0MjcsOCBAQCByZWN1cnNpdmVfZHVtcF90eXBlIChzdHJ1Y3QgdHlw ZSAqdHlwZSwKICAJCQkgIGlkeCwgcGxvbmdlc3QgKFRZUEVfRklFTERfRU5VTVZBTCAodHlwZSwg aWR4KSkpOwogICAgICAgIGVsc2UKICAJcHJpbnRmaV9maWx0ZXJlZCAoc3BhY2VzICsgMiwKQEAg LTIxNDksNyArMjE0OSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nZGJ0eXBl cy5jCiAgCQkJICBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUsIGlkeCkpOwogICAgICAgIGdkYl9w cmludF9ob3N0X2FkZHJlc3MgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaWR4KSwgZ2RiX3N0ZG91 dCk7CiAgICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiIG5hbWUgJyVzJyAoIiwKLUBAIC0zOTIyLDcg KzM5MjIsNyBAQCBjb3B5X3R5cGUgKGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTM5NDIs NyArMzk0Miw3IEBAIGNvcHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpCiAgCiAgc3Ry dWN0IHR5cGUgKgogIGFyY2hfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCkBAIC0yMTU4 LDEwICsyMTU4LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nZGJ0eXBlcy5j CiAgewogICAgc3RydWN0IHR5cGUgKnR5cGU7CiAgCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvZ2RidHlwZXMuaAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9nZGJ0 eXBlcy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9nZGJ0 eXBlcy5oCTIwMTMtMDItMTUgMjI6Mzc6MDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41 MC4yMDEzMDIxNS9nZGIvZ2RidHlwZXMuaAkyMDEzLTAyLTE1IDIyOjQyOjMzLjg0Njc4Nzk1OSAr MDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAx My0wOC0wMiAxNjozODoyNi40NDcyOTIyMTcgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy9nZGIvZ2RidHlwZXMuaAkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2MTMwMDczOSArMDIwMAog QEAgLTYwNiw3ICs2MDYsNyBAQCBzdHJ1Y3QgbWFpbl90eXBlCiAgCSAgIGdkYmFyY2hfYml0c19i aWdfZW5kaWFuPTAgdGFyZ2V0cywgaXQgaXMgdGhlIGJpdCBvZmZzZXQgdG8KICAJICAgdGhlIExT Qi4gICovCkBAIC0yMTk1LDEwICsyMTk1LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1 L2dkYi9nZGJ0eXBlcy5oCiAgZXh0ZXJuIHN0cnVjdCB0eXBlICphcmNoX2ludGVnZXJfdHlwZSAo c3RydWN0IGdkYmFyY2ggKiwgaW50LCBpbnQsIGNoYXIgKik7CiAgZXh0ZXJuIHN0cnVjdCB0eXBl ICphcmNoX2NoYXJhY3Rlcl90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqLCBpbnQsIGludCwgY2hhciAq KTsKICBleHRlcm4gc3RydWN0IHR5cGUgKmFyY2hfYm9vbGVhbl90eXBlIChzdHJ1Y3QgZ2RiYXJj aCAqLCBpbnQsIGludCwgY2hhciAqKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9n bnUtdjItYWJpLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZ251LXYyLWFi aS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9nbnUtdjIt YWJpLmMJMjAxMy0wMS0yMSAxODoyOTozOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi9nbnUtdjItYWJpLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41MzI2MjIwNzcg KzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9nbnUtdjItYWJpLmMJ MjAxMy0wOC0wMiAxNjozODoyNi40NDcyOTIyMTcgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy9nZGIvZ251LXYyLWFiaS5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzYyMzAwNzQwICsw MjAwCiBAQCAtODUsNyArODUsNyBAQCBnbnV2Ml9pc19vcGVyYXRvcl9uYW1lIChjb25zdCBjaGFy ICpuYW1lCiAgICAgVFlQRSBpcyB0aGUgdHlwZSBpbiB3aGljaCBGIGlzIGxvY2F0ZWQuICAqLwog IHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAtMjI1MCwxMSArMjI1MCwxMSBAQCBJbmRleDogZ2Ri LTcuNS41MC4yMDEzMDIxNS9nZGIvZ251LXYyLWFiaS5jCiAgCSAgICBnbnV2Ml9iYXNlY2xhc3Nf b2Zmc2V0ICh0eXBlLCBpLCB2YWxhZGRyLAogIAkJCQkgICAgZW1iZWRkZWRfb2Zmc2V0LCBhZGRy ZXNzLCB2YWwpOwogIAotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2dudS12My1hYmku YworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9nbnUtdjMtYWJpLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2dudS12My1hYmkuYwkyMDEz LTAxLTMxIDE5OjM3OjM3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL2dudS12My1hYmkuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjUzMjYyMjA3NyArMDEwMAotQEAg LTEwNiw3ICsxMDYsNyBAQCBidWlsZF9nZGJfdnRhYmxlX3R5cGUgKHN0cnVjdCBnZGJhcmNoICph CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvZ251LXYzLWFiaS5jCTIwMTMt MDgtMDIgMTY6Mzg6MjYuNDQ4MjkyMjE4ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMvZ2RiL2dudS12My1hYmkuYwkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2MjMwMDc0MCArMDIwMAor QEAgLTExMiw3ICsxMTIsNyBAQCBidWlsZF9nZGJfdnRhYmxlX3R5cGUgKHN0cnVjdCBnZGJhcmNo ICphCiAgewogICAgc3RydWN0IHR5cGUgKnQ7CiAgICBzdHJ1Y3QgZmllbGQgKmZpZWxkX2xpc3Qs ICpmaWVsZDsKQEAgLTIyNjMsNyArMjI2Myw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1 L2dkYi9nbnUtdjMtYWJpLmMKICAKICAgIHN0cnVjdCB0eXBlICp2b2lkX3B0cl90eXBlCiAgICAg ID0gYnVpbHRpbl90eXBlIChhcmNoKS0+YnVpbHRpbl9kYXRhX3B0cjsKLUBAIC0xODIsNyArMTgy LDcgQEAgdnRhYmxlX3B0cmRpZmZfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYgorQEAgLTE4OCw3 ICsxODgsNyBAQCB2dGFibGVfcHRyZGlmZl90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCiAgLyog UmV0dXJuIHRoZSBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGltYWdpbmFyeSBgc3RydWN0 CiAgICAgZ2RiX2dudV92M19hYmlfdnRhYmxlJyBvYmplY3QgdG8gdGhlIHZ0YWJsZSdzICJhZGRy ZXNzIHBvaW50IgogICAgIChpLmUuLCB3aGVyZSBvYmplY3RzJyB2aXJ0dWFsIHRhYmxlIHBvaW50 ZXJzIHBvaW50KS4gICovCkBAIC0yMjcyLDcgKzIyNzIsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDIxNS9nZGIvZ251LXYzLWFiaS5jCiAgdnRhYmxlX2FkZHJlc3NfcG9pbnRfb2Zmc2V0IChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKICB7CiAgICBzdHJ1Y3QgdHlwZSAqdnRhYmxlX3R5cGUg PSBnZGJhcmNoX2RhdGEgKGdkYmFyY2gsIHZ0YWJsZV90eXBlX2dkYmFyY2hfZGF0YSk7Ci1AQCAt MjczLDcgKzI3Myw3IEBAIGdudXYzX2dldF92dGFibGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmMK K0BAIC0yNzksNyArMjc5LDcgQEAgZ251djNfZ2V0X3Z0YWJsZSAoc3RydWN0IGdkYmFyY2ggKmdk YmFyYwogIAogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqCiAgZ251djNfcnR0aV90eXBlIChzdHJ1Y3Qg dmFsdWUgKnZhbHVlLApAQCAtMjI4MSw3ICsyMjgxLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAyMTUvZ2RiL2dudS12My1hYmkuYwogIHsKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOwog ICAgc3RydWN0IHR5cGUgKnZhbHVlc190eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAo dmFsdWUpKTsKLUBAIC0zODUsNyArMzg1LDcgQEAgZ251djNfZ2V0X3ZpcnR1YWxfZm4gKHN0cnVj dCBnZGJhcmNoICpnZAorQEAgLTQwNCw3ICs0MDQsNyBAQCBnbnV2M19nZXRfdmlydHVhbF9mbiAo c3RydWN0IGdkYmFyY2ggKmdkCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCiAgZ251djNfdmlydHVh bF9mbl9maWVsZCAoc3RydWN0IHZhbHVlICoqdmFsdWVfcCwKICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgZm5fZmllbGQgKmYsIGludCBqLApAQCAtMjI5MCw3ICsyMjkwLDcgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2dudS12My1hYmkuYwogIHsKICAgIHN0cnVjdCB0 eXBlICp2YWx1ZXNfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKCp2YWx1ZV9wKSk7 CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKLUBAIC00MTUsMTYgKzQxNSwxNiBAQCBnbnV2 M192aXJ0dWFsX2ZuX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKip2CitAQCAtNDM0LDE2ICs0MzQsMTYg QEAgZ251djNfdmlydHVhbF9mbl9maWVsZCAoc3RydWN0IHZhbHVlICoqdgogIAogICAgIC0xIGlz IHJldHVybmVkIG9uIGVycm9yLiAgKi8KICAKQEAgLTIzMTAsNyArMjMxMCw3IEBAIEluZGV4OiBn ZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nbnUtdjMtYWJpLmMKICAKICAgIC8qIERldGVybWluZSBh cmNoaXRlY3R1cmUuICAqLwogICAgZ2RiYXJjaCA9IGdldF90eXBlX2FyY2ggKHR5cGUpOwotQEAg LTQ0OCw3ICs0NDgsNyBAQCBnbnV2M19iYXNlY2xhc3Nfb2Zmc2V0IChzdHJ1Y3QgdHlwZSAqdHlw CitAQCAtNDY3LDcgKzQ2Nyw3IEBAIGdudXYzX2Jhc2VjbGFzc19vZmZzZXQgKHN0cnVjdCB0eXBl ICp0eXAKICAgIGN1cl9iYXNlX29mZnNldCA9IGN1cl9iYXNlX29mZnNldCArIHZ0YWJsZV9hZGRy ZXNzX3BvaW50X29mZnNldCAoZ2RiYXJjaCk7CiAgICBpZiAoKC0gY3VyX2Jhc2Vfb2Zmc2V0KSAl IFRZUEVfTEVOR1RIIChwdHJfdHlwZSkgIT0gMCkKICAgICAgZXJyb3IgKF8oIk1pc2FsaWduZWQg dmJhc2Ugb2Zmc2V0LiIpKTsKQEAgLTIzMTksNyArMjMxOSw3IEBAIEluZGV4OiBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi9nbnUtdjMtYWJpLmMKICAKICAgIHZ0YWJsZSA9IGdudXYzX2dldF92dGFi bGUgKGdkYmFyY2gsIHR5cGUsIGFkZHJlc3MgKyBlbWJlZGRlZF9vZmZzZXQpOwogICAgZ2RiX2Fz c2VydCAodnRhYmxlICE9IE5VTEwpOwotQEAgLTQ5Miw3ICs0OTIsNyBAQCBnbnV2M19maW5kX21l dGhvZF9pbiAoc3RydWN0IHR5cGUgKmRvbWFpCitAQCAtNTExLDcgKzUxMSw3IEBAIGdudXYzX2Zp bmRfbWV0aG9kX2luIChzdHJ1Y3QgdHlwZSAqZG9tYWkKICAgICAgIHdlJ3JlIG91dCBvZiBsdWNr LiAgKi8KICAgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05fQkFTRUNMQVNTRVMgKGRvbWFpbik7IGkr KykKICAgICAgewpAQCAtMjMyOCwxMCArMjMyOCwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvZ251LXYzLWFiaS5jCiAgICAgICAgc3RydWN0IHR5cGUgKmJhc2V0eXBlOwogIAog ICAgICAgIGlmIChCQVNFVFlQRV9WSUFfVklSVFVBTCAoZG9tYWluLCBpKSkKLUluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi9nby1sYW5nLmgKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy9nZGIvZ28tbGFuZy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5v cmlnL2dkYi9nby1sYW5nLmgJMjAxMy0wMS0wMSAwNzozMjo0NC4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nby1sYW5nLmgJMjAxMy0wMi0xNSAyMjo0MDoxOC41 MzI2MjIwNzcgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9nby1s YW5nLmgJMjAxMy0wOC0wMiAxNjozODoyNi40NDgyOTIyMTggKzAyMDAKKysrKyBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIvZ28tbGFuZy5oCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzYyMzAwNzQw ICswMjAwCiBAQCAtODMsNyArODMsNyBAQCBleHRlcm4gdm9pZCBnb19wcmludF90eXBlIChzdHJ1 Y3QgdHlwZSAqCiAgLyogRGVmaW5lZCBpbiBnby12YWxwcmludC5jLiAgKi8KICAKQEAgLTIzNDEs MTAgKzIzNDEsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2dvLWxhbmcuaAog IAkJCSAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAgCQkJICBjb25zdCBz dHJ1Y3QgdmFsdWUgKnZhbCwKICAJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25z ICpvcHRpb25zKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nby12YWxwcmludC5j CitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2dvLXZhbHByaW50LmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2dvLXZhbHByaW50LmMJMjAx My0wMS0wMSAwNzozMjo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1 L2dkYi9nby12YWxwcmludC5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTMyNjIyMDc3ICswMTAwCist LS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvZ28tdmFscHJpbnQuYwkyMDEzLTA4 LTAyIDE2OjM4OjI2LjQ0ODI5MjIxOCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz L2dkYi9nby12YWxwcmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzYyMzAwNzQwICswMjAwCiBA QCAtMzcsNyArMzcsNyBAQAogIAogIHN0YXRpYyB2b2lkCkBAIC0yMzY3LDEwICsyMzY3LDEwIEBA IEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nby12YWxwcmludC5jCiAgCSAgICAgIGNv bnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogIHsKICAgIENIRUNLX1RZ UEVERUYgKHR5cGUpOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2kzODYtbmF0LmMK K0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvaTM4Ni1uYXQuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvaTM4Ni1uYXQuYwkyMDEzLTAyLTEz IDE1OjU5OjQ5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2kz ODYtbmF0LmMJMjAxMy0wMi0xNSAyMjo0MTo1My45NTA3Mzk0MTQgKzAxMDAKKy0tLSBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9pMzg2LW5hdC5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYu NDQ4MjkyMjE4ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2kzODYtbmF0 LmMJMjAxMy0wOC0wMiAxNjozODozMi4zNjIzMDA3NDAgKzAyMDAKIEBAIC0yOTAsNyArMjkwLDcg QEAgc3RhdGljIGludCBpMzg2X3JlbW92ZV9hbGlnbmVkX3dhdGNocG9pbgogICAgIHZhbGlkIHZh bHVlLCBib21icyB0aHJvdWdoIGludGVybmFsX2Vycm9yLiAgKi8KICBzdGF0aWMgaW50IGkzODZf aGFuZGxlX25vbmFsaWduZWRfd2F0Y2hwb2ludCAoc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRl ICpzdGF0ZSwKQEAgLTI0MDAsMTEgKzI0MDAsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAy MTUvZ2RiL2kzODYtbmF0LmMKICB7CiAgICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0 YXRlCiAgICAgID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3Jf cHRpZCkpOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2luZi10dHJhY2UuYworSW5k ZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9pbmYtdHRyYWNlLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2luZi10dHJhY2UuYwkyMDEzLTAxLTAx IDA3OjMyOjQ1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2lu Zi10dHJhY2UuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjUzMzYyMjA3OCArMDEwMAotQEAgLTM2NCw3 ICszNjQsNyBAQCBpbmZfdHRyYWNlX2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50IHR5CistLS0g Z2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvaW5mLXR0cmFjZS5jCTIwMTMtMDgtMDIg MTY6Mzg6MjYuNDQ5MjkyMjIwICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2Ri L2luZi10dHJhY2UuYwkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2MzMwMDc0MiArMDIwMAorQEAgLTM2 NSw3ICszNjUsNyBAQCBpbmZfdHRyYWNlX2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50IHR5CiAg fQogIAogIHN0YXRpYyBpbnQKQEAgLTI0MTMsMTEgKzI0MTMsMTEgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL2luZi10dHJhY2UuYwogIHsKICAgIHJldHVybiAxOwogIH0KLUluZGV4 OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9qdi1sYW5nLmMKK0luZGV4OiBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy9nZGIvanYtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEz MDIxNS5vcmlnL2dkYi9qdi1sYW5nLmMJMjAxMy0wMi0xNSAyMjozNzowNC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9qdi1sYW5nLmMJMjAxMy0wMi0xNSAyMjo0 MDoxOC41MzM2MjIwNzggKzAxMDAKLUBAIC00MzcsNyArNDM3LDcgQEAgamF2YV9saW5rX2NsYXNz X3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9y aWcvZ2RiL2p2LWxhbmcuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ0OTI5MjIyMCArMDIwMAorKysr IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9qdi1sYW5nLmMJMjAxMy0wOC0wMiAxNjozODoz Mi4zNjMzMDA3NDIgKzAyMDAKK0BAIC00MzYsNyArNDM2LDcgQEAgamF2YV9saW5rX2NsYXNzX3R5 cGUgKHN0cnVjdCBnZGJhcmNoICpnZAogICAgZm9yIChpID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0 eXBlKTsgaSA8IG5maWVsZHM7IGkrKykKICAgICAgewogICAgICAgIGludCBhY2NmbGFnczsKQEAg LTI0MjYsNyArMjQyNiw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9qdi1sYW5n LmMKICAKICAgICAgICBpZiAoZmllbGRzID09IE5VTEwpCiAgCXsKLUBAIC04ODcsNyArODg3LDcg QEAgamF2YV9wcmludGNoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZQorQEAgLTg4Niw3ICs4 ODYsNyBAQCBqYXZhX3ByaW50Y2hhciAoaW50IGMsIHN0cnVjdCB0eXBlICp0eXBlCiAgc3RhdGlj IHZvaWQKICBqYXZhX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdHJ1Y3QgdHlw ZSAqdHlwZSwKICAJICAgICAgIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcsCkBAIC0yNDM1LDEwICsy NDM1LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9qdi1sYW5nLmMKICAJICAg ICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogIHsKICAgIGNv bnN0IGNoYXIgKnR5cGVfZW5jb2RpbmcgPSBqYXZhX2dldF9lbmNvZGluZyAodHlwZSk7Ci1JbmRl eDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvanYtbGFuZy5oCitJbmRleDogZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL2p2LWxhbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAx MzAyMTUub3JpZy9nZGIvanYtbGFuZy5oCTIwMTMtMDEtMDEgMDc6MzI6NDYuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvanYtbGFuZy5oCTIwMTMtMDItMTUgMjI6 NDA6MTguNTMzNjIyMDc4ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9n ZGIvanYtbGFuZy5oCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDQ5MjkyMjIwICswMjAwCisrKysgZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2p2LWxhbmcuaAkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2 MzMwMDc0MiArMDIwMAogQEAgLTQyLDggKzQyLDggQEAgc3RydWN0IGJ1aWx0aW5famF2YV90eXBl CiAgCiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBidWlsdGluX2phdmFfdHlwZSAqYnVpbHRpbl9qYXZh X3R5cGUgKHN0cnVjdCBnZGJhcmNoICopOwpAQCAtMjQ1MCwxMCArMjQ1MCwxMCBAQCBJbmRleDog Z2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvanYtbGFuZy5oCiAgCQkJICAgIGNvbnN0IHN0cnVjdCB2 YWx1ZSAqLAogIAkJCSAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKICAK LUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9qdi12YWxwcmludC5jCitJbmRleDogZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2p2LXZhbHByaW50LmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2p2LXZhbHByaW50LmMJMjAxMy0wMS0zMSAxOToz NzozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9qdi12YWxw cmludC5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTMzNjIyMDc4ICswMTAwCistLS0gZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvanYtdmFscHJpbnQuYwkyMDEzLTA4LTAyIDE2OjM4OjI2 LjQ1MDI5MjIyMSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9qdi12YWxw cmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzYzMzAwNzQyICswMjAwCiBAQCAtMjY2LDcgKzI2 Niw3IEBAIGphdmFfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHIKICAKICBzdGF0 aWMgdm9pZApAQCAtMjQ3MiwxMSArMjQ3MiwxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvanYtdmFscHJpbnQuYwogIAkJc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vy c2UsCiAgCQljb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKICAJCWNvbnN0IHN0cnVjdCB2YWx1ZV9w cmludF9vcHRpb25zICpvcHRpb25zKQotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2xh bmd1YWdlLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbGFuZ3VhZ2UuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvbGFuZ3VhZ2UuYwky MDEzLTAxLTAxIDA3OjMyOjQ2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAy MTUvZ2RiL2xhbmd1YWdlLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41MzQ2MjIwNzkgKzAxMDAKLUBA IC03MjAsNyArNzIwLDcgQEAgdW5rX2xhbmdfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHR5cGUg KgorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2xhbmd1YWdlLmMJMjAxMy0w OC0wMiAxNjozODoyNi40NTAyOTIyMjEgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvbGFuZ3VhZ2UuYwkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2NDMwMDc0MyArMDIwMAorQEAg LTcyMSw3ICs3MjEsNyBAQCB1bmtfbGFuZ19wcmludGNoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAq CiAgCiAgc3RhdGljIHZvaWQKICB1bmtfbGFuZ19wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwgc3RydWN0IHR5cGUgKnR5cGUsCkBAIC0yNDg1LDcgKzI0ODUsNyBAQCBJbmRleDogZ2Ri LTcuNS41MC4yMDEzMDIxNS9nZGIvbGFuZ3VhZ2UuYwogIAkJICAgY29uc3QgY2hhciAqZW5jb2Rp bmcsIGludCBmb3JjZV9lbGxpcHNlcywKICAJCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9v cHRpb25zICpvcHRpb25zKQogIHsKLUBAIC03MzksNyArNzM5LDcgQEAgdW5rX2xhbmdfcHJpbnRf dHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsCitAQCAtNzQwLDcgKzc0MCw3IEBAIHVua19sYW5nX3By aW50X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLAogIAogIHN0YXRpYyB2b2lkCiAgdW5rX2xhbmdf dmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBA IC0yNDk0LDEwICsyNDk0LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9sYW5n dWFnZS5jCiAgCQkgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAgCQkg ICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCiAgCQkgICAgY29uc3Qgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgKm9wdGlvbnMpCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbGFu Z3VhZ2UuaAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9sYW5ndWFnZS5oCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9sYW5ndWFnZS5oCTIw MTMtMDEtMDEgMDc6MzI6NDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvbGFuZ3VhZ2UuaAkyMDEzLTAyLTE1IDIyOjQwOjE4LjUzNDYyMjA3OSArMDEwMAorLS0t IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2xhbmd1YWdlLmgJMjAxMy0wOC0wMiAx NjozODoyNi40NTAyOTIyMjEgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIv bGFuZ3VhZ2UuaAkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2NDMwMDc0MyArMDIwMAogQEAgLTE3NSw3 ICsxNzUsNyBAQCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbgogIAkJCSAgc3RydWN0IHVpX2ZpbGUgKiBz dHJlYW0pOwogIApAQCAtMjUxNiwxMCArMjUxNiwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvbGFuZ3VhZ2UuaAogIAkJCSAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJl Y3Vyc2UsCiAgCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKICAJCQkgIGNvbnN0IHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi9tMi1sYW5nLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbTIt bGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9tMi1s YW5nLmMJMjAxMy0wMS0wNyAxNzo0MDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi9tMi1sYW5nLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41MzQ2MjIwNzkgKzAx MDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9tMi1sYW5nLmMJMjAxMy0w OC0wMiAxNjozODoyNi40NTAyOTIyMjEgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvbTItbGFuZy5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzY0MzAwNzQzICswMjAwCiBAQCAt MTAzLDEwICsxMDMsMTAgQEAgbTJfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5cGUs CiAgCiAgc3RhdGljIHZvaWQKQEAgLTI1NTQsMTAgKzI1NTQsMTAgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL20yLWxhbmcuYwogIAkgIGkgPSByZXAxIC0gMTsKICAJICB0aGluZ3Nf cHJpbnRlZCArPSBvcHRpb25zLT5yZXBlYXRfY291bnRfdGhyZXNob2xkOwogIAkgIG5lZWRfY29t bWEgPSAxOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL20yLWxhbmcuaAorSW5kZXg6 IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9tMi1sYW5nLmgKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL20yLWxhbmcuaAkyMDEzLTAxLTAxIDA3OjMyOjQ2 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL20yLWxhbmcuaAky MDEzLTAyLTE1IDIyOjQwOjE4LjUzNDYyMjA3OSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3 MzEtY3ZzLm9yaWcvZ2RiL20yLWxhbmcuaAkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ1MTI5MjIyMiAr MDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9tMi1sYW5nLmgJMjAxMy0wOC0w MiAxNjozODozMi4zNjQzMDA3NDMgKzAyMDAKIEBAIC0zMyw3ICszMyw3IEBAIGV4dGVybiB2b2lk IG0yX3ByaW50X3R5cGVkZWYgKHN0cnVjdCB0eXAKICBleHRlcm4gaW50IG0yX2lzX2xvbmdfc2V0 IChzdHJ1Y3QgdHlwZSAqdHlwZSk7CiAgZXh0ZXJuIGludCBtMl9pc191bmJvdW5kZWRfYXJyYXkg KHN0cnVjdCB0eXBlICp0eXBlKTsKQEAgLTI1NjcsMTAgKzI1NjcsMTAgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL20yLWxhbmcuaAogIAkJCSAgc3RydWN0IHVpX2ZpbGUgKiwgaW50 LAogIAkJCSAgY29uc3Qgc3RydWN0IHZhbHVlICosCiAgCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWVf cHJpbnRfb3B0aW9ucyAqKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9tMi10eXBl cHJpbnQuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9tMi10eXBlcHJpbnQu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvbTItdHlwZXBy aW50LmMJMjAxMy0wMS0zMSAxOTozNzozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi9tMi10eXBlcHJpbnQuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjUzNDYyMjA3 OSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL20yLXR5cGVwcmlu dC5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDUxMjkyMjIyICswMjAwCisrKysgZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL20yLXR5cGVwcmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzY0MzAw NzQzICswMjAwCiBAQCAtMjMzLDkgKzIzMywxMiBAQCBzdGF0aWMgdm9pZCBtMl9hcnJheSAoc3Ry dWN0IHR5cGUgKnR5cGUsCiAgCSAgbTJfcHJpbnRfYm91bmRzIChUWVBFX0lOREVYX1RZUEUgKHR5 cGUpLCBzdHJlYW0sIHNob3csIC0xLCAxKTsKICAJfQpAQCAtMjU4NywxMCArMjU4NywxMCBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbTItdHlwZXByaW50LmMKICAgICAgfQogICAg ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiXSBPRiAiKTsKICAgIG0yX3ByaW50X3R5cGUgKFRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpLCAiIiwgc3RyZWFtLCBzaG93LCBsZXZlbCwgZmxhZ3MpOwot SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL20yLXZhbHByaW50LmMKK0luZGV4OiBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbTItdmFscHJpbnQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvbTItdmFscHJpbnQuYwkyMDEzLTAxLTAxIDA3OjMy OjQ2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL20yLXZhbHBy aW50LmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41MzQ2MjIwNzkgKzAxMDAKKy0tLSBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9tMi12YWxwcmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYu NDUxMjkyMjIyICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL20yLXZhbHBy aW50LmMJMjAxMy0wOC0wMiAxNjozODozMi4zNjUzMDA3NDUgKzAyMDAKIEBAIC0zNSw3ICszNSw3 IEBAIHN0YXRpYyBpbnQgcHJpbnRfdW5wYWNrZWRfcG9pbnRlciAoc3RydWMKICAJCQkJICAgc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSk7CiAgc3RhdGljIHZvaWQKQEAgLTI2NTYsMTAgKzI2NTYsMTAg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL20yLXZhbHByaW50LmMKICAKICAJCSAg LyogTG9vayBmb3IgYSBOVUxMIGNoYXIuICAqLwogIAkJICBmb3IgKHRlbXBfbGVuID0gMDsKLUlu ZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9tZW1yYW5nZS5jCitJbmRleDogZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMvZ2RiL21lbXJhbmdlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUw LjIwMTMwMjE1Lm9yaWcvZ2RiL21lbXJhbmdlLmMJMjAxMy0wMS0wMSAwNzozMjo0Ny4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9tZW1yYW5nZS5jCTIwMTMtMDIt MTUgMjI6NDA6MTguNTM0NjIyMDc5ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMu b3JpZy9nZGIvbWVtcmFuZ2UuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ1MTI5MjIyMiArMDIwMAor KysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9tZW1yYW5nZS5jCTIwMTMtMDgtMDIgMTY6 Mzg6MzIuMzY1MzAwNzQ1ICswMjAwCiBAQCAtMjEsOCArMjEsOCBAQAogICNpbmNsdWRlICJtZW1y YW5nZS5oIgogIApAQCAtMjY3MSwxMCArMjY3MSwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvbWVtcmFuZ2UuYwogIHsKICAgIFVMT05HRVNUIGgsIGw7CiAgCi1JbmRleDogZ2Ri LTcuNS41MC4yMDEzMDIxNS9nZGIvbWVtcmFuZ2UuaAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3 MzEtY3ZzL2dkYi9tZW1yYW5nZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIx NS5vcmlnL2dkYi9tZW1yYW5nZS5oCTIwMTMtMDEtMDEgMDc6MzI6NDcuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbWVtcmFuZ2UuaAkyMDEzLTAyLTE1IDIyOjQw OjE4LjUzNTYyMjA4MSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2Ri L21lbXJhbmdlLmgJMjAxMy0wOC0wMiAxNjozODoyNi40NTIyOTIyMjQgKzAyMDAKKysrKyBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbWVtcmFuZ2UuaAkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2 NTMwMDc0NSArMDIwMAogQEAgLTMwLDcgKzMwLDcgQEAgc3RydWN0IG1lbV9yYW5nZQogICAgQ09S RV9BRERSIHN0YXJ0OwogIApAQCAtMjY5NSwxMSArMjY5NSwxMSBAQCBJbmRleDogZ2RiLTcuNS41 MC4yMDEzMDIxNS9nZGIvbWVtcmFuZ2UuaAogIAogIC8qIFNvcnQgcmFuZ2VzIGJ5IHN0YXJ0IGFk ZHJlc3MsIHRoZW4gY29hbGVzY2UgY29udGlndW91cyBvcgogICAgIG92ZXJsYXBwaW5nIHJhbmdl cy4gICovCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbWlwcy1saW51eC1uYXQuYwor SW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9taXBzLWxpbnV4LW5hdC5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9taXBzLWxpbnV4LW5hdC5j CTIwMTMtMDEtMDEgMDc6MzI6NDcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvbWlwcy1saW51eC1uYXQuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjUzNTYyMjA4MSAr MDEwMAotQEAgLTkzOCw3ICs5MzgsNyBAQCB0cnlfb25lX3dhdGNoIChzdHJ1Y3QgcHRfd2F0Y2hf cmVncyAqcmVnCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvbWlwcy1saW51 eC1uYXQuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ1MjI5MjIyNCArMDIwMAorKysrIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi9taXBzLWxpbnV4LW5hdC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIu MzY1MzAwNzQ1ICswMjAwCitAQCAtNTg4LDcgKzU4OCw3IEBAIG1pcHNfbGludXhfc3RvcHBlZF9k YXRhX2FkZHJlc3MgKHN0cnVjdAogICAgIHRoZSBzcGVjaWZpZWQgcmVnaW9uIGNhbiBiZSBjb3Zl cmVkIGJ5IHRoZSB3YXRjaCByZWdpc3RlcnMuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTI3MDgs MTAgKzI3MDgsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL21pcHMtbGludXgt bmF0LmMKICB7CiAgICBzdHJ1Y3QgcHRfd2F0Y2hfcmVncyBkdW1teV9yZWdzOwogICAgaW50IGk7 Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvb3BlbmNsLWxhbmcuYworSW5kZXg6IGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9vcGVuY2wtbGFuZy5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9vcGVuY2wtbGFuZy5jCTIwMTMtMDEtMjUgMTg6 MTY6NDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvb3BlbmNs LWxhbmcuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjUzNTYyMjA4MSArMDEwMAorLS0tIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL29wZW5jbC1sYW5nLmMJMjAxMy0wOC0wMiAxNjozODoy Ni40NTIyOTIyMjQgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvb3BlbmNs LWxhbmcuYwkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2NTMwMDc0NSArMDIwMAogQEAgLTgwLDExICs4 MCwxMSBAQCBidWlsdGluX29wZW5jbF90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCiAgCiAgc3Rh dGljIHN0cnVjdCB0eXBlICoKQEAgLTI4MzgsMTAgKzI4MzgsMTAgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL29wZW5jbC1sYW5nLmMKICAKICAgICAgICBpZiAoIXZhbHVlX2JpdHNf c3ludGhldGljX3BvaW50ZXIgKGMtPnZhbCwKICAJCQkJCSBjLT5pbmRpY2VzW2ldICogZWxzaXpl ICsgY29tcF9vZmZzZXQsCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcC1sYW5nLmMK K0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcC1sYW5nLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL3AtbGFuZy5jCTIwMTMtMDEtMDcgMTc6 NDA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcC1sYW5n LmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41MzU2MjIwODEgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy5vcmlnL2dkYi9wLWxhbmcuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ1MzI5MjIy NSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9wLWxhbmcuYwkyMDEzLTA4 LTAyIDE2OjM4OjMyLjM2NjMwMDc0NiArMDIwMAogQEAgLTk1LDggKzk1LDggQEAgcGFzY2FsX21h aW5fbmFtZSAodm9pZCkKICAgICBhcmUgbm90IG11bHRpcGxlIG9mIFRBUkdFVF9DSEFSX0JJVCB0 aGVuIHRoZSByZXN1bHRzIGFyZSB3cm9uZwogICAgIGJ1dCB0aGlzIGRvZXMgbm90IGhhcHBlbiBm b3IgRnJlZSBQYXNjYWwgbm9yIGZvciBHUEMuICAqLwpAQCAtMjg4OSwxMCArMjg4OSwxMCBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcC1sYW5nLmMKICAJICBpID0gcmVwMSAtIDE7 CiAgCSAgdGhpbmdzX3ByaW50ZWQgKz0gb3B0aW9ucy0+cmVwZWF0X2NvdW50X3RocmVzaG9sZDsK ICAJICBuZWVkX2NvbW1hID0gMTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9wLWxh bmcuaAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9wLWxhbmcuaAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvcC1sYW5nLmgJMjAxMy0wMS0w MSAwNzozMjo0Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9w LWxhbmcuaAkyMDEzLTAyLTE1IDIyOjQwOjE4LjUzNTYyMjA4MSArMDEwMAorLS0tIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3AtbGFuZy5oCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDUz MjkyMjI1ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3AtbGFuZy5oCTIw MTMtMDgtMDIgMTY6Mzg6MzIuMzY2MzAwNzQ2ICswMjAwCiBAQCAtMzUsNyArMzUsNyBAQCBleHRl cm4gdm9pZCBwYXNjYWxfcHJpbnRfdHlwZSAoc3RydWN0IHR5CiAgZXh0ZXJuIHZvaWQgcGFzY2Fs X3ByaW50X3R5cGVkZWYgKHN0cnVjdCB0eXBlICosIHN0cnVjdCBzeW1ib2wgKiwKICAJCQkJICBz dHJ1Y3QgdWlfZmlsZSAqKTsKQEAgLTI5MjcsMTAgKzI5MjcsMTAgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL3AtbGFuZy5oCiAgCQkJCQkgICAgICBDT1JFX0FERFIsIHN0cnVjdCB1 aV9maWxlICosCiAgCQkJCQkgICAgICBpbnQsCiAgCQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFs dWUgKiwKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9wLXZhbHByaW50LmMKK0luZGV4 OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcC12YWxwcmludC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9wLXZhbHByaW50LmMJMjAxMy0wMi0xNSAy MjozMTozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9wLXZh bHByaW50LmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41MzY2MjIwODQgKzAxMDAKKy0tLSBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9wLXZhbHByaW50LmMJMjAxMy0wOC0wMiAxNjozODoy Ni40NTMyOTIyMjUgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcC12YWxw cmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzY2MzAwNzQ2ICswMjAwCiBAQCAtNTgsNyArNTgs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGdlbmVyaWNfdmFsX3ByaW50X2RlCiAgCiAgdm9pZApA QCAtMjk1MSw3ICsyOTUxLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3AtdmFs cHJpbnQuYwogICAgc3RydWN0IHR5cGUgKmNoYXJfdHlwZTsKICAgIENPUkVfQUREUiBhZGRyOwog ICAgaW50IHdhbnRfc3BhY2UgPSAwOwotQEAgLTQ5Myw3ICs0OTMsNyBAQCBzdGF0aWMgdm9pZCBw YXNjYWxfb2JqZWN0X3ByaW50X3N0YXRpY19mCitAQCAtNDk0LDcgKzQ5NCw3IEBAIHN0YXRpYyB2 b2lkIHBhc2NhbF9vYmplY3RfcHJpbnRfc3RhdGljX2YKICAJCQkJCSAgICAgIGNvbnN0IHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zICopOwogIAogIHN0YXRpYyB2b2lkIHBhc2NhbF9vYmplY3Rf cHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICosIGNvbnN0IGdkYl9ieXRlICosCkBAIC0yOTYwLDcg KzI5NjAsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcC12YWxwcmludC5jCiAg CQkJCSAgICAgICBDT1JFX0FERFIsIHN0cnVjdCB1aV9maWxlICosIGludCwKICAJCQkJICAgICAg IGNvbnN0IHN0cnVjdCB2YWx1ZSAqLAogIAkJCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgKiwKLUBAIC01NTIsNyArNTUyLDcgQEAgcGFzY2FsX29iamVjdF9pc192dGJs X21lbWJlciAoc3RydWN0IHR5cAorQEAgLTU1Myw3ICs1NTMsNyBAQCBwYXNjYWxfb2JqZWN0X2lz X3Z0YmxfbWVtYmVyIChzdHJ1Y3QgdHlwCiAgCiAgdm9pZAogIHBhc2NhbF9vYmplY3RfcHJpbnRf dmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIs CkBAIC0yOTY5LDcgKzI5NjksNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcC12 YWxwcmludC5jCiAgCQkJCSAgQ09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJl YW0sCiAgCQkJCSAgaW50IHJlY3Vyc2UsCiAgCQkJCSAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWws Ci1AQCAtNzI4LDcgKzcyOCw3IEBAIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFsdWVfZmllbGRzIChz dHJ1Y3QKK0BAIC03MjksNyArNzI5LDcgQEAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZV9maWVs ZHMgKHN0cnVjdAogIAogIHN0YXRpYyB2b2lkCiAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZSAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtMjk3OCw3ICsy OTc4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3AtdmFscHJpbnQuYwogIAkJ CSAgIENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAogIAkJCSAgIGlu dCByZWN1cnNlLAogIAkJCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAotQEAgLTc1MSwxMSAr NzUxLDExIEBAIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICoKK0BAIC03 NTIsMTEgKzc1MiwxMSBAQCBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlIChzdHJ1Y3QgdHlwZSAq CiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgbl9iYXNlY2xhc3NlczsgaSsrKQogICAgICB7CkBAIC0y OTkyLDExICsyOTkyLDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9wLXZhbHBy aW50LmMKICAgICAgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleDsKICAgICAgICBp bnQgc2tpcCA9IDA7CiAgCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcHBjLWxpbnV4 LW5hdC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3BwYy1saW51eC1uYXQu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvcHBjLWxpbnV4 LW5hdC5jCTIwMTMtMDEtMDEgMDc6MzI6NDkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41 MC4yMDEzMDIxNS9nZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTM2NjIy MDg0ICswMTAwCi1AQCAtMTQ5Miw3ICsxNDkyLDcgQEAgcHBjX2xpbnV4X2Nhbl91c2VfaHdfYnJl YWtwb2ludCAoaW50IHR5cAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3Bw Yy1saW51eC1uYXQuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ1NDI5MjIyNyArMDIwMAorKysrIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9wcGMtbGludXgtbmF0LmMJMjAxMy0wOC0wMiAxNjoz ODozMi4zNjYzMDA3NDYgKzAyMDAKK0BAIC0xNDk2LDcgKzE0OTYsNyBAQCBwcGNfbGludXhfY2Fu X3VzZV9od19icmVha3BvaW50IChpbnQgdHlwCiAgfQogIAogIHN0YXRpYyBpbnQKQEAgLTMwMDUs MTAgKzMwMDUsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3BwYy1saW51eC1u YXQuYwogIHsKICAgIC8qIEhhbmRsZSBzdWItOC1ieXRlIHF1YW50aXRpZXMuICAqLwogICAgaWYg KGxlbiA8PSAwKQotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ByaW50Y21kLmMKK0lu ZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcHJpbnRjbWQuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvcHJpbnRjbWQuYwkyMDEzLTAyLTE1IDIy OjM0OjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ByaW50 Y21kLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41Mzc2MjIwODYgKzAxMDAKKy0tLSBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9wcmludGNtZC5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDU0 MjkyMjI3ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3ByaW50Y21kLmMJ MjAxMy0wOC0wMiAxNjozODozMi4zNjczMDA3NDggKzAyMDAKIEBAIC0yOTAsNyArMjkwLDcgQEAg cHJpbnRfZm9ybWF0dGVkIChzdHJ1Y3QgdmFsdWUgKnZhbCwgaW50CiAgCQkgc3RydWN0IHVpX2Zp bGUgKnN0cmVhbSkKICB7CkBAIC0zMDI3LDEwICszMDI3LDEwIEBAIEluZGV4OiBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi9wcmludGNtZC5jCiAgICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9 IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7CiAgCiAgICAvKiBTdHJpbmcgcHJpbnRpbmcg c2hvdWxkIGdvIHRocm91Z2ggdmFsX3ByaW50X3NjYWxhcl9mb3JtYXR0ZWQuICAqLwotSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Byb2Nmcy5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL3Byb2Nmcy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIx NS5vcmlnL2dkYi9wcm9jZnMuYwkyMDEzLTAxLTAxIDA3OjMyOjQ5LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Byb2Nmcy5jCTIwMTMtMDItMTUgMjI6NDA6MTgu NTM3NjIyMDg2ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvcHJv Y2ZzLmMJMjAxMy0wOC0wMiAxNjozODoyNi40NTUyOTIyMjggKzAyMDAKKysrKyBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIvcHJvY2ZzLmMJMjAxMy0wOC0wMiAxNjozODozMi4zNjgzMDA3NDkg KzAyMDAKIEBAIC00OTI2LDcgKzQ5MjYsNyBAQCBwcm9jZnNfcmVtb3ZlX3dhdGNocG9pbnQgKENP UkVfQUREUiBhZGRyCiAgfQogIApAQCAtMzA0MCwxMSArMzA0MCwxMSBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvcHJvY2ZzLmMKICB7CiAgICAvKiBUaGUgbWFuIHBhZ2UgZm9yIHBy b2MoNCkgb24gU29sYXJpcyAyLjYgYW5kIHVwIHNheXMgdGhhdCB0aGUKICAgICAgIHN5c3RlbSBj YW4gc3VwcG9ydCAidGhvdXNhbmRzIiBvZiBoYXJkd2FyZSB3YXRjaHBvaW50cywgYnV0IGdpdmVz Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMK K0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50 LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL3B5dGhvbi9w eS1wcmV0dHlwcmludC5jCTIwMTMtMDEtMDEgMDc6MzM6MDEuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMJMjAxMy0wMi0x NSAyMjo0MDoxOC41Mzg2MjIwODggKzAxMDAKLUBAIC02ODksNyArNjg5LDcgQEAgcHJpbnRfY2hp bGRyZW4gKFB5T2JqZWN0ICpwcmludGVyLCBjb25zdAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzLm9yaWcvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYu NDU2MjkyMjMwICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3B5dGhvbi9w eS1wcmV0dHlwcmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzY4MzAwNzQ5ICswMjAwCitAQCAt Njg4LDcgKzY4OCw3IEBAIHByaW50X2NoaWxkcmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29uc3QK ICAKICBpbnQKICBhcHBseV92YWxfcHJldHR5X3ByaW50ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTMwNTMsNyArMzA1Myw3IEBAIEluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi9weXRob24vcHktcHJldHR5cHJpbnQuYwogIAkJCSAgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAgCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWUg KnZhbCwKICAJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAot QEAgLTgzNyw3ICs4MzcsNyBAQCBnZGJweV9kZWZhdWx0X3Zpc3VhbGl6ZXIgKFB5T2JqZWN0ICpz ZWxmCitAQCAtODQzLDcgKzg0Myw3IEBAIGdkYnB5X2RlZmF1bHRfdmlzdWFsaXplciAoUHlPYmpl Y3QgKnNlbGYKICAKICBpbnQKICBhcHBseV92YWxfcHJldHR5X3ByaW50ZXIgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTMwNjIsMTEgKzMwNjIsMTEgQEAg SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCiAg CQkJICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCQkgIGNvbnN0IHN0 cnVjdCB2YWx1ZSAqdmFsLAogIAkJCSAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMg Km9wdGlvbnMsCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcHl0aG9uL3B5dGhvbi5o CitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3B5dGhvbi9weXRob24uaAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5o CTIwMTMtMDItMTUgMjI6MzE6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTMtMDItMTUgMjI6NDA6MTguNTM4NjIyMDg4ICsw MTAwCi1AQCAtMzcsNyArMzcsNyBAQCB2b2lkIHNvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpm aWxlLCBjCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvcHl0aG9uL3B5dGhv bi5oCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDU2MjkyMjMwICswMjAwCisrKysgZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2ODMw MDc0OSArMDIwMAorQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdCAo RklMRSAqZmlsZSwgYwogIHZvaWQgcnVuX3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoq YXJndik7CiAgCiAgaW50IGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtMzA3NSwxMCArMzA3NSwxMCBAQCBJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcHl0aG9uL3B5dGhvbi5oCiAgCQkJICAgICAgc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAgCQkJICAgICAgY29uc3Qgc3RydWN0 IHZhbHVlICp2YWwsCiAgCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMg Km9wdGlvbnMsCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcmVnY2FjaGUuYworSW5k ZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9yZWdjYWNoZS5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9yZWdjYWNoZS5jCTIwMTMtMDEtMzEgMTk6 Mzc6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcmVnY2Fj aGUuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjUzODYyMjA4OCArMDEwMAorLS0tIGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3JlZ2NhY2hlLmMJMjAxMy0wOC0wMiAxNjozODoyNi40NTcy OTIyMzEgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcmVnY2FjaGUuYwky MDEzLTA4LTAyIDE2OjM4OjMyLjM2ODMwMDc0OSArMDIwMAogQEAgLTg5OSw3ICs4OTksNyBAQCB0 eXBlZGVmIHZvaWQgKHJlZ2NhY2hlX3dyaXRlX2Z0eXBlKSAoc3RyCiAgCiAgc3RhdGljIGVudW0g cmVnaXN0ZXJfc3RhdHVzCkBAIC0zMTI0LDEwICszMTI0LDEwIEBAIEluZGV4OiBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi9yZWdjYWNoZS5jCiAgewogICAgc3RydWN0IHJlZ2NhY2hlX2Rlc2NyICpk ZXNjciA9IHJlZ2NhY2hlLT5kZXNjcjsKICAKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9yZWdjYWNoZS5oCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3JlZ2NhY2hl LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL3JlZ2NhY2hl LmgJMjAxMy0wMS0wMSAwNzozMjo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi9yZWdjYWNoZS5oCTIwMTMtMDItMTUgMjI6NDA6MTguNTM4NjIyMDg4ICswMTAw CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvcmVnY2FjaGUuaAkyMDEzLTA4 LTAyIDE2OjM4OjI2LjQ1NzI5MjIzMSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz L2dkYi9yZWdjYWNoZS5oCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzY4MzAwNzQ5ICswMjAwCiBAQCAt ODksOSArODksOSBAQCBleHRlcm4gdm9pZCByZWdjYWNoZV9yYXdfd3JpdGVfdW5zaWduZWQKICAK ICBleHRlcm4gZW51bSByZWdpc3Rlcl9zdGF0dXMKQEAgLTMxNTUsMTEgKzMxNTUsMTEgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3JlZ2NhY2hlLmgKICAKICAvKiBTcGVjaWFsIHJv dXRpbmVzIHRvIHJlYWQvd3JpdGUgdGhlIFBDLiAgKi8KICAKLUluZGV4OiBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi9yZW1vdGUuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9y ZW1vdGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvcmVt b3RlLmMJMjAxMy0wMi0xNSAyMjozNDo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi9yZW1vdGUuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjU0MDYyMjA5MiArMDEw MAotQEAgLTgyMzYsNyArODIzNiw3IEBAIGludCByZW1vdGVfaHdfd2F0Y2hwb2ludF9sZW5ndGhf bGltaXQgPQorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3JlbW90ZS5jCTIw MTMtMDgtMDIgMTY6Mzg6MjYuNDU5MjkyMjM0ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMvZ2RiL3JlbW90ZS5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzcwMzAwNzUyICswMjAwCitA QCAtODM2OCw3ICs4MzY4LDcgQEAgaW50IHJlbW90ZV9od193YXRjaHBvaW50X2xlbmd0aF9saW1p dCA9CiAgaW50IHJlbW90ZV9od19icmVha3BvaW50X2xpbWl0ID0gLTE7CiAgCiAgc3RhdGljIGlu dApAQCAtMzE2OCwxMCArMzE2OCwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIv cmVtb3RlLmMKICB7CiAgICBpZiAocmVtb3RlX2h3X3dhdGNocG9pbnRfbGVuZ3RoX2xpbWl0ID09 IDApCiAgICAgIHJldHVybiAwOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3MzOTAt bmF0LmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvczM5MC1uYXQuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvczM5MC1uYXQuYwkyMDEz LTAxLTAxIDA3OjMyOjUwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL3MzOTAtbmF0LmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41NDA2MjIwOTIgKzAxMDAKKy0tLSBn ZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9zMzkwLW5hdC5jCTIwMTMtMDgtMDIgMTY6 Mzg6MjYuNDU5MjkyMjM0ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Mz OTAtbmF0LmMJMjAxMy0wOC0wMiAxNjozODozMi4zNzAzMDA3NTIgKzAyMDAKIEBAIC01NzEsNyAr NTcxLDcgQEAgczM5MF9jYW5fdXNlX2h3X2JyZWFrcG9pbnQgKGludCB0eXBlLCBpbgogIH0KICAK QEAgLTMxODEsMTAgKzMxODEsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Mz OTAtbmF0LmMKICB7CiAgICByZXR1cm4gMTsKICB9Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvc3B1LW11bHRpYXJjaC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2Ri L3NwdS1tdWx0aWFyY2guYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3Jp Zy9nZGIvc3B1LW11bHRpYXJjaC5jCTIwMTMtMDEtMDEgMDc6MzI6NTEuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvc3B1LW11bHRpYXJjaC5jCTIwMTMtMDItMTUg MjI6NDA6MTguNTQwNjIyMDkyICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3Jp Zy9nZGIvc3B1LW11bHRpYXJjaC5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDU5MjkyMjM0ICswMjAw CisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3NwdS1tdWx0aWFyY2guYwkyMDEzLTA4 LTAyIDE2OjM4OjMyLjM3MDMwMDc1MiArMDIwMAogQEAgLTExOCw3ICsxMTgsNyBAQCBzcHVfdGhy ZWFkX2FyY2hpdGVjdHVyZSAoc3RydWN0IHRhcmdldF9vCiAgCiAgLyogT3ZlcnJpZGUgdGhlIHRv X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCByb3V0aW5lLiAgKi8KQEAgLTMxOTQsMTEgKzMx OTQsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3NwdS1tdWx0aWFyY2guYwog IHsKICAgIHN0cnVjdCB0YXJnZXRfb3BzICpvcHNfYmVuZWF0aCA9IGZpbmRfdGFyZ2V0X2JlbmVh dGggKCZzcHVfb3BzKTsKICAgIHdoaWxlIChvcHNfYmVuZWF0aCAmJiAhb3BzX2JlbmVhdGgtPnRv X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCkKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1 L2dkYi9zdGFjay5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3N0YWNrLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL3N0YWNrLmMJMjAx My0wMi0xNSAyMjozMTozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1 L2dkYi9zdGFjay5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTQwNjIyMDkyICswMTAwCi1AQCAtMTcz LDcgKzE3Myw3IEBAIHByaW50X3N0YWNrX2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnIKKy0t LSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9zdGFjay5jCTIwMTMtMDgtMDIgMTY6 Mzg6MjYuNDYwMjkyMjM2ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3N0 YWNrLmMJMjAxMy0wOC0wMiAxNjozODozMi4zNzEzMDA3NTQgKzAyMDAKK0BAIC0xNzgsNyArMTc4 LDcgQEAgcHJpbnRfc3RhY2tfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICpmcgogICAgIGFyZ3Vt ZW50IChub3QganVzdCB0aGUgZmlyc3QgbmFtZWxlc3MgYXJndW1lbnQpLiAgKi8KICAKICBzdGF0 aWMgdm9pZApAQCAtMzIwNyw3ICszMjA3LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL3N0YWNrLmMKICAJCQkgICBpbnQgZmlyc3QsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAg ewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOwot QEAgLTQ5Nyw3ICs0OTcsNyBAQCBwcmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9sICpmdW5j LCBzCitAQCAtNTAwLDcgKzUwMCw3IEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wg KmZ1bmMsIHMKICAgIC8qIE9mZnNldCBvZiBuZXh0IHN0YWNrIGFyZ3VtZW50IGJleW9uZCB0aGUg b25lIHdlIGhhdmUgc2VlbiB0aGF0IGlzCiAgICAgICBhdCB0aGUgaGlnaGVzdCBvZmZzZXQsIG9y IC0xIGlmIHdlIGhhdmVuJ3QgY29tZSB0byBhIHN0YWNrCiAgICAgICBhcmd1bWVudCB5ZXQuICAq LwpAQCAtMzIxNiw3ICszMjE2LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3N0 YWNrLmMKICAgIC8qIE51bWJlciBvZiBpbnRzIG9mIGFyZ3VtZW50cyB0aGF0IHdlIGhhdmUgcHJp bnRlZCBzbyBmYXIuICAqLwogICAgaW50IGFyZ3NfcHJpbnRlZCA9IDA7CiAgICBzdHJ1Y3QgY2xl YW51cCAqb2xkX2NoYWluOwotQEAgLTUzNSw4ICs1MzUsOCBAQCBwcmludF9mcmFtZV9hcmdzIChz dHJ1Y3Qgc3ltYm9sICpmdW5jLCBzCitAQCAtNTM4LDggKzUzOCw4IEBAIHByaW50X2ZyYW1lX2Fy Z3MgKHN0cnVjdCBzeW1ib2wgKmZ1bmMsIHMKICAJICAgIGNhc2UgTE9DX0FSRzoKICAJICAgIGNh c2UgTE9DX1JFRl9BUkc6CiAgCSAgICAgIHsKQEAgLTMyMjcsNyArMzIyNyw3IEBAIEluZGV4OiBn ZGItNy41LjUwLjIwMTMwMjE1L2dkYi9zdGFjay5jCiAgCiAgCQkvKiBDb21wdXRlIGFkZHJlc3Mg b2YgbmV4dCBhcmd1bWVudCBieSBhZGRpbmcgdGhlIHNpemUgb2YKICAJCSAgIHRoaXMgYXJndW1l bnQgYW5kIHJvdW5kaW5nIHRvIGFuIGludCBib3VuZGFyeS4gICovCi1AQCAtNjcxLDcgKzY3MSw3 IEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wgKmZ1bmMsIHMKK0BAIC02NzQsNyAr Njc0LDcgQEAgcHJpbnRfZnJhbWVfYXJncyAoc3RydWN0IHN5bWJvbCAqZnVuYywgcwogICAgICAg ZW5vdWdoIGFib3V0IHRoZSBzdGFjayB0byBmaW5kIHRoZW0uICAqLwogICAgaWYgKG51bSAhPSAt MSkKICAgICAgewpAQCAtMzIzNiwxMSArMzIzNiwxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvc3RhY2suYwogIAogICAgICAgIGlmIChoaWdoZXN0X29mZnNldCA9PSAtMSkKICAJ c3RhcnQgPSBnZGJhcmNoX2ZyYW1lX2FyZ3Nfc2tpcCAoZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSk7 Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvc3ltbWlzYy5jCitJbmRleDogZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMvZ2RiL3N5bW1pc2MuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu NTAuMjAxMzAyMTUub3JpZy9nZGIvc3ltbWlzYy5jCTIwMTMtMDItMTUgMjI6MzQ6NDQuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvc3ltbWlzYy5jCTIwMTMtMDIt MTUgMjI6NDA6MTguNTQxNjIyMDk0ICswMTAwCi1AQCAtNTI3LDExICs1MjcsMTEgQEAgcHJpbnRf c3ltYm9sICh2b2lkICphcmdzKQorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2Ri L3N5bW1pc2MuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ2MDI5MjIzNiArMDIwMAorKysrIGdkYi03 LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9zeW1taXNjLmMJMjAxMy0wOC0wMiAxNjozODozMi4zNzEz MDA3NTQgKzAyMDAKK0BAIC01MzQsMTEgKzUzNCwxMSBAQCBwcmludF9zeW1ib2wgKHZvaWQgKmFy Z3MpCiAgCiAgCWNhc2UgTE9DX0NPTlNUX0JZVEVTOgogIAkgIHsKQEAgLTMyNTUsMTEgKzMyNTUs MTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3N5bW1pc2MuYwogIAkgICAgZm9y IChpID0gMDsgaSA8IFRZUEVfTEVOR1RIICh0eXBlKTsgaSsrKQogIAkgICAgICBmcHJpbnRmX2Zp bHRlcmVkIChvdXRmaWxlLCAiICUwMngiLAogIAkJCQkodW5zaWduZWQpIFNZTUJPTF9WQUxVRV9C WVRFUyAoc3ltYm9sKVtpXSk7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdGFyZ2V0 LmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGFyZ2V0LmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL3RhcmdldC5jCTIwMTMtMDEtMzEg MTc6MzI6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdGFy Z2V0LmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41NDE2MjIwOTQgKzAxMDAKLUBAIC01MSw3ICs1MSw3 IEBAIHN0YXRpYyB2b2lkIGRlZmF1bHRfdGVybWluYWxfaW5mbyAoY2hhcgorLS0tIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3RhcmdldC5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDYx MjkyMjM3ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3RhcmdldC5jCTIw MTMtMDgtMDIgMTY6Mzg6MzIuMzcyMzAwNzU1ICswMjAwCitAQCAtNTEsNyArNTEsNyBAQCBzdGF0 aWMgdm9pZCBkZWZhdWx0X3Rlcm1pbmFsX2luZm8gKGNvbnN0CiAgc3RhdGljIGludCBkZWZhdWx0 X3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRfb3BzICosCiAgCQkJ CQkJIENPUkVfQUREUiwgQ09SRV9BRERSLCBpbnQpOwogIApAQCAtMzI3Nyw3ICszMjc3LDcgQEAg SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5jCiAgCiAgc3RhdGljIGludCBk ZWJ1Z190b19jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24gKENPUkVfQUREUiwgaW50LCBp bnQsCiAgCQkJCQkJICAgIHN0cnVjdCBleHByZXNzaW9uICopOwotQEAgLTM1NTAsNyArMzU1MCw3 IEBAIHRhcmdldF9maWxlaW9fcmVhZF9zdHJhbGxvYyAoY29uc3QgY2hhcgorQEAgLTM1ODYsNyAr MzU4Niw3IEBAIHRhcmdldF9maWxlaW9fcmVhZF9zdHJhbGxvYyAoY29uc3QgY2hhcgogIAogIAog IHN0YXRpYyBpbnQKQEAgLTMyODYsNyArMzI4Niw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi90YXJnZXQuYwogIHsKICAgIHJldHVybiAobGVuIDw9IGdkYmFyY2hfcHRyX2JpdCAo dGFyZ2V0X2dkYmFyY2ggKCkpIC8gVEFSR0VUX0NIQVJfQklUKTsKICB9Ci1AQCAtNDI1MSw3ICs0 MjUxLDcgQEAgZGVidWdfdG9fY2FuX3VzZV9od19icmVha3BvaW50IChpbnQgdHlwZQorQEAgLTQ1 NDEsNyArNDU0MSw3IEBAIGRlYnVnX3RvX2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50IHR5cGUK ICB9CiAgCiAgc3RhdGljIGludApAQCAtMzI5NSwxMSArMzI5NSwxMSBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvdGFyZ2V0LmMKICB7CiAgICBDT1JFX0FERFIgcmV0dmFsOwogIAot SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5oCitJbmRleDogZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMvZ2RiL3RhcmdldC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4y MDEzMDIxNS5vcmlnL2dkYi90YXJnZXQuaAkyMDEzLTAyLTE1IDIyOjM3OjMwLjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5oCTIwMTMtMDItMTUgMjI6 NDA6MTguNTQyNjIyMDk2ICswMTAwCi1AQCAtNDgyLDcgKzQ4Miw3IEBAIHN0cnVjdCB0YXJnZXRf b3BzCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvdGFyZ2V0LmgJMjAxMy0w OC0wMiAxNjozODoyNi40NjIyOTIyMzggKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvdGFyZ2V0LmgJMjAxMy0wOC0wMiAxNjozODozMi4zNzIzMDA3NTUgKzAyMDAKK0BAIC0z ODksNyArMzg5LDcgQEAgc3RydWN0IHRhcmdldF9vcHMKICAKICAgICAgLyogRG9jdW1lbnRhdGlv biBvZiB0aGlzIHJvdXRpbmUgaXMgcHJvdmlkZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZwogICAg ICAgICB0YXJnZXRfKiBtYWNyby4gICovCkBAIC0zMzA4LDExICszMzA4LDExIEBAIEluZGV4OiBn ZGItNy41LjUwLjIwMTMwMjE1L2dkYi90YXJnZXQuaAogIAogICAgICBpbnQgKCp0b19jYW5fYWNj ZWxfd2F0Y2hwb2ludF9jb25kaXRpb24pIChDT1JFX0FERFIsIGludCwgaW50LAogIAkJCQkJICAg ICAgc3RydWN0IGV4cHJlc3Npb24gKik7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIv dHJhY2Vwb2ludC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3RyYWNlcG9p bnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvdHJhY2Vw b2ludC5jCTIwMTMtMDItMTQgMTE6MTk6MzkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41 MC4yMDEzMDIxNS9nZGIvdHJhY2Vwb2ludC5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTQzNjIyMDk5 ICswMTAwCi1AQCAtOTU1LDEzICs5NTUsMTMgQEAgYWRkX3JlZ2lzdGVyIChzdHJ1Y3QgY29sbGVj dGlvbl9saXN0ICpjbworLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3RyYWNl cG9pbnQuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ2NDI5MjI0MSArMDIwMAorKysrIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi90cmFjZXBvaW50LmMJMjAxMy0wOC0wMiAxNjo0MDo1My4wMTg0 OTk3NjkgKzAyMDAKK0BAIC05NDAsMTMgKzk0MCwxMyBAQCBhZGRfcmVnaXN0ZXIgKHN0cnVjdCBj b2xsZWN0aW9uX2xpc3QgKmNvCiAgc3RhdGljIHZvaWQKICBhZGRfbWVtcmFuZ2UgKHN0cnVjdCBj b2xsZWN0aW9uX2xpc3QgKm1lbXJhbmdlcywgCiAgCSAgICAgIGludCB0eXBlLCBiZmRfc2lnbmVk X3ZtYSBiYXNlLApAQCAtMzMyOCwxNiArMzMyOCwxNiBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvdHJhY2Vwb2ludC5jCiAgICAgIH0KICAKICAgIC8qIHR5cGU6IG1lbXJhbmdlX2Fi c29sdXRlID09IG1lbW9yeSwgb3RoZXIgbiA9PSBiYXNlcmVnICovCi1AQCAtOTkwLDcgKzk5MCw3 IEBAIGNvbGxlY3Rfc3ltYm9sIChzdHJ1Y3QgY29sbGVjdGlvbl9saXN0ICoKLSAJCWxvbmcgZnJh bWVfcmVnbm8sIGxvbmcgZnJhbWVfb2Zmc2V0LAotIAkJQ09SRV9BRERSIHNjb3BlKQorQEAgLTk3 Niw3ICs5NzYsNyBAQCBjb2xsZWN0X3N5bWJvbCAoc3RydWN0IGNvbGxlY3Rpb25fbGlzdCAqCisg CQlDT1JFX0FERFIgc2NvcGUsCisgCQlpbnQgdHJhY2Vfc3RyaW5nKQogIHsKIC0gIHVuc2lnbmVk IGxvbmcgbGVuOwogKyAgVUxPTkdFU1QgbGVuOwogICAgdW5zaWduZWQgaW50IHJlZzsKICAgIGJm ZF9zaWduZWRfdm1hIG9mZnNldDsKICAgIGludCB0cmVhdF9hc19leHByID0gMDsKLUBAIC0xMDE0 LDggKzEwMTQsOCBAQCBjb2xsZWN0X3N5bWJvbCAoc3RydWN0IGNvbGxlY3Rpb25fbGlzdCAqCitA QCAtMTAwMCw4ICsxMDAwLDggQEAgY29sbGVjdF9zeW1ib2wgKHN0cnVjdCBjb2xsZWN0aW9uX2xp c3QgKgogIAkgIGNoYXIgdG1wWzQwXTsKICAKICAJICBzcHJpbnRmX3ZtYSAodG1wLCBvZmZzZXQp OwpAQCAtMzM0OCw3ICszMzQ4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Ry YWNlcG9pbnQuYwogIAkJCSAgIHRtcCAvKiBhZGRyZXNzICovKTsKICAJfQogICAgICAgIC8qIEEg c3RydWN0IG1heSBiZSBhIEMrKyBjbGFzcyB3aXRoIHN0YXRpYyBmaWVsZHMsIGdvIHRvIGdlbmVy YWwKLUBAIC0xMDQ3LDggKzEwNDcsOCBAQCBjb2xsZWN0X3N5bWJvbCAoc3RydWN0IGNvbGxlY3Rp b25fbGlzdCAqCitAQCAtMTAzMyw4ICsxMDMzLDggQEAgY29sbGVjdF9zeW1ib2wgKHN0cnVjdCBj b2xsZWN0aW9uX2xpc3QgKgogICAgICAgIG9mZnNldCA9IGZyYW1lX29mZnNldCArIFNZTUJPTF9W QUxVRSAoc3ltKTsKICAgICAgICBpZiAoaW5mb192ZXJib3NlKQogIAl7CkBAIC0zMzU5LDcgKzMz NTksNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdHJhY2Vwb2ludC5jCiAgCSAg cHJpbnRmX3ZtYSAob2Zmc2V0KTsKICAJICBwcmludGZfZmlsdGVyZWQgKCIgZnJvbSBmcmFtZSBw dHIgcmVnICVkXG4iLCByZWcpOwogIAl9Ci1AQCAtMTA1OSw4ICsxMDU5LDggQEAgY29sbGVjdF9z eW1ib2wgKHN0cnVjdCBjb2xsZWN0aW9uX2xpc3QgKgorQEAgLTEwNDUsOCArMTA0NSw4IEBAIGNv bGxlY3Rfc3ltYm9sIChzdHJ1Y3QgY29sbGVjdGlvbl9saXN0ICoKICAgICAgICBvZmZzZXQgPSAw OwogICAgICAgIGlmIChpbmZvX3ZlcmJvc2UpCiAgCXsKQEAgLTMzNzAsNyArMzM3MCw3IEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi90cmFjZXBvaW50LmMKICAJICBwcmludGZfdm1h IChvZmZzZXQpOwogIAkgIHByaW50Zl9maWx0ZXJlZCAoIiBmcm9tIHJlZyAlZFxuIiwgcmVnKTsK ICAJfQotQEAgLTEwNzEsOCArMTA3MSw4IEBAIGNvbGxlY3Rfc3ltYm9sIChzdHJ1Y3QgY29sbGVj dGlvbl9saXN0ICoKK0BAIC0xMDU3LDggKzEwNTcsOCBAQCBjb2xsZWN0X3N5bWJvbCAoc3RydWN0 IGNvbGxlY3Rpb25fbGlzdCAqCiAgICAgICAgb2Zmc2V0ID0gZnJhbWVfb2Zmc2V0ICsgU1lNQk9M X1ZBTFVFIChzeW0pOwogICAgICAgIGlmIChpbmZvX3ZlcmJvc2UpCiAgCXsKQEAgLTMzODEsNyAr MzM4MSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi90cmFjZXBvaW50LmMKICAJ ICBwcmludGZfdm1hIChvZmZzZXQpOwogIAkgIHByaW50Zl9maWx0ZXJlZCAoIiBmcm9tIGZyYW1l IHB0ciByZWcgJWRcbiIsIHJlZyk7CiAgCX0KLUBAIC0yNjQyLDcgKzI2NDIsOCBAQCBzY29wZV9p bmZvIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCitAQCAtMjcxNiw3ICsyNzE2LDggQEAgc2Nv cGVfaW5mbyAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQogICAgY29uc3QgY2hhciAqc3ltbmFt ZTsKICAgIGNoYXIgKnNhdmVfYXJncyA9IGFyZ3M7CiAgICBzdHJ1Y3QgYmxvY2tfaXRlcmF0b3Ig aXRlcjsKQEAgLTMzOTEsOCArMzM5MSw4IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi90cmFjZXBvaW50LmMKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOwogICAgaW50IHJlZ25v OwogIAotQEAgLTI3NzIsOCArMjc3MywxMSBAQCBzY29wZV9pbmZvIChjaGFyICphcmdzLCBpbnQg ZnJvbV90dHkpCi0gCSAgICAgIGJyZWFrOworQEAgLTI4NTIsOCArMjg1MywxMSBAQCBzY29wZV9p bmZvIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisgCQl9CiAgCSAgICB9CiAgCSAgaWYgKFNZ TUJPTF9UWVBFIChzeW0pKQogLQkgICAgcHJpbnRmX2ZpbHRlcmVkICgiLCBsZW5ndGggJWQuXG4i LApAQCAtMzQwNSwxMCArMzQwNSwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIv dHJhY2Vwb2ludC5jCiAgCX0KICAgICAgICBpZiAoQkxPQ0tfRlVOQ1RJT04gKGJsb2NrKSkKICAJ YnJlYWs7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdHlwZXByaW50LmMKK0luZGV4 OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdHlwZXByaW50LmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL3R5cGVwcmludC5jCTIwMTMtMDItMTUgMjI6 MzE6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdHlwZXBy aW50LmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41NDM2MjIwOTkgKzAxMDAKKy0tLSBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy5vcmlnL2dkYi90eXBlcHJpbnQuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ2 NDI5MjI0MSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90eXBlcHJpbnQu YwkyMDEzLTA4LTAyIDE2OjM4OjMyLjM3NDMwMDc1OCArMDIwMAogQEAgLTQwOSw3ICs0MDksNyBA QCB3aGF0aXNfZXhwIChjaGFyICpleHAsIGludCBzaG93KQogICAgc3RydWN0IHR5cGUgKnJlYWxf dHlwZSA9IE5VTEw7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKQEAgLTM0MTgsMTAgKzM0MTgsMTAg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3R5cGVwcmludC5jCiAgICBpbnQgdXNp bmdfZW5jID0gMDsKICAgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CiAgICBzdHJ1 Y3QgdHlwZV9wcmludF9vcHRpb25zIGZsYWdzID0gZGVmYXVsdF9wdHlwZV9mbGFnczsKLUluZGV4 OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxhcml0aC5jCitJbmRleDogZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL3ZhbGFyaXRoLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIw MTMwMjE1Lm9yaWcvZ2RiL3ZhbGFyaXRoLmMJMjAxMy0wMi0xNSAyMjozMTozNy4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxhcml0aC5jCTIwMTMtMDItMTUg MjI6NDA6MTguNTQzNjIyMDk5ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3Jp Zy9nZGIvdmFsYXJpdGguYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ2NTI5MjI0MyArMDIwMAorKysr IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi92YWxhcml0aC5jCTIwMTMtMDgtMDIgMTY6Mzg6 MzIuMzc0MzAwNzU4ICswMjAwCiBAQCAtMTkwLDE1ICsxOTAsMTUgQEAgdmFsdWVfc3Vic2NyaXB0 IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMTwogICAgIHRvIGRvdWJsZXMsIGJ1dCBubyBsb25nZXIg ZG9lcy4gICovCiAgCkBAIC0zNDc1LDExICszNDc1LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi92YWxhcml0aC5jCiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCiAg ICAgIHsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxvcHMuYworSW5kZXg6IGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi92YWxvcHMuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvdmFsb3BzLmMJMjAxMy0wMi0xNSAyMjozNzowNC4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxvcHMuYwkyMDEzLTAy LTE1IDIyOjQxOjM0Ljc1MTcxNTg2NyArMDEwMAotQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMg aW50IHR5cGVjbXAgKGludCBzdGF0aWNwLCBpbnQgdmFyCistLS0gZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMub3JpZy9nZGIvdmFsb3BzLmMJMjAxMy0wOC0wMiAxNjozODoyNi40NjcyOTIyNDYgKzAy MDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdmFsb3BzLmMJMjAxMy0wOC0wMiAx NjozODozMi4zNzUzMDA3NTkgKzAyMDAKK0BAIC01MywxMSArNTMsMTEgQEAgc3RhdGljIGludCB0 eXBlY21wIChpbnQgc3RhdGljcCwgaW50IHZhcgogIAkJICAgIHN0cnVjdCBmaWVsZCB0MVtdLCBz dHJ1Y3QgdmFsdWUgKnQyW10pOwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKnNlYXJjaF9zdHJ1 Y3RfZmllbGQgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHZhbHVlICosIApAQCAtMzQ5Myw3ICszNDkz LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9wcy5jCiAgCiAgc3RhdGlj IGludCBmaW5kX29sb2FkX2NoYW1wX25hbWVzcGFjZSAoc3RydWN0IHZhbHVlICoqLCBpbnQsCiAg CQkJCSAgICAgICBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwKLUBAIC04Niw3ICs4Niw3IEBA IG9sb2FkX2NsYXNzaWZpY2F0aW9uIGNsYXNzaWZ5X29sb2FkX21hdGMKK0BAIC04NSw3ICs4NSw3 IEBAIG9sb2FkX2NsYXNzaWZpY2F0aW9uIGNsYXNzaWZ5X29sb2FkX21hdGMKICAJCQkJCSAgIGlu dCwgaW50KTsKICAKICBzdGF0aWMgc3RydWN0IHZhbHVlICp2YWx1ZV9zdHJ1Y3RfZWx0X2Zvcl9y ZWZlcmVuY2UgKHN0cnVjdCB0eXBlICosCkBAIC0zNTAyLDcgKzM1MDIsNyBAQCBJbmRleDogZ2Ri LTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsb3BzLmMKICAJCQkJCQkgICAgIGNoYXIgKiwKICAJCQkJ CQkgICAgIHN0cnVjdCB0eXBlICosCiAgCQkJCQkJICAgICBpbnQsIGVudW0gbm9zaWRlKTsKLUBA IC0xMDMsOCArMTAzLDggQEAgc3RhdGljIENPUkVfQUREUiBhbGxvY2F0ZV9zcGFjZV9pbl9pbmZl cgorQEAgLTEwMiw4ICsxMDIsOCBAQCBzdGF0aWMgQ09SRV9BRERSIGFsbG9jYXRlX3NwYWNlX2lu X2luZmVyCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqY2FzdF9pbnRvX2NvbXBsZXggKHN0cnVjdCB0 eXBlICosIHN0cnVjdCB2YWx1ZSAqKTsKICAKICBzdGF0aWMgc3RydWN0IGZuX2ZpZWxkICpmaW5k X21ldGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUgKiosIGNvbnN0IGNoYXIgKiwKQEAgLTM1MTMsNyAr MzUxMyw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxvcHMuYwogIAogIHZv aWQgX2luaXRpYWxpemVfdmFsb3BzICh2b2lkKTsKICAKLUBAIC0xODksNyArMTg5LDcgQEAgZmlu ZF9mdW5jdGlvbl9pbl9pbmZlcmlvciAoY29uc3QgY2hhciAqbgorQEAgLTE4OCw3ICsxODgsNyBA QCBmaW5kX2Z1bmN0aW9uX2luX2luZmVyaW9yIChjb25zdCBjaGFyICpuCiAgICAgc3BhY2UuICAq LwogIAogIHN0cnVjdCB2YWx1ZSAqCkBAIC0zNTIyLDcgKzM1MjIsNyBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvdmFsb3BzLmMKICB7CiAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZjsK ICAgIHN0cnVjdCB2YWx1ZSAqdmFsID0gZmluZF9mdW5jdGlvbl9pbl9pbmZlcmlvciAoIm1hbGxv YyIsICZvYmpmKTsKLUBAIC0yNjIsNyArMjYyLDggQEAgdmFsdWVfY2FzdF9zdHJ1Y3RzIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgcworQEAgLTI2MSw3ICsyNjEsOCBAQCB2YWx1ZV9jYXN0X3N0cnVjdHMg KHN0cnVjdCB0eXBlICp0eXBlLCBzCiAgICBpZiAoVFlQRV9OQU1FICh0MikgIT0gTlVMTCkKICAg ICAgewogICAgICAgIC8qIFRyeSBkb3duY2FzdGluZyB1c2luZyB0aGUgcnVuLXRpbWUgdHlwZSBv ZiB0aGUgdmFsdWUuICAqLwpAQCAtMzUzMiw3ICszNTMyLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAyMTUvZ2RiL3ZhbG9wcy5jCiAgICAgICAgc3RydWN0IHR5cGUgKnJlYWxfdHlwZTsKICAK ICAgICAgICByZWFsX3R5cGUgPSB2YWx1ZV9ydHRpX3R5cGUgKHYyLCAmZnVsbCwgJnRvcCwgJnVz aW5nX2VuYyk7Ci1AQCAtNDAxLDEyICs0MDIsMTIgQEAgdmFsdWVfY2FzdCAoc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCB2YQorQEAgLTQwMCwxMiArNDAxLDEyIEBAIHZhbHVlX2Nhc3QgKHN0cnVj dCB0eXBlICp0eXBlLCBzdHJ1Y3QgdmEKICAgIGlmIChjb2RlMSA9PSBUWVBFX0NPREVfQVJSQVkp CiAgICAgIHsKICAgICAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlID0gVFlQRV9UQVJHRVRf VFlQRSAodHlwZSk7CkBAIC0zNTQ3LDcgKzM1NDcsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvdmFsb3BzLmMKICAJICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZCwgbmV3 X2xlbmd0aDsKICAKICAJICBpZiAoZ2V0X2Rpc2NyZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwgJmxv d19ib3VuZCwgJmhpZ2hfYm91bmQpIDwgMCkKLUBAIC02NDAsNyArNjQxLDcgQEAgdmFsdWVfcmVp bnRlcnByZXRfY2FzdCAoc3RydWN0IHR5cGUgKnR5cAorQEAgLTYzOSw3ICs2NDAsNyBAQCB2YWx1 ZV9yZWludGVycHJldF9jYXN0IChzdHJ1Y3QgdHlwZSAqdHlwCiAgc3RhdGljIGludAogIGR5bmFt aWNfY2FzdF9jaGVja18xIChzdHJ1Y3QgdHlwZSAqZGVzaXJlZF90eXBlLAogIAkJICAgICAgY29u c3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC0zNTU2LDcgKzM1NTYsNyBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvdmFsb3BzLmMKICAJCSAgICAgIENPUkVfQUREUiBhZGRyZXNzLAog IAkJICAgICAgc3RydWN0IHZhbHVlICp2YWwsCiAgCQkgICAgICBzdHJ1Y3QgdHlwZSAqc2VhcmNo X3R5cGUsCi1AQCAtNjUyLDggKzY1Myw4IEBAIGR5bmFtaWNfY2FzdF9jaGVja18xIChzdHJ1Y3Qg dHlwZSAqZGVzaXIKK0BAIC02NTEsOCArNjUyLDggQEAgZHluYW1pY19jYXN0X2NoZWNrXzEgKHN0 cnVjdCB0eXBlICpkZXNpcgogIAogICAgZm9yIChpID0gMDsgaSA8IFRZUEVfTl9CQVNFQ0xBU1NF UyAoc2VhcmNoX3R5cGUpICYmIHJlc3VsdF9jb3VudCA8IDI7ICsraSkKICAgICAgewpAQCAtMzU2 Nyw3ICszNTY3LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9wcy5jCiAg CiAgICAgICAgaWYgKGNsYXNzX3R5cGVzX3NhbWVfcCAoZGVzaXJlZF90eXBlLCBUWVBFX0JBU0VD TEFTUyAoc2VhcmNoX3R5cGUsIGkpKSkKICAJewotQEAgLTY4Nyw3ICs2ODgsNyBAQCBkeW5hbWlj X2Nhc3RfY2hlY2tfMSAoc3RydWN0IHR5cGUgKmRlc2lyCitAQCAtNjg2LDcgKzY4Nyw3IEBAIGR5 bmFtaWNfY2FzdF9jaGVja18xIChzdHJ1Y3QgdHlwZSAqZGVzaXIKICBzdGF0aWMgaW50CiAgZHlu YW1pY19jYXN0X2NoZWNrXzIgKHN0cnVjdCB0eXBlICpkZXNpcmVkX3R5cGUsCiAgCQkgICAgICBj b25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTM1NzYsNyArMzU3Niw3IEBAIEluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi92YWxvcHMuYwogIAkJICAgICAgQ09SRV9BRERSIGFkZHJlc3Ms CiAgCQkgICAgICBzdHJ1Y3QgdmFsdWUgKnZhbCwKICAJCSAgICAgIHN0cnVjdCB0eXBlICpzZWFy Y2hfdHlwZSwKLUBAIC02OTcsNyArNjk4LDcgQEAgZHluYW1pY19jYXN0X2NoZWNrXzIgKHN0cnVj dCB0eXBlICpkZXNpcgorQEAgLTY5Niw3ICs2OTcsNyBAQCBkeW5hbWljX2Nhc3RfY2hlY2tfMiAo c3RydWN0IHR5cGUgKmRlc2lyCiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9OX0JBU0VDTEFT U0VTIChzZWFyY2hfdHlwZSkgJiYgcmVzdWx0X2NvdW50IDwgMjsgKytpKQogICAgICB7CkBAIC0z NTg1LDcgKzM1ODUsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsb3BzLmMK ICAKICAgICAgICBpZiAoISBCQVNFVFlQRV9WSUFfUFVCTElDIChzZWFyY2hfdHlwZSwgaSkpCiAg CWNvbnRpbnVlOwotQEAgLTcyOCw3ICs3MjksOCBAQCBkeW5hbWljX2Nhc3RfY2hlY2tfMiAoc3Ry dWN0IHR5cGUgKmRlc2lyCitAQCAtNzI3LDcgKzcyOCw4IEBAIGR5bmFtaWNfY2FzdF9jaGVja18y IChzdHJ1Y3QgdHlwZSAqZGVzaXIKICBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2R5bmFtaWNfY2Fz dCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB2YWx1ZSAqYXJnKQogIHsKQEAgLTM1OTUsNyAr MzU5NSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxvcHMuYwogICAgc3Ry dWN0IHR5cGUgKnJlc29sdmVkX3R5cGUgPSBjaGVja190eXBlZGVmICh0eXBlKTsKICAgIHN0cnVj dCB0eXBlICphcmdfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykpOwogICAg c3RydWN0IHR5cGUgKmNsYXNzX3R5cGUsICpydHRpX3R5cGU7Ci1AQCAtMTE4MSw3ICsxMTgzLDcg QEAgdmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCitAQCAtMTAwNyw3ICsxMDA5 LDcgQEAgdmFsdWVfYXRfbGF6eSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQQogIH0KICAKICB2 b2lkCkBAIC0zNjA0LDcgKzM2MDQsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIv dmFsb3BzLmMKICAJCSAgIGludCBzdGFjaywgQ09SRV9BRERSIG1lbWFkZHIsCiAgCQkgICBnZGJf Ynl0ZSAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoKQogIHsKLUBAIC0xMzMyLDcgKzEzMzQsNyBAQCB2 YWx1ZV9hc3NpZ24gKHN0cnVjdCB2YWx1ZSAqdG92YWwsIHN0cnVjCitAQCAtMTE1Nyw3ICsxMTU5 LDcgQEAgdmFsdWVfYXNzaWduIChzdHJ1Y3QgdmFsdWUgKnRvdmFsLCBzdHJ1YwogICAgICAgIHsK ICAJY29uc3QgZ2RiX2J5dGUgKmRlc3RfYnVmZmVyOwogIAlDT1JFX0FERFIgY2hhbmdlZF9hZGRy OwpAQCAtMzYxMyw3ICszNjEzLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Zh bG9wcy5jCiAgICAgICAgICBnZGJfYnl0ZSBidWZmZXJbc2l6ZW9mIChMT05HRVNUKV07CiAgCiAg CWlmICh2YWx1ZV9iaXRzaXplICh0b3ZhbCkpCi1AQCAtMTQxMSw3ICsxNDEzLDcgQEAgdmFsdWVf YXNzaWduIChzdHJ1Y3QgdmFsdWUgKnRvdmFsLCBzdHJ1YworQEAgLTEyMzYsNyArMTIzOCw3IEBA IHZhbHVlX2Fzc2lnbiAoc3RydWN0IHZhbHVlICp0b3ZhbCwgc3RydWMKICAJICAgIGlmICh2YWx1 ZV9iaXRzaXplICh0b3ZhbCkpCiAgCSAgICAgIHsKICAJCXN0cnVjdCB2YWx1ZSAqcGFyZW50ID0g dmFsdWVfcGFyZW50ICh0b3ZhbCk7CkBAIC0zNjIyLDcgKzM2MjIsNyBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvdmFsb3BzLmMKICAJCWludCBjaGFuZ2VkX2xlbjsKICAJCWdkYl9i eXRlIGJ1ZmZlcltzaXplb2YgKExPTkdFU1QpXTsKICAJCWludCBvcHRpbSwgdW5hdmFpbDsKLUBA IC0xODkxLDcgKzE4OTMsNyBAQCB2YWx1ZV9hcnJheSAoaW50IGxvd2JvdW5kLCBpbnQgaGlnaGJv dW5kCitAQCAtMTcxNiw3ICsxNzE4LDcgQEAgdmFsdWVfYXJyYXkgKGludCBsb3dib3VuZCwgaW50 IGhpZ2hib3VuZAogIHsKICAgIGludCBuZWxlbTsKICAgIGludCBpZHg7CkBAIC0zNjMxLDcgKzM2 MzEsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsb3BzLmMKICAgIHN0cnVj dCB2YWx1ZSAqdmFsOwogICAgc3RydWN0IHR5cGUgKmFycmF5dHlwZTsKICAKLUBAIC0yMDY2LDcg KzIwNjgsNyBAQCB0eXBlY21wIChpbnQgc3RhdGljcCwgaW50IHZhcmFyZ3MsIGludCBuCitAQCAt MTg5MSw3ICsxODkzLDcgQEAgdHlwZWNtcCAoaW50IHN0YXRpY3AsIGludCB2YXJhcmdzLCBpbnQg bgogIAogIHN0YXRpYyB2b2lkCiAgdXBkYXRlX3NlYXJjaF9yZXN1bHQgKHN0cnVjdCB2YWx1ZSAq KnJlc3VsdF9wdHIsIHN0cnVjdCB2YWx1ZSAqdiwKQEAgLTM2NDAsNyArMzY0MCw3IEBAIEluZGV4 OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxvcHMuYwogIAkJICAgICAgY29uc3QgY2hhciAq bmFtZSwgc3RydWN0IHR5cGUgKnR5cGUpCiAgewogICAgaWYgKHYgIT0gTlVMTCkKLUBAIC0yMDkw LDEwICsyMDkyLDEwIEBAIHVwZGF0ZV9zZWFyY2hfcmVzdWx0IChzdHJ1Y3QgdmFsdWUgKipyZXMK K0BAIC0xOTE1LDEwICsxOTE3LDEwIEBAIHVwZGF0ZV9zZWFyY2hfcmVzdWx0IChzdHJ1Y3QgdmFs dWUgKipyZXMKICAgICBsb29rdXAgaXMgYW1iaWd1b3VzLiAgKi8KICAKICBzdGF0aWMgdm9pZApA QCAtMzY1Myw3ICszNjUzLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9w cy5jCiAgCQkJc3RydWN0IHR5cGUgKm91dGVybW9zdF90eXBlKQogIHsKICAgIGludCBpOwotQEAg LTIxNDgsNyArMjE1MCw3IEBAIGRvX3NlYXJjaF9zdHJ1Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5h bWUKK0BAIC0xOTczLDcgKzE5NzUsNyBAQCBkb19zZWFyY2hfc3RydWN0X2ZpZWxkIChjb25zdCBj aGFyICpuYW1lCiAgCQkgICA8dmFyaWFudCBmaWVsZD4uICAqLwogIAogIAkJc3RydWN0IHZhbHVl ICp2ID0gTlVMTDsKQEAgLTM2NjIsNyArMzY2Miw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi92YWxvcHMuYwogIAogIAkJLyogVGhpcyBpcyBwcmV0dHkgZ3Jvc3MuICBJbiBHKyss IHRoZSBvZmZzZXQgaW4gYW4KICAJCSAgIGFub255bW91cyB1bmlvbiBpcyByZWxhdGl2ZSB0byB0 aGUgYmVnaW5uaW5nIG9mIHRoZQotQEAgLTIxODcsNyArMjE4OSw3IEBAIGRvX3NlYXJjaF9zdHJ1 Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5hbWUKK0BAIC0yMDEyLDcgKzIwMTQsNyBAQCBkb19zZWFy Y2hfc3RydWN0X2ZpZWxkIChjb25zdCBjaGFyICpuYW1lCiAgCQkJICAgICAmJiAoc3RyY21wX2l3 IChuYW1lLCAKICAJCQkJCSAgICBUWVBFX0JBU0VDTEFTU19OQU1FICh0eXBlLCAKICAJCQkJCQkJ CSBpKSkgPT0gMCkpOwpAQCAtMzY3MSw3ICszNjcxLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAyMTUvZ2RiL3ZhbG9wcy5jCiAgCiAgICAgICAgaWYgKEJBU0VUWVBFX1ZJQV9WSVJUVUFMICh0 eXBlLCBpKSkKICAJewotQEAgLTIyNjIsMTEgKzIyNjQsMTEgQEAgZG9fc2VhcmNoX3N0cnVjdF9m aWVsZCAoY29uc3QgY2hhciAqbmFtZQorQEAgLTIwODcsMTEgKzIwODksMTEgQEAgZG9fc2VhcmNo X3N0cnVjdF9maWVsZCAoY29uc3QgY2hhciAqbmFtZQogICAgIGZpZWxkcywgbG9vayBmb3IgYSBi YXNlY2xhc3MgbmFtZWQgTkFNRS4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCkBAIC0z Njg1LDcgKzM2ODUsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsb3BzLmMK ICAKICAgIGRvX3NlYXJjaF9zdHJ1Y3RfZmllbGQgKG5hbWUsIGFyZzEsIG9mZnNldCwgdHlwZSwg bG9va2luZ19mb3JfYmFzZWNsYXNzLAogIAkJCSAgJnJlc3VsdCwgJmJvZmZzZXQsIHR5cGUpOwot QEAgLTIyODMsNyArMjI4NSw3IEBAIHNlYXJjaF9zdHJ1Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5h bWUsIHMKK0BAIC0yMTA4LDcgKzIxMTAsNyBAQCBzZWFyY2hfc3RydWN0X2ZpZWxkIChjb25zdCBj aGFyICpuYW1lLCBzCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCiAgc2VhcmNoX3N0cnVjdF9t ZXRob2QgKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCB2YWx1ZSAqKmFyZzFwLApAQCAtMzY5NCw3 ICszNjk0LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9wcy5jCiAgCQkg ICAgICBpbnQgKnN0YXRpY19tZW1mdW5jcCwgc3RydWN0IHR5cGUgKnR5cGUpCiAgewogICAgaW50 IGk7Ci1AQCAtMjM0Nyw4ICsyMzQ5LDggQEAgc2VhcmNoX3N0cnVjdF9tZXRob2QgKGNvbnN0IGNo YXIgKm5hbWUsCitAQCAtMjE3Miw4ICsyMTc0LDggQEAgc2VhcmNoX3N0cnVjdF9tZXRob2QgKGNv bnN0IGNoYXIgKm5hbWUsCiAgCiAgICBmb3IgKGkgPSBUWVBFX05fQkFTRUNMQVNTRVMgKHR5cGUp IC0gMTsgaSA+PSAwOyBpLS0pCiAgICAgIHsKQEAgLTM3MDUsNyArMzcwNSw3IEBAIEluZGV4OiBn ZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxvcHMuYwogIAogICAgICAgIGlmIChCQVNFVFlQRV9W SUFfVklSVFVBTCAodHlwZSwgaSkpCiAgCXsKLUBAIC0yNTMwLDggKzI1MzIsOCBAQCB2YWx1ZV9z dHJ1Y3RfZWx0IChzdHJ1Y3QgdmFsdWUgKiphcmdwLCBzCitAQCAtMjM1NSw4ICsyMzU3LDggQEAg dmFsdWVfc3RydWN0X2VsdCAoc3RydWN0IHZhbHVlICoqYXJncCwgcwogIAogIHN0YXRpYyBzdHJ1 Y3QgZm5fZmllbGQgKgogIGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGNv bnN0IGNoYXIgKm1ldGhvZCwKQEAgLTM3MTYsNyArMzcxNiw3IEBAIEluZGV4OiBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi92YWxvcHMuYwogIHsKICAgIGludCBpOwogICAgc3RydWN0IGZuX2ZpZWxk ICpmOwotQEAgLTI1NjQsNyArMjU2Niw3IEBAIGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1 ZSAqKmFyZ3AsIGMKK0BAIC0yMzg5LDcgKzIzOTEsNyBAQCBmaW5kX21ldGhvZF9saXN0IChzdHJ1 Y3QgdmFsdWUgKiphcmdwLCBjCiAgICAvKiBOb3QgZm91bmQgaW4gb2JqZWN0LCBjaGVjayBpbiBi YXNlIHN1Ym9iamVjdHMuICAqLwogICAgZm9yIChpID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0eXBl KSAtIDE7IGkgPj0gMDsgaS0tKQogICAgICB7CkBAIC0zNzI1LDcgKzM3MjUsNyBAQCBJbmRleDog Z2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsb3BzLmMKICAKICAgICAgICBpZiAoQkFTRVRZUEVf VklBX1ZJUlRVQUwgKHR5cGUsIGkpKQogIAl7Ci1AQCAtMjYwMCw3ICsyNjAyLDcgQEAgZmluZF9t ZXRob2RfbGlzdCAoc3RydWN0IHZhbHVlICoqYXJncCwgYworQEAgLTI0MjUsNyArMjQyNyw3IEBA IGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGMKICBzdGF0aWMgc3RydWN0 IGZuX2ZpZWxkICoKICB2YWx1ZV9maW5kX29sb2FkX21ldGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUg KiphcmdwLCBjb25zdCBjaGFyICptZXRob2QsCiAgCQkJICAgICAgaW50IG9mZnNldCwgaW50ICpu dW1fZm5zLCAKQEAgLTM3MzQsNyArMzczNCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1 L2dkYi92YWxvcHMuYwogIHsKICAgIHN0cnVjdCB0eXBlICp0OwogIAotQEAgLTI2OTAsNyArMjY5 Miw3IEBAIGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0cnVjdCB2YWx1ZSAqKmFyZ3MKK0BAIC0yNTE1 LDcgKzI1MTcsNyBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdmFsdWUgKiphcmdzCiAg ICAvKiBOdW1iZXIgb2Ygb3ZlcmxvYWRlZCBpbnN0YW5jZXMgYmVpbmcgY29uc2lkZXJlZC4gICov CiAgICBpbnQgbnVtX2ZucyA9IDA7CiAgICBzdHJ1Y3QgdHlwZSAqYmFzZXR5cGUgPSBOVUxMOwpA QCAtMzc0Myw3ICszNzQzLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9w cy5jCiAgCiAgICBzdHJ1Y3QgY2xlYW51cCAqYWxsX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwIChu dWxsX2NsZWFudXAsIE5VTEwpOwogIAotQEAgLTMzNjAsNyArMzM2Miw3IEBAIGNvbXBhcmVfcGFy YW1ldGVycyAoc3RydWN0IHR5cGUgKnQxLCBzdHIKK0BAIC0zMTg1LDcgKzMxODcsNyBAQCBjb21w YXJlX3BhcmFtZXRlcnMgKHN0cnVjdCB0eXBlICp0MSwgc3RyCiAgICAgdGhlIGZvcm0gIkRPTUFJ Tjo6TkFNRSIuICAqLwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAtMzc1Miw3ICszNzUy LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9wcy5jCiAgCQkJCXN0cnVj dCB0eXBlICpjdXJ0eXBlLCBjaGFyICpuYW1lLAogIAkJCQlzdHJ1Y3QgdHlwZSAqaW50eXBlLCAK ICAJCQkJaW50IHdhbnRfYWRkcmVzcywKLUBAIC0zMzk3LDcgKzMzOTksNyBAQCB2YWx1ZV9zdHJ1 Y3RfZWx0X2Zvcl9yZWZlcmVuY2UgKHN0cnVjdCB0CitAQCAtMzIyMiw3ICszMjI0LDcgQEAgdmFs dWVfc3RydWN0X2VsdF9mb3JfcmVmZXJlbmNlIChzdHJ1Y3QgdAogIAkgIGlmICh3YW50X2FkZHJl c3MpCiAgCSAgICByZXR1cm4gdmFsdWVfZnJvbV9sb25nZXN0CiAgCSAgICAgIChsb29rdXBfbWVt YmVycHRyX3R5cGUgKFRZUEVfRklFTERfVFlQRSAodCwgaSksIGRvbWFpbiksCkBAIC0zNzYxLDcg KzM3NjEsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsb3BzLmMKICAJICBl bHNlIGlmIChub3NpZGUgPT0gRVZBTF9BVk9JRF9TSURFX0VGRkVDVFMpCiAgCSAgICByZXR1cm4g YWxsb2NhdGVfdmFsdWUgKFRZUEVfRklFTERfVFlQRSAodCwgaSkpOwogIAkgIGVsc2UKLUBAIC0z NTQwLDcgKzM1NDIsNyBAQCB2YWx1ZV9zdHJ1Y3RfZWx0X2Zvcl9yZWZlcmVuY2UgKHN0cnVjdCB0 CitAQCAtMzM2NSw3ICszMzY3LDcgQEAgdmFsdWVfc3RydWN0X2VsdF9mb3JfcmVmZXJlbmNlIChz dHJ1Y3QgdAogICAgZm9yIChpID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0KSAtIDE7IGkgPj0gMDsg aS0tKQogICAgICB7CiAgICAgICAgc3RydWN0IHZhbHVlICp2OwpAQCAtMzc3MCw3ICszNzcwLDcg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9wcy5jCiAgCiAgICAgICAgaWYg KEJBU0VUWVBFX1ZJQV9WSVJUVUFMICh0LCBpKSkKICAJYmFzZV9vZmZzZXQgPSAwOwotQEAgLTM2 MzAsNyArMzYzMiw3IEBAIHZhbHVlX21heWJlX25hbWVzcGFjZV9lbHQgKGNvbnN0IHN0cnVjdAor QEAgLTM0NTUsNyArMzQ1Nyw3IEBAIHZhbHVlX21heWJlX25hbWVzcGFjZV9lbHQgKGNvbnN0IHN0 cnVjdAogIAogIHN0cnVjdCB0eXBlICoKICB2YWx1ZV9ydHRpX2luZGlyZWN0X3R5cGUgKHN0cnVj dCB2YWx1ZSAqdiwgaW50ICpmdWxsLCAKQEAgLTM3NzksNyArMzc3OSw3IEBAIEluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi92YWxvcHMuYwogIHsKICAgIHN0cnVjdCB2YWx1ZSAqdGFyZ2V0 OwogICAgc3RydWN0IHR5cGUgKnR5cGUsICpyZWFsX3R5cGUsICp0YXJnZXRfdHlwZTsKLUBAIC0z NjgwLDEyICszNjgyLDEyIEBAIHZhbHVlX3J0dGlfaW5kaXJlY3RfdHlwZSAoc3RydWN0IHZhbHVl ICoKK0BAIC0zNTA1LDEyICszNTA3LDEyIEBAIHZhbHVlX3J0dGlfaW5kaXJlY3RfdHlwZSAoc3Ry dWN0IHZhbHVlICoKICBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2Z1bGxfb2JqZWN0IChzdHJ1Y3Qg dmFsdWUgKmFyZ3AsIAogIAkJICAgc3RydWN0IHR5cGUgKnJ0eXBlLCAKQEAgLTM3OTQsMTEgKzM3 OTQsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9wcy5jCiAgICBpbnQg dXNpbmdfZW5jID0gMDsKICAgIHN0cnVjdCB2YWx1ZSAqbmV3X3ZhbDsKICAKLUluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi92YWxwcmludC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMvZ2RiL3ZhbHByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1 Lm9yaWcvZ2RiL3ZhbHByaW50LmMJMjAxMy0wMi0xNSAyMjozMTozNy4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxwcmludC5jCTIwMTMtMDItMTUgMjI6NDA6 MTguNTQ1NjIyMTA0ICswMTAwCi1AQCAtMjk5LDcgKzI5OSw3IEBAIHNjYWxhcl90eXBlX3AgKHN0 cnVjdCB0eXBlICp0eXBlKQorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3Zh bHByaW50LmMJMjAxMy0wOC0wMiAxNjozODoyNi40NjgyOTIyNDcgKzAyMDAKKysrKyBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy9nZGIvdmFscHJpbnQuYwkyMDEzLTA4LTAyIDE2OjM4OjMyLjM3NjMw MDc2MSArMDIwMAorQEAgLTMwMiw3ICszMDIsNyBAQCBzY2FsYXJfdHlwZV9wIChzdHJ1Y3QgdHlw ZSAqdHlwZSkKICBpbnQKICB2YWxwcmludF9jaGVja192YWxpZGl0eSAoc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwKICAJCQkgc3RydWN0IHR5cGUgKnR5cGUsCkBAIC0zODA3LDcgKzM4MDcsNyBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFscHJpbnQuYwogIAkJCSBjb25zdCBzdHJ1 Y3QgdmFsdWUgKnZhbCkKICB7CiAgICBDSEVDS19UWVBFREVGICh0eXBlKTsKLUBAIC0zNjMsNyAr MzYzLDcgQEAgdmFsX3ByaW50X2ludmFsaWRfYWRkcmVzcyAoc3RydWN0IHVpX2ZpbAorQEAgLTM2 Niw3ICszNjYsNyBAQCB2YWxfcHJpbnRfaW52YWxpZF9hZGRyZXNzIChzdHJ1Y3QgdWlfZmlsCiAg CiAgdm9pZAogIGdlbmVyaWNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2Ri X2J5dGUgKnZhbGFkZHIsCkBAIC0zODE2LDcgKzM4MTYsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDIxNS9nZGIvdmFscHJpbnQuYwogIAkJICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50 IHJlY3Vyc2UsCiAgCQkgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKm9yaWdpbmFsX3ZhbHVlLAogIAkJ ICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCi1AQCAtNzI1LDcg KzcyNSw3IEBAIGdlbmVyaWNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY28KK0BAIC03 MjgsNyArNzI4LDcgQEAgZ2VuZXJpY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjbwog ICAgIFJFQ1VSU0UuICAqLwogIAogIHZvaWQKQEAgLTM4MjUsNyArMzgyNSw3IEBAIEluZGV4OiBn ZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxwcmludC5jCiAgCSAgIENPUkVfQUREUiBhZGRyZXNz LCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJICAgY29uc3Qgc3RydWN0 IHZhbHVlICp2YWwsCiAgCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRp b25zLAotQEAgLTkzNyw3ICs5MzcsNyBAQCB2YWxfcHJpbnRfdHlwZV9jb2RlX2ZsYWdzIChzdHJ1 Y3QgdHlwZSAqCitAQCAtOTQwLDcgKzk0MCw3IEBAIHZhbF9wcmludF90eXBlX2NvZGVfZmxhZ3Mg KHN0cnVjdCB0eXBlICoKICAKICB2b2lkCiAgdmFsX3ByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHN0 cnVjdCB0eXBlICp0eXBlLApAQCAtMzgzNCw3ICszODM0LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAyMTUvZ2RiL3ZhbHByaW50LmMKICAJCQkgICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWws CiAgCQkJICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAogIAkJ CSAgICBpbnQgc2l6ZSwKLUBAIC0xNDc4LDcgKzE0NzgsNyBAQCBwcmludF9kZWNpbWFsX2NoYXJz IChzdHJ1Y3QgdWlfZmlsZSAqc3RyCitAQCAtMTQ4MSw3ICsxNDgxLDcgQEAgcHJpbnRfZGVjaW1h bF9jaGFycyAoc3RydWN0IHVpX2ZpbGUgKnN0cgogIAogIHZvaWQKICBwcmludF9oZXhfY2hhcnMg KHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtMzg0 Myw3ICszODQzLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHByaW50LmMK ICB7CiAgICBjb25zdCBnZGJfYnl0ZSAqcDsKICAKLUBAIC0xNTk1LDIzICsxNTk1LDIzIEBAIG1h eWJlX3ByaW50X2FycmF5X2luZGV4IChzdHJ1Y3QgdHlwZSAqaW4KK0BAIC0xNTk4LDIzICsxNTk4 LDIzIEBAIG1heWJlX3ByaW50X2FycmF5X2luZGV4IChzdHJ1Y3QgdHlwZSAqaW4KICAKICB2b2lk CiAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwKQEAgLTM4NzMs NyArMzg3Myw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxwcmludC5jCiAg ICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKICAgIHN0cnVjdCBjbGVhbnVwICpiYWNr X3RvOwogICAgQ09SRV9BRERSIHNhdmVkX2FkZHJlc3MgPSBhZGRyZXNzOwotQEAgLTE3MDYsNyAr MTcwNiw3IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnQKK0BAIC0x NzA5LDcgKzE3MDksNyBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0 CiAgCQkgICAgIGFkZHJlc3MsIHN0cmVhbSwgcmVjdXJzZSArIDEsIHZhbCwgb3B0aW9ucywKICAJ CSAgICAgY3VycmVudF9sYW5ndWFnZSk7CiAgCSAgYW5ub3RhdGVfZWx0X3JlcCAocmVwcyk7CkBA IC0zODgyLDcgKzM4ODIsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFscHJp bnQuYwogIAkgIGFubm90YXRlX2VsdF9yZXBfZW5kICgpOwogIAogIAkgIGkgPSByZXAxIC0gMTsK LUBAIC0yMzU3LDcgKzIzNTcsNyBAQCBwcmludF9jb252ZXJ0ZWRfY2hhcnNfdG9fb2JzdGFjayAo c3RydWN0CitAQCAtMjM2MCw3ICsyMzYwLDcgQEAgcHJpbnRfY29udmVydGVkX2NoYXJzX3RvX29i c3RhY2sgKHN0cnVjdAogIAogIHZvaWQKICBnZW5lcmljX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgCkBAIC0zODkxLDExICszODkxLDExIEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxwcmludC5jCiAgCQkgIGNvbnN0IGNoYXIg KmVuY29kaW5nLCBpbnQgZm9yY2VfZWxsaXBzZXMsCiAgCQkgIGludCBxdW90ZV9jaGFyLCBpbnQg Y19zdHlsZV90ZXJtaW5hdG9yLAogIAkJICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9u cyAqb3B0aW9ucykKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxwcmludC5oCitJ bmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3ZhbHByaW50LmgKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL3ZhbHByaW50LmgJMjAxMy0wMS0wOCAw MzowMDozNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxw cmludC5oCTIwMTMtMDItMTUgMjI6NDA6MTguNTQ1NjIyMTA0ICswMTAwCi1AQCAtMTEzLDExICsx MTMsMTEgQEAgZXh0ZXJuIHZvaWQgbWF5YmVfcHJpbnRfYXJyYXlfaW5kZXggKHN0cgorLS0tIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3ZhbHByaW50LmgJMjAxMy0wOC0wMiAxNjoz ODoyNi40NjkyOTIyNDggKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdmFs cHJpbnQuaAkyMDEzLTA4LTAyIDE2OjM4OjMyLjM3NjMwMDc2MSArMDIwMAorQEAgLTExNSwxMSAr MTE1LDExIEBAIGV4dGVybiB2b2lkIG1heWJlX3ByaW50X2FycmF5X2luZGV4IChzdHIKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwK ICAJCQkJICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKICAKQEAgLTM5 MDksNyArMzkwOSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxwcmludC5o CiAgCiAgZXh0ZXJuIHZvaWQgdmFsX3ByaW50X3R5cGVfY29kZV9pbnQgKHN0cnVjdCB0eXBlICos IGNvbnN0IGdkYl9ieXRlICosCiAgCQkJCSAgICAgc3RydWN0IHVpX2ZpbGUgKik7Ci1AQCAtMTI3 LDcgKzEyNyw3IEBAIGV4dGVybiB2b2lkIHZhbF9wcmludF90eXBlX2NvZGVfZmxhZ3MgKHMKK0BA IC0xMjksNyArMTI5LDcgQEAgZXh0ZXJuIHZvaWQgdmFsX3ByaW50X3R5cGVfY29kZV9mbGFncyAo cwogIAkJCQkgICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7CiAgCiAgZXh0ZXJuIHZvaWQg dmFsX3ByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHN0cnVjdCB0eXBlICosCkBAIC0zOTE4LDcgKzM5 MTgsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFscHJpbnQuaAogIAkJCQkJ Y29uc3Qgc3RydWN0IHZhbHVlICosCiAgCQkJCQljb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0 aW9ucyAqLAogIAkJCQkJaW50LAotQEAgLTE0Myw3ICsxNDMsNyBAQCBleHRlcm4gdm9pZCBwcmlu dF9kZWNpbWFsX2NoYXJzIChzdHJ1Y3QKK0BAIC0xNDUsNyArMTQ1LDcgQEAgZXh0ZXJuIHZvaWQg cHJpbnRfZGVjaW1hbF9jaGFycyAoc3RydWN0CiAgCQkJCSB1bnNpZ25lZCBpbnQsIGVudW0gYmZk X2VuZGlhbik7CiAgCiAgZXh0ZXJuIHZvaWQgcHJpbnRfaGV4X2NoYXJzIChzdHJ1Y3QgdWlfZmls ZSAqLCBjb25zdCBnZGJfYnl0ZSAqLApAQCAtMzkyNyw3ICszOTI3LDcgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHByaW50LmgKICAKICBleHRlcm4gdm9pZCBwcmludF9jaGFy X2NoYXJzIChzdHJ1Y3QgdWlfZmlsZSAqLCBzdHJ1Y3QgdHlwZSAqLAogIAkJCSAgICAgIGNvbnN0 IGdkYl9ieXRlICosIHVuc2lnbmVkIGludCwgZW51bSBiZmRfZW5kaWFuKTsKLUBAIC0xODgsNyAr MTg4LDcgQEAgc3RydWN0IGdlbmVyaWNfdmFsX3ByaW50X2RlY29yYXRpb25zCitAQCAtMTkwLDcg KzE5MCw3IEBAIHN0cnVjdCBnZW5lcmljX3ZhbF9wcmludF9kZWNvcmF0aW9ucwogIAogIAogIGV4 dGVybiB2b2lkIGdlbmVyaWNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2Ri X2J5dGUgKnZhbGFkZHIsCkBAIC0zOTM2LDcgKzM5MzYsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDIxNS9nZGIvdmFscHJpbnQuaAogIAkJCSAgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt LCBpbnQgcmVjdXJzZSwKICAJCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlICpvcmlnaW5hbF92 YWx1ZSwKICAJCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlv bnMsCi1AQCAtMTk4LDcgKzE5OCw3IEBAIGV4dGVybiB2b2lkIGdlbmVyaWNfZW1pdF9jaGFyIChp bnQgYywgc3QKK0BAIC0yMDAsNyArMjAwLDcgQEAgZXh0ZXJuIHZvaWQgZ2VuZXJpY19lbWl0X2No YXIgKGludCBjLCBzdAogIAkJCSAgICAgICBpbnQgcXVvdGVyLCBjb25zdCBjaGFyICplbmNvZGlu Zyk7CiAgCiAgZXh0ZXJuIHZvaWQgZ2VuZXJpY19wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwgc3RydWN0IHR5cGUgKnR5cGUsIApAQCAtMzk0NSwxMSArMzk0NSwxMSBAQCBJbmRleDog Z2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFscHJpbnQuaAogIAkJCSAgICAgIGNvbnN0IGNoYXIg KmVuY29kaW5nLCBpbnQgZm9yY2VfZWxsaXBzZXMsCiAgCQkJICAgICAgaW50IHF1b3RlX2NoYXIs IGludCBjX3N0eWxlX3Rlcm1pbmF0b3IsCiAgCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgKm9wdGlvbnMpOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Zh bHVlLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdmFsdWUuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvdmFsdWUuYwkyMDEzLTAyLTE1 IDIyOjM3OjA0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Zh bHVlLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41NDU2MjIxMDQgKzAxMDAKLUBAIC02OCwxMCArNjgs MTAgQEAgc3RydWN0IGludGVybmFsX2Z1bmN0aW9uCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMub3JpZy9nZGIvdmFsdWUuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ3MTI5MjI1MSArMDIwMAor KysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi92YWx1ZS5jCTIwMTMtMDgtMDIgMTY6NDE6 MTMuMTA1NTI3NDgzICswMjAwCitAQCAtNjksMTAgKzY5LDEwIEBAIHN0cnVjdCBpbnRlcm5hbF9m dW5jdGlvbgogIHN0cnVjdCByYW5nZQogIHsKICAgIC8qIExvd2VzdCBvZmZzZXQgaW4gdGhlIHJh bmdlLiAgKi8KQEAgLTM5NjIsNyArMzk2Miw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1 L2dkYi92YWx1ZS5jCiAgfTsKICAKICB0eXBlZGVmIHN0cnVjdCByYW5nZSByYW5nZV9zOwotQEAg LTgyLDggKzgyLDggQEAgREVGX1ZFQ19PKHJhbmdlX3MpOworQEAgLTgzLDggKzgzLDggQEAgREVG X1ZFQ19PKHJhbmdlX3MpOwogICAgIFtvZmZzZXQyLCBvZmZzZXQyK2xlbjIpIG92ZXJsYXAuICAq LwogIAogIHN0YXRpYyBpbnQKQEAgLTM5NzMsNyArMzk3Myw3IEBAIEluZGV4OiBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi92YWx1ZS5jCiAgewogICAgVUxPTkdFU1QgaCwgbDsKICAKLUBAIC0xMDcs NyArMTA3LDcgQEAgcmFuZ2VfbGVzc3RoYW4gKGNvbnN0IHJhbmdlX3MgKnIxLCBjb25zdAorQEAg LTEwOCw3ICsxMDgsNyBAQCByYW5nZV9sZXNzdGhhbiAoY29uc3QgcmFuZ2VfcyAqcjEsIGNvbnN0 CiAgICAgT0ZGU0VUK0xFTkdUSCkuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTM5ODIsNyArMzk4 Miw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5jCiAgewogICAgcmFu Z2VfcyB3aGF0OwogICAgaW50IGk7Ci1AQCAtMjQwLDcgKzI0MCw3IEBAIHN0cnVjdCB2YWx1ZQor QEAgLTI0MSw3ICsyNDEsNyBAQCBzdHJ1Y3QgdmFsdWUKICAgICAgIGx2YWwgPT0gbHZhbF9yZWdp c3RlciwgdGhpcyBpcyBhIGZ1cnRoZXIgb2Zmc2V0IGZyb20KICAgICAgIGxvY2F0aW9uLmFkZHJl c3Mgd2l0aGluIHRoZSByZWdpc3RlcnMgc3RydWN0dXJlLiAgTm90ZSBhbHNvIHRoZQogICAgICAg bWVtYmVyIGVtYmVkZGVkX29mZnNldCBiZWxvdy4gICovCkBAIC0zOTkxLDcgKzM5OTEsNyBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsdWUuYwogIAogICAgLyogT25seSB1c2Vk IGZvciBiaXRmaWVsZHM7IG51bWJlciBvZiBiaXRzIGNvbnRhaW5lZCBpbiB0aGVtLiAgKi8KICAg IGludCBiaXRzaXplOwotQEAgLTMxMCw4ICszMTAsOCBAQCBzdHJ1Y3QgdmFsdWUKK0BAIC0zMTEs OCArMzExLDggQEAgc3RydWN0IHZhbHVlCiAgICAgICBgdHlwZScsIGFuZCBgZW1iZWRkZWRfb2Zm c2V0JyBpcyB6ZXJvLCBzbyBldmVyeXRoaW5nIHdvcmtzCiAgICAgICBub3JtYWxseS4gICovCiAg ICBzdHJ1Y3QgdHlwZSAqZW5jbG9zaW5nX3R5cGU7CkBAIC00MDAyLDcgKzQwMDIsNyBAQCBJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsdWUuYwogIAogICAgLyogVmFsdWVzIGFyZSBz dG9yZWQgaW4gYSBjaGFpbiwgc28gdGhhdCB0aGV5IGNhbiBiZSBkZWxldGVkIGVhc2lseQogICAg ICAgb3ZlciBjYWxscyB0byB0aGUgaW5mZXJpb3IuICBWYWx1ZXMgYXNzaWduZWQgdG8gaW50ZXJu YWwKLUBAIC0zMzMsNyArMzMzLDggQEAgc3RydWN0IHZhbHVlCitAQCAtMzM0LDcgKzMzNCw4IEBA IHN0cnVjdCB2YWx1ZQogIH07CiAgCiAgaW50CkBAIC00MDEyLDcgKzQwMTIsNyBAQCBJbmRleDog Z2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsdWUuYwogIHsKICAgIGdkYl9hc3NlcnQgKCF2YWx1 ZS0+bGF6eSk7CiAgCi1AQCAtMzU0LDcgKzM1NSw4IEBAIHZhbHVlX2VudGlyZWx5X2F2YWlsYWJs ZSAoc3RydWN0IHZhbHVlICoKK0BAIC0zNTUsNyArMzU2LDggQEAgdmFsdWVfZW50aXJlbHlfYXZh aWxhYmxlIChzdHJ1Y3QgdmFsdWUgKgogIH0KICAKICB2b2lkCkBAIC00MDIyLDcgKzQwMjIsNyBA QCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsdWUuYwogIHsKICAgIHJhbmdlX3Mg bmV3cjsKICAgIGludCBpOwotQEAgLTUyNSw3ICs1MjcsNyBAQCBtYXJrX3ZhbHVlX2J5dGVzX3Vu YXZhaWxhYmxlIChzdHJ1Y3QgdmFsCitAQCAtNTI2LDcgKzUyOCw3IEBAIG1hcmtfdmFsdWVfYnl0 ZXNfdW5hdmFpbGFibGUgKHN0cnVjdCB2YWwKICAKICBzdGF0aWMgaW50CiAgZmluZF9maXJzdF9y YW5nZV9vdmVybGFwIChWRUMocmFuZ2VfcykgKnJhbmdlcywgaW50IHBvcywKQEAgLTQwMzEsNyAr NDAzMSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5jCiAgewogICAg cmFuZ2VfcyAqcjsKICAgIGludCBpOwotQEAgLTUzOCw5ICs1NDAsOSBAQCBmaW5kX2ZpcnN0X3Jh bmdlX292ZXJsYXAgKFZFQyhyYW5nZV9zKSAqCitAQCAtNTM5LDkgKzU0MSw5IEBAIGZpbmRfZmly c3RfcmFuZ2Vfb3ZlcmxhcCAoVkVDKHJhbmdlX3MpICoKICB9CiAgCiAgaW50CkBAIC00MDQ0LDcg KzQwNDQsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsdWUuYwogIHsKICAg IGludCBpZHgxID0gMCwgaWR4MiA9IDA7CiAgCi1AQCAtNzY4LDEzICs3NzAsMTMgQEAgZGVwcmVj YXRlZF9zZXRfdmFsdWVfdHlwZSAoc3RydWN0IHZhbHVlCitAQCAtNzY3LDEzICs3NjksMTMgQEAg ZGVwcmVjYXRlZF9zZXRfdmFsdWVfdHlwZSAoc3RydWN0IHZhbHVlCiAgICB2YWx1ZS0+dHlwZSA9 IHR5cGU7CiAgfQogIApAQCAtNDA2MCw3ICs0MDYwLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAyMTUvZ2RiL3ZhbHVlLmMKICB7CiAgICB2YWx1ZS0+b2Zmc2V0ID0gb2Zmc2V0OwogIH0KLUBA IC05MjgsOCArOTMwLDkgQEAgdmFsdWVfY29udGVudHNfYWxsIChzdHJ1Y3QgdmFsdWUgKnZhbHVl KQorQEAgLTkzMiw4ICs5MzQsOSBAQCB2YWx1ZV9jb250ZW50c19hbGwgKHN0cnVjdCB2YWx1ZSAq dmFsdWUpCiAgICAgRFNUX09GRlNFVCtMRU5HVEgpIHJhbmdlIGFyZSB3aG9sbHkgYXZhaWxhYmxl LiAgKi8KICAKICB2b2lkCkBAIC00MDcyLDcgKzQwNzIsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDIxNS9nZGIvdmFsdWUuYwogIHsKICAgIHJhbmdlX3MgKnI7CiAgICBpbnQgaTsKLUBAIC05 NzcsOCArOTgwLDggQEAgdmFsdWVfY29udGVudHNfY29weV9yYXcgKHN0cnVjdCB2YWx1ZSAqZAor QEAgLTk4MSw4ICs5ODQsOCBAQCB2YWx1ZV9jb250ZW50c19jb3B5X3JhdyAoc3RydWN0IHZhbHVl ICpkCiAgICAgRFNUX09GRlNFVCtMRU5HVEgpIHJhbmdlIGFyZSB3aG9sbHkgYXZhaWxhYmxlLiAg Ki8KICAKICB2b2lkCkBAIC00MDgzLDcgKzQwODMsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvdmFsdWUuYwogIHsKICAgIHJlcXVpcmVfbm90X29wdGltaXplZF9vdXQgKHNyYyk7 CiAgCi1AQCAtMTA3Miw3ICsxMDc1LDcgQEAgdmFsdWVfZW50aXJlbHlfb3B0aW1pemVkX291dCAo Y29uc3Qgc3RydQorQEAgLTEwODcsNyArMTA5MCw3IEBAIHZhbHVlX2VudGlyZWx5X29wdGltaXpl ZF9vdXQgKGNvbnN0IHN0cnUKICB9CiAgCiAgaW50CkBAIC00MDkyLDcgKzQwOTIsNyBAQCBJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsdWUuYwogIHsKICAgIGlmICghdmFsdWUtPm9w dGltaXplZF9vdXQpCiAgICAgIHJldHVybiAxOwotQEAgLTEwODUsNyArMTA4OCw3IEBAIHZhbHVl X2JpdHNfdmFsaWQgKGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmEKK0BAIC0xMTAwLDcgKzExMDMsNyBA QCB2YWx1ZV9iaXRzX3ZhbGlkIChjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhCiAgCiAgaW50CiAgdmFs dWVfYml0c19zeW50aGV0aWNfcG9pbnRlciAoY29uc3Qgc3RydWN0IHZhbHVlICp2YWx1ZSwKQEAg LTQxMDEsNyArNDEwMSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5j CiAgewogICAgaWYgKHZhbHVlLT5sdmFsICE9IGx2YWxfY29tcHV0ZWQKICAgICAgICB8fCAhdmFs dWUtPmxvY2F0aW9uLmNvbXB1dGVkLmZ1bmNzLT5jaGVja19zeW50aGV0aWNfcG9pbnRlcikKLUBA IC0xMDk1LDI2ICsxMDk4LDI2IEBAIHZhbHVlX2JpdHNfc3ludGhldGljX3BvaW50ZXIgKGNvbnN0 IHN0cnUKK0BAIC0xMTEwLDI2ICsxMTEzLDI2IEBAIHZhbHVlX2JpdHNfc3ludGhldGljX3BvaW50 ZXIgKGNvbnN0IHN0cnUKICAJCQkJCQkJCSAgbGVuZ3RoKTsKICB9CiAgCkBAIC00MTMyLDcgKzQx MzIsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsdWUuYwogIHsKICAgIHZh bHVlLT5wb2ludGVkX3RvX29mZnNldCA9IHZhbDsKICB9Ci1AQCAtMTk2OSw3ICsxOTcyLDcgQEAg Z2V0X2ludGVybmFsdmFyX2Z1bmN0aW9uIChzdHJ1Y3QgaW50ZXJuYQorQEAgLTE5ODIsNyArMTk4 NSw3IEBAIGdldF9pbnRlcm5hbHZhcl9mdW5jdGlvbiAoc3RydWN0IGludGVybmEKICB9CiAgCiAg dm9pZApAQCAtNDE0MSw3ICs0MTQxLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2Ri L3ZhbHVlLmMKICAJCQkgICBpbnQgYml0c2l6ZSwgc3RydWN0IHZhbHVlICpuZXd2YWwpCiAgewog ICAgZ2RiX2J5dGUgKmFkZHI7Ci1AQCAtMjY3Niw3ICsyNjc5LDcgQEAgc2V0X3ZhbHVlX2VuY2xv c2luZ190eXBlIChzdHJ1Y3QgdmFsdWUgKgorQEAgLTI2ODksNyArMjY5Miw3IEBAIHNldF92YWx1 ZV9lbmNsb3NpbmdfdHlwZSAoc3RydWN0IHZhbHVlICoKICAgICBGSUVMRE5PIHNheXMgd2hpY2gg ZmllbGQuICAqLwogIAogIHN0cnVjdCB2YWx1ZSAqCkBAIC00MTUwLDcgKzQxNTAsNyBAQCBJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsdWUuYwogIAkJICAgICAgIGludCBmaWVsZG5v LCBzdHJ1Y3QgdHlwZSAqYXJnX3R5cGUpCiAgewogICAgc3RydWN0IHZhbHVlICp2OwotQEAgLTI3 MDYsNyArMjcwOSw3IEBAIHZhbHVlX3ByaW1pdGl2ZV9maWVsZCAoc3RydWN0IHZhbHVlICphcmcK K0BAIC0yNzE3LDcgKzI3MjAsNyBAQCB2YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1 ZSAqYXJnCiAgCSBiaXQuICBBc3N1bWUgdGhhdCB0aGUgYWRkcmVzcywgb2Zmc2V0LCBhbmQgZW1i ZWRkZWQgb2Zmc2V0CiAgCSBhcmUgc3VmZmljaWVudGx5IGFsaWduZWQuICAqLwogIApAQCAtNDE1 OCw4ICs0MTU4LDggQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHVlLmMKICsg ICAgICBMT05HRVNUIGJpdHBvcyA9IFRZUEVfRklFTERfQklUUE9TIChhcmdfdHlwZSwgZmllbGRu byk7CiAgICAgICAgaW50IGNvbnRhaW5lcl9iaXRzaXplID0gVFlQRV9MRU5HVEggKHR5cGUpICog ODsKICAKLSAgICAgICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7Ci1AQCAtMjcyOSw3 ICsyNzMyLDcgQEAgdmFsdWVfcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKmFyZworICAg ICAgIGlmIChhcmcxLT5vcHRpbWl6ZWRfb3V0KQorQEAgLTI3NDQsNyArMjc0Nyw3IEBAIHZhbHVl X3ByaW1pdGl2ZV9maWVsZCAoc3RydWN0IHZhbHVlICphcmcKICAgICAgICAvKiBUaGlzIGZpZWxk IGlzIGFjdHVhbGx5IGEgYmFzZSBzdWJvYmplY3QsIHNvIHByZXNlcnZlIHRoZQogIAkgZW50aXJl IG9iamVjdCdzIGNvbnRlbnRzIGZvciBsYXRlciByZWZlcmVuY2VzIHRvIHZpcnR1YWwKICAJIGJh c2VzLCBldGMuICAqLwpAQCAtNDE2OCw3ICs0MTY4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAyMTUvZ2RiL3ZhbHVlLmMKICAKICAgICAgICAvKiBMYXp5IHJlZ2lzdGVyIHZhbHVlcyB3aXRo IG9mZnNldHMgYXJlIG5vdCBzdXBwb3J0ZWQuICAqLwogICAgICAgIGlmIChWQUxVRV9MVkFMIChh cmcxKSA9PSBsdmFsX3JlZ2lzdGVyICYmIHZhbHVlX2xhenkgKGFyZzEpKQotQEAgLTI4MDYsNyAr MjgwOSw3IEBAIHZhbHVlX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIGludCBmaWUKK0BAIC0y ODM0LDcgKzI4MzcsNyBAQCB2YWx1ZV9maWVsZCAoc3RydWN0IHZhbHVlICphcmcxLCBpbnQgZmll CiAgc3RydWN0IHZhbHVlICoKICB2YWx1ZV9mbl9maWVsZCAoc3RydWN0IHZhbHVlICoqYXJnMXAs IHN0cnVjdCBmbl9maWVsZCAqZiwKICAJCWludCBqLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKQEAgLTQx NzcsNyArNDE3Nyw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5jCiAg ewogICAgc3RydWN0IHZhbHVlICp2OwogICAgc3RydWN0IHR5cGUgKmZ0eXBlID0gVFlQRV9GTl9G SUVMRF9UWVBFIChmLCBqKTsKLUBAIC0yODY2LDggKzI4NjksOCBAQCB2YWx1ZV9mbl9maWVsZCAo c3RydWN0IHZhbHVlICoqYXJnMXAsIHN0CitAQCAtMjg5NCw4ICsyODk3LDggQEAgdmFsdWVfZm5f ZmllbGQgKHN0cnVjdCB2YWx1ZSAqKmFyZzFwLCBzdAogIAogIHN0YXRpYyBpbnQKICB1bnBhY2tf dmFsdWVfYml0c19hc19sb25nXzEgKHN0cnVjdCB0eXBlICpmaWVsZF90eXBlLCBjb25zdCBnZGJf Ynl0ZSAqdmFsYWRkciwKQEAgLTQxODgsNyArNDE4OCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi92YWx1ZS5jCiAgCQkJICAgICBMT05HRVNUICpyZXN1bHQpCiAgewogICAgZW51 bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdldF90eXBlX2Fy Y2ggKGZpZWxkX3R5cGUpKTsKLUBAIC0yODc1LDcgKzI4NzgsNyBAQCB1bnBhY2tfdmFsdWVfYml0 c19hc19sb25nXzEgKHN0cnVjdCB0eXBlCitAQCAtMjkwMyw3ICsyOTA2LDcgQEAgdW5wYWNrX3Zh bHVlX2JpdHNfYXNfbG9uZ18xIChzdHJ1Y3QgdHlwZQogICAgVUxPTkdFU1QgdmFsbWFzazsKICAg IGludCBsc2Jjb3VudDsKICAgIGludCBieXRlc19yZWFkOwpAQCAtNDE5Nyw3ICs0MTk3LDcgQEAg SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHVlLmMKICAKICAgIC8qIFJlYWQgdGhl IG1pbmltdW0gbnVtYmVyIG9mIGJ5dGVzIHJlcXVpcmVkOyB0aGVyZSBtYXkgbm90IGJlCiAgICAg ICBlbm91Z2ggYnl0ZXMgdG8gcmVhZCBhbiBlbnRpcmUgVUxPTkdFU1QuICAqLwotQEAgLTI5NDUs NyArMjk0OCw3IEBAIHVucGFja192YWx1ZV9iaXRzX2FzX2xvbmdfMSAoc3RydWN0IHR5cGUKK0BA IC0yOTczLDcgKzI5NzYsNyBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19sb25nXzEgKHN0cnVjdCB0 eXBlCiAgCiAgaW50CiAgdW5wYWNrX3ZhbHVlX2JpdHNfYXNfbG9uZyAoc3RydWN0IHR5cGUgKmZp ZWxkX3R5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtNDIwNiw3ICs0MjA2LDcgQEAg SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHVlLmMKICAJCQkgICBjb25zdCBzdHJ1 Y3QgdmFsdWUgKm9yaWdpbmFsX3ZhbHVlLAogIAkJCSAgIExPTkdFU1QgKnJlc3VsdCkKICB7Ci1A QCAtMjk2MywxMCArMjk2NiwxMCBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19sb25nIChzdHJ1Y3Qg dHlwZSAqCitAQCAtMjk5MSwxMCArMjk5NCwxMCBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19sb25n IChzdHJ1Y3QgdHlwZSAqCiAgCiAgc3RhdGljIGludAogIHVucGFja192YWx1ZV9maWVsZF9hc19s b25nXzEgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQy MTksNyArNDIxOSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5jCiAg ICBpbnQgYml0c2l6ZSA9IFRZUEVfRklFTERfQklUU0laRSAodHlwZSwgZmllbGRubyk7CiAgICBz dHJ1Y3QgdHlwZSAqZmllbGRfdHlwZSA9IFRZUEVfRklFTERfVFlQRSAodHlwZSwgZmllbGRubyk7 CiAgCi1AQCAtMjk4Miw3ICsyOTg1LDcgQEAgdW5wYWNrX3ZhbHVlX2ZpZWxkX2FzX2xvbmdfMSAo c3RydWN0IHR5cAorQEAgLTMwMTAsNyArMzAxMyw3IEBAIHVucGFja192YWx1ZV9maWVsZF9hc19s b25nXzEgKHN0cnVjdCB0eXAKICAKICBpbnQKICB1bnBhY2tfdmFsdWVfZmllbGRfYXNfbG9uZyAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtNDIyOCw3ICs0 MjI4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHVlLmMKICAJCQkgICAg Y29uc3Qgc3RydWN0IHZhbHVlICp2YWwsIExPTkdFU1QgKnJlc3VsdCkKICB7CiAgICBnZGJfYXNz ZXJ0ICh2YWwgIT0gTlVMTCk7Ci1AQCAtMzAxNCw3ICszMDE3LDcgQEAgdW5wYWNrX2ZpZWxkX2Fz X2xvbmcgKHN0cnVjdCB0eXBlICp0eXBlLAorQEAgLTMwNDIsNyArMzA0NSw3IEBAIHVucGFja19m aWVsZF9hc19sb25nIChzdHJ1Y3QgdHlwZSAqdHlwZSwKICBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVl X2ZpZWxkX2JpdGZpZWxkIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IGZpZWxkbm8sCiAgCQkgICAg ICBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQyMzcsNyArNDIzNyw3IEBAIEluZGV4OiBn ZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5jCiAgewogICAgTE9OR0VTVCBsOwogIAotQEAg LTMwNDEsMTIgKzMwNDQsMTIgQEAgdmFsdWVfZmllbGRfYml0ZmllbGQgKHN0cnVjdCB0eXBlICp0 eXBlLAorQEAgLTMwNjksMTIgKzMwNzIsMTIgQEAgdmFsdWVfZmllbGRfYml0ZmllbGQgKHN0cnVj dCB0eXBlICp0eXBlLAogIAogIHZvaWQKICBtb2RpZnlfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBl LCBnZGJfYnl0ZSAqYWRkciwKQEAgLTQyNTIsMTAgKzQyNTIsMTAgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL3ZhbHVlLmMKICAKICAgIC8qIE5vcm1hbGl6ZSBCSVRQT1MuICAqLwog ICAgYWRkciArPSBiaXRwb3MgLyA4OwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Zh bHVlLmgKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdmFsdWUuaAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvdmFsdWUuaAkyMDEzLTAyLTE1 IDIyOjMxOjM3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Zh bHVlLmgJMjAxMy0wMi0xNSAyMjo0MDoxOC41NDY2MjIxMDYgKzAxMDAKKy0tLSBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy5vcmlnL2dkYi92YWx1ZS5oCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDcyMjky MjUzICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3ZhbHVlLmgJMjAxMy0w OC0wMiAxNjozOToxNS43MjEzNjI1NzcgKzAyMDAKIEBAIC04Miw4ICs4Miw4IEBAIGV4dGVybiB2 b2lkIHNldF92YWx1ZV9wYXJlbnQgKHN0cnVjdCB2YWwKICAgICB3aXRoaW4gdGhlIHJlZ2lzdGVy cyBzdHJ1Y3R1cmUuICBOb3RlIGFsc28gdGhlIG1lbWJlcgogICAgIGVtYmVkZGVkX29mZnNldCBi ZWxvdy4gICovCkBAIC00MzEwLDcgKzQzMTAsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvdmFsdWUuaAogIAkJCQkgICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwpOwogIAogIGV4 dGVybiBzdHJ1Y3QgdmFsdWUgKmFsbG9jYXRlX29wdGltaXplZF9vdXRfdmFsdWUgKHN0cnVjdCB0 eXBlICp0eXBlKTsKLUBAIC00MDksMTMgKzQxMCwxMyBAQCBleHRlcm4gc3RydWN0IHZhbHVlICpj b2VyY2VfYXJyYXkgKHN0cnVjCitAQCAtNDE1LDEzICs0MTYsMTMgQEAgZXh0ZXJuIHN0cnVjdCB2 YWx1ZSAqY29lcmNlX2FycmF5IChzdHJ1YwogICAgIGJpdHMgaW4gdGhlIGdpdmVuIHJhbmdlIGFy ZSB2YWxpZCwgemVybyBpZiBhbnkgYml0IGlzIGludmFsaWQuICAqLwogIAogIGV4dGVybiBpbnQg dmFsdWVfYml0c192YWxpZCAoY29uc3Qgc3RydWN0IHZhbHVlICp2YWx1ZSwKQEAgLTQzMjYsNyAr NDMyNiw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5oCiAgCiAgLyog R2l2ZW4gYSB2YWx1ZSwgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGNvbnRlbnRzIGJ5dGVzIHN0YXJ0 aW5nIGF0CiAgICAgT0ZGU0VUIGFuZCBleHRlbmRpbmcgZm9yIExFTkdUSCBieXRlcyBhcmUgYXZh aWxhYmxlLiAgVGhpcyByZXR1cm5zCi1AQCAtNDIzLDcgKzQyNCw3IEBAIGV4dGVybiBpbnQgdmFs dWVfYml0c19zeW50aGV0aWNfcG9pbnRlcgorQEAgLTQyOSw3ICs0MzAsNyBAQCBleHRlcm4gaW50 IHZhbHVlX2JpdHNfc3ludGhldGljX3BvaW50ZXIKICAgICBieXRlIGlzIHVuYXZhaWxhYmxlLiAg Ki8KICAKICBleHRlcm4gaW50IHZhbHVlX2J5dGVzX2F2YWlsYWJsZSAoY29uc3Qgc3RydWN0IHZh bHVlICp2YWx1ZSwKQEAgLTQzMzUsNyArNDMzNSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi92YWx1ZS5oCiAgCiAgLyogTGlrZSB2YWx1ZV9ieXRlc19hdmFpbGFibGUsIGJ1dCBy ZXR1cm4gZmFsc2UgaWYgYW55IGJ5dGUgaW4gdGhlCiAgICAgd2hvbGUgb2JqZWN0IGlzIHVuYXZh aWxhYmxlLiAgKi8KLUBAIC00MzMsNyArNDM0LDcgQEAgZXh0ZXJuIGludCB2YWx1ZV9lbnRpcmVs eV9hdmFpbGFibGUgKHN0cgorQEAgLTQzOSw3ICs0NDAsNyBAQCBleHRlcm4gaW50IHZhbHVlX2Vu dGlyZWx5X2F2YWlsYWJsZSAoc3RyCiAgICAgTEVOR1RIIGJ5dGVzIGFzIHVuYXZhaWxhYmxlLiAg Ki8KICAKICBleHRlcm4gdm9pZCBtYXJrX3ZhbHVlX2J5dGVzX3VuYXZhaWxhYmxlIChzdHJ1Y3Qg dmFsdWUgKnZhbHVlLApAQCAtNDM0NCw3ICs0MzQ0LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAyMTUvZ2RiL3ZhbHVlLmgKICAKICAvKiBDb21wYXJlIExFTkdUSCBieXRlcyBvZiBWQUwxJ3Mg Y29udGVudHMgc3RhcnRpbmcgYXQgT0ZGU0VUMSB3aXRoCiAgICAgTEVOR1RIIGJ5dGVzIG9mIFZB TDIncyBjb250ZW50cyBzdGFydGluZyBhdCBPRkZTRVQyLgotQEAgLTQ0Myw3ICs0NDQsNyBAQCBl eHRlcm4gdm9pZCBtYXJrX3ZhbHVlX2J5dGVzX3VuYXZhaWxhYmxlCitAQCAtNDQ5LDcgKzQ1MCw3 IEBAIGV4dGVybiB2b2lkIG1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFpbGFibGUKICAgICBleGFtcGxl LCB0byBjb21wYXJlIGEgY29tcGxldGUgb2JqZWN0IHZhbHVlIHdpdGggaXRzZWxmLCBpbmNsdWRp bmcKICAgICBpdHMgZW5jbG9zaW5nIHR5cGUgY2h1bmssIHlvdSdkIGRvOgogIApAQCAtNDM1Mywy MSArNDM1MywyMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsdWUuaAogICAg ICAgdmFsdWVfYXZhaWxhYmxlX2NvbnRlbnRzICh2YWwsIDAsIHZhbCwgMCwgbGVuKTsKICAKICAg ICBSZXR1cm5zIHRydWUgaWZmIHRoZSBzZXQgb2YgYXZhaWxhYmxlIGNvbnRlbnRzIG1hdGNoLiAg VW5hdmFpbGFibGUKLUBAIC00NjUsOSArNDY2LDEwIEBAIGV4dGVybiB2b2lkIG1hcmtfdmFsdWVf Ynl0ZXNfdW5hdmFpbGFibGUKLSAgICB2YWx1ZV9hdmFpbGFibGVfY29udGVudHNfZXEodmFsLCAz LCB2YWwsIDQsIDQpID0+IDAKLSAqLworQEAgLTQ3Niw5ICs0NzcsOSBAQCBleHRlcm4gdm9pZCBt YXJrX3ZhbHVlX2J5dGVzX3VuYXZhaWxhYmxlCisgICAgZ29uZSwgaXQgd29ya3Mgd2l0aCBjb25z dCB2YWx1ZXMuICBUaGVyZWZvcmUsIHRoaXMgcm91dGluZSBtdXN0IG5vdAorICAgIGJlIGNhbGxl ZCB3aXRoIGxhenkgdmFsdWVzLiAgKi8KICAKIC1leHRlcm4gaW50IHZhbHVlX2F2YWlsYWJsZV9j b250ZW50c19lcSAoY29uc3Qgc3RydWN0IHZhbHVlICp2YWwxLCBpbnQgb2Zmc2V0MSwKIC0JCQkJ CWNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsMiwgaW50IG9mZnNldDIsCiAtCQkJCQlpbnQgbGVuZ3Ro KTsKLStleHRlcm4gaW50IHZhbHVlX2F2YWlsYWJsZV9jb250ZW50c19lcSAoY29uc3Qgc3RydWN0 IHZhbHVlICp2YWwxLAotKwkJCQkJTE9OR0VTVCBvZmZzZXQxLAotKwkJCQkJY29uc3Qgc3RydWN0 IHZhbHVlICp2YWwyLAotKwkJCQkJTE9OR0VTVCBvZmZzZXQyLCBMT05HRVNUIGxlbmd0aCk7Cisr ZXh0ZXJuIGludCB2YWx1ZV9hdmFpbGFibGVfY29udGVudHNfZXEgKGNvbnN0IHN0cnVjdCB2YWx1 ZSAqdmFsMSwgTE9OR0VTVCBvZmZzZXQxLAorKwkJCQkJY29uc3Qgc3RydWN0IHZhbHVlICp2YWwy LCBMT05HRVNUIG9mZnNldDIsCisrCQkJCQlMT05HRVNUIGxlbmd0aCk7CiAgCiAgLyogUmVhZCBM RU5HVEggYnl0ZXMgb2YgbWVtb3J5IHN0YXJ0aW5nIGF0IE1FTUFERFIgaW50byBCVUZGRVIsIHdo aWNoCiAgICAgaXMgKG9yIHdpbGwgYmUgY29waWVkIHRvKSBWQUwncyBjb250ZW50cyBidWZmZXIg b2Zmc2V0IGJ5Ci1AQCAtNDc2LDcgKzQ3OCw3IEBAIGV4dGVybiBpbnQgdmFsdWVfYXZhaWxhYmxl X2NvbnRlbnRzX2VxICgKK0BAIC00ODcsNyArNDg4LDcgQEAgZXh0ZXJuIGludCB2YWx1ZV9hdmFp bGFibGVfY29udGVudHNfZXEgKAogICAgIG1lbW9yeSBpcyBsaWtld2lzZSB1bmF2YWlsYWJsZS4g IFNUQUNLIGluZGljYXRlcyB3aGV0aGVyIHRoZSBtZW1vcnkKICAgICBpcyBrbm93biB0byBiZSBz dGFjayBtZW1vcnkuICAqLwogIApAQCAtNDM3Niw3ICs0Mzc1LDcgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL3ZhbHVlLmgKICAJCQkgICAgICAgaW50IHN0YWNrLCBDT1JFX0FERFIg bWVtYWRkciwKICAJCQkgICAgICAgZ2RiX2J5dGUgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCk7CiAg Ci1AQCAtNTEwLDcgKzUxMiw3IEBAIGV4dGVybiBDT1JFX0FERFIgdW5wYWNrX3BvaW50ZXIgKHN0 cnVjdAorQEAgLTUyMSw3ICs1MjIsNyBAQCBleHRlcm4gQ09SRV9BRERSIHVucGFja19wb2ludGVy IChzdHJ1Y3QKICAKICBleHRlcm4gaW50IHVucGFja192YWx1ZV9iaXRzX2FzX2xvbmcgKHN0cnVj dCB0eXBlICpmaWVsZF90eXBlLAogIAkJCQkgICAgICBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwK QEAgLTQzODUsNyArNDM4NCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1 ZS5oCiAgCQkJCSAgICAgIGludCBiaXRzaXplLAogIAkJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFs dWUgKm9yaWdpbmFsX3ZhbHVlLAogIAkJCQkgICAgICBMT05HRVNUICpyZXN1bHQpOwotQEAgLTUx OSwxMiArNTIxLDEyIEBAIGV4dGVybiBMT05HRVNUIHVucGFja19maWVsZF9hc19sb25nIChzdHIK K0BAIC01MzAsMTIgKzUzMSwxMiBAQCBleHRlcm4gTE9OR0VTVCB1bnBhY2tfZmllbGRfYXNfbG9u ZyAoc3RyCiAgCQkJCSAgICAgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCQkJCSAgICAgaW50 IGZpZWxkbm8pOwogIGV4dGVybiBpbnQgdW5wYWNrX3ZhbHVlX2ZpZWxkX2FzX2xvbmcgKHN0cnVj dCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQ0MDAsNyArNDM5OSw3 IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5oCiAgCQkJCQkgICBjb25z dCBzdHJ1Y3QgdmFsdWUgKnZhbCk7CiAgCiAgZXh0ZXJuIHZvaWQgcGFja19sb25nIChnZGJfYnl0 ZSAqYnVmLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9OR0VTVCBudW0pOwotQEAgLTU4MywxMiArNTg1 LDEyIEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKmRlZmF1bHRfcmVhZF92YXJfdmEKK0BAIC01OTQs MTIgKzU5NSwxMiBAQCBleHRlcm4gc3RydWN0IHZhbHVlICpkZWZhdWx0X3JlYWRfdmFyX3ZhCiAg ZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqYWxsb2NhdGVfdmFsdWUgKHN0cnVjdCB0eXBlICp0eXBlKTsK ICBleHRlcm4gc3RydWN0IHZhbHVlICphbGxvY2F0ZV92YWx1ZV9sYXp5IChzdHJ1Y3QgdHlwZSAq dHlwZSk7CiAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKHN0cnVjdCB2YWx1 ZSAqdmFsdWUpOwpAQCAtNDQxOSw3ICs0NDE4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAy MTUvZ2RiL3ZhbHVlLmgKICAKICBleHRlcm4gc3RydWN0IHZhbHVlICphbGxvY2F0ZV9yZXBlYXRf dmFsdWUgKHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgY291bnQpOwogIAotQEAgLTY2MCwxNiArNjYy LDE2IEBAIGV4dGVybiBpbnQgZmluZF9vdmVybG9hZF9tYXRjaCAoc3RydWN0IHYKK0BAIC02NzEs MTYgKzY3MiwxNiBAQCBleHRlcm4gaW50IGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0cnVjdCB2CiAg CiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnMSwg aW50IGZpZWxkbm8pOwogIApAQCAtNDQzOSw3ICs0NDM4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAyMTUvZ2RiL3ZhbHVlLmgKICAKICBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9jYXN0 X3BvaW50ZXJzIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdmFsdWUgKiwgaW50KTsKICAKLUBAIC03 NjMsNyArNzY1LDcgQEAgZXh0ZXJuIHZvaWQgc2V0X2ludGVybmFsdmFyX3N0cmluZyAoc3RydQor QEAgLTc3NCw3ICs3NzUsNyBAQCBleHRlcm4gdm9pZCBzZXRfaW50ZXJuYWx2YXJfc3RyaW5nIChz dHJ1CiAgZXh0ZXJuIHZvaWQgY2xlYXJfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAq dmFyKTsKICAKICBleHRlcm4gdm9pZCBzZXRfaW50ZXJuYWx2YXJfY29tcG9uZW50IChzdHJ1Y3Qg aW50ZXJuYWx2YXIgKnZhciwKQEAgLTQ0NDgsNyArNDQ0Nyw3IEBAIEluZGV4OiBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi92YWx1ZS5oCiAgCQkJCSAgICAgICBpbnQgYml0cG9zLCBpbnQgYml0c2l6 ZSwKICAJCQkJICAgICAgIHN0cnVjdCB2YWx1ZSAqbmV3dmFsdWUpOwogIAotQEAgLTg0NSw3ICs4 NDcsNyBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV94X3Vub3AgKHN0cnVjCitAQCAtODU2 LDcgKzg1Nyw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3hfdW5vcCAoc3RydWMKICAJ CQkJICAgZW51bSBub3NpZGUgbm9zaWRlKTsKICAKICBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1 ZV9mbl9maWVsZCAoc3RydWN0IHZhbHVlICoqYXJnMXAsIHN0cnVjdCBmbl9maWVsZCAqZiwKQEAg LTQ0NTcsNyArNDQ1Niw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5o CiAgCiAgZXh0ZXJuIGludCBiaW5vcF90eXBlc191c2VyX2RlZmluZWRfcCAoZW51bSBleHBfb3Bj b2RlIG9wLAogIAkJCQkgICAgICAgc3RydWN0IHR5cGUgKnR5cGUxLAotQEAgLTg3Myw3ICs4NzUs OCBAQCBleHRlcm4gdm9pZCByZWxlYXNlX3ZhbHVlX29yX2luY3JlZiAoc3RyCitAQCAtODg0LDcg Kzg4NSw4IEBAIGV4dGVybiB2b2lkIHJlbGVhc2VfdmFsdWVfb3JfaW5jcmVmIChzdHIKICBleHRl cm4gaW50IHJlY29yZF9sYXRlc3RfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsKTsKICAKICBleHRl cm4gdm9pZCBtb2RpZnlfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLCBnZGJfYnl0ZSAqYWRkciwK QEAgLTQ0NjcsNyArNDQ2Niw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1 ZS5oCiAgCiAgZXh0ZXJuIHZvaWQgdHlwZV9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0 IGNoYXIgKnZhcnN0cmluZywKICAJCQlzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgc2hvdyk7 Ci1AQCAtOTAzLDcgKzkwNiw3IEBAIGV4dGVybiB2b2lkIHZhbHVlX3ByaW50X2FycmF5X2VsZW1l bnRzICgKK0BAIC05MTQsNyArOTE2LDcgQEAgZXh0ZXJuIHZvaWQgdmFsdWVfcHJpbnRfYXJyYXlf ZWxlbWVudHMgKAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3JlbGVhc2VfdG9fbWFyayAo c3RydWN0IHZhbHVlICptYXJrKTsKICAKICBleHRlcm4gdm9pZCB2YWxfcHJpbnQgKHN0cnVjdCB0 eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQ0NzYsNyArNDQ3NSw3IEBA IEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5oCiAgCQkgICAgICAgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAgCQkgICAgICAgY29uc3Qgc3RydWN0IHZh bHVlICp2YWwsCiAgCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9w dGlvbnMsCi1AQCAtOTUyLDEwICs5NTUsMTEgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVf bGl0ZXJhbF9jb21wbAorQEAgLTk2MywxMCArOTY1LDExIEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUg KnZhbHVlX2xpdGVyYWxfY29tcGwKICBleHRlcm4gc3RydWN0IHZhbHVlICpmaW5kX2Z1bmN0aW9u X2luX2luZmVyaW9yIChjb25zdCBjaGFyICosCiAgCQkJCQkJc3RydWN0IG9iamZpbGUgKiopOwog IAoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMm9mMjUucGF0Y2ggYi9nZGIt cmhiejc5NTQyNC1iaXRwb3MtMjJvZjI1LnBhdGNoCmluZGV4IDA3ZDA1ODMuLmMzOTY1NTQgMTAw NjQ0Ci0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMm9mMjUucGF0Y2gKKysrIGIvZ2RiLXJo Yno3OTU0MjQtYml0cG9zLTIyb2YyNS5wYXRjaApAQCAtOTYsMTAgKzk2LDEwIEBAIENvbnRlbnQt VHlwZTogdGV4dC94LXBhdGNoCiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CiBDb250 ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1iaXRwb3Mtd3AucGF0Y2gKIAot SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FybS1saW51eC1uYXQuYworSW5kZXg6IGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hcm0tbGludXgtbmF0LmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2FybS1saW51eC1uYXQuYwkyMDEzLTAyLTE1 IDIyOjQwOjE4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2Fy bS1saW51eC1uYXQuYwkyMDEzLTAyLTE1IDIyOjQyOjQ1Ljk4ODgwNDMwNiArMDEwMAorLS0tIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2FybS1saW51eC1uYXQuYwkyMDEzLTA4LTAy IDE2OjQyOjI5LjU2NTYzMjg5NSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi9hcm0tbGludXgtbmF0LmMJMjAxMy0wOC0wMiAxNjo0MjozNC4wOTQ2MzkxMDQgKzAyMDAKIEBA IC0xMTA1LDcgKzExMDUsNyBAQCBhcm1fbGludXhfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50 IChDCiAgCiAgLyogSW5zZXJ0IGEgSGFyZHdhcmUgYnJlYWtwb2ludC4gICovCkBAIC0xMjcsMTAg KzEyNywxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYXJtLWxpbnV4LW5hdC5j CiAgewogICAgcmV0dXJuIHN0YXJ0IDw9IGFkZHIgJiYgc3RhcnQgKyBsZW5ndGggLSAxID49IGFk ZHI7CiAgfQotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2kzODYtbmF0LmMKK0luZGV4 OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvaTM4Ni1uYXQuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvaTM4Ni1uYXQuYwkyMDEzLTAyLTE1IDIyOjQx OjUzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2kzODYtbmF0 LmMJMjAxMy0wMi0xNSAyMjo0MzoxNC4wMDU4Mzg3NDEgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy5vcmlnL2dkYi9pMzg2LW5hdC5jCTIwMTMtMDgtMDIgMTY6NDI6MjkuNTY2NjMy ODk2ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2kzODYtbmF0LmMJMjAx My0wOC0wMiAxNjo0MjozNC4wOTU2MzkxMDUgKzAyMDAKIEBAIC01ODksNyArNTg5LDcgQEAgaTM4 Nl91cGRhdGVfaW5mZXJpb3JfZGVidWdfcmVncyAoc3RydWN0CiAgICAgb2YgdGhlIHR5cGUgVFlQ RS4gIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUuICAqLwogIApAQCAtMTQ5LDEw ICsxNDksMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2kzODYtbmF0LmMKICAJ CQlzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7CiAgICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdf c3RhdGUgKnN0YXRlCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvaWE2NC1saW51eC1u YXQuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9pYTY0LWxpbnV4LW5hdC5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9pYTY0LWxpbnV4 LW5hdC5jCTIwMTMtMDItMTUgMjI6MzQ6MTguMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41 MC4yMDEzMDIxNS9nZGIvaWE2NC1saW51eC1uYXQuYwkyMDEzLTAyLTE1IDIyOjQyOjQ1Ljk4OTgw NDMwOSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2lhNjQtbGlu dXgtbmF0LmMJMjAxMy0wOC0wMiAxNjo0MjoyOS41NjY2MzI4OTYgKzAyMDAKKysrKyBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy9nZGIvaWE2NC1saW51eC1uYXQuYwkyMDEzLTA4LTAyIDE2OjQyOjM0 LjA5NTYzOTEwNSArMDIwMAogQEAgLTU0Miw3ICs1NDIsNyBAQCBpc19wb3dlcl9vZl8yIChpbnQg dmFsKQogIH0KICAKQEAgLTE3MSwxMSArMTcxLDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi9pYTY0LWxpbnV4LW5hdC5jCiAgCQkJICAgICAgc3RydWN0IGV4cHJlc3Npb24gKmNv bmQpCiAgewogICAgaW50IGlkeDsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9pbmYt dHRyYWNlLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvaW5mLXR0cmFjZS5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9pbmYtdHRyYWNl LmMJMjAxMy0wMi0xNSAyMjo0MDoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi9pbmYtdHRyYWNlLmMJMjAxMy0wMi0xNSAyMjo0Mjo0NS45ODk4MDQzMDkgKzAx MDAKLUBAIC0zMTMsMTQgKzMxMywxNCBAQCBpbmZfdHRyYWNlX2Rpc2FibGVfcGFnZV9wcm90ZWN0 aW9ucyAocGlkCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvaW5mLXR0cmFj ZS5jCTIwMTMtMDgtMDIgMTY6NDI6MjkuNTY3NjMyODk4ICswMjAwCisrKysgZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL2luZi10dHJhY2UuYwkyMDEzLTA4LTAyIDE2OjQyOjM0LjA5NTYzOTEw NSArMDIwMAorQEAgLTMxNCwxNCArMzE0LDE0IEBAIGluZl90dHJhY2VfZGlzYWJsZV9wYWdlX3By b3RlY3Rpb25zIChwaWQKICAgICB0eXBlIFRZUEUuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTE5 Myw3ICsxOTMsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvaW5mLXR0cmFjZS5j CiAgCiAgICBnZGJfYXNzZXJ0ICh0eXBlID09IGh3X3dyaXRlKTsKICAKLUBAIC0zMzcsMTQgKzMz NywxNCBAQCBpbmZfdHRyYWNlX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIKK0BAIC0zMzgs MTQgKzMzOCwxNCBAQCBpbmZfdHRyYWNlX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIKICAg ICB0eXBlIFRZUEUuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTIxMSwxMSArMjExLDExIEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9pbmYtdHRyYWNlLmMKICAKICAgIGdkYl9hc3Nl cnQgKHR5cGUgPT0gaHdfd3JpdGUpOwogIAotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2Ri L21pcHMtbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbWlw cy1saW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9n ZGIvbWlwcy1saW51eC1uYXQuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL21pcHMtbGludXgtbmF0LmMJMjAxMy0wMi0xNSAy Mjo0Mjo0NS45OTA4MDQzMTEgKzAxMDAKLUBAIC0xMDE3LDcgKzEwMTcsNyBAQCBwb3B1bGF0ZV9y ZWdzX2Zyb21fd2F0Y2hlcyAoc3RydWN0IHB0X3dhCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMub3JpZy9nZGIvbWlwcy1saW51eC1uYXQuYwkyMDEzLTA4LTAyIDE2OjQyOjI5LjU2ODYzMjg5 OSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9taXBzLWxpbnV4LW5hdC5j CTIwMTMtMDgtMDIgMTY6NDI6MzQuMDk2NjM5MTA2ICswMjAwCitAQCAtNjQ0LDcgKzY0NCw3IEBA IG1pcHNfbGludXhfbmV3X3RocmVhZCAoc3RydWN0IGx3cF9pbmZvICoKICAgICB3YXRjaC4gIFJl dHVybiB6ZXJvIG9uIHN1Y2Nlc3MuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTIyNCw3ICsyMjQs NyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbWlwcy1saW51eC1uYXQuYwogIAkJ CSAgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIHN0cnVjdCBwdF93YXRjaF9y ZWdzIHJlZ3M7Ci1AQCAtMTA2Nyw3ICsxMDY3LDcgQEAgbWlwc19saW51eF9pbnNlcnRfd2F0Y2hw b2ludCAoQ09SRV9BRERSCitAQCAtNjk3LDcgKzY5Nyw3IEBAIG1pcHNfbGludXhfaW5zZXJ0X3dh dGNocG9pbnQgKENPUkVfQUREUgogICAgIFJldHVybiB6ZXJvIG9uIHN1Y2Nlc3MuICAqLwogIAog IHN0YXRpYyBpbnQKQEAgLTIzMywxMCArMjMzLDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi9taXBzLWxpbnV4LW5hdC5jCiAgCQkJICAgICAgc3RydWN0IGV4cHJlc3Npb24gKmNv bmQpCiAgewogICAgaW50IHJldHZhbDsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9u dG8tcHJvY2ZzLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbnRvLXByb2Nm cy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9udG8tcHJv Y2ZzLmMJMjAxMy0wMS0wMSAwNzozMjo0Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi9udG8tcHJvY2ZzLmMJMjAxMy0wMi0xNSAyMjo0Mjo0NS45OTA4MDQzMTEg KzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9udG8tcHJvY2ZzLmMJ MjAxMy0wOC0wMiAxNjo0MjoyOS41Njg2MzI4OTkgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy9nZGIvbnRvLXByb2Nmcy5jCTIwMTMtMDgtMDIgMTY6NDI6MzQuMDk2NjM5MTA2ICsw MjAwCiBAQCAtNjksMTAgKzY5LDEwIEBAIHN0YXRpYyBwdGlkX3QgZG9fYXR0YWNoIChwdGlkX3Qg cHRpZCk7CiAgCiAgc3RhdGljIGludCBwcm9jZnNfY2FuX3VzZV9od19icmVha3BvaW50IChpbnQs IGludCwgaW50KTsKQEAgLTI2NywxMSArMjY3LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi9udG8tcHJvY2ZzLmMKICAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQog IHsKICAgIHJldHVybiBwcm9jZnNfaHdfd2F0Y2hwb2ludCAoYWRkciwgbGVuLCB0eXBlKTsKLUlu ZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9wcGMtbGludXgtbmF0LmMKK0luZGV4OiBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcHBjLWxpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9wcGMtbGludXgtbmF0LmMJMjAxMy0wMi0xNSAy Mjo0MDoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9wcGMt bGludXgtbmF0LmMJMjAxMy0wMi0xNSAyMjo0Mjo0NS45OTE4MDQzMTMgKzAxMDAKLUBAIC0xODM4 LDExICsxODM4LDExIEBAIGNhbl91c2Vfd2F0Y2hwb2ludF9jb25kX2FjY2VsICh2b2lkKQorLS0t IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDEzLTA4 LTAyIDE2OjQyOjI5LjU3MDYzMjkwMiArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz L2dkYi9wcGMtbGludXgtbmF0LmMJMjAxMy0wOC0wMiAxNjo0MjozNC4wOTc2MzkxMDggKzAyMDAK K0BAIC0xODUzLDExICsxODUzLDExIEBAIGNhbl91c2Vfd2F0Y2hwb2ludF9jb25kX2FjY2VsICh2 b2lkKQogICAgIENPTkRJVElPTl9WQUxVRSB3aWxsIGhvbGQgdGhlIHZhbHVlIHdoaWNoIHNob3Vs ZCBiZSBwdXQgaW4gdGhlCiAgICAgRFZDIHJlZ2lzdGVyLiAgKi8KICBzdGF0aWMgdm9pZApAQCAt Mjg2LDcgKzI4Niw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9wcGMtbGludXgt bmF0LmMKICAgIENPUkVfQUREUiBhZGRyX2VuZF9kYXRhLCBhZGRyX2VuZF9kdmM7CiAgCiAgICAv KiBUaGUgRFZDIHJlZ2lzdGVyIGNvbXBhcmVzIGJ5dGVzIHdpdGhpbiBmaXhlZC1sZW5ndGggd2lu ZG93cyB3aGljaAotQEAgLTE5MjksNyArMTkyOSw3IEBAIG51bV9tZW1vcnlfYWNjZXNzZXMgKHN0 cnVjdCB2YWx1ZSAqdikKK0BAIC0xOTQ0LDcgKzE5NDQsNyBAQCBudW1fbWVtb3J5X2FjY2Vzc2Vz IChzdHJ1Y3QgdmFsdWUgKnYpCiAgICAgb2YgdGhlIGNvbnN0YW50LiAgKi8KICBzdGF0aWMgaW50 CiAgY2hlY2tfY29uZGl0aW9uIChDT1JFX0FERFIgd2F0Y2hfYWRkciwgc3RydWN0IGV4cHJlc3Np b24gKmNvbmQsCkBAIC0yOTUsNyArMjk1LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL3BwYy1saW51eC1uYXQuYwogIHsKICAgIGludCBwYyA9IDEsIG51bV9hY2Nlc3Nlc19sZWZ0 LCBudW1fYWNjZXNzZXNfcmlnaHQ7CiAgICBzdHJ1Y3QgdmFsdWUgKmxlZnRfdmFsLCAqcmlnaHRf dmFsLCAqbGVmdF9jaGFpbiwgKnJpZ2h0X2NoYWluOwotQEAgLTE5OTYsNyArMTk5Niw3IEBAIGNo ZWNrX2NvbmRpdGlvbiAoQ09SRV9BRERSIHdhdGNoX2FkZHIsIHMKK0BAIC0yMDExLDcgKzIwMTEs NyBAQCBjaGVja19jb25kaXRpb24gKENPUkVfQUREUiB3YXRjaF9hZGRyLCBzCiAgICAgdGhlIGNv bmRpdGlvbiBleHByZXNzaW9uLCB0aHVzIG9ubHkgdHJpZ2dlcmluZyB0aGUgd2F0Y2hwb2ludCB3 aGVuIGl0IGlzCiAgICAgdHJ1ZS4gICovCiAgc3RhdGljIGludApAQCAtMzA0LDcgKzMwNCw3IEBA IEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9wcGMtbGludXgtbmF0LmMKICAJCQkJCSAg c3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCiAgewogICAgQ09SRV9BRERSIGRhdGFfdmFsdWU7Ci1A QCAtMjAxMyw3ICsyMDEzLDcgQEAgcHBjX2xpbnV4X2Nhbl9hY2NlbF93YXRjaHBvaW50X2NvbmRp dGlvbgorQEAgLTIwMjgsNyArMjAyOCw3IEBAIHBwY19saW51eF9jYW5fYWNjZWxfd2F0Y2hwb2lu dF9jb25kaXRpb24KICAKICBzdGF0aWMgdm9pZAogIGNyZWF0ZV93YXRjaHBvaW50X3JlcXVlc3Qg KHN0cnVjdCBwcGNfaHdfYnJlYWtwb2ludCAqcCwgQ09SRV9BRERSIGFkZHIsCkBAIC0zMTMsNyAr MzEzLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3BwYy1saW51eC1uYXQuYwog IAkJCSAgIGludCBpbnNlcnQpCiAgewogICAgaWYgKGxlbiA9PSAxCi1AQCAtMjA1OCw3ICsyMDU4 LDcgQEAgY3JlYXRlX3dhdGNocG9pbnRfcmVxdWVzdCAoc3RydWN0IHBwY19odworQEAgLTIwNzMs NyArMjA3Myw3IEBAIGNyZWF0ZV93YXRjaHBvaW50X3JlcXVlc3QgKHN0cnVjdCBwcGNfaHcKICB9 CiAgCiAgc3RhdGljIGludApAQCAtMzIyLDcgKzMyMiw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi9wcGMtbGludXgtbmF0LmMKICAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpj b25kKQogIHsKICAgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci1AQCAtMjEyNiw3ICsyMTI2LDcgQEAg cHBjX2xpbnV4X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYQorQEAgLTIxNDEsNyArMjE0 MSw3IEBAIHBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGEKICB9CiAgCiAg c3RhdGljIGludApAQCAtMzMxLDcgKzMzMSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1 L2dkYi9wcGMtbGludXgtbmF0LmMKICAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQog IHsKICAgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci1AQCAtMjI2Niw3ICsyMjY2LDcgQEAgcHBjX2xp bnV4X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAodm9pZCkKK0BAIC0yMjkyLDcgKzIyOTIsNyBAQCBw cGNfbGludXhfc3RvcHBlZF9ieV93YXRjaHBvaW50ICh2b2lkKQogIHN0YXRpYyBpbnQKICBwcGNf bGludXhfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9vcHMgKnRh cmdldCwKICAJCQkJCUNPUkVfQUREUiBhZGRyLApAQCAtMzQwLDEwICszNDAsMTAgQEAgSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3BwYy1saW51eC1uYXQuYwogIHsKICAgIGludCBtYXNr OwogIAotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Byb2Nmcy5jCitJbmRleDogZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Byb2Nmcy5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NS41MC4yMDEzMDIxNS5vcmlnL2dkYi9wcm9jZnMuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Byb2Nmcy5jCTIwMTMtMDIt MTUgMjI6NDI6NDUuOTkyODA0MzE1ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMu b3JpZy9nZGIvcHJvY2ZzLmMJMjAxMy0wOC0wMiAxNjo0MjoyOS41NzI2MzI5MDQgKzAyMDAKKysr KyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcHJvY2ZzLmMJMjAxMy0wOC0wMiAxNjo0Mjoz NC4wOTg2MzkxMDkgKzAyMDAKIEBAIC0yNDMzLDcgKzI0MzMsNyBAQCBwcm9jZnNfYWRkcmVzc190 b19ob3N0X3BvaW50ZXIgKENPUkVfQURECiAgI2VuZGlmCiAgCkBAIC0zODAsMTEgKzM4MCwxMSBA QCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcHJvY2ZzLmMKICAJCQkgIHN0cnVjdCBl eHByZXNzaW9uICpjb25kKQogIHsKICAgIHJldHVybiBwcm9jZnNfc2V0X3dhdGNocG9pbnQgKGlu ZmVyaW9yX3B0aWQsIGFkZHIsIDAsIDAsIDApOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL3JlbW90ZS1tMzJyLXNkaS5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2Ri L3JlbW90ZS1tMzJyLXNkaS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5v cmlnL2dkYi9yZW1vdGUtbTMyci1zZGkuYwkyMDEzLTAxLTAxIDA3OjMyOjUwLjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jCTIwMTMt MDItMTUgMjI6NDI6NDUuOTkzODA0MzE3ICswMTAwCi1AQCAtMTQxNywxNCArMTQxNywxNSBAQCBt MzJyX2Nhbl91c2VfaHdfd2F0Y2hwb2ludCAoaW50IHR5cGUsIGluCistLS0gZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMub3JpZy9nZGIvcmVtb3RlLW0zMnItc2RpLmMJMjAxMy0wOC0wMiAxNjo0Mjoy OS41NzM2MzI5MDYgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcmVtb3Rl LW0zMnItc2RpLmMJMjAxMy0wOC0wMiAxNjo0MjozNC4wOTk2MzkxMTEgKzAyMDAKK0BAIC0xNDE2 LDE0ICsxNDE2LDE1IEBAIG0zMnJfY2FuX3VzZV9od193YXRjaHBvaW50IChpbnQgdHlwZSwgaW4K ICAgICB3YXRjaHBvaW50LiAgKi8KICAKICBzdGF0aWMgaW50CkBAIC00MDMsNyArNDAzLDcgQEAg SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jCiAgCiAgICBm b3IgKGkgPSAwOyBpIDwgTUFYX0FDQ0VTU19CUkVBS1M7IGkrKykKICAgICAgewotQEAgLTE0NDIs MTQgKzE0NDMsMTUgQEAgbTMycl9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsCitA QCAtMTQ0MSwxNCArMTQ0MiwxNSBAQCBtMzJyX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIg YWRkciwKICB9CiAgCiAgc3RhdGljIGludApAQCAtNDIyLDExICs0MjIsMTEgQEAgSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jCiAgCiAgICBmb3IgKGkgPSAw OyBpIDwgTUFYX0FDQ0VTU19CUkVBS1M7IGkrKykKICAgICAgewotSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAyMTUvZ2RiL3JlbW90ZS1taXBzLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvcmVtb3RlLW1pcHMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUu b3JpZy9nZGIvcmVtb3RlLW1pcHMuYwkyMDEzLTAxLTAxIDA3OjMyOjUwLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3JlbW90ZS1taXBzLmMJMjAxMy0wMi0xNSAy Mjo0Mjo0NS45OTQ4MDQzMTkgKzAxMDAKLUBAIC0yNDE5LDcgKzI0MTksNyBAQCBjYWxjdWxhdGVf bWFzayAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4pCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMub3JpZy9nZGIvcmVtb3RlLW1pcHMuYwkyMDEzLTA4LTAyIDE2OjQyOjI5LjU3NDYzMjkwNyAr MDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9yZW1vdGUtbWlwcy5jCTIwMTMt MDgtMDIgMTY6NDI6MzQuMTAwNjM5MTEyICswMjAwCitAQCAtMjQyNiw3ICsyNDI2LDcgQEAgY2Fs Y3VsYXRlX21hc2sgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQogICAgIHdhdGNocG9pbnQuICAq LwogIAogIHN0YXRpYyBpbnQKQEAgLTQzNSw3ICs0MzUsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDIxNS9nZGIvcmVtb3RlLW1pcHMuYwogIAkJCXN0cnVjdCBleHByZXNzaW9uICpjb25kKQog IHsKICAgIGlmIChtaXBzX3NldF9icmVha3BvaW50IChhZGRyLCBsZW4sIHR5cGUpKQotQEAgLTI0 MzEsNyArMjQzMSw3IEBAIG1pcHNfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLAor QEAgLTI0MzgsNyArMjQzOCw3IEBAIG1pcHNfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBh ZGRyLAogIC8qIFJlbW92ZSBhIHdhdGNocG9pbnQuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTQ0 NCwxMSArNDQ0LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9yZW1vdGUtbWlw cy5jCiAgCQkJc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCiAgewogICAgaWYgKG1pcHNfY2xlYXJf YnJlYWtwb2ludCAoYWRkciwgbGVuLCB0eXBlKSkKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1 L2dkYi9yZW1vdGUuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9yZW1vdGUu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvcmVtb3RlLmMJ MjAxMy0wMi0xNSAyMjo0MDoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi9yZW1vdGUuYwkyMDEzLTAyLTE1IDIyOjQyOjQ1Ljk5NjgwNDMyMyArMDEwMAotQEAg LTgxNTUsNyArODE1NSw3IEBAIHdhdGNocG9pbnRfdG9fWl9wYWNrZXQgKGludCB0eXBlKQorLS0t IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3JlbW90ZS5jCTIwMTMtMDgtMDIgMTY6 NDI6MjkuNTc3NjMyOTExICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Jl bW90ZS5jCTIwMTMtMDgtMDIgMTY6NDI6MzQuMTAzNjM5MTE2ICswMjAwCitAQCAtODI3Nyw3ICs4 Mjc3LDcgQEAgd2F0Y2hwb2ludF90b19aX3BhY2tldCAoaW50IHR5cGUpCiAgfQogIAogIHN0YXRp YyBpbnQKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIv cmVtb3RlLmMKICAJCQkgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIHN0cnVjdCBy ZW1vdGVfc3RhdGUgKnJzID0gZ2V0X3JlbW90ZV9zdGF0ZSAoKTsKLUBAIC04MTcwLDcgKzgxNzAs NyBAQCByZW1vdGVfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyCitAQCAtODI5Nyw3 ICs4Mjk3LDcgQEAgcmVtb3RlX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkcgogICAg cCA9IHN0cmNociAocnMtPmJ1ZiwgJ1wwJyk7CiAgICBhZGRyID0gcmVtb3RlX2FkZHJlc3NfbWFz a2VkIChhZGRyKTsKICAgIHAgKz0gaGV4bnVtc3RyIChwLCAoVUxPTkdFU1QpIGFkZHIpOwpAQCAt NDY2LDcgKzQ2Niw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9yZW1vdGUuYwog IAogICAgcHV0cGt0IChycy0+YnVmKTsKICAgIGdldHBrdCAoJnJzLT5idWYsICZycy0+YnVmX3Np emUsIDApOwotQEAgLTgxOTAsNyArODE5MCw3IEBAIHJlbW90ZV9pbnNlcnRfd2F0Y2hwb2ludCAo Q09SRV9BRERSIGFkZHIKK0BAIC04MzE3LDcgKzgzMTcsNyBAQCByZW1vdGVfaW5zZXJ0X3dhdGNo cG9pbnQgKENPUkVfQUREUiBhZGRyCiAgCiAgc3RhdGljIGludAogIHJlbW90ZV93YXRjaHBvaW50 X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0LCBDT1JFX0FERFIg YWRkciwKQEAgLTQ3NSw3ICs0NzUsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIv cmVtb3RlLmMKICB7CiAgICBDT1JFX0FERFIgZGlmZiA9IHJlbW90ZV9hZGRyZXNzX21hc2tlZCAo YWRkciAtIHN0YXJ0KTsKICAKLUBAIC04MTk5LDcgKzgxOTksNyBAQCByZW1vdGVfd2F0Y2hwb2lu dF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RyCitAQCAtODMyNiw3ICs4MzI2LDcgQEAgcmVtb3RlX3dh dGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cgogIAogIAogIHN0YXRpYyBpbnQKQEAgLTQ4 NCw3ICs0ODQsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcmVtb3RlLmMKICAJ CQkgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIHN0cnVjdCByZW1vdGVfc3RhdGUg KnJzID0gZ2V0X3JlbW90ZV9zdGF0ZSAoKTsKLUBAIC04MjE0LDcgKzgyMTQsNyBAQCByZW1vdGVf cmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyCitAQCAtODM0Niw3ICs4MzQ2LDcgQEAg cmVtb3RlX3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkcgogICAgcCA9IHN0cmNociAo cnMtPmJ1ZiwgJ1wwJyk7CiAgICBhZGRyID0gcmVtb3RlX2FkZHJlc3NfbWFza2VkIChhZGRyKTsK ICAgIHAgKz0gaGV4bnVtc3RyIChwLCAoVUxPTkdFU1QpIGFkZHIpOwpAQCAtNDkzLDEwICs0OTMs MTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3JlbW90ZS5jCiAgICBwdXRwa3Qg KHJzLT5idWYpOwogICAgZ2V0cGt0ICgmcnMtPmJ1ZiwgJnJzLT5idWZfc2l6ZSwgMCk7CiAgCi1J bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvczM5MC1uYXQuYworSW5kZXg6IGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi9zMzkwLW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41 MC4yMDEzMDIxNS5vcmlnL2dkYi9zMzkwLW5hdC5jCTIwMTMtMDItMTUgMjI6NDA6MTguMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvczM5MC1uYXQuYwkyMDEzLTAy LTE1IDIyOjQyOjQ1Ljk5NzgwNDMyNSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz Lm9yaWcvZ2RiL3MzOTAtbmF0LmMJMjAxMy0wOC0wMiAxNjo0MjoyOS41Nzg2MzI5MTMgKzAyMDAK KysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvczM5MC1uYXQuYwkyMDEzLTA4LTAyIDE2 OjQyOjM0LjEwMzYzOTExNiArMDIwMAogQEAgLTUxNiw3ICs1MTYsNyBAQCBzMzkwX2ZpeF93YXRj aF9wb2ludHMgKHN0cnVjdCBsd3BfaW5mbyAqCiAgfQogIApAQCAtNTE1LDIxICs1MTUsMjAgQEAg SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3MzOTAtbmF0LmMKICAJCQlzdHJ1Y3QgZXhw cmVzc2lvbiAqY29uZCkKICB7CiAgICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMvZ2RiL3RhcmdldC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmln L2dkYi90YXJnZXQuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5jCTIwMTMtMDItMTUgMjI6NDI6NDUuOTk3ODA0 MzI1ICswMTAwCi1AQCAtNDksNyArNDksOCBAQCBzdGF0aWMgdm9pZCB0YXJnZXRfaW5mbyAoY2hh ciAqLCBpbnQpOwotIHN0YXRpYyB2b2lkIGRlZmF1bHRfdGVybWluYWxfaW5mbyAoY2hhciAqLCBp bnQpOworLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3RhcmdldC5jCTIwMTMt MDgtMDIgMTY6NDI6MjkuNTgwNjMyOTE1ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMvZ2RiL3RhcmdldC5jCTIwMTMtMDgtMDIgMTY6NDI6NTIuMTYwNjYzNzg3ICswMjAwCitAQCAt NDksNyArNDksNyBAQCBzdGF0aWMgdm9pZCB0YXJnZXRfaW5mbyAoY2hhciAqLCBpbnQpOworIHN0 YXRpYyB2b2lkIGRlZmF1bHRfdGVybWluYWxfaW5mbyAoY29uc3QgY2hhciAqLCBpbnQpOwogIAog IHN0YXRpYyBpbnQgZGVmYXVsdF93YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3Qg dGFyZ2V0X29wcyAqLAogLQkJCQkJCSBDT1JFX0FERFIsIENPUkVfQUREUiwgaW50KTsKLSsJCQkJ CQkgQ09SRV9BRERSLCBDT1JFX0FERFIsCi0rCQkJCQkJIExPTkdFU1QpOworKwkJCQkJCSBDT1JF X0FERFIsIENPUkVfQUREUiwgTE9OR0VTVCk7CiAgCiAgc3RhdGljIGludCBkZWZhdWx0X3JlZ2lv bl9va19mb3JfaHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSLCBMT05HRVNUKTsKICAKLUBAIC0xMTQs MTAgKzExNSwxMCBAQCBzdGF0aWMgaW50IGRlYnVnX3RvX2luc2VydF9od19icmVha3BvaW50CitA QCAtMTE0LDEwICsxMTQsMTAgQEAgc3RhdGljIGludCBkZWJ1Z190b19pbnNlcnRfaHdfYnJlYWtw b2ludAogIHN0YXRpYyBpbnQgZGVidWdfdG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBn ZGJhcmNoICosCiAgCQkJCQkgIHN0cnVjdCBicF90YXJnZXRfaW5mbyAqKTsKICAKQEAgLTU0Miw3 ICs1NDEsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdGFyZ2V0LmMKICAJCQkJ ICAgICAgIHN0cnVjdCBleHByZXNzaW9uICopOwogIAogIHN0YXRpYyBpbnQgZGVidWdfdG9fc3Rv cHBlZF9ieV93YXRjaHBvaW50ICh2b2lkKTsKLUBAIC0xMjUsMTEgKzEyNiwxMiBAQCBzdGF0aWMg aW50IGRlYnVnX3RvX3N0b3BwZWRfYnlfd2F0Y2hwb2luCitAQCAtMTI1LDExICsxMjUsMTIgQEAg c3RhdGljIGludCBkZWJ1Z190b19zdG9wcGVkX2J5X3dhdGNocG9pbgogIHN0YXRpYyBpbnQgZGVi dWdfdG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3BzICosIENPUkVfQURE UiAqKTsKICAKICBzdGF0aWMgaW50IGRlYnVnX3RvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFu Z2UgKHN0cnVjdCB0YXJnZXRfb3BzICosCkBAIC01NTcsNyArNTU2LDcgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5jCiAgCQkJCQkJICAgIHN0cnVjdCBleHByZXNzaW9u ICopOwogIAogIHN0YXRpYyB2b2lkIGRlYnVnX3RvX3Rlcm1pbmFsX2luaXQgKHZvaWQpOwotQEAg LTc1MSwxMCArNzUzLDEwIEBAIHVwZGF0ZV9jdXJyZW50X3RhcmdldCAodm9pZCkKK0BAIC03OTAs MTAgKzc5MSwxMCBAQCB1cGRhdGVfY3VycmVudF90YXJnZXQgKHZvaWQpCiAgCSAgICAoaW50ICgq KSAoc3RydWN0IGdkYmFyY2ggKiwgc3RydWN0IGJwX3RhcmdldF9pbmZvICopKQogIAkgICAgcmV0 dXJuX21pbnVzX29uZSk7CiAgICBkZV9mYXVsdCAodG9faW5zZXJ0X3dhdGNocG9pbnQsCkBAIC01 NzAsNyArNTY5LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5jCiAg CSAgICByZXR1cm5fbWludXNfb25lKTsKICAgIGRlX2ZhdWx0ICh0b19zdG9wcGVkX2J5X3dhdGNo cG9pbnQsCiAgCSAgICAoaW50ICgqKSAodm9pZCkpCi1AQCAtNzY3LDcgKzc2OSw3IEBAIHVwZGF0 ZV9jdXJyZW50X3RhcmdldCAodm9pZCkKK0BAIC04MDYsNyArODA3LDcgQEAgdXBkYXRlX2N1cnJl bnRfdGFyZ2V0ICh2b2lkKQogICAgZGVfZmF1bHQgKHRvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hw b2ludCwKICAJICAgIGRlZmF1bHRfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50KTsKICAgIGRl X2ZhdWx0ICh0b19jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24sCkBAIC01NzksNyArNTc4 LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5jCiAgICAgICAgICAg ICAgcmV0dXJuX3plcm8pOwogICAgZGVfZmF1bHQgKHRvX3Rlcm1pbmFsX2luaXQsCiAgCSAgICAo dm9pZCAoKikgKHZvaWQpKQotQEAgLTM1NTgsNyArMzU2MCw3IEBAIGRlZmF1bHRfcmVnaW9uX29r X2Zvcl9od193YXRjaHBvaW50IChDT1IKK0BAIC0zNTk0LDcgKzM1OTUsNyBAQCBkZWZhdWx0X3Jl Z2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAoQ09SCiAgc3RhdGljIGludAogIGRlZmF1bHRfd2F0 Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwKICAJ CQkJICAgICAgQ09SRV9BRERSIGFkZHIsCkBAIC01ODgsNyArNTg3LDcgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5jCiAgewogICAgcmV0dXJuIGFkZHIgPj0gc3RhcnQg JiYgYWRkciA8IHN0YXJ0ICsgbGVuZ3RoOwogIH0KLUBAIC00MjY1LDcgKzQyNjcsNyBAQCBkZWJ1 Z190b19yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKENPCitAQCAtNDU1NSw3ICs0NTU2LDcg QEAgZGVidWdfdG9fcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChDTwogIH0KICAKICBzdGF0 aWMgaW50CkBAIC01OTcsNyArNTk2LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2Ri L3RhcmdldC5jCiAgCQkJCQkgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCiAgewogICAgaW50IHJl dHZhbDsKLUBAIC00Mjc1LDggKzQyNzcsOCBAQCBkZWJ1Z190b19jYW5fYWNjZWxfd2F0Y2hwb2lu dF9jb25kaXRpb24KK0BAIC00NTY1LDggKzQ1NjYsOCBAQCBkZWJ1Z190b19jYW5fYWNjZWxfd2F0 Y2hwb2ludF9jb25kaXRpb24KICAKICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywK ICAJCSAgICAgICJ0YXJnZXRfY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uICIKQEAgLTYw OCw3ICs2MDcsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdGFyZ2V0LmMKICAJ CSAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGNvbmQpLCAodW5zaWduZWQgbG9uZykgcmV0 dmFsKTsKICAgIHJldHVybiByZXR2YWw7CiAgfQotQEAgLTQzMTEsNyArNDMxMyw3IEBAIGRlYnVn X3RvX3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGEKK0BAIC00NjAxLDcgKzQ2MDIsNyBA QCBkZWJ1Z190b19zdG9wcGVkX2RhdGFfYWRkcmVzcyAoc3RydWN0IHRhCiAgc3RhdGljIGludAog IGRlYnVnX3RvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRfb3Bz ICp0YXJnZXQsCiAgCQkJCSAgICAgICBDT1JFX0FERFIgYWRkciwKQEAgLTYxNyw3ICs2MTYsNyBA QCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdGFyZ2V0LmMKICB7CiAgICBpbnQgcmV0 dmFsOwogIAotQEAgLTQzMTksOSArNDMyMSw5IEBAIGRlYnVnX3RvX3dhdGNocG9pbnRfYWRkcl93 aXRoaW5fcmFuZ2UgKHMKK0BAIC00NjA5LDkgKzQ2MTAsOSBAQCBkZWJ1Z190b193YXRjaHBvaW50 X2FkZHJfd2l0aGluX3JhbmdlIChzCiAgCQkJCQkJCSBzdGFydCwgbGVuZ3RoKTsKICAKICAgIGZw cmludGZfZmlsdGVyZWQgKGdkYl9zdGRsb2csCkBAIC02MjksNyArNjI4LDcgQEAgSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5jCiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAK LUBAIC00MzU2LDcgKzQzNTgsNyBAQCBkZWJ1Z190b19yZW1vdmVfaHdfYnJlYWtwb2ludCAoc3Ry dWN0IGdkCitAQCAtNDY0Niw3ICs0NjQ3LDcgQEAgZGVidWdfdG9fcmVtb3ZlX2h3X2JyZWFrcG9p bnQgKHN0cnVjdCBnZAogIH0KICAKICBzdGF0aWMgaW50CkBAIC02MzgsNyArNjM3LDcgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5jCiAgCQkJICAgIHN0cnVjdCBleHBy ZXNzaW9uICpjb25kKQogIHsKICAgIGludCByZXR2YWw7Ci1AQCAtNDM2NCwxNCArNDM2NiwxNCBA QCBkZWJ1Z190b19pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkCitAQCAtNDY1NCwxNCAr NDY1NSwxNCBAQCBkZWJ1Z190b19pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkCiAgICBy ZXR2YWwgPSBkZWJ1Z190YXJnZXQudG9faW5zZXJ0X3dhdGNocG9pbnQgKGFkZHIsIGxlbiwgdHlw ZSwgY29uZCk7CiAgCiAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCkBAIC02NTYs NyArNjU1LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5jCiAgCQkJ ICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIGludCByZXR2YWw7Ci1AQCAtNDM3 OSw4ICs0MzgxLDggQEAgZGVidWdfdG9fcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZAor QEAgLTQ2NjksOCArNDY3MCw4IEBAIGRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FE RFIgYWQKICAgIHJldHZhbCA9IGRlYnVnX3RhcmdldC50b19yZW1vdmVfd2F0Y2hwb2ludCAoYWRk ciwgbGVuLCB0eXBlLCBjb25kKTsKICAKICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywKQEAgLTY2NywxMSArNjY2LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi90 YXJnZXQuYwogIAkJICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoY29uZCksICh1bnNpZ25l ZCBsb25nKSByZXR2YWwpOwogICAgcmV0dXJuIHJldHZhbDsKICB9Ci1JbmRleDogZ2RiLTcuNS41 MC4yMDEzMDIxNS9nZGIvdGFyZ2V0LmgKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9n ZGIvdGFyZ2V0LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2Ri L3RhcmdldC5oCTIwMTMtMDItMTUgMjI6NDA6MTguMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvdGFyZ2V0LmgJMjAxMy0wMi0xNSAyMjo0Mjo0NS45OTg4MDQzMjgg KzAxMDAKLUBAIC00NjYsOCArNDY2LDggQEAgc3RydWN0IHRhcmdldF9vcHMKKy0tLSBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi90YXJnZXQuaAkyMDEzLTA4LTAyIDE2OjQyOjI5LjU4 MDYzMjkxNSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90YXJnZXQuaAky MDEzLTA4LTAyIDE2OjQyOjM0LjEwNTYzOTExOSArMDIwMAorQEAgLTM3Myw4ICszNzMsOCBAQCBz dHJ1Y3QgdGFyZ2V0X29wcwogIAogICAgICAvKiBEb2N1bWVudGF0aW9uIG9mIHdoYXQgdGhlIHR3 byByb3V0aW5lcyBiZWxvdyBhcmUgZXhwZWN0ZWQgdG8gZG8gaXMKICAgICAgICAgcHJvdmlkZWQg d2l0aCB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRfKiBtYWNyb3MuICAqLwpAQCAtNjgyLDcgKzY4 MSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi90YXJnZXQuaAogIAogICAgICBp bnQgKCp0b19pbnNlcnRfbWFza193YXRjaHBvaW50KSAoc3RydWN0IHRhcmdldF9vcHMgKiwKICAJ CQkJICAgICAgQ09SRV9BRERSLCBDT1JFX0FERFIsIGludCk7Ci1AQCAtNDc4LDEzICs0NzgsMTMg QEAgc3RydWN0IHRhcmdldF9vcHMKK0BAIC0zODUsMTMgKzM4NSwxMyBAQCBzdHJ1Y3QgdGFyZ2V0 X29wcwogICAgICBpbnQgdG9faGF2ZV9jb250aW51YWJsZV93YXRjaHBvaW50OwogICAgICBpbnQg KCp0b19zdG9wcGVkX2RhdGFfYWRkcmVzcykgKHN0cnVjdCB0YXJnZXRfb3BzICosIENPUkVfQURE UiAqKTsKICAgICAgaW50ICgqdG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSkgKHN0cnVj dCB0YXJnZXRfb3BzICosCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIzb2Yy NS5wYXRjaCBiL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yM29mMjUucGF0Y2gKaW5kZXggMDhlMmNk NC4uODI3ZDY0ZCAxMDA2NDQKLS0tIGEvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIzb2YyNS5wYXRj aAorKysgYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjNvZjI1LnBhdGNoCkBAIC0xMzcsMTAgKzEz NywxMCBAQCBDb250ZW50LVR5cGU6IHRleHQveC1wYXRjaAogQ29udGVudC1UcmFuc2Zlci1FbmNv ZGluZzogN2JpdAogQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9Yml0 cG9zLXRkZXAucGF0Y2gKIAotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2FscGhhLXRk ZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hbHBoYS10ZGVwLmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMzEwLm9yaWcvZ2RiL2FscGhhLXRkZXAuYwky MDEzLTAzLTEwIDE2OjQ0OjM0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAz MTAvZ2RiL2FscGhhLXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ0OjQyLjExMTU5OTgzOCArMDEwMAor LS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2FscGhhLXRkZXAuYwkyMDEzLTA4 LTAyIDE2OjQzOjAxLjEyODY3NjA5NCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz L2dkYi9hbHBoYS10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowNC43MjM2ODEwMDQgKzAyMDAKIEBA IC0yOTksMTggKzI5OSwxOCBAQCBhbHBoYV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNo ICpnCiAgewogICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3Jk ZXIgKGdkYmFyY2gpOwpAQCAtMTg0LDEwICsxODQsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAzMTAvZ2RiL2FscGhhLXRkZXAuYwogIAkgICAgICBtZW1jcHkgKGFyZ19yZWdfYnVmZmVyICsg b2Zmc2V0LCBjb250ZW50cywgdGxlbik7CiAgCSAgICAgIG9mZnNldCArPSB0bGVuOwogIAkgICAg ICBjb250ZW50cyArPSB0bGVuOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2FtZDY0 LXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hbWQ2NC10ZGVwLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMzEwLm9yaWcvZ2RiL2FtZDY0LXRkZXAu YwkyMDEzLTAzLTEwIDE2OjE2OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAx MzAzMTAvZ2RiL2FtZDY0LXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ0OjQyLjExMjU5OTgzOCArMDEw MAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2FtZDY0LXRkZXAuYwkyMDEz LTA4LTAyIDE2OjQzOjAxLjEzMDY3NjA5NyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi9hbWQ2NC10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowNC43MjQ2ODEwMDYgKzAyMDAK IEBAIC02MTYsNyArNjE2LDcgQEAgYW1kNjRfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYQogIHsKICAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdk YmFyY2gpOwpAQCAtMjE3LDEwICsyMTcsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAv Z2RiL2FtZDY0LXRkZXAuYwogICAgICAgIGVudW0gYW1kNjRfcmVnX2NsYXNzIGNsYXNzWzJdOwog ICAgICAgIGludCBuZWVkZWRfaW50ZWdlcl9yZWdzID0gMDsKICAgICAgICBpbnQgbmVlZGVkX3Nz ZV9yZWdzID0gMDsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9hbWQ2NC13aW5kb3dz LXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hbWQ2NC13aW5kb3dz LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvYW1k NjQtd2luZG93cy10ZGVwLmMJMjAxMy0wMS0wMSAwNzozMjozNy4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9hbWQ2NC13aW5kb3dzLXRkZXAuYwkyMDEzLTAzLTEw IDE2OjQ0OjQyLjExMjU5OTgzOCArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9y aWcvZ2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTM1Njc2MTA0 ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2FtZDY0LXdpbmRvd3MtdGRl cC5jCTIwMTMtMDgtMDIgMTY6NDM6MDQuNzI0NjgxMDA2ICswMjAwCiBAQCAtNzksNyArNzksNyBA QCBhbWQ2NF93aW5kb3dzX3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyCiAgCQkJICAgIHN0cnVj dCB0eXBlICp0eXBlLCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAogIAkJCSAgICBnZGJfYnl0 ZSAqcmVhZGJ1ZiwgY29uc3QgZ2RiX2J5dGUgKndyaXRlYnVmKQpAQCAtMjMwLDExICsyMzAsMTEg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCiAg ICBpbnQgcmVnbnVtID0gLTE7CiAgCiAgICAvKiBTZWUgaWYgb3VyIHZhbHVlIGlzIHJldHVybmVk IHRocm91Z2ggYSByZWdpc3Rlci4gIElmIGl0IGlzLCB0aGVuCi1JbmRleDogZ2RiLTcuNS41MC4y MDEzMDMxMC9nZGIvYXJtLXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi9hcm0tdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDMxMC5vcmlnL2dk Yi9hcm0tdGRlcC5jCTIwMTMtMDMtMDEgMTY6Mzg6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNS41MC4yMDEzMDMxMC9nZGIvYXJtLXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ0OjQyLjExNTU5 OTg0MCArMDEwMAotQEAgLTM0OTYsNyArMzQ5Niw3IEBAIGFybV92ZnBfY3ByY19yZWdfY2hhciAo ZW51bSBhcm1fdmZwX2NwcmMKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9h cm0tdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTQwNjc2MTEwICswMjAwCisrKysgZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMvZ2RiL2FybS10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowNC43Mjc2 ODEwMTAgKzAyMDAKK0BAIC0zNDk4LDcgKzM0OTgsNyBAQCBhcm1fdmZwX2NwcmNfcmVnX2NoYXIg KGVudW0gYXJtX3ZmcF9jcHJjCiAgICAgYXJyYXkpLiAgVmVjdG9ycyBhbmQgY29tcGxleCB0eXBl cyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQsCiAgICAgbWF0Y2hpbmcgdGhlIGdlbmVyaWMg QUFQQ1Mgc3VwcG9ydC4gICovCiAgCkBAIC0yNDMsNyArMjQzLDcgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAzMTAvZ2RiL2FybS10ZGVwLmMKICBhcm1fdmZwX2NwcmNfc3ViX2NhbmRpZGF0ZSAo c3RydWN0IHR5cGUgKnQsCiAgCQkJICAgIGVudW0gYXJtX3ZmcF9jcHJjX2Jhc2VfdHlwZSAqYmFz ZV90eXBlKQogIHsKLUBAIC0zNTI3LDcgKzM1MjcsNyBAQCBhcm1fdmZwX2NwcmNfc3ViX2NhbmRp ZGF0ZSAoc3RydWN0IHR5cGUKK0BAIC0zNTI5LDcgKzM1MjksNyBAQCBhcm1fdmZwX2NwcmNfc3Vi X2NhbmRpZGF0ZSAoc3RydWN0IHR5cGUKICAKICAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6CiAg ICAgICAgewpAQCAtMjUyLDcgKzI1Miw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dk Yi9hcm0tdGRlcC5jCiAgCXVuc2lnbmVkIHVuaXRsZW47CiAgCWNvdW50ID0gYXJtX3ZmcF9jcHJj X3N1Yl9jYW5kaWRhdGUgKFRZUEVfVEFSR0VUX1RZUEUgKHQpLCBiYXNlX3R5cGUpOwogIAlpZiAo Y291bnQgPT0gLTEpCi1AQCAtMzU0NywxMyArMzU0NywxNSBAQCBhcm1fdmZwX2NwcmNfc3ViX2Nh bmRpZGF0ZSAoc3RydWN0IHR5cGUKK0BAIC0zNTQ5LDEzICszNTQ5LDE1IEBAIGFybV92ZnBfY3By Y19zdWJfY2FuZGlkYXRlIChzdHJ1Y3QgdHlwZQogIAogICAgICBjYXNlIFRZUEVfQ09ERV9TVFJV Q1Q6CiAgICAgICAgewpAQCAtMjcxLDcgKzI3MSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMw MzEwL2dkYi9hcm0tdGRlcC5jCiAgCSAgICBpZiAoc3ViX2NvdW50ID09IC0xKQogIAkgICAgICBy ZXR1cm4gLTE7CiAgCSAgICBjb3VudCArPSBzdWJfY291bnQ7Ci1AQCAtMzU3MywxMyArMzU3NSwx NSBAQCBhcm1fdmZwX2NwcmNfc3ViX2NhbmRpZGF0ZSAoc3RydWN0IHR5cGUKK0BAIC0zNTc1LDEz ICszNTc3LDE1IEBAIGFybV92ZnBfY3ByY19zdWJfY2FuZGlkYXRlIChzdHJ1Y3QgdHlwZQogIAog ICAgICBjYXNlIFRZUEVfQ09ERV9VTklPTjoKICAgICAgICB7CkBAIC0yOTAsNyArMjkwLDcgQEAg SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2FybS10ZGVwLmMKICAJICAgIGlmIChzdWJf Y291bnQgPT0gLTEpCiAgCSAgICAgIHJldHVybiAtMTsKICAJICAgIGNvdW50ID0gKGNvdW50ID4g c3ViX2NvdW50ID8gY291bnQgOiBzdWJfY291bnQpOwotQEAgLTM2MTUsNyArMzYxOSw3IEBAIGFy bV92ZnBfY2FsbF9jYW5kaWRhdGUgKHN0cnVjdCB0eXBlICp0LAorQEAgLTM2MTcsNyArMzYyMSw3 IEBAIGFybV92ZnBfY2FsbF9jYW5kaWRhdGUgKHN0cnVjdCB0eXBlICp0LAogIAkJCWludCAqY291 bnQpCiAgewogICAgZW51bSBhcm1fdmZwX2NwcmNfYmFzZV90eXBlIGIgPSBWRlBfQ1BSQ19VTktO T1dOOwpAQCAtMjk5LDcgKzI5OSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9h cm0tdGRlcC5jCiAgICBpZiAoYyA8PSAwIHx8IGMgPiA0KQogICAgICByZXR1cm4gMDsKICAgICpi YXNlX3R5cGUgPSBiOwotQEAgLTM2OTYsNyArMzcwMCw3IEBAIGFybV9wdXNoX2R1bW15X2NhbGwg KHN0cnVjdCBnZGJhcmNoICpnZGIKK0BAIC0zNjk4LDcgKzM3MDIsNyBAQCBhcm1fcHVzaF9kdW1t eV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCiAgCiAgICBmb3IgKGFyZ251bSA9IDA7IGFyZ251 bSA8IG5hcmdzOyBhcmdudW0rKykKICAgICAgewpAQCAtMzA4LDEwICszMDgsMTAgQEAgSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2FybS10ZGVwLmMKICAgICAgICBzdHJ1Y3QgdHlwZSAq YXJnX3R5cGU7CiAgICAgICAgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlOwogICAgICAgIGVudW0g dHlwZV9jb2RlIHR5cGVjb2RlOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2F2ci10 ZGVwLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYXZyLXRkZXAuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvYXZyLXRkZXAuYwkyMDEz LTAzLTAxIDE2OjM4OjI0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAv Z2RiL2F2ci10ZGVwLmMJMjAxMy0wMy0xMCAxNjo0NDo0Mi4xMTY1OTk4NDAgKzAxMDAKKy0tLSBn ZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9hdnItdGRlcC5jCTIwMTMtMDgtMDIgMTY6 NDM6MDEuMTQyNjc2MTEzICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2F2 ci10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowNC43Mjg2ODEwMTEgKzAyMDAKIEBAIC0xMTcwLDEz ICsxMTcwLDE0IEBAIGF2cl9kdW1teV9pZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHMKICAK ICBzdHJ1Y3Qgc3RhY2tfaXRlbQpAQCAtMzQ1LDEwICszNDUsMTAgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAzMTAvZ2RiL2F2ci10ZGVwLmMKICAKICAgICAgICAvKiBDYWxjdWxhdGUgdGhlIHBv dGVudGlhbCBsYXN0IHJlZ2lzdGVyIG5lZWRlZC4gICovCiAgICAgICAgbGFzdF9yZWdudW0gPSBy ZWdudW0gLSAobGVuICsgKGxlbiAmIDEpKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dk Yi9iZmluLXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9iZmluLXRk ZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvYmZpbi10 ZGVwLmMJMjAxMy0wMy0wMSAxNjozODoyNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUw LjIwMTMwMzEwL2dkYi9iZmluLXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ2OjI3Ljk5MjY2OTk2NCAr MDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2JmaW4tdGRlcC5jCTIw MTMtMDgtMDIgMTY6NDM6MDEuMTQyNjc2MTEzICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMvZ2RiL2JmaW4tdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDQuNzI4NjgxMDExICswMjAw CiBAQCAtNTA2LDcgKzUwNiw3IEBAIGJmaW5fcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJj aCAqZ2QKICAgIGdkYl9ieXRlIGJ1Zls0XTsKICAgIGludCBpOwpAQCAtMzY3LDEwICszNjcsMTAg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2JmaW4tdGRlcC5jCiAgCiAgICAgICAg c3AgLT0gY29udGFpbmVyX2xlbjsKICAgICAgICB3cml0ZV9tZW1vcnkgKHNwLCB2YWx1ZV9jb250 ZW50c193cml0ZWFibGUgKGFyZ3NbaV0pLCBjb250YWluZXJfbGVuKTsKLUluZGV4OiBnZGItNy41 LjUwLjIwMTMwMzEwL2dkYi9jcmlzLXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi9jcmlzLXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAzMTAu b3JpZy9nZGIvY3Jpcy10ZGVwLmMJMjAxMy0wMy0wMSAxNjozODoyNC4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9jcmlzLXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ0 OjQyLjExNzU5OTg0MSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2Ri L2NyaXMtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDQuNzI5NjgxMDEyICswMjAwCisrKysgZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2NyaXMtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NTI6Mjgu MzE2NDkxNTYxICswMjAwCiBAQCAtNjcwLDEzICs2NzAsMTMgQEAgc3RhdGljIENPUkVfQUREUiBj cmlzX3Vud2luZF9zcCAoc3RydWN0CiAgCiAgc3RydWN0IHN0YWNrX2l0ZW0KQEAgLTM4Miw4ICsz ODIsOCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvY3Jpcy10ZGVwLmMKICB9Owog IAogIHN0YXRpYyBzdHJ1Y3Qgc3RhY2tfaXRlbSAqCi0tcHVzaF9zdGFja19pdGVtIChzdHJ1Y3Qg c3RhY2tfaXRlbSAqcHJldiwgdm9pZCAqY29udGVudHMsIGludCBsZW4pCi0rcHVzaF9zdGFja19p dGVtIChzdHJ1Y3Qgc3RhY2tfaXRlbSAqcHJldiwgdm9pZCAqY29udGVudHMsIHNzaXplX3QgbGVu KQorLXB1c2hfc3RhY2tfaXRlbSAoc3RydWN0IHN0YWNrX2l0ZW0gKnByZXYsIGNvbnN0IGdkYl9i eXRlICpjb250ZW50cywgaW50IGxlbikKKytwdXNoX3N0YWNrX2l0ZW0gKHN0cnVjdCBzdGFja19p dGVtICpwcmV2LCBjb25zdCBnZGJfYnl0ZSAqY29udGVudHMsIHNzaXplX3QgbGVuKQogIHsKICAg IHN0cnVjdCBzdGFja19pdGVtICpzaTsKICAgIHNpID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qg c3RhY2tfaXRlbSkpOwpAQCAtMzkzLDIyICszOTMsMjIgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAzMTAvZ2RiL2NyaXMtdGRlcC5jCiAgICAgIHsKIC0gICAgICBpbnQgbGVuOwogKyAgICAgIHNz aXplX3QgbGVuOwotICAgICAgIGNoYXIgKnZhbDsKKyAgICAgICBjb25zdCBnZGJfYnl0ZSAqdmFs OwogLSAgICAgIGludCByZWdfZGVtYW5kOwogLSAgICAgIGludCBpOwogKyAgICAgIHNzaXplX3Qg cmVnX2RlbWFuZDsKICsgICAgICBzc2l6ZV90IGk7CiAgICAgICAgCiAtICAgICAgbGVuID0gVFlQ RV9MRU5HVEggKHZhbHVlX3R5cGUgKGFyZ3NbYXJnbnVtXSkpOwotICAgICAgIHZhbCA9IChjaGFy ICopIHZhbHVlX2NvbnRlbnRzIChhcmdzW2FyZ251bV0pOworICAgICAgIHZhbCA9IHZhbHVlX2Nv bnRlbnRzIChhcmdzW2FyZ251bV0pOwogKyAgICAgIGxlbiA9IFRZUEVfTEVOR1RIICh2YWx1ZV90 eXBlIChhcmdzW2FyZ251bV0pKTsKICAgICAgICAKICAgICAgICAvKiBIb3cgbWF5IHJlZ2lzdGVy cyB3b3J0aCBvZiBzdG9yYWdlIGRvIHdlIG5lZWQgZm9yIHRoaXMgYXJndW1lbnQ/ICAqLwogICAg ICAgIHJlZ19kZW1hbmQgPSAobGVuIC8gNCkgKyAobGVuICUgNCAhPSAwID8gMSA6IDApOwotSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2g4MzAwLXRkZXAuYworSW5kZXg6IGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi9oODMwMC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjUwLjIwMTMwMzEwLm9yaWcvZ2RiL2g4MzAwLXRkZXAuYwkyMDEzLTAxLTAxIDA3OjMyOjQ0LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2g4MzAwLXRkZXAuYwky MDEzLTAzLTEwIDE2OjQ0OjQyLjExODU5OTg0MSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3 MzEtY3ZzLm9yaWcvZ2RiL2g4MzAwLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjAxLjE0NDY3NjEx NiArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9oODMwMC10ZGVwLmMJMjAx My0wOC0wMiAxNjo0MzowNC43MzA2ODEwMTQgKzAyMDAKIEBAIC02NDAsNyArNjQwLDcgQEAgaDgz MDBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZwogIAkJICAgICAgIGludCBzdHJ1 Y3RfcmV0dXJuLCBDT1JFX0FERFIgc3RydWN0X2FkZHIpCiAgewpAQCAtNDQxLDEwICs0NDEsMTAg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2g4MzAwLXRkZXAuYwogIAogIAkgICAg ICBmb3IgKG9mZnNldCA9IDA7IG9mZnNldCA8IHBhZGRlZF9sZW47IG9mZnNldCArPSB3b3Jkc2l6 ZSkKICAJCXsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9ocHBhLXRkZXAuYworSW5k ZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9ocHBhLXRkZXAuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvaHBwYS10ZGVwLmMJMjAxMy0wMy0wMSAx NjozODoyNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9ocHBh LXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ0OjQyLjExOTU5OTg0MiArMDEwMAorLS0tIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2hwcGEtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEu MTQ1Njc2MTE3ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2hwcGEtdGRl cC5jCTIwMTMtMDgtMDIgMTY6NDM6MDQuNzMxNjgxMDE1ICswMjAwCiBAQCAtOTYxLDcgKzk2MSw3 IEBAIGhwcGE2NF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICoKICAgICAgewogICAg ICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0gYXJnc1tpXTsKQEAgLTQ2MywxMCArNDYzLDEwIEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9ocHBhLXRkZXAuYwogICAgaW50IHJlZ251bSwg b2Zmc2V0OwogIAogICAgaWYgKGxlbiA+IDE2KQotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAv Z2RiL2kzODYtZGFyd2luLXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi9pMzg2LWRhcndpbi10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMzEw Lm9yaWcvZ2RiL2kzODYtZGFyd2luLXRkZXAuYwkyMDEzLTAyLTEyIDIwOjAzOjU0LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2kzODYtZGFyd2luLXRkZXAuYwky MDEzLTAzLTEwIDE2OjQ0OjQyLjExOTU5OTg0MiArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3 MzEtY3ZzLm9yaWcvZ2RiL2kzODYtZGFyd2luLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjAxLjE0 NTY3NjExNyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9pMzg2LWRhcndp bi10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowNC43MzE2ODEwMTUgKzAyMDAKIEBAIC0xNjYsNyAr MTY2LDcgQEAgaTM4Nl9kYXJ3aW5fcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYQogIAogICAg Zm9yICh3cml0ZV9wYXNzID0gMDsgd3JpdGVfcGFzcyA8IDI7IHdyaXRlX3Bhc3MrKykKQEAgLTQ3 NiwxMCArNDc2LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9pMzg2LWRhcndp bi10ZGVwLmMKICAgICAgICBpbnQgbnVtX20xMjggPSAwOwogIAogICAgICAgIGlmIChzdHJ1Y3Rf cmV0dXJuKQotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2kzODYtdGRlcC5jCitJbmRl eDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2kzODYtdGRlcC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNS41MC4yMDEzMDMxMC5vcmlnL2dkYi9pMzg2LXRkZXAuYwkyMDEzLTAzLTEwIDE2 OjE2OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2kzODYt dGRlcC5jCTIwMTMtMDMtMTAgMTY6NDQ6NDIuMTIwNTk5ODQyICswMTAwCistLS0gZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvaTM4Ni10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowMS4x NDc2NzYxMjAgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvaTM4Ni10ZGVw LmMJMjAxMy0wOC0wMiAxNjo0MzowNC43MzM2ODEwMTggKzAyMDAKIEBAIC0yNDA3LDcgKzI0MDcs NyBAQCBpMzg2X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCiAgICBnZGJfYnl0 ZSBidWZbNF07CiAgICBpbnQgaTsKQEAgLTU0MywxMCArNTQzLDEwIEBAIEluZGV4OiBnZGItNy41 LjUwLjIwMTMwMzEwL2dkYi9pMzg2LXRkZXAuYwogIAogICAgaWYgKGkzODZfZnBfcmVnbnVtX3Ag KGdldF9mcmFtZV9hcmNoIChmcmFtZSksIHJlZ251bSkpCiAgICAgIHsKLUluZGV4OiBnZGItNy41 LjUwLjIwMTMwMzEwL2dkYi9pYTY0LXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi9pYTY0LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAzMTAu b3JpZy9nZGIvaWE2NC10ZGVwLmMJMjAxMy0wMy0xMCAxNjoxNjoyMy4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9pYTY0LXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ0 OjQyLjEyMTU5OTg0MyArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2Ri L2lhNjQtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTQ4Njc2MTIxICswMjAwCisrKysgZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2lhNjQtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDQu NzM0NjgxMDE5ICswMjAwCiBAQCAtMzk3NCw4ICszOTc0LDEwIEBAIGlhNjRfcHVzaF9kdW1teV9j YWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKICAgIGludCBhcmdubzsKICAgIHN0cnVjdCB2YWx1ZSAq YXJnOwpAQCAtNTYwLDEwICs1NjAsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2Ri L2lhNjQtdGRlcC5jCiAgICBpbnQgZmxvYXRyZWc7CiAgICBVTE9OR0VTVCBic3A7CiAgICBDT1JF X0FERFIgZnVuY2Rlc2NhZGRyLCBwYywgZ2xvYmFsX3BvaW50ZXI7Ci1JbmRleDogZ2RiLTcuNS41 MC4yMDEzMDMxMC9nZGIvaXEyMDAwLXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi9pcTIwMDAtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDMx MC5vcmlnL2dkYi9pcTIwMDAtdGRlcC5jCTIwMTMtMDMtMDEgMTY6Mzg6MjUuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvaXEyMDAwLXRkZXAuYwkyMDEzLTAzLTEw IDE2OjQ0OjQyLjEyMTU5OTg0MyArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9y aWcvZ2RiL2lxMjAwMC10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowMS4xNDk2NzYxMjMgKzAyMDAK KysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvaXEyMDAwLXRkZXAuYwkyMDEzLTA4LTAy IDE2OjQzOjA0LjczNDY4MTAxOSArMDIwMAogQEAgLTY1NCw4ICs2NTQsOSBAQCBpcTIwMDBfcHVz aF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqCiAgICBjb25zdCBiZmRfYnl0ZSAqdmFsOwog ICAgYmZkX2J5dGUgYnVmWzRdOwpAQCAtNTc2LDExICs1NzYsMTEgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAzMTAvZ2RiL2lxMjAwMC10ZGVwLmMKICAgIC8qIFVzZWQgdG8gY29weSBzdHJ1Y3Qg YXJndW1lbnRzIGludG8gdGhlIHN0YWNrLiAgKi8KICAgIENPUkVfQUREUiBzdHJ1Y3RfcHRyOwog IAotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL20zMnItdGRlcC5jCitJbmRleDogZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL20zMnItdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNS41MC4yMDEzMDMxMC5vcmlnL2dkYi9tMzJyLXRkZXAuYwkyMDEzLTAxLTAxIDA3OjMyOjQ2 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL20zMnItdGRlcC5j CTIwMTMtMDMtMTAgMTY6NDQ6NDIuMTIxNTk5ODQzICswMTAwCi1AQCAtNjk1LDcgKzY5NSw3IEBA IG0zMnJfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKKy0tLSBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9tMzJyLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjAxLjE0 OTY3NjEyMyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9tMzJyLXRkZXAu YwkyMDEzLTA4LTAyIDE2OjQzOjA0LjczNDY4MTAxOSArMDIwMAorQEAgLTY4OSw3ICs2ODksNyBA QCBtMzJyX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCiAgICBDT1JFX0FERFIg cmVndmFsOwogICAgZ2RiX2J5dGUgKnZhbDsKICAgIGdkYl9ieXRlIHZhbGJ1ZltNQVhfUkVHSVNU RVJfU0laRV07CkBAIC01ODksMTAgKzU4OSwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDMx MC9nZGIvbTMyci10ZGVwLmMKICAKICAgIC8qIEZpcnN0IGZvcmNlIHNwIHRvIGEgNC1ieXRlIGFs aWdubWVudC4gICovCiAgICBzcCA9IHNwICYgfjM7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDMx MC9nZGIvbTY4ay10ZGVwLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbTY4 ay10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMzEwLm9yaWcvZ2RiL202 OGstdGRlcC5jCTIwMTMtMDEtMDEgMDc6MzI6NDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS41MC4yMDEzMDMxMC9nZGIvbTY4ay10ZGVwLmMJMjAxMy0wMy0xMCAxNjo0NDo0Mi4xMjE1OTk4 NDMgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9tNjhrLXRkZXAu YwkyMDEzLTA4LTAyIDE2OjQzOjAxLjE0OTY3NjEyMyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi9tNjhrLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjA0LjczNTY4MTAyMSAr MDIwMAogQEAgLTM4NCw3ICszODQsNyBAQCBtNjhrX3JlZ19zdHJ1Y3RfcmV0dXJuX3AgKHN0cnVj dCBnZGJhcmNoCiAgewogICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRl cCAoZ2RiYXJjaCk7CkBAIC02MTUsMTAgKzYxNSwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEz MDMxMC9nZGIvbTY4ay10ZGVwLmMKICAKICAgICAgICAvKiBOb24tc2NhbGFycyBiaWdnZXIgdGhh biA0IGJ5dGVzIGFyZSBsZWZ0IGFsaWduZWQsIG90aGVycyBhcmUKICAJIHJpZ2h0IGFsaWduZWQu ICAqLwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL204OGstdGRlcC5jCitJbmRleDog Z2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL204OGstdGRlcC5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNS41MC4yMDEzMDMxMC5vcmlnL2dkYi9tODhrLXRkZXAuYwkyMDEzLTAxLTAxIDA3OjMy OjQ3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL204OGstdGRl cC5jCTIwMTMtMDMtMTAgMTY6NDQ6NDIuMTIxNTk5ODQzICswMTAwCistLS0gZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMub3JpZy9nZGIvbTg4ay10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowMS4xNTA2 NzYxMjQgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbTg4ay10ZGVwLmMJ MjAxMy0wOC0wMiAxNjo0MzowNC43MzU2ODEwMjEgKzAyMDAKIEBAIC0yNjAsMTMgKzI2MCwxMyBA QCBtODhrX3N0b3JlX2FyZ3VtZW50cyAoc3RydWN0IHJlZ2NhY2hlICpyCiAgewogICAgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUpOwpAQCAtNjQ2 LDExICs2NDYsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL204OGstdGRlcC5j CiAgCiAgICAgICAgaWYgKG04OGtfaW5fcmVnaXN0ZXJfcCAodHlwZSkpCiAgCXsKLUluZGV4OiBn ZGItNy41LjUwLjIwMTMwMzEwL2dkYi9tZXAtdGRlcC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL21lcC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMw MzEwLm9yaWcvZ2RiL21lcC10ZGVwLmMJMjAxMy0wMy0wMSAxNjozODoyNS4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9tZXAtdGRlcC5jCTIwMTMtMDMtMTAgMTY6 NDQ6NDIuMTIyNTk5ODQzICswMTAwCi1AQCAtMjI3OSw3ICsyMjc5LDcgQEAgcHVzaF9sYXJnZV9h cmd1bWVudHMgKENPUkVfQUREUiBzcCwgaW50CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMu b3JpZy9nZGIvbWVwLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjAxLjE1MDY3NjEyNCArMDIwMAor KysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9tZXAtdGRlcC5jCTIwMTMtMDgtMDIgMTY6 NDM6MDQuNzM1NjgxMDIxICswMjAwCitAQCAtMjI3Miw3ICsyMjcyLDcgQEAgcHVzaF9sYXJnZV9h cmd1bWVudHMgKENPUkVfQUREUiBzcCwgaW50CiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsg aSsrKQogICAgICB7CkBAIC02NTksMTEgKzY1OSwxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEz MDMxMC9nZGIvbWVwLXRkZXAuYwogIAogICAgICAgIGlmIChhcmdfbGVuID4gTUVQX0dQUl9TSVpF KQogICAgICAgICAgewotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL21pcHMtdGRlcC5j CitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL21pcHMtdGRlcC5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDMxMC5vcmlnL2dkYi9taXBzLXRkZXAuYwkyMDEzLTAy LTI0IDEzOjU0OjA0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2Ri L21pcHMtdGRlcC5jCTIwMTMtMDMtMTAgMTY6NDQ6NDIuMTIzNTk5ODQ0ICswMTAwCi1AQCAtMzk2 LDcgKzM5Niw3IEBAIHN0YXRpYyB2b2lkCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3Jp Zy9nZGIvbWlwcy10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowMS4xNTM2NzYxMjggKzAyMDAKKysr KyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbWlwcy10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0 MzowNC43Mzc2ODEwMjMgKzAyMDAKK0BAIC00MDIsNyArNDAyLDcgQEAgc3RhdGljIHZvaWQKICBt aXBzX3hmZXJfcmVnaXN0ZXIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLAogIAkJICAgIGludCByZWdfbnVtLCBpbnQgbGVuZ3RoLAogIAkJICAgIGVu dW0gYmZkX2VuZGlhbiBlbmRpYW4sIGdkYl9ieXRlICppbiwKQEAgLTY3Miw3ICs2NzIsNyBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvbWlwcy10ZGVwLmMKICB7CiAgICBpbnQgcmVn X29mZnNldCA9IDA7CiAgCi1AQCAtNDE5LDggKzQxOSw4IEBAIG1pcHNfeGZlcl9yZWdpc3RlciAo c3RydWN0IGdkYmFyY2ggKmdkYmEKK0BAIC00MjUsOCArNDI1LDggQEAgbWlwc194ZmVyX3JlZ2lz dGVyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYQogICAgICB9CiAgICBpZiAobWlwc19kZWJ1ZykKICAg ICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkZXJyLApAQCAtNjgzLDcgKzY4Myw3IEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9taXBzLXRkZXAuYwogICAgaWYgKG1pcHNfZGVi dWcgJiYgb3V0ICE9IE5VTEwpCiAgICAgIHsKICAgICAgICBpbnQgaTsKLUBAIC00MzQ2LDEzICs0 MzQ2LDEzIEBAIG1pcHNfZWFiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmMKK0BAIC00 MzQ1LDEzICs0MzQ1LDEzIEBAIG1pcHNfZWFiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJh cmMKICAgICAgICBnZGJfYnl0ZSB2YWxidWZbTUFYX1JFR0lTVEVSX1NJWkVdOwogICAgICAgIHN0 cnVjdCB2YWx1ZSAqYXJnID0gYXJnc1thcmdudW1dOwogICAgICAgIHN0cnVjdCB0eXBlICphcmdf dHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykpOwpAQCAtNzAwLDcgKzcwMCw3 IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9taXBzLXRkZXAuYwogIAogICAgICAg IC8qIEZ1bmN0aW9uIHBvaW50ZXIgYXJndW1lbnRzIHRvIG1pcHMxNiBjb2RlIG5lZWQgdG8gYmUg bWFkZSBpbnRvCiAgICAgICAgICAgbWlwczE2IHBvaW50ZXJzLiAgKi8KLUBAIC00NjM3LDcgKzQ2 MzcsNyBAQCBtaXBzX2VhYmlfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqCitAQCAtNDYz Niw3ICs0NjM2LDcgQEAgbWlwc19lYWJpX3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKgog IAogIHN0YXRpYyBpbnQKICBtaXBzX24zMm42NF9mcF9hcmdfY2h1bmtfcCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsIHN0cnVjdCB0eXBlICphcmdfdHlwZSwKQEAgLTcwOSw3ICs3MDksNyBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvbWlwcy10ZGVwLmMKICB7CiAgICBpbnQgaTsK ICAKLUBAIC00NjUyLDcgKzQ2NTIsNyBAQCBtaXBzX24zMm42NF9mcF9hcmdfY2h1bmtfcCAoc3Ry dWN0IGdkYmFyCitAQCAtNDY1MSw3ICs0NjUxLDcgQEAgbWlwc19uMzJuNjRfZnBfYXJnX2NodW5r X3AgKHN0cnVjdCBnZGJhcgogIAogICAgZm9yIChpID0gMDsgaSA8IFRZUEVfTkZJRUxEUyAoYXJn X3R5cGUpOyBpKyspCiAgICAgIHsKQEAgLTcxOCw3ICs3MTgsNyBAQCBJbmRleDogZ2RiLTcuNS41 MC4yMDEzMDMxMC9nZGIvbWlwcy10ZGVwLmMKICAgICAgICBzdHJ1Y3QgdHlwZSAqZmllbGRfdHlw ZTsKICAKICAgICAgICAvKiBXZSdyZSBvbmx5IGxvb2tpbmcgYXQgbm9ybWFsIGZpZWxkcy4gICov Ci1AQCAtNDY5NCw3ICs0Njk0LDcgQEAgbWlwc19uMzJuNjRfcHVzaF9kdW1teV9jYWxsIChzdHJ1 Y3QgZ2RiYQorQEAgLTQ2OTMsNyArNDY5Myw3IEBAIG1pcHNfbjMybjY0X3B1c2hfZHVtbXlfY2Fs bCAoc3RydWN0IGdkYmEKICAgIGludCBhcmdyZWc7CiAgICBpbnQgZmxvYXRfYXJncmVnOwogICAg aW50IGFyZ251bTsKQEAgLTcyNyw3ICs3MjcsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDMx MC9nZGIvbWlwcy10ZGVwLmMKICAgIGludCBzdGFja19vZmZzZXQgPSAwOwogICAgZW51bSBiZmRf ZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwogICAgQ09S RV9BRERSIGZ1bmNfYWRkciA9IGZpbmRfZnVuY3Rpb25fYWRkciAoZnVuY3Rpb24sIE5VTEwpOwot QEAgLTUwNDUsMTEgKzUwNDUsMTEgQEAgbWlwc19uMzJuNjRfcmV0dXJuX3ZhbHVlIChzdHJ1Y3Qg Z2RiYXJjaAorQEAgLTUwNDQsMTEgKzUwNDQsMTEgQEAgbWlwc19uMzJuNjRfcmV0dXJuX3ZhbHVl IChzdHJ1Y3QgZ2RiYXJjaAogIAkJCQk6IE1JUFNfVjBfUkVHTlVNKTsKICAJICAgZmllbGQgPCBU WVBFX05GSUVMRFMgKHR5cGUpOyBmaWVsZCsrLCByZWdudW0gKz0gMikKICAJewpAQCAtNzQzLDcg Kzc0Myw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9taXBzLXRkZXAuYwogIAkg IGlmIChUWVBFX0xFTkdUSCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBmaWVsZCkpID09IDE2KQog IAkgICAgewogIAkgICAgICAvKiBBIDE2LWJ5dGUgbG9uZyBkb3VibGUgZmllbGQgZ29lcyBpbiB0 d28gY29uc2VjdXRpdmUKLUBAIC01MDkxLDggKzUwOTEsOCBAQCBtaXBzX24zMm42NF9yZXR1cm5f dmFsdWUgKHN0cnVjdCBnZGJhcmNoCitAQCAtNTA5MCw4ICs1MDkwLDggQEAgbWlwc19uMzJuNjRf cmV0dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaAogIAkgIGlmIChvZmZzZXQgKyB4ZmVyID4gVFlQ RV9MRU5HVEggKHR5cGUpKQogIAkgICAgeGZlciA9IFRZUEVfTEVOR1RIICh0eXBlKSAtIG9mZnNl dDsKICAJICBpZiAobWlwc19kZWJ1ZykKQEAgLTc1NCw3ICs3NTQsNyBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDMxMC9nZGIvbWlwcy10ZGVwLmMKICAJICBtaXBzX3hmZXJfcmVnaXN0ZXIgKGdk YmFyY2gsIHJlZ2NhY2hlLAogIAkJCSAgICAgIGdkYmFyY2hfbnVtX3JlZ3MgKGdkYmFyY2gpICsg cmVnbnVtLAogIAkJCSAgICAgIHhmZXIsIEJGRF9FTkRJQU5fVU5LTk9XTiwgcmVhZGJ1Ziwgd3Jp dGVidWYsCi1AQCAtNTE1MCw3ICs1MTUwLDcgQEAgbWlwc19vMzJfcHVzaF9kdW1teV9jYWxsIChz dHJ1Y3QgZ2RiYXJjaAorQEAgLTUxNDksNyArNTE0OSw3IEBAIG1pcHNfbzMyX3B1c2hfZHVtbXlf Y2FsbCAoc3RydWN0IGdkYmFyY2gKICAgIGludCBhcmdyZWc7CiAgICBpbnQgZmxvYXRfYXJncmVn OwogICAgaW50IGFyZ251bTsKQEAgLTc2Myw3ICs3NjMsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDMxMC9nZGIvbWlwcy10ZGVwLmMKICAgIGludCBzdGFja19vZmZzZXQgPSAwOwogICAgZW51 bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwog ICAgQ09SRV9BRERSIGZ1bmNfYWRkciA9IGZpbmRfZnVuY3Rpb25fYWRkciAoZnVuY3Rpb24sIE5V TEwpOwotQEAgLTUyMTQsMTMgKzUyMTQsMTMgQEAgbWlwc19vMzJfcHVzaF9kdW1teV9jYWxsIChz dHJ1Y3QgZ2RiYXJjaAorQEAgLTUyMTMsMTMgKzUyMTMsMTMgQEAgbWlwc19vMzJfcHVzaF9kdW1t eV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaAogICAgICAgIGNvbnN0IGdkYl9ieXRlICp2YWw7CiAgICAg ICAgc3RydWN0IHZhbHVlICphcmcgPSBhcmdzW2FyZ251bV07CiAgICAgICAgc3RydWN0IHR5cGUg KmFyZ190eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnKSk7CkBAIC03ODAsNyAr NzgwLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL21pcHMtdGRlcC5jCiAgCiAg ICAgICAgdmFsID0gdmFsdWVfY29udGVudHMgKGFyZyk7CiAgCi1AQCAtNTY3OCw4ICs1Njc4LDgg QEAgbWlwc19vNjRfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaAorQEAgLTU2NzcsOCAr NTY3Nyw4IEBAIG1pcHNfbzY0X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2gKICAgIGlu dCBhcmdyZWc7CiAgICBpbnQgZmxvYXRfYXJncmVnOwogICAgaW50IGFyZ251bTsKQEAgLTc5MSw3 ICs3OTEsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvbWlwcy10ZGVwLmMKICAg IGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNo KTsKICAgIENPUkVfQUREUiBmdW5jX2FkZHIgPSBmaW5kX2Z1bmN0aW9uX2FkZHIgKGZ1bmN0aW9u LCBOVUxMKTsKICAKLUBAIC01NzQwLDEzICs1NzQwLDEzIEBAIG1pcHNfbzY0X3B1c2hfZHVtbXlf Y2FsbCAoc3RydWN0IGdkYmFyY2gKK0BAIC01NzM5LDEzICs1NzM5LDEzIEBAIG1pcHNfbzY0X3B1 c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2gKICAgICAgICBnZGJfYnl0ZSB2YWxidWZbTUFY X1JFR0lTVEVSX1NJWkVdOwogICAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0gYXJnc1thcmdudW1d OwogICAgICAgIHN0cnVjdCB0eXBlICphcmdfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5 cGUgKGFyZykpOwpAQCAtODA4LDIzICs4MDgsMjMgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAz MTAvZ2RiL21pcHMtdGRlcC5jCiAgCiAgICAgICAgdmFsID0gdmFsdWVfY29udGVudHMgKGFyZyk7 CiAgCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvbW4xMDMwMC10ZGVwLmMKK0luZGV4 OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbW4xMDMwMC10ZGVwLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjUwLjIwMTMwMzEwLm9yaWcvZ2RiL21uMTAzMDAtdGRlcC5jCTIwMTMtMDMt MDEgMTY6Mzg6MjUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIv bW4xMDMwMC10ZGVwLmMJMjAxMy0wMy0xMCAxNjo0NDo0Mi4xMjM1OTk4NDQgKzAxMDAKKy0tLSBn ZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9tbjEwMzAwLXRkZXAuYwkyMDEzLTA4LTAy IDE2OjQzOjA0LjczNzY4MTAyMyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi9tbjEwMzAwLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjUwOjM0LjIxMjMyMDY5OCArMDIwMAogQEAg LTEyMjgsNyArMTIyOCw3IEBAIG1uMTAzMDBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJj aAogICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdk YmFyY2gpOwogICAgY29uc3QgaW50IHB1c2hfc2l6ZSA9IHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gs IEVfUENfUkVHTlVNKTsKICAgIGludCByZWdzX3VzZWQ7CiAtICBpbnQgbGVuLCBhcmdfbGVuOyAK LSsgIExPTkdFU1QgbGVuLCBhcmdfbGVuOworKyAgTE9OR0VTVCBsZW4sIGFyZ19sZW47IAogICAg aW50IHN0YWNrX29mZnNldCA9IDA7CiAgICBpbnQgYXJnbnVtOwotICAgY2hhciAqdmFsLCB2YWxi dWZbTUFYX1JFR0lTVEVSX1NJWkVdOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL210 LXRkZXAuYworICAgY29uc3QgZ2RiX2J5dGUgKnZhbDsKK0luZGV4OiBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy9nZGIvbXQtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDMx MC5vcmlnL2dkYi9tdC10ZGVwLmMJMjAxMy0wMS0wMSAwNzozMjo0Ny4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9tdC10ZGVwLmMJMjAxMy0wMy0xMCAxNjo0NDo0 Mi4xMjQ1OTk4NDQgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9t dC10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowMS4xNTQ2NzYxMzAgKzAyMDAKKysrKyBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy9nZGIvbXQtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDQuNzM3Njgx MDIzICswMjAwCiBAQCAtNzgzLDkgKzc4Myw5IEBAIG10X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0 IGdkYmFyY2ggKmdkYmEKICAgIGdkYl9ieXRlIGJ1ZltNVF9NQVhfU1RSVUNUX1NJWkVdOwogICAg aW50IGFyZ3JlZyA9IE1UXzFTVF9BUkdSRUc7CkBAIC04MzcsMTAgKzgzNywxMCBAQCBJbmRleDog Z2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvbXQtdGRlcC5jCiAgICBpbnQgaSwgajsKICAKICAgIC8q IEZpcnN0IGhhbmRsZSBob3dldmVyIG1hbnkgYXJncyB3ZSBjYW4gZml0IGludG8gTVRfMVNUX0FS R1JFRyB0aHJ1Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvcHBjLXN5c3YtdGRlcC5j CitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3BwYy1zeXN2LXRkZXAuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvcHBjLXN5c3YtdGRlcC5j CTIwMTMtMDEtMjMgMjE6MDM6MTguMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEz MDMxMC9nZGIvcHBjLXN5c3YtdGRlcC5jCTIwMTMtMDMtMTAgMTY6NDQ6NDIuMTI0NTk5ODQ0ICsw MTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvcHBjLXN5c3YtdGRlcC5j CTIwMTMtMDgtMDIgMTY6NDM6MDEuMTU1Njc2MTMxICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL3BwYy1zeXN2LXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjA0LjczODY4MTAy NSArMDIwMAogQEAgLTY4LDcgKzY4LDcgQEAgcHBjX3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCAo c3RydWN0IGdkYgogICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVf b3JkZXIgKGdkYmFyY2gpOwogICAgaW50IG9wZW5jbF9hYmkgPSBwcGNfc3lzdl91c2Vfb3BlbmNs X2FiaSAodmFsdWVfdHlwZSAoZnVuY3Rpb24pKTsKQEAgLTg3MSw3ICs4NzEsNyBAQCBJbmRleDog Z2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvcHBjLXN5c3YtdGRlcC5jCiAgCSAgY29uc3QgYmZkX2J5 dGUgKnZhbCA9IHZhbHVlX2NvbnRlbnRzIChhcmcpOwogIAogIAkgIGlmIChUWVBFX0NPREUgKHR5 cGUpID09IFRZUEVfQ09ERV9GTFQgJiYgbGVuIDw9IDgKLUBAIC0xNTU2LDE0ICsxNTU2LDE0IEBA IHBwYzY0X3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGcKK0BAIC0xNjEzLDE0ICsx NjEzLDE0IEBAIHBwYzY0X3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGcKICAJICAg IH0KICAJICBlbHNlCiAgCSAgICB7CkBAIC04ODgsNyArODg4LDcgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAzMTAvZ2RiL3BwYy1zeXN2LXRkZXAuYwogIAkJICAgICAgaWYgKGxlbiA+IHRkZXAt PndvcmRzaXplKQogIAkJCWxlbiA9IHRkZXAtPndvcmRzaXplOwogIAkJICAgICAgbWVtc2V0IChy ZWd2YWwsIDAsIHNpemVvZiByZWd2YWwpOwotQEAgLTE1OTEsNyArMTU5MSw3IEBAIHBwYzY0X3N5 c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGcKK0BAIC0xNjQ4LDcgKzE2NDgsNyBAQCBw cGM2NF9zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnCiAgCQkgICAgIHJlZ2lzdGVy LiAgV29yayBhcm91bmQgdGhpcyBieSBhbHdheXMgd3JpdGluZyB0aGUKICAJCSAgICAgdmFsdWUg dG8gbWVtb3J5LiAgRm9ydHVuYXRlbHksIGRvaW5nIHRoaXMKICAJCSAgICAgc2ltcGxpZmllcyB0 aGUgY29kZS4gICovCkBAIC04OTcsMTEgKzg5NywxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEz MDMxMC9nZGIvcHBjLXN5c3YtdGRlcC5jCiAgCQkgIGlmIChsZW4gPCB0ZGVwLT53b3Jkc2l6ZSkK ICAJCSAgICB3cml0ZV9tZW1vcnkgKGdwYXJhbSArIHRkZXAtPndvcmRzaXplIC0gbGVuLCB2YWws IGxlbik7CiAgCQkgIGVsc2UKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9ybDc4LXRk ZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9ybDc4LXRkZXAuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvcmw3OC10ZGVwLmMJMjAx My0wMS0wMSAwNzozMjo1MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMzEw L2dkYi9ybDc4LXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ0OjQyLjEyNDU5OTg0NCArMDEwMAotQEAg LTEwMTksOCArMTAxOSw4IEBAIHJsNzhfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAq Z2QKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9ybDc4LXRkZXAuYwkyMDEz LTA4LTAyIDE2OjQzOjAxLjE1NTY3NjEzMSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi9ybDc4LXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjA0LjczODY4MTAyNSArMDIwMAor QEAgLTEwMzAsOCArMTAzMCw4IEBAIHJsNzhfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJj aCAqZ2QKICAgIGZvciAoaSA9IG5hcmdzIC0gMTsgaSA+PSAwOyBpLS0pCiAgICAgIHsKICAgICAg ICBzdHJ1Y3QgdHlwZSAqdmFsdWVfdHlwZSA9IHZhbHVlX2VuY2xvc2luZ190eXBlIChhcmdzW2ld KTsKQEAgLTkxMiwxMSArOTEyLDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9y bDc4LXRkZXAuYwogIAogICAgICAgIHNwIC09IGNvbnRhaW5lcl9sZW47CiAgICAgICAgd3JpdGVf bWVtb3J5IChybDc4X21ha2VfZGF0YV9hZGRyZXNzIChzcCksCi1JbmRleDogZ2RiLTcuNS41MC4y MDEzMDMxMC9nZGIvcnM2MDAwLWFpeC10ZGVwLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy9nZGIvcnM2MDAwLWFpeC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIw MTMwMzEwLm9yaWcvZ2RiL3JzNjAwMC1haXgtdGRlcC5jCTIwMTMtMDEtMDEgMDc6MzI6NTAuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvcnM2MDAwLWFpeC10ZGVw LmMJMjAxMy0wMy0xMCAxNjo0NDo0Mi4xMjU1OTk4NDUgKzAxMDAKLUBAIC0xOTgsOSArMTk4LDkg QEAgcnM2MDAwX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKgorLS0tIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3JzNjAwMC1haXgtdGRlcC5jCTIwMTMtMDgtMDIgMTY6 NDM6MDEuMTU1Njc2MTMxICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Jz NjAwMC1haXgtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDQuNzM4NjgxMDI1ICswMjAwCitAQCAt MTk2LDkgKzE5Niw5IEBAIHJzNjAwMF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICoK ICAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwog ICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFy Y2gpOwogICAgaW50IGlpOwpAQCAtOTI4LDcgKzkyOCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIw MTMwMzEwL2dkYi9yczYwMDAtYWl4LXRkZXAuYwogICAgZ2RiX2J5dGUgdG1wX2J1ZmZlcls1MF07 CiAgICBpbnQgZl9hcmdubyA9IDA7CQkvKiBjdXJyZW50IGZsb2F0aW5nIHBvaW50IGFyZ25vICov CiAgICBpbnQgd29yZHNpemUgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpLT53b3Jkc2l6ZTsKLUBA IC0zMjgsNyArMzI4LDcgQEAgcmFuX291dF9vZl9yZWdpc3RlcnNfZm9yX2FyZ3VtZW50czoKK0BA IC0zMzEsNyArMzMxLDcgQEAgcmFuX291dF9vZl9yZWdpc3RlcnNfZm9yX2FyZ3VtZW50czoKICAK ICAgIGlmICgoYXJnbm8gPCBuYXJncykgfHwgYXJnYnl0ZXMpCiAgICAgIHsKQEAgLTkzNywxMSAr OTM3LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9yczYwMDAtYWl4LXRkZXAu YwogIAogICAgICAgIGlmIChhcmdieXRlcykKICAJewotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAz MTAvZ2RiL3MzOTAtdGRlcC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Mz OTAtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDMxMC5vcmlnL2dkYi9z MzkwLXRkZXAuYwkyMDEzLTAxLTAxIDA3OjMyOjUwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjUuNTAuMjAxMzAzMTAvZ2RiL3MzOTAtdGRlcC5jCTIwMTMtMDMtMTAgMTY6NDQ6NDIuMTI1NTk5 ODQ1ICswMTAwCi1AQCAtMjQ4Miw3ICsyNDgyLDcgQEAgaXNfZmxvYXRfbGlrZSAoc3RydWN0IHR5 cGUgKnR5cGUpCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvczM5MC10ZGVw LmMJMjAxMy0wOC0wMiAxNjo0MzowMS4xNTY2NzYxMzIgKzAyMDAKKysrKyBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy9nZGIvczM5MC10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowNC43Mzk2ODEwMjYg KzAyMDAKK0BAIC0yNDgzLDcgKzI0ODMsNyBAQCBpc19mbG9hdF9saWtlIChzdHJ1Y3QgdHlwZSAq dHlwZSkKICAKICAKICBzdGF0aWMgaW50CkBAIC05NTAsNyArOTUwLDcgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAzMTAvZ2RiL3MzOTAtdGRlcC5jCiAgewogICAgcmV0dXJuICgobiAmIChuIC0g MSkpID09IDApOwogIH0KLUBAIC0yNjY4LDcgKzI2NjgsNyBAQCBzMzkwX3B1c2hfZHVtbXlfY2Fs bCAoc3RydWN0IGdkYmFyY2ggKmdkCitAQCAtMjY2OSw3ICsyNjY5LDcgQEAgczM5MF9wdXNoX2R1 bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAogICAgICAgIHsKICAgICAgICAgIHN0cnVjdCB2 YWx1ZSAqYXJnID0gYXJnc1tpXTsKICAgICAgICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tf dHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnKSk7CkBAIC05NTksMTAgKzk1OSwxMCBAQCBJbmRleDog Z2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvczM5MC10ZGVwLmMKICAKICAJaWYgKHMzOTBfZnVuY3Rp b25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlICh0eXBlKSkKICAJICB7Ci1JbmRleDogZ2RiLTcuNS41 MC4yMDEzMDMxMC9nZGIvc2NvcmUtdGRlcC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMvZ2RiL3Njb3JlLXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAzMTAu b3JpZy9nZGIvc2NvcmUtdGRlcC5jCTIwMTMtMDMtMDEgMTY6Mzg6MjYuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvc2NvcmUtdGRlcC5jCTIwMTMtMDMtMTAgMTY6 NDQ6NDIuMTI1NTk5ODQ1ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9n ZGIvc2NvcmUtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTU3Njc2MTM0ICswMjAwCisrKysg Z2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Njb3JlLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQz OjA0LjczOTY4MTAyNiArMDIwMAogQEAgLTUxNSw3ICs1MTUsNyBAQCBzY29yZV9wdXNoX2R1bW15 X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnCiAgICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9 IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7CiAgICBpbnQgYXJnbnVtOwpAQCAtOTcyLDEw ICs5NzIsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3Njb3JlLXRkZXAuYwog ICAgQ09SRV9BRERSIHN0YWNrX29mZnNldCA9IDA7CiAgICBDT1JFX0FERFIgYWRkciA9IDA7CiAg Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvc2gtdGRlcC5jCitJbmRleDogZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMvZ2RiL3NoLXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu NTAuMjAxMzAzMTAub3JpZy9nZGIvc2gtdGRlcC5jCTIwMTMtMDEtMDEgMDc6MzI6NTAuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvc2gtdGRlcC5jCTIwMTMtMDMt MTAgMTY6NDQ6NDIuMTI2NTk5ODQ1ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMu b3JpZy9nZGIvc2gtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTU3Njc2MTM0ICswMjAwCisr KysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3NoLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjUx OjI5LjYwNDQwNDU1MyArMDIwMAogQEAgLTgwNyw3ICs4MDcsNyBAQCBzaF9za2lwX3Byb2xvZ3Vl IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjCiAgc3RhdGljIGludAogIHNoX3VzZV9zdHJ1Y3RfY29u dmVudGlvbiAoaW50IHJlbmVzYXNfYWJpLCBzdHJ1Y3QgdHlwZSAqdHlwZSkKQEAgLTk4OCwzNiAr OTg4LDM2IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9zaC10ZGVwLmMKIEBAIC05 MDksNyArOTA5LDcgQEAgc2hfZnJhbWVfYWxpZ24gKHN0cnVjdCBnZGJhcmNoICppZ25vcmUsCiAg CiAgLyogSGVscGVyIGZ1bmN0aW9uIHRvIGp1c3RpZnkgdmFsdWUgaW4gcmVnaXN0ZXIgYWNjb3Jk aW5nIHRvIGVuZGlhbmVzcy4gICovCi0gc3RhdGljIGNoYXIgKgorIHN0YXRpYyBjb25zdCBnZGJf Ynl0ZSAqCiAtc2hfanVzdGlmeV92YWx1ZV9pbl9yZWcgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LCBzdHJ1Y3QgdmFsdWUgKnZhbCwgaW50IGxlbikKICtzaF9qdXN0aWZ5X3ZhbHVlX2luX3JlZyAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB2YWx1ZSAqdmFsLCBMT05HRVNUIGxlbikK ICB7Ci0gICBzdGF0aWMgY2hhciB2YWxidWZbNF07CisgICBzdGF0aWMgZ2RiX2J5dGUgdmFsYnVm WzRdOwogIAogQEAgLTEwNjksNyArMTA2OSw4IEBAIHNoX3B1c2hfZHVtbXlfY2FsbF9mcHUgKHN0 cnVjdCBnZGJhcmNoICoKICAgIHN0cnVjdCB0eXBlICp0eXBlOwogICAgQ09SRV9BRERSIHJlZ3Zh bDsKLSAgIGNoYXIgKnZhbDsKKyAgIGNvbnN0IGdkYl9ieXRlICp2YWw7CiAtICBpbnQgbGVuLCBy ZWdfc2l6ZSA9IDA7CiArICBMT05HRVNUIGxlbjsKLSsgIHNzaXplX3QgcmVnX3NpemUgPSAwOwor KyAgaW50IHJlZ19zaXplID0gMDsKICAgIGludCBwYXNzX29uX3N0YWNrID0gMDsKICAgIGludCB0 cmVhdF9hc19mbHQ7CiAgICBpbnQgbGFzdF9yZWdfYXJnID0gSU5UX01BWDsKIEBAIC0xMjEwLDcg KzEyMTEsOCBAQCBzaF9wdXNoX2R1bW15X2NhbGxfbm9mcHUgKHN0cnVjdCBnZGJhcmNoCiAgICBz dHJ1Y3QgdHlwZSAqdHlwZTsKICAgIENPUkVfQUREUiByZWd2YWw7Ci0gICBjaGFyICp2YWw7Cisg ICBjb25zdCBnZGJfYnl0ZSAqdmFsOwogLSAgaW50IGxlbiwgcmVnX3NpemUgPSAwOwogKyAgTE9O R0VTVCBsZW47Ci0rICBzc2l6ZV90IHJlZ19zaXplID0gMDsKKysgIGludCByZWdfc2l6ZSA9IDA7 CiAgICBpbnQgcGFzc19vbl9zdGFjayA9IDA7CiAgICBpbnQgbGFzdF9yZWdfYXJnID0gSU5UX01B WDsKICAKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9zaDY0LXRkZXAuYworSW5kZXg6 IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9zaDY0LXRkZXAuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvc2g2NC10ZGVwLmMJMjAxMy0wMy0wMSAxNjoz ODoyNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9zaDY0LXRk ZXAuYwkyMDEzLTAzLTEwIDE2OjQ0OjQyLjEyNjU5OTg0NSArMDEwMAorLS0tIGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3NoNjQtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTU4 Njc2MTM1ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3NoNjQtdGRlcC5j CTIwMTMtMDgtMDIgMTY6NTA6NDkuNzQwMzQ0MTI1ICswMjAwCiBAQCAtMTA1OCw3ICsxMDU4LDcg QEAgc2g2NF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAogIAkJICAgICAgQ09S RV9BRERSIHN0cnVjdF9hZGRyKQogIHsKQEAgLTEwMjksMTcgKzEwMjksMTcgQEAgSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAzMTAvZ2RiL3NoNjQtdGRlcC5jCiAgICBpbnQgZG91YmxlX2FyZ3JlZzsK IEBAIC0xMDY5LDcgKzEwNjksNyBAQCBzaDY0X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFy Y2ggKmdkCiAgICBDT1JFX0FERFIgcmVndmFsOwotICAgY2hhciAqdmFsOwotICAgY2hhciB2YWxi dWZbOF07CisgICBjb25zdCBnZGJfYnl0ZSAqdmFsOworICAgZ2RiX2J5dGUgdmFsYnVmWzhdOwog LSAgaW50IGxlbjsKICsgIExPTkdFU1QgbGVuOwogICAgaW50IGFyZ3JlZ19zaXplOwogICAgaW50 IGZwX2FyZ3NbMTJdOwogIAotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3NwYXJjLXRk ZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9zcGFyYy10ZGVwLmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMzEwLm9yaWcvZ2RiL3NwYXJjLXRkZXAuYwky MDEzLTAzLTEwIDE2OjQ0OjMzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAz MTAvZ2RiL3NwYXJjLXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ0OjQyLjEyNzU5OTg0NiArMDEwMAor LS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3NwYXJjLXRkZXAuYwkyMDEzLTA4 LTAyIDE2OjQzOjAxLjE1OTY3NjEzNiArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz L2dkYi9zcGFyYy10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowNC43NDA2ODEwMjcgKzAyMDAKIEBA IC00NzEsNyArNDcxLDcgQEAgc3BhcmMzMl9zdG9yZV9hcmd1bWVudHMgKHN0cnVjdCByZWdjYWNo ZQogICAgZm9yIChpID0gMDsgaSA8IG5hcmdzOyBpKyspCiAgICAgIHsKQEAgLTEwNDksMTAgKzEw NDksMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3NwYXJjLXRkZXAuYwogIAog ICAgICAgIGlmIChzcGFyY19zdHJ1Y3R1cmVfb3JfdW5pb25fcCAodHlwZSkKICAJICB8fCAoc3Bh cmNfZmxvYXRpbmdfcCAodHlwZSkgJiYgbGVuID09IDE2KQotSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAzMTAvZ2RiL3NwYXJjNjQtdGRlcC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL3NwYXJjNjQtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDMxMC5v cmlnL2dkYi9zcGFyYzY0LXRkZXAuYwkyMDEzLTAxLTAxIDA3OjMyOjUxLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3NwYXJjNjQtdGRlcC5jCTIwMTMtMDMtMTAg MTY6NDQ6NDIuMTI3NTk5ODQ2ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3Jp Zy9nZGIvc3BhcmM2NC10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowMS4xNTk2NzYxMzYgKzAyMDAK KysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvc3BhcmM2NC10ZGVwLmMJMjAxMy0wOC0w MiAxNjo0MzowNC43NDE2ODEwMjkgKzAyMDAKIEBAIC02MzksNyArNjM5LDggQEAgc3BhcmM2NF8x Nl9ieXRlX2FsaWduX3AgKHN0cnVjdCB0eXBlICp0eQogIAogIHN0YXRpYyB2b2lkCkBAIC0xMTA4 LDExICsxMTA4LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9zcGFyYzY0LXRk ZXAuYwogICAgICAgIGludCByZWdudW0gPSAtMTsKICAgICAgICBnZGJfYnl0ZSBidWZbMTZdOwog IAotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3NwdS10ZGVwLmMKK0luZGV4OiBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvc3B1LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvc3B1LXRkZXAuYwkyMDEzLTAxLTAxIDA3OjMyOjUxLjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3NwdS10ZGVwLmMJMjAx My0wMy0xMCAxNjo0NDo0Mi4xMjc1OTk4NDYgKzAxMDAKLUBAIC0xMzczLDcgKzEzNzMsNyBAQCBz cHVfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCistLS0gZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMub3JpZy9nZGIvc3B1LXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjAxLjE2MDY3 NjEzOCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9zcHUtdGRlcC5jCTIw MTMtMDgtMDIgMTY6NDM6MDQuNzQxNjgxMDI5ICswMjAwCitAQCAtMTM3Niw3ICsxMzc2LDcgQEAg c3B1X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkYgogICAgICAgIHN0cnVjdCB2 YWx1ZSAqYXJnID0gYXJnc1tpXTsKICAgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5 cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykpOwogICAgICAgIGNvbnN0IGdkYl9ieXRlICpjb250ZW50 cyA9IHZhbHVlX2NvbnRlbnRzIChhcmcpOwpAQCAtMTEyMSw3ICsxMTIxLDcgQEAgSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAzMTAvZ2RiL3NwdS10ZGVwLmMKICAKICAgICAgICAvKiBJZiB0aGUgYXJn dW1lbnQgZG9lc24ndCB3aG9sbHkgZml0IGludG8gcmVnaXN0ZXJzLCBpdCBhbmQKICAJIGFsbCBz dWJzZXF1ZW50IGFyZ3VtZW50cyBnbyB0byB0aGUgc3RhY2suICAqLwotQEAgLTE0MDUsNyArMTQw NSw3IEBAIHNwdV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZGIKK0BAIC0xNDA4 LDcgKzE0MDgsNyBAQCBzcHVfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCiAg CXsKICAJICBzdHJ1Y3QgdmFsdWUgKmFyZyA9IGFyZ3NbaV07CiAgCSAgc3RydWN0IHR5cGUgKnR5 cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcpKTsKQEAgLTExMzAsMTAgKzExMzAs MTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3NwdS10ZGVwLmMKICAJICBpbnQg cHJlZmVycmVkX3Nsb3Q7CiAgCSAgCiAgCSAgaWYgKHNwdV9zY2FsYXJfdmFsdWVfcCAodHlwZSkp Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvdGljNngtdGRlcC5jCitJbmRleDogZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3RpYzZ4LXRkZXAuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvdGljNngtdGRlcC5jCTIwMTMtMDMtMDEgMTY6Mzg6 MjcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvdGljNngtdGRl cC5jCTIwMTMtMDMtMTAgMTY6NDQ6NDIuMTI4NTk5ODQ2ICswMTAwCistLS0gZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMub3JpZy9nZGIvdGljNngtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTYw Njc2MTM4ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3RpYzZ4LXRkZXAu YwkyMDEzLTA4LTAyIDE2OjQzOjA0Ljc0MjY4MTAzMCArMDIwMAogQEAgLTg5Niw3ICs4OTYsNyBA QCB0aWM2eF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnCiAgICBpbnQgYXJncmVn ID0gMDsKICAgIGludCBhcmdudW07CkBAIC0xMTcxLDEwICsxMTcxLDEwIEBAIEluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMzEwL2dkYi90aWM2eC10ZGVwLmMKICAKICAJICBhZGRyID0gc3AgKyBzdGFj a19vZmZzZXQ7CiAgCSAgd3JpdGVfbWVtb3J5IChhZGRyLCB2YWwsIGxlbik7Ci1JbmRleDogZ2Ri LTcuNS41MC4yMDEzMDMxMC9nZGIvdGlsZWd4LXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi90aWxlZ3gtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4y MDEzMDMxMC5vcmlnL2dkYi90aWxlZ3gtdGRlcC5jCTIwMTMtMDMtMDIgMDI6MzQ6NDAuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvdGlsZWd4LXRkZXAuYwkyMDEz LTAzLTEwIDE2OjQ1OjMxLjg1NzYyOTEwMCArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzLm9yaWcvZ2RiL3RpbGVneC10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowMS4xNjE2NzYxMzkg KzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGlsZWd4LXRkZXAuYwkyMDEz LTA4LTAyIDE2OjQzOjA0Ljc0MjY4MTAzMCArMDIwMAogQEAgLTI5MSw3ICsyOTEsNyBAQCB0aWxl Z3hfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqCiAgICBDT1JFX0FERFIgc3RhY2tf ZGVzdCA9IHNwOwogICAgaW50IGFyZ3JlZyA9IFRJTEVHWF9SMF9SRUdOVU07CkBAIC0xMTg0LDEx ICsxMTg0LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi90aWxlZ3gtdGRlcC5j CiAgICBzdGF0aWMgY29uc3QgZ2RiX2J5dGUgZm91cl96ZXJvX3dvcmRzWzE2XSA9IHsgMCB9Owog IAogICAgLyogSWYgc3RydWN0X3JldHVybiBpcyAxLCB0aGVuIHRoZSBzdHJ1Y3QgcmV0dXJuIGFk ZHJlc3Mgd2lsbAotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3Y4NTAtdGRlcC5jCitJ bmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Y4NTAtdGRlcC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDMxMC5vcmlnL2dkYi92ODUwLXRkZXAuYwkyMDEzLTAzLTAy IDE5OjI2OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3Y4 NTAtdGRlcC5jCTIwMTMtMDMtMTAgMTY6NDQ6NDIuMTI4NTk5ODQ2ICswMTAwCi1AQCAtODE3LDcg KzgxNyw3IEBAIHY4NTBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKKy0tLSBn ZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi92ODUwLXRkZXAuYwkyMDEzLTA4LTAyIDE2 OjQzOjAxLjE2MTY3NjEzOSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi92 ODUwLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjUyOjU1LjIxOTUzMTEwMSArMDIwMAorQEAgLTEwMjEs NyArMTAyMSw3IEBAIHY4NTBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKICAg IGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNo KTsKICAgIGludCBhcmdyZWc7CiAgICBpbnQgYXJnbnVtOwpAQCAtMTE5Niw4ICsxMTk2LDggQEAg SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3Y4NTAtdGRlcC5jCiArICBMT05HRVNUIGxl biA9IDA7CiAgICBpbnQgc3RhY2tfb2Zmc2V0OwogIAotICAgLyogVGhlIG9mZnNldCBvbnRvIHRo ZSBzdGFjayBhdCB3aGljaCB3ZSB3aWxsIHN0YXJ0IGNvcHlpbmcgcGFyYW1ldGVycwotQEAgLTg0 Miw3ICs4NDIsNyBAQCB2ODUwX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCisg ICBpZiAoZ2RiYXJjaF90ZGVwIChnZGJhcmNoKS0+YWJpID09IFY4NTBfQUJJX1JIODUwKQorQEAg LTEwNDksNyArMTA0OSw3IEBAIHY4NTBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAq Z2QKICAgICAgIGluIGZvdXIgcmVnaXN0ZXJzIGF2YWlsYWJsZS4gIExvb3AgdGhydSBhcmdzIGZy b20gZmlyc3QgdG8gbGFzdC4gICovCiAgICBmb3IgKGFyZ251bSA9IDA7IGFyZ251bSA8IG5hcmdz OyBhcmdudW0rKykKICAgICAgewpAQCAtMTIwNiwxMCArMTIwNiwxMCBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDMxMC9nZGIvdjg1MC10ZGVwLmMKICAgICAgICBnZGJfYnl0ZSAqdmFsOwogICAg ICAgIGdkYl9ieXRlIHZhbGJ1Zlt2ODUwX3JlZ19zaXplXTsKICAKLUluZGV4OiBnZGItNy41LjUw LjIwMTMwMzEwL2dkYi92YXgtdGRlcC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL3ZheC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMzEwLm9yaWcv Z2RiL3ZheC10ZGVwLmMJMjAxMy0wMy0xMCAxNjo0NDozNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy41LjUwLjIwMTMwMzEwL2dkYi92YXgtdGRlcC5jCTIwMTMtMDMtMTAgMTY6NDQ6NDIuMTI4 NTk5ODQ2ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvdmF4LXRk ZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjAxLjE2MTY3NjEzOSArMDIwMAorKysrIGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzL2dkYi92YXgtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDQuNzQyNjgxMDMw ICswMjAwCiBAQCAtMTE1LDcgKzExNSw3IEBAIHZheF9zdG9yZV9hcmd1bWVudHMgKHN0cnVjdCBy ZWdjYWNoZSAqcmUKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2Fy Y2ggKHJlZ2NhY2hlKTsKICAgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9i eXRlX29yZGVyIChnZGJhcmNoKTsKQEAgLTEyMjgsMTAgKzEyMjgsMTAgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAzMTAvZ2RiL3ZheC10ZGVwLmMKICAKICAgICAgICBzcCAtPSAobGVuICsgMykg JiB+MzsKICAgICAgICBjb3VudCArPSAobGVuICsgMykgLyA0OwotSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAzMTAvZ2RiL3hzdG9ybXkxNi10ZGVwLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy9nZGIveHN0b3JteTE2LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAx MzAzMTAub3JpZy9nZGIveHN0b3JteTE2LXRkZXAuYwkyMDEzLTAzLTAxIDE2OjM4OjI3LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3hzdG9ybXkxNi10ZGVwLmMJ MjAxMy0wMy0xMCAxNjo0NjowNS44ODg2NTMyMDEgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy5vcmlnL2dkYi94c3Rvcm15MTYtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTYy Njc2MTQxICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3hzdG9ybXkxNi10 ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowNC43NDM2ODEwMzIgKzAyMDAKIEBAIC0yMzUsOCArMjM1 LDkgQEAgeHN0b3JteTE2X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyYwogICAgZW51bSBi ZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwogICAg Q09SRV9BRERSIHN0YWNrX2Rlc3QgPSBzcDsKQEAgLTEyNDQsMTAgKzEyNDQsMTAgQEAgSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3hzdG9ybXkxNi10ZGVwLmMKICAgIGNvbnN0IGdkYl9i eXRlICp2YWw7CiAgICBnZGJfYnl0ZSBidWZbeHN0b3JteTE2X3BjX3NpemVdOwogIAotSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3h0ZW5zYS10ZGVwLmMKK0luZGV4OiBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIveHRlbnNhLXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu NTAuMjAxMzAzMTAub3JpZy9nZGIveHRlbnNhLXRkZXAuYwkyMDEzLTAxLTAxIDA3OjQxOjI5LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3h0ZW5zYS10ZGVwLmMJ MjAxMy0wMy0xMCAxNjo0NDo0Mi4xMjk1OTk4NDcgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy5vcmlnL2dkYi94dGVuc2EtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTYzNjc2 MTQyICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3h0ZW5zYS10ZGVwLmMJ MjAxMy0wOC0wMiAxNjo0MzowNC43NDM2ODEwMzIgKzAyMDAKIEBAIC0xNjUzLDggKzE2NTMsNyBA QCB4dGVuc2Ffc3RvcmVfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgdHlwZSAqCiAgCiAgICAgICAgaWYg KGxlbiA+IChjYWxsc2l6ZSA+IDggPyA4IDogMTYpKQoKZGlmZiAtLWdpdCBhL2dkYi10ZXN0LXBp ZDAtY29yZS5wYXRjaCBiL2dkYi10ZXN0LXBpZDAtY29yZS5wYXRjaAppbmRleCAxYmMyMjFiLi5j ODY3NWEzIDEwMDY0NAotLS0gYS9nZGItdGVzdC1waWQwLWNvcmUucGF0Y2gKKysrIGIvZ2RiLXRl c3QtcGlkMC1jb3JlLnBhdGNoCkBAIC02LDggKzYsMTAgQEAgaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1wYXRjaGVzLzIwMTAtMDgvbXNnMDAwODUuaHRtbAogaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1jdnMvMjAxMC0wOC9tc2cwMDAyNi5odG1sCiAyZTViY2ZkZWYxZWMzODgzZDQ4 YzNmODdhNGJlNWMwZGZmMjVlMTdlCiAKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gveDg2XzY0LXBpZDAtY29yZS5jb3JlLmJ6Mi51dQorSW5kZXg6IGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXBpZDAtY29yZS5j b3JlLmJ6Mi51dQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gveDg2XzY0LXBpZDAtY29yZS5jb3JlLmJ6Mi51dQkyMDEzLTA4LTAyIDIyOjE0 OjUwLjc0ODk5MDg4MyArMDIwMAogQEAgLTAsMCArMSwyMCBAQAogK2JlZ2luIDYwMCB4ODZfNjQt cGlkMC1jb3JlLmNvcmUuYnoyCiArTTBFSUguMyUhNjI5MzYyLENBPlAhJC8nX19fX19eKiNFWi1B IVNQMzZQJl86RzAjPTE0YGAwNEEmOCwnVQpAQCAtMjksOCArMzEsMTAgQEAgaHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wOC9tc2cwMDAyNi5odG1sCiArNEIuWiEvLDAtSVpe V19RPVIxM0EwRCIsQ0E+UGAKICtgCiArZW5kCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5hcmNoL3g4Nl82NC1waWQwLWNvcmUuZXhwCitJbmRleDogZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtcGlkMC1jb3JlLmV4cAor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gv eDg2XzY0LXBpZDAtY29yZS5leHAJMjAxMy0wOC0wMiAyMjoxNzozMC41NzUyMDkzODUgKzAyMDAK IEBAIC0wLDAgKzEsNDYgQEAKICsjIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBH TlUgZGVidWdnZXIuCiArIyAKQEAgLTc3LDQgKzgxLDQgQEAgaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1jdnMvMjAxMC0wOC9tc2cwMDAyNi5odG1sCiArCiArIyBGb3JtZXIgY3Jhc2ggd2Fz OgogKyMgdGhyZWFkLmM6ODg0OiBpbnRlcm5hbC1lcnJvcjogc3dpdGNoX3RvX3RocmVhZDogQXNz ZXJ0aW9uIGBpbmYgIT0gTlVMTCcgZmFpbGVkLgotK2dkYl90ZXN0ICJjb3JlLWZpbGUgJHtjb3Jl ZmlsZX0iICJQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMTEsIFNlZ21lbnRhdGlvbiBm YXVsdFxcLlxyXG4uKiIKKytnZGJfdGVzdCAiY29yZS1maWxlICR7Y29yZWZpbGV9IiAiUHJvZ3Jh bSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsICgxMXxTSUdTRUdWKSwgU2VnbWVudGF0aW9uIGZhdWx0 XFwuXHJcbi4qIgoKZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS1mcmFtZWZpbHRlcnMtMW9mMi5w YXRjaCBiL2dkYi11cHN0cmVhbS1mcmFtZWZpbHRlcnMtMW9mMi5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggODBhMGQ0My4uMDAwMDAwMAotLS0gYS9nZGItdXBzdHJlYW0tZnJh bWVmaWx0ZXJzLTFvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NTUxICswLDAgQEAKLWh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDUvbXNnMDAwODQuaHRtbAotCi0j IyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNS8wOSAxODowMzoyNwkxLjE1NTM5Ci0jIyMgc3Jj L2dkYi9DaGFuZ2VMb2cJMjAxMy8wNS8xMCAxMDoyNjowMQkxLjE1NTQwCi0jIyAtMSwzICsxLDUy IEBACi0rMjAxMy0wNS0xMCAgUGhpbCBNdWxkb29uICA8cG11bGRvb25AcmVkaGF0LmNvbT4KLSsK LSsJKiBzdGFjay5jIChiYWNrdHJhY2VfY29tbWFuZF8xKTogQWRkICJuby1maWx0ZXJzIiwgYW5k IFB5dGhvbiBmcmFtZQotKwlmaWx0ZXIgbG9naWMuCi0rCShiYWNrdHJhY2VfY29tbWFuZCk6IEFk ZCAibm8tZmlsdGVycyIgb3B0aW9uIHBhcnNpbmcuCi0rCShfaW5pdGlhbGl6ZV9zdGFjayk6IEFs dGVyIGhlbHAgdG8gcmVmbGVjdCAibm8tZmlsdGVycyIgb3B0aW9uLgotKwkqIE1ha2VmaWxlLmlu IChTVUJESVJfUFlUSE9OX09CUyk6IEFkZCBweS1mcmFtZWZpbHRlci5vCi0rCShTVUJESVJfUFlU SE9OX1NSQ1MpOiBBZGQgcHktZnJhbWVmaWx0ZXIuYwotKwkocHktZnJhbWUubyk6IEFkZCB0YXJn ZXQKLSsJKiBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbiAoUFlUSE9OX0RJUik6IEFkZCBQeXRo b24gZnJhbWUKLSsJZmlsdGVyIGZpbGVzLgotKwkqIHB5dGhvbi9weXRob24uaDogQWRkIG5ldyBm cmFtZSBmaWx0ZXIgY29uc3RhbnRzLCBhbmQgZmxhZyBlbnVtLgotKwkoYXBwbHlfZnJhbWVfZmls dGVyKTogQWRkIGRlZmluaXRpb24uCi0rCSogcHl0aG9uL3B5dGhvbi5jIChhcHBseV9mcmFtZV9m aWx0ZXIpOiBOZXcgbm9uLVB5dGhvbgotKwllbmFibGVkIGZ1bmN0aW9uLgotKwkqIHB5dGhvbi9w eS11dGlscy5jIChweV94ZGVjcmVmKTogTmV3IGZ1bmN0aW9uLgotKwkobWFrZV9jbGVhbnVwX3B5 X3hkZWNyZWYpOiBEaXR0by4KLSsJKiBweXRob24vcHktb2JqZmlsZS5jOiBEZWNsYXJlIGZyYW1l X2ZpbHRlcnMgZGljdGlvbmFyeS4KLSsJKG9iamZweV9kZWFsbG9jKTogQWRkIGZyYW1lX2ZpbHRl cnMgZGVhbGxvYy4KLSsJKG9iamZweV9uZXcpOiBJbml0aWFsaXplIGZyYW1lX2ZpbHRlcnMgYXR0 cmlidXRlLgotKwkob2JqZmlsZV90b19vYmpmaWxlX29iamVjdCk6IERpdHRvLgotKwkob2JqZnB5 X2dldF9mcmFtZV9maWx0ZXJzKTogTmV3IGZ1bmN0aW9uLgotKwkob2JqZnB5X3NldF9mcmFtZV9m aWx0ZXJzKTogTmV3IGZ1bmN0aW9uLgotKwkqIHB5dGhvbi9weS1wcm9nc3BhY2UuYzogRGVjbGFy ZSBmcmFtZV9maWx0ZXJzIGRpY3Rpb25hcnkuCi0rCShwc3B5X2RlYWxsb2MpOiBBZGQgZnJhbWVf ZmlsdGVycyBkZWFsbG9jLgotKwkocHNweV9uZXcpOiBJbml0aWFsaXplIGZyYW1lX2ZpbHRlcnMg YXR0cmlidXRlLgotKwkocHNwYWNlZV90b19wc3BhY2Vfb2JqZWN0KTogRGl0dG8uCi0rCShwc3B5 X2dldF9mcmFtZV9maWx0ZXJzKTogTmV3IGZ1bmN0aW9uLgotKwkocHNweV9zZXRfZnJhbWVfZmls dGVycyk6IE5ldyBmdW5jdGlvbi4KLSsJKiBweXRob24vcHktZnJhbWVmaWx0ZXIuYzogTmV3IGZp bGUuCi0rCSogcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9mcmFtZV9maWx0ZXJzLnB5OiBOZXcgZmls ZS4KLSsJKiBweXRob24vbGliL2dkYi9mcmFtZXMucHk6IE5ldyBmaWxlLgotKwkqIHB5dGhvbi9s aWIvZ2RiL19faW5pdF9fLnB5OiBJbml0aWFsaXplIGdsb2JhbCBmcmFtZV9maWx0ZXJzCi0rCWRp Y3Rpb25hcnkKLSsJKiBweXRob24vbGliL2dkYi9GcmFtZURlY29yYXRvci5weTogTmV3IGZpbGUu Ci0rCSogcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRvci5weTogTmV3IGZpbGUuCi0rCSogbWkv bWktY21kcy5jIChtaV9jbWRzKTogQWRkIGZyYW1lIGZpbHRlcnMgY29tbWFuZC4KLSsJKiBtaS9t aS1jbWRzLmg6IERlY2xhcmUuCi0rCSogbWkvbWktY21kLXN0YWNrLmMgKG1pX2NtZF9zdGFja19s aXN0X2ZyYW1lcyk6IEFkZAotKwktLW5vLWZyYW1lLWZpbHRlciBsb2dpYywgYW5kIFB5dGhvbiBm cmFtZSBmaWx0ZXIgbG9naWMuCi0rCShzdGFja19lbmFibGVfZnJhbWVfZmlsdGVycyk6IE5ldyBm dW5jdGlvbi4KLSsJKHBhcnNlX25vX2ZyYW1lX29wdGlvbik6IERpdHRvLgotKwkobWlfY21kX3N0 YWNrX2xpc3RfZnJhbWVzKTogQWRkIC0tbm8tZnJhbWUtZmlsdGVyIGFuZCBQeXRob24gZnJhbWUK LSsJZmlsdGVyIGxvZ2ljLgotKwkobWlfY21kX3N0YWNrX2xpc3RfbG9jYWxzKTogRGl0dG8uCi0r CShtaV9jbWRfc3RhY2tfbGlzdF9hcmdzKTogRGl0dG8uCi0rCShtaV9jbWRfc3RhY2tfbGlzdF92 YXJpYWJsZXMpOiBEaXR0by4KLSsJKiBORVdTOiBBZGQgZnJhbWUgZmlsdGVyIG5vdGUuCi0rCi0g MjAxMy0wNS0wOSAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgotIAotIAkqIHN5bWZpbGUu YyAoc3ltc19mcm9tX29iamZpbGVfMSk6IERlbGV0ZSBhcmdzIG9mZnNldHMsIG51bV9vZmZzZXRz LgotSW5kZXg6IGdkYi03LjYvZ2RiL01ha2VmaWxlLmluCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ni5vcmlnL2dkYi9NYWtlZmlsZS5pbgkyMDEzLTA2LTEwIDE0OjMxOjAyLjcwNDA4NDY2MyArMDIw MAotKysrIGdkYi03LjYvZ2RiL01ha2VmaWxlLmluCTIwMTMtMDYtMTAgMTQ6MzE6MDguMzUxMDgy NDQzICswMjAwCi1AQCAtMjg0LDYgKzI4NCw3IEBAIFNVQkRJUl9QWVRIT05fT0JTID0gXAotIAlw eS1leGl0ZWRldmVudC5vIFwKLSAJcHktZmluaXNoYnJlYWtwb2ludC5vIFwKLSAJcHktZnJhbWUu byBcCi0rCXB5LWZyYW1lZmlsdGVyLm8gXAotIAlweS1mdW5jdGlvbi5vIFwKLSAJcHktZ2RiLXJl YWRsaW5lLm8gXAotIAlweS1pbmZlcmlvci5vIFwKLUBAIC0zMTgsNiArMzE5LDcgQEAgU1VCRElS X1BZVEhPTl9TUkNTID0gXAotIAlweXRob24vcHktZXhpdGVkZXZlbnQuYyBcCi0gCXB5dGhvbi9w eS1maW5pc2hicmVha3BvaW50LmMgXAotIAlweXRob24vcHktZnJhbWUuYyBcCi0rCXB5dGhvbi9w eS1mcmFtZWZpbHRlci5jIFwKLSAJcHl0aG9uL3B5LWZ1bmN0aW9uLmMgXAotIAlweXRob24vcHkt Z2RiLXJlYWRsaW5lLmMgXAotIAlweXRob24vcHktaW5mZXJpb3IuYyBcCi1AQCAtMjE3NCw2ICsy MTc2LDEwIEBAIHB5LWZyYW1lLm86ICQoc3JjZGlyKS9weXRob24vcHktZnJhbWUuYwotIAkkKENP TVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1mcmFtZS5jCi0gCSQo UE9TVENPTVBJTEUpCi0gCi0rcHktZnJhbWVmaWx0ZXIubzogJChzcmNkaXIpL3B5dGhvbi9weS1m cmFtZWZpbHRlci5jCi0rCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0 aG9uL3B5LWZyYW1lZmlsdGVyLmMKLSsJJChQT1NUQ09NUElMRSkKLSsKLSBweS1mdW5jdGlvbi5v OiAkKHNyY2RpcikvcHl0aG9uL3B5LWZ1bmN0aW9uLmMKLSAJJChDT01QSUxFKSAkKFBZVEhPTl9D RkxBR1MpICQoc3JjZGlyKS9weXRob24vcHktZnVuY3Rpb24uYwotIAkkKFBPU1RDT01QSUxFKQot SW5kZXg6IGdkYi03LjYvZ2RiL05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2Ri L05FV1MJMjAxMy0wNi0xMCAxNDozMTowOC4zNTMwODI0NDIgKzAyMDAKLSsrKyBnZGItNy42L2dk Yi9ORVdTCTIwMTMtMDYtMTAgMTQ6MzE6MjEuMjMwMDc3MzE5ICswMjAwCi1AQCAtNCw2ICs0LDEw IEBACi0gKiBOZXdseSBpbnN0YWxsZWQgJHByZWZpeC9iaW4vZ2NvcmUgYWN0cyBhcyBhIHNoZWxs IGludGVyZmFjZSBmb3IgdGhlCi0gICBHREIgY29tbWFuZCBnY29yZS4KLSAKLSsqIFB5dGhvbiBz Y3JpcHRpbmcKLSsKLSsgICoqIEZyYW1lIGZpbHRlcnMgYW5kIGZyYW1lIGRlY29yYXRvcnMgaGF2 ZSBiZWVuIGFkZGVkLgotKwotICogTmV3IHJlbW90ZSBwYWNrZXRzCi0gCi0gcVhmZXI6bGlicmFy aWVzLXN2cjQ6cmVhZCdzIGFubmV4Ci1JbmRleDogZ2RiLTcuNi9nZGIvc3RhY2suYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvc3RhY2suYwkyMDEzLTA2LTEwIDE0OjMxOjAyLjcw OTA4NDY2MSArMDIwMAotKysrIGdkYi03LjYvZ2RiL3N0YWNrLmMJMjAxMy0wNi0xMCAxNDozMTow OC4zNTQwODI0NDEgKzAyMDAKLUBAIC01NCw2ICs1NCw3IEBACi0gCi0gI2luY2x1ZGUgInBzeW10 YWIuaCIKLSAjaW5jbHVkZSAic3ltZmlsZS5oIgotKyNpbmNsdWRlICJweXRob24vcHl0aG9uLmgi Ci0gCi0gdm9pZCAoKmRlcHJlY2F0ZWRfc2VsZWN0ZWRfZnJhbWVfbGV2ZWxfY2hhbmdlZF9ob29r KSAoaW50KTsKLSAKLUBAIC0xNjU1LDEzICsxNjU2LDE1IEBAIGZyYW1lX2luZm8gKGNoYXIgKmFk ZHJfZXhwLCBpbnQgZnJvbV90dHkKLSAgICBmcmFtZXMuICAqLwotIAotIHN0YXRpYyB2b2lkCi0t YmFja3RyYWNlX2NvbW1hbmRfMSAoY2hhciAqY291bnRfZXhwLCBpbnQgc2hvd19sb2NhbHMsIGlu dCBmcm9tX3R0eSkKLStiYWNrdHJhY2VfY29tbWFuZF8xIChjaGFyICpjb3VudF9leHAsIGludCBz aG93X2xvY2FscywgaW50IG5vX2ZpbHRlcnMsCi0rCQkgICAgIGludCBmcm9tX3R0eSkKLSB7Ci0g ICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZmk7Ci0gICBpbnQgY291bnQ7Ci0gICBpbnQgaTsKLSAgIHN0 cnVjdCBmcmFtZV9pbmZvICp0cmFpbGluZzsKLS0gIGludCB0cmFpbGluZ19sZXZlbDsKLSsgIGlu dCB0cmFpbGluZ19sZXZlbCwgcHlfc3RhcnQgPSAwLCBweV9lbmQgPSAwOwotKyAgZW51bSBweV9i dF9zdGF0dXMgcmVzdWx0ID0gUFlfQlRfRVJST1I7Ci0gCi0gICBpZiAoIXRhcmdldF9oYXNfc3Rh Y2spCi0gICAgIGVycm9yIChfKCJObyBzdGFjay4iKSk7Ci1AQCAtMTY4MCw2ICsxNjgzLDcgQEAg YmFja3RyYWNlX2NvbW1hbmRfMSAoY2hhciAqY291bnRfZXhwLCBpbgotIAl7Ci0gCSAgc3RydWN0 IGZyYW1lX2luZm8gKmN1cnJlbnQ7Ci0gCi0rCSAgcHlfc3RhcnQgPSBjb3VudDsKLSAJICBjb3Vu dCA9IC1jb3VudDsKLSAKLSAJICBjdXJyZW50ID0gdHJhaWxpbmc7Ci1AQCAtMTcwMSw5ICsxNzA1 LDE3IEBAIGJhY2t0cmFjZV9jb21tYW5kXzEgKGNoYXIgKmNvdW50X2V4cCwgaW4KLSAKLSAJICBj b3VudCA9IC0xOwotIAl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgcHlfc3RhcnQgPSAwOwotKwkg IHB5X2VuZCA9IGNvdW50OwotKwl9Ci0gICAgIH0KLSAgIGVsc2UKLS0gICAgY291bnQgPSAtMTsK LSsgICAgewotKyAgICAgIHB5X2VuZCA9IC0xOwotKyAgICAgIGNvdW50ID0gLTE7Ci0rICAgIH0K LSAKLSAgIGlmIChpbmZvX3ZlcmJvc2UpCi0gICAgIHsKLUBAIC0xNzIzLDE2ICsxNzM1LDQwIEBA IGJhY2t0cmFjZV9jb21tYW5kXzEgKGNoYXIgKmNvdW50X2V4cCwgaW4KLSAJfQotICAgICB9Ci0g Ci0tICBmb3IgKGkgPSAwLCBmaSA9IHRyYWlsaW5nOyBmaSAmJiBjb3VudC0tOyBpKyssIGZpID0g Z2V0X3ByZXZfZnJhbWUgKGZpKSkKLSsgIGlmICghIG5vX2ZpbHRlcnMpCi0gICAgIHsKLS0gICAg ICBRVUlUOwotKyAgICAgIGludCBmbGFncyA9IFBSSU5UX0xFVkVMIHwgUFJJTlRfRlJBTUVfSU5G TyB8IFBSSU5UX0FSR1M7Ci0rICAgICAgZW51bSBweV9mcmFtZV9hcmdzIGFyZ190eXBlOwotIAot LSAgICAgIC8qIERvbid0IHVzZSBwcmludF9zdGFja19mcmFtZTsgaWYgYW4gZXJyb3IoKSBvY2N1 cnMgaXQgcHJvYmFibHkKLS0gICAgICAgICBtZWFucyBmdXJ0aGVyIGF0dGVtcHRzIHRvIGJhY2t0 cmFjZSB3b3VsZCBmYWlsIChvbiB0aGUgb3RoZXIKLS0gICAgICAgICBoYW5kLCBwZXJoYXBzIHRo ZSBjb2RlIGRvZXMgb3IgY291bGQgYmUgZml4ZWQgdG8gbWFrZSBzdXJlCi0tICAgICAgICAgdGhl IGZyYW1lLT5wcmV2IGZpZWxkIGdldHMgc2V0IHRvIE5VTEwgaW4gdGhhdCBjYXNlKS4gICovCi0t ICAgICAgcHJpbnRfZnJhbWVfaW5mbyAoZmksIDEsIExPQ0FUSU9OLCAxKTsKLSAgICAgICBpZiAo c2hvd19sb2NhbHMpCi0rCWZsYWdzIHw9IFBSSU5UX0xPQ0FMUzsKLSsKLSsgICAgICBpZiAoIXN0 cmNtcCAocHJpbnRfZnJhbWVfYXJndW1lbnRzLCAic2NhbGFycyIpKQotKwlhcmdfdHlwZSA9IENM SV9TQ0FMQVJfVkFMVUVTOwotKyAgICAgIGVsc2UgaWYgKCFzdHJjbXAgKHByaW50X2ZyYW1lX2Fy Z3VtZW50cywgImFsbCIpKQotKwlhcmdfdHlwZSA9IENMSV9BTExfVkFMVUVTOwotKyAgICAgIGVs c2UKLSsJYXJnX3R5cGUgPSBOT19WQUxVRVM7Ci0rCi0rICAgICAgcmVzdWx0ID0gYXBwbHlfZnJh bWVfZmlsdGVyIChnZXRfY3VycmVudF9mcmFtZSAoKSwgZmxhZ3MsIGFyZ190eXBlLAotKwkJCQkg ICBjdXJyZW50X3Vpb3V0LCBweV9zdGFydCwgcHlfZW5kKTsKLSsKLSsgICAgfQotKyAgLyogUnVu IHRoZSBpbmJ1aWx0IGJhY2t0cmFjZSBpZiB0aGVyZSBhcmUgbm8gZmlsdGVycyByZWdpc3RlcmVk LCBvcgotKyAgICAgIm5vLWZpbHRlcnMiIGhhcyBiZWVuIHNwZWNpZmllZCBmcm9tIHRoZSBjb21t YW5kLiAgKi8KLSsgIGlmIChub19maWx0ZXJzIHx8ICByZXN1bHQgPT0gUFlfQlRfTk9fRklMVEVS UykKLSsgICAgewotKyAgICAgIGZvciAoaSA9IDAsIGZpID0gdHJhaWxpbmc7IGZpICYmIGNvdW50 LS07IGkrKywgZmkgPSBnZXRfcHJldl9mcmFtZSAoZmkpKQotKwl7Ci0rCSAgUVVJVDsKLSsKLSsJ ICAvKiBEb24ndCB1c2UgcHJpbnRfc3RhY2tfZnJhbWU7IGlmIGFuIGVycm9yKCkgb2NjdXJzIGl0 IHByb2JhYmx5Ci0rCSAgICAgbWVhbnMgZnVydGhlciBhdHRlbXB0cyB0byBiYWNrdHJhY2Ugd291 bGQgZmFpbCAob24gdGhlIG90aGVyCi0rCSAgICAgaGFuZCwgcGVyaGFwcyB0aGUgY29kZSBkb2Vz IG9yIGNvdWxkIGJlIGZpeGVkIHRvIG1ha2Ugc3VyZQotKwkgICAgIHRoZSBmcmFtZS0+cHJldiBm aWVsZCBnZXRzIHNldCB0byBOVUxMIGluIHRoYXQgY2FzZSkuICAqLwotKwotKwkgIHByaW50X2Zy YW1lX2luZm8gKGZpLCAxLCBMT0NBVElPTiwgMSk7Ci0rCSAgaWYgKHNob3dfbG9jYWxzKQotIAl7 Ci0gCSAgc3RydWN0IGZyYW1lX2lkIGZyYW1lX2lkID0gZ2V0X2ZyYW1lX2lkIChmaSk7Ci0gCi1A QCAtMTc0OCwyNCArMTc4NCwyNSBAQCBiYWNrdHJhY2VfY29tbWFuZF8xIChjaGFyICpjb3VudF9l eHAsIGluCi0gCSAgICB9Ci0gCX0KLSAKLS0gICAgICAvKiBTYXZlIHRoZSBsYXN0IGZyYW1lIHRv IGNoZWNrIGZvciBlcnJvciBjb25kaXRpb25zLiAgKi8KLS0gICAgICB0cmFpbGluZyA9IGZpOwot LSAgICB9Ci0rCSAgLyogU2F2ZSB0aGUgbGFzdCBmcmFtZSB0byBjaGVjayBmb3IgZXJyb3IgY29u ZGl0aW9ucy4gICovCi0rCSAgdHJhaWxpbmcgPSBmaTsKLSsJfQotIAotLSAgLyogSWYgd2UndmUg c3RvcHBlZCBiZWZvcmUgdGhlIGVuZCwgbWVudGlvbiB0aGF0LiAgKi8KLS0gIGlmIChmaSAmJiBm cm9tX3R0eSkKLS0gICAgcHJpbnRmX2ZpbHRlcmVkIChfKCIoTW9yZSBzdGFjayBmcmFtZXMgZm9s bG93Li4uKVxuIikpOwotKyAgICAgIC8qIElmIHdlJ3ZlIHN0b3BwZWQgYmVmb3JlIHRoZSBlbmQs IG1lbnRpb24gdGhhdC4gICovCi0rICAgICAgaWYgKGZpICYmIGZyb21fdHR5KQotKwlwcmludGZf ZmlsdGVyZWQgKF8oIihNb3JlIHN0YWNrIGZyYW1lcyBmb2xsb3cuLi4pXG4iKSk7Ci0gCi0tICAv KiBJZiB3ZSd2ZSBydW4gb3V0IG9mIGZyYW1lcywgYW5kIHRoZSByZWFzb24gYXBwZWFycyB0byBi ZSBhbiBlcnJvcgotLSAgICAgY29uZGl0aW9uLCBwcmludCBpdC4gICovCi0tICBpZiAoZmkgPT0g TlVMTCAmJiB0cmFpbGluZyAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgZW51bSB1bndpbmRfc3Rv cF9yZWFzb24gcmVhc29uOwotKyAgICAgIC8qIElmIHdlJ3ZlIHJ1biBvdXQgb2YgZnJhbWVzLCBh bmQgdGhlIHJlYXNvbiBhcHBlYXJzIHRvIGJlIGFuIGVycm9yCi0rCSBjb25kaXRpb24sIHByaW50 IGl0LiAgKi8KLSsgICAgICBpZiAoZmkgPT0gTlVMTCAmJiB0cmFpbGluZyAhPSBOVUxMKQotKwl7 Ci0rCSAgZW51bSB1bndpbmRfc3RvcF9yZWFzb24gcmVhc29uOwotIAotLSAgICAgIHJlYXNvbiA9 IGdldF9mcmFtZV91bndpbmRfc3RvcF9yZWFzb24gKHRyYWlsaW5nKTsKLS0gICAgICBpZiAocmVh c29uID49IFVOV0lORF9GSVJTVF9FUlJPUikKLS0JcHJpbnRmX2ZpbHRlcmVkIChfKCJCYWNrdHJh Y2Ugc3RvcHBlZDogJXNcbiIpLAotLQkJCSBmcmFtZV9zdG9wX3JlYXNvbl9zdHJpbmcgKHJlYXNv bikpOwotKwkgIHJlYXNvbiA9IGdldF9mcmFtZV91bndpbmRfc3RvcF9yZWFzb24gKHRyYWlsaW5n KTsKLSsJICBpZiAocmVhc29uID49IFVOV0lORF9GSVJTVF9FUlJPUikKLSsJICAgIHByaW50Zl9m aWx0ZXJlZCAoXygiQmFja3RyYWNlIHN0b3BwZWQ6ICVzXG4iKSwKLSsJCQkgICAgIGZyYW1lX3N0 b3BfcmVhc29uX3N0cmluZyAocmVhc29uKSk7Ci0rCX0KLSAgICAgfQotIH0KLSAKLUBAIC0xNzcz LDcgKzE4MTAsOCBAQCBzdGF0aWMgdm9pZAotIGJhY2t0cmFjZV9jb21tYW5kIChjaGFyICphcmcs IGludCBmcm9tX3R0eSkKLSB7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluID0gbWFrZV9j bGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOwotLSAgaW50IGZ1bGx0cmFjZV9hcmcgPSAtMSwg YXJnbGVuID0gMCwgYXJnYyA9IDA7Ci0rICBpbnQgZnVsbHRyYWNlX2FyZyA9IC0xLCBhcmdsZW4g PSAwLCBhcmdjID0gMCwgbm9fZmlsdGVycyAgPSAtMTsKLSsgIGludCB1c2VyX2FyZyA9IDA7Ci0g Ci0gICBpZiAoYXJnKQotICAgICB7Ci1AQCAtMTc5MCwyNSArMTgyOCwzMSBAQCBiYWNrdHJhY2Vf Y29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90Ci0gCSAgZm9yIChqID0gMDsgaiA8IHN0cmxl biAoYXJndltpXSk7IGorKykKLSAJICAgIGFyZ3ZbaV1bal0gPSB0b2xvd2VyIChhcmd2W2ldW2pd KTsKLSAKLS0JICBpZiAoZnVsbHRyYWNlX2FyZyA8IDAgJiYgc3Vic2V0X2NvbXBhcmUgKGFyZ3Zb aV0sICJmdWxsIikpCi0tCSAgICBmdWxsdHJhY2VfYXJnID0gYXJnYzsKLSsJICBpZiAobm9fZmls dGVycyA8IDAgJiYgc3Vic2V0X2NvbXBhcmUgKGFyZ3ZbaV0sICJuby1maWx0ZXJzIikpCi0rCSAg ICBub19maWx0ZXJzID0gYXJnYzsKLSAJICBlbHNlCi0gCSAgICB7Ci0tCSAgICAgIGFyZ2xlbiAr PSBzdHJsZW4gKGFyZ3ZbaV0pOwotLQkgICAgICBhcmdjKys7Ci0rCSAgICAgIGlmIChmdWxsdHJh Y2VfYXJnIDwgMCAmJiBzdWJzZXRfY29tcGFyZSAoYXJndltpXSwgImZ1bGwiKSkKLSsJCWZ1bGx0 cmFjZV9hcmcgPSBhcmdjOwotKwkgICAgICBlbHNlCi0rCQl7Ci0rCQkgIHVzZXJfYXJnKys7Ci0r CQkgIGFyZ2xlbiArPSBzdHJsZW4gKGFyZ3ZbaV0pOwotKwkJfQotIAkgICAgfQotKwkgIGFyZ2Mr KzsKLSAJfQotLSAgICAgIGFyZ2xlbiArPSBhcmdjOwotLSAgICAgIGlmIChmdWxsdHJhY2VfYXJn ID49IDApCi0rICAgICAgYXJnbGVuICs9IHVzZXJfYXJnOwotKyAgICAgIGlmIChmdWxsdHJhY2Vf YXJnID49IDAgfHwgbm9fZmlsdGVycyA+PSAwKQotIAl7Ci0gCSAgaWYgKGFyZ2xlbiA+IDApCi0g CSAgICB7Ci0gCSAgICAgIGFyZyA9IHhtYWxsb2MgKGFyZ2xlbiArIDEpOwotIAkgICAgICBtYWtl X2NsZWFudXAgKHhmcmVlLCBhcmcpOwotIAkgICAgICBhcmdbMF0gPSAwOwotLQkgICAgICBmb3Ig KGkgPSAwOyBpIDwgKGFyZ2MgKyAxKTsgaSsrKQotKwkgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJn YzsgaSsrKQotIAkJewotLQkJICBpZiAoaSAhPSBmdWxsdHJhY2VfYXJnKQotKwkJICBpZiAoaSAh PSBmdWxsdHJhY2VfYXJnICYmIGkgIT0gbm9fZmlsdGVycykKLSAJCSAgICB7Ci0gCQkgICAgICBz dHJjYXQgKGFyZywgYXJndltpXSk7Ci0gCQkgICAgICBzdHJjYXQgKGFyZywgIiAiKTsKLUBAIC0x ODIwLDcgKzE4NjQsOCBAQCBiYWNrdHJhY2VfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90 Ci0gCX0KLSAgICAgfQotIAotLSAgYmFja3RyYWNlX2NvbW1hbmRfMSAoYXJnLCBmdWxsdHJhY2Vf YXJnID49IDAgLyogc2hvd19sb2NhbHMgKi8sIGZyb21fdHR5KTsKLSsgIGJhY2t0cmFjZV9jb21t YW5kXzEgKGFyZywgZnVsbHRyYWNlX2FyZyA+PSAwIC8qIHNob3dfbG9jYWxzICovLAotKwkJICAg ICAgIG5vX2ZpbHRlcnMgPj0gMCAvKiBubyBmcmFtZS1maWx0ZXJzICovLCBmcm9tX3R0eSk7Ci0g Ci0gICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSB9Ci1AQCAtMTgyOCw3ICsxODczLDcgQEAg YmFja3RyYWNlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdAotIHN0YXRpYyB2b2lkCi0g YmFja3RyYWNlX2Z1bGxfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCi0gewotLSAg YmFja3RyYWNlX2NvbW1hbmRfMSAoYXJnLCAxIC8qIHNob3dfbG9jYWxzICovLCBmcm9tX3R0eSk7 Ci0rICBiYWNrdHJhY2VfY29tbWFuZF8xIChhcmcsIDEgLyogc2hvd19sb2NhbHMgKi8sIDAsIGZy b21fdHR5KTsKLSB9Ci0gDAotIAotQEAgLTI1NjIsNyArMjYwNyw5IEBAIEl0IGNhbiBiZSBhIHN0 YWNrIGZyYW1lIG51bWJlciBvciB0aGUgYWQKLSAgIGFkZF9jb20gKCJiYWNrdHJhY2UiLCBjbGFz c19zdGFjaywgYmFja3RyYWNlX2NvbW1hbmQsIF8oIlwKLSBQcmludCBiYWNrdHJhY2Ugb2YgYWxs IHN0YWNrIGZyYW1lcywgb3IgaW5uZXJtb3N0IENPVU5UIGZyYW1lcy5cblwKLSBXaXRoIGEgbmVn YXRpdmUgYXJndW1lbnQsIHByaW50IG91dGVybW9zdCAtQ09VTlQgZnJhbWVzLlxuVXNlIG9mIHRo ZSBcCi0tJ2Z1bGwnIHF1YWxpZmllciBhbHNvIHByaW50cyB0aGUgdmFsdWVzIG9mIHRoZSBsb2Nh bCB2YXJpYWJsZXMuXG4iKSk7Ci0rJ2Z1bGwnIHF1YWxpZmllciBhbHNvIHByaW50cyB0aGUgdmFs dWVzIG9mIHRoZSBsb2NhbCB2YXJpYWJsZXMuXG5cCi0rVXNlIG9mIHRoZSAnbm8tZmlsdGVycycg cXVhbGlmaWVyIHByb2hpYml0cyBmcmFtZSBmaWx0ZXJzIGZyb20gZXhlY3V0aW5nXG5cCi0rb24g dGhpcyBiYWNrdHJhY2UuXG4iKSk7Ci0gICBhZGRfY29tX2FsaWFzICgiYnQiLCAiYmFja3RyYWNl IiwgY2xhc3Nfc3RhY2ssIDApOwotICAgaWYgKHhkYl9jb21tYW5kcykKLSAgICAgewotSW5kZXg6 IGdkYi03LjYvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNi5vcmlnL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgkyMDEzLTA2LTEwIDE0 OjMxOjAyLjcxMDA4NDY2MCArMDIwMAotKysrIGdkYi03LjYvZ2RiL2RhdGEtZGlyZWN0b3J5L01h a2VmaWxlLmluCTIwMTMtMDYtMTAgMTQ6MzE6MDguMzU1MDgyNDQxICswMjAwCi1AQCAtNTMsNyAr NTMsMTEgQEAgUFlUSE9OX0RJUiA9IHB5dGhvbgotIFBZVEhPTl9JTlNUQUxMX0RJUiA9ICQoREVT VERJUikkKEdEQl9EQVRBRElSKS8kKFBZVEhPTl9ESVIpCi0gUFlUSE9OX0ZJTEVTID0gXAotIAln ZGIvX19pbml0X18ucHkgXAotKwlnZGIvZnJhbWVzLnB5IFwKLSsJZ2RiL0ZyYW1lSXRlcmF0b3Iu cHkgXAotKwlnZGIvRnJhbWVEZWNvcmF0b3IucHkgXAotIAlnZGIvY29tbWFuZC9fX2luaXRfXy5w eSBcCi0rCWdkYi9jb21tYW5kL2ZyYW1lX2ZpbHRlcnMucHkgXAotIAlnZGIvY29tbWFuZC9pZ25v cmVfZXJyb3JzLnB5IFwKLSAJZ2RiL2NvbW1hbmQvcGFob2xlLnB5IFwKLSAJZ2RiL2NvbW1hbmQv dHlwZV9wcmludGVycy5weSBcCi1JbmRleDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMy0wNi0x MCAxNDozMTowMi43MjcwODQ2NTQgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9kb2MvZ2RiLnRleGlu Zm8JMjAxMy0wNi0xMCAxNDozMTowOC4zNjQwODI0MzggKzAyMDAKLUBAIC02NDU5LDYgKzY0NTks NyBAQCBjdXJyZW50bHkgZXhlY3V0aW5nIGZyYW1lIGFuZCBkZXNjcmliZXMKLSBAbWVudQotICog RnJhbWVzOjogICAgICAgICAgICAgICAgICAgICAgU3RhY2sgZnJhbWVzCi0gKiBCYWNrdHJhY2U6 OiAgICAgICAgICAgICAgICAgICBCYWNrdHJhY2VzCi0rKiBGcmFtZSBGaWx0ZXIgTWFuYWdlbWVu dDo6ICAgICBNYW5hZ2luZyBmcmFtZSBmaWx0ZXJzCi0gKiBTZWxlY3Rpb246OiAgICAgICAgICAg ICAgICAgICBTZWxlY3RpbmcgYSBmcmFtZQotICogRnJhbWUgSW5mbzo6ICAgICAgICAgICAgICAg ICAgSW5mb3JtYXRpb24gb24gYSBmcmFtZQotIAotQEAgLTY1NDYsNiArNjU0Nyw3IEBAIGxpbmUg cGVyIGZyYW1lLCBmb3IgbWFueSBmcmFtZXMsIHN0YXJ0aW4KLSBmcmFtZSAoZnJhbWUgemVybyks IGZvbGxvd2VkIGJ5IGl0cyBjYWxsZXIgKGZyYW1lIG9uZSksIGFuZCBvbiB1cCB0aGUKLSBzdGFj ay4KLSAKLStAYW5jaG9ye2JhY2t0cmFjZS1jb21tYW5kfQotIEB0YWJsZSBAY29kZQotIEBraW5k ZXggYmFja3RyYWNlCi0gQGtpbmRleCBidCBAcnsoQGNvZGV7YmFja3RyYWNlfSl9Ci1AQCAtNjU3 MSw2ICs2NTczLDE5IEBAIFNpbWlsYXIsIGJ1dCBwcmludCBvbmx5IHRoZSBvdXRlcm1vc3QgQHYK LSBAaXRlbXggYnQgZnVsbCAtQHZhcntufQotIFByaW50IHRoZSB2YWx1ZXMgb2YgdGhlIGxvY2Fs IHZhcmlhYmxlcyBhbHNvLiAgQHZhcntufSBzcGVjaWZpZXMgdGhlCi0gbnVtYmVyIG9mIGZyYW1l cyB0byBwcmludCwgYXMgZGVzY3JpYmVkIGFib3ZlLgotKwotK0BpdGVtIGJhY2t0cmFjZSBuby1m aWx0ZXJzCi0rQGl0ZW14IGJ0IG5vLWZpbHRlcnMKLStAaXRlbXggYnQgbm8tZmlsdGVycyBAdmFy e259Ci0rQGl0ZW14IGJ0IG5vLWZpbHRlcnMgLUB2YXJ7bn0KLStAaXRlbXggYnQgbm8tZmlsdGVy cyBmdWxsCi0rQGl0ZW14IGJ0IG5vLWZpbHRlcnMgZnVsbCBAdmFye259Ci0rQGl0ZW14IGJ0IG5v LWZpbHRlcnMgZnVsbCAtQHZhcntufQotK0RvIG5vdCBydW4gUHl0aG9uIGZyYW1lIGZpbHRlcnMg b24gdGhpcyBiYWNrdHJhY2UuICBAeHJlZntGcmFtZQotK0ZpbHRlciBBUEl9LCBmb3IgbW9yZSBp bmZvcm1hdGlvbi4gIEFkZGl0aW9uYWxseSB1c2UgQHJlZntkaXNhYmxlCi0rZnJhbWUtZmlsdGVy IGFsbH0gdG8gdHVybiBvZmYgYWxsIGZyYW1lIGZpbHRlcnMuICBUaGlzIGlzIG9ubHkKLStyZWxl dmFudCB3aGVuIEB2YWx1ZXtHREJOfSBoYXMgYmVlbiBjb25maWd1cmVkIHdpdGggQGNvZGV7UHl0 aG9ufQotK3N1cHBvcnQuCi0gQGVuZCB0YWJsZQotIAotIEBraW5kZXggd2hlcmUKLUBAIC02NzIw LDYgKzY3MzUsMTQ5IEBAIERpc3BsYXkgYW4gYWJzb2x1dGUgZmlsZW5hbWUuCi0gU2hvdyB0aGUg Y3VycmVudCB3YXkgdG8gZGlzcGxheSBmaWxlbmFtZXMuCi0gQGVuZCB0YWJsZQotIAotK0Bub2Rl IEZyYW1lIEZpbHRlciBNYW5hZ2VtZW50Ci0rQHNlY3Rpb24gTWFuYWdlbWVudCBvZiBGcmFtZSBG aWx0ZXJzLgotK0BjaW5kZXggbWFuYWdpbmcgZnJhbWUgZmlsdGVycwotKwotK0ZyYW1lIGZpbHRl cnMgYXJlIFB5dGhvbiBiYXNlZCB1dGlsaXRpZXMgdG8gbWFuYWdlIGFuZCBkZWNvcmF0ZSB0aGUK LStvdXRwdXQgb2YgZnJhbWVzLiAgQHhyZWZ7RnJhbWUgRmlsdGVyIEFQSX0sIGZvciBmdXJ0aGVy IGluZm9ybWF0aW9uLgotKwotK01hbmFnaW5nIGZyYW1lIGZpbHRlcnMgaXMgcGVyZm9ybWVkIGJ5 IHNldmVyYWwgY29tbWFuZHMgYXZhaWxhYmxlCi0rd2l0aGluIEB2YWx1ZXtHREJOfSwgZGV0YWls ZWQgaGVyZS4KLSsKLStAdGFibGUgQGNvZGUKLStAa2luZGV4IGluZm8gZnJhbWUtZmlsdGVyCi0r QGl0ZW0gaW5mbyBmcmFtZS1maWx0ZXIKLStQcmludCBhIGxpc3Qgb2YgaW5zdGFsbGVkIGZyYW1l IGZpbHRlcnMgZnJvbSBhbGwgZGljdGlvbmFyaWVzLCBzaG93aW5nCi0rdGhlaXIgbmFtZSwgcHJp b3JpdHkgYW5kIGVuYWJsZWQgc3RhdHVzLgotKwotK0BraW5kZXggZGlzYWJsZSBmcmFtZS1maWx0 ZXIKLStAYW5jaG9ye2Rpc2FibGUgZnJhbWUtZmlsdGVyIGFsbH0KLStAaXRlbSBkaXNhYmxlIGZy YW1lLWZpbHRlciBAdmFye2ZpbHRlci1kaWN0aW9uYXJ5fSBAdmFye2ZpbHRlci1uYW1lfQotK0Rp c2FibGUgYSBmcmFtZSBmaWx0ZXIgaW4gdGhlIGRpY3Rpb25hcnkgbWF0Y2hpbmcKLStAdmFye2Zp bHRlci1kaWN0aW9uYXJ5fSwgb3IgQGNvZGV7YWxsfSwgYW5kIEB2YXJ7ZmlsdGVyLW5hbWV9Lgot K0B2YXJ7ZmlsdGVyLWRpY3Rpb25hcnl9IG1heSBiZSBAY29kZXthbGx9LCBAY29kZXtnbG9iYWx9 LAotK0Bjb2Rle3Byb2dzcGFjZX0gb3IgdGhlIG5hbWUgb2YgdGhlIG9iamVjdCBmaWxlIHdoZXJl IHRoZSBmcmFtZSBmaWx0ZXIKLStkaWN0aW9uYXJ5IHJlc2lkZXMuICBXaGVuIEBjb2Rle2FsbH0g aXMgc3BlY2lmaWVkLCBhbGwgZnJhbWUgZmlsdGVycwotK2Fjcm9zcyBhbGwgZGljdGlvbmFyaWVz IGFyZSBkaXNhYmxlZC4gIEB2YXJ7ZmlsdGVyLW5hbWV9IGlzIHRoZSBuYW1lCi0rb2YgdGhlIGZy YW1lIGZpbHRlciBhbmQgaXMgdXNlZCB3aGVuIEBjb2Rle2FsbH0gaXMgbm90IHRoZSBvcHRpb24g Zm9yCi0rQHZhcntmaWx0ZXItZGljdGlvbmFyeX0uICBBIGRpc2FibGVkIGZyYW1lLWZpbHRlciBp cyBub3QgZGVsZXRlZCwgaXQKLSttYXkgYmUgZW5hYmxlZCBhZ2FpbiBsYXRlci4KLSsKLStAa2lu ZGV4IGVuYWJsZSBmcmFtZS1maWx0ZXIKLStAaXRlbSBlbmFibGUgZnJhbWUtZmlsdGVyIEB2YXJ7 ZmlsdGVyLWRpY3Rpb25hcnl9IEB2YXJ7ZmlsdGVyLW5hbWV9Ci0rRW5hYmxlIGEgZnJhbWUgZmls dGVyIGluIHRoZSBkaWN0aW9uYXJ5IG1hdGNoaW5nCi0rQHZhcntmaWx0ZXItZGljdGlvbmFyeX0s IG9yIEBjb2Rle2FsbH0sIGFuZCBAdmFye2ZpbHRlci1uYW1lfS4KLStAdmFye2ZpbHRlci1kaWN0 aW9uYXJ5fSBtYXkgYmUgQGNvZGV7YWxsfSwgQGNvZGV7Z2xvYmFsfSwKLStAY29kZXtwcm9nc3Bh Y2V9IG9yIHRoZSBuYW1lIG9mIHRoZSBvYmplY3QgZmlsZSB3aGVyZSB0aGUgZnJhbWUgZmlsdGVy Ci0rZGljdGlvbmFyeSByZXNpZGVzLiAgV2hlbiBAY29kZXthbGx9IGlzIHNwZWNpZmllZCwgYWxs IGZyYW1lIGZpbHRlcnMgYWNyb3NzCi0rYWxsIGRpY3Rpb25hcmllcyBhcmUgZW5hYmxlZC4gIEB2 YXJ7ZmlsdGVyLW5hbWV9IGlzIHRoZSBuYW1lIG9mIHRoZSBmcmFtZQotK2ZpbHRlciBhbmQgaXMg dXNlZCB3aGVuIEBjb2Rle2FsbH0gaXMgbm90IHRoZSBvcHRpb24gZm9yCi0rQHZhcntmaWx0ZXIt ZGljdGlvbmFyeX0uCi0rCi0rRXhhbXBsZToKLSsKLStAc21hbGxleGFtcGxlCi0rKGdkYikgaW5m byBmcmFtZS1maWx0ZXIKLSsKLStnbG9iYWwgZnJhbWUtZmlsdGVyczoKLSsgIFByaW9yaXR5ICBF bmFibGVkICBOYW1lCi0rICAxMDAwICAgICAgTm8gICAgICAgUHJpbWFyeUZ1bmN0aW9uRmlsdGVy Ci0rICAxMDAgICAgICAgWWVzICAgICAgUmV2ZXJzZQotKwotK3Byb2dzcGFjZSAvYnVpbGQvdGVz dCBmcmFtZS1maWx0ZXJzOgotKyAgUHJpb3JpdHkgIEVuYWJsZWQgIE5hbWUKLSsgIDEwMCAgICAg ICBZZXMgICAgICBQcm9nc3BhY2VGaWx0ZXIKLSsKLStvYmpmaWxlIC9idWlsZC90ZXN0IGZyYW1l LWZpbHRlcnM6Ci0rICBQcmlvcml0eSAgRW5hYmxlZCAgTmFtZQotKyAgOTk5ICAgICAgIFllcyAg ICAgIEJ1aWxkUHJvZ3JhIEZpbHRlcgotKwotKyhnZGIpIGRpc2FibGUgZnJhbWUtZmlsdGVyIC9i dWlsZC90ZXN0IEJ1aWxkUHJvZ3JhbUZpbHRlcgotKyhnZGIpIGluZm8gZnJhbWUtZmlsdGVyCi0r Ci0rZ2xvYmFsIGZyYW1lLWZpbHRlcnM6Ci0rICBQcmlvcml0eSAgRW5hYmxlZCAgTmFtZQotKyAg MTAwMCAgICAgIE5vICAgICAgIFByaW1hcnlGdW5jdGlvbkZpbHRlcgotKyAgMTAwICAgICAgIFll cyAgICAgIFJldmVyc2UKLSsKLStwcm9nc3BhY2UgL2J1aWxkL3Rlc3QgZnJhbWUtZmlsdGVyczoK LSsgIFByaW9yaXR5ICBFbmFibGVkICBOYW1lCi0rICAxMDAgICAgICAgWWVzICAgICAgUHJvZ3Nw YWNlRmlsdGVyCi0rCi0rb2JqZmlsZSAvYnVpbGQvdGVzdCBmcmFtZS1maWx0ZXJzOgotKyAgUHJp b3JpdHkgIEVuYWJsZWQgIE5hbWUKLSsgIDk5OSAgICAgICBObyAgICAgICBCdWlsZFByb2dyYW1G aWx0ZXIKLSsKLSsoZ2RiKSBlbmFibGUgZnJhbWUtZmlsdGVyIGdsb2JhbCBQcmltYXJ5RnVuY3Rp b25GaWx0ZXIKLSsoZ2RiKSBpbmZvIGZyYW1lLWZpbHRlcgotKwotK2dsb2JhbCBmcmFtZS1maWx0 ZXJzOgotKyAgUHJpb3JpdHkgIEVuYWJsZWQgIE5hbWUKLSsgIDEwMDAgICAgICBZZXMgICAgICBQ cmltYXJ5RnVuY3Rpb25GaWx0ZXIKLSsgIDEwMCAgICAgICBZZXMgICAgICBSZXZlcnNlCi0rCi0r cHJvZ3NwYWNlIC9idWlsZC90ZXN0IGZyYW1lLWZpbHRlcnM6Ci0rICBQcmlvcml0eSAgRW5hYmxl ZCAgTmFtZQotKyAgMTAwICAgICAgIFllcyAgICAgIFByb2dzcGFjZUZpbHRlcgotKwotK29iamZp bGUgL2J1aWxkL3Rlc3QgZnJhbWUtZmlsdGVyczoKLSsgIFByaW9yaXR5ICBFbmFibGVkICBOYW1l Ci0rICA5OTkgICAgICAgTm8gICAgICAgQnVpbGRQcm9ncmFtRmlsdGVyCi0rQGVuZCBzbWFsbGV4 YW1wbGUKLSsKLStAa2luZGV4IHNldCBmcmFtZS1maWx0ZXIgcHJpb3JpdHkKLStAaXRlbSBzZXQg ZnJhbWUtZmlsdGVyIHByaW9yaXR5IEB2YXJ7ZmlsdGVyLWRpY3Rpb25hcnl9IEB2YXJ7ZmlsdGVy LW5hbWV9IEB2YXJ7cHJpb3JpdHl9Ci0rU2V0IHRoZSBAdmFye3ByaW9yaXR5fSBvZiBhIGZyYW1l IGZpbHRlciBpbiB0aGUgZGljdGlvbmFyeSBtYXRjaGluZwotK0B2YXJ7ZmlsdGVyLWRpY3Rpb25h cnl9LCBhbmQgdGhlIGZyYW1lIGZpbHRlciBuYW1lIG1hdGNoaW5nCi0rQHZhcntmaWx0ZXItbmFt ZX0uICBAdmFye2ZpbHRlci1kaWN0aW9uYXJ5fSBtYXkgYmUgQGNvZGV7Z2xvYmFsfSwKLStAY29k ZXtwcm9nc3BhY2V9IG9yIHRoZSBuYW1lIG9mIHRoZSBvYmplY3QgZmlsZSB3aGVyZSB0aGUgZnJh bWUgZmlsdGVyCi0rZGljdGlvbmFyeSByZXNpZGVzLiAgQHZhcntwcmlvcml0eX0gaXMgYW4gaW50 ZWdlci4KLSsKLStAa2luZGV4IHNob3cgZnJhbWUtZmlsdGVyIHByaW9yaXR5Ci0rQGl0ZW0gc2hv dyBmcmFtZS1maWx0ZXIgcHJpb3JpdHkgQHZhcntmaWx0ZXItZGljdGlvbmFyeX0gQHZhcntmaWx0 ZXItbmFtZX0KLStTaG93IHRoZSBAdmFye3ByaW9yaXR5fSBvZiBhIGZyYW1lIGZpbHRlciBpbiB0 aGUgZGljdGlvbmFyeSBtYXRjaGluZwotK0B2YXJ7ZmlsdGVyLWRpY3Rpb25hcnl9LCBhbmQgdGhl IGZyYW1lIGZpbHRlciBuYW1lIG1hdGNoaW5nCi0rQHZhcntmaWx0ZXItbmFtZX0uICBAdmFye2Zp bHRlci1kaWN0aW9uYXJ5fSBtYXkgYmUgQGNvZGV7Z2xvYmFsfSwKLStAY29kZXtwcm9nc3BhY2V9 IG9yIHRoZSBuYW1lIG9mIHRoZSBvYmplY3QgZmlsZSB3aGVyZSB0aGUgZnJhbWUgZmlsdGVyCi0r ZGljdGlvbmFyeSByZXNpZGVzLgotKwotK0V4YW1wbGU6Ci0rCi0rQHNtYWxsZXhhbXBsZQotKyhn ZGIpIGluZm8gZnJhbWUtZmlsdGVyCi0rCi0rZ2xvYmFsIGZyYW1lLWZpbHRlcnM6Ci0rICBQcmlv cml0eSAgRW5hYmxlZCAgTmFtZQotKyAgMTAwMCAgICAgIFllcyAgICAgIFByaW1hcnlGdW5jdGlv bkZpbHRlcgotKyAgMTAwICAgICAgIFllcyAgICAgIFJldmVyc2UKLSsKLStwcm9nc3BhY2UgL2J1 aWxkL3Rlc3QgZnJhbWUtZmlsdGVyczoKLSsgIFByaW9yaXR5ICBFbmFibGVkICBOYW1lCi0rICAx MDAgICAgICAgWWVzICAgICAgUHJvZ3NwYWNlRmlsdGVyCi0rCi0rb2JqZmlsZSAvYnVpbGQvdGVz dCBmcmFtZS1maWx0ZXJzOgotKyAgUHJpb3JpdHkgIEVuYWJsZWQgIE5hbWUKLSsgIDk5OSAgICAg ICBObyAgICAgICBCdWlsZFByb2dyYW1GaWx0ZXIKLSsKLSsoZ2RiKSBzZXQgZnJhbWUtZmlsdGVy IHByaW9yaXR5IGdsb2JhbCBSZXZlcnNlIDUwCi0rKGdkYikgaW5mbyBmcmFtZS1maWx0ZXIKLSsK LStnbG9iYWwgZnJhbWUtZmlsdGVyczoKLSsgIFByaW9yaXR5ICBFbmFibGVkICBOYW1lCi0rICAx MDAwICAgICAgWWVzICAgICAgUHJpbWFyeUZ1bmN0aW9uRmlsdGVyCi0rICA1MCAgICAgICAgWWVz ICAgICAgUmV2ZXJzZQotKwotK3Byb2dzcGFjZSAvYnVpbGQvdGVzdCBmcmFtZS1maWx0ZXJzOgot KyAgUHJpb3JpdHkgIEVuYWJsZWQgIE5hbWUKLSsgIDEwMCAgICAgICBZZXMgICAgICBQcm9nc3Bh Y2VGaWx0ZXIKLSsKLStvYmpmaWxlIC9idWlsZC90ZXN0IGZyYW1lLWZpbHRlcnM6Ci0rICBQcmlv cml0eSAgRW5hYmxlZCAgTmFtZQotKyAgOTk5ICAgICAgIE5vICAgICAgIEJ1aWxkUHJvZ3JhbUZp bHRlcgotK0BlbmQgc21hbGxleGFtcGxlCi0rQGVuZCB0YWJsZQotKwotIEBub2RlIFNlbGVjdGlv bgotIEBzZWN0aW9uIFNlbGVjdGluZyBhIEZyYW1lCi0gCi1AQCAtMjMxMDAsNiArMjMyNTgsOSBA QCBzaXR1YXRpb24sIGEgUHl0aG9uIEBjb2Rle0tleWJvYXJkSW50ZXJyCi0gKiBTZWxlY3Rpbmcg UHJldHR5LVByaW50ZXJzOjogICBIb3cgR0RCIGNob29zZXMgYSBwcmV0dHktcHJpbnRlci4KLSAq IFdyaXRpbmcgYSBQcmV0dHktUHJpbnRlcjo6ICAgIFdyaXRpbmcgYSBQcmV0dHktUHJpbnRlci4K LSAqIFR5cGUgUHJpbnRpbmcgQVBJOjoJCVByZXR0eS1wcmludGluZyB0eXBlcy4KLSsqIEZyYW1l IEZpbHRlciBBUEk6OiAgICAgICAgICAgIEZpbHRlcmluZyBGcmFtZXMuCi0rKiBGcmFtZSBEZWNv cmF0b3IgQVBJOjogICAgICAgICBEZWNvcmF0aW5nIEZyYW1lcy4KLSsqIFdyaXRpbmcgYSBGcmFt ZSBGaWx0ZXI6OiAgICAgIFdyaXRpbmcgYSBGcmFtZSBGaWx0ZXIuCi0gKiBJbmZlcmlvcnMgSW4g UHl0aG9uOjogICAgICAgICBQeXRob24gcmVwcmVzZW50YXRpb24gb2YgaW5mZXJpb3JzIChwcm9j ZXNzZXMpCi0gKiBFdmVudHMgSW4gUHl0aG9uOjogICAgICAgICAgICBMaXN0ZW5pbmcgZm9yIGV2 ZW50cyBmcm9tIEB2YWx1ZXtHREJOfS4KLSAqIFRocmVhZHMgSW4gUHl0aG9uOjogICAgICAgICAg IEFjY2Vzc2luZyBpbmZlcmlvciB0aHJlYWRzIGZyb20gUHl0aG9uLgotQEAgLTI0NDUwLDYgKzI0 NjExLDYzNiBAQCBkb25lIHRoZW4gdHlwZSBwcmludGVycyB3b3VsZCBoYXZlIHRvIG1hCi0gb3Jk ZXIgdG8gYXZvaWQgaG9sZGluZyBpbmZvcm1hdGlvbiB0aGF0IGNvdWxkIGJlY29tZSBzdGFsZSBh cyB0aGUKLSBpbmZlcmlvciBjaGFuZ2VkLgotIAotK0Bub2RlIEZyYW1lIEZpbHRlciBBUEkKLStA c3Vic3Vic2VjdGlvbiBGaWx0ZXJpbmcgRnJhbWVzLgotK0BjaW5kZXggZnJhbWUgZmlsdGVycyBh cGkKLSsKLStGcmFtZSBmaWx0ZXJzIGFyZSBQeXRob24gb2JqZWN0cyB0aGF0IG1hbmlwdWxhdGUg dGhlIHZpc2liaWxpdHkgb2YgYQotK2ZyYW1lIG9yIGZyYW1lcyB3aGVuIGEgYmFja3RyYWNlIChA cHhyZWZ7QmFja3RyYWNlfSkgaXMgcHJpbnRlZCBieQotK0B2YWx1ZXtHREJOfS4KLSsKLStPbmx5 IGNvbW1hbmRzIHRoYXQgcHJpbnQgYSBiYWNrdHJhY2UsIG9yLCBpbiB0aGUgY2FzZSBvZiBAc2N7 Z2RiL21pfQotK2NvbW1hbmRzIChAcHhyZWZ7R0RCL01JfSksIHRob3NlIHRoYXQgcmV0dXJuIGEg Y29sbGVjdGlvbiBvZiBmcmFtZXMKLSthcmUgYWZmZWN0ZWQuICBUaGUgY29tbWFuZHMgdGhhdCB3 b3JrIHdpdGggZnJhbWUgZmlsdGVycyBhcmU6Ci0rCi0rQGNvZGV7YmFja3RyYWNlfSAoQHB4cmVm e2JhY2t0cmFjZS1jb21tYW5kLCwgVGhlIGJhY2t0cmFjZSBjb21tYW5kfSksCi0rQGNvZGV7LXN0 YWNrLWxpc3QtZnJhbWVzfQotKyhAcHhyZWZ7LXN0YWNrLWxpc3QtZnJhbWVzLCwgVGhlIC1zdGFj ay1saXN0LWZyYW1lcyBjb21tYW5kfSksCi0rQGNvZGV7LXN0YWNrLWxpc3QtdmFyaWFibGVzfSAo QHB4cmVmey1zdGFjay1saXN0LXZhcmlhYmxlcywsIFRoZQotKy1zdGFjay1saXN0LXZhcmlhYmxl cyBjb21tYW5kfSksIEBjb2Rley1zdGFjay1saXN0LWFyZ3VtZW50c30KLStAcHhyZWZ7LXN0YWNr LWxpc3QtYXJndW1lbnRzLCwgVGhlIC1zdGFjay1saXN0LWFyZ3VtZW50cyBjb21tYW5kfSkgYW5k Ci0rQGNvZGV7LXN0YWNrLWxpc3QtbG9jYWxzfSAoQHB4cmVmey1zdGFjay1saXN0LWxvY2Fscyws IFRoZQotKy1zdGFjay1saXN0LWxvY2FscyBjb21tYW5kfSkuCi0rCi0rQSBmcmFtZSBmaWx0ZXIg d29ya3MgYnkgdGFraW5nIGFuIGl0ZXJhdG9yIGFzIGFuIGFyZ3VtZW50LCBhcHBseWluZwotK2Fj dGlvbnMgdG8gdGhlIGNvbnRlbnRzIG9mIHRoYXQgaXRlcmF0b3IsIGFuZCByZXR1cm5pbmcgYW5v dGhlcgotK2l0ZXJhdG9yIChvciwgcG9zc2libHksIHRoZSBzYW1lIGl0ZXJhdG9yIGl0IHdhcyBw cm92aWRlZCBpbiB0aGUgY2FzZQotK3doZXJlIHRoZSBmaWx0ZXIgZG9lcyBub3QgcGVyZm9ybSBh bnkgb3BlcmF0aW9ucykuICBUeXBpY2FsbHksIGZyYW1lCi0rZmlsdGVycyB1dGlsaXplIHRvb2xz IHN1Y2ggYXMgdGhlIFB5dGhvbidzIEBjb2Rle2l0ZXJ0b29sc30gbW9kdWxlIHRvCi0rd29yayB3 aXRoIGFuZCBjcmVhdGUgbmV3IGl0ZXJhdG9ycyBmcm9tIHRoZSBzb3VyY2UgaXRlcmF0b3IuCi0r UmVnYXJkbGVzcyBvZiBob3cgYSBmaWx0ZXIgY2hvb3NlcyB0byBhcHBseSBhY3Rpb25zLCBpdCBt dXN0IG5vdCBhbHRlcgotK3RoZSB1bmRlcmx5aW5nIEB2YWx1ZXtHREJOfSBmcmFtZSBvciBmcmFt ZXMsIG9yIGF0dGVtcHQgdG8gYWx0ZXIgdGhlCi0rY2FsbC1zdGFjayB3aXRoaW4gQHZhbHVle0dE Qk59LiAgVGhpcyBwcmVzZXJ2ZXMgZGF0YSBpbnRlZ3JpdHkgd2l0aGluCi0rQHZhbHVle0dEQk59 LiAgRnJhbWUgZmlsdGVycyBhcmUgZXhlY3V0ZWQgb24gYSBwcmlvcml0eSBiYXNpcyBhbmQgY2Fy ZQotK3Nob3VsZCBiZSB0YWtlbiB0aGF0IHNvbWUgZnJhbWUgZmlsdGVycyBtYXkgaGF2ZSBiZWVu IGV4ZWN1dGVkIGJlZm9yZSwKLSthbmQgdGhhdCBzb21lIGZyYW1lIGZpbHRlcnMgd2lsbCBiZSBl eGVjdXRlZCBhZnRlci4KLSsKLStBbiBpbXBvcnRhbnQgY29uc2lkZXJhdGlvbiB3aGVuIGRlc2ln bmluZyBmcmFtZSBmaWx0ZXJzLCBhbmQgd2VsbAotK3dvcnRoIHJlZmxlY3RpbmcgdXBvbiwgaXMg dGhhdCBmcmFtZSBmaWx0ZXJzIHNob3VsZCBhdm9pZCB1bndpbmRpbmcKLSt0aGUgY2FsbCBzdGFj ayBpZiBwb3NzaWJsZS4gIFNvbWUgc3RhY2tzIGNhbiBydW4gdmVyeSBkZWVwLCBpbnRvIHRoZQot K3RlbnMgb2YgdGhvdXNhbmRzIGluIHNvbWUgY2FzZXMuICBUbyBzZWFyY2ggZXZlcnkgZnJhbWUg d2hlbiBhIGZyYW1lCi0rZmlsdGVyIGV4ZWN1dGVzIG1heSBiZSB0b28gZXhwZW5zaXZlIGF0IHRo YXQgc3RlcC4gIFRoZSBmcmFtZSBmaWx0ZXIKLStjYW5ub3Qga25vdyBob3cgbWFueSBmcmFtZXMg aXQgaGFzIHRvIGl0ZXJhdGUgb3ZlciwgYW5kIGl0IG1heSBoYXZlIHRvCi0raXRlcmF0ZSB0aHJv dWdoIHRoZW0gYWxsLiAgVGhpcyBlbmRzIHVwIGR1cGxpY2F0aW5nIGVmZm9ydCBhcwotK0B2YWx1 ZXtHREJOfSBwZXJmb3JtcyB0aGlzIGl0ZXJhdGlvbiB3aGVuIGl0IHByaW50cyB0aGUgZnJhbWVz LiAgSWYKLSt0aGUgZmlsdGVyIGNhbiBkZWZlciB1bndpbmRpbmcgZnJhbWVzIHVudGlsIGZyYW1l IGRlY29yYXRvcnMgYXJlCi0rZXhlY3V0ZWQsIGFmdGVyIHRoZSBsYXN0IGZpbHRlciBoYXMgZXhl Y3V0ZWQsIGl0IHNob3VsZC4gIEB4cmVme0ZyYW1lCi0rRGVjb3JhdG9yIEFQSX0sIGZvciBtb3Jl IGluZm9ybWF0aW9uIG9uIGRlY29yYXRvcnMuICBBbHNvLCB0aGVyZSBhcmUKLStleGFtcGxlcyBm b3IgYm90aCBmcmFtZSBkZWNvcmF0b3JzIGFuZCBmaWx0ZXJzIGluIGxhdGVyIGNoYXB0ZXJzLgot K0B4cmVme1dyaXRpbmcgYSBGcmFtZSBGaWx0ZXJ9LCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSsK LStUaGUgUHl0aG9uIGRpY3Rpb25hcnkgQGNvZGV7Z2RiLmZyYW1lX2ZpbHRlcnN9IGNvbnRhaW5z IGtleS9vYmplY3QKLStwYWlyaW5ncyB0aGF0IGNvbXByaXNlIGEgZnJhbWUgZmlsdGVyLiAgRnJh bWUgZmlsdGVycyBpbiB0aGlzCi0rZGljdGlvbmFyeSBhcmUgY2FsbGVkIEBjb2Rle2dsb2JhbH0g ZnJhbWUgZmlsdGVycywgYW5kIHRoZXkgYXJlCi0rYXZhaWxhYmxlIHdoZW4gZGVidWdnaW5nIGFs bCBpbmZlcmlvcnMuICBUaGVzZSBmcmFtZSBmaWx0ZXJzIG11c3QKLStyZWdpc3RlciB3aXRoIHRo ZSBkaWN0aW9uYXJ5IGRpcmVjdGx5LiAgSW4gYWRkaXRpb24gdG8gdGhlCi0rQGNvZGV7Z2xvYmFs fSBkaWN0aW9uYXJ5LCB0aGVyZSBhcmUgb3RoZXIgZGljdGlvbmFyaWVzIHRoYXQgYXJlIGxvYWRl ZAotK3dpdGggZGlmZmVyZW50IGluZmVyaW9ycyB2aWEgYXV0by1sb2FkaW5nIChAcHhyZWZ7UHl0 aG9uCi0rQXV0by1sb2FkaW5nfSkuICBUaGUgdHdvIG90aGVyIGFyZWFzIHdoZXJlIGZyYW1lIGZp bHRlciBkaWN0aW9uYXJpZXMKLStjYW4gYmUgZm91bmQgYXJlOiBAY29kZXtnZGIuUHJvZ3NwYWNl fSB3aGljaCBjb250YWlucyBhCi0rQGNvZGV7ZnJhbWVfZmlsdGVyc30gZGljdGlvbmFyeSBhdHRy aWJ1dGUsIGFuZCBlYWNoIEBjb2Rle2dkYi5PYmpmaWxlfQotK29iamVjdCB3aGljaCBhbHNvIGNv bnRhaW5zIGEgQGNvZGV7ZnJhbWVfZmlsdGVyc30gZGljdGlvbmFyeQotK2F0dHJpYnV0ZS4KLSsK LStXaGVuIGEgY29tbWFuZCBpcyBleGVjdXRlZCBmcm9tIEB2YWx1ZXtHREJOfSB0aGF0IGlzIGNv bXBhdGlibGUgd2l0aAotK2ZyYW1lIGZpbHRlcnMsIEB2YWx1ZXtHREJOfSBjb21iaW5lcyB0aGUg QGNvZGV7Z2xvYmFsfSwKLStAY29kZXtnZGIuUHJvZ3NwYWNlfSBhbmQgYWxsIEBjb2Rle2dkYi5P YmpmaWxlfSBkaWN0aW9uYXJpZXMgY3VycmVudGx5Ci0rbG9hZGVkLiAgQWxsIG9mIHRoZSBAY29k ZXtnZGIuT2JqZmlsZX0gZGljdGlvbmFyaWVzIGFyZSBjb21iaW5lZCwgYXMKLStzZXZlcmFsIGZy YW1lcywgYW5kIHRodXMgc2V2ZXJhbCBvYmplY3QgZmlsZXMsIG1pZ2h0IGJlIGluIHVzZS4KLStA dmFsdWV7R0RCTn0gdGhlbiBwcnVuZXMgYW55IGZyYW1lIGZpbHRlciB3aG9zZSBAY29kZXtlbmFi bGVkfQotK2F0dHJpYnV0ZSBpcyBAY29kZXtGYWxzZX0uICBUaGlzIHBydW5lZCBsaXN0IGlzIHRo ZW4gc29ydGVkIGFjY29yZGluZwotK3RvIHRoZSBAY29kZXtwcmlvcml0eX0gYXR0cmlidXRlIGlu IGVhY2ggZmlsdGVyLgotKwotK09uY2UgdGhlIGRpY3Rpb25hcmllcyBhcmUgY29tYmluZWQsIHBy dW5lZCBhbmQgc29ydGVkLCBAdmFsdWV7R0RCTn0KLStjcmVhdGVzIGFuIGl0ZXJhdG9yIHdoaWNo IHdyYXBzIGVhY2ggZnJhbWUgaW4gdGhlIGNhbGwgc3RhY2sgaW4gYQotK0Bjb2Rle0ZyYW1lRGVj b3JhdG9yfSBvYmplY3QsIGFuZCBjYWxscyBlYWNoIGZpbHRlciBpbiBvcmRlci4gIFRoZQotK291 dHB1dCBmcm9tIHRoZSBwcmV2aW91cyBmaWx0ZXIgd2lsbCBhbHdheXMgYmUgdGhlIGlucHV0IHRv IHRoZSBuZXh0Ci0rZmlsdGVyLCBhbmQgc28gb24uCi0rCi0rRnJhbWUgZmlsdGVycyBoYXZlIGEg bWFuZGF0b3J5IGludGVyZmFjZSB3aGljaCBlYWNoIGZyYW1lIGZpbHRlciBtdXN0Ci0raW1wbGVt ZW50LCBkZWZpbmVkIGhlcmU6Ci0rCi0rQGRlZnVuIEZyYW1lRmlsdGVyLmZpbHRlciAoaXRlcmF0 b3IpCi0rQHZhbHVle0dEQk59IHdpbGwgY2FsbCB0aGlzIG1ldGhvZCBvbiBhIGZyYW1lIGZpbHRl ciB3aGVuIGl0IGhhcwotK3JlYWNoZWQgdGhlIG9yZGVyIGluIHRoZSBwcmlvcml0eSBsaXN0IGZv ciB0aGF0IGZpbHRlci4KLSsKLStGb3IgZXhhbXBsZSwgaWYgdGhlcmUgYXJlIGZvdXIgZnJhbWUg ZmlsdGVyczoKLSsKLStAc21hbGxleGFtcGxlCi0rTmFtZSAgICAgICAgIFByaW9yaXR5Ci0rCi0r RmlsdGVyMSAgICAgIDUKLStGaWx0ZXIyICAgICAgMTAKLStGaWx0ZXIzICAgICAgMTAwCi0rRmls dGVyNCAgICAgIDEKLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK1RoZSBvcmRlciB0aGF0IHRoZSBm cmFtZSBmaWx0ZXJzIHdpbGwgYmUgY2FsbGVkIGlzOgotKwotK0BzbWFsbGV4YW1wbGUKLStGaWx0 ZXIzIC0+IEZpbHRlcjIgLT4gRmlsdGVyMSAtPiBGaWx0ZXI0Ci0rQGVuZCBzbWFsbGV4YW1wbGUK LSsKLStOb3RlIHRoYXQgdGhlIG91dHB1dCBmcm9tIEBjb2Rle0ZpbHRlcjN9IGlzIHBhc3NlZCB0 byB0aGUgaW5wdXQgb2YKLStAY29kZXtGaWx0ZXIyfSwgYW5kIHNvIG9uLgotKwotK1RoaXMgQGNv ZGV7ZmlsdGVyfSBtZXRob2QgaXMgcGFzc2VkIGEgUHl0aG9uIGl0ZXJhdG9yLiAgVGhpcyBpdGVy YXRvcgotK2NvbnRhaW5zIGEgc2VxdWVuY2Ugb2YgZnJhbWUgZGVjb3JhdG9ycyB0aGF0IHdyYXAg ZWFjaAotK0Bjb2Rle2dkYi5GcmFtZX0sIG9yIGEgZnJhbWUgZGVjb3JhdG9yIHRoYXQgd3JhcHMg YW5vdGhlciBmcmFtZQotK2RlY29yYXRvci4gIFRoZSBmaXJzdCBmaWx0ZXIgdGhhdCBpcyBleGVj dXRlZCBpbiB0aGUgc2VxdWVuY2Ugb2YgZnJhbWUKLStmaWx0ZXJzIHdpbGwgcmVjZWl2ZSBhbiBp dGVyYXRvciBlbnRpcmVseSBjb21wcmlzZWQgb2YgZGVmYXVsdAotK0Bjb2Rle0ZyYW1lRGVjb3Jh dG9yfSBvYmplY3RzLiAgSG93ZXZlciwgYWZ0ZXIgZWFjaCBmcmFtZSBmaWx0ZXIgaXMKLStleGVj dXRlZCwgdGhlIHByZXZpb3VzIGZyYW1lIGZpbHRlciBtYXkgaGF2ZSB3cmFwcGVkIHNvbWUgb3Ig YWxsIG9mCi0rdGhlIGZyYW1lIGRlY29yYXRvcnMgd2l0aCB0aGVpciBvd24gZnJhbWUgZGVjb3Jh dG9yLiAgQXMgZnJhbWUKLStkZWNvcmF0b3JzIG11c3QgYWxzbyBjb25mb3JtIHRvIGEgbWFuZGF0 b3J5IGludGVyZmFjZSwgdGhlc2UKLStkZWNvcmF0b3JzIGNhbiBiZSBhc3N1bWVkIHRvIGFjdCBp biBhIHVuaWZvcm0gbWFubmVyIChAcHhyZWZ7RnJhbWUKLStEZWNvcmF0b3IgQVBJfSkuCi0rCi0r VGhpcyBtZXRob2QgbXVzdCByZXR1cm4gYW4gb2JqZWN0IGNvbmZvcm1pbmcgdG8gdGhlIFB5dGhv biBpdGVyYXRvcgotK3Byb3RvY29sLiAgRWFjaCBpdGVtIGluIHRoZSBpdGVyYXRvciBtdXN0IGJl IGFuIG9iamVjdCBjb25mb3JtaW5nIHRvCi0rdGhlIGZyYW1lIGRlY29yYXRvciBpbnRlcmZhY2Uu ICBJZiBhIGZyYW1lIGZpbHRlciBkb2VzIG5vdCB3aXNoIHRvCi0rcGVyZm9ybSBhbnkgb3BlcmF0 aW9ucyBvbiB0aGlzIGl0ZXJhdG9yLCBpdCBzaG91bGQgcmV0dXJuIHRoYXQKLStpdGVyYXRvciB1 bnRvdWNoZWQuCi0rCi0rVGhpcyBtZXRob2QgaXMgbm90IG9wdGlvbmFsLiAgSWYgaXQgZG9lcyBu b3QgZXhpc3QsIEB2YWx1ZXtHREJOfSB3aWxsCi0rcmFpc2UgYW5kIHByaW50IGFuIGVycm9yLgot K0BlbmQgZGVmdW4KLSsKLStAZGVmdmFyIEZyYW1lRmlsdGVyLm5hbWUKLStUaGUgQGNvZGV7bmFt ZX0gYXR0cmlidXRlIG11c3QgYmUgUHl0aG9uIHN0cmluZyB3aGljaCBjb250YWlucyB0aGUKLStu YW1lIG9mIHRoZSBmaWx0ZXIgZGlzcGxheWVkIGJ5IEB2YWx1ZXtHREJOfSAoQHB4cmVme0ZyYW1l IEZpbHRlcgotK01hbmFnZW1lbnR9KS4gIFRoaXMgYXR0cmlidXRlIG1heSBjb250YWluIGFueSBj b21iaW5hdGlvbiBvZiBsZXR0ZXJzCi0rb3IgbnVtYmVycy4gIENhcmUgc2hvdWxkIGJlIHRha2Vu IHRvIGVuc3VyZSB0aGF0IGl0IGlzIHVuaXF1ZS4gIFRoaXMKLSthdHRyaWJ1dGUgaXMgbWFuZGF0 b3J5LgotK0BlbmQgZGVmdmFyCi0rCi0rQGRlZnZhciBGcmFtZUZpbHRlci5lbmFibGVkCi0rVGhl IEBjb2Rle2VuYWJsZWR9IGF0dHJpYnV0ZSBtdXN0IGJlIFB5dGhvbiBib29sZWFuLiAgVGhpcyBh dHRyaWJ1dGUKLStpbmRpY2F0ZXMgdG8gQHZhbHVle0dEQk59IHdoZXRoZXIgdGhlIGZyYW1lIGZp bHRlciBpcyBlbmFibGVkLCBhbmQKLStzaG91bGQgYmUgY29uc2lkZXJlZCB3aGVuIGZyYW1lIGZp bHRlcnMgYXJlIGV4ZWN1dGVkLiAgSWYKLStAY29kZXtlbmFibGVkfSBpcyBAY29kZXtUcnVlfSwg dGhlbiB0aGUgZnJhbWUgZmlsdGVyIHdpbGwgYmUgZXhlY3V0ZWQKLSt3aGVuIGFueSBvZiB0aGUg YmFja3RyYWNlIGNvbW1hbmRzIGRldGFpbGVkIGVhcmxpZXIgaW4gdGhpcyBjaGFwdGVyCi0rYXJl IGV4ZWN1dGVkLiAgSWYgQGNvZGV7ZW5hYmxlZH0gaXMgQGNvZGV7RmFsc2V9LCB0aGVuIHRoZSBm cmFtZQotK2ZpbHRlciB3aWxsIG5vdCBiZSBleGVjdXRlZC4gIFRoaXMgYXR0cmlidXRlIGlzIG1h bmRhdG9yeS4KLStAZW5kIGRlZnZhcgotKwotK0BkZWZ2YXIgRnJhbWVGaWx0ZXIucHJpb3JpdHkK LStUaGUgQGNvZGV7cHJpb3JpdHl9IGF0dHJpYnV0ZSBtdXN0IGJlIFB5dGhvbiBpbnRlZ2VyLiAg VGhpcyBhdHRyaWJ1dGUKLStjb250cm9scyB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uIGluIHJlbGF0 aW9uIHRvIG90aGVyIGZyYW1lIGZpbHRlcnMuCi0rVGhlcmUgYXJlIG5vIGltcG9zZWQgbGltaXRz IG9uIHRoZSByYW5nZSBvZiBAY29kZXtwcmlvcml0eX0gb3RoZXIgdGhhbgotK2l0IG11c3QgYmUg YSB2YWxpZCBpbnRlZ2VyLiAgVGhlIGhpZ2hlciB0aGUgQGNvZGV7cHJpb3JpdHl9IGF0dHJpYnV0 ZSwKLSt0aGUgc29vbmVyIHRoZSBmcmFtZSBmaWx0ZXIgd2lsbCBiZSBleGVjdXRlZCBpbiByZWxh dGlvbiB0byBvdGhlcgotK2ZyYW1lIGZpbHRlcnMuICBBbHRob3VnaCBAY29kZXtwcmlvcml0eX0g Y2FuIGJlIG5lZ2F0aXZlLCBpdCBpcwotK3JlY29tbWVuZGVkIHByYWN0aWNlIHRvIGFzc3VtZSB6 ZXJvIGlzIHRoZSBsb3dlc3QgcHJpb3JpdHkgdGhhdCBhCi0rZnJhbWUgZmlsdGVyIGNhbiBiZSBh c3NpZ25lZC4gIEZyYW1lIGZpbHRlcnMgdGhhdCBoYXZlIHRoZSBzYW1lCi0rcHJpb3JpdHkgYXJl IGV4ZWN1dGVkIGluIHVuc29ydGVkIG9yZGVyIGluIHRoYXQgcHJpb3JpdHkgc2xvdC4gIFRoaXMK LSthdHRyaWJ1dGUgaXMgbWFuZGF0b3J5LgotK0BlbmQgZGVmdmFyCi0rCi0rQG5vZGUgRnJhbWUg RGVjb3JhdG9yIEFQSQotK0BzdWJzdWJzZWN0aW9uIERlY29yYXRpbmcgRnJhbWVzLgotK0BjaW5k ZXggZnJhbWUgZGVjb3JhdG9yIGFwaQotKwotK0ZyYW1lIGRlY29yYXRvcnMgYXJlIHNpc3RlciBv YmplY3RzIHRvIGZyYW1lIGZpbHRlcnMgKEBweHJlZntGcmFtZQotK0ZpbHRlciBBUEl9KS4gIEZy YW1lIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgYnkgYSBmcmFtZSBmaWx0ZXIgYW5kIGNhbgotK29u bHkgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGZyYW1lIGZpbHRlcnMuCi0rCi0rVGhlIHB1 cnBvc2Ugb2YgYSBmcmFtZSBkZWNvcmF0b3IgaXMgdG8gY3VzdG9taXplIHRoZSBwcmludGVkIGNv bnRlbnQKLStvZiBlYWNoIEBjb2Rle2dkYi5GcmFtZX0gaW4gY29tbWFuZHMgd2hlcmUgZnJhbWUg ZmlsdGVycyBhcmUgZXhlY3V0ZWQuCi0rVGhpcyBjb25jZXB0IGlzIGNhbGxlZCBkZWNvcmF0aW5n IGEgZnJhbWUuICBGcmFtZSBkZWNvcmF0b3JzIGRlY29yYXRlCi0rYSBAY29kZXtnZGIuRnJhbWV9 IHdpdGggUHl0aG9uIGNvZGUgY29udGFpbmVkIHdpdGhpbiBlYWNoIEFQSSBjYWxsLgotK1RoaXMg c2VwYXJhdGVzIHRoZSBhY3R1YWwgZGF0YSBjb250YWluZWQgaW4gYSBAY29kZXtnZGIuRnJhbWV9 IGZyb20KLSt0aGUgZGVjb3JhdGVkIGRhdGEgcHJvZHVjZWQgYnkgYSBmcmFtZSBkZWNvcmF0b3Iu ICBUaGlzIGFic3RyYWN0aW9uIGlzCi0rbmVjZXNzYXJ5IHRvIG1haW50YWluIGludGVncml0eSBv ZiB0aGUgZGF0YSBjb250YWluZWQgaW4gZWFjaAotK0Bjb2Rle2dkYi5GcmFtZX0uCi0rCi0rRnJh bWUgZGVjb3JhdG9ycyBoYXZlIGEgbWFuZGF0b3J5IGludGVyZmFjZSwgZGVmaW5lZCBiZWxvdy4K LSsKLStAdmFsdWV7R0RCTn0gYWxyZWFkeSBjb250YWlucyBhIGZyYW1lIGRlY29yYXRvciBjYWxs ZWQKLStAY29kZXtGcmFtZURlY29yYXRvcn0uICBUaGlzIGNvbnRhaW5zIHN1YnN0YW50aWFsIGFt b3VudHMgb2YKLStib2lsZXJwbGF0ZSBjb2RlIHRvIGRlY29yYXRlIHRoZSBjb250ZW50IG9mIGEg QGNvZGV7Z2RiLkZyYW1lfS4gIEl0IGlzCi0rcmVjb21tZW5kZWQgdGhhdCBvdGhlciBmcmFtZSBk ZWNvcmF0b3JzIGluaGVyaXQgYW5kIGV4dGVuZCB0aGlzCi0rb2JqZWN0LCBhbmQgb25seSB0byBv dmVycmlkZSB0aGUgbWV0aG9kcyBuZWVkZWQuCi0rCi0rQGRlZnVuIEZyYW1lRGVjb3JhdG9yLmVs aWRlZCAoc2VsZikKLSsKLStUaGUgQGNvZGV7ZWxpZGVkfSBtZXRob2QgZ3JvdXBzIGZyYW1lcyB0 b2dldGhlciBpbiBhIGhpZXJhcmNoaWNhbAotK3N5c3RlbS4gIEFuIGV4YW1wbGUgd291bGQgYmUg YW4gaW50ZXJwcmV0ZXIsIHdoZXJlIG11bHRpcGxlIGxvdy1sZXZlbAotK2ZyYW1lcyBtYWtlIHVw IGEgc2luZ2xlIGNhbGwgaW4gdGhlIGludGVycHJldGVkIGxhbmd1YWdlLiAgSW4gdGhpcwotK2V4 YW1wbGUsIHRoZSBmcmFtZSBmaWx0ZXIgd291bGQgZWxpZGUgdGhlIGxvdy1sZXZlbCBmcmFtZXMg YW5kIHByZXNlbnQKLSthIHNpbmdsZSBoaWdoLWxldmVsIGZyYW1lLCByZXByZXNlbnRpbmcgdGhl IGNhbGwgaW4gdGhlIGludGVycHJldGVkCi0rbGFuZ3VhZ2UsIHRvIHRoZSB1c2VyLgotKwotK1Ro ZSBAY29kZXtlbGlkZWR9IGZ1bmN0aW9uIG11c3QgcmV0dXJuIGFuIGl0ZXJhYmxlIGFuZCB0aGlz IGl0ZXJhYmxlCi0rbXVzdCBjb250YWluIHRoZSBmcmFtZXMgdGhhdCBhcmUgYmVpbmcgZWxpZGVk IHdyYXBwZWQgaW4gYSBzdWl0YWJsZQotK2ZyYW1lIGRlY29yYXRvci4gIElmIG5vIGZyYW1lcyBh cmUgYmVpbmcgZWxpZGVkIHRoaXMgZnVuY3Rpb24gbWF5Ci0rcmV0dXJuIGFuIGVtcHR5IGl0ZXJh YmxlLCBvciBAY29kZXtOb25lfS4gIEVsaWRlZCBmcmFtZXMgYXJlIGluZGVudGVkCi0rZnJvbSBu b3JtYWwgZnJhbWVzIGluIGEgQGNvZGV7Q0xJfSBiYWNrdHJhY2UsIG9yIGluIHRoZSBjYXNlIG9m Ci0rQGNvZGV7R0RCL01JfSwgYXJlIHBsYWNlZCBpbiB0aGUgQGNvZGV7Y2hpbGRyZW59IGZpZWxk IG9mIHRoZSBlbGlkaW5nCi0rZnJhbWUuCi0rCi0rSXQgaXMgdGhlIGZyYW1lIGZpbHRlcidzIHRh c2sgdG8gYWxzbyBmaWx0ZXIgb3V0IHRoZSBlbGlkZWQgZnJhbWVzIGZyb20KLSt0aGUgc291cmNl IGl0ZXJhdG9yLiAgVGhpcyB3aWxsIGF2b2lkIHByaW50aW5nIHRoZSBmcmFtZSB0d2ljZS4KLStA ZW5kIGRlZnVuCi0rCi0rQGRlZnVuIEZyYW1lRGVjb3JhdG9yLmZ1bmN0aW9uIChzZWxmKQotKwot K1RoaXMgbWV0aG9kIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIGluIHRoZSBmcmFt ZSB0aGF0IGlzIHRvCi0rYmUgcHJpbnRlZC4KLSsKLStUaGlzIG1ldGhvZCBtdXN0IHJldHVybiBh IFB5dGhvbiBzdHJpbmcgZGVzY3JpYmluZyB0aGUgZnVuY3Rpb24sIG9yCi0rQGNvZGV7Tm9uZX0u Ci0rCi0rSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIEBjb2Rle05vbmV9LCBAdmFsdWV7R0RCTn0g d2lsbCBub3QgcHJpbnQgYW55Ci0rZGF0YSBmb3IgdGhpcyBmaWVsZC4KLStAZW5kIGRlZnVuCi0r Ci0rQGRlZnVuIEZyYW1lRGVjb3JhdG9yLmFkZHJlc3MgKHNlbGYpCi0rCi0rVGhpcyBtZXRob2Qg cmV0dXJucyB0aGUgYWRkcmVzcyBvZiB0aGUgZnJhbWUgdGhhdCBpcyB0byBiZSBwcmludGVkLgot KwotK1RoaXMgbWV0aG9kIG11c3QgcmV0dXJuIGEgUHl0aG9uIG51bWVyaWMgaW50ZWdlciB0eXBl IG9mIHN1ZmZpY2llbnQKLStzaXplIHRvIGRlc2NyaWJlIHRoZSBhZGRyZXNzIG9mIHRoZSBmcmFt ZSwgb3IgQGNvZGV7Tm9uZX0uCi0rCi0rSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgQGNvZGV7 Tm9uZX0sIEB2YWx1ZXtHREJOfSB3aWxsIG5vdCBwcmludAotK2FueSBkYXRhIGZvciB0aGlzIGZp ZWxkLgotK0BlbmQgZGVmdW4KLSsKLStAZGVmdW4gRnJhbWVEZWNvcmF0b3IuZmlsZW5hbWUgKHNl bGYpCi0rCi0rVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlsZW5hbWUgYW5kIHBhdGggYXNzb2Np YXRlZCB3aXRoIHRoaXMgZnJhbWUuCi0rCi0rVGhpcyBtZXRob2QgbXVzdCByZXR1cm4gYSBQeXRo b24gc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZpbGVuYW1lIGFuZAotK3RoZSBwYXRoIHRvIHRoZSBv YmplY3QgZmlsZSBiYWNraW5nIHRoZSBmcmFtZSwgb3IgQGNvZGV7Tm9uZX0uCi0rCi0rSWYgdGhp cyBmdW5jdGlvbiByZXR1cm5zIGEgQGNvZGV7Tm9uZX0sIEB2YWx1ZXtHREJOfSB3aWxsIG5vdCBw cmludAotK2FueSBkYXRhIGZvciB0aGlzIGZpZWxkLgotK0BlbmQgZGVmdW4KLSsKLStAZGVmdW4g RnJhbWVEZWNvcmF0b3IubGluZSAoc2VsZik6Ci0rCi0rVGhpcyBtZXRob2QgcmV0dXJucyB0aGUg bGluZSBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50Ci0rcG9zaXRpb24gd2l0aGlu IHRoZSBmdW5jdGlvbiBhZGRyZXNzZWQgYnkgdGhpcyBmcmFtZS4KLSsKLStUaGlzIG1ldGhvZCBt dXN0IHJldHVybiBhIFB5dGhvbiBpbnRlZ2VyIHR5cGUsIG9yIEBjb2Rle05vbmV9LgotKwotK0lm IHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIEBjb2Rle05vbmV9LCBAdmFsdWV7R0RCTn0gd2lsbCBu b3QgcHJpbnQKLSthbnkgZGF0YSBmb3IgdGhpcyBmaWVsZC4KLStAZW5kIGRlZnVuCi0rCi0rQGRl ZnVuIEZyYW1lRGVjb3JhdG9yLmZyYW1lX2FyZ3MgKHNlbGYpCi0rQGFuY2hvcntmcmFtZV9hcmdz fQotKwotK1RoaXMgbWV0aG9kIG11c3QgcmV0dXJuIGFuIGl0ZXJhYmxlLCBvciBAY29kZXtOb25l fS4gIFJldHVybmluZyBhbgotK2VtcHR5IGl0ZXJhYmxlLCBvciBAY29kZXtOb25lfSBtZWFucyBm cmFtZSBhcmd1bWVudHMgd2lsbCBub3QgYmUKLStwcmludGVkIGZvciB0aGlzIGZyYW1lLiAgVGhp cyBpdGVyYWJsZSBtdXN0IGNvbnRhaW4gb2JqZWN0cyB0aGF0Ci0raW1wbGVtZW50IHR3byBtZXRo b2RzLCBkZXNjcmliZWQgaGVyZS4KLSsKLStUaGlzIG9iamVjdCBtdXN0IGltcGxlbWVudCBhIEBj b2Rle2FyZ3VtZW50fSBtZXRob2Qgd2hpY2ggdGFrZXMgYQotK3NpbmdsZSBAY29kZXtzZWxmfSBw YXJhbWV0ZXIgYW5kIG11c3QgcmV0dXJuIGEgQGNvZGV7Z2RiLlN5bWJvbH0KLSsoQHB4cmVme1N5 bWJvbHMgSW4gUHl0aG9ufSksIG9yIGEgUHl0aG9uIHN0cmluZy4gIFRoZSBvYmplY3QgbXVzdCBh bHNvCi0raW1wbGVtZW50IGEgQGNvZGV7dmFsdWV9IG1ldGhvZCB3aGljaCB0YWtlcyBhIHNpbmds ZSBAY29kZXtzZWxmfQotK3BhcmFtZXRlciBhbmQgbXVzdCByZXR1cm4gYSBAY29kZXtnZGIuVmFs dWV9IChAcHhyZWZ7VmFsdWVzIEZyb20KLStJbmZlcmlvcn0pLCBhIFB5dGhvbiB2YWx1ZSwgb3Ig QGNvZGV7Tm9uZX0uICBJZiB0aGUgQGNvZGV7dmFsdWV9Ci0rbWV0aG9kIHJldHVybnMgQGNvZGV7 Tm9uZX0sIGFuZCB0aGUgQGNvZGV7YXJndW1lbnR9IG1ldGhvZCByZXR1cm5zIGEKLStAY29kZXtn ZGIuU3ltYm9sfSwgQHZhbHVle0dEQk59IHdpbGwgbG9vay11cCBhbmQgcHJpbnQgdGhlIHZhbHVl IG9mCi0rdGhlIEBjb2Rle2dkYi5TeW1ib2x9IGF1dG9tYXRpY2FsbHkuCi0rCi0rQSBicmllZiBl eGFtcGxlOgotKwotK0BzbWFsbGV4YW1wbGUKLStjbGFzcyBTeW1WYWx1ZVdyYXBwZXIoKToKLSsK LSsgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN5bWJvbCwgdmFsdWUpOgotKyAgICAgICAgc2VsZi5z eW0gPSBzeW1ib2wKLSsgICAgICAgIHNlbGYudmFsID0gdmFsdWUKLSsKLSsgICAgZGVmIHZhbHVl KHNlbGYpOgotKyAgICAgICAgcmV0dXJuIHNlbGYudmFsCi0rCi0rICAgIGRlZiBzeW1ib2woc2Vs Zik6Ci0rICAgICAgICByZXR1cm4gc2VsZi5zeW0KLSsKLStjbGFzcyBTb21lRnJhbWVEZWNvcmF0 b3IoKQotKy4uLgotKy4uLgotKyAgICBkZWYgZnJhbWVfYXJncyhzZWxmKToKLSsgICAgICAgIGFy Z3MgPSBbXQotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIGJsb2NrID0gc2VsZi5pbmZlcmlv cl9mcmFtZS5ibG9jaygpCi0rICAgICAgICBleGNlcHQ6Ci0rICAgICAgICAgICAgcmV0dXJuIE5v bmUKLSsKLSsgICAgICAgICMgSXRlcmF0ZSBvdmVyIGFsbCBzeW1ib2xzIGluIGEgYmxvY2suICBP bmx5IGFkZAotKyAgICAgICAgIyBzeW1ib2xzIHRoYXQgYXJlIGFyZ3VtZW50cy4KLSsgICAgICAg IGZvciBzeW0gaW4gYmxvY2s6Ci0rICAgICAgICAgICAgaWYgbm90IHN5bS5pc19hcmd1bWVudDoK LSsgICAgICAgICAgICAgICAgY29udGludWUKLSsgICAgICAgICAgICBhcmdzLmFwcGVuZChTeW1W YWx1ZVdyYXBwZXIoc3ltLE5vbmUpKQotKwotKyAgICAgICAgIyBBZGQgZXhhbXBsZSBzeW50aGV0 aWMgYXJndW1lbnQuCi0rICAgICAgICBhcmdzLmFwcGVuZChTeW1WYWx1ZVdyYXBwZXIoYGBmb28n JywgNDIpKQotKwotKyAgICAgICAgcmV0dXJuIGFyZ3MKLStAZW5kIHNtYWxsZXhhbXBsZQotK0Bl bmQgZGVmdW4KLSsKLStAZGVmdW4gRnJhbWVEZWNvcmF0b3IuZnJhbWVfbG9jYWxzIChzZWxmKQot KwotK1RoaXMgbWV0aG9kIG11c3QgcmV0dXJuIGFuIGl0ZXJhYmxlIG9yIEBjb2Rle05vbmV9LiAg UmV0dXJuaW5nIGFuCi0rZW1wdHkgaXRlcmFibGUsIG9yIEBjb2Rle05vbmV9IG1lYW5zIGZyYW1l IGxvY2FsIGFyZ3VtZW50cyB3aWxsIG5vdCBiZQotK3ByaW50ZWQgZm9yIHRoaXMgZnJhbWUuCi0r Ci0rVGhlIG9iamVjdCBpbnRlcmZhY2UsIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaW91cyBz dHJhdGVnaWVzIGZvcgotK3JlYWRpbmcgZnJhbWUgbG9jYWxzLCBhbmQgdGhlIGV4YW1wbGUgYXJl IGxhcmdlbHkgc2ltaWxhciB0byB0aG9zZQotK2Rlc2NyaWJlZCBpbiB0aGUgQGNvZGV7ZnJhbWVf YXJnc30gZnVuY3Rpb24sIChAcHhyZWZ7ZnJhbWVfYXJncywsVGhlCi0rZnJhbWUgZmlsdGVyIGZy YW1lX2FyZ3MgZnVuY3Rpb259KS4gIEJlbG93IGlzIGEgbW9kaWZpZWQgZXhhbXBsZToKLSsKLStA c21hbGxleGFtcGxlCi0rY2xhc3MgU29tZUZyYW1lRGVjb3JhdG9yKCkKLSsuLi4KLSsuLi4KLSsg ICAgZGVmIGZyYW1lX2xvY2FscyhzZWxmKToKLSsgICAgICAgIHZhcnMgPSBbXQotKyAgICAgICAg dHJ5OgotKyAgICAgICAgICAgIGJsb2NrID0gc2VsZi5pbmZlcmlvcl9mcmFtZS5ibG9jaygpCi0r ICAgICAgICBleGNlcHQ6Ci0rICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSsKLSsgICAgICAgICMg SXRlcmF0ZSBvdmVyIGFsbCBzeW1ib2xzIGluIGEgYmxvY2suICBBZGQgYWxsCi0rICAgICAgICAj IHN5bWJvbHMsIGV4Y2VwdCBhcmd1bWVudHMuCi0rICAgICAgICBmb3Igc3ltIGluIGJsb2NrOgot KyAgICAgICAgICAgIGlmIHN5bS5pc19hcmd1bWVudDoKLSsgICAgICAgICAgICAgICAgY29udGlu dWUKLSsgICAgICAgICAgICB2YXJzLmFwcGVuZChTeW1WYWx1ZVdyYXBwZXIoc3ltLE5vbmUpKQot KwotKyAgICAgICAgIyBBZGQgYW4gZXhhbXBsZSBvZiBhIHN5bnRoZXRpYyBsb2NhbCB2YXJpYWJs ZS4KLSsgICAgICAgIHZhcnMuYXBwZW5kKFN5bVZhbHVlV3JhcHBlcihgYGJhcicnLCA5OSkpCi0r Ci0rICAgICAgICByZXR1cm4gdmFycwotK0BlbmQgc21hbGxleGFtcGxlCi0rQGVuZCBkZWZ1bgot KwotK0BkZWZ1biBGcmFtZURlY29yYXRvci5pbmZlcmlvcl9mcmFtZSAoc2VsZik6Ci0rCi0rVGhp cyBtZXRob2QgbXVzdCByZXR1cm4gdGhlIHVuZGVybHlpbmcgQGNvZGV7Z2RiLkZyYW1lfSB0aGF0 IHRoaXMKLStmcmFtZSBkZWNvcmF0b3IgaXMgZGVjb3JhdGluZy4gIEB2YWx1ZXtHREJOfSByZXF1 aXJlcyB0aGUgdW5kZXJseWluZwotK2ZyYW1lIGZvciBpbnRlcm5hbCBmcmFtZSBpbmZvcm1hdGlv biB0byBkZXRlcm1pbmUgaG93IHRvIHByaW50IGNlcnRhaW4KLSt2YWx1ZXMgd2hlbiBwcmludGlu ZyBhIGZyYW1lLgotK0BlbmQgZGVmdW4KLSsKLStAbm9kZSBXcml0aW5nIGEgRnJhbWUgRmlsdGVy Ci0rQHN1YnN1YnNlY3Rpb24gV3JpdGluZyBhIEZyYW1lIEZpbHRlcgotK0BjaW5kZXggd3JpdGlu ZyBhIGZyYW1lIGZpbHRlcgotKwotK1RoZXJlIGFyZSB0aHJlZSBiYXNpYyBlbGVtZW50cyB0aGF0 IGEgZnJhbWUgZmlsdGVyIG11c3QgaW1wbGVtZW50OiBpdAotK211c3QgY29ycmVjdGx5IGltcGxl bWVudCB0aGUgZG9jdW1lbnRlZCBpbnRlcmZhY2UgKEBweHJlZntGcmFtZSBGaWx0ZXIKLStBUEl9 KSwgaXQgbXVzdCByZWdpc3RlciBpdHNlbGYgd2l0aCBAdmFsdWV7R0RCTn0sIGFuZCBmaW5hbGx5 LCBpdCBtdXN0Ci0rZGVjaWRlIGlmIGl0IGlzIHRvIHdvcmsgb24gdGhlIGRhdGEgcHJvdmlkZWQg YnkgQHZhbHVle0dEQk59LiAgSW4gYWxsCi0rY2FzZXMsIHdoZXRoZXIgaXQgd29ya3Mgb24gdGhl IGl0ZXJhdG9yIG9yIG5vdCwgZWFjaCBmcmFtZSBmaWx0ZXIgbXVzdAotK3JldHVybiBhbiBpdGVy YXRvci4gIEEgYmFyZS1ib25lcyBmcmFtZSBmaWx0ZXIgZm9sbG93cyB0aGUgcGF0dGVybiBpbgot K3RoZSBmb2xsb3dpbmcgZXhhbXBsZS4KLSsKLStAc21hbGxleGFtcGxlCi0raW1wb3J0IGdkYgot KwotK2NsYXNzIEZyYW1lRmlsdGVyKCk6Ci0rCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsg ICAgICAgICMgRnJhbWUgZmlsdGVyIGF0dHJpYnV0ZSBjcmVhdGlvbi4KLSsgICAgICAgICMKLSsg ICAgICAgICMgJ25hbWUnIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWx0ZXIgdGhhdCBHREIgd2lsbCBk aXNwbGF5LgotKyAgICAgICAgIwotKyAgICAgICAgIyAncHJpb3JpdHknIGlzIHRoZSBwcmlvcml0 eSBvZiB0aGUgZmlsdGVyIHJlbGF0aXZlIHRvIG90aGVyCi0rICAgICAgICAjIGZpbHRlcnMuCi0r ICAgICAgICAjCi0rICAgICAgICAjICdlbmFibGVkJyBpcyBhIGJvb2xlYW4gdGhhdCBpbmRpY2F0 ZXMgd2hldGhlciB0aGlzIGZpbHRlciBpcwotKyAgICAgICAgIyBlbmFibGVkIGFuZCBzaG91bGQg YmUgZXhlY3V0ZWQuCi0rCi0rICAgICAgICBzZWxmLm5hbWUgPSAiRm9vIgotKyAgICAgICAgc2Vs Zi5wcmlvcml0eSA9IDEwMAotKyAgICAgICAgc2VsZi5lbmFibGVkID0gVHJ1ZQotKwotKyAgICAg ICAgIyBSZWdpc3RlciB0aGlzIGZyYW1lIGZpbHRlciB3aXRoIHRoZSBnbG9iYWwgZnJhbWVfZmls dGVycwotKyAgICAgICAgIyBkaWN0aW9uYXJ5LgotKyAgICAgICAgZ2RiLmZyYW1lX2ZpbHRlcnNb c2VsZi5uYW1lXSA9IHNlbGYKLSsKLSsgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZV9pdGVyKToK LSsgICAgICAgICMgSnVzdCByZXR1cm4gdGhlIGl0ZXJhdG9yLgotKyAgICAgICAgcmV0dXJuIGZy YW1lX2l0ZXIKLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK1RoZSBmcmFtZSBmaWx0ZXIgaW4gdGhl IGV4YW1wbGUgYWJvdmUgaW1wbGVtZW50cyB0aGUgdGhyZWUKLStyZXF1aXJlbWVudHMgZm9yIGFs bCBmcmFtZSBmaWx0ZXJzLiAgSXQgaW1wbGVtZW50cyB0aGUgQVBJLCBzZWxmCi0rcmVnaXN0ZXJz LCBhbmQgbWFrZXMgYSBkZWNpc2lvbiBvbiB0aGUgaXRlcmF0b3IgKGluIHRoaXMgY2FzZSwgaXQg anVzdAotK3JldHVybnMgdGhlIGl0ZXJhdG9yIHVudG91Y2hlZCkuCi0rCi0rVGhlIGZpcnN0IHN0 ZXAgaXMgYXR0cmlidXRlIGNyZWF0aW9uIGFuZCBhc3NpZ25tZW50LCBhbmQgYXMgc2hvd24gaW4K LSt0aGUgY29tbWVudHMgdGhlIGZpbHRlciBhc3NpZ25zIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRl czogIEBjb2Rle25hbWV9LAotK0Bjb2Rle3ByaW9yaXR5fSBhbmQgd2hldGhlciB0aGUgZmlsdGVy IHNob3VsZCBiZSBlbmFibGVkIHdpdGggdGhlCi0rQGNvZGV7ZW5hYmxlZH0gYXR0cmlidXRlLgot KwotK1RoZSBzZWNvbmQgc3RlcCBpcyByZWdpc3RlcmluZyB0aGUgZnJhbWUgZmlsdGVyIHdpdGgg dGhlIGRpY3Rpb25hcnkgb3IKLStkaWN0aW9uYXJpZXMgdGhhdCB0aGUgZnJhbWUgZmlsdGVyIGhh cyBpbnRlcmVzdCBpbi4gIEFzIHNob3duIGluIHRoZQotK2NvbW1lbnRzLCB0aGlzIGZpbHRlciBq dXN0IHJlZ2lzdGVycyBpdHNlbGYgd2l0aCB0aGUgZ2xvYmFsIGRpY3Rpb25hcnkKLStAY29kZXtn ZGIuZnJhbWVfZmlsdGVyc30uICBBcyBub3RlZCBlYXJsaWVyLCBAY29kZXtnZGIuZnJhbWVfZmls dGVyc30KLStpcyBhIGRpY3Rpb25hcnkgdGhhdCBpcyBpbml0aWFsaXplZCBpbiB0aGUgQGNvZGV7 Z2RifSBtb2R1bGUgd2hlbgotK0B2YWx1ZXtHREJOfSBzdGFydHMuICBXaGF0IGRpY3Rpb25hcnkg YSBmaWx0ZXIgcmVnaXN0ZXJzIHdpdGggaXMgYW4KLStpbXBvcnRhbnQgY29uc2lkZXJhdGlvbi4g IEdlbmVyYWxseSwgaWYgYSBmaWx0ZXIgaXMgc3BlY2lmaWMgdG8gYSBzZXQKLStvZiBjb2RlLCBp dCBzaG91bGQgYmUgcmVnaXN0ZXJlZCBlaXRoZXIgaW4gdGhlIEBjb2Rle29iamZpbGV9IG9yCi0r QGNvZGV7cHJvZ3NwYWNlfSBkaWN0aW9uYXJpZXMgYXMgdGhleSBhcmUgc3BlY2lmaWMgdG8gdGhl IHByb2dyYW0KLStjdXJyZW50bHkgbG9hZGVkIGluIEB2YWx1ZXtHREJOfS4gIFRoZSBnbG9iYWwg ZGljdGlvbmFyeSBpcyBhbHdheXMKLStwcmVzZW50IGluIEB2YWx1ZXtHREJOfSBhbmQgaXMgbmV2 ZXIgdW5sb2FkZWQuICBBbnkgZmlsdGVycyByZWdpc3RlcmVkCi0rd2l0aCB0aGUgZ2xvYmFsIGRp Y3Rpb25hcnkgd2lsbCBleGlzdCB1bnRpbCBAdmFsdWV7R0RCTn0gZXhpdHMuICBUbwotK2F2b2lk IGZpbHRlcnMgdGhhdCBtYXkgY29uZmxpY3QsIGl0IGlzIGdlbmVyYWxseSBiZXR0ZXIgdG8gcmVn aXN0ZXIKLStmcmFtZSBmaWx0ZXJzIGFnYWluc3QgdGhlIGRpY3Rpb25hcmllcyB0aGF0IG1vcmUg Y2xvc2VseSBhbGlnbiB3aXRoCi0rdGhlIHVzYWdlIG9mIHRoZSBmaWx0ZXIgY3VycmVudGx5IGlu IHF1ZXN0aW9uLiAgQHhyZWZ7UHl0aG9uCi0rQXV0by1sb2FkaW5nfSwgZm9yIGZ1cnRoZXIgaW5m b3JtYXRpb24gb24gYXV0by1sb2FkaW5nIFB5dGhvbiBzY3JpcHRzLgotKwotK0B2YWx1ZXtHREJO fSB0YWtlcyBhIGhhbmRzLW9mZiBhcHByb2FjaCB0byBmcmFtZSBmaWx0ZXIgcmVnaXN0cmF0aW9u LAotK3RoZXJlZm9yZSBpdCBpcyB0aGUgZnJhbWUgZmlsdGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8g ZW5zdXJlCi0rcmVnaXN0cmF0aW9uIGhhcyBvY2N1cnJlZCwgYW5kIHRoYXQgYW55IGV4Y2VwdGlv bnMgYXJlIGhhbmRsZWQKLSthcHByb3ByaWF0ZWx5LiAgSW4gcGFydGljdWxhciwgeW91IG1heSB3 aXNoIHRvIGhhbmRsZSBleGNlcHRpb25zCi0rcmVsYXRpbmcgdG8gUHl0aG9uIGRpY3Rpb25hcnkg a2V5IHVuaXF1ZW5lc3MuICBJdCBpcyBtYW5kYXRvcnkgdGhhdAotK3RoZSBkaWN0aW9uYXJ5IGtl eSBpcyB0aGUgc2FtZSBhcyBmcmFtZSBmaWx0ZXIncyBAY29kZXtuYW1lfQotK2F0dHJpYnV0ZS4g IFdoZW4gYSB1c2VyIG1hbmFnZXMgZnJhbWUgZmlsdGVycyAoQHB4cmVme0ZyYW1lIEZpbHRlcgot K01hbmFnZW1lbnR9KSwgdGhlIG5hbWVzIEB2YWx1ZXtHREJOfSB3aWxsIGRpc3BsYXkgYXJlIHRo b3NlIGNvbnRhaW5lZAotK2luIHRoZSBAY29kZXtuYW1lfSBhdHRyaWJ1dGUuCi0rCi0rVGhlIGZp bmFsIHN0ZXAgb2YgdGhpcyBleGFtcGxlIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKLStA Y29kZXtmaWx0ZXJ9IG1ldGhvZC4gIEFzIHNob3duIGluIHRoZSBleGFtcGxlIGNvbW1lbnRzLCB3 ZSBkZWZpbmUgdGhlCi0rQGNvZGV7ZmlsdGVyfSBtZXRob2QgYW5kIG5vdGUgdGhhdCB0aGUgbWV0 aG9kIG11c3QgdGFrZSBhbiBpdGVyYXRvciwKLSthbmQgYWxzbyBtdXN0IHJldHVybiBhbiBpdGVy YXRvci4gIEluIHRoaXMgYmFyZS1ib25lcyBleGFtcGxlLCB0aGUKLStmcmFtZSBmaWx0ZXIgaXMg bm90IHZlcnkgdXNlZnVsIGFzIGl0IGp1c3QgcmV0dXJucyB0aGUgaXRlcmF0b3IKLSt1bnRvdWNo ZWQuICBIb3dldmVyIHRoaXMgaXMgYSB2YWxpZCBvcGVyYXRpb24gZm9yIGZyYW1lIGZpbHRlcnMg dGhhdAotK2hhdmUgdGhlIEBjb2Rle2VuYWJsZWR9IGF0dHJpYnV0ZSBzZXQsIGJ1dCBkZWNpZGUg bm90IHRvIG9wZXJhdGUgb24KLSthbnkgZnJhbWVzLgotKwotK0luIHRoZSBuZXh0IGV4YW1wbGUs IHRoZSBmcmFtZSBmaWx0ZXIgb3BlcmF0ZXMgb24gYWxsIGZyYW1lcyBhbmQKLSt1dGlsaXplcyBh IGZyYW1lIGRlY29yYXRvciB0byBwZXJmb3JtIHNvbWUgd29yayBvbiB0aGUgZnJhbWVzLgotK0B4 cmVme0ZyYW1lIERlY29yYXRvciBBUEl9LCBmb3IgZnVydGhlciBpbmZvcm1hdGlvbiBvbiB0aGUg ZnJhbWUKLStkZWNvcmF0b3IgaW50ZXJmYWNlLgotKwotK1RoaXMgZXhhbXBsZSB3b3JrcyBvbiBp bmxpbmVkIGZyYW1lcy4gIEl0IGhpZ2hsaWdodHMgZnJhbWVzIHdoaWNoIGFyZQotK2lubGluZWQg YnkgdGFnZ2luZyB0aGVtIHdpdGggYW4gYGBbaW5saW5lZF0nJyB0YWcuICBCeSBhcHBseWluZyBh Ci0rZnJhbWUgZGVjb3JhdG9yIHRvIGFsbCBmcmFtZXMgd2l0aCB0aGUgUHl0aG9uIEBjb2Rle2l0 ZXJ0b29scyBpbWFwfQotK21ldGhvZCwgdGhlIGV4YW1wbGUgZGVmZXJzIGFjdGlvbnMgdG8gdGhl IGZyYW1lIGRlY29yYXRvci4gIEZyYW1lCi0rZGVjb3JhdG9ycyBhcmUgb25seSBwcm9jZXNzZWQg d2hlbiBAdmFsdWV7R0RCTn0gcHJpbnRzIHRoZSBiYWNrdHJhY2UuCi0rCi0rVGhpcyBpbnRyb2R1 Y2VzIGEgbmV3IGRlY2lzaW9uIG1ha2luZyB0b3BpYzogd2hldGhlciB0byBwZXJmb3JtCi0rZGVj aXNpb24gbWFraW5nIG9wZXJhdGlvbnMgYXQgdGhlIGZpbHRlcmluZyBzdGVwLCBvciBhdCB0aGUg cHJpbnRpbmcKLStzdGVwLiAgSW4gdGhpcyBleGFtcGxlJ3MgYXBwcm9hY2gsIGl0IGRvZXMgbm90 IHBlcmZvcm0gYW55IGZpbHRlcmluZwotK2RlY2lzaW9ucyBhdCB0aGUgZmlsdGVyaW5nIHN0ZXAg YmV5b25kIG1hcHBpbmcgYSBmcmFtZSBkZWNvcmF0b3IgdG8KLStlYWNoIGZyYW1lLiAgVGhpcyBh bGxvd3MgdGhlIGFjdHVhbCBkZWNpc2lvbiBtYWtpbmcgdG8gYmUgcGVyZm9ybWVkCi0rd2hlbiBl YWNoIGZyYW1lIGlzIHByaW50ZWQuICBUaGlzIGlzIGFuIGltcG9ydGFudCBjb25zaWRlcmF0aW9u LCBhbmQKLSt3ZWxsIHdvcnRoIHJlZmxlY3RpbmcgdXBvbiB3aGVuIGRlc2lnbmluZyBhIGZyYW1l IGZpbHRlci4gIEFuIGlzc3VlCi0rdGhhdCBmcmFtZSBmaWx0ZXJzIHNob3VsZCBhdm9pZCBpcyB1 bndpbmRpbmcgdGhlIHN0YWNrIGlmIHBvc3NpYmxlLgotK1NvbWUgc3RhY2tzIGNhbiBydW4gdmVy eSBkZWVwLCBpbnRvIHRoZSB0ZW5zIG9mIHRob3VzYW5kcyBpbiBzb21lCi0rY2FzZXMuICBUbyBz ZWFyY2ggZXZlcnkgZnJhbWUgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGlubGluZWQgYWhlYWQgb2YK LSt0aW1lIG1heSBiZSB0b28gZXhwZW5zaXZlIGF0IHRoZSBmaWx0ZXJpbmcgc3RlcC4gIFRoZSBm cmFtZSBmaWx0ZXIKLStjYW5ub3Qga25vdyBob3cgbWFueSBmcmFtZXMgaXQgaGFzIHRvIGl0ZXJh dGUgb3ZlciwgYW5kIGl0IHdvdWxkIGhhdmUKLSt0byBpdGVyYXRlIHRocm91Z2ggdGhlbSBhbGwu ICBUaGlzIGVuZHMgdXAgZHVwbGljYXRpbmcgZWZmb3J0IGFzCi0rQHZhbHVle0dEQk59IHBlcmZv cm1zIHRoaXMgaXRlcmF0aW9uIHdoZW4gaXQgcHJpbnRzIHRoZSBmcmFtZXMuCi0rCi0rSW4gdGhp cyBleGFtcGxlIGRlY2lzaW9uIG1ha2luZyBjYW4gYmUgZGVmZXJyZWQgdG8gdGhlIHByaW50aW5n IHN0ZXAuCi0rQXMgZWFjaCBmcmFtZSBpcyBwcmludGVkLCB0aGUgZnJhbWUgZGVjb3JhdG9yIGNh biBleGFtaW5lIGVhY2ggZnJhbWUKLStpbiB0dXJuIHdoZW4gQHZhbHVle0dEQk59IGl0ZXJhdGVz LiAgRnJvbSBhIHBlcmZvcm1hbmNlIHZpZXdwb2ludCwKLSt0aGlzIGlzIHRoZSBtb3N0IGFwcHJv cHJpYXRlIGRlY2lzaW9uIHRvIG1ha2UgYXMgaXQgYXZvaWRzIGR1cGxpY2F0aW5nCi0rdGhlIGVm Zm9ydCB0aGF0IHRoZSBwcmludGluZyBzdGVwIHdvdWxkIHVuZGVydGFrZSBhbnl3YXkuICBBbHNv LCBpZgotK3RoZXJlIGFyZSBtYW55IGZyYW1lIGZpbHRlcnMgdW53aW5kaW5nIHRoZSBzdGFjayBk dXJpbmcgZmlsdGVyaW5nLCBpdAotK2NhbiBzdWJzdGFudGlhbGx5IGRlbGF5IHRoZSBwcmludGlu ZyBvZiB0aGUgYmFja3RyYWNlIHdoaWNoIHdpbGwKLStyZXN1bHQgaW4gbGFyZ2UgbWVtb3J5IHVz YWdlLCBhbmQgYSBwb29yIHVzZXIgZXhwZXJpZW5jZS4KLSsKLStAc21hbGxleGFtcGxlCi0rY2xh c3MgSW5saW5lRmlsdGVyKCk6Ci0rCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAgICAg IHNlbGYubmFtZSA9ICJJbmxpbmVkRnJhbWVGaWx0ZXIiCi0rICAgICAgICBzZWxmLnByaW9yaXR5 ID0gMTAwCi0rICAgICAgICBzZWxmLmVuYWJsZWQgPSBUcnVlCi0rICAgICAgICBnZGIuZnJhbWVf ZmlsdGVyc1tzZWxmLm5hbWVdID0gc2VsZgotKwotKyAgICBkZWYgZmlsdGVyKHNlbGYsIGZyYW1l X2l0ZXIpOgotKyAgICAgICAgZnJhbWVfaXRlciA9IGl0ZXJ0b29scy5pbWFwKElubGluZWRGcmFt ZURlY29yYXRvciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9p dGVyKQotKyAgICAgICAgcmV0dXJuIGZyYW1lX2l0ZXIKLStAZW5kIHNtYWxsZXhhbXBsZQotKwot K1RoaXMgZnJhbWUgZmlsdGVyIGlzIHNvbWV3aGF0IHNpbWlsYXIgdG8gdGhlIGVhcmxpZXIgZXhh bXBsZSwgZXhjZXB0Ci0rdGhhdCB0aGUgQGNvZGV7ZmlsdGVyfSBtZXRob2QgYXBwbGllcyBhIGZy YW1lIGRlY29yYXRvciBvYmplY3QgY2FsbGVkCi0rQGNvZGV7SW5saW5lZEZyYW1lRGVjb3JhdG9y fSB0byBlYWNoIGVsZW1lbnQgaW4gdGhlIGl0ZXJhdG9yLiAgVGhlCi0rQGNvZGV7aW1hcH0gUHl0 aG9uIG1ldGhvZCBpcyBsaWdodC13ZWlnaHQuICBJdCBkb2VzIG5vdCBwcm9hY3RpdmVseQotK2l0 ZXJhdGUgb3ZlciB0aGUgaXRlcmF0b3IsIGJ1dCByYXRoZXIgY3JlYXRlcyBhIG5ldyBpdGVyYXRv ciB3aGljaAotK3dyYXBzIHRoZSBleGlzdGluZyBvbmUuCi0rCi0rQmVsb3cgaXMgdGhlIGZyYW1l IGRlY29yYXRvciBmb3IgdGhpcyBleGFtcGxlLgotKwotK0BzbWFsbGV4YW1wbGUKLStjbGFzcyBJ bmxpbmVkRnJhbWVEZWNvcmF0b3IoRnJhbWVEZWNvcmF0b3IpOgotKwotKyAgICBkZWYgX19pbml0 X18oc2VsZiwgZm9iaik6Ci0rICAgICAgICBzdXBlcihJbmxpbmVkRnJhbWVEZWNvcmF0b3IsIHNl bGYpLl9faW5pdF9fKGZvYmopCi0rCi0rICAgIGRlZiBmdW5jdGlvbihzZWxmKToKLSsgICAgICAg IGZyYW1lID0gZm9iai5pbmZlcmlvcl9mcmFtZSgpCi0rICAgICAgICBuYW1lID0gc3RyKGZyYW1l Lm5hbWUoKSkKLSsKLSsgICAgICAgIGlmIGZyYW1lLnR5cGUoKSA9PSBnZGIuSU5MSU5FX0ZSQU1F OgotKyAgICAgICAgICAgIG5hbWUgPSBuYW1lICsgIiBbaW5saW5lZF0iCi0rCi0rICAgICAgICBy ZXR1cm4gbmFtZQotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0rVGhpcyBmcmFtZSBkZWNvcmF0b3Ig b25seSBkZWZpbmVzIGFuZCBvdmVycmlkZXMgdGhlIEBjb2Rle2Z1bmN0aW9ufQotK21ldGhvZC4g IEl0IGxldHMgdGhlIHN1cHBsaWVkIEBjb2Rle0ZyYW1lRGVjb3JhdG9yfSwgd2hpY2ggaXMgc2hp cHBlZAotK3dpdGggQHZhbHVle0dEQk59LCBwZXJmb3JtIHRoZSBvdGhlciB3b3JrIGFzc29jaWF0 ZWQgd2l0aCBwcmludGluZwotK3RoaXMgZnJhbWUuCi0rCi0rVGhlIGNvbWJpbmF0aW9uIG9mIHRo ZXNlIHR3byBvYmplY3RzIGNyZWF0ZSB0aGlzIG91dHB1dCBmcm9tIGEKLStiYWNrdHJhY2U6Ci0r Ci0rQHNtYWxsZXhhbXBsZQotKyMwICAweDAwNDAwNGUwIGluIGJhciAoKSBhdCBpbmxpbmUuYzox MQotKyMxICAweDAwNDAwNTY2IGluIG1heCBbaW5saW5lZF0gKGI9NiwgYT0xMikgYXQgaW5saW5l LmM6MjEKLSsjMiAgMHgwMDQwMDU2NiBpbiBtYWluICgpIGF0IGlubGluZS5jOjMxCi0rQGVuZCBz bWFsbGV4YW1wbGUKLSsKLStTbyBpbiB0aGUgY2FzZSBvZiB0aGlzIGV4YW1wbGUsIGEgZnJhbWUg ZGVjb3JhdG9yIGlzIGFwcGxpZWQgdG8gYWxsCi0rZnJhbWVzLCByZWdhcmRsZXNzIG9mIHdoZXRo ZXIgdGhleSBtYXkgYmUgaW5saW5lZCBvciBub3QuICBBcwotK0B2YWx1ZXtHREJOfSBpdGVyYXRl cyBvdmVyIHRoZSBpdGVyYXRvciBwcm9kdWNlZCBieSB0aGUgZnJhbWUgZmlsdGVycywKLStAdmFs dWV7R0RCTn0gZXhlY3V0ZXMgZWFjaCBmcmFtZSBkZWNvcmF0b3Igd2hpY2ggdGhlbiBtYWtlcyBh IGRlY2lzaW9uCi0rb24gd2hhdCB0byBwcmludCBpbiB0aGUgQGNvZGV7ZnVuY3Rpb259IGNhbGxi YWNrLiAgVXNpbmcgYSBzdHJhdGVneQotK2xpa2UgdGhpcyBpcyBhIHdheSB0byBkZWZlciBkZWNp c2lvbnMgb24gdGhlIGZyYW1lIGNvbnRlbnQgdG8gcHJpbnRpbmcKLSt0aW1lLgotKwotK0BzdWJo ZWFkaW5nIEVsaWRpbmcgRnJhbWVzCi0rCi0rSXQgbWlnaHQgYmUgdGhhdCB0aGUgYWJvdmUgZXhh bXBsZSBpcyBub3QgZGVzaXJhYmxlIGZvciByZXByZXNlbnRpbmcKLStpbmxpbmVkIGZyYW1lcywg YW5kIGEgaGllcmFyY2hpY2FsIGFwcHJvYWNoIG1heSBiZSBwcmVmZXJyZWQuICBJZiB3ZQotK3dh bnQgdG8gaGllcmFyY2hpY2FsbHkgcmVwcmVzZW50IGZyYW1lcywgdGhlIEBjb2Rle2VsaWRlZH0g ZnJhbWUKLStkZWNvcmF0b3IgaW50ZXJmYWNlIG1pZ2h0IGJlIHByZWZlcmFibGUuCi0rCi0rVGhp cyBleGFtcGxlIGFwcHJvYWNoZXMgdGhlIGlzc3VlIHdpdGggdGhlIEBjb2Rle2VsaWRlZH0gbWV0 aG9kLiAgVGhpcwotK2V4YW1wbGUgaXMgcXVpdGUgbG9uZywgYnV0IHZlcnkgc2ltcGxpc3RpYy4g IEl0IGlzIG91dC1vZi1zY29wZSBmb3IKLSt0aGlzIHNlY3Rpb24gdG8gd3JpdGUgYSBjb21wbGV0 ZSBleGFtcGxlIHRoYXQgY29tcHJlaGVuc2l2ZWx5IGNvdmVycwotK2FsbCBhcHByb2FjaGVzIG9m IGZpbmRpbmcgYW5kIHByaW50aW5nIGlubGluZWQgZnJhbWVzLiAgSG93ZXZlciwgdGhpcwotK2V4 YW1wbGUgaWxsdXN0cmF0ZXMgdGhlIGFwcHJvYWNoIGFuIGF1dGhvciBtaWdodCB1c2UuCi0rCi0r VGhpcyBleGFtcGxlIGNvbXByaXNlcyBvZiB0aHJlZSBzZWN0aW9ucy4KLSsKLStAc21hbGxleGFt cGxlCi0rY2xhc3MgSW5saW5lRnJhbWVGaWx0ZXIoKToKLSsKLSsgICAgZGVmIF9faW5pdF9fKHNl bGYpOgotKyAgICAgICAgc2VsZi5uYW1lID0gIklubGluZWRGcmFtZUZpbHRlciIKLSsgICAgICAg IHNlbGYucHJpb3JpdHkgPSAxMDAKLSsgICAgICAgIHNlbGYuZW5hYmxlZCA9IFRydWUKLSsgICAg ICAgIGdkYi5mcmFtZV9maWx0ZXJzW3NlbGYubmFtZV0gPSBzZWxmCi0rCi0rICAgIGRlZiBmaWx0 ZXIoc2VsZiwgZnJhbWVfaXRlcik6Ci0rICAgICAgICByZXR1cm4gRWxpZGluZ0lubGluZUl0ZXJh dG9yKGZyYW1lX2l0ZXIpCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStUaGlzIGZyYW1lIGZpbHRl ciBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIG90aGVyIGV4YW1wbGVzLiAgVGhlIG9ubHkKLStkaWZm ZXJlbmNlIGlzIHRoaXMgZnJhbWUgZmlsdGVyIGlzIHdyYXBwaW5nIHRoZSBpdGVyYXRvciBwcm92 aWRlZCB0bwotK2l0IChAY29kZXtmcmFtZV9pdGVyfSkgd2l0aCBhIGN1c3RvbSBpdGVyYXRvciBj YWxsZWQKLStAY29kZXtFbGlkaW5nSW5saW5lSXRlcmF0b3J9LiAgVGhpcyBhZ2FpbiBkZWZlcnMg YWN0aW9ucyB0byB3aGVuCi0rQHZhbHVle0dEQk59IHByaW50cyB0aGUgYmFja3RyYWNlLCBhcyB0 aGUgaXRlcmF0b3IgaXMgbm90IHRyYXZlcnNlZAotK3VudGlsIHByaW50aW5nLgotKwotK1RoZSBp dGVyYXRvciBmb3IgdGhpcyBleGFtcGxlIGlzIGFzIGZvbGxvd3MuICBJdCBpcyBpbiB0aGlzIHNl Y3Rpb24gb2YKLSt0aGUgZXhhbXBsZSB3aGVyZSBkZWNpc2lvbnMgYXJlIG1hZGUgb24gdGhlIGNv bnRlbnQgb2YgdGhlIGJhY2t0cmFjZS4KLSsKLStAc21hbGxleGFtcGxlCi0rY2xhc3MgRWxpZGlu Z0lubGluZUl0ZXJhdG9yOgotKyAgICBkZWYgX19pbml0X18oc2VsZiwgaWkpOgotKyAgICAgICAg c2VsZi5pbnB1dF9pdGVyYXRvciA9IGlpCi0rCi0rICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSsg ICAgICAgIHJldHVybiBzZWxmCi0rCi0rICAgIGRlZiBuZXh0KHNlbGYpOgotKyAgICAgICAgZnJh bWUgPSBuZXh0KHNlbGYuaW5wdXRfaXRlcmF0b3IpCi0rCi0rICAgICAgICBpZiBmcmFtZS5pbmZl cmlvcl9mcmFtZSgpLnR5cGUoKSAhPSBnZGIuSU5MSU5FX0ZSQU1FOgotKyAgICAgICAgICAgIHJl dHVybiBmcmFtZQotKwotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIGVsaWRpbmdfZnJhbWUg PSBuZXh0KHNlbGYuaW5wdXRfaXRlcmF0b3IpCi0rICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlv bjoKLSsgICAgICAgICAgICByZXR1cm4gZnJhbWUKLSsgICAgICAgIHJldHVybiBFbGlkaW5nRnJh bWVEZWNvcmF0b3IoZWxpZGluZ19mcmFtZSwgW2ZyYW1lXSkKLStAZW5kIHNtYWxsZXhhbXBsZQot KwotK1RoaXMgaXRlcmF0b3IgaW1wbGVtZW50cyB0aGUgUHl0aG9uIGl0ZXJhdG9yIHByb3RvY29s LiAgV2hlbiB0aGUKLStAY29kZXtuZXh0fSBmdW5jdGlvbiBpcyBjYWxsZWQgKHdoZW4gQHZhbHVl e0dEQk59IHByaW50cyBlYWNoIGZyYW1lKSwKLSt0aGUgaXRlcmF0b3IgY2hlY2tzIGlmIHRoaXMg ZnJhbWUgZGVjb3JhdG9yLCBAY29kZXtmcmFtZX0sIGlzIHdyYXBwaW5nCi0rYW4gaW5saW5lZCBm cmFtZS4gIElmIGl0IGlzIG5vdCwgaXQgcmV0dXJucyB0aGUgZXhpc3RpbmcgZnJhbWUgZGVjb3Jh dG9yCi0rdW50b3VjaGVkLiAgSWYgaXQgaXMgd3JhcHBpbmcgYW4gaW5saW5lZCBmcmFtZSwgaXQg YXNzdW1lcyB0aGF0IHRoZQotK2lubGluZWQgZnJhbWUgd2FzIGNvbnRhaW5lZCB3aXRoaW4gdGhl IG5leHQgb2xkZXN0IGZyYW1lLAotK0Bjb2Rle2VsaWRpbmdfZnJhbWV9LCB3aGljaCBpdCBmZXRj aGVzLiAgSXQgdGhlbiBjcmVhdGVzIGFuZCByZXR1cm5zIGEKLStmcmFtZSBkZWNvcmF0b3IsIEBj b2Rle0VsaWRpbmdGcmFtZURlY29yYXRvcn0sIHdoaWNoIGNvbnRhaW5zIGJvdGggdGhlCi0rZWxp ZGVkIGZyYW1lLCBhbmQgdGhlIGVsaWRpbmcgZnJhbWUuCi0rCi0rQHNtYWxsZXhhbXBsZQotK2Ns YXNzIEVsaWRpbmdJbmxpbmVEZWNvcmF0b3IoRnJhbWVEZWNvcmF0b3IpOgotKwotKyAgICBkZWYg X19pbml0X18oc2VsZiwgZnJhbWUsIGVsaWRlZF9mcmFtZXMpOgotKyAgICAgICAgc3VwZXIoRWxp ZGluZ0lubGluZURlY29yYXRvciwgc2VsZikuX19pbml0X18oZnJhbWUpCi0rICAgICAgICBzZWxm LmZyYW1lID0gZnJhbWUKLSsgICAgICAgIHNlbGYuZWxpZGVkX2ZyYW1lcyA9IGVsaWRlZF9mcmFt ZXMKLSsKLSsgICAgZGVmIGVsaWRlZChzZWxmKToKLSsgICAgICAgIHJldHVybiBpdGVyKHNlbGYu ZWxpZGVkX2ZyYW1lcykKLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK1RoaXMgZnJhbWUgZGVjb3Jh dG9yIG92ZXJyaWRlcyBvbmUgZnVuY3Rpb24gYW5kIHJldHVybnMgdGhlIGlubGluZWQKLStmcmFt ZSBpbiB0aGUgQGNvZGV7ZWxpZGVkfSBtZXRob2QuICBBcyBiZWZvcmUgaXQgbGV0cwotK0Bjb2Rl e0ZyYW1lRGVjb3JhdG9yfSBkbyB0aGUgcmVzdCBvZiB0aGUgd29yayBpbnZvbHZlZCBpbiBwcmlu dGluZwotK3RoaXMgZnJhbWUuICBUaGlzIHByb2R1Y2VzIHRoZSBmb2xsb3dpbmcgb3V0cHV0Lgot KwotK0BzbWFsbGV4YW1wbGUKLSsjMCAgMHgwMDQwMDRlMCBpbiBiYXIgKCkgYXQgaW5saW5lLmM6 MTEKLSsjMiAgMHgwMDQwMDUyOSBpbiBtYWluICgpIGF0IGlubGluZS5jOjI1Ci0rICAgICMxICAw eDAwNDAwNTI5IGluIG1heCAoYj02LCBhPTEyKSBhdCBpbmxpbmUuYzoxNQotK0BlbmQgc21hbGxl eGFtcGxlCi0rCi0rSW4gdGhhdCBvdXRwdXQsIEBjb2Rle21heH0gd2hpY2ggaGFzIGJlZW4gaW5s aW5lZCBpbnRvIEBjb2Rle21haW59IGlzCi0rcHJpbnRlZCBoaWVyYXJjaGljYWxseS4gIEFub3Ro ZXIgYXBwcm9hY2ggd291bGQgYmUgdG8gY29tYmluZSB0aGUKLStAY29kZXtmdW5jdGlvbn0gbWV0 aG9kLCBhbmQgdGhlIEBjb2Rle2VsaWRlZH0gbWV0aG9kIHRvIGJvdGggcHJpbnQgYQotK21hcmtl ciBpbiB0aGUgaW5saW5lZCBmcmFtZSwgYW5kIGFsc28gc2hvdyB0aGUgaGllcmFyY2hpY2FsCi0r cmVsYXRpb25zaGlwLgotKwotIEBub2RlIEluZmVyaW9ycyBJbiBQeXRob24KLSBAc3Vic3Vic2Vj dGlvbiBJbmZlcmlvcnMgSW4gUHl0aG9uCi0gQGNpbmRleCBpbmZlcmlvcnMgaW4gUHl0aG9uCi1A QCAtMjUyODAsNiArMjYwNzEsMTEgQEAgVGhlIEBjb2Rle3R5cGVfcHJpbnRlcnN9IGF0dHJpYnV0 ZSBpcyBhCi0gQHhyZWZ7VHlwZSBQcmludGluZyBBUEl9LCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4K LSBAZW5kIGRlZnZhcgotIAotK0BkZWZ2YXIgUHJvZ3NwYWNlLmZyYW1lX2ZpbHRlcnMKLStUaGUg QGNvZGV7ZnJhbWVfZmlsdGVyc30gYXR0cmlidXRlIGlzIGEgZGljdGlvbmFyeSBvZiBmcmFtZSBm aWx0ZXIKLStvYmplY3RzLiAgQHhyZWZ7RnJhbWUgRmlsdGVyIEFQSX0sIGZvciBtb3JlIGluZm9y bWF0aW9uLgotK0BlbmQgZGVmdmFyCi0rCi0gQG5vZGUgT2JqZmlsZXMgSW4gUHl0aG9uCi0gQHN1 YnN1YnNlY3Rpb24gT2JqZmlsZXMgSW4gUHl0aG9uCi0gCi1AQCAtMjUzMzAsNiArMjYxMjYsMTEg QEAgVGhlIEBjb2Rle3R5cGVfcHJpbnRlcnN9IGF0dHJpYnV0ZSBpcyBhCi0gQHhyZWZ7VHlwZSBQ cmludGluZyBBUEl9LCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSBAZW5kIGRlZnZhcgotIAotK0Bk ZWZ2YXIgT2JqZmlsZS5mcmFtZV9maWx0ZXJzCi0rVGhlIEBjb2Rle2ZyYW1lX2ZpbHRlcnN9IGF0 dHJpYnV0ZSBpcyBhIGRpY3Rpb25hcnkgb2YgZnJhbWUgZmlsdGVyCi0rb2JqZWN0cy4gIEB4cmVm e0ZyYW1lIEZpbHRlciBBUEl9LCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLStAZW5kIGRlZnZhcgot KwotIEEgQGNvZGV7Z2RiLk9iamZpbGV9IG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBtZXRob2Rz OgotIAotIEBkZWZ1biBPYmpmaWxlLmlzX3ZhbGlkICgpCi1AQCAtMjYzNDgsNyArMjcxNDksNyBA QCBObyAgICAgbXktZm9vLXByZXR0eS1wcmludGVycy5weQotIFdoZW4gcmVhZGluZyBhbiBhdXRv LWxvYWRlZCBmaWxlLCBAdmFsdWV7R0RCTn0gc2V0cyB0aGUKLSBAZGZue2N1cnJlbnQgb2JqZmls ZX0uICBUaGlzIGlzIGF2YWlsYWJsZSB2aWEgdGhlIEBjb2Rle2dkYi5jdXJyZW50X29iamZpbGV9 Ci0gZnVuY3Rpb24gKEBweHJlZntPYmpmaWxlcyBJbiBQeXRob259KS4gIFRoaXMgY2FuIGJlIHVz ZWZ1bCBmb3IKLS1yZWdpc3RlcmluZyBvYmpmaWxlLXNwZWNpZmljIHByZXR0eS1wcmludGVycy4K LStyZWdpc3RlcmluZyBvYmpmaWxlLXNwZWNpZmljIHByZXR0eS1wcmludGVycyBhbmQgZnJhbWUt ZmlsdGVycy4KLSAKLSBAbWVudQotICogb2JqZmlsZS1nZGIucHkgZmlsZTo6ICAgICAgICAgIFRo ZSBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5weX0gZmlsZQotQEAgLTMwMjE5LDYgKzMxMDIwLDIy IEBAIElzIHRoaXMgZ29pbmcgYXdheT8/Pz8KLSBAbm9kZSBHREIvTUkgU3RhY2sgTWFuaXB1bGF0 aW9uCi0gQHNlY3Rpb24gQHNje2dkYi9taX0gU3RhY2sgTWFuaXB1bGF0aW9uIENvbW1hbmRzCi0g Ci0rQHN1YmhlYWRpbmcgVGhlIEBjb2Rley1lbmFibGUtZnJhbWUtZmlsdGVyc30gQ29tbWFuZAot K0BmaW5kZXggLWVuYWJsZS1mcmFtZS1maWx0ZXJzCi0rCi0rQHNtYWxsZXhhbXBsZQotKy1lbmFi bGUtZnJhbWUtZmlsdGVycwotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0rQHZhbHVle0dEQk59IGFs bG93cyBQeXRob24tYmFzZWQgZnJhbWUgZmlsdGVycyB0byBhZmZlY3QgdGhlIG91dHB1dCBvZgot K3RoZSBNSSBjb21tYW5kcyByZWxhdGluZyB0byBzdGFjayB0cmFjZXMuICBBcyB0aGVyZSBpcyBu byB3YXkgdG8KLStpbXBsZW1lbnQgdGhpcyBpbiBhIGZ1bGx5IGJhY2t3YXJkLWNvbXBhdGlibGUg d2F5LCBhIGZyb250IGVuZCBtdXN0Ci0rcmVxdWVzdCB0aGF0IHRoaXMgZnVuY3Rpb25hbGl0eSBi ZSBlbmFibGVkLgotKwotK09uY2UgZW5hYmxlZCwgdGhpcyBmZWF0dXJlIGNhbm5vdCBiZSBkaXNh YmxlZC4KLSsKLStOb3RlIHRoYXQgaWYgUHl0aG9uIHN1cHBvcnQgaGFzIG5vdCBiZWVuIGNvbXBp bGVkIGludG8gQHZhbHVle0dEQk59LAotK3RoaXMgY29tbWFuZCB3aWxsIHN0aWxsIHN1Y2NlZWQg KGFuZCBkbyBub3RoaW5nKS4KLSAKLSBAc3ViaGVhZGluZyBUaGUgQGNvZGV7LXN0YWNrLWluZm8t ZnJhbWV9IENvbW1hbmQKLSBAZmluZGV4IC1zdGFjay1pbmZvLWZyYW1lCi1AQCAtMzAyODYsMTMg KzMxMTAzLDE0IEBAIEZvciBhIHN0YWNrIHdpdGggZnJhbWUgbGV2ZWxzIDAgdGhyb3VnaAotIChn ZGIpCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLStAYW5jaG9yey1zdGFjay1saXN0LWFyZ3VtZW50 c30KLSBAc3ViaGVhZGluZyBUaGUgQGNvZGV7LXN0YWNrLWxpc3QtYXJndW1lbnRzfSBDb21tYW5k Ci0gQGZpbmRleCAtc3RhY2stbGlzdC1hcmd1bWVudHMKLSAKLSBAc3Vic3ViaGVhZGluZyBTeW5v cHNpcwotIAotIEBzbWFsbGV4YW1wbGUKLS0gLXN0YWNrLWxpc3QtYXJndW1lbnRzIEB2YXJ7cHJp bnQtdmFsdWVzfQotKyAtc3RhY2stbGlzdC1hcmd1bWVudHMgWyAtLW5vLWZyYW1lLWZpbHRlcnMg XSBAdmFye3ByaW50LXZhbHVlc30KLSAgICAgWyBAdmFye2xvdy1mcmFtZX0gQHZhcntoaWdoLWZy YW1lfSBdCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLUBAIC0zMDMwOSw3ICszMTEyNyw5IEBAIElm IEB2YXJ7cHJpbnQtdmFsdWVzfSBpcyAwIG9yIEBjb2Rley0tbm8KLSB0aGUgdmFyaWFibGVzOyBp ZiBpdCBpcyAxIG9yIEBjb2Rley0tYWxsLXZhbHVlc30sIHByaW50IGFsc28gdGhlaXIKLSB2YWx1 ZXM7IGFuZCBpZiBpdCBpcyAyIG9yIEBjb2Rley0tc2ltcGxlLXZhbHVlc30sIHByaW50IHRoZSBu YW1lLAotIHR5cGUgYW5kIHZhbHVlIGZvciBzaW1wbGUgZGF0YSB0eXBlcywgYW5kIHRoZSBuYW1l IGFuZCB0eXBlIGZvciBhcnJheXMsCi0tc3RydWN0dXJlcyBhbmQgdW5pb25zLgotK3N0cnVjdHVy ZXMgYW5kIHVuaW9ucy4gIElmIHRoZSBvcHRpb24gQGNvZGV7LS1uby1mcmFtZS1maWx0ZXJzfSBp cwotK3N1cHBsaWVkLCB0aGVuIFB5dGhvbiBmcmFtZSBmaWx0ZXJzIHdpbGwgbm90IGJlIGV4ZWN1 dGVkLgotKwotIAotIFVzZSBvZiB0aGlzIGNvbW1hbmQgdG8gb2J0YWluIGFyZ3VtZW50cyBpbiBh IHNpbmdsZSBmcmFtZSBpcwotIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlIEBzYW1wey1zdGFj ay1saXN0LXZhcmlhYmxlc30gY29tbWFuZC4KLUBAIC0zMDM4MCwxMyArMzEyMDAsMTQgQEAgYXJn cz1bQHtuYW1lPSJpbnRhcmciLHZhbHVlPSIyIkB9LAotIEBjIEBzdWJoZWFkaW5nIC1zdGFjay1s aXN0LWV4Y2VwdGlvbi1oYW5kbGVycwotIAotIAotK0BhbmNob3J7LXN0YWNrLWxpc3QtZnJhbWVz fQotIEBzdWJoZWFkaW5nIFRoZSBAY29kZXstc3RhY2stbGlzdC1mcmFtZXN9IENvbW1hbmQKLSBA ZmluZGV4IC1zdGFjay1saXN0LWZyYW1lcwotIAotIEBzdWJzdWJoZWFkaW5nIFN5bm9wc2lzCi0g Ci0gQHNtYWxsZXhhbXBsZQotLSAtc3RhY2stbGlzdC1mcmFtZXMgWyBAdmFye2xvdy1mcmFtZX0g QHZhcntoaWdoLWZyYW1lfSBdCi0rIC1zdGFjay1saXN0LWZyYW1lcyBbIC0tbm8tZnJhbWUtZmls dGVycyBAdmFye2xvdy1mcmFtZX0gQHZhcntoaWdoLWZyYW1lfSBdCi0gQGVuZCBzbWFsbGV4YW1w bGUKLSAKLSBMaXN0IHRoZSBmcmFtZXMgY3VycmVudGx5IG9uIHRoZSBzdGFjay4gIEZvciBlYWNo IGZyYW1lIGl0IGRpc3BsYXlzIHRoZQotQEAgLTMwNDE2LDcgKzMxMjM3LDkgQEAgbGV2ZWxzIGFy ZSBiZXR3ZWVuIHRoZSB0d28gYXJndW1lbnRzIChpbgotIGFyZSBlcXVhbCwgaXQgc2hvd3MgdGhl IHNpbmdsZSBmcmFtZSBhdCB0aGUgY29ycmVzcG9uZGluZyBsZXZlbC4gIEl0IGlzCi0gYW4gZXJy b3IgaWYgQHZhcntsb3ctZnJhbWV9IGlzIGxhcmdlciB0aGFuIHRoZSBhY3R1YWwgbnVtYmVyIG9m Ci0gZnJhbWVzLiAgT24gdGhlIG90aGVyIGhhbmQsIEB2YXJ7aGlnaC1mcmFtZX0gbWF5IGJlIGxh cmdlciB0aGFuIHRoZQotLWFjdHVhbCBudW1iZXIgb2YgZnJhbWVzLCBpbiB3aGljaCBjYXNlIG9u bHkgZXhpc3RpbmcgZnJhbWVzIHdpbGwgYmUgcmV0dXJuZWQuCi0rYWN0dWFsIG51bWJlciBvZiBm cmFtZXMsIGluIHdoaWNoIGNhc2Ugb25seSBleGlzdGluZyBmcmFtZXMgd2lsbCBiZQotK3JldHVy bmVkLiAgSWYgdGhlIG9wdGlvbiBAY29kZXstLW5vLWZyYW1lLWZpbHRlcnN9IGlzIHN1cHBsaWVk LCB0aGVuCi0rUHl0aG9uIGZyYW1lIGZpbHRlcnMgd2lsbCBub3QgYmUgZXhlY3V0ZWQuCi0gCi0g QHN1YnN1YmhlYWRpbmcgQHZhbHVle0dEQk59IENvbW1hbmQKLSAKLUBAIC0zMDQ4NiwxMSArMzEz MDksMTIgQEAgU2hvdyBhIHNpbmdsZSBmcmFtZToKLSAKLSBAc3ViaGVhZGluZyBUaGUgQGNvZGV7 LXN0YWNrLWxpc3QtbG9jYWxzfSBDb21tYW5kCi0gQGZpbmRleCAtc3RhY2stbGlzdC1sb2NhbHMK LStAYW5jaG9yey1zdGFjay1saXN0LWxvY2Fsc30KLSAKLSBAc3Vic3ViaGVhZGluZyBTeW5vcHNp cwotIAotIEBzbWFsbGV4YW1wbGUKLS0gLXN0YWNrLWxpc3QtbG9jYWxzIEB2YXJ7cHJpbnQtdmFs dWVzfQotKyAtc3RhY2stbGlzdC1sb2NhbHMgWyAtLW5vLWZyYW1lLWZpbHRlcnMgXSBAdmFye3By aW50LXZhbHVlc30KLSBAZW5kIHNtYWxsZXhhbXBsZQotIAotIERpc3BsYXkgdGhlIGxvY2FsIHZh cmlhYmxlIG5hbWVzIGZvciB0aGUgc2VsZWN0ZWQgZnJhbWUuICBJZgotQEAgLTMwNTAxLDcgKzMx MzI1LDggQEAgdHlwZSBhbmQgdmFsdWUgZm9yIHNpbXBsZSBkYXRhIHR5cGVzLCBhbgotIHN0cnVj dHVyZXMgYW5kIHVuaW9ucy4gIEluIHRoaXMgbGFzdCBjYXNlLCBhIGZyb250ZW5kIGNhbiBpbW1l ZGlhdGVseQotIGRpc3BsYXkgdGhlIHZhbHVlIG9mIHNpbXBsZSBkYXRhIHR5cGVzIGFuZCBjcmVh dGUgdmFyaWFibGUgb2JqZWN0cyBmb3IKLSBvdGhlciBkYXRhIHR5cGVzIHdoZW4gdGhlIHVzZXIg d2lzaGVzIHRvIGV4cGxvcmUgdGhlaXIgdmFsdWVzIGluCi0tbW9yZSBkZXRhaWwuCi0rbW9yZSBk ZXRhaWwuICBJZiB0aGUgb3B0aW9uIEBjb2Rley0tbm8tZnJhbWUtZmlsdGVyc30gaXMgc3VwcGxp ZWQsIHRoZW4KLStQeXRob24gZnJhbWUgZmlsdGVycyB3aWxsIG5vdCBiZSBleGVjdXRlZC4KLSAK LSBUaGlzIGNvbW1hbmQgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0aGUKLSBAc2FtcHstc3Rh Y2stbGlzdC12YXJpYWJsZXN9IGNvbW1hbmQuCi1AQCAtMzA1MjYsMTMgKzMxMzUxLDE0IEBAIFRo aXMgY29tbWFuZCBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHQKLSAoZ2RiKQotIEBlbmQgc21h bGxleGFtcGxlCi0gCi0rQGFuY2hvcnstc3RhY2stbGlzdC12YXJpYWJsZXN9Ci0gQHN1YmhlYWRp bmcgVGhlIEBjb2Rley1zdGFjay1saXN0LXZhcmlhYmxlc30gQ29tbWFuZAotIEBmaW5kZXggLXN0 YWNrLWxpc3QtdmFyaWFibGVzCi0gCi0gQHN1YnN1YmhlYWRpbmcgU3lub3BzaXMKLSAKLSBAc21h bGxleGFtcGxlCi0tIC1zdGFjay1saXN0LXZhcmlhYmxlcyBAdmFye3ByaW50LXZhbHVlc30KLSsg LXN0YWNrLWxpc3QtdmFyaWFibGVzIFsgLS1uby1mcmFtZS1maWx0ZXJzIF0gQHZhcntwcmludC12 YWx1ZXN9Ci0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLSBEaXNwbGF5IHRoZSBuYW1lcyBvZiBsb2Nh bCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9uIGFyZ3VtZW50cyBmb3IgdGhlIHNlbGVjdGVkIGZyYW1l LiAgSWYKLUBAIC0zMDU0MCw3ICszMTM2Niw4IEBAIERpc3BsYXkgdGhlIG5hbWVzIG9mIGxvY2Fs IHZhcmlhYmxlcyBhbmQKLSB0aGUgdmFyaWFibGVzOyBpZiBpdCBpcyAxIG9yIEBjb2Rley0tYWxs LXZhbHVlc30sIHByaW50IGFsc28gdGhlaXIKLSB2YWx1ZXM7IGFuZCBpZiBpdCBpcyAyIG9yIEBj b2Rley0tc2ltcGxlLXZhbHVlc30sIHByaW50IHRoZSBuYW1lLAotIHR5cGUgYW5kIHZhbHVlIGZv ciBzaW1wbGUgZGF0YSB0eXBlcywgYW5kIHRoZSBuYW1lIGFuZCB0eXBlIGZvciBhcnJheXMsCi0t c3RydWN0dXJlcyBhbmQgdW5pb25zLiAgCi0rc3RydWN0dXJlcyBhbmQgdW5pb25zLiAgSWYgdGhl IG9wdGlvbiBAY29kZXstLW5vLWZyYW1lLWZpbHRlcnN9IGlzCi0rc3VwcGxpZWQsIHRoZW4gUHl0 aG9uIGZyYW1lIGZpbHRlcnMgd2lsbCBub3QgYmUgZXhlY3V0ZWQuCi0gCi0gQHN1YnN1YmhlYWRp bmcgRXhhbXBsZQotIAotSW5kZXg6IGdkYi03LjYvZ2RiL21pL21pLWNtZC1zdGFjay5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9taS9taS1jbWQtc3RhY2suYwkyMDEzLTA2LTEw IDE0OjMxOjAyLjczMDA4NDY1MiArMDIwMAotKysrIGdkYi03LjYvZ2RiL21pL21pLWNtZC1zdGFj ay5jCTIwMTMtMDYtMTAgMTQ6MzE6MDguMzY1MDgyNDM3ICswMjAwCi1AQCAtMzEsNiArMzEsMTAg QEAKLSAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKLSAjaW5jbHVkZSAidmFscHJpbnQuaCIKLSAjaW5j bHVkZSAiZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJ1dGlscy5oIgotKyNpbmNsdWRlICJtaS1n ZXRvcHQuaCIKLSsjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgotKyNpbmNsdWRlIDxjdHlwZS5o PgotIAotIGVudW0gd2hhdF90b19saXN0IHsgbG9jYWxzLCBhcmd1bWVudHMsIGFsbCB9OwotIAot QEAgLTM4LDYgKzQyLDI4IEBAIHN0YXRpYyB2b2lkIGxpc3RfYXJnc19vcl9sb2NhbHMgKGVudW0g d2gKLSAJCQkJIGVudW0gcHJpbnRfdmFsdWVzIHZhbHVlcywKLSAJCQkJIHN0cnVjdCBmcmFtZV9p bmZvICpmaSk7Ci0gCi0rLyogVHJ1ZSBpZiB3ZSB3YW50IHRvIGFsbG93IFB5dGhvbi1iYXNlZCBm cmFtZSBmaWx0ZXJzLiAgKi8KLStzdGF0aWMgaW50IGZyYW1lX2ZpbHRlcnMgPSAwOwotKwotK3Zv aWQKLSttaV9jbWRfZW5hYmxlX2ZyYW1lX2ZpbHRlcnMgKGNoYXIgKmNvbW1hbmQsIGNoYXIgKiph cmd2LCBpbnQgYXJnYykKLSt7Ci0rICBpZiAoYXJnYyAhPSAwKQotKyAgICBlcnJvciAoXygiLWVu YWJsZS1mcmFtZS1maWx0ZXJzOiBubyBhcmd1bWVudHMgYWxsb3dlZCIpKTsKLSsgIGZyYW1lX2Zp bHRlcnMgPSAxOwotK30KLSsKLSsvKiBQYXJzZSB0aGUgLS1uby1mcmFtZS1maWx0ZXJzIG9wdGlv biBpbiBjb21tYW5kcyB3aGVyZSB3ZSBjYW5ub3QgdXNlCi0rICAgbWlfZ2V0b3B0LiAqLwotK3N0 YXRpYyBpbnQKLStwYXJzZV9ub19mcmFtZXNfb3B0aW9uIChjb25zdCBjaGFyICphcmcpCi0rewot KyAgaWYgKGFyZyAmJiAoc3RyY21wIChhcmcsICItLW5vLWZyYW1lLWZpbHRlcnMiKSA9PSAwKSkK LSsgICAgcmV0dXJuIDE7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0gLyogUHJpbnQgYSBsaXN0 IG9mIHRoZSBzdGFjayBmcmFtZXMuICBBcmdzIGNhbiBiZSBub25lLCBpbiB3aGljaCBjYXNlCi0g ICAgd2Ugd2FudCB0byBwcmludCB0aGUgd2hvbGUgYmFja3RyYWNlLCBvciBhIHBhaXIgb2YgbnVt YmVycwotICAgIHNwZWNpZnlpbmcgdGhlIGZyYW1lIG51bWJlcnMgYXQgd2hpY2ggdG8gc3RhcnQg YW5kIHN0b3AgdGhlCi1AQCAtNTIsMTQgKzc4LDQ2IEBAIG1pX2NtZF9zdGFja19saXN0X2ZyYW1l cyAoY2hhciAqY29tbWFuZCwKLSAgIGludCBpOwotICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBf c3RhY2s7Ci0gICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZmk7Ci0rICBlbnVtIHB5X2J0X3N0YXR1cyBy ZXN1bHQgPSBQWV9CVF9FUlJPUjsKLSsgIGludCByYXdfYXJnID0gMDsKLSsgIGludCBvaW5kID0g MDsKLSsgIGVudW0gb3B0Ci0rICAgIHsKLSsgICAgICBOT19GUkFNRV9GSUxURVJTCi0rICAgIH07 Ci0rICBzdGF0aWMgY29uc3Qgc3RydWN0IG1pX29wdCBvcHRzW10gPQotKyAgICB7Ci0rICAgICAg eyItbm8tZnJhbWUtZmlsdGVycyIsIE5PX0ZSQU1FX0ZJTFRFUlMsIDB9LAotKyAgICAgIHsgMCwg MCwgMCB9Ci0rICAgIH07Ci0rCi0rICAvKiBQYXJzZSBhcmd1bWVudHMuICBJbiB0aGlzIGluc3Rh bmNlIHdlIGFyZSBqdXN0IGxvb2tpbmcgZm9yCi0rICAgICAtLW5vLWZyYW1lLWZpbHRlcnMuICAq LwotKyAgd2hpbGUgKDEpCi0rICAgIHsKLSsgICAgICBjaGFyICpvYXJnOwotKyAgICAgIGludCBv cHQgPSBtaV9nZXRvcHQgKCItc3RhY2stbGlzdC1mcmFtZXMiLCBhcmdjLCBhcmd2LAotKwkJCSAg IG9wdHMsICZvaW5kLCAmb2FyZyk7Ci0rICAgICAgaWYgKG9wdCA8IDApCi0rCWJyZWFrOwotKyAg ICAgIHN3aXRjaCAoKGVudW0gb3B0KSBvcHQpCi0rCXsKLSsJY2FzZSBOT19GUkFNRV9GSUxURVJT OgotKwkgIHJhd19hcmcgPSBvaW5kOwotKwkgIGJyZWFrOwotKwl9Ci0rICAgIH0KLSAKLS0gIGlm IChhcmdjID4gMiB8fCBhcmdjID09IDEpCi0tICAgIGVycm9yIChfKCItc3RhY2stbGlzdC1mcmFt ZXM6IFVzYWdlOiBbRlJBTUVfTE9XIEZSQU1FX0hJR0hdIikpOwotKyAgLyogQWZ0ZXIgdGhlIGxh c3Qgb3B0aW9uIGlzIHBhcnNlZCwgdGhlcmUgc2hvdWxkIGVpdGhlciBiZSBsb3cgLQotKyAgICAg aGlnaCByYW5nZSwgb3Igbm8gZnVydGhlciBhcmd1bWVudHMuICAqLwotKyAgaWYgKChhcmdjIC0g b2luZCAhPSAwKSAmJiAoYXJnYyAtIG9pbmQgIT0gMikpCi0rICAgIGVycm9yIChfKCItc3RhY2st bGlzdC1mcmFtZXM6IFVzYWdlOiBbLS1uby1mcmFtZS1maWx0ZXJzXSBbRlJBTUVfTE9XIEZSQU1F X0hJR0hdIikpOwotIAotLSAgaWYgKGFyZ2MgPT0gMikKLSsgIC8qIElmIHRoZXJlIGlzIGEgcmFu Z2UsIHNldCBpdC4gICovCi0rICBpZiAoYXJnYyAtIG9pbmQgPT0gMikKLSAgICAgewotLSAgICAg IGZyYW1lX2xvdyA9IGF0b2kgKGFyZ3ZbMF0pOwotLSAgICAgIGZyYW1lX2hpZ2ggPSBhdG9pIChh cmd2WzFdKTsKLSsgICAgICBmcmFtZV9sb3cgPSBhdG9pIChhcmd2WzAgKyBvaW5kXSk7Ci0rICAg ICAgZnJhbWVfaGlnaCA9IGF0b2kgKGFyZ3ZbMSArIG9pbmRdKTsKLSAgICAgfQotICAgZWxzZQot ICAgICB7Ci1AQCAtODEsMTYgKzEzOSwzNyBAQCBtaV9jbWRfc3RhY2tfbGlzdF9mcmFtZXMgKGNo YXIgKmNvbW1hbmQsCi0gCi0gICBjbGVhbnVwX3N0YWNrID0gbWFrZV9jbGVhbnVwX3VpX291dF9s aXN0X2JlZ2luX2VuZCAoY3VycmVudF91aW91dCwgInN0YWNrIik7Ci0gCi0tICAvKiBOb3cgbGV0 J3MgcHJpbnQgdGhlIGZyYW1lcyB1cCB0byBmcmFtZV9oaWdoLCBvciB1bnRpbCB0aGVyZSBhcmUK LS0gICAgIGZyYW1lcyBpbiB0aGUgc3RhY2suICAqLwotLSAgZm9yICg7Ci0tICAgICAgIGZpICYm IChpIDw9IGZyYW1lX2hpZ2ggfHwgZnJhbWVfaGlnaCA9PSAtMSk7Ci0tICAgICAgIGkrKywgZmkg PSBnZXRfcHJldl9mcmFtZSAoZmkpKQotKyAgaWYgKCEgcmF3X2FyZyAmJiBmcmFtZV9maWx0ZXJz KQotICAgICB7Ci0tICAgICAgUVVJVDsKLS0gICAgICAvKiBQcmludCB0aGUgbG9jYXRpb24gYW5k IHRoZSBhZGRyZXNzIGFsd2F5cywgZXZlbiBmb3IgbGV2ZWwgMC4KLS0gICAgICAgICBJZiBhcmdz IGlzIDAsIGRvbid0IHByaW50IHRoZSBhcmd1bWVudHMuICAqLwotLSAgICAgIHByaW50X2ZyYW1l X2luZm8gKGZpLCAxLCBMT0NfQU5EX0FERFJFU1MsIDAgLyogYXJncyAqLyApOwotKyAgICAgIGlu dCBmbGFncyA9IFBSSU5UX0xFVkVMIHwgUFJJTlRfRlJBTUVfSU5GTzsKLSsgICAgICBpbnQgcHlf ZnJhbWVfbG93ID0gZnJhbWVfbG93OwotKwotKyAgICAgIC8qIFdlIGNhbm5vdCBwYXNzIC0xIHRv IGZyYW1lX2xvdywgYXMgdGhhdCB3b3VsZCBzaWduaWZ5IGEKLSsgICAgICByZWxhdGl2ZSBiYWNr dHJhY2UgZnJvbSB0aGUgdGFpbCBvZiB0aGUgc3RhY2suICBTbywgaW4gdGhlIGNhc2UKLSsgICAg ICBvZiBmcmFtZV9sb3cgPT0gLTEsIGFzc2lnbiBhbmQgaW5jcmVtZW50IGl0LiAgKi8KLSsgICAg ICBpZiAocHlfZnJhbWVfbG93ID09IC0xKQotKwlweV9mcmFtZV9sb3crKzsKLSsKLSsgICAgICBy ZXN1bHQgPSBhcHBseV9mcmFtZV9maWx0ZXIgKGdldF9jdXJyZW50X2ZyYW1lICgpLCBmbGFncywK LSsJCQkJICAgTk9fVkFMVUVTLCAgY3VycmVudF91aW91dCwKLSsJCQkJICAgcHlfZnJhbWVfbG93 LCBmcmFtZV9oaWdoKTsKLSsgICAgfQotKwotKyAgLyogUnVuIHRoZSBpbmJ1aWx0IGJhY2t0cmFj ZSBpZiB0aGVyZSBhcmUgbm8gZmlsdGVycyByZWdpc3RlcmVkLCBvcgotKyAgICAgaWYgIi0tbm8t ZnJhbWUtZmlsdGVycyIgaGFzIGJlZW4gc3BlY2lmaWVkIGZyb20gdGhlIGNvbW1hbmQuICAqLwot KyAgaWYgKCEgZnJhbWVfZmlsdGVycyB8fCByYXdfYXJnICB8fCByZXN1bHQgPT0gUFlfQlRfTk9f RklMVEVSUykKLSsgICAgewotKyAgICAgIC8qIE5vdyBsZXQncyBwcmludCB0aGUgZnJhbWVzIHVw IHRvIGZyYW1lX2hpZ2gsIG9yIHVudGlsIHRoZXJlIGFyZQotKwkgZnJhbWVzIGluIHRoZSBzdGFj ay4gICovCi0rICAgICAgZm9yICg7Ci0rCSAgIGZpICYmIChpIDw9IGZyYW1lX2hpZ2ggfHwgZnJh bWVfaGlnaCA9PSAtMSk7Ci0rCSAgIGkrKywgZmkgPSBnZXRfcHJldl9mcmFtZSAoZmkpKQotKwl7 Ci0rCSAgUVVJVDsKLSsJICAvKiBQcmludCB0aGUgbG9jYXRpb24gYW5kIHRoZSBhZGRyZXNzIGFs d2F5cywgZXZlbiBmb3IgbGV2ZWwgMC4KLSsJICAgICBJZiBhcmdzIGlzIDAsIGRvbid0IHByaW50 IHRoZSBhcmd1bWVudHMuICAqLwotKwkgIHByaW50X2ZyYW1lX2luZm8gKGZpLCAxLCBMT0NfQU5E X0FERFJFU1MsIDAgLyogYXJncyAqLyApOwotKwl9Ci0gICAgIH0KLSAKLSAgIGRvX2NsZWFudXBz IChjbGVhbnVwX3N0YWNrKTsKLUBAIC0xNDcsMTMgKzIyNiwzNCBAQCB2b2lkCi0gbWlfY21kX3N0 YWNrX2xpc3RfbG9jYWxzIChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50IGFyZ2MpCi0g ewotICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lOwotKyAgaW50IHJhd19hcmcgPSAwOwotKyAg ZW51bSBweV9idF9zdGF0dXMgcmVzdWx0ID0gUFlfQlRfRVJST1I7Ci0rICBpbnQgcHJpbnRfdmFs dWU7Ci0rCi0rICBpZiAoYXJnYyA+IDApCi0rICAgIHJhd19hcmcgPSBwYXJzZV9ub19mcmFtZXNf b3B0aW9uIChhcmd2WzBdKTsKLSsKLSsgIGlmIChhcmdjIDwgMSB8fCBhcmdjID4gMiB8fCAoYXJn YyA9PSAyICYmICEgcmF3X2FyZykKLSsgICAgICB8fCAoYXJnYyA9PSAxICYmIHJhd19hcmcpKQot KyAgICBlcnJvciAoXygiLXN0YWNrLWxpc3QtbG9jYWxzOiBVc2FnZTogWy0tbm8tZnJhbWUtZmls dGVyc10gUFJJTlRfVkFMVUVTIikpOwotIAotLSAgaWYgKGFyZ2MgIT0gMSkKLS0gICAgZXJyb3Ig KF8oIi1zdGFjay1saXN0LWxvY2FsczogVXNhZ2U6IFBSSU5UX1ZBTFVFUyIpKTsKLS0KLS0gICBm cmFtZSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoTlVMTCk7Ci0rICBmcmFtZSA9IGdldF9zZWxlY3Rl ZF9mcmFtZSAoTlVMTCk7Ci0rICBwcmludF92YWx1ZSA9IHBhcnNlX3ByaW50X3ZhbHVlcyAoYXJn dltyYXdfYXJnXSk7Ci0gCi0tICAgbGlzdF9hcmdzX29yX2xvY2FscyAobG9jYWxzLCBwYXJzZV9w cmludF92YWx1ZXMgKGFyZ3ZbMF0pLCBmcmFtZSk7Ci0rICAgaWYgKCEgcmF3X2FyZyAmJiBmcmFt ZV9maWx0ZXJzKQotKyAgICAgewotKyAgICAgICBpbnQgZmxhZ3MgPSBQUklOVF9MRVZFTCB8IFBS SU5UX0xPQ0FMUzsKLSsKLSsgICAgICAgcmVzdWx0ID0gYXBwbHlfZnJhbWVfZmlsdGVyIChmcmFt ZSwgZmxhZ3MsIHByaW50X3ZhbHVlLAotKwkJCQkgICAgY3VycmVudF91aW91dCwgMCwgMCk7Ci0r ICAgICB9Ci0rCi0rICAgLyogUnVuIHRoZSBpbmJ1aWx0IGJhY2t0cmFjZSBpZiB0aGVyZSBhcmUg bm8gZmlsdGVycyByZWdpc3RlcmVkLCBvcgotKyAgICAgIGlmICItLW5vLWZyYW1lLWZpbHRlcnMi IGhhcyBiZWVuIHNwZWNpZmllZCBmcm9tIHRoZSBjb21tYW5kLiAgKi8KLSsgICBpZiAoISBmcmFt ZV9maWx0ZXJzIHx8IHJhd19hcmcgIHx8IHJlc3VsdCA9PSBQWV9CVF9OT19GSUxURVJTKQotKyAg ICAgewotKyAgICAgICBsaXN0X2FyZ3Nfb3JfbG9jYWxzIChsb2NhbHMsIHByaW50X3ZhbHVlLCBm cmFtZSk7Ci0rICAgICB9Ci0gfQotIAotIC8qIFByaW50IGEgbGlzdCBvZiB0aGUgYXJndW1lbnRz IGZvciB0aGUgY3VycmVudCBmcmFtZS4gIFdpdGggYXJndW1lbnQKLUBAIC0xNzAsMTUgKzI3MCwy MCBAQCBtaV9jbWRfc3RhY2tfbGlzdF9hcmdzIChjaGFyICpjb21tYW5kLCBjCi0gICBzdHJ1Y3Qg Y2xlYW51cCAqY2xlYW51cF9zdGFja19hcmdzOwotICAgZW51bSBwcmludF92YWx1ZXMgcHJpbnRf dmFsdWVzOwotICAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OwotKyAgaW50 IHJhd19hcmcgPSAwOwotKyAgZW51bSBweV9idF9zdGF0dXMgcmVzdWx0ID0gUFlfQlRfRVJST1I7 Ci0gCi0tICBpZiAoYXJnYyA8IDEgfHwgYXJnYyA+IDMgfHwgYXJnYyA9PSAyKQotLSAgICBlcnJv ciAoXygiLXN0YWNrLWxpc3QtYXJndW1lbnRzOiBVc2FnZTogIgotLQkgICAgICJQUklOVF9WQUxV RVMgW0ZSQU1FX0xPVyBGUkFNRV9ISUdIXSIpKTsKLSsgIGlmIChhcmdjID4gMCkKLSsgICAgcmF3 X2FyZyA9IHBhcnNlX25vX2ZyYW1lc19vcHRpb24gKGFyZ3ZbMF0pOwotIAotLSAgaWYgKGFyZ2Mg PT0gMykKLSsgIGlmIChhcmdjIDwgMSB8fCAoYXJnYyA+IDMgJiYgISByYXdfYXJnKSB8fCAoYXJn YyA9PSAyICYmICEgcmF3X2FyZykpCi0rICAgIGVycm9yIChfKCItc3RhY2stbGlzdC1hcmd1bWVu dHM6IFVzYWdlOiAiIFwKLSsJICAgICAiWy0tbm8tZnJhbWUtZmlsdGVyc10gUFJJTlRfVkFMVUVT IFtGUkFNRV9MT1cgRlJBTUVfSElHSF0iKSk7Ci0rCi0rICBpZiAoYXJnYyA+PSAzKQotICAgICB7 Ci0tICAgICAgZnJhbWVfbG93ID0gYXRvaSAoYXJndlsxXSk7Ci0tICAgICAgZnJhbWVfaGlnaCA9 IGF0b2kgKGFyZ3ZbMl0pOwotKyAgICAgIGZyYW1lX2xvdyA9IGF0b2kgKGFyZ3ZbMSArIHJhd19h cmddKTsKLSsgICAgICBmcmFtZV9oaWdoID0gYXRvaSAoYXJndlsyICsgcmF3X2FyZ10pOwotICAg ICB9Ci0gICBlbHNlCi0gICAgIHsKLUBAIC0xODgsNyArMjkzLDcgQEAgbWlfY21kX3N0YWNrX2xp c3RfYXJncyAoY2hhciAqY29tbWFuZCwgYwotICAgICAgIGZyYW1lX2hpZ2ggPSAtMTsKLSAgICAg fQotIAotLSAgcHJpbnRfdmFsdWVzID0gcGFyc2VfcHJpbnRfdmFsdWVzIChhcmd2WzBdKTsKLSsg IHByaW50X3ZhbHVlcyA9IHBhcnNlX3ByaW50X3ZhbHVlcyAoYXJndltyYXdfYXJnXSk7Ci0gCi0g ICAvKiBMZXQncyBwb3NpdGlvbiBmaSBvbiB0aGUgZnJhbWUgYXQgd2hpY2ggdG8gc3RhcnQgdGhl Ci0gICAgICBkaXNwbGF5LiBDb3VsZCBiZSB0aGUgaW5uZXJtb3N0IGZyYW1lIGlmIHRoZSB3aG9s ZSBzdGFjayBuZWVkcwotQEAgLTIwMywyMSArMzA4LDQxIEBAIG1pX2NtZF9zdGFja19saXN0X2Fy Z3MgKGNoYXIgKmNvbW1hbmQsIGMKLSAgIGNsZWFudXBfc3RhY2tfYXJncwotICAgICA9IG1ha2Vf Y2xlYW51cF91aV9vdXRfbGlzdF9iZWdpbl9lbmQgKHVpb3V0LCAic3RhY2stYXJncyIpOwotIAot LSAgLyogTm93IGxldCdzIHByaW50IHRoZSBmcmFtZXMgdXAgdG8gZnJhbWVfaGlnaCwgb3IgdW50 aWwgdGhlcmUgYXJlCi0tICAgICBmcmFtZXMgaW4gdGhlIHN0YWNrLiAgKi8KLS0gIGZvciAoOwot LSAgICAgICBmaSAmJiAoaSA8PSBmcmFtZV9oaWdoIHx8IGZyYW1lX2hpZ2ggPT0gLTEpOwotLSAg ICAgICBpKyssIGZpID0gZ2V0X3ByZXZfZnJhbWUgKGZpKSkKLSsgIGlmICghIHJhd19hcmcgJiYg ZnJhbWVfZmlsdGVycykKLSAgICAgewotLSAgICAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwX2Zy YW1lOwotKyAgICAgIGludCBmbGFncyA9IFBSSU5UX0xFVkVMIHwgUFJJTlRfQVJHUzsKLSsgICAg ICBpbnQgcHlfZnJhbWVfbG93ID0gZnJhbWVfbG93OwotIAotLSAgICAgIFFVSVQ7Ci0tICAgICAg Y2xlYW51cF9mcmFtZSA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91 dCwgImZyYW1lIik7Ci0tICAgICAgdWlfb3V0X2ZpZWxkX2ludCAodWlvdXQsICJsZXZlbCIsIGkp OwotLSAgICAgIGxpc3RfYXJnc19vcl9sb2NhbHMgKGFyZ3VtZW50cywgcHJpbnRfdmFsdWVzLCBm aSk7Ci0tICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBfZnJhbWUpOwotKyAgICAgIC8qIFdlIGNh bm5vdCBwYXNzIC0xIHRvIGZyYW1lX2xvdywgYXMgdGhhdCB3b3VsZCBzaWduaWZ5IGEKLSsgICAg ICByZWxhdGl2ZSBiYWNrdHJhY2UgZnJvbSB0aGUgdGFpbCBvZiB0aGUgc3RhY2suICBTbywgaW4g dGhlIGNhc2UKLSsgICAgICBvZiBmcmFtZV9sb3cgPT0gLTEsIGFzc2lnbiBhbmQgaW5jcmVtZW50 IGl0LiAgKi8KLSsgICAgICBpZiAocHlfZnJhbWVfbG93ID09IC0xKQotKwlweV9mcmFtZV9sb3cr KzsKLSsKLSsgICAgICByZXN1bHQgPSBhcHBseV9mcmFtZV9maWx0ZXIgKGdldF9jdXJyZW50X2Zy YW1lICgpLCBmbGFncywKLSsJCQkJICAgcHJpbnRfdmFsdWVzLCBjdXJyZW50X3Vpb3V0LAotKwkJ CQkgICBweV9mcmFtZV9sb3csIGZyYW1lX2hpZ2gpOwotICAgICB9Ci0gCi0rICAgICAvKiBSdW4g dGhlIGluYnVpbHQgYmFja3RyYWNlIGlmIHRoZXJlIGFyZSBubyBmaWx0ZXJzIHJlZ2lzdGVyZWQs IG9yCi0rICAgICAgaWYgIi0tbm8tZnJhbWUtZmlsdGVycyIgaGFzIGJlZW4gc3BlY2lmaWVkIGZy b20gdGhlIGNvbW1hbmQuICAqLwotKyAgIGlmICghIGZyYW1lX2ZpbHRlcnMgfHwgcmF3X2FyZyAg fHwgcmVzdWx0ID09IFBZX0JUX05PX0ZJTFRFUlMpCi0rICAgICB7Ci0rICAgICAgLyogTm93IGxl dCdzIHByaW50IHRoZSBmcmFtZXMgdXAgdG8gZnJhbWVfaGlnaCwgb3IgdW50aWwgdGhlcmUgYXJl Ci0rCSBmcmFtZXMgaW4gdGhlIHN0YWNrLiAgKi8KLSsgICAgICBmb3IgKDsKLSsJICAgZmkgJiYg KGkgPD0gZnJhbWVfaGlnaCB8fCBmcmFtZV9oaWdoID09IC0xKTsKLSsJICAgaSsrLCBmaSA9IGdl dF9wcmV2X2ZyYW1lIChmaSkpCi0rCXsKLSsJICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cF9mcmFt ZTsKLSsKLSsJICBRVUlUOwotKwkgIGNsZWFudXBfZnJhbWUgPSBtYWtlX2NsZWFudXBfdWlfb3V0 X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsICJmcmFtZSIpOwotKwkgIHVpX291dF9maWVsZF9pbnQg KHVpb3V0LCAibGV2ZWwiLCBpKTsKLSsJICBsaXN0X2FyZ3Nfb3JfbG9jYWxzIChhcmd1bWVudHMs IHByaW50X3ZhbHVlcywgZmkpOwotKwkgIGRvX2NsZWFudXBzIChjbGVhbnVwX2ZyYW1lKTsKLSsJ fQotKyAgICB9Ci0gICBkb19jbGVhbnVwcyAoY2xlYW51cF9zdGFja19hcmdzKTsKLSB9Ci0gCi1A QCAtMjMwLDEzICszNTUsMzUgQEAgdm9pZAotIG1pX2NtZF9zdGFja19saXN0X3ZhcmlhYmxlcyAo Y2hhciAqY29tbWFuZCwgY2hhciAqKmFyZ3YsIGludCBhcmdjKQotIHsKLSAgIHN0cnVjdCBmcmFt ZV9pbmZvICpmcmFtZTsKLSsgIGludCByYXdfYXJnID0gMDsKLSsgIGVudW0gcHlfYnRfc3RhdHVz IHJlc3VsdCA9IFBZX0JUX0VSUk9SOwotKyAgaW50IHByaW50X3ZhbHVlOwotKwotKyAgaWYgKGFy Z2MgPiAwKQotKyAgICByYXdfYXJnID0gcGFyc2Vfbm9fZnJhbWVzX29wdGlvbiAoYXJndlswXSk7 Ci0rCi0rICBpZiAoYXJnYyA8IDEgfHwgYXJnYyA+IDIgfHwgKGFyZ2MgPT0gMiAmJiAhIHJhd19h cmcpCi0rICAgICAgfHwgKGFyZ2MgPT0gMSAmJiByYXdfYXJnKSkKLSsgICAgZXJyb3IgKF8oIi1z dGFjay1saXN0LXZhcmlhYmxlczogVXNhZ2U6ICIgXAotKwkgICAgICJbLS1uby1mcmFtZS1maWx0 ZXJzXSBQUklOVF9WQUxVRVMiKSk7Ci0gCi0tICBpZiAoYXJnYyAhPSAxKQotLSAgICBlcnJvciAo XygiVXNhZ2U6IFBSSU5UX1ZBTFVFUyIpKTsKLS0KLS0gIGZyYW1lID0gZ2V0X3NlbGVjdGVkX2Zy YW1lIChOVUxMKTsKLSsgICBmcmFtZSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoTlVMTCk7Ci0rICAg cHJpbnRfdmFsdWUgPSBwYXJzZV9wcmludF92YWx1ZXMgKGFyZ3ZbcmF3X2FyZ10pOwotIAotLSAg bGlzdF9hcmdzX29yX2xvY2FscyAoYWxsLCBwYXJzZV9wcmludF92YWx1ZXMgKGFyZ3ZbMF0pLCBm cmFtZSk7Ci0rICAgaWYgKCEgcmF3X2FyZyAmJiBmcmFtZV9maWx0ZXJzKQotKyAgICAgewotKyAg ICAgICBpbnQgZmxhZ3MgPSBQUklOVF9MRVZFTCB8IFBSSU5UX0FSR1MgfCBQUklOVF9MT0NBTFM7 Ci0rCi0rICAgICAgIHJlc3VsdCA9IGFwcGx5X2ZyYW1lX2ZpbHRlciAoZnJhbWUsIGZsYWdzLCBw cmludF92YWx1ZSwKLSsJCQkJICAgIGN1cnJlbnRfdWlvdXQsIDAsIDApOwotKyAgICAgfQotKwot KyAgIC8qIFJ1biB0aGUgaW5idWlsdCBiYWNrdHJhY2UgaWYgdGhlcmUgYXJlIG5vIGZpbHRlcnMg cmVnaXN0ZXJlZCwgb3IKLSsgICAgICBpZiAiLS1uby1mcmFtZS1maWx0ZXJzIiBoYXMgYmVlbiBz cGVjaWZpZWQgZnJvbSB0aGUgY29tbWFuZC4gICovCi0rICAgaWYgKCEgZnJhbWVfZmlsdGVycyB8 fCByYXdfYXJnICB8fCByZXN1bHQgPT0gUFlfQlRfTk9fRklMVEVSUykKLSsgICAgIHsKLSsgICAg ICAgbGlzdF9hcmdzX29yX2xvY2FscyAoYWxsLCBwcmludF92YWx1ZSwgZnJhbWUpOwotKyAgICAg fQotIH0KLSAKLSAvKiBQcmludCBzaW5nbGUgbG9jYWwgb3IgYXJndW1lbnQuICBBUkcgbXVzdCBi ZSBhbHJlYWR5IHJlYWQgaW4uICBGb3IKLUluZGV4OiBnZGItNy42L2dkYi9taS9taS1jbWRzLmMK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL21pL21pLWNtZHMuYwkyMDEzLTA2LTEw IDE0OjMxOjAyLjczMDA4NDY1MiArMDIwMAotKysrIGdkYi03LjYvZ2RiL21pL21pLWNtZHMuYwky MDEzLTA2LTEwIDE0OjMxOjA4LjM2NTA4MjQzNyArMDIwMAotQEAgLTg2LDYgKzg2LDcgQEAgc3Rh dGljIHN0cnVjdCBtaV9jbWQgbWlfY21kc1tdID0KLSAJCSBtaV9jbWRfZGF0YV93cml0ZV9yZWdp c3Rlcl92YWx1ZXMpLAotICAgREVGX01JX0NNRF9NSSAoImVuYWJsZS10aW1pbmdzIiwgbWlfY21k X2VuYWJsZV90aW1pbmdzKSwKLSAgIERFRl9NSV9DTURfTUkgKCJlbmFibGUtcHJldHR5LXByaW50 aW5nIiwgbWlfY21kX2VuYWJsZV9wcmV0dHlfcHJpbnRpbmcpLAotKyAgREVGX01JX0NNRF9NSSAo ImVuYWJsZS1mcmFtZS1maWx0ZXJzIiwgbWlfY21kX2VuYWJsZV9mcmFtZV9maWx0ZXJzKSwKLSAg IERFRl9NSV9DTURfTUkgKCJlbnZpcm9ubWVudC1jZCIsIG1pX2NtZF9lbnZfY2QpLAotICAgREVG X01JX0NNRF9NSSAoImVudmlyb25tZW50LWRpcmVjdG9yeSIsIG1pX2NtZF9lbnZfZGlyKSwKLSAg IERFRl9NSV9DTURfTUkgKCJlbnZpcm9ubWVudC1wYXRoIiwgbWlfY21kX2Vudl9wYXRoKSwKLUlu ZGV4OiBnZGItNy42L2dkYi9taS9taS1jbWRzLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9y aWcvZ2RiL21pL21pLWNtZHMuaAkyMDEzLTA2LTEwIDE0OjMxOjAyLjczMDA4NDY1MiArMDIwMAot KysrIGdkYi03LjYvZ2RiL21pL21pLWNtZHMuaAkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2NTA4MjQz NyArMDIwMAotQEAgLTExOCw2ICsxMTgsNyBAQCBleHRlcm4gbWlfY21kX2FyZ3ZfZnR5cGUgbWlf Y21kX3Zhcl9zaG93Ci0gZXh0ZXJuIG1pX2NtZF9hcmd2X2Z0eXBlIG1pX2NtZF92YXJfc2hvd19m b3JtYXQ7Ci0gZXh0ZXJuIG1pX2NtZF9hcmd2X2Z0eXBlIG1pX2NtZF92YXJfdXBkYXRlOwotIGV4 dGVybiBtaV9jbWRfYXJndl9mdHlwZSBtaV9jbWRfZW5hYmxlX3ByZXR0eV9wcmludGluZzsKLStl eHRlcm4gbWlfY21kX2FyZ3ZfZnR5cGUgbWlfY21kX2VuYWJsZV9mcmFtZV9maWx0ZXJzOwotIGV4 dGVybiBtaV9jbWRfYXJndl9mdHlwZSBtaV9jbWRfdmFyX3NldF91cGRhdGVfcmFuZ2U7Ci0gCi0g LyogRGVzY3JpcHRpb24gb2YgYSBzaW5nbGUgY29tbWFuZC4gICovCi1JbmRleDogZ2RiLTcuNi9n ZGIvcHl0aG9uL3B5LWZyYW1lZmlsdGVyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi9weXRob24v cHktZnJhbWVmaWx0ZXIuYwkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2NjA4MjQzNyArMDIwMAotQEAg LTAsMCArMSwxNTI4IEBACi0rLyogUHl0aG9uIGZyYW1lIGZpbHRlcnMKLSsKLSsgICBDb3B5cmln aHQgKEMpIDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KLSsKLSsjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJvYmpmaWxlcy5oIgot KyNpbmNsdWRlICJzeW10YWIuaCIKLSsjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKLSsjaW5jbHVkZSAi ZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0rI2luY2x1ZGUgInB5dGhv bi5oIgotKyNpbmNsdWRlICJ1aS1vdXQuaCIKLSsjaW5jbHVkZSAidmFscHJpbnQuaCIKLSsjaW5j bHVkZSAiYW5ub3RhdGUuaCIKLSsjaW5jbHVkZSAiaGFzaHRhYi5oIgotKyNpbmNsdWRlICJkZW1h bmdsZS5oIgotKyNpbmNsdWRlICJtaS9taS1jbWRzLmgiCi0rI2luY2x1ZGUgInB5dGhvbi1pbnRl cm5hbC5oIgotKwotK2VudW0gbWlfcHJpbnRfdHlwZXMKLSt7Ci0rICBNSV9QUklOVF9BUkdTLAot KyAgTUlfUFJJTlRfTE9DQUxTCi0rfTsKLSsKLSsvKiBIZWxwZXIgIGZ1bmN0aW9uICB0byAgZXh0 cmFjdCAgYSAgc3ltYm9sLCBhICBuYW1lICBhbmQgIGEgIGxhbmd1YWdlCi0rICAgZGVmaW5pdGlv biBmcm9tIGEgUHl0aG9uIG9iamVjdCB0aGF0IGNvbmZvcm1zIHRvIHRoZSAiU3ltYm9sIFZhbHVl IgotKyAgIGludGVyZmFjZS4gIE9CSiAgaXMgdGhlIFB5dGhvbiAgb2JqZWN0IHRvIGV4dHJhY3Qg dGhlICB2YWx1ZXMgZnJvbS4KLSsgICBOQU1FIGlzIGEgIHBhc3MtdGhyb3VnaCBhcmd1bWVudCB3 aGVyZSB0aGUgbmFtZSBvZiAgdGhlIHN5bWJvbCB3aWxsCi0rICAgYmUgd3JpdHRlbi4gIE5BTUUg aXMgYWxsb2NhdGVkIGluICB0aGlzIGZ1bmN0aW9uLCBidXQgdGhlIGNhbGxlciBpcwotKyAgIHJl c3BvbnNpYmxlIGZvciBjbGVhbiB1cC4gIFNZTSBpcyBhIHBhc3MtdGhyb3VnaCBhcmd1bWVudCB3 aGVyZSB0aGUKLSsgICBzeW1ib2wgd2lsbCBiZSB3cml0dGVuLiAgSW4gdGhlIGNhc2Ugb2YgdGhl IEFQSSByZXR1cm5pbmcgYSBzdHJpbmcsCi0rICAgdGhpcyB3aWxsIGJlIHNldCB0byBOVUxMLiAg TEFOR1VBR0UgaXMgYWxzbyBhIHBhc3MtdGhyb3VnaCBhcmd1bWVudAotKyAgIGRlbm90aW5nIHRo ZSBsYW5ndWFnZSBhdHRyaWJ1dGVkIHRvIHRoZSBTeW1ib2wuICBJbiB0aGUgY2FzZSBvZiBTWU0K LSsgICBiZWluZyAgTlVMTCwgdGhpcyAgd2lsbCBiZSAgc2V0IHRvICB0aGUgY3VycmVudCAgbGFu Z3VhZ2UuICBSZXR1cm5zCi0rICAgUFlfQlRfRVJST1Igb24gZXJyb3Igd2l0aCB0aGUgYXBwcm9w cmlhdGUgUHl0aG9uIGV4Y2VwdGlvbiBzZXQsIGFuZAotKyAgIFBZX0JUX09LIG9uIHN1Y2Nlc3Mu ICAqLwotKwotK3N0YXRpYyBlbnVtIHB5X2J0X3N0YXR1cwotK2V4dHJhY3Rfc3ltIChQeU9iamVj dCAqb2JqLCBjaGFyICoqbmFtZSwgc3RydWN0IHN5bWJvbCAqKnN5bSwKLSsJICAgICBjb25zdCBz dHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqKmxhbmd1YWdlKQotK3sKLSsgIFB5T2JqZWN0ICpyZXN1bHQg PSBQeU9iamVjdF9DYWxsTWV0aG9kIChvYmosICJzeW1ib2wiLCBOVUxMKTsKLSsKLSsgIGlmIChy ZXN1bHQgPT0gTlVMTCkKLSsgICAgcmV0dXJuIFBZX0JUX0VSUk9SOwotKwotKyAgLyogRm9yICdz eW1ib2wnIGNhbGxiYWNrLCB0aGUgZnVuY3Rpb24gY2FuIHJldHVybiBhIHN5bWJvbCBvciBhCi0r ICAgICBzdHJpbmcuICAqLwotKyAgaWYgKGdkYnB5X2lzX3N0cmluZyAocmVzdWx0KSkKLSsgICAg ewotKyAgICAgICpuYW1lID0gcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZyAocmVzdWx0KTsK LSsgICAgICBQeV9ERUNSRUYgKHJlc3VsdCk7Ci0rCi0rICAgICAgaWYgKCpuYW1lID09IE5VTEwp Ci0rCXJldHVybiBQWV9CVF9FUlJPUjsKLSsgICAgICAvKiBJZiB0aGUgQVBJIHJldHVybnMgYSBz dHJpbmcgKGFuZCBub3QgYSBzeW1ib2wpLCB0aGVuIHRoZXJlIGlzCi0rCW5vIHN5bWJvbCBkZXJp dmVkIGxhbmd1YWdlIGF2YWlsYWJsZSBhbmQgdGhlIGZyYW1lIGZpbHRlciBoYXMKLSsJZWl0aGVy IG92ZXJyaWRkZW4gdGhlIHN5bWJvbCB3aXRoIGEgc3RyaW5nLCBvciBzdXBwbGllZCBhCi0rCWVu dGlyZWx5IHN5bnRoZXRpYyBzeW1ib2wvdmFsdWUgcGFpcmluZy4gIEluIHRoYXQgY2FzZSwgdXNl Ci0rCXB5dGhvbl9sYW5ndWFnZS4gICovCi0rICAgICAgKmxhbmd1YWdlID0gcHl0aG9uX2xhbmd1 YWdlOwotKyAgICAgICpzeW0gPSBOVUxMOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAg ICAvKiBUaGlzIHR5cGUgY2hlY2tzICdyZXN1bHQnIGR1cmluZyB0aGUgY29udmVyc2lvbiBzbyB3 ZQotKwkganVzdCBjYWxsIGl0IHVuY29uZGl0aW9uYWxseSBhbmQgY2hlY2sgdGhlIHJldHVybi4g ICovCi0rICAgICAgKnN5bSA9IHN5bWJvbF9vYmplY3RfdG9fc3ltYm9sIChyZXN1bHQpOwotKwot KyAgICAgIFB5X0RFQ1JFRiAocmVzdWx0KTsKLSsKLSsgICAgICBpZiAoKnN5bSA9PSBOVUxMKQot Kwl7Ci0rCSAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19SdW50aW1lRXJyb3IsCi0rCQkJICAgXygi VW5leHBlY3RlZCB2YWx1ZS4gIEV4cGVjdGluZyBhICIKLSsJCQkgICAgICJnZGIuU3ltYm9sIG9y IGEgUHl0aG9uIHN0cmluZy4iKSk7Ci0rCSAgcmV0dXJuIFBZX0JUX0VSUk9SOwotKwl9Ci0rCi0r ICAgICAgLyogRHVwbGljYXRlIHRoZSBzeW1ib2wgbmFtZSwgc28gdGhlIGNhbGxlciBoYXMgY29u c2lzdGVuY3kKLSsJIGluIGdhcmJhZ2UgY29sbGVjdGlvbi4gICovCi0rICAgICAgKm5hbWUgPSB4 c3RyZHVwIChTWU1CT0xfUFJJTlRfTkFNRSAoKnN5bSkpOwotKwotKyAgICAgIC8qIElmIGEgc3lt Ym9sIGlzIHNwZWNpZmllZCBhdHRlbXB0IHRvIGRldGVybWluZSB0aGUgbGFuZ3VhZ2UKLSsJIGZy b20gdGhlIHN5bWJvbC4gIElmIG1vZGUgaXMgbm90ICJhdXRvIiwgdGhlbiB0aGUgbGFuZ3VhZ2UK LSsJIGhhcyBiZWVuIGV4cGxpY2l0bHkgc2V0LCB1c2UgdGhhdC4gICovCi0rICAgICAgaWYgKGxh bmd1YWdlX21vZGUgPT0gbGFuZ3VhZ2VfbW9kZV9hdXRvKQotKwkqbGFuZ3VhZ2UgPSBsYW5ndWFn ZV9kZWYgKFNZTUJPTF9MQU5HVUFHRSAoKnN5bSkpOwotKyAgICAgIGVsc2UKLSsJKmxhbmd1YWdl ID0gY3VycmVudF9sYW5ndWFnZTsKLSsgICAgfQotKwotKyAgcmV0dXJuIFBZX0JUX09LOwotK30K LSsKLSsvKiBIZWxwZXIgZnVuY3Rpb24gdG8gZXh0cmFjdCBhIHZhbHVlIGZyb20gYW4gb2JqZWN0 IHRoYXQgY29uZm9ybXMgdG8KLSsgICB0aGUgIlN5bWJvbCBWYWx1ZSIgaW50ZXJmYWNlLiAgT0JK IGlzIHRoZSBQeXRob24gb2JqZWN0IHRvIGV4dHJhY3QKLSsgICB0aGUgdmFsdWUgZnJvbS4gIFZB TFVFIGlzIGEgcGFzcy10aHJvdWdoIGFyZ3VtZW50IHdoZXJlIHRoZSB2YWx1ZQotKyAgIHdpbGwg YmUgd3JpdHRlbi4gIElmIHRoZSBvYmplY3QgZG9lcyBub3QgaGF2ZSB0aGUgdmFsdWUgYXR0cmli dXRlLAotKyAgIG9yIHByb3ZpZGVzIHRoZSBQeXRob24gTm9uZSBmb3IgYSB2YWx1ZSwgVkFMVUUg d2lsbCBiZSBzZXQgdG8gTlVMTAotKyAgIGFuZCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGFz IHN1Y2Nlc3NmdWwuICBSZXR1cm5zIFBZX0JUX0VSUk9SCi0rICAgb24gZXJyb3Igd2l0aCB0aGUg YXBwcm9wcmlhdGUgUHl0aG9uIGV4Y2VwdGlvbiBzZXQsIGFuZCBQWV9CVF9PSyBvbgotKyAgIHN1 Y2Nlc3MuICAqLwotKwotK3N0YXRpYyBlbnVtIHB5X2J0X3N0YXR1cwotK2V4dHJhY3RfdmFsdWUg KFB5T2JqZWN0ICpvYmosIHN0cnVjdCB2YWx1ZSAqKnZhbHVlKQotK3sKLSsgIGlmIChQeU9iamVj dF9IYXNBdHRyU3RyaW5nIChvYmosICJ2YWx1ZSIpKQotKyAgICB7Ci0rICAgICAgUHlPYmplY3Qg KnZyZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kIChvYmosICJ2YWx1ZSIsIE5VTEwpOwotKwot KyAgICAgIGlmICh2cmVzdWx0ID09IE5VTEwpCi0rCXJldHVybiBQWV9CVF9FUlJPUjsKLSsKLSsg ICAgICAvKiBUaGUgUHl0aG9uIGNvZGUgaGFzIHJldHVybmVkICdOb25lJyBmb3IgYSB2YWx1ZSwg c28gd2Ugc2V0Ci0rCSB2YWx1ZSB0byBOVUxMLiAgVGhpcyBmbGFncyB0aGF0IEdEQiBzaG91bGQg cmVhZCB0aGUKLSsJIHZhbHVlLiAgKi8KLSsgICAgICBpZiAodnJlc3VsdCA9PSBQeV9Ob25lKQot Kwl7Ci0rCSAgUHlfREVDUkVGICh2cmVzdWx0KTsKLSsJICAqdmFsdWUgPSBOVUxMOwotKwkgIHJl dHVybiBQWV9CVF9PSzsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgICp2YWx1ZSA9IGNvbnZl cnRfdmFsdWVfZnJvbV9weXRob24gKHZyZXN1bHQpOwotKwkgIFB5X0RFQ1JFRiAodnJlc3VsdCk7 Ci0rCi0rCSAgaWYgKCp2YWx1ZSA9PSBOVUxMKQotKwkgICAgcmV0dXJuIFBZX0JUX0VSUk9SOwot KwotKwkgIHJldHVybiBQWV9CVF9PSzsKLSsJfQotKyAgICB9Ci0rICBlbHNlCi0rICAgICp2YWx1 ZSA9IE5VTEw7Ci0rCi0rICByZXR1cm4gUFlfQlRfT0s7Ci0rfQotKwotKy8qIE1JIHByaW50cyBv bmx5IGNlcnRhaW4gdmFsdWVzIGFjY29yZGluZyB0byB0aGUgdHlwZSBvZiBzeW1ib2wgYW5kCi0r ICAgYWxzbyB3aGF0IHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQuICBTWU0gaXMgdGhlIHN5bWJvbCB0 byBjaGVjaywgYW5kCi0rICAgTUlfUFJJTlRfVFlQRVMgaXMgYW4gZW51bSBzcGVjaWZ5aW5nIHdo YXQgdGhlIHVzZXIgd2FudHMgZW1pdHRlZAotKyAgIGZvciB0aGUgTUkgY29tbWFuZCBpbiBxdWVz dGlvbi4gICovCi0rc3RhdGljIGludAotK21pX3Nob3VsZF9wcmludCAoc3RydWN0IHN5bWJvbCAq c3ltLCBlbnVtIG1pX3ByaW50X3R5cGVzIHR5cGUpCi0rewotKyAgaW50IHByaW50X21lID0gMDsK LSsKLSsgIHN3aXRjaCAoU1lNQk9MX0NMQVNTIChzeW0pKQotKyAgICB7Ci0rICAgIGRlZmF1bHQ6 Ci0rICAgIGNhc2UgTE9DX1VOREVGOgkvKiBjYXRjaGVzIGVycm9ycyAgICAgICAgKi8KLSsgICAg Y2FzZSBMT0NfQ09OU1Q6CS8qIGNvbnN0YW50ICAgICAgICAgICAgICAqLwotKyAgICBjYXNlIExP Q19UWVBFREVGOgkvKiBsb2NhbCB0eXBlZGVmICAgICAgICAgKi8KLSsgICAgY2FzZSBMT0NfTEFC RUw6CS8qIGxvY2FsIGxhYmVsICAgICAgICAgICAqLwotKyAgICBjYXNlIExPQ19CTE9DSzoJLyog bG9jYWwgZnVuY3Rpb24gICAgICAgICovCi0rICAgIGNhc2UgTE9DX0NPTlNUX0JZVEVTOgkvKiBs b2MuIGJ5dGUgc2VxLiAgICAgICAgKi8KLSsgICAgY2FzZSBMT0NfVU5SRVNPTFZFRDoJLyogdW5y ZXNvbHZlZCBzdGF0aWMgICAgICovCi0rICAgIGNhc2UgTE9DX09QVElNSVpFRF9PVVQ6CS8qIG9w dGltaXplZCBvdXQgICAgICAgICAqLwotKyAgICAgIHByaW50X21lID0gMDsKLSsgICAgICBicmVh azsKLSsKLSsgICAgY2FzZSBMT0NfQVJHOgkvKiBhcmd1bWVudCAgICAgICAgICAgICAgKi8KLSsg ICAgY2FzZSBMT0NfUkVGX0FSRzoJLyogcmVmZXJlbmNlIGFyZyAgICAgICAgICovCi0rICAgIGNh c2UgTE9DX1JFR1BBUk1fQUREUjoJLyogaW5kaXJlY3QgcmVnaXN0ZXIgYXJnICovCi0rICAgIGNh c2UgTE9DX0xPQ0FMOgkvKiBzdGFjayBsb2NhbCAgICAgICAgICAgKi8KLSsgICAgY2FzZSBMT0Nf U1RBVElDOgkvKiBzdGF0aWMgICAgICAgICAgICAgICAgKi8KLSsgICAgY2FzZSBMT0NfUkVHSVNU RVI6CS8qIHJlZ2lzdGVyICAgICAgICAgICAgICAqLwotKyAgICBjYXNlIExPQ19DT01QVVRFRDoJ LyogY29tcHV0ZWQgbG9jYXRpb24gICAgICovCi0rICAgICAgaWYgKHR5cGUgPT0gTUlfUFJJTlRf TE9DQUxTKQotKwlwcmludF9tZSA9ICEgU1lNQk9MX0lTX0FSR1VNRU5UIChzeW0pOwotKyAgICAg IGVsc2UKLSsJcHJpbnRfbWUgPSBTWU1CT0xfSVNfQVJHVU1FTlQgKHN5bSk7Ci0rICAgIH0KLSsg IHJldHVybiBwcmludF9tZTsKLSt9Ci0rCi0rLyogSGVscGVyIGZ1bmN0aW9uIHdoaWNoIG91dHB1 dHMgYSB0eXBlIG5hbWUgZXh0cmFjdGVkIGZyb20gVkFMIHRvIGEKLSsgICAidHlwZSIgZmllbGQg aW4gdGhlIG91dHB1dCBzdHJlYW0gT1VULiAgT1VUIGlzIHRoZSB1aS1vdXQgc3RydWN0dXJlCi0r ICAgdGhlIHR5cGUgbmFtZSB3aWxsIGJlIG91dHB1dCB0b28sIGFuZCBWQUwgaXMgdGhlIHZhbHVl IHRoYXQgdGhlCi0rICAgdHlwZSB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tLiAgUmV0dXJucyBQWV9C VF9FUlJPUiBvbiBlcnJvciwgd2l0aAotKyAgIGFueSBHREIgZXhjZXB0aW9ucyBjb252ZXJ0ZWQg dG8gYSBQeXRob24gZXhjZXB0aW9uLCBvciBQWV9CVF9PSyBvbgotKyAgIHN1Y2Nlc3MuICAqLwot KwotK3N0YXRpYyBlbnVtIHB5X2J0X3N0YXR1cwotK3B5X3ByaW50X3R5cGUgKHN0cnVjdCB1aV9v dXQgKm91dCwgc3RydWN0IHZhbHVlICp2YWwpCi0rewotKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9l eGNlcHRpb24gZXhjZXB0OwotKwotKyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FM TCkKLSsgICAgewotKyAgICAgIHN0cnVjdCB0eXBlICp0eXBlOwotKyAgICAgIHN0cnVjdCB1aV9m aWxlICpzdGI7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci0rCi0rICAgICAgc3Ri ID0gbWVtX2ZpbGVvcGVuICgpOwotKyAgICAgIGNsZWFudXAgPSBtYWtlX2NsZWFudXBfdWlfZmls ZV9kZWxldGUgKHN0Yik7Ci0rICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUg KHZhbCkpOwotKyAgICAgIHR5cGVfcHJpbnQgKHZhbHVlX3R5cGUgKHZhbCksICIiLCBzdGIsIC0x KTsKLSsgICAgICB1aV9vdXRfZmllbGRfc3RyZWFtIChvdXQsICJ0eXBlIiwgc3RiKTsKLSsgICAg ICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rICAgIH0KLSsgIGlmIChleGNlcHQucmVhc29uIDwg MCkKLSsgICAgewotKyAgICAgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKyAg ICAgIHJldHVybiBQWV9CVF9FUlJPUjsKLSsgICAgfQotKwotKyAgcmV0dXJuIFBZX0JUX09LOwot K30KLSsKLSsvKiBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggb3V0cHV0cyBhIHZhbHVlIHRvIGFuIG91 dHB1dCBmaWVsZCBpbiBhCi0rICAgc3RyZWFtLiAgT1VUIGlzIHRoZSB1aS1vdXQgc3RydWN0dXJl IHRoZSB2YWx1ZSB3aWxsIGJlIG91dHB1dCB0bywKLSsgICBWQUwgaXMgdGhlIHZhbHVlIHRoYXQg d2lsbCBiZSBwcmludGVkLCBPUFRTIGNvbnRhaW5zIHRoZSB2YWx1ZQotKyAgIHByaW50aW5nIG9w dGlvbnMsIEFSR1NfVFlQRSBpcyBhbiBlbnVtZXJhdG9yIGRlc2NyaWJpbmcgdGhlCi0rICAgYXJn dW1lbnQgZm9ybWF0LCBhbmQgTEFOR1VBR0UgaXMgdGhlIGxhbmd1YWdlX2RlZm4gdGhhdCB0aGUg dmFsdWUKLSsgICB3aWxsIGJlIHByaW50ZWQgd2l0aC4gIFJldHVybnMgUFlfQlRfRVJST1Igb24g ZXJyb3IsIHdpdGggYW55IEdEQgotKyAgIGV4Y2VwdGlvbnMgY29udmVydGVkIHRvIGEgUHl0aG9u IGV4Y2VwdGlvbiwgb3IgUFlfQlRfT0sgb24KLSsgICBzdWNjZXNzLiAqLwotKwotK3N0YXRpYyBl bnVtIHB5X2J0X3N0YXR1cwotK3B5X3ByaW50X3ZhbHVlIChzdHJ1Y3QgdWlfb3V0ICpvdXQsIHN0 cnVjdCB2YWx1ZSAqdmFsLAotKwkJY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9w dHMsCi0rCQlpbnQgaW5kZW50LAotKwkJZW51bSBweV9mcmFtZV9hcmdzIGFyZ3NfdHlwZSwKLSsJ CWNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5ndWFnZSkKLSt7Ci0rICBpbnQgc2hvdWxk X3ByaW50ID0gMDsKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsg IGludCBsb2NhbF9pbmRlbnQgPSAoNCAqIGluZGVudCk7Ci0rCi0rICAvKiBOZXZlciBzZXQgYW4g aW5kZW50IGxldmVsIGZvciBjb21tb25fdmFsX3ByaW50IGlmIE1JLiAgKi8KLSsgIGlmICh1aV9v dXRfaXNfbWlfbGlrZV9wIChvdXQpKQotKyAgICBsb2NhbF9pbmRlbnQgPSAwOwotKwotKyAgLyog TUkgZG9lcyBub3QgcHJpbnQgY2VydGFpbiB2YWx1ZXMsIGRpZmZlcmVudGlhdGVkIGJ5IHR5cGUs Ci0rICAgICBkZXBlbmRpbmcgb24gd2hhdCBBUkdTX1RZUEUgaW5kaWNhdGVzLiAgVGVzdCB0eXBl IGFnYWluc3Qgb3B0aW9uLgotKyAgICAgRm9yIENMSSBwcmludCBhbGwgdmFsdWVzLiAgKi8KLSsg IGlmIChhcmdzX3R5cGUgPT0gTUlfUFJJTlRfU0lNUExFX1ZBTFVFUwotKyAgICAgIHx8IGFyZ3Nf dHlwZSA9PSBNSV9QUklOVF9BTExfVkFMVUVTKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHR5cGUg KnR5cGUgPSBOVUxMOwotKwotKyAgICAgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19B TEwpCi0rCXsKLSsJICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAodmFsKSk7Ci0r CX0KLSsgICAgICBpZiAoZXhjZXB0LnJlYXNvbiA8IDApCi0rCXsKLSsJICBnZGJweV9jb252ZXJ0 X2V4Y2VwdGlvbiAoZXhjZXB0KTsKLSsJICByZXR1cm4gUFlfQlRfRVJST1I7Ci0rCX0KLSsKLSsg ICAgICBpZiAoYXJnc190eXBlID09IE1JX1BSSU5UX0FMTF9WQUxVRVMpCi0rCXNob3VsZF9wcmlu dCA9IDE7Ci0rICAgICAgZWxzZSBpZiAoYXJnc190eXBlID09IE1JX1BSSU5UX1NJTVBMRV9WQUxV RVMKLSsJICAgICAgICYmIFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX0FSUkFZCi0rCSAg ICAgICAmJiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9TVFJVQ1QKLSsJICAgICAgICYm IFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1VOSU9OKQotKwlzaG91bGRfcHJpbnQgPSAx OwotKyAgICB9Ci0rICBlbHNlIGlmIChhcmdzX3R5cGUgIT0gTk9fVkFMVUVTKQotKyAgICBzaG91 bGRfcHJpbnQgPSAxOwotKwotKyAgaWYgKHNob3VsZF9wcmludCkKLSsgICAgewotKyAgICAgIFRS WV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rCXsKLSsJICBzdHJ1Y3QgdWlfZmls ZSAqc3RiOwotKwkgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKwotKwkgIHN0YiA9IG1lbV9m aWxlb3BlbiAoKTsKLSsJICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX3VpX2ZpbGVfZGVsZXRlIChz dGIpOwotKwkgIGNvbW1vbl92YWxfcHJpbnQgKHZhbCwgc3RiLCBpbmRlbnQsIG9wdHMsIGxhbmd1 YWdlKTsKLSsJICB1aV9vdXRfZmllbGRfc3RyZWFtIChvdXQsICJ2YWx1ZSIsIHN0Yik7Ci0rCSAg ZG9fY2xlYW51cHMgKGNsZWFudXApOwotKwl9Ci0rICAgICAgaWYgKGV4Y2VwdC5yZWFzb24gPCAw KQotKwl7Ci0rCSAgZ2RicHlfY29udmVydF9leGNlcHRpb24gKGV4Y2VwdCk7Ci0rCSAgcmV0dXJu IFBZX0JUX0VSUk9SOwotKwl9Ci0rICAgIH0KLSsKLSsgIHJldHVybiBQWV9CVF9PSzsKLSt9Ci0r Ci0rLyogSGVscGVyIGZ1bmN0aW9uIHRvIGNhbGwgYSBQeXRob24gbWV0aG9kIGFuZCBleHRyYWN0 IGFuIGl0ZXJhdG9yCi0rICAgZnJvbSB0aGUgcmVzdWx0LiAgSWYgdGhlIGZ1bmN0aW9uIHJldHVy bnMgYW55dGhpbmcgYnV0IGFuIGl0ZXJhdG9yCi0rICAgdGhlIGV4Y2VwdGlvbiBpcyBwcmVzZXJ2 ZWQgYW5kIE5VTEwgaXMgcmV0dXJuZWQuICBGSUxURVIgaXMgdGhlCi0rICAgUHl0aG9uIG9iamVj dCB0byBjYWxsLCBhbmQgRlVOQyBpcyB0aGUgbmFtZSBvZiB0aGUgbWV0aG9kLiAgUmV0dXJucwot KyAgIGEgUHlPYmplY3QsIG9yIE5VTEwgb24gZXJyb3Igd2l0aCB0aGUgYXBwcm9wcmlhdGUgZXhj ZXB0aW9uIHNldC4KLSsgICBUaGlzIGZ1bmN0aW9uIGNhbiByZXR1cm4gYW4gaXRlcmF0b3IsIG9y IE5VTEwuICAqLwotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0rZ2V0X3B5X2l0ZXJfZnJvbV9mdW5j IChQeU9iamVjdCAqZmlsdGVyLCBjaGFyICpmdW5jKQotK3sKLSsgIGlmIChQeU9iamVjdF9IYXNB dHRyU3RyaW5nIChmaWx0ZXIsIGZ1bmMpKQotKyAgICB7Ci0rICAgICAgUHlPYmplY3QgKnJlc3Vs dCA9IFB5T2JqZWN0X0NhbGxNZXRob2QgKGZpbHRlciwgZnVuYywgTlVMTCk7Ci0rCi0rICAgICAg aWYgKHJlc3VsdCAhPSBOVUxMKQotKwl7Ci0rCSAgaWYgKHJlc3VsdCA9PSBQeV9Ob25lKQotKwkg ICAgewotKwkgICAgICByZXR1cm4gcmVzdWx0OwotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIHsK LSsJICAgICAgUHlPYmplY3QgKml0ZXJhdG9yID0gUHlPYmplY3RfR2V0SXRlciAocmVzdWx0KTsK LSsKLSsJICAgICAgUHlfREVDUkVGIChyZXN1bHQpOwotKwkgICAgICByZXR1cm4gaXRlcmF0b3I7 Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKyAgZWxzZQotKyAgICBQeV9SRVRVUk5fTk9ORTsKLSsK LSsgIHJldHVybiBOVUxMOwotK30KLSsKLSsvKiAgSGVscGVyIGZ1bmN0aW9uIHRvIG91dHB1dCBh IHNpbmdsZSBmcmFtZSBhcmd1bWVudCBhbmQgdmFsdWUgdG8gYW4KLSsgICAgb3V0cHV0IHN0cmVh bS4gIFRoaXMgZnVuY3Rpb24gd2lsbCBhY2NvdW50IGZvciBlbnRyeSB2YWx1ZXMgaWYgdGhlCi0r ICAgIEZWIHBhcmFtZXRlciBpcyBwb3B1bGF0ZWQsIHRoZSBmcmFtZSBhcmd1bWVudCBoYXMgZW50 cnkgdmFsdWVzCi0rICAgIGFzc29jaWF0ZWQgd2l0aCB0aGVtLCBhbmQgdGhlIGFwcHJvcHJpYXRl ICJzZXQgZW50cnktdmFsdWUiCi0rICAgIG9wdGlvbnMgYXJlIHNldC4gIFdpbGwgb3V0cHV0IGlu IENMSSBvciBNSSBsaWtlIGZvcm1hdCBkZXBlbmRpbmcKLSsgICAgb24gdGhlIHR5cGUgb2Ygb3V0 cHV0IHN0cmVhbSBkZXRlY3RlZC4gIE9VVCBpcyB0aGUgb3V0cHV0IHN0cmVhbSwKLSsgICAgU1lN X05BTUUgaXMgdGhlIG5hbWUgb2YgdGhlIHN5bWJvbC4gIElmIFNZTV9OQU1FIGlzIHBvcHVsYXRl ZCB0aGVuCi0rICAgIGl0IG11c3QgaGF2ZSBhbiBhY2NvbXBhbnlpbmcgdmFsdWUgaW4gdGhlIHBh cmFtZXRlciBGVi4gIEZBIGlzIGEKLSsgICAgZnJhbWUgYXJndW1lbnQgc3RydWN0dXJlLiAgSWYg RkEgaXMgcG9wdWxhdGVkLCBib3RoIFNZTV9OQU1FIGFuZAotKyAgICBGViBhcmUgaWdub3JlZC4g IE9QVFMgY29udGFpbnMgdGhlIHZhbHVlIHByaW50aW5nIG9wdGlvbnMsCi0rICAgIEFSR1NfVFlQ RSBpcyBhbiBlbnVtZXJhdG9yIGRlc2NyaWJpbmcgdGhlIGFyZ3VtZW50IGZvcm1hdCwKLSsgICAg UFJJTlRfQVJHU19GSUVMRCBpcyBhIGZsYWcgd2hpY2ggaW5kaWNhdGVzIGlmIHdlIG91dHB1dCAi QVJHUz0xIgotKyAgICBpbiBNSSBvdXRwdXQgaW4gY29tbWFuZHMgd2hlcmUgYm90aCBhcmd1bWVu dHMgYW5kIGxvY2FscyBhcmUKLSsgICAgcHJpbnRlZC4gIFJldHVybnMgUFlfQlRfRVJST1Igb24g ZXJyb3IsIHdpdGggYW55IEdEQiBleGNlcHRpb25zCi0rICAgIGNvbnZlcnRlZCB0byBhIFB5dGhv biBleGNlcHRpb24sIG9yIFBZX0JUX09LIG9uIHN1Y2Nlc3MuICAqLwotKwotK3N0YXRpYyBlbnVt IHB5X2J0X3N0YXR1cwotK3B5X3ByaW50X3NpbmdsZV9hcmcgKHN0cnVjdCB1aV9vdXQgKm91dCwK LSsJCSAgICAgY29uc3QgY2hhciAqc3ltX25hbWUsCi0rCQkgICAgIHN0cnVjdCBmcmFtZV9hcmcg KmZhLAotKwkJICAgICBzdHJ1Y3QgdmFsdWUgKmZ2LAotKwkJICAgICBjb25zdCBzdHJ1Y3QgdmFs dWVfcHJpbnRfb3B0aW9ucyAqb3B0cywKLSsJCSAgICAgZW51bSBweV9mcmFtZV9hcmdzIGFyZ3Nf dHlwZSwKLSsJCSAgICAgaW50IHByaW50X2FyZ3NfZmllbGQsCi0rCQkgICAgIGNvbnN0IHN0cnVj dCBsYW5ndWFnZV9kZWZuICpsYW5ndWFnZSkKLSt7Ci0rICBzdHJ1Y3QgdmFsdWUgKnZhbDsKLSsg IHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsgIGlmIChmYSAhPSBO VUxMKQotKyAgICB7Ci0rICAgICAgbGFuZ3VhZ2UgPSBsYW5ndWFnZV9kZWYgKFNZTUJPTF9MQU5H VUFHRSAoZmEtPnN5bSkpOwotKyAgICAgIHZhbCA9IGZhLT52YWw7Ci0rICAgIH0KLSsgIGVsc2UK LSsgICAgdmFsID0gZnY7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxM KQotKyAgICB7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzID0gbWFrZV9jbGVhbnVw IChudWxsX2NsZWFudXAsIE5VTEwpOwotKwotKyAgICAgIC8qICBNSSBoYXMgdmFyeWluZyBydWxl cyBmb3IgdHVwbGVzLCBidXQgZ2VuZXJhbGx5IGlmIHRoZXJlIGlzIG9ubHkKLSsgICAgICBvbmUg ZWxlbWVudCBpbiBlYWNoIGl0ZW0gaW4gdGhlIGxpc3QsIGRvIG5vdCBzdGFydCBhIHR1cGxlLiAg VGhlCi0rICAgICAgZXhjZXB0aW9uIGlzIC1zdGFjay1saXN0LXZhcmlhYmxlcyB3aGljaCBlbWl0 cyBhbiBBUkdTPSIxIiBmaWVsZAotKyAgICAgIGlmIHRoZSB2YWx1ZSBpcyBhIGZyYW1lIGFyZ3Vt ZW50LiAgVGhpcyBpcyBkZW5vdGVkIGluIHRoaXMKLSsgICAgICBmdW5jdGlvbiB3aXRoIFBSSU5U X0FSR1NfRklFTEQgd2hpY2ggaXMgZmxhZyBmcm9tIHRoZSBjYWxsZXIgdG8KLSsgICAgICBlbWl0 IHRoZSBBUkdTIGZpZWxkLiAgKi8KLSsgICAgICBpZiAodWlfb3V0X2lzX21pX2xpa2VfcCAob3V0 KSkKLSsJewotKwkgIGlmIChwcmludF9hcmdzX2ZpZWxkIHx8IGFyZ3NfdHlwZSAhPSBOT19WQUxV RVMpCi0rCSAgICBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAob3V0LCBOVUxM KTsKLSsJfQotKwotKyAgICAgIGFubm90YXRlX2FyZ19iZWdpbiAoKTsKLSsKLSsgICAgICAvKiBJ ZiBmcmFtZSBhcmd1bWVudCBpcyBwb3B1bGF0ZWQsIGNoZWNrIGZvciBlbnRyeS12YWx1ZXMgYW5k IHRoZQotKwkgZW50cnkgdmFsdWUgb3B0aW9ucy4gICovCi0rICAgICAgaWYgKGZhICE9IE5VTEwp Ci0rCXsKLSsJICBzdHJ1Y3QgdWlfZmlsZSAqc3RiOwotKwotKwkgIHN0YiA9IG1lbV9maWxlb3Bl biAoKTsKLSsJICBtYWtlX2NsZWFudXBfdWlfZmlsZV9kZWxldGUgKHN0Yik7Ci0rCSAgZnByaW50 Zl9zeW1ib2xfZmlsdGVyZWQgKHN0YiwgU1lNQk9MX1BSSU5UX05BTUUgKGZhLT5zeW0pLAotKwkJ CQkgICBTWU1CT0xfTEFOR1VBR0UgKGZhLT5zeW0pLAotKwkJCQkgICBETUdMX1BBUkFNUyB8IERN R0xfQU5TSSk7Ci0rCSAgaWYgKGZhLT5lbnRyeV9raW5kID09IHByaW50X2VudHJ5X3ZhbHVlc19j b21wYWN0KQotKwkgICAgewotKwkgICAgICBmcHV0c19maWx0ZXJlZCAoIj0iLCBzdGIpOwotKwot KwkgICAgICBmcHJpbnRmX3N5bWJvbF9maWx0ZXJlZCAoc3RiLCBTWU1CT0xfUFJJTlRfTkFNRSAo ZmEtPnN5bSksCi0rCQkJCSAgICAgICBTWU1CT0xfTEFOR1VBR0UgKGZhLT5zeW0pLAotKwkJCQkg ICAgICAgRE1HTF9QQVJBTVMgfCBETUdMX0FOU0kpOwotKwkgICAgfQotKwkgIGlmIChmYS0+ZW50 cnlfa2luZCA9PSBwcmludF9lbnRyeV92YWx1ZXNfb25seQotKwkgICAgICB8fCBmYS0+ZW50cnlf a2luZCA9PSBwcmludF9lbnRyeV92YWx1ZXNfY29tcGFjdCkKLSsJICAgIHsKLSsJICAgICAgZnB1 dHNfZmlsdGVyZWQgKCJAZW50cnkiLCBzdGIpOwotKwkgICAgfQotKwkgIHVpX291dF9maWVsZF9z dHJlYW0gKG91dCwgIm5hbWUiLCBzdGIpOwotKwl9Ci0rICAgICAgZWxzZQotKwkvKiBPdGhlcndp c2UsIGp1c3Qgb3V0cHV0IHRoZSBuYW1lLiAgKi8KLSsJdWlfb3V0X2ZpZWxkX3N0cmluZyAob3V0 LCAibmFtZSIsIHN5bV9uYW1lKTsKLSsKLSsgICAgICBhbm5vdGF0ZV9hcmdfbmFtZV9lbmQgKCk7 Ci0rCi0rICAgICAgaWYgKCEgdWlfb3V0X2lzX21pX2xpa2VfcCAob3V0KSkKLSsJdWlfb3V0X3Rl eHQgKG91dCwgIj0iKTsKLSsKLSsgICAgICBpZiAocHJpbnRfYXJnc19maWVsZCkKLSsJdWlfb3V0 X2ZpZWxkX2ludCAob3V0LCAiYXJnIiwgMSk7Ci0rCi0rICAgICAgLyogRm9yIE1JIHByaW50IHRo ZSB0eXBlLCBidXQgb25seSBmb3Igc2ltcGxlIHZhbHVlcy4gIFRoaXMgc2VlbXMKLSsJIHdlaXJk LCBidXQgdGhpcyBpcyBob3cgTUkgY2hvb3NlIHRvIGZvcm1hdCB0aGUgdmFyaW91cyBvdXRwdXQK LSsJIHR5cGVzLiAgKi8KLSsgICAgICBpZiAoYXJnc190eXBlID09IE1JX1BSSU5UX1NJTVBMRV9W QUxVRVMpCi0rCXsKLSsJICBpZiAocHlfcHJpbnRfdHlwZSAob3V0LCB2YWwpID09IFBZX0JUX0VS Uk9SKQotKwkgICAgewotKwkgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwotKwkgICAgICBn b3RvIGVycm9yOwotKwkgICAgfQotKwl9Ci0rCi0rICAgICAgYW5ub3RhdGVfYXJnX3ZhbHVlICh2 YWx1ZV90eXBlICh2YWwpKTsKLSsKLSsgICAgICAvKiBJZiB0aGUgb3V0cHV0IGlzIHRvIHRoZSBD TEksIGFuZCB0aGUgdXNlciBvcHRpb24gInNldCBwcmludAotKwkgZnJhbWUtYXJndW1lbnRzIiBp cyBzZXQgdG8gbm9uZSwganVzdCBvdXRwdXQgIi4uLiIuICAqLwotKyAgICAgIGlmICghIHVpX291 dF9pc19taV9saWtlX3AgKG91dCkgJiYgYXJnc190eXBlID09IE5PX1ZBTFVFUykKLSsJdWlfb3V0 X2ZpZWxkX3N0cmluZyAob3V0LCAidmFsdWUiLCAiLi4uIik7Ci0rICAgICAgZWxzZQotKwl7Ci0r CSAgLyogT3RoZXJ3aXNlLCBwcmludCB0aGUgdmFsdWUgZm9yIGJvdGggTUkgYW5kIHRoZSBDTEks IGV4Y2VwdAotKwkgICAgIGZvciB0aGUgY2FzZSBvZiBNSV9QUklOVF9OT19WQUxVRVMuICAqLwot KwkgIGlmIChhcmdzX3R5cGUgIT0gTk9fVkFMVUVTKQotKwkgICAgewotKwkgICAgICBpZiAocHlf cHJpbnRfdmFsdWUgKG91dCwgdmFsLCBvcHRzLCAwLCBhcmdzX3R5cGUsIGxhbmd1YWdlKQotKwkJ ICA9PSBQWV9CVF9FUlJPUikKLSsJCXsKLSsJCSAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKLSsJ CSAgZ290byBlcnJvcjsKLSsJCX0KLSsJICAgIH0KLSsJfQotKwotKyAgICAgIGRvX2NsZWFudXBz IChjbGVhbnVwcyk7Ci0rICAgIH0KLSsgIGlmIChleGNlcHQucmVhc29uIDwgMCkKLSsgICAgewot KyAgICAgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKyAgICAgIGdvdG8gZXJy b3I7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBQWV9CVF9PSzsKLSsKLSsgZXJyb3I6Ci0rICByZXR1 cm4gUFlfQlRfRVJST1I7Ci0rfQotKwotKy8qIEhlbHBlciBmdW5jdGlvbiB0byBsb29wIG92ZXIg ZnJhbWUgYXJndW1lbnRzIHByb3ZpZGVkIGJ5IHRoZQotKyAgICJmcmFtZV9hcmd1bWVudHMiIFB5 dGhvbiBBUEkuICBFbGVtZW50cyBpbiB0aGUgaXRlcmF0b3IgbXVzdAotKyAgIGNvbmZvcm0gdG8g dGhlICJTeW1ib2wgVmFsdWUiIGludGVyZmFjZS4gIElURVIgaXMgdGhlIFB5dGhvbgotKyAgIGl0 ZXJhYmxlIG9iamVjdCwgT1VUIGlzIHRoZSBvdXRwdXQgc3RyZWFtLCBBUkdTX1RZUEUgaXMgYW4K LSsgICBlbnVtZXJhdG9yIGRlc2NyaWJpbmcgdGhlIGFyZ3VtZW50IGZvcm1hdCwgUFJJTlRfQVJH U19GSUVMRCBpcyBhCi0rICAgZmxhZyB3aGljaCBpbmRpY2F0ZXMgaWYgd2Ugb3V0cHV0ICJBUkdT PTEiIGluIE1JIG91dHB1dCBpbiBjb21tYW5kcwotKyAgIHdoZXJlIGJvdGggYXJndW1lbnRzIGFu ZCBsb2NhbHMgYXJlIHByaW50ZWQsIGFuZCBGUkFNRSBpcyB0aGUKLSsgICBiYWNraW5nIGZyYW1l LiAgUmV0dXJucyBQWV9CVF9FUlJPUiBvbiBlcnJvciwgd2l0aCBhbnkgR0RCCi0rICAgZXhjZXB0 aW9ucyBjb252ZXJ0ZWQgdG8gYSBQeXRob24gZXhjZXB0aW9uLCBvciBQWV9CVF9PSyBvbgotKyAg IHN1Y2Nlc3MuICAqLwotKwotK3N0YXRpYyBlbnVtIHB5X2J0X3N0YXR1cwotK2VudW1lcmF0ZV9h cmdzIChQeU9iamVjdCAqaXRlciwKLSsJCXN0cnVjdCB1aV9vdXQgKm91dCwKLSsJCWVudW0gcHlf ZnJhbWVfYXJncyBhcmdzX3R5cGUsCi0rCQlpbnQgcHJpbnRfYXJnc19maWVsZCwKLSsJCXN0cnVj dCBmcmFtZV9pbmZvICpmcmFtZSkKLSt7Ci0rICBQeU9iamVjdCAqaXRlbTsKLSsgIHN0cnVjdCB2 YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7Ci0rICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlv biBleGNlcHQ7Ci0rCi0rICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7Ci0rCi0rICBp ZiAoYXJnc190eXBlID09IENMSV9TQ0FMQVJfVkFMVUVTKQotKyAgICB7Ci0rICAgICAgLyogVHJ1 ZSBpbiAic3VtbWFyeSIgbW9kZSwgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KLSsgICAgICBvcHRzLnN1 bW1hcnkgPSAxOwotKyAgICB9Ci0rCi0rICBvcHRzLmRlcmVmX3JlZiA9IDE7Ci0rCi0rICBUUllf Q0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAgYW5ub3RhdGVf ZnJhbWVfYXJncyAoKTsKLSsgICAgfQotKyAgaWYgKGV4Y2VwdC5yZWFzb24gPCAwKQotKyAgICB7 Ci0rICAgICAgZ2RicHlfY29udmVydF9leGNlcHRpb24gKGV4Y2VwdCk7Ci0rICAgICAgZ290byBl cnJvcjsKLSsgICAgfQotKwotKyAgLyogIENvbGxlY3QgdGhlIGZpcnN0IGFyZ3VtZW50IG91dHNp ZGUgb2YgdGhlIGxvb3AsIHNvIG91dHB1dCBvZgotKyAgICAgIGNvbW1hcyBpbiB0aGUgYXJndW1l bnQgb3V0cHV0IGlzIGNvcnJlY3QuICBBdCB0aGUgZW5kIG9mIHRoZQotKyAgICAgIGxvb3AgYmxv Y2sgY29sbGVjdCBhbm90aGVyIGl0ZW0gZnJvbSB0aGUgaXRlcmF0b3IsIGFuZCwgaWYgaXQgaXMK LSsgICAgICBub3QgbnVsbCBlbWl0IGEgY29tbWEuICAqLwotKyAgaXRlbSA9IFB5SXRlcl9OZXh0 IChpdGVyKTsKLSsgIGlmIChpdGVtID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQgKCkpCi0rICAg IGdvdG8gZXJyb3I7Ci0rCi0rICB3aGlsZSAoaXRlbSkKLSsgICAgewotKyAgICAgIGNvbnN0IHN0 cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5ndWFnZTsKLSsgICAgICBjaGFyICpzeW1fbmFtZTsKLSsg ICAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0rICAgICAgc3RydWN0IHZhbHVlICp2YWw7Ci0rICAg ICAgZW51bSBweV9idF9zdGF0dXMgc3VjY2VzcyA9IFBZX0JUX0VSUk9SOwotKwotKyAgICAgIHN1 Y2Nlc3MgPSBleHRyYWN0X3N5bSAoaXRlbSwgJnN5bV9uYW1lLCAmc3ltLCAmbGFuZ3VhZ2UpOwot KyAgICAgIGlmIChzdWNjZXNzID09IFBZX0JUX0VSUk9SKQotKwl7Ci0rCSAgUHlfREVDUkVGIChp dGVtKTsKLSsJICBnb3RvIGVycm9yOwotKwl9Ci0rCi0rICAgICAgc3VjY2VzcyA9IGV4dHJhY3Rf dmFsdWUgKGl0ZW0sICZ2YWwpOwotKyAgICAgIGlmIChzdWNjZXNzID09IFBZX0JUX0VSUk9SKQot Kwl7Ci0rCSAgeGZyZWUgKHN5bV9uYW1lKTsKLSsJICBQeV9ERUNSRUYgKGl0ZW0pOwotKwkgIGdv dG8gZXJyb3I7Ci0rCX0KLSsKLSsgICAgICBQeV9ERUNSRUYgKGl0ZW0pOwotKyAgICAgIGl0ZW0g PSBOVUxMOwotKwotKyAgICAgIGlmIChzeW0gJiYgdWlfb3V0X2lzX21pX2xpa2VfcCAob3V0KQot KwkgICYmICEgbWlfc2hvdWxkX3ByaW50IChzeW0sIE1JX1BSSU5UX0FSR1MpKQotKwl7Ci0rCSAg eGZyZWUgKHN5bV9uYW1lKTsKLSsJICBjb250aW51ZTsKLSsJfQotKwotKyAgICAgIC8qIElmIHRo ZSBvYmplY3QgZGlkIG5vdCBwcm92aWRlIGEgdmFsdWUsIHJlYWQgaXQgdXNpbmcKLSsJIHJlYWRf ZnJhbWVfYXJncyBhbmQgYWNjb3VudCBmb3IgZW50cnkgdmFsdWVzLCBpZiBhbnkuICAqLwotKyAg ICAgIGlmICh2YWwgPT0gTlVMTCkKLSsJewotKwkgIHN0cnVjdCBmcmFtZV9hcmcgYXJnLCBlbnRy eWFyZzsKLSsKLSsJICAvKiBJZiB0aGVyZSBpcyBubyB2YWx1ZSwgYW5kIGFsc28gbm8gc3ltYm9s LCBzZXQgZXJyb3IgYW5kCi0rCSAgICAgZXhpdC4gICovCi0rCSAgaWYgKHN5bSA9PSBOVUxMKQot KwkgICAgewotKwkgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVFcnJvciwKLSsJ CQkgICAgICAgXygiTm8gc3ltYm9sIG9yIHZhbHVlIHByb3ZpZGVkLiIpKTsKLSsJICAgICAgeGZy ZWUgKHN5bV9uYW1lKTsKLSsJICAgICAgZ290byBlcnJvcjsKLSsJICAgIH0KLSsKLSsJICBUUllf Q0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKwkgICAgewotKwkgICAgICByZWFkX2Zy YW1lX2FyZyAoc3ltLCBmcmFtZSwgJmFyZywgJmVudHJ5YXJnKTsKLSsJICAgIH0KLSsJICBpZiAo ZXhjZXB0LnJlYXNvbiA8IDApCi0rCSAgICB7Ci0rCSAgICAgIHhmcmVlIChzeW1fbmFtZSk7Ci0r CSAgICAgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKwkgICAgICBnb3RvIGVy cm9yOwotKwkgICAgfQotKwotKwkgIC8qIFRoZSBvYmplY3QgaGFzIG5vdCBwcm92aWRlZCBhIHZh bHVlLCBzbyB0aGlzIGlzIGEgZnJhbWUKLSsJICAgICBhcmd1bWVudCB0byBiZSByZWFkIGJ5IEdE Qi4gIEluIHRoaXMgY2FzZSB3ZSBoYXZlIHRvCi0rCSAgICAgYWNjb3VudCBmb3IgZW50cnktdmFs dWVzLiAgKi8KLSsKLSsJICBpZiAoYXJnLmVudHJ5X2tpbmQgIT0gcHJpbnRfZW50cnlfdmFsdWVz X29ubHkpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChweV9wcmludF9zaW5nbGVfYXJnIChvdXQsIE5V TEwsICZhcmcsCi0rCQkJCSAgICAgICBOVUxMLCAmb3B0cywKLSsJCQkJICAgICAgIGFyZ3NfdHlw ZSwKLSsJCQkJICAgICAgIHByaW50X2FyZ3NfZmllbGQsCi0rCQkJCSAgICAgICBOVUxMKSA9PSBQ WV9CVF9FUlJPUikKLSsJCXsKLSsJCSAgeGZyZWUgKGFyZy5lcnJvcik7Ci0rCQkgIHhmcmVlIChl bnRyeWFyZy5lcnJvcik7Ci0rCQkgIHhmcmVlIChzeW1fbmFtZSk7Ci0rCQkgIGdvdG8gZXJyb3I7 Ci0rCQl9Ci0rCSAgICB9Ci0rCi0rCSAgaWYgKGVudHJ5YXJnLmVudHJ5X2tpbmQgIT0gcHJpbnRf ZW50cnlfdmFsdWVzX25vKQotKwkgICAgewotKwkgICAgICBpZiAoYXJnLmVudHJ5X2tpbmQgIT0g cHJpbnRfZW50cnlfdmFsdWVzX29ubHkpCi0rCQl7Ci0rCQkgIFRSWV9DQVRDSCAoZXhjZXB0LCBS RVRVUk5fTUFTS19BTEwpCi0rCQkgICAgewotKwkJICAgICAgdWlfb3V0X3RleHQgKG91dCwgIiwg Iik7Ci0rCQkgICAgICB1aV9vdXRfd3JhcF9oaW50IChvdXQsICIgICAgIik7Ci0rCQkgICAgfQot KwkJICBpZiAoZXhjZXB0LnJlYXNvbiA8IDApCi0rCQkgICAgewotKwkJICAgICAgeGZyZWUgKGFy Zy5lcnJvcik7Ci0rCQkgICAgICB4ZnJlZSAoZW50cnlhcmcuZXJyb3IpOwotKwkJICAgICAgeGZy ZWUgKHN5bV9uYW1lKTsKLSsJCSAgICAgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQp OwotKwkJICAgICAgZ290byBlcnJvcjsKLSsJCSAgICB9Ci0rCQl9Ci0rCi0rCSAgICAgIGlmIChw eV9wcmludF9zaW5nbGVfYXJnIChvdXQsIE5VTEwsICZlbnRyeWFyZywgTlVMTCwKLSsJCQkJICAg ICAgJm9wdHMsIGFyZ3NfdHlwZSwKLSsJCQkJICAgICAgcHJpbnRfYXJnc19maWVsZCwgTlVMTCkg PT0gUFlfQlRfRVJST1IpCi0rCQl7Ci0rCQkgICAgICB4ZnJlZSAoYXJnLmVycm9yKTsKLSsJCSAg ICAgIHhmcmVlIChlbnRyeWFyZy5lcnJvcik7Ci0rCQkgICAgICB4ZnJlZSAoc3ltX25hbWUpOwot KwkJICAgICAgZ290byBlcnJvcjsKLSsJCX0KLSsJICAgIH0KLSsKLSsJICB4ZnJlZSAoYXJnLmVy cm9yKTsKLSsJICB4ZnJlZSAoZW50cnlhcmcuZXJyb3IpOwotKwl9Ci0rICAgICAgZWxzZQotKwl7 Ci0rCSAgLyogSWYgdGhlIG9iamVjdCBoYXMgcHJvdmlkZWQgYSB2YWx1ZSwgd2UganVzdCBwcmlu dCB0aGF0LiAgKi8KLSsJICBpZiAodmFsICE9IE5VTEwpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChw eV9wcmludF9zaW5nbGVfYXJnIChvdXQsIHN5bV9uYW1lLCBOVUxMLCB2YWwsICZvcHRzLAotKwkJ CQkgICAgICAgYXJnc190eXBlLCBwcmludF9hcmdzX2ZpZWxkLAotKwkJCQkgICAgICAgbGFuZ3Vh Z2UpID09IFBZX0JUX0VSUk9SKQotKwkJewotKwkJICB4ZnJlZSAoc3ltX25hbWUpOwotKwkJICBn b3RvIGVycm9yOwotKwkJfQotKwkgICAgfQotKwl9Ci0rCi0rICAgICAgeGZyZWUgKHN5bV9uYW1l KTsKLSsKLSsgICAgICAvKiBDb2xsZWN0IHRoZSBuZXh0IGl0ZW0gZnJvbSB0aGUgaXRlcmF0b3Iu ICBJZgotKwkgdGhpcyBpcyB0aGUgbGFzdCBpdGVtLCBkbyBub3QgcHJpbnQgdGhlCi0rCSBjb21t YS4gICovCi0rICAgICAgaXRlbSA9IFB5SXRlcl9OZXh0IChpdGVyKTsKLSsgICAgICBpZiAoaXRl bSAhPSBOVUxMKQotKwl7Ci0rCSAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkK LSsJICAgIHsKLSsJICAgICAgdWlfb3V0X3RleHQgKG91dCwgIiwgIik7Ci0rCSAgICB9Ci0rCSAg aWYgKGV4Y2VwdC5yZWFzb24gPCAwKQotKwkgICAgewotKwkgICAgICBQeV9ERUNSRUYgKGl0ZW0p OwotKwkgICAgICBnZGJweV9jb252ZXJ0X2V4Y2VwdGlvbiAoZXhjZXB0KTsKLSsJICAgICAgZ290 byBlcnJvcjsKLSsJICAgIH0KLSsJfQotKyAgICAgIGVsc2UgaWYgKFB5RXJyX09jY3VycmVkICgp KQotKwlnb3RvIGVycm9yOwotKwotKyAgICAgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFT S19BTEwpCi0rCXsKLSsJICBhbm5vdGF0ZV9hcmdfZW5kICgpOwotKwl9Ci0rICAgICAgaWYgKGV4 Y2VwdC5yZWFzb24gPCAwKQotKwl7Ci0rCSAgUHlfREVDUkVGIChpdGVtKTsKLSsJICBnZGJweV9j b252ZXJ0X2V4Y2VwdGlvbiAoZXhjZXB0KTsKLSsJICBnb3RvIGVycm9yOwotKwl9Ci0rICAgIH0K LSsKLSsgIHJldHVybiBQWV9CVF9PSzsKLSsKLSsgZXJyb3I6Ci0rICByZXR1cm4gUFlfQlRfRVJS T1I7Ci0rfQotKwotKwotKy8qIEhlbHBlciBmdW5jdGlvbiB0byBsb29wIG92ZXIgdmFyaWFibGVz IHByb3ZpZGVkIGJ5IHRoZQotKyAgICJmcmFtZV9sb2NhbHMiIFB5dGhvbiBBUEkuICBFbGVtZW50 cyBpbiB0aGUgaXRlcmFibGUgbXVzdCBjb25mb3JtCi0rICAgdG8gdGhlICJTeW1ib2wgVmFsdWUi IGludGVyZmFjZS4gIElURVIgaXMgdGhlIFB5dGhvbiBpdGVyYWJsZQotKyAgIG9iamVjdCwgT1VU IGlzIHRoZSBvdXRwdXQgc3RyZWFtLCBJTkRFTlQgaXMgd2hldGhlciB3ZSBzaG91bGQKLSsgICBp bmRlbnQgdGhlIG91dHB1dCAoZm9yIENMSSksIEFSR1NfVFlQRSBpcyBhbiBlbnVtZXJhdG9yIGRl c2NyaWJpbmcKLSsgICB0aGUgYXJndW1lbnQgZm9ybWF0LCBQUklOVF9BUkdTX0ZJRUxEIGlzIGZs YWcgd2hpY2ggaW5kaWNhdGVzCi0rICAgd2hldGhlciB0byBvdXRwdXQgdGhlIEFSR1MgZmllbGQg aW4gdGhlIGNhc2Ugb2YKLSsgICAtc3RhY2stbGlzdC12YXJpYWJsZXMgYW5kIEZSQU1FIGlzIHRo ZSBiYWNraW5nIGZyYW1lLiAgUmV0dXJucwotKyAgIFBZX0JUX0VSUk9SIG9uIGVycm9yLCB3aXRo IGFueSBHREIgZXhjZXB0aW9ucyBjb252ZXJ0ZWQgdG8gYSBQeXRob24KLSsgICBleGNlcHRpb24s IG9yIFBZX0JUX09LIG9uIHN1Y2Nlc3MuICAqLwotKwotK3N0YXRpYyBlbnVtIHB5X2J0X3N0YXR1 cwotK2VudW1lcmF0ZV9sb2NhbHMgKFB5T2JqZWN0ICppdGVyLAotKwkJICBzdHJ1Y3QgdWlfb3V0 ICpvdXQsCi0rCQkgIGludCBpbmRlbnQsCi0rCQkgIGVudW0gcHlfZnJhbWVfYXJncyBhcmdzX3R5 cGUsCi0rCQkgIGludCBwcmludF9hcmdzX2ZpZWxkLAotKwkJICBzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUpCi0rewotKyAgUHlPYmplY3QgKml0ZW07Ci0rICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0 aW9ucyBvcHRzOwotKwotKyAgZ2V0X3VzZXJfcHJpbnRfb3B0aW9ucyAoJm9wdHMpOwotKyAgb3B0 cy5kZXJlZl9yZWYgPSAxOwotKwotKyAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQgKGl0ZXIp KSkKLSsgICAgewotKyAgICAgIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5ndWFnZTsK LSsgICAgICBjaGFyICpzeW1fbmFtZTsKLSsgICAgICBzdHJ1Y3QgdmFsdWUgKnZhbDsKLSsgICAg ICBlbnVtIHB5X2J0X3N0YXR1cyAgc3VjY2VzcyA9IFBZX0JUX0VSUk9SOwotKyAgICAgIHN0cnVj dCBzeW1ib2wgKnN5bTsKLSsgICAgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNl cHQ7Ci0rICAgICAgaW50IGxvY2FsX2luZGVudCA9IDggKyAoOCAqIGluZGVudCk7Ci0rICAgICAg c3RydWN0IGNsZWFudXAgKmxvY2Fsc19jbGVhbnVwczsKLSsKLSsgICAgICBsb2NhbHNfY2xlYW51 cHMgPSBtYWtlX2NsZWFudXBfcHlfZGVjcmVmIChpdGVtKTsKLSsKLSsgICAgICBzdWNjZXNzID0g ZXh0cmFjdF9zeW0gKGl0ZW0sICZzeW1fbmFtZSwgJnN5bSwgJmxhbmd1YWdlKTsKLSsgICAgICBp ZiAoc3VjY2VzcyA9PSBQWV9CVF9FUlJPUikKLSsJewotKwkgIGRvX2NsZWFudXBzIChsb2NhbHNf Y2xlYW51cHMpOwotKwkgIGdvdG8gZXJyb3I7Ci0rCX0KLSsKLSsgICAgICBtYWtlX2NsZWFudXAg KHhmcmVlLCBzeW1fbmFtZSk7Ci0rCi0rICAgICAgc3VjY2VzcyA9IGV4dHJhY3RfdmFsdWUgKGl0 ZW0sICZ2YWwpOwotKyAgICAgIGlmIChzdWNjZXNzID09IFBZX0JUX0VSUk9SKQotKwl7Ci0rCSAg ZG9fY2xlYW51cHMgKGxvY2Fsc19jbGVhbnVwcyk7Ci0rCSAgZ290byBlcnJvcjsKLSsJfQotKwot KyAgICAgIGlmIChzeW0gIT0gTlVMTCAmJiB1aV9vdXRfaXNfbWlfbGlrZV9wIChvdXQpCi0rCSAg JiYgISBtaV9zaG91bGRfcHJpbnQgKHN5bSwgTUlfUFJJTlRfTE9DQUxTKSkKLSsJewotKwkgIGRv X2NsZWFudXBzIChsb2NhbHNfY2xlYW51cHMpOwotKwkgIGNvbnRpbnVlOwotKwl9Ci0rCi0rICAg ICAgLyogSWYgdGhlIG9iamVjdCBkaWQgbm90IHByb3ZpZGUgYSB2YWx1ZSwgcmVhZCBpdC4gICov Ci0rICAgICAgaWYgKHZhbCA9PSBOVUxMKQotKwl7Ci0rCSAgVFJZX0NBVENIIChleGNlcHQsIFJF VFVSTl9NQVNLX0FMTCkKLSsJICAgIHsKLSsJICAgICAgdmFsID0gcmVhZF92YXJfdmFsdWUgKHN5 bSwgZnJhbWUpOwotKwkgICAgfQotKwkgIGlmIChleGNlcHQucmVhc29uIDwgMCkKLSsJICAgIHsK LSsJICAgICAgZ2RicHlfY29udmVydF9leGNlcHRpb24gKGV4Y2VwdCk7Ci0rCSAgICAgIGRvX2Ns ZWFudXBzIChsb2NhbHNfY2xlYW51cHMpOwotKwkgICAgICBnb3RvIGVycm9yOwotKwkgICAgfQot Kwl9Ci0rCi0rICAgICAgLyogV2l0aCBQUklOVF9OT19WQUxVRVMsIE1JIGRvZXMgbm90IGVtaXQg YSB0dXBsZSBub3JtYWxseSBhcwotKwkgZWFjaCBvdXRwdXQgY29udGFpbnMgb25seSBvbmUgZmll bGQuICBUaGUgZXhjZXB0aW9uIGlzCi0rCSAtc3RhY2stbGlzdC12YXJpYWJsZXMsIHdoaWNoIGFs d2F5cyBwcm92aWRlcyBhIHR1cGxlLiAgKi8KLSsgICAgICBpZiAodWlfb3V0X2lzX21pX2xpa2Vf cCAob3V0KSkKLSsJewotKwkgIGlmIChwcmludF9hcmdzX2ZpZWxkIHx8IGFyZ3NfdHlwZSAhPSBO T19WQUxVRVMpCi0rCSAgICBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAob3V0 LCBOVUxMKTsKLSsJfQotKyAgICAgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwp Ci0rCXsKLSsJICBpZiAoISB1aV9vdXRfaXNfbWlfbGlrZV9wIChvdXQpKQotKwkgICAgewotKwkg ICAgICAvKiBJZiB0aGUgb3V0cHV0IGlzIG5vdCBNSSB3ZSBpbmRlbnQgbG9jYWxzLiAgKi8KLSsJ ICAgICAgdWlfb3V0X3NwYWNlcyAob3V0LCBsb2NhbF9pbmRlbnQpOwotKwkgICAgfQotKwotKwkg IHVpX291dF9maWVsZF9zdHJpbmcgKG91dCwgIm5hbWUiLCBzeW1fbmFtZSk7Ci0rCi0rCSAgaWYg KCEgdWlfb3V0X2lzX21pX2xpa2VfcCAob3V0KSkKLSsJICAgIHVpX291dF90ZXh0IChvdXQsICIg PSAiKTsKLSsJfQotKyAgICAgIGlmIChleGNlcHQucmVhc29uIDwgMCkKLSsJewotKwkgIGdkYnB5 X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKwkgIGRvX2NsZWFudXBzIChsb2NhbHNfY2xl YW51cHMpOwotKwkgIGdvdG8gZXJyb3I7Ci0rCX0KLSsKLSsgICAgICBpZiAoYXJnc190eXBlID09 IE1JX1BSSU5UX1NJTVBMRV9WQUxVRVMpCi0rCXsKLSsJICBpZiAocHlfcHJpbnRfdHlwZSAob3V0 LCB2YWwpID09IFBZX0JUX0VSUk9SKQotKwkgICAgewotKwkgICAgICBkb19jbGVhbnVwcyAobG9j YWxzX2NsZWFudXBzKTsKLSsJICAgICAgZ290byBlcnJvcjsKLSsJICAgIH0KLSsJfQotKwotKyAg ICAgIC8qIENMSSBhbHdheXMgcHJpbnRzIHZhbHVlcyBmb3IgbG9jYWxzLiAgTUkgdXNlcyB0aGUK LSsJIHNpbXBsZS9uby9hbGwgc3lzdGVtLiAgKi8KLSsgICAgICBpZiAoISB1aV9vdXRfaXNfbWlf bGlrZV9wIChvdXQpKQotKwl7Ci0rCSAgaW50IHZhbF9pbmRlbnQgPSAoaW5kZW50ICsgMSkgKiA0 OwotKwotKwkgIGlmIChweV9wcmludF92YWx1ZSAob3V0LCB2YWwsICZvcHRzLCB2YWxfaW5kZW50 LCBhcmdzX3R5cGUsCi0rCQkJICAgICAgbGFuZ3VhZ2UpID09ICBQWV9CVF9FUlJPUikKLSsJICAg IHsKLSsJICAgICAgZG9fY2xlYW51cHMgKGxvY2Fsc19jbGVhbnVwcyk7Ci0rCSAgICAgIGdvdG8g ZXJyb3I7Ci0rCSAgICB9Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBpZiAoYXJnc190eXBl ICE9IE5PX1ZBTFVFUykKLSsJICAgIHsKLSsJICAgICAgaWYgKHB5X3ByaW50X3ZhbHVlIChvdXQs IHZhbCwgJm9wdHMsIDAsIGFyZ3NfdHlwZSwKLSsJCQkJICBsYW5ndWFnZSkgPT0gIFBZX0JUX0VS Uk9SKQotKwkJewotKwkJICBkb19jbGVhbnVwcyAobG9jYWxzX2NsZWFudXBzKTsKLSsJCSAgZ290 byBlcnJvcjsKLSsJCX0KLSsJICAgIH0KLSsJfQotKwotKyAgICAgIGRvX2NsZWFudXBzIChsb2Nh bHNfY2xlYW51cHMpOwotKwotKyAgICAgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19B TEwpCi0rCXsKLSsJICB1aV9vdXRfdGV4dCAob3V0LCAiXG4iKTsKLSsJfQotKyAgICAgIGlmIChl eGNlcHQucmVhc29uIDwgMCkKLSsJewotKwkgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNl cHQpOwotKwkgIGdvdG8gZXJyb3I7Ci0rCX0KLSsgICAgfQotKwotKyAgaWYgKGl0ZW0gPT0gTlVM TCAmJiBQeUVycl9PY2N1cnJlZCAoKSkKLSsgICAgZ290byBlcnJvcjsKLSsKLSsgIHJldHVybiBQ WV9CVF9PSzsKLSsKLSsgZXJyb3I6Ci0rICByZXR1cm4gUFlfQlRfRVJST1I7Ci0rfQotKwotKy8q ICBIZWxwZXIgZnVuY3Rpb24gZm9yIC1zdGFjay1saXN0LXZhcmlhYmxlcy4gIFJldHVybnMgUFlf QlRfRVJST1Igb24KLSsgICAgZXJyb3IsIG9yIFBZX0JUX09LIG9uIHN1Y2Nlc3MuICAqLwotKwot K3N0YXRpYyBlbnVtIHB5X2J0X3N0YXR1cwotK3B5X21pX3ByaW50X3ZhcmlhYmxlcyAoUHlPYmpl Y3QgKmZpbHRlciwgc3RydWN0IHVpX291dCAqb3V0LAotKwkJICAgICAgIHN0cnVjdCB2YWx1ZV9w cmludF9vcHRpb25zICpvcHRzLAotKwkJICAgICAgIGVudW0gcHlfZnJhbWVfYXJncyBhcmdzX3R5 cGUsCi0rCQkgICAgICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotK3sKLSsgIHN0cnVjdCBj bGVhbnVwICpvbGRfY2hhaW47Ci0rICBQeU9iamVjdCAqYXJnc19pdGVyOwotKyAgUHlPYmplY3Qg KmxvY2Fsc19pdGVyOwotKwotKyAgYXJnc19pdGVyID0gZ2V0X3B5X2l0ZXJfZnJvbV9mdW5jIChm aWx0ZXIsICJmcmFtZV9hcmdzIik7Ci0rICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfcHlfeGRl Y3JlZiAoYXJnc19pdGVyKTsKLSsgIGlmIChhcmdzX2l0ZXIgPT0gTlVMTCkKLSsgICAgZ290byBl cnJvcjsKLSsKLSsgIGxvY2Fsc19pdGVyID0gZ2V0X3B5X2l0ZXJfZnJvbV9mdW5jIChmaWx0ZXIs ICJmcmFtZV9sb2NhbHMiKTsKLSsgIGlmIChsb2NhbHNfaXRlciA9PSBOVUxMKQotKyAgICBnb3Rv IGVycm9yOwotKwotKyAgbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAobG9jYWxzX2l0ZXIpOwotKyAg bWFrZV9jbGVhbnVwX3VpX291dF9saXN0X2JlZ2luX2VuZCAob3V0LCAidmFyaWFibGVzIik7Ci0r Ci0rICBpZiAoYXJnc19pdGVyICE9IFB5X05vbmUpCi0rICAgIGlmIChlbnVtZXJhdGVfYXJncyAo YXJnc19pdGVyLCBvdXQsIGFyZ3NfdHlwZSwgMSwgZnJhbWUpID09IFBZX0JUX0VSUk9SKQotKyAg ICAgIGdvdG8gZXJyb3I7Ci0rCi0rICBpZiAobG9jYWxzX2l0ZXIgIT0gUHlfTm9uZSkKLSsgICAg aWYgKGVudW1lcmF0ZV9sb2NhbHMgKGxvY2Fsc19pdGVyLCBvdXQsIDEsIGFyZ3NfdHlwZSwgMSwg ZnJhbWUpCi0rCT09IFBZX0JUX0VSUk9SKQotKyAgICAgIGdvdG8gZXJyb3I7Ci0rCi0rICBkb19j bGVhbnVwcyAob2xkX2NoYWluKTsKLSsgIHJldHVybiBQWV9CVF9PSzsKLSsKLSsgZXJyb3I6Ci0r ICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsgIHJldHVybiBQWV9CVF9FUlJPUjsKLSt9Ci0r Ci0rLyogSGVscGVyIGZ1bmN0aW9uIGZvciBwcmludGluZyBsb2NhbHMuICBUaGlzIGZ1bmN0aW9u IGxhcmdlbHkganVzdAotKyAgIGNyZWF0ZXMgdGhlIHdyYXBwaW5nIHR1cGxlLCBhbmQgY2FsbHMg ZW51bWVyYXRlX2xvY2Fscy4gIFJldHVybnMKLSsgICBQWV9CVF9FUlJPUiBvbiBlcnJvciwgb3Ig UFlfQlRfT0sgb24gc3VjY2Vzcy4qLwotKwotK3N0YXRpYyBlbnVtIHB5X2J0X3N0YXR1cwotK3B5 X3ByaW50X2xvY2FscyAoUHlPYmplY3QgKmZpbHRlciwKLSsJCSBzdHJ1Y3QgdWlfb3V0ICpvdXQs Ci0rCQkgZW51bSBweV9mcmFtZV9hcmdzIGFyZ3NfdHlwZSwKLSsJCSBpbnQgaW5kZW50LAotKwkJ IHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSt7Ci0rICBQeU9iamVjdCAqbG9jYWxzX2l0ZXIg PSBnZXRfcHlfaXRlcl9mcm9tX2Z1bmMgKGZpbHRlciwKLSsJCQkJCQkgImZyYW1lX2xvY2FscyIp OwotKyAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cF9weV94ZGVjcmVm IChsb2NhbHNfaXRlcik7Ci0rCi0rICBpZiAobG9jYWxzX2l0ZXIgPT0gTlVMTCkKLSsgICAgZ290 byBsb2NhbHNfZXJyb3I7Ci0rCi0rICBtYWtlX2NsZWFudXBfdWlfb3V0X2xpc3RfYmVnaW5fZW5k IChvdXQsICJsb2NhbHMiKTsKLSsKLSsgIGlmIChsb2NhbHNfaXRlciAhPSBQeV9Ob25lKQotKyAg ICBpZiAoZW51bWVyYXRlX2xvY2FscyAobG9jYWxzX2l0ZXIsIG91dCwgaW5kZW50LCBhcmdzX3R5 cGUsCi0rCQkJICAwLCBmcmFtZSkgPT0gUFlfQlRfRVJST1IpCi0rICAgICAgZ290byBsb2NhbHNf ZXJyb3I7Ci0rCi0rICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsgIHJldHVybiBQWV9CVF9P Szs7Ci0rCi0rIGxvY2Fsc19lcnJvcjoKLSsgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotKyAg cmV0dXJuIFBZX0JUX0VSUk9SOwotK30KLSsKLSsvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHByaW50 aW5nIGZyYW1lIGFyZ3VtZW50cy4gIFRoaXMgZnVuY3Rpb24KLSsgICBsYXJnZWx5IGp1c3QgY3Jl YXRlcyB0aGUgd3JhcHBpbmcgdHVwbGUsIGFuZCBjYWxscyBlbnVtZXJhdGVfYXJncy4KLSsgICBS ZXR1cm5zIFBZX0JUX0VSUk9SIG9uIGVycm9yLCB3aXRoIGFueSBHREIgZXhjZXB0aW9ucyBjb252 ZXJ0ZWQgdG8KLSsgICBhIFB5dGhvbiBleGNlcHRpb24sIG9yIFBZX0JUX09LIG9uIHN1Y2Nlc3Mu ICAqLwotKwotK3N0YXRpYyBlbnVtIHB5X2J0X3N0YXR1cwotK3B5X3ByaW50X2FyZ3MgKFB5T2Jq ZWN0ICpmaWx0ZXIsCi0rCSAgICAgICBzdHJ1Y3QgdWlfb3V0ICpvdXQsCi0rCSAgICAgICBlbnVt IHB5X2ZyYW1lX2FyZ3MgYXJnc190eXBlLAotKwkgICAgICAgc3RydWN0IGZyYW1lX2luZm8gKmZy YW1lKQotK3sKLSsgIFB5T2JqZWN0ICphcmdzX2l0ZXIgID0gZ2V0X3B5X2l0ZXJfZnJvbV9mdW5j IChmaWx0ZXIsICJmcmFtZV9hcmdzIik7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluID0g bWFrZV9jbGVhbnVwX3B5X3hkZWNyZWYgKGFyZ3NfaXRlcik7Ci0rICB2b2xhdGlsZSBzdHJ1Y3Qg Z2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci0rCi0rICBpZiAoYXJnc19pdGVyID09IE5VTEwpCi0rICAg IGdvdG8gYXJnc19lcnJvcjsKLSsKLSsgIG1ha2VfY2xlYW51cF91aV9vdXRfbGlzdF9iZWdpbl9l bmQgKG91dCwgImFyZ3MiKTsKLSsKLSsgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19B TEwpCi0rICAgIHsKLSsgICAgICBhbm5vdGF0ZV9mcmFtZV9hcmdzICgpOwotKyAgICAgIGlmICgh IHVpX291dF9pc19taV9saWtlX3AgKG91dCkpCi0rCXVpX291dF90ZXh0IChvdXQsICIgKCIpOwot KyAgICB9Ci0rICBpZiAoZXhjZXB0LnJlYXNvbiA8IDApCi0rICAgIHsKLSsgICAgICBnZGJweV9j b252ZXJ0X2V4Y2VwdGlvbiAoZXhjZXB0KTsKLSsgICAgICBnb3RvIGFyZ3NfZXJyb3I7Ci0rICAg IH0KLSsKLSsgIGlmIChhcmdzX2l0ZXIgIT0gUHlfTm9uZSkKLSsgICAgaWYgKGVudW1lcmF0ZV9h cmdzIChhcmdzX2l0ZXIsIG91dCwgYXJnc190eXBlLCAwLCBmcmFtZSkgPT0gUFlfQlRfRVJST1Ip Ci0rICAgICAgZ290byBhcmdzX2Vycm9yOwotKwotKyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVS Tl9NQVNLX0FMTCkKLSsgICAgewotKyAgICAgIGlmICghIHVpX291dF9pc19taV9saWtlX3AgKG91 dCkpCi0rCXVpX291dF90ZXh0IChvdXQsICIpIik7Ci0rICAgIH0KLSsgIGlmIChleGNlcHQucmVh c29uIDwgMCkKLSsgICAgewotKyAgICAgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQp OwotKyAgICAgIGdvdG8gYXJnc19lcnJvcjsKLSsgICAgfQotKwotKyAgZG9fY2xlYW51cHMgKG9s ZF9jaGFpbik7Ci0rICByZXR1cm4gUFlfQlRfT0s7Ci0rCi0rIGFyZ3NfZXJyb3I6Ci0rICBkb19j bGVhbnVwcyAob2xkX2NoYWluKTsKLSsgIHJldHVybiBQWV9CVF9FUlJPUjsKLSt9Ci0rCi0rLyog IFByaW50IGEgc2luZ2xlIGZyYW1lIHRvIHRoZSBkZXNpZ25hdGVkIG91dHB1dCBzdHJlYW0sIGRl dGVjdGluZwotKyAgICB3aGV0aGVyIHRoZSBvdXRwdXQgaXMgTUkgb3IgY29uc29sZSwgYW5kIGZv cm1hdHRpbmcgdGhlIG91dHB1dAotKyAgICBhY2NvcmRpbmcgdG8gdGhlIGNvbnZlbnRpb25zIG9m IHRoYXQgcHJvdG9jb2wuICBGSUxURVIgaXMgdGhlCi0rICAgIGZyYW1lLWZpbHRlciBhc3NvY2lh dGVkIHdpdGggdGhpcyBmcmFtZS4gIEZMQUdTIGlzIGFuIGludGVnZXIKLSsgICAgZGVzY3JpYmlu ZyB0aGUgdmFyaW91cyBwcmludCBvcHRpb25zLiAgVGhlIEZMQUdTIHZhcmlhYmxlcyBpcwotKyAg ICBkZXNjcmliZWQgaW4gImFwcGx5X2ZyYW1lX2ZpbHRlciIgZnVuY3Rpb24uICBBUkdTX1RZUEUg aXMgYW4KLSsgICAgZW51bWVyYXRvciBkZXNjcmliaW5nIHRoZSBhcmd1bWVudCBmb3JtYXQuICBP VVQgaXMgdGhlIG91dHB1dAotKyAgICBzdHJlYW0gdG8gcHJpbnQsIElOREVOVCBpcyB0aGUgbGV2 ZWwgb2YgaW5kZW50aW9uIGZvciB0aGlzIGZyYW1lCi0rICAgIChpbiB0aGUgY2FzZSBvZiBlbGlk ZWQgZnJhbWVzKSwgYW5kIExFVkVMU19QUklOVEVEIGlzIGEgaGFzaC10YWJsZQotKyAgICBjb250 YWluaW5nIGFsbCB0aGUgZnJhbWVzIGxldmVsIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gcHJpbnRl ZC4KLSsgICAgSWYgYSBmcmFtZSBsZXZlbCBoYXMgYmVlbiBwcmludGVkLCBkbyBub3QgcHJpbnQg aXQgYWdhaW4gKGluIHRoZQotKyAgICBjYXNlIG9mIGVsaWRlZCBmcmFtZXMpLiAgUmV0dXJucyBQ WV9CVF9FUlJPUiBvbiBlcnJvciwgd2l0aCBhbnkKLSsgICAgR0RCIGV4Y2VwdGlvbnMgY29udmVy dGVkIHRvIGEgUHl0aG9uIGV4Y2VwdGlvbiwgb3IgUFlfQlRfQ09NUExFVEVECi0rICAgIG9uIHN1 Y2Nlc3MuICAqLwotKwotK3N0YXRpYyBlbnVtIHB5X2J0X3N0YXR1cwotK3B5X3ByaW50X2ZyYW1l IChQeU9iamVjdCAqZmlsdGVyLCBpbnQgZmxhZ3MsIGVudW0gcHlfZnJhbWVfYXJncyBhcmdzX3R5 cGUsCi0rCQlzdHJ1Y3QgdWlfb3V0ICpvdXQsIGludCBpbmRlbnQsIGh0YWJfdCBsZXZlbHNfcHJp bnRlZCkKLSt7Ci0rICBpbnQgaGFzX2FkZHIgPSAwOwotKyAgQ09SRV9BRERSIGFkZHJlc3MgPSAw OwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBOVUxMOwotKyAgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lID0gTlVMTDsKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwX3N0YWNrID0gbWFr ZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOwotKyAgc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnMgb3B0czsKLSsgIFB5T2JqZWN0ICpweV9pbmZfZnJhbWUsICplbGlkZWQ7Ci0rICBpbnQg cHJpbnRfbGV2ZWwsIHByaW50X2ZyYW1lX2luZm8sIHByaW50X2FyZ3MsIHByaW50X2xvY2FsczsK LSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsgIC8qIEV4dHJh Y3QgcHJpbnQgc2V0dGluZ3MgZnJvbSBGTEFHUy4gICovCi0rICBwcmludF9sZXZlbCA9IChmbGFn cyAmIFBSSU5UX0xFVkVMKSA/IDEgOiAwOwotKyAgcHJpbnRfZnJhbWVfaW5mbyA9IChmbGFncyAm IFBSSU5UX0ZSQU1FX0lORk8pID8gMSA6IDA7Ci0rICBwcmludF9hcmdzID0gKGZsYWdzICYgUFJJ TlRfQVJHUykgPyAxIDogMDsKLSsgIHByaW50X2xvY2FscyA9IChmbGFncyAmIFBSSU5UX0xPQ0FM UykgPyAxIDogMDsKLSsKLSsgIGdldF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsKLSsKLSsg IC8qIEdldCB0aGUgdW5kZXJseWluZyBmcmFtZS4gIFRoaXMgaXMgbmVlZGVkIHRvIGRldGVybWlu ZSBHREIKLSsgIGFyY2hpdGVjdHVyZSwgYW5kIGFsc28sIGluIHRoZSBjYXNlcyBvZiBmcmFtZSB2 YXJpYWJsZXMvYXJndW1lbnRzIHRvCi0rICByZWFkIHRoZW0gaWYgdGhleSByZXR1cm5lZCBmaWx0 ZXIgb2JqZWN0IHJlcXVpcmVzIHVzIHRvIGRvIHNvLiAgKi8KLSsgIHB5X2luZl9mcmFtZSA9IFB5 T2JqZWN0X0NhbGxNZXRob2QgKGZpbHRlciwgImluZmVyaW9yX2ZyYW1lIiwgTlVMTCk7Ci0rICBp ZiAocHlfaW5mX2ZyYW1lID09IE5VTEwpCi0rICAgIGdvdG8gZXJyb3I7Ci0rCi0rICBmcmFtZSA9 IGZyYW1lX29iamVjdF90b19mcmFtZV9pbmZvIChweV9pbmZfZnJhbWUpOzsKLSsKLSsgIFB5X0RF Q1JFRiAocHlfaW5mX2ZyYW1lKTsKLSsKLSsgIGlmIChmcmFtZSA9PSBOVUxMKQotKyAgICBnb3Rv IGVycm9yOwotKwotKyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLSsgICAg ewotKyAgICAgIGdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOwotKyAgICB9Ci0rICBp ZiAoZXhjZXB0LnJlYXNvbiA8IDApCi0rICAgIHsKLSsgICAgICBnZGJweV9jb252ZXJ0X2V4Y2Vw dGlvbiAoZXhjZXB0KTsKLSsgICAgICBnb3RvIGVycm9yOwotKyAgICB9Ci0rCi0rCi0rICAvKiBz dGFjay1saXN0LXZhcmlhYmxlcy4gICovCi0rICBpZiAocHJpbnRfbG9jYWxzICYmIHByaW50X2Fy Z3MgJiYgISBwcmludF9mcmFtZV9pbmZvKQotKyAgICB7Ci0rICAgICAgaWYgKHB5X21pX3ByaW50 X3ZhcmlhYmxlcyAoZmlsdGVyLCBvdXQsICZvcHRzLAotKwkJCQkgYXJnc190eXBlLCBmcmFtZSkg PT0gUFlfQlRfRVJST1IpCi0rCWdvdG8gZXJyb3I7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgZG9f Y2xlYW51cHMgKGNsZWFudXBfc3RhY2spOwotKwkgIHJldHVybiBQWV9CVF9DT01QTEVURUQ7Ci0r CX0KLSsgICAgfQotKwotKyAgLyogLXN0YWNrLWxpc3QtbG9jYWxzIGRvZXMgbm90IHJlcXVpcmUg YQotKyAgICAgd3JhcHBpbmcgZnJhbWUgYXR0cmlidXRlLiAgKi8KLSsgIGlmIChwcmludF9mcmFt ZV9pbmZvIHx8IChwcmludF9hcmdzICYmICEgcHJpbnRfbG9jYWxzKSkKLSsgICAgbWFrZV9jbGVh bnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKG91dCwgImZyYW1lIik7Ci0rCi0rICBpZiAocHJp bnRfZnJhbWVfaW5mbykKLSsgICAgewotKyAgICAgIC8qIEVsaWRlZCBmcmFtZXMgYXJlIGFsc28g cHJpbnRlZCB3aXRoIHRoaXMgZnVuY3Rpb24gKHJlY3Vyc2l2ZWx5KQotKwkgYW5kIGFyZSBwcmlu dGVkIHdpdGggaW5kZW50aW9uLiAgKi8KLSsgICAgICBpZiAoaW5kZW50ID4gMCkKLSsJewotKwlU UllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKwkgIHsKLSsJICAgIHVpX291dF9z cGFjZXMgKG91dCwgaW5kZW50KjQpOwotKwkgIH0KLSsJaWYgKGV4Y2VwdC5yZWFzb24gPCAwKQot KwkgIHsKLSsJICAgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKwkgICAgZ290 byBlcnJvcjsKLSsJICB9Ci0rCX0KLSsKLSsgICAgICAvKiBUaGUgYWRkcmVzcyBpcyByZXF1aXJl ZCBmb3IgZnJhbWUgYW5ub3RhdGlvbnMsIGFuZCBhbHNvIGZvcgotKwkgYWRkcmVzcyBwcmludGlu Zy4gICovCi0rICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcgKGZpbHRlciwgImFkZHJl c3MiKSkKLSsJewotKwkgIFB5T2JqZWN0ICpwYWRkciA9IFB5T2JqZWN0X0NhbGxNZXRob2QgKGZp bHRlciwgImFkZHJlc3MiLCBOVUxMKTsKLSsJICBpZiAocGFkZHIgIT0gTlVMTCkKLSsJICAgIHsK LSsJICAgICAgaWYgKHBhZGRyICE9IFB5X05vbmUpCi0rCQl7Ci0rCQkgIGFkZHJlc3MgPSBQeUxv bmdfQXNMb25nIChwYWRkcik7Ci0rCQkgIGhhc19hZGRyID0gMTsKLSsJCX0KLSsJICAgICAgUHlf REVDUkVGIChwYWRkcik7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgZ290byBlcnJvcjsKLSsJ fQotKyAgICB9Ci0rCi0rICAvKiBQcmludCBmcmFtZSBsZXZlbC4gIE1JIGRvZXMgbm90IHJlcXVp cmUgdGhlIGxldmVsIGlmCi0rICAgICBsb2NhbHMvdmFyaWFibGVzIG9ubHkgYXJlIGJlaW5nIHBy aW50ZWQuICAqLwotKyAgaWYgKChwcmludF9mcmFtZV9pbmZvIHx8IHByaW50X2FyZ3MpICYmIHBy aW50X2xldmVsKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGZyYW1lX2luZm8gKipzbG90OwotKyAg ICAgIGludCBsZXZlbDsKLSsgICAgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNl cHQ7Ci0rCi0rICAgICAgc2xvdCA9IChzdHJ1Y3QgZnJhbWVfaW5mbyAqKikgaHRhYl9maW5kX3Ns b3QgKGxldmVsc19wcmludGVkLAotKwkJCQkJCSAgICBmcmFtZSwgSU5TRVJUKTsKLSsgICAgICBU UllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKwl7Ci0rCSAgbGV2ZWwgPSBmcmFt ZV9yZWxhdGl2ZV9sZXZlbCAoZnJhbWUpOwotKwotKwkgIC8qIENoZWNrIGlmIHRoaXMgZnJhbWUg aGFzIGFscmVhZHkgYmVlbiBwcmludGVkICh0aGVyZSBhcmUgY2FzZXMKLSsJICAgICB3aGVyZSBl bGlkZWQgc3ludGhldGljIGR1bW15LWZyYW1lcyBoYXZlIHRvICdib3Jyb3cnIHRoZSBmcmFtZQot KwkgICAgIGFyY2hpdGVjdHVyZSBmcm9tIHRoZSBlbGlkaW5nIGZyYW1lLiAgSWYgdGhhdCBpcyB0 aGUgY2FzZSwgZG8KLSsJICAgICBub3QgcHJpbnQgJ2xldmVsJywgYnV0IHByaW50IHNwYWNlcy4g ICovCi0rCSAgaWYgKCpzbG90ID09IGZyYW1lKQotKwkgICAgdWlfb3V0X2ZpZWxkX3NraXAgKG91 dCwgImxldmVsIik7Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICAqc2xvdCA9IGZyYW1lOwot KwkgICAgICBhbm5vdGF0ZV9mcmFtZV9iZWdpbiAocHJpbnRfbGV2ZWwgPyBsZXZlbCA6IDAsCi0r CQkJCSAgICBnZGJhcmNoLCBhZGRyZXNzKTsKLSsJICAgICAgdWlfb3V0X3RleHQgKG91dCwgIiMi KTsKLSsJICAgICAgdWlfb3V0X2ZpZWxkX2ZtdF9pbnQgKG91dCwgMiwgdWlfbGVmdCwgImxldmVs IiwKLSsJCQkJICAgIGxldmVsKTsKLSsJICAgIH0KLSsJfQotKyAgICAgIGlmIChleGNlcHQucmVh c29uIDwgMCkKLSsJewotKwkgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKwkg IGdvdG8gZXJyb3I7Ci0rCX0KLSsgICAgfQotKwotKyAgaWYgKHByaW50X2ZyYW1lX2luZm8pCi0r ICAgIHsKLSsgICAgICAvKiBQcmludCBhZGRyZXNzIHRvIHRoZSBhZGRyZXNzIGZpZWxkLiAgSWYg YW4gYWRkcmVzcyBpcyBub3QgcHJvdmlkZWQsCi0rCSBwcmludCBub3RoaW5nLiAgKi8KLSsgICAg ICBpZiAob3B0cy5hZGRyZXNzcHJpbnQgJiYgaGFzX2FkZHIpCi0rCXsKLSsJICBUUllfQ0FUQ0gg KGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKwkgICAgewotKwkgICAgICBhbm5vdGF0ZV9mcmFt ZV9hZGRyZXNzICgpOwotKwkgICAgICB1aV9vdXRfZmllbGRfY29yZV9hZGRyIChvdXQsICJhZGRy IiwgZ2RiYXJjaCwgYWRkcmVzcyk7Ci0rCSAgICAgIGFubm90YXRlX2ZyYW1lX2FkZHJlc3NfZW5k ICgpOwotKwkgICAgICB1aV9vdXRfdGV4dCAob3V0LCAiIGluICIpOwotKwkgICAgfQotKwkgIGlm IChleGNlcHQucmVhc29uIDwgMCkKLSsJICAgIHsKLSsJICAgICAgZ2RicHlfY29udmVydF9leGNl cHRpb24gKGV4Y2VwdCk7Ci0rCSAgICAgIGdvdG8gZXJyb3I7Ci0rCSAgICB9Ci0rCX0KLSsKLSsg ICAgICAvKiBQcmludCBmcmFtZSBmdW5jdGlvbiBuYW1lLiAgKi8KLSsgICAgICBpZiAoUHlPYmpl Y3RfSGFzQXR0clN0cmluZyAoZmlsdGVyLCAiZnVuY3Rpb24iKSkKLSsJewotKwkgIFB5T2JqZWN0 ICpweV9mdW5jID0gUHlPYmplY3RfQ2FsbE1ldGhvZCAoZmlsdGVyLCAiZnVuY3Rpb24iLCBOVUxM KTsKLSsKLSsJICBpZiAocHlfZnVuYyAhPSBOVUxMKQotKwkgICAgewotKwkgICAgICBjb25zdCBj aGFyICpmdW5jdGlvbiA9IE5VTEw7Ci0rCi0rCSAgICAgIGlmIChnZGJweV9pc19zdHJpbmcgKHB5 X2Z1bmMpKQotKwkJewotKwkJICBmdW5jdGlvbiA9IFB5U3RyaW5nX0FzU3RyaW5nIChweV9mdW5j KTsKLSsKLSsJCSAgaWYgKGZ1bmN0aW9uID09IE5VTEwpCi0rCQkgICAgewotKwkJICAgICAgUHlf REVDUkVGIChweV9mdW5jKTsKLSsJCSAgICAgIGdvdG8gZXJyb3I7Ci0rCQkgICAgfQotKwkJfQot KwkgICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2sgKHB5X2Z1bmMpKQotKwkJewotKwkJICBDT1JF X0FERFIgYWRkciA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcgKHB5X2Z1bmMpOwotKwkJICBz dHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2w7Ci0rCi0rCQkgIGlmIChQeUVycl9PY2N1cnJl ZCAoKSkKLSsJCSAgICBnb3RvIGVycm9yOwotKwotKwkJICBtc3ltYm9sID0gbG9va3VwX21pbmlt YWxfc3ltYm9sX2J5X3BjIChhZGRyKTsKLSsJCSAgaWYgKG1zeW1ib2wgIT0gTlVMTCkKLSsJCSAg ICBmdW5jdGlvbiA9IFNZTUJPTF9QUklOVF9OQU1FIChtc3ltYm9sKTsKLSsJCX0KLSsJICAgICAg ZWxzZSBpZiAocHlfZnVuYyAhPSBQeV9Ob25lKQotKwkJewotKwkJICBQeUVycl9TZXRTdHJpbmcg KFB5RXhjX1J1bnRpbWVFcnJvciwKLSsJCQkJICAgXygiRnJhbWVEZWNvcmF0b3IuZnVuY3Rpb246 IGV4cGVjdGluZyBhICIgXAotKwkJCQkgICAgICJTdHJpbmcsIGludGVnZXIgb3IgTm9uZS4iKSk7 Ci0rCQkgIFB5X0RFQ1JFRiAocHlfZnVuYyk7Ci0rCQkgIGdvdG8gZXJyb3I7Ci0rCQl9Ci0rCi0r Ci0rCSAgICAgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rCQl7Ci0rCQkg IGFubm90YXRlX2ZyYW1lX2Z1bmN0aW9uX25hbWUgKCk7Ci0rCQkgIGlmIChmdW5jdGlvbiA9PSBO VUxMKQotKwkJICAgIHVpX291dF9maWVsZF9za2lwIChvdXQsICJmdW5jIik7Ci0rCQkgIGVsc2UK LSsJCSAgICB1aV9vdXRfZmllbGRfc3RyaW5nIChvdXQsICJmdW5jIiwgZnVuY3Rpb24pOwotKwkJ fQotKwkgICAgICBpZiAoZXhjZXB0LnJlYXNvbiA8IDApCi0rCQl7Ci0rCQkgIFB5X0RFQ1JFRiAo cHlfZnVuYyk7Ci0rCQkgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKwkJICBn b3RvIGVycm9yOwotKwkJfQotKwkgICAgfQotKwkgIFB5X0RFQ1JFRiAocHlfZnVuYyk7Ci0rCX0K LSsgICAgICBlbHNlCi0rCWdvdG8gZXJyb3I7Ci0rICAgIH0KLSsKLSsKLSsgIC8qIEZyYW1lIGFy Z3VtZW50cy4gIENoZWNrIHRoZSByZXN1bHQsIGFuZCBlcnJvciBpZiBzb21ldGhpbmcgd2VudAot KyAgICAgd3JvbmcuICAqLwotKyAgaWYgKHByaW50X2FyZ3MpCi0rICAgIHsKLSsgICAgICBpZiAo cHlfcHJpbnRfYXJncyAoZmlsdGVyLCBvdXQsIGFyZ3NfdHlwZSwgZnJhbWUpID09IFBZX0JUX0VS Uk9SKQotKwlnb3RvIGVycm9yOwotKyAgICB9Ci0rCi0rICAvKiBGaWxlIG5hbWUvc291cmNlL2xp bmUgbnVtYmVyIGluZm9ybWF0aW9uLiAgKi8KLSsgIGlmIChwcmludF9mcmFtZV9pbmZvKQotKyAg ICB7Ci0rICAgICAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLSsJewotKwkg IGFubm90YXRlX2ZyYW1lX3NvdXJjZV9iZWdpbiAoKTsKLSsJfQotKyAgICAgIGlmIChleGNlcHQu cmVhc29uIDwgMCkKLSsJewotKwkgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwot KwkgIGdvdG8gZXJyb3I7Ci0rCX0KLSsKLSsgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmlu ZyAoZmlsdGVyLCAiZmlsZW5hbWUiKSkKLSsJewotKwkgIFB5T2JqZWN0ICpweV9mbiA9IFB5T2Jq ZWN0X0NhbGxNZXRob2QgKGZpbHRlciwgImZpbGVuYW1lIiwKLSsJCQkJCQkgTlVMTCk7Ci0rCSAg aWYgKHB5X2ZuICE9IE5VTEwpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChweV9mbiAhPSBQeV9Ob25l KQotKwkJewotKwkJICBjaGFyICpmaWxlbmFtZSA9IFB5U3RyaW5nX0FzU3RyaW5nIChweV9mbik7 Ci0rCi0rCQkgIGlmIChmaWxlbmFtZSA9PSBOVUxMKQotKwkJICAgIHsKLSsJCSAgICAgIFB5X0RF Q1JFRiAocHlfZm4pOwotKwkJICAgICAgZ290byBlcnJvcjsKLSsJCSAgICB9Ci0rCQkgIFRSWV9D QVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rCQkgICAgewotKwkJICAgICAgdWlfb3V0 X3dyYXBfaGludCAob3V0LCAiICAgIik7Ci0rCQkgICAgICB1aV9vdXRfdGV4dCAob3V0LCAiIGF0 ICIpOwotKwkJICAgICAgYW5ub3RhdGVfZnJhbWVfc291cmNlX2ZpbGUgKCk7Ci0rCQkgICAgICB1 aV9vdXRfZmllbGRfc3RyaW5nIChvdXQsICJmaWxlIiwgZmlsZW5hbWUpOwotKwkJICAgICAgYW5u b3RhdGVfZnJhbWVfc291cmNlX2ZpbGVfZW5kICgpOwotKwkJICAgIH0KLSsJCSAgaWYgKGV4Y2Vw dC5yZWFzb24gPCAwKQotKwkJICAgIHsKLSsJCSAgICAgIFB5X0RFQ1JFRiAocHlfZm4pOwotKwkJ ICAgICAgZ2RicHlfY29udmVydF9leGNlcHRpb24gKGV4Y2VwdCk7Ci0rCQkgICAgICBnb3RvIGVy cm9yOwotKwkJICAgIH0KLSsJCX0KLSsJICAgICAgUHlfREVDUkVGIChweV9mbik7Ci0rCSAgICB9 Ci0rCSAgZWxzZQotKwkgICAgZ290byBlcnJvcjsKLSsJfQotKwotKyAgICAgIGlmIChQeU9iamVj dF9IYXNBdHRyU3RyaW5nIChmaWx0ZXIsICJsaW5lIikpCi0rCXsKLSsJICBQeU9iamVjdCAqcHlf bGluZSA9IFB5T2JqZWN0X0NhbGxNZXRob2QgKGZpbHRlciwgImxpbmUiLCBOVUxMKTsKLSsJICBp bnQgbGluZTsKLSsKLSsJICBpZiAocHlfbGluZSAhPSBOVUxMKQotKwkgICAgewotKwkgICAgICBp ZiAocHlfbGluZSAhPSBQeV9Ob25lKQotKwkJewotKwkJICBsaW5lID0gUHlMb25nX0FzTG9uZyAo cHlfbGluZSk7Ci0rCQkgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rCQkg ICAgewotKwkJICAgICAgdWlfb3V0X3RleHQgKG91dCwgIjoiKTsKLSsJCSAgICAgIGFubm90YXRl X2ZyYW1lX3NvdXJjZV9saW5lICgpOwotKwkJICAgICAgdWlfb3V0X2ZpZWxkX2ludCAob3V0LCAi bGluZSIsIGxpbmUpOwotKwkJICAgIH0KLSsJCSAgaWYgKGV4Y2VwdC5yZWFzb24gPCAwKQotKwkJ ICAgIHsKLSsJCSAgICAgIFB5X0RFQ1JFRiAocHlfbGluZSk7Ci0rCQkgICAgICBnZGJweV9jb252 ZXJ0X2V4Y2VwdGlvbiAoZXhjZXB0KTsKLSsJCSAgICAgIGdvdG8gZXJyb3I7Ci0rCQkgICAgfQot KwkJfQotKwkgICAgICBQeV9ERUNSRUYgKHB5X2xpbmUpOwotKwkgICAgfQotKwkgIGVsc2UKLSsJ ICAgIGdvdG8gZXJyb3I7Ci0rCX0KLSsgICAgfQotKwotKyAgLyogRm9yIE1JIHdlIG5lZWQgdG8g ZGVhbCB3aXRoIHRoZSAiY2hpbGRyZW4iIGxpc3QgcG9wdWxhdGlvbiBvZgotKyAgICAgZWxpZGVk IGZyYW1lcywgc28gaWYgTUkgb3V0cHV0IGRldGVjdGVkIGRvIG5vdCBzZW5kIG5ld2xpbmUuICAq LwotKyAgaWYgKCEgdWlfb3V0X2lzX21pX2xpa2VfcCAob3V0KSkKLSsgICAgewotKyAgICAgIFRS WV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rCXsKLSsJICBhbm5vdGF0ZV9mcmFt ZV9lbmQgKCk7Ci0rCSAgdWlfb3V0X3RleHQgKG91dCwgIlxuIik7Ci0rCX0KLSsgICAgICBpZiAo ZXhjZXB0LnJlYXNvbiA8IDApCi0rCXsKLSsJICBnZGJweV9jb252ZXJ0X2V4Y2VwdGlvbiAoZXhj ZXB0KTsKLSsJICBnb3RvIGVycm9yOwotKwl9Ci0rICAgIH0KLSsKLSsgIGlmIChwcmludF9sb2Nh bHMpCi0rICAgIHsKLSsgICAgICBpZiAocHlfcHJpbnRfbG9jYWxzIChmaWx0ZXIsIG91dCwgYXJn c190eXBlLCBpbmRlbnQsCi0rCQkJICAgZnJhbWUpID09IFBZX0JUX0VSUk9SKQotKwlnb3RvIGVy cm9yOwotKyAgICB9Ci0rCi0rICAvKiBGaW5hbGx5IHJlY3Vyc2l2ZWx5IHByaW50IGVsaWRlZCBm cmFtZXMsIGlmIGFueS4gICovCi0rICBlbGlkZWQgID0gZ2V0X3B5X2l0ZXJfZnJvbV9mdW5jIChm aWx0ZXIsICJlbGlkZWQiKTsKLSsgIGlmIChlbGlkZWQgPT0gTlVMTCkKLSsgICAgZ290byBlcnJv cjsKLSsKLSsgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKGVsaWRlZCk7Ci0rICBpZiAoZWxpZGVk ICE9IFB5X05vbmUpCi0rICAgIHsKLSsgICAgICBQeU9iamVjdCAqaXRlbTsKLSsKLSsgICAgICBt YWtlX2NsZWFudXBfdWlfb3V0X2xpc3RfYmVnaW5fZW5kIChvdXQsICJjaGlsZHJlbiIpOwotKwot KyAgICAgIGlmICghIHVpX291dF9pc19taV9saWtlX3AgKG91dCkpCi0rCWluZGVudCsrOwotKwot KyAgICAgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0IChlbGlkZWQpKSkKLSsJewotKwkgIGVu dW0gcHlfYnRfc3RhdHVzIHN1Y2Nlc3MgPSBweV9wcmludF9mcmFtZSAoaXRlbSwgZmxhZ3MsCi0r CQkJCQkJICAgICAgYXJnc190eXBlLCBvdXQsCi0rCQkJCQkJICAgICAgaW5kZW50LAotKwkJCQkJ CSAgICAgIGxldmVsc19wcmludGVkKTsKLSsKLSsJICBpZiAoc3VjY2VzcyA9PSBQWV9CVF9FUlJP UikKLSsJICAgIHsKLSsJICAgICAgUHlfREVDUkVGIChpdGVtKTsKLSsJICAgICAgZ290byBlcnJv cjsKLSsJICAgIH0KLSsKLSsJICBQeV9ERUNSRUYgKGl0ZW0pOwotKwl9Ci0rICAgICAgaWYgKGl0 ZW0gPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCAoKSkKLSsJZ290byBlcnJvcjsKLSsgICAgfQot KwotKwotKyAgZG9fY2xlYW51cHMgKGNsZWFudXBfc3RhY2spOwotKyAgcmV0dXJuIFBZX0JUX0NP TVBMRVRFRDsKLSsKLSsgZXJyb3I6Ci0rICBkb19jbGVhbnVwcyAoY2xlYW51cF9zdGFjayk7Ci0r ICByZXR1cm4gUFlfQlRfRVJST1I7Ci0rfQotKwotKy8qIEhlbHBlciBmdW5jdGlvbiB0byBpbml0 aWF0ZSBmcmFtZSBmaWx0ZXIgaW52b2NhdGlvbiBhdCBzdGFydGluZwotKyAgIGZyYW1lIEZSQU1F LiAgKi8KLSsKLStzdGF0aWMgUHlPYmplY3QgKgotK2Jvb3RzdHJhcF9weXRob25fZnJhbWVfZmls dGVycyAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAotKwkJCQlpbnQgZnJhbWVfbG93LCBpbnQg ZnJhbWVfaGlnaCkKLSt7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHMgPQotKyAgICBtYWtl X2NsZWFudXAgKG51bGxfY2xlYW51cCwgTlVMTCk7Ci0rICBQeU9iamVjdCAqbW9kdWxlLCAqc29y dF9mdW5jLCAqaXRlcmFibGUsICpmcmFtZV9vYmosICppdGVyYXRvcjsKLSsgIFB5T2JqZWN0ICpw eV9mcmFtZV9sb3csICpweV9mcmFtZV9oaWdoOwotKwotKyAgZnJhbWVfb2JqID0gZnJhbWVfaW5m b190b19mcmFtZV9vYmplY3QgKGZyYW1lKTsKLSsgIGlmIChmcmFtZV9vYmogPT0gTlVMTCkKLSsg ICAgZ290byBlcnJvcjsKLSsgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKGZyYW1lX29iaik7Ci0r Ci0rICBtb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUgKCJnZGIuZnJhbWVzIik7Ci0rICBp ZiAobW9kdWxlID09IE5VTEwpCi0rICAgIGdvdG8gZXJyb3I7Ci0rICBtYWtlX2NsZWFudXBfcHlf ZGVjcmVmIChtb2R1bGUpOwotKwotKyAgc29ydF9mdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmlu ZyAobW9kdWxlLCAiZXhlY3V0ZV9mcmFtZV9maWx0ZXJzIik7Ci0rICBpZiAoc29ydF9mdW5jID09 IE5VTEwpCi0rICAgIGdvdG8gZXJyb3I7Ci0rICBtYWtlX2NsZWFudXBfcHlfZGVjcmVmIChzb3J0 X2Z1bmMpOwotKwotKyAgcHlfZnJhbWVfbG93ID0gUHlJbnRfRnJvbUxvbmcgKGZyYW1lX2xvdyk7 Ci0rICBpZiAocHlfZnJhbWVfbG93ID09IE5VTEwpCi0rICAgIGdvdG8gZXJyb3I7Ci0rICBtYWtl X2NsZWFudXBfcHlfZGVjcmVmIChweV9mcmFtZV9sb3cpOwotKwotKyAgcHlfZnJhbWVfaGlnaCA9 IFB5SW50X0Zyb21Mb25nIChmcmFtZV9oaWdoKTsKLSsgIGlmIChweV9mcmFtZV9oaWdoID09IE5V TEwpCi0rICAgIGdvdG8gZXJyb3I7Ci0rICBtYWtlX2NsZWFudXBfcHlfZGVjcmVmIChweV9mcmFt ZV9oaWdoKTsKLSsKLSsgIGl0ZXJhYmxlID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyAo c29ydF9mdW5jLCBmcmFtZV9vYmosCi0rCQkJCQkgICBweV9mcmFtZV9sb3csCi0rCQkJCQkgICBw eV9mcmFtZV9oaWdoLAotKwkJCQkJICAgTlVMTCk7Ci0rICBpZiAoaXRlcmFibGUgPT0gTlVMTCkK LSsgICAgZ290byBlcnJvcjsKLSsKLSsgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Ci0rCi0rICBp ZiAoaXRlcmFibGUgIT0gUHlfTm9uZSkKLSsgICAgewotKyAgICAgIGl0ZXJhdG9yID0gUHlPYmpl Y3RfR2V0SXRlciAoaXRlcmFibGUpOwotKyAgICAgIFB5X0RFQ1JFRiAoaXRlcmFibGUpOwotKyAg ICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICByZXR1cm4gaXRlcmFibGU7Ci0rICAgIH0KLSsK LSsgIHJldHVybiBpdGVyYXRvcjsKLSsKLSsgZXJyb3I6Ci0rICBkb19jbGVhbnVwcyAoY2xlYW51 cHMpOwotKyAgcmV0dXJuIE5VTEw7Ci0rfQotKwotKy8qICBUaGlzIGlzIHRoZSBvbmx5IHB1Ymxp Y2x5IGV4cG9ydGVkIGZ1bmN0aW9uIGluIHRoaXMgZmlsZS4gIEZSQU1FCi0rICAgIGlzIHRoZSBz b3VyY2UgZnJhbWUgdG8gc3RhcnQgZnJhbWUtZmlsdGVyIGludm9jYXRpb24uICBGTEFHUyBpcyBh bgotKyAgICBpbnRlZ2VyIGhvbGRpbmcgdGhlIGZsYWdzIGZvciBwcmludGluZy4gIFRoZSBmb2xs b3dpbmcgZWxlbWVudHMgb2YKLSsgICAgdGhlIEZSQU1FX0ZJTFRFUl9GTEFHUyBlbnVtIGRlbm90 ZXMgdGhlIG1ha2UtdXAgb2YgRkxBR1M6Ci0rICAgIFBSSU5UX0xFVkVMIGlzIGEgZmxhZyBpbmRp Y2F0aW5nIHdoZXRoZXIgdG8gcHJpbnQgdGhlIGZyYW1lJ3MKLSsgICAgcmVsYXRpdmUgbGV2ZWwg aW4gdGhlIG91dHB1dC4gIFBSSU5UX0ZSQU1FX0lORk8gaXMgYSBmbGFnIHRoYXQKLSsgICAgaW5k aWNhdGVzIHdoZXRoZXIgdGhpcyBmdW5jdGlvbiBzaG91bGQgcHJpbnQgdGhlIGZyYW1lCi0rICAg IGluZm9ybWF0aW9uLCBQUklOVF9BUkdTIGlzIGEgZmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVy IHRvIHByaW50Ci0rICAgIGZyYW1lIGFyZ3VtZW50cywgYW5kIFBSSU5UX0xPQ0FMUywgbGlrZXdp c2UsIHdpdGggZnJhbWUgbG9jYWwKLSsgICAgdmFyaWFibGVzLiAgQVJHU19UWVBFIGlzIGFuIGVu dW1lcmF0b3IgZGVzY3JpYmluZyB0aGUgYXJndW1lbnQKLSsgICAgZm9ybWF0LCBPVVQgaXMgdGhl IG91dHB1dCBzdHJlYW0gdG8gcHJpbnQuICBGUkFNRV9MT1cgaXMgdGhlCi0rICAgIGJlZ2lubmlu ZyBvZiB0aGUgc2xpY2Ugb2YgZnJhbWVzIHRvIHByaW50LCBhbmQgRlJBTUVfSElHSCBpcyB0aGUK LSsgICAgdXBwZXIgbGltaXQgb2YgdGhlIGZyYW1lcyB0byBjb3VudC4gIFJldHVybnMgUFlfQlRf RVJST1Igb24gZXJyb3IsCi0rICAgIG9yIFBZX0JUX0NPTVBMRVRFRCBvbiBzdWNjZXNzLiovCi0r Ci0rZW51bSBweV9idF9zdGF0dXMKLSthcHBseV9mcmFtZV9maWx0ZXIgKHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZSwgaW50IGZsYWdzLAotKwkJICAgIGVudW0gcHlfZnJhbWVfYXJncyBhcmdzX3R5 cGUsCi0rCQkgICAgc3RydWN0IHVpX291dCAqb3V0LCBpbnQgZnJhbWVfbG93LAotKwkJICAgIGlu dCBmcmFtZV9oaWdoKQotKwotK3sKLSsgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gTlVMTDsK LSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKLSsgIGVudW0gcHlfYnRfc3RhdHVzIHN1Y2Nl c3MgPSBQWV9CVF9FUlJPUjsKLSsgIFB5T2JqZWN0ICppdGVyYWJsZTsKLSsgIHZvbGF0aWxlIHN0 cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsgIFB5T2JqZWN0ICppdGVtOwotKyAgaHRhYl90 IGxldmVsc19wcmludGVkOwotKwotKyAgY2xlYW51cHMgPSBlbnN1cmVfcHl0aG9uX2VudiAoZ2Ri YXJjaCwgY3VycmVudF9sYW5ndWFnZSk7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJO X01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAgZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFt ZSk7Ci0rICAgIH0KLSsgIGlmIChleGNlcHQucmVhc29uIDwgMCkKLSsgICAgewotKyAgICAgIGdk YnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKyAgICAgIGdvdG8gZXJyb3I7Ci0rICAg IH0KLSsKLSsgIGl0ZXJhYmxlID0gYm9vdHN0cmFwX3B5dGhvbl9mcmFtZV9maWx0ZXJzIChmcmFt ZSwgZnJhbWVfbG93LCBmcmFtZV9oaWdoKTsKLSsKLSsgIGlmIChpdGVyYWJsZSA9PSBOVUxMKQot KyAgICBnb3RvIGVycm9yOwotKwotKyAgLyogSWYgaXRlcmFibGUgaXMgTm9uZSwgdGhlbiB0aGVy ZSBhcmUgbm8gZnJhbWUgZmlsdGVycyByZWdpc3RlcmVkLgotKyAgICAgSWYgdGhpcyBpcyB0aGUg Y2FzZSwgZGVmZXIgdG8gZGVmYXVsdCBHREIgcHJpbnRpbmcgcm91dGluZXMgaW4gTUkKLSsgICAg IGFuZCBDTEkuICAqLwotKyAgbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAoaXRlcmFibGUpOwotKyAg aWYgKGl0ZXJhYmxlID09IFB5X05vbmUpCi0rICAgIHsKLSsgICAgICBzdWNjZXNzID0gUFlfQlRf Tk9fRklMVEVSUzsKLSsgICAgICBnb3RvIGRvbmU7Ci0rICAgIH0KLSsKLSsgIGxldmVsc19wcmlu dGVkID0gaHRhYl9jcmVhdGUgKDIwLAotKwkJCQlodGFiX2hhc2hfcG9pbnRlciwKLSsJCQkJaHRh Yl9lcV9wb2ludGVyLAotKwkJCQlOVUxMKTsKLSsgIG1ha2VfY2xlYW51cF9odGFiX2RlbGV0ZSAo bGV2ZWxzX3ByaW50ZWQpOwotKwotKyAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQgKGl0ZXJh YmxlKSkpCi0rICAgIHsKLSsgICAgICBzdWNjZXNzID0gcHlfcHJpbnRfZnJhbWUgKGl0ZW0sIGZs YWdzLCBhcmdzX3R5cGUsIG91dCwgMCwKLSsJCQkJbGV2ZWxzX3ByaW50ZWQpOwotKwotKyAgICAg IC8qIERvIG5vdCBleGl0IG9uIGVycm9yIHByaW50aW5nIGEgc2luZ2xlIGZyYW1lLiAgUHJpbnQg dGhlCi0rCSBlcnJvciBhbmQgY29udGludWUgd2l0aCBvdGhlciBmcmFtZXMuICAqLwotKyAgICAg IGlmIChzdWNjZXNzID09IFBZX0JUX0VSUk9SKQotKwlnZGJweV9wcmludF9zdGFjayAoKTsKLSsK LSsgICAgICBQeV9ERUNSRUYgKGl0ZW0pOwotKyAgICB9Ci0rCi0rICBpZiAoaXRlbSA9PSBOVUxM ICYmIFB5RXJyX09jY3VycmVkICgpKQotKyAgICBnb3RvIGVycm9yOwotKwotKyBkb25lOgotKyAg ZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKLSsgIHJldHVybiBzdWNjZXNzOwotKwotKyBlcnJvcjoK LSsgIGdkYnB5X3ByaW50X3N0YWNrICgpOwotKyAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKLSsg IHJldHVybiBQWV9CVF9FUlJPUjsKLSt9Ci1JbmRleDogZ2RiLTcuNi9nZGIvcHl0aG9uL3B5LW9i amZpbGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvcHl0aG9uL3B5LW9iamZp bGUuYwkyMDEzLTA2LTEwIDE0OjMxOjAyLjczMTA4NDY1MiArMDIwMAotKysrIGdkYi03LjYvZ2Ri L3B5dGhvbi9weS1vYmpmaWxlLmMJMjAxMy0wNi0xMCAxNDozMTowOC4zNjYwODI0MzcgKzAyMDAK LUBAIC0zMyw2ICszMyw4IEBAIHR5cGVkZWYgc3RydWN0Ci0gICAvKiBUaGUgcHJldHR5LXByaW50 ZXIgbGlzdCBvZiBmdW5jdGlvbnMuICAqLwotICAgUHlPYmplY3QgKnByaW50ZXJzOwotIAotKyAg LyogVGhlIGZyYW1lIGZpbHRlciBsaXN0IG9mIGZ1bmN0aW9ucy4gICovCi0rICBQeU9iamVjdCAq ZnJhbWVfZmlsdGVyczsKLSAgIC8qIFRoZSB0eXBlLXByaW50ZXIgbGlzdC4gICovCi0gICBQeU9i amVjdCAqdHlwZV9wcmludGVyczsKLSB9IG9iamZpbGVfb2JqZWN0OwotQEAgLTYxLDYgKzYzLDcg QEAgb2JqZnB5X2RlYWxsb2MgKFB5T2JqZWN0ICpvKQotICAgb2JqZmlsZV9vYmplY3QgKnNlbGYg PSAob2JqZmlsZV9vYmplY3QgKikgbzsKLSAKLSAgIFB5X1hERUNSRUYgKHNlbGYtPnByaW50ZXJz KTsKLSsgIFB5X1hERUNSRUYgKHNlbGYtPmZyYW1lX2ZpbHRlcnMpOwotICAgUHlfWERFQ1JFRiAo c2VsZi0+dHlwZV9wcmludGVycyk7Ci0gICBQeV9UWVBFIChzZWxmKS0+dHBfZnJlZSAoc2VsZik7 Ci0gfQotQEAgLTgxLDYgKzg0LDEzIEBAIG9iamZweV9uZXcgKFB5VHlwZU9iamVjdCAqdHlwZSwg UHlPYmplY3QKLSAJICByZXR1cm4gTlVMTDsKLSAJfQotIAotKyAgICAgIHNlbGYtPmZyYW1lX2Zp bHRlcnMgPSBQeURpY3RfTmV3ICgpOwotKyAgICAgIGlmICghc2VsZi0+ZnJhbWVfZmlsdGVycykK LSsJewotKwkgIFB5X0RFQ1JFRiAoc2VsZik7Ci0rCSAgcmV0dXJuIE5VTEw7Ci0rCX0KLSsKLSAg ICAgICBzZWxmLT50eXBlX3ByaW50ZXJzID0gUHlMaXN0X05ldyAoMCk7Ci0gICAgICAgaWYgKCFz ZWxmLT50eXBlX3ByaW50ZXJzKQotIAl7Ci1AQCAtMTI5LDYgKzEzOSw0NyBAQCBvYmpmcHlfc2V0 X3ByaW50ZXJzIChQeU9iamVjdCAqbywgUHlPYmplCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0rLyog UmV0dXJuIHRoZSBQeXRob24gZGljdGlvbmFyeSBhdHRyaWJ1dGUgY29udGFpbmluZyBmcmFtZSBm aWx0ZXJzIGZvcgotKyAgIHRoaXMgb2JqZWN0IGZpbGUuICAqLwotK1B5T2JqZWN0ICoKLStvYmpm cHlfZ2V0X2ZyYW1lX2ZpbHRlcnMgKFB5T2JqZWN0ICpvLCB2b2lkICppZ25vcmUpCi0rewotKyAg b2JqZmlsZV9vYmplY3QgKnNlbGYgPSAob2JqZmlsZV9vYmplY3QgKikgbzsKLSsKLSsgIFB5X0lO Q1JFRiAoc2VsZi0+ZnJhbWVfZmlsdGVycyk7Ci0rICByZXR1cm4gc2VsZi0+ZnJhbWVfZmlsdGVy czsKLSt9Ci0rCi0rLyogU2V0IHRoaXMgb2JqZWN0IGZpbGUncyBmcmFtZSBmaWx0ZXJzIGRpY3Rp b25hcnkgdG8gRklMVEVSUy4gICovCi0rc3RhdGljIGludAotK29iamZweV9zZXRfZnJhbWVfZmls dGVycyAoUHlPYmplY3QgKm8sIFB5T2JqZWN0ICpmaWx0ZXJzLCB2b2lkICppZ25vcmUpCi0rewot KyAgUHlPYmplY3QgKnRtcDsKLSsgIG9iamZpbGVfb2JqZWN0ICpzZWxmID0gKG9iamZpbGVfb2Jq ZWN0ICopIG87Ci0rCi0rICBpZiAoISBmaWx0ZXJzKQotKyAgICB7Ci0rICAgICAgUHlFcnJfU2V0 U3RyaW5nIChQeUV4Y19UeXBlRXJyb3IsCi0rCQkgICAgICAgXygiQ2Fubm90IGRlbGV0ZSB0aGUg ZnJhbWUgZmlsdGVycyBhdHRyaWJ1dGUuIikpOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAgfQot KwotKyAgaWYgKCEgUHlEaWN0X0NoZWNrIChmaWx0ZXJzKSkKLSsgICAgewotKyAgICAgIFB5RXJy X1NldFN0cmluZyAoUHlFeGNfVHlwZUVycm9yLAotKwkJICAgICAgIF8oIlRoZSBmcmFtZV9maWx0 ZXJzIGF0dHJpYnV0ZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKSk7Ci0rICAgICAgcmV0dXJuIC0x OwotKyAgICB9Ci0rCi0rICAvKiBUYWtlIGNhcmUgaW4gY2FzZSB0aGUgTEhTIGFuZCBSSFMgYXJl IHJlbGF0ZWQgc29tZWhvdy4gICovCi0rICB0bXAgPSBzZWxmLT5mcmFtZV9maWx0ZXJzOwotKyAg UHlfSU5DUkVGIChmaWx0ZXJzKTsKLSsgIHNlbGYtPmZyYW1lX2ZpbHRlcnMgPSBmaWx0ZXJzOwot KyAgUHlfWERFQ1JFRiAodG1wKTsKLSsKLSsgIHJldHVybiAwOwotK30KLSsKLSAvKiBHZXQgdGhl ICd0eXBlX3ByaW50ZXJzJyBhdHRyaWJ1dGUuICAqLwotIAotIHN0YXRpYyBQeU9iamVjdCAqCi1A QCAtMjI1LDYgKzI3NiwxMyBAQCBvYmpmaWxlX3RvX29iamZpbGVfb2JqZWN0IChzdHJ1Y3Qgb2Jq ZmlsCi0gCSAgICAgIHJldHVybiBOVUxMOwotIAkgICAgfQotIAotKwkgIG9iamVjdC0+ZnJhbWVf ZmlsdGVycyA9IFB5RGljdF9OZXcgKCk7Ci0rCSAgaWYgKCFvYmplY3QtPmZyYW1lX2ZpbHRlcnMp Ci0rCSAgICB7Ci0rCSAgICAgIFB5X0RFQ1JFRiAob2JqZWN0KTsKLSsJICAgICAgcmV0dXJuIE5V TEw7Ci0rCSAgICB9Ci0rCi0gCSAgb2JqZWN0LT50eXBlX3ByaW50ZXJzID0gUHlMaXN0X05ldyAo MCk7Ci0gCSAgaWYgKCFvYmplY3QtPnR5cGVfcHJpbnRlcnMpCi0gCSAgICB7Ci1AQCAtMjcwLDYg KzMyOCw4IEBAIHN0YXRpYyBQeUdldFNldERlZiBvYmpmaWxlX2dldHNldFtdID0KLSAgICAgIlRo ZSBvYmpmaWxlJ3MgZmlsZW5hbWUsIG9yIE5vbmUuIiwgTlVMTCB9LAotICAgeyAicHJldHR5X3By aW50ZXJzIiwgb2JqZnB5X2dldF9wcmludGVycywgb2JqZnB5X3NldF9wcmludGVycywKLSAgICAg IlByZXR0eSBwcmludGVycy4iLCBOVUxMIH0sCi0rICB7ICJmcmFtZV9maWx0ZXJzIiwgb2JqZnB5 X2dldF9mcmFtZV9maWx0ZXJzLAotKyAgICBvYmpmcHlfc2V0X2ZyYW1lX2ZpbHRlcnMsICJGcmFt ZSBGaWx0ZXJzLiIsIE5VTEwgfSwKLSAgIHsgInR5cGVfcHJpbnRlcnMiLCBvYmpmcHlfZ2V0X3R5 cGVfcHJpbnRlcnMsIG9iamZweV9zZXRfdHlwZV9wcmludGVycywKLSAgICAgIlR5cGUgcHJpbnRl cnMuIiwgTlVMTCB9LAotICAgeyBOVUxMIH0KLUluZGV4OiBnZGItNy42L2dkYi9weXRob24vcHkt cHJvZ3NwYWNlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3B5dGhvbi9weS1w cm9nc3BhY2UuYwkyMDEzLTA2LTEwIDE0OjMxOjAyLjczMTA4NDY1MiArMDIwMAotKysrIGdkYi03 LjYvZ2RiL3B5dGhvbi9weS1wcm9nc3BhY2UuYwkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2NjA4MjQz NyArMDIwMAotQEAgLTM1LDYgKzM1LDggQEAgdHlwZWRlZiBzdHJ1Y3QKLSAgIC8qIFRoZSBwcmV0 dHktcHJpbnRlciBsaXN0IG9mIGZ1bmN0aW9ucy4gICovCi0gICBQeU9iamVjdCAqcHJpbnRlcnM7 Ci0gCi0rICAvKiBUaGUgZnJhbWUgZmlsdGVyIGxpc3Qgb2YgZnVuY3Rpb25zLiAgKi8KLSsgIFB5 T2JqZWN0ICpmcmFtZV9maWx0ZXJzOwotICAgLyogVGhlIHR5cGUtcHJpbnRlciBsaXN0LiAgKi8K LSAgIFB5T2JqZWN0ICp0eXBlX3ByaW50ZXJzOwotIH0gcHNwYWNlX29iamVjdDsKLUBAIC02OSw2 ICs3MSw3IEBAIHBzcHlfZGVhbGxvYyAoUHlPYmplY3QgKnNlbGYpCi0gICBwc3BhY2Vfb2JqZWN0 ICpwc19zZWxmID0gKHBzcGFjZV9vYmplY3QgKikgc2VsZjsKLSAKLSAgIFB5X1hERUNSRUYgKHBz X3NlbGYtPnByaW50ZXJzKTsKLSsgIFB5X1hERUNSRUYgKHBzX3NlbGYtPmZyYW1lX2ZpbHRlcnMp OwotICAgUHlfWERFQ1JFRiAocHNfc2VsZi0+dHlwZV9wcmludGVycyk7Ci0gICBQeV9UWVBFIChz ZWxmKS0+dHBfZnJlZSAoc2VsZik7Ci0gfQotQEAgLTg5LDYgKzkyLDEzIEBAIHBzcHlfbmV3IChQ eVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICoKLSAJICByZXR1cm4gTlVMTDsKLSAJfQotIAot KyAgICAgIHNlbGYtPmZyYW1lX2ZpbHRlcnMgPSBQeURpY3RfTmV3ICgpOwotKyAgICAgIGlmICgh c2VsZi0+ZnJhbWVfZmlsdGVycykKLSsJewotKwkgIFB5X0RFQ1JFRiAoc2VsZik7Ci0rCSAgcmV0 dXJuIE5VTEw7Ci0rCX0KLSsKLSAgICAgICBzZWxmLT50eXBlX3ByaW50ZXJzID0gUHlMaXN0X05l dyAoMCk7Ci0gICAgICAgaWYgKCFzZWxmLT50eXBlX3ByaW50ZXJzKQotIAl7Ci1AQCAtMTM3LDYg KzE0Nyw0NyBAQCBwc3B5X3NldF9wcmludGVycyAoUHlPYmplY3QgKm8sIFB5T2JqZWN0Ci0gICBy ZXR1cm4gMDsKLSB9Ci0gCi0rLyogUmV0dXJuIHRoZSBQeXRob24gZGljdGlvbmFyeSBhdHRyaWJ1 dGUgY29udGFpbmluZyBmcmFtZSBmaWx0ZXJzIGZvcgotKyAgIHRoaXMgcHJvZ3JhbSBzcGFjZS4g ICovCi0rUHlPYmplY3QgKgotK3BzcHlfZ2V0X2ZyYW1lX2ZpbHRlcnMgKFB5T2JqZWN0ICpvLCB2 b2lkICppZ25vcmUpCi0rewotKyAgcHNwYWNlX29iamVjdCAqc2VsZiA9IChwc3BhY2Vfb2JqZWN0 ICopIG87Ci0rCi0rICBQeV9JTkNSRUYgKHNlbGYtPmZyYW1lX2ZpbHRlcnMpOwotKyAgcmV0dXJu IHNlbGYtPmZyYW1lX2ZpbHRlcnM7Ci0rfQotKwotKy8qIFNldCB0aGlzIG9iamVjdCBmaWxlJ3Mg ZnJhbWUgZmlsdGVycyBkaWN0aW9uYXJ5IHRvIEZJTFRFUlMuICAqLwotK3N0YXRpYyBpbnQKLStw c3B5X3NldF9mcmFtZV9maWx0ZXJzIChQeU9iamVjdCAqbywgUHlPYmplY3QgKmZyYW1lLCB2b2lk ICppZ25vcmUpCi0rewotKyAgUHlPYmplY3QgKnRtcDsKLSsgIHBzcGFjZV9vYmplY3QgKnNlbGYg PSAocHNwYWNlX29iamVjdCAqKSBvOwotKwotKyAgaWYgKCEgZnJhbWUpCi0rICAgIHsKLSsgICAg ICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1R5cGVFcnJvciwKLSsJCSAgICAgICAiY2Fubm90IGRl bGV0ZSB0aGUgZnJhbWUgZmlsdGVyIGF0dHJpYnV0ZSIpOwotKyAgICAgIHJldHVybiAtMTsKLSsg ICAgfQotKwotKyAgaWYgKCEgUHlEaWN0X0NoZWNrIChmcmFtZSkpCi0rICAgIHsKLSsgICAgICBQ eUVycl9TZXRTdHJpbmcgKFB5RXhjX1R5cGVFcnJvciwKLSsJCSAgICAgICAidGhlIGZyYW1lIGZp bHRlciBhdHRyaWJ1dGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkiKTsKLSsgICAgICByZXR1cm4gLTE7 Ci0rICAgIH0KLSsKLSsgIC8qIFRha2UgY2FyZSBpbiBjYXNlIHRoZSBMSFMgYW5kIFJIUyBhcmUg cmVsYXRlZCBzb21laG93LiAgKi8KLSsgIHRtcCA9IHNlbGYtPmZyYW1lX2ZpbHRlcnM7Ci0rICBQ eV9JTkNSRUYgKGZyYW1lKTsKLSsgIHNlbGYtPmZyYW1lX2ZpbHRlcnMgPSBmcmFtZTsKLSsgIFB5 X1hERUNSRUYgKHRtcCk7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0gLyogR2V0IHRoZSAndHlw ZV9wcmludGVycycgYXR0cmlidXRlLiAgKi8KLSAKLSBzdGF0aWMgUHlPYmplY3QgKgotQEAgLTIy MSw2ICsyNzIsMTMgQEAgcHNwYWNlX3RvX3BzcGFjZV9vYmplY3QgKHN0cnVjdCBwcm9ncmFtXwot IAkgICAgICByZXR1cm4gTlVMTDsKLSAJICAgIH0KLSAKLSsJICBvYmplY3QtPmZyYW1lX2ZpbHRl cnMgPSBQeURpY3RfTmV3ICgpOwotKwkgIGlmICghb2JqZWN0LT5mcmFtZV9maWx0ZXJzKQotKwkg ICAgewotKwkgICAgICBQeV9ERUNSRUYgKG9iamVjdCk7Ci0rCSAgICAgIHJldHVybiBOVUxMOwot KwkgICAgfQotKwotIAkgIG9iamVjdC0+dHlwZV9wcmludGVycyA9IFB5TGlzdF9OZXcgKDApOwot IAkgIGlmICghb2JqZWN0LT50eXBlX3ByaW50ZXJzKQotIAkgICAgewotQEAgLTI1Nyw2ICszMTUs OCBAQCBzdGF0aWMgUHlHZXRTZXREZWYgcHNwYWNlX2dldHNldFtdID0KLSAgICAgIlRoZSBwcm9n c3BhY2UncyBtYWluIGZpbGVuYW1lLCBvciBOb25lLiIsIE5VTEwgfSwKLSAgIHsgInByZXR0eV9w cmludGVycyIsIHBzcHlfZ2V0X3ByaW50ZXJzLCBwc3B5X3NldF9wcmludGVycywKLSAgICAgIlBy ZXR0eSBwcmludGVycy4iLCBOVUxMIH0sCi0rICB7ICJmcmFtZV9maWx0ZXJzIiwgcHNweV9nZXRf ZnJhbWVfZmlsdGVycywgcHNweV9zZXRfZnJhbWVfZmlsdGVycywKLSsgICAgIkZyYW1lIGZpbHRl cnMuIiwgTlVMTCB9LAotICAgeyAidHlwZV9wcmludGVycyIsIHBzcHlfZ2V0X3R5cGVfcHJpbnRl cnMsIHBzcHlfc2V0X3R5cGVfcHJpbnRlcnMsCi0gICAgICJUeXBlIHByaW50ZXJzLiIsIE5VTEwg fSwKLSAgIHsgTlVMTCB9Ci1JbmRleDogZ2RiLTcuNi9nZGIvcHl0aG9uL3B5LXV0aWxzLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3B5dGhvbi9weS11dGlscy5jCTIwMTMtMDYt MTAgMTQ6MzE6MDIuNzMyMDg0NjUyICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvcHl0aG9uL3B5LXV0 aWxzLmMJMjAxMy0wNi0xMCAxNDozMTowOC4zNjYwODI0MzcgKzAyMDAKLUBAIC00OCw2ICs0OCwy OCBAQCBtYWtlX2NsZWFudXBfcHlfZGVjcmVmIChQeU9iamVjdCAqcHkpCi0gICByZXR1cm4gbWFr ZV9jbGVhbnVwIChweV9kZWNyZWYsICh2b2lkICopIHB5KTsKLSB9Ci0gCi0rLyogVGhpcyBpcyBh IGNsZWFudXAgZnVuY3Rpb24gd2hpY2ggZGVjcmVtZW50cyB0aGUgcmVmY291bnQgb24gYQotKyAg IFB5dGhvbiBvYmplY3QuICBUaGlzIGZ1bmN0aW9uIGFjY291bnRzIGFwcHJvcHJpYXRlbHkgZm9y IE5VTEwKLSsgICByZWZlcmVuY2VzLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3B5X3hkZWNyZWYg KHZvaWQgKnApCi0rewotKyAgUHlPYmplY3QgKnB5ID0gcDsKLSsKLSsgIFB5X1hERUNSRUYgKHB5 KTsKLSt9Ci0rCi0rLyogUmV0dXJuIGEgbmV3IGNsZWFudXAgd2hpY2ggd2lsbCBkZWNyZW1lbnQg dGhlIFB5dGhvbiBvYmplY3QncwotKyAgIHJlZmNvdW50IHdoZW4gcnVuLiAgQWNjb3VudCBmb3Ig YW5kIG9wZXJhdGUgb24gTlVMTCByZWZlcmVuY2VzCi0rICAgY29ycmVjdGx5LiAgKi8KLSsKLStz dHJ1Y3QgY2xlYW51cCAqCi0rbWFrZV9jbGVhbnVwX3B5X3hkZWNyZWYgKFB5T2JqZWN0ICpweSkK LSt7Ci0rICByZXR1cm4gbWFrZV9jbGVhbnVwIChweV94ZGVjcmVmLCBweSk7Ci0rfQotKwotIC8q IENvbnZlcnRzIGEgUHl0aG9uIDgtYml0IHN0cmluZyB0byBhIHVuaWNvZGUgc3RyaW5nIG9iamVj dC4gIEFzc3VtZXMgdGhlCi0gICAgOC1iaXQgc3RyaW5nIGlzIGluIHRoZSBob3N0IGNoYXJzZXQu ICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIGNvbnZlcnNpb24sCi0gICAgcmV0dXJucyBOVUxM IHdpdGggYSBweXRob24gZXhjZXB0aW9uIHNldC4KLUluZGV4OiBnZGItNy42L2dkYi9weXRob24v cHl0aG9uLWludGVybmFsLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3B5dGhv bi9weXRob24taW50ZXJuYWwuaAkyMDEzLTA2LTEwIDE0OjMxOjAyLjczMjA4NDY1MiArMDIwMAot KysrIGdkYi03LjYvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyMDEzLTA2LTEwIDE0OjMx OjA4LjM2NzA4MjQzNiArMDIwMAotQEAgLTI1MSw5ICsyNTEsMTEgQEAgUHlPYmplY3QgKmZyYW1l X2luZm9fdG9fZnJhbWVfb2JqZWN0IChzdAotIAotIFB5T2JqZWN0ICpwc3BhY2VfdG9fcHNwYWNl X29iamVjdCAoc3RydWN0IHByb2dyYW1fc3BhY2UgKik7Ci0gUHlPYmplY3QgKnBzcHlfZ2V0X3By aW50ZXJzIChQeU9iamVjdCAqLCB2b2lkICopOwotK1B5T2JqZWN0ICpwc3B5X2dldF9mcmFtZV9m aWx0ZXJzIChQeU9iamVjdCAqLCB2b2lkICopOwotIAotIFB5T2JqZWN0ICpvYmpmaWxlX3RvX29i amZpbGVfb2JqZWN0IChzdHJ1Y3Qgb2JqZmlsZSAqKTsKLSBQeU9iamVjdCAqb2JqZnB5X2dldF9w cmludGVycyAoUHlPYmplY3QgKiwgdm9pZCAqKTsKLStQeU9iamVjdCAqb2JqZnB5X2dldF9mcmFt ZV9maWx0ZXJzIChQeU9iamVjdCAqLCB2b2lkICopOwotIAotIFB5T2JqZWN0ICpnZGJhcmNoX3Rv X2FyY2hfb2JqZWN0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7Ci0gCi1AQCAtMzA0LDYgKzMw Niw3IEBAIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9uZXdfb2JqZmlsZV9ldmVudAotIHZvaWQgZ2Ri cHlfaW5pdGlhbGl6ZV9hcmNoICh2b2lkKTsKLSAKLSBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVh bnVwX3B5X2RlY3JlZiAoUHlPYmplY3QgKnB5KTsKLStzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVh bnVwX3B5X3hkZWNyZWYgKFB5T2JqZWN0ICpweSk7Ci0gCi0gc3RydWN0IGNsZWFudXAgKmVuc3Vy ZV9weXRob25fZW52IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAJCQkJICAgY29uc3Qgc3Ry dWN0IGxhbmd1YWdlX2RlZm4gKmxhbmd1YWdlKTsKLUluZGV4OiBnZGItNy42L2dkYi9weXRob24v cHl0aG9uLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3B5dGhvbi9weXRob24u YwkyMDEzLTA2LTEwIDE0OjMxOjAyLjczMjA4NDY1MiArMDIwMAotKysrIGdkYi03LjYvZ2RiL3B5 dGhvbi9weXRob24uYwkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2NzA4MjQzNiArMDIwMAotQEAgLTE0 NDIsNiArMTQ0MiwxNSBAQCBmcmVlX3R5cGVfcHJpbnRlcnMgKHZvaWQgKmFyZykKLSB7Ci0gfQot IAotK2VudW0gcHlfYnRfc3RhdHVzCi0rYXBwbHlfZnJhbWVfZmlsdGVyIChzdHJ1Y3QgZnJhbWVf aW5mbyAqZnJhbWUsIGludCBmbGFncywKLSsJCSAgICBlbnVtIHB5X2ZyYW1lX2FyZ3MgYXJnc190 eXBlLAotKwkJICAgIHN0cnVjdCB1aV9vdXQgKm91dCwgaW50IGZyYW1lX2xvdywKLSsJCSAgICBp bnQgZnJhbWVfaGlnaCkKLSt7Ci0rICByZXR1cm4gUFlfQlRfTk9fRklMVEVSUzsKLSt9Ci0rCi0g I2VuZGlmIC8qIEhBVkVfUFlUSE9OICovCi0gCi0gDAotSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhv bi9weXRob24uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvcHl0aG9uL3B5dGhv bi5oCTIwMTMtMDYtMTAgMTQ6MzE6MDIuNzMyMDg0NjUyICswMjAwCi0rKysgZ2RiLTcuNi9nZGIv cHl0aG9uL3B5dGhvbi5oCTIwMTMtMDYtMTAgMTQ6MzE6MDguMzY3MDgyNDM2ICswMjAwCi1AQCAt MjEsNiArMjEsNyBAQAotICNkZWZpbmUgR0RCX1BZVEhPTl9ICi0gCi0gI2luY2x1ZGUgInZhbHVl LmgiCi0rI2luY2x1ZGUgIm1pL21pLWNtZHMuaCIKLSAKLSBzdHJ1Y3QgYnJlYWtwb2ludF9vYmpl Y3Q7Ci0gCi1AQCAtMjgsNiArMjksNjYgQEAgc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0OwotICAg IEUuZy4gV2hlbiB0aGUgcHJvZ3JhbSBsb2FkcyBsaWJmb28uc28sIGxvb2sgZm9yIGxpYmZvby1n ZGIucHkuICAqLwotICNkZWZpbmUgR0RCUFlfQVVUT19GSUxFX05BTUUgIi1nZGIucHkiCi0gCi0r LyogUHl0aG9uIGZyYW1lLWZpbHRlciBzdGF0dXMgcmV0dXJuIHZhbHVlcy4gICovCi0rZW51bSBw eV9idF9zdGF0dXMKLSsgIHsKLSsgICAgLyogUmV0dXJuIHdoZW4gYW4gZXJyb3IgaGFzIG9jY3Vy cmVkIGluIHByb2Nlc3NpbmcgZnJhbWUgZmlsdGVycywKLSsgICAgICAgb3Igd2hlbiBwcmludGlu ZyB0aGUgc3RhY2suICAqLwotKyAgICBQWV9CVF9FUlJPUiA9IC0xLAotKwotKyAgICAvKiBSZXR1 cm4gZnJvbSBpbnRlcm5hbCByb3V0aW5lcyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBmdW5jdGlvbgot KyAgICAgICBzdWNjZWVkZWQuICAqLwotKyAgICBQWV9CVF9PSyA9IDEsCi0rCi0rICAgIC8qIFJl dHVybiB3aGVuIHRoZSBmcmFtZSBmaWx0ZXIgcHJvY2VzcyBpcyBjb21wbGV0ZSwgYW5kIGFsbAot KyAgICAgICBvcGVyYXRpb25zIGhhdmUgc3VjY2VlZGVkLiAgKi8KLSsgICAgUFlfQlRfQ09NUExF VEVEID0gMiwKLSsKLSsgICAgLyogUmV0dXJuIHdoZW4gdGhlIGZyYW1lIGZpbHRlciBwcm9jZXNz IGlzIGNvbXBsZXRlLCBidXQgdGhlcmUKLSsgICAgICAgd2VyZSBubyBmaWx0ZXIgcmVnaXN0ZXJl ZCBhbmQgZW5hYmxlZCB0byBwcm9jZXNzLiAqLwotKyAgICBQWV9CVF9OT19GSUxURVJTID0gMwot KyAgfTsKLSsKLSsvKiBGbGFncyB0byBwYXNzIHRvIGFwcGx5X2ZyYW1lX2ZpbHRlci4gICovCi0r Ci0rZW51bSBmcmFtZV9maWx0ZXJfZmxhZ3MKLSsgIHsKLSsgICAgLyogU2V0IHRoaXMgZmxhZyBp ZiBmcmFtZSBsZXZlbCBpcyB0byBiZSBwcmludGVkLiAgKi8KLSsgICAgUFJJTlRfTEVWRUwgPSAx LAotKwotKyAgICAvKiBTZXQgdGhpcyBmbGFnIGlmIGZyYW1lIGluZm9ybWF0aW9uIGlzIHRvIGJl IHByaW50ZWQuICAqLwotKyAgICBQUklOVF9GUkFNRV9JTkZPID0gMiwKLSsKLSsgICAgLyogU2V0 IHRoaXMgZmxhZyBpZiBmcmFtZSBhcmd1bWVudHMgYXJlIHRvIGJlIHByaW50ZWQuICAqLwotKyAg ICBQUklOVF9BUkdTID0gNCwKLSsKLSsgICAgLyogU2V0IHRoaXMgZmxhZyBpZiBmcmFtZSBsb2Nh bHMgYXJlIHRvIGJlIHByaW50ZWQuICAqLwotKyAgICBQUklOVF9MT0NBTFMgPSA4LAotKyAgfTsK LSsKLSsvKiBBIGNob2ljZSBvZiB0aGUgZGlmZmVyZW50IGZyYW1lIGFyZ3VtZW50IHByaW50aW5n IHN0cmF0ZWdpZXMgdGhhdAotKyAgIGNhbiBvY2N1ciBpbiBkaWZmZXJlbnQgY2FzZXMgb2YgZnJh bWUgZmlsdGVyIGluc3RhbnRpYXRpb24uICAqLwotK3R5cGVkZWYgZW51bSBweV9mcmFtZV9hcmdz Ci0rewotKyAgLyogUHJpbnQgbm8gdmFsdWVzIGZvciBhcmd1bWVudHMgd2hlbiBpbnZva2VkIGZy b20gdGhlIE1JLiAqLwotKyAgTk9fVkFMVUVTID0gUFJJTlRfTk9fVkFMVUVTLAotKwotKyAgTUlf UFJJTlRfQUxMX1ZBTFVFUyA9IFBSSU5UX0FMTF9WQUxVRVMsCi0rCi0rICAvKiBQcmludCBvbmx5 IHNpbXBsZSB2YWx1ZXMgKHdoYXQgTUkgZGVmaW5lcyBhcyAic2ltcGxlIikgZm9yCi0rICAgICBh cmd1bWVudHMgd2hlbiBpbnZva2VkIGZyb20gdGhlIE1JLiAqLwotKyAgTUlfUFJJTlRfU0lNUExF X1ZBTFVFUyA9IFBSSU5UX1NJTVBMRV9WQUxVRVMsCi0rCi0rCi0rICAvKiBQcmludCBvbmx5IHNj YWxhciB2YWx1ZXMgZm9yIGFyZ3VtZW50cyB3aGVuIGludm9rZWQgZnJvbSB0aGUKLSsgICAgIENM SS4gKi8KLSsgIENMSV9TQ0FMQVJfVkFMVUVTLAotKwotKyAgLyogUHJpbnQgYWxsIHZhbHVlcyBm b3IgYXJndW1lbnRzIHdoZW4gaW52b2tlZCBmcm9tIHRoZQotKyAgICAgQ0xJLiAqLwotKyAgQ0xJ X0FMTF9WQUxVRVMKLSt9IHB5X2ZyYW1lX2FyZ3M7Ci0rCi0gZXh0ZXJuIHZvaWQgZmluaXNoX3B5 dGhvbl9pbml0aWFsaXphdGlvbiAodm9pZCk7Ci0gCi0gdm9pZCBldmFsX3B5dGhvbl9mcm9tX2Nv bnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1hbmRfbGluZSAqKTsKLUBAIC00Myw2ICsxMDQsMTEg QEAgaW50IGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cAotIAkJCSAgICAgIGNv bnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAotIAkJCSAgICAgIGNvbnN0 IHN0cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5ndWFnZSk7Ci0gCi0rZW51bSBweV9idF9zdGF0dXMg YXBwbHlfZnJhbWVfZmlsdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIGludCBmbGFncywK LSsJCQkJICAgICAgZW51bSBweV9mcmFtZV9hcmdzIGFyZ3NfdHlwZSwKLSsJCQkJICAgICAgc3Ry dWN0IHVpX291dCAqb3V0LCBpbnQgZnJhbWVfbG93LAotKwkJCQkgICAgICBpbnQgZnJhbWVfaGln aCk7Ci0rCi0gdm9pZCBwcmVzZXJ2ZV9weXRob25fdmFsdWVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgaHRhYl90IGNvcGllZF90eXBlcyk7Ci0gCi0gdm9pZCBnZGJweV9sb2FkX2F1dG9fc2Ny aXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwotSW5kZXg6IGdkYi03 LjYvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lRGVjb3JhdG9yLnB5Ci09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcu Ni9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVEZWNvcmF0b3IucHkJMjAxMy0wNi0xMCAxNDozMTow OC4zNjcwODI0MzYgKzAyMDAKLUBAIC0wLDAgKzEsMjg1IEBACi0rIyBDb3B5cmlnaHQgKEMpIDIw MTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgotKwotK2ltcG9ydCBnZGIKLSsKLStjbGFzcyBGcmFtZURlY29yYXRvcihvYmpl Y3QpOgotKyAgICAiIiJCYXNpYyBpbXBsZW1lbnRhdGlvbiBvZiBhIEZyYW1lIERlY29yYXRvciIi IgotKwotKyAgICAiIiIgVGhpcyBiYXNlIGZyYW1lIGRlY29yYXRvciBkZWNvcmF0ZXMgYSBmcmFt ZSBvciBhbm90aGVyIGZyYW1lCi0rICAgIGRlY29yYXRvciwgYW5kIHByb3ZpZGVzIGNvbnZlbmll bmNlIG1ldGhvZHMuICBJZiB0aGlzIG9iamVjdCBpcwotKyAgICB3cmFwcGluZyBhIGZyYW1lIGRl Y29yYXRvciwgZGVmZXIgdG8gdGhhdCB3cmFwcGVkIG9iamVjdCdzIG1ldGhvZAotKyAgICBpZiBp dCBoYXMgb25lLiAgVGhpcyBhbGxvd3MgZm9yIGZyYW1lIGRlY29yYXRvcnMgdGhhdCBoYXZlCi0r ICAgIHN1Yi1jbGFzc2VkIEZyYW1lRGVjb3JhdG9yIG9iamVjdCwgYnV0IGFsc28gd3JhcCBvdGhl ciBmcmFtZQotKyAgICBkZWNvcmF0b3JzIG9uIHRoZSBzYW1lIGZyYW1lIHRvIGNvcnJlY3RseSBl eGVjdXRlLgotKwotKyAgICBFLmcKLSsKLSsgICAgSWYgdGhlIHJlc3VsdCBvZiBmcmFtZSBmaWx0 ZXJzIHJ1bm5pbmcgbWVhbnMgd2UgaGF2ZSBvbmUgZ2RiLkZyYW1lCi0rICAgIHdyYXBwZWQgYnkg bXVsdGlwbGUgZnJhbWUgZGVjb3JhdG9ycywgYWxsIHN1Yi1jbGFzc2VkIGZyb20KLSsgICAgRnJh bWVEZWNvcmF0b3IsIHRoZSByZXN1bHRpbmcgaGllcmFyY2h5IHdpbGwgYmU6Ci0rCi0rICAgIERl Y29yYXRvcjEKLSsgICAgICAtLSAod3JhcHMpIERlY29yYXRvcjIKLSsgICAgICAgIC0tICh3cmFw cykgRnJhbWVEZWNvcmF0b3IKLSsgICAgICAgICAgLS0gKHdyYXBzKSBnZGIuRnJhbWUKLSsKLSsg ICAgSW4gdGhpcyBjYXNlIHdlIGhhdmUgdHdvIGZyYW1lIGRlY29yYXRvcnMsIGJvdGggb2Ygd2hp Y2ggYXJlCi0rICAgIHN1Yi1jbGFzc2VkIGZyb20gRnJhbWVEZWNvcmF0b3IuICBJZiBEZWNvcmF0 b3IxIGp1c3Qgb3ZlcnJpZGVzIHRoZQotKyAgICAnZnVuY3Rpb24nIG1ldGhvZCwgdGhlbiBhbGwg b2YgdGhlIG90aGVyIG1ldGhvZHMgYXJlIGNhcnJpZWQgb3V0Ci0rICAgIGJ5IHRoZSBzdXBlci1j bGFzcyBGcmFtZURlY29yYXRvci4gIEJ1dCBEZWNvcmF0b3IyIG1heSBoYXZlCi0rICAgIG92ZXJy aWRlbiBvdGhlciBtZXRob2RzLCBzbyBGcmFtZURlY29yYXRvciB3aWxsIGxvb2sgYXQgdGhlCi0r ICAgICdiYXNlJyBwYXJhbWV0ZXIgYW5kIGRlZmVyIHRvIHRoYXQgY2xhc3MncyBtZXRob2RzLiAg QW5kIHNvIG9uLAotKyAgICBkb3duIHRoZSBjaGFpbi4iIiIKLSsKLSsgICAgIyAnYmFzZScgY2Fu IHJlZmVyIHRvIGEgZ2RiLkZyYW1lIG9yIGFub3RoZXIgZnJhbWUgZGVjb3JhdG9yLiAgSW4KLSsg ICAgIyB0aGUgbGF0dGVyIGNhc2UsIHRoZSBjaGlsZCBjbGFzcyB3aWxsIGhhdmUgY2FsbGVkIHRo ZSBzdXBlcgotKyAgICAjIG1ldGhvZCBhbmQgX2Jhc2Ugd2lsbCBiZSBhbiBvYmplY3QgY29uZm9y bWluZyB0byB0aGUgRnJhbWUgRmlsdGVyCi0rICAgICMgY2xhc3MuCi0rICAgIGRlZiBfX2luaXRf XyhzZWxmLCBiYXNlKToKLSsgICAgICAgIHNlbGYuX2Jhc2UgPSBiYXNlCi0rCi0rICAgIEBzdGF0 aWNtZXRob2QKLSsgICAgZGVmIF9pc19saW1pdGVkX2ZyYW1lKGZyYW1lKToKLSsgICAgICAgICIi IkludGVybmFsIHV0aWxpdHkgdG8gZGV0ZXJtaW5lIGlmIHRoZSBmcmFtZSBpcyBzcGVjaWFsIG9y Ci0rICAgICAgICBsaW1pdGVkLiIiIgotKyAgICAgICAgc2FsID0gZnJhbWUuZmluZF9zYWwoKQot KwotKyAgICAgICAgaWYgKG5vdCBzYWwuc3ltdGFiIG9yIG5vdCBzYWwuc3ltdGFiLmZpbGVuYW1l Ci0rICAgICAgICAgICAgb3IgZnJhbWUudHlwZSgpID09IGdkYi5EVU1NWV9GUkFNRQotKyAgICAg ICAgICAgIG9yIGZyYW1lLnR5cGUoKSA9PSBnZGIuU0lHVFJBTVBfRlJBTUUpOgotKwotKyAgICAg ICAgICAgIHJldHVybiBUcnVlCi0rCi0rICAgICAgICByZXR1cm4gRmFsc2UKLSsKLSsgICAgZGVm IGVsaWRlZChzZWxmKToKLSsgICAgICAgICIiIlJldHVybiBhbnkgZWxpZGVkIGZyYW1lcyB0aGF0 IHRoaXMgY2xhc3MgbWlnaHQgYmUKLSsgICAgICAgIHdyYXBwaW5nLCBvciBOb25lLiIiIgotKyAg ICAgICAgaWYgaGFzYXR0cihzZWxmLl9iYXNlLCAiZWxpZGVkIik6Ci0rICAgICAgICAgICAgcmV0 dXJuIHNlbGYuX2Jhc2UuZWxpZGVkKCkKLSsKLSsgICAgICAgIHJldHVybiBOb25lCi0rCi0rICAg IGRlZiBmdW5jdGlvbihzZWxmKToKLSsgICAgICAgICIiIiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhl IGZyYW1lJ3MgZnVuY3Rpb24gb3IgYW4gYWRkcmVzcyBvZgotKyAgICAgICAgdGhlIGZ1bmN0aW9u IG9mIHRoZSBmcmFtZS4gIEZpcnN0IGRldGVybWluZSBpZiB0aGlzIGlzIGEKLSsgICAgICAgIHNw ZWNpYWwgZnJhbWUuICBJZiBub3QsIHRyeSB0byBkZXRlcm1pbmUgZmlsZW5hbWUgZnJvbSBHREIn cwotKyAgICAgICAgZnJhbWUgaW50ZXJuYWwgZnVuY3Rpb24gQVBJLiAgRmluYWxseSwgaWYgYSBu YW1lIGNhbm5vdCBiZQotKyAgICAgICAgZGV0ZXJtaW5lZCByZXR1cm4gdGhlIGFkZHJlc3MuICBJ ZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYW4KLSsgICAgICAgIGFkZHJlc3MsIEdEQiB3aWxsIGF0 dGVtcHQgdG8gZGV0ZXJtaW5lIHRoZSBmdW5jdGlvbiBuYW1lIGZyb20KLSsgICAgICAgIGl0cyBp bnRlcm5hbCBtaW5pbWFsIHN5bWJvbHMgc3RvcmUgKGZvciBleGFtcGxlLCBmb3IgaW5mZXJpb3Jz Ci0rICAgICAgICB3aXRob3V0IGRlYnVnLWluZm8pLiIiIgotKwotKyAgICAgICAgIyBCb3RoIGdk Yi5GcmFtZSwgYW5kIEZyYW1lRGVjb3JhdG9yIGhhdmUgYSBtZXRob2QgY2FsbGVkCi0rICAgICAg ICAjICJmdW5jdGlvbiIsIHNvIGRldGVybWluZSB3aGljaCBvYmplY3QgdGhpcyBpcy4KLSsgICAg ICAgIGlmIG5vdCBpc2luc3RhbmNlKHNlbGYuX2Jhc2UsIGdkYi5GcmFtZSk6Ci0rICAgICAgICAg ICAgaWYgaGFzYXR0cihzZWxmLl9iYXNlLCAiZnVuY3Rpb24iKToKLSsgICAgICAgICAgICAgICAg IyBJZiBpdCBpcyBub3QgYSBnZGIuRnJhbWUsIGFuZCB0aGVyZSBpcyBhbHJlYWR5IGEKLSsgICAg ICAgICAgICAgICAgIyAiZnVuY3Rpb24iIG1ldGhvZCwgdXNlIHRoYXQuCi0rICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLl9iYXNlLmZ1bmN0aW9uKCkKLSsKLSsgICAgICAgIGZyYW1lID0gc2Vs Zi5pbmZlcmlvcl9mcmFtZSgpCi0rCi0rICAgICAgICBpZiBmcmFtZS50eXBlKCkgPT0gZ2RiLkRV TU1ZX0ZSQU1FOgotKyAgICAgICAgICAgIHJldHVybiAiPGZ1bmN0aW9uIGNhbGxlZCBmcm9tIGdk Yj4iCi0rICAgICAgICBlbGlmIGZyYW1lLnR5cGUoKSA9PSBnZGIuU0lHVFJBTVBfRlJBTUU6Ci0r ICAgICAgICAgICAgcmV0dXJuICI8c2lnbmFsIGhhbmRsZXIgY2FsbGVkPiIKLSsKLSsgICAgICAg IGZ1bmMgPSBmcmFtZS5mdW5jdGlvbigpCi0rCi0rICAgICAgICAjIElmIHdlIGNhbm5vdCBkZXRl cm1pbmUgdGhlIGZ1bmN0aW9uIG5hbWUsIHJldHVybiB0aGUKLSsgICAgICAgICMgYWRkcmVzcy4g IElmIEdEQiBkZXRlY3RzIGFuIGludGVnZXIgdmFsdWUgZnJvbSB0aGlzIGZ1bmN0aW9uCi0rICAg ICAgICAjIGl0IHdpbGwgYXR0ZW1wdCB0byBmaW5kIHRoZSBmdW5jdGlvbiBuYW1lIGZyb20gbWlu aW1hbAotKyAgICAgICAgIyBzeW1ib2xzIHZpYSBpdHMgb3duIGludGVybmFsIGZ1bmN0aW9ucy4K LSsgICAgICAgIGlmIGZ1bmMgPT0gTm9uZToKLSsgICAgICAgICAgICBwYyA9IGZyYW1lLnBjKCkK LSsgICAgICAgICAgICByZXR1cm4gcGMKLSsKLSsgICAgICAgIHJldHVybiBzdHIoZnVuYykKLSsK LSsgICAgZGVmIGFkZHJlc3Moc2VsZik6Ci0rICAgICAgICAiIiIgUmV0dXJuIHRoZSBhZGRyZXNz IG9mIHRoZSBmcmFtZSdzIHBjIiIiCi0rCi0rICAgICAgICBpZiBoYXNhdHRyKHNlbGYuX2Jhc2Us ICJhZGRyZXNzIik6Ci0rICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2Jhc2UuYWRkcmVzcygpCi0r Ci0rICAgICAgICBmcmFtZSA9IHNlbGYuaW5mZXJpb3JfZnJhbWUoKQotKyAgICAgICAgcmV0dXJu IGZyYW1lLnBjKCkKLSsKLSsgICAgZGVmIGZpbGVuYW1lKHNlbGYpOgotKyAgICAgICAgIiIiIFJl dHVybiB0aGUgZmlsZW5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZnJhbWUsIGRldGVjdGluZwot KyAgICAgICAgYW5kIHJldHVybmluZyB0aGUgYXBwcm9wcmlhdGUgbGlicmFyeSBuYW1lIGlzIHRo aXMgaXMgYSBzaGFyZWQKLSsgICAgICAgIGxpYnJhcnkuIiIiCi0rCi0rICAgICAgICBpZiBoYXNh dHRyKHNlbGYuX2Jhc2UsICJmaWxlbmFtZSIpOgotKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9i YXNlLmZpbGVuYW1lKCkKLSsKLSsgICAgICAgIGZyYW1lID0gc2VsZi5pbmZlcmlvcl9mcmFtZSgp Ci0rICAgICAgICBzYWwgPSBmcmFtZS5maW5kX3NhbCgpCi0rICAgICAgICBpZiBub3Qgc2FsLnN5 bXRhYiBvciBub3Qgc2FsLnN5bXRhYi5maWxlbmFtZToKLSsgICAgICAgICAgICBwYyA9IGZyYW1l LnBjKCkKLSsgICAgICAgICAgICByZXR1cm4gZ2RiLnNvbGliX25hbWUocGMpCi0rICAgICAgICBl bHNlOgotKyAgICAgICAgICAgIHJldHVybiBzYWwuc3ltdGFiLmZpbGVuYW1lCi0rCi0rICAgIGRl ZiBmcmFtZV9hcmdzKHNlbGYpOgotKyAgICAgICAgIiIiIFJldHVybiBhbiBpdGVyYWJsZSBvZiBm cmFtZSBhcmd1bWVudHMgZm9yIHRoaXMgZnJhbWUsIGlmCi0rICAgICAgICBhbnkuICBUaGUgaXRl cmFibGUgb2JqZWN0IGNvbnRhaW5zIG9iamVjdHMgY29uZm9ybWluZyB3aXRoIHRoZQotKyAgICAg ICAgU3ltYm9sL1ZhbHVlIGludGVyZmFjZS4gIElmIHRoZXJlIGFyZSBubyBmcmFtZSBhcmd1bWVu dHMsIG9yCi0rICAgICAgICBpZiB0aGlzIGZyYW1lIGlzIGRlZW1lZCB0byBiZSBhIHNwZWNpYWwg Y2FzZSwgcmV0dXJuIE5vbmUuIiIiCi0rCi0rICAgICAgICBpZiBoYXNhdHRyKHNlbGYuX2Jhc2Us ICJmcmFtZV9hcmdzIik6Ci0rICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2Jhc2UuZnJhbWVfYXJn cygpCi0rCi0rICAgICAgICBmcmFtZSA9IHNlbGYuaW5mZXJpb3JfZnJhbWUoKQotKyAgICAgICAg aWYgc2VsZi5faXNfbGltaXRlZF9mcmFtZShmcmFtZSk6Ci0rICAgICAgICAgICAgcmV0dXJuIE5v bmUKLSsKLSsgICAgICAgIGFyZ3MgPSBGcmFtZVZhcnMoZnJhbWUpCi0rICAgICAgICByZXR1cm4g YXJncy5mZXRjaF9mcmFtZV9hcmdzKCkKLSsKLSsgICAgZGVmIGZyYW1lX2xvY2FscyhzZWxmKToK LSsgICAgICAgICIiIiBSZXR1cm4gYW4gaXRlcmFibGUgb2YgbG9jYWwgdmFyaWFibGVzIGZvciB0 aGlzIGZyYW1lLCBpZgotKyAgICAgICAgYW55LiAgVGhlIGl0ZXJhYmxlIG9iamVjdCBjb250YWlu cyBvYmplY3RzIGNvbmZvcm1pbmcgd2l0aCB0aGUKLSsgICAgICAgIFN5bWJvbC9WYWx1ZSBpbnRl cmZhY2UuICBJZiB0aGVyZSBhcmUgbm8gZnJhbWUgbG9jYWxzLCBvciBpZgotKyAgICAgICAgdGhp cyBmcmFtZSBpcyBkZWVtZWQgdG8gYmUgYSBzcGVjaWFsIGNhc2UsIHJldHVybiBOb25lLiIiIgot KwotKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLl9iYXNlLCAiZnJhbWVfbG9jYWxzIik6Ci0rICAg ICAgICAgICAgcmV0dXJuIHNlbGYuX2Jhc2UuZnJhbWVfbG9jYWxzKCkKLSsKLSsgICAgICAgIGZy YW1lID0gc2VsZi5pbmZlcmlvcl9mcmFtZSgpCi0rICAgICAgICBpZiBzZWxmLl9pc19saW1pdGVk X2ZyYW1lKGZyYW1lKToKLSsgICAgICAgICAgICByZXR1cm4gTm9uZQotKwotKyAgICAgICAgYXJn cyA9IEZyYW1lVmFycyhmcmFtZSkKLSsgICAgICAgIHJldHVybiBhcmdzLmZldGNoX2ZyYW1lX2xv Y2FscygpCi0rCi0rICAgIGRlZiBsaW5lKHNlbGYpOgotKyAgICAgICAgIiIiIFJldHVybiBsaW5l IG51bWJlciBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGZyYW1lJ3MKLSsgICAgICAg IHBjLiAgSWYgc3ltYm9sIHRhYmxlL2xpbmUgaW5mb3JtYXRpb24gZG9lcyBub3QgZXhpc3QsIG9y IGlmCi0rICAgICAgICB0aGlzIGZyYW1lIGlzIGRlZW1lZCB0byBiZSBhIHNwZWNpYWwgY2FzZSwg cmV0dXJuIE5vbmUiIiIKLSsKLSsgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fYmFzZSwgImxpbmUi KToKLSsgICAgICAgICAgICByZXR1cm4gc2VsZi5fYmFzZS5saW5lKCkKLSsKLSsgICAgICAgIGZy YW1lID0gc2VsZi5pbmZlcmlvcl9mcmFtZSgpCi0rICAgICAgICBpZiBzZWxmLl9pc19saW1pdGVk X2ZyYW1lKGZyYW1lKToKLSsgICAgICAgICAgICByZXR1cm4gTm9uZQotKwotKyAgICAgICAgc2Fs ID0gZnJhbWUuZmluZF9zYWwoKQotKyAgICAgICAgaWYgKHNhbCk6Ci0rICAgICAgICAgICAgcmV0 dXJuIHNhbC5saW5lCi0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgIHJldHVybiBOb25lCi0r Ci0rICAgIGRlZiBpbmZlcmlvcl9mcmFtZShzZWxmKToKLSsgICAgICAgICIiIiBSZXR1cm4gdGhl IGdkYi5GcmFtZSB1bmRlcnBpbm5pbmcgdGhpcyBmcmFtZSBkZWNvcmF0b3IuIiIiCi0rCi0rICAg ICAgICAjIElmICdiYXNlJyBpcyBhIGZyYW1lIGRlY29yYXRvciwgd2Ugd2FudCB0byBjYWxsIGl0 cyBpbmZlcmlvcgotKyAgICAgICAgIyBmcmFtZSBtZXRob2QuICBJZiAnX2Jhc2UnIGlzIGEgZ2Ri LkZyYW1lLCBqdXN0IHJldHVybiB0aGF0LgotKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLl9iYXNl LCAiaW5mZXJpb3JfZnJhbWUiKToKLSsgICAgICAgICAgICByZXR1cm4gc2VsZi5fYmFzZS5pbmZl cmlvcl9mcmFtZSgpCi0rICAgICAgICByZXR1cm4gc2VsZi5fYmFzZQotKwotK2NsYXNzIFN5bVZh bHVlV3JhcHBlcihvYmplY3QpOgotKyAgICAiIiJBIGNvbnRhaW5lciBjbGFzcyBjb25mb3JtaW5n IHRvIHRoZSBTeW1ib2wvVmFsdWUgaW50ZXJmYWNlCi0rICAgIHdoaWNoIGhvbGRzIGZyYW1lIGxv Y2FscyBvciBmcmFtZSBhcmd1bWVudHMuIiIiCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzeW1i b2wsIHZhbHVlKToKLSsgICAgICAgIHNlbGYuc3ltID0gc3ltYm9sCi0rICAgICAgICBzZWxmLnZh bCA9IHZhbHVlCi0rCi0rICAgIGRlZiB2YWx1ZShzZWxmKToKLSsgICAgICAgICIiIiBSZXR1cm4g dGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHN5bWJvbCwgb3IgTm9uZSIiIgotKyAgICAg ICAgcmV0dXJuIHNlbGYudmFsCi0rCi0rICAgIGRlZiBzeW1ib2woc2VsZik6Ci0rICAgICAgICAi IiIgUmV0dXJuIHRoZSBzeW1ib2wsIG9yIFB5dGhvbiB0ZXh0LCBhc3NvY2lhdGVkIHdpdGggdGhp cwotKyAgICAgICAgc3ltYm9sLCBvciBOb25lIiIiCi0rICAgICAgICByZXR1cm4gc2VsZi5zeW0K LSsKLStjbGFzcyBGcmFtZVZhcnMob2JqZWN0KToKLSsKLSsgICAgIiIiVXRpbGl0eSBjbGFzcyB0 byBmZXRjaCBhbmQgc3RvcmUgZnJhbWUgbG9jYWwgdmFyaWFibGVzLCBvcgotKyAgICBmcmFtZSBh cmd1bWVudHMuIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcmFtZSk6Ci0rICAgICAg ICBzZWxmLmZyYW1lID0gZnJhbWUKLSsgICAgICAgIHNlbGYuc3ltYm9sX2NsYXNzID0gewotKyAg ICAgICAgICAgIGdkYi5TWU1CT0xfTE9DX1NUQVRJQzogVHJ1ZSwKLSsgICAgICAgICAgICBnZGIu U1lNQk9MX0xPQ19SRUdJU1RFUjogVHJ1ZSwKLSsgICAgICAgICAgICBnZGIuU1lNQk9MX0xPQ19B Ukc6IFRydWUsCi0rICAgICAgICAgICAgZ2RiLlNZTUJPTF9MT0NfUkVGX0FSRzogVHJ1ZSwKLSsg ICAgICAgICAgICBnZGIuU1lNQk9MX0xPQ19MT0NBTDogVHJ1ZSwKLSsJICAgIGdkYi5TWU1CT0xf TE9DX1JFR1BBUk1fQUREUjogVHJ1ZSwKLSsJICAgIGdkYi5TWU1CT0xfTE9DX0NPTVBVVEVEOiBU cnVlCi0rICAgICAgICAgICAgfQotKwotKyAgICBkZWYgZmV0Y2hfYihzZWxmLCBzeW0pOgotKyAg ICAgICAgIiIiIExvY2FsIHV0aWxpdHkgbWV0aG9kIHRvIGRldGVybWluZSBpZiBhY2NvcmRpbmcg dG8gU3ltYm9sCi0rICAgICAgICB0eXBlIHdoZXRoZXIgaXQgc2hvdWxkIGJlIGluY2x1ZGVkIGlu IHRoZSBpdGVyYXRvci4gIE5vdCBhbGwKLSsgICAgICAgIHN5bWJvbHMgYXJlIGZldGNoZWQsIGFu ZCBvbmx5IHN5bWJvbHMgdGhhdCByZXR1cm4KLSsgICAgICAgIFRydWUgZnJvbSB0aGlzIG1ldGhv ZCBzaG91bGQgYmUgZmV0Y2hlZC4iIiIKLSsKLSsgICAgICAgICMgU1lNIG1heSBiZSBhIHN0cmlu ZyBpbnN0ZWFkIG9mIGEgc3ltYm9sIGluIHRoZSBjYXNlIG9mCi0rICAgICAgICAjIHN5bnRoZXRp YyBsb2NhbCBhcmd1bWVudHMgb3IgbG9jYWxzLiAgSWYgdGhhdCBpcyB0aGUgY2FzZSwKLSsgICAg ICAgICMgYWx3YXlzIGZldGNoLgotKyAgICAgICAgaWYgaXNpbnN0YW5jZShzeW0sIGJhc2VzdHJp bmcpOgotKyAgICAgICAgICAgIHJldHVybiBUcnVlCi0rCi0rICAgICAgICBzeW1fdHlwZSA9IHN5 bS5hZGRyX2NsYXNzCi0rCi0rICAgICAgICByZXR1cm4gc2VsZi5zeW1ib2xfY2xhc3MuZ2V0KHN5 bV90eXBlLCBGYWxzZSkKLSsKLSsgICAgZGVmIGZldGNoX2ZyYW1lX2xvY2FscyhzZWxmKToKLSsg ICAgICAgICIiIlB1YmxpYyB1dGlsaXR5IG1ldGhvZCB0byBmZXRjaCBmcmFtZSBsb2NhbCB2YXJp YWJsZXMgZm9yCi0rICAgICAgICB0aGUgc3RvcmVkIGZyYW1lLiAgRnJhbWUgYXJndW1lbnRzIGFy ZSBub3QgZmV0Y2hlZC4gIElmIHRoZXJlCi0rICAgICAgICBhcmUgbm8gZnJhbWUgbG9jYWwgdmFy aWFibGVzLCByZXR1cm4gYW4gZW1wdHkgbGlzdC4iIiIKLSsgICAgICAgIGx2YXJzID0gW10KLSsK LSsgICAgICAgIGJsb2NrID0gc2VsZi5mcmFtZS5ibG9jaygpCi0rCi0rICAgICAgICB3aGlsZSBi bG9jayAhPSBOb25lOgotKyAgICAgICAgICAgIGlmIGJsb2NrLmlzX2dsb2JhbCBvciBibG9jay5p c19zdGF0aWM6Ci0rICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgZm9yIHN5bSBp biBibG9jazoKLSsgICAgICAgICAgICAgICAgaWYgc3ltLmlzX2FyZ3VtZW50OgotKyAgICAgICAg ICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgICAgICAgIGlmIHNlbGYuZmV0Y2hfYihz eW0pOgotKyAgICAgICAgICAgICAgICAgICAgbHZhcnMuYXBwZW5kKFN5bVZhbHVlV3JhcHBlcihz eW0sIE5vbmUpKQotKwotKyAgICAgICAgICAgIGJsb2NrID0gYmxvY2suc3VwZXJibG9jawotKwot KyAgICAgICAgcmV0dXJuIGx2YXJzCi0rCi0rICAgIGRlZiBmZXRjaF9mcmFtZV9hcmdzKHNlbGYp OgotKyAgICAgICAgIiIiUHVibGljIHV0aWxpdHkgbWV0aG9kIHRvIGZldGNoIGZyYW1lIGFyZ3Vt ZW50cyBmb3IgdGhlCi0rICAgICAgICBzdG9yZWQgZnJhbWUuICBGcmFtZSBhcmd1bWVudHMgYXJl IHRoZSBvbmx5IHR5cGUgZmV0Y2hlZC4gIElmCi0rICAgICAgICB0aGVyZSBhcmUgbm8gZnJhbWUg YXJndW1lbnQgdmFyaWFibGVzLCByZXR1cm4gYW4gZW1wdHkgbGlzdC4iIiIKLSsKLSsgICAgICAg IGFyZ3MgPSBbXQotKyAgICAgICAgYmxvY2sgPSBzZWxmLmZyYW1lLmJsb2NrKCkKLSsgICAgICAg IHdoaWxlIGJsb2NrICE9IE5vbmU6Ci0rICAgICAgICAgICAgaWYgYmxvY2suZnVuY3Rpb24gIT0g Tm9uZToKLSsgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICBibG9jayA9IGJsb2Nr LnN1cGVyYmxvY2sKLSsKLSsgICAgICAgIGlmIGJsb2NrICE9IE5vbmU6Ci0rICAgICAgICAgICAg Zm9yIHN5bSBpbiBibG9jazoKLSsgICAgICAgICAgICAgICAgaWYgbm90IHN5bS5pc19hcmd1bWVu dDoKLSsgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgICAgICAgICBhcmdz LmFwcGVuZChTeW1WYWx1ZVdyYXBwZXIoc3ltLCBOb25lKSkKLSsKLSsgICAgICAgIHJldHVybiBh cmdzCi1JbmRleDogZ2RiLTcuNi9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRvci5weQot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAotKysrIGdkYi03LjYvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkJMjAx My0wNi0xMCAxNDozMTowOC4zNjcwODI0MzYgKzAyMDAKLUBAIC0wLDAgKzEsNDUgQEAKLSsjIENv cHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raW1wb3J0IGdkYgotK2ltcG9ydCBpdGVydG9v bHMKLSsKLStjbGFzcyBGcmFtZUl0ZXJhdG9yKG9iamVjdCk6Ci0rICAgICIiIkEgZ2RiLkZyYW1l IGl0ZXJhdG9yLiAgSXRlcmF0ZXMgb3ZlciBnZGIuRnJhbWVzIG9yIG9iamVjdHMgdGhhdAotKyAg ICBjb25mb3JtIHRvIHRoYXQgaW50ZXJmYWNlLiIiIgotKwotKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgZnJhbWVfb2JqKToKLSsgICAgICAgICIiIkluaXRpYWxpemUgYSBGcmFtZUl0ZXJhdG9yLgot KwotKyAgICAgICAgQXJndW1lbnRzOgotKyAgICAgICAgICAgIGZyYW1lX29iaiB0aGUgc3RhcnRp bmcgZnJhbWUuIiIiCi0rCi0rICAgICAgICBzdXBlcihGcmFtZUl0ZXJhdG9yLCBzZWxmKS5fX2lu aXRfXygpCi0rICAgICAgICBzZWxmLmZyYW1lID0gZnJhbWVfb2JqCi0rCi0rICAgIGRlZiBfX2l0 ZXJfXyhzZWxmKToKLSsgICAgICAgIHJldHVybiBzZWxmCi0rCi0rICAgIGRlZiBuZXh0KHNlbGYp OgotKyAgICAgICAgIiIibmV4dCBpbXBsZW1lbnRhdGlvbi4KLSsKLSsgICAgICAgIFJldHVybnM6 Ci0rICAgICAgICAgICAgVGhlIG5leHQgb2xkZXN0IGZyYW1lLiIiIgotKwotKyAgICAgICAgcmVz dWx0ID0gc2VsZi5mcmFtZQotKyAgICAgICAgaWYgcmVzdWx0IGlzIE5vbmU6Ci0rICAgICAgICAg ICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotKyAgICAgICAgc2VsZi5mcmFtZSA9IHJlc3VsdC5vbGRl cigpCi0rICAgICAgICByZXR1cm4gcmVzdWx0Ci1JbmRleDogZ2RiLTcuNi9nZGIvcHl0aG9uL2xp Yi9nZGIvZnJhbWVzLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNi9nZGIvcHl0aG9uL2xpYi9nZGIvZnJh bWVzLnB5CTIwMTMtMDYtMTAgMTQ6MzE6MDguMzY4MDgyNDM2ICswMjAwCi1AQCAtMCwwICsxLDIy OSBAQAotKyMgRnJhbWUtZmlsdGVyIGNvbW1hbmRzLgotKyMgQ29weXJpZ2h0IChDKSAyMDEzIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSsKLSsiIiJJbnRlcm5hbCBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBmcmFtZS1m aWx0ZXJzLiIiIgotKwotK2ltcG9ydCBnZGIKLStmcm9tIGdkYi5GcmFtZUl0ZXJhdG9yIGltcG9y dCBGcmFtZUl0ZXJhdG9yCi0rZnJvbSBnZGIuRnJhbWVEZWNvcmF0b3IgaW1wb3J0IEZyYW1lRGVj b3JhdG9yCi0raW1wb3J0IGl0ZXJ0b29scwotK2ltcG9ydCBjb2xsZWN0aW9ucwotKwotK2RlZiBn ZXRfcHJpb3JpdHkoZmlsdGVyX2l0ZW0pOgotKyAgICAiIiIgSW50ZXJuYWwgd29ya2VyIGZ1bmN0 aW9uIHRvIHJldHVybiB0aGUgZnJhbWUtZmlsdGVyJ3MgcHJpb3JpdHkKLSsgICAgZnJvbSBhIGZy YW1lIGZpbHRlciBvYmplY3QuICBUaGlzIGlzIGEgZmFpbCBmcmVlIGZ1bmN0aW9uIGFzIGl0IGlz Ci0rICAgIHVzZWQgaW4gc29ydGluZyBhbmQgZmlsdGVyaW5nLiAgSWYgYSBiYWRseSBpbXBsZW1l bnRlZCBmcmFtZQotKyAgICBmaWx0ZXIgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBwcmlvcml0eSBh dHRyaWJ1dGUsIHJldHVybiB6ZXJvCi0rICAgIChvdGhlcndpc2Ugc29ydGluZy9maWx0ZXJpbmcg d2lsbCBmYWlsIGFuZCBwcmV2ZW50IG90aGVyIGZyYW1lCi0rICAgIGZpbHRlcnMgZnJvbSBleGVj dXRpbmcpLgotKwotKyAgICBBcmd1bWVudHM6Ci0rICAgICAgICBmaWx0ZXJfaXRlbTogQW4gb2Jq ZWN0IGNvbmZvcm1pbmcgdG8gdGhlIGZyYW1lIGZpbHRlcgotKyAgICAgICAgICAgICAgICAgICAg IGludGVyZmFjZS4KLSsKLSsgICAgUmV0dXJuczoKLSsgICAgICAgIFRoZSBwcmlvcml0eSBvZiB0 aGUgZnJhbWUgZmlsdGVyIGZyb20gdGhlICJwcmlvcml0eSIKLSsgICAgICAgIGF0dHJpYnV0ZSwg b3IgemVyby4KLSsgICAgIiIiCi0rICAgICMgRG8gbm90IGZhaWwgaGVyZSwgYXMgdGhlIHNvcnQg d2lsbCBmYWlsLiAgSWYgYSBmaWx0ZXIgaGFzIG5vdAotKyAgICAjIChpbmNvcnJlY3RseSkgc2V0 IGEgcHJpb3JpdHksIHNldCBpdCB0byB6ZXJvLgotKyAgICByZXR1cm4gZ2V0YXR0cihmaWx0ZXJf aXRlbSwgInByaW9yaXR5IiwgMCkKLSsKLStkZWYgc2V0X3ByaW9yaXR5KGZpbHRlcl9pdGVtLCBw cmlvcml0eSk6Ci0rICAgICIiIiBJbnRlcm5hbCB3b3JrZXIgZnVuY3Rpb24gdG8gc2V0IHRoZSBm cmFtZS1maWx0ZXIncyBwcmlvcml0eS4KLSsKLSsgICAgQXJndW1lbnRzOgotKyAgICAgICAgZmls dGVyX2l0ZW06IEFuIG9iamVjdCBjb25mb3JtaW5nIHRvIHRoZSBmcmFtZSBmaWx0ZXIKLSsgICAg ICAgICAgICAgICAgICAgICBpbnRlcmZhY2UuCi0rICAgICAgICBwcmlvcml0eTogVGhlIHByaW9y aXR5IHRvIGFzc2lnbiBhcyBhbiBpbnRlZ2VyLgotKyAgICAiIiIKLSsKLSsgICAgZmlsdGVyX2l0 ZW0ucHJpb3JpdHkgPSBwcmlvcml0eQotKwotK2RlZiBnZXRfZW5hYmxlZChmaWx0ZXJfaXRlbSk6 Ci0rICAgICIiIiBJbnRlcm5hbCB3b3JrZXIgZnVuY3Rpb24gdG8gcmV0dXJuIGEgZmlsdGVyJ3Mg ZW5hYmxlZCBzdGF0ZQotKyAgICBmcm9tIGEgZnJhbWUgZmlsdGVyIG9iamVjdC4gIFRoaXMgaXMg YSBmYWlsIGZyZWUgZnVuY3Rpb24gYXMgaXQgaXMKLSsgICAgdXNlZCBpbiBzb3J0aW5nIGFuZCBm aWx0ZXJpbmcuICBJZiBhIGJhZGx5IGltcGxlbWVudGVkIGZyYW1lCi0rICAgIGZpbHRlciBkb2Vz IG5vdCBpbXBsZW1lbnQgdGhlIGVuYWJsZWQgYXR0cmlidXRlLCByZXR1cm4gRmFsc2UKLSsgICAg KG90aGVyd2lzZSBzb3J0aW5nL2ZpbHRlcmluZyB3aWxsIGZhaWwgYW5kIHByZXZlbnQgb3RoZXIg ZnJhbWUKLSsgICAgZmlsdGVycyBmcm9tIGV4ZWN1dGluZykuCi0rCi0rICAgIEFyZ3VtZW50czoK LSsgICAgICAgIGZpbHRlcl9pdGVtOiBBbiBvYmplY3QgY29uZm9ybWluZyB0byB0aGUgZnJhbWUg ZmlsdGVyCi0rICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlLgotKwotKyAgICBSZXR1cm5z OgotKyAgICAgICAgVGhlIGVuYWJsZWQgc3RhdGUgb2YgdGhlIGZyYW1lIGZpbHRlciBmcm9tIHRo ZSAiZW5hYmxlZCIKLSsgICAgICAgIGF0dHJpYnV0ZSwgb3IgRmFsc2UuCi0rICAgICIiIgotKwot KyAgICAjIElmIHRoZSBmaWx0ZXIgY2xhc3MgaXMgYmFkbHkgaW1wbGVtZW50ZWQgd2hlbiBjYWxs ZWQgZnJvbSB0aGUKLSsgICAgIyBQeXRob24gZmlsdGVyIGNvbW1hbmQsIGRvIG5vdCBjZWFzZSBm aWx0ZXIgb3BlcmF0aW9ucywganVzdCBzZXQKLSsgICAgIyBlbmFibGVkIHRvIEZhbHNlLgotKyAg ICByZXR1cm4gZ2V0YXR0cihmaWx0ZXJfaXRlbSwgImVuYWJsZWQiLCBGYWxzZSkKLSsKLStkZWYg c2V0X2VuYWJsZWQoZmlsdGVyX2l0ZW0sIHN0YXRlKToKLSsgICAgIiIiIEludGVybmFsIFdvcmtl ciBmdW5jdGlvbiB0byBzZXQgdGhlIGZyYW1lLWZpbHRlcidzIGVuYWJsZWQKLSsgICAgc3RhdGUu Ci0rCi0rICAgIEFyZ3VtZW50czoKLSsgICAgICAgIGZpbHRlcl9pdGVtOiBBbiBvYmplY3QgY29u Zm9ybWluZyB0byB0aGUgZnJhbWUgZmlsdGVyCi0rICAgICAgICAgICAgICAgICAgICAgaW50ZXJm YWNlLgotKyAgICAgICAgc3RhdGU6IFRydWUgb3IgRmFsc2UsIGRlcGVuZGluZyBvbiBkZXNpcmVk IHN0YXRlLgotKyAgICAiIiIKLSsKLSsgICAgZmlsdGVyX2l0ZW0uZW5hYmxlZCA9IHN0YXRlCi0r Ci0rZGVmIHJldHVybl9saXN0KG5hbWUpOgotKyAgICAiIiIgSW50ZXJuYWwgV29ya2VyIGZ1bmN0 aW9uIHRvIHJldHVybiB0aGUgZnJhbWUgZmlsdGVyCi0rICAgIGRpY3Rpb25hcnksIGRlcGVuZGlu ZyBvbiB0aGUgbmFtZSBzdXBwbGllZCBhcyBhbiBhcmd1bWVudC4gIElmIHRoZQotKyAgICBuYW1l IGlzIG5vdCAiYWxsIiwgImdsb2JhbCIgb3IgInByb2dzcGFjZSIsIGl0IGlzIGFzc3VtZWQgdG8g bmFtZQotKyAgICBhbiBvYmplY3QtZmlsZS4KLSsKLSsgICAgQXJndW1lbnRzOgotKyAgICAgICAg bmFtZTogVGhlIG5hbWUgb2YgdGhlIGxpc3QsIGFzIHNwZWNpZmllZCBieSBHREIgdXNlciBjb21t YW5kcy4KLSsKLSsgICAgUmV0dXJuczoKLSsgICAgICAgIEEgZGljdGlvbmFyeSBvYmplY3QgZm9y IGEgc2luZ2xlIHNwZWNpZmllZCBkaWN0aW9uYXJ5LCBvciBhCi0rICAgICAgICBsaXN0IGNvbnRh aW5pbmcgYWxsIHRoZSBpdGVtcyBmb3IgImFsbCIKLSsKLSsgICAgUmFpc2VzOgotKyAgICAgICAg Z2RiLkdkYkVycm9yOiAgQSBkaWN0aW9uYXJ5IG9mIHRoYXQgbmFtZSBjYW5ub3QgYmUgZm91bmQu Ci0rICAgICIiIgotKwotKyAgICAjIElmIGFsbCBkaWN0aW9uYXJpZXMgYXJlIHdhbnRlZCBpbiB0 aGUgY2FzZSBvZiAiYWxsIiB3ZQotKyAgICAjIGNhbm5vdCByZXR1cm4gYSBjb21iaW5lZCBkaWN0 aW9uYXJ5IGFzIGtleXMoKSBtYXkgY2xhc2ggaW4KLSsgICAgIyBiZXR3ZWVuIGRpZmZlcmVudCBk aWN0aW9uYXJpZXMuICBBcyB3ZSBqdXN0IHdhbnQgYWxsIHRoZSBmcmFtZQotKyAgICAjIGZpbHRl cnMgdG8gZW5hYmxlL2Rpc2FibGUgdGhlbSBhbGwsIGp1c3QgcmV0dXJuIHRoZSBjb21iaW5lZAot KyAgICAjIGl0ZW1zKCkgYXMgYSBsaXN0LgotKyAgICBpZiBuYW1lID09ICJhbGwiOgotKyAgICAg ICAgYWxsX2RpY3RzID0gZ2RiLmZyYW1lX2ZpbHRlcnMudmFsdWVzKCkKLSsgICAgICAgIGFsbF9k aWN0cyA9IGFsbF9kaWN0cyArIGdkYi5jdXJyZW50X3Byb2dzcGFjZSgpLmZyYW1lX2ZpbHRlcnMu dmFsdWVzKCkKLSsgICAgICAgIGZvciBvYmpmaWxlIGluIGdkYi5vYmpmaWxlcygpOgotKyAgICAg ICAgICAgIGFsbF9kaWN0cyA9IGFsbF9kaWN0cyArIG9iamZpbGUuZnJhbWVfZmlsdGVycy52YWx1 ZXMoKQotKyAgICAgICAgICAgIHJldHVybiBhbGxfZGljdHMKLSsKLSsgICAgaWYgbmFtZSA9PSAi Z2xvYmFsIjoKLSsgICAgICAgIHJldHVybiBnZGIuZnJhbWVfZmlsdGVycwotKyAgICBlbHNlOgot KyAgICAgICAgaWYgbmFtZSA9PSAicHJvZ3NwYWNlIjoKLSsgICAgICAgICAgICBjcCA9IGdkYi5j dXJyZW50X3Byb2dzcGFjZSgpCi0rICAgICAgICAgICAgcmV0dXJuIGNwLmZyYW1lX2ZpbHRlcnMK LSsgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgZm9yIG9iamZpbGUgaW4gZ2RiLm9iamZpbGVz KCk6Ci0rICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gb2JqZmlsZS5maWxlbmFtZToKLSsgICAg ICAgICAgICAgICAgICAgIHJldHVybiBvYmpmaWxlLmZyYW1lX2ZpbHRlcnMKLSsKLSsgICAgbXNn ID0gIkNhbm5vdCBmaW5kIGZyYW1lLWZpbHRlciBkaWN0aW9uYXJ5IGZvciAnIiArIG5hbWUgKyAi JyIKLSsgICAgcmFpc2UgZ2RiLkdkYkVycm9yKG1zZykKLSsKLStkZWYgX3NvcnRfbGlzdCgpOgot KyAgICAiIiIgSW50ZXJuYWwgV29ya2VyIGZ1bmN0aW9uIHRvIG1lcmdlIGFsbCBrbm93biBmcmFt ZS1maWx0ZXIKLSsgICAgbGlzdHMsIHBydW5lIGFueSBmaWx0ZXJzIHdpdGggdGhlIHN0YXRlIHNl dCB0byAiZGlzYWJsZWQiLCBhbmQKLSsgICAgc29ydCB0aGUgbGlzdCBvbiB0aGUgZnJhbWUtZmls dGVyJ3MgInByaW9yaXR5IiBhdHRyaWJ1dGUuCi0rCi0rICAgIFJldHVybnM6Ci0rICAgICAgICBz b3J0ZWRfbGlzdDogQSBzb3J0ZWQsIHBydW5lZCBsaXN0IG9mIGZyYW1lIGZpbHRlcnMgdG8KLSsg ICAgICAgICAgICAgICAgICAgICBleGVjdXRlLgotKyAgICAiIiIKLSsKLSsgICAgYWxsX2ZpbHRl cnMgPSBbXQotKyAgICBmb3Igb2JqZmlsZSBpbiBnZGIub2JqZmlsZXMoKToKLSsgICAgICAgIGFs bF9maWx0ZXJzID0gYWxsX2ZpbHRlcnMgKyBvYmpmaWxlLmZyYW1lX2ZpbHRlcnMudmFsdWVzKCkK LSsgICAgY3AgPSBnZGIuY3VycmVudF9wcm9nc3BhY2UoKQotKwotKyAgICBhbGxfZmlsdGVycyA9 IGFsbF9maWx0ZXJzICsgY3AuZnJhbWVfZmlsdGVycy52YWx1ZXMoKQotKyAgICBhbGxfZmlsdGVy cyA9IGFsbF9maWx0ZXJzICsgZ2RiLmZyYW1lX2ZpbHRlcnMudmFsdWVzKCkKLSsKLSsgICAgc29y dGVkX2ZyYW1lX2ZpbHRlcnMgPSBzb3J0ZWQoYWxsX2ZpbHRlcnMsIGtleSA9IGdldF9wcmlvcml0 eSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZSA9IFRydWUpCi0r Ci0rICAgIHNvcnRlZF9mcmFtZV9maWx0ZXJzID0gZmlsdGVyKGdldF9lbmFibGVkLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWRfZnJhbWVfZmlsdGVycykKLSsKLSsg ICAgcmV0dXJuIHNvcnRlZF9mcmFtZV9maWx0ZXJzCi0rCi0rZGVmIGV4ZWN1dGVfZnJhbWVfZmls dGVycyhmcmFtZSwgZnJhbWVfbG93LCBmcmFtZV9oaWdoKToKLSsgICAgIiIiIEludGVybmFsIGZ1 bmN0aW9uIGNhbGxlZCBmcm9tIEdEQiB0aGF0IHdpbGwgZXhlY3V0ZSB0aGUgY2hhaW4KLSsgICAg b2YgZnJhbWUgZmlsdGVycy4gIEVhY2ggZmlsdGVyIGlzIGV4ZWN1dGVkIGluIHByaW9yaXR5IG9y ZGVyLgotKyAgICBBZnRlciB0aGUgZXhlY3V0aW9uIGNvbXBsZXRlcywgc2xpY2UgdGhlIGl0ZXJh dG9yIHRvIGZyYW1lX2xvdyAtCi0rICAgIGZyYW1lX2hpZ2ggcmFuZ2UuCi0rCi0rICAgIEFyZ3Vt ZW50czoKLSsgICAgICAgIGZyYW1lOiBUaGUgaW5pdGlhbCBmcmFtZS4KLSsKLSsgICAgICAgIGZy YW1lX2xvdzogVGhlIGxvdyByYW5nZSBvZiB0aGUgc2xpY2UuICBJZiB0aGlzIGlzIGEgbmVnYXRp dmUKLSsgICAgICAgIGludGVnZXIgdGhlbiBpdCBpbmRpY2F0ZXMgYSBiYWNrd2FyZCBzbGljZSAo aWUgYnQgLTQpIHdoaWNoCi0rICAgICAgICBjb3VudHMgYmFja3dhcmQgZnJvbSB0aGUgbGFzdCBm cmFtZSBpbiB0aGUgYmFja3RyYWNlLgotKwotKyAgICAgICAgZnJhbWVfaGlnaDogVGhlIGhpZ2gg cmFuZ2Ugb2YgdGhlIHNsaWNlLiAgSWYgdGhpcyBpcyAtMSB0aGVuCi0rICAgICAgICBpdCBpbmRp Y2F0ZXMgYWxsIGZyYW1lcyB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdGFjayBmcm9tCi0rICAgICAg ICBmcmFtZV9sb3cuCi0rCi0rICAgIFJldHVybnM6Ci0rICAgICAgICBmcmFtZV9pdGVyYXRvcjog VGhlIHNsaWNlZCBpdGVyYXRvciBhZnRlciBhbGwgZnJhbWUKLSsgICAgICAgIGZpbHRlcnMgaGF2 ZSBoYWQgYSBjaGFuZ2UgdG8gZXhlY3V0ZSwgb3IgTm9uZSBpZiBubyBmcmFtZQotKyAgICAgICAg ZmlsdGVycyBhcmUgcmVnaXN0ZXJlZC4KLSsgICAgIiIiCi0rCi0rICAgICMgR2V0IGEgc29ydGVk IGxpc3Qgb2YgZnJhbWUgZmlsdGVycy4KLSsgICAgc29ydGVkX2xpc3QgPSBfc29ydF9saXN0KCkK LSsKLSsgICAgIyBDaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBmcmFtZS1maWx0ZXJzLiAg SWYgbm90LCBqdXN0Ci0rICAgICMgcmV0dXJuIE5vbmUgYW5kIGxldCBkZWZhdWx0IGJhY2t0cmFj ZSBwcmludGluZyBvY2N1ci4KLSsgICAgaWYgbGVuKHNvcnRlZF9saXN0KSA9PSAwOgotKyAgICAg ICAgcmV0dXJuIE5vbmUKLSsKLSsgICAgZnJhbWVfaXRlcmF0b3IgPSBGcmFtZUl0ZXJhdG9yKGZy YW1lKQotKwotKyAgICAjIEFwcGx5IGEgYmFzaWMgZnJhbWUgZGVjb3JhdG9yIHRvIGFsbCBnZGIu RnJhbWVzLiAgVGhpcyB1bmlmaWVzIHRoZQotKyAgICAjIGludGVyZmFjZS4KLSsgICAgZnJhbWVf aXRlcmF0b3IgPSBpdGVydG9vbHMuaW1hcChGcmFtZURlY29yYXRvciwgZnJhbWVfaXRlcmF0b3Ip Ci0rCi0rICAgIGZvciBmZiBpbiBzb3J0ZWRfbGlzdDoKLSsgICAgICAgIGZyYW1lX2l0ZXJhdG9y ID0gZmYuZmlsdGVyKGZyYW1lX2l0ZXJhdG9yKQotKwotKyAgICAjIFNsaWNpbmcKLSsKLSsgICAg IyBJcyB0aGlzIGEgc2xpY2UgZnJvbSB0aGUgZW5kIG9mIHRoZSBiYWNrdHJhY2UsIGllIGJ0IC0y PwotKyAgICBpZiBmcmFtZV9sb3cgPCAwOgotKyAgICAgICAgY291bnQgPSAwCi0rICAgICAgICBz bGljZV9sZW5ndGggPSBhYnMoZnJhbWVfbG93KQotKyAgICAgICAgIyBXZSBjYW5ub3QgdXNlIE1B WExFTiBhcmd1bWVudCBmb3IgZGVxdWUgYXMgaXQgaXMgMi42IG9ud2FyZHMKLSsgICAgICAgICMg YW5kIHNvbWUgR0RCIHZlcnNpb25zIG1pZ2h0IGJlIDwgMi42LgotKyAgICAgICAgc2xpY2VkID0g Y29sbGVjdGlvbnMuZGVxdWUoKQotKwotKyAgICAgICAgZm9yIGZyYW1lX2l0ZW0gaW4gZnJhbWVf aXRlcmF0b3I6Ci0rICAgICAgICAgICAgaWYgY291bnQgPj0gc2xpY2VfbGVuZ3RoOgotKyAgICAg ICAgICAgICAgICBzbGljZWQucG9wbGVmdCgpOwotKyAgICAgICAgICAgIGNvdW50ID0gY291bnQg KyAxCi0rICAgICAgICAgICAgc2xpY2VkLmFwcGVuZChmcmFtZV9pdGVtKQotKwotKyAgICAgICAg cmV0dXJuIGl0ZXIoc2xpY2VkKQotKwotKyAgICAjIC0xIGZvciBmcmFtZV9oaWdoIG1lYW5zIHVu dGlsIHRoZSBlbmQgb2YgdGhlIGJhY2t0cmFjZS4gIFNldCB0bwotKyAgICAjIE5vbmUgaWYgdGhh dCBpcyB0aGUgY2FzZSwgdG8gaW5kaWNhdGUgdG8gaXRlcnRvb2xzLmlzbGljZSB0bwotKyAgICAj IHNsaWNlIHRvIHRoZSBlbmQgb2YgdGhlIGl0ZXJhdG9yLgotKyAgICBpZiBmcmFtZV9oaWdoID09 IC0xOgotKyAgICAgICAgZnJhbWVfaGlnaCA9IE5vbmUKLSsgICAgZWxzZToKLSsgICAgICAgICMg QXMgZnJhbWVzIHN0YXJ0IGZyb20gMCwgYWRkIG9uZSB0byBmcmFtZV9oaWdoIHNvIGlzbGljZQot KyAgICAgICAgIyBjb3JyZWN0bHkgZmluZHMgdGhlIGVuZAotKyAgICAgICAgZnJhbWVfaGlnaCA9 IGZyYW1lX2hpZ2ggKyAxOwotKwotKyAgICBzbGljZWQgPSBpdGVydG9vbHMuaXNsaWNlKGZyYW1l X2l0ZXJhdG9yLCBmcmFtZV9sb3csIGZyYW1lX2hpZ2gpCi0rCi0rICAgIHJldHVybiBzbGljZWQK LUluZGV4OiBnZGItNy42L2dkYi9weXRob24vbGliL2dkYi9fX2luaXRfXy5weQotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjYub3JpZy9nZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkJMjAxMy0w Ni0xMCAxNDozMTowMi43MzMwODQ2NTEgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9weXRob24vbGli L2dkYi9fX2luaXRfXy5weQkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2ODA4MjQzNiArMDIwMAotQEAg LTY3LDYgKzY3LDggQEAgcHJldHR5X3ByaW50ZXJzID0gW10KLSAKLSAjIEluaXRpYWwgdHlwZSBw cmludGVycy4KLSB0eXBlX3ByaW50ZXJzID0gW10KLSsjIEluaXRpYWwgZnJhbWUgZmlsdGVycy4K LStmcmFtZV9maWx0ZXJzID0ge30KLSAKLSAjIENvbnZlbmllbmNlIHZhcmlhYmxlIHRvIEdEQidz IHB5dGhvbiBkaXJlY3RvcnkKLSBQWVRIT05ESVIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5k aXJuYW1lKF9fZmlsZV9fKSkKLUluZGV4OiBnZGItNy42L2dkYi9weXRob24vbGliL2dkYi9jb21t YW5kL2ZyYW1lX2ZpbHRlcnMucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi9weXRob24vbGliL2dk Yi9jb21tYW5kL2ZyYW1lX2ZpbHRlcnMucHkJMjAxMy0wNi0xMCAxNDozMTowOC4zNjgwODI0MzYg KzAyMDAKLUBAIC0wLDAgKzEsNDYxIEBACi0rIyBGcmFtZS1maWx0ZXIgY29tbWFuZHMuCi0rIyBD b3B5cmlnaHQgKEMpIDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyIiIkdEQiBjb21tYW5kcyBmb3Igd29ya2lu ZyB3aXRoIGZyYW1lLWZpbHRlcnMuIiIiCi0rCi0raW1wb3J0IGdkYgotK2ltcG9ydCBjb3B5Ci0r ZnJvbSBnZGIuRnJhbWVJdGVyYXRvciBpbXBvcnQgRnJhbWVJdGVyYXRvcgotK2Zyb20gZ2RiLkZy YW1lRGVjb3JhdG9yIGltcG9ydCBGcmFtZURlY29yYXRvcgotK2ltcG9ydCBnZGIuZnJhbWVzCi0r aW1wb3J0IGl0ZXJ0b29scwotKwotKyMgR0RCIENvbW1hbmRzLgotK2NsYXNzIFNldEZpbHRlclBy ZWZpeENtZChnZGIuQ29tbWFuZCk6Ci0rICAgICIiIlByZWZpeCBjb21tYW5kIGZvciAnc2V0JyBm cmFtZS1maWx0ZXIgcmVsYXRlZCBvcGVyYXRpb25zLiIiIgotKwotKyAgICBkZWYgX19pbml0X18o c2VsZik6Ci0rICAgICAgICBzdXBlcihTZXRGaWx0ZXJQcmVmaXhDbWQsIHNlbGYpLl9faW5pdF9f KCJzZXQgZnJhbWUtZmlsdGVyIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfT0JTQ1VSRSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTVBMRVRFX05PTkUsIFRydWUpCi0r Ci0rY2xhc3MgU2hvd0ZpbHRlclByZWZpeENtZChnZGIuQ29tbWFuZCk6Ci0rICAgICIiIlByZWZp eCBjb21tYW5kIGZvciAnc2hvdycgZnJhbWUtZmlsdGVyIHJlbGF0ZWQgb3BlcmF0aW9ucy4iIiIK LSsgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotKyAgICAgICAgc3VwZXIoU2hvd0ZpbHRlclByZWZp eENtZCwgc2VsZikuX19pbml0X18oInNob3cgZnJhbWUtZmlsdGVyIiwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01NQU5EX09CU0NVUkUs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIu Q09NUExFVEVfTk9ORSwgVHJ1ZSkKLStjbGFzcyBJbmZvRnJhbWVGaWx0ZXIoZ2RiLkNvbW1hbmQp OgotKyAgICAiIiJMaXN0IGFsbCByZWdpc3RlcmVkIFB5dGhvbiBmcmFtZS1maWx0ZXJzLgotKwot KyAgICBVc2FnZTogaW5mbyBmcmFtZS1maWx0ZXJzCi0rICAgICIiIgotKwotKyAgICBkZWYgX19p bml0X18oc2VsZik6Ci0rICAgICAgICBzdXBlcihJbmZvRnJhbWVGaWx0ZXIsIHNlbGYpLl9faW5p dF9fKCJpbmZvIGZyYW1lLWZpbHRlciIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdkYi5DT01NQU5EX0RBVEEpCi0rICAgIEBzdGF0aWNtZXRob2QKLSsg ICAgZGVmIGVuYWJsZWRfc3RyaW5nKHN0YXRlKToKLSsgICAgICAgICIiIlJldHVybiAiWWVzIiBp ZiBmaWx0ZXIgaXMgZW5hYmxlZCwgb3RoZXJ3aXNlICJObyIuIiIiCi0rICAgICAgICBpZiBzdGF0 ZToKLSsgICAgICAgICAgICByZXR1cm4gIlllcyIKLSsgICAgICAgIGVsc2U6Ci0rICAgICAgICAg ICAgcmV0dXJuICJObyIKLSsKLSsgICAgZGVmIGxpc3RfZnJhbWVfZmlsdGVycyhzZWxmLCBmcmFt ZV9maWx0ZXJzKToKLSsgICAgICAgICIiIiBJbnRlcm5hbCB3b3JrZXIgZnVuY3Rpb24gdG8gbGlz dCBhbmQgcHJpbnQgZnJhbWUgZmlsdGVycwotKyAgICAgICAgaW4gYSBkaWN0aW9uYXJ5LgotKwot KyAgICAgICAgQXJndW1lbnRzOgotKyAgICAgICAgICAgZnJhbWVfZmlsdGVyczogVGhlIG5hbWUg b2YgdGhlIGRpY3Rpb25hcnksIGFzCi0rICAgICAgICAgICBzcGVjaWZpZWQgYnkgR0RCIHVzZXIg Y29tbWFuZHMuCi0rICAgICAgICAiIiIKLSsKLSsgICAgICAgIHNvcnRlZF9mcmFtZV9maWx0ZXJz ID0gc29ydGVkKGZyYW1lX2ZpbHRlcnMuaXRlbXMoKSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGtleT1sYW1iZGEgaTogZ2RiLmZyYW1lcy5nZXRfcHJpb3JpdHkoaVsx XSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZlcnNlPVRydWUp Ci0rCi0rICAgICAgICBpZiBsZW4oc29ydGVkX2ZyYW1lX2ZpbHRlcnMpID09IDA6Ci0rICAgICAg ICAgICAgcHJpbnQoIiAgTm8gZnJhbWUgZmlsdGVycyByZWdpc3RlcmVkLiIpCi0rICAgICAgICBl bHNlOgotKyAgICAgICAgICAgIHByaW50KCIgIFByaW9yaXR5ICBFbmFibGVkICBOYW1lIikKLSsg ICAgICAgICAgICBmb3IgZnJhbWVfZmlsdGVyIGluIHNvcnRlZF9mcmFtZV9maWx0ZXJzOgotKyAg ICAgICAgICAgICAgICBuYW1lID0gZnJhbWVfZmlsdGVyWzBdCi0rICAgICAgICAgICAgICAgIHRy eToKLSsgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5ID0gJ3s6PDh9Jy5mb3JtYXQoCi0rICAg ICAgICAgICAgICAgICAgICAgICAgc3RyKGdkYi5mcmFtZXMuZ2V0X3ByaW9yaXR5KGZyYW1lX2Zp bHRlclsxXSkpKQotKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlZCA9ICd7Ojw3fScuZm9ybWF0 KAotKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZW5hYmxlZF9zdHJpbmcoZ2RiLmZyYW1l cy5nZXRfZW5hYmxlZChmcmFtZV9maWx0ZXJbMV0pKSkKLSsgICAgICAgICAgICAgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBlOgotKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgRXJyb3IgcHJp bnRpbmcgZmlsdGVyICciK25hbWUrIic6ICIrc3RyKGUpKQotKyAgICAgICAgICAgICAgICBlbHNl OgotKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgJXMgICVzICAlcyIgJSAocHJpb3JpdHks IGVuYWJsZWQsIG5hbWUpKQotKwotKyAgICBkZWYgcHJpbnRfbGlzdChzZWxmLCB0aXRsZSwgZmls dGVyX2xpc3QsIGJsYW5rX2xpbmUpOgotKyAgICAgICAgcHJpbnQodGl0bGUpCi0rICAgICAgICBz ZWxmLmxpc3RfZnJhbWVfZmlsdGVycyhmaWx0ZXJfbGlzdCkKLSsgICAgICAgIGlmIGJsYW5rX2xp bmU6Ci0rICAgICAgICAgICAgcHJpbnQoIiIpCi0rCi0rICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJn LCBmcm9tX3R0eSk6Ci0rICAgICAgICBzZWxmLnByaW50X2xpc3QoImdsb2JhbCBmcmFtZS1maWx0 ZXJzOiIsIGdkYi5mcmFtZV9maWx0ZXJzLCBUcnVlKQotKwotKyAgICAgICAgY3AgPSBnZGIuY3Vy cmVudF9wcm9nc3BhY2UoKQotKyAgICAgICAgc2VsZi5wcmludF9saXN0KCJwcm9nc3BhY2UgJXMg ZnJhbWUtZmlsdGVyczoiICUgY3AuZmlsZW5hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAg Y3AuZnJhbWVfZmlsdGVycywgVHJ1ZSkKLSsKLSsgICAgICAgIGZvciBvYmpmaWxlIGluIGdkYi5v YmpmaWxlcygpOgotKyAgICAgICAgICAgIHNlbGYucHJpbnRfbGlzdCgib2JqZmlsZSAlcyBmcmFt ZS1maWx0ZXJzOiIgJSBvYmpmaWxlLmZpbGVuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvYmpmaWxlLmZyYW1lX2ZpbHRlcnMsIEZhbHNlKQotKwotKyMgSW50ZXJuYWwgZW5hYmxl L2Rpc2FibGUgZnVuY3Rpb25zLgotKwotK2RlZiBfZW5hYmxlX3BhcnNlX2FyZyhjbWRfbmFtZSwg YXJnKToKLSsgICAgIiIiIEludGVybmFsIHdvcmtlciBmdW5jdGlvbiB0byB0YWtlIGFuIGFyZ3Vt ZW50IGZyb20KLSsgICAgZW5hYmxlL2Rpc2FibGUgYW5kIHJldHVybiBhIHR1cGxlIG9mIGFyZ3Vt ZW50cy4KLSsKLSsgICAgQXJndW1lbnRzOgotKyAgICAgICAgY21kX25hbWU6IE5hbWUgb2YgdGhl IGNvbW1hbmQgaW52b2tpbmcgdGhpcyBmdW5jdGlvbi4KLSsgICAgICAgIGFyZ3M6IFRoZSBhcmd1 bWVudCBhcyBhIHN0cmluZy4KLSsKLSsgICAgUmV0dXJuczoKLSsgICAgICAgIEEgdHVwbGUgY29u dGFpbmluZyB0aGUgZGljdGlvbmFyeSwgYW5kIHRoZSBhcmd1bWVudCwgb3IganVzdAotKyAgICAg ICAgdGhlIGRpY3Rpb25hcnkgaW4gdGhlIGNhc2Ugb2YgImFsbCIuCi0rICAgICIiIgotKwotKyAg ICBhcmd2ID0gZ2RiLnN0cmluZ190b19hcmd2KGFyZyk7Ci0rICAgIGFyZ2MgPSBsZW4oYXJndikK LSsgICAgaWYgYXJndlswXSA9PSAiYWxsIiBhbmQgYXJnYyA+IDE6Ci0rICAgICAgICByYWlzZSBn ZGIuR2RiRXJyb3IoY21kX25hbWUgKyAiOiB3aXRoICdhbGwnICIgXAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgInlvdSBtYXkgbm90IHNwZWNpZnkgYSBmaWx0ZXIuIikKLSsgICAgZWxzZToK LSsgICAgICAgIGlmIGFyZ3ZbMF0gIT0gImFsbCIgYW5kIGFyZ2MgIT0gMjoKLSsgICAgICAgICAg ICByYWlzZSBnZGIuR2RiRXJyb3IoY21kX25hbWUgKyAiIHRha2VzIGV4YWN0bHkgdHdvIGFyZ3Vt ZW50cy4iKQotKwotKyAgICByZXR1cm4gYXJndgotKwotK2RlZiBfZG9fZW5hYmxlX2ZyYW1lX2Zp bHRlcihjb21tYW5kX3R1cGxlLCBmbGFnKToKLSsgICAgIiIiV29ya2VyIGZvciBlbmFibGluZy9k aXNhYmxpbmcgZnJhbWVfZmlsdGVycy4KLSsKLSsgICAgQXJndW1lbnRzOgotKyAgICAgICAgY29t bWFuZF90eXBlOiBBIHR1cGxlIHdpdGggdGhlIGZpcnN0IGVsZW1lbnQgYmVpbmcgdGhlCi0rICAg ICAgICAgICAgICAgICAgICAgIGZyYW1lIGZpbHRlciBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29u ZCBiZWluZwotKyAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJhbWUgZmlsdGVyIG5hbWUuCi0r ICAgICAgICBmbGFnOiBUcnVlIGZvciBFbmFibGUsIEZhbHNlIGZvciBEaXNhYmxlLgotKyAgICAi IiIKLSsKLSsgICAgbGlzdF9vcCA9IGNvbW1hbmRfdHVwbGVbMF0KLSsgICAgb3BfbGlzdCA9IGdk Yi5mcmFtZXMucmV0dXJuX2xpc3QobGlzdF9vcCkKLSsKLSsgICAgaWYgbGlzdF9vcCA9PSAiYWxs IjoKLSsgICAgICAgIGZvciBpdGVtIGluIG9wX2xpc3Q6Ci0rICAgICAgICAgICAgZ2RiLmZyYW1l cy5zZXRfZW5hYmxlZChpdGVtLCBmbGFnKQotKyAgICBlbHNlOgotKyAgICAgICAgZnJhbWVfZmls dGVyID0gY29tbWFuZF90dXBsZVsxXQotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIGZmID0g b3BfbGlzdFtmcmFtZV9maWx0ZXJdCi0rICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0rICAgICAg ICAgICAgbXNnID0gImZyYW1lLWZpbHRlciAnIiArIHN0cihuYW1lKSArICInIG5vdCBmb3VuZC4i Ci0rICAgICAgICAgICAgcmFpc2UgZ2RiLkdkYkVycm9yKG1zZykKLSsKLSsgICAgICAgIGdkYi5m cmFtZXMuc2V0X2VuYWJsZWQoZmYsIGZsYWcpCi0rCi0rZGVmIF9jb21wbGV0ZV9mcmFtZV9maWx0 ZXJfbGlzdCh0ZXh0LCB3b3JkLCBhbGxfZmxhZyk6Ci0rICAgICIiIldvcmtlciBmb3IgZnJhbWUg ZmlsdGVyIGRpY3Rpb25hcnkgbmFtZSBjb21wbGV0aW9uLgotKwotKyAgICBBcmd1bWVudHM6Ci0r ICAgICAgICB0ZXh0OiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBjb21tYW5kIGxpbmUuCi0rICAgICAg ICB3b3JkOiBUaGUgbW9zdCByZWNlbnQgd29yZCBvZiB0aGUgY29tbWFuZCBsaW5lLgotKyAgICAg ICAgYWxsX2ZsYWc6IFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgd29yZCAiYWxsIiBpbiBjb21wbGV0 aW9uLgotKwotKyAgICBSZXR1cm5zOgotKyAgICAgICAgQSBsaXN0IG9mIHN1Z2dlc3RlZCBmcmFt ZSBmaWx0ZXIgZGljdGlvbmFyeSBuYW1lIGNvbXBsZXRpb25zCi0rICAgICAgICBmcm9tIHRleHQv d29yZCBhbmFseXNpcy4gIFRoaXMgbGlzdCBjYW4gYmUgZW1wdHkgd2hlbiB0aGVyZQotKyAgICAg ICAgYXJlIG5vIHN1Z2dlc3Rpb25zIGZvciBjb21wbGV0aW9uLgotKyAgICAgICAgIiIiCi0rICAg IGlmIGFsbF9mbGFnID09IFRydWU6Ci0rICAgICAgICBmaWx0ZXJfbG9jYXRpb25zID0gWyJhbGwi LCAiZ2xvYmFsIiwgInByb2dzcGFjZSJdCi0rICAgIGVsc2U6Ci0rICAgICAgICBmaWx0ZXJfbG9j YXRpb25zID0gWyJnbG9iYWwiLCAicHJvZ3NwYWNlIl0KLSsgICAgZm9yIG9iamZpbGUgaW4gZ2Ri Lm9iamZpbGVzKCk6Ci0rICAgICAgICBmaWx0ZXJfbG9jYXRpb25zLmFwcGVuZChvYmpmaWxlLmZp bGVuYW1lKQotKwotKyAgICAjIElmIHRoZSB1c2VyIGp1c3QgYXNrZWQgZm9yIGNvbXBsZXRpb25z IHdpdGggbm8gY29tcGxldGlvbgotKyAgICAjIGhpbnRzLCBqdXN0IHJldHVybiBhbGwgdGhlIGZy YW1lIGZpbHRlciBkaWN0aW9uYXJpZXMgd2Uga25vdwotKyAgICAjIGFib3V0LgotKyAgICBpZiAo dGV4dCA9PSAiIik6Ci0rICAgICAgICByZXR1cm4gZmlsdGVyX2xvY2F0aW9ucwotKwotKyAgICAj IE90aGVyd2lzZSBmaWx0ZXIgb24gd2hhdCB3ZSBrbm93LgotKyAgICBmbGlzdCA9IGZpbHRlcihs YW1iZGEgeCx5PXRleHQ6eC5zdGFydHN3aXRoKHkpLCBmaWx0ZXJfbG9jYXRpb25zKQotKwotKyAg ICAjIElmIHdlIG9ubHkgaGF2ZSBvbmUgY29tcGxldGlvbiwgY29tcGxldGUgaXQgYW5kIHJldHVy biBpdC4KLSsgICAgaWYgbGVuKGZsaXN0KSA9PSAxOgotKyAgICAgICAgZmxpc3RbMF0gPSBmbGlz dFswXVtsZW4odGV4dCktbGVuKHdvcmQpOl0KLSsKLSsgICAgIyBPdGhlcndpc2UsIHJldHVybiBh biBlbXB0eSBsaXN0LCBvciBhIGxpc3Qgb2YgZnJhbWUgZmlsdGVyCi0rICAgICMgZGljdGlvbmFy aWVzIHRoYXQgdGhlIHByZXZpb3VzIGZpbHRlciBvcGVyYXRpb24gcmV0dXJuZWQuCi0rICAgIHJl dHVybiBmbGlzdAotKwotK2RlZiBfY29tcGxldGVfZnJhbWVfZmlsdGVyX25hbWUod29yZCwgcHJp bnRlcl9kaWN0KToKLSsgICAgIiIiV29ya2VyIGZvciBmcmFtZSBmaWx0ZXIgbmFtZSBjb21wbGV0 aW9uLgotKwotKyAgICBBcmd1bWVudHM6Ci0rCi0rICAgICAgICB3b3JkOiBUaGUgbW9zdCByZWNl bnQgd29yZCBvZiB0aGUgY29tbWFuZCBsaW5lLgotKwotKyAgICAgICAgcHJpbnRlcl9kaWN0OiBU aGUgZnJhbWUgZmlsdGVyIGRpY3Rpb25hcnkgdG8gc2VhcmNoIGZvciBmcmFtZQotKyAgICAgICAg ZmlsdGVyIG5hbWUgY29tcGxldGlvbnMuCi0rCi0rICAgICAgICBSZXR1cm5zOiBBIGxpc3Qgb2Yg c3VnZ2VzdGVkIGZyYW1lIGZpbHRlciBuYW1lIGNvbXBsZXRpb25zCi0rICAgICAgICBmcm9tIHdv cmQgYW5hbHlzaXMgb2YgdGhlIGZyYW1lIGZpbHRlciBkaWN0aW9uYXJ5LiAgVGhpcyBsaXN0Ci0r ICAgICAgICBjYW4gYmUgZW1wdHkgd2hlbiB0aGVyZSBhcmUgbm8gc3VnZ2VzdGlvbnMgZm9yIGNv bXBsZXRpb24uCi0rICAgICIiIgotKwotKyAgICBwcmludGVyX2tleXMgPSBwcmludGVyX2RpY3Qu a2V5cygpCi0rICAgIGlmICh3b3JkID09ICIiKToKLSsgICAgICAgIHJldHVybiBwcmludGVyX2tl eXMKLSsKLSsgICAgZmxpc3QgPSBmaWx0ZXIobGFtYmRhIHgseT13b3JkOnguc3RhcnRzd2l0aCh5 KSwgcHJpbnRlcl9rZXlzKQotKyAgICByZXR1cm4gZmxpc3QKLSsKLStjbGFzcyBFbmFibGVGcmFt ZUZpbHRlcihnZGIuQ29tbWFuZCk6Ci0rICAgICIiIkdEQiBjb21tYW5kIHRvIGRpc2FibGUgdGhl IHNwZWNpZmllZCBmcmFtZS1maWx0ZXIuCi0rCi0rICAgIFVzYWdlOiBlbmFibGUgZnJhbWUtZmls dGVyIGVuYWJsZSBESUNUSU9OQVJZIFtOQU1FXQotKwotKyAgICBESUNUSU9OQVJZIGlzIHRoZSBu YW1lIG9mIHRoZSBmcmFtZSBmaWx0ZXIgZGljdGlvbmFyeSBvbiB3aGljaCB0bwotKyAgICBvcGVy YXRlLiAgSWYgZGljdGlvbmFyeSBpcyBzZXQgdG8gImFsbCIsIHBlcmZvcm0gb3BlcmF0aW9ucyBv biBhbGwKLSsgICAgZGljdGlvbmFyaWVzLiAgTmFtZWQgZGljdGlvbmFyaWVzIGFyZTogImdsb2Jh bCIgZm9yIHRoZSBnbG9iYWwKLSsgICAgZnJhbWUgZmlsdGVyIGRpY3Rpb25hcnksICJwcm9nc3Bh Y2UiIGZvciB0aGUgcHJvZ3JhbSBzcGFjZSdzIGZyYW1lCi0rICAgIGZpbHRlciBkaWN0aW9uYXJ5 LiAgSWYgZWl0aGVyIGFsbCwgb3IgdGhlIHR3byBuYW1lZCBkaWN0aW9uYXJpZXMKLSsgICAgYXJl IG5vdCBzcGVjaWZpZWQsIHRoZSBkaWN0aW9uYXJ5IG5hbWUgaXMgYXNzdW1lZCB0byBiZSB0aGUg bmFtZQotKyAgICBvZiB0aGUgb2JqZWN0LWZpbGUgbmFtZS4KLSsKLSsgICAgTkFNRSBtYXRjaGVz IHRoZSBuYW1lIG9mIHRoZSBmcmFtZS1maWx0ZXIgdG8gb3BlcmF0ZSBvbi4gIElmCi0rICAgIERJ Q1RJT05BUlkgaXMgImFsbCIsIE5BTUUgaXMgaWdub3JlZC4KLSsgICAgIiIiCi0rICAgIGRlZiBf X2luaXRfXyhzZWxmKToKLSsgICAgICAgIHN1cGVyKEVuYWJsZUZyYW1lRmlsdGVyLCBzZWxmKS5f X2luaXRfXygiZW5hYmxlIGZyYW1lLWZpbHRlciIsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01NQU5EX0RBVEEpCi0rICAgIGRlZiBjb21w bGV0ZShzZWxmLCB0ZXh0LCB3b3JkKToKLSsgICAgICAgICIiIkNvbXBsZXRpb24gZnVuY3Rpb24g Zm9yIGJvdGggZnJhbWUgZmlsdGVyIGRpY3Rpb25hcnksIGFuZAotKyAgICAgICAgZnJhbWUgZmls dGVyIG5hbWUuIiIiCi0rICAgICAgICBpZiB0ZXh0LmNvdW50KCIgIikgPT0gMDoKLSsgICAgICAg ICAgICByZXR1cm4gX2NvbXBsZXRlX2ZyYW1lX2ZpbHRlcl9saXN0KHRleHQsIHdvcmQsIFRydWUp Ci0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgIHByaW50ZXJfbGlzdCA9IGdkYi5mcmFtZXMu cmV0dXJuX2xpc3QodGV4dC5zcGxpdCgpWzBdLnJzdHJpcCgpKQotKyAgICAgICAgICAgIHJldHVy biBfY29tcGxldGVfZnJhbWVfZmlsdGVyX25hbWUod29yZCwgcHJpbnRlcl9saXN0KQotKwotKyAg ICBkZWYgaW52b2tlKHNlbGYsIGFyZywgZnJvbV90dHkpOgotKyAgICAgICAgY29tbWFuZF90dXBs ZSA9IF9lbmFibGVfcGFyc2VfYXJnKCJlbmFibGUgZnJhbWUtZmlsdGVyIiwgYXJnKQotKyAgICAg ICAgX2RvX2VuYWJsZV9mcmFtZV9maWx0ZXIoY29tbWFuZF90dXBsZSwgVHJ1ZSkKLSsKLSsKLStj bGFzcyBEaXNhYmxlRnJhbWVGaWx0ZXIoZ2RiLkNvbW1hbmQpOgotKyAgICAiIiJHREIgY29tbWFu ZCB0byBkaXNhYmxlIHRoZSBzcGVjaWZpZWQgZnJhbWUtZmlsdGVyLgotKwotKyAgICBVc2FnZTog ZGlzYWJsZSBmcmFtZS1maWx0ZXIgZGlzYWJsZSBESUNUSU9OQVJZIFtOQU1FXQotKwotKyAgICBE SUNUSU9OQVJZIGlzIHRoZSBuYW1lIG9mIHRoZSBmcmFtZSBmaWx0ZXIgZGljdGlvbmFyeSBvbiB3 aGljaCB0bwotKyAgICBvcGVyYXRlLiAgSWYgZGljdGlvbmFyeSBpcyBzZXQgdG8gImFsbCIsIHBl cmZvcm0gb3BlcmF0aW9ucyBvbiBhbGwKLSsgICAgZGljdGlvbmFyaWVzLiAgTmFtZWQgZGljdGlv bmFyaWVzIGFyZTogImdsb2JhbCIgZm9yIHRoZSBnbG9iYWwKLSsgICAgZnJhbWUgZmlsdGVyIGRp Y3Rpb25hcnksICJwcm9nc3BhY2UiIGZvciB0aGUgcHJvZ3JhbSBzcGFjZSdzIGZyYW1lCi0rICAg IGZpbHRlciBkaWN0aW9uYXJ5LiAgSWYgZWl0aGVyIGFsbCwgb3IgdGhlIHR3byBuYW1lZCBkaWN0 aW9uYXJpZXMKLSsgICAgYXJlIG5vdCBzcGVjaWZpZWQsIHRoZSBkaWN0aW9uYXJ5IG5hbWUgaXMg YXNzdW1lZCB0byBiZSB0aGUgbmFtZQotKyAgICBvZiB0aGUgb2JqZWN0LWZpbGUgbmFtZS4KLSsK LSsgICAgTkFNRSBtYXRjaGVzIHRoZSBuYW1lIG9mIHRoZSBmcmFtZS1maWx0ZXIgdG8gb3BlcmF0 ZSBvbi4gIElmCi0rICAgIERJQ1RJT05BUlkgaXMgImFsbCIsIE5BTUUgaXMgaWdub3JlZC4KLSsg ICAgIiIiCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAgICAgIHN1cGVyKERpc2FibGVG cmFtZUZpbHRlciwgc2VsZikuX19pbml0X18oImRpc2FibGUgZnJhbWUtZmlsdGVyIiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01NQU5E X0RBVEEpCi0rCi0rICAgIGRlZiBjb21wbGV0ZShzZWxmLCB0ZXh0LCB3b3JkKToKLSsgICAgICAg ICIiIkNvbXBsZXRpb24gZnVuY3Rpb24gZm9yIGJvdGggZnJhbWUgZmlsdGVyIGRpY3Rpb25hcnks IGFuZAotKyAgICAgICAgZnJhbWUgZmlsdGVyIG5hbWUuIiIiCi0rICAgICAgICBpZiB0ZXh0LmNv dW50KCIgIikgPT0gMDoKLSsgICAgICAgICAgICByZXR1cm4gX2NvbXBsZXRlX2ZyYW1lX2ZpbHRl cl9saXN0KHRleHQsIHdvcmQsIFRydWUpCi0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgIHBy aW50ZXJfbGlzdCA9IGdkYi5mcmFtZXMucmV0dXJuX2xpc3QodGV4dC5zcGxpdCgpWzBdLnJzdHJp cCgpKQotKyAgICAgICAgICAgIHJldHVybiBfY29tcGxldGVfZnJhbWVfZmlsdGVyX25hbWUod29y ZCwgcHJpbnRlcl9saXN0KQotKwotKyAgICBkZWYgaW52b2tlKHNlbGYsIGFyZywgZnJvbV90dHkp OgotKyAgICAgICAgY29tbWFuZF90dXBsZSA9IF9lbmFibGVfcGFyc2VfYXJnKCJkaXNhYmxlIGZy YW1lLWZpbHRlciIsIGFyZykKLSsgICAgICAgIF9kb19lbmFibGVfZnJhbWVfZmlsdGVyKGNvbW1h bmRfdHVwbGUsIEZhbHNlKQotKwotK2NsYXNzIFNldEZyYW1lRmlsdGVyUHJpb3JpdHkoZ2RiLkNv bW1hbmQpOgotKyAgICAiIiJHREIgY29tbWFuZCB0byBzZXQgdGhlIHByaW9yaXR5IG9mIHRoZSBz cGVjaWZpZWQgZnJhbWUtZmlsdGVyLgotKwotKyAgICBVc2FnZTogc2V0IGZyYW1lLWZpbHRlciBw cmlvcml0eSBESUNUSU9OQVJZIE5BTUUgUFJJT1JJVFkKLSsKLSsgICAgRElDVElPTkFSWSBpcyB0 aGUgbmFtZSBvZiB0aGUgZnJhbWUgZmlsdGVyIGRpY3Rpb25hcnkgb24gd2hpY2ggdG8KLSsgICAg b3BlcmF0ZS4gIE5hbWVkIGRpY3Rpb25hcmllcyBhcmU6ICJnbG9iYWwiIGZvciB0aGUgZ2xvYmFs IGZyYW1lCi0rICAgIGZpbHRlciBkaWN0aW9uYXJ5LCAicHJvZ3NwYWNlIiBmb3IgdGhlIHByb2dy YW0gc3BhY2UncyBmcmFtZWZpbHRlcgotKyAgICBkaWN0aW9uYXJ5LiAgSWYgZWl0aGVyIG9mIHRo ZXNlIHR3byBhcmUgbm90IHNwZWNpZmllZCwgdGhlCi0rICAgIGRpY3Rpb25hcnkgbmFtZSBpcyBh c3N1bWVkIHRvIGJlIHRoZSBuYW1lIG9mIHRoZSBvYmplY3QtZmlsZSBuYW1lLgotKwotKyAgICBO QU1FIG1hdGNoZXMgdGhlIG5hbWUgb2YgdGhlIGZyYW1lIGZpbHRlciB0byBvcGVyYXRlIG9uLgot KwotKyAgICBQUklPUklUWSBpcyB0aGUgYW4gaW50ZWdlciB0byBhc3NpZ24gdGhlIG5ldyBwcmlv cml0eSB0byB0aGUgZnJhbWUKLSsgICAgZmlsdGVyLgotKyAgICAiIiIKLSsKLSsgICAgZGVmIF9f aW5pdF9fKHNlbGYpOgotKyAgICAgICAgc3VwZXIoU2V0RnJhbWVGaWx0ZXJQcmlvcml0eSwgc2Vs ZikuX19pbml0X18oInNldCBmcmFtZS1maWx0ZXIgIiBcCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpb3JpdHkiLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfREFU QSkKLSsKLSsgICAgZGVmIF9wYXJzZV9wcmlfYXJnKHNlbGYsIGFyZyk6Ci0rICAgICAgICAiIiJJ bnRlcm5hbCB3b3JrZXIgdG8gcGFyc2UgYSBwcmlvcml0eSBmcm9tIGEgdHVwbGUuCi0rCi0rICAg ICAgICBBcmd1bWVudHM6Ci0rICAgICAgICAgICAgYXJnOiBUdXBsZSB3aGljaCBjb250YWlucyB0 aGUgYXJndW1lbnRzIGZyb20gdGhlIGNvbW1hbmQuCi0rCi0rICAgICAgICBSZXR1cm5zOgotKyAg ICAgICAgICAgIEEgdHVwbGUgY29udGFpbmluZyB0aGUgZGljdGlvbmFyeSwgbmFtZSBhbmQgcHJp b3JpdHkgZnJvbQotKyAgICAgICAgICAgIHRoZSBhcmd1bWVudHMuCi0rCi0rICAgICAgICBSYWlz ZXM6Ci0rICAgICAgICAgICAgZ2RiLkdkYkVycm9yOiBBbiBlcnJvciBwYXJzaW5nIHRoZSBhcmd1 bWVudHMuCi0rICAgICAgICAiIiIKLSsKLSsgICAgICAgIGFyZ3YgPSBnZGIuc3RyaW5nX3RvX2Fy Z3YoYXJnKTsKLSsgICAgICAgIGFyZ2MgPSBsZW4oYXJndikKLSsgICAgICAgIGlmIGFyZ2MgIT0g MzoKLSsgICAgICAgICAgICBwcmludCgic2V0IGZyYW1lLWZpbHRlciBwcmlvcml0eSAiIFwKLSsg ICAgICAgICAgICAgICAgICAidGFrZXMgZXhhY3RseSB0aHJlZSBhcmd1bWVudHMuIikKLSsgICAg ICAgICAgICByZXR1cm4gTm9uZQotKwotKyAgICAgICAgcmV0dXJuIGFyZ3YKLSsKLSsgICAgZGVm IF9zZXRfZmlsdGVyX3ByaW9yaXR5KHNlbGYsIGNvbW1hbmRfdHVwbGUpOgotKyAgICAgICAgIiIi SW50ZXJuYWwgd29ya2VyIGZvciBzZXR0aW5nIHByaW9yaXR5IG9mIGZyYW1lLWZpbHRlcnMsIGJ5 Ci0rICAgICAgICBwYXJzaW5nIGEgdHVwbGUgYW5kIGNhbGxpbmcgX3NldF9wcmlvcml0eSB3aXRo IHRoZSBwYXJzZWQKLSsgICAgICAgIHR1cGxlLgotKwotKyAgICAgICAgQXJndW1lbnRzOgotKyAg ICAgICAgICAgIGNvbW1hbmRfdHVwbGU6IFR1cGxlIHdoaWNoIGNvbnRhaW5zIHRoZSBhcmd1bWVu dHMgZnJvbSB0aGUKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLgotKyAgICAg ICAgIiIiCi0rCi0rICAgICAgICBsaXN0X29wID0gY29tbWFuZF90dXBsZVswXQotKyAgICAgICAg ZnJhbWVfZmlsdGVyID0gY29tbWFuZF90dXBsZVsxXQotKyAgICAgICAgcHJpb3JpdHkgPSBjb21t YW5kX3R1cGxlWzJdCi0rCi0rICAgICAgICBvcF9saXN0ID0gZ2RiLmZyYW1lcy5yZXR1cm5fbGlz dChsaXN0X29wKQotKwotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIGZmID0gb3BfbGlzdFtm cmFtZV9maWx0ZXJdCi0rICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0rICAgICAgICAgICAgbXNn ID0gImZyYW1lLWZpbHRlciAnIiArIHN0cihuYW1lKSArICInIG5vdCBmb3VuZC4iCi0rICAgICAg ICAgICAgcmFpc2UgZ2RiLkdkYkVycm9yKG1zZykKLSsKLSsgICAgICAgIGdkYi5mcmFtZXMuc2V0 X3ByaW9yaXR5KGZmLCBwcmlvcml0eSkKLSsKLSsgICAgZGVmIGNvbXBsZXRlKHNlbGYsIHRleHQs IHdvcmQpOgotKyAgICAgICAgIiIiQ29tcGxldGlvbiBmdW5jdGlvbiBmb3IgYm90aCBmcmFtZSBm aWx0ZXIgZGljdGlvbmFyeSwgYW5kCi0rICAgICAgICBmcmFtZSBmaWx0ZXIgbmFtZS4iIiIKLSsg ICAgICAgIGlmIHRleHQuY291bnQoIiAiKSA9PSAwOgotKyAgICAgICAgICAgIHJldHVybiBfY29t cGxldGVfZnJhbWVfZmlsdGVyX2xpc3QodGV4dCwgd29yZCwgRmFsc2UpCi0rICAgICAgICBlbHNl OgotKyAgICAgICAgICAgIHByaW50ZXJfbGlzdCA9IGdkYi5mcmFtZXMucmV0dXJuX2xpc3QodGV4 dC5zcGxpdCgpWzBdLnJzdHJpcCgpKQotKyAgICAgICAgICAgIHJldHVybiBfY29tcGxldGVfZnJh bWVfZmlsdGVyX25hbWUod29yZCwgcHJpbnRlcl9saXN0KQotKwotKyAgICBkZWYgaW52b2tlKHNl bGYsIGFyZywgZnJvbV90dHkpOgotKyAgICAgICAgY29tbWFuZF90dXBsZSA9IHNlbGYuX3BhcnNl X3ByaV9hcmcoYXJnKQotKyAgICAgICAgaWYgY29tbWFuZF90dXBsZSAhPSBOb25lOgotKyAgICAg ICAgICAgIHNlbGYuX3NldF9maWx0ZXJfcHJpb3JpdHkoY29tbWFuZF90dXBsZSkKLSsKLStjbGFz cyBTaG93RnJhbWVGaWx0ZXJQcmlvcml0eShnZGIuQ29tbWFuZCk6Ci0rICAgICIiIkdEQiBjb21t YW5kIHRvIHNob3cgdGhlIHByaW9yaXR5IG9mIHRoZSBzcGVjaWZpZWQgZnJhbWUtZmlsdGVyLgot KwotKyAgICBVc2FnZTogc2hvdyBmcmFtZS1maWx0ZXIgcHJpb3JpdHkgRElDVElPTkFSWSBOQU1F Ci0rCi0rICAgIERJQ1RJT05BUlkgaXMgdGhlIG5hbWUgb2YgdGhlIGZyYW1lIGZpbHRlciBkaWN0 aW9uYXJ5IG9uIHdoaWNoIHRvCi0rICAgIG9wZXJhdGUuICBOYW1lZCBkaWN0aW9uYXJpZXMgYXJl OiAiZ2xvYmFsIiBmb3IgdGhlIGdsb2JhbCBmcmFtZQotKyAgICBmaWx0ZXIgZGljdGlvbmFyeSwg InByb2dzcGFjZSIgZm9yIHRoZSBwcm9ncmFtIHNwYWNlJ3MgZnJhbWVmaWx0ZXIKLSsgICAgZGlj dGlvbmFyeS4gIElmIGVpdGhlciBvZiB0aGVzZSB0d28gYXJlIG5vdCBzcGVjaWZpZWQsIHRoZQot KyAgICBkaWN0aW9uYXJ5IG5hbWUgaXMgYXNzdW1lZCB0byBiZSB0aGUgbmFtZSBvZiB0aGUgb2Jq ZWN0LWZpbGUgbmFtZS4KLSsKLSsgICAgTkFNRSBtYXRjaGVzIHRoZSBuYW1lIG9mIHRoZSBmcmFt ZS1maWx0ZXIgdG8gb3BlcmF0ZSBvbi4KLSsgICAgIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyhz ZWxmKToKLSsgICAgICAgIHN1cGVyKFNob3dGcmFtZUZpbHRlclByaW9yaXR5LCBzZWxmKS5fX2lu aXRfXygic2hvdyBmcmFtZS1maWx0ZXIgIiBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInByaW9yaXR5IiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9EQVRBKQot KwotKyAgICBkZWYgX3BhcnNlX3ByaV9hcmcoc2VsZiwgYXJnKToKLSsgICAgICAgICIiIkludGVy bmFsIHdvcmtlciB0byBwYXJzZSBhIGRpY3Rpb25hcnkgYW5kIG5hbWUgZnJvbSBhCi0rICAgICAg ICB0dXBsZS4KLSsKLSsgICAgICAgIEFyZ3VtZW50czoKLSsgICAgICAgICAgICBhcmc6IFR1cGxl IHdoaWNoIGNvbnRhaW5zIHRoZSBhcmd1bWVudHMgZnJvbSB0aGUgY29tbWFuZC4KLSsKLSsgICAg ICAgIFJldHVybnM6Ci0rICAgICAgICAgICAgQSB0dXBsZSBjb250YWluaW5nIHRoZSBkaWN0aW9u YXJ5LCAgYW5kIGZyYW1lIGZpbHRlciBuYW1lLgotKwotKyAgICAgICAgUmFpc2VzOgotKyAgICAg ICAgICAgIGdkYi5HZGJFcnJvcjogQW4gZXJyb3IgcGFyc2luZyB0aGUgYXJndW1lbnRzLgotKyAg ICAgICAgIiIiCi0rCi0rICAgICAgICBhcmd2ID0gZ2RiLnN0cmluZ190b19hcmd2KGFyZyk7Ci0r ICAgICAgICBhcmdjID0gbGVuKGFyZ3YpCi0rICAgICAgICBpZiBhcmdjICE9IDI6Ci0rICAgICAg ICAgICAgcHJpbnQoInNob3cgZnJhbWUtZmlsdGVyIHByaW9yaXR5ICIgXAotKyAgICAgICAgICAg ICAgICAgICJ0YWtlcyBleGFjdGx5IHR3byBhcmd1bWVudHMuIikKLSsgICAgICAgICAgICByZXR1 cm4gTm9uZQotKwotKyAgICAgICAgcmV0dXJuIGFyZ3YKLSsKLSsgICAgZGVmIGdldF9maWx0ZXJf cHJpb3JpdHkoc2VsZiwgZnJhbWVfZmlsdGVycywgbmFtZSk6Ci0rICAgICAgICAiIiJXb3JrZXIg Zm9yIHJldHJpZXZpbmcgdGhlIHByaW9yaXR5IG9mIGZyYW1lX2ZpbHRlcnMuCi0rCi0rICAgICAg ICBBcmd1bWVudHM6Ci0rICAgICAgICAgICAgZnJhbWVfZmlsdGVyczogTmFtZSBvZiBmcmFtZSBm aWx0ZXIgZGljdGlvbmFyeS4KLSsgICAgICAgICAgICBuYW1lOiBvYmplY3QgdG8gc2VsZWN0IHBy aW50ZXJzLgotKwotKyAgICAgICAgUmV0dXJuczoKLSsgICAgICAgICAgICBUaGUgcHJpb3JpdHkg b2YgdGhlIGZyYW1lIGZpbHRlci4KLSsKLSsgICAgICAgIFJhaXNlczoKLSsgICAgICAgICAgICBn ZGIuR2RiRXJyb3I6IEEgZnJhbWUgZmlsdGVyIGNhbm5vdCBiZSBmb3VuZC4KLSsgICAgICAgICIi IgotKwotKyAgICAgICAgb3BfbGlzdCA9IGdkYi5mcmFtZXMucmV0dXJuX2xpc3QoZnJhbWVfZmls dGVycykKLSsKLSsgICAgICAgIHRyeToKLSsgICAgICAgICAgICBmZiA9IG9wX2xpc3RbbmFtZV0K LSsgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSsgICAgICAgICAgICBtc2cgPSAiZnJhbWUtZmls dGVyICciICsgc3RyKG5hbWUpICsgIicgbm90IGZvdW5kLiIKLSsgICAgICAgICAgICByYWlzZSBn ZGIuR2RiRXJyb3IobXNnKQotKwotKyAgICAgICAgcmV0dXJuIGdkYi5mcmFtZXMuZ2V0X3ByaW9y aXR5KGZmKQotKwotKyAgICBkZWYgY29tcGxldGUoc2VsZiwgdGV4dCwgd29yZCk6Ci0rICAgICAg ICAiIiJDb21wbGV0aW9uIGZ1bmN0aW9uIGZvciBib3RoIGZyYW1lIGZpbHRlciBkaWN0aW9uYXJ5 LCBhbmQKLSsgICAgICAgIGZyYW1lIGZpbHRlciBuYW1lLiIiIgotKwotKyAgICAgICAgaWYgdGV4 dC5jb3VudCgiICIpID09IDA6Ci0rICAgICAgICAgICAgcmV0dXJuIF9jb21wbGV0ZV9mcmFtZV9m aWx0ZXJfbGlzdCh0ZXh0LCB3b3JkLCBGYWxzZSkKLSsgICAgICAgIGVsc2U6Ci0rICAgICAgICAg ICAgcHJpbnRlcl9saXN0ID0gZnJhbWUuX3JldHVybl9saXN0KHRleHQuc3BsaXQoKVswXS5yc3Ry aXAoKSkKLSsgICAgICAgICAgICByZXR1cm4gX2NvbXBsZXRlX2ZyYW1lX2ZpbHRlcl9uYW1lKHdv cmQsIHByaW50ZXJfbGlzdCkKLSsKLSsgICAgZGVmIGludm9rZShzZWxmLCBhcmcsIGZyb21fdHR5 KToKLSsgICAgICAgIGNvbW1hbmRfdHVwbGUgPSBzZWxmLl9wYXJzZV9wcmlfYXJnKGFyZykKLSsg ICAgICAgIGlmIGNvbW1hbmRfdHVwbGUgPT0gTm9uZToKLSsgICAgICAgICAgICByZXR1cm4KLSsg ICAgICAgIGZpbHRlcl9uYW1lID0gY29tbWFuZF90dXBsZVsxXQotKyAgICAgICAgbGlzdF9uYW1l ID0gY29tbWFuZF90dXBsZVswXQotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIHByaW9yaXR5 ID0gc2VsZi5nZXRfZmlsdGVyX3ByaW9yaXR5KGxpc3RfbmFtZSwgZmlsdGVyX25hbWUpOwotKyAg ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotKyAgICAgICAgICAgIHByaW50KCJFcnJvciBw cmludGluZyBmaWx0ZXIgcHJpb3JpdHkgZm9yICciK25hbWUrIic6IitzdHIoZSkpCi0rICAgICAg ICBlbHNlOgotKyAgICAgICAgICAgIHByaW50KCJQcmlvcml0eSBvZiBmaWx0ZXIgJyIgKyBmaWx0 ZXJfbmFtZSArICInIGluIGxpc3QgJyIgXAotKyAgICAgICAgICAgICAgICArIGxpc3RfbmFtZSAr ICInIGlzOiAiICsgc3RyKHByaW9yaXR5KSkKLSsKLSsjIFJlZ2lzdGVyIGNvbW1hbmRzCi0rU2V0 RmlsdGVyUHJlZml4Q21kKCkKLStTaG93RmlsdGVyUHJlZml4Q21kKCkKLStJbmZvRnJhbWVGaWx0 ZXIoKQotK0VuYWJsZUZyYW1lRmlsdGVyKCkKLStEaXNhYmxlRnJhbWVGaWx0ZXIoKQotK1NldEZy YW1lRmlsdGVyUHJpb3JpdHkoKQotK1Nob3dGcmFtZUZpbHRlclByaW9yaXR5KCkKLUluZGV4OiBn ZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRlci1nZGIucHkuaW4K LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRl ci1nZGIucHkuaW4JMjAxMy0wNi0xMCAxNDozMTowOC4zNjgwODI0MzYgKzAyMDAKLUBAIC0wLDAg KzEsNDggQEAKLSsjIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBUaGlzIGZpbGUg aXMgcGFydCBvZiB0aGUgR0RCIHRlc3RzdWl0ZS4gIEl0IHRlc3RzIFB5dGhvbi1iYXNlZAotKyMg ZnJhbWUtZmlsdGVycy4KLStpbXBvcnQgZ2RiCi0raW1wb3J0IGl0ZXJ0b29scwotK2Zyb20gZ2Ri LkZyYW1lRGVjb3JhdG9yIGltcG9ydCBGcmFtZURlY29yYXRvcgotKwotKwotK2NsYXNzIEZyYW1l T2JqRmlsZSAoKToKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHNlbGYu bmFtZSA9ICJGaWx0ZXIxIgotKyAgICAgICAgc2VsZi5wcmlvcml0eSA9IDEKLSsgICAgICAgIHNl bGYuZW5hYmxlZCA9IEZhbHNlCi0rICAgICAgICBnZGIuY3VycmVudF9wcm9nc3BhY2UoKS5mcmFt ZV9maWx0ZXJzIFsiUHJvZ3NwYWNlIiArIHNlbGYubmFtZV0gPSBzZWxmCi0rICAgICAgICBnZGIu Y3VycmVudF9vYmpmaWxlKCkuZnJhbWVfZmlsdGVycyBbIk9iamVjdEZpbGUiICsgc2VsZi5uYW1l XSA9IHNlbGYKLSsKLSsgICAgZGVmIGZpbHRlciAoc2VsZiwgZnJhbWVfaXRlcik6Ci0rICAgICAg ICByZXR1cm4gZnJhbWVfaXRlcgotKwotK2NsYXNzIEZyYW1lT2JqRmlsZTIgKCk6Ci0rCi0rICAg IGRlZiBfX2luaXRfXyAoc2VsZik6Ci0rICAgICAgICBzZWxmLm5hbWUgPSAiRmlsdGVyMiIKLSsg ICAgICAgIHNlbGYucHJpb3JpdHkgPSAxMDAKLSsgICAgICAgIHNlbGYuZW5hYmxlZCA9IFRydWUK LSsgICAgICAgIGdkYi5jdXJyZW50X3Byb2dzcGFjZSgpLmZyYW1lX2ZpbHRlcnMgWyJQcm9nc3Bh Y2UiICsgc2VsZi5uYW1lXSA9IHNlbGYKLSsgICAgICAgIGdkYi5jdXJyZW50X29iamZpbGUoKS5m cmFtZV9maWx0ZXJzIFsiT2JqZWN0RmlsZSIgKyBzZWxmLm5hbWVdID0gc2VsZgotKwotKyAgICBk ZWYgZmlsdGVyIChzZWxmLCBmcmFtZV9pdGVyKToKLSsgICAgICAgIHJldHVybiBmcmFtZV9pdGVy Ci0rCi0rRnJhbWVPYmpGaWxlKCkKLStGcmFtZU9iakZpbGUyKCkKLUluZGV4OiBnZGItNy42L2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRlci1taS5jCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXItbWkuYwkyMDEzLTA2 LTEwIDE0OjMxOjA4LjM2ODA4MjQzNiArMDIwMAotQEAgLTAsMCArMSwxMzggQEAKLSsvKiBUaGlz IHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHly aWdodCAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0r Ci0rdm9pZCBmdW5jYSh2b2lkKTsKLStpbnQgY291bnQgPSAwOwotKwotK3R5cGVkZWYgc3RydWN0 Ci0rewotKyAgY2hhciAqbm90aGluZzsKLSsgIGludCBmOwotKyAgc2hvcnQgczsKLSt9IGZvb2Jh cjsKLSsKLSt2b2lkIGVuZF9mdW5jIChpbnQgZm9vLCBjaGFyICpiYXIsIGZvb2JhciAqZmIsIGZv b2JhciBiZikKLSt7Ci0rICBjb25zdCBjaGFyICpzdHIgPSAiVGhlIEVuZCI7Ci0rICBjb25zdCBj aGFyICpzdDIgPSAiSXMgTmVhciI7Ci0rICBpbnQgYiA9IDEyOwotKyAgc2hvcnQgYyA9IDU7Ci0r ICB7Ci0rICAgIGludCBkID0gMTU7Ci0rICAgIGludCBlID0gMTQ7Ci0rICAgIGNvbnN0IGNoYXIg KmZvbyA9ICJJbnNpZGUgYmxvY2siOwotKyAgICB7Ci0rICAgICAgaW50IGYgPSA0MjsKLSsgICAg ICBpbnQgZyA9IDE5OwotKyAgICAgIGNvbnN0IGNoYXIgKmJhciA9ICJJbnNpZGUgYmxvY2sgeDIi OwotKyAgICAgIHsKLSsJc2hvcnQgaCA9IDk7Ci0rCWggPSBoICsxOyAgLyogSW5uZXIgdGVzdCBi cmVha3BvaW50ICAqLwotKyAgICAgIH0KLSsgICAgfQotKyAgfQotKwotKyAgcmV0dXJuOyAvKiBC YWNrdHJhY2UgZW5kIGJyZWFrcG9pbnQgKi8KLSt9Ci0rCi0rdm9pZCBmdW5jYihpbnQgaikKLSt7 Ci0rICBzdHJ1Y3QgZm9vCi0rICB7Ci0rICAgIGludCBhOwotKyAgICBpbnQgYjsKLSsgIH07Ci0r Ci0rICBzdHJ1Y3QgZm9vIGJhcjsKLSsKLSsgIGJhci5hID0gNDI7Ci0rICBiYXIuYiA9IDg0Owot KwotKyAgZnVuY2EoKTsKLSsgIHJldHVybjsKLSt9Ci0rCi0rdm9pZCBmdW5jYSh2b2lkKQotK3sK LSsgIGZvb2JhciBmYjsKLSsgIGZvb2JhciAqYmY7Ci0rCi0rICBpZiAoY291bnQgPCAxMCkKLSsg ICAgewotKyAgICAgIGNvdW50Kys7Ci0rICAgICAgZnVuY2IoY291bnQpOwotKyAgICB9Ci0rCi0r ICBmYi5ub3RoaW5nID0gIkZvbyBCYXIiOwotKyAgZmIuZiA9IDQyOwotKyAgZmIucyA9IDE5Owot KwotKyAgYmYgPSBtYWxsb2MgKHNpemVvZiAoZm9vYmFyKSk7Ci0rICBiZi0+bm90aGluZyA9IG1h bGxvYyAoMTI4KTsKLSsgIGJmLT5ub3RoaW5nID0gIkJhciBGb28iOwotKyAgYmYtPmYgPSAyNDsK LSsgIGJmLT5zID0gOTE7Ci0rCi0rICBlbmRfZnVuYygyMSwgIlBhcmFtIiwgYmYsIGZiKTsKLSsg IGZyZWUgKGJmLT5ub3RoaW5nKTsKLSsgIGZyZWUgKGJmKTsKLSsgIHJldHVybjsKLSt9Ci0rCi0r Ci0rdm9pZCBmdW5jMSh2b2lkKQotK3sKLSsgIGZ1bmNhKCk7Ci0rICByZXR1cm47Ci0rfQotKwot K2ludCBmdW5jMih2b2lkKQotK3sKLSsgIGZ1bmMxKCk7Ci0rICByZXR1cm4gMTsKLSt9Ci0rCi0r dm9pZCBmdW5jMyhpbnQgaSkKLSt7Ci0rICBmdW5jMigpOwotKwotKyAgcmV0dXJuOwotK30KLSsK LStpbnQgZnVuYzQoaW50IGopCi0rewotKyAgZnVuYzMoaik7Ci0rCi0rICByZXR1cm4gMjsKLSt9 Ci0rCi0raW50IGZ1bmM1KGludCBmLCBpbnQgZCkKLSt7Ci0rICBpbnQgaSA9IDA7Ci0rICBjaGFy ICpyYW5kb20gPSAicmFuZG9tIjsKLSsgIGk9aStmOwotKwotKyAgZnVuYzQoaSk7Ci0rICByZXR1 cm4gaTsKLSt9Ci0rCi0rbWFpbigpCi0rewotKyAgZnVuYzUoMyw1KTsKLSt9Ci1JbmRleDogZ2Ri LTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXItbWkuZXhwCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw Ci0rKysgZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXItbWku ZXhwCTIwMTMtMDYtMTAgMTQ6MzE6MDguMzY4MDgyNDM2ICswMjAwCi1AQCAtMCwwICsxLDE3OSBA QAotKyMgQ29weXJpZ2h0IChDKSAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBHREIgdGVzdHN1aXRlLiAgSXQgdGVzdHMgUHl0aG9uLWJhc2VkCi0rIyBmcmFtZS1m aWx0ZXJzLgotK2xvYWRfbGliIG1pLXN1cHBvcnQuZXhwCi0rbG9hZF9saWIgZ2RiLXB5dGhvbi5l eHAKLSsKLStzZXQgTUlGTEFHUyAiLWk9bWkyIgotKwotK2dkYl9leGl0Ci0raWYgW21pX2dkYl9z dGFydF0gewotKyAgICBjb250aW51ZQotK30KLSsKLStzdGFuZGFyZF90ZXN0ZmlsZSBweS1mcmFt ZWZpbHRlci1taS5jCi0rc2V0IHB5ZmlsZSBweS1mcmFtZWZpbHRlci5weQotKwotK2lmICB7IFtn ZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIg ZXhlY3V0YWJsZSB7ZGVidWcgYWRkaXRpb25hbF9mbGFncz0tRE1JfV0gIT0gIiIgfSB7Ci0rICAg IHVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rbWlfZGVs ZXRlX2JyZWFrcG9pbnRzCi0rbWlfZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGly Ci0rbWlfZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmIHtbbHNlYXJjaCAtZXhhY3QgW21pX2dl dF9mZWF0dXJlc10gcHl0aG9uXSA8IDB9IHsKLSsgICAgdW5zdXBwb3J0ZWQgInB5dGhvbiBzdXBw b3J0IGlzIGRpc2FibGVkIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rbWlfcnVudG8gbWFpbgot KwotK3NldCByZW1vdGVfcHl0aG9uX2ZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICR7c3JjZGly fS8ke3N1YmRpcn0vJHtweWZpbGV9XQotKwotK21pX2dkYl90ZXN0ICJweXRob24gZXhlY2ZpbGUg KCcke3JlbW90ZV9weXRob25fZmlsZX0nKSIgIi4qXFxeZG9uZS4iIFwKLSsgICAgIkxvYWQgcHl0 aG9uIGZpbGUiCi0rCi0rIyBNdWx0aXBsZSBibG9ja3MgdGVzdAotK21pX2NvbnRpbnVlX3RvX2xp bmUgW2dkYl9nZXRfbGluZV9udW1iZXIge0lubmVyIHRlc3QgYnJlYWtwb2ludH0gJHtzcmNmaWxl fV0gXAotKyAgInN0ZXAgdG8gYnJlYWtwb2ludCIKLSsKLSttaV9nZGJfdGVzdCAiLXN0YWNrLWxp c3QtbG9jYWxzIC0tYWxsLXZhbHVlcyIgXAotKyAgICAiXFxeZG9uZSxsb2NhbHM9XFxcW3tuYW1l PVwiaFwiLHZhbHVlPVwiOVwifSx7bmFtZT1cImZcIix2YWx1ZT1cIjQyXCJ9LHtuYW1lPVwiZ1wi LHZhbHVlPVwiMTlcIn0se25hbWU9XCJiYXJcIix2YWx1ZT1cIiRoZXggXFxcXFwiSW5zaWRlIGJs b2NrIHgyXFxcXFwiXCJ9LHtuYW1lPVwiZFwiLHZhbHVlPVwiMTVcIn0se25hbWU9XCJlXCIsdmFs dWU9XCIxNFwifSx7bmFtZT1cImZvb1wiLHZhbHVlPVwiJGhleCBcXFxcXCJJbnNpZGUgYmxvY2tc XFxcXCJcIn0se25hbWU9XCJzdHJcIix2YWx1ZT1cIiRoZXggXFxcXFwiVGhlIEVuZFxcXFxcIlwi fSx7bmFtZT1cInN0MlwiLHZhbHVlPVwiJGhleCBcXFxcXCJJcyBOZWFyXFxcXFwiXCJ9LHtuYW1l PVwiYlwiLHZhbHVlPVwiMTJcIn0se25hbWU9XCJjXCIsdmFsdWU9XCI1XCJ9XFxcXSIgXAotKyAg ICAic3RhY2stbGlzdC1sb2NhbHMgLS1hbGwtdmFsdWVzIgotKwotK21pX2dkYl90ZXN0ICItZW5h YmxlLWZyYW1lLWZpbHRlcnMiICIuKlxcXmRvbmUuIiAiZW5hYmxlIGZyYW1lIGZpbHRlcnMiCi0r bWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0LWxvY2FscyAtLWFsbC12YWx1ZXMiIFwKLSsgICAgIlxc XmRvbmUsbG9jYWxzPVxcXFt7bmFtZT1cImhcIix2YWx1ZT1cIjlcIn0se25hbWU9XCJmXCIsdmFs dWU9XCI0MlwifSx7bmFtZT1cImdcIix2YWx1ZT1cIjE5XCJ9LHtuYW1lPVwiYmFyXCIsdmFsdWU9 XCIkaGV4IFxcXFxcIkluc2lkZSBibG9jayB4MlxcXFxcIlwifSx7bmFtZT1cImRcIix2YWx1ZT1c IjE1XCJ9LHtuYW1lPVwiZVwiLHZhbHVlPVwiMTRcIn0se25hbWU9XCJmb29cIix2YWx1ZT1cIiRo ZXggXFxcXFwiSW5zaWRlIGJsb2NrXFxcXFwiXCJ9LHtuYW1lPVwic3RyXCIsdmFsdWU9XCIkaGV4 IFxcXFxcIlRoZSBFbmRcXFxcXCJcIn0se25hbWU9XCJzdDJcIix2YWx1ZT1cIiRoZXggXFxcXFwi SXMgTmVhclxcXFxcIlwifSx7bmFtZT1cImJcIix2YWx1ZT1cIjEyXCJ9LHtuYW1lPVwiY1wiLHZh bHVlPVwiNVwifVxcXF0iIFwKLSsgICAgInN0YWNrLWxpc3QtbG9jYWxzIC0tYWxsLXZhbHVlcyBm cmFtZSBmaWx0ZXJzIGVuYWJsZWQiCi0rCi0rbWlfY29udGludWVfdG9fbGluZSBbZ2RiX2dldF9s aW5lX251bWJlciB7QmFja3RyYWNlIGVuZCBicmVha3BvaW50fSAke3NyY2ZpbGV9XSBcCi0rICAi c3RlcCB0byBicmVha3BvaW50IgotKwotK21pX2dkYl90ZXN0ICItc3RhY2stbGlzdC1mcmFtZXMi IFwKLSsgICAgIlxcXmRvbmUsc3RhY2s9XFxcW2ZyYW1lPXtsZXZlbD1cIjBcIixhZGRyPVwiJGhl eFwiLGZ1bmM9XCJjbnVmX2RuZVwiLip9LGZyYW1lPXtsZXZlbD1cIjFcIixhZGRyPVwiJGhleFwi LGZ1bmM9XCJhY251ZlwiLip9LGZyYW1lPXtsZXZlbD1cIjJcIixhZGRyPVwiJGhleFwiLGZ1bmM9 XCJiY251ZlwiLip9LGZyYW1lPXtsZXZlbD1cIjNcIixhZGRyPVwiJGhleFwiLGZ1bmM9XCJhY251 ZlwiLip9LGZyYW1lPXtsZXZlbD1cIjIyXCIsYWRkcj1cIiRoZXhcIixmdW5jPVwiMWNudWZcIi4q LGNoaWxkcmVuPVxcXFtmcmFtZT17bGV2ZWw9XCIyM1wiLGFkZHI9XCIkaGV4XCIsZnVuYz1cImZ1 bmMyXCIuKn1cXFxdfSxmcmFtZT17bGV2ZWw9XCIyNFwiLGFkZHI9XCIkaGV4XCIsZnVuYz1cIjNj bnVmXCIuKn0sZnJhbWU9e2xldmVsPVwiMjdcIixhZGRyPVwiJGhleFwiLGZ1bmM9XCJuaWFtXCIu Kn1cXFxdLioiIFwKLSsgICAgImZpbHRlcmVkIHN0YWNrIGxpc3RpbmciCi0rbWlfZ2RiX3Rlc3Qg Ii1zdGFjay1saXN0LWZyYW1lcyAwIDMiIFwKLSsgICAgIlxcXmRvbmUsc3RhY2s9XFxcW2ZyYW1l PXtsZXZlbD1cIjBcIixhZGRyPVwiJGhleFwiLGZ1bmM9XCJjbnVmX2RuZVwiLip9LGZyYW1lPXts ZXZlbD1cIjFcIixhZGRyPVwiJGhleFwiLGZ1bmM9XCJhY251ZlwiLip9LGZyYW1lPXtsZXZlbD1c IjJcIixhZGRyPVwiJGhleFwiLGZ1bmM9XCJiY251ZlwiLip9LGZyYW1lPXtsZXZlbD1cIjNcIixh ZGRyPVwiJGhleFwiLGZ1bmM9XCJhY251ZlwiLip9XFxcXSIgXAotKyAgICAiZmlsdGVyZWQgc3Rh Y2sgbGlzdCAwIDMiCi0rbWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0LWZyYW1lcyAyMiAyNCIgXAot KyAgICAiXFxeZG9uZSxzdGFjaz1cXFxbZnJhbWU9e2xldmVsPVwiMjJcIixhZGRyPVwiJGhleFwi LGZ1bmM9XCIxY251ZlwiLiosY2hpbGRyZW49XFxcW2ZyYW1lPXtsZXZlbD1cIjIzXCIsYWRkcj1c IiRoZXhcIixmdW5jPVwiZnVuYzJcIi4qfVxcXF19LGZyYW1lPXtsZXZlbD1cIjI0XCIsYWRkcj1c IiRoZXhcIixmdW5jPVwiM2NudWZcIi4qfVxcXF0iIFwKLSsgICAgImZpbHRlcmVkIHN0YWNrIGxp c3QgMjIgMjQiCi0rCi0rI3N0YWNrIGxpc3QgYXJndW1lbnRzCi0rCi0rCi0rbWlfZ2RiX3Rlc3Qg Ii1zdGFjay1saXN0LWFyZ3VtZW50cyAwIiBcCi0rICAgICJcXF5kb25lLHN0YWNrLWFyZ3M9XFxc W2ZyYW1lPXtsZXZlbD1cIjBcIixhcmdzPVxcXFtuYW1lPVwiZm9vXCIsbmFtZT1cImJhclwiLG5h bWU9XCJmYlwiLG5hbWU9XCJiZlwiXFxcXX0sZnJhbWU9e2xldmVsPVwiMVwiLGFyZ3M9XFxcW1xc XF19LGZyYW1lPXtsZXZlbD1cIjJcIixhcmdzPVxcXFtuYW1lPVwialwiXFxcXX0sLipmcmFtZT17 bGV2ZWw9XCIyMlwiLGFyZ3M9XFxcW1xcXF0sY2hpbGRyZW49XFxcW2ZyYW1lPXtsZXZlbD1cIjIz XCIsYXJncz1cXFxbXFxcXX1cXFxdfSwuKmZyYW1lPXtsZXZlbD1cIjI2XCIsYXJncz1cXFxbbmFt ZT1cImZcIixuYW1lPVwiZFwiXFxcXX0sZnJhbWU9e2xldmVsPVwiMjdcIixhcmdzPVxcXFtcXFxd fVxcXF0iIFwKLSsgICAgInN0YWNrLWxpc3QtYXJndW1lbnRzIDAiCi0rCi0rbWlfZ2RiX3Rlc3Qg Ii1zdGFjay1saXN0LWFyZ3VtZW50cyAtLW5vLWZyYW1lLWZpbHRlcnMgMCIgXAotKyAgICAiXFxe ZG9uZSxzdGFjay1hcmdzPVxcXFtmcmFtZT17bGV2ZWw9XCIwXCIsYXJncz1cXFxbbmFtZT1cImZv b1wiLG5hbWU9XCJiYXJcIixuYW1lPVwiZmJcIixuYW1lPVwiYmZcIlxcXF19LGZyYW1lPXtsZXZl bD1cIjFcIixhcmdzPVxcXFtcXFxdfSxmcmFtZT17bGV2ZWw9XCIyXCIsYXJncz1cXFxbbmFtZT1c ImpcIlxcXF19LC4qZnJhbWU9e2xldmVsPVwiMjJcIixhcmdzPVxcXFtcXFxdfSxmcmFtZT17bGV2 ZWw9XCIyM1wiLGFyZ3M9XFxcW1xcXF19LC4qZnJhbWU9e2xldmVsPVwiMjZcIixhcmdzPVxcXFtu YW1lPVwiZlwiLG5hbWU9XCJkXCJcXFxdfSxmcmFtZT17bGV2ZWw9XCIyN1wiLGFyZ3M9XFxcW1xc XF19XFxcXSIgXAotKyAgICAic3RhY2stbGlzdC1hcmd1bWVudHMgLS1uby1mcmFtZS1maWx0ZXJz IDAiCi0rCi0rbWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0LWFyZ3VtZW50cyAwIDAgMyIgXAotKyAg ICAiXFxeZG9uZSxzdGFjay1hcmdzPVxcXFtmcmFtZT17bGV2ZWw9XCIwXCIsYXJncz1cXFxbbmFt ZT1cImZvb1wiLG5hbWU9XCJiYXJcIixuYW1lPVwiZmJcIixuYW1lPVwiYmZcIlxcXF19LGZyYW1l PXtsZXZlbD1cIjFcIixhcmdzPVxcXFtcXFxdfSxmcmFtZT17bGV2ZWw9XCIyXCIsYXJncz1cXFxb bmFtZT1cImpcIlxcXF19LGZyYW1lPXtsZXZlbD1cIjNcIixhcmdzPVxcXFtcXFxdfVxcXF0iIFwK LSsgICAgInN0YWNrLWxpc3QtYXJndW1lbnRzIDAgMCAzIgotKwotK21pX2dkYl90ZXN0ICItc3Rh Y2stbGlzdC1hcmd1bWVudHMgMCAyMiAyNyIgXAotKyAgICAiXFxeZG9uZSxzdGFjay1hcmdzPVxc XFtmcmFtZT17bGV2ZWw9XCIyMlwiLGFyZ3M9XFxcW1xcXF0sY2hpbGRyZW49XFxcW2ZyYW1lPXts ZXZlbD1cIjIzXCIsYXJncz1cXFxbXFxcXX1cXFxdfSwuKmZyYW1lPXtsZXZlbD1cIjI2XCIsYXJn cz1cXFxbbmFtZT1cImZcIixuYW1lPVwiZFwiXFxcXX0sZnJhbWU9e2xldmVsPVwiMjdcIixhcmdz PVxcXFtcXFxdfVxcXF0iIFwKLSsgICAgInN0YWNrLWxpc3QtYXJndW1lbnRzIDAgMjIgMjciCi0r Ci0rbWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0LWFyZ3VtZW50cyAxIiBcCi0rICAgICJcXF5kb25l LHN0YWNrLWFyZ3M9XFxcW2ZyYW1lPXtsZXZlbD1cIjBcIixhcmdzPVxcXFt7bmFtZT1cImZvb1wi LHZhbHVlPVwiMjFcIn0se25hbWU9XCJiYXJcIix2YWx1ZT1cIiRoZXggXFxcXFwiUGFyYW1cXFxc XCJcIn0se25hbWU9XCJmYlwiLHZhbHVlPVwiJGhleFwifSx7bmFtZT1cImJmXCIsdmFsdWU9XCJ7 bm90aGluZyA9ICRoZXggXFxcXFwiRm9vIEJhclxcXFxcIiwgZiA9IDQyLCBzID0gMTl9XCJ9XFxc XX0sZnJhbWU9e2xldmVsPVwiMVwiLGFyZ3M9XFxcW1xcXF19LGZyYW1lPXtsZXZlbD1cIjJcIixh cmdzPVxcXFt7bmFtZT1cImpcIix2YWx1ZT1cIjEwXCJ9XFxcXX0sLipmcmFtZT17bGV2ZWw9XCIy MlwiLGFyZ3M9XFxcW1xcXF0sY2hpbGRyZW49XFxcW2ZyYW1lPXtsZXZlbD1cIjIzXCIsYXJncz1c XFxbXFxcXX1cXFxdfSwuKmZyYW1lPXtsZXZlbD1cIjI2XCIsYXJncz1cXFxbe25hbWU9XCJmXCIs dmFsdWU9XCIzXCJ9LHtuYW1lPVwiZFwiLHZhbHVlPVwiNVwifVxcXF19LGZyYW1lPXtsZXZlbD1c IjI3XCIsYXJncz1cXFxbXFxcXX1cXFxdIiBcCi0rICAgICJzdGFjay1saXN0LWFyZ3VtZW50cyAx IgotKwotK21pX2dkYl90ZXN0ICItc3RhY2stbGlzdC1hcmd1bWVudHMgLS1uby1mcmFtZS1maWx0 ZXJzIDEiIFwKLSsgICAgIlxcXmRvbmUsc3RhY2stYXJncz1cXFxbZnJhbWU9e2xldmVsPVwiMFwi LGFyZ3M9XFxcW3tuYW1lPVwiZm9vXCIsdmFsdWU9XCIyMVwifSx7bmFtZT1cImJhclwiLHZhbHVl PVwiJGhleCBcXFxcXCJQYXJhbVxcXFxcIlwifSx7bmFtZT1cImZiXCIsdmFsdWU9XCIkaGV4XCJ9 LHtuYW1lPVwiYmZcIix2YWx1ZT1cIntub3RoaW5nID0gJGhleCBcXFxcXCJGb28gQmFyXFxcXFwi LCBmID0gNDIsIHMgPSAxOX1cIn1cXFxdfSxmcmFtZT17bGV2ZWw9XCIxXCIsYXJncz1cXFxbXFxc XX0sZnJhbWU9e2xldmVsPVwiMlwiLGFyZ3M9XFxcW3tuYW1lPVwialwiLHZhbHVlPVwiMTBcIn1c XFxdfSwuKmZyYW1lPXtsZXZlbD1cIjIyXCIsYXJncz1cXFxbXFxcXX0sZnJhbWU9e2xldmVsPVwi MjNcIixhcmdzPVxcXFtcXFxdfSwuKmZyYW1lPXtsZXZlbD1cIjI2XCIsYXJncz1cXFxbe25hbWU9 XCJmXCIsdmFsdWU9XCIzXCJ9LHtuYW1lPVwiZFwiLHZhbHVlPVwiNVwifVxcXF19LGZyYW1lPXts ZXZlbD1cIjI3XCIsYXJncz1cXFxbXFxcXX1cXFxdIiBcCi0rICAgICJzdGFjay1saXN0LWFyZ3Vt ZW50cyAtLW5vLWZyYW1lLWZpbHRlcnMgMSIKLSsKLSsKLSttaV9nZGJfdGVzdCAiLXN0YWNrLWxp c3QtYXJndW1lbnRzIDEgMCAzIiBcCi0rICAgICJcXF5kb25lLHN0YWNrLWFyZ3M9XFxcW2ZyYW1l PXtsZXZlbD1cIjBcIixhcmdzPVxcXFt7bmFtZT1cImZvb1wiLHZhbHVlPVwiMjFcIn0se25hbWU9 XCJiYXJcIix2YWx1ZT1cIiRoZXggXFxcXFwiUGFyYW1cXFxcXCJcIn0se25hbWU9XCJmYlwiLHZh bHVlPVwiJGhleFwifSx7bmFtZT1cImJmXCIsdmFsdWU9XCJ7bm90aGluZyA9ICRoZXggXFxcXFwi Rm9vIEJhclxcXFxcIiwgZiA9IDQyLCBzID0gMTl9XCJ9XFxcXX0sZnJhbWU9e2xldmVsPVwiMVwi LGFyZ3M9XFxcW1xcXF19LGZyYW1lPXtsZXZlbD1cIjJcIixhcmdzPVxcXFt7bmFtZT1cImpcIix2 YWx1ZT1cIjEwXCJ9XFxcXX0sZnJhbWU9e2xldmVsPVwiM1wiLGFyZ3M9XFxcW1xcXF19XFxcXSIg XAotKyAgICAic3RhY2stbGlzdC1hcmd1bWVudHMgMSAwIDMiCi0rCi0rbWlfZ2RiX3Rlc3QgIi1z dGFjay1saXN0LWFyZ3VtZW50cyAxIDIyIDI3IiBcCi0rICAgICJcXF5kb25lLHN0YWNrLWFyZ3M9 XFxcW2ZyYW1lPXtsZXZlbD1cIjIyXCIsYXJncz1cXFxbXFxcXSxjaGlsZHJlbj1cXFxbZnJhbWU9 e2xldmVsPVwiMjNcIixhcmdzPVxcXFtcXFxdfVxcXF19LC4qZnJhbWU9e2xldmVsPVwiMjZcIixh cmdzPVxcXFt7bmFtZT1cImZcIix2YWx1ZT1cIjNcIn0se25hbWU9XCJkXCIsdmFsdWU9XCI1XCJ9 XFxcXX0sZnJhbWU9e2xldmVsPVwiMjdcIixhcmdzPVxcXFtcXFxdfVxcXF0iIFwKLSsgICAgInN0 YWNrLWxpc3QtYXJndW1lbnRzIDEgMjIgMjciCi0rCi0rbWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0 LWFyZ3VtZW50cyAyIiBcCi0rICAgICJcXF5kb25lLHN0YWNrLWFyZ3M9XFxcW2ZyYW1lPXtsZXZl bD1cIjBcIixhcmdzPVxcXFt7bmFtZT1cImZvb1wiLHR5cGU9XCJpbnRcIix2YWx1ZT1cIjIxXCJ9 LHtuYW1lPVwiYmFyXCIsdHlwZT1cImNoYXIgXFxcKlwiLHZhbHVlPVwiJGhleCBcXFxcXCJQYXJh bVxcXFxcIlwifSx7bmFtZT1cImZiXCIsdHlwZT1cImZvb2JhciBcXFwqXCIsdmFsdWU9XCIkaGV4 XCJ9LHtuYW1lPVwiYmZcIix0eXBlPVwiZm9vYmFyXCJcfVxcXF19LGZyYW1lPXtsZXZlbD1cIjFc IixhcmdzPVxcXFtcXFxdfSxmcmFtZT17bGV2ZWw9XCIyXCIsYXJncz1cXFxbe25hbWU9XCJqXCIs dHlwZT1cImludFwiLHZhbHVlPVwiMTBcIn1cXFxdfSwuKmZyYW1lPXtsZXZlbD1cIjIyXCIsYXJn cz1cXFxbXFxcXSxjaGlsZHJlbj1cXFxbZnJhbWU9e2xldmVsPVwiMjNcIixhcmdzPVxcXFtcXFxd fVxcXF19LC4qZnJhbWU9e2xldmVsPVwiMjZcIixhcmdzPVxcXFt7bmFtZT1cImZcIix0eXBlPVwi aW50XCIsdmFsdWU9XCIzXCJ9LHtuYW1lPVwiZFwiLHR5cGU9XCJpbnRcIix2YWx1ZT1cIjVcIn1c XFxdfSxmcmFtZT17bGV2ZWw9XCIyN1wiLGFyZ3M9XFxcW1xcXF19XFxcXSIgXAotKyAgICAic3Rh Y2stbGlzdC1hcmd1bWVudHMgMiIKLSsKLSttaV9nZGJfdGVzdCAiLXN0YWNrLWxpc3QtYXJndW1l bnRzIC0tbm8tZnJhbWUtZmlsdGVycyAyIiBcCi0rICAgICJcXF5kb25lLHN0YWNrLWFyZ3M9XFxc W2ZyYW1lPXtsZXZlbD1cIjBcIixhcmdzPVxcXFt7bmFtZT1cImZvb1wiLHR5cGU9XCJpbnRcIix2 YWx1ZT1cIjIxXCJ9LHtuYW1lPVwiYmFyXCIsdHlwZT1cImNoYXIgXFxcKlwiLHZhbHVlPVwiJGhl eCBcXFxcXCJQYXJhbVxcXFxcIlwifSx7bmFtZT1cImZiXCIsdHlwZT1cImZvb2JhciBcXFwqXCIs dmFsdWU9XCIkaGV4XCJ9LHtuYW1lPVwiYmZcIix0eXBlPVwiZm9vYmFyXCJ9XFxcXX0sZnJhbWU9 e2xldmVsPVwiMVwiLGFyZ3M9XFxcW1xcXF19LGZyYW1lPXtsZXZlbD1cIjJcIixhcmdzPVxcXFt7 bmFtZT1cImpcIix0eXBlPVwiaW50XCIsdmFsdWU9XCIxMFwifVxcXF19LC4qZnJhbWU9e2xldmVs PVwiMjJcIixhcmdzPVxcXFtcXFxdfSwuKmZyYW1lPXtsZXZlbD1cIjI2XCIsYXJncz1cXFxbe25h bWU9XCJmXCIsdHlwZT1cImludFwiLHZhbHVlPVwiM1wifSx7bmFtZT1cImRcIix0eXBlPVwiaW50 XCIsdmFsdWU9XCI1XCJ9XFxcXX0sZnJhbWU9e2xldmVsPVwiMjdcIixhcmdzPVxcXFtcXFxdfVxc XF0iIFwKLSsgICAgInN0YWNrLWxpc3QtYXJndW1lbnRzIC0tbm8tZnJhbWUtZmlsdGVycyAyIgot KwotKwotK21pX2dkYl90ZXN0ICItc3RhY2stbGlzdC1hcmd1bWVudHMgMiAwIDMiIFwKLSsgICAg IlxcXmRvbmUsc3RhY2stYXJncz1cXFxbZnJhbWU9e2xldmVsPVwiMFwiLGFyZ3M9XFxcW3tuYW1l PVwiZm9vXCIsdHlwZT1cImludFwiLHZhbHVlPVwiMjFcIn0se25hbWU9XCJiYXJcIix0eXBlPVwi Y2hhciBcXFwqXCIsdmFsdWU9XCIkaGV4IFxcXFxcIlBhcmFtXFxcXFwiXCJ9LHtuYW1lPVwiZmJc Iix0eXBlPVwiZm9vYmFyIFxcXCpcIix2YWx1ZT1cIiRoZXhcIn0se25hbWU9XCJiZlwiLHR5cGU9 XCJmb29iYXJcIn1cXFxdfSxmcmFtZT17bGV2ZWw9XCIxXCIsYXJncz1cXFxbXFxcXX0sZnJhbWU9 e2xldmVsPVwiMlwiLGFyZ3M9XFxcW3tuYW1lPVwialwiLHR5cGU9XCJpbnRcIix2YWx1ZT1cIjEw XCJ9XFxcXX0sZnJhbWU9e2xldmVsPVwiM1wiLGFyZ3M9XFxcW1xcXF19XFxcXSIgXAotKyAgICAi c3RhY2stbGlzdC1hcmd1bWVudHMgMiAwIDMiCi0rCi0rbWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0 LWFyZ3VtZW50cyAyIDIyIDI3IiBcCi0rICAgICJcXF5kb25lLHN0YWNrLWFyZ3M9XFxcW2ZyYW1l PXtsZXZlbD1cIjIyXCIsYXJncz1cXFxbXFxcXSxjaGlsZHJlbj1cXFxbZnJhbWU9e2xldmVsPVwi MjNcIixhcmdzPVxcXFtcXFxdfVxcXF19LC4qZnJhbWU9e2xldmVsPVwiMjZcIixhcmdzPVxcXFt7 bmFtZT1cImZcIix0eXBlPVwiaW50XCIsdmFsdWU9XCIzXCJ9LHtuYW1lPVwiZFwiLHR5cGU9XCJp bnRcIix2YWx1ZT1cIjVcIn1cXFxdfSxmcmFtZT17bGV2ZWw9XCIyN1wiLGFyZ3M9XFxcW1xcXF19 XFxcXSIgXAotKyAgICAic3RhY2stbGlzdC1hcmd1bWVudHMgMiAyMiAyNyIKLSsKLSttaV9nZGJf dGVzdCAiLXN0YWNrLWxpc3QtYXJndW1lbnRzIC0tbm8tZnJhbWUtZmlsdGVycyAyIDIyIDI3IiBc Ci0rICAgICJcXF5kb25lLHN0YWNrLWFyZ3M9XFxcW2ZyYW1lPXtsZXZlbD1cIjIyXCIsYXJncz1c XFxbXFxcXX0sZnJhbWU9e2xldmVsPVwiMjNcIixhcmdzPVxcXFtcXFxdfSwuKmZyYW1lPXtsZXZl bD1cIjI2XCIsYXJncz1cXFxbe25hbWU9XCJmXCIsdHlwZT1cImludFwiLHZhbHVlPVwiM1wifSx7 bmFtZT1cImRcIix0eXBlPVwiaW50XCIsdmFsdWU9XCI1XCJ9XFxcXX0sZnJhbWU9e2xldmVsPVwi MjdcIixhcmdzPVxcXFtcXFxdfVxcXF0iIFwKLSsgICAgInN0YWNrLWxpc3QtYXJndW1lbnRzIC0t bm8tZnJhbWUtZmlsdGVycyAyIDIyIDI3IgotKwotKyNzdGFjay1saXN0LWxvY2FscwotK21pX2dk Yl90ZXN0ICItc3RhY2stbGlzdC1sb2NhbHMgLS1uby1mcmFtZS1maWx0ZXJzIDAiIFwKLSsgICAg IlxcXmRvbmUsbG9jYWxzPVxcXFtuYW1lPVwic3RyXCIsbmFtZT1cInN0MlwiLG5hbWU9XCJiXCIs bmFtZT1cImNcIlxcXF0iIFwKLSsgICAgInN0YWNrLWxpc3QtbG9jYWxzIC0tbm8tZnJhbWUtZmls dGVycyAwIgotKwotK21pX2dkYl90ZXN0ICItc3RhY2stbGlzdC1sb2NhbHMgLS1uby1mcmFtZS1m aWx0ZXJzIDEiIFwKLSsgICAgIlxcXmRvbmUsbG9jYWxzPVxcXFt7bmFtZT1cInN0clwiLHZhbHVl PVwiJGhleCBcXFxcXCJUaGUgRW5kXFxcXFwiXCJ9LHtuYW1lPVwic3QyXCIsdmFsdWU9XCIkaGV4 IFxcXFxcIklzIE5lYXJcXFxcXCJcIn0se25hbWU9XCJiXCIsdmFsdWU9XCIxMlwifSx7bmFtZT1c ImNcIix2YWx1ZT1cIjVcIn1cXFxdIiBcCi0rICAgICJzdGFjay1saXN0LWxvY2FscyAtLW5vLWZy YW1lLWZpbHRlcnMgMSIKLSsKLSttaV9nZGJfdGVzdCAiLXN0YWNrLWxpc3QtbG9jYWxzIC0tbm8t ZnJhbWUtZmlsdGVycyAyIiBcCi0rICAgICJcXF5kb25lLGxvY2Fscz1cXFxbe25hbWU9XCJzdHJc Iix0eXBlPVwiY29uc3QgY2hhciBcXFwqXCIsdmFsdWU9XCIkaGV4IFxcXFxcIlRoZSBFbmRcXFxc XCJcIn0se25hbWU9XCJzdDJcIix0eXBlPVwiY29uc3QgY2hhciBcXFwqXCIsdmFsdWU9XCIkaGV4 IFxcXFxcIklzIE5lYXJcXFxcXCJcIn0se25hbWU9XCJiXCIsdHlwZT1cImludFwiLHZhbHVlPVwi MTJcIn0se25hbWU9XCJjXCIsdHlwZT1cInNob3J0XCIsdmFsdWU9XCI1XCJ9XFxcXSIgXAotKyAg ICAic3RhY2stbGlzdC1sb2NhbHMgLS1uby1mcmFtZS1maWx0ZXJzIDIiCi0rCi0rbWlfZ2RiX3Rl c3QgIi1zdGFjay1saXN0LWxvY2FscyAtLW5vLWZyYW1lLWZpbHRlcnMgLS1uby12YWx1ZXMiIFwK LSsgICAgIlxcXmRvbmUsbG9jYWxzPVxcXFtuYW1lPVwic3RyXCIsbmFtZT1cInN0MlwiLG5hbWU9 XCJiXCIsbmFtZT1cImNcIlxcXF0iIFwKLSsgICAgInN0YWNrLWxpc3QtbG9jYWxzIC0tbm8tZnJh bWUtZmlsdGVycyAtLW5vLXZhbHVlcyIKLSsKLSttaV9nZGJfdGVzdCAiLXN0YWNrLWxpc3QtbG9j YWxzIC0tbm8tZnJhbWUtZmlsdGVycyAtLWFsbC12YWx1ZXMiIFwKLSsgICAgIlxcXmRvbmUsbG9j YWxzPVxcXFt7bmFtZT1cInN0clwiLHZhbHVlPVwiJGhleCBcXFxcXCJUaGUgRW5kXFxcXFwiXCJ9 LHtuYW1lPVwic3QyXCIsdmFsdWU9XCIkaGV4IFxcXFxcIklzIE5lYXJcXFxcXCJcIn0se25hbWU9 XCJiXCIsdmFsdWU9XCIxMlwifSx7bmFtZT1cImNcIix2YWx1ZT1cIjVcIn1cXFxdIiBcCi0rICAg ICJzdGFjay1saXN0LWxvY2FscyAtLW5vLWZyYW1lLWZpbHRlcnMgLS1hbGwtdmFsdWVzIgotKwot K21pX2dkYl90ZXN0ICItc3RhY2stbGlzdC1sb2NhbHMgLS1uby1mcmFtZS1maWx0ZXJzIC0tc2lt cGxlLXZhbHVlcyIgXAotKyAgICAiXFxeZG9uZSxsb2NhbHM9XFxcW3tuYW1lPVwic3RyXCIsdHlw ZT1cImNvbnN0IGNoYXIgXFxcKlwiLHZhbHVlPVwiJGhleCBcXFxcXCJUaGUgRW5kXFxcXFwiXCJ9 LHtuYW1lPVwic3QyXCIsdHlwZT1cImNvbnN0IGNoYXIgXFxcKlwiLHZhbHVlPVwiJGhleCBcXFxc XCJJcyBOZWFyXFxcXFwiXCJ9LHtuYW1lPVwiYlwiLHR5cGU9XCJpbnRcIix2YWx1ZT1cIjEyXCJ9 LHtuYW1lPVwiY1wiLHR5cGU9XCJzaG9ydFwiLHZhbHVlPVwiNVwifVxcXF0iIFwKLSsgICAgInN0 YWNrLWxpc3QtbG9jYWxzIC0tbm8tZnJhbWUtZmlsdGVycyAtLXNpbXBsZS12YWx1ZXMiCi0rCi0r bWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0LWxvY2FscyAwIiBcCi0rICAgICJcXF5kb25lLGxvY2Fs cz1cXFxbbmFtZT1cInN0clwiLG5hbWU9XCJzdDJcIixuYW1lPVwiYlwiLG5hbWU9XCJjXCJcXFxd IiBcCi0rICAgICJzdGFjay1saXN0LWxvY2FscyAwIgotKwotK21pX2dkYl90ZXN0ICItc3RhY2st bGlzdC1sb2NhbHMgMSIgXAotKyAgICAiXFxeZG9uZSxsb2NhbHM9XFxcW3tuYW1lPVwic3RyXCIs dmFsdWU9XCIkaGV4IFxcXFxcIlRoZSBFbmRcXFxcXCJcIn0se25hbWU9XCJzdDJcIix2YWx1ZT1c IiRoZXggXFxcXFwiSXMgTmVhclxcXFxcIlwifSx7bmFtZT1cImJcIix2YWx1ZT1cIjEyXCJ9LHtu YW1lPVwiY1wiLHZhbHVlPVwiNVwifVxcXF0iIFwKLSsgICAgInN0YWNrLWxpc3QtbG9jYWxzIDEi Ci0rCi0rbWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0LWxvY2FscyAyIiBcCi0rICAgICJcXF5kb25l LGxvY2Fscz1cXFxbe25hbWU9XCJzdHJcIix0eXBlPVwiY29uc3QgY2hhciBcXFwqXCIsdmFsdWU9 XCIkaGV4IFxcXFxcIlRoZSBFbmRcXFxcXCJcIn0se25hbWU9XCJzdDJcIix0eXBlPVwiY29uc3Qg Y2hhciBcXFwqXCIsdmFsdWU9XCIkaGV4IFxcXFxcIklzIE5lYXJcXFxcXCJcIn0se25hbWU9XCJi XCIsdHlwZT1cImludFwiLHZhbHVlPVwiMTJcIn0se25hbWU9XCJjXCIsdHlwZT1cInNob3J0XCIs dmFsdWU9XCI1XCJ9XFxcXSIgXAotKyAgICAic3RhY2stbGlzdC1sb2NhbHMgMiIKLSsKLSsjIHN0 YWNrLWxpc3QtdmFyaWFibGVzCi0rbWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0LXZhcmlhYmxlcyAt LW5vLWZyYW1lLWZpbHRlcnMgMCIgXAotKyAgICAiXFxeZG9uZSx2YXJpYWJsZXM9XFxcW3tuYW1l PVwiZm9vXCIsYXJnPVwiMVwifSx7bmFtZT1cImJhclwiLGFyZz1cIjFcIn0se25hbWU9XCJmYlwi LGFyZz1cIjFcIn0se25hbWU9XCJiZlwiLGFyZz1cIjFcIn0se25hbWU9XCJzdHJcIn0se25hbWU9 XCJzdDJcIn0se25hbWU9XCJiXCJ9LHtuYW1lPVwiY1wifVxcXF0iIFwKLSsgICAgInN0YWNrLWxp c3QtdmFyaWFibGVzIC0tbm8tZnJhbWUtZmlsdGVycyAwIgotKwotK21pX2dkYl90ZXN0ICItc3Rh Y2stbGlzdC12YXJpYWJsZXMgMCIgXAotKyAgICAiXFxeZG9uZSx2YXJpYWJsZXM9XFxcW3tuYW1l PVwiZm9vXCIsYXJnPVwiMVwifSx7bmFtZT1cImJhclwiLGFyZz1cIjFcIn0se25hbWU9XCJmYlwi LGFyZz1cIjFcIn0se25hbWU9XCJiZlwiLGFyZz1cIjFcIn0se25hbWU9XCJzdHJcIn0se25hbWU9 XCJzdDJcIn0se25hbWU9XCJiXCJ9LHtuYW1lPVwiY1wifVxcXF0iIFwKLSsgICAgInN0YWNrLWxp c3QtdmFyaWFibGVzIDAiCi1JbmRleDogZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktZnJhbWVmaWx0ZXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LWZyYW1lZmlsdGVyLmMJMjAxMy0wNi0xMCAxNDozMTowOC4zNjkwODI0MzYgKzAyMDAK LUBAIC0wLDAgKzEsMTU1IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov Ci0rCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKwotK3ZvaWQgZnVuY2Eodm9pZCk7Ci0raW50IGNv dW50ID0gMDsKLSsKLSt0eXBlZGVmIHN0cnVjdAotK3sKLSsgIGNoYXIgKm5vdGhpbmc7Ci0rICBp bnQgZjsKLSsgIHNob3J0IHM7Ci0rfSBmb29iYXI7Ci0rCi0rdm9pZCBlbmRfZnVuYyAoaW50IGZv bywgY2hhciAqYmFyLCBmb29iYXIgKmZiLCBmb29iYXIgYmYpCi0rewotKyAgY29uc3QgY2hhciAq c3RyID0gIlRoZSBFbmQiOwotKyAgY29uc3QgY2hhciAqc3QyID0gIklzIE5lYXIiOwotKyAgaW50 IGIgPSAxMjsKLSsgIHNob3J0IGMgPSA1OwotKwotKyAgewotKyAgICBpbnQgZCA9IDE1OwotKyAg ICBpbnQgZSA9IDE0OwotKyAgICBjb25zdCBjaGFyICpmb28gPSAiSW5zaWRlIGJsb2NrIjsKLSsg ICAgewotKyAgICAgIGludCBmID0gNDI7Ci0rICAgICAgaW50IGcgPSAxOTsKLSsgICAgICBjb25z dCBjaGFyICpiYXIgPSAiSW5zaWRlIGJsb2NrIHgyIjsKLSsgICAgICB7Ci0rCXNob3J0IGggPSA5 OwotKwloID0gaCArMTsgIC8qIElubmVyIHRlc3QgYnJlYWtwb2ludCAgKi8KLSsgICAgICB9Ci0r ICAgIH0KLSsgIH0KLSsKLSsgIHJldHVybjsgLyogQmFja3RyYWNlIGVuZCBicmVha3BvaW50ICov Ci0rfQotKwotK3ZvaWQgZnVuY2IoaW50IGopCi0rewotKyAgc3RydWN0IGZvbwotKyAgewotKyAg ICBpbnQgYTsKLSsgICAgaW50IGI7Ci0rICB9OwotKwotKyAgc3RydWN0IGZvbyBiYXI7Ci0rCi0r ICBiYXIuYSA9IDQyOwotKyAgYmFyLmIgPSA4NDsKLSsKLSsgIGZ1bmNhKCk7Ci0rICByZXR1cm47 Ci0rfQotKwotK3ZvaWQgZnVuY2Eodm9pZCkKLSt7Ci0rICBmb29iYXIgZmI7Ci0rICBmb29iYXIg KmJmID0gTlVMTDsKLSsKLSsgIGlmIChjb3VudCA8IDEwKQotKyAgICB7Ci0rICAgICAgY291bnQr KzsKLSsgICAgICBmdW5jYihjb3VudCk7Ci0rICAgIH0KLSsKLSsgIGZiLm5vdGhpbmcgPSAiRm9v IEJhciI7Ci0rICBmYi5mID0gNDI7Ci0rICBmYi5zID0gMTk7Ci0rCi0rICBiZiA9IGFsbG9jYSAo c2l6ZW9mIChmb29iYXIpKTsKLSsgIGJmLT5ub3RoaW5nID0gYWxsb2NhICgxMjgpOwotKyAgYmYt Pm5vdGhpbmcgPSAiQmFyIEZvbyI7Ci0rICBiZi0+ZiA9IDI0OwotKyAgYmYtPnMgPSA5MTsKLSsK LSsgIGVuZF9mdW5jKDIxLCAiUGFyYW0iLCBiZiwgZmIpOwotKyAgcmV0dXJuOwotK30KLSsKLSsK LSt2b2lkIGZ1bmMxKHZvaWQpCi0rewotKyAgZnVuY2EoKTsKLSsgIHJldHVybjsKLSt9Ci0rCi0r aW50IGZ1bmMyKGludCBmKQotK3sKLSsgIGludCBjOwotKyAgY29uc3QgY2hhciAqZWxpZGVkID0g IkVsaWRlZCBmcmFtZSI7Ci0rICBmb29iYXIgZmI7Ci0rICBmb29iYXIgKmJmID0gTlVMTDsKLSsK LSsgIGZiLm5vdGhpbmcgPSAiRWxpZGVkIEZvbyBCYXIiOwotKyAgZmIuZiA9IDg0OwotKyAgZmIu cyA9IDM4OwotKwotKyAgYmYgPSBhbGxvY2EgKHNpemVvZiAoZm9vYmFyKSk7Ci0rICBiZi0+bm90 aGluZyA9IGFsbG9jYSAoMTI4KTsKLSsgIGJmLT5ub3RoaW5nID0gIkVsaWRlZCBCYXIgRm9vIjsK LSsgIGJmLT5mID0gNDg7Ci0rICBiZi0+cyA9IDE4MjsKLSsKLSsgIGZ1bmMxKCk7Ci0rICByZXR1 cm4gMTsKLSt9Ci0rCi0rdm9pZCBmdW5jMyhpbnQgaSkKLSt7Ci0rICBmdW5jMihpKTsKLSsKLSsg IHJldHVybjsKLSt9Ci0rCi0raW50IGZ1bmM0KGludCBqKQotK3sKLSsgIGZ1bmMzKGopOwotKwot KyAgcmV0dXJuIDI7Ci0rfQotKwotK2ludCBmdW5jNShpbnQgZiwgaW50IGQpCi0rewotKyAgaW50 IGkgPSAwOwotKyAgY2hhciAqcmFuZG9tID0gInJhbmRvbSI7Ci0rICBpPWkrZjsKLSsKLSsgIGZ1 bmM0KGkpOwotKyAgcmV0dXJuIGk7Ci0rfQotKwotK21haW4oKQotK3sKLSsgIGludCB6ID0gMzI7 Ci0rICBpbnQgeSA9IDQ0OwotKyAgY29uc3QgY2hhciAqZm9vMSA9ICJUZXN0IjsKLSsgIGZ1bmM1 KDMsNSk7Ci0rfQotSW5kZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZy YW1lZmlsdGVyLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LWZyYW1lZmlsdGVyLmV4cAkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2OTA4MjQzNiArMDIwMAot QEAgLTAsMCArMSwyMzkgQEAKLSsjIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR0RCIHRlc3RzdWl0ZS4gIEl0IHRlc3RzIFB5dGhvbi1i YXNlZAotKyMgZnJhbWUtZmlsdGVycy4KLSsKLStsb2FkX2xpYiBnZGItcHl0aG9uLmV4cAotKwot K3N0YW5kYXJkX3Rlc3RmaWxlCi0rCi0rIyBXZSBjYW5ub3QgdXNlIHByZXBhcmVfZm9yX3Rlc3Rp bmcgYXMgd2UgaGF2ZSB0byBzZXQgdGhlIHNhZmUtcGF0Y2gKLSsjIHRvIGNoZWNrIG9iamZpbGUg YW5kIHByb2dzcGFjZSBwcmludGVycy4KLStpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHRlc3RmaWxl LmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGUgZGVidWddID09IC0xfSB7Ci0rICAgIHJldHVybiAtMQot K30KLSsKLSsjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQK LSsKLSsjIFNraXAgYWxsIHRlc3RzIGlmIFB5dGhvbiBzY3JpcHRpbmcgaXMgbm90IGVuYWJsZWQu Ci0raWYgeyBbc2tpcF9weXRob25fdGVzdHNdIH0geyBjb250aW51ZSB9Ci0rCi0rIyBNYWtlIHRo ZSAtZ2RiLnB5IHNjcmlwdCBhdmFpbGFibGUgdG8gZ2RiLCBpdCBpcyBhdXRvbWFnaWNhbGx5IGxv YWRlZCBieSBnZGIuCi0rIyBDYXJlIGlzIHRha2VuIHRvIHB1dCBpdCBpbiB0aGUgc2FtZSBkaXJl Y3RvcnkgYXMgdGhlIGJpbmFyeSBzbyB0aGF0Ci0rIyBnZGIgd2lsbCBmaW5kIGl0LgotK3NldCBy ZW1vdGVfb2JqX3B5dGhvbl9maWxlIFwKLSsgICAgW3JlbW90ZV9kb3dubG9hZCBcCi0rCSBob3N0 ICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0tZ2RiLnB5LmluIFwKLSsJICR7c3ViZGly fS8ke3Rlc3RmaWxlfS1nZGIucHldCi0rCi0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAke3Jl bW90ZV9vYmpfcHl0aG9uX2ZpbGV9IiBcCi0rICAgICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIK LStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rIyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2NyaXB0Lgot K2dkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIgIlllcy4qLyR7dGVzdGZp bGV9LWdkYi5weS4qIiBcCi0rICAgICJUZXN0IGF1dG8tbG9hZCBoYWQgbG9hZGVkIHB5dGhvbiBz Y3JpcHRzIgotKwotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRu J3QgcnVuIHRvIGJyZWFrcG9pbnQiCi0rICAgIHJldHVybgotK30KLStnZGJfdGVzdF9ub19vdXRw dXQgInNldCBweXRob24gcHJpbnQtc3RhY2sgZnVsbCIgXAotKyAgICAiU2V0IHB5dGhvbiBwcmlu dC1zdGFjayB0byBmdWxsIgotKwotKyMgTG9hZCBnbG9iYWwgZnJhbWUtZmlsdGVycwotK3NldCBy ZW1vdGVfcHl0aG9uX2ZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICR7c3JjZGlyfS8ke3N1YmRp cn0vJHt0ZXN0ZmlsZX0ucHldCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gZXhlY2ZpbGUg KCcke3JlbW90ZV9weXRob25fZmlsZX0nKSIgXAotKyAgICAiTG9hZCBweXRob24gZmlsZSIKLSsK LStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiQmFja3RyYWNlIGVuZCBicmVh a3BvaW50Il0KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiSW5uZXIgdGVz dCBicmVha3BvaW50Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiSW5uZXIgdGVzdCBi cmVha3BvaW50IgotKwotKyMgVGVzdCBtdWx0aXBsZSBsb2NhbCBibG9ja3MuCi0rZ2RiX3Rlc3Qg ImJ0IGZ1bGwgbm8tZmlsdGVycyIgXAotKyAgICAiLiojMC4qZW5kX2Z1bmMuKmggPSA5LipmID0g NDIuKmcgPSAxOS4qYmFyID0gJGhleCBcIkluc2lkZSBibG9jayB4MlwiLipkID0gMTUuKmUgPSAx NC4qZm9vID0gJGhleCBcIkluc2lkZSBibG9ja1wiLipzdHIgPSAkaGV4IFwiVGhlIEVuZFwiLipz dDIgPSAkaGV4IFwiSXMgTmVhclwiLipiID0gMTIuKmMgPSA1LioiIFwKLSsgICAgImJ0IGZ1bGwg bm8tZmlsdGVycyIKLStnZGJfdGVzdCAiYnQgZnVsbCIgXAotKyAgICAiLiojMC4qY251Zl9kbmUu KmggPSA5LipmID0gNDIuKmcgPSAxOS4qYmFyID0gJGhleCBcIkluc2lkZSBibG9jayB4MlwiLipk ID0gMTUuKmUgPSAxNC4qZm9vID0gJGhleCBcIkluc2lkZSBibG9ja1wiLipzdHIgPSAkaGV4IFwi VGhlIEVuZFwiLipzdDIgPSAkaGV4IFwiSXMgTmVhclwiLipiID0gMTIuKmMgPSA1LioiIFwKLSsg ICAgImJ0IGZ1bGwgd2l0aCBmaWx0ZXJzIgotKwotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50 ICJCYWNrdHJhY2UgZW5kIGJyZWFrcG9pbnQiCi0rCi0rIyBUZXN0IHNldC9zaG93Ci0rZ2RiX3Rl c3QgImluZm8gZnJhbWUtZmlsdGVyIiBcCi0rICAgICIuKjkwMC4qWWVzLipFbGlkZXIuKjEwMC4q WWVzLipSZXZlcnNlLioxMC4qLipOby4qT2JqZWN0LioxLioiIFwKLSsgICAgImluZm8gZnJhbWUg ZmlsdGVyIGJlZm9yZSBzZXR0aW5nIHByaW9yaXR5IgotK2dkYl90ZXN0ICJzaG93IGZyYW1lLWZp bHRlciBwcmlvcml0eSBnbG9iYWwgRWxpZGVyIiBcCi0rICAgICJQcmlvcml0eSBvZiBmaWx0ZXIg J0VsaWRlcicgaW4gbGlzdCAnZ2xvYmFsJyBpczogOTAwIiBcCi0rICAgICJzaG93IGZyYW1lLWZp bHRlciBwcmlvcml0eSBnbG9iYWwgRWxpZGVyIGJlZm9yZSBzZXR0aW5nIgotK2dkYl90ZXN0X25v X291dHB1dCAgInNldCBmcmFtZS1maWx0ZXIgcHJpb3JpdHkgZ2xvYmFsIEVsaWRlciAxMDAwIiBc Ci0rICAgICJzZXQgZnJhbWUtZmlsdGVyIHByaW90aXkgZ2xvYmFsIEVsaWRlciAxMDAwIgotK2dk Yl90ZXN0ICJzaG93IGZyYW1lLWZpbHRlciBwcmlvcml0eSBnbG9iYWwgRWxpZGVyIiBcCi0rICAg ICAgICAiUHJpb3JpdHkgb2YgZmlsdGVyICdFbGlkZXInIGluIGxpc3QgJ2dsb2JhbCcgaXM6IDEw MDAiIFwKLSsgICAgICAgICJzaG93IGZyYW1lLWZpbHRlciBwcmlvcml0eSBnbG9iYWwgRWxpZGVy IGFmdGVyIHNldHRpbmciCi0rZ2RiX3Rlc3QgImluZm8gZnJhbWUtZmlsdGVyIiBcCi0rICAgICIu KjEwMDAuKlllcy4qRWxpZGVyLioxMDAuKlllcy4qUmV2ZXJzZS4qMTAuKi4qTm8uKk9iamVjdC4q MS4qIiBcCi0rICAgICJpbmZvIGZyYW1lIGZpbHRlciBhZnRlciBzZXR0aW5nIHByaW9yaXR5Igot KwotKyMgVGVzdCBlbmFibGUvZGlzYWJsZQotK2dkYl90ZXN0ICJpbmZvIGZyYW1lLWZpbHRlciIg XAotKyAgICAiLioxMDAwLipZZXMuKkVsaWRlci4qMTAwLipZZXMuKlJldmVyc2UuKjEwLiouKk5v LipPYmplY3QuKjEuKiIgXAotKyAgICAiaW5mbyBmcmFtZSBmaWx0ZXIgYmVmb3JlIGRpc2FibGUg ZnJhbWUgZmlsdGVyIgotK2dkYl90ZXN0X25vX291dHB1dCAgImRpc2FibGUgZnJhbWUtZmlsdGVy IGdsb2JhbCBFbGlkZXIiIFwKLSsgICAgImRpc2FibGUgZnJhbWUtZmlsdGVyIGdsb2JhbCBFbGlk ZXIiCi0rZ2RiX3Rlc3QgImluZm8gZnJhbWUtZmlsdGVyIiBcCi0rICAgICIuKjEwMDAuKk5vLipF bGlkZXIuKjEwMC4qWWVzLipSZXZlcnNlLioxMC4qLipOby4qT2JqZWN0LioxLioiIFwKLSsgICAg ImluZm8gZnJhbWUgZmlsdGVyIGFmdGVyIGRpc2FibGUgZnJhbWUgZmlsdGVyIgotK2dkYl90ZXN0 X25vX291dHB1dCAgImVuYWJsZSBmcmFtZS1maWx0ZXIgZ2xvYmFsIEVsaWRlciIgXAotKyAgICAi ZW5hYmxlIGZyYW1lLWZpbHRlciBnbG9iYWwgRWxpZGVyIgotK2dkYl90ZXN0ICJpbmZvIGZyYW1l LWZpbHRlciIgXAotKyAgICAiLioxMDAwLipZZXMuKkVsaWRlci4qMTAwLipZZXMuKlJldmVyc2Uu KjEwLiouKk5vLipPYmplY3QuKjEuKiIgXAotKyAgICAiaW5mbyBmcmFtZSBmaWx0ZXIgYWZ0ZXIg cmVlbmFibGluZyBmcmFtZSBmaWx0ZXIiCi0rCi0rIyBUZXN0IG5vLWZpbHRlcnMKLStnZGJfdGVz dCAiYnQgbm8tZmlsdGVycyIgXAotKyAgICAiLiojMC4qZW5kX2Z1bmMuKiMyMi4qaW4gZnVuYzEu KiMyNy4qaW4gbWFpbiBcXChcXCkuKiIgXAotKyAgICAiYnQgbm8tZmlsdGVycyIKLSsKLSsjIFRl c3QgcmV2ZXJzZQotK2dkYl90ZXN0ICJidCIgXAotKyAgICAiLiojMC4qY251Zl9kbmUuKiMyMi4q aW4gMWNudWYuKiMyNy4qaW4gbmlhbSBcXChcXCkuKiIgXAotKyAgICAiYnQgd2l0aCBmcmFtZSBm aWx0ZXJzIgotKwotKyMgRGlzYWJsZSBSZXZlcnNlCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJkaXNh YmxlIGZyYW1lLWZpbHRlciBnbG9iYWwgUmV2ZXJzZSIgXAotKyAgICAiZGlzYWJsZSBmcmFtZS1m aWx0ZXIgZ2xvYmFsIFJldmVyc2UiCi0rZ2RiX3Rlc3QgImJ0IiBcCi0rICAgICIuKiMwLiplbmRf ZnVuYy4qIzIyLippbiBmdW5jMS4qIzI3LippbiBtYWluIFxcKFxcKS4qIiBcCi0rICAgICJidCB3 aXRoIGZyYW1lLWZpbHRlciBSZXZlcnNlIGRpc2FibGVkIgotK2dkYl90ZXN0ICJidCAtMiIgXAot KyAgICAiLiojMjYuKmZ1bmM1LiojMjcuKmluIG1haW4gXFwoXFwpLioiIFwKLSsgICAgImJ0IC0y IHdpdGggZnJhbWUtZmlsdGVyIFJldmVyc2UgZGlzYWJsZWQiCi0rZ2RiX3Rlc3QgImJ0IDMiIFwK LSsgICAgIi4qIzAuKmVuZF9mdW5jLiojMS4qaW4gZnVuY2EgXFwoXFwpLiojMi4qaW4gZnVuY2Ig XFwoaj0xMFxcKS4qIiBcCi0rICAgICJidCAzIHdpdGggZnJhbWUtZmlsdGVyIFJldmVyc2UgZGlz YWJsZWQiCi0rZ2RiX3Rlc3QgImJ0IG5vLWZpbHRlciBmdWxsIiBcCi0rICAgICIuKiMwLiplbmRf ZnVuYy4qc3RyID0gJGhleCBcIlRoZSBFbmRcIi4qc3QyID0gJGhleCBcIklzIE5lYXJcIi4qYiA9 IDEyLipjID0gNS4qIzEuKmluIGZ1bmNhIFxcKFxcKS4qIzIuKmluIGZ1bmNiIFxcKGo9MTBcXCku KmJhciA9IFx7YSA9IDQyLCBiID0gODRcfS4qIiBcCi0rICAgICJidCBuby1maWx0ZXJzIGZ1bGwg d2l0aCBSZXZlcnNlIGRpc2FibGVkIgotK2dkYl90ZXN0ICJidCBmdWxsIiBcCi0rICAgICIuKiMw LiplbmRfZnVuYy4qc3RyID0gJGhleCBcIlRoZSBFbmRcIi4qc3QyID0gJGhleCBcIklzIE5lYXJc Ii4qYiA9IDEyLipjID0gNS4qIzEuKmluIGZ1bmNhIFxcKFxcKS4qIzIuKmluIGZ1bmNiIFxcKGo9 MTBcXCkuKmJhciA9IFx7YSA9IDQyLCBiID0gODRcfS4qIzIyLippbiBmdW5jMSBcXChcXCkuKiMy My4qaW4gZnVuYzIgXFwoZj0zXFwpLiplbGlkZWQgPSAkaGV4IFwiRWxpZGVkIGZyYW1lXCIuKmZi ID0gXHtub3RoaW5nID0gJGhleCBcIkVsaWRlZCBGb28gQmFyXCIsIGYgPSA4NCwgcyA9IDM4XH0u KmJmID0gJGhleC4qIiBcCi0rICAgICJidCBmdWxsIHdpdGggUmV2ZXJzZSBkaXNhYmxlZCIKLSsK LSsjIFRlc3Qgc2V0IHByaW50IGZyYW1lLWFyZ3VtZW50cwotKyMgbm9uZQotK2dkYl90ZXN0X25v X291dHB1dCAic2V0IHByaW50IGZyYW1lLWFyZ3VtZW50cyBub25lIiBcCi0rICAgICJ0dXJuIG9m ZiBmcmFtZSBhcmd1bWVudHMiCi0rZ2RiX3Rlc3QgImJ0IG5vLWZpbHRlciAxIiBcCi0rICAgICIj MC4qZW5kX2Z1bmMgXFwoZm9vPVwuXC5cLiwgYmFyPVwuXC5cLiwgZmI9XC5cLlwuLCBiZj1cLlwu XC5cXCkgYXQgLipweS1mcmFtZWZpbHRlci5jLioiIFwKLSsgICAgImJ0IG5vLWZpbHRlciAxIG5v IGFyZ3MiCi0rZ2RiX3Rlc3QgImJ0IDEiIFwKLSsgICAgIiMwLiplbmRfZnVuYyBcXChmb289XC5c LlwuLCBiYXI9XC5cLlwuLCBmYj1cLlwuXC4sIGJmPVwuXC5cLlxcKSBhdCAuKnB5LWZyYW1lZmls dGVyLmMuKiIgXAotKyAgICAiYnQgMSBubyBhcmdzIgotKwotKyMgc2NhbGFycwotK2dkYl90ZXN0 X25vX291dHB1dCAic2V0IHByaW50IGZyYW1lLWFyZ3VtZW50cyBzY2FsYXJzIiBcCi0rICAgICJ0 dXJuIGZyYW1lIGFyZ3VtZW50cyB0byBzY2FsYXJzIG9ubHkiCi0rZ2RiX3Rlc3QgImJ0IG5vLWZp bHRlciAxIiBcCi0rICAgICIjMC4qZW5kX2Z1bmMgXFwoZm9vPTIxLCBiYXI9JGhleCBcIlBhcmFt XCIsIGZiPSRoZXgsIGJmPVwuXC5cLlxcKSBhdCAuKnB5LWZyYW1lZmlsdGVyLmMuKiIgXAotKyAg ICAiYnQgbm8tZmlsdGVyIDEgc2NhbGFycyIKLStnZGJfdGVzdCAiYnQgMSIgXAotKyAgICAiIzAu KmVuZF9mdW5jIFxcKGZvbz0yMSwgYmFyPSRoZXggXCJQYXJhbVwiLCBmYj0kaGV4LCBiZj1cLlwu XC5cXCkgYXQgLipweS1mcmFtZWZpbHRlci5jLioiIFwKLSsgICAgImJ0IDEgc2NhbGFycyIKLSsK LSsjIGFsbAotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IHByaW50IGZyYW1lLWFyZ3VtZW50cyBh bGwiIFwKLSsgICAgInR1cm4gb24gZnJhbWUgYXJndW1lbnRzIgotK2dkYl90ZXN0ICJidCBuby1m aWx0ZXIgMSIgXAotKyAgICAiIzAuKmVuZF9mdW5jIFxcKGZvbz0yMSwgYmFyPSRoZXggXCJQYXJh bVwiLCBmYj0kaGV4LCBiZj1ce25vdGhpbmcgPSAkaGV4IFwiRm9vIEJhclwiLCBmID0gNDIsIHMg PSAxOVx9XFwpIGF0IC4qcHktZnJhbWVmaWx0ZXIuYy4qIiBcCi0rICAgICJidCBuby1maWx0ZXIg MSBhbGwgYXJncyIKLStnZGJfdGVzdCAiYnQgMSIgXAotKyAgICAiIzAuKmVuZF9mdW5jIFxcKGZv bz0yMSwgYmFyPSRoZXggXCJQYXJhbVwiLCBmYj0kaGV4LCBiZj1ce25vdGhpbmcgPSAkaGV4IFwi Rm9vIEJhclwiLCBmID0gNDIsIHMgPSAxOVx9XFwpIGF0IC4qcHktZnJhbWVmaWx0ZXIuYy4qIiBc Ci0rICAgICJidCAxIGFsbCBhcmdzIgotKwotKyMgc2V0IHByaW50IGFkZHJlc3Mgb2ZmCi0rZ2Ri X3Rlc3Rfbm9fb3V0cHV0ICJzZXQgcHJpbnQgYWRkcmVzcyBvZmYiIFwKLSsgICAgIlR1cm4gb2Zm IGFkZHJlc3MgcHJpbnRpbmciCi0rZ2RiX3Rlc3QgImJ0IG5vLWZpbHRlciAxIiBcCi0rICAgICIj MCAgZW5kX2Z1bmMgXFwoZm9vPTIxLCBiYXI9XCJQYXJhbVwiLCBmYj0sIGJmPVx7bm90aGluZyA9 IFwiRm9vIEJhclwiLCBmID0gNDIsIHMgPSAxOVx9XFwpIGF0IC4qcHktZnJhbWVmaWx0ZXIuYy4q IiBcCi0rICAgICJidCBuby1maWx0ZXIgMSBubyBhZGRyZXNzIgotK2dkYl90ZXN0ICJidCAxIiBc Ci0rICAgICIjMCAgZW5kX2Z1bmMgXFwoZm9vPTIxLCBiYXI9XCJQYXJhbVwiLCBmYj0sIGJmPVx7 bm90aGluZyA9IFwiRm9vIEJhclwiLCBmID0gNDIsIHMgPSAxOVx9XFwpIGF0IC4qcHktZnJhbWVm aWx0ZXIuYy4qIiBcCi0rICAgICJidCAxIG5vIGFkZHJlc3NzIgotKwotK3JlbW90ZV9maWxlIGhv c3QgZGVsZXRlICR7cmVtb3RlX3B5dGhvbl9maWxlfQotKwotKyMgVGVzdCB3aXRoIG5vIGRlYnVn aW5mbwotKwotKyMgV2UgY2Fubm90IHVzZSBwcmVwYXJlX2Zvcl90ZXN0aW5nIGFzIHdlIGhhdmUg dG8gc2V0IHRoZSBzYWZlLXBhdGNoCi0rIyB0byBjaGVjayBvYmpmaWxlIGFuZCBwcm9nc3BhY2Ug cHJpbnRlcnMuCi0raWYge1tidWlsZF9leGVjdXRhYmxlICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxl ICRzcmNmaWxlIHtub2RlYnVnfV0gPT0gLTF9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMg U3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KLStnZGJfZXhpdAotK2dkYl9zdGFydAotKwotKyMgU2tp cCBhbGwgdGVzdHMgaWYgUHl0aG9uIHNjcmlwdGluZyBpcyBub3QgZW5hYmxlZC4KLStpZiB7IFtz a2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVlIH0KLSsKLSsjIE1ha2UgdGhlIC1nZGIucHkg c2NyaXB0IGF2YWlsYWJsZSB0byBnZGIsIGl0IGlzIGF1dG9tYWdpY2FsbHkgbG9hZGVkIGJ5IGdk Yi4KLSsjIENhcmUgaXMgdGFrZW4gdG8gcHV0IGl0IGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0 aGUgYmluYXJ5IHNvIHRoYXQKLSsjIGdkYiB3aWxsIGZpbmQgaXQuCi0rc2V0IHJlbW90ZV9vYmpf cHl0aG9uX2ZpbGUgXAotKyAgICBbcmVtb3RlX2Rvd25sb2FkIFwKLSsJIGhvc3QgJHtzcmNkaXJ9 LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1nZGIucHkuaW4gXAotKwkgJHtzdWJkaXJ9LyR7dGVzdGZp bGV9LWdkYi5weV0KLSsKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStn ZGJfdGVzdF9ub19vdXRwdXQgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoICR7cmVtb3RlX29ial9w eXRob25fZmlsZX0iIFwKLSsgICAgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIGZvciBubyBkZWJ1 ZyBpbmZvIgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLSsjIFZlcmlmeSBnZGIgbG9hZGVkIHRo ZSBzY3JpcHQuCi0rZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiAiWWVz LiovJHt0ZXN0ZmlsZX0tZ2RiLnB5LioiIFwKLSsgICAgIlNldCBhdXRvbG9hZCBwYXRoIGZvciBu byBkZWJ1ZyBpbmZvIHRlc3RzIgotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIHBlcnJv ciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQiCi0rICAgIHJldHVybgotK30KLSsKLStnZGJf dGVzdF9ub19vdXRwdXQgInNldCBweXRob24gcHJpbnQtc3RhY2sgZnVsbCIgXAotKyAgICAic2V0 IHB5dGhvbiBwcmludC1zdGFjayBmdWxsIGZvciBubyBkZWJ1Z2luZm8gdGVzdHMiCi0rCi0rIyBM b2FkIGdsb2JhbCBmcmFtZS1maWx0ZXJzCi0rc2V0IHJlbW90ZV9weXRob25fZmlsZSBbcmVtb3Rl X2Rvd25sb2FkIGhvc3QgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5weV0KLStnZGJf dGVzdF9ub19vdXRwdXQgInB5dGhvbiBleGVjZmlsZSAoJyR7cmVtb3RlX3B5dGhvbl9maWxlfScp IiBcCi0rICAgICJMb2FkIHB5dGhvbiBmaWxlIGZvciBubyBkZWJ1Z2luZm8gdGVzdHMiCi0rCi0r IyBEaXNhYmxlIFJldmVyc2UKLStnZGJfdGVzdF9ub19vdXRwdXQgImRpc2FibGUgZnJhbWUtZmls dGVyIGdsb2JhbCBSZXZlcnNlIiBcCi0rICAgICJkaXNhYmxlIGZyYW1lLWZpbHRlciBnbG92YWwg UmV2ZXJzZSBmb3Igbm8gZGVidWdpbmZvIgotK2dkYl90ZXN0ICJidCIgXAotKyAgICAiLiojMC4u KmluIG1haW4gXFwoXFwpLioiIFwKLSsgICAgImJ0IGZvciBubyBkZWJ1Z2luZm8iCi0rZ2RiX3Rl c3QgImJ0IGZ1bGwiIFwKLSsgICAgIi4qIzAuLippbiBtYWluIFxcKFxcKS4qIiBcCi0rICAgICJi dCBmdWxsIGZvciBubyBkZWJ1Z2luZm8iCi0rZ2RiX3Rlc3QgImJ0IG5vLWZpbHRlcnMiIFwKLSsg ICAgIi4qIzAuLippbiBtYWluIFxcKFxcKS4qIiBcCi0rICAgICJidCBubyBmaWx0ZXJzIGZvciBu byBkZWJ1Z2luZm8iCi0rZ2RiX3Rlc3QgImJ0IG5vLWZpbHRlcnMgZnVsbCIgXAotKyAgICAiLioj MC4uKmluIG1haW4gXFwoXFwpLioiIFwKLSsgICAgImJ0IG5vLWZpbHRlcnMgZnVsbCBubyBkZWJ1 Z2luZm8iCi1JbmRleDogZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVm aWx0ZXIucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1m cmFtZWZpbHRlci5weQkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2OTA4MjQzNiArMDIwMAotQEAgLTAs MCArMSwxMTcgQEAKLSsjIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK LSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgR0RCIHRlc3RzdWl0ZS4gIEl0IHRlc3RzIFB5dGhvbi1iYXNlZAot KyMgZnJhbWUtZmlsdGVycy4KLStpbXBvcnQgZ2RiCi0raW1wb3J0IGl0ZXJ0b29scwotK2Zyb20g Z2RiLkZyYW1lRGVjb3JhdG9yIGltcG9ydCBGcmFtZURlY29yYXRvcgotK2ltcG9ydCBjb3B5Ci0r Ci0rY2xhc3MgUmV2ZXJzZV9GdW5jdGlvbiAoRnJhbWVEZWNvcmF0b3IpOgotKwotKyAgICBkZWYg X19pbml0X18oc2VsZiwgZm9iaik6Ci0rICAgICAgICBzdXBlcihSZXZlcnNlX0Z1bmN0aW9uLCBz ZWxmKS5fX2luaXRfXyhmb2JqKQotKyAgICAgICAgc2VsZi5mb2JqID0gZm9iagotKwotKyAgICBk ZWYgZnVuY3Rpb24gKHNlbGYpOgotKyAgICAgICAgZm5hbWUgPSBzdHIgKHNlbGYuZm9iai5mdW5j dGlvbigpKQotKyAgICAgICAgaWYgKGZuYW1lID09IE5vbmUgb3IgZm5hbWUgPT0gIiIpOgotKyAg ICAgICAgICAgIHJldHVybiBOb25lCi0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgIGZuYW1l ID0gZm5hbWVbOjotMV0KLSsgICAgICAgIHJldHVybiBmbmFtZQotKwotK2NsYXNzIER1bW15IChG cmFtZURlY29yYXRvcik6Ci0rCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmb2JqKToKLSsgICAg ICAgIHN1cGVyKER1bW15LCBzZWxmKS5fX2luaXRfXyhmb2JqKQotKyAgICAgICAgc2VsZi5mb2Jq ID0gZm9iagotKwotKyAgICBkZWYgZnVuY3Rpb24gKHNlbGYpOgotKyAgICAgICAgcmV0dXJuICJE dW1teSBmdW5jdGlvbiIKLSsKLSsgICAgZGVmIGFkZHJlc3MgKHNlbGYpOgotKyAgICAgICAgcmV0 dXJuIDB4MTIzCi0rCi0rICAgIGRlZiBmaWxlbmFtZSAoc2VsZik6Ci0rICAgICAgICByZXR1cm4g IkR1bW15IGZpbGVuYW1lIgotKwotKyAgICBkZWYgZnJhbWVfYXJncyAoc2VsZik6Ci0rICAgICAg ICByZXR1cm4gWygiRm9vIixnZGIuVmFsdWUoMTIpKSwoIkJhciIsIlN0dWZmIiksICgiRm9vQmFy Iiw0MildCi0rCi0rICAgIGRlZiBmcmFtZV9sb2NhbHMgKHNlbGYpOgotKyAgICAgICAgcmV0dXJu IFtdCi0rCi0rICAgIGRlZiBsaW5lIChzZWxmKToKLSsgICAgICAgIHJldHVybiAwCi0rCi0rICAg IGRlZiBlbGlkZWQgKHNlbGYpOgotKyAgICAgICAgcmV0dXJuIE5vbmUKLSsKLStjbGFzcyBGcmFt ZUZpbHRlciAoKToKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHNlbGYu bmFtZSA9ICJSZXZlcnNlIgotKyAgICAgICAgc2VsZi5wcmlvcml0eSA9IDEwMAotKyAgICAgICAg c2VsZi5lbmFibGVkID0gVHJ1ZQotKyAgICAgICAgZ2RiLmZyYW1lX2ZpbHRlcnMgW3NlbGYubmFt ZV0gPSBzZWxmCi0rCi0rICAgIGRlZiBmaWx0ZXIgKHNlbGYsIGZyYW1lX2l0ZXIpOgotKyAgICAg ICAgZnJhbWVfaXRlciA9IGl0ZXJ0b29scy5pbWFwIChSZXZlcnNlX0Z1bmN0aW9uLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9pdGVyKQotKyAgICAgICAgcmV0 dXJuIGZyYW1lX2l0ZXIKLSsKLStjbGFzcyBFbGlkaW5nRnJhbWVEZWNvcmF0b3IoRnJhbWVEZWNv cmF0b3IpOgotKwotKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnJhbWUsIGVsaWRlZF9mcmFtZXMp OgotKyAgICAgICAgc3VwZXIoRWxpZGluZ0ZyYW1lRGVjb3JhdG9yLCBzZWxmKS5fX2luaXRfXyhm cmFtZSkKLSsgICAgICAgIHNlbGYuZWxpZGVkX2ZyYW1lcyA9IGVsaWRlZF9mcmFtZXMKLSsKLSsg ICAgZGVmIGVsaWRlZChzZWxmKToKLSsgICAgICAgIHJldHVybiBpdGVyKHNlbGYuZWxpZGVkX2Zy YW1lcykKLSsKLStjbGFzcyBFbGlkaW5nSXRlcmF0b3I6Ci0rICAgIGRlZiBfX2luaXRfXyhzZWxm LCBpaSk6Ci0rICAgICAgICBzZWxmLmlucHV0X2l0ZXJhdG9yID0gaWkKLSsKLSsgICAgZGVmIF9f aXRlcl9fKHNlbGYpOgotKyAgICAgICAgcmV0dXJuIHNlbGYKLSsKLSsgICAgZGVmIG5leHQoc2Vs Zik6Ci0rICAgICAgICBmcmFtZSA9IG5leHQoc2VsZi5pbnB1dF9pdGVyYXRvcikKLSsgICAgICAg IGlmIHN0cihmcmFtZS5mdW5jdGlvbigpKSAhPSAnZnVuYzEnOgotKyAgICAgICAgICAgIHJldHVy biBmcmFtZQotKwotKyAgICAgICAgIyBTdXBwb3NlIHdlIHdhbnQgdG8gcmV0dXJuIHRoZSAnZnVu YzEnIGZyYW1lIGJ1dCBlbGlkZSB0aGUKLSsgICAgICAgICMgbmV4dCBmcmFtZS4gIEUuZy4sIGlm IGNhbGwgaW4gb3VyIGludGVycHJldGVyIGxhbmd1YWdlIHRha2VzCi0rICAgICAgICAjIHR3byBD IGZyYW1lcyB0byBpbXBsZW1lbnQsIGFuZCB0aGUgZmlyc3Qgb25lIHdlIHNlZSBpcyB0aGUKLSsg ICAgICAgICMgInNlbnRpbmVsIi4KLSsgICAgICAgIGVsaWRlZCA9IG5leHQoc2VsZi5pbnB1dF9p dGVyYXRvcikKLSsgICAgICAgIHJldHVybiBFbGlkaW5nRnJhbWVEZWNvcmF0b3IoZnJhbWUsIFtl bGlkZWRdKQotKwotK2NsYXNzIEZyYW1lRWxpZGVyICgpOgotKwotKyAgICBkZWYgX19pbml0X18g KHNlbGYpOgotKyAgICAgICAgc2VsZi5uYW1lID0gIkVsaWRlciIKLSsgICAgICAgIHNlbGYucHJp b3JpdHkgPSA5MDAKLSsgICAgICAgIHNlbGYuZW5hYmxlZCA9IFRydWUKLSsgICAgICAgIGdkYi5m cmFtZV9maWx0ZXJzIFtzZWxmLm5hbWVdID0gc2VsZgotKwotKyAgICBkZWYgZmlsdGVyIChzZWxm LCBmcmFtZV9pdGVyKToKLSsgICAgICAgIHJldHVybiBFbGlkaW5nSXRlcmF0b3IgKGZyYW1lX2l0 ZXIpCi0rCi0rRnJhbWVGaWx0ZXIoKQotK0ZyYW1lRWxpZGVyKCkKCmRpZmYgLS1naXQgYS9nZGIt dXBzdHJlYW0tZnJhbWVmaWx0ZXJzLTJvZjIucGF0Y2ggYi9nZGItdXBzdHJlYW0tZnJhbWVmaWx0 ZXJzLTJvZjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0NDZlZjYuLjAw MDAwMDAKLS0tIGEvZ2RiLXVwc3RyZWFtLWZyYW1lZmlsdGVycy0yb2YyLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMTc1ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3Zz LzIwMTMtMDUvbXNnMDAxNDEuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNS8x NyAwNjo1ODozMwkxLjE1NTY1Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNS8xNyAwODoz NDoxOAkxLjE1NTY2Ci0jIyAtMSwzICsxLDE4IEBACi0rMjAxMy0wNS0xNyAgUGhpbCBNdWxkb29u ICA8cG11bGRvb25AcmVkaGF0LmNvbT4KLSsKLSsJKiBmcmFtZS5jIChmcmFtZV9zdGFzaCk6IENv bnZlcnQgdG8gaHRhYi4KLSsJKGZyYW1lX2FkZHJfaGFzaCk6IE5ldyBmdW5jdGlvbi4KLSsJKGZy YW1lX2FkZHJfaGFzaF9lcSk6IE5ldyBmdW5jdGlvbi4KLSsJKGZyYW1lX3N0YXNoX2NyZWF0ZSk6 IENvbnZlcnQgZnVuY3Rpb24gdG8gY3JlYXRlCi0rCWEgaGFzaCB0YWJsZS4KLSsJKGZyYW1lX3N0 YXNoX2FkZCk6IENvbnZlcnQgZnVuY3Rpb24gdG8gYWRkIGFuIGVudHJ5IHRvIGEgaGFzaAotKwl0 YWJsZS4KLSsJKGZyYW1lX3N0YXNoX2ZpbmQpOiBDb252ZXJ0IGZ1bmN0aW9uIHRvIHNlYXJjaCB0 aGUgaGFzaCB0YWJsZS4KLSsJKGZyYW1lX3N0YXNoX2ludmFsaWRhdGUpOiBDb252ZXJ0IGZ1bmN0 aW9uIHRvIGVtcHR5IHRoZSBoYXNoCi0rCXRhYmxlLgotKwkoZ2V0X2ZyYW1lX2lkKTogT25seSBh ZGQgdG8gc3Rhc2ggaWYgYSBmcmFtZV9pZCBpcyBjcmVhdGVkLgotKwkoX2luaXRpYWxpemVfZnJh bWUpOiBDYWxsIGZyYW1lX3N0YXNoX2NyZWF0ZS4KLSsKLSAyMDEzLTA1LTE2ICBZdWUgTHUgIDxo YWNrbHUubmV3Ym9ybkBnbWFpbC5jb20+ICAodGlueSBjaGFuZ2UpCi0gCi0gCSogY29uZmlndXJl LmFjOiBFbnN1cmUgTUlHIGlzIGF2YWlsYWJsZSB3aGVuIGJ1aWxkaW5nIGZvciBHTlUgSHVyZAot LS0tIHNyYy9nZGIvZnJhbWUuYwkyMDEzLzA0LzEwIDE1OjExOjExCTEuMzE3Ci0rKysgc3JjL2dk Yi9mcmFtZS5jCTIwMTMvMDUvMTcgMDg6MzQ6MTgJMS4zMTgKLUBAIC00Myw2ICs0Myw3IEBACi0g I2luY2x1ZGUgImJsb2NrLmgiCi0gI2luY2x1ZGUgImlubGluZS1mcmFtZS5oIgotICNpbmNsdWRl ICJ0cmFjZXBvaW50LmgiCi0rI2luY2x1ZGUgImhhc2h0YWIuaCIKLSAKLSBzdGF0aWMgc3RydWN0 IGZyYW1lX2luZm8gKmdldF9wcmV2X2ZyYW1lXzEgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2Zy YW1lKTsKLSBzdGF0aWMgc3RydWN0IGZyYW1lX2luZm8gKmdldF9wcmV2X2ZyYW1lX3JhdyAoc3Ry dWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUpOwotQEAgLTEyOCwzOCArMTI5LDEwNyBAQAotICAg ZW51bSB1bndpbmRfc3RvcF9yZWFzb24gc3RvcF9yZWFzb247Ci0gfTsKLSAKLS0vKiBBIGZyYW1l IHN0YXNoIHVzZWQgdG8gc3BlZWQgdXAgZnJhbWUgbG9va3Vwcy4gICovCi0rLyogQSBmcmFtZSBz dGFzaCB1c2VkIHRvIHNwZWVkIHVwIGZyYW1lIGxvb2t1cHMuICBDcmVhdGUgYSBoYXNoIHRhYmxl Ci0rICAgdG8gc3Rhc2ggZnJhbWVzIHByZXZpb3VzbHkgYWNjZXNzZWQgZnJvbSB0aGUgZnJhbWUg Y2FjaGUgZm9yCi0rICAgcXVpY2tlciBzdWJzZXF1ZW50IHJldHJpZXZhbC4gIFRoZSBoYXNoIHRh YmxlIGlzIGVtcHRpZWQgd2hlbmV2ZXIKLSsgICB0aGUgZnJhbWUgY2FjaGUgaXMgaW52YWxpZGF0 ZWQuICAqLwotKwotK3N0YXRpYyBodGFiX3QgZnJhbWVfc3Rhc2g7Ci0rCi0rLyogSW50ZXJuYWwg ZnVuY3Rpb24gdG8gY2FsY3VsYXRlIGEgaGFzaCBmcm9tIHRoZSBmcmFtZV9pZCBhZGRyZXNzZXMs Ci0rICAgdXNpbmcgYXMgbWFueSB2YWxpZCBhZGRyZXNzZXMgYXMgcG9zc2libGUuICBGcmFtZXMg YmVsb3cgbGV2ZWwgMAotKyAgIGFyZSBub3Qgc3RvcmVkIGluIHRoZSBoYXNoIHRhYmxlLiAgKi8K LSsKLStzdGF0aWMgaGFzaHZhbF90Ci0rZnJhbWVfYWRkcl9oYXNoIChjb25zdCB2b2lkICphcCkK LSt7Ci0rICBjb25zdCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUgPSBhcDsKLSsgIGNvbnN0IHN0 cnVjdCBmcmFtZV9pZCBmX2lkID0gZnJhbWUtPnRoaXNfaWQudmFsdWU7Ci0rICBoYXNodmFsX3Qg aGFzaCA9IDA7Ci0rCi0rICBnZGJfYXNzZXJ0IChmX2lkLnN0YWNrX2FkZHJfcCB8fCBmX2lkLmNv ZGVfYWRkcl9wCi0rCSAgICAgIHx8IGZfaWQuc3BlY2lhbF9hZGRyX3ApOwotKwotKyAgaWYgKGZf aWQuc3RhY2tfYWRkcl9wKQotKyAgICBoYXNoID0gaXRlcmF0aXZlX2hhc2ggKCZmX2lkLnN0YWNr X2FkZHIsCi0rCQkJICAgc2l6ZW9mIChmX2lkLnN0YWNrX2FkZHIpLCBoYXNoKTsKLSsgIGlmIChm X2lkLmNvZGVfYWRkcl9wKQotKyAgICBoYXNoID0gaXRlcmF0aXZlX2hhc2ggKCZmX2lkLmNvZGVf YWRkciwKLSsJCQkgICBzaXplb2YgKGZfaWQuY29kZV9hZGRyKSwgaGFzaCk7Ci0rICBpZiAoZl9p ZC5zcGVjaWFsX2FkZHJfcCkKLSsgICAgaGFzaCA9IGl0ZXJhdGl2ZV9oYXNoICgmZl9pZC5zcGVj aWFsX2FkZHIsCi0rCQkJICAgc2l6ZW9mIChmX2lkLnNwZWNpYWxfYWRkciksIGhhc2gpOwotIAot LS8qIFdlIGN1cnJlbnRseSBvbmx5IHN0YXNoIG9uZSBmcmFtZSBhdCBhIHRpbWUsIGFzIHRoaXMg c2VlbXMgdG8gYmUKLS0gICBzdWZmaWNpZW50IGZvciBub3cuICAqLwotLXN0YXRpYyBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWVfc3Rhc2ggPSBOVUxMOwotKyAgcmV0dXJuIGhhc2g7Ci0rfQotKwot Ky8qIEludGVybmFsIGVxdWFsaXR5IGZ1bmN0aW9uIGZvciB0aGUgaGFzaCB0YWJsZS4gIFRoaXMg ZnVuY3Rpb24KLSsgICBkZWZlcnMgZXF1YWxpdHkgb3BlcmF0aW9ucyB0byBmcmFtZV9pZF9lcS4g ICovCi0rCi0rc3RhdGljIGludAotK2ZyYW1lX2FkZHJfaGFzaF9lcSAoY29uc3Qgdm9pZCAqYSwg Y29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZl9lbnRyeSA9 IGE7Ci0rICBjb25zdCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZl9lbGVtZW50ID0gYjsKLSAKLS0vKiBB ZGQgdGhlIGZvbGxvd2luZyBGUkFNRSB0byB0aGUgZnJhbWUgc3Rhc2guICAqLwotKyAgcmV0dXJu IGZyYW1lX2lkX2VxIChmX2VudHJ5LT50aGlzX2lkLnZhbHVlLAotKwkJICAgICAgZl9lbGVtZW50 LT50aGlzX2lkLnZhbHVlKTsKLSt9Ci0rCi0rLyogSW50ZXJuYWwgZnVuY3Rpb24gdG8gY3JlYXRl IHRoZSBmcmFtZV9zdGFzaCBoYXNoIHRhYmxlLiAgMTAwIHNlZW1zCi0rICAgdG8gYmUgYSBnb29k IGNvbXByb21pc2UgdG8gc3RhcnQgdGhlIGhhc2ggdGFibGUgYXQuICAqLwotKwotK3N0YXRpYyB2 b2lkCi0rZnJhbWVfc3Rhc2hfY3JlYXRlICh2b2lkKQotK3sKLSsgIGZyYW1lX3N0YXNoID0gaHRh Yl9jcmVhdGUgKDEwMCwKLSsJCQkgICAgIGZyYW1lX2FkZHJfaGFzaCwKLSsJCQkgICAgIGZyYW1l X2FkZHJfaGFzaF9lcSwKLSsJCQkgICAgIE5VTEwpOwotK30KLSsKLSsvKiBJbnRlcm5hbCBmdW5j dGlvbiB0byBhZGQgYSBmcmFtZSB0byB0aGUgZnJhbWVfc3Rhc2ggaGFzaCB0YWJsZS4gIERvCi0r ICAgbm90IHN0b3JlIGZyYW1lcyBiZWxvdyAwIGFzIHRoZXkgbWF5IG5vdCBoYXZlIGFueSBhZGRy ZXNzZXMgdG8KLSsgICBjYWxjdWxhdGUgYSBoYXNoLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotIGZy YW1lX3N0YXNoX2FkZCAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotIHsKLS0gIGZyYW1lX3N0 YXNoID0gZnJhbWU7Ci0rICAvKiBEbyBub3Qgc3Rhc2ggZnJhbWVzIGJlbG93IGxldmVsIDAuICAq LwotKyAgaWYgKGZyYW1lLT5sZXZlbCA+PSAwKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGZyYW1l X2luZm8gKipzbG90OwotKwotKyAgICAgIHNsb3QgPSAoc3RydWN0IGZyYW1lX2luZm8gKiopIGh0 YWJfZmluZF9zbG90IChmcmFtZV9zdGFzaCwKLSsJCQkJCQkgICAgZnJhbWUsCi0rCQkJCQkJICAg IElOU0VSVCk7Ci0rICAgICAgKnNsb3QgPSBmcmFtZTsKLSsgICAgfQotIH0KLSAKLS0vKiBTZWFy Y2ggdGhlIGZyYW1lIHN0YXNoIGZvciBhbiBlbnRyeSB3aXRoIHRoZSBnaXZlbiBmcmFtZSBJRC4K LS0gICBJZiBmb3VuZCwgcmV0dXJuIHRoYXQgZnJhbWUuICBPdGhlcndpc2UgcmV0dXJuIE5VTEwu ICAqLwotKy8qIEludGVybmFsIGZ1bmN0aW9uIHRvIHNlYXJjaCB0aGUgZnJhbWUgc3Rhc2ggZm9y IGFuIGVudHJ5IHdpdGggdGhlCi0rICAgZ2l2ZW4gZnJhbWUgSUQuICBJZiBmb3VuZCwgcmV0dXJu IHRoYXQgZnJhbWUuICBPdGhlcndpc2UgcmV0dXJuCi0rICAgTlVMTC4gICovCi0gCi0gc3RhdGlj IHN0cnVjdCBmcmFtZV9pbmZvICoKLSBmcmFtZV9zdGFzaF9maW5kIChzdHJ1Y3QgZnJhbWVfaWQg aWQpCi0gewotLSAgaWYgKGZyYW1lX3N0YXNoICYmIGZyYW1lX2lkX2VxIChmcmFtZV9zdGFzaC0+ dGhpc19pZC52YWx1ZSwgaWQpKQotLSAgICByZXR1cm4gZnJhbWVfc3Rhc2g7Ci0rICBzdHJ1Y3Qg ZnJhbWVfaW5mbyBkdW1teTsKLSsgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKLSAKLS0gIHJl dHVybiBOVUxMOwotKyAgZHVtbXkudGhpc19pZC52YWx1ZSA9IGlkOwotKyAgZnJhbWUgPSBodGFi X2ZpbmQgKGZyYW1lX3N0YXNoLCAmZHVtbXkpOwotKyAgcmV0dXJuIGZyYW1lOwotIH0KLSAKLS0v KiBJbnZhbGlkYXRlIHRoZSBmcmFtZSBzdGFzaCBieSByZW1vdmluZyBhbGwgZW50cmllcyBpbiBp dC4gICovCi0rLyogSW50ZXJuYWwgZnVuY3Rpb24gdG8gaW52YWxpZGF0ZSB0aGUgZnJhbWUgc3Rh c2ggYnkgcmVtb3ZpbmcgYWxsCi0rICAgZW50cmllcyBpbiBpdC4gIFRoaXMgb25seSBvY2N1cnMg d2hlbiB0aGUgZnJhbWUgY2FjaGUgaXMKLSsgICBpbnZhbGlkYXRlZC4gICovCi0gCi0gc3RhdGlj IHZvaWQKLSBmcmFtZV9zdGFzaF9pbnZhbGlkYXRlICh2b2lkKQotIHsKLS0gIGZyYW1lX3N0YXNo ID0gTlVMTDsKLSsgIGh0YWJfZW1wdHkgKGZyYW1lX3N0YXNoKTsKLSB9Ci0gCi0gLyogRmxhZyB0 byBjb250cm9sIGRlYnVnZ2luZy4gICovCi1AQCAtMzQ1LDEwICs0MTUsOSBAQAotIAkgIGZwcmlu dF9mcmFtZV9pZCAoZ2RiX3N0ZGxvZywgZmktPnRoaXNfaWQudmFsdWUpOwotIAkgIGZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIiB9XG4iKTsKLSAJfQotKyAgICAgIGZyYW1lX3N0YXNo X2FkZCAoZmkpOwotICAgICB9Ci0gCi0tICBmcmFtZV9zdGFzaF9hZGQgKGZpKTsKLS0KLSAgIHJl dHVybiBmaS0+dGhpc19pZC52YWx1ZTsKLSB9Ci0gCi1AQCAtMjQ1MSw2ICsyNTIwLDggQEAKLSB7 Ci0gICBvYnN0YWNrX2luaXQgKCZmcmFtZV9jYWNoZV9vYnN0YWNrKTsKLSAKLSsgIGZyYW1lX3N0 YXNoX2NyZWF0ZSAoKTsKLSsKLSAgIG9ic2VydmVyX2F0dGFjaF90YXJnZXRfY2hhbmdlZCAoZnJh bWVfb2JzZXJ2ZXJfdGFyZ2V0X2NoYW5nZWQpOwotIAotICAgYWRkX3ByZWZpeF9jbWQgKCJiYWNr dHJhY2UiLCBjbGFzc19tYWludGVuYW5jZSwgc2V0X2JhY2t0cmFjZV9jbWQsIF8oIlwKCmRpZmYg LS1naXQgYS9nZGItdXBzdHJlYW0tbWFuLWdjb3JlLTFvZjIucGF0Y2ggYi9nZGItdXBzdHJlYW0t bWFuLWdjb3JlLTFvZjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMjU1 ZjMuLjAwMDAwMDAKLS0tIGEvZ2RiLXVwc3RyZWFtLW1hbi1nY29yZS0xb2YyLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsNjkwICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt Y3ZzLzIwMTMtMDQvbXNnMDAxMDkuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8w NC8xMSAxMzoxNDowNAkxLjE1Mzk3Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNC8xMSAx NDoxMzo0MgkxLjE1Mzk4Ci0jIyAtMSw0ICsxLDI4IEBACi0gMjAxMy0wNC0xMSAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwkgICAgUGVkcm8gQWx2ZXMgIDxw YWx2ZXNAcmVkaGF0LmNvbT4KLSsKLSsJKiBNYWtlZmlsZS5pbiAoSEFWRV9OQVRJVkVfR0NPUkVf VEFSR0VUKTogTmV3LgotKwkoZ2VuZXJhdGVkX2ZpbGVzKTogQWRkIGdjb3JlLgotKwkoaW5zdGFs bC1vbmx5LCB1bmluc3RhbGwpOiBBZGQgZ2NvcmUgaWYgSEFWRV9OQVRJVkVfR0NPUkVfVEFSR0VU IG9yCi0rCUhBVkVfTkFUSVZFX0dDT1JFX0hPU1QuCi0rCShnY29yZSk6IE5ldy4KLSsJKiBORVdT IChDaGFuZ2VzIHNpbmNlIEdEQiA3LjYpOiBNZW50aW9uIG5ld2x5IGluc3RhbGxlZCBnY29yZS4K LSsJKiBjb25maWcvYWxwaGEvYWxwaGEtb3NmMy5taCwgY29uZmlnL2kzODYvZmJzZC5taCwKLSsJ Y29uZmlnL2kzODYvZmJzZDY0Lm1oLCBjb25maWcvaTM4Ni9pMzg2Z251Lm1oLCBjb25maWcvaTM4 Ni9pMzg2c29sMi5taCwKLSsJY29uZmlnL2kzODYvc29sMi02NC5taCwgY29uZmlnL21pcHMvaXJp eDUubWgsIGNvbmZpZy9taXBzL2lyaXg2Lm1oLAotKwljb25maWcvcG93ZXJwYy9mYnNkLm1oLCBj b25maWcvc3BhcmMvZmJzZC5taCwgY29uZmlnL3NwYXJjL3NvbDIubWg6Ci0rCUFkZCBIQVZFX05B VElWRV9HQ09SRV9IT1NULgotKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KLSsJKiBjb25maWd1 cmUuYWMgKEhBVkVfTkFUSVZFX0dDT1JFX1RBUkdFVCk6IE5ldywgc2V0IGl0LCBBQ19TVUJTVCBp dC4KLSsJTmV3IEFDX1NVQlNUIGZpciBHREJfVFJBTlNGT1JNX05BTUUgYW5kIEdDT1JFX1RSQU5T Rk9STV9OQU1FLiAgTmV3Ci0rCUFDX0NPTkZJR19GSUxFUyBmb3IgZ2NvcmUuCi0rCSogY29uZmln dXJlLnRndDogQWRkIGdkYl9oYXZlX2djb3JlIHRvIHRoZSBpbml0aWFsIGNvbW1lbnQuICBTZXQK LSsJZ2RiX2hhdmVfZ2NvcmUuCi0rCSogZ2RiX2djb3JlLnNoOiBSZW5hbWUgdG8gLi4uCi0rCSog Z2NvcmUuaW46IC4uLiBoZXJlLiAgUmVtb3ZlIGdjb3JlLnNoIGNvbW1lbnQuICBVc2UgR0RCX1RS QU5TRk9STV9OQU1FCi0rCWFuZCBHQ09SRV9UUkFOU0ZPUk1fTkFNRSBzdWJzdGl0dXRpb25zLgot KwotKzIwMTMtMDQtMTEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KLSAKLSAJKiByZW1vdGUuYyAodW5wdXNoX2FuZF9wZXJyb3IpOiBBZGQgb3V0cHV0IG1lc3Nh Z2UgZmluYWwgZG90LgotIAotIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEzLzA0LzEwIDE1 OjExOjEyCTEuMTQ0MAotIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEzLzA0LzExIDE0OjEz OjQ0CTEuMTQ0MQotIyMgLTEsMyArMSwxMyBAQAotKzIwMTMtMDQtMTEgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBNYWtlZmlsZS5pbiAoTUFOMVMp OiBBZGQgZ2NvcmUuMS4KLSsJUmVtb3ZlICJIb3N0LCB0YXJnZXQsIGFuZCBzaXRlIHNwZWNpZmlj IE1ha2VmaWxlIGZyYWdtZW50cyIgY29tbWVudC4KLSsJKEBob3N0X21ha2VmaWxlX2ZyYWdALCBI QVZFX05BVElWRV9HQ09SRV9UQVJHRVQpOiBOZXcuCi0rCShpbnN0YWxsLW1hbjEsIHVuaW5zdGFs bC1tYW4xKTogQ29uZGl0aW9uYWxpemUgZ2NvcmUuMS4KLSsJKGdjb3JlLjEpOiBOZXcuCi0rCSog Z2RiLnRleGluZm8gKE1hbiBQYWdlcyk6IEFkZCBnY29yZSBtYW4uCi0rCShnY29yZSBtYW4pOiBO ZXcgbm9kZS4KLSsKLSAyMDEzLTA0LTEwICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29t PgotIAotIAkqIGdkYi50ZXhpbmZvIChQcm9jZXNzIFJlY29yZCBhbmQgUmVwbGF5KTogRG9jdW1l bnQgdGhhdCAic2V0Ci1JbmRleDogZ2RiLTcuNi9nZGIvZ2NvcmUuaW4KLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny42L2dkYi9nY29yZS5pbgkyMDEzLTA0LTI2IDE1OjMzOjAxLjE3MTA0OTI0NyArMDIwMAotQEAg LTAsMCArMSw2OSBAQAotKyMhL2Jpbi9zaAotKwotKyMgICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAx MyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCi0rCi0rIwotKyMgU2NyaXB0IHRvIGdlbmVyYXRlIGEgY29yZSBmaWxlIG9mIGEg cnVubmluZyBwcm9ncmFtLgotKyMgSXQgc3RhcnRzIHVwIGdkYiwgYXR0YWNoZXMgdG8gdGhlIGdp dmVuIFBJRCBhbmQgaW52b2tlcyB0aGUgZ2NvcmUgY29tbWFuZC4KLSsjCi0rCi0raWYgWyAiJCMi IC1lcSAiMCIgXQotK3RoZW4KLSsgICAgZWNobyAidXNhZ2U6ICBAR0NPUkVfVFJBTlNGT1JNX05B TUVAIFstbyBmaWxlbmFtZV0gcGlkIgotKyAgICBleGl0IDIKLStmaQotKwotKyMgTmVlZCB0byBj aGVjayBmb3IgLW8gb3B0aW9uLCBidXQgc2V0IGRlZmF1bHQgYmFzZW5hbWUgdG8gImNvcmUiLgot K25hbWU9Y29yZQotKwotK2lmIFsgIiQxIiA9ICItbyIgXQotK3RoZW4KLSsgICAgaWYgWyAiJCMi IC1sdCAiMyIgXQotKyAgICB0aGVuCi0rCSMgTm90IGVub3VnaCBhcmd1bWVudHMuCi0rCWVjaG8g InVzYWdlOiAgQEdDT1JFX1RSQU5TRk9STV9OQU1FQCBbLW8gZmlsZW5hbWVdIHBpZCIKLSsJZXhp dCAyCi0rICAgIGZpCi0rICAgIG5hbWU9JDIKLSsKLSsgICAgIyBTaGlmdCBvdmVyIHRvIHN0YXJ0 IG9mIHBpZCBsaXN0Ci0rICAgIHNoaWZ0OyBzaGlmdAotK2ZpCi0rCi0rIyBJbml0aWFsaXNlIHJl dHVybiBjb2RlLgotK3JjPTAKLSsKLSsjIExvb3AgdGhyb3VnaCBwaWRzCi0rZm9yIHBpZCBpbiAk KgotK2RvCi0rCSMgYDwvZGV2L251bGwnIHRvIGF2b2lkIHRvdWNoaW5nIGludGVyYWN0aXZlIHRl cm1pbmFsIGlmIGl0IGlzCi0rCSMgYXZhaWxhYmxlIGJ1dCBub3QgYWNjZXNzaWJsZSBhcyBHREIg d291bGQgZ2V0IHN0b3BwZWQgb24gU0lHVFRJTi4KLSsJQEdEQl9UUkFOU0ZPUk1fTkFNRUAgPC9k ZXYvbnVsbCAtLW54IC0tYmF0Y2ggXAotKwkgICAgLWV4ICJzZXQgcGFnaW5hdGlvbiBvZmYiIC1l eCAic2V0IGhlaWdodCAwIiAtZXggInNldCB3aWR0aCAwIiBcCi0rCSAgICAtZXggImF0dGFjaCAk cGlkIiAtZXggImdjb3JlICRuYW1lLiRwaWQiIC1leCBkZXRhY2ggLWV4IHF1aXQKLSsKLSsJaWYg WyAtciAkbmFtZS4kcGlkIF0gOyB0aGVuIAotKwkgICAgcmM9MAotKwllbHNlCi0rCSAgICBlY2hv ICJAR0NPUkVfVFJBTlNGT1JNX05BTUVAOiBmYWlsZWQgdG8gY3JlYXRlICRuYW1lLiRwaWQiCi0r CSAgICByYz0xCi0rCSAgICBicmVhawotKwlmaQotKwotKwotK2RvbmUKLSsKLStleGl0ICRyYwot SW5kZXg6IGdkYi03LjYvZ2RiL2dkYl9nY29yZS5zaAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYu b3JpZy9nZGIvZ2RiX2djb3JlLnNoCTIwMTMtMDEtMDEgMDc6MzI6NDIuMDAwMDAwMDAwICswMTAw Ci0rKysgL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi1AQCAt MSw3MCArMCwwIEBACi0tIyEvYmluL3NoCi0tCi0tIyAgIENvcHlyaWdodCAoQykgMjAwMy0yMDEz IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLQotLSMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLSMKLS0jIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KLS0KLS0jCi0tIyBnY29yZS5zaAotLSMgU2NyaXB0IHRvIGdlbmVyYXRlIGEgY29y ZSBmaWxlIG9mIGEgcnVubmluZyBwcm9ncmFtLgotLSMgSXQgc3RhcnRzIHVwIGdkYiwgYXR0YWNo ZXMgdG8gdGhlIGdpdmVuIFBJRCBhbmQgaW52b2tlcyB0aGUgZ2NvcmUgY29tbWFuZC4KLS0jCi0t Ci0taWYgWyAiJCMiIC1lcSAiMCIgXQotLXRoZW4KLS0gICAgZWNobyAidXNhZ2U6ICBnY29yZSBb LW8gZmlsZW5hbWVdIHBpZCIKLS0gICAgZXhpdCAyCi0tZmkKLS0KLS0jIE5lZWQgdG8gY2hlY2sg Zm9yIC1vIG9wdGlvbiwgYnV0IHNldCBkZWZhdWx0IGJhc2VuYW1lIHRvICJjb3JlIi4KLS1uYW1l PWNvcmUKLS0KLS1pZiBbICIkMSIgPSAiLW8iIF0KLS10aGVuCi0tICAgIGlmIFsgIiQjIiAtbHQg IjMiIF0KLS0gICAgdGhlbgotLQkjIE5vdCBlbm91Z2ggYXJndW1lbnRzLgotLQllY2hvICJ1c2Fn ZTogIGdjb3JlIFstbyBmaWxlbmFtZV0gcGlkIgotLQlleGl0IDIKLS0gICAgZmkKLS0gICAgbmFt ZT0kMgotLQotLSAgICAjIFNoaWZ0IG92ZXIgdG8gc3RhcnQgb2YgcGlkIGxpc3QKLS0gICAgc2hp ZnQ7IHNoaWZ0Ci0tZmkKLS0KLS0jIEluaXRpYWxpc2UgcmV0dXJuIGNvZGUuCi0tcmM9MAotLQot LSMgTG9vcCB0aHJvdWdoIHBpZHMKLS1mb3IgcGlkIGluICQqCi0tZG8KLS0JIyBgPC9kZXYvbnVs bCcgdG8gYXZvaWQgdG91Y2hpbmcgaW50ZXJhY3RpdmUgdGVybWluYWwgaWYgaXQgaXMKLS0JIyBh dmFpbGFibGUgYnV0IG5vdCBhY2Nlc3NpYmxlIGFzIEdEQiB3b3VsZCBnZXQgc3RvcHBlZCBvbiBT SUdUVElOLgotLQlnZGIgPC9kZXYvbnVsbCAtLW54IC0tYmF0Y2ggXAotLQkgICAgLWV4ICJzZXQg cGFnaW5hdGlvbiBvZmYiIC1leCAic2V0IGhlaWdodCAwIiAtZXggInNldCB3aWR0aCAwIiBcCi0t CSAgICAtZXggImF0dGFjaCAkcGlkIiAtZXggImdjb3JlICRuYW1lLiRwaWQiIC1leCBkZXRhY2gg LWV4IHF1aXQKLS0KLS0JaWYgWyAtciAkbmFtZS4kcGlkIF0gOyB0aGVuIAotLQkgICAgcmM9MAot LQllbHNlCi0tCSAgICBlY2hvIGdjb3JlOiBmYWlsZWQgdG8gY3JlYXRlICRuYW1lLiRwaWQKLS0J ICAgIHJjPTEKLS0JICAgIGJyZWFrCi0tCWZpCi0tCi0tCi0tZG9uZQotLQotLWV4aXQgJHJjCi1J bmRleDogZ2RiLTcuNi9nZGIvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9y aWcvZ2RiL01ha2VmaWxlLmluCTIwMTMtMDQtMjYgMTU6MzI6NTguMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuNi9nZGIvTWFrZWZpbGUuaW4JMjAxMy0wNC0yNiAxNTozMzowMS4xNzIwNDkyNDYg KzAyMDAKLUBAIC00MTQsNiArNDE0LDcgQEAgQ09ORklHX0FMTD0gQENPTkZJR19BTExACi0gQ09O RklHX0NMRUFOPSBAQ09ORklHX0NMRUFOQAotIENPTkZJR19JTlNUQUxMID0gQENPTkZJR19JTlNU QUxMQAotIENPTkZJR19VTklOU1RBTEwgPSBAQ09ORklHX1VOSU5TVEFMTEAKLStIQVZFX05BVElW RV9HQ09SRV9UQVJHRVQgPSBASEFWRV9OQVRJVkVfR0NPUkVfVEFSR0VUQAotIAotICMgLUkuIGZv ciBjb25maWcgZmlsZXMuCi0gIyAtSSQoc3JjZGlyKSBmb3IgZ2RiIGludGVybmFsIGhlYWRlcnMu Ci1AQCAtOTYzLDcgKzk2NCw3IEBAIERJU1RTVFVGRiA9ICQoWVlGSUxFUykKLSAKLSAjIEFsbCBn ZW5lcmF0ZWQgZmlsZXMgd2hpY2ggY2FuIGJlIGluY2x1ZGVkIGJ5IGFub3RoZXIgZmlsZS4KLSBn ZW5lcmF0ZWRfZmlsZXMgPSBjb25maWcuaCBvYnNlcnZlci5oIG9ic2VydmVyLmluYyBhZGEtbGV4 LmMgaml0LXJlYWRlci5oIFwKLS0JJChHTlVMSUJfSCkgJChOQVRfR0VORVJBVEVEX0ZJTEVTKQot KwkkKEdOVUxJQl9IKSAkKE5BVF9HRU5FUkFURURfRklMRVMpIGdjb3JlCi0gCi0gLmMubzoKLSAJ JChDT01QSUxFKSAkPAotQEAgLTEwMzksNiArMTA0MCwxOSBAQCBpbnN0YWxsLW9ubHk6ICQoQ09O RklHX0lOU1RBTEwpCi0gCQkJJChERVNURElSKSQoYmluZGlyKS8kJHRyYW5zZm9ybWVkX25hbWUk KEVYRUVYVCkgOyBcCi0gCQkkKFNIRUxMKSAkKHNyY2RpcikvLi4vbWtpbnN0YWxsZGlycyAkKERF U1RESVIpJChpbmNsdWRlZGlyKS9nZGIgOyBcCi0gCQkkKElOU1RBTExfREFUQSkgaml0LXJlYWRl ci5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpL2dkYi9qaXQtcmVhZGVyLmgKLSsJaWYgdGVzdCAi eCQoSEFWRV9OQVRJVkVfR0NPUkVfVEFSR0VUKSQoSEFWRV9OQVRJVkVfR0NPUkVfSE9TVCkiICE9 IHg7IFwKLSsJdGhlbiBcCi0rCSAgdHJhbnNmb3JtZWRfbmFtZT1gdD0nJChwcm9ncmFtX3RyYW5z Zm9ybV9uYW1lKSc7IFwKLSsJCQkgICAgZWNobyBnY29yZSB8IHNlZCAtZSAiJCR0ImAgOyBcCi0r CQkgIGlmIHRlc3QgIngkJHRyYW5zZm9ybWVkX25hbWUiID0geDsgdGhlbiBcCi0rCQkgICAgdHJh bnNmb3JtZWRfbmFtZT1nY29yZSA7IFwKLSsJCSAgZWxzZSBcCi0rCQkgICAgdHJ1ZSA7IFwKLSsJ CSAgZmkgOyBcCi0rCQkgICQoU0hFTEwpICQoc3JjZGlyKS8uLi9ta2luc3RhbGxkaXJzICQoREVT VERJUikkKGJpbmRpcikgOyBcCi0rCQkgICQoSU5TVEFMTF9QUk9HUkFNKSBnY29yZSBcCi0rCQkJ ICAkKERFU1RESVIpJChiaW5kaXIpLyQkdHJhbnNmb3JtZWRfbmFtZTsgXAotKwlmaQotIAlAJChN QUtFKSBETz1pbnN0YWxsICJET0RJUlM9JChTVUJESVJTKSIgJChGTEFHU19UT19QQVNTKSBzdWJk aXJfZG8KLSAKLSBpbnN0YWxsLXB5dGhvbjoKLUBAIC0xMDU0LDYgKzEwNjgsMTcgQEAgdW5pbnN0 YWxsOiBmb3JjZSAkKENPTkZJR19VTklOU1RBTEwpCi0gCQlmaSA7IFwKLSAJCXJtIC1mICQoREVT VERJUikkKGJpbmRpcikvJCR0cmFuc2Zvcm1lZF9uYW1lJChFWEVFWFQpIFwKLSAJCSAgICAgICQo REVTVERJUikkKG1hbjFkaXIpLyQkdHJhbnNmb3JtZWRfbmFtZS4xCi0rCWlmIHRlc3QgIngkKEhB VkVfTkFUSVZFX0dDT1JFX1RBUkdFVCkkKEhBVkVfTkFUSVZFX0dDT1JFX0hPU1QpIiAhPSB4OyBc Ci0rCXRoZW4gXAotKwkgIHRyYW5zZm9ybWVkX25hbWU9YHQ9JyQocHJvZ3JhbV90cmFuc2Zvcm1f bmFtZSknOyBcCi0rCQkJICAgIGVjaG8gZ2NvcmUgfCBzZWQgLWUgIiQkdCJgIDsgXAotKwkJICBp ZiB0ZXN0ICJ4JCR0cmFuc2Zvcm1lZF9uYW1lIiA9IHg7IHRoZW4gXAotKwkJICAgIHRyYW5zZm9y bWVkX25hbWU9Z2NvcmUgOyBcCi0rCQkgIGVsc2UgXAotKwkJICAgIHRydWUgOyBcCi0rCQkgIGZp IDsgXAotKwkJICBybSAtZiAkKERFU1RESVIpJChiaW5kaXIpLyQkdHJhbnNmb3JtZWRfbmFtZTsg XAotKwlmaQotIAlAJChNQUtFKSBETz11bmluc3RhbGwgIkRPRElSUz0kKFNVQkRJUlMpIiAkKEZM QUdTX1RPX1BBU1MpIHN1YmRpcl9kbwotIAotICMgVGhlIEMrKyBuYW1lIHBhcnNlciBjYW4gYmUg YnVpbHQgc3RhbmRhbG9uZSBmb3IgdGVzdGluZy4KLUBAIC0xMjk4LDYgKzEzMjMsOSBAQCBkYXRh LWRpcmVjdG9yeS9NYWtlZmlsZTogZGF0YS1kaXJlY3RvcnkvCi0gaml0LXJlYWRlci5oOiAkKHNy Y2Rpcikvaml0LXJlYWRlci5pbgotIAkkKFNIRUxMKSBjb25maWcuc3RhdHVzICRACi0gCi0rZ2Nv cmU6ICQoc3JjZGlyKS9nY29yZS5pbgotKwkkKFNIRUxMKSBjb25maWcuc3RhdHVzICRACi0rCi0g Y29uZmlnLmg6IHN0YW1wLWggOyBAdHJ1ZQotIHN0YW1wLWg6ICQoc3JjZGlyKS9jb25maWcuaW4g Y29uZmlnLnN0YXR1cwotIAlDT05GSUdfSEVBREVSUz1jb25maWcuaDpjb25maWcuaW4gXAotSW5k ZXg6IGdkYi03LjYvZ2RiL05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL05F V1MJMjAxMy0wNC0yNiAxMzo0MzozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9O RVdTCTIwMTMtMDQtMjYgMTU6MzM6MTkuNzg0MDMyNDA0ICswMjAwCi1AQCAtMSw2ICsxLDkgQEAK LSAJCVdoYXQgaGFzIGNoYW5nZWQgaW4gR0RCPwotIAkgICAgIChPcmdhbml6ZWQgcmVsZWFzZSBi eSByZWxlYXNlKQotIAotKyogTmV3bHkgaW5zdGFsbGVkICRwcmVmaXgvYmluL2djb3JlIGFjdHMg YXMgYSBzaGVsbCBpbnRlcmZhY2UgZm9yIHRoZQotKyAgR0RCIGNvbW1hbmQgZ2NvcmUuCi0rCi0g KioqIENoYW5nZXMgaW4gR0RCIDcuNgotIAotICogVGFyZ2V0IHJlY29yZCBoYXMgYmVlbiByZW5h bWVkIHRvIHJlY29yZC1mdWxsLgotSW5kZXg6IGdkYi03LjYvZ2RiL2NvbmZpZ3VyZQotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvY29uZmlndXJlCTIwMTMtMDMtMTIgMjM6MjU6MzIu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNi9nZGIvY29uZmlndXJlCTIwMTMtMDQtMjYgMTU6 MzM6MDEuMTc5MDQ5MjQwICswMjAwCi1AQCAtNTkxLDYgKzU5MSw4IEBAIGFjX2luY2x1ZGVzX2Rl ZmF1bHQ9IlwKLSBlbmFibGVfb3B0aW9uX2NoZWNraW5nPW5vCi0gYWNfc3Vic3RfdmFycz0nTFRM SUJPQkpTCi0gTElCT0JKUwotK0dDT1JFX1RSQU5TRk9STV9OQU1FCi0rR0RCX1RSQU5TRk9STV9O QU1FCi0gR0RCX05NX0ZJTEUKLSBmcmFncwotIHRhcmdldF9zdWJkaXIKLUBAIC02ODEsNiArNjgz LDcgQEAgQVdLCi0gUkVQT1JUX0JVR1NfVEVYSQotIFJFUE9SVF9CVUdTX1RPCi0gUEtHVkVSU0lP TgotK0hBVkVfTkFUSVZFX0dDT1JFX1RBUkdFVAotIFRBUkdFVF9PQlMKLSBzdWJkaXJzCi0gR0RC X0RBVEFESVIKLUBAIC01MDc1LDYgKzUwNzgsNyBAQCBmaQotIAotIFRBUkdFVF9PQlM9Ci0gYWxs X3RhcmdldHM9Ci0rSEFWRV9OQVRJVkVfR0NPUkVfVEFSR0VUPQotIAotIGZvciB0YXJnX2FsaWFz IGluIGBlY2hvICR0YXJnZXRfYWxpYXMgJGVuYWJsZV90YXJnZXRzIHwgc2VkICdzLywvIC9nJ2AK LSBkbwotQEAgLTUxMDksNiArNTExMywxMiBAQCBmaQotICAgICBpZiB0ZXN0IHgke3dhbnQ2NH0g PSB4ZmFsc2U7IHRoZW4KLSAgICAgICAuICR7c3JjZGlyfS8uLi9iZmQvY29uZmlnLmJmZAotICAg ICBmaQotKwotKyAgICAjIENoZWNrIHdoZXRoZXIgdGhpcyB0YXJnZXQgaXMgbmF0aXZlIGFuZCBz dXBwb3J0cyBnY29yZS4KLSsgICAgaWYgdGVzdCAkZ2RiX25hdGl2ZSA9IHllcyAtYSAiJHRhcmdf YWxpYXMiID0gIiR0YXJnZXRfYWxpYXMiIFwKLSsgICAgICAgJiYgJGdkYl9oYXZlX2djb3JlOyB0 aGVuCi0rICAgICAgSEFWRV9OQVRJVkVfR0NPUkVfVEFSR0VUPTEKLSsgICAgZmkKLSAgIGZpCi0g ZG9uZQotIAotQEAgLTUxNzEsNiArNTE4MSw3IEBAIGZpCi0gCi0gCi0gCi0rCi0gIyBGb3Igb3Ro ZXIgc2V0dGluZ3MsIG9ubHkgdGhlIG1haW4gdGFyZ2V0IGNvdW50cy4KLSBnZGJfc2ltPQotIGdk Yl9vc2FiaT0KLUBAIC0xNDEzMSw2ICsxNDE0MiwyMSBAQCBhY19jb25maWdfbGlua3M9IiRhY19j b25maWdfbGlua3MgJGFjX2NvCi0gJGFzX2VjaG8gIiNkZWZpbmUgR0RCX0RFRkFVTFRfSE9TVF9D SEFSU0VUIFwiVVRGLThcIiIgPj5jb25mZGVmcy5oCi0gCi0gCi0rIyBVbmRvIHRoZSAkZWNfc2Ny aXB0IGVzY2FwaW5nIHN1aXRhYmxlIGZvciBNYWtlZmlsZS4KLSt0cmFuc2Zvcm09YGVjaG8gIiRw cm9ncmFtX3RyYW5zZm9ybV9uYW1lIiB8IHNlZCAtZSAncy9cXCRcXCQvXFwkL2cnYAotK0dEQl9U UkFOU0ZPUk1fTkFNRT1gZWNobyBnZGIgfCBzZWQgLWUgIiR0cmFuc2Zvcm0iYAotK2lmIHRlc3Qg IngkR0RCX1RSQU5TRk9STV9OQU1FIiA9IHg7IHRoZW4KLSsgIEdEQl9UUkFOU0ZPUk1fTkFNRT1n ZGIKLStmaQotKwotK0dDT1JFX1RSQU5TRk9STV9OQU1FPWBlY2hvIGdjb3JlIHwgc2VkIC1lICIk dHJhbnNmb3JtImAKLStpZiB0ZXN0ICJ4JEdDT1JFX1RSQU5TRk9STV9OQU1FIiA9IHg7IHRoZW4K LSsgIEdDT1JFX1RSQU5TRk9STV9OQU1FPWdjb3JlCi0rZmkKLSsKLSthY19jb25maWdfZmlsZXM9 IiRhY19jb25maWdfZmlsZXMgZ2NvcmUiCi0rCi0rCi0gYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29u ZmlnX2ZpbGVzIE1ha2VmaWxlIGdkYi1nZGIuZ2RiIGRvYy9NYWtlZmlsZSBkYXRhLWRpcmVjdG9y eS9NYWtlZmlsZSIKLSAKLSBhY19jb25maWdfY29tbWFuZHM9IiRhY19jb25maWdfY29tbWFuZHMg ZGVmYXVsdCIKLUBAIC0xNDg0MSw2ICsxNDg2Nyw3IEBAIGRvCi0gICAgICJkZXBkaXIiKSBDT05G SUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgZGVwZGlyIiA7OwotICAgICAiaml0LXJlYWRl ci5oIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGppdC1yZWFkZXIuaDpqaXQtcmVhZGVy LmluIiA7OwotICAgICAiJGFjX2NvbmZpZ19saW5rc18xIikgQ09ORklHX0xJTktTPSIkQ09ORklH X0xJTktTICRhY19jb25maWdfbGlua3NfMSIgOzsKLSsgICAgImdjb3JlIikgQ09ORklHX0ZJTEVT PSIkQ09ORklHX0ZJTEVTIGdjb3JlIiA7OwotICAgICAiTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9 IiRDT05GSUdfRklMRVMgTWFrZWZpbGUiIDs7Ci0gICAgICJnZGItZ2RiLmdkYiIpIENPTkZJR19G SUxFUz0iJENPTkZJR19GSUxFUyBnZGItZ2RiLmdkYiIgOzsKLSAgICAgImRvYy9NYWtlZmlsZSIp IENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBkb2MvTWFrZWZpbGUiIDs7Ci1AQCAtMTU0NjIs NiArMTU0ODksNyBAQCAkYXNfZWNobyAiJGFzX21lOiBleGVjdXRpbmcgJGFjX2ZpbGUgY29tCi0g Ci0gICBjYXNlICRhY19maWxlJGFjX21vZGUgaW4KLSAgICAgImRlcGRpciI6QykgJFNIRUxMICRh Y19hdXhfZGlyL21raW5zdGFsbGRpcnMgJERFUERJUiA7OwotKyAgICAiZ2NvcmUiOkYpIGNobW9k ICt4IGdjb3JlIDs7Ci0gICAgICJkZWZhdWx0IjpDKQotIGNhc2UgeCRDT05GSUdfSEVBREVSUyBp bgotIHhjb25maWcuaDpjb25maWcuaW4pCi1JbmRleDogZ2RiLTcuNi9nZGIvY29uZmlndXJlLmFj Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMy0wMy0x MiAyMzoyNTozMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9jb25maWd1cmUuYWMJ MjAxMy0wNC0yNiAxNTozMzowMS4xODAwNDkyMzkgKzAyMDAKLUBAIC0yMDMsNiArMjAzLDcgQEAg ZmkKLSAKLSBUQVJHRVRfT0JTPQotIGFsbF90YXJnZXRzPQotK0hBVkVfTkFUSVZFX0dDT1JFX1RB UkdFVD0KLSAKLSBmb3IgdGFyZ19hbGlhcyBpbiBgZWNobyAkdGFyZ2V0X2FsaWFzICRlbmFibGVf dGFyZ2V0cyB8IHNlZCAncy8sLyAvZydgCi0gZG8KLUBAIC0yMzYsNiArMjM3LDEyIEBAIGRvCi0g ICAgIGlmIHRlc3QgeCR7d2FudDY0fSA9IHhmYWxzZTsgdGhlbgotICAgICAgIC4gJHtzcmNkaXJ9 Ly4uL2JmZC9jb25maWcuYmZkCi0gICAgIGZpCi0rCi0rICAgICMgQ2hlY2sgd2hldGhlciB0aGlz IHRhcmdldCBpcyBuYXRpdmUgYW5kIHN1cHBvcnRzIGdjb3JlLgotKyAgICBpZiB0ZXN0ICRnZGJf bmF0aXZlID0geWVzIC1hICIkdGFyZ19hbGlhcyIgPSAiJHRhcmdldF9hbGlhcyIgXAotKyAgICAg ICAmJiAkZ2RiX2hhdmVfZ2NvcmU7IHRoZW4KLSsgICAgICBIQVZFX05BVElWRV9HQ09SRV9UQVJH RVQ9MQotKyAgICBmaQotICAgZmkKLSBkb25lCi0gCi1AQCAtMjY0LDYgKzI3MSw3IEBAIGlmIHRl c3QgeCR7YWxsX3RhcmdldHN9ID0geHRydWU7IHRoZW4KLSBmaQotIAotIEFDX1NVQlNUKFRBUkdF VF9PQlMpCi0rQUNfU1VCU1QoSEFWRV9OQVRJVkVfR0NPUkVfVEFSR0VUKQotIAotICMgRm9yIG90 aGVyIHNldHRpbmdzLCBvbmx5IHRoZSBtYWluIHRhcmdldCBjb3VudHMuCi0gZ2RiX3NpbT0KLUBA IC0yMzQ5LDYgKzIzNTcsMjAgQEAgZG5sICBBdCB0aGUgbW9tZW50LCB3ZSBqdXN0IGFzc3VtZSBp dCdzCi0gQUNfREVGSU5FKEdEQl9ERUZBVUxUX0hPU1RfQ0hBUlNFVCwgIlVURi04IiwKLSAgICAg ICAgICAgW0RlZmluZSB0byBiZSBhIHN0cmluZyBuYW1pbmcgdGhlIGRlZmF1bHQgaG9zdCBjaGFy YWN0ZXIgc2V0Ll0pCi0gCi0rIyBVbmRvIHRoZSAkZWNfc2NyaXB0IGVzY2FwaW5nIHN1aXRhYmxl IGZvciBNYWtlZmlsZS4KLSt0cmFuc2Zvcm09YGVjaG8gIiRwcm9ncmFtX3RyYW5zZm9ybV9uYW1l IiB8IHNlZCAtZSAncy9bXFwkXVtcXCRdL1xcJC9nJ2AKLStHREJfVFJBTlNGT1JNX05BTUU9YGVj aG8gZ2RiIHwgc2VkIC1lICIkdHJhbnNmb3JtImAKLStpZiB0ZXN0ICJ4JEdEQl9UUkFOU0ZPUk1f TkFNRSIgPSB4OyB0aGVuCi0rICBHREJfVFJBTlNGT1JNX05BTUU9Z2RiCi0rZmkKLStBQ19TVUJT VChHREJfVFJBTlNGT1JNX05BTUUpCi0rR0NPUkVfVFJBTlNGT1JNX05BTUU9YGVjaG8gZ2NvcmUg fCBzZWQgLWUgIiR0cmFuc2Zvcm0iYAotK2lmIHRlc3QgIngkR0NPUkVfVFJBTlNGT1JNX05BTUUi ID0geDsgdGhlbgotKyAgR0NPUkVfVFJBTlNGT1JNX05BTUU9Z2NvcmUKLStmaQotK0FDX1NVQlNU KEdDT1JFX1RSQU5TRk9STV9OQU1FKQotK0FDX0NPTkZJR19GSUxFUyhbZ2NvcmVdLCBbY2htb2Qg K3ggZ2NvcmVdKQotKwotIEFDX09VVFBVVChNYWtlZmlsZSBnZGItZ2RiLmdkYiBkb2MvTWFrZWZp bGUgZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUsCi0gWwotIGNhc2UgeCRDT05GSUdfSEVBREVSUyBp bgotSW5kZXg6IGdkYi03LjYvZ2RiL2NvbmZpZ3VyZS50Z3QKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny42Lm9yaWcvZ2RiL2NvbmZpZ3VyZS50Z3QJMjAxMy0wMy0wNSAxNDozNzoxMC4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy42L2dkYi9jb25maWd1cmUudGd0CTIwMTMtMDQtMjYgMTU6MzM6MDEu MTgwMDQ5MjM5ICswMjAwCi1AQCAtNiw2ICs2LDcgQEAKLSAjICBnZGJfc2ltCQlzaW11bGF0b3Ig bGlicmFyeSBmb3IgdGFyZ2V0Ci0gIyAgZ2RiX29zYWJpCQlkZWZhdWx0IE9TIEFCSSB0byB1c2Ug d2l0aCB0YXJnZXQKLSAjICBidWlsZF9nZGJzZXJ2ZXIJc2V0IHRvICJ5ZXMiIGlmIGdkYnNlcnZl ciBzdXBwb3J0cyB0YXJnZXQKLSsjICBnZGJfaGF2ZV9nY29yZQlzZXQgdG8gInRydWUiLyJmYWxz ZSIgaWYgdGhpcyB0YXJnZXQgY2FuIHJ1biBnY29yZQotIAotICMgTk9URTogRXZlcnkgZmlsZSBh ZGRlZCB0byBhIGdkYl90YXJnZXRfb2JzIHZhcmlhYmxlIGZvciBhbnkgdGFyZ2V0IGhlcmUKLSAj ICAgICAgIG11c3QgYWxzbyBiZSBhZGRlZCB0byBlaXRoZXIgQUxMX1RBUkdFVF9PQlMgb3IgQUxM XzY0X1RBUkdFVF9PQlMKLUBAIC03MDMsMyArNzA0LDE0IEBAIG02OCotKi1vcGVuYnNkKiB8IG04 OCotKi1vcGVuYnNkKiB8IHZheC0KLSAqLSotc3ltYmlhbmVsZiopCi0gCQlnZGJfb3NhYmk9R0RC X09TQUJJX1NZTUJJQU4gOzsKLSBlc2FjCi0rCi0rIyBDaGVjayB3aGV0aGVyIHRoaXMgdGFyZ2V0 IHN1cHBvcnRzIGdjb3JlLgotKyMgU3VjaCB0YXJnZXQgaGFzIHRvIGNhbGwgc2V0X2dkYmFyY2hf ZmluZF9tZW1vcnlfcmVnaW9ucy4KLStjYXNlICIgJHtnZGJfdGFyZ2V0X29ic30gIiBpbgotKyAg KiIgbGludXgtdGRlcC5vICIqKQotKyAgICBnZGJfaGF2ZV9nY29yZT10cnVlCi0rICAgIDs7Ci0r ICAqKQotKyAgICBnZGJfaGF2ZV9nY29yZT1mYWxzZQotKyAgICA7OwotK2VzYWMKLUluZGV4OiBn ZGItNy42L2dkYi9jb25maWcvYWxwaGEvYWxwaGEtb3NmMy5taAotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjYub3JpZy9nZGIvY29uZmlnL2FscGhhL2FscGhhLW9zZjMubWgJMjAxMi0wMS0xMCAxNzoz MDo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9jb25maWcvYWxwaGEvYWxwaGEt b3NmMy5taAkyMDEzLTA0LTI2IDE1OjMzOjAxLjE4MTA0OTIzOCArMDIwMAotQEAgLTMsNCArMyw1 IEBAIE5BVF9GSUxFPSBubS1vc2YzLmgKLSBOQVRERVBGSUxFUz0gYWxwaGEtbmF0Lm8gZm9yay1j aGlsZC5vIFwKLSAJc29saWItb3NmLm8gcHJvY2ZzLm8gcHJvYy1hcGkubyBwcm9jLWV2ZW50cy5v IHByb2MtZmxhZ3MubyBcCi0gCXByb2Mtd2h5Lm8gZGVjLXRocmVhZC5vCi0rSEFWRV9OQVRJVkVf R0NPUkVfSE9TVCA9IDEKLSBOQVRfQ0xJQlM9IC1scHRocmVhZGRlYnVnCi1JbmRleDogZ2RiLTcu Ni9nZGIvY29uZmlnL2kzODYvZmJzZC5taAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9n ZGIvY29uZmlnL2kzODYvZmJzZC5taAkyMDA5LTEwLTI2IDE5OjI4OjEzLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjYvZ2RiL2NvbmZpZy9pMzg2L2Zic2QubWgJMjAxMy0wNC0yNiAxNTozMzow MS4xODEwNDkyMzggKzAyMDAKLUBAIC0zLDUgKzMsNiBAQCBOQVRERVBGSUxFUz0gZm9yay1jaGls ZC5vIGluZi1wdHJhY2UubyBcCi0gCWZic2QtbmF0Lm8gaTM4Ni1uYXQubyBpMzg2YnNkLW5hdC5v IGkzODZmYnNkLW5hdC5vIFwKLSAJYnNkLWt2bS5vCi0gTkFUX0ZJTEU9IG5tLWZic2QuaAotK0hB VkVfTkFUSVZFX0dDT1JFX0hPU1QgPSAxCi0gCi0gTE9BRExJQkVTPSAtbGt2bQotSW5kZXg6IGdk Yi03LjYvZ2RiL2NvbmZpZy9pMzg2L2Zic2Q2NC5taAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYu b3JpZy9nZGIvY29uZmlnL2kzODYvZmJzZDY0Lm1oCTIwMTItMDItMDkgMTc6MDY6NDQuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNi9nZGIvY29uZmlnL2kzODYvZmJzZDY0Lm1oCTIwMTMtMDQt MjYgMTU6MzM6MDEuMTgxMDQ5MjM4ICswMjAwCi1AQCAtMiw1ICsyLDYgQEAKLSBOQVRERVBGSUxF Uz0gZm9yay1jaGlsZC5vIGluZi1wdHJhY2UubyBcCi0gCWZic2QtbmF0Lm8gYW1kNjQtbmF0Lm8g YW1kNjRic2QtbmF0Lm8gYW1kNjRmYnNkLW5hdC5vIFwKLSAJYnNkLWt2bS5vIGkzODYtbmF0Lm8K LStIQVZFX05BVElWRV9HQ09SRV9IT1NUID0gMQotIAotIExPQURMSUJFUz0gLWxrdm0KLUluZGV4 OiBnZGItNy42L2dkYi9jb25maWcvaTM4Ni9pMzg2Z251Lm1oCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNi5vcmlnL2dkYi9jb25maWcvaTM4Ni9pMzg2Z251Lm1oCTIwMTItMDEtMTAgMTc6MzA6NDQu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNi9nZGIvY29uZmlnL2kzODYvaTM4NmdudS5taAky MDEzLTA0LTI2IDE1OjMzOjAxLjE4MTA0OTIzOCArMDIwMAotQEAgLTIsNiArMiw3IEBACi0gTkFU REVQRklMRVM9IGkzODZnbnUtbmF0Lm8gZ251LW5hdC5vIGNvcmUtcmVnc2V0Lm8gZm9yay1jaGls ZC5vIFwKLSAJICAgICBub3RpZnlfUy5vIHByb2Nlc3NfcmVwbHlfUy5vIG1zZ19yZXBseV9TLm8g XAotIAkgICAgIG1zZ19VLm8gZXhjX3JlcXVlc3RfVS5vIGV4Y19yZXF1ZXN0X1MubwotK0hBVkVf TkFUSVZFX0dDT1JFX0hPU1QgPSAxCi0gCi0gTkFUX0ZJTEU9IG5tLWkzODZnbnUuaAotIE1IX0NG TEFHUyA9IC1EX0dOVV9TT1VSQ0UKLUluZGV4OiBnZGItNy42L2dkYi9jb25maWcvaTM4Ni9pMzg2 c29sMi5taAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvY29uZmlnL2kzODYvaTM4 NnNvbDIubWgJMjAxMC0wNC0yNiAxNTo1Mzo1Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy42 L2dkYi9jb25maWcvaTM4Ni9pMzg2c29sMi5taAkyMDEzLTA0LTI2IDE1OjMzOjAxLjE4MTA0OTIz OCArMDIwMAotQEAgLTEsMyArMSw0IEBACi0gIyBIb3N0OiBTb2xhcmlzIHg4NgotIE5BVERFUEZJ TEVTPSBmb3JrLWNoaWxkLm8gaTM4NnY0LW5hdC5vIGkzODYtc29sMi1uYXQubyBcCi0gCXByb2Nm cy5vIHByb2MtYXBpLm8gcHJvYy1ldmVudHMubyBwcm9jLWZsYWdzLm8gcHJvYy13aHkubwotK0hB VkVfTkFUSVZFX0dDT1JFX0hPU1QgPSAxCi1JbmRleDogZ2RiLTcuNi9nZGIvY29uZmlnL2kzODYv c29sMi02NC5taAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvY29uZmlnL2kzODYv c29sMi02NC5taAkyMDEwLTA0LTI2IDE1OjUzOjU3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjYvZ2RiL2NvbmZpZy9pMzg2L3NvbDItNjQubWgJMjAxMy0wNC0yNiAxNTozMzowMS4xODIwNDky MzcgKzAyMDAKLUBAIC0xLDMgKzEsNCBAQAotICMgSG9zdDogU29sYXJpcyB4ODZfNjQKLSBOQVRE RVBGSUxFUz0gZm9yay1jaGlsZC5vIGFtZDY0LW5hdC5vIGkzODZ2NC1uYXQubyBpMzg2LXNvbDIt bmF0Lm8gXAotIAlwcm9jZnMubyBwcm9jLWFwaS5vIHByb2MtZXZlbnRzLm8gcHJvYy1mbGFncy5v IHByb2Mtd2h5Lm8KLStIQVZFX05BVElWRV9HQ09SRV9IT1NUID0gMQotSW5kZXg6IGdkYi03LjYv Z2RiL2NvbmZpZy9taXBzL2lyaXg1Lm1oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dk Yi9jb25maWcvbWlwcy9pcml4NS5taAkyMDEyLTAxLTEwIDE3OjMwOjQ1LjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjYvZ2RiL2NvbmZpZy9taXBzL2lyaXg1Lm1oCTIwMTMtMDQtMjYgMTU6MzM6 MDEuMTgyMDQ5MjM3ICswMjAwCi1AQCAtMSwzICsxLDQgQEAKLSAjIEhvc3Q6IFNHSSBJcmlzIHJ1 bm5pbmcgaXJpeCA1LngKLSBOQVRERVBGSUxFUz0gZm9yay1jaGlsZC5vIGlyaXg1LW5hdC5vIHBy b2Nmcy5vIFwKLSAJcHJvYy1hcGkubyBwcm9jLWV2ZW50cy5vIHByb2MtZmxhZ3MubyBwcm9jLXdo eS5vCi0rSEFWRV9OQVRJVkVfR0NPUkVfSE9TVCA9IDEKLUluZGV4OiBnZGItNy42L2dkYi9jb25m aWcvbWlwcy9pcml4Ni5taAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvY29uZmln L21pcHMvaXJpeDYubWgJMjAxMi0wMS0xMCAxNzozMDo0NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy42L2dkYi9jb25maWcvbWlwcy9pcml4Ni5taAkyMDEzLTA0LTI2IDE1OjMzOjAxLjE4MjA0 OTIzNyArMDIwMAotQEAgLTEsMyArMSw0IEBACi0gIyBIb3N0OiBTR0kgSXJpcyBydW5uaW5nIGly aXggNi54Ci0gTkFUREVQRklMRVM9IGZvcmstY2hpbGQubyBpcml4NS1uYXQubyBwcm9jZnMubyBc Ci0gCXByb2MtYXBpLm8gcHJvYy1ldmVudHMubyBwcm9jLWZsYWdzLm8gcHJvYy13aHkubwotK0hB VkVfTkFUSVZFX0dDT1JFX0hPU1QgPSAxCi1JbmRleDogZ2RiLTcuNi9nZGIvY29uZmlnL3Bvd2Vy cGMvZmJzZC5taAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvY29uZmlnL3Bvd2Vy cGMvZmJzZC5taAkyMDEzLTAyLTA0IDIxOjQ4OjUzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjYvZ2RiL2NvbmZpZy9wb3dlcnBjL2Zic2QubWgJMjAxMy0wNC0yNiAxNTozMzowMS4xODIwNDky MzcgKzAyMDAKLUBAIC0xOCw2ICsxOCw3IEBACi0gIyAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotIE5B VERFUEZJTEVTPSBmYnNkLW5hdC5vIGZvcmstY2hpbGQubyBpbmYtcHRyYWNlLm8gcHBjZmJzZC1u YXQubyBic2Qta3ZtLm8KLStIQVZFX05BVElWRV9HQ09SRV9IT1NUID0gMQotIAotIExPQURMSUJF Uz0gLWxrdm0KLSAKLUluZGV4OiBnZGItNy42L2dkYi9jb25maWcvc3BhcmMvZmJzZC5taAotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvY29uZmlnL3NwYXJjL2Zic2QubWgJMjAwOS0x MC0yNiAxOToyODoxNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9jb25maWcvc3Bh cmMvZmJzZC5taAkyMDEzLTA0LTI2IDE1OjMzOjAxLjE4MjA0OTIzNyArMDIwMAotQEAgLTIsNSAr Miw2IEBACi0gTkFUREVQRklMRVM9IGZvcmstY2hpbGQubyBpbmYtcHRyYWNlLm8gXAotIAlmYnNk LW5hdC5vIHNwYXJjLW5hdC5vIHNwYXJjNjQtbmF0Lm8gc3BhcmM2NGZic2QtbmF0Lm8gXAotIAli c2Qta3ZtLm8KLStIQVZFX05BVElWRV9HQ09SRV9IT1NUID0gMQotIAotIExPQURMSUJFUz0gLWxr dm0KLUluZGV4OiBnZGItNy42L2dkYi9jb25maWcvc3BhcmMvc29sMi5taAotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjYub3JpZy9nZGIvY29uZmlnL3NwYXJjL3NvbDIubWgJMjAxMi0wMS0xMCAxNzoz MDo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9jb25maWcvc3BhcmMvc29sMi5t aAkyMDEzLTA0LTI2IDE1OjMzOjAxLjE4MjA0OTIzNyArMDIwMAotQEAgLTMsMyArMyw0IEBAIE5B VF9GSUxFPSBubS1zb2wyLmgKLSBOQVRERVBGSUxFUz0gc3BhcmMtc29sMi1uYXQubyBcCi0gCWNv cmUtcmVnc2V0Lm8gZm9yay1jaGlsZC5vIFwKLSAJcHJvY2ZzLm8gcHJvYy1hcGkubyBwcm9jLWV2 ZW50cy5vIHByb2MtZmxhZ3MubyBwcm9jLXdoeS5vCi0rSEFWRV9OQVRJVkVfR0NPUkVfSE9TVCA9 IDEKLUluZGV4OiBnZGItNy42L2dkYi9kb2MvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy42Lm9yaWcvZ2RiL2RvYy9NYWtlZmlsZS5pbgkyMDEzLTA0LTI2IDE1OjMyOjU4LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjYvZ2RiL2RvYy9NYWtlZmlsZS5pbgkyMDEzLTA0LTI2IDE1 OjMzOjAxLjE4MzA0OTIzNSArMDIwMAotQEAgLTE3NywxMSArMTc3LDE1IEBAIFBPRDJNQU41ID0g cG9kMm1hbiAtLWNlbnRlcj0iR05VIERldmVsb3AKLSAJCSAgIC0tcmVsZWFzZT0iZ2RiLWBzZWQg cSAkKHNyY2RpcikvLi4vdmVyc2lvbi5pbmAiIC0tc2VjdGlvbj01Ci0gCi0gIyBMaXN0IG9mIG1h biBwYWdlcyBnZW5lcmF0ZWQgZnJvbSBnZGIudGV4aQotLU1BTjFTID0gZ2RiLjEgZ2Ric2VydmVy LjEKLStNQU4xUyA9IGdkYi4xIGdkYnNlcnZlci4xIGdjb3JlLjEKLSBNQU41UyA9IGdkYmluaXQu NQotIE1BTlMgPSAkKE1BTjFTKSAkKE1BTjVTKQotIAotLSMjIyMgSG9zdCwgdGFyZ2V0LCBhbmQg c2l0ZSBzcGVjaWZpYyBNYWtlZmlsZSBmcmFnbWVudHMgY29tZSBpbiBoZXJlLgotKyMgSG9zdC1k ZXBlbmRlbnQgbWFrZWZpbGUgZnJhZ21lbnQgY29tZXMgaW4gaGVyZS4KLStAaG9zdF9tYWtlZmls ZV9mcmFnQAotKyMgRW5kIG9mIGhvc3QtZGVwZW5kZW50IG1ha2VmaWxlIGZyYWdtZW50Ci0rSEFW RV9OQVRJVkVfR0NPUkVfVEFSR0VUID0gQEhBVkVfTkFUSVZFX0dDT1JFX1RBUkdFVEAKLSsKLSAj IyMKLSAKLSBhbGw6Ci1AQCAtMjY5LDYgKzI3MywxMCBAQCBpbnN0YWxsLW1hbjogaW5zdGFsbC1t YW4xIGluc3RhbGwtbWFuNQotIGluc3RhbGwtbWFuMTogJChNQU4xUykKLSAJdGVzdCAteiAiJCht YW4xZGlyKSIgfHwgJChta2luc3RhbGxkaXJzKSAiJChERVNURElSKSQobWFuMWRpcikiCi0gCUBs aXN0PSckKE1BTjFTKSc7IGZvciBwIGluICQkbGlzdDsgZG8gXAotKwkgIGlmIHRlc3QgIngkKEhB VkVfTkFUSVZFX0dDT1JFX1RBUkdFVCkkKEhBVkVfTkFUSVZFX0dDT1JFX0hPU1QpIiA9IHggXAot KwkJICAtYSAiJCRwIiA9IGdjb3JlLjE7IHRoZW4gXAotKwkgICAgY29udGludWU7IFwKLSsJICBm aTsgXAotIAkgIGlmIHRlc3QgLWYgIiQkcCI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7 IGZpOyBcCi0gCSAgZj1gZWNobyAkJHAgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7IFwKLSAJICBlY2hv ICIgJChJTlNUQUxMX0RBVEEpICckJGQkJHAnICckKERFU1RESVIpJChtYW4xZGlyKS8kJGYnIjsg XAotQEAgLTI4OCw3ICsyOTYsMTMgQEAgdW5pbnN0YWxsLW1hbjogdW5pbnN0YWxsLW1hbjEgdW5p bnN0YWxsLQotIAotIHVuaW5zdGFsbC1tYW4xOgotIAlAdGVzdCAtbiAiJChtYW4xZGlyKSIgfHwg ZXhpdCAwOyBcCi0tCWZpbGVzPWB7IGwyPSckKE1BTjFTKSc7IGZvciBpIGluICQkbDI7IGRvIGVj aG8gIiQkaSI7IGRvbmUgfCBcCi0rCWZpbGVzPWB7IGwyPSckKE1BTjFTKSc7IGZvciBpIGluICQk bDI7IGRvIFwKLSsJICBpZiB0ZXN0ICJ4JChIQVZFX05BVElWRV9HQ09SRV9UQVJHRVQpJChIQVZF X05BVElWRV9HQ09SRV9IT1NUKSIgPSB4IFwKLSsJCSAgLWEgIiQkaSIgPSBnY29yZS4xOyB0aGVu IFwKLSsJICAgIGNvbnRpbnVlOyBcCi0rCSAgZmk7IFwKLSsJICBlY2hvICIkJGkiOyBcCi0rCWRv bmUgfCBcCi0gCSAgc2VkIC1uICcvXC4xW2Etel0qJCQvcCc7IFwKLSAJfSB8IHNlZCAtZSAncywu Ki8sLDtoO3MsLipcLiwsO3MsXlteMV1bMC05YS16XSokJCwxLDt4JyBcCi0gCSAgICAgIC1lICdz LFwuWzAtOWEtel0qJCQsLDskKHRyYW5zZm9ybSk7RztzLFxuLC4sJ2A7IFwKLUBAIC02MDUsNiAr NjE5LDEzIEBAIGdkYnNlcnZlci4xOiAkKEdEQl9ET0NfRklMRVMpCi0gCQltdiAtZiAkQC5UJCQk JCAkQCkgfHwgKHJtIC1mICRALlQkJCQkICYmIGV4aXQgMSkKLSAJcm0gLWYgZ2Ric2VydmVyLnBv ZAotIAotK2djb3JlLjE6ICQoR0RCX0RPQ19GSUxFUykKLSsJdG91Y2ggJEAKLSsJLSQoVEVYSTJQ T0QpICQoTUFOQ09ORikgLURnY29yZSA8ICQoc3JjZGlyKS9nZGIudGV4aW5mbyA+IGdjb3JlLnBv ZAotKwktKCQoUE9EMk1BTjEpIGdjb3JlLnBvZCB8IHNlZCAtZSAnL14uaWYgbiAubmEvZCcgPiAk QC5UJCQkJCAmJiBcCi0rCQltdiAtZiAkQC5UJCQkJCAkQCkgfHwgKHJtIC1mICRALlQkJCQkICYm IGV4aXQgMSkKLSsJcm0gLWYgZ2NvcmUucG9kCi0rCi0gZ2RiaW5pdC41OiAkKEdEQl9ET0NfRklM RVMpCi0gCXRvdWNoICRACi0gCS0kKFRFWEkyUE9EKSAkKE1BTkNPTkYpIC1EZ2RiaW5pdCA8ICQo c3JjZGlyKS9nZGIudGV4aW5mbyA+IGdkYmluaXQucG9kCi1JbmRleDogZ2RiLTcuNi9nZGIvZG9j L2dkYi50ZXhpbmZvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMy0wNC0yNiAxNTozMjo1OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy42L2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMy0wNC0yNiAxNTozMzowMS4xOTEwNDkyMjkgKzAyMDAKLUBA IC00MTcwOSw2ICs0MTcwOSw3IEBAIHN3aXRjaCAoZGllLT50YWcpCi0gQG1lbnUKLSAqIGdkYiBt YW46OiAgICAgICAgICAgICAgICAgICAgIFRoZSBHTlUgRGVidWdnZXIgbWFuIHBhZ2UKLSAqIGdk YnNlcnZlciBtYW46OiAgICAgICAgICAgICAgIFJlbW90ZSBTZXJ2ZXIgZm9yIHRoZSBHTlUgRGVi dWdnZXIgbWFuIHBhZ2UKLSsqIGdjb3JlIG1hbjo6ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRl IGEgY29yZSBmaWxlIG9mIGEgcnVubmluZyBwcm9ncmFtCi0gKiBnZGJpbml0IG1hbjo6ICAgICAg ICAgICAgICAgICBnZGJpbml0IHNjcmlwdHMKLSBAZW5kIG1lbnUKLSAKLUBAIC00MjIzMCw2ICs0 MjIzMSw1MyBAQCBpbmZvIGdkYgotIHNob3VsZCBnaXZlIHlvdSBhY2Nlc3MgdG8gdGhlIGNvbXBs ZXRlIG1hbnVhbC4KLSAKLSBAY2l0ZXtVc2luZyBHREI6IEEgR3VpZGUgdG8gdGhlIEdOVSBTb3Vy Y2UtTGV2ZWwgRGVidWdnZXJ9LAotK1JpY2hhcmQgTS4gU3RhbGxtYW4gYW5kIFJvbGFuZCBILiBQ ZXNjaCwgSnVseSAxOTkxLgotK0BlbmQgaWZzZXQKLStAYyBtYW4gZW5kCi0rCi0rQG5vZGUgZ2Nv cmUgbWFuCi0rQGhlYWRpbmcgZ2NvcmUKLSsKLStAYyBtYW4gdGl0bGUgZ2NvcmUgR2VuZXJhdGUg YSBjb3JlIGZpbGUgb2YgYSBydW5uaW5nIHByb2dyYW0KLSsKLStAZm9ybWF0Ci0rQGMgbWFuIGJl Z2luIFNZTk9QU0lTIGdjb3JlCi0rZ2NvcmUgWy1vIEB2YXJ7ZmlsZW5hbWV9XSBAdmFye3BpZH0K LStAYyBtYW4gZW5kCi0rQGVuZCBmb3JtYXQKLSsKLStAYyBtYW4gYmVnaW4gREVTQ1JJUFRJT04g Z2NvcmUKLStHZW5lcmF0ZSBhIGNvcmUgZHVtcCBvZiBhIHJ1bm5pbmcgcHJvZ3JhbSB3aXRoIHBy b2Nlc3MgSUQgQHZhcntwaWR9LgotK1Byb2R1Y2VkIGZpbGUgaXMgZXF1aXZhbGVudCB0byBhIGtl cm5lbCBwcm9kdWNlZCBjb3JlIGZpbGUgYXMgaWYgdGhlIHByb2Nlc3MKLStjcmFzaGVkIChhbmQg aWYgQGtiZHt1bGltaXQgLWN9IHdlcmUgdXNlZCB0byBzZXQgdXAgYW4gYXBwcm9wcmlhdGUgY29y ZSBkdW1wCi0rbGltaXQpLiAgVW5saWtlIGFmdGVyIGEgY3Jhc2gsIGFmdGVyIEBjb21tYW5ke2dj b3JlfSB0aGUgcHJvZ3JhbSByZW1haW5zCi0rcnVubmluZyB3aXRob3V0IGFueSBjaGFuZ2UuCi0r QGMgbWFuIGVuZAotKwotK0BjIG1hbiBiZWdpbiBPUFRJT05TIGdjb3JlCi0rQHRhYmxlIEBlbnYK LStAaXRlbSAtbyBAdmFye2ZpbGVuYW1lfQotK1RoZSBvcHRpb25hbCBhcmd1bWVudAotK0B2YXJ7 ZmlsZW5hbWV9IHNwZWNpZmllcyB0aGUgZmlsZSBuYW1lIHdoZXJlIHRvIHB1dCB0aGUgY29yZSBk dW1wLgotK0lmIG5vdCBzcGVjaWZpZWQsIHRoZSBmaWxlIG5hbWUgZGVmYXVsdHMgdG8gQGZpbGV7 Y29yZS5AdmFye3BpZH19LAotK3doZXJlIEB2YXJ7cGlkfSBpcyB0aGUgcnVubmluZyBwcm9ncmFt IHByb2Nlc3MgSUQuCi0rQGVuZCB0YWJsZQotK0BjIG1hbiBlbmQKLSsKLStAYyBtYW4gYmVnaW4g U0VFQUxTTyBnY29yZQotK0BpZnNldCBtYW4KLStUaGUgZnVsbCBkb2N1bWVudGF0aW9uIGZvciBA dmFsdWV7R0RCTn0gaXMgbWFpbnRhaW5lZCBhcyBhIFRleGluZm8gbWFudWFsLgotK0lmIHRoZSBA Y29kZXtpbmZvfSBhbmQgQGNvZGV7Z2RifSBwcm9ncmFtcyBhbmQgQHZhbHVle0dEQk59J3MgVGV4 aW5mbwotK2RvY3VtZW50YXRpb24gYXJlIHByb3Blcmx5IGluc3RhbGxlZCBhdCB5b3VyIHNpdGUs IHRoZSBjb21tYW5kCi0rCi0rQHNtYWxsZXhhbXBsZQotK2luZm8gZ2RiCi0rQGVuZCBzbWFsbGV4 YW1wbGUKLSsKLStAbm9pbmRlbnQKLStzaG91bGQgZ2l2ZSB5b3UgYWNjZXNzIHRvIHRoZSBjb21w bGV0ZSBtYW51YWwuCi0rCi0rQGNpdGV7VXNpbmcgR0RCOiBBIEd1aWRlIHRvIHRoZSBHTlUgU291 cmNlLUxldmVsIERlYnVnZ2VyfSwKLSBSaWNoYXJkIE0uIFN0YWxsbWFuIGFuZCBSb2xhbmQgSC4g UGVzY2gsIEp1bHkgMTk5MS4KLSBAZW5kIGlmc2V0Ci0gQGMgbWFuIGVuZAoKZGlmZiAtLWdpdCBh L2dkYi11cHN0cmVhbS1tYW4tZ2NvcmUtMm9mMi5wYXRjaCBiL2dkYi11cHN0cmVhbS1tYW4tZ2Nv cmUtMm9mMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThiNmNlMS4uMDAw MDAwMAotLS0gYS9nZGItdXBzdHJlYW0tbWFuLWdjb3JlLTJvZjIucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwzMyArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEz LTA0L21zZzAwMTEwLmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTMvMDQvMTEgMTQ6 MTM6NDIJMS4xNTM5OAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTMvMDQvMTEgMTY6NTM6MDEJ MS4xNTM5OQotIyMgLTIyLDYgKzIyLDkgQEAKLSAJKiBnY29yZS5pbjogLi4uIGhlcmUuICBSZW1v dmUgZ2NvcmUuc2ggY29tbWVudC4gIFVzZSBHREJfVFJBTlNGT1JNX05BTUUKLSAJYW5kIEdDT1JF X1RSQU5TRk9STV9OQU1FIHN1YnN0aXR1dGlvbnMuCi0gCi0rCUZpeCBwYXJzaW5nIHRhYnMgaW4g JHtnZGJfdGFyZ2V0X29ic30uCi0rCSogY29uZmlndXJlLnRndCAoZ2RiX2hhdmVfZ2NvcmUpOiBS ZXBsYWNlIGNhc2Ugd2l0aCBmb3IgYW5kIGlmLgotKwotIDIwMTMtMDQtMTEgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSAJKiByZW1vdGUuYyAodW5wdXNo X2FuZF9wZXJyb3IpOiBBZGQgb3V0cHV0IG1lc3NhZ2UgZmluYWwgZG90LgotLS0tIHNyYy9nZGIv Y29uZmlndXJlLnRndAkyMDEzLzA0LzExIDE0OjEzOjQzCTEuMjczCi0rKysgc3JjL2dkYi9jb25m aWd1cmUudGd0CTIwMTMvMDQvMTEgMTY6NTM6MDEJMS4yNzQKLUBAIC03MDcsMTEgKzcwNyw5IEBA Ci0gCi0gIyBDaGVjayB3aGV0aGVyIHRoaXMgdGFyZ2V0IHN1cHBvcnRzIGdjb3JlLgotICMgU3Vj aCB0YXJnZXQgaGFzIHRvIGNhbGwgc2V0X2dkYmFyY2hfZmluZF9tZW1vcnlfcmVnaW9ucy4KLS1j YXNlICIgJHtnZGJfdGFyZ2V0X29ic30gIiBpbgotLSAgKiIgbGludXgtdGRlcC5vICIqKQotK2dk Yl9oYXZlX2djb3JlPWZhbHNlCi0rZm9yIHQgaW4geCAke2dkYl90YXJnZXRfb2JzfTsgZG8KLSsg IGlmIHRlc3QgIiR0IiA9IGxpbnV4LXRkZXAubzsgdGhlbgotICAgICBnZGJfaGF2ZV9nY29yZT10 cnVlCi0tICAgIDs7Ci0tICAqKQotLSAgICBnZGJfaGF2ZV9nY29yZT1mYWxzZQotLSAgICA7Owot LWVzYWMKLSsgIGZpCi0rZG9uZQoKZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS5wYXRjaCBiL2dk Yi11cHN0cmVhbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ3NjY1Yy4u MDAwMDAwMAotLS0gYS9nZGItdXBzdHJlYW0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQz ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDQvbXNnMDAw NTYuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNC8wNSAxOToxNzoxNQkxLjE1 MzcwCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNC8wNSAyMDowMTozMgkxLjE1MzcxCi0j IyAtMSw1ICsxLDEyIEBACi0gMjAxMy0wNC0wNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotIAotKwlDb252ZXJ0IG1hbiBwYWdlcyB0byB0ZXhpbmZvLCBuZXcg Z2RiaW5pdC41IHRleGluZm8gcGFnZS4KLSsJKiBNYWtlZmlsZS5pbiAoZ2RiLnopOiBSZW1vdmUu Ci0rCShpbnN0YWxsLW9ubHkpOiBSZW1vdmUgJChtYW4xZGlyKSBhbmQgZ2RiLjEgaW5zdGFsbGF0 aW9uLgotKwkqIGdkYi4xOiBSZW1vdmUuCi0rCi0rMjAxMy0wNC0wNSAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotIAlGaXggY29tcGF0aWJpbGl0eSB3aXRo IExpbnV4IGtlcm5lbCAzLjguMy4KLSAJKiBsaW51eC10ZGVwLmMgKGxpbnV4X2ZpbmRfbWVtb3J5 X3JlZ2lvbnNfZnVsbCk6IE1vdmUgdmFyaWFibGUgbnVtYmVyCi0gCXRvIG1vcmUgaW5uZXIgYmxv Y2suICBSZW1vdmUgcGFyc2luZyBvZiBOVU1CRVIgZnJvbSBvdXRlciBibG9jay4KLS0tLSBzcmMv Z2RiL01ha2VmaWxlLmluCTIwMTMvMDQvMDUgMTM6MjQ6MjQJMS4xMjQ2Ci0rKysgc3JjL2dkYi9N YWtlZmlsZS5pbgkyMDEzLzA0LzA1IDIwOjAxOjMzCTEuMTI0NwotQEAgLTEwMTksMTEgKzEwMTks NiBAQAotIGluZm8gaW5zdGFsbC1pbmZvIGNsZWFuLWluZm8gZHZpIHBkZiBpbnN0YWxsLXBkZiBo dG1sIGluc3RhbGwtaHRtbDogZm9yY2UKLSAJQCQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBETz0k QCAiRE9ESVJTPSQoU1VCRElSUykiIHN1YmRpcl9kbwotIAotLWdkYi56OmdkYi4xCi0tCW5yb2Zm IC1tYW4gJChzcmNkaXIpL2dkYi4xIHwgY29sIC1iID4gZ2RiLnQKLS0JcGFjayBnZGIudCA7IHJt IC1mIGdkYi50Ci0tCW12IGdkYi50LnogZ2RiLnoKLS0KLSAjIFRyYWRpdGlvbmFsbHkgImluc3Rh bGwiIGRlcGVuZHMgb24gImFsbCIuICBCdXQgaXQgbWF5IGJlIHVzZWZ1bAotICMgbm90IHRvOyBm b3IgZXhhbXBsZSwgaWYgdGhlIHVzZXIgaGFzIG1hZGUgc29tZSB0cml2aWFsIGNoYW5nZSB0byBh Ci0gIyBzb3VyY2UgZmlsZSBhbmQgZG9lc24ndCBjYXJlIGFib3V0IHJlYnVpbGRpbmcgb3IganVz dCB3YW50cyB0byBzYXZlIHRoZQotQEAgLTEwNDMsMTAgKzEwMzgsNiBAQAotIAkJJChTSEVMTCkg JChzcmNkaXIpLy4uL21raW5zdGFsbGRpcnMgJChERVNURElSKSQoYmluZGlyKSA7IFwKLSAJCSQo SU5TVEFMTF9QUk9HUkFNKSBnZGIkKEVYRUVYVCkgXAotIAkJCSQoREVTVERJUikkKGJpbmRpcikv JCR0cmFuc2Zvcm1lZF9uYW1lJChFWEVFWFQpIDsgXAotLQkJJChTSEVMTCkgJChzcmNkaXIpLy4u L21raW5zdGFsbGRpcnMgXAotLQkJCSQoREVTVERJUikkKG1hbjFkaXIpIDsgXAotLQkJJChJTlNU QUxMX0RBVEEpICQoc3JjZGlyKS9nZGIuMSBcCi0tCQkJJChERVNURElSKSQobWFuMWRpcikvJCR0 cmFuc2Zvcm1lZF9uYW1lLjEgOyBcCi0gCQkkKFNIRUxMKSAkKHNyY2RpcikvLi4vbWtpbnN0YWxs ZGlycyAkKERFU1RESVIpJChpbmNsdWRlZGlyKS9nZGIgOyBcCi0gCQkkKElOU1RBTExfREFUQSkg aml0LXJlYWRlci5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpL2dkYi9qaXQtcmVhZGVyLmgKLSAJ QCQoTUFLRSkgRE89aW5zdGFsbCAiRE9ESVJTPSQoU1VCRElSUykiICQoRkxBR1NfVE9fUEFTUykg c3ViZGlyX2RvCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDQvMDIgMTc6NTI6MDgJ MS4xNDMyCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDQvMDUgMjA6MDE6MzMJMS4x NDMzCi0jIyAtMSwzICsxLDIyIEBACi0rMjAxMy0wNC0wNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwlDb252ZXJ0IG1hbiBwYWdlcyB0byB0ZXhpbmZv LCBuZXcgZ2RiaW5pdC41IHRleGluZm8gcGFnZS4KLSsJKiBNYWtlZmlsZS5pbiAobWFuZGlyLCBt YW4xZGlyLCBtYW41ZGlyLCBTWVNURU1fR0RCSU5JVCwgTUFOQ09ORiwKLSsJKFRFWEkyUE9ELCBQ T0QyTUFOMSwgUE9EMk1BTjUsIE1BTjFTLCBNQU41UywgTUFOUywgbWFuKTogTmV3LgotKwkoZGlz dHN0dWZmKTogQWRkIG1hbi4KLSsJKGluc3RhbGwtbWFuLCBpbnN0YWxsLW1hbjEsIGluc3RhbGwt bWFuNSwgdW5pbnN0YWxsLW1hbiwgdW5pbnN0YWxsLW1hbjEpCi0rCSh1bmluc3RhbGwtbWFuNSk6 IE5ldy4KLSsJKFNUQUdFU1RVRkYpOiBBZGQgKi4xIGFuZCAqLjUuCi0rCShHREJ2bi50ZXhpKTog QWRkIFNZU1RFTV9HREJJTklULgotKwkoZ2RiLjEsIGdkYnNlcnZlci4xLCBnZGJpbml0LjUpOiBO ZXcuCi0rCShtYWludGFpbmVyLWNsZWFuIHJlYWxjbGVhbik6IEFkZCAkKE1BTlMpLgotKwkoaW5z dGFsbCk6IEFkZCBpbnN0YWxsLW1hbi4KLSsJKHVuaW5zdGFsbCk6IEFkZCB1bmluc3RhbGwtbWFu LgotKwkqIGdkYi50ZXhpbmZvIChAaW5jbHVkZSBnZGItY2ZnLnRleGkpOiBXcmFwIGl0IGJ5IEBj IG1hbiBiZWdpbiBJTkNMVURFLgotKwkoQGNvcHlpbmcpOiBXcmFwIGl0IGJ5IEBjIG1hbiBiZWdp biBDT1BZUklHSFQuCi0rCShUb3ApOiBBZGQgTWFuIFBhZ2VzLgotKwkoTWFuIFBhZ2VzLCBnZGIg bWFuLCBnZGJzZXJ2ZXIgbWFuLCBnZGJpbml0IG1hbik6IE5ldy4KLSsKLSAyMDEzLTA0LTAyICBQ ZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgotIAotIAkqIGdkYi50ZXhpbmZvIChEZWJ1 Z2dpbmcgT3V0cHV0KTogRG9jdW1lbnQgInNldC9zaG93IGRlYnVnCi0tLS0gc3JjL2dkYi9kb2Mv TWFrZWZpbGUuaW4JMjAxMy8wMS8wMSAwNjozMjo1NgkxLjU3Ci0rKysgc3JjL2dkYi9kb2MvTWFr ZWZpbGUuaW4JMjAxMy8wNC8wNSAyMDowMTozMwkxLjU4Ci1AQCAtMjYsNiArMjYsOSBAQAotIGRv Y2RpciA9IEBkb2NkaXJACi0gcGRmZGlyID0gQHBkZmRpckAKLSBodG1sZGlyID0gQGh0bWxkaXJA Ci0rbWFuZGlyID0gQG1hbmRpckAKLSttYW4xZGlyID0gJChtYW5kaXIpL21hbjEKLSttYW41ZGly ID0gJChtYW5kaXIpL21hbjUKLSAKLSBTSEVMTCA9IEBTSEVMTEAKLSAKLUBAIC0zNSw2ICszOCw4 IEBACi0gSU5TVEFMTF9QUk9HUkFNID0gQElOU1RBTExfUFJPR1JBTUAKLSBJTlNUQUxMX0RBVEEg PSBASU5TVEFMTF9EQVRBQAotIAotK1NZU1RFTV9HREJJTklUID0gQFNZU1RFTV9HREJJTklUQAot KwotIG1raW5zdGFsbGRpcnMgPSAkKFNIRUxMKSAkKHNyY2RpcikvLi4vLi4vbWtpbnN0YWxsZGly cwotIAotICMgbWFpbiBHREIgc291cmNlIGRpcmVjdG9yeQotQEAgLTE2MCw2ICsxNjUsMjIgQEAK LSAJJChBTk5PVEFURV9ET0NfU09VUkNFX0lOQ0xVREVTKSBcCi0gCSQoQU5OT1RBVEVfRE9DX0JV SUxEX0lOQ0xVREVTKQotIAotKyMgT3B0aW9ucyB0byBleHRyYWN0IHRoZSBtYW4gcGFnZSBmcm9t IGdkYi50ZXhpbmZvCi0rTUFOQ09ORiA9IC1EbWFuCi0rCi0rVEVYSTJQT0QgPSBwZXJsICQoc3Jj ZGlyKS8uLi8uLi9ldGMvdGV4aTJwb2QucGwgXAotKwkJJChNQUtFSU5GT0ZMQUdTKSAkKE1BS0VJ TkZPX0VYVFJBX0ZMQUdTKQotKwotK1BPRDJNQU4xID0gcG9kMm1hbiAtLWNlbnRlcj0iR05VIERl dmVsb3BtZW50IFRvb2xzIiBcCi0rCQkgICAtLXJlbGVhc2U9ImdkYi0kKFZFUlNJT04pIiAtLXNl Y3Rpb249MQotK1BPRDJNQU41ID0gcG9kMm1hbiAtLWNlbnRlcj0iR05VIERldmVsb3BtZW50IFRv b2xzIiBcCi0rCQkgICAtLXJlbGVhc2U9ImdkYi0kKFZFUlNJT04pIiAtLXNlY3Rpb249NQotKwot KyMgTGlzdCBvZiBtYW4gcGFnZXMgZ2VuZXJhdGVkIGZyb20gZ2RiLnRleGkKLStNQU4xUyA9IGdk Yi4xIGdkYnNlcnZlci4xCi0rTUFONVMgPSBnZGJpbml0LjUKLStNQU5TID0gJChNQU4xUykgJChN QU41UykKLSsKLSAjIyMjIEhvc3QsIHRhcmdldCwgYW5kIHNpdGUgc3BlY2lmaWMgTWFrZWZpbGUg ZnJhZ21lbnRzIGNvbWUgaW4gaGVyZS4KLSAjIyMKLSAKLUBAIC0xNzAsOCArMTkxLDkgQEAKLSBw czogZ2RiLnBzIGdkYmludC5wcyBzdGFicy5wcyByZWZjYXJkLnBzIGFubm90YXRlLnBzCi0gaHRt bDogJChIVE1MRklMRVMpCi0gcGRmOiAkKFBERkZJTEVTKQotK21hbjogJChNQU5TKQotIGFsbC1k b2M6IGluZm8gZHZpIHBzICMgcGRmCi0tZGlzdHN0dWZmOiBpbmZvCi0rZGlzdHN0dWZmOiBpbmZv IG1hbgotIAlybSAtZiBnZGItY2ZnLnRleGkgR0RCdm4udGV4aQotIAotIGluc3RhbGwtaW5mbzog JChJTkZPX0RFUFMpCi1AQCAtMjQyLDcgKzI2NCw0OSBAQAotIAkgICQoSU5TVEFMTF9EQVRBKSAi JCRkJCRwIiAiJChERVNURElSKSQocGRmZGlyKS8kJGYiOyBcCi0gCWRvbmUKLSAKLS1TVEFHRVNU VUZGID0gKi5pbmZvKiBnZGItYWxsLnRleGkgR0RCdm4udGV4aSAqLnBzICouZHZpICoucGRmCi0r aW5zdGFsbC1tYW46IGluc3RhbGwtbWFuMSBpbnN0YWxsLW1hbjUKLSsKLStpbnN0YWxsLW1hbjE6 ICQoTUFOMVMpCi0rCXRlc3QgLXogIiQobWFuMWRpcikiIHx8ICQobWtpbnN0YWxsZGlycykgIiQo REVTVERJUikkKG1hbjFkaXIpIgotKwlAbGlzdD0nJChNQU5TKSc7IGZvciBwIGluICQkbGlzdDsg ZG8gXAotKwkgIGlmIHRlc3QgLWYgIiQkcCI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7 IGZpOyBcCi0rCSAgZj1gZWNobyAkJHAgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7IFwKLSsJICBlY2hv ICIgJChJTlNUQUxMX0RBVEEpICckJGQkJHAnICckKERFU1RESVIpJChtYW4xZGlyKS8kJGYnIjsg XAotKwkgICQoSU5TVEFMTF9EQVRBKSAiJCRkJCRwIiAiJChERVNURElSKSQobWFuMWRpcikvJCRm IjsgXAotKwlkb25lCi0rCi0raW5zdGFsbC1tYW41OiAkKE1BTjVTKQotKwl0ZXN0IC16ICIkKG1h bjVkaXIpIiB8fCAkKG1raW5zdGFsbGRpcnMpICIkKERFU1RESVIpJChtYW41ZGlyKSIKLSsJQGxp c3Q9JyQoTUFOUyknOyBmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKLSsJICBpZiB0ZXN0IC1mICIkJHAi OyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAotKwkgIGY9YGVjaG8gJCRwIHwg c2VkIC1lICdzfF4uKi98fCdgOyBcCi0rCSAgZWNobyAiICQoSU5TVEFMTF9EQVRBKSAnJCRkJCRw JyAnJChERVNURElSKSQobWFuNWRpcikvJCRmJyI7IFwKLSsJICAkKElOU1RBTExfREFUQSkgIiQk ZCQkcCIgIiQoREVTVERJUikkKG1hbjVkaXIpLyQkZiI7IFwKLSsJZG9uZQotKwotK3VuaW5zdGFs bC1tYW46IHVuaW5zdGFsbC1tYW4xIHVuaW5zdGFsbC1tYW41Ci0rCi0rdW5pbnN0YWxsLW1hbjE6 Ci0rCUB0ZXN0IC1uICIkKG1hbjFkaXIpIiB8fCBleGl0IDA7IFwKLSsJZmlsZXM9YHsgbDI9JyQo TUFOUyknOyBmb3IgaSBpbiAkJGwyOyBkbyBlY2hvICIkJGkiOyBkb25lIHwgXAotKwkgIHNlZCAt biAnL1wuMVthLXpdKiQkL3AnOyBcCi0rCX0gfCBzZWQgLWUgJ3MsLiovLCw7aDtzLC4qXC4sLDtz LF5bXjFdWzAtOWEtel0qJCQsMSw7eCcgXAotKwkgICAgICAtZSAncyxcLlswLTlhLXpdKiQkLCw7 JCh0cmFuc2Zvcm0pO0c7cyxcbiwuLCdgOyBcCi0rCXRlc3QgLXogIiQkZmlsZXMiIHx8IHsgXAot KwkgIGVjaG8gIiAoIGNkICckKERFU1RESVIpJChtYW4xZGlyKScgJiYgcm0gLWYiICQkZmlsZXMg IikiOyBcCi0rCSAgY2QgIiQoREVTVERJUikkKG1hbjFkaXIpIiAmJiBybSAtZiAkJGZpbGVzOyB9 Ci0rCi0rdW5pbnN0YWxsLW1hbjU6Ci0rCUB0ZXN0IC1uICIkKG1hbjVkaXIpIiB8fCBleGl0IDA7 IFwKLSsJZmlsZXM9YHsgbDI9JyQoTUFOUyknOyBmb3IgaSBpbiAkJGwyOyBkbyBlY2hvICIkJGki OyBkb25lIHwgXAotKwkgIHNlZCAtbiAnL1wuNVthLXpdKiQkL3AnOyBcCi0rCX0gfCBzZWQgLWUg J3MsLiovLCw7aDtzLC4qXC4sLDtzLF5bXjVdWzAtOWEtel0qJCQsNSw7eCcgXAotKwkgICAgICAt ZSAncyxcLlswLTlhLXpdKiQkLCw7JCh0cmFuc2Zvcm0pO0c7cyxcbiwuLCdgOyBcCi0rCXRlc3Qg LXogIiQkZmlsZXMiIHx8IHsgXAotKwkgIGVjaG8gIiAoIGNkICckKERFU1RESVIpJChtYW41ZGly KScgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCi0rCSAgY2QgIiQoREVTVERJUikkKG1hbjVkaXIp IiAmJiBybSAtZiAkJGZpbGVzOyB9Ci0rCi0rU1RBR0VTVFVGRiA9ICouaW5mbyogZ2RiLWFsbC50 ZXhpIEdEQnZuLnRleGkgKi5wcyAqLmR2aSAqLnBkZiAqLjEgKi41Ci0gCi0gIyBDb3B5IHRoZSBv YmplY3QgZmlsZXMgZnJvbSBhIHBhcnRpY3VsYXIgc3RhZ2UgaW50byBhIHN1YmRpcmVjdG9yeS4K LSBzdGFnZTE6IGZvcmNlCi1AQCAtMzEzLDYgKzM3Nyw5IEBACi0gCWlmIHRlc3QgLXogIiQoUkVB RExJTkVfVEVYSV9JTkNGTEFHKSI7IHRoZW4gXAotIAkgIGVjaG8gIkBzZXQgU1lTVEVNX1JFQURM SU5FIiA+PiAuL0dEQnZuLm5ldzsgXAotIAlmaQotKwlpZiBbIC1uICIkKFNZU1RFTV9HREJJTklU KSIgXTsgdGhlbiBcCi0rCSAgZWNobyAiQHNldCBTWVNURU1fR0RCSU5JVCAkKFNZU1RFTV9HREJJ TklUKSIgPj4gLi9HREJ2bi5uZXc7IFwKLSsJZmkKLSAJbXYgR0RCdm4ubmV3IEdEQnZuLnRleGkK LSAKLSAjIFVwZGF0ZWQgYXRvbWljYWxseQotQEAgLTUyMyw2ICs1OTAsMjggQEAKLSBhbm5vdGF0 ZS9pbmRleC5odG1sOiAkKEFOTk9UQVRFX0RPQ19GSUxFUykKLSAJJChNQUtFSFRNTCkgJChNQUtF SFRNTEZMQUdTKSAtSSAkKHNyY2RpcikgJChzcmNkaXIpL2Fubm90YXRlLnRleGluZm8KLSAKLSsj IE1hbiBwYWdlcwotK2dkYi4xOiAkKEdEQl9ET0NfRklMRVMpCi0rCXRvdWNoICRACi0rCS0kKFRF WEkyUE9EKSAkKE1BTkNPTkYpIC1EZ2RiIDwgZ2RiLnRleGluZm8gPiBnZGIucG9kCi0rCS0oJChQ T0QyTUFOMSkgZ2RiLnBvZCB8IHNlZCAtZSAnL14uaWYgbiAubmEvZCcgPiAkQC5UJCQkJCAmJiBc Ci0rCQltdiAtZiAkQC5UJCQkJCAkQCkgfHwgKHJtIC1mICRALlQkJCQkICYmIGV4aXQgMSkKLSsJ cm0gLWYgZ2RiLnBvZAotKwotK2dkYnNlcnZlci4xOiAkKEdEQl9ET0NfRklMRVMpCi0rCXRvdWNo ICRACi0rCS0kKFRFWEkyUE9EKSAkKE1BTkNPTkYpIC1EZ2Ric2VydmVyIDwgZ2RiLnRleGluZm8g PiBnZGJzZXJ2ZXIucG9kCi0rCS0oJChQT0QyTUFOMSkgZ2Ric2VydmVyLnBvZCB8IHNlZCAtZSAn L14uaWYgbiAubmEvZCcgPiAkQC5UJCQkJCAmJiBcCi0rCQltdiAtZiAkQC5UJCQkJCAkQCkgfHwg KHJtIC1mICRALlQkJCQkICYmIGV4aXQgMSkKLSsJcm0gLWYgZ2Ric2VydmVyLnBvZAotKwotK2dk YmluaXQuNTogJChHREJfRE9DX0ZJTEVTKQotKwl0b3VjaCAkQAotKwktJChURVhJMlBPRCkgJChN QU5DT05GKSAtRGdkYmluaXQgPCBnZGIudGV4aW5mbyA+IGdkYmluaXQucG9kCi0rCS0oJChQT0Qy TUFONSkgZ2RiaW5pdC5wb2QgfCBzZWQgLWUgJy9eLmlmIG4gLm5hL2QnID4gJEAuVCQkJCQgJiYg XAotKwkJbXYgLWYgJEAuVCQkJCQgJEApIHx8IChybSAtZiAkQC5UJCQkJCAmJiBleGl0IDEpCi0r CXJtIC1mIGdkYmluaXQucG9kCi0rCi0gZm9yY2U6Ci0gCi0gTWFrZWZpbGU6IE1ha2VmaWxlLmlu ICQoaG9zdF9tYWtlZmlsZV9mcmFnKSAuLi9jb25maWcuc3RhdHVzCi1AQCAtNTUxLDggKzY0MCw4 IEBACi0gIyAiY2xlYW4iIG9yICJkaXN0Y2xlYW4iLiAgVXNlIG1haW50YWluZXItY2xlYW4gdG8g cmVtb3ZlIHRoZW0uCi0gCi0gbWFpbnRhaW5lci1jbGVhbiByZWFsY2xlYW46IGRpc3RjbGVhbgot LQlybSAtZiBHREJ2bi50ZXhpICouaW5mbyogKi5kdmkgKi5wcyAqLmh0bWwgKi5wZGYKLSsJcm0g LWYgR0RCdm4udGV4aSAqLmluZm8qICouZHZpICoucHMgKi5odG1sICoucGRmICQoTUFOUykKLSAK LS1pbnN0YWxsOiBpbnN0YWxsLWluZm8KLStpbnN0YWxsOiBpbnN0YWxsLWluZm8gaW5zdGFsbC1t YW4KLSAKLS11bmluc3RhbGw6IHVuaW5zdGFsbC1pbmZvCi0rdW5pbnN0YWxsOiB1bmluc3RhbGwt aW5mbyB1bmluc3RhbGwtbWFuCi0tLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMy8wNC8w MiAxNzo1MjowOAkxLjEwNjkKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEzLzA0LzA1 IDIwOjAxOjMzCTEuMTA3MAotQEAgLTYsNyArNiw5IEBACi0gQGMgb2YgQHNldCB2YXJzLiAgSG93 ZXZlciwgeW91IGNhbiBvdmVycmlkZSBmaWxlbmFtZSB3aXRoIG1ha2VpbmZvIC1vLgotIEBzZXRm aWxlbmFtZSBnZGIuaW5mbwotIEBjCi0rQGMgbWFuIGJlZ2luIElOQ0xVREUKLSBAaW5jbHVkZSBn ZGItY2ZnLnRleGkKLStAYyBtYW4gZW5kCi0gQGMKLSBAc2V0dGl0bGUgRGVidWdnaW5nIHdpdGgg QHZhbHVle0dEQk59Ci0gQHNldGNoYXB0ZXJuZXdwYWdlIG9kZAotQEAgLTQ2LDYgKzQ4LDcgQEAK LSBAZW5kIGRpcmVudHJ5Ci0gCi0gQGNvcHlpbmcKLStAYyBtYW4gYmVnaW4gQ09QWVJJR0hUCi0g Q29weXJpZ2h0IEBjb3B5cmlnaHR7fSAxOTg4LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0gCi0gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5k L29yIG1vZGlmeSB0aGlzIGRvY3VtZW50Ci1AQCAtNTgsNiArNjEsNyBAQAotIChhKSBUaGUgRlNG J3MgQmFjay1Db3ZlciBUZXh0IGlzOiBgYFlvdSBhcmUgZnJlZSB0byBjb3B5IGFuZCBtb2RpZnkK LSB0aGlzIEdOVSBNYW51YWwuICBCdXlpbmcgY29waWVzIGZyb20gR05VIFByZXNzIHN1cHBvcnRz IHRoZSBGU0YgaW4KLSBkZXZlbG9waW5nIEdOVSBhbmQgcHJvbW90aW5nIHNvZnR3YXJlIGZyZWVk b20uJycKLStAYyBtYW4gZW5kCi0gQGVuZCBjb3B5aW5nCi0gCi0gQGlmbm90dGV4Ci1AQCAtMTc5 LDYgKzE4Myw3IEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG9wZXJh dGluZyBzeXN0ZW0KLSAqIFRyYWNlIEZpbGUgRm9ybWF0OjoJCUdEQiB0cmFjZSBmaWxlIGZvcm1h dAotICogSW5kZXggU2VjdGlvbiBGb3JtYXQ6OiAgICAgICAgLmdkYl9pbmRleCBzZWN0aW9uIGZv cm1hdAotKyogTWFuIFBhZ2VzOjoJCQlNYW51YWwgcGFnZXMKLSAqIENvcHlpbmc6OgkJCUdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHNheXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGhvdyB5b3UgY2FuIGNvcHkgYW5kIHNoYXJlIEdEQgotICogR05VIEZyZWUgRG9jdW1lbnRh dGlvbiBMaWNlbnNlOjogIFRoZSBsaWNlbnNlIGZvciB0aGlzIGRvY3VtZW50YXRpb24KLUBAIC00 MTU5Nyw2ICs0MTYwMiw0OTcgQEAKLSAgIEB9Ci0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLStAbm9k ZSBNYW4gUGFnZXMKLStAYXBwZW5kaXggTWFudWFsIHBhZ2VzCi0rQGNpbmRleCBNYW4gcGFnZXMK LSsKLStAbWVudQotKyogZ2RiIG1hbjo6ICAgICAgICAgICAgICAgICAgICAgVGhlIEdOVSBEZWJ1 Z2dlciBtYW4gcGFnZQotKyogZ2Ric2VydmVyIG1hbjo6ICAgICAgICAgICAgICAgUmVtb3RlIFNl cnZlciBmb3IgdGhlIEdOVSBEZWJ1Z2dlciBtYW4gcGFnZQotKyogZ2RiaW5pdCBtYW46OiAgICAg ICAgICAgICAgICAgZ2RiaW5pdCBzY3JpcHRzCi0rQGVuZCBtZW51Ci0rCi0rQG5vZGUgZ2RiIG1h bgotK0BoZWFkaW5nIGdkYiBtYW4KLSsKLStAYyBtYW4gdGl0bGUgZ2RiIFRoZSBHTlUgRGVidWdn ZXIKLSsKLStAYyBtYW4gYmVnaW4gU1lOT1BTSVMgZ2RiCi0rZ2RiIFtAb3B0aW9uey1oZWxwfV0g W0BvcHRpb257LW5ofV0gW0BvcHRpb257LW54fV0gW0BvcHRpb257LXF9XQotK1tAb3B0aW9uey1i YXRjaH1dIFtAb3B0aW9uey1jZD19QHZhcntkaXJ9XSBbQG9wdGlvbnstZn1dCi0rW0BvcHRpb257 LWJ9QHd7IH1AdmFye2Jwc31dCi0rICAgIFtAb3B0aW9uey10dHk9fUB2YXJ7ZGV2fV0gW0BvcHRp b257LXN9IEB2YXJ7c3ltZmlsZX1dCi0rW0BvcHRpb257LWV9QHd7IH1AdmFye3Byb2d9XSBbQG9w dGlvbnstc2V9QHd7IH1AdmFye3Byb2d9XQotK1tAb3B0aW9uey1jfUB3eyB9QHZhcntjb3JlfV0g W0BvcHRpb257LXh9QHd7IH1AdmFye2NtZHN9XQotKyAgICBbQG9wdGlvbnstZH1Ad3sgfUB2YXJ7 ZGlyfV0gW0B2YXJ7cHJvZ318QHZhcntjb3JlfXxAdmFye3Byb2NJRH1dCi0rQGMgbWFuIGVuZAot KwotK0BjIG1hbiBiZWdpbiBERVNDUklQVElPTiBnZGIKLStUaGUgcHVycG9zZSBvZiBhIGRlYnVn Z2VyIHN1Y2ggYXMgQHZhbHVle0dEQk59IGlzIHRvIGFsbG93IHlvdSB0byBzZWUgd2hhdCBpcwot K2dvaW5nIG9uIGBgaW5zaWRlJycgYW5vdGhlciBwcm9ncmFtIHdoaWxlIGl0IGV4ZWN1dGVzIC0t IG9yIHdoYXQgYW5vdGhlcgotK3Byb2dyYW0gd2FzIGRvaW5nIGF0IHRoZSBtb21lbnQgaXQgY3Jh c2hlZC4KLSsKLStAdmFsdWV7R0RCTn0gY2FuIGRvIGZvdXIgbWFpbiBraW5kcyBvZiB0aGluZ3Mg KHBsdXMgb3RoZXIgdGhpbmdzIGluIHN1cHBvcnQgb2YKLSt0aGVzZSkgdG8gaGVscCB5b3UgY2F0 Y2ggYnVncyBpbiB0aGUgYWN0OgotKwotK0BpdGVtaXplIEBidWxsZXQKLStAaXRlbQotK1N0YXJ0 IHlvdXIgcHJvZ3JhbSwgc3BlY2lmeWluZyBhbnl0aGluZyB0aGF0IG1pZ2h0IGFmZmVjdCBpdHMg YmVoYXZpb3IuCi0rCi0rQGl0ZW0KLStNYWtlIHlvdXIgcHJvZ3JhbSBzdG9wIG9uIHNwZWNpZmll ZCBjb25kaXRpb25zLgotKwotK0BpdGVtCi0rRXhhbWluZSB3aGF0IGhhcyBoYXBwZW5lZCwgd2hl biB5b3VyIHByb2dyYW0gaGFzIHN0b3BwZWQuCi0rCi0rQGl0ZW0KLStDaGFuZ2UgdGhpbmdzIGlu IHlvdXIgcHJvZ3JhbSwgc28geW91IGNhbiBleHBlcmltZW50IHdpdGggY29ycmVjdGluZyB0aGUK LStlZmZlY3RzIG9mIG9uZSBidWcgYW5kIGdvIG9uIHRvIGxlYXJuIGFib3V0IGFub3RoZXIuCi0r QGVuZCBpdGVtaXplCi0rCi0rWW91IGNhbiB1c2UgQHZhbHVle0dEQk59IHRvIGRlYnVnIHByb2dy YW1zIHdyaXR0ZW4gaW4gQywgQ0B0eysrfSwgYW5kIE1vZHVsYS0yLgotK0ZvcnRyYW4gc3VwcG9y dCB3aWxsIGJlIGFkZGVkIHdoZW4gYSBHTlUgRm9ydHJhbiBjb21waWxlciBpcyByZWFkeS4KLSsK LStAdmFsdWV7R0RCTn0gaXMgaW52b2tlZCB3aXRoIHRoZSBzaGVsbCBjb21tYW5kIEBjb2Rle2dk Yn0uICBPbmNlIHN0YXJ0ZWQsIGl0IHJlYWRzCi0rY29tbWFuZHMgZnJvbSB0aGUgdGVybWluYWwg dW50aWwgeW91IHRlbGwgaXQgdG8gZXhpdCB3aXRoIHRoZSBAdmFsdWV7R0RCTn0KLStjb21tYW5k IEBjb2Rle3F1aXR9LiAgWW91IGNhbiBnZXQgb25saW5lIGhlbHAgZnJvbSBAdmFsdWV7R0RCTn0g aXRzZWxmCi0rYnkgdXNpbmcgdGhlIGNvbW1hbmQgQGNvZGV7aGVscH0uCi0rCi0rWW91IGNhbiBy dW4gQGNvZGV7Z2RifSB3aXRoIG5vIGFyZ3VtZW50cyBvciBvcHRpb25zOyBidXQgdGhlIG1vc3QK LSt1c3VhbCB3YXkgdG8gc3RhcnQgQHZhbHVle0dEQk59IGlzIHdpdGggb25lIGFyZ3VtZW50IG9y IHR3bywgc3BlY2lmeWluZyBhbgotK2V4ZWN1dGFibGUgcHJvZ3JhbSBhcyB0aGUgYXJndW1lbnQ6 Ci0rCi0rQHNtYWxsZXhhbXBsZQotK2dkYiBwcm9ncmFtCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsK LStZb3UgY2FuIGFsc28gc3RhcnQgd2l0aCBib3RoIGFuIGV4ZWN1dGFibGUgcHJvZ3JhbSBhbmQg YSBjb3JlIGZpbGUgc3BlY2lmaWVkOgotKwotK0BzbWFsbGV4YW1wbGUKLStnZGIgcHJvZ3JhbSBj b3JlCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStZb3UgY2FuLCBpbnN0ZWFkLCBzcGVjaWZ5IGEg cHJvY2VzcyBJRCBhcyBhIHNlY29uZCBhcmd1bWVudCwgaWYgeW91IHdhbnQKLSt0byBkZWJ1ZyBh IHJ1bm5pbmcgcHJvY2VzczoKLSsKLStAc21hbGxleGFtcGxlCi0rZ2RiIHByb2dyYW0gMTIzNAot K0BlbmQgc21hbGxleGFtcGxlCi0rCi0rQG5vaW5kZW50Ci0rd291bGQgYXR0YWNoIEB2YWx1ZXtH REJOfSB0byBwcm9jZXNzIEBjb2RlezEyMzR9ICh1bmxlc3MgeW91IGFsc28gaGF2ZSBhIGZpbGUK LStuYW1lZCBAZmlsZXsxMjM0fTsgQHZhbHVle0dEQk59IGRvZXMgY2hlY2sgZm9yIGEgY29yZSBm aWxlIGZpcnN0KS4KLSsKLStIZXJlIGFyZSBzb21lIG9mIHRoZSBtb3N0IGZyZXF1ZW50bHkgbmVl ZGVkIEB2YWx1ZXtHREJOfSBjb21tYW5kczoKLSsKLStAYyBwb2QybWFuIGhpZ2hsaWdodHMgdGhl IHJpZ2h0IGhhbmQgc2lkZSBvZiB0aGUgQGl0ZW0gbGluZXMuCi0rQHRhYmxlIEBlbnYKLStAaXRl bSBicmVhayBbQHZhcntmaWxlfTpdQHZhcntmdW5jdGlvcH0KLStTZXQgYSBicmVha3BvaW50IGF0 IEB2YXJ7ZnVuY3Rpb259IChpbiBAdmFye2ZpbGV9KS4KLSsKLStAaXRlbSBydW4gW0B2YXJ7YXJn bGlzdH1dCi0rU3RhcnQgeW91ciBwcm9ncmFtICh3aXRoIEB2YXJ7YXJnbGlzdH0sIGlmIHNwZWNp ZmllZCkuCi0rCi0rQGl0ZW0gYnQKLStCYWNrdHJhY2U6IGRpc3BsYXkgdGhlIHByb2dyYW0gc3Rh Y2suCi0rCi0rQGl0ZW0gcHJpbnQgQHZhcntleHByfQotK0Rpc3BsYXkgdGhlIHZhbHVlIG9mIGFu IGV4cHJlc3Npb24uCi0rCi0rQGl0ZW0gYwotK0NvbnRpbnVlIHJ1bm5pbmcgeW91ciBwcm9ncmFt IChhZnRlciBzdG9wcGluZywgZS5nLiBhdCBhIGJyZWFrcG9pbnQpLgotKwotK0BpdGVtIG5leHQK LStFeGVjdXRlIG5leHQgcHJvZ3JhbSBsaW5lIChhZnRlciBzdG9wcGluZyk7IHN0ZXAgQGVtcGh7 b3Zlcn0gYW55Ci0rZnVuY3Rpb24gY2FsbHMgaW4gdGhlIGxpbmUuCi0rCi0rQGl0ZW0gZWRpdCBb QHZhcntmaWxlfTpdQHZhcntmdW5jdGlvbn0KLStsb29rIGF0IHRoZSBwcm9ncmFtIGxpbmUgd2hl cmUgaXQgaXMgcHJlc2VudGx5IHN0b3BwZWQuCi0rCi0rQGl0ZW0gbGlzdCBbQHZhcntmaWxlfTpd QHZhcntmdW5jdGlvbn0KLSt0eXBlIHRoZSB0ZXh0IG9mIHRoZSBwcm9ncmFtIGluIHRoZSB2aWNp bml0eSBvZiB3aGVyZSBpdCBpcyBwcmVzZW50bHkgc3RvcHBlZC4KLSsKLStAaXRlbSBzdGVwCi0r RXhlY3V0ZSBuZXh0IHByb2dyYW0gbGluZSAoYWZ0ZXIgc3RvcHBpbmcpOyBzdGVwIEBlbXBoe2lu dG99IGFueQotK2Z1bmN0aW9uIGNhbGxzIGluIHRoZSBsaW5lLgotKwotK0BpdGVtIGhlbHAgW0B2 YXJ7bmFtZX1dCi0rU2hvdyBpbmZvcm1hdGlvbiBhYm91dCBAdmFsdWV7R0RCTn0gY29tbWFuZCBA dmFye25hbWV9LCBvciBnZW5lcmFsIGluZm9ybWF0aW9uCi0rYWJvdXQgdXNpbmcgQHZhbHVle0dE Qk59LgotKwotK0BpdGVtIHF1aXQKLStFeGl0IGZyb20gQHZhbHVle0dEQk59LgotK0BlbmQgdGFi bGUKLSsKLStAaWZzZXQgbWFuCi0rRm9yIGZ1bGwgZGV0YWlscyBvbiBAdmFsdWV7R0RCTn0sCi0r c2VlIEBjaXRle1VzaW5nIEdEQjogQSBHdWlkZSB0byB0aGUgR05VIFNvdXJjZS1MZXZlbCBEZWJ1 Z2dlcn0sCi0rYnkgUmljaGFyZCBNLiBTdGFsbG1hbiBhbmQgUm9sYW5kIEguIFBlc2NoLiAgVGhl IHNhbWUgdGV4dCBpcyBhdmFpbGFibGUgb25saW5lCi0rYXMgdGhlIEBjb2Rle2dkYn0gZW50cnkg aW4gdGhlIEBjb2Rle2luZm99IHByb2dyYW0uCi0rQGVuZCBpZnNldAotK0BjIG1hbiBlbmQKLSsK LStAYyBtYW4gYmVnaW4gT1BUSU9OUyBnZGIKLStBbnkgYXJndW1lbnRzIG90aGVyIHRoYW4gb3B0 aW9ucyBzcGVjaWZ5IGFuIGV4ZWN1dGFibGUKLStmaWxlIGFuZCBjb3JlIGZpbGUgKG9yIHByb2Nl c3MgSUQpOyB0aGF0IGlzLCB0aGUgZmlyc3QgYXJndW1lbnQKLStlbmNvdW50ZXJlZCB3aXRoIG5v Ci0rYXNzb2NpYXRlZCBvcHRpb24gZmxhZyBpcyBlcXVpdmFsZW50IHRvIGEgQG9wdGlvbnstc2V9 IG9wdGlvbiwgYW5kIHRoZSBzZWNvbmQsCi0raWYgYW55LCBpcyBlcXVpdmFsZW50IHRvIGEgQG9w dGlvbnstY30gb3B0aW9uIGlmIGl0J3MgdGhlIG5hbWUgb2YgYSBmaWxlLgotK01hbnkgb3B0aW9u cyBoYXZlCi0rYm90aCBsb25nIGFuZCBzaG9ydCBmb3JtczsgYm90aCBhcmUgc2hvd24gaGVyZS4g IFRoZSBsb25nIGZvcm1zIGFyZSBhbHNvCi0rcmVjb2duaXplZCBpZiB5b3UgdHJ1bmNhdGUgdGhl bSwgc28gbG9uZyBhcyBlbm91Z2ggb2YgdGhlIG9wdGlvbiBpcwotK3ByZXNlbnQgdG8gYmUgdW5h bWJpZ3VvdXMuICAoSWYgeW91IHByZWZlciwgeW91IGNhbiBmbGFnIG9wdGlvbgotK2FyZ3VtZW50 cyB3aXRoIEBvcHRpb257K30gcmF0aGVyIHRoYW4gQG9wdGlvbnstfSwgdGhvdWdoIHdlIGlsbHVz dHJhdGUgdGhlCi0rbW9yZSB1c3VhbCBjb252ZW50aW9uLikKLSsKLStBbGwgdGhlIG9wdGlvbnMg YW5kIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgeW91IGdpdmUgYXJlIHByb2Nlc3NlZAotK2luIHNl cXVlbnRpYWwgb3JkZXIuICBUaGUgb3JkZXIgbWFrZXMgYSBkaWZmZXJlbmNlIHdoZW4gdGhlIEBv cHRpb257LXh9Ci0rb3B0aW9uIGlzIHVzZWQuCi0rCi0rQHRhYmxlIEBlbnYKLStAaXRlbSAtaGVs cAotK0BpdGVteCAtaAotK0xpc3QgYWxsIG9wdGlvbnMsIHdpdGggYnJpZWYgZXhwbGFuYXRpb25z LgotKwotK0BpdGVtIC1zeW1ib2xzPUB2YXJ7ZmlsZX0KLStAaXRlbXggLXMgQHZhcntmaWxlfQot K1JlYWQgc3ltYm9sIHRhYmxlIGZyb20gZmlsZSBAdmFye2ZpbGV9LgotKwotK0BpdGVtIC13cml0 ZQotK0VuYWJsZSB3cml0aW5nIGludG8gZXhlY3V0YWJsZSBhbmQgY29yZSBmaWxlcy4KLSsKLStA aXRlbSAtZXhlYz1AdmFye2ZpbGV9Ci0rQGl0ZW14IC1lIEB2YXJ7ZmlsZX0KLStVc2UgZmlsZSBA dmFye2ZpbGV9IGFzIHRoZSBleGVjdXRhYmxlIGZpbGUgdG8gZXhlY3V0ZSB3aGVuCi0rYXBwcm9w cmlhdGUsIGFuZCBmb3IgZXhhbWluaW5nIHB1cmUgZGF0YSBpbiBjb25qdW5jdGlvbiB3aXRoIGEg Y29yZQotK2R1bXAuCi0rCi0rQGl0ZW0gLXNlPUB2YXJ7ZmlsZX0KLStSZWFkIHN5bWJvbCB0YWJs ZSBmcm9tIGZpbGUgQHZhcntmaWxlfSBhbmQgdXNlIGl0IGFzIHRoZSBleGVjdXRhYmxlCi0rZmls ZS4KLSsKLStAaXRlbSAtY29yZT1AdmFye2ZpbGV9Ci0rQGl0ZW14IC1jIEB2YXJ7ZmlsZX0KLStV c2UgZmlsZSBAdmFye2ZpbGV9IGFzIGEgY29yZSBkdW1wIHRvIGV4YW1pbmUuCi0rCi0rQGl0ZW0g LWNvbW1hbmQ9QHZhcntmaWxlfQotK0BpdGVteCAteCBAdmFye2ZpbGV9Ci0rRXhlY3V0ZSBAdmFs dWV7R0RCTn0gY29tbWFuZHMgZnJvbSBmaWxlIEB2YXJ7ZmlsZX0uCi0rCi0rQGl0ZW0gLWV4IEB2 YXJ7Y29tbWFuZH0KLStFeGVjdXRlIGdpdmVuIEB2YWx1ZXtHREJOfSBAdmFye2NvbW1hbmR9Lgot KwotK0BpdGVtIC1kaXJlY3Rvcnk9QHZhcntkaXJlY3Rvcnl9Ci0rQGl0ZW14IC1kIEB2YXJ7ZGly ZWN0b3J5fQotK0FkZCBAdmFye2RpcmVjdG9yeX0gdG8gdGhlIHBhdGggdG8gc2VhcmNoIGZvciBz b3VyY2UgZmlsZXMuCi0rCi0rQGl0ZW0gLW5oCi0rRG8gbm90IGV4ZWN1dGUgY29tbWFuZHMgZnJv bSBAZmlsZXt+Ly5nZGJpbml0fS4KLSsKLStAaXRlbSAtbngKLStAaXRlbXggLW4KLStEbyBub3Qg ZXhlY3V0ZSBjb21tYW5kcyBmcm9tIGFueSBAZmlsZXsuZ2RiaW5pdH0gaW5pdGlhbGl6YXRpb24g ZmlsZXMuCi0rCi0rQGl0ZW0gLXF1aWV0Ci0rQGl0ZW14IC1xCi0rYGBRdWlldCcnLiAgRG8gbm90 IHByaW50IHRoZSBpbnRyb2R1Y3RvcnkgYW5kIGNvcHlyaWdodCBtZXNzYWdlcy4gIFRoZXNlCi0r bWVzc2FnZXMgYXJlIGFsc28gc3VwcHJlc3NlZCBpbiBiYXRjaCBtb2RlLgotKwotK0BpdGVtIC1i YXRjaAotK1J1biBpbiBiYXRjaCBtb2RlLiAgRXhpdCB3aXRoIHN0YXR1cyBAY29kZXswfSBhZnRl ciBwcm9jZXNzaW5nIGFsbCB0aGUgY29tbWFuZAotK2ZpbGVzIHNwZWNpZmllZCB3aXRoIEBvcHRp b257LXh9IChhbmQgQGZpbGV7LmdkYmluaXR9LCBpZiBub3QgaW5oaWJpdGVkKS4KLStFeGl0IHdp dGggbm9uemVybyBzdGF0dXMgaWYgYW4gZXJyb3Igb2NjdXJzIGluIGV4ZWN1dGluZyB0aGUgQHZh bHVle0dEQk59Ci0rY29tbWFuZHMgaW4gdGhlIGNvbW1hbmQgZmlsZXMuCi0rCi0rQmF0Y2ggbW9k ZSBtYXkgYmUgdXNlZnVsIGZvciBydW5uaW5nIEB2YWx1ZXtHREJOfSBhcyBhIGZpbHRlciwgZm9y IGV4YW1wbGUgdG8KLStkb3dubG9hZCBhbmQgcnVuIGEgcHJvZ3JhbSBvbiBhbm90aGVyIGNvbXB1 dGVyOyBpbiBvcmRlciB0byBtYWtlIHRoaXMKLSttb3JlIHVzZWZ1bCwgdGhlIG1lc3NhZ2UKLSsK LStAc21hbGxleGFtcGxlCi0rUHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkuCi0rQGVuZCBzbWFsbGV4 YW1wbGUKLSsKLStAbm9pbmRlbnQKLSsod2hpY2ggaXMgb3JkaW5hcmlseSBpc3N1ZWQgd2hlbmV2 ZXIgYSBwcm9ncmFtIHJ1bm5pbmcgdW5kZXIgQHZhbHVle0dEQk59IGNvbnRyb2wKLSt0ZXJtaW5h dGVzKSBpcyBub3QgaXNzdWVkIHdoZW4gcnVubmluZyBpbiBiYXRjaCBtb2RlLgotKwotK0BpdGVt IC1jZD1AdmFye2RpcmVjdG9yeX0KLStSdW4gQHZhbHVle0dEQk59IHVzaW5nIEB2YXJ7ZGlyZWN0 b3J5fSBhcyBpdHMgd29ya2luZyBkaXJlY3RvcnksCi0raW5zdGVhZCBvZiB0aGUgY3VycmVudCBk aXJlY3RvcnkuCi0rCi0rQGl0ZW0gLWZ1bGxuYW1lCi0rQGl0ZW14IC1mCi0rRW1hY3Mgc2V0cyB0 aGlzIG9wdGlvbiB3aGVuIGl0IHJ1bnMgQHZhbHVle0dEQk59IGFzIGEgc3VicHJvY2Vzcy4gIEl0 IHRlbGxzCi0rQHZhbHVle0dEQk59IHRvIG91dHB1dCB0aGUgZnVsbCBmaWxlIG5hbWUgYW5kIGxp bmUgbnVtYmVyIGluIGEgc3RhbmRhcmQsCi0rcmVjb2duaXphYmxlIGZhc2hpb24gZWFjaCB0aW1l IGEgc3RhY2sgZnJhbWUgaXMgZGlzcGxheWVkICh3aGljaAotK2luY2x1ZGVzIGVhY2ggdGltZSB0 aGUgcHJvZ3JhbSBzdG9wcykuICBUaGlzIHJlY29nbml6YWJsZSBmb3JtYXQgbG9va3MKLStsaWtl IHR3byBAc2FtcHtcMDMyfSBjaGFyYWN0ZXJzLCBmb2xsb3dlZCBieSB0aGUgZmlsZSBuYW1lLCBs aW5lIG51bWJlcgotK2FuZCBjaGFyYWN0ZXIgcG9zaXRpb24gc2VwYXJhdGVkIGJ5IGNvbG9ucywg YW5kIGEgbmV3bGluZS4gIFRoZQotK0VtYWNzLXRvLUB2YWx1ZXtHREJOfSBpbnRlcmZhY2UgcHJv Z3JhbSB1c2VzIHRoZSB0d28gQHNhbXB7XDAzMn0KLStjaGFyYWN0ZXJzIGFzIGEgc2lnbmFsIHRv IGRpc3BsYXkgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgZnJhbWUuCi0rCi0rQGl0ZW0gLWIgQHZh cnticHN9Ci0rU2V0IHRoZSBsaW5lIHNwZWVkIChiYXVkIHJhdGUgb3IgYml0cyBwZXIgc2Vjb25k KSBvZiBhbnkgc2VyaWFsCi0raW50ZXJmYWNlIHVzZWQgYnkgQHZhbHVle0dEQk59IGZvciByZW1v dGUgZGVidWdnaW5nLgotKwotK0BpdGVtIC10dHk9QHZhcntkZXZpY2V9Ci0rUnVuIHVzaW5nIEB2 YXJ7ZGV2aWNlfSBmb3IgeW91ciBwcm9ncmFtJ3Mgc3RhbmRhcmQgaW5wdXQgYW5kIG91dHB1dC4K LStAZW5kIHRhYmxlCi0rQGMgbWFuIGVuZAotKwotK0BjIG1hbiBiZWdpbiBTRUVBTFNPIGdkYgot K0BpZnNldCBtYW4KLStUaGUgZnVsbCBkb2N1bWVudGF0aW9uIGZvciBAdmFsdWV7R0RCTn0gaXMg bWFpbnRhaW5lZCBhcyBhIFRleGluZm8gbWFudWFsLgotK0lmIHRoZSBAY29kZXtpbmZvfSBhbmQg QGNvZGV7Z2RifSBwcm9ncmFtcyBhbmQgQHZhbHVle0dEQk59J3MgVGV4aW5mbwotK2RvY3VtZW50 YXRpb24gYXJlIHByb3Blcmx5IGluc3RhbGxlZCBhdCB5b3VyIHNpdGUsIHRoZSBjb21tYW5kCi0r Ci0rQHNtYWxsZXhhbXBsZQotK2luZm8gZ2RiCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStAbm9p bmRlbnQKLStzaG91bGQgZ2l2ZSB5b3UgYWNjZXNzIHRvIHRoZSBjb21wbGV0ZSBtYW51YWwuCi0r Ci0rQGNpdGV7VXNpbmcgR0RCOiBBIEd1aWRlIHRvIHRoZSBHTlUgU291cmNlLUxldmVsIERlYnVn Z2VyfSwKLStSaWNoYXJkIE0uIFN0YWxsbWFuIGFuZCBSb2xhbmQgSC4gUGVzY2gsIEp1bHkgMTk5 MS4KLStAZW5kIGlmc2V0Ci0rQGMgbWFuIGVuZAotKwotK0Bub2RlIGdkYnNlcnZlciBtYW4KLStA aGVhZGluZyBnZGJzZXJ2ZXIgbWFuCi0rCi0rQGMgbWFuIHRpdGxlIGdkYnNlcnZlciBSZW1vdGUg U2VydmVyIGZvciB0aGUgR05VIERlYnVnZ2VyCi0rQGZvcm1hdAotK0BjIG1hbiBiZWdpbiBTWU5P UFNJUyBnZGJzZXJ2ZXIKLStnZGJzZXJ2ZXIgQHZhcnt0dHl9IEB2YXJ7cHJvZ30gW0B2YXJ7YXJn c31AZG90c3t9XQotKwotK2dkYnNlcnZlciBAdmFye3R0eX0gLS1hdHRhY2ggQHZhcntQSUR9Ci0r QGMgbWFuIGVuZAotK0BlbmQgZm9ybWF0Ci0rCi0rQGMgbWFuIGJlZ2luIERFU0NSSVBUSU9OIGdk YnNlcnZlcgotK0Bjb21tYW5ke2dkYnNlcnZlcn0gaXMgYSBwcm9ncmFtIHRoYXQgYWxsb3dzIHlv dSB0byBydW4gQHZhbHVle0dEQk59IG9uIGEgZGlmZmVyZW50IG1hY2hpbmUKLSt0aGFuIHRoZSBv bmUgd2hpY2ggaXMgcnVubmluZyB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZC4KLSsKLStAaWZj bGVhciBtYW4KLStAc3ViaGVhZGluZyBVc2FnZSAoc2VydmVyICh0YXJnZXQpIHNpZGUpCi0rQGVu ZCBpZmNsZWFyCi0rQGlmc2V0IG1hbgotK1VzYWdlIChzZXJ2ZXIgKHRhcmdldCkgc2lkZSk6Ci0r QGVuZCBpZnNldAotKwotK0ZpcnN0LCB5b3UgbmVlZCB0byBoYXZlIGEgY29weSBvZiB0aGUgcHJv Z3JhbSB5b3Ugd2FudCB0byBkZWJ1ZyBwdXQgb250bwotK3RoZSB0YXJnZXQgc3lzdGVtLiAgVGhl IHByb2dyYW0gY2FuIGJlIHN0cmlwcGVkIHRvIHNhdmUgc3BhY2UgaWYgbmVlZGVkLCBhcwotK0Bj b21tYW5ke2dkYnNlcnZlcn0gZG9lc24ndCBjYXJlIGFib3V0IHN5bWJvbHMuICBBbGwgc3ltYm9s IGhhbmRsaW5nIGlzIHRha2VuIGNhcmUgb2YgYnkKLSt0aGUgQHZhbHVle0dEQk59IHJ1bm5pbmcg b24gdGhlIGhvc3Qgc3lzdGVtLgotKwotK1RvIHVzZSB0aGUgc2VydmVyLCB5b3UgbG9nIG9uIHRv IHRoZSB0YXJnZXQgc3lzdGVtLCBhbmQgcnVuIHRoZSBAY29tbWFuZHtnZGJzZXJ2ZXJ9Ci0rcHJv Z3JhbS4gIFlvdSBtdXN0IHRlbGwgaXQgKGEpIGhvdyB0byBjb21tdW5pY2F0ZSB3aXRoIEB2YWx1 ZXtHREJOfSwgKGIpIHRoZSBuYW1lIG9mCi0reW91ciBwcm9ncmFtLCBhbmQgKGMpIGl0cyBhcmd1 bWVudHMuICBUaGUgZ2VuZXJhbCBzeW50YXggaXM6Ci0rCi0rQHNtYWxsZXhhbXBsZQotK3Rhcmdl dD4gZ2Ric2VydmVyIEB2YXJ7Y29tbX0gQHZhcntwcm9ncmFtfSBbQHZhcnthcmdzfSAuLi5dCi0r QGVuZCBzbWFsbGV4YW1wbGUKLSsKLStGb3IgZXhhbXBsZSwgdXNpbmcgYSBzZXJpYWwgcG9ydCwg eW91IG1pZ2h0IHNheToKLSsKLStAc21hbGxleGFtcGxlCi0rQGlmc2V0IG1hbgotK0BjIEBmaWxl IHdvdWxkIHdyYXAgaXQgYXMgRjwvZGV2L2NvbTE+LgotK3RhcmdldD4gZ2Ric2VydmVyIC9kZXYv Y29tMSBlbWFjcyBmb28udHh0Ci0rQGVuZCBpZnNldAotK0BpZmNsZWFyIG1hbgotK3RhcmdldD4g Z2Ric2VydmVyIEBmaWxley9kZXYvY29tMX0gZW1hY3MgZm9vLnR4dAotK0BlbmQgaWZjbGVhcgot K0BlbmQgc21hbGxleGFtcGxlCi0rCi0rVGhpcyB0ZWxscyBAY29tbWFuZHtnZGJzZXJ2ZXJ9IHRv IGRlYnVnIGVtYWNzIHdpdGggYW4gYXJndW1lbnQgb2YgZm9vLnR4dCwgYW5kCi0rdG8gY29tbXVu aWNhdGUgd2l0aCBAdmFsdWV7R0RCTn0gdmlhIEBmaWxley9kZXYvY29tMX0uICBAY29tbWFuZHtn ZGJzZXJ2ZXJ9IG5vdwotK3dhaXRzIHBhdGllbnRseSBmb3IgdGhlIGhvc3QgQHZhbHVle0dEQk59 IHRvIGNvbW11bmljYXRlIHdpdGggaXQuCi0rCi0rVG8gdXNlIGEgVENQIGNvbm5lY3Rpb24sIHlv dSBjb3VsZCBzYXk6Ci0rCi0rQHNtYWxsZXhhbXBsZQotK3RhcmdldD4gZ2Ric2VydmVyIGhvc3Q6 MjM0NSBlbWFjcyBmb28udHh0Ci0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStUaGlzIHNheXMgcHJl dHR5IG11Y2ggdGhlIHNhbWUgdGhpbmcgYXMgdGhlIGxhc3QgZXhhbXBsZSwgZXhjZXB0IHRoYXQg d2UgYXJlCi0rZ29pbmcgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgQGNvZGV7aG9zdH0gQHZhbHVl e0dEQk59IHZpYSBUQ1AuICBUaGUgQGNvZGV7aG9zdDoyMzQ1fSBhcmd1bWVudCBtZWFucwotK3Ro YXQgd2UgYXJlIGV4cGVjdGluZyB0byBzZWUgYSBUQ1AgY29ubmVjdGlvbiBmcm9tIEBjb2Rle2hv c3R9IHRvIGxvY2FsIFRDUCBwb3J0Ci0rMjM0NS4gIChDdXJyZW50bHksIHRoZSBAY29kZXtob3N0 fSBwYXJ0IGlzIGlnbm9yZWQuKSAgWW91IGNhbiBjaG9vc2UgYW55IG51bWJlciB5b3UKLSt3YW50 IGZvciB0aGUgcG9ydCBudW1iZXIgYXMgbG9uZyBhcyBpdCBkb2VzIG5vdCBjb25mbGljdCB3aXRo IGFueSBleGlzdGluZyBUQ1AKLStwb3J0cyBvbiB0aGUgdGFyZ2V0IHN5c3RlbS4gIFRoaXMgc2Ft ZSBwb3J0IG51bWJlciBtdXN0IGJlIHVzZWQgaW4gdGhlIGhvc3QKLStAdmFsdWV7R0RCTn1zIEBj b2Rle3RhcmdldCByZW1vdGV9IGNvbW1hbmQsIHdoaWNoIHdpbGwgYmUgZGVzY3JpYmVkIHNob3J0 bHkuICBOb3RlIHRoYXQgaWYKLSt5b3UgY2hvc2UgYSBwb3J0IG51bWJlciB0aGF0IGNvbmZsaWN0 cyB3aXRoIGFub3RoZXIgc2VydmljZSwgQGNvbW1hbmR7Z2Ric2VydmVyfSB3aWxsCi0rcHJpbnQg YW4gZXJyb3IgbWVzc2FnZSBhbmQgZXhpdC4KLSsKLStPbiBzb21lIHRhcmdldHMsIEBjb21tYW5k e2dkYnNlcnZlcn0gY2FuIGFsc28gYXR0YWNoIHRvIHJ1bm5pbmcgcHJvZ3JhbXMuCi0rVGhpcyBp cyBhY2NvbXBsaXNoZWQgdmlhIHRoZSBAb3B0aW9uey0tYXR0YWNofSBhcmd1bWVudC4gIFRoZSBz eW50YXggaXM6Ci0rCi0rQHNtYWxsZXhhbXBsZQotK3RhcmdldD4gZ2Ric2VydmVyIEB2YXJ7Y29t bX0gLS1hdHRhY2ggQHZhcntwaWR9Ci0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStAdmFye3BpZH0g aXMgdGhlIHByb2Nlc3MgSUQgb2YgYSBjdXJyZW50bHkgcnVubmluZyBwcm9jZXNzLiAgSXQgaXNu J3QKLStuZWNlc3NhcnkgdG8gcG9pbnQgQGNvbW1hbmR7Z2Ric2VydmVyfSBhdCBhIGJpbmFyeSBm b3IgdGhlIHJ1bm5pbmcgcHJvY2Vzcy4KLSsKLStAaWZjbGVhciBtYW4KLStAc3ViaGVhZGluZyBV c2FnZSAoaG9zdCBzaWRlKQotK0BlbmQgaWZjbGVhcgotK0BpZnNldCBtYW4KLStVc2FnZSAoaG9z dCBzaWRlKToKLStAZW5kIGlmc2V0Ci0rCi0rWW91IG5lZWQgYW4gdW5zdHJpcHBlZCBjb3B5IG9m IHRoZSB0YXJnZXQgcHJvZ3JhbSBvbiB5b3VyIGhvc3Qgc3lzdGVtLCBzaW5jZQotK0B2YWx1ZXtH REJOfSBuZWVkcyB0byBleGFtaW5lIGl0J3Mgc3ltYm9sIHRhYmxlcyBhbmQgc3VjaC4gIFN0YXJ0 IHVwIEB2YWx1ZXtHREJOfSBhcyB5b3Ugbm9ybWFsbHkKLSt3b3VsZCwgd2l0aCB0aGUgdGFyZ2V0 IHByb2dyYW0gYXMgdGhlIGZpcnN0IGFyZ3VtZW50LiAgKFlvdSBtYXkgbmVlZCB0byB1c2UgdGhl Ci0rQG9wdGlvbnstLWJhdWR9IG9wdGlvbiBpZiB0aGUgc2VyaWFsIGxpbmUgaXMgcnVubmluZyBh dCBhbnl0aGluZyBleGNlcHQgOTYwMCBiYXVkLikKLStUaGF0IGlzIEBjb2Rle2dkYiBUQVJHRVQt UFJPR30sIG9yIEBjb2Rle2dkYiAtLWJhdWQgQkFVRCBUQVJHRVQtUFJPR30uICBBZnRlciB0aGF0 LCB0aGUgb25seQotK25ldyBjb21tYW5kIHlvdSBuZWVkIHRvIGtub3cgYWJvdXQgaXMgQGNvZGV7 dGFyZ2V0IHJlbW90ZX0uICBJdCdzIGFyZ3VtZW50IGlzIGVpdGhlcgotK2EgZGV2aWNlIG5hbWUg KHVzdWFsbHkgYSBzZXJpYWwgZGV2aWNlLCBsaWtlIEBmaWxley9kZXYvdHR5Yn0pLCBvciBhIEBj b2Rle0hPU1Q6UE9SVH0KLStkZXNjcmlwdG9yLiAgRm9yIGV4YW1wbGU6Ci0rCi0rQHNtYWxsZXhh bXBsZQotK0BpZnNldCBtYW4KLStAYyBAZmlsZSB3b3VsZCB3cmFwIGl0IGFzIEY8L2Rldi90dHli Pi4KLSsoZ2RiKSB0YXJnZXQgcmVtb3RlIC9kZXYvdHR5YgotK0BlbmQgaWZzZXQKLStAaWZjbGVh ciBtYW4KLSsoZ2RiKSB0YXJnZXQgcmVtb3RlIEBmaWxley9kZXYvdHR5Yn0KLStAZW5kIGlmY2xl YXIKLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK0Bub2luZGVudAotK2NvbW11bmljYXRlcyB3aXRo IHRoZSBzZXJ2ZXIgdmlhIHNlcmlhbCBsaW5lIEBmaWxley9kZXYvdHR5Yn0sIGFuZDoKLSsKLStA c21hbGxleGFtcGxlCi0rKGdkYikgdGFyZ2V0IHJlbW90ZSB0aGUtdGFyZ2V0OjIzNDUKLStAZW5k IHNtYWxsZXhhbXBsZQotKwotK0Bub2luZGVudAotK2NvbW11bmljYXRlcyB2aWEgYSBUQ1AgY29u bmVjdGlvbiB0byBwb3J0IDIzNDUgb24gaG9zdCBgdGhlLXRhcmdldCcsIHdoZXJlCi0reW91IHBy ZXZpb3VzbHkgc3RhcnRlZCB1cCBAY29tbWFuZHtnZGJzZXJ2ZXJ9IHdpdGggdGhlIHNhbWUgcG9y dCBudW1iZXIuICBOb3RlIHRoYXQgZm9yCi0rVENQIGNvbm5lY3Rpb25zLCB5b3UgbXVzdCBzdGFy dCB1cCBAY29tbWFuZHtnZGJzZXJ2ZXJ9IHByaW9yIHRvIHVzaW5nIHRoZSBgdGFyZ2V0IHJlbW90 ZScKLStjb21tYW5kLCBvdGhlcndpc2UgeW91IG1heSBnZXQgYW4gZXJyb3IgdGhhdCBsb29rcyBz b21ldGhpbmcgbGlrZQotK2BDb25uZWN0aW9uIHJlZnVzZWQnLgotK0BjIG1hbiBlbmQKLSsKLStA YyBtYW4gYmVnaW4gT1BUSU9OUyBnZGJzZXJ2ZXIKLStZb3UgaGF2ZSB0byBzdXBwbHkgdGhlIG5h bWUgb2YgdGhlIHByb2dyYW0gdG8gZGVidWcKLSthbmQgdGhlIHR0eSB0byBjb21tdW5pY2F0ZSBv bjsgdGhlIHJlbW90ZSBAdmFsdWV7R0RCTn0gd2lsbCBkbyBldmVyeXRoaW5nIGVsc2UuCi0rQW55 IHJlbWFpbmluZyBhcmd1bWVudHMgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIHByb2dyYW0gdmVyYmF0 aW0uCi0rQGMgbWFuIGVuZAotKwotK0BjIG1hbiBiZWdpbiBTRUVBTFNPIGdkYnNlcnZlcgotK0Bp ZnNldCBtYW4KLStUaGUgZnVsbCBkb2N1bWVudGF0aW9uIGZvciBAdmFsdWV7R0RCTn0gaXMgbWFp bnRhaW5lZCBhcyBhIFRleGluZm8gbWFudWFsLgotK0lmIHRoZSBAY29kZXtpbmZvfSBhbmQgQGNv ZGV7Z2RifSBwcm9ncmFtcyBhbmQgQHZhbHVle0dEQk59J3MgVGV4aW5mbwotK2RvY3VtZW50YXRp b24gYXJlIHByb3Blcmx5IGluc3RhbGxlZCBhdCB5b3VyIHNpdGUsIHRoZSBjb21tYW5kCi0rCi0r QHNtYWxsZXhhbXBsZQotK2luZm8gZ2RiCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStzaG91bGQg Z2l2ZSB5b3UgYWNjZXNzIHRvIHRoZSBjb21wbGV0ZSBtYW51YWwuCi0rCi0rQGNpdGV7VXNpbmcg R0RCOiBBIEd1aWRlIHRvIHRoZSBHTlUgU291cmNlLUxldmVsIERlYnVnZ2VyfSwKLStSaWNoYXJk IE0uIFN0YWxsbWFuIGFuZCBSb2xhbmQgSC4gUGVzY2gsIEp1bHkgMTk5MS4KLStAZW5kIGlmc2V0 Ci0rQGMgbWFuIGVuZAotKwotK0Bub2RlIGdkYmluaXQgbWFuCi0rQGhlYWRpbmcgZ2RiaW5pdAot KwotK0BjIG1hbiB0aXRsZSBnZGJpbml0IEdEQiBpbml0aWFsaXphdGlvbiBzY3JpcHRzCi0rCi0r QGZvcm1hdAotK0BjIG1hbiBiZWdpbiBTWU5PUFNJUyBnZGJpbml0Ci0rQGlmc2V0IFNZU1RFTV9H REJJTklUCi0rQHZhbHVle1NZU1RFTV9HREJJTklUfQotK0BlbmQgaWZzZXQKLSsKLSt+Ly5nZGJp bml0Ci0rCi0rLi8uZ2RiaW5pdAotK0BjIG1hbiBlbmQKLStAZW5kIGZvcm1hdAotKwotK0BjIG1h biBiZWdpbiBERVNDUklQVElPTiBnZGJpbml0Ci0rVGhlc2UgZmlsZXMgY29udGFpbiBAdmFsdWV7 R0RCTn0gY29tbWFuZHMgdG8gYXV0b21hdGljYWxseSBleGVjdXRlIGR1cmluZwotK0B2YWx1ZXtH REJOfSBzdGFydHVwLiAgVGhlIGxpbmVzIG9mIGNvbnRlbnRzIGFyZSBjYW5uZWQgc2VxdWVuY2Vz IG9mIGNvbW1hbmRzLAotK2Rlc2NyaWJlZCBpbgotK0BpZnNldCBtYW4KLSt0aGUgQHZhbHVle0dE Qk59IG1hbnVhbCBpbiBub2RlIEBjb2Rle1NlcXVlbmNlc30KLSstLSBzaGVsbCBjb21tYW5kIEBj b2Rle2luZm8gLWYgZ2RiIC1uIFNlcXVlbmNlc30uCi0rQGVuZCBpZnNldAotK0BpZmNsZWFyIG1h bgotK0ByZWZ7U2VxdWVuY2VzfS4KLStAZW5kIGlmY2xlYXIKLSsKLStQbGVhc2UgcmVhZCBtb3Jl IGluCi0rQGlmc2V0IG1hbgotK3RoZSBAdmFsdWV7R0RCTn0gbWFudWFsIGluIG5vZGUgQGNvZGV7 U3RhcnR1cH0KLSstLSBzaGVsbCBjb21tYW5kIEBjb2Rle2luZm8gLWYgZ2RiIC1uIFN0YXJ0dXB9 LgotK0BlbmQgaWZzZXQKLStAaWZjbGVhciBtYW4KLStAcmVme1N0YXJ0dXB9LgotK0BlbmQgaWZj bGVhcgotKwotK0B0YWJsZSBAZW52Ci0rQGlmc2V0IFNZU1RFTV9HREJJTklUCi0rQGl0ZW0gQHZh bHVle1NZU1RFTV9HREJJTklUfQotK0BlbmQgaWZzZXQKLStAaWZjbGVhciBTWVNURU1fR0RCSU5J VAotK0BpdGVtIChub3QgZW5hYmxlZCB3aXRoIEBjb2Rley0td2l0aC1zeXN0ZW0tZ2RiaW5pdH0g ZHVyaW5nIGNvbXBpbGF0aW9uKQotK0BlbmQgaWZjbGVhcgotK1N5c3RlbS13aWRlIGluaXRpYWxp emF0aW9uIGZpbGUuICBJdCBpcyBleGVjdXRlZCB1bmxlc3MgdXNlciBzcGVjaWZpZWQKLStAdmFs dWV7R0RCTn0gb3B0aW9uIEBjb2Rley1ueH0gb3IgQGNvZGV7LW59LgotK1NlZSBtb3JlIGluCi0r QGlmc2V0IG1hbgotK3RoZSBAdmFsdWV7R0RCTn0gbWFudWFsIGluIG5vZGUgQGNvZGV7U3lzdGVt LXdpZGUgY29uZmlndXJhdGlvbn0KLSstLSBzaGVsbCBjb21tYW5kIEBjb2Rle2luZm8gLWYgZ2Ri IC1uICdTeXN0ZW0td2lkZSBjb25maWd1cmF0aW9uJ30uCi0rQGVuZCBpZnNldAotK0BpZmNsZWFy IG1hbgotK0ByZWZ7U3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbn0uCi0rQGVuZCBpZmNsZWFyCi0r Ci0rQGl0ZW0gfi8uZ2RiaW5pdAotK1VzZXIgaW5pdGlhbGl6YXRpb24gZmlsZS4gIEl0IGlzIGV4 ZWN1dGVkIHVubGVzcyB1c2VyIHNwZWNpZmllZAotK0B2YWx1ZXtHREJOfSBvcHRpb25zIEBjb2Rl ey1ueH0sIEBjb2Rley1ufSBvciBAY29kZXstbmh9LgotKwotK0BpdGVtIC4vLmdkYmluaXQKLStJ bml0aWFsaXphdGlvbiBmaWxlIGZvciBjdXJyZW50IGRpcmVjdG9yeS4gIEl0IG1heSBuZWVkIHRv IGJlIGVuYWJsZWQgd2l0aAotK0B2YWx1ZXtHREJOfSBzZWN1cml0eSBjb21tYW5kIEBjb2Rle3Nl dCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0uCi0rU2VlIG1vcmUgaW4KLStAaWZzZXQgbWFuCi0r dGhlIEB2YWx1ZXtHREJOfSBtYW51YWwgaW4gbm9kZSBAY29kZXtJbml0IEZpbGUgaW4gdGhlIEN1 cnJlbnQgRGlyZWN0b3J5fQotKy0tIHNoZWxsIGNvbW1hbmQgQGNvZGV7aW5mbyAtZiBnZGIgLW4g J0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnknfS4KLStAZW5kIGlmc2V0Ci0rQGlm Y2xlYXIgbWFuCi0rQHJlZntJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5fS4KLStA ZW5kIGlmY2xlYXIKLStAZW5kIHRhYmxlCi0rQGMgbWFuIGVuZAotKwotK0BjIG1hbiBiZWdpbiBT RUVBTFNPIGdkYmluaXQKLStAaWZzZXQgbWFuCi0rZ2RiKDEpLCBAY29kZXtpbmZvIC1mIGdkYiAt biBTdGFydHVwfQotKwotK1RoZSBmdWxsIGRvY3VtZW50YXRpb24gZm9yIEB2YWx1ZXtHREJOfSBp cyBtYWludGFpbmVkIGFzIGEgVGV4aW5mbyBtYW51YWwuCi0rSWYgdGhlIEBjb2Rle2luZm99IGFu ZCBAY29kZXtnZGJ9IHByb2dyYW1zIGFuZCBAdmFsdWV7R0RCTn0ncyBUZXhpbmZvCi0rZG9jdW1l bnRhdGlvbiBhcmUgcHJvcGVybHkgaW5zdGFsbGVkIGF0IHlvdXIgc2l0ZSwgdGhlIGNvbW1hbmQK LSsKLStAc21hbGxleGFtcGxlCi0raW5mbyBnZGIKLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK3No b3VsZCBnaXZlIHlvdSBhY2Nlc3MgdG8gdGhlIGNvbXBsZXRlIG1hbnVhbC4KLSsKLStAY2l0ZXtV c2luZyBHREI6IEEgR3VpZGUgdG8gdGhlIEdOVSBTb3VyY2UtTGV2ZWwgRGVidWdnZXJ9LAotK1Jp Y2hhcmQgTS4gU3RhbGxtYW4gYW5kIFJvbGFuZCBILiBQZXNjaCwgSnVseSAxOTkxLgotK0BlbmQg aWZzZXQKLStAYyBtYW4gZW5kCi0rCi0gQGluY2x1ZGUgZ3BsLnRleGkKLSAKLSBAbm9kZSBHTlUg RnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UKLSMjIyBzcmMvZ2RiL2dkYnNlcnZlci9DaGFuZ2VM b2cJMjAxMy8wMy8yMiAxNDo1MjoyNgkxLjcwMgotIyMjIHNyYy9nZGIvZ2Ric2VydmVyL0NoYW5n ZUxvZwkyMDEzLzA0LzA1IDIwOjAxOjMzCTEuNzAzCi0jIyAtMSwzICsxLDEwIEBACi0rMjAxMy0w NC0wNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwlD b252ZXJ0IG1hbiBwYWdlcyB0byB0ZXhpbmZvLCBuZXcgZ2RiaW5pdC41IHRleGluZm8gcGFnZS4K LSsJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1vbmx5KTogUmVtb3ZlICQobWFuMWRpcikgYW5kIGdk YnNlcnZlci4xCi0rCWluc3RhbGxhdGlvbi4KLSsJKiBnZGJzZXJ2ZXIuMTogUmVtb3ZlLgotKwot IDIwMTMtMDMtMjIgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+Ci0gCi0gCSogbGlu dXgtbG93LmMgKGhhbmRsZV9leHRlbmRlZF93YWl0KTogRG9uJ3QgY2FsbAotLS0tIHNyYy9nZGIv Z2Ric2VydmVyL01ha2VmaWxlLmluCTIwMTMvMDMvMTUgMTc6MzA6MjcJMS4xNDUKLSsrKyBzcmMv Z2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgkyMDEzLzA0LzA1IDIwOjAxOjMzCTEuMTQ2Ci1AQCAt MjUyLDggKzI1Miw2IEBACi0gCWZpOyBcCi0gCSQoU0hFTEwpICQoc3JjZGlyKS8uLi8uLi9ta2lu c3RhbGxkaXJzICQoREVTVERJUikkKGJpbmRpcik7IFwKLSAJJChJTlNUQUxMX1BST0dSQU0pIGdk YnNlcnZlciQoRVhFRVhUKSAkKERFU1RESVIpJChiaW5kaXIpLyQkbiQoRVhFRVhUKTsgXAotLQkk KFNIRUxMKSAkKHNyY2RpcikvLi4vLi4vbWtpbnN0YWxsZGlycyAkKERFU1RESVIpJChtYW4xZGly KTsgXAotLQkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL2dkYnNlcnZlci4xICQoREVTVERJUikk KG1hbjFkaXIpLyQkbi4xCi0gCUAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgRE89JEAgIkRPRElS Uz0kKFNVQkRJUlMpIiBzdWJkaXJfZG8KLSAKLSB1bmluc3RhbGw6IGZvcmNlCi0KLQotCi1odHRw Oi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEzLTA0L21zZzAwMDU3Lmh0bWwKLQotIyMj IHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEzLzA0LzA1IDIwOjAxOjMzCTEuMTQzMwotIyMjIHNy Yy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEzLzA0LzA1IDIwOjAyOjU4CTEuMTQzNAotIyMgLTEsNSAr MSwxMCBAQAotIDIwMTMtMDQtMDUgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KLSAKLSsJKiBnZGIudGV4aW5mbyAoZ2RiIG1hbik6IE1lbnRpb24gb3B0aW9uIC1w LiAgSW5jbHVkZSBGb3J0cmFuIHRvCi0rCXRoZSBsaXN0IG9mIHN1cHBvcnRlZCBsYW5ndWFnZXMu Ci0rCi0rMjAxMy0wNC0wNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgotKwotIAlDb252ZXJ0IG1hbiBwYWdlcyB0byB0ZXhpbmZvLCBuZXcgZ2RiaW5pdC41IHRl eGluZm8gcGFnZS4KLSAJKiBNYWtlZmlsZS5pbiAobWFuZGlyLCBtYW4xZGlyLCBtYW41ZGlyLCBT WVNURU1fR0RCSU5JVCwgTUFOQ09ORiwKLSAJKFRFWEkyUE9ELCBQT0QyTUFOMSwgUE9EMk1BTjUs IE1BTjFTLCBNQU41UywgTUFOUywgbWFuKTogTmV3LgotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTMvMDQvMDUgMjA6MDE6MzMJMS4xMDcwCi0rKysgc3JjL2dkYi9kb2MvZ2RiLnRleGlu Zm8JMjAxMy8wNC8wNSAyMDowMjo1OAkxLjEwNzEKLUBAIC00MTYyMyw4ICs0MTYyMyw5IEBACi0g W0BvcHRpb257LWJ9QHd7IH1AdmFye2Jwc31dCi0gICAgIFtAb3B0aW9uey10dHk9fUB2YXJ7ZGV2 fV0gW0BvcHRpb257LXN9IEB2YXJ7c3ltZmlsZX1dCi0gW0BvcHRpb257LWV9QHd7IH1AdmFye3By b2d9XSBbQG9wdGlvbnstc2V9QHd7IH1AdmFye3Byb2d9XQotLVtAb3B0aW9uey1jfUB3eyB9QHZh cntjb3JlfV0gW0BvcHRpb257LXh9QHd7IH1AdmFye2NtZHN9XQotLSAgICBbQG9wdGlvbnstZH1A d3sgfUB2YXJ7ZGlyfV0gW0B2YXJ7cHJvZ318QHZhcntjb3JlfXxAdmFye3Byb2NJRH1dCi0rW0Bv cHRpb257LWN9QHd7IH1AdmFye2NvcmV9XSBbQG9wdGlvbnstcH1Ad3sgfUB2YXJ7cHJvY0lEfV0K LSsgICAgW0BvcHRpb257LXh9QHd7IH1AdmFye2NtZHN9XSBbQG9wdGlvbnstZH1Ad3sgfUB2YXJ7 ZGlyfV0KLStbQHZhcntwcm9nfXxAdmFye3Byb2d9IEB2YXJ7cHJvY0lEfXxAdmFye3Byb2d9IEB2 YXJ7Y29yZX1dCi0gQGMgbWFuIGVuZAotIAotIEBjIG1hbiBiZWdpbiBERVNDUklQVElPTiBnZGIK LUBAIC00MTY1MCw4ICs0MTY1MSw4IEBACi0gZWZmZWN0cyBvZiBvbmUgYnVnIGFuZCBnbyBvbiB0 byBsZWFybiBhYm91dCBhbm90aGVyLgotIEBlbmQgaXRlbWl6ZQotIAotLVlvdSBjYW4gdXNlIEB2 YWx1ZXtHREJOfSB0byBkZWJ1ZyBwcm9ncmFtcyB3cml0dGVuIGluIEMsIENAdHsrK30sIGFuZCBN b2R1bGEtMi4KLS1Gb3J0cmFuIHN1cHBvcnQgd2lsbCBiZSBhZGRlZCB3aGVuIGEgR05VIEZvcnRy YW4gY29tcGlsZXIgaXMgcmVhZHkuCi0rWW91IGNhbiB1c2UgQHZhbHVle0dEQk59IHRvIGRlYnVn IHByb2dyYW1zIHdyaXR0ZW4gaW4gQywgQ0B0eysrfSwgRm9ydHJhbiBhbmQKLStNb2R1bGEtMi4K LSAKLSBAdmFsdWV7R0RCTn0gaXMgaW52b2tlZCB3aXRoIHRoZSBzaGVsbCBjb21tYW5kIEBjb2Rl e2dkYn0uICBPbmNlIHN0YXJ0ZWQsIGl0IHJlYWRzCi0gY29tbWFuZHMgZnJvbSB0aGUgdGVybWlu YWwgdW50aWwgeW91IHRlbGwgaXQgdG8gZXhpdCB3aXRoIHRoZSBAdmFsdWV7R0RCTn0KLUBAIC00 MTY3NywxMSArNDE2NzgsMTMgQEAKLSAKLSBAc21hbGxleGFtcGxlCi0gZ2RiIHByb2dyYW0gMTIz NAotK2dkYiAtcCAxMjM0Ci0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLSBAbm9pbmRlbnQKLSB3b3Vs ZCBhdHRhY2ggQHZhbHVle0dEQk59IHRvIHByb2Nlc3MgQGNvZGV7MTIzNH0gKHVubGVzcyB5b3Ug YWxzbyBoYXZlIGEgZmlsZQotIG5hbWVkIEBmaWxlezEyMzR9OyBAdmFsdWV7R0RCTn0gZG9lcyBj aGVjayBmb3IgYSBjb3JlIGZpbGUgZmlyc3QpLgotK1dpdGggb3B0aW9uIEBvcHRpb257LXB9IHlv dSBjYW4gb21pdCB0aGUgQHZhcntwcm9ncmFtfSBmaWxlbmFtZS4KLSAKLSBIZXJlIGFyZSBzb21l IG9mIHRoZSBtb3N0IGZyZXF1ZW50bHkgbmVlZGVkIEB2YWx1ZXtHREJOfSBjb21tYW5kczoKLSAK LQotCi0KLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDQvbXNnMDAwNjQu aHRtbAotCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDQvMDUgMjA6MDI6NTgJMS4x NDM0Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDQvMDYgMDg6NTg6NTMJMS4xNDM1 Ci0jIyAtMSwzICsxLDExIEBACi0rMjAxMy0wNC0wNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotKwkgICAgRWxpIFphcmV0c2tpaSAgPGVsaXpAZ251Lm9yZz4K LSsKLSsJKiBnZGIudGV4aW5mbyAoZ2Ric2VydmVyIG1hbik6IFJlbmFtZSB0dHkgdG8gY29tbS4g IFN3YXAgLS1hdHRhY2gKLSsJcGFyYW1ldGVycyBvcmRlci4gIFJlbW92ZSAiT24gc29tZSB0YXJn ZXRzIiBmb3IgLS1hdHRhY2guICBEb2N1bWVudCB0aGUKLSsJLS1tdWx0aSBwYXJhbWV0ZXIgYW5k IGV4dGVuZGVkLXJlbW90ZSBjb21tYW5kLiAgRG9jdW1lbnQgYWxsIHRoZQotKwlvcHRpb25zLgot KwotIDIwMTMtMDQtMDUgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KLSAKLSAJKiBnZGIudGV4aW5mbyAoZ2RiIG1hbik6IE1lbnRpb24gb3B0aW9uIC1wLiAgSW5j bHVkZSBGb3J0cmFuIHRvCi0tLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMy8wNC8wNSAy MDowMjo1OAkxLjEwNzEKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEzLzA0LzA2IDA4 OjU4OjUzCTEuMTA3MgotQEAgLTQxODY3LDkgKzQxODY3LDExIEBACi0gQGMgbWFuIHRpdGxlIGdk YnNlcnZlciBSZW1vdGUgU2VydmVyIGZvciB0aGUgR05VIERlYnVnZ2VyCi0gQGZvcm1hdAotIEBj IG1hbiBiZWdpbiBTWU5PUFNJUyBnZGJzZXJ2ZXIKLS1nZGJzZXJ2ZXIgQHZhcnt0dHl9IEB2YXJ7 cHJvZ30gW0B2YXJ7YXJnc31AZG90c3t9XQotK2dkYnNlcnZlciBAdmFye2NvbW19IEB2YXJ7cHJv Z30gW0B2YXJ7YXJnc31AZG90c3t9XQotIAotLWdkYnNlcnZlciBAdmFye3R0eX0gLS1hdHRhY2gg QHZhcntQSUR9Ci0rZ2Ric2VydmVyIC0tYXR0YWNoIEB2YXJ7Y29tbX0gQHZhcntwaWR9Ci0rCi0r Z2Ric2VydmVyIC0tbXVsdGkgQHZhcntjb21tfQotIEBjIG1hbiBlbmQKLSBAZW5kIGZvcm1hdAot IAotQEAgLTQxOTI5LDE2ICs0MTkzMSwyNSBAQAotIHlvdSBjaG9zZSBhIHBvcnQgbnVtYmVyIHRo YXQgY29uZmxpY3RzIHdpdGggYW5vdGhlciBzZXJ2aWNlLCBAY29tbWFuZHtnZGJzZXJ2ZXJ9IHdp bGwKLSBwcmludCBhbiBlcnJvciBtZXNzYWdlIGFuZCBleGl0LgotIAotLU9uIHNvbWUgdGFyZ2V0 cywgQGNvbW1hbmR7Z2Ric2VydmVyfSBjYW4gYWxzbyBhdHRhY2ggdG8gcnVubmluZyBwcm9ncmFt cy4KLStAY29tbWFuZHtnZGJzZXJ2ZXJ9IGNhbiBhbHNvIGF0dGFjaCB0byBydW5uaW5nIHByb2dy YW1zLgotIFRoaXMgaXMgYWNjb21wbGlzaGVkIHZpYSB0aGUgQG9wdGlvbnstLWF0dGFjaH0gYXJn dW1lbnQuICBUaGUgc3ludGF4IGlzOgotIAotIEBzbWFsbGV4YW1wbGUKLS10YXJnZXQ+IGdkYnNl cnZlciBAdmFye2NvbW19IC0tYXR0YWNoIEB2YXJ7cGlkfQotK3RhcmdldD4gZ2Ric2VydmVyIC0t YXR0YWNoIEB2YXJ7Y29tbX0gQHZhcntwaWR9Ci0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLSBAdmFy e3BpZH0gaXMgdGhlIHByb2Nlc3MgSUQgb2YgYSBjdXJyZW50bHkgcnVubmluZyBwcm9jZXNzLiAg SXQgaXNuJ3QKLSBuZWNlc3NhcnkgdG8gcG9pbnQgQGNvbW1hbmR7Z2Ric2VydmVyfSBhdCBhIGJp bmFyeSBmb3IgdGhlIHJ1bm5pbmcgcHJvY2Vzcy4KLSAKLStUbyBzdGFydCBAY29kZXtnZGJzZXJ2 ZXJ9IHdpdGhvdXQgc3VwcGx5aW5nIGFuIGluaXRpYWwgY29tbWFuZCB0byBydW4KLStvciBwcm9j ZXNzIElEIHRvIGF0dGFjaCwgdXNlIHRoZSBAb3B0aW9uey0tbXVsdGl9IGNvbW1hbmQgbGluZSBv cHRpb24uCi0rSW4gc3VjaCBjYXNlIHlvdSBzaG91bGQgY29ubmVjdCB1c2luZyBAa2Jke3Rhcmdl dCBleHRlbmRlZC1yZW1vdGV9IHRvIHN0YXJ0Ci0rdGhlIHByb2dyYW0geW91IHdhbnQgdG8gZGVi dWcuCi0rCi0rQHNtYWxsZXhhbXBsZQotK3RhcmdldD4gZ2Ric2VydmVyIC0tbXVsdGkgQHZhcntj b21tfQotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0gQGlmY2xlYXIgbWFuCi0gQHN1YmhlYWRpbmcg VXNhZ2UgKGhvc3Qgc2lkZSkKLSBAZW5kIGlmY2xlYXIKLUBAIC00MTk1MSw3ICs0MTk2Miw4IEBA Ci0gd291bGQsIHdpdGggdGhlIHRhcmdldCBwcm9ncmFtIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4g IChZb3UgbWF5IG5lZWQgdG8gdXNlIHRoZQotIEBvcHRpb257LS1iYXVkfSBvcHRpb24gaWYgdGhl IHNlcmlhbCBsaW5lIGlzIHJ1bm5pbmcgYXQgYW55dGhpbmcgZXhjZXB0IDk2MDAgYmF1ZC4pCi0g VGhhdCBpcyBAY29kZXtnZGIgVEFSR0VULVBST0d9LCBvciBAY29kZXtnZGIgLS1iYXVkIEJBVUQg VEFSR0VULVBST0d9LiAgQWZ0ZXIgdGhhdCwgdGhlIG9ubHkKLS1uZXcgY29tbWFuZCB5b3UgbmVl ZCB0byBrbm93IGFib3V0IGlzIEBjb2Rle3RhcmdldCByZW1vdGV9LiAgSXQncyBhcmd1bWVudCBp cyBlaXRoZXIKLStuZXcgY29tbWFuZCB5b3UgbmVlZCB0byBrbm93IGFib3V0IGlzIEBjb2Rle3Rh cmdldCByZW1vdGV9Ci0rKG9yIEBjb2Rle3RhcmdldCBleHRlbmRlZC1yZW1vdGV9KS4gIEl0cyBh cmd1bWVudCBpcyBlaXRoZXIKLSBhIGRldmljZSBuYW1lICh1c3VhbGx5IGEgc2VyaWFsIGRldmlj ZSwgbGlrZSBAZmlsZXsvZGV2L3R0eWJ9KSwgb3IgYSBAY29kZXtIT1NUOlBPUlR9Ci0gZGVzY3Jp cHRvci4gIEZvciBleGFtcGxlOgotIAotQEAgLTQxOTc4LDEyICs0MTk5MCwxMzEgQEAKLSBUQ1Ag Y29ubmVjdGlvbnMsIHlvdSBtdXN0IHN0YXJ0IHVwIEBjb21tYW5ke2dkYnNlcnZlcn0gcHJpb3Ig dG8gdXNpbmcgdGhlIGB0YXJnZXQgcmVtb3RlJwotIGNvbW1hbmQsIG90aGVyd2lzZSB5b3UgbWF5 IGdldCBhbiBlcnJvciB0aGF0IGxvb2tzIHNvbWV0aGluZyBsaWtlCi0gYENvbm5lY3Rpb24gcmVm dXNlZCcuCi0rCi0rQGNvbW1hbmR7Z2Ric2VydmVyfSBjYW4gYWxzbyBkZWJ1ZyBtdWx0aXBsZSBp bmZlcmlvcnMgYXQgb25jZSwKLStkZXNjcmliZWQgaW4KLStAaWZzZXQgbWFuCi0rdGhlIEB2YWx1 ZXtHREJOfSBtYW51YWwgaW4gbm9kZSBAY29kZXtJbmZlcmlvcnMgYW5kIFByb2dyYW1zfQotKy0t IHNoZWxsIGNvbW1hbmQgQGNvZGV7aW5mbyAtZiBnZGIgLW4gJ0luZmVyaW9ycyBhbmQgUHJvZ3Jh bXMnfS4KLStAZW5kIGlmc2V0Ci0rQGlmY2xlYXIgbWFuCi0rQHJlZntJbmZlcmlvcnMgYW5kIFBy b2dyYW1zfS4KLStAZW5kIGlmY2xlYXIKLStJbiBzdWNoIGNhc2UgdXNlIHRoZSBAY29kZXtleHRl bmRlZC1yZW1vdGV9IEB2YWx1ZXtHREJOfSBjb21tYW5kIHZhcmlhbnQ6Ci0rCi0rQHNtYWxsZXhh bXBsZQotKyhnZGIpIHRhcmdldCBleHRlbmRlZC1yZW1vdGUgdGhlLXRhcmdldDoyMzQ1Ci0rQGVu ZCBzbWFsbGV4YW1wbGUKLSsKLStUaGUgQGNvbW1hbmR7Z2Ric2VydmVyfSBvcHRpb24gQG9wdGlv bnstLW11bHRpfSBtYXkgb3IgbWF5IG5vdCBiZSB1c2VkIGluIHN1Y2gKLStjYXNlLgotIEBjIG1h biBlbmQKLSAKLSBAYyBtYW4gYmVnaW4gT1BUSU9OUyBnZGJzZXJ2ZXIKLS1Zb3UgaGF2ZSB0byBz dXBwbHkgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0gdG8gZGVidWcKLS1hbmQgdGhlIHR0eSB0byBj b21tdW5pY2F0ZSBvbjsgdGhlIHJlbW90ZSBAdmFsdWV7R0RCTn0gd2lsbCBkbyBldmVyeXRoaW5n IGVsc2UuCi0tQW55IHJlbWFpbmluZyBhcmd1bWVudHMgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIHBy b2dyYW0gdmVyYmF0aW0uCi0rVGhlcmUgYXJlIHRocmVlIGRpZmZlcmVudCBtb2RlcyBmb3IgaW52 b2tpbmcgQGNvbW1hbmR7Z2Ric2VydmVyfToKLSsKLStAaXRlbWl6ZSBAYnVsbGV0Ci0rCi0rQGl0 ZW0KLStEZWJ1ZyBhIHNwZWNpZmljIHByb2dyYW0gc3BlY2lmaWVkIGJ5IGl0cyBwcm9ncmFtIG5h bWU6Ci0rCi0rQHNtYWxsZXhhbXBsZQotK2dkYnNlcnZlciBAdmFye2NvbW19IEB2YXJ7cHJvZ30g W0B2YXJ7YXJnc31AZG90c3t9XQotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0rVGhlIEB2YXJ7Y29t bX0gcGFyYW1ldGVyIHNwZWNpZmllcyBob3cgc2hvdWxkIHRoZSBzZXJ2ZXIgY29tbXVuaWNhdGUK LSt3aXRoIEB2YWx1ZXtHREJOfTsgaXQgaXMgZWl0aGVyIGEgZGV2aWNlIG5hbWUgKHRvIHVzZSBh IHNlcmlhbCBsaW5lKSwKLSthIFRDUCBwb3J0IG51bWJlciAoQGNvZGV7OjEyMzR9KSwgb3IgQGNv ZGV7LX0gb3IgQGNvZGV7c3RkaW99IHRvIHVzZQotK3N0ZGluL3N0ZG91dCBvZiBAY29kZXtnZGJz ZXJ2ZXJ9LiAgU3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgcHJvZ3JhbSB0bwotK2RlYnVnIGluIEB2 YXJ7cHJvZ30uICBBbnkgcmVtYWluaW5nIGFyZ3VtZW50cyB3aWxsIGJlIHBhc3NlZCB0byB0aGUK LStwcm9ncmFtIHZlcmJhdGltLiAgV2hlbiB0aGUgcHJvZ3JhbSBleGl0cywgQHZhbHVle0dEQk59 IHdpbGwgY2xvc2UgdGhlCi0rY29ubmVjdGlvbiwgYW5kIEBjb2Rle2dkYnNlcnZlcn0gd2lsbCBl eGl0LgotKwotK0BpdGVtCi0rRGVidWcgYSBzcGVjaWZpYyBwcm9ncmFtIGJ5IHNwZWNpZnlpbmcg dGhlIHByb2Nlc3MgSUQgb2YgYSBydW5uaW5nCi0rcHJvZ3JhbToKLSsKLStAc21hbGxleGFtcGxl Ci0rZ2Ric2VydmVyIC0tYXR0YWNoIEB2YXJ7Y29tbX0gQHZhcntwaWR9Ci0rQGVuZCBzbWFsbGV4 YW1wbGUKLSsKLStUaGUgQHZhcntjb21tfSBwYXJhbWV0ZXIgaXMgYXMgZGVzY3JpYmVkIGFib3Zl LiAgU3VwcGx5IHRoZSBwcm9jZXNzIElECi0rb2YgYSBydW5uaW5nIHByb2dyYW0gaW4gQHZhcntw aWR9OyBAdmFsdWV7R0RCTn0gd2lsbCBkbyBldmVyeXRoaW5nCi0rZWxzZS4gIExpa2Ugd2l0aCB0 aGUgcHJldmlvdXMgbW9kZSwgd2hlbiB0aGUgcHJvY2VzcyBAdmFye3BpZH0gZXhpdHMsCi0rQHZh bHVle0dEQk59IHdpbGwgY2xvc2UgdGhlIGNvbm5lY3Rpb24sIGFuZCBAY29kZXtnZGJzZXJ2ZXJ9 IHdpbGwgZXhpdC4KLSsKLStAaXRlbQotK011bHRpLXByb2Nlc3MgbW9kZSAtLSBkZWJ1ZyBtb3Jl IHRoYW4gb25lIHByb2dyYW0vcHJvY2VzczoKLSsKLStAc21hbGxleGFtcGxlCi0rZ2Ric2VydmVy IC0tbXVsdGkgQHZhcntjb21tfQotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0rSW4gdGhpcyBtb2Rl LCBAdmFsdWV7R0RCTn0gY2FuIGluc3RydWN0IEBjb21tYW5ke2dkYnNlcnZlcn0gd2hpY2gKLStj b21tYW5kKHMpIHRvIHJ1bi4gIFVubGlrZSB0aGUgb3RoZXIgMiBtb2RlcywgQHZhbHVle0dEQk59 IHdpbGwgbm90Ci0rY2xvc2UgdGhlIGNvbm5lY3Rpb24gd2hlbiBhIHByb2Nlc3MgYmVpbmcgZGVi dWdnZWQgZXhpdHMsIHNvIHlvdSBjYW4KLStkZWJ1ZyBzZXZlcmFsIHByb2Nlc3NlcyBpbiB0aGUg c2FtZSBzZXNzaW9uLgotK0BlbmQgaXRlbWl6ZQotKwotK0luIGVhY2ggb2YgdGhlIG1vZGVzIHlv dSBtYXkgc3BlY2lmeSB0aGVzZSBvcHRpb25zOgotKwotK0B0YWJsZSBAZW52Ci0rCi0rQGl0ZW0g LS1oZWxwCi0rTGlzdCBhbGwgb3B0aW9ucywgd2l0aCBicmllZiBleHBsYW5hdGlvbnMuCi0rCi0r QGl0ZW0gLS12ZXJzaW9uCi0rVGhpcyBvcHRpb24gY2F1c2VzIEBjb21tYW5ke2dkYnNlcnZlcn0g dG8gcHJpbnQgaXRzIHZlcnNpb24gbnVtYmVyIGFuZCBleGl0LgotKwotK0BpdGVtIC0tYXR0YWNo Ci0rQGNvbW1hbmR7Z2Ric2VydmVyfSB3aWxsIGF0dGFjaCB0byBhIHJ1bm5pbmcgcHJvZ3JhbS4g IFRoZSBzeW50YXggaXM6Ci0rCi0rQHNtYWxsZXhhbXBsZQotK3RhcmdldD4gZ2Ric2VydmVyIC0t YXR0YWNoIEB2YXJ7Y29tbX0gQHZhcntwaWR9Ci0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStAdmFy e3BpZH0gaXMgdGhlIHByb2Nlc3MgSUQgb2YgYSBjdXJyZW50bHkgcnVubmluZyBwcm9jZXNzLiAg SXQgaXNuJ3QKLStuZWNlc3NhcnkgdG8gcG9pbnQgQGNvbW1hbmR7Z2Ric2VydmVyfSBhdCBhIGJp bmFyeSBmb3IgdGhlIHJ1bm5pbmcgcHJvY2Vzcy4KLSsKLStAaXRlbSAtLW11bHRpCi0rVG8gc3Rh cnQgQGNvZGV7Z2Ric2VydmVyfSB3aXRob3V0IHN1cHBseWluZyBhbiBpbml0aWFsIGNvbW1hbmQg dG8gcnVuCi0rb3IgcHJvY2VzcyBJRCB0byBhdHRhY2gsIHVzZSB0aGlzIGNvbW1hbmQgbGluZSBv cHRpb24uCi0rVGhlbiB5b3UgY2FuIGNvbm5lY3QgdXNpbmcgQGtiZHt0YXJnZXQgZXh0ZW5kZWQt cmVtb3RlfSBhbmQgc3RhcnQKLSt0aGUgcHJvZ3JhbSB5b3Ugd2FudCB0byBkZWJ1Zy4gIFRoZSBz eW50YXggaXM6Ci0rCi0rQHNtYWxsZXhhbXBsZQotK3RhcmdldD4gZ2Ric2VydmVyIC0tbXVsdGkg QHZhcntjb21tfQotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0rQGl0ZW0gLS1kZWJ1ZwotK0luc3Ry dWN0IEBjb2Rle2dkYnNlcnZlcn0gdG8gZGlzcGxheSBleHRyYSBzdGF0dXMgaW5mb3JtYXRpb24g YWJvdXQgdGhlIGRlYnVnZ2luZwotK3Byb2Nlc3MuCi0rVGhpcyBvcHRpb24gaXMgaW50ZW5kZWQg Zm9yIEBjb2Rle2dkYnNlcnZlcn0gZGV2ZWxvcG1lbnQgYW5kIGZvciBidWcgcmVwb3J0cyB0bwot K3RoZSBkZXZlbG9wZXJzLgotKwotK0BpdGVtIC0tcmVtb3RlLWRlYnVnCi0rSW5zdHJ1Y3QgQGNv ZGV7Z2Ric2VydmVyfSB0byBkaXNwbGF5IHJlbW90ZSBwcm90b2NvbCBkZWJ1ZyBvdXRwdXQuCi0r VGhpcyBvcHRpb24gaXMgaW50ZW5kZWQgZm9yIEBjb2Rle2dkYnNlcnZlcn0gZGV2ZWxvcG1lbnQg YW5kIGZvciBidWcgcmVwb3J0cyB0bwotK3RoZSBkZXZlbG9wZXJzLgotKwotK0BpdGVtIC0td3Jh cHBlcgotK1NwZWNpZnkgYSB3cmFwcGVyIHRvIGxhdW5jaCBwcm9ncmFtcwotK2ZvciBkZWJ1Z2dp bmcuICBUaGUgb3B0aW9uIHNob3VsZCBiZSBmb2xsb3dlZCBieSB0aGUgbmFtZSBvZiB0aGUKLSt3 cmFwcGVyLCB0aGVuIGFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIHdy YXBwZXIsIHRoZW4KLStAa2Jkey0tfSBpbmRpY2F0aW5nIHRoZSBlbmQgb2YgdGhlIHdyYXBwZXIg YXJndW1lbnRzLgotKwotK0BpdGVtIC0tb25jZQotK0J5IGRlZmF1bHQsIEBjb21tYW5ke2dkYnNl cnZlcn0ga2VlcHMgdGhlIGxpc3RlbmluZyBUQ1AgcG9ydCBvcGVuLCBzbyB0aGF0Ci0rYWRkaXRp b25hbCBjb25uZWN0aW9ucyBhcmUgcG9zc2libGUuICBIb3dldmVyLCBpZiB5b3Ugc3RhcnQgQGNv ZGV7Z2Ric2VydmVyfQotK3dpdGggdGhlIEBvcHRpb257LS1vbmNlfSBvcHRpb24sIGl0IHdpbGwg c3RvcCBsaXN0ZW5pbmcgZm9yIGFueSBmdXJ0aGVyCi0rY29ubmVjdGlvbiBhdHRlbXB0cyBhZnRl ciBjb25uZWN0aW5nIHRvIHRoZSBmaXJzdCBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KLSsKLStAYyAt LWRpc2FibGUtcGFja2V0IGlzIG5vdCBkb2N1bWVudGVkIGZvciB1c2Vycy4KLSsKLStAYyAtLWRp c2FibGUtcmFuZG9taXphdGlvbiBhbmQgLS1uby1kaXNhYmxlLXJhbmRvbWl6YXRpb24gYXJlIHN1 cGVyc2VkZWQgYnkKLStAYyBRRGlzYWJsZVJhbmRvbWl6YXRpb24uCi0rCi0rQGVuZCB0YWJsZQot IEBjIG1hbiBlbmQKLSAKLSBAYyBtYW4gYmVnaW4gU0VFQUxTTyBnZGJzZXJ2ZXIKLQotCi0KLWh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDQvbXNnMDAwNjUuaHRtbAotCi0j IyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDQvMDYgMDg6NTg6NTMJMS4xNDM1Ci0jIyMg c3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDQvMDYgMTU6NTI6MDYJMS4xNDM2Ci0jIyAtMSw0 ICsxLDggQEAKLSAyMDEzLTA0LTA2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+Ci0rCi0rCSogTWFrZWZpbGUuaW4gKFBPRDJNQU4xLCBQT0QyTUFONSk6IFJlcGxh Y2UgJChWRVJTSU9OKSBieSAuLi92ZXJzaW9uLmluLgotKwotKzIwMTMtMDQtMDYgIEphbiBLcmF0 b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAJICAgIEVsaSBaYXJldHNraWkg IDxlbGl6QGdudS5vcmc+Ci0gCi0gCSogZ2RiLnRleGluZm8gKGdkYnNlcnZlciBtYW4pOiBSZW5h bWUgdHR5IHRvIGNvbW0uICBTd2FwIC0tYXR0YWNoCi0tLS0gc3JjL2dkYi9kb2MvTWFrZWZpbGUu aW4JMjAxMy8wNC8wNSAyMDowMTozMwkxLjU4Ci0rKysgc3JjL2dkYi9kb2MvTWFrZWZpbGUuaW4J MjAxMy8wNC8wNiAxNTo1MjowNgkxLjU5Ci1AQCAtMTcyLDkgKzE3Miw5IEBACi0gCQkkKE1BS0VJ TkZPRkxBR1MpICQoTUFLRUlORk9fRVhUUkFfRkxBR1MpCi0gCi0gUE9EMk1BTjEgPSBwb2QybWFu IC0tY2VudGVyPSJHTlUgRGV2ZWxvcG1lbnQgVG9vbHMiIFwKLS0JCSAgIC0tcmVsZWFzZT0iZ2Ri LSQoVkVSU0lPTikiIC0tc2VjdGlvbj0xCi0rCQkgICAtLXJlbGVhc2U9ImdkYi1gc2VkIHEgJChz cmNkaXIpLy4uL3ZlcnNpb24uaW5gIiAtLXNlY3Rpb249MQotIFBPRDJNQU41ID0gcG9kMm1hbiAt LWNlbnRlcj0iR05VIERldmVsb3BtZW50IFRvb2xzIiBcCi0tCQkgICAtLXJlbGVhc2U9ImdkYi0k KFZFUlNJT04pIiAtLXNlY3Rpb249NQotKwkJICAgLS1yZWxlYXNlPSJnZGItYHNlZCBxICQoc3Jj ZGlyKS8uLi92ZXJzaW9uLmluYCIgLS1zZWN0aW9uPTUKLSAKLSAjIExpc3Qgb2YgbWFuIHBhZ2Vz IGdlbmVyYXRlZCBmcm9tIGdkYi50ZXhpCi0gTUFOMVMgPSBnZGIuMSBnZGJzZXJ2ZXIuMQotCi0K LQotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMy0wNC9tc2cwMDA2OC5odG1s Ci0KLSMjIyBzcmMvZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cJMjAxMy8wNC8wNSAyMDowMTozMwkx LjcwMwotIyMjIHNyYy9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZwkyMDEzLzA0LzA3IDA1OjUzOjIx CTEuNzA0Ci0jIyAtMSwzICsxLDcgQEAKLSsyMDEzLTA0LTA3ICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtb25s eSk6IEZpeCBtYWtlIGluc3RhbGwgcmVncmVzc2lvbi4KLSsKLSAyMDEzLTA0LTA1ICBKYW4gS3Jh dG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0gCUNvbnZlcnQgbWFuIHBh Z2VzIHRvIHRleGluZm8sIG5ldyBnZGJpbml0LjUgdGV4aW5mbyBwYWdlLgotLS0tIHNyYy9nZGIv Z2Ric2VydmVyL01ha2VmaWxlLmluCTIwMTMvMDQvMDUgMjA6MDE6MzMJMS4xNDYKLSsrKyBzcmMv Z2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgkyMDEzLzA0LzA3IDA1OjUzOjIyCTEuMTQ3Ci1AQCAt MjUxLDcgKzI1MSw3IEBACi0gCQkkKElOU1RBTExfUFJPR1JBTSkgJChJUEFfTElCKSAkKERFU1RE SVIpJChsaWJkaXIpLyQoSVBBX0xJQik7IFwKLSAJZmk7IFwKLSAJJChTSEVMTCkgJChzcmNkaXIp Ly4uLy4uL21raW5zdGFsbGRpcnMgJChERVNURElSKSQoYmluZGlyKTsgXAotLQkkKElOU1RBTExf UFJPR1JBTSkgZ2Ric2VydmVyJChFWEVFWFQpICQoREVTVERJUikkKGJpbmRpcikvJCRuJChFWEVF WFQpOyBcCi0rCSQoSU5TVEFMTF9QUk9HUkFNKSBnZGJzZXJ2ZXIkKEVYRUVYVCkgJChERVNURElS KSQoYmluZGlyKS8kJG4kKEVYRUVYVCkKLSAJQCQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBETz0k QCAiRE9ESVJTPSQoU1VCRElSUykiIHN1YmRpcl9kbwotIAotIHVuaW5zdGFsbDogZm9yY2UKLQot Ci0KLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDQvbXNnMDAwNjkuaHRt bAotCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDQvMDYgMTU6NTI6MDYJMS4xNDM2 Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDQvMDcgMDY6MDQ6NTgJMS4xNDM3Ci0j IyAtMiw2ICsyLDkgQEAKLSAKLSAJKiBNYWtlZmlsZS5pbiAoUE9EMk1BTjEsIFBPRDJNQU41KTog UmVwbGFjZSAkKFZFUlNJT04pIGJ5IC4uL3ZlcnNpb24uaW4uCi0gCi0rCSogTWFrZWZpbGUuaW4g KGluc3RhbGwtbWFuMSwgaW5zdGFsbC1tYW41LCB1bmluc3RhbGwtbWFuMSkKLSsJKHVuaW5zdGFs bC1tYW41KTogUmVwbGFjZSAkKE1BTlMpIGJ5ICQoTUFOMVMpIGFuZCAkKE1BTjVTKSByZXNwZWN0 aXZlbHkuCi0rCi0gMjAxMy0wNC0wNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPgotIAkgICAgRWxpIFphcmV0c2tpaSAgPGVsaXpAZ251Lm9yZz4KLSAKLS0tLSBz cmMvZ2RiL2RvYy9NYWtlZmlsZS5pbgkyMDEzLzA0LzA2IDE1OjUyOjA2CTEuNTkKLSsrKyBzcmMv Z2RiL2RvYy9NYWtlZmlsZS5pbgkyMDEzLzA0LzA3IDA2OjA0OjU4CTEuNjAKLUBAIC0yNjgsNyAr MjY4LDcgQEAKLSAKLSBpbnN0YWxsLW1hbjE6ICQoTUFOMVMpCi0gCXRlc3QgLXogIiQobWFuMWRp cikiIHx8ICQobWtpbnN0YWxsZGlycykgIiQoREVTVERJUikkKG1hbjFkaXIpIgotLQlAbGlzdD0n JChNQU5TKSc7IGZvciBwIGluICQkbGlzdDsgZG8gXAotKwlAbGlzdD0nJChNQU4xUyknOyBmb3Ig cCBpbiAkJGxpc3Q7IGRvIFwKLSAJICBpZiB0ZXN0IC1mICIkJHAiOyB0aGVuIGQ9OyBlbHNlIGQ9 IiQoc3JjZGlyKS8iOyBmaTsgXAotIAkgIGY9YGVjaG8gJCRwIHwgc2VkIC1lICdzfF4uKi98fCdg OyBcCi0gCSAgZWNobyAiICQoSU5TVEFMTF9EQVRBKSAnJCRkJCRwJyAnJChERVNURElSKSQobWFu MWRpcikvJCRmJyI7IFwKLUBAIC0yNzcsNyArMjc3LDcgQEAKLSAKLSBpbnN0YWxsLW1hbjU6ICQo TUFONVMpCi0gCXRlc3QgLXogIiQobWFuNWRpcikiIHx8ICQobWtpbnN0YWxsZGlycykgIiQoREVT VERJUikkKG1hbjVkaXIpIgotLQlAbGlzdD0nJChNQU5TKSc7IGZvciBwIGluICQkbGlzdDsgZG8g XAotKwlAbGlzdD0nJChNQU41UyknOyBmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKLSAJICBpZiB0ZXN0 IC1mICIkJHAiOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAotIAkgIGY9YGVj aG8gJCRwIHwgc2VkIC1lICdzfF4uKi98fCdgOyBcCi0gCSAgZWNobyAiICQoSU5TVEFMTF9EQVRB KSAnJCRkJCRwJyAnJChERVNURElSKSQobWFuNWRpcikvJCRmJyI7IFwKLUBAIC0yODgsNyArMjg4 LDcgQEAKLSAKLSB1bmluc3RhbGwtbWFuMToKLSAJQHRlc3QgLW4gIiQobWFuMWRpcikiIHx8IGV4 aXQgMDsgXAotLQlmaWxlcz1geyBsMj0nJChNQU5TKSc7IGZvciBpIGluICQkbDI7IGRvIGVjaG8g IiQkaSI7IGRvbmUgfCBcCi0rCWZpbGVzPWB7IGwyPSckKE1BTjFTKSc7IGZvciBpIGluICQkbDI7 IGRvIGVjaG8gIiQkaSI7IGRvbmUgfCBcCi0gCSAgc2VkIC1uICcvXC4xW2Etel0qJCQvcCc7IFwK LSAJfSB8IHNlZCAtZSAncywuKi8sLDtoO3MsLipcLiwsO3MsXlteMV1bMC05YS16XSokJCwxLDt4 JyBcCi0gCSAgICAgIC1lICdzLFwuWzAtOWEtel0qJCQsLDskKHRyYW5zZm9ybSk7RztzLFxuLC4s J2A7IFwKLUBAIC0yOTgsNyArMjk4LDcgQEAKLSAKLSB1bmluc3RhbGwtbWFuNToKLSAJQHRlc3Qg LW4gIiQobWFuNWRpcikiIHx8IGV4aXQgMDsgXAotLQlmaWxlcz1geyBsMj0nJChNQU5TKSc7IGZv ciBpIGluICQkbDI7IGRvIGVjaG8gIiQkaSI7IGRvbmUgfCBcCi0rCWZpbGVzPWB7IGwyPSckKE1B TjVTKSc7IGZvciBpIGluICQkbDI7IGRvIGVjaG8gIiQkaSI7IGRvbmUgfCBcCi0gCSAgc2VkIC1u ICcvXC41W2Etel0qJCQvcCc7IFwKLSAJfSB8IHNlZCAtZSAncywuKi8sLDtoO3MsLipcLiwsO3Ms XlteNV1bMC05YS16XSokJCw1LDt4JyBcCi0gCSAgICAgIC1lICdzLFwuWzAtOWEtel0qJCQsLDsk KHRyYW5zZm9ybSk7RztzLFxuLC4sJ2A7IFwKLQotCi0KLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItY3ZzLzIwMTMtMDQvbXNnMDAwNzAuaHRtbAotCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdl TG9nCTIwMTMvMDQvMDcgMDY6MDQ6NTgJMS4xNDM3Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9n CTIwMTMvMDQvMDcgMDY6MjA6MTkJMS4xNDM4Ci0jIyAtNSw2ICs1LDggQEAKLSAJKiBNYWtlZmls ZS5pbiAoaW5zdGFsbC1tYW4xLCBpbnN0YWxsLW1hbjUsIHVuaW5zdGFsbC1tYW4xKQotIAkodW5p bnN0YWxsLW1hbjUpOiBSZXBsYWNlICQoTUFOUykgYnkgJChNQU4xUykgYW5kICQoTUFONVMpIHJl c3BlY3RpdmVseS4KLSAKLSsJKiBNYWtlZmlsZS5pbiAoZ2RiLjEsIGdkYnNlcnZlci4xLCBnZGJp bml0LjUpOiBVc2UgJChzcmNkaXIpLgotKwotIDIwMTMtMDQtMDYgIEphbiBLcmF0b2NodmlsICA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAJICAgIEVsaSBaYXJldHNraWkgIDxlbGl6QGdu dS5vcmc+Ci0gCi0tLS0gc3JjL2dkYi9kb2MvTWFrZWZpbGUuaW4JMjAxMy8wNC8wNyAwNjowNDo1 OAkxLjYwCi0rKysgc3JjL2dkYi9kb2MvTWFrZWZpbGUuaW4JMjAxMy8wNC8wNyAwNjoyMDoxOQkx LjYxCi1AQCAtNTkzLDIxICs1OTMsMjEgQEAKLSAjIE1hbiBwYWdlcwotIGdkYi4xOiAkKEdEQl9E T0NfRklMRVMpCi0gCXRvdWNoICRACi0tCS0kKFRFWEkyUE9EKSAkKE1BTkNPTkYpIC1EZ2RiIDwg Z2RiLnRleGluZm8gPiBnZGIucG9kCi0rCS0kKFRFWEkyUE9EKSAkKE1BTkNPTkYpIC1EZ2RiIDwg JChzcmNkaXIpL2dkYi50ZXhpbmZvID4gZ2RiLnBvZAotIAktKCQoUE9EMk1BTjEpIGdkYi5wb2Qg fCBzZWQgLWUgJy9eLmlmIG4gLm5hL2QnID4gJEAuVCQkJCQgJiYgXAotIAkJbXYgLWYgJEAuVCQk JCQgJEApIHx8IChybSAtZiAkQC5UJCQkJCAmJiBleGl0IDEpCi0gCXJtIC1mIGdkYi5wb2QKLSAK LSBnZGJzZXJ2ZXIuMTogJChHREJfRE9DX0ZJTEVTKQotIAl0b3VjaCAkQAotLQktJChURVhJMlBP RCkgJChNQU5DT05GKSAtRGdkYnNlcnZlciA8IGdkYi50ZXhpbmZvID4gZ2Ric2VydmVyLnBvZAot KwktJChURVhJMlBPRCkgJChNQU5DT05GKSAtRGdkYnNlcnZlciA8ICQoc3JjZGlyKS9nZGIudGV4 aW5mbyA+IGdkYnNlcnZlci5wb2QKLSAJLSgkKFBPRDJNQU4xKSBnZGJzZXJ2ZXIucG9kIHwgc2Vk IC1lICcvXi5pZiBuIC5uYS9kJyA+ICRALlQkJCQkICYmIFwKLSAJCW12IC1mICRALlQkJCQkICRA KSB8fCAocm0gLWYgJEAuVCQkJCQgJiYgZXhpdCAxKQotIAlybSAtZiBnZGJzZXJ2ZXIucG9kCi0g Ci0gZ2RiaW5pdC41OiAkKEdEQl9ET0NfRklMRVMpCi0gCXRvdWNoICRACi0tCS0kKFRFWEkyUE9E KSAkKE1BTkNPTkYpIC1EZ2RiaW5pdCA8IGdkYi50ZXhpbmZvID4gZ2RiaW5pdC5wb2QKLSsJLSQo VEVYSTJQT0QpICQoTUFOQ09ORikgLURnZGJpbml0IDwgJChzcmNkaXIpL2dkYi50ZXhpbmZvID4g Z2RiaW5pdC5wb2QKLSAJLSgkKFBPRDJNQU41KSBnZGJpbml0LnBvZCB8IHNlZCAtZSAnL14uaWYg biAubmEvZCcgPiAkQC5UJCQkJCAmJiBcCi0gCQltdiAtZiAkQC5UJCQkJCAkQCkgfHwgKHJtIC1m ICRALlQkJCQkICYmIGV4aXQgMSkKLSAJcm0gLWYgZ2RiaW5pdC5wb2QKLQotCi0KLWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTU0MTMKLWh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDUvbXNnMDAwNjMuaHRtbAotCi0jIyMgc3JjL2dk Yi9DaGFuZ2VMb2cJMjAxMy8wNC8yNiAxNDoxMzoxMwkxLjE1MjYwLjIuNTAKLSMjIyBzcmMvZ2Ri L0NoYW5nZUxvZwkyMDEzLzA1LzA3IDE3OjA0OjU2CTEuMTUyNjAuMi41MQotIyMgLTEsMyArMSwx MCBAQAotKzIwMTMtMDUtMDcgIFNlcmdpbyBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhh dC5jb20+Ci0rCi0rCVBSIGJyZWFrcG9pbnRzLzE1NDEzOgotKwkqIGJyZWFrcG9pbnQuYyAoY29u ZGl0aW9uX2NvbXBsZXRlcik6IFNpbXBsaWZ5IHRoZSBjb2RlIHRvCi0rCWRpc2NvbnNpZGVyIG11 bHRpcGxlIGxvY2F0aW9ucyBvZiBicmVha3BvaW50cyB3aGVuIGNvbXBsZXRpbmcgdGhlCi0rCSJj b25kaXRpb24iIGNvbW1hbmQuCi0rCi0gMjAxMy0wNC0yNiAgSm9lbCBCcm9iZWNrZXIgIDxicm9i ZWNrZXJAYWRhY29yZS5jb20+Ci0gCi0gCSogdmVyc2lvbi5pbjogU2V0IHZlcnNpb24gdG8gNy42 LjAuMjAxMzA0MjYtY3ZzLgotLS0tIHNyYy9nZGIvYnJlYWtwb2ludC5jCTIwMTMvMDQvMjUgMDg6 MTU6MzQJMS43NDUuMi41Ci0rKysgc3JjL2dkYi9icmVha3BvaW50LmMJMjAxMy8wNS8wNyAxNzow NDo1NwkxLjc0NS4yLjYKLUBAIC0xMDE1LDI3ICsxMDE1LDE0IEBACi0gICAgICAgbGVuID0gc3Ry bGVuICh0ZXh0KTsKLSAKLSAgICAgICBBTExfQlJFQUtQT0lOVFMgKGIpCi0tICAgICAgewotLQlp bnQgc2luZ2xlID0gYi0+bG9jLT5uZXh0ID09IE5VTEw7Ci0tCXN0cnVjdCBicF9sb2NhdGlvbiAq bG9jOwotLQlpbnQgY291bnQgPSAxOwotLQotLQlmb3IgKGxvYyA9IGItPmxvYzsgbG9jOyBsb2Mg PSBsb2MtPm5leHQpCi0tCSAgewotLQkgICAgY2hhciBsb2NhdGlvbls1MF07Ci0tCi0tCSAgICBp ZiAoc2luZ2xlKQotLQkgICAgICB4c25wcmludGYgKGxvY2F0aW9uLCBzaXplb2YgKGxvY2F0aW9u KSwgIiVkIiwgYi0+bnVtYmVyKTsKLS0JICAgIGVsc2UKLS0JICAgICAgeHNucHJpbnRmIChsb2Nh dGlvbiwgc2l6ZW9mIChsb2NhdGlvbiksICAiJWQuJWQiLCBiLT5udW1iZXIsCi0tCQkJIGNvdW50 KTsKLSsJewotKwkgIGNoYXIgbnVtYmVyWzUwXTsKLSAKLS0JICAgIGlmIChzdHJuY21wIChsb2Nh dGlvbiwgdGV4dCwgbGVuKSA9PSAwKQotLQkgICAgICBWRUNfc2FmZV9wdXNoIChjaGFyX3B0ciwg cmVzdWx0LCB4c3RyZHVwIChsb2NhdGlvbikpOwotKwkgIHhzbnByaW50ZiAobnVtYmVyLCBzaXpl b2YgKG51bWJlciksICIlZCIsIGItPm51bWJlcik7Ci0gCi0tCSAgICArK2NvdW50OwotLQkgIH0K LS0gICAgICB9Ci0rCSAgaWYgKHN0cm5jbXAgKG51bWJlciwgdGV4dCwgbGVuKSA9PSAwKQotKwkg ICAgVkVDX3NhZmVfcHVzaCAoY2hhcl9wdHIsIHJlc3VsdCwgeHN0cmR1cCAobnVtYmVyKSk7Ci0r CX0KLSAKLSAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICB9Ci0jIyMgc3JjL2dkYi90ZXN0c3Vp dGUvQ2hhbmdlTG9nCTIwMTMvMDUvMDMgMTY6MjY6MzIJMS4zNTgwLjIuMjAKLSMjIyBzcmMvZ2Ri L3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMy8wNS8wNyAxNzowNDo1NwkxLjM1ODAuMi4yMQotIyMg LTEsMyArMSwxMSBAQAotKzIwMTMtMDUtMDcgIFNlcmdpbyBEdXJpZ2FuIEp1bmlvciAgPHNlcmdp b2RqQHJlZGhhdC5jb20+Ci0rCi0rCVBSIGJyZWFrcG9pbnRzLzE1NDEzOgotKwkqIGdkYi5iYXNl L3BlbmRpbmcuZXhwOiBBZGQgdGVzdCBmb3IgY29tcGxldGlvbiBvZiB0aGUgImNvbmRpdGlvbiIK LSsJY29tbWFuZCBmb3IgcGVuZGluZyBicmVha3BvaW50cy4KLSsJKiBnZGIubGluZXNwZWMvbGlu ZXNwZWMuZXg6IEFkZCB0ZXN0IGZvciBjb21wbGV0aW9uIG9mIHRoZQotKwkiY29uZGl0aW9uIiBj b21tYW5kIHdoZW4gZGVhbGluZyB3aXRoIG11bHRpcGxlIGxvY2F0aW9ucy4KLSsKLSAyMDEzLTA1 LTAzICBIYWZpeiBBYmlkIFFhZGVlciAgPGFiaWRoQGNvZGVzb3VyY2VyeS5jb20+Ci0gCi0gCSog c3RhdHVzLXN0b3AuZXhwICh0ZXN0X3RzdGFydF90c3RhcnQpOiBDaGVjayBmb3IgZXJyb3IKLS0t LSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wZW5kaW5nLmV4cAkyMDEzLzAxLzAxIDA2OjMz OjI2CTEuMjcKLSsrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wZW5kaW5nLmV4cAkyMDEz LzA1LzA3IDE3OjA0OjU3CTEuMjcuMi4xCi1AQCAtNTUsNiArNTUsOSBAQAotICAgICAgfQotIH0K LSAKLSsjIENvbXBsZXRlIHRoZSBjb25kaXRpb24gKFBSIDE1NDEzKS4KLStnZGJfdGVzdCAiY29t cGxldGUgY29uZGl0aW9uICIgImNvbmRpdGlvbiAxIgotKwotIGdkYl90ZXN0ICJpbmZvIGJyZWFr IiBcCi0gICAgICJOdW0gICAgIFR5cGVcWyBcXStEaXNwIEVuYiBBZGRyZXNzXFsgXF0rV2hhdC4q Ci0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeS4qUEVORElORy4qcGVuZGZ1 bmMxLioiIFwKLS0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIubGluZXNwZWMvbGluZXNwZWMuZXhw CTIwMTMvMDEvMDEgMDY6NDE6MjQJMS42Ci0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmxpbmVz cGVjL2xpbmVzcGVjLmV4cAkyMDEzLzA1LzA3IDE3OjA0OjU3CTEuNi4yLjEKLUBAIC02Myw2ICs2 MywxMCBAQAotICAgICAiQnJlYWtwb2ludCAkZGVjaW1hbCBhdCAkaGV4OiBkdXBuYW1lOmxhYmVs LiBcWyhcXTIgbG9jYXRpb25zXFspXF0iIFwKLSAgICAgIm11bHRpLWxvY2F0aW9uIGJyZWFrIHVz aW5nIGR1cGxpY2F0ZSBmdW5jdGlvbiBuYW1lIGFuZCBsYWJlbCIKLSAKLSsjIFRlc3RpbmcgaWYg dGhlICJjb25kaXRpb24iIGNvbW1hbmQgY29tcGxldGVzIG9ubHkgdGhlIGJyZWFrcG9pbnRzLAot KyMgbm90IHRoZSBsb2NhdGlvbnMuCi0rZ2RiX3Rlc3QgImNvbXBsZXRlIGNvbmRpdGlvbiAiICJj b25kaXRpb24gJGRlY2ltYWxcclxuY29uZGl0aW9uICRkZWNpbWFsXHJcbmNvbmRpdGlvbiAkZGVj aW1hbCIKLSsKLSBnZGJfdGVzdF9ub19vdXRwdXQgInNldCBicmVha3BvaW50IHBlbmRpbmcgb2Zm IiBcCi0gICAgICJkaXNhYmxlIHBlbmRpbmcgYnJlYWtwb2ludHMgZm9yIGxpbmVzcGVjIHRlc3Rz IgotIAotCi0KLQotaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD05 Njc5MTUKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDUvbXNnMDAxNDYu aHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNS8xNyAxODowOTowNQkxLjE1NTY5 Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNS8xNyAyMzowNTowMAkxLjE1NTcwCi0jIyAt MSwzICsxLDkgQEAKLSsyMDEzLTA1LTE3ICBFZGp1bmlvciBNYWNoYWRvICA8ZW1hY2hhZG9AbGlu dXgudm5ldC5pYm0uY29tPgotKwotKwkqIHBwYy1saW51eC1uYXQuYyAocHBjX2xpbnV4X3JlZ2lv bl9va19mb3JfaHdfd2F0Y2hwb2ludCk6IENoZWNrIGlmIHRoZQotKwlyZWdpb24gaXMgb2sgZm9y IGEgaGFyZHdhcmUgd2F0Y2hwb2ludCB1c2luZyB0aGUgbmV3IHB0cmFjZSBpbnRlcmZhY2UKLSsJ b24gUG93ZXIgc2VydmVycy4KLSsKLSAyMDEzLTA1LTE3ICBEb3VnIEV2YW5zICA8ZGplQGdvb2ds ZS5jb20+Ci0gCi0gCSogTkVXUzogTWVudGlvbiBuZXcgbWFpbnRlbmFuY2UgY29tbWFuZHMgY2hl Y2stc3ltdGFicywgYW5kCi0tLS0gc3JjL2dkYi9wcGMtbGludXgtbmF0LmMJMjAxMy8wNS8wNyAw Nzo0MzozMwkxLjExOQotKysrIHNyYy9nZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTMvMDUvMTcgMjM6 MDU6MDAJMS4xMjAKLUBAIC0xNTAzLDE2ICsxNTAzLDE5IEBACi0gICAgICB0byBkZXRlcm1pbmUg dGhlIGhhcmRjb2RlZCB3YXRjaGFibGUgcmVnaW9uIGZvciB3YXRjaHBvaW50cy4gICovCi0gICBp ZiAoaGF2ZV9wdHJhY2VfYm9va2VfaW50ZXJmYWNlICgpKQotICAgICB7Ci0tICAgICAgLyogREFD LWJhc2VkIHByb2Nlc3NvcnMgKGkuZS4sIGVtYmVkZGVkIHByb2Nlc3NvcnMpLCBsaWtlIHRoZSBQ b3dlclBDIDQ0MAotLQkgaGF2ZSByYW5nZWQgd2F0Y2hwb2ludHMgYW5kIGNhbiB3YXRjaCBhbnkg YWNjZXNzIHdpdGhpbiBhbiBhcmJpdHJhcnkKLS0JIG1lbW9yeSByZWdpb24uICBUaGlzIGlzIHVz ZWZ1bCB0byB3YXRjaCBhcnJheXMgYW5kIHN0cnVjdHMsIGZvcgotLQkgaW5zdGFuY2UuICBJdCB0 YWtlcyB0d28gaGFyZHdhcmUgd2F0Y2hwb2ludHMgdGhvdWdoLiAgKi8KLSsgICAgICAvKiBFbWJl ZGRlZCBEQUMtYmFzZWQgcHJvY2Vzc29ycywgbGlrZSB0aGUgUG93ZXJQQyA0NDAgaGF2ZSByYW5n ZWQKLSsJIHdhdGNocG9pbnRzIGFuZCBjYW4gd2F0Y2ggYW55IGFjY2VzcyB3aXRoaW4gYW4gYXJi aXRyYXJ5IG1lbW9yeQotKwkgcmVnaW9uLiBUaGlzIGlzIHVzZWZ1bCB0byB3YXRjaCBhcnJheXMg YW5kIHN0cnVjdHMsIGZvciBpbnN0YW5jZS4gIEl0Ci0rICAgICAgICAgdGFrZXMgdHdvIGhhcmR3 YXJlIHdhdGNocG9pbnRzIHRob3VnaC4gICovCi0gICAgICAgaWYgKGxlbiA+IDEKLS0JICAmJiBi b29rZV9kZWJ1Z19pbmZvLmZlYXR1cmVzICYgUFBDX0RFQlVHX0ZFQVRVUkVfREFUQV9CUF9SQU5H RSkKLSsJICAmJiBib29rZV9kZWJ1Z19pbmZvLmZlYXR1cmVzICYgUFBDX0RFQlVHX0ZFQVRVUkVf REFUQV9CUF9SQU5HRQotKwkgICYmIHBwY19saW51eF9nZXRfaHdjYXAgKCkgJiBQUENfRkVBVFVS RV9CT09LRSkKLSAJcmV0dXJuIDI7Ci0tICAgICAgZWxzZSBpZiAoYm9va2VfZGVidWdfaW5mby5k YXRhX2JwX2FsaWdubWVudAotLQkgICAgICAgJiYgKGFkZHIgKyBsZW4gPiAoYWRkciAmIH4oYm9v a2VfZGVidWdfaW5mby5kYXRhX2JwX2FsaWdubWVudCAtIDEpKQotLQkJICAgKyBib29rZV9kZWJ1 Z19pbmZvLmRhdGFfYnBfYWxpZ25tZW50KSkKLSsgICAgICAvKiBTZXJ2ZXIgcHJvY2Vzc29ycyBw cm92aWRlIG9uZSBoYXJkd2FyZSB3YXRjaHBvaW50IGFuZCBhZGRyK2xlbiBzaG91bGQKLSsgICAg ICAgICBmYWxsIGluIHRoZSB3YXRjaGFibGUgcmVnaW9uIHByb3ZpZGVkIGJ5IHRoZSBwdHJhY2Ug aW50ZXJmYWNlLiAgKi8KLSsgICAgICBpZiAoYm9va2VfZGVidWdfaW5mby5kYXRhX2JwX2FsaWdu bWVudAotKwkgICYmIChhZGRyICsgbGVuID4gKGFkZHIgJiB+KGJvb2tlX2RlYnVnX2luZm8uZGF0 YV9icF9hbGlnbm1lbnQgLSAxKSkKLSsJICAgICAgKyBib29rZV9kZWJ1Z19pbmZvLmRhdGFfYnBf YWxpZ25tZW50KSkKLSAJcmV0dXJuIDA7Ci0gICAgIH0KLSAgIC8qIGFkZHIrbGVuIG11c3QgZmFs bCBpbiB0aGUgOCBieXRlIHdhdGNoYWJsZSByZWdpb24gZm9yIERBQlItYmFzZWQKCmRpZmYgLS1n aXQgYS9nZGItdmRzby1nY29yZS5wYXRjaCBiL2dkYi12ZHNvLWdjb3JlLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmRiYzgxLi4wMDAwMDAwCi0tLSBhL2dkYi12ZHNvLWdj b3JlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTMtMDUvbXNnMDAwNDIuaHRtbAotU3ViamVjdDogW3Bh dGNoXSBGaXggZ2NvcmUgZm9yIHZEU08gKG9uIHBwYzY0KQotCi1IaSwKLQotb24gcHBjNjQgR05V L0xpbnV4IG9uZSBnZXRzIGluIGxpdmUgcHJvY2VzcyBvciBrZXJuZWwtZ2VuZXJhdGVkIGNvcmUg ZmlsZToKLQotIzAgIDB4MDAwMDNmZmY5ZTk0NmIzYyBpbiBfX3BhdXNlX25vY2FuY2VsICgpIGZy b20gL2xpYjY0L2xpYmMuc28uNgotIzEgIDB4MDAwMDAwMDAxMDAwMDgwYyBpbiBoYW5kbGVfYWxy bSAoc2lnbm89MTQpIGF0IHNtYWxsLmM6MTYKLSMyICA8c2lnbmFsIGhhbmRsZXIgY2FsbGVkPgot IzMgIDB4MDAwMDNmZmY5ZTk0NmIzYyBpbiBfX3BhdXNlX25vY2FuY2VsICgpIGZyb20gL2xpYjY0 L2xpYmMuc28uNgotIzQgIDB4MDAwMDAwMDAxMDAwMDkxNCBpbiBtYWluIChhcmdjPTIsIGFyZ3Y9 MHgzZmZmY2QwMGRlYzgpIGF0IHNtYWxsLmM6MzIKLQotd2hpbGUgd2l0aCBnY29yZSBnZW5lcmF0 ZWQgY29yZSBmaWxlIG9uZSBnZXRzOgotCi0jMCAgMHgwMDAwM2ZmZjllOTQ2YjNjIGluIF9fcGF1 c2Vfbm9jYW5jZWwgKCkgZnJvbSAvbGliNjQvbGliYy5zby42Ci0jMSAgMHgwMDAwMDAwMDEwMDAw ODBjIGluIGhhbmRsZV9hbHJtIChzaWdubz0xNCkgYXQgc21hbGwuYzoxNgotIzIgIDB4MDAwMDNm ZmY5ZWE3MDQ0OCBpbiA/PyAoKQotIzMgIDB4MDAwMDAwMDAxMDAwMDkxNCBpbiBtYWluIChhcmdj PTIsIGFyZ3Y9MHgzZmZmY2QwMGRlYzgpIGF0IHNtYWxsLmM6MzIKLQotVGhpcyBpcyBiZWNhdXNl IG9uIHBwYzY0IEdOVS9MaW51eCB0aGUgc2lnbmFsIGhhbmRsZXIgZnJhbWUgaXMgaW4gdkRTTyAo YW5kCi1ub3QgaW4gbGliYyBhcyBvbiB4ODZfNjQgR05VL0xpbnV4KS4gIEFuZCBpZiBvbmUgaGFz IGtlcm5lbC1kZWJ1Z2luZm8KLWluc3RhbGxlZCBHREIgZ2NvcmUgdGhpbmtzIGl0IGNhbiBvbWl0 IHRoZSB2RFNPIHBhZ2UgZnJvbSBjb3JlIGZpbGUuCi0KLUFzIHZEU08gY2Fubm90IGJlIHJlbGlh Ymx5IGZvdW5kIGZyb20gbGlua19tYXAgaXQgc2hvdWxkIGJlIHJhdGhlciBmdWxseQotcHJlc2Vu dCBpbiB0aGUgY29yZSBmaWxlLiAgV2hpY2ggYWxzbyBnY29yZV9jcmVhdGVfY2FsbGJhY2sgdHJp ZXMgdG8gZG8gYnV0IGl0Ci1nZXRzIG1pc3Rha2VuIGJ5IHRoZSBzZXBhcmF0ZSBkZWJ1ZyBpbmZv LgotCi1JdCBzZWVtcyBwcmV0dHkgb2J2aW91cyBwYXRjaCB0byBtZS4KLQotCi1UaGFua3MsCi1K YW4KLQotCi1nZGIvCi0yMDEzLTA1LTAzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+Ci0KLQkqIGdjb3JlLmMgKGdjb3JlX2NyZWF0ZV9jYWxsYmFjayk6IElnbm9y ZSBzZWN0aW9ucyB3aXRoCi0Jc2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluayAhPSBOVUxM LgotCi0tLS0gZ2RiLTcuNi1vcmlnL2dkYi9nY29yZS5jCTIwMTMtMDEtMDEgMDc6MzI6NDIuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNi9nZGIvZ2NvcmUuYwkyMDEzLTA1LTAzIDAzOjMxOjM0 Ljc5NTMxMjk5NiArMDIwMAotQEAgLTQyOCw4ICs0MjgsOSBAQCBnY29yZV9jcmVhdGVfY2FsbGJh Y2sgKENPUkVfQUREUiB2YWRkciwKLSAKLSAJICAgICBUaGlzIEJGRCB3YXMgc3ludGhlc2l6ZWQg ZnJvbSByZWFkaW5nIHRhcmdldCBtZW1vcnksCi0gCSAgICAgd2UgZG9uJ3Qgd2FudCB0byBvbWl0 IHRoYXQuICAqLwotLQkgIGlmICgoKHZhZGRyID49IHN0YXJ0ICYmIHZhZGRyICsgc2l6ZSA8PSBl bmQpCi0tCSAgICAgICB8fCAoc3RhcnQgPj0gdmFkZHIgJiYgZW5kIDw9IHZhZGRyICsgc2l6ZSkp Ci0rCSAgaWYgKG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsgPT0gTlVM TAotKwkgICAgICAmJiAoKHZhZGRyID49IHN0YXJ0ICYmIHZhZGRyICsgc2l6ZSA8PSBlbmQpCi0r CSAgICAgICAgICB8fCAoc3RhcnQgPj0gdmFkZHIgJiYgZW5kIDw9IHZhZGRyICsgc2l6ZSkpCi0g CSAgICAgICYmICEoYmZkX2dldF9maWxlX2ZsYWdzIChhYmZkKSAmIEJGRF9JTl9NRU1PUlkpKQot IAkgICAgewotIAkgICAgICBmbGFncyAmPSB+KFNFQ19MT0FEIHwgU0VDX0hBU19DT05URU5UUyk7 Ci0KCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IGJiZTZlZGYuLjQ3MWUw MGUgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0yNywyMiArMjcsMjMg QEAKIFN1bW1hcnk6IEEgR05VIHNvdXJjZS1sZXZlbCBkZWJ1Z2dlciBmb3IgQywgQysrLCBGb3J0 cmFuLCBHbyBhbmQgb3RoZXIgbGFuZ3VhZ2VzCiBOYW1lOiAlez9zY2xfcHJlZml4fWdkYgogCi0j Z2xvYmFsIHNuYXAgICAgICAgMjAxMzA0MjMKKyMgNmU1Yzk1ZTZjZjFlM2MzN2JkM2E4MjJjYTll NjcyMWNhYWI5N2E4NQorJWdsb2JhbCBzbmFwICAgICAgIDIwMTMwNzMxCiAjIEZyZWV6ZSBpdCB3 aGVuIEdEQiBnZXRzIGJyYW5jaGVkCi0lZ2xvYmFsIHNuYXBzcmMgICAgMjAxMzAzMTIKKyVnbG9i YWwgc25hcHNyYyAgICAyMDEzMDczMQogIyBTZWUgdGltZXN0YW1wIG9mIHNvdXJjZSBnbnVsaWIg aW5zdGFsbGVkIGludG8gZ2RiL2dudWxpYi8gLgogJWdsb2JhbCBzbmFwZ251bGliIDIwMTIxMjEz Ci1WZXJzaW9uOiA3LjYKK1ZlcnNpb246IDcuNi41MC4le3NuYXB9CiAKICMgVGhlIHJlbGVhc2Ug YWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEu CiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0g ZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogMzYlez9k aXN0fQorUmVsZWFzZTogMSV7P2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdp dGggZXhjZXB0aW9ucyBhbmQgR1BMdjIrIGFuZCBHUEx2Misgd2l0aCBleGNlcHRpb25zIGFuZCBH UEwrIGFuZCBMR1BMdjIrIGFuZCBCU0QgYW5kIFB1YmxpYyBEb21haW4KIEdyb3VwOiBEZXZlbG9w bWVudC9EZWJ1Z2dlcnMKICMgRG8gbm90IHByb3ZpZGUgVVJMIGZvciBzbmFwc2hvdHMgYXMgdGhl IGZpbGUgbGFzdHMgdGhlcmUgb25seSBmb3IgMiBkYXlzLgogIyBmdHA6Ly9zb3VyY2V3YXJlLm9y Zy9wdWIvZ2RiL3JlbGVhc2VzL2dkYi0le3ZlcnNpb259LnRhci5iejIKLVNvdXJjZTogZnRwOi8v c291cmNld2FyZS5vcmcvcHViL2dkYi9yZWxlYXNlcy9nZGItJXt2ZXJzaW9ufS50YXIuYnoyCitT b3VyY2U6IGdkYi0le3ZlcnNpb259LWN2cy50YXIuYnoyCiBCdWlsZHJvb3Q6ICUobWt0ZW1wIC11 ZCAle190bXBwYXRofS8le25hbWV9LSV7dmVyc2lvbn0tJXtyZWxlYXNlfS1YWFhYWFgpCiBVUkw6 IGh0dHA6Ly9nbnUub3JnL3NvZnR3YXJlL2dkYi8KIApAQCAtNTEsNyArNTIsNyBAQCBPYnNvbGV0 ZXM6IGRldnRvb2xzZXQtMS4wLSV7cGtnX25hbWV9CiAlZW5kaWYKIAogIyBGb3Igb3VyIGNvbnZl bmllbmNlCi0lZ2xvYmFsIGdkYl9zcmMgJXtwa2dfbmFtZX0tJXt2ZXJzaW9ufQorJWdsb2JhbCBn ZGJfc3JjICV7cGtnX25hbWV9LSV7dmVyc2lvbn0tY3ZzCiAlZ2xvYmFsIGdkYl9idWlsZCBidWls ZC0le190YXJnZXRfcGxhdGZvcm19CiAKICMgTWFrZSBzdXJlIHdlIGdldCByaWQgb2YgdGhlIG9s ZCBwYWNrYWdlIGdkYjY0LCBub3cgdGhhdCB3ZSBoYXZlIHVuaWZpZWQKQEAgLTI2MiwxMiArMjYz LDcgQEAgUGF0Y2gyMzE6IGdkYi02LjMtYnoyMDI2ODktZXhlYy1mcm9tLXB0aHJlYWQtdGVzdC5w YXRjaAogCiAjIEJhY2twb3J0ZWQgZml4dXBzIHBvc3QgdGhlIHNvdXJjZSB0YXJiYWxsLgogI1hk cm9wOiBKdXN0IGJhY2twb3J0cy4KLVBhdGNoMjMyOiBnZGItdXBzdHJlYW0ucGF0Y2gKLVBhdGNo ODI4OiBnZGItdXBzdHJlYW0tbWFuLWdjb3JlLTFvZjIucGF0Y2gKLVBhdGNoODI5OiBnZGItdXBz dHJlYW0tbWFuLWdjb3JlLTJvZjIucGF0Y2gKLSMgQmFja3BvcnRlZCBQeXRob24gZnJhbWUgZmls dGVycyAoUGhpbCBNdWxkb29uKS4KLVBhdGNoODM2OiBnZGItdXBzdHJlYW0tZnJhbWVmaWx0ZXJz LTFvZjIucGF0Y2gKLVBhdGNoODM3OiBnZGItdXBzdHJlYW0tZnJhbWVmaWx0ZXJzLTJvZjIucGF0 Y2gKKyNQYXRjaDIzMjogZ2RiLXVwc3RyZWFtLnBhdGNoCiAKICMgVGVzdGNhc2UgZm9yIFBQQyBQ b3dlcjYvREZQIGluc3RydWN0aW9ucyBkaXNhc3NlbWJseSAoQlogMjMwMDAwKS4KICM9ZmVkb3Jh dGVzdCtwcGMKQEAgLTUwNCwyMCArNTAwLDYgQEAgUGF0Y2g1NDg6IGdkYi10ZXN0LWV4cHItY3Vt dWxhdGl2ZS1hcmNoZXIucGF0Y2gKICM9cHVzaCt3b3JrCiBQYXRjaDU3OTogZ2RiLTcuMi41MC1z cGFyYy1hZGQtd29ya2Fyb3VuZC10by1icm9rZW4tZGVidWctZmlsZXMucGF0Y2gKIAotIyBGaXgg ZGxvcGVuIG9mIGxpYnB0aHJlYWQuc28sIHBhdGNoZWQgZ2xpYmMgcmVxdWlyZWQgKEdhcnkgQmVu c29uLCBCWiA2Njk0MzIpLgotIyBGaXggY3Jhc2ggcmVncmVzc2lvbiBmcm9tIHRoZSBkbG9wZW4g b2YgbGlicHRocmVhZC5zbyBmaXggKEJaIDkxMTcxMikuCi0jIEZpeCBwZXJmb3JtYW5jZSByZWdy ZXNzaW9uIHdoZW4gaW5mZXJpb3Igb3BlbnMgbWFueSBsaWJyYXJpZXMgKEdhcnkgQmVuc29uKS4K LSM9ZHJvcAotUGF0Y2g3MTg6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS0xb2Y5LnBhdGNoCi1QYXRj aDcxOTogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTJvZjkucGF0Y2gKLVBhdGNoNzIwOiBnZGItZGxv cGVuLXN0YXAtcHJvYmUtM29mOS5wYXRjaAotUGF0Y2g3MjE6IGdkYi1kbG9wZW4tc3RhcC1wcm9i ZS00b2Y5LnBhdGNoCi1QYXRjaDcyMjogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTVvZjkucGF0Y2gK LVBhdGNoNzIzOiBnZGItZGxvcGVuLXN0YXAtcHJvYmUtNm9mOS5wYXRjaAotUGF0Y2g4MjI6IGdk Yi1kbG9wZW4tc3RhcC1wcm9iZS03b2Y5LnBhdGNoCi1QYXRjaDgyNzogZ2RiLWRsb3Blbi1zdGFw LXByb2JlLThvZjkucGF0Y2gKLVBhdGNoNjE5OiBnZGItZGxvcGVuLXN0YXAtcHJvYmUtOW9mOS5w YXRjaAotCiAjIFdvcmsgYXJvdW5kIFBSIGxpYmMvMTMwOTcgImxpbnV4LXZkc28uc28uMSIgd2Fy bmluZyBtZXNzYWdlLgogIz1wdXNoCiBQYXRjaDYyNzogZ2RiLWdsaWJjLXZkc28td29ya2Fyb3Vu ZC5wYXRjaApAQCAtNTMzLDggKzUxNSw2IEBAIFBhdGNoNjQyOiBnZGItcmVhZGxpbmU2Mi1hc2st bW9yZS1yaC5wYXRjaAogIyBQcmludCByZWFzb25zIGZvciBmYWlsZWQgYXR0YWNoL3NwYXduIGlu Y2wuIFNFTGludXggZGVueV9wdHJhY2UgKEJaIDc4Njg3OCkuCiAjPXB1c2gKIFBhdGNoNjUzOiBn ZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBhdGNoCi0jPWZlZG9yYQotUGF0Y2g2NTc6IGdk Yi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjVjb25maWd1cmUucGF0Y2gKIAogIyBXb3JrYXJvdW5k IGNyYXNoZXMgZnJvbSBzdGFsZSBmcmFtZV9pbmZvIHBvaW50ZXIgKEJaIDgwNDI1NikuCiAjPWZl ZG9yYQpAQCAtNTY5LDI0ICs1NDksNiBAQCBQYXRjaDgxODogZ2RiLXJoYno3OTU0MjQtYml0cG9z LWxhenl2YWx1ZS5wYXRjaAogIz1mZWRvcmF0ZXN0CiBQYXRjaDgzMjogZ2RiLXJoYno5NDc1NjQt ZmluZHZhci1hc3NlcnRpb24tZnJhbWUtZmFpbGVkLXRlc3RjYXNlLnBhdGNoCiAKLSMgRml4IGdj b3JlIGZvciB2RFNPIChvbiBwcGM2NCkuCi0jPWRyb3AKLVBhdGNoODM0OiBnZGItdmRzby1nY29y ZS5wYXRjaAotCi0jIEZpeCBuZWVkbGVzcyBleHBhbnNpb24gb2Ygbm9uLWdkYmluZGV4IHN5bXRh YnMgKERvdWcgRXZhbnMpLgotIz1kcm9wCi1QYXRjaDgzNTogZ2RiLXBzeW10YWItZXhwYW5kLnBh dGNoCi0KLSMgRml4IEMrKyBsb29rdXBzIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gKERvdWcgRXZh bnMsIEJaIDk3MjY3NykuCi0jPWRyb3AKLVBhdGNoODM4OiBnZGItY3h4LXBlcmZvcm1hbmNlLTFv ZjIucGF0Y2gKLVBhdGNoODM5OiBnZGItY3h4LXBlcmZvcm1hbmNlLTJvZjIucGF0Y2gKLQotIyBb cHBjXSBTdXBwb3J0IFBvd2VyOCBDUFUgKElCTSwgQlogNzMxODc1KS4KLSM9ZHJvcAotUGF0Y2g4 NDA6IGdkYi1wb3dlcjgtMW9mMi5wYXRjaAotUGF0Y2g4NDE6IGdkYi1wb3dlcjgtMm9mMi5wYXRj aAotCiAlaWYgMCV7IT9yaGVsOjF9IHx8IDAlez9yaGVsfSA+IDYKICMgUkxfU1RBVEVfRkVET1JB X0dEQiB3b3VsZCBub3QgYmUgZm91bmQgZm9yOgogIyBQYXRjaDY0MjogZ2RiLXJlYWRsaW5lNjIt YXNrLW1vcmUtcmgucGF0Y2gKQEAgLTc5Miw5ICs3NTQsNyBAQCBmaW5kIC1uYW1lICIqLmluZm8q Inx4YXJncyBybSAtZgogJXBhdGNoMiAtcDEKIAogJXBhdGNoMzQ5IC1wMQotJXBhdGNoMjMyIC1w MQotJXBhdGNoODI4IC1wMQotJXBhdGNoODI5IC1wMQorI3BhdGNoMjMyIC1wMQogJXBhdGNoMSAt cDEKICVwYXRjaDMgLXAxCiAKQEAgLTg4MywxOSArODQzLDkgQEAgZmluZCAtbmFtZSAiKi5pbmZv KiJ8eGFyZ3Mgcm0gLWYKICVwYXRjaDU0NyAtcDEKICVwYXRjaDU0OCAtcDEKICVwYXRjaDU3OSAt cDEKLSVwYXRjaDcxOCAtcDEKLSVwYXRjaDcxOSAtcDEKLSVwYXRjaDcyMCAtcDEKLSVwYXRjaDcy MSAtcDEKLSVwYXRjaDcyMiAtcDEKLSVwYXRjaDcyMyAtcDEKLSVwYXRjaDgyMiAtcDEKLSVwYXRj aDgyNyAtcDEKLSVwYXRjaDYxOSAtcDEKICVwYXRjaDYyNyAtcDEKICVwYXRjaDYzNCAtcDEKICVw YXRjaDY1MyAtcDEKLSVwYXRjaDY1NyAtcDEKICVwYXRjaDY2MSAtcDEKICVwYXRjaDY5MCAtcDEK ICVwYXRjaDY5OCAtcDEKQEAgLTkwOCwxOSArODU4LDcgQEAgZmluZCAtbmFtZSAiKi5pbmZvKiJ8 eGFyZ3Mgcm0gLWYKICVwYXRjaDgxNyAtcDEKICVwYXRjaDgxOCAtcDEKICVwYXRjaDgzMiAtcDEK LSVwYXRjaDgzNCAtcDEKLSVwYXRjaDgzNSAtcDEKLSVwYXRjaDgzOCAtcDEKLSVwYXRjaDgzOSAt cDEKLSVwYXRjaDg0MCAtcDEKLSVwYXRjaDg0MSAtcDEKLQotJXBhdGNoODM2IC1wMQotJXBhdGNo ODM3IC1wMQotJWlmIDAlez9zY2w6MX0KLSVwYXRjaDgzNiAtcDEgLVIKLSVwYXRjaDgzNyAtcDEg LVIKLSVlbmRpZgorCiAlcGF0Y2gzOTMgLXAxCiAlaWYgMCV7IT9lbDU6MX0gfHwgMCV7P3NjbDox fQogJXBhdGNoMzkzIC1wMSAtUgpAQCAtMTQyMiw2ICsxMzYwLDkgQEAgZmkKICVlbmRpZiAjIDAl eyE/ZWw1OjF9IHx8ICIle190YXJnZXRfY3B1fSIgPT0gIm5vYXJjaCIKIAogJWNoYW5nZWxvZwor KiBGcmkgQXVnICAyIDIwMTMgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+IC0gNy42LjUwLjIwMTMwNzMxLTEuZmMyMAorLSBSZWJhc2UgdG8gRlNGIEdEQiA3LjYuNTAu MjAxMzA3MzEgKHByZS03LjYgc25hcHNob3QpLgorCiAqIE1vbiBKdWwgMjkgMjAxMyBKYW4gS3Jh dG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjYtMzYuZmMyMAogLSBSZW1v dmUgJSV7Z2RiX2RvY2Rpcn0sIHJlYnVpbGQgZm9yIHVudmVyc2lvbmVkIGRvY2RpcnMgKGZvciBC WiA5ODY4NzEpLgogCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggMWY5ZmE1 Yi4uMjA1NTE2NCAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xLDIgKzEs MyBAQAogNDk4MTMwN2FhOTYxOWJiZWM1YjczMjYxZTRlNDFjOGQgIGdkYi1saWJzdGRjKystdjMt cHl0aG9uLXIxNTU5NzgudGFyLmJ6MgotZmRhNTcxNzBlNGQxMWNkZGU3NDI1OWNhNTc1NDEyYTgg IGdkYi03LjYudGFyLmJ6MgorOGNlNGU3NTc3OTAxMzllM2YwNzY1MmEyYjQ5ZDc5ZmYgIGdkYi03 LjYuNTAuMjAxMzA2MjQudGFyLmJ6MgorZjE2YzMzYmRkOWQwMDMwZDBjMmE0MmQ1ZjMxOWY4NDEg IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLnRhci5iejIK