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.3.50.20110722. Date: Sat, 27 Jun 2026 23:55:11 GMT Message-ID: <178260451170.1.17695818261534177173.rpms-gdb-3b55f7833b4f@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 3b55f7833b4f6a84b0950fefa0ba9f505fa23f37 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogM2I1NWY3ODMzYjRmNmE4NGIwOTUwZmVmYTBiYTlmNTA1ZmEy M2YzNwogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMS0wNy0yM1QwMDo0MTo1NiswMjow MAogICAgICAgICAgICBTdGF0cyAgOiArMTk1Ny8tMjUyNjAgaW4gMzcgZmlsZShzKQogICAgICAg ICAgICBVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jLzNi NTVmNzgzM2I0ZjZhODRiMDk1MGZlZmEwYmE5ZjUwNWZhMjNmMzc/YnJhbmNoPWdkYi0xNy4yLXJl YmFzZS1mNDQKCiAgICAgICAgICAgIExvZzoKICAgICAgICAgICAgUmViYXNlIHRvIEZTRiBHREIg Ny4zLjUwLjIwMTEwNzIyLgpJbXByb3ZlIGdjYy00LjYgc3RkYXJnIGZhbHNlIHByb2xvZ3VlIGVu ZCB3b3JrYXJvdW5kIChHREIgUFIgMTI0MzUgKyBHQ0MgUFIgNDc0NzEpLgoKLS0tCmRpZmYgLS1n aXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCBjMTY0M2NmLi41OWY3NzA5IDEwMDY0 NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTEsMiArMSwyIEBACiAvbGli c3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIKLS9nZGItNy4yLjkwLjIwMTEwNzAzLnRh ci5iejIKKy9nZGItNy4zLjUwLjIwMTEwNzIyLnRhci5iejIKCmRpZmYgLS1naXQgYS9nZGItNi4z LWlhNjQtc2lnaWxsLTIwMDUxMTE1LnBhdGNoIGIvZ2RiLTYuMy1pYTY0LXNpZ2lsbC0yMDA1MTEx NS5wYXRjaAppbmRleCA4NGQ4M2NlLi5iZjhhMWYxIDEwMDY0NAotLS0gYS9nZGItNi4zLWlhNjQt c2lnaWxsLTIwMDUxMTE1LnBhdGNoCisrKyBiL2dkYi02LjMtaWE2NC1zaWdpbGwtMjAwNTExMTUu cGF0Y2gKQEAgLTEyLDEwICsxMiwxMCBAQCBnZGIvdGVzdHN1aXRlOgogCSogZ2RiLmFyY2gvaWE2 NC1zaWdpbGwuYzogTmV3IHRlc3QuCiAJKiBnZGIuYXJjaC9pYTY0LXNpZ2lsbC5leHA6IERpdHRv LgogCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2lh NjQtc2lnaWxsLmV4cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYXJjaC9pYTY0LXNpZ2lsbC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dk Yi90ZXN0c3VpdGUvZ2RiLmFyY2gvaWE2NC1zaWdpbGwuZXhwCTIwMTEtMDEtMDEgMDA6NTU6MDQu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dk Yi5hcmNoL2lhNjQtc2lnaWxsLmV4cAkyMDExLTA3LTIyIDE5OjE2OjEzLjAwMDAwMDAwMCArMDIw MAogQEAgLTAsMCArMSw0OSBAQAogKyMgICBDb3B5cmlnaHQgMjAwNSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KICsKQEAgLTY2LDEwICs2NiwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4y MDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2lhNjQtc2lnaWxsLmV4cAogK2dkYl90ZXN0 ICJoYW5kbGUgU0lHSUxMIG5vc3RvcCBub3ByaW50IiAiU0lHSUxMLipOby4qTm8uKlllcy4qIiAi aGFuZGxlIHNpZ2lsbCIKICtnZGJfdGVzdCAicnVuIiAiU3RhcnRpbmcgcHJvZ3JhbS4qaWE2NC1z aWdpbGwuKlxbTmV3IHRocmVhZC4qXF0uKmhlbGxvIHdvcmxkLipQcm9ncmFtIGV4aXRlZCBub3Jt YWxseS4iICJydW4gdG8gZXhpdCIKICsgCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIv dGVzdHN1aXRlL2dkYi5hcmNoL2lhNjQtc2lnaWxsLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaWE2NC1zaWdpbGwuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03 LjIuNTAuMjAxMDEyMzEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9pYTY0LXNpZ2lsbC5jCTIwMTEt MDEtMDEgMDA6NTU6MDQuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2lhNjQtc2lnaWxsLmMJMjAxMS0wNy0yMiAxOToxNjoxMy4w MDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsOCBAQAogKyNpbmNsdWRlIDxzdGRpby5oPgogKwpA QCAtNzksMTEgKzc5LDExIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gvaWE2NC1zaWdpbGwuYwogKyAgcmV0dXJuIDA7CiArfQogKwotSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDEyMzEvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvbGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTAxMjMx Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTEtMDEtMDEgMDA6NTQ6MDQuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvbGludXgtbmF0LmMJMjAxMS0wMS0wMSAwMDo1 NTo1OC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0zNjUyLDcgKzM2NTIsOCBAQCByZXRyeToKKy0tLSBn ZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTEtMDctMjIgMTk6MTU6 MDUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbGludXgtbmF0 LmMJMjAxMS0wNy0yMiAxOToxNjoxMy4wMDAwMDAwMDAgKzAyMDAKK0BAIC0zNzMzLDcgKzM3MzMs OCBAQCByZXRyeToKICAgICAgIHRocmVhZHMgY2FuIGJlIGEgYml0IHRpbWUtY29uc3VtaW5nIHNv IGlmIHdlIHdhbnQgZGVjZW50CiAgICAgICBwZXJmb3JtYW5jZSB3aXRoIGhlYXZpbHkgbXVsdGkt dGhyZWFkZWQgcHJvZ3JhbXMsIGVzcGVjaWFsbHkgd2hlbgogICAgICAgdGhleSdyZSB1c2luZyBh IGhpZ2ggZnJlcXVlbmN5IHRpbWVyLCB3ZSdkIGJldHRlciBhdm9pZCBpdCBpZiB3ZQpAQCAtOTMs MTQgKzkzLDMgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2xpbnV4LW5hdC5jCiAg CiAgICBpZiAoV0lGU1RPUFBFRCAoc3RhdHVzKSkKICAgICAgewotQEAgLTM2NzAsNyArMzY3MSw5 IEBAIHJldHJ5OgotIAkgICYmIGluZi0+Y29udHJvbC5zdG9wX3Nvb24gPT0gTk9fU1RPUF9RVUlF VExZCi0gCSAgJiYgc2lnbmFsX3N0b3Bfc3RhdGUgKHNpZ25vKSA9PSAwCi0gCSAgJiYgc2lnbmFs X3ByaW50X3N0YXRlIChzaWdubykgPT0gMAotLQkgICYmIHNpZ25hbF9wYXNzX3N0YXRlIChzaWdu bykgPT0gMSkKLSsJICAmJiBzaWduYWxfcGFzc19zdGF0ZSAoc2lnbm8pID09IDEKLSsJICAmJiBz aWdubyAhPSBUQVJHRVRfU0lHTkFMX0lMTAotKwkgICYmIHNpZ25vICE9IFRBUkdFVF9TSUdOQUxf VFJBUCkKLSAJewotIAkgIC8qIEZJTVhFOiBrZXR0ZW5pcy8yMDAxLTA2LTA2OiBTaG91bGQgd2Ug cmVzdW1lIGFsbCB0aHJlYWRzCi0gCSAgICAgaGVyZT8gIEl0IGlzIG5vdCBjbGVhciB3ZSBzaG91 bGQuICBHREIgbWF5IG5vdCBleHBlY3QKCmRpZmYgLS1naXQgYS9nZGItNi4zLXJlYWRuZXZlci0y MDA1MDkwNy5wYXRjaCBiL2dkYi02LjMtcmVhZG5ldmVyLTIwMDUwOTA3LnBhdGNoCmluZGV4IDE2 NzE1NDYuLmYzMjcwNTEgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtcmVhZG5ldmVyLTIwMDUwOTA3LnBh dGNoCisrKyBiL2dkYi02LjMtcmVhZG5ldmVyLTIwMDUwOTA3LnBhdGNoCkBAIC0xMSwxMSArMTEs MTEgQEAKIAogICAgICAgICAqIGdkYi50ZXhpbmZvIChGaWxlIE9wdGlvbnMpOiBEb2N1bWVudCAt LXJlYWRuZXZlci4KIAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL2RvYy9nZGIudGV4 aW5mbworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9nZGIudGV4aW5mbwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA0MTEub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTEtMDQtMTEgMTk6MTE6NTUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDEx MDQxMS9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDQtMTEgMTk6MTU6NTEuMDAwMDAwMDAwICsw MjAwCi1AQCAtMTAwNyw2ICsxMDA3LDEyIEBAIFJlYWQgZWFjaCBzeW1ib2wgZmlsZSdzIGVudGly ZSBzeW1ib2wgdGEKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2RvYy9nZGIudGV4 aW5mbwkyMDExLTA3LTIyIDE5OjA4OjE5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDExLTA3LTIyIDE5OjE1OjEzLjAwMDAwMDAw MCArMDIwMAorQEAgLTEwMDUsNiArMTAwNSwxMiBAQCBSZWFkIGVhY2ggc3ltYm9sIGZpbGUncyBl bnRpcmUgc3ltYm9sIHRhCiAgdGhlIGRlZmF1bHQsIHdoaWNoIGlzIHRvIHJlYWQgaXQgaW5jcmVt ZW50YWxseSBhcyBpdCBpcyBuZWVkZWQuCiAgVGhpcyBtYWtlcyBzdGFydHVwIHNsb3dlciwgYnV0 IG1ha2VzIGZ1dHVyZSBvcGVyYXRpb25zIGZhc3Rlci4KICAKQEAgLTI4LDExICsyOCwxMSBAQCBJ bmRleDogZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGVuZCB0YWJs ZQogIAogIEBub2RlIE1vZGUgT3B0aW9ucwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2Ri L21haW4uYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL21haW4uYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjIuOTAuMjAxMTA0MTEub3JpZy9nZGIvbWFpbi5jCTIwMTEtMDQtMTEgMTk6 MTE6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvbWFpbi5j CTIwMTEtMDQtMTEgMTk6MTU6NTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMzk4LDYgKzM5OCw3IEBA IGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmln L2dkYi9tYWluLmMJMjAxMS0wNy0yMiAxOToxNDoyNS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9tYWluLmMJMjAxMS0wNy0yMiAxOToxNToxMy4wMDAwMDAwMDAg KzAyMDAKK0BAIC0zOTksNiArMzk5LDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAg ICAgICB7InhkYiIsIG5vX2FyZ3VtZW50LCAmeGRiX2NvbW1hbmRzLCAxfSwKICAgICAgICB7ImRi eCIsIG5vX2FyZ3VtZW50LCAmZGJ4X2NvbW1hbmRzLCAxfSwKICAgICAgICB7InJlYWRub3ciLCBu b19hcmd1bWVudCwgJnJlYWRub3dfc3ltYm9sX2ZpbGVzLCAxfSwKQEAgLTQwLDcgKzQwLDcgQEAg SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL21haW4uYwogICAgICAgIHsiciIsIG5vX2Fy Z3VtZW50LCAmcmVhZG5vd19zeW1ib2xfZmlsZXMsIDF9LAogICAgICAgIHsicXVpZXQiLCBub19h cmd1bWVudCwgJnF1aWV0LCAxfSwKICAgICAgICB7InEiLCBub19hcmd1bWVudCwgJnF1aWV0LCAx fSwKLUBAIC0xMDY0LDYgKzEwNjUsNyBAQCBPcHRpb25zOlxuXG5cCitAQCAtMTA2NSw2ICsxMDY2 LDcgQEAgT3B0aW9uczpcblxuXAogICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAogICAgLS1xdWll dCAgICAgICAgICAgIERvIG5vdCBwcmludCB2ZXJzaW9uIG51bWJlciBvbiBzdGFydHVwLlxuXAog ICAgLS1yZWFkbm93ICAgICAgICAgIEZ1bGx5IHJlYWQgc3ltYm9sIGZpbGVzIG9uIGZpcnN0IGFj Y2Vzcy5cblwKQEAgLTQ4LDEwICs0OCwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQxMS9n ZGIvbWFpbi5jCiAgIiksIHN0cmVhbSk7CiAgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCiAgICAt LXNlPUZJTEUgICAgICAgICAgVXNlIEZJTEUgYXMgc3ltYm9sIGZpbGUgYW5kIGV4ZWN1dGFibGUg ZmlsZS5cblwKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi9zeW1maWxlLmMKK0luZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zeW1maWxlLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4yLjkwLjIwMTEwNDExLm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDExLTAzLTIzIDE5OjIzOjU1LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3N5bWZpbGUuYwkyMDEx LTA0LTExIDE5OjE1OjUxLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIu b3JpZy9nZGIvc3ltZmlsZS5jCTIwMTEtMDUtMTEgMDY6NTY6MDcuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3ltZmlsZS5jCTIwMTEtMDctMjIgMTk6MTU6MTMu MDAwMDAwMDAwICswMjAwCiBAQCAtODEsNiArODEsNyBAQCBzdGF0aWMgdm9pZCBjbGVhcl9zeW10 YWJfdXNlcnNfY2xlYW51cCAoCiAgCiAgLyogR2xvYmFsIHZhcmlhYmxlcyBvd25lZCBieSB0aGlz IGZpbGUuICAqLwpAQCAtNjAsMTAgKzYwLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDEx L2dkYi9zeW1maWxlLmMKICAKICAvKiBFeHRlcm5hbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyBy ZWZlcmVuY2VkLiAgKi8KICAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi9kd2FyZjJy ZWFkLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDExLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEx LTA0LTExIDE5OjExOjU1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0MTEv Z2RiL2R3YXJmMnJlYWQuYwkyMDExLTA0LTExIDE5OjE2OjAxLjAwMDAwMDAwMCArMDIwMAorLS0t IGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDctMjIgMTk6 MDg6MTkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYy cmVhZC5jCTIwMTEtMDctMjIgMTk6MTU6NDEuMDAwMDAwMDAwICswMjAwCiBAQCAtNTgsNiArNTgs NyBAQAogICNpbmNsdWRlICJjLWxhbmcuaCIKICAjaW5jbHVkZSAidmFscHJpbnQuaCIKQEAgLTcy LDggKzcyLDggQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL2R3YXJmMnJlYWQuYwog IAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtMTM1 MSw4ICsxMzUyLDkgQEAgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQot ICAgICAgIGJmZF9tYXBfb3Zlcl9zZWN0aW9ucyAob2JqZmlsZS0+b2JmZCwgZHdhcmYyX2xvY2F0 ZV9zZWN0aW9ucywgTlVMTCk7CitAQCAtMTM4OCw4ICsxMzg5LDkgQEAgZHdhcmYyX2hhc19pbmZv IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHZvaWQgKikgbmFtZXMpOwogICAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSA9IG9i amZpbGU7CiAgICAgIH0KIC0gIHJldHVybiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvLmFzZWN0 aW9uICE9IE5VTEwKQEAgLTgzLDEyICs4MywxMiBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQx MS9nZGIvZHdhcmYycmVhZC5jCiArCSAgICAgICYmIGR3YXJmMl9wZXJfb2JqZmlsZS0+YWJicmV2 LmFzZWN0aW9uICE9IE5VTEwpKTsKICB9CiAgCi0gLyogV2hlbiBsb2FkaW5nIHNlY3Rpb25zLCB3 ZSBjYW4gZWl0aGVyIGxvb2sgZm9yICIuPG5hbWU+Iiwgb3IgZm9yCi1JbmRleDogZ2RiLTcuMi45 MC4yMDExMDQxMS9nZGIvdG9wLmgKKyAvKiBXaGVuIGxvYWRpbmcgc2VjdGlvbnMsIHdlIGxvb2sg ZWl0aGVyIGZvciB1bmNvbXByZXNzZWQgc2VjdGlvbiBvciBmb3IKK0luZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi90b3AuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA0MTEu b3JpZy9nZGIvdG9wLmgJMjAxMS0wMS0wMSAxNjozMzoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4yLjkwLjIwMTEwNDExL2dkYi90b3AuaAkyMDExLTA0LTExIDE5OjE1OjUxLjAwMDAwMDAw MCArMDIwMAotQEAgLTYxLDYgKzYxLDcgQEAgZXh0ZXJuIHZvaWQgc2V0X3Byb21wdCAoY2hhciAq KTsKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3RvcC5oCTIwMTEtMDctMjEgMTM6 MDM6NDUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdG9wLmgJ MjAxMS0wNy0yMiAxOToxNToxMy4wMDAwMDAwMDAgKzAyMDAKK0BAIC01OSw2ICs1OSw3IEBAIGV4 dGVybiB2b2lkIHNldF9wcm9tcHQgKGNvbnN0IGNoYXIgKik7CiAgCiAgLyogRnJvbSByYW5kb20g cGxhY2VzLiAgKi8KICBleHRlcm4gaW50IHJlYWRub3dfc3ltYm9sX2ZpbGVzOwoKZGlmZiAtLWdp dCBhL2dkYi02LjMtc2VjdXJpdHktZXJyYXRhLTIwMDUwNjEwLnBhdGNoIGIvZ2RiLTYuMy1zZWN1 cml0eS1lcnJhdGEtMjAwNTA2MTAucGF0Y2gKaW5kZXggMGZlNjhkZi4uMzc2MzMzMiAxMDA2NDQK LS0tIGEvZ2RiLTYuMy1zZWN1cml0eS1lcnJhdGEtMjAwNTA2MTAucGF0Y2gKKysrIGIvZ2RiLTYu My1zZWN1cml0eS1lcnJhdGEtMjAwNTA2MTAucGF0Y2gKQEAgLTE5LDEwICsxOSwxMCBAQCBQcm9w b3NlZCB1cHN0cmVhbSBidXQgbmV2ZXIgY29tbWl0dGVkIHVwc3RyZWFtLgogICAgICAgICAoc291 cmNlX2NvbW1hbmQpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4gIENoZWNrIHBlcm1pc3Npb25zIGlm CiAgICAgICAgIEZST01fVFRZIGlzIC0xLgogCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9n ZGIvY2xpL2NsaS1jbWRzLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jbGkvY2xp LWNtZHMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvY2xp L2NsaS1jbWRzLmMJMjAxMC0xMi0yOSAwMzoxMTowNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny4yLjUwLjIwMTAxMjMxL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDExLTAxLTAxIDAwOjUzOjUxLjAw MDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvY2xpL2NsaS1j bWRzLmMJMjAxMS0wNi0wNyAxOToyNjo0Ni4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDExLTA3LTIyIDE5OjE0OjI1LjAwMDAwMDAw MCArMDIwMAogQEAgLTM5LDYgKzM5LDcgQEAKICAjaW5jbHVkZSAic291cmNlLmgiCiAgI2luY2x1 ZGUgImRpc2FzbS5oIgpAQCAtMzEsNyArMzEsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIz MS9nZGIvY2xpL2NsaS1jbWRzLmMKICAKICAjaW5jbHVkZSAidWktb3V0LmgiCiAgCi1AQCAtNDg4 LDcgKzQ4OSw3IEBAIFNjcmlwdCBmaWxlbmFtZSBleHRlbnNpb24gcmVjb2duaXRpb24gaXMKK0BA IC00ODksNyArNDkwLDcgQEAgc2hvd19zY3JpcHRfZXh0X21vZGUgKHN0cnVjdCB1aV9maWxlICpm aQogIAogIGludAogIGZpbmRfYW5kX29wZW5fc2NyaXB0IChjb25zdCBjaGFyICpzY3JpcHRfZmls ZSwgaW50IHNlYXJjaF9wYXRoLApAQCAtNDAsNyArNDAsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4y MDEwMTIzMS9nZGIvY2xpL2NsaS1jbWRzLmMKICB7CiAgICBjaGFyICpmaWxlOwogICAgaW50IGZk OwotQEAgLTUxNCw2ICs1MTUsMzIgQEAgZmluZF9hbmRfb3Blbl9zY3JpcHQgKGNvbnN0IGNoYXIg KnNjcmlwdAorQEAgLTUxNSw2ICs1MTYsMzIgQEAgZmluZF9hbmRfb3Blbl9zY3JpcHQgKGNvbnN0 IGNoYXIgKnNjcmlwdAogICAgICAgIHJldHVybiAwOwogICAgICB9CiAgCkBAIC03Myw3ICs3Myw3 IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9jbGkvY2xpLWNtZHMuYwogICAgZG9f Y2xlYW51cHMgKG9sZF9jbGVhbnVwcyk7CiAgCiAgICAqc3RyZWFtcCA9IGZkb3BlbiAoZmQsIEZP UEVOX1JUKTsKLUBAIC01NzMsMTMgKzYwMCwxNCBAQCBzb3VyY2Vfc2NyaXB0X3dpdGhfc2VhcmNo IChjb25zdCBjaGFyICpmCitAQCAtNTc0LDEzICs2MDEsMTQgQEAgc291cmNlX3NjcmlwdF93aXRo X3NlYXJjaCAoY29uc3QgY2hhciAqZgogICAgaWYgKGZpbGUgPT0gTlVMTCB8fCAqZmlsZSA9PSAw KQogICAgICBlcnJvciAoXygic291cmNlIGNvbW1hbmQgcmVxdWlyZXMgZmlsZSBuYW1lIG9mIGZp bGUgdG8gc291cmNlLiIpKTsKICAKQEAgLTkwLDEwICs5MCwxMCBAQCBJbmRleDogZ2RiLTcuMi41 MC4yMDEwMTIzMS9nZGIvY2xpL2NsaS1jbWRzLmMKICAJcGVycm9yX3dpdGhfbmFtZSAoZmlsZSk7 CiAgICAgICAgZWxzZQogIAlyZXR1cm47Ci1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41 MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCTIwMTEtMDEtMDEg MDA6NTM6MDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCTIwMTEtMDctMjIgMTk6MTQ6MjUuMDAwMDAwMDAw ICswMjAwCiBAQCAtMCwwICsxLDkxIEBACiArIyAgIENvcHlyaWdodCAyMDA1CiArIyAgIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMTg2LDE3ICsxODYsMTcgQEAgSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDEyMzEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4cAogK30K ICsKICtyZW1vdGVfZXhlYyBidWlsZCAicm0gLmdkYmluaXQiCi1JbmRleDogZ2RiLTcuMi41MC4y MDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2FtcGxlCitJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2FtcGxlCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmlu aXQuc2FtcGxlCTIwMTEtMDEtMDEgMDA6NTM6MDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2FtcGxlCTIwMTEt MDctMjIgMTk6MTQ6MjUuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxIEBACiArZWNobyAiXG5p biBnZGJpbml0IgotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL21haW4uYworSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL21haW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu NTAuMjAxMDEyMzEub3JpZy9nZGIvbWFpbi5jCTIwMTAtMTItMjkgMDE6NTg6MTQuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvbWFpbi5jCTIwMTEtMDEtMDEgMDA6 NTM6MDkuMDAwMDAwMDAwICswMTAwCi1AQCAtODA1LDcgKzgwNSw3IEBAIEV4Y2VzcyBjb21tYW5k IGxpbmUgYXJndW1lbnRzIGlnbm9yZWQuICgKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcv Z2RiL21haW4uYwkyMDExLTA3LTIyIDE5OjA4OjE5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL21haW4uYwkyMDExLTA3LTIyIDE5OjE0OjI1LjAwMDAwMDAwMCAr MDIwMAorQEAgLTg0OSw3ICs4NDksNyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogICAg ICAgZGVidWdnaW5nIG9yIHdoYXQgZGlyZWN0b3J5IHlvdSBhcmUgaW4uICAqLwogIAogICAgaWYg KGhvbWVfZ2RiaW5pdCAmJiAhaW5oaWJpdF9nZGJpbml0KQpAQCAtMjA1LDcgKzIwNSw3IEBAIElu ZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9tYWluLmMKICAKICAgIC8qIE5vdyBwZXJmb3Jt IGFsbCB0aGUgYWN0aW9ucyBpbmRpY2F0ZWQgYnkgdGhlIGFyZ3VtZW50cy4gICovCiAgICBpZiAo Y2RhcmcgIT0gTlVMTCkKLUBAIC04ODAsNyArODgwLDcgQEAgQ2FuJ3QgYXR0YWNoIHRvIHByb2Nl c3MgYW5kIHNwZWNpZnkgYSBjbworQEAgLTkyOCw3ICs5MjgsNyBAQCBjYXB0dXJlZF9tYWluICh2 b2lkICpkYXRhKQogICAgLyogUmVhZCB0aGUgLmdkYmluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBk aXJlY3RvcnksICppZiogaXQgaXNuJ3QKICAgICAgIHRoZSBzYW1lIGFzIHRoZSAkSE9NRS8uZ2Ri aW5pdCBmaWxlIChpdCBzaG91bGQgZXhpc3QsIGFsc28pLiAgKi8KICAgIGlmIChsb2NhbF9nZGJp bml0ICYmICFpbmhpYml0X2dkYmluaXQpCkBAIC0yMTQsMjQgKzIxNCwyNCBAQCBJbmRleDogZ2Ri LTcuMi41MC4yMDEwMTIzMS9nZGIvbWFpbi5jCiAgCiAgICAvKiBOb3cgdGhhdCBhbGwgLmdkYmlu aXQncyBoYXZlIGJlZW4gcmVhZCBhbmQgYWxsIC1kIG9wdGlvbnMgaGF2ZSBiZWVuCiAgICAgICBw cm9jZXNzZWQsIHdlIGNhbiByZWFkIGFueSBzY3JpcHRzIG1lbnRpb25lZCBpbiBTWU1BUkcuCi1J bmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCitJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTIzMS5vcmlnL2dkYi9weXRob24vcHktYXV0by1sb2Fk LmMJMjAxMC0xMi0xNSAxODoyNzo1OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIw MTAxMjMxL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMS0wMS0wMSAwMDo1MzowOS4wMDAw MDAwMDAgKzAxMDAKLUBAIC0yMjQsNyArMjI0LDcgQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0cyAo c3RydWN0IG9iamZpbGUgKgorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvcHl0aG9u L3B5LWF1dG8tbG9hZC5jCTIwMTEtMDUtMTYgMTg6MzM6NTcuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTEtMDctMjIg MTk6MTQ6NTQuMDAwMDAwMDAwICswMjAwCitAQCAtMjg0LDcgKzI4NCw3IEBAIHNvdXJjZV9zZWN0 aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKICAJfQogIAogICAgICAgIG9wZW5lZCA9IGZp bmRfYW5kX29wZW5fc2NyaXB0IChmaWxlLCAxIC8qc2VhcmNoX3BhdGgqLywKIC0JCQkJICAgICAm c3RyZWFtLCAmZnVsbF9wYXRoKTsKICsJCQkJICAgICAmc3RyZWFtLCAmZnVsbF9wYXRoLCAxIC8q IGZyb21fdHR5ICovKTsKICAKLSAgICAgICAvKiBJZiB0aGUgZmlsZSBpcyBub3QgZm91bmQsIHdl IHN0aWxsIHJlY29yZCB0aGUgZmlsZSBpbiB0aGUgaGFzaCB0YWJsZSwKLSAJIHdlIG9ubHkgd2Fu dCB0byBwcmludCBhbiBlcnJvciBtZXNzYWdlIG9uY2UuCi1JbmRleDogZ2RiLTcuMi41MC4yMDEw MTIzMS9nZGIvY2xpL2NsaS1jbWRzLmgKKyAgICAgICAvKiBJZiBvbmUgc2NyaXB0IGlzbid0IGZv dW5kIGl0J3Mgbm90IHVuY29tbW9uIGZvciBtb3JlIHRvIG5vdCBiZQorIAkgZm91bmQgZWl0aGVy LiAgV2UgZG9uJ3Qgd2FudCB0byBwcmludCBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNoCitJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY2xpL2NsaS1jbWRzLmgKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4yLjUwLjIwMTAxMjMxLm9yaWcvZ2RiL2NsaS9jbGktY21kcy5oCTIwMTAtMTItMjkg MDM6MTE6MDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvY2xp L2NsaS1jbWRzLmgJMjAxMS0wMS0wMSAwMDo1MzowOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMjYs NyArMTI2LDggQEAgZXh0ZXJuIHZvaWQgc291cmNlX3NjcmlwdCAoY2hhciAqLCBpbnQpOworLS0t IGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvY2xpL2NsaS1jbWRzLmgJMjAxMS0wMS0wMSAx NjozMzoyMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jbGkv Y2xpLWNtZHMuaAkyMDExLTA3LTIyIDE5OjE0OjI1LjAwMDAwMDAwMCArMDIwMAorQEAgLTEyNyw3 ICsxMjcsOCBAQCBleHRlcm4gdm9pZCBzb3VyY2Vfc2NyaXB0IChjaGFyICosIGludCk7CiAgLyog RXhwb3J0ZWQgdG8gb2JqZmlsZXMuYy4gICovCiAgCiAgZXh0ZXJuIGludCBmaW5kX2FuZF9vcGVu X3NjcmlwdCAoY29uc3QgY2hhciAqZmlsZSwgaW50IHNlYXJjaF9wYXRoLAoKZGlmZiAtLWdpdCBh L2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0 ZS1ycG0ucGF0Y2gKaW5kZXggMzgwMmJhMC4uODIxMGQxOCAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1i dWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0u cGF0Y2gKQEAgLTEsMTYgKzEsMTYgQEAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9l dmVudC10b3AuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2V2ZW50LXRvcC5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDQyOS5vcmlnL2dkYi9ldmVudC10b3AuYwky MDExLTAzLTE2IDE2OjE4OjU4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0 MjkvZ2RiL2V2ZW50LXRvcC5jCTIwMTEtMDUtMDMgMDU6MjE6MTEuMDAwMDAwMDAwICswMjAwCi1A QCAtMzMsNiArMzMsNyBAQAotICNpbmNsdWRlICJjbGkvY2xpLXNjcmlwdC5oIiAgICAgLyogZm9y IHJlc2V0X2NvbW1hbmRfbmVzdF9kZXB0aCAqLwotICNpbmNsdWRlICJtYWluLmgiCi0gI2luY2x1 ZGUgImdkYnRocmVhZC5oIgotKyNpbmNsdWRlICJzeW1maWxlLmgiCi0gCistLS0gZ2RiLTcuMy41 MC4yMDExMDcyMi5vcmlnL2dkYi9ldmVudC10b3AuYwkyMDExLTA3LTIxIDEzOjAzOjQ1LjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2V2ZW50LXRvcC5jCTIwMTEt MDctMjIgMTk6Mjg6NDkuMDAwMDAwMDAwICswMjAwCitAQCAtMzYsNiArMzYsNyBAQAorICNpbmNs dWRlICJvYnNlcnZlci5oIgorICNpbmNsdWRlICJjb250aW51YXRpb25zLmgiCiAgI2luY2x1ZGUg ImdkYmNtZC5oIgkJLyogZm9yIGRvbnRfcmVwZWF0KCkgKi8KKysjaW5jbHVkZSAic3ltZmlsZS5o IgogIAotQEAgLTE5Miw2ICsxOTMsOCBAQCBjbGlfY29tbWFuZF9sb29wICh2b2lkKQorIC8qIHJl YWRsaW5lIGluY2x1ZGUgZmlsZXMuICAqLworICNpbmNsdWRlICJyZWFkbGluZS9yZWFkbGluZS5o IgorQEAgLTE5Myw2ICsxOTQsOCBAQCBjbGlfY29tbWFuZF9sb29wICh2b2lkKQogICAgICAgIGNo YXIgKmFfcHJvbXB0OwogICAgICAgIGNoYXIgKmdkYl9wcm9tcHQgPSBnZXRfcHJvbXB0ICgpOwog IApAQCAtMTksNyArMTksNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvZXZlbnQt dG9wLmMKICAgICAgICAvKiBUZWxsIHJlYWRsaW5lIHdoYXQgdGhlIHByb21wdCB0byBkaXNwbGF5 IGlzIGFuZCB3aGF0IGZ1bmN0aW9uCiAgICAgICAgICAgaXQgd2lsbCBuZWVkIHRvIGNhbGwgYWZ0 ZXIgYSB3aG9sZSBsaW5lIGlzIHJlYWQuICBUaGlzIGFsc28KICAgICAgICAgICBkaXNwbGF5cyB0 aGUgZmlyc3QgcHJvbXB0LiAgKi8KLUBAIC0yNjMsNiArMjY2LDggQEAgZGlzcGxheV9nZGJfcHJv bXB0IChjaGFyICpuZXdfcHJvbXB0KQorQEAgLTI2NCw2ICsyNjcsOCBAQCBkaXNwbGF5X2dkYl9w cm9tcHQgKGNoYXIgKm5ld19wcm9tcHQpCiAgICAvKiBSZXNldCB0aGUgbmVzdGluZyBkZXB0aCB1 c2VkIHdoZW4gdHJhY2UtY29tbWFuZHMgaXMgc2V0LiAgKi8KICAgIHJlc2V0X2NvbW1hbmRfbmVz dF9kZXB0aCAoKTsKICAKQEAgLTI4LDExICsyOCwxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDEx MDQyOS9nZGIvZXZlbnQtdG9wLmMKICAgIC8qIEVhY2ggaW50ZXJwcmV0ZXIgaGFzIGl0cyBvd24g cnVsZXMgb24gZGlzcGxheWluZyB0aGUgY29tbWFuZAogICAgICAgcHJvbXB0LiAgKi8KICAgIGlm ICghY3VycmVudF9pbnRlcnBfZGlzcGxheV9wcm9tcHRfcCAoKSkKLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNDI5L2dkYi9lbGZyZWFkLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9l bGZyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcvZ2RiL2Vs ZnJlYWQuYwkyMDExLTA1LTAzIDA1OjE5OjI3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIu OTAuMjAxMTA0MjkvZ2RiL2VsZnJlYWQuYwkyMDExLTA1LTAzIDA1OjIxOjIyLjAwMDAwMDAwMCAr MDIwMAotQEAgLTUzLDYgKzUzLDcgQEAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2Ri L2VsZnJlYWQuYwkyMDExLTA3LTIyIDE5OjI2OjQ2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2VsZnJlYWQuYwkyMDExLTA3LTIyIDE5OjI4OjM0LjAwMDAwMDAw MCArMDIwMAorQEAgLTQ5LDYgKzQ5LDcgQEAKICAjaW5jbHVkZSAiZ2RiY29yZS5oIgogICNpbmNs dWRlICJnZGJjbWQuaCIKICAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKQEAgLTQwLDcgKzQwLDcgQEAg SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2VsZnJlYWQuYwogICNpbmNsdWRlIDxzeXMv c3RhdC5oPgogIAogIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpOwotQEAg LTE2NTUsOCArMTY1NiwzNjEgQEAgYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9p ZCAqYgorQEAgLTE2NTIsOCArMTY1MywzNjEgQEAgYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVj dCBidWlsZF9pZCAqYgogICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCkBAIC00MDMsNyArNDAzLDcg QEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2VsZnJlYWQuYwogICAgIGF2b2lkYW5j ZS4gICovCiAgCiAgc3RydWN0IG1pc3NpbmdfZmlsZXBhaXIKLUBAIC0xNzEwLDExICsyMDY0LDE3 IEBAIG1pc3NpbmdfZmlsZXBhaXJfY2hhbmdlICh2b2lkKQorQEAgLTE3MDcsMTEgKzIwNjEsMTcg QEAgbWlzc2luZ19maWxlcGFpcl9jaGFuZ2UgKHZvaWQpCiAgICAgICAgLyogQWxsIHRoZWlyIG1l bW9yeSBjYW1lIGp1c3QgZnJvbSBtaXNzaW5nX2ZpbGVwYWlyX09CU1RBQ0suICAqLwogICAgICAg IG1pc3NpbmdfZmlsZXBhaXJfaGFzaCA9IE5VTEw7CiAgICAgIH0KQEAgLTQyMSw3ICs0MjEsNyBA QCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvZWxmcmVhZC5jCiAgICBtaXNzaW5nX2Zp bGVwYWlyX2NoYW5nZSAoKTsKICB9CiAgCi1AQCAtMTc4MSwxNCArMjE0MSwzNSBAQCBkZWJ1Z19w cmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksCitAQCAtMTc3OCwxNCArMjEzOCwzNSBA QCBkZWJ1Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksCiAgCiAgICAqc2xvdCA9 IG1pc3NpbmdfZmlsZXBhaXI7CiAgCkBAIC00NjQsMTEgKzQ2NCwxMSBAQCBJbmRleDogZ2RiLTcu Mi45MC4yMDExMDQyOS9nZGIvZWxmcmVhZC5jCiAgfQogIAogIHN0YXRpYyBjaGFyICoKLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9zeW1maWxlLmgKK0luZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9zeW1maWxlLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5 Lm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDExLTA1LTAzIDA1OjE0OjU3LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL3N5bWZpbGUuaAkyMDExLTA1LTAzIDA1OjIxOjEx LjAwMDAwMDAwMCArMDIwMAotQEAgLTYxMSw2ICs2MTEsOCBAQCBleHRlcm4gc3RydWN0IGJ1aWxk X2lkICpidWlsZF9pZF9hZGRyX2dlCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9z eW1maWxlLmgJMjAxMS0wNy0yMiAxOToyNzowNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9zeW1maWxlLmgJMjAxMS0wNy0yMiAxOToyODozNC4wMDAwMDAwMDAg KzAyMDAKK0BAIC02MTUsNiArNjE1LDggQEAgZXh0ZXJuIHN0cnVjdCBidWlsZF9pZCAqYnVpbGRf aWRfYWRkcl9nZQogIGV4dGVybiBjaGFyICpidWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0IGJ1 aWxkX2lkICpidWlsZF9pZCwKICAJCQkJICAgY2hhciAqKmxpbmtfcmV0dXJuLCBpbnQgYWRkX2Rl YnVnX3N1ZmZpeCk7CiAgZXh0ZXJuIHZvaWQgZGVidWdfcHJpbnRfbWlzc2luZyAoY29uc3QgY2hh ciAqYmluYXJ5LCBjb25zdCBjaGFyICpkZWJ1Zyk7CkBAIC00NzcsMTEgKzQ3NywxMSBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvc3ltZmlsZS5oCiAgCiAgLyogRnJvbSBkd2FyZjJy ZWFkLmMgKi8KICAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGliL2dk Yi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9saWIvZ2RiLmV4cAkyMDExLTA1LTAzIDA1OjE0OjU3LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTA1LTAz IDA1OjIxOjExLjAwMDAwMDAwMCArMDIwMAotQEAgLTEzODEsNyArMTM4MSw3IEBAIHByb2MgZGVm YXVsdF9nZGJfc3RhcnQgeyB9IHsKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTA3LTIyIDE5OjI2OjQ2LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTA3 LTIyIDE5OjI4OjM0LjAwMDAwMDAwMCArMDIwMAorQEAgLTEzOTAsNyArMTM5MCw3IEBAIHByb2Mg ZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNldCB0aGUg d2lkdGggdG8gMC4iCiAgCX0KICAgICAgfQpAQCAtNDkwLDExICs0OTAsMTEgQEAgSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA0MjkvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogICAgICBzZW5kX2dk YiAic2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxuIgogICAgICBnZGJfZXhwZWN0IDEwIHsKICAJLXJl ICIkZ2RiX3Byb21wdCAkIiB7Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvdGVzdHN1 aXRlL2xpYi9taS1zdXBwb3J0LmV4cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIw MTEwNDI5Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMS0wNS0wMyAw NToxNDo1Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi90ZXN0 c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTEtMDUtMDMgMDU6MjE6MTEuMDAwMDAwMDAwICsw MjAwCi1AQCAtMjIxLDcgKzIyMSw3IEBAIHByb2MgZGVmYXVsdF9taV9nZGJfc3RhcnQgeyBhcmdz IH0geworLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1z dXBwb3J0LmV4cAkyMDExLTA3LTIyIDE5OjI2OjQ2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMS0wNy0y MiAxOToyODozNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0yMjIsNyArMjIyLDcgQEAgcHJvYyBkZWZh dWx0X21pX2dkYl9zdGFydCB7IGFyZ3MgfSB7CiAgCSAgICB9CiAgICAgIAl9CiAgICAgIH0KQEAg LTUwMywxMCArNTAzLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi90ZXN0c3Vp dGUvbGliL21pLXN1cHBvcnQuZXhwCiAgICAgIHNlbmRfZ2RiICIxOTAtZ2RiLXNldCBidWlsZC1p ZC12ZXJib3NlIDBcbiIKICAgICAgZ2RiX2V4cGVjdCAxMCB7CiAgCS1yZSAiLioxOTAtZ2RiLXNl dCBidWlsZC1pZC12ZXJib3NlIDBcclxuMTkwXFxcXmRvbmVcclxuJG1pX2dkYl9wcm9tcHQkIiB7 Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvdHVpL3R1aS1pbnRlcnAuYworSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3R1aS90dWktaW50ZXJwLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcvZ2RiL3R1aS90dWktaW50ZXJwLmMJMjAxMS0wMS0w MSAxNjozMzo1Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi90 dWkvdHVpLWludGVycC5jCTIwMTEtMDUtMDMgMDU6MjE6MTEuMDAwMDAwMDAwICswMjAwCistLS0g Z2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90dWkvdHVpLWludGVycC5jCTIwMTEtMDEtMDEg MTY6MzM6NTIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdHVp L3R1aS1pbnRlcnAuYwkyMDExLTA3LTIyIDE5OjI4OjM0LjAwMDAwMDAwMCArMDIwMAogQEAgLTMx LDYgKzMxLDcgQEAKICAjaW5jbHVkZSAidHVpL3R1aS5oIgogICNpbmNsdWRlICJ0dWkvdHVpLWlv LmgiCkBAIC01MjQsMTAgKzUyNCwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIv dHVpL3R1aS1pbnRlcnAuYwogICAgICAgIC8qIFRlbGwgcmVhZGxpbmUgd2hhdCB0aGUgcHJvbXB0 IHRvIGRpc3BsYXkgaXMgYW5kIHdoYXQgZnVuY3Rpb24KICAgICAgICAgICBpdCB3aWxsIG5lZWQg dG8gY2FsbCBhZnRlciBhIHdob2xlIGxpbmUgaXMgcmVhZC4gVGhpcyBhbHNvCiAgICAgICAgICAg ZGlzcGxheXMgdGhlIGZpcnN0IHByb21wdC4gICovCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDQy OS9nZGIvYWNsb2NhbC5tNAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2FjbG9jYWwu bTQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcvZ2RiL2FjbG9jYWwu bTQJMjAxMS0wMi0xNSAyMjowNTo1My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIw MTEwNDI5L2dkYi9hY2xvY2FsLm00CTIwMTEtMDUtMDMgMDU6MjE6MTEuMDAwMDAwMDAwICswMjAw CistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9hY2xvY2FsLm00CTIwMTEtMDItMTUg MjI6MDU6NTMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYWNs b2NhbC5tNAkyMDExLTA3LTIyIDE5OjI4OjM0LjAwMDAwMDAwMCArMDIwMAogQEAgLTE5LDYgKzE5 LDE2MiBAQCBZb3UgaGF2ZSBhbm90aGVyIHZlcnNpb24gb2YgYXV0b2NvbmYuICBJCiAgSWYgeW91 IGhhdmUgcHJvYmxlbXMsIHlvdSBtYXkgbmVlZCB0byByZWdlbmVyYXRlIHRoZSBidWlsZCBzeXN0 ZW0gZW50aXJlbHkuCiAgVG8gZG8gc28sIHVzZSB0aGUgcHJvY2VkdXJlIGRvY3VtZW50ZWQgYnkg dGhlIHBhY2thZ2UsIHR5cGljYWxseSBgYXV0b3JlY29uZicuXSldKQpAQCAtNjkxLDEwICs2OTEs MTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2FjbG9jYWwubTQKICAjIENvcHly aWdodCAoQykgMjAwMiwgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCiAgIwogICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dk Yi9jb25maWcuaW4KK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWcuaW4KID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcvZ2RiL2NvbmZpZy5pbgkyMDEx LTAzLTE3IDE0OjE5OjA5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0Mjkv Z2RiL2NvbmZpZy5pbgkyMDExLTA1LTAzIDA1OjIxOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdk Yi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvY29uZmlnLmluCTIwMTEtMDUtMTIgMDE6Mzg6Mzgu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY29uZmlnLmluCTIw MTEtMDctMjIgMTk6Mjg6MzQuMDAwMDAwMDAwICswMjAwCiBAQCAtNDYsNiArNDYsOSBAQAogIC8q IERlZmluZSB0byBCRkQncyBkZWZhdWx0IHRhcmdldCB2ZWN0b3IuICovCiAgI3VuZGVmIERFRkFV TFRfQkZEX1ZFQwpAQCAtNzE1LDEwICs3MTUsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0 MjkvZ2RiL2NvbmZpZy5pbgogIC8qIERlZmluZSBpZiBsaWJ1bndpbmQgbGlicmFyeSBpcyBiZWlu ZyB1c2VkLiAqLwogICN1bmRlZiBIQVZFX0xJQlVOV0lORAogIAotSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA0MjkvZ2RiL2NvbmZpZ3VyZQorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Nv bmZpZ3VyZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA0Mjkub3JpZy9nZGIvY29u ZmlndXJlCTIwMTEtMDQtMDMgMTg6MzI6NDAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45 MC4yMDExMDQyOS9nZGIvY29uZmlndXJlCTIwMTEtMDUtMDMgMDU6MjE6MTEuMDAwMDAwMDAwICsw MjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9jb25maWd1cmUJMjAxMS0wNS0x MiAwMTozODozOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9j b25maWd1cmUJMjAxMS0wNy0yMiAxOToyODozNC4wMDAwMDAwMDAgKzAyMDAKIEBAIC02ODIsNiAr NjgyLDkgQEAgUkVQT1JUX0JVR1NfVE8KICBQS0dWRVJTSU9OCiAgVEFSR0VUX09CUwpAQCAtNzM3 LDcgKzczNyw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9jb25maWd1cmUKICBl bmFibGVfdGFyZ2V0cwogIGVuYWJsZV82NF9iaXRfYmZkCiAgZW5hYmxlX2dkYmNsaQotQEAgLTk4 OSw2ICs5OTMsOSBAQCBMREZMQUdTCitAQCAtOTkwLDYgKzk5NCw5IEBAIExERkxBR1MKICBMSUJT CiAgQ1BQRkxBR1MKICBDUFAKQEAgLTc0Nyw3ICs3NDcsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4y MDExMDQyOS9nZGIvY29uZmlndXJlCiAgWUFDQwogIFlGTEFHUwogIFhNS01GJwotQEAgLTE2NTIs NiArMTY1OSw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorQEAgLTE2NTMsNiArMTY2MCw4IEBAIE9w dGlvbmFsIFBhY2thZ2VzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RBVEFESVIvZ2Ri XQogICAgLS13aXRoLXJlbG9jYXRlZC1zb3VyY2VzPVBBVEgKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGF1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBwYXRoIGZvciBzb3VyY2UgZmlsZXMK QEAgLTc1Niw3ICs3NTYsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvY29uZmln dXJlCiAgICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2lu ZGluZyBzdXBwb3J0CiAgICAtLXdpdGgtY3Vyc2VzICAgICAgICAgICB1c2UgdGhlIGN1cnNlcyBs aWJyYXJ5IGluc3RlYWQgb2YgdGhlIHRlcm1jYXAKICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxpYnJhcnkKLUBAIC0xNjg3LDYgKzE2OTYsOSBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25t ZW50IHZhcmlhYmxlczoKK0BAIC0xNjg5LDYgKzE2OTgsOSBAQCBTb21lIGluZmx1ZW50aWFsIGVu dmlyb25tZW50IHZhcmlhYmxlczoKICAgIENQUEZMQUdTICAgIEMvQysrL09iamVjdGl2ZSBDIHBy ZXByb2Nlc3NvciBmbGFncywgZS5nLiAtSTxpbmNsdWRlIGRpcj4gaWYKICAgICAgICAgICAgICAg IHlvdSBoYXZlIGhlYWRlcnMgaW4gYSBub25zdGFuZGFyZCBkaXJlY3RvcnkgPGluY2x1ZGUgZGly PgogICAgQ1BQICAgICAgICAgQyBwcmVwcm9jZXNzb3IKQEAgLTc2Niw3ICs3NjYsNyBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvY29uZmlndXJlCiAgICBZQUNDICAgICAgICBUaGUg YFlldCBBbm90aGVyIEMgQ29tcGlsZXInIGltcGxlbWVudGF0aW9uIHRvIHVzZS4gRGVmYXVsdHMg dG8KICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBwcm9ncmFtIGZvdW5kIG91dCBvZjogYGJpc29u IC15JywgYGJ5YWNjJywgYHlhY2MnLgogICAgWUZMQUdTICAgICAgVGhlIGxpc3Qgb2YgYXJndW1l bnRzIHRoYXQgd2lsbCBiZSBwYXNzZWQgYnkgZGVmYXVsdCB0byAkWUFDQy4KLUBAIC03ODg0LDYg Kzc4OTYsNDg2IEBAIF9BQ0VPRgorQEAgLTc4ODYsNiArNzg5OCw0ODYgQEAgX0FDRU9GCiAgZmkK ICAKICAKQEAgLTEyNTMsMTAgKzEyNTMsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0Mjkv Z2RiL2NvbmZpZ3VyZQogIAogIAogIHN1YmRpcnM9IiRzdWJkaXJzIHRlc3RzdWl0ZSIKLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9jb25maWd1cmUuYWMKK0luZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIw MTEwNDI5Lm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTA0LTAzIDE4OjMyOjQwLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTA1 LTAzIDA1OjIxOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3Jp Zy9nZGIvY29uZmlndXJlLmFjCTIwMTEtMDUtMTIgMDE6Mzg6MzguMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY29uZmlndXJlLmFjCTIwMTEtMDctMjIgMTk6Mjg6 MzQuMDAwMDAwMDAwICswMjAwCiBAQCAtMTA4LDYgKzEwOCwxOTkgQEAgQVNfSEVMUF9TVFJJTkco Wy0td2l0aC1yZWxvY2F0ZWQtc291cmNlcwogICAgICAgICAgICAgICAgW1JlbG9jYXRlZCBkaXJl Y3RvcnkgZm9yIHNvdXJjZSBmaWxlcy4gXSkKICBdKQpAQCAtMTQ1NywxMCArMTQ1NywxMCBAQCBJ bmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvY29uZmlndXJlLmFjCiAgQUNfQ09ORklHX1NV QkRJUlModGVzdHN1aXRlKQogIAogICMgQ2hlY2sgd2hldGhlciB0byBzdXBwb3J0IGFsdGVybmF0 aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2Ri L2FjaW5jbHVkZS5tNAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2FjaW5jbHVkZS5t NAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA0Mjkub3JpZy9nZGIvYWNpbmNsdWRl Lm00CTIwMTAtMDUtMjcgMDU6NDA6NDUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4y MDExMDQyOS9nZGIvYWNpbmNsdWRlLm00CTIwMTEtMDUtMDMgMDU6MjE6MTEuMDAwMDAwMDAwICsw MjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9hY2luY2x1ZGUubTQJMjAxMC0w NS0yNyAwNTo0MDo0NS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9hY2luY2x1ZGUubTQJMjAxMS0wNy0yMiAxOToyODozNC4wMDAwMDAwMDAgKzAyMDAKIEBAIC0x LDMgKzEsNSBAQAogKyMgc2VyaWFsIDEKICsKQEAgLTE0NzYsMTEgKzE0NzYsMTEgQEAgSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2FjaW5jbHVkZS5tNAogICMgQGRlZm1hYyBBQ19QUk9H X0NDX1NUREMKICAjIEBtYWluZGV4IFBST0dfQ0NfU1REQwogICMgQG92aW5kZXggQ0MKLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9jb3JlbG93LmMKK0luZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9jb3JlbG93LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5 Lm9yaWcvZ2RiL2NvcmVsb3cuYwkyMDExLTA1LTAzIDA1OjE0OjU3LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2NvcmVsb3cuYwkyMDExLTA1LTAzIDA1OjIxOjEx LjAwMDAwMDAwMCArMDIwMAotQEAgLTMyMCw3ICszMjAsNyBAQCBidWlsZF9pZF9sb2NhdGVfZXhl YyAoaW50IGZyb21fdHR5KQorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvY29yZWxv dy5jCTIwMTEtMDctMjIgMTk6Mjc6MjYuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvY29yZWxvdy5jCTIwMTEtMDctMjIgMTk6Mjg6MzQuMDAwMDAwMDAwICswMjAw CitAQCAtMzIxLDcgKzMyMSw3IEBAIGJ1aWxkX2lkX2xvY2F0ZV9leGVjIChpbnQgZnJvbV90dHkp CiAgICAgICAgICBzeW1maWxlX29iamZpbGUtPmZsYWdzIHw9IE9CSkZfQlVJTERfSURfQ09SRV9M T0FERUQ7CiAgICAgIH0KICAgIGVsc2UKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQtbG9j YXRlLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaAppbmRleCA1MDQ1NjM3Li4w MjJkMGNhIDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCisrKyBiL2dk Yi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKQEAgLTEsMTggKzEsMTggQEAKLUluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNDI5L2dkYi9jb3JlbG93LmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9jb3JlbG93LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcv Z2RiL2NvcmVsb3cuYwkyMDExLTAyLTI2IDAzOjA3OjA3LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjIuOTAuMjAxMTA0MjkvZ2RiL2NvcmVsb3cuYwkyMDExLTA1LTAzIDA1OjE0OjU3LjAwMDAw MDAwMCArMDIwMAotQEAgLTQ3LDYgKzQ3LDkgQEAKLSAjaW5jbHVkZSAiZmlsZW5hbWVzLmgiCist LS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMS0wNy0yMiAyMDox Mjo0MC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb3JlbG93 LmMJMjAxMS0wNy0yMiAyMDoxMzowMC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00OCw2ICs0OCw5IEBA CiAgI2luY2x1ZGUgInByb2dzcGFjZS5oIgogICNpbmNsdWRlICJvYmpmaWxlcy5oIgorICNpbmNs dWRlICJ3cmFwcGVyLmgiCiArI2luY2x1ZGUgImF1eHYuaCIKICsjaW5jbHVkZSAiZWxmL2NvbW1v bi5oIgogKyNpbmNsdWRlICJnZGJjbWQuaCIKICAKICAKICAjaWZuZGVmIE9fTEFSR0VGSUxFCi1A QCAtMjc4LDYgKzI4MSw1MiBAQCBhZGRfdG9fdGhyZWFkX2xpc3QgKGJmZCAqYWJmZCwgYXNlY3Rp b24gCitAQCAtMjc5LDYgKzI4Miw1MiBAQCBhZGRfdG9fdGhyZWFkX2xpc3QgKGJmZCAqYWJmZCwg YXNlY3Rpb24gCiAgICAgIGluZmVyaW9yX3B0aWQgPSBwdGlkOwkJCS8qIFllcywgbWFrZSBpdCBj dXJyZW50LiAgKi8KICB9CiAgCkBAIC02NSw3ICs2NSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIw MTEwNDI5L2dkYi9jb3JlbG93LmMKICAvKiBUaGlzIHJvdXRpbmUgb3BlbnMgYW5kIHNldHMgdXAg dGhlIGNvcmUgZmlsZSBiZmQuICAqLwogIAogIHN0YXRpYyB2b2lkCi1AQCAtMzc5LDYgKzQyOCwx MiBAQCBjb3JlX29wZW4gKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCitAQCAtMzgwLDYg KzQyOSwxMiBAQCBjb3JlX29wZW4gKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCiAgICBw dXNoX3RhcmdldCAoJmNvcmVfb3BzKTsKICAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7 CiAgCkBAIC03OCw3ICs3OCw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9jb3Jl bG93LmMKICAgIC8qIERvIHRoaXMgYmVmb3JlIGFja25vd2xlZGdpbmcgdGhlIGluZmVyaW9yLCBz byBpZgogICAgICAgcG9zdF9jcmVhdGVfaW5mZXJpb3IgdGhyb3dzIChjYW4gaGFwcGVuIGVhc2ls bHkgaWYgeW91J3JlIGxvYWRpbmcKICAgICAgIGEgY29yZSBmaWxlIHdpdGggdGhlIHdyb25nIGV4 ZWMpLCB3ZSBhcmVuJ3QgbGVmdCB3aXRoIHRocmVhZHMKLUBAIC05MzIsNCArOTg3LDExIEBAIF9p bml0aWFsaXplX2NvcmVsb3cgKHZvaWQpCitAQCAtOTMzLDQgKzk4OCwxMSBAQCBfaW5pdGlhbGl6 ZV9jb3JlbG93ICh2b2lkKQogICAgaW5pdF9jb3JlX29wcyAoKTsKICAKICAgIGFkZF90YXJnZXQg KCZjb3JlX29wcyk7CkBAIC05MCwxMSArOTAsMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0 MjkvZ2RiL2NvcmVsb3cuYwogKwkJCSAgIE5VTEwsIE5VTEwsIE5VTEwsCiArCQkJICAgJnNldGxp c3QsICZzaG93bGlzdCk7CiAgfQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2RvYy9n ZGIudGV4aW5mbworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9nZGIudGV4aW5m bwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA0Mjkub3JpZy9nZGIvZG9jL2dkYi50 ZXhpbmZvCTIwMTEtMDUtMDMgMDU6MTQ6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45 MC4yMDExMDQyOS9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDUtMDMgMDU6MTQ6NTcuMDAwMDAw MDAwICswMjAwCi1AQCAtMTUzNTYsNiArMTUzNTYsMjcgQEAgaW5mb3JtYXRpb24gZmlsZXMuCist LS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wNy0y MiAyMDoxMjo0MC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9k b2MvZ2RiLnRleGluZm8JMjAxMS0wNy0yMiAyMDoxMzowMC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0x NTQwMiw2ICsxNTQwMiwyNyBAQCBpbmZvcm1hdGlvbiBmaWxlcy4KICAKICBAZW5kIHRhYmxlCiAg CkBAIC0xMjIsMTEgKzEyMiwxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvZG9j L2dkYi50ZXhpbmZvCiAgQGNpbmRleCBAY29kZXsuZ251X2RlYnVnbGlua30gc2VjdGlvbnMKICBA Y2luZGV4IGRlYnVnIGxpbmsgc2VjdGlvbnMKICBBIGRlYnVnIGxpbmsgaXMgYSBzcGVjaWFsIHNl Y3Rpb24gb2YgdGhlIGV4ZWN1dGFibGUgZmlsZSBuYW1lZAotSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA0MjkvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Nv bGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA0Mjkub3JpZy9nZGIv c29saWItc3ZyNC5jCTIwMTEtMDUtMDMgMDU6MTQ6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuMi45MC4yMDExMDQyOS9nZGIvc29saWItc3ZyNC5jCTIwMTEtMDUtMDMgMDU6MTQ6NTcuMDAw MDAwMDAwICswMjAwCi1AQCAtMTE3OSw5ICsxMTc5LDQ5IEBAIHN2cjRfY3VycmVudF9zb3MgKHZv aWQpCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAxMS0w Ny0yMiAyMDoxMjo0MC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9zb2xpYi1zdnI0LmMJMjAxMS0wNy0yMiAyMDoxNjoxMC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0x MjAxLDkgKzEyMDEsNDkgQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKICAJCSAgICAgc2FmZV9z dHJlcnJvciAoZXJyY29kZSkpOwogIAkgIGVsc2UKICAJICAgIHsKQEAgLTE0MCw3ICsxNDAsNyBA QCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvc29saWItc3ZyNC5jCiArCSAgICAgIC8q IE1heSBnZXQgb3ZlcndyaXR0ZW4gYmVsb3cuICAqLwogKwkgICAgICBzdHJjcHkgKG5ldy0+c29f bmFtZSwgbmV3LT5zb19vcmlnaW5hbF9uYW1lKTsKICsKLSsJICAgICAgYnVpbGRfaWQgPSBidWls ZF9pZF9hZGRyX2dldCAoTE1fRFlOQU1JQ19GUk9NX0xJTktfTUFQIChuZXcpKTsKKysJICAgICAg YnVpbGRfaWQgPSBidWlsZF9pZF9hZGRyX2dldCAobG1fZHluYW1pY19mcm9tX2xpbmtfbWFwIChu ZXcpKTsKICsJICAgICAgaWYgKGJ1aWxkX2lkICE9IE5VTEwpCiArCQl7CiArCQkgIGNoYXIgKm5h bWUsICpidWlsZF9pZF9maWxlbmFtZTsKQEAgLTE3OSwxMSArMTc5LDExIEBAIEluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNDI5L2dkYi9zb2xpYi1zdnI0LmMKICAJICAgIH0KICAJICB4ZnJlZSAoYnVm ZmVyKTsKICAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9lbGZyZWFkLmMKK0luZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4yLjkwLjIwMTEwNDI5Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDExLTA1LTAzIDA1OjE0OjU2LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL2VsZnJlYWQuYwkyMDEx LTA1LTAzIDA1OjE5OjI3LjAwMDAwMDAwMCArMDIwMAotQEAgLTQ5LDYgKzQ5LDExIEBACistLS0g Z2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9lbGZyZWFkLmMJMjAxMS0wNy0yMiAyMDoxMjo0 MC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMJ MjAxMS0wNy0yMiAyMDoxMzowMC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00NSw2ICs0NSwxMSBAQAog ICNpbmNsdWRlICJpbmZjYWxsLmgiCiAgI2luY2x1ZGUgImdkYnRocmVhZC5oIgogICNpbmNsdWRl ICJyZWdjYWNoZS5oIgpAQCAtMTk1LDcgKzE5NSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEw NDI5L2dkYi9lbGZyZWFkLmMKICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2 b2lkKTsKICAKLUBAIC0xMDc3LDE2ICsxMDgyLDY1IEBAIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJf cmV0dXJuX3N0b3AgKHN0cnUKK0BAIC0xMDc0LDE2ICsxMDc5LDY1IEBAIGVsZl9nbnVfaWZ1bmNf cmVzb2x2ZXJfcmV0dXJuX3N0b3AgKHN0cnUKICAgIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0aW9u cyAoYiwgc2Fscywgc2Fsc19lbmQpOwogIH0KICAKQEAgLTI2Myw3ICsyNjMsNyBAQCBJbmRleDog Z2RiLTcuMi45MC4yMDExMDQyOS9nZGIvZWxmcmVhZC5jCiAgewogICAgc3RydWN0IGJ1aWxkX2lk ICpyZXR2YWw7CiAgCi1AQCAtMTEwMiw2ICsxMTU2LDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChi ZmQgKmFiZmQpCitAQCAtMTA5OSw2ICsxMTUzLDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQg KmFiZmQpCiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTYxMiw3ICs2MTIsNyBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvZWxmcmVhZC5jCiAgLyogUmV0dXJuIGlmIEZJTEVO QU1FIGhhcyBOVF9HTlVfQlVJTERfSUQgbWF0Y2hpbmcgdGhlIENIRUNLIHZhbHVlLiAgKi8KICAK ICBzdGF0aWMgaW50Ci1AQCAtMTExNiw3ICsxNTEyLDcgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25z dCBjaGFyICpmaWxlbmFtZSwgcworQEAgLTExMTMsNyArMTUwOSw3IEBAIGJ1aWxkX2lkX3Zlcmlm eSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIHMKICAgIGlmIChhYmZkID09IE5VTEwpCiAgICAgIHJl dHVybiAwOwogIApAQCAtNjIxLDcgKzYyMSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDI5 L2dkYi9lbGZyZWFkLmMKICAKICAgIGlmIChmb3VuZCA9PSBOVUxMKQogICAgICB3YXJuaW5nIChf KCJGaWxlIFwiJXNcIiBoYXMgbm8gYnVpbGQtaWQsIGZpbGUgc2tpcHBlZCIpLCBmaWxlbmFtZSk7 Ci1AQCAtMTEzNCwxNCArMTUzMCwxNSBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZp bGVuYW1lLCBzCitAQCAtMTEzMSwxNCArMTUyNywxNSBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0 IGNoYXIgKmZpbGVuYW1lLCBzCiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTY0MSw3ICs2 NDEsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvZWxmcmVhZC5jCiAgCiAgICAv KiBLZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgc28gdGhhdCBERUJVR19GSUxFX0RJUkVDVE9S WSBiZWluZyAiIiB3aWxsCiAgICAgICBjYXVzZSAiLy5idWlsZC1pZC8uLi4iIGxvb2t1cHMuICAq LwotQEAgLTExNTIsNiArMTU0OSw4IEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1 Y3QgYnVpbGQKK0BAIC0xMTQ5LDYgKzE1NDYsOCBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFt ZSAoc3RydWN0IGJ1aWxkCiAgICAgICAgY2hhciAqcywgKmRlYnVnZGlyX2VuZDsKICAgICAgICBn ZGJfYnl0ZSAqZGF0YSA9IGJ1aWxkX2lkLT5kYXRhOwogICAgICAgIHNpemVfdCBzaXplID0gYnVp bGRfaWQtPnNpemU7CkBAIC02NTAsNyArNjUwLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0 MjkvZ2RiL2VsZnJlYWQuYwogIAogICAgICAgIHdoaWxlICgqZGVidWdkaXIgPT0gRElSTkFNRV9T RVBBUkFUT1IpCiAgCWRlYnVnZGlyKys7Ci1AQCAtMTE3MiwzOSArMTU3MSwyNDIgQEAgYnVpbGRf aWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0cnVjdCBidWlsZAorQEAgLTExNjksMzkgKzE1NjgsMjQy IEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKICAJKnMrKyA9ICcv JzsKICAgICAgICB3aGlsZSAoc2l6ZS0tID4gMCkKICAJcyArPSBzcHJpbnRmIChzLCAiJTAyeCIs ICh1bnNpZ25lZCkgKmRhdGErKyk7CkBAIC05MDUsNyArOTA1LDcgQEAgSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA0MjkvZ2RiL2VsZnJlYWQuYwogICAgICAgIHhmcmVlIChidWlsZF9pZCk7CiAgICAg ICAgLyogUHJldmVudCBsb29waW5nIG9uIGEgc3RyaXBwZWQgLmRlYnVnIGZpbGUuICAqLwogICAg ICAgIGlmIChidWlsZF9pZF9uYW1lICE9IE5VTEwKLUBAIC0xMjE1LDcgKzE4MTcsNyBAQCBmaW5k X3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAoc3RyCitAQCAtMTIxMiw3ICsxODE0LDcg QEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0cgogIAkgIHhmcmVlIChi dWlsZF9pZF9uYW1lKTsKICAJfQogICAgICAgIGVsc2UgaWYgKGJ1aWxkX2lkX25hbWUgIT0gTlVM TCkKQEAgLTkxNCw3ICs5MTQsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvZWxm cmVhZC5jCiAgICAgIH0KICAgIHJldHVybiBOVUxMOwogIH0KLUBAIC0xNDE4LDkgKzIwMjAsMTAg QEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbAorQEAgLTE0MzIsOSAr MjAzNCwxMCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCiAgICAg ICBgLm5vdGUuZ251LmJ1aWxkLWlkJy4gICovCiAgICBlbHNlIGlmICghb2JqZmlsZV9oYXNfcGFy dGlhbF9zeW1ib2xzIChvYmpmaWxlKSkKICAgICAgewpAQCAtOTI3LDcgKzkyNyw3IEBAIEluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNDI5L2dkYi9lbGZyZWFkLmMKICAKICAgICAgICBpZiAoZGVidWdm aWxlID09IE5VTEwpCiAgCWRlYnVnZmlsZSA9IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9k ZWJ1Z2xpbmsgKG9iamZpbGUpOwotQEAgLTE0MzIsNiArMjAzNSwxMiBAQCBlbGZfc3ltZmlsZV9y ZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCitAQCAtMTQ0Niw2ICsyMDQ5LDEyIEBAIGVsZl9z eW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKICAJICBzeW1ib2xfZmlsZV9hZGRf c2VwYXJhdGUgKGFiZmQsIHN5bWZpbGVfZmxhZ3MsIG9iamZpbGUpOwogIAkgIHhmcmVlIChkZWJ1 Z2ZpbGUpOwogIAl9CkBAIC05NDAsNyArOTQwLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0 MjkvZ2RiL2VsZnJlYWQuYwogICAgICB9CiAgfQogIAotQEAgLTE5MTEsNCArMjUyMCwxNiBAQCBf aW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lkKQorQEAgLTE5MjUsNCArMjUzNCwxNiBAQCBfaW5pdGlh bGl6ZV9lbGZyZWFkICh2b2lkKQogIAogICAgZWxmX29iamZpbGVfZ251X2lmdW5jX2NhY2hlX2Rh dGEgPSByZWdpc3Rlcl9vYmpmaWxlX2RhdGEgKCk7CiAgICBnbnVfaWZ1bmNfZm5zX3AgPSAmZWxm X2dudV9pZnVuY19mbnM7CkBAIC05NTcsMTEgKzk1NywxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4y MDExMDQyOS9nZGIvZWxmcmVhZC5jCiArCiArICBvYnNlcnZlcl9hdHRhY2hfZXhlY3V0YWJsZV9j aGFuZ2VkIChkZWJ1Z19wcmludF9leGVjdXRhYmxlX2NoYW5nZWQpOwogIH0KLUluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNDI5L2dkYi9zeW1maWxlLmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9zeW1maWxlLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcv Z2RiL3N5bWZpbGUuaAkyMDExLTA1LTAzIDA1OjE0OjU2LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjIuOTAuMjAxMTA0MjkvZ2RiL3N5bWZpbGUuaAkyMDExLTA1LTAzIDA1OjE0OjU3LjAwMDAw MDAwMCArMDIwMAotQEAgLTYwNSw2ICs2MDUsMTMgQEAgdm9pZCBmcmVlX3N5bWZpbGVfc2VnbWVu dF9kYXRhIChzdHJ1Y3QgcworLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc3ltZmls ZS5oCTIwMTEtMDctMjIgMjA6MTI6NDAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvc3ltZmlsZS5oCTIwMTEtMDctMjIgMjA6MTM6MDAuMDAwMDAwMDAwICswMjAw CitAQCAtNjA5LDYgKzYwOSwxMyBAQCB2b2lkIGZyZWVfc3ltZmlsZV9zZWdtZW50X2RhdGEgKHN0 cnVjdCBzCiAgCiAgZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICppbmNyZW1lbnRfcmVhZGluZ19zeW10 YWIgKHZvaWQpOwogIApAQCAtOTc0LDEyICs5NzQsMTIgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA0MjkvZ2RiL3N5bWZpbGUuaAogKwogIC8qIEZyb20gZHdhcmYycmVhZC5jICovCiAgCi0gZXh0 ZXJuIGludCBkd2FyZjJfaGFzX2luZm8gKHN0cnVjdCBvYmpmaWxlICopOwotSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA0MjkvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAorIC8qIE5hbWVzIGZvciBh IGR3YXJmMiBkZWJ1Z2dpbmcgc2VjdGlvbi4gIFRoZSBmaWVsZCBOT1JNQUwgaXMgdGhlIG5vcm1h bAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA0Mjkub3JpZy9nZGIvdGVzdHN1aXRlL2xp Yi9nZGIuZXhwCTIwMTEtMDUtMDMgMDU6MTQ6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDQyOS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTEtMDUtMDMgMDU6MTQ6 NTcuMDAwMDAwMDAwICswMjAwCi1AQCAtMTM4MSw2ICsxMzgxLDE2IEBAIHByb2MgZGVmYXVsdF9n ZGJfc3RhcnQgeyB9IHsKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9saWIvZ2RiLmV4cAkyMDExLTA3LTIyIDIwOjEyOjQwLjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTA3LTIyIDIw OjEzOjAwLjAwMDAwMDAwMCArMDIwMAorQEAgLTEzOTAsNiArMTM5MCwxNiBAQCBwcm9jIGRlZmF1 bHRfZ2RiX3N0YXJ0IHsgfSB7CiAgCSAgICB3YXJuaW5nICJDb3VsZG4ndCBzZXQgdGhlIHdpZHRo IHRvIDAuIgogIAl9CiAgICAgIH0KQEAgLTk5NiwxMSArOTk2LDExIEBAIEluZGV4OiBnZGItNy4y LjkwLjIwMTEwNDI5L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICAgICAgcmV0dXJuIDA7CiAg fQogIAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3Vw cG9ydC5leHAKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGliL21p LXN1cHBvcnQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDQyOS5vcmlnL2dk Yi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTEtMDMtMDcgMTc6MDM6MDQuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDQyOS9nZGIvdGVzdHN1aXRlL2xpYi9taS1z dXBwb3J0LmV4cAkyMDExLTA1LTAzIDA1OjE0OjU3LjAwMDAwMDAwMCArMDIwMAotQEAgLTIyMSw2 ICsyMjEsMTYgQEAgcHJvYyBkZWZhdWx0X21pX2dkYl9zdGFydCB7IGFyZ3MgfSB7CistLS0gZ2Ri LTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIw MTEtMDctMjIgMjA6MTI6NDAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDExLTA3LTIyIDIwOjEzOjAwLjAw MDAwMDAwMCArMDIwMAorQEAgLTIyMiw2ICsyMjIsMTYgQEAgcHJvYyBkZWZhdWx0X21pX2dkYl9z dGFydCB7IGFyZ3MgfSB7CiAgCSAgICB9CiAgICAgIAl9CiAgICAgIH0KQEAgLTEwMTcsMTEgKzEw MTcsMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL3Rlc3RzdWl0ZS9saWIvbWkt c3VwcG9ydC5leHAKICAKICAgICAgZGV0ZWN0X2FzeW5jCiAgCi1JbmRleDogZ2RiLTcuMi45MC4y MDExMDQyOS9nZGIvb2JqZmlsZXMuaAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL29i amZpbGVzLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDI5Lm9yaWcvZ2RiL29i amZpbGVzLmgJMjAxMS0wMy0wNyAxNzoxNzoyOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4y LjkwLjIwMTEwNDI5L2dkYi9vYmpmaWxlcy5oCTIwMTEtMDUtMDMgMDU6MTQ6NTcuMDAwMDAwMDAw ICswMjAwCi1AQCAtNDQxLDYgKzQ0MSwxMCBAQCBzdHJ1Y3Qgb2JqZmlsZQorLS0tIGdkYi03LjMu NTAuMjAxMTA3MjIub3JpZy9nZGIvb2JqZmlsZXMuaAkyMDExLTA3LTIyIDIwOjEyOjQwLjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL29iamZpbGVzLmgJMjAxMS0w Ny0yMiAyMDoxMzowMC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00MzQsNiArNDM0LDEwIEBAIHN0cnVj dCBvYmpmaWxlCiAgCiAgI2RlZmluZSBPQkpGX1BTWU1UQUJTX1JFQUQgKDEgPDwgNCkKICAKCmRp ZmYgLS1naXQgYS9nZGItNi42LWJ6MjQ3MzU0LWxlYWRlci1leGl0LWZpeC5wYXRjaCBiL2dkYi02 LjYtYnoyNDczNTQtbGVhZGVyLWV4aXQtZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAzN2M2MWRkLi4wMDAwMDAwCi0tLSBhL2dkYi02LjYtYnoyNDczNTQtbGVhZGVyLWV4 aXQtZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLTIwMDctMDctMDgg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogbGludXgt bmF0LmMgKGxpbnV4X2x3cF9pc196b21iaWUpOiBOZXcgZnVuY3Rpb24uCi0JKHdhaXRfbHdwKTog Rml4IGxvY2t1cCBvbiBleGl0IG9mIHRoZSB0aHJlYWQgZ3JvdXAgbGVhZGVyLgotCShsaW51eF94 ZmVyX3BhcnRpYWwpOiBSZW5hbWVkIHRvIC4uLgotCShsaW51eF94ZmVyX3BhcnRpYWxfbHdwKTog Li4uIGhlcmUuCi0JKGxpbnV4X3hmZXJfcGFydGlhbCk6IE5ldyBmdW5jdGlvbiB3cmFwcGluZyBM SU5VWF9YRkVSX1BBUlRJQUxfTFdQLgotCi0yMDA4LTAyLTI0ICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlQb3J0IHRvIEdEQi02LjhwcmUuCi0KLUluZGV4 OiBnZGItNi44LjUwLjIwMDgxMjA5L2dkYi9saW51eC1uYXQuYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi02LjguNTAuMjAwODEyMDkub3JpZy9nZGIvbGludXgtbmF0LmMJMjAwOC0xMi0xMCAwMToyNzoz NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNi44LjUwLjIwMDgxMjA5L2dkYi9saW51eC1uYXQu YwkyMDA4LTEyLTEwIDAxOjI4OjE0LjAwMDAwMDAwMCArMDEwMAotQEAgLTE5ODEsNiArMTk4MSwz MSBAQCBsaW51eF9oYW5kbGVfZXh0ZW5kZWRfd2FpdCAoc3RydWN0IGx3cF9pCi0gCQkgIF8oInVu a25vd24gcHRyYWNlIGV2ZW50ICVkIiksIGV2ZW50KTsKLSB9Ci0gCi0rc3RhdGljIGludAotK2xp bnV4X2x3cF9pc196b21iaWUgKGxvbmcgbHdwKQotK3sKLSsgIGNoYXIgYnVmZmVyW01BWFBBVEhM RU5dOwotKyAgRklMRSAqcHJvY2ZpbGU7Ci0rICBpbnQgcmV0dmFsID0gMDsKLSsKLSsgIHNwcmlu dGYgKGJ1ZmZlciwgIi9wcm9jLyVsZC9zdGF0dXMiLCBsd3ApOwotKyAgcHJvY2ZpbGUgPSBmb3Bl biAoYnVmZmVyLCAiciIpOwotKyAgaWYgKHByb2NmaWxlID09IE5VTEwpCi0rICAgIHsKLSsgICAg ICB3YXJuaW5nIChfKCJ1bmFibGUgdG8gb3BlbiAvcHJvYyBmaWxlICclcyciKSwgYnVmZmVyKTsK LSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyAgd2hpbGUgKGZnZXRzIChidWZmZXIsIHNpemVv ZiAoYnVmZmVyKSwgcHJvY2ZpbGUpICE9IE5VTEwpCi0rICAgIGlmIChzdHJjbXAgKGJ1ZmZlciwg IlN0YXRlOlx0WiAoem9tYmllKVxuIikgPT0gMCkKLSsgICAgICB7Ci0rCXJldHZhbCA9IDE7Ci0r CWJyZWFrOwotKyAgICAgIH0KLSsgIGZjbG9zZSAocHJvY2ZpbGUpOwotKwotKyAgcmV0dXJuIHJl dHZhbDsKLSt9Ci0rCi0gLyogV2FpdCBmb3IgTFAgdG8gc3RvcC4gIFJldHVybnMgdGhlIHdhaXQg c3RhdHVzLCBvciAwIGlmIHRoZSBMV1AgaGFzCi0gICAgZXhpdGVkLiAgKi8KLSAKLUBAIC0xOTg4 LDE2ICsyMDEzLDMxIEBAIHN0YXRpYyBpbnQKLSB3YWl0X2x3cCAoc3RydWN0IGx3cF9pbmZvICps cCkKLSB7Ci0gICBwaWRfdCBwaWQ7Ci0tICBpbnQgc3RhdHVzOwotKyAgaW50IHN0YXR1cyA9IDA7 Ci0gICBpbnQgdGhyZWFkX2RlYWQgPSAwOwotIAotICAgZ2RiX2Fzc2VydCAoIWxwLT5zdG9wcGVk KTsKLSAgIGdkYl9hc3NlcnQgKGxwLT5zdGF0dXMgPT0gMCk7Ci0gCi0tICBwaWQgPSBteV93YWl0 cGlkIChHRVRfTFdQIChscC0+cHRpZCksICZzdGF0dXMsIDApOwotLSAgaWYgKHBpZCA9PSAtMSAm JiBlcnJubyA9PSBFQ0hJTEQpCi0rICAvKiBUaHJlYWQgZ3JvdXAgbGVhZGVyIG1heSBoYXZlIGV4 aXRlZCBidXQgd2Ugd291bGQgbG9jayB1cCBieSBXQUlUUElEIGFzIGl0Ci0rICAgICB3YWl0cyBv biBhbGwgaXRzIHRocmVhZHM7IF9fV0NMT05FIGlzIG5vdCBhcHBsaWNhYmxlIGZvciB0aGUgbGVh ZGVyLgotKyAgICAgVGhlIHRocmVhZCBsZWFkZXIgcmVzdHJpY3Rpb25zIGlzIG9ubHkgYSBwZXJm b3JtYW5jZSBvcHRpbWl6YXRpb24gaGVyZS4KLSsgICAgIExJTlVYX05BVF9USFJFQURfQUxJVkUg Y2Fubm90IGJlIHVzZWQgaGVyZSBhcyBpdCByZXF1aXJlcyBhIFNUT1BQRUQKLSsgICAgIHByb2Nl c3M7IGl0IGdldHMgRVNSQ0ggYm90aCBmb3IgdGhlIHpvbWJpZSBhbmQgZm9yIHJ1bm5pbmcgcHJv Y2Vzc2VzLiAgKi8KLSsgIGlmIChpc19sd3AgKGxwLT5wdGlkKSAmJiBHRVRfUElEIChscC0+cHRp ZCkgPT0gR0VUX0xXUCAobHAtPnB0aWQpCi0rICAgICAgJiYgbGludXhfbHdwX2lzX3pvbWJpZSAo R0VUX0xXUCAobHAtPnB0aWQpKSkKLSsgICAgewotKyAgICAgIHRocmVhZF9kZWFkID0gMTsKLSsg ICAgICBpZiAoZGVidWdfbGludXhfbmF0KQotKwlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csICJXTDogVGhyZWFkcyBsZWFkZXIgJXMgdmFuaXNoZWQuXG4iLAotKwkJCSAgICB0YXJnZXRf cGlkX3RvX3N0ciAobHAtPnB0aWQpKTsKLSsgICAgfQotKwotKyAgaWYgKCF0aHJlYWRfZGVhZCkK LSAgICAgewotLSAgICAgIHBpZCA9IG15X3dhaXRwaWQgKEdFVF9MV1AgKGxwLT5wdGlkKSwgJnN0 YXR1cywgX19XQ0xPTkUpOwotKyAgICAgIHBpZCA9IG15X3dhaXRwaWQgKEdFVF9MV1AgKGxwLT5w dGlkKSwgJnN0YXR1cywgMCk7Ci0rICAgICAgaWYgKHBpZCA9PSAtMSAmJiBlcnJubyA9PSBFQ0hJ TEQpCi0rCXBpZCA9IG15X3dhaXRwaWQgKEdFVF9MV1AgKGxwLT5wdGlkKSwgJnN0YXR1cywgX19X Q0xPTkUpOwotICAgICAgIGlmIChwaWQgPT0gLTEgJiYgZXJybm8gPT0gRUNISUxEKQotIAl7Ci0g CSAgLyogVGhlIHRocmVhZCBoYXMgcHJldmlvdXNseSBleGl0ZWQuICBXZSBuZWVkIHRvIGRlbGV0 ZSBpdAotQEAgLTQxNTMsOCArNDE5MywxMCBAQCBsaW51eF9uYXRfeGZlcl9vc2RhdGEgKHN0cnVj dCB0YXJnZXRfb3BzCi0gICByZXR1cm4gbGVuOwotIH0KLSAKLSsvKiBUcmFuc2ZlciBmcm9tIHRo ZSBzcGVjaWZpYyBMV1AgY3VycmVudGx5IHNldCBieSBQSUQgb2YgSU5GRVJJT1JfUFRJRC4gICov Ci0rCi0gc3RhdGljIExPTkdFU1QKLS1saW51eF94ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRf b3BzICpvcHMsIGVudW0gdGFyZ2V0X29iamVjdCBvYmplY3QsCi0rbGludXhfeGZlcl9wYXJ0aWFs X2x3cCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgZW51bSB0YXJnZXRfb2JqZWN0IG9iamVjdCwK LSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFubmV4LCBnZGJfYnl0ZSAqcmVhZGJ1 ZiwKLSAJCSAgICBjb25zdCBnZGJfYnl0ZSAqd3JpdGVidWYsIFVMT05HRVNUIG9mZnNldCwgTE9O R0VTVCBsZW4pCi0gewotQEAgLTQyMDEsNiArNDI0Myw0NSBAQCBsaW51eF94ZmVyX3BhcnRpYWwg KHN0cnVjdCB0YXJnZXRfb3BzICpvCi0gCQkJICAgICBvZmZzZXQsIGxlbik7Ci0gfQotIAotKy8q IG5wdGxfZGIgZXhwZWN0cyBiZWluZyBhYmxlIHRvIHRyYW5zZmVyIG1lbW9yeSBqdXN0IGJ5IHNw ZWNpZnlpbmcgUElELgotKyAgIEFmdGVyIHRoZSB0aHJlYWQgZ3JvdXAgbGVhZGVyIGV4aXN0cyB0 aGUgTGludXgga2VybmVsIHR1cm5zIHRoZSB0YXNrCi0rICAgaW50byB6b21iaWUgbm8gbG9uZ2Vy IHBlcm1pdHRpbmcgYWNjZXNzZXMgdG8gaXRzIG1lbW9yeS4KLSsgICBUcmFuc2ZlciB0aGUgbWVt b3J5IGZyb20gYW4gYXJiaXRyYXJ5IExXUF9MSVNUIGVudHJ5IGluIHN1Y2ggY2FzZS4gICovCi0r Ci0rc3RhdGljIExPTkdFU1QKLStsaW51eF94ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRfb3Bz ICpvcHMsIGVudW0gdGFyZ2V0X29iamVjdCBvYmplY3QsCi0rICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICphbm5leCwgZ2RiX2J5dGUgKnJlYWRidWYsCi0rCQkgICAgY29uc3QgZ2RiX2J5 dGUgKndyaXRlYnVmLCBVTE9OR0VTVCBvZmZzZXQsIExPTkdFU1QgbGVuKQotK3sKLSsgIExPTkdF U1QgeGZlcjsKLSsgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci0rICAvKiBOb3QgdXNpbmcgU0FWRV9J TkZFUklPUl9QVElEIGFscmVhZHkgaGVyZSBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLiAgKi8KLSsg IHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW4gPSBOVUxMOwotKyAgcHRpZF90IGluZmVyaW9yX3B0 aWRfb3JpZyA9IGluZmVyaW9yX3B0aWQ7Ci0rCi0rICBlcnJubyA9IDA7Ci0rICB4ZmVyID0gbGlu dXhfeGZlcl9wYXJ0aWFsX2x3cCAob3BzLCBvYmplY3QsIGFubmV4LCByZWFkYnVmLCB3cml0ZWJ1 ZiwKLSsJCQkJIG9mZnNldCwgbGVuKTsKLSsKLSsgIGZvciAobHAgPSBsd3BfbGlzdDsgeGZlciA9 PSAwICYmIChlcnJubyA9PSBFQUNDRVMgfHwgZXJybm8gPT0gRVNSQ0gpCi0rCQkgICAgICAmJiBs cCAhPSBOVUxMOyBscCA9IGxwLT5uZXh0KQotKyAgICB7Ci0rICAgICAgaWYgKCFpc19sd3AgKGxw LT5wdGlkKSB8fCBwdGlkX2VxdWFsIChscC0+cHRpZCwgaW5mZXJpb3JfcHRpZF9vcmlnKSkKLSsg ICAgICAgIGNvbnRpbnVlOwotKyAgICAgIAotKyAgICAgIGlmIChvbGRfY2hhaW4gPT0gTlVMTCkK LSsJb2xkX2NoYWluID0gc2F2ZV9pbmZlcmlvcl9wdGlkICgpOwotKyAgICAgIGluZmVyaW9yX3B0 aWQgPSBCVUlMRF9MV1AgKEdFVF9MV1AgKGxwLT5wdGlkKSwgR0VUX0xXUCAobHAtPnB0aWQpKTsK LSsgICAgICBlcnJubyA9IDA7Ci0rICAgICAgeGZlciA9IGxpbnV4X3hmZXJfcGFydGlhbF9sd3Ag KG9wcywgb2JqZWN0LCBhbm5leCwgcmVhZGJ1Ziwgd3JpdGVidWYsCi0rCQkJCSAgICAgb2Zmc2V0 LCBsZW4pOwotKyAgICB9Ci0rCi0rICBpZiAob2xkX2NoYWluICE9IE5VTEwpCi0rICAgIGRvX2Ns ZWFudXBzIChvbGRfY2hhaW4pOwotKyAgcmV0dXJuIHhmZXI7Ci0rfQotKwotIC8qIENyZWF0ZSBh IHByb3RvdHlwZSBnZW5lcmljIEdOVS9MaW51eCB0YXJnZXQuICBUaGUgY2xpZW50IGNhbiBvdmVy cmlkZQotICAgIGl0IHdpdGggbG9jYWwgbWV0aG9kcy4gICovCi0gCgpkaWZmIC0tZ2l0IGEvZ2Ri LTYuNi1iejI0NzM1NC1sZWFkZXItZXhpdC10ZXN0LnBhdGNoIGIvZ2RiLTYuNi1iejI0NzM1NC1s ZWFkZXItZXhpdC10ZXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDI2 Nzg5Li4wMDAwMDAwCi0tLSBhL2dkYi02LjYtYnoyNDczNTQtbGVhZGVyLWV4aXQtdGVzdC5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0yMDA3LTA3LTA3ICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi50aHJlYWRzL2xlYWRl ci1leGl0LmMsIGdkYi50aHJlYWRzL2xlYWRlci1leGl0LmV4cDogTmV3IGZpbGVzLgotCi0tLS0g L2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKLSsrKyAuL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvbGVhZGVyLWV4aXQuYwk3IEp1bCAyMDA3IDE1OjIxOjU3IC0wMDAwCi1AQCAt MCwwICsxLDQ3IEBACi0rLyogQ2xlYW4gZXhpdCBvZiB0aGUgdGhyZWFkIGdyb3VwIGxlYWRlciBz aG91bGQgbm90IGJyZWFrIEdEQi4KLSsKLSsgICBDb3B5cmlnaHQgMjAwNyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0r ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w bGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0rICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAq LwotKwotKyNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0rI2luY2x1ZGUgPGFzc2VydC5oPgotKyNpbmNs dWRlIDx1bmlzdGQuaD4KLSsKLStzdGF0aWMgdm9pZCAqc3RhcnQgKHZvaWQgKmFyZykKLSt7Ci0r ICBmb3IgKDs7KQotKyAgICBwYXVzZSAoKTsKLSsgIC8qIE5PVFJFQUNIRUQgKi8KLSsgIGFzc2Vy dCAoMCk7Ci0rICByZXR1cm4gYXJnOwotK30KLSsKLStpbnQgbWFpbiAodm9pZCkKLSt7Ci0rICBw dGhyZWFkX3QgdGhyZWFkOwotKyAgaW50IGk7Ci0rCi0rICBpID0gcHRocmVhZF9jcmVhdGUgKCZ0 aHJlYWQsIE5VTEwsIHN0YXJ0LCBOVUxMKTsJLyogY3JlYXRlMSAqLwotKyAgYXNzZXJ0IChpID09 IDApOwotKwotKyAgcHRocmVhZF9leGl0IChOVUxMKTsKLSsgIC8qIE5PVFJFQUNIRUQgKi8KLSsg IGFzc2VydCAoMCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0tLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAg MDA6MDA6MDAgLTAwMDAKLSsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvbGVhZGVyLWV4 aXQuZXhwCTcgSnVsIDIwMDcgMTU6MjE6NTcgLTAwMDAKLUBAIC0wLDAgKzEsNjQgQEAKLSsjIENv cHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0rIyAKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIyAKLSsj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQotKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gIAotKwotKyMgRXhpdCBvZiB0 aGUgdGhyZWFkIGdyb3VwIGxlYWRlciBzaG91bGQgbm90IGJyZWFrIEdEQi4KLSsKLSsjIFRoaXMg ZmlsZSB3YXMgd3JpdHRlbiBieSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4uCi0rCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rCXN0cmFjZSAkdHJhY2VsZXZlbAot K30KLSsKLStzZXQgdGVzdGZpbGUgImxlYWRlci1leGl0IgotK3NldCBzcmNmaWxlICR7dGVzdGZp bGV9LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0r aWYge1tnZGJfY29tcGlsZV9wdGhyZWFkcyAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9 IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgcmV0dXJu IC0xCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIg JHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotK2dkYl9ydW5fY21kCi0rCi0r cHJvYyBzdG9wX3Byb2Nlc3MgeyBkZXNjcmlwdGlvbiB9IHsKLSsgIGdsb2JhbCBnZGJfcHJvbXB0 Ci0rCi0rICAjIEZvciB0aGlzIHRvIHdvcmsgd2UgbXVzdCBiZSBzdXJlIHRvIGNvbnN1bWUgdGhl ICJDb250aW51aW5nLiIKLSsgICMgbWVzc2FnZSBmaXJzdCwgb3IgR0RCJ3Mgc2lnbmFsIGhhbmRs ZXIgbWF5IG5vdCBiZSBpbiBwbGFjZS4KLSsgIGFmdGVyIDEwMDAge3NlbmRfZ2RiICJcMDAzIn0K LSsgIGdkYl9leHBlY3QgewotKyAgICAtcmUgIlByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJR0lO VC4qJGdkYl9wcm9tcHQgJCIKLSsgICAgICB7Ci0rCXBhc3MgJGRlc2NyaXB0aW9uCi0rICAgICAg fQotKyAgICB0aW1lb3V0Ci0rICAgICAgewotKwlmYWlsICIkZGVzY3JpcHRpb24gKHRpbWVvdXQp IgotKyAgICAgIH0KLSsgIH0KLSt9Ci0rCi0rIyBQcmV2ZW50IHJhY2VzLgotK3NsZWVwIDgKLSsK LStzdG9wX3Byb2Nlc3MgIlRocmVhZHMgY291bGQgYmUgc3RvcHBlZCIKLSsKLStnZGJfdGVzdCAi aW5mbyB0aHJlYWRzIiBcCi0rICAgICAgICAgIlxcKiAyIFRocmVhZCBcW15cclxuXF0qIGluIFxb XlxyXG5cXSoiIFwKLSsgICAgICAgICAiU2luZ2xlIHRocmVhZCBoYXMgYmVlbiBsZWZ0IgoKZGlm ZiAtLWdpdCBhL2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1pcy1kZWZhdWx0LnBhdGNo IGIvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLWlzLWRlZmF1bHQucGF0Y2gKaW5kZXgg NDI4MTAyYy4uNTBhZjc5NiAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1z dGVwLWlzLWRlZmF1bHQucGF0Y2gKKysrIGIvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVw LWlzLWRlZmF1bHQucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogZ2RiLTcuMS45MC4yMDEw MDcxMS9nZGIvaW5mcnVuLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZydW4u YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvaW5mcnVuLmMJ MjAxMC0wNy0xMiAxMDowNToyNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAw NzExL2dkYi9pbmZydW4uYwkyMDEwLTA3LTEyIDEwOjU4OjU2LjAwMDAwMDAwMCArMDIwMAotQEAg LTE0OTEsNyArMTQ5MSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpzY2hlZHVsZXJfZW51bXNbXSA9 IHsKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2luZnJ1bi5jCTIwMTEtMDctMjIg MTk6MTI6NTYuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvaW5m cnVuLmMJMjAxMS0wNy0yMiAxOToxNzowNi4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xNTQ5LDcgKzE1 NDksNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqc2NoZWR1bGVyX2VudW1zW10gPSB7CiAgICBzY2hl ZGxvY2tfc3RlcCwKICAgIE5VTEwKICB9OwpAQCAtMTEsMTAgKzExLDEwIEBAIEluZGV4OiBnZGIt Ny4xLjkwLjIwMTAwNzExL2dkYi9pbmZydW4uYwogIHN0YXRpYyB2b2lkCiAgc2hvd19zY2hlZHVs ZXJfbW9kZSAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKICAJCSAgICAgc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotSW5kZXg6IGdkYi03 LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY29uc29sZS5leHAKK0luZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNvbnNvbGUuZXhw CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90ZXN0c3VpdGUv Z2RiLm1pL21pLWNvbnNvbGUuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDMuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jb25zb2xl LmV4cAkyMDEwLTA3LTEyIDEwOjU4OjU2LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAu MjAxMTA3MjIub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jb25zb2xlLmV4cAkyMDExLTAx LTAxIDE2OjMzOjQ3LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3Rlc3RzdWl0ZS9nZGIubWkvbWktY29uc29sZS5leHAJMjAxMS0wNy0yMiAxOToxNzowNi4wMDAw MDAwMDAgKzAyMDAKIEBAIC00Nyw2ICs0Nyw5IEBAIGlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNk aXJ9LyR7c3ViZGlyfS8KICAKICBtaV9ydW5fdG9fbWFpbgpAQCAtMjUsMTAgKzI1LDEwIEBAIElu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNvbnNvbGUu ZXhwCiAgIyBOZXh0IG92ZXIgdGhlIGhlbGxvKCkgY2FsbCB3aGljaCB3aWxsIHByb2R1Y2UgbG90 cyBvZiBvdXRwdXQKICBtaV9nZGJfdGVzdCAiMjIwLWV4ZWMtbmV4dCIgXAogIAkgICAgIjIyMFxc XnJ1bm5pbmcoXHJcblxcKnJ1bm5pbmcsdGhyZWFkLWlkPVwiYWxsXCIpPyIgXAotSW5kZXg6IGdk Yi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLWNvbnNvbGUuZXhwCitJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItY29uc29s ZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIubWkvbWkyLWNvbnNvbGUuZXhwCTIwMTAtMDUtMjYgMjA6MTI6MTMuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTIt Y29uc29sZS5leHAJMjAxMC0wNy0xMiAxMDo1OToxNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGIt Ny4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLWNvbnNvbGUuZXhw CTIwMTEtMDYtMjMgMTE6NDA6NTAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItY29uc29sZS5leHAJMjAxMS0wNy0yMiAxOTox NzoyNy4wMDAwMDAwMDAgKzAyMDAKIEBAIC00Nyw2ICs0Nyw5IEBAIGlmICB7IFtnZGJfY29tcGls ZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8KICAKICBtaV9ydW5fdG9fbWFpbgpAQCAtMzcsMTIgKzM3 LDEyIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21p Mi1jb25zb2xlLmV4cAogK21pX2dkYl90ZXN0ICIyMTAtZ2RiLXNldCBzY2hlZHVsZXItbG9ja2lu ZyBvZmYiICIyMTBcXF5kb25lIiAic2V0IHNjaGVkdWxlci1sb2NraW5nIG9mZiIKICsKICAjIE5l eHQgb3ZlciB0aGUgaGVsbG8oKSBjYWxsIHdoaWNoIHdpbGwgcHJvZHVjZSBsb3RzIG9mIG91dHB1 dAotIGdkYl90ZXN0X211bHRpcGxlICIyMjAtZXhlYy1uZXh0IiAiU3RhcnRlZCBzdGVwIG92ZXIg aGVsbG8iIHsKLSAgICAgLXJlICIyMjBcXF5ydW5uaW5nXHJcbihcXCpydW5uaW5nLHRocmVhZC1p ZD1cImFsbFwiXHJcbik/JG1pX2dkYl9wcm9tcHQiIHsKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAw NzExL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNsaS5leHAKKyBtaV9nZGJfdGVzdCAiMjIwLWV4 ZWMtbmV4dCIgIjIyMFxcXnJ1bm5pbmcoXHJcbik/KFxcKnJ1bm5pbmcsdGhyZWFkLWlkPVwiYWxs XCIpPyIgXAorIAkiU3RhcnRlZCBzdGVwIG92ZXIgaGVsbG8iCitJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNsaS5leHAJ MjAxMC0wMS0xOSAwOTowMDozOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAw NzExL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNsaS5leHAJMjAxMC0wNy0xMiAxMDo1ODo1Ni4w MDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9nZGIubWkvbWktY2xpLmV4cAkyMDExLTA0LTI3IDEyOjE3OjM4LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY2xpLmV4cAky MDExLTA3LTIyIDE5OjE3OjA2LjAwMDAwMDAwMCArMDIwMAogQEAgLTE3Niw3ICsxNzYsNyBAQCBt aV9leGVjdXRlX3RvICJleGVjLWNvbnRpbnVlIiAiYnJlYWtwb2luCiAgIyBUZXN0IHRoYXQgdGhl IHRva2VuIGlzIG91dHB1dCBldmVuIGZvciBDTEkgY29tbWFuZHMKICAjIEFsc28gdGVzdCB0aGF0 ICpzdG9wcGVkIGluY2x1ZGVzIGZyYW1lIGluZm9ybWF0aW9uLgoKZGlmZiAtLWdpdCBhL2dkYi02 LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1zdy13YXRjaHBvaW50czIucGF0Y2ggYi9nZGItNi42 LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtc3ctd2F0Y2hwb2ludHMyLnBhdGNoCmluZGV4IDcxZjJk YzEuLjY3MWI0NTcgMTAwNjQ0Ci0tLSBhL2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1z dy13YXRjaHBvaW50czIucGF0Y2gKKysrIGIvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVw LXN3LXdhdGNocG9pbnRzMi5wYXRjaApAQCAtMjEsMTEgKzIxLDExIEBACiAKIAlQb3J0IHRvIEdE Qi02LjhwcmUuCiAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9pbmZlcmlvci5oCitJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvaW5mZXJpb3IuaAogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjIuNTAuMjAxMTAxMTcub3JpZy9nZGIvaW5mZXJpb3IuaAkyMDExLTAxLTA5IDA0OjA4 OjU2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2luZmVyaW9y LmgJMjAxMS0wMS0xNyAxNTo0ODozOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xODYsNyArMTg2LDE1 IEBAIGV4dGVybiB2b2lkIHJlb3Blbl9leGVjX2ZpbGUgKHZvaWQpOworLS0tIGdkYi03LjMuNTAu MjAxMTA3MjIub3JpZy9nZGIvaW5mZXJpb3IuaAkyMDExLTA3LTIyIDAxOjQ2OjA4LjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2luZmVyaW9yLmgJMjAxMS0wNy0y MiAxOToxMzozMC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xNTgsNyArMTU4LDE1IEBAIGV4dGVybiB2 b2lkIHJlb3Blbl9leGVjX2ZpbGUgKHZvaWQpOwogIC8qIFRoZSBgcmVzdW1lJyByb3V0aW5lIHNo b3VsZCBvbmx5IGJlIGNhbGxlZCBpbiBzcGVjaWFsIGNpcmN1bXN0YW5jZXMuCiAgICAgTm9ybWFs bHksIHVzZSBgcHJvY2VlZCcsIHdoaWNoIGhhbmRsZXMgYSBsb3Qgb2YgYm9va2tlZXBpbmcuICAq LwogIApAQCAtNDAsMTMgKzQwLDEzIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9p bmZlcmlvci5oCiArCiArZXh0ZXJuIHZvaWQgcmVzdW1lIChlbnVtIHJlc3VtZV9zdGVwLCBlbnVt IHRhcmdldF9zaWduYWwpOwogIAotIC8qIEZyb20gbWlzYyBmaWxlcyAqLworIGV4dGVybiBwdGlk X3QgdXNlcl92aXNpYmxlX3Jlc3VtZV9wdGlkIChpbnQgc3RlcCk7CiAgCi1JbmRleDogZ2RiLTcu Mi41MC4yMDExMDExNy9nZGIvaW5mcnVuLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9pbmZydW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAxMTcub3JpZy9nZGIv aW5mcnVuLmMJMjAxMS0wMS0wOSAwNDowODo1Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4y LjUwLjIwMTEwMTE3L2dkYi9pbmZydW4uYwkyMDExLTAxLTE3IDE1OjQ5OjQwLjAwMDAwMDAwMCAr MDEwMAotQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIGludCBmb2xsb3dfZm9yayAodm9pZCk7Cist LS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9pbmZydW4uYwkyMDExLTA3LTIyIDE5OjA4 OjE5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2luZnJ1bi5j CTIwMTEtMDctMjIgMTk6MTI6NTYuMDAwMDAwMDAwICswMjAwCitAQCAtNzksNyArNzksNyBAQCBz dGF0aWMgaW50IGZvbGxvd19mb3JrICh2b2lkKTsKICBzdGF0aWMgdm9pZCBzZXRfc2NoZWRsb2Nr X2Z1bmMgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwKICAJCQkJc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQgKmMpOwogIApAQCAtNTUsNyArNTUsMTcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAx MTcvZ2RiL2luZnJ1bi5jCiAgCiAgc3RhdGljIGludCBjdXJyZW50bHlfc3RlcHBpbmdfb3JfbmV4 dGluZ19jYWxsYmFjayAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwKICAJCQkJCQkgICB2b2lkICpk YXRhKTsKLUBAIC0xNTc3LDcgKzE1NzcsNyBAQCBtYXliZV9zb2Z0d2FyZV9zaW5nbGVzdGVwIChz dHJ1Y3QgZ2RiYXJjCitAQCAtMTYzMCw3ICsxNjMwLDggQEAgdXNlcl92aXNpYmxlX3Jlc3VtZV9w dGlkIChpbnQgc3RlcCkKKyAgICAgfQorICAgZWxzZSBpZiAoKHNjaGVkdWxlcl9tb2RlID09IHNj aGVkbG9ja19vbikKKyAJICAgfHwgKHNjaGVkdWxlcl9tb2RlID09IHNjaGVkbG9ja19zdGVwCist CSAgICAgICAmJiAoc3RlcCB8fCBzaW5nbGVzdGVwX2JyZWFrcG9pbnRzX2luc2VydGVkX3ApKSkK KysJICAgICAgICYmIChzdGVwID09IFJFU1VNRV9TVEVQX1VTRVIKKysJCSAgIHx8IHNpbmdsZXN0 ZXBfYnJlYWtwb2ludHNfaW5zZXJ0ZWRfcCkpKQorICAgICB7CisgICAgICAgLyogVXNlci1zZXR0 YWJsZSAnc2NoZWR1bGVyJyBtb2RlIHJlcXVpcmVzIHNvbG8gdGhyZWFkIHJlc3VtZS4gICovCisg ICAgICAgcmVzdW1lX3B0aWQgPSBpbmZlcmlvcl9wdGlkOworQEAgLTE2NDgsNyArMTY0OSw3IEBA IHVzZXJfdmlzaWJsZV9yZXN1bWVfcHRpZCAoaW50IHN0ZXApCiAgICAgU1RFUCBub256ZXJvIGlm IHdlIHNob3VsZCBzdGVwICh6ZXJvIHRvIGNvbnRpbnVlIGluc3RlYWQpLgogICAgIFNJRyBpcyB0 aGUgc2lnbmFsIHRvIGdpdmUgdGhlIGluZmVyaW9yICh6ZXJvIGZvciBub25lKS4gICovCiAgdm9p ZApAQCAtNjQsMzcgKzc0LDIzIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9pbmZy dW4uYwogIHsKICAgIGludCBzaG91bGRfcmVzdW1lID0gMTsKICAgIHN0cnVjdCBjbGVhbnVwICpv bGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHJlc3VtZV9jbGVhbnVwcywgMCk7Ci1AQCAtMTYw OSwxMCArMTYwOSwxMiBAQCByZXN1bWUgKGludCBzdGVwLCBlbnVtIHRhcmdldF9zaWduYWwgc2ln Ci0gICAgIH0KK0BAIC0xNjgxLDkgKzE2ODIsMTMgQEAgcmVzdW1lIChpbnQgc3RlcCwgZW51bSB0 YXJnZXRfc2lnbmFsIHNpZwogIAogICAgaWYgKGRlYnVnX2luZnJ1bikKLS0gICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csCiAtICAgICAgICAgICAgICAgICAgICAgICAgImluZnJ1bjogcmVzdW1lIChzdGVwPSVkLCBz aWduYWw9JWQpLCAiCi0tCQkJInRyYXBfZXhwZWN0ZWQ9JWRcbiIsCi0tIAkJCXN0ZXAsIHNpZywg dHAtPmNvbnRyb2wudHJhcF9leHBlY3RlZCk7Ci0rICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri X3N0ZGxvZywgImluZnJ1bjogcmVzdW1lIChzdGVwPSVzLCBzaWduYWw9JWQpLCAiCi0rCQkJCSAg ICAidHJhcF9leHBlY3RlZD0lZFxuIiwKLSsJCQkoc3RlcCA9PSBSRVNVTUVfU1RFUF9DT05USU5V RSA/ICJSRVNVTUVfU1RFUF9DT05USU5VRSIKLSsJCQk6IChzdGVwID09IFJFU1VNRV9TVEVQX1VT RVIgPyAiUkVTVU1FX1NURVBfVVNFUiIKLSsJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAg OiAiUkVTVU1FX1NURVBfTkVFREVEIikpLAotKwkJCXNpZywgdHAtPmNvbnRyb2wudHJhcF9leHBl Y3RlZCk7Ci0gCi0gICAvKiBOb3JtYWxseSwgYnkgdGhlIHRpbWUgd2UgcmVhY2ggYHJlc3VtZScs IHRoZSBicmVha3BvaW50cyBhcmUgZWl0aGVyCi0gICAgICByZW1vdmVkIG9yIGluc2VydGVkLCBh cyBhcHByb3ByaWF0ZS4gIFRoZSBleGNlcHRpb24gaXMgaWYgd2UncmUgc2l0dGluZwotQEAgLTE3 MzAsOSArMTczMiwxMCBAQCBhIGNvbW1hbmQgbGlrZSBgcmV0dXJuJyBvciBganVtcCcgdG8gY29u Ci0gCSAgICAgaW5kaXZpZHVhbGx5LiAgKi8KLSAJICByZXN1bWVfcHRpZCA9IGluZmVyaW9yX3B0 aWQ7Ci0gCX0KLS0gICAgICBlbHNlIGlmICgoc2NoZWR1bGVyX21vZGUgPT0gc2NoZWRsb2NrX29u KQotKyAgICAgIGVsc2UgaWYgKHNjaGVkdWxlcl9tb2RlID09IHNjaGVkbG9ja19vbgotIAkgICAg ICAgfHwgKHNjaGVkdWxlcl9tb2RlID09IHNjaGVkbG9ja19zdGVwCi0tCQkgICAmJiAoc3RlcCB8 fCBzaW5nbGVzdGVwX2JyZWFrcG9pbnRzX2luc2VydGVkX3ApKSkKLSsJCSAgICYmIChzdGVwID09 IFJFU1VNRV9TVEVQX1VTRVIKLSsJCSAgICAgICB8fCBzaW5nbGVzdGVwX2JyZWFrcG9pbnRzX2lu c2VydGVkX3ApKSkKLSAJewotIAkgIC8qIFVzZXItc2V0dGFibGUgJ3NjaGVkdWxlcicgbW9kZSBy ZXF1aXJlcyBzb2xvIHRocmVhZCByZXN1bWUuICAqLwotIAkgIHJlc3VtZV9wdGlkID0gaW5mZXJp b3JfcHRpZDsKLUBAIC0xOTQxLDcgKzE5NDQsNyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwg ZW51bSB0YXJnZXRfc2lnCisrICAgICAgICAgICAgICAgICAgICAgICAgImluZnJ1bjogcmVzdW1l IChzdGVwPSVzLCBzaWduYWw9JWQpLCAiCisgCQkJInRyYXBfZXhwZWN0ZWQ9JWQsIGN1cnJlbnQg dGhyZWFkIFslc10gYXQgJXNcbiIsCistIAkJCXN0ZXAsIHNpZywgdHAtPmNvbnRyb2wudHJhcF9l eHBlY3RlZCwKKysJCQkoc3RlcCA9PSBSRVNVTUVfU1RFUF9DT05USU5VRQorKwkJCSA/ICJSRVNV TUVfU1RFUF9DT05USU5VRSIKKysJCQkgOiAoc3RlcCA9PSBSRVNVTUVfU1RFUF9VU0VSID8gIlJF U1VNRV9TVEVQX1VTRVIiCisrCQkJCQkJICAgICA6ICJSRVNVTUVfU1RFUF9ORUVERUQiKSksCisr IAkJCXNpZywgdHAtPmNvbnRyb2wudHJhcF9leHBlY3RlZCwKKyAJCQl0YXJnZXRfcGlkX3RvX3N0 ciAoaW5mZXJpb3JfcHRpZCksCisgCQkJcGFkZHJlc3MgKGdkYmFyY2gsIHBjKSk7CisgCitAQCAt MjA1Niw3ICsyMDYxLDcgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3Np ZwogICAgc3RydWN0IHRocmVhZF9pbmZvICp0cDsKICAgIENPUkVfQUREUiBwYzsKICAgIHN0cnVj dCBhZGRyZXNzX3NwYWNlICphc3BhY2U7CkBAIC0xMDMsNyArOTksNyBAQCBJbmRleDogZ2RiLTcu Mi41MC4yMDExMDExNy9nZGIvaW5mcnVuLmMKICAKICAgIC8qIElmIHdlJ3JlIHN0b3BwZWQgYXQg YSBmb3JrL3Zmb3JrLCBmb2xsb3cgdGhlIGJyYW5jaCBzZXQgYnkgdGhlCiAgICAgICAic2V0IGZv bGxvdy1mb3JrLW1vZGUiIGNvbW1hbmQ7IG90aGVyd2lzZSwgd2UnbGwganVzdCBwcm9jZWVkCi1A QCAtMTk3NiwxMyArMTk3OSwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0YXJn ZXRfc2lnCitAQCAtMjA5NiwxMyArMjEwMSwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwg ZW51bSB0YXJnZXRfc2lnCiAgCSAgIGFjdHVhbGx5IGJlIGV4ZWN1dGluZyB0aGUgYnJlYWtwb2lu dCBpbnNuIGFueXdheS4KICAJICAgV2UnbGwgYmUgKHVuLSlleGVjdXRpbmcgdGhlIHByZXZpb3Vz IGluc3RydWN0aW9uLiAgKi8KICAKQEAgLTExOSw3ICsxMTUsNyBAQCBJbmRleDogZ2RiLTcuMi41 MC4yMDExMDExNy9nZGIvaW5mcnVuLmMKICAgICAgfQogICAgZWxzZQogICAgICB7Ci1AQCAtMjAy MywxMyArMjAyNiwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0YXJnZXRfc2ln CitAQCAtMjEzMywxMyArMjEzOCwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0 YXJnZXRfc2lnCiAgCSBpcyByZXF1aXJlZCBpdCByZXR1cm5zIFRSVUUgYW5kIHNldHMgdGhlIGN1 cnJlbnQgdGhyZWFkIHRvCiAgCSB0aGUgb2xkIHRocmVhZC4gICovCiAgICAgICAgaWYgKHByZXBh cmVfdG9fcHJvY2VlZCAoc3RlcCkpCkBAIC0xMzUsNyArMTMxLDcgQEAgSW5kZXg6IGdkYi03LjIu NTAuMjAxMTAxMTcvZ2RiL2luZnJ1bi5jCiAgICAgIHsKICAgICAgICB0cC0+Y29udHJvbC50cmFw X2V4cGVjdGVkID0gMTsKICAgICAgICAvKiBJZiBkaXNwbGFjZWQgc3RlcHBpbmcgaXMgZW5hYmxl ZCwgd2UgY2FuIHN0ZXAgb3ZlciB0aGUKLUBAIC0yMTE2LDggKzIxMTksMTMgQEAgcHJvY2VlZCAo Q09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTIyMjYsOCArMjIzMSwxMyBAQCBw cm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0YXJnZXRfc2lnCiAgICAvKiBSZXNldCB0byBu b3JtYWwgc3RhdGUuICAqLwogICAgaW5pdF9pbmZ3YWl0X3N0YXRlICgpOwogIApAQCAtMTUwLDcg KzE0Niw3IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9pbmZydW4uYwogIAogICAg LyogV2FpdCBmb3IgaXQgdG8gc3RvcCAoaWYgbm90IHN0YW5kYWxvbmUpCiAgICAgICBhbmQgaW4g YW55IGNhc2UgZGVjb2RlIHdoeSBpdCBzdG9wcGVkLCBhbmQgYWN0IGFjY29yZGluZ2x5LiAgKi8K LUBAIC00OTU3LDE0ICs0OTY1LDE5IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgorQEAgLTUx MjMsMTQgKzUxMzMsMTkgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CiAgCiAgLyogSXMgdGhy ZWFkIFRQIGluIHRoZSBtaWRkbGUgb2Ygc2luZ2xlLXN0ZXBwaW5nPyAgKi8KICAKQEAgLTE3Niwx MSArMTcyLDExIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9pbmZydW4uYwogIH0K ICAKICAvKiBSZXR1cm5zIHRydWUgaWYgYW55IHRocmVhZCAqYnV0KiB0aGUgb25lIHBhc3NlZCBp biAiZGF0YSIgaXMgaW4gdGhlCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvbGludXgt bmF0LmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9saW51eC1uYXQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAxMTcub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMS0w MS0xNyAxNTo0NzozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dk Yi9saW51eC1uYXQuYwkyMDExLTAxLTE3IDE1OjQ4OjM5LjAwMDAwMDAwMCArMDEwMAotQEAgLTI5 MjgsNyArMjkyOCwxMCBAQCBjb3VudF9ldmVudHNfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAq CistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDExLTA3LTIy IDE5OjA4OjE5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2xp bnV4LW5hdC5jCTIwMTEtMDctMjIgMTk6MTA6MjQuMDAwMDAwMDAwICswMjAwCitAQCAtMjk4Niw3 ICsyOTg2LDEwIEBAIGNvdW50X2V2ZW50c19jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICoKICBz dGF0aWMgaW50CiAgc2VsZWN0X3NpbmdsZXN0ZXBfbHdwX2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2lu Zm8gKmxwLCB2b2lkICpkYXRhKQogIHsKQEAgLTE5MiwxMCArMTg4LDEwIEBAIEluZGV4OiBnZGIt Ny4yLjUwLjIwMTEwMTE3L2dkYi9saW51eC1uYXQuYwogICAgICByZXR1cm4gMTsKICAgIGVsc2UK ICAgICAgcmV0dXJuIDA7Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvbGludXgtbmF0 LmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9saW51eC1uYXQuaAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjIuNTAuMjAxMTAxMTcub3JpZy9nZGIvbGludXgtbmF0LmgJMjAxMS0wMS0x NyAxNTo0NzozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9s aW51eC1uYXQuaAkyMDExLTAxLTE3IDE1OjQ4OjM5LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03 LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvbGludXgtbmF0LmgJMjAxMS0wNy0yMiAxOTowODoxOS4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9saW51eC1uYXQuaAky MDExLTA3LTIyIDE5OjEwOjI0LjAwMDAwMDAwMCArMDIwMAogQEAgLTU1LDggKzU1LDggQEAgc3Ry dWN0IGx3cF9pbmZvCiAgICAvKiBJZiBub24temVybywgYSBwZW5kaW5nIHdhaXQgc3RhdHVzLiAg Ki8KICAgIGludCBzdGF0dXM7CgpkaWZmIC0tZ2l0IGEvZ2RiLTcuMi41MC1zcGFyYy1hZGQtd29y a2Fyb3VuZC10by1icm9rZW4tZGVidWctZmlsZXMucGF0Y2ggYi9nZGItNy4yLjUwLXNwYXJjLWFk ZC13b3JrYXJvdW5kLXRvLWJyb2tlbi1kZWJ1Zy1maWxlcy5wYXRjaAppbmRleCAxOWZkY2MzLi5i MDExNjU4IDEwMDY0NAotLS0gYS9nZGItNy4yLjUwLXNwYXJjLWFkZC13b3JrYXJvdW5kLXRvLWJy b2tlbi1kZWJ1Zy1maWxlcy5wYXRjaAorKysgYi9nZGItNy4yLjUwLXNwYXJjLWFkZC13b3JrYXJv dW5kLXRvLWJyb2tlbi1kZWJ1Zy1maWxlcy5wYXRjaApAQCAtMSw2ICsxLDggQEAKLS0tLSBnZGIt Ny4yLjUwLjIwMTEwMzI4Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTAzLTMwIDEyOjUyOjIw LjM5NTQ1MDAwMSArMDIwMAotKysrIGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL2R3YXJmMnJlYWQu YwkyMDExLTAzLTMwIDEzOjQxOjU1LjQ4NTQ1MDAwNiArMDIwMAotQEAgLTY2LDEyICs2NiwxNCBA QAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDct MjIgMTk6Mzc6MTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv ZHdhcmYycmVhZC5jCTIwMTEtMDctMjIgMTk6NDQ6NDIuMDAwMDAwMDAwICswMjAwCitAQCAtNjcs MTIgKzY3LDE0IEBACiAgI2lmZGVmIEhBVkVfWkxJQl9ICiAgI2luY2x1ZGUgPHpsaWIuaD4KICAj ZW5kaWYKQEAgLTE1LDcgKzE3LDcgQEAKICAKICB0eXBlZGVmIHN0cnVjdCBzeW1ib2wgKnN5bWJv bHA7CiAgREVGX1ZFQ19QIChzeW1ib2xwKTsKLUBAIC0xNTYzLDYgKzE1NjUsNyBAQAorQEAgLTE2 MTgsNiArMTYyMCw3IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmoK ICAgICAgICAgIH0KICAgICAgfQogIApAQCAtMjMsNyArMjUsNyBAQAogICNpZmRlZiBIQVZFX01N QVAKICAgIGlmIChwYWdlc2l6ZSA9PSAwKQogICAgICBwYWdlc2l6ZSA9IGdldHBhZ2VzaXplICgp OwotQEAgLTE1ODksNiArMTU5Miw3IEBACitAQCAtMTY0MSw2ICsxNjQ0LDcgQEAgZHdhcmYyX3Jl YWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iagogIAl9CiAgICAgIH0KICAjZW5kaWYKQEAg LTMxLDE1ICszMywxNSBAQAogIAogICAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlIGFyZSBhIG5vcm1h bCwgbm90LWNvbXByZXNzZWQgc2VjdGlvbi4gICovCiAgICBpbmZvLT5idWZmZXIgPSBidWYKLUBA IC0xNTQzOSw2ICsxNTQ0Myw3IEBACitAQCAtMTU5ODMsNiArMTU5ODcsNyBAQCBtdW5tYXBfc2Vj dGlvbl9idWZmZXIgKHN0cnVjdCBkd2FyZjJfc2VjCiAgewotICAgaWYgKGluZm8tPndhc19tbWFw cGVkKQorICAgaWYgKGluZm8tPm1hcF9hZGRyICE9IE5VTEwpCiAgICAgIHsKICsjaWZuZGVmIF9f c3BhcmNfXwogICNpZmRlZiBIQVZFX01NQVAKLSAgICAgICBpbnRwdHJfdCBiZWdpbiA9IChpbnRw dHJfdCkgaW5mby0+YnVmZmVyOwotICAgICAgIGludHB0cl90IG1hcF9iZWdpbiA9IGJlZ2luICYg fihwYWdlc2l6ZSAtIDEpOwotQEAgLTE1NDQ5LDYgKzE1NDU0LDcgQEAKKyAgICAgICBpbnQgcmVz OworIAorQEAgLTE1OTkyLDYgKzE1OTk3LDcgQEAgbXVubWFwX3NlY3Rpb25fYnVmZmVyIChzdHJ1 Y3QgZHdhcmYyX3NlYwogICAgICAgIC8qIFdpdGhvdXQgSEFWRV9NTUFQLCB3ZSBzaG91bGQgbmV2 ZXIgYmUgaGVyZSB0byBiZWdpbiB3aXRoLiAgKi8KICAgICAgICBnZGJfYXNzZXJ0X25vdF9yZWFj aGVkICgibm8gbW1hcCBzdXBwb3J0Iik7CiAgI2VuZGlmCgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hl ci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2ggYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMt a2VlcC1kaXNhYmxlZC5wYXRjaAppbmRleCBhMDNkNTBjLi5kMmI2YzcxIDEwMDY0NAotLS0gYS9n ZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaAorKysgYi9nZGItYXJjaGVy LXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaApAQCAtMSwxMSArMSwxMiBAQAotSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL2JyZWFrcG9pbnQuYworSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2JyZWFrcG9pbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAx MTA0MTEub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTEtMDQtMTEgMTk6MTE6NTUuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvYnJlYWtwb2ludC5jCTIwMTEtMDQt MTEgMTk6MTg6MTAuMDAwMDAwMDAwICswMjAwCi1AQCAtMTEyMzMsNiArMTEyMzMsNTAgQEAgcmVf c2V0X2JyZWFrcG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiKQotICAgZG9fY2xlYW51cHMgKGNs ZWFudXBzKTsKLSB9CistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9icmVha3BvaW50 LmMJMjAxMS0wNy0yMiAxOTowODoxOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9icmVha3BvaW50LmMJMjAxMS0wNy0yMiAxOTozMjowNC4wMDAwMDAwMDAgKzAy MDAKK0BAIC0xMzE5NSw2ICsxMzE5NSw1MCBAQCBpdGVyYXRlX292ZXJfYnJlYWtwb2ludHMgKGlu dCAoKmNhbGxiYWNrCiAgCisgICByZXR1cm4gTlVMTDsKKyB9CisrIAogK3ZvaWQKICticmVha3Bv aW50c19yZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBzZWN0aW9uX29m ZnNldHMgKmRlbHRhKQogK3sKQEAgLTQ5LDE1ICs1MCwxNCBAQCBJbmRleDogZ2RiLTcuMi45MC4y MDExMDQxMS9nZGIvYnJlYWtwb2ludC5jCiArICAgIHFzb3J0IChicF9sb2NhdGlvbiwgYnBfbG9j YXRpb25fY291bnQsIHNpemVvZiAoKmJwX2xvY2F0aW9uKSwKICsJICAgYnBfbG9jYXRpb25fY29t cGFyZSk7CiArfQotKwotIC8qIFJlc2V0IGEgYnJlYWtwb2ludCBnaXZlbiBpdCdzIHN0cnVjdCBi cmVha3BvaW50ICogQklOVC4KLSAgICBUaGUgdmFsdWUgd2UgcmV0dXJuIGVuZHMgdXAgYmVpbmcg dGhlIHJldHVybiB2YWx1ZSBmcm9tIGNhdGNoX2Vycm9ycy4KLSAgICBVbnVzZWQgaW4gdGhpcyBj YXNlLiAgKi8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi9icmVha3BvaW50LmgKKyAK KyB2b2lkCisgX2luaXRpYWxpemVfYnJlYWtwb2ludCAodm9pZCkKK0luZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9icmVha3BvaW50LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIw MTEwNDExLm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAkyMDExLTA0LTExIDE5OjExOjU1LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL2JyZWFrcG9pbnQuaAkyMDExLTA0 LTExIDE5OjE3OjUzLjAwMDAwMDAwMCArMDIwMAotQEAgLTEyNDUsNCArMTI0NSw3IEBAIGV4dGVy biBpbnQgdXNlcl9icmVha3BvaW50X3AgKHN0cnVjdCBicmUKKy0tLSBnZGItNy4zLjUwLjIwMTEw NzIyLm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAkyMDExLTA3LTIyIDE5OjA4OjE5LjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFrcG9pbnQuaAkyMDExLTA3LTIy IDE5OjMxOjIyLjAwMDAwMDAwMCArMDIwMAorQEAgLTEzMjgsNCArMTMyOCw3IEBAIGV4dGVybiBp bnQgdXNlcl9icmVha3BvaW50X3AgKHN0cnVjdCBicmUKICAKICBleHRlcm4gdm9pZCBtb2RpZnlf c2VtYXBob3JlIChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvY2F0aW9uLCBpbnQgc2V0KTsKICAKQEAg LTY1LDExICs2NSwxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvYnJlYWtwb2lu dC5oCiArCQkJCSAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpOwogKwogICNlbmRpZiAv KiAhZGVmaW5lZCAoQlJFQUtQT0lOVF9IKSAqLwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEv Z2RiL29iamZpbGVzLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9vYmpmaWxlcy5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDQxMS5vcmlnL2dkYi9vYmpmaWxlcy5j CTIwMTEtMDQtMTEgMTk6MTE6NTUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDEx MDQxMS9nZGIvb2JqZmlsZXMuYwkyMDExLTA0LTExIDE5OjE3OjUzLjAwMDAwMDAwMCArMDIwMAot QEAgLTg1MSw2ICs4NTEsMTEgQEAgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpv YmpmaQorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvb2JqZmlsZXMuYwkyMDExLTA3 LTIyIDE5OjA4OjE5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L29iamZpbGVzLmMJMjAxMS0wNy0yMiAxOTozMToyMi4wMDAwMDAwMDAgKzAyMDAKK0BAIC04NDcs NiArODQ3LDExIEBAIG9iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKICAg ICAgb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9yZWxvY2F0ZV9wcm9iZSAob2JqZmls ZSwKICAJCQkJCQkgICAgbmV3X29mZnNldHMsIGRlbHRhKTsKICAKCmRpZmYgLS1naXQgYS9nZGIt YXJjaGVyLXBpZS1hZGRvbnMucGF0Y2ggYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2gKaW5k ZXggYTU2ODcwYi4uMzZkYzgxYSAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBh dGNoCisrKyBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkw LjIwMTEwNTI1Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTA1LTI1IDE3OjEwOjQ2LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL2R3YXJmMnJlYWQuYwkyMDEx LTA1LTI1IDE3OjEyOjM1LjAwMDAwMDAwMCArMDIwMAotQEAgLTc2NzUsNyArNzY3NSwxMiBAQCBy ZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCistLS0gZ2RiLTcuMy41MC4y MDExMDcyMi5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMS0wNy0yMiAxOTozMDoxMS4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMJMjAxMS0w Ny0yMiAxOTozMDo0NC4wMDAwMDAwMDAgKzAyMDAKK0BAIC03OTc5LDcgKzc5NzksMTIgQEAgcmVh ZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAogIHsKICAgIHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHI7CiAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07CkBAIC0xNiw3ICsxNiw3IEBAIElu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9kd2FyZjJyZWFkLmMKICAKICAgIGF0dHIgPSBk d2FyZjJfYXR0ciAoZGllLCBEV19BVF9sb2NhdGlvbiwgY3UpOwogICAgaWYgKGF0dHIpCi1AQCAt NzY4NCw2ICs3Njg5LDcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGll LAorQEAgLTc5ODgsNiArNzk5Myw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwKICAgICAgICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKICAgICAgICAg IHsKICAgICAgICAgICAgYmFzZSA9IGRlY29kZV9sb2NkZXNjIChEV19CTE9DSyAoYXR0ciksIGN1 KTsKQEAgLTI0LDcgKzI0LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL2R3YXJm MnJlYWQuYwogICAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGF0dHJfZm9ybV9pc19zZWN0aW9u X29mZnNldCAoYXR0cikpCiAgICAgICAgICB7Ci1AQCAtNzczNiwxMiArNzc0MiwxNSBAQCByZWFk X2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCitAQCAtODA0MCwxMiArODA0Niwx NSBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCiAgCSAgaWYgKHN5 bSAhPSBOVUxMCiAgCSAgICAgICYmIGhhbmRsZV9kYXRhX21lbWJlcl9sb2NhdGlvbiAoY2hpbGRf ZGllLCBjdSwgJm9mZnNldCkpCiAgCSAgICB7CkBAIC00Miw3ICs0Miw3IEBAIEluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNTI1L2dkYi9kd2FyZjJyZWFkLmMKICAJICBlbHNlCiAgCSAgICBTRVRfRklF TERfUEhZU05BTUUgKCpmaWVsZCwgU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKSk7CiAgCSAgRklF TERfVFlQRSAoKmZpZWxkKSA9IFNZTUJPTF9UWVBFIChzeW0pOwotQEAgLTc3NTUsNyArNzc2NCw3 IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKK0BAIC04MDU5LDcg KzgwNjgsNyBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCiAgCiAg ICAgICAgc3ltID0gbmV3X3N5bWJvbCAoZGllLCB0eXBlLCBjdSk7CiAgICAgICAgLyogU1lNQk9M X1ZBTFVFX0FERFJFU1MgbmV2ZXIgZ2V0cyB1c2VkIGFzIGFsbCBpdHMgZmllbGRzIGFyZSBzdGF0 aWMuICAqLwpAQCAtNTEsMTAgKzUxLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dk Yi9kd2FyZjJyZWFkLmMKICAKICAgICAgICBzZXRfZGllX3R5cGUgKGRpZSwgdHlwZSwgY3UpOwog ICAgICB9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvZ2RidHlwZXMuaAorSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2dkYnR5cGVzLmgKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4yLjkwLjIwMTEwNTI1Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMS0wNS0yNSAxNzowNToyMS4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9nZGJ0eXBlcy5oCTIw MTEtMDUtMjUgMTc6MTE6MTAuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcy Mi5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMTEtMDctMjIgMTk6MDg6MTkuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMuaAkyMDExLTA3LTIyIDE5OjMx OjA4LjAwMDAwMDAwMCArMDIwMAogQEAgLTM5Niw2ICszOTYsNyBAQCBlbnVtIHR5cGVfaW5zdGFu Y2VfZmxhZ192YWx1ZQogIGVudW0gZmllbGRfbG9jX2tpbmQKICAgIHsKQEAgLTY5LDkgKzY5LDkg QEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL2dkYnR5cGVzLmgKICAKICsJLyogVGhp cyBhZGRyZXNzIGlzIHVucmVsb2NhdGVkIGJ5IHRoZSBvYmpmaWxlJ3MgQU5PRkZTRVQuICAqLwog IAlDT1JFX0FERFIgcGh5c2FkZHI7Ci0gCWNoYXIgKnBoeXNuYW1lOworIAljb25zdCBjaGFyICpw aHlzbmFtZTsKICAgICAgICB9Ci1AQCAtMTEwNiw2ICsxMTA4LDcgQEAgZXh0ZXJuIHZvaWQgYWxs b2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQorQEAgLTExMTAsNiArMTExMiw3IEBAIGV4dGVybiB2 b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKICAjZGVmaW5lIEZJRUxEX0xPQ19LSU5E KHRoaXNmbGQpICgodGhpc2ZsZCkubG9jX2tpbmQpCiAgI2RlZmluZSBGSUVMRF9CSVRQT1ModGhp c2ZsZCkgKCh0aGlzZmxkKS5sb2MuYml0cG9zKQogICNkZWZpbmUgRklFTERfU1RBVElDX1BIWVNO QU1FKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLnBoeXNuYW1lKQpAQCAtNzksNyArNzksNyBAQCBJ bmRleDogZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvZ2RidHlwZXMuaAogICNkZWZpbmUgRklFTERf U1RBVElDX1BIWVNBRERSKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLnBoeXNhZGRyKQogICNkZWZp bmUgU0VUX0ZJRUxEX0JJVFBPUyh0aGlzZmxkLCBiaXRwb3MpCQkJXAogICAgKEZJRUxEX0xPQ19L SU5EICh0aGlzZmxkKSA9IEZJRUxEX0xPQ19LSU5EX0JJVFBPUywJCVwKLUBAIC0xMTEzLDYgKzEx MTYsNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CitAQCAtMTEx Nyw2ICsxMTIwLDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQog ICNkZWZpbmUgU0VUX0ZJRUxEX1BIWVNOQU1FKHRoaXNmbGQsIG5hbWUpCQkJXAogICAgKEZJRUxE X0xPQ19LSU5EICh0aGlzZmxkKSA9IEZJRUxEX0xPQ19LSU5EX1BIWVNOQU1FLAkJXAogICAgIEZJ RUxEX1NUQVRJQ19QSFlTTkFNRSAodGhpc2ZsZCkgPSAobmFtZSkpCkBAIC04Nyw3ICs4Nyw3IEBA IEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9nZGJ0eXBlcy5oCiAgI2RlZmluZSBTRVRf RklFTERfUEhZU0FERFIodGhpc2ZsZCwgYWRkcikJCQlcCiAgICAoRklFTERfTE9DX0tJTkQgKHRo aXNmbGQpID0gRklFTERfTE9DX0tJTkRfUEhZU0FERFIsCQlcCiAgICAgRklFTERfU1RBVElDX1BI WVNBRERSICh0aGlzZmxkKSA9IChhZGRyKSkKLUBAIC0xMTI1LDYgKzExMjksNyBAQCBleHRlcm4g dm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CitAQCAtMTEyOSw2ICsxMTMzLDcgQEAg ZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQogICNkZWZpbmUgVFlQRV9G SUVMRF9MT0NfS0lORCh0aGlzdHlwZSwgbikgRklFTERfTE9DX0tJTkQgKFRZUEVfRklFTEQgKHRo aXN0eXBlLCBuKSkKICAjZGVmaW5lIFRZUEVfRklFTERfQklUUE9TKHRoaXN0eXBlLCBuKSBGSUVM RF9CSVRQT1MgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKICAjZGVmaW5lIFRZUEVfRklFTERf U1RBVElDX1BIWVNOQU1FKHRoaXN0eXBlLCBuKSBGSUVMRF9TVEFUSUNfUEhZU05BTUUgKFRZUEVf RklFTEQgKHRoaXN0eXBlLCBuKSkKQEAgLTk1LDExICs5NSwxMSBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDUyNS9nZGIvZ2RidHlwZXMuaAogICNkZWZpbmUgVFlQRV9GSUVMRF9TVEFUSUNfUEhZ U0FERFIodGhpc3R5cGUsIG4pIEZJRUxEX1NUQVRJQ19QSFlTQUREUiAoVFlQRV9GSUVMRCAodGhp c3R5cGUsIG4pKQogICNkZWZpbmUgVFlQRV9GSUVMRF9BUlRJRklDSUFMKHRoaXN0eXBlLCBuKSBG SUVMRF9BUlRJRklDSUFMKFRZUEVfRklFTEQodGhpc3R5cGUsbikpCiAgI2RlZmluZSBUWVBFX0ZJ RUxEX0JJVFNJWkUodGhpc3R5cGUsIG4pIEZJRUxEX0JJVFNJWkUoVFlQRV9GSUVMRCh0aGlzdHlw ZSxuKSkKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9qdi1sYW5nLmMKK0luZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9qdi1sYW5nLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjkwLjIwMTEwNTI1Lm9yaWcvZ2RiL2p2LWxhbmcuYwkyMDExLTAzLTAyIDAxOjQyOjUzLjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL2p2LWxhbmcuYwkyMDExLTA1 LTI1IDE3OjExOjEwLjAwMDAwMDAwMCArMDIwMAotQEAgLTQxNCw3ICs0MTQsOCBAQCBqYXZhX2xp bmtfY2xhc3NfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkCistLS0gZ2RiLTcuMy41MC4yMDExMDcy Mi5vcmlnL2dkYi9qdi1sYW5nLmMJMjAxMS0wNy0wMSAyMDoyODo1Mi4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9qdi1sYW5nLmMJMjAxMS0wNy0yMiAxOTozMDo0 NC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00MzAsNyArNDMwLDggQEAgamF2YV9saW5rX2NsYXNzX3R5 cGUgKHN0cnVjdCBnZGJhcmNoICpnZAogIAogICAgZmllbGRzID0gTlVMTDsKICAgIG5maWVsZHMt LTsJCQkvKiBGaXJzdCBzZXQgdXAgZHVtbXkgImNsYXNzIiBmaWVsZC4gICovCkBAIC0xMDksNyAr MTA5LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL2p2LWxhbmcuYwogICAgVFlQ RV9GSUVMRF9OQU1FICh0eXBlLCBuZmllbGRzKSA9ICJjbGFzcyI7CiAgICBUWVBFX0ZJRUxEX1RZ UEUgKHR5cGUsIG5maWVsZHMpID0gdmFsdWVfdHlwZSAoY2xhcyk7CiAgICBTRVRfVFlQRV9GSUVM RF9QUklWQVRFICh0eXBlLCBuZmllbGRzKTsKLUBAIC00NjIsNyArNDYzLDggQEAgamF2YV9saW5r X2NsYXNzX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZAorQEAgLTQ3OCw3ICs0NzksOCBAQCBqYXZh X2xpbmtfY2xhc3NfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkCiAgCSAgU0VUX1RZUEVfRklFTERf UFJPVEVDVEVEICh0eXBlLCBpKTsKICAJfQogICAgICAgIGlmIChhY2NmbGFncyAmIDB4MDAwOCkJ LyogQUNDX1NUQVRJQyAqLwpAQCAtMTE5LDExICsxMTksMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA1MjUvZ2RiL2p2LWxhbmcuYwogICAgICAgIGVsc2UKICAJVFlQRV9GSUVMRF9CSVRQT1Mg KHR5cGUsIGkpID0gOCAqIGJvZmZzZXQ7CiAgICAgICAgaWYgKGFjY2ZsYWdzICYgMHg4MDAwKQkv KiBGSUVMRF9VTlJFU09MVkVEX0ZMQUcgKi8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dk Yi92YWx1ZS5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsdWUuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA1MjUub3JpZy9nZGIvdmFsdWUuYwkyMDExLTA1LTI1 IDE3OjA1OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3Zh bHVlLmMJMjAxMS0wNS0yNSAxNzoxMToxMC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yNDkyLDcgKzI0 OTIsOCBAQCB2YWx1ZV9zdGF0aWNfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLCBpCistLS0gZ2Ri LTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi92YWx1ZS5jCTIwMTEtMDctMjIgMTk6MDg6MTkuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsdWUuYwkyMDExLTA3 LTIyIDE5OjMwOjQ0LjAwMDAwMDAwMCArMDIwMAorQEAgLTI1MDcsNyArMjUwNyw4IEBAIHZhbHVl X3N0YXRpY19maWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGkKICAgICAgewogICAgICBjYXNlIEZJ RUxEX0xPQ19LSU5EX1BIWVNBRERSOgogICAgICAgIHJldHZhbCA9IHZhbHVlX2F0X2xhenkgKFRZ UEVfRklFTERfVFlQRSAodHlwZSwgZmllbGRubyksCgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci5w YXRjaCBiL2dkYi1hcmNoZXIucGF0Y2gKaW5kZXggNzhiNGU1YS4uNmUxZjllNCAxMDA2NDQKLS0t IGEvZ2RiLWFyY2hlci5wYXRjaAorKysgYi9nZGItYXJjaGVyLnBhdGNoCkBAIC0yLDEwNyArMiwy MCBAQCBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVjdEFyY2hlcgogaHR0cDov L3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL0FyY2hlckJyYW5jaE1hbmFnZW1lbnQKIAogR0lUIHNu YXBzaG90OgotY29tbWl0IDQyZmJjODlmZDNhNzk3ZGE5ODgwZWNiYzQ2N2MzMmYyODJhY2YzMWYK K2NvbW1pdCBhZDhlNGU4MjJjODU1NjQ1YmY5MzhjYTgyZDA0YjRlZDlmODNhODNiCiAKIGJyYW5j aCBgYXJjaGVyJyAtIHRoZSBtZXJnZSBvZiBicmFuY2hlczoKIGFyY2hlci1qYW5rcmF0b2Nodmls LXZsYQogYXJjaGVyLWphbmtyYXRvY2h2aWwtd2F0Y2hwb2ludDMKIGFyY2hlci10cm9tZXktcHl0 aG9uCi1hcmNoZXItc2VyZ2lvZGotc3RhcC1mZWRvcmExNWprCithcmNoZXItc2VyZ2lvZGotc3Rh cC1wYXRjaC1zcGxpdAogCiAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2JmZC9lbGYtYmZk LmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9NYWtlZmlsZS5pbgogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9iZmQvZWxmLWJmZC5oCTIwMTEtMDMtMTQg MTY6NTQ6NTcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9iZmQvZWxm LWJmZC5oCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTQ3Niw2ICsx NDc2LDE1IEBAIGVudW0KLSAgIFRhZ19jb21wYXRpYmlsaXR5ID0gMzIKLSB9OwotIAotKy8qIFRo ZSBmb2xsb3dpbmcgc3RydWN0IHN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCBldmVyeSBTeXN0ZW1U YXAgc2VjdGlvbgotKyAgIGZvdW5kIGluIHRoZSBvYmplY3QgZmlsZS4gICovCi0rc3RydWN0IHNk dF9ub3RlCi0rewotKyAgc3RydWN0IHNkdF9ub3RlICpuZXh0OwotKyAgYmZkX3NpemVfdHlwZSBz aXplOwotKyAgYmZkX2J5dGUgZGF0YVsxXTsKLSt9OwotKwotIC8qIFNvbWUgcHJpdmF0ZSBkYXRh IGlzIHN0YXNoZWQgYXdheSBmb3IgZnV0dXJlIHVzZSB1c2luZyB0aGUgdGRhdGEgcG9pbnRlcgot ICAgIGluIHRoZSBiZmQgc3RydWN0dXJlLiAgKi8KLSAKLUBAIC0xNjMzLDYgKzE2NDIsMTEgQEAg c3RydWN0IGVsZl9vYmpfdGRhdGEKLSAgIGJmZF9zaXplX3R5cGUgYnVpbGRfaWRfc2l6ZTsKLSAg IGJmZF9ieXRlICpidWlsZF9pZDsKLSAKLSsgIC8qIExpbmtlZC1saXN0IGNvbnRhaW5pbmcgaW5m b3JtYXRpb24gYWJvdXQgZXZlcnkgU3lzdGVtdGFwIHNlY3Rpb24KLSsgICAgIGZvdW5kIGluIHRo ZSBvYmplY3QgZmlsZS4gIEVhY2ggc2VjdGlvbiBjb3JyZXNwb25kcyB0byBvbmUgZW50cnkKLSsg ICAgIGluIHRoZSBsaXN0LiAgKi8KLSsgIHN0cnVjdCBzZHRfbm90ZSAqc2R0X25vdGVfaGVhZDsK LSsKLSAgIC8qIFRydWUgaWYgdGhlIGJmZCBjb250YWlucyBzeW1ib2xzIHRoYXQgaGF2ZSB0aGUg U1RUX0dOVV9JRlVOQwotICAgICAgc3ltYm9sIHR5cGUuICBVc2VkIHRvIHNldCB0aGUgb3NhYmkg ZmllbGQgaW4gdGhlIEVMRiBoZWFkZXIKLSAgICAgIHN0cnVjdHVyZS4gICovCi1JbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9iZmQvZWxmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIw MTEwNzAzLm9yaWcvYmZkL2VsZi5jCTIwMTEtMDMtMTQgMTY6NTQ6NTguMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9iZmQvZWxmLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4w MDAwMDAwMDAgKzAyMDAKLUBAIC04NDE2LDYgKzg0MTYsMzcgQEAgZWxmb2JqX2dyb2tfZ251X25v dGUgKGJmZCAqYWJmZCwgRWxmX0ludAotICAgICB9Ci0gfQotIAotKyNkZWZpbmUgU0RUX05PVEVf VFlQRSAzCi0rCi0rc3RhdGljIGJmZF9ib29sZWFuCi0rZWxmb2JqX2dyb2tfc3RhcHNkdF9ub3Rl XzEgKGJmZCAqYWJmZCwgRWxmX0ludGVybmFsX05vdGUgKm5vdGUpCi0rewotKyAgc3RydWN0IHNk dF9ub3RlICpjdXIgPQotKyAgICAoc3RydWN0IHNkdF9ub3RlICopIGJmZF9hbGxvYyAoYWJmZCwg c2l6ZW9mIChzdHJ1Y3Qgc2R0X25vdGUpCi0rCQkJCSAgICsgbm90ZS0+ZGVzY3N6KTsKLSsKLSsg IGN1ci0+bmV4dCA9IChzdHJ1Y3Qgc2R0X25vdGUgKikgKGVsZl90ZGF0YSAoYWJmZCkpLT5zZHRf bm90ZV9oZWFkOwotKyAgY3VyLT5zaXplID0gKGJmZF9zaXplX3R5cGUpIG5vdGUtPmRlc2NzejsK LSsgIG1lbWNweSAoY3VyLT5kYXRhLCBub3RlLT5kZXNjZGF0YSwgbm90ZS0+ZGVzY3N6KTsKLSsK LSsgIGVsZl90ZGF0YSAoYWJmZCktPnNkdF9ub3RlX2hlYWQgPSBjdXI7Ci0rCi0rICByZXR1cm4g VFJVRTsKLSt9Ci0rCi0rc3RhdGljIGJmZF9ib29sZWFuCi0rZWxmb2JqX2dyb2tfc3RhcHNkdF9u b3RlIChiZmQgKmFiZmQsIEVsZl9JbnRlcm5hbF9Ob3RlICpub3RlKQotK3sKLSsgIHN3aXRjaCAo bm90ZS0+dHlwZSkKLSsgICAgewotKyAgICBjYXNlIFNEVF9OT1RFX1RZUEU6Ci0rICAgICAgcmV0 dXJuIGVsZm9ial9ncm9rX3N0YXBzZHRfbm90ZV8xIChhYmZkLCBub3RlKTsKLSsKLSsgICAgZGVm YXVsdDoKLSsgICAgICByZXR1cm4gVFJVRTsKLSsgICAgfQotK30KLSsKLSBzdGF0aWMgYmZkX2Jv b2xlYW4KLSBlbGZjb3JlX25ldGJzZF9nZXRfbHdwaWQgKEVsZl9JbnRlcm5hbF9Ob3RlICpub3Rl LCBpbnQgKmx3cGlkcCkKLSB7Ci1AQCAtOTE4OSw2ICs5MjIwLDEyIEBAIGVsZl9wYXJzZV9ub3Rl cyAoYmZkICphYmZkLCBjaGFyICpidWYsIHMKLSAJICAgICAgaWYgKCEgZWxmb2JqX2dyb2tfZ251 X25vdGUgKGFiZmQsICZpbikpCi0gCQlyZXR1cm4gRkFMU0U7Ci0gCSAgICB9Ci0rCSAgZWxzZSBp ZiAoaW4ubmFtZXN6ID09IHNpemVvZiAic3RhcHNkdCIKLSsJCSAgICYmIHN0cmNtcCAoaW4ubmFt ZWRhdGEsICJzdGFwc2R0IikgPT0gMCkKLSsJICAgIHsKLSsJICAgICAgaWYgKCEgZWxmb2JqX2dy b2tfc3RhcHNkdF9ub3RlIChhYmZkLCAmaW4pKQotKwkJcmV0dXJuIEZBTFNFOwotKwkgICAgfQot IAkgIGJyZWFrOwotIAl9Ci0gCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvTWFrZWZp bGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL01ha2Vm aWxlLmluCTIwMTEtMDMtMzAgMDg6NTU6MzkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvTWFrZWZpbGUuaW4JMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAg KzAyMDAKLUBAIC03MjEsOCArNzIxLDggQEAgU0ZJTEVTID0gYWRhLWV4cC55IGFkYS1sYW5nLmMg YWRhLXR5cGVwcgorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvTWFrZWZpbGUuaW4J MjAxMS0wNy0yMiAwMTo0NjowOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9NYWtlZmlsZS5pbgkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAor QEAgLTcyMCw4ICs3MjAsOCBAQCBTRklMRVMgPSBhZGEtZXhwLnkgYWRhLWxhbmcuYyBhZGEtdHlw ZXByCiAgCXNlbnRpbmVsLWZyYW1lLmMgXAogIAlzZXJpYWwuYyBzZXItYmFzZS5jIHNlci11bml4 LmMgXAogIAlzb2xpYi5jIHNvbGliLXRhcmdldC5jIHNvdXJjZS5jIFwKQEAgLTExMywyNSArMjYs MjUgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL01ha2VmaWxlLmluCiAgCXRhcmdl dC5jIHRhcmdldC1kZXNjcmlwdGlvbnMuYyB0YXJnZXQtbWVtb3J5LmMgXAogIAl0aHJlYWQuYyB0 b3AuYyB0cmFjZXBvaW50LmMgXAogIAl0cmFkLWZyYW1lLmMgXAotQEAgLTgxNCw3ICs4MTQsNyBA QCBvc2RhdGEuaCBwcm9jZnMuaCBweXRob24vcHktZXZlbnQuaCBweXRoCitAQCAtODE4LDcgKzgx OCw3IEBAIG9zZGF0YS5oIHByb2Nmcy5oIHB5dGhvbi9weS1ldmVudC5oIHB5dGgKICBweXRob24v cHl0aG9uLWludGVybmFsLmggcHl0aG9uL3B5dGhvbi5oIHJhdmVuc2Nhci10aHJlYWQuaCByZWNv cmQuaCBcCiAgc29saWItZGFyd2luLmggc29saWItaWE2NC1ocHV4Lmggc29saWItc3B1Lmggd2lu ZG93cy1uYXQuaCB4Y29mZnJlYWQuaCBcCiAgZ251bGliL2V4dHJhL2FyZy1ub25udWxsLmggZ251 bGliL2V4dHJhL2MrK2RlZnMuaCBnbnVsaWIvZXh0cmEvd2Fybi1vbi11c2UuaCBcCi0tZ251bGli L3N0ZGRlZi5pbi5oIGlubGluZS1mcmFtZS5oCi0rZ251bGliL3N0ZGRlZi5pbi5oIGlubGluZS1m cmFtZS5oIHN0YXAtcHJvYmUuaAotIAotICMgSGVhZGVyIGZpbGVzIHRoYXQgYWxyZWFkeSBoYXZl IHNyY2RpciBpbiB0aGVtLCBvciB3aGljaCBhcmUgaW4gb2JqZGlyLgorLWdudWxpYi9zdGRkZWYu aW4uaCBpbmxpbmUtZnJhbWUuaCBcCisrZ251bGliL3N0ZGRlZi5pbi5oIGlubGluZS1mcmFtZS5o IHN0YXAtcHJvYmUuaCBcCisgY29tbW9uL2NvbW1vbi11dGlscy5oIGNvbW1vbi94bWwtdXRpbHMu aCBjb21tb24vYnVmZmVyLmggY29tbW9uL3B0aWQuaCBcCisgY29tbW9uL2xpbnV4LW9zZGF0YS5o CiAgCi1AQCAtODk5LDcgKzg5OSw3IEBAIENPTU1PTl9PQlMgPSAkKERFUEZJTEVTKSAkKENPTkZJ R19PQlMpICQKLSAJcHJvbG9ndWUtdmFsdWUubyBtZW1vcnktbWFwLm8gbWVtcmFuZ2UubyB4bWwt c3VwcG9ydC5vIHhtbC1zeXNjYWxsLm8gXAorQEAgLTkwNiw3ICs5MDYsNyBAQCBDT01NT05fT0JT ID0gJChERVBGSUxFUykgJChDT05GSUdfT0JTKSAkCisgCXhtbC1zdXBwb3J0Lm8geG1sLXN5c2Nh bGwubyB4bWwtdXRpbHMubyBcCiAgCXRhcmdldC1kZXNjcmlwdGlvbnMubyB0YXJnZXQtbWVtb3J5 Lm8geG1sLXRkZXNjLm8geG1sLWJ1aWx0aW4ubyBcCiAgCWluZmVyaW9yLm8gb3NkYXRhLm8gZ2Ri X3VzbGVlcC5vIHJlY29yZC5vIGdjb3JlLm8gXAotLQlqaXQubyBwcm9nc3BhY2UubwotKwlqaXQu byBwcm9nc3BhY2UubyBzdGFwLXByb2JlLm8KKy0Jaml0Lm8gcHJvZ3NwYWNlLm8gXAorKwlqaXQu byBwcm9nc3BhY2UubyBzdGFwLXByb2JlLm8gXAorIAljb21tb24tdXRpbHMubyBidWZmZXIubyBw dGlkLm8KICAKICBUU09CUyA9IGluZmxvdy5vCi0gCi1AQCAtMTMyMCw2ICsxMzIwLDEyIEBAIHN0 YW1wLWg6ICQoc3JjZGlyKS9jb25maWcuaW4gY29uZmlnLnN0YXQKK0BAIC0xMzI4LDYgKzEzMjgs MTIgQEAgc3RhbXAtaDogJChzcmNkaXIpL2NvbmZpZy5pbiBjb25maWcuc3RhdAogIAkgIENPTkZJ R19MSU5LUz0gXAogIAkgICQoU0hFTEwpIGNvbmZpZy5zdGF0dXMKICAKQEAgLTE0NCwxMSArNTcs MTEgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL01ha2VmaWxlLmluCiAgY29uZmln LnN0YXR1czogJChzcmNkaXIpL2NvbmZpZ3VyZSBjb25maWd1cmUudGd0IGNvbmZpZ3VyZS5ob3N0 CiAgCSQoU0hFTEwpIGNvbmZpZy5zdGF0dXMgLS1yZWNoZWNrCiAgCi1JbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvTkVXUworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL05FV1MK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL05FV1MJMjAxMS0w My0zMSAxNjozMjo0OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi9ORVdTCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMzYsNiArMzYs MTAgQEAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL05FV1MJMjAxMS0wNy0yMSAx OToyMzo1NS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9ORVdT CTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtMTA5LDYgKzEwOSwxMCBA QCBRVERpc2FibGUKICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIE9wZW5DTCBDIGxhbmd1YWdl IChodHRwOi8vd3d3Lmtocm9ub3Mub3JnL29wZW5jbCkKICAgIGhhcyBiZWVuIGludGVncmF0ZWQg aW50byBHREIuCiAgCkBAIC0xNTksMTEgKzcyLDExIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi9ORVdTCiAgKiBQeXRob24gc2NyaXB0aW5nCiAgCiAgICAqKiBUaGUgZnVuY3Rpb24g Z2RiLldyaXRlIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsIGtleXdvcmQgJ3N0cmVhbScuCi1JbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYWRhLWxhbmcuYworSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2FkYS1sYW5nLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEw NzAzLm9yaWcvZ2RiL2FkYS1sYW5nLmMJMjAxMS0wNS0xNyAyMzoyNjowOC4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9hZGEtbGFuZy5jCTIwMTEtMDctMDMgMTA6 MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTE0MjEsNiArMTE0MjEsNyBAQCBhZGFfb3BlcmF0 b3JfbGVuZ3RoIChjb25zdCBzdHJ1Y3QgZXhwcmVzCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5v cmlnL2dkYi9hZGEtbGFuZy5jCTIwMTEtMDctMDUgMDY6MzQ6NTUuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYWRhLWxhbmcuYwkyMDExLTA3LTIyIDIwOjA0OjIx LjAwMDAwMDAwMCArMDIwMAorQEAgLTExODYyLDYgKzExODYyLDcgQEAgYWRhX29wZXJhdG9yX2xl bmd0aCAoY29uc3Qgc3RydWN0IGV4cHJlcwogIAogIHN0YXRpYyBpbnQKICBhZGFfb3BlcmF0b3Jf Y2hlY2sgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCkBAIC0xNzEsNyArODQsNyBA QCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYWRhLWxhbmcuYwogIAkJICAgIGludCAo Km9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRhKSwKICAJ CSAgICB2b2lkICpkYXRhKQogIHsKLUBAIC0xMTQzNSwxMiArMTE0MzYsMTUgQEAgYWRhX29wZXJh dG9yX2NoZWNrIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZQorQEAgLTExODc2LDEyICsxMTg3NywxNSBA QCBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9uICplCiAgCWJyZWFrOwogIAog ICAgICAgIGRlZmF1bHQ6CkBAIC0xODksMTAgKzEwMiwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvYWRhLWxhbmcuYwogICAgICAgICYmICgqb2JqZmlsZV9mdW5jKSAoVFlQRV9P QkpGSUxFICh0eXBlKSwgZGF0YSkpCiAgICAgIHJldHVybiAxOwogIAotSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvYW1kNjQtbGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIw MTEwNzAzLm9yaWcvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMTEtMDEtMDcgMjA6MzY6MTUuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYW1kNjQtbGludXgtbmF0 LmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIw MTEwNzIyLm9yaWcvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMTEtMDEtMDcgMjA6MzY6MTUuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYW1kNjQtbGludXgtbmF0 LmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0yNjUsMTggKzI2NSwx MSBAQCBhbWQ2NF9saW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0CiAgDAogIC8qIFN1 cHBvcnQgZm9yIGRlYnVnIHJlZ2lzdGVycy4gICovCkBAIC00MTEsMTAgKzMyNCwxMCBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYW1kNjQtbGludXgtbmF0LmMKICB9CiAgDAogIAot SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2F4LWdkYi5jCitJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvYXgtZ2RiLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEw NzAzLm9yaWcvZ2RiL2F4LWdkYi5jCTIwMTEtMDItMjQgMDg6Mzk6NDcuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYXgtZ2RiLmMJMjAxMS0wNy0wMyAxMDozMzox MS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2F4LWdk Yi5jCTIwMTEtMDYtMTcgMjI6NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvYXgtZ2RiLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAK IEBAIC0yMDAxLDcgKzIwMDEsOCBAQCBnZW5fZXhwciAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwg dW5pb24gCiAgCiAgICAgIGNhc2UgT1BfSU5URVJOQUxWQVI6CkBAIC00MzQsMTAgKzM0NywxMCBA QCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYXgtZ2RiLmMKICAJICBlcnJvciAoXygi JCVzIGlzIG5vdCBhIHRyYWNlIHN0YXRlIHZhcmlhYmxlOyBHREIgYWdlbnQgIgogIAkJICAgImV4 cHJlc3Npb25zIGNhbm5vdCB1c2UgY29udmVuaWVuY2UgdmFyaWFibGVzLiIpLCBuYW1lKTsKICAg ICAgICB9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYmxvY2suYworSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Jsb2NrLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkw LjIwMTEwNzAzLm9yaWcvZ2RiL2Jsb2NrLmMJMjAxMS0wMS0wMSAxNjozMjo1Ny4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9ibG9jay5jCTIwMTEtMDctMDMgMTA6 MzM6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9i bG9jay5jCTIwMTEtMDEtMDEgMTY6MzI6NTcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvYmxvY2suYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIw MAogQEAgLTMyMiwzICszMjIsMjEgQEAgYWxsb2NhdGVfYmxvY2sgKHN0cnVjdCBvYnN0YWNrICpv YnN0YWNrKQogIAogICAgcmV0dXJuIGJsOwpAQCAtNDYwLDIxICszNzMsMjEgQEAgSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL2Jsb2NrLmMKICsKICsgIHJldHVybiBTWU1CT0xfU1lNVEFC IChmdW5jKS0+b2JqZmlsZTsKICt9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYmxv Y2suaAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Jsb2NrLmgKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL2Jsb2NrLmgJMjAxMS0wMS0wMSAxNjoz Mjo1Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9ibG9jay5o CTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTY3LDQgKzE2Nyw2IEBA IGV4dGVybiBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrX2dsb2JhbF8KKy0tLSBnZGItNy4zLjUw LjIwMTEwNzIyLm9yaWcvZ2RiL2Jsb2NrLmgJMjAxMS0wNC0wNCAxNjoxMDoxMi4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9ibG9jay5oCTIwMTEtMDctMjIgMjA6 MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtMTYzLDQgKzE2Myw2IEBAIGV4dGVybiBjb25zdCBz dHJ1Y3QgYmxvY2sgKmJsb2NrX2dsb2JhbF8KICAKICBleHRlcm4gc3RydWN0IGJsb2NrICphbGxv Y2F0ZV9ibG9jayAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwogIAogK2V4dGVybiBzdHJ1Y3Qg b2JqZmlsZSAqYmxvY2tfb2JqZmlsZSAoY29uc3Qgc3RydWN0IGJsb2NrICpibG9jayk7CiArCiAg I2VuZGlmIC8qIEJMT0NLX0ggKi8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9icmVh a3BvaW50LmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9icmVha3BvaW50LmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwky MDExLTA3LTAyIDIxOjMzOjA5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3 MDMvZ2RiL2JyZWFrcG9pbnQuYwkyMDExLTA3LTAzIDEwOjM1OjA5LjAwMDAwMDAwMCArMDIwMAor LS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTEtMDctMDUg MDY6MzQ6NTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYnJl YWtwb2ludC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtNjMsNiAr NjMsOCBAQAogICNpbmNsdWRlICJqaXQuaCIKICAjaW5jbHVkZSAieG1sLXN5c2NhbGwuaCIKQEAg LTQ4MiwxOSArMzk1LDkgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2JyZWFrcG9p bnQuYwogKyNpbmNsdWRlICJnZGJfcmVnZXguaCIKICsjaW5jbHVkZSAic3RhcC1wcm9iZS5oIgog ICNpbmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCisgI2luY2x1ZGUgImNvbnRpbnVhdGlvbnMuaCIK ICAKLSAvKiByZWFkbGluZSBpbmNsdWRlIGZpbGVzICovCi1AQCAtMTA3LDYgKzEwOSw5IEBAIHN0 YXRpYyB2b2lkIGJyZWFrX2NvbW1hbmRfMSAoY2hhciAqLCBpbnQKLSAKLSBzdGF0aWMgdm9pZCBt ZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsKLSAKLStzdGF0aWMgc3RydWN0IGJwX2xvY2F0 aW9uICphZGRfbG9jYXRpb25fdG9fYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCi0r CQkJCQkgICAgIGNvbnN0IHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbCk7Ci0rCi0gLyogVGhp cyBmdW5jdGlvbiBpcyB1c2VkIGluIGdkYnRrIHNvdXJjZXMgYW5kIHRodXMgY2FuIG5vdCBiZSBt YWRlCi0gICAgc3RhdGljLiAgKi8KLSBzdHJ1Y3QgYnJlYWtwb2ludCAqc2V0X3Jhd19icmVha3Bv aW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLUBAIC0xMjQ5LDYgKzEyNTQsOSBAQCB1cGRh dGVfd2F0Y2hwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCitAQCAtMTI0OCw2ICsxMjUwLDkg QEAgdXBkYXRlX3dhdGNocG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiLAogICAgaWYgKCF3YXRj aHBvaW50X2luX3RocmVhZF9zY29wZSAoYikpCiAgICAgIHJldHVybjsKICAKQEAgLTUwNCw3ICs0 MDcsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5jCiAgICBp ZiAoYi0+ZGlzcG9zaXRpb24gPT0gZGlzcF9kZWxfYXRfbmV4dF9zdG9wKQogICAgICByZXR1cm47 CiAgIAotQEAgLTE1MjAsNiArMTUyOCw0MCBAQCBzaG91bGRfYmVfaW5zZXJ0ZWQgKHN0cnVjdCBi cF9sb2NhdGlvbiAqCitAQCAtMTUzMiw2ICsxNTM3LDQwIEBAIHNob3VsZF9iZV9pbnNlcnRlZCAo c3RydWN0IGJwX2xvY2F0aW9uICoKICAgIHJldHVybiAxOwogIH0KICAKQEAgLTU0NSw3ICs0NDgs NyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5jCiAgLyogSW5z ZXJ0IGEgbG93LWxldmVsICJicmVha3BvaW50IiBvZiBzb21lIHR5cGUuICBCTCBpcyB0aGUgYnJl YWtwb2ludAogICAgIGxvY2F0aW9uLiAgQW55IGVycm9yIG1lc3NhZ2VzIGFyZSBwcmludGVkIHRv IFRNUF9FUlJPUl9TVFJFQU07IGFuZAogICAgIERJU0FCTEVEX0JSRUFLUywgYW5kIEhXX0JSRUFL UE9JTlRfRVJST1IgYXJlIHVzZWQgdG8gcmVwb3J0IHByb2JsZW1zLgotQEAgLTE2MTYsNiArMTY1 OCw4IEBAIGluc2VydF9icF9sb2NhdGlvbiAoc3RydWN0IGJwX2xvY2F0aW9uICoKK0BAIC0xNjI4 LDYgKzE2NjcsOCBAQCBpbnNlcnRfYnBfbG9jYXRpb24gKHN0cnVjdCBicF9sb2NhdGlvbiAqCiAg CSAgZWxzZQogIAkgICAgdmFsID0gdGFyZ2V0X2luc2VydF9icmVha3BvaW50IChibC0+Z2RiYXJj aCwKICAJCQkJCSAgICAmYmwtPnRhcmdldF9pbmZvKTsKQEAgLTU1NCw3ICs0NTcsNyBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5jCiAgCX0KICAgICAgICBlbHNl CiAgCXsKLUBAIC0xODcwLDYgKzE5MTQsNyBAQCBpbnNlcnRfYnJlYWtwb2ludF9sb2NhdGlvbnMg KHZvaWQpCitAQCAtMTg4Myw2ICsxOTI0LDcgQEAgaW5zZXJ0X2JyZWFrcG9pbnRfbG9jYXRpb25z ICh2b2lkKQogICAgaW50IHZhbCA9IDA7CiAgICBpbnQgZGlzYWJsZWRfYnJlYWtzID0gMDsKICAg IGludCBod19icmVha3BvaW50X2Vycm9yID0gMDsKQEAgLTU2Miw3ICs0NjUsNyBAQCBJbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5jCiAgCiAgICBzdHJ1Y3QgdWlfZmls ZSAqdG1wX2Vycm9yX3N0cmVhbSA9IG1lbV9maWxlb3BlbiAoKTsKICAgIHN0cnVjdCBjbGVhbnVw ICpjbGVhbnVwcyA9IG1ha2VfY2xlYW51cF91aV9maWxlX2RlbGV0ZSAodG1wX2Vycm9yX3N0cmVh bSk7Ci1AQCAtMTg5Nyw5ICsxOTQyLDEzIEBAIGluc2VydF9icmVha3BvaW50X2xvY2F0aW9ucyAo dm9pZCkKK0BAIC0xOTEwLDkgKzE5NTIsMTMgQEAgaW5zZXJ0X2JyZWFrcG9pbnRfbG9jYXRpb25z ICh2b2lkKQogICAgICAgIC8qIEZvciB0YXJnZXRzIHRoYXQgc3VwcG9ydCBnbG9iYWwgYnJlYWtw b2ludHMsIHRoZXJlJ3Mgbm8gbmVlZAogIAkgdG8gc2VsZWN0IGFuIGluZmVyaW9yIHRvIGluc2Vy dCBicmVha3BvaW50IHRvLiAgSW4gZmFjdCwgZXZlbgogIAkgaWYgd2UgYXJlbid0IGF0dGFjaGVk IHRvIGFueSBwcm9jZXNzIHlldCwgd2Ugc2hvdWxkIHN0aWxsCkBAIC01NzgsNyArNDgxLDcgQEAg SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2JyZWFrcG9pbnQuYwogIAljb250aW51ZTsK ICAKICAgICAgICB2YWwgPSBpbnNlcnRfYnBfbG9jYXRpb24gKGJsLCB0bXBfZXJyb3Jfc3RyZWFt LCAmZGlzYWJsZWRfYnJlYWtzLAotQEAgLTE5MjMsMTMgKzE5NzIsMTkgQEAgaW5zZXJ0X2JyZWFr cG9pbnRfbG9jYXRpb25zICh2b2lkKQorQEAgLTE5MzYsMTMgKzE5ODIsMTkgQEAgaW5zZXJ0X2Jy ZWFrcG9pbnRfbG9jYXRpb25zICh2b2lkKQogIAogICAgICAgIGlmIChicHQtPmRpc3Bvc2l0aW9u ID09IGRpc3BfZGVsX2F0X25leHRfc3RvcCkKICAJY29udGludWU7CkBAIC02MDQsMTIgKzUwNywx NSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5jCiAgICAgICAg aWYgKHNvbWVfZmFpbGVkKQogIAl7CiAgCSAgZm9yIChsb2MgPSBicHQtPmxvYzsgbG9jOyBsb2Mg PSBsb2MtPm5leHQpCi1AQCAtMjExMSwxNSArMjE2NiwyNCBAQCBzdHJ1Y3QgYnJlYWtwb2ludF9v YmpmaWxlX2RhdGEKK0BAIC0yMTEwLDExICsyMTYyLDIzIEBAIHN0cnVjdCBicmVha3BvaW50X29i amZpbGVfZGF0YQogICAgLyogTWluaW1hbCBzeW1ib2wocykgZm9yICJsb25nam1wIiwgInNpZ2xv bmdqbXAiLCBldGMuIChpZiBhbnkpLiAgKi8KICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9u Z2ptcF9tc3ltW05VTV9MT05HSk1QX05BTUVTXTsKICAKLSsgIC8qIFN5c3RlbVRhcCBwcm9iZSBw b2ludCBmb3IgbG9uZ2ptcCAoaWYgYW55KS4gICovCi0rICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9i ZSAqbG9uZ2ptcF9wcm9iZTsKKysgIC8qIFRydWUgaWYgd2UgaGF2ZSBsb29rZWQgZm9yIGxvbmdq bXAgcHJvYmVzLiAgKi8KKysgIGludCBsb25nam1wX3NlYXJjaGVkOworKworKyAgLyogU3lzdGVt VGFwIHByb2JlIHBvaW50cyBmb3IgbG9uZ2ptcCAoaWYgYW55KS4gICovCisrICBWRUMgKHN0YXBf cHJvYmVfcCkgKmxvbmdqbXBfcHJvYmVzOwogKwogICAgLyogTWluaW1hbCBzeW1ib2wgZm9yICJz dGQ6OnRlcm1pbmF0ZSgpIiAoaWYgYW55KS4gICovCiAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wg KnRlcm1pbmF0ZV9tc3ltOwpAQCAtNjE3LDczICs1MjMsMTAwIEBAIEluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9icmVha3BvaW50LmMKICAgIC8qIE1pbmltYWwgc3ltYm9sIGZvciAiX1Vu d2luZF9EZWJ1Z0hvb2siIChpZiBhbnkpLiAgKi8KICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAq ZXhjZXB0aW9uX21zeW07CiArCi0rICAvKiBTeXN0ZW1UYXAgcHJvYmUgcG9pbnQgZm9yIHVud2lu ZGluZyAoaWYgYW55KS4gICovCi0rICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqZXhjZXB0aW9u X3Byb2JlOworKyAgLyogVHJ1ZSBpZiB3ZSBoYXZlIGxvb2tlZCBmb3IgZXhjZXB0aW9uIHByb2Jl cy4gICovCisrICBpbnQgZXhjZXB0aW9uX3NlYXJjaGVkOworKworKyAgLyogU3lzdGVtVGFwIHBy b2JlIHBvaW50cyBmb3IgdW53aW5kaW5nIChpZiBhbnkpLiAgKi8KKysgIFZFQyAoc3RhcF9wcm9i ZV9wKSAqZXhjZXB0aW9uX3Byb2JlczsKICB9OwogIAogIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2Jq ZmlsZV9kYXRhICpicmVha3BvaW50X29iamZpbGVfa2V5OworQEAgLTIxNTEsNiArMjIxNSwxNSBA QCBnZXRfYnJlYWtwb2ludF9vYmpmaWxlX2RhdGEgKHN0cnVjdCBvYmpmCisgfQogIAotKy8qIFN5 c3RlbVRhcCBwcm9iZSBub3QgZm91bmQgc2VudGluZWwuICAqLwotK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgc3RhcF9wcm9iZSBwcm9iZV9ub3RfZm91bmQ7Cisgc3RhdGljIHZvaWQKKytmcmVlX2JyZWFr cG9pbnRfcHJvYmVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqLCB2b2lkICpkYXRhKQorK3sKKysgIHN0 cnVjdCBicmVha3BvaW50X29iamZpbGVfZGF0YSAqYnBfb2JqZmlsZV9kYXRhID0gZGF0YTsKICsK LSAvKiBNaW5pbWFsIHN5bWJvbCBub3QgZm91bmQgc2VudGluZWwuICAqLwotIHN0YXRpYyBzdHJ1 Y3QgbWluaW1hbF9zeW1ib2wgbXN5bV9ub3RfZm91bmQ7Ci0gCi1AQCAtMjIyNyw2ICsyMjkxLDI5 IEBAIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICh2b2lkKQorKyAgVkVDX2ZyZWUg KHN0YXBfcHJvYmVfcCwgYnBfb2JqZmlsZV9kYXRhLT5sb25nam1wX3Byb2Jlcyk7CisrICBWRUNf ZnJlZSAoc3RhcF9wcm9iZV9wLCBicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlvbl9wcm9iZXMpOwor K30KKysKKytzdGF0aWMgdm9pZAorIGNyZWF0ZV9vdmVybGF5X2V2ZW50X2JyZWFrcG9pbnQgKHZv aWQpCisgeworICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CitAQCAtMjIyNiw2ICsyMjk5LDM2 IEBAIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICh2b2lkKQogIAogICAgICAgIGJw X29iamZpbGVfZGF0YSA9IGdldF9icmVha3BvaW50X29iamZpbGVfZGF0YSAob2JqZmlsZSk7CiAg Ci0rICAgICAgaWYgKGJwX29iamZpbGVfZGF0YS0+bG9uZ2ptcF9wcm9iZSAhPSAmcHJvYmVfbm90 X2ZvdW5kKQorKyAgICAgIGlmICghYnBfb2JqZmlsZV9kYXRhLT5sb25nam1wX3NlYXJjaGVkKQog Kwl7Ci0rCSAgaWYgKGJwX29iamZpbGVfZGF0YS0+bG9uZ2ptcF9wcm9iZSA9PSBOVUxMKQotKwkg ICAgYnBfb2JqZmlsZV9kYXRhLT5sb25nam1wX3Byb2JlCi0rCSAgICAgID0gZmluZF9wcm9iZV9p bl9vYmpmaWxlIChvYmpmaWxlLCAibGliYyIsICJsb25nam1wIik7CisrCSAgYnBfb2JqZmlsZV9k YXRhLT5sb25nam1wX3Byb2JlcworKwkgICAgPSBmaW5kX3Byb2Jlc19pbl9vYmpmaWxlIChvYmpm aWxlLCAibGliYyIsICJsb25nam1wIik7CisrCSAgYnBfb2JqZmlsZV9kYXRhLT5sb25nam1wX3Nl YXJjaGVkID0gMTsKKysJfQogKwotKwkgIGlmIChicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJv YmUpCisrICAgICAgaWYgKGJwX29iamZpbGVfZGF0YS0+bG9uZ2ptcF9wcm9iZXMgIT0gTlVMTCkK KysJeworKwkgIGludCBpOworKwkgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZTsKKysJ ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwor KworKwkgIGZvciAoaSA9IDA7CisrCSAgICAgICBWRUNfaXRlcmF0ZSAoc3RhcF9wcm9iZV9wLAor KwkJCSAgICBicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJvYmVzLAorKwkJCSAgICBpLCBwcm9i ZSk7CisrCSAgICAgICArK2kpCiArCSAgICB7CiArCSAgICAgIHN0cnVjdCBicmVha3BvaW50ICpi OwotKwkgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9i amZpbGUpOwotKwotKwkgICAgICBiID0gY3JlYXRlX2ludGVybmFsX2JyZWFrcG9pbnQgKGdkYmFy Y2gsCi0rCQkJCQkgICAgICBicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJvYmUtPmFkZHJlc3Ms CisrCSAgICAgICAKKysJICAgICAgYiA9IGNyZWF0ZV9pbnRlcm5hbF9icmVha3BvaW50IChnZGJh cmNoLCBwcm9iZS0+YWRkcmVzcywKICsJCQkJCSAgICAgIGJwX2xvbmdqbXBfbWFzdGVyKTsKICsJ ICAgICAgYi0+YWRkcl9zdHJpbmcgPSB4c3RyZHVwICgicHJvYmU6bGliYzpsb25nam1wIik7CiAr CSAgICAgIGItPmVuYWJsZV9zdGF0ZSA9IGJwX2Rpc2FibGVkOwotKwotKwkgICAgICBjb250aW51 ZTsKICsJICAgIH0KLSsJICBlbHNlCi0rCSAgICBicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJv YmUgPSAmcHJvYmVfbm90X2ZvdW5kOworKworKwkgIGNvbnRpbnVlOwogKwl9CiArCiAgICAgICAg Zm9yIChpID0gMDsgaSA8IE5VTV9MT05HSk1QX05BTUVTOyBpKyspCiAgCXsKICAJICBzdHJ1Y3Qg YnJlYWtwb2ludCAqYjsKLUBAIC0yMzM1LDYgKzI0MjIsMzEgQEAgY3JlYXRlX2V4Y2VwdGlvbl9t YXN0ZXJfYnJlYWtwb2ludCAodm9pZAorQEAgLTIzMzQsNiArMjQzNywzOSBAQCBjcmVhdGVfZXhj ZXB0aW9uX21hc3Rlcl9icmVha3BvaW50ICh2b2lkCiAgCiAgICAgICAgYnBfb2JqZmlsZV9kYXRh ID0gZ2V0X2JyZWFrcG9pbnRfb2JqZmlsZV9kYXRhIChvYmpmaWxlKTsKICAKICsgICAgICAvKiBX ZSBwcmVmZXIgdGhlIFN5c3RlbVRhcCBwcm9iZSBwb2ludCBpZiBpdCBleGlzdHMuICAqLwotKyAg ICAgIGlmIChicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlvbl9wcm9iZSAhPSAmcHJvYmVfbm90X2Zv dW5kKQorKyAgICAgIGlmICghYnBfb2JqZmlsZV9kYXRhLT5leGNlcHRpb25fc2VhcmNoZWQpCiAr CXsKLSsJICBpZiAoYnBfb2JqZmlsZV9kYXRhLT5leGNlcHRpb25fcHJvYmUgPT0gTlVMTCkKLSsJ ICAgIGJwX29iamZpbGVfZGF0YS0+ZXhjZXB0aW9uX3Byb2JlCi0rCSAgICAgID0gZmluZF9wcm9i ZV9pbl9vYmpmaWxlIChvYmpmaWxlLCAibGliZ2NjIiwgInVud2luZCIpOworKwkgIGJwX29iamZp bGVfZGF0YS0+ZXhjZXB0aW9uX3Byb2JlcworKwkgICAgPSBmaW5kX3Byb2Jlc19pbl9vYmpmaWxl IChvYmpmaWxlLCAibGliZ2NjIiwgInVud2luZCIpOworKwkgIGJwX29iamZpbGVfZGF0YS0+ZXhj ZXB0aW9uX3NlYXJjaGVkID0gMTsKKysJfQogKwotKwkgIGlmIChicF9vYmpmaWxlX2RhdGEtPmV4 Y2VwdGlvbl9wcm9iZSkKKysgICAgICBpZiAoYnBfb2JqZmlsZV9kYXRhLT5leGNlcHRpb25fcHJv YmVzICE9IE5VTEwpCisrCXsKKysJICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpm aWxlX2FyY2ggKG9iamZpbGUpOworKwkgIGludCBpOworKwkgIGNvbnN0IHN0cnVjdCBzdGFwX3By b2JlICpwcm9iZTsKKysKKysJICBmb3IgKGkgPSAwOworKwkgICAgICAgVkVDX2l0ZXJhdGUgKHN0 YXBfcHJvYmVfcCwKKysJCQkgICAgYnBfb2JqZmlsZV9kYXRhLT5leGNlcHRpb25fcHJvYmVzLAor KwkJCSAgICBpLCBwcm9iZSk7CisrCSAgICAgICArK2kpCiArCSAgICB7CiArCSAgICAgIHN0cnVj dCBicmVha3BvaW50ICpiOwotKwkgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9v YmpmaWxlX2FyY2ggKG9iamZpbGUpOwogKwotKwkgICAgICBiID0gY3JlYXRlX2ludGVybmFsX2Jy ZWFrcG9pbnQgKGdkYmFyY2gsCi0rCQkJCQkgICAgICBicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlv bl9wcm9iZS0+YWRkcmVzcywKKysJICAgICAgYiA9IGNyZWF0ZV9pbnRlcm5hbF9icmVha3BvaW50 IChnZGJhcmNoLCBwcm9iZS0+YWRkcmVzcywKICsJCQkJCSAgICAgIGJwX2V4Y2VwdGlvbl9tYXN0 ZXIpOwogKwkgICAgICBiLT5hZGRyX3N0cmluZyA9IHhzdHJkdXAgKCJwcm9iZTpsaWJnY2M6dW53 aW5kIik7CiArCSAgICAgIGItPmVuYWJsZV9zdGF0ZSA9IGJwX2Rpc2FibGVkOwotKwkgICAgICBj b250aW51ZTsKICsJICAgIH0KLSsJICBlbHNlCi0rCSAgICBicF9vYmpmaWxlX2RhdGEtPmV4Y2Vw dGlvbl9wcm9iZSA9ICZwcm9iZV9ub3RfZm91bmQ7CisrCisrCSAgY29udGludWU7CiArCX0KICsK ICsgICAgICAvKiBPdGhlcndpc2UsIHRyeSB0aGUgaG9vayBmdW5jdGlvbi4gICovCkBAIC02OTEs NyArNjI0LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2JyZWFrcG9pbnQuYwog ICAgICAgIGlmIChtc3ltX25vdF9mb3VuZF9wIChicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlvbl9t c3ltKSkKICAJY29udGludWU7CiAgCi1AQCAtMjU1Myw2ICsyNjY1LDggQEAgcmVtb3ZlX2JyZWFr cG9pbnRfMSAoc3RydWN0IGJwX2xvY2F0aW9uIAorQEAgLTI1NTIsNiArMjY4OCw4IEBAIHJlbW92 ZV9icmVha3BvaW50XzEgKHN0cnVjdCBicF9sb2NhdGlvbiAKICAJICAgIHZhbCA9IHRhcmdldF9y ZW1vdmVfaHdfYnJlYWtwb2ludCAoYmwtPmdkYmFyY2gsICZibC0+dGFyZ2V0X2luZm8pOwogIAkg IGVsc2UKICAJICAgIHZhbCA9IHRhcmdldF9yZW1vdmVfYnJlYWtwb2ludCAoYmwtPmdkYmFyY2gs ICZibC0+dGFyZ2V0X2luZm8pOwpAQCAtNzAwLDcgKzYzMyw3IEBAIEluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9icmVha3BvaW50LmMKICAJfQogICAgICAgIGVsc2UKICAJewotQEAgLTU5 MDIsNiArNjAxNiw3IEBAIHNldF9yYXdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmEK K0BAIC01OTU3LDYgKzYwOTUsNyBAQCBpbml0X3Jhd19icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtw b2ludCAqCiAgICBiLT5sb2MtPnJlcXVlc3RlZF9hZGRyZXNzID0gc2FsLnBjOwogICAgYi0+bG9j LT5hZGRyZXNzID0gYWRqdXN0ZWRfYWRkcmVzczsKICAgIGItPmxvYy0+cHNwYWNlID0gc2FsLnBz cGFjZTsKQEAgLTcwOCw3ICs2NDEsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv YnJlYWtwb2ludC5jCiAgCiAgICAvKiBTdG9yZSB0aGUgcHJvZ3JhbSBzcGFjZSB0aGF0IHdhcyB1 c2VkIHRvIHNldCB0aGUgYnJlYWtwb2ludCwgZm9yCiAgICAgICBicmVha3BvaW50IHJlc2V0dGlu Zy4gICovCi1AQCAtNzA1Niw2ICs3MTcxLDcgQEAgY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQg KHN0cnVjdCBicmVhaworQEAgLTcyMjYsNiArNzM2NSw3IEBAIGNsb25lX21vbWVudGFyeV9icmVh a3BvaW50IChzdHJ1Y3QgYnJlYWsKICAgIGNvcHktPmxvYy0+YWRkcmVzcyA9IG9yaWctPmxvYy0+ YWRkcmVzczsKICAgIGNvcHktPmxvYy0+c2VjdGlvbiA9IG9yaWctPmxvYy0+c2VjdGlvbjsKICAg IGNvcHktPmxvYy0+cHNwYWNlID0gb3JpZy0+bG9jLT5wc3BhY2U7CkBAIC03MTYsNyArNjQ5LDcg QEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2JyZWFrcG9pbnQuYwogIAogICAgaWYg KG9yaWctPnNvdXJjZV9maWxlID09IE5VTEwpCiAgICAgIGNvcHktPnNvdXJjZV9maWxlID0gTlVM TDsKLUBAIC03Mjc5LDYgKzczOTUsNyBAQCBhZGRfbG9jYXRpb25fdG9fYnJlYWtwb2ludCAoc3Ry dWN0IGJyZWFrCitAQCAtNzQ0NCw2ICs3NTg0LDcgQEAgYWRkX2xvY2F0aW9uX3RvX2JyZWFrcG9p bnQgKHN0cnVjdCBicmVhawogICAgbG9jLT5hZGRyZXNzID0gYWRqdXN0X2JyZWFrcG9pbnRfYWRk cmVzcyAobG9jLT5nZGJhcmNoLAogIAkJCQkJICAgIGxvYy0+cmVxdWVzdGVkX2FkZHJlc3MsIGIt PnR5cGUpOwogICAgbG9jLT5wc3BhY2UgPSBzYWwtPnBzcGFjZTsKQEAgLTcyNCw3ICs2NTcsNyBA QCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5jCiAgICBnZGJfYXNz ZXJ0IChsb2MtPnBzcGFjZSAhPSBOVUxMKTsKICAgIGxvYy0+c2VjdGlvbiA9IHNhbC0+c2VjdGlv bjsKICAKLUBAIC03NjI4LDYgKzc3NDUsMTYgQEAgY3JlYXRlX2JyZWFrcG9pbnRzX3NhbCAoc3Ry dWN0IGdkYmFyY2ggKgorQEAgLTc3OTIsNiArNzkzMywxNiBAQCBjcmVhdGVfYnJlYWtwb2ludHNf c2FsIChzdHJ1Y3QgZ2RiYXJjaCAqCiAgewogICAgaW50IGk7CiAgCkBAIC03NDEsOCArNjc0LDgg QEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2JyZWFrcG9pbnQuYwogICAgZm9yIChp ID0gMDsgaSA8IHNhbHMubmVsdHM7ICsraSkKICAgICAgewogICAgICAgIHN0cnVjdCBzeW10YWJz X2FuZF9saW5lcyBleHBhbmRlZCA9IAotQEAgLTgxNDgsNyArODI3NSw3IEBAIGNyZWF0ZV9icmVh a3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXIKLSAgICAgICAgIG1lbnRpb24gKGIpOworQEAg LTgzMDAsNyArODQ1MSw3IEBAIGNyZWF0ZV9icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXIKKyAgICAgICBvYnNlcnZlcl9ub3RpZnlfYnJlYWtwb2ludF9jcmVhdGVkIChiKTsKICAgICAg fQogICAgCiAtICBpZiAoc2Fscy5uZWx0cyA+IDEpCkBAIC03NTAsMTUgKzY4MywxNSBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5jCiAgICAgIHsKICAgICAgICB3 YXJuaW5nIChfKCJNdWx0aXBsZSBicmVha3BvaW50cyB3ZXJlIHNldC5cblVzZSB0aGUgIgogIAkJ ICJcImRlbGV0ZVwiIGNvbW1hbmQgdG8gZGVsZXRlIHVud2FudGVkIGJyZWFrcG9pbnRzLiIpKTsK LUBAIC05MDIwLDYgKzkxNDcsNyBAQCB3YXRjaF9jb21tYW5kXzEgKGNoYXIgKmFyZywgaW50IGFj Y2Vzc2ZsCitAQCAtOTM5NCw2ICs5NTQ1LDcgQEAgd2F0Y2hfY29tbWFuZF8xIChjaGFyICphcmcs IGludCBhY2Nlc3NmbAorICAgLyogTm93IHNldCB1cCB0aGUgYnJlYWtwb2ludC4gICovCiAgICBi ID0gc2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9jYXRpb24gKE5VTEwsIGJwX3R5cGUpOwot ICAgc2V0X2JyZWFrcG9pbnRfbnVtYmVyIChpbnRlcm5hbCwgYik7CiAgICBiLT50aHJlYWQgPSB0 aHJlYWQ7CiArICBiLT5wc3BhY2UgPSBjdXJyZW50X3Byb2dyYW1fc3BhY2U7CiAgICBiLT5kaXNw b3NpdGlvbiA9IGRpc3BfZG9udHRvdWNoOwogICAgYi0+ZXhwID0gZXhwOwogICAgYi0+ZXhwX3Zh bGlkX2Jsb2NrID0gZXhwX3ZhbGlkX2Jsb2NrOwotQEAgLTEwMTgyLDYgKzEwMzEwLDkgQEAgdXBk YXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkXworQEAgLTEwNTEyLDYgKzEwNjY0 LDkgQEAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkXwogICAgICAgIGlu dCBrZWVwX2luX3RhcmdldCA9IDA7CiAgICAgICAgaW50IHJlbW92ZWQgPSAwOwogIApAQCAtNzY4 LDcgKzcwMSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9icmVha3BvaW50LmMK ICAgICAgICAvKiBTa2lwIExPQ1AgZW50cmllcyB3aGljaCB3aWxsIGRlZmluaXRlbHkgbmV2ZXIg YmUgbmVlZGVkLgogIAkgU3RvcCBlaXRoZXIgYXQgb3IgYmVpbmcgdGhlIG9uZSBtYXRjaGluZyBP TERfTE9DLiAgKi8KICAgICAgICB3aGlsZSAobG9jcCA8IGJwX2xvY2F0aW9uICsgYnBfbG9jYXRp b25fY291bnQKLUBAIC0xMDk0NiwxMiArMTEwNzcsMTQgQEAgdXBkYXRlX2JyZWFrcG9pbnRfbG9j YXRpb25zIChzdHJ1Y3QgYnJlYQorQEAgLTExMzMzLDEyICsxMTQ4OCwxNCBAQCB1cGRhdGVfYnJl YWtwb2ludF9sb2NhdGlvbnMgKHN0cnVjdCBicmVhCiAgICAgT24gcmV0dXJuLCBGT1VORCB3aWxs IGJlIDEgaWYgYW55IFNhTCB3YXMgZm91bmQsIHplcm8gb3RoZXJ3aXNlLiAgKi8KICAKICBzdGF0 aWMgc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzCkBAIC03ODQsNyArNzE3LDcgQEAgSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL2JyZWFrcG9pbnQuYwogIAogICAgcyA9IGFkZHJfc3RyaW5n OwogICAgbWFya2VyX3NwZWMgPSBiLT50eXBlID09IGJwX3N0YXRpY190cmFjZXBvaW50ICYmIGlz X21hcmtlcl9zcGVjIChzKTsKLUBAIC0xMDk3MCw3ICsxMTEwMywyNyBAQCBhZGRyX3N0cmluZ190 b19zYWxzIChzdHJ1Y3QgYnJlYWtwb2ludCAqCitAQCAtMTEzNTcsNyArMTE1MTQsMjcgQEAgYWRk cl9zdHJpbmdfdG9fc2FscyAoc3RydWN0IGJyZWFrcG9pbnQgKgogIAkgICAgZXJyb3IgKF8oIm1h cmtlciAlcyBub3QgZm91bmQiKSwgYi0+c3RhdGljX3RyYWNlX21hcmtlcl9pZCk7CiAgCX0KICAg ICAgICBlbHNlCkBAIC04MTMsNyArNzQ2LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL2JyZWFrcG9pbnQuYwogICAgICB9CiAgICBpZiAoZS5yZWFzb24gPCAwKQogICAgICB7Ci1A QCAtMTEwMDMsNyArMTExNTYsNyBAQCBhZGRyX3N0cmluZ190b19zYWxzIChzdHJ1Y3QgYnJlYWtw b2ludCAqCitAQCAtMTEzOTAsNyArMTE1NjcsNyBAQCBhZGRyX3N0cmluZ190b19zYWxzIChzdHJ1 Y3QgYnJlYWtwb2ludCAqCiAgCiAgICBpZiAoZS5yZWFzb24gPT0gMCB8fCBlLmVycm9yICE9IE5P VF9GT1VORF9FUlJPUikKICAgICAgewpAQCAtODIyLDE3ICs3NTUsMTIgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL2JyZWFrcG9pbnQuYwogIAogICAgICAgIHJlc29sdmVfc2FsX3Bj ICgmc2Fscy5zYWxzWzBdKTsKICAgICAgICBpZiAoYi0+Y29uZGl0aW9uX25vdF9wYXJzZWQgJiYg cyAmJiBzWzBdKQotQEAgLTExMDQ0LDIyICsxMTE5NywyNyBAQCByZV9zZXRfYnJlYWtwb2ludCAo c3RydWN0IGJyZWFrcG9pbnQgKmIpCitAQCAtMTE0MjYsMTcgKzExNjAzLDIyIEBAIGJyZWFrcG9p bnRfcmVfc2V0X2RlZmF1bHQgKHN0cnVjdCBicmVha3AKKyAgIHN0cnVjdCBzeW10YWJzX2FuZF9s aW5lcyBzYWxzLCBzYWxzX2VuZDsKICAgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBleHBhbmRl ZCA9IHswfTsKICAgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBleHBhbmRlZF9lbmQgPSB7MH07 Ci0gICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51 cCwgTlVMTCk7CiArICBpbnQgcHJlX2V4cGFuZGVkID0gMDsKICAKLSAgIGlucHV0X3JhZGl4ID0g Yi0+aW5wdXRfcmFkaXg7Ci0gICBzYXZlX2N1cnJlbnRfc3BhY2VfYW5kX3RocmVhZCAoKTsKLSAg IHN3aXRjaF90b19wcm9ncmFtX3NwYWNlX2FuZF90aHJlYWQgKGItPnBzcGFjZSk7Ci0gICBzZXRf bGFuZ3VhZ2UgKGItPmxhbmd1YWdlKTsKLSAKIC0gIHNhbHMgPSBhZGRyX3N0cmluZ190b19zYWxz IChiLCBiLT5hZGRyX3N0cmluZywgJmZvdW5kKTsKICsgIHNhbHMgPSBhZGRyX3N0cmluZ190b19z YWxzIChiLCBiLT5hZGRyX3N0cmluZywgJmZvdW5kLCAmcHJlX2V4cGFuZGVkKTsKICAgIGlmIChm b3VuZCkKQEAgLTg1Myw3ICs3ODEsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv YnJlYWtwb2ludC5jCiAgICAgICAgaWYgKGZvdW5kKQogIAl7CiAgCSAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgc2Fsc19lbmQuc2Fscyk7Ci1AQCAtMTI0OTYsNiArMTI2NTQsMjQgQEAgYWxsX3RyYWNl cG9pbnRzICh2b2lkKQorQEAgLTEyOTEzLDYgKzEzMDk1LDI0IEBAIGFsbF90cmFjZXBvaW50cyAo dm9pZCkKICAgIHJldHVybiB0cF92ZWM7CiAgfQogIApAQCAtODc4LDcgKzgwNiwxNyBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvYnJlYWtwb2ludC5jCiAgDAogIC8qIFRoaXMgaGVs cCBzdHJpbmcgaXMgdXNlZCBmb3IgdGhlIGJyZWFrLCBoYnJlYWssIHRicmVhayBhbmQgdGhicmVh awogICAgIGNvbW1hbmRzLiAgSXQgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIHRvIHByZXZlbnQgZHVw bGljYXRpb24uCi1AQCAtMTMxMzEsNCArMTMzMDcsNyBAQCByYW5nZSAoaW5jbHVkaW5nIFNUQVJU LUxPQ0FUSU9OIGFuZCBFTkQtCitAQCAtMTMwMDUsNyArMTMyMDUsOCBAQCBfaW5pdGlhbGl6ZV9i cmVha3BvaW50ICh2b2lkKQorICAgb2JzZXJ2ZXJfYXR0YWNoX2luZmVyaW9yX2V4aXQgKGNsZWFy X3N5c2NhbGxfY291bnRzKTsKKyAgIG9ic2VydmVyX2F0dGFjaF9tZW1vcnlfY2hhbmdlZCAoaW52 YWxpZGF0ZV9icF92YWx1ZV9vbl9tZW1vcnlfY2hhbmdlKTsKKyAKKy0gIGJyZWFrcG9pbnRfb2Jq ZmlsZV9rZXkgPSByZWdpc3Rlcl9vYmpmaWxlX2RhdGEgKCk7CisrICBicmVha3BvaW50X29iamZp bGVfa2V5CisrICAgID0gcmVnaXN0ZXJfb2JqZmlsZV9kYXRhX3dpdGhfY2xlYW51cCAoTlVMTCwg ZnJlZV9icmVha3BvaW50X3Byb2Jlcyk7CisgCisgICBicmVha3BvaW50X2NoYWluID0gMDsKKyAg IC8qIERvbid0IGJvdGhlciB0byBjYWxsIHNldF9icmVha3BvaW50X2NvdW50LiAgJGJwbnVtIGlz bid0IHVzZWZ1bAorQEAgLTEzNTMyLDQgKzEzNzMzLDcgQEAgcmFuZ2UgKGluY2x1ZGluZyBTVEFS VC1MT0NBVElPTiBhbmQgRU5ELQogICAgYXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9pbnRzID0g MTsKICAKICAgIG9ic2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChicmVha3BvaW50X2Fi b3V0X3RvX3Byb2NlZWQpOwpAQCAtODg2LDExICs4MjQsMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL2JyZWFrcG9pbnQuYwogKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAo YnJlYWtwb2ludF90eXBlc19tYXJrX3VzZWQpOwogKyNlbmRpZgogIH0KLUluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi9icmVha3BvaW50LmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9icmVha3BvaW50LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9y aWcvZ2RiL2JyZWFrcG9pbnQuaAkyMDExLTA1LTE3IDIzOjI1OjU2LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2JyZWFrcG9pbnQuaAkyMDExLTA3LTAzIDEwOjMz OjExLjAwMDAwMDAwMCArMDIwMAotQEAgLTM2Myw2ICszNjMsMTEgQEAgc3RydWN0IGJwX2xvY2F0 aW9uCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9icmVha3BvaW50LmgJMjAxMS0w Ni0yMiAxOTo1Mzo0NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9icmVha3BvaW50LmgJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0z ODMsNiArMzgzLDExIEBAIHN0cnVjdCBicF9sb2NhdGlvbgogICAgICAgcHJvY2Vzc29yJ3MgYXJj aGl0ZWN0dWFsIGNvbnN0cmFpbnRzLiAgKi8KICAgIENPUkVfQUREUiByZXF1ZXN0ZWRfYWRkcmVz czsKICAKQEAgLTkwMiw3ICs4NDAsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv YnJlYWtwb2ludC5oCiAgICBjaGFyICpmdW5jdGlvbl9uYW1lOwogIAogICAgLyogRGV0YWlscyBv ZiB0aGUgcGxhY2VkIGJyZWFrcG9pbnQsIHdoZW4gaW5zZXJ0ZWQuICAqLwotQEAgLTEyMzcsNCAr MTI0MiwxMSBAQCBleHRlcm4gc3RydWN0IGJyZWFrcG9pbnQgKml0ZXJhdGVfb3Zlcl9iCitAQCAt MTMxNiw0ICsxMzIxLDExIEBAIGV4dGVybiBzdHJ1Y3QgYnJlYWtwb2ludCAqaXRlcmF0ZV9vdmVy X2IKICAKICBleHRlcm4gaW50IHVzZXJfYnJlYWtwb2ludF9wIChzdHJ1Y3QgYnJlYWtwb2ludCAq KTsKICAKQEAgLTkxNCwxMCArODUyLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi9icmVha3BvaW50LmgKICtleHRlcm4gdm9pZCBtb2RpZnlfc2VtYXBob3JlIChzdHJ1Y3QgYnBf bG9jYXRpb24gKmxvY2F0aW9uLCBpbnQgc2V0KTsKICsKICAjZW5kaWYgLyogIWRlZmluZWQgKEJS RUFLUE9JTlRfSCkgKi8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9jLXR5cGVwcmlu dC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYy10eXBlcHJpbnQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvYy10eXBlcHJpbnQuYwkyMDEx LTAzLTIyIDE4OjM1OjIyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL2MtdHlwZXByaW50LmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0t LSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2MtdHlwZXByaW50LmMJMjAxMS0wNS0xOCAx ODozMDozNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jLXR5 cGVwcmludC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtNjI1LDkg KzYyNSwxNCBAQCBjX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVjdCB0eXBlCiAgCSAg ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSIpOwogIApAQCAtOTM2LDEwICs4NzQsMTAgQEAg SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2MtdHlwZXByaW50LmMKICAJZnByaW50Zl9m aWx0ZXJlZCAoc3RyZWFtLCAiXSIpOwogIAogIAljX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXgg KFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0sCi1JbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvY2xpL2NsaS11dGlscy5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv Y2xpL2NsaS11dGlscy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmln L2dkYi9jbGkvY2xpLXV0aWxzLmMJMjAxMS0wMy0xNiAyMjoxMjoxMi4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9jbGkvY2xpLXV0aWxzLmMJMjAxMS0wNy0wMyAx MDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2Ri L2NsaS9jbGktdXRpbHMuYwkyMDExLTAzLTE2IDIyOjEyOjEyLjAwMDAwMDAwMCArMDEwMAorKysr IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NsaS9jbGktdXRpbHMuYwkyMDExLTA3LTIyIDIwOjA0 OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTI0NSwzICsyNDUsMzIgQEAgcmVtb3ZlX3RyYWlsaW5n X3doaXRlc3BhY2UgKGNvbnN0IGNoYXIgKgogIAogICAgcmV0dXJuIHM7CkBAIC05NzMsMTAgKzkx MSwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvY2xpL2NsaS11dGlscy5jCiAr CiArICByZXR1cm4gY29weTsKICt9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvY2xp L2NsaS11dGlscy5oCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY2xpL2NsaS11dGls cy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9jbGkvY2xp LXV0aWxzLmgJMjAxMS0wMy0xNiAyMjoxMjoxMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi9jbGkvY2xpLXV0aWxzLmgJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAw MDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2NsaS9jbGktdXRp bHMuaAkyMDExLTAzLTE2IDIyOjEyOjEyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2NsaS9jbGktdXRpbHMuaAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAw MCArMDIwMAogQEAgLTEwMyw0ICsxMDMsMTEgQEAgZXh0ZXJuIGNoYXIgKnNraXBfdG9fc3BhY2Ug KGNoYXIgKmlucCk7CiAgICAgU1RBUlQuICAqLwogIApAQCAtOTg5LDExICs5MjcsMTEgQEAgSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2NsaS9jbGktdXRpbHMuaAogK2V4dGVybiBjaGFy ICpleHRyYWN0X2FyZyAoY2hhciAqKmFyZyk7CiArCiAgI2VuZGlmIC8qIENMSV9VVElMU19IICov Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvY29mZnJlYWQuYworSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2NvZmZyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkw LjIwMTEwNzAzLm9yaWcvZ2RiL2NvZmZyZWFkLmMJMjAxMS0wMy0xNyAxNDoxOToyMy4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9jb2ZmcmVhZC5jCTIwMTEtMDct MDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMjE5Myw2ICsyMTkzLDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBzeW1fZm5zIGNvZmZfc3ltX2ZucworLS0tIGdkYi03LjMuNTAuMjAxMTA3 MjIub3JpZy9nZGIvY29mZnJlYWQuYwkyMDExLTA2LTE0IDIwOjUzOjEzLjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvZmZyZWFkLmMJMjAxMS0wNy0yMiAyMDow NDoyMS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0yMTk3LDYgKzIxOTcsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHN5bV9mbnMgY29mZl9zeW1fZm5zCiAgCiAgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2Nh dGUsCS8qIHN5bV9yZWxvY2F0ZTogUmVsb2NhdGUgYSBkZWJ1ZwogIAkJCQkgICBzZWN0aW9uLiAg Ki8KQEAgLTEwMDEsMTAgKzkzOSwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv Y29mZnJlYWQuYwogICAgJnBzeW1fZnVuY3Rpb25zCiAgfTsKICAKLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgorSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5p bgkyMDExLTAyLTA0IDE5OjM0OjQxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCTIwMTEtMDctMDMgMTA6MzM6MTEu MDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9kYXRhLWRp cmVjdG9yeS9NYWtlZmlsZS5pbgkyMDExLTAyLTA0IDE5OjM0OjQxLjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCTIw MTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtNTIsMTEgKzUyLDIzIEBAIFNZ U0NBTExTX0ZJTEVTID0gXAogIFBZVEhPTl9ESVIgPSBweXRob24KICBQWVRIT05fSU5TVEFMTF9E SVIgPSAkKERFU1RESVIpJChHREJfREFUQURJUikvJChQWVRIT05fRElSKQpAQCAtMTAzMiwxOSAr OTcwLDExIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kYXRhLWRpcmVjdG9yeS9N YWtlZmlsZS5pbgogIAogIEZMQUdTX1RPX1BBU1MgPSBcCiAgCSJwcmVmaXg9JChwcmVmaXgpIiBc Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZGJ4cmVhZC5jCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9kYnhyZWFkLmMJMjAxMS0wMy0yMyAxOToy Mzo1NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kYnhyZWFk LmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDYgKzEsNiBAQAot IC8qIFJlYWQgZGJ4IHN5bWJvbCB0YWJsZXMgYW5kIGNvbnZlcnQgdG8gaW50ZXJuYWwgZm9ybWF0 LCBmb3IgR0RCLgotICAgIENvcHlyaWdodCAoQykgMTk4NiwgMTk4NywgMTk4OCwgMTk4OSwgMTk5 MCwgMTk5MSwgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwKLS0gICAxOTk2LCAxOTk3LCAxOTk4LCAx OTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA4LCAyMDA5LCAyMDEwLgotKyAg IDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIw MDgsIDIwMDksIDIwMTAsIDIwMTEuCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0gCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotQEAgLTM1ODcsNiArMzU4Nyw3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBhb3V0X3N5bV9mbnMKK0luZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9kYnhyZWFkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4zLjUwLjIw MTEwNzIyLm9yaWcvZ2RiL2RieHJlYWQuYwkyMDExLTA2LTI3IDIxOjIxOjUwLjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RieHJlYWQuYwkyMDExLTA3LTIyIDIw OjA0OjIxLjAwMDAwMDAwMCArMDIwMAorQEAgLTM1OTAsNiArMzU5MCw3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3Qgc3ltX2ZucyBhb3V0X3N5bV9mbnMKICAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50 cywJLyogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbSBhIGZpbGUuICAqLwogICAgTlVMTCwK ICAgIGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSwJLyogUmVsb2NhdGUgYSBkZWJ1ZyBzZWN0aW9u LiAgKi8KQEAgLTEwNTIsMTEgKzk4MiwxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvZGJ4cmVhZC5jCiAgICAmcHN5bV9mdW5jdGlvbnMKICB9OwogIAotSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL2RlZnMuaAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Rl ZnMuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvZGVmcy5o CTIwMTEtMDMtMzEgMTY6MzI6NDguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvZGVmcy5oCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAt Mzk4LDYgKzM5OCw4IEBAIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3Jlc3QK Ky0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2RlZnMuaAkyMDExLTA3LTIyIDAxOjQ2 OjA4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RlZnMuaAky MDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAorQEAgLTQwNiw2ICs0MDYsOCBAQCBl eHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfY2xlYW51cF9yZXN0CiAgZXh0ZXJuIHN0cnVjdCBj bGVhbnVwICoKICAgIHNldF9iYXRjaF9mbGFnX2FuZF9tYWtlX2NsZWFudXBfcmVzdG9yZV9wYWdl X2luZm8gKHZvaWQpOwogIApAQCAtMTA2NSwxMSArOTk1LDExIEBAIEluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9kZWZzLmgKICBleHRlcm4gY2hhciAqZ2RiX3JlYWxwYXRoIChjb25zdCBj aGFyICopOwogIGV4dGVybiBjaGFyICp4ZnVsbHBhdGggKGNvbnN0IGNoYXIgKik7CiAgCi1JbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZG9jL2dkYi50ZXhpbmZvCitJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi45MC4yMDExMDcwMy5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wNy0wMiAyMTo1OToy OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMTc3LDYgKzEx NzcsMTYgQEAgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcuCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5v cmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wNy0yMSAxNzoxMzoyOS4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wNy0y MiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMTc1LDYgKzExNzUsMTYgQEAgZm9yIHJl bW90ZSBkZWJ1Z2dpbmcuCiAgUnVuIHVzaW5nIEB2YXJ7ZGV2aWNlfSBmb3IgeW91ciBwcm9ncmFt J3Mgc3RhbmRhcmQgaW5wdXQgYW5kIG91dHB1dC4KICBAYyBGSVhNRToga2luZ2RvbiB0aGlua3Mg dGhlcmUgaXMgbW9yZSB0byAtdHR5LiAgSW52ZXN0aWdhdGUuCiAgCkBAIC0xMDg2LDcgKzEwMTYs NyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGMg cmVzb2x2ZSB0aGUgc2l0dWF0aW9uIG9mIHRoZXNlIGV2ZW50dWFsbHkKICBAaXRlbSAtdHVpCiAg QGNpbmRleCBAY29kZXstLXR1aX0KLUBAIC0zMjg2LDYgKzMyOTYsNyBAQCBhbGwgYnJlYWtwb2lu dHMgaW4gdGhhdCByYW5nZSBhcmUgb3BlcmF0CitAQCAtMzI5NSw2ICszMzA1LDcgQEAgYWxsIGJy ZWFrcG9pbnRzIGluIHRoYXQgcmFuZ2UgYXJlIG9wZXJhdAogICogQ29uZGl0aW9uczo6ICAgICAg ICAgICAgICAgICAgQnJlYWsgY29uZGl0aW9ucwogICogQnJlYWsgQ29tbWFuZHM6OiAgICAgICAg ICAgICAgQnJlYWtwb2ludCBjb21tYW5kIGxpc3RzCiAgKiBTYXZlIEJyZWFrcG9pbnRzOjogICAg ICAgICAgICBIb3cgdG8gc2F2ZSBicmVha3BvaW50cyBpbiBhIGZpbGUKQEAgLTEwOTQsNyArMTAy NCw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kb2MvZ2RiLnRleGluZm8KICAq IEVycm9yIGluIEJyZWFrcG9pbnRzOjogICAgICAgIGBgQ2Fubm90IGluc2VydCBicmVha3BvaW50 cycnCiAgKiBCcmVha3BvaW50LXJlbGF0ZWQgV2FybmluZ3M6OiBgYEJyZWFrcG9pbnQgYWRkcmVz cyBhZGp1c3RlZC4uLicnCiAgQGVuZCBtZW51Ci1AQCAtNDQ5OSw2ICs0NTEwLDUwIEBAIGFuZCBy ZW1vdmUgdGhlIGJyZWFrcG9pbnQgZGVmaW5pdGlvbnMgeW8KK0BAIC00NTI1LDYgKzQ1MzYsNTAg QEAgYW5kIHJlbW92ZSB0aGUgYnJlYWtwb2ludCBkZWZpbml0aW9ucyB5bwogIHRoYXQgY2FuIG5v IGxvbmdlciBiZSByZWNyZWF0ZWQuCiAgQGVuZCB0YWJsZQogIApAQCAtMTE0NSw3ICsxMDc1LDcg QEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2RvYy9nZGIudGV4aW5mbwogIEBjICBA aWZjbGVhciBCQVJFVEFSR0VUCiAgQG5vZGUgRXJyb3IgaW4gQnJlYWtwb2ludHMKICBAc3Vic2Vj dGlvbiBgYENhbm5vdCBpbnNlcnQgYnJlYWtwb2ludHMnJwotQEAgLTY0MTQsNiArNjQ2OSwyOSBA QCBzcGVjaWZ5IHRoZSBmdW5jdGlvbiB1bmFtYmlndW91c2x5LCBlLmcuCitAQCAtNjQ0MCw2ICs2 NDk1LDI5IEBAIHNwZWNpZnkgdGhlIGZ1bmN0aW9uIHVuYW1iaWd1b3VzbHksIGUuZy4KICBmdW5j dGlvbnMgd2l0aCBpZGVudGljYWwgbmFtZXMgaW4gZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KICBA ZW5kIHRhYmxlCiAgCkBAIC0xMTc1LDcgKzExMDUsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGVuZCB0YWJsZQogIAogIAotQEAgLTg1MDAsNiAr ODU3OCwxMCBAQCB0byBtYXRjaCB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBkYXRhIHdhCitAQCAt ODUyNiw2ICs4NjA0LDEwIEBAIHRvIG1hdGNoIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGRhdGEg d2EKICBUaGUgdmFyaWFibGUgQGNvZGV7JF9leGl0Y29kZX0gaXMgYXV0b21hdGljYWxseSBzZXQg dG8gdGhlIGV4aXQgY29kZSB3aGVuCiAgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgdGVybWlu YXRlcy4KICAKQEAgLTExODYsNyArMTExNiw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAz L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAaXRlbSAkX3NkYXRhCiAgQHZpbmRleCAkX3NkYXRhQHJ7 LCBpbnNwZWN0LCBjb252ZW5pZW5jZSB2YXJpYWJsZX0KICBUaGUgdmFyaWFibGUgQGNvZGV7JF9z ZGF0YX0gY29udGFpbnMgZXh0cmEgY29sbGVjdGVkIHN0YXRpYyB0cmFjZXBvaW50Ci1AQCAtMTAy MTksNiArMTAzMDEsMTYgQEAgQ29sbGVjdCBhbGwgZnVuY3Rpb24gYXJndW1lbnRzLgorQEAgLTEw MjY0LDYgKzEwMzQ2LDE2IEBAIENvbGxlY3QgYWxsIGZ1bmN0aW9uIGFyZ3VtZW50cy4KICBAaXRl bSAkbG9jYWxzCiAgQ29sbGVjdCBhbGwgbG9jYWwgdmFyaWFibGVzLgogIApAQCAtMTIwMyw3ICsx MTMzLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2RvYy9nZGIudGV4aW5mbwog IEBpdGVtICRfc2RhdGEKICBAdmluZGV4ICRfc2RhdGFAcnssIGNvbGxlY3R9CiAgQ29sbGVjdCBz dGF0aWMgdHJhY2Vwb2ludCBtYXJrZXIgc3BlY2lmaWMgZGF0YS4gIE9ubHkgYXZhaWxhYmxlIGZv cgotQEAgLTIwNzIwLDggKzIwODEyLDYgQEAgY29udGFpbmluZyBAY29kZXtlbmR9LiAgRm9yIGV4 YW1wbGU6CitAQCAtMjA4MDUsOCArMjA4OTcsNiBAQCBjb250YWluaW5nIEBjb2Rle2VuZH0uICBG b3IgZXhhbXBsZToKICAKICBAc21hbGxleGFtcGxlCiAgKEB2YWx1ZXtHREJQfSkgcHl0aG9uCkBA IC0xMjEyLDkgKzExNDIsOSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZG9jL2dk Yi50ZXhpbmZvCiAgPnByaW50IDIzCiAgPmVuZAogIDIzCi1AQCAtMjA3MzQsNiArMjA4MjQsMTQg QEAgaW4gYSBQeXRob24gc2NyaXB0LiAgVGhpcyBjYW4gYmUgY29udHJvbAotIHB5dGhvbiBwcmlu dC1zdGFja306IGlmIEBjb2Rle29ufSwgdGhlIGRlZmF1bHQsIHRoZW4gUHl0aG9uIHN0YWNrCi0g cHJpbnRpbmcgaXMgZW5hYmxlZDsgaWYgQGNvZGV7b2ZmfSwgdGhlbiBQeXRob24gc3RhY2sgcHJp bnRpbmcgaXMKK0BAIC0yMDgyNCw2ICsyMDkxNCwxNCBAQCBvY2N1cnMgaW4gYSBQeXRob24gc2Ny aXB0LiAgVGhpcyBjYW4gYmUgCisgcHl0aG9uIHByaW50LXN0YWNrfTogaWYgQGNvZGV7b259LCB0 aGVuIFB5dGhvbiBzdGFjayBwcmludGluZyBpcworIGVuYWJsZWQ7IGlmIEBjb2Rle29mZn0sIHRo ZSBkZWZhdWx0LCB0aGVuIFB5dGhvbiBzdGFjayBwcmludGluZyBpcwogIGRpc2FibGVkLgogKwog K0BraW5kZXggbWFpbnQgc2V0IHB5dGhvbiBhdXRvLWxvYWQKQEAgLTEyMjcsNyArMTE1Nyw3IEBA IEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kb2MvZ2RiLnRleGluZm8KICBAZW5kIHRh YmxlCiAgCiAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBleGVjdXRlIGEgUHl0aG9uIHNjcmlwdCBm cm9tIHRoZSBAdmFsdWV7R0RCTn0KLUBAIC0yMDc1NSw2ICsyMDg1MywxNCBAQCBhbmQgdGh1cyBp cyBhbHdheXMgYXZhaWxhYmxlLgorQEAgLTIwODQ1LDYgKzIwOTQzLDE0IEBAIGFuZCB0aHVzIGlz IGFsd2F5cyBhdmFpbGFibGUuCiAgQGNpbmRleCBweXRob24gYXBpCiAgQGNpbmRleCBwcm9ncmFt bWluZyBpbiBweXRob24KICAKQEAgLTEyNDIsMTAgKzExNzIsMTAgQEAgSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL2RvYy9nZGIudGV4aW5mbwogIEBjaW5kZXggcHl0aG9uIHN0ZG91dAog IEBjaW5kZXggcHl0aG9uIHBhZ2luYXRpb24KICBBdCBzdGFydHVwLCBAdmFsdWV7R0RCTn0gb3Zl cnJpZGVzIFB5dGhvbidzIEBjb2Rle3N5cy5zdGRvdXR9IGFuZAotSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAx MTA3MDMub3JpZy9nZGIvZG9jL2dkYmludC50ZXhpbmZvCTIwMTEtMDItMDQgMjA6MTA6MTIuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZG9jL2dkYmludC50ZXhp bmZvCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4y MDExMDcyMi5vcmlnL2dkYi9kb2MvZ2RiaW50LnRleGluZm8JMjAxMS0wNC0xOSAyMDowNDowOC4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kb2MvZ2RiaW50LnRl eGluZm8JMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0yMTA0LDYgKzIx MDQsMTggQEAgdGltZSwgYW5kIHNvIHdlIGF0dGVtcHQgdG8gaGFuZGxlIHN5bWJvbAogIHdlIGNy ZWF0ZSBAZGZue3BhcnRpYWwgc3ltYm9sIHRhYmxlc30gY29uc2lzdGluZyBvZiBvbmx5IHNlbGVj dGVkCiAgc3ltYm9scywgYW5kIG9ubHkgZXhwYW5kIHRoZW0gdG8gZnVsbCBzeW1ib2wgdGFibGVz IHdoZW4gbmVjZXNzYXJ5LgpAQCAtMTM3MSwxMiArMTMwMSwxMiBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvZG9jL2dkYmludC50ZXhpbmZvCiAgCiAgCiAgQG5vZGUgTGFuZ3VhZ2Ug U3VwcG9ydAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2RvYy9vYnNlcnZlci50ZXhp CitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL29ic2VydmVyLnRleGkKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL2RvYy9vYnNlcnZlci50ZXhp CTIwMTEtMDEtMDUgMDY6MDk6NTQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvZG9jL29ic2VydmVyLnRleGkJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAg KzAyMDAKLUBAIC0yMjMsNiArMjIzLDExIEBAIEJ5dGVzIGZyb20gQHZhcntkYXRhfSB0byBAdmFy e2RhdGF9ICsgQHYKLSB0byB0aGUgY3VycmVudCBpbmZlcmlvciBhdCBAdmFye2FkZHJ9LgorLS0t IGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZG9jL29ic2VydmVyLnRleGkJMjAxMS0wNy0y MSAxMzowMzo0Ny4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9k b2Mvb2JzZXJ2ZXIudGV4aQkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAorQEAg LTIyNyw2ICsyMjcsMTEgQEAgQ2FsbGVkIGJlZm9yZSBhIHRvcC1sZXZlbCBwcm9tcHQgaXMgZGlz cAorIHRoZSBjdXJyZW50IHRvcC1sZXZlbCBwcm9tcHQuCiAgQGVuZCBkZWZ0eXBlZnVuCiAgCiAr QGMgQGRlZnR5cGVmdW4gdm9pZCBtYXJrX3VzZWQgKHZvaWQpCkBAIC0xMzg3LDQ5ICsxMzE3LDQ2 IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQogIEBk ZWZ0eXBlZnVuIHZvaWQgdGVzdF9ub3RpZmljYXRpb24gKGludCBAdmFye3NvbWVhcmd9KQogIFRo aXMgb2JzZXJ2ZXIgaXMgdXNlZCBmb3IgaW50ZXJuYWwgdGVzdGluZy4gIERvIG5vdCB1c2UuICAK ICBTZWUgdGVzdHN1aXRlL2dkYi5nZGIvb2JzZXJ2ZXIuZXhwLgotSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL2R3YXJmMmV4cHIuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2R3YXJmMmV4cHIuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9n ZGIvZHdhcmYyZXhwci5jCTIwMTEtMDUtMTMgMjA6NTQ6NDcuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYyZXhwci5jCTIwMTEtMDctMDMgMTA6MzM6MTEu MDAwMDAwMDAwICswMjAwCi1AQCAtOTEyLDYgKzkxMiwxMyBAQCBleGVjdXRlX3N0YWNrX29wIChz dHJ1Y3QgZHdhcmZfZXhwcl9jb250Ci0gCSAgY3R4LT5udW1fcGllY2VzID0gMDsKLSAJICBnb3Rv IGFib3J0X2V4cHJlc3Npb247CistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9kd2Fy ZjJleHByLmMJMjAxMS0wNy0xNSAyMjo1NDozMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJleHByLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAw MDAgKzAyMDAKK0BAIC0xMjU4LDYgKzEyNTgsMTQgQEAgZXhlY3V0ZV9zdGFja19vcCAoc3RydWN0 IGR3YXJmX2V4cHJfY29udAorIAkgIH0KKyAJICBicmVhazsKICAKICsJY2FzZSBEV19PUF9wdXNo X29iamVjdF9hZGRyZXNzOgotKwkgIGlmIChjdHgtPmdldF9vYmplY3RfYWRkcmVzcyA9PSBOVUxM KQorKwkgIGlmIChjdHgtPmZ1bmNzLT5nZXRfb2JqZWN0X2FkZHJlc3MgPT0gTlVMTCkKICsJICAg IGVycm9yIChfKCJEV0FSRi0yIGV4cHJlc3Npb24gZXJyb3I6IERXX09QX3B1c2hfb2JqZWN0X2Fk ZHJlc3MgbXVzdCAiCiArCSAgICAgICAgICAgImhhdmUgYSB2YWx1ZSB0byBwdXNoLiIpKTsKLSsJ ICByZXN1bHQgPSAoY3R4LT5nZXRfb2JqZWN0X2FkZHJlc3MpIChjdHgtPmJhdG9uKTsKKysJICBy ZXN1bHQgPSAoY3R4LT5mdW5jcy0+Z2V0X29iamVjdF9hZGRyZXNzKSAoY3R4LT5iYXRvbik7Cisr CSAgcmVzdWx0X3ZhbCA9IHZhbHVlX2Zyb21fdWxvbmdlc3QgKGFkZHJlc3NfdHlwZSwgcmVzdWx0 KTsKICsJICBicmVhazsKICsKICAJZGVmYXVsdDoKICAJICBlcnJvciAoXygiVW5oYW5kbGVkIGR3 YXJmIGV4cHJlc3Npb24gb3Bjb2RlIDB4JXgiKSwgb3ApOwogIAl9Ci1JbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvZHdhcmYyZXhwci5oCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvZHdhcmYyZXhwci5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmln L2dkYi9kd2FyZjJleHByLmgJMjAxMS0wMi0yNyAxNzoyNTozNy4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kd2FyZjJleHByLmgJMjAxMS0wNy0wMyAxMDozMzox MS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMTQsOSArMTE0LDE1IEBAIHN0cnVjdCBkd2FyZl9leHBy X2NvbnRleHQKLSAjaWYgMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZHdhcmYy ZXhwci5oCTIwMTEtMDctMTUgMjI6NTQ6MzIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvZHdhcmYyZXhwci5oCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAw ICswMjAwCitAQCAtNjIsMTIgKzYyLDEwIEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVu Y3MKKyAgICAgIG1lYW5pbmdmdWwgdG8gc3Vic3RpdHV0ZSBhIHN0dWIgdHlwZSBvZiB0aGUgY29y cmVjdCBzaXplLiAgKi8KKyAgIHN0cnVjdCB0eXBlICooKmdldF9iYXNlX3R5cGUpIChzdHJ1Y3Qg ZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsIHNpemVfdCBkaWUpOworIAorLSNpZiAwCiAgICAvKiBO b3QgeWV0IGltcGxlbWVudGVkLiAgKi8KICAKLSsgIC8qIFJldHVybiB0aGUgbG9jYXRpb24gZXhw cmVzc2lvbiBmb3IgdGhlIGR3YXJmIGV4cHJlc3Npb24KLSsgICAgIHN1YnJvdXRpbmUgaW4gdGhl IGRpZSBhdCBPRkZTRVQgaW4gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdC4KLSsgICAgIFRo ZSByZXN1bHQgbXVzdCBiZSBsaXZlIHVudGlsIHRoZSBjdXJyZW50IGV4cHJlc3Npb24gZXZhbHVh dGlvbgotKyAgICAgaXMgY29tcGxldGUuICAqLwotKyAgdW5zaWduZWQgY2hhciAqKCpnZXRfc3Vi cikgKHZvaWQgKmJhdG9uLCBvZmZfdCBvZmZzZXQsIHNpemVfdCAqbGVuZ3RoKTsKLSsjZW5kaWYK LSsKICAgIC8qIFJldHVybiB0aGUgYG9iamVjdCBhZGRyZXNzJyBmb3IgRFdfT1BfcHVzaF9vYmpl Y3RfYWRkcmVzcy4gICovCiAgICBDT1JFX0FERFIgKCpnZXRfb2JqZWN0X2FkZHJlc3MpICh2b2lk ICpiYXRvbik7CiAtI2VuZGlmCisgfTsKICAKLSAgIC8qIFRoZSBjdXJyZW50IGRlcHRoIG9mIGR3 YXJmIGV4cHJlc3Npb24gcmVjdXJzaW9uLCB2aWEgRFdfT1BfY2FsbCosCi0gICAgICBEV19PUF9m YnJlZywgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcywgZXRjLiwgYW5kIHRoZSBtYXhpbXVtCi1J bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYybG9jLmMKKyAvKiBUaGUgbG9jYXRp b24gb2YgYSB2YWx1ZS4gICovCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYy bG9jLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL2R3YXJm MmxvYy5jCTIwMTEtMDMtMjIgMjI6MDY6MzMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvZHdhcmYybG9jLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAg KzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2R3YXJmMmxvYy5jCTIwMTEt MDctMTkgMjI6Mjg6NTIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvZHdhcmYybG9jLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0x MzQsNiArMTM0LDkgQEAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24KICB7CiAgICBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWU7CkBAIC0xNDYwLDcgKzEzODcsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvZHdhcmYybG9jLmMKICsgICAgICBnZGJfYXNzZXJ0IChzeW1iYXRvbiAhPSBO VUxMKTsKICsgICAgICAqc3RhcnQgPSBzeW1iYXRvbi0+ZGF0YTsKICsgICAgICAqbGVuZ3RoID0g c3ltYmF0b24tPnNpemU7Ci0rICAgIH0KKyAgICAgfQogKyAgZWxzZSBpZiAoU1lNQk9MX0NPTVBV VEVEX09QUyAoZnJhbWVmdW5jKSA9PSAmZHdhcmYyX21pc3NpbmdfZnVuY3MpCiArICAgIHsKICsg ICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKnN5bWJhdG9uOwpAQCAtMTQ2OSw3ICsx Mzk2LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMmxvYy5jCiArICAg ICAgZ2RiX2Fzc2VydCAoc3ltYmF0b24gPT0gTlVMTCk7CiArICAgICAgKnN0YXJ0ID0gTlVMTDsK ICsgICAgICAqbGVuZ3RoID0gMDsJLyogdW51c2VkICovCi0gICAgIH0KKysgICAgfQogKyAgZWxz ZQogKyAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAogKwkJICAgIF8oIlVu c3VwcG9ydGVkIFNZTUJPTF9DT01QVVRFRF9PUFMgJXAgZm9yIFwiJXNcIiIpLApAQCAtMTQ4Myw4 ICsxNDEwLDggQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMmxvYy5jCiAg fQogIAogIC8qIEhlbHBlciBmdW5jdGlvbiBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjLiAg Q29tcHV0ZXMgdGhlIENGQSBmb3IKLUBAIC0yODYsNiArMjk5LDE3MiBAQCBkd2FyZl9leHByX2R3 YXJmX2NhbGwgKHN0cnVjdCBkd2FyZl9leHByCi0gCQkgICAgIGN0eC0+Z2V0X2ZyYW1lX3BjLCBj dHgtPmJhdG9uKTsKK0BAIC0yOTEsNiArMzA0LDg1IEBAIGR3YXJmX2V4cHJfZHdhcmZfY2FsbCAo c3RydWN0IGR3YXJmX2V4cHIKKyAJCSAgICAgY3R4LT5mdW5jcy0+Z2V0X2ZyYW1lX3BjLCBjdHgt PmJhdG9uKTsKICB9CiAgCiArc3RhdGljIENPUkVfQUREUgpAQCAtMTUzNywxNiArMTQ2NCw2NyBA QCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYybG9jLmMKICsgIG9iamVjdF9h ZGRyZXNzID0gYWRkcmVzczsKICt9CiArCisrLyogRXZhbHVhdGUgRFdBUkYgbG9jYXRpb24gbGlz dCBhdCBETExCQVRPTiBleHBlY3RpbmcgaXQgcHJvZHVjZXMgZXhhY3RseSBvbmUKKysgICBDT1JF X0FERFIgcmVzdWx0IHN0b3JlZCB0byAqQUREUlAgb24gdGhlIERXQVJGIHN0YWNrIHN0YWNrLiAg SWYgdGhlIHJlc3VsdAorKyAgIGNvdWxkIG5vdCBiZSBmb3VuZCByZXR1cm4gemVybyBhbmQga2Vl cCAqQUREUlAgdW5jaGFuZ2VkLiAgKi8KKysKKytpbnQKKytkd2FyZl9sb2NsaXN0X2JhdG9uX2V2 YWwgKHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqZGxsYmF0b24sCisrCQkJICBzdHJ1Y3Qg dHlwZSAqdHlwZSwgQ09SRV9BRERSICphZGRycCkKKyt7CisrICBzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUgPSBnZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpOworKyAgY29uc3QgZ2RiX2J5dGUgKmRh dGE7CisrICBzaXplX3Qgc2l6ZTsKKysgIHN0cnVjdCB2YWx1ZSAqdmFsOworKworKyAgaWYgKCFk bGxiYXRvbikKKysgICAgcmV0dXJuIDA7CisrCisrICBkYXRhID0gZHdhcmYyX2ZpbmRfbG9jYXRp b25fZXhwcmVzc2lvbiAoZGxsYmF0b24sICZzaXplLAorKwkJCQkJICBnZXRfZnJhbWVfYWRkcmVz c19pbl9ibG9jayAoZnJhbWUpKTsKKysgIGlmIChkYXRhID09IE5VTEwpCisrICAgIHJldHVybiAw OworKworKyAgdmFsID0gZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjICh0eXBlLCBmcmFtZSwgZGF0 YSwgc2l6ZSwgZGxsYmF0b24tPnBlcl9jdSk7CisrICBpZiAodmFsdWVfb3B0aW1pemVkX291dCAo dmFsKSkKKysgICAgcmV0dXJuIDA7CisrCisrICAqYWRkcnAgPSB2YWx1ZV9hc19hZGRyZXNzICh2 YWwpOworKyAgcmV0dXJuIDE7CisrfQorKworIC8qIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBkd2Fy ZjJfZXZhbHVhdGVfbG9jX2Rlc2MuICAqLworIAorIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqCitAQCAt MzAxLDYgKzM5Myw4NSBAQCBkd2FyZl9leHByX2dldF9iYXNlX3R5cGUgKHN0cnVjdCBkd2FyZl9l CisgICByZXR1cm4gZHdhcmYyX2dldF9kaWVfdHlwZSAoZGllX29mZnNldCwgZGViYXRvbi0+cGVy X2N1KTsKKyB9CisgCisrLyogVmlydHVhbCBtZXRob2QgdGFibGUgZm9yIGR3YXJmMl9ldmFsdWF0 ZV9sb2NfZGVzY19mdWxsIGJlbG93LiAgKi8KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IGR3YXJm X2V4cHJfY29udGV4dF9mdW5jcyBkd2FyZl9leHByX2N0eF9mdW5jcyA9CisreworKyAgZHdhcmZf ZXhwcl9yZWFkX3JlZywKKysgIGR3YXJmX2V4cHJfcmVhZF9tZW0sCisrICBkd2FyZl9leHByX2Zy YW1lX2Jhc2UsCisrICBkd2FyZl9leHByX2ZyYW1lX2NmYSwKKysgIGR3YXJmX2V4cHJfZnJhbWVf cGMsCisrICBkd2FyZl9leHByX3Rsc19hZGRyZXNzLAorKyAgZHdhcmZfZXhwcl9kd2FyZl9jYWxs LAorKyAgZHdhcmZfZXhwcl9nZXRfYmFzZV90eXBlLAorKyAgZHdhcmZfZXhwcl9vYmplY3RfYWRk cmVzcworK307CisrCiArLyogRXZhbHVhdGUgRFdBUkYgZXhwcmVzc2lvbiBhdCBEQVRBIC4uLiBE QVRBICsgU0laRSB3aXRoIGl0cyByZXN1bHQgcmVhZGFibGUKICsgICBieSBkd2FyZl9leHByX2Zl dGNoIChSRVRWQUwsIDApLiAgRlJBTUUgcGFyYW1ldGVyIGNhbiBiZSBOVUxMIHRvIGNhbGwKICsg ICBnZXRfc2VsZWN0ZWRfZnJhbWUgdG8gZmluZCBpdC4gIFJldHVybmVkIGR3YXJmX2V4cHJfY29u dGV4dCBmcmVlaW5nIGlzCiArICAgcHVzaGVkIG9uIHRoZSBjbGVhbnVwIGNoYWluLiAgKi8KICsK LStzdGF0aWMgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqCi0rZHdhcmZfZXhwcl9wcmVwX2N0 eCAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBjb25zdCBnZGJfYnl0ZSAqZGF0YSwKLSsJCSAg ICAgc2l6ZV90IHNpemUsIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKKytzdGF0 aWMgdm9pZAorK2R3YXJmX2V4cHJfcHJlcF9jdHggKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQg KmN0eCwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAorKwkJICAgICBjb25zdCBnZGJfYnl0ZSAq ZGF0YSwgc2l6ZV90IHNpemUsCisrCQkgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBl cl9jdSkKICt7Ci0rICBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHg7CiArICBzdHJ1Y3Qg ZHdhcmZfZXhwcl9iYXRvbiBiYXRvbjsKICsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gZHdh cmYyX3Blcl9jdV9vYmpmaWxlIChwZXJfY3UpOwogKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNl cHRpb24gZXg7CkBAIC0xNTU1LDM4ICsxNTMzLDEzIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi9kd2FyZjJsb2MuYwogKyAgYmF0b24ucGVyX2N1ID0gcGVyX2N1OwogKyAgYmF0b24u b2JqZWN0X2FkZHJlc3MgPSBvYmplY3RfYWRkcmVzczsKICsKLSsgIGN0eCA9IG5ld19kd2FyZl9l eHByX2NvbnRleHQgKCk7Ci0rICBtYWtlX2NsZWFudXBfZnJlZV9kd2FyZl9leHByX2NvbnRleHQg KGN0eCk7Ci0rCiArICBjdHgtPmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsK ICsgIGN0eC0+YWRkcl9zaXplID0gZHdhcmYyX3Blcl9jdV9hZGRyX3NpemUgKHBlcl9jdSk7CiAr ICBjdHgtPm9mZnNldCA9IGR3YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQgKHBlcl9jdSk7CiArICBj dHgtPmJhdG9uID0gJmJhdG9uOwotKyAgY3R4LT5yZWFkX3JlZyA9IGR3YXJmX2V4cHJfcmVhZF9y ZWc7Ci0rICBjdHgtPnJlYWRfbWVtID0gZHdhcmZfZXhwcl9yZWFkX21lbTsKLSsgIGN0eC0+Z2V0 X2ZyYW1lX2Jhc2UgPSBkd2FyZl9leHByX2ZyYW1lX2Jhc2U7Ci0rICBjdHgtPmdldF9mcmFtZV9j ZmEgPSBkd2FyZl9leHByX2ZyYW1lX2NmYTsKLSsgIGN0eC0+Z2V0X2ZyYW1lX3BjID0gZHdhcmZf ZXhwcl9mcmFtZV9wYzsKLSsgIGN0eC0+Z2V0X3Rsc19hZGRyZXNzID0gZHdhcmZfZXhwcl90bHNf YWRkcmVzczsKLSsgIGN0eC0+ZHdhcmZfY2FsbCA9IGR3YXJmX2V4cHJfZHdhcmZfY2FsbDsKLSsg IGN0eC0+Z2V0X29iamVjdF9hZGRyZXNzID0gZHdhcmZfZXhwcl9vYmplY3RfYWRkcmVzczsKLSsK LSsgIFRSWV9DQVRDSCAoZXgsIFJFVFVSTl9NQVNLX0VSUk9SKQotKyAgICB7Ci0rICAgICAgZHdh cmZfZXhwcl9ldmFsIChjdHgsIGRhdGEsIHNpemUpOwotKyAgICB9Ci0rICBpZiAoZXgucmVhc29u IDwgMCkKLSsgICAgewotKyAgICAgIGlmIChleC5lcnJvciA9PSBOT1RfQVZBSUxBQkxFX0VSUk9S KQotKwlyZXR1cm4gTlVMTDsKLSsgICAgICBlbHNlCi0rCXRocm93X2V4Y2VwdGlvbiAoZXgpOwot KyAgICB9Ci0rCi0rICAvKiBJdCB3YXMgdXNlZCBvbmx5IGR1cmluZyBkd2FyZl9leHByX2V2YWwu ICAqLwotKyAgY3R4LT5iYXRvbiA9IE5VTEw7CisrICBjdHgtPmZ1bmNzID0gJmR3YXJmX2V4cHJf Y3R4X2Z1bmNzOwogKwotKyAgcmV0dXJuIGN0eDsKKysgIGR3YXJmX2V4cHJfZXZhbCAoY3R4LCBk YXRhLCBzaXplKTsKICt9CiArCiArLyogRXZhbHVhdGUgRFdBUkYgZXhwcmVzc2lvbiBhdCBETEJB VE9OIGV4cGVjdGluZyBpdCBwcm9kdWNlcyBleGFjdGx5IG9uZQpAQCAtMTU5NywxNiArMTU1MCwx OCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYybG9jLmMKICt7CiArICBz dHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHg7CiArICBDT1JFX0FERFIgcmV0dmFsOwotKyAg c3RydWN0IGNsZWFudXAgKmJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7 CisrICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKKysKKysgIGN0eCA9IG5ld19kd2FyZl9leHBy X2NvbnRleHQgKCk7CisrICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwX2ZyZWVfZHdhcmZfZXhwcl9j b250ZXh0IChjdHgpOworKworKyAgZHdhcmZfZXhwcl9wcmVwX2N0eCAoY3R4LCBnZXRfc2VsZWN0 ZWRfZnJhbWUgKE5VTEwpLCBkbGJhdG9uLT5kYXRhLAorKwkJICAgICAgIGRsYmF0b24tPnNpemUs IGRsYmF0b24tPnBlcl9jdSk7CiArCi0rICBjdHggPSBkd2FyZl9leHByX3ByZXBfY3R4IChnZXRf c2VsZWN0ZWRfZnJhbWUgKE5VTEwpLCBkbGJhdG9uLT5kYXRhLAotKwkJCSAgICAgZGxiYXRvbi0+ c2l6ZSwgZGxiYXRvbi0+cGVyX2N1KTsKLSsgIGlmIChjdHggPT0gTlVMTCkKLSsgICAgdGhyb3df ZXJyb3IgKE5PVF9BVkFJTEFCTEVfRVJST1IsIF8oIlZhbHVlIG5vdCBhdmFpbGFibGUiKSk7CiAr ICBpZiAoY3R4LT5udW1fcGllY2VzID4gMCkKICsgICAgZXJyb3IgKF8oIkRXX09QXypwaWVjZSBp cyB1bnN1cHBvcnRlZCBmb3IgRFdfRk9STV9ibG9jayIpKTsKICsKLSsgIHJldHZhbCA9IGR3YXJm X2V4cHJfZmV0Y2ggKGN0eCwgMCk7CisrICByZXR2YWwgPSBkd2FyZl9leHByX2ZldGNoX2FkZHJl c3MgKGN0eCwgMCk7CiArCiArICBpZiAoY3R4LT5sb2NhdGlvbiA9PSBEV0FSRl9WQUxVRV9SRUdJ U1RFUikKICsgICAgewpAQCAtMTYyNCw5OSArMTU3OSw3NiBAQCBJbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvZHdhcmYybG9jLmMKICsgIHJldHVybiByZXR2YWw7CiArfQogKwotKy8qIEV2 YWx1YXRlIERXQVJGIGxvY2F0aW9uIGxpc3QgYXQgRExMQkFUT04gZXhwZWN0aW5nIGl0IHByb2R1 Y2VzIGV4YWN0bHkgb25lCi0rICAgQ09SRV9BRERSIHJlc3VsdCBzdG9yZWQgdG8gKkFERFJQIG9u IHRoZSBEV0FSRiBzdGFjayBzdGFjay4gIElmIHRoZSByZXN1bHQKLSsgICBjb3VsZCBub3QgYmUg Zm91bmQgcmV0dXJuIHplcm8gYW5kIGtlZXAgKkFERFJQIHVuY2hhbmdlZC4gICovCi0rCi0raW50 Ci0rZHdhcmZfbG9jbGlzdF9iYXRvbl9ldmFsIChzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24g KmRsbGJhdG9uLAotKwkJCSAgc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiAqYWRkcnApCi0r ewotKyAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lID0gZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxM KTsKLSsgIGNvbnN0IGdkYl9ieXRlICpkYXRhOwotKyAgc2l6ZV90IHNpemU7Ci0rICBzdHJ1Y3Qg dmFsdWUgKnZhbDsKLSsKLSsgIGlmICghZGxsYmF0b24pCi0rICAgIHJldHVybiAwOwotKwotKyAg ZGF0YSA9IGR3YXJmMl9maW5kX2xvY2F0aW9uX2V4cHJlc3Npb24gKGRsbGJhdG9uLCAmc2l6ZSwK LSsJCQkJCSAgZ2V0X2ZyYW1lX2FkZHJlc3NfaW5fYmxvY2sgKGZyYW1lKSk7Ci0rICBpZiAoZGF0 YSA9PSBOVUxMKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIHZhbCA9IGR3YXJmMl9ldmFsdWF0ZV9s b2NfZGVzYyAodHlwZSwgZnJhbWUsIGRhdGEsIHNpemUsIGRsbGJhdG9uLT5wZXJfY3UpOwotKyAg aWYgKHZhbHVlX29wdGltaXplZF9vdXQgKHZhbCkpCi0rICAgIHJldHVybiAwOwotKwotKyAgKmFk ZHJwID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsKTsKLSsgIHJldHVybiAxOwotK30KLSsKICBzdHJ1 Y3QgcGllY2VfY2xvc3VyZQogIHsKICAgIC8qIFJlZmVyZW5jZSBjb3VudC4gICovCi1AQCAtMTA3 MiwxMSArMTI1MSw4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHkK K0BAIC0xMDgyLDIwICsxMjUzLDYgQEAgaW52YWxpZF9zeW50aGV0aWNfcG9pbnRlciAodm9pZCkK KyAJICAgInJlZmVyZW5jZWQgdmlhIHN5bnRoZXRpYyBwb2ludGVyIikpOworIH0KKyAKKy0vKiBW aXJ0dWFsIG1ldGhvZCB0YWJsZSBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgYmVs b3cuICAqLworLQorLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0X2Z1bmNz IGR3YXJmX2V4cHJfY3R4X2Z1bmNzID0KKy17CistICBkd2FyZl9leHByX3JlYWRfcmVnLAorLSAg ZHdhcmZfZXhwcl9yZWFkX21lbSwKKy0gIGR3YXJmX2V4cHJfZnJhbWVfYmFzZSwKKy0gIGR3YXJm X2V4cHJfZnJhbWVfY2ZhLAorLSAgZHdhcmZfZXhwcl9mcmFtZV9wYywKKy0gIGR3YXJmX2V4cHJf dGxzX2FkZHJlc3MsCistICBkd2FyZl9leHByX2R3YXJmX2NhbGwsCistICBkd2FyZl9leHByX2dl dF9iYXNlX3R5cGUKKy19OworLQorIC8qIEV2YWx1YXRlIGEgbG9jYXRpb24gZGVzY3JpcHRpb24s IHN0YXJ0aW5nIGF0IERBVEEgYW5kIHdpdGggbGVuZ3RoCisgICAgU0laRSwgdG8gZmluZCB0aGUg Y3VycmVudCBsb2NhdGlvbiBvZiB2YXJpYWJsZSBvZiBUWVBFIGluIHRoZQorICAgIGNvbnRleHQg b2YgRlJBTUUuICBCWVRFX09GRlNFVCBpcyBhcHBsaWVkIGFmdGVyIHRoZSBjb250ZW50cyBhcmUK K0BAIC0xMTA4LDEwICsxMjY1LDggQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0 cnVjdCB0eQogIAkJCSAgICAgICBMT05HRVNUIGJ5dGVfb2Zmc2V0KQogIHsKICAgIHN0cnVjdCB2 YWx1ZSAqcmV0dmFsOwogLSAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24gYmF0b247CiAgICBzdHJ1 Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHg7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWlu OworICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiwgKnZhbHVlX2NoYWluOwogLSAgc3RydWN0 IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX2N1X29iamZpbGUgKHBlcl9jdSk7Ci0tICB2 b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleDsKKyAgIHZvbGF0aWxlIHN0cnVjdCBnZGJf ZXhjZXB0aW9uIGV4OwogIAogICAgaWYgKGJ5dGVfb2Zmc2V0IDwgMCkKLSAgICAgaW52YWxpZF9z eW50aGV0aWNfcG9pbnRlciAoKTsKLUBAIC0xMDg5LDM4ICsxMjY1LDE0IEBAIGR3YXJmMl9ldmFs dWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHkKLSAgICAgICByZXR1cm4gcmV0dmFsOwotICAg ICB9CitAQCAtMTEyMCwyOCArMTI3NSwxOCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVs bCAoc3RydWN0IHR5CisgICBpZiAoc2l6ZSA9PSAwKQorICAgICByZXR1cm4gYWxsb2NhdGVfb3B0 aW1pemVkX291dF92YWx1ZSAodHlwZSk7CiAgCiAtICBiYXRvbi5mcmFtZSA9IGZyYW1lOwogLSAg YmF0b24ucGVyX2N1ID0gcGVyX2N1OwogLQotLSAgY3R4ID0gbmV3X2R3YXJmX2V4cHJfY29udGV4 dCAoKTsKLS0gIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cF9mcmVlX2R3YXJmX2V4cHJfY29udGV4 dCAoY3R4KTsKLS0KKyAgIGN0eCA9IG5ld19kd2FyZl9leHByX2NvbnRleHQgKCk7CisgICBvbGRf Y2hhaW4gPSBtYWtlX2NsZWFudXBfZnJlZV9kd2FyZl9leHByX2NvbnRleHQgKGN0eCk7CisgICB2 YWx1ZV9jaGFpbiA9IG1ha2VfY2xlYW51cF92YWx1ZV9mcmVlX3RvX21hcmsgKHZhbHVlX21hcmsg KCkpOworIAogLSAgY3R4LT5nZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7CiAt ICBjdHgtPmFkZHJfc2l6ZSA9IGR3YXJmMl9wZXJfY3VfYWRkcl9zaXplIChwZXJfY3UpOwogLSAg Y3R4LT5vZmZzZXQgPSBkd2FyZjJfcGVyX2N1X3RleHRfb2Zmc2V0IChwZXJfY3UpOwogLSAgY3R4 LT5iYXRvbiA9ICZiYXRvbjsKLS0gIGN0eC0+cmVhZF9yZWcgPSBkd2FyZl9leHByX3JlYWRfcmVn OwotLSAgY3R4LT5yZWFkX21lbSA9IGR3YXJmX2V4cHJfcmVhZF9tZW07Ci0tICBjdHgtPmdldF9m cmFtZV9iYXNlID0gZHdhcmZfZXhwcl9mcmFtZV9iYXNlOwotLSAgY3R4LT5nZXRfZnJhbWVfY2Zh ID0gZHdhcmZfZXhwcl9mcmFtZV9jZmE7Ci0tICBjdHgtPmdldF9mcmFtZV9wYyA9IGR3YXJmX2V4 cHJfZnJhbWVfcGM7Ci0tICBjdHgtPmdldF90bHNfYWRkcmVzcyA9IGR3YXJmX2V4cHJfdGxzX2Fk ZHJlc3M7Ci0tICBjdHgtPmR3YXJmX2NhbGwgPSBkd2FyZl9leHByX2R3YXJmX2NhbGw7Ci0rICBv bGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7Ci0gCi0tICBUUllfQ0FU Q0ggKGV4LCBSRVRVUk5fTUFTS19FUlJPUikKLS0gICAgewotLSAgICAgIGR3YXJmX2V4cHJfZXZh bCAoY3R4LCBkYXRhLCBzaXplKTsKLS0gICAgfQotLSAgaWYgKGV4LnJlYXNvbiA8IDApCi0rICBj dHggPSBkd2FyZl9leHByX3ByZXBfY3R4IChmcmFtZSwgZGF0YSwgc2l6ZSwgcGVyX2N1KTsKLSsg IGlmIChjdHggPT0gTlVMTCkKKy0gIGN0eC0+ZnVuY3MgPSAmZHdhcmZfZXhwcl9jdHhfZnVuY3M7 CistCisgICBUUllfQ0FUQ0ggKGV4LCBSRVRVUk5fTUFTS19FUlJPUikKICAgICAgewotLSAgICAg IGlmIChleC5lcnJvciA9PSBOT1RfQVZBSUxBQkxFX0VSUk9SKQotLQl7Ci0tCSAgcmV0dmFsID0g YWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotLQkgIG1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFpbGFibGUg KHJldHZhbCwgMCwgVFlQRV9MRU5HVEggKHR5cGUpKTsKLS0JICByZXR1cm4gcmV0dmFsOwotLQl9 Ci0tICAgICAgZWxzZQotLQl0aHJvd19leGNlcHRpb24gKGV4KTsKLSsgICAgICByZXR2YWwgPSBh bGxvY2F0ZV92YWx1ZSAodHlwZSk7Ci0rICAgICAgbWFya192YWx1ZV9ieXRlc191bmF2YWlsYWJs ZSAocmV0dmFsLCAwLCBUWVBFX0xFTkdUSCAodHlwZSkpOwotKyAgICAgIHJldHVybiByZXR2YWw7 CistICAgICAgZHdhcmZfZXhwcl9ldmFsIChjdHgsIGRhdGEsIHNpemUpOworKyAgICAgIGR3YXJm X2V4cHJfcHJlcF9jdHggKGN0eCwgZnJhbWUsIGRhdGEsIHNpemUsIHBlcl9jdSk7CiAgICAgIH0K LSAKLSAgIGlmIChjdHgtPm51bV9waWVjZXMgPiAwKQotQEAgLTExNjYsNiArMTMxOCwxNSBAQCBk d2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5Ci0gCSAgICBDT1JFX0FERFIg YWRkcmVzcyA9IGR3YXJmX2V4cHJfZmV0Y2hfYWRkcmVzcyAoY3R4LCAwKTsKKyAgIGlmIChleC5y ZWFzb24gPCAwKQorICAgICB7CisgICAgICAgaWYgKGV4LmVycm9yID09IE5PVF9BVkFJTEFCTEVf RVJST1IpCisgCXsKKy0JICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKyAJICByZXR2YWwgPSBh bGxvY2F0ZV92YWx1ZSAodHlwZSk7CisgCSAgbWFya192YWx1ZV9ieXRlc191bmF2YWlsYWJsZSAo cmV0dmFsLCAwLCBUWVBFX0xFTkdUSCAodHlwZSkpOworIAkgIHJldHVybiByZXR2YWw7CitAQCAt MTE5OCw2ICsxMzQzLDE2IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3Qg dHkKICAJICAgIGludCBpbl9zdGFja19tZW1vcnkgPSBkd2FyZl9leHByX2ZldGNoX2luX3N0YWNr X21lbW9yeSAoY3R4LCAwKTsKICAKKyAJICAgIGRvX2NsZWFudXBzICh2YWx1ZV9jaGFpbik7Cisr CiArCSAgICAvKiBGcmFtZSBtYXkgYmUgbmVlZGVkIGZvciBjaGVja190eXBlZGVmIG9mIFRZUEVf RFlOQU1JQy4gICovCiArCSAgICBtYWtlX2NsZWFudXBfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAo KTsKICsJICAgIHNlbGVjdF9mcmFtZSAoZnJhbWUpOwpAQCAtMTcyOSw3ICsxNjYxLDcgQEAgSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMmxvYy5jCiAgCSAgICByZXR2YWwgPSBh bGxvY2F0ZV92YWx1ZV9sYXp5ICh0eXBlKTsKICAJICAgIFZBTFVFX0xWQUwgKHJldHZhbCkgPSBs dmFsX21lbW9yeTsKICAJICAgIGlmIChpbl9zdGFja19tZW1vcnkpCi1AQCAtMjg1NSwxMSArMzAx Niw1MSBAQCBsb2NsaXN0X3RyYWNlcG9pbnRfdmFyX3JlZiAoc3RydWN0IHN5bWJvCitAQCAtMjk3 NCwxMSArMzEyOSw1MSBAQCBsb2NsaXN0X3RyYWNlcG9pbnRfdmFyX3JlZiAoc3RydWN0IHN5bWJv CiAgCQkJICAgICAgIGRsYmF0b24tPnBlcl9jdSk7CiAgfQogIApAQCAtMTc4MywxMSArMTcxNSwx MSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYybG9jLmMKICsgIG1pc3Np bmdfZGVzY3JpYmVfbG9jYXRpb24sCiArICBtaXNzaW5nX3RyYWNlcG9pbnRfdmFyX3JlZgogK307 Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYybG9jLmgKK0luZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJsb2MuaAogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu OTAuMjAxMTA3MDMub3JpZy9nZGIvZHdhcmYybG9jLmgJMjAxMS0wMi0xNyAxNzoyMDo0NC4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kd2FyZjJsb2MuaAkyMDEx LTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAotQEAgLTEwNyw2ICsxMDcsMTUgQEAgc3Ry dWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dk Yi9kd2FyZjJsb2MuaAkyMDExLTA1LTEyIDE5OjQwOjU0LjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMmxvYy5oCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAw MDAwMDAwICswMjAwCitAQCAtMTEwLDYgKzExMCwxNSBAQCBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3Rf YmF0b24KICAKICBleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMgZHdhcmYy X2xvY2V4cHJfZnVuY3M7CiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3Bz IGR3YXJmMl9sb2NsaXN0X2Z1bmNzOwpAQCAtMTgwMywxMSArMTczNSwxMSBAQCBJbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYybG9jLmgKICAKICAvKiBDb21waWxlIGEgRFdBUkYg bG9jYXRpb24gZXhwcmVzc2lvbiB0byBhbiBhZ2VudCBleHByZXNzaW9uLgogICAgIAotSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAx MTA3MDMub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDctMDIgMjE6NTk6MjkuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDct MDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTIyMiw2ICsxMjIyLDkgQEAgc3RhdGlj IHZvaWQgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChzdHJ1YworLS0tIGdkYi03LjMuNTAuMjAxMTA3 MjIub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDctMjAgMTc6MTM6NDkuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDctMjIg MjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtMTI0NSw2ICsxMjQ1LDkgQEAgc3RhdGljIHZv aWQgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChzdHJ1YwogIAkJCQkgICBzdHJ1Y3QgZHdhcmYyX2xv Y2xpc3RfYmF0b24gKmJhdG9uLAogIAkJCQkgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyKTsKICAK QEAgLTE4MTcsNyArMTc0OSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kd2Fy ZjJyZWFkLmMKICBzdGF0aWMgdm9pZCBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHIsCiAgCQkJCQkgc3RydWN0IHN5bWJvbCAqc3ltLAogIAkJCQkJIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KTsKLUBAIC0xMjU2LDYgKzEyNTksOSBAQCBzdGF0aWMgdm9pZCBh Z2VfY2FjaGVkX2NvbXBfdW5pdHMgKHZvaWQpCitAQCAtMTI3OSw2ICsxMjgyLDkgQEAgc3RhdGlj IHZvaWQgYWdlX2NhY2hlZF9jb21wX3VuaXRzICh2b2lkKQogIAogIHN0YXRpYyB2b2lkIGZyZWVf b25lX2NhY2hlZF9jb21wX3VuaXQgKHZvaWQgKik7CiAgCkBAIC0xODI3LDcgKzE3NTksNyBAQCBJ bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYycmVhZC5jCiAgc3RhdGljIHN0cnVj dCB0eXBlICpzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgdHlwZSAqLAog IAkJCQkgIHN0cnVjdCBkd2FyZjJfY3UgKik7CiAgCi1AQCAtMTI4MCw2ICsxMjg2LDkgQEAgc3Rh dGljIHN0cnVjdCB0eXBlICpnZXRfZGllX3R5cGVfYXRfb2ZmcworQEAgLTEzMDMsNiArMTMwOSw5 IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlX2F0X29mZnMKICAKICBzdGF0aWMg c3RydWN0IHR5cGUgKmdldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KTsKICAKQEAgLTE4MzcsNyArMTc2OSw3IEBAIEluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9kd2FyZjJyZWFkLmMKICBzdGF0aWMgdm9pZCBkd2FyZjJfcmVsZWFzZV9x dWV1ZSAodm9pZCAqZHVtbXkpOwogIAogIHN0YXRpYyB2b2lkIHF1ZXVlX2NvbXBfdW5pdCAoc3Ry dWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAotQEAgLTc1NDIsNiArNzU1MSwyOSBAQCBw cm9jZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luCitAQCAtNzc1OSw2ICs3NzY4 LDI5IEBAIHByb2Nlc3NfZW51bWVyYXRpb25fc2NvcGUgKHN0cnVjdCBkaWVfaW4KICAgIG5ld19z eW1ib2wgKGRpZSwgdGhpc190eXBlLCBjdSk7CiAgfQogIApAQCAtMTg2Nyw3ICsxNzk5LDcgQEAg SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMnJlYWQuYwogIC8qIEV4dHJhY3Qg YWxsIGluZm9ybWF0aW9uIGZyb20gYSBEV19UQUdfYXJyYXlfdHlwZSBESUUgYW5kIHB1dCBpdCBp bgogICAgIHRoZSBESUUncyB0eXBlIGZpZWxkLiAgRm9yIG5vdywgdGhpcyBvbmx5IGhhbmRsZXMg b25lIGRpbWVuc2lvbmFsCiAgICAgYXJyYXlzLiAgKi8KLUBAIC03NTU1LDcgKzc1ODcsNyBAQCBy ZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzCitAQCAtNzc3Miw3ICs3ODA0 LDcgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgcwogICAgc3RydWN0 IHR5cGUgKmVsZW1lbnRfdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90eXBlOwogICAgc3RydWN0 IHR5cGUgKipyYW5nZV90eXBlcyA9IE5VTEw7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwpA QCAtMTg3Niw3ICsxODA4LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJm MnJlYWQuYwogICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAgICBjaGFyICpuYW1lOwogIAot QEAgLTc2MDgsMTcgKzc2NDAsMTkgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgcworQEAgLTc4MjUsMTcgKzc4NTcsMTkgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgcwogICAgdHlwZSA9IGVsZW1lbnRfdHlwZTsKICAKICAgIGlmIChyZWFk X2FycmF5X29yZGVyIChkaWUsIGN1KSA9PSBEV19PUkRfY29sX21ham9yKQpAQCAtMTkwNyw3ICsx ODM5LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMnJlYWQuYwogIAog ICAgLyogVW5kZXJzdGFuZCBEd2FyZjIgc3VwcG9ydCBmb3IgdmVjdG9yIHR5cGVzIChsaWtlIHRo ZXkgb2NjdXIgb24KICAgICAgIHRoZSBQb3dlclBDIHcvIEFsdGlWZWMpLiAgR2NjIGp1c3QgYWRk cyBhbm90aGVyIGF0dHJpYnV0ZSB0byB0aGUKLUBAIC04MTAyLDI5ICs4MTM2LDExNCBAQCByZWFk X3RhZ19zdHJpbmdfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkCitAQCAtODMxOSwyOSArODM1Mywx MTQgQEAgcmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZAogICAgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKICAgIHN0cnVj dCB0eXBlICp0eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpjaGFyX3R5cGU7CiAgICBz dHJ1Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtMjAzNSw3ICsxOTY3LDcgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMnJlYWQuYwogICAgY2hhcl90eXBlID0gbGFuZ3VhZ2Vf c3RyaW5nX2NoYXJfdHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4sIGdkYmFyY2gpOwogICAgdHlwZSA9 IGNyZWF0ZV9zdHJpbmdfdHlwZSAoTlVMTCwgY2hhcl90eXBlLCByYW5nZV90eXBlKTsKICAKLUBA IC04NDA5LDggKzg1MjgsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllCitAQCAtODYzMiw4ICs4NzUxLDcgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGll X2luZm8gKmRpZQogICAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZTsKICAgIHN0cnVjdCB0eXBlICpy YW5nZV90eXBlOwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKQEAgLTIwNDUsNyArMTk3Nyw3 IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kd2FyZjJyZWFkLmMKICAgIGNoYXIg Km5hbWU7CiAgICBMT05HRVNUIG5lZ2F0aXZlX21hc2s7CiAgCi1AQCAtODQyMyw1MyArODU0MSwx MjYgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZQorQEAgLTg2NDYs NTMgKzg3NjQsMTI2IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUK ICAgIGlmIChyYW5nZV90eXBlKQogICAgICByZXR1cm4gcmFuZ2VfdHlwZTsKICAKQEAgLTIxMDMs NyArMjAzNSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kd2FyZjJyZWFkLmMK ICsgICAgfQogKyAgZWxzZQogICAgICB7Ci0tICAgICAgaWYgKGF0dHItPmZvcm0gPT0gRFdfRk9S TV9ibG9jazEgfHwgaXNfcmVmX2F0dHIgKGF0dHIpKQorLSAgICAgIGlmIChhdHRyX2Zvcm1faXNf YmxvY2sgKGF0dHIpIHx8IGlzX3JlZl9hdHRyIChhdHRyKSkKIC0gICAgICAgIHsKIC0gICAgICAg ICAgLyogR0NDIGVuY29kZXMgYXJyYXlzIHdpdGggdW5zcGVjaWZpZWQgb3IgZHluYW1pYyBsZW5n dGgKIC0gICAgICAgICAgICAgd2l0aCBhIERXX0ZPUk1fYmxvY2sxIGF0dHJpYnV0ZSBvciBhIHJl ZmVyZW5jZSBhdHRyaWJ1dGUuCkBAIC0yMjA1LDcgKzIxMzcsNyBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvZHdhcmYycmVhZC5jCiAgICAgIH0KICAKICAgIC8qIER3YXJmLTIgc3Bl Y2lmaWNhdGlvbnMgZXhwbGljaXRseSBhbGxvd3MgdG8gY3JlYXRlIHN1YnJhbmdlIHR5cGVzCi1A QCAtODUxMCwyNCArODcwMSw0MSBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5m byAqZGllCitAQCAtODczMywyNCArODkyNCw0MSBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVj dCBkaWVfaW5mbyAqZGllCiAgCX0KICAgICAgfQogIApAQCAtMjIyMSw3ICsyMTUzLDcgQEAgSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMnJlYWQuYwogLSAgLyogTWFyayBhcnJh eXMgd2l0aCBkeW5hbWljIGxlbmd0aCBhdCBsZWFzdCBhcyBhbiBhcnJheSBvZiB1bnNwZWNpZmll ZAogLSAgICAgbGVuZ3RoLiAgR0RCIGNvdWxkIGNoZWNrIHRoZSBib3VuZGFyeSBidXQgYmVmb3Jl IGl0IGdldHMgaW1wbGVtZW50ZWQgYXQKIC0gICAgIGxlYXN0IGFsbG93IGFjY2Vzc2luZyB0aGUg YXJyYXkgZWxlbWVudHMuICAqLwotLSAgaWYgKGF0dHIgJiYgYXR0ci0+Zm9ybSA9PSBEV19GT1JN X2Jsb2NrMSkKKy0gIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCiAtICAg IFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKIC0KIC0gIC8qIEFk YSBleHBlY3RzIGFuIGVtcHR5IGFycmF5IG9uIG5vIGJvdW5kYXJ5IGF0dHJpYnV0ZXMuICAqLwpA QCAtMjI2NSw3ICsyMTk3LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJm MnJlYWQuYwogIAogICAgbmFtZSA9IGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKICAgIGlmIChuYW1l KQotQEAgLTExMDcyLDEwICsxMTI4MCwxMiBAQCB2YXJfZGVjb2RlX2xvY2F0aW9uIChzdHJ1Y3Qg YXR0cmlidXRlICphCitAQCAtMTEzMDcsMTMgKzExNTE1LDEyIEBAIHZhcl9kZWNvZGVfbG9jYXRp b24gKHN0cnVjdCBhdHRyaWJ1dGUgKmEKICAgICAgIChpLmUuIHdoZW4gdGhlIHZhbHVlIG9mIGEg cmVnaXN0ZXIgb3IgbWVtb3J5IGxvY2F0aW9uIGlzCiAgICAgICByZWZlcmVuY2VkLCBvciBhIHRo cmVhZC1sb2NhbCBibG9jaywgZXRjLikuICBUaGVuIGFnYWluLCBpdCBtaWdodAogICAgICAgbm90 IGJlIHdvcnRod2hpbGUuICBJJ20gYXNzdW1pbmcgdGhhdCBpdCBpc24ndCB1bmxlc3MgcGVyZm9y bWFuY2UKQEAgLTIyNzYsMTEgKzIyMDgsMTQgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL2R3YXJmMnJlYWQuYwogIAogLSAgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChhdHRy LCBzeW0sIGN1KTsKICAgIFNZTUJPTF9DTEFTUyAoc3ltKSA9IExPQ19DT01QVVRFRDsKKy0KKy0g IGlmIChTWU1CT0xfQ09NUFVURURfT1BTIChzeW0pID09ICZkd2FyZjJfbG9jbGlzdF9mdW5jcykK Ky0gICAgY3UtPmhhc19sb2NsaXN0ID0gMTsKICsgIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRl ZCAoYXR0ciwgc3ltLCBjdSk7CisgfQogIAotICAgaWYgKFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5 bSkgPT0gJmR3YXJmMl9sb2NsaXN0X2Z1bmNzKQotICAgICBjdS0+aGFzX2xvY2xpc3QgPSAxOwot QEAgLTExMTE2LDYgKzExMzI2LDggQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgcworIC8qIEdpdmVuIGEgcG9pbnRlciB0byBhIERXQVJGIGluZm9ybWF0aW9uIGVudHJ5 LCBmaWd1cmUgb3V0IGlmIHdlIG5lZWQKK0BAIC0xMTM1MSw2ICsxMTU1OCw4IEBAIG5ld19zeW1i b2xfZnVsbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHMKICAgICAgICBlbHNlCiAgCXN5bSA9IE9C U1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzdHJ1Y3Qgc3ltYm9sKTsK ICAgICAgICBPQkpTVEFUIChvYmpmaWxlLCBuX3N5bXMrKyk7CkBAIC0yMjg5LDcgKzIyMjQsNyBA QCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYycmVhZC5jCiAgCiAgICAgICAg LyogQ2FjaGUgdGhpcyBzeW1ib2wncyBuYW1lIGFuZCB0aGUgbmFtZSdzIGRlbWFuZ2xlZCBmb3Jt IChpZiBhbnkpLiAgKi8KICAgICAgICBTWU1CT0xfU0VUX0xBTkdVQUdFIChzeW0sIGN1LT5sYW5n dWFnZSk7Ci1AQCAtMTE4ODgsNiArMTIxMDAsOSBAQCByZWFkX3R5cGVfZGllXzEgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzCitAQCAtMTIxMjMsNiArMTIzMzIsOSBAQCByZWFkX3R5cGVfZGllXzEg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzCiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAKQEAgLTIy OTksNyArMjIzNCw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kd2FyZjJyZWFk LmMKICAgIHJldHVybiB0aGlzX3R5cGU7CiAgfQogIAotQEAgLTE0NzQyLDYxICsxNDk1Nyw5OSBA QCBmaWxsX2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJfY3UgCitAQCAtMTUwMTUsNjEg KzE1MjI3LDEwMCBAQCBmaWxsX2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJfY3UgCiAg ICBiYXRvbi0+YmFzZV9hZGRyZXNzID0gY3UtPmJhc2VfYWRkcmVzczsKICB9CiAgCkBAIC0yMzQ2 LDcgKzIyODEsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYycmVhZC5j CiArCiArICByZXR1cm4gYmF0b247CiArfQotIAorKwogK3N0YXRpYyBzdHJ1Y3QgZHdhcmYyX2xv Y2xpc3RfYmF0b24gKgogK2R3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogK3sKQEAgLTIzNTksNyArMjI5NCw3 IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9kd2FyZjJyZWFkLmMKICsKICsgIGR3 YXJmMl9yZWFkX3NlY3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwKICsJCSAgICAg ICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MpOwotKworIAogKyAgaWYgKCEoYXR0cl9mb3JtX2lz X3NlY3Rpb25fb2Zmc2V0IChhdHRyKQogKwkvKiAiLmRlYnVnX2xvYyIgbWF5IG5vdCBleGlzdCBh dCBhbGwsIG9yIHRoZSBvZmZzZXQgbWF5IGJlIG91dHNpZGUKICsJICAgdGhlIHNlY3Rpb24uICBJ ZiBzbywgZmFsbCB0aHJvdWdoIHRvIHRoZSBjb21wbGFpbnQgaW4gdGhlCkBAIC0yMzk1LDYgKzIz MzAsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYycmVhZC5jCiAgICAg ICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbG9jbGlzdF9mdW5jczsKIC0g ICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBiYXRvbjsKICsgICAgICBTWU1CT0xf TE9DQVRJT05fQkFUT04gKHN5bSkgPSBsb2NsaXN0X2JhdG9uOworKyAgICAgIGN1LT5oYXNfbG9j bGlzdCA9IDE7CiArICAgIH0KICsgIGVsc2UgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikp CiArICAgIHsKQEAgLTI0NDIsNyArMjM3OCw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAz L2dkYi9kd2FyZjJyZWFkLmMKICAgICAgfQogIH0KICAKLUBAIC0xNTE0NSw2ICsxNTM5OCwyNSBA QCBvZmZzZXRfYW5kX3R5cGVfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzCitAQCAtMTU0MTgsNiAr MTU2NjksMjUgQEAgb2Zmc2V0X2FuZF90eXBlX2VxIChjb25zdCB2b2lkICppdGVtX2xocwogICAg cmV0dXJuIG9mc19saHMtPm9mZnNldCA9PSBvZnNfcmhzLT5vZmZzZXQ7CiAgfQogIApAQCAtMjQ2 OCw3ICsyNDA0LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2R3YXJmMnJlYWQu YwogIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElFIHRvIFRZUEUuICBTYXZlIGl0 IGluIENVJ3MgaGFzaAogICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4gIEZvciBjb252ZW5pZW5jZSwg cmV0dXJuIFRZUEUuCiAgCi1AQCAtMTUxNzAsNiArMTU0NDIsOCBAQCBzZXRfZGllX3R5cGUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1CitAQCAtMTU0NDMsNiArMTU3MTMsOCBAQCBzZXRfZGll X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1CiAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSA9IGN1LT5vYmpmaWxlOwogICAgaHRhYl90ICp0eXBlX2hhc2hfcHRyOwogIApAQCAtMjQ3 NywyNCArMjQxMywyMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZHdhcmYycmVh ZC5jCiAgICAvKiBGb3IgQWRhIHR5cGVzLCBtYWtlIHN1cmUgdGhhdCB0aGUgZ25hdC1zcGVjaWZp YyBkYXRhIGlzIGFsd2F5cwogICAgICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCku ICBUaGVyZSBhcmUgYSBmZXcgdHlwZXMgd2hlcmUKICAgICAgIHdlIHNob3VsZCBub3QgYmUgZG9p bmcgc28sIGJlY2F1c2UgdGhlIHR5cGUtc3BlY2lmaWMgYXJlYSBpcwotSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL2VsZnJlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAx MTA3MDMub3JpZy9nZGIvZWxmcmVhZC5jCTIwMTEtMDUtMDMgMTg6MjU6MjAuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZWxmcmVhZC5jCTIwMTEtMDctMDMgMTA6 MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtNDMsNiArNDMsMTIgQEAKLSAjaW5jbHVkZSAiaW5m Y2FsbC5oIgotICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKLSAjaW5jbHVkZSAicmVnY2FjaGUuaCIK K0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t LSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDExLTA1LTI2IDA5OjQ3 OjEwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2VsZnJlYWQu YwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAorQEAgLTM4LDYgKzM4LDggQEAK KyAjaW5jbHVkZSAiZGVtYW5nbGUuaCIKKyAjaW5jbHVkZSAicHN5bXByaXYuaCIKKyAjaW5jbHVk ZSAiZmlsZW5hbWVzLmgiCiArI2luY2x1ZGUgInN0YXAtcHJvYmUuaCIKICsjaW5jbHVkZSAiYXJj aC11dGlscy5oIgotKyNpbmNsdWRlICJ2YWx1ZS5oIgotKyNpbmNsdWRlICJpbmZjYWxsLmgiCi0r I2luY2x1ZGUgImdkYnRocmVhZC5oIgotKyNpbmNsdWRlICJyZWdjYWNoZS5oIgotIAotIGV4dGVy biB2b2lkIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpOwotIAotQEAgLTYxLDYgKzY3LDIxIEBA IHN0cnVjdCBlbGZpbmZvCisgI2luY2x1ZGUgImdkYnR5cGVzLmgiCisgI2luY2x1ZGUgInZhbHVl LmgiCisgI2luY2x1ZGUgImluZmNhbGwuaCIKK0BAIC02MSw2ICs2MywyMSBAQCBzdHJ1Y3QgZWxm aW5mbwogICAgICBhc2VjdGlvbiAqbWRlYnVnc2VjdDsJLyogU2VjdGlvbiBwb2ludGVyIGZvciAu bWRlYnVnIHNlY3Rpb24gKi8KICAgIH07CiAgCkBAIC0yNTE2LDcgKzI0NDgsNyBAQCBJbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZWxmcmVhZC5jCiAgc3RhdGljIHZvaWQgZnJlZV9lbGZp bmZvICh2b2lkICopOwogIAogIC8qIE1pbmltYWwgc3ltYm9scyBsb2NhdGVkIGF0IHRoZSBHT1Qg ZW50cmllcyBmb3IgLnBsdCAtIHRoYXQgaXMgdGhlIHJlYWwKLUBAIC0xNTUzLDcgKzE1NzQsMjY2 IEBAIGVsZnN0YWJfb2Zmc2V0X3NlY3Rpb25zIChzdHJ1Y3Qgb2JqZmlsZSAKK0BAIC0xNTc0LDcg KzE1OTEsMjY2IEBAIGVsZnN0YWJfb2Zmc2V0X3NlY3Rpb25zIChzdHJ1Y3Qgb2JqZmlsZSAKICAg ICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAogIAkgICAgICAgXygiZWxmL3N0YWIg c2VjdGlvbiBpbmZvcm1hdGlvbiBtaXNzaW5nIGZvciAlcyIpLCBmaWxlbmFtZSk7CiAgfQpAQCAt Mjc4Myw3ICsyNzE1LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2VsZnJlYWQu YwogIC8qIFJlZ2lzdGVyIHRoYXQgd2UgYXJlIGFibGUgdG8gaGFuZGxlIEVMRiBvYmplY3QgZmls ZSBmb3JtYXRzLiAgKi8KICAKICBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9m bnMgPQotQEAgLTE1NjgsNiArMTg0OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBl bGZfc3ltX2ZucyAKK0BAIC0xNTg5LDYgKzE4NjUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5 bV9mbnMgZWxmX3N5bV9mbnMgCiAgICBlbGZfc3ltZmlsZV9zZWdtZW50cywJCS8qIEdldCBzZWdt ZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KICAgIE5VTEwsCiAgICBkZWZhdWx0X3N5 bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICovCkBAIC0yNzkx LDcgKzI3MjMsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZWxmcmVhZC5jCiAg ICAmcHN5bV9mdW5jdGlvbnMKICB9OwogIAotQEAgLTE1ODYsNiArMTg2Nyw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2Zuc18KK0BAIC0xNjA3LDYgKzE4ODQsNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnNfCiAgICBlbGZfc3ltZmlsZV9z ZWdtZW50cywJCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KICAg IE5VTEwsCiAgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcg c2VjdGlvbi4gICovCkBAIC0yNzk5LDcgKzI3MzEsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvZWxmcmVhZC5jCiAgICAmcHN5bV9mdW5jdGlvbnMKICB9OwogIAotQEAgLTE2MDMs NiArMTg4NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2Zuc18KK0BA IC0xNjI0LDYgKzE5MDIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9m bnNfCiAgICBlbGZfc3ltZmlsZV9zZWdtZW50cywJCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9u IGZyb20gYSBmaWxlLiAgKi8KICAgIE5VTEwsCiAgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUs CS8qIFJlbG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICovCkBAIC0yODA3LDcgKzI3MzksNyBAQCBJ bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZWxmcmVhZC5jCiAgICAmZHdhcmYyX2dkYl9p bmRleF9mdW5jdGlvbnMKICB9OwogIAotQEAgLTE2MTksNiArMTkwMiw4IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZ251X2lmdW5jX2ZucyBlbGZfZ24KK0BAIC0xNjQwLDYgKzE5MTksOCBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGdudV9pZnVuY19mbnMgZWxmX2duCiAgdm9pZAogIF9pbml0aWFsaXpl X2VsZnJlYWQgKHZvaWQpCiAgewpAQCAtMjgxNiwxMCArMjc0OCwxMCBAQCBJbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvZWxmcmVhZC5jCiAgICBhZGRfc3ltdGFiX2ZucyAoJmVsZl9zeW1f Zm5zKTsKICAKICAgIGVsZl9vYmpmaWxlX2dudV9pZnVuY19jYWNoZV9kYXRhID0gcmVnaXN0ZXJf b2JqZmlsZV9kYXRhICgpOwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2V2YWwuYwor SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2V2YWwuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvZXZhbC5jCTIwMTEtMDMtMjggMjI6MjE6MDMuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZXZhbC5jCTIwMTEtMDct MDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmln L2dkYi9ldmFsLmMJMjAxMS0wNi0xNyAyMjozNTowOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9ldmFsLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAg KzAyMDAKIEBAIC00NCw2ICs0NCw3IEBACiAgI2luY2x1ZGUgIm9iamZpbGVzLmgiCiAgI2luY2x1 ZGUgInB5dGhvbi9weXRob24uaCIKQEAgLTMyMjIsNyArMzE1NCw3IEBAIEluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi9ldmFsLmMKICAKICAgICAgY2FzZSBVTk9QX0FERFI6CiAgICAgICAg LyogQysrOiBjaGVjayBmb3IgYW5kIGhhbmRsZSBwb2ludGVyIHRvIG1lbWJlcnMuICAqLwotQEAg LTI5OTEsNyArMzE1MSw3IEBAIGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3Qg ZXgKK0BAIC0yOTg3LDcgKzMxNDcsNyBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAo c3RydWN0IGV4CiAgewogICAgZW51bSBleHBfb3Bjb2RlIG9wOwogICAgaW50IHBjOwpAQCAtMzIz MSw3ICszMTYzLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2V2YWwuYwogICAg c3RydWN0IHN5bWJvbCAqdmFyOwogICAgc3RydWN0IHR5cGUgKnR5cGU7CiAgCi1AQCAtMzAwMiwx MyArMzE2MiwxOCBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4CitA QCAtMjk5OCwxMyArMzE1OCwxOCBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3Ry dWN0IGV4CiAgICAgIHsKICAgICAgY2FzZSBPUF9WQVJfVkFMVUU6CiAgICAgICAgdmFyID0gZXhw LT5lbHRzW3BjICsgMl0uc3ltYm9sOwpAQCAtMzI1MSw3ICszMTgzLDcgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL2V2YWwuYwogIAkgIHJldHVybiB2YWx1ZV9jYXN0IChsb29rdXBf cG9pbnRlcl90eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSksCiAgCQkJICAgICB2YWwpOwog IAl9Ci1AQCAtMzA2MCw5ICszMjI1LDEzIEBAIGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6ZW9mIChz dHJ1Y3QgZXhwcmUKK0BAIC0zMDU2LDkgKzMyMjEsMTMgQEAgZXZhbHVhdGVfc3ViZXhwX2Zvcl9z aXplb2YgKHN0cnVjdCBleHByZQogIAogICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKICAgICAgICAo KnBvcykgKz0gNDsKQEAgLTMyNjgsNyArMzIwMCw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi9ldmFsLmMKICAKICAgICAgZGVmYXVsdDoKICAgICAgICB2YWwgPSBldmFsdWF0ZV9z dWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIEVWQUxfQVZPSURfU0lERV9FRkZFQ1RTKTsKLUBA IC0zMDkzLDE4ICszMjYyLDI1IEBAIHBhcnNlX2FuZF9ldmFsX3R5cGUgKGNoYXIgKnAsIGludCBs ZW5ndGgKK0BAIC0zMDg5LDE4ICszMjU4LDI1IEBAIHBhcnNlX2FuZF9ldmFsX3R5cGUgKGNoYXIg KnAsIGludCBsZW5ndGgKICBpbnQKICBjYWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlwZSAq YXJyYXlfdHlwZSkKICB7CkBAIC0zMzA0LDEwICszMjM2LDEwIEBAIEluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9ldmFsLmMKIC0gIHJldHVybiBuZGltZW47CiArCiAgfQotSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL2YtZXhwLnkKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9mLWV4cC55CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dk Yi9mLWV4cC55CTIwMTEtMDMtMTggMTQ6NTE6NDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvZi1leHAueQkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCAr MDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZi1leHAueQkyMDExLTA0LTE5 IDIwOjA0OjA3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Yt ZXhwLnkJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0yOTMsNyArMjkz LDkgQEAgYXJnbGlzdCA6CXN1YnJhbmdlCiAgCQkJeyBhcmdsaXN0X2xlbiA9IDE7IH0KICAJOwpA QCAtMzMxOSwxMCArMzI1MSwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZi1l eHAueQogIAkJCXsgYXJnbGlzdF9sZW4rKzsgfQogIAk7CiAgCi1JbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvZi1sYW5nLmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLWxh bmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvZi1sYW5n LmgJMjAxMS0wMS0wNyAyMDozNjoxNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi9mLWxhbmcuaAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAor LS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZi1sYW5nLmgJMjAxMS0wMS0wNyAyMDoz NjoxNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLWxhbmcu aAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTI4LDYgKzI4LDEwIEBA IGV4dGVybiB2b2lkIGZfZXJyb3IgKGNoYXIgKik7CS8qIERlZmluZWQKICBleHRlcm4gdm9pZCBm X3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICosIGNvbnN0IGNoYXIgKiwgc3RydWN0IHVpX2ZpbGUg KiwgaW50LAogIAkJCSAgaW50KTsKQEAgLTMzMzQsMTAgKzMyNjYsMTAgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL2YtbGFuZy5oCiAgZXh0ZXJuIGludCBmX3ZhbF9wcmludCAoc3Ry dWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwgaW50LCBDT1JFX0FERFIsCiAgCQkJc3RydWN0 IHVpX2ZpbGUgKiwgaW50LAogIAkJCWNvbnN0IHN0cnVjdCB2YWx1ZSAqLAotSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL2YtdHlwZXByaW50LmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9mLXR5cGVwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcw My5vcmlnL2dkYi9mLXR5cGVwcmludC5jCTIwMTEtMDEtMDcgMjA6MzY6MTYuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZi10eXBlcHJpbnQuYwkyMDExLTA3LTAz IDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9n ZGIvZi10eXBlcHJpbnQuYwkyMDExLTA2LTI5IDE3OjMyOjM5LjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2YtdHlwZXByaW50LmMJMjAxMS0wNy0yMiAyMDowNDoy MS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0zMiw3ICszMiw3IEBACiAgI2luY2x1ZGUgImdkYmNvcmUu aCIKICAjaW5jbHVkZSAidGFyZ2V0LmgiCkBAIC0zNDAyLDEwICszMzM0LDEwIEBAIEluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9mLXR5cGVwcmludC5jCiAgICBzd2l0Y2ggKFRZUEVfQ09E RSAodHlwZSkpCiAgICAgIHsKICAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6Ci1JbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvZi12YWxwcmludC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvZi12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcw My5vcmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMS0wMi0wNyAxODo0OTozMi4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9mLXZhbHByaW50LmMJMjAxMS0wNy0wMyAx MDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2Ri L2YtdmFscHJpbnQuYwkyMDExLTA2LTI5IDE3OjMyOjM5LjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2YtdmFscHJpbnQuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAw MDAwMDAwMCArMDIwMAogQEAgLTU0LDE1ICs1NCwxNyBAQCBpbnQgZjc3X2FycmF5X29mZnNldF90 YmxbTUFYX0ZPUlRSQU5fRElNCiAgLyogVGhlIGZvbGxvd2luZyBtYWNybyBnaXZlcyB1cyB0aGUg c2l6ZSBvZiB0aGUgbnRoIGRpbWVuc2lvbiwgV2hlcmUgCiAgICAgbiBpcyAxIGJhc2VkLiAgKi8K QEAgLTM1NDEsMTAgKzM0NzMsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2Yt dmFscHJpbnQuYwogICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7CiAgICBzd2l0Y2ggKFRZUEVfQ09E RSAodHlwZSkpCiAgICAgIHsKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9maW5kdmFy LmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9maW5kdmFyLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL2ZpbmR2YXIuYwkyMDExLTAzLTE4IDE5 OjQyOjQxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2ZpbmR2 YXIuYwkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAu MjAxMTA3MjIub3JpZy9nZGIvZmluZHZhci5jCTIwMTEtMDctMTIgMjM6MTY6NDguMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZmluZHZhci5jCTIwMTEtMDctMjIg MjA6MDU6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMzUsNiArMzUsNyBAQAogICNpbmNsdWRlICJ1 c2VyLXJlZ3MuaCIKICAjaW5jbHVkZSAiYmxvY2suaCIKQEAgLTM2NTUsNyArMzU4Nyw3IEBAIElu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9maW5kdmFyLmMKICAgICAgICB9CiAgICAgICAg YnJlYWs7CiAgCi1AQCAtNTg3LDYgKzU3NSwxMCBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5 bWJvbCAqdmFyLCBzdHJ1CitAQCAtNTg0LDYgKzU3MiwxMCBAQCByZWFkX3Zhcl92YWx1ZSAoc3Ry dWN0IHN5bWJvbCAqdmFyLCBzdHJ1CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAKQEAgLTM2NjYs NyArMzU5OCw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9maW5kdmFyLmMKICAg IFZBTFVFX0xWQUwgKHYpID0gbHZhbF9tZW1vcnk7CiAgICBzZXRfdmFsdWVfYWRkcmVzcyAodiwg YWRkcik7CiAgICByZXR1cm4gdjsKLUBAIC02MjYsMTEgKzYxOCwxMiBAQCBzdHJ1Y3QgdmFsdWUg KgorQEAgLTYyMywxMSArNjE1LDEyIEBAIHN0cnVjdCB2YWx1ZSAqCiAgdmFsdWVfZnJvbV9yZWdp c3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSkKICB7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChm cmFtZSk7CkBAIC0zNjgxLDcgKzM2MTMsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvZmluZHZhci5jCiAgICAgIHsKICAgICAgICAvKiBUaGUgSVNBL0FCSSBuZWVkIHRvIHNvbWV0 aGluZyB3ZWlyZCB3aGVuIG9idGFpbmluZyB0aGUKICAgICAgICAgICBzcGVjaWZpZWQgdmFsdWUg ZnJvbSB0aGlzIHJlZ2lzdGVyLiAgSXQgbWlnaHQgbmVlZCB0bwotQEAgLTY0Myw3ICs2MzYsNyBA QCB2YWx1ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgCitAQCAtNjQwLDcgKzYz Myw3IEBAIHZhbHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCAKICAgICAgICBW QUxVRV9MVkFMICh2KSA9IGx2YWxfcmVnaXN0ZXI7CiAgICAgICAgVkFMVUVfRlJBTUVfSUQgKHYp ID0gZ2V0X2ZyYW1lX2lkIChmcmFtZSk7CiAgICAgICAgVkFMVUVfUkVHTlVNICh2KSA9IHJlZ251 bTsKQEAgLTM2OTAsMTAgKzM2MjIsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2Ri L2ZpbmR2YXIuYwogIAkJCQkgICAgICB2YWx1ZV9jb250ZW50c19yYXcgKHYpLCAmb3B0aW0sCiAg CQkJCSAgICAgICZ1bmF2YWlsKTsKICAgICAgfQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL2dkYmluaXQuaW4KK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJpbml0Lmlu CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9nZGJpbml0Lmlu CTIwMDktMTAtMDUgMTU6NDY6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvZ2RiaW5pdC5pbgkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAor LS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZ2RiaW5pdC5pbgkyMDA5LTEwLTA1IDE1 OjQ2OjUyLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2dkYmlu aXQuaW4JMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0xLDUgKzEsMTUg QEAKICBlY2hvIFNldHRpbmcgdXAgdGhlIGVudmlyb25tZW50IGZvciBkZWJ1Z2dpbmcgZ2RiLlxu CiAgCkBAIC0zNzEwLDEwICszNjQyLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi9nZGJpbml0LmluCiAgc2V0IGNvbXBsYWludHMgMQogIAogIGIgaW50ZXJuYWxfZXJyb3IKLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9nZGJ0eXBlcy5jCitJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAx MTA3MDMub3JpZy9nZGIvZ2RidHlwZXMuYwkyMDExLTAzLTI4IDIyOjIxOjAzLjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2dkYnR5cGVzLmMJMjAxMS0wNy0wMyAx MDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2Ri L2dkYnR5cGVzLmMJMjAxMS0wNi0yNCAyMTo0NzozNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAw MDAwICswMjAwCiBAQCAtMzksNiArMzksOSBAQAogICNpbmNsdWRlICJjcC1hYmkuaCIKICAjaW5j bHVkZSAiZ2RiX2Fzc2VydC5oIgpAQCAtMzg1Niw3ICszNzg4LDcgQEAgSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL2dkYnR5cGVzLmMKICAKICAgIHJldHVybiByZXN1bHRfdHlwZTsKICB9 Ci1AQCAtMTQxMyw2ICsxNDY4LDEwNSBAQCBzdHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCitA QCAtMTQzOSw2ICsxNDk0LDEwNSBAQCBzdHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCiAgICBj b21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsIF8oInN0dWIgdHlwZSBoYXMgTlVMTCBuYW1l IikpOwogIH0KICAKQEAgLTM5NjIsNyArMzg5NCw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi9nZGJ0eXBlcy5jCiAgLyogRmluZCB0aGUgcmVhbCB0eXBlIG9mIFRZUEUuICBUaGlz IGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlYWwgdHlwZSwKICAgICBhZnRlciByZW1vdmluZyBhbGwg bGF5ZXJzIG9mIHR5cGVkZWZzLCBhbmQgY29tcGxldGluZyBvcGFxdWUgb3Igc3R1YgogICAgIHR5 cGVzLiAgQ29tcGxldGlvbiBjaGFuZ2VzIHRoZSBUWVBFIGFyZ3VtZW50LCBidXQgc3RyaXBwaW5n IG9mCi1AQCAtMTU3NSw1MiArMTcyOSwzNyBAQCBjaGVja190eXBlZGVmIChzdHJ1Y3QgdHlwZSAq dHlwZSkKK0BAIC0xNjAxLDUyICsxNzU1LDM3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBl ICp0eXBlKQogICAgICAgICAgfQogICAgICB9CiAgCkBAIC00MDM2LDcgKzM5NjgsNyBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuYwogIAkgIFRZUEVfVEFSR0VUX1NU VUIgKHR5cGUpID0gMDsKICAJfQogICAgICAgIGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0g VFlQRV9DT0RFX1JBTkdFKQotQEAgLTE2MjgsNiArMTc2Nyw3IEBAIGNoZWNrX3R5cGVkZWYgKHN0 cnVjdCB0eXBlICp0eXBlKQorQEAgLTE2NTQsNiArMTc5Myw3IEBAIGNoZWNrX3R5cGVkZWYgKHN0 cnVjdCB0eXBlICp0eXBlKQogIAkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IFRZUEVfTEVOR1RIICh0 YXJnZXRfdHlwZSk7CiAgCSAgVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgPSAwOwogIAl9CkBAIC00 MDQ0LDcgKzM5NzYsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMu YwogICAgICB9CiAgCiAgICB0eXBlID0gbWFrZV9xdWFsaWZpZWRfdHlwZSAodHlwZSwgaW5zdGFu Y2VfZmxhZ3MsIE5VTEwpOwotQEAgLTMyNjYsMzMgKzM0MDYsNDIgQEAgdHlwZV9wYWlyX2VxIChj b25zdCB2b2lkICppdGVtX2xocywgY29ucworQEAgLTMyOTIsMzMgKzM0MzIsNDIgQEAgdHlwZV9w YWlyX2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29ucwogIH0KICAKICAvKiBBbGxvY2F0ZSB0 aGUgaGFzaCB0YWJsZSB1c2VkIGJ5IGNvcHlfdHlwZV9yZWN1cnNpdmUgdG8gd2FsawpAQCAtNDEw Miw3ICs0MDM0LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2dkYnR5cGVzLmMK ICAgICAgcmV0dXJuIHR5cGU7CiAgCiAgICAvKiBUaGlzIHR5cGUgc2hvdWxkbid0IGJlIHBvaW50 aW5nIHRvIGFueSB0eXBlcyBpbiBvdGhlciBvYmpmaWxlczsKLUBAIC0zMzA3LDkgKzM0NTYsMTAg QEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iagorQEAgLTMzMzMsOSAr MzQ4MiwxMCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCiAgICBu ZXdfdHlwZSA9IGFsbG9jX3R5cGVfYXJjaCAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpOwogIAogICAg LyogV2UgbXVzdCBhZGQgdGhlIG5ldyB0eXBlIHRvIHRoZSBoYXNoIHRhYmxlIGltbWVkaWF0ZWx5 LCBpbiBjYXNlCkBAIC00MTE2LDcgKzQwNDgsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvZ2RidHlwZXMuYwogICAgc3RvcmVkLT5vbGQgPSB0eXBlOwogICAgc3RvcmVkLT5uZXcg PSBuZXdfdHlwZTsKICAgICpzbG90ID0gc3RvcmVkOwotQEAgLTMzMjAsNiArMzQ3MCwyMSBAQCBj b3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCitAQCAtMzM0Niw2ICszNDk2 LDIxIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmoKICAgIFRZUEVf T0JKRklMRV9PV05FRCAobmV3X3R5cGUpID0gMDsKICAgIFRZUEVfT1dORVIgKG5ld190eXBlKS5n ZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAodHlwZSk7CiAgCkBAIC00MTM4LDcgKzQwNzAsNyBAQCBJ bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuYwogICAgaWYgKFRZUEVfTkFN RSAodHlwZSkpCiAgICAgIFRZUEVfTkFNRSAobmV3X3R5cGUpID0geHN0cmR1cCAoVFlQRV9OQU1F ICh0eXBlKSk7CiAgICBpZiAoVFlQRV9UQUdfTkFNRSAodHlwZSkpCi1AQCAtMzMyOCwxMiArMzQ5 Myw0OCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCitAQCAtMzM1 NCwxMiArMzUxOSw0OCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq CiAgICBUWVBFX0lOU1RBTkNFX0ZMQUdTIChuZXdfdHlwZSkgPSBUWVBFX0lOU1RBTkNFX0ZMQUdT ICh0eXBlKTsKICAgIFRZUEVfTEVOR1RIIChuZXdfdHlwZSkgPSBUWVBFX0xFTkdUSCAodHlwZSk7 CiAgCkBAIC00MTg3LDcgKzQxMTksNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv Z2RidHlwZXMuYwogICAgICAgIFRZUEVfRklFTERTIChuZXdfdHlwZSkgPSBYQ0FMTE9DIChuZmll bGRzLCBzdHJ1Y3QgZmllbGQpOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZmllbGRzOyBpKysp CiAgCXsKLUBAIC0zMzQyLDggKzM1NDMsOCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqCitAQCAtMzM2OCw4ICszNTY5LDggQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAo c3RydWN0IG9iamZpbGUgKm9iagogIAkgIFRZUEVfRklFTERfQklUU0laRSAobmV3X3R5cGUsIGkp ID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlLCBpKTsKICAJICBpZiAoVFlQRV9GSUVMRF9UWVBF ICh0eXBlLCBpKSkKICAJICAgIFRZUEVfRklFTERfVFlQRSAobmV3X3R5cGUsIGkpCkBAIC00MTk4 LDcgKzQxMzAsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuYwog IAkgIGlmIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpKQogIAkgICAgVFlQRV9GSUVMRF9OQU1F IChuZXdfdHlwZSwgaSkgPSAKICAJICAgICAgeHN0cmR1cCAoVFlQRV9GSUVMRF9OQU1FICh0eXBl LCBpKSk7Ci1AQCAtMzM3MCwyNCArMzU3MSwxODQgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3Ry dWN0IG9iamZpbGUgKm9iagorQEAgLTMzOTYsMjQgKzM1OTcsMTg0IEBAIGNvcHlfdHlwZV9yZWN1 cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmoKICAJfQogICAgICB9CiAgCkBAIC00MzkwLDcgKzQz MjIsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuYwogICAgLyog TWF5YmUgY29weSB0aGUgdHlwZV9zcGVjaWZpYyBiaXRzLgogIAogICAgICAgTk9URSBkcm93LzIw MDUtMTItMDk6IFdlIGRvIG5vdCBjb3B5IHRoZSBDKystc3BlY2lmaWMgYml0cyBsaWtlCi1AQCAt MzQwNCw2ICszNzY1LDE3IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpv YmoKK0BAIC0zNDMwLDYgKzM3OTEsMTcgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9i amZpbGUgKm9iagogICAgcmV0dXJuIG5ld190eXBlOwogIH0KICAKQEAgLTQ0MDgsNyArNDM0MCw3 IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9nZGJ0eXBlcy5jCiAgLyogTWFrZSBh IGNvcHkgb2YgdGhlIGdpdmVuIFRZUEUsIGV4Y2VwdCB0aGF0IHRoZSBwb2ludGVyICYgcmVmZXJl bmNlCiAgICAgdHlwZXMgYXJlIG5vdCBwcmVzZXJ2ZWQuCiAgICAgCi1AQCAtMzQyNiw2ICszNzk4 LDIwMSBAQCBjb3B5X3R5cGUgKGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTM0NTIsNiAr MzgyNCwyMDEgQEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKICAgIHJldHVy biBuZXdfdHlwZTsKICB9CiAgCkBAIC00NjEwLDcgKzQ1NDIsNyBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuYwogIAogIC8qIEhlbHBlciBmdW5jdGlvbnMgdG8gaW5p dGlhbGl6ZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHlwZXMuICAqLwogIAotQEAgLTM5NTUsNiAr NDUyMiwxMyBAQCB2b2lkCitAQCAtMzk4NCw2ICs0NTUxLDEzIEBAIHZvaWQKICBfaW5pdGlhbGl6 ZV9nZGJ0eXBlcyAodm9pZCkKICB7CiAgICBnZGJ0eXBlc19kYXRhID0gZ2RiYXJjaF9kYXRhX3Jl Z2lzdGVyX3Bvc3RfaW5pdCAoZ2RidHlwZXNfcG9zdF9pbml0KTsKQEAgLTQ2MjQsMTAgKzQ1NTYs MTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2dkYnR5cGVzLmMKICAgIG9iamZp bGVfdHlwZV9kYXRhID0gcmVnaXN0ZXJfb2JqZmlsZV9kYXRhICgpOwogIAogICAgYWRkX3NldHNo b3dfemludGVnZXJfY21kICgib3ZlcmxvYWQiLCBub19jbGFzcywgJm92ZXJsb2FkX2RlYnVnLAot SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2dkYnR5cGVzLmgKK0luZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4y MDExMDcwMy5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMTEtMDMtMjggMjI6MjE6MDMuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuaAkyMDExLTA3LTAz IDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9n ZGIvZ2RidHlwZXMuaAkyMDExLTA3LTA1IDE1OjM2OjQxLjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2dkYnR5cGVzLmgJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAw MDAwMDAgKzAyMDAKIEBAIC0yMTUsNiArMjE1LDExIEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFn X3ZhbHVlCiAgCiAgI2RlZmluZSBUWVBFX1RBUkdFVF9TVFVCKHQpCShUWVBFX01BSU5fVFlQRSAo dCktPmZsYWdfdGFyZ2V0X3N0dWIpCkBAIC00NzY4LDcgKzQ3MDAsNyBAQCBJbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuaAogIAogICAgICAgIC8qIEZsYWdzIGluZGljYXRp bmcgd2hldGhlciB0aGUgdmFsdWVzIG9mIGxvdyBhbmQgaGlnaCBhcmUKICAgICAgICAgICB2YWxp ZC4gIFdoZW4gdHJ1ZSwgdGhlIHJlc3BlY3RpdmUgcmFuZ2UgdmFsdWUgaXMKLUBAIC05MjYsOSAr MTAxOSw5IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKK0BAIC05 MjksOSArMTAyMiw5IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUK ICAjZGVmaW5lIFRZUEVfUE9JTlRFUl9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5wb2ludGVy X3R5cGUKICAjZGVmaW5lIFRZUEVfUkVGRVJFTkNFX1RZUEUodGhpc3R5cGUpICh0aGlzdHlwZSkt PnJlZmVyZW5jZV90eXBlCiAgI2RlZmluZSBUWVBFX0NIQUlOKHRoaXN0eXBlKSAodGhpc3R5cGUp LT5jaGFpbgpAQCAtNDc4MSw3ICs0NzEzLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL2dkYnR5cGVzLmgKICAgICBjYWxscyBjaGVja190eXBlZGVmLCBUWVBFX0xFTkdUSCAoVkFM VUVfVFlQRSAoWCkpIGlzIHNhZmUuICAqLwogICNkZWZpbmUgVFlQRV9MRU5HVEgodGhpc3R5cGUp ICh0aGlzdHlwZSktPmxlbmd0aAogIC8qIE5vdGUgdGhhdCBUWVBFX0NPREUgY2FuIGJlIFRZUEVf Q09ERV9UWVBFREVGLCBzbyBpZiB5b3Ugd2FudCB0aGUgcmVhbAotQEAgLTkzNiwxMSArMTAyOSwx NiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CitAQCAtOTM5LDEx ICsxMDMyLDE2IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKICAj ZGVmaW5lIFRZUEVfQ09ERSh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT5jb2Rl CiAgI2RlZmluZSBUWVBFX05GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBl KS0+bmZpZWxkcwogICNkZWZpbmUgVFlQRV9GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBF KHRoaXN0eXBlKS0+Zmxkc19ibmRzLmZpZWxkcwpAQCAtNDgwMCw3ICs0NzMyLDcgQEAgSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2dkYnR5cGVzLmgKICAjZGVmaW5lIFRZUEVfTE9XX0JP VU5EX1VOREVGSU5FRChyYW5nZV90eXBlKSBcCiAgICAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5 cGUpLT5sb3dfdW5kZWZpbmVkCiAgI2RlZmluZSBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEKHJh bmdlX3R5cGUpIFwKLUBAIC05NTcsNyArMTA1NSwxNCBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9n bmF0X2F1eF90eXBlIChzdHJ1CitAQCAtOTYwLDcgKzEwNTgsMTQgQEAgZXh0ZXJuIHZvaWQgYWxs b2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQogICAgIChUWVBFX0hJR0hfQk9VTkQoVFlQRV9JTkRF WF9UWVBFKChhcnJheXR5cGUpKSkpCiAgCiAgI2RlZmluZSBUWVBFX0FSUkFZX0xPV0VSX0JPVU5E X1ZBTFVFKGFycmF5dHlwZSkgXApAQCAtNDgxNiw3ICs0NzQ4LDcgQEAgSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL2dkYnR5cGVzLmgKICAKICAvKiBDKysgKi8KICAKLUBAIC0xMzc5LDYg KzE0ODQsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAocworQEAg LTEzODUsNiArMTQ5MCwxOCBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9hcnJheV90eXBl IChzCiAgCQkJCSAgICAgICBzdHJ1Y3QgdHlwZSAqKTsKICBleHRlcm4gc3RydWN0IHR5cGUgKmxv b2t1cF9hcnJheV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGludCk7CiAgCkBAIC00 ODM1LDcgKzQ3NjcsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMu aAogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX3N0cmluZ190eXBlIChzdHJ1Y3QgdHlwZSAq LCBzdHJ1Y3QgdHlwZSAqLAogIAkJCQkJc3RydWN0IHR5cGUgKik7CiAgZXh0ZXJuIHN0cnVjdCB0 eXBlICpsb29rdXBfc3RyaW5nX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsK LUBAIC0xNDI0LDYgKzE1NDEsMTAgQEAgZXh0ZXJuIGludCBpc19wdWJsaWNfYW5jZXN0b3IgKHN0 cnVjdCB0eQorQEAgLTE0MzAsNiArMTU0NywxMCBAQCBleHRlcm4gaW50IGlzX3B1YmxpY19hbmNl c3RvciAoc3RydWN0IHR5CiAgCiAgZXh0ZXJuIGludCBpc191bmlxdWVfYW5jZXN0b3IgKHN0cnVj dCB0eXBlICosIHN0cnVjdCB2YWx1ZSAqKTsKICAKQEAgLTQ4NDYsNyArNDc3OCw3IEBAIEluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9nZGJ0eXBlcy5oCiAgLyogT3ZlcmxvYWQgcmVzb2x1 dGlvbiAqLwogIAogICNkZWZpbmUgTEVOR1RIX01BVENIKGJ2KSAoKGJ2KS0+cmFua1swXSkKLUBA IC0xNDk2LDEwICsxNjE3LDEzIEBAIGV4dGVybiB2b2lkIG1haW50ZW5hbmNlX3ByaW50X3R5cGUg KGNoYXIKK0BAIC0xNTAyLDEwICsxNjIzLDEzIEBAIGV4dGVybiB2b2lkIG1haW50ZW5hbmNlX3By aW50X3R5cGUgKGNoYXIKICAKICBleHRlcm4gaHRhYl90IGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFz aCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwogIApAQCAtNDg2MiwxMCArNDc5NCwxMCBAQCBJ bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvZ2RidHlwZXMuaAogKyNlbmRpZgogKwogICNl bmRpZiAvKiBHREJUWVBFU19IICovCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvaTM4 Ni1saW51eC1uYXQuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2kzODYtbGludXgt bmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL2kzODYt bGludXgtbmF0LmMJMjAxMS0wMi0yNyAxNzoyNTozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi9pMzg2LWxpbnV4LW5hdC5jCTIwMTEtMDctMDMgMTA6MzM6MTEu MDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9pMzg2LWxp bnV4LW5hdC5jCTIwMTEtMDItMjcgMTc6MjU6MzcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvaTM4Ni1saW51eC1uYXQuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAw MDAwMDAwMCArMDIwMAogQEAgLTY0OSwyMiArNjQ5LDEzIEBAIGkzODZfbGludXhfc3RvcmVfaW5m ZXJpb3JfcmVnaXN0ZXJzIChzdHIKICB9CiAgDApAQCAtNTA3MCwxMCArNTAwMiwxMCBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvaTM4Ni1saW51eC1uYXQuYwogIH0KICAMCiAgCi1J bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvaTM4Ni1uYXQuYworSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2kzODYtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIw MTEwNzAzLm9yaWcvZ2RiL2kzODYtbmF0LmMJMjAxMS0wMi0yNiAyMzowNDo1MS4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9pMzg2LW5hdC5jCTIwMTEtMDctMDMg MTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dk Yi9pMzg2LW5hdC5jCTIwMTEtMDItMjYgMjM6MDQ6NTEuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvaTM4Ni1uYXQuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAw MDAwMCArMDIwMAogQEAgLTI1LDYgKzI1LDcgQEAKICAjaW5jbHVkZSAiZ2RiY21kLmgiCiAgI2lu Y2x1ZGUgInRhcmdldC5oIgpAQCAtNTQyNSwxMCArNTM1NywxMCBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvaTM4Ni1uYXQuYwogIH0KICAKICB2b2lkCi1JbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvaTM4Ni1uYXQuaAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2kzODYtbmF0LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2Ri L2kzODYtbmF0LmgJMjAxMS0wMS0wOSAwNDowODo1Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi9pMzg2LW5hdC5oCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAw MDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9pMzg2LW5hdC5oCTIw MTEtMDEtMDkgMDQ6MDg6NTYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvaTM4Ni1uYXQuaAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAg LTc4LDYgKzc4LDI4IEBAIHN0cnVjdCBpMzg2X2RyX2xvd190eXBlIAogIAogIGV4dGVybiBzdHJ1 Y3QgaTM4Nl9kcl9sb3dfdHlwZSBpMzg2X2RyX2xvdzsKQEAgLTU0NTgsMjkgKzUzOTAsMjkgQEAg SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2kzODYtbmF0LmgKICAvKiBVc2UgdGhpcyBm dW5jdGlvbiB0byBzZXQgaTM4Nl9kcl9sb3cgZGVidWdfcmVnaXN0ZXJfbGVuZ3RoIGZpZWxkCiAg ICAgcmF0aGVyIHRoYW4gc2V0dGluZyBpdCBkaXJlY3RseSB0byBjaGVjayB0aGF0IHRoZSBsZW5n dGggaXMgb25seQogICAgIHNldCBvbmNlLiAgSXQgYWxzbyBlbmFibGVzIHRoZSAnbWFpbnQgc2V0 L3Nob3cgc2hvdy1kZWJ1Zy1yZWdzJyAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9p bmZydW4uYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2luZnJ1bi5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9pbmZydW4uYwkyMDExLTA2LTAz IDE3OjMyOjEzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2lu ZnJ1bi5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtNTQsNiArNTQs OCBAQAotICNpbmNsdWRlICJpbmxpbmUtZnJhbWUuaCIKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIy Lm9yaWcvZ2RiL2luZnJ1bi5jCTIwMTEtMDctMjIgMDE6NDY6MDkuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvaW5mcnVuLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4w MDAwMDAwMDAgKzAyMDAKK0BAIC01NSw2ICs1NSw4IEBACiAgI2luY2x1ZGUgImppdC5oIgogICNp bmNsdWRlICJ0cmFjZXBvaW50LmgiCisgI2luY2x1ZGUgImNvbnRpbnVhdGlvbnMuaCIKICsjaW5j bHVkZSAic3RhcC1wcm9iZS5oIgogKyNpbmNsdWRlICJvYmpmaWxlcy5oIgogIAogIC8qIFByb3Rv dHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucyAqLwogIAotQEAgLTIyNDcsNyArMjI0OSw3IEBAIHN0 YXRpYyB2b2lkIGluc2VydF9zdGVwX3Jlc3VtZV9icmVha3BvaW4KLSAJCQkJCQkgIHN0cnVjdCBm cmFtZV9pZCk7Ci0gc3RhdGljIHZvaWQgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQg KHN0cnVjdCBnZGJhcmNoICosIENPUkVfQUREUik7CitAQCAtMjM0MSw3ICsyMzQzLDcgQEAgc3Rh dGljIHZvaWQgaGFuZGxlX3N0ZXBfaW50b19mdW5jdGlvbiAocworIHN0YXRpYyB2b2lkIGhhbmRs ZV9zdGVwX2ludG9fZnVuY3Rpb25fYmFja3dhcmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAor IAkJCQkJCXN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKTsKICBzdGF0aWMgdm9p ZCBjaGVja19leGNlcHRpb25fcmVzdW1lIChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUg KiwKIC0JCQkJICAgIHN0cnVjdCBmcmFtZV9pbmZvICosIHN0cnVjdCBzeW1ib2wgKik7CiArCQkJ CSAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqKTsKICAKICBzdGF0aWMgdm9pZCBzdG9wX3N0ZXBwaW5n IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcyk7CiAgc3RhdGljIHZvaWQgcHJl cGFyZV90b193YWl0IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcyk7Ci1AQCAt NDE2OSw5ICs0MTcxLDE3IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgorQEAgLTQyODUsOSAr NDI4NywxNyBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoKICAKICAJaWYgKHdoYXQuaXNfbG9u Z2ptcCkKICAJICB7CkBAIC01NTAxLDcgKzU0MzMsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvaW5mcnVuLmMKICAJICAgICAgewogIAkJaWYgKGRlYnVnX2luZnJ1bikKICAJCSAg ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotQEAgLTQxODksMTIgKzQxOTksNyBAQCBw cm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoKK0BAIC00MzA1LDEyICs0MzE1LDcgQEAgcHJvY2Vzc19l dmVudF9zdG9wX3Rlc3Q6CiAgCSAgICBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAo Z2RiYXJjaCwgam1wX2J1Zl9wYyk7CiAgCSAgfQogIAllbHNlCkBAIC01NTE1LDcgKzU0NDcsNyBA QCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvaW5mcnVuLmMKICAJa2VlcF9nb2luZyAo ZWNzKTsKICAJcmV0dXJuOwogIAotQEAgLTUyNjgsMTUgKzUyNzMsNjUgQEAgaW5zZXJ0X2V4Y2Vw dGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoc3RydQorQEAgLTU0MjMsMTUgKzU0MjgsNjUgQEAgaW5z ZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoc3RydQogICAgICB9CiAgfQogIApAQCAt NTU4Miw3ICs1NTE0LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2luZnJ1bi5j CiAgCiAgICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0VSUk9SKQogICAgICB7Ci1AQCAtNjI1 OCw3ICs2MzEzLDggQEAgc3RhdGljIHN0cnVjdCBsdmFsX2Z1bmNzIHNpZ2luZm9fdmFsdWVfZgor QEAgLTY0MzQsNyArNjQ4OSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbHZhbF9mdW5jcyBzaWdp bmZvX3YKICAgICBpZiB0aGVyZSdzIG5vIG9iamVjdCBhdmFpbGFibGUuICAqLwogIAogIHN0YXRp YyBzdHJ1Y3QgdmFsdWUgKgpAQCAtNTU5Miw3ICs1NTI0LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL2luZnJ1bi5jCiAgewogICAgaWYgKHRhcmdldF9oYXNfc3RhY2sKICAgICAg ICAmJiAhcHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgbnVsbF9wdGlkKQotQEAgLTY4MjYsNiAr Njg4MiwxNSBAQCBzaG93X3NjaGVkdWxlX211bHRpcGxlIChzdHJ1Y3QgdWlfZmlsZSAqCitAQCAt NjkyOSw2ICs2OTg1LDE1IEBAIHNob3dfc2NoZWR1bGVfbXVsdGlwbGUgKHN0cnVjdCB1aV9maWxl ICoKICAJCQkgICAgIm9mIGFsbCBwcm9jZXNzZXMgaXMgJXMuXG4iKSwgdmFsdWUpOwogIH0KICAK QEAgLTU2MDgsNyArNTU0MCw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9pbmZy dW4uYwogIHZvaWQKICBfaW5pdGlhbGl6ZV9pbmZydW4gKHZvaWQpCiAgewotQEAgLTcwOTgsNyAr NzE2Myw3IEBAIFRlbGxzIGdkYiB3aGV0aGVyIHRvIGRldGFjaCB0aGUgY2hpbGQgb2YKK0BAIC03 MjA0LDcgKzcyNjksNyBAQCBUZWxscyBnZGIgd2hldGhlciB0byBkZXRhY2ggdGhlIGNoaWxkIG9m CiAgICAgICB2YWx1ZSB3aXRoIGEgdm9pZCB0eXBlZCB2YWx1ZSwgYW5kIHdoZW4gd2UgZ2V0IGhl cmUsIGdkYmFyY2gKICAgICAgIGlzbid0IGluaXRpYWxpemVkIHlldC4gIEF0IHRoaXMgcG9pbnQs IHdlJ3JlIHF1aXRlIHN1cmUgdGhlcmUKICAgICAgIGlzbid0IGFub3RoZXIgY29udmVuaWVuY2Ug dmFyaWFibGUgb2YgdGhlIHNhbWUgbmFtZS4gICovCkBAIC01NjE3LDE5ICs1NTQ5LDE5IEBAIElu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9pbmZydW4uYwogIAogICAgYWRkX3NldHNob3df Ym9vbGVhbl9jbWQgKCJvYnNlcnZlciIsIG5vX2NsYXNzLAogIAkJCSAgICZvYnNlcnZlcl9tb2Rl XzEsIF8oIlwKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9saW5lc3BlYy5jCitJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbGluZXNwZWMuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvbGluZXNwZWMuYwkyMDExLTA3LTAyIDIyOjEzOjA4 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2xpbmVzcGVjLmMJ MjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEw NzIyLm9yaWcvZ2RiL2xpbmVzcGVjLmMJMjAxMS0wNy0wNSAyMjozMDoxOS4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9saW5lc3BlYy5jCTIwMTEtMDctMjIgMjA6 MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtNDMsNiArNDMsNyBAQAogICNpbmNsdWRlICJhcmNo LXV0aWxzLmgiCiAgI2luY2x1ZGUgPGN0eXBlLmg+CiAgI2luY2x1ZGUgImNsaS9jbGktdXRpbHMu aCIKICsjaW5jbHVkZSAic3RhcC1wcm9iZS5oIgogIAotIC8qIFdlIHNoYXJlIHRoaXMgb25lIHdp dGggc3ltdGFiLmMsIGJ1dCBpdCBpcyBub3QgZXhwb3J0ZWQgd2lkZWx5LiAgKi8KKyAvKiBQcm90 b3R5cGVzIGZvciBsb2NhbCBmdW5jdGlvbnMuICAqLwogIAotQEAgLTc4Niw2ICs3ODcsNyBAQCBr ZWVwX25hbWVfaW5mbyAoY2hhciAqcCwgaW50IG9uX2JvdW5kYXJ5CitAQCAtNzgzLDYgKzc4NCw3 IEBAIGtlZXBfbmFtZV9pbmZvIChjaGFyICpwLCBpbnQgb25fYm91bmRhcnkKICAgICBQQyByZXR1 cm5lZCBpcyAwLgogICAgIEZJTEU6RlVOQ1RJT04gLS0gbGlrZXdpc2UsIGJ1dCBwcmVmZXIgZnVu Y3Rpb25zIGluIHRoYXQgZmlsZS4KICAgICAqRVhQUiAtLSBsaW5lIGluIHdoaWNoIGFkZHJlc3Mg RVhQUiBhcHBlYXJzLgpAQCAtNTYzNyw3ICs1NTY5LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL2xpbmVzcGVjLmMKICAKICAgICBUaGlzIG1heSBhbGwgYmUgZm9sbG93ZWQgYnkg YW4gImlmIEVYUFIiLCB3aGljaCB3ZSBpZ25vcmUuCiAgCi1AQCAtODU0LDYgKzg1Niw5IEBAIGRl Y29kZV9saW5lXzEgKGNoYXIgKiphcmdwdHIsIGludCBmdW5maXIKK0BAIC04NTEsNiArODUzLDkg QEAgZGVjb2RlX2xpbmVfMSAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmZpcgogICAgaWYgKCoqYXJn cHRyID09ICcqJykKICAgICAgcmV0dXJuIGRlY29kZV9pbmRpcmVjdCAoYXJncHRyKTsKICAKQEAg LTU2NDcsMTAgKzU1NzksMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2xpbmVz cGVjLmMKICAgIGlzX3F1b3RlZCA9IChzdHJjaHIgKGdldF9nZGJfY29tcGxldGVyX3F1b3RlX2No YXJhY3RlcnMgKCksCiAgCQkgICAgICAgKiphcmdwdHIpICE9IE5VTEwpOwogIAotSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL2xpbmVzcGVjLmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9saW5lc3BlYy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5v cmlnL2dkYi9saW5lc3BlYy5oCTIwMTEtMDctMDIgMjE6MzM6MDkuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvbGluZXNwZWMuaAkyMDExLTA3LTAzIDEwOjMzOjEx LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvbGluZXNw ZWMuaAkyMDExLTA0LTA0IDE5OjQxOjA3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2xpbmVzcGVjLmgJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAy MDAKIEBAIC0zMCw2ICszMCwxMCBAQCBzdHJ1Y3QgbGluZXNwZWNfcmVzdWx0CiAgICAgICBkaXNw bGF5IG1lY2hhbmlzbSB3b3VsZCBkbyB0aGUgd3JvbmcgdGhpbmcuICAqLwogICAgaW50IHNwZWNp YWxfZGlzcGxheTsKQEAgLTU2NjIsMTEgKzU1OTQsMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL2xpbmVzcGVjLmgKICAgIC8qIElmIG5vbi1OVUxMLCBhbiBhcnJheSBvZiBjYW5v bmljYWwgbmFtZXMgZm9yIHJldHVybmVkCiAgICAgICBzeW10YWJfYW5kX2xpbmUgb2JqZWN0cy4g IFRoZSBhcnJheSBoYXMgYXMgbWFueSBlbGVtZW50cyBhcyB0aGUKICAgICAgIGBuZWx0cycgZmll bGQgaW4gdGhlIHN5bXRhYnNfYW5kX2xpbmUgcmV0dXJuZWQgYnkgZGVjb2RlX2xpbmVfMS4KLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9saW51eC1uYXQuYworSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2xpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4y MDExMDcwMy5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDExLTA0LTI5IDE4OjAyOjEwLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2xpbnV4LW5hdC5jCTIwMTEtMDct MDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTI3Miw2ICsxMjcyLDY0IEBAIGl0ZXJh dGVfb3Zlcl9sd3BzIChwdGlkX3QgZmlsdGVyLAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3Jp Zy9nZGIvbGludXgtbmF0LmMJMjAxMS0wNy0yMiAwMTo0NjowOS4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9saW51eC1uYXQuYwkyMDExLTA3LTIyIDIwOjA0OjIx LjAwMDAwMDAwMCArMDIwMAorQEAgLTEyNDEsNiArMTI0MSw2NCBAQCBpdGVyYXRlX292ZXJfbHdw cyAocHRpZF90IGZpbHRlciwKICAgIHJldHVybiBOVUxMOwogIH0KICAKQEAgLTU3MzEsMTAgKzU2 NjMsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2xpbnV4LW5hdC5jCiAgLyog VXBkYXRlIG91ciBpbnRlcm5hbCBzdGF0ZSB3aGVuIGNoYW5naW5nIGZyb20gb25lIGNoZWNrcG9p bnQgdG8KICAgICBhbm90aGVyIGluZGljYXRlZCBieSBORVdfUFRJRC4gIFdlIGNhbiBvbmx5IHN3 aXRjaCBzaW5nbGUtdGhyZWFkZWQKICAgICBhcHBsaWNhdGlvbnMsIHNvIHdlIG9ubHkgY3JlYXRl IG9uZSBuZXcgTFdQLCBhbmQgdGhlIHByZXZpb3VzIGxpc3QKLUluZGV4OiBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi9saW51eC1uYXQuaAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2xp bnV4LW5hdC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9s aW51eC1uYXQuaAkyMDExLTAxLTA1IDIzOjIyOjQ5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL2xpbnV4LW5hdC5oCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAw MDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9saW51eC1uYXQuaAky MDExLTAxLTA1IDIzOjIyOjQ5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2xpbnV4LW5hdC5oCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBA QCAtMTQwLDYgKzE0MCwxMSBAQCBzdHJ1Y3QgbHdwX2luZm8gKml0ZXJhdGVfb3Zlcl9sd3BzIChw dGlkCiAgCQkJCQkJICAgICB2b2lkICopLCAKICAJCQkJICAgIHZvaWQgKmRhdGEpOwpAQCAtNTc0 NywxMSArNTY3OSwxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvbGludXgtbmF0 LmgKICAvKiBDcmVhdGUgYSBwcm90b3R5cGUgZ2VuZXJpYyBHTlUvTGludXggdGFyZ2V0LiAgVGhl IGNsaWVudCBjYW4KICAgICBvdmVycmlkZSBpdCB3aXRoIGxvY2FsIG1ldGhvZHMuICAqLwogIHN0 cnVjdCB0YXJnZXRfb3BzICogbGludXhfdGFyZ2V0ICh2b2lkKTsKLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9tYWNob3JlYWQuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L21hY2hvcmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dk Yi9tYWNob3JlYWQuYwkyMDExLTAzLTA3IDE3OjE3OjI5LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL21hY2hvcmVhZC5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAw MDAwMDAwICswMjAwCi1AQCAtODQ5LDYgKzg0OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3lt X2ZucyBtYWNob19zeW1fZm4KKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL21hY2hv cmVhZC5jCTIwMTEtMDctMDEgMjA6MzY6NDUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvbWFjaG9yZWFkLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAg KzAyMDAKK0BAIC04NDIsNiArODQyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIG1h Y2hvX3N5bV9mbgogICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBHZXQgc2VnbWVudCBp bmZvcm1hdGlvbiBmcm9tIGEgZmlsZS4gICovCiAgICBOVUxMLAogICAgbWFjaG9fc3ltZmlsZV9y ZWxvY2F0ZSwJLyogUmVsb2NhdGUgYSBkZWJ1ZyBzZWN0aW9uLiAgKi8KQEAgLTU3NTksMTAgKzU2 OTEsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL21hY2hvcmVhZC5jCiAgICAm cHN5bV9mdW5jdGlvbnMKICB9OwogIAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL21h aW4uYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL21haW4uYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvbWFpbi5jCTIwMTEtMDMtMDcgMTk6MzQ6 MzEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvbWFpbi5jCTIw MTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcy Mi5vcmlnL2dkYi9tYWluLmMJMjAxMS0wNi0xMyAxMjo1NToyNi4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9tYWluLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAw MDAwMDAgKzAyMDAKIEBAIC0zOSw2ICszOSw3IEBACiAgCiAgI2luY2x1ZGUgImludGVycHMuaCIK QEAgLTU3NzEsNyArNTcwMyw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9tYWlu LmMKICAjaW5jbHVkZSAic291cmNlLmgiCiAgI2luY2x1ZGUgImNsaS9jbGktY21kcy5oIgogICNp bmNsdWRlICJweXRob24vcHl0aG9uLmgiCi1AQCAtMjYwLDYgKzI2MSw4IEBAIGNhcHR1cmVkX21h aW4gKHZvaWQgKmRhdGEpCitAQCAtMjYyLDYgKzI2Myw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQg KmRhdGEpCiAgICBjaGFyICpjZGFyZyA9IE5VTEw7CiAgICBjaGFyICp0dHlhcmcgPSBOVUxMOwog IApAQCAtNTc4MCw3ICs1NzEyLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL21h aW4uYwogICAgLyogVGhlc2UgYXJlIHN0YXRpYyBzbyB0aGF0IHdlIGNhbiB0YWtlIHRoZWlyIGFk ZHJlc3MgaW4gYW4KICAgICAgIGluaXRpYWxpemVyLiAgKi8KICAgIHN0YXRpYyBpbnQgcHJpbnRf aGVscDsKLUBAIC00NTEsMTAgKzQ1NCwxNCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQor QEAgLTQ1MiwxMCArNDU1LDE0IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICAgICAg eyJhcmdzIiwgbm9fYXJndW1lbnQsICZzZXRfYXJncywgMX0sCiAgICAgICAgeyJsIiwgcmVxdWly ZWRfYXJndW1lbnQsIDAsICdsJ30sCiAgICAgICAgeyJyZXR1cm4tY2hpbGQtcmVzdWx0Iiwgbm9f YXJndW1lbnQsICZyZXR1cm5fY2hpbGRfcmVzdWx0LCAxfSwKQEAgLTU3OTYsNyArNTcyOCw3IEBA IEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9tYWluLmMKICAgICAgICB7CiAgCWludCBv cHRpb25faW5kZXg7CiAgCi1AQCAtNDcyLDYgKzQ3OSw5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQg KmRhdGEpCitAQCAtNDczLDYgKzQ4MCw5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAg CSAgY2FzZSAwOgogIAkgICAgLyogTG9uZyBvcHRpb24gdGhhdCBqdXN0IHNldHMgYSBmbGFnLiAg Ki8KICAJICAgIGJyZWFrOwpAQCAtNTgwNiw3ICs1NzM4LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL21haW4uYwogIAkgIGNhc2UgT1BUX1NFOgogIAkgICAgc3ltYXJnID0gb3B0 YXJnOwogIAkgICAgZXhlY2FyZyA9IG9wdGFyZzsKLUBAIC02NjcsNyArNjc3LDMxIEBAIGNhcHR1 cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtNjY4LDcgKzY3OCwzMSBAQCBjYXB0dXJlZF9tYWlu ICh2b2lkICpkYXRhKQogIAogICAgLyogTm93IHRoYXQgZ2RiX2luaXQgaGFzIGNyZWF0ZWQgdGhl IGluaXRpYWwgaW5mZXJpb3IsIHdlJ3JlIGluCiAgICAgICBwb3NpdGlvbiB0byBzZXQgYXJncyBm b3IgdGhhdCBpbmZlcmlvci4gICovCkBAIC01ODM5LDcgKzU3NzEsNyBAQCBJbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvbWFpbi5jCiAgICAgIHsKICAgICAgICAvKiBUaGUgcmVtYWluaW5n IG9wdGlvbnMgYXJlIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucyBmb3IgdGhlCiAgCSBpbmZlcmlv ci4gIFRoZSBmaXJzdCBvbmUgaXMgdGhlIHN5bS9leGVjIGZpbGUsIGFuZCB0aGUgcmVzdAotQEAg LTkxNiw3ICs5NTAsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorQEAgLTkxNyw3ICs5 NTEsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogIAogICAgLyogUmVhZCBpbiB0aGUg b2xkIGhpc3RvcnkgYWZ0ZXIgYWxsIHRoZSBjb21tYW5kIGZpbGVzIGhhdmUgYmVlbgogICAgICAg cmVhZC4gICovCkBAIC01ODQ5LDcgKzU3ODEsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvbWFpbi5jCiAgCiAgICBpZiAoYmF0Y2hfZmxhZykKICAgICAgewotQEAgLTkyNywxMyAr OTYyLDI1IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtOTI4LDEzICs5NjMsMjUg QEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgIC8qIFNob3cgdGltZSBhbmQvb3Igc3Bh Y2UgdXNhZ2UuICAqLwogICAgZG9fY2xlYW51cHMgKHByZV9zdGF0X2NoYWluKTsKICAKQEAgLTU4 ODEsNyArNTgxMyw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9tYWluLmMKICAg ICAgfQogICAgLyogTm8gZXhpdCAtLSBleGl0IGlzIHRocm91Z2ggcXVpdF9jb21tYW5kLiAgKi8K ICB9Ci1AQCAtOTY1LDcgKzEwMTIsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9maWxl ICpzdHJlYW0pCitAQCAtOTY2LDcgKzEwMTMsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1 aV9maWxlICpzdHJlYW0pCiAgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCiAgVGhpcyBpcyB0aGUg R05VIGRlYnVnZ2VyLiAgVXNhZ2U6XG5cblwKICAgICAgZ2RiIFtvcHRpb25zXSBbZXhlY3V0YWJs ZS1maWxlIFtjb3JlLWZpbGUgb3IgcHJvY2Vzcy1pZF1dXG5cCkBAIC01ODk1LDcgKzU4MjcsNyBA QCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvbWFpbi5jCiAgT3B0aW9uczpcblxuXAog ICIpLCBzdHJlYW0pOwogICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotQEAgLTEwMDMsNyArMTA1 NSwxMyBAQCBPcHRpb25zOlxuXG5cCitAQCAtMTAwNCw3ICsxMDU2LDEzIEBAIE9wdGlvbnM6XG5c blwKICAgIC0tbncJCSAgICAgRG8gbm90IHVzZSBhIHdpbmRvdyBpbnRlcmZhY2UuXG5cCiAgICAt LW54ICAgICAgICAgICAgICAgRG8gbm90IHJlYWQgIiksIHN0cmVhbSk7CiAgICBmcHV0c191bmZp bHRlcmVkIChnZGJpbml0LCBzdHJlYW0pOwpAQCAtNTkxMCwxMCArNTg0MiwxMCBAQCBJbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvbWFpbi5jCiAgICAtLXF1aWV0ICAgICAgICAgICAgRG8g bm90IHByaW50IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAtLXJlYWRub3cgICAg ICAgICAgRnVsbHkgcmVhZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXAogICIpLCBz dHJlYW0pOwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL21pL21pLWNtZC12YXIuYwor SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL21pL21pLWNtZC12YXIuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvbWkvbWktY21kLXZhci5jCTIwMTEt MDEtMTIgMjI6MDk6MzkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvbWkvbWktY21kLXZhci5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCist LS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9taS9taS1jbWQtdmFyLmMJMjAxMS0wNi0y NyAyMToyMTo1MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9t aS9taS1jbWQtdmFyLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC03 MDcsNyArNzA3LDYgQEAgbWlfY21kX3Zhcl91cGRhdGUgKGNoYXIgKmNvbW1hbmQsIGNoYXIgKgog ICAgICB9CiAgICBlbHNlCkBAIC01OTIyLDEwICs1ODU0LDEwIEBAIEluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9taS9taS1jbWQtdmFyLmMKICAgICAgICBzdHJ1Y3QgdmFyb2JqICp2YXIg PSB2YXJvYmpfZ2V0X2hhbmRsZSAobmFtZSk7CiAgCiAgICAgICAgdmFyb2JqX3VwZGF0ZV9vbmUg KHZhciwgcHJpbnRfdmFsdWVzLCAxIC8qIGV4cGxpY2l0ICovKTsKLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9taXBzcmVhZC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv bWlwc3JlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIv bWlwc3JlYWQuYwkyMDExLTAzLTA3IDE3OjE3OjI5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL21pcHNyZWFkLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAw MDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL21pcHNyZWFkLmMJMjAx MS0wNC0xOSAyMDowNDowNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9taXBzcmVhZC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAt NDAyLDYgKzQwMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBlY29mZl9zeW1fZm4K ICAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50cywJLyogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24g ZnJvbSBhIGZpbGUuICAqLwogICAgTlVMTCwKQEAgLTU5MzQsMTEgKzU4NjYsMTEgQEAgSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL21pcHNyZWFkLmMKICAgICZwc3ltX2Z1bmN0aW9ucwog IH07CiAgCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvb2JqZmlsZXMuYworSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL29iamZpbGVzLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL29iamZpbGVzLmMJMjAxMS0wNC0yNSAyMzoyNToxOC4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9vYmpmaWxlcy5jCTIw MTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtODQ2LDYgKzg0NiwxMSBAQCBv YmpmaWxlX3JlbG9jYXRlMSAoc3RydWN0IG9iamZpbGUgKm9iamZpCistLS0gZ2RiLTcuMy41MC4y MDExMDcyMi5vcmlnL2dkYi9vYmpmaWxlcy5jCTIwMTEtMDYtMTQgMTg6NDk6NDEuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvb2JqZmlsZXMuYwkyMDExLTA3LTIy IDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAorQEAgLTg0Miw2ICs4NDIsMTEgQEAgb2JqZmlsZV9y ZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQogIAkJCQlvYmpfc2VjdGlvbl9hZGRyIChz KSk7CiAgICAgIH0KICAKQEAgLTU5NTAsMTAgKzU4ODIsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL29iamZpbGVzLmMKICAgIC8qIERhdGEgY2hhbmdlZC4gICovCiAgICByZXR1 cm4gMTsKICB9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcC12YWxwcmludC5jCitJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcC12YWxwcmludC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9wLXZhbHByaW50LmMJMjAxMS0wMy0xNSAx NzowMDo1Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9wLXZh bHByaW50LmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4z LjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3AtdmFscHJpbnQuYwkyMDExLTAzLTE1IDE3OjAwOjU2LjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3AtdmFscHJpbnQuYwky MDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTM5LDYgKzM5LDcgQEAKICAj aW5jbHVkZSAiY3AtYWJpLmgiCiAgI2luY2x1ZGUgImNwLXN1cHBvcnQuaCIKQEAgLTYwMzAsMTEg KzU5NjIsMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3AtdmFscHJpbnQuYwog ICAgcmV0dXJuICgwKTsKICB9CiAgDAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Bh cnNlLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wYXJzZS5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9wYXJzZS5jCTIwMTEtMDMtMjggMjI6 MjE6MDMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcGFyc2Uu YwkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAotQEAgLTE1MDIsNiArMTUwMiw3 IEBAIHBhcnNlcl9mcHJpbnRmIChGSUxFICp4LCBjb25zdCBjaGFyICp5LCAKKy0tLSBnZGItNy4z LjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3BhcnNlLmMJMjAxMS0wNi0xNyAyMjoyNDoyMi4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wYXJzZS5jCTIwMTEtMDctMjIg MjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtMTUwMSw2ICsxNTAxLDcgQEAgcGFyc2VyX2Zw cmludGYgKEZJTEUgKngsIGNvbnN0IGNoYXIgKnksIAogIAogIGludAogIG9wZXJhdG9yX2NoZWNr X3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLApAQCAtNjA0Miw3ICs1 OTc0LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3BhcnNlLmMKICAJCQkgaW50 ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCQkJCQkgICAgICB2 b2lkICpkYXRhKSwKICAJCQkgdm9pZCAqZGF0YSkKLUBAIC0xNTQzLDcgKzE1NDQsNyBAQCBvcGVy YXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3NpCitAQCAtMTU0Miw3ICsxNTQzLDcg QEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaQogIAkgICAgc3RydWN0 IHR5cGUgKnR5cGUgPSBlbHRzW3BvcyArIDIgKyBhcmddLnR5cGU7CiAgCSAgICBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZSk7CiAgCkBAIC02MDUxLDcgKzU5ODMs NyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcGFyc2UuYwogIAkgICAgICByZXR1 cm4gMTsKICAJICB9CiAgICAgICAgfQotQEAgLTE1NjEsNyArMTU2Miw4IEBAIG9wZXJhdG9yX2No ZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2kKK0BAIC0xNTYwLDcgKzE1NjEsOCBAQCBvcGVy YXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3NpCiAgCiAgCS8qIENoZWNrIG9iamZp bGUgd2hlcmUgdGhlIHZhcmlhYmxlIGl0c2VsZiBpcyBwbGFjZWQuCiAgCSAgIFNZTUJPTF9PQkpf U0VDVElPTiAoc3ltYm9sKSBtYXkgYmUgTlVMTC4gICovCkBAIC02MDYxLDcgKzU5OTMsNyBAQCBJ bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcGFyc2UuYwogIAkgIHJldHVybiAxOwogIAog IAkvKiBDaGVjayBvYmpmaWxlIHdoZXJlIGlzIHBsYWNlZCB0aGUgY29kZSB0b3VjaGluZyB0aGUg dmFyaWFibGUuICAqLwotQEAgLTE1NzQsMjQgKzE1NzYsMjcgQEAgb3BlcmF0b3JfY2hlY2tfc3Rh bmRhcmQgKHN0cnVjdCBleHByZXNzaQorQEAgLTE1NzMsMjQgKzE1NzUsMjcgQEAgb3BlcmF0b3Jf Y2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaQogIAogICAgLyogSW52b2tlIGNhbGxiYWNr cyBmb3IgVFlQRSBhbmQgT0JKRklMRSBpZiB0aGV5IHdlcmUgc2V0IGFzIG5vbi1OVUxMLiAgKi8K ICAKQEAgLTYwOTcsNyArNjAyOSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9w YXJzZS5jCiAgCSAgICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIHZvaWQgKmRhdGEpLAogIAkgICAgIHZvaWQgKmRhdGEpCiAgewotQEAgLTE2MDYsNyArMTYx MSw5IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorQEAgLTE2MDUsNyAr MTYxMCw5IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAogIAogICAgICAg IHBvcyA9IGVuZHBvcyAtIG9wbGVuOwogICAgICAgIGlmIChleHAtPmxhbmd1YWdlX2RlZm4tPmxh X2V4cF9kZXNjLT5vcGVyYXRvcl9jaGVjayAoZXhwLCBwb3MsCkBAIC02MTA4LDcgKzYwNDAsNyBA QCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcGFyc2UuYwogIAlyZXR1cm4gMTsKICAK ICAgICAgICBlbmRwb3MgPSBwb3M7Ci1AQCAtMTYzNyw4ICsxNjQ0LDI5IEBAIGV4cF91c2VzX29i amZpbGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAKK0BAIC0xNjM2LDggKzE2NDMsMjkgQEAgZXhw X3VzZXNfb2JqZmlsZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cAogIHsKICAgIGdkYl9hc3NlcnQg KG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsgPT0gTlVMTCk7CiAgCkBA IC02MTM5LDEwICs2MDcxLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9wYXJz ZS5jCiAgCiAgdm9pZAogIF9pbml0aWFsaXplX3BhcnNlICh2b2lkKQotSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL3BhcnNlci1kZWZzLmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9wYXJzZXItZGVmcy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5v cmlnL2dkYi9wYXJzZXItZGVmcy5oCTIwMTEtMDEtMTAgMjE6Mzg6NDkuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcGFyc2VyLWRlZnMuaAkyMDExLTA3LTAzIDEw OjMzOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIv cGFyc2VyLWRlZnMuaAkyMDExLTAxLTEwIDIxOjM4OjQ5LjAwMDAwMDAwMCArMDEwMAorKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3BhcnNlci1kZWZzLmgJMjAxMS0wNy0yMiAyMDowNDoyMS4w MDAwMDAwMDAgKzAyMDAKIEBAIC0xOTQsNiArMTk0LDggQEAgZXh0ZXJuIHZvaWQgb3BlcmF0b3Jf bGVuZ3RoX3N0YW5kYXJkIChjbwogIAkJCQkgICAgICBpbnQgKik7CiAgCkBAIC02MTcxLDEyICs2 MTAzLDEyIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9wYXJzZXItZGVmcy5oCiAr I2VuZGlmCiArCiAgI2VuZGlmIC8qIFBBUlNFUl9ERUZTX0ggKi8KLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9wcGMtbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9wcGMtbGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAz Lm9yaWcvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDExLTA0LTE4IDIzOjI5OjE4LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDExLTA3 LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAotQEAgLTE2MzcsNiArMTYzNywxNCBAQCBib29r ZV9yZW1vdmVfcG9pbnQgKHN0cnVjdCBwcGNfaHdfYnJlYWtwCi0gICBod19icmVha3NbaV0uaHdf YnJlYWsgPSBOVUxMOworLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvcHBjLWxpbnV4 LW5hdC5jCTIwMTEtMDUtMDYgMjA6NDY6MzEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAw MDAwICswMjAwCitAQCAtMTY0Nyw2ICsxNjQ3LDE0IEBAIHBwY19saW51eF9yYW5nZWRfYnJlYWtf bnVtX3JlZ2lzdGVycyAoc3QKKyAJICAyIDogLTEpOwogIH0KICAKICtzdGF0aWMgdm9pZApAQCAt NjE4Nyw5ICs2MTE5LDkgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3BwYy1saW51 eC1uYXQuYwogKyAgYm9va2VfaW5zZXJ0X3BvaW50IChwcCwgdGlkKTsKICt9CiArCi0gLyogUmV0 dXJuIHRoZSBudW1iZXIgb2YgcmVnaXN0ZXJzIG5lZWRlZCBmb3IgYSByYW5nZWQgYnJlYWtwb2lu dC4gICovCisgLyogSW5zZXJ0IHRoZSBoYXJkd2FyZSBicmVha3BvaW50IGRlc2NyaWJlZCBieSBC UF9UR1QuICBSZXR1cm5zIDAgZm9yCisgICAgc3VjY2VzcywgMSBpZiBoYXJkd2FyZSBicmVha3Bv aW50cyBhcmUgbm90IHN1cHBvcnRlZCBvciAtMSBmb3IgZmFpbHVyZS4gICovCiAgCi0gc3RhdGlj IGludAogQEAgLTE2NTQsOCArMTY2Miw2IEBAIHN0YXRpYyBpbnQKICBwcGNfbGludXhfaW5zZXJ0 X2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogIAkJCQkgIHN0cnVjdCBi cF90YXJnZXRfaW5mbyAqYnBfdGd0KQpAQCAtNjIzNyw3ICs2MTY5LDcgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL3BwYy1saW51eC1uYXQuYwogIAogICAgcmV0dXJuIDA7CiAgfQot QEAgLTE5NDYsNiArMTk1NiwxNSBAQCBwcGNfbGludXhfY2FuX2FjY2VsX3dhdGNocG9pbnRfY29u ZGl0aW9uCitAQCAtMjAwNCw2ICsyMDE0LDE1IEBAIHBwY19saW51eF9jYW5fYWNjZWxfd2F0Y2hw b2ludF9jb25kaXRpb24KICAJICAmJiBjaGVja19jb25kaXRpb24gKGFkZHIsIGNvbmQsICZkYXRh X3ZhbHVlLCAmbGVuKSk7CiAgfQogIApAQCAtNjI1Myw3ICs2MTg1LDcgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL3BwYy1saW51eC1uYXQuYwogIC8qIFNldCB1cCBQIHdpdGggdGhl IHBhcmFtZXRlcnMgbmVjZXNzYXJ5IHRvIHJlcXVlc3QgYSB3YXRjaHBvaW50IGNvdmVyaW5nCiAg ICAgTEVOIGJ5dGVzIHN0YXJ0aW5nIGF0IEFERFIgYW5kIGlmIHBvc3NpYmxlIHdpdGggY29uZGl0 aW9uIGV4cHJlc3Npb24gQ09ORAogICAgIGV2YWx1YXRlZCBieSBoYXJkd2FyZS4gIElOU0VSVCB0 ZWxscyBpZiB3ZSBhcmUgY3JlYXRpbmcgYSByZXF1ZXN0IGZvcgotQEAgLTIwMDAsOCArMjAxOSw2 IEBAIHN0YXRpYyBpbnQKK0BAIC0yMDU4LDggKzIwNzcsNiBAQCBzdGF0aWMgaW50CiAgcHBjX2xp bnV4X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAog IAkJCSAgICAgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCiAgewpAQCAtNjI2Miw3ICs2MTk0LDcg QEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3BwYy1saW51eC1uYXQuYwogICAgaW50 IHJldCA9IC0xOwogIAogICAgaWYgKGhhdmVfcHRyYWNlX2Jvb2tlX2ludGVyZmFjZSAoKSkKLUBA IC0yMDEwLDggKzIwMjcsNyBAQCBwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQURE UiBhCitAQCAtMjA2OCw4ICsyMDg1LDcgQEAgcHBjX2xpbnV4X2luc2VydF93YXRjaHBvaW50IChD T1JFX0FERFIgYQogIAogICAgICAgIGNyZWF0ZV93YXRjaHBvaW50X3JlcXVlc3QgKCZwLCBhZGRy LCBsZW4sIHJ3LCBjb25kLCAxKTsKICAKQEAgLTYyNzIsNyArNjIwNCw3IEBAIEluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi9wcGMtbGludXgtbmF0LmMKICAKICAgICAgICByZXQgPSAwOwog ICAgICB9Ci1AQCAtMjA1NCwxMiArMjA3MCw4IEBAIHBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2lu dCAoQ09SRV9BRERSIGEKK0BAIC0yMTEyLDEyICsyMTI4LDggQEAgcHBjX2xpbnV4X2luc2VydF93 YXRjaHBvaW50IChDT1JFX0FERFIgYQogIAogICAgICAgIHNhdmVkX2RhYnJfdmFsdWUgPSBkYWJy X3ZhbHVlOwogIApAQCAtNjI4Niw3ICs2MjE4LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3 MDMvZ2RiL3BwYy1saW51eC1uYXQuYwogICAgICB9CiAgCiAgICByZXR1cm4gcmV0OwotQEAgLTIw NjksOCArMjA4MSw2IEBAIHN0YXRpYyBpbnQKK0BAIC0yMTI3LDggKzIxMzksNiBAQCBzdGF0aWMg aW50CiAgcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxl biwgaW50IHJ3LAogIAkJCSAgICAgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCiAgewpAQCAtNjI5 NSw3ICs2MjI3LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3BwYy1saW51eC1u YXQuYwogICAgaW50IHJldCA9IC0xOwogIAogICAgaWYgKGhhdmVfcHRyYWNlX2Jvb2tlX2ludGVy ZmFjZSAoKSkKLUBAIC0yMDc5LDIwICsyMDg5LDE2IEBAIHBwY19saW51eF9yZW1vdmVfd2F0Y2hw b2ludCAoQ09SRV9BRERSIGEKK0BAIC0yMTM3LDIwICsyMTQ3LDE2IEBAIHBwY19saW51eF9yZW1v dmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGEKICAKICAgICAgICBjcmVhdGVfd2F0Y2hwb2ludF9y ZXF1ZXN0ICgmcCwgYWRkciwgbGVuLCBydywgY29uZCwgMCk7CiAgCkBAIC02MzE4LDEwICs2MjUw LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9wcGMtbGludXgtbmF0LmMKICAg ICAgfQogIAogICAgcmV0dXJuIHJldDsKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9w cmludGNtZC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHJpbnRjbWQuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvcHJpbnRjbWQuYwkyMDEx LTAzLTIyIDE1OjM5OjQwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL3ByaW50Y21kLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBn ZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3ByaW50Y21kLmMJMjAxMS0wMy0yMiAxNTozOTo0 MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wcmludGNtZC5j CTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtOTc1LDYgKzk3NSwxMSBA QCBwcmludF9jb21tYW5kXzEgKGNoYXIgKmV4cCwgaW50IGluc3BlY3QsCiAgICBlbHNlCiAgICAg IHZhbCA9IGFjY2Vzc192YWx1ZV9oaXN0b3J5ICgwKTsKQEAgLTYzNjgsMTAgKzYzMDAsMTAgQEAg SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3ByaW50Y21kLmMKICsgIG9ic2VydmVyX2F0 dGFjaF9tYXJrX3VzZWQgKHByaW50X3R5cGVzX21hcmtfdXNlZCk7CiArI2VuZGlmCiAgfQotSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3Iu cHkKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9GcmFtZUl0 ZXJhdG9yLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9n ZGIvRnJhbWVJdGVyYXRvci5weQkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3Iu cHkJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsMzMgQEAK ICsjIEl0ZXJhdG9yIG92ZXIgZnJhbWVzLgogKwpAQCAtNjQwNiwxMCArNjMzOCwxMCBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRvci5w eQogKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KICsgICAgICAgIHNlbGYuZnJhbWUg PSByZXN1bHQub2xkZXIgKCkKICsgICAgICAgIHJldHVybiByZXN1bHQKLUluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkKK0luZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBw ZXIucHkJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkJMjAxMS0wNy0yMiAy MDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsMTEyIEBACiArIyBXcmFwcGVyIEFQ SSBmb3IgZnJhbWVzLgogKwpAQCAtNjUyMywxMCArNjQ1NSwxMCBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVXcmFwcGVyLnB5CiArCiArICAgIGRl ZiBfX2dldGF0dHJfXyAoc2VsZiwgbmFtZSk6CiArICAgICAgICByZXR1cm4gZ2V0YXR0ciAoc2Vs Zi5mcmFtZSwgbmFtZSkKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGli L2dkYi9iYWNrdHJhY2UucHkKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24v bGliL2dkYi9iYWNrdHJhY2UucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9w eXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJh Y2UucHkJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNDIg QEAKICsjIEZpbHRlcmluZyBiYWNrdHJhY2UuCiArCkBAIC02NTcwLDEwICs2NTAyLDEwIEBAIElu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkK ICsgICAgICAgIHJldHVybiBpdGVyCiArICAgIHJldHVybiBmcmFtZV9maWx0ZXIgKGl0ZXIpCiAr Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9h bGlhcy5weQorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Nv bW1hbmQvYWxpYXMucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24v bGliL2dkYi9jb21tYW5kL2FsaWFzLnB5CTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9h bGlhcy5weQkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSw1 OSBAQAogKyMgQWxpYXMgY29tbWFuZC4KICsKQEAgLTY2MzQsMTAgKzY1NjYsMTAgQEAgSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYWxpYXMucHkK ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGNvbW1hbmQgaXMgYW4gYWxpYXMg Zm9yICclcycuIiAlIHRhcmdldCkKICsKICtBbGlhc0NvbW1hbmQoKQotSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5CitJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJh Y2UucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dkYi9j b21tYW5kL2JhY2t0cmFjZS5weQkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3Ry YWNlLnB5CTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDEw NiBAQAogKyMgTmV3IGJhY2t0cmFjZSBjb21tYW5kLgogKwpAQCAtNjc0NSwxMCArNjY3NywxMCBA QCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9i YWNrdHJhY2UucHkKICsgICAgICAgICAgICBwYWlyWzFdLmRlc2NyaWJlIChzeXMuc3Rkb3V0LCBm dWxsKQogKwogK0ZpbHRlcmluZ0JhY2t0cmFjZSgpCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5CitJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3Jz LnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvY29t bWFuZC9pZ25vcmVfZXJyb3JzLnB5CTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25v cmVfZXJyb3JzLnB5CTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCww ICsxLDM3IEBACiArIyBJZ25vcmUgZXJyb3JzIGluIHVzZXIgY29tbWFuZHMuCiArCkBAIC02Nzg3 LDEwICs2NzE5LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGli L2dkYi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkKICsgICAgICAgICAgICBwYXNzCiArCiArSWdu b3JlRXJyb3JzQ29tbWFuZCAoKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3B5dGhv bi9saWIvZ2RiL2NvbW1hbmQvcGFob2xlLnB5CitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9wYWhvbGUucHkKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weQkyMDExLTA3LTAz IDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5 dGhvbi9saWIvZ2RiL2NvbW1hbmQvcGFob2xlLnB5CTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAw MDAwICswMjAwCiBAQCAtMCwwICsxLDc1IEBACiArIyBwYWhvbGUgY29tbWFuZCBmb3IgZ2RiCiAr CkBAIC02ODY3LDEwICs2Nzk5LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9w eXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weQogKyAgICAgICAgc2VsZi5wYWhvbGUgKHR5 cGUsIDAsICcnKQogKwogK1BhaG9sZSgpCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv cHl0aG9uL2xpYi9nZGIvY29tbWFuZC9yZXF1aXJlLnB5CitJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9yZXF1aXJlLnB5CiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAt LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9yZXF1aXJlLnB5CTIw MTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9yZXF1aXJlLnB5CTIwMTEtMDctMjIgMjA6MDQ6 MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDU3IEBACiArIyBEZW1hbmQtbG9hZGluZyBj b21tYW5kcy4KICsKQEAgLTY5MjksMTAgKzY4NjEsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcmVxdWlyZS5weQogK1JlcXVpcmVDb21t YW5kKCkKICtSZXF1aXJlU3ViY29tbWFuZCgiY29tbWFuZCIpCiArUmVxdWlyZVN1YmNvbW1hbmQo ImZ1bmN0aW9uIikKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dk Yi9jb21tYW5kL3VwdG8ucHkKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24v bGliL2dkYi9jb21tYW5kL3VwdG8ucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi9weXRob24vbGliL2dkYi9jb21tYW5kL3VwdG8ucHkJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9j b21tYW5kL3VwdG8ucHkJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0w LDAgKzEsMTI5IEBACiArIyB1cHRvIGNvbW1hbmQuCiArCkBAIC03MDYzLDE2ICs2OTk1LDE2IEBA IEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3Vw dG8ucHkKICtVcHRvU291cmNlQ29tbWFuZCAoKQogK1VwdG9PYmplY3RDb21tYW5kICgpCiArVXB0 b1doZXJlQ29tbWFuZCAoKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3B5dGhvbi9s aWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5CitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vX19pbml0X18ucHkKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9fX2luaXRfXy5weQkyMDEx LTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5CTIwMTEtMDctMjIgMjA6MDQ6 MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxIEBACiArCi1JbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5CitJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lz LnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvZnVu Y3Rpb24vY2FsbGVyX2lzLnB5CTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVy X2lzLnB5CTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDU4 IEBACiArIyBDYWxsZXItaXMgZnVuY3Rpb25zLgogKwpAQCAtNzEzMiwxMCArNzA2NCwxMCBAQCBJ bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2Fs bGVyX2lzLnB5CiArCiArQ2FsbGVySXMoKQogK0NhbGxlck1hdGNoZXMoKQotSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2luX3Njb3BlLnB5CitJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5f c2NvcGUucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vbGliL2dk Yi9mdW5jdGlvbi9pbl9zY29wZS5weQkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2lu X3Njb3BlLnB5CTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsx LDQ3IEBACiArIyBJbi1zY29wZSBmdW5jdGlvbi4KICsKQEAgLTcxODQsMTAgKzcxMTYsMTAgQEAg SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2lu X3Njb3BlLnB5CiArCXJldHVybiB3YW50ZWQgPT0gZm91bmQKICsKICtJblNjb3BlICgpCi1JbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL3B5LXR5cGUuYworSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9weS10eXBlLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL3B5dGhvbi9weS10eXBlLmMJMjAxMS0wMS0yNiAyMTo1 Mzo0NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24v cHktdHlwZS5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcu My41MC4yMDExMDcyMi5vcmlnL2dkYi9weXRob24vcHktdHlwZS5jCTIwMTEtMDYtMjQgMjE6NDc6 MzcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5 LXR5cGUuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTI5LDYgKzI5 LDggQEAKICAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKICAjaW5jbHVkZSAidmVjLmgiCkBAIC03Mzgy LDEwICs3MzE0LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vcHkt dHlwZS5jCiAgfQogIAogIAwKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24v cHktdmFsdWUuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9weS12YWx1 ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9weXRob24v cHktdmFsdWUuYwkyMDExLTAzLTE4IDE3OjA5OjU3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCTIwMTEtMDctMDMgMTA6MzM6MTEu MDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9weXRob24v cHktdmFsdWUuYwkyMDExLTA2LTI3IDIxOjIxOjUxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCTIwMTEtMDctMjIgMjA6MDQ6MjEu MDAwMDAwMDAwICswMjAwCiBAQCAtMjgsNiArMjgsNyBAQAogICNpbmNsdWRlICJpbmZjYWxsLmgi CiAgI2luY2x1ZGUgImV4cHJlc3Npb24uaCIKQEAgLTczOTQsNyArNzMyNiw3IEBAIEluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vcHktdmFsdWUuYwogIAogICNpZmRlZiBIQVZF X1BZVEhPTgogIAotQEAgLTEyMTAsNiArMTIxMSwxOSBAQCBnZGJweV9pc192YWx1ZV9vYmplY3Qg KFB5T2JqZWN0ICpvYmopCitAQCAtMTIwOCw2ICsxMjA5LDE5IEBAIGdkYnB5X2lzX3ZhbHVlX29i amVjdCAoUHlPYmplY3QgKm9iaikKICAgIHJldHVybiBQeU9iamVjdF9UeXBlQ2hlY2sgKG9iaiwg JnZhbHVlX29iamVjdF90eXBlKTsKICB9CiAgCkBAIC03NDE0LDcgKzczNDYsNyBAQCBJbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKICB2b2lkCiAgZ2RicHlf aW5pdGlhbGl6ZV92YWx1ZXMgKHZvaWQpCiAgewotQEAgLTEyMjAsNiArMTIzNCwxMCBAQCBnZGJw eV9pbml0aWFsaXplX3ZhbHVlcyAodm9pZCkKK0BAIC0xMjE4LDYgKzEyMzIsMTAgQEAgZ2RicHlf aW5pdGlhbGl6ZV92YWx1ZXMgKHZvaWQpCiAgICBQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1 bGUsICJWYWx1ZSIsIChQeU9iamVjdCAqKSAmdmFsdWVfb2JqZWN0X3R5cGUpOwogIAogICAgdmFs dWVzX2luX3B5dGhvbiA9IE5VTEw7CkBAIC03NDI1LDExICs3MzU3LDExIEBAIEluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vcHktdmFsdWUuYwogIH0KICAKICAMCi1JbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL3B5dGhvbi5jCitJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5dGhvbi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45 MC4yMDExMDcwMy5vcmlnL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMS0wNy0wMiAyMTozMzoxMC4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vcHl0aG9u LmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC00OSw4ICs0OSwxMSBA QCBzdGF0aWMgaW50IGdkYnB5X3Nob3VsZF9wcmludF9zdGFjayA9IDE7CistLS0gZ2RiLTcuMy41 MC4yMDExMDcyMi5vcmlnL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMS0wNy0yMSAxMzowMzo0Ny4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vcHl0aG9u LmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKK0BAIC00OSw5ICs0OSwxMiBA QCBzdGF0aWMgaW50IGdkYnB5X3Nob3VsZF9wcmludF9zdGFjayA9IDA7CiAgI2luY2x1ZGUgImxp bmVzcGVjLmgiCiAgI2luY2x1ZGUgInNvdXJjZS5oIgogICNpbmNsdWRlICJ2ZXJzaW9uLmgiCkBA IC03NDM3LDExICs3MzY5LDEyIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRo b24vcHl0aG9uLmMKICsjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCiAgI2luY2x1ZGUgInRhcmdldC5o IgogICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKyAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKICsjaW5j bHVkZSAiZXZlbnQtdG9wLmgiCiAgCiAgc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNbXTsK ICAKLUBAIC03NjksNiArNzcyLDUzIEBAIGdkYnB5X3ByaW50X3N0YWNrICh2b2lkKQorQEAgLTg0 OSw2ICs4NTIsNTMgQEAgZ2RicHlfcHJpbnRfc3RhY2sgKHZvaWQpCiAgCiAgLyogUmV0dXJuIHRo ZSBjdXJyZW50IFByb2dzcGFjZS4KICAgICBUaGVyZSBhbHdheXMgaXMgb25lLiAgKi8KQEAgLTc0 OTUsNyArNzQyOCw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9weXRob24vcHl0 aG9uLmMKICAKICBzdGF0aWMgUHlPYmplY3QgKgogIGdkYnB5X2dldF9jdXJyZW50X3Byb2dzcGFj ZSAoUHlPYmplY3QgKnVudXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQotQEAgLTExOTQsNiArMTI0 NCw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQorQEAgLTEzMzMsNiArMTM4 Myw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQogICAgICAiR2V0IGEgdmFs dWUgZnJvbSBoaXN0b3J5IiB9LAogICAgeyAiZXhlY3V0ZSIsIChQeUNGdW5jdGlvbikgZXhlY3V0 ZV9nZGJfY29tbWFuZCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgIkV4ZWN1 dGUgYSBnZGIgY29tbWFuZCIgfSwKQEAgLTc1MDQsMTAgKzc0MzcsMTAgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL3B5dGhvbi9weXRob24uYwogICAgeyAicGFyYW1ldGVyIiwgZ2Ri cHlfcGFyYW1ldGVyLCBNRVRIX1ZBUkFSR1MsCiAgICAgICJSZXR1cm4gYSBnZGIgcGFyYW1ldGVy J3MgdmFsdWUiIH0sCiAgCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvcHl0aG9uL3B5 dGhvbi5oCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5dGhvbi5oCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9weXRob24vcHl0aG9u LmgJMjAxMS0wMy0xNCAxNzowOTo1NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAg KzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAky MDExLTAzLTE0IDE3OjA5OjU0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3B5dGhvbi9weXRob24uaAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIw MAogQEAgLTMyLDYgKzMyLDggQEAgdm9pZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFu ZCAocwogIAogIHZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKnN0cmVhbSwgY29uc3Qg Y2hhciAqZmlsZSk7CkBAIC03NTE3LDEwICs3NDUwLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi9weXRob24vcHl0aG9uLmgKICBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVy IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCQkJICAgICAg aW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCiAgCQkJICAgICAgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvc29tcmVhZC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc29tcmVhZC5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi9zb21yZWFkLmMJ MjAxMS0wMy0wNyAxNzoxNzoyOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi9zb21yZWFkLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0t LSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3NvbXJlYWQuYwkyMDExLTAzLTA3IDE3OjE3 OjI5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3NvbXJlYWQu YwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTQzOSw2ICs0MzksNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgc29tX3N5bV9mbnMgCiAgICBkZWZhdWx0X3N5 bWZpbGVfc2VnbWVudHMsCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAg Ki8KICAgIE5VTEwsCkBAIC03NTI5LDEwICs3NDYyLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi9zb21yZWFkLmMKICAgICZwc3ltX2Z1bmN0aW9ucwogIH07CiAgCi1JbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvc3RhY2suYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3N0YWNrLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcv Z2RiL3N0YWNrLmMJMjAxMS0wMy0xOCAxOTo0ODo1Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi9zdGFjay5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAw ICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9zdGFjay5jCTIwMTEtMDYt MjcgMjE6MjE6NTAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv c3RhY2suYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTM2Niw2ICsz NjYsNyBAQCBwcmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9sICpmdW5jLCBzCiAgCSAgICAg ICAgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5n dWFnZTsKQEAgLTc1NTUsMTEgKzc0ODgsMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL3N0YWNrLmMKICAJCSAgdWlfb3V0X2ZpZWxkX3N0cmVhbSAodWlvdXQsICJ2YWx1ZSIsIHN0 Yik7CiAgCSAgICAgICAgfQogIAkgICAgICBlbHNlCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvc3RhcC1wcm9iZS5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3RhcC1w cm9iZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAw MDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvc3RhcC1wcm9iZS5jCTIw MTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDIwNDEgQEAKKysr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMJMjAxMS0wNy0yMiAyMDowNDoy MS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0wLDAgKzEsMjA0MiBAQAogKy8qIFN5c3RlbVRhcCBwcm9i ZSBzdXBwb3J0IGZvciBHREIuCiArCiArICAgQ29weXJpZ2h0IChDKSAyMDExIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtNzkxNyw5ICs3ODUwLDcgQEAgSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL3N0YXAtcHJvYmUuYwogKyAgaW50IGk7CiArCiArICBmb3IgKGkgPSAw OyBpIDwgYS0+bl9hcmdzOyBpKyspCi0rICAgIHsKLSsgICAgICB4ZnJlZSAoYS0+YXJnW2ldLmFy Z19zdHIpOwotKyAgICB9CisrICAgIHhmcmVlIChhLT5hcmdbaV0uYXJnX3N0cik7CiArCiArICB4 ZnJlZSAoYS0+YXJnKTsKICsgIHhmcmVlIChhKTsKQEAgLTc5NjMsNiArNzg5NCw3IEBAIEluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9zdGFwLXByb2JlLmMKICsgICAgcmV0dXJuOwogKwog KyAgYXJnc19pbmZvID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8pKTsK KysgIGFyZ3NfaW5mby0+bl9hcmdzID0gMDsKICsgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKHN0 YXBfZnJlZV9hcmdzX2luZm8sIGFyZ3NfaW5mbyk7CiArICBhcmdzX2luZm8tPmFyZyA9IHhjYWxs b2MgKFNUQVBfTUFYX0FSR1MsIHNpemVvZiAoc3RydWN0IHN0YXBfcHJvYmVfYXJnKSk7CiArCkBA IC04MDU1LDYgKzc5ODcsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvc3RhcC1w cm9iZS5jCiArCiArCSAgICAgIGFyZ3NfaW5mby0+YXJnW2N1cnJlbnRfYXJnXS5hcmdfc3RyCiAr CQk9IHNhdmVzdHJpbmcgKHN0YXJ0LCBjdXIgLSBzdGFydCk7CisrCSAgICAgICsrYXJnc19pbmZv LT5uX2FyZ3M7CiArCSAgICAgIC8qIFN0YXJ0IGl0IG92ZXIgYWdhaW4uICAqLwogKwkgICAgICBj dXIgPSBza2lwX3NwYWNlcyAoKGNoYXIgKikgY3VyKTsKICsJICAgICAgY3VycmVudF9zdGF0ZSA9 IE5FV19BUkc7CkBAIC04MDc1LDcgKzgwMDgsNiBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvc3RhcC1wcm9iZS5jCiArCX0KICsgICAgfQogKwotKyAgYXJnc19pbmZvLT5uX2FyZ3Mg PSBjdXJyZW50X2FyZyArIDE7CiArICBhcmdzX2luZm8tPmFyZyA9IHhyZWFsbG9jIChhcmdzX2lu Zm8tPmFyZywKICsJCQkgICAgICBhcmdzX2luZm8tPm5fYXJncwogKwkJCSAgICAgICogc2l6ZW9m IChzdHJ1Y3Qgc3RhcF9wcm9iZV9hcmcpKTsKQEAgLTkwODgsOCArOTAyMCw5IEBAIEluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9zdGFwLXByb2JlLmMKICsgICAgcmV0dXJuOwogKwogKyAg Zm9yIChpID0gMDsgaSA8IHBhcnNlZF9hcmdzLT5uX2FyZ3M7IGkrKykKLSsgICAgeGZyZWUgKHBh cnNlZF9hcmdzLT5hcmcpOworKyAgICB4ZnJlZSAocGFyc2VkX2FyZ3MtPmFyZ1tpXS5hcmdfc3Ry KTsKICsKKysgIHhmcmVlIChwYXJzZWRfYXJncy0+YXJnKTsKICsgIHhmcmVlIChwYXJzZWRfYXJn cyk7CiArfQogKwpAQCAtOTI5NSwxMyArOTIyOCwxNCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvc3RhcC1wcm9iZS5jCiArCiArLyogU2VlIGRlZmluaXRpb24gaW4gc3RhcC1wcm9i ZS5oLiAgKi8KICsKLStjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqCi0rZmluZF9wcm9iZV9pbl9v YmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCSAgICAgICBjb25zdCBjaGFyICpw cm92aWRlciwKLSsJCSAgICAgICBjb25zdCBjaGFyICpuYW1lKQorK1ZFQyAoc3RhcF9wcm9iZV9w KSAqCisrZmluZF9wcm9iZXNfaW5fb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisr CQkJY29uc3QgY2hhciAqcHJvdmlkZXIsCisrCQkJY29uc3QgY2hhciAqbmFtZSkKICt7CiArICBj b25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmVzOwogKyAgaW50IGksIG51bV9wcm9iZXM7Cisr ICBWRUMgKHN0YXBfcHJvYmVfcCkgKnJlc3VsdCA9IE5VTEw7CiArCiArICBpZiAoISBvYmpmaWxl LT5zZiB8fCAhIG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zKQogKyAgICByZXR1cm4gTlVMTDsK QEAgLTkzMTUsMTAgKzkyNDksMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3N0 YXAtcHJvYmUuYwogKyAgICAgIGlmIChzdHJjbXAgKHByb2Jlc1tpXS5uYW1lLCBuYW1lKSAhPSAw KQogKwljb250aW51ZTsKICsKLSsgICAgICByZXR1cm4gJnByb2Jlc1tpXTsKKysgICAgICBWRUNf c2FmZV9wdXNoIChzdGFwX3Byb2JlX3AsIHJlc3VsdCwgJnByb2Jlc1tpXSk7CiArICAgIH0KICsK LSsgIHJldHVybiBOVUxMOworKyAgcmV0dXJuIHJlc3VsdDsKICt9CiArCiArLyogU2VlIGRlZmlu aXRpb24gaW4gc3RhcC1wcm9iZS5oLiAgKi8KQEAgLTk0MjEsNyArOTM1NSw3IEBAIEluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9zdGFwLXByb2JlLmMKICsJaWYgKGNhbm9uaWNhbCkKICsJ ICB7CiArCSAgICBjYW5vbmljYWwtPmNhbm9uaWNhbCA9IHhyZWFsbG9jIChjYW5vbmljYWwtPmNh bm9uaWNhbCwKLSsJCQkJCSAgICAgcmVzdWx0Lm5lbHRzICogc2l6ZW9mIChjaGFyICoqKSk7Cisr CQkJCQkgICAgIHJlc3VsdC5uZWx0cyAqIHNpemVvZiAoY2hhciAqKSk7CiArCSAgICBjYW5vbmlj YWwtPmNhbm9uaWNhbFtyZXN1bHQubmVsdHMgLSAxXSA9IHhzdHJkdXAgKGZ1bGxfYXJnKTsKICsJ ICB9CiArICAgICAgfQpAQCAtOTYwMSwxMSArOTUzNSwxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvc3RhcC1wcm9iZS5jCiArICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5 ICgiX3Byb2JlX2FyZzkiLCAmcHJvYmVfZnVuY3MsCiArCQkJCSh2b2lkICopICh1aW50cHRyX3Qp IDkpOwogK30KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9zdGFwLXByb2JlLmgKK0lu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmgKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi9zdGFwLXByb2JlLmgJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAw MDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMTA5IEBACisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvc3RhcC1wcm9iZS5oCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAt MCwwICsxLDExNCBAQAogKy8qIFN5c3RlbVRhcCBwcm9iZSBzdXBwb3J0IGZvciBHREIuCiArCiAr ICAgQ29weXJpZ2h0IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAt OTYyOCw2ICs5NTYyLDggQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3N0YXAtcHJv YmUuaAogKyNpZiAhZGVmaW5lZCAoU1RBUF9QUk9CRV9IKQogKyNkZWZpbmUgU1RBUF9QUk9CRV9I IDEKICsKKysjaW5jbHVkZSAidmVjLmgiCisrCiArc3RydWN0IHN0YXBfYXJnc19pbmZvOwogK3N0 cnVjdCBheHNfdmFsdWU7CiArc3RydWN0IGxpbmVzcGVjX3Jlc3VsdDsKQEAgLTk2NTksNiArOTU5 NSw4IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9zdGFwLXByb2JlLmgKICsgIHN0 cnVjdCBzdGFwX2FyZ3NfaW5mbyAqcGFyc2VkX2FyZ3M7CiArfTsKICsKKyt0eXBlZGVmIGNvbnN0 IHN0cnVjdCBzdGFwX3Byb2JlICpzdGFwX3Byb2JlX3A7CisrREVGX1ZFQ19QIChzdGFwX3Byb2Jl X3ApOwogKwogKy8qIEEgaGVscGVyIGZvciBsaW5lc3BlYyB0aGF0IGRlY29kZXMgYSBzdGFwIHBy b2JlIHNwZWNpZmljYXRpb24uICBJdAogKyAgIHJldHVybnMgYSBzeW10YWJzX2FuZF9saW5lcyBv YmplY3QgYW5kIHVwZGF0ZXMgKkFSR1BUUiBvciB0aHJvd3MgYW4KQEAgLTk2NjcsMTIgKzk2MDUs MTMgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3N0YXAtcHJvYmUuaAogK2V4dGVy biBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgcGFyc2Vfc3RhcF9wcm9iZSAoY2hhciAqKmFyZ3B0 ciwKICsJCQkJCQkgIHN0cnVjdCBsaW5lc3BlY19yZXN1bHQgKmNhbm9uKTsKICsKLSsvKiBTZWFy Y2ggT0JKRklMRSBmb3IgYSBwcm9iZSB3aXRoIHRoZSBnaXZlbiBQUk9WSURFUiBhbmQgTkFNRS4g IElmIGEKLSsgICBwcm9iZSBpcyBmb3VuZCwgcmV0dXJuIGl0LiAgSWYgbm8gcHJvYmUgaXMgZm91 bmQsIHJldHVybiBOVUxMLiAgKi8KKysvKiBTZWFyY2ggT0JKRklMRSBmb3IgYSBwcm9iZSB3aXRo IHRoZSBnaXZlbiBQUk9WSURFUiBhbmQgTkFNRS4KKysgICBSZXR1cm4gYSBWRUMgb2YgYWxsIHBy b2JlcyB0aGF0IHdlcmUgZm91bmQuICBJZiBubyBtYXRjaGluZyBwcm9iZQorKyAgIGlzIGZvdW5k LCByZXR1cm4gTlVMTC4gIFRoZSBjYWxsZXIgbXVzdCBmcmVlIHRoZSBWRUMuICAqLwogKwotK2V4 dGVybiBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqZmluZF9wcm9iZV9pbl9vYmpmaWxlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkJCQkgICAgICAgY29uc3QgY2hhciAqcHJvdmlkZXIs Ci0rCQkJCQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOworK2V4dGVybiBWRUMgKHN0YXBfcHJv YmVfcCkgKmZpbmRfcHJvYmVzX2luX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAor KwkJCQkJCSAgIGNvbnN0IGNoYXIgKnByb3ZpZGVyLAorKwkJCQkJCSAgIGNvbnN0IGNoYXIgKm5h bWUpOwogKwogKy8qIEdpdmVuIGEgUEMsIGZpbmQgYW4gYXNzb2NpYXRlZCBTeXN0ZW1UYXAgcHJv YmUuICBJZiBhIHByb2JlIGlzCiArICAgZm91bmQsIHNldCAqT0JKRklMRV9PVVQgdG8gdGhlIHBy b2JlJ3Mgb2JqZmlsZSwgYW5kIHJldHVybiB0aGUKQEAgLTk3MTUsMTAgKzk2NTQsMTAgQEAgSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3N0YXAtcHJvYmUuaAogKwkJCQkJICAgICAgIGlu dCBuKTsKICsKICsjZW5kaWYgLyogIWRlZmluZWQgKFNUQVBfUFJPQkVfSCkgKi8KLUluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9zeW1maWxlLmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9zeW1maWxlLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9y aWcvZ2RiL3N5bWZpbGUuaAkyMDExLTA0LTI1IDIzOjI1OjE4LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3N5bWZpbGUuaAkyMDExLTA3LTAzIDEwOjMzOjExLjAw MDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc3ltZmlsZS5o CTIwMTEtMDYtMTAgMjM6NDg6MDQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvc3ltZmlsZS5oCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBA QCAtMzEsNiArMzEsMTEgQEAgc3RydWN0IG9iamZpbGU7CiAgc3RydWN0IG9ial9zZWN0aW9uOwog IHN0cnVjdCBvYnN0YWNrOwpAQCAtOTczMSw4ICs5NjcwLDggQEAgSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL3N5bWZpbGUuaAogIAogIC8qIENvbXBhcmlzb24gZnVuY3Rpb24gZm9yIHN5 bWJvbCBsb29rIHVwcy4gICovCiAgCi1AQCAtMjkwLDYgKzI5NSw1MiBAQCBzdHJ1Y3QgcXVpY2tf c3ltYm9sX2Z1bmN0aW9ucwotIAkJCQl2b2lkICpkYXRhKTsKK0BAIC0yOTQsNiArMjk5LDUyIEBA IHN0cnVjdCBxdWlja19zeW1ib2xfZnVuY3Rpb25zCisgCQkJCXN5bWJvbF9maWxlbmFtZV9mdHlw ZSAqZnVuLCB2b2lkICpkYXRhKTsKICB9OwogIAogKy8qIFN0cnVjdHVyZSBvZiBmdW5jdGlvbnMg dXNlZCBmb3IgU3lzdGVtVGFwIHByb2JlIHN1cHBvcnQuICBJZiBvbmUgb2YKQEAgLTk3ODQsNyAr OTcyMyw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9zeW1maWxlLmgKICAvKiBT dHJ1Y3R1cmUgdG8ga2VlcCB0cmFjayBvZiBzeW1ib2wgcmVhZGluZyBmdW5jdGlvbnMgZm9yIHZh cmlvdXMKICAgICBvYmplY3QgZmlsZSB0eXBlcy4gICovCiAgCi1AQCAtMzYwLDYgKzQxMSwxMCBA QCBzdHJ1Y3Qgc3ltX2ZucworQEAgLTM2NCw2ICs0MTUsMTAgQEAgc3RydWN0IHN5bV9mbnMKICAK ICAgIGJmZF9ieXRlICooKnN5bV9yZWxvY2F0ZSkgKHN0cnVjdCBvYmpmaWxlICosIGFzZWN0aW9u ICpzZWN0cCwgYmZkX2J5dGUgKmJ1Zik7CiAgCkBAIC05Nzk1LDExICs5NzM0LDExIEBAIEluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9zeW1maWxlLmgKICAgIC8qIFRoZSAicXVpY2siIChh a2EgcGFydGlhbCkgc3ltYm9sIGZ1bmN0aW9ucyBmb3IgdGhpcyBzeW1ib2wKICAgICAgIHJlYWRl ci4gICovCiAgICBjb25zdCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1bmN0aW9ucyAqcWY7Ci1JbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvc3ltdGFiLmMKK0luZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9zeW10YWIuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMu b3JpZy9nZGIvc3ltdGFiLmMJMjAxMS0wNy0wMiAyMjowMzo0My4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9zeW10YWIuYwkyMDExLTA3LTAzIDEwOjMzOjExLjAw MDAwMDAwMCArMDIwMAotQEAgLTc3MCw2ICs3NzAsNyBAQCBpbml0X3NhbCAoc3RydWN0IHN5bXRh Yl9hbmRfbGluZSAqc2FsKQorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc3ltdGFi LmMJMjAxMS0wNy0yMSAxNzoxMzoyOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9zeW10YWIuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAor QEAgLTc3Niw2ICs3NzYsNyBAQCBpbml0X3NhbCAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2Fs KQogICAgc2FsLT5lbmQgPSAwOwogICAgc2FsLT5leHBsaWNpdF9wYyA9IDA7CiAgICBzYWwtPmV4 cGxpY2l0X2xpbmUgPSAwOwpAQCAtOTgwNywxMSArOTc0NiwxMSBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvc3ltdGFiLmMKICB9CiAgDAogIAotSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL3N5bXRhYi5oCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3ltdGFi LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL3N5bXRhYi5o CTIwMTEtMDUtMDYgMTc6MTM6MzcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvc3ltdGFiLmgJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKLUBA IC0xMTE4LDYgKzExMTgsMTAgQEAgc3RydWN0IHN5bXRhYl9hbmRfbGluZQorLS0tIGdkYi03LjMu NTAuMjAxMTA3MjIub3JpZy9nZGIvc3ltdGFiLmgJMjAxMS0wNi0zMCAwMDoxOToyNC4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zeW10YWIuaAkyMDExLTA3LTIy IDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAorQEAgLTExMTUsNiArMTExNSwxMCBAQCBzdHJ1Y3Qg c3ltdGFiX2FuZF9saW5lCiAgICBDT1JFX0FERFIgZW5kOwogICAgaW50IGV4cGxpY2l0X3BjOwog ICAgaW50IGV4cGxpY2l0X2xpbmU7CkBAIC05ODIyLDEwICs5NzYxLDEwIEBAIEluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi9zeW10YWIuaAogIH07CiAgCiAgZXh0ZXJuIHZvaWQgaW5pdF9z YWwgKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbCk7Ci1JbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUworSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxh LXBvaW50ZXItZm9vLlMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TCTIwMTEtMDctMDMgMTA6MzM6MTEu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dk Yi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAw MDAwMCArMDIwMAogQEAgLTAsMCArMSw0NTcgQEAKICsJLmZpbGUJIng4Nl82NC12bGEtcG9pbnRl ci5jIgogKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cwpAQCAtMTAyODQsMTAg KzEwMjIzLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TCiArCS5zdHJpbmcJIkdOVSBDIDQuMy4yIDIw MDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgogKwkuaWRlbnQJIkdDQzogKEdOVSkgNC4zLjIgMjAw ODExMDUgKFJlZCBIYXQgNC4zLjItNykiCiArCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixA cHJvZ2JpdHMKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmFy Y2gveDg2XzY0LXZsYS1wb2ludGVyLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90 ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMJ MjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMJMjAxMS0wNy0y MiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNDMgQEAKICsvKiBUaGlzIHRl c3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTAzMzIsMTAg KzEwMjcxLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMKICt9CiArCiArI2VuZGlmCi1JbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5l eHAKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2 XzY0LXZsYS1wb2ludGVyLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rl c3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuZXhwCTIwMTEtMDctMDMgMTA6MzM6 MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRl L2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5leHAJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAw MDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNjYgQEAKICsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTA0MDMsMTAgKzEwMzQyLDEwIEBAIEluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1w b2ludGVyLmV4cAogKwogK2dkYl90ZXN0ICJ3aGF0aXMgKmFycmF5IiAidHlwZSA9IGNoYXIgXFxc Wzc4XFxcXSIgInNlY29uZDogd2hhdGlzICphcnJheSIKICtnZGJfdGVzdCAicHR5cGUgKmFycmF5 IiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgKmFycmF5IgotSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5 cGVkZWYtZm9vLlMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLWZvby5TCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxs CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUwkyMDEx LTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYtZm9vLlMJMjAxMS0wNy0y MiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNDU1IEBACiArCS5maWxlCSJ4 ODZfNjQtdmxhLXR5cGVkZWYuYyIKICsJLnNlY3Rpb24JLmRlYnVnX2FiYnJldiwiIixAcHJvZ2Jp dHMKQEAgLTEwODYzLDEwICsxMDgwMiwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUwogKwkuc3RyaW5n CSJHTlUgQyA0LjMuMiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMuMi03KSIKICsJLmlkZW50CSJHQ0M6 IChHTlUpIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgogKwkuc2VjdGlvbgkubm90 ZS5HTlUtc3RhY2ssIiIsQHByb2diaXRzCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jCitJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82 NC12bGEtdHlwZWRlZi5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlw ZWRlZi5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDQz IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K ICsKQEAgLTEwOTExLDEwICsxMDg1MCwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jCiArfQogKwogKyNlbmRp ZgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZf NjQtdmxhLXR5cGVkZWYuZXhwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1 aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5leHAKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAky MDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwCTIwMTEtMDct MjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDY0IEBACiArIyBDb3B5cmln aHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTEwOTgwLDEwICsx MDkxOSwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5h cmNoL3g4Nl82NC12bGEtdHlwZWRlZi5leHAKICtnZGJfdGVzdCAid2hhdGlzIGFycmF5IiAidHlw ZSA9IGFycmF5X3QiICJzZWNvbmQ6IHdoYXRpcyBhcnJheSIKICsKICtnZGJfdGVzdCAicHR5cGUg YXJyYXkiICJ0eXBlID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSBhcnJheSIKLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHgu YworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJh eWlkeC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYwkyMDExLTAxLTAxIDE2OjMzOjQwLjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJh eWlkeC5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41 MC4yMDExMDcyMi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYwkyMDExLTAx LTAxIDE2OjMzOjQwLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAw MDAwICswMjAwCiBAQCAtMTcsNiArMTcsMTMgQEAKICAKICBpbnQgYXJyYXlbXSA9IHsxLCAyLCAz LCA0fTsKQEAgLTEwOTk4LDEwICsxMDkzNywxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKICBpbnQKICBtYWluICh2b2lkKQog IHsKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJy YXlpZHguZXhwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2FycmF5aWR4LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cAkyMDExLTAxLTAxIDE2OjMzOjQw LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9hcnJheWlkeC5leHAJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAK Ky0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJh eWlkeC5leHAJMjAxMS0wMS0wMSAxNjozMzo0MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCTIwMTEtMDct MjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtNTcsNCArNTcsMTIgQEAgZ2RiX3Rlc3Qg InByaW50IGFycmF5IiBcCiAgICAgICAgICAgIlxce1xcXFswXFxcXSA9IDEsIFxcXFsxXFxcXSA9 IDIsIFxcXFsyXFxcXSA9IDMsIFxcXFszXFxcXSA9IDRcXH0iIFwKICAgICAgICAgICAiUHJpbnQg YXJyYXkgd2l0aCBhcnJheS1pbmRleGVzIG9uIgpAQCAtMTEwMTYsMTAgKzEwOTU1LDEwIEBAIElu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHgu ZXhwCiArCXVuc3VwcG9ydGVkICIkdGVzdCAobm8gR0NDKSIKICsgICAgfQogK30KLUluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAKK0lu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5l eHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9kZWZhdWx0LmV4cAkyMDExLTAyLTE1IDIyOjE3OjUyLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9kZWZhdWx0 LmV4cAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAu MjAxMTA3MjIub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2RlZmF1bHQuZXhwCTIwMTEtMDUt MjAgMTY6Mzc6MjAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2RlZmF1bHQuZXhwCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAw MDAwICswMjAwCiBAQCAtNjA3LDYgKzYwNywxNyBAQCBnZGJfdGVzdF9saXN0X2V4YWN0ICJzaG93 IGNvbnZlbmllbmNlIiAiCiAgCXskX3NkYXRhID0gdm9pZH0gXAogIAl7JF9zaWdpbmZvID0gdm9p ZH0gXApAQCAtMTEwMzgsMTAgKzEwOTc3LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAz L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAKICAgICAgfQogIAogICN0ZXN0IHNo b3cgZGlyZWN0b3JpZXMKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuYworSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVz cy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv aW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAw MCArMDIwMAogQEAgLTAsMCArMSwyMCBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBH REIsIHRoZSBHTlUgZGVidWdnZXIuCiArCkBAIC0xMTA2MywxMCArMTEwMDIsMTAgQEAgSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXIt ZmllbGQtYWRkcmVzcy5jCiArc3RydWN0IHsKICsgIGludCBmaWVsZDsKICt9IHN0YXRpY3N0cnVj dCA9IHsgMSB9OwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5leHAKK0luZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3Mu ZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmV4cAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5leHAJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAw MDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsMjYgQEAKICsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTEwOTQsMTAgKzExMDMzLDEwIEBAIEluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFy LWZpZWxkLWFkZHJlc3MuZXhwCiArCiArZ2RiX3Rlc3Qge3NldCAkdmFyc3RydWN0ID0gc3RhdGlj c3RydWN0fQogK2dkYl90ZXN0IHtwICR2YXJzdHJ1Y3QuZmllbGR9ICIgPSAxIgotSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmMKK0lu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1wcm9i ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3N0YXAtcHJvYmUuYwkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmMJMjAx MS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNjkgQEAKICsvKiBU aGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTEx NjgsMTAgKzExMTA3LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2Uvc3RhcC1wcm9iZS5jCiArICBtMSgpOwogKyAgbTIoKTsKICt9Ci1JbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuZXhw CitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAt cHJvYmUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3N0YXAtcHJvYmUuZXhwCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJv YmUuZXhwCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDcy IEBACiArIyBDb3B5cmlnaHQgKEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CiArCkBAIC0xMTI0NSwxMCArMTExODQsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmV4cAogKyAgICByZXR1cm4gLTEKICt9 CiArc3RhcF90ZXN0ICItRFVTRV9QUk9CRVMiCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jCitJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysg Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5j CTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jCTIwMTEtMDctMjIgMjA6 MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDMwIEBACiArLyogVGhpcyB0ZXN0Y2Fz ZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTExMjgwLDEwICsxMTIx OSwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3ZsYS1vdmVyZmxvdy5jCiArCiArICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAKK0luZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmV4 cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92 bGEtb3ZlcmZsb3cuZXhwCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5l eHAJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsMTA5IEBA CiArIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAg LTExMzk0LDEwICsxMTMzMywxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAKICtnZGJfdGVzdCAiYnQiICJpbiBcW14g XF0qYWJvcnQgXFwoLiogaW4gbWFpbiBcXCguKiIgIkJhY2t0cmFjZSBhZnRlciBhYm9ydCgpIgog KwogK3ZlcmJvc2UgLWxvZyAia2JfZm91bmQgaW4gYnQgYWZ0ZXIgYWJvcnQoKSA9IFtleHByIFtt ZW1vcnlfdl9wYWdlc19nZXRdICogJHBhZ2VzaXplIC8gMTAyNF0iCi1JbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5jCitJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5jCTIwMTEtMDctMDMgMTA6 MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3ZsYS5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBA QCAtMCwwICsxLDU1IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdO VSBkZWJ1Z2dlci4KICsKQEAgLTExNDU0LDEwICsxMTM5MywxMCBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5jCiArICBmb28gKDc4KTsKICsg IHJldHVybiAwOwogK30KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvdmxhLmV4cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS92bGEuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEg MDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4 cAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSw2MiBAQAog KyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0x MTUyMSwxMCArMTE0NjAsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS92bGEuZXhwCiArZ2RiX3Rlc3QgInAgdGVtcDEiICIgPSAnMScgPHJlcGVh dHMgNzggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1wMSIKICtnZGJfdGVzdCAicCB0ZW1wMiIg IiA9ICcyJyA8cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAyIgogK2dkYl90 ZXN0ICJwIHRlbXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4IHRpbWVzPiIgInNlY29uZDogcHJpbnQg dGVtcDMiCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9u ZXh0b3ZlcnRocm93LmV4cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvbmV4dG92ZXJ0aHJvdy5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIw MTEwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmV4dG92ZXJ0aHJvdy5leHAJMjAxMS0w MS0wMSAxNjozMzo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL25leHRvdmVydGhyb3cuZXhwCTIwMTEtMDctMDMgMTA6MzM6MTEu MDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL25leHRvdmVydGhyb3cuZXhwCTIwMTEtMDEtMDEgMTY6MzM6NDQuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0 b3ZlcnRocm93LmV4cAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTUz LDYgKzUzLDE3IEBAIGdkYl90ZXN0X211bHRpcGxlICJwcmludCBfVW53aW5kX0RlYnVnSG8KICAg ICAgfQogIH0KQEAgLTExNTQzLDEwICsxMTQ4MiwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0b3ZlcnRocm93LmV4cAogICAgICB1bnN1cHBv cnRlZCAibmV4dG92ZXJ0aHJvdy5leHAgY291bGQgbm90IGZpbmQgX1Vud2luZF9EZWJ1Z0hvb2si CiAgICAgIHJldHVybiAtMQogIH0KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5TCitJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuUwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1i b3VuZC1sb2NsaXN0LlMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9j bGlzdC5TCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDI0 NiBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu CiArCkBAIC0xMTc5NCwxMCArMTE3MzMsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LlMKICsJLnN0cmluZwkJ ImNoYXIiCiArLkx1aW50X3N0cjoKICsJLnN0cmluZwkJInVuc2lnbmVkIGludCIKLUluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9j bGlzdC5leHAKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9kdzItYm91bmQtbG9jbGlzdC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAz L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5leHAJMjAxMS0wNy0w MyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90 ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5leHAJMjAxMS0wNy0yMiAyMDow NDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNTQgQEAKICsjIENvcHlyaWdodCAyMDEw IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTE4NTMsMTAgKzExNzkyLDEw IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9k dzItYm91bmQtbG9jbGlzdC5leHAKICsKICsjIFRoZSByZWdpc3RlciBjb250YWlucyB1bnByZWRp Y3RhYmxlIHZhbHVlIC0gdGhlIGFycmF5IHNpemUuCiArZ2RiX3Rlc3QgInB0eXBlIHJlZ19zdHJp bmciIHt0eXBlID0gY2hhciBcWy0/WzAtOV0rXF19Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmMKK0luZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1z dHJpcHBlZC5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmMJMjAx MS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNDIgQEAKICsvKiBU aGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTE5 MDAsMTAgKzExODM5LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3Vp dGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuYwogKyAgZnVuYzEgKDEsIDIpOwogKyAgcmV0dXJu IDA7CiArfQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdh cmYyL2R3Mi1zdHJpcHBlZC5leHAKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9u dWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmV4cAkyMDExLTA3 LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5leHAJMjAxMS0wNy0yMiAyMDowNDoy MS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNzkgQEAKICsjIENvcHlyaWdodCAyMDA2IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTE5ODQsMTAgKzExOTIzLDEwIEBA IEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzIt c3RyaXBwZWQuZXhwCiArZ2RiX3Rlc3QgInN0ZXAiIFwKICsgICAgICAgICAiZnVuYy4qIFxcKC4q XFwpIGF0IC4qIiBcCiArICAgICAgICAgInN0ZXAiCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlv bi5TCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIv ZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5TCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9u dWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1s b2NhdGlvbi5TCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXIt ZGF0YS1sb2NhdGlvbi5TCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAt MCwwICsxLDgzIEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBk ZWJ1Z2dlci4KICsKQEAgLTEyMDcyLDEwICsxMjAxMSwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1s b2NhdAogKwogKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwogKwkuYnl0ZQkJMHgwCQkJ LyogVGVybWluYXRvciAqLwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uZXhwCitJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1t ZW1iZXItZGF0YS1sb2NhdGlvbi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLmV4 cAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9j YXRpb24uZXhwCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsx LDM3IEBACiArIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K ICsKQEAgLTEyMTE0LDEwICsxMjA1MywxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdAogK2Ns ZWFuX3Jlc3RhcnQgJGJpbmZpbGUKICsKICtnZGJfdGVzdCAicHR5cGUgc3RydWN0IHNvbWVfc3Ry dWN0IiAidHlwZSA9IHN0cnVjdCBzb21lX3N0cnVjdCB7XFtcclxuIFx0XF0qdm9pZCBmaWVsZDtc W1xyXG4gXHRcXSp9IgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4 cAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCTIwMTEtMDct MjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDQyIEBACiArIyBDb3B5cmln aHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTEyMTQ4LDcgKzEy MDg3LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9kd2FyZi1zdHJpZGUuZXhwCiArc2V0IHRlc3RmaWxlIGR3YXJmLXN0cmlkZQogK3NldCBz cmNmaWxlICR7dGVzdGZpbGV9LmY5MAogKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0 ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2RlYnVnIGY3N31dIH0geworK2lm IHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3Jj ZmlsZX0ge2RlYnVnIGY5MH1dIH0gewogKyAgICByZXR1cm4gLTEKICt9CiArCkBAIC0xMjE2MSwx MCArMTIxMDAsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCiArZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg ImJyZWFrLWhlcmUiICIuKmJyZWFrLWhlcmUuKiIKICtnZGJfdGVzdCAicCBjNDBwdCgxKSIgIiA9 ICcwLWhlbGxvLioiCiArZ2RiX3Rlc3QgInAgYzQwcHQoMikiICIgPSAnMS1oZWxsby4qIgotSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1z dHJpZGUuZjkwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R3YXJmLXN0cmlkZS5mOTAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmY5MAkyMDExLTA3LTAzIDEwOjMz OjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAw MDAwICswMjAwCiBAQCAtMCwwICsxLDQwIEBACiArISBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KICshCkBAIC0xMjIwNiwxMCArMTIxNDUsMTAgQEAgSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJp ZGUuZjkwCiArICBwcmludCAqLCBjNDBwdCAgISBicmVhay1oZXJlCiArCiArZW5kIHByb2dyYW0g cmVwcm8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vZHluYW1pYy1vdGhlci1mcmFtZS1zdHViLmY5MAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLXN0dWIuZjkw CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAw ICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2R5bmFtaWMtb3RoZXItZnJhbWUtc3R1Yi5mOTAJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vZHluYW1pYy1vdGhlci1mcmFtZS1zdHViLmY5MAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAw MDAwMCArMDIwMAogQEAgLTAsMCArMSwyNCBAQAogKyEgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIQpAQCAtMTIyMzUsMTAgKzEyMTc0LDEwIEBAIEluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1v dGhlci1mcmFtZS1zdHViLmY5CiArICByZWFsIDo6IGR1bW15CiArICBkdW1teSA9IDEKICtlbmQg c3Vicm91dGluZSBiYXIKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5leHAKK0luZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5leHAK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v ZHluYW1pYy1vdGhlci1mcmFtZS5leHAJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHlu YW1pYy1vdGhlci1mcmFtZS5leHAJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAK IEBAIC0wLDAgKzEsMzcgQEAKICsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgogKwpAQCAtMTIyNjMsOCArMTIyMDIsOCBAQCBJbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZXhw CiArc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KICtzZXQgYmluZmlsZSAke29iamRpcn0vJHtz dWJkaXJ9LyR7ZXhlY3V0YWJsZX0KICsKLStpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7 c3ViZGlyfS8ke3NyY2ZpbGUyfSIgIiR7b2JqZmlsZTJ9IiBvYmplY3Qge2Y3N31dICE9ICIiCi0r ICAgICB8fCBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlMX0gJHtv YmpmaWxlMn0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzd9XSAhPSAiIiB9IHsK KytpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGUyfSIgIiR7 b2JqZmlsZTJ9IiBvYmplY3Qge2Y5MH1dICE9ICIiCisrICAgICB8fCBbZ2RiX2NvbXBpbGUgIiR7 c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlMX0gJHtvYmpmaWxlMn0iICIke2JpbmZpbGV9IiBl eGVjdXRhYmxlIHtkZWJ1ZyBmOTB9XSAhPSAiIiB9IHsKICsgICAgdW50ZXN0ZWQgIkNvdWxkbid0 IGNvbXBpbGUgJHtzcmNmaWxlMX0gb3IgJHtzcmNmaWxlMn0iCiArICAgIHJldHVybiAtMQogK30K QEAgLTEyMjc3LDEwICsxMjIxNiwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZXhwCiArfQogKwogK2dk Yl90ZXN0ICJidCIge2ZvbyBcKHN0cmluZz0naGVsbG8nLip9Ci1JbmRleDogZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZjkw CitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5 bmFtaWMtb3RoZXItZnJhbWUuZjkwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZjkwCTIwMTEtMDctMDMg MTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZjkwCTIwMTEtMDctMjIgMjA6 MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDM2IEBACiArISBDb3B5cmlnaHQgMjAx MCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICshCkBAIC0xMjMxOCwxMCArMTIyNTcs MTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9keW5hbWljLW90aGVyLWZyYW1lLmY5MAogKyAgZW5kIGludGVyZmFjZQogKyAgY2FsbCBmb28g KCdoZWxsbycpCiArZW5kCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9u dWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4y MDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTEtMDctMDMg MTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAw MDAwICswMjAwCiBAQCAtMCwwICsxLDE0NSBAQAogKyMgQ29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0xMjM1MCw3ICsxMjI4OSw3IEBAIEluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAK ICtzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKICtzZXQgYmluZmlsZSAke29iamRpcn0vJHtz dWJkaXJ9LyR7dGVzdGZpbGV9CiArCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtz dWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzcgcXVp ZXR9XSAhPSAiIiB9IHsKKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0v JHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY5MCBxdWlldH1dICE9 ICIiIH0gewogKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgogKyAg ICByZXR1cm4gLTEKICt9CkBAIC0xMjQ2OCwxMCArMTI0MDcsMTAgQEAgSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAogK2dkYl90 ZXN0ICJwIHZhcnQoMyw4KSIgIlxcJFxbMC05XF0qID0gOSIKICsjIG1hcHMgdG8gZm9vOjp2YXJ5 KDEsMykKICtnZGJfdGVzdCAicCB2YXJ0KDIsOSkiICJcXCRcWzAtOVxdKiA9IDEwIgotSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5 MAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9k eW5hbWljLmY5MAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9keW5hbWljLmY5MAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5h bWljLmY5MAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSw5 OCBAQAogKyEgQ29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAr IQpAQCAtMTI1NzEsMTAgKzEyNTEwLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5mOTAKICsgIGlmICh4ICgxLCAxKSAubmUu IDggLm9yLiB4ICgyLCAyKSAubmUuIDkgLm9yLiB4ICgxLCAyKSAubmUuIDQpIGNhbGwgYWJvcnQK ICsgIGlmICh4ICgzLCAxKSAubmUuIDEwKSBjYWxsIGFib3J0CiArZW5kCi1JbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAKK0luZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4 cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9zdHJpbmcuZXhwCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAJMjAx MS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNTkgQEAKICsjIENv cHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTI2MDEs NyArMTI1NDAsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3N0cmluZy5leHAKICtzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKICtzZXQg YmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CiArCi0raWYgIHsgW2dkYl9j b21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVj dXRhYmxlIHtkZWJ1ZyBmNzcgcXVpZXR9XSAhPSAiIiB9IHsKKytpZiAgeyBbZ2RiX2NvbXBpbGUg IiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUg e2RlYnVnIGY5MCBxdWlldH1dICE9ICIiIH0gewogKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29t cGlsZSAke3NyY2ZpbGV9IgogKyAgICByZXR1cm4gLTEKICt9CkBAIC0xMjYzNSwxMCArMTI1NzQs MTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9zdHJpbmcuZXhwCiArZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhci1maW5pc2giCiAr Z2RiX3Rlc3QgInAgZSIgIlxcJFxbMC05XF0qID0gJ2UgICAnIiAicCBlIHJlLXNldCIKICtnZGJf dGVzdCAicCBmIiAiXFwkXFswLTlcXSogPSBcXChcXCggJ2YgICAnLCAnZiAgICcsICdmICAgJywg J2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnXFwpIFxcKCAnZjIgICcsICdmICAgJywgJ2Yg ICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICdcXCkgXFwoICdmICAgJywgJ2YgICAn LCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBcXCkiICJwICpmIHJl LXNldCIKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vc3RyaW5nLmY5MAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9zdHJpbmcuZjkwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5mOTAJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vc3RyaW5nLmY5MAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAg LTAsMCArMSwzNyBAQAogKyEgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCiArIQpAQCAtMTI2NzcsMTAgKzEyNjE2LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIw MTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAogKyAgaCA9ICdoJwog KyAgY2FsbCBmb28gKGcsIGgpCiArZW5kCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmV4cAorSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5leHAKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZXhw CTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmV4cAkyMDExLTA3LTIyIDIw OjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSw2MCBAQAogKyMgQ29weXJpZ2h0IDIw MTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0xMjcwMSw3ICsxMjY0MCw3 IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v c3VicmFuZ2UuZXhwCiArCiArc2V0IHRlc3RmaWxlICJzdWJyYW5nZSIKICtzZXQgc3JjZmlsZSAk e3Rlc3RmaWxlfS5mOTAKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4 cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IHtkZWJ1ZyBmNzd9XSB9IHsKKytpZiB7IFtwcmVwYXJl X2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IHtkZWJ1 ZyBmOTB9XSB9IHsKICsgICAgcmV0dXJuIC0xCiArfQogKwpAQCAtMTI3NDIsMTAgKzEyNjgxLDEw IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v c3VicmFuZ2UuZXhwCiArZGVsZXRlX2JyZWFrcG9pbnRzCiArZ2RiX3VubG9hZAogK2dkYl90ZXN0 IHtwICRhICgzLCAyOjIpfSB7ID0gXCgyM1wpfQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5mOTAKK0luZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZjkwCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0r KysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdl LmY5MAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5mOTAJMjAxMS0wNy0y MiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsMjggQEAKICshIENvcHlyaWdo dCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKyEKQEAgLTEyNzc1LDEwICsx MjcxNCwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3N1YnJhbmdlLmY5MAogKyAgcHRyID0+IGEKICsgIHdyaXRlICgqLCopIGEgICAgICAg ICAgICAgICAgICEgYnJlYWstc3RhdGljCiArZW5kCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCitJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVz dC5leHAJMjAxMS0wNy0wMyAxMDozMzowNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAJMjAxMS0wNy0wMyAx MDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAkyMDExLTA3LTIyIDIwOjA0OjEwLjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2Ri L3NlbGZ0ZXN0LmV4cAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTky LDYgKzkyLDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKICAJCXNldCBkZXNjcmlw dGlvbiAic3RlcCBvdmVyIHR0eWFyZyBpbml0aWFsaXphdGlvbiIKICAJCXNldCBjb21tYW5kICJz dGVwIgpAQCAtMTI3OTAsMTAgKzEyNzI5LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAz L2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAKICAJICAgIC1yZSAiLipwcmVfc3Rh dF9jaGFpbiA9IG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwLiokZ2RiX3Byb21wdCAkIiB7CiAg CQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cCBh bmQgZXZlcnl0aGluZyBpdCBjYWxscyIKICAJCXNldCBjb21tYW5kICJuZXh0IgotSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBl LmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12 YXItc3RhbGUtdHlwZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1 aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuYwkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkv bWkyLXZhci1zdGFsZS10eXBlLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAK IEBAIC0wLDAgKzEsMjYgQEAKICsvKiBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KICsKQEAgLTEyODIxLDEwICsxMjc2MCwxMCBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuYwogKwog KyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0 ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmV4cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmV4cAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysr IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10 eXBlLmV4cAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmV4cAky MDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSw1NyBAQAogKyMg Q29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIwpAQCAtMTI4 ODMsMTAgKzEyODIyLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3Vp dGUvZ2RiLm1pL21pMi12YXItc3RhbGUtdHlwZS5leHAKICttaV9jcmVhdGVfdmFyb2JqICJ2bGEi ICJ2bGEiICJjcmVhdGUgbG9jYWwgdmFyaWFibGUgdmxhIgogKwogK21pX2dkYl90ZXN0ICItdmFy LXVwZGF0ZSAqIiAiXFxeZG9uZSxjaGFuZ2VsaXN0PS4qIiAiLXZhci11cGRhdGUgKiIKLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLm11bHRpL3dhdGNocG9pbnQt bXVsdGkuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVs dGkvd2F0Y2hwb2ludC1tdWx0aS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmMJMjAxMS0wNy0wMyAxMDozMzox MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUv Z2RiLm11bHRpL3dhdGNocG9pbnQtbXVsdGkuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAw MCArMDIwMAogQEAgLTAsMCArMSw1OSBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBH REIsIHRoZSBHTlUgZGVidWdnZXIuCiArCkBAIC0xMjk0NywxMCArMTI4ODYsMTAgQEAgSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1t dWx0aS5jCiArICBtYXJrZXJfZXhpdDIgKCk7CiArICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRp LmV4cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkv d2F0Y2hwb2ludC1tdWx0aS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90 ZXN0c3VpdGUvZ2RiLm11bHRpL3dhdGNocG9pbnQtbXVsdGkuZXhwCTIwMTEtMDctMDMgMTA6MzM6 MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRl L2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmV4cAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAw MDAwMCArMDIwMAogQEAgLTAsMCArMSwxMTMgQEAKICsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTMwNjUsMTAgKzEzMDA0LDEwIEBAIEluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLm11bHRpL3dhdGNocG9pbnQt bXVsdGkuZXhwCiArICAgIH0KICt9CiArCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMKK0luZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVy LWZ1bmMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIu b3B0L2FycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQv YXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAg KzAyMDAKIEBAIC0wLDAgKzEsMjIgQEAKICsvKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIsIHRo ZSBHTlUgZGVidWdnZXIuCiArCkBAIC0xMzA5MiwxMCArMTMwMzEsMTAgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIt ZnVuYy5jCiArewogKyAgcmV0dXJuIGFyclswXTsKICt9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jCitJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdp c3Rlci5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAw MDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5v cHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXkt ZnJvbS1yZWdpc3Rlci5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAt MCwwICsxLDI4IEBACiArLyogVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVn Z2VyLgogKwpAQCAtMTMxMjUsMTAgKzEzMDY0LDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmMKICsKICsgIHJl dHVybiAwOwogK30KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2Ri Lm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuZXhwCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysg Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdp c3Rlci5leHAJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4 cAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSwzMyBAQAog KyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIwpAQCAt MTMxNjMsMTAgKzEzMTAyLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0 c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cAogKyMgU2VlbiByZWdyZXNzaW9u OgogKyMgQWRkcmVzcyByZXF1ZXN0ZWQgZm9yIGlkZW50aWZpZXIgImFyciIgd2hpY2ggaXMgaW4g cmVnaXN0ZXIgJHJkaQogK2dkYl90ZXN0ICJwIGFyclxbMFxdIiAiXFwkXFswLTlcXSsgPSA0MiIK LUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJh eXMuZXhwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNj YWwvYXJyYXlzLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0 ZS9nZGIucGFzY2FsL2FycmF5cy5leHAJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJh eXMuZXhwCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDEw NCBAQAogKyMgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCiArIwpAQCAtMTMyNzIsMTAgKzEzMjExLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhwCiArfQogK2dkYl90ZXN0ICJw cmludCBEeW5BcnJDaGFyIiAiLiogPSAnYWJjZGVmZ2hpamtsbSciICJQcmludCBkeW5hbWljIGFy cmF5IG9mIGNoYXIiCiArCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRl L2dkYi5wYXNjYWwvYXJyYXlzLnBhcworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5wYXMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMucGFzCTIwMTEtMDctMDMgMTA6MzM6 MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRl L2dkYi5wYXNjYWwvYXJyYXlzLnBhcwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIw MAogQEAgLTAsMCArMSw4MiBAQAogK3sKICsgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0xMzM1OSwxMCArMTMyOTgsMTAgQEAgSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5wYXMKICsg IHMgOj0gJ3Rlc3QnIzAnc3RyaW5nJzsKICsgIHdyaXRlbG4ocyk7IHsgc2V0IGJyZWFrcG9pbnQg MiBoZXJlIH0KICtlbmQuCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktZnJhbWUuZXhwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi45MC4yMDExMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAJ MjAxMS0wMi0yNiAxNTowNjoyOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAJMjAxMS0wNy0wMyAxMDoz MzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cAkyMDExLTAyLTI2IDE1OjA2OjI4LjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LWZyYW1lLmV4cAkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAg LTc4LDggKzc4LDYgQEAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBiZnJhbWUgPT0gZ2RiLm5ldwog IAogIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgPT0gZjEiICIgPSBGYWxz ZSIgInRlc3QgZXF1YWxpdHkgY29tcGFyaXNvbiAoZmFsc2UpIgpAQCAtMTMzNzgsMTEgKzEzMzE3 LDExIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1mcmFtZS5leHAKICBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGdkYi5z ZWxlY3RlZF9mcmFtZSAoKSA9PSBmMSIgIiA9IFRydWUiICJ0ZXN0IGdkYi5zZWxlY3RlZF9mcmFt ZSIKICsKICtnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLmJsb2NrICgpIiAi PGdkYi5CbG9jayBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxdKz4iICJ0ZXN0IEZyYW1lLmJs b2NrIgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LXZhbHVlLmV4cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LXZhbHVlLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3 MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCTIwMTEtMDEtMDEg MTY6MzM6NDkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAw MDAwICswMjAwCi1AQCAtMzE4LDYgKzMxOCwxNSBAQCBwcm9jIHRlc3RfdmFsdWVfYWZ0ZXJfZGVh dGgge30geworLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktdmFsdWUuZXhwCTIwMTEtMDQtMjQgMTE6MDQ6MzguMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUu ZXhwCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtMzE5LDYgKzMxOSwx NSBAQCBwcm9jIHRlc3RfdmFsdWVfYWZ0ZXJfZGVhdGgge30gewogICAgICAicHJpbnQgdmFsdWUn cyB0eXBlIgogIH0KICAKQEAgLTEzMzk4LDcgKzEzMzM3LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cAogICMgUmVncmVz c2lvbiB0ZXN0IGZvciBpbnZhbGlkIHN1YnNjcmlwdCBvcGVyYXRpb25zLiAgVGhlIGJ1ZyB3YXMg dGhhdAogICMgdGhlIHR5cGUgb2YgdGhlIHZhbHVlIHdhcyBub3QgYmVpbmcgY2hlY2tlZCBiZWZv cmUgYWxsb3dpbmcgYQogICMgc3Vic2NyaXB0IG9wZXJhdGlvbiB0byBwcm9jZWVkLgotQEAgLTQ1 NSw2ICs0NjQsNyBAQCB0ZXN0X3ZhbHVlX2luX2luZmVyaW9yCitAQCAtNDU2LDYgKzQ2NSw3IEBA IHRlc3RfdmFsdWVfaW5faW5mZXJpb3IKICB0ZXN0X2luZmVyaW9yX2Z1bmN0aW9uX2NhbGwKICB0 ZXN0X2xhenlfc3RyaW5ncwogIHRlc3RfdmFsdWVfYWZ0ZXJfZGVhdGgKQEAgLTEzNDA2LDEwICsx MzM0NSwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktdmFsdWUuZXhwCiAgCiAgIyBUaGUgZm9sbG93aW5nIHRlc3QgcmVjb21waWxlcyB0 aGUgYmluYXJ5IHRvIHRlc3QgZWl0aGVyIEMgb3IgQysrCiAgIyB2YWx1ZXMuIAotSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZv cmstY2hpbGQuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQuYwky MDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQuYwkyMDEx LTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSwxMjcgQEAKICsvKiBU ZXN0IGNhc2UgZm9yIGZvcmdvdHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9m IGEgcHJvY2Vzcy4KICsKQEAgLTEzNTM4LDEwICsxMzQ3NywxMCBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1jaGls ZC5jCiArICBpID0gc2lnYWN0aW9uIChTSUdVU1IxLCAmb2xkYWN0LCBOVUxMKTsKICsgIGFzc2Vy dCAoaSA9PSAwKTsKICt9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1tdC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1tdC5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw Ci0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNo cG9pbnQtZm9yay1tdC5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQt Zm9yay1tdC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsx LDE3NCBAQAogKy8qIFRlc3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3LXdhdGNocG9pbnRzIGFmdGVy IGZvcmsoKS1vZmYgb2YgYSBwcm9jZXNzLgogKwpAQCAtMTM3MTcsMTAgKzEzNjU2LDEwIEBAIElu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hw b2ludC1mb3JrLW10LmMKICsgIG1hcmtfZXhpdCAoKTsKICsgIHJldHVybiAwOwogK30KLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2lu dC1mb3JrLXBhcmVudC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1wYXJlbnQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9k ZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstcGFy ZW50LmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLXBhcmVu dC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDc0IEBA CiArLyogVGVzdCBjYXNlIGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hwb2ludHMgYWZ0ZXIgZm9yaygp LW9mZiBvZiBhIHByb2Nlc3MuCiArCkBAIC0xMzc5NiwxMCArMTM3MzUsMTAgQEAgSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZv cmstcGFyZW50LmMKICsgICAgICBtYXJrZXIgKCk7CiArICAgIH0KICt9Ci1JbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1z dC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L3dhdGNocG9pbnQtZm9yay1zdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1zdC5jCTIwMTEtMDctMDMgMTA6 MzM6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1zdC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEu MDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDYxIEBACiArLyogVGVzdCBjYXNlIGZvciBmb3Jn b3R0ZW4gaHctd2F0Y2hwb2ludHMgYWZ0ZXIgZm9yaygpLW9mZiBvZiBhIHByb2Nlc3MuCiArCkBA IC0xMzg2MiwxMCArMTM4MDEsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstc3QuYwogKyAgbWFya19leGl0ICgp OwogKyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuZXhwCitJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0 Y2hwb2ludC1mb3JrLmV4cAkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50 LWZvcmsuZXhwCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsx LDE0OSBAQAogKyMgQ29weXJpZ2h0IDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCiArCkBAIC0xNDAxNiwxMCArMTM5NTUsMTAgQEAgSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuZXhw CiArfSBlbHNlIHsKICsgICAgdW50ZXN0ZWQgImNoaWxkIgogK30KLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmgKK0lu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hw b2ludC1mb3JrLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmgJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVh ZHMvd2F0Y2hwb2ludC1mb3JrLmgJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAK IEBAIC0wLDAgKzEsMzIgQEAKICsvKiBUZXN0IGNhc2UgZm9yIGZvcmdvdHRlbiBody13YXRjaHBv aW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJvY2Vzcy4KICsKQEAgLTE0MDUzLDEwICsxMzk5 MiwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL3dhdGNocG9pbnQtZm9yay5oCiArCiArZXh0ZXJuIHZvaWQgbWFya2VyICh2b2lkKTsKICtl eHRlcm4gdm9pZCBmb3Jrb2ZmIChpbnQgbnIpOwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL3Rlc3RzdWl0ZS9nZGIudHJhY2Uvc3RhcC10cmFjZS5jCitJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50cmFjZS9zdGFwLXRyYWNlLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRyYWNlL3N0YXAtdHJhY2UuYwky MDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudHJhY2Uvc3RhcC10cmFjZS5jCTIwMTEtMDctMjIgMjA6MDQ6 MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDcxIEBACiArLyogVGhpcyB0ZXN0Y2FzZSBp cyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTE0MTI5LDEwICsxNDA2OCwx MCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50cmFjZS9z dGFwLXRyYWNlLmMKICsKICsgIHJldHVybiAwOwogK30KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRyYWNlL3N0YXAtdHJhY2UuZXhwCitJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50cmFjZS9zdGFwLXRyYWNlLmV4cAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudHJhY2Uvc3RhcC10 cmFjZS5leHAJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnRyYWNlL3N0YXAtdHJhY2UuZXhwCTIwMTEt MDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDEyOSBAQAogKyMgQ29w eXJpZ2h0IDIwMTEKICsjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMTQyNjMs MTAgKzE0MjAyLDEwIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUv Z2RiLnRyYWNlL3N0YXAtdHJhY2UuZXhwCiArCiArIyBGaW5pc2hlZCEKICtnZGJfdGVzdCAidGZp bmQgbm9uZSIgIi4qIiAiIgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0 ZS9saWIvZ2RiLmV4cAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9s aWIvZ2RiLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIv dGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTEtMDMtMjUgMTQ6MDg6MTEuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTEt MDctMDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5v cmlnL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMS0wNy0xNSAxNjoxMToyMi4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5l eHAJMjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0xNDEsNiArMTQxLDEx IEBAIHByb2MgZ2RiX3VubG9hZCB7fSB7CiAgCSAgICBzZW5kX2dkYiAieVxuIgogIAkgICAgZXhw X2NvbnRpbnVlCkBAIC0xNDI3OSwxMCArMTQyMTgsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogIAktcmUgIkRpc2NhcmQgc3ltYm9sIHRh YmxlIGZyb20gLip5IG9yIG4uKiQiIHsKICAJICAgIHNlbmRfZ2RiICJ5XG4iCiAgCSAgICBleHBf Y29udGludWUKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvbGliL3Bh c2NhbC5leHAKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGliL3Bh c2NhbC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvZ2RiL3Rl c3RzdWl0ZS9saWIvcGFzY2FsLmV4cAkyMDExLTAxLTAxIDE2OjMzOjUyLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAky MDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3 MjIub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhwCTIwMTEtMDEtMDEgMTY6MzM6NTIu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2xp Yi9wYXNjYWwuZXhwCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMzcs NiArMzcsOSBAQCBwcm9jIHBhc2NhbF9pbml0IHt9IHsKICAgICAgZ2xvYmFsIHBhc2NhbF9jb21w aWxlcl9pc19mcGMKICAgICAgZ2xvYmFsIGdwY19jb21waWxlcgpAQCAtMTQzMTQsMTEgKzE0MjUz LDExIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2Nh bC5leHAKICAgICAgfQogICAgICBzZXQgcGFzY2FsX2luaXRfZG9uZSAxCiAgfSAgIAotSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3RocmVhZC5jCitJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGhyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9y aWcvZ2RiL3RocmVhZC5jCTIwMTEtMDQtMTkgMTc6MjQ6NDkuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdGhyZWFkLmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAw MDAwMDAgKzAyMDAKLUBAIC0xNDM4LDcgKzE0MzgsOCBAQCB1cGRhdGVfdGhyZWFkX2xpc3QgKHZv aWQpCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90aHJlYWQuYwkyMDExLTA1LTMw IDIwOjA0OjMyLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Ro cmVhZC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtMTQ0MSw3ICsx NDQxLDggQEAgdXBkYXRlX3RocmVhZF9saXN0ICh2b2lkKQogICAgIG5vIHRocmVhZCBpcyBzZWxl Y3RlZCwgb3Igbm8gdGhyZWFkcyBleGlzdC4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAq CkBAIC0xNDMyOCw3ICsxNDI2Nyw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90 aHJlYWQuYwogIHsKICAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBmaW5kX3RocmVhZF9wdGlk IChpbmZlcmlvcl9wdGlkKTsKICAKLUBAIC0xNDQ5LDYgKzE0NTAsMTUgQEAgdGhyZWFkX2lkX21h a2VfdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZAorQEAgLTE0NTIsNiArMTQ1MywxNSBAQCB0aHJl YWRfaWRfbWFrZV92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkCiAgLyogQ29tbWFuZHMgd2l0aCBh IHByZWZpeCBvZiBgdGhyZWFkJy4gICovCiAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnRocmVh ZF9jbWRfbGlzdCA9IE5VTEw7CiAgCkBAIC0xNDM0NCwzMiArMTQyODMsMzIgQEAgSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvZ2RiL3RocmVhZC5jCiAgdm9pZAogIF9pbml0aWFsaXplX3RocmVh ZCAodm9pZCkKICB7Ci1AQCAtMTQ5NCw1ICsxNTA0LDUgQEAgU2hvdyBwcmludGluZyBvZiB0aHJl YWQgZXZlbnRzIChzdWNoIGFzIAorQEAgLTE0OTcsNSArMTUwNyw1IEBAIFNob3cgcHJpbnRpbmcg b2YgdGhyZWFkIGV2ZW50cyAoc3VjaCBhcyAKICAgICAgICAgICBzaG93X3ByaW50X3RocmVhZF9l dmVudHMsCiAgICAgICAgICAgJnNldHByaW50bGlzdCwgJnNob3dwcmludGxpc3QpOwogIAogLSAg Y3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl90aHJlYWQiLCB0aHJlYWRfaWRfbWFrZV92 YWx1ZSk7CiArICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3RocmVhZCIsICZ0aHJl YWRfZnVuY3MsIE5VTEwpOwogIH0KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90b3Au YworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3RvcC5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi90b3AuYwkyMDExLTAzLTEyIDIzOjU5OjI0LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3RvcC5jCTIwMTEtMDct MDMgMTA6MzM6MTEuMDAwMDAwMDAwICswMjAwCi1AQCAtMzQzLDYgKzM0Myw5IEBAIHZvaWQKLSBw cmVwYXJlX2V4ZWN1dGVfY29tbWFuZCAodm9pZCkKLSB7Ci0gICBmcmVlX2FsbF92YWx1ZXMgKCk7 CistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90b3AuYwkyMDExLTA3LTIxIDEzOjAz OjQ1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3RvcC5jCTIw MTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtMzQ3LDYgKzM0Nyw5IEBAIHBy ZXBhcmVfZXhlY3V0ZV9jb21tYW5kICh2b2lkKQorIAorICAgbWFyayA9IHZhbHVlX21hcmsgKCk7 CisgICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX3ZhbHVlX2ZyZWVfdG9fbWFyayAobWFyayk7CiAr I2lmIDAKICsgIGZyZWVfYWxsX3R5cGVzICgpOwogKyNlbmRpZgogIAogICAgLyogV2l0aCBtdWx0 aXBsZSB0aHJlYWRzIHJ1bm5pbmcgd2hpbGUgdGhlIG9uZSB3ZSdyZSBleGFtaW5pbmcgaXMKICAg ICAgIHN0b3BwZWQsIHRoZSBkY2FjaGUgY2FuIGdldCBzdGFsZSB3aXRob3V0IHVzIGJlaW5nIGFi bGUgdG8gZGV0ZWN0Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdHJhY2Vwb2ludC5j CitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdHJhY2Vwb2ludC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi90cmFjZXBvaW50LmMJMjAxMS0wNy0w MiAyMTozMzoxMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90 cmFjZXBvaW50LmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNjAz LDYgKzE2MDMsOCBAQCBzdGFydF90cmFjaW5nICh2b2lkKQorLS0tIGdkYi03LjMuNTAuMjAxMTA3 MjIub3JpZy9nZGIvdHJhY2Vwb2ludC5jCTIwMTEtMDctMDcgMTU6MzI6NTUuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdHJhY2Vwb2ludC5jCTIwMTEtMDctMjIg MjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtMTYwOSw2ICsxNjA5LDggQEAgc3RhcnRfdHJh Y2luZyAodm9pZCkKICAKICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoYnJlYWtwb2ludF9w LCB0cF92ZWMsIGl4LCB0KTsgaXgrKykKICAgICAgewpAQCAtMTQzNzgsNyArMTQzMTcsNyBAQCBJ bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdHJhY2Vwb2ludC5jCiAgICAgICAgaWYgKCh0 LT50eXBlID09IGJwX2Zhc3RfdHJhY2Vwb2ludAogIAkgICA/ICFtYXlfaW5zZXJ0X2Zhc3RfdHJh Y2Vwb2ludHMKICAJICAgOiAhbWF5X2luc2VydF90cmFjZXBvaW50cykpCi1AQCAtMTYxMSw2ICsx NjEzLDkgQEAgc3RhcnRfdHJhY2luZyAodm9pZCkKK0BAIC0xNjE3LDYgKzE2MTksOSBAQCBzdGFy dF90cmFjaW5nICh2b2lkKQogICAgICAgIHQtPm51bWJlcl9vbl90YXJnZXQgPSAwOwogICAgICAg IHRhcmdldF9kb3dubG9hZF90cmFjZXBvaW50ICh0KTsKICAgICAgICB0LT5udW1iZXJfb25fdGFy Z2V0ID0gdC0+bnVtYmVyOwpAQCAtMTQzODgsNyArMTQzMjcsNyBAQCBJbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvdHJhY2Vwb2ludC5jCiAgICAgIH0KICAgIFZFQ19mcmVlIChicmVha3Bv aW50X3AsIHRwX3ZlYyk7CiAgCi1AQCAtMTY3Miw3ICsxNjc3LDI4IEBAIHRyYWNlX3N0b3BfY29t bWFuZCAoY2hhciAqYXJncywgaW50IGZyb20KK0BAIC0xNjc4LDcgKzE2ODMsMjggQEAgdHJhY2Vf c3RvcF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbQogIHZvaWQKICBzdG9wX3RyYWNpbmcg KHZvaWQpCiAgewpAQCAtMTQ0MTcsNyArMTQzNTYsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvdHJhY2Vwb2ludC5jCiAgICAvKiBTaG91bGQgY2hhbmdlIGluIHJlc3BvbnNlIHRv IHJlcGx5PyAgKi8KICAgIGN1cnJlbnRfdHJhY2Vfc3RhdHVzICgpLT5ydW5uaW5nID0gMDsKICB9 Ci1AQCAtNDUxNSw3ICs0NTQxLDggQEAgaW5mb19zdGF0aWNfdHJhY2Vwb2ludF9tYXJrZXJzX2Nv bW1hbmQgKAorQEAgLTQ1MjEsNyArNDU0Nyw4IEBAIGluZm9fc3RhdGljX3RyYWNlcG9pbnRfbWFy a2Vyc19jb21tYW5kICgKICAgICBhdmFpbGFibGUuICAqLwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFs dWUgKgpAQCAtMTQ0MjcsNyArMTQzNjYsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvdHJhY2Vwb2ludC5jCiAgewogICAgTE9OR0VTVCBzaXplOwogICAgZ2RiX2J5dGUgKmJ1ZjsK LUBAIC00Njk0LDYgKzQ3MjEsMTUgQEAgdHJhY2VmcmFtZV9hdmFpbGFibGVfbWVtb3J5IChWRUMo bWVtX3JhbgorQEAgLTQ3MDAsNiArNDcyNywxNSBAQCB0cmFjZWZyYW1lX2F2YWlsYWJsZV9tZW1v cnkgKFZFQyhtZW1fcmFuCiAgICByZXR1cm4gMDsKICB9CiAgCkBAIC0xNDQ0Myw3ICsxNDM4Miw3 IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90cmFjZXBvaW50LmMKICAvKiBtb2R1 bGUgaW5pdGlhbGl6YXRpb24gKi8KICB2b2lkCiAgX2luaXRpYWxpemVfdHJhY2Vwb2ludCAodm9p ZCkKLUBAIC00NzA0LDcgKzQ3NDAsNyBAQCBfaW5pdGlhbGl6ZV90cmFjZXBvaW50ICh2b2lkKQor QEAgLTQ3MTAsNyArNDc0Niw3IEBAIF9pbml0aWFsaXplX3RyYWNlcG9pbnQgKHZvaWQpCiAgICAg ICB2YWx1ZSB3aXRoIGEgdm9pZCB0eXBlZCB2YWx1ZSwgYW5kIHdoZW4gd2UgZ2V0IGhlcmUsIGdk YmFyY2gKICAgICAgIGlzbid0IGluaXRpYWxpemVkIHlldC4gIEF0IHRoaXMgcG9pbnQsIHdlJ3Jl IHF1aXRlIHN1cmUgdGhlcmUKICAgICAgIGlzbid0IGFub3RoZXIgY29udmVuaWVuY2UgdmFyaWFi bGUgb2YgdGhlIHNhbWUgbmFtZS4gICovCkBAIC0xNDQ1MiwxMCArMTQzOTEsMTAgQEAgSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3RyYWNlcG9pbnQuYwogIAogICAgdHJhY2VmcmFtZV9u dW1iZXIgPSAtMTsKICAgIHRyYWNlcG9pbnRfbnVtYmVyID0gLTE7Ci1JbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvdHlwZXByaW50LmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi90eXBlcHJpbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9n ZGIvdHlwZXByaW50LmMJMjAxMS0wMS0xMSAyMjo1MzoyNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4yLjkwLjIwMTEwNzAzL2dkYi90eXBlcHJpbnQuYwkyMDExLTA3LTAzIDEwOjMzOjExLjAw MDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdHlwZXByaW50 LmMJMjAxMS0wMS0xMSAyMjo1MzoyNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi90eXBlcHJpbnQuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIw MAogQEAgLTM2LDYgKzM2LDcgQEAKICAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgogICNpbmNsdWRl ICJleGNlcHRpb25zLmgiCkBAIC0xNDUwOSwxMSArMTQ0NDgsMTEgQEAgSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL3R5cGVwcmludC5jCiAgfQogIAogIHN0YXRpYyB2b2lkCi1JbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdXRpbHMuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3V0aWxzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcv Z2RiL3V0aWxzLmMJMjAxMS0wNS0xNyAyMzoyNjoyOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi91dGlscy5jCTIwMTEtMDctMDMgMTA6MzM6MTEuMDAwMDAwMDAw ICswMjAwCi1AQCAtMjI0Myw2ICsyMjQzLDM2IEBAIHNldF9iYXRjaF9mbGFnX2FuZF9tYWtlX2Ns ZWFudXBfcmVzdG9yZV8KKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3V0aWxzLmMJ MjAxMS0wNy0yMiAwMTo0NjowOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi91dGlscy5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAt MTg3NCw2ICsxODc0LDM2IEBAIHNldF9iYXRjaF9mbGFnX2FuZF9tYWtlX2NsZWFudXBfcmVzdG9y ZV8KICAgIHJldHVybiBiYWNrX3RvOwogIH0KICAKQEAgLTE0NTUwLDEwICsxNDQ4OSwxMCBAQCBJ bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdXRpbHMuYwogIC8qIFNldCB0aGUgc2NyZWVu IHNpemUgYmFzZWQgb24gTElORVNfUEVSX1BBR0UgYW5kIENIQVJTX1BFUl9MSU5FLiAgKi8KICAK ICBzdGF0aWMgdm9pZAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3ZhbGFyaXRoLmMK K0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWxhcml0aC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL2dkYi92YWxhcml0aC5jCTIwMTEtMDItMTggMjA6 MTA6NDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdmFsYXJp dGguYwkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjMuNTAu MjAxMTA3MjIub3JpZy9nZGIvdmFsYXJpdGguYwkyMDExLTAyLTE4IDIwOjEwOjQ2LjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbGFyaXRoLmMJMjAxMS0wNy0y MiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0xOTgsNyArMTk4LDEwIEBAIHZhbHVlX3N1 YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZhbHVlICoKICAgIHN0cnVjdCB0eXBlICphcnJheV90 eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKICAgIHN0cnVjdCB0eXBl ICplbHRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUp KTsKQEAgLTE0NTc3LDEwICsxNDUxNiwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvdmFsYXJpdGguYwogICAgcmV0dXJuIGJpbm9wX3R5cGVzX3VzZXJfZGVmaW5lZF9wIChvcCwg dmFsdWVfdHlwZSAoYXJnMSksIHZhbHVlX3R5cGUgKGFyZzIpKTsKICB9CiAgCi1JbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvdmFsb3BzLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi92YWxvcHMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9n ZGIvdmFsb3BzLmMJMjAxMS0wMy0yOSAxOTowNDozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi92YWxvcHMuYwkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAw MCArMDIwMAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdmFsb3BzLmMJMjAxMS0w Ny0xNCAxNzowMDoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi92YWxvcHMuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTQ3LDYg KzQ3LDcgQEAKICAjaW5jbHVkZSAib2JqZmlsZXMuaCIKICAjaW5jbHVkZSAic3ltdGFiLmgiCkBA IC0xNDcyMyw3ICsxNDY2Miw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi92YWxv cHMuYwogIH0KICAKICAvKiBHaXZlbiBhIHZhbHVlIHdoaWNoIGlzIGEgZnVuY3Rpb24sIHJldHVy biBhIHZhbHVlIHdoaWNoIGlzIGEgcG9pbnRlcgotQEAgLTM2OTUsNiArMzc3OSw4IEBAIHZhbHVl X3NsaWNlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG8KK0BAIC0zNjc2LDYgKzM3NjAsOCBA QCB2YWx1ZV9zbGljZSAoc3RydWN0IHZhbHVlICphcnJheSwgaW50IGxvCiAgCQkJCQlUWVBFX1RB UkdFVF9UWVBFIChyYW5nZV90eXBlKSwKICAJCQkJCWxvd2JvdW5kLCAKICAJCQkJCWxvd2JvdW5k ICsgbGVuZ3RoIC0gMSk7CkBAIC0xNDczMiwxOSArMTQ2NzEsMTkgQEAgSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL3ZhbG9wcy5jCiAgICBpZiAoVFlQRV9DT0RFIChhcnJheV90eXBlKSA9 PSBUWVBFX0NPREVfQklUU1RSSU5HKQogICAgICB7CiAgICAgICAgaW50IGk7Ci1JbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9nZGIvdmFscHJpbnQuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3ZhbHByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9y aWcvZ2RiL3ZhbHByaW50LmMJMjAxMS0wNC0yOSAyMToyMzowNS4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi92YWxwcmludC5jCTIwMTEtMDctMDMgMTA6MzM6MTEu MDAwMDAwMDAwICswMjAwCi1AQCAtMzYsNiArMzYsNyBAQAotICNpbmNsdWRlICJkZnAuaCIKLSAj aW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgotICNpbmNsdWRlICJhZGEtbGFuZy5oIgorLS0tIGdk Yi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdmFscHJpbnQuYwkyMDExLTA2LTI5IDE3OjMyOjM5 LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbHByaW50LmMJ MjAxMS0wNy0yMiAyMDowNDoyMS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0zOSw2ICszOSw3IEBACisg I2luY2x1ZGUgImdkYl9vYnN0YWNrLmgiCisgI2luY2x1ZGUgImNoYXJzZXQuaCIKKyAjaW5jbHVk ZSA8Y3R5cGUuaD4KICsjaW5jbHVkZSAiZHdhcmYybG9jLmgiCiAgCiAgI2luY2x1ZGUgPGVycm5v Lmg+CiAgCi1AQCAtMjM5LDcgKzI0MCw2IEBAIHNjYWxhcl90eXBlX3AgKHN0cnVjdCB0eXBlICp0 eXBlKQorQEAgLTI0Miw3ICsyNDMsNiBAQCBzY2FsYXJfdHlwZV9wIChzdHJ1Y3QgdHlwZSAqdHlw ZSkKICAgICAgY2FzZSBUWVBFX0NPREVfU1RSVUNUOgogICAgICBjYXNlIFRZUEVfQ09ERV9VTklP TjoKICAgICAgY2FzZSBUWVBFX0NPREVfU0VUOgpAQCAtMTQ3NTIsNyArMTQ2OTEsNyBAQCBJbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdmFscHJpbnQuYwogICAgICBjYXNlIFRZUEVfQ09E RV9CSVRTVFJJTkc6CiAgICAgICAgcmV0dXJuIDA7CiAgICAgIGRlZmF1bHQ6Ci1AQCAtMTE5Myw2 ICsxMTkzLDcgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdAorQEAg LTExOTYsNiArMTE5Niw3IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUg KnQKICB7CiAgICB1bnNpZ25lZCBpbnQgdGhpbmdzX3ByaW50ZWQgPSAwOwogICAgdW5zaWduZWQg bGVuOwpAQCAtMTQ3NjAsNyArMTQ2OTksNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9n ZGIvdmFscHJpbnQuYwogICAgc3RydWN0IHR5cGUgKmVsdHR5cGUsICppbmRleF90eXBlOwogICAg dW5zaWduZWQgZWx0bGVuOwogICAgLyogUG9zaXRpb24gb2YgdGhlIGFycmF5IGVsZW1lbnQgd2Ug YXJlIGV4YW1pbmluZyB0byBzZWUKLUBAIC0xMjAxLDkgKzEyMDIsMzMgQEAgdmFsX3ByaW50X2Fy cmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdAorQEAgLTEyMDQsOSArMTIwNSwzMyBAQCB2YWxf cHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0CiAgICAvKiBOdW1iZXIgb2YgcmVw ZXRpdGlvbnMgd2UgaGF2ZSBkZXRlY3RlZCBzbyBmYXIuICAqLwogICAgdW5zaWduZWQgaW50IHJl cHM7CiAgICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKQEAgLTE0Nzk2LDcgKzE0NzM1 LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3ZhbHByaW50LmMKICAgIGluZGV4 X3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUpOwogIAogICAgaWYgKGdldF9hcnJheV9ib3Vu ZHMgKHR5cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSkKLUBAIC0xMjkwLDYgKzEzMTUsOCBA QCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0CitAQCAtMTI5Myw2ICsx MzE4LDggQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdAogICAgICB7 CiAgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7CiAgICAgIH0KQEAgLTE0 ODA1LDEwICsxNDc0NCwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdmFscHJp bnQuYwogIH0KICAKICAvKiBSZWFkIExFTiBieXRlcyBvZiB0YXJnZXQgbWVtb3J5IGF0IGFkZHJl c3MgTUVNQUREUiwgcGxhY2luZyB0aGUKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi92 YWx1ZS5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsdWUuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvdmFsdWUuYwkyMDExLTAyLTI3IDIx OjU3OjE1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3ZhbHVl LmMJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4zLjUwLjIw MTEwNzIyLm9yaWcvZ2RiL3ZhbHVlLmMJMjAxMS0wNy0xNCAxNzowMDoyMC4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWx1ZS5jCTIwMTEtMDctMjIgMjA6MDQ6 MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtNDMsNiArNDMsNyBAQAogICNpbmNsdWRlICJweXRob24v cHl0aG9uLmgiCiAgI2luY2x1ZGUgPGN0eXBlLmg+CkBAIC0xNDgxNyw3ICsxNDc1Niw3IEBAIElu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi92YWx1ZS5jCiAgCiAgLyogUHJvdG90eXBlcyBm b3IgZXhwb3J0ZWQgZnVuY3Rpb25zLiAgKi8KICAKLUBAIC0xMzM5LDEyICsxMzQwLDE1IEBAIHZv aWQKK0BAIC0xMzU0LDEyICsxMzU1LDE1IEBAIHZvaWQKICBzZXRfdmFsdWVfY29tcG9uZW50X2xv Y2F0aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBvbmVudCwKICAJCQkgICAgICBjb25zdCBzdHJ1Y3Qg dmFsdWUgKndob2xlKQogIHsKQEAgLTE0ODMyLDggKzE0NzcxLDggQEAgSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvZ2RiL3ZhbHVlLmMKICsKICAgIGlmICh3aG9sZS0+bHZhbCA9PSBsdmFsX2Nv bXB1dGVkKQogICAgICB7Ci0gICAgICAgc3RydWN0IGx2YWxfZnVuY3MgKmZ1bmNzID0gd2hvbGUt PmxvY2F0aW9uLmNvbXB1dGVkLmZ1bmNzOwotQEAgLTEzNTIsNiArMTM1NiwxMiBAQCBzZXRfdmFs dWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFsCisgICAgICAgY29uc3Qgc3RydWN0IGx2 YWxfZnVuY3MgKmZ1bmNzID0gd2hvbGUtPmxvY2F0aW9uLmNvbXB1dGVkLmZ1bmNzOworQEAgLTEz NjcsNiArMTM3MSwxMiBAQCBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFs CiAgICAgICAgaWYgKGZ1bmNzLT5jb3B5X2Nsb3N1cmUpCiAgICAgICAgICBjb21wb25lbnQtPmxv Y2F0aW9uLmNvbXB1dGVkLmNsb3N1cmUgPSBmdW5jcy0+Y29weV9jbG9zdXJlICh3aG9sZSk7CiAg ICAgIH0KQEAgLTE0ODQ2LDcgKzE0Nzg1LDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv Z2RiL3ZhbHVlLmMKICB9CiAgCiAgDAotQEAgLTE0ODUsNiArMTQ5NSwzMSBAQCBzaG93X3ZhbHVl cyAoY2hhciAqbnVtX2V4cCwgaW50IGZyb21fdHR5CitAQCAtMTUwMCw2ICsxNTEwLDMxIEBAIHNo b3dfdmFsdWVzIChjaGFyICpudW1fZXhwLCBpbnQgZnJvbV90dHkKICAgICAgICBudW1fZXhwWzFd ID0gJ1wwJzsKICAgICAgfQogIH0KQEAgLTE0ODc4LDcgKzE0ODE3LDcgQEAgSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvZ2RiL3ZhbHVlLmMKICAMCiAgLyogSW50ZXJuYWwgdmFyaWFibGVzLiAg VGhlc2UgYXJlIHZhcmlhYmxlcyB3aXRoaW4gdGhlIGRlYnVnZ2VyCiAgICAgdGhhdCBob2xkIHZh bHVlcyBhc3NpZ25lZCBieSBkZWJ1Z2dlciBjb21tYW5kcy4KLUBAIC0xNTMwLDcgKzE1NjUsMTQg QEAgc3RydWN0IGludGVybmFsdmFyCitAQCAtMTU0NSw3ICsxNTgwLDE0IEBAIHN0cnVjdCBpbnRl cm5hbHZhcgogICAgICAgIHN0cnVjdCB2YWx1ZSAqdmFsdWU7CiAgCiAgICAgICAgLyogVGhlIGNh bGwtYmFjayByb3V0aW5lIHVzZWQgd2l0aCBJTlRFUk5BTFZBUl9NQUtFX1ZBTFVFLiAgKi8KQEAg LTE0ODk0LDcgKzE0ODMzLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3ZhbHVl LmMKICAKICAgICAgICAvKiBUaGUgaW50ZXJuYWwgZnVuY3Rpb24gdXNlZCB3aXRoIElOVEVSTkFM VkFSX0ZVTkNUSU9OLiAgKi8KICAgICAgICBzdHJ1Y3QKLUBAIC0xNjI5LDE4ICsxNjcxLDM5IEBA IGNyZWF0ZV9pbnRlcm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSkKK0BAIC0xNjQ0LDE4ICsxNjg2 LDM5IEBAIGNyZWF0ZV9pbnRlcm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSkKICAvKiBDcmVhdGUg YW4gaW50ZXJuYWwgdmFyaWFibGUgd2l0aCBuYW1lIE5BTUUgYW5kIHJlZ2lzdGVyIEZVTiBhcyB0 aGUKICAgICBmdW5jdGlvbiB0aGF0IHZhbHVlX29mX2ludGVybmFsdmFyIHVzZXMgdG8gY3JlYXRl IGEgdmFsdWUgd2hlbmV2ZXIKICAgICB0aGlzIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQuICBOQU1F IHNob3VsZCBub3Qgbm9ybWFsbHkgaW5jbHVkZSBhCkBAIC0xNDkzNyw3ICsxNDg3Niw3IEBAIElu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi92YWx1ZS5jCiAgLyogTG9vayB1cCBhbiBpbnRl cm5hbCB2YXJpYWJsZSB3aXRoIG5hbWUgTkFNRS4gIE5BTUUgc2hvdWxkIG5vdAogICAgIG5vcm1h bGx5IGluY2x1ZGUgYSBkb2xsYXIgc2lnbi4KICAKLUBAIC0xNzEzLDcgKzE3NzYsOCBAQCB2YWx1 ZV9vZl9pbnRlcm5hbHZhciAoc3RydWN0IGdkYmFyY2ggKmdkCitAQCAtMTcyOCw3ICsxNzkxLDgg QEAgdmFsdWVfb2ZfaW50ZXJuYWx2YXIgKHN0cnVjdCBnZGJhcmNoICpnZAogICAgICAgIGJyZWFr OwogIAogICAgICBjYXNlIElOVEVSTkFMVkFSX01BS0VfVkFMVUU6CkBAIC0xNDk0Nyw3ICsxNDg4 Niw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi92YWx1ZS5jCiAgICAgICAgYnJl YWs7CiAgCiAgICAgIGRlZmF1bHQ6Ci1AQCAtMTkwOSw2ICsxOTczLDExIEBAIGNsZWFyX2ludGVy bmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnYKK0BAIC0xOTI0LDYgKzE5ODgsMTEgQEAgY2xl YXJfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdgogICAgICAgIHhmcmVlICh2YXIt PnUuc3RyaW5nKTsKICAgICAgICBicmVhazsKICAKQEAgLTE0OTU5LDcgKzE0ODk4LDcgQEAgSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3ZhbHVlLmMKICAgICAgZGVmYXVsdDoKICAgICAg ICBicmVhazsKICAgICAgfQotQEAgLTE5NjMsNiArMjAzMiwzOCBAQCBjYWxsX2ludGVybmFsX2Z1 bmN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqCitAQCAtMTk3OCw2ICsyMDQ3LDM4IEBAIGNhbGxfaW50 ZXJuYWxfZnVuY3Rpb24gKHN0cnVjdCBnZGJhcmNoICoKICAgIHJldHVybiAoKmlmbi0+aGFuZGxl cikgKGdkYmFyY2gsIGxhbmd1YWdlLCBpZm4tPmNvb2tpZSwgYXJnYywgYXJndik7CiAgfQogIApA QCAtMTQ5OTgsNyArMTQ5MzcsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdmFs dWUuYwogIC8qIFRoZSAnZnVuY3Rpb24nIGNvbW1hbmQuICBUaGlzIGRvZXMgbm90aGluZyAtLSBp dCBpcyBqdXN0IGEKICAgICBwbGFjZWhvbGRlciB0byBsZXQgImhlbHAgZnVuY3Rpb24gTkFNRSIg d29yay4gIFRoaXMgaXMgYWxzbyB1c2VkIGFzCiAgICAgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRo ZSBzdWItY29tbWFuZCB0aGF0IGlzIGNyZWF0ZWQgd2hlbgotQEAgLTIwMTAsMTEgKzIxMTEsMTAg QEAgcHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLAorQEAgLTIwMjUsMTEg KzIxMjYsMTAgQEAgcHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLAogIAkJ ICAgIGh0YWJfdCBjb3BpZWRfdHlwZXMpCiAgewogICAgaWYgKFRZUEVfT0JKRklMRSAodmFsdWUt PnR5cGUpID09IG9iamZpbGUpCkBAIC0xNTAxMiw3ICsxNDk1MSw3IEBAIEluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi92YWx1ZS5jCiAgCQkJCQkJIGNvcGllZF90eXBlcyk7CiAgfQogIAot QEAgLTIwMjksNyArMjEyOSw3IEBAIHByZXNlcnZlX29uZV9pbnRlcm5hbHZhciAoc3RydWN0IGlu dGVybmEKK0BAIC0yMDQ0LDcgKzIxNDQsNyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0 cnVjdCBpbnRlcm5hCiAgICAgIGNhc2UgSU5URVJOQUxWQVJfSU5URUdFUjoKICAgICAgICBpZiAo dmFyLT51LmludGVnZXIudHlwZSAmJiBUWVBFX09CSkZJTEUgKHZhci0+dS5pbnRlZ2VyLnR5cGUp ID09IG9iamZpbGUpCiAgCXZhci0+dS5pbnRlZ2VyLnR5cGUKQEAgLTE1MDIxLDcgKzE0OTYwLDcg QEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3ZhbHVlLmMKICAgICAgICBicmVhazsK ICAKICAgICAgY2FzZSBJTlRFUk5BTFZBUl9WQUxVRToKLUBAIC0yMDgwLDE0ICsyMTgwLDIyIEBA IHNob3dfY29udmVuaWVuY2UgKGNoYXIgKmlnbm9yZSwgaW50IGZyb20KK0BAIC0yMDk1LDE0ICsy MTk1LDIyIEBAIHNob3dfY29udmVuaWVuY2UgKGNoYXIgKmlnbm9yZSwgaW50IGZyb20KICAgIGdl dF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsKICAgIGZvciAodmFyID0gaW50ZXJuYWx2YXJz OyB2YXI7IHZhciA9IHZhci0+bmV4dCkKICAgICAgewpAQCAtMTUwNDcsNyArMTQ5ODYsNyBAQCBJ bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdmFsdWUuYwogICAgICB9CiAgICBpZiAoIXZh cnNlZW4pCiAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJObyBkZWJ1Z2dlciBjb252ZW5pZW5j ZSB2YXJpYWJsZXMgbm93IGRlZmluZWQuXG4iCi1AQCAtMzA0Nyw3ICszMTU1LDI0IEBAIHZhbHVl X2Zyb21faGlzdG9yeV9yZWYgKGNoYXIgKmgsIGNoYXIgKioKK0BAIC0zMDc1LDcgKzMxODMsMjQg QEAgdmFsdWVfZnJvbV9oaXN0b3J5X3JlZiAoY2hhciAqaCwgY2hhciAqKgogIHN0cnVjdCB2YWx1 ZSAqCiAgY29lcmNlX3JlZiAoc3RydWN0IHZhbHVlICphcmcpCiAgewpAQCAtMTUwNzMsNyArMTUw MTIsNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdmFsdWUuYwogIAogICAgaWYg KFRZUEVfQ09ERSAodmFsdWVfdHlwZV9hcmdfdG1wKSA9PSBUWVBFX0NPREVfUkVGKQogICAgICBh cmcgPSB2YWx1ZV9hdF9sYXp5IChUWVBFX1RBUkdFVF9UWVBFICh2YWx1ZV90eXBlX2FyZ190bXAp LAotQEAgLTMxNDUsNCArMzI3MCwxMCBAQCBWQVJJQUJMRSBpcyBhbHJlYWR5IGluaXRpYWxpemVk LiIpKTsKK0BAIC0zMTczLDQgKzMyOTgsMTAgQEAgVkFSSUFCTEUgaXMgYWxyZWFkeSBpbml0aWFs aXplZC4iKSk7CiAgICBhZGRfcHJlZml4X2NtZCAoImZ1bmN0aW9uIiwgbm9fY2xhc3MsIGZ1bmN0 aW9uX2NvbW1hbmQsIF8oIlwKICBQbGFjZWhvbGRlciBjb21tYW5kIGZvciBzaG93aW5nIGhlbHAg b24gY29udmVuaWVuY2UgZnVuY3Rpb25zLiIpLAogIAkJICAmZnVuY3Rpb25saXN0LCAiZnVuY3Rp b24gIiwgMCwgJmNtZGxpc3QpOwpAQCAtMTUwODQsMTEgKzE1MDIzLDExIEBAIEluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNzAzL2dkYi92YWx1ZS5jCiArICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2Vk ICh2YWx1ZV90eXBlc19tYXJrX3VzZWQpOwogKyNlbmRpZgogIH0KLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL2dkYi92YWx1ZS5oCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFs dWUuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvdmFsdWUu aAkyMDExLTAzLTA0IDIxOjA3OjIyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAx MTA3MDMvZ2RiL3ZhbHVlLmgJMjAxMS0wNy0wMyAxMDozMzoxMS4wMDAwMDAwMDAgKzAyMDAKLUBA IC00NzMsNiArNDczLDEwIEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Zyb21fZGVjZmxv YXQKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3ZhbHVlLmgJMjAxMS0wNy0xNCAx NzowMDoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWx1 ZS5oCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAwCitAQCAtNDc1LDYgKzQ3NSwx MCBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9mcm9tX2RlY2Zsb2F0CiAgCQkJCQkgIGNv bnN0IGdkYl9ieXRlICpkZWNieXRlcyk7CiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfZnJv bV9oaXN0b3J5X3JlZiAoY2hhciAqLCBjaGFyICoqKTsKICAKQEAgLTE1MDk5LDcgKzE1MDM4LDcg QEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3ZhbHVlLmgKICBleHRlcm4gc3RydWN0 IHZhbHVlICp2YWx1ZV9hdCAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyKTsKICBl eHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9hdF9sYXp5IChzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09S RV9BRERSIGFkZHIpOwogIAotQEAgLTY5NywxMCArNzAxLDUyIEBAIGV4dGVybiBzdHJ1Y3QgaW50 ZXJuYWx2YXIgKmxvb2t1cF9vbmx5X2kKK0BAIC03MDAsMTAgKzcwNCw1MiBAQCBleHRlcm4gc3Ry dWN0IGludGVybmFsdmFyICpsb29rdXBfb25seV9pCiAgCiAgZXh0ZXJuIHN0cnVjdCBpbnRlcm5h bHZhciAqY3JlYXRlX2ludGVybmFsdmFyIChjb25zdCBjaGFyICpuYW1lKTsKICAKQEAgLTE1MTU1 LDExICsxNTA5NCwxMSBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvdmFsdWUuaAog IAogIGV4dGVybiBzdHJ1Y3QgaW50ZXJuYWx2YXIgKmxvb2t1cF9pbnRlcm5hbHZhciAoY29uc3Qg Y2hhciAqbmFtZSk7CiAgCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvd2luZG93cy10 ZGVwLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi93aW5kb3dzLXRkZXAuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvd2luZG93cy10ZGVwLmMJ MjAxMS0wMS0xMiAwMjoyMzoyOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEw NzAzL2dkYi93aW5kb3dzLXRkZXAuYwkyMDExLTA3LTAzIDEwOjMzOjExLjAwMDAwMDAwMCArMDIw MAotQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0aWMgc3RydWN0IGx2YWxfZnVuY3MgdGxiX3ZhbHVl X2Z1bmNzCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi93aW5kb3dzLXRkZXAuYwky MDExLTA3LTE0IDE3OjAwOjIwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3dpbmRvd3MtdGRlcC5jCTIwMTEtMDctMjIgMjA6MDQ6MjEuMDAwMDAwMDAwICswMjAw CitAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbHZhbF9mdW5jcyB0bGJf dmFsdWUKICAgICBpZiB0aGVyZSdzIG5vIG9iamVjdCBhdmFpbGFibGUuICAqLwogIAogIHN0YXRp YyBzdHJ1Y3QgdmFsdWUgKgpAQCAtMTUxOTEsMTEgKzE1MTMwLDExIEBAIEluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi93aW5kb3dzLXRkZXAuYwogLSAgY3JlYXRlX2ludGVybmFsdmFyX3R5 cGVfbGF6eSAoIl90bGIiLCB0bGJfbWFrZV92YWx1ZSk7CiArICBjcmVhdGVfaW50ZXJuYWx2YXJf dHlwZV9sYXp5ICgiX3RsYiIsICZ0bGJfZnVuY3MsIE5VTEwpOwogIH0KLUluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL2dkYi94Y29mZnJlYWQuYworSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3hjb2ZmcmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmln L2dkYi94Y29mZnJlYWQuYwkyMDExLTAzLTA3IDE3OjE3OjI5LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3hjb2ZmcmVhZC5jCTIwMTEtMDctMDMgMTA6MzM6MTEu MDAwMDAwMDAwICswMjAwCi1AQCAtMzA5MCw2ICszMDkwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBzeW1fZm5zIHhjb2ZmX3N5bV9mbgorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIv eGNvZmZyZWFkLmMJMjAxMS0wNi0wNyAxNDozMTowNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi94Y29mZnJlYWQuYwkyMDExLTA3LTIyIDIwOjA0OjIxLjAwMDAw MDAwMCArMDIwMAorQEAgLTMxMjMsNiArMzEyMyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3lt X2ZucyB4Y29mZl9zeW1fZm4KICAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50cywJLyogR2V0IHNl Z21lbnQgaW5mb3JtYXRpb24gZnJvbSBhIGZpbGUuICAqLwogICAgYWl4X3Byb2Nlc3NfbGluZW5v cywKICAgIGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSwJLyogUmVsb2NhdGUgYSBkZWJ1ZyBzZWN0 aW9uLiAgKi8KCmRpZmYgLS1naXQgYS9nZGItYno1MzMxNzYtZm9ydHJhbi1vbXAtc3RlcC5wYXRj aCBiL2dkYi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoCmluZGV4IGI5YWVmZDUuLjJj ZGRhYzMgMTAwNjQ0Ci0tLSBhL2dkYi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoCisr KyBiL2dkYi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoCkBAIC02OCw3ICs2OCw3IEBA IEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21w LXN0ZXAuZXhwCiArCiArc2V0IHRlc3RmaWxlICJvbXAtc3RlcCIKICtzZXQgc3JjZmlsZSAke3Rl c3RmaWxlfS5mOTAKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRl c3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBmNzcgYWRkaXRpb25hbF9mbGFncz0tZm9wZW5tcH1dIH0g eworK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNy Y2ZpbGUge2RlYnVnIGY5MCBhZGRpdGlvbmFsX2ZsYWdzPS1mb3Blbm1wfV0gfSB7CiArICAgIHJl dHVybiAtMQogK30KICsKCmRpZmYgLS1naXQgYS9nZGItYno1NDE4NjYtcndhdGNoLWJlZm9yZS1y dW4ucGF0Y2ggYi9nZGItYno1NDE4NjYtcndhdGNoLWJlZm9yZS1ydW4ucGF0Y2gKaW5kZXggOWU5 Y2IyYS4uYTgxZDYyNyAxMDA2NDQKLS0tIGEvZ2RiLWJ6NTQxODY2LXJ3YXRjaC1iZWZvcmUtcnVu LnBhdGNoCisrKyBiL2dkYi1iejU0MTg2Ni1yd2F0Y2gtYmVmb3JlLXJ1bi5wYXRjaApAQCAtMSwx OCArMSwyMCBAQAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2NvbmZpZy9pMzg2L2xp bnV4NjQubWgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWcvaTM4Ni9saW51 eDY0Lm1oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDExNy5vcmlnL2dkYi9jb25m aWcvaTM4Ni9saW51eDY0Lm1oCTIwMTAtMDUtMjggMjA6NTA6MzEuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvY29uZmlnL2kzODYvbGludXg2NC5taAkyMDExLTAx LTE3IDE2OjAxOjQ4LjAwMDAwMDAwMCArMDEwMAotQEAgLTIsNyArMiw3IEBACi0gTkFUREVQRklM RVM9IGluZi1wdHJhY2UubyBmb3JrLWNoaWxkLm8gXAotIAlpMzg2LW5hdC5vIGFtZDY0LW5hdC5v IGFtZDY0LWxpbnV4LW5hdC5vIGxpbnV4LW5hdC5vIFwKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIy Lm9yaWcvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4NjQubWgJMjAxMS0wNy0yMiAwMTo0NjoxMC4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWcvaTM4Ni9saW51 eDY0Lm1oCTIwMTEtMDctMjIgMTk6MzI6NDEuMDAwMDAwMDAwICswMjAwCitAQCAtMyw3ICszLDcg QEAgTkFUREVQRklMRVM9IGluZi1wdHJhY2UubyBmb3JrLWNoaWxkLm8gXAorIAlpMzg2LW5hdC5v IGFtZDY0LW5hdC5vIGFtZDY0LWxpbnV4LW5hdC5vIFwKKyAJbGludXgtbmF0Lm8gbGludXgtb3Nk YXRhLm8gXAogIAlwcm9jLXNlcnZpY2UubyBsaW51eC10aHJlYWQtZGIubyBsaW51eC1mb3JrLm8K IC1OQVRfRklMRT0gY29uZmlnL25tLWxpbnV4LmgKICtOQVRfRklMRT0gbm0tbGludXg2NC5oCiAg TkFUX0NERVBTID0gJChzcmNkaXIpL3Byb2Mtc2VydmljZS5saXN0CiAgCiAgIyBUaGUgZHluYW1p Y2FsbHkgbG9hZGVkIGxpYnRocmVhZF9kYiBuZWVkcyBhY2Nlc3MgdG8gc3ltYm9scyBpbiB0aGUK LS0tLSBnZGItNy4yL2dkYi9jb25maWcvaTM4Ni9saW51eC5taC1vcmlnCTIwMTAtMDYtMTEgMTQ6 MDg6NTEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi9nZGIvY29uZmlnL2kzODYvbGludXgu bWgJMjAxMS0wMy0xOCAxMjowMDozMi4wMDAwMDAwMDAgKzAxMDAKK0luZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9jb25maWcvaTM4Ni9saW51eC5taAorPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03 LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvY29uZmlnL2kzODYvbGludXgubWgJMjAxMS0wNy0yMiAw MTo0NjoxMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25m aWcvaTM4Ni9saW51eC5taAkyMDExLTA3LTIyIDE5OjMyOjIxLjAwMDAwMDAwMCArMDIwMAogQEAg LTEsNiArMSw2IEBACiAgIyBIb3N0OiBJbnRlbCAzODYgcnVubmluZyBHTlUvTGludXguCiAgCkBA IC0yMSw4ICsyMywxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvY29uZmlnL2kz ODYvbGludXg2NC5taAogIE5BVERFUEZJTEVTPSBpbmYtcHRyYWNlLm8gZm9yay1jaGlsZC5vIFwK ICAJaTM4Ni1uYXQubyBpMzg2LWxpbnV4LW5hdC5vIFwKICAJcHJvYy1zZXJ2aWNlLm8gbGludXgt dGhyZWFkLWRiLm8gXAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZy9pMzg2 L25tLWxpbnV4LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9jb25maWcvaTM4 Ni9ubS1saW51eC5oCTIwMTAtMDctMTMgMTk6MDI6MjguMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvY29uZmlnL2kzODYvbm0tbGludXguaAkyMDExLTA3LTIyIDE5 OjMyOjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSwyOCBAQAogKy8qIE5hdGl2ZSBzdXBw b3J0IGZvciBHTlUvTGludXggaTM4Ni4KICsKQEAgLTUyLDEwICs1NiwxMCBAQCBJbmRleDogZ2Ri LTcuMi41MC4yMDExMDExNy9nZGIvY29uZmlnL2kzODYvbGludXg2NC5taAogKyNkZWZpbmUgdGFy Z2V0X2Nhbl91c2VfaGFyZHdhcmVfd2F0Y2hwb2ludCh0eXBlLCBjbnQsIG90KSAxCiArCiArI2Vu ZGlmIC8qIE5NX0xJTlVYNjRfSCAqLwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2Nv bmZpZy9pMzg2L25tLWxpbnV4NjQuaAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Nv bmZpZy9pMzg2L25tLWxpbnV4NjQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAx LTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMTAxMTcvZ2Ri L2NvbmZpZy9pMzg2L25tLWxpbnV4NjQuaAkyMDExLTAxLTE3IDE2OjAxOjQ4LjAwMDAwMDAwMCAr MDEwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQu aAkyMDExLTA3LTIyIDE5OjMyOjIxLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSwyOCBAQAog Ky8qIE5hdGl2ZSBzdXBwb3J0IGZvciBHTlUvTGludXggYW1kNjQuCiArCkBAIC04NSwxMSArODks MTEgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4 NjQuaAogKyNkZWZpbmUgdGFyZ2V0X2Nhbl91c2VfaGFyZHdhcmVfd2F0Y2hwb2ludCh0eXBlLCBj bnQsIG90KSAxCiArCiArI2VuZGlmIC8qIE5NX0xJTlVYNjRfSCAqLwotSW5kZXg6IGdkYi03LjIu NTAuMjAxMTAxMTcvZ2RiL3RhcmdldC5oCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGFyZ2V0LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMTE3Lm9yaWcvZ2RiL3Rh cmdldC5oCTIwMTEtMDEtMTQgMTQ6NDc6MTUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41 MC4yMDExMDExNy9nZGIvdGFyZ2V0LmgJMjAxMS0wMS0xNyAxNjowMjowOC4wMDAwMDAwMDAgKzAx MDAKLUBAIC0xMzE4LDggKzEzMTgsMTAgQEAgZXh0ZXJuIGNoYXIgKm5vcm1hbF9waWRfdG9fc3Ry IChwdGlkX3QgcAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdGFyZ2V0LmgJMjAx MS0wNi0wNiAxNDo0NzowNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi90YXJnZXQuaAkyMDExLTA3LTIyIDE5OjMyOjIxLjAwMDAwMDAwMCArMDIwMAorQEAgLTEz NDksOCArMTM0OSwxMCBAQCBleHRlcm4gY2hhciAqdGFyZ2V0X3RocmVhZF9uYW1lIChzdHJ1Y3Qg CiAgICAgYnBfaGFyZHdhcmVfYnJlYWtwb2ludC4gIENOVCBpcyB0aGUgbnVtYmVyIG9mIHN1Y2gg d2F0Y2hwb2ludHMgdXNlZCBzbyBmYXIKICAgICAoaW5jbHVkaW5nIHRoaXMgb25lPykuICBPVEhF UlRZUEUgaXMgd2hvIGtub3dzIHdoYXQuLi4gICovCiAgCkBAIC0xMDAsMTAgKzEwNCwxMCBAQCBJ bmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvdGFyZ2V0LmgKICAKICAvKiBSZXR1cm5zIHRo ZSBudW1iZXIgb2YgZGVidWcgcmVnaXN0ZXJzIG5lZWRlZCB0byB3YXRjaCB0aGUgZ2l2ZW4KICAg ICBtZW1vcnkgcmVnaW9uLCBvciB6ZXJvIGlmIG5vdCBzdXBwb3J0ZWQuICAqLwotSW5kZXg6IGdk Yi03LjIuNTAuMjAxMTAxMTcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWh3LWJl Zm9yZS1ydW4uZXhwCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3dhdGNocG9pbnQtaHctYmVmb3JlLXJ1bi5leHAKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUw LjIwMTEwMTE3L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1ody1iZWZvcmUtcnVu LmV4cAkyMDExLTAxLTE3IDE2OjAxOjQ4LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWh3LWJlZm9yZS1ydW4u ZXhwCTIwMTEtMDctMjIgMTk6MzI6MjEuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDQwIEBA CiArIyBDb3B5cmlnaHQgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K ICsKCmRpZmYgLS1naXQgYS9nZGItYno1NjgyNDgtb29tLWlzLWVycm9yLnBhdGNoIGIvZ2RiLWJ6 NTY4MjQ4LW9vbS1pcy1lcnJvci5wYXRjaAppbmRleCAyYWFmNTIyLi4wNDVkMzRlIDEwMDY0NAot LS0gYS9nZGItYno1NjgyNDgtb29tLWlzLWVycm9yLnBhdGNoCisrKyBiL2dkYi1iejU2ODI0OC1v b20taXMtZXJyb3IucGF0Y2gKQEAgLTQ2LDI0ICs0NiwyMyBAQCBnZGIvCiAKIAkqIHV0aWxzLmMg KG5vbWVtKTogQ2hhbmdlIGludGVybmFsX2Vycm9yIHRvIGVycm9yLgogCi0tLS0gYS9nZGIvdXRp bHMuYwotKysrIGIvZ2RiL3V0aWxzLmMKLUBAIC0xMjY1LDE1ICsxMjY1LDkgQEAgdm9pZAotIG5v bWVtIChsb25nIHNpemUpCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdXRpbHMuYwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdXRpbHMuYwkyMDEx LTA3LTIyIDE5OjI4OjU4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3V0aWxzLmMJMjAxMS0wNy0yMiAxOTozNDoyNS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMjE5 LDEzICsxMjE5LDExIEBAIG1hbGxvY19mYWlsdXJlIChsb25nIHNpemUpCiAgewogICAgaWYgKHNp emUgPiAwKQotLSAgICB7CisgICAgIHsKIC0gICAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18s IF9fTElORV9fLAogLQkJICAgICAgXygidmlydHVhbCBtZW1vcnkgZXhoYXVzdGVkOiBjYW4ndCBh bGxvY2F0ZSAlbGQgYnl0ZXMuIiksCiAtCQkgICAgICBzaXplKTsKLS0gICAgfQotKyAgICBlcnJv ciAoXygidmlydHVhbCBtZW1vcnkgZXhoYXVzdGVkOiBjYW4ndCBhbGxvY2F0ZSAlbGQgYnl0ZXMu IiksIHNpemUpOworKyAgICAgIGVycm9yIChfKCJ2aXJ0dWFsIG1lbW9yeSBleGhhdXN0ZWQ6IGNh bid0IGFsbG9jYXRlICVsZCBieXRlcy4iKSwgc2l6ZSk7CisgICAgIH0KICAgIGVsc2UKLS0gICAg eworICAgICB7CiAtICAgICAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywgXygi dmlydHVhbCBtZW1vcnkgZXhoYXVzdGVkLiIpKTsKLS0gICAgfQotKyAgICBlcnJvciAoXygidmly dHVhbCBtZW1vcnkgZXhoYXVzdGVkLiIpKTsKKysgICAgICBlcnJvciAoXygidmlydHVhbCBtZW1v cnkgZXhoYXVzdGVkLiIpKTsKKyAgICAgfQogIH0KICAKLSAvKiBUaGUgeG1hbGxvYygpIChsaWJp YmVydHkuaCkgZmFtaWx5IG9mIG1lbW9yeSBtYW5hZ2VtZW50IHJvdXRpbmVzLgotCgpkaWZmIC0t Z2l0IGEvZ2RiLWJ6NjQ1NzczLWNhc2UtaW5zZW5zaXRpdmUtMW9mNS5wYXRjaCBiL2dkYi1iejY0 NTc3My1jYXNlLWluc2Vuc2l0aXZlLTFvZjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDdiYWM2ZmYuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NjQ1NzczLWNhc2UtaW5zZW5zaXRp dmUtMW9mNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLVtwYXRjaF0gQ29k ZSBjbGVhbnVwOiBOZXcgU1lNQk9MX0hBU0hfTkVYVAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTEtMDQvbXNnMDAwMjIuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1jdnMvMjAxMS0wNC9tc2cwMDA0My5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxv ZwkyMDExLzA0LzA2IDAzOjI0OjIyCTEuMTI5MDgKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEx LzA0LzA2IDE5OjUwOjAzCTEuMTI5MDkKLSMjIC0xLDMgKzEsMTIgQEAKLSsyMDExLTA0LTA2ICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCUNvZGUgY2xl YW51cC4KLSsJKiBkaWN0aW9uYXJ5LmMgKGRpY3RfaGFzaCk6IFVzZSBTWU1CT0xfSEFTSF9ORVhU LgotKwkqIGR3YXJmMnJlYWQuYyAobWFwcGVkX2luZGV4X3N0cmluZ19oYXNoKTogUmVmZXIgdG8g U1lNQk9MX0hBU0hfTkVYVAotKwlpbiB0aGUgZnVuY3Rpb24gY29tbWVudCwgYSBuZXcgbm90ZSBv biB2YWx1ZXMgY29tcGF0aWJpbGl0eS4KLSsJKiBtaW5zeW1zLmMgKG1zeW1ib2xfaGFzaF9pdywg bXN5bWJvbF9oYXNoKTogVXNlIFNZTUJPTF9IQVNIX05FWFQuCi0rCSogc3ltdGFiLmggKFNZTUJP TF9IQVNIX05FWFQpOiBOZXcuCi0rCi0gMjAxMS0wNC0wNiAgVGhpYWdvIEp1bmcgQmF1ZXJtYW5u ICA8YmF1ZXJtYW5AYnIuaWJtLmNvbT4KLSAKLSAJKiBwcGMtbGludXgtbmF0LmMgKGNoZWNrX2Nv bmRpdGlvbik6IEFkZCBsZW4gb3V0cHV0IHBhcmFtZXRlci4KLS0tLSBzcmMvZ2RiL2RpY3Rpb25h cnkuYwkyMDExLzAxLzA3IDE5OjM2OjE1CTEuMjEKLSsrKyBzcmMvZ2RiL2RpY3Rpb25hcnkuYwky MDExLzA0LzA2IDE5OjUwOjA0CTEuMjIKLUBAIC04MjYsNyArODI2LDcgQEAKLSAJICAgIH0KLSAJ ICAvKiBGQUxMIFRIUk9VR0ggKi8KLSAJZGVmYXVsdDoKLS0JICBoYXNoID0gaGFzaCAqIDY3ICsg KnN0cmluZyAtIDExMzsKLSsJICBoYXNoID0gU1lNQk9MX0hBU0hfTkVYVCAoaGFzaCwgKnN0cmlu Zyk7Ci0gCSAgc3RyaW5nICs9IDE7Ci0gCSAgYnJlYWs7Ci0gCX0KLS0tLSBzcmMvZ2RiL2R3YXJm MnJlYWQuYwkyMDExLzA0LzA0IDE0OjEwOjEyCTEuNTIwCi0rKysgc3JjL2dkYi9kd2FyZjJyZWFk LmMJMjAxMS8wNC8wNiAxOTo1MDowNAkxLjUyMQotQEAgLTE5NjIsMTEgKzE5NjIsMTEgQEAKLSAg IGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSB9Ci0gCi0tLyogVGhlIGhhc2ggZnVuY3Rpb24gZm9y IHN0cmluZ3MgaW4gdGhlIG1hcHBlZCBpbmRleC4gIFRoaXMgaXMgdGhlCi0tICAgc2FtZSBhcyB0 aGUgaGFzaHRhYi5jIGhhc2ggZnVuY3Rpb24sIGJ1dCB3ZSBrZWVwIGEgc2VwYXJhdGUgY29weSB0 bwotLSAgIG1haW50YWluIGNvbnRyb2wgb3ZlciB0aGUgaW1wbGVtZW50YXRpb24uICBUaGlzIGlz IG5lY2Vzc2FyeQotLSAgIGJlY2F1c2UgdGhlIGhhc2ggZnVuY3Rpb24gaXMgdGllZCB0byB0aGUg Zm9ybWF0IG9mIHRoZSBtYXBwZWQgaW5kZXgKLS0gICBmaWxlLiAgKi8KLSsvKiBUaGUgaGFzaCBm dW5jdGlvbiBmb3Igc3RyaW5ncyBpbiB0aGUgbWFwcGVkIGluZGV4LiAgVGhpcyBpcyB0aGUgc2Ft ZSBhcwotKyAgIFNZTUJPTF9IQVNIX05FWFQsIGJ1dCB3ZSBrZWVwIGEgc2VwYXJhdGUgY29weSB0 byBtYWludGFpbiBjb250cm9sIG92ZXIgdGhlCi0rICAgaW1wbGVtZW50YXRpb24uICBUaGlzIGlz IG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBoYXNoIGZ1bmN0aW9uIGlzIHRpZWQgdG8gdGhlCi0rICAg Zm9ybWF0IG9mIHRoZSBtYXBwZWQgaW5kZXggZmlsZS4gIFRoZSBoYXNoIHZhbHVlcyBkbyBub3Qg aGF2ZSB0byBtYXRjaCB3aXRoCi0rICAgU1lNQk9MX0hBU0hfTkVYVC4gICovCi0gCi0gc3RhdGlj IGhhc2h2YWxfdAotIG1hcHBlZF9pbmRleF9zdHJpbmdfaGFzaCAoY29uc3Qgdm9pZCAqcCkKLS0t LSBzcmMvZ2RiL21pbnN5bXMuYwkyMDExLzAzLzI4IDIwOjI5OjUxCTEuODEKLSsrKyBzcmMvZ2Ri L21pbnN5bXMuYwkyMDExLzA0LzA2IDE5OjUwOjA1CTEuODIKLUBAIC05MSw3ICs5MSw3IEBACi0g CSsrc3RyaW5nOwotICAgICAgIGlmICgqc3RyaW5nICYmICpzdHJpbmcgIT0gJygnKQotIAl7Ci0t CSAgaGFzaCA9IGhhc2ggKiA2NyArICpzdHJpbmcgLSAxMTM7Ci0rCSAgaGFzaCA9IFNZTUJPTF9I QVNIX05FWFQgKGhhc2gsICpzdHJpbmcpOwotIAkgICsrc3RyaW5nOwotIAl9Ci0gICAgIH0KLUBA IC0xMDYsNyArMTA2LDcgQEAKLSAgIHVuc2lnbmVkIGludCBoYXNoID0gMDsKLSAKLSAgIGZvciAo OyAqc3RyaW5nOyArK3N0cmluZykKLS0gICAgaGFzaCA9IGhhc2ggKiA2NyArICpzdHJpbmcgLSAx MTM7Ci0rICAgIGhhc2ggPSBTWU1CT0xfSEFTSF9ORVhUIChoYXNoLCAqc3RyaW5nKTsKLSAgIHJl dHVybiBoYXNoOwotIH0KLSAKLS0tLSBzcmMvZ2RiL3N5bXRhYi5oCTIwMTEvMDQvMDQgMTU6MTk6 NTkJMS4xNzcKLSsrKyBzcmMvZ2RiL3N5bXRhYi5oCTIwMTEvMDQvMDYgMTk6NTA6MDUJMS4xNzgK LUBAIC0xMDA0LDYgKzEwMDQsMTIgQEAKLSAKLSBleHRlcm4gdW5zaWduZWQgaW50IG1zeW1ib2xf aGFzaCAoY29uc3QgY2hhciAqKTsKLSAKLSsvKiBDb21wdXRlIHRoZSBuZXh0IGhhc2ggdmFsdWUg ZnJvbSBwcmV2aW91cyBIQVNIIGFuZCB0aGUgY2hhcmFjdGVyIEMuICBUaGlzCi0rICAgaXMgb25s eSBhIEdEQiBpbi1tZW1vcnkgY29tcHV0ZWQgdmFsdWUgd2l0aCBubyBleHRlcm5hbCBmaWxlcyBj b21wYXRpYmlsaXR5Ci0rICAgcmVxdWlyZW1lbnRzLiAgKi8KLSsKLSsjZGVmaW5lIFNZTUJPTF9I QVNIX05FWFQoaGFzaCwgYykgKChoYXNoKSAqIDY3ICsgKGMpIC0gMTEzKQotKwotIGV4dGVybiBz dHJ1Y3Qgb2JqZmlsZSAqIG1zeW1ib2xfb2JqZmlsZSAoc3RydWN0IG1pbmltYWxfc3ltYm9sICpz eW0pOwotIAotIGV4dGVybiB2b2lkCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjQ1NzczLWNhc2UtaW5z ZW5zaXRpdmUtMm9mNS5wYXRjaCBiL2dkYi1iejY0NTc3My1jYXNlLWluc2Vuc2l0aXZlLTJvZjUu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZjJlMzIuLjAwMDAwMDAKLS0t IGEvZ2RiLWJ6NjQ1NzczLWNhc2UtaW5zZW5zaXRpdmUtMm9mNS5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDEzOSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMv MjAxMS0wNC9tc2cwMDEyNC5odG1sCi1TdWJqZWN0OiBbcGF0Y2ggMS8zXSBjYXNlIGluc2Vuc2l0 aXZlOiBSZWZvcm1hdCBjb2RlCi0KLUhpLAotCi1qdXN0IHNvbWUgcmVmb3JtYXR0aW5nIHRvIG1h a2UgdGhlIGxhdGVyIHBhdGNoIG1vcmUgY2xlYXIuICBUaGVyZSBzaG91bGQgYmUgbm8KLWZ1bmN0 aW9uYWxpdHkgZGlmZmVyZW5jZSBieSB0aGlzIHBhdGNoLiAgYzErYzIgYXJlIGEgYml0IHVnbHkg YnV0IEkgZm91bmQgYW55Ci1vdGhlciBzb2x1dGlvbiBhIGJpdCB1Z2x5LgotCi0KLVRoYW5rcywK LUphbgotCi0KLWdkYi8KLTIwMTEtMDQtMDggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KLQotCUZvcm1hdCB0aGUgY29kZSBmb3IgdGhlIG5leHQgcGF0Y2guCi0J KiBkd2FyZjJyZWFkLmMgKHN0cnVjdCBtYXBwZWRfaW5kZXgpOiBJbmNsdWRlIGRlbGltaXRpbmcg bmV3bGluZXMuCi0JKiB1dGlscy5jIChzdHJjbXBfaXdfb3JkZXJlZCk6IFJlZm9ybWF0IHRoZSBj b2RlIGZvciB0aGUgbmV4dCBwYXRjaC4KLQlOZXcgdmFyaWFibGVzIGMxIGFuZCBjMi4KLQotLS0t IGEvZ2RiL2R3YXJmMnJlYWQuYwotKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwotQEAgLTE1MCwxNCAr MTUwLDE5IEBAIHN0cnVjdCBtYXBwZWRfaW5kZXgKLSB7Ci0gICAvKiBUaGUgdG90YWwgbGVuZ3Ro IG9mIHRoZSBidWZmZXIuICAqLwotICAgb2ZmX3QgdG90YWxfc2l6ZTsKLSsKLSAgIC8qIEEgcG9p bnRlciB0byB0aGUgYWRkcmVzcyB0YWJsZSBkYXRhLiAgKi8KLSAgIGNvbnN0IGdkYl9ieXRlICph ZGRyZXNzX3RhYmxlOwotKwotICAgLyogU2l6ZSBvZiB0aGUgYWRkcmVzcyB0YWJsZSBkYXRhIGlu IGJ5dGVzLiAgKi8KLSAgIG9mZnNldF90eXBlIGFkZHJlc3NfdGFibGVfc2l6ZTsKLSsKLSAgIC8q IFRoZSBzeW1ib2wgdGFibGUsIGltcGxlbWVudGVkIGFzIGEgaGFzaCB0YWJsZS4gICovCi0gICBj b25zdCBvZmZzZXRfdHlwZSAqc3ltYm9sX3RhYmxlOwotKwotICAgLyogU2l6ZSBpbiBzbG90cywg ZWFjaCBzbG90IGlzIDIgb2Zmc2V0X3R5cGVzLiAgKi8KLSAgIG9mZnNldF90eXBlIHN5bWJvbF90 YWJsZV9zbG90czsKLSsKLSAgIC8qIEEgcG9pbnRlciB0byB0aGUgY29uc3RhbnQgcG9vbC4gICov Ci0gICBjb25zdCBjaGFyICpjb25zdGFudF9wb29sOwotIH07Ci0tLS0gYS9nZGIvdXRpbHMuYwot KysrIGIvZ2RiL3V0aWxzLmMKLUBAIC0zMDIzLDQ4ICszMDIzLDU1IEBAIHN0cmNtcF9pdyAoY29u c3QgY2hhciAqc3RyaW5nMSwgY29uc3QgY2hhciAqc3RyaW5nMikKLSBpbnQKLSBzdHJjbXBfaXdf b3JkZXJlZCAoY29uc3QgY2hhciAqc3RyaW5nMSwgY29uc3QgY2hhciAqc3RyaW5nMikKLSB7Ci0t ICB3aGlsZSAoKCpzdHJpbmcxICE9ICdcMCcpICYmICgqc3RyaW5nMiAhPSAnXDAnKSkKLSsgIC8q IEZvcm1hdHRpbmcgc3R1Yi4gICovCi0rICBpZiAoMSkKLSAgICAgewotLSAgICAgIHdoaWxlIChp c3NwYWNlICgqc3RyaW5nMSkpCi0tCXsKLS0JICBzdHJpbmcxKys7Ci0tCX0KLS0gICAgICB3aGls ZSAoaXNzcGFjZSAoKnN0cmluZzIpKQotLQl7Ci0tCSAgc3RyaW5nMisrOwotLQl9Ci0tICAgICAg aWYgKCpzdHJpbmcxICE9ICpzdHJpbmcyKQotKyAgICAgIC8qIEMxIGFuZCBDMiBhcmUgdmFsaWQg b25seSBpZiAqc3RyaW5nMSAhPSAnXDAnICYmICpzdHJpbmcyICE9ICdcMCcuCi0rCSBQcm92aWRl IHN0dWIgY2hhcmFjdGVycyBpZiB3ZSBhcmUgYWxyZWFkeSBhdCB0aGUgZW5kIG9mIG9uZSBvZiB0 aGUKLSsJIHN0cmluZ3MuICAqLwotKyAgICAgIGNoYXIgYzEgPSAnWCcsIGMyID0gJ1gnOwotKwot KyAgICAgIHdoaWxlICgqc3RyaW5nMSAhPSAnXDAnICYmICpzdHJpbmcyICE9ICdcMCcpCi0gCXsK LS0JICBicmVhazsKLSsJICB3aGlsZSAoaXNzcGFjZSAoKnN0cmluZzEpKQotKwkgICAgc3RyaW5n MSsrOwotKwkgIHdoaWxlIChpc3NwYWNlICgqc3RyaW5nMikpCi0rCSAgICBzdHJpbmcyKys7Ci0r Ci0rCSAgICAgIGMxID0gKnN0cmluZzE7Ci0rCSAgICAgIGMyID0gKnN0cmluZzI7Ci0rCSAgaWYg KGMxICE9IGMyKQotKwkgICAgYnJlYWs7Ci0rCi0rCSAgaWYgKCpzdHJpbmcxICE9ICdcMCcpCi0r CSAgICB7Ci0rCSAgICAgIHN0cmluZzErKzsKLSsJICAgICAgc3RyaW5nMisrOwotKwkgICAgfQot IAl9Ci0tICAgICAgaWYgKCpzdHJpbmcxICE9ICdcMCcpCi0rCi0rICAgICAgc3dpdGNoICgqc3Ry aW5nMSkKLSAJewotLQkgIHN0cmluZzErKzsKLS0JICBzdHJpbmcyKys7Ci0rCSAgLyogQ2hhcmFj dGVycyBhcmUgbm9uLWVxdWFsIHVubGVzcyB0aGV5J3JlIGJvdGggJ1wwJzsgd2Ugd2FudCB0bwot KwkgICAgIG1ha2Ugc3VyZSB3ZSBnZXQgdGhlIGNvbXBhcmlzb24gcmlnaHQgYWNjb3JkaW5nIHRv IG91cgotKwkgICAgIGNvbXBhcmlzb24gaW4gdGhlIGNhc2VzIHdoZXJlIG9uZSBvZiB0aGVtIGlz ICdcMCcgb3IgJygnLiAgKi8KLSsJY2FzZSAnXDAnOgotKwkgIGlmICgqc3RyaW5nMiA9PSAnXDAn KQotKwkgICAgcmV0dXJuIDA7Ci0rCSAgZWxzZQotKwkgICAgcmV0dXJuIC0xOwotKwljYXNlICco JzoKLSsJICBpZiAoKnN0cmluZzIgPT0gJ1wwJykKLSsJICAgIHJldHVybiAxOwotKwkgIGVsc2UK LSsJICAgIHJldHVybiAtMTsKLSsJZGVmYXVsdDoKLSsJICBpZiAoKnN0cmluZzIgPT0gJ1wwJyB8 fCAqc3RyaW5nMiA9PSAnKCcpCi0rCSAgICByZXR1cm4gMTsKLSsJICBlbHNlCi0rCSAgICByZXR1 cm4gYzEgLSBjMjsKLSAJfQotICAgICB9Ci0tCi0tICBzd2l0Y2ggKCpzdHJpbmcxKQotLSAgICB7 Ci0tICAgICAgLyogQ2hhcmFjdGVycyBhcmUgbm9uLWVxdWFsIHVubGVzcyB0aGV5J3JlIGJvdGgg J1wwJzsgd2Ugd2FudCB0bwotLQkgbWFrZSBzdXJlIHdlIGdldCB0aGUgY29tcGFyaXNvbiByaWdo dCBhY2NvcmRpbmcgdG8gb3VyCi0tCSBjb21wYXJpc29uIGluIHRoZSBjYXNlcyB3aGVyZSBvbmUg b2YgdGhlbSBpcyAnXDAnIG9yICcoJy4gICovCi0tICAgIGNhc2UgJ1wwJzoKLS0gICAgICBpZiAo KnN0cmluZzIgPT0gJ1wwJykKLS0JcmV0dXJuIDA7Ci0tICAgICAgZWxzZQotLQlyZXR1cm4gLTE7 Ci0tICAgIGNhc2UgJygnOgotLSAgICAgIGlmICgqc3RyaW5nMiA9PSAnXDAnKQotLQlyZXR1cm4g MTsKLS0gICAgICBlbHNlCi0tCXJldHVybiAtMTsKLS0gICAgZGVmYXVsdDoKLS0gICAgICBpZiAo KnN0cmluZzIgPT0gJygnKQotLQlyZXR1cm4gMTsKLS0gICAgICBlbHNlCi0tCXJldHVybiAqc3Ry aW5nMSAtICpzdHJpbmcyOwotLSAgICB9Ci0gfQotIAotIC8qIEEgc2ltcGxlIGNvbXBhcmlzb24g ZnVuY3Rpb24gd2l0aCBvcHBvc2l0ZSBzZW1hbnRpY3MgdG8gc3RyY21wLiAgKi8KLQoKZGlmZiAt LWdpdCBhL2dkYi1iejY0NTc3My1jYXNlLWluc2Vuc2l0aXZlLTNvZjUucGF0Y2ggYi9nZGItYno2 NDU3NzMtY2FzZS1pbnNlbnNpdGl2ZS0zb2Y1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBjY2Q0YmYyLi4wMDAwMDAwCi0tLSBhL2dkYi1iejY0NTc3My1jYXNlLWluc2Vuc2l0 aXZlLTNvZjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODggKzAsMCBAQAotaHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTEtMDQvbXNnMDAxMjUuaHRtbAotU3ViamVj dDogW3BhdGNoIDIvM10gY2FzZSBpbnNlbnNpdGl2ZTogcmVfY29tcC0+cmVnY29tcAotCi1IaSwK LQotcmVfY29tcCBjYW5ub3QgYmUgcGFzc2VkIFJFR19JQ0FTRS4gIFRoZXJlZm9yZSBjaGFuZ2Ug dGhlIGNvZGUuICBUaGUgc2hvdWxkCi1oYXZlIG5vIGZ1bmN0aW9uYWxpdHkgaW1wYWN0LgotCi1U aGUgbmV3IGJvb2xlYW4gZmllbGQgYHByZWdfcCcgY291bGQgYmUgbWF5YmUgcmVwbGFjZWQgYnkg YSBjb25kaXRpb25hbAotYHByZWcuYnVmZmVyICE9IE5VTEwnIHdoaWNoIHdvdWxkIHdvcmsgd2l0 aCBsaWJpYmVydHkgcmVnY29tcCBpbXBsZW1lbnRhdGlvbgotYnV0IEkgZG8gbm90IHNlZSBpdCBn dWFyYW50ZWVkIGFueXdoZXJlLiAgR0RCIGlzIGFsd2F5cyB1c2luZyBzdGF0aWMgbGliaWJlcnR5 Ci1pbXBsZW1lbnRhdGlvbiB3aGljaCBJIGRvIG5vdCBzZWUgd2h5IGluIHRoZSBjYXNlIGl0IGlz IHJ1bm5pbmcgb24gZ2xpYmMuCi1CdXQgaWYgaXQgZ2V0cyBmaXhlZCBvbmUgZGF5IGFuZCBpdCBz dGFydHMgdG8gdXNlIGV4dGVybmFsbHkgbGlua2VkCi1yZWdjb21wL3JlZ2V4ZWMgSSB3b3VsZCBm aW5kIHRoZSBgcHJlZy5idWZmZXIgIT0gTlVMTCcgY29uZGl0aW9uYWwgZGFuZ2Vyb3VzLgotCi0K LVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIwMTEtMDQtMDggIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCVJlcGxhY2UgcmVfY29tcC9yZV9leGVjIGJ5IHJl Z2NvbXAvcmVnZXhlYy4KLQkqIHN5bXRhYi5jIChzdHJ1Y3Qgc2VhcmNoX3N5bWJvbHNfZGF0YSk6 IE5ldyBmaWVsZHMgcHJlZywgcHJlZ19wLgotCShzZWFyY2hfc3ltYm9sc19uYW1lX21hdGNoZXMp OiBVc2UgdGhlbSwgdXNlIHJlZ2V4ZWMuCi0JKHNlYXJjaF9zeW1ib2xzKTogTmV3IHZhcmlhYmxl IHJldHZhbF9jaGFpbiwgYWRqdXN0IHRoZSB1c2Ugb2YKLQlvbGRfY2hhaW4gYWdhaW5zdCBpdC4g IFJlcGxhY2UgcmVfY29tcCBieSByZWdjb21wLiAgVXNlIHRoZSBuZXcgc3RydWN0Ci0Jc2VhcmNo X3N5bWJvbHNfZGF0YSBmaWVsZHMsIHVzZSByZWdleGVjIGluc3RlYWQgb2YgcmVfZXhlYy4KLQot SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL3N5bXRhYi5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMi45MC4yMDExMDQyOS5vcmlnL2dkYi9zeW10YWIuYwkyMDExLTA0LTI5IDA5OjQzOjMz LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0MjkvZ2RiL3N5bXRhYi5jCTIw MTEtMDQtMjkgMDk6NDM6NTUuMDAwMDAwMDAwICswMjAwCi1AQCAtMjk1OCw3ICsyOTU4LDEwIEBA IHN0cnVjdCBzZWFyY2hfc3ltYm9sc19kYXRhCi0gewotICAgaW50IG5maWxlczsKLSAgIGNoYXIg KipmaWxlczsKLS0gIGNoYXIgKnJlZ2V4cDsKLSsKLSsgIC8qIEl0IGlzIHRydWUgaWYgUFJFRyBj b250YWlucyB2YWxpZCBkYXRhLCBmYWxzZSBvdGhlcndpc2UuICAqLwotKyAgdW5zaWduZWQgcHJl Z19wIDogMTsKLSsgIHJlZ2V4X3QgcHJlZzsKLSB9OwotIAotIC8qIEEgY2FsbGJhY2sgZm9yIGV4 cGFuZF9zeW10YWJzX21hdGNoaW5nLiAgKi8KLUBAIC0yOTc2LDcgKzI5NzksNyBAQCBzZWFyY2hf c3ltYm9sc19uYW1lX21hdGNoZXMgKGNvbnN0IGNoYXIgCi0gewotICAgc3RydWN0IHNlYXJjaF9z eW1ib2xzX2RhdGEgKmRhdGEgPSB1c2VyX2RhdGE7Ci0gCi0tICByZXR1cm4gZGF0YS0+cmVnZXhw ID09IE5VTEwgfHwgcmVfZXhlYyAoc3ltbmFtZSk7Ci0rICByZXR1cm4gIWRhdGEtPnByZWdfcCB8 fCByZWdleGVjICgmZGF0YS0+cHJlZywgc3ltbmFtZSwgMCwgTlVMTCwgMCkgPT0gMDsKLSB9Ci0g Ci0gLyogU2VhcmNoIHRoZSBzeW1ib2wgdGFibGUgZm9yIG1hdGNoZXMgdG8gdGhlIHJlZ3VsYXIg ZXhwcmVzc2lvbiBSRUdFWFAsCi1AQCAtMzAyMyw5ICszMDI2LDEzIEBAIHNlYXJjaF9zeW1ib2xz IChjaGFyICpyZWdleHAsIGRvbWFpbl9lbnUKLSAgIHN0cnVjdCBzeW1ib2xfc2VhcmNoICpzcjsK LSAgIHN0cnVjdCBzeW1ib2xfc2VhcmNoICpwc3I7Ci0gICBzdHJ1Y3Qgc3ltYm9sX3NlYXJjaCAq dGFpbDsKLS0gIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW4gPSBOVUxMOwotICAgc3RydWN0IHNl YXJjaF9zeW1ib2xzX2RhdGEgZGF0dW07Ci0gCi0rICAvKiBPTERfQ0hBSU4gLi4gUkVUVkFMX0NI QUlOIGlzIGFsd2F5cyBmcmVlZCwgUkVUVkFMX0NIQUlOIC4uIGN1cnJlbnQKLSsgICAgIENMRUFO VVBfQ0hBSU4gaXMgZnJlZWQgb25seSBpbiB0aGUgY2FzZSBvZiBhbiBlcnJvci4gICovCi0rICBz dHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5V TEwpOwotKyAgc3RydWN0IGNsZWFudXAgKnJldHZhbF9jaGFpbjsKLSsKLSAgIGlmIChraW5kIDwg VkFSSUFCTEVTX0RPTUFJTiB8fCBraW5kID49IEFMTF9ET01BSU4pCi0gICAgIGVycm9yIChfKCJt dXN0IHNlYXJjaCBvbiBzcGVjaWZpYyBkb21haW4iKSk7Ci0gCi1AQCAtMzAzNiw2ICszMDQzLDcg QEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9tYWluX2VudQotIAotICAgc3IgPSAq bWF0Y2hlcyA9IE5VTEw7Ci0gICB0YWlsID0gTlVMTDsKLSsgIGRhdHVtLnByZWdfcCA9IDA7Ci0g Ci0gICBpZiAocmVnZXhwICE9IE5VTEwpCi0gICAgIHsKLUBAIC0zMDQ1LDYgKzMwNTMsNyBAQCBz ZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBkb21haW5fZW51Ci0gICAgICAgICAgYW5kIDxU WVBFTkFNRT4gb3IgPE9QRVJBVE9SPi4gICovCi0gICAgICAgY2hhciAqb3BlbmQ7Ci0gICAgICAg Y2hhciAqb3BuYW1lID0gb3BlcmF0b3JfY2hhcnMgKHJlZ2V4cCwgJm9wZW5kKTsKLSsgICAgICBp bnQgZXJyY29kZTsKLSAKLSAgICAgICBpZiAoKm9wbmFtZSkKLSAJewotQEAgLTMwNzMsOCArMzA4 MiwxNiBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBkb21haW5fZW51Ci0gCSAgICB9 Ci0gCX0KLSAKLS0gICAgICBpZiAoMCAhPSAodmFsID0gcmVfY29tcCAocmVnZXhwKSkpCi0tCWVy cm9yIChfKCJJbnZhbGlkIHJlZ2V4cCAoJXMpOiAlcyIpLCB2YWwsIHJlZ2V4cCk7Ci0rICAgICAg ZXJyY29kZSA9IHJlZ2NvbXAgKCZkYXR1bS5wcmVnLCByZWdleHAsIFJFR19OT1NVQik7Ci0rICAg ICAgaWYgKGVycmNvZGUgIT0gMCkKLSsJewotKwkgIGNoYXIgKmVyciA9IGdldF9yZWdjb21wX2Vy cm9yIChlcnJjb2RlLCAmZGF0dW0ucHJlZyk7Ci0rCi0rCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwg ZXJyKTsKLSsJICBlcnJvciAoXygiSW52YWxpZCByZWdleHAgKCVzKTogJXMiKSwgZXJyLCByZWdl eHApOwotKwl9Ci0rICAgICAgZGF0dW0ucHJlZ19wID0gMTsKLSsgICAgICBtYWtlX3JlZ2ZyZWVf Y2xlYW51cCAoJmRhdHVtLnByZWcpOwotICAgICB9Ci0gCi0gICAvKiBTZWFyY2ggdGhyb3VnaCB0 aGUgcGFydGlhbCBzeW10YWJzICpmaXJzdCogZm9yIGFsbCBzeW1ib2xzCi1AQCAtMzA4Myw3ICsz MTAwLDYgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9tYWluX2VudQotIAotICAg ZGF0dW0ubmZpbGVzID0gbmZpbGVzOwotICAgZGF0dW0uZmlsZXMgPSBmaWxlczsKLS0gIGRhdHVt LnJlZ2V4cCA9IHJlZ2V4cDsKLSAgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKLSAgIHsKLSAgICAg aWYgKG9iamZpbGUtPnNmKQotQEAgLTMwOTQsNiArMzExMCw4IEBAIHNlYXJjaF9zeW1ib2xzIChj aGFyICpyZWdleHAsIGRvbWFpbl9lbnUKLSAJCQkJCQkmZGF0dW0pOwotICAgfQotIAotKyAgcmV0 dmFsX2NoYWluID0gb2xkX2NoYWluOwotKwotICAgLyogSGVyZSwgd2Ugc2VhcmNoIHRocm91Z2gg dGhlIG1pbmltYWwgc3ltYm9sIHRhYmxlcyBmb3IgZnVuY3Rpb25zCi0gICAgICBhbmQgdmFyaWFi bGVzIHRoYXQgbWF0Y2gsIGFuZCBmb3JjZSB0aGVpciBzeW1ib2xzIHRvIGJlIHJlYWQuCi0gICAg ICBUaGlzIGlzIGluIHBhcnRpY3VsYXIgbmVjZXNzYXJ5IGZvciBkZW1hbmdsZWQgdmFyaWFibGUg bmFtZXMsCi1AQCAtMzExNyw4ICszMTM1LDkgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4 cCwgZG9tYWluX2VudQotIAkgICAgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBvdXJ0eXBlMyB8 fAotIAkgICAgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBvdXJ0eXBlNCkKLSAJICB7Ci0tCSAg ICBpZiAocmVnZXhwID09IE5VTEwKLS0JCXx8IHJlX2V4ZWMgKFNZTUJPTF9OQVRVUkFMX05BTUUg KG1zeW1ib2wpKSAhPSAwKQotKwkgICAgaWYgKCFkYXR1bS5wcmVnX3AKLSsJCXx8IHJlZ2V4ZWMg KCZkYXR1bS5wcmVnLCBTWU1CT0xfTkFUVVJBTF9OQU1FIChtc3ltYm9sKSwgMCwKLSsJCQkgICAg TlVMTCwgMCkgPT0gMCkKLSAJICAgICAgewotIAkJaWYgKDAgPT0gZmluZF9wY19zeW10YWIgKFNZ TUJPTF9WQUxVRV9BRERSRVNTIChtc3ltYm9sKSkpCi0gCQkgIHsKLUBAIC0zMTU2LDggKzMxNzUs OSBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBkb21haW5fZW51Ci0gCSAgICAgIFFV SVQ7Ci0gCi0gCSAgICAgIGlmIChmaWxlX21hdGNoZXMgKHJlYWxfc3ltdGFiLT5maWxlbmFtZSwg ZmlsZXMsIG5maWxlcykKLS0JCSAgJiYgKChyZWdleHAgPT0gTlVMTAotLQkJICAgICAgIHx8IHJl X2V4ZWMgKFNZTUJPTF9OQVRVUkFMX05BTUUgKHN5bSkpICE9IDApCi0rCQkgICYmICgoIWRhdHVt LnByZWdfcAotKwkJICAgICAgIHx8IHJlZ2V4ZWMgKCZkYXR1bS5wcmVnLCBTWU1CT0xfTkFUVVJB TF9OQU1FIChzeW0pLCAwLAotKwkJCQkgICBOVUxMLCAwKSA9PSAwKQotIAkJICAgICAgJiYgKChr aW5kID09IFZBUklBQkxFU19ET01BSU4KLSAJCQkgICAmJiBTWU1CT0xfQ0xBU1MgKHN5bSkgIT0g TE9DX1RZUEVERUYKLSAJCQkgICAmJiBTWU1CT0xfQ0xBU1MgKHN5bSkgIT0gTE9DX1VOUkVTT0xW RUQKLUBAIC0zMTk5LDcgKzMyMTksNyBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBk b21haW5fZW51Ci0gCQkgIHRhaWwgPSBzb3J0X3NlYXJjaF9zeW1ib2xzICgmZHVtbXksIG5mb3Vu ZCk7Ci0gCQkgIHNyID0gZHVtbXkubmV4dDsKLSAKLS0JCSAgb2xkX2NoYWluID0gbWFrZV9jbGVh bnVwX2ZyZWVfc2VhcmNoX3N5bWJvbHMgKHNyKTsKLSsJCSAgbWFrZV9jbGVhbnVwX2ZyZWVfc2Vh cmNoX3N5bWJvbHMgKHNyKTsKLSAJCX0KLSAJICAgICAgZWxzZQotIAkJdGFpbCA9IHNvcnRfc2Vh cmNoX3N5bWJvbHMgKHByZXZ0YWlsLCBuZm91bmQpOwotQEAgLTMyMjEsOCArMzI0MSw5IEBAIHNl YXJjaF9zeW1ib2xzIChjaGFyICpyZWdleHAsIGRvbWFpbl9lbnUKLSAJICAgIE1TWU1CT0xfVFlQ RSAobXN5bWJvbCkgPT0gb3VydHlwZTMgfHwKLSAJICAgIE1TWU1CT0xfVFlQRSAobXN5bWJvbCkg PT0gb3VydHlwZTQpCi0gCSAgewotLQkgICAgaWYgKHJlZ2V4cCA9PSBOVUxMCi0tCQl8fCByZV9l eGVjIChTWU1CT0xfTkFUVVJBTF9OQU1FIChtc3ltYm9sKSkgIT0gMCkKLSsJICAgIGlmICghZGF0 dW0ucHJlZ19wCi0rCQl8fCByZWdleGVjICgmZGF0dW0ucHJlZywgU1lNQk9MX05BVFVSQUxfTkFN RSAobXN5bWJvbCksIDAsCi0rCQkJICAgIE5VTEwsIDApID09IDApCi0gCSAgICAgIHsKLSAJCS8q IEZ1bmN0aW9uczogIExvb2sgdXAgYnkgYWRkcmVzcy4gICovCi0gCQlpZiAoa2luZCAhPSBGVU5D VElPTlNfRE9NQUlOIHx8Ci1AQCAtMzI0NCw3ICszMjY1LDcgQEAgc2VhcmNoX3N5bWJvbHMgKGNo YXIgKnJlZ2V4cCwgZG9tYWluX2VudQotIAkJCWlmICh0YWlsID09IE5VTEwpCi0gCQkJICB7Ci0g CQkJICAgIHNyID0gcHNyOwotLQkJCSAgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZnJlZV9z ZWFyY2hfc3ltYm9scyAoc3IpOwotKwkJCSAgICBtYWtlX2NsZWFudXBfZnJlZV9zZWFyY2hfc3lt Ym9scyAoc3IpOwotIAkJCSAgfQotIAkJCWVsc2UKLSAJCQkgIHRhaWwtPm5leHQgPSBwc3I7Ci1A QCAtMzI1Niw5ICszMjc3LDkgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9tYWlu X2VudQotICAgICAgIH0KLSAgICAgfQotIAotKyAgZGlzY2FyZF9jbGVhbnVwcyAocmV0dmFsX2No YWluKTsKLSsgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotICAgKm1hdGNoZXMgPSBzcjsKLS0g IGlmIChzciAhPSBOVUxMKQotLSAgICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOwotIH0K LSAKLSAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHN5bXRhYl9zeW1ib2xfaW5mbywgdGhpcyBmdW5j dGlvbiB1c2VzCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjQ1NzczLWNhc2UtaW5zZW5zaXRpdmUtNG9m NS5wYXRjaCBiL2dkYi1iejY0NTc3My1jYXNlLWluc2Vuc2l0aXZlLTRvZjUucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMzVjYzcuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NjQ1 NzczLWNhc2UtaW5zZW5zaXRpdmUtNG9mNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY2OSAr MCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wNC9tc2cw MDQxOC5odG1sCi1TdWJqZWN0OiBSZTogW3BhdGNoIDMvM10gY2FzZSBpbnNlbnNpdGl2ZTogdGhl IGZpeCBbcmVkaWZmXQotCi1PbiBGcmksIDIyIEFwciAyMDExIDIxOjA1OjA3ICswMjAwLCBFbGkg WmFyZXRza2lpIHdyb3RlOgotPiBUaGlzIEB0YWJsZSB3aWxsIGxvb2sgd2VpcmQgaW4gdGhlIG1h bnVhbDogaXQgcHJvZHVjZXMgbGluZXMgdGhhdAotPiBiZWdpbiB3aXRoIGEgbG93ZXItY2FzZSBs ZXR0ZXIuICBQZXJoYXBzIHJlb3JkZXIgdGh1c2x5OgotCi1PSywgdGhhbmtzIGZvciB0aGUgcmV2 aWV3LgotCi0KLVJlZ2FyZHMsCi1KYW4KLQotCi1nZGIvZG9jLwotMjAxMS0wNC0yMiAgSmFuIEty YXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCSAgICBFbGkgWmFyZXRza2lp ICA8ZWxpekBnbnUub3JnPgotCi0JKiBnZGIudGV4aW5mbyAoSW5kZXggU2VjdGlvbiBGb3JtYXQp OiBDaGFuZ2UgdGhlIHZlcnNpb24gdG8gNS4KLQlEZXNjcmliZSB0aGUgZGlmZmVyZW50IGZvcm11 bGEuCi0KLWdkYi8KLTIwMTEtMDQtMDggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KLQotCSogZHdhcmYycmVhZC5jOiBJbmNsdWRlIGN0eXBlLmguCi0JKHN0cnVj dCBtYXBwZWRfaW5kZXgpOiBOZXcgZmllbGQgdmVyc2lvbi4KLQkobWFwcGVkX2luZGV4X3N0cmlu Z19oYXNoKTogTmV3IHBhcmFtZXRlciBpbmRleF92ZXJzaW9uLiAgTmV3IGNvbW1lbnQKLQlmb3Ig aXQuICBDYWxsIHRvbG93ZXIgYXBwcm9wcmlhdGVseS4KLQkoZmluZF9zbG90X2luX21hcHBlZF9o YXNoKTogTmV3IHZhcmlhYmxlIGNtcCwgaW5pdGlhbGl6ZSBpdCwgdXNlIGl0LgotCUNob29zZSB0 aGUgcmlnaHQgaW5kZXggdmVyc2lvbiBmb3IgbWFwcGVkX2luZGV4X3N0cmluZ19oYXNoLgotCShk d2FyZjJfcmVhZF9pbmRleCk6IFN1cHBvcnQgYWxzbyB0aGUgaW5kZXggdmVyc2lvbiA1LiAgSW5p dGlhbGl6ZSB0aGUKLQluZXcgc3RydWN0IG1hcHBlZF9pbmRleCBmaWVsZCB2ZXJzaW9uLgotCSho YXNoX3N0cnRhYl9lbnRyeSk6IFBhc3MgSU5UX01BWCBmb3IgdGhlIG5ldyBwYXJhbWV0ZXIsIGV4 cGxhaW4gd2h5LgotCShmaW5kX3Nsb3QpOiBFeHBsYWluIHRoZSB2ZXJzaW9uIG5lZWRzLiAgUGFz cyBJTlRfTUFYIGZvciB0aGUgbmV3Ci0JcGFyYW1ldGVyLgotCSh3cml0ZV9wc3ltdGFic190b19p bmRleCk6IFByb2R1Y2UgdmVyc2lvbiA1LgotCSogbWluc3ltcy5jIChsb29rdXBfbWluaW1hbF9z eW1ib2wpOiBOZXcgdmFyaWFibGUgY21wLCBpbml0aWFsaXplIGl0LAotCXVzZSBpdC4gIE5ldyBj b21tZW50IGZvciBTWU1CT0xfTUFUQ0hFU19TRUFSQ0hfTkFNRS4KLQkqIHBzeW10YWIuYyAobG9v a3VwX3BhcnRpYWxfc3ltYm9sKTogRmluZCB0aGUKLQlTWU1CT0xfTUFUQ0hFU19TRUFSQ0hfTkFN RSBzdGFydCBvZiB0aGUgZm91bmQgYmxvY2sgb2YgbWF0Y2hpbmcKLQllbnRyaWVzLgotCSogc3lt dGFiLmMgKGxvb2t1cF9zeW1ib2xfaW5fbGFuZ3VhZ2UpOiBSZW1vdmUgdGhlIGNhc2Vfc2Vuc2l0 aXZlX29mZgotCU5BTUUgbG93ZXJjYXNpbmcuCi0JKHNlYXJjaF9zeW1ib2xzKTogUGFzcyBSRUdf SUNBU0UgdG8gcmVnY29tcCBmb3IgY2FzZV9zZW5zaXRpdmVfb2ZmLgotCShjb21wbGV0aW9uX2xp c3RfYWRkX25hbWUpOiBOZXcgdmFyaWFibGUgbmNtcCwgaW5pdGlhbGl6ZSBpdCwgdXNlIGl0Lgot CSogc3ltdGFiLmggKFNZTUJPTF9IQVNIX05FWFQpOiBBbHdheXMgY2FsbCB0b2xvd2VyLgotCSog dXRpbHMuYyAoc3RyY21wX2l3KTogU3VwcG9ydCBjYXNlX3NlbnNpdGl2ZV9vZmYuCi0JKHN0cmNt cF9pd19vcmRlcmVkKTogU29ydCBpbiBhIHdheSBjb21wYXRpYmxlIHdpdGggY2FzZV9zZW5zaXRp dmVfb2ZmLgotCU5ldyBmdW5jdGlvbiBjb21tZW50IHBhcnQuICBOZXcgdmFyaWFibGVzIHNhdmVk X3N0cmluZzEsCi0Jc2F2ZWRfc3RyaW5nMiBhbmQgY2FzZV9wYXNzLiAgQWRkIGEgcHJvcGVyIHNl Y29uZCBwYXNzLgotCi1nZGIvdGVzdHN1aXRlLwotMjAxMS0wNC0wOCAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIuYmFzZS9mb3J0cmFuLXN5bS1j YXNlLmM6IE5ldyBmaWxlLgotCSogZ2RiLmJhc2UvZm9ydHJhbi1zeW0tY2FzZS5leHA6IE5ldyBm aWxlLgotCSogZ2RiLmR3YXJmMi9kdzItY2FzZS1pbnNlbnNpdGl2ZS1kZWJ1Zy5TOiBOZXcgZmls ZS4KLQkqIGdkYi5kd2FyZjIvZHcyLWNhc2UtaW5zZW5zaXRpdmUuYzogTmV3IGZpbGUuCi0JKiBn ZGIuZHdhcmYyL2R3Mi1jYXNlLWluc2Vuc2l0aXZlLmV4cDogTmV3IGZpbGUuCi0KLUluZGV4OiBn ZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9kd2FyZjJyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4yLjkwLjIwMTEwNTI1Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTA1LTI1IDE3OjEyOjUx LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL2R3YXJmMnJlYWQu YwkyMDExLTA1LTI1IDE5OjEyOjMzLjAwMDAwMDAwMCArMDIwMAotQEAgLTE1Miw2ICsxNTIsOSBA QCBERUZfVkVDX0kgKG9mZnNldF90eXBlKTsKLSAgICBhIGNvbW1lbnQgYnkgdGhlIGNvZGUgdGhh dCB3cml0ZXMgdGhlIGluZGV4LiAgKi8KLSBzdHJ1Y3QgbWFwcGVkX2luZGV4Ci0gewotKyAgLyog SW5kZXggZGF0YSBmb3JtYXQgdmVyc2lvbi4gICovCi0rICBpbnQgdmVyc2lvbjsKLSsKLSAgIC8q IFRoZSB0b3RhbCBsZW5ndGggb2YgdGhlIGJ1ZmZlci4gICovCi0gICBvZmZfdCB0b3RhbF9zaXpl OwotIAotQEAgLTE5OTcsMTcgKzIwMDAsMjMgQEAgY3JlYXRlX2FkZHJtYXBfZnJvbV9pbmRleCAo c3RydWN0IG9iamZpbAotICAgIFNZTUJPTF9IQVNIX05FWFQsIGJ1dCB3ZSBrZWVwIGEgc2VwYXJh dGUgY29weSB0byBtYWludGFpbiBjb250cm9sIG92ZXIgdGhlCi0gICAgaW1wbGVtZW50YXRpb24u ICBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBoYXNoIGZ1bmN0aW9uIGlzIHRpZWQgdG8g dGhlCi0gICAgZm9ybWF0IG9mIHRoZSBtYXBwZWQgaW5kZXggZmlsZS4gIFRoZSBoYXNoIHZhbHVl cyBkbyBub3QgaGF2ZSB0byBtYXRjaCB3aXRoCi0tICAgU1lNQk9MX0hBU0hfTkVYVC4gICovCi0r ICAgU1lNQk9MX0hBU0hfTkVYVC4KLSsgICAKLSsgICBVc2UgSU5UX01BWCBmb3IgSU5ERVhfVkVS U0lPTiBpZiB5b3UgZ2VuZXJhdGUgdGhlIGN1cnJlbnQgaW5kZXggZm9ybWF0LiAgKi8KLSAKLSBz dGF0aWMgaGFzaHZhbF90Ci0tbWFwcGVkX2luZGV4X3N0cmluZ19oYXNoIChjb25zdCB2b2lkICpw KQotK21hcHBlZF9pbmRleF9zdHJpbmdfaGFzaCAoaW50IGluZGV4X3ZlcnNpb24sIGNvbnN0IHZv aWQgKnApCi0gewotICAgY29uc3QgdW5zaWduZWQgY2hhciAqc3RyID0gKGNvbnN0IHVuc2lnbmVk IGNoYXIgKikgcDsKLSAgIGhhc2h2YWxfdCByID0gMDsKLSAgIHVuc2lnbmVkIGNoYXIgYzsKLSAK LSAgIHdoaWxlICgoYyA9ICpzdHIrKykgIT0gMCkKLS0gICAgciA9IHIgKiA2NyArIGMgLSAxMTM7 Ci0rICAgIHsKLSsgICAgICBpZiAoaW5kZXhfdmVyc2lvbiA+PSA1KQotKwljID0gdG9sb3dlciAo Yyk7Ci0rICAgICAgciA9IHIgKiA2NyArIGMgLSAxMTM7Ci0rICAgIH0KLSAKLSAgIHJldHVybiBy OwotIH0KLUBAIC0yMDIzLDYgKzIwMzIsNyBAQCBmaW5kX3Nsb3RfaW5fbWFwcGVkX2hhc2ggKHN0 cnVjdCBtYXBwZWRfCi0gICBzdHJ1Y3QgY2xlYW51cCAqYmFja190byA9IG1ha2VfY2xlYW51cCAo bnVsbF9jbGVhbnVwLCAwKTsKLSAgIG9mZnNldF90eXBlIGhhc2g7Ci0gICBvZmZzZXRfdHlwZSBz bG90LCBzdGVwOwotKyAgaW50ICgqY21wKSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwot IAotICAgaWYgKGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVz Ci0gICAgICAgfHwgY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfamF2 YQotQEAgLTIwNDUsOSArMjA1NSwxNiBAQCBmaW5kX3Nsb3RfaW5fbWFwcGVkX2hhc2ggKHN0cnVj dCBtYXBwZWRfCi0gCX0KLSAgICAgfQotIAotLSAgaGFzaCA9IG1hcHBlZF9pbmRleF9zdHJpbmdf aGFzaCAobmFtZSk7Ci0rICAvKiBJbmRleCB2ZXJzaW9uIDQgZGlkIG5vdCBzdXBwb3J0IGNhc2Ug aW5zZW5zaXRpdmUgc2VhcmNoZXMuICBCdXQgdGhlCi0rICAgICBpbmRleGVzIGZvciBjYXNlIGlu c2Vuc2l0aXZlIGxhbmd1YWdlcyBhcmUgYnVpbHQgaW4gbG93ZXJjYXNlLCB0aGVyZWZvcmUKLSsg ICAgIHNpbXVsYXRlIG91ciBOQU1FIGJlaW5nIHNlYXJjaGVkIGlzIGFsc28gbG93ZXJjYXNlZC4g ICovCi0rICBoYXNoID0gbWFwcGVkX2luZGV4X3N0cmluZ19oYXNoICgoaW5kZXgtPnZlcnNpb24g PT0gNAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGNhc2Vfc2Vuc2l0 aXZpdHkgPT0gY2FzZV9zZW5zaXRpdmVfb2ZmCi0rCQkJCSAgICA/IDUgOiBpbmRleC0+dmVyc2lv biksCi0rCQkJCSAgIG5hbWUpOwotICAgc2xvdCA9IGhhc2ggJiAoaW5kZXgtPnN5bWJvbF90YWJs ZV9zbG90cyAtIDEpOwotICAgc3RlcCA9ICgoaGFzaCAqIDE3KSAmIChpbmRleC0+c3ltYm9sX3Rh YmxlX3Nsb3RzIC0gMSkpIHwgMTsKLSsgIGNtcCA9IChjYXNlX3NlbnNpdGl2aXR5ID09IGNhc2Vf c2Vuc2l0aXZlX29uID8gc3RyY21wIDogc3RyY2FzZWNtcCk7Ci0gCi0gICBmb3IgKDs7KQotICAg ICB7Ci1AQCAtMjA2MSw3ICsyMDc4LDcgQEAgZmluZF9zbG90X2luX21hcHBlZF9oYXNoIChzdHJ1 Y3QgbWFwcGVkXwotIAl9Ci0gCi0gICAgICAgc3RyID0gaW5kZXgtPmNvbnN0YW50X3Bvb2wgKyBN QVlCRV9TV0FQIChpbmRleC0+c3ltYm9sX3RhYmxlW2ldKTsKLS0gICAgICBpZiAoIXN0cmNtcCAo bmFtZSwgc3RyKSkKLSsgICAgICBpZiAoIWNtcCAobmFtZSwgc3RyKSkKLSAJewotIAkgICp2ZWNf b3V0ID0gKG9mZnNldF90eXBlICopIChpbmRleC0+Y29uc3RhbnRfcG9vbAotIAkJCQkgICAgICAr IE1BWUJFX1NXQVAgKGluZGV4LT5zeW1ib2xfdGFibGVbaSArIDFdKSk7Ci1AQCAtMjEwNSwxNSAr MjEyMiwxNyBAQCBkd2FyZjJfcmVhZF9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpCi0gICAv KiBWZXJzaW9ucyBlYXJsaWVyIHRoYW4gMyBlbWl0dGVkIGV2ZXJ5IGNvcHkgb2YgYSBwc3ltYm9s LiAgVGhpcwotICAgICAgY2F1c2VzIHRoZSBpbmRleCB0byBiZWhhdmUgdmVyeSBwb29ybHkgZm9y IGNlcnRhaW4gcmVxdWVzdHMuICBWZXJzaW9uIDMKLSAgICAgIGNvbnRhaW5lZCBpbmNvbXBsZXRl IGFkZHJtYXAuICBTbywgaXQgc2VlbXMgYmV0dGVyIHRvIGp1c3QgaWdub3JlIHN1Y2gKLS0gICAg IGluZGljZXMuICAqLwotKyAgICAgaW5kaWNlcy4gIEluZGV4IHZlcnNpb24gNCB1c2VzIGEgZGlm ZmVyZW50IGhhc2ggZnVuY3Rpb24gdGhhbiBpbmRleAotKyAgICAgdmVyc2lvbiA1IGFuZCBsYXRl ci4gICovCi0gICBpZiAodmVyc2lvbiA8IDQpCi0gICAgIHJldHVybiAwOwotICAgLyogSW5kZXhl cyB3aXRoIGhpZ2hlciB2ZXJzaW9uIHRoYW4gdGhlIG9uZSBzdXBwb3J0ZWQgYnkgR0RCIG1heSBi ZSBubwotICAgICAgbG9uZ2VyIGJhY2t3YXJkIGNvbXBhdGlibGUuICAqLwotLSAgaWYgKHZlcnNp b24gPiA0KQotKyAgaWYgKHZlcnNpb24gPiA1KQotICAgICByZXR1cm4gMDsKLSAKLSAgIG1hcCA9 IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzdHJ1Y3QgbWFwcGVk X2luZGV4KTsKLSsgIG1hcC0+dmVyc2lvbiA9IHZlcnNpb247Ci0gICBtYXAtPnRvdGFsX3NpemUg PSBkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5zaXplOwotIAotICAgbWV0YWRhdGEgPSAo b2Zmc2V0X3R5cGUgKikgKGFkZHIgKyBzaXplb2YgKG9mZnNldF90eXBlKSk7Ci1AQCAtMTU2OTIs MTMgKzE1NzExLDE2IEBAIHN0cnVjdCBzdHJ0YWJfZW50cnkKLSAgIGNvbnN0IGNoYXIgKnN0cjsK LSB9OwotIAotLS8qIEhhc2ggZnVuY3Rpb24gZm9yIGEgc3RydGFiX2VudHJ5LiAgKi8KLSsvKiBI YXNoIGZ1bmN0aW9uIGZvciBhIHN0cnRhYl9lbnRyeS4KLSsKLSsgICBGdW5jdGlvbiBpcyB1c2Vk IG9ubHkgZHVyaW5nIHdyaXRlX2hhc2hfdGFibGUgc28gbm8gaW5kZXggZm9ybWF0IGJhY2t3YXJk Ci0rICAgY29tcGF0aWJpbGl0eSBpcyBuZWVkZWQuICAqLwotIAotIHN0YXRpYyBoYXNodmFsX3QK LSBoYXNoX3N0cnRhYl9lbnRyeSAoY29uc3Qgdm9pZCAqZSkKLSB7Ci0gICBjb25zdCBzdHJ1Y3Qg c3RydGFiX2VudHJ5ICplbnRyeSA9IGU7Ci0tICByZXR1cm4gbWFwcGVkX2luZGV4X3N0cmluZ19o YXNoIChlbnRyeS0+c3RyKTsKLSsgIHJldHVybiBtYXBwZWRfaW5kZXhfc3RyaW5nX2hhc2ggKElO VF9NQVgsIGVudHJ5LT5zdHIpOwotIH0KLSAKLSAvKiBFcXVhbGl0eSBmdW5jdGlvbiBmb3IgYSBz dHJ0YWJfZW50cnkuICAqLwotQEAgLTE1ODM2LDEyICsxNTg1OCwxNSBAQCBjbGVhbnVwX21hcHBl ZF9zeW10YWIgKHZvaWQgKnApCi0gfQotIAotIC8qIEZpbmQgYSBzbG90IGluIFNZTVRBQiBmb3Ig dGhlIHN5bWJvbCBOQU1FLiAgUmV0dXJucyBhIHBvaW50ZXIgdG8KLS0gICB0aGUgc2xvdC4gICov Ci0rICAgdGhlIHNsb3QuCi0rICAgCi0rICAgRnVuY3Rpb24gaXMgdXNlZCBvbmx5IGR1cmluZyB3 cml0ZV9oYXNoX3RhYmxlIHNvIG5vIGluZGV4IGZvcm1hdCBiYWNrd2FyZAotKyAgIGNvbXBhdGli aWxpdHkgaXMgbmVlZGVkLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0IHN5bXRhYl9pbmRleF9lbnRy eSAqKgotIGZpbmRfc2xvdCAoc3RydWN0IG1hcHBlZF9zeW10YWIgKnN5bXRhYiwgY29uc3QgY2hh ciAqbmFtZSkKLSB7Ci0tICBvZmZzZXRfdHlwZSBpbmRleCwgc3RlcCwgaGFzaCA9IG1hcHBlZF9p bmRleF9zdHJpbmdfaGFzaCAobmFtZSk7Ci0rICBvZmZzZXRfdHlwZSBpbmRleCwgc3RlcCwgaGFz aCA9IG1hcHBlZF9pbmRleF9zdHJpbmdfaGFzaCAoSU5UX01BWCwgbmFtZSk7Ci0gCi0gICBpbmRl eCA9IGhhc2ggJiAoc3ltdGFiLT5zaXplIC0gMSk7Ci0gICBzdGVwID0gKChoYXNoICogMTcpICYg KHN5bXRhYi0+c2l6ZSAtIDEpKSB8IDE7Ci1AQCAtMTYzNjksNyArMTYzOTQsNyBAQCB3cml0ZV9w c3ltdGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgCi0gICB0b3RhbF9sZW4gPSBzaXplX29m X2NvbnRlbnRzOwotIAotICAgLyogVGhlIHZlcnNpb24gbnVtYmVyLiAgKi8KLS0gIHZhbCA9IE1B WUJFX1NXQVAgKDQpOwotKyAgdmFsID0gTUFZQkVfU1dBUCAoNSk7Ci0gICBvYnN0YWNrX2dyb3cg KCZjb250ZW50cywgJnZhbCwgc2l6ZW9mICh2YWwpKTsKLSAKLSAgIC8qIFRoZSBvZmZzZXQgb2Yg dGhlIENVIGxpc3QgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUuICAqLwotSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA1MjUvZ2RiL21pbnN5bXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAu MjAxMTA1MjUub3JpZy9nZGIvbWluc3ltcy5jCTIwMTEtMDUtMjUgMTc6MTI6NTEuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvbWluc3ltcy5jCTIwMTEtMDUtMjUg MTc6MTM6MTMuMDAwMDAwMDAwICswMjAwCi1AQCAtMjM5LDExICsyMzksMTYgQEAgbG9va3VwX21p bmltYWxfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lLAotIAotIAkJICBpZiAocGFzcyA9PSAxKQot IAkJICAgIHsKLS0JCSAgICAgIG1hdGNoID0gc3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1FICht c3ltYm9sKSwKLS0JCQkJICAgICAgbW9kaWZpZWRfbmFtZSkgPT0gMDsKLSsJCSAgICAgIGludCAo KmNtcCkgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKLSsKLSsJCSAgICAgIGNtcCA9IChj YXNlX3NlbnNpdGl2aXR5ID09IGNhc2Vfc2Vuc2l0aXZlX29uCi0rCQkgICAgICAgICAgICAgPyBz dHJjbXAgOiBzdHJjYXNlY21wKTsKLSsJCSAgICAgIG1hdGNoID0gY21wIChTWU1CT0xfTElOS0FH RV9OQU1FIChtc3ltYm9sKSwKLSsJCQkJICAgbW9kaWZpZWRfbmFtZSkgPT0gMDsKLSAJCSAgICB9 Ci0gCQkgIGVsc2UKLSAJCSAgICB7Ci0rCQkgICAgICAvKiBUaGUgZnVuY3Rpb24gcmVzcGVjdHMg Q0FTRV9TRU5TSVRJVklUWS4gICovCi0gCQkgICAgICBtYXRjaCA9IFNZTUJPTF9NQVRDSEVTX1NF QVJDSF9OQU1FIChtc3ltYm9sLAotIAkJCQkJCQkgIG1vZGlmaWVkX25hbWUpOwotIAkJICAgIH0K LUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9wc3ltdGFiLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4yLjkwLjIwMTEwNTI1Lm9yaWcvZ2RiL3BzeW10YWIuYwkyMDExLTA0LTIwIDIyOjEw OjI5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3BzeW10YWIu YwkyMDExLTA1LTI1IDE3OjEzOjEzLjAwMDAwMDAwMCArMDIwMAotQEAgLTY5MCw4ICs2OTAsMTUg QEAgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9zeQotIAlpbnRlcm5hbF9l cnJvciAoX19GSUxFX18sIF9fTElORV9fLAotIAkJCV8oImZhaWxlZCBpbnRlcm5hbCBjb25zaXN0 ZW5jeSBjaGVjayIpKTsKLSAKLS0gICAgICB3aGlsZSAodG9wIDw9IHJlYWxfdG9wCi0tCSAgICAg JiYgU1lNQk9MX01BVENIRVNfU0VBUkNIX05BTUUgKCp0b3AsIHNlYXJjaF9uYW1lKSkKLSsgICAg ICAvKiBGb3IgYGNhc2Vfc2Vuc2l0aXZpdHkgPT0gY2FzZV9zZW5zaXRpdmVfb2ZmJyBzdHJjbXBf aXdfb3JkZXJlZCB3aWxsCi0rCSBzZWFyY2ggbW9yZSBleGFjdGx5IHRoYW4gd2hhdCBtYXRjaGVz IFNZTUJPTF9NQVRDSEVTX1NFQVJDSF9OQU1FLiAgKi8KLSsgICAgICB3aGlsZSAodG9wID49IHN0 YXJ0ICYmIFNZTUJPTF9NQVRDSEVTX1NFQVJDSF9OQU1FICgqdG9wLCBzZWFyY2hfbmFtZSkpCi0r CXRvcC0tOwotKwotKyAgICAgIC8qIEZpeHVwIHRvIGhhdmUgYSBzeW1ib2wgd2hpY2ggbWF0Y2hl cyBTWU1CT0xfTUFUQ0hFU19TRUFSQ0hfTkFNRS4gICovCi0rICAgICAgdG9wKys7Ci0rCi0rICAg ICAgd2hpbGUgKHRvcCA8PSByZWFsX3RvcCAmJiBTWU1CT0xfTUFUQ0hFU19TRUFSQ0hfTkFNRSAo KnRvcCwgc2VhcmNoX25hbWUpKQotIAl7Ci0gCSAgaWYgKHN5bWJvbF9tYXRjaGVzX2RvbWFpbiAo U1lNQk9MX0xBTkdVQUdFICgqdG9wKSwKLSAJCQkJICAgICBTWU1CT0xfRE9NQUlOICgqdG9wKSwg ZG9tYWluKSkKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9zeW10YWIuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA1MjUub3JpZy9nZGIvc3ltdGFiLmMJMjAxMS0wNS0y NSAxNzoxMjo1MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9z eW10YWIuYwkyMDExLTA1LTI1IDE3OjEzOjQ5LjAwMDAwMDAwMCArMDIwMAotQEAgLTEwNjIsMTkg KzEwNjIsNiBAQCBsb29rdXBfc3ltYm9sX2luX2xhbmd1YWdlIChjb25zdCBjaGFyICpuCi0gCX0K LSAgICAgfQotIAotLSAgaWYgKGNhc2Vfc2Vuc2l0aXZpdHkgPT0gY2FzZV9zZW5zaXRpdmVfb2Zm KQotLSAgICB7Ci0tICAgICAgY2hhciAqY29weTsKLS0gICAgICBpbnQgbGVuLCBpOwotLQotLSAg ICAgIGxlbiA9IHN0cmxlbiAobmFtZSk7Ci0tICAgICAgY29weSA9IChjaGFyICopIGFsbG9jYSAo bGVuICsgMSk7Ci0tICAgICAgZm9yIChpPSAwOyBpIDwgbGVuOyBpKyspCi0tICAgICAgICBjb3B5 W2ldID0gdG9sb3dlciAobmFtZVtpXSk7Ci0tICAgICAgY29weVtsZW5dID0gMDsKLS0gICAgICBt b2RpZmllZF9uYW1lID0gY29weTsKLS0gICAgfQotLQotICAgcmV0dXJudmFsID0gbG9va3VwX3N5 bWJvbF9hdXggKG1vZGlmaWVkX25hbWUsIGJsb2NrLCBkb21haW4sIGxhbmcsCi0gCQkJCSBpc19h X2ZpZWxkX29mX3RoaXMpOwotICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotQEAgLTMxMDYsNyAr MzA5Myw5IEBAIHNlYXJjaF9zeW1ib2xzIChjaGFyICpyZWdleHAsIGRvbWFpbl9lbnUKLSAJICAg IH0KLSAJfQotIAotLSAgICAgIGVycmNvZGUgPSByZWdjb21wICgmZGF0dW0ucHJlZywgcmVnZXhw LCBSRUdfTk9TVUIpOwotKyAgICAgIGVycmNvZGUgPSByZWdjb21wICgmZGF0dW0ucHJlZywgcmVn ZXhwLAotKwkJCSBSRUdfTk9TVUIgfCAoY2FzZV9zZW5zaXRpdml0eSA9PSBjYXNlX3NlbnNpdGl2 ZV9vZmYKLSsJCQkJICAgICAgPyBSRUdfSUNBU0UgOiAwKSk7Ci0gICAgICAgaWYgKGVycmNvZGUg IT0gMCkKLSAJewotIAkgIGNoYXIgKmVyciA9IGdldF9yZWdjb21wX2Vycm9yIChlcnJjb2RlLCAm ZGF0dW0ucHJlZyk7Ci1AQCAtMzU0Niw3ICszNTM1LDExIEBAIHJicmVha19jb21tYW5kIChjaGFy ICpyZWdleHAsIGludCBmcm9tX3QKLSBzdGF0aWMgaW50Ci0gY29tcGFyZV9zeW1ib2xfbmFtZSAo Y29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqc3ltX3RleHQsIGludCBzeW1fdGV4dF9sZW4p Ci0gewotLSAgaWYgKHN0cm5jbXAgKG5hbWUsIHN5bV90ZXh0LCBzeW1fdGV4dF9sZW4pICE9IDAp Ci0rICBpbnQgKCpuY21wKSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7Ci0r Ci0rICBuY21wID0gKGNhc2Vfc2Vuc2l0aXZpdHkgPT0gY2FzZV9zZW5zaXRpdmVfb24gPyBzdHJu Y21wIDogc3RybmNhc2VjbXApOwotKwotKyAgaWYgKG5jbXAgKG5hbWUsIHN5bV90ZXh0LCBzeW1f dGV4dF9sZW4pICE9IDApCi0gICAgIHJldHVybiAwOwotIAotICAgaWYgKHN5bV90ZXh0W3N5bV90 ZXh0X2xlbl0gPT0gJygnKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3N5bXRhYi5o Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDUyNS5vcmlnL2dkYi9zeW10YWIuaAky MDExLTA1LTI1IDE3OjEyOjUxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1 MjUvZ2RiL3N5bXRhYi5oCTIwMTEtMDUtMjUgMTc6MTM6MTMuMDAwMDAwMDAwICswMjAwCi1AQCAt MTAzNiw3ICsxMDM2LDggQEAgZXh0ZXJuIHVuc2lnbmVkIGludCBtc3ltYm9sX2hhc2ggKGNvbnN0 IAotICAgIGlzIG9ubHkgYSBHREIgaW4tbWVtb3J5IGNvbXB1dGVkIHZhbHVlIHdpdGggbm8gZXh0 ZXJuYWwgZmlsZXMgY29tcGF0aWJpbGl0eQotICAgIHJlcXVpcmVtZW50cy4gICovCi0gCi0tI2Rl ZmluZSBTWU1CT0xfSEFTSF9ORVhUKGhhc2gsIGMpICgoaGFzaCkgKiA2NyArIChjKSAtIDExMykK LSsjZGVmaW5lIFNZTUJPTF9IQVNIX05FWFQoaGFzaCwgYykgXAotKyAgKChoYXNoKSAqIDY3ICsg dG9sb3dlciAoKHVuc2lnbmVkIGNoYXIpIChjKSkgLSAxMTMpCi0gCi0gZXh0ZXJuIHN0cnVjdCBv YmpmaWxlICogbXN5bWJvbF9vYmpmaWxlIChzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKnN5bSk7Ci0g Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZvcnRy YW4tc3ltLWNhc2UuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9mb3J0cmFuLXN5bS1jYXNlLmMJMjAxMS0wNS0yNSAxNzoxMzoxMy4wMDAwMDAw MDAgKzAyMDAKLUBAIC0wLDAgKzEsMjIgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2Yg R0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KLSsKLStpbnQKLSttYWluIChpbnQgYXJnYywgY2hhciAqKmFSR3YpCi0rewotKyAg cmV0dXJuIDA7Ci0rfQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9mb3J0cmFuLXN5bS1jYXNlLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1 MjUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9mb3J0cmFuLXN5bS1jYXNlLmV4cAkyMDExLTA1LTI1 IDE3OjEzOjEzLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwyNyBAQAotKyMgQ29weXJpZ2h0 IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUgZm9ydHJhbi1zeW0tY2FzZQotK2lm IHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9XSB9IHsK LSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICByZXR1cm4g LTEKLSt9Ci0rCi0rZ2RiX3Rlc3QgInNldCBsYW5ndWFnZSBmb3J0cmFuIiB7V2FybmluZzogdGhl IGN1cnJlbnQgbGFuZ3VhZ2UgZG9lcyBub3QgbWF0Y2ggdGhpcyBmcmFtZVwufQotKwotK2dkYl90 ZXN0ICJmcmFtZSIgIiwgYVJHdj0uKiIKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi90 ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItY2FzZS1pbnNlbnNpdGl2ZS1kZWJ1Zy5TCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0r KysgZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWNhc2Ut aW5zZW5zaXRpdmUtZGVidWcuUwkyMDExLTA1LTI1IDE3OjEzOjEzLjAwMDAwMDAwMCArMDIwMAot QEAgLTAsMCArMSwxMDIgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUg R05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K LSsKLSsJLnNlY3Rpb24gLmRlYnVnX2luZm8KLSsuTGN1MV9iZWdpbjoKLSsJLyogQ1UgaGVhZGVy ICovCi0rCS40Ynl0ZQkuTGN1MV9lbmQgLSAuTGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBp bGF0aW9uIFVuaXQgKi8KLSsuTGN1MV9zdGFydDoKLSsJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVy c2lvbiAqLwotKwkuNGJ5dGUJLkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2 IHNlY3Rpb24gKi8KLSsJLmJ5dGUJNAkJCQkvKiBQb2ludGVyIHNpemUgKi8KLSsKLSsJLyogQ1Ug ZGllICovCi0rCS51bGViMTI4IDEJCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICov Ci0rCS5hc2NpaQkiZmlsZTEudHh0XDAiCQkJLyogRFdfQVRfbmFtZSAqLwotKwkuYXNjaWkJIkdO VSBDIDMuMy4zXDAiCQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJOAkJCQkvKiBEV19B VF9sYW5ndWFnZSAoRFdfTEFOR19Gb3J0cmFuOTApICovCi0rCS40Ynl0ZQkJRlVOQ19sYW5nCQkv KiBEV19BVF9sb3dfcGMgKi8KLSsJLjRieXRlCQltYWluCQkJLyogRFdfQVRfaGlnaF9wYyAqLwot KwotKwkudWxlYjEyOAkzCQkJLyogQWJicmV2OiBEV19UQUdfc3VicHJvZ3JhbSAqLwotKwkuYnl0 ZQkJMQkJCS8qIERXX0FUX2V4dGVybmFsICovCi0rCS5hc2NpaQkJIkZVTkNfbGFuZ1wwIgkJLyog RFdfQVRfbmFtZSAqLwotKwkuNGJ5dGUJCUZVTkNfbGFuZwkJLyogRFdfQVRfbG93X3BjICovCi0r CS40Ynl0ZQkJbWFpbgkJCS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19B VF9wcm90b3R5cGVkICovCi0rCS40Ynl0ZQkJLkx0eXBlIC0gLkxjdTFfYmVnaW4JLyogRFdfQVRf dHlwZSAqLwotKwotKy5MdHlwZToKLSsJLnVsZWIxMjggCTB4NQkJCS8qIEFiYnJldjogRFdfVEFH X2Jhc2VfdHlwZSAqLwotKwkuYnl0ZQkJMHg0CQkJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS5i eXRlCQkweDUJCQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwkuYXNjaWkgCQkiZm9vXDAiCQkJLyog RFdfQVRfbmFtZSAqLwotKwotKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAq LwotKy5MY3UxX2VuZDoKLSsKLSsvKiBBYmJyZXYgdGFibGUgKi8KLSsJLnNlY3Rpb24gLmRlYnVn X2FiYnJldgotKy5MYWJicmV2MV9iZWdpbjoKLSsJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2Rl ICovCi0rCS51bGViMTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5ieXRl CQkxCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUg Ki8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHgy NQkJCS8qIERXX0FUX3Byb2R1Y2VyICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3Ry aW5nICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLwotKwkudWxlYjEy OAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9s b3dfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS51bGViMTI4 CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICovCi0rCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1f YWRkciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJ LyogVGVybWluYXRvciAqLwotKwotKwkudWxlYjEyOAkzCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJ LnVsZWIxMjgJMHgyZQkJCS8qIERXX1RBR19zdWJwcm9ncmFtICovCi0rCS5ieXRlCQkwCQkJLyog aGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4M2YJCQkvKiBEV19BVF9leHRlcm5hbCAqLwot KwkudWxlYjEyOAkweGMJCQkvKiBEV19GT1JNX2ZsYWcgKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyog RFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwku dWxlYjEyOAkweDExCQkJLyogRFdfQVRfbG93X3BjICovCi0rCS51bGViMTI4CTB4MQkJCS8qIERX X0ZPUk1fYWRkciAqLwotKwkudWxlYjEyOAkweDEyCQkJLyogRFdfQVRfaGlnaF9wYyAqLwotKwku dWxlYjEyOAkweDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KLSsJLnVsZWIxMjgJMHgyNwkJCS8qIERX X0FUX3Byb3RvdHlwZWQgKi8KLSsJLnVsZWIxMjgJMHhjCQkJLyogRFdfRk9STV9mbGFnICovCi0r CS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBE V19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJ CTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJMHg1CQkJLyogQWJicmV2IGNv ZGUgKi8KLSsJLnVsZWIxMjgJMHgyNAkJCS8qIERXX1RBR19iYXNlX3R5cGUgKi8KLSsJLmJ5dGUJ CTB4MAkJCS8qIERXX2NoaWxkcmVuX25vICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0FUX2J5 dGVfc2l6ZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGVi MTI4CTB4M2UJCQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19G T1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIx MjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0 b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLmJ5dGUJCTB4MAkJ CS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItY2FzZS1p bnNlbnNpdGl2ZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6 MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvZHcyLWNhc2UtaW5zZW5zaXRpdmUuYwkyMDExLTA1LTI1IDE3OjEzOjEzLjAw MDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwzOCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFy dCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTEgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uICAqLwotKwotKy8qIFVzZSBEV19MQU5HX0ZvcnRyYW45MCBmb3IgY2FzZSBpbnNl bnNpdGl2ZSBEV0FSRi4gICovCi0rCi0rdm9pZAotK0ZVTkNfbGFuZyAodm9pZCkKLSt7Ci0rfQot KwotKy8qIFN5bWJvbCBpcyBwcmVzZW50IG9ubHkgaW4gRUxGIC5zeW10YWIuICAqLwotKwotK3Zv aWQKLStGVU5DX3N5bXRhYiAodm9pZCkKLSt7Ci0rfQotKwotK2ludAotK21haW4gKHZvaWQpCi0r ewotKyAgRlVOQ19sYW5nICgpOwotKyAgRlVOQ19zeW10YWIgKCk7Ci0rICByZXR1cm4gMDsKLSt9 Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcy LWNhc2UtaW5zZW5zaXRpdmUuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWNhc2UtaW5zZW5zaXRpdmUuZXhwCTIwMTEtMDUtMjUg MTc6MTM6MTMuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDQ5IEBACi0rIyBDb3B5cmlnaHQg MjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCi0rbG9hZF9saWIgZHdhcmYuZXhwCi0rCi0rIyBUaGlzIHRlc3QgY2FuIG9u bHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgot K2lmIHshW2R3YXJmMl9zdXBwb3J0XX0gewotKyAgICByZXR1cm4gMCAgCi0rfQotKwotK3NldCB0 ZXN0ZmlsZSAiZHcyLWNhc2UtaW5zZW5zaXRpdmUiCi0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVz dGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gW2xpc3QgJHt0ZXN0ZmlsZX0uYyAke3Rl c3RmaWxlfS1kZWJ1Zy5TXSB7bm9kZWJ1Z31dIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0r Z2RiX3Rlc3QgInNob3cgY2FzZS1zZW5zaXRpdmUiIHtDYXNlIHNlbnNpdGl2aXR5IGluIG5hbWUg c2VhcmNoIGlzICJhdXRvOyBjdXJyZW50bHkgb24iXC59Ci0rCi0rZ2RiX3Rlc3QgImluZm8gZnVu Y3Rpb25zIGZVbkNfbGFuZyIgXAotKwkgIkFsbCBmdW5jdGlvbnMgbWF0Y2hpbmcgcmVndWxhciBl eHByZXNzaW9uIFwiZlVuQ19sYW5nXCI6IiBcCi0rCSAicmVnZXhwIGNhc2Utc2Vuc2l0aXZlIG9u IgotKwotK2dkYl90ZXN0ICJzZXQgY2FzZS1zZW5zaXRpdmUgb2ZmIiB7d2FybmluZzogdGhlIGN1 cnJlbnQgY2FzZSBzZW5zaXRpdml0eSBzZXR0aW5nIGRvZXMgbm90IG1hdGNoIHRoZSBsYW5ndWFn ZVwufQotKwotK2dkYl90ZXN0ICJpbmZvIGZ1bmN0aW9ucyBmVW5DX2xhbmciIFwKLSsJICJBbGwg ZnVuY3Rpb25zIG1hdGNoaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBcImZVbkNfbGFuZ1wiOlxbXHJc blxdK0ZpbGUgZmlsZTEudHh0OlxyXG5mb28gRlVOQ19sYW5nXFwodm9pZFxcKTsiIFwKLSsJICJy ZWdleHAgY2FzZS1zZW5zaXRpdmUgb2ZmIgotKwotK2dkYl90ZXN0ICJwIGZ1TkNfbGFuZyIgeyA9 IHtmb28gXCh2b2lkXCl9IDB4WzAtOWEtZl0rIDxGVU5DX2xhbmc+fQotK2dkYl90ZXN0ICJwIGZ1 TkNfc3ltdGFiIiB7ID0gezx0ZXh0IHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPn0gMHhbMC05YS1m XSsgPEZVTkNfc3ltdGFiPn0KLSsKLStpZiB7W2dkYl9icmVha3BvaW50ICJmdU5DX2xhbmciXSA9 PSAxfSB7Ci0rICAgIHBhc3MgInNldHRpbmcgYnJlYWtwb2ludCBhdCBmdU5DX2xhbmciCi0rfQot KwotK2lmIHtbZ2RiX2JyZWFrcG9pbnQgImZ1TkNfc3ltdGFiIl0gPT0gMX0gewotKyAgICBwYXNz ICJzZXR0aW5nIGJyZWFrcG9pbnQgYXQgZnVOQ19zeW10YWIiCi0rfQotSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA1MjUvZ2RiL3V0aWxzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEw NTI1Lm9yaWcvZ2RiL3V0aWxzLmMJMjAxMS0wNS0yNSAxNzoxMjo1MS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi91dGlscy5jCTIwMTEtMDUtMjUgMTc6MTM6MTMu MDAwMDAwMDAwICswMjAwCi1AQCAtMzAwMywxMCArMzAwMywxMiBAQCBzdHJjbXBfaXcgKGNvbnN0 IGNoYXIgKnN0cmluZzEsIGNvbnN0IGNoCi0gCXsKLSAJICBzdHJpbmcyKys7Ci0gCX0KLS0gICAg ICBpZiAoKnN0cmluZzEgIT0gKnN0cmluZzIpCi0tCXsKLS0JICBicmVhazsKLS0JfQotKyAgICAg IGlmIChjYXNlX3NlbnNpdGl2aXR5ID09IGNhc2Vfc2Vuc2l0aXZlX29uICYmICpzdHJpbmcxICE9 ICpzdHJpbmcyKQotKwlicmVhazsKLSsgICAgICBpZiAoY2FzZV9zZW5zaXRpdml0eSA9PSBjYXNl X3NlbnNpdGl2ZV9vZmYKLSsJICAmJiAodG9sb3dlciAoKHVuc2lnbmVkIGNoYXIpICpzdHJpbmcx KQotKwkgICAgICAhPSB0b2xvd2VyICgodW5zaWduZWQgY2hhcikgKnN0cmluZzIpKSkKLSsJYnJl YWs7Ci0gICAgICAgaWYgKCpzdHJpbmcxICE9ICdcMCcpCi0gCXsKLSAJICBzdHJpbmcxKys7Ci1A QCAtMzAyNyw2ICszMDI5LDEwIEBAIHN0cmNtcF9pdyAoY29uc3QgY2hhciAqc3RyaW5nMSwgY29u c3QgY2gKLSAgICBzdHJjbXBfaXcoTElTVF9FTFQsIE5BTUUpLCB0aGVuIHRoZSBwbGFjZSB0byBz dGFydCBsb29raW5nIGlzIHJpZ2h0Ci0gICAgd2hlcmUgdGhpcyBmdW5jdGlvbiB3b3VsZCBwdXQg TkFNRS4KLSAKLSsgICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgbmV1dHJhbCB0byB0aGUgQ0FTRV9T RU5TSVRJVklUWSBzZXR0aW5nIGFzIHRoZSB1c2VyCi0rICAgbWF5IGNob29zZSBpdCBkdXJpbmcg bGF0ZXIgbG9va3VwLiAgVGhlcmVmb3JlIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHNvcnRzCi0rICAg cHJpbWFyaWx5IGNhc2UtaW5zZW5zaXRpdmVseSBhbmQgc2Vjb25kYXJpbHkgY2FzZS1zZW5zaXRp dmVseS4KLSsKLSAgICBIZXJlIGFyZSBzb21lIGV4YW1wbGVzIG9mIHdoeSB1c2luZyBzdHJjbXAg dG8gc29ydCBpcyBhIGJhZCBpZGVhOgotIAotICAgIFdoaXRlc3BhY2UgZXhhbXBsZToKLUBAIC0z MDUyLDggKzMwNTgsMTAgQEAgc3RyY21wX2l3IChjb25zdCBjaGFyICpzdHJpbmcxLCBjb25zdCBj aAotIGludAotIHN0cmNtcF9pd19vcmRlcmVkIChjb25zdCBjaGFyICpzdHJpbmcxLCBjb25zdCBj aGFyICpzdHJpbmcyKQotIHsKLS0gIC8qIEZvcm1hdHRpbmcgc3R1Yi4gICovCi0tICBpZiAoMSkK LSsgIGNvbnN0IGNoYXIgKnNhdmVkX3N0cmluZzEgPSBzdHJpbmcxLCAqc2F2ZWRfc3RyaW5nMiA9 IHN0cmluZzI7Ci0rICBlbnVtIGNhc2Vfc2Vuc2l0aXZpdHkgY2FzZV9wYXNzID0gY2FzZV9zZW5z aXRpdmVfb2ZmOwotKwotKyAgZm9yICg7OykKLSAgICAgewotICAgICAgIC8qIEMxIGFuZCBDMiBh cmUgdmFsaWQgb25seSBpZiAqc3RyaW5nMSAhPSAnXDAnICYmICpzdHJpbmcyICE9ICdcMCcuCi0g CSBQcm92aWRlIHN0dWIgY2hhcmFjdGVycyBpZiB3ZSBhcmUgYWxyZWFkeSBhdCB0aGUgZW5kIG9m IG9uZSBvZiB0aGUKLUBAIC0zMDY3LDggKzMwNzUsMTcgQEAgc3RyY21wX2l3X29yZGVyZWQgKGNv bnN0IGNoYXIgKnN0cmluZzEsIAotIAkgIHdoaWxlIChpc3NwYWNlICgqc3RyaW5nMikpCi0gCSAg ICBzdHJpbmcyKys7Ci0gCi0rCSAgc3dpdGNoIChjYXNlX3Bhc3MpCi0rCSAgewotKwkgICAgY2Fz ZSBjYXNlX3NlbnNpdGl2ZV9vZmY6Ci0rCSAgICAgIGMxID0gdG9sb3dlciAoKHVuc2lnbmVkIGNo YXIpICpzdHJpbmcxKTsKLSsJICAgICAgYzIgPSB0b2xvd2VyICgodW5zaWduZWQgY2hhcikgKnN0 cmluZzIpOwotKwkgICAgICBicmVhazsKLSsJICAgIGNhc2UgY2FzZV9zZW5zaXRpdmVfb246Ci0g CSAgICAgIGMxID0gKnN0cmluZzE7Ci0gCSAgICAgIGMyID0gKnN0cmluZzI7Ci0rCSAgICAgIGJy ZWFrOwotKwkgIH0KLSAJICBpZiAoYzEgIT0gYzIpCi0gCSAgICBicmVhazsKLSAKLUBAIC0zMDg2 LDcgKzMxMDMsNyBAQCBzdHJjbXBfaXdfb3JkZXJlZCAoY29uc3QgY2hhciAqc3RyaW5nMSwgCi0g CSAgICAgY29tcGFyaXNvbiBpbiB0aGUgY2FzZXMgd2hlcmUgb25lIG9mIHRoZW0gaXMgJ1wwJyBv ciAnKCcuICAqLwotIAljYXNlICdcMCc6Ci0gCSAgaWYgKCpzdHJpbmcyID09ICdcMCcpCi0tCSAg ICByZXR1cm4gMDsKLSsJICAgIGJyZWFrOwotIAkgIGVsc2UKLSAJICAgIHJldHVybiAtMTsKLSAJ Y2FzZSAnKCc6Ci1AQCAtMzA5Nyw5ICszMTE0LDIyIEBAIHN0cmNtcF9pd19vcmRlcmVkIChjb25z dCBjaGFyICpzdHJpbmcxLCAKLSAJZGVmYXVsdDoKLSAJICBpZiAoKnN0cmluZzIgPT0gJ1wwJyB8 fCAqc3RyaW5nMiA9PSAnKCcpCi0gCSAgICByZXR1cm4gMTsKLS0JICBlbHNlCi0tCSAgICByZXR1 cm4gYzEgLSBjMjsKLSsJICBlbHNlIGlmIChjMSA+IGMyKQotKwkgICAgcmV0dXJuIDE7Ci0rCSAg ZWxzZSBpZiAoYzEgPCBjMikKLSsJICAgIHJldHVybiAtMTsKLSsJICAvKiBQQVNTVEhSVSAqLwot IAl9Ci0rCi0rICAgICAgaWYgKGNhc2VfcGFzcyA9PSBjYXNlX3NlbnNpdGl2ZV9vbikKLSsJcmV0 dXJuIDA7Ci0rICAgICAgCi0rICAgICAgLyogT3RoZXJ3aXNlIHRoZSBzdHJpbmdzIHdlcmUgZXF1 YWwgaW4gY2FzZSBpbnNlbnNpdGl2ZSB3YXksIG1ha2UKLSsJIGEgbW9yZSBmaW5lIGdyYWluZWQg Y29tcGFyaXNvbiBpbiBhIGNhc2Ugc2Vuc2l0aXZlIHdheS4gICovCi0rCi0rICAgICAgY2FzZV9w YXNzID0gY2FzZV9zZW5zaXRpdmVfb247Ci0rICAgICAgc3RyaW5nMSA9IHNhdmVkX3N0cmluZzE7 Ci0rICAgICAgc3RyaW5nMiA9IHNhdmVkX3N0cmluZzI7Ci0gICAgIH0KLSB9Ci0gCgpkaWZmIC0t Z2l0IGEvZ2RiLWJ6NzAxMTMxLXJlYWRsaW5lNjItMW9mMy5wYXRjaCBiL2dkYi1iejcwMTEzMS1y ZWFkbGluZTYyLTFvZjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YmE3 YmMuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NzAxMTMxLXJlYWRsaW5lNjItMW9mMy5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDIxMjUyICswLDAgQEAKLWFyY2hlci1qYW5rcmF0b2NodmlsLXJlYWRs aW5lNjIKLWIxMzcwNmFiYmVlOTY0NmY0ZGU1MjJjMDU1MmRkZDY4ZDFhNGY0M2EKLQotSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2NvbmZpZy5pbgotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvY29uZmlnLmluCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9nZGIvY29uZmlnLmluCTIwMTEt MDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtOTUzLDkgKzk1Myw2IEBACi0gLyog RGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLwotICN1 bmRlZiBwaWRfdAotIAotLS8qIHJlYWRsaW5lLTYuMCBzdGFydGVkIHRvIHVzZSBkaWZmZXJlbnQg bmFtZS4gKi8KLS0jdW5kZWYgcmVhZGxpbmVfZWNob2luZ19wCi0tCi0gLyogRGVmaW5lIHRvIHRo ZSBlcXVpdmFsZW50IG9mIHRoZSBDOTkgJ3Jlc3RyaWN0JyBrZXl3b3JkLCBvciB0bwotICAgIG5v dGhpbmcgaWYgdGhpcyBpcyBub3Qgc3VwcG9ydGVkLiAgRG8gbm90IGRlZmluZSBpZiByZXN0cmlj dCBpcwotICAgIHN1cHBvcnRlZCBkaXJlY3RseS4gICovCi1JbmRleDogZ2RiLTcuMi45MC4yMDEx MDcwMy9nZGIvY29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5v cmlnL2dkYi9jb25maWd1cmUJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4yLjkwLjIwMTEwNzAzL2dkYi9jb25maWd1cmUJMjAxMS0wNy0wMyAxMDo0MToyMS4w MDAwMDAwMDAgKzAyMDAKLUBAIC0xMDIzNSwzOSArMTAyMzUsNiBAQCBpZiB0ZXN0ICIkd2l0aF9z eXN0ZW1fcmVhZGxpbmUiID0geWVzOyB0Ci0gICBSRUFETElORV9ERVBTPQotICAgUkVBRExJTkVf Q0ZMQUdTPQotICAgUkVBRExJTkVfVEVYSV9JTkNGTEFHPQotLQotLSAgIyByZWFkbGluZS02LjAg c3RhcnRlZCB0byB1c2UgdGhlIG5hbWUgYF9ybF9lY2hvaW5nX3AnLgotLSAgIyBgJChSRUFETElO RV9ESVIpLycgb2YgYnVuZGxlZCByZWFkbGluZSB3b3VsZCBub3QgcmVzb2x2ZSBpbiBjb25maWd1 cmUuCi0tCi0tICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciByZWFkbGluZV9lY2hvaW5nX3AiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZv ciByZWFkbGluZV9lY2hvaW5nX3AuLi4gIiA+JjY7IH0KLS0gIHNhdmVfTElCUz0kTElCUwotLSAg TElCUz0iJExJQlMgJFJFQURMSU5FIgotLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29u ZnRlc3QuJGFjX2V4dAotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0KLS1pbnQKLS1tYWluICgp Ci0tewotLWV4dGVybiBpbnQgcmVhZGxpbmVfZWNob2luZ19wOwotLQkJCQkgICAgcmV0dXJuIHJl YWRsaW5lX2VjaG9pbmdfcDsKLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1pZiBh Y19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBSRUFETElORV9FQ0hPSU5HX1A9 eWVzCi0tZWxzZQotLSAgUkVBRExJTkVfRUNIT0lOR19QPW5vCi0tCi0tJGFzX2VjaG8gIiNkZWZp bmUgcmVhZGxpbmVfZWNob2luZ19wIF9ybF9lY2hvaW5nX3AiID4+Y29uZmRlZnMuaAotLQotLWZp Ci0tcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0tICAgIGNv bmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICBMSUJTPSIkc2F2ZV9MSUJTIgot LSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRSRUFE TElORV9FQ0hPSU5HX1AiID4mNQotLSRhc19lY2hvICIkUkVBRExJTkVfRUNIT0lOR19QIiA+JjY7 IH0KLSBlbHNlCi0gICBSRUFETElORT0nJChSRUFETElORV9ESVIpL2xpYnJlYWRsaW5lLmEnCi0g ICBSRUFETElORV9ERVBTPSckKFJFQURMSU5FKScKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAz L2dkYi9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9y aWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTA3LTAzIDEwOjQx OjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTczMiwyMSArNzMyLDYgQEAgaWYgdGVzdCAiJHdpdGhf c3lzdGVtX3JlYWRsaW5lIiA9IHllczsgdAotICAgUkVBRExJTkVfREVQUz0KLSAgIFJFQURMSU5F X0NGTEFHUz0KLSAgIFJFQURMSU5FX1RFWElfSU5DRkxBRz0KLS0KLS0gICMgcmVhZGxpbmUtNi4w IHN0YXJ0ZWQgdG8gdXNlIHRoZSBuYW1lIGBfcmxfZWNob2luZ19wJy4KLS0gICMgYCQoUkVBRExJ TkVfRElSKS8nIG9mIGJ1bmRsZWQgcmVhZGxpbmUgd291bGQgbm90IHJlc29sdmUgaW4gY29uZmln dXJlLgotLQotLSAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgcmVhZGxpbmVfZWNob2luZ19wXSkKLS0g IHNhdmVfTElCUz0kTElCUwotLSAgTElCUz0iJExJQlMgJFJFQURMSU5FIgotLSAgQUNfTElOS19J RkVMU0UoQUNfTEFOR19QUk9HUkFNKCxbW2V4dGVybiBpbnQgcmVhZGxpbmVfZWNob2luZ19wOwot LQkJCQkgICAgcmV0dXJuIHJlYWRsaW5lX2VjaG9pbmdfcDtdXSksCi0tCQkgW1JFQURMSU5FX0VD SE9JTkdfUD15ZXNdLAotLQkJIFtSRUFETElORV9FQ0hPSU5HX1A9bm8KLS0JCSAgQUNfREVGSU5F KFtyZWFkbGluZV9lY2hvaW5nX3BdLCBbX3JsX2VjaG9pbmdfcF0sCi0tCQkJICAgIFtyZWFkbGlu ZS02LjAgc3RhcnRlZCB0byB1c2UgZGlmZmVyZW50IG5hbWUuXSldKQotLSAgTElCUz0iJHNhdmVf TElCUyIKLS0gIEFDX01TR19SRVNVTFQoWyRSRUFETElORV9FQ0hPSU5HX1BdKQotIGVsc2UKLSAg IFJFQURMSU5FPSckKFJFQURMSU5FX0RJUikvbGlicmVhZGxpbmUuYScKLSAgIFJFQURMSU5FX0RF UFM9JyQoUkVBRExJTkUpJwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvZ2RiL3R1aS90dWkt aW8uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9nZGIvdHVpL3R1 aS1pby5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45 MC4yMDExMDcwMy9nZGIvdHVpL3R1aS1pby5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAw ICswMjAwCi1AQCAtMTMzLDcgKzEzMyw3IEBAIHN0YXRpYyBGdW5jdGlvbiAqdHVpX29sZF9ybF9n ZXRjX2Z1bmN0aW8KLSBzdGF0aWMgVkZ1bmN0aW9uICp0dWlfb2xkX3JsX3JlZGlzcGxheV9mdW5j dGlvbjsKLSBzdGF0aWMgVkZ1bmN0aW9uICp0dWlfb2xkX3JsX3ByZXBfdGVybWluYWw7Ci0gc3Rh dGljIFZGdW5jdGlvbiAqdHVpX29sZF9ybF9kZXByZXBfdGVybWluYWw7Ci0tc3RhdGljIGludCB0 dWlfb2xkX3JlYWRsaW5lX2VjaG9pbmdfcDsKLStzdGF0aWMgaW50IHR1aV9vbGRfcmxfZWNob2lu Z19wOwotIAotIC8qIFJlYWRsaW5lIG91dHB1dCBzdHJlYW0uCi0gICAgU2hvdWxkIGJlIHJlbW92 ZWQgd2hlbiByZWFkbGluZSBpcyBjbGVhbi4gICovCi1AQCAtNTA2LDggKzUwNiw4IEBAIHR1aV9y bF9kaXNwbGF5X21hdGNoX2xpc3QgKGNoYXIgKiptYXRjaGUKLSB2b2lkCi0gdHVpX3NldHVwX2lv IChpbnQgbW9kZSkKLSB7Ci0tICBleHRlcm4gaW50IHJlYWRsaW5lX2VjaG9pbmdfcDsKLS0gCi0r ICBleHRlcm4gaW50IF9ybF9lY2hvaW5nX3A7Ci0rCi0gICBpZiAobW9kZSkKLSAgICAgewotICAg ICAgIC8qIFJlZGlyZWN0IHJlYWRsaW5lIHRvIFRVSS4gICovCi1AQCAtNTE2LDEyICs1MTYsMTIg QEAgdHVpX3NldHVwX2lvIChpbnQgbW9kZSkKLSAgICAgICB0dWlfb2xkX3JsX3ByZXBfdGVybWlu YWwgPSBybF9wcmVwX3Rlcm1fZnVuY3Rpb247Ci0gICAgICAgdHVpX29sZF9ybF9nZXRjX2Z1bmN0 aW9uID0gcmxfZ2V0Y19mdW5jdGlvbjsKLSAgICAgICB0dWlfb2xkX3JsX291dHN0cmVhbSA9IHJs X291dHN0cmVhbTsKLS0gICAgICB0dWlfb2xkX3JlYWRsaW5lX2VjaG9pbmdfcCA9IHJlYWRsaW5l X2VjaG9pbmdfcDsKLSsgICAgICB0dWlfb2xkX3JsX2VjaG9pbmdfcCA9IF9ybF9lY2hvaW5nX3A7 Ci0gICAgICAgcmxfcmVkaXNwbGF5X2Z1bmN0aW9uID0gdHVpX3JlZGlzcGxheV9yZWFkbGluZTsK LSAgICAgICBybF9kZXByZXBfdGVybV9mdW5jdGlvbiA9IHR1aV9kZXByZXBfdGVybWluYWw7Ci0g ICAgICAgcmxfcHJlcF90ZXJtX2Z1bmN0aW9uID0gdHVpX3ByZXBfdGVybWluYWw7Ci0gICAgICAg cmxfZ2V0Y19mdW5jdGlvbiA9IHR1aV9nZXRjOwotLSAgICAgIHJlYWRsaW5lX2VjaG9pbmdfcCA9 IDA7Ci0rICAgICAgX3JsX2VjaG9pbmdfcCA9IDA7Ci0gICAgICAgcmxfb3V0c3RyZWFtID0gdHVp X3JsX291dHN0cmVhbTsKLSAgICAgICBybF9wcm9tcHQgPSAwOwotICAgICAgIHJsX2NvbXBsZXRp b25fZGlzcGxheV9tYXRjaGVzX2hvb2sgPSB0dWlfcmxfZGlzcGxheV9tYXRjaF9saXN0OwotQEAg LTU2MCw3ICs1NjAsNyBAQCB0dWlfc2V0dXBfaW8gKGludCBtb2RlKQotICAgICAgIHJsX2dldGNf ZnVuY3Rpb24gPSB0dWlfb2xkX3JsX2dldGNfZnVuY3Rpb247Ci0gICAgICAgcmxfb3V0c3RyZWFt ID0gdHVpX29sZF9ybF9vdXRzdHJlYW07Ci0gICAgICAgcmxfY29tcGxldGlvbl9kaXNwbGF5X21h dGNoZXNfaG9vayA9IDA7Ci0tICAgICAgcmVhZGxpbmVfZWNob2luZ19wID0gdHVpX29sZF9yZWFk bGluZV9lY2hvaW5nX3A7Ci0rICAgICAgX3JsX2VjaG9pbmdfcCA9IHR1aV9vbGRfcmxfZWNob2lu Z19wOwotICAgICAgIHJsX2FscmVhZHlfcHJvbXB0ZWQgPSAwOwotIAotICAgICAgIC8qIFNhdmUg dHR5IGZvciBTSUdDT05ULiAgKi8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5l L0NIQU5HRUxPRwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFk bGluZS9DSEFOR0VMT0cJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL0NIQU5HRUxPRwkyMDExLTA3LTAzIDEwOjQxOjIx LjAwMDAwMDAwMCArMDIwMAotQEAgLTkxOCwzICs5MTgsMTc4IEBAIGNvbmZpZ3VyZS5pbgotIAkt IGNoYW5nZWQgcmVsZWFzZSBzdGF0dXMgdG8gYHJlbGVhc2UnCi0gCi0gW3JlYWRsaW5lLTUuMSBm cm96ZW5dCi0rCi0rCQkJCSAgIDEyLzkKLSsJCQkJICAgLS0tLQotK1tyZWFkbGluZS01LjEgcmVs ZWFzZWRdCi0rCi0rCQkJCSAgIDEyLzE0Ci0rCQkJCSAgIC0tLS0tCi0rZXhhbXBsZXMvcmxmZS9N YWtlZmlsZS5pbgotKwktIGFkZCBATElCU0AgdG8gTElCUyBhc3NpZ25tZW50IHRvIHBpY2sgdXAg ZXh0cmEgbGlicmFyaWVzIGZyb20KLSsJICBjb25maWd1cmUKLSsKLSsJCQkJIDEvMy8yMDA2Ci0r CQkJCSAtLS0tLS0tLQotK3N1cHBvcnQvc2hsaWItaW5zdGFsbAotKwktIEluc3RhbGwgc2hhcmVk IGxpYnJhcmllcyB3aXRoIGV4ZWN1dGUgYml0IHNldCBvbiBMaW51eAotKwotKwkJCQkgICAgNi85 Ci0rCQkJCSAgICAtLS0KLStbcmVhZGxpbmUtNS4yLWFscGhhIGZyb3plbl0KLSsKLSsJCQkJICAg Ni8yNgotKwkJCQkgICAtLS0tCi0rY29uZmlndXJlLmluCi0rCS0gc2V0IENST1NTX0NPTVBJTEUg dG8gdGhlIGVtcHR5IHN0cmluZyBieSBkZWZhdWx0LCBzbyB3ZSBkb24ndCBpbmhlcml0Ci0rCSAg YSByYW5kb20gdmFsdWUgZnJvbSB0aGUgZW52aXJvbm1lbnQKLSsKLSsJCQkJICAgIDcvOAotKwkJ CQkgICAgLS0tCi0rW3JlYWRsaW5lLTUuMi1hbHBoYSByZWxlYXNlZF0KLSsKLSsKLStbcmVhZGxp bmUtNS4yLWJldGEgcmVsZWFzZWRdCi0rCi0rCQkJCSAgIDkvMTIKLSsJCQkJICAgLS0tLQotK2Nv bmZpZy5oLmluCi0rICAgICAgICAtIGFkZCBkZWZpbmVzIGZvciB3Y3Njb2xsLCBpc3djdHlwZSwg aXN3dXBwZXIsIGlzd2xvd2VyLCB0b3d1cHBlciwKLSsgICAgICAgICAgdG93bG93ZXIgZnVuY3Rp b25zCi0rICAgICAgICAtIHJlcGxhY2UgZGVmaW5lIGZvciB3Y3RvbWIgd2l0aCBvbmUgZm9yIHdj cnRvbWIKLSsgICAgICAgIC0gYWRkIGRlZmluZXMgZm9yIHdjaGFyX3QsIHdpbnRfdCwgd2N0eXBl X3QgdHlwZXMKLSsKLSsJCQkJICAgMTAvMTEKLSsJCQkJICAgLS0tLS0KLStbcmVhZGxpbmUtNS4y IHJlbGVhc2VkXQotKwotKwkJCQkgICAxMS85Ci0rCQkJCSAgIC0tLS0KLStleGFtcGxlcy9ybGZl L3tjb25maWd1cmUuaW4sTWFrZWZpbGUuaW4sY29uZmlnLmguaW4scmxmZS5jLHB0eS5jfQotKwkt IHBvcnRhYmlsaXR5IGZpeGVzIGZyb20gTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3Jn PgotKwotKwkJCQkgICAxMS8yMQotKwkJCQkgICAtLS0tLQotK01ha2VmaWxlLmluCi0rCS0gYWRk IGBpbnN0YWxsLWV4YW1wbGVzJyBhbmQgYHVuaW5zdGFsbC1leGFtcGxlcycgdGFyZ2V0cwotKwot K2V4YW1wbGVzL01ha2VmaWxlLmluCi0rCS0gYWRkIGNvcnJlY3QgdmFyaWFibGVzIHRvIGJ1aWxk IGV4YW1wbGVzIG9uIFdpbmRvd3MKLSsJLSBhZGQgYXBwcm9wcmlhdGUgcnVsZXMgdG8gaW5zdGFs bCBhbmQgdW5pbnN0YWxsIGV4YW1wbGUgc291cmNlcyBpbgotKwkgICQoZGF0YWRpcikvcmVhZGxp bmUgCi0rCi0rCQkJCSAgIDExLzI3Ci0rCQkJCSAgIC0tLS0tCi0rY29uZmlnLmguaW4KLSsJLSBt b3ZlICN1bmRlZiBvZiBIQVZFX1NUUkNPTEwgb3V0IG9mIGNvbmZpZy5oLmluLCBzaW5jZSBhdXRv Y29uZiB0cmllcwotKwkgIHRvIHN1YnN0aXR1dGUgaXQgYmFzZWQgb24gY29uZmlndXJlIHRlc3Rz Ci0rCi0rCQkJCSA0LzI3LzIwMDcKLSsJCQkJIC0tLS0tLS0tLQotK2V4YW1wbGVzL2F1dG9jb25m Ci0rCS0gbmV3IGRpcmVjdG9yeSB3aXRoIGV4YW1wbGUgYXV0b2NvbmYgbWFjcm9zIHRvIGRldGVj dCByZWFkbGluZSBhbmQKLSsJICByZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGluc3RhbGxl ZCB2ZXJzaW9uCi0rCi0rCQkJCSAgIDYvMTMKLSsJCQkJICAgLS0tLQotK3N1cHBvcnQvc2hsaWIt aW5zdGFsbAotKwktIGNoYW5nZXMgdG8gc3VwcG9ydCBBSVggNS54IHNoYXJlZCBsaWJyYXJ5IGlu c3RhbGxhdGlvbgotKwotKwkJCQkgMy8yMC8yMDA4Ci0rCQkJCSAtLS0tLS0tLS0KLStzdXBwb3J0 L3NobGliLWluc3RhbGwKLSsJLSBhZGQgc3VwcG9ydCBmb3IgTmV0QlNEIGFuZCBJbnRlcml4IHNo YXJlZCBsaWJyYXJ5IGluc3RhbGxhdGlvbgotKwotKwkJCQkgICA0LzIyCi0rCQkJCSAgIC0tLS0K LStzdXBwb3J0L3djd2lkdGguYwotKwktIHVwZGF0ZWQgaW1wbGVtZW50YXRpb24gZnJvbSAyMDA3 LTA1Ci0rCi0rCQkJCSAgIDcvMTgKLSsJCQkJICAgLS0tLQotK3N1cHBvcnQvc2hsaWItaW5zdGFs bAotKwktIHN1cHBvcnQgZm9yIG1pbmd3MzIsIGNvbnRyaWJ1dGVkIGJ5IENhcmxvIEJyYW1peCA8 Y2FybG8uYnJhbWl4QGxpYmVyby5pdD4KLSsKLSsJCQkJICAgIDgvNAotKwkJCQkgICAgLS0tCi0r Y29uZmlndXJlLmluCi0rCS0gY2hhbmdlZCB0byByZWFkbGluZS02LjAKLSsKLSsJCQkJICAgOC8x OAotKwkJCQkgICAtLS0tCi0rc3VwcG9ydC9jb25maWcue2d1ZXNzLHN1Yn0KLSsJLSB1cGRhdGVk IHRvIG5ld2VyIHZlcnNpb25zIGZyb20gYXV0b2NvbmYtMi42MiBkaXN0cmlidXRpb24KLSsKLSsJ CQkJIDMvNS8yMDA5Ci0rCQkJCSAtLS0tLS0tLQotK3N1cHBvcnQvc2hsaWItaW5zdGFsbAotKwkt IHRha2UgYSBuZXcgLVYgaG9zdF92ZW5kb3IgYXJndW1lbnQKLSsJLSBhZGQgJHtob3N0X3ZlbmRv cn0gdG8gc3RyaW5nIHRlc3RlZCBpbiBjYXNlIHN0YXRlbWVudCBmb3Igc3ltbGluawotKwkgIGNy ZWF0aW9uIHNlY3Rpb24KLSsJLSBhZGQgc3VwcG9ydCBmb3IgRnJlZUJTRC9nZW50b28sIHdoaWNo IHVzZXMgTGludXggbGlicmFyeSBuYW1pbmcKLSsJICBzY2hlbWUKLSsJLSBjaGFuZ2UgRnJlZUJT RCBzeW1saW5rIHJ1bGVzLCBzaW5jZSBGcmVlQlNEIDcrIGhhcyBvbmx5IEVMRiBzaGFyZWQKLSsJ ICBsaWJyYXJpZXMuICBEcmFnb25mbHlCU0QgcnVsZXMgYXJlIHRoZSBzYW1lLiAgRml4IGZyb20g VGltb3RoeQotKwkgIFJlZGFlbGxpIDxkcml6enRAZ2VudG9vLm9yZz4KLSsKLStzaGxpYi9NYWtl ZmlsZS5pbgotKwktIGFkZCBkZWZpbml0aW9uIG9mIGhvc3RfdmVuZG9yLCBzdWJzdGl0dXRlZCBi eSBjb25maWd1cmUKLSsJLSBhZGQgLVYgaG9zdF92ZW5kb3IgYXJndW1lbnQgdG8gYWxsIGludm9j YXRpb25zIG9mIHNobGliLWluc3RhbGwuCi0rCSAgRml4IGZyb20gVGltb3RoeSBSZWRhZWxsaSA8 ZHJpenp0QGdlbnRvby5vcmc+Ci0rCi0rCQkJCSAgIDMvMTAKLSsJCQkJICAgLS0tLQotK2NvbmZp Z3VyZS5pbgotKwktIGFkZCBjYWxsIHRvIEFDX1NZU19MQVJHRUZJTEUgZm9yIHJlYWRkaXIgYW5k IGxhcmdlZmlsZSBzdXBwb3J0IG9uCi0rCSAgTGludXgKLSsKLStjb25maWcuaC5pbgotKwktIGFk ZCBfRklMRV9PRkZTRVRfQklUUyBkZWZpbmUKLSsKLSsJCQkJICAgNC8xOQotKwkJCQkgICAtLS0t Ci0rTWFrZWZpbGUuaW4KLSsJLSBhZGQgdGFyZ2V0cyBmb3IgbWFraW5nIGFuZCBpbnN0YWxsaW5n IGRvY3VtZW50YXRpb24gcmVxdWlyZWQgYnkgR05VCi0rCSAgY29kaW5nIHN0YW5kYXJkcy4gIEZp eCBmcm9tIEpvc2VwaCBNeWVycyA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+Ci0rCi0rcG9zaXhz ZWxlY3QuaAotKwktIHBpY2sgdXAgZnJvbSBiYXNoLiAgSW5zcGlyZWQgYnkgTWlrZSBGcnlzaW5n ZXIgPHZhcGllckBnZW50b28ub3JnPgotKwotKwkJCQkgICAxMC8yOAotKwkJCQkgICAtLS0tLQot K3N1cHBvcnQvc2hsaWItaW5zdGFsbAotKwktIGRlY3JlYXNlIHRoZSBkZWZhdWx0IHZlcnNpb24g b2YgRnJlZUJTRCB0aGF0IGluc3RhbGxzIHNoYXJlZCBsaWJyYXJpZXMKLSsJICB0byA0LnguICBB ZHZpY2UgZnJvbSBQZXRlciBKZXJlbXkgPHBldGVyamVyZW15QGFjbS5vcmc+Ci0rCi0rCQkJCSAg IDEyLzE4Ci0rCQkJCSAgIC0tLS0tCi0rW3JlYWRsaW5lLTYuMS1yYzEgcmVsZWFzZWRdCi0rCi0r CQkJCSAgIDEyLzIzCi0rCQkJCSAgIC0tLS0tCi0rZG9jL01ha2VmaWxlLmluCi0rCS0gbWFrZSBz dXJlICQodG9wZGlyKSBpcyBub3QgIi4uIiBiZWZvcmUgcmVtb3ZpbmcgYWxsIG9mIHRoZSBmb3Jt YXR0ZWQKLSsJICBkb2N1bWVudGF0aW9uIGluIGBtYWtlIGRpc3RjbGVhbicuICAkKHRvcGRpcikg aXMgc2V0IHRvIGAuLicgaWYKLSsJICByZWFkbGluZSBpcyBiZWluZyBidWlsdCBpbiB0aGUgc291 cmNlIGRpcmVjdG9yeS4gIEZpeGVzIHByb2JsZW0KLSsJICBub3RpY2VkIGJ5IFRIT1VNSU4gRGFt aWVuIDx0aG91bWluQGlwYW5lbWF0ZWNoLmNvbT4KLSsKLSsJCQkJICAgMTIvMjkKLSsJCQkJICAg LS0tLS0KLStbcmVhZGxpbmUtNi4xIGZyb3plbl0KLSsKLSsJCQkJIDIvNS8yMDEwCi0rCQkJCSAt LS0tLS0tLQotK2V4YW1wbGVzL01ha2VmaWxlLmluCi0rICAgICAgICAtIG1ha2Ugc3VyZSB0byBp bnN0YWxsIGV4YW1wbGUgQyBmaWxlcyB1c2luZyAkKHNyY2RpcikvJCRmIGluIGNhc2UKLSsgICAg ICAgICAgd2UncmUgYnVpbGRpbmcgb3V0c2lkZSB0aGUgc291cmNlIGRpcmVjdG9yeS4gIEJ1ZyBy ZXBvcnQgYW5kIGZpeAotKyAgICAgICAgICBmcm9tIFBldGVyIEJyZWl0ZW5sb2huZXIgPHBlYkBt cHBtdS5tcGcuZGU+Ci0rCi0rCQkJCSAgIDcvMjUKLSsJCQkJICAgLS0tLQotK3hmcmVlLmMKLSsJ LSBuZXcgZmlsZSB3aXRoIHhmcmVlKCkgaW1wbGVtZW50YXRpb24sIG1vdmVkIGZyb20geG1hbGxv Yy5jCi0rCi0rCQkJCSAgIDEyLzI4Ci0rCQkJCSAgIC0tLS0tCi0re2V4YW1wbGVzLHNobGlifS9N YWtlZmlsZS5pbgotKwktIEN5Z3dpbi1iYXNlZCBjaGFuZ2VzIGZyb20gRXJpYyBCbGFrZSA8ZWJs YWtlQHJlZGhhdC5jb20+Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9DSEFO R0VTCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL0NI QU5HRVMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkw LjIwMTEwNzAzL3JlYWRsaW5lL0NIQU5HRVMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAg KzAyMDAKLUBAIC0xLDMgKzEsMzIwIEBACi0rVGhpcyBkb2N1bWVudCBkZXRhaWxzIHRoZSBjaGFu Z2VzIGJldHdlZW4gdGhpcyB2ZXJzaW9uLCByZWFkbGluZS02LjIsCi0rYW5kIHRoZSBwcmV2aW91 cyB2ZXJzaW9uLCByZWFkbGluZS02LjEuCi0rCi0rMS4gIENoYW5nZXMgdG8gUmVhZGxpbmUKLSsK LSthLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgdGhlIHVuY29udmVydGVkIGZpbGVuYW1lIHRv IGJlIGFkZGVkIHRvIHRoZSBsaXN0IG9mCi0rICAgIGNvbXBsZXRpb25zIHdoZW4gdGhlIGFwcGxp Y2F0aW9uIHNwZWNpZmllZCBmaWxlbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucy4KLSsKLStiLiAg Rml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgdGhlIHdyb25nIGZpbGVuYW1lIHRvIGJlIHBhc3NlZCB0 byBvcGVuZGlyIHdoZW4gdGhlCi0rICAgIGFwcGxpY2F0aW9uIGhhcyBzcGVjaWZpZWQgYSBmaWxl bmFtZSBkZXF1b3RpbmcgZnVuY3Rpb24uCi0rCi0rYy4gIEZpeGVkIGEgYnVnIHdoZW4gcmVwZWF0 aW5nIGEgY2hhcmFjdGVyIHNlYXJjaCBpbiB2aSBtb2RlIGluIHRoZSBjYXNlIHdoZXJlCi0rICAg IHRoZXJlIHdhcyBubyBzZWFyY2ggdG8gcmVwZWF0LgotKwotK2QuICBXaGVuIHNob3ctYWxsLWlm LWFtYmlndW91cyBpcyBzZXQsIHRoZSBjb21wbGV0aW9uIHJvdXRpbmVzIG5vIGxvbmdlciBpbnNl cnQKLSsgICAgYSBjb21tb24gbWF0Y2ggcHJlZml4IHRoYXQgaXMgc2hvcnRlciB0aGFuIHRoZSB0 ZXh0IGJlaW5nIGNvbXBsZXRlZC4KLSsKLStlLiAgVGhlIGZ1bGwgc2V0IG9mIHZpIGVkaXRpbmcg Y29tbWFuZHMgbWF5IG5vdyBiZSB1c2VkIGluIGNhbGxiYWNrIG1vZGUuCi0rCi0rZi4gIEZpeGVk IGEgYnVnIHRoYXQgY2F1c2VkIHJlYWRsaW5lIHRvIG5vdCB1cGRhdGUgaXRzIGlkZWEgb2YgdGhl IHRlcm1pbmFsCi0rICAgIGRpbWVuc2lvbnMgd2hpbGUgcnVubmluZyBpbiBgbm8tZWNobycgbW9k ZS4KLSsKLStoLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgcmVhZGxpbmUgdG8gZHVtcCBjb3Jl IGlmIGFuIGFwcGxpY2F0aW9uIGNhbGxlZAotKyAgICBybF9wcmVwX3Rlcm1pbmFsIHdpdGhvdXQg c2V0dGluZyBybF9pbnN0cmVhbS4KLSsKLStpLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgbWV0 YS1wcmVmaXhlZCBjaGFyYWN0ZXJzIGJvdW5kIHRvIGluY3JlbWVudGFsCi0rICAgIHNlYXJjaCBm b3J3YXJkIG9yIGJhY2t3YXJkIHRvIG5vdCBiZSByZWNvZ25pemVkIGlmIHRoZXkgd2VyZSB0eXBl ZAotKyAgICBzdWJzZXF1ZW50bHkuCi0rCi0rai4gIFRoZSBpbmNyZW1lbnRhbCBzZWFyY2ggY29k ZSB0cmVhdHMga2V5IHNlcXVlbmNlcyB0aGF0IG1hcCB0byB0aGUgc2FtZQotKyAgICBmdW5jdGlv bnMgYXMgKGRlZmF1bHQpIF5HLCBeVywgYW5kIF5ZIGFzIGVxdWl2YWxlbnQgdG8gdGhvc2UgY2hh cmFjdGVycy4KLSsKLStrLiAgRml4ZWQgYSBidWcgaW4gbWVudS1jb21wbGV0ZSB0aGF0IGNhdXNl ZCBpdCB0byBtaXNiZWhhdmUgd2l0aCBsYXJnZQotKyAgICBuZWdhdGl2ZSBhcmd1bWVudC4KLSsK LStsLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgdmktbW9kZSB5YW5rLWxhc3QtYXJnIHRvIHJp bmcgdGhlIGJlbGwgd2hlbiBpbnZva2VkCi0rICAgIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUuCi0r Ci0rbS4gIEZpeGVkIGEgYnVnIHRoYXQgbWFkZSBhbiBleHBsaWNpdCBhcmd1bWVudCBvZiAwIHRv IHlhbmstbGFzdC1hcmcgYmVoYXZlCi0rICAgIGFzIGlmIGl0IHdlcmUgYSBuZWdhdGl2ZSBhcmd1 bWVudC4KLSsKLStuLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgZGlyZWN0b3J5IG5hbWVzIGlu IHdvcmRzIHRvIGJlIGNvbXBsZXRlZCB0byBub3QKLSsgICAgYmUgZGVxdW90ZWQgY29ycmVjdGx5 LgotKwotKzIuICBOZXcgRmVhdHVyZXMgaW4gUmVhZGxpbmUKLSsKLSthLiAgVGhlIGhpc3Rvcnkg bGlicmFyeSBkb2VzIG5vdCB0cnkgdG8gd3JpdGUgdGhlIGhpc3RvcnkgZmlsZW5hbWUgaW4gdGhl Ci0rICAgIGN1cnJlbnQgZGlyZWN0b3J5IGlmICRIT01FIGlzIHVuc2V0LiAgVGhpcyBjbG9zZXMg YSBwb3RlbnRpYWwgc2VjdXJpdHkKLSsgICAgcHJvYmxlbSBpZiB0aGUgYXBwbGljYXRpb24gZG9l cyBub3Qgc3BlY2lmeSBhIGhpc3RvcnkgZmlsZW5hbWUuCi0rCi0rYi4gIE5ldyBiaW5kYWJsZSB2 YXJpYWJsZSBgY29tcGxldGlvbi1kaXNwbGF5LXdpZHRoJyB0byBzZXQgdGhlIG51bWJlciBvZgot KyAgICBjb2x1bW5zIHVzZWQgd2hlbiBkaXNwbGF5aW5nIGNvbXBsZXRpb25zLgotKwotK2MuICBO ZXcgYmluZGFibGUgdmFyaWFibGUgYGNvbXBsZXRpb24tY2FzZS1tYXAnIHRvIGNhdXNlIGNhc2Ut aW5zZW5zaXRpdmUKLSsgICAgY29tcGxldGlvbiB0byB0cmVhdCBgLScgYW5kIGBfJyBhcyBpZGVu dGljYWwuCi0rCi0rZC4gIFRoZXJlIGFyZSBuZXcgYmluZGFibGUgdmktbW9kZSBjb21tYW5kIG5h bWVzIHRvIGF2b2lkIHJlYWRsaW5lJ3MgY2FzZS0KLSsgICAgaW5zZW5zaXRpdmUgbWF0Y2hpbmcg bm90IGFsbG93aW5nIHRoZW0gdG8gYmUgYm91bmQgc2VwYXJhdGVseS4KLSsKLStlLiAgTmV3IGJp bmRhYmxlIHZhcmlhYmxlIGBtZW51LWNvbXBsZXRlLWRpc3BsYXktcHJlZml4JyBjYXVzZXMgdGhl IG1lbnUKLSsgICAgY29tcGxldGlvbiBjb2RlIHRvIGRpc3BsYXkgdGhlIGNvbW1vbiBwcmVmaXgg b2YgdGhlIHBvc3NpYmxlIGNvbXBsZXRpb25zCi0rICAgIGJlZm9yZSBjeWNsaW5nIHRocm91Z2gg dGhlIGxpc3QsIGluc3RlYWQgb2YgYWZ0ZXIuCi0rCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot K1RoaXMgZG9jdW1lbnQgZGV0YWlscyB0aGUgY2hhbmdlcyBiZXR3ZWVuIHRoaXMgdmVyc2lvbiwg cmVhZGxpbmUtNi4xLAotK2FuZCB0aGUgcHJldmlvdXMgdmVyc2lvbiwgcmVhZGxpbmUtNi4wLgot KwotKzEuICBDaGFuZ2VzIHRvIFJlYWRsaW5lCi0rCi0rYS4gIFRoZSBTSUdXSU5DSCBzaWduYWwg aGFuZGxlciBub3cgYXZvaWRzIGNhbGxpbmcgdGhlIHJlZGlzcGxheSBjb2RlIGlmCi0rICAgIG9u ZSBhcnJpdmVzIHdoaWxlIGluIHRoZSBtaWRkbGUgb2YgcmVkaXNwbGF5LgotKwotK2IuICBDaGFu Z2VzIHRvIHRoZSB0aW1lb3V0IGNvZGUgdG8gbWFrZSBzdXJlIHRoYXQgdGltZW91dCB2YWx1ZXMg Z3JlYXRlcgotKyAgICB0aGFuIG9uZSBzZWNvbmQgYXJlIGhhbmRsZWQgYmV0dGVyLgotKwotK2Mu ICBGaXhlZCBhIGJ1ZyBpbiB0aGUgcmVkaXNwbGF5IGNvZGUgdGhhdCB3YXMgdHJpZ2dlcmVkIGJ5 IGEgcHJvbXB0Ci0rICAgIGNvbnRhaW5pbmcgaW52aXNpYmxlIGNoYXJhY3RlcnMgZXhhY3RseSB0 aGUgd2lkdGggb2YgdGhlIHNjcmVlbi4KLSsKLStkLiAgRml4ZWQgYSBidWcgaW4gdGhlIHJlZGlz cGxheSBjb2RlIGVuY291bnRlcmVkIHdoZW4gcnVubmluZyBpbiBob3Jpem9udGFsCi0rICAgIHNj cm9sbCBtb2RlLgotKwotK2UuICBGaXhlZCBhIGJ1ZyB0aGF0IHByZXZlbnRlZCBtZW51IGNvbXBs ZXRpb24gZnJvbSBwcm9wZXJseSBjb21wbGV0aW5nCi0rICAgIGZpbGVuYW1lcy4KLSsKLStmLiAg Rml4ZWQgYSByZWRpc3BsYXkgYnVnIGNhdXNlZCBieSBhIG11bHRpYnl0ZSBjaGFyYWN0ZXIgY2F1 c2luZyBhIGxpbmUgdG8KLSsgICAgd3JhcC4KLSsKLStnLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVz ZWQga2V5IHNlcXVlbmNlcyBvZiB0d28gY2hhcmFjdGVycyB0byBub3QgYmUKLSsgICAgcmVjb2du aXplZCB3aGVuIGEgbG9uZ2VyIHNlcXVlbmNlIGlkZW50aWNhbCBpbiB0aGUgZmlyc3QgdHdvIGNo YXJhY3RlcnMKLSsgICAgd2FzIGJvdW5kLgotKwotK2guICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNl ZCBoaXN0b3J5IGV4cGFuc2lvbiB0byBiZSBhdHRlbXB0ZWQgb24gJCcuLi4nCi0rICAgIHNpbmds ZS1xdW90ZWQgc3RyaW5ncy4KLSsKLStpLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgaW5jb3Jy ZWN0IHJlZGlzcGxheSB3aGVuIHRoZSBwcm9tcHQgY29udGFpbmVkCi0rICAgIG11bHRpYnl0ZSBj aGFyYWN0ZXJzIGluIGFuIGBpbnZpc2libGUnIHNlcXVlbmNlIGJyYWNrZXRlZCBieSBcWyBhbmQK LSsgICAgXF0uCi0rCi0rai4gIEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkIGhpc3RvcnkgZXhwYW5z aW9uIHRvIHNob3J0LWNpcmN1aXQgYWZ0ZXIKLSsgICAgZW5jb3VudGVyaW5nIGEgbXVsdGlieXRl IGNoYXJhY3Rlci4KLSsKLStrLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgYXBwbGljYXRpb25z IHVzaW5nIHRoZSBjYWxsYmFjayBpbnRlcmZhY2UgdG8gbm90Ci0rICAgIHJlYWN0IHRvIFNJR0lO VCAob3Igb3RoZXIgc2lnbmFscykgdW50aWwgYW5vdGhlciBjaGFyYWN0ZXIgYXJyaXZlZC4KLSsK LSsyLiAgTmV3IEZlYXR1cmVzIGluIFJlYWRsaW5lCi0rCi0rYS4gIE5ldyBiaW5kYWJsZSBmdW5j dGlvbjogbWVudS1jb21wbGV0ZS1iYWNrd2FyZC4KLSsKLStiLiAgSW4gdGhlIHZpIGluc2VydGlv biBrZXltYXAsIEMtbiBpcyBub3cgYm91bmQgdG8gbWVudS1jb21wbGV0ZSBieSBkZWZhdWx0LAot KyAgICBhbmQgQy1wIHRvIG1lbnUtY29tcGxldGUtYmFja3dhcmQuCi0rCi0rYy4gIFdoZW4gaW4g dmkgY29tbWFuZCBtb2RlLCByZXBlYXRlZGx5IGhpdHRpbmcgRVNDIG5vdyBkb2VzIG5vdGhpbmcs IGV2ZW4KLSsgICAgd2hlbiBFU0MgaW50cm9kdWNlcyBhIGJvdW5kIGtleSBzZXF1ZW5jZS4gIFRo aXMgaXMgY2xvc2VyIHRvIGhvdwotKyAgICBoaXN0b3JpY2FsIHZpIGJlaGF2ZXMuCi0rCi0rZC4g IE5ldyBiaW5kYWJsZSBmdW5jdGlvbjogc2tpcC1jc2ktc2VxdWVuY2UuICBDYW4gYmUgdXNlZCBh cyBhIGRlZmF1bHQgdG8KLSsgICAgY29uc3VtZSBrZXkgc2VxdWVuY2VzIGdlbmVyYXRlZCBieSBr ZXlzIGxpa2UgSG9tZSBhbmQgRW5kIHdpdGhvdXQgaGF2aW5nCi0rICAgIHRvIGJpbmQgYWxsIGtl eXMuCi0rCi0rZS4gIE5ldyBhcHBsaWNhdGlvbi1zZXR0YWJsZSBmdW5jdGlvbjogcmxfZmlsZW5h bWVfcmV3cml0ZV9ob29rLiAgQ2FuIGJlIHVzZWQKLSsgICAgdG8gcmV3aXRlIG9yIG1vZGlmeSBm aWxlbmFtZXMgcmVhZCBmcm9tIHRoZSBmaWxlIHN5c3RlbSBiZWZvcmUgdGhleSBhcmUKLSsgICAg Y29tcGFyZWQgdG8gdGhlIHdvcmQgdG8gYmUgY29tcGxldGVkLgotKwotK2YuICBOZXcgYmluZGFi bGUgdmFyaWFibGU6IHNraXAtY29tcGxldGVkLXRleHQsIGFjdGl2ZSB3aGVuIGNvbXBsZXRpbmcg aW4gdGhlCi0rICAgIG1pZGRsZSBvZiBhIHdvcmQuICBJZiBlbmFibGVkLCBpdCBtZWFucyB0aGF0 IGNoYXJhY3RlcnMgaW4gdGhlIGNvbXBsZXRpb24KLSsgICAgdGhhdCBtYXRjaCBjaGFyYWN0ZXJz IGluIHRoZSByZW1haW5kZXIgb2YgdGhlIHdvcmQgYXJlICJza2lwcGVkIiByYXRoZXIKLSsgICAg dGhhbiBpbnNlcnRlZCBpbnRvIHRoZSBsaW5lLgotKwotK2cuICBUaGUgcHJlLXJlYWRsaW5lLTYu MCB2ZXJzaW9uIG9mIG1lbnUgY29tcGxldGlvbiBpcyBhdmFpbGFibGUgYXMKLSsgICAgIm9sZC1t ZW51LWNvbXBsZXRlIiBmb3IgdXNlcnMgd2hvIGRvIG5vdCBsaWtlIHRoZSByZWFkbGluZS02LjAg dmVyc2lvbi4KLSsKLStoLiAgTmV3IGJpbmRhYmxlIHZhcmlhYmxlOiBlY2hvLWNvbnRyb2wtY2hh cmFjdGVycy4gIElmIGVuYWJsZWQsIGFuZCB0aGUKLSsgICAgdHR5IEVDSE9DVEwgYml0IGlzIHNl dCwgY29udHJvbHMgdGhlIGVjaG9pbmcgb2YgY2hhcmFjdGVycyBjb3JyZXNwb25kaW5nCi0rICAg IHRvIGtleWJvYXJkLWdlbmVyYXRlZCBzaWduYWxzLgotKwotK2kuICBOZXcgYmluZGFibGUgdmFy aWFibGU6IGVuYWJsZS1tZXRhLWtleS4gIENvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHJlYWRsaW5l Ci0rICAgIHNlbmRzIHRoZSBzbW0vcm1tIHNlcXVlbmNlcyBpZiB0aGUgdGVybWluYWwgaW5kaWNh dGVzIGl0IGhhcyBhIG1ldGEga2V5Ci0rICAgIHRoYXQgZW5hYmxlcyBlaWdodC1iaXQgY2hhcmFj dGVycy4KLSsKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rVGhpcyBkb2N1bWVudCBkZXRhaWxz IHRoZSBjaGFuZ2VzIGJldHdlZW4gdGhpcyB2ZXJzaW9uLCByZWFkbGluZS02LjAsCi0rYW5kIHRo ZSBwcmV2aW91cyB2ZXJzaW9uLCByZWFkbGluZS01LjIuCi0rCi0rMS4gIENoYW5nZXMgdG8gUmVh ZGxpbmUKLSsKLSthLiAgRml4ZWQgYSBudW1iZXIgb2YgcmVkaXNwbGF5IGVycm9ycyBpbiBlbnZp cm9ubWVudHMgc3VwcG9ydGluZyBtdWx0aWJ5dGUgCi0rICAgIGNoYXJhY3RlcnMuCi0rCi0rYi4g IEZpeGVkIGJ1Z3MgaW4gdmkgY29tbWFuZCBtb2RlIHRoYXQgY2F1c2VkIG1vdGlvbiBjb21tYW5k cyB0byBpbmFwcHJvcHJpYXRlbHkKLSsgICAgc2V0IHRoZSBtYXJrLgotKwotK2MuICBXaGVuIHVz aW5nIHRoZSBhcnJvdyBrZXlzIGluIHZpIGluc2VydGlvbiBtb2RlLCByZWFkbGluZSBhbGxvd3Mg bW92ZW1lbnQKLSsgICAgYmV5b25kIHRoZSBjdXJyZW50IGVuZCBvZiB0aGUgbGluZSAodW5saWtl IGNvbW1hbmQgbW9kZSkuCi0rCi0rZC4gIEZpeGVkIGJ1Z3MgdGhhdCBjYXVzZWQgcmVhZGxpbmUg dG8gbG9vcCB3aGVuIHRoZSB0ZXJtaW5hbCBoYXMgYmVlbiB0YWtlbgotKyAgICBhd2F5IGFuZCBy ZWFkcyByZXR1cm4gLTEvRUlPLgotKwotK2UuICBGaXhlZCBidWdzIGluIHJlZGlzcGxheSBvY2N1 cnJpbmcgd2hlbiBkaXNwbGF5aW5nIHByb21wdHMgY29udGFpbmluZwotKyAgICBpbnZpc2libGUg Y2hhcmFjdGVycy4KLSsKLStmLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgdGhlIGNvbXBsZXRp b24gYXBwZW5kIGNoYXJhY3RlciB0byBub3QgYmUgcmVzZXQgdG8KLSsgICAgdGhlIGRlZmF1bHQg YWZ0ZXIgYW4gYXBwbGljYXRpb24tc3BlY2lmaWVkIGNvbXBsZXRpb24gZnVuY3Rpb24gY2hhbmdl ZCBpdC4KLSsKLStnLiAgRml4ZWQgYSBwcm9ibGVtIHRoYXQgY2F1c2VkIGluY29ycmVjdCBwb3Np dGlvbmluZyBvZiB0aGUgY3Vyc29yIHdoaWxlIGluCi0rICAgIGVtYWNzIGVkaXRpbmcgbW9kZSB3 aGVuIG1vdmluZyBmb3J3YXJkIGF0IHRoZSBlbmQgb2YgYSBsaW5lIHdoaWxlIHVzaW5nCi0rICAg IGEgbG9jYWxlIHN1cHBvcnRpbmcgbXVsdGlieXRlIGNoYXJhY3RlcnMuCi0rCi0raC4gIEZpeGVk IGFuIG9mZi1ieS1vbmUgZXJyb3IgdGhhdCBjYXVzZWQgcmVhZGxpbmUgdG8gZHJvcCBldmVyeSA1 MTF0aAotKyAgICBjaGFyYWN0ZXIgb2YgYnVmZmVyZWQgaW5wdXQuCi0rCi0raS4gIEZpeGVkIGEg YnVnIHRoYXQgcmVzdWx0ZWQgaW4gU0lHVEVSTSBub3QgYmVpbmcgY2F1Z2h0IG9yIGNsZWFuZWQg dXAuCi0rCi0rai4gIEZpeGVkIHJlZGlzcGxheSBidWdzIGNhdXNlZCBieSBtdWx0aWxpbmUgcHJv bXB0cyB3aXRoIGludmlzaWJsZSBjaGFyYWN0ZXJzCi0rICAgIG9yIG5vIGNoYXJhY3RlcnMgZm9s bG93aW5nIHRoZSBmaW5hbCBuZXdsaW5lLgotKwotK2suICBGaXhlZCByZWRpc3BsYXkgYnVnIGNh dXNlZCBieSBwcm9tcHRzIGNvbnNpc3Rpbmcgc29sZWx5IG9mIGludmlzaWJsZQotKyAgICBjaGFy YWN0ZXJzLgotKwotK2wuICBGaXhlZCBhIGJ1ZyBpbiB0aGUgY29kZSB0aGF0IGJ1ZmZlcnMgY2hh cmFjdGVycyByZWNlaXZlZCB2ZXJ5IHF1aWNrbHkgaW4KLSsgICAgc3VjY2Vzc2lvbiB3aGljaCBj YXVzZWQgY2hhcmFjdGVycyB0byBiZSBkcm9wcGVkLgotKwotK20uICBGaXhlZCBhIGJ1ZyB0aGF0 IGNhdXNlZCByZWFkbGluZSB0byByZWZlcmVuY2UgdW5pbml0aWFsaXplZCBkYXRhIHN0cnVjdHVy ZXMKLSsgICAgaWYgaXQgcmVjZWl2ZWQgYSBTSUdXSU5DSCBiZWZvcmUgY29tcGxldGluZyBpbml0 aWFsemF0aW9uLgotKwotK24uICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZCB0aGUgdmktbW9kZSBg bGFzdCBjb21tYW5kJyB0byBiZSBzZXQgaW5jb3JyZWN0bHkKLSsgICAgYW5kIHRoZXJlZm9yZSB1 bnJlcGVhdGFibGUuCi0rCi0rby4gIEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkIHJlYWRsaW5lIHRv IGRpc2FibGUgZWNob2luZyB3aGVuIGl0IHdhcyBiZWluZyB1c2VkCi0rICAgIHdpdGggYW4gb3V0 cHV0IGZpbGUgZGVzY3JpcHRvciB0aGF0IHdhcyBub3QgYSB0ZXJtaW5hbC4KLSsKLStwLiAgUmVh ZGxpbmUgbm93IGJsb2NrcyBTSUdJTlQgd2hpbGUgbWFuaXB1bGF0aW5nIGludGVybmFsIGRhdGEg c3RydWN0dXJlcwotKyAgICBkdXJpbmcgcmVkaXNwbGF5LgotKwotK3EuICBGaXhlZCBhIGJ1ZyBp biByZWRpc3BsYXkgdGhhdCBjYXVzZWQgcmVhZGxpbmUgdG8gc2VnZmF1bHQgd2hlbiBwYXN0aW5n IGEKLSsgICAgdmVyeSBsb25nIGxpbmUgKG92ZXIgMTMwLDAwMCBjaGFyYWN0ZXJzKS4KLSsKLSty LiAgRml4ZWQgYnVncyBpbiByZWRpc3BsYXkgd2hlbiB1c2luZyBwcm9tcHRzIHdpdGggbm8gdmlz aWJsZSBwcmludGluZwotKyAgICBjaGFyYWN0ZXJzLgotKwotK3MuICBGaXhlZCBhIGJ1ZyB0aGF0 IGNhdXNlZCByZWRpc3BsYXkgZXJyb3JzIHdoZW4gdXNpbmcgcHJvbXB0cyB3aXRoIGludmlzaWJs ZQotKyAgICBjaGFyYWN0ZXJzIGFuZCBudW1lcmljIGFyZ3VtZW50cyB0byBhIGNvbW1hbmQgaW4g YSBtdWx0aWJ5dGUgbG9jYWxlLgotKwotK3QuICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZCByZWRp c3BsYXkgZXJyb3JzIHdoZW4gdXNpbmcgcHJvbXB0cyB3aXRoIGludmlzaWJsZQotKyAgICBjaGFy YWN0ZXJzIHNwYW5uaW5nIG1vcmUgdGhhbiB0d28gcGh5c2ljYWwgc2NyZWVuIGxpbmVzLgotKwot KzIuICBOZXcgRmVhdHVyZXMgaW4gUmVhZGxpbmUKLSsKLSthLiAgQSBuZXcgdmFyaWFibGUsIHJs X3NvcnRfY29tcGxldGlvbl9tYXRjaGVzOyBhbGxvd3MgYXBwbGljYXRpb25zIHRvIGluaGliaXQK LSsgICAgbWF0Y2ggbGlzdCBzb3J0aW5nIChidXQgYmV3YXJlOiBzb21lIHRoaW5ncyBkb24ndCB3 b3JrIHJpZ2h0IGlmCi0rICAgIGFwcGxpY2F0aW9ucyBkbyB0aGlzKS4KLSsKLStiLiAgQSBuZXcg dmFyaWFibGUsIHJsX2NvbXBsZXRpb25faW52b2tpbmdfa2V5OyBhbGxvd3MgYXBwbGljYXRpb25z IHRvIGRpc2NvdmVyCi0rICAgIHRoZSBrZXkgdGhhdCBpbnZva2VkIHJsX2NvbXBsZXRlIG9yIHJs X21lbnVfY29tcGxldGUuCi0rCi0rYy4gIFRoZSBmdW5jdGlvbnMgcmxfYmxvY2tfc2lnaW50IGFu ZCBybF9yZWxlYXNlX3NpZ2ludCBhcmUgbm93IHB1YmxpYyBhbmQKLSsgICAgYXZhaWxhYmxlIHRv IGNhbGxpbmcgYXBwbGljYXRpb25zIHdobyB3YW50IHRvIHByb3RlY3QgY3JpdGljYWwgc2VjdGlv bnMKLSsgICAgKGxpa2UgcmVkaXNwbGF5KS4KLSsKLStkLiAgVGhlIGZ1bmN0aW9ucyBybF9zYXZl X3N0YXRlIGFuZCBybF9yZXN0b3JlX3N0YXRlIGFyZSBub3cgcHVibGljIGFuZAotKyAgICBhdmFp bGFibGUgdG8gY2FsbGluZyBhcHBsaWNhdGlvbnM7IGRvY3VtZW50ZWQgcmVzdCBvZiByZWFkbGlu ZSdzIHN0YXRlCi0rICAgIGZsYWcgdmFsdWVzLgotKwotK2UuICBBIG5ldyB1c2VyLXNldHRhYmxl IHZhcmlhYmxlLCBgaGlzdG9yeS1zaXplJywgYWxsb3dzIHNldHRpbmcgdGhlIG1heGltdW0KLSsg ICAgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGhpc3RvcnkgbGlzdC4KLSsKLStmLiAgVGhlcmUg aXMgYSBuZXcgaW1wbGVtZW50YXRpb24gb2YgbWVudSBjb21wbGV0aW9uLCB3aXRoIHNldmVyYWwg aW1wcm92ZW1lbnRzCi0rICAgIG92ZXIgdGhlIG9sZDsgdGhlIG1vc3Qgbm90YWJsZSBpbXByb3Zl bWVudCBpcyBhIGJldHRlciBgY29tcGxldGlvbnMKLSsgICAgYnJvd3NpbmcnIG1vZGUuCi0rCi0r Zy4gIFRoZSBtZW51IGNvbXBsZXRpb24gY29kZSBub3cgdXNlcyB0aGUgcmxfbWVudV9jb21wbGV0 aW9uX2VudHJ5X2Z1bmN0aW9uCi0rICAgIHZhcmlhYmxlLCBhbGxvd2luZyBhcHBsaWNhdGlvbnMg dG8gcHJvdmlkZSB0aGVpciBvd24gbWVudSBjb21wbGV0aW9uCi0rICAgIGdlbmVyYXRvcnMuCi0r Ci0raC4gIFRoZXJlIGlzIHN1cHBvcnQgZm9yIHJlcGxhY2luZyBhIHByZWZpeCAgb2YgYSBwYXRo bmFtZSB3aXRoIGEgYC4uLicgd2hlbgotKyAgICBkaXNwbGF5aW5nIHBvc3NpYmxlIGNvbXBsZXRp b25zLiAgVGhpcyBpcyBjb250cm9sbGFibGUgYnkgc2V0dGluZyB0aGUKLSsgICAgYGNvbXBsZXRp b24tcHJlZml4LWRpc3BsYXktbGVuZ3RoJyB2YXJpYWJsZS4gIE1hdGNoZXMgd2l0aCBhIGNvbW1v biBwcmVmaXgKLSsgICAgbG9uZ2VyIHRoYW4gdGhpcyB2YWx1ZSBoYXZlIHRoZSBjb21tb24gcHJl Zml4IHJlcGxhY2VkIHdpdGggYC4uLicuCi0rCi0raS4gIFRoZXJlIGlzIGEgbmV3IGByZXZlcnQt YWxsLWF0LW5ld2xpbmUnIHZhcmlhYmxlLiAgSWYgZW5hYmxlZCwgcmVhZGxpbmUgd2lsbAotKyAg ICB1bmRvIGFsbCBvdXRzdGFuZGluZyBjaGFuZ2VzIHRvIGFsbCBoaXN0b3J5IGxpbmVzIHdoZW4g YGFjY2VwdC1saW5lJyBpcwotKyAgICBleGVjdXRlZC4KLSsKLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCi0rVGhpcyBkb2N1bWVudCBkZXRhaWxzIHRoZSBjaGFuZ2VzIGJldHdlZW4gdGhpcyB2ZXJz aW9uLCByZWFkbGluZS01LjIsCi0rYW5kIHRoZSBwcmV2aW91cyB2ZXJzaW9uLCByZWFkbGluZS01 LjEuCi0rCi0rMS4gIENoYW5nZXMgdG8gUmVhZGxpbmUKLSsKLSthLiAgRml4ZWQgYSBwcm9ibGVt IHRoYXQgY2F1c2VkIHNlZ21lbnRhdGlvbiBmYXVsdHMgd2hlbiB1c2luZyByZWFkbGluZSBpbgot KyAgICBjYWxsYmFjayBtb2RlIGFuZCB0eXBpbmcgY29uc2VjdXRpdmUgREVMIGNoYXJhY3RlcnMg b24gYW4gZW1wdHkgbGluZS4KLSsKLStiLiAgRml4ZWQgc2V2ZXJhbCByZWRpc3BsYXkgcHJvYmxl bXMgd2l0aCBtdWx0aWJ5dGUgY2hhcmFjdGVycywgYWxsIGhhdmluZyB0bwotKyAgICBkbyB3aXRo IHRoZSBkaWZmZXJlbnQgY29kZSBwYXRocyBhbmQgdmFyaWFibGUgbWVhbmluZ3MgYmV0d2VlbiBz aW5nbGUtYnl0ZQotKyAgICBhbmQgbXVsdGlieXRlIGNoYXJhY3RlciByZWRpc3BsYXkuCi0rCi0r Yy4gIEZpeGVkIGEgcHJvYmxlbSB3aXRoIGtleSBzZXF1ZW5jZSB0cmFuc2xhdGlvbiB3aGVuIHBy ZXNlbnRlZCB3aXRoIHRoZQotKyAgICBzZXF1ZW5jZSBcTS1cQy14LgotKwotK2QuICBGaXhlZCBh IHByb2JsZW0gdGhhdCBwcmV2ZW50ZWQgdGhlIGBhJyBjb21tYW5kIGluIHZpIG1vZGUgZnJvbSBi ZWluZwotKyAgICB1bmRvbmUgYW5kIHJlZG9uZSBwcm9wZXJseS4KLSsKLStlLiAgRml4ZWQgYSBw cm9ibGVtIHRoYXQgcHJldmVudGVkIGVtcHR5IGluc2VydHMgaW4gdmkgbW9kZSBmcm9tIGJlaW5n IHVuZG9uZQotKyAgICBwcm9wZXJseS4KLSsKLStmLiAgRml4ZWQgYSBwcm9ibGVtIHRoYXQgY2F1 c2VkIHJlYWRsaW5lIHRvIGluaXRpYWxpemUgd2l0aCBhbiBpbmNvcnJlY3QgaWRlYQotKyAgICBv ZiB3aGV0aGVyIG9yIG5vdCB0aGUgdGVybWluYWwgY2FuIGF1dG93cmFwLgotKwotK2cuICBGaXhl ZCBvdXRwdXQgb2Yga2V5IGJpbmRpbmdzIChsaWtlIGJhc2ggYGJpbmQgLXAnKSB0byBob25vciB0 aGUgc2V0dGluZyBvZgotKyAgICBjb252ZXJ0LW1ldGEgYW5kIHVzZSBcZSB3aGVyZSBhcHByb3By aWF0ZS4KLSsKLStoLiAgQ2hhbmdlZCB0aGUgZGVmYXVsdCBmaWxlbmFtZSBjb21wbGV0aW9uIGZ1 bmN0aW9uIHRvIGNhbGwgdGhlIGZpbGVuYW1lCi0rICAgIGRlcXVvdGluZyBmdW5jdGlvbiBpZiB0 aGUgZGlyZWN0b3J5IGNvbXBsZXRpb24gaG9vayBpc24ndCBzZXQuICBUaGlzIG1lYW5zCi0rICAg IHRoYXQgYW55IGRpcmVjdG9yeSBjb21wbGV0aW9uIGhvb2tzIG5lZWQgdG8gZGVxdW90ZSB0aGUg ZGlyZWN0b3J5IG5hbWUsCi0rICAgIHNpbmNlIGFwcGxpY2F0aW9uLXNwZWNpZmljIGhvb2tzIG5l ZWQgdG8ga25vdyBob3cgdGhlIHdvcmQgd2FzIHF1b3RlZCwKLSsgICAgZXZlbiBpZiBubyBvdGhl ciBjaGFuZ2VzIGFyZSBtYWRlLgotKwotK2kuICBGaXhlZCBhIGJ1ZyB3aXRoIGNyZWF0aW5nIHRo ZSBwcm9tcHQgZm9yIGEgbm9uLWludGVyYWN0aXZlIHNlYXJjaCBzdHJpbmcKLSsgICAgd2hlbiB0 aGVyZSBhcmUgbm9uLXByaW50aW5nIGNoYXJhY3RlcnMgaW4gdGhlIHByaW1hcnkgcHJvbXB0Lgot KwotK2ouICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZCBwcm9tcHRzIHdpdGggaW52aXNpYmxlIGNo YXJhY3RlcnMgdG8gYmUgcmVkcmF3bgotKyAgICBtdWx0aXBsZSB0aW1lcyBpbiBhIG11bHRpYnl0 ZSBsb2NhbGUuCi0rCi0ray4gIEZpeGVkIGEgYnVnIHRoYXQgY291bGQgY2F1c2UgdGhlIGtleSBz ZXF1ZW5jZSBzY2FubmluZyBjb2RlIHRvIHJldHVybiB0aGUKLSsgICAgd3JvbmcgZnVuY3Rpb24u Ci0rCi0rbC4gIEZpeGVkIGEgcHJvYmxlbSB3aXRoIHRoZSBjYWxsYmFjayBpbnRlcmZhY2UgdGhh dCBjYXVzZWQgaXQgdG8gZmFpbCB3aGVuCi0rICAgIHVzaW5nIG11bHRpLWNoYXJhY3RlciBrZXli b2FyZCBtYWNyb3MuCi0rCi0rbS4gIEZpeGVkIGEgYnVnIHRoYXQgY291bGQgY2F1c2UgYSBjb3Jl IGR1bXAgd2hlbiBhbiBlZGl0ZWQgaGlzdG9yeSBlbnRyeSB3YXMKLSsgICAgcmUtZXhlY3V0ZWQg dW5kZXIgY2VydGFpbiBjb25kaXRpb25zLgotKwotK24uICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNl ZCByZWFkbGluZSB0byByZWZlcmVuY2UgZnJlZWQgbWVtb3J5IHdoZW4gYXR0bXB0aW5nCi0rICAg IHRvIGRpc3BsYXkgYSBwb3J0aW9uIG9mIHRoZSBwcm9tcHQuCi0rCi0rby4gIEZpeGVkIGEgYnVn IHdpdGggcHJvbXB0IHJlZGlzcGxheSBpbiBhIG11bHRpLWJ5dGUgbG9jYWxlIHRvIGF2b2lkIHJl ZHJhd2luZwotKyAgICB0aGUgcHJvbXB0IGFuZCBpbnB1dCBsaW5lIG11bHRpcGxlIHRpbWVzLgot KwotK3AuICBGaXhlZCBoaXN0b3J5IGV4cGFuc2lvbiB0byBub3QgYmUgY29uZnVzZWQgYnkgaGVy ZS1zdHJpbmcgcmVkaXJlY3Rpb24uCi0rCi0rcS4gIFJlYWRsaW5lIG5vIGxvbmdlciB0cmVhdHMg cmVhZCBlcnJvcnMgYnkgY29udmVydGluZyB0aGVtIHRvIG5ld2xpbmVzLCBhcwotKyAgICBpdCBk b2VzIHdpdGggRU9GLiAgVGhpcyBjYXVzZWQgcGFydGlhbCBsaW5lcyB0byBiZSByZXR1cm5lZCBm cm9tIHJlYWRsaW5lKCkuCi0rCi0rci4gIEZpeGVkIGEgcmVkaXNwbGF5IGJ1ZyB0aGF0IG9jY3Vy cmVkIGluIG11bHRpYnl0ZS1jYXBhYmxlIGxvY2FsZXMgd2hlbiB0aGUKLSsgICAgcHJvbXB0IHdh cyBvbmUgY2hhcmFjdGVyIGxvbmdlciB0aGFuIHRoZSBzY3JlZW4gd2lkdGguCi0rCi0rMi4gIE5l dyBGZWF0dXJlcyBpbiBSZWFkbGluZQotKwotK2EuICBDYWxsaW5nIGFwcGxpY2F0aW9ucyBjYW4g bm93IHNldCB0aGUga2V5Ym9hcmQgdGltZW91dCB0byAwLCBhbGxvd2luZwotKyAgICBwb2xsLWxp a2UgYmVoYXZpb3IuCi0rCi0rYi4gIFRoZSB2YWx1ZSBvZiBTWVNfSU5QVVRSQyAoY29uZmlndXJh YmxlIGF0IGNvbXBpbGF0aW9uIHRpbWUpIGlzIG5vdyB1c2VkIGFzCi0rICAgIHRoZSBkZWZhdWx0 IGxhc3QtZGl0Y2ggc3RhcnR1cCBmaWxlLgotKwotK2MuICBUaGUgaGlzdG9yeSBmaWxlIHJlYWRp bmcgZnVuY3Rpb25zIG5vdyBhbGxvdyB3aW5kb3dzLWxpa2UgXHJcbiBsaW5lCi0rICAgIHRlcm1p bmF0b3JzLgotKwotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBUaGlzIGRvY3VtZW50IGRldGFp bHMgdGhlIGNoYW5nZXMgYmV0d2VlbiB0aGlzIHZlcnNpb24sIHJlYWRsaW5lLTUuMSwKLSBhbmQg dGhlIHByZXZpb3VzIHZlcnNpb24sIHJlYWRsaW5lLTUuMC4KLSAKLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL3JlYWRsaW5lL0NPUFlJTkcKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIw MTEwNzAzLm9yaWcvcmVhZGxpbmUvQ09QWUlORwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvQ09QWUlORwkyMDExLTA3 LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjg1ICsxLDYyNiBAQAotLQkJICAg IEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCi0tCQkgICAgICAgVmVyc2lvbiAyLCBKdW5lIDE5 OTEKLSsgICAgICAgICAgICAgICAgICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCi0rICAg ICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNwotIAotLSBDb3B5cmln aHQgKEMpIDE5ODksIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMSBVU0EKLSsgQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPgotICBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29w eSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKLSAgb2YgdGhpcyBsaWNlbnNlIGRvY3Vt ZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCi0gCi0tCQkJICAgIFByZWFtYmxl Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWFtYmxlCi0gCi0tICBUaGUgbGljZW5z ZXMgZm9yIG1vc3Qgc29mdHdhcmUgYXJlIGRlc2lnbmVkIHRvIHRha2UgYXdheSB5b3VyCi0tZnJl ZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGl0LiAgQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMKLS1MaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20g dG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlCi0tc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29m dHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFRoaXMKLS1HZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFwcGxpZXMgdG8gbW9zdCBvZiB0aGUgRnJlZSBTb2Z0d2FyZQotLUZvdW5kYXRpb24n cyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQg dG8KLS11c2luZyBpdC4gIChTb21lIG90aGVyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBzb2Z0 d2FyZSBpcyBjb3ZlcmVkIGJ5Ci0tdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu c2UgaW5zdGVhZC4pICBZb3UgY2FuIGFwcGx5IGl0IHRvCi0rICBUaGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcgotK3NvZnR3YXJlIGFu ZCBvdGhlciBraW5kcyBvZiB3b3Jrcy4KLSsKLSsgIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0 d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZAotK3RvIHRha2UgYXdh eSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSB0aGUgd29ya3MuICBCeSBjb250cmFz dCwKLSt0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZ3VhcmFu dGVlIHlvdXIgZnJlZWRvbSB0bwotK3NoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEg cHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQotK3NvZnR3YXJlIGZvciBhbGwg aXRzIHVzZXJzLiAgV2UsIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHVzZSB0aGUKLStH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9zdCBvZiBvdXIgc29mdHdhcmU7IGl0IGFw cGxpZXMgYWxzbyB0bwotK2FueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBh dXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bwotIHlvdXIgcHJvZ3JhbXMsIHRvby4KLSAKLSAg IFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVl ZG9tLCBub3QKLSBwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWdu ZWQgdG8gbWFrZSBzdXJlIHRoYXQgeW91Ci0gaGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRl IGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgotLXRoaXMgc2VydmljZSBp ZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAot LWlmIHlvdSB3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2Ug cGllY2VzIG9mIGl0Ci0taW4gbmV3IGZyZWUgcHJvZ3JhbXM7IGFuZCB0aGF0IHlvdSBrbm93IHlv dSBjYW4gZG8gdGhlc2UgdGhpbmdzLgotLQotLSAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2Ug bmVlZCB0byBtYWtlIHJlc3RyaWN0aW9ucyB0aGF0IGZvcmJpZAotLWFueW9uZSB0byBkZW55IHlv dSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4KLS1U aGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBm b3IgeW91IGlmIHlvdQotLWRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZSBzb2Z0d2FyZSwgb3IgaWYg eW91IG1vZGlmeSBpdC4KLSt0aGVtIGlmIHlvdSB3aXNoKSwgdGhhdCB5b3UgcmVjZWl2ZSBzb3Vy Y2UgY29kZSBvciBjYW4gZ2V0IGl0IGlmIHlvdQotK3dhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFu Z2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQgaW4gbmV3Ci0rZnJlZSBwcm9ncmFt cywgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCi0rCi0rICBUbyBw cm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIHByZXZlbnQgb3RoZXJzIGZyb20gZGVueWlu ZyB5b3UKLSt0aGVzZSByaWdodHMgb3IgYXNraW5nIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0 cy4gIFRoZXJlZm9yZSwgeW91IGhhdmUKLStjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgaWYgeW91 IGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZSBzb2Z0d2FyZSwgb3IgaWYKLSt5b3UgbW9kaWZ5IGl0 OiByZXNwb25zaWJpbGl0aWVzIHRvIHJlc3BlY3QgdGhlIGZyZWVkb20gb2Ygb3RoZXJzLgotIAot ICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiBzdWNoIGEgcHJvZ3Jh bSwgd2hldGhlcgotLWdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lw aWVudHMgYWxsIHRoZSByaWdodHMgdGhhdAotLXlvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJl IHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCi0tc291cmNlIGNvZGUuICBB bmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkga25vdyB0aGVpcgotLXJp Z2h0cy4KLS0KLS0gIFdlIHByb3RlY3QgeW91ciByaWdodHMgd2l0aCB0d28gc3RlcHM6ICgxKSBj b3B5cmlnaHQgdGhlIHNvZnR3YXJlLCBhbmQKLS0oMikgb2ZmZXIgeW91IHRoaXMgbGljZW5zZSB3 aGljaCBnaXZlcyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LAotLWRpc3RyaWJ1dGUgYW5k L29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCi0tCi0tICBBbHNvLCBmb3IgZWFjaCBhdXRob3IncyBw cm90ZWN0aW9uIGFuZCBvdXJzLCB3ZSB3YW50IHRvIG1ha2UgY2VydGFpbgotLXRoYXQgZXZlcnlv bmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCi0t c29mdHdhcmUuICBJZiB0aGUgc29mdHdhcmUgaXMgbW9kaWZpZWQgYnkgc29tZW9uZSBlbHNlIGFu ZCBwYXNzZWQgb24sIHdlCi0td2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0 aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbCwgc28KLS10aGF0IGFueSBwcm9ibGVtcyBpbnRy b2R1Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAotLWF1dGhv cnMnIHJlcHV0YXRpb25zLgotLQotLSAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJl YXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKLS1wYXRlbnRzLiAgV2Ugd2lzaCB0byBhdm9p ZCB0aGUgZGFuZ2VyIHRoYXQgcmVkaXN0cmlidXRvcnMgb2YgYSBmcmVlCi0tcHJvZ3JhbSB3aWxs IGluZGl2aWR1YWxseSBvYnRhaW4gcGF0ZW50IGxpY2Vuc2VzLCBpbiBlZmZlY3QgbWFraW5nIHRo ZQotLXByb2dyYW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBp dCBjbGVhciB0aGF0IGFueQotLXBhdGVudCBtdXN0IGJlIGxpY2Vuc2VkIGZvciBldmVyeW9uZSdz IGZyZWUgdXNlIG9yIG5vdCBsaWNlbnNlZCBhdCBhbGwuCi0rZ3JhdGlzIG9yIGZvciBhIGZlZSwg eW91IG11c3QgcGFzcyBvbiB0byB0aGUgcmVjaXBpZW50cyB0aGUgc2FtZQotK2ZyZWVkb21zIHRo YXQgeW91IHJlY2VpdmVkLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNl aXZlCi0rb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVt IHRoZXNlIHRlcm1zIHNvIHRoZXkKLStrbm93IHRoZWlyIHJpZ2h0cy4KLSsKLSsgIERldmVsb3Bl cnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVw czoKLSsoMSkgYXNzZXJ0IGNvcHlyaWdodCBvbiB0aGUgc29mdHdhcmUsIGFuZCAoMikgb2ZmZXIg eW91IHRoaXMgTGljZW5zZQotK2dpdmluZyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LCBk aXN0cmlidXRlIGFuZC9vciBtb2RpZnkgaXQuCi0rCi0rICBGb3IgdGhlIGRldmVsb3BlcnMnIGFu ZCBhdXRob3JzJyBwcm90ZWN0aW9uLCB0aGUgR1BMIGNsZWFybHkgZXhwbGFpbnMKLSt0aGF0IHRo ZXJlIGlzIG5vIHdhcnJhbnR5IGZvciB0aGlzIGZyZWUgc29mdHdhcmUuICBGb3IgYm90aCB1c2Vy cycgYW5kCi0rYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZl cnNpb25zIGJlIG1hcmtlZCBhcwotK2NoYW5nZWQsIHNvIHRoYXQgdGhlaXIgcHJvYmxlbXMgd2ls bCBub3QgYmUgYXR0cmlidXRlZCBlcnJvbmVvdXNseSB0bwotK2F1dGhvcnMgb2YgcHJldmlvdXMg dmVyc2lvbnMuCi0rCi0rICBTb21lIGRldmljZXMgYXJlIGRlc2lnbmVkIHRvIGRlbnkgdXNlcnMg YWNjZXNzIHRvIGluc3RhbGwgb3IgcnVuCi0rbW9kaWZpZWQgdmVyc2lvbnMgb2YgdGhlIHNvZnR3 YXJlIGluc2lkZSB0aGVtLCBhbHRob3VnaCB0aGUgbWFudWZhY3R1cmVyCi0rY2FuIGRvIHNvLiAg VGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YKLStwcm90 ZWN0aW5nIHVzZXJzJyBmcmVlZG9tIHRvIGNoYW5nZSB0aGUgc29mdHdhcmUuICBUaGUgc3lzdGVt YXRpYwotK3BhdHRlcm4gb2Ygc3VjaCBhYnVzZSBvY2N1cnMgaW4gdGhlIGFyZWEgb2YgcHJvZHVj dHMgZm9yIGluZGl2aWR1YWxzIHRvCi0rdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQg aXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlCi0raGF2ZSBkZXNpZ25lZCB0aGlz IHZlcnNpb24gb2YgdGhlIEdQTCB0byBwcm9oaWJpdCB0aGUgcHJhY3RpY2UgZm9yIHRob3NlCi0r cHJvZHVjdHMuICBJZiBzdWNoIHByb2JsZW1zIGFyaXNlIHN1YnN0YW50aWFsbHkgaW4gb3RoZXIg ZG9tYWlucywgd2UKLStzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhv c2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMKLStvZiB0aGUgR1BMLCBhcyBuZWVkZWQgdG8g cHJvdGVjdCB0aGUgZnJlZWRvbSBvZiB1c2Vycy4KLSsKLSsgIEZpbmFsbHksIGV2ZXJ5IHByb2dy YW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuCi0rU3RhdGVz IHNob3VsZCBub3QgYWxsb3cgcGF0ZW50cyB0byByZXN0cmljdCBkZXZlbG9wbWVudCBhbmQgdXNl IG9mCi0rc29mdHdhcmUgb24gZ2VuZXJhbC1wdXJwb3NlIGNvbXB1dGVycywgYnV0IGluIHRob3Nl IHRoYXQgZG8sIHdlIHdpc2ggdG8KLSthdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRl bnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQKLSttYWtlIGl0IGVmZmVjdGl2ZWx5 IHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB0aGUgR1BMIGFzc3VyZXMgdGhhdAotK3Bh dGVudHMgY2Fubm90IGJlIHVzZWQgdG8gcmVuZGVyIHRoZSBwcm9ncmFtIG5vbi1mcmVlLgotIAot ICAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1 dGlvbiBhbmQKLSBtb2RpZmljYXRpb24gZm9sbG93LgotLQwKLS0JCSAgICBHTlUgR0VORVJBTCBQ VUJMSUMgTElDRU5TRQotLSAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBDT1BZSU5HLCBESVNU UklCVVRJT04gQU5EIE1PRElGSUNBVElPTgotLQotLSAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMg dG8gYW55IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucwotLWEgbm90aWNlIHBs YWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBzYXlpbmcgaXQgbWF5IGJlIGRpc3RyaWJ1dGVk Ci0tdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoZSAi UHJvZ3JhbSIsIGJlbG93LAotLXJlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFu ZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIgotLW1lYW5zIGVpdGhlciB0aGUgUHJvZ3Jh bSBvciBhbnkgZGVyaXZhdGl2ZSB3b3JrIHVuZGVyIGNvcHlyaWdodCBsYXc6Ci0tdGhhdCBpcyB0 byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBQcm9ncmFtIG9yIGEgcG9ydGlvbiBvZiBpdCwK LS1laXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVk IGludG8gYW5vdGhlcgotLWxhbmd1YWdlLiAgKEhlcmVpbmFmdGVyLCB0cmFuc2xhdGlvbiBpcyBp bmNsdWRlZCB3aXRob3V0IGxpbWl0YXRpb24gaW4KLS10aGUgdGVybSAibW9kaWZpY2F0aW9uIi4p ICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4KLS0KLS1BY3Rpdml0aWVzIG90 aGVyIHRoYW4gY29weWluZywgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24gYXJlIG5vdAot LWNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRo ZSBhY3Qgb2YKLS1ydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhl IG91dHB1dCBmcm9tIHRoZSBQcm9ncmFtCi0taXMgY292ZXJlZCBvbmx5IGlmIGl0cyBjb250ZW50 cyBjb25zdGl0dXRlIGEgd29yayBiYXNlZCBvbiB0aGUKLS1Qcm9ncmFtIChpbmRlcGVuZGVudCBv ZiBoYXZpbmcgYmVlbiBtYWRlIGJ5IHJ1bm5pbmcgdGhlIFByb2dyYW0pLgotLVdoZXRoZXIgdGhh dCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLgotLQotLSAgMS4gWW91 IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdz Ci0tc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVk IHRoYXQgeW91Ci0tY29uc3BpY3VvdXNseSBhbmQgYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVh Y2ggY29weSBhbiBhcHByb3ByaWF0ZQotLWNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIg b2Ygd2FycmFudHk7IGtlZXAgaW50YWN0IGFsbCB0aGUKLS1ub3RpY2VzIHRoYXQgcmVmZXIgdG8g dGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7Ci0tYW5kIGdp dmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFByb2dyYW0gYSBjb3B5IG9mIHRoaXMgTGlj ZW5zZQotLWFsb25nIHdpdGggdGhlIFByb2dyYW0uCi0tCi0tWW91IG1heSBjaGFyZ2UgYSBmZWUg Zm9yIHRoZSBwaHlzaWNhbCBhY3Qgb2YgdHJhbnNmZXJyaW5nIGEgY29weSwgYW5kCi0teW91IG1h eSBhdCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZv ciBhIGZlZS4KLS0KLS0gIDIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2Yg dGhlIFByb2dyYW0gb3IgYW55IHBvcnRpb24KLS1vZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBi YXNlZCBvbiB0aGUgUHJvZ3JhbSwgYW5kIGNvcHkgYW5kCi0tZGlzdHJpYnV0ZSBzdWNoIG1vZGlm aWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCi0tYWJvdmUsIHBy b3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKLS0KLS0g ICAgYSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVu dCBub3RpY2VzCi0tICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRo ZSBkYXRlIG9mIGFueSBjaGFuZ2UuCi0tCi0tICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3Jr IHRoYXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgotLSAgICB3aG9sZSBvciBp biBwYXJ0IGNvbnRhaW5zIG9yIGlzIGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSBvciBhbnkKLS0g ICAgcGFydCB0aGVyZW9mLCB0byBiZSBsaWNlbnNlZCBhcyBhIHdob2xlIGF0IG5vIGNoYXJnZSB0 byBhbGwgdGhpcmQKLS0gICAgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNl LgotLQotLSAgICBjKSBJZiB0aGUgbW9kaWZpZWQgcHJvZ3JhbSBub3JtYWxseSByZWFkcyBjb21t YW5kcyBpbnRlcmFjdGl2ZWx5Ci0tICAgIHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hl biBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKLS0gICAgaW50ZXJhY3RpdmUgdXNlIGluIHRoZSBt b3N0IG9yZGluYXJ5IHdheSwgdG8gcHJpbnQgb3IgZGlzcGxheSBhbgotLSAgICBhbm5vdW5jZW1l bnQgaW5jbHVkaW5nIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGEKLS0gICAg bm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlv dSBwcm92aWRlCi0tICAgIGEgd2FycmFudHkpIGFuZCB0aGF0IHVzZXJzIG1heSByZWRpc3RyaWJ1 dGUgdGhlIHByb2dyYW0gdW5kZXIKLS0gICAgdGhlc2UgY29uZGl0aW9ucywgYW5kIHRlbGxpbmcg dGhlIHVzZXIgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMKLS0gICAgTGljZW5zZS4gIChFeGNl cHRpb246IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKLS0gICAgZG9l cyBub3Qgbm9ybWFsbHkgcHJpbnQgc3VjaCBhbiBhbm5vdW5jZW1lbnQsIHlvdXIgd29yayBiYXNl ZCBvbgotLSAgICB0aGUgUHJvZ3JhbSBpcyBub3QgcmVxdWlyZWQgdG8gcHJpbnQgYW4gYW5ub3Vu Y2VtZW50LikKLS0MCi0tVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3 b3JrIGFzIGEgd2hvbGUuICBJZgotLWlkZW50aWZpYWJsZSBzZWN0aW9ucyBvZiB0aGF0IHdvcmsg YXJlIG5vdCBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0sCi0tYW5kIGNhbiBiZSByZWFzb25hYmx5 IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGluCi0tdGhlbXNlbHZl cywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9z ZQotLXNlY3Rpb25zIHdoZW4geW91IGRpc3RyaWJ1dGUgdGhlbSBhcyBzZXBhcmF0ZSB3b3Jrcy4g IEJ1dCB3aGVuIHlvdQotLWRpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBvZiBh IHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZAotLW9uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJp YnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgotLXRoaXMgTGljZW5z ZSwgd2hvc2UgcGVybWlzc2lvbnMgZm9yIG90aGVyIGxpY2Vuc2VlcyBleHRlbmQgdG8gdGhlCi0t ZW50aXJlIHdob2xlLCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mg b2Ygd2hvIHdyb3RlIGl0LgotLQotLVRodXMsIGl0IGlzIG5vdCB0aGUgaW50ZW50IG9mIHRoaXMg c2VjdGlvbiB0byBjbGFpbSByaWdodHMgb3IgY29udGVzdAotLXlvdXIgcmlnaHRzIHRvIHdvcmsg d3JpdHRlbiBlbnRpcmVseSBieSB5b3U7IHJhdGhlciwgdGhlIGludGVudCBpcyB0bwotLWV4ZXJj aXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBv cgotLWNvbGxlY3RpdmUgd29ya3MgYmFzZWQgb24gdGhlIFByb2dyYW0uCi0tCi0tSW4gYWRkaXRp b24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJv Z3JhbQotLXdpdGggdGhlIFByb2dyYW0gKG9yIHdpdGggYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9n cmFtKSBvbiBhIHZvbHVtZSBvZgotLWEgc3RvcmFnZSBvciBkaXN0cmlidXRpb24gbWVkaXVtIGRv ZXMgbm90IGJyaW5nIHRoZSBvdGhlciB3b3JrIHVuZGVyCi0tdGhlIHNjb3BlIG9mIHRoaXMgTGlj ZW5zZS4KLS0KLS0gIDMuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAo b3IgYSB3b3JrIGJhc2VkIG9uIGl0LAotLXVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUg b3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgotLVNlY3Rpb25zIDEgYW5kIDIg YWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBkbyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKLS0K LS0gICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFj aGluZS1yZWFkYWJsZQotLSAgICBzb3VyY2UgY29kZSwgd2hpY2ggbXVzdCBiZSBkaXN0cmlidXRl ZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMKLS0gICAgMSBhbmQgMiBhYm92ZSBvbiBhIG1l ZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCi0tCi0t ICAgIGIpIEFjY29tcGFueSBpdCB3aXRoIGEgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxl YXN0IHRocmVlCi0tICAgIHllYXJzLCB0byBnaXZlIGFueSB0aGlyZCBwYXJ0eSwgZm9yIGEgY2hh cmdlIG5vIG1vcmUgdGhhbiB5b3VyCi0tICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5n IHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKLS0gICAgbWFjaGluZS1yZWFkYWJsZSBj b3B5IG9mIHRoZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLCB0byBiZQotLSAgICBkaXN0cmli dXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1 bQotLSAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCi0t Ci0tICAgIGMpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgcmVjZWl2ZWQg YXMgdG8gdGhlIG9mZmVyCi0tICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2Ug Y29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCi0tICAgIGFsbG93ZWQgb25seSBmb3Igbm9uY29t bWVyY2lhbCBkaXN0cmlidXRpb24gYW5kIG9ubHkgaWYgeW91Ci0tICAgIHJlY2VpdmVkIHRoZSBw cm9ncmFtIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB3aXRoIHN1Y2gKLS0gICAg YW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCi0tCi0tVGhlIHNv dXJjZSBjb2RlIGZvciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3Jr IGZvcgotLW1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29y aywgY29tcGxldGUgc291cmNlCi0tY29kZSBtZWFucyBhbGwgdGhlIHNvdXJjZSBjb2RlIGZvciBh bGwgbW9kdWxlcyBpdCBjb250YWlucywgcGx1cyBhbnkKLS1hc3NvY2lhdGVkIGludGVyZmFjZSBk ZWZpbml0aW9uIGZpbGVzLCBwbHVzIHRoZSBzY3JpcHRzIHVzZWQgdG8KLS1jb250cm9sIGNvbXBp bGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBh Ci0tc3BlY2lhbCBleGNlcHRpb24sIHRoZSBzb3VyY2UgY29kZSBkaXN0cmlidXRlZCBuZWVkIG5v dCBpbmNsdWRlCi0tYW55dGhpbmcgdGhhdCBpcyBub3JtYWxseSBkaXN0cmlidXRlZCAoaW4gZWl0 aGVyIHNvdXJjZSBvciBiaW5hcnkKLS1mb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChj b21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQotLW9wZXJhdGluZyBzeXN0ZW0gb24g d2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50Ci0taXRzZWxm IGFjY29tcGFuaWVzIHRoZSBleGVjdXRhYmxlLgotLQotLUlmIGRpc3RyaWJ1dGlvbiBvZiBleGVj dXRhYmxlIG9yIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcKLS1hY2Nlc3MgdG8gY29w eSBmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhlbiBvZmZlcmluZyBlcXVpdmFsZW50Ci0tYWNj ZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFz Ci0tZGlzdHJpYnV0aW9uIG9mIHRoZSBzb3VyY2UgY29kZSwgZXZlbiB0aG91Z2ggdGhpcmQgcGFy dGllcyBhcmUgbm90Ci0tY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRo ZSBvYmplY3QgY29kZS4KLS0MCi0tICA0LiBZb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1Ymxp Y2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KLS1leGNlcHQgYXMgZXhwcmVzc2x5IHBy b3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0Ci0tb3RoZXJ3aXNlIHRvIGNv cHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzCi0tdm9p ZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhp cyBMaWNlbnNlLgotLUhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLCBv ciByaWdodHMsIGZyb20geW91IHVuZGVyCi0tdGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhl aXIgbGljZW5zZXMgdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKLS1wYXJ0aWVzIHJlbWFpbiBp biBmdWxsIGNvbXBsaWFuY2UuCi0tCi0tICA1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2Nl cHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKLS1zaWduZWQgaXQuICBIb3dldmVy LCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIG1vZGlmeSBvcgotLWRpc3Ry aWJ1dGUgdGhlIFByb2dyYW0gb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25z IGFyZQotLXByb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5z ZS4gIFRoZXJlZm9yZSwgYnkKLS1tb2RpZnlpbmcgb3IgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFt IChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKLS1Qcm9ncmFtKSwgeW91IGluZGljYXRlIHlvdXIg YWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAotLWFsbCBpdHMgdGVybXMg YW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKLS10 aGUgUHJvZ3JhbSBvciB3b3JrcyBiYXNlZCBvbiBpdC4KLS0KLS0gIDYuIEVhY2ggdGltZSB5b3Ug cmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKLS1Qcm9n cmFtKSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9t IHRoZQotLW9yaWdpbmFsIGxpY2Vuc29yIHRvIGNvcHksIGRpc3RyaWJ1dGUgb3IgbW9kaWZ5IHRo ZSBQcm9ncmFtIHN1YmplY3QgdG8KLS10aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBt YXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgotLXJlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50 cycgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4KLS1Zb3UgYXJlIG5vdCBy ZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB0bwot KwotKyAgICAgICAgICAgICAgICAgICAgICAgVEVSTVMgQU5EIENPTkRJVElPTlMKLSsKLSsgIDAu IERlZmluaXRpb25zLgotKwotKyAgIlRoaXMgTGljZW5zZSIgcmVmZXJzIHRvIHZlcnNpb24gMyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rICAiQ29weXJpZ2h0IiBhbHNv IG1lYW5zIGNvcHlyaWdodC1saWtlIGxhd3MgdGhhdCBhcHBseSB0byBvdGhlciBraW5kcyBvZgot K3dvcmtzLCBzdWNoIGFzIHNlbWljb25kdWN0b3IgbWFza3MuCi0rCi0rICAiVGhlIFByb2dyYW0i IHJlZmVycyB0byBhbnkgY29weXJpZ2h0YWJsZSB3b3JrIGxpY2Vuc2VkIHVuZGVyIHRoaXMKLStM aWNlbnNlLiAgRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuICAiTGljZW5zZWVz IiBhbmQKLSsicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMu Ci0rCi0rICBUbyAibW9kaWZ5IiBhIHdvcmsgbWVhbnMgdG8gY29weSBmcm9tIG9yIGFkYXB0IGFs bCBvciBwYXJ0IG9mIHRoZSB3b3JrCi0raW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQg cGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuCi0rZXhhY3QgY29weS4gIFRo ZSByZXN1bHRpbmcgd29yayBpcyBjYWxsZWQgYSAibW9kaWZpZWQgdmVyc2lvbiIgb2YgdGhlCi0r ZWFybGllciB3b3JrIG9yIGEgd29yayAiYmFzZWQgb24iIHRoZSBlYXJsaWVyIHdvcmsuCi0rCi0r ICBBICJjb3ZlcmVkIHdvcmsiIG1lYW5zIGVpdGhlciB0aGUgdW5tb2RpZmllZCBQcm9ncmFtIG9y IGEgd29yayBiYXNlZAotK29uIHRoZSBQcm9ncmFtLgotKwotKyAgVG8gInByb3BhZ2F0ZSIgYSB3 b3JrIG1lYW5zIHRvIGRvIGFueXRoaW5nIHdpdGggaXQgdGhhdCwgd2l0aG91dAotK3Blcm1pc3Np b24sIHdvdWxkIG1ha2UgeW91IGRpcmVjdGx5IG9yIHNlY29uZGFyaWx5IGxpYWJsZSBmb3IKLStp bmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0 aW5nIGl0IG9uIGEKLStjb21wdXRlciBvciBtb2RpZnlpbmcgYSBwcml2YXRlIGNvcHkuICBQcm9w YWdhdGlvbiBpbmNsdWRlcyBjb3B5aW5nLAotK2Rpc3RyaWJ1dGlvbiAod2l0aCBvciB3aXRob3V0 IG1vZGlmaWNhdGlvbiksIG1ha2luZyBhdmFpbGFibGUgdG8gdGhlCi0rcHVibGljLCBhbmQgaW4g c29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLgotKwotKyAgVG8gImNvbnZl eSIgYSB3b3JrIG1lYW5zIGFueSBraW5kIG9mIHByb3BhZ2F0aW9uIHRoYXQgZW5hYmxlcyBvdGhl cgotK3BhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24g d2l0aCBhIHVzZXIgdGhyb3VnaAotK2EgY29tcHV0ZXIgbmV0d29yaywgd2l0aCBubyB0cmFuc2Zl ciBvZiBhIGNvcHksIGlzIG5vdCBjb252ZXlpbmcuCi0rCi0rICBBbiBpbnRlcmFjdGl2ZSB1c2Vy IGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyIKLSt0byB0aGUg ZXh0ZW50IHRoYXQgaXQgaW5jbHVkZXMgYSBjb252ZW5pZW50IGFuZCBwcm9taW5lbnRseSB2aXNp YmxlCi0rZmVhdHVyZSB0aGF0ICgxKSBkaXNwbGF5cyBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQg bm90aWNlLCBhbmQgKDIpCi0rdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50 eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUKLStleHRlbnQgdGhhdCB3YXJyYW50aWVzIGFy ZSBwcm92aWRlZCksIHRoYXQgbGljZW5zZWVzIG1heSBjb252ZXkgdGhlCi0rd29yayB1bmRlciB0 aGlzIExpY2Vuc2UsIGFuZCBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlLiAgSWYK LSt0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlv bnMsIHN1Y2ggYXMgYQotK21lbnUsIGEgcHJvbWluZW50IGl0ZW0gaW4gdGhlIGxpc3QgbWVldHMg dGhpcyBjcml0ZXJpb24uCi0rCi0rICAxLiBTb3VyY2UgQ29kZS4KLSsKLSsgIFRoZSAic291cmNl IGNvZGUiIGZvciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrCi0r Zm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkg bm9uLXNvdXJjZQotK2Zvcm0gb2YgYSB3b3JrLgotKwotKyAgQSAiU3RhbmRhcmQgSW50ZXJmYWNl IiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwKLStzdGFuZGFy ZCBkZWZpbmVkIGJ5IGEgcmVjb2duaXplZCBzdGFuZGFyZHMgYm9keSwgb3IsIGluIHRoZSBjYXNl IG9mCi0raW50ZXJmYWNlcyBzcGVjaWZpZWQgZm9yIGEgcGFydGljdWxhciBwcm9ncmFtbWluZyBs YW5ndWFnZSwgb25lIHRoYXQKLStpcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtp bmcgaW4gdGhhdCBsYW5ndWFnZS4KLSsKLSsgIFRoZSAiU3lzdGVtIExpYnJhcmllcyIgb2YgYW4g ZXhlY3V0YWJsZSB3b3JrIGluY2x1ZGUgYW55dGhpbmcsIG90aGVyCi0rdGhhbiB0aGUgd29yayBh cyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YKLStw YWNrYWdpbmcgYSBNYWpvciBDb21wb25lbnQsIGJ1dCB3aGljaCBpcyBub3QgcGFydCBvZiB0aGF0 IE1ham9yCi0rQ29tcG9uZW50LCBhbmQgKGIpIHNlcnZlcyBvbmx5IHRvIGVuYWJsZSB1c2Ugb2Yg dGhlIHdvcmsgd2l0aCB0aGF0Ci0rTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBT dGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuCi0raW1wbGVtZW50YXRpb24gaXMgYXZhaWxh YmxlIHRvIHRoZSBwdWJsaWMgaW4gc291cmNlIGNvZGUgZm9ybS4gIEEKLSsiTWFqb3IgQ29tcG9u ZW50IiwgaW4gdGhpcyBjb250ZXh0LCBtZWFucyBhIG1ham9yIGVzc2VudGlhbCBjb21wb25lbnQK LSsoa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVy YXRpbmcgc3lzdGVtCi0rKGlmIGFueSkgb24gd2hpY2ggdGhlIGV4ZWN1dGFibGUgd29yayBydW5z LCBvciBhIGNvbXBpbGVyIHVzZWQgdG8KLStwcm9kdWNlIHRoZSB3b3JrLCBvciBhbiBvYmplY3Qg Y29kZSBpbnRlcnByZXRlciB1c2VkIHRvIHJ1biBpdC4KLSsKLSsgIFRoZSAiQ29ycmVzcG9uZGlu ZyBTb3VyY2UiIGZvciBhIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSBtZWFucyBhbGwKLSt0aGUg c291cmNlIGNvZGUgbmVlZGVkIHRvIGdlbmVyYXRlLCBpbnN0YWxsLCBhbmQgKGZvciBhbiBleGVj dXRhYmxlCi0rd29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3Jr LCBpbmNsdWRpbmcgc2NyaXB0cyB0bwotK2NvbnRyb2wgdGhvc2UgYWN0aXZpdGllcy4gIEhvd2V2 ZXIsIGl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHdvcmsncwotK1N5c3RlbSBMaWJyYXJpZXMsIG9y IGdlbmVyYWwtcHVycG9zZSB0b29scyBvciBnZW5lcmFsbHkgYXZhaWxhYmxlIGZyZWUKLStwcm9n cmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZp dGllcyBidXQKLSt3aGljaCBhcmUgbm90IHBhcnQgb2YgdGhlIHdvcmsuICBGb3IgZXhhbXBsZSwg Q29ycmVzcG9uZGluZyBTb3VyY2UKLStpbmNsdWRlcyBpbnRlcmZhY2UgZGVmaW5pdGlvbiBmaWxl cyBhc3NvY2lhdGVkIHdpdGggc291cmNlIGZpbGVzIGZvcgotK3RoZSB3b3JrLCBhbmQgdGhlIHNv dXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQotK2xpbmtlZCBz dWJwcm9ncmFtcyB0aGF0IHRoZSB3b3JrIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byByZXF1 aXJlLAotK3N1Y2ggYXMgYnkgaW50aW1hdGUgZGF0YSBjb21tdW5pY2F0aW9uIG9yIGNvbnRyb2wg ZmxvdyBiZXR3ZWVuIHRob3NlCi0rc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3 b3JrLgotKwotKyAgVGhlIENvcnJlc3BvbmRpbmcgU291cmNlIG5lZWQgbm90IGluY2x1ZGUgYW55 dGhpbmcgdGhhdCB1c2VycwotK2NhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhl ciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZwotK1NvdXJjZS4KLSsKLSsgIFRoZSBDb3JyZXNw b25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdAotK3Nh bWUgd29yay4KLSsKLSsgIDIuIEJhc2ljIFBlcm1pc3Npb25zLgotKwotKyAgQWxsIHJpZ2h0cyBn cmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSBhcmUgZ3JhbnRlZCBmb3IgdGhlIHRlcm0gb2YKLStj b3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhl IHN0YXRlZAotK2NvbmRpdGlvbnMgYXJlIG1ldC4gIFRoaXMgTGljZW5zZSBleHBsaWNpdGx5IGFm ZmlybXMgeW91ciB1bmxpbWl0ZWQKLStwZXJtaXNzaW9uIHRvIHJ1biB0aGUgdW5tb2RpZmllZCBQ cm9ncmFtLiAgVGhlIG91dHB1dCBmcm9tIHJ1bm5pbmcgYQotK2NvdmVyZWQgd29yayBpcyBjb3Zl cmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cwotK2NvbnRl bnQsIGNvbnN0aXR1dGVzIGEgY292ZXJlZCB3b3JrLiAgVGhpcyBMaWNlbnNlIGFja25vd2xlZGdl cyB5b3VyCi0rcmlnaHRzIG9mIGZhaXIgdXNlIG9yIG90aGVyIGVxdWl2YWxlbnQsIGFzIHByb3Zp ZGVkIGJ5IGNvcHlyaWdodCBsYXcuCi0rCi0rICBZb3UgbWF5IG1ha2UsIHJ1biBhbmQgcHJvcGFn YXRlIGNvdmVyZWQgd29ya3MgdGhhdCB5b3UgZG8gbm90Ci0rY29udmV5LCB3aXRob3V0IGNvbmRp dGlvbnMgc28gbG9uZyBhcyB5b3VyIGxpY2Vuc2Ugb3RoZXJ3aXNlIHJlbWFpbnMKLStpbiBmb3Jj ZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBw dXJwb3NlCi0rb2YgaGF2aW5nIHRoZW0gbWFrZSBtb2RpZmljYXRpb25zIGV4Y2x1c2l2ZWx5IGZv ciB5b3UsIG9yIHByb3ZpZGUgeW91Ci0rd2l0aCBmYWNpbGl0aWVzIGZvciBydW5uaW5nIHRob3Nl IHdvcmtzLCBwcm92aWRlZCB0aGF0IHlvdSBjb21wbHkgd2l0aAotK3RoZSB0ZXJtcyBvZiB0aGlz IExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvCi0rbm90 IGNvbnRyb2wgY29weXJpZ2h0LiAgVGhvc2UgdGh1cyBtYWtpbmcgb3IgcnVubmluZyB0aGUgY292 ZXJlZCB3b3JrcwotK2ZvciB5b3UgbXVzdCBkbyBzbyBleGNsdXNpdmVseSBvbiB5b3VyIGJlaGFs ZiwgdW5kZXIgeW91ciBkaXJlY3Rpb24KLSthbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9o aWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YKLSt5b3VyIGNvcHlyaWdodGVkIG1h dGVyaWFsIG91dHNpZGUgdGhlaXIgcmVsYXRpb25zaGlwIHdpdGggeW91LgotKwotKyAgQ29udmV5 aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5k ZXIKLSt0aGUgY29uZGl0aW9ucyBzdGF0ZWQgYmVsb3cuICBTdWJsaWNlbnNpbmcgaXMgbm90IGFs bG93ZWQ7IHNlY3Rpb24gMTAKLSttYWtlcyBpdCB1bm5lY2Vzc2FyeS4KLSsKLSsgIDMuIFByb3Rl Y3RpbmcgVXNlcnMnIExlZ2FsIFJpZ2h0cyBGcm9tIEFudGktQ2lyY3VtdmVudGlvbiBMYXcuCi0r Ci0rICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZl IHRlY2hub2xvZ2ljYWwKLSttZWFzdXJlIHVuZGVyIGFueSBhcHBsaWNhYmxlIGxhdyBmdWxmaWxs aW5nIG9ibGlnYXRpb25zIHVuZGVyIGFydGljbGUKLSsxMSBvZiB0aGUgV0lQTyBjb3B5cmlnaHQg dHJlYXR5IGFkb3B0ZWQgb24gMjAgRGVjZW1iZXIgMTk5Niwgb3IKLStzaW1pbGFyIGxhd3MgcHJv aGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoCi0rbWVhc3VyZXMu Ci0rCi0rICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVn YWwgcG93ZXIgdG8gZm9yYmlkCi0rY2lyY3VtdmVudGlvbiBvZiB0ZWNobm9sb2dpY2FsIG1lYXN1 cmVzIHRvIHRoZSBleHRlbnQgc3VjaCBjaXJjdW12ZW50aW9uCi0raXMgZWZmZWN0ZWQgYnkgZXhl cmNpc2luZyByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlIHdpdGggcmVzcGVjdCB0bwotK3RoZSBj b3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVy YXRpb24gb3IKLSttb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgYXMgYSBtZWFucyBvZiBlbmZvcmNp bmcsIGFnYWluc3QgdGhlIHdvcmsncwotK3VzZXJzLCB5b3VyIG9yIHRoaXJkIHBhcnRpZXMnIGxl Z2FsIHJpZ2h0cyB0byBmb3JiaWQgY2lyY3VtdmVudGlvbiBvZgotK3RlY2hub2xvZ2ljYWwgbWVh c3VyZXMuCi0rCi0rICA0LiBDb252ZXlpbmcgVmVyYmF0aW0gQ29waWVzLgotKwotKyAgWW91IG1h eSBjb252ZXkgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3Mgc291cmNlIGNvZGUgYXMg eW91Ci0rcmVjZWl2ZSBpdCwgaW4gYW55IG1lZGl1bSwgcHJvdmlkZWQgdGhhdCB5b3UgY29uc3Bp Y3VvdXNseSBhbmQKLSthcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJv cHJpYXRlIGNvcHlyaWdodCBub3RpY2U7Ci0ra2VlcCBpbnRhY3QgYWxsIG5vdGljZXMgc3RhdGlu ZyB0aGF0IHRoaXMgTGljZW5zZSBhbmQgYW55Ci0rbm9uLXBlcm1pc3NpdmUgdGVybXMgYWRkZWQg aW4gYWNjb3JkIHdpdGggc2VjdGlvbiA3IGFwcGx5IHRvIHRoZSBjb2RlOwotK2tlZXAgaW50YWN0 IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxs Ci0rcmVjaXBpZW50cyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlIFByb2dy YW0uCi0rCi0rICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2gg Y29weSB0aGF0IHlvdSBjb252ZXksCi0rYW5kIHlvdSBtYXkgb2ZmZXIgc3VwcG9ydCBvciB3YXJy YW50eSBwcm90ZWN0aW9uIGZvciBhIGZlZS4KLSsKLSsgIDUuIENvbnZleWluZyBNb2RpZmllZCBT b3VyY2UgVmVyc2lvbnMuCi0rCi0rICBZb3UgbWF5IGNvbnZleSBhIHdvcmsgYmFzZWQgb24gdGhl IFByb2dyYW0sIG9yIHRoZSBtb2RpZmljYXRpb25zIHRvCi0rcHJvZHVjZSBpdCBmcm9tIHRoZSBQ cm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUKLSt0ZXJtcyBvZiBz ZWN0aW9uIDQsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0 aW9uczoKLSsKLSsgICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBz dGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkCi0rICAgIGl0LCBhbmQgZ2l2aW5nIGEgcmVsZXZhbnQg ZGF0ZS4KLSsKLSsgICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBz dGF0aW5nIHRoYXQgaXQgaXMKLSsgICAgcmVsZWFzZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFuZCBh bnkgY29uZGl0aW9ucyBhZGRlZCB1bmRlciBzZWN0aW9uCi0rICAgIDcuICBUaGlzIHJlcXVpcmVt ZW50IG1vZGlmaWVzIHRoZSByZXF1aXJlbWVudCBpbiBzZWN0aW9uIDQgdG8KLSsgICAgImtlZXAg aW50YWN0IGFsbCBub3RpY2VzIi4KLSsKLSsgICAgYykgWW91IG11c3QgbGljZW5zZSB0aGUgZW50 aXJlIHdvcmssIGFzIGEgd2hvbGUsIHVuZGVyIHRoaXMKLSsgICAgTGljZW5zZSB0byBhbnlvbmUg d2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzCi0rICAgIExpY2Vuc2Ug d2lsbCB0aGVyZWZvcmUgYXBwbHksIGFsb25nIHdpdGggYW55IGFwcGxpY2FibGUgc2VjdGlvbiA3 Ci0rICAgIGFkZGl0aW9uYWwgdGVybXMsIHRvIHRoZSB3aG9sZSBvZiB0aGUgd29yaywgYW5kIGFs bCBpdHMgcGFydHMsCi0rICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAg VGhpcyBMaWNlbnNlIGdpdmVzIG5vCi0rICAgIHBlcm1pc3Npb24gdG8gbGljZW5zZSB0aGUgd29y ayBpbiBhbnkgb3RoZXIgd2F5LCBidXQgaXQgZG9lcyBub3QKLSsgICAgaW52YWxpZGF0ZSBzdWNo IHBlcm1pc3Npb24gaWYgeW91IGhhdmUgc2VwYXJhdGVseSByZWNlaXZlZCBpdC4KLSsKLSsgICAg ZCkgSWYgdGhlIHdvcmsgaGFzIGludGVyYWN0aXZlIHVzZXIgaW50ZXJmYWNlcywgZWFjaCBtdXN0 IGRpc3BsYXkKLSsgICAgQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlczsgaG93ZXZlciwgaWYgdGhl IFByb2dyYW0gaGFzIGludGVyYWN0aXZlCi0rICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlz cGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyCi0rICAgIHdvcmsgbmVlZCBub3Qg bWFrZSB0aGVtIGRvIHNvLgotKwotKyAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3 aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudAotK3dvcmtzLCB3aGljaCBhcmUgbm90 IGJ5IHRoZWlyIG5hdHVyZSBleHRlbnNpb25zIG9mIHRoZSBjb3ZlcmVkIHdvcmssCi0rYW5kIHdo aWNoIGFyZSBub3QgY29tYmluZWQgd2l0aCBpdCBzdWNoIGFzIHRvIGZvcm0gYSBsYXJnZXIgcHJv Z3JhbSwKLStpbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1l ZGl1bSwgaXMgY2FsbGVkIGFuCi0rImFnZ3JlZ2F0ZSIgaWYgdGhlIGNvbXBpbGF0aW9uIGFuZCBp dHMgcmVzdWx0aW5nIGNvcHlyaWdodCBhcmUgbm90Ci0rdXNlZCB0byBsaW1pdCB0aGUgYWNjZXNz IG9yIGxlZ2FsIHJpZ2h0cyBvZiB0aGUgY29tcGlsYXRpb24ncyB1c2VycwotK2JleW9uZCB3aGF0 IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29y awotK2luIGFuIGFnZ3JlZ2F0ZSBkb2VzIG5vdCBjYXVzZSB0aGlzIExpY2Vuc2UgdG8gYXBwbHkg dG8gdGhlIG90aGVyCi0rcGFydHMgb2YgdGhlIGFnZ3JlZ2F0ZS4KLSsKLSsgIDYuIENvbnZleWlu ZyBOb24tU291cmNlIEZvcm1zLgotKwotKyAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsg aW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMKLStvZiBzZWN0aW9ucyA0IGFuZCA1 LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGNvbnZleSB0aGUKLSttYWNoaW5lLXJlYWRhYmxlIENv cnJlc3BvbmRpbmcgU291cmNlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsCi0raW4g b25lIG9mIHRoZXNlIHdheXM6Ci0rCi0rICAgIGEpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4s IG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2FsIHByb2R1Y3QKLSsgICAgKGluY2x1ZGluZyBhIHBo eXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUKLSsgICAgQ29y cmVzcG9uZGluZyBTb3VyY2UgZml4ZWQgb24gYSBkdXJhYmxlIHBoeXNpY2FsIG1lZGl1bQotKyAg ICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KLSsKLSsgICAgYikg Q29udmV5IHRoZSBvYmplY3QgY29kZSBpbiwgb3IgZW1ib2RpZWQgaW4sIGEgcGh5c2ljYWwgcHJv ZHVjdAotKyAgICAoaW5jbHVkaW5nIGEgcGh5c2ljYWwgZGlzdHJpYnV0aW9uIG1lZGl1bSksIGFj Y29tcGFuaWVkIGJ5IGEKLSsgICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRo cmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMKLSsgICAgbG9uZyBhcyB5b3Ugb2ZmZXIgc3BhcmUg cGFydHMgb3IgY3VzdG9tZXIgc3VwcG9ydCBmb3IgdGhhdCBwcm9kdWN0Ci0rICAgIG1vZGVsLCB0 byBnaXZlIGFueW9uZSB3aG8gcG9zc2Vzc2VzIHRoZSBvYmplY3QgY29kZSBlaXRoZXIgKDEpIGEK LSsgICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdh cmUgaW4gdGhlCi0rICAgIHByb2R1Y3QgdGhhdCBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSwg b24gYSBkdXJhYmxlIHBoeXNpY2FsCi0rICAgIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBz b2Z0d2FyZSBpbnRlcmNoYW5nZSwgZm9yIGEgcHJpY2Ugbm8KLSsgICAgbW9yZSB0aGFuIHlvdXIg cmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzCi0rICAgIGNvbnZl eWluZyBvZiBzb3VyY2UsIG9yICgyKSBhY2Nlc3MgdG8gY29weSB0aGUKLSsgICAgQ29ycmVzcG9u ZGluZyBTb3VyY2UgZnJvbSBhIG5ldHdvcmsgc2VydmVyIGF0IG5vIGNoYXJnZS4KLSsKLSsgICAg YykgQ29udmV5IGluZGl2aWR1YWwgY29waWVzIG9mIHRoZSBvYmplY3QgY29kZSB3aXRoIGEgY29w eSBvZiB0aGUKLSsgICAgd3JpdHRlbiBvZmZlciB0byBwcm92aWRlIHRoZSBDb3JyZXNwb25kaW5n IFNvdXJjZS4gIFRoaXMKLSsgICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9u YWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQKLSsgICAgb25seSBpZiB5b3UgcmVjZWl2ZWQg dGhlIG9iamVjdCBjb2RlIHdpdGggc3VjaCBhbiBvZmZlciwgaW4gYWNjb3JkCi0rICAgIHdpdGgg c3Vic2VjdGlvbiA2Yi4KLSsKLSsgICAgZCkgQ29udmV5IHRoZSBvYmplY3QgY29kZSBieSBvZmZl cmluZyBhY2Nlc3MgZnJvbSBhIGRlc2lnbmF0ZWQKLSsgICAgcGxhY2UgKGdyYXRpcyBvciBmb3Ig YSBjaGFyZ2UpLCBhbmQgb2ZmZXIgZXF1aXZhbGVudCBhY2Nlc3MgdG8gdGhlCi0rICAgIENvcnJl c3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0 IG5vCi0rICAgIGZ1cnRoZXIgY2hhcmdlLiAgWW91IG5lZWQgbm90IHJlcXVpcmUgcmVjaXBpZW50 cyB0byBjb3B5IHRoZQotKyAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBhbG9uZyB3aXRoIHRoZSBv YmplY3QgY29kZS4gIElmIHRoZSBwbGFjZSB0bwotKyAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBp cyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UKLSsgICAgbWF5IGJl IG9uIGEgZGlmZmVyZW50IHNlcnZlciAob3BlcmF0ZWQgYnkgeW91IG9yIGEgdGhpcmQgcGFydHkp Ci0rICAgIHRoYXQgc3VwcG9ydHMgZXF1aXZhbGVudCBjb3B5aW5nIGZhY2lsaXRpZXMsIHByb3Zp ZGVkIHlvdSBtYWludGFpbgotKyAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVj dCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQotKyAgICBDb3JyZXNwb25kaW5nIFNvdXJj ZS4gIFJlZ2FyZGxlc3Mgb2Ygd2hhdCBzZXJ2ZXIgaG9zdHMgdGhlCi0rICAgIENvcnJlc3BvbmRp bmcgU291cmNlLCB5b3UgcmVtYWluIG9ibGlnYXRlZCB0byBlbnN1cmUgdGhhdCBpdCBpcwotKyAg ICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWly ZW1lbnRzLgotKwotKyAgICBlKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIHVzaW5nIHBlZXItdG8t cGVlciB0cmFuc21pc3Npb24sIHByb3ZpZGVkCi0rICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMg d2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nCi0rICAgIFNvdXJjZSBvZiB0 aGUgd29yayBhcmUgYmVpbmcgb2ZmZXJlZCB0byB0aGUgZ2VuZXJhbCBwdWJsaWMgYXQgbm8KLSsg ICAgY2hhcmdlIHVuZGVyIHN1YnNlY3Rpb24gNmQuCi0rCi0rICBBIHNlcGFyYWJsZSBwb3J0aW9u IG9mIHRoZSBvYmplY3QgY29kZSwgd2hvc2Ugc291cmNlIGNvZGUgaXMgZXhjbHVkZWQKLStmcm9t IHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBhcyBhIFN5c3RlbSBMaWJyYXJ5LCBuZWVkIG5vdCBi ZQotK2luY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4KLSsKLSsgIEEg IlVzZXIgUHJvZHVjdCIgaXMgZWl0aGVyICgxKSBhICJjb25zdW1lciBwcm9kdWN0Iiwgd2hpY2gg bWVhbnMgYW55Ci0rdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkg dXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwKLStvciBob3VzZWhvbGQgcHVycG9zZXMsIG9yICgy KSBhbnl0aGluZyBkZXNpZ25lZCBvciBzb2xkIGZvciBpbmNvcnBvcmF0aW9uCi0raW50byBhIGR3 ZWxsaW5nLiAgSW4gZGV0ZXJtaW5pbmcgd2hldGhlciBhIHByb2R1Y3QgaXMgYSBjb25zdW1lciBw cm9kdWN0LAotK2RvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNv dmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcgotK3Byb2R1Y3QgcmVjZWl2ZWQgYnkgYSBwYXJ0aWN1 bGFyIHVzZXIsICJub3JtYWxseSB1c2VkIiByZWZlcnMgdG8gYQotK3R5cGljYWwgb3IgY29tbW9u IHVzZSBvZiB0aGF0IGNsYXNzIG9mIHByb2R1Y3QsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN0YXR1cwot K29mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGlj dWxhciB1c2VyCi0rYWN0dWFsbHkgdXNlcywgb3IgZXhwZWN0cyBvciBpcyBleHBlY3RlZCB0byB1 c2UsIHRoZSBwcm9kdWN0LiAgQSBwcm9kdWN0Ci0raXMgYSBjb25zdW1lciBwcm9kdWN0IHJlZ2Fy ZGxlc3Mgb2Ygd2hldGhlciB0aGUgcHJvZHVjdCBoYXMgc3Vic3RhbnRpYWwKLStjb21tZXJjaWFs LCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJl c2VudAotK3RoZSBvbmx5IHNpZ25pZmljYW50IG1vZGUgb2YgdXNlIG9mIHRoZSBwcm9kdWN0Lgot KwotKyAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5z IGFueSBtZXRob2RzLAotK3Byb2NlZHVyZXMsIGF1dGhvcml6YXRpb24ga2V5cywgb3Igb3RoZXIg aW5mb3JtYXRpb24gcmVxdWlyZWQgdG8gaW5zdGFsbAotK2FuZCBleGVjdXRlIG1vZGlmaWVkIHZl cnNpb25zIG9mIGEgY292ZXJlZCB3b3JrIGluIHRoYXQgVXNlciBQcm9kdWN0IGZyb20KLSthIG1v ZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0 aW9uIG11c3QKLStzdWZmaWNlIHRvIGVuc3VyZSB0aGF0IHRoZSBjb250aW51ZWQgZnVuY3Rpb25p bmcgb2YgdGhlIG1vZGlmaWVkIG9iamVjdAotK2NvZGUgaXMgaW4gbm8gY2FzZSBwcmV2ZW50ZWQg b3IgaW50ZXJmZXJlZCB3aXRoIHNvbGVseSBiZWNhdXNlCi0rbW9kaWZpY2F0aW9uIGhhcyBiZWVu IG1hZGUuCi0rCi0rICBJZiB5b3UgY29udmV5IGFuIG9iamVjdCBjb2RlIHdvcmsgdW5kZXIgdGhp cyBzZWN0aW9uIGluLCBvciB3aXRoLCBvcgotK3NwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVz ZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzCi0rcGFydCBvZiBhIHRyYW5z YWN0aW9uIGluIHdoaWNoIHRoZSByaWdodCBvZiBwb3NzZXNzaW9uIGFuZCB1c2Ugb2YgdGhlCi0r VXNlciBQcm9kdWN0IGlzIHRyYW5zZmVycmVkIHRvIHRoZSByZWNpcGllbnQgaW4gcGVycGV0dWl0 eSBvciBmb3IgYQotK2ZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlv biBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlCi0rQ29ycmVzcG9uZGluZyBTb3VyY2UgY29udmV5ZWQg dW5kZXIgdGhpcyBzZWN0aW9uIG11c3QgYmUgYWNjb21wYW5pZWQKLStieSB0aGUgSW5zdGFsbGF0 aW9uIEluZm9ybWF0aW9uLiAgQnV0IHRoaXMgcmVxdWlyZW1lbnQgZG9lcyBub3QgYXBwbHkKLStp ZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8g aW5zdGFsbAotK21vZGlmaWVkIG9iamVjdCBjb2RlIG9uIHRoZSBVc2VyIFByb2R1Y3QgKGZvciBl eGFtcGxlLCB0aGUgd29yayBoYXMKLStiZWVuIGluc3RhbGxlZCBpbiBST00pLgotKwotKyAgVGhl IHJlcXVpcmVtZW50IHRvIHByb3ZpZGUgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIGRvZXMgbm90 IGluY2x1ZGUgYQotK3JlcXVpcmVtZW50IHRvIGNvbnRpbnVlIHRvIHByb3ZpZGUgc3VwcG9ydCBz ZXJ2aWNlLCB3YXJyYW50eSwgb3IgdXBkYXRlcwotK2ZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBt b2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yCi0rdGhlIFVzZXIg UHJvZHVjdCBpbiB3aGljaCBpdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQuICBBY2Nl c3MgdG8gYQotK25ldHdvcmsgbWF5IGJlIGRlbmllZCB3aGVuIHRoZSBtb2RpZmljYXRpb24gaXRz ZWxmIG1hdGVyaWFsbHkgYW5kCi0rYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0 aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kCi0rcHJvdG9jb2xzIGZvciBjb21t dW5pY2F0aW9uIGFjcm9zcyB0aGUgbmV0d29yay4KLSsKLSsgIENvcnJlc3BvbmRpbmcgU291cmNl IGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLAotK2luIGFj Y29yZCB3aXRoIHRoaXMgc2VjdGlvbiBtdXN0IGJlIGluIGEgZm9ybWF0IHRoYXQgaXMgcHVibGlj bHkKLStkb2N1bWVudGVkIChhbmQgd2l0aCBhbiBpbXBsZW1lbnRhdGlvbiBhdmFpbGFibGUgdG8g dGhlIHB1YmxpYyBpbgotK3NvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNw ZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcgotK3VucGFja2luZywgcmVhZGluZyBvciBjb3B5aW5n LgotKwotKyAgNy4gQWRkaXRpb25hbCBUZXJtcy4KLSsKLSsgICJBZGRpdGlvbmFsIHBlcm1pc3Np b25zIiBhcmUgdGVybXMgdGhhdCBzdXBwbGVtZW50IHRoZSB0ZXJtcyBvZiB0aGlzCi0rTGljZW5z ZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25z LgotK0FkZGl0aW9uYWwgcGVybWlzc2lvbnMgdGhhdCBhcmUgYXBwbGljYWJsZSB0byB0aGUgZW50 aXJlIFByb2dyYW0gc2hhbGwKLStiZSB0cmVhdGVkIGFzIHRob3VnaCB0aGV5IHdlcmUgaW5jbHVk ZWQgaW4gdGhpcyBMaWNlbnNlLCB0byB0aGUgZXh0ZW50Ci0rdGhhdCB0aGV5IGFyZSB2YWxpZCB1 bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMKLSthcHBseSBv bmx5IHRvIHBhcnQgb2YgdGhlIFByb2dyYW0sIHRoYXQgcGFydCBtYXkgYmUgdXNlZCBzZXBhcmF0 ZWx5Ci0rdW5kZXIgdGhvc2UgcGVybWlzc2lvbnMsIGJ1dCB0aGUgZW50aXJlIFByb2dyYW0gcmVt YWlucyBnb3Zlcm5lZCBieQotK3RoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRk aXRpb25hbCBwZXJtaXNzaW9ucy4KLSsKLSsgIFdoZW4geW91IGNvbnZleSBhIGNvcHkgb2YgYSBj b3ZlcmVkIHdvcmssIHlvdSBtYXkgYXQgeW91ciBvcHRpb24KLStyZW1vdmUgYW55IGFkZGl0aW9u YWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YKLStpdC4g IChBZGRpdGlvbmFsIHBlcm1pc3Npb25zIG1heSBiZSB3cml0dGVuIHRvIHJlcXVpcmUgdGhlaXIg b3duCi0rcmVtb3ZhbCBpbiBjZXJ0YWluIGNhc2VzIHdoZW4geW91IG1vZGlmeSB0aGUgd29yay4p ICBZb3UgbWF5IHBsYWNlCi0rYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRk ZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLAotK2ZvciB3aGljaCB5b3UgaGF2ZSBvciBjYW4g Z2l2ZSBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgcGVybWlzc2lvbi4KLSsKLSsgIE5vdHdpdGhzdGFu ZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlv dQotK2FkZCB0byBhIGNvdmVyZWQgd29yaywgeW91IG1heSAoaWYgYXV0aG9yaXplZCBieSB0aGUg Y29weXJpZ2h0IGhvbGRlcnMgb2YKLSt0aGF0IG1hdGVyaWFsKSBzdXBwbGVtZW50IHRoZSB0ZXJt cyBvZiB0aGlzIExpY2Vuc2Ugd2l0aCB0ZXJtczoKLSsKLSsgICAgYSkgRGlzY2xhaW1pbmcgd2Fy cmFudHkgb3IgbGltaXRpbmcgbGlhYmlsaXR5IGRpZmZlcmVudGx5IGZyb20gdGhlCi0rICAgIHRl cm1zIG9mIHNlY3Rpb25zIDE1IGFuZCAxNiBvZiB0aGlzIExpY2Vuc2U7IG9yCi0rCi0rICAgIGIp IFJlcXVpcmluZyBwcmVzZXJ2YXRpb24gb2Ygc3BlY2lmaWVkIHJlYXNvbmFibGUgbGVnYWwgbm90 aWNlcyBvcgotKyAgICBhdXRob3IgYXR0cmlidXRpb25zIGluIHRoYXQgbWF0ZXJpYWwgb3IgaW4g dGhlIEFwcHJvcHJpYXRlIExlZ2FsCi0rICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNv bnRhaW5pbmcgaXQ7IG9yCi0rCi0rICAgIGMpIFByb2hpYml0aW5nIG1pc3JlcHJlc2VudGF0aW9u IG9mIHRoZSBvcmlnaW4gb2YgdGhhdCBtYXRlcmlhbCwgb3IKLSsgICAgcmVxdWlyaW5nIHRoYXQg bW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4KLSsgICAgcmVh c29uYWJsZSB3YXlzIGFzIGRpZmZlcmVudCBmcm9tIHRoZSBvcmlnaW5hbCB2ZXJzaW9uOyBvcgot KwotKyAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFt ZXMgb2YgbGljZW5zb3JzIG9yCi0rICAgIGF1dGhvcnMgb2YgdGhlIG1hdGVyaWFsOyBvcgotKwot KyAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9y IHVzZSBvZiBzb21lCi0rICAgIHRyYWRlIG5hbWVzLCB0cmFkZW1hcmtzLCBvciBzZXJ2aWNlIG1h cmtzOyBvcgotKwotKyAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29y cyBhbmQgYXV0aG9ycyBvZiB0aGF0Ci0rICAgIG1hdGVyaWFsIGJ5IGFueW9uZSB3aG8gY29udmV5 cyB0aGUgbWF0ZXJpYWwgKG9yIG1vZGlmaWVkIHZlcnNpb25zIG9mCi0rICAgIGl0KSB3aXRoIGNv bnRyYWN0dWFsIGFzc3VtcHRpb25zIG9mIGxpYWJpbGl0eSB0byB0aGUgcmVjaXBpZW50LCBmb3IK LSsgICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRp cmVjdGx5IGltcG9zZSBvbgotKyAgICB0aG9zZSBsaWNlbnNvcnMgYW5kIGF1dGhvcnMuCi0rCi0r ICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJl ZCAiZnVydGhlcgotK3Jlc3RyaWN0aW9ucyIgd2l0aGluIHRoZSBtZWFuaW5nIG9mIHNlY3Rpb24g MTAuICBJZiB0aGUgUHJvZ3JhbSBhcyB5b3UKLStyZWNlaXZlZCBpdCwgb3IgYW55IHBhcnQgb2Yg aXQsIGNvbnRhaW5zIGEgbm90aWNlIHN0YXRpbmcgdGhhdCBpdCBpcwotK2dvdmVybmVkIGJ5IHRo aXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcgotK3Jlc3RyaWN0 aW9uLCB5b3UgbWF5IHJlbW92ZSB0aGF0IHRlcm0uICBJZiBhIGxpY2Vuc2UgZG9jdW1lbnQgY29u dGFpbnMKLSthIGZ1cnRoZXIgcmVzdHJpY3Rpb24gYnV0IHBlcm1pdHMgcmVsaWNlbnNpbmcgb3Ig Y29udmV5aW5nIHVuZGVyIHRoaXMKLStMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQg d29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMKLStvZiB0aGF0IGxpY2Vuc2UgZG9j dW1lbnQsIHByb3ZpZGVkIHRoYXQgdGhlIGZ1cnRoZXIgcmVzdHJpY3Rpb24gZG9lcwotK25vdCBz dXJ2aXZlIHN1Y2ggcmVsaWNlbnNpbmcgb3IgY29udmV5aW5nLgotKwotKyAgSWYgeW91IGFkZCB0 ZXJtcyB0byBhIGNvdmVyZWQgd29yayBpbiBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24sIHlvdQot K211c3QgcGxhY2UsIGluIHRoZSByZWxldmFudCBzb3VyY2UgZmlsZXMsIGEgc3RhdGVtZW50IG9m IHRoZQotK2FkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBu b3RpY2UgaW5kaWNhdGluZwotK3doZXJlIHRvIGZpbmQgdGhlIGFwcGxpY2FibGUgdGVybXMuCi0r Ci0rICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkg YmUgc3RhdGVkIGluIHRoZQotK2Zvcm0gb2YgYSBzZXBhcmF0ZWx5IHdyaXR0ZW4gbGljZW5zZSwg b3Igc3RhdGVkIGFzIGV4Y2VwdGlvbnM7Ci0rdGhlIGFib3ZlIHJlcXVpcmVtZW50cyBhcHBseSBl aXRoZXIgd2F5LgotKwotKyAgOC4gVGVybWluYXRpb24uCi0rCi0rICBZb3UgbWF5IG5vdCBwcm9w YWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkKLStwcm92 aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdCBvdGhlcndpc2UgdG8gcHJvcGFn YXRlIG9yCi0rbW9kaWZ5IGl0IGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWlu YXRlIHlvdXIgcmlnaHRzIHVuZGVyCi0rdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVu dCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZAotK3BhcmFncmFwaCBvZiBzZWN0aW9u IDExKS4KLSsKLSsgIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMg TGljZW5zZSwgdGhlbiB5b3VyCi0rbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQg aG9sZGVyIGlzIHJlaW5zdGF0ZWQgKGEpCi0rcHJvdmlzaW9uYWxseSwgdW5sZXNzIGFuZCB1bnRp bCB0aGUgY29weXJpZ2h0IGhvbGRlciBleHBsaWNpdGx5IGFuZAotK2ZpbmFsbHkgdGVybWluYXRl cyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQKLSto b2xkZXIgZmFpbHMgdG8gbm90aWZ5IHlvdSBvZiB0aGUgdmlvbGF0aW9uIGJ5IHNvbWUgcmVhc29u YWJsZSBtZWFucwotK3ByaW9yIHRvIDYwIGRheXMgYWZ0ZXIgdGhlIGNlc3NhdGlvbi4KLSsKLSsg IE1vcmVvdmVyLCB5b3VyIGxpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIgY29weXJpZ2h0IGhvbGRl ciBpcwotK3JlaW5zdGF0ZWQgcGVybWFuZW50bHkgaWYgdGhlIGNvcHlyaWdodCBob2xkZXIgbm90 aWZpZXMgeW91IG9mIHRoZQotK3Zpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRo aXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUKLStyZWNlaXZlZCBub3RpY2Ugb2YgdmlvbGF0 aW9uIG9mIHRoaXMgTGljZW5zZSAoZm9yIGFueSB3b3JrKSBmcm9tIHRoYXQKLStjb3B5cmlnaHQg aG9sZGVyLCBhbmQgeW91IGN1cmUgdGhlIHZpb2xhdGlvbiBwcmlvciB0byAzMCBkYXlzIGFmdGVy Ci0reW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuCi0rCi0rICBUZXJtaW5hdGlvbiBvZiB5b3Vy IHJpZ2h0cyB1bmRlciB0aGlzIHNlY3Rpb24gZG9lcyBub3QgdGVybWluYXRlIHRoZQotK2xpY2Vu c2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlv dSB1bmRlcgotK3RoaXMgTGljZW5zZS4gIElmIHlvdXIgcmlnaHRzIGhhdmUgYmVlbiB0ZXJtaW5h dGVkIGFuZCBub3QgcGVybWFuZW50bHkKLStyZWluc3RhdGVkLCB5b3UgZG8gbm90IHF1YWxpZnkg dG8gcmVjZWl2ZSBuZXcgbGljZW5zZXMgZm9yIHRoZSBzYW1lCi0rbWF0ZXJpYWwgdW5kZXIgc2Vj dGlvbiAxMC4KLSsKLSsgIDkuIEFjY2VwdGFuY2UgTm90IFJlcXVpcmVkIGZvciBIYXZpbmcgQ29w aWVzLgotKwotKyAgWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSBp biBvcmRlciB0byByZWNlaXZlIG9yCi0rcnVuIGEgY29weSBvZiB0aGUgUHJvZ3JhbS4gIEFuY2ls bGFyeSBwcm9wYWdhdGlvbiBvZiBhIGNvdmVyZWQgd29yawotK29jY3VycmluZyBzb2xlbHkgYXMg YSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uCi0rdG8gcmVj ZWl2ZSBhIGNvcHkgbGlrZXdpc2UgZG9lcyBub3QgcmVxdWlyZSBhY2NlcHRhbmNlLiAgSG93ZXZl ciwKLStub3RoaW5nIG90aGVyIHRoYW4gdGhpcyBMaWNlbnNlIGdyYW50cyB5b3UgcGVybWlzc2lv biB0byBwcm9wYWdhdGUgb3IKLSttb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlv bnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbwotK25vdCBhY2NlcHQgdGhpcyBMaWNlbnNl LiAgVGhlcmVmb3JlLCBieSBtb2RpZnlpbmcgb3IgcHJvcGFnYXRpbmcgYQotK2NvdmVyZWQgd29y aywgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28u Ci0rCi0rICAxMC4gQXV0b21hdGljIExpY2Vuc2luZyBvZiBEb3duc3RyZWFtIFJlY2lwaWVudHMu Ci0rCi0rICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVu dCBhdXRvbWF0aWNhbGx5Ci0rcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlIG9yaWdpbmFsIGxp Y2Vuc29ycywgdG8gcnVuLCBtb2RpZnkgYW5kCi0rcHJvcGFnYXRlIHRoYXQgd29yaywgc3ViamVj dCB0byB0aGlzIExpY2Vuc2UuICBZb3UgYXJlIG5vdCByZXNwb25zaWJsZQotK2ZvciBlbmZvcmNp bmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLgotKwotKyAg QW4gImVudGl0eSB0cmFuc2FjdGlvbiIgaXMgYSB0cmFuc2FjdGlvbiB0cmFuc2ZlcnJpbmcgY29u dHJvbCBvZiBhbgotK29yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9m IG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4KLStvcmdhbml6YXRpb24sIG9yIG1lcmdpbmcgb3JnYW5p emF0aW9ucy4gIElmIHByb3BhZ2F0aW9uIG9mIGEgY292ZXJlZAotK3dvcmsgcmVzdWx0cyBmcm9t IGFuIGVudGl0eSB0cmFuc2FjdGlvbiwgZWFjaCBwYXJ0eSB0byB0aGF0Ci0rdHJhbnNhY3Rpb24g d2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyCi0r bGljZW5zZXMgdG8gdGhlIHdvcmsgdGhlIHBhcnR5J3MgcHJlZGVjZXNzb3IgaW4gaW50ZXJlc3Qg aGFkIG9yIGNvdWxkCi0rZ2l2ZSB1bmRlciB0aGUgcHJldmlvdXMgcGFyYWdyYXBoLCBwbHVzIGEg cmlnaHQgdG8gcG9zc2Vzc2lvbiBvZiB0aGUKLStDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUg d29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYKLSt0aGUgcHJlZGVjZXNz b3IgaGFzIGl0IG9yIGNhbiBnZXQgaXQgd2l0aCByZWFzb25hYmxlIGVmZm9ydHMuCi0rCi0rICBZ b3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lz ZSBvZiB0aGUKLStyaWdodHMgZ3JhbnRlZCBvciBhZmZpcm1lZCB1bmRlciB0aGlzIExpY2Vuc2Uu ICBGb3IgZXhhbXBsZSwgeW91IG1heQotK25vdCBpbXBvc2UgYSBsaWNlbnNlIGZlZSwgcm95YWx0 eSwgb3Igb3RoZXIgY2hhcmdlIGZvciBleGVyY2lzZSBvZgotK3JpZ2h0cyBncmFudGVkIHVuZGVy IHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24KLSsoaW5j bHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdp bmcgdGhhdAotK2FueSBwYXRlbnQgY2xhaW0gaXMgaW5mcmluZ2VkIGJ5IG1ha2luZywgdXNpbmcs IHNlbGxpbmcsIG9mZmVyaW5nIGZvcgotK3NhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBv ciBhbnkgcG9ydGlvbiBvZiBpdC4KLSsKLSsgIDExLiBQYXRlbnRzLgotKwotKyAgQSAiY29udHJp YnV0b3IiIGlzIGEgY29weXJpZ2h0IGhvbGRlciB3aG8gYXV0aG9yaXplcyB1c2UgdW5kZXIgdGhp cwotK0xpY2Vuc2Ugb2YgdGhlIFByb2dyYW0gb3IgYSB3b3JrIG9uIHdoaWNoIHRoZSBQcm9ncmFt IGlzIGJhc2VkLiAgVGhlCi0rd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJp YnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuCi0rCi0rICBBIGNvbnRyaWJ1dG9yJ3MgImVz c2VudGlhbCBwYXRlbnQgY2xhaW1zIiBhcmUgYWxsIHBhdGVudCBjbGFpbXMKLStvd25lZCBvciBj b250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9y Ci0raGVyZWFmdGVyIGFjcXVpcmVkLCB0aGF0IHdvdWxkIGJlIGluZnJpbmdlZCBieSBzb21lIG1h bm5lciwgcGVybWl0dGVkCi0rYnkgdGhpcyBMaWNlbnNlLCBvZiBtYWtpbmcsIHVzaW5nLCBvciBz ZWxsaW5nIGl0cyBjb250cmlidXRvciB2ZXJzaW9uLAotK2J1dCBkbyBub3QgaW5jbHVkZSBjbGFp bXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhCi0rY29uc2VxdWVuY2Ugb2YgZnVy dGhlciBtb2RpZmljYXRpb24gb2YgdGhlIGNvbnRyaWJ1dG9yIHZlcnNpb24uICBGb3IKLStwdXJw b3NlcyBvZiB0aGlzIGRlZmluaXRpb24sICJjb250cm9sIiBpbmNsdWRlcyB0aGUgcmlnaHQgdG8g Z3JhbnQKLStwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRo ZSByZXF1aXJlbWVudHMgb2YKLSB0aGlzIExpY2Vuc2UuCi0gCi0tICA3LiBJZiwgYXMgYSBjb25z ZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50Ci0taW5m cmluZ2VtZW50IG9yIGZvciBhbnkgb3RoZXIgcmVhc29uIChub3QgbGltaXRlZCB0byBwYXRlbnQg aXNzdWVzKSwKLS1jb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3Vy dCBvcmRlciwgYWdyZWVtZW50IG9yCi0rICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBu b24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQotK3BhdGVudCBsaWNlbnNlIHVu ZGVyIHRoZSBjb250cmlidXRvcidzIGVzc2VudGlhbCBwYXRlbnQgY2xhaW1zLCB0bwotK21ha2Us IHVzZSwgc2VsbCwgb2ZmZXIgZm9yIHNhbGUsIGltcG9ydCBhbmQgb3RoZXJ3aXNlIHJ1biwgbW9k aWZ5IGFuZAotK3Byb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNp b24uCi0rCi0rICBJbiB0aGUgZm9sbG93aW5nIHRocmVlIHBhcmFncmFwaHMsIGEgInBhdGVudCBs aWNlbnNlIiBpcyBhbnkgZXhwcmVzcwotK2FncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVy IGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudAotKyhzdWNoIGFzIGFuIGV4cHJl c3MgcGVybWlzc2lvbiB0byBwcmFjdGljZSBhIHBhdGVudCBvciBjb3ZlbmFudCBub3QgdG8KLStz dWUgZm9yIHBhdGVudCBpbmZyaW5nZW1lbnQpLiAgVG8gImdyYW50IiBzdWNoIGEgcGF0ZW50IGxp Y2Vuc2UgdG8gYQotK3BhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29t bWl0bWVudCBub3QgdG8gZW5mb3JjZSBhCi0rcGF0ZW50IGFnYWluc3QgdGhlIHBhcnR5LgotKwot KyAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBw YXRlbnQgbGljZW5zZSwKLSthbmQgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIG9mIHRoZSB3b3Jr IGlzIG5vdCBhdmFpbGFibGUgZm9yIGFueW9uZQotK3RvIGNvcHksIGZyZWUgb2YgY2hhcmdlIGFu ZCB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLCB0aHJvdWdoIGEKLStwdWJsaWNseSBh dmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5z LAotK3RoZW4geW91IG11c3QgZWl0aGVyICgxKSBjYXVzZSB0aGUgQ29ycmVzcG9uZGluZyBTb3Vy Y2UgdG8gYmUgc28KLSthdmFpbGFibGUsIG9yICgyKSBhcnJhbmdlIHRvIGRlcHJpdmUgeW91cnNl bGYgb2YgdGhlIGJlbmVmaXQgb2YgdGhlCi0rcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGlj dWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXIKLStjb25zaXN0ZW50IHdpdGgg dGhlIHJlcXVpcmVtZW50cyBvZiB0aGlzIExpY2Vuc2UsIHRvIGV4dGVuZCB0aGUgcGF0ZW50Ci0r bGljZW5zZSB0byBkb3duc3RyZWFtIHJlY2lwaWVudHMuICAiS25vd2luZ2x5IHJlbHlpbmciIG1l YW5zIHlvdSBoYXZlCi0rYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQg bGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlCi0rY292ZXJlZCB3b3JrIGluIGEgY291bnRyeSwg b3IgeW91ciByZWNpcGllbnQncyB1c2Ugb2YgdGhlIGNvdmVyZWQgd29yawotK2luIGEgY291bnRy eSwgd291bGQgaW5mcmluZ2Ugb25lIG9yIG1vcmUgaWRlbnRpZmlhYmxlIHBhdGVudHMgaW4gdGhh dAotK2NvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuCi0r Ci0rICBJZiwgcHVyc3VhbnQgdG8gb3IgaW4gY29ubmVjdGlvbiB3aXRoIGEgc2luZ2xlIHRyYW5z YWN0aW9uIG9yCi0rYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9j dXJpbmcgY29udmV5YW5jZSBvZiwgYQotK2NvdmVyZWQgd29yaywgYW5kIGdyYW50IGEgcGF0ZW50 IGxpY2Vuc2UgdG8gc29tZSBvZiB0aGUgcGFydGllcwotK3JlY2VpdmluZyB0aGUgY292ZXJlZCB3 b3JrIGF1dGhvcml6aW5nIHRoZW0gdG8gdXNlLCBwcm9wYWdhdGUsIG1vZGlmeQotK29yIGNvbnZl eSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxp Y2Vuc2UKLSt5b3UgZ3JhbnQgaXMgYXV0b21hdGljYWxseSBleHRlbmRlZCB0byBhbGwgcmVjaXBp ZW50cyBvZiB0aGUgY292ZXJlZAotK3dvcmsgYW5kIHdvcmtzIGJhc2VkIG9uIGl0LgotKwotKyAg QSBwYXRlbnQgbGljZW5zZSBpcyAiZGlzY3JpbWluYXRvcnkiIGlmIGl0IGRvZXMgbm90IGluY2x1 ZGUgd2l0aGluCi0rdGhlIHNjb3BlIG9mIGl0cyBjb3ZlcmFnZSwgcHJvaGliaXRzIHRoZSBleGVy Y2lzZSBvZiwgb3IgaXMKLStjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBv ciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUKLStzcGVjaWZpY2FsbHkgZ3JhbnRlZCB1bmRl ciB0aGlzIExpY2Vuc2UuICBZb3UgbWF5IG5vdCBjb252ZXkgYSBjb3ZlcmVkCi0rd29yayBpZiB5 b3UgYXJlIGEgcGFydHkgdG8gYW4gYXJyYW5nZW1lbnQgd2l0aCBhIHRoaXJkIHBhcnR5IHRoYXQg aXMKLStpbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGlj aCB5b3UgbWFrZSBwYXltZW50Ci0rdG8gdGhlIHRoaXJkIHBhcnR5IGJhc2VkIG9uIHRoZSBleHRl bnQgb2YgeW91ciBhY3Rpdml0eSBvZiBjb252ZXlpbmcKLSt0aGUgd29yaywgYW5kIHVuZGVyIHdo aWNoIHRoZSB0aGlyZCBwYXJ0eSBncmFudHMsIHRvIGFueSBvZiB0aGUKLStwYXJ0aWVzIHdobyB3 b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkK LStwYXRlbnQgbGljZW5zZSAoYSkgaW4gY29ubmVjdGlvbiB3aXRoIGNvcGllcyBvZiB0aGUgY292 ZXJlZCB3b3JrCi0rY29udmV5ZWQgYnkgeW91IChvciBjb3BpZXMgbWFkZSBmcm9tIHRob3NlIGNv cGllcyksIG9yIChiKSBwcmltYXJpbHkKLStmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVj aWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdAotK2NvbnRhaW4gdGhlIGNvdmVyZWQg d29yaywgdW5sZXNzIHlvdSBlbnRlcmVkIGludG8gdGhhdCBhcnJhbmdlbWVudCwKLStvciB0aGF0 IHBhdGVudCBsaWNlbnNlIHdhcyBncmFudGVkLCBwcmlvciB0byAyOCBNYXJjaCAyMDA3LgotKwot KyAgTm90aGluZyBpbiB0aGlzIExpY2Vuc2Ugc2hhbGwgYmUgY29uc3RydWVkIGFzIGV4Y2x1ZGlu ZyBvciBsaW1pdGluZwotK2FueSBpbXBsaWVkIGxpY2Vuc2Ugb3Igb3RoZXIgZGVmZW5zZXMgdG8g aW5mcmluZ2VtZW50IHRoYXQgbWF5Ci0rb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5k ZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3LgotKwotKyAgMTIuIE5vIFN1cnJlbmRlciBvZiBPdGhl cnMnIEZyZWVkb20uCi0rCi0rICBJZiBjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hl dGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCi0gb3RoZXJ3aXNlKSB0aGF0IGNvbnRy YWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdAotLWV4Y3Vz ZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90 Ci0tZGlzdHJpYnV0ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdh dGlvbnMgdW5kZXIgdGhpcwotLUxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdh dGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKLS1tYXkgbm90IGRpc3RyaWJ1dGUgdGhl IFByb2dyYW0gYXQgYWxsLiAgRm9yIGV4YW1wbGUsIGlmIGEgcGF0ZW50Ci0tbGljZW5zZSB3b3Vs ZCBub3QgcGVybWl0IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBi eQotLWFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0 aHJvdWdoIHlvdSwgdGhlbgotLXRoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNmeSBib3RoIGl0 IGFuZCB0aGlzIExpY2Vuc2Ugd291bGQgYmUgdG8KLS1yZWZyYWluIGVudGlyZWx5IGZyb20gZGlz dHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtLgotLQotLUlmIGFueSBwb3J0aW9uIG9mIHRoaXMgc2Vj dGlvbiBpcyBoZWxkIGludmFsaWQgb3IgdW5lbmZvcmNlYWJsZSB1bmRlcgotLWFueSBwYXJ0aWN1 bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQg dG8KLS1hcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBs eSBpbiBvdGhlcgotLWNpcmN1bXN0YW5jZXMuCi0tCi0tSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9m IHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQotLXBhdGVudHMgb3Ig b3RoZXIgcHJvcGVydHkgcmlnaHQgY2xhaW1zIG9yIHRvIGNvbnRlc3QgdmFsaWRpdHkgb2YgYW55 Ci0tc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90 ZWN0aW5nIHRoZQotLWludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24g c3lzdGVtLCB3aGljaCBpcwotLWltcGxlbWVudGVkIGJ5IHB1YmxpYyBsaWNlbnNlIHByYWN0aWNl cy4gIE1hbnkgcGVvcGxlIGhhdmUgbWFkZQotLWdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhl IHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQKLS10aHJvdWdoIHRoYXQgc3lzdGVt IGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdAotLXN5c3RlbTsg aXQgaXMgdXAgdG8gdGhlIGF1dGhvci9kb25vciB0byBkZWNpZGUgaWYgaGUgb3Igc2hlIGlzIHdp bGxpbmcKLS10byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBh bmQgYSBsaWNlbnNlZSBjYW5ub3QKLS1pbXBvc2UgdGhhdCBjaG9pY2UuCi0tCi0tVGhpcyBzZWN0 aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVk IHRvCi0tYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCi0tDAot LSAgOC4gSWYgdGhlIGRpc3RyaWJ1dGlvbiBhbmQvb3IgdXNlIG9mIHRoZSBQcm9ncmFtIGlzIHJl c3RyaWN0ZWQgaW4KLS1jZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBj b3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKLS1vcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdo byBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlCi0tbWF5IGFkZCBhbiBleHBs aWNpdCBnZW9ncmFwaGljYWwgZGlzdHJpYnV0aW9uIGxpbWl0YXRpb24gZXhjbHVkaW5nCi0tdGhv c2UgY291bnRyaWVzLCBzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBv ciBhbW9uZwotLWNvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhp cyBMaWNlbnNlIGluY29ycG9yYXRlcwotLXRoZSBsaW1pdGF0aW9uIGFzIGlmIHdyaXR0ZW4gaW4g dGhlIGJvZHkgb2YgdGhpcyBMaWNlbnNlLgotK2V4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9u cyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhCi0rY292ZXJlZCB3b3Jr IHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0 aGlzCi0rTGljZW5zZSBhbmQgYW55IG90aGVyIHBlcnRpbmVudCBvYmxpZ2F0aW9ucywgdGhlbiBh cyBhIGNvbnNlcXVlbmNlIHlvdSBtYXkKLStub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFt cGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UKLSt0byBjb2xsZWN0 IGEgcm95YWx0eSBmb3IgZnVydGhlciBjb252ZXlpbmcgZnJvbSB0aG9zZSB0byB3aG9tIHlvdSBj b252ZXkKLSt0aGUgUHJvZ3JhbSwgdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGgg dGhvc2UgdGVybXMgYW5kIHRoaXMKLStMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJl bHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uCi0rCi0rICAxMy4gVXNlIHdpdGggdGhlIEdO VSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsgIE5vdHdpdGhzdGFuZGluZyBh bnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgeW91IGhhdmUKLStwZXJtaXNzaW9u IHRvIGxpbmsgb3IgY29tYmluZSBhbnkgY292ZXJlZCB3b3JrIHdpdGggYSB3b3JrIGxpY2Vuc2Vk Ci0rdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgaW50byBhIHNpbmdsZQotK2NvbWJpbmVkIHdvcmssIGFuZCB0byBjb252ZXkgdGhlIHJlc3Vs dGluZyB3b3JrLiAgVGhlIHRlcm1zIG9mIHRoaXMKLStMaWNlbnNlIHdpbGwgY29udGludWUgdG8g YXBwbHkgdG8gdGhlIHBhcnQgd2hpY2ggaXMgdGhlIGNvdmVyZWQgd29yaywKLStidXQgdGhlIHNw ZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vu c2UsCi0rc2VjdGlvbiAxMywgY29uY2VybmluZyBpbnRlcmFjdGlvbiB0aHJvdWdoIGEgbmV0d29y ayB3aWxsIGFwcGx5IHRvIHRoZQotK2NvbWJpbmF0aW9uIGFzIHN1Y2guCi0rCi0rICAxNC4gUmV2 aXNlZCBWZXJzaW9ucyBvZiB0aGlzIExpY2Vuc2UuCi0gCi0tICA5LiBUaGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucwotLW9m IHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcg dmVyc2lvbnMgd2lsbAotKyAgVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlz aCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMgb2YKLSt0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCi0gYmUg c2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIg aW4gZGV0YWlsIHRvCi0gYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCi0gCi0tRWFj aCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0 aGUgUHJvZ3JhbQotLXNwZWNpZmllcyBhIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSB3 aGljaCBhcHBsaWVzIHRvIGl0IGFuZCAiYW55Ci0tbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRo ZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucwotLWVpdGhlciBv ZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBG cmVlCi0tU29mdHdhcmUgRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNp ZnkgYSB2ZXJzaW9uIG51bWJlciBvZgotLXRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55 IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLS1Gb3VuZGF0aW9u LgotLQotLSAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9n cmFtIGludG8gb3RoZXIgZnJlZQotLXByb2dyYW1zIHdob3NlIGRpc3RyaWJ1dGlvbiBjb25kaXRp b25zIGFyZSBkaWZmZXJlbnQsIHdyaXRlIHRvIHRoZSBhdXRob3IKLS10byBhc2sgZm9yIHBlcm1p c3Npb24uICBGb3Igc29mdHdhcmUgd2hpY2ggaXMgY29weXJpZ2h0ZWQgYnkgdGhlIEZyZWUKLS1T b2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyB3ZSBzb21ldGltZXMKLS1tYWtlIGV4Y2VwdGlvbnMgZm9yIHRoaXMuICBPdXIgZGVjaXNpb24g d2lsbCBiZSBndWlkZWQgYnkgdGhlIHR3byBnb2FscwotLW9mIHByZXNlcnZpbmcgdGhlIGZyZWUg c3RhdHVzIG9mIGFsbCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2FyZSBhbmQKLS1vZiBw cm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KLS0K LS0JCQkgICAgTk8gV0FSUkFOVFkKLS0KLS0gIDExLiBCRUNBVVNFIFRIRSBQUk9HUkFNIElTIExJ Q0VOU0VEIEZSRUUgT0YgQ0hBUkdFLCBUSEVSRSBJUyBOTyBXQVJSQU5UWQotLUZPUiBUSEUgUFJP R1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuICBFWENFUFQg V0hFTgotLU9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMg QU5EL09SIE9USEVSIFBBUlRJRVMKLS1QUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRAotLU9SIElNUExJRUQsIElO Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCi0t TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRI RSBFTlRJUkUgUklTSyBBUwotLVRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUg UFJPR1JBTSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUKLS1QUk9HUkFNIFBST1ZFIERFRkVDVElW RSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywKLS1SRVBB SVIgT1IgQ09SUkVDVElPTi4KLS0KLS0gIDEyLiBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQg QlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcKLS1XSUxMIEFOWSBDT1BZ UklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SCi0t UkVESVNUUklCVVRFIFRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRP IFlPVSBGT1IgREFNQUdFUywKLS1JTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQRUNJQUwsIElOQ0lE RU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcKLS1PVVQgT0YgVEhFIFVTRSBP UiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE Ci0tVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBM T1NTRVMgU1VTVEFJTkVEIEJZCi0tWU9VIE9SIFRISVJEIFBBUlRJRVMgT1IgQSBGQUlMVVJFIE9G IFRIRSBQUk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIKLS1QUk9HUkFNUyksIEVWRU4g SUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKLS1Q T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCi0tCi0tCQkgICAgIEVORCBPRiBURVJNUyBBTkQg Q09ORElUSU9OUwotLQwKLS0JQXBwZW5kaXg6IEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZ b3VyIE5ldyBQcm9ncmFtcwotKyAgRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hp bmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUKLStQcm9ncmFtIHNwZWNpZmllcyB0aGF0IGEgY2Vy dGFpbiBudW1iZXJlZCB2ZXJzaW9uIG9mIHRoZSBHTlUgR2VuZXJhbAotK1B1YmxpYyBMaWNlbnNl ICJvciBhbnkgbGF0ZXIgdmVyc2lvbiIgYXBwbGllcyB0byBpdCwgeW91IGhhdmUgdGhlCi0rb3B0 aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQg bnVtYmVyZWQKLSt2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZQotK0ZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBz cGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YgdGhlCi0rR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkCi0rYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSsKLSsgIElmIHRoZSBQcm9ncmFtIHNwZWNpZmllcyB0 aGF0IGEgcHJveHkgY2FuIGRlY2lkZSB3aGljaCBmdXR1cmUKLSt2ZXJzaW9ucyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgY2FuIGJlIHVzZWQsIHRoYXQgcHJveHkncwotK3B1Ymxp YyBzdGF0ZW1lbnQgb2YgYWNjZXB0YW5jZSBvZiBhIHZlcnNpb24gcGVybWFuZW50bHkgYXV0aG9y aXplcyB5b3UKLSt0byBjaG9vc2UgdGhhdCB2ZXJzaW9uIGZvciB0aGUgUHJvZ3JhbS4KLSsKLSsg IExhdGVyIGxpY2Vuc2UgdmVyc2lvbnMgbWF5IGdpdmUgeW91IGFkZGl0aW9uYWwgb3IgZGlmZmVy ZW50Ci0rcGVybWlzc2lvbnMuICBIb3dldmVyLCBubyBhZGRpdGlvbmFsIG9ibGlnYXRpb25zIGFy ZSBpbXBvc2VkIG9uIGFueQotK2F1dGhvciBvciBjb3B5cmlnaHQgaG9sZGVyIGFzIGEgcmVzdWx0 IG9mIHlvdXIgY2hvb3NpbmcgdG8gZm9sbG93IGEKLStsYXRlciB2ZXJzaW9uLgotKwotKyAgMTUu IERpc2NsYWltZXIgb2YgV2FycmFudHkuCi0rCi0rICBUSEVSRSBJUyBOTyBXQVJSQU5UWSBGT1Ig VEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZCi0rQVBQTElDQUJMRSBMQVcu ICBFWENFUFQgV0hFTiBPVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVAot K0hPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMgUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMi IFdJVEhPVVQgV0FSUkFOVFkKLStPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBM SUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLStUSEUgSU1QTElFRCBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rUFVS UE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUyBUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0Ug T0YgVEhFIFBST0dSQU0KLStJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgUFJPR1JBTSBQUk9WRSBE RUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YKLStBTEwgTkVDRVNTQVJZIFNFUlZJQ0lO RywgUkVQQUlSIE9SIENPUlJFQ1RJT04uCi0rCi0rICAxNi4gTGltaXRhdGlvbiBvZiBMaWFiaWxp dHkuCi0rCi0rICBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcg T1IgQUdSRUVEIFRPIElOIFdSSVRJTkcKLStXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBB TlkgT1RIRVIgUEFSVFkgV0hPIE1PRElGSUVTIEFORC9PUiBDT05WRVlTCi0rVEhFIFBST0dSQU0g QVMgUEVSTUlUVEVEIEFCT1ZFLCBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLCBJTkNMVURJ TkcgQU5ZCi0rR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERB TUFHRVMgQVJJU0lORyBPVVQgT0YgVEhFCi0rVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBS T0dSQU0gKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRgotK0RBVEEgT1IgREFU QSBCRUlORyBSRU5ERVJFRCBJTkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkgWU9VIE9S IFRISVJECi0rUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBX SVRIIEFOWSBPVEhFUiBQUk9HUkFNUyksCi0rRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQ QVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotK1NVQ0ggREFNQUdF Uy4KLSsKLSsgIDE3LiBJbnRlcnByZXRhdGlvbiBvZiBTZWN0aW9ucyAxNSBhbmQgMTYuCi0rCi0r ICBJZiB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50eSBhbmQgbGltaXRhdGlvbiBvZiBsaWFiaWxp dHkgcHJvdmlkZWQKLSthYm92ZSBjYW5ub3QgYmUgZ2l2ZW4gbG9jYWwgbGVnYWwgZWZmZWN0IGFj Y29yZGluZyB0byB0aGVpciB0ZXJtcywKLStyZXZpZXdpbmcgY291cnRzIHNoYWxsIGFwcGx5IGxv Y2FsIGxhdyB0aGF0IG1vc3QgY2xvc2VseSBhcHByb3hpbWF0ZXMKLSthbiBhYnNvbHV0ZSB3YWl2 ZXIgb2YgYWxsIGNpdmlsIGxpYWJpbGl0eSBpbiBjb25uZWN0aW9uIHdpdGggdGhlCi0rUHJvZ3Jh bSwgdW5sZXNzIGEgd2FycmFudHkgb3IgYXNzdW1wdGlvbiBvZiBsaWFiaWxpdHkgYWNjb21wYW5p ZXMgYQotK2NvcHkgb2YgdGhlIFByb2dyYW0gaW4gcmV0dXJuIGZvciBhIGZlZS4KLSsKLSsgICAg ICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKLSsKLSsgICAgICAg ICAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKLSAKLSAg IElmIHlvdSBkZXZlbG9wIGEgbmV3IHByb2dyYW0sIGFuZCB5b3Ugd2FudCBpdCB0byBiZSBvZiB0 aGUgZ3JlYXRlc3QKLSBwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRv IGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0Ci1AQCAtMjg3LDE1ICs2MjgsMTUgQEAgZnJlZSBz b2Z0d2FyZSB3aGljaCBldmVyeW9uZSBjYW4gcmVkaXN0cgotIAotICAgVG8gZG8gc28sIGF0dGFj aCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIHByb2dyYW0uICBJdCBpcyBzYWZlc3QKLSB0 byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVm ZmVjdGl2ZWx5Ci0tY29udmV5IHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZp bGUgc2hvdWxkIGhhdmUgYXQgbGVhc3QKLStzdGF0ZSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5 OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0Ci0gdGhlICJjb3B5cmlnaHQiIGxp bmUgYW5kIGEgcG9pbnRlciB0byB3aGVyZSB0aGUgZnVsbCBub3RpY2UgaXMgZm91bmQuCi0gCi0g ICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVh IG9mIHdoYXQgaXQgZG9lcy4+Ci0tICAgIENvcHlyaWdodCAoQykgMTl5eSAgPG5hbWUgb2YgYXV0 aG9yPgotKyAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgotIAotLSAg ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICAgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgotKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotICAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotIAotICAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLUBAIC0zMDQsMzYgKzY0NSwzMCBAQCB0aGUgImNvcHly aWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoCi0gICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0gICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tICAg IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMS0xMzA3LCBVU0EKLSsgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gCi0gQWxzbyBhZGQgaW5mb3Jt YXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwu Ci0gCi0tSWYgdGhlIHByb2dyYW0gaXMgaW50ZXJhY3RpdmUsIG1ha2UgaXQgb3V0cHV0IGEgc2hv cnQgbm90aWNlIGxpa2UgdGhpcwotLXdoZW4gaXQgc3RhcnRzIGluIGFuIGludGVyYWN0aXZlIG1v ZGU6Ci0rICBJZiB0aGUgcHJvZ3JhbSBkb2VzIHRlcm1pbmFsIGludGVyYWN0aW9uLCBtYWtlIGl0 IG91dHB1dCBhIHNob3J0Ci0rbm90aWNlIGxpa2UgdGhpcyB3aGVuIGl0IHN0YXJ0cyBpbiBhbiBp bnRlcmFjdGl2ZSBtb2RlOgotIAotLSAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmln aHQgKEMpIDE5eXkgbmFtZSBvZiBhdXRob3IKLS0gICAgR25vbW92aXNpb24gY29tZXMgd2l0aCBB QlNPTFVURUxZIE5PIFdBUlJBTlRZOyBmb3IgZGV0YWlscyB0eXBlIGBzaG93IHcnLgotKyAgICA8 cHJvZ3JhbT4gIENvcHlyaWdodCAoQykgPHllYXI+ICA8bmFtZSBvZiBhdXRob3I+Ci0rICAgIFRo aXMgcHJvZ3JhbSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxz IHR5cGUgYHNob3cgdycuCi0gICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUg d2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKLSAgICAgdW5kZXIgY2VydGFpbiBjb25kaXRpb25z OyB0eXBlIGBzaG93IGMnIGZvciBkZXRhaWxzLgotIAotIFRoZSBoeXBvdGhldGljYWwgY29tbWFu ZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQotLXBh cnRzIG9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgT2YgY291cnNlLCB0aGUgY29tbWFu ZHMgeW91IHVzZSBtYXkKLS1iZSBjYWxsZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYHNob3cgdycg YW5kIGBzaG93IGMnOyB0aGV5IGNvdWxkIGV2ZW4gYmUKLS1tb3VzZS1jbGlja3Mgb3IgbWVudSBp dGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgotLQotLVlvdSBzaG91bGQgYWxzbyBn ZXQgeW91ciBlbXBsb3llciAoaWYgeW91IHdvcmsgYXMgYSBwcm9ncmFtbWVyKSBvciB5b3VyCi0t c2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUg cHJvZ3JhbSwgaWYKLS1uZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFt ZXM6Ci0tCi0tICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0 IGludGVyZXN0IGluIHRoZSBwcm9ncmFtCi0tICBgR25vbW92aXNpb24nICh3aGljaCBtYWtlcyBw YXNzZXMgYXQgY29tcGlsZXJzKSB3cml0dGVuIGJ5IEphbWVzIEhhY2tlci4KLS0KLS0gIDxzaWdu YXR1cmUgb2YgVHkgQ29vbj4sIDEgQXByaWwgMTk4OQotLSAgVHkgQ29vbiwgUHJlc2lkZW50IG9m IFZpY2UKLS0KLS1UaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGlu Y29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KLS1wcm9wcmlldGFyeSBwcm9ncmFtcy4gIElm IHlvdXIgcHJvZ3JhbSBpcyBhIHN1YnJvdXRpbmUgbGlicmFyeSwgeW91IG1heQotLWNvbnNpZGVy IGl0IG1vcmUgdXNlZnVsIHRvIHBlcm1pdCBsaW5raW5nIHByb3ByaWV0YXJ5IGFwcGxpY2F0aW9u cyB3aXRoIHRoZQotLWxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVz ZSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbAotLVB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhp cyBMaWNlbnNlLgotK3BhcnRzIG9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgT2YgY291 cnNlLCB5b3VyIHByb2dyYW0ncyBjb21tYW5kcwotK21pZ2h0IGJlIGRpZmZlcmVudDsgZm9yIGEg R1VJIGludGVyZmFjZSwgeW91IHdvdWxkIHVzZSBhbiAiYWJvdXQgYm94Ii4KLSsKLSsgIFlvdSBz aG91bGQgYWxzbyBnZXQgeW91ciBlbXBsb3llciAoaWYgeW91IHdvcmsgYXMgYSBwcm9ncmFtbWVy KSBvciBzY2hvb2wsCi0raWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBm b3IgdGhlIHByb2dyYW0sIGlmIG5lY2Vzc2FyeS4KLStGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0 aGlzLCBhbmQgaG93IHRvIGFwcGx5IGFuZCBmb2xsb3cgdGhlIEdOVSBHUEwsIHNlZQotKzxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBkb2VzIG5vdCBwZXJtaXQgaW5jb3Jwb3JhdGluZyB5b3VyIHByb2dyYW0KLStpbnRv IHByb3ByaWV0YXJ5IHByb2dyYW1zLiAgSWYgeW91ciBwcm9ncmFtIGlzIGEgc3Vicm91dGluZSBs aWJyYXJ5LCB5b3UKLSttYXkgY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtp bmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGgKLSt0aGUgbGlicmFyeS4gIElmIHRoaXMg aXMgd2hhdCB5b3Ugd2FudCB0byBkbywgdXNlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwKLStQdWJs aWMgTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZS4gIEJ1dCBmaXJzdCwgcGxlYXNlIHJl YWQKLSs8aHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvd2h5LW5vdC1sZ3BsLmh0bWw+Lgot SW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvQ2hhbmdlTG9nLmdkYgotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9DaGFuZ2VMb2cuZ2Ri CTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDEx MDcwMy9yZWFkbGluZS9DaGFuZ2VMb2cuZ2RiCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAw ICswMjAwCi1AQCAtMSwzICsxLDEyIEBACi0rMjAxMS0wNC0zMCAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwlXb3JrYXJvdW5kIGdkYi5iYXNlL2NvbXBs ZXRpb24uZXhwIHJlZ3Jlc3Npb24gb24gcmVhZGxpbmUtNi4yLgotKwkqIGNvbXBsZXRlLmMgKGdl dF95X29yX24pOiBEaXNhYmxlIHRoZSByZXR1cm4gb24gUkxfU1RBVEVfQ0FMTEJBQ0suCi0rCi0r MjAxMS0wNC0yNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot KwotKwlJbXBvcnRlZCByZWFkbGluZSA2LjIsIGFuZCB1cHN0cmVhbSBwYXRjaCAwMDEuCi0rCi0g MjAxMS0wNi0yNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot IAotIAlBdm9pZCBmcmVlIGZyb20gYSBzaWduYWwgaGFuZGxlci4KLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL3JlYWRsaW5lL0lOU1RBTEwKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIw MTEwNzAzLm9yaWcvcmVhZGxpbmUvSU5TVEFMTAkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvSU5TVEFMTAkyMDExLTA3 LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsNyArMSw3IEBACi0gQmFzaWMgSW5z dGFsbGF0aW9uCi0gPT09PT09PT09PT09PT09PT09Ci0gCi0tVGhlc2UgYXJlIGluc3RhbGxhdGlv biBpbnN0cnVjdGlvbnMgZm9yIFJlYWRsaW5lLTUuMS4KLStUaGVzZSBhcmUgaW5zdGFsbGF0aW9u IGluc3RydWN0aW9ucyBmb3IgUmVhZGxpbmUtNi4yLgotIAotIFRoZSBzaW1wbGVzdCB3YXkgdG8g Y29tcGlsZSByZWFkbGluZSBpczoKLSAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRs aW5lL01BTklGRVNUCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3Jl YWRsaW5lL01BTklGRVNUCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9NQU5JRkVTVAkyMDExLTA3LTAzIDEwOjQxOjIx LjAwMDAwMDAwMCArMDIwMAotQEAgLTMsNiArMyw3IEBACi0gIwotIGRvYwkJZAotIGV4YW1wbGVz CWQKLStleGFtcGxlcy9hdXRvY29uZglkCi0gZXhhbXBsZXMvcmxmZQlkCi0gc3VwcG9ydAkJZAot IHNobGliCQlkCi1AQCAtMjYsNiArMjcsNyBAQCBoaXN0bGliLmgJZgotIGtleW1hcHMuaAlmCi0g cG9zaXhkaXIuaAlmCi0gcG9zaXhqbXAuaAlmCi0rcG9zaXhzZWxlY3QuaAlmCi0gcG9zaXhzdGF0 LmgJZgotIHJlYWRsaW5lLmgJZgotIHJsY29uZi5oCWYKLUBAIC02OSwxMSArNzEsMTMgQEAgdW5k by5jCQlmCi0gdXRpbC5jCQlmCi0gdmlfa2V5bWFwLmMJZgotIHZpX21vZGUuYwlmCi0reGZyZWUu YwkJZgotIHhtYWxsb2MuYwlmCi0gaGlzdG9yeS5jCWYKLSBoaXN0ZXhwYW5kLmMJZgotIGhpc3Rm aWxlLmMJZgotIGhpc3RzZWFyY2guYwlmCi0rcGF0Y2hsZXZlbAlmCi0gc2hsaWIvTWFrZWZpbGUu aW4JZgotIHN1cHBvcnQvY29uZmlnLmd1ZXNzCWYKLSBzdXBwb3J0L2NvbmZpZy5ycGF0aAlmCi1A QCAtMTA3LDEyICsxMTEsMTYgQEAgZXhhbXBsZXMvbWFuZXhhbXAuYwlmCi0gZXhhbXBsZXMvcmVh ZGxpbmVidWYuaAlmCi0gZXhhbXBsZXMvcmwtZmdldHMuYwlmCi0gZXhhbXBsZXMvcmxjYXQuYwlm Ci0rZXhhbXBsZXMvcmxldmVudC5jCWYKLSBleGFtcGxlcy9ybHRlc3QuYwlmCi0gZXhhbXBsZXMv cmwuYwkJZgotIGV4YW1wbGVzL3JscHR5dGVzdC5jCWYKLSBleGFtcGxlcy9ybHZlcnNpb24uYwlm Ci0gZXhhbXBsZXMvaGlzdGV4YW1wLmMJZgotIGV4YW1wbGVzL0lucHV0cmMJZgotK2V4YW1wbGVz L2F1dG9jb25mL0JBU0hfQ0hFQ0tfTElCX1RFUk1DQVAJZgotK2V4YW1wbGVzL2F1dG9jb25mL1JM X0xJQl9SRUFETElORV9WRVJTSU9OCWYKLStleGFtcGxlcy9hdXRvY29uZi93aV9MSUJfUkVBRExJ TkUJZgotIGV4YW1wbGVzL3JsZmUvQ2hhbmdlTG9nCQlmCi0gZXhhbXBsZXMvcmxmZS9NYWtlZmls ZS5pbglmCi0gZXhhbXBsZXMvcmxmZS9SRUFETUUJCWYKLUBAIC0xMjQsNiArMTMyLDcgQEAgZXhh bXBsZXMvcmxmZS9vcy5oCQlmCi0gZXhhbXBsZXMvcmxmZS9wdHkuYwkJZgotIGV4YW1wbGVzL3Js ZmUvcmxmZS5jCQlmCi0gZXhhbXBsZXMvcmxmZS9zY3JlZW4uaAkJZgotK2V4YW1wbGVzL3Jsd3Jh cC0wLjMwLnRhci5neglmCi0gIyBmb3JtYXR0ZWQgZG9jdW1lbnRhdGlvbiwgZnJvbSBNQU5JRkVT VC5kb2MKLSBkb2MvcmVhZGxpbmUucHMJCWYKLSBkb2MvaGlzdG9yeS5wcwkJZgotSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvTWFrZWZpbGUuaW4JMjAxMS0wNy0wMyAx MDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5l L01ha2VmaWxlLmluCTIwMTEtMDctMDMgMTA6NDM6MzYuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwy MCArMSwyMCBAQAotICMjIC0qLSB0ZXh0IC0qLSAjIwotICMgTWFzdGVyIE1ha2VmaWxlIGZvciB0 aGUgR05VIHJlYWRsaW5lIGxpYnJhcnkuCi0tIyBDb3B5cmlnaHQgKEMpIDE5OTQtMjAwNCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjIENvcHlyaWdodCAoQykgMTk5NC0yMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyMgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKwotKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyMgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAKLS0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3Ig KGF0IHlvdXIgb3B0aW9uKQotLSMgYW55IGxhdGVyIHZlcnNpb24uCi0tCi0tIyBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0j IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotLQotLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU ZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuCi0gUkxfTElCUkFS WV9WRVJTSU9OID0gQExJQlZFUlNJT05ACi0gUkxfTElCUkFSWV9OQU1FID0gcmVhZGxpbmUKLSAK LUBAIC01OCw3ICs1OCw3IEBAIGxpYmRpciA9IEBsaWJkaXJACi0gbWFuZGlyID0gQG1hbmRpckAK LSBpbmNsdWRlZGlyID0gQGluY2x1ZGVkaXJACi0gZGF0YWRpciA9IEBkYXRhZGlyQAotLWxvY2Fs ZWRpciA9ICQoZGF0YWRpcikvbG9jYWxlCi0rbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKLSAKLSBp bmZvZGlyID0gQGluZm9kaXJACi0gCi1AQCAtNjgsNyArNjgsNyBAQCBtYW4zZGlyID0gJChtYW5k aXIpL21hbjMKLSBERVNURElSID0KLSAKLSAjIFByb2dyYW1zIHRvIG1ha2UgdGFncyBmaWxlcy4K LS1FVEFHUyA9IGV0YWdzIC10dwotK0VUQUdTID0gZXRhZ3MKLSBDVEFHUyA9IGN0YWdzIC10dwot IAotIENGTEFHUyA9IEBDRkxBR1NACi1AQCAtMTAwLDggKzEwMCw2IEBAIEdDQ19MSU5UX0NGTEFH UyA9ICQoWENDRkxBR1MpICQoR0NDX0xJTlQKLSBMSUJSQVJZX05BTUUgPSBsaWJyZWFkbGluZS5h Ci0gU1RBVElDX0xJQlMgPSBsaWJyZWFkbGluZS5hIGxpYmhpc3RvcnkuYQotIAotLVdDV0lEVEhf T0JKID0gQFdDV0lEVEhfT0JKQAotLQotICMgVGhlIEMgY29kZSBzb3VyY2UgZmlsZXMgZm9yIHRo aXMgbGlicmFyeS4KLSBDU09VUkNFUyA9ICQoc3JjZGlyKS9yZWFkbGluZS5jICQoc3JjZGlyKS9m dW5tYXAuYyAkKHNyY2Rpcikva2V5bWFwcy5jIFwKLSAJICAgJChzcmNkaXIpL3ZpX21vZGUuYyAk KHNyY2RpcikvcGFyZW5zLmMgJChzcmNkaXIpL3JsdHR5LmMgXAotQEAgLTEwOSwyNiArMTA3LDI4 IEBAIENTT1VSQ0VTID0gJChzcmNkaXIpL3JlYWRsaW5lLmMgJChzcmNkaXIKLSAJICAgJChzcmNk aXIpL2Rpc3BsYXkuYyAkKHNyY2Rpcikvc2lnbmFscy5jICQoc3JjZGlyKS9lbWFjc19rZXltYXAu YyBcCi0gCSAgICQoc3JjZGlyKS92aV9rZXltYXAuYyAkKHNyY2RpcikvdXRpbC5jICQoc3JjZGly KS9raWxsLmMgXAotIAkgICAkKHNyY2RpcikvdW5kby5jICQoc3JjZGlyKS9tYWNyby5jICQoc3Jj ZGlyKS9pbnB1dC5jIFwKLS0JICAgJChzcmNkaXIpL2NhbGxiYWNrLmMgJChzcmNkaXIpL3Rlcm1p bmFsLmMgJChzcmNkaXIpL3htYWxsb2MuYyBcCi0rCSAgICQoc3JjZGlyKS9jYWxsYmFjay5jICQo c3JjZGlyKS90ZXJtaW5hbC5jICQoc3JjZGlyKS94bWFsbG9jLmMgJChzcmNkaXIpL3hmcmVlLmMg XAotIAkgICAkKHNyY2RpcikvaGlzdG9yeS5jICQoc3JjZGlyKS9oaXN0c2VhcmNoLmMgJChzcmNk aXIpL2hpc3RleHBhbmQuYyBcCi0gCSAgICQoc3JjZGlyKS9oaXN0ZmlsZS5jICQoc3JjZGlyKS9u bHMuYyAkKHNyY2Rpcikvc2VhcmNoLmMgXAotIAkgICAkKHNyY2Rpcikvc2hlbGwuYyAkKHNyY2Rp cikvc2F2ZXN0cmluZy5jICQoc3JjZGlyKS90aWxkZS5jIFwKLSAJICAgJChzcmNkaXIpL3RleHQu YyAkKHNyY2RpcikvbWlzYy5jICQoc3JjZGlyKS9jb21wYXQuYyBcCi0tCSAgICQoc3JjZGlyKS9t YnV0aWwuYyAkKHNyY2Rpcikvc3VwcG9ydC93Y3dpZHRoLmMKLSsJICAgJChzcmNkaXIpL21idXRp bC5jCi0gCi0gIyBUaGUgaGVhZGVyIGZpbGVzIGZvciB0aGlzIGxpYnJhcnkuCi0tSFNPVVJDRVMg PSByZWFkbGluZS5oIHJsZGVmcy5oIGNoYXJkZWZzLmgga2V5bWFwcy5oIGhpc3RvcnkuaCBoaXN0 bGliLmggXAotLQkgICBwb3NpeHN0YXQuaCBwb3NpeGRpci5oIHBvc2l4am1wLmggdGlsZGUuaCBy bGNvbmYuaCBybHR0eS5oIFwKLS0JICAgYW5zaV9zdGRsaWIuaCB0Y2FwLmggcmxzdGRjLmggeG1h bGxvYy5oIHJscHJpdmF0ZS5oIHJsc2hlbGwuaCBcCi0tCSAgIHJsdHlwZWRlZnMuaCBybG1idXRp bC5oCi0rSFNPVVJDRVMgPSAkKHNyY2RpcikvcmVhZGxpbmUuaCAkKHNyY2RpcikvcmxkZWZzLmgg JChzcmNkaXIpL2NoYXJkZWZzLmggXAotKwkgICAkKHNyY2Rpcikva2V5bWFwcy5oICQoc3JjZGly KS9oaXN0b3J5LmggJChzcmNkaXIpL2hpc3RsaWIuaCBcCi0rCSAgICQoc3JjZGlyKS9wb3NpeHN0 YXQuaCAkKHNyY2RpcikvcG9zaXhkaXIuaCAkKHNyY2RpcikvcG9zaXhqbXAuaCBcCi0rCSAgICQo c3JjZGlyKS90aWxkZS5oICQoc3JjZGlyKS9ybGNvbmYuaCAkKHNyY2Rpcikvcmx0dHkuaCBcCi0r CSAgICQoc3JjZGlyKS9hbnNpX3N0ZGxpYi5oICQoc3JjZGlyKS90Y2FwLmggJChzcmNkaXIpL3Js c3RkYy5oIFwKLSsJICAgJChzcmNkaXIpL3htYWxsb2MuaCAkKHNyY2Rpcikvcmxwcml2YXRlLmgg JChzcmNkaXIpL3Jsc2hlbGwuaCBcCi0rCSAgICQoc3JjZGlyKS9ybHR5cGVkZWZzLmggJChzcmNk aXIpL3JsbWJ1dGlsLmgKLSAKLSBISVNUT0JKID0gaGlzdG9yeS5vIGhpc3RleHBhbmQubyBoaXN0 ZmlsZS5vIGhpc3RzZWFyY2gubyBzaGVsbC5vIG1idXRpbC5vCi0gVElMREVPQkogPSB0aWxkZS5v Ci0gT0JKRUNUUyA9IHJlYWRsaW5lLm8gdmlfbW9kZS5vIGZ1bm1hcC5vIGtleW1hcHMubyBwYXJl bnMubyBzZWFyY2gubyBcCi0gCSAgcmx0dHkubyBjb21wbGV0ZS5vIGJpbmQubyBpc2VhcmNoLm8g ZGlzcGxheS5vIHNpZ25hbHMubyBcCi0gCSAgdXRpbC5vIGtpbGwubyB1bmRvLm8gbWFjcm8ubyBp bnB1dC5vIGNhbGxiYWNrLm8gdGVybWluYWwubyBcCi0tCSAgdGV4dC5vIG5scy5vIG1pc2MubyBj b21wYXQubyB4bWFsbG9jLm8gJChISVNUT0JKKSAkKFRJTERFT0JKKSBcCi0tCSAgJChXQ1dJRFRI X09CSikKLSsJICB0ZXh0Lm8gbmxzLm8gbWlzYy5vIGNvbXBhdC5vIHhmcmVlLm8geG1hbGxvYy5v ICQoSElTVE9CSikgJChUSUxERU9CSikKLSAKLSAjIFRoZSB0ZXhpbmZvIGZpbGVzIHdoaWNoIGRv Y3VtZW50IHRoaXMgbGlicmFyeS4KLSBET0NTT1VSQ0UgPSBkb2MvcmxtYW4udGV4aW5mbyBkb2Mv cmx0ZWNoLnRleGluZm8gZG9jL3JsdXNlci50ZXhpbmZvCi1AQCAtMTU5LDE1ICsxNTksMTEgQEAg bGlicmVhZGxpbmUuYTogJChPQkpFQ1RTKQotIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKRUNU UykKLSAJLXRlc3QgLW4gIiQoUkFOTElCKSIgJiYgJChSQU5MSUIpICRACi0gCi0tbGliaGlzdG9y eS5hOiAkKEhJU1RPQkopIHhtYWxsb2MubwotK2xpYmhpc3RvcnkuYTogJChISVNUT0JKKSB4bWFs bG9jLm8geGZyZWUubwotIAkkKFJNKSAkQAotLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoSElTVE9C SikgeG1hbGxvYy5vCi0rCSQoQVIpICQoQVJGTEFHUykgJEAgJChISVNUT0JKKSB4bWFsbG9jLm8g eGZyZWUubwotIAktdGVzdCAtbiAiJChSQU5MSUIpIiAmJiAkKFJBTkxJQikgJEAKLSAKLS13Y3dp ZHRoLm86ICQoc3JjZGlyKS9zdXBwb3J0L3djd2lkdGguYwotLQkkKFJNKSAkQAotLQkkKENDKSAk KENDRkxBR1MpIC1jICQoc3JjZGlyKS9zdXBwb3J0L3djd2lkdGguYwotLQotICMgU2luY2UgdGls ZGUuYyBpcyBzaGFyZWQgYmV0d2VlbiByZWFkbGluZSBhbmQgYmFzaCwgbWFrZSBzdXJlIHdlIGNv bXBpbGUKLSAjIGl0IHdpdGggdGhlIHJpZ2h0IGZsYWdzIHdoZW4gaXQncyBidWlsdCBhcyBwYXJ0 IG9mIHJlYWRsaW5lCi0gdGlsZGUubzoJdGlsZGUuYwotQEAgLTE3NSw3ICsxNzEsNyBAQCB0aWxk ZS5vOgl0aWxkZS5jCi0gCSQoQ0MpICQoQ0NGTEFHUykgLURSRUFETElORV9MSUJSQVJZIC1jICQo c3JjZGlyKS90aWxkZS5jCi0gCi0gcmVhZGxpbmU6ICQoT0JKRUNUUykgcmVhZGxpbmUuaCBybGRl ZnMuaCBjaGFyZGVmcy5oIC4vbGlicmVhZGxpbmUuYQotLQkkKENDKSAkKENDRkxBR1MpIC1vICRA IC4vZXhhbXBsZXMvcmwuYyAuL2xpYnJlYWRsaW5lLmEgJHtURVJNQ0FQX0xJQn0KLSsJJChDQykg JChDQ0ZMQUdTKSAtRFJFQURMSU5FX0xJQlJBUlkgLW8gJEAgJCh0b3Bfc3JjZGlyKS9leGFtcGxl cy9ybC5jIC4vbGlicmVhZGxpbmUuYSAke1RFUk1DQVBfTElCfQotIAotIGxpbnQ6CWZvcmNlCi0g CSQoTUFLRSkgJChNRkxBR1MpIENDRkxBR1M9JyQoR0NDX0xJTlRfQ0ZMQUdTKScgc3RhdGljCi1A QCAtMjAwLDYgKzE5Niw3IEBAIHN0YW1wLWg6IGNvbmZpZy5zdGF0dXMgJChzcmNkaXIpL2NvbmZp Zy4KLSAjJChzcmNkaXIpL2NvbmZpZ3VyZTogJChzcmNkaXIpL2NvbmZpZ3VyZS5pbgkjIyBDb21t ZW50LW1lLW91dCBpbiBkaXN0cmlidXRpb24KLSAjCWNkICQoc3JjZGlyKSAmJiBhdXRvY29uZgkj IyBDb21tZW50LW1lLW91dCBpbiBkaXN0cmlidXRpb24KLSAKLSsKLSBzaGFyZWQ6CWZvcmNlCi0g CS10ZXN0IC1kIHNobGliIHx8IG1rZGlyIHNobGliCi0gCS0oIGNkIHNobGliIDsgJHtNQUtFfSAk e01GTEFHU30gYWxsICkKLUBAIC0yMTQsMTcgKzIxMSw2IEBAIGV4YW1wbGVzOiBmb3JjZQotIAot IGZvcmNlOgotIAotLWluc3RhbGwtaGVhZGVyczogaW5zdGFsbGRpcnMgJHtJTlNUQUxMRURfSEVB REVSU30KLS0JZm9yIGYgaW4gJHtJTlNUQUxMRURfSEVBREVSU307IGRvIFwKLS0JCSQoSU5TVEFM TF9EQVRBKSAkKHNyY2RpcikvJCRmICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3JlYWRsaW5lIDsg XAotLQlkb25lCi0tCi0tdW5pbnN0YWxsLWhlYWRlcnM6Ci0tCS10ZXN0IC1uICIkKGluY2x1ZGVk aXIpIiAmJiBjZCAkKERFU1RESVIpJChpbmNsdWRlZGlyKS9yZWFkbGluZSAmJiBcCi0tCQkke1JN fSAke0lOU1RBTExFRF9IRUFERVJTfQotLQotLW1heWJlLXVuaW5zdGFsbC1oZWFkZXJzOiB1bmlu c3RhbGwtaGVhZGVycwotLQotICMjIEdEQiBMT0NBTAotICMjIERvbid0IG1lc3Mgd2l0aCBwZW9w bGUncyBpbnN0YWxsZWQgcmVhZGxpbmUncy4KLSAjIyBUaGlzIHRyaWVzIHRvIGluc3RhbGwgdGhp cyB2ZXJzaW9uIG9mIHJlYWRsaW5lIG92ZXIgd2hhdGV2ZXIKLUBAIC0yMzcsNyArMjIzLDE4IEBA IGluc3RhbGw6Ci0gCi0gI2luc3RhbGw6CSQoSU5TVEFMTF9UQVJHRVRTKQotIAotLWluc3RhbGwt c3RhdGljOiBpbnN0YWxsZGlycyAkKFNUQVRJQ19MSUJTKSBpbnN0YWxsLWhlYWRlcnMgaW5zdGFs bC1kb2MKLStpbnN0YWxsLWhlYWRlcnM6IGluc3RhbGxkaXJzICR7SU5TVEFMTEVEX0hFQURFUlN9 Ci0rCWZvciBmIGluICR7SU5TVEFMTEVEX0hFQURFUlN9OyBkbyBcCi0rCQkkKElOU1RBTExfREFU QSkgJChzcmNkaXIpLyQkZiAkKERFU1RESVIpJChpbmNsdWRlZGlyKS9yZWFkbGluZSA7IFwKLSsJ ZG9uZQotKwotK3VuaW5zdGFsbC1oZWFkZXJzOgotKwktdGVzdCAtbiAiJChpbmNsdWRlZGlyKSIg JiYgY2QgJChERVNURElSKSQoaW5jbHVkZWRpcikvcmVhZGxpbmUgJiYgXAotKwkJJHtSTX0gJHtJ TlNUQUxMRURfSEVBREVSU30KLSsKLSttYXliZS11bmluc3RhbGwtaGVhZGVyczogdW5pbnN0YWxs LWhlYWRlcnMKLSsKLStpbnN0YWxsLXN0YXRpYzogaW5zdGFsbGRpcnMgJChTVEFUSUNfTElCUykg aW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtZG9jIGluc3RhbGwtZXhhbXBsZXMKLSAJLSQoTVYpICQo REVTVERJUikkKGxpYmRpcikvbGlicmVhZGxpbmUuYSAkKERFU1RESVIpJChsaWJkaXIpL2xpYnJl YWRsaW5lLm9sZAotIAkkKElOU1RBTExfREFUQSkgbGlicmVhZGxpbmUuYSAkKERFU1RESVIpJChs aWJkaXIpL2xpYnJlYWRsaW5lLmEKLSAJLXRlc3QgLW4gIiQoUkFOTElCKSIgJiYgJChSQU5MSUIp ICQoREVTVERJUikkKGxpYmRpcikvbGlicmVhZGxpbmUuYQotQEAgLTI1MCw3ICsyNDcsNyBAQCBp bnN0YWxsZGlyczogJChzcmNkaXIpL3N1cHBvcnQvbWtpbnN0YWxsCi0gCQkkKERFU1RESVIpJChp bmNsdWRlZGlyKS9yZWFkbGluZSAkKERFU1RESVIpJChsaWJkaXIpIFwKLSAJCSQoREVTVERJUikk KGluZm9kaXIpICQoREVTVERJUikkKG1hbjNkaXIpCi0gCi0tdW5pbnN0YWxsOiB1bmluc3RhbGwt aGVhZGVycyB1bmluc3RhbGwtZG9jCi0rdW5pbnN0YWxsOiB1bmluc3RhbGwtaGVhZGVycyB1bmlu c3RhbGwtZG9jIHVuaW5zdGFsbC1leGFtcGxlcwotIAktdGVzdCAtbiAiJChERVNURElSKSQobGli ZGlyKSIgJiYgY2QgJChERVNURElSKSQobGliZGlyKSAmJiBcCi0gCQkke1JNfSBsaWJyZWFkbGlu ZS5hIGxpYnJlYWRsaW5lLm9sZCBsaWJoaXN0b3J5LmEgbGliaGlzdG9yeS5vbGQgJChTSEFSRURf TElCUykKLSAJLSggY2Qgc2hsaWI7ICR7TUFLRX0gJHtNRkxBR1N9IERFU1RESVI9JHtERVNURElS fSB1bmluc3RhbGwgKQotQEAgLTI2MSw2ICsyNTgsMTIgQEAgaW5zdGFsbC1zaGFyZWQ6IGluc3Rh bGxkaXJzIGluc3RhbGwtaGVhZAotIHVuaW5zdGFsbC1zaGFyZWQ6IG1heWJlLXVuaW5zdGFsbC1o ZWFkZXJzCi0gCS0oIGNkIHNobGliOyAke01BS0V9ICR7TUZMQUdTfSBERVNURElSPSR7REVTVERJ Un0gdW5pbnN0YWxsICkKLSAKLStpbnN0YWxsLWV4YW1wbGVzOiBpbnN0YWxsZGlycyBpbnN0YWxs LWhlYWRlcnMgc2hhcmVkCi0rCS0oIGNkIGV4YW1wbGVzIDsgJHtNQUtFfSAke01GTEFHU30gREVT VERJUj0ke0RFU1RESVJ9IGluc3RhbGwgKQotKwkKLSt1bmluc3RhbGwtZXhhbXBsZXM6IG1heWJl LXVuaW5zdGFsbC1oZWFkZXJzCi0rCS0oIGNkIGV4YW1wbGVzOyAke01BS0V9ICR7TUZMQUdTfSBE RVNURElSPSR7REVTVERJUn0gdW5pbnN0YWxsICkKLSsKLSBpbnN0YWxsLWRvYzoJaW5zdGFsbGRp cnMKLSAJLSggaWYgdGVzdCAtZCBkb2MgOyB0aGVuIFwKLSAJCWNkIGRvYyAmJiBcCi1AQCAtMjc0 LDEwICsyNzcsMTAgQEAgdW5pbnN0YWxsLWRvYzoKLSAJICBmaSApCi0gCi0gVEFHUzoJZm9yY2UK LS0JJChFVEFHUykgJChDU09VUkNFUykgJChIU09VUkNFUykKLSsJLSggY2QgJChzcmNkaXIpICYm ICQoRVRBR1MpICQoQ1NPVVJDRVMpICQoSFNPVVJDRVMpICkKLSAKLSB0YWdzOglmb3JjZQotLQkk KENUQUdTKSAkKENTT1VSQ0VTKSAkKEhTT1VSQ0VTKQotKwktKCBjZCAkKHNyY2RpcikgJiYgJChD VEFHUykgJChDU09VUkNFUykgJChIU09VUkNFUykgKQotIAotIGNsZWFuOglmb3JjZQotIAkkKFJN KSAkKE9CSkVDVFMpICQoU1RBVElDX0xJQlMpCi1AQCAtMjk5LDEyICszMDIsMTQgQEAgZGlzdGNs ZWFuIG1haW50YWluZXItY2xlYW46IGNsZWFuCi0gCSQoUk0pICQoQ1JFQVRFRF9DT05GSUdVUkUp Ci0gCSQoUk0pICQoQ1JFQVRFRF9UQUdTKQotIAotLWluZm8gZHZpIGh0bWwgcGRmOgotK2luZm8g ZHZpIGh0bWwgcGRmIHBzOgotIAktKCBjZCBkb2MgJiYgJChNQUtFKSAkKE1GTEFHUykgJEAgKQot IAotIGluc3RhbGwtaW5mbzoKLStpbnN0YWxsLWR2aToKLSBpbnN0YWxsLWh0bWw6Ci0gaW5zdGFs bC1wZGY6Ci0raW5zdGFsbC1wczoKLSBjaGVjazoKLSBpbnN0YWxsY2hlY2s6Ci0gCi1AQCAtNDE3 LDcgKzQyMiw3IEBAIHZpX21vZGUubzogcmxkZWZzLmggJHtCVUlMRF9ESVJ9L2NvbmZpZy4KLSB2 aV9tb2RlLm86IHJlYWRsaW5lLmgga2V5bWFwcy5oIHJsdHlwZWRlZnMuaCBjaGFyZGVmcy5oIHRp bGRlLmgKLSB2aV9tb2RlLm86IGhpc3RvcnkuaCBhbnNpX3N0ZGxpYi5oIHJsc3RkYy5oCi0geG1h bGxvYy5vOiAke0JVSUxEX0RJUn0vY29uZmlnLmgKLS14bWFsbG9jLm86IGFuc2lfc3RkbGliLmgg cmVhZGxpbmUuaAotK3htYWxsb2MubzogYW5zaV9zdGRsaWIuaAotIAotIGJpbmQubzogcmxzaGVs bC5oCi0gaGlzdGZpbGUubzogcmxzaGVsbC5oCi1AQCAtNDc0LDYgKzQ3OSw3IEBAIHRpbGRlLm86 IHhtYWxsb2MuaAotIHVuZG8ubzogeG1hbGxvYy5oCi0gdXRpbC5vOiB4bWFsbG9jLmgKLSB2aV9t b2RlLm86IHhtYWxsb2MuaAotK3hmcmVlLm86IHhtYWxsb2MuaCByZWFkbGluZS5oCi0geG1hbGxv Yy5vOiB4bWFsbG9jLmgKLSAKLSBjb21wbGV0ZS5vOiBybG1idXRpbC5oCi1AQCAtNTE1LDYgKzUy MSw3IEBAIHRpbGRlLm86ICQoc3JjZGlyKS90aWxkZS5jCi0gdW5kby5vOiAkKHNyY2RpcikvdW5k by5jCi0gdXRpbC5vOiAkKHNyY2RpcikvdXRpbC5jCi0gdmlfbW9kZS5vOiAkKHNyY2Rpcikvdmlf bW9kZS5jCi0reGZyZWUubzogJChzcmNkaXIpL3hmcmVlLmMKLSB4bWFsbG9jLm86ICQoc3JjZGly KS94bWFsbG9jLmMKLSAKLSBoaXN0ZXhwYW5kLm86ICQoc3JjZGlyKS9oaXN0ZXhwYW5kLmMKLUBA IC01NDksNiArNTU2LDcgQEAgdGlsZGUubzogdGlsZGUuYwotIHVuZG8ubzogdW5kby5jCi0gdXRp bC5vOiB1dGlsLmMKLSB2aV9tb2RlLm86IHZpX21vZGUuYwotK3hmcmVlLm86IHhmcmVlLmMKLSB4 bWFsbG9jLm86IHhtYWxsb2MuYwotIAotIGhpc3RleHBhbmQubzogaGlzdGV4cGFuZC5jCi1JbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9ORVdTCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL05FV1MJMjAxMS0wNy0wMyAxMDo0MDo1My4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL05FV1MJMjAx MS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDMyICsxLDE5IEBACi0tVGhp cyBpcyBhIHRlcnNlIGRlc2NyaXB0aW9uIG9mIHRoZSBuZXcgZmVhdHVyZXMgYWRkZWQgdG8gcmVh ZGxpbmUtNS4xIHNpbmNlCi0tdGhlIHJlbGVhc2Ugb2YgcmVhZGxpbmUtNS4wLgotK1RoaXMgaXMg YSB0ZXJzZSBkZXNjcmlwdGlvbiBvZiB0aGUgbmV3IGZlYXR1cmVzIGFkZGVkIHRvIHJlYWRsaW5l LTYuMiBzaW5jZQotK3RoZSByZWxlYXNlIG9mIHJlYWRsaW5lLTYuMS4KLSAKLS0xLiAgTmV3IEZl YXR1cmVzIGluIFJlYWRsaW5lCi0rYS4gIFRoZSBoaXN0b3J5IGxpYnJhcnkgZG9lcyBub3QgdHJ5 IHRvIHdyaXRlIHRoZSBoaXN0b3J5IGZpbGVuYW1lIGluIHRoZQotKyAgICBjdXJyZW50IGRpcmVj dG9yeSBpZiAkSE9NRSBpcyB1bnNldC4gIFRoaXMgY2xvc2VzIGEgcG90ZW50aWFsIHNlY3VyaXR5 Ci0rICAgIHByb2JsZW0gaWYgdGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHNwZWNpZnkgYSBoaXN0 b3J5IGZpbGVuYW1lLgotIAotLWEuICBUaGUga2V5IHNlcXVlbmNlIHNlbnQgYnkgdGhlIGtleXBh ZCBgZGVsZXRlJyBrZXkgaXMgbm93IGF1dG9tYXRpY2FsbHkgICAKLS0gICAgYm91bmQgdG8gZGVs ZXRlLWNoYXIuCi0rYi4gIE5ldyBiaW5kYWJsZSB2YXJpYWJsZSBgY29tcGxldGlvbi1kaXNwbGF5 LXdpZHRoJyB0byBzZXQgdGhlIG51bWJlciBvZgotKyAgICBjb2x1bW5zIHVzZWQgd2hlbiBkaXNw bGF5aW5nIGNvbXBsZXRpb25zLgotIAotLWIuICBBIG5lZ2F0aXZlIGFyZ3VtZW50IHRvIG1lbnUt Y29tcGxldGUgbm93IGN5Y2xlcyBiYWNrd2FyZCB0aHJvdWdoIHRoZQotLSAgICBjb21wbGV0aW9u IGxpc3QuCi0rYy4gIE5ldyBiaW5kYWJsZSB2YXJpYWJsZSBgY29tcGxldGlvbi1jYXNlLW1hcCcg dG8gY2F1c2UgY2FzZS1pbnNlbnNpdGl2ZQotKyAgICBjb21wbGV0aW9uIHRvIHRyZWF0IGAtJyBh bmQgYF8nIGFzIGlkZW50aWNhbC4KLSAKLS1jLiAgQSBuZXcgYmluZGFibGUgcmVhZGxpbmUgdmFy aWFibGU6ICBiaW5kLXR0eS1zcGVjaWFsLWNoYXJzLiAgSWYgbm9uLXplcm8sCi0tICAgIHJlYWRs aW5lIHdpbGwgYmluZCB0aGUgdGVybWluYWwgc3BlY2lhbCBjaGFyYWN0ZXJzIHRvIHRoZWlyIHJl YWRsaW5lCi0tICAgIGVxdWl2YWxlbnRzIHdoZW4gaXQncyBjYWxsZWQgKG9uIGJ5IGRlZmF1bHQp LgotK2QuICBUaGVyZSBhcmUgbmV3IGJpbmRhYmxlIHZpLW1vZGUgY29tbWFuZCBuYW1lcyB0byBh dm9pZCByZWFkbGluZSdzIGNhc2UtCi0rICAgIGluc2Vuc2l0aXZlIG1hdGNoaW5nIG5vdCBhbGxv d2luZyB0aGVtIHRvIGJlIGJvdW5kIHNlcGFyYXRlbHkuCi0gCi0tZC4gIE5ldyBiaW5kYWJsZSBj b21tYW5kOiB2aS1ydWJvdXQuICBTYXZlcyBkZWxldGVkIHRleHQgZm9yIHBvc3NpYmxlICAKLS0g ICAgcmVpbnNlcnRpb24sIGFzIHdpdGggYW55IHZpLW1vZGUgYHRleHQgbW9kaWZpY2F0aW9uJyBj b21tYW5kOyBgWCcgaXMgYm91bmQKLS0gICAgdG8gdGhpcyBpbiB2aSBjb21tYW5kIG1vZGUuCi0t Ci0tZS4gIElmIHRoZSBybF9jb21wbGV0aW9uX3F1ZXJ5X2l0ZW1zIGlzIHNldCB0byBhIHZhbHVl IDwgMCwgcmVhZGxpbmUgbmV2ZXIKLS0gICAgYXNrcyB0aGUgdXNlciB3aGV0aGVyIG9yIG5vdCB0 byB2aWV3IHRoZSBwb3NzaWJsZSBjb21wbGV0aW9ucy4KLS0KLS1mLiAgTmV3IGFwcGxpY2F0aW9u LWNhbGxhYmxlIGF1eGlsaWFyeSBmdW5jdGlvbiwgcmxfdmFyaWFibGVfdmFsdWUsIHJldHVybnMK LS0gICAgYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBhIHJlYWRsaW5lIHZhcmlhYmxlJ3MgdmFs dWUuCi0tCi0tZy4gIFdoZW4gcGFyc2luZyBpbnB1dHJjIGZpbGVzIGFuZCB2YXJpYWJsZSBiaW5k aW5nIGNvbW1hbmRzLCB0aGUgcGFyc2VyCi0tICAgIHN0cmlwcyB0cmFpbGluZyB3aGl0ZXNwYWNl IGZyb20gdmFsdWVzIGFzc2lnbmVkIHRvIGJvb2xlYW4gdmFyaWFibGVzCi0tICAgIGJlZm9yZSBj aGVja2luZyB0aGVtLgotLQotLWguICBBIG5ldyBleHRlcm5hbCBhcHBsaWNhdGlvbi1jb250cm9s bGFibGUgdmFyaWFibGUgdGhhdCBhbGxvd3MgdGhlIExJTkVTCi0tICAgIGFuZCBDT0xVTU5TIGVu dmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgdGhlIHdpbmRvdyBzaXplIHJlZ2FyZGxlc3Mgb2YK LS0gICAgd2hhdCB0aGUga2VybmVsIHJldHVybnMuCi0rZS4gIE5ldyBiaW5kYWJsZSB2YXJpYWJs ZSBgbWVudS1jb21wbGV0ZS1kaXNwbGF5LXByZWZpeCcgY2F1c2VzIHRoZSBtZW51Ci0rICAgIGNv bXBsZXRpb24gY29kZSB0byBkaXNwbGF5IHRoZSBjb21tb24gcHJlZml4IG9mIHRoZSBwb3NzaWJs ZSBjb21wbGV0aW9ucwotKyAgICBiZWZvcmUgY3ljbGluZyB0aHJvdWdoIHRoZSBsaXN0LCBpbnN0 ZWFkIG9mIGFmdGVyLgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvUkVBRE1F Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL1JFQURN RQkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAx MTA3MDMvcmVhZGxpbmUvUkVBRE1FCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAw Ci1AQCAtMSw3ICsxLDcgQEAKLSBJbnRyb2R1Y3Rpb24KLSA9PT09PT09PT09PT0KLSAKLS1UaGlz IGlzIHRoZSBHbnUgUmVhZGxpbmUgbGlicmFyeSwgdmVyc2lvbiA1LjEuCi0rVGhpcyBpcyB0aGUg R251IFJlYWRsaW5lIGxpYnJhcnksIHZlcnNpb24gNi4yLgotIAotIFRoZSBSZWFkbGluZSBsaWJy YXJ5IHByb3ZpZGVzIGEgc2V0IG9mIGZ1bmN0aW9ucyBmb3IgdXNlIGJ5IGFwcGxpY2F0aW9ucwot IHRoYXQgYWxsb3cgdXNlcnMgdG8gZWRpdCBjb21tYW5kIGxpbmVzIGFzIHRoZXkgYXJlIHR5cGVk IGluLiAgQm90aAotQEAgLTE2LDggKzE2LDkgQEAgbWF5IGJlIHVzZWQgd2l0aG91dCBSZWFkbGlu ZSBpbiBhcHBsaWNhdAotIGNhcGFiaWxpdGllcy4KLSAKLSBUaGUgUmVhZGxpbmUgbGlicmFyeSBp cyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YKLS10aGUgW0dO VV0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLiAgRm9yIG1vcmUgaW5mb3JtYXRp b24sIHNlZQotLXRoZSBmaWxlIENPUFlJTkcuCi0rdGhlIFtHTlVdIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0rRm91bmRhdGlvbiwgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLStm aWxlIENPUFlJTkcuCi0gCi0gVG8gYnVpbGQgdGhlIGxpYnJhcnksIHRyeSB0eXBpbmcgYC4vY29u ZmlndXJlJywgdGhlbiBgbWFrZScuICBUaGUKLSBjb25maWd1cmF0aW9uIHByb2Nlc3MgaXMgYXV0 b21hdGVkLCBzbyBubyBmdXJ0aGVyIGludGVydmVudGlvbiBzaG91bGQKLUBAIC0xODMsNCArMTg0 LDQgQEAgbGlzdCAobWlycm9yZWQgdG8gdGhlIFVzZW5ldCBuZXdzZ3JvdXAgZwotIFJlYWRsaW5l IGJ1ZyByZXBvcnRzIGFuZCBmaXhlcy4gCi0gCi0gQ2hldCBSYW1leQotLWNoZXRAcG8uY3dydS5l ZHUKLStjaGV0LnJhbWV5QGNhc2UuZWR1Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFk bGluZS9hY2xvY2FsLm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmln L3JlYWRsaW5lL2FjbG9jYWwubTQJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2FjbG9jYWwubTQJMjAxMS0wNy0wMyAx MDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC04MCw2ICs4MCw5IEBAIEFDX0NBQ0hFX1ZBTChi YXNoX2N2X3R5cGVfJDEsCi0gI2lmIEhBVkVfSU5UVFlQRVNfSAotICNpbmNsdWRlIDxpbnR0eXBl cy5oPgotICNlbmRpZgotKyNpZiBIQVZFX1NURElOVF9ICi0rI2luY2x1ZGUgPHN0ZGludC5oPgot KyNlbmRpZgotICQyCi0gXSwgYmFzaF9jdl90eXBlXyQxPXllcywgYmFzaF9jdl90eXBlXyQxPW5v KV0pCi0gQUNfTVNHX1JFU1VMVCgkYmFzaF9jdl90eXBlXyQxKQotQEAgLTIxNSw3ICsyMTgsNyBA QCBBQ19DQUNIRV9WQUwoYmFzaF9jdl9zeXNfc2lnbGlzdCwKLSAjaWZkZWYgSEFWRV9VTklTVERf SAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjZW5kaWYKLS0jaWZuZGVmIFNZU19TSUdMSVNUX0RF Q0xBUkVECi0rI2lmICFIQVZFX0RFQ0xfU1lTX1NJR0xJU1QKLSBleHRlcm4gY2hhciAqc3lzX3Np Z2xpc3RbXTsKLSAjZW5kaWYKLSBtYWluKCkKLUBAIC0zMzYsMTggKzMzOSwxOCBAQCBtYWluKCkK LSB7Ci0gRElSICpkaXI7Ci0gaW50IGZkLCBlcnI7Ci0tZXJyID0gbWtkaXIoIi90bXAvYmFzaC1h Y2xvY2FsIiwgMDcwMCk7Ci0rZXJyID0gbWtkaXIoImJhc2gtYWNsb2NhbCIsIDA3MDApOwotIGlm IChlcnIgPCAwKSB7Ci0gICBwZXJyb3IoIm1rZGlyIik7Ci0gICBleGl0KDEpOwotIH0KLS11bmxp bmsoIi90bXAvYmFzaC1hY2xvY2FsL25vdF9hX2RpcmVjdG9yeSIpOwotLWZkID0gb3BlbigiL3Rt cC9iYXNoLWFjbG9jYWwvbm90X2FfZGlyZWN0b3J5IiwgT19XUk9OTFl8T19DUkVBVHxPX0VYQ0ws IDA2NjYpOwotK3VubGluaygiYmFzaC1hY2xvY2FsL25vdF9hX2RpcmVjdG9yeSIpOwotK2ZkID0g b3BlbigiYmFzaC1hY2xvY2FsL25vdF9hX2RpcmVjdG9yeSIsIE9fV1JPTkxZfE9fQ1JFQVR8T19F WENMLCAwNjY2KTsKLSB3cml0ZShmZCwgIlxuIiwgMSk7Ci0gY2xvc2UoZmQpOwotLWRpciA9IG9w ZW5kaXIoIi90bXAvYmFzaC1hY2xvY2FsL25vdF9hX2RpcmVjdG9yeSIpOwotLXVubGluaygiL3Rt cC9iYXNoLWFjbG9jYWwvbm90X2FfZGlyZWN0b3J5Iik7Ci0tcm1kaXIoIi90bXAvYmFzaC1hY2xv Y2FsIik7Ci0rZGlyID0gb3BlbmRpcigiYmFzaC1hY2xvY2FsL25vdF9hX2RpcmVjdG9yeSIpOwot K3VubGluaygiYmFzaC1hY2xvY2FsL25vdF9hX2RpcmVjdG9yeSIpOwotK3JtZGlyKCJiYXNoLWFj bG9jYWwiKTsKLSBleGl0IChkaXIgPT0gMCk7Ci0gfV0sIGJhc2hfY3Zfb3BlbmRpcl9ub3Rfcm9i dXN0PXllcyxiYXNoX2N2X29wZW5kaXJfbm90X3JvYnVzdD1ubywKLSAgICAgW0FDX01TR19XQVJO KGNhbm5vdCBjaGVjayBvcGVuZGlyIGlmIGNyb3NzIGNvbXBpbGluZyAtLSBkZWZhdWx0aW5nIHRv IG5vKQotQEAgLTUzMSw2ICs1MzQsMTggQEAgQUNfREVGSU5FKFJMSU1UWVBFLCBybGltX3QpCi0g ZmkKLSBdKQotIAotK0FDX0RFRlVOKEJBU0hfVFlQRV9TSUdfQVRPTUlDX1QsCi0rW0FDX0NBQ0hF X0NIRUNLKFtmb3Igc2lnX2F0b21pY190IGluIHNpZ25hbC5oXSwgYWNfY3ZfaGF2ZV9zaWdfYXRv bWljX3QsCi0rW0FDX1RSWV9MSU5LKFsKLSsjaW5jbHVkZSA8c2lnbmFsLmg+Ci0rXSxbIHNpZ19h dG9taWNfdCB4OyBdLAotK2FjX2N2X2hhdmVfc2lnX2F0b21pY190PXllcywgYWNfY3ZfaGF2ZV9z aWdfYXRvbWljX3Q9bm8pXSkKLStpZiB0ZXN0ICIkYWNfY3ZfaGF2ZV9zaWdfYXRvbWljX3QiID0g Im5vIgotK3RoZW4KLSsgICAgQUNfQ0hFQ0tfVFlQRShzaWdfYXRvbWljX3QsaW50KQotK2ZpCi0r XSkKLSsKLSBBQ19ERUZVTihCQVNIX0ZVTkNfTFNUQVQsCi0gW2RubCBDYW5ub3QgdXNlIEFDX0NI RUNLX0ZVTkNTKGxzdGF0KSBiZWNhdXNlIExpbnV4IGRlZmluZXMgbHN0YXQoKSBhcyBhbgotIGRu bCBpbmxpbmUgZnVuY3Rpb24gaW4gPHN5cy9zdGF0Lmg+LgotQEAgLTY4NSw3ICs3MDAsNyBAQCBm aQotIF0pCi0gCi0gQUNfREVGVU4oQkFTSF9GVU5DX0dFVENXRCwKLS1bQUNfTVNHX0NIRUNLSU5H KFtpZiBnZXRjd2QoKSB3aWxsIGR5bmFtaWNhbGx5IGFsbG9jYXRlIG1lbW9yeV0pCi0rW0FDX01T R19DSEVDS0lORyhbaWYgZ2V0Y3dkKCkgd2lsbCBkeW5hbWljYWxseSBhbGxvY2F0ZSBtZW1vcnkg d2l0aCAwIHNpemVdKQotIEFDX0NBQ0hFX1ZBTChiYXNoX2N2X2dldGN3ZF9tYWxsb2MsCi0gW0FD X1RSWV9SVU4oWwotICNpbmNsdWRlIDxzdGRpby5oPgotQEAgLTkzMyw3ICs5NDgsNyBAQCBBQ19E RUZJTkUoSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTE9DS1MpCi0gZmkKLSBdKQotIAotLUFDX0RFRlVO KEJBU0hfQ0hFQ0tfTElCX1RFUk1DQVAsCi0rQUNfREVGVU4oW0JBU0hfQ0hFQ0tfTElCX1RFUk1D QVBdLAotIFsKLSBpZiB0ZXN0ICJYJGJhc2hfY3ZfdGVybWNhcF9saWIiID0gIlgiOyB0aGVuCi0g X2Jhc2hfbmVlZG1zZz15ZXMKLUBAIC0xNDIzLDE5ICsxNDM4LDE5IEBAIGV4aXQgKDEpOwotICNp ZiBkZWZpbmVkIChOZVhUKQotIGV4aXQgKDEpOwotICNlbmRpZgotLWVyciA9IG1rZGlyKCIvdG1w L2Jhc2gtYWNsb2NhbCIsIDA3MDApOwotK2VyciA9IG1rZGlyKCJiYXNoLWFjbG9jYWwiLCAwNzAw KTsKLSBpZiAoZXJyIDwgMCkgewotICAgcGVycm9yICgibWtkaXIiKTsKLSAgIGV4aXQoMSk7Ci0g fQotLWZkID0gbWtub2QgKCIvdG1wL2Jhc2gtYWNsb2NhbC9zaC1ucC1hdXRvY29uZiIsIDA2NjYg fCBTX0lGSUZPLCAwKTsKLStmZCA9IG1rbm9kICgiYmFzaC1hY2xvY2FsL3NoLW5wLWF1dG9jb25m IiwgMDY2NiB8IFNfSUZJRk8sIDApOwotIGlmIChmZCA9PSAtMSkgewotLSAgcm1kaXIgKCIvdG1w L2Jhc2gtYWNsb2NhbCIpOwotKyAgcm1kaXIgKCJiYXNoLWFjbG9jYWwiKTsKLSAgIGV4aXQgKDEp OwotIH0KLSBjbG9zZShmZCk7Ci0tdW5saW5rICgiL3RtcC9iYXNoLWFjbG9jYWwvc2gtbnAtYXV0 b2NvbmYiKTsKLS1ybWRpciAoIi90bXAvYmFzaC1hY2xvY2FsIik7Ci0rdW5saW5rICgiYmFzaC1h Y2xvY2FsL3NoLW5wLWF1dG9jb25mIik7Ci0rcm1kaXIgKCJiYXNoLWFjbG9jYWwiKTsKLSBleGl0 KDApOwotIH1dLCBiYXNoX2N2X3N5c19uYW1lZF9waXBlcz1wcmVzZW50LCBiYXNoX2N2X3N5c19u YW1lZF9waXBlcz1taXNzaW5nLAotICAgICBbQUNfTVNHX1dBUk4oY2Fubm90IGNoZWNrIGZvciBu YW1lZCBwaXBlcyBpZiBjcm9zcy1jb21waWxpbmcgLS0gZGVmYXVsdGluZyB0byBtaXNzaW5nKQot QEAgLTE1NDAsMjAgKzE1NTUsMjIgQEAgZmkKLSBBQ19ERUZVTihCQVNIX0NIRUNLX0RFVl9GRCwK LSBbQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgL2Rldi9mZCBpcyBhdmFpbGFibGUpCi0gQUNfQ0FD SEVfVkFMKGJhc2hfY3ZfZGV2X2ZkLAotLVtpZiB0ZXN0IC1kIC9kZXYvZmQgICYmIHRlc3QgLXIg L2Rldi9mZC8wIDwgL2Rldi9udWxsOyB0aGVuCi0rW2Jhc2hfY3ZfZGV2X2ZkPSIiCi0raWYgdGVz dCAtZCAvZGV2L2ZkICAmJiAoZXhlYyB0ZXN0IC1yIC9kZXYvZmQvMCA8IC9kZXYvbnVsbCkgOyB0 aGVuCi0gIyBjaGVjayBmb3Igc3lzdGVtcyBsaWtlIEZyZWVCU0QgNSB0aGF0IG9ubHkgcHJvdmlk ZSAvZGV2L2ZkL1swMTJdCi0tICAgZXhlYyAzPCYwCi0tICAgaWYgdGVzdCAtciAvZGV2L2ZkLzM7 IHRoZW4KLSsgICBpZiAoZXhlYyB0ZXN0IC1yIC9kZXYvZmQvMyAzPC9kZXYvbnVsbCkgOyB0aGVu Ci0gICAgICBiYXNoX2N2X2Rldl9mZD1zdGFuZGFyZAotICAgIGVsc2UKLSAgICAgIGJhc2hfY3Zf ZGV2X2ZkPWFic2VudAotICAgIGZpCi0tICAgZXhlYyAzPCYtCi0tIGVsaWYgdGVzdCAtZCAvcHJv Yy9zZWxmL2ZkICYmIHRlc3QgLXIgL3Byb2Mvc2VsZi9mZC8wIDwgL2Rldi9udWxsOyB0aGVuCi0t ICAgYmFzaF9jdl9kZXZfZmQ9d2hhY2t5Ci0tIGVsc2UKLS0gICBiYXNoX2N2X2Rldl9mZD1hYnNl bnQKLS0gZmkKLStmaQotK2lmIHRlc3QgLXogIiRiYXNoX2N2X2Rldl9mZCIgOyB0aGVuIAotKyAg aWYgdGVzdCAtZCAvcHJvYy9zZWxmL2ZkICYmIChleGVjIHRlc3QgLXIgL3Byb2Mvc2VsZi9mZC8w IDwgL2Rldi9udWxsKSA7IHRoZW4KLSsgICAgYmFzaF9jdl9kZXZfZmQ9d2hhY2t5Ci0rICBlbHNl Ci0rICAgIGJhc2hfY3ZfZGV2X2ZkPWFic2VudAotKyAgZmkKLStmaQotIF0pCi0gQUNfTVNHX1JF U1VMVCgkYmFzaF9jdl9kZXZfZmQpCi0gaWYgdGVzdCAkYmFzaF9jdl9kZXZfZmQgPSAic3RhbmRh cmQiOyB0aGVuCi1AQCAtMTU2OCw5ICsxNTg1LDkgQEAgZmkKLSBBQ19ERUZVTihCQVNIX0NIRUNL X0RFVl9TVERJTiwKLSBbQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgL2Rldi9zdGRpbiBzdGRvdXQg c3RkZXJyIGFyZSBhdmFpbGFibGUpCi0gQUNfQ0FDSEVfVkFMKGJhc2hfY3ZfZGV2X3N0ZGluLAot LVtpZiB0ZXN0IC1kIC9kZXYvZmQgJiYgdGVzdCAtciAvZGV2L3N0ZGluIDwgL2Rldi9udWxsOyB0 aGVuCi0rW2lmIHRlc3QgLWQgL2Rldi9mZCAmJiAoZXhlYyB0ZXN0IC1yIC9kZXYvc3RkaW4gPCAv ZGV2L251bGwpIDsgdGhlbgotICAgIGJhc2hfY3ZfZGV2X3N0ZGluPXByZXNlbnQKLS0gZWxpZiB0 ZXN0IC1kIC9wcm9jL3NlbGYvZmQgJiYgdGVzdCAtciAvZGV2L3N0ZGluIDwgL2Rldi9udWxsOyB0 aGVuCi0rIGVsaWYgdGVzdCAtZCAvcHJvYy9zZWxmL2ZkICYmIChleGVjIHRlc3QgLXIgL2Rldi9z dGRpbiA8IC9kZXYvbnVsbCkgOyB0aGVuCi0gICAgYmFzaF9jdl9kZXZfc3RkaW49cHJlc2VudAot ICBlbHNlCi0gICAgYmFzaF9jdl9kZXZfc3RkaW49YWJzZW50Ci1AQCAtMTY2NywzNyArMTY4NCwz OSBAQCBmaQotIGRubAotIGRubCBjaGVjayBmb3IgYXZhaWxhYmlsaXR5IG9mIG11bHRpYnl0ZSBj aGFyYWN0ZXJzIGFuZCBmdW5jdGlvbnMKLSBkbmwKLStkbmwgZ2VleiwgSSB3aXNoIEkgZGlkbid0 IGhhdmUgdG8gY2hlY2sgZm9yIGFsbCBvZiB0aGlzIHN0dWZmIHNlcGFyYXRlbHkKLStkbmwKLSBB Q19ERUZVTihCQVNIX0NIRUNLX01VTFRJQllURSwKLSBbCi0gQUNfQ0hFQ0tfSEVBREVSUyh3Y3R5 cGUuaCkKLSBBQ19DSEVDS19IRUFERVJTKHdjaGFyLmgpCi0gQUNfQ0hFQ0tfSEVBREVSUyhsYW5n aW5mby5oKQotIAotLUFDX0NIRUNLX0ZVTkMobWJzcnRvd2NzLCBBQ19ERUZJTkUoSEFWRV9NQlNS VE9XQ1MpKQotLUFDX0NIRUNLX0ZVTkMobWJydG93YywgQUNfREVGSU5FKEhBVkVfTUJSVE9XQykp Ci0gQUNfQ0hFQ0tfRlVOQyhtYnJsZW4sIEFDX0RFRklORShIQVZFX01CUkxFTikpCi0tQUNfQ0hF Q0tfRlVOQyh3Y3RvbWIsIEFDX0RFRklORShIQVZFX1dDVE9NQikpCi0tQUNfQ0hFQ0tfRlVOQyh3 Y3dpZHRoLCBBQ19ERUZJTkUoSEFWRV9XQ1dJRFRIKSkKLStBQ19DSEVDS19GVU5DKG1ic2Nhc2Vj bXAsIEFDX0RFRklORShIQVZFX01CU0NNUCkpCi0rQUNfQ0hFQ0tfRlVOQyhtYnNjbXAsIEFDX0RF RklORShIQVZFX01CU0NNUCkpCi0rQUNfQ0hFQ0tfRlVOQyhtYnNucnRvd2NzLCBBQ19ERUZJTkUo SEFWRV9NQlNOUlRPV0NTKSkKLStBQ19DSEVDS19GVU5DKG1ic3J0b3djcywgQUNfREVGSU5FKEhB VkVfTUJTUlRPV0NTKSkKLSsKLSsKLStBQ19SRVBMQUNFX0ZVTkNTKG1ic2NocikKLSsKLStBQ19D SEVDS19GVU5DKHdjcnRvbWIsIEFDX0RFRklORShIQVZFX1dDUlRPTUIpKQotK0FDX0NIRUNLX0ZV TkMod2NzY29sbCwgQUNfREVGSU5FKEhBVkVfV0NTQ09MTCkpCi0gQUNfQ0hFQ0tfRlVOQyh3Y3Nk dXAsIEFDX0RFRklORShIQVZFX1dDU0RVUCkpCi0rQUNfQ0hFQ0tfRlVOQyh3Y3dpZHRoLCBBQ19E RUZJTkUoSEFWRV9XQ1dJRFRIKSkKLStBQ19DSEVDS19GVU5DKHdjdHlwZSwgQUNfREVGSU5FKEhB VkVfV0NUWVBFKSkKLSAKLS1pZiB0ZXN0ICIkYWNfY3ZfZnVuY193Y3dpZHRoIiA9IG5vICYmIHRl c3QgIiRhY19jdl9oZWFkZXJfd2NoYXJfaCIgPSB5ZXM7IHRoZW4KLS0gIFdDV0lEVEhfT0JKPXdj d2lkdGgubwotLWVsc2UKLS0gIFdDV0lEVEhfT0JKPQotLWZpCi0tQUNfU1VCU1QoV0NXSURUSF9P QkopCi0rQUNfUkVQTEFDRV9GVU5DUyh3Y3N3aWR0aCkKLSAKLS1BQ19DQUNIRV9DSEVDSyhbZm9y IG1ic3RhdGVfdF0sIGJhc2hfY3ZfaGF2ZV9tYnN0YXRlX3QsCi0tW0FDX1RSWV9DT01QSUxFKFsK LS0jaW5jbHVkZSA8d2NoYXIuaD5dLCBbCi0tICBtYnN0YXRlX3QgcHM7Ci0tICBtYnN0YXRlX3Qg KnBzcDsKLS0gIHBzcCA9IChtYnN0YXRlX3QgKikwOwotLV0sIGJhc2hfY3ZfaGF2ZV9tYnN0YXRl X3Q9eWVzLCAgYmFzaF9jdl9oYXZlX21ic3RhdGVfdD1ubyldKQotLWlmIHRlc3QgJGJhc2hfY3Zf aGF2ZV9tYnN0YXRlX3QgPSB5ZXM7IHRoZW4KLStkbmwgY2hlY2tzIGZvciBib3RoIG1icnRvd2Mg YW5kIG1ic3RhdGVfdAotK0FDX0ZVTkNfTUJSVE9XQwotK2lmIHRlc3QgJGFjX2N2X2Z1bmNfbWJy dG93YyA9IHllczsgdGhlbgotIAlBQ19ERUZJTkUoSEFWRV9NQlNUQVRFX1QpCi0gZmkKLSAKLStB Q19DSEVDS19GVU5DUyhpc3dsb3dlciBpc3d1cHBlciB0b3dsb3dlciB0b3d1cHBlciBpc3djdHlw ZSkKLSsKLSBBQ19DQUNIRV9DSEVDSyhbZm9yIG5sX2xhbmdpbmZvIGFuZCBDT0RFU0VUXSwgYmFz aF9jdl9sYW5naW5mb19jb2Rlc2V0LAotIFtBQ19UUllfTElOSygKLSBbI2luY2x1ZGUgPGxhbmdp bmZvLmg+XSwKLUBAIC0xNzA3LDYgKzE3MjYsNTAgQEAgaWYgdGVzdCAkYmFzaF9jdl9sYW5naW5m b19jb2Rlc2V0ID0geWVzOwotICAgQUNfREVGSU5FKEhBVkVfTEFOR0lORk9fQ09ERVNFVCkKLSBm aQotIAotK2RubCBjaGVjayBmb3Igd2NoYXJfdCBpbiA8d2NoYXIuaD4KLStBQ19DQUNIRV9DSEVD SyhbZm9yIHdjaGFyX3QgaW4gd2NoYXIuaF0sIGJhc2hfY3ZfdHlwZV93Y2hhcl90LAotK1tBQ19U UllfQ09NUElMRSgKLStbI2luY2x1ZGUgPHdjaGFyLmg+Ci0rXSwKLStbCi0rICAgICAgICB3Y2hh cl90IGZvbzsKLSsgICAgICAgIGZvbyA9IDA7Ci0rXSwgYmFzaF9jdl90eXBlX3djaGFyX3Q9eWVz LCBiYXNoX2N2X3R5cGVfd2NoYXJfdD1ubyldKQotK2lmIHRlc3QgJGJhc2hfY3ZfdHlwZV93Y2hh cl90ID0geWVzOyB0aGVuCi0rICAgICAgICBBQ19ERUZJTkUoSEFWRV9XQ0hBUl9ULCAxLCBbc3lz dGVtcyBzaG91bGQgZGVmaW5lIHRoaXMgdHlwZSBoZXJlXSkKLStmaQotKwotK2RubCBjaGVjayBm b3Igd2N0eXBlX3QgaW4gPHdjdHlwZS5oPgotK0FDX0NBQ0hFX0NIRUNLKFtmb3Igd2N0eXBlX3Qg aW4gd2N0eXBlLmhdLCBiYXNoX2N2X3R5cGVfd2N0eXBlX3QsCi0rW0FDX1RSWV9DT01QSUxFKAot K1sjaW5jbHVkZSA8d2N0eXBlLmg+XSwKLStbCi0rICAgICAgICB3Y3R5cGVfdCBmb287Ci0rICAg ICAgICBmb28gPSAwOwotK10sIGJhc2hfY3ZfdHlwZV93Y3R5cGVfdD15ZXMsIGJhc2hfY3ZfdHlw ZV93Y3R5cGVfdD1ubyldKQotK2lmIHRlc3QgJGJhc2hfY3ZfdHlwZV93Y3R5cGVfdCA9IHllczsg dGhlbgotKyAgICAgICAgQUNfREVGSU5FKEhBVkVfV0NUWVBFX1QsIDEsIFtzeXN0ZW1zIHNob3Vs ZCBkZWZpbmUgdGhpcyB0eXBlIGhlcmVdKQotK2ZpCi0rCi0rZG5sIGNoZWNrIGZvciB3aW50X3Qg aW4gPHdjdHlwZS5oPgotK0FDX0NBQ0hFX0NIRUNLKFtmb3Igd2ludF90IGluIHdjdHlwZS5oXSwg YmFzaF9jdl90eXBlX3dpbnRfdCwKLStbQUNfVFJZX0NPTVBJTEUoCi0rWyNpbmNsdWRlIDx3Y3R5 cGUuaD5dLAotK1sKLSsgICAgICAgIHdpbnRfdCBmb287Ci0rICAgICAgICBmb28gPSAwOwotK10s IGJhc2hfY3ZfdHlwZV93aW50X3Q9eWVzLCBiYXNoX2N2X3R5cGVfd2ludF90PW5vKV0pCi0raWYg dGVzdCAkYmFzaF9jdl90eXBlX3dpbnRfdCA9IHllczsgdGhlbgotKyAgICAgICAgQUNfREVGSU5F KEhBVkVfV0lOVF9ULCAxLCBbc3lzdGVtcyBzaG91bGQgZGVmaW5lIHRoaXMgdHlwZSBoZXJlXSkK LStmaQotKwotK2lmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiA9IHllczsgdGhlbgotKwlPTERM SUJTPSIkTElCUyIKLSsJTElCUz0iJExJQlMgJExJQklDT05WIgotKwlBQ19DSEVDS19GVU5DUyhs b2NhbGVfY2hhcnNldCkKLSsJTElCUz0iJE9MRExJQlMiCi0rZmkKLSsKLSBdKQotIAotIGRubCBu ZWVkOiBwcmVmaXggZXhlY19wcmVmaXggbGliZGlyIGluY2x1ZGVkaXIgQ0MgVEVSTUNBUF9MSUIK LUBAIC0xNzE0LDcgKzE3NzcsNyBAQCBkbmwgcmVxdWlyZToKLSBkbmwJQUNfUFJPR19DQwotIGRu bAlCQVNIX0NIRUNLX0xJQl9URVJNQ0FQCi0gCi0tQUNfREVGVU4oUkxfTElCX1JFQURMSU5FX1ZF UlNJT04sCi0rQUNfREVGVU4oW1JMX0xJQl9SRUFETElORV9WRVJTSU9OXSwKLSBbCi0gQUNfUkVR VUlSRShbQkFTSF9DSEVDS19MSUJfVEVSTUNBUF0pCi0gCi1AQCAtMjMzMSw3ICsyMzk0LDcgQEAg QUNfREVGVU4oW0FNX0lOVExfU1VCRElSXSwKLSAgIEFDX0NIRUNLX0hFQURFUlMoW2FyZ3ouaCBs aW1pdHMuaCBsb2NhbGUuaCBubF90eXBlcy5oIG1hbGxvYy5oIHN0ZGRlZi5oIFwKLSBzdGRsaWIu aCBzdHJpbmcuaCB1bmlzdGQuaCBzeXMvcGFyYW0uaF0pCi0gICBBQ19DSEVDS19GVU5DUyhbZmVv Zl91bmxvY2tlZCBmZ2V0c191bmxvY2tlZCBnZXRjX3VubG9ja2VkIGdldGN3ZCBnZXRlZ2lkIFwK LS1nZXRldWlkIGdldGdpZCBnZXR1aWQgbWVtcGNweSBtdW5tYXAgcHV0ZW52IHNldGVudiBzZXRs b2NhbGUgc3RwY3B5IFwKLStnZXRldWlkIGdldGdpZCBnZXR1aWQgbWVtcGNweSBtdW5tYXAgcHV0 ZW52IHNldGVudiBzZXRsb2NhbGUgbG9jYWxlY29udiBzdHBjcHkgXAotIHN0cmNhc2VjbXAgc3Ry ZHVwIHN0cnRvdWwgdHNlYXJjaCBfX2FyZ3pfY291bnQgX19hcmd6X3N0cmluZ2lmeSBfX2FyZ3pf bmV4dCBcCi0gX19mc2V0bG9ja2luZ10pCi0gCi1AQCAtMzk2NCwzICs0MDI3LDE0MyBAQCBBQ19E RUZVTihbam1fQUNfVFlQRV9VTlNJR05FRF9MT05HX0xPTkddCi0gICAgICAgW0RlZmluZSBpZiB5 b3UgaGF2ZSB0aGUgdW5zaWduZWQgbG9uZyBsb25nIHR5cGUuXSkKLSAgIGZpCi0gXSkKLSsKLStk bmwgRnJvbSBnbnVsaWIKLStBQ19ERUZVTihbQkFTSF9GVU5DX0ZQVVJHRV0sCi0rWwotKyAgQUNf Q0hFQ0tfRlVOQ1NfT05DRShbZnB1cmdlXSkKLSsgIEFDX0NIRUNLX0ZVTkNTX09OQ0UoW19fZnB1 cmdlXSkKLSsgIEFDX0NIRUNLX0RFQ0xTKFtmcHVyZ2VdLCAsICwgWyNpbmNsdWRlIDxzdGRpby5o Pl0pCi0rXSkKLSsKLStBQ19ERUZVTihbQkFTSF9GVU5DX1NOUFJJTlRGXSwKLStbCi0rICBBQ19D SEVDS19GVU5DU19PTkNFKFtzbnByaW50Zl0pCi0rICBpZiB0ZXN0IFgkYWNfY3ZfZnVuY19zbnBy aW50ZiA9IFh5ZXM7IHRoZW4KLSsgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBzdGFuZGFyZC1jb25m b3JtYW50IHNucHJpbnRmXSwgW2Jhc2hfY3ZfZnVuY19zbnByaW50Zl0sCi0rICAgICAgW0FDX1RS WV9SVU4oWwotKyNpbmNsdWRlIDxzdGRpby5oPgotKwotK21haW4oKQotK3sKLSsgIGludCBuOwot KyAgbiA9IHNucHJpbnRmICgwLCAwLCAiJXMiLCAiMDEyMzQ1NiIpOwotKyAgZXhpdChuICE9IDcp OwotK30KLStdLCBiYXNoX2N2X2Z1bmNfc25wcmludGY9eWVzLCBiYXNoX2N2X2Z1bmNfc25wcmlu dGY9bm8sCi0rICAgW0FDX01TR19XQVJOKFtjYW5ub3QgY2hlY2sgc3RhbmRhcmQgc25wcmludGYg aWYgY3Jvc3MtY29tcGlsaW5nXSkKLSsgICAgYmFzaF9jdl9mdW5jX3NucHJpbnRmPXllc10KLSsp XSkKLSsgICAgaWYgdGVzdCAkYmFzaF9jdl9mdW5jX3NucHJpbnRmID0gbm87IHRoZW4KLSsgICAg ICBhY19jdl9mdW5jX3NucHJpbnRmPW5vCi0rICAgIGZpCi0rICBmaQotKyAgaWYgdGVzdCAkYWNf Y3ZfZnVuY19zbnByaW50ZiA9IG5vOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX1NOUFJJTlRG LCAwLAotKyAgICAgIFtEZWZpbmUgaWYgeW91IGhhdmUgYSBzdGFuZGFyZC1jb25mb3JtYW50IHNu cHJpbnRmIGZ1bmN0aW9uLl0pCi0rICBmaQotK10pCi0rCi0rQUNfREVGVU4oW0JBU0hfRlVOQ19W U05QUklOVEZdLAotK1sKLSsgIEFDX0NIRUNLX0ZVTkNTX09OQ0UoW3ZzbnByaW50Zl0pCi0rICBp ZiB0ZXN0IFgkYWNfY3ZfZnVuY192c25wcmludGYgPSBYeWVzOyB0aGVuCi0rICAgIEFDX0NBQ0hF X0NIRUNLKFtmb3Igc3RhbmRhcmQtY29uZm9ybWFudCB2c25wcmludGZdLCBbYmFzaF9jdl9mdW5j X3ZzbnByaW50Zl0sCi0rICAgICAgW0FDX1RSWV9SVU4oWwotKyNpZiBIQVZFX1NUREFSR19ICi0r I2luY2x1ZGUgPHN0ZGFyZy5oPgotKyNlbHNlCi0rI2luY2x1ZGUgPHZhcmFyZ3MuaD4KLSsjZW5k aWYKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rCi0rc3RhdGlj IGludAotKyNpZiBIQVZFX1NUREFSR19ICi0rZm9vKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotKyNl bHNlCi0rZm9vKGZvcm1hdCwgdmFfYWxpc3QpCi0rICAgICBjb25zdCBjaGFyICpmb3JtYXQ7Ci0r ICAgICB2YV9kY2wKLSsjZW5kaWYKLSt7Ci0rICB2YV9saXN0IGFyZ3M7Ci0rICBpbnQgbjsKLSsK LSsjaWYgSEFWRV9TVERBUkdfSAotKyAgdmFfc3RhcnQoYXJncywgZm10KTsKLSsjZWxzZQotKyAg dmFfc3RhcnQoYXJncyk7Ci0rI2VuZGlmCi0rICBuID0gdnNucHJpbnRmKDAsIDAsIGZtdCwgYXJn cyk7Ci0rICB2YV9lbmQgKGFyZ3MpOwotKyAgcmV0dXJuIG47Ci0rfQotKwotK21haW4oKQotK3sK LSsgIGludCBuOwotKyAgbiA9IGZvbygiJXMiLCAiMDEyMzQ1NiIpOwotKyAgZXhpdChuICE9IDcp OwotK30KLStdLCBiYXNoX2N2X2Z1bmNfdnNucHJpbnRmPXllcywgYmFzaF9jdl9mdW5jX3ZzbnBy aW50Zj1ubywKLSsgICBbQUNfTVNHX1dBUk4oW2Nhbm5vdCBjaGVjayBzdGFuZGFyZCB2c25wcmlu dGYgaWYgY3Jvc3MtY29tcGlsaW5nXSkKLSsgICAgYmFzaF9jdl9mdW5jX3ZzbnByaW50Zj15ZXNd Ci0rKV0pCi0rICAgIGlmIHRlc3QgJGJhc2hfY3ZfZnVuY192c25wcmludGYgPSBubzsgdGhlbgot KyAgICAgIGFjX2N2X2Z1bmNfdnNucHJpbnRmPW5vCi0rICAgIGZpCi0rICBmaQotKyAgaWYgdGVz dCAkYWNfY3ZfZnVuY192c25wcmludGYgPSBubzsgdGhlbgotKyAgICBBQ19ERUZJTkUoSEFWRV9W U05QUklOVEYsIDAsCi0rICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSBhIHN0YW5kYXJkLWNvbmZv cm1hbnQgdnNucHJpbnRmIGZ1bmN0aW9uLl0pCi0rICBmaQotK10pCi0rCi0rQUNfREVGVU4oQkFT SF9TVFJVQ1RfV0VYSVRTVEFUVVNfT0ZGU0VULAotK1tBQ19NU0dfQ0hFQ0tJTkcoZm9yIG9mZnNl dCBvZiBleGl0IHN0YXR1cyBpbiByZXR1cm4gc3RhdHVzIGZyb20gd2FpdCkKLStBQ19DQUNIRV9W QUwoYmFzaF9jdl93ZXhpdHN0YXR1c19vZmZzZXQsCi0rW0FDX1JVTl9JRkVMU0UoWwotKyNpbmNs dWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rCi0rI2luY2x1ZGUgPHN5cy93 YWl0Lmg+Ci0rCi0rbWFpbihjLCB2KQotKyAgICAgaW50IGM7Ci0rICAgICBjaGFyICoqdjsKLSt7 Ci0rICBwaWRfdCBwaWQsIHA7Ci0rICBpbnQgcywgaSwgbjsKLSsKLSsgIHMgPSAwOwotKyAgcGlk ID0gZm9yaygpOwotKyAgaWYgKHBpZCA9PSAwKQotKyAgICBleGl0ICg0Mik7Ci0rCi0rICAvKiB3 YWl0IGZvciB0aGUgcHJvY2VzcyAqLwotKyAgcCA9IHdhaXQoJnMpOwotKyAgaWYgKHAgIT0gcGlk KQotKyAgICBleGl0ICgyNTUpOwotKwotKyAgLyogY3JhY2sgcyAqLwotKyAgZm9yIChpID0gMDsg aSA8IChzaXplb2YocykgLSA4KTsgaSsrKQotKyAgICB7Ci0rICAgICAgbiA9IChzID4+IGkpICYg MHhmZjsKLSsgICAgICBpZiAobiA9PSA0MikKLSsJZXhpdCAoaSk7Ci0rICAgIH0KLSsKLSsgIGV4 aXQgKDI1NCk7Ci0rfQotK10sIGJhc2hfY3Zfd2V4aXRzdGF0dXNfb2Zmc2V0PTAsIGJhc2hfY3Zf d2V4aXRzdGF0dXNfb2Zmc2V0PSQ/LAotKyAgIFtBQ19NU0dfV0FSTihjYW5ub3QgY2hlY2sgV0VY SVRTVEFUVVMgb2Zmc2V0IGlmIGNyb3NzIGNvbXBpbGluZyAtLSBkZWZhdWx0aW5nIHRvIDApCi0r ICAgIGJhc2hfY3Zfd2V4aXRzdGF0dXNfb2Zmc2V0PTBdCi0rKV0pCi0raWYgdGVzdCAiJGJhc2hf Y3Zfd2V4aXRzdGF0dXNfb2Zmc2V0IiAtZ3QgMzIgOyB0aGVuCi0rICBBQ19NU0dfV0FSTihiYWQg ZXhpdCBzdGF0dXMgZnJvbSB0ZXN0IHByb2dyYW0gLS0gZGVmYXVsdGluZyB0byAwKQotKyAgYmFz aF9jdl93ZXhpdHN0YXR1c19vZmZzZXQ9MAotK2ZpCi0rQUNfTVNHX1JFU1VMVCgkYmFzaF9jdl93 ZXhpdHN0YXR1c19vZmZzZXQpCi0rQUNfREVGSU5FX1VOUVVPVEVEKFtXRVhJVFNUQVRVU19PRkZT RVRdLCBbJGJhc2hfY3Zfd2V4aXRzdGF0dXNfb2Zmc2V0XSwgW09mZnNldCBvZiBleGl0IHN0YXR1 cyBpbiB3YWl0IHN0YXR1cyB3b3JkXSkKLStdKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv cmVhZGxpbmUvYW5zaV9zdGRsaWIuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3 MDMub3JpZy9yZWFkbGluZS9hbnNpX3N0ZGxpYi5oCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9hbnNpX3N0ZGxpYi5o CTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtNiwxOSArNiwxOSBAQAot IAotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBCYXNoLCB0aGUgQm91cm5lIEFnYWluIFNI ZWxsLgotIAotLSAgIEJhc2ggaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgotLSAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCi0tICAgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIKLS0gICB2ZXJzaW9uLgotLQotLSAgIEJhc2ggaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCi0tICAgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKLS0g ICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLS0gICBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFs b25nCi0tICAgd2l0aCBCYXNoOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKLS0gICBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UsIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAgQmFzaCBpcyBmcmVlIHNvZnR3 YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rCi0rICAgQmFzaCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIEJh c2guICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSAK LSAjaWYgIWRlZmluZWQgKF9TVERMSUJfSF8pCi0gI2RlZmluZQlfU1RETElCX0hfIDEKLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2JpbmQuYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9iaW5kLmMJMjAxMS0wNy0wMyAxMDo0MDo1 My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2JpbmQu YwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjMgQEAK LSAvKiBiaW5kLmMgLS0ga2V5IGJpbmRpbmcgYW5kIHN0YXJ0dXAgZmlsZSBzdXBwb3J0IGZvciB0 aGUgcmVhZGxpbmUgbGlicmFyeS4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwNSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAx MCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKLS0gICByZWFkaW5n IGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5n LgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVh ZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50 ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KLSAKLS0gICBUaGUgR05VIFJlYWRs aW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKLS0g ICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJl OiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g Ci0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgUmVhZGxp bmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRl biBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2VwdCBp biBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0gICBo YXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx MSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0gI2RlZmluZSBS RUFETElORV9MSUJSQVJZCi0gCi1AQCAtODAsNyArNzksNyBAQCBzdGF0aWMgaW50IGdsZWFuX2tl eV9mcm9tX25hbWUgUEFSQU1TKChjCi0gc3RhdGljIGludCBmaW5kX2Jvb2xlYW5fdmFyIFBBUkFN UygoY29uc3QgY2hhciAqKSk7Ci0gCi0gc3RhdGljIGNoYXIgKl9ybF9nZXRfc3RyaW5nX3Zhcmlh YmxlX3ZhbHVlIFBBUkFNUygoY29uc3QgY2hhciAqKSk7Ci0tc3RhdGljIGludCBzdWJzdHJpbmdf bWVtYmVyX29mX2FycmF5IFBBUkFNUygoY2hhciAqLCBjb25zdCBjaGFyICoqKSk7Ci0rc3RhdGlj IGludCBzdWJzdHJpbmdfbWVtYmVyX29mX2FycmF5IFBBUkFNUygoY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICogY29uc3QgKikpOwotIAotIHN0YXRpYyBpbnQgY3VycmVudGx5X3JlYWRpbmdfaW5p dF9maWxlOwotIAotQEAgLTMxNyw3ICszMTYsNyBAQCBybF9tYWNyb19iaW5kIChrZXlzZXEsIG1h Y3JvLCBtYXApCi0gCi0gICBpZiAocmxfdHJhbnNsYXRlX2tleXNlcSAobWFjcm8sIG1hY3JvX2tl eXMsICZtYWNyb19rZXlzX2xlbikpCi0gICAgIHsKLS0gICAgICBmcmVlIChtYWNyb19rZXlzKTsK LSsgICAgICB4ZnJlZSAobWFjcm9fa2V5cyk7Ci0gICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0g ICBybF9nZW5lcmljX2JpbmQgKElTTUFDUiwga2V5c2VxLCBtYWNyb19rZXlzLCBtYXApOwotQEAg LTM0Nyw3ICszNDYsNyBAQCBybF9nZW5lcmljX2JpbmQgKHR5cGUsIGtleXNlcSwgZGF0YSwgbWFw Ci0gICBpZiAoa2V5c2VxID09IDAgfHwgKmtleXNlcSA9PSAwKQotICAgICB7Ci0gICAgICAgaWYg KHR5cGUgPT0gSVNNQUNSKQotLQlmcmVlIChkYXRhKTsKLSsJeGZyZWUgKGRhdGEpOwotICAgICAg IHJldHVybiAtMTsKLSAgICAgfQotIAotQEAgLTM1OCw3ICszNTcsNyBAQCBybF9nZW5lcmljX2Jp bmQgKHR5cGUsIGtleXNlcSwgZGF0YSwgbWFwCi0gICAgICBLRVlTIGludG8gS0VZU19MRU4uICov Ci0gICBpZiAocmxfdHJhbnNsYXRlX2tleXNlcSAoa2V5c2VxLCBrZXlzLCAma2V5c19sZW4pKQot ICAgICB7Ci0tICAgICAgZnJlZSAoa2V5cyk7Ci0rICAgICAgeGZyZWUgKGtleXMpOwotICAgICAg IHJldHVybiAtMTsKLSAgICAgfQotIAotQEAgLTM3MCw3ICszNjksMTAgQEAgcmxfZ2VuZXJpY19i aW5kICh0eXBlLCBrZXlzZXEsIGRhdGEsIG1hcAotIAotICAgICAgIGljID0gdWM7Ci0gICAgICAg aWYgKGljIDwgMCB8fCBpYyA+PSBLRVlNQVBfU0laRSkKLS0JcmV0dXJuIC0xOwotKyAgICAgICAg ewotKyAgICAgICAgICB4ZnJlZSAoa2V5cyk7Ci0rCSAgcmV0dXJuIC0xOwotKyAgICAgICAgfQot IAotICAgICAgIGlmIChNRVRBX0NIQVIgKGljKSAmJiBfcmxfY29udmVydF9tZXRhX2NoYXJzX3Rv X2FzY2lpKQotIAl7Ci1AQCAtNDExLDExICs0MTMsMTggQEAgcmxfZ2VuZXJpY19iaW5kICh0eXBl LCBrZXlzZXEsIGRhdGEsIG1hcAotICAgICAgIGVsc2UKLSAJewotIAkgIGlmIChtYXBbaWNdLnR5 cGUgPT0gSVNNQUNSKQotLQkgICAgZnJlZSAoKGNoYXIgKiltYXBbaWNdLmZ1bmN0aW9uKTsKLSsJ ICAgIHhmcmVlICgoY2hhciAqKW1hcFtpY10uZnVuY3Rpb24pOwotIAkgIGVsc2UgaWYgKG1hcFtp Y10udHlwZSA9PSBJU0tNQVApCi0gCSAgICB7Ci0gCSAgICAgIG1hcCA9IEZVTkNUSU9OX1RPX0tF WU1BUCAobWFwLCBpYyk7Ci0gCSAgICAgIGljID0gQU5ZT1RIRVJLRVk7Ci0rCSAgICAgIC8qIElm IHdlJ3JlIHRyeWluZyB0byBvdmVycmlkZSBhIGtleW1hcCB3aXRoIGEgbnVsbCBmdW5jdGlvbgot KwkJIChlLmcuLCB0cnlpbmcgdG8gdW5iaW5kIGl0KSwgd2UgY2FuJ3QgdXNlIGEgbnVsbCBwb2lu dGVyCi0rCQkgaGVyZSBiZWNhdXNlIHRoYXQncyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGhhdmlu ZyBub3QgYmVlbgotKwkJIG92ZXJyaWRkZW4uICBXZSB1c2UgYSBzcGVjaWFsIGJpbmRhYmxlIGZ1 bmN0aW9uIHRoYXQgZG9lcwotKwkJIG5vdGhpbmcuICovCi0rCSAgICAgIGlmICh0eXBlID09IElT RlVOQyAmJiBkYXRhID09IDApCi0rCQlkYXRhID0gKGNoYXIgKilfcmxfbnVsbF9mdW5jdGlvbjsK LSAJICAgIH0KLSAKLSAJICBtYXBbaWNdLmZ1bmN0aW9uID0gS0VZTUFQX1RPX0ZVTkNUSU9OIChk YXRhKTsKLUBAIC00MjQsNyArNDMzLDcgQEAgcmxfZ2VuZXJpY19iaW5kICh0eXBlLCBrZXlzZXEs IGRhdGEsIG1hcAotIAotICAgICAgIHJsX2JpbmRpbmdfa2V5bWFwID0gbWFwOwotICAgICB9Ci0t ICBmcmVlIChrZXlzKTsKLSsgIHhmcmVlIChrZXlzKTsKLSAgIHJldHVybiAwOwotIH0KLSAKLUBA IC00NjIsMTIgKzQ3MSwyMSBAQCBybF90cmFuc2xhdGVfa2V5c2VxIChzZXEsIGFycmF5LCBsZW4p Ci0gCQl9Ci0gCSAgICAgIGVsc2UgaWYgKGMgPT0gJ00nKQotIAkJewotLQkJICBpKys7Ci0tCQkg IC8qIFhYWCAtIHNob3VsZCBvYmV5IGNvbnZlcnQtbWV0YSBzZXR0aW5nPyAqLwotKwkJICBpKys7 CQkvKiBzZXFbaV0gPT0gJy0nICovCi0rCQkgIC8qIFhYWCAtIG9iZXkgY29udmVydC1tZXRhIHNl dHRpbmcgKi8KLSAJCSAgaWYgKF9ybF9jb252ZXJ0X21ldGFfY2hhcnNfdG9fYXNjaWkgJiYgX3Js X2tleW1hcFtFU0NdLnR5cGUgPT0gSVNLTUFQKQotIAkJICAgIGFycmF5W2wrK10gPSBFU0M7CS8q IEVTQyBpcyBtZXRhLXByZWZpeCAqLwotKwkJICBlbHNlIGlmIChzZXFbaSsxXSA9PSAnXFwnICYm IHNlcVtpKzJdID09ICdDJyAmJiBzZXFbaSszXSA9PSAnLScpCi0rCQkgICAgewotKwkJICAgICAg aSArPSA0OwotKwkJICAgICAgdGVtcCA9IChzZXFbaV0gPT0gJz8nKSA/IFJVQk9VVCA6IENUUkwg KF9ybF90b191cHBlciAoc2VxW2ldKSk7Ci0rCQkgICAgICBhcnJheVtsKytdID0gTUVUQSAodGVt cCk7Ci0rCQkgICAgfQotIAkJICBlbHNlCi0gCQkgICAgewotKwkJICAgICAgLyogVGhpcyBkb2Vz bid0IHlldCBoYW5kbGUgdGhpbmdzIGxpa2UgXE0tXGEsIHdoaWNoIG1heQotKwkJCSBvciBtYXkg bm90IGhhdmUgYW55IHJlYXNvbmFibGUgbWVhbmluZy4gIFlvdSdyZQotKwkJCSBwcm9iYWJseSBi ZXR0ZXIgb2ZmIHVzaW5nIHN0cmFpZ2h0IG9jdGFsIG9yIGhleC4gKi8KLSAJCSAgICAgIGkrKzsK LSAJCSAgICAgIGFycmF5W2wrK10gPSBNRVRBIChzZXFbaV0pOwotIAkJICAgIH0KLUBAIC01NjUs NiArNTgzLDExIEBAIHJsX3VudHJhbnNsYXRlX2tleXNlcSAoc2VxKQotICAgICAgIGtzZXFbaSsr XSA9ICctJzsKLSAgICAgICBjID0gVU5NRVRBIChjKTsKLSAgICAgfQotKyAgZWxzZSBpZiAoYyA9 PSBFU0MpCi0rICAgIHsKLSsgICAgICBrc2VxW2krK10gPSAnXFwnOwotKyAgICAgIGMgPSAnZSc7 Ci0rICAgIH0KLSAgIGVsc2UgaWYgKENUUkxfQ0hBUiAoYykpCi0gICAgIHsKLSAgICAgICBrc2Vx W2krK10gPSAnXFwnOwotQEAgLTYxMyw3ICs2MzYsMTIgQEAgX3JsX3VudHJhbnNsYXRlX21hY3Jv X3ZhbHVlIChzZXEpCi0gCSAgKnIrKyA9ICctJzsKLSAJICBjID0gVU5NRVRBIChjKTsKLSAJfQot LSAgICAgIGVsc2UgaWYgKENUUkxfQ0hBUiAoYykgJiYgYyAhPSBFU0MpCi0rICAgICAgZWxzZSBp ZiAoYyA9PSBFU0MpCi0rCXsKLSsJICAqcisrID0gJ1xcJzsKLSsJICBjID0gJ2UnOwotKwl9Ci0r ICAgICAgZWxzZSBpZiAoQ1RSTF9DSEFSIChjKSkKLSAJewotIAkgICpyKysgPSAnXFwnOwotIAkg ICpyKysgPSAnQyc7Ci1AQCAtNjcyLDcgKzcwMCw3IEBAIHJsX2Z1bmN0aW9uX29mX2tleXNlcSAo a2V5c2VxLCBtYXAsIHR5cGUKLSB7Ci0gICByZWdpc3RlciBpbnQgaTsKLSAKLS0gIGlmICghbWFw KQotKyAgaWYgKG1hcCA9PSAwKQotICAgICBtYXAgPSBfcmxfa2V5bWFwOwotIAotICAgZm9yIChp ID0gMDsga2V5c2VxICYmIGtleXNlcVtpXTsgaSsrKQotQEAgLTY4MSwyNSArNzA5LDI3IEBAIHJs X2Z1bmN0aW9uX29mX2tleXNlcSAoa2V5c2VxLCBtYXAsIHR5cGUKLSAKLSAgICAgICBpZiAoTUVU QV9DSEFSIChpYykgJiYgX3JsX2NvbnZlcnRfbWV0YV9jaGFyc190b19hc2NpaSkKLSAJewotLQkg IGlmIChtYXBbRVNDXS50eXBlICE9IElTS01BUCkKLSsJICBpZiAobWFwW0VTQ10udHlwZSA9PSBJ U0tNQVApCi0rCSAgICB7Ci0rCSAgICAgIG1hcCA9IEZVTkNUSU9OX1RPX0tFWU1BUCAobWFwLCBF U0MpOwotKwkgICAgICBpYyA9IFVOTUVUQSAoaWMpOwotKwkgICAgfQotKwkgIC8qIFhYWCAtIHNo b3VsZCB3ZSBqdXN0IHJldHVybiBOVUxMIGhlcmUsIHNpbmNlIHRoaXMgb2J2aW91c2x5Ci0rCSAg ICAgZG9lc24ndCBtYXRjaD8gKi8KLSsJICBlbHNlCi0gCSAgICB7Ci0gCSAgICAgIGlmICh0eXBl KQotIAkJKnR5cGUgPSBtYXBbRVNDXS50eXBlOwotIAotIAkgICAgICByZXR1cm4gKG1hcFtFU0Nd LmZ1bmN0aW9uKTsKLSAJICAgIH0KLS0JICBlbHNlCi0tCSAgICB7Ci0tCSAgICAgIG1hcCA9IEZV TkNUSU9OX1RPX0tFWU1BUCAobWFwLCBFU0MpOwotLQkgICAgICBpYyA9IFVOTUVUQSAoaWMpOwot LQkgICAgfQotIAl9Ci0gCi0gICAgICAgaWYgKG1hcFtpY10udHlwZSA9PSBJU0tNQVApCi0gCXsK LSAJICAvKiBJZiB0aGlzIGlzIHRoZSBsYXN0IGtleSBpbiB0aGUga2V5IHNlcXVlbmNlLCByZXR1 cm4gdGhlCi0gCSAgICAgbWFwLiAqLwotLQkgIGlmICgha2V5c2VxW2kgKyAxXSkKLSsJICBpZiAo a2V5c2VxW2kgKyAxXSA9PSAnXDAnKQotIAkgICAgewotIAkgICAgICBpZiAodHlwZSkKLSAJCSp0 eXBlID0gSVNLTUFQOwotQEAgLTcwOSw3ICs3MzksMTIgQEAgcmxfZnVuY3Rpb25fb2Zfa2V5c2Vx IChrZXlzZXEsIG1hcCwgdHlwZQotIAkgIGVsc2UKLSAJICAgIG1hcCA9IEZVTkNUSU9OX1RPX0tF WU1BUCAobWFwLCBpYyk7Ci0gCX0KLS0gICAgICBlbHNlCi0rICAgICAgLyogSWYgd2UncmUgbm90 IGF0IHRoZSBlbmQgb2YgdGhlIGtleSBzZXF1ZW5jZSwgYW5kIHRoZSBjdXJyZW50IGtleQotKwkg aXMgYm91bmQgdG8gc29tZXRoaW5nIG90aGVyIHRoYW4gYSBrZXltYXAsIHRoZW4gdGhlIGVudGly ZSBrZXkKLSsJIHNlcXVlbmNlIGlzIG5vdCBib3VuZC4gKi8KLSsgICAgICBlbHNlIGlmIChtYXBb aWNdLnR5cGUgIT0gSVNLTUFQICYmIGtleXNlcVtpKzFdKQotKwlyZXR1cm4gKChybF9jb21tYW5k X2Z1bmNfdCAqKU5VTEwpOwotKyAgICAgIGVsc2UJLyogbWFwW2ljXS50eXBlICE9IElTS01BUCAm JiBrZXlzZXFbaSsxXSA9PSAwICovCi0gCXsKLSAJICBpZiAodHlwZSkKLSAJICAgICp0eXBlID0g bWFwW2ljXS50eXBlOwotQEAgLTc2NCwxMCArNzk5LDEyIEBAIF9ybF9yZWFkX2ZpbGUgKGZpbGVu YW1lLCBzaXplcCkKLSAKLSAgIGlmIChpIDwgMCkKLSAgICAgewotLSAgICAgIGZyZWUgKGJ1ZmZl cik7Ci0rICAgICAgeGZyZWUgKGJ1ZmZlcik7Ci0gICAgICAgcmV0dXJuICgoY2hhciAqKU5VTEwp OwotICAgICB9Ci0gCi0rICBSTF9DSEVDS19TSUdOQUxTICgpOwotKwotICAgYnVmZmVyW2ldID0g J1wwJzsKLSAgIGlmIChzaXplcCkKLSAgICAgKnNpemVwID0gaTsKLUBAIC03OTEsNiArODI4LDcg QEAgcmxfcmVfcmVhZF9pbml0X2ZpbGUgKGNvdW50LCBpZ25vcmUpCi0gICAgICAxLiB0aGUgZmls ZW5hbWUgdXNlZCBmb3IgdGhlIHByZXZpb3VzIGNhbGwKLSAgICAgIDIuIHRoZSB2YWx1ZSBvZiB0 aGUgc2hlbGwgdmFyaWFibGUgYElOUFVUUkMnCi0gICAgICAzLiB+Ly5pbnB1dHJjCi0rICAgICA0 LiAvZXRjL2lucHV0cmMKLSAgICBJZiB0aGUgZmlsZSBleGlzdGVkIGFuZCBjb3VsZCBiZSBvcGVu ZWQgYW5kIHJlYWQsIDAgaXMgcmV0dXJuZWQsCi0gICAgb3RoZXJ3aXNlIGVycm5vIGlzIHJldHVy bmVkLiAqLwotIGludAotQEAgLTc5OSwxNyArODM3LDE4IEBAIHJsX3JlYWRfaW5pdF9maWxlIChm aWxlbmFtZSkKLSB7Ci0gICAvKiBEZWZhdWx0IHRoZSBmaWxlbmFtZS4gKi8KLSAgIGlmIChmaWxl bmFtZSA9PSAwKQotKyAgICBmaWxlbmFtZSA9IGxhc3RfcmVhZGxpbmVfaW5pdF9maWxlOwotKyAg aWYgKGZpbGVuYW1lID09IDApCi0rICAgIGZpbGVuYW1lID0gc2hfZ2V0X2Vudl92YWx1ZSAoIklO UFVUUkMiKTsKLSsgIGlmIChmaWxlbmFtZSA9PSAwIHx8ICpmaWxlbmFtZSA9PSAwKQotICAgICB7 Ci0tICAgICAgZmlsZW5hbWUgPSBsYXN0X3JlYWRsaW5lX2luaXRfZmlsZTsKLS0gICAgICBpZiAo ZmlsZW5hbWUgPT0gMCkKLS0gICAgICAgIGZpbGVuYW1lID0gc2hfZ2V0X2Vudl92YWx1ZSAoIklO UFVUUkMiKTsKLS0gICAgICBpZiAoZmlsZW5hbWUgPT0gMCkKLS0JZmlsZW5hbWUgPSBERUZBVUxU X0lOUFVUUkM7Ci0rICAgICAgZmlsZW5hbWUgPSBERUZBVUxUX0lOUFVUUkM7Ci0rICAgICAgLyog VHJ5IHRvIHJlYWQgREVGQVVMVF9JTlBVVFJDOyBmYWxsIGJhY2sgdG8gU1lTX0lOUFVUUkMgb24g ZmFpbHVyZSAqLwotKyAgICAgIGlmIChfcmxfcmVhZF9pbml0X2ZpbGUgKGZpbGVuYW1lLCAwKSA9 PSAwKQotKwlyZXR1cm4gMDsKLSsgICAgICBmaWxlbmFtZSA9IFNZU19JTlBVVFJDOwotICAgICB9 Ci0gCi0tICBpZiAoKmZpbGVuYW1lID09IDApCi0tICAgIGZpbGVuYW1lID0gREVGQVVMVF9JTlBV VFJDOwotLQotICNpZiBkZWZpbmVkIChfX01TRE9TX18pCi0gICBpZiAoX3JsX3JlYWRfaW5pdF9m aWxlIChmaWxlbmFtZSwgMCkgPT0gMCkKLSAgICAgcmV0dXJuIDA7Ci1AQCAtODMyLDggKzg3MSw5 IEBAIF9ybF9yZWFkX2luaXRfZmlsZSAoZmlsZW5hbWUsIGluY2x1ZGVfbGUKLSAKLSAgIG9wZW5u YW1lID0gdGlsZGVfZXhwYW5kIChmaWxlbmFtZSk7Ci0gICBidWZmZXIgPSBfcmxfcmVhZF9maWxl IChvcGVubmFtZSwgJmZpbGVfc2l6ZSk7Ci0tICBmcmVlIChvcGVubmFtZSk7Ci0rICB4ZnJlZSAo b3Blbm5hbWUpOwotIAotKyAgUkxfQ0hFQ0tfU0lHTkFMUyAoKTsKLSAgIGlmIChidWZmZXIgPT0g MCkKLSAgICAgcmV0dXJuIChlcnJubyk7Ci0gICAKLUBAIC04ODAsNyArOTIwLDcgQEAgX3JsX3Jl YWRfaW5pdF9maWxlIChmaWxlbmFtZSwgaW5jbHVkZV9sZQotICAgICAgIGN1cnJlbnRfcmVhZGxp bmVfaW5pdF9saW5lbm8rKzsKLSAgICAgfQotIAotLSAgZnJlZSAoYnVmZmVyKTsKLSsgIHhmcmVl IChidWZmZXIpOwotICAgY3VycmVudGx5X3JlYWRpbmdfaW5pdF9maWxlID0gMDsKLSAgIHJldHVy biAoMCk7Ci0gfQotQEAgLTg5MCwxMCArOTMwLDEwIEBAIF9ybF9pbml0X2ZpbGVfZXJyb3IgKG1z ZykKLSAgICAgIGNvbnN0IGNoYXIgKm1zZzsKLSB7Ci0gICBpZiAoY3VycmVudGx5X3JlYWRpbmdf aW5pdF9maWxlKQotLSAgICBmcHJpbnRmIChzdGRlcnIsICJyZWFkbGluZTogJXM6IGxpbmUgJWQ6 ICVzXG4iLCBjdXJyZW50X3JlYWRsaW5lX2luaXRfZmlsZSwKLSsgICAgX3JsX2Vycm1zZyAoIiVz OiBsaW5lICVkOiAlc1xuIiwgY3VycmVudF9yZWFkbGluZV9pbml0X2ZpbGUsCi0gCQkgICAgIGN1 cnJlbnRfcmVhZGxpbmVfaW5pdF9saW5lbm8sIG1zZyk7Ci0gICBlbHNlCi0tICAgIGZwcmludGYg KHN0ZGVyciwgInJlYWRsaW5lOiAlc1xuIiwgbXNnKTsKLSsgICAgX3JsX2Vycm1zZyAoIiVzIiwg bXNnKTsKLSB9Ci0gCi0gLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotQEAgLTkwNSwxMSArOTQ1LDExIEBAIF9ybF9p bml0X2ZpbGVfZXJyb3IgKG1zZykKLSB0eXBlZGVmIGludCBfcmxfcGFyc2VyX2Z1bmNfdCBQQVJB TVMoKGNoYXIgKikpOwotIAotIC8qIFRoaW5ncyB0aGF0IG1lYW4gYENvbnRyb2wnLiAqLwotLWNv bnN0IGNoYXIgKl9ybF9wb3NzaWJsZV9jb250cm9sX3ByZWZpeGVzW10gPSB7Ci0rY29uc3QgY2hh ciAqIGNvbnN0IF9ybF9wb3NzaWJsZV9jb250cm9sX3ByZWZpeGVzW10gPSB7Ci0gICAiQ29udHJv bC0iLCAiQy0iLCAiQ1RSTC0iLCAoY29uc3QgY2hhciAqKU5VTEwKLSB9OwotIAotLWNvbnN0IGNo YXIgKl9ybF9wb3NzaWJsZV9tZXRhX3ByZWZpeGVzW10gPSB7Ci0rY29uc3QgY2hhciAqIGNvbnN0 IF9ybF9wb3NzaWJsZV9tZXRhX3ByZWZpeGVzW10gPSB7Ci0gICAiTWV0YSIsICJNLSIsIChjb25z dCBjaGFyICopTlVMTAotIH07Ci0gCi1AQCAtOTcxLDcgKzEwMTEsNyBAQCBwYXJzZXJfaWYgKGFy Z3MpCi0gCSBgJGlmIHRlcm09c3VuLWNtZCcgaW50byB0aGVpciAuaW5wdXRyYy4gKi8KLSAgICAg ICBfcmxfcGFyc2luZ19jb25kaXRpb25hbGl6ZWRfb3V0ID0gX3JsX3N0cmljbXAgKGFyZ3MgKyA1 LCB0bmFtZSkgJiYKLSAJCQkJCV9ybF9zdHJpY21wIChhcmdzICsgNSwgcmxfdGVybWluYWxfbmFt ZSk7Ci0tICAgICAgZnJlZSAodG5hbWUpOwotKyAgICAgIHhmcmVlICh0bmFtZSk7Ci0gICAgIH0K LSAjaWYgZGVmaW5lZCAoVklfTU9ERSkKLSAgIGVsc2UgaWYgKF9ybF9zdHJuaWNtcCAoYXJncywg Im1vZGU9IiwgNSkgPT0gMCkKLUBAIC0xMDY4LDggKzExMDgsOCBAQCBwYXJzZXJfaW5jbHVkZSAo YXJncykKLSB9Ci0gICAKLSAvKiBBc3NvY2lhdGUgdGV4dHVhbCBuYW1lcyB3aXRoIGFjdHVhbCBm dW5jdGlvbnMuICovCi0tc3RhdGljIHN0cnVjdCB7Ci0tICBjb25zdCBjaGFyICpuYW1lOwotK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgewotKyAgY29uc3QgY2hhciAqIGNvbnN0IG5hbWU7Ci0gICBfcmxf cGFyc2VyX2Z1bmNfdCAqZnVuY3Rpb247Ci0gfSBwYXJzZXJfZGlyZWN0aXZlcyBbXSA9IHsKLSAg IHsgImlmIiwgcGFyc2VyX2lmIH0sCi1AQCAtMTMyMSw3ICsxMzYxLDcgQEAgcmxfcGFyc2VfYW5k X2JpbmQgKHN0cmluZykKLSAgICAgICBlbHNlCi0gCXJsX2JpbmRfa2V5c2VxIChzZXEsIHJsX25h bWVkX2Z1bmN0aW9uIChmdW5uYW1lKSk7Ci0gCi0tICAgICAgZnJlZSAoc2VxKTsKLSsgICAgICB4 ZnJlZSAoc2VxKTsKLSAgICAgICByZXR1cm4gMDsKLSAgICAgfQotIAotQEAgLTEzNzUsOCArMTQx NSw4IEBAIHJsX3BhcnNlX2FuZF9iaW5kIChzdHJpbmcpCi0gCi0gI2RlZmluZSBWX1NQRUNJQUwJ MHgxCi0gCi0tc3RhdGljIHN0cnVjdCB7Ci0tICBjb25zdCBjaGFyICpuYW1lOwotK3N0YXRpYyBj b25zdCBzdHJ1Y3QgewotKyAgY29uc3QgY2hhciAqIGNvbnN0IG5hbWU7Ci0gICBpbnQgKnZhbHVl OwotICAgaW50IGZsYWdzOwotIH0gYm9vbGVhbl92YXJsaXN0IFtdID0gewotQEAgLTEzODQsOSAr MTQyNCwxMiBAQCBzdGF0aWMgc3RydWN0IHsKLSAgIHsgImJsaW5rLW1hdGNoaW5nLXBhcmVuIiwJ JnJsX2JsaW5rX21hdGNoaW5nX3BhcmVuLAlWX1NQRUNJQUwgfSwKLSAgIHsgImJ5dGUtb3JpZW50 ZWQiLAkJJnJsX2J5dGVfb3JpZW50ZWQsCQkwIH0sCi0gICB7ICJjb21wbGV0aW9uLWlnbm9yZS1j YXNlIiwJJl9ybF9jb21wbGV0aW9uX2Nhc2VfZm9sZCwJMCB9LAotKyAgeyAiY29tcGxldGlvbi1t YXAtY2FzZSIsCSZfcmxfY29tcGxldGlvbl9jYXNlX21hcCwJMCB9LAotICAgeyAiY29udmVydC1t ZXRhIiwJCSZfcmxfY29udmVydF9tZXRhX2NoYXJzX3RvX2FzY2lpLCAwIH0sCi0gICB7ICJkaXNh YmxlLWNvbXBsZXRpb24iLAkmcmxfaW5oaWJpdF9jb21wbGV0aW9uLAkJMCB9LAotKyAgeyAiZWNo by1jb250cm9sLWNoYXJhY3RlcnMiLAkmX3JsX2VjaG9fY29udHJvbF9jaGFycywJMCB9LAotICAg eyAiZW5hYmxlLWtleXBhZCIsCQkmX3JsX2VuYWJsZV9rZXlwYWQsCQkwIH0sCi0rICB7ICJlbmFi bGUtbWV0YS1rZXkiLAkJJl9ybF9lbmFibGVfbWV0YSwJCTAgfSwKLSAgIHsgImV4cGFuZC10aWxk ZSIsCQkmcmxfY29tcGxldGVfd2l0aF90aWxkZV9leHBhbnNpb24sIDAgfSwKLSAgIHsgImhpc3Rv cnktcHJlc2VydmUtcG9pbnQiLAkmX3JsX2hpc3RvcnlfcHJlc2VydmVfcG9pbnQsCTAgfSwKLSAg IHsgImhvcml6b250YWwtc2Nyb2xsLW1vZGUiLAkmX3JsX2hvcml6b250YWxfc2Nyb2xsX21vZGUs CTAgfSwKLUBAIC0xMzk1LDE3ICsxNDM4LDIwIEBAIHN0YXRpYyBzdHJ1Y3QgewotICAgeyAibWFy ay1tb2RpZmllZC1saW5lcyIsCSZfcmxfbWFya19tb2RpZmllZF9saW5lcywJMCB9LAotICAgeyAi bWFyay1zeW1saW5rZWQtZGlyZWN0b3JpZXMiLCAmX3JsX2NvbXBsZXRlX21hcmtfc3ltbGlua19k aXJzLCAwIH0sCi0gICB7ICJtYXRjaC1oaWRkZW4tZmlsZXMiLAkmX3JsX21hdGNoX2hpZGRlbl9m aWxlcywJMCB9LAotKyAgeyAibWVudS1jb21wbGV0ZS1kaXNwbGF5LXByZWZpeCIsICZfcmxfbWVu dV9jb21wbGV0ZV9wcmVmaXhfZmlyc3QsIDAgfSwKLSAgIHsgIm1ldGEtZmxhZyIsCQkmX3JsX21l dGFfZmxhZywJCQkwIH0sCi0gICB7ICJvdXRwdXQtbWV0YSIsCQkmX3JsX291dHB1dF9tZXRhX2No YXJzLAkJMCB9LAotICAgeyAicGFnZS1jb21wbGV0aW9ucyIsCQkmX3JsX3BhZ2VfY29tcGxldGlv bnMsCQkwIH0sCi0gICB7ICJwcmVmZXItdmlzaWJsZS1iZWxsIiwJJl9ybF9wcmVmZXJfdmlzaWJs ZV9iZWxsLAlWX1NQRUNJQUwgfSwKLSAgIHsgInByaW50LWNvbXBsZXRpb25zLWhvcml6b250YWxs eSIsICZfcmxfcHJpbnRfY29tcGxldGlvbnNfaG9yaXpvbnRhbGx5LCAwIH0sCi0rICB7ICJyZXZl cnQtYWxsLWF0LW5ld2xpbmUiLAkmX3JsX3JldmVydF9hbGxfYXRfbmV3bGluZSwJMCB9LAotICAg eyAic2hvdy1hbGwtaWYtYW1iaWd1b3VzIiwJJl9ybF9jb21wbGV0ZV9zaG93X2FsbCwJCTAgfSwK LSAgIHsgInNob3ctYWxsLWlmLXVubW9kaWZpZWQiLAkmX3JsX2NvbXBsZXRlX3Nob3dfdW5tb2Rp ZmllZCwJMCB9LAotKyAgeyAic2tpcC1jb21wbGV0ZWQtdGV4dCIsCSZfcmxfc2tpcF9jb21wbGV0 ZWRfdGV4dCwJMCB9LAotICNpZiBkZWZpbmVkIChWSVNJQkxFX1NUQVRTKQotICAgeyAidmlzaWJs ZS1zdGF0cyIsCQkmcmxfdmlzaWJsZV9zdGF0cywJCTAgfSwKLSAjZW5kaWYgLyogVklTSUJMRV9T VEFUUyAqLwotLSAgeyAoY2hhciAqKU5VTEwsIChpbnQgKilOVUxMIH0KLSsgIHsgKGNoYXIgKilO VUxMLCAoaW50ICopTlVMTCwgMCB9Ci0gfTsKLSAKLSBzdGF0aWMgaW50Ci1AQCAtMTQ1OCwyMyAr MTUwNCwyOSBAQCB0eXBlZGVmIGludCBfcmxfc3ZfZnVuY190IFBBUkFNUygoY29uc3QgCi0gLyog Rm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KLSBzdGF0aWMgaW50IHN2X2JlbGxfc3R5bGUgUEFSQU1T KChjb25zdCBjaGFyICopKTsKLSBzdGF0aWMgaW50IHN2X2NvbWJlZ2luIFBBUkFNUygoY29uc3Qg Y2hhciAqKSk7Ci0rc3RhdGljIGludCBzdl9kaXNwcHJlZml4IFBBUkFNUygoY29uc3QgY2hhciAq KSk7Ci0gc3RhdGljIGludCBzdl9jb21wcXVlcnkgUEFSQU1TKChjb25zdCBjaGFyICopKTsKLStz dGF0aWMgaW50IHN2X2NvbXB3aWR0aCBQQVJBTVMoKGNvbnN0IGNoYXIgKikpOwotIHN0YXRpYyBp bnQgc3ZfZWRpdG1vZGUgUEFSQU1TKChjb25zdCBjaGFyICopKTsKLStzdGF0aWMgaW50IHN2X2hp c3RzaXplIFBBUkFNUygoY29uc3QgY2hhciAqKSk7Ci0gc3RhdGljIGludCBzdl9pc3JjaHRlcm0g UEFSQU1TKChjb25zdCBjaGFyICopKTsKLSBzdGF0aWMgaW50IHN2X2tleW1hcCBQQVJBTVMoKGNv bnN0IGNoYXIgKikpOwotIAotLXN0YXRpYyBzdHJ1Y3QgewotLSAgY29uc3QgY2hhciAqbmFtZTsK LStzdGF0aWMgY29uc3Qgc3RydWN0IHsKLSsgIGNvbnN0IGNoYXIgKiBjb25zdCBuYW1lOwotICAg aW50IGZsYWdzOwotICAgX3JsX3N2X2Z1bmNfdCAqc2V0X2Z1bmM7Ci0gfSBzdHJpbmdfdmFybGlz dFtdID0gewotICAgeyAiYmVsbC1zdHlsZSIsCVZfU1RSSU5HLAlzdl9iZWxsX3N0eWxlIH0sCi0g ICB7ICJjb21tZW50LWJlZ2luIiwJVl9TVFJJTkcsCXN2X2NvbWJlZ2luIH0sCi0rICB7ICJjb21w bGV0aW9uLWRpc3BsYXktd2lkdGgiLCBWX0lOVCwJc3ZfY29tcHdpZHRoIH0sCi0rICB7ICJjb21w bGV0aW9uLXByZWZpeC1kaXNwbGF5LWxlbmd0aCIsIFZfSU5ULAlzdl9kaXNwcHJlZml4IH0sCi0g ICB7ICJjb21wbGV0aW9uLXF1ZXJ5LWl0ZW1zIiwgVl9JTlQsCXN2X2NvbXBxdWVyeSB9LAotICAg eyAiZWRpdGluZy1tb2RlIiwJVl9TVFJJTkcsCXN2X2VkaXRtb2RlIH0sCi0rICB7ICJoaXN0b3J5 LXNpemUiLAlWX0lOVCwJCXN2X2hpc3RzaXplIH0sCi0gICB7ICJpc2VhcmNoLXRlcm1pbmF0b3Jz IiwgVl9TVFJJTkcsCXN2X2lzcmNodGVybSB9LAotICAgeyAia2V5bWFwIiwJCVZfU1RSSU5HLAlz dl9rZXltYXAgfSwKLS0gIHsgKGNoYXIgKilOVUxMLAkwIH0KLSsgIHsgKGNoYXIgKilOVUxMLAkw LCAoX3JsX3N2X2Z1bmNfdCAqKTAgfQotIH07Ci0gCi0gc3RhdGljIGludAotQEAgLTE1MDYsOCAr MTU1OCw2IEBAIHJsX3ZhcmlhYmxlX3ZhbHVlIChuYW1lKQotICAgICAgY29uc3QgY2hhciAqbmFt ZTsKLSB7Ci0gICByZWdpc3RlciBpbnQgaTsKLS0gIGludAl2OwotLSAgY2hhciAqcmV0OwotIAot ICAgLyogQ2hlY2sgZm9yIHNpbXBsZSB2YXJpYWJsZXMgZmlyc3QuICovCi0gICBpID0gZmluZF9i b29sZWFuX3ZhciAobmFtZSk7Ci1AQCAtMTU4NSw2ICsxNjM1LDIyIEBAIHN2X2NvbWJlZ2luICh2 YWx1ZSkKLSB9Ci0gCi0gc3RhdGljIGludAotK3N2X2Rpc3BwcmVmaXggKHZhbHVlKQotKyAgICAg Y29uc3QgY2hhciAqdmFsdWU7Ci0rewotKyAgaW50IG52YWwgPSAwOwotKwotKyAgaWYgKHZhbHVl ICYmICp2YWx1ZSkKLSsgICAgewotKyAgICAgIG52YWwgPSBhdG9pICh2YWx1ZSk7Ci0rICAgICAg aWYgKG52YWwgPCAwKQotKwludmFsID0gMDsKLSsgICAgfQotKyAgX3JsX2NvbXBsZXRpb25fcHJl Zml4X2Rpc3BsYXlfbGVuZ3RoID0gbnZhbDsKLSsgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMg aW50Ci0gc3ZfY29tcHF1ZXJ5ICh2YWx1ZSkKLSAgICAgIGNvbnN0IGNoYXIgKnZhbHVlOwotIHsK LUBAIC0xNjAxLDYgKzE2NjcsMzUgQEAgc3ZfY29tcHF1ZXJ5ICh2YWx1ZSkKLSB9Ci0gCi0gc3Rh dGljIGludAotK3N2X2NvbXB3aWR0aCAodmFsdWUpCi0rICAgICBjb25zdCBjaGFyICp2YWx1ZTsK LSt7Ci0rICBpbnQgbnZhbCA9IC0xOwotKwotKyAgaWYgKHZhbHVlICYmICp2YWx1ZSkKLSsgICAg bnZhbCA9IGF0b2kgKHZhbHVlKTsKLSsKLSsgIF9ybF9jb21wbGV0aW9uX2NvbHVtbnMgPSBudmFs OwotKyAgcmV0dXJuIDA7Ci0rfQotKwotK3N0YXRpYyBpbnQKLStzdl9oaXN0c2l6ZSAodmFsdWUp Ci0rICAgICBjb25zdCBjaGFyICp2YWx1ZTsKLSt7Ci0rICBpbnQgbnZhbCA9IDUwMDsKLSsKLSsg IGlmICh2YWx1ZSAmJiAqdmFsdWUpCi0rICAgIHsKLSsgICAgICBudmFsID0gYXRvaSAodmFsdWUp OwotKyAgICAgIGlmIChudmFsIDwgMCkKLSsJcmV0dXJuIDE7Ci0rICAgIH0KLSsgIHN0aWZsZV9o aXN0b3J5IChudmFsKTsKLSsgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50Ci0gc3Zfa2V5 bWFwICh2YWx1ZSkKLSAgICAgIGNvbnN0IGNoYXIgKnZhbHVlOwotIHsKLUBAIC0xNjY0LDcgKzE3 NTksNyBAQCBzdl9pc3JjaHRlcm0gKHZhbHVlKQotICAgcmxfdHJhbnNsYXRlX2tleXNlcSAodiAr IGJlZywgX3JsX2lzZWFyY2hfdGVybWluYXRvcnMsICZlbmQpOwotICAgX3JsX2lzZWFyY2hfdGVy bWluYXRvcnNbZW5kXSA9ICdcMCc7Ci0gCi0tICBmcmVlICh2KTsKLSsgIHhmcmVlICh2KTsKLSAg IHJldHVybiAwOwotIH0KLSAgICAgICAKLUBAIC0xNjcyLDExICsxNzY3LDExIEBAIHN2X2lzcmNo dGVybSAodmFsdWUpCi0gICAgRm9yIGV4YW1wbGUsIGBTcGFjZScgcmV0dXJucyAnICcuICovCi0g Ci0gdHlwZWRlZiBzdHJ1Y3QgewotLSAgY29uc3QgY2hhciAqbmFtZTsKLSsgIGNvbnN0IGNoYXIg KiBjb25zdCBuYW1lOwotICAgaW50IHZhbHVlOwotIH0gYXNzb2NfbGlzdDsKLSAKLS1zdGF0aWMg YXNzb2NfbGlzdCBuYW1lX2tleV9hbGlzdFtdID0gewotK3N0YXRpYyBjb25zdCBhc3NvY19saXN0 IG5hbWVfa2V5X2FsaXN0W10gPSB7Ci0gICB7ICJERUwiLCAweDdmIH0sCi0gICB7ICJFU0MiLCAn XDAzMycgfSwKLSAgIHsgIkVzY2FwZSIsICdcMDMzJyB9LAotQEAgLTE3MDUsOCArMTgwMCw4IEBA IGdsZWFuX2tleV9mcm9tX25hbWUgKG5hbWUpCi0gfQotIAotIC8qIEF1eGlsaWFyeSBmdW5jdGlv bnMgdG8gbWFuYWdlIGtleW1hcHMuICovCi0tc3RhdGljIHN0cnVjdCB7Ci0tICBjb25zdCBjaGFy ICpuYW1lOwotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgewotKyAgY29uc3QgY2hhciAqIGNvbnN0IG5h bWU7Ci0gICBLZXltYXAgbWFwOwotIH0ga2V5bWFwX25hbWVzW10gPSB7Ci0gICB7ICJlbWFjcyIs IGVtYWNzX3N0YW5kYXJkX2tleW1hcCB9LAotQEAgLTE4MDksNyArMTkwNCw3IEBAIHJsX2xpc3Rf ZnVubWFwX25hbWVzICgpCi0gICBmb3IgKGkgPSAwOyBmdW5tYXBfbmFtZXNbaV07IGkrKykKLSAg ICAgZnByaW50ZiAocmxfb3V0c3RyZWFtLCAiJXNcbiIsIGZ1bm1hcF9uYW1lc1tpXSk7Ci0gCi0t ICBmcmVlIChmdW5tYXBfbmFtZXMpOwotKyAgeGZyZWUgKGZ1bm1hcF9uYW1lcyk7Ci0gfQotIAot IHN0YXRpYyBjaGFyICoKLUBAIC0xOTQ4LDEyICsyMDQzLDE2IEBAIHJsX2ludm9raW5nX2tleXNl cXNfaW5fbWFwIChmdW5jdGlvbiwgbWEKLSAJCWNoYXIgKmtleW5hbWUgPSAoY2hhciAqKXhtYWxs b2MgKDYgKyBzdHJsZW4gKHNlcXNbaV0pKTsKLSAKLSAJCWlmIChrZXkgPT0gRVNDKQotLSNpZiAw Ci0tCQkgIHNwcmludGYgKGtleW5hbWUsICJcXGUiKTsKLS0jZWxzZQotLQkJLyogWFhYIC0gZXhw ZXJpbWVudGFsICovCi0tCQkgIHNwcmludGYgKGtleW5hbWUsICJcXE0tIik7Ci0tI2VuZGlmCi0r CQkgIHsKLSsJCSAgICAvKiBJZiBFU0MgaXMgdGhlIG1ldGEgcHJlZml4IGFuZCB3ZSdyZSBjb252 ZXJ0aW5nIGNoYXJzCi0rCQkgICAgICAgd2l0aCB0aGUgZWlnaHRoIGJpdCBzZXQgdG8gRVNDLXBy ZWZpeGVkIHNlcXVlbmNlcywgdGhlbgotKwkJICAgICAgIHdlIGNhbiB1c2UgXE0tLiAgT3RoZXJ3 aXNlIHdlIG5lZWQgdG8gdXNlIHRoZSBzZXF1ZW5jZQotKwkJICAgICAgIGZvciBFU0MuICovCi0r CQkgICAgaWYgKF9ybF9jb252ZXJ0X21ldGFfY2hhcnNfdG9fYXNjaWkgJiYgbWFwW0VTQ10udHlw ZSA9PSBJU0tNQVApCi0rCQkgICAgICBzcHJpbnRmIChrZXluYW1lLCAiXFxNLSIpOwotKwkJICAg IGVsc2UKLSsJCSAgICAgIHNwcmludGYgKGtleW5hbWUsICJcXGUiKTsKLSsJCSAgfQotIAkJZWxz ZSBpZiAoQ1RSTF9DSEFSIChrZXkpKQotIAkJICBzcHJpbnRmIChrZXluYW1lLCAiXFxDLSVjIiwg X3JsX3RvX2xvd2VyIChVTkNUUkwgKGtleSkpKTsKLSAJCWVsc2UgaWYgKGtleSA9PSBSVUJPVVQp Ci1AQCAtMTk3MSw3ICsyMDcwLDcgQEAgcmxfaW52b2tpbmdfa2V5c2Vxc19pbl9tYXAgKGZ1bmN0 aW9uLCBtYQotIAkJICB9Ci0gCQkKLSAJCXN0cmNhdCAoa2V5bmFtZSwgc2Vxc1tpXSk7Ci0tCQlm cmVlIChzZXFzW2ldKTsKLSsJCXhmcmVlIChzZXFzW2ldKTsKLSAKLSAJCWlmIChyZXN1bHRfaW5k ZXggKyAyID4gcmVzdWx0X3NpemUpCi0gCQkgIHsKLUBAIC0xOTgzLDcgKzIwODIsNyBAQCBybF9p bnZva2luZ19rZXlzZXFzX2luX21hcCAoZnVuY3Rpb24sIG1hCi0gCQlyZXN1bHRbcmVzdWx0X2lu ZGV4XSA9IChjaGFyICopTlVMTDsKLSAJICAgICAgfQotIAotLQkgICAgZnJlZSAoc2Vxcyk7Ci0r CSAgICB4ZnJlZSAoc2Vxcyk7Ci0gCSAgfQotIAkgIGJyZWFrOwotIAl9Ci1AQCAtMjAzNSwxMCAr MjEzNCwxMCBAQCBybF9mdW5jdGlvbl9kdW1wZXIgKHByaW50X3JlYWRhYmx5KQotIAkJewotIAkJ ICBmcHJpbnRmIChybF9vdXRzdHJlYW0sICJcIiVzXCI6ICVzXG4iLAotIAkJCSAgIGludm9rZXJz W2pdLCBuYW1lKTsKLS0JCSAgZnJlZSAoaW52b2tlcnNbal0pOwotKwkJICB4ZnJlZSAoaW52b2tl cnNbal0pOwotIAkJfQotIAotLQkgICAgICBmcmVlIChpbnZva2Vycyk7Ci0rCSAgICAgIHhmcmVl IChpbnZva2Vycyk7Ci0gCSAgICB9Ci0gCX0KLSAgICAgICBlbHNlCi1AQCAtMjA2Miw5ICsyMTYx LDkgQEAgcmxfZnVuY3Rpb25fZHVtcGVyIChwcmludF9yZWFkYWJseSkKLSAJCWZwcmludGYgKHJs X291dHN0cmVhbSwgIi4uLlxuIik7Ci0gCi0gCSAgICAgIGZvciAoaiA9IDA7IGludm9rZXJzW2pd OyBqKyspCi0tCQlmcmVlIChpbnZva2Vyc1tqXSk7Ci0rCQl4ZnJlZSAoaW52b2tlcnNbal0pOwot IAotLQkgICAgICBmcmVlIChpbnZva2Vycyk7Ci0rCSAgICAgIHhmcmVlIChpbnZva2Vycyk7Ci0g CSAgICB9Ci0gCX0KLSAgICAgfQotQEAgLTIxMTEsOCArMjIxMCw4IEBAIF9ybF9tYWNyb19kdW1w ZXJfaW50ZXJuYWwgKHByaW50X3JlYWRhYmwKLSAJICAgIGZwcmludGYgKHJsX291dHN0cmVhbSwg IiVzJXMgb3V0cHV0cyAlc1xuIiwgcHJlZml4ID8gcHJlZml4IDogIiIsCi0gCQkJCQkJCWtleW5h bWUsCi0gCQkJCQkJCW91dCA/IG91dCA6ICIiKTsKLS0JICBmcmVlIChrZXluYW1lKTsKLS0JICBm cmVlIChvdXQpOwotKwkgIHhmcmVlIChrZXluYW1lKTsKLSsJICB4ZnJlZSAob3V0KTsKLSAJICBi cmVhazsKLSAJY2FzZSBJU0ZVTkM6Ci0gCSAgYnJlYWs7Ci1AQCAtMjEzNSwxMyArMjIzNCwxMyBA QCBfcmxfbWFjcm9fZHVtcGVyX2ludGVybmFsIChwcmludF9yZWFkYWJsCi0gCQkgIG91dCA9IChj aGFyICopeG1hbGxvYyAoc3RybGVuIChrZXluYW1lKSArIHByZWZpeF9sZW4gKyAxKTsKLSAJCSAg c3RyY3B5IChvdXQsIHByZWZpeCk7Ci0gCQkgIHN0cmNweSAob3V0ICsgcHJlZml4X2xlbiwga2V5 bmFtZSk7Ci0tCQkgIGZyZWUgKGtleW5hbWUpOwotKwkJICB4ZnJlZSAoa2V5bmFtZSk7Ci0gCQkg IGtleW5hbWUgPSBvdXQ7Ci0gCQl9Ci0gCSAgICB9Ci0gCi0gCSAgX3JsX21hY3JvX2R1bXBlcl9p bnRlcm5hbCAocHJpbnRfcmVhZGFibHksIEZVTkNUSU9OX1RPX0tFWU1BUCAobWFwLCBrZXkpLCBr ZXluYW1lKTsKLS0JICBmcmVlIChrZXluYW1lKTsKLSsJICB4ZnJlZSAoa2V5bmFtZSk7Ci0gCSAg YnJlYWs7Ci0gCX0KLSAgICAgfQotQEAgLTIxNzEsNyArMjI3MCw2IEBAIF9ybF9nZXRfc3RyaW5n X3ZhcmlhYmxlX3ZhbHVlIChuYW1lKQotIHsKLSAgIHN0YXRpYyBjaGFyIG51bWJ1ZlszMl07Ci0g ICBjaGFyICpyZXQ7Ci0tICBpbnQgbjsKLSAKLSAgIGlmIChfcmxfc3RyaWNtcCAobmFtZSwgImJl bGwtc3R5bGUiKSA9PSAwKQotICAgICB7Ci1AQCAtMjE4OCw2ICsyMjg2LDE2IEBAIF9ybF9nZXRf c3RyaW5nX3ZhcmlhYmxlX3ZhbHVlIChuYW1lKQotICAgICB9Ci0gICBlbHNlIGlmIChfcmxfc3Ry aWNtcCAobmFtZSwgImNvbW1lbnQtYmVnaW4iKSA9PSAwKQotICAgICByZXR1cm4gKF9ybF9jb21t ZW50X2JlZ2luID8gX3JsX2NvbW1lbnRfYmVnaW4gOiBSTF9DT01NRU5UX0JFR0lOX0RFRkFVTFQp OwotKyAgZWxzZSBpZiAoX3JsX3N0cmljbXAgKG5hbWUsICJjb21wbGV0aW9uLWRpc3BsYXktd2lk dGgiKSA9PSAwKQotKyAgICB7Ci0rICAgICAgc3ByaW50ZiAobnVtYnVmLCAiJWQiLCBfcmxfY29t cGxldGlvbl9jb2x1bW5zKTsKLSsgICAgICByZXR1cm4gKG51bWJ1Zik7Ci0rICAgIH0KLSsgIGVs c2UgaWYgKF9ybF9zdHJpY21wIChuYW1lLCAiY29tcGxldGlvbi1wcmVmaXgtZGlzcGxheS1sZW5n dGgiKSA9PSAwKQotKyAgICB7Ci0rICAgICAgc3ByaW50ZiAobnVtYnVmLCAiJWQiLCBfcmxfY29t cGxldGlvbl9wcmVmaXhfZGlzcGxheV9sZW5ndGgpOwotKyAgICAgIHJldHVybiAobnVtYnVmKTsK LSsgICAgfQotICAgZWxzZSBpZiAoX3JsX3N0cmljbXAgKG5hbWUsICJjb21wbGV0aW9uLXF1ZXJ5 LWl0ZW1zIikgPT0gMCkKLSAgICAgewotICAgICAgIHNwcmludGYgKG51bWJ1ZiwgIiVkIiwgcmxf Y29tcGxldGlvbl9xdWVyeV9pdGVtcyk7Ci1AQCAtMjE5NSw2ICsyMzAzLDExIEBAIF9ybF9nZXRf c3RyaW5nX3ZhcmlhYmxlX3ZhbHVlIChuYW1lKQotICAgICB9Ci0gICBlbHNlIGlmIChfcmxfc3Ry aWNtcCAobmFtZSwgImVkaXRpbmctbW9kZSIpID09IDApCi0gICAgIHJldHVybiAocmxfZ2V0X2tl eW1hcF9uYW1lX2Zyb21fZWRpdF9tb2RlICgpKTsKLSsgIGVsc2UgaWYgKF9ybF9zdHJpY21wIChu YW1lLCAiaGlzdG9yeS1zaXplIikgPT0gMCkKLSsgICAgewotKyAgICAgIHNwcmludGYgKG51bWJ1 ZiwgIiVkIiwgaGlzdG9yeV9pc19zdGlmbGVkKCkgPyBoaXN0b3J5X21heF9lbnRyaWVzIDogMCk7 Ci0rICAgICAgcmV0dXJuIChudW1idWYpOwotKyAgICB9Ci0gICBlbHNlIGlmIChfcmxfc3RyaWNt cCAobmFtZSwgImlzZWFyY2gtdGVybWluYXRvcnMiKSA9PSAwKQotICAgICB7Ci0gICAgICAgaWYg KF9ybF9pc2VhcmNoX3Rlcm1pbmF0b3JzID09IDApCi1AQCAtMjIwMyw3ICsyMzE2LDcgQEAgX3Js X2dldF9zdHJpbmdfdmFyaWFibGVfdmFsdWUgKG5hbWUpCi0gICAgICAgaWYgKHJldCkKLSAJewot IAkgIHN0cm5jcHkgKG51bWJ1ZiwgcmV0LCBzaXplb2YgKG51bWJ1ZikgLSAxKTsKLS0JICBmcmVl IChyZXQpOwotKwkgIHhmcmVlIChyZXQpOwotIAkgIG51bWJ1ZltzaXplb2YobnVtYnVmKSAtIDFd ID0gJ1wwJzsKLSAJfQotICAgICAgIGVsc2UKLUBAIC0yMjY3LDggKzIzODAsOCBAQCBybF9kdW1w X3ZhcmlhYmxlcyAoY291bnQsIGtleSkKLSAvKiBSZXR1cm4gbm9uLXplcm8gaWYgYW55IG1lbWJl cnMgb2YgQVJSQVkgYXJlIGEgc3Vic3RyaW5nIGluIFNUUklORy4gKi8KLSBzdGF0aWMgaW50Ci0g c3Vic3RyaW5nX21lbWJlcl9vZl9hcnJheSAoc3RyaW5nLCBhcnJheSkKLS0gICAgIGNoYXIgKnN0 cmluZzsKLS0gICAgIGNvbnN0IGNoYXIgKiphcnJheTsKLSsgICAgIGNvbnN0IGNoYXIgKnN0cmlu ZzsKLSsgICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqYXJyYXk7Ci0gewotICAgd2hpbGUgKCphcnJh eSkKLSAgICAgewotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvY2FsbGJhY2su YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9jYWxs YmFjay5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45 MC4yMDExMDcwMy9yZWFkbGluZS9jYWxsYmFjay5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAw MDAwICswMjAwCi1AQCAtMSwyNCArMSwyNCBAQAotIC8qIGNhbGxiYWNrLmMgLS0gZnVuY3Rpb25z IHRvIHVzZSByZWFkbGluZSBhcyBhbiBYIGBjYWxsYmFjaycgbWVjaGFuaXNtLiAqLwotIAotLS8q IENvcHlyaWdodCAoQykgMTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot Ky8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotIAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwg YSBsaWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZl IGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFk aW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0 aW5nLgotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAg IFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFu ZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNF TlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0 ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwg U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFs b25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCi0rKi8KLSsKLSAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5l ZCAoSEFWRV9DT05GSUdfSCkKLUBAIC04Nyw2ICs4Nyw3IEBAIF9ybF9jYWxsYmFja19uZXdsaW5l ICgpCi0gICAgIH0KLSAKLSAgIHJlYWRsaW5lX2ludGVybmFsX3NldHVwICgpOwotKyAgUkxfQ0hF Q0tfU0lHTkFMUyAoKTsKLSB9Ci0gCi0gLyogSW5zdGFsbCBhIHJlYWRsaW5lIGhhbmRsZXIsIHNl dCB1cCB0aGUgdGVybWluYWwsIGFuZCBpc3N1ZSB0aGUgcHJvbXB0LiAqLwotQEAgLTExMSw4NyAr MTEyLDEwMSBAQCBybF9jYWxsYmFja19yZWFkX2NoYXIgKCkKLSAKLSAgIGlmIChybF9saW5lZnVu YyA9PSBOVUxMKQotICAgICB7Ci0tICAgICAgZnByaW50ZiAoc3RkZXJyLCAicmVhZGxpbmU6IHJl YWRsaW5lX2NhbGxiYWNrX3JlYWRfY2hhcigpIGNhbGxlZCB3aXRoIG5vIGhhbmRsZXIhXHJcbiIp OwotKyAgICAgIF9ybF9lcnJtc2cgKCJyZWFkbGluZV9jYWxsYmFja19yZWFkX2NoYXIoKSBjYWxs ZWQgd2l0aCBubyBoYW5kbGVyISIpOwotICAgICAgIGFib3J0ICgpOwotICAgICB9Ci0gCi0tICBt ZW1jcHkgKCh2b2lkICopb2xldmVsLCAodm9pZCAqKXJlYWRsaW5lX3RvcF9sZXZlbCwgc2l6ZW9m IChwcm9jZW52X3QpKTsKLS0gIGpjb2RlID0gc2V0am1wIChyZWFkbGluZV90b3BfbGV2ZWwpOwot KyAgbWVtY3B5ICgodm9pZCAqKW9sZXZlbCwgKHZvaWQgKilfcmxfdG9wX2xldmVsLCBzaXplb2Yg KHByb2NlbnZfdCkpOwotKyAgamNvZGUgPSBzZXRqbXAgKF9ybF90b3BfbGV2ZWwpOwotICAgaWYg KGpjb2RlKQotICAgICB7Ci0gICAgICAgKCpybF9yZWRpc3BsYXlfZnVuY3Rpb24pICgpOwotICAg ICAgIF9ybF93YW50X3JlZGlzcGxheSA9IDA7Ci0tICAgICAgbWVtY3B5ICgodm9pZCAqKXJlYWRs aW5lX3RvcF9sZXZlbCwgKHZvaWQgKilvbGV2ZWwsIHNpemVvZiAocHJvY2Vudl90KSk7Ci0rICAg ICAgbWVtY3B5ICgodm9pZCAqKV9ybF90b3BfbGV2ZWwsICh2b2lkICopb2xldmVsLCBzaXplb2Yg KHByb2NlbnZfdCkpOwotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotLSAgaWYgIChSTF9JU1NU QVRFIChSTF9TVEFURV9JU0VBUkNIKSkKLSsgIGRvCi0gICAgIHsKLS0gICAgICBlb2YgPSBfcmxf aXNlYXJjaF9jYWxsYmFjayAoX3JsX2lzY3h0KTsKLS0gICAgICBpZiAoZW9mID09IDAgJiYgKFJM X0lTU1RBVEUgKFJMX1NUQVRFX0lTRUFSQ0gpID09IDApICYmIFJMX0lTU1RBVEUgKFJMX1NUQVRF X0lOUFVUUEVORElORykpCi0tCXJsX2NhbGxiYWNrX3JlYWRfY2hhciAoKTsKLSsgICAgICBSTF9D SEVDS19TSUdOQUxTICgpOwotKyAgICAgIGlmICAoUkxfSVNTVEFURSAoUkxfU1RBVEVfSVNFQVJD SCkpCi0rCXsKLSsJICBlb2YgPSBfcmxfaXNlYXJjaF9jYWxsYmFjayAoX3JsX2lzY3h0KTsKLSsJ ICBpZiAoZW9mID09IDAgJiYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0lTRUFSQ0gpID09IDApICYm IFJMX0lTU1RBVEUgKFJMX1NUQVRFX0lOUFVUUEVORElORykpCi0rCSAgICBybF9jYWxsYmFja19y ZWFkX2NoYXIgKCk7Ci0gCi0tICAgICAgcmV0dXJuOwotLSAgICB9Ci0tICBlbHNlIGlmICAoUkxf SVNTVEFURSAoUkxfU1RBVEVfTlNFQVJDSCkpCi0tICAgIHsKLS0gICAgICBlb2YgPSBfcmxfbnNl YXJjaF9jYWxsYmFjayAoX3JsX25zY3h0KTsKLS0gICAgICByZXR1cm47Ci0tICAgIH0KLS0gIGVs c2UgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX05VTUVSSUNBUkcpKQotLSAgICB7Ci0tICAgICAg ZW9mID0gX3JsX2FyZ19jYWxsYmFjayAoX3JsX2FyZ2N4dCk7Ci0tICAgICAgaWYgKGVvZiA9PSAw ICYmIChSTF9JU1NUQVRFIChSTF9TVEFURV9OVU1FUklDQVJHKSA9PSAwKSAmJiBSTF9JU1NUQVRF IChSTF9TVEFURV9JTlBVVFBFTkRJTkcpKQotLQlybF9jYWxsYmFja19yZWFkX2NoYXIgKCk7Ci0t ICAgICAgLyogWFhYIC0gdGhpcyBzaG91bGQgaGFuZGxlIF9ybF9sYXN0X2NvbW1hbmRfd2FzX2tp bGwgYmV0dGVyICovCi0tICAgICAgZWxzZSBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTlVNRVJJ Q0FSRykgPT0gMCkKLS0JX3JsX2ludGVybmFsX2NoYXJfY2xlYW51cCAoKTsKLSsJICByZXR1cm47 Ci0rCX0KLSsgICAgICBlbHNlIGlmICAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTlNFQVJDSCkpCi0r CXsKLSsJICBlb2YgPSBfcmxfbnNlYXJjaF9jYWxsYmFjayAoX3JsX25zY3h0KTsKLSsJICByZXR1 cm47Ci0rCX0KLSsjaWYgZGVmaW5lZCAoVklfTU9ERSkKLSsgICAgICBlbHNlIGlmIChSTF9JU1NU QVRFIChSTF9TVEFURV9WSU1PVElPTikpCi0rCXsKLSsJICBlb2YgPSBfcmxfdmlfZG9tb3ZlX2Nh bGxiYWNrIChfcmxfdmltdmN4dCk7Ci0rCSAgLyogU2hvdWxkIGhhbmRsZSBldmVyeXRoaW5nLCBp bmNsdWRpbmcgY2xlYW51cCwgbnVtZXJpYyBhcmd1bWVudHMsCi0rCSAgICAgYW5kIHR1cm5pbmcg b2ZmIFJMX1NUQVRFX1ZJTU9USU9OICovCi0rCSAgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX05V TUVSSUNBUkcpID09IDApCi0rCSAgICBfcmxfaW50ZXJuYWxfY2hhcl9jbGVhbnVwICgpOwotIAot LSAgICAgIHJldHVybjsKLS0gICAgfQotLSAgZWxzZSBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVf TVVMVElLRVkpKQotLSAgICB7Ci0tICAgICAgZW9mID0gX3JsX2Rpc3BhdGNoX2NhbGxiYWNrIChf cmxfa3NjeHQpOwkvKiBGb3Igbm93ICovCi0tICAgICAgd2hpbGUgKChlb2YgPT0gLTEgfHwgZW9m ID09IC0yKSAmJiBSTF9JU1NUQVRFIChSTF9TVEFURV9NVUxUSUtFWSkgJiYgX3JsX2tzY3h0ICYm IChfcmxfa3NjeHQtPmZsYWdzICYgS1NFUV9ESVNQQVRDSEVEKSkKLS0JZW9mID0gX3JsX2Rpc3Bh dGNoX2NhbGxiYWNrIChfcmxfa3NjeHQpOwotLSAgICAgIGlmIChSTF9JU1NUQVRFIChSTF9TVEFU RV9NVUxUSUtFWSkgPT0gMCkKLSsJICByZXR1cm47Ci0rCX0KLSsjZW5kaWYKLSsgICAgICBlbHNl IGlmIChSTF9JU1NUQVRFIChSTF9TVEFURV9OVU1FUklDQVJHKSkKLSsJewotKwkgIGVvZiA9IF9y bF9hcmdfY2FsbGJhY2sgKF9ybF9hcmdjeHQpOwotKwkgIGlmIChlb2YgPT0gMCAmJiAoUkxfSVNT VEFURSAoUkxfU1RBVEVfTlVNRVJJQ0FSRykgPT0gMCkgJiYgUkxfSVNTVEFURSAoUkxfU1RBVEVf SU5QVVRQRU5ESU5HKSkKLSsJICAgIHJsX2NhbGxiYWNrX3JlYWRfY2hhciAoKTsKLSsJICAvKiBY WFggLSB0aGlzIHNob3VsZCBoYW5kbGUgX3JsX2xhc3RfY29tbWFuZF93YXNfa2lsbCBiZXR0ZXIg Ki8KLSsJICBlbHNlIGlmIChSTF9JU1NUQVRFIChSTF9TVEFURV9OVU1FUklDQVJHKSA9PSAwKQot KwkgICAgX3JsX2ludGVybmFsX2NoYXJfY2xlYW51cCAoKTsKLSsKLSsJICByZXR1cm47Ci0rCX0K LSsgICAgICBlbHNlIGlmIChSTF9JU1NUQVRFIChSTF9TVEFURV9NVUxUSUtFWSkpCi0gCXsKLS0J ICBfcmxfaW50ZXJuYWxfY2hhcl9jbGVhbnVwICgpOwotLQkgIF9ybF93YW50X3JlZGlzcGxheSA9 IDE7Ci0rCSAgZW9mID0gX3JsX2Rpc3BhdGNoX2NhbGxiYWNrIChfcmxfa3NjeHQpOwkvKiBGb3Ig bm93ICovCi0rCSAgd2hpbGUgKChlb2YgPT0gLTEgfHwgZW9mID09IC0yKSAmJiBSTF9JU1NUQVRF IChSTF9TVEFURV9NVUxUSUtFWSkgJiYgX3JsX2tzY3h0ICYmIChfcmxfa3NjeHQtPmZsYWdzICYg S1NFUV9ESVNQQVRDSEVEKSkKLSsJICAgIGVvZiA9IF9ybF9kaXNwYXRjaF9jYWxsYmFjayAoX3Js X2tzY3h0KTsKLSsJICBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTVVMVElLRVkpID09IDApCi0r CSAgICB7Ci0rCSAgICAgIF9ybF9pbnRlcm5hbF9jaGFyX2NsZWFudXAgKCk7Ci0rCSAgICAgIF9y bF93YW50X3JlZGlzcGxheSA9IDE7Ci0rCSAgICB9Ci0gCX0KLS0gICAgfQotLSAgZWxzZSBpZiAo X3JsX2NhbGxiYWNrX2Z1bmMpCi0tICAgIHsKLS0gICAgICAvKiBUaGlzIGFsbG93cyBmdW5jdGlv bnMgdGhhdCBzaW1wbHkgbmVlZCB0byByZWFkIGFuIGFkZGl0aW9uYWwgY2hhcmFjdGVyCi0tCSAo bGlrZSBxdW90ZWQtaW5zZXJ0KSB0byByZWdpc3RlciBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3 aGVuIGlucHV0IGlzCi0tCSBhdmFpbGFibGUuICBfcmxfY2FsbGJhY2tfZGF0YSBpcyBzaW1wbHkg YSBwb2ludGVyIHRvIGEgc3RydWN0IHRoYXQgaGFzCi0tCSB0aGUgYXJndW1lbnQgY291bnQgb3Jp Z2luYWxseSBwYXNzZWQgdG8gdGhlIHJlZ2lzdGVyaW5nIGZ1bmN0aW9uIGFuZAotLQkgc3BhY2Ug Zm9yIGFueSBhZGRpdGlvbmFsIHBhcmFtZXRlcnMuICAqLwotLSAgICAgIGVvZiA9ICgqX3JsX2Nh bGxiYWNrX2Z1bmMpIChfcmxfY2FsbGJhY2tfZGF0YSk7Ci0tICAgICAgLyogSWYgdGhlIGZ1bmN0 aW9uIGBkZXJlZ2lzdGVycycgaXRzZWxmLCBtYWtlIHN1cmUgdGhlIGRhdGEgaXMgY2xlYW5lZAot LQkgdXAuICovCi0tICAgICAgaWYgKF9ybF9jYWxsYmFja19mdW5jID09IDApCi0rICAgICAgZWxz ZSBpZiAoX3JsX2NhbGxiYWNrX2Z1bmMpCi0gCXsKLS0JICBpZiAoX3JsX2NhbGxiYWNrX2RhdGEp IAkKLSsJICAvKiBUaGlzIGFsbG93cyBmdW5jdGlvbnMgdGhhdCBzaW1wbHkgbmVlZCB0byByZWFk IGFuIGFkZGl0aW9uYWwKLSsJICAgICBjaGFyYWN0ZXIgKGxpa2UgcXVvdGVkLWluc2VydCkgdG8g cmVnaXN0ZXIgYSBmdW5jdGlvbiB0byBiZQotKwkgICAgIGNhbGxlZCB3aGVuIGlucHV0IGlzIGF2 YWlsYWJsZS4gIF9ybF9jYWxsYmFja19kYXRhIGlzIHNpbXBseSBhCi0rCSAgICAgcG9pbnRlciB0 byBhIHN0cnVjdCB0aGF0IGhhcyB0aGUgYXJndW1lbnQgY291bnQgb3JpZ2luYWxseQotKwkgICAg IHBhc3NlZCB0byB0aGUgcmVnaXN0ZXJpbmcgZnVuY3Rpb24gYW5kIHNwYWNlIGZvciBhbnkgYWRk aXRpb25hbAotKwkgICAgIHBhcmFtZXRlcnMuICAqLwotKwkgIGVvZiA9ICgqX3JsX2NhbGxiYWNr X2Z1bmMpIChfcmxfY2FsbGJhY2tfZGF0YSk7Ci0rCSAgLyogSWYgdGhlIGZ1bmN0aW9uIGBkZXJl Z2lzdGVycycgaXRzZWxmLCBtYWtlIHN1cmUgdGhlIGRhdGEgaXMKLSsJICAgICBjbGVhbmVkIHVw LiAqLwotKwkgIGlmIChfcmxfY2FsbGJhY2tfZnVuYyA9PSAwKQotIAkgICAgewotLQkgICAgICBf cmxfY2FsbGJhY2tfZGF0YV9kaXNwb3NlIChfcmxfY2FsbGJhY2tfZGF0YSk7Ci0tCSAgICAgIF9y bF9jYWxsYmFja19kYXRhID0gMDsKLSsJICAgICAgaWYgKF9ybF9jYWxsYmFja19kYXRhKSAJCi0r CQl7Ci0rCQkgIF9ybF9jYWxsYmFja19kYXRhX2Rpc3Bvc2UgKF9ybF9jYWxsYmFja19kYXRhKTsK LSsJCSAgX3JsX2NhbGxiYWNrX2RhdGEgPSAwOwotKwkJfQotKwkgICAgICBfcmxfaW50ZXJuYWxf Y2hhcl9jbGVhbnVwICgpOwotIAkgICAgfQotLQkgIF9ybF9pbnRlcm5hbF9jaGFyX2NsZWFudXAg KCk7Ci0gCX0KLS0gICAgfQotLSAgZWxzZQotLSAgICBlb2YgPSByZWFkbGluZV9pbnRlcm5hbF9j aGFyICgpOwotKyAgICAgIGVsc2UKLSsJZW9mID0gcmVhZGxpbmVfaW50ZXJuYWxfY2hhciAoKTsK LSAKLS0gIGlmIChybF9kb25lID09IDAgJiYgX3JsX3dhbnRfcmVkaXNwbGF5KQotLSAgICB7Ci0t ICAgICAgKCpybF9yZWRpc3BsYXlfZnVuY3Rpb24pICgpOwotLSAgICAgIF9ybF93YW50X3JlZGlz cGxheSA9IDA7Ci0tICAgIH0KLSsgICAgICBSTF9DSEVDS19TSUdOQUxTICgpOwotKyAgICAgIGlm IChybF9kb25lID09IDAgJiYgX3JsX3dhbnRfcmVkaXNwbGF5KQotKwl7Ci0rCSAgKCpybF9yZWRp c3BsYXlfZnVuY3Rpb24pICgpOwotKwkgIF9ybF93YW50X3JlZGlzcGxheSA9IDA7Ci0rCX0KLSAK LS0gIC8qIFdlIGxvb3AgaW4gY2FzZSBzb21lIGZ1bmN0aW9uIGhhcyBwdXNoZWQgaW5wdXQgYmFj ayB3aXRoIHJsX2V4ZWN1dGVfbmV4dC4gKi8KLS0gIGZvciAoOzspCi0tICAgIHsKLSAgICAgICBp ZiAocmxfZG9uZSkKLSAJewotIAkgIGxpbmUgPSByZWFkbGluZV9pbnRlcm5hbF90ZWFyZG93biAo ZW9mKTsKLUBAIC0yMTMsMTEgKzIyOCw4IEBAIHJsX2NhbGxiYWNrX3JlYWRfY2hhciAoKQotIAkg IGlmIChpbl9oYW5kbGVyID09IDAgJiYgcmxfbGluZWZ1bmMpCi0gCSAgICBfcmxfY2FsbGJhY2tf bmV3bGluZSAoKTsKLSAJfQotLSAgICAgIGlmIChybF9wZW5kaW5nX2lucHV0IHx8IF9ybF9wdXNo ZWRfaW5wdXRfYXZhaWxhYmxlICgpIHx8IFJMX0lTU1RBVEUgKFJMX1NUQVRFX01BQ1JPSU5QVVQp KQotLQllb2YgPSByZWFkbGluZV9pbnRlcm5hbF9jaGFyICgpOwotLSAgICAgIGVsc2UKLS0JYnJl YWs7Ci0gICAgIH0KLSsgIHdoaWxlIChybF9wZW5kaW5nX2lucHV0IHx8IF9ybF9wdXNoZWRfaW5w dXRfYXZhaWxhYmxlICgpIHx8IFJMX0lTU1RBVEUgKFJMX1NUQVRFX01BQ1JPSU5QVVQpKTsKLSB9 Ci0gCi0gLyogUmVtb3ZlIHRoZSBoYW5kbGVyLCBhbmQgbWFrZSBzdXJlIHRoZSB0ZXJtaW5hbCBp cyBpbiBpdHMgbm9ybWFsIHN0YXRlLiAqLwotQEAgLTIyNiw2ICsyMzgsNyBAQCBybF9jYWxsYmFj a19oYW5kbGVyX3JlbW92ZSAoKQotIHsKLSAgIHJsX2xpbmVmdW5jID0gTlVMTDsKLSAgIFJMX1VO U0VUU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKTsKLSsgIFJMX0NIRUNLX1NJR05BTFMgKCk7Ci0g ICBpZiAoaW5faGFuZGxlcikKLSAgICAgewotICAgICAgIGluX2hhbmRsZXIgPSAwOwotQEAgLTI1 NCw4ICsyNjcsNyBAQCBfcmxfY2FsbGJhY2tfZGF0YV9hbGxvYyAoY291bnQpCi0gdm9pZCBfcmxf Y2FsbGJhY2tfZGF0YV9kaXNwb3NlIChhcmcpCi0gICAgICBfcmxfY2FsbGJhY2tfZ2VuZXJpY19h cmcgKmFyZzsKLSB7Ci0tICBpZiAoYXJnKQotLSAgICBmcmVlIChhcmcpOwotKyAgeGZyZWUgKGFy Zyk7Ci0gfQotIAotICNlbmRpZgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUv Y2hhcmRlZnMuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFk bGluZS9jaGFyZGVmcy5oCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9jaGFyZGVmcy5oCTIwMTEtMDctMDMgMTA6NDE6 MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyNCArMSwyMyBAQAotIC8qIGNoYXJkZWZzLmggLS0g Q2hhcmFjdGVyIGRlZmluaXRpb25zIGZvciByZWFkbGluZS4gKi8KLSAKLS0vKiBDb3B5cmlnaHQg KEMpIDE5OTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChD KSAxOTk0LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCi0t ICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3Rv cnkgZWRpdGluZy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExp YnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4 dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0gCi0tICAgVGhl IEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0Ci0tICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCi0rICAgUmVhZGxpbmUgaXMgZnJl ZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKLS0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5Ci0tICAgb2YgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0tICAgaXMgZ2VuZXJh bGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8g bm90Ci0tICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rv biwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBSZWFkbGlu ZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAot ICNpZm5kZWYgX0NIQVJERUZTX0hfCi0gI2RlZmluZSBfQ0hBUkRFRlNfSF8KLUluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2NvbXBhdC5jCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2NvbXBhdC5jCTIwMTEtMDctMDMgMTA6NDA6NTMu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9jb21wYXQu YwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjQgQEAK LSAvKiBjb21wYXQuYyAtLSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBmdW5jdGlvbnMuICovCi0g Ci0tLyogQ29weXJpZ2h0IChDKSAyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot Ky8qIENvcHlyaWdodCAoQykgMjAwMC0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotIAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwg YSBsaWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZl IGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFk aW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0 aW5nLgotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAg IFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFu ZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNF TlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0 ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwg U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFs b25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCi0rKi8KLSsKLSAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5l ZCAoSEFWRV9DT05GSUdfSCkKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2Nv bXBsZXRlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxp bmUvY29tcGxldGUuYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvY29tcGxldGUuYwkyMDExLTA3LTAzIDEwOjQxOjIx LjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjQgQEAKLSAvKiBjb21wbGV0ZS5jIC0tIGZp bGVuYW1lIGNvbXBsZXRpb24gZm9yIHJlYWRsaW5lLiAqLwotIAotLS8qIENvcHlyaWdodCAoQykg MTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAo QykgMTk4Ny0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgot LSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0 b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBM aWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRl eHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotIAotLSAgIFRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZy ZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVy YWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRv IG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0 b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxp bmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSsK LSAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdf SCkKLUBAIC0xMTAsOCArMTEwLDggQEAgc3RhdGljIGludCBnZXRfeV9vcl9uIFBBUkFNUygoaW50 KSk7Ci0gc3RhdGljIGludCBfcmxfaW50ZXJuYWxfcGFnZXIgUEFSQU1TKChpbnQpKTsKLSBzdGF0 aWMgY2hhciAqcHJpbnRhYmxlX3BhcnQgUEFSQU1TKChjaGFyICopKTsKLSBzdGF0aWMgaW50IGZu d2lkdGggUEFSQU1TKChjb25zdCBjaGFyICopKTsKLS1zdGF0aWMgaW50IGZucHJpbnQgUEFSQU1T KChjb25zdCBjaGFyICopKTsKLS1zdGF0aWMgaW50IHByaW50X2ZpbGVuYW1lIFBBUkFNUygoY2hh ciAqLCBjaGFyICopKTsKLStzdGF0aWMgaW50IGZucHJpbnQgUEFSQU1TKChjb25zdCBjaGFyICos IGludCkpOwotK3N0YXRpYyBpbnQgcHJpbnRfZmlsZW5hbWUgUEFSQU1TKChjaGFyICosIGNoYXIg KiwgaW50KSk7Ci0gCi0gc3RhdGljIGNoYXIgKipnZW5fY29tcGxldGlvbl9tYXRjaGVzIFBBUkFN UygoY2hhciAqLCBpbnQsIGludCwgcmxfY29tcGVudHJ5X2Z1bmNfdCAqLCBpbnQsIGludCkpOwot IAotQEAgLTExOSw5ICsxMTksMTEgQEAgc3RhdGljIGNoYXIgKipyZW1vdmVfZHVwbGljYXRlX21h dGNoZXMgUAotIHN0YXRpYyB2b2lkIGluc2VydF9tYXRjaCBQQVJBTVMoKGNoYXIgKiwgaW50LCBp bnQsIGNoYXIgKikpOwotIHN0YXRpYyBpbnQgYXBwZW5kX3RvX21hdGNoIFBBUkFNUygoY2hhciAq LCBpbnQsIGludCwgaW50KSk7Ci0gc3RhdGljIHZvaWQgaW5zZXJ0X2FsbF9tYXRjaGVzIFBBUkFN UygoY2hhciAqKiwgaW50LCBjaGFyICopKTsKLStzdGF0aWMgaW50IGNvbXBsZXRlX2ZuY21wIFBB UkFNUygoY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KSk7Ci0gc3RhdGljIHZv aWQgZGlzcGxheV9tYXRjaGVzIFBBUkFNUygoY2hhciAqKikpOwotIHN0YXRpYyBpbnQgY29tcHV0 ZV9sY2Rfb2ZfbWF0Y2hlcyBQQVJBTVMoKGNoYXIgKiosIGludCwgY29uc3QgY2hhciAqKSk7Ci0g c3RhdGljIGludCBwb3N0cHJvY2Vzc19tYXRjaGVzIFBBUkFNUygoY2hhciAqKiosIGludCkpOwot K3N0YXRpYyBpbnQgY29tcGxldGVfZ2V0X3NjcmVlbndpZHRoIFBBUkFNUygodm9pZCkpOwotIAot IHN0YXRpYyBjaGFyICptYWtlX3F1b3RlZF9yZXBsYWNlbWVudCBQQVJBTVMoKGNoYXIgKiwgaW50 LCBjaGFyICopKTsKLSAKLUBAIC0xNTcsMTMgKzE1OSwyNyBAQCBpbnQgX3JsX3ByaW50X2NvbXBs ZXRpb25zX2hvcml6b250YWxseTsKLSAjaWYgZGVmaW5lZCAoX19NU0RPU19fKSAmJiAhZGVmaW5l ZCAoX19ESkdQUF9fKQotIGludCBfcmxfY29tcGxldGlvbl9jYXNlX2ZvbGQgPSAxOwotICNlbHNl Ci0taW50IF9ybF9jb21wbGV0aW9uX2Nhc2VfZm9sZDsKLStpbnQgX3JsX2NvbXBsZXRpb25fY2Fz ZV9mb2xkID0gMDsKLSAjZW5kaWYKLSAKLS0vKiBJZiBub24temVybywgZG9uJ3QgbWF0Y2ggaGlk ZGVuIGZpbGVzIChmaWxlbmFtZXMgYmVnaW5uaW5nIHdpdGggYSBgLicgb24KLSsvKiBOb24temVy byBtZWFucyB0aGF0IGAtJyBhbmQgYF8nIGFyZSBlcXVpdmFsZW50IHdoZW4gY29tcGFyaW5nIGZp bGVuYW1lcwotKyAgZm9yIGNvbXBsZXRpb24uICovCi0raW50IF9ybF9jb21wbGV0aW9uX2Nhc2Vf bWFwID0gMDsKLSsKLSsvKiBJZiB6ZXJvLCBkb24ndCBtYXRjaCBoaWRkZW4gZmlsZXMgKGZpbGVu YW1lcyBiZWdpbm5pbmcgd2l0aCBhIGAuJyBvbgotICAgIFVuaXgpIHdoZW4gZG9pbmcgZmlsZW5h bWUgY29tcGxldGlvbi4gKi8KLSBpbnQgX3JsX21hdGNoX2hpZGRlbl9maWxlcyA9IDE7Ci0gCi0r LyogTGVuZ3RoIGluIGNoYXJhY3RlcnMgb2YgYSBjb21tb24gcHJlZml4IHJlcGxhY2VkIHdpdGgg YW4gZWxsaXBzaXMgKGAuLi4nKQotKyAgIHdoZW4gZGlzcGxheWluZyBjb21wbGV0aW9uIG1hdGNo ZXMuICBNYXRjaGVzIHdob3NlIHByaW50YWJsZSBwb3J0aW9uIGhhcwotKyAgIG1vcmUgdGhhbiB0 aGlzIG51bWJlciBvZiBkaXNwbGF5aW5nIGNoYXJhY3RlcnMgaW4gY29tbW9uIHdpbGwgaGF2ZSB0 aGUgY29tbW9uCi0rICAgZGlzcGxheSBwcmVmaXggcmVwbGFjZWQgd2l0aCBhbiBlbGxpcHNpcy4g Ki8KLStpbnQgX3JsX2NvbXBsZXRpb25fcHJlZml4X2Rpc3BsYXlfbGVuZ3RoID0gMDsKLSsKLSsv KiBUaGUgcmVhZGxpbmUtcHJpdmF0ZSBudW1iZXIgb2Ygc2NyZWVuIGNvbHVtbnMgdG8gdXNlIHdo ZW4gZGlzcGxheWluZwotKyAgIG1hdGNoZXMuICBJZiA8IDAgb3IgPiBfcmxfc2NyZWVud2lkdGgs IGl0IGlzIGlnbm9yZWQuICovCi0raW50IF9ybF9jb21wbGV0aW9uX2NvbHVtbnMgPSAtMTsKLSsK LSAvKiBHbG9iYWwgdmFyaWFibGVzIGF2YWlsYWJsZSB0byBhcHBsaWNhdGlvbnMgdXNpbmcgcmVh ZGxpbmUuICovCi0gCi0gI2lmIGRlZmluZWQgKFZJU0lCTEVfU1RBVFMpCi1AQCAtMTczLDYgKzE4 OSwxNiBAQCBpbnQgX3JsX21hdGNoX2hpZGRlbl9maWxlcyA9IDE7Ci0gaW50IHJsX3Zpc2libGVf c3RhdHMgPSAwOwotICNlbmRpZiAvKiBWSVNJQkxFX1NUQVRTICovCi0gCi0rLyogSWYgbm9uLXpl cm8sIHdoZW4gY29tcGxldGluZyBpbiB0aGUgbWlkZGxlIG9mIGEgd29yZCwgZG9uJ3QgaW5zZXJ0 Ci0rICAgY2hhcmFjdGVycyBmcm9tIHRoZSBtYXRjaCB0aGF0IG1hdGNoIGNoYXJhY3RlcnMgZm9s bG93aW5nIHBvaW50IGluCi0rICAgdGhlIHdvcmQuICBUaGlzIG1lYW5zLCBmb3IgaW5zdGFuY2Us IGNvbXBsZXRpbmcgd2hlbiB0aGUgY3Vyc29yIGlzCi0rICAgYWZ0ZXIgdGhlIGBlJyBpbiBgTWFr ZWZpbGUnIHdvbid0IHJlc3VsdCBpbiBgTWFrZWZpbGVmaWxlJy4gKi8KLStpbnQgX3JsX3NraXBf Y29tcGxldGVkX3RleHQgPSAwOwotKwotKy8qIElmIG5vbi16ZXJvLCBtZW51IGNvbXBsZXRpb24g ZGlzcGxheXMgdGhlIGNvbW1vbiBwcmVmaXggZmlyc3QgaW4gdGhlCi0rICAgY3ljbGUgb2YgcG9z c2libGUgY29tcGxldGlvbnMgaW5zdGVhZCBvZiB0aGUgbGFzdC4gKi8KLStpbnQgX3JsX21lbnVf Y29tcGxldGVfcHJlZml4X2ZpcnN0ID0gMDsKLSsKLSAvKiBJZiBub24temVybywgdGhlbiB0aGlz IGlzIHRoZSBhZGRyZXNzIG9mIGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuCi0gICAgY29tcGxldGlu ZyBvbiBhIGRpcmVjdG9yeSBuYW1lLiAgVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoCi0gICAg dGhlIGFkZHJlc3Mgb2YgYSBzdHJpbmcgKHRoZSBjdXJyZW50IGRpcmVjdG9yeSBuYW1lKSBhcyBh biBhcmcuICovCi1AQCAtMTgwLDYgKzIwNiwxNyBAQCBybF9pY3BwZnVuY190ICpybF9kaXJlY3Rv cnlfY29tcGxldGlvbl9oCi0gCi0gcmxfaWNwcGZ1bmNfdCAqcmxfZGlyZWN0b3J5X3Jld3JpdGVf aG9vayA9IChybF9pY3BwZnVuY190ICopTlVMTDsKLSAKLSsvKiBJZiBub24temVybywgdGhpcyBp cyB0aGUgYWRkcmVzcyBvZiBhIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiByZWFkaW5nCi0rICAgZGly ZWN0b3J5IGVudHJpZXMgZnJvbSB0aGUgZmlsZXN5c3RlbSBmb3IgY29tcGxldGlvbiBhbmQgY29t cGFyaW5nCi0rICAgdGhlbSB0byB0aGUgcGFydGlhbCB3b3JkIHRvIGJlIGNvbXBsZXRlZC4gIFRo ZSBmdW5jdGlvbiBzaG91bGQKLSsgICBlaXRoZXIgcmV0dXJuIGl0cyBmaXJzdCBhcmd1bWVudCAo aWYgbm8gY29udmVyc2lvbiB0YWtlcyBwbGFjZSkgb3IKLSsgICBuZXdseS1hbGxvY2F0ZWQgbWVt b3J5LiAgVGhpcyBjYW4sIGZvciBpbnN0YW5jZSwgY29udmVydCBmaWxlbmFtZXMKLSsgICBiZXR3 ZWVuIGNoYXJhY3RlciBzZXRzIGZvciBjb21wYXJpc29uIGFnYWluc3Qgd2hhdCdzIHR5cGVkIGF0 IHRoZQotKyAgIGtleWJvYXJkLiAgVGhlIHJldHVybmVkIHZhbHVlIGlzIHdoYXQgaXMgYWRkZWQg dG8gdGhlIGxpc3Qgb2YKLSsgICBtYXRjaGVzLiAgVGhlIHNlY29uZCBhcmd1bWVudCBpcyB0aGUg bGVuZ3RoIG9mIHRoZSBmaWxlbmFtZSB0byBiZQotKyAgIGNvbnZlcnRlZC4gKi8KLStybF9kZXF1 b3RlX2Z1bmNfdCAqcmxfZmlsZW5hbWVfcmV3cml0ZV9ob29rID0gKHJsX2RlcXVvdGVfZnVuY190 ICopTlVMTDsKLSsKLSAvKiBOb24temVybyBtZWFucyByZWFkbGluZSBjb21wbGV0aW9uIGZ1bmN0 aW9ucyBwZXJmb3JtIHRpbGRlIGV4cGFuc2lvbi4gKi8KLSBpbnQgcmxfY29tcGxldGVfd2l0aF90 aWxkZV9leHBhbnNpb24gPSAwOwotIAotQEAgLTE4OCw2ICsyMjUsMTAgQEAgaW50IHJsX2NvbXBs ZXRlX3dpdGhfdGlsZGVfZXhwYW5zaW9uID0gMAotICAgIGNvbXBsZXRlci4gKi8KLSBybF9jb21w ZW50cnlfZnVuY190ICpybF9jb21wbGV0aW9uX2VudHJ5X2Z1bmN0aW9uID0gKHJsX2NvbXBlbnRy eV9mdW5jX3QgKilOVUxMOwotIAotKy8qIFBvaW50ZXIgdG8gZ2VuZXJhdG9yIGZ1bmN0aW9uIGZv ciBybF9tZW51X2NvbXBsZXRlICgpLiAgTlVMTCBtZWFucyB0byB1c2UKLSsgICAqcmxfY29tcGxl dGlvbl9lbnRyeV9mdW5jdGlvbiAoc2VlIGFib3ZlKS4gKi8KLStybF9jb21wZW50cnlfZnVuY190 ICpybF9tZW51X2NvbXBsZXRpb25fZW50cnlfZnVuY3Rpb24gPSAocmxfY29tcGVudHJ5X2Z1bmNf dCAqKU5VTEw7Ci0rCi0gLyogUG9pbnRlciB0byBhbHRlcm5hdGl2ZSBmdW5jdGlvbiB0byBjcmVh dGUgbWF0Y2hlcy4KLSAgICBGdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBURVhULCBTVEFSVCwgYW5k IEVORC4KLSAgICBTVEFSVCBhbmQgRU5EIGFyZSBpbmRpY2VzIGluIFJMX0xJTkVfQlVGRkVSIHNh eWluZyB3aGF0IHRoZSBib3VuZGFyaWVzCi1AQCAtMzI1LDExICszNjYsMjAgQEAgaW50IHJsX2Nv bXBsZXRpb25fbWFya19zeW1saW5rX2RpcnM7Ci0gLyogSWYgbm9uLXplcm8sIGluaGliaXQgY29t cGxldGlvbiAodGVtcG9yYXJpbHkpLiAqLwotIGludCBybF9pbmhpYml0X2NvbXBsZXRpb247Ci0g Ci0rLyogU2V0IHRvIHRoZSBsYXN0IGtleSB1c2VkIHRvIGludm9rZSBvbmUgb2YgdGhlIGNvbXBs ZXRpb24gZnVuY3Rpb25zICovCi0raW50IHJsX2NvbXBsZXRpb25faW52b2tpbmdfa2V5OwotKwot Ky8qIElmIG5vbi16ZXJvLCBzb3J0IHRoZSBjb21wbGV0aW9uIG1hdGNoZXMuICBPbiBieSBkZWZh dWx0LiAqLwotK2ludCBybF9zb3J0X2NvbXBsZXRpb25fbWF0Y2hlcyA9IDE7Ci0rCi0gLyogVmFy aWFibGVzIGxvY2FsIHRvIHRoaXMgZmlsZS4gKi8KLSAKLSAvKiBMb2NhbCB2YXJpYWJsZSBzdGF0 ZXMgd2hhdCBoYXBwZW5lZCBkdXJpbmcgdGhlIGxhc3QgY29tcGxldGlvbiBhdHRlbXB0LiAqLwot IHN0YXRpYyBpbnQgY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlcjsKLSAKLSsvKiBUaGUgcmVzdWx0 IG9mIHRoZSBxdWVyeSB0byB0aGUgdXNlciBhYm91dCBkaXNwbGF5aW5nIGNvbXBsZXRpb24gbWF0 Y2hlcyAqLwotK3N0YXRpYyBpbnQgY29tcGxldGlvbl95X29yX247Ci0rCi0gLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gLyoJCQkJICAgICAqLwotIC8qICAgIEJpbmRh YmxlIGNvbXBsZXRpb24gZnVuY3Rpb25zICAqLwotQEAgLTM0Myw2ICszOTMsOCBAQCBpbnQKLSBy bF9jb21wbGV0ZSAoaWdub3JlLCBpbnZva2luZ19rZXkpCi0gICAgICBpbnQgaWdub3JlLCBpbnZv a2luZ19rZXk7Ci0gewotKyAgcmxfY29tcGxldGlvbl9pbnZva2luZ19rZXkgPSBpbnZva2luZ19r ZXk7Ci0rCi0gICBpZiAocmxfaW5oaWJpdF9jb21wbGV0aW9uKQotICAgICByZXR1cm4gKF9ybF9p bnNlcnRfY2hhciAoaWdub3JlLCBpbnZva2luZ19rZXkpKTsKLSAgIGVsc2UgaWYgKHJsX2xhc3Rf ZnVuYyA9PSBybF9jb21wbGV0ZSAmJiAhY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlcikKLUBAIC0z NjAsNiArNDEyLDcgQEAgaW50Ci0gcmxfcG9zc2libGVfY29tcGxldGlvbnMgKGlnbm9yZSwgaW52 b2tpbmdfa2V5KQotICAgICAgaW50IGlnbm9yZSwgaW52b2tpbmdfa2V5OwotIHsKLSsgIHJsX2Nv bXBsZXRpb25faW52b2tpbmdfa2V5ID0gaW52b2tpbmdfa2V5OwotICAgcmV0dXJuIChybF9jb21w bGV0ZV9pbnRlcm5hbCAoJz8nKSk7Ci0gfQotIAotQEAgLTM2Nyw2ICs0MjAsNyBAQCBpbnQKLSBy bF9pbnNlcnRfY29tcGxldGlvbnMgKGlnbm9yZSwgaW52b2tpbmdfa2V5KQotICAgICAgaW50IGln bm9yZSwgaW52b2tpbmdfa2V5OwotIHsKLSsgIHJsX2NvbXBsZXRpb25faW52b2tpbmdfa2V5ID0g aW52b2tpbmdfa2V5OwotICAgcmV0dXJuIChybF9jb21wbGV0ZV9pbnRlcm5hbCAoJyonKSk7Ci0g fQotIAotQEAgLTM5NSw2ICs0NDksMTQgQEAgcmxfY29tcGxldGlvbl9tb2RlIChjZnVuYykKLSAv KgkJCQkgICAgKi8KLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotIAot Ky8qIFJlc2V0IHJlYWRsaW5lIHN0YXRlIG9uIGEgc2lnbmFsIG9yIG90aGVyIGV2ZW50LiAqLwot K3ZvaWQKLStfcmxfcmVzZXRfY29tcGxldGlvbl9zdGF0ZSAoKQotK3sKLSsgIHJsX2NvbXBsZXRp b25fZm91bmRfcXVvdGUgPSAwOwotKyAgcmxfY29tcGxldGlvbl9xdW90ZV9jaGFyYWN0ZXIgPSAw OwotK30KLSsKLSAvKiBTZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIHJlYWRsaW5lIHdvcmQgY29tcGxl dGlvbi4gIFRoZXNlIGFyZSB0aGUgdmFyaWFibGVzCi0gICAgdGhhdCBhcHBsaWNhdGlvbiBjb21w bGV0aW9uIGZ1bmN0aW9ucyBjYW4gY2hhbmdlIG9yIGluc3BlY3QuICovCi0gc3RhdGljIHZvaWQK LUBAIC00MDYsNiArNDY4LDcgQEAgc2V0X2NvbXBsZXRpb25fZGVmYXVsdHMgKHdoYXRfdG9fZG8p Ci0gICBybF9maWxlbmFtZV9xdW90aW5nX2Rlc2lyZWQgPSAxOwotICAgcmxfY29tcGxldGlvbl90 eXBlID0gd2hhdF90b19kbzsKLSAgIHJsX2NvbXBsZXRpb25fc3VwcHJlc3NfYXBwZW5kID0gcmxf Y29tcGxldGlvbl9zdXBwcmVzc19xdW90ZSA9IDA7Ci0rICBybF9jb21wbGV0aW9uX2FwcGVuZF9j aGFyYWN0ZXIgPSAnICc7Ci0gCi0gICAvKiBUaGUgY29tcGxldGlvbiBlbnRyeSBmdW5jdGlvbiBt YXkgb3B0aW9uYWxseSBjaGFuZ2UgdGhpcy4gKi8KLSAgIHJsX2NvbXBsZXRpb25fbWFya19zeW1s aW5rX2RpcnMgPSBfcmxfY29tcGxldGVfbWFya19zeW1saW5rX2RpcnM7Ci1AQCAtNDE4LDYgKzQ4 MSwxOSBAQCBnZXRfeV9vcl9uIChmb3JfcGFnZXIpCi0gewotICAgaW50IGM7Ci0gCi0rLyogRGlz YWJsZWQgZm9yIEdEQiBkdWUgdG8gdGhlIGdkYi5iYXNlL3JlYWRsaW5lLWFzay5leHAgcmVncmVz c2lvbi4KLSsgICBbcGF0Y2hdIHRlc3RzdWl0ZTogVGVzdCByZWFkbGluZS02LjIgImFzayIgcmVn cmVzc2lvbgotKyAgIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDExLTA1 L21zZzAwMDAyLmh0bWwgICovCi0rI2lmIDAKLSsgIC8qIEZvciBub3csIGRpc2FibGUgcGFnZXIg aW4gY2FsbGJhY2sgbW9kZSwgdW50aWwgd2UgbGF0ZXIgY29udmVydCB0byBzdGF0ZQotKyAgICAg ZHJpdmVuIGZ1bmN0aW9ucy4gIEhhdmUgdG8gd2FpdCB1bnRpbCBuZXh0IG1ham9yIHZlcnNpb24g dG8gYWRkIG5ldwotKyAgICAgc3RhdGUgZGVmaW5pdGlvbiwgc2luY2UgaXQgd2lsbCBjaGFuZ2Ug dmFsdWUgb2YgUkxfU1RBVEVfRE9ORS4gKi8KLSsjaWYgZGVmaW5lZCAoUkVBRExJTkVfQ0FMTEJB Q0tTKQotKyAgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSkKLSsgICAgcmV0dXJu IDE7Ci0rI2VuZGlmCi0rI2VuZGlmCi0rCi0gICBmb3IgKDs7KQotICAgICB7Ci0gICAgICAgUkxf U0VUU1RBVEUoUkxfU1RBVEVfTU9SRUlOUFVUKTsKLUBAIC00MjgsNyArNTA0LDcgQEAgZ2V0X3lf b3JfbiAoZm9yX3BhZ2VyKQotIAlyZXR1cm4gKDEpOwotICAgICAgIGlmIChjID09ICduJyB8fCBj ID09ICdOJyB8fCBjID09IFJVQk9VVCkKLSAJcmV0dXJuICgwKTsKLS0gICAgICBpZiAoYyA9PSBB Qk9SVF9DSEFSKQotKyAgICAgIGlmIChjID09IEFCT1JUX0NIQVIgfHwgYyA8IDApCi0gCV9ybF9h Ym9ydF9pbnRlcm5hbCAoKTsKLSAgICAgICBpZiAoZm9yX3BhZ2VyICYmIChjID09IE5FV0xJTkUg fHwgYyA9PSBSRVRVUk4pKQotIAlyZXR1cm4gKDIpOwotQEAgLTQ4MSw2ICs1NTcsMTMgQEAgc3Rh dF9jaGFyIChmaWxlbmFtZSkKLSAgIHN0cnVjdCBzdGF0IGZpbmZvOwotICAgaW50IGNoYXJhY3Rl ciwgcjsKLSAKLSsgIC8qIFNob3J0LWNpcmN1aXQgYSAvL3NlcnZlciBvbiBjeWd3aW4sIHNpbmNl IHRoYXQgd2lsbCBhbHdheXMgYmVoYXZlIGFzCi0rICAgICBhIGRpcmVjdG9yeS4gKi8KLSsjaWYg X19DWUdXSU5fXwotKyAgaWYgKGZpbGVuYW1lWzBdID09ICcvJyAmJiBmaWxlbmFtZVsxXSA9PSAn LycgJiYgc3RyY2hyIChmaWxlbmFtZSsyLCAnLycpID09IDApCi0rICAgIHJldHVybiAnLyc7Ci0r I2VuZGlmCi0rCi0gI2lmIGRlZmluZWQgKEhBVkVfTFNUQVQpICYmIGRlZmluZWQgKFNfSVNMTksp Ci0gICByID0gbHN0YXQgKGZpbGVuYW1lLCAmZmluZm8pOwotICNlbHNlCi1AQCAtNTgxLDcgKzY2 NCw3IEBAIGZud2lkdGggKHN0cmluZykKLSAgIHdpZHRoID0gcG9zID0gMDsKLSAgIHdoaWxlIChz dHJpbmdbcG9zXSkKLSAgICAgewotLSAgICAgIGlmIChDVFJMX0NIQVIgKCpzdHJpbmcpIHx8ICpz dHJpbmcgPT0gUlVCT1VUKQotKyAgICAgIGlmIChDVFJMX0NIQVIgKHN0cmluZ1twb3NdKSB8fCBz dHJpbmdbcG9zXSA9PSBSVUJPVVQpCi0gCXsKLSAJICB3aWR0aCArPSAyOwotIAkgIHBvcysrOwot QEAgLTYxNCwxNyArNjk3LDIwIEBAIGZud2lkdGggKHN0cmluZykKLSAgIHJldHVybiB3aWR0aDsK LSB9Ci0gCi0rI2RlZmluZSBFTExJUFNJU19MRU4JMwotKwotIHN0YXRpYyBpbnQKLS1mbnByaW50 ICh0b19wcmludCkKLStmbnByaW50ICh0b19wcmludCwgcHJlZml4X2J5dGVzKQotICAgICAgY29u c3QgY2hhciAqdG9fcHJpbnQ7Ci0rICAgICBpbnQgcHJlZml4X2J5dGVzOwotIHsKLS0gIGludCBw cmludGVkX2xlbjsKLSsgIGludCBwcmludGVkX2xlbiwgdzsKLSAgIGNvbnN0IGNoYXIgKnM7Ci0g I2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCi0gICBtYnN0YXRlX3QgcHM7Ci0gICBjb25z dCBjaGFyICplbmQ7Ci0gICBzaXplX3QgdGxlbjsKLS0gIGludCB3aWR0aCwgdzsKLSsgIGludCB3 aWR0aDsKLSAgIHdjaGFyX3Qgd2M7Ci0gCi0gICBlbmQgPSB0b19wcmludCArIHN0cmxlbiAodG9f cHJpbnQpICsgMTsKLUBAIC02MzIsNyArNzE4LDIzIEBAIGZucHJpbnQgKHRvX3ByaW50KQotICNl bmRpZgotIAotICAgcHJpbnRlZF9sZW4gPSAwOwotLSAgcyA9IHRvX3ByaW50OwotKwotKyAgLyog RG9uJ3QgcHJpbnQgb25seSB0aGUgZWxsaXBzaXMgaWYgdGhlIGNvbW1vbiBwcmVmaXggaXMgb25l IG9mIHRoZQotKyAgICAgcG9zc2libGUgY29tcGxldGlvbnMgKi8KLSsgIGlmICh0b19wcmludFtw cmVmaXhfYnl0ZXNdID09ICdcMCcpCi0rICAgIHByZWZpeF9ieXRlcyA9IDA7Ci0rCi0rICBpZiAo cHJlZml4X2J5dGVzKQotKyAgICB7Ci0rICAgICAgY2hhciBlbGxpcHNpczsKLSsKLSsgICAgICBl bGxpcHNpcyA9ICh0b19wcmludFtwcmVmaXhfYnl0ZXNdID09ICcuJykgPyAnXycgOiAnLic7Ci0r ICAgICAgZm9yICh3ID0gMDsgdyA8IEVMTElQU0lTX0xFTjsgdysrKQotKwlwdXRjIChlbGxpcHNp cywgcmxfb3V0c3RyZWFtKTsKLSsgICAgICBwcmludGVkX2xlbiA9IEVMTElQU0lTX0xFTjsKLSsg ICAgfQotKwotKyAgcyA9IHRvX3ByaW50ICsgcHJlZml4X2J5dGVzOwotICAgd2hpbGUgKCpzKQot ICAgICB7Ci0gICAgICAgaWYgKENUUkxfQ0hBUiAoKnMpKQotQEAgLTY5MSwxNCArNzkzLDE1IEBA IGZucHJpbnQgKHRvX3ByaW50KQotICAgIGZpbGVuYW1lcy4gIFJldHVybiB0aGUgbnVtYmVyIG9m IGNoYXJhY3RlcnMgd2Ugb3V0cHV0LiAqLwotIAotIHN0YXRpYyBpbnQKLS1wcmludF9maWxlbmFt ZSAodG9fcHJpbnQsIGZ1bGxfcGF0aG5hbWUpCi0rcHJpbnRfZmlsZW5hbWUgKHRvX3ByaW50LCBm dWxsX3BhdGhuYW1lLCBwcmVmaXhfYnl0ZXMpCi0gICAgICBjaGFyICp0b19wcmludCwgKmZ1bGxf cGF0aG5hbWU7Ci0rICAgICBpbnQgcHJlZml4X2J5dGVzOwotIHsKLSAgIGludCBwcmludGVkX2xl biwgZXh0ZW5zaW9uX2NoYXIsIHNsZW4sIHRsZW47Ci0gICBjaGFyICpzLCBjLCAqbmV3X2Z1bGxf cGF0aG5hbWUsICpkbjsKLSAKLSAgIGV4dGVuc2lvbl9jaGFyID0gMDsKLS0gIHByaW50ZWRfbGVu ID0gZm5wcmludCAodG9fcHJpbnQpOwotKyAgcHJpbnRlZF9sZW4gPSBmbnByaW50ICh0b19wcmlu dCwgcHJlZml4X2J5dGVzKTsKLSAKLSAjaWYgZGVmaW5lZCAoVklTSUJMRV9TVEFUUykKLSAgaWYg KHJsX2ZpbGVuYW1lX2NvbXBsZXRpb25fZGVzaXJlZCAmJiAocmxfdmlzaWJsZV9zdGF0cyB8fCBf cmxfY29tcGxldGVfbWFya19kaXJlY3RvcmllcykpCi1AQCAtNzUzLDcgKzg1Niw3IEBAIHByaW50 X2ZpbGVuYW1lICh0b19wcmludCwgZnVsbF9wYXRobmFtZSkKLSAJICBpZiAocGF0aF9pc2RpciAo bmV3X2Z1bGxfcGF0aG5hbWUpKQotIAkgICAgZXh0ZW5zaW9uX2NoYXIgPSAnLyc7Ci0gCi0tCSAg ZnJlZSAobmV3X2Z1bGxfcGF0aG5hbWUpOwotKwkgIHhmcmVlIChuZXdfZnVsbF9wYXRobmFtZSk7 Ci0gCSAgdG9fcHJpbnRbLTFdID0gYzsKLSAJfQotICAgICAgIGVsc2UKLUBAIC03NjgsNyArODcx LDcgQEAgcHJpbnRfZmlsZW5hbWUgKHRvX3ByaW50LCBmdWxsX3BhdGhuYW1lKQotIAkgICAgICBl eHRlbnNpb25fY2hhciA9ICcvJzsKLSAJfQotIAotLSAgICAgIGZyZWUgKHMpOwotKyAgICAgIHhm cmVlIChzKTsKLSAgICAgICBpZiAoZXh0ZW5zaW9uX2NoYXIpCi0gCXsKLSAJICBwdXRjIChleHRl bnNpb25fY2hhciwgcmxfb3V0c3RyZWFtKTsKLUBAIC05NTAsNyArMTA1Myw3IEBAIGdlbl9jb21w bGV0aW9uX21hdGNoZXMgKHRleHQsIHN0YXJ0LCBlbmQKLSAgICAgIHJsX2NvbXBlbnRyeV9mdW5j X3QgKm91cl9mdW5jOwotICAgICAgaW50IGZvdW5kX3F1b3RlLCBxdW90ZV9jaGFyOwotIHsKLS0g IGNoYXIgKiptYXRjaGVzLCAqdGVtcDsKLSsgIGNoYXIgKiptYXRjaGVzOwotIAotICAgcmxfY29t cGxldGlvbl9mb3VuZF9xdW90ZSA9IGZvdW5kX3F1b3RlOwotICAgcmxfY29tcGxldGlvbl9xdW90 ZV9jaGFyYWN0ZXIgPSBxdW90ZV9jaGFyOwotQEAgLTk2MCw3ICsxMDYzLDEwIEBAIGdlbl9jb21w bGV0aW9uX21hdGNoZXMgKHRleHQsIHN0YXJ0LCBlbmQKLSAgICAgIHZhcmlhYmxlIHJsX2F0dGVt cHRlZF9jb21wbGV0aW9uX2Z1bmN0aW9uLiAqLwotICAgaWYgKHJsX2F0dGVtcHRlZF9jb21wbGV0 aW9uX2Z1bmN0aW9uKQotICAgICB7Ci0rICAgICAgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSsr OwotICAgICAgIG1hdGNoZXMgPSAoKnJsX2F0dGVtcHRlZF9jb21wbGV0aW9uX2Z1bmN0aW9uKSAo dGV4dCwgc3RhcnQsIGVuZCk7Ci0rICAgICAgaWYgKF9ybF9pbnRlcnJ1cHRfaW1tZWRpYXRlbHkg PiAwKQotKwlfcmxfaW50ZXJydXB0X2ltbWVkaWF0ZWx5LS07Ci0gCi0gICAgICAgaWYgKG1hdGNo ZXMgfHwgcmxfYXR0ZW1wdGVkX2NvbXBsZXRpb25fb3ZlcikKLSAJewotQEAgLTk2OSwyMSArMTA3 NSw5IEBAIGdlbl9jb21wbGV0aW9uX21hdGNoZXMgKHRleHQsIHN0YXJ0LCBlbmQKLSAJfQotICAg ICB9Ci0gCi0tICAvKiBCZXdhcmUgLS0gd2UncmUgc3RyaXBwaW5nIHRoZSBxdW90ZXMgaGVyZS4g IERvIHRoaXMgb25seSBpZiB3ZSBrbm93Ci0tICAgICB3ZSBhcmUgZG9pbmcgZmlsZW5hbWUgY29t cGxldGlvbiBhbmQgdGhlIGFwcGxpY2F0aW9uIGhhcyBkZWZpbmVkIGEKLS0gICAgIGZpbGVuYW1l IGRlcXVvdGluZyBmdW5jdGlvbi4gKi8KLS0gIHRlbXAgPSAoY2hhciAqKU5VTEw7Ci0tCi0tICBp ZiAoZm91bmRfcXVvdGUgJiYgb3VyX2Z1bmMgPT0gcmxfZmlsZW5hbWVfY29tcGxldGlvbl9mdW5j dGlvbiAmJgotLSAgICAgIHJsX2ZpbGVuYW1lX2RlcXVvdGluZ19mdW5jdGlvbikKLS0gICAgewot LSAgICAgIC8qIGRlbGV0ZSBzaW5nbGUgYW5kIGRvdWJsZSBxdW90ZXMgKi8KLS0gICAgICB0ZW1w ID0gKCpybF9maWxlbmFtZV9kZXF1b3RpbmdfZnVuY3Rpb24pICh0ZXh0LCBxdW90ZV9jaGFyKTsK LS0gICAgICB0ZXh0ID0gdGVtcDsJLyogbm90IGZyZWVpbmcgdGV4dCBpcyBub3QgYSBtZW1vcnkg bGVhayAqLwotLSAgICB9Ci0rICAvKiBYWFggLS0gZmlsZW5hbWUgZGVxdW90aW5nIG1vdmVkIGlu dG8gcmxfZmlsZW5hbWVfY29tcGxldGlvbl9mdW5jdGlvbiAqLwotIAotICAgbWF0Y2hlcyA9IHJs X2NvbXBsZXRpb25fbWF0Y2hlcyAodGV4dCwgb3VyX2Z1bmMpOwotLSAgRlJFRSAodGVtcCk7Ci0g ICByZXR1cm4gbWF0Y2hlczsgIAotIH0KLSAKLUBAIC0xMDA0LDcgKzEwOTgsNyBAQCByZW1vdmVf ZHVwbGljYXRlX21hdGNoZXMgKG1hdGNoZXMpCi0gCi0gICAvKiBTb3J0IHRoZSBhcnJheSB3aXRo b3V0IG1hdGNoZXNbMF0sIHNpbmNlIHdlIG5lZWQgaXQgdG8KLSAgICAgIHN0YXkgaW4gcGxhY2Ug bm8gbWF0dGVyIHdoYXQuICovCi0tICBpZiAoaSkKLSsgIGlmIChpICYmIHJsX3NvcnRfY29tcGxl dGlvbl9tYXRjaGVzKQotICAgICBxc29ydCAobWF0Y2hlcysxLCBpLTEsIHNpemVvZiAoY2hhciAq KSwgKFFTRlVOQyAqKV9ybF9xc29ydF9zdHJpbmdfY29tcGFyZSk7Ci0gCi0gICAvKiBSZW1lbWJl ciB0aGUgbG93ZXN0IGNvbW1vbiBkZW5vbWluYXRvciBmb3IgaXQgbWF5IGJlIHVuaXF1ZS4gKi8K LUBAIC0xMDE0LDcgKzExMDgsNyBAQCByZW1vdmVfZHVwbGljYXRlX21hdGNoZXMgKG1hdGNoZXMp Ci0gICAgIHsKLSAgICAgICBpZiAoc3RyY21wIChtYXRjaGVzW2ldLCBtYXRjaGVzW2kgKyAxXSkg PT0gMCkKLSAJewotLQkgIGZyZWUgKG1hdGNoZXNbaV0pOwotKwkgIHhmcmVlIChtYXRjaGVzW2ld KTsKLSAJICBtYXRjaGVzW2ldID0gKGNoYXIgKikmZGVhZF9zbG90OwotIAl9Ci0gICAgICAgZWxz ZQotQEAgLTEwMzIsNyArMTEyNiw3IEBAIHJlbW92ZV9kdXBsaWNhdGVfbWF0Y2hlcyAobWF0Y2hl cykKLSAgIHRlbXBfYXJyYXlbal0gPSAoY2hhciAqKU5VTEw7Ci0gCi0gICBpZiAobWF0Y2hlc1sw XSAhPSAoY2hhciAqKSZkZWFkX3Nsb3QpCi0tICAgIGZyZWUgKG1hdGNoZXNbMF0pOwotKyAgICB4 ZnJlZSAobWF0Y2hlc1swXSk7Ci0gCi0gICAvKiBQbGFjZSB0aGUgbG93ZXN0IGNvbW1vbiBkZW5v bWluYXRvciBiYWNrIGluIFswXS4gKi8KLSAgIHRlbXBfYXJyYXlbMF0gPSBsb3dlc3RfY29tbW9u OwotQEAgLTEwNDIsNyArMTEzNiw3IEBAIHJlbW92ZV9kdXBsaWNhdGVfbWF0Y2hlcyAobWF0Y2hl cykKLSAgICAgIGluc2VydC4gKi8KLSAgIGlmIChqID09IDIgJiYgc3RyY21wICh0ZW1wX2FycmF5 WzBdLCB0ZW1wX2FycmF5WzFdKSA9PSAwKQotICAgICB7Ci0tICAgICAgZnJlZSAodGVtcF9hcnJh eVsxXSk7Ci0rICAgICAgeGZyZWUgKHRlbXBfYXJyYXlbMV0pOwotICAgICAgIHRlbXBfYXJyYXlb MV0gPSAoY2hhciAqKU5VTEw7Ci0gICAgIH0KLSAgIHJldHVybiAodGVtcF9hcnJheSk7Ci1AQCAt MTExNiw3ICsxMjEwLDggQEAgY29tcHV0ZV9sY2Rfb2ZfbWF0Y2hlcyAobWF0Y2hfbGlzdCwgbWF0 YwotICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQotIAkgICAgaWYgKE1CX0NVUl9NQVgg PiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKLSAJICAgICAgewotLQkJbWJzdGF0ZV90IHBz X2JhY2sgPSBwczE7Ci0rCQltYnN0YXRlX3QgcHNfYmFjazsKLSsJCXBzX2JhY2sgPSBwczE7Ci0g CQlpZiAoIV9ybF9jb21wYXJlX2NoYXJzIChtYXRjaF9saXN0W2ldLCBzaSwgJnBzMSwgbWF0Y2hf bGlzdFtpKzFdLCBzaSwgJnBzMikpCi0gCQkgIGJyZWFrOwotIAkJZWxzZSBpZiAoKHYgPSBfcmxf Z2V0X2NoYXJfbGVuICgmbWF0Y2hfbGlzdFtpXVtzaV0sICZwc19iYWNrKSkgPiAxKQotQEAgLTEy MjAsNyArMTMxNSw3IEBAIHBvc3Rwcm9jZXNzX21hdGNoZXMgKG1hdGNoZXNwLCBtYXRjaGluZ18K LSAgIGlmIChybF9pZ25vcmVfY29tcGxldGlvbl9kdXBsaWNhdGVzKQotICAgICB7Ci0gICAgICAg dGVtcF9tYXRjaGVzID0gcmVtb3ZlX2R1cGxpY2F0ZV9tYXRjaGVzIChtYXRjaGVzKTsKLS0gICAg ICBmcmVlIChtYXRjaGVzKTsKLSsgICAgICB4ZnJlZSAobWF0Y2hlcyk7Ci0gICAgICAgbWF0Y2hl cyA9IHRlbXBfbWF0Y2hlczsKLSAgICAgfQotIAotQEAgLTEyNTcsNiArMTM1MiwyMyBAQCBwb3N0 cHJvY2Vzc19tYXRjaGVzIChtYXRjaGVzcCwgbWF0Y2hpbmdfCi0gICByZXR1cm4gKDEpOwotIH0K LSAKLStzdGF0aWMgaW50Ci0rY29tcGxldGVfZ2V0X3NjcmVlbndpZHRoICgpCi0rewotKyAgaW50 IGNvbHM7Ci0rICBjaGFyICplbnZjb2xzOwotKwotKyAgY29scyA9IF9ybF9jb21wbGV0aW9uX2Nv bHVtbnM7Ci0rICBpZiAoY29scyA+PSAwICYmIGNvbHMgPD0gX3JsX3NjcmVlbndpZHRoKQotKyAg ICByZXR1cm4gY29sczsKLSsgIGVudmNvbHMgPSBnZXRlbnYgKCJDT0xVTU5TIik7Ci0rICBpZiAo ZW52Y29scyAmJiAqZW52Y29scykKLSsgICAgY29scyA9IGF0b2kgKGVudmNvbHMpOwotKyAgaWYg KGNvbHMgPj0gMCAmJiBjb2xzIDw9IF9ybF9zY3JlZW53aWR0aCkKLSsgICAgcmV0dXJuIGNvbHM7 Ci0rICByZXR1cm4gX3JsX3NjcmVlbndpZHRoOwotK30KLSsKLSAvKiBBIGNvbnZlbmllbmNlIGZ1 bmN0aW9uIGZvciBkaXNwbGF5aW5nIGEgbGlzdCBvZiBzdHJpbmdzIGluCi0gICAgY29sdW1uYXIg Zm9ybWF0IG9uIHJlYWRsaW5lJ3Mgb3V0cHV0IHN0cmVhbS4gIE1BVENIRVMgaXMgdGhlIGxpc3QK LSAgICBvZiBzdHJpbmdzLCBpbiBhcmd2IGZvcm1hdCwgTEVOIGlzIHRoZSBudW1iZXIgb2Ygc3Ry aW5ncyBpbiBNQVRDSEVTLAotQEAgLTEyNjYsMTcgKzEzNzgsMzggQEAgcmxfZGlzcGxheV9tYXRj aF9saXN0IChtYXRjaGVzLCBsZW4sIG1heAotICAgICAgY2hhciAqKm1hdGNoZXM7Ci0gICAgICBp bnQgbGVuLCBtYXg7Ci0gewotLSAgaW50IGNvdW50LCBsaW1pdCwgcHJpbnRlZF9sZW4sIGxpbmVz OwotLSAgaW50IGksIGosIGssIGw7Ci0tICBjaGFyICp0ZW1wOwotKyAgaW50IGNvdW50LCBsaW1p dCwgcHJpbnRlZF9sZW4sIGxpbmVzLCBjb2xzOwotKyAgaW50IGksIGosIGssIGwsIGNvbW1vbl9s ZW5ndGgsIHNpbmQ7Ci0rICBjaGFyICp0ZW1wLCAqdDsKLSsKLSsgIC8qIEZpbmQgdGhlIGxlbmd0 aCBvZiB0aGUgcHJlZml4IGNvbW1vbiB0byBhbGwgaXRlbXM6IGxlbmd0aCBhcyBkaXNwbGF5ZWQK LSsgICAgIGNoYXJhY3RlcnMgKGNvbW1vbl9sZW5ndGgpIGFuZCBhcyBhIGJ5dGUgaW5kZXggaW50 byB0aGUgbWF0Y2hlcyAoc2luZCkgKi8KLSsgIGNvbW1vbl9sZW5ndGggPSBzaW5kID0gMDsKLSsg IGlmIChfcmxfY29tcGxldGlvbl9wcmVmaXhfZGlzcGxheV9sZW5ndGggPiAwKQotKyAgICB7Ci0r ICAgICAgdCA9IHByaW50YWJsZV9wYXJ0IChtYXRjaGVzWzBdKTsKLSsgICAgICB0ZW1wID0gc3Ry cmNociAodCwgJy8nKTsKLSsgICAgICBjb21tb25fbGVuZ3RoID0gdGVtcCA/IGZud2lkdGggKHRl bXApIDogZm53aWR0aCAodCk7Ci0rICAgICAgc2luZCA9IHRlbXAgPyBzdHJsZW4gKHRlbXApIDog c3RybGVuICh0KTsKLSsKLSsgICAgICBpZiAoY29tbW9uX2xlbmd0aCA+IF9ybF9jb21wbGV0aW9u X3ByZWZpeF9kaXNwbGF5X2xlbmd0aCAmJiBjb21tb25fbGVuZ3RoID4gRUxMSVBTSVNfTEVOKQot KwltYXggLT0gY29tbW9uX2xlbmd0aCAtIEVMTElQU0lTX0xFTjsKLSsgICAgICBlbHNlCi0rCWNv bW1vbl9sZW5ndGggPSBzaW5kID0gMDsKLSsgICAgfQotIAotICAgLyogSG93IG1hbnkgaXRlbXMg b2YgTUFYIGxlbmd0aCBjYW4gd2UgZml0IGluIHRoZSBzY3JlZW4gd2luZG93PyAqLwotKyAgY29s cyA9IGNvbXBsZXRlX2dldF9zY3JlZW53aWR0aCAoKTsKLSAgIG1heCArPSAyOwotLSAgbGltaXQg PSBfcmxfc2NyZWVud2lkdGggLyBtYXg7Ci0tICBpZiAobGltaXQgIT0gMSAmJiAobGltaXQgKiBt YXggPT0gX3JsX3NjcmVlbndpZHRoKSkKLSsgIGxpbWl0ID0gY29scyAvIG1heDsKLSsgIGlmIChs aW1pdCAhPSAxICYmIChsaW1pdCAqIG1heCA9PSBjb2xzKSkKLSAgICAgbGltaXQtLTsKLSAKLS0g IC8qIEF2b2lkIGEgcG9zc2libGUgZmxvYXRpbmcgZXhjZXB0aW9uLiAgSWYgbWF4ID4gX3JsX3Nj cmVlbndpZHRoLAotKyAgLyogSWYgY29scyA9PSAwLCBsaW1pdCB3aWxsIGVuZCB1cCAtMSAqLwot KyAgaWYgKGNvbHMgPCBfcmxfc2NyZWVud2lkdGggJiYgbGltaXQgPCAwKQotKyAgICBsaW1pdCA9 IDE7Ci0rCi0rICAvKiBBdm9pZCBhIHBvc3NpYmxlIGZsb2F0aW5nIGV4Y2VwdGlvbi4gIElmIG1h eCA+IGNvbHMsCi0gICAgICBsaW1pdCB3aWxsIGJlIDAgYW5kIGEgZGl2aWRlLWJ5LXplcm8gZmF1 bHQgd2lsbCByZXN1bHQuICovCi0gICBpZiAobGltaXQgPT0gMCkKLSAgICAgbGltaXQgPSAxOwot QEAgLTEyODksNyArMTQyMiw3IEBAIHJsX2Rpc3BsYXlfbWF0Y2hfbGlzdCAobWF0Y2hlcywgbGVu LCBtYXgKLSAJICAgMCA8IGxlbiA8PSBsaW1pdCAgaW1wbGllcyAgY291bnQgPSAxLiAqLwotIAot ICAgLyogU29ydCB0aGUgaXRlbXMgaWYgdGhleSBhcmUgbm90IGFscmVhZHkgc29ydGVkLiAqLwot LSAgaWYgKHJsX2lnbm9yZV9jb21wbGV0aW9uX2R1cGxpY2F0ZXMgPT0gMCkKLSsgIGlmIChybF9p Z25vcmVfY29tcGxldGlvbl9kdXBsaWNhdGVzID09IDAgJiYgcmxfc29ydF9jb21wbGV0aW9uX21h dGNoZXMpCi0gICAgIHFzb3J0IChtYXRjaGVzICsgMSwgbGVuLCBzaXplb2YgKGNoYXIgKiksIChR U0ZVTkMgKilfcmxfcXNvcnRfc3RyaW5nX2NvbXBhcmUpOwotIAotICAgcmxfY3JsZiAoKTsKLUBA IC0xMzA3LDcgKzE0NDAsNyBAQCBybF9kaXNwbGF5X21hdGNoX2xpc3QgKG1hdGNoZXMsIGxlbiwg bWF4Ci0gCSAgICAgIGVsc2UKLSAJCXsKLSAJCSAgdGVtcCA9IHByaW50YWJsZV9wYXJ0IChtYXRj aGVzW2xdKTsKLS0JCSAgcHJpbnRlZF9sZW4gPSBwcmludF9maWxlbmFtZSAodGVtcCwgbWF0Y2hl c1tsXSk7Ci0rCQkgIHByaW50ZWRfbGVuID0gcHJpbnRfZmlsZW5hbWUgKHRlbXAsIG1hdGNoZXNb bF0sIHNpbmQpOwotIAotIAkJICBpZiAoaiArIDEgPCBsaW1pdCkKLSAJCSAgICBmb3IgKGsgPSAw OyBrIDwgbWF4IC0gcHJpbnRlZF9sZW47IGsrKykKLUBAIC0xMzMxLDcgKzE0NjQsNyBAQCBybF9k aXNwbGF5X21hdGNoX2xpc3QgKG1hdGNoZXMsIGxlbiwgbWF4Ci0gICAgICAgZm9yIChpID0gMTsg bWF0Y2hlc1tpXTsgaSsrKQotIAl7Ci0gCSAgdGVtcCA9IHByaW50YWJsZV9wYXJ0IChtYXRjaGVz W2ldKTsKLS0JICBwcmludGVkX2xlbiA9IHByaW50X2ZpbGVuYW1lICh0ZW1wLCBtYXRjaGVzW2ld KTsKLSsJICBwcmludGVkX2xlbiA9IHByaW50X2ZpbGVuYW1lICh0ZW1wLCBtYXRjaGVzW2ldLCBz aW5kKTsKLSAJICAvKiBIYXZlIHdlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGlzIGxpbmU/ICovCi0g CSAgaWYgKG1hdGNoZXNbaSsxXSkKLSAJICAgIHsKLUBAIC0xMzgxLDcgKzE1MTQsNyBAQCBkaXNw bGF5X21hdGNoZXMgKG1hdGNoZXMpCi0gICAgIHsKLSAgICAgICB0ZW1wID0gcHJpbnRhYmxlX3Bh cnQgKG1hdGNoZXNbMF0pOwotICAgICAgIHJsX2NybGYgKCk7Ci0tICAgICAgcHJpbnRfZmlsZW5h bWUgKHRlbXAsIG1hdGNoZXNbMF0pOwotKyAgICAgIHByaW50X2ZpbGVuYW1lICh0ZW1wLCBtYXRj aGVzWzBdLCAwKTsKLSAgICAgICBybF9jcmxmICgpOwotIAotICAgICAgIHJsX2ZvcmNlZF91cGRh dGVfZGlzcGxheSAoKTsKLUBAIC0xNDE3LDcgKzE1NTAsNyBAQCBkaXNwbGF5X21hdGNoZXMgKG1h dGNoZXMpCi0gICAgICAgcmxfY3JsZiAoKTsKLSAgICAgICBmcHJpbnRmIChybF9vdXRzdHJlYW0s ICJEaXNwbGF5IGFsbCAlZCBwb3NzaWJpbGl0aWVzPyAoeSBvciBuKSIsIGxlbik7Ci0gICAgICAg ZmZsdXNoIChybF9vdXRzdHJlYW0pOwotLSAgICAgIGlmIChnZXRfeV9vcl9uICgwKSA9PSAwKQot KyAgICAgIGlmICgoY29tcGxldGlvbl95X29yX24gPSBnZXRfeV9vcl9uICgwKSkgPT0gMCkKLSAJ ewotIAkgIHJsX2NybGYgKCk7Ci0gCi1AQCAtMTQ4NSw4ICsxNjE4LDkgQEAgaW5zZXJ0X21hdGNo IChtYXRjaCwgc3RhcnQsIG10eXBlLCBxYykKLSAgICAgIGludCBzdGFydCwgbXR5cGU7Ci0gICAg ICBjaGFyICpxYzsKLSB7Ci0tICBjaGFyICpyZXBsYWNlbWVudDsKLSsgIGNoYXIgKnJlcGxhY2Vt ZW50LCAqcjsKLSAgIGNoYXIgb3FjOwotKyAgaW50IGVuZCwgcmxlbjsKLSAKLSAgIG9xYyA9IHFj ID8gKnFjIDogJ1wwJzsKLSAgIHJlcGxhY2VtZW50ID0gbWFrZV9xdW90ZWRfcmVwbGFjZW1lbnQg KG1hdGNoLCBtdHlwZSwgcWMpOwotQEAgLTE0OTQsNiArMTYyOCw3IEBAIGluc2VydF9tYXRjaCAo bWF0Y2gsIHN0YXJ0LCBtdHlwZSwgcWMpCi0gICAvKiBOb3cgaW5zZXJ0IHRoZSBtYXRjaC4gKi8K LSAgIGlmIChyZXBsYWNlbWVudCkKLSAgICAgewotKyAgICAgIHJsZW4gPSBzdHJsZW4gKHJlcGxh Y2VtZW50KTsKLSAgICAgICAvKiBEb24ndCBkb3VibGUgYW4gb3BlbmluZyBxdW90ZSBjaGFyYWN0 ZXIuICovCi0gICAgICAgaWYgKHFjICYmICpxYyAmJiBzdGFydCAmJiBybF9saW5lX2J1ZmZlcltz dGFydCAtIDFdID09ICpxYyAmJgotIAkgICAgcmVwbGFjZW1lbnRbMF0gPT0gKnFjKQotQEAgLTE1 MDMsOSArMTYzOCwyNiBAQCBpbnNlcnRfbWF0Y2ggKG1hdGNoLCBzdGFydCwgbXR5cGUsIHFjKQot ICAgICAgIGVsc2UgaWYgKHFjICYmICgqcWMgIT0gb3FjKSAmJiBzdGFydCAmJiBybF9saW5lX2J1 ZmZlcltzdGFydCAtIDFdID09IG9xYyAmJgotIAkgICAgcmVwbGFjZW1lbnRbMF0gIT0gb3FjKQot IAlzdGFydC0tOwotLSAgICAgIF9ybF9yZXBsYWNlX3RleHQgKHJlcGxhY2VtZW50LCBzdGFydCwg cmxfcG9pbnQgLSAxKTsKLSsgICAgICBlbmQgPSBybF9wb2ludCAtIDE7Ci0rICAgICAgLyogRG9u J3QgZG91YmxlIGEgY2xvc2luZyBxdW90ZSBjaGFyYWN0ZXIgKi8KLSsgICAgICBpZiAocWMgJiYg KnFjICYmIGVuZCAmJiBybF9saW5lX2J1ZmZlcltybF9wb2ludF0gPT0gKnFjICYmIHJlcGxhY2Vt ZW50W3JsZW4gLSAxXSA9PSAqcWMpCi0rICAgICAgICBlbmQrKzsKLSsgICAgICBpZiAoX3JsX3Nr aXBfY29tcGxldGVkX3RleHQpCi0rCXsKLSsJICByID0gcmVwbGFjZW1lbnQ7Ci0rCSAgd2hpbGUg KHN0YXJ0IDwgcmxfZW5kICYmICpyICYmIHJsX2xpbmVfYnVmZmVyW3N0YXJ0XSA9PSAqcikKLSsJ ICAgIHsKLSsJICAgICAgc3RhcnQrKzsKLSsJICAgICAgcisrOwotKwkgICAgfQotKwkgIGlmIChz dGFydCA8PSBlbmQgfHwgKnIpCi0rCSAgICBfcmxfcmVwbGFjZV90ZXh0IChyLCBzdGFydCwgZW5k KTsKLSsJICBybF9wb2ludCA9IHN0YXJ0ICsgc3RybGVuIChyKTsKLSsJfQotKyAgICAgIGVsc2UK LSsJX3JsX3JlcGxhY2VfdGV4dCAocmVwbGFjZW1lbnQsIHN0YXJ0LCBlbmQpOwotICAgICAgIGlm IChyZXBsYWNlbWVudCAhPSBtYXRjaCkKLS0gICAgICAgIGZyZWUgKHJlcGxhY2VtZW50KTsKLSsg ICAgICAgIHhmcmVlIChyZXBsYWNlbWVudCk7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTU3Miw3ICsx NzI0LDcgQEAgYXBwZW5kX3RvX21hdGNoICh0ZXh0LCBkZWxpbWl0ZXIsIHF1b3RlXwotIAkgIGlm IChybF9wb2ludCA9PSBybF9lbmQgJiYgdGVtcF9zdHJpbmdfaW5kZXgpCi0gCSAgICBybF9pbnNl cnRfdGV4dCAodGVtcF9zdHJpbmcpOwotIAl9Ci0tICAgICAgZnJlZSAoZmlsZW5hbWUpOwotKyAg ICAgIHhmcmVlIChmaWxlbmFtZSk7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotQEAgLTE2MDgs NyArMTc2MCw3IEBAIGluc2VydF9hbGxfbWF0Y2hlcyAobWF0Y2hlcywgcG9pbnQsIHFjKQotIAkg IHJsX2luc2VydF90ZXh0IChycCk7Ci0gCSAgcmxfaW5zZXJ0X3RleHQgKCIgIik7Ci0gCSAgaWYg KHJwICE9IG1hdGNoZXNbaV0pCi0tCSAgICBmcmVlIChycCk7Ci0rCSAgICB4ZnJlZSAocnApOwot IAl9Ci0gICAgIH0KLSAgIGVsc2UKLUBAIC0xNjE3LDcgKzE3NjksNyBAQCBpbnNlcnRfYWxsX21h dGNoZXMgKG1hdGNoZXMsIHBvaW50LCBxYykKLSAgICAgICBybF9pbnNlcnRfdGV4dCAocnApOwot ICAgICAgIHJsX2luc2VydF90ZXh0ICgiICIpOwotICAgICAgIGlmIChycCAhPSBtYXRjaGVzWzBd KQotLQlmcmVlIChycCk7Ci0rCXhmcmVlIChycCk7Ci0gICAgIH0KLSAgIHJsX2VuZF91bmRvX2dy b3VwICgpOwotIH0KLUBAIC0xNjMyLDggKzE3ODQsOCBAQCBfcmxfZnJlZV9tYXRjaF9saXN0ICht YXRjaGVzKQotICAgICByZXR1cm47Ci0gCi0gICBmb3IgKGkgPSAwOyBtYXRjaGVzW2ldOyBpKysp Ci0tICAgIGZyZWUgKG1hdGNoZXNbaV0pOwotLSAgZnJlZSAobWF0Y2hlcyk7Ci0rICAgIHhmcmVl IChtYXRjaGVzW2ldKTsKLSsgIHhmcmVlIChtYXRjaGVzKTsKLSB9Ci0gCi0gLyogQ29tcGxldGUg dGhlIHdvcmQgYXQgb3IgYmVmb3JlIHBvaW50LgotQEAgLTE2NTQsNiArMTgwNiw5IEBAIHJsX2Nv bXBsZXRlX2ludGVybmFsICh3aGF0X3RvX2RvKQotICAgaW50IHN0YXJ0LCBlbmQsIGRlbGltaXRl ciwgZm91bmRfcXVvdGUsIGksIG5vbnRyaXZpYWxfbGNkOwotICAgY2hhciAqdGV4dCwgKnNhdmVk X2xpbmVfYnVmZmVyOwotICAgY2hhciBxdW90ZV9jaGFyOwotKyNpZiAxCi0rICBpbnQgdGxlbiwg bWxlbjsKLSsjZW5kaWYKLSAKLSAgIFJMX1NFVFNUQVRFKFJMX1NUQVRFX0NPTVBMRVRJTkcpOwot IAotQEAgLTE2ODEsNyArMTgzNiwxMSBAQCBybF9jb21wbGV0ZV9pbnRlcm5hbCAod2hhdF90b19k bykKLSAgIC8qIG5vbnRyaXZpYWxfbGNkIGlzIHNldCBpZiB0aGUgY29tbW9uIHByZWZpeCBhZGRz IHNvbWV0aGluZyB0byB0aGUgd29yZAotICAgICAgYmVpbmcgY29tcGxldGVkLiAqLwotICAgbm9u dHJpdmlhbF9sY2QgPSBtYXRjaGVzICYmIHN0cmNtcCAodGV4dCwgbWF0Y2hlc1swXSkgIT0gMDsK LS0gIGZyZWUgKHRleHQpOwotKyNpZiAxCi0rICBpZiAod2hhdF90b19kbyA9PSAnIScgfHwgd2hh dF90b19kbyA9PSAnQCcpCi0rICAgIHRsZW4gPSBzdHJsZW4gKHRleHQpOwotKyNlbmRpZgotKyAg eGZyZWUgKHRleHQpOwotIAotICAgaWYgKG1hdGNoZXMgPT0gMCkKLSAgICAgewotQEAgLTE2ODks NiArMTg0OCw3IEBAIHJsX2NvbXBsZXRlX2ludGVybmFsICh3aGF0X3RvX2RvKQotICAgICAgIEZS RUUgKHNhdmVkX2xpbmVfYnVmZmVyKTsKLSAgICAgICBjb21wbGV0aW9uX2NoYW5nZWRfYnVmZmVy ID0gMDsKLSAgICAgICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRFX0NPTVBMRVRJTkcpOwotKyAgICAg IF9ybF9yZXNldF9jb21wbGV0aW9uX3N0YXRlICgpOwotICAgICAgIHJldHVybiAoMCk7Ci0gICAg IH0KLSAKLUBAIC0xNzAzLDYgKzE4NjMsNyBAQCBybF9jb21wbGV0ZV9pbnRlcm5hbCAod2hhdF90 b19kbykKLSAgICAgICBGUkVFIChzYXZlZF9saW5lX2J1ZmZlcik7Ci0gICAgICAgY29tcGxldGlv bl9jaGFuZ2VkX2J1ZmZlciA9IDA7Ci0gICAgICAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9DT01Q TEVUSU5HKTsKLSsgICAgICBfcmxfcmVzZXRfY29tcGxldGlvbl9zdGF0ZSAoKTsKLSAgICAgICBy ZXR1cm4gKDApOwotICAgICB9Ci0gCi1AQCAtMTcxMiw4ICsxODczLDI1IEBAIHJsX2NvbXBsZXRl X2ludGVybmFsICh3aGF0X3RvX2RvKQotICAgICBjYXNlICchJzoKLSAgICAgY2FzZSAnQCc6Ci0g ICAgICAgLyogSW5zZXJ0IHRoZSBmaXJzdCBtYXRjaCB3aXRoIHByb3BlciBxdW90aW5nLiAqLwot KyNpZiAwCi0gICAgICAgaWYgKCptYXRjaGVzWzBdKQotIAlpbnNlcnRfbWF0Y2ggKG1hdGNoZXNb MF0sIHN0YXJ0LCBtYXRjaGVzWzFdID8gTVVMVF9NQVRDSCA6IFNJTkdMRV9NQVRDSCwgJnF1b3Rl X2NoYXIpOwotKyNlbHNlCi0rICAgICAgaWYgKHdoYXRfdG9fZG8gPT0gVEFCKQotKyAgICAgICAg ewotKyAgICAgICAgICBpZiAoKm1hdGNoZXNbMF0pCi0rCSAgICBpbnNlcnRfbWF0Y2ggKG1hdGNo ZXNbMF0sIHN0YXJ0LCBtYXRjaGVzWzFdID8gTVVMVF9NQVRDSCA6IFNJTkdMRV9NQVRDSCwgJnF1 b3RlX2NoYXIpOwotKyAgICAgICAgfQotKyAgICAgIGVsc2UgaWYgKCptYXRjaGVzWzBdICYmIG1h dGNoZXNbMV0gPT0gMCkKLSsJLyogc2hvdWxkIHdlIHBlcmZvcm0gdGhlIGNoZWNrIG9ubHkgaWYg dGhlcmUgYXJlIG11bHRpcGxlIG1hdGNoZXM/ICovCi0rCWluc2VydF9tYXRjaCAobWF0Y2hlc1sw XSwgc3RhcnQsIG1hdGNoZXNbMV0gPyBNVUxUX01BVENIIDogU0lOR0xFX01BVENILCAmcXVvdGVf Y2hhcik7Ci0rICAgICAgZWxzZSBpZiAoKm1hdGNoZXNbMF0pCS8qIHdoYXRfdG9fZG8gIT0gVEFC ICYmIG11bHRpcGxlIG1hdGNoZXMgKi8KLSsJewotKwkgIG1sZW4gPSAqbWF0Y2hlc1swXSA/IHN0 cmxlbiAobWF0Y2hlc1swXSkgOiAwOwotKwkgIGlmIChtbGVuID49IHRsZW4pCi0rCSAgICBpbnNl cnRfbWF0Y2ggKG1hdGNoZXNbMF0sIHN0YXJ0LCBtYXRjaGVzWzFdID8gTVVMVF9NQVRDSCA6IFNJ TkdMRV9NQVRDSCwgJnF1b3RlX2NoYXIpOwotKwl9Ci0rI2VuZGlmCi0gCi0gICAgICAgLyogSWYg dGhlcmUgYXJlIG1vcmUgbWF0Y2hlcywgcmluZyB0aGUgYmVsbCB0byBpbmRpY2F0ZS4KLSAJIElm IHdlIGFyZSBpbiB2aSBtb2RlLCBQb3NpeC4yIHNheXMgdG8gbm90IHJpbmcgdGhlIGJlbGwuCi1A QCAtMTc1MywxMCArMTkzMSwxMSBAQCBybF9jb21wbGV0ZV9pbnRlcm5hbCAod2hhdF90b19kbykK LSAgICAgICBicmVhazsKLSAKLSAgICAgZGVmYXVsdDoKLS0gICAgICBmcHJpbnRmIChzdGRlcnIs ICJcclxucmVhZGxpbmU6IGJhZCB2YWx1ZSAlZCBmb3Igd2hhdF90b19kbyBpbiBybF9jb21wbGV0 ZVxuIiwgd2hhdF90b19kbyk7Ci0rICAgICAgX3JsX3R0eW1zZyAoImJhZCB2YWx1ZSAlZCBmb3Ig d2hhdF90b19kbyBpbiBybF9jb21wbGV0ZSIsIHdoYXRfdG9fZG8pOwotICAgICAgIHJsX2Rpbmcg KCk7Ci0gICAgICAgRlJFRSAoc2F2ZWRfbGluZV9idWZmZXIpOwotICAgICAgIFJMX1VOU0VUU1RB VEUoUkxfU1RBVEVfQ09NUExFVElORyk7Ci0rICAgICAgX3JsX3Jlc2V0X2NvbXBsZXRpb25fc3Rh dGUgKCk7Ci0gICAgICAgcmV0dXJuIDE7Ci0gICAgIH0KLSAKLUBAIC0xNzY2LDEwICsxOTQ1LDEx IEBAIHJsX2NvbXBsZXRlX2ludGVybmFsICh3aGF0X3RvX2RvKQotICAgaWYgKHNhdmVkX2xpbmVf YnVmZmVyKQotICAgICB7Ci0gICAgICAgY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlciA9IHN0cmNt cCAocmxfbGluZV9idWZmZXIsIHNhdmVkX2xpbmVfYnVmZmVyKSAhPSAwOwotLSAgICAgIGZyZWUg KHNhdmVkX2xpbmVfYnVmZmVyKTsKLSsgICAgICB4ZnJlZSAoc2F2ZWRfbGluZV9idWZmZXIpOwot ICAgICB9Ci0gCi0gICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRFX0NPTVBMRVRJTkcpOwotKyAgX3Js X3Jlc2V0X2NvbXBsZXRpb25fc3RhdGUgKCk7Ci0gICByZXR1cm4gMDsKLSB9Ci0gCi1AQCAtMTgx Myw2ICsxOTkzLDcgQEAgcmxfY29tcGxldGlvbl9tYXRjaGVzICh0ZXh0LCBlbnRyeV9mdW5jdAot ICAgbWF0Y2hfbGlzdCA9IChjaGFyICoqKXhtYWxsb2MgKChtYXRjaF9saXN0X3NpemUgKyAxKSAq IHNpemVvZiAoY2hhciAqKSk7Ci0gICBtYXRjaF9saXN0WzFdID0gKGNoYXIgKilOVUxMOwotIAot KyAgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSsrOwotICAgd2hpbGUgKHN0cmluZyA9ICgqZW50 cnlfZnVuY3Rpb24pICh0ZXh0LCBtYXRjaGVzKSkKLSAgICAgewotICAgICAgIGlmIChtYXRjaGVz ICsgMSA9PSBtYXRjaF9saXN0X3NpemUpCi1AQCAtMTgyMiw2ICsyMDAzLDggQEAgcmxfY29tcGxl dGlvbl9tYXRjaGVzICh0ZXh0LCBlbnRyeV9mdW5jdAotICAgICAgIG1hdGNoX2xpc3RbKyttYXRj aGVzXSA9IHN0cmluZzsKLSAgICAgICBtYXRjaF9saXN0W21hdGNoZXMgKyAxXSA9IChjaGFyICop TlVMTDsKLSAgICAgfQotKyAgaWYgKF9ybF9pbnRlcnJ1cHRfaW1tZWRpYXRlbHkgPiAwKQotKyAg ICBfcmxfaW50ZXJydXB0X2ltbWVkaWF0ZWx5LS07Ci0gCi0gICAvKiBJZiB0aGVyZSB3ZXJlIGFu eSBtYXRjaGVzLCB0aGVuIGxvb2sgdGhyb3VnaCB0aGVtIGZpbmRpbmcgb3V0IHRoZQotICAgICAg bG93ZXN0IGNvbW1vbiBkZW5vbWluYXRvci4gIFRoYXQgdGhlbiBiZWNvbWVzIG1hdGNoX2xpc3Rb MF0uICovCi1AQCAtMTgyOSw3ICsyMDEyLDcgQEAgcmxfY29tcGxldGlvbl9tYXRjaGVzICh0ZXh0 LCBlbnRyeV9mdW5jdAotICAgICBjb21wdXRlX2xjZF9vZl9tYXRjaGVzIChtYXRjaF9saXN0LCBt YXRjaGVzLCB0ZXh0KTsKLSAgIGVsc2UJCQkJLyogVGhlcmUgd2VyZSBubyBtYXRjaGVzLiAqLwot ICAgICB7Ci0tICAgICAgZnJlZSAobWF0Y2hfbGlzdCk7Ci0rICAgICAgeGZyZWUgKG1hdGNoX2xp c3QpOwotICAgICAgIG1hdGNoX2xpc3QgPSAoY2hhciAqKilOVUxMOwotICAgICB9Ci0gICByZXR1 cm4gKG1hdGNoX2xpc3QpOwotQEAgLTE4OTUsNiArMjA3OCw2MiBAQCBybF91c2VybmFtZV9jb21w bGV0aW9uX2Z1bmN0aW9uICh0ZXh0LCBzCi0gI2VuZGlmIC8qICFfX1dJTjMyX18gJiYgIV9fT1BF Tk5UICovCi0gfQotIAotKy8qIFJldHVybiBub24temVybyBpZiBDT05WRk4gbWF0Y2hlcyBGSUxF TkFNRSB1cCB0byB0aGUgbGVuZ3RoIG9mIEZJTEVOQU1FCi0rICAgKEZJTEVOQU1FX0xFTikuICBJ ZiBfcmxfY29tcGxldGlvbl9jYXNlX2ZvbGQgaXMgc2V0LCBjb21wYXJlIHdpdGhvdXQKLSsgICBy ZWdhcmQgdG8gdGhlIGFscGhhYmV0aWMgY2FzZSBvZiBjaGFyYWN0ZXJzLiAgQ09OVkZOIGlzIHRo ZSBwb3NzaWJseS0KLSsgICBjb252ZXJ0ZWQgZGlyZWN0b3J5IGVudHJ5OyBGSUxFTkFNRSBpcyB3 aGF0IHRoZSB1c2VyIHR5cGVkLiAqLwotK3N0YXRpYyBpbnQKLStjb21wbGV0ZV9mbmNtcCAoY29u dmZuLCBjb252bGVuLCBmaWxlbmFtZSwgZmlsZW5hbWVfbGVuKQotKyAgICAgY29uc3QgY2hhciAq Y29udmZuOwotKyAgICAgaW50IGNvbnZsZW47Ci0rICAgICBjb25zdCBjaGFyICpmaWxlbmFtZTsK LSsgICAgIGludCBmaWxlbmFtZV9sZW47Ci0rewotKyAgcmVnaXN0ZXIgY2hhciAqczEsICpzMjsK LSsgIGludCBkLCBsZW47Ci0rCi0rICAvKiBPdGhlcndpc2UsIGlmIHRoZXNlIG1hdGNoIHVwIHRv IHRoZSBsZW5ndGggb2YgZmlsZW5hbWUsIHRoZW4KLSsgICAgIGl0IGlzIGEgbWF0Y2guICovCi0r ICBpZiAoX3JsX2NvbXBsZXRpb25fY2FzZV9mb2xkICYmIF9ybF9jb21wbGV0aW9uX2Nhc2VfbWFw KQotKyAgICB7Ci0rICAgICAgLyogQ2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29uIHRyZWF0aW5n IF8gYW5kIC0gYXMgZXF1aXZhbGVudCAqLwotKyAgICAgIGlmIChmaWxlbmFtZV9sZW4gPT0gMCkK LSsJcmV0dXJuIDE7Ci0rICAgICAgaWYgKGNvbnZsZW4gPCBmaWxlbmFtZV9sZW4pCi0rCXJldHVy biAwOwotKyAgICAgIHMxID0gKGNoYXIgKiljb252Zm47Ci0rICAgICAgczIgPSAoY2hhciAqKWZp bGVuYW1lOwotKyAgICAgIGxlbiA9IGZpbGVuYW1lX2xlbjsKLSsgICAgICBkbwotKwl7Ci0rCSAg ZCA9IF9ybF90b19sb3dlciAoKnMxKSAtIF9ybF90b19sb3dlciAoKnMyKTsKLSsJICAvKiAqczEg PT0gWy1fXSAmJiAqczIgPT0gWy1fXSAqLwotKwkgIGlmICgoKnMxID09ICctJyB8fCAqczEgPT0g J18nKSAmJiAoKnMyID09ICctJyB8fCAqczIgPT0gJ18nKSkKLSsJICAgIGQgPSAwOwotKwkgIGlm IChkICE9IDApCi0rCSAgICByZXR1cm4gMDsKLSsJICBzMSsrOyBzMisrOwkvKiBhbHJlYWR5IGNo ZWNrZWQgY29udmxlbiA+PSBmaWxlbmFtZV9sZW4gKi8KLSsJfQotKyAgICAgIHdoaWxlICgtLWxl biAhPSAwKTsKLSsgICAgICByZXR1cm4gMTsKLSsgICAgfQotKyAgZWxzZSBpZiAoX3JsX2NvbXBs ZXRpb25fY2FzZV9mb2xkKQotKyAgICB7Ci0rICAgICAgaWYgKChfcmxfdG9fbG93ZXIgKGNvbnZm blswXSkgPT0gX3JsX3RvX2xvd2VyIChmaWxlbmFtZVswXSkpICYmCi0rCSAgKGNvbnZsZW4gPj0g ZmlsZW5hbWVfbGVuKSAmJgotKwkgIChfcmxfc3RybmljbXAgKGZpbGVuYW1lLCBjb252Zm4sIGZp bGVuYW1lX2xlbikgPT0gMCkpCi0rCXJldHVybiAxOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsK LSsgICAgICBpZiAoKGNvbnZmblswXSA9PSBmaWxlbmFtZVswXSkgJiYKLSsJICAoY29udmxlbiA+ PSBmaWxlbmFtZV9sZW4pICYmCi0rCSAgKHN0cm5jbXAgKGZpbGVuYW1lLCBjb252Zm4sIGZpbGVu YW1lX2xlbikgPT0gMCkpCi0rCXJldHVybiAxOwotKyAgICB9Ci0rICByZXR1cm4gMDsKLSt9Ci0r Ci0gLyogT2theSwgbm93IHdlIHdyaXRlIHRoZSBlbnRyeV9mdW5jdGlvbiBmb3IgZmlsZW5hbWUg Y29tcGxldGlvbi4gIEluIHRoZQotICAgIGdlbmVyYWwgY2FzZS4gIE5vdGUgdGhhdCBjb21wbGV0 aW9uIGluIHRoZSBzaGVsbCBpcyBhIGxpdHRsZSBkaWZmZXJlbnQKLSAgICBiZWNhdXNlIG9mIGFs bCB0aGUgcGF0aG5hbWVzIHRoYXQgbXVzdCBiZSBmb2xsb3dlZCB3aGVuIGxvb2tpbmcgdXAgdGhl Ci1AQCAtMTkwOSw4ICsyMTQ4LDggQEAgcmxfZmlsZW5hbWVfY29tcGxldGlvbl9mdW5jdGlvbiAo dGV4dCwgcwotICAgc3RhdGljIGNoYXIgKmRpcm5hbWUgPSAoY2hhciAqKU5VTEw7Ci0gICBzdGF0 aWMgY2hhciAqdXNlcnNfZGlybmFtZSA9IChjaGFyICopTlVMTDsKLSAgIHN0YXRpYyBpbnQgZmls ZW5hbWVfbGVuOwotLSAgY2hhciAqdGVtcDsKLS0gIGludCBkaXJsZW47Ci0rICBjaGFyICp0ZW1w LCAqZGVudHJ5LCAqY29udmZuOwotKyAgaW50IGRpcmxlbiwgZGVudGxlbiwgY29udmxlbjsKLSAg IHN0cnVjdCBkaXJlbnQgKmVudHJ5OwotIAotICAgLyogSWYgd2UgZG9uJ3QgaGF2ZSBhbnkgc3Rh dGUsIHRoZW4gZG8gc29tZSBpbml0aWFsaXphdGlvbi4gKi8KLUBAIC0xOTYxLDI2ICsyMjAwLDUy IEBAIHJsX2ZpbGVuYW1lX2NvbXBsZXRpb25fZnVuY3Rpb24gKHRleHQsIHMKLSAKLSAgICAgICAv KiBXZSBhcmVuJ3QgZG9uZSB5ZXQuICBXZSBhbHNvIHN1cHBvcnQgdGhlICJ+dXNlciIgc3ludGF4 LiAqLwotIAotLSAgICAgIC8qIFNhdmUgdGhlIHZlcnNpb24gb2YgdGhlIGRpcmVjdG9yeSB0aGF0 IHRoZSB1c2VyIHR5cGVkLiAqLwotLSAgICAgIHVzZXJzX2Rpcm5hbWUgPSBzYXZlc3RyaW5nIChk aXJuYW1lKTsKLSsgICAgICAvKiBTYXZlIHRoZSB2ZXJzaW9uIG9mIHRoZSBkaXJlY3RvcnkgdGhh dCB0aGUgdXNlciB0eXBlZCwgZGVxdW90aW5nCi0rCSBpdCBpZiBuZWNlc3NhcnkuICovCi0rICAg ICAgaWYgKHJsX2NvbXBsZXRpb25fZm91bmRfcXVvdGUgJiYgcmxfZmlsZW5hbWVfZGVxdW90aW5n X2Z1bmN0aW9uKQotKwl1c2Vyc19kaXJuYW1lID0gKCpybF9maWxlbmFtZV9kZXF1b3RpbmdfZnVu Y3Rpb24pIChkaXJuYW1lLCBybF9jb21wbGV0aW9uX3F1b3RlX2NoYXJhY3Rlcik7Ci0rICAgICAg ZWxzZQotKwl1c2Vyc19kaXJuYW1lID0gc2F2ZXN0cmluZyAoZGlybmFtZSk7Ci0gCi0gICAgICAg aWYgKCpkaXJuYW1lID09ICd+JykKLSAJewotIAkgIHRlbXAgPSB0aWxkZV9leHBhbmQgKGRpcm5h bWUpOwotLQkgIGZyZWUgKGRpcm5hbWUpOwotKwkgIHhmcmVlIChkaXJuYW1lKTsKLSAJICBkaXJu YW1lID0gdGVtcDsKLSAJfQotIAotKyAgICAgIC8qIFdlIGhhdmUgc2F2ZWQgdGhlIHBvc3NpYmx5 LWRlcXVvdGVkIHZlcnNpb24gb2YgdGhlIGRpcmVjdG9yeSBuYW1lCi0rCSB0aGUgdXNlciB0eXBl ZC4gIE5vdyB0cmFuc2Zvcm0gdGhlIGRpcmVjdG9yeSBuYW1lIHdlJ3JlIGdvaW5nIHRvCi0rCSBw YXNzIHRvIG9wZW5kaXIoMikuICBUaGUgZGlyZWN0b3J5IHJld3JpdGUgaG9vayBtb2RpZmllcyBv bmx5IHRoZQotKwkgZGlyZWN0b3J5IG5hbWU7IHRoZSBkaXJlY3RvcnkgY29tcGxldGlvbiBob29r IG1vZGlmaWVzIGJvdGggdGhlCi0rCSBkaXJlY3RvcnkgbmFtZSBwYXNzZWQgdG8gb3BlbmRpcigy KSBhbmQgdGhlIHZlcnNpb24gdGhlIHVzZXIKLSsJIHR5cGVkLiAgQm90aCB0aGUgZGlyZWN0b3J5 IGNvbXBsZXRpb24gYW5kIHJld3JpdGUgaG9va3Mgc2hvdWxkIHBlcmZvcm0KLSsJIGFueSBuZWNl c3NhcnkgZGVxdW90aW5nLiAgVGhlIGhvb2sgZnVuY3Rpb25zIHJldHVybiAxIGlmIHRoZXkgbW9k aWZ5Ci0rCSB0aGUgZGlyZWN0b3J5IG5hbWUgYXJndW1lbnQuICBJZiBlaXRoZXIgaG9vayByZXR1 cm5zIDAsIGl0IHNob3VsZAotKwkgbm90IG1vZGlmeSB0aGUgZGlyZWN0b3J5IG5hbWUgcG9pbnRl ciBwYXNzZWQgYXMgYW4gYXJndW1lbnQuICovCi0gICAgICAgaWYgKHJsX2RpcmVjdG9yeV9yZXdy aXRlX2hvb2spCi0gCSgqcmxfZGlyZWN0b3J5X3Jld3JpdGVfaG9vaykgKCZkaXJuYW1lKTsKLS0K LS0gICAgICBpZiAocmxfZGlyZWN0b3J5X2NvbXBsZXRpb25faG9vayAmJiAoKnJsX2RpcmVjdG9y eV9jb21wbGV0aW9uX2hvb2spICgmZGlybmFtZSkpCi0rICAgICAgZWxzZSBpZiAocmxfZGlyZWN0 b3J5X2NvbXBsZXRpb25faG9vayAmJiAoKnJsX2RpcmVjdG9yeV9jb21wbGV0aW9uX2hvb2spICgm ZGlybmFtZSkpCi0gCXsKLS0JICBmcmVlICh1c2Vyc19kaXJuYW1lKTsKLSsJICB4ZnJlZSAodXNl cnNfZGlybmFtZSk7Ci0gCSAgdXNlcnNfZGlybmFtZSA9IHNhdmVzdHJpbmcgKGRpcm5hbWUpOwot IAl9Ci0tCi0rICAgICAgZWxzZSBpZiAocmxfY29tcGxldGlvbl9mb3VuZF9xdW90ZSAmJiBybF9m aWxlbmFtZV9kZXF1b3RpbmdfZnVuY3Rpb24pCi0rCXsKLSsJICAvKiBkZWxldGUgc2luZ2xlIGFu ZCBkb3VibGUgcXVvdGVzICovCi0rCSAgeGZyZWUgKGRpcm5hbWUpOwotKwkgIGRpcm5hbWUgPSBz YXZlc3RyaW5nICh1c2Vyc19kaXJuYW1lKTsKLSsJfQotICAgICAgIGRpcmVjdG9yeSA9IG9wZW5k aXIgKGRpcm5hbWUpOwotKwotKyAgICAgIC8qIE5vdyBkZXF1b3RlIGEgbm9uLW51bGwgZmlsZW5h bWUuICovCi0rICAgICAgaWYgKGZpbGVuYW1lICYmICpmaWxlbmFtZSAmJiBybF9jb21wbGV0aW9u X2ZvdW5kX3F1b3RlICYmIHJsX2ZpbGVuYW1lX2RlcXVvdGluZ19mdW5jdGlvbikKLSsJewotKwkg IC8qIGRlbGV0ZSBzaW5nbGUgYW5kIGRvdWJsZSBxdW90ZXMgKi8KLSsJICB0ZW1wID0gKCpybF9m aWxlbmFtZV9kZXF1b3RpbmdfZnVuY3Rpb24pIChmaWxlbmFtZSwgcmxfY29tcGxldGlvbl9xdW90 ZV9jaGFyYWN0ZXIpOwotKwkgIHhmcmVlIChmaWxlbmFtZSk7Ci0rCSAgZmlsZW5hbWUgPSB0ZW1w OwotKwl9Ci0gICAgICAgZmlsZW5hbWVfbGVuID0gc3RybGVuIChmaWxlbmFtZSk7Ci0gCi0gICAg ICAgcmxfZmlsZW5hbWVfY29tcGxldGlvbl9kZXNpcmVkID0gMTsKLUBAIC0xOTk3LDM3ICsyMjYy LDMxIEBAIHJsX2ZpbGVuYW1lX2NvbXBsZXRpb25fZnVuY3Rpb24gKHRleHQsIHMKLSAgIGVudHJ5 ID0gKHN0cnVjdCBkaXJlbnQgKilOVUxMOwotICAgd2hpbGUgKGRpcmVjdG9yeSAmJiAoZW50cnkg PSByZWFkZGlyIChkaXJlY3RvcnkpKSkKLSAgICAgewotKyAgICAgIGNvbnZmbiA9IGRlbnRyeSA9 IGVudHJ5LT5kX25hbWU7Ci0rICAgICAgY29udmxlbiA9IGRlbnRsZW4gPSBEX05BTUxFTiAoZW50 cnkpOwotKwotKyAgICAgIGlmIChybF9maWxlbmFtZV9yZXdyaXRlX2hvb2spCi0rCXsKLSsJICBj b252Zm4gPSAoKnJsX2ZpbGVuYW1lX3Jld3JpdGVfaG9vaykgKGRlbnRyeSwgZGVudGxlbik7Ci0r CSAgY29udmxlbiA9IChjb252Zm4gPT0gZGVudHJ5KSA/IGRlbnRsZW4gOiBzdHJsZW4gKGNvbnZm bik7Ci0rCX0KLSsKLSAgICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIG5vIGZpbGVuYW1lLiAgSWYg dGhlIHVzZXIgaGFzIGRpc2FibGVkIHRoZQotICAgICAgICAgIGBtYXRjaC1oaWRkZW4tZmlsZXMn IHZhcmlhYmxlLCBza2lwIGZpbGVuYW1lcyBiZWdpbm5pbmcgd2l0aCBgLicuCi0gCSBBbGwgb3Ro ZXIgZW50cmllcyBleGNlcHQgIi4iIGFuZCAiLi4iIG1hdGNoLiAqLwotICAgICAgIGlmIChmaWxl bmFtZV9sZW4gPT0gMCkKLSAJewotLQkgIGlmIChfcmxfbWF0Y2hfaGlkZGVuX2ZpbGVzID09IDAg JiYgSElEREVOX0ZJTEUgKGVudHJ5LT5kX25hbWUpKQotKwkgIGlmIChfcmxfbWF0Y2hfaGlkZGVu X2ZpbGVzID09IDAgJiYgSElEREVOX0ZJTEUgKGNvbnZmbikpCi0gCSAgICBjb250aW51ZTsKLSAK LS0JICBpZiAoZW50cnktPmRfbmFtZVswXSAhPSAnLicgfHwKLS0JICAgICAgIChlbnRyeS0+ZF9u YW1lWzFdICYmCi0tCQkgKGVudHJ5LT5kX25hbWVbMV0gIT0gJy4nIHx8IGVudHJ5LT5kX25hbWVb Ml0pKSkKLSsJICBpZiAoY29udmZuWzBdICE9ICcuJyB8fAotKwkgICAgICAgKGNvbnZmblsxXSAm JiAoY29udmZuWzFdICE9ICcuJyB8fCBjb252Zm5bMl0pKSkKLSAJICAgIGJyZWFrOwotIAl9Ci0g ICAgICAgZWxzZQotIAl7Ci0tCSAgLyogT3RoZXJ3aXNlLCBpZiB0aGVzZSBtYXRjaCB1cCB0byB0 aGUgbGVuZ3RoIG9mIGZpbGVuYW1lLCB0aGVuCi0tCSAgICAgaXQgaXMgYSBtYXRjaC4gKi8KLS0J ICBpZiAoX3JsX2NvbXBsZXRpb25fY2FzZV9mb2xkKQotLQkgICAgewotLQkgICAgICBpZiAoKF9y bF90b19sb3dlciAoZW50cnktPmRfbmFtZVswXSkgPT0gX3JsX3RvX2xvd2VyIChmaWxlbmFtZVsw XSkpICYmCi0tCQkgICgoKGludClEX05BTUxFTiAoZW50cnkpKSA+PSBmaWxlbmFtZV9sZW4pICYm Ci0tCQkgIChfcmxfc3RybmljbXAgKGZpbGVuYW1lLCBlbnRyeS0+ZF9uYW1lLCBmaWxlbmFtZV9s ZW4pID09IDApKQotLQkJYnJlYWs7Ci0tCSAgICB9Ci0tCSAgZWxzZQotLQkgICAgewotLQkgICAg ICBpZiAoKGVudHJ5LT5kX25hbWVbMF0gPT0gZmlsZW5hbWVbMF0pICYmCi0tCQkgICgoKGludClE X05BTUxFTiAoZW50cnkpKSA+PSBmaWxlbmFtZV9sZW4pICYmCi0tCQkgIChzdHJuY21wIChmaWxl bmFtZSwgZW50cnktPmRfbmFtZSwgZmlsZW5hbWVfbGVuKSA9PSAwKSkKLS0JCWJyZWFrOwotLQkg ICAgfQotKwkgIGlmIChjb21wbGV0ZV9mbmNtcCAoY29udmZuLCBjb252bGVuLCBmaWxlbmFtZSwg ZmlsZW5hbWVfbGVuKSkKLSsJICAgIGJyZWFrOwotIAl9Ci0gICAgIH0KLSAKLUBAIC0yMDQwLDE3 ICsyMjk5LDE3IEBAIHJsX2ZpbGVuYW1lX2NvbXBsZXRpb25fZnVuY3Rpb24gKHRleHQsIHMKLSAJ fQotICAgICAgIGlmIChkaXJuYW1lKQotIAl7Ci0tCSAgZnJlZSAoZGlybmFtZSk7Ci0rCSAgeGZy ZWUgKGRpcm5hbWUpOwotIAkgIGRpcm5hbWUgPSAoY2hhciAqKU5VTEw7Ci0gCX0KLSAgICAgICBp ZiAoZmlsZW5hbWUpCi0gCXsKLS0JICBmcmVlIChmaWxlbmFtZSk7Ci0rCSAgeGZyZWUgKGZpbGVu YW1lKTsKLSAJICBmaWxlbmFtZSA9IChjaGFyICopTlVMTDsKLSAJfQotICAgICAgIGlmICh1c2Vy c19kaXJuYW1lKQotIAl7Ci0tCSAgZnJlZSAodXNlcnNfZGlybmFtZSk7Ci0rCSAgeGZyZWUgKHVz ZXJzX2Rpcm5hbWUpOwotIAkgIHVzZXJzX2Rpcm5hbWUgPSAoY2hhciAqKU5VTEw7Ci0gCX0KLSAK LUBAIC0yMDg0LDI3ICsyMzQzLDMwIEBAIHJsX2ZpbGVuYW1lX2NvbXBsZXRpb25fZnVuY3Rpb24g KHRleHQsIHMKLSAJCXRlbXBbZGlybGVuKytdID0gJy8nOwotIAkgICAgfQotIAotLQkgIHN0cmNw eSAodGVtcCArIGRpcmxlbiwgZW50cnktPmRfbmFtZSk7Ci0rCSAgc3RyY3B5ICh0ZW1wICsgZGly bGVuLCBjb252Zm4pOwotIAl9Ci0gICAgICAgZWxzZQotLQl0ZW1wID0gc2F2ZXN0cmluZyAoZW50 cnktPmRfbmFtZSk7Ci0rCXRlbXAgPSBzYXZlc3RyaW5nIChjb252Zm4pOwotKwotKyAgICAgIGlm IChjb252Zm4gIT0gZGVudHJ5KQotKwl4ZnJlZSAoY29udmZuKTsKLSAKLSAgICAgICByZXR1cm4g KHRlbXApOwotICAgICB9Ci0gfQotIAotIC8qIEFuIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2Yg YSBtZW51IGNvbXBsZXRpb24gZnVuY3Rpb24gYSBsYSB0Y3NoLiAgVGhlCi0tICAgZmlyc3QgdGlt ZSAoaWYgdGhlIGxhc3QgcmVhZGxpbmUgY29tbWFuZCB3YXMgbm90IHJsX21lbnVfY29tcGxldGUp LCB3ZQotKyAgIGZpcnN0IHRpbWUgKGlmIHRoZSBsYXN0IHJlYWRsaW5lIGNvbW1hbmQgd2FzIG5v dCBybF9vbGRfbWVudV9jb21wbGV0ZSksIHdlCi0gICAgZ2VuZXJhdGUgdGhlIGxpc3Qgb2YgbWF0 Y2hlcy4gIFRoaXMgY29kZSBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIGNvZGUgaW4KLSAgICBybF9j b21wbGV0ZV9pbnRlcm5hbCAtLSB0aGVyZSBzaG91bGQgYmUgYSB3YXkgdG8gY29tYmluZSB0aGUg dHdvLiAgVGhlbiwKLSAgICBmb3IgZWFjaCBpdGVtIGluIHRoZSBsaXN0IG9mIG1hdGNoZXMsIHdl IGluc2VydCB0aGUgbWF0Y2ggaW4gYW4gdW5kb2FibGUKLSAgICBmYXNoaW9uLCB3aXRoIHRoZSBh cHByb3ByaWF0ZSBjaGFyYWN0ZXIgYXBwZW5kZWQgKHRoaXMgaGFwcGVucyBvbiB0aGUKLS0gICBz ZWNvbmQgYW5kIHN1YnNlcXVlbnQgY29uc2VjdXRpdmUgY2FsbHMgdG8gcmxfbWVudV9jb21wbGV0 ZSkuICBXaGVuIHdlCi0rICAgc2Vjb25kIGFuZCBzdWJzZXF1ZW50IGNvbnNlY3V0aXZlIGNhbGxz IHRvIHJsX29sZF9tZW51X2NvbXBsZXRlKS4gIFdoZW4gd2UKLSAgICBoaXQgdGhlIGVuZCBvZiB0 aGUgbWF0Y2ggbGlzdCwgd2UgcmVzdG9yZSB0aGUgb3JpZ2luYWwgdW5tYXRjaGVkIHRleHQsCi0g ICAgcmluZyB0aGUgYmVsbCwgYW5kIHJlc2V0IHRoZSBjb3VudGVyIHRvIHplcm8uICovCi0gaW50 Ci0tcmxfbWVudV9jb21wbGV0ZSAoY291bnQsIGlnbm9yZSkKLS0gICAgIGludCBjb3VudCwgaWdu b3JlOwotK3JsX29sZF9tZW51X2NvbXBsZXRlIChjb3VudCwgaW52b2tpbmdfa2V5KQotKyAgICAg aW50IGNvdW50LCBpbnZva2luZ19rZXk7Ci0gewotICAgcmxfY29tcGVudHJ5X2Z1bmNfdCAqb3Vy X2Z1bmM7Ci0gICBpbnQgbWF0Y2hpbmdfZmlsZW5hbWVzLCBmb3VuZF9xdW90ZTsKLUBAIC0yMTE5 LDcgKzIzODEsNyBAQCBybF9tZW51X2NvbXBsZXRlIChjb3VudCwgaWdub3JlKQotIAotICAgLyog VGhlIGZpcnN0IHRpbWUgdGhyb3VnaCwgd2UgZ2VuZXJhdGUgdGhlIGxpc3Qgb2YgbWF0Y2hlcyBh bmQgc2V0IHRoaW5ncwotICAgICAgdXAgdG8gaW5zZXJ0IHRoZW0uICovCi0tICBpZiAocmxfbGFz dF9mdW5jICE9IHJsX21lbnVfY29tcGxldGUpCi0rICBpZiAocmxfbGFzdF9mdW5jICE9IHJsX29s ZF9tZW51X2NvbXBsZXRlKQotICAgICB7Ci0gICAgICAgLyogQ2xlYW4gdXAgZnJvbSBwcmV2aW91 cyBjYWxsLCBpZiBhbnkuICovCi0gICAgICAgRlJFRSAob3JpZ190ZXh0KTsKLUBAIC0yMTI5LDEw ICsyMzkxLDE2IEBAIHJsX21lbnVfY29tcGxldGUgKGNvdW50LCBpZ25vcmUpCi0gICAgICAgbWF0 Y2hfbGlzdF9pbmRleCA9IG1hdGNoX2xpc3Rfc2l6ZSA9IDA7Ci0gICAgICAgbWF0Y2hlcyA9IChj aGFyICoqKU5VTEw7Ci0gCi0rICAgICAgcmxfY29tcGxldGlvbl9pbnZva2luZ19rZXkgPSBpbnZv a2luZ19rZXk7Ci0rCi0rICAgICAgUkxfU0VUU1RBVEUoUkxfU1RBVEVfQ09NUExFVElORyk7Ci0r Ci0gICAgICAgLyogT25seSB0aGUgY29tcGxldGlvbiBlbnRyeSBmdW5jdGlvbiBjYW4gY2hhbmdl IHRoZXNlLiAqLwotICAgICAgIHNldF9jb21wbGV0aW9uX2RlZmF1bHRzICgnJScpOwotIAotLSAg ICAgIG91cl9mdW5jID0gcmxfY29tcGxldGlvbl9lbnRyeV9mdW5jdGlvbgotKyAgICAgIG91cl9m dW5jID0gcmxfbWVudV9jb21wbGV0aW9uX2VudHJ5X2Z1bmN0aW9uOwotKyAgICAgIGlmIChvdXJf ZnVuYyA9PSAwKQotKwlvdXJfZnVuYyA9IHJsX2NvbXBsZXRpb25fZW50cnlfZnVuY3Rpb24KLSAJ CQk/IHJsX2NvbXBsZXRpb25fZW50cnlfZnVuY3Rpb24KLSAJCQk6IHJsX2ZpbGVuYW1lX2NvbXBs ZXRpb25fZnVuY3Rpb247Ci0gCi1AQCAtMjE2MCwxOSArMjQyOCwyNSBAQCBybF9tZW51X2NvbXBs ZXRlIChjb3VudCwgaWdub3JlKQotIAotICAgICAgIGlmIChtYXRjaGVzID09IDAgfHwgcG9zdHBy b2Nlc3NfbWF0Y2hlcyAoJm1hdGNoZXMsIG1hdGNoaW5nX2ZpbGVuYW1lcykgPT0gMCkKLSAJewot LSAgICAJICBybF9kaW5nICgpOwotKwkgIHJsX2RpbmcgKCk7Ci0gCSAgRlJFRSAobWF0Y2hlcyk7 Ci0gCSAgbWF0Y2hlcyA9IChjaGFyICoqKTA7Ci0gCSAgRlJFRSAob3JpZ190ZXh0KTsKLSAJICBv cmlnX3RleHQgPSAoY2hhciAqKTA7Ci0tICAgIAkgIGNvbXBsZXRpb25fY2hhbmdlZF9idWZmZXIg PSAwOwotLSAgICAgICAgICByZXR1cm4gKDApOwotKwkgIGNvbXBsZXRpb25fY2hhbmdlZF9idWZm ZXIgPSAwOwotKwkgIFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVfQ09NUExFVElORyk7Ci0rCSAgcmV0 dXJuICgwKTsKLSAJfQotIAotKyAgICAgIFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVfQ09NUExFVElO Ryk7Ci0rCi0gICAgICAgZm9yIChtYXRjaF9saXN0X3NpemUgPSAwOyBtYXRjaGVzW21hdGNoX2xp c3Rfc2l6ZV07IG1hdGNoX2xpc3Rfc2l6ZSsrKQotICAgICAgICAgOwotICAgICAgIC8qIG1hdGNo ZXNbMF0gaXMgbGNkIGlmIG1hdGNoX2xpc3Rfc2l6ZSA+IDEsIGJ1dCB0aGUgY2lyY3VsYXIgYnVm ZmVyCi0gCSBjb2RlIGJlbG93IHNob3VsZCB0YWtlIGNhcmUgb2YgaXQuICovCi0rCi0rICAgICAg aWYgKG1hdGNoX2xpc3Rfc2l6ZSA+IDEgJiYgX3JsX2NvbXBsZXRlX3Nob3dfYWxsKQotKwlkaXNw bGF5X21hdGNoZXMgKG1hdGNoZXMpOwotICAgICB9Ci0gCi0gICAvKiBOb3cgd2UgaGF2ZSB0aGUg bGlzdCBvZiBtYXRjaGVzLiAgUmVwbGFjZSB0aGUgdGV4dCBiZXR3ZWVuCi1AQCAtMjE5MCw3ICsy NDY0LDEwIEBAIHJsX21lbnVfY29tcGxldGUgKGNvdW50LCBpZ25vcmUpCi0gCi0gICBtYXRjaF9s aXN0X2luZGV4ICs9IGNvdW50OwotICAgaWYgKG1hdGNoX2xpc3RfaW5kZXggPCAwKQotLSAgICBt YXRjaF9saXN0X2luZGV4ICs9IG1hdGNoX2xpc3Rfc2l6ZTsKLSsgICAgewotKyAgICAgIHdoaWxl IChtYXRjaF9saXN0X2luZGV4IDwgMCkKLSsJbWF0Y2hfbGlzdF9pbmRleCArPSBtYXRjaF9saXN0 X3NpemU7Ci0rICAgIH0KLSAgIGVsc2UKLSAgICAgbWF0Y2hfbGlzdF9pbmRleCAlPSBtYXRjaF9s aXN0X3NpemU7Ci0gCi1AQCAtMjIwOSwzICsyNDg2LDE4MCBAQCBybF9tZW51X2NvbXBsZXRlIChj b3VudCwgaWdub3JlKQotICAgY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlciA9IDE7Ci0gICByZXR1 cm4gKDApOwotIH0KLSsKLStpbnQKLStybF9tZW51X2NvbXBsZXRlIChjb3VudCwgaWdub3JlKQot KyAgICAgaW50IGNvdW50LCBpZ25vcmU7Ci0rewotKyAgcmxfY29tcGVudHJ5X2Z1bmNfdCAqb3Vy X2Z1bmM7Ci0rICBpbnQgbWF0Y2hpbmdfZmlsZW5hbWVzLCBmb3VuZF9xdW90ZTsKLSsKLSsgIHN0 YXRpYyBjaGFyICpvcmlnX3RleHQ7Ci0rICBzdGF0aWMgY2hhciAqKm1hdGNoZXMgPSAoY2hhciAq KikwOwotKyAgc3RhdGljIGludCBtYXRjaF9saXN0X2luZGV4ID0gMDsKLSsgIHN0YXRpYyBpbnQg bWF0Y2hfbGlzdF9zaXplID0gMDsKLSsgIHN0YXRpYyBpbnQgbm9udHJpdmlhbF9sY2QgPSAwOwot KyAgc3RhdGljIGludCBmdWxsX2NvbXBsZXRpb24gPSAwOwkvKiBzZXQgdG8gMSBpZiBtZW51IGNv bXBsZXRpb24gc2hvdWxkIHJlaW5pdGlhbGl6ZSBvbiBuZXh0IGNhbGwgKi8KLSsgIHN0YXRpYyBp bnQgb3JpZ19zdGFydCwgb3JpZ19lbmQ7Ci0rICBzdGF0aWMgY2hhciBxdW90ZV9jaGFyOwotKyAg c3RhdGljIGludCBkZWxpbWl0ZXIsIGNzdGF0ZTsKLSsKLSsgIC8qIFRoZSBmaXJzdCB0aW1lIHRo cm91Z2gsIHdlIGdlbmVyYXRlIHRoZSBsaXN0IG9mIG1hdGNoZXMgYW5kIHNldCB0aGluZ3MKLSsg ICAgIHVwIHRvIGluc2VydCB0aGVtLiAqLwotKyAgaWYgKChybF9sYXN0X2Z1bmMgIT0gcmxfbWVu dV9jb21wbGV0ZSAmJiBybF9sYXN0X2Z1bmMgIT0gcmxfYmFja3dhcmRfbWVudV9jb21wbGV0ZSkg fHwgZnVsbF9jb21wbGV0aW9uKQotKyAgICB7Ci0rICAgICAgLyogQ2xlYW4gdXAgZnJvbSBwcmV2 aW91cyBjYWxsLCBpZiBhbnkuICovCi0rICAgICAgRlJFRSAob3JpZ190ZXh0KTsKLSsgICAgICBp ZiAobWF0Y2hlcykKLSsJX3JsX2ZyZWVfbWF0Y2hfbGlzdCAobWF0Y2hlcyk7Ci0rCi0rICAgICAg bWF0Y2hfbGlzdF9pbmRleCA9IG1hdGNoX2xpc3Rfc2l6ZSA9IDA7Ci0rICAgICAgbWF0Y2hlcyA9 IChjaGFyICoqKU5VTEw7Ci0rCi0rICAgICAgZnVsbF9jb21wbGV0aW9uID0gMDsKLSsKLSsgICAg ICBSTF9TRVRTVEFURShSTF9TVEFURV9DT01QTEVUSU5HKTsKLSsKLSsgICAgICAvKiBPbmx5IHRo ZSBjb21wbGV0aW9uIGVudHJ5IGZ1bmN0aW9uIGNhbiBjaGFuZ2UgdGhlc2UuICovCi0rICAgICAg c2V0X2NvbXBsZXRpb25fZGVmYXVsdHMgKCclJyk7Ci0rCi0rICAgICAgb3VyX2Z1bmMgPSBybF9t ZW51X2NvbXBsZXRpb25fZW50cnlfZnVuY3Rpb247Ci0rICAgICAgaWYgKG91cl9mdW5jID09IDAp Ci0rCW91cl9mdW5jID0gcmxfY29tcGxldGlvbl9lbnRyeV9mdW5jdGlvbgotKwkJCT8gcmxfY29t cGxldGlvbl9lbnRyeV9mdW5jdGlvbgotKwkJCTogcmxfZmlsZW5hbWVfY29tcGxldGlvbl9mdW5j dGlvbjsKLSsKLSsgICAgICAvKiBXZSBub3cgbG9vayBiYWNrd2FyZHMgZm9yIHRoZSBzdGFydCBv ZiBhIGZpbGVuYW1lL3ZhcmlhYmxlIHdvcmQuICovCi0rICAgICAgb3JpZ19lbmQgPSBybF9wb2lu dDsKLSsgICAgICBmb3VuZF9xdW90ZSA9IGRlbGltaXRlciA9IDA7Ci0rICAgICAgcXVvdGVfY2hh ciA9ICdcMCc7Ci0rCi0rICAgICAgaWYgKHJsX3BvaW50KQotKwkvKiBUaGlzIChwb3NzaWJseSkg Y2hhbmdlcyBybF9wb2ludC4gIElmIGl0IHJldHVybnMgYSBub24temVybyBjaGFyLAotKwkgICB3 ZSBrbm93IHdlIGhhdmUgYW4gb3BlbiBxdW90ZS4gKi8KLSsJcXVvdGVfY2hhciA9IF9ybF9maW5k X2NvbXBsZXRpb25fd29yZCAoJmZvdW5kX3F1b3RlLCAmZGVsaW1pdGVyKTsKLSsKLSsgICAgICBv cmlnX3N0YXJ0ID0gcmxfcG9pbnQ7Ci0rICAgICAgcmxfcG9pbnQgPSBvcmlnX2VuZDsKLSsKLSsg ICAgICBvcmlnX3RleHQgPSBybF9jb3B5X3RleHQgKG9yaWdfc3RhcnQsIG9yaWdfZW5kKTsKLSsg ICAgICBtYXRjaGVzID0gZ2VuX2NvbXBsZXRpb25fbWF0Y2hlcyAob3JpZ190ZXh0LCBvcmlnX3N0 YXJ0LCBvcmlnX2VuZCwKLSsJCQkJCW91cl9mdW5jLCBmb3VuZF9xdW90ZSwgcXVvdGVfY2hhcik7 Ci0rCi0rICAgICAgbm9udHJpdmlhbF9sY2QgPSBtYXRjaGVzICYmIHN0cmNtcCAob3JpZ190ZXh0 LCBtYXRjaGVzWzBdKSAhPSAwOwotKwotKyAgICAgIC8qIElmIHdlIGFyZSBtYXRjaGluZyBmaWxl bmFtZXMsIHRoZSBhdHRlbXB0ZWQgY29tcGxldGlvbiBmdW5jdGlvbiB3aWxsCi0rCSBoYXZlIHNl dCBybF9maWxlbmFtZV9jb21wbGV0aW9uX2Rlc2lyZWQgdG8gYSBub24temVybyB2YWx1ZS4gIFRo ZSBiYXNpYwotKwkgcmxfZmlsZW5hbWVfY29tcGxldGlvbl9mdW5jdGlvbiBkb2VzIHRoaXMuICov Ci0rICAgICAgbWF0Y2hpbmdfZmlsZW5hbWVzID0gcmxfZmlsZW5hbWVfY29tcGxldGlvbl9kZXNp cmVkOwotKwotKyAgICAgIGlmIChtYXRjaGVzID09IDAgfHwgcG9zdHByb2Nlc3NfbWF0Y2hlcyAo Jm1hdGNoZXMsIG1hdGNoaW5nX2ZpbGVuYW1lcykgPT0gMCkKLSsJewotKwkgIHJsX2RpbmcgKCk7 Ci0rCSAgRlJFRSAobWF0Y2hlcyk7Ci0rCSAgbWF0Y2hlcyA9IChjaGFyICoqKTA7Ci0rCSAgRlJF RSAob3JpZ190ZXh0KTsKLSsJICBvcmlnX3RleHQgPSAoY2hhciAqKTA7Ci0rCSAgY29tcGxldGlv bl9jaGFuZ2VkX2J1ZmZlciA9IDA7Ci0rCSAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9DT01QTEVU SU5HKTsKLSsJICByZXR1cm4gKDApOwotKwl9Ci0rCi0rICAgICAgUkxfVU5TRVRTVEFURShSTF9T VEFURV9DT01QTEVUSU5HKTsKLSsKLSsgICAgICBmb3IgKG1hdGNoX2xpc3Rfc2l6ZSA9IDA7IG1h dGNoZXNbbWF0Y2hfbGlzdF9zaXplXTsgbWF0Y2hfbGlzdF9zaXplKyspCi0rICAgICAgICA7Ci0r Ci0rICAgICAgaWYgKG1hdGNoX2xpc3Rfc2l6ZSA9PSAwKSAKLSsJewotKwkgIHJsX2RpbmcgKCk7 Ci0rCSAgRlJFRSAobWF0Y2hlcyk7Ci0rCSAgbWF0Y2hlcyA9IChjaGFyICoqKTA7Ci0rCSAgbWF0 Y2hfbGlzdF9pbmRleCA9IDA7Ci0rCSAgY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlciA9IDA7Ci0r CSAgcmV0dXJuICgwKTsKLSsgICAgICAgIH0KLSsKLSsgICAgICAvKiBtYXRjaGVzWzBdIGlzIGxj ZCBpZiBtYXRjaF9saXN0X3NpemUgPiAxLCBidXQgdGhlIGNpcmN1bGFyIGJ1ZmZlcgotKwkgY29k ZSBiZWxvdyBzaG91bGQgdGFrZSBjYXJlIG9mIGl0LiAqLwotKyAgICAgIGlmICgqbWF0Y2hlc1sw XSkKLSsJewotKwkgIGluc2VydF9tYXRjaCAobWF0Y2hlc1swXSwgb3JpZ19zdGFydCwgbWF0Y2hl c1sxXSA/IE1VTFRfTUFUQ0ggOiBTSU5HTEVfTUFUQ0gsICZxdW90ZV9jaGFyKTsKLSsJICBvcmln X2VuZCA9IG9yaWdfc3RhcnQgKyBzdHJsZW4gKG1hdGNoZXNbMF0pOwotKwkgIGNvbXBsZXRpb25f Y2hhbmdlZF9idWZmZXIgPSBTVFJFUSAob3JpZ190ZXh0LCBtYXRjaGVzWzBdKSA9PSAwOwotKwl9 Ci0rCi0rICAgICAgaWYgKG1hdGNoX2xpc3Rfc2l6ZSA+IDEgJiYgX3JsX2NvbXBsZXRlX3Nob3df YWxsKQotKwl7Ci0rCSAgZGlzcGxheV9tYXRjaGVzIChtYXRjaGVzKTsKLSsJICAvKiBJZiB0aGVy ZSBhcmUgc28gbWFueSBtYXRjaGVzIHRoYXQgdGhlIHVzZXIgaGFzIHRvIGJlIGFza2VkCi0rCSAg ICAgd2hldGhlciBvciBub3QgaGUgd2FudHMgdG8gc2VlIHRoZSBtYXRjaGVzLCBtZW51IGNvbXBs ZXRpb24KLSsJICAgICBpcyB1bndpZWxkeS4gKi8KLSsJICBpZiAocmxfY29tcGxldGlvbl9xdWVy eV9pdGVtcyA+IDAgJiYgbWF0Y2hfbGlzdF9zaXplID49IHJsX2NvbXBsZXRpb25fcXVlcnlfaXRl bXMpCi0rCSAgICB7Ci0rCSAgICAgIHJsX2RpbmcgKCk7Ci0rCSAgICAgIEZSRUUgKG1hdGNoZXMp OwotKwkgICAgICBtYXRjaGVzID0gKGNoYXIgKiopMDsKLSsJICAgICAgZnVsbF9jb21wbGV0aW9u ID0gMTsKLSsJICAgICAgcmV0dXJuICgwKTsKLSsJICAgIH0KLSsJfQotKyAgICAgIGVsc2UgaWYg KG1hdGNoX2xpc3Rfc2l6ZSA8PSAxKQotKwl7Ci0rCSAgYXBwZW5kX3RvX21hdGNoIChtYXRjaGVz WzBdLCBkZWxpbWl0ZXIsIHF1b3RlX2NoYXIsIG5vbnRyaXZpYWxfbGNkKTsKLSsJICBmdWxsX2Nv bXBsZXRpb24gPSAxOwotKwkgIHJldHVybiAoMCk7Ci0rCX0KLSsgICAgICBlbHNlIGlmIChfcmxf bWVudV9jb21wbGV0ZV9wcmVmaXhfZmlyc3QgJiYgbWF0Y2hfbGlzdF9zaXplID4gMSkKLSsJewot KwkgIHJsX2RpbmcgKCk7Ci0rCSAgcmV0dXJuICgwKTsKLSsJfQotKyAgICB9Ci0rCi0rICAvKiBO b3cgd2UgaGF2ZSB0aGUgbGlzdCBvZiBtYXRjaGVzLiAgUmVwbGFjZSB0aGUgdGV4dCBiZXR3ZWVu Ci0rICAgICBybF9saW5lX2J1ZmZlcltvcmlnX3N0YXJ0XSBhbmQgcmxfbGluZV9idWZmZXJbcmxf cG9pbnRdIHdpdGgKLSsgICAgIG1hdGNoZXNbbWF0Y2hfbGlzdF9pbmRleF0sIGFuZCBhZGQgYW55 IG5lY2Vzc2FyeSBjbG9zaW5nIGNoYXIuICovCi0rCi0rICBpZiAobWF0Y2hlcyA9PSAwIHx8IG1h dGNoX2xpc3Rfc2l6ZSA9PSAwKSAKLSsgICAgewotKyAgICAgIHJsX2RpbmcgKCk7Ci0rICAgICAg RlJFRSAobWF0Y2hlcyk7Ci0rICAgICAgbWF0Y2hlcyA9IChjaGFyICoqKTA7Ci0rICAgICAgY29t cGxldGlvbl9jaGFuZ2VkX2J1ZmZlciA9IDA7Ci0rICAgICAgcmV0dXJuICgwKTsKLSsgICAgfQot KwotKyAgbWF0Y2hfbGlzdF9pbmRleCArPSBjb3VudDsKLSsgIGlmIChtYXRjaF9saXN0X2luZGV4 IDwgMCkKLSsgICAgewotKyAgICAgIHdoaWxlIChtYXRjaF9saXN0X2luZGV4IDwgMCkKLSsJbWF0 Y2hfbGlzdF9pbmRleCArPSBtYXRjaF9saXN0X3NpemU7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAg bWF0Y2hfbGlzdF9pbmRleCAlPSBtYXRjaF9saXN0X3NpemU7Ci0rCi0rICBpZiAobWF0Y2hfbGlz dF9pbmRleCA9PSAwICYmIG1hdGNoX2xpc3Rfc2l6ZSA+IDEpCi0rICAgIHsKLSsgICAgICBybF9k aW5nICgpOwotKyAgICAgIGluc2VydF9tYXRjaCAobWF0Y2hlc1swXSwgb3JpZ19zdGFydCwgTVVM VF9NQVRDSCwgJnF1b3RlX2NoYXIpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBp bnNlcnRfbWF0Y2ggKG1hdGNoZXNbbWF0Y2hfbGlzdF9pbmRleF0sIG9yaWdfc3RhcnQsIFNJTkdM RV9NQVRDSCwgJnF1b3RlX2NoYXIpOwotKyAgICAgIGFwcGVuZF90b19tYXRjaCAobWF0Y2hlc1tt YXRjaF9saXN0X2luZGV4XSwgZGVsaW1pdGVyLCBxdW90ZV9jaGFyLAotKwkJICAgICAgIHN0cmNt cCAob3JpZ190ZXh0LCBtYXRjaGVzW21hdGNoX2xpc3RfaW5kZXhdKSk7Ci0rICAgIH0KLSsKLSsg IGNvbXBsZXRpb25fY2hhbmdlZF9idWZmZXIgPSAxOwotKyAgcmV0dXJuICgwKTsKLSt9Ci0rCi0r aW50Ci0rcmxfYmFja3dhcmRfbWVudV9jb21wbGV0ZSAoY291bnQsIGtleSkKLSsgICAgIGludCBj b3VudCwga2V5OwotK3sKLSsgIC8qIFBvc2l0aXZlIGFyZ3VtZW50cyB0byBiYWNrd2FyZC1tZW51 LWNvbXBsZXRlIHRyYW5zbGF0ZSBpbnRvIG5lZ2F0aXZlCi0rICAgICBhcmd1bWVudHMgZm9yIG1l bnUtY29tcGxldGUsIGFuZCB2aWNlIHZlcnNhLiAqLwotKyAgcmV0dXJuIChybF9tZW51X2NvbXBs ZXRlICgtY291bnQsIGtleSkpOwotK30KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRs aW5lL2NvbmZpZy5oLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmln L3JlYWRsaW5lL2NvbmZpZy5oLmluCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9jb25maWcuaC5pbgkyMDExLTA3LTAz IDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTQsNiArNCw4IEBACi0gICAgY2hhcmFjdGVy cywgZXZlbiBpZiB0aGUgT1Mgc3VwcG9ydHMgdGhlbS4gKi8KLSAjdW5kZWYgTk9fTVVMVElCWVRF X1NVUFBPUlQKLSAKLSsjdW5kZWYgX0ZJTEVfT0ZGU0VUX0JJVFMKLSsKLSAvKiBEZWZpbmUgaWYg b24gTUlOSVguICAqLwotICN1bmRlZiBfTUlOSVgKLSAKLUBAIC0xMywxMiArMTUsMTYgQEAKLSAj dW5kZWYgVk9JRF9TSUdIQU5ETEVSCi0gCi0gLyogQ2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBjb21w aWxlci4gKi8KLS0jdW5kZWYgY29uc3QKLSsjdW5kZWYgc2lnX2F0b21pY190Ci0gCi0gI3VuZGVm IHNpemVfdAotIAotICN1bmRlZiBzc2l6ZV90Ci0gCi0rI3VuZGVmIGNvbnN0Ci0rCi0rI3VuZGVm IHZvbGF0aWxlCi0rCi0gI3VuZGVmIFBST1RPVFlQRVMKLSAKLSAjdW5kZWYgX19DSEFSX1VOU0lH TkVEX18KLUBAIC00MSw2ICs0NywxNSBAQAotIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgaXNh c2NpaSBmdW5jdGlvbi4gKi8KLSAjdW5kZWYgSEFWRV9JU0FTQ0lJCi0gCi0rLyogRGVmaW5lIGlm IHlvdSBoYXZlIHRoZSBpc3djdHlwZSBmdW5jdGlvbi4gICovCi0rI3VuZGVmIEhBVkVfSVNXQ1RZ UEUKLSsKLSsvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGlzd2xvd2VyIGZ1bmN0aW9uLiAgKi8K LSsjdW5kZWYgSEFWRV9JU1dMT1dFUgotKwotKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgaXN3 dXBwZXIgZnVuY3Rpb24uICAqLwotKyN1bmRlZiBIQVZFX0lTV1VQUEVSCi0rCi0gLyogRGVmaW5l IGlmIHlvdSBoYXZlIHRoZSBpc3hkaWdpdCBmdW5jdGlvbi4gKi8KLSAjdW5kZWYgSEFWRV9JU1hE SUdJVAotIAotQEAgLTg4LDExICsxMDMsMjMgQEAKLSAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhl IHRjZ2V0YXR0ciBmdW5jdGlvbi4gICovCi0gI3VuZGVmIEhBVkVfVENHRVRBVFRSCi0gCi0rLyog RGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB0b3dsb3dlciBmdW5jdGlvbi4gICovCi0rI3VuZGVmIEhB VkVfVE9XTE9XRVIKLSsKLSsvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHRvd3VwcGVyIGZ1bmN0 aW9uLiAgKi8KLSsjdW5kZWYgSEFWRV9UT1dVUFBFUgotKwotIC8qIERlZmluZSBpZiB5b3UgaGF2 ZSB0aGUgdnNucHJpbnRmIGZ1bmN0aW9uLiAgKi8KLSAjdW5kZWYgSEFWRV9WU05QUklOVEYKLSAK LS0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHdjdG9tYiBmdW5jdGlvbi4gICovCi0tI3VuZGVm IEhBVkVfV0NUT01CIAotKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd2NydG9tYiBmdW5jdGlv bi4gICovCi0rI3VuZGVmIEhBVkVfV0NSVE9NQiAKLSsKLSsvKiBEZWZpbmUgaWYgeW91IGhhdmUg dGhlIHdjc2NvbGwgZnVuY3Rpb24uICAqLwotKyN1bmRlZiBIQVZFX1dDU0NPTEwKLSsKLSsvKiBE ZWZpbmUgaWYgeW91IGhhdmUgdGhlIHdjdHlwZSBmdW5jdGlvbi4gICovCi0rI3VuZGVmIEhBVkVf V0NUWVBFCi0gCi0gLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB3Y3dpZHRoIGZ1bmN0aW9uLiAg Ki8KLSAjdW5kZWYgSEFWRV9XQ1dJRFRICi1AQCAtMTc0LDExICsyMDEsMjAgQEAKLSAvKiBEZWZp bmUgaWYgeW91IGhhdmUgdGhlIDx3Y2hhci5oPiBoZWFkZXIgZmlsZS4gICovCi0gI3VuZGVmIEhB VkVfV0NIQVJfSAotIAotLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHZhcmFyZ3MuaD4gaGVh ZGVyIGZpbGUuICAqLwotKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHdjdHlwZS5oPiBoZWFk ZXIgZmlsZS4gICovCi0gI3VuZGVmIEhBVkVfV0NUWVBFX0gKLSAKLSAjdW5kZWYgSEFWRV9NQlNU QVRFX1QKLSAKLSsvKiBEZWZpbmUgaWYgeW91IGhhdmUgd2NoYXJfdCBpbiA8d2N0eXBlLmg+LiAq LwotKyN1bmRlZiBIQVZFX1dDSEFSX1QgCi0rCi0rLyogRGVmaW5lIGlmIHlvdSBoYXZlIHdjdHlw ZV90IGluIDx3Y3R5cGUuaD4uICovCi0rI3VuZGVmIEhBVkVfV0NUWVBFX1QKLSsKLSsvKiBEZWZp bmUgaWYgeW91IGhhdmUgd2ludF90IGluIDx3Y3R5cGUuaD4uICovICAKLSsjdW5kZWYgSEFWRV9X SU5UX1QgIAotKwotIC8qIERlZmluZSBpZiB5b3UgaGF2ZSA8bGFuZ2luZm8uaD4gYW5kIG5sX2xh bmdpbmZvKENPREVTRVQpLiAqLwotICN1bmRlZiBIQVZFX0xBTkdJTkZPX0NPREVTRVQKLSAKLUBA IC0yMjMsMTAgKzI1OSw2IEBACi0gIyAgZGVmaW5lIFRFUk1JT1NfTUlTU0lORwotICNlbmRpZgot IAotLSNpZiBkZWZpbmVkIChTVFJDT0xMX0JST0tFTikKLS0jICB1bmRlZiBIQVZFX1NUUkNPTEwK LS0jZW5kaWYKLS0KLSAjaWYgZGVmaW5lZCAoX19TVERDX18pICYmIGRlZmluZWQgKEhBVkVfU1RE QVJHX0gpCi0gIyAgZGVmaW5lIFBSRUZFUl9TVERBUkcKLSAjICBkZWZpbmUgVVNFX1ZBUkFSR1MK LUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2NvbmZpZ3VyZQotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9jb25maWd1cmUJMjAxMS0w Ny0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3Jl YWRsaW5lL2NvbmZpZ3VyZQkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAg LTEsNyArMSw3IEBACi0gIyEgL2Jpbi9zaAotLSMgRnJvbSBjb25maWd1cmUuaW4gZm9yIFJlYWRs aW5lIDUuMSwgdmVyc2lvbiAyLjU5LgotKyMgRnJvbSBjb25maWd1cmUuaW4gZm9yIFJlYWRsaW5l IDYuMiwgdmVyc2lvbiAyLjY3LgotICMgR3Vlc3MgdmFsdWVzIGZvciBzeXN0ZW0tZGVwZW5kZW50 IHZhcmlhYmxlcyBhbmQgY3JlYXRlIE1ha2VmaWxlcy4KLS0jIEdlbmVyYXRlZCBieSBHTlUgQXV0 b2NvbmYgMi42NCBmb3IgcmVhZGxpbmUgNS4xLXJlbGVhc2UuCi0rIyBHZW5lcmF0ZWQgYnkgR05V IEF1dG9jb25mIDIuNjQgZm9yIHJlYWRsaW5lIDYuMi4KLSAjCi0gIyBSZXBvcnQgYnVncyB0byA8 YnVnLXJlYWRsaW5lQGdudS5vcmc+LgotICMKLUBAIC01NTAsOCArNTUwLDggQEAgTUFLRUZMQUdT PQotICMgSWRlbnRpdHkgb2YgdGhpcyBwYWNrYWdlLgotIFBBQ0tBR0VfTkFNRT0ncmVhZGxpbmUn Ci0gUEFDS0FHRV9UQVJOQU1FPSdyZWFkbGluZScKLS1QQUNLQUdFX1ZFUlNJT049JzUuMS1yZWxl YXNlJwotLVBBQ0tBR0VfU1RSSU5HPSdyZWFkbGluZSA1LjEtcmVsZWFzZScKLStQQUNLQUdFX1ZF UlNJT049JzYuMicKLStQQUNLQUdFX1NUUklORz0ncmVhZGxpbmUgNi4yJwotIFBBQ0tBR0VfQlVH UkVQT1JUPSdidWctcmVhZGxpbmVAZ251Lm9yZycKLSBQQUNLQUdFX1VSTD0nJwotIAotQEAgLTU5 Myw3ICs1OTMsNiBAQCBhY19pbmNsdWRlc19kZWZhdWx0PSJcCi0gI2VuZGlmIgotIAotIGFjX3N1 YnN0X3ZhcnM9J0xUTElCT0JKUwotLUxJQk9CSlMKLSBURVJNQ0FQX0xJQgotIExJQlZFUlNJT04K LSBBUkZMQUdTCi1AQCAtNjIzLDE0ICs2MjIsMTMgQEAgU0hPQkpfTERGTEFHUwotIFNIT0JKX0xE Ci0gU0hPQkpfQ0ZMQUdTCi0gU0hPQkpfQ0MKLS1XQ1dJRFRIX09CSgotK0xJQk9CSlMKLSBNQUtF X1NIRUxMCi0gUkFOTElCCi0gQVIKLSBJTlNUQUxMX0RBVEEKLSBJTlNUQUxMX1NDUklQVAotIElO U1RBTExfUFJPR1JBTQotLUNDX0ZPUl9CVUlMRAotIEVHUkVQCi0gR1JFUAotIENQUAotQEAgLTY5 Niw2ICs2OTQsNyBAQCB3aXRoX2N1cnNlcwotIHdpdGhfcHVyaWZ5Ci0gZW5hYmxlX211bHRpYnl0 ZQotIGVuYWJsZV9zdGF0aWMKLStlbmFibGVfbGFyZ2VmaWxlCi0gJwotICAgICAgIGFjX3ByZWNp b3VzX3ZhcnM9J2J1aWxkX2FsaWFzCi0gaG9zdF9hbGlhcwotQEAgLTEyNDcsNyArMTI0Niw3IEBA IGlmIHRlc3QgIiRhY19pbml0X2hlbHAiID0gImxvbmciOyB0aGVuCi0gICAjIE9taXQgc29tZSBp bnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2lu Zy4KLSAgICMgVGhpcyBtZXNzYWdlIGlzIHRvbyBsb25nIHRvIGJlIGEgc3RyaW5nIGluIHRoZSBB L1VYIDMuMSBzaC4KLSAgIGNhdCA8PF9BQ0VPRgotLVxgY29uZmlndXJlJyBjb25maWd1cmVzIHJl YWRsaW5lIDUuMS1yZWxlYXNlIHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KLStc YGNvbmZpZ3VyZScgY29uZmlndXJlcyByZWFkbGluZSA2LjIgdG8gYWRhcHQgdG8gbWFueSBraW5k cyBvZiBzeXN0ZW1zLgotIAotIFVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgot IAotQEAgLTEzMTIsNyArMTMxMSw3IEBAIGZpCi0gCi0gaWYgdGVzdCAtbiAiJGFjX2luaXRfaGVs cCI7IHRoZW4KLSAgIGNhc2UgJGFjX2luaXRfaGVscCBpbgotLSAgICAgc2hvcnQgfCByZWN1cnNp dmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHJlYWRsaW5lIDUuMS1yZWxlYXNlOiI7OwotKyAg ICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHJlYWRsaW5lIDYu MjoiOzsKLSAgICBlc2FjCi0gICBjYXQgPDxcX0FDRU9GCi0gCi1AQCAtMTMyMiw2ICsxMzIxLDcg QEAgT3B0aW9uYWwgRmVhdHVyZXM6Ci0gICAtLWVuYWJsZS1GRUFUVVJFWz1BUkddICBpbmNsdWRl IEZFQVRVUkUgW0FSRz15ZXNdCi0gICAtLWVuYWJsZS1tdWx0aWJ5dGUgICAgICBlbmFibGUgbXVs dGlieXRlIGNoYXJhY3RlcnMgaWYgT1Mgc3VwcG9ydHMgdGhlbQotICAgLS1lbmFibGUtc3RhdGlj ICAgICAgICAgYnVpbGQgc3RhdGljIGxpYnJhcmllcyBbZGVmYXVsdD1ZRVNdCi0rICAtLWRpc2Fi bGUtbGFyZ2VmaWxlICAgICBvbWl0IHN1cHBvcnQgZm9yIGxhcmdlIGZpbGVzCi0gCi0gT3B0aW9u YWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtUEFDS0FHRVs9QVJHXSAgICB1c2UgUEFDS0FHRSBbQVJH PXllc10KLUBAIC0xNDA2LDcgKzE0MDYsNyBAQCBmaQotIHRlc3QgLW4gIiRhY19pbml0X2hlbHAi ICYmIGV4aXQgJGFjX3N0YXR1cwotIGlmICRhY19pbml0X3ZlcnNpb247IHRoZW4KLSAgIGNhdCA8 PFxfQUNFT0YKLS1yZWFkbGluZSBjb25maWd1cmUgNS4xLXJlbGVhc2UKLStyZWFkbGluZSBjb25m aWd1cmUgNi4yCi0gZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY0Ci0gCi0gQ29weXJpZ2h0 IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotQEAgLTE4MzEsNyArMTgz MSw3IEBAIGNhdCA+Y29uZmlnLmxvZyA8PF9BQ0VPRgotIFRoaXMgZmlsZSBjb250YWlucyBhbnkg bWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCi0gcnVubmluZyBjb25maWd1cmUs IHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KLSAKLS1JdCB3 YXMgY3JlYXRlZCBieSByZWFkbGluZSAkYXNfbWUgNS4xLXJlbGVhc2UsIHdoaWNoIHdhcwotK0l0 IHdhcyBjcmVhdGVkIGJ5IHJlYWRsaW5lICRhc19tZSA2LjIsIHdoaWNoIHdhcwotIGdlbmVyYXRl ZCBieSBHTlUgQXV0b2NvbmYgMi42NC4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwotIAot ICAgJCAkMCAkQAotQEAgLTIyMTEsNyArMjIxMSw3IEBAIGFjX2NvbmZpZ3VyZT0iJFNIRUxMICRh Y19hdXhfZGlyL2NvbmZpZ3UKLSBhY19jb25maWdfaGVhZGVycz0iJGFjX2NvbmZpZ19oZWFkZXJz IGNvbmZpZy5oIgotIAotIAotLUxJQlZFUlNJT049NS4xCi0rTElCVkVSU0lPTj02LjIKLSAKLSAj IE1ha2Ugc3VyZSB3ZSBjYW4gcnVuIGNvbmZpZy5zdWIuCi0gJFNIRUxMICIkYWNfYXV4X2Rpci9j b25maWcuc3ViIiBzdW40ID4vZGV2L251bGwgMj4mMSB8fAotQEAgLTM2MjIsMzkgKzM2MjIsNiBA QCAkYXNfZWNobyAiJGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zCi0gCi0gCi0gCi0tCi0t aWYgdGVzdCAieCRjcm9zc19jb21waWxpbmciID0gInh5ZXMiOyB0aGVuCi0tICAgIGNhc2UgIiR7 aG9zdH0iIGluCi0tICAgICotY3lnd2luKikKLS0JY3Jvc3NfY2FjaGU9JHtzcmNkaXJ9L2Nyb3Nz LWJ1aWxkL2N5Z3dpbi5jYWNoZQotLQlMT0NBTF9DRkxBR1M9IiRMT0NBTF9DRkxBR1MgLUkke3Ny Y2Rpcn0vLi4vbGlidGVybWNhcCIKLS0JOzsKLS0gICAqLW1pbmd3MzIqKQotLQljcm9zc19jYWNo ZT0ke3NyY2Rpcn0vY3Jvc3MtYnVpbGQvbWluZ3cuY2FjaGUKLS0gICAgICAgIDs7Ci0tICAgICop ICBlY2hvICJjb25maWd1cmU6IGNyb3NzLWNvbXBpbGluZyBmb3IgYSBub24tY3lnd2luIHRhcmdl dCBpcyBub3Qgc3VwcG9ydGVkIiA+JjIKLS0JOzsKLS0gICAgZXNhYwotLQotLSAgICBpZiB0ZXN0 ICJ4JGNyb3NzX2NhY2hlIiAhPSAieCI7IHRoZW4KLS0JaWYgdGVzdCAtciAiJHtjcm9zc19jYWNo ZX0iOyB0aGVuCi0tCSAgICBlY2hvICJsb2FkaW5nIGNyb3NzLWJ1aWxkIGNhY2hlIGZpbGUgJHtj cm9zc19jYWNoZX0iCi0tCSAgICAuICR7Y3Jvc3NfY2FjaGV9Ci0tCWZpCi0tCXVuc2V0IGNyb3Nz X2NhY2hlCi0tICAgIGZpCi0tZmkKLS0KLS1pZiB0ZXN0IC16ICIkQ0NfRk9SX0JVSUxEIjsgdGhl bgotLSAgICBpZiB0ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgPSAieG5vIjsgdGhlbgotLSAgICAg ICAgQ0NfRk9SX0JVSUxEPSckKENDKScKLS0gICAgZWxzZQotLSAgICAgICAgQ0NfRk9SX0JVSUxE PWdjYwotLSAgICBmaQotLWZpCi0tCi0tCi0tCi0gIyBJZiB3ZSdyZSB1c2luZyBnY2MgYW5kIHRo ZSB1c2VyIGhhc24ndCBzcGVjaWZpZWQgQ0ZMQUdTLCBhZGQgLU8gdG8gQ0ZMQUdTLgotIHRlc3Qg LW4gIiRHQ0MiICYmIHRlc3QgLW4gIiRhdXRvX2NmbGFncyIgJiYgQ0ZMQUdTPSIkQ0ZMQUdTIC1P IgotIAotQEAgLTQwNTYsNiArNDAyMyw0MCBAQCBpZiB0ZXN0ICRhY19jdl9jX2NoYXJfdW5zaWdu ZWQgPSB5ZXMgJiYgCi0gCi0gZmkKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIGZvciB3b3JraW5nIHZvbGF0aWxlIiA+JjUKLSskYXNfZWNob19u ICJjaGVja2luZyBmb3Igd29ya2luZyB2b2xhdGlsZS4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7 YWNfY3ZfY192b2xhdGlsZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2Fj aGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0 LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sK LSsKLSt2b2xhdGlsZSBpbnQgeDsKLStpbnQgKiB2b2xhdGlsZSB5ID0gKGludCAqKSAwOwotK3Jl dHVybiAheCAmJiAheTsKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19m bl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBhY19jdl9jX3ZvbGF0aWxlPXll cwotK2Vsc2UKLSsgIGFjX2N2X2Nfdm9sYXRpbGU9bm8KLStmaQotK3JtIC1mIGNvcmUgY29uZnRl c3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotK2ZpCi0reyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jX3ZvbGF0 aWxlIiA+JjUKLSskYXNfZWNobyAiJGFjX2N2X2Nfdm9sYXRpbGUiID4mNjsgfQotK2lmIHRlc3Qg JGFjX2N2X2Nfdm9sYXRpbGUgPSBubzsgdGhlbgotKwotKyRhc19lY2hvICIjZGVmaW5lIHZvbGF0 aWxlIC8qKi8iID4+Y29uZmRlZnMuaAotKwotK2ZpCi0rCi0gCi0geyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyByZXR1cm4gdHlwZSBvZiBzaWduYWwgaGFu ZGxlcnMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIHJldHVybiB0eXBlIG9mIHNpZ25hbCBo YW5kbGVycy4uLiAiID4mNjsgfQotQEAgLTQ1NzEsNiArNDU3MiwyMDUgQEAgZmkKLSBkb25lCi0g Ci0gCi0rIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxhcmdlZmlsZSB3YXMgZ2l2ZW4uCi0raWYg dGVzdCAiJHtlbmFibGVfbGFyZ2VmaWxlK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIGVuYWJsZXZh bD0kZW5hYmxlX2xhcmdlZmlsZTsKLStmaQotKwotK2lmIHRlc3QgIiRlbmFibGVfbGFyZ2VmaWxl IiAhPSBubzsgdGhlbgotKwotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyBmb3Igc3BlY2lhbCBDIGNvbXBpbGVyIG9wdGlvbnMgbmVlZGVkIGZvciBs YXJnZSBmaWxlcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNwZWNpYWwgQyBjb21w aWxlciBvcHRpb25zIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0 ICIke2FjX2N2X3N5c19sYXJnZWZpbGVfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2Vj aG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBhY19jdl9zeXNfbGFyZ2VmaWxlX0NDPW5v Ci0rICAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICAgYWNfc2F2ZV9DQz0k Q0MKLSsgICAgICAgd2hpbGUgOjsgZG8KLSsJICMgSVJJWCA2LjIgYW5kIGxhdGVyIGRvIG5vdCBz dXBwb3J0IGxhcmdlIGZpbGVzIGJ5IGRlZmF1bHQsCi0rCSAjIHNvIHVzZSB0aGUgQyBjb21waWxl cidzIC1uMzIgb3B0aW9uIGlmIHRoYXQgaGVscHMuCi0rCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FD RU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKyNpbmNsdWRl IDxzeXMvdHlwZXMuaD4KLSsgLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYz IC0gMSBjb3JyZWN0bHkuCi0rICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1Qg dG8gYmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKLSsgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJz IG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycwotKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIy MzM3MjAzNjg1NDc3NTgwNy4gICovCi0rI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8 PCA2MikgLSAxICsgKChvZmZfdCkgMSA8PCA2MikpCi0rICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExB UkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKLSsJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAl IDIxNDc0ODM2NDcgPT0gMSkKLSsJCSAgICAgID8gMSA6IC0xXTsKLStpbnQKLSttYWluICgpCi0r ewotKwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotKwkgaWYgYWNfZm5fY190cnlf Y29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgYnJlYWsKLStmaQotK3JtIC1mIGNvcmUgY29u ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQKLSsJIENDPSIkQ0MgLW4zMiIKLSsJIGlmIGFj X2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGFjX2N2X3N5c19sYXJnZWZp bGVfQ0M9JyAtbjMyJzsgYnJlYWsKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0 ZXN0LiRhY19vYmpleHQKLSsJIGJyZWFrCi0rICAgICAgIGRvbmUKLSsgICAgICAgQ0M9JGFjX3Nh dmVfQ0MKLSsgICAgICAgcm0gLWYgY29uZnRlc3QuJGFjX2V4dAotKyAgICBmaQotK2ZpCi0reyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zeXNf bGFyZ2VmaWxlX0NDIiA+JjUKLSskYXNfZWNobyAiJGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MiID4m NjsgfQotKyAgaWYgdGVzdCAiJGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MiICE9IG5vOyB0aGVuCi0r ICAgIENDPSRDQyRhY19jdl9zeXNfbGFyZ2VmaWxlX0NDCi0rICBmaQotKwotKyAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX0ZJTEVfT0ZGU0VU X0JJVFMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hl Y2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMu Li4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3N5c19maWxlX29mZnNldF9iaXRzK3NldH0i ID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAg d2hpbGUgOjsgZG8KLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19l eHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyAv KiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KLSsg ICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0 Nzc1ODA3LAotKyAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVlcmFkaW5nIGFzIEMg Y29tcGlsZXJzCi0rICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAg Ki8KLSsjZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90 KSAxIDw8IDYyKSkKLSsgIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgz NjI5ID09IDcyMQotKwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQot KwkJICAgICAgPyAxIDogLTFdOwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1 cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRo ZW4gOgotKyAgYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHM9bm87IGJyZWFrCi0rZmkKLStybSAt ZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQK LSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQg Y29uZmRlZnMuaC4gICovCi0rI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyA2NAotKyNpbmNsdWRl IDxzeXMvdHlwZXMuaD4KLSsgLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYz IC0gMSBjb3JyZWN0bHkuCi0rICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1Qg dG8gYmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKLSsgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJz IG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycwotKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIy MzM3MjAzNjg1NDc3NTgwNy4gICovCi0rI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8 PCA2MikgLSAxICsgKChvZmZfdCkgMSA8PCA2MikpCi0rICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExB UkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKLSsJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAl IDIxNDc0ODM2NDcgPT0gMSkKLSsJCSAgICAgID8gMSA6IC0xXTsKLStpbnQKLSttYWluICgpCi0r ewotKwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2Nv bXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPTY0 OyBicmVhawotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4 dCBjb25mdGVzdC4kYWNfZXh0Ci0rICBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz11bmtub3du Ci0rICBicmVhawotK2RvbmUKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMiID4mNQotKyRhc19l Y2hvICIkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMiID4mNjsgfQotK2Nhc2UgJGFjX2N2X3N5 c19maWxlX29mZnNldF9iaXRzIGluICMoCi0rICBubyB8IHVua25vd24pIDs7Ci0rICAqKQotK2Nh dCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTICRhY19j dl9zeXNfZmlsZV9vZmZzZXRfYml0cwotK19BQ0VPRgotKzs7Ci0rZXNhYwotK3JtIC1yZiBjb25m dGVzdCoKLSsgIGlmIHRlc3QgJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzID0gdW5rbm93bjsg dGhlbgotKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciBfTEFSR0VfRklMRVMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcyIgPiY1Ci0r JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9MQVJHRV9GSUxFUyB2YWx1ZSBuZWVkZWQgZm9yIGxh cmdlIGZpbGVzLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9zeXNfbGFyZ2VfZmlsZXMr c2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNl Ci0rICB3aGlsZSA6OyBkbwotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu JGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+ Ci0rIC8qIENoZWNrIHRoYXQgb2ZmX3QgY2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5 LgotKyAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIw MzY4NTQ3NzU4MDcsCi0rICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcg YXMgQyBjb21waWxlcnMKLSsgICAgaW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4 MDcuICAqLwotKyNkZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgo b2ZmX3QpIDEgPDwgNjIpKQotKyAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIx NDc0ODM2MjkgPT0gNzIxCi0rCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09 IDEpCi0rCQkgICAgICA/IDEgOiAtMV07Ci0raW50Ci0rbWFpbiAoKQotK3sKLSsKLSsgIDsKLSsg IHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5P IjsgdGhlbiA6Ci0rICBhY19jdl9zeXNfbGFyZ2VfZmlsZXM9bm87IGJyZWFrCi0rZmkKLStybSAt ZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQK LSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQg Y29uZmRlZnMuaC4gICovCi0rI2RlZmluZSBfTEFSR0VfRklMRVMgMQotKyNpbmNsdWRlIDxzeXMv dHlwZXMuaD4KLSsgLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBj b3JyZWN0bHkuCi0rICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUg OTIyMzM3MjAzNjg1NDc3NTgwNywKLSsgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1 ZXJhZGluZyBhcyBDIGNvbXBpbGVycwotKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAz Njg1NDc3NTgwNy4gICovCi0rI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2Mikg LSAxICsgKChvZmZfdCkgMSA8PCA2MikpCi0rICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09G Rl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKLSsJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0 ODM2NDcgPT0gMSkKLSsJCSAgICAgID8gMSA6IC0xXTsKLStpbnQKLSttYWluICgpCi0rewotKwot KyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUg IiRMSU5FTk8iOyB0aGVuIDoKLSsgIGFjX2N2X3N5c19sYXJnZV9maWxlcz0xOyBicmVhawotK2Zp Ci0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4k YWNfZXh0Ci0rICBhY19jdl9zeXNfbGFyZ2VfZmlsZXM9dW5rbm93bgotKyAgYnJlYWsKLStkb25l Ci0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JGFjX2N2X3N5c19sYXJnZV9maWxlcyIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdl9zeXNfbGFyZ2Vf ZmlsZXMiID4mNjsgfQotK2Nhc2UgJGFjX2N2X3N5c19sYXJnZV9maWxlcyBpbiAjKAotKyAgbm8g fCB1bmtub3duKSA7OwotKyAgKikKLStjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0rI2RlZmlu ZSBfTEFSR0VfRklMRVMgJGFjX2N2X3N5c19sYXJnZV9maWxlcwotK19BQ0VPRgotKzs7Ci0rZXNh YwotK3JtIC1yZiBjb25mdGVzdCoKLSsgIGZpCi0rZmkKLSsKLSsKLSAKLSB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0eXBlIG9mIHNpZ25hbCBm dW5jdGlvbnMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciB0eXBlIG9mIHNpZ25hbCBm dW5jdGlvbnMuLi4gIiA+JjY7IH0KLUBAIC01MDc4LDYgKzUyNzgsNDkgQEAgJGFzX2VjaG8gIiNk ZWZpbmUgR1dJTlNaX0lOX1NZU19JT0NUTCAxIgotIGZpCi0gCi0gCi0reyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2lnX2F0b21pY190IGluIHNp Z25hbC5oIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Igc2lnX2F0b21pY190IGluIHNp Z25hbC5oLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9oYXZlX3NpZ19hdG9taWNfdCtz ZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UK LSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQg Y29uZmRlZnMuaC4gICovCi0rCi0rI2luY2x1ZGUgPHNpZ25hbC5oPgotKwotK2ludAotK21haW4g KCkKLSt7Ci0rIHNpZ19hdG9taWNfdCB4OwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VP RgotK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGFjX2N2X2hhdmVf c2lnX2F0b21pY190PXllcwotK2Vsc2UKLSsgIGFjX2N2X2hhdmVfc2lnX2F0b21pY190PW5vCi0r ZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSsgICAg Y29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLStmaQotK3sgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaGF2ZV9zaWdfYXRvbWlj X3QiID4mNQotKyRhc19lY2hvICIkYWNfY3ZfaGF2ZV9zaWdfYXRvbWljX3QiID4mNjsgfQotK2lm IHRlc3QgIiRhY19jdl9oYXZlX3NpZ19hdG9taWNfdCIgPSAibm8iCi0rdGhlbgotKyAgICBhY19m bl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJzaWdfYXRvbWljX3QiICJhY19jdl90eXBlX3NpZ19h dG9taWNfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9z aWdfYXRvbWljX3QiID0geCIieWVzOyB0aGVuIDoKLSsKLStlbHNlCi0rCi0rY2F0ID4+Y29uZmRl ZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUgc2lnX2F0b21pY190IGludAotK19BQ0VPRgotKwotK2Zp Ci0rCi0rZmkKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo ZWNraW5nIHdoZXRoZXIgc2lnbmFsIGhhbmRsZXJzIGFyZSBvZiB0eXBlIHZvaWQiID4mNQotICRh c19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgc2lnbmFsIGhhbmRsZXJzIGFyZSBvZiB0eXBlIHZv aWQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2Jhc2hfY3Zfdm9pZF9zaWdoYW5kbGVyK3NldH0i ID0gc2V0OyB0aGVuIDoKLUBAIC01MTE2LDYgKzUzNTksNyBAQCAkYXNfZWNobyAiI2RlZmluZSBW T0lEX1NJR0hBTkRMRVIgMSIgPj5jCi0gCi0gZmkKLSAKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBUSU9DU1RBVCBpbiBzeXMvaW9jdGwu aCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIFRJT0NTVEFUIGluIHN5cy9pb2N0bC5o Li4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHtiYXNoX2N2X3Rpb2NzdGF0X2luX2lvY3RsK3NldH0i ID0gc2V0OyB0aGVuIDoKLUBAIC01NjM4LDI3ICs1ODgyLDczIEBAIGZpCi0gZG9uZQotIAotIAot K2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1icmxlbiIgImFjX2N2X2Z1bmNfbWJybGVu IgotK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19tYnJsZW4iID0geCIieWVzOyB0aGVuIDoKLSsgICRh c19lY2hvICIjZGVmaW5lIEhBVkVfTUJSTEVOIDEiID4+Y29uZmRlZnMuaAotKwotK2ZpCi0rCi0r YWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAibWJzY2FzZWNtcCIgImFjX2N2X2Z1bmNfbWJz Y2FzZWNtcCIKLStpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbWJzY2FzZWNtcCIgPSB4IiJ5ZXM7IHRo ZW4gOgotKyAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9NQlNDTVAgMSIgPj5jb25mZGVmcy5oCi0r Ci0rZmkKLSsKLSthY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJtYnNjbXAiICJhY19jdl9m dW5jX21ic2NtcCIKLStpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbWJzY21wIiA9IHgiInllczsgdGhl biA6Ci0rICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX01CU0NNUCAxIiA+PmNvbmZkZWZzLmgKLSsK LStmaQotKwotK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1ic25ydG93Y3MiICJhY19j dl9mdW5jX21ic25ydG93Y3MiCi0raWYgdGVzdCAieCRhY19jdl9mdW5jX21ic25ydG93Y3MiID0g eCIieWVzOyB0aGVuIDoKLSsgICRhc19lY2hvICIjZGVmaW5lIEhBVkVfTUJTTlJUT1dDUyAxIiA+ PmNvbmZkZWZzLmgKLSsKLStmaQotKwotIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1i c3J0b3djcyIgImFjX2N2X2Z1bmNfbWJzcnRvd2NzIgotIGlmIHRlc3QgIngkYWNfY3ZfZnVuY19t YnNydG93Y3MiID0geCIieWVzOyB0aGVuIDoKLSAgICRhc19lY2hvICIjZGVmaW5lIEhBVkVfTUJT UlRPV0NTIDEiID4+Y29uZmRlZnMuaAotIAotIGZpCi0gCi0tYWNfZm5fY19jaGVja19mdW5jICIk TElORU5PIiAibWJydG93YyIgImFjX2N2X2Z1bmNfbWJydG93YyIKLS1pZiB0ZXN0ICJ4JGFjX2N2 X2Z1bmNfbWJydG93YyIgPSB4IiJ5ZXM7IHRoZW4gOgotLSAgJGFzX2VjaG8gIiNkZWZpbmUgSEFW RV9NQlJUT1dDIDEiID4+Y29uZmRlZnMuaAotKwotKwotK2ZvciBhY19mdW5jIGluIG1ic2Nocgot K2RvIDoKLSsgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1ic2NociIgImFjX2N2X2Z1 bmNfbWJzY2hyIgotK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19tYnNjaHIiID0geCIieWVzOyB0aGVu IDoKLSsgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIEhBVkVfTUJTQ0hSIDEK LStfQUNFT0YKLSsKLStlbHNlCi0rICBjYXNlICIgJExJQk9CSlMgIiBpbgotKyAgKiIgJGFjX2Z1 bmMuJGFjX29iamV4dCAiKiApIDs7Ci0rICAqKSBMSUJPQkpTPSIkTElCT0JKUyAkYWNfZnVuYy4k YWNfb2JqZXh0IgotKyA7OwotK2VzYWMKLSAKLSBmaQotK2RvbmUKLSAKLS1hY19mbl9jX2NoZWNr X2Z1bmMgIiRMSU5FTk8iICJtYnJsZW4iICJhY19jdl9mdW5jX21icmxlbiIKLS1pZiB0ZXN0ICJ4 JGFjX2N2X2Z1bmNfbWJybGVuIiA9IHgiInllczsgdGhlbiA6Ci0tICAkYXNfZWNobyAiI2RlZmlu ZSBIQVZFX01CUkxFTiAxIiA+PmNvbmZkZWZzLmgKLSsKLSsKLSthY19mbl9jX2NoZWNrX2Z1bmMg IiRMSU5FTk8iICJ3Y3J0b21iIiAiYWNfY3ZfZnVuY193Y3J0b21iIgotK2lmIHRlc3QgIngkYWNf Y3ZfZnVuY193Y3J0b21iIiA9IHgiInllczsgdGhlbiA6Ci0rICAkYXNfZWNobyAiI2RlZmluZSBI QVZFX1dDUlRPTUIgMSIgPj5jb25mZGVmcy5oCi0gCi0gZmkKLSAKLS1hY19mbl9jX2NoZWNrX2Z1 bmMgIiRMSU5FTk8iICJ3Y3RvbWIiICJhY19jdl9mdW5jX3djdG9tYiIKLS1pZiB0ZXN0ICJ4JGFj X2N2X2Z1bmNfd2N0b21iIiA9IHgiInllczsgdGhlbiA6Ci0tICAkYXNfZWNobyAiI2RlZmluZSBI QVZFX1dDVE9NQiAxIiA+PmNvbmZkZWZzLmgKLSthY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8i ICJ3Y3Njb2xsIiAiYWNfY3ZfZnVuY193Y3Njb2xsIgotK2lmIHRlc3QgIngkYWNfY3ZfZnVuY193 Y3Njb2xsIiA9IHgiInllczsgdGhlbiA6Ci0rICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX1dDU0NP TEwgMSIgPj5jb25mZGVmcy5oCi0rCi0rZmkKLSsKLSthY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5F Tk8iICJ3Y3NkdXAiICJhY19jdl9mdW5jX3djc2R1cCIKLStpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNf d2NzZHVwIiA9IHgiInllczsgdGhlbiA6Ci0rICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX1dDU0RV UCAxIiA+PmNvbmZkZWZzLmgKLSAKLSBmaQotIAotQEAgLTU2NjgsNTUgKzU5NTgsODkgQEAgaWYg dGVzdCAieCRhY19jdl9mdW5jX3djd2lkdGgiID0geCIieWVzOwotIAotIGZpCi0gCi0tYWNfZm5f Y19jaGVja19mdW5jICIkTElORU5PIiAid2NzZHVwIiAiYWNfY3ZfZnVuY193Y3NkdXAiCi0taWYg dGVzdCAieCRhY19jdl9mdW5jX3djc2R1cCIgPSB4IiJ5ZXM7IHRoZW4gOgotLSAgJGFzX2VjaG8g IiNkZWZpbmUgSEFWRV9XQ1NEVVAgMSIgPj5jb25mZGVmcy5oCi0rYWNfZm5fY19jaGVja19mdW5j ICIkTElORU5PIiAid2N0eXBlIiAiYWNfY3ZfZnVuY193Y3R5cGUiCi0raWYgdGVzdCAieCRhY19j dl9mdW5jX3djdHlwZSIgPSB4IiJ5ZXM7IHRoZW4gOgotKyAgJGFzX2VjaG8gIiNkZWZpbmUgSEFW RV9XQ1RZUEUgMSIgPj5jb25mZGVmcy5oCi0gCi0gZmkKLSAKLSAKLS1pZiB0ZXN0ICIkYWNfY3Zf ZnVuY193Y3dpZHRoIiA9IG5vICYmIHRlc3QgIiRhY19jdl9oZWFkZXJfd2NoYXJfaCIgPSB5ZXM7 IHRoZW4KLS0gIFdDV0lEVEhfT0JKPXdjd2lkdGgubwotK2ZvciBhY19mdW5jIGluIHdjc3dpZHRo Ci0rZG8gOgotKyAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAid2Nzd2lkdGgiICJhY19j dl9mdW5jX3djc3dpZHRoIgotK2lmIHRlc3QgIngkYWNfY3ZfZnVuY193Y3N3aWR0aCIgPSB4IiJ5 ZXM7IHRoZW4gOgotKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUgSEFWRV9X Q1NXSURUSCAxCi0rX0FDRU9GCi0rCi0gZWxzZQotLSAgV0NXSURUSF9PQko9Ci0rICBjYXNlICIg JExJQk9CSlMgIiBpbgotKyAgKiIgJGFjX2Z1bmMuJGFjX29iamV4dCAiKiApIDs7Ci0rICAqKSBM SUJPQkpTPSIkTElCT0JKUyAkYWNfZnVuYy4kYWNfb2JqZXh0IgotKyA7OwotK2VzYWMKLSsKLSBm aQotK2RvbmUKLSsKLSsKLSAKLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGZvciBtYnN0YXRlX3QiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5n IGZvciBtYnN0YXRlX3QuLi4gIiA+JjY7IH0KLS1pZiB0ZXN0ICIke2Jhc2hfY3ZfaGF2ZV9tYnN0 YXRlX3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIG1icnRvd2MgYW5kIG1ic3RhdGVfdCBhcmUg cHJvcGVybHkgZGVjbGFyZWQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgbWJy dG93YyBhbmQgbWJzdGF0ZV90IGFyZSBwcm9wZXJseSBkZWNsYXJlZC4uLiAiID4mNjsgfQotK2lm IHRlc3QgIiR7YWNfY3ZfZnVuY19tYnJ0b3djK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgICRhc19l Y2hvX24gIihjYWNoZWQpICIgPiY2Ci0gZWxzZQotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP RiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0KLSAjaW5jbHVk ZSA8d2NoYXIuaD4KLSBpbnQKLSBtYWluICgpCi0gewotLQotLSAgbWJzdGF0ZV90IHBzOwotLSAg bWJzdGF0ZV90ICpwc3A7Ci0tICBwc3AgPSAobWJzdGF0ZV90ICopMDsKLS0KLSt3Y2hhcl90IHdj OwotKwkgICAgICBjaGFyIGNvbnN0IHNbXSA9ICIiOwotKwkgICAgICBzaXplX3QgbiA9IDE7Ci0r CSAgICAgIG1ic3RhdGVfdCBzdGF0ZTsKLSsJICAgICAgcmV0dXJuICEgKHNpemVvZiBzdGF0ZSAm JiAobWJydG93YykgKCZ3YywgcywgbiwgJnN0YXRlKSk7Ci0gICA7Ci0gICByZXR1cm4gMDsKLSB9 Ci0gX0FDRU9GCi0taWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotLSAg YmFzaF9jdl9oYXZlX21ic3RhdGVfdD15ZXMKLStpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5P IjsgdGhlbiA6Ci0rICBhY19jdl9mdW5jX21icnRvd2M9eWVzCi0gZWxzZQotLSAgYmFzaF9jdl9o YXZlX21ic3RhdGVfdD1ubwotKyAgYWNfY3ZfZnVuY19tYnJ0b3djPW5vCi0gZmkKLS1ybSAtZiBj b3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSty bSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSsgICAgY29uZnRl c3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSBmaQotLXsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl9oYXZlX21ic3RhdGVfdCIgPiY1 Ci0tJGFzX2VjaG8gIiRiYXNoX2N2X2hhdmVfbWJzdGF0ZV90IiA+JjY7IH0KLS1pZiB0ZXN0ICRi YXNoX2N2X2hhdmVfbWJzdGF0ZV90ID0geWVzOyB0aGVuCi0reyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9mdW5jX21icnRvd2MiID4mNQotKyRh c19lY2hvICIkYWNfY3ZfZnVuY19tYnJ0b3djIiA+JjY7IH0KLSsgIGlmIHRlc3QgJGFjX2N2X2Z1 bmNfbWJydG93YyA9IHllczsgdGhlbgotKwotKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfTUJSVE9X QyAxIiA+PmNvbmZkZWZzLmgKLSsKLSsgIGZpCi0rCi0raWYgdGVzdCAkYWNfY3ZfZnVuY19tYnJ0 b3djID0geWVzOyB0aGVuCi0gCSRhc19lY2hvICIjZGVmaW5lIEhBVkVfTUJTVEFURV9UIDEiID4+ Y29uZmRlZnMuaAotIAotIGZpCi0gCi0rZm9yIGFjX2Z1bmMgaW4gaXN3bG93ZXIgaXN3dXBwZXIg dG93bG93ZXIgdG93dXBwZXIgaXN3Y3R5cGUKLStkbyA6Ci0rICBhc19hY192YXI9YCRhc19lY2hv ICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKLSthY19mbl9jX2NoZWNrX2Z1bmMg IiRMSU5FTk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCi0rZXZhbCBhc192YWw9XCQkYXNfYWNf dmFyCi0rICAgaWYgdGVzdCAieCRhc192YWwiID0geCIieWVzOyB0aGVuIDoKLSsgIGNhdCA+PmNv bmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfZnVuYyIgfCAk YXNfdHJfY3BwYCAxCi0rX0FDRU9GCi0rCi0rZmkKLStkb25lCi0rCi0rCi0geyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbmxfbGFuZ2luZm8gYW5k IENPREVTRVQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciBubF9sYW5naW5mbyBhbmQg Q09ERVNFVC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YmFzaF9jdl9sYW5naW5mb19jb2Rlc2V0 K3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC01NzQ4LDYgKzYwNzIsMTI2IEBAIGlmIHRlc3QgJGJh c2hfY3ZfbGFuZ2luZm9fY29kZXNldCA9IHllczsKLSAKLSBmaQotIAotK3sgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdjaGFyX3QgaW4gd2NoYXIu aCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdjaGFyX3QgaW4gd2NoYXIuaC4uLiAi ID4mNjsgfQotK2lmIHRlc3QgIiR7YmFzaF9jdl90eXBlX3djaGFyX3Qrc2V0fSIgPSBzZXQ7IHRo ZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRl ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAq LwotKyNpbmNsdWRlIDx3Y2hhci5oPgotKwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICAgICAg ICB3Y2hhcl90IGZvbzsKLSsgICAgICAgIGZvbyA9IDA7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsK LSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgot KyAgYmFzaF9jdl90eXBlX3djaGFyX3Q9eWVzCi0rZWxzZQotKyAgYmFzaF9jdl90eXBlX3djaGFy X3Q9bm8KLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQg Y29uZnRlc3QuJGFjX2V4dAotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6ICRiYXNoX2N2X3R5cGVfd2NoYXJfdCIgPiY1Ci0rJGFzX2VjaG8gIiRi YXNoX2N2X3R5cGVfd2NoYXJfdCIgPiY2OyB9Ci0raWYgdGVzdCAkYmFzaF9jdl90eXBlX3djaGFy X3QgPSB5ZXM7IHRoZW4KLSsKLSskYXNfZWNobyAiI2RlZmluZSBIQVZFX1dDSEFSX1QgMSIgPj5j b25mZGVmcy5oCi0rCi0rZmkKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGZvciB3Y3R5cGVfdCBpbiB3Y3R5cGUuaCIgPiY1Ci0rJGFzX2VjaG9f biAiY2hlY2tpbmcgZm9yIHdjdHlwZV90IGluIHdjdHlwZS5oLi4uICIgPiY2OyB9Ci0raWYgdGVz dCAiJHtiYXNoX2N2X3R5cGVfd2N0eXBlX3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2Vj aG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G ID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKyNpbmNsdWRlIDx3 Y3R5cGUuaD4KLStpbnQKLSttYWluICgpCi0rewotKwotKyAgICAgICAgd2N0eXBlX3QgZm9vOwot KyAgICAgICAgZm9vID0gMDsKLSsKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStp ZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBiYXNoX2N2X3R5cGVf d2N0eXBlX3Q9eWVzCi0rZWxzZQotKyAgYmFzaF9jdl90eXBlX3djdHlwZV90PW5vCi0rZmkKLSty bSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19l eHQKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiAkYmFzaF9jdl90eXBlX3djdHlwZV90IiA+JjUKLSskYXNfZWNobyAiJGJhc2hfY3ZfdHlwZV93 Y3R5cGVfdCIgPiY2OyB9Ci0raWYgdGVzdCAkYmFzaF9jdl90eXBlX3djdHlwZV90ID0geWVzOyB0 aGVuCi0rCi0rJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9XQ1RZUEVfVCAxIiA+PmNvbmZkZWZzLmgK LSsKLStmaQotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgZm9yIHdpbnRfdCBpbiB3Y3R5cGUuaCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcg Zm9yIHdpbnRfdCBpbiB3Y3R5cGUuaC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YmFzaF9jdl90 eXBlX3dpbnRfdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAi ID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19l eHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rI2luY2x1ZGUgPHdjdHlwZS5oPgotK2ludAot K21haW4gKCkKLSt7Ci0rCi0rICAgICAgICB3aW50X3QgZm9vOwotKyAgICAgICAgZm9vID0gMDsK LSsKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21w aWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBiYXNoX2N2X3R5cGVfd2ludF90PXllcwotK2Vsc2UK LSsgIGJhc2hfY3ZfdHlwZV93aW50X3Q9bm8KLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJy IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotK2ZpCi0reyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRiYXNoX2N2X3R5cGVfd2ludF90 IiA+JjUKLSskYXNfZWNobyAiJGJhc2hfY3ZfdHlwZV93aW50X3QiID4mNjsgfQotK2lmIHRlc3Qg JGJhc2hfY3ZfdHlwZV93aW50X3QgPSB5ZXM7IHRoZW4KLSsKLSskYXNfZWNobyAiI2RlZmluZSBI QVZFX1dJTlRfVCAxIiA+PmNvbmZkZWZzLmgKLSsKLStmaQotKwotK2lmIHRlc3QgIiRhbV9jdl9m dW5jX2ljb252IiA9IHllczsgdGhlbgotKwlPTERMSUJTPSIkTElCUyIKLSsJTElCUz0iJExJQlMg JExJQklDT05WIgotKwlmb3IgYWNfZnVuYyBpbiBsb2NhbGVfY2hhcnNldAotK2RvIDoKLSsgIGFj X2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImxvY2FsZV9jaGFyc2V0IiAiYWNfY3ZfZnVuY19s b2NhbGVfY2hhcnNldCIKLStpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbG9jYWxlX2NoYXJzZXQiID0g eCIieWVzOyB0aGVuIDoKLSsgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIEhB VkVfTE9DQUxFX0NIQVJTRVQgMQotK19BQ0VPRgotKwotK2ZpCi0rZG9uZQotKwotKwlMSUJTPSIk T0xETElCUyIKLStmaQotKwotIAotIAotIGNhc2UgIiRob3N0X2NwdSIgaW4KLUBAIC02MzU3LDcg KzY4MDEsNyBAQCBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpCi0gIyBy ZXBvcnQgYWN0dWFsIGlucHV0IHZhbHVlcyBvZiBDT05GSUdfRklMRVMgZXRjLiBpbnN0ZWFkIG9m IHRoZWlyCi0gIyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KLSBhY19sb2c9IgotLVRo aXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcmVhZGxpbmUgJGFzX21lIDUuMS1yZWxlYXNlLCB3aGlj aCB3YXMKLStUaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IHJlYWRsaW5lICRhc19tZSA2LjIsIHdo aWNoIHdhcwotIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NC4gIEludm9jYXRpb24gY29t bWFuZCBsaW5lIHdhcwotIAotICAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUwotQEAg LTY0MjEsNyArNjg2NSw3IEBAIFJlcG9ydCBidWdzIHRvIDxidWctcmVhZGxpbmVAZ251Lm9yZz4u IgotIF9BQ0VPRgotIGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2Zh aWw9MQotIGFjX2NzX3ZlcnNpb249IlxcCi0tcmVhZGxpbmUgY29uZmlnLnN0YXR1cyA1LjEtcmVs ZWFzZQotK3JlYWRsaW5lIGNvbmZpZy5zdGF0dXMgNi4yCi0gY29uZmlndXJlZCBieSAkMCwgZ2Vu ZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY0LAotICAgd2l0aCBvcHRpb25zIFxcImAkYXNfZWNo byAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNlZCAncy9eIC8vOyBzL1tcXCIiXGBcJF0vXFxcXCYv ZydgXFwiCi0gCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9jb25maWd1cmUu aW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvY29u ZmlndXJlLmluCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDcwMy9yZWFkbGluZS9jb25maWd1cmUuaW4JMjAxMS0wNy0wMyAxMDo0MToyMS4w MDAwMDAwMDAgKzAyMDAKLUBAIC01LDI4ICs1LDI2IEBAIGRubCByZXBvcnQgYnVncyB0byBjaGV0 QHBvLmN3cnUuZWR1Ci0gZG5sCi0gZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYg dG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCi0gCi0tIyBDb3B5cmlnaHQgKEMpIDE5ODct MjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjIENvcHlyaWdodCAoQykgMTk4 Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LS0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tIyBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0K LS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0jIEZvdW5kYXRp b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotLSMgMDIx MTEtMTMwNywgVVNBLgotKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyMgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyMg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLUFDX1JFVklTSU9OKFtmb3IgUmVhZGxpbmUg NS4xLCB2ZXJzaW9uIDIuNTldKQotKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsK LStBQ19SRVZJU0lPTihbZm9yIFJlYWRsaW5lIDYuMiwgdmVyc2lvbiAyLjY3XSkKLSAKLSBtNF9p bmNsdWRlKFsuLi9jb25maWcvb3ZlcnJpZGUubTRdKQotIAotLUFDX0lOSVQocmVhZGxpbmUsIDUu MS1yZWxlYXNlLCBidWctcmVhZGxpbmVAZ251Lm9yZykKLStBQ19JTklUKHJlYWRsaW5lLCA2LjIs IGJ1Zy1yZWFkbGluZUBnbnUub3JnKQotIAotIGRubCBtYWtlIHN1cmUgd2UgYXJlIHVzaW5nIGEg cmVjZW50IGF1dG9jb25mIHZlcnNpb24KLSBBQ19QUkVSRVEoMi41MCkKLUBAIC0zOCw3ICszNiw3 IEBAIEFDX0NPTkZJR19BVVhfRElSKGBjZCAkc3JjZGlyO3B3ZGAvLi4pCi0gQUNfQ09ORklHX0hF QURFUlMoY29uZmlnLmgpCi0gCi0gZG5sIHVwZGF0ZSB0aGUgdmFsdWUgb2YgUkxfUkVBRExJTkVf VkVSU0lPTiBpbiByZWFkbGluZS5oIHdoZW4gdGhpcyBjaGFuZ2VzCi0tTElCVkVSU0lPTj01LjEK LStMSUJWRVJTSU9OPTYuMgotIAotIEFDX0NBTk9OSUNBTF9IT1NUCi0gCi1AQCAtMTE1LDQ0ICsx MTMsNiBAQCBBQ19QUk9HX0NDCi0gZG5sIEFDX0FJWAotIEFDX01JTklYCi0gCi0tZG5sIEJFR0lO IGNoYW5nZXMgZm9yIENZR05VUyBjcm9zcy1idWlsZGluZyBmb3IgQ3lnd2luCi0tZG5sIE5PVEU6 IFNvbWUgb2YgdGhlc2UgY2hhbmdlcyBtYXkgbm8gbG9uZ2VyIGJlIG5lY2Vzc2FyeS4KLS0KLS1k bmwgbG9hZCB1cCB0aGUgY3Jvc3MtYnVpbGRpbmcgY2FjaGUgZmlsZSAtLSBhZGQgbW9yZSBjYXNl cyBhbmQgY2FjaGUKLS1kbmwgZmlsZXMgYXMgbmVjZXNzYXJ5Ci0taWYgdGVzdCAieCRjcm9zc19j b21waWxpbmciID0gInh5ZXMiOyB0aGVuCi0tICAgIGNhc2UgIiR7aG9zdH0iIGluCi0tICAgICot Y3lnd2luKikKLS0JY3Jvc3NfY2FjaGU9JHtzcmNkaXJ9L2Nyb3NzLWJ1aWxkL2N5Z3dpbi5jYWNo ZQotLQlMT0NBTF9DRkxBR1M9IiRMT0NBTF9DRkxBR1MgLUkke3NyY2Rpcn0vLi4vbGlidGVybWNh cCIKLS0JOzsKLS0gICAqLW1pbmd3MzIqKQkKLS0JY3Jvc3NfY2FjaGU9JHtzcmNkaXJ9L2Nyb3Nz LWJ1aWxkL21pbmd3LmNhY2hlCi0tICAgICAgICA7OwotLSAgICAqKSAgZWNobyAiY29uZmlndXJl OiBjcm9zcy1jb21waWxpbmcgZm9yIGEgbm9uLWN5Z3dpbiB0YXJnZXQgaXMgbm90IHN1cHBvcnRl ZCIgPiYyCi0tCTs7Ci0tICAgIGVzYWMKLS0KLS0gICAgaWYgdGVzdCAieCRjcm9zc19jYWNoZSIg IT0gIngiOyB0aGVuCi0tCWlmIHRlc3QgLXIgIiR7Y3Jvc3NfY2FjaGV9IjsgdGhlbgotLQkgICAg ZWNobyAibG9hZGluZyBjcm9zcy1idWlsZCBjYWNoZSBmaWxlICR7Y3Jvc3NfY2FjaGV9IgotLQkg ICAgLiAke2Nyb3NzX2NhY2hlfQotLQlmaQotLQl1bnNldCBjcm9zc19jYWNoZQotLSAgICBmaQot LWZpCi0tCi0taWYgdGVzdCAteiAiJENDX0ZPUl9CVUlMRCI7IHRoZW4KLS0gICAgaWYgdGVzdCAi eCRjcm9zc19jb21waWxpbmciID0gInhubyI7IHRoZW4KLS0gICAgICAgIENDX0ZPUl9CVUlMRD0n JChDQyknCi0tICAgIGVsc2UKLS0gICAgICAgIENDX0ZPUl9CVUlMRD1nY2MKLS0gICAgZmkKLS1m aQotLUFDX1NVQlNUKENDX0ZPUl9CVUlMRCkKLS0gCi0tZG5sIEVORCBjaGFuZ2VzIGZvciBDWUdO VVMgY3Jvc3MtYnVpbGRpbmcgZm9yIEN5Z3dpbgotLQotICMgSWYgd2UncmUgdXNpbmcgZ2NjIGFu ZCB0aGUgdXNlciBoYXNuJ3Qgc3BlY2lmaWVkIENGTEFHUywgYWRkIC1PIHRvIENGTEFHUy4KLSB0 ZXN0IC1uICIkR0NDIiAmJiB0ZXN0IC1uICIkYXV0b19jZmxhZ3MiICYmIENGTEFHUz0iJENGTEFH UyAtTyIKLSAKLUBAIC0xNzAsNiArMTMwLDcgQEAgQUNfU1VCU1QoTUFLRV9TSEVMTCkKLSBBQ19D X0NPTlNUCi0gQUNfQ19QUk9UT1RZUEVTCi0gQUNfQ19DSEFSX1VOU0lHTkVECi0rQUNfQ19WT0xB VElMRQotIAotIEFDX1RZUEVfU0lHTkFMCi0gCi1AQCAtMjAwLDYgKzE2MSw4IEBAIEFDX0NIRUNL X0hFQURFUlMoc3lzL3B0ZW0uaCwsLAotICNlbmRpZgotIF1dKQotIAotK0FDX1NZU19MQVJHRUZJ TEUKLSsKLSBCQVNIX1NZU19TSUdOQUxfVklOVEFHRQotIEJBU0hfU1lTX1JFSU5TVEFMTF9TSUdI QU5ETEVSUwotIAotQEAgLTIxMiw3ICsxNzUsOSBAQCBCQVNIX0NIRUNLX0dFVFBXX0ZVTkNTCi0g Ci0gQUNfSEVBREVSX1RJT0NHV0lOU1oKLSAKLStCQVNIX1RZUEVfU0lHX0FUT01JQ19UCi0gQkFT SF9UWVBFX1NJR0hBTkRMRVIKLSsKLSBCQVNIX0hBVkVfVElPQ1NUQVQKLSBCQVNIX0hBVkVfRklP TlJFQUQKLSBCQVNIX0NIRUNLX1NQRUVEX1QKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3Jl YWRsaW5lL2Rpc3BsYXkuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3Jp Zy9yZWFkbGluZS9kaXNwbGF5LmMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2Rpc3BsYXkuYwkyMDExLTA3LTAzIDEw OjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjQgQEAKLSAvKiBkaXNwbGF5LmMg LS0gcmVhZGxpbmUgcmVkaXNwbGF5IGZhY2lsaXR5LiAqLwotIAotLS8qIENvcHlyaWdodCAoQykg MTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAo QykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgot LSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0 b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBM aWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeSAgICAKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBv ZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KLSAKLS0g ICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQKLS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBp cyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBn ZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlv dSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwg Qm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJl YWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyov Ci0rCi0gI2RlZmluZSBSRUFETElORV9MSUJSQVJZCi0gCi0gI2lmIGRlZmluZWQgKEhBVkVfQ09O RklHX0gpCi1AQCAtNjMsMzAgKzYzLDU5IEBACi0gZXh0ZXJuIGNoYXIgKnN0cmNociAoKSwgKnN0 cnJjaHIgKCk7Ci0gI2VuZGlmIC8qICFzdHJjaHIgJiYgIV9fU1REQ19fICovCi0gCi0tI2lmIGRl ZmluZWQgKEhBQ0tfVEVSTUNBUF9NT1RJT04pCi0tZXh0ZXJuIGNoYXIgKl9ybF90ZXJtX2Zvcndh cmRfY2hhcjsKLS0jZW5kaWYKLS0KLSBzdGF0aWMgdm9pZCB1cGRhdGVfbGluZSBQQVJBTVMoKGNo YXIgKiwgY2hhciAqLCBpbnQsIGludCwgaW50LCBpbnQpKTsKLSBzdGF0aWMgdm9pZCBzcGFjZV90 b19lb2wgUEFSQU1TKChpbnQpKTsKLSBzdGF0aWMgdm9pZCBkZWxldGVfY2hhcnMgUEFSQU1TKChp bnQpKTsKLSBzdGF0aWMgdm9pZCBpbnNlcnRfc29tZV9jaGFycyBQQVJBTVMoKGNoYXIgKiwgaW50 LCBpbnQpKTsKLSBzdGF0aWMgdm9pZCBjciBQQVJBTVMoKHZvaWQpKTsKLSAKLSsvKiBTdGF0ZSBv ZiB2aXNpYmxlIGFuZCBpbnZpc2libGUgbGluZXMuICovCi0rc3RydWN0IGxpbmVfc3RhdGUKLSsg IHsKLSsgICAgY2hhciAqbGluZTsKLSsgICAgaW50ICpsYnJlYWtzOwotKyAgICBpbnQgbGJzaXpl OwotICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQotLXN0YXRpYyBpbnQgX3JsX2NvbF93 aWR0aCBQQVJBTVMoKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpKTsKLS1zdGF0aWMgaW50ICpfcmxf d3JhcHBlZF9saW5lOwotLSNlbHNlCi0tIyAgZGVmaW5lIF9ybF9jb2xfd2lkdGgobCwgcywgZSkJ KCgoZSkgPD0gKHMpKSA/IDAgOiAoZSkgLSAocykpCi0rICAgIGludCAqd3JhcHBlZF9saW5lOwot KyAgICBpbnQgd2JzaXplOwotICNlbmRpZgotKyAgfTsKLSsKLSsvKiBUaGUgbGluZSBkaXNwbGF5 IGJ1ZmZlcnMuICBPbmUgaXMgdGhlIGxpbmUgY3VycmVudGx5IGRpc3BsYXllZCBvbgotKyAgIHRo ZSBzY3JlZW4uICBUaGUgb3RoZXIgaXMgdGhlIGxpbmUgYWJvdXQgdG8gYmUgZGlzcGxheWVkLiAq LwotK3N0YXRpYyBzdHJ1Y3QgbGluZV9zdGF0ZSBsaW5lX3N0YXRlX2FycmF5WzJdOwotK3N0YXRp YyBzdHJ1Y3QgbGluZV9zdGF0ZSAqbGluZV9zdGF0ZV92aXNpYmxlID0gJmxpbmVfc3RhdGVfYXJy YXlbMF07Ci0rc3RhdGljIHN0cnVjdCBsaW5lX3N0YXRlICpsaW5lX3N0YXRlX2ludmlzaWJsZSA9 ICZsaW5lX3N0YXRlX2FycmF5WzFdOwotK3N0YXRpYyBpbnQgbGluZV9zdHJ1Y3R1cmVzX2luaXRp YWxpemVkID0gMDsKLSAKLS1zdGF0aWMgaW50ICppbnZfbGJyZWFrcywgKnZpc19sYnJlYWtzOwot LXN0YXRpYyBpbnQgaW52X2xic2l6ZSwgdmlzX2xic2l6ZTsKLSsvKiBCYWNrd2FyZHMtY29tcGF0 aWJsZSBuYW1lcy4gKi8KLSsjZGVmaW5lIGludl9sYnJlYWtzCShsaW5lX3N0YXRlX2ludmlzaWJs ZS0+bGJyZWFrcykKLSsjZGVmaW5lIGludl9sYnNpemUJKGxpbmVfc3RhdGVfaW52aXNpYmxlLT5s YnNpemUpCi0rI2RlZmluZSB2aXNfbGJyZWFrcwkobGluZV9zdGF0ZV92aXNpYmxlLT5sYnJlYWtz KQotKyNkZWZpbmUgdmlzX2xic2l6ZQkobGluZV9zdGF0ZV92aXNpYmxlLT5sYnNpemUpCi0rCi0r I2RlZmluZSB2aXNpYmxlX2xpbmUJKGxpbmVfc3RhdGVfdmlzaWJsZS0+bGluZSkKLSsjZGVmaW5l IGludmlzaWJsZV9saW5lCShsaW5lX3N0YXRlX2ludmlzaWJsZS0+bGluZSkKLSsKLSsjaWYgZGVm aW5lZCAoSEFORExFX01VTFRJQllURSkKLStzdGF0aWMgaW50IF9ybF9jb2xfd2lkdGggUEFSQU1T KChjb25zdCBjaGFyICosIGludCwgaW50LCBpbnQpKTsKLSsjZWxzZQotKyMgIGRlZmluZSBfcmxf Y29sX3dpZHRoKGwsIHMsIGUsIGYpCSgoKGUpIDw9IChzKSkgPyAwIDogKGUpIC0gKHMpKQotKyNl bmRpZgotIAotIC8qIEhldXJpc3RpYyB1c2VkIHRvIGRlY2lkZSB3aGV0aGVyIGl0IGlzIGZhc3Rl ciB0byBtb3ZlIGZyb20gQ1VSIHRvIE5FVwotLSAgIGJ5IGJhY2tpbmcgdXAgb3Igb3V0cHV0dGlu ZyBhIGNhcnJpYWdlIHJldHVybiBhbmQgbW92aW5nIGZvcndhcmQuICovCi0rICAgYnkgYmFja2lu ZyB1cCBvciBvdXRwdXR0aW5nIGEgY2FycmlhZ2UgcmV0dXJuIGFuZCBtb3ZpbmcgZm9yd2FyZC4g IENVUgotKyAgIGFuZCBORVcgYXJlIGVpdGhlciBib3RoIGJ1ZmZlciBwb3NpdGlvbnMgb3IgYWJz b2x1dGUgc2NyZWVuIHBvc2l0aW9ucy4gKi8KLSAjZGVmaW5lIENSX0ZBU1RFUihuZXcsIGN1cikg KCgobmV3KSArIDEpIDwgKChjdXIpIC0gKG5ldykpKQotIAotKy8qIF9ybF9sYXN0X2NfcG9zIGlz IGFuIGFic29sdXRlIGN1cnNvciBwb3NpdGlvbiBpbiBtdWx0aWJ5dGUgbG9jYWxlcyBhbmQgYQot KyAgIGJ1ZmZlciBpbmRleCBpbiBvdGhlcnMuICBUaGlzIG1hY3JvIGlzIHVzZWQgd2hlbiBkZWNp ZGluZyB3aGV0aGVyIHRoZQotKyAgIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIGlzIGluIHRoZSBt aWRkbGUgb2YgYSBwcm9tcHQgc3RyaW5nIGNvbnRhaW5pbmcKLSsgICBpbnZpc2libGUgY2hhcmFj dGVycy4gIFhYWCAtIG1pZ2h0IG5lZWQgdG8gdGFrZSBgbW9kbWFyaycgaW50byBhY2NvdW50LiAq LwotKyNkZWZpbmUgUFJPTVBUX0VORElOR19JTkRFWCBcCi0rICAoKE1CX0NVUl9NQVggPiAxICYm IHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkgPyBwcm9tcHRfcGh5c2ljYWxfY2hhcnMgOiBwcm9tcHRf bGFzdF9pbnZpc2libGUrMSkKLSsgIAotKwotIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSAvKgkJCQkJCQkJICAg ICovCi0gLyoJCQlEaXNwbGF5IHN0dWZmCQkJCSAgICAqLwotQEAgLTEzOSw2ICsxNjgsOCBAQCBp bnQgX3JsX2xhc3RfY19wb3MgPSAwOwotIGludCBfcmxfbGFzdF92X3BvcyA9IDA7Ci0gCi0gc3Rh dGljIGludCBjcG9zX2FkanVzdGVkOwotK3N0YXRpYyBpbnQgY3Bvc19idWZmZXJfcG9zaXRpb247 Ci0rc3RhdGljIGludCBwcm9tcHRfbXVsdGlieXRlX2NoYXJzOwotIAotIC8qIE51bWJlciBvZiBs aW5lcyBjdXJyZW50bHkgb24gc2NyZWVuIG1pbnVzIDEuICovCi0gaW50IF9ybF92aXNfYm90bGlu ID0gMDsKLUBAIC0xNDgsMTEgKzE3OSw2IEBAIGludCBfcmxfdmlzX2JvdGxpbiA9IDA7Ci0gICAg ZG9pbmcgaG9yaXpvbnRhbCBzY3JvbGxpbmcuICBJdCBzaGlmdHMgaW4gdGhpcmRzIG9mIGEgc2Ny ZWVud2lkdGguICovCi0gc3RhdGljIGludCBsYXN0X2xtYXJnaW47Ci0gCi0tLyogVGhlIGxpbmUg ZGlzcGxheSBidWZmZXJzLiAgT25lIGlzIHRoZSBsaW5lIGN1cnJlbnRseSBkaXNwbGF5ZWQgb24K LS0gICB0aGUgc2NyZWVuLiAgVGhlIG90aGVyIGlzIHRoZSBsaW5lIGFib3V0IHRvIGJlIGRpc3Bs YXllZC4gKi8KLS1zdGF0aWMgY2hhciAqdmlzaWJsZV9saW5lID0gKGNoYXIgKilOVUxMOwotLXN0 YXRpYyBjaGFyICppbnZpc2libGVfbGluZSA9IChjaGFyICopTlVMTDsKLS0KLSAvKiBBIGJ1ZmZl ciBmb3IgYG1vZGVsaW5lJyBtZXNzYWdlcy4gKi8KLSBzdGF0aWMgY2hhciBtc2dfYnVmWzEyOF07 Ci0gCi1AQCAtMTY2LDYgKzE5Miw3IEBAIHN0YXRpYyBpbnQgbGluZV9zaXplID0gMTAyNDsKLSAg ICBpbmNsdWRlIGludmlzaWJsZSBjaGFyYWN0ZXJzLiAqLwotIAotIHN0YXRpYyBjaGFyICpsb2Nh bF9wcm9tcHQsICpsb2NhbF9wcm9tcHRfcHJlZml4OwotK3N0YXRpYyBpbnQgbG9jYWxfcHJvbXB0 X2xlbjsKLSBzdGF0aWMgaW50IHByb21wdF92aXNpYmxlX2xlbmd0aCwgcHJvbXB0X3ByZWZpeF9s ZW5ndGg7Ci0gCi0gLyogVGhlIG51bWJlciBvZiBpbnZpc2libGUgY2hhcmFjdGVycyBpbiB0aGUg bGluZSBjdXJyZW50bHkgYmVpbmcKLUBAIC0xOTIsNiArMjE5LDEwIEBAIHN0YXRpYyBpbnQgcHJv bXB0X2xhc3Rfc2NyZWVuX2xpbmU7Ci0gCi0gc3RhdGljIGludCBwcm9tcHRfcGh5c2ljYWxfY2hh cnM7Ci0gCi0rLyogc2V0IHRvIGEgbm9uLXplcm8gdmFsdWUgYnkgcmxfcmVkaXNwbGF5IGlmIHdl IGFyZSBtYXJraW5nIG1vZGlmaWVkIGhpc3RvcnkKLSsgICBsaW5lcyBhbmQgdGhlIGN1cnJlbnQg bGluZSBpcyBzbyBtYXJrZWQuICovCi0rc3RhdGljIGludCBtb2RtYXJrOwotKwotIC8qIFZhcmlh YmxlcyB0byBzYXZlIGFuZCByZXN0b3JlIHByb21wdCBhbmQgZGlzcGxheSBpbmZvcm1hdGlvbi4g Ki8KLSAKLSAvKiBUaGVzZSBhcmUgZ2V0dGluZyBudW1lcm91cyBlbm91Z2ggdGhhdCBpdCdzIHRp bWUgdG8gY3JlYXRlIGEgc3RydWN0LiAqLwotQEAgLTIwMSw2ICsyMzIsNyBAQCBzdGF0aWMgY2hh ciAqc2F2ZWRfbG9jYWxfcHJlZml4OwotIHN0YXRpYyBpbnQgc2F2ZWRfbGFzdF9pbnZpc2libGU7 Ci0gc3RhdGljIGludCBzYXZlZF92aXNpYmxlX2xlbmd0aDsKLSBzdGF0aWMgaW50IHNhdmVkX3By ZWZpeF9sZW5ndGg7Ci0rc3RhdGljIGludCBzYXZlZF9sb2NhbF9sZW5ndGg7Ci0gc3RhdGljIGlu dCBzYXZlZF9pbnZpc19jaGFyc19maXJzdF9saW5lOwotIHN0YXRpYyBpbnQgc2F2ZWRfcGh5c2lj YWxfY2hhcnM7Ci0gCi1AQCAtMjI0LDcgKzI1Niw3IEBAIGV4cGFuZF9wcm9tcHQgKHBtdCwgbHAs IGxpcCwgbmlmbHAsIHZscCkKLSAgICAgIGNoYXIgKnBtdDsKLSAgICAgIGludCAqbHAsICpsaXAs ICpuaWZscCwgKnZscDsKLSB7Ci0tICBjaGFyICpyLCAqcmV0LCAqcDsKLSsgIGNoYXIgKnIsICpy ZXQsICpwLCAqaWdzdGFydDsKLSAgIGludCBsLCBybCwgbGFzdCwgaWdub3JpbmcsIG5pbnZpcywg aW52ZmwsIGludmZsc2V0LCBpbmQsIHBpbmQsIHBoeXNjaGFyczsKLSAKLSAgIC8qIFNob3J0LWNp cmN1aXQgaWYgd2UgY2FuLiAqLwotQEAgLTI0OCwxOSArMjgwLDIxIEBAIGV4cGFuZF9wcm9tcHQg KHBtdCwgbHAsIGxpcCwgbmlmbHAsIHZscCkKLSAgIGludmZsID0gMDsJLyogaW52aXNpYmxlIGNo YXJzIGluIGZpcnN0IGxpbmUgb2YgcHJvbXB0ICovCi0gICBpbnZmbHNldCA9IDA7CS8qIHdlIG9u bHkgd2FudCB0byBzZXQgaW52Zmwgb25jZSAqLwotIAotKyAgaWdzdGFydCA9IDA7Ci0gICBmb3Ig KHJsID0gaWdub3JpbmcgPSBsYXN0ID0gbmludmlzID0gcGh5c2NoYXJzID0gMCwgcCA9IHBtdDsg cCAmJiAqcDsgcCsrKQotICAgICB7Ci0gICAgICAgLyogVGhpcyBjb2RlIHN0cmlwcyB0aGUgaW52 aXNpYmxlIGNoYXJhY3RlciBzdHJpbmcgbWFya2VycwotIAkgUkxfUFJPTVBUX1NUQVJUX0lHTk9S RSBhbmQgUkxfUFJPTVBUX0VORF9JR05PUkUgKi8KLS0gICAgICBpZiAoKnAgPT0gUkxfUFJPTVBU X1NUQVJUX0lHTk9SRSkKLSsgICAgICBpZiAoaWdub3JpbmcgPT0gMCAmJiAqcCA9PSBSTF9QUk9N UFRfU1RBUlRfSUdOT1JFKQkJLyogWFhYIC0gY2hlY2sgaWdub3Jpbmc/ICovCi0gCXsKLS0JICBp Z25vcmluZysrOwotKwkgIGlnbm9yaW5nID0gMTsKLSsJICBpZ3N0YXJ0ID0gcDsKLSAJICBjb250 aW51ZTsKLSAJfQotICAgICAgIGVsc2UgaWYgKGlnbm9yaW5nICYmICpwID09IFJMX1BST01QVF9F TkRfSUdOT1JFKQotIAl7Ci0gCSAgaWdub3JpbmcgPSAwOwotLQkgIGlmIChwWy0xXSAhPSBSTF9Q Uk9NUFRfU1RBUlRfSUdOT1JFKQotKwkgIGlmIChwICE9IChpZ3N0YXJ0ICsgMSkpCi0gCSAgICBs YXN0ID0gciAtIHJldCAtIDE7Ci0gCSAgY29udGludWU7Ci0gCX0KLUBAIC0yNzYsOCArMzEwLDEz IEBAIGV4cGFuZF9wcm9tcHQgKHBtdCwgbHAsIGxpcCwgbmlmbHAsIHZscCkKLSAJICAgICAgICAq cisrID0gKnArKzsKLSAJICAgICAgaWYgKCFpZ25vcmluZykKLSAJCXsKLSsJCSAgLyogcmwgZW5k cyB1cCBiZWluZyBhc3NpZ25lZCB0byBwcm9tcHRfdmlzaWJsZV9sZW5ndGgsCi0rCQkgICAgIHdo aWNoIGlzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgYnVmZmVyIHRoYXQKLSsJCSAg ICAgY29udHJpYnV0ZSB0byBjaGFyYWN0ZXJzIG9uIHRoZSBzY3JlZW4sIHdoaWNoIG1pZ2h0Ci0r CQkgICAgIG5vdCBiZSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIHBoeXNpY2FsIGNoYXJhY3Rl cnMKLSsJCSAgICAgb24gdGhlIHNjcmVlbiBpbiB0aGUgcHJlc2VuY2Ugb2YgbXVsdGlieXRlIGNo YXJhY3RlcnMgKi8KLSAJCSAgcmwgKz0gaW5kIC0gcGluZDsKLS0JCSAgcGh5c2NoYXJzICs9IF9y bF9jb2xfd2lkdGggKHBtdCwgcGluZCwgaW5kKTsKLSsJCSAgcGh5c2NoYXJzICs9IF9ybF9jb2xf d2lkdGggKHBtdCwgcGluZCwgaW5kLCAwKTsKLSAJCX0KLSAJICAgICAgZWxzZQotIAkJbmludmlz ICs9IGluZCAtIHBpbmQ7Ci1AQCAtMzYwLDYgKzM5OSw3IEBAIHJsX2V4cGFuZF9wcm9tcHQgKHBy b21wdCkKLSAgIEZSRUUgKGxvY2FsX3Byb21wdF9wcmVmaXgpOwotIAotICAgbG9jYWxfcHJvbXB0 ID0gbG9jYWxfcHJvbXB0X3ByZWZpeCA9IChjaGFyICopMDsKLSsgIGxvY2FsX3Byb21wdF9sZW4g PSAwOwotICAgcHJvbXB0X2xhc3RfaW52aXNpYmxlID0gcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0 X2xpbmUgPSAwOwotICAgcHJvbXB0X3Zpc2libGVfbGVuZ3RoID0gcHJvbXB0X3BoeXNpY2FsX2No YXJzID0gMDsKLSAKLUBAIC0zNzUsNiArNDE1LDcgQEAgcmxfZXhwYW5kX3Byb21wdCAocHJvbXB0 KQotIAkJCQkJICAgICZwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSwKLSAJCQkJCSAgICAm cHJvbXB0X3BoeXNpY2FsX2NoYXJzKTsKLSAgICAgICBsb2NhbF9wcm9tcHRfcHJlZml4ID0gKGNo YXIgKikwOwotKyAgICAgIGxvY2FsX3Byb21wdF9sZW4gPSBsb2NhbF9wcm9tcHQgPyBzdHJsZW4g KGxvY2FsX3Byb21wdCkgOiAwOwotICAgICAgIHJldHVybiAocHJvbXB0X3Zpc2libGVfbGVuZ3Ro KTsKLSAgICAgfQotICAgZWxzZQotQEAgLTM4MywxNiArNDI0LDE3IEBAIHJsX2V4cGFuZF9wcm9t cHQgKHByb21wdCkKLSAgICAgICB0ID0gKytwOwotICAgICAgIGxvY2FsX3Byb21wdCA9IGV4cGFu ZF9wcm9tcHQgKHAsICZwcm9tcHRfdmlzaWJsZV9sZW5ndGgsCi0gCQkJCSAgICAgICAmcHJvbXB0 X2xhc3RfaW52aXNpYmxlLAotLQkJCQkgICAgICAgKGludCAqKU5VTEwsCi0rCQkJCSAgICAgICAm cHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUsCi0gCQkJCSAgICAgICAmcHJvbXB0X3BoeXNp Y2FsX2NoYXJzKTsKLSAgICAgICBjID0gKnQ7ICp0ID0gJ1wwJzsKLSAgICAgICAvKiBUaGUgcG9y dGlvbiBvZiB0aGUgcHJvbXB0IHN0cmluZyB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZQotIAkgZmlu YWwgbmV3bGluZSBpcyBub3cgbnVsbC10ZXJtaW5hdGVkLiAqLwotICAgICAgIGxvY2FsX3Byb21w dF9wcmVmaXggPSBleHBhbmRfcHJvbXB0IChwcm9tcHQsICZwcm9tcHRfcHJlZml4X2xlbmd0aCwK LSAJCQkJCQkgICAoaW50ICopTlVMTCwKLS0JCQkJCQkgICAmcHJvbXB0X2ludmlzX2NoYXJzX2Zp cnN0X2xpbmUsCi0rCQkJCQkJICAgKGludCAqKU5VTEwsCi0gCQkJCQkJICAgKGludCAqKU5VTEwp OwotICAgICAgICp0ID0gYzsKLSsgICAgICBsb2NhbF9wcm9tcHRfbGVuID0gbG9jYWxfcHJvbXB0 ID8gc3RybGVuIChsb2NhbF9wcm9tcHQpIDogMDsKLSAgICAgICByZXR1cm4gKHByb21wdF9wcmVm aXhfbGVuZ3RoKTsKLSAgICAgfQotIH0KLUBAIC00MzQsMTMgKzQ3NiwyMSBAQCBpbml0X2xpbmVf c3RydWN0dXJlcyAobWluc2l6ZSkKLSAgICAgewotICAgICAgIC8qIHNob3VsZCBiZSBlbm91Z2gu ICovCi0gICAgICAgaW52X2xic2l6ZSA9IHZpc19sYnNpemUgPSAyNTY7Ci0tICAgICAgaW52X2xi cmVha3MgPSAoaW50ICopeG1hbGxvYyAoaW52X2xic2l6ZSAqIHNpemVvZiAoaW50KSk7Ci0tICAg ICAgdmlzX2xicmVha3MgPSAoaW50ICopeG1hbGxvYyAodmlzX2xic2l6ZSAqIHNpemVvZiAoaW50 KSk7Ci0rCi0gI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCi0tICAgICAgX3JsX3dyYXBw ZWRfbGluZSA9IChpbnQgKil4bWFsbG9jICh2aXNfbGJzaXplICogc2l6ZW9mIChpbnQpKTsKLSsg ICAgICBsaW5lX3N0YXRlX3Zpc2libGUtPndic2l6ZSA9IHZpc19sYnNpemU7Ci0rICAgICAgbGlu ZV9zdGF0ZV92aXNpYmxlLT53cmFwcGVkX2xpbmUgPSAoaW50ICopeG1hbGxvYyAobGluZV9zdGF0 ZV92aXNpYmxlLT53YnNpemUgKiBzaXplb2YgKGludCkpOwotKwotKyAgICAgIGxpbmVfc3RhdGVf aW52aXNpYmxlLT53YnNpemUgPSBpbnZfbGJzaXplOwotKyAgICAgIGxpbmVfc3RhdGVfaW52aXNp YmxlLT53cmFwcGVkX2xpbmUgPSAoaW50ICopeG1hbGxvYyAobGluZV9zdGF0ZV9pbnZpc2libGUt Pndic2l6ZSAqIHNpemVvZiAoaW50KSk7Ci0gI2VuZGlmCi0rCi0rICAgICAgaW52X2xicmVha3Mg PSAoaW50ICopeG1hbGxvYyAoaW52X2xic2l6ZSAqIHNpemVvZiAoaW50KSk7Ci0rICAgICAgdmlz X2xicmVha3MgPSAoaW50ICopeG1hbGxvYyAodmlzX2xic2l6ZSAqIHNpemVvZiAoaW50KSk7Ci0g ICAgICAgaW52X2xicmVha3NbMF0gPSB2aXNfbGJyZWFrc1swXSA9IDA7Ci0gICAgIH0KLSsKLSsg IGxpbmVfc3RydWN0dXJlc19pbml0aWFsaXplZCA9IDE7Ci0gfQotICAgCi0gLyogQmFzaWMgcmVk aXNwbGF5IGFsZ29yaXRobS4gKi8KLUBAIC00NDksOCArNDk5LDggQEAgcmxfcmVkaXNwbGF5ICgp Ci0gewotICAgcmVnaXN0ZXIgaW50IGluLCBvdXQsIGMsIGxpbmVudW0sIGN1cnNvcl9saW5lbnVt OwotICAgcmVnaXN0ZXIgY2hhciAqbGluZTsKLS0gIGludCBjX3BvcywgaW52X2JvdGxpbiwgbGJf Ym90bGluLCBsYl9saW5lbnVtLCBvX2Nwb3M7Ci0tICBpbnQgbmV3bGluZXMsIGxwb3MsIHRlbXAs IG1vZG1hcmssIG4wLCBudW07Ci0rICBpbnQgaW52X2JvdGxpbiwgbGJfYm90bGluLCBsYl9saW5l bnVtLCBvX2Nwb3M7Ci0rICBpbnQgbmV3bGluZXMsIGxwb3MsIHRlbXAsIG4wLCBudW0sIHByb21w dF9saW5lc19lc3RpbWF0ZTsKLSAgIGNoYXIgKnByb21wdF90aGlzX2xpbmU7Ci0gI2lmIGRlZmlu ZWQgKEhBTkRMRV9NVUxUSUJZVEUpCi0gICB3Y2hhcl90IHdjOwotQEAgLTQ2MCwyNCArNTEwLDI3 IEBAIHJsX3JlZGlzcGxheSAoKQotICAgaW50IF9ybF93cmFwcGVkX211bHRpY29sdW1uID0gMDsK LSAjZW5kaWYKLSAKLS0gIGlmICghcmVhZGxpbmVfZWNob2luZ19wKQotKyAgaWYgKF9ybF9lY2hv aW5nX3AgPT0gMCkKLSAgICAgcmV0dXJuOwotIAotLSAgLyogU2lnbmFscyBhcmUgYmxvY2tlZCB0 aHJvdWdoIHRoaXMgZnVuY3Rpb24gYXMgdGhlIGdsb2JhbCBkYXRhIHN0cnVjdHVyZXMKLS0gICAg IGNvdWxkIGdldCBjb3JydXB0ZWQgdXBvbiBtb2RpZmljYXRpb25zIGZyb20gYW4gaW52b2tlZCBz aWduYWwgaGFuZGxlci4gKi8KLS0gIF9ybF9ibG9ja19zaWdpbnQgKCk7Ci0rICAvKiBCbG9jayBr ZXlib2FyZCBpbnRlcnJ1cHRzIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBtYW5pcHVsYXRlcyBnbG9i YWwKLSsgICAgIGRhdGEgc3RydWN0dXJlcy4gKi8KLSsgIF9ybF9ibG9ja19zaWdpbnQgKCk7ICAK LSsgIFJMX1NFVFNUQVRFIChSTF9TVEFURV9SRURJU1BMQVlJTkcpOwotIAotICAgaWYgKCFybF9k aXNwbGF5X3Byb21wdCkKLSAgICAgcmxfZGlzcGxheV9wcm9tcHQgPSAiIjsKLSAKLS0gIGlmIChp bnZpc2libGVfbGluZSA9PSAwIHx8IHZpc19sYnJlYWtzID09IDApCi0rICBpZiAobGluZV9zdHJ1 Y3R1cmVzX2luaXRpYWxpemVkID09IDApCi0gICAgIHsKLSAgICAgICBpbml0X2xpbmVfc3RydWN0 dXJlcyAoMCk7Ci0gICAgICAgcmxfb25fbmV3X2xpbmUgKCk7Ci0gICAgIH0KLSAKLSAgIC8qIERy YXcgdGhlIGxpbmUgaW50byB0aGUgYnVmZmVyLiAqLwotLSAgY19wb3MgPSAtMTsKLSsgIGNwb3Nf YnVmZmVyX3Bvc2l0aW9uID0gLTE7Ci0rCi0rICBwcm9tcHRfbXVsdGlieXRlX2NoYXJzID0gcHJv bXB0X3Zpc2libGVfbGVuZ3RoIC0gcHJvbXB0X3BoeXNpY2FsX2NoYXJzOwotIAotICAgbGluZSA9 IGludmlzaWJsZV9saW5lOwotICAgb3V0ID0gaW52X2JvdGxpbiA9IDA7Ci1AQCAtNTA0LDI0ICs1 NTcsMjMgQEAgcmxfcmVkaXNwbGF5ICgpCi0gICAgICBudW1iZXIgb2Ygbm9uLXZpc2libGUgY2hh cmFjdGVycyBpbiB0aGUgcHJvbXB0IHN0cmluZy4gKi8KLSAgIGlmIChybF9kaXNwbGF5X3Byb21w dCA9PSBybF9wcm9tcHQgfHwgbG9jYWxfcHJvbXB0KQotICAgICB7Ci0tICAgICAgaW50IGxvY2Fs X2xlbiA9IGxvY2FsX3Byb21wdCA/IHN0cmxlbiAobG9jYWxfcHJvbXB0KSA6IDA7Ci0gICAgICAg aWYgKGxvY2FsX3Byb21wdF9wcmVmaXggJiYgZm9yY2VkX2Rpc3BsYXkpCi0gCV9ybF9vdXRwdXRf c29tZV9jaGFycyAobG9jYWxfcHJvbXB0X3ByZWZpeCwgc3RybGVuIChsb2NhbF9wcm9tcHRfcHJl Zml4KSk7Ci0gCi0tICAgICAgaWYgKGxvY2FsX2xlbiA+IDApCi0rICAgICAgaWYgKGxvY2FsX3By b21wdF9sZW4gPiAwKQotIAl7Ci0tCSAgdGVtcCA9IGxvY2FsX2xlbiArIG91dCArIDI7Ci0rCSAg dGVtcCA9IGxvY2FsX3Byb21wdF9sZW4gKyBvdXQgKyAyOwotIAkgIGlmICh0ZW1wID49IGxpbmVf c2l6ZSkKLSAJICAgIHsKLSAJICAgICAgbGluZV9zaXplID0gKHRlbXAgKyAxMDI0KSAtICh0ZW1w ICUgMTAyNCk7Ci0gCSAgICAgIHZpc2libGVfbGluZSA9IChjaGFyICopeHJlYWxsb2MgKHZpc2li bGVfbGluZSwgbGluZV9zaXplKTsKLSAJICAgICAgbGluZSA9IGludmlzaWJsZV9saW5lID0gKGNo YXIgKil4cmVhbGxvYyAoaW52aXNpYmxlX2xpbmUsIGxpbmVfc2l6ZSk7Ci0gCSAgICB9Ci0tCSAg c3RybmNweSAobGluZSArIG91dCwgbG9jYWxfcHJvbXB0LCBsb2NhbF9sZW4pOwotLQkgIG91dCAr PSBsb2NhbF9sZW47Ci0rCSAgc3RybmNweSAobGluZSArIG91dCwgbG9jYWxfcHJvbXB0LCBsb2Nh bF9wcm9tcHRfbGVuKTsKLSsJICBvdXQgKz0gbG9jYWxfcHJvbXB0X2xlbjsKLSAJfQotICAgICAg IGxpbmVbb3V0XSA9ICdcMCc7Ci0tICAgICAgd3JhcF9vZmZzZXQgPSBsb2NhbF9sZW4gLSBwcm9t cHRfdmlzaWJsZV9sZW5ndGg7Ci0rICAgICAgd3JhcF9vZmZzZXQgPSBsb2NhbF9wcm9tcHRfbGVu IC0gcHJvbXB0X3Zpc2libGVfbGVuZ3RoOwotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLUBAIC01 NzYsMTAgKzYyOCwxNCBAQCBybF9yZWRpc3BsYXkgKCkKLSAJICAgICAgeyBcCi0gCQlpbnZfbGJz aXplICo9IDI7IFwKLSAJCWludl9sYnJlYWtzID0gKGludCAqKXhyZWFsbG9jIChpbnZfbGJyZWFr cywgaW52X2xic2l6ZSAqIHNpemVvZiAoaW50KSk7IFwKLS0JCV9ybF93cmFwcGVkX2xpbmUgPSAo aW50ICopeHJlYWxsb2MgKF9ybF93cmFwcGVkX2xpbmUsIGludl9sYnNpemUgKiBzaXplb2YgKGlu dCkpOyBcCi0gCSAgICAgIH0gXAotIAkgICAgaW52X2xicmVha3NbKytuZXdsaW5lc10gPSBvdXQ7 IFwKLS0JICAgIF9ybF93cmFwcGVkX2xpbmVbbmV3bGluZXNdID0gX3JsX3dyYXBwZWRfbXVsdGlj b2x1bW47IFwKLSsJICAgIGlmIChuZXdsaW5lcyA+PSAobGluZV9zdGF0ZV9pbnZpc2libGUtPndi c2l6ZSAtIDEpKSBcCi0rCSAgICAgIHsgXAotKwkJbGluZV9zdGF0ZV9pbnZpc2libGUtPndic2l6 ZSAqPSAyOyBcCi0rCQlsaW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lID0gKGludCAq KXhyZWFsbG9jIChsaW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lLCBsaW5lX3N0YXRl X2ludmlzaWJsZS0+d2JzaXplICogc2l6ZW9mKGludCkpOyBcCi0rCSAgICAgIH0gXAotKwkgICAg bGluZV9zdGF0ZV9pbnZpc2libGUtPndyYXBwZWRfbGluZVtuZXdsaW5lc10gPSBfcmxfd3JhcHBl ZF9tdWx0aWNvbHVtbjsgXAotIAkgICAgbHBvcyA9IDA7IFwKLSAJICB9IFwKLSAgICAgICB9IHdo aWxlICgwKQotQEAgLTYwMiwyNiArNjU4LDI2IEBAIHJsX3JlZGlzcGxheSAoKQotIAotICAgLyog aW52X2xicmVha3NbaV0gaXMgd2hlcmUgbGluZSBpIHN0YXJ0cyBpbiB0aGUgYnVmZmVyLiAqLwot ICAgaW52X2xicmVha3NbbmV3bGluZXMgPSAwXSA9IDA7Ci0tI2lmIDAKLS0gIGxwb3MgPSBvdXQg LSB3cmFwX29mZnNldDsKLS0jZWxzZQotICAgbHBvcyA9IHByb21wdF9waHlzaWNhbF9jaGFycyAr IG1vZG1hcms7Ci0tI2VuZGlmCi0gCi0gI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCi0t ICBtZW1zZXQgKF9ybF93cmFwcGVkX2xpbmUsIDAsIHZpc19sYnNpemUpOwotKyAgbWVtc2V0IChs aW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lLCAwLCBsaW5lX3N0YXRlX2ludmlzaWJs ZS0+d2JzaXplICogc2l6ZW9mIChpbnQpKTsKLSAgIG51bSA9IDA7Ci0gI2VuZGlmCi0gCi0gICAv KiBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSBpcyB0aGUgbnVtYmVyIG9mIGludmlzaWJs ZSBjaGFyYWN0ZXJzIGluCi0gICAgICB0aGUgZmlyc3QgcGh5c2ljYWwgbGluZSBvZiB0aGUgcHJv bXB0LgotICAgICAgd3JhcF9vZmZzZXQgLSBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSBp cyB0aGUgbnVtYmVyIG9mIGludmlzCi0tICAgICBjaGFycyBvbiB0aGUgc2Vjb25kIGxpbmUuICov Ci0rICAgICBjaGFycyBvbiB0aGUgc2Vjb25kIChvciwgbW9yZSBnZW5lcmFsbHksIGxhc3QpIGxp bmUuICovCi0rCi0rICAvKiBUaGlzIGlzIHplcm8tYmFzZWQsIHVzZWQgdG8gc2V0IHRoZSBuZXds aW5lcyAqLwotKyAgcHJvbXB0X2xpbmVzX2VzdGltYXRlID0gbHBvcyAvIF9ybF9zY3JlZW53aWR0 aDsKLSAKLSAgIC8qIHdoYXQgaWYgbHBvcyBpcyBhbHJlYWR5ID49IF9ybF9zY3JlZW53aWR0aCBi ZWZvcmUgd2Ugc3RhcnQgZHJhd2luZyB0aGUKLSAgICAgIGNvbnRlbnRzIG9mIHRoZSBjb21tYW5k IGxpbmU/ICovCi0gICB3aGlsZSAobHBvcyA+PSBfcmxfc2NyZWVud2lkdGgpCi0gICAgIHsKLSsg ICAgICBpbnQgejsKLSAgICAgICAvKiBmaXggZnJvbSBEYXJpbiBKb2huc29uIDxkYXJpbkBhY3Vz b24uY29tPiBmb3IgcHJvbXB0IHN0cmluZyB3aXRoCi0gICAgICAgICAgaW52aXNpYmxlIGNoYXJh Y3RlcnMgdGhhdCBpcyBsb25nZXIgdGhhbiB0aGUgc2NyZWVuIHdpZHRoLiAgVGhlCi0gICAgICAg ICAgcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUgdmFyaWFibGUgY291bGQgYmUgbWFkZSBp bnRvIGFuIGFycmF5Ci1AQCAtNjMwLDM3ICs2ODYsNDggQEAgcmxfcmVkaXNwbGF5ICgpCi0gICAg ICAgICAgcHJvbXB0cyB0aGF0IGV4Y2VlZCB0d28gcGh5c2ljYWwgbGluZXM/Ci0gICAgICAgICAg QWRkaXRpb25hbCBsb2dpYyBmaXggZnJvbSBFZHdhcmQgQ2F0bXVyIDxlZEBjYXRtdXIuY28udWs+ ICovCi0gI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCi0tICAgICAgbjAgPSBudW07Ci0t ICAgICAgdGVtcCA9IGxvY2FsX3Byb21wdCA/IHN0cmxlbiAobG9jYWxfcHJvbXB0KSA6IDA7Ci0t ICAgICAgd2hpbGUgKG51bSA8IHRlbXApCi0rICAgICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJs X2J5dGVfb3JpZW50ZWQgPT0gMCAmJiBwcm9tcHRfbXVsdGlieXRlX2NoYXJzID4gMCkKLSAJewot LQkgIGlmIChfcmxfY29sX3dpZHRoICAobG9jYWxfcHJvbXB0LCBuMCwgbnVtKSA+IF9ybF9zY3Jl ZW53aWR0aCkKLSsJICBuMCA9IG51bTsKLSsgICAgICAgICAgdGVtcCA9IGxvY2FsX3Byb21wdF9s ZW47Ci0rICAgICAgICAgIHdoaWxlIChudW0gPCB0ZW1wKQotIAkgICAgewotLQkgICAgICBudW0g PSBfcmxfZmluZF9wcmV2X21iY2hhciAobG9jYWxfcHJvbXB0LCBudW0sIE1CX0ZJTkRfQU5ZKTsK LS0JICAgICAgYnJlYWs7Ci0rCSAgICAgIHogPSBfcmxfY29sX3dpZHRoICAobG9jYWxfcHJvbXB0 LCBuMCwgbnVtLCAxKTsKLSsJICAgICAgaWYgKHogPiBfcmxfc2NyZWVud2lkdGgpCi0rCQl7Ci0r CSAgICAgICAgICBudW0gPSBfcmxfZmluZF9wcmV2X21iY2hhciAobG9jYWxfcHJvbXB0LCBudW0s IE1CX0ZJTkRfQU5ZKTsKLSsJICAgICAgICAgIGJyZWFrOwotKwkJfQotKwkgICAgICBlbHNlIGlm ICh6ID09IF9ybF9zY3JlZW53aWR0aCkKLSsJICAgICAgICBicmVhazsKLSsJICAgICAgbnVtKys7 Ci0gCSAgICB9Ci0tCSAgbnVtKys7Ci0rICAgICAgICAgIHRlbXAgPSBudW07Ci0gCX0KLS0gICAg ICB0ZW1wID0gbnVtICsKLS0jZWxzZQotLSAgICAgIHRlbXAgPSAoKG5ld2xpbmVzICsgMSkgKiBf cmxfc2NyZWVud2lkdGgpICsKLSsgICAgICBlbHNlCi0gI2VuZGlmIC8qICFIQU5ETEVfTVVMVElC WVRFICovCi0tICAgICAgICAgICAgICgobG9jYWxfcHJvbXB0X3ByZWZpeCA9PSAwKSA/ICgobmV3 bGluZXMgPT0gMCkgPyBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZQotLQkJCQkJCQkgICAg OiAoKG5ld2xpbmVzID09IDEpID8gd3JhcF9vZmZzZXQgOiAwKSkKLS0JCQkJCSA6ICgobmV3bGlu ZXMgPT0gMCkgPyB3cmFwX29mZnNldCA6MCkpOwotKwl0ZW1wID0gKChuZXdsaW5lcyArIDEpICog X3JsX3NjcmVlbndpZHRoKTsKLSsKLSsgICAgICAvKiBOb3cgYWNjb3VudCBmb3IgaW52aXNpYmxl IGNoYXJhY3RlcnMgaW4gdGhlIGN1cnJlbnQgbGluZS4gKi8KLSsgICAgICAvKiBYWFggLSB0aGlz IGFzc3VtZXMgdGhhdCB0aGUgaW52aXNpYmxlIGNoYXJhY3RlcnMgbWF5IGJlIHNwbGl0LCBidXQg b25seQotKwkgYmV0d2VlbiB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0IGxpbmVzLiAqLwotKyAgICAg IHRlbXAgKz0gKChsb2NhbF9wcm9tcHRfcHJlZml4ID09IDApID8gKChuZXdsaW5lcyA9PSAwKSA/ IHByb21wdF9pbnZpc19jaGFyc19maXJzdF9saW5lCi0rCQkJCQkJCSAgICAgOiAoKG5ld2xpbmVz ID09IHByb21wdF9saW5lc19lc3RpbWF0ZSkgPyB3cmFwX29mZnNldCA6IHByb21wdF9pbnZpc19j aGFyc19maXJzdF9saW5lKSkKLSsJCQkJCSAgOiAoKG5ld2xpbmVzID09IDApID8gd3JhcF9vZmZz ZXQgOiAwKSk7Ci0gICAgICAgICAgICAgIAotICAgICAgIGludl9sYnJlYWtzWysrbmV3bGluZXNd ID0gdGVtcDsKLSAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKLS0gICAgICBscG9zIC09 IF9ybF9jb2xfd2lkdGggKGxvY2FsX3Byb21wdCwgbjAsIG51bSk7Ci0tI2Vsc2UKLS0gICAgICBs cG9zIC09IF9ybF9zY3JlZW53aWR0aDsKLSsgICAgICBpZiAoTUJfQ1VSX01BWCA+IDEgJiYgcmxf Ynl0ZV9vcmllbnRlZCA9PSAwICYmIHByb21wdF9tdWx0aWJ5dGVfY2hhcnMgPiAwKQotKwlscG9z IC09IF9ybF9jb2xfd2lkdGggKGxvY2FsX3Byb21wdCwgbjAsIG51bSwgMSk7Ci0rICAgICAgZWxz ZQotICNlbmRpZgotKwlscG9zIC09IF9ybF9zY3JlZW53aWR0aDsKLSAgICAgfQotIAotICAgcHJv bXB0X2xhc3Rfc2NyZWVuX2xpbmUgPSBuZXdsaW5lczsKLSAKLSAgIC8qIERyYXcgdGhlIHJlc3Qg b2YgdGhlIGxpbmUgKGFmdGVyIHRoZSBwcm9tcHQpIGludG8gaW52aXNpYmxlX2xpbmUsIGtlZXBp bmcKLS0gICAgIHRyYWNrIG9mIHdoZXJlIHRoZSBjdXJzb3IgaXMgKGNfcG9zKSwgdGhlIG51bWJl ciBvZiB0aGUgbGluZSBjb250YWluaW5nCi0rICAgICB0cmFjayBvZiB3aGVyZSB0aGUgY3Vyc29y IGlzIChjcG9zX2J1ZmZlcl9wb3NpdGlvbiksIHRoZSBudW1iZXIgb2YgdGhlIGxpbmUgY29udGFp bmluZwotICAgICAgdGhlIGN1cnNvciAobGJfbGluZW51bSksIHRoZSBsYXN0IGxpbmUgbnVtYmVy IChsYl9ib3RsaW4gYW5kIGludl9ib3RsaW4pLgotICAgICAgSXQgbWFpbnRhaW5zIGFuIGFycmF5 IG9mIGxpbmUgYnJlYWtzIGZvciBkaXNwbGF5IChpbnZfbGJyZWFrcykuCi0gICAgICBUaGlzIGhh bmRsZXMgZXhwYW5kaW5nIHRhYnMgZm9yIGRpc3BsYXkgYW5kIGRpc3BsYXlpbmcgbWV0YSBjaGFy YWN0ZXJzLiAqLwotQEAgLTY3MCw2ICs3MzcsNyBAQCBybF9yZWRpc3BsYXkgKCkKLSAgIGlmIChN Ql9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCi0gICAgIHsKLSAgICAgICBt ZW1zZXQgKCZwcywgMCwgc2l6ZW9mIChtYnN0YXRlX3QpKTsKLSsgICAgICAvKiBYWFggLSB3aGF0 IGlmIHdjX2J5dGVzIGVuZHMgdXAgPD0gMD8gY2hlY2sgZm9yIE1CX0lOVkFMSURDSCAqLwotICAg ICAgIHdjX2J5dGVzID0gbWJydG93YyAoJndjLCBybF9saW5lX2J1ZmZlciwgcmxfZW5kLCAmcHMp OwotICAgICB9Ci0gICBlbHNlCi1AQCAtNzEzLDcgKzc4MSw3IEBAIHJsX3JlZGlzcGxheSAoKQot IAotICAgICAgIGlmIChpbiA9PSBybF9wb2ludCkKLSAJewotLQkgIGNfcG9zID0gb3V0OwotKwkg IGNwb3NfYnVmZmVyX3Bvc2l0aW9uID0gb3V0OwotIAkgIGxiX2xpbmVudW0gPSBuZXdsaW5lczsK LSAJfQotIAotQEAgLTgwNyw3ICs4NzUsNyBAQCBybF9yZWRpc3BsYXkgKCkKLSAJCSAgfQotIAkg ICAgICBpZiAoaW4gPT0gcmxfcG9pbnQpCi0gCQl7Ci0tCQkgIGNfcG9zID0gb3V0OwotKwkJICBj cG9zX2J1ZmZlcl9wb3NpdGlvbiA9IG91dDsKLSAJCSAgbGJfbGluZW51bSA9IG5ld2xpbmVzOwot IAkJfQotIAkgICAgICBmb3IgKGkgPSBpbjsgaSA8IGluK3djX2J5dGVzOyBpKyspCi1AQCAtODMw LDYgKzg5OCw3IEBAIHJsX3JlZGlzcGxheSAoKQotICAgICAgIGlmIChNQl9DVVJfTUFYID4gMSAm JiBybF9ieXRlX29yaWVudGVkID09IDApCi0gCXsKLSAJICBpbiArPSB3Y19ieXRlczsKLSsJICAv KiBYWFggLSB3aGF0IGlmIHdjX2J5dGVzIGVuZHMgdXAgPD0gMD8gY2hlY2sgZm9yIE1CX0lOVkFM SURDSCAqLwotIAkgIHdjX2J5dGVzID0gbWJydG93YyAoJndjLCBybF9saW5lX2J1ZmZlciArIGlu LCBybF9lbmQgLSBpbiwgJnBzKTsKLSAJfQotICAgICAgIGVsc2UKLUBAIC04MzgsOSArOTA3LDkg QEAgcmxfcmVkaXNwbGF5ICgpCi0gCi0gICAgIH0KLSAgIGxpbmVbb3V0XSA9ICdcMCc7Ci0tICBp ZiAoY19wb3MgPCAwKQotKyAgaWYgKGNwb3NfYnVmZmVyX3Bvc2l0aW9uIDwgMCkKLSAgICAgewot LSAgICAgIGNfcG9zID0gb3V0OwotKyAgICAgIGNwb3NfYnVmZmVyX3Bvc2l0aW9uID0gb3V0Owot ICAgICAgIGxiX2xpbmVudW0gPSBuZXdsaW5lczsKLSAgICAgfQotIAotQEAgLTg0OSw3ICs5MTgs NyBAQCBybF9yZWRpc3BsYXkgKCkKLSAgIGludl9sYnJlYWtzW25ld2xpbmVzKzFdID0gb3V0Owot ICAgY3Vyc29yX2xpbmVudW0gPSBsYl9saW5lbnVtOwotIAotLSAgLyogQ19QT1MgPT0gcG9zaXRp b24gaW4gYnVmZmVyIHdoZXJlIGN1cnNvciBzaG91bGQgYmUgcGxhY2VkLgotKyAgLyogQ1BPU19C VUZGRVJfUE9TSVRJT04gPT0gcG9zaXRpb24gaW4gYnVmZmVyIHdoZXJlIGN1cnNvciBzaG91bGQg YmUgcGxhY2VkLgotICAgICAgQ1VSU09SX0xJTkVOVU0gPT0gbGluZSBudW1iZXIgd2hlcmUgdGhl IGN1cnNvciBzaG91bGQgYmUgcGxhY2VkLiAqLwotIAotICAgLyogUFdQOiBub3cgaXMgd2hlbiB0 aGluZ3MgZ2V0IGEgYml0IGhhaXJ5LiAgVGhlIHZpc2libGUgYW5kIGludmlzaWJsZQotQEAgLTg4 NCw2ICs5NTMsMTAgQEAgcmxfcmVkaXNwbGF5ICgpCi0gCSAgICAgc2Vjb25kIGFuZCBzdWJzZXF1 ZW50IGxpbmVzIHN0YXJ0IGF0IGludl9sYnJlYWtzW05dLCBvZmZzZXQgYnkKLSAJICAgICBPRkZT RVQgKHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gY2FsY3VsYXRlZCBhYm92ZSkuICAqLwotIAotKyNk ZWZpbmUgSU5WSVNfRklSU1QoKQkocHJvbXB0X3BoeXNpY2FsX2NoYXJzID4gX3JsX3NjcmVlbndp ZHRoID8gcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUgOiB3cmFwX29mZnNldCkKLSsjZGVm aW5lIFdSQVBfT0ZGU0VUKGxpbmUsIG9mZnNldCkgICgobGluZSA9PSAwKSBcCi0rCQkJCQk/IChv ZmZzZXQgPyBJTlZJU19GSVJTVCgpIDogMCkgXAotKwkJCQkJOiAoKGxpbmUgPT0gcHJvbXB0X2xh c3Rfc2NyZWVuX2xpbmUpID8gd3JhcF9vZmZzZXQtcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xp bmUgOiAwKSkKLSAjZGVmaW5lIFdfT0ZGU0VUKGxpbmUsIG9mZnNldCkgKChsaW5lKSA9PSAwID8g b2Zmc2V0IDogMCkKLSAjZGVmaW5lIFZJU19MTEVOKGwpCSgobCkgPiBfcmxfdmlzX2JvdGxpbiA/ IDAgOiAodmlzX2xicmVha3NbbCsxXSAtIHZpc19sYnJlYWtzW2xdKSkKLSAjZGVmaW5lIElOVl9M TEVOKGwpCShpbnZfbGJyZWFrc1tsKzFdIC0gaW52X2xicmVha3NbbF0pCi1AQCAtODkxLDkgKzk2 NCwxNiBAQCBybF9yZWRpc3BsYXkgKCkKLSAjZGVmaW5lIFZJU19MSU5FKGxpbmUpICgobGluZSkg PiBfcmxfdmlzX2JvdGxpbikgPyAiIiA6IFZJU19DSEFSUyhsaW5lKQotICNkZWZpbmUgSU5WX0xJ TkUobGluZSkgKGludmlzaWJsZV9saW5lICsgaW52X2xicmVha3NbbGluZV0pCi0gCi0rI2RlZmlu ZSBPTERfQ1BPU19JTl9QUk9NUFQoKSAoY3Bvc19hZGp1c3RlZCA9PSAwICYmIFwKLSsJCQlfcmxf bGFzdF9jX3BvcyAhPSBvX2Nwb3MgJiYgXAotKwkJCV9ybF9sYXN0X2NfcG9zID4gd3JhcF9vZmZz ZXQgJiYgXAotKwkJCW9fY3BvcyA8IHByb21wdF9sYXN0X2ludmlzaWJsZSkKLSsKLSAJICAvKiBG b3IgZWFjaCBsaW5lIGluIHRoZSBidWZmZXIsIGRvIHRoZSB1cGRhdGluZyBkaXNwbGF5LiAqLwot IAkgIGZvciAobGluZW51bSA9IDA7IGxpbmVudW0gPD0gaW52X2JvdGxpbjsgbGluZW51bSsrKQot IAkgICAgewotKwkgICAgICAvKiBUaGlzIGNhbiBsZWFkIHVzIGFzdHJheSBpZiB3ZSBleGVjdXRl IGEgcHJvZ3JhbSB0aGF0IGNoYW5nZXMKLSsJCSB0aGUgbG9jYWxlIGZyb20gYSBub24tbXVsdGli eXRlIHRvIGEgbXVsdGlieXRlIG9uZS4gKi8KLSAJICAgICAgb19jcG9zID0gX3JsX2xhc3RfY19w b3M7Ci0gCSAgICAgIGNwb3NfYWRqdXN0ZWQgPSAwOwotIAkgICAgICB1cGRhdGVfbGluZSAoVklT X0xJTkUobGluZW51bSksIElOVl9MSU5FKGxpbmVudW0pLCBsaW5lbnVtLAotQEAgLTkwMywxNiAr OTgzLDIyIEBAIHJsX3JlZGlzcGxheSAoKQotIAkJIHRha2UgaW52aXNpYmxlIGNoYXJhY3RlcnMg aW50byBhY2NvdW50LCBzaW5jZSBfcmxfbGFzdF9jX3BvcwotIAkJIGlzIGFuIGFic29sdXRlIGN1 cnNvciBwb3NpdGlvbiBpbiBhIG11bHRpYnl0ZSBsb2NhbGUuICBTZWUKLSAJCSBpZiBjb21wZW5z YXRpbmcgaGVyZSBpcyB0aGUgcmlnaHQgdGhpbmcsIG9yIGlmIHdlIGhhdmUgdG8KLS0JCSBjaGFu Z2UgdXBkYXRlX2xpbmUgaXRzZWxmLiAgVGhlcmUgaXMgb25lIGNhc2UgaW4gd2hpY2gKLSsJCSBj aGFuZ2UgdXBkYXRlX2xpbmUgaXRzZWxmLiAgVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgaW4gd2hp Y2gKLSAJCSB1cGRhdGVfbGluZSBhZGp1c3RzIF9ybF9sYXN0X2NfcG9zIGl0c2VsZiAoc28gaXQg Y2FuIHBhc3MKLSAJCSBfcmxfbW92ZV9jdXJzb3JfcmVsYXRpdmUgYWNjdXJhdGUgdmFsdWVzKTsg aXQgY29tbXVuaWNhdGVzCi0tCQkgdGhpcyBiYWNrIGJ5IHNldHRpbmcgY3Bvc19hZGp1c3RlZCAq LwotLQkgICAgICBpZiAobGluZW51bSA9PSAwICYmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRl X29yaWVudGVkID09IDApICYmCi0tCQkgIGNwb3NfYWRqdXN0ZWQgPT0gMCAmJgotLQkJICBfcmxf bGFzdF9jX3BvcyAhPSBvX2Nwb3MgJiYKLS0JCSAgX3JsX2xhc3RfY19wb3MgPiB3cmFwX29mZnNl dCAmJgotLQkJICBvX2Nwb3MgPCBwcm9tcHRfbGFzdF9pbnZpc2libGUpCi0tCQlfcmxfbGFzdF9j X3BvcyAtPSB3cmFwX29mZnNldDsKLSsJCSB0aGlzIGJhY2sgYnkgc2V0dGluZyBjcG9zX2FkanVz dGVkLiAgSWYgd2UgYXNzdW1lIHRoYXQKLSsJCSBfcmxfbGFzdF9jX3BvcyBpcyBjb3JyZWN0IChh biBhYnNvbHV0ZSBjdXJzb3IgcG9zaXRpb24pIGVhY2gKLSsJCSB0aW1lIHVwZGF0ZV9saW5lIGlz IGNhbGxlZCwgdGhlbiB3ZSBjYW4gYXNzdW1lIGluIG91cgotKwkJIGNhbGN1bGF0aW9ucyB0aGF0 IG9fY3BvcyBkb2VzIG5vdCBuZWVkIHRvIGJlIGFkanVzdGVkIGJ5Ci0rCQkgd3JhcF9vZmZzZXQu ICovCi0rCSAgICAgIGlmIChsaW5lbnVtID09IDAgJiYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5 dGVfb3JpZW50ZWQgPT0gMCkgJiYgT0xEX0NQT1NfSU5fUFJPTVBUKCkpCi0rCQlfcmxfbGFzdF9j X3BvcyAtPSBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZTsJLyogWFhYIC0gd2FzIHdyYXBf b2Zmc2V0ICovCi0rCSAgICAgIGVsc2UgaWYgKGxpbmVudW0gPT0gcHJvbXB0X2xhc3Rfc2NyZWVu X2xpbmUgJiYgcHJvbXB0X3BoeXNpY2FsX2NoYXJzID4gX3JsX3NjcmVlbndpZHRoICYmCi0rCQkJ KE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkgJiYKLSsJCQljcG9zX2Fk anVzdGVkID09IDAgJiYKLSsJCQlfcmxfbGFzdF9jX3BvcyAhPSBvX2Nwb3MgJiYKLSsJCQlfcmxf bGFzdF9jX3BvcyA+IChwcm9tcHRfbGFzdF9pbnZpc2libGUgLSBfcmxfc2NyZWVud2lkdGggLSBw cm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSkpCi0rCQlfcmxfbGFzdF9jX3BvcyAtPSAod3Jh cF9vZmZzZXQtcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUpOwotIAkJICAKLSAJICAgICAg LyogSWYgdGhpcyBpcyB0aGUgbGluZSB3aXRoIHRoZSBwcm9tcHQsIHdlIG1pZ2h0IG5lZWQgdG8K LSAJCSBjb21wZW5zYXRlIGZvciBpbnZpc2libGUgY2hhcmFjdGVycyBpbiB0aGUgbmV3IGxpbmUu IERvCi1AQCAtOTMyLDYgKzEwMTgsMTkgQEAgcmxfcmVkaXNwbGF5ICgpCi0gCQkgIGlmIChubGVm dCkKLSAJCSAgICBfcmxfY2xlYXJfdG9fZW9sIChubGVmdCk7Ci0gCQl9Ci0rI2lmIDAKLSsJICAg ICAgLyogVGhpcyBzZWdtZW50IGlzIGludGVuZGVkIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0 aGUgcHJvbXB0Ci0rCQkgaGFzIGludmlzaWJsZSBjaGFyYWN0ZXJzIG9uIHRoZSBzZWNvbmQgbGlu ZSBhbmQgdGhlIG5ldyBsaW5lCi0rCQkgdG8gYmUgZGlzcGxheWVkIG5lZWRzIHRvIGNsZWFyIHRo ZSByZXN0IG9mIHRoZSBvbGQgY2hhcmFjdGVycwotKwkJIG91dCAoZS5nLiwgd2hlbiBwcmludGlu ZyB0aGUgaS1zZWFyY2ggcHJvbXB0KS4gIEluIGdlbmVyYWwsCi0rCQkgdGhlIGNhc2Ugb2YgdGhl IG5ldyBsaW5lIGJlaW5nIHNob3J0ZXIgdGhhbiB0aGUgb2xkLgotKwkJIEluY29tcGxldGUgKi8K LSsJICAgICAgZWxzZSBpZiAobGluZW51bSA9PSBwcm9tcHRfbGFzdF9zY3JlZW5fbGluZSAmJgot KwkJICAgICAgIHByb21wdF9waHlzaWNhbF9jaGFycyA+IF9ybF9zY3JlZW53aWR0aCAmJgotKwkJ ICAgICAgIHdyYXBfb2Zmc2V0ICE9IHByb21wdF9pbnZpc19jaGFyc19maXJzdF9saW5lICYmCi0r CQkgICAgICAgX3JsX2xhc3RfY19wb3MgPT0gb3V0ICYmCi0rI2VuZGlmCi0rCi0gCi0gCSAgICAg IC8qIFNpbmNlIHRoZSBuZXcgZmlyc3QgbGluZSBpcyBub3cgdmlzaWJsZSwgc2F2ZSBpdHMgbGVu Z3RoLiAqLwotIAkgICAgICBpZiAobGluZW51bSA9PSAwKQotQEAgLTk3NSw3ICsxMDc0LDExIEBA IHJsX3JlZGlzcGxheSAoKQotIAkgICAgIGludmlzaWJsZSBjaGFyYWN0ZXIgaW4gdGhlIHByb21w dCBzdHJpbmcuICovCi0gCSAgbmxlZnQgPSBwcm9tcHRfdmlzaWJsZV9sZW5ndGggKyB3cmFwX29m ZnNldDsKLSAJICBpZiAoY3Vyc29yX2xpbmVudW0gPT0gMCAmJiB3cmFwX29mZnNldCA+IDAgJiYg X3JsX2xhc3RfY19wb3MgPiAwICYmCi0tCSAgICAgIF9ybF9sYXN0X2NfcG9zIDw9IHByb21wdF9s YXN0X2ludmlzaWJsZSAmJiBsb2NhbF9wcm9tcHQpCi0rI2lmIDAKLSsJICAgICAgX3JsX2xhc3Rf Y19wb3MgPD0gUFJPTVBUX0VORElOR19JTkRFWCAmJiBsb2NhbF9wcm9tcHQpCi0rI2Vsc2UKLSsJ ICAgICAgX3JsX2xhc3RfY19wb3MgPCBQUk9NUFRfRU5ESU5HX0lOREVYICYmIGxvY2FsX3Byb21w dCkKLSsjZW5kaWYKLSAJICAgIHsKLSAjaWYgZGVmaW5lZCAoX19NU0RPU19fKQotIAkgICAgICBw dXRjICgnXHInLCBybF9vdXRzdHJlYW0pOwotQEAgLTk4MywxOSArMTA4NiwyMiBAQCBybF9yZWRp c3BsYXkgKCkKLSAJICAgICAgaWYgKF9ybF90ZXJtX2NyKQotIAkJdHB1dHMgKF9ybF90ZXJtX2Ny LCAxLCBfcmxfb3V0cHV0X2NoYXJhY3Rlcl9mdW5jdGlvbik7Ci0gI2VuZGlmCi0rCSAgICAgIGlm IChtb2RtYXJrKQotKwkJX3JsX291dHB1dF9zb21lX2NoYXJzICgiKiIsIDEpOwotKwotIAkgICAg ICBfcmxfb3V0cHV0X3NvbWVfY2hhcnMgKGxvY2FsX3Byb21wdCwgbmxlZnQpOwotIAkgICAgICBp ZiAoTUJfQ1VSX01BWCA+IDEgJiYgcmxfYnl0ZV9vcmllbnRlZCA9PSAwKQotLQkJX3JsX2xhc3Rf Y19wb3MgPSBfcmxfY29sX3dpZHRoIChsb2NhbF9wcm9tcHQsIDAsIG5sZWZ0KSAtIHdyYXBfb2Zm c2V0OwotKwkJX3JsX2xhc3RfY19wb3MgPSBfcmxfY29sX3dpZHRoIChsb2NhbF9wcm9tcHQsIDAs IG5sZWZ0LCAxKSAtIHdyYXBfb2Zmc2V0ICsgbW9kbWFyazsKLSAJICAgICAgZWxzZQotLQkJX3Js X2xhc3RfY19wb3MgPSBubGVmdDsKLSsJCV9ybF9sYXN0X2NfcG9zID0gbmxlZnQgKyBtb2RtYXJr OwotIAkgICAgfQotIAotIAkgIC8qIFdoZXJlIG9uIHRoYXQgbGluZT8gIEFuZCB3aGVyZSBkb2Vz IHRoYXQgbGluZSBzdGFydAotIAkgICAgIGluIHRoZSBidWZmZXI/ICovCi0gCSAgcG9zID0gaW52 X2xicmVha3NbY3Vyc29yX2xpbmVudW1dOwotIAkgIC8qIG5sZWZ0ID09IG51bWJlciBvZiBjaGFy YWN0ZXJzIGluIHRoZSBsaW5lIGJ1ZmZlciBiZXR3ZWVuIHRoZQotLQkgICAgIHN0YXJ0IG9mIHRo ZSBsaW5lIGFuZCB0aGUgY3Vyc29yIHBvc2l0aW9uLiAqLwotLQkgIG5sZWZ0ID0gY19wb3MgLSBw b3M7Ci0rCSAgICAgc3RhcnQgb2YgdGhlIGxpbmUgYW5kIHRoZSBkZXNpcmVkIGN1cnNvciBwb3Np dGlvbi4gKi8KLSsJICBubGVmdCA9IGNwb3NfYnVmZmVyX3Bvc2l0aW9uIC0gcG9zOwotIAotIAkg IC8qIE5MRUZUIGlzIG5vdyBhIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGEgYnVmZmVyLiAgV2hl biBpbiBhCi0gCSAgICAgbXVsdGlieXRlIGxvY2FsZSwgaG93ZXZlciwgX3JsX2xhc3RfY19wb3Mg aXMgYW4gYWJzb2x1dGUgY3Vyc29yCi1AQCAtMTAwNywxMSArMTExMywxMiBAQCBybF9yZWRpc3Bs YXkgKCkKLSAJICAgICB0aG9zZSBjaGFyYWN0ZXJzIGhlcmUgYW5kIGNhbGwgX3JsX2JhY2tzcGFj ZSgpIGRpcmVjdGx5LiAqLwotIAkgIGlmICh3cmFwX29mZnNldCAmJiBjdXJzb3JfbGluZW51bSA9 PSAwICYmIG5sZWZ0IDwgX3JsX2xhc3RfY19wb3MpCi0gCSAgICB7Ci0rCSAgICAgIC8qIFRYID09 IG5ldyBwaHlzaWNhbCBjdXJzb3IgcG9zaXRpb24gaW4gbXVsdGlieXRlIGxvY2FsZS4gKi8KLSAJ ICAgICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKLS0JCXR4 ID0gX3JsX2NvbF93aWR0aCAoJnZpc2libGVfbGluZVtwb3NdLCAwLCBubGVmdCkgLSB2aXNpYmxl X3dyYXBfb2Zmc2V0OwotKwkJdHggPSBfcmxfY29sX3dpZHRoICgmdmlzaWJsZV9saW5lW3Bvc10s IDAsIG5sZWZ0LCAxKSAtIHZpc2libGVfd3JhcF9vZmZzZXQ7Ci0gCSAgICAgIGVsc2UKLSAJCXR4 ID0gbmxlZnQ7Ci0tCSAgICAgIGlmIChfcmxfbGFzdF9jX3BvcyA+IHR4KQotKwkgICAgICBpZiAo dHggPj0gMCAmJiBfcmxfbGFzdF9jX3BvcyA+IHR4KQotIAkJewotIAkgICAgICAgICAgX3JsX2Jh Y2tzcGFjZSAoX3JsX2xhc3RfY19wb3MgLSB0eCk7CS8qIFhYWCAqLwotIAkgICAgICAgICAgX3Js X2xhc3RfY19wb3MgPSB0eDsKLUBAIC0xMDQwLDExICsxMTQ3LDExIEBAIHJsX3JlZGlzcGxheSAo KQotIAkgd2lsbCBiZSBMTUFSR0lOLiAqLwotIAotICAgICAgIC8qIFRoZSBudW1iZXIgb2YgY2hh cmFjdGVycyB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGJlZm9yZSB0aGUgY3Vyc29yLiAqLwotLSAg ICAgIG5kaXNwID0gY19wb3MgLSB3cmFwX29mZnNldDsKLSsgICAgICBuZGlzcCA9IGNwb3NfYnVm ZmVyX3Bvc2l0aW9uIC0gd3JhcF9vZmZzZXQ7Ci0gICAgICAgbmxlZnQgID0gcHJvbXB0X3Zpc2li bGVfbGVuZ3RoICsgd3JhcF9vZmZzZXQ7Ci0gICAgICAgLyogV2hlcmUgdGhlIG5ldyBjdXJzb3Ig cG9zaXRpb24gd2lsbCBiZSBvbiB0aGUgc2NyZWVuLiAgVGhpcyBjYW4gYmUKLSAJIGxvbmdlciB0 aGFuIFNDUkVFTldJRFRIOyBpZiBpdCBpcywgbG1hcmdpbiB3aWxsIGJlIGFkanVzdGVkLiAqLwot LSAgICAgIHBoeXNfY19wb3MgPSBjX3BvcyAtIChsYXN0X2xtYXJnaW4gPyBsYXN0X2xtYXJnaW4g OiB3cmFwX29mZnNldCk7Ci0rICAgICAgcGh5c19jX3BvcyA9IGNwb3NfYnVmZmVyX3Bvc2l0aW9u IC0gKGxhc3RfbG1hcmdpbiA/IGxhc3RfbG1hcmdpbiA6IHdyYXBfb2Zmc2V0KTsKLSAgICAgICB0 ID0gX3JsX3NjcmVlbndpZHRoIC8gMzsKLSAKLSAgICAgICAvKiBJZiB0aGUgbnVtYmVyIG9mIGNo YXJhY3RlcnMgaGFkIGFscmVhZHkgZXhjZWVkZWQgdGhlIHNjcmVlbndpZHRoLAotQEAgLTEwNTUs NyArMTE2Miw3IEBAIHJsX3JlZGlzcGxheSAoKQotIAkgdHdvLXRoaXJkcyBvZiB0aGUgd2F5IGFj cm9zcyB0aGUgc2NyZWVuLiAqLwotICAgICAgIGlmIChwaHlzX2NfcG9zID4gX3JsX3NjcmVlbndp ZHRoIC0gMikKLSAJewotLQkgIGxtYXJnaW4gPSBjX3BvcyAtICgyICogdCk7Ci0rCSAgbG1hcmdp biA9IGNwb3NfYnVmZmVyX3Bvc2l0aW9uIC0gKDIgKiB0KTsKLSAJICBpZiAobG1hcmdpbiA8IDAp Ci0gCSAgICBsbWFyZ2luID0gMDsKLSAJICAvKiBJZiB0aGUgbGVmdCBtYXJnaW4gd291bGQgYmUg aW4gdGhlIG1pZGRsZSBvZiBhIHByb21wdCB3aXRoCi1AQCAtMTA2OSw3ICsxMTc2LDcgQEAgcmxf cmVkaXNwbGF5ICgpCi0gCXsKLSAJICAvKiBJZiB3ZSBhcmUgbW92aW5nIGJhY2sgdG93YXJkcyB0 aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIGFuZAotIAkgICAgIHRoZSBsYXN0IG1hcmdpbiBpcyBu byBsb25nZXIgY29ycmVjdCwgY29tcHV0ZSBhIG5ldyBvbmUuICovCi0tCSAgbG1hcmdpbiA9ICgo Y19wb3MgLSAxKSAvIHQpICogdDsJLyogWFhYICovCi0rCSAgbG1hcmdpbiA9ICgoY3Bvc19idWZm ZXJfcG9zaXRpb24gLSAxKSAvIHQpICogdDsJLyogWFhYICovCi0gCSAgaWYgKHdyYXBfb2Zmc2V0 ICYmIGxtYXJnaW4gPiAwICYmIGxtYXJnaW4gPCBubGVmdCkKLSAJICAgIGxtYXJnaW4gPSBubGVm dDsKLSAJfQotQEAgLTEwODksOSArMTE5NiwxMSBAQCBybF9yZWRpc3BsYXkgKCkKLSAgICAgICBp ZiAodCA8IG91dCkKLSAJbGluZVt0IC0gMV0gPSAnPic7Ci0gCi0tICAgICAgaWYgKCFybF9kaXNw bGF5X2ZpeGVkIHx8IGZvcmNlZF9kaXNwbGF5IHx8IGxtYXJnaW4gIT0gbGFzdF9sbWFyZ2luKQot KyAgICAgIGlmIChybF9kaXNwbGF5X2ZpeGVkID09IDAgfHwgZm9yY2VkX2Rpc3BsYXkgfHwgbG1h cmdpbiAhPSBsYXN0X2xtYXJnaW4pCi0gCXsKLSAJICBmb3JjZWRfZGlzcGxheSA9IDA7Ci0rCSAg b19jcG9zID0gX3JsX2xhc3RfY19wb3M7Ci0rCSAgY3Bvc19hZGp1c3RlZCA9IDA7Ci0gCSAgdXBk YXRlX2xpbmUgKCZ2aXNpYmxlX2xpbmVbbGFzdF9sbWFyZ2luXSwKLSAJCSAgICAgICAmaW52aXNp YmxlX2xpbmVbbG1hcmdpbl0sCi0gCQkgICAgICAgMCwKLUBAIC0xMDk5LDYgKzEyMDgsOSBAQCBy bF9yZWRpc3BsYXkgKCkKLSAJCSAgICAgICBfcmxfc2NyZWVud2lkdGggKyAobG1hcmdpbiA/IDAg OiB3cmFwX29mZnNldCksCi0gCQkgICAgICAgMCk7Ci0gCi0rCSAgaWYgKChNQl9DVVJfTUFYID4g MSAmJiBybF9ieXRlX29yaWVudGVkID09IDApICYmIE9MRF9DUE9TX0lOX1BST01QVCgpKQotKwkg ICAgX3JsX2xhc3RfY19wb3MgLT0gcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmU7CS8qIFhY WCAtIHdhcyB3cmFwX29mZnNldCAqLwotKwotIAkgIC8qIElmIHRoZSB2aXNpYmxlIG5ldyBsaW5l IGlzIHNob3J0ZXIgdGhhbiB0aGUgb2xkLCBidXQgdGhlIG51bWJlcgotIAkgICAgIG9mIGludmlz aWJsZSBjaGFyYWN0ZXJzIGlzIGdyZWF0ZXIsIGFuZCB3ZSBhcmUgYXQgdGhlIGVuZCBvZgotIAkg ICAgIHRoZSBuZXcgbGluZSwgd2UgbmVlZCB0byBjbGVhciB0byBlb2wuICovCi1AQCAtMTExNCw3 ICsxMjI2LDcgQEAgcmxfcmVkaXNwbGF5ICgpCi0gCSAgaWYgKHZpc2libGVfZmlyc3RfbGluZV9s ZW4gPiBfcmxfc2NyZWVud2lkdGgpCi0gCSAgICB2aXNpYmxlX2ZpcnN0X2xpbmVfbGVuID0gX3Js X3NjcmVlbndpZHRoOwotIAotLQkgIF9ybF9tb3ZlX2N1cnNvcl9yZWxhdGl2ZSAoY19wb3MgLSBs bWFyZ2luLCAmaW52aXNpYmxlX2xpbmVbbG1hcmdpbl0pOwotKwkgIF9ybF9tb3ZlX2N1cnNvcl9y ZWxhdGl2ZSAoY3Bvc19idWZmZXJfcG9zaXRpb24gLSBsbWFyZ2luLCAmaW52aXNpYmxlX2xpbmVb bG1hcmdpbl0pOwotIAkgIGxhc3RfbG1hcmdpbiA9IGxtYXJnaW47Ci0gCX0KLSAgICAgfQotQEAg LTExMjIsMTcgKzEyMzQsMTAgQEAgcmxfcmVkaXNwbGF5ICgpCi0gCi0gICAvKiBTd2FwIHZpc2li bGUgYW5kIG5vbi12aXNpYmxlIGxpbmVzLiAqLwotICAgewotLSAgICBjaGFyICp2dGVtcCA9IHZp c2libGVfbGluZTsKLS0gICAgaW50ICppdGVtcCA9IHZpc19sYnJlYWtzLCBudGVtcCA9IHZpc19s YnNpemU7Ci0rICAgIHN0cnVjdCBsaW5lX3N0YXRlICp2dGVtcCA9IGxpbmVfc3RhdGVfdmlzaWJs ZTsKLSAKLS0gICAgdmlzaWJsZV9saW5lID0gaW52aXNpYmxlX2xpbmU7Ci0tICAgIGludmlzaWJs ZV9saW5lID0gdnRlbXA7Ci0tCi0tICAgIHZpc19sYnJlYWtzID0gaW52X2xicmVha3M7Ci0tICAg IGludl9sYnJlYWtzID0gaXRlbXA7Ci0tCi0tICAgIHZpc19sYnNpemUgPSBpbnZfbGJzaXplOwot LSAgICBpbnZfbGJzaXplID0gbnRlbXA7Ci0rICAgIGxpbmVfc3RhdGVfdmlzaWJsZSA9IGxpbmVf c3RhdGVfaW52aXNpYmxlOwotKyAgICBsaW5lX3N0YXRlX2ludmlzaWJsZSA9IHZ0ZW1wOwotIAot ICAgICBybF9kaXNwbGF5X2ZpeGVkID0gMDsKLSAgICAgLyogSWYgd2UgYXJlIGRpc3BsYXlpbmcg b24gYSBzaW5nbGUgbGluZSwgYW5kIGxhc3RfbG1hcmdpbiBpcyA+IDAsIHdlCi1AQCAtMTE0NCw2 ICsxMjQ5LDcgQEAgcmxfcmVkaXNwbGF5ICgpCi0gICAgICAgdmlzaWJsZV93cmFwX29mZnNldCA9 IHdyYXBfb2Zmc2V0OwotICAgfQotIAotKyAgUkxfVU5TRVRTVEFURSAoUkxfU1RBVEVfUkVESVNQ TEFZSU5HKTsKLSAgIF9ybF9yZWxlYXNlX3NpZ2ludCAoKTsKLSB9Ci0gCi1AQCAtMTE2OSwxMiAr MTI3NSwxMiBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21hCi0gICAg ICBpbnQgY3VycmVudF9saW5lLCBvbWF4LCBubWF4LCBpbnZfYm90bGluOwotIHsKLSAgIHJlZ2lz dGVyIGNoYXIgKm9mZCwgKm9scywgKm9lLCAqbmZkLCAqbmxzLCAqbmU7Ci0tICBpbnQgdGVtcCwg bGVuZGlmZiwgd3NhdGVuZCwgb2QsIG5kOwotKyAgaW50IHRlbXAsIGxlbmRpZmYsIHdzYXRlbmQs IG9kLCBuZCwgdHdpZHRoLCBvX2Nwb3M7Ci0gICBpbnQgY3VycmVudF9pbnZpc19jaGFyczsKLSAg IGludCBjb2xfbGVuZGlmZiwgY29sX3RlbXA7Ci0gI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZ VEUpCi0gICBtYnN0YXRlX3QgcHNfbmV3LCBwc19vbGQ7Ci0tICBpbnQgbmV3X29mZnNldCwgb2xk X29mZnNldCwgdG1wOwotKyAgaW50IG5ld19vZmZzZXQsIG9sZF9vZmZzZXQ7Ci0gI2VuZGlmCi0g Ci0gICAvKiBJZiB3ZSdyZSBhdCB0aGUgcmlnaHQgZWRnZSBvZiBhIHRlcm1pbmFsIHRoYXQgc3Vw cG9ydHMgeG4sIHdlJ3JlCi1AQCAtMTE4NSw3ICsxMjkxLDcgQEAgdXBkYXRlX2xpbmUgKG9sZCwg bmV3LCBjdXJyZW50X2xpbmUsIG9tYQotICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVf b3JpZW50ZWQgPT0gMCkKLSAgICAgdGVtcCA9IF9ybF9sYXN0X2NfcG9zOwotICAgZWxzZQotLSAg ICB0ZW1wID0gX3JsX2xhc3RfY19wb3MgLSBXX09GRlNFVChfcmxfbGFzdF92X3BvcywgdmlzaWJs ZV93cmFwX29mZnNldCk7Ci0rICAgIHRlbXAgPSBfcmxfbGFzdF9jX3BvcyAtIFdSQVBfT0ZGU0VU IChfcmxfbGFzdF92X3BvcywgdmlzaWJsZV93cmFwX29mZnNldCk7Ci0gICBpZiAodGVtcCA9PSBf cmxfc2NyZWVud2lkdGggJiYgX3JsX3Rlcm1fYXV0b3dyYXAgJiYgIV9ybF9ob3Jpem9udGFsX3Nj cm9sbF9tb2RlCi0gCSYmIF9ybF9sYXN0X3ZfcG9zID09IGN1cnJlbnRfbGluZSAtIDEpCi0gICAg IHsKLUBAIC0xMjAwLDggKzEzMDYsOCBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRf bGluZSwgb21hCi0gCSAgLyogVGhpcyBmaXhlcyBvbmx5IGRvdWJsZS1jb2x1bW4gY2hhcmFjdGVy cywgYnV0IGlmIHRoZSB3cmFwcGVkCi0gCSAgICAgY2hhcmFjdGVyIGNvbXN1bWVzIG1vcmUgdGhh biB0aHJlZSBjb2x1bW5zLCBzcGFjZXMgd2lsbCBiZQotIAkgICAgIGluc2VydGVkIGluIHRoZSBz dHJpbmcgYnVmZmVyLiAqLwotLQkgIGlmIChfcmxfd3JhcHBlZF9saW5lW2N1cnJlbnRfbGluZV0g PiAwKQotLQkgICAgX3JsX2NsZWFyX3RvX2VvbCAoX3JsX3dyYXBwZWRfbGluZVtjdXJyZW50X2xp bmVdKTsKLSsJICBpZiAoY3VycmVudF9saW5lIDwgbGluZV9zdGF0ZV92aXNpYmxlLT53YnNpemUg JiYgbGluZV9zdGF0ZV92aXNpYmxlLT53cmFwcGVkX2xpbmVbY3VycmVudF9saW5lXSA+IDApCi0r CSAgICBfcmxfY2xlYXJfdG9fZW9sIChsaW5lX3N0YXRlX3Zpc2libGUtPndyYXBwZWRfbGluZVtj dXJyZW50X2xpbmVdKTsKLSAKLSAJICBtZW1zZXQgKCZwcywgMCwgc2l6ZW9mIChtYnN0YXRlX3Qp KTsKLSAJICByZXQgPSBtYnJ0b3djICgmd2MsIG5ldywgTUJfQ1VSX01BWCwgJnBzKTsKLUBAIC0x MjE3LDcgKzEzMjMsNyBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21h Ci0gCi0gCSAgaWYgKHRlbXB3aWR0aCA+IDApCi0gCSAgICB7Ci0tCSAgICAgIGludCBjb3VudDsK LSsJICAgICAgaW50IGNvdW50LCBpOwotIAkgICAgICBieXRlcyA9IHJldDsKLSAJICAgICAgZm9y IChjb3VudCA9IDA7IGNvdW50IDwgYnl0ZXM7IGNvdW50KyspCi0gCQlwdXRjIChuZXdbY291bnRd LCBybF9vdXRzdHJlYW0pOwotQEAgLTEyMjgsMTAgKzEzMzQsMTMgQEAgdXBkYXRlX2xpbmUgKG9s ZCwgbmV3LCBjdXJyZW50X2xpbmUsIG9tYQotIAkgICAgICBpZiAocmV0ICE9IDAgJiYgYnl0ZXMg IT0gMCkKLSAJCXsKLSAJCSAgaWYgKE1CX0lOVkFMSURDSCAocmV0KSkKLS0JCSAgICBtZW1tb3Zl IChvbGQrYnl0ZXMsIG9sZCsxLCBzdHJsZW4gKG9sZCsxKSk7Ci0tCQkgIGVsc2UKLS0JCSAgICBt ZW1tb3ZlIChvbGQrYnl0ZXMsIG9sZCtyZXQsIHN0cmxlbiAob2xkK3JldCkpOwotKwkJICAgIHJl dCA9IDE7Ci0rCQkgIG1lbW1vdmUgKG9sZCtieXRlcywgb2xkK3JldCwgc3RybGVuIChvbGQrcmV0 KSk7Ci0gCQkgIG1lbWNweSAob2xkLCBuZXcsIGJ5dGVzKTsKLSsJCSAgLyogRml4IHVwIGluZGlj ZXMgaWYgd2UgY29weSBkYXRhIGZyb20gb25lIGxpbmUgdG8gYW5vdGhlciAqLwotKwkJICBvbWF4 ICs9IGJ5dGVzIC0gcmV0OwotKwkJICBmb3IgKGkgPSBjdXJyZW50X2xpbmUrMTsgaSA8IGludl9i b3RsaW4rMTsgaSsrKQotKwkJICAgIHZpc19sYnJlYWtzW2ldICs9IGJ5dGVzIC0gcmV0OwotIAkJ fQotIAkgICAgfQotIAkgIGVsc2UKLUBAIC0xMjY1LDcgKzEzNzQsNyBAQCB1cGRhdGVfbGluZSAo b2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21hCi0gICAgICAgLyogU2VlIGlmIHRoZSBvbGQgbGlu ZSBpcyBhIHN1YnNldCBvZiB0aGUgbmV3IGxpbmUsIHNvIHRoYXQgdGhlCi0gCSBvbmx5IGNoYW5n ZSBpcyBhZGRpbmcgY2hhcmFjdGVycy4gKi8KLSAgICAgICB0ZW1wID0gKG9tYXggPCBubWF4KSA/ IG9tYXggOiBubWF4OwotLSAgICAgIGlmIChtZW1jbXAgKG9sZCwgbmV3LCB0ZW1wKSA9PSAwKQot KyAgICAgIGlmIChtZW1jbXAgKG9sZCwgbmV3LCB0ZW1wKSA9PSAwKQkJLyogYWRkaW5nIGF0IHRo ZSBlbmQgKi8KLSAJewotIAkgIG9mZCA9IG9sZCArIHRlbXA7Ci0gCSAgbmZkID0gbmV3ICsgdGVt cDsKLUBAIC0xNDA3LDMwICsxNTE2LDQ4IEBAIHVwZGF0ZV9saW5lIChvbGQsIG5ldywgY3VycmVu dF9saW5lLCBvbWEKLSAgICAgIHNlcXVlbmNlcyAobGlrZSBkcmF3aW5nIHRoZSBgdW5ib2xkJyBz ZXF1ZW5jZSB3aXRob3V0IGEgY29ycmVzcG9uZGluZwotICAgICAgYGJvbGQnKSB0aGF0IG1hbmlm ZXN0cyBpdHNlbGYgb24gY2VydGFpbiB0ZXJtaW5hbHMuICovCi0gCi0tICBsZW5kaWZmID0gbG9j YWxfcHJvbXB0ID8gc3RybGVuIChsb2NhbF9wcm9tcHQpIDogMDsKLSsgIGxlbmRpZmYgPSBsb2Nh bF9wcm9tcHRfbGVuOwotICAgb2QgPSBvZmQgLSBvbGQ7CS8qIGluZGV4IG9mIGZpcnN0IGRpZmZl cmVuY2UgaW4gdmlzaWJsZSBsaW5lICovCi0gICBpZiAoY3VycmVudF9saW5lID09IDAgJiYgIV9y bF9ob3Jpem9udGFsX3Njcm9sbF9tb2RlICYmCi0gICAgICAgX3JsX3Rlcm1fY3IgJiYgbGVuZGlm ZiA+IHByb21wdF92aXNpYmxlX2xlbmd0aCAmJiBfcmxfbGFzdF9jX3BvcyA+IDAgJiYKLS0gICAg ICBvZCA+PSBsZW5kaWZmICYmIF9ybF9sYXN0X2NfcG9zIDw9IHByb21wdF9sYXN0X2ludmlzaWJs ZSkKLSsgICAgICBvZCA+PSBsZW5kaWZmICYmIF9ybF9sYXN0X2NfcG9zIDwgUFJPTVBUX0VORElO R19JTkRFWCkKLSAgICAgewotICNpZiBkZWZpbmVkIChfX01TRE9TX18pCi0gICAgICAgcHV0YyAo J1xyJywgcmxfb3V0c3RyZWFtKTsKLSAjZWxzZQotICAgICAgIHRwdXRzIChfcmxfdGVybV9jciwg MSwgX3JsX291dHB1dF9jaGFyYWN0ZXJfZnVuY3Rpb24pOwotICNlbmRpZgotKyAgICAgIGlmICht b2RtYXJrKQotKwlfcmxfb3V0cHV0X3NvbWVfY2hhcnMgKCIqIiwgMSk7Ci0gICAgICAgX3JsX291 dHB1dF9zb21lX2NoYXJzIChsb2NhbF9wcm9tcHQsIGxlbmRpZmYpOwotICAgICAgIGlmIChNQl9D VVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCi0gCXsKLSAJICAvKiBXZSB0YWtl IHdyYXBfb2Zmc2V0IGludG8gYWNjb3VudCBoZXJlIHNvIHdlIGNhbiBwYXNzIGNvcnJlY3QKLSAJ ICAgICBpbmZvcm1hdGlvbiB0byBfcmxfbW92ZV9jdXJzb3JfcmVsYXRpdmUuICovCi0tCSAgX3Js X2xhc3RfY19wb3MgPSBfcmxfY29sX3dpZHRoIChsb2NhbF9wcm9tcHQsIDAsIGxlbmRpZmYpIC0g d3JhcF9vZmZzZXQ7Ci0rCSAgX3JsX2xhc3RfY19wb3MgPSBfcmxfY29sX3dpZHRoIChsb2NhbF9w cm9tcHQsIDAsIGxlbmRpZmYsIDEpIC0gd3JhcF9vZmZzZXQgKyBtb2RtYXJrOwotIAkgIGNwb3Nf YWRqdXN0ZWQgPSAxOwotIAl9Ci0gICAgICAgZWxzZQotLQlfcmxfbGFzdF9jX3BvcyA9IGxlbmRp ZmY7Ci0rCV9ybF9sYXN0X2NfcG9zID0gbGVuZGlmZiArIG1vZG1hcms7Ci0gICAgIH0KLSAKLSsg IG9fY3BvcyA9IF9ybF9sYXN0X2NfcG9zOwotKwotKyAgLyogV2hlbiB0aGlzIGZ1bmN0aW9uIHJl dHVybnMsIF9ybF9sYXN0X2NfcG9zIGlzIGNvcnJlY3QsIGFuZCBhbiBhYnNvbHV0ZQotKyAgICAg Y3Vyc29yIHBvc3Rpb24gaW4gbXVsdGlieXRlIG1vZGUsIGJ1dCBhIGJ1ZmZlciBpbmRleCB3aGVu IG5vdCBpbiBhCi0rICAgICBtdWx0aWJ5dGUgbG9jYWxlLiAqLwotICAgX3JsX21vdmVfY3Vyc29y X3JlbGF0aXZlIChvZCwgb2xkKTsKLSsjaWYgMQotKyNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElC WVRFKQotKyAgLyogV2UgbmVlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJzb3IgcG9zaXRpb24g aXMgY29ycmVjdCBpbiB0aGUgcHJlc2VuY2Ugb2YKLSsgICAgIGludmlzaWJsZSBjaGFyYWN0ZXJz IGluIHRoZSBwcm9tcHQgc3RyaW5nLiAgTGV0J3Mgc2VlIGlmIHNldHRpbmcgdGhpcyB3aGVuCi0r ICAgICB3ZSBtYWtlIHN1cmUgd2UncmUgYXQgdGhlIGVuZCBvZiB0aGUgZHJhd24gcHJvbXB0IHN0 cmluZyB3b3Jrcy4gKi8KLSsgIGlmIChjdXJyZW50X2xpbmUgPT0gMCAmJiBNQl9DVVJfTUFYID4g MSAmJiBybF9ieXRlX29yaWVudGVkID09IDAgJiYKLSsgICAgICAoX3JsX2xhc3RfY19wb3MgPiAw IHx8IG9fY3BvcyA+IDApICYmCi0rICAgICAgX3JsX2xhc3RfY19wb3MgPT0gcHJvbXB0X3BoeXNp Y2FsX2NoYXJzKQotKyAgICBjcG9zX2FkanVzdGVkID0gMTsKLSsjZW5kaWYKLSsjZW5kaWYKLSAK LSAgIC8qIGlmIChsZW4gKG5ldykgPiBsZW4gKG9sZCkpCi0gICAgICBsZW5kaWZmID09IGRpZmZl cmVuY2UgaW4gYnVmZmVyCi1AQCAtMTQzOCw3ICsxNTY1LDcgQEAgdXBkYXRlX2xpbmUgKG9sZCwg bmV3LCBjdXJyZW50X2xpbmUsIG9tYQotICAgICAgV2hlbiBub3QgdXNpbmcgbXVsdGlieXRlIGNo YXJhY3RlcnMsIHRoZXNlIGFyZSBlcXVhbCAqLwotICAgbGVuZGlmZiA9IChubHMgLSBuZmQpIC0g KG9scyAtIG9mZCk7Ci0gICBpZiAoTUJfQ1VSX01BWCA+IDEgJiYgcmxfYnl0ZV9vcmllbnRlZCA9 PSAwKQotLSAgICBjb2xfbGVuZGlmZiA9IF9ybF9jb2xfd2lkdGggKG5ldywgbmZkIC0gbmV3LCBu bHMgLSBuZXcpIC0gX3JsX2NvbF93aWR0aCAob2xkLCBvZmQgLSBvbGQsIG9scyAtIG9sZCk7Ci0r ICAgIGNvbF9sZW5kaWZmID0gX3JsX2NvbF93aWR0aCAobmV3LCBuZmQgLSBuZXcsIG5scyAtIG5l dywgMSkgLSBfcmxfY29sX3dpZHRoIChvbGQsIG9mZCAtIG9sZCwgb2xzIC0gb2xkLCAxKTsKLSAg IGVsc2UKLSAgICAgY29sX2xlbmRpZmYgPSBsZW5kaWZmOwotIAotQEAgLTE0NjMsNyArMTU5MCw3 IEBAIHVwZGF0ZV9saW5lIChvbGQsIG5ldywgY3VycmVudF9saW5lLCBvbWEKLSAgIC8qIEluc2Vy dCAoZGlmZiAobGVuIChvbGQpLCBsZW4gKG5ldykpIGNoLiAqLwotICAgdGVtcCA9IG5lIC0gbmZk OwotICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKLS0gICAg Y29sX3RlbXAgPSBfcmxfY29sX3dpZHRoIChuZXcsIG5mZCAtIG5ldywgbmUgLSBuZXcpOwotKyAg ICBjb2xfdGVtcCA9IF9ybF9jb2xfd2lkdGggKG5ldywgbmZkIC0gbmV3LCBuZSAtIG5ldywgMSk7 Ci0gICBlbHNlCi0gICAgIGNvbF90ZW1wID0gdGVtcDsKLSAKLUBAIC0xNDcxLDIyICsxNTk4LDYw IEBAIHVwZGF0ZV9saW5lIChvbGQsIG5ldywgY3VycmVudF9saW5lLCBvbWEKLSAgICAgewotICAg ICAgIC8qIE5vbi16ZXJvIGlmIHdlJ3JlIGluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBsaW5lcy4g Ki8KLSAgICAgICBpbnQgZ2wgPSBjdXJyZW50X2xpbmUgPj0gX3JsX3Zpc19ib3RsaW4gJiYgaW52 X2JvdGxpbiA+IF9ybF92aXNfYm90bGluOwotKyAgICAgIC8qIElmIGNvbF9sZW5kaWZmIGlzID4g MCwgaW1wbHlpbmcgdGhhdCB0aGUgbmV3IHN0cmluZyB0YWtlcyB1cCBtb3JlCi0rCSBzY3JlZW4g cmVhbCBlc3RhdGUgdGhhbiB0aGUgb2xkLCBidXQgbGVuZGlmZiBpcyA8IDAsIG1lYW5pbmcgdGhh dCBpdAotKwkgdGFrZXMgZmV3ZXIgYnl0ZXMsIHdlIG5lZWQgdG8ganVzdCBvdXRwdXQgdGhlIGNo YXJhY3RlcnMgc3RhcnRpbmcKLSsJIGZyb20gdGhlIGZpcnN0IGRpZmZlcmVuY2UuICBUaGVzZSB3 aWxsIG92ZXJ3cml0ZSB3aGF0IGlzIG9uIHRoZQotKwkgZGlzcGxheSwgc28gdGhlcmUncyBubyBy ZWFzb24gdG8gZG8gYSBzbWFydCB1cGRhdGUuICBUaGlzIGNhbiByZWFsbHkKLSsJIG9ubHkgaGFw cGVuIGluIGEgbXVsdGlieXRlIGVudmlyb25tZW50LiAqLwotKyAgICAgIGlmIChsZW5kaWZmIDwg MCkKLSsJewotKwkgIF9ybF9vdXRwdXRfc29tZV9jaGFycyAobmZkLCB0ZW1wKTsKLSsJICBfcmxf bGFzdF9jX3BvcyArPSBfcmxfY29sX3dpZHRoIChuZmQsIDAsIHRlbXAsIDEpOwotKwkgIC8qIElm IG5mZCBiZWdpbnMgYmVmb3JlIGFueSBpbnZpc2libGUgY2hhcmFjdGVycyBpbiB0aGUgcHJvbXB0 LAotKwkgICAgIGFkanVzdCBfcmxfbGFzdF9jX3BvcyB0byBhY2NvdW50IGZvciB3cmFwX29mZnNl dCBhbmQgc2V0Ci0rCSAgICAgY3Bvc19hZGp1c3RlZCB0byBsZXQgdGhlIGNhbGxlciBrbm93LiAq LwotKwkgIGlmIChjdXJyZW50X2xpbmUgPT0gMCAmJiB3cmFwX29mZnNldCAmJiAoKG5mZCAtIG5l dykgPD0gcHJvbXB0X2xhc3RfaW52aXNpYmxlKSkKLSsJICAgIHsKLSsJICAgICAgX3JsX2xhc3Rf Y19wb3MgLT0gd3JhcF9vZmZzZXQ7Ci0rCSAgICAgIGNwb3NfYWRqdXN0ZWQgPSAxOwotKwkgICAg fQotKwkgIHJldHVybjsKLSsJfQotICAgICAgIC8qIFNvbWV0aW1lcyBpdCBpcyBjaGVhcGVyIHRv IHByaW50IHRoZSBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuCi0gCSB1c2UgdGhlIHRlcm1pbmFsJ3Mg Y2FwYWJpbGl0aWVzLiAgSWYgd2UncmUgZ3Jvd2luZyB0aGUgbnVtYmVyCi0gCSBvZiBsaW5lcywg bWFrZSBzdXJlIHdlIGFjdHVhbGx5IGNhdXNlIHRoZSBuZXcgbGluZSB0byB3cmFwCi0gCSBhcm91 bmQgb24gYXV0by13cmFwcGluZyB0ZXJtaW5hbHMuICovCi0tICAgICAgaWYgKF9ybF90ZXJtaW5h bF9jYW5faW5zZXJ0ICYmICgoMiAqIGNvbF90ZW1wKSA+PSBjb2xfbGVuZGlmZiB8fCBfcmxfdGVy bV9JQykgJiYgKCFfcmxfdGVybV9hdXRvd3JhcCB8fCAhZ2wpKQotKyAgICAgIGVsc2UgaWYgKF9y bF90ZXJtaW5hbF9jYW5faW5zZXJ0ICYmICgoMiAqIGNvbF90ZW1wKSA+PSBjb2xfbGVuZGlmZiB8 fCBfcmxfdGVybV9JQykgJiYgKCFfcmxfdGVybV9hdXRvd3JhcCB8fCAhZ2wpKQotIAl7Ci0gCSAg LyogSWYgbGVuZGlmZiA+IHByb21wdF92aXNpYmxlX2xlbmd0aCBhbmQgX3JsX2xhc3RfY19wb3Mg PT0gMCBhbmQKLSAJICAgICBfcmxfaG9yaXpvbnRhbF9zY3JvbGxfbW9kZSA9PSAxLCBpbnNlcnRp bmcgdGhlIGNoYXJhY3RlcnMgd2l0aAotIAkgICAgIF9ybF90ZXJtX0lDIG9yIF9ybF90ZXJtX2lj IHdpbGwgc2NyZXcgdXAgdGhlIHNjcmVlbiBiZWNhdXNlIG9mIHRoZQotIAkgICAgIGludmlzaWJs ZSBjaGFyYWN0ZXJzLiAgV2UgbmVlZCB0byBqdXN0IGRyYXcgdGhlbS4gKi8KLS0JICBpZiAoKm9s cyAmJiAoIV9ybF9ob3Jpem9udGFsX3Njcm9sbF9tb2RlIHx8IF9ybF9sYXN0X2NfcG9zID4gMCB8 fAotLQkJCWxlbmRpZmYgPD0gcHJvbXB0X3Zpc2libGVfbGVuZ3RoIHx8ICFjdXJyZW50X2ludmlz X2NoYXJzKSkKLSsJICAvKiBUaGUgc2FtZSB0aGluZyBoYXBwZW5zIGlmIHdlJ3JlIHRyeWluZyB0 byBkcmF3IGJlZm9yZSB0aGUgbGFzdAotKwkgICAgIGludmlzaWJsZSBjaGFyYWN0ZXIgaW4gdGhl IHByb21wdCBzdHJpbmcgb3Igd2UncmUgaW5jcmVhc2luZyB0aGUKLSsJICAgICBudW1iZXIgb2Yg aW52aXNpYmxlIGNoYXJhY3RlcnMgaW4gdGhlIGxpbmUgYW5kIHdlJ3JlIG5vdCBkcmF3aW5nCi0r CSAgICAgdGhlIGVudGlyZSBwcm9tcHQgc3RyaW5nLiAqLwotKwkgIGlmICgqb2xzICYmICgoX3Js X2hvcml6b250YWxfc2Nyb2xsX21vZGUgJiYKLSsJCQlfcmxfbGFzdF9jX3BvcyA9PSAwICYmCi0r CQkJbGVuZGlmZiA+IHByb21wdF92aXNpYmxlX2xlbmd0aCAmJgotKwkJCWN1cnJlbnRfaW52aXNf Y2hhcnMgPiAwKSA9PSAwKSAmJgotKwkJICAgICAgKCgoTUJfQ1VSX01BWCA+IDEgJiYgcmxfYnl0 ZV9vcmllbnRlZCA9PSAwKSAmJgotKwkJICAgICAgICBjdXJyZW50X2xpbmUgPT0gMCAmJiB3cmFw X29mZnNldCAmJgotKwkJICAgICAgICAoKG5mZCAtIG5ldykgPD0gcHJvbXB0X2xhc3RfaW52aXNp YmxlKSAmJgotKwkJICAgICAgICAoY29sX2xlbmRpZmYgPCBwcm9tcHRfdmlzaWJsZV9sZW5ndGgp KSA9PSAwKSAmJgotKwkJICAgICAgKHZpc2libGVfd3JhcF9vZmZzZXQgPj0gY3VycmVudF9pbnZp c19jaGFycykpCi0gCSAgICB7Ci0gCSAgICAgIGluc2VydF9zb21lX2NoYXJzIChuZmQsIGxlbmRp ZmYsIGNvbF9sZW5kaWZmKTsKLSAJICAgICAgX3JsX2xhc3RfY19wb3MgKz0gY29sX2xlbmRpZmY7 Ci0gCSAgICB9Ci0rI2lmIDAJCS8qIFhYWCAtIGZvciBub3cgKi8KLSsJICBlbHNlIGlmICgoTUJf Q1VSX01BWCA+IDEgJiYgcmxfYnl0ZV9vcmllbnRlZCA9PSAwKSAmJiBfcmxfbGFzdF9jX3BvcyA9 PSAwICYmIHdyYXBfb2Zmc2V0ICYmIChuZmQtbmV3KSA8PSBwcm9tcHRfbGFzdF9pbnZpc2libGUg JiYgY29sX2xlbmRpZmYgPCBwcm9tcHRfdmlzaWJsZV9sZW5ndGggJiYgdmlzaWJsZV93cmFwX29m ZnNldCA+PSBjdXJyZW50X2ludmlzX2NoYXJzKQotKwkgICAgewotKwkgICAgICBfcmxfb3V0cHV0 X3NvbWVfY2hhcnMgKG5mZCwgbGVuZGlmZik7Ci0rCSAgICAgIF9ybF9sYXN0X2NfcG9zICs9IGNv bF9sZW5kaWZmOwotKwkgICAgfQotKyNlbmRpZgotIAkgIGVsc2UgaWYgKChNQl9DVVJfTUFYID09 IDEgfHwgcmxfYnl0ZV9vcmllbnRlZCAhPSAwKSAmJiAqb2xzID09IDAgJiYgbGVuZGlmZiA+IDAp Ci0gCSAgICB7Ci0gCSAgICAgIC8qIEF0IHRoZSBlbmQgb2YgYSBsaW5lIHRoZSBjaGFyYWN0ZXJz IGRvIG5vdCBoYXZlIHRvCi1AQCAtMTQ5OCwxMSArMTY2MywxNiBAQCB1cGRhdGVfbGluZSAob2xk LCBuZXcsIGN1cnJlbnRfbGluZSwgb21hCi0gCSAgICB9Ci0gCSAgZWxzZQotIAkgICAgewotLQkg ICAgICAvKiBXZSBoYXZlIGhvcml6b250YWwgc2Nyb2xsaW5nIGFuZCB3ZSBhcmUgbm90IGluc2Vy dGluZyBhdAotLQkJIHRoZSBlbmQuICBXZSBoYXZlIGludmlzaWJsZSBjaGFyYWN0ZXJzIGluIHRo aXMgbGluZS4gIFRoaXMKLS0JCSBpcyBhIGR1bWIgdXBkYXRlLiAqLwotIAkgICAgICBfcmxfb3V0 cHV0X3NvbWVfY2hhcnMgKG5mZCwgdGVtcCk7Ci0gCSAgICAgIF9ybF9sYXN0X2NfcG9zICs9IGNv bF90ZW1wOwotKwkgICAgICAvKiBJZiBuZmQgYmVnaW5zIGJlZm9yZSB0aGUgbGFzdCBpbnZpc2li bGUgY2hhcmFjdGVyIGluIHRoZQotKwkJIHByb21wdCwgYWRqdXN0IF9ybF9sYXN0X2NfcG9zIHRv IGFjY291bnQgZm9yIHdyYXBfb2Zmc2V0Ci0rCQkgYW5kIHNldCBjcG9zX2FkanVzdGVkIHRvIGxl dCB0aGUgY2FsbGVyIGtub3cuICovCi0rCSAgICAgIGlmICgoTUJfQ1VSX01BWCA+IDEgJiYgcmxf Ynl0ZV9vcmllbnRlZCA9PSAwKSAmJiBjdXJyZW50X2xpbmUgPT0gMCAmJiB3cmFwX29mZnNldCAm JiAoKG5mZCAtIG5ldykgPD0gcHJvbXB0X2xhc3RfaW52aXNpYmxlKSkKLSsJCXsKLSsJCSAgX3Js X2xhc3RfY19wb3MgLT0gd3JhcF9vZmZzZXQ7Ci0rCQkgIGNwb3NfYWRqdXN0ZWQgPSAxOwotKwkJ fQotIAkgICAgICByZXR1cm47Ci0gCSAgICB9Ci0gCSAgLyogQ29weSAobmV3KSBjaGFycyB0byBz Y3JlZW4gZnJvbSBmaXJzdCBkaWZmIHRvIGxhc3QgbWF0Y2guICovCi1AQCAtMTUxMCwxNSArMTY4 MCwyMyBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21hCi0gCSAgaWYg KCh0ZW1wIC0gbGVuZGlmZikgPiAwKQotIAkgICAgewotIAkgICAgICBfcmxfb3V0cHV0X3NvbWVf Y2hhcnMgKG5mZCArIGxlbmRpZmYsIHRlbXAgLSBsZW5kaWZmKTsKLS0jaWYgMQotIAkgICAgIC8q IFhYWCAtLSB0aGlzIGJlYXJzIGNsb3NlciBpbnNwZWN0aW9uLiAgRml4ZXMgYSByZWRpc3BsYXkg YnVnCi0gCQlyZXBvcnRlZCBhZ2FpbnN0IGJhc2gtMy4wLWFscGhhIGJ5IEFuZHJlYXMgU2Nod2Fi IGludm9sdmluZwotIAkJbXVsdGlieXRlIGNoYXJhY3RlcnMgYW5kIHByb21wdCBzdHJpbmdzIHdp dGggaW52aXNpYmxlCi0gCQljaGFyYWN0ZXJzLCBidXQgd2FzIHByZXZpb3VzbHkgZGlzYWJsZWQu ICovCi0tCSAgICAgIF9ybF9sYXN0X2NfcG9zICs9IF9ybF9jb2xfd2lkdGggKG5mZCtsZW5kaWZm LCAwLCB0ZW1wLWNvbF9sZW5kaWZmKTsKLS0jZWxzZQotLQkgICAgICBfcmxfbGFzdF9jX3BvcyAr PSBfcmxfY29sX3dpZHRoIChuZmQrbGVuZGlmZiwgMCwgdGVtcC1sZW5kaWZmKTsKLS0jZW5kaWYK LSsJICAgICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKLSsJ CXR3aWR0aCA9IF9ybF9jb2xfd2lkdGggKG5mZCtsZW5kaWZmLCAwLCB0ZW1wLWNvbF9sZW5kaWZm LCAxKTsKLSsJICAgICAgZWxzZQotKwkJdHdpZHRoID0gdGVtcCAtIGxlbmRpZmY7Ci0rCSAgICAg IF9ybF9sYXN0X2NfcG9zICs9IHR3aWR0aDsKLSsJICAgICAgLyogSWYgbmZkIGJlZ2lucyBiZWZv cmUgdGhlIGxhc3QgaW52aXNpYmxlIGNoYXJhY3RlciBpbiB0aGUKLSsJCSBwcm9tcHQsIGFkanVz dCBfcmxfbGFzdF9jX3BvcyB0byBhY2NvdW50IGZvciB3cmFwX29mZnNldAotKwkJIGFuZCBzZXQg Y3Bvc19hZGp1c3RlZCB0byBsZXQgdGhlIGNhbGxlciBrbm93LiAqLwotKwkgICAgICBpZiAoKE1C X0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkgJiYgY3VycmVudF9saW5lID09 IDAgJiYgd3JhcF9vZmZzZXQgJiYgKChuZmQgLSBuZXcpIDw9IHByb21wdF9sYXN0X2ludmlzaWJs ZSkpCi0rCQl7Ci0rCQkgIF9ybF9sYXN0X2NfcG9zIC09IHdyYXBfb2Zmc2V0OwotKwkJICBjcG9z X2FkanVzdGVkID0gMTsKLSsJCX0KLSAJICAgIH0KLSAJfQotICAgICAgIGVsc2UKLUBAIC0xNTMw LDYgKzE3MDgsMTQgQEAgdXBkYXRlX2xpbmUgKG9sZCwgbmV3LCBjdXJyZW50X2xpbmUsIG9tYQot IAkgICAgIGNoYXIgaW4gdGhlIGN1cnJlbnQgbGluZSAod2hpY2ggaW1wbGllcyB3ZSBqdXN0IG91 dHB1dCBzb21lIGludmlzaWJsZQotIAkgICAgIGNoYXJhY3RlcnMpIHdlIG5lZWQgdG8gYWRqdXN0 IF9ybF9sYXN0X2NfcG9zLCBzaW5jZSBpdCByZXByZXNlbnRzCi0gCSAgICAgYSBwaHlzaWNhbCBj aGFyYWN0ZXIgcG9zaXRpb24uICovCi0rCSAgaWYgKChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRl X29yaWVudGVkID09IDApICYmCi0rCQljdXJyZW50X2xpbmUgPT0gcHJvbXB0X2xhc3Rfc2NyZWVu X2xpbmUgJiYgd3JhcF9vZmZzZXQgJiYKLSsJCXdyYXBfb2Zmc2V0ICE9IHByb21wdF9pbnZpc19j aGFyc19maXJzdF9saW5lICYmCi0rCQkoKG5mZC1uZXcpIDwgKHByb21wdF9sYXN0X2ludmlzaWJs ZS0oY3VycmVudF9saW5lKl9ybF9zY3JlZW53aWR0aCkpKSkKLSsJICAgIHsKLSsJICAgICAgX3Js X2xhc3RfY19wb3MgLT0gd3JhcF9vZmZzZXQgLSBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGlu ZTsKLSsJICAgICAgY3Bvc19hZGp1c3RlZCA9IDE7Ci0rCSAgICB9Ci0gCX0KLSAgICAgfQotICAg ZWxzZQkJCQkvKiBEZWxldGUgY2hhcmFjdGVycyBmcm9tIGxpbmUuICovCi1AQCAtMTU1MSw4ICsx NzM3LDIyIEBAIHVwZGF0ZV9saW5lIChvbGQsIG5ldywgY3VycmVudF9saW5lLCBvbWEKLSAJICB0 ZW1wID0gbmxzIC0gbmZkOwotIAkgIGlmICh0ZW1wID4gMCkKLSAJICAgIHsKLSsJICAgICAgLyog SWYgbmZkIGJlZ2lucyBhdCB0aGUgcHJvbXB0LCBvciBiZWZvcmUgdGhlIGludmlzaWJsZQotKwkJ IGNoYXJhY3RlcnMgaW4gdGhlIHByb21wdCwgd2UgbmVlZCB0byBhZGp1c3QgX3JsX2xhc3RfY19w b3MKLSsJCSBpbiBhIG11bHRpYnl0ZSBsb2NhbGUgdG8gYWNjb3VudCBmb3IgdGhlIHdyYXAgb2Zm c2V0IGFuZAotKwkJIHNldCBjcG9zX2FkanVzdGVkIGFjY29yZGluZ2x5LiAqLwotIAkgICAgICBf cmxfb3V0cHV0X3NvbWVfY2hhcnMgKG5mZCwgdGVtcCk7Ci0tCSAgICAgIF9ybF9sYXN0X2NfcG9z ICs9IF9ybF9jb2xfd2lkdGggKG5mZCwgMCwgdGVtcCk7OwotKwkgICAgICBpZiAoTUJfQ1VSX01B WCA+IDEgJiYgcmxfYnl0ZV9vcmllbnRlZCA9PSAwKQotKwkJewotKwkJICBfcmxfbGFzdF9jX3Bv cyArPSBfcmxfY29sX3dpZHRoIChuZmQsIDAsIHRlbXAsIDEpOwotKwkJICBpZiAoY3VycmVudF9s aW5lID09IDAgJiYgd3JhcF9vZmZzZXQgJiYgICgobmZkIC0gbmV3KSA8PSBwcm9tcHRfbGFzdF9p bnZpc2libGUpKQotKwkJICAgIHsKLSsJCSAgICAgIF9ybF9sYXN0X2NfcG9zIC09IHdyYXBfb2Zm c2V0OwotKwkJICAgICAgY3Bvc19hZGp1c3RlZCA9IDE7Ci0rCQkgICAgfQotKwkJfQotKwkgICAg ICBlbHNlCi0rCQlfcmxfbGFzdF9jX3BvcyArPSB0ZW1wOwotIAkgICAgfQotIAl9Ci0gICAgICAg LyogT3RoZXJ3aXNlLCBwcmludCBvdmVyIHRoZSBleGlzdGluZyBtYXRlcmlhbC4gKi8KLUBAIC0x NTYwLDE2ICsxNzYwLDM3IEBAIHVwZGF0ZV9saW5lIChvbGQsIG5ldywgY3VycmVudF9saW5lLCBv bWEKLSAJewotIAkgIGlmICh0ZW1wID4gMCkKLSAJICAgIHsKLSsJICAgICAgLyogSWYgbmZkIGJl Z2lucyBhdCB0aGUgcHJvbXB0LCBvciBiZWZvcmUgdGhlIGludmlzaWJsZQotKwkJIGNoYXJhY3Rl cnMgaW4gdGhlIHByb21wdCwgd2UgbmVlZCB0byBhZGp1c3QgX3JsX2xhc3RfY19wb3MKLSsJCSBp biBhIG11bHRpYnl0ZSBsb2NhbGUgdG8gYWNjb3VudCBmb3IgdGhlIHdyYXAgb2Zmc2V0IGFuZAot KwkJIHNldCBjcG9zX2FkanVzdGVkIGFjY29yZGluZ2x5LiAqLwotIAkgICAgICBfcmxfb3V0cHV0 X3NvbWVfY2hhcnMgKG5mZCwgdGVtcCk7Ci0gCSAgICAgIF9ybF9sYXN0X2NfcG9zICs9IGNvbF90 ZW1wOwkJLyogWFhYICovCi0rCSAgICAgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29y aWVudGVkID09IDApCi0rCQl7Ci0rCQkgIGlmIChjdXJyZW50X2xpbmUgPT0gMCAmJiB3cmFwX29m ZnNldCAmJiAgKChuZmQgLSBuZXcpIDw9IHByb21wdF9sYXN0X2ludmlzaWJsZSkpCi0rCQkgICAg ewotKwkJICAgICAgX3JsX2xhc3RfY19wb3MgLT0gd3JhcF9vZmZzZXQ7Ci0rCQkgICAgICBjcG9z X2FkanVzdGVkID0gMTsKLSsJCSAgICB9Ci0rCQl9Ci0gCSAgICB9Ci0gCSAgbGVuZGlmZiA9IChv ZSAtIG9sZCkgLSAobmUgLSBuZXcpOwotIAkgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRl X29yaWVudGVkID09IDApCi0tCSAgICBjb2xfbGVuZGlmZiA9IF9ybF9jb2xfd2lkdGggKG9sZCwg MCwgb2UgLSBvbGQpIC0gX3JsX2NvbF93aWR0aCAobmV3LCAwLCBuZSAtIG5ldyk7Ci0rCSAgICBj b2xfbGVuZGlmZiA9IF9ybF9jb2xfd2lkdGggKG9sZCwgMCwgb2UgLSBvbGQsIDEpIC0gX3JsX2Nv bF93aWR0aCAobmV3LCAwLCBuZSAtIG5ldywgMSk7Ci0gCSAgZWxzZQotIAkgICAgY29sX2xlbmRp ZmYgPSBsZW5kaWZmOwotIAotKyNpZiAwCi0gCSAgaWYgKGNvbF9sZW5kaWZmKQotKyNlbHNlCi0r CSAgLyogSWYgd2UndmUgYWxyZWFkeSBwcmludGVkIG92ZXIgdGhlIGVudGlyZSB3aWR0aCBvZiB0 aGUgc2NyZWVuLAotKwkgICAgIGluY2x1ZGluZyB0aGUgb2xkIG1hdGVyaWFsLCB0aGVuIGNvbF9s ZW5kaWZmIGRvZXNuJ3QgbWF0dGVyIGFuZAotKwkgICAgIHNwYWNlX3RvX2VvbCB3aWxsIGluc2Vy dCB0b28gbWFueSBzcGFjZXMuICBYWFggLSBtYXliZSB3ZSBzaG91bGQKLSsJICAgICBhZGp1c3Qg Y29sX2xlbmRpZmYgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBfcmxfbGFzdF9jX3Bv cwotKwkgICAgIGFuZCBfcmxfc2NyZWVud2lkdGggKi8KLSsJICBpZiAoY29sX2xlbmRpZmYgJiYg KChNQl9DVVJfTUFYID09IDEgfHwgcmxfYnl0ZV9vcmllbnRlZCkgfHwgKF9ybF9sYXN0X2NfcG9z IDwgX3JsX3NjcmVlbndpZHRoKSkpCi0rI2VuZGlmCi0gCSAgICB7CSAgCi0gCSAgICAgIGlmIChf cmxfdGVybV9hdXRvd3JhcCAmJiBjdXJyZW50X2xpbmUgPCBpbnZfYm90bGluKQotIAkJc3BhY2Vf dG9fZW9sIChjb2xfbGVuZGlmZik7Ci1AQCAtMTYyMyw3ICsxODQ0LDcgQEAgcmxfb25fbmV3X2xp bmVfd2l0aF9wcm9tcHQgKCkKLSAKLSAgIGwgPSBzdHJsZW4gKHByb21wdF9sYXN0X2xpbmUpOwot ICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKLS0gICAgX3Js X2xhc3RfY19wb3MgPSBfcmxfY29sX3dpZHRoIChwcm9tcHRfbGFzdF9saW5lLCAwLCBsKTsJLyog WFhYICovCi0rICAgIF9ybF9sYXN0X2NfcG9zID0gX3JsX2NvbF93aWR0aCAocHJvbXB0X2xhc3Rf bGluZSwgMCwgbCwgMSk7CS8qIFhYWCAqLwotICAgZWxzZQotICAgICBfcmxfbGFzdF9jX3BvcyA9 IGw7Ci0gCi1AQCAtMTY1OCwxMCArMTg3OSwxMSBAQCBybF9vbl9uZXdfbGluZV93aXRoX3Byb21w dCAoKQotIGludAotIHJsX2ZvcmNlZF91cGRhdGVfZGlzcGxheSAoKQotIHsKLSsgIHJlZ2lzdGVy IGNoYXIgKnRlbXA7Ci0rCi0gICBpZiAodmlzaWJsZV9saW5lKQotICAgICB7Ci0tICAgICAgcmVn aXN0ZXIgY2hhciAqdGVtcCA9IHZpc2libGVfbGluZTsKLS0KLSsgICAgICB0ZW1wID0gdmlzaWJs ZV9saW5lOwotICAgICAgIHdoaWxlICgqdGVtcCkKLSAJKnRlbXArKyA9ICdcMCc7Ci0gICAgIH0K LUBAIC0xNjg0LDkgKzE5MDYsMTQgQEAgX3JsX21vdmVfY3Vyc29yX3JlbGF0aXZlIChuZXcsIGRh dGEpCi0gICByZWdpc3RlciBpbnQgaTsKLSAgIGludCB3b2ZmOwkJCS8qIG51bWJlciBvZiBpbnZp c2libGUgY2hhcnMgb24gY3VycmVudCBsaW5lICovCi0gICBpbnQgY3BvcywgZHBvczsJCS8qIGN1 cnJlbnQgYW5kIGRlc2lyZWQgY3Vyc29yIHBvc2l0aW9ucyAqLwotKyAgaW50IGFkanVzdDsKLSAK LS0gIHdvZmYgPSBXX09GRlNFVCAoX3JsX2xhc3Rfdl9wb3MsIHdyYXBfb2Zmc2V0KTsKLSsgIHdv ZmYgPSBXUkFQX09GRlNFVCAoX3JsX2xhc3Rfdl9wb3MsIHdyYXBfb2Zmc2V0KTsKLSAgIGNwb3Mg PSBfcmxfbGFzdF9jX3BvczsKLSsKLSsgIGlmIChjcG9zID09IDAgJiYgY3BvcyA9PSBuZXcpCi0r ICAgIHJldHVybjsKLSsKLSAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKLSAgIC8qIElm IHdlIGhhdmUgbXVsdGlieXRlIGNoYXJhY3RlcnMsIE5FVyBpcyBpbmRleGVkIGJ5IHRoZSBidWZm ZXIgcG9pbnQgaW4KLSAgICAgIGEgbXVsdGlieXRlIHN0cmluZywgYnV0IF9ybF9sYXN0X2NfcG9z IGlzIHRoZSBkaXNwbGF5IHBvc2l0aW9uLiAgSW4KLUBAIC0xNjk1LDkgKzE5MjIsNDIgQEAgX3Js X21vdmVfY3Vyc29yX3JlbGF0aXZlIChuZXcsIGRhdGEpCi0gICAgICBhcyBsb25nIGFzIHdlIGFy ZSBwYXN0IHRoZW0gYW5kIHRoZXkgYXJlIGNvdW50ZWQgYnkgX3JsX2NvbF93aWR0aC4gKi8KLSAg IGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCi0gICAgIHsKLS0g ICAgICBkcG9zID0gX3JsX2NvbF93aWR0aCAoZGF0YSwgMCwgbmV3KTsKLS0gICAgICBpZiAoZHBv cyA+IHdvZmYpCi0tCWRwb3MgLT0gd29mZjsKLSsgICAgICBhZGp1c3QgPSAxOwotKyAgICAgIC8q IFRyeSB0byBzaG9ydC1jaXJjdWl0IGNvbW1vbiBjYXNlcyBhbmQgZWxpbWluYXRlIGEgYnVuY2gg b2YgbXVsdGlieXRlCi0rCSBjaGFyYWN0ZXIgZnVuY3Rpb24gY2FsbHMuICovCi0rICAgICAgLyog MS4gIHByb21wdCBzdHJpbmcgKi8KLSsgICAgICBpZiAobmV3ID09IGxvY2FsX3Byb21wdF9sZW4g JiYgbWVtY21wIChkYXRhLCBsb2NhbF9wcm9tcHQsIG5ldykgPT0gMCkKLSsJewotKwkgIGRwb3Mg PSBwcm9tcHRfcGh5c2ljYWxfY2hhcnM7Ci0rCSAgY3Bvc19hZGp1c3RlZCA9IDE7Ci0rCSAgYWRq dXN0ID0gMDsKLSsJfQotKyAgICAgIC8qIDIuICBwcm9tcHRfc3RyaW5nICsgbGluZSBjb250ZW50 cyAqLwotKyAgICAgIGVsc2UgaWYgKG5ldyA+IGxvY2FsX3Byb21wdF9sZW4gJiYgbG9jYWxfcHJv bXB0ICYmIG1lbWNtcCAoZGF0YSwgbG9jYWxfcHJvbXB0LCBsb2NhbF9wcm9tcHRfbGVuKSA9PSAw KQotKwl7Ci0rCSAgZHBvcyA9IHByb21wdF9waHlzaWNhbF9jaGFycyArIF9ybF9jb2xfd2lkdGgg KGRhdGEsIGxvY2FsX3Byb21wdF9sZW4sIG5ldywgMSk7Ci0rCSAgY3Bvc19hZGp1c3RlZCA9IDE7 Ci0rCSAgYWRqdXN0ID0gMDsKLSsJfQotKyAgICAgIGVsc2UKLSsgICAgICAgIGRwb3MgPSBfcmxf Y29sX3dpZHRoIChkYXRhLCAwLCBuZXcsIDEpOwotKwotKyAgICAgIC8qIFVzZSBORVcgd2hlbiBj b21wYXJpbmcgYWdhaW5zdCB0aGUgbGFzdCBpbnZpc2libGUgY2hhcmFjdGVyIGluIHRoZQotKwkg cHJvbXB0IHN0cmluZywgc2luY2UgdGhleSdyZSBib3RoIGJ1ZmZlciBpbmRpY2VzIGFuZCBEUE9T IGlzIGEKLSsJIGRlc2lyZWQgZGlzcGxheSBwb3NpdGlvbi4gKi8KLSsgICAgICBpZiAoYWRqdXN0 ICYmICgobmV3ID4gcHJvbXB0X2xhc3RfaW52aXNpYmxlKSB8fAkJLyogWFhYIC0gZG9uJ3QgdXNl IHdvZmYgaGVyZSAqLwotKwkgIChwcm9tcHRfcGh5c2ljYWxfY2hhcnMgPj0gX3JsX3NjcmVlbndp ZHRoICYmCi0rCSAgIF9ybF9sYXN0X3ZfcG9zID09IHByb21wdF9sYXN0X3NjcmVlbl9saW5lICYm Ci0rCSAgIHdyYXBfb2Zmc2V0ID49IHdvZmYgJiYgZHBvcyA+PSB3b2ZmICYmCi0rCSAgIG5ldyA+ IChwcm9tcHRfbGFzdF9pbnZpc2libGUtKF9ybF9zY3JlZW53aWR0aCpfcmxfbGFzdF92X3Bvcykt d3JhcF9vZmZzZXQpKSkpCi0rCSAgIC8qIFhYWCBsYXN0IGNvbXBhcmlzb24gbWlnaHQgbmVlZCB0 byBiZSA+PSAqLwotKwl7Ci0rCSAgZHBvcyAtPSB3b2ZmOwotKwkgIC8qIFNpbmNlIHRoaXMgd2ls bCBiZSBhc3NpZ25lZCB0byBfcmxfbGFzdF9jX3BvcyBhdCB0aGUgZW5kIChtb3JlCi0rCSAgICAg cHJlY2lzZWx5LCBfcmxfbGFzdF9jX3BvcyA9PSBkcG9zIHdoZW4gdGhpcyBmdW5jdGlvbiByZXR1 cm5zKSwKLSsJICAgICBsZXQgdGhlIGNhbGxlciBrbm93LiAqLwotKwkgIGNwb3NfYWRqdXN0ZWQg PSAxOwotKwl9Ci0gICAgIH0KLSAgIGVsc2UKLSAjZW5kaWYKLUBAIC0xNzE2LDcgKzE5NzYsNyBA QCBfcmxfbW92ZV9jdXJzb3JfcmVsYXRpdmUgKG5ldywgZGF0YSkKLSAgIGVsc2UKLSAjZW5kaWYK LSAgIGkgPSBfcmxfbGFzdF9jX3BvcyAtIHdvZmY7Ci0tICBpZiAobmV3ID09IDAgfHwgQ1JfRkFT VEVSIChuZXcsIF9ybF9sYXN0X2NfcG9zKSB8fAotKyAgaWYgKGRwb3MgPT0gMCB8fCBDUl9GQVNU RVIgKGRwb3MsIF9ybF9sYXN0X2NfcG9zKSB8fAotICAgICAgIChfcmxfdGVybV9hdXRvd3JhcCAm JiBpID09IF9ybF9zY3JlZW53aWR0aCkpCi0gICAgIHsKLSAjaWYgZGVmaW5lZCAoX19NU0RPU19f KQotQEAgLTE3MzgsMTkgKzE5OTgsMjcgQEAgX3JsX21vdmVfY3Vyc29yX3JlbGF0aXZlIChuZXcs IGRhdGEpCi0gCSBzZXF1ZW5jZSB0ZWxsaW5nIHRoZSB0ZXJtaW5hbCB0byBtb3ZlIGZvcndhcmQg b25lIGNoYXJhY3Rlci4KLSAJIFRoYXQga2luZCBvZiBjb250cm9sIGlzIGZvciBwZW9wbGUgd2hv IGRvbid0IGtub3cgd2hhdCB0aGUKLSAJIGRhdGEgaXMgdW5kZXJuZWF0aCB0aGUgY3Vyc29yLiAq LwotLSNpZiBkZWZpbmVkIChIQUNLX1RFUk1DQVBfTU9USU9OKQotLSAgICAgIGlmIChfcmxfdGVy bV9mb3J3YXJkX2NoYXIpCi0tCXsKLS0JICBmb3IgKGkgPSBjcG9zOyBpIDwgZHBvczsgaSsrKQot LQkgICAgdHB1dHMgKF9ybF90ZXJtX2ZvcndhcmRfY2hhciwgMSwgX3JsX291dHB1dF9jaGFyYWN0 ZXJfZnVuY3Rpb24pOwotLQl9Ci0tICAgICAgZWxzZQotLSNlbmRpZiAvKiBIQUNLX1RFUk1DQVBf TU9USU9OICovCi0rCi0rICAgICAgLyogSG93ZXZlciwgd2UgbmVlZCBhIGhhbmRsZSBvbiB3aGVy ZSB0aGUgY3VycmVudCBkaXNwbGF5IHBvc2l0aW9uIGlzCi0rCSBpbiB0aGUgYnVmZmVyIGZvciB0 aGUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIGNvbW1lbnQgdG8gYmUgdHJ1ZS4KLSsJIEluIG11bHRp Ynl0ZSBsb2NhbGVzLCB3ZSBkb24ndCBjdXJyZW50bHkgaGF2ZSB0aGF0IGluZm8gYXZhaWxhYmxl LgotKwkgV2l0aG91dCBpdCwgd2UgZG9uJ3Qga25vdyB3aGVyZSB0aGUgZGF0YSB3ZSBoYXZlIHRv IGRpc3BsYXkgYmVnaW5zCi0rCSBpbiB0aGUgYnVmZmVyIGFuZCB3ZSBoYXZlIHRvIGdvIGJhY2sg dG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc2NyZWVuCi0rCSBsaW5lLiAgSW4gdGhpcyBjYXNlLCB3 ZSBjYW4gdXNlIHRoZSB0ZXJtaW5hbCBzZXF1ZW5jZSB0byBtb3ZlIGZvcndhcmQKLSsJIGlmIGl0 J3MgYXZhaWxhYmxlLiAqLwotICAgICAgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29y aWVudGVkID09IDApCi0gCXsKLS0JICB0cHV0cyAoX3JsX3Rlcm1fY3IsIDEsIF9ybF9vdXRwdXRf Y2hhcmFjdGVyX2Z1bmN0aW9uKTsKLS0JICBmb3IgKGkgPSAwOyBpIDwgbmV3OyBpKyspCi0tCSAg ICBwdXRjIChkYXRhW2ldLCBybF9vdXRzdHJlYW0pOwotKwkgIGlmIChfcmxfdGVybV9mb3J3YXJk X2NoYXIpCi0rCSAgICB7Ci0rCSAgICAgIGZvciAoaSA9IGNwb3M7IGkgPCBkcG9zOyBpKyspCi0r CSAgICAgICAgdHB1dHMgKF9ybF90ZXJtX2ZvcndhcmRfY2hhciwgMSwgX3JsX291dHB1dF9jaGFy YWN0ZXJfZnVuY3Rpb24pOwotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgdHB1 dHMgKF9ybF90ZXJtX2NyLCAxLCBfcmxfb3V0cHV0X2NoYXJhY3Rlcl9mdW5jdGlvbik7Ci0rCSAg ICAgIGZvciAoaSA9IDA7IGkgPCBuZXc7IGkrKykKLSsJCXB1dGMgKGRhdGFbaV0sIHJsX291dHN0 cmVhbSk7Ci0rCSAgICB9Ci0gCX0KLSAgICAgICBlbHNlCi0gCWZvciAoaSA9IGNwb3M7IGkgPCBu ZXc7IGkrKykKLUBAIC0xOTA4LDYgKzIxNzYsNyBAQCBybF9tZXNzYWdlICh2YV9hbGlzdCkKLSAJ CQkJCSAmcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUsCi0gCQkJCQkgJnByb21wdF9waHlz aWNhbF9jaGFycyk7Ci0gICBsb2NhbF9wcm9tcHRfcHJlZml4ID0gKGNoYXIgKilOVUxMOwotKyAg bG9jYWxfcHJvbXB0X2xlbiA9IGxvY2FsX3Byb21wdCA/IHN0cmxlbiAobG9jYWxfcHJvbXB0KSA6 IDA7Ci0gICAoKnJsX3JlZGlzcGxheV9mdW5jdGlvbikgKCk7Ci0gCi0gICByZXR1cm4gMDsKLUBA IC0xOTMxLDYgKzIyMDAsNyBAQCBybF9tZXNzYWdlIChmb3JtYXQsIGFyZzEsIGFyZzIpCi0gCQkJ CQkgJnByb21wdF9pbnZpc19jaGFyc19maXJzdF9saW5lLAotIAkJCQkJICZwcm9tcHRfcGh5c2lj YWxfY2hhcnMpOwotICAgbG9jYWxfcHJvbXB0X3ByZWZpeCA9IChjaGFyICopTlVMTDsKLSsgIGxv Y2FsX3Byb21wdF9sZW4gPSBsb2NhbF9wcm9tcHQgPyBzdHJsZW4gKGxvY2FsX3Byb21wdCkgOiAw OwotICAgKCpybF9yZWRpc3BsYXlfZnVuY3Rpb24pICgpOwotICAgICAgIAotICAgcmV0dXJuIDA7 Ci1AQCAtMTk2NywxMiArMjIzNywxNCBAQCBybF9zYXZlX3Byb21wdCAoKQotICAgc2F2ZWRfbG9j YWxfcHJvbXB0ID0gbG9jYWxfcHJvbXB0OwotICAgc2F2ZWRfbG9jYWxfcHJlZml4ID0gbG9jYWxf cHJvbXB0X3ByZWZpeDsKLSAgIHNhdmVkX3ByZWZpeF9sZW5ndGggPSBwcm9tcHRfcHJlZml4X2xl bmd0aDsKLSsgIHNhdmVkX2xvY2FsX2xlbmd0aCA9IGxvY2FsX3Byb21wdF9sZW47Ci0gICBzYXZl ZF9sYXN0X2ludmlzaWJsZSA9IHByb21wdF9sYXN0X2ludmlzaWJsZTsKLSAgIHNhdmVkX3Zpc2li bGVfbGVuZ3RoID0gcHJvbXB0X3Zpc2libGVfbGVuZ3RoOwotICAgc2F2ZWRfaW52aXNfY2hhcnNf Zmlyc3RfbGluZSA9IHByb21wdF9pbnZpc19jaGFyc19maXJzdF9saW5lOwotICAgc2F2ZWRfcGh5 c2ljYWxfY2hhcnMgPSBwcm9tcHRfcGh5c2ljYWxfY2hhcnM7Ci0gCi0gICBsb2NhbF9wcm9tcHQg PSBsb2NhbF9wcm9tcHRfcHJlZml4ID0gKGNoYXIgKikwOwotKyAgbG9jYWxfcHJvbXB0X2xlbiA9 IDA7Ci0gICBwcm9tcHRfbGFzdF9pbnZpc2libGUgPSBwcm9tcHRfdmlzaWJsZV9sZW5ndGggPSBw cm9tcHRfcHJlZml4X2xlbmd0aCA9IDA7Ci0gICBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGlu ZSA9IHByb21wdF9waHlzaWNhbF9jaGFycyA9IDA7Ci0gfQotQEAgLTE5ODUsNiArMjI1Nyw3IEBA IHJsX3Jlc3RvcmVfcHJvbXB0ICgpCi0gCi0gICBsb2NhbF9wcm9tcHQgPSBzYXZlZF9sb2NhbF9w cm9tcHQ7Ci0gICBsb2NhbF9wcm9tcHRfcHJlZml4ID0gc2F2ZWRfbG9jYWxfcHJlZml4OwotKyAg bG9jYWxfcHJvbXB0X2xlbiA9IHNhdmVkX2xvY2FsX2xlbmd0aDsKLSAgIHByb21wdF9wcmVmaXhf bGVuZ3RoID0gc2F2ZWRfcHJlZml4X2xlbmd0aDsKLSAgIHByb21wdF9sYXN0X2ludmlzaWJsZSA9 IHNhdmVkX2xhc3RfaW52aXNpYmxlOwotICAgcHJvbXB0X3Zpc2libGVfbGVuZ3RoID0gc2F2ZWRf dmlzaWJsZV9sZW5ndGg7Ci1AQCAtMTk5Myw2ICsyMjY2LDcgQEAgcmxfcmVzdG9yZV9wcm9tcHQg KCkKLSAKLSAgIC8qIGNhbiB0ZXN0IHNhdmVkX2xvY2FsX3Byb21wdCB0byBzZWUgaWYgcHJvbXB0 IGluZm8gaGFzIGJlZW4gc2F2ZWQuICovCi0gICBzYXZlZF9sb2NhbF9wcm9tcHQgPSBzYXZlZF9s b2NhbF9wcmVmaXggPSAoY2hhciAqKTA7Ci0rICBzYXZlZF9sb2NhbF9sZW5ndGggPSAwOwotICAg c2F2ZWRfbGFzdF9pbnZpc2libGUgPSBzYXZlZF92aXNpYmxlX2xlbmd0aCA9IHNhdmVkX3ByZWZp eF9sZW5ndGggPSAwOwotICAgc2F2ZWRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSA9IHNhdmVkX3Bo eXNpY2FsX2NoYXJzID0gMDsKLSB9Ci1AQCAtMjEwNiw3ICsyMzgwLDcgQEAgaW5zZXJ0X3NvbWVf Y2hhcnMgKHN0cmluZywgY291bnQsIGNvbCkKLSAgIC8qIERFQlVHR0lORyAqLwotICAgaWYgKE1C X0NVUl9NQVggPT0gMSB8fCBybF9ieXRlX29yaWVudGVkKQotICAgICBpZiAoY291bnQgIT0gY29s KQotLSAgICAgIGZwcmludGYoc3RkZXJyLCAicmVhZGxpbmU6IGRlYnVnOiBpbnNlcnRfc29tZV9j aGFyczogY291bnQgKCVkKSAhPSBjb2wgKCVkKVxuIiwgY291bnQsIGNvbCk7Ci0rICAgICAgX3Js X3R0eW1zZyAoImRlYnVnOiBpbnNlcnRfc29tZV9jaGFyczogY291bnQgKCVkKSAhPSBjb2wgKCVk KSIsIGNvdW50LCBjb2wpOwotIAotICAgLyogSWYgSUMgaXMgZGVmaW5lZCwgdGhlbiB3ZSBkbyBu b3QgaGF2ZSB0byAiZW50ZXIiIGluc2VydCBtb2RlLiAqLwotICAgaWYgKF9ybF90ZXJtX0lDKQot QEAgLTIxODksNyArMjQ2Myw4IEBAIF9ybF91cGRhdGVfZmluYWwgKCkKLSAgICAgICBjaGFyICps YXN0X2xpbmU7Ci0gCi0gICAgICAgbGFzdF9saW5lID0gJnZpc2libGVfbGluZVt2aXNfbGJyZWFr c1tfcmxfdmlzX2JvdGxpbl1dOwotLSAgICAgIF9ybF9tb3ZlX2N1cnNvcl9yZWxhdGl2ZSAoX3Js X3NjcmVlbndpZHRoIC0gMSwgbGFzdF9saW5lKTsKLSsgICAgICBjcG9zX2J1ZmZlcl9wb3NpdGlv biA9IC0xOwkvKiBkb24ndCBrbm93IHdoZXJlIHdlIGFyZSBpbiBidWZmZXIgKi8KLSsgICAgICBf cmxfbW92ZV9jdXJzb3JfcmVsYXRpdmUgKF9ybF9zY3JlZW53aWR0aCAtIDEsIGxhc3RfbGluZSk7 CS8qIFhYWCAqLwotICAgICAgIF9ybF9jbGVhcl90b19lb2wgKDApOwotICAgICAgIHB1dGMgKGxh c3RfbGluZVtfcmxfc2NyZWVud2lkdGggLSAxXSwgcmxfb3V0c3RyZWFtKTsKLSAgICAgfQotQEAg LTIyMzIsNiArMjUwNyw3IEBAIHJlZHJhd19wcm9tcHQgKHQpCi0gCQkJCSAgICZwcm9tcHRfaW52 aXNfY2hhcnNfZmlyc3RfbGluZSwKLSAJCQkJICAgJnByb21wdF9waHlzaWNhbF9jaGFycyk7Ci0g ICBsb2NhbF9wcm9tcHRfcHJlZml4ID0gKGNoYXIgKilOVUxMOwotKyAgbG9jYWxfcHJvbXB0X2xl biA9IGxvY2FsX3Byb21wdCA/IHN0cmxlbiAobG9jYWxfcHJvbXB0KSA6IDA7Ci0gCi0gICBybF9m b3JjZWRfdXBkYXRlX2Rpc3BsYXkgKCk7Ci0gCi1AQCAtMjI0NSwxMCArMjUyMSwxNCBAQCBfcmxf cmVkaXNwbGF5X2FmdGVyX3NpZ3dpbmNoICgpCi0gewotICAgY2hhciAqdDsKLSAKLS0gIC8qIENs ZWFyIHRoZSBjdXJyZW50IGxpbmUgYW5kIHB1dCB0aGUgY3Vyc29yIGF0IGNvbHVtbiAwLiAgTWFr ZSBzdXJlCi0tICAgICB0aGUgcmlnaHQgdGhpbmcgaGFwcGVucyBpZiB3ZSBoYXZlIHdyYXBwZWQg dG8gYSBuZXcgc2NyZWVuIGxpbmUuICovCi0rICAvKiBDbGVhciB0aGUgbGFzdCBsaW5lIChhc3N1 bWluZyB0aGF0IHRoZSBzY3JlZW4gc2l6ZSBjaGFuZ2Ugd2lsbCByZXN1bHQgaW4KLSsgICAgIGVp dGhlciBtb3JlIG9yIGZld2VyIGNoYXJhY3RlcnMgb24gdGhhdCBsaW5lIG9ubHkpIGFuZCBwdXQg dGhlIGN1cnNvciBhdAotKyAgICAgY29sdW1uIDAuICBNYWtlIHN1cmUgdGhlIHJpZ2h0IHRoaW5n IGhhcHBlbnMgaWYgd2UgaGF2ZSB3cmFwcGVkIHRvIGEgbmV3Ci0rICAgICBzY3JlZW4gbGluZS4g Ki8KLSAgIGlmIChfcmxfdGVybV9jcikKLSAgICAgewotKyAgICAgIF9ybF9tb3ZlX3ZlcnQgKF9y bF92aXNfYm90bGluKTsKLSsKLSAjaWYgZGVmaW5lZCAoX19NU0RPU19fKQotICAgICAgIHB1dGMg KCdccicsIHJsX291dHN0cmVhbSk7Ci0gI2Vsc2UKLUBAIC0yMjg0LDcgKzI1NjQsNyBAQCBfcmxf cmVkaXNwbGF5X2FmdGVyX3NpZ3dpbmNoICgpCi0gdm9pZAotIF9ybF9jbGVhbl91cF9mb3JfZXhp dCAoKQotIHsKLS0gIGlmIChyZWFkbGluZV9lY2hvaW5nX3ApCi0rICBpZiAoX3JsX2VjaG9pbmdf cCkKLSAgICAgewotICAgICAgIF9ybF9tb3ZlX3ZlcnQgKF9ybF92aXNfYm90bGluKTsKLSAgICAg ICBfcmxfdmlzX2JvdGxpbiA9IDA7Ci1AQCAtMjMyOSwyMCArMjYwOSw0MSBAQCBfcmxfY3VycmVu dF9kaXNwbGF5X2xpbmUgKCkKLSAgICBJbiB0aGUgY2FzZSBvZiBtdWx0aWJ5dGUgY2hhcmFjdGVy cyB3aXRoIHN0YXRlZnVsIGVuY29kaW5nLCB3ZSBoYXZlIHRvCi0gICAgc2NhbiBmcm9tIHRoZSBi ZWdpbm5pbmcgb2YgdGhlIHN0cmluZyB0byB0YWtlIHRoZSBzdGF0ZSBpbnRvIGFjY291bnQuICov Ci0gc3RhdGljIGludAotLV9ybF9jb2xfd2lkdGggKHN0ciwgc3RhcnQsIGVuZCkKLStfcmxfY29s X3dpZHRoIChzdHIsIHN0YXJ0LCBlbmQsIGZsYWdzKQotICAgICAgY29uc3QgY2hhciAqc3RyOwot LSAgICAgaW50IHN0YXJ0LCBlbmQ7Ci0rICAgICBpbnQgc3RhcnQsIGVuZCwgZmxhZ3M7Ci0gewot ICAgd2NoYXJfdCB3YzsKLS0gIG1ic3RhdGVfdCBwcyA9IHswfTsKLSsgIG1ic3RhdGVfdCBwczsK LSAgIGludCB0bXAsIHBvaW50LCB3aWR0aCwgbWF4OwotIAotICAgaWYgKGVuZCA8PSBzdGFydCkK LSAgICAgcmV0dXJuIDA7Ci0rICBpZiAoTUJfQ1VSX01BWCA9PSAxIHx8IHJsX2J5dGVfb3JpZW50 ZWQpCi0rewotK19ybF90dHltc2cgKCJfcmxfY29sX3dpZHRoOiBjYWxsZWQgd2l0aCBNQl9DVVJf TUFYID09IDEiKTsKLSsgICAgcmV0dXJuIChlbmQgLSBzdGFydCk7Ci0rfQotKwotKyAgbWVtc2V0 ICgmcHMsIDAsIHNpemVvZiAobWJzdGF0ZV90KSk7Ci0gCi0gICBwb2ludCA9IDA7Ci0gICBtYXgg PSBlbmQ7Ci0gCi0rICAvKiBUcnkgdG8gc2hvcnQtY2lyY3VpdCBjb21tb24gY2FzZXMuICBUaGUg YWRqdXN0bWVudCB0byByZW1vdmUgd3JhcF9vZmZzZXQKLSsgICAgIGlzIGRvbmUgYnkgdGhlIGNh bGxlci4gKi8KLSsgIC8qIDEuICBwcm9tcHQgc3RyaW5nICovCi0rICBpZiAoZmxhZ3MgJiYgc3Rh cnQgPT0gMCAmJiBlbmQgPT0gbG9jYWxfcHJvbXB0X2xlbiAmJiBtZW1jbXAgKHN0ciwgbG9jYWxf cHJvbXB0LCBsb2NhbF9wcm9tcHRfbGVuKSA9PSAwKQotKyAgICByZXR1cm4gKHByb21wdF9waHlz aWNhbF9jaGFycyArIHdyYXBfb2Zmc2V0KTsKLSsgIC8qIDIuICBwcm9tcHQgc3RyaW5nICsgbGlu ZSBjb250ZW50cyAqLwotKyAgZWxzZSBpZiAoZmxhZ3MgJiYgc3RhcnQgPT0gMCAmJiBsb2NhbF9w cm9tcHRfbGVuID4gMCAmJiBlbmQgPiBsb2NhbF9wcm9tcHRfbGVuICYmIGxvY2FsX3Byb21wdCAm JiBtZW1jbXAgKHN0ciwgbG9jYWxfcHJvbXB0LCBsb2NhbF9wcm9tcHRfbGVuKSA9PSAwKQotKyAg ICB7Ci0rICAgICAgdG1wID0gcHJvbXB0X3BoeXNpY2FsX2NoYXJzICsgd3JhcF9vZmZzZXQ7Ci0r ICAgICAgLyogWFhYIC0gdHJ5IHRvIGNhbGwgb3Vyc2VsdmVzIHJlY3Vyc2l2ZWx5IHdpdGggbm9u LXByb21wdCBwb3J0aW9uICovCi0rICAgICAgdG1wICs9IF9ybF9jb2xfd2lkdGggKHN0ciwgbG9j YWxfcHJvbXB0X2xlbiwgZW5kLCBmbGFncyk7Ci0rICAgICAgcmV0dXJuICh0bXApOwotKyAgICB9 Ci0rCi0gICB3aGlsZSAocG9pbnQgPCBzdGFydCkKLSAgICAgewotICAgICAgIHRtcCA9IG1icmxl biAoc3RyICsgcG9pbnQsIG1heCwgJnBzKTsKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3Jl YWRsaW5lL2RvYy9DaGFuZ2VMb2cuZ2RiCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDEx MDcwMy5vcmlnL3JlYWRsaW5lL2RvYy9DaGFuZ2VMb2cuZ2RiCTIwMTEtMDctMDMgMTA6NDA6NTMu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9kb2MvQ2hh bmdlTG9nLmdkYgkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMyAr MSw3IEBACi0rMjAxMS0wNC0yNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotKwotKwlJbXBvcnRlZCByZWFkbGluZSA2LjIsIGFuZCB1cHN0cmVhbSBwYXRjaCAw MDEuCi0rCi0gMjAwNi0wNC0yNCAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5 LmNvbT4KLSAKLSAJSW1wb3J0ZWQgcmVhZGxpbmUgNS4xLCBhbmQgdXBzdHJlYW0gcGF0Y2hlcyAw MDEtMDA0LgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL01ha2VmaWxl LmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2Rv Yy9NYWtlZmlsZS5pbgkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL01ha2VmaWxlLmluCTIwMTEtMDctMDMgMTA6 NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyNSArMSwyNCBAQAotICMgVGhpcyBtYWtlZmls ZSBmb3IgUmVhZGxpbmUgbGlicmFyeSBkb2N1bWVudGF0aW9uIGlzIGluIC0qLSB0ZXh0IC0qLSBt b2RlLgotICMgRW1hY3MgbGlrZXMgaXQgdGhhdCB3YXkuCi0gCi0tIyBDb3B5cmlnaHQgKEMpIDE5 OTYtMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjIENvcHlyaWdodCAoQykg MTk5Ni0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLS0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tIyBhbnkgbGF0ZXIgdmVyc2lvbi4K LS0KLS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0jIEZvdW5k YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx IFVTQS4KLSsjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK LSsjICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsjICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rIyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsKLSsjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0g Ci0gdG9wZGlyID0gQHRvcF9zcmNkaXJACi0gc3JjZGlyID0gQHNyY2RpckAKLS1WUEFUSCA9IC46 QHNyY2RpckAKLStWUEFUSCA9IEBzcmNkaXJACi0gCi0gcHJlZml4ID0gQHByZWZpeEAKLSAKLUBA IC02NCw5ICs2Myw5IEBAIFBTUERGICAgICAgID0gZ3MgLXNQQVBFUlNJWkU9JHtQQVBFUlNJWkUK LSAKLSBSTFNSQyA9ICQoc3JjZGlyKS9ybG1hbi50ZXhpICQoc3JjZGlyKS9ybHVzZXIudGV4aSBc Ci0gCSQoc3JjZGlyKS9ybHRlY2gudGV4aSAkKHNyY2RpcikvdmVyc2lvbi50ZXhpIFwKLS0JJChz cmNkaXIpL3JsdXNlcm1hbi50ZXhpCi0rCSQoc3JjZGlyKS9ybHVzZXJtYW4udGV4aSAkKHNyY2Rp cikvZmRsLnRleGkKLSBISVNUU1JDID0gJChzcmNkaXIpL2hpc3RvcnkudGV4aSAkKHNyY2Rpcikv aHN1c2VyLnRleGkgXAotLQkgICQoc3JjZGlyKS9oc3RlY2gudGV4aSAkKHNyY2RpcikvdmVyc2lv bi50ZXhpCi0rCSAgJChzcmNkaXIpL2hzdGVjaC50ZXhpICQoc3JjZGlyKS92ZXJzaW9uLnRleGkg JChzcmNkaXIpL2ZkbC50ZXhpCi0gCi0gIyBUaGlzIHNob3VsZCBiZSBhIHByb2dyYW0gdGhhdCBj b252ZXJ0cyB0cm9mZiB0byBhbiBhc2NpaS1yZWFkYWJsZSBmb3JtYXQKLSBOUk9GRiAgICAgICA9 IGdyb2ZmIC1UYXNjaWkKLUBAIC04Myw3ICs4Miw3IEBAIFBERk9CSiA9IHJlYWRsaW5lLnBkZiBo aXN0b3J5LnBkZiBybHVzZXIKLSAKLSBJTlRFUk1FRElBVEVfT0JKID0gcmxtYW4uZHZpCi0gCi0t RElTVF9ET0NTID0gJChEVklPQkopICQoUFNPQkopICQoSFRNTE9CSikgJChJTkZPT0JKKSAkKFRF WFRPQkopCi0rRElTVF9ET0NTID0gJChEVklPQkopICQoUFNPQkopICQoSFRNTE9CSikgJChJTkZP T0JKKSAkKFRFWFRPQkopICQoUERGT0JKKQotIAotIC5TVUZGSVhFUzogICAgICAuMCAuMyAucHMg LnR4dCAuZHZpIC5odG1sIC5wZGYKLSAKLUBAIC05OSw5ICs5OCwxMSBAQCBESVNUX0RPQ1MgPSAk KERWSU9CSikgJChQU09CSikgJChIVE1MT0JKCi0gCSQoUk0pICRACi0gCS0ke0RWSVBERn0gJDwK LSAKLS1hbGw6IGluZm8gZHZpIGh0bWwgcHMgdGV4dAotK2FsbDogaW5mbyBkdmkgaHRtbCBwcyB0 ZXh0IHBkZgotIG5vZHZpOiBpbmZvIGh0bWwgdGV4dAotIAotK3hkaXN0OiAkKERJU1RfRE9DUykK LSsKLSBpbmZvOgkkKElORk9PQkopCi0gZHZpOgkkKERWSU9CSikKLSBwczoJJChQU09CSikKLUBA IC0xNTYsMTMgKzE1NywxMyBAQCBoaXN0b3J5Lmh0bWw6CSR7SElTVFNSQ30KLSAKLSByZWFkbGlu ZS4wOiByZWFkbGluZS4zCi0gCi0tcmVhZGxpbmVfMy5wczogcmVhZGxpbmUuMwotK3JlYWRsaW5l XzMucHM6ICQoc3JjZGlyKS9yZWFkbGluZS4zCi0gCSR7Uk19ICRACi0gCSR7R1JPRkZ9IC1tYW4g PCAkKHNyY2RpcikvcmVhZGxpbmUuMyA+ICRAIAotIAotIGhpc3RvcnkuMDogaGlzdG9yeS4zCi0g Ci0taGlzdG9yeV8zLnBzOiBoaXN0b3J5LjMKLStoaXN0b3J5XzMucHM6ICQoc3JjZGlyKS9oaXN0 b3J5LjMKLSAJJHtSTX0gJEAKLSAJJHtHUk9GRn0gLW1hbiA8ICQoc3JjZGlyKS9oaXN0b3J5LjMg PiAkQCAKLSAKLUBAIC0xODIsNyArMTgzLDcgQEAgZGlzdGNsZWFuOiBjbGVhbiBtYXliZS1jbGVh bgotIAkkKFJNKSBNYWtlZmlsZQotIAotIG1heWJlLWNsZWFuOgotLQktaWYgdGVzdCAiWCQodG9w ZGlyKSIgIT0gIlgkKEJVSUxEX0RJUikiOyB0aGVuIFwKLSsJLWlmIHRlc3QgIlgkKHRvcGRpciki ICE9ICJYLi4iICYmIHRlc3QgIlgkKHRvcGRpcikiICE9ICJYJChCVUlMRF9ESVIpIjsgdGhlbiBc Ci0gCQkkKFJNKSAkKERJU1RfRE9DUyk7IFwKLSAJZmkKLSAKLUluZGV4OiBnZGItNy4yLjkwLjIw MTEwNzAzL3JlYWRsaW5lL2RvYy9mZGwudGV4aQotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAu MjAxMTA3MDMub3JpZy9yZWFkbGluZS9kb2MvZmRsLnRleGkJMjAxMS0wNy0wMyAxMDo0MDo1My4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2RvYy9mZGwu dGV4aQkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMTMgKzEsMTIg QEAKLStAYyBUaGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLgotK0BjZW50ZXIgVmVy c2lvbiAxLjMsIDMgTm92ZW1iZXIgMjAwOAotIAotLUBub2RlIEdOVSBGcmVlIERvY3VtZW50YXRp b24gTGljZW5zZQotLUBhcHBlbmRpeHNlYyBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UK LS0KLS1AY2luZGV4IEZETCwgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlCi0tQGNlbnRl ciBWZXJzaW9uIDEuMiwgTm92ZW1iZXIgMjAwMgotK0BjIFRoaXMgZmlsZSBpcyBpbnRlbmRlZCB0 byBiZSBpbmNsdWRlZCB3aXRoaW4gYW5vdGhlciBkb2N1bWVudCwKLStAYyBoZW5jZSBubyBzZWN0 aW9uaW5nIGNvbW1hbmQgb3IgQG5vZGUuCi0gCi0gQGRpc3BsYXkKLS1Db3B5cmlnaHQgQGNvcHly aWdodHt9IDIwMDAsMjAwMSwyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLTU5 IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3LCBVU0EKLStD b3B5cmlnaHQgQGNvcHlyaWdodHt9IDIwMDAsIDIwMDEsIDIwMDIsIDIwMDcsIDIwMDggRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rQHVyZWZ7aHR0cDovL2ZzZi5vcmcvfQotIAotIEV2 ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGll cwotIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxv d2VkLgotQEAgLTExMiw2ICsxMTEsOSBAQCBmb3JtYXRzIHdoaWNoIGRvIG5vdCBoYXZlIGFueSB0 aXRsZSBwYWdlCi0gdGhlIHRleHQgbmVhciB0aGUgbW9zdCBwcm9taW5lbnQgYXBwZWFyYW5jZSBv ZiB0aGUgd29yaydzIHRpdGxlLAotIHByZWNlZGluZyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBib2R5 IG9mIHRoZSB0ZXh0LgotIAotK1RoZSBgYHB1Ymxpc2hlcicnIG1lYW5zIGFueSBwZXJzb24gb3Ig ZW50aXR5IHRoYXQgZGlzdHJpYnV0ZXMgY29waWVzCi0rb2YgdGhlIERvY3VtZW50IHRvIHRoZSBw dWJsaWMuCi0rCi0gQSBzZWN0aW9uIGBgRW50aXRsZWQgWFlaJycgbWVhbnMgYSBuYW1lZCBzdWJ1 bml0IG9mIHRoZSBEb2N1bWVudCB3aG9zZQotIHRpdGxlIGVpdGhlciBpcyBwcmVjaXNlbHkgWFla IG9yIGNvbnRhaW5zIFhZWiBpbiBwYXJlbnRoZXNlcyBmb2xsb3dpbmcKLSB0ZXh0IHRoYXQgdHJh bnNsYXRlcyBYWVogaW4gYW5vdGhlciBsYW5ndWFnZS4gIChIZXJlIFhZWiBzdGFuZHMgZm9yIGEK LUBAIC0zNDQsNyArMzQ2LDcgQEAgYW5kIGluZGVwZW5kZW50IGRvY3VtZW50cyBvciB3b3Jrcywg aW4gbwotIGRpc3RyaWJ1dGlvbiBtZWRpdW0sIGlzIGNhbGxlZCBhbiBgYGFnZ3JlZ2F0ZScnIGlm IHRoZSBjb3B5cmlnaHQKLSByZXN1bHRpbmcgZnJvbSB0aGUgY29tcGlsYXRpb24gaXMgbm90IHVz ZWQgdG8gbGltaXQgdGhlIGxlZ2FsIHJpZ2h0cwotIG9mIHRoZSBjb21waWxhdGlvbidzIHVzZXJz IGJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4KLS1XaGVuIHRoZSBEb2N1 bWVudCBpcyBpbmNsdWRlZCBhbiBhZ2dyZWdhdGUsIHRoaXMgTGljZW5zZSBkb2VzIG5vdAotK1do ZW4gdGhlIERvY3VtZW50IGlzIGluY2x1ZGVkIGluIGFuIGFnZ3JlZ2F0ZSwgdGhpcyBMaWNlbnNl IGRvZXMgbm90Ci0gYXBwbHkgdG8gdGhlIG90aGVyIHdvcmtzIGluIHRoZSBhZ2dyZWdhdGUgd2hp Y2ggYXJlIG5vdCB0aGVtc2VsdmVzCi0gZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgRG9jdW1lbnQu Ci0gCi1AQCAtMzgwLDEzICszODIsMzAgQEAgdGl0bGUuCi0gQGl0ZW0KLSBURVJNSU5BVElPTgot IAotLVlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgb3IgZGlzdHJpYnV0ZSB0 aGUgRG9jdW1lbnQgZXhjZXB0Ci0tYXMgZXhwcmVzc2x5IHByb3ZpZGVkIGZvciB1bmRlciB0aGlz IExpY2Vuc2UuICBBbnkgb3RoZXIgYXR0ZW1wdCB0bwotLWNvcHksIG1vZGlmeSwgc3VibGljZW5z ZSBvciBkaXN0cmlidXRlIHRoZSBEb2N1bWVudCBpcyB2b2lkLCBhbmQgd2lsbAotLWF1dG9tYXRp Y2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIs Ci0tcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsIG9yIHJpZ2h0cywgZnJvbSB5b3Ug dW5kZXIgdGhpcwotLUxpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJtaW5h dGVkIHNvIGxvbmcgYXMgc3VjaAotLXBhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4K LStZb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhl IERvY3VtZW50Ci0rZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vu c2UuICBBbnkgYXR0ZW1wdAotK290aGVyd2lzZSB0byBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2Us IG9yIGRpc3RyaWJ1dGUgaXQgaXMgdm9pZCwgYW5kCi0rd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1p bmF0ZSB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuCi0rCi0rSG93ZXZlciwgaWYgeW91 IGNlYXNlIGFsbCB2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlLCB0aGVuIHlvdXIgbGljZW5zZQot K2Zyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMgcmVpbnN0YXRlZCAoYSkgcHJv dmlzaW9uYWxseSwKLSt1bmxlc3MgYW5kIHVudGlsIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGV4cGxp Y2l0bHkgYW5kIGZpbmFsbHkKLSt0ZXJtaW5hdGVzIHlvdXIgbGljZW5zZSwgYW5kIChiKSBwZXJt YW5lbnRseSwgaWYgdGhlIGNvcHlyaWdodCBob2xkZXIKLStmYWlscyB0byBub3RpZnkgeW91IG9m IHRoZSB2aW9sYXRpb24gYnkgc29tZSByZWFzb25hYmxlIG1lYW5zIHByaW9yIHRvCi0rNjAgZGF5 cyBhZnRlciB0aGUgY2Vzc2F0aW9uLgotKwotK01vcmVvdmVyLCB5b3VyIGxpY2Vuc2UgZnJvbSBh IHBhcnRpY3VsYXIgY29weXJpZ2h0IGhvbGRlciBpcwotK3JlaW5zdGF0ZWQgcGVybWFuZW50bHkg aWYgdGhlIGNvcHlyaWdodCBob2xkZXIgbm90aWZpZXMgeW91IG9mIHRoZQotK3Zpb2xhdGlvbiBi eSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUK LStyZWNlaXZlZCBub3RpY2Ugb2YgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSAoZm9yIGFueSB3 b3JrKSBmcm9tIHRoYXQKLStjb3B5cmlnaHQgaG9sZGVyLCBhbmQgeW91IGN1cmUgdGhlIHZpb2xh dGlvbiBwcmlvciB0byAzMCBkYXlzIGFmdGVyCi0reW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2Uu Ci0rCi0rVGVybWluYXRpb24gb2YgeW91ciByaWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMg bm90IHRlcm1pbmF0ZSB0aGUKLStsaWNlbnNlcyBvZiBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVk IGNvcGllcyBvciByaWdodHMgZnJvbSB5b3UgdW5kZXIKLSt0aGlzIExpY2Vuc2UuICBJZiB5b3Vy IHJpZ2h0cyBoYXZlIGJlZW4gdGVybWluYXRlZCBhbmQgbm90IHBlcm1hbmVudGx5Ci0rcmVpbnN0 YXRlZCwgcmVjZWlwdCBvZiBhIGNvcHkgb2Ygc29tZSBvciBhbGwgb2YgdGhlIHNhbWUgbWF0ZXJp YWwgZG9lcwotK25vdCBnaXZlIHlvdSBhbnkgcmlnaHRzIHRvIHVzZSBpdC4KLSAKLSBAaXRlbQot IEZVVFVSRSBSRVZJU0lPTlMgT0YgVEhJUyBMSUNFTlNFCi1AQCAtNDA0LDExICs0MjMsNDYgQEAg Zm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBlaXRoZQotIG9mIGFueSBsYXRlciB2 ZXJzaW9uIHRoYXQgaGFzIGJlZW4gcHVibGlzaGVkIChub3QgYXMgYSBkcmFmdCkgYnkgdGhlCi0g RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIERvY3VtZW50IGRvZXMgbm90IHNwZWNp ZnkgYSB2ZXJzaW9uCi0gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55 IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgKG5vdAotLWFzIGEgZHJhZnQpIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24uCi0rYXMgYSBkcmFmdCkgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbi4gIElmIHRoZSBEb2N1bWVudAotK3NwZWNpZmllcyB0aGF0IGEgcHJveHkgY2FuIGRl Y2lkZSB3aGljaCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhpcwotK0xpY2Vuc2UgY2FuIGJlIHVzZWQs IHRoYXQgcHJveHkncyBwdWJsaWMgc3RhdGVtZW50IG9mIGFjY2VwdGFuY2Ugb2YgYQotK3ZlcnNp b24gcGVybWFuZW50bHkgYXV0aG9yaXplcyB5b3UgdG8gY2hvb3NlIHRoYXQgdmVyc2lvbiBmb3Ig dGhlCi0rRG9jdW1lbnQuCi0rCi0rQGl0ZW0KLStSRUxJQ0VOU0lORwotKwotK2BgTWFzc2l2ZSBN dWx0aWF1dGhvciBDb2xsYWJvcmF0aW9uIFNpdGUnJyAob3IgYGBNTUMgU2l0ZScnKSBtZWFucyBh bnkKLStXb3JsZCBXaWRlIFdlYiBzZXJ2ZXIgdGhhdCBwdWJsaXNoZXMgY29weXJpZ2h0YWJsZSB3 b3JrcyBhbmQgYWxzbwotK3Byb3ZpZGVzIHByb21pbmVudCBmYWNpbGl0aWVzIGZvciBhbnlib2R5 IHRvIGVkaXQgdGhvc2Ugd29ya3MuICBBCi0rcHVibGljIHdpa2kgdGhhdCBhbnlib2R5IGNhbiBl ZGl0IGlzIGFuIGV4YW1wbGUgb2Ygc3VjaCBhIHNlcnZlci4gIEEKLStgYE1hc3NpdmUgTXVsdGlh dXRob3IgQ29sbGFib3JhdGlvbicnIChvciBgYE1NQycnKSBjb250YWluZWQgaW4gdGhlCi0rc2l0 ZSBtZWFucyBhbnkgc2V0IG9mIGNvcHlyaWdodGFibGUgd29ya3MgdGh1cyBwdWJsaXNoZWQgb24g dGhlIE1NQwotK3NpdGUuCi0rCi0rYGBDQy1CWS1TQScnIG1lYW5zIHRoZSBDcmVhdGl2ZSBDb21t b25zIEF0dHJpYnV0aW9uLVNoYXJlIEFsaWtlIDMuMAotK2xpY2Vuc2UgcHVibGlzaGVkIGJ5IENy ZWF0aXZlIENvbW1vbnMgQ29ycG9yYXRpb24sIGEgbm90LWZvci1wcm9maXQKLStjb3Jwb3JhdGlv biB3aXRoIGEgcHJpbmNpcGFsIHBsYWNlIG9mIGJ1c2luZXNzIGluIFNhbiBGcmFuY2lzY28sCi0r Q2FsaWZvcm5pYSwgYXMgd2VsbCBhcyBmdXR1cmUgY29weWxlZnQgdmVyc2lvbnMgb2YgdGhhdCBs aWNlbnNlCi0rcHVibGlzaGVkIGJ5IHRoYXQgc2FtZSBvcmdhbml6YXRpb24uCi0rCi0rYGBJbmNv cnBvcmF0ZScnIG1lYW5zIHRvIHB1Ymxpc2ggb3IgcmVwdWJsaXNoIGEgRG9jdW1lbnQsIGluIHdo b2xlIG9yCi0raW4gcGFydCwgYXMgcGFydCBvZiBhbm90aGVyIERvY3VtZW50LgotKwotK0FuIE1N QyBpcyBgYGVsaWdpYmxlIGZvciByZWxpY2Vuc2luZycnIGlmIGl0IGlzIGxpY2Vuc2VkIHVuZGVy IHRoaXMKLStMaWNlbnNlLCBhbmQgaWYgYWxsIHdvcmtzIHRoYXQgd2VyZSBmaXJzdCBwdWJsaXNo ZWQgdW5kZXIgdGhpcyBMaWNlbnNlCi0rc29tZXdoZXJlIG90aGVyIHRoYW4gdGhpcyBNTUMsIGFu ZCBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIGluIHdob2xlCi0rb3IgaW4gcGFydCBpbnRvIHRo ZSBNTUMsICgxKSBoYWQgbm8gY292ZXIgdGV4dHMgb3IgaW52YXJpYW50IHNlY3Rpb25zLAotK2Fu ZCAoMikgd2VyZSB0aHVzIGluY29ycG9yYXRlZCBwcmlvciB0byBOb3ZlbWJlciAxLCAyMDA4Lgot KwotK1RoZSBvcGVyYXRvciBvZiBhbiBNTUMgU2l0ZSBtYXkgcmVwdWJsaXNoIGFuIE1NQyBjb250 YWluZWQgaW4gdGhlIHNpdGUKLSt1bmRlciBDQy1CWS1TQSBvbiB0aGUgc2FtZSBzaXRlIGF0IGFu eSB0aW1lIGJlZm9yZSBBdWd1c3QgMSwgMjAwOSwKLStwcm92aWRlZCB0aGUgTU1DIGlzIGVsaWdp YmxlIGZvciByZWxpY2Vuc2luZy4KLSsKLSBAZW5kIGVudW1lcmF0ZQotIAotIEBwYWdlCi0tQGFw cGVuZGl4c3Vic2VjIEFEREVORFVNOiBIb3cgdG8gdXNlIHRoaXMgTGljZW5zZSBmb3IgeW91ciBk b2N1bWVudHMKLStAaGVhZGluZyBBRERFTkRVTTogSG93IHRvIHVzZSB0aGlzIExpY2Vuc2UgZm9y IHlvdXIgZG9jdW1lbnRzCi0gCi0gVG8gdXNlIHRoaXMgTGljZW5zZSBpbiBhIGRvY3VtZW50IHlv dSBoYXZlIHdyaXR0ZW4sIGluY2x1ZGUgYSBjb3B5IG9mCi0gdGhlIExpY2Vuc2UgaW4gdGhlIGRv Y3VtZW50IGFuZCBwdXQgdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQgYW5kCi1AQCAtNDE4LDE2ICs0 NzIsMTYgQEAgbGljZW5zZSBub3RpY2VzIGp1c3QgYWZ0ZXIgdGhlIHRpdGxlIHBhZwotIEBncm91 cAotICAgQ29weXJpZ2h0IChDKSAgQHZhcnt5ZWFyfSAgQHZhcnt5b3VyIG5hbWV9LgotICAgUGVy bWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlz IGRvY3VtZW50Ci0tICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRp b24gTGljZW5zZSwgVmVyc2lvbiAxLjIKLSsgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEZy ZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLCBWZXJzaW9uIDEuMwotICAgb3IgYW55IGxhdGVyIHZl cnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247Ci0tICB3aXRo IG5vIEludmFyaWFudCBTZWN0aW9ucywgbm8gRnJvbnQtQ292ZXIgVGV4dHMsIGFuZCBubyBCYWNr LUNvdmVyIFRleHRzLgotLSAgQSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRo ZSBzZWN0aW9uIGVudGl0bGVkIGBgR05VCi0rICB3aXRoIG5vIEludmFyaWFudCBTZWN0aW9ucywg bm8gRnJvbnQtQ292ZXIgVGV4dHMsIGFuZCBubyBCYWNrLUNvdmVyCi0rICBUZXh0cy4gIEEgY29w eSBvZiB0aGUgbGljZW5zZSBpcyBpbmNsdWRlZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxlZCBgYEdO VQotICAgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UnJy4KLSBAZW5kIGdyb3VwCi0gQGVuZCBz bWFsbGV4YW1wbGUKLSAKLSBJZiB5b3UgaGF2ZSBJbnZhcmlhbnQgU2VjdGlvbnMsIEZyb250LUNv dmVyIFRleHRzIGFuZCBCYWNrLUNvdmVyIFRleHRzLAotLXJlcGxhY2UgdGhlIGBgd2l0aC4uLlRl eHRzLicnIGxpbmUgd2l0aCB0aGlzOgotK3JlcGxhY2UgdGhlIGBgd2l0aEBkb3Rze31UZXh0cy4n JyBsaW5lIHdpdGggdGhpczoKLSAKLSBAc21hbGxleGFtcGxlCi0gQGdyb3VwCi1JbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9kb2MvaGlzdG9yeS4zCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2RvYy9oaXN0b3J5LjMJMjAxMS0wNy0w MyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRs aW5lL2RvYy9oaXN0b3J5LjMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBA IC02LDkgKzYsOSBAQAotIC5cIglDYXNlIFdlc3Rlcm4gUmVzZXJ2ZSBVbml2ZXJzaXR5Ci0gLlwi CWNoZXRAaW5zLkNXUlUuRWR1Ci0gLlwiCi0tLlwiCUxhc3QgQ2hhbmdlOiBUaHUgSnVsIDMxIDA4 OjQ2OjA4IEVEVCAyMDAzCi0rLlwiCUxhc3QgQ2hhbmdlOiBUaHUgQXVnIDEyIDIyOjI0OjQxIEVE VCAyMDEwCi0gLlwiCi0tLlRIIEhJU1RPUlkgMyAiMjAwMyBKdWx5IDMxIiAiR05VIEhpc3Rvcnkg NS4wIgotKy5USCBISVNUT1JZIDMgIjIwMTAgQXVndXN0IDEyIiAiR05VIEhpc3RvcnkgNi4yIgot IC5cIgotIC5cIiBGaWxlIE5hbWUgbWFjcm8uICBUaGlzIHVzZWQgdG8gYmUgYC5QTicsIGZvciBQ YXRoIE5hbWUsCi0gLlwiIGJ1dCBTdW4gZG9lc24ndCBzZWVtIHRvIGxpa2UgdGhhdCB2ZXJ5IG11 Y2guCi1AQCAtNDAsOCArNDAsOCBAQAotIC5TSCBOQU1FCi0gaGlzdG9yeSBcLSBHTlUgSGlzdG9y eSBMaWJyYXJ5Ci0gLlNIIENPUFlSSUdIVAotLS5pZiB0IFRoZSBHTlUgSGlzdG9yeSBMaWJyYXJ5 IGlzIENvcHlyaWdodCBcKGNvIDE5ODktMjAwMiBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0tLmlmIG4gVGhlIEdOVSBIaXN0b3J5IExpYnJhcnkgaXMgQ29weXJpZ2h0IChD KSAxOTg5LTIwMDIgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy5pZiB0 IFRoZSBHTlUgSGlzdG9yeSBMaWJyYXJ5IGlzIENvcHlyaWdodCBcKGNvIDE5ODktMjAxMSBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLmlmIG4gVGhlIEdOVSBIaXN0b3J5 IExpYnJhcnkgaXMgQ29weXJpZ2h0IChDKSAxOTg5LTIwMTEgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotIC5TSCBERVNDUklQVElPTgotIE1hbnkgcHJvZ3JhbXMgcmVhZCBp bnB1dCBmcm9tIHRoZSB1c2VyIGEgbGluZSBhdCBhIHRpbWUuICBUaGUgR05VCi0gSGlzdG9yeSBs aWJyYXJ5IGlzIGFibGUgdG8ga2VlcCB0cmFjayBvZiB0aG9zZSBsaW5lcywgYXNzb2NpYXRlIGFy Yml0cmFyeQotQEAgLTgzLDYgKzgzLDggQEAgdGhlIGhpc3RvcnkgZXhwYW5zaW9uIGNoYXJhY3Rl ci4KLSAuUFAKLSBBbiBldmVudCBkZXNpZ25hdG9yIGlzIGEgcmVmZXJlbmNlIHRvIGEgY29tbWFu ZCBsaW5lIGVudHJ5IGluIHRoZQotIGhpc3RvcnkgbGlzdC4KLStVbmxlc3MgdGhlIHJlZmVyZW5j ZSBpcyBhYnNvbHV0ZSwgZXZlbnRzIGFyZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudAotK3Bvc2l0 aW9uIGluIHRoZSBoaXN0b3J5IGxpc3QuCi0gLlBQCi0gLlBEIDAKLSAuVFAKLUBAIC05NiwxOCAr OTgsMjIgQEAgUmVmZXIgdG8gY29tbWFuZCBsaW5lCi0gLklSIG4gLgotIC5UUAotIC5CICFcLVxm SW5cZlIKLS1SZWZlciB0byB0aGUgY3VycmVudCBjb21tYW5kIGxpbmUgbWludXMKLStSZWZlciB0 byB0aGUgY3VycmVudCBjb21tYW5kIG1pbnVzCi0gLklSIG4gLgotIC5UUAotIC5CICEhCi0gUmVm ZXIgdG8gdGhlIHByZXZpb3VzIGNvbW1hbmQuICBUaGlzIGlzIGEgc3lub255bSBmb3IgYCFcLTEn LgotIC5UUAotIC5CICFcZklzdHJpbmdcZlIKLS1SZWZlciB0byB0aGUgbW9zdCByZWNlbnQgY29t bWFuZCBzdGFydGluZyB3aXRoIAotK1JlZmVyIHRvIHRoZSBtb3N0IHJlY2VudCBjb21tYW5kCi0r cHJlY2VkaW5nIHRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBoaXN0b3J5IGxpc3QKLStzdGFy dGluZyB3aXRoCi0gLklSIHN0cmluZyAuCi0gLlRQCi0gLkIgIT9cZklzdHJpbmdcZlJcZkJbP11c ZlIKLS1SZWZlciB0byB0aGUgbW9zdCByZWNlbnQgY29tbWFuZCBjb250YWluaW5nCi0rUmVmZXIg dG8gdGhlIG1vc3QgcmVjZW50IGNvbW1hbmQKLStwcmVjZWRpbmcgdGhlIGN1cnJlbnQgcG9zdGl0 aW9uIGluIHRoZSBoaXN0b3J5IGxpc3QKLStjb250YWluaW5nCi0gLklSIHN0cmluZyAuCi0gVGhl IHRyYWlsaW5nIFxmQj9cZlAgbWF5IGJlIG9taXR0ZWQgaWYKLSAuSSBzdHJpbmcKLUBAIC01Njks MTAgKzU3NSwxMyBAQCBUaGUgbnVtYmVyIG9mIGVudHJpZXMgY3VycmVudGx5IHN0b3JlZCBpCi0g VGhlIG1heGltdW0gbnVtYmVyIG9mIGhpc3RvcnkgZW50cmllcy4gIFRoaXMgbXVzdCBiZSBjaGFu Z2VkIHVzaW5nCi0gXGZCc3RpZmxlX2hpc3RvcnkoKVxmUC4KLSAKLS0uVmIgaW50IGhpc3Rvcnlf d3JpdGVfdGltZXN0YW1wcwotKy5WYiBpbnQgaGlzdG9yeV93aXRlX3RpbWVzdGFtcHMKLSBJZiBu b24temVybywgdGltZXN0YW1wcyBhcmUgd3JpdHRlbiB0byB0aGUgaGlzdG9yeSBmaWxlLCBzbyB0 aGV5IGNhbiBiZQotIHByZXNlcnZlZCBiZXR3ZWVuIHNlc3Npb25zLiAgVGhlIGRlZmF1bHQgdmFs dWUgaXMgMCwgbWVhbmluZyB0aGF0Ci0gdGltZXN0YW1wcyBhcmUgbm90IHNhdmVkLgotK1RoZSBj dXJyZW50IHRpbWVzdGFtcCBmb3JtYXQgdXNlcyB0aGUgdmFsdWUgb2YgXGZJaGlzdG9yeV9jb21t ZW50X2NoYXJcZlAKLSt0byBkZWxpbWl0IHRpbWVzdGFtcCBlbnRyaWVzIGluIHRoZSBoaXN0b3J5 IGZpbGUuICBJZiB0aGF0IHZhcmlhYmxlIGRvZXMKLStub3QgaGF2ZSBhIHZhbHVlICh0aGUgZGVm YXVsdCksIHRpbWVzdGFtcHMgd2lsbCBub3QgYmUgd3JpdHRlbi4KLSAKLSAuVmIgY2hhciBoaXN0 b3J5X2V4cGFuc2lvbl9jaGFyCi0gVGhlIGNoYXJhY3RlciB0aGF0IGludHJvZHVjZXMgYSBoaXN0 b3J5IGV2ZW50LiAgVGhlIGRlZmF1bHQgaXMgXGZCIVxmUC4KLUluZGV4OiBnZGItNy4yLjkwLjIw MTEwNzAzL3JlYWRsaW5lL2RvYy9oaXN0b3J5LnRleGkKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvZG9jL2hpc3RvcnkudGV4aQkyMDExLTA3LTAzIDEw OjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUv ZG9jL2hpc3RvcnkudGV4aQkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAg LTQsOCArNCw2IEBACi0gQHNldHRpdGxlIEdOVSBIaXN0b3J5IExpYnJhcnkKLSBAYyAlKiplbmQg b2YgaGVhZGVyIChUaGlzIGlzIGZvciBydW5uaW5nIFRleGluZm8gb24gYSByZWdpb24uKQotIAot LUBzZXRjaGFwdGVybmV3cGFnZSBvZGQKLS0KLSBAaW5jbHVkZSB2ZXJzaW9uLnRleGkKLSAKLSBA Y29weWluZwotQEAgLTE0LDcgKzEyLDcgQEAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIEdO VSBIaXN0b3J5IAotIGEgcHJvZ3JhbW1pbmcgdG9vbCB0aGF0IHByb3ZpZGVzIGEgY29uc2lzdGVu dCB1c2VyIGludGVyZmFjZSBmb3IKLSByZWNhbGxpbmcgbGluZXMgb2YgcHJldmlvdXNseSB0eXBl ZCBpbnB1dC4KLSAKLS1Db3B5cmlnaHQgQGNvcHlyaWdodHt9IDE5ODgtMjAwNCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLStDb3B5cmlnaHQgQGNvcHlyaWdodHt9IDE5ODgtLTIwMTEg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0gUGVybWlzc2lvbiBpcyBncmFudGVk IHRvIG1ha2UgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mCi0gdGhpcyBtYW51YWwg cHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UK LUBAIC0yMiwxNSArMjAsMTYgQEAgYXJlIHByZXNlcnZlZCBvbiBhbGwgY29waWVzLgotIAotIEBx dW90YXRpb24KLSBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQv b3IgbW9kaWZ5IHRoaXMgZG9jdW1lbnQKLS11bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBGcmVl IERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjEgb3IKLSt1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjMgb3IKLSBh bnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgd2l0aCBubwotLUludmFyaWFudCBTZWN0aW9ucywgd2l0aCB0aGUgRnJvbnQtQ292ZXIgdGV4 dHMgYmVpbmcgYGBBIEdOVSBNYW51YWwsJycKLStJbnZhcmlhbnQgU2VjdGlvbnMsIHdpdGggdGhl IEZyb250LUNvdmVyIHRleHRzIGJlaW5nIGBgQSBHTlUgTWFudWFsJycsCi0gYW5kIHdpdGggdGhl IEJhY2stQ292ZXIgVGV4dHMgYXMgaW4gKGEpIGJlbG93LiAgQSBjb3B5IG9mIHRoZSBsaWNlbnNl IGlzCi0taW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRsZWQgYGBHTlUgRnJlZSBEb2N1bWVu dGF0aW9uIExpY2Vuc2UuJycKLStpbmNsdWRlZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxlZCBgYEdO VSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZScnLgotKwotKyhhKSBUaGUgRlNGJ3MgQmFjay1D b3ZlciBUZXh0IGlzOiBZb3UgYXJlIGZyZWUgdG8gY29weSBhbmQgbW9kaWZ5Ci0rdGhpcyBHTlUg bWFudWFsLiAgQnV5aW5nIGNvcGllcyBmcm9tIEdOVSBQcmVzcyBzdXBwb3J0cyB0aGUgRlNGIGlu Ci0rZGV2ZWxvcGluZyBHTlUgYW5kIHByb21vdGluZyBzb2Z0d2FyZSBmcmVlZG9tLicnCi0gCi0t KGEpIFRoZSBGU0YncyBCYWNrLUNvdmVyIFRleHQgaXM6IGBgWW91IGhhdmUgZnJlZWRvbSB0byBj b3B5IGFuZCBtb2RpZnkKLS10aGlzIEdOVSBNYW51YWwsIGxpa2UgR05VIHNvZnR3YXJlLiAgQ29w aWVzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQotLVNvZnR3YXJlIEZvdW5kYXRpb24gcmFpc2UgZnVu ZHMgZm9yIEdOVSBkZXZlbG9wbWVudC4nJwotIEBlbmQgcXVvdGF0aW9uCi0gQGVuZCBjb3B5aW5n Ci0gCi1AQCAtNzIsNyArNzEsNyBAQCB0eXBlZCBpbnB1dC4KLSBAbWVudQotICogVXNpbmcgSGlz dG9yeSBJbnRlcmFjdGl2ZWx5OjoJICBHTlUgSGlzdG9yeSBVc2VyJ3MgTWFudWFsLgotICogUHJv Z3JhbW1pbmcgd2l0aCBHTlUgSGlzdG9yeTo6ICBHTlUgSGlzdG9yeSBQcm9ncmFtbWVyJ3MgTWFu dWFsLgotLSogQ29weWluZyBUaGlzIE1hbnVhbDo6CQkgIENvcHlpbmcgVGhpcyBNYW51YWwuCi0r KiBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2U6OglMaWNlbnNlIGZvciBjb3B5aW5nIHRo aXMgbWFudWFsLgotICogQ29uY2VwdCBJbmRleDo6CQkgIEluZGV4IG9mIGNvbmNlcHRzIGRlc2Ny aWJlZCBpbiB0aGlzIG1hbnVhbC4KLSAqIEZ1bmN0aW9uIGFuZCBWYXJpYWJsZSBJbmRleDo6CSAg SW5kZXggb2YgZXh0ZXJuYWxseSB2aXNpYmxlIGZ1bmN0aW9ucwotIAkJCQkgIGFuZCB2YXJpYWJs ZXMuCi1AQCAtODQsMTIgKzgzLDggQEAgdHlwZWQgaW5wdXQuCi0gQGluY2x1ZGUgaHN1c2VyLnRl eGkKLSBAaW5jbHVkZSBoc3RlY2gudGV4aQotIAotLUBub2RlIENvcHlpbmcgVGhpcyBNYW51YWwK LS1AYXBwZW5kaXggQ29weWluZyBUaGlzIE1hbnVhbAotLQotLUBtZW51Ci0tKiBHTlUgRnJlZSBE b2N1bWVudGF0aW9uIExpY2Vuc2U6OglMaWNlbnNlIGZvciBjb3B5aW5nIHRoaXMgbWFudWFsLgot LUBlbmQgbWVudQotK0Bub2RlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZQotK0BhcHBl bmRpeCBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UKLSAKLSBAaW5jbHVkZSBmZGwudGV4 aQotIAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL2hzdGVjaC50ZXhp Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2RvYy9o c3RlY2gudGV4aQkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL2hzdGVjaC50ZXhpCTIwMTEtMDctMDMgMTA6NDE6 MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSw3ICsxLDcgQEAKLSBAaWdub3JlCi0gVGhpcyBmaWxl IGRvY3VtZW50cyB0aGUgdXNlciBpbnRlcmZhY2UgdG8gdGhlIEdOVSBIaXN0b3J5IGxpYnJhcnku Ci0gCi0tQ29weXJpZ2h0IChDKSAxOTg4LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rQ29weXJpZ2h0IChDKSAxOTg4LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0gQXV0aG9yZWQgYnkgQnJpYW4gRm94IGFuZCBDaGV0IFJhbWV5LgotIAotIFBlcm1pc3Np b24gaXMgZ3JhbnRlZCB0byBtYWtlIGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0 aGlzIG1hbnVhbAotQEAgLTQyNiw2ICs0MjYsMTAgQEAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGhp c3RvcnkgZW50cmllcy4gIAotIElmIG5vbi16ZXJvLCB0aW1lc3RhbXBzIGFyZSB3cml0dGVuIHRv IHRoZSBoaXN0b3J5IGZpbGUsIHNvIHRoZXkgY2FuIGJlCi0gcHJlc2VydmVkIGJldHdlZW4gc2Vz c2lvbnMuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwLCBtZWFuaW5nIHRoYXQKLSB0aW1lc3RhbXBz IGFyZSBub3Qgc2F2ZWQuCi0rCi0rVGhlIGN1cnJlbnQgdGltZXN0YW1wIGZvcm1hdCB1c2VzIHRo ZSB2YWx1ZSBvZiBAdmFye2hpc3RvcnlfY29tbWVudF9jaGFyfQotK3RvIGRlbGltaXQgdGltZXN0 YW1wIGVudHJpZXMgaW4gdGhlIGhpc3RvcnkgZmlsZS4gIElmIHRoYXQgdmFyaWFibGUgZG9lcwot K25vdCBoYXZlIGEgdmFsdWUgKHRoZSBkZWZhdWx0KSwgdGltZXN0YW1wcyB3aWxsIG5vdCBiZSB3 cml0dGVuLgotIEBlbmQgZGVmdHlwZXZhcgotIAotIEBkZWZ0eXBldmFyIGNoYXIgaGlzdG9yeV9l eHBhbnNpb25fY2hhcgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL2hz dXNlci50ZXhpCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRs aW5lL2RvYy9oc3VzZXIudGV4aQkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL2hzdXNlci50ZXhpCTIwMTEtMDct MDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSw3ICsxLDcgQEAKLSBAaWdub3JlCi0g VGhpcyBmaWxlIGRvY3VtZW50cyB0aGUgdXNlciBpbnRlcmZhY2UgdG8gdGhlIEdOVSBIaXN0b3J5 IGxpYnJhcnkuCi0gCi0tQ29weXJpZ2h0IChDKSAxOTg4LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rQ29weXJpZ2h0IChDKSAxOTg4LS0yMDExIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotIEF1dGhvcmVkIGJ5IEJyaWFuIEZveCBhbmQgQ2hldCBSYW1leS4KLSAK LSBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gbWFrZSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBj b3BpZXMgb2YgdGhpcyBtYW51YWwKLUBAIC05Nyw3ICs5NywxMSBAQCB0byBjb250YWluIG5vIG1v cmUgdGhhbiBAZW52eyRISVNURklMRVNJCi0gbGluZXMuICBJZiBAZW52e0hJU1RGSUxFU0laRX0g aXMgbm90IHNldCwgbm8gdHJ1bmNhdGlvbiBpcyBwZXJmb3JtZWQuCi0gCi0gSWYgdGhlIEBlbnZ7 SElTVFRJTUVGT1JNQVR9IGlzIHNldCwgdGhlIHRpbWUgc3RhbXAgaW5mb3JtYXRpb24KLS1hc3Nv Y2lhdGVkIHdpdGggZWFjaCBoaXN0b3J5IGVudHJ5IGlzIHdyaXR0ZW4gdG8gdGhlIGhpc3Rvcnkg ZmlsZS4KLSthc3NvY2lhdGVkIHdpdGggZWFjaCBoaXN0b3J5IGVudHJ5IGlzIHdyaXR0ZW4gdG8g dGhlIGhpc3RvcnkgZmlsZSwKLSttYXJrZWQgd2l0aCB0aGUgaGlzdG9yeSBjb21tZW50IGNoYXJh Y3Rlci4KLStXaGVuIHRoZSBoaXN0b3J5IGZpbGUgaXMgcmVhZCwgbGluZXMgYmVnaW5uaW5nIHdp dGggdGhlIGhpc3RvcnkKLStjb21tZW50IGNoYXJhY3RlciBmb2xsb3dlZCBpbW1lZGlhdGVseSBi eSBhIGRpZ2l0IGFyZSBpbnRlcnByZXRlZAotK2FzIHRpbWVzdGFtcHMgZm9yIHRoZSBwcmV2aW91 cyBoaXN0b3J5IGxpbmUuCi0gCi0gVGhlIGJ1aWx0aW4gY29tbWFuZCBAY29kZXtmY30gbWF5IGJl IHVzZWQgdG8gbGlzdCBvciBlZGl0IGFuZCByZS1leGVjdXRlCi0gYSBwb3J0aW9uIG9mIHRoZSBo aXN0b3J5IGxpc3QuCi1AQCAtMTMzLDcgKzEzNyw3IEBAIGhpc3RvcnkgbGlzdCBhbmQgaGlzdG9y eSBmaWxlLgotIEBpdGVtIGZjCi0gQGJ0aW5kZXggZmMKLSBAZXhhbXBsZQotLUBjb2Rle2ZjIFst ZSBAdmFye2VuYW1lfV0gWy1ubHJdIFtAdmFye2ZpcnN0fV0gW0B2YXJ7bGFzdH1dfQotK0Bjb2Rl e2ZjIFstZSBAdmFye2VuYW1lfV0gWy1sbnJdIFtAdmFye2ZpcnN0fV0gW0B2YXJ7bGFzdH1dfQot IEBjb2Rle2ZjIC1zIFtAdmFye3BhdH09QHZhcntyZXB9XSBbQHZhcntjb21tYW5kfV19Ci0gQGVu ZCBleGFtcGxlCi0gCi1AQCAtMjc3LDcgKzI4MSwxMCBAQCB0aGVtLCBzbyB0aGF0IHRoZXkgYXJl IGF2YWlsYWJsZSBmb3Igc3ViCi0gVGhpcyBpcyBtb3N0IHVzZWZ1bCBpbiBjb25qdW5jdGlvbiB3 aXRoIFJlYWRsaW5lLgotIAotIFRoZSBzaGVsbCBhbGxvd3MgY29udHJvbCBvZiB0aGUgdmFyaW91 cyBjaGFyYWN0ZXJzIHVzZWQgYnkgdGhlCi0taGlzdG9yeSBleHBhbnNpb24gbWVjaGFuaXNtIHdp dGggdGhlIEBjb2Rle2hpc3RjaGFyc30gdmFyaWFibGUuCi0raGlzdG9yeSBleHBhbnNpb24gbWVj aGFuaXNtIHdpdGggdGhlIEBjb2Rle2hpc3RjaGFyc30gdmFyaWFibGUsCi0rYXMgZXhwbGFpbmVk IGFib3ZlIChAcHhyZWZ7QmFzaCBWYXJpYWJsZXN9KS4gIFRoZSBzaGVsbCB1c2VzCi0rdGhlIGhp c3RvcnkgY29tbWVudCBjaGFyYWN0ZXIgdG8gbWFyayBoaXN0b3J5IHRpbWVzdGFtcHMgd2hlbgot K3dyaXRpbmcgdGhlIGhpc3RvcnkgZmlsZS4KLSBAZW5kIGlmc2V0Ci0gCi0gQG1lbnUKLUBAIC0y OTIsNiArMjk5LDggQEAgaGlzdG9yeSBleHBhbnNpb24gbWVjaGFuaXNtIHdpdGggdGhlIEBjbwot IAotIEFuIGV2ZW50IGRlc2lnbmF0b3IgaXMgYSByZWZlcmVuY2UgdG8gYSBjb21tYW5kIGxpbmUg ZW50cnkgaW4gdGhlCi0gaGlzdG9yeSBsaXN0LgotK1VubGVzcyB0aGUgcmVmZXJlbmNlIGlzIGFi c29sdXRlLCBldmVudHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50Ci0rcG9zaXRpb24gaW4g dGhlIGhpc3RvcnkgbGlzdC4KLSBAY2luZGV4IGhpc3RvcnkgZXZlbnRzCi0gCi0gQHRhYmxlIEBh c2lzCi1AQCAtMzE3LDEwICszMjYsMTUgQEAgUmVmZXIgdG8gdGhlIGNvbW1hbmQgQHZhcntufSBs aW5lcyBiYWNrLgotIFJlZmVyIHRvIHRoZSBwcmV2aW91cyBjb21tYW5kLiAgVGhpcyBpcyBhIHN5 bm9ueW0gZm9yIEBzYW1weyEtMX0uCi0gCi0gQGl0ZW0gQGNvZGV7IUB2YXJ7c3RyaW5nfX0KLS1S ZWZlciB0byB0aGUgbW9zdCByZWNlbnQgY29tbWFuZCBzdGFydGluZyB3aXRoIEB2YXJ7c3RyaW5n fS4KLStSZWZlciB0byB0aGUgbW9zdCByZWNlbnQgY29tbWFuZAotK3ByZWNlZGluZyB0aGUgY3Vy cmVudCBwb3NpdGlvbiBpbiB0aGUgaGlzdG9yeSBsaXN0Ci0rc3RhcnRpbmcgd2l0aCBAdmFye3N0 cmluZ30uCi0gCi0gQGl0ZW0gQGNvZGV7IT9AdmFye3N0cmluZ31bP119Ci0tUmVmZXIgdG8gdGhl IG1vc3QgcmVjZW50IGNvbW1hbmQgY29udGFpbmluZyBAdmFye3N0cmluZ30uICBUaGUgdHJhaWxp bmcKLStSZWZlciB0byB0aGUgbW9zdCByZWNlbnQgY29tbWFuZAotK3ByZWNlZGluZyB0aGUgY3Vy cmVudCBwb3NpdGlvbiBpbiB0aGUgaGlzdG9yeSBsaXN0Ci0rY29udGFpbmluZyBAdmFye3N0cmlu Z30uCi0rVGhlIHRyYWlsaW5nCi0gQHNhbXB7P30gbWF5IGJlIG9taXR0ZWQgaWYgdGhlIEB2YXJ7 c3RyaW5nfSBpcyBmb2xsb3dlZCBpbW1lZGlhdGVseSBieQotIGEgbmV3bGluZS4KLSAKLUBAIC00 MTIsNyArNDI2LDcgQEAgb2YgdGhlIGZvbGxvd2luZyBtb2RpZmllcnMsIGVhY2ggcHJlY2VkZQot IFJlbW92ZSBhIHRyYWlsaW5nIHBhdGhuYW1lIGNvbXBvbmVudCwgbGVhdmluZyBvbmx5IHRoZSBo ZWFkLgotIAotIEBpdGVtIHQKLS1SZW1vdmUgYWxsIGxlYWRpbmcgIHBhdGhuYW1lICBjb21wb25l bnRzLCBsZWF2aW5nIHRoZSB0YWlsLgotK1JlbW92ZSBhbGwgbGVhZGluZyBwYXRobmFtZSBjb21w b25lbnRzLCBsZWF2aW5nIHRoZSB0YWlsLgotIAotIEBpdGVtIHIKLSBSZW1vdmUgYSB0cmFpbGlu ZyBzdWZmaXggb2YgdGhlIGZvcm0gQHNhbXB7LkB2YXJ7c3VmZml4fX0sIGxlYXZpbmcKLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2RvYy9pbmMtaGlzdC50ZXhpbmZvCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2RvYy9pbmMtaGlz dC50ZXhpbmZvCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgL2Rldi9u dWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi1AQCAtMSw0NTcgKzAsMCBA QAotLUBpZ25vcmUKLS1UaGlzIGZpbGUgZG9jdW1lbnRzIHRoZSB1c2VyIGludGVyZmFjZSB0byB0 aGUgR05VIEhpc3RvcnkgbGlicmFyeS4KLS0KLS1Db3B5cmlnaHQgKEMpIDE5ODgtMjAwMiBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS1BdXRob3JlZCBieSBCcmlhbiBGb3ggYW5kIENo ZXQgUmFtZXkuCi0tCi0tUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIG1ha2UgYW5kIGRpc3RyaWJ1 dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoaXMgbWFudWFsCi0tcHJvdmlkZWQgdGhlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXJlIHByZXNlcnZlZCBvbgotLWFs bCBjb3BpZXMuCi0tCi0tUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIHByb2Nlc3MgdGhpcyBmaWxl IHRocm91Z2ggVGV4IGFuZCBwcmludCB0aGUKLS1yZXN1bHRzLCBwcm92aWRlZCB0aGUgcHJpbnRl ZCBkb2N1bWVudCBjYXJyaWVzIGNvcHlpbmcgcGVybWlzc2lvbiBub3RpY2UKLS1pZGVudGljYWwg dG8gdGhpcyBvbmUgZXhjZXB0IGZvciB0aGUgcmVtb3ZhbCBvZiB0aGlzIHBhcmFncmFwaCAodGhp cwotLXBhcmFncmFwaCBub3QgYmVpbmcgcmVsZXZhbnQgdG8gdGhlIHByaW50ZWQgbWFudWFsKS4K LS0KLS1QZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSBtb2RpZmll ZCB2ZXJzaW9ucyBvZiB0aGlzCi0tbWFudWFsIHVuZGVyIHRoZSBjb25kaXRpb25zIGZvciB2ZXJi YXRpbSBjb3B5aW5nLCBwcm92aWRlZCBhbHNvIHRoYXQgdGhlCi0tR05VIENvcHlyaWdodCBzdGF0 ZW1lbnQgaXMgYXZhaWxhYmxlIHRvIHRoZSBkaXN0cmlidXRlZSwgYW5kIHByb3ZpZGVkIHRoYXQK LS10aGUgZW50aXJlIHJlc3VsdGluZyBkZXJpdmVkIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIg dGhlIHRlcm1zIG9mIGEKLS1wZXJtaXNzaW9uIG5vdGljZSBpZGVudGljYWwgdG8gdGhpcyBvbmUu Ci0tCi0tUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdHJhbnNs YXRpb25zIG9mIHRoaXMgbWFudWFsCi0taW50byBhbm90aGVyIGxhbmd1YWdlLCB1bmRlciB0aGUg YWJvdmUgY29uZGl0aW9ucyBmb3IgbW9kaWZpZWQgdmVyc2lvbnMuCi0tQGVuZCBpZ25vcmUKLS0K LS1Abm9kZSBVc2luZyBIaXN0b3J5IEludGVyYWN0aXZlbHkKLS1AY2hhcHRlciBVc2luZyBIaXN0 b3J5IEludGVyYWN0aXZlbHkKLS0KLS1AYyBAaWZjbGVhciBCYXNoRmVhdHVyZXMKLS1AYyBAZGVm Y29kZWluZGV4IGJ0Ci0tQGMgQGVuZCBpZmNsZWFyCi0tCi0tQGlmc2V0IEJhc2hGZWF0dXJlcwot LVRoaXMgY2hhcHRlciBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUgQHNje2dudX0gSGlzdG9yeSBM aWJyYXJ5Ci0taW50ZXJhY3RpdmVseSwgZnJvbSBhIHVzZXIncyBzdGFuZHBvaW50LgotLUl0IHNo b3VsZCBiZSBjb25zaWRlcmVkIGEgdXNlcidzIGd1aWRlLgotLUZvciBpbmZvcm1hdGlvbiBvbiB1 c2luZyB0aGUgQHNje2dudX0gSGlzdG9yeSBMaWJyYXJ5IGluIG90aGVyIHByb2dyYW1zLAotLXNl ZSB0aGUgQHNje2dudX0gUmVhZGxpbmUgTGlicmFyeSBNYW51YWwuCi0tQGVuZCBpZnNldAotLUBp ZmNsZWFyIEJhc2hGZWF0dXJlcwotLVRoaXMgY2hhcHRlciBkZXNjcmliZXMgaG93IHRvIHVzZSB0 aGUgQHNje2dudX0gSGlzdG9yeSBMaWJyYXJ5IGludGVyYWN0aXZlbHksCi0tZnJvbSBhIHVzZXIn cyBzdGFuZHBvaW50LiAgSXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSB1c2VyJ3MgZ3VpZGUuCi0t Rm9yIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSBAc2N7Z251fSBIaXN0b3J5IExpYnJhcnkgaW4g b3RoZXIgcHJvZ3JhbXMsCi0tc2VlIHRoZSBAc2N7Z251fSBSZWFkbGluZSBMaWJyYXJ5IE1hbnVh bC4KLS1AZW5kIGlmY2xlYXIKLS0KLS1AaWZzZXQgQmFzaEZlYXR1cmVzCi0tQG1lbnUKLS0qIEJh c2ggSGlzdG9yeSBGYWNpbGl0aWVzOjoJSG93IEJhc2ggbGV0cyB5b3UgbWFuaXB1bGF0ZSB5b3Vy IGNvbW1hbmQKLS0JCQkJaGlzdG9yeS4KLS0qIEJhc2ggSGlzdG9yeSBCdWlsdGluczo6CVRoZSBC YXNoIGJ1aWx0aW4gY29tbWFuZHMgdGhhdCBtYW5pcHVsYXRlCi0tCQkJCXRoZSBjb21tYW5kIGhp c3RvcnkuCi0tKiBIaXN0b3J5IEludGVyYWN0aW9uOjoJCVdoYXQgaXQgZmVlbHMgbGlrZSB1c2lu ZyBIaXN0b3J5IGFzIGEgdXNlci4KLS1AZW5kIG1lbnUKLS1AZW5kIGlmc2V0Ci0tQGlmY2xlYXIg QmFzaEZlYXR1cmVzCi0tQG1lbnUKLS0qIEhpc3RvcnkgSW50ZXJhY3Rpb246OgkJV2hhdCBpdCBm ZWVscyBsaWtlIHVzaW5nIEhpc3RvcnkgYXMgYSB1c2VyLgotLUBlbmQgbWVudQotLUBlbmQgaWZj bGVhcgotLQotLUBpZnNldCBCYXNoRmVhdHVyZXMKLS1Abm9kZSBCYXNoIEhpc3RvcnkgRmFjaWxp dGllcwotLUBzZWN0aW9uIEJhc2ggSGlzdG9yeSBGYWNpbGl0aWVzCi0tQGNpbmRleCBjb21tYW5k IGhpc3RvcnkKLS1AY2luZGV4IGhpc3RvcnkgbGlzdAotLQotLVdoZW4gdGhlIEBvcHRpb257LW8g aGlzdG9yeX0gb3B0aW9uIHRvIHRoZSBAY29kZXtzZXR9IGJ1aWx0aW4KLS1pcyBlbmFibGVkIChA cHhyZWZ7VGhlIFNldCBCdWlsdGlufSksCi0tdGhlIHNoZWxsIHByb3ZpZGVzIGFjY2VzcyB0byB0 aGUgQGRmbntjb21tYW5kIGhpc3Rvcnl9LAotLXRoZSBsaXN0IG9mIGNvbW1hbmRzIHByZXZpb3Vz bHkgdHlwZWQuCi0tVGhlIHZhbHVlIG9mIHRoZSBAZW52e0hJU1RTSVpFfSBzaGVsbCB2YXJpYWJs ZSBpcyB1c2VkIGFzIHRoZQotLW51bWJlciBvZiBjb21tYW5kcyB0byBzYXZlIGluIGEgaGlzdG9y eSBsaXN0LgotLVRoZSB0ZXh0IG9mIHRoZSBsYXN0IEBlbnZ7JEhJU1RTSVpFfQotLWNvbW1hbmRz IChkZWZhdWx0IDUwMCkgaXMgc2F2ZWQuCi0tVGhlIHNoZWxsIHN0b3JlcyBlYWNoIGNvbW1hbmQg aW4gdGhlIGhpc3RvcnkgbGlzdCBwcmlvciB0bwotLXBhcmFtZXRlciBhbmQgdmFyaWFibGUgZXhw YW5zaW9uCi0tYnV0IGFmdGVyIGhpc3RvcnkgZXhwYW5zaW9uIGlzIHBlcmZvcm1lZCwgc3ViamVj dCB0byB0aGUKLS12YWx1ZXMgb2YgdGhlIHNoZWxsIHZhcmlhYmxlcwotLUBlbnZ7SElTVElHTk9S RX0gYW5kIEBlbnZ7SElTVENPTlRST0x9LgotLQotLVdoZW4gdGhlIHNoZWxsIHN0YXJ0cyB1cCwg dGhlIGhpc3RvcnkgaXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUKLS1maWxlIG5hbWVkIGJ5IHRoZSBA ZW52e0hJU1RGSUxFfSB2YXJpYWJsZSAoZGVmYXVsdCBAZmlsZXt+Ly5iYXNoX2hpc3Rvcnl9KS4K LS1UaGUgZmlsZSBuYW1lZCBieSB0aGUgdmFsdWUgb2YgQGVudntISVNURklMRX0gaXMgdHJ1bmNh dGVkLCBpZgotLW5lY2Vzc2FyeSwgdG8gY29udGFpbiBubyBtb3JlIHRoYW4gdGhlIG51bWJlciBv ZiBsaW5lcyBzcGVjaWZpZWQgYnkKLS10aGUgdmFsdWUgb2YgdGhlIEBlbnZ7SElTVEZJTEVTSVpF fSB2YXJpYWJsZS4KLS1XaGVuIGFuIGludGVyYWN0aXZlIHNoZWxsIGV4aXRzLCB0aGUgbGFzdAot LUBlbnZ7JEhJU1RTSVpFfSBsaW5lcyBhcmUgY29waWVkIGZyb20gdGhlIGhpc3RvcnkgbGlzdCB0 byB0aGUgZmlsZQotLW5hbWVkIGJ5IEBlbnZ7JEhJU1RGSUxFfS4KLS1JZiB0aGUgQGNvZGV7aGlz dGFwcGVuZH0gc2hlbGwgb3B0aW9uIGlzIHNldCAoQHB4cmVme0Jhc2ggQnVpbHRpbnN9KSwKLS10 aGUgbGluZXMgYXJlIGFwcGVuZGVkIHRvIHRoZSBoaXN0b3J5IGZpbGUsCi0tb3RoZXJ3aXNlIHRo ZSBoaXN0b3J5IGZpbGUgaXMgb3ZlcndyaXR0ZW4uCi0tSWYgQGVudntISVNURklMRX0KLS1pcyB1 bnNldCwgb3IgaWYgdGhlIGhpc3RvcnkgZmlsZSBpcyB1bndyaXRhYmxlLCB0aGUgaGlzdG9yeSBp cwotLW5vdCBzYXZlZC4gIEFmdGVyIHNhdmluZyB0aGUgaGlzdG9yeSwgdGhlIGhpc3RvcnkgZmls ZSBpcyB0cnVuY2F0ZWQKLS10byBjb250YWluIG5vIG1vcmUgdGhhbiBAZW52eyRISVNURklMRVNJ WkV9Ci0tbGluZXMuICBJZiBAZW52e0hJU1RGSUxFU0laRX0gaXMgbm90IHNldCwgbm8gdHJ1bmNh dGlvbiBpcyBwZXJmb3JtZWQuCi0tCi0tSWYgdGhlIEBlbnZ7SElTVFRJTUVGT1JNQVR9IGlzIHNl dCwgdGhlIHRpbWUgc3RhbXAgaW5mb3JtYXRpb24KLS1hc3NvY2lhdGVkIHdpdGggZWFjaCBoaXN0 b3J5IGVudHJ5IGlzIHdyaXR0ZW4gdG8gdGhlIGhpc3RvcnkgZmlsZS4KLS0KLS1UaGUgYnVpbHRp biBjb21tYW5kIEBjb2Rle2ZjfSBtYXkgYmUgdXNlZCB0byBsaXN0IG9yIGVkaXQgYW5kIHJlLWV4 ZWN1dGUKLS1hIHBvcnRpb24gb2YgdGhlIGhpc3RvcnkgbGlzdC4KLS1UaGUgQGNvZGV7aGlzdG9y eX0gYnVpbHRpbiBtYXkgYmUgdXNlZCB0byBkaXNwbGF5IG9yIG1vZGlmeSB0aGUgaGlzdG9yeQot LWxpc3QgYW5kIG1hbmlwdWxhdGUgdGhlIGhpc3RvcnkgZmlsZS4KLS1XaGVuIHVzaW5nIGNvbW1h bmQtbGluZSBlZGl0aW5nLCBzZWFyY2ggY29tbWFuZHMKLS1hcmUgYXZhaWxhYmxlIGluIGVhY2gg ZWRpdGluZyBtb2RlIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlCi0taGlzdG9yeSBsaXN0IChA cHhyZWZ7Q29tbWFuZHMgRm9yIEhpc3Rvcnl9KS4KLS0KLS1UaGUgc2hlbGwgYWxsb3dzIGNvbnRy b2wgb3ZlciB3aGljaCBjb21tYW5kcyBhcmUgc2F2ZWQgb24gdGhlIGhpc3RvcnkKLS1saXN0LiAg VGhlIEBlbnZ7SElTVENPTlRST0x9IGFuZCBAZW52e0hJU1RJR05PUkV9Ci0tdmFyaWFibGVzIG1h eSBiZSBzZXQgdG8gY2F1c2UgdGhlIHNoZWxsIHRvIHNhdmUgb25seSBhIHN1YnNldCBvZiB0aGUK LS1jb21tYW5kcyBlbnRlcmVkLgotLVRoZSBAY29kZXtjbWRoaXN0fQotLXNoZWxsIG9wdGlvbiwg aWYgZW5hYmxlZCwgY2F1c2VzIHRoZSBzaGVsbCB0byBhdHRlbXB0IHRvIHNhdmUgZWFjaAotLWxp bmUgb2YgYSBtdWx0aS1saW5lIGNvbW1hbmQgaW4gdGhlIHNhbWUgaGlzdG9yeSBlbnRyeSwgYWRk aW5nCi0tc2VtaWNvbG9ucyB3aGVyZSBuZWNlc3NhcnkgdG8gcHJlc2VydmUgc3ludGFjdGljIGNv cnJlY3RuZXNzLgotLVRoZSBAY29kZXtsaXRoaXN0fQotLXNoZWxsIG9wdGlvbiBjYXVzZXMgdGhl IHNoZWxsIHRvIHNhdmUgdGhlIGNvbW1hbmQgd2l0aCBlbWJlZGRlZCBuZXdsaW5lcwotLWluc3Rl YWQgb2Ygc2VtaWNvbG9ucy4KLS1UaGUgQGNvZGV7c2hvcHR9IGJ1aWx0aW4gaXMgdXNlZCB0byBz ZXQgdGhlc2Ugb3B0aW9ucy4KLS1AeHJlZntCYXNoIEJ1aWx0aW5zfSwgZm9yIGEgZGVzY3JpcHRp b24gb2YgQGNvZGV7c2hvcHR9LgotLQotLUBub2RlIEJhc2ggSGlzdG9yeSBCdWlsdGlucwotLUBz ZWN0aW9uIEJhc2ggSGlzdG9yeSBCdWlsdGlucwotLUBjaW5kZXggaGlzdG9yeSBidWlsdGlucwot LQotLUJhc2ggcHJvdmlkZXMgdHdvIGJ1aWx0aW4gY29tbWFuZHMgd2hpY2ggbWFuaXB1bGF0ZSB0 aGUKLS1oaXN0b3J5IGxpc3QgYW5kIGhpc3RvcnkgZmlsZS4KLS0KLS1AdGFibGUgQGNvZGUKLS0K LS1AaXRlbSBmYwotLUBidGluZGV4IGZjCi0tQGV4YW1wbGUKLS1AY29kZXtmYyBbLWUgQHZhcntl bmFtZX1dIFstbmxyXSBbQHZhcntmaXJzdH1dIFtAdmFye2xhc3R9XX0KLS1AY29kZXtmYyAtcyBb QHZhcntwYXR9PUB2YXJ7cmVwfV0gW0B2YXJ7Y29tbWFuZH1dfQotLUBlbmQgZXhhbXBsZQotLQot LUZpeCBDb21tYW5kLiAgSW4gdGhlIGZpcnN0IGZvcm0sIGEgcmFuZ2Ugb2YgY29tbWFuZHMgZnJv bSBAdmFye2ZpcnN0fSB0bwotLUB2YXJ7bGFzdH0gaXMgc2VsZWN0ZWQgZnJvbSB0aGUgaGlzdG9y eSBsaXN0LiAgQm90aCBAdmFye2ZpcnN0fSBhbmQKLS1AdmFye2xhc3R9IG1heSBiZSBzcGVjaWZp ZWQgYXMgYSBzdHJpbmcgKHRvIGxvY2F0ZSB0aGUgbW9zdCByZWNlbnQKLS1jb21tYW5kIGJlZ2lu bmluZyB3aXRoIHRoYXQgc3RyaW5nKSBvciBhcyBhIG51bWJlciAoYW4gaW5kZXggaW50byB0aGUK LS1oaXN0b3J5IGxpc3QsIHdoZXJlIGEgbmVnYXRpdmUgbnVtYmVyIGlzIHVzZWQgYXMgYW4gb2Zm c2V0IGZyb20gdGhlCi0tY3VycmVudCBjb21tYW5kIG51bWJlcikuICBJZiBAdmFye2xhc3R9IGlz IG5vdCBzcGVjaWZpZWQgaXQgaXMgc2V0IHRvCi0tQHZhcntmaXJzdH0uICBJZiBAdmFye2ZpcnN0 fSBpcyBub3Qgc3BlY2lmaWVkIGl0IGlzIHNldCB0byB0aGUgcHJldmlvdXMKLS1jb21tYW5kIGZv ciBlZGl0aW5nIGFuZCBAbWludXN7fTE2IGZvciBsaXN0aW5nLiAgSWYgdGhlIEBvcHRpb257LWx9 IGZsYWcgaXMKLS1naXZlbiwgdGhlIGNvbW1hbmRzIGFyZSBsaXN0ZWQgb24gc3RhbmRhcmQgb3V0 cHV0LiAgVGhlIEBvcHRpb257LW59IGZsYWcKLS1zdXBwcmVzc2VzIHRoZSBjb21tYW5kIG51bWJl cnMgd2hlbiBsaXN0aW5nLiAgVGhlIEBvcHRpb257LXJ9IGZsYWcKLS1yZXZlcnNlcyB0aGUgb3Jk ZXIgb2YgdGhlIGxpc3RpbmcuICBPdGhlcndpc2UsIHRoZSBlZGl0b3IgZ2l2ZW4gYnkKLS1AdmFy e2VuYW1lfSBpcyBpbnZva2VkIG9uIGEgZmlsZSBjb250YWluaW5nIHRob3NlIGNvbW1hbmRzLiAg SWYKLS1AdmFye2VuYW1lfSBpcyBub3QgZ2l2ZW4sIHRoZSB2YWx1ZSBvZiB0aGUgZm9sbG93aW5n IHZhcmlhYmxlIGV4cGFuc2lvbgotLWlzIHVzZWQ6IEBjb2RleyRAe0ZDRURJVDotJEB7RURJVE9S Oi12aUB9QH19LiAgVGhpcyBzYXlzIHRvIHVzZSB0aGUKLS12YWx1ZSBvZiB0aGUgQGVudntGQ0VE SVR9IHZhcmlhYmxlIGlmIHNldCwgb3IgdGhlIHZhbHVlIG9mIHRoZQotLUBlbnZ7RURJVE9SfSB2 YXJpYWJsZSBpZiB0aGF0IGlzIHNldCwgb3IgQGNvZGV7dml9IGlmIG5laXRoZXIgaXMgc2V0Lgot LVdoZW4gZWRpdGluZyBpcyBjb21wbGV0ZSwgdGhlIGVkaXRlZCBjb21tYW5kcyBhcmUgZWNob2Vk IGFuZCBleGVjdXRlZC4KLS0KLS1JbiB0aGUgc2Vjb25kIGZvcm0sIEB2YXJ7Y29tbWFuZH0gaXMg cmUtZXhlY3V0ZWQgYWZ0ZXIgZWFjaCBpbnN0YW5jZQotLW9mIEB2YXJ7cGF0fSBpbiB0aGUgc2Vs ZWN0ZWQgY29tbWFuZCBpcyByZXBsYWNlZCBieSBAdmFye3JlcH0uCi0tCi0tQSB1c2VmdWwgYWxp YXMgdG8gdXNlIHdpdGggdGhlIEBjb2Rle2ZjfSBjb21tYW5kIGlzIEBjb2Rle3I9J2ZjIC1zJ30s IHNvCi0tdGhhdCB0eXBpbmcgQHNhbXB7ciBjY30gcnVucyB0aGUgbGFzdCBjb21tYW5kIGJlZ2lu bmluZyB3aXRoIEBjb2Rle2NjfQotLWFuZCB0eXBpbmcgQHNhbXB7cn0gcmUtZXhlY3V0ZXMgdGhl IGxhc3QgY29tbWFuZCAoQHB4cmVme0FsaWFzZXN9KS4KLS0KLS1AaXRlbSBoaXN0b3J5Ci0tQGJ0 aW5kZXggaGlzdG9yeQotLUBleGFtcGxlCi0taGlzdG9yeSBbQHZhcntufV0KLS1oaXN0b3J5IC1j Ci0taGlzdG9yeSAtZCBAdmFye29mZnNldH0KLS1oaXN0b3J5IFstYW5yd10gW0B2YXJ7ZmlsZW5h bWV9XQotLWhpc3RvcnkgLXBzIEB2YXJ7YXJnfQotLUBlbmQgZXhhbXBsZQotLQotLVdpdGggbm8g b3B0aW9ucywgZGlzcGxheSB0aGUgaGlzdG9yeSBsaXN0IHdpdGggbGluZSBudW1iZXJzLgotLUxp bmVzIHByZWZpeGVkIHdpdGggYSBAc2FtcHsqfSBoYXZlIGJlZW4gbW9kaWZpZWQuCi0tQW4gYXJn dW1lbnQgb2YgQHZhcntufSBsaXN0cyBvbmx5IHRoZSBsYXN0IEB2YXJ7bn0gbGluZXMuCi0tSWYg dGhlIHNoZWxsIHZhcmlhYmxlIEBlbnZ7SElTVFRJTUVGT1JNQVR9IGlzIHNldCBhbmQgbm90IG51 bGwsCi0taXQgaXMgdXNlZCBhcyBhIGZvcm1hdCBzdHJpbmcgZm9yIEB2YXJ7c3RyZnRpbWV9IHRv IGRpc3BsYXkKLS10aGUgdGltZSBzdGFtcCBhc3NvY2lhdGVkIHdpdGggZWFjaCBkaXNwbGF5ZWQg aGlzdG9yeSBlbnRyeS4KLS1ObyBpbnRlcnZlbmluZyBibGFuayBpcyBwcmludGVkIGJldHdlZW4g dGhlIGZvcm1hdHRlZCB0aW1lIHN0YW1wCi0tYW5kIHRoZSBoaXN0b3J5IGxpbmUuCi0tCi0tT3B0 aW9ucywgaWYgc3VwcGxpZWQsIGhhdmUgdGhlIGZvbGxvd2luZyBtZWFuaW5nczoKLS0KLS1AdGFi bGUgQGNvZGUKLS1AaXRlbSAtYwotLUNsZWFyIHRoZSBoaXN0b3J5IGxpc3QuICBUaGlzIG1heSBi ZSBjb21iaW5lZAotLXdpdGggdGhlIG90aGVyIG9wdGlvbnMgdG8gcmVwbGFjZSB0aGUgaGlzdG9y eSBsaXN0IGNvbXBsZXRlbHkuCi0tCi0tQGl0ZW0gLWQgQHZhcntvZmZzZXR9Ci0tRGVsZXRlIHRo ZSBoaXN0b3J5IGVudHJ5IGF0IHBvc2l0aW9uIEB2YXJ7b2Zmc2V0fS4KLS1AdmFye29mZnNldH0g c2hvdWxkIGJlIHNwZWNpZmllZCBhcyBpdCBhcHBlYXJzIHdoZW4gdGhlIGhpc3RvcnkgaXMKLS1k aXNwbGF5ZWQuCi0tCi0tQGl0ZW0gLWEKLS1BcHBlbmQgdGhlIG5ldwotLWhpc3RvcnkgbGluZXMg KGhpc3RvcnkgbGluZXMgZW50ZXJlZCBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHRoZQotLWN1cnJl bnQgQmFzaCBzZXNzaW9uKSB0byB0aGUgaGlzdG9yeSBmaWxlLgotLQotLUBpdGVtIC1uCi0tQXBw ZW5kIHRoZSBoaXN0b3J5IGxpbmVzIG5vdCBhbHJlYWR5IHJlYWQgZnJvbSB0aGUgaGlzdG9yeSBm aWxlCi0tdG8gdGhlIGN1cnJlbnQgaGlzdG9yeSBsaXN0LiAgVGhlc2UgYXJlIGxpbmVzIGFwcGVu ZGVkIHRvIHRoZSBoaXN0b3J5Ci0tZmlsZSBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJy ZW50IEJhc2ggc2Vzc2lvbi4KLS0KLS1AaXRlbSAtcgotLVJlYWQgdGhlIGN1cnJlbnQgaGlzdG9y eSBmaWxlIGFuZCBhcHBlbmQgaXRzIGNvbnRlbnRzIHRvCi0tdGhlIGhpc3RvcnkgbGlzdC4KLS0K LS1AaXRlbSAtdwotLVdyaXRlIG91dCB0aGUgY3VycmVudCBoaXN0b3J5IHRvIHRoZSBoaXN0b3J5 IGZpbGUuCi0tCi0tQGl0ZW0gLXAKLS1QZXJmb3JtIGhpc3Rvcnkgc3Vic3RpdHV0aW9uIG9uIHRo ZSBAdmFye2FyZ31zIGFuZCBkaXNwbGF5IHRoZSByZXN1bHQKLS1vbiB0aGUgc3RhbmRhcmQgb3V0 cHV0LCB3aXRob3V0IHN0b3JpbmcgdGhlIHJlc3VsdHMgaW4gdGhlIGhpc3RvcnkgbGlzdC4KLS0K LS1AaXRlbSAtcwotLVRoZSBAdmFye2FyZ31zIGFyZSBhZGRlZCB0byB0aGUgZW5kIG9mCi0tdGhl IGhpc3RvcnkgbGlzdCBhcyBhIHNpbmdsZSBlbnRyeS4KLS0KLS1AZW5kIHRhYmxlCi0tCi0tV2hl biBhbnkgb2YgdGhlIEBvcHRpb257LXd9LCBAb3B0aW9uey1yfSwgQG9wdGlvbnstYX0sIG9yIEBv cHRpb257LW59IG9wdGlvbnMgaXMKLS11c2VkLCBpZiBAdmFye2ZpbGVuYW1lfQotLWlzIGdpdmVu LCB0aGVuIGl0IGlzIHVzZWQgYXMgdGhlIGhpc3RvcnkgZmlsZS4gIElmIG5vdCwgdGhlbgotLXRo ZSB2YWx1ZSBvZiB0aGUgQGVudntISVNURklMRX0gdmFyaWFibGUgaXMgdXNlZC4KLS0KLS1AZW5k IHRhYmxlCi0tQGVuZCBpZnNldAotLQotLUBub2RlIEhpc3RvcnkgSW50ZXJhY3Rpb24KLS1Ac2Vj dGlvbiBIaXN0b3J5IEV4cGFuc2lvbgotLUBjaW5kZXggaGlzdG9yeSBleHBhbnNpb24KLS0KLS1U aGUgSGlzdG9yeSBsaWJyYXJ5IHByb3ZpZGVzIGEgaGlzdG9yeSBleHBhbnNpb24gZmVhdHVyZSB0 aGF0IGlzIHNpbWlsYXIKLS10byB0aGUgaGlzdG9yeSBleHBhbnNpb24gcHJvdmlkZWQgYnkgQGNv ZGV7Y3NofS4gIFRoaXMgc2VjdGlvbgotLWRlc2NyaWJlcyB0aGUgc3ludGF4IHVzZWQgdG8gbWFu aXB1bGF0ZSB0aGUgaGlzdG9yeSBpbmZvcm1hdGlvbi4KLS0KLS1IaXN0b3J5IGV4cGFuc2lvbnMg aW50cm9kdWNlIHdvcmRzIGZyb20gdGhlIGhpc3RvcnkgbGlzdCBpbnRvCi0tdGhlIGlucHV0IHN0 cmVhbSwgbWFraW5nIGl0IGVhc3kgdG8gcmVwZWF0IGNvbW1hbmRzLCBpbnNlcnQgdGhlCi0tYXJn dW1lbnRzIHRvIGEgcHJldmlvdXMgY29tbWFuZCBpbnRvIHRoZSBjdXJyZW50IGlucHV0IGxpbmUs IG9yCi0tZml4IGVycm9ycyBpbiBwcmV2aW91cyBjb21tYW5kcyBxdWlja2x5LgotLQotLUhpc3Rv cnkgZXhwYW5zaW9uIHRha2VzIHBsYWNlIGluIHR3byBwYXJ0cy4gIFRoZSBmaXJzdCBpcyB0byBk ZXRlcm1pbmUKLS13aGljaCBsaW5lIGZyb20gdGhlIGhpc3RvcnkgbGlzdCBzaG91bGQgYmUgdXNl ZCBkdXJpbmcgc3Vic3RpdHV0aW9uLgotLVRoZSBzZWNvbmQgaXMgdG8gc2VsZWN0IHBvcnRpb25z IG9mIHRoYXQgbGluZSBmb3IgaW5jbHVzaW9uIGludG8gdGhlCi0tY3VycmVudCBvbmUuICBUaGUg bGluZSBzZWxlY3RlZCBmcm9tIHRoZSBoaXN0b3J5IGlzIGNhbGxlZCB0aGUKLS1AZGZue2V2ZW50 fSwgYW5kIHRoZSBwb3J0aW9ucyBvZiB0aGF0IGxpbmUgdGhhdCBhcmUgYWN0ZWQgdXBvbiBhcmUK LS1jYWxsZWQgQGRmbnt3b3Jkc30uICBWYXJpb3VzIEBkZm57bW9kaWZpZXJzfSBhcmUgYXZhaWxh YmxlIHRvIG1hbmlwdWxhdGUKLS10aGUgc2VsZWN0ZWQgd29yZHMuICBUaGUgbGluZSBpcyBicm9r ZW4gaW50byB3b3JkcyBpbiB0aGUgc2FtZSBmYXNoaW9uCi0tdGhhdCBCYXNoIGRvZXMsIHNvIHRo YXQgc2V2ZXJhbCB3b3JkcwotLXN1cnJvdW5kZWQgYnkgcXVvdGVzIGFyZSBjb25zaWRlcmVkIG9u ZSB3b3JkLgotLUhpc3RvcnkgZXhwYW5zaW9ucyBhcmUgaW50cm9kdWNlZCBieSB0aGUgYXBwZWFy YW5jZSBvZiB0aGUKLS1oaXN0b3J5IGV4cGFuc2lvbiBjaGFyYWN0ZXIsIHdoaWNoIGlzIEBzYW1w eyF9IGJ5IGRlZmF1bHQuCi0tQGlmc2V0IEJhc2hGZWF0dXJlcwotLU9ubHkgQHNhbXB7XH0gYW5k IEBzYW1weyd9IG1heSBiZSB1c2VkIHRvIGVzY2FwZSB0aGUgaGlzdG9yeSBleHBhbnNpb24KLS1j aGFyYWN0ZXIuCi0tQGVuZCBpZnNldAotLQotLUBpZnNldCBCYXNoRmVhdHVyZXMKLS1TZXZlcmFs IHNoZWxsIG9wdGlvbnMgc2V0dGFibGUgd2l0aCB0aGUgQGNvZGV7c2hvcHR9Ci0tYnVpbHRpbiAo QHB4cmVme0Jhc2ggQnVpbHRpbnN9KSBtYXkgYmUgdXNlZCB0byB0YWlsb3IKLS10aGUgYmVoYXZp b3Igb2YgaGlzdG9yeSBleHBhbnNpb24uICBJZiB0aGUKLS1AY29kZXtoaXN0dmVyaWZ5fSBzaGVs bCBvcHRpb24gaXMgZW5hYmxlZCwgYW5kIFJlYWRsaW5lCi0taXMgYmVpbmcgdXNlZCwgaGlzdG9y eSBzdWJzdGl0dXRpb25zIGFyZSBub3QgaW1tZWRpYXRlbHkgcGFzc2VkIHRvCi0tdGhlIHNoZWxs IHBhcnNlci4KLS1JbnN0ZWFkLCB0aGUgZXhwYW5kZWQgbGluZSBpcyByZWxvYWRlZCBpbnRvIHRo ZSBSZWFkbGluZQotLWVkaXRpbmcgYnVmZmVyIGZvciBmdXJ0aGVyIG1vZGlmaWNhdGlvbi4KLS1J ZiBSZWFkbGluZSBpcyBiZWluZyB1c2VkLCBhbmQgdGhlIEBjb2Rle2hpc3RyZWVkaXR9Ci0tc2hl bGwgb3B0aW9uIGlzIGVuYWJsZWQsIGEgZmFpbGVkIGhpc3RvcnkgZXhwYW5zaW9uIHdpbGwgYmUK LS1yZWxvYWRlZCBpbnRvIHRoZSBSZWFkbGluZSBlZGl0aW5nIGJ1ZmZlciBmb3IgY29ycmVjdGlv bi4KLS1UaGUgQG9wdGlvbnstcH0gb3B0aW9uIHRvIHRoZSBAY29kZXtoaXN0b3J5fSBidWlsdGlu IGNvbW1hbmQKLS1tYXkgYmUgdXNlZCB0byBzZWUgd2hhdCBhIGhpc3RvcnkgZXhwYW5zaW9uIHdp bGwgZG8gYmVmb3JlIHVzaW5nIGl0LgotLVRoZSBAb3B0aW9uey1zfSBvcHRpb24gdG8gdGhlIEBj b2Rle2hpc3Rvcnl9IGJ1aWx0aW4gbWF5IGJlIHVzZWQgdG8KLS1hZGQgY29tbWFuZHMgdG8gdGhl IGVuZCBvZiB0aGUgaGlzdG9yeSBsaXN0IHdpdGhvdXQgYWN0dWFsbHkgZXhlY3V0aW5nCi0tdGhl bSwgc28gdGhhdCB0aGV5IGFyZSBhdmFpbGFibGUgZm9yIHN1YnNlcXVlbnQgcmVjYWxsLgotLVRo aXMgaXMgbW9zdCB1c2VmdWwgaW4gY29uanVuY3Rpb24gd2l0aCBSZWFkbGluZS4KLS0KLS1UaGUg c2hlbGwgYWxsb3dzIGNvbnRyb2wgb2YgdGhlIHZhcmlvdXMgY2hhcmFjdGVycyB1c2VkIGJ5IHRo ZQotLWhpc3RvcnkgZXhwYW5zaW9uIG1lY2hhbmlzbSB3aXRoIHRoZSBAY29kZXtoaXN0Y2hhcnN9 IHZhcmlhYmxlLgotLUBlbmQgaWZzZXQKLS0KLS1AbWVudQotLSogRXZlbnQgRGVzaWduYXRvcnM6 OglIb3cgdG8gc3BlY2lmeSB3aGljaCBoaXN0b3J5IGxpbmUgdG8gdXNlLgotLSogV29yZCBEZXNp Z25hdG9yczo6CVNwZWNpZnlpbmcgd2hpY2ggd29yZHMgYXJlIG9mIGludGVyZXN0LgotLSogTW9k aWZpZXJzOjoJCU1vZGlmeWluZyB0aGUgcmVzdWx0cyBvZiBzdWJzdGl0dXRpb24uCi0tQGVuZCBt ZW51Ci0tCi0tQG5vZGUgRXZlbnQgRGVzaWduYXRvcnMKLS1Ac3Vic2VjdGlvbiBFdmVudCBEZXNp Z25hdG9ycwotLUBjaW5kZXggZXZlbnQgZGVzaWduYXRvcnMKLS0KLS1BbiBldmVudCBkZXNpZ25h dG9yIGlzIGEgcmVmZXJlbmNlIHRvIGEgY29tbWFuZCBsaW5lIGVudHJ5IGluIHRoZQotLWhpc3Rv cnkgbGlzdC4KLS1AY2luZGV4IGhpc3RvcnkgZXZlbnRzCi0tCi0tQHRhYmxlIEBhc2lzCi0tCi0t QGl0ZW0gQGNvZGV7IX0KLS1AaWZzZXQgQmFzaEZlYXR1cmVzCi0tU3RhcnQgYSBoaXN0b3J5IHN1 YnN0aXR1dGlvbiwgZXhjZXB0IHdoZW4gZm9sbG93ZWQgYnkgYSBzcGFjZSwgdGFiLAotLXRoZSBl bmQgb2YgdGhlIGxpbmUsIEBzYW1wez19IG9yIEBzYW1weyh9ICh3aGVuIHRoZQotLUBjb2Rle2V4 dGdsb2J9IHNoZWxsIG9wdGlvbiBpcyBlbmFibGVkIHVzaW5nIHRoZSBAY29kZXtzaG9wdH0gYnVp bHRpbikuCi0tQGVuZCBpZnNldAotLUBpZmNsZWFyIEJhc2hGZWF0dXJlcwotLVN0YXJ0IGEgaGlz dG9yeSBzdWJzdGl0dXRpb24sIGV4Y2VwdCB3aGVuIGZvbGxvd2VkIGJ5IGEgc3BhY2UsIHRhYiwK LS10aGUgZW5kIG9mIHRoZSBsaW5lLCBvciBAc2FtcHs9fS4KLS1AZW5kIGlmY2xlYXIKLS0KLS1A aXRlbSBAY29kZXshQHZhcntufX0KLS1SZWZlciB0byBjb21tYW5kIGxpbmUgQHZhcntufS4KLS0K LS1AaXRlbSBAY29kZXshLUB2YXJ7bn19Ci0tUmVmZXIgdG8gdGhlIGNvbW1hbmQgQHZhcntufSBs aW5lcyBiYWNrLgotLQotLUBpdGVtIEBjb2RleyEhfQotLVJlZmVyIHRvIHRoZSBwcmV2aW91cyBj b21tYW5kLiAgVGhpcyBpcyBhIHN5bm9ueW0gZm9yIEBzYW1weyEtMX0uCi0tCi0tQGl0ZW0gQGNv ZGV7IUB2YXJ7c3RyaW5nfX0KLS1SZWZlciB0byB0aGUgbW9zdCByZWNlbnQgY29tbWFuZCBzdGFy dGluZyB3aXRoIEB2YXJ7c3RyaW5nfS4KLS0KLS1AaXRlbSBAY29kZXshP0B2YXJ7c3RyaW5nfVs/ XX0KLS1SZWZlciB0byB0aGUgbW9zdCByZWNlbnQgY29tbWFuZCBjb250YWluaW5nIEB2YXJ7c3Ry aW5nfS4gIFRoZSB0cmFpbGluZwotLUBzYW1wez99IG1heSBiZSBvbWl0dGVkIGlmIHRoZSBAdmFy e3N0cmluZ30gaXMgZm9sbG93ZWQgaW1tZWRpYXRlbHkgYnkKLS1hIG5ld2xpbmUuCi0tCi0tQGl0 ZW0gQGNvZGV7XkB2YXJ7c3RyaW5nMX1eQHZhcntzdHJpbmcyfV59Ci0tUXVpY2sgU3Vic3RpdHV0 aW9uLiAgUmVwZWF0IHRoZSBsYXN0IGNvbW1hbmQsIHJlcGxhY2luZyBAdmFye3N0cmluZzF9Ci0t d2l0aCBAdmFye3N0cmluZzJ9LiAgRXF1aXZhbGVudCB0bwotLUBjb2RleyEhOnMvQHZhcntzdHJp bmcxfS9AdmFye3N0cmluZzJ9L30uCi0tCi0tQGl0ZW0gQGNvZGV7ISN9Ci0tVGhlIGVudGlyZSBj b21tYW5kIGxpbmUgdHlwZWQgc28gZmFyLgotLQotLUBlbmQgdGFibGUKLS0KLS1Abm9kZSBXb3Jk IERlc2lnbmF0b3JzCi0tQHN1YnNlY3Rpb24gV29yZCBEZXNpZ25hdG9ycwotLQotLVdvcmQgZGVz aWduYXRvcnMgYXJlIHVzZWQgdG8gc2VsZWN0IGRlc2lyZWQgd29yZHMgZnJvbSB0aGUgZXZlbnQu Ci0tQSBAc2FtcHs6fSBzZXBhcmF0ZXMgdGhlIGV2ZW50IHNwZWNpZmljYXRpb24gZnJvbSB0aGUg d29yZCBkZXNpZ25hdG9yLiAgSXQKLS1tYXkgYmUgb21pdHRlZCBpZiB0aGUgd29yZCBkZXNpZ25h dG9yIGJlZ2lucyB3aXRoIGEgQHNhbXB7Xn0sIEBzYW1weyR9LAotLUBzYW1weyp9LCBAc2FtcHst fSwgb3IgQHNhbXB7JX0uICBXb3JkcyBhcmUgbnVtYmVyZWQgZnJvbSB0aGUgYmVnaW5uaW5nCi0t b2YgdGhlIGxpbmUsIHdpdGggdGhlIGZpcnN0IHdvcmQgYmVpbmcgZGVub3RlZCBieSAwICh6ZXJv KS4gIFdvcmRzIGFyZQotLWluc2VydGVkIGludG8gdGhlIGN1cnJlbnQgbGluZSBzZXBhcmF0ZWQg Ynkgc2luZ2xlIHNwYWNlcy4KLS0KLS1AbmVlZCAwLjc1Ci0tRm9yIGV4YW1wbGUsCi0tCi0tQHRh YmxlIEBjb2RlCi0tQGl0ZW0gISEKLS1kZXNpZ25hdGVzIHRoZSBwcmVjZWRpbmcgY29tbWFuZC4g IFdoZW4geW91IHR5cGUgdGhpcywgdGhlIHByZWNlZGluZwotLWNvbW1hbmQgaXMgcmVwZWF0ZWQg aW4gdG90by4KLS0KLS1AaXRlbSAhITokCi0tZGVzaWduYXRlcyB0aGUgbGFzdCBhcmd1bWVudCBv ZiB0aGUgcHJlY2VkaW5nIGNvbW1hbmQuICBUaGlzIG1heSBiZQotLXNob3J0ZW5lZCB0byBAY29k ZXshJH0uCi0tCi0tQGl0ZW0gIWZpOjIKLS1kZXNpZ25hdGVzIHRoZSBzZWNvbmQgYXJndW1lbnQg b2YgdGhlIG1vc3QgcmVjZW50IGNvbW1hbmQgc3RhcnRpbmcgd2l0aAotLXRoZSBsZXR0ZXJzIEBj b2Rle2ZpfS4KLS1AZW5kIHRhYmxlCi0tCi0tQG5lZWQgMC43NQotLUhlcmUgYXJlIHRoZSB3b3Jk IGRlc2lnbmF0b3JzOgotLSAKLS1AdGFibGUgQGNvZGUKLS0KLS1AaXRlbSAwICh6ZXJvKQotLVRo ZSBAY29kZXswfXRoIHdvcmQuICBGb3IgbWFueSBhcHBsaWNhdGlvbnMsIHRoaXMgaXMgdGhlIGNv bW1hbmQgd29yZC4KLS0KLS1AaXRlbSBAdmFye259Ci0tVGhlIEB2YXJ7bn10aCB3b3JkLgotLQot LUBpdGVtIF4KLS1UaGUgZmlyc3QgYXJndW1lbnQ7IHRoYXQgaXMsIHdvcmQgMS4KLS0KLS1AaXRl bSAkCi0tVGhlIGxhc3QgYXJndW1lbnQuCi0tCi0tQGl0ZW0gJQotLVRoZSB3b3JkIG1hdGNoZWQg YnkgdGhlIG1vc3QgcmVjZW50IEBzYW1wez9AdmFye3N0cmluZ30/fSBzZWFyY2guCi0tCi0tQGl0 ZW0gQHZhcnt4fS1AdmFye3l9Ci0tQSByYW5nZSBvZiB3b3JkczsgQHNhbXB7LUB2YXJ7eX19IGFi YnJldmlhdGVzIEBzYW1wezAtQHZhcnt5fX0uCi0tCi0tQGl0ZW0gKgotLUFsbCBvZiB0aGUgd29y ZHMsIGV4Y2VwdCB0aGUgQGNvZGV7MH10aC4gIFRoaXMgaXMgYSBzeW5vbnltIGZvciBAc2FtcHsx LSR9LgotLUl0IGlzIG5vdCBhbiBlcnJvciB0byB1c2UgQHNhbXB7Kn0gaWYgdGhlcmUgaXMganVz dCBvbmUgd29yZCBpbiB0aGUgZXZlbnQ7Ci0tdGhlIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBp biB0aGF0IGNhc2UuCi0tCi0tQGl0ZW0gQHZhcnt4fSoKLS1BYmJyZXZpYXRlcyBAc2FtcHtAdmFy e3h9LSR9Ci0tCi0tQGl0ZW0gQHZhcnt4fS0KLS1BYmJyZXZpYXRlcyBAc2FtcHtAdmFye3h9LSR9 IGxpa2UgQHNhbXB7QHZhcnt4fSp9LCBidXQgb21pdHMgdGhlIGxhc3Qgd29yZC4KLS0KLS1AZW5k IHRhYmxlCi0tCi0tSWYgYSB3b3JkIGRlc2lnbmF0b3IgaXMgc3VwcGxpZWQgd2l0aG91dCBhbiBl dmVudCBzcGVjaWZpY2F0aW9uLCB0aGUKLS1wcmV2aW91cyBjb21tYW5kIGlzIHVzZWQgYXMgdGhl IGV2ZW50LgotLQotLUBub2RlIE1vZGlmaWVycwotLUBzdWJzZWN0aW9uIE1vZGlmaWVycwotLQot LUFmdGVyIHRoZSBvcHRpb25hbCB3b3JkIGRlc2lnbmF0b3IsIHlvdSBjYW4gYWRkIGEgc2VxdWVu Y2Ugb2Ygb25lIG9yIG1vcmUKLS1vZiB0aGUgZm9sbG93aW5nIG1vZGlmaWVycywgZWFjaCBwcmVj ZWRlZCBieSBhIEBzYW1wezp9LgotLQotLUB0YWJsZSBAY29kZQotLQotLUBpdGVtIGgKLS1SZW1v dmUgYSB0cmFpbGluZyBwYXRobmFtZSBjb21wb25lbnQsIGxlYXZpbmcgb25seSB0aGUgaGVhZC4K LS0KLS1AaXRlbSB0Ci0tUmVtb3ZlIGFsbCBsZWFkaW5nICBwYXRobmFtZSAgY29tcG9uZW50cywg bGVhdmluZyB0aGUgdGFpbC4KLS0KLS1AaXRlbSByCi0tUmVtb3ZlIGEgdHJhaWxpbmcgc3VmZml4 IG9mIHRoZSBmb3JtIEBzYW1wey5AdmFye3N1ZmZpeH19LCBsZWF2aW5nCi0tdGhlIGJhc2VuYW1l LgotLQotLUBpdGVtIGUKLS1SZW1vdmUgYWxsIGJ1dCB0aGUgdHJhaWxpbmcgc3VmZml4LgotLQot LUBpdGVtIHAKLS1QcmludCB0aGUgbmV3IGNvbW1hbmQgYnV0IGRvIG5vdCBleGVjdXRlIGl0Lgot LQotLUBpZnNldCBCYXNoRmVhdHVyZXMKLS1AaXRlbSBxCi0tUXVvdGUgdGhlIHN1YnN0aXR1dGVk IHdvcmRzLCBlc2NhcGluZyBmdXJ0aGVyIHN1YnN0aXR1dGlvbnMuCi0tCi0tQGl0ZW0geAotLVF1 b3RlIHRoZSBzdWJzdGl0dXRlZCB3b3JkcyBhcyB3aXRoIEBzYW1we3F9LAotLWJ1dCBicmVhayBp bnRvIHdvcmRzIGF0IHNwYWNlcywgdGFicywgYW5kIG5ld2xpbmVzLgotLUBlbmQgaWZzZXQKLS0K LS1AaXRlbSBzL0B2YXJ7b2xkfS9AdmFye25ld30vCi0tU3Vic3RpdHV0ZSBAdmFye25ld30gZm9y IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIEB2YXJ7b2xkfSBpbiB0aGUKLS1ldmVudCBsaW5lLiAg QW55IGRlbGltaXRlciBtYXkgYmUgdXNlZCBpbiBwbGFjZSBvZiBAc2FtcHsvfS4KLS1UaGUgZGVs aW1pdGVyIG1heSBiZSBxdW90ZWQgaW4gQHZhcntvbGR9IGFuZCBAdmFye25ld30KLS13aXRoIGEg c2luZ2xlIGJhY2tzbGFzaC4gIElmIEBzYW1weyZ9IGFwcGVhcnMgaW4gQHZhcntuZXd9LAotLWl0 IGlzIHJlcGxhY2VkIGJ5IEB2YXJ7b2xkfS4gIEEgc2luZ2xlIGJhY2tzbGFzaCB3aWxsIHF1b3Rl Ci0tdGhlIEBzYW1weyZ9LiAgVGhlIGZpbmFsIGRlbGltaXRlciBpcyBvcHRpb25hbCBpZiBpdCBp cyB0aGUgbGFzdAotLWNoYXJhY3RlciBvbiB0aGUgaW5wdXQgbGluZS4KLS0KLS1AaXRlbSAmCi0t UmVwZWF0IHRoZSBwcmV2aW91cyBzdWJzdGl0dXRpb24uCi0tCi0tQGl0ZW0gZwotLUBpdGVteCBh Ci0tQ2F1c2UgY2hhbmdlcyB0byBiZSBhcHBsaWVkIG92ZXIgdGhlIGVudGlyZSBldmVudCBsaW5l LiAgVXNlZCBpbgotLWNvbmp1bmN0aW9uIHdpdGggQHNhbXB7c30sIGFzIGluIEBjb2Rle2dzL0B2 YXJ7b2xkfS9AdmFye25ld30vfSwKLS1vciB3aXRoIEBzYW1weyZ9LgotLQotLUBpdGVtIEcKLS1B cHBseSB0aGUgZm9sbG93aW5nIEBzYW1we3N9IG1vZGlmaWVyIG9uY2UgdG8gZWFjaCB3b3JkIGlu IHRoZSBldmVudC4KLS0KLS1AZW5kIHRhYmxlCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9y ZWFkbGluZS9kb2MvcmVhZGxpbmUuMwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3 MDMub3JpZy9yZWFkbGluZS9kb2MvcmVhZGxpbmUuMwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL3JlYWRsaW5l LjMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC02LDkgKzYsOSBAQAot IC5cIglDYXNlIFdlc3Rlcm4gUmVzZXJ2ZSBVbml2ZXJzaXR5Ci0gLlwiCWNoZXRAaW5zLkNXUlUu RWR1Ci0gLlwiCi0tLlwiCUxhc3QgQ2hhbmdlOiBUdWUgU2VwIDEzIDEyOjA3OjI2IEVEVCAyMDA1 Ci0rLlwiCUxhc3QgQ2hhbmdlOiBTYXQgQXVnIDI4IDE4OjU2OjMyIEVEVCAyMDEwCi0gLlwiCi0t LlRIIFJFQURMSU5FIDMgIjIwMDUgU2VwIDEzIiAiR05VIFJlYWRsaW5lIDUuMS1iZXRhMSIKLSsu VEggUkVBRExJTkUgMyAiMjAxMCBBdWd1c3QgMjgiICJHTlUgUmVhZGxpbmUgNi4yIgotIC5cIgot IC5cIiBGaWxlIE5hbWUgbWFjcm8uICBUaGlzIHVzZWQgdG8gYmUgYC5QTicsIGZvciBQYXRoIE5h bWUsCi0gLlwiIGJ1dCBTdW4gZG9lc24ndCBzZWVtIHRvIGxpa2UgdGhhdCB2ZXJ5IG11Y2guCi1A QCAtMzQsOCArMzQsOCBAQCByZWFkbGluZSBcLSBnZXQgYSBsaW5lIGZyb20gYSB1c2VyIHdpdGgg Ci0gXGZCcmVhZGxpbmVcZlAgKFxmSWNvbnN0IGNoYXIgKnByb21wdFxmUCk7Ci0gLmZpCi0gLlNI IENPUFlSSUdIVAotLS5pZiBuIFJlYWRsaW5lIGlzIENvcHlyaWdodCAoQykgMTk4OVwtMjAwNCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tLmlmIHQgUmVhZGxpbmUgaXMg Q29weXJpZ2h0IFwoY28gMTk4OVwtMjAwNCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rLmlmIG4gUmVhZGxpbmUgaXMgQ29weXJpZ2h0IChDKSAxOTg5XC0yMDExIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgIEluYy4KLSsuaWYgdCBSZWFkbGluZSBpcyBDb3B5cmlnaHQg XChjbyAxOTg5XC0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIC5TSCBERVND UklQVElPTgotIC5MUAotIC5CIHJlYWRsaW5lCi1AQCAtNzYsNyArNzYsNyBAQCBpcyByZWFkIHdp dGggYSBub25cLWVtcHR5IGxpbmUsIGl0IGlzCi0gdHJlYXRlZCBhcyBhIG5ld2xpbmUuCi0gLlNI IE5PVEFUSU9OCi0gLkxQCi0tQW4gZW1hY3Mtc3R5bGUgbm90YXRpb24gaXMgdXNlZCB0byBkZW5v dGUKLStBbiBFbWFjcy1zdHlsZSBub3RhdGlvbiBpcyB1c2VkIHRvIGRlbm90ZQotIGtleXN0cm9r ZXMuICBDb250cm9sIGtleXMgYXJlIGRlbm90ZWQgYnkgQ1wtXGZJa2V5XGZSLCBlLmcuLCBDXC1u Ci0gbWVhbnMgQ29udHJvbFwtTi4gIFNpbWlsYXJseSwgCi0gLkkgbWV0YQotQEAgLTExNiw2ICsx MTYsOCBAQCBUaGUgbmFtZSBvZiB0aGlzIGZpbGUgaXMgdGFrZW4gZnJvbSB0aGUgCi0gLkIgSU5Q VVRSQwotIGVudmlyb25tZW50IHZhcmlhYmxlLiAgSWYgdGhhdCB2YXJpYWJsZSBpcyB1bnNldCwg dGhlIGRlZmF1bHQgaXMKLSAuSVIgfi8uaW5wdXRyYyAuCi0rSWYgdGhhdCBmaWxlICBkb2VzIG5v dCBleGlzdCBvciBjYW5ub3QgYmUgcmVhZCwgdGhlIHVsdGltYXRlIGRlZmF1bHQgaXMKLSsuSVIg L2V0Yy9pbnB1dHJjIC4KLSBXaGVuIGEgcHJvZ3JhbSB3aGljaCB1c2VzIHRoZSByZWFkbGluZSBs aWJyYXJ5IHN0YXJ0cyB1cCwgdGhlCi0gaW5pdCBmaWxlIGlzIHJlYWQsIGFuZCB0aGUga2V5IGJp bmRpbmdzIGFuZCB2YXJpYWJsZXMgYXJlIHNldC4KLSBUaGVyZSBhcmUgb25seSBhIGZldyBiYXNp YyBjb25zdHJ1Y3RzIGFsbG93ZWQgaW4gdGhlCi1AQCAtMTY4LDYgKzE3MCw4IEBAIGNvbW1hbmQg b3IgdGhlIHRleHQgb2YgYSBtYWNybyBhbmQgYSBrZXkKLSBpdCBzaG91bGQgYmUgYm91bmQuIFRo ZSBuYW1lIG1heSBiZSBzcGVjaWZpZWQgaW4gb25lIG9mIHR3byB3YXlzOgotIGFzIGEgc3ltYm9s aWMga2V5IG5hbWUsIHBvc3NpYmx5IHdpdGggXGZJTWV0YVwtXGZQIG9yIFxmSUNvbnRyb2xcLVxm UAotIHByZWZpeGVzLCBvciBhcyBhIGtleSBzZXF1ZW5jZS4KLStUaGUgbmFtZSBhbmQga2V5IHNl cXVlbmNlIGFyZSBzZXBhcmF0ZWQgYnkgYSBjb2xvbi4gIFRoZXJlIGNhbiBiZSBubwotK3doaXRl c3BhY2UgYmV0d2VlbiB0aGUgbmFtZSBhbmQgdGhlIGNvbG9uLgotIC5QUAotIFdoZW4gdXNpbmcg dGhlIGZvcm0gXGZCa2V5bmFtZVxmUDpcXlxmSWZ1bmN0aW9uLW5hbWVcZlAgb3IgXGZJbWFjcm9c ZlAsCi0gLkkga2V5bmFtZQotQEAgLTM1NiwxMSArMzYwLDMwIEBAIFRoaXMgY29tbWFuZCBpcyBi b3VuZCB0bwotIGluIGVtYWNzIG1vZGUgYW5kIHRvCi0gLkIgIwotIGluIHZpIGNvbW1hbmQgbW9k ZS4KLSsuVFAKLSsuQiBjb21wbGV0aW9uXC1kaXNwbGF5XC13aWR0aCAoLTEpCi0rVGhlIG51bWJl ciBvZiBzY3JlZW4gY29sdW1ucyB1c2VkIHRvIGRpc3BsYXkgcG9zc2libGUgbWF0Y2hlcwotK3do ZW4gcGVyZm9ybWluZyBjb21wbGV0aW9uLgotK1RoZSB2YWx1ZSBpcyBpZ25vcmVkIGlmIGl0IGlz IGxlc3MgdGhhbiAwIG9yIGdyZWF0ZXIgdGhhbiB0aGUgdGVybWluYWwKLStzY3JlZW4gd2lkdGgu Ci0rQSB2YWx1ZSBvZiAwIHdpbGwgY2F1c2UgbWF0Y2hlcyB0byBiZSBkaXNwbGF5ZWQgb25lIHBl ciBsaW5lLgotK1RoZSBkZWZhdWx0IHZhbHVlIGlzIC0xLgotIC5UUCAKLSAuQiBjb21wbGV0aW9u XC1pZ25vcmVcLWNhc2UgKE9mZikKLSBJZiBzZXQgdG8gXGZCT25cZlAsIHJlYWRsaW5lIHBlcmZv cm1zIGZpbGVuYW1lIG1hdGNoaW5nIGFuZCBjb21wbGV0aW9uCi0gaW4gYSBjYXNlXC1pbnNlbnNp dGl2ZSBmYXNoaW9uLgotIC5UUAotKy5CIGNvbXBsZXRpb25cLW1hcFwtY2FzZSAoT2ZmKQotK0lm IHNldCB0byBcZkJPblxmUCwgYW5kIFxmQmNvbXBsZXRpb25cLWlnbm9yZVwtY2FzZVxmUCBpcyBl bmFibGVkLCByZWFkbGluZQotK3RyZWF0cyBoeXBoZW5zIChcZklcLVxmUCkgYW5kIHVuZGVyc2Nv cmVzIChcZklfXGZQKSBhcyBlcXVpdmFsZW50IHdoZW4KLStwZXJmb3JtaW5nIGNhc2VcLWluc2Vu c2l0aXZlIGZpbGVuYW1lIG1hdGNoaW5nIGFuZCBjb21wbGV0aW9uLgotKy5UUAotKy5CIGNvbXBs ZXRpb25cLXByZWZpeFwtZGlzcGxheVwtbGVuZ3RoICgwKQotK1RoZSBsZW5ndGggaW4gY2hhcmFj dGVycyBvZiB0aGUgY29tbW9uIHByZWZpeCBvZiBhIGxpc3Qgb2YgcG9zc2libGUKLStjb21wbGV0 aW9ucyB0aGF0IGlzIGRpc3BsYXllZCB3aXRob3V0IG1vZGlmaWNhdGlvbi4gIFdoZW4gc2V0IHRv IGEKLSt2YWx1ZSBncmVhdGVyIHRoYW4gemVybywgY29tbW9uIHByZWZpeGVzIGxvbmdlciB0aGFu IHRoaXMgdmFsdWUgYXJlCi0rcmVwbGFjZWQgd2l0aCBhbiBlbGxpcHNpcyB3aGVuIGRpc3BsYXlp bmcgcG9zc2libGUgY29tcGxldGlvbnMuCi0rLlRQCi0gLkIgY29tcGxldGlvblwtcXVlcnlcLWl0 ZW1zICgxMDApCi0gVGhpcyBkZXRlcm1pbmVzIHdoZW4gdGhlIHVzZXIgaXMgcXVlcmllZCBhYm91 dCB2aWV3aW5nCi0gdGhlIG51bWJlciBvZiBwb3NzaWJsZSBjb21wbGV0aW9ucwotQEAgLTM4NCwy NyArNDA3LDQxIEBAIG1hcHBlZCB0byBcZkJzZWxmLWluc2VydFxmUC4KLSAuVFAKLSAuQiBlZGl0 aW5nXC1tb2RlIChlbWFjcykKLSBDb250cm9scyB3aGV0aGVyIHJlYWRsaW5lIGJlZ2lucyB3aXRo IGEgc2V0IG9mIGtleSBiaW5kaW5ncyBzaW1pbGFyCi0tdG8gZW1hY3Mgb3IgdmkuCi0rdG8gXGZJ RW1hY3NcZlAgb3IgXGZJdmlcZlAuCi0gLkIgZWRpdGluZ1wtbW9kZQotIGNhbiBiZSBzZXQgdG8g ZWl0aGVyCi0gLkIgZW1hY3MKLSBvcgotIC5CUiB2aSAuCi0gLlRQCi0rLkIgZWNob1wtY29udHJv bFwtY2hhcmFjdGVycyAoT24pCi0rV2hlbiBzZXQgdG8gXGZCT25cZlAsIG9uIG9wZXJhdGluZyBz eXN0ZW1zIHRoYXQgaW5kaWNhdGUgdGhleSBzdXBwb3J0IGl0LAotK3JlYWRsaW5lIGVjaG9lcyBh IGNoYXJhY3RlciBjb3JyZXNwb25kaW5nIHRvIGEgc2lnbmFsIGdlbmVyYXRlZCBmcm9tIHRoZQot K2tleWJvYXJkLgotKy5UUAotIC5CIGVuYWJsZVwta2V5cGFkIChPZmYpCi0gV2hlbiBzZXQgdG8g XGZCT25cZlAsIHJlYWRsaW5lIHdpbGwgdHJ5IHRvIGVuYWJsZSB0aGUgYXBwbGljYXRpb24KLSBr ZXlwYWQgd2hlbiBpdCBpcyBjYWxsZWQuICBTb21lIHN5c3RlbXMgbmVlZCB0aGlzIHRvIGVuYWJs ZSB0aGUKLSBhcnJvdyBrZXlzLgotIC5UUAotKy5CIGVuYWJsZVwtbWV0YVwta2V5IChPbikKLStX aGVuIHNldCB0byBcZkJPblxmUCwgcmVhZGxpbmUgd2lsbCB0cnkgdG8gZW5hYmxlIGFueSBtZXRh IG1vZGlmaWVyCi0ra2V5IHRoZSB0ZXJtaW5hbCBjbGFpbXMgdG8gc3VwcG9ydCB3aGVuIGl0IGlz IGNhbGxlZC4gIE9uIG1hbnkgdGVybWluYWxzLAotK3RoZSBtZXRhIGtleSBpcyB1c2VkIHRvIHNl bmQgZWlnaHQtYml0IGNoYXJhY3RlcnMuCi0rLlRQCi0gLkIgZXhwYW5kXC10aWxkZSAoT2ZmKQot LUlmIHNldCB0byBcZkJvblxmUCwgdGlsZGUgZXhwYW5zaW9uIGlzIHBlcmZvcm1lZCB3aGVuIHJl YWRsaW5lCi0rSWYgc2V0IHRvIFxmQk9uXGZQLCB0aWxkZSBleHBhbnNpb24gaXMgcGVyZm9ybWVk IHdoZW4gcmVhZGxpbmUKLSBhdHRlbXB0cyB3b3JkIGNvbXBsZXRpb24uCi0gLlRQCi0gLkIgaGlz dG9yeVwtcHJlc2VydmVcLXBvaW50IChPZmYpCi0tSWYgc2V0IHRvIFxmQm9uXGZQLCB0aGUgaGlz dG9yeSBjb2RlIGF0dGVtcHRzIHRvIHBsYWNlIHBvaW50IGF0IHRoZSAKLStJZiBzZXQgdG8gXGZC T25cZlAsIHRoZSBoaXN0b3J5IGNvZGUgYXR0ZW1wdHMgdG8gcGxhY2UgcG9pbnQgYXQgdGhlIAot IHNhbWUgbG9jYXRpb24gb24gZWFjaCBoaXN0b3J5IGxpbmUgcmV0cmlldmVkIHdpdGggXGZCcHJl dmlvdXMtaGlzdG9yeVxmUCAKLSBvciBcZkJuZXh0LWhpc3RvcnlcZlAuCi0gLlRQCi0rLkIgaGlz dG9yeVwtc2l6ZSAoMCkKLStTZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGhpc3RvcnkgZW50cmll cyBzYXZlZCBpbiB0aGUgaGlzdG9yeSBsaXN0LiAgSWYKLStzZXQgdG8gemVybywgdGhlIG51bWJl ciBvZiBlbnRyaWVzIGluIHRoZSBoaXN0b3J5IGxpc3QgaXMgbm90IGxpbWl0ZWQuCi0rLlRQCi0g LkIgaG9yaXpvbnRhbFwtc2Nyb2xsXC1tb2RlIChPZmYpCi0gV2hlbiBzZXQgdG8gXGZCT25cZlAs IG1ha2VzIHJlYWRsaW5lIHVzZSBhIHNpbmdsZSBsaW5lIGZvciBkaXNwbGF5LAotIHNjcm9sbGlu ZyB0aGUgaW5wdXQgaG9yaXpvbnRhbGx5IG9uIGEgc2luZ2xlIHNjcmVlbiBsaW5lIHdoZW4gaXQK LUBAIC00NTEsOSArNDg4LDE1IEBAIGhhdmUgYSBzbGFzaCBhcHBlbmRlZCAoc3ViamVjdCB0byB0 aGUgdmEKLSAuQiBtYXRjaFwtaGlkZGVuXC1maWxlcyAoT24pCi0gVGhpcyB2YXJpYWJsZSwgd2hl biBzZXQgdG8gXGZCT25cZlAsIGNhdXNlcyByZWFkbGluZSB0byBtYXRjaCBmaWxlcyB3aG9zZSAK LSBuYW1lcyBiZWdpbiB3aXRoIGEgYC4nIChoaWRkZW4gZmlsZXMpIHdoZW4gcGVyZm9ybWluZyBm aWxlbmFtZSAgICAgCi0tY29tcGxldGlvbiwgdW5sZXNzIHRoZSBsZWFkaW5nIGAuJyBpcyAgICAg Ci0rY29tcGxldGlvbi4KLStJZiBzZXQgdG8gXGZCT2ZmXGZQLCB0aGUgbGVhZGluZyBgLicgbXVz dCBiZQotIHN1cHBsaWVkIGJ5IHRoZSB1c2VyIGluIHRoZSBmaWxlbmFtZSB0byBiZSBjb21wbGV0 ZWQuCi0gLlRQCi0rLkIgbWVudVwtY29tcGxldGVcLWRpc3BsYXlcLXByZWZpeCAoT2ZmKQotK0lm IHNldCB0byBcZkJPblxmUCwgbWVudSBjb21wbGV0aW9uIGRpc3BsYXlzIHRoZSBjb21tb24gcHJl Zml4IG9mIHRoZQotK2xpc3Qgb2YgcG9zc2libGUgY29tcGxldGlvbnMgKHdoaWNoIG1heSBiZSBl bXB0eSkgYmVmb3JlIGN5Y2xpbmcgdGhyb3VnaAotK3RoZSBsaXN0LgotKy5UUAotIC5CIG91dHB1 dFwtbWV0YSAoT2ZmKQotIElmIHNldCB0byBcZkJPblxmUCwgcmVhZGxpbmUgd2lsbCBkaXNwbGF5 IGNoYXJhY3RlcnMgd2l0aCB0aGUKLSBlaWdodGggYml0IHNldCBkaXJlY3RseSByYXRoZXIgdGhh biBhcyBhIG1ldGEtcHJlZml4ZWQgZXNjYXBlCi1AQCAtNDY3LDEwICs1MTAsMTYgQEAgdG8gZGlz cGxheSBhIHNjcmVlbmZ1bCBvZiBwb3NzaWJsZSBjb21wbAotIElmIHNldCB0byBcZkJPblxmUCwg cmVhZGxpbmUgd2lsbCBkaXNwbGF5IGNvbXBsZXRpb25zIHdpdGggbWF0Y2hlcwotIHNvcnRlZCBo b3Jpem9udGFsbHkgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLCByYXRoZXIgdGhhbiBkb3duIHRoZSBz Y3JlZW4uCi0gLlRQCi0rLkIgcmV2ZXJ0XC1hbGxcLWF0XC1uZXdsaW5lIChPZmYpCi0rSWYgc2V0 IHRvIFxmQk9uXGZQLCByZWFkbGluZSB3aWxsIHVuZG8gYWxsIGNoYW5nZXMgdG8gaGlzdG9yeSBs aW5lcwotK2JlZm9yZSByZXR1cm5pbmcgd2hlbiBcZkJhY2NlcHRcLWxpbmVcZlAgaXMgZXhlY3V0 ZWQuICBCeSBkZWZhdWx0LAotK2hpc3RvcnkgbGluZXMgbWF5IGJlIG1vZGlmaWVkIGFuZCByZXRh aW4gaW5kaXZpZHVhbCB1bmRvIGxpc3RzIGFjcm9zcwotK2NhbGxzIHRvIFxmQnJlYWRsaW5lXGZQ LgotKy5UUAotIC5CIHNob3dcLWFsbFwtaWZcLWFtYmlndW91cyAoT2ZmKQotIFRoaXMgYWx0ZXJz IHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBjb21wbGV0aW9uIGZ1bmN0aW9ucy4gIElmCi0g c2V0IHRvCi0tLkJSIG9uICwKLSsuQlIgT24gLAotIHdvcmRzIHdoaWNoIGhhdmUgbW9yZSB0aGFu IG9uZSBwb3NzaWJsZSBjb21wbGV0aW9uIGNhdXNlIHRoZQotIG1hdGNoZXMgdG8gYmUgbGlzdGVk IGltbWVkaWF0ZWx5IGluc3RlYWQgb2YgcmluZ2luZyB0aGUgYmVsbC4KLSAuVFAKLUBAIC00Nzgs MTIgKzUyNywyMCBAQCBtYXRjaGVzIHRvIGJlIGxpc3RlZCBpbW1lZGlhdGVseSBpbnN0ZWFkCi0g VGhpcyBhbHRlcnMgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIGNvbXBsZXRpb24gZnVuY3Rp b25zIGluCi0gYSBmYXNoaW9uIHNpbWlsYXIgdG8gXGZCc2hvd1wtYWxsXC1pZlwtYW1iaWd1b3Vz XGZQLgotIElmIHNldCB0bwotLS5CUiBvbiAsIAotKy5CUiBPbiAsIAotIHdvcmRzIHdoaWNoIGhh dmUgbW9yZSB0aGFuIG9uZSBwb3NzaWJsZSBjb21wbGV0aW9uIHdpdGhvdXQgYW55Ci0gcG9zc2li bGUgcGFydGlhbCBjb21wbGV0aW9uICh0aGUgcG9zc2libGUgY29tcGxldGlvbnMgZG9uJ3Qgc2hh cmUgCi0gYSBjb21tb24gcHJlZml4KSBjYXVzZSB0aGUgbWF0Y2hlcyB0byBiZSBsaXN0ZWQgaW1t ZWRpYXRlbHkgaW5zdGVhZAotIG9mIHJpbmdpbmcgdGhlIGJlbGwuCi0gLlRQCi0rLkIgc2tpcFwt Y29tcGxldGVkXC10ZXh0IChPZmYpCi0rSWYgc2V0IHRvIFxmQk9uXGZQLCB0aGlzIGFsdGVycyB0 aGUgZGVmYXVsdCBjb21wbGV0aW9uIGJlaGF2aW9yIHdoZW4KLStpbnNlcnRpbmcgYSBzaW5nbGUg bWF0Y2ggaW50byB0aGUgbGluZS4gIEl0J3Mgb25seSBhY3RpdmUgd2hlbgotK3BlcmZvcm1pbmcg Y29tcGxldGlvbiBpbiB0aGUgbWlkZGxlIG9mIGEgd29yZC4gIElmIGVuYWJsZWQsIHJlYWRsaW5l Ci0rZG9lcyBub3QgaW5zZXJ0IGNoYXJhY3RlcnMgZnJvbSB0aGUgY29tcGxldGlvbiB0aGF0IG1h dGNoIGNoYXJhY3RlcnMKLSthZnRlciBwb2ludCBpbiB0aGUgd29yZCBiZWluZyBjb21wbGV0ZWQs IHNvIHBvcnRpb25zIG9mIHRoZSB3b3JkCi0rZm9sbG93aW5nIHRoZSBjdXJzb3IgYXJlIG5vdCBk dXBsaWNhdGVkLgotKy5UUAotIC5CIHZpc2libGVcLXN0YXRzIChPZmYpCi0gSWYgc2V0IHRvIFxm Qk9uXGZQLCBhIGNoYXJhY3RlciBkZW5vdGluZyBhIGZpbGUncyB0eXBlIGFzIHJlcG9ydGVkICAK LSBieSBcZklzdGF0XGZQKDIpIGlzIGFwcGVuZGVkIHRvIHRoZSBmaWxlbmFtZSB3aGVuIGxpc3Rp bmcgcG9zc2libGUKLUBAIC01MzAsNyArNTg3LDcgQEAgbGlicmFyeSBzZXRzIHRoZSBcZklhcHBs aWNhdGlvbiBuYW1lXGZQLAotIGZpbGUgY2FuIHRlc3QgZm9yIGEgcGFydGljdWxhciB2YWx1ZS4K LSBUaGlzIGNvdWxkIGJlIHVzZWQgdG8gYmluZCBrZXkgc2VxdWVuY2VzIHRvIGZ1bmN0aW9ucyB1 c2VmdWwgZm9yCi0gYSBzcGVjaWZpYyBwcm9ncmFtLiAgRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93 aW5nIGNvbW1hbmQgYWRkcyBhCi0ta2V5IHNlcXVlbmNlIHRoYXQgcXVvdGVzIHRoZSBjdXJyZW50 IG9yIHByZXZpb3VzIHdvcmQgaW4gQmFzaDoKLStrZXkgc2VxdWVuY2UgdGhhdCBxdW90ZXMgdGhl IGN1cnJlbnQgb3IgcHJldmlvdXMgd29yZCBpbiBcZkJiYXNoXGZQOgotIC5zcCAxCi0gLlJTCi0g Lm5mCi1AQCAtNzA2LDEwICs3NjMsMTQgQEAgYXMgaWYgdGhlICIhXGZJblxmUCIgaGlzdG9yeSBl eHBhbnNpb24gaAotIC5CCi0geWFua1wtbGFzdFwtYXJnIChNXC0uXF4sIE1cLV9cXikKLSBJbnNl cnQgdGhlIGxhc3QgYXJndW1lbnQgdG8gdGhlIHByZXZpb3VzIGNvbW1hbmQgKHRoZSBsYXN0IHdv cmQgb2YKLS10aGUgcHJldmlvdXMgaGlzdG9yeSBlbnRyeSkuICBXaXRoIGFuIGFyZ3VtZW50LAot LWJlaGF2ZSBleGFjdGx5IGxpa2UgXGZCeWFua1wtbnRoXC1hcmdcZlAuCi0rdGhlIHByZXZpb3Vz IGhpc3RvcnkgZW50cnkpLgotK1dpdGggYSBudW1lcmljIGFyZ3VtZW50LCBiZWhhdmUgZXhhY3Rs eSBsaWtlIFxmQnlhbmtcLW50aFwtYXJnXGZQLgotIFN1Y2Nlc3NpdmUgY2FsbHMgdG8gXGZCeWFu a1wtbGFzdFwtYXJnXGZQIG1vdmUgYmFjayB0aHJvdWdoIHRoZSBoaXN0b3J5Ci0tbGlzdCwgaW5z ZXJ0aW5nIHRoZSBsYXN0IGFyZ3VtZW50IG9mIGVhY2ggbGluZSBpbiB0dXJuLgotK2xpc3QsIGlu c2VydGluZyB0aGUgbGFzdCB3b3JkIChvciB0aGUgd29yZCBzcGVjaWZpZWQgYnkgdGhlIGFyZ3Vt ZW50IHRvCi0rdGhlIGZpcnN0IGNhbGwpIG9mIGVhY2ggbGluZSBpbiB0dXJuLgotK0FueSBudW1l cmljIGFyZ3VtZW50IHN1cHBsaWVkIHRvIHRoZXNlIHN1Y2Nlc3NpdmUgY2FsbHMgZGV0ZXJtaW5l cwotK3RoZSBkaXJlY3Rpb24gdG8gbW92ZSB0aHJvdWdoIHRoZSBoaXN0b3J5LiAgQSBuZWdhdGl2 ZSBhcmd1bWVudCBzd2l0Y2hlcwotK3RoZSBkaXJlY3Rpb24gdGhyb3VnaCB0aGUgaGlzdG9yeSAo YmFjayBvciBmb3J3YXJkKS4KLSBUaGUgaGlzdG9yeSBleHBhbnNpb24gZmFjaWxpdGllcyBhcmUg dXNlZCB0byBleHRyYWN0IHRoZSBsYXN0IGFyZ3VtZW50LAotIGFzIGlmIHRoZSAiISQiIGhpc3Rv cnkgZXhwYW5zaW9uIGhhZCBiZWVuIHNwZWNpZmllZC4KLSAuUEQKLUBAIC04ODQsNiArOTQ1LDEy IEBAIG9ubHkgYXR0ZW1wdHMgZmlsZW5hbWUgY29tcGxldGlvbiB1bmRlciAKLSAuVFAKLSAuQiBw b3NzaWJsZVwtY29tcGxldGlvbnMgKE1cLT8pCi0gTGlzdCB0aGUgcG9zc2libGUgY29tcGxldGlv bnMgb2YgdGhlIHRleHQgYmVmb3JlIHBvaW50LgotK1doZW4gZGlzcGxheWluZyBjb21wbGV0aW9u cywgcmVhZGxpbmUgc2V0cyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgdXNlZAotK2ZvciBkaXNwbGF5 IHRvIHRoZSB2YWx1ZSBvZiBcZkJjb21wbGV0aW9uLWRpc3BsYXktd2lkdGhcZlAsIHRoZSB2YWx1 ZSBvZgotK3RoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQotKy5TTQotKy5CUiBDT0xVTU5TICwKLStv ciB0aGUgc2NyZWVuIHdpZHRoLCBpbiB0aGF0IG9yZGVyLgotIC5UUAotIC5CIGluc2VydFwtY29t cGxldGlvbnMgKE1cLSopCi0gSW5zZXJ0IGFsbCBjb21wbGV0aW9ucyBvZiB0aGUgdGV4dCBiZWZv cmUgcG9pbnQKLUBAIC05MDQsNiArOTcxLDExIEBAIHRocm91Z2ggdGhlIGxpc3QuCi0gVGhpcyBj b21tYW5kIGlzIGludGVuZGVkIHRvIGJlIGJvdW5kIHRvIFxmQlRBQlxmUCwgYnV0IGlzIHVuYm91 bmQKLSBieSBkZWZhdWx0LgotIC5UUAotKy5CIG1lbnVcLWNvbXBsZXRlXC1iYWNrd2FyZAotK0lk ZW50aWNhbCB0byBcZkJtZW51XC1jb21wbGV0ZVxmUCwgYnV0IG1vdmVzIGJhY2t3YXJkIHRocm91 Z2ggdGhlIGxpc3QKLStvZiBwb3NzaWJsZSBjb21wbGV0aW9ucywgYXMgaWYgXGZCbWVudVwtY29t cGxldGVcZlAgaGFkIGJlZW4gZ2l2ZW4gYQotK25lZ2F0aXZlIGFyZ3VtZW50LiAgVGhpcyBjb21t YW5kIGlzIHVuYm91bmQgYnkgZGVmYXVsdC4KLSsuVFAKLSAuQiBkZWxldGVcLWNoYXJcLW9yXC1s aXN0Ci0gRGVsZXRlcyB0aGUgY2hhcmFjdGVyIHVuZGVyIHRoZSBjdXJzb3IgaWYgbm90IGF0IHRo ZSBiZWdpbm5pbmcgb3IKLSBlbmQgb2YgdGhlIGxpbmUgKGxpa2UgXGZCZGVsZXRlLWNoYXJcZlAp LgotQEAgLTk3Nyw2ICsxMDQ5LDE1IEBAIGNoYXJhY3Rlci4gIEEgbmVnYXRpdmUgY291bnQgc2Vh cmNoZXMgZm8KLSBBIGNoYXJhY3RlciBpcyByZWFkIGFuZCBwb2ludCBpcyBtb3ZlZCB0byB0aGUg cHJldmlvdXMgb2NjdXJyZW5jZSBvZiB0aGF0Ci0gY2hhcmFjdGVyLiAgQSBuZWdhdGl2ZSBjb3Vu dCBzZWFyY2hlcyBmb3Igc3Vic2VxdWVudCBvY2N1cnJlbmNlcy4KLSAuVFAKLSsuQiBza2lwXC1j c2lcLXNlcXVlbmNlCi0rUmVhZCBlbm91Z2ggY2hhcmFjdGVycyB0byBjb25zdW1lIGEgbXVsdGkt a2V5IHNlcXVlbmNlIHN1Y2ggYXMgdGhvc2UKLStkZWZpbmVkIGZvciBrZXlzIGxpa2UgSG9tZSBh bmQgRW5kLiAgU3VjaCBzZXF1ZW5jZXMgYmVnaW4gd2l0aCBhCi0rQ29udHJvbCBTZXF1ZW5jZSBJ bmRpY2F0b3IgKENTSSksIHVzdWFsbHkgRVNDXC1bLiAgSWYgdGhpcyBzZXF1ZW5jZSBpcwotK2Jv dW5kIHRvICJcZVsiLCBrZXlzIHByb2R1Y2luZyBzdWNoIHNlcXVlbmNlcyB3aWxsIGhhdmUgbm8g ZWZmZWN0Ci0rdW5sZXNzIGV4cGxpY2l0bHkgYm91bmQgdG8gYSByZWFkbGluZSBjb21tYW5kLCBp bnN0ZWFkIG9mIGluc2VydGluZwotK3N0cmF5IGNoYXJhY3RlcnMgaW50byB0aGUgZWRpdGluZyBi dWZmZXIuICBUaGlzIGlzIHVuYm91bmQgYnkgZGVmYXVsdCwKLStidXQgdXN1YWxseSBib3VuZCB0 byBFU0NcLVsuCi0rLlRQCi0gLkIgaW5zZXJ0XC1jb21tZW50IChNXC0jKQotIFdpdGhvdXQgYSBu dW1lcmljIGFyZ3VtZW50LCB0aGUgdmFsdWUgb2YgdGhlIHJlYWRsaW5lCi0gLkIgY29tbWVudFwt YmVnaW4KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2RvYy9ybG1hbi50ZXhp Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2RvYy9y bG1hbi50ZXhpCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDcwMy9yZWFkbGluZS9kb2MvcmxtYW4udGV4aQkyMDExLTA3LTAzIDEwOjQxOjIx LjAwMDAwMDAwMCArMDIwMAotQEAgLTQsNyArNCw2IEBACi0gQHNldHRpdGxlIEdOVSBSZWFkbGlu ZSBMaWJyYXJ5Ci0gQGNvbW1lbnQgJSoqZW5kIG9mIGhlYWRlciAoVGhpcyBpcyBmb3IgcnVubmlu ZyBUZXhpbmZvIG9uIGEgcmVnaW9uLikKLSBAc3luaW5kZXggdnIgZm4KLS1Ac2V0Y2hhcHRlcm5l d3BhZ2Ugb2RkCi0gCi0gQGluY2x1ZGUgdmVyc2lvbi50ZXhpCi0gCi1AQCAtMTQsNyArMTMsNyBA QCBUaGlzIG1hbnVhbCBkZXNjcmliZXMgdGhlIEdOVSBSZWFkbGluZSBMCi0gY29uc2lzdGVuY3kg b2YgdXNlciBpbnRlcmZhY2UgYWNyb3NzIGRpc2NyZXRlIHByb2dyYW1zIHdoaWNoIHByb3ZpZGUK LSBhIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UuCi0gCi0tQ29weXJpZ2h0IEBjb3B5cmlnaHR7fSAx OTg4LTIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rQ29weXJpZ2h0IEBjb3B5 cmlnaHR7fSAxOTg4LS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotIFBl cm1pc3Npb24gaXMgZ3JhbnRlZCB0byBtYWtlIGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGll cyBvZgotIHRoaXMgbWFudWFsIHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlCi1AQCAtMjIsMTUgKzIxLDE2IEBAIGFyZSBwcmVzZXJ2ZWQgb24g YWxsIGNvcGllcy4KLSAKLSBAcXVvdGF0aW9uCi0gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNv cHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50Ci0tdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4xIG9y Ci0rdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2Us IFZlcnNpb24gMS4zIG9yCi0gYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IHdpdGggbm8KLS1JbnZhcmlhbnQgU2VjdGlvbnMsIHdpdGgg dGhlIEZyb250LUNvdmVyIHRleHRzIGJlaW5nIGBgQSBHTlUgTWFudWFsLCcnCi0rSW52YXJpYW50 IFNlY3Rpb25zLCB3aXRoIHRoZSBGcm9udC1Db3ZlciB0ZXh0cyBiZWluZyBgYEEgR05VIE1hbnVh bCcnLAotIGFuZCB3aXRoIHRoZSBCYWNrLUNvdmVyIFRleHRzIGFzIGluIChhKSBiZWxvdy4gIEEg Y29weSBvZiB0aGUgbGljZW5zZSBpcwotLWluY2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVk IGBgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLicnCi0raW5jbHVkZWQgaW4gdGhlIHNl Y3Rpb24gZW50aXRsZWQgYGBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UnJy4KLSsKLSso YSkgVGhlIEZTRidzIEJhY2stQ292ZXIgVGV4dCBpczogWW91IGFyZSBmcmVlIHRvIGNvcHkgYW5k IG1vZGlmeQotK3RoaXMgR05VIG1hbnVhbC4gIEJ1eWluZyBjb3BpZXMgZnJvbSBHTlUgUHJlc3Mg c3VwcG9ydHMgdGhlIEZTRiBpbgotK2RldmVsb3BpbmcgR05VIGFuZCBwcm9tb3Rpbmcgc29mdHdh cmUgZnJlZWRvbS4nJwotIAotLShhKSBUaGUgRlNGJ3MgQmFjay1Db3ZlciBUZXh0IGlzOiBgYFlv dSBoYXZlIGZyZWVkb20gdG8gY29weSBhbmQgbW9kaWZ5Ci0tdGhpcyBHTlUgTWFudWFsLCBsaWtl IEdOVSBzb2Z0d2FyZS4gIENvcGllcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKLS1Tb2Z0d2FyZSBG b3VuZGF0aW9uIHJhaXNlIGZ1bmRzIGZvciBHTlUgZGV2ZWxvcG1lbnQuJycKLSBAZW5kIHF1b3Rh dGlvbgotIEBlbmQgY29weWluZwotIAotQEAgLTcxLDcgKzcxLDcgQEAgcHJvdmlkZSBhIGNvbW1h bmQgbGluZSBpbnRlcmZhY2UuCi0gQG1lbnUKLSAqIENvbW1hbmQgTGluZSBFZGl0aW5nOjoJICAg R05VIFJlYWRsaW5lIFVzZXIncyBNYW51YWwuCi0gKiBQcm9ncmFtbWluZyB3aXRoIEdOVSBSZWFk bGluZTo6ICBHTlUgUmVhZGxpbmUgUHJvZ3JhbW1lcidzIE1hbnVhbC4KLS0qIENvcHlpbmcgVGhp cyBNYW51YWw6OgkJICAgQ29weWluZyB0aGlzIG1hbnVhbC4KLSsqIEdOVSBGcmVlIERvY3VtZW50 YXRpb24gTGljZW5zZTo6CUxpY2Vuc2UgZm9yIGNvcHlpbmcgdGhpcyBtYW51YWwuCi0gKiBDb25j ZXB0IEluZGV4OjoJCSAgIEluZGV4IG9mIGNvbmNlcHRzIGRlc2NyaWJlZCBpbiB0aGlzIG1hbnVh bC4KLSAqIEZ1bmN0aW9uIGFuZCBWYXJpYWJsZSBJbmRleDo6CSAgIEluZGV4IG9mIGV4dGVybmFs bHkgdmlzaWJsZSBmdW5jdGlvbnMKLSAJCQkJICAgYW5kIHZhcmlhYmxlcy4KLUBAIC04MSwxMiAr ODEsOCBAQCBwcm92aWRlIGEgY29tbWFuZCBsaW5lIGludGVyZmFjZS4KLSBAaW5jbHVkZSBybHVz ZXIudGV4aQotIEBpbmNsdWRlIHJsdGVjaC50ZXhpCi0gCi0tQG5vZGUgQ29weWluZyBUaGlzIE1h bnVhbAotLUBhcHBlbmRpeCBDb3B5aW5nIFRoaXMgTWFudWFsCi0tCi0tQG1lbnUKLS0qIEdOVSBG cmVlIERvY3VtZW50YXRpb24gTGljZW5zZTo6CUxpY2Vuc2UgZm9yIGNvcHlpbmcgdGhpcyBtYW51 YWwuCi0tQGVuZCBtZW51Ci0rQG5vZGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlCi0r QGFwcGVuZGl4IEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZQotIAotIEBpbmNsdWRlIGZk bC50ZXhpCi0gCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9kb2Mvcmx0ZWNo LnRleGkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUv ZG9jL3JsdGVjaC50ZXhpCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9kb2Mvcmx0ZWNoLnRleGkJMjAxMS0wNy0wMyAx MDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDE0ICsxLDEzIEBACi0gQGNvbW1lbnQgJSoq c3RhcnQgb2YgaGVhZGVyIChUaGlzIGlzIGZvciBydW5uaW5nIFRleGluZm8gb24gYSByZWdpb24u KQotIEBzZXRmaWxlbmFtZSBybHRlY2guaW5mbwotIEBjb21tZW50ICUqKmVuZCBvZiBoZWFkZXIg KFRoaXMgaXMgZm9yIHJ1bm5pbmcgVGV4aW5mbyBvbiBhIHJlZ2lvbi4pCi0tQHNldGNoYXB0ZXJu ZXdwYWdlIG9kZAotIAotIEBpZmluZm8KLSBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgR05V IFJlYWRsaW5lIExpYnJhcnksIGEgdXRpbGl0eSBmb3IgYWlkaW5nCi0gaW4gdGhlIGNvbnNpc3Rl bmN5IG9mIHVzZXIgaW50ZXJmYWNlIGFjcm9zcyBkaXNjcmV0ZSBwcm9ncmFtcyB0aGF0IG5lZWQK LSB0byBwcm92aWRlIGEgY29tbWFuZCBsaW5lIGludGVyZmFjZS4KLSAKLS1Db3B5cmlnaHQgKEMp IDE5ODgtMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStDb3B5cmlnaHQgKEMp IDE5ODgtLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0gUGVybWlzc2lv biBpcyBncmFudGVkIHRvIG1ha2UgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mCi0g dGhpcyBtYW51YWwgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2UKLUBAIC0zNTEsNiArMzUwLDEyIEBAIFRoZSBAY29kZXtybF9zZXRfcHJvbXB0 KCl9IGZ1bmN0aW9uIChAcHgKLSBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgcHJvbXB0IHN0cmluZyBh ZnRlciBjYWxsaW5nIEBjb2Rle3JlYWRsaW5lKCl9LgotIEBlbmQgZGVmdHlwZXZhcgotIAotK0Bk ZWZ0eXBldmFyIHtjaGFyICp9IHJsX2Rpc3BsYXlfcHJvbXB0Ci0rVGhlIHN0cmluZyBkaXNwbGF5 ZWQgYXMgdGhlIHByb21wdC4gIFRoaXMgaXMgdXN1YWxseSBpZGVudGljYWwgdG8KLStAdmFye3Js X3Byb21wdH0sIGJ1dCBtYXkgYmUgY2hhbmdlZCB0ZW1wb3JhcmlseSBieSBmdW5jdGlvbnMgdGhh dAotK3VzZSB0aGUgcHJvbXB0IHN0cmluZyBhcyBhIG1lc3NhZ2UgYXJlYSwgc3VjaCBhcyBpbmNy ZW1lbnRhbCBzZWFyY2guCi0rQGVuZCBkZWZ0eXBldmFyCi0rCi0gQGRlZnR5cGV2YXIgaW50IHJs X2FscmVhZHlfcHJvbXB0ZWQKLSBJZiBhbiBhcHBsaWNhdGlvbiB3aXNoZXMgdG8gZGlzcGxheSB0 aGUgcHJvbXB0IGl0c2VsZiwgcmF0aGVyIHRoYW4gaGF2ZQotIFJlYWRsaW5lIGRvIGl0IHRoZSBm aXJzdCB0aW1lIEBjb2Rle3JlYWRsaW5lKCl9IGlzIGNhbGxlZCwgaXQgc2hvdWxkIHNldAotQEAg LTUxOCw2ICs1MjMsMjAgQEAgUmVhZGxpbmUgaXMgcGVyZm9ybWluZyB3b3JkIGNvbXBsZXRpb24u Ci0gUmVhZGxpbmUgaXMgY3VycmVudGx5IGV4ZWN1dGluZyB0aGUgcmVhZGxpbmUgc2lnbmFsIGhh bmRsZXIuCi0gQGl0ZW0gUkxfU1RBVEVfVU5ET0lORwotIFJlYWRsaW5lIGlzIHBlcmZvcm1pbmcg YW4gdW5kby4KLStAaXRlbSBSTF9TVEFURV9JTlBVVFBFTkRJTkcKLStSZWFkbGluZSBoYXMgaW5w dXQgcGVuZGluZyBkdWUgdG8gYSBjYWxsIHRvIEBjb2Rle3JsX2V4ZWN1dGVfbmV4dCgpfS4KLStA aXRlbSBSTF9TVEFURV9UVFlDU0FWRUQKLStSZWFkbGluZSBoYXMgc2F2ZWQgdGhlIHZhbHVlcyBv ZiB0aGUgdGVybWluYWwncyBzcGVjaWFsIGNoYXJhY3RlcnMuCi0rQGl0ZW0gUkxfU1RBVEVfQ0FM TEJBQ0sKLStSZWFkbGluZSBpcyBjdXJyZW50bHkgdXNpbmcgdGhlIGFsdGVybmF0ZSAoY2FsbGJh Y2spIGludGVyZmFjZQotKyhAcHhyZWZ7QWx0ZXJuYXRlIEludGVyZmFjZX0pLgotK0BpdGVtIFJM X1NUQVRFX1ZJTU9USU9OCi0rUmVhZGxpbmUgaXMgcmVhZGluZyB0aGUgYXJndW1lbnQgdG8gYSB2 aS1tb2RlICJtb3Rpb24iIGNvbW1hbmQuCi0rQGl0ZW0gUkxfU1RBVEVfTVVMVElLRVkKLStSZWFk bGluZSBpcyByZWFkaW5nIGEgbXVsdGlwbGUta2V5c3Ryb2tlIGNvbW1hbmQuCi0rQGl0ZW0gUkxf U1RBVEVfVklDTURPTkNFCi0rUmVhZGxpbmUgaGFzIGVudGVyZWQgdmkgY29tbWFuZCAobW92ZW1l bnQpIG1vZGUgYXQgbGVhc3Qgb25lIHRpbWUgZHVyaW5nCi0rdGhlIGN1cnJlbnQgY2FsbCB0byBA Y29kZXtyZWFkbGluZSgpfS4KLSBAaXRlbSBSTF9TVEFURV9ET05FCi0gUmVhZGxpbmUgaGFzIHJl YWQgYSBrZXkgc2VxdWVuY2UgYm91bmQgdG8gQGNvZGV7YWNjZXB0LWxpbmV9Ci0gYW5kIGlzIGFi b3V0IHRvIHJldHVybiB0aGUgbGluZSB0byB0aGUgY2FsbGVyLgotQEAgLTYwMyw3ICs2MjIsNyBA QCBSZWFkbGluZSB3aGljaCBrZXltYXAgdG8gdXNlLgotIEBkZWZ0eXBlZnVuIEtleW1hcCBybF9t YWtlX2JhcmVfa2V5bWFwICh2b2lkKQotIFJldHVybnMgYSBuZXcsIGVtcHR5IGtleW1hcC4gIFRo ZSBzcGFjZSBmb3IgdGhlIGtleW1hcCBpcyBhbGxvY2F0ZWQgd2l0aAotIEBjb2Rle21hbGxvYygp fTsgdGhlIGNhbGxlciBzaG91bGQgZnJlZSBpdCBieSBjYWxsaW5nCi0tQGNvZGV7cmxfZGlzY2Fy ZF9rZXltYXAoKX0gd2hlbiBkb25lLgotK0Bjb2Rle3JsX2ZyZWVfa2V5bWFwKCl9IHdoZW4gZG9u ZS4KLSBAZW5kIGRlZnR5cGVmdW4KLSAKLSBAZGVmdHlwZWZ1biBLZXltYXAgcmxfY29weV9rZXlt YXAgKEtleW1hcCBtYXApCi1AQCAtNjE3LDcgKzYzNiwxMyBAQCB0aGUgTWV0YSBkaWdpdHMgYm91 bmQgdG8gcHJvZHVjZSBudW1lcmljCi0gQGVuZCBkZWZ0eXBlZnVuCi0gCi0gQGRlZnR5cGVmdW4g dm9pZCBybF9kaXNjYXJkX2tleW1hcCAoS2V5bWFwIGtleW1hcCkKLS1GcmVlIHRoZSBzdG9yYWdl IGFzc29jaWF0ZWQgd2l0aCBAdmFye2tleW1hcH0uCi0rRnJlZSB0aGUgc3RvcmFnZSBhc3NvY2lh dGVkIHdpdGggdGhlIGRhdGEgaW4gQHZhcntrZXltYXB9LgotK1RoZSBjYWxsZXIgc2hvdWxkIGZy ZWUgQHZhcntrZXltYXB9LgotK0BlbmQgZGVmdHlwZWZ1bgotKwotK0BkZWZ0eXBlZnVuIHZvaWQg cmxfZnJlZV9rZXltYXAgKEtleW1hcCBrZXltYXApCi0rRnJlZSBhbGwgc3RvcmFnZSBhc3NvY2lh dGVkIHdpdGggQHZhcntrZXltYXB9LiAgVGhpcyBjYWxscwotK0Bjb2Rle3JsX2Rpc2NhcmRfa2V5 bWFwfSB0byBmcmVlIHN1Ym9yZGluZGF0ZSBrZXltYXBzIGFuZCBtYWNyb3MuCi0gQGVuZCBkZWZ0 eXBlZnVuCi0gCi0gUmVhZGxpbmUgaGFzIHNldmVyYWwgaW50ZXJuYWwga2V5bWFwcy4gIFRoZXNl IGZ1bmN0aW9ucyBhbGxvdyB5b3UgdG8KLUBAIC03OTMsNyArODE4LDggQEAgUHJpbnQgdGhlIG5h bWVzIG9mIGFsbCBiaW5kYWJsZSBSZWFkbGluZQotIEBkZWZ0eXBlZnVuIHtjb25zdCBjaGFyICoq fSBybF9mdW5tYXBfbmFtZXMgKHZvaWQpCi0gUmV0dXJuIGEgTlVMTCB0ZXJtaW5hdGVkIGFycmF5 IG9mIGtub3duIGZ1bmN0aW9uIG5hbWVzLiAgVGhlIGFycmF5IGlzCi0gc29ydGVkLiAgVGhlIGFy cmF5IGl0c2VsZiBpcyBhbGxvY2F0ZWQsIGJ1dCBub3QgdGhlIHN0cmluZ3MgaW5zaWRlLiAgWW91 Ci0tc2hvdWxkIEBjb2Rle2ZyZWUoKX0gdGhlIGFycmF5IHdoZW4geW91IGFyZSBkb25lLCBidXQg bm90IHRoZSBwb2ludGVycy4KLStzaG91bGQgZnJlZSB0aGUgYXJyYXksIGJ1dCBub3QgdGhlIHBv aW50ZXJzLCB1c2luZyBAY29kZXtmcmVlfSBvcgotK0Bjb2Rle3JsX2ZyZWV9IHdoZW4geW91IGFy ZSBkb25lLgotIEBlbmQgZGVmdHlwZWZ1bgotIAotIEBkZWZ0eXBlZnVuIGludCBybF9hZGRfZnVu bWFwX2VudHJ5IChjb25zdCBjaGFyICpuYW1lLCBybF9jb21tYW5kX2Z1bmNfdCAqZnVuY3Rpb24p Ci1AQCAtMTAzMyw4ICsxMDU5LDEwIEBAIHBlbmRpbmcgaW5wdXQgaGFzIG5vdCBhbHJlYWR5IGJl ZW4gcmVhZCAKLSBAZGVmdHlwZWZ1biBpbnQgcmxfc2V0X2tleWJvYXJkX2lucHV0X3RpbWVvdXQg KGludCB1KQotIFdoaWxlIHdhaXRpbmcgZm9yIGtleWJvYXJkIGlucHV0IGluIEBjb2Rle3JsX3Jl YWRfa2V5KCl9LCBSZWFkbGluZSB3aWxsCi0gd2FpdCBmb3IgQHZhcnt1fSBtaWNyb3NlY29uZHMg Zm9yIGlucHV0IGJlZm9yZSBjYWxsaW5nIGFueSBmdW5jdGlvbgotLWFzc2lnbmVkIHRvIEBjb2Rl e3JsX2V2ZW50X2hvb2t9LiAgVGhlIGRlZmF1bHQgd2FpdGluZyBwZXJpb2QgaXMKLS1vbmUtdGVu dGggb2YgYSBzZWNvbmQuICBSZXR1cm5zIHRoZSBvbGQgdGltZW91dCB2YWx1ZS4KLSthc3NpZ25l ZCB0byBAY29kZXtybF9ldmVudF9ob29rfS4gIEB2YXJ7dX0gbXVzdCBiZSBncmVhdGVyIHRoYW4g b3IgZXF1YWwKLSt0byB6ZXJvIChhIHplcm8tbGVuZ3RoIHRpbWVvdXQgaXMgZXF1aXZhbGVudCB0 byBhIHBvbGwpLgotK1RoZSBkZWZhdWx0IHdhaXRpbmcgcGVyaW9kIGlzIG9uZS10ZW50aCBvZiBh IHNlY29uZC4KLStSZXR1cm5zIHRoZSBvbGQgdGltZW91dCB2YWx1ZS4KLSBAZW5kIGRlZnR5cGVm dW4KLSAKLSBAbm9kZSBUZXJtaW5hbCBNYW5hZ2VtZW50Ci1AQCAtMTA3NSw2ICsxMTAzLDI2IEBA IGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHVzZWQuCi0gQG5vZGUgVXRpbGl0eSBGdW5jdGlvbnMK LSBAc3Vic2VjdGlvbiBVdGlsaXR5IEZ1bmN0aW9ucwotIAotK0BkZWZ0eXBlZnVuIGludCBybF9z YXZlX3N0YXRlIChzdHJ1Y3QgcmVhZGxpbmVfc3RhdGUgKnNwKQotK1NhdmUgYSBzbmFwc2hvdCBv ZiBSZWFkbGluZSdzIGludGVybmFsIHN0YXRlIHRvIEB2YXJ7c3B9LgotK1RoZSBjb250ZW50cyBv ZiB0aGUgQHZhcntyZWFkbGluZV9zdGF0ZX0gc3RydWN0dXJlIGFyZSBkb2N1bWVudGVkCi0raW4g QGZpbGV7cmVhZGxpbmUuaH0uCi0rVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgYWxsb2Nh dGluZyB0aGUgc3RydWN0dXJlLgotK0BlbmQgZGVmdHlwZWZ1bgotKwotK0BkZWZ0eXBlZnVuIGlu dCBybF9yZXN0b3JlX3N0YXRlIChzdHJ1Y3QgcmVhZGxpbmVfc3RhdGUgKnNwKQotK1Jlc3RvcmUg UmVhZGxpbmUncyBpbnRlcm5hbCBzdGF0ZSB0byB0aGF0IHN0b3JlZCBpbiBAdmFye3NwfSwgd2hp Y2ggbXVzdAotK2hhdmUgYmVlbiBzYXZlZCBieSBhIGNhbGwgdG8gQGNvZGV7cmxfc2F2ZV9zdGF0 ZX0uCi0rVGhlIGNvbnRlbnRzIG9mIHRoZSBAdmFye3JlYWRsaW5lX3N0YXRlfSBzdHJ1Y3R1cmUg YXJlIGRvY3VtZW50ZWQKLStpbiBAZmlsZXtyZWFkbGluZS5ofS4KLStUaGUgY2FsbGVyIGlzIHJl c3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBzdHJ1Y3R1cmUuCi0rQGVuZCBkZWZ0eXBlZnVuCi0r Ci0rQGRlZnR5cGVmdW4gdm9pZCBybF9mcmVlICh2b2lkICptZW0pCi0rRGVhbGxvY2F0ZSB0aGUg bWVtb3J5IHBvaW50ZWQgdG8gYnkgQHZhcnttZW19LiAgQHZhcnttZW19IG11c3QgaGF2ZSBiZWVu Ci0rYWxsb2NhdGVkIGJ5IEBjb2Rle21hbGxvY30uCi0rQGVuZCBkZWZ0eXBlZnVuCi0rCi0gQGRl ZnR5cGVmdW4gdm9pZCBybF9yZXBsYWNlX2xpbmUgKGNvbnN0IGNoYXIgKnRleHQsIGludCBjbGVh cl91bmRvKQotIFJlcGxhY2UgdGhlIGNvbnRlbnRzIG9mIEBjb2Rle3JsX2xpbmVfYnVmZmVyfSB3 aXRoIEB2YXJ7dGV4dH0uCi0gVGhlIHBvaW50IGFuZCBtYXJrIGFyZSBwcmVzZXJ2ZWQsIGlmIHBv c3NpYmxlLgotQEAgLTEwODIsNyArMTEzMCw3IEBAIElmIEB2YXJ7Y2xlYXJfdW5kb30gaXMgbm9u LXplcm8sIHRoZSB1bmQKLSBjdXJyZW50IGxpbmUgaXMgY2xlYXJlZC4KLSBAZW5kIGRlZnR5cGVm dW4KLSAKLS1AZGVmdHlwZWZ1biBpbnQgcmxfZXh0ZW5kX2xpbmVfYnVmZmVyIChpbnQgbGVuKQot K0BkZWZ0eXBlZnVuIHZvaWQgcmxfZXh0ZW5kX2xpbmVfYnVmZmVyIChpbnQgbGVuKQotIEVuc3Vy ZSB0aGF0IEBjb2Rle3JsX2xpbmVfYnVmZmVyfSBoYXMgZW5vdWdoIHNwYWNlIHRvIGhvbGQgQHZh cntsZW59Ci0gY2hhcmFjdGVycywgcG9zc2libHkgcmVhbGxvY2F0aW5nIGl0IGlmIG5lY2Vzc2Fy eS4KLSBAZW5kIGRlZnR5cGVmdW4KLUBAIC0xMTA5LDYgKzExNTcsOSBAQCBvZiBzdHJpbmdzLCBp biBhcmd2IGZvcm1hdCwgc3VjaCBhcyBhIGxpCi0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2Vz dCBzdHJpbmcgaW4gQGNvZGV7bWF0Y2hlc30uICBUaGlzIGZ1bmN0aW9uIHVzZXMKLSB0aGUgc2V0 dGluZyBvZiBAY29kZXtwcmludC1jb21wbGV0aW9ucy1ob3Jpem9udGFsbHl9IHRvIHNlbGVjdCBo b3cgdGhlCi0gbWF0Y2hlcyBhcmUgZGlzcGxheWVkIChAcHhyZWZ7UmVhZGxpbmUgSW5pdCBGaWxl IFN5bnRheH0pLgotK1doZW4gZGlzcGxheWluZyBjb21wbGV0aW9ucywgdGhpcyBmdW5jdGlvbiBz ZXRzIHRoZSBudW1iZXIgb2YgY29sdW1ucyB1c2VkCi0rZm9yIGRpc3BsYXkgdG8gdGhlIHZhbHVl IG9mIEBjb2Rle2NvbXBsZXRpb24tZGlzcGxheS13aWR0aH0sIHRoZSB2YWx1ZSBvZgotK3RoZSBl bnZpcm9ubWVudCB2YXJpYWJsZSBAZW52e0NPTFVNTlN9LCBvciB0aGUgc2NyZWVuIHdpZHRoLCBp biB0aGF0IG9yZGVyLgotIEBlbmQgZGVmdHlwZWZ1bgotIAotIFRoZSBmb2xsb3dpbmcgYXJlIGlt cGxlbWVudGVkIGFzIG1hY3JvcywgZGVmaW5lZCBpbiBAY29kZXtjaGFyZGVmcy5ofS4KLUBAIC0x MzkyLDYgKzE0NDMsMTMgQEAgY2FsbCBAY29kZXtybF9yZXNpemVfdGVybWluYWwoKX0gb3IgQGNv ZAotIFJlYWRsaW5lIHRvIHVwZGF0ZSBpdHMgaWRlYSBvZiB0aGUgdGVybWluYWwgc2l6ZSB3aGVu IGEgQGNvZGV7U0lHV0lOQ0h9Ci0gaXMgcmVjZWl2ZWQuCi0gCi0rQGRlZnR5cGVmdW4gdm9pZCBy bF9lY2hvX3NpZ25hbF9jaGFyIChpbnQgc2lnKQotK0lmIGFuIGFwcGxpY2F0aW9uIHdpc2hlcyB0 byBpbnN0YWxsIGl0cyBvd24gc2lnbmFsIGhhbmRsZXJzLCBidXQgc3RpbGwKLStoYXZlIHJlYWRs aW5lIGRpc3BsYXkgY2hhcmFjdGVycyB0aGF0IGdlbmVyYXRlIHNpZ25hbHMsIGNhbGxpbmcgdGhp cwotK2Z1bmN0aW9uIHdpdGggQHZhcntzaWd9IHNldCB0byBAY29kZXtTSUdJTlR9LCBAY29kZXtT SUdRVUlUfSwgb3IKLStAY29kZXtTSUdUU1RQfSB3aWxsIGRpc3BsYXkgdGhlIGNoYXJhY3RlciBn ZW5lcmF0aW5nIHRoYXQgc2lnbmFsLgotK0BlbmQgZGVmdHlwZWZ1bgotKwotIEBkZWZ0eXBlZnVu IHZvaWQgcmxfcmVzaXplX3Rlcm1pbmFsICh2b2lkKQotIFVwZGF0ZSBSZWFkbGluZSdzIGludGVy bmFsIHNjcmVlbiBzaXplIGJ5IHJlYWRpbmcgdmFsdWVzIGZyb20gdGhlIGtlcm5lbC4KLSBAZW5k IGRlZnR5cGVmdW4KLUBAIC0xNjU5LDE1ICsxNzE3LDQ5IEBAIGZyb20gdGhlIGFycmF5IG11c3Qg YmUgZnJlZWQuCi0gCi0gQGRlZnR5cGV2YXIge3JsX2ljcHBmdW5jX3QgKn0gcmxfZGlyZWN0b3J5 X2NvbXBsZXRpb25faG9vawotIFRoaXMgZnVuY3Rpb24sIGlmIGRlZmluZWQsIGlzIGFsbG93ZWQg dG8gbW9kaWZ5IHRoZSBkaXJlY3RvcnkgcG9ydGlvbgotLW9mIGZpbGVuYW1lcyBSZWFkbGluZSBj b21wbGV0ZXMuICBJdCBpcyBjYWxsZWQgd2l0aCB0aGUgYWRkcmVzcyBvZiBhCi0tc3RyaW5nICh0 aGUgY3VycmVudCBkaXJlY3RvcnkgbmFtZSkgYXMgYW4gYXJndW1lbnQsIGFuZCBtYXkgbW9kaWZ5 IHRoYXQgc3RyaW5nLgotK29mIGZpbGVuYW1lcyBSZWFkbGluZSBjb21wbGV0ZXMuCi0rSXQgY291 bGQgYmUgdXNlZCB0byBleHBhbmQgc3ltYm9saWMgbGlua3Mgb3Igc2hlbGwgdmFyaWFibGVzIGlu IHBhdGhuYW1lcy4KLStJdCBpcyBjYWxsZWQgd2l0aCB0aGUgYWRkcmVzcyBvZiBhIHN0cmluZyAo dGhlIGN1cnJlbnQgZGlyZWN0b3J5IG5hbWUpIGFzIGFuCi0rYXJndW1lbnQsIGFuZCBtYXkgbW9k aWZ5IHRoYXQgc3RyaW5nLgotIElmIHRoZSBzdHJpbmcgaXMgcmVwbGFjZWQgd2l0aCBhIG5ldyBz dHJpbmcsIHRoZSBvbGQgdmFsdWUgc2hvdWxkIGJlIGZyZWVkLgotIEFueSBtb2RpZmllZCBkaXJl Y3RvcnkgbmFtZSBzaG91bGQgaGF2ZSBhIHRyYWlsaW5nIHNsYXNoLgotLVRoZSBtb2RpZmllZCB2 YWx1ZSB3aWxsIGJlIGRpc3BsYXllZCBhcyBwYXJ0IG9mIHRoZSBjb21wbGV0aW9uLCByZXBsYWNp bmcKLStUaGUgbW9kaWZpZWQgdmFsdWUgd2lsbCBiZSB1c2VkIGFzIHBhcnQgb2YgdGhlIGNvbXBs ZXRpb24sIHJlcGxhY2luZwotIHRoZSBkaXJlY3RvcnkgcG9ydGlvbiBvZiB0aGUgcGF0aG5hbWUg dGhlIHVzZXIgdHlwZWQuCi0tSXQgcmV0dXJucyBhbiBpbnRlZ2VyIHRoYXQgc2hvdWxkIGJlIG5v bi16ZXJvIGlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcwotLWl0cyBkaXJlY3RvcnkgYXJndW1lbnQu Ci0tSXQgY291bGQgYmUgdXNlZCB0byBleHBhbmQgc3ltYm9saWMgbGlua3Mgb3Igc2hlbGwgdmFy aWFibGVzIGluIHBhdGhuYW1lcy4KLStBdCB0aGUgbGVhc3QsIGV2ZW4gaWYgbm8gb3RoZXIgZXhw YW5zaW9uIGlzIHBlcmZvcm1lZCwgdGhpcyBmdW5jdGlvbiBzaG91bGQKLStyZW1vdmUgYW55IHF1 b3RlIGNoYXJhY3RlcnMgZnJvbSB0aGUgZGlyZWN0b3J5IG5hbWUsIGJlY2F1c2UgaXRzIHJlc3Vs dCB3aWxsCi0rYmUgcGFzc2VkIGRpcmVjdGx5IHRvIEBjb2Rle29wZW5kaXIoKX0uCi0rVGhlIGRp cmVjdG9yeSBjb21wbGV0aW9uIGhvb2sgcmV0dXJucyBhbiBpbnRlZ2VyIHRoYXQgc2hvdWxkIGJl IG5vbi16ZXJvIGlmCi0rdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIGl0cyBkaXJlY3RvcnkgYXJndW1l bnQuCi0rVGhlIGZ1bmN0aW9uIHNob3VsZCBub3QgbW9kaWZ5IHRoZSBkaXJlY3RvcnkgYXJndW1l bnQgaWYgaXQgcmV0dXJucyAwLgotK0BlbmQgZGVmdHlwZXZhcgotKwotK0BpZ25vcmUKLStAZGVm dHlwZXZhciBleHRlcm4gcmxfaWNwcGZ1bmNfdCAqcmxfZGlyZWN0b3J5X3Jld3JpdGVfaG9vazsK LStJZiBub24temVybywgdGhpcyBpcyB0aGUgYWRkcmVzcyBvZiBhIGZ1bmN0aW9uIHRvIGNhbGwg d2hlbiBjb21wbGV0aW5nCi0rYSBkaXJlY3RvcnkgbmFtZS4gIFRoaXMgZnVuY3Rpb24gdGFrZXMg dGhlIGFkZHJlc3Mgb2YgdGhlIGRpcmVjdG9yeSBuYW1lCi0rdG8gYmUgbW9kaWZpZWQgYXMgYW4g YXJndW1lbnQuICBVbmxpa2UgQGNvZGV7cmxfZGlyZWN0b3J5X2NvbXBsZXRpb25faG9va30sCi0r aXQgb25seSBtb2RpZmllcyB0aGUgZGlyZWN0b3J5IG5hbWUgdXNlZCBpbiBAY29kZXtvcGVuZGly fSwgbm90IHdoYXQgaXMKLStkaXNwbGF5ZWQgd2hlbiB0aGUgcG9zc2libGUgY29tcGxldGlvbnMg YXJlIHByaW50ZWQgb3IgaW5zZXJ0ZWQuICBJdCBpcwotK2NhbGxlZCBiZWZvcmUgcmxfZGlyZWN0 b3J5X2NvbXBsZXRpb25faG9vay4KLSsKLStJJ20gbm90IGhhcHB5IHdpdGggaG93IHRoaXMgd29y a3MgeWV0LCBzbyBpdCdzIHVuZG9jdW1lbnRlZC4KLStAZW5kIGRlZnR5cGV2YXIKLStAZW5kIGln bm9yZQotKwotK0BkZWZ0eXBldmFyIHtybF9kZXF1b3RlX2Z1bmNfdCAqfSBybF9maWxlbmFtZV9y ZXdyaXRlX2hvb2sKLStJZiBub24temVybywgdGhpcyBpcyB0aGUgYWRkcmVzcyBvZiBhIGZ1bmN0 aW9uIGNhbGxlZCB3aGVuIHJlYWRpbmcKLStkaXJlY3RvcnkgZW50cmllcyBmcm9tIHRoZSBmaWxl c3lzdGVtIGZvciBjb21wbGV0aW9uIGFuZCBjb21wYXJpbmcKLSt0aGVtIHRvIHRoZSBwYXJ0aWFs IHdvcmQgdG8gYmUgY29tcGxldGVkLiAgVGhlIGZ1bmN0aW9uIHNob3VsZAotK3BlcmZvcm0gYW55 IG5lY2VzYXJ5IGFwcGxpY2F0aW9uIG9yIHN5c3RlbS1zcGVjaWZpYyBjb252ZXJzaW9uIG9uCi0r dGhlIGZpbGVuYW1lLCBzdWNoIGFzIGNvbnZlcnRpbmcgYmV0d2VlbiBjaGFyYWN0ZXIgc2V0cyBv ciBjb252ZXJ0aW5nCi0rZnJvbSBhIGZpbGVzeXN0ZW0gZm9ybWF0IHRvIGEgY2hhcmFjdGVyIGlu cHV0IGZvcm1hdC4KLStUaGUgZnVuY3Rpb24gdGFrZXMgdHdvIGFyZ3VtZW50czogQHZhcntmbmFt ZX0sIHRoZSBmaWxlbmFtZSB0byBiZSBjb252ZXJ0ZWQsCi0rYW5kIEB2YXJ7Zm5sZW59LCBpdHMg bGVuZ3RoIGluIGJ5dGVzLgotK0l0IG11c3QgZWl0aGVyIHJldHVybiBpdHMgZmlyc3QgYXJndW1l bnQgKGlmIG5vIGNvbnZlcnNpb24gdGFrZXMgcGxhY2UpCi0rb3IgdGhlIGNvbnZlcnRlZCBmaWxl bmFtZSBpbiBuZXdseS1hbGxvY2F0ZWQgbWVtb3J5LiAgVGhlIGNvbnZlcnRlZAotK2Zvcm0gaXMg dXNlZCB0byBjb21wYXJlIGFnYWluc3QgdGhlIHdvcmQgdG8gYmUgY29tcGxldGVkLCBhbmQsIGlm IGl0Ci0rbWF0Y2hlcywgaXMgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgbWF0Y2hlcy4gIFJlYWRsaW5l IHdpbGwgZnJlZSB0aGUKLSthbGxvY2F0ZWQgc3RyaW5nLgotIEBlbmQgZGVmdHlwZXZhcgotIAot IEBkZWZ0eXBldmFyIHtybF9jb21wZGlzcF9mdW5jX3QgKn0gcmxfY29tcGxldGlvbl9kaXNwbGF5 X21hdGNoZXNfaG9vawotQEAgLTE4MjIsNiArMTkxNCwxNSBAQCBpZiB0aGUgYXBwbGljYXRpb24n cyBjb21wbGV0aW9uIGZ1bmN0aW9uCi0gSXQgc2hvdWxkIGJlIHNldCBvbmx5IGJ5IGFuIGFwcGxp Y2F0aW9uJ3MgY29tcGxldGlvbiBmdW5jdGlvbi4KLSBAZW5kIGRlZnR5cGV2YXIKLSAKLStAZGVm dHlwZXZhciBpbnQgcmxfc29ydF9jb21wbGV0aW9uX21hdGNoZXMKLStJZiBhbiBhcHBsaWNhdGlv biBzZXRzIHRoaXMgdmFyaWFibGUgdG8gMCwgUmVhZGxpbmUgd2lsbCBub3Qgc29ydCB0aGUKLSts aXN0IG9mIGNvbXBsZXRpb25zICh3aGljaCBpbXBsaWVzIHRoYXQgaXQgY2Fubm90IHJlbW92ZSBh bnkgZHVwbGljYXRlCi0rY29tcGxldGlvbnMpLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgMSwgd2hp Y2ggbWVhbnMgdGhhdCBSZWFkbGluZSB3aWxsCi0rc29ydCB0aGUgY29tcGxldGlvbnMgYW5kLCBk ZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mCi0rQGNvZGV7cmxfaWdub3JlX2NvbXBsZXRpb25fZHVw bGljYXRlc30sIHdpbGwgYXR0ZW1wdCB0byByZW1vdmUgZHVwbGljYXRlCi0rbWF0Y2hlcy4KLStA ZW5kIGRlZnR5cGV2YXIKLSsKLSBAZGVmdHlwZXZhciBpbnQgcmxfY29tcGxldGlvbl90eXBlCi0g U2V0IHRvIGEgY2hhcmFjdGVyIGRlc2NyaWJpbmcgdGhlIHR5cGUgb2YgY29tcGxldGlvbiBSZWFk bGluZSBpcyBjdXJyZW50bHkKLSBhdHRlbXB0aW5nOyBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIEBj b2Rle3JsX2NvbXBsZXRlX2ludGVybmFsKCl9Ci1AQCAtMTgzMSw2ICsxOTMyLDEzIEBAIGNvbXBs ZXRpb24gZnVuY3Rpb24gaXMgY2FsbGVkLCBhbGxvd2luZyAKLSB0aGUgc2FtZSBpbnRlcmZhY2Ug YXMgQGNvZGV7cmxfY29tcGxldGUoKX0uCi0gQGVuZCBkZWZ0eXBldmFyCi0gCi0rQGRlZnR5cGV2 YXIgaW50IHJsX2NvbXBsZXRpb25faW52b2tpbmdfa2V5Ci0rU2V0IHRvIHRoZSBmaW5hbCBjaGFy YWN0ZXIgaW4gdGhlIGtleSBzZXF1ZW5jZSB0aGF0IGludm9rZWQgb25lIG9mIHRoZQotK2NvbXBs ZXRpb24gZnVuY3Rpb25zIHRoYXQgY2FsbCBAY29kZXtybF9jb21wbGV0ZV9pbnRlcm5hbCgpfS4g IFRoaXMgaXMKLStzZXQgdG8gdGhlIGFwcHJvcHJpYXRlIHZhbHVlIGJlZm9yZSBhbnkgYXBwbGlj YXRpb24tc3BlY2lmaWMgY29tcGxldGlvbgotK2Z1bmN0aW9uIGlzIGNhbGxlZC4KLStAZW5kIGRl ZnR5cGV2YXIKLSsKLSBAZGVmdHlwZXZhciBpbnQgcmxfaW5oaWJpdF9jb21wbGV0aW9uCi0gSWYg dGhpcyB2YXJpYWJsZSBpcyBub24temVybywgY29tcGxldGlvbiBpcyBpbmhpYml0ZWQuICBUaGUg Y29tcGxldGlvbgotIGNoYXJhY3RlciB3aWxsIGJlIGluc2VydGVkIGFzIGFueSBvdGhlciBib3Vu ZCB0byBAY29kZXtzZWxmLWluc2VydH0uCi1AQCAtMTg1MSwyNyArMTk1OSw1MSBAQCBoaXN0b3J5 IGxpc3QuCi0gICAgR05VIFJlYWRsaW5lIGxpYnJhcnkuICBUaGlzIGFwcGxpY2F0aW9uIGludGVy YWN0aXZlbHkgYWxsb3dzIHVzZXJzCi0gICAgdG8gbWFuaXB1bGF0ZSBmaWxlcyBhbmQgdGhlaXIg bW9kZXMuICovCi0gCi0tI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2lmZGVmIEhBVkVfQ09ORklHX0gK LSsjICBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSAjaW5jbHVkZSA8c3lzL3R5cGVz Lmg+Ci0tI2luY2x1ZGUgPHN5cy9maWxlLmg+Ci0rI2lmZGVmIEhBVkVfU1lTX0ZJTEVfSAotKyMg IGluY2x1ZGUgPHN5cy9maWxlLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0t I2luY2x1ZGUgPHN5cy9lcnJuby5oPgotKwotKyNpZmRlZiBIQVZFX1VOSVNURF9ICi0rIyAgaW5j bHVkZSA8dW5pc3RkLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2luY2x1 ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rCi0rI2lmIGRlZmluZWQgKEhBVkVf U1RSSU5HX0gpCi0rIyAgaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2Vsc2UgLyogIUhBVkVfU1RSSU5H X0ggKi8KLSsjICBpbmNsdWRlIDxzdHJpbmdzLmg+Ci0rI2VuZGlmIC8qICFIQVZFX1NUUklOR19I ICovCi0rCi0rI2lmZGVmIEhBVkVfU1RETElCX0gKLSsjICBpbmNsdWRlIDxzdGRsaWIuaD4KLSsj ZW5kaWYKLSsKLSsjaW5jbHVkZSA8dGltZS5oPgotIAotICNpbmNsdWRlIDxyZWFkbGluZS9yZWFk bGluZS5oPgotICNpbmNsdWRlIDxyZWFkbGluZS9oaXN0b3J5Lmg+Ci0gCi0tZXh0ZXJuIGNoYXIg KnhtYWxsb2MgKCk7Ci0rZXh0ZXJuIGNoYXIgKnhtYWxsb2MgUEFSQU1TKChzaXplX3QpKTsKLSAK LSAvKiBUaGUgbmFtZXMgb2YgZnVuY3Rpb25zIHRoYXQgYWN0dWFsbHkgZG8gdGhlIG1hbmlwdWxh dGlvbi4gKi8KLS1pbnQgY29tX2xpc3QgX19QKChjaGFyICopKTsKLS1pbnQgY29tX3ZpZXcgX19Q KChjaGFyICopKTsKLS1pbnQgY29tX3JlbmFtZSBfX1AoKGNoYXIgKikpOwotLWludCBjb21fc3Rh dCBfX1AoKGNoYXIgKikpOwotLWludCBjb21fcHdkIF9fUCgoY2hhciAqKSk7Ci0taW50IGNvbV9k ZWxldGUgX19QKChjaGFyICopKTsKLS1pbnQgY29tX2hlbHAgX19QKChjaGFyICopKTsKLS1pbnQg Y29tX2NkIF9fUCgoY2hhciAqKSk7Ci0taW50IGNvbV9xdWl0IF9fUCgoY2hhciAqKSk7Ci0raW50 IGNvbV9saXN0IFBBUkFNUygoY2hhciAqKSk7Ci0raW50IGNvbV92aWV3IFBBUkFNUygoY2hhciAq KSk7Ci0raW50IGNvbV9yZW5hbWUgUEFSQU1TKChjaGFyICopKTsKLStpbnQgY29tX3N0YXQgUEFS QU1TKChjaGFyICopKTsKLStpbnQgY29tX3B3ZCBQQVJBTVMoKGNoYXIgKikpOwotK2ludCBjb21f ZGVsZXRlIFBBUkFNUygoY2hhciAqKSk7Ci0raW50IGNvbV9oZWxwIFBBUkFNUygoY2hhciAqKSk7 Ci0raW50IGNvbV9jZCBQQVJBTVMoKGNoYXIgKikpOwotK2ludCBjb21fcXVpdCBQQVJBTVMoKGNo YXIgKikpOwotIAotIC8qIEEgc3RydWN0dXJlIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIG9u IHRoZSBjb21tYW5kcyB0aGlzIHByb2dyYW0KLSAgICBjYW4gdW5kZXJzdGFuZC4gKi8KLUBAIC0x OTA0LDEyICsyMDM2LDEyIEBAIENPTU1BTkQgKmZpbmRfY29tbWFuZCAoKTsKLSAvKiBUaGUgbmFt ZSBvZiB0aGlzIHByb2dyYW0sIGFzIHRha2VuIGZyb20gYXJndlswXS4gKi8KLSBjaGFyICpwcm9n bmFtZTsKLSAKLS0vKiBXaGVuIG5vbi16ZXJvLCB0aGlzIG1lYW5zIHRoZSB1c2VyIGlzIGRvbmUg dXNpbmcgdGhpcyBwcm9ncmFtLiAqLwotKy8qIFdoZW4gbm9uLXplcm8sIHRoaXMgZ2xvYmFsIG1l YW5zIHRoZSB1c2VyIGlzIGRvbmUgdXNpbmcgdGhpcyBwcm9ncmFtLiAqLwotIGludCBkb25lOwot IAotIGNoYXIgKgotIGR1cHN0ciAocykKLS0gICAgIGludCBzOwotKyAgICAgY2hhciAqczsKLSBA ewotICAgY2hhciAqcjsKLSAKLUBAIC0yMDM0LDEyICsyMTY2LDEyIEBAIHN0cmlwd2hpdGUgKHN0 cmluZykKLSAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICovCi0gLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIAotLWNoYXIgKmNvbW1hbmRf Z2VuZXJhdG9yIF9fUCgoY29uc3QgY2hhciAqLCBpbnQpKTsKLS1jaGFyICoqZmlsZW1hbl9jb21w bGV0aW9uIF9fUCgoY29uc3QgY2hhciAqLCBpbnQsIGludCkpOwotK2NoYXIgKmNvbW1hbmRfZ2Vu ZXJhdG9yIFBBUkFNUygoY29uc3QgY2hhciAqLCBpbnQpKTsKLStjaGFyICoqZmlsZW1hbl9jb21w bGV0aW9uIFBBUkFNUygoY29uc3QgY2hhciAqLCBpbnQsIGludCkpOwotIAotLS8qIFRlbGwgdGhl IEdOVSBSZWFkbGluZSBsaWJyYXJ5IGhvdyB0byBjb21wbGV0ZS4gIFdlIHdhbnQgdG8gdHJ5IHRv Ci0tICAgY29tcGxldGUgb24gY29tbWFuZCBuYW1lcyBpZiB0aGlzIGlzIHRoZSBmaXJzdCB3b3Jk IGluIHRoZSBsaW5lLCBvcgotLSAgIG9uIGZpbGVuYW1lcyBpZiBub3QuICovCi0rLyogVGVsbCB0 aGUgR05VIFJlYWRsaW5lIGxpYnJhcnkgaG93IHRvIGNvbXBsZXRlLiAgV2Ugd2FudCB0byB0cnkg dG8gY29tcGxldGUKLSsgICBvbiBjb21tYW5kIG5hbWVzIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHdv cmQgaW4gdGhlIGxpbmUsIG9yIG9uIGZpbGVuYW1lcwotKyAgIGlmIG5vdC4gKi8KLSBpbml0aWFs aXplX3JlYWRsaW5lICgpCi0gQHsKLSAgIC8qIEFsbG93IGNvbmRpdGlvbmFsIHBhcnNpbmcgb2Yg dGhlIH4vLmlucHV0cmMgZmlsZS4gKi8KLUBAIC0yMDQ5LDExICsyMTgxLDExIEBAIGluaXRpYWxp emVfcmVhZGxpbmUgKCkKLSAgIHJsX2F0dGVtcHRlZF9jb21wbGV0aW9uX2Z1bmN0aW9uID0gZmls ZW1hbl9jb21wbGV0aW9uOwotIEB9Ci0gCi0tLyogQXR0ZW1wdCB0byBjb21wbGV0ZSBvbiB0aGUg Y29udGVudHMgb2YgVEVYVC4gIFNUQVJUIGFuZCBFTkQKLS0gICBib3VuZCB0aGUgcmVnaW9uIG9m IHJsX2xpbmVfYnVmZmVyIHRoYXQgY29udGFpbnMgdGhlIHdvcmQgdG8KLS0gICBjb21wbGV0ZS4g IFRFWFQgaXMgdGhlIHdvcmQgdG8gY29tcGxldGUuICBXZSBjYW4gdXNlIHRoZSBlbnRpcmUKLS0g ICBjb250ZW50cyBvZiBybF9saW5lX2J1ZmZlciBpbiBjYXNlIHdlIHdhbnQgdG8gZG8gc29tZSBz aW1wbGUKLS0gICBwYXJzaW5nLiAgUmV0dXJudGhlIGFycmF5IG9mIG1hdGNoZXMsIG9yIE5VTEwg aWYgdGhlcmUgYXJlbid0IGFueS4gKi8KLSsvKiBBdHRlbXB0IHRvIGNvbXBsZXRlIG9uIHRoZSBj b250ZW50cyBvZiBURVhULiAgU1RBUlQgYW5kIEVORCBib3VuZCB0aGUKLSsgICByZWdpb24gb2Yg cmxfbGluZV9idWZmZXIgdGhhdCBjb250YWlucyB0aGUgd29yZCB0byBjb21wbGV0ZS4gIFRFWFQg aXMKLSsgICB0aGUgd29yZCB0byBjb21wbGV0ZS4gIFdlIGNhbiB1c2UgdGhlIGVudGlyZSBjb250 ZW50cyBvZiBybF9saW5lX2J1ZmZlcgotKyAgIGluIGNhc2Ugd2Ugd2FudCB0byBkbyBzb21lIHNp bXBsZSBwYXJzaW5nLiAgUmV0dXJuIHRoZSBhcnJheSBvZiBtYXRjaGVzLAotKyAgIG9yIE5VTEwg aWYgdGhlcmUgYXJlbid0IGFueS4gKi8KLSBjaGFyICoqCi0gZmlsZW1hbl9jb21wbGV0aW9uICh0 ZXh0LCBzdGFydCwgZW5kKQotICAgICAgY29uc3QgY2hhciAqdGV4dDsKLUBAIC0yMDcyLDkgKzIy MDQsOSBAQCBmaWxlbWFuX2NvbXBsZXRpb24gKHRleHQsIHN0YXJ0LCBlbmQpCi0gICByZXR1cm4g KG1hdGNoZXMpOwotIEB9Ci0gCi0tLyogR2VuZXJhdG9yIGZ1bmN0aW9uIGZvciBjb21tYW5kIGNv bXBsZXRpb24uICBTVEFURSBsZXRzIHVzCi0tICAga25vdyB3aGV0aGVyIHRvIHN0YXJ0IGZyb20g c2NyYXRjaDsgd2l0aG91dCBhbnkgc3RhdGUKLS0gICAoaS5lLiBTVEFURSA9PSAwKSwgdGhlbiB3 ZSBzdGFydCBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0LiAqLwotKy8qIEdlbmVyYXRvciBmdW5jdGlv biBmb3IgY29tbWFuZCBjb21wbGV0aW9uLiAgU1RBVEUgbGV0cyB1cyBrbm93IHdoZXRoZXIKLSsg ICB0byBzdGFydCBmcm9tIHNjcmF0Y2g7IHdpdGhvdXQgYW55IHN0YXRlIChpLmUuIFNUQVRFID09 IDApLCB0aGVuIHdlCi0rICAgc3RhcnQgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdC4gKi8KLSBjaGFy ICoKLSBjb21tYW5kX2dlbmVyYXRvciAodGV4dCwgc3RhdGUpCi0gICAgICBjb25zdCBjaGFyICp0 ZXh0OwotQEAgLTIwODMsMTcgKzIyMTUsMTYgQEAgY29tbWFuZF9nZW5lcmF0b3IgKHRleHQsIHN0 YXRlKQotICAgc3RhdGljIGludCBsaXN0X2luZGV4LCBsZW47Ci0gICBjaGFyICpuYW1lOwotIAot LSAgLyogSWYgdGhpcyBpcyBhIG5ldyB3b3JkIHRvIGNvbXBsZXRlLCBpbml0aWFsaXplIG5vdy4g IFRoaXMKLS0gICAgIGluY2x1ZGVzIHNhdmluZyB0aGUgbGVuZ3RoIG9mIFRFWFQgZm9yIGVmZmlj aWVuY3ksIGFuZAotLSAgICAgaW5pdGlhbGl6aW5nIHRoZSBpbmRleCB2YXJpYWJsZSB0byAwLiAq LwotKyAgLyogSWYgdGhpcyBpcyBhIG5ldyB3b3JkIHRvIGNvbXBsZXRlLCBpbml0aWFsaXplIG5v dy4gIFRoaXMgaW5jbHVkZXMKLSsgICAgIHNhdmluZyB0aGUgbGVuZ3RoIG9mIFRFWFQgZm9yIGVm ZmljaWVuY3ksIGFuZCBpbml0aWFsaXppbmcgdGhlIGluZGV4Ci0rICAgICB2YXJpYWJsZSB0byAw LiAqLwotICAgaWYgKCFzdGF0ZSkKLSAgICAgQHsKLSAgICAgICBsaXN0X2luZGV4ID0gMDsKLSAg ICAgICBsZW4gPSBzdHJsZW4gKHRleHQpOwotICAgICBAfQotIAotLSAgLyogUmV0dXJuIHRoZSBu ZXh0IG5hbWUgd2hpY2ggcGFydGlhbGx5IG1hdGNoZXMgZnJvbSB0aGUKLS0gICAgIGNvbW1hbmQg bGlzdC4gKi8KLSsgIC8qIFJldHVybiB0aGUgbmV4dCBuYW1lIHdoaWNoIHBhcnRpYWxseSBtYXRj aGVzIGZyb20gdGhlIGNvbW1hbmQgbGlzdC4gKi8KLSAgIHdoaWxlIChuYW1lID0gY29tbWFuZHNb bGlzdF9pbmRleF0ubmFtZSkKLSAgICAgQHsKLSAgICAgICBsaXN0X2luZGV4Kys7Ci1AQCAtMjEz Myw3ICsyMjY0LDEyIEBAIGNvbV92aWV3IChhcmcpCi0gICBpZiAoIXZhbGlkX2FyZ3VtZW50ICgi dmlldyIsIGFyZykpCi0gICAgIHJldHVybiAxOwotIAotKyNpZiBkZWZpbmVkIChfX01TRE9TX18p Ci0rICAvKiBtb3JlLmNvbSBkb2Vzbid0IGdyb2sgc2xhc2hlcyBpbiBwYXRobmFtZXMgKi8KLSsg IHNwcmludGYgKHN5c2NvbSwgImxlc3MgJXMiLCBhcmcpOwotKyNlbHNlCi0gICBzcHJpbnRmIChz eXNjb20sICJtb3JlICVzIiwgYXJnKTsKLSsjZW5kaWYKLSAgIHJldHVybiAoc3lzdGVtIChzeXNj b20pKTsKLSBAfQotIAotQEAgLTIxNjAsNyArMjI5Niw4IEBAIGNvbV9zdGF0IChhcmcpCi0gCi0g ICBwcmludGYgKCJTdGF0aXN0aWNzIGZvciBgJXMnOlxuIiwgYXJnKTsKLSAKLS0gIHByaW50ZiAo IiVzIGhhcyAlZCBsaW5rJXMsIGFuZCBpcyAlZCBieXRlJXMgaW4gbGVuZ3RoLlxuIiwgYXJnLAot KyAgcHJpbnRmICgiJXMgaGFzICVkIGxpbmslcywgYW5kIGlzICVkIGJ5dGUlcyBpbiBsZW5ndGgu XG4iLAotKwkgIGFyZywKLSAgICAgICAgICAgZmluZm8uc3RfbmxpbmssCi0gICAgICAgICAgIChm aW5mby5zdF9ubGluayA9PSAxKSA/ICIiIDogInMiLAotICAgICAgICAgICBmaW5mby5zdF9zaXpl LAotQEAgLTIyNDksOCArMjM4Niw3IEBAIGNvbV9wd2QgKGlnbm9yZSkKLSAgIHJldHVybiAwOwot IEB9Ci0gCi0tLyogVGhlIHVzZXIgd2lzaGVzIHRvIHF1aXQgdXNpbmcgdGhpcyBwcm9ncmFtLiAg SnVzdCBzZXQgRE9ORQotLSAgIG5vbi16ZXJvLiAqLwotKy8qIFRoZSB1c2VyIHdpc2hlcyB0byBx dWl0IHVzaW5nIHRoaXMgcHJvZ3JhbS4gIEp1c3Qgc2V0IERPTkUgbm9uLXplcm8uICovCi0gY29t X3F1aXQgKGFyZykKLSAgICAgIGNoYXIgKmFyZzsKLSBAewotQEAgLTIyNjMsMTMgKzIzOTksMTIg QEAgdG9vX2Rhbmdlcm91cyAoY2FsbGVyKQotICAgICAgY2hhciAqY2FsbGVyOwotIEB7Ci0gICBm cHJpbnRmIChzdGRlcnIsCi0tICAgICAgICAgICAiJXM6IFRvbyBkYW5nZXJvdXMgZm9yIG1lIHRv IGRpc3RyaWJ1dGUuXG4iLAotKyAgICAgICAgICAgIiVzOiBUb28gZGFuZ2Vyb3VzIGZvciBtZSB0 byBkaXN0cmlidXRlLiAgV3JpdGUgaXQgeW91cnNlbGYuXG4iLAotICAgICAgICAgICAgY2FsbGVy KTsKLS0gIGZwcmludGYgKHN0ZGVyciwgIldyaXRlIGl0IHlvdXJzZWxmLlxuIik7Ci0gQH0KLSAK LS0vKiBSZXR1cm4gbm9uLXplcm8gaWYgQVJHIGlzIGEgdmFsaWQgYXJndW1lbnQgZm9yIENBTExF UiwKLS0gICBlbHNlIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgYW5kIHJldHVybiB6ZXJvLiAqLwot Ky8qIFJldHVybiBub24temVybyBpZiBBUkcgaXMgYSB2YWxpZCBhcmd1bWVudCBmb3IgQ0FMTEVS LCBlbHNlIHByaW50Ci0rICAgYW4gZXJyb3IgbWVzc2FnZSBhbmQgcmV0dXJuIHplcm8uICovCi0g aW50Ci0gdmFsaWRfYXJndW1lbnQgKGNhbGxlciwgYXJnKQotICAgICAgY2hhciAqY2FsbGVyLCAq YXJnOwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL3JsdXNlci50ZXhp Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2RvYy9y bHVzZXIudGV4aQkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL3JsdXNlci50ZXhpCTIwMTEtMDctMDMgMTA6NDE6 MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSw3ICsxLDYgQEAKLSBAY29tbWVudCAlKipzdGFydCBv ZiBoZWFkZXIgKFRoaXMgaXMgZm9yIHJ1bm5pbmcgVGV4aW5mbyBvbiBhIHJlZ2lvbi4pCi0gQHNl dGZpbGVuYW1lIHJsdXNlci5pbmZvCi0gQGNvbW1lbnQgJSoqZW5kIG9mIGhlYWRlciAoVGhpcyBp cyBmb3IgcnVubmluZyBUZXhpbmZvIG9uIGEgcmVnaW9uLikKLS1Ac2V0Y2hhcHRlcm5ld3BhZ2Ug b2RkCi0gCi0gQGlnbm9yZQotIFRoaXMgZmlsZSBkb2N1bWVudHMgdGhlIGVuZCB1c2VyIGludGVy ZmFjZSB0byB0aGUgR05VIGNvbW1hbmQgbGluZQotQEAgLTEwLDcgKzksNyBAQCB1c2UgdGhlc2Ug ZmVhdHVyZXMuICBUaGVyZSBpcyBhIGRvY3VtZW50Ci0gd2hpY2ggY29udGFpbnMgYm90aCBlbmQt dXNlciBhbmQgcHJvZ3JhbW1lciBkb2N1bWVudGF0aW9uIGZvciB0aGUKLSBHTlUgUmVhZGxpbmUg TGlicmFyeS4KLSAKLS1Db3B5cmlnaHQgKEMpIDE5ODgtMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLStDb3B5cmlnaHQgKEMpIDE5ODgtLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0gCi0gQXV0aG9yZWQgYnkgQnJpYW4gRm94IGFuZCBDaGV0IFJhbWV5Lgot IAotQEAgLTQ4LDYgKzQ3LDE2IEBAIGNvbW1hbmQgbGluZSBlZGl0aW5nIGludGVyZmFjZS4KLSBA aWZzZXQgQmFzaEZlYXR1cmVzCi0gQ29tbWFuZCBsaW5lIGVkaXRpbmcgaXMgcHJvdmlkZWQgYnkg dGhlIFJlYWRsaW5lIGxpYnJhcnksIHdoaWNoIGlzCi0gdXNlZCBieSBzZXZlcmFsIGRpZmZlcmVu dCBwcm9ncmFtcywgaW5jbHVkaW5nIEJhc2guCi0rQ29tbWFuZCBsaW5lIGVkaXRpbmcgaXMgZW5h YmxlZCBieSBkZWZhdWx0IHdoZW4gdXNpbmcgYW4gaW50ZXJhY3RpdmUgc2hlbGwsCi0rdW5sZXNz IHRoZSBAb3B0aW9uey0tbm9lZGl0aW5nfSBvcHRpb24gaXMgc3VwcGxpZWQgYXQgc2hlbGwgaW52 b2NhdGlvbi4KLStMaW5lIGVkaXRpbmcgaXMgYWxzbyB1c2VkIHdoZW4gdXNpbmcgdGhlIEBvcHRp b257LWV9IG9wdGlvbiB0byB0aGUKLStAY29kZXtyZWFkfSBidWlsdGluIGNvbW1hbmQgKEBweHJl ZntCYXNoIEJ1aWx0aW5zfSkuCi0rQnkgZGVmYXVsdCwgdGhlIGxpbmUgZWRpdGluZyBjb21tYW5k cyBhcmUgc2ltaWxhciB0byB0aG9zZSBvZiBFbWFjcy4KLStBIHZpLXN0eWxlIGxpbmUgZWRpdGlu ZyBpbnRlcmZhY2UgaXMgYWxzbyBhdmFpbGFibGUuCi0rTGluZSBlZGl0aW5nIGNhbiBiZSBlbmFi bGVkIGF0IGFueSB0aW1lIHVzaW5nIHRoZSBAb3B0aW9uey1vIGVtYWNzfSBvcgotK0BvcHRpb257 LW8gdml9IG9wdGlvbnMgdG8gdGhlIEBjb2Rle3NldH0gYnVpbHRpbiBjb21tYW5kCi0rKEBweHJl ZntUaGUgU2V0IEJ1aWx0aW59KSwgb3IgZGlzYWJsZWQgdXNpbmcgdGhlIEBvcHRpb257K28gZW1h Y3N9IG9yIAotK0BvcHRpb257K28gdml9IG9wdGlvbnMgdG8gQGNvZGV7c2V0fS4KLSBAZW5kIGlm c2V0Ci0gCi0gQG1lbnUKLUBAIC0zMzYsNyArMzQ1LDkgQEAgZmlsZSBpcyB0YWtlbiBmcm9tIHRo ZSB2YWx1ZSBvZiB0aGUgc2hlbAotIEBpZmNsZWFyIEJhc2hGZWF0dXJlcwotIGZpbGUgaXMgdGFr ZW4gZnJvbSB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIEBlbnZ7SU5QVVRS Q30uICBJZgotIEBlbmQgaWZjbGVhcgotLXRoYXQgdmFyaWFibGUgaXMgdW5zZXQsIHRoZSBkZWZh dWx0IGlzIEBmaWxle34vLmlucHV0cmN9LgotK3RoYXQgdmFyaWFibGUgaXMgdW5zZXQsIHRoZSBk ZWZhdWx0IGlzIEBmaWxle34vLmlucHV0cmN9LiAgSWYgdGhhdAotK2ZpbGUgZG9lcyBub3QgZXhp c3Qgb3IgY2Fubm90IGJlIHJlYWQsIHRoZSB1bHRpbWF0ZSBkZWZhdWx0IGlzCi0rQGZpbGV7L2V0 Yy9pbnB1dHJjfS4KLSAKLSBXaGVuIGEgcHJvZ3JhbSB3aGljaCB1c2VzIHRoZSBSZWFkbGluZSBs aWJyYXJ5IHN0YXJ0cyB1cCwgdGhlCi0gaW5pdCBmaWxlIGlzIHJlYWQsIGFuZCB0aGUga2V5IGJp bmRpbmdzIGFyZSBzZXQuCi1AQCAtNDIwLDExICs0MzEsMzQgQEAgVGhlIHN0cmluZyB0byBpbnNl cnQgYXQgdGhlIGJlZ2lubmluZyBvZgotIEBjb2Rle2luc2VydC1jb21tZW50fSBjb21tYW5kIGlz IGV4ZWN1dGVkLiAgVGhlIGRlZmF1bHQgdmFsdWUKLSBpcyBAY29kZXsiIyJ9LgotIAotK0BpdGVt IGNvbXBsZXRpb24tZGlzcGxheS13aWR0aAotK0B2aW5kZXggY29tcGxldGlvbi1kaXNwbGF5LXdp ZHRoCi0rVGhlIG51bWJlciBvZiBzY3JlZW4gY29sdW1ucyB1c2VkIHRvIGRpc3BsYXkgcG9zc2li bGUgbWF0Y2hlcwotK3doZW4gcGVyZm9ybWluZyBjb21wbGV0aW9uLgotK1RoZSB2YWx1ZSBpcyBp Z25vcmVkIGlmIGl0IGlzIGxlc3MgdGhhbiAwIG9yIGdyZWF0ZXIgdGhhbiB0aGUgdGVybWluYWwK LStzY3JlZW4gd2lkdGguCi0rQSB2YWx1ZSBvZiAwIHdpbGwgY2F1c2UgbWF0Y2hlcyB0byBiZSBk aXNwbGF5ZWQgb25lIHBlciBsaW5lLgotK1RoZSBkZWZhdWx0IHZhbHVlIGlzIC0xLgotKwotIEBp dGVtIGNvbXBsZXRpb24taWdub3JlLWNhc2UKLStAdmluZGV4IGNvbXBsZXRpb24taWdub3JlLWNh c2UKLSBJZiBzZXQgdG8gQHNhbXB7b259LCBSZWFkbGluZSBwZXJmb3JtcyBmaWxlbmFtZSBtYXRj aGluZyBhbmQgY29tcGxldGlvbgotIGluIGEgY2FzZS1pbnNlbnNpdGl2ZSBmYXNoaW9uLgotIFRo ZSBkZWZhdWx0IHZhbHVlIGlzIEBzYW1we29mZn0uCi0gCi0rQGl0ZW0gY29tcGxldGlvbi1tYXAt Y2FzZQotK0B2aW5kZXggY29tcGxldGlvbi1tYXAtY2FzZQotK0lmIHNldCB0byBAc2FtcHtvbn0s IGFuZCBAdmFye2NvbXBsZXRpb24taWdub3JlLWNhc2V9IGlzIGVuYWJsZWQsIFJlYWRsaW5lCi0r dHJlYXRzIGh5cGhlbnMgKEBzYW1wey19KSBhbmQgdW5kZXJzY29yZXMgKEBzYW1we199KSBhcyBl cXVpdmFsZW50IHdoZW4KLStwZXJmb3JtaW5nIGNhc2UtaW5zZW5zaXRpdmUgZmlsZW5hbWUgbWF0 Y2hpbmcgYW5kIGNvbXBsZXRpb24uCi0rCi0rQGl0ZW0gY29tcGxldGlvbi1wcmVmaXgtZGlzcGxh eS1sZW5ndGgKLStAdmluZGV4IGNvbXBsZXRpb24tcHJlZml4LWRpc3BsYXktbGVuZ3RoCi0rVGhl IGxlbmd0aCBpbiBjaGFyYWN0ZXJzIG9mIHRoZSBjb21tb24gcHJlZml4IG9mIGEgbGlzdCBvZiBw b3NzaWJsZQotK2NvbXBsZXRpb25zIHRoYXQgaXMgZGlzcGxheWVkIHdpdGhvdXQgbW9kaWZpY2F0 aW9uLiAgV2hlbiBzZXQgdG8gYQotK3ZhbHVlIGdyZWF0ZXIgdGhhbiB6ZXJvLCBjb21tb24gcHJl Zml4ZXMgbG9uZ2VyIHRoYW4gdGhpcyB2YWx1ZSBhcmUKLStyZXBsYWNlZCB3aXRoIGFuIGVsbGlw c2lzIHdoZW4gZGlzcGxheWluZyBwb3NzaWJsZSBjb21wbGV0aW9ucy4KLSsKLSBAaXRlbSBjb21w bGV0aW9uLXF1ZXJ5LWl0ZW1zCi0gQHZpbmRleCBjb21wbGV0aW9uLXF1ZXJ5LWl0ZW1zCi0gVGhl IG51bWJlciBvZiBwb3NzaWJsZSBjb21wbGV0aW9ucyB0aGF0IGRldGVybWluZXMgd2hlbiB0aGUg dXNlciBpcwotQEAgLTQ1NiwxMiArNDkwLDIzIEBAIGtleSBiaW5kaW5ncyBpcyB1c2VkLiAgQnkg ZGVmYXVsdCwgUmVhZGwKLSBtb2RlLCB3aGVyZSB0aGUga2V5c3Ryb2tlcyBhcmUgbW9zdCBzaW1p bGFyIHRvIEVtYWNzLiAgVGhpcyB2YXJpYWJsZSBjYW4gYmUKLSBzZXQgdG8gZWl0aGVyIEBzYW1w e2VtYWNzfSBvciBAc2FtcHt2aX0uCi0gCi0rQGl0ZW0gZWNoby1jb250cm9sLWNoYXJhY3RlcnMK LStXaGVuIHNldCB0byBAc2FtcHtvbn0sIG9uIG9wZXJhdGluZyBzeXN0ZW1zIHRoYXQgaW5kaWNh dGUgdGhleSBzdXBwb3J0IGl0LAotK3JlYWRsaW5lIGVjaG9lcyBhIGNoYXJhY3RlciBjb3JyZXNw b25kaW5nIHRvIGEgc2lnbmFsIGdlbmVyYXRlZCBmcm9tIHRoZQotK2tleWJvYXJkLiAgVGhlIGRl ZmF1bHQgaXMgQHNhbXB7b259LgotKwotIEBpdGVtIGVuYWJsZS1rZXlwYWQKLSBAdmluZGV4IGVu YWJsZS1rZXlwYWQKLSBXaGVuIHNldCB0byBAc2FtcHtvbn0sIFJlYWRsaW5lIHdpbGwgdHJ5IHRv IGVuYWJsZSB0aGUgYXBwbGljYXRpb24KLSBrZXlwYWQgd2hlbiBpdCBpcyBjYWxsZWQuICBTb21l IHN5c3RlbXMgbmVlZCB0aGlzIHRvIGVuYWJsZSB0aGUKLSBhcnJvdyBrZXlzLiAgVGhlIGRlZmF1 bHQgaXMgQHNhbXB7b2ZmfS4KLSAKLStAaXRlbSBlbmFibGUtbWV0YS1rZXkKLStXaGVuIHNldCB0 byBAc2FtcHtvbn0sIFJlYWRsaW5lIHdpbGwgdHJ5IHRvIGVuYWJsZSBhbnkgbWV0YSBtb2RpZmll cgotK2tleSB0aGUgdGVybWluYWwgY2xhaW1zIHRvIHN1cHBvcnQgd2hlbiBpdCBpcyBjYWxsZWQu ICBPbiBtYW55IHRlcm1pbmFscywKLSt0aGUgbWV0YSBrZXkgaXMgdXNlZCB0byBzZW5kIGVpZ2h0 LWJpdCBjaGFyYWN0ZXJzLgotK1RoZSBkZWZhdWx0IGlzIEBzYW1we29ufS4KLSsKLSBAaXRlbSBl eHBhbmQtdGlsZGUKLSBAdmluZGV4IGV4cGFuZC10aWxkZQotIElmIHNldCB0byBAc2FtcHtvbn0s IHRpbGRlIGV4cGFuc2lvbiBpcyBwZXJmb3JtZWQgd2hlbiBSZWFkbGluZQotQEAgLTQ2OSwxMCAr NTE0LDE2IEBAIGF0dGVtcHRzIHdvcmQgY29tcGxldGlvbi4gIFRoZSBkZWZhdWx0IGkKLSAKLSBA aXRlbSBoaXN0b3J5LXByZXNlcnZlLXBvaW50Ci0gQHZpbmRleCBoaXN0b3J5LXByZXNlcnZlLXBv aW50Ci0tSWYgc2V0IHRvIEBzYW1we29ufSwgdGhlIGhpc3RvcnkgY29kZSBhdHRlbXB0cyB0byBw bGFjZSBwb2ludCBhdCB0aGUKLStJZiBzZXQgdG8gQHNhbXB7b259LCB0aGUgaGlzdG9yeSBjb2Rl IGF0dGVtcHRzIHRvIHBsYWNlIHRoZSBwb2ludCAodGhlCi0rY3VycmVudCBjdXJzb3IgcG9zaXRp b24pIGF0IHRoZQotIHNhbWUgbG9jYXRpb24gb24gZWFjaCBoaXN0b3J5IGxpbmUgcmV0cmlldmVk IHdpdGggQGNvZGV7cHJldmlvdXMtaGlzdG9yeX0KLSBvciBAY29kZXtuZXh0LWhpc3Rvcnl9LiAg VGhlIGRlZmF1bHQgaXMgQHNhbXB7b2ZmfS4KLSAKLStAaXRlbSBoaXN0b3J5LXNpemUKLStAdmlu ZGV4IGhpc3Rvcnktc2l6ZQotK1NldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgaGlzdG9yeSBlbnRy aWVzIHNhdmVkIGluIHRoZSBoaXN0b3J5IGxpc3QuICBJZgotK3NldCB0byB6ZXJvLCB0aGUgbnVt YmVyIG9mIGVudHJpZXMgaW4gdGhlIGhpc3RvcnkgbGlzdCBpcyBub3QgbGltaXRlZC4KLSsKLSBA aXRlbSBob3Jpem9udGFsLXNjcm9sbC1tb2RlCi0gQHZpbmRleCBob3Jpem9udGFsLXNjcm9sbC1t b2RlCi0gVGhpcyB2YXJpYWJsZSBjYW4gYmUgc2V0IHRvIGVpdGhlciBAc2FtcHtvbn0gb3IgQHNh bXB7b2ZmfS4gIFNldHRpbmcgaXQKLUBAIC01MzUsMTAgKzU4NiwxNyBAQCBUaGUgZGVmYXVsdCBp cyBAc2FtcHtvZmZ9LgotIEB2aW5kZXggbWF0Y2gtaGlkZGVuLWZpbGVzCi0gVGhpcyB2YXJpYWJs ZSwgd2hlbiBzZXQgdG8gQHNhbXB7b259LCBjYXVzZXMgUmVhZGxpbmUgdG8gbWF0Y2ggZmlsZXMg d2hvc2UKLSBuYW1lcyBiZWdpbiB3aXRoIGEgQHNhbXB7Ln0gKGhpZGRlbiBmaWxlcykgd2hlbiBw ZXJmb3JtaW5nIGZpbGVuYW1lCi0tY29tcGxldGlvbiwgdW5sZXNzIHRoZSBsZWFkaW5nIEBzYW1w ey59IGlzCi0rY29tcGxldGlvbi4KLStJZiBzZXQgdG8gQHNhbXB7b2ZmfSwgdGhlIGxlYWRpbmcg QHNhbXB7Ln0gbXVzdCBiZQotIHN1cHBsaWVkIGJ5IHRoZSB1c2VyIGluIHRoZSBmaWxlbmFtZSB0 byBiZSBjb21wbGV0ZWQuCi0gVGhpcyB2YXJpYWJsZSBpcyBAc2FtcHtvbn0gYnkgZGVmYXVsdC4K LSAKLStAaXRlbSBtZW51LWNvbXBsZXRlLWRpc3BsYXktcHJlZml4Ci0rQHZpbmRleCBtZW51LWNv bXBsZXRlLWRpc3BsYXktcHJlZml4Ci0rSWYgc2V0IHRvIEBzYW1we29ufSwgbWVudSBjb21wbGV0 aW9uIGRpc3BsYXlzIHRoZSBjb21tb24gcHJlZml4IG9mIHRoZQotK2xpc3Qgb2YgcG9zc2libGUg Y29tcGxldGlvbnMgKHdoaWNoIG1heSBiZSBlbXB0eSkgYmVmb3JlIGN5Y2xpbmcgdGhyb3VnaAot K3RoZSBsaXN0LiAgVGhlIGRlZmF1bHQgaXMgQHNhbXB7b2ZmfS4KLSsKLSBAaXRlbSBvdXRwdXQt bWV0YQotIEB2aW5kZXggb3V0cHV0LW1ldGEKLSBJZiBzZXQgdG8gQHNhbXB7b259LCBSZWFkbGlu ZSB3aWxsIGRpc3BsYXkgY2hhcmFjdGVycyB3aXRoIHRoZQotQEAgLTU1Niw2ICs2MTQsMTMgQEAg SWYgc2V0IHRvIEBzYW1we29ufSwgUmVhZGxpbmUgd2lsbCBkaXNwbAotIHNvcnRlZCBob3Jpem9u dGFsbHkgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLCByYXRoZXIgdGhhbiBkb3duIHRoZSBzY3JlZW4u Ci0gVGhlIGRlZmF1bHQgaXMgQHNhbXB7b2ZmfS4KLSAKLStAaXRlbSByZXZlcnQtYWxsLWF0LW5l d2xpbmUKLStAdmluZGV4IHJldmVydC1hbGwtYXQtbmV3bGluZQotK0lmIHNldCB0byBAc2FtcHtv bn0sIFJlYWRsaW5lIHdpbGwgdW5kbyBhbGwgY2hhbmdlcyB0byBoaXN0b3J5IGxpbmVzCi0rYmVm b3JlIHJldHVybmluZyB3aGVuIEBjb2Rle2FjY2VwdC1saW5lfSBpcyBleGVjdXRlZC4gIEJ5IGRl ZmF1bHQsCi0raGlzdG9yeSBsaW5lcyBtYXkgYmUgbW9kaWZpZWQgYW5kIHJldGFpbiBpbmRpdmlk dWFsIHVuZG8gbGlzdHMgYWNyb3NzCi0rY2FsbHMgdG8gQGNvZGV7cmVhZGxpbmV9LiAgVGhlIGRl ZmF1bHQgaXMgQHNhbXB7b2ZmfS4KLSsKLSBAaXRlbSBzaG93LWFsbC1pZi1hbWJpZ3VvdXMKLSBA dmluZGV4IHNob3ctYWxsLWlmLWFtYmlndW91cwotIFRoaXMgYWx0ZXJzIHRoZSBkZWZhdWx0IGJl aGF2aW9yIG9mIHRoZSBjb21wbGV0aW9uIGZ1bmN0aW9ucy4gIElmCi1AQCAtNTc1LDYgKzY0MCwy MCBAQCBhIGNvbW1vbiBwcmVmaXgpIGNhdXNlIHRoZSBtYXRjaGVzIHRvIGJlCi0gb2YgcmluZ2lu ZyB0aGUgYmVsbC4KLSBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBAc2FtcHtvZmZ9LgotIAotK0BpdGVt IHNraXAtY29tcGxldGVkLXRleHQKLStAdmluZGV4IHNraXAtY29tcGxldGVkLXRleHQKLStJZiBz ZXQgdG8gQHNhbXB7b259LCB0aGlzIGFsdGVycyB0aGUgZGVmYXVsdCBjb21wbGV0aW9uIGJlaGF2 aW9yIHdoZW4KLStpbnNlcnRpbmcgYSBzaW5nbGUgbWF0Y2ggaW50byB0aGUgbGluZS4gIEl0J3Mg b25seSBhY3RpdmUgd2hlbgotK3BlcmZvcm1pbmcgY29tcGxldGlvbiBpbiB0aGUgbWlkZGxlIG9m IGEgd29yZC4gIElmIGVuYWJsZWQsIHJlYWRsaW5lCi0rZG9lcyBub3QgaW5zZXJ0IGNoYXJhY3Rl cnMgZnJvbSB0aGUgY29tcGxldGlvbiB0aGF0IG1hdGNoIGNoYXJhY3RlcnMKLSthZnRlciBwb2lu dCBpbiB0aGUgd29yZCBiZWluZyBjb21wbGV0ZWQsIHNvIHBvcnRpb25zIG9mIHRoZSB3b3JkCi0r Zm9sbG93aW5nIHRoZSBjdXJzb3IgYXJlIG5vdCBkdXBsaWNhdGVkLgotK0ZvciBpbnN0YW5jZSwg aWYgdGhpcyBpcyBlbmFibGVkLCBhdHRlbXB0aW5nIGNvbXBsZXRpb24gd2hlbiB0aGUgY3Vyc29y Ci0raXMgYWZ0ZXIgdGhlIEBzYW1we2V9IGluIEBzYW1we01ha2VmaWxlfSB3aWxsIHJlc3VsdCBp biBAc2FtcHtNYWtlZmlsZX0KLStyYXRoZXIgdGhhbiBAc2FtcHtNYWtlZmlsZWZpbGV9LCBhc3N1 bWluZyB0aGVyZSBpcyBhIHNpbmdsZSBwb3NzaWJsZQotK2NvbXBsZXRpb24uCi0rVGhlIGRlZmF1 bHQgdmFsdWUgaXMgQHNhbXB7b2ZmfS4KLSsKLSBAaXRlbSB2aXNpYmxlLXN0YXRzCi0gQHZpbmRl eCB2aXNpYmxlLXN0YXRzCi0gSWYgc2V0IHRvIEBzYW1we29ufSwgYSBjaGFyYWN0ZXIgZGVub3Rp bmcgYSBmaWxlJ3MgdHlwZQotQEAgLTU5Myw5ICs2NzIsMTEgQEAgdGhlIGNvbW1hbmQgZG9lcy4K LSBPbmNlIHlvdSBrbm93IHRoZSBuYW1lIG9mIHRoZSBjb21tYW5kLCBzaW1wbHkgcGxhY2Ugb24g YSBsaW5lCi0gaW4gdGhlIGluaXQgZmlsZSB0aGUgbmFtZSBvZiB0aGUga2V5Ci0geW91IHdpc2gg dG8gYmluZCB0aGUgY29tbWFuZCB0bywgYSBjb2xvbiwgYW5kIHRoZW4gdGhlIG5hbWUgb2YgdGhl Ci0tY29tbWFuZC4gIFRoZSBuYW1lIG9mIHRoZSBrZXkKLS1jYW4gYmUgZXhwcmVzc2VkIGluIGRp ZmZlcmVudCB3YXlzLCBkZXBlbmRpbmcgb24gd2hhdCB5b3UgZmluZCBtb3N0Ci0tY29tZm9ydGFi bGUuCi0rY29tbWFuZC4KLStUaGVyZSBjYW4gYmUgbm8gc3BhY2UgYmV0d2VlbiB0aGUga2V5IG5h bWUgYW5kIHRoZSBjb2xvbiAtLSB0aGF0IHdpbGwgYmUKLStpbnRlcnByZXRlZCBhcyBwYXJ0IG9m IHRoZSBrZXkgbmFtZS4KLStUaGUgbmFtZSBvZiB0aGUga2V5IGNhbiBiZSBleHByZXNzZWQgaW4g ZGlmZmVyZW50IHdheXMsIGRlcGVuZGluZyBvbgotK3doYXQgeW91IGZpbmQgbW9zdCBjb21mb3J0 YWJsZS4KLSAKLSBJbiBhZGRpdGlvbiB0byBjb21tYW5kIG5hbWVzLCByZWFkbGluZSBhbGxvd3Mg a2V5cyB0byBiZSBib3VuZAotIHRvIGEgc3RyaW5nIHRoYXQgaXMgaW5zZXJ0ZWQgd2hlbiB0aGUg a2V5IGlzIHByZXNzZWQgKGEgQHZhcnttYWNyb30pLgotQEAgLTkzNywxMiArMTAxOCwyMiBAQCBN b3ZlIGZvcndhcmQgYSBjaGFyYWN0ZXIuCi0gTW92ZSBiYWNrIGEgY2hhcmFjdGVyLgotIAotIEBp dGVtIGZvcndhcmQtd29yZCAoTS1mKQotLU1vdmUgZm9yd2FyZCB0byB0aGUgZW5kIG9mIHRoZSBu ZXh0IHdvcmQuICBXb3JkcyBhcmUgY29tcG9zZWQgb2YKLS1sZXR0ZXJzIGFuZCBkaWdpdHMuCi0r TW92ZSBmb3J3YXJkIHRvIHRoZSBlbmQgb2YgdGhlIG5leHQgd29yZC4KLStXb3JkcyBhcmUgY29t cG9zZWQgb2YgbGV0dGVycyBhbmQgZGlnaXRzLgotIAotIEBpdGVtIGJhY2t3YXJkLXdvcmQgKE0t YikKLS1Nb3ZlIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IG9yIHByZXZpb3VzIHdv cmQuICBXb3JkcyBhcmUKLS1jb21wb3NlZCBvZiBsZXR0ZXJzIGFuZCBkaWdpdHMuCi0rTW92ZSBi YWNrIHRvIHRoZSBzdGFydCBvZiB0aGUgY3VycmVudCBvciBwcmV2aW91cyB3b3JkLgotK1dvcmRz IGFyZSBjb21wb3NlZCBvZiBsZXR0ZXJzIGFuZCBkaWdpdHMuCi0rCi0rQGlmc2V0IEJhc2hGZWF0 dXJlcwotK0BpdGVtIHNoZWxsLWZvcndhcmQtd29yZCAoKQotK01vdmUgZm9yd2FyZCB0byB0aGUg ZW5kIG9mIHRoZSBuZXh0IHdvcmQuCi0rV29yZHMgYXJlIGRlbGltaXRlZCBieSBub24tcXVvdGVk IHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgotKwotK0BpdGVtIHNoZWxsLWJhY2t3YXJkLXdvcmQgKCkK LStNb3ZlIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IG9yIHByZXZpb3VzIHdvcmQu Ci0rV29yZHMgYXJlIGRlbGltaXRlZCBieSBub24tcXVvdGVkIHNoZWxsIG1ldGFjaGFyYWN0ZXJz LgotK0BlbmQgaWZzZXQKLSAKLSBAaXRlbSBjbGVhci1zY3JlZW4gKEMtbCkKLSBDbGVhciB0aGUg c2NyZWVuIGFuZCByZWRyYXcgdGhlIGN1cnJlbnQgbGluZSwKLUBAIC0xMDI5LDEwICsxMTIwLDE0 IEBAIGFzIGlmIHRoZSBAc2FtcHshQHZhcntufX0gaGlzdG9yeSBleHBhbnMKLSAKLSBAaXRlbSB5 YW5rLWxhc3QtYXJnIChNLS4gb3IgTS1fKQotIEluc2VydCBsYXN0IGFyZ3VtZW50IHRvIHRoZSBw cmV2aW91cyBjb21tYW5kICh0aGUgbGFzdCB3b3JkIG9mIHRoZQotLXByZXZpb3VzIGhpc3Rvcnkg ZW50cnkpLiAgV2l0aCBhbgotLWFyZ3VtZW50LCBiZWhhdmUgZXhhY3RseSBsaWtlIEBjb2Rle3lh bmstbnRoLWFyZ30uCi0rcHJldmlvdXMgaGlzdG9yeSBlbnRyeSkuCi0rV2l0aCBhIG51bWVyaWMg YXJndW1lbnQsIGJlaGF2ZSBleGFjdGx5IGxpa2UgQGNvZGV7eWFuay1udGgtYXJnfS4KLSBTdWNj ZXNzaXZlIGNhbGxzIHRvIEBjb2Rle3lhbmstbGFzdC1hcmd9IG1vdmUgYmFjayB0aHJvdWdoIHRo ZSBoaXN0b3J5Ci0tbGlzdCwgaW5zZXJ0aW5nIHRoZSBsYXN0IGFyZ3VtZW50IG9mIGVhY2ggbGlu ZSBpbiB0dXJuLgotK2xpc3QsIGluc2VydGluZyB0aGUgbGFzdCB3b3JkIChvciB0aGUgd29yZCBz cGVjaWZpZWQgYnkgdGhlIGFyZ3VtZW50IHRvCi0rdGhlIGZpcnN0IGNhbGwpIG9mIGVhY2ggbGlu ZSBpbiB0dXJuLgotK0FueSBudW1lcmljIGFyZ3VtZW50IHN1cHBsaWVkIHRvIHRoZXNlIHN1Y2Nl c3NpdmUgY2FsbHMgZGV0ZXJtaW5lcwotK3RoZSBkaXJlY3Rpb24gdG8gbW92ZSB0aHJvdWdoIHRo ZSBoaXN0b3J5LiAgQSBuZWdhdGl2ZSBhcmd1bWVudCBzd2l0Y2hlcwotK3RoZSBkaXJlY3Rpb24g dGhyb3VnaCB0aGUgaGlzdG9yeSAoYmFjayBvciBmb3J3YXJkKS4KLSBUaGUgaGlzdG9yeSBleHBh bnNpb24gZmFjaWxpdGllcyBhcmUgdXNlZCB0byBleHRyYWN0IHRoZSBsYXN0IGFyZ3VtZW50LAot IGFzIGlmIHRoZSBAc2FtcHshJH0gaGlzdG9yeSBleHBhbnNpb24gaGFkIGJlZW4gc3BlY2lmaWVk LgotIAotQEAgLTExMzgsNiArMTIzMywxNyBAQCBXb3JkIGJvdW5kYXJpZXMgYXJlIHRoZSBzYW1l IGFzIEBjb2Rle2ZvCi0gS2lsbCB0aGUgd29yZCBiZWhpbmQgcG9pbnQuCi0gV29yZCBib3VuZGFy aWVzIGFyZSB0aGUgc2FtZSBhcyBAY29kZXtiYWNrd2FyZC13b3JkfS4KLSAKLStAaWZzZXQgQmFz aEZlYXR1cmVzCi0rQGl0ZW0gc2hlbGwta2lsbC13b3JkICgpCi0rS2lsbCBmcm9tIHBvaW50IHRv IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgd29yZCwgb3IgaWYgYmV0d2VlbgotK3dvcmRzLCB0byB0 aGUgZW5kIG9mIHRoZSBuZXh0IHdvcmQuCi0rV29yZCBib3VuZGFyaWVzIGFyZSB0aGUgc2FtZSBh cyBAY29kZXtzaGVsbC1mb3J3YXJkLXdvcmR9LgotKwotK0BpdGVtIHNoZWxsLWJhY2t3YXJkLWtp bGwtd29yZCAoKQotK0tpbGwgdGhlIHdvcmQgYmVoaW5kIHBvaW50LgotK1dvcmQgYm91bmRhcmll cyBhcmUgdGhlIHNhbWUgYXMgQGNvZGV7c2hlbGwtYmFja3dhcmQtd29yZH0uCi0rQGVuZCBpZnNl dAotKwotIEBpdGVtIHVuaXgtd29yZC1ydWJvdXQgKEMtdykKLSBLaWxsIHRoZSB3b3JkIGJlaGlu ZCBwb2ludCwgdXNpbmcgd2hpdGUgc3BhY2UgYXMgYSB3b3JkIGJvdW5kYXJ5LgotIFRoZSBraWxs ZWQgdGV4dCBpcyBzYXZlZCBvbiB0aGUga2lsbC1yaW5nLgotQEAgLTEyMTksNiArMTMyNSw5IEBA IFRoZSBkZWZhdWx0IGlzIGZpbGVuYW1lIGNvbXBsZXRpb24uCi0gCi0gQGl0ZW0gcG9zc2libGUt Y29tcGxldGlvbnMgKE0tPykKLSBMaXN0IHRoZSBwb3NzaWJsZSBjb21wbGV0aW9ucyBvZiB0aGUg dGV4dCBiZWZvcmUgcG9pbnQuCi0rV2hlbiBkaXNwbGF5aW5nIGNvbXBsZXRpb25zLCBSZWFkbGlu ZSBzZXRzIHRoZSBudW1iZXIgb2YgY29sdW1ucyB1c2VkCi0rZm9yIGRpc3BsYXkgdG8gdGhlIHZh bHVlIG9mIEBjb2Rle2NvbXBsZXRpb24tZGlzcGxheS13aWR0aH0sIHRoZSB2YWx1ZSBvZgotK3Ro ZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBAZW52e0NPTFVNTlN9LCBvciB0aGUgc2NyZWVuIHdpZHRo LCBpbiB0aGF0IG9yZGVyLgotIAotIEBpdGVtIGluc2VydC1jb21wbGV0aW9ucyAoTS0qKQotIElu c2VydCBhbGwgY29tcGxldGlvbnMgb2YgdGhlIHRleHQgYmVmb3JlIHBvaW50IHRoYXQgd291bGQg aGF2ZQotQEAgLTEyMzgsNiArMTM0NywxMSBAQCB0aHJvdWdoIHRoZSBsaXN0LgotIFRoaXMgY29t bWFuZCBpcyBpbnRlbmRlZCB0byBiZSBib3VuZCB0byBAa2V5e1RBQn0sIGJ1dCBpcyB1bmJvdW5k Ci0gYnkgZGVmYXVsdC4KLSAKLStAaXRlbSBtZW51LWNvbXBsZXRlLWJhY2t3YXJkICgpCi0rSWRl bnRpY2FsIHRvIEBjb2Rle21lbnUtY29tcGxldGV9LCBidXQgbW92ZXMgYmFja3dhcmQgdGhyb3Vn aCB0aGUgbGlzdAotK29mIHBvc3NpYmxlIGNvbXBsZXRpb25zLCBhcyBpZiBAY29kZXttZW51LWNv bXBsZXRlfSBoYWQgYmVlbiBnaXZlbiBhCi0rbmVnYXRpdmUgYXJndW1lbnQuCi0rCi0gQGl0ZW0g ZGVsZXRlLWNoYXItb3ItbGlzdCAoKQotIERlbGV0ZXMgdGhlIGNoYXJhY3RlciB1bmRlciB0aGUg Y3Vyc29yIGlmIG5vdCBhdCB0aGUgYmVnaW5uaW5nIG9yCi0gZW5kIG9mIHRoZSBsaW5lIChsaWtl IEBjb2Rle2RlbGV0ZS1jaGFyfSkuCi1AQCAtMTI5Myw2ICsxNDA3LDExIEBAIEF0dGVtcHQgY29t cGxldGlvbiBvbiB0aGUgdGV4dCBiZWZvcmUgcG8KLSB0aGUgdGV4dCBhZ2FpbnN0IGxpbmVzIGZy b20gdGhlIGhpc3RvcnkgbGlzdCBmb3IgcG9zc2libGUKLSBjb21wbGV0aW9uIG1hdGNoZXMuCi0g Ci0rQGl0ZW0gZGFiYnJldi1leHBhbmQgKCkKLStBdHRlbXB0IG1lbnUgY29tcGxldGlvbiBvbiB0 aGUgdGV4dCBiZWZvcmUgcG9pbnQsIGNvbXBhcmluZwotK3RoZSB0ZXh0IGFnYWluc3QgbGluZXMg ZnJvbSB0aGUgaGlzdG9yeSBsaXN0IGZvciBwb3NzaWJsZQotK2NvbXBsZXRpb24gbWF0Y2hlcy4K LSsKLSBAaXRlbSBjb21wbGV0ZS1pbnRvLWJyYWNlcyAoTS1AeykKLSBQZXJmb3JtIGZpbGVuYW1l IGNvbXBsZXRpb24gYW5kIGluc2VydCB0aGUgbGlzdCBvZiBwb3NzaWJsZSBjb21wbGV0aW9ucwot IGVuY2xvc2VkIHdpdGhpbiBicmFjZXMgc28gdGhlIGxpc3QgaXMgYXZhaWxhYmxlIHRvIHRoZSBz aGVsbAotQEAgLTEzNzIsNiArMTQ5MSwxNSBAQCBBIGNoYXJhY3RlciBpcyByZWFkIGFuZCBwb2lu dCBpcyBtb3ZlZCB0Ci0gb2YgdGhhdCBjaGFyYWN0ZXIuICBBIG5lZ2F0aXZlIGNvdW50IHNlYXJj aGVzIGZvciBzdWJzZXF1ZW50Ci0gb2NjdXJyZW5jZXMuCi0gCi0rQGl0ZW0gc2tpcC1jc2ktc2Vx dWVuY2UgKCkKLStSZWFkIGVub3VnaCBjaGFyYWN0ZXJzIHRvIGNvbnN1bWUgYSBtdWx0aS1rZXkg c2VxdWVuY2Ugc3VjaCBhcyB0aG9zZQotK2RlZmluZWQgZm9yIGtleXMgbGlrZSBIb21lIGFuZCBF bmQuICBTdWNoIHNlcXVlbmNlcyBiZWdpbiB3aXRoIGEKLStDb250cm9sIFNlcXVlbmNlIEluZGlj YXRvciAoQ1NJKSwgdXN1YWxseSBFU0MtWy4gIElmIHRoaXMgc2VxdWVuY2UgaXMKLStib3VuZCB0 byAiXGVbIiwga2V5cyBwcm9kdWNpbmcgc3VjaCBzZXF1ZW5jZXMgd2lsbCBoYXZlIG5vIGVmZmVj dAotK3VubGVzcyBleHBsaWNpdGx5IGJvdW5kIHRvIGEgcmVhZGxpbmUgY29tbWFuZCwgaW5zdGVh ZCBvZiBpbnNlcnRpbmcKLStzdHJheSBjaGFyYWN0ZXJzIGludG8gdGhlIGVkaXRpbmcgYnVmZmVy LiAgVGhpcyBpcyB1bmJvdW5kIGJ5IGRlZmF1bHQsCi0rYnV0IHVzdWFsbHkgYm91bmQgdG8gRVND LVsuCi0rCi0gQGl0ZW0gaW5zZXJ0LWNvbW1lbnQgKE0tIykKLSBXaXRob3V0IGEgbnVtZXJpYyBh cmd1bWVudCwgdGhlIHZhbHVlIG9mIHRoZSBAY29kZXtjb21tZW50LWJlZ2lufQotIHZhcmlhYmxl IGlzIGluc2VydGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGN1cnJlbnQgbGluZS4KLUBAIC0x NDgxLDcgKzE2MDksNyBAQCBlZGl0aW5nIG1vZGUuCi0gV2hpbGUgdGhlIFJlYWRsaW5lIGxpYnJh cnkgZG9lcyBub3QgaGF2ZSBhIGZ1bGwgc2V0IG9mIEBjb2Rle3ZpfQotIGVkaXRpbmcgZnVuY3Rp b25zLCBpdCBkb2VzIGNvbnRhaW4gZW5vdWdoIHRvIGFsbG93IHNpbXBsZSBlZGl0aW5nCi0gb2Yg dGhlIGxpbmUuICBUaGUgUmVhZGxpbmUgQGNvZGV7dml9IG1vZGUgYmVoYXZlcyBhcyBzcGVjaWZp ZWQgaW4KLS10aGUgQHNje3Bvc2l4fSAxMDAzLjIgc3RhbmRhcmQuCi0rdGhlIEBzY3twb3NpeH0g c3RhbmRhcmQuCi0gCi0gQGlmc2V0IEJhc2hGZWF0dXJlcwotIEluIG9yZGVyIHRvIHN3aXRjaCBp bnRlcmFjdGl2ZWx5IGJldHdlZW4gQGNvZGV7ZW1hY3N9IGFuZCBAY29kZXt2aX0KLUBAIC0xNTE1 LDEwICsxNjQzLDE1IEBAIHRoZSBwcm9ncmFtbWFibGUgY29tcGxldGlvbiBmYWNpbGl0aWVzIGEK LSBGaXJzdCwgdGhlIGNvbW1hbmQgbmFtZSBpcyBpZGVudGlmaWVkLgotIElmIGEgY29tcHNwZWMg aGFzIGJlZW4gZGVmaW5lZCBmb3IgdGhhdCBjb21tYW5kLCB0aGUKLSBjb21wc3BlYyBpcyB1c2Vk IHRvIGdlbmVyYXRlIHRoZSBsaXN0IG9mIHBvc3NpYmxlIGNvbXBsZXRpb25zIGZvciB0aGUgd29y ZC4KLStJZiB0aGUgY29tbWFuZCB3b3JkIGlzIHRoZSBlbXB0eSBzdHJpbmcgKGNvbXBsZXRpb24g YXR0ZW1wdGVkIGF0IHRoZQotK2JlZ2lubmluZyBvZiBhbiBlbXB0eSBsaW5lKSwgYW55IGNvbXBz cGVjIGRlZmluZWQgd2l0aAotK3RoZSBAb3B0aW9uey1FfSBvcHRpb24gdG8gQGNvZGV7Y29tcGxl dGV9IGlzIHVzZWQuCi0gSWYgdGhlIGNvbW1hbmQgd29yZCBpcyBhIGZ1bGwgcGF0aG5hbWUsIGEg Y29tcHNwZWMgZm9yIHRoZSBmdWxsCi0gcGF0aG5hbWUgaXMgc2VhcmNoZWQgZm9yIGZpcnN0Lgot IElmIG5vIGNvbXBzcGVjIGlzIGZvdW5kIGZvciB0aGUgZnVsbCBwYXRobmFtZSwgYW4gYXR0ZW1w dCBpcyBtYWRlIHRvCi0gZmluZCBhIGNvbXBzcGVjIGZvciB0aGUgcG9ydGlvbiBmb2xsb3dpbmcg dGhlIGZpbmFsIHNsYXNoLgotK0lmIHRob3NlIHNlYXJjaGVzIGRvIG5vdCByZXN1bHQgaW4gYSBj b21wc3BlYywgYW55IGNvbXBzcGVjIGRlZmluZWQgd2l0aAotK3RoZSBAb3B0aW9uey1EfSBvcHRp b24gdG8gQGNvZGV7Y29tcGxldGV9IGlzIHVzZWQgYXMgdGhlIGRlZmF1bHQuCi0gCi0gT25jZSBh IGNvbXBzcGVjIGhhcyBiZWVuIGZvdW5kLCBpdCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBsaXN0 IG9mCi0gbWF0Y2hpbmcgd29yZHMuCi1AQCAtMTU1NSw5ICsxNjg4LDkgQEAgY29tcGxldGVkLCBh bmQgdGhlIG1hdGNoaW5nIHdvcmRzIGJlY29tZQotIAotIEFmdGVyIHRoZXNlIG1hdGNoZXMgaGF2 ZSBiZWVuIGdlbmVyYXRlZCwgYW55IHNoZWxsIGZ1bmN0aW9uIG9yIGNvbW1hbmQKLSBzcGVjaWZp ZWQgd2l0aCB0aGUgQG9wdGlvbnstRn0gYW5kIEBvcHRpb257LUN9IG9wdGlvbnMgaXMgaW52b2tl ZC4KLS1XaGVuIHRoZSBjb21tYW5kIG9yIGZ1bmN0aW9uIGlzIGludm9rZWQsIHRoZSBAZW52e0NP TVBfTElORX0gYW5kCi0tQGVudntDT01QX1BPSU5UfSB2YXJpYWJsZXMgYXJlIGFzc2lnbmVkIHZh bHVlcyBhcyBkZXNjcmliZWQgYWJvdmUKLS0oQHB4cmVme0Jhc2ggVmFyaWFibGVzfSkuCi0rV2hl biB0aGUgY29tbWFuZCBvciBmdW5jdGlvbiBpcyBpbnZva2VkLCB0aGUgQGVudntDT01QX0xJTkV9 LAotK0BlbnZ7Q09NUF9QT0lOVH0sIEBlbnZ7Q09NUF9LRVl9LCBhbmQgQGVudntDT01QX1RZUEV9 IHZhcmlhYmxlcyBhcmUKLSthc3NpZ25lZCB2YWx1ZXMgYXMgZGVzY3JpYmVkIGFib3ZlIChAcHhy ZWZ7QmFzaCBWYXJpYWJsZXN9KS4KLSBJZiBhIHNoZWxsIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9r ZWQsIHRoZSBAZW52e0NPTVBfV09SRFN9IGFuZAotIEBlbnZ7Q09NUF9DV09SRH0gdmFyaWFibGVz IGFyZSBhbHNvIHNldC4KLSBXaGVuIHRoZSBmdW5jdGlvbiBvciBjb21tYW5kIGlzIGludm9rZWQs IHRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUKLUBAIC0xNTcwLDcgKzE3MDMsNyBAQCB0aGUgbWF0 Y2hlcy4KLSAKLSBBbnkgZnVuY3Rpb24gc3BlY2lmaWVkIHdpdGggQG9wdGlvbnstRn0gaXMgaW52 b2tlZCBmaXJzdC4KLSBUaGUgZnVuY3Rpb24gbWF5IHVzZSBhbnkgb2YgdGhlIHNoZWxsIGZhY2ls aXRpZXMsIGluY2x1ZGluZyB0aGUKLS1AY29kZXtjb21wZ2VufSBidWlsdGluIGRlc2NyaWJlZCBi ZWxvdwotK0Bjb2Rle2NvbXBnZW59IGFuZCBAY29kZXtjb21wb3B0fSBidWlsdGlucyBkZXNjcmli ZWQgYmVsb3cKLSAoQHB4cmVme1Byb2dyYW1tYWJsZSBDb21wbGV0aW9uIEJ1aWx0aW5zfSksIHRv IGdlbmVyYXRlIHRoZSBtYXRjaGVzLgotIEl0IG11c3QgcHV0IHRoZSBwb3NzaWJsZSBjb21wbGV0 aW9ucyBpbiB0aGUgQGVudntDT01QUkVQTFl9IGFycmF5Ci0gdmFyaWFibGUuCi1AQCAtMTYyMiw2 ICsxNzU1LDMwIEBAIHRvIGNvbXBsZXRlZCBuYW1lcyB3aGljaCBhcmUgc3ltYm9saWMgbGkKLSB0 aGUgdmFsdWUgb2YgdGhlIEB2YXJ7bWFyay1kaXJlY3Rvcmllc30gUmVhZGxpbmUgdmFyaWFibGUs IHJlZ2FyZGxlc3MKLSBvZiB0aGUgc2V0dGluZyBvZiB0aGUgQHZhcnttYXJrLXN5bWxpbmtlZC1k aXJlY3Rvcmllc30gUmVhZGxpbmUgdmFyaWFibGUuCi0gCi0rVGhlcmUgaXMgc29tZSBzdXBwb3J0 IGZvciBkeW5hbWljYWxseSBtb2RpZnlpbmcgY29tcGxldGlvbnMuICBUaGlzIGlzCi0rbW9zdCB1 c2VmdWwgd2hlbiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYSBkZWZhdWx0IGNvbXBsZXRpb24g c3BlY2lmaWVkCi0rd2l0aCBAb3B0aW9uey1EfS4gIEl0J3MgcG9zc2libGUgZm9yIHNoZWxsIGZ1 bmN0aW9ucyBleGVjdXRlZCBhcyBjb21wbGV0aW9uCi0raGFuZGxlcnMgdG8gaW5kaWNhdGUgdGhh dCBjb21wbGV0aW9uIHNob3VsZCBiZSByZXRyaWVkIGJ5IHJldHVybmluZyBhbgotK2V4aXQgc3Rh dHVzIG9mIDEyNC4gIElmIGEgc2hlbGwgZnVuY3Rpb24gcmV0dXJucyAxMjQsIGFuZCBjaGFuZ2Vz Ci0rdGhlIGNvbXBzcGVjIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tbWFuZCBvbiB3aGljaCBjb21w bGV0aW9uIGlzIGJlaW5nCi0rYXR0ZW1wdGVkIChzdXBwbGllZCBhcyB0aGUgZmlyc3QgYXJndW1l bnQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQpLAotK3Byb2dyYW1tYWJsZSBjb21wbGV0 aW9uIHJlc3RhcnRzIGZyb20gdGhlIGJlZ2lubmluZywgd2l0aCBhbgotK2F0dGVtcHQgdG8gZmlu ZCBhIG5ldyBjb21wc3BlYyBmb3IgdGhhdCBjb21tYW5kLiAgVGhpcyBhbGxvd3MgYSBzZXQgb2YK LStjb21wbGV0aW9ucyB0byBiZSBidWlsdCBkeW5hbWljYWxseSBhcyBjb21wbGV0aW9uIGlzIGF0 dGVtcHRlZCwgcmF0aGVyIHRoYW4KLStiZWluZyBsb2FkZWQgYWxsIGF0IG9uY2UuCi0rCi0rRm9y IGluc3RhbmNlLCBhc3N1bWluZyB0aGF0IHRoZXJlIGlzIGEgbGlicmFyeSBvZiBjb21wc3BlY3Ms IGVhY2gga2VwdCBpbiBhCi0rZmlsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIG9mIHRoZSBj b21tYW5kLCB0aGUgZm9sbG93aW5nIGRlZmF1bHQKLStjb21wbGV0aW9uIGZ1bmN0aW9uIHdvdWxk IGxvYWQgY29tcGxldGlvbnMgZHluYW1pY2FsbHk6Ci0rCi0rQGV4YW1wbGUKLStfY29tcGxldGlv bl9sb2FkZXIoKQotK0B7Ci0rCS4gIi9ldGMvYmFzaF9jb21wbGV0aW9uLmQvJDEuc2giID4vZGV2 L251bGwgMj4mMSAmJiByZXR1cm4gMTI0Ci0rQH0KLStjb21wbGV0ZSAtRCAtRiBfY29tcGxldGlv bl9sb2FkZXIKLStAZW5kIGV4YW1wbGUKLSsKLSBAbm9kZSBQcm9ncmFtbWFibGUgQ29tcGxldGlv biBCdWlsdGlucwotIEBzZWN0aW9uIFByb2dyYW1tYWJsZSBDb21wbGV0aW9uIEJ1aWx0aW5zCi0g QGNpbmRleCBjb21wbGV0aW9uIGJ1aWx0aW5zCi1AQCAtMTY1NywxMCArMTgxNCwxMCBAQCBtYXRj aGVzIHdlcmUgZ2VuZXJhdGVkLgotIEBpdGVtIGNvbXBsZXRlCi0gQGJ0aW5kZXggY29tcGxldGUK LSBAZXhhbXBsZQotLUBjb2Rle2NvbXBsZXRlIFstYWJjZGVmZ2prc3V2XSBbLW8gQHZhcntjb21w LW9wdGlvbn1dIFstQSBAdmFye2FjdGlvbn1dIFstRyBAdmFye2dsb2JwYXR9XSBbLVcgQHZhcnt3 b3JkbGlzdH1dCi0tWy1QIEB2YXJ7cHJlZml4fV0gWy1TIEB2YXJ7c3VmZml4fV0gWy1YIEB2YXJ7 ZmlsdGVycGF0fV0gWy1GIEB2YXJ7ZnVuY3Rpb259XQotLVstQyBAdmFye2NvbW1hbmR9XSBAdmFy e25hbWV9IFtAdmFye25hbWV9IEBkb3Rze31dfQotLUBjb2Rle2NvbXBsZXRlIC1wciBbQHZhcntu YW1lfSBAZG90c3t9XX0KLStAY29kZXtjb21wbGV0ZSBbLWFiY2RlZmdqa3N1dl0gWy1vIEB2YXJ7 Y29tcC1vcHRpb259XSBbLURFXSBbLUEgQHZhcnthY3Rpb259XSBbLUcgQHZhcntnbG9icGF0fV0g Wy1XIEB2YXJ7d29yZGxpc3R9XQotK1stRiBAdmFye2Z1bmN0aW9ufV0gWy1DIEB2YXJ7Y29tbWFu ZH1dIFstWCBAdmFye2ZpbHRlcnBhdH1dCi0rWy1QIEB2YXJ7cHJlZml4fV0gWy1TIEB2YXJ7c3Vm Zml4fV0gQHZhcntuYW1lfSBbQHZhcntuYW1lfSBAZG90c3t9XX0KLStAY29kZXtjb21wbGV0ZSAt cHIgWy1ERV0gW0B2YXJ7bmFtZX0gQGRvdHN7fV19Ci0gQGVuZCBleGFtcGxlCi0gCi0gU3BlY2lm eSBob3cgYXJndW1lbnRzIHRvIGVhY2ggQHZhcntuYW1lfSBzaG91bGQgYmUgY29tcGxldGVkLgot QEAgLTE2NzAsOSArMTgyNywxNiBAQCByZXVzZWQgYXMgaW5wdXQuCi0gVGhlIEBvcHRpb257LXJ9 IG9wdGlvbiByZW1vdmVzIGEgY29tcGxldGlvbiBzcGVjaWZpY2F0aW9uIGZvcgotIGVhY2ggQHZh cntuYW1lfSwgb3IsIGlmIG5vIEB2YXJ7bmFtZX1zIGFyZSBzdXBwbGllZCwgYWxsCi0gY29tcGxl dGlvbiBzcGVjaWZpY2F0aW9ucy4KLStUaGUgQG9wdGlvbnstRH0gb3B0aW9uIGluZGljYXRlcyB0 aGF0IHRoZSByZW1haW5pbmcgb3B0aW9ucyBhbmQgYWN0aW9ucyBzaG91bGQKLSthcHBseSB0byB0 aGUgYGBkZWZhdWx0JycgY29tbWFuZCBjb21wbGV0aW9uOyB0aGF0IGlzLCBjb21wbGV0aW9uIGF0 dGVtcHRlZAotK29uIGEgY29tbWFuZCBmb3Igd2hpY2ggbm8gY29tcGxldGlvbiBoYXMgcHJldmlv dXNseSBiZWVuIGRlZmluZWQuCi0rVGhlIEBvcHRpb257LUV9IG9wdGlvbiBpbmRpY2F0ZXMgdGhh dCB0aGUgcmVtYWluaW5nIG9wdGlvbnMgYW5kIGFjdGlvbnMgc2hvdWxkCi0rYXBwbHkgdG8gYGBl bXB0eScnIGNvbW1hbmQgY29tcGxldGlvbjsgdGhhdCBpcywgY29tcGxldGlvbiBhdHRlbXB0ZWQg b24gYSAKLStibGFuayBsaW5lLgotIAotIFRoZSBwcm9jZXNzIG9mIGFwcGx5aW5nIHRoZXNlIGNv bXBsZXRpb24gc3BlY2lmaWNhdGlvbnMgd2hlbiB3b3JkIGNvbXBsZXRpb24KLS1pcyBhdHRlbXB0 ZWQgaXMgZGVzY3JpYmVkIGFib3ZlIChAcHhyZWZ7UHJvZ3JhbW1hYmxlIENvbXBsZXRpb259KS4K LStpcyBhdHRlbXB0ZWQgaXMgZGVzY3JpYmVkIGFib3ZlIChAcHhyZWZ7UHJvZ3JhbW1hYmxlIENv bXBsZXRpb259KS4gIFRoZQotK0BvcHRpb257LUR9IG9wdGlvbiB0YWtlcyBwcmVjZWRlbmNlIG92 ZXIgQG9wdGlvbnstRX0uCi0gCi0gT3RoZXIgb3B0aW9ucywgaWYgc3BlY2lmaWVkLCBoYXZlIHRo ZSBmb2xsb3dpbmcgbWVhbmluZ3MuCi0gVGhlIGFyZ3VtZW50cyB0byB0aGUgQG9wdGlvbnstR30s IEBvcHRpb257LVd9LCBhbmQgQG9wdGlvbnstWH0gb3B0aW9ucwotQEAgLTE3MDIsOSArMTg2Niwx MCBAQCBQZXJmb3JtIGRpcmVjdG9yeSBuYW1lIGNvbXBsZXRpb24gaWYgdGhlCi0gCi0gQGl0ZW0g ZmlsZW5hbWVzCi0gVGVsbCBSZWFkbGluZSB0aGF0IHRoZSBjb21wc3BlYyBnZW5lcmF0ZXMgZmls ZW5hbWVzLCBzbyBpdCBjYW4gcGVyZm9ybSBhbnkKLS1maWxlbmFtZS1zcGVjaWZpYyBwcm9jZXNz aW5nIChsaWtlIGFkZGluZyBhIHNsYXNoIHRvIGRpcmVjdG9yeSBuYW1lcyBvcgotLXN1cHByZXNz aW5nIHRyYWlsaW5nIHNwYWNlcykuICBUaGlzIG9wdGlvbiBpcyBpbnRlbmRlZCB0byBiZSB1c2Vk IHdpdGgKLS1zaGVsbCBmdW5jdGlvbnMgc3BlY2lmaWVkIHdpdGggQG9wdGlvbnstRn0uCi0rZmls ZW5hbWUtc3BlY2lmaWMgcHJvY2Vzc2luZyAobGlrZSBhZGRpbmcgYSBzbGFzaCB0byBkaXJlY3Rv cnkgbmFtZXMKLStxdW90aW5nIHNwZWNpYWwgY2hhcmFjdGVycywgb3Igc3VwcHJlc3NpbmcgdHJh aWxpbmcgc3BhY2VzKS4KLStUaGlzIG9wdGlvbiBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHdpdGgg c2hlbGwgZnVuY3Rpb25zIHNwZWNpZmllZAotK3dpdGggQG9wdGlvbnstRn0uCi0gCi0gQGl0ZW0g bm9zcGFjZQotIFRlbGwgUmVhZGxpbmUgbm90IHRvIGFwcGVuZCBhIHNwYWNlICh0aGUgZGVmYXVs dCkgdG8gd29yZHMgY29tcGxldGVkIGF0Ci1AQCAtMTc5OCwxNyArMTk2Myw2IEBAIFVzZXIgbmFt ZXMuICBNYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgQG8KLSBOYW1lcyBvZiBhbGwgc2hlbGwgdmFy aWFibGVzLiAgTWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIEBvcHRpb257LXZ9LgotIEBlbmQgdGFi bGUKLSAKLS1AaXRlbSAtRyBAdmFye2dsb2JwYXR9Ci0tVGhlIGZpbGVuYW1lIGV4cGFuc2lvbiBw YXR0ZXJuIEB2YXJ7Z2xvYnBhdH0gaXMgZXhwYW5kZWQgdG8gZ2VuZXJhdGUKLS10aGUgcG9zc2li bGUgY29tcGxldGlvbnMuCi0tCi0tQGl0ZW0gLVcgQHZhcnt3b3JkbGlzdH0KLS1UaGUgQHZhcnt3 b3JkbGlzdH0gaXMgc3BsaXQgdXNpbmcgdGhlIGNoYXJhY3RlcnMgaW4gdGhlCi0tQGVudntJRlN9 IHNwZWNpYWwgdmFyaWFibGUgYXMgZGVsaW1pdGVycywgYW5kIGVhY2ggcmVzdWx0YW50IHdvcmQK LS1pcyBleHBhbmRlZC4KLS1UaGUgcG9zc2libGUgY29tcGxldGlvbnMgYXJlIHRoZSBtZW1iZXJz IG9mIHRoZSByZXN1bHRhbnQgbGlzdCB3aGljaAotLW1hdGNoIHRoZSB3b3JkIGJlaW5nIGNvbXBs ZXRlZC4KLS0KLSBAaXRlbSAtQyBAdmFye2NvbW1hbmR9Ci0gQHZhcntjb21tYW5kfSBpcyBleGVj dXRlZCBpbiBhIHN1YnNoZWxsIGVudmlyb25tZW50LCBhbmQgaXRzIG91dHB1dCBpcwotIHVzZWQg YXMgdGhlIHBvc3NpYmxlIGNvbXBsZXRpb25zLgotQEAgLTE4MTksMTMgKzE5NzMsOSBAQCBlbnZp cm9ubWVudC4KLSBXaGVuIGl0IGZpbmlzaGVzLCB0aGUgcG9zc2libGUgY29tcGxldGlvbnMgYXJl IHJldHJpZXZlZCBmcm9tIHRoZSB2YWx1ZQotIG9mIHRoZSBAZW52e0NPTVBSRVBMWX0gYXJyYXkg dmFyaWFibGUuCi0gCi0tQGl0ZW0gLVggQHZhcntmaWx0ZXJwYXR9Ci0tQHZhcntmaWx0ZXJwYXR9 IGlzIGEgcGF0dGVybiBhcyB1c2VkIGZvciBmaWxlbmFtZSBleHBhbnNpb24uCi0tSXQgaXMgYXBw bGllZCB0byB0aGUgbGlzdCBvZiBwb3NzaWJsZSBjb21wbGV0aW9ucyBnZW5lcmF0ZWQgYnkgdGhl Ci0tcHJlY2VkaW5nIG9wdGlvbnMgYW5kIGFyZ3VtZW50cywgYW5kIGVhY2ggY29tcGxldGlvbiBt YXRjaGluZwotLUB2YXJ7ZmlsdGVycGF0fSBpcyByZW1vdmVkIGZyb20gdGhlIGxpc3QuCi0tQSBs ZWFkaW5nIEBzYW1weyF9IGluIEB2YXJ7ZmlsdGVycGF0fSBuZWdhdGVzIHRoZSBwYXR0ZXJuOyBp biB0aGlzCi0tY2FzZSwgYW55IGNvbXBsZXRpb24gbm90IG1hdGNoaW5nIEB2YXJ7ZmlsdGVycGF0 fSBpcyByZW1vdmVkLgotK0BpdGVtIC1HIEB2YXJ7Z2xvYnBhdH0KLStUaGUgZmlsZW5hbWUgZXhw YW5zaW9uIHBhdHRlcm4gQHZhcntnbG9icGF0fSBpcyBleHBhbmRlZCB0byBnZW5lcmF0ZQotK3Ro ZSBwb3NzaWJsZSBjb21wbGV0aW9ucy4KLSAKLSBAaXRlbSAtUCBAdmFye3ByZWZpeH0KLSBAdmFy e3ByZWZpeH0gaXMgYWRkZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHBvc3NpYmxlIGNvbXBs ZXRpb24KLUBAIC0xODM0LDYgKzE5ODQsMjEgQEAgYWZ0ZXIgYWxsIG90aGVyIG9wdGlvbnMgaGF2 ZSBiZWVuIGFwcGxpZQotIEBpdGVtIC1TIEB2YXJ7c3VmZml4fQotIEB2YXJ7c3VmZml4fSBpcyBh cHBlbmRlZCB0byBlYWNoIHBvc3NpYmxlIGNvbXBsZXRpb24KLSBhZnRlciBhbGwgb3RoZXIgb3B0 aW9ucyBoYXZlIGJlZW4gYXBwbGllZC4KLSsKLStAaXRlbSAtVyBAdmFye3dvcmRsaXN0fQotK1Ro ZSBAdmFye3dvcmRsaXN0fSBpcyBzcGxpdCB1c2luZyB0aGUgY2hhcmFjdGVycyBpbiB0aGUKLStA ZW52e0lGU30gc3BlY2lhbCB2YXJpYWJsZSBhcyBkZWxpbWl0ZXJzLCBhbmQgZWFjaCByZXN1bHRh bnQgd29yZAotK2lzIGV4cGFuZGVkLgotK1RoZSBwb3NzaWJsZSBjb21wbGV0aW9ucyBhcmUgdGhl IG1lbWJlcnMgb2YgdGhlIHJlc3VsdGFudCBsaXN0IHdoaWNoCi0rbWF0Y2ggdGhlIHdvcmQgYmVp bmcgY29tcGxldGVkLgotKwotK0BpdGVtIC1YIEB2YXJ7ZmlsdGVycGF0fQotK0B2YXJ7ZmlsdGVy cGF0fSBpcyBhIHBhdHRlcm4gYXMgdXNlZCBmb3IgZmlsZW5hbWUgZXhwYW5zaW9uLgotK0l0IGlz IGFwcGxpZWQgdG8gdGhlIGxpc3Qgb2YgcG9zc2libGUgY29tcGxldGlvbnMgZ2VuZXJhdGVkIGJ5 IHRoZQotK3ByZWNlZGluZyBvcHRpb25zIGFuZCBhcmd1bWVudHMsIGFuZCBlYWNoIGNvbXBsZXRp b24gbWF0Y2hpbmcKLStAdmFye2ZpbHRlcnBhdH0gaXMgcmVtb3ZlZCBmcm9tIHRoZSBsaXN0Lgot K0EgbGVhZGluZyBAc2FtcHshfSBpbiBAdmFye2ZpbHRlcnBhdH0gbmVnYXRlcyB0aGUgcGF0dGVy bjsgaW4gdGhpcwotK2Nhc2UsIGFueSBjb21wbGV0aW9uIG5vdCBtYXRjaGluZyBAdmFye2ZpbHRl cnBhdH0gaXMgcmVtb3ZlZC4KLSBAZW5kIHRhYmxlCi0gCi0gVGhlIHJldHVybiB2YWx1ZSBpcyB0 cnVlIHVubGVzcyBhbiBpbnZhbGlkIG9wdGlvbiBpcyBzdXBwbGllZCwgYW4gb3B0aW9uCi1AQCAt MTg0Miw1ICsyMDA3LDMxIEBAIGFyZ3VtZW50LCBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gcmVtb3Zl IGEKLSBhIEB2YXJ7bmFtZX0gZm9yIHdoaWNoIG5vIHNwZWNpZmljYXRpb24gZXhpc3RzLCBvcgot IGFuIGVycm9yIG9jY3VycyBhZGRpbmcgYSBjb21wbGV0aW9uIHNwZWNpZmljYXRpb24uCi0gCi0r QGl0ZW0gY29tcG9wdAotK0BidGluZGV4IGNvbXBvcHQKLStAZXhhbXBsZQotK0Bjb2Rle2NvbXBv cHR9IFstbyBAdmFye29wdGlvbn1dIFstREVdIFsrbyBAdmFye29wdGlvbn1dIFtAdmFye25hbWV9 XQotK0BlbmQgZXhhbXBsZQotK01vZGlmeSBjb21wbGV0aW9uIG9wdGlvbnMgZm9yIGVhY2ggQHZh cntuYW1lfSBhY2NvcmRpbmcgdG8gdGhlCi0rQHZhcntvcHRpb259cywgb3IgZm9yIHRoZSBjdXJy ZW50bHktZXhlY3V0aW5nIGNvbXBsZXRpb24gaWYgbm8gQHZhcntuYW1lfXMKLSthcmUgc3VwcGxp ZWQuCi0rSWYgbm8gQHZhcntvcHRpb259cyBhcmUgZ2l2ZW4sIGRpc3BsYXkgdGhlIGNvbXBsZXRp b24gb3B0aW9ucyBmb3IgZWFjaAotK0B2YXJ7bmFtZX0gb3IgdGhlIGN1cnJlbnQgY29tcGxldGlv bi4KLStUaGUgcG9zc2libGUgdmFsdWVzIG9mIEB2YXJ7b3B0aW9ufSBhcmUgdGhvc2UgdmFsaWQg Zm9yIHRoZSBAY29kZXtjb21wbGV0ZX0KLStidWlsdGluIGRlc2NyaWJlZCBhYm92ZS4KLStUaGUg QG9wdGlvbnstRH0gb3B0aW9uIGluZGljYXRlcyB0aGF0IHRoZSByZW1haW5pbmcgb3B0aW9ucyBz aG91bGQKLSthcHBseSB0byB0aGUgYGBkZWZhdWx0JycgY29tbWFuZCBjb21wbGV0aW9uOyB0aGF0 IGlzLCBjb21wbGV0aW9uIGF0dGVtcHRlZAotK29uIGEgY29tbWFuZCBmb3Igd2hpY2ggbm8gY29t cGxldGlvbiBoYXMgcHJldmlvdXNseSBiZWVuIGRlZmluZWQuCi0rVGhlIEBvcHRpb257LUV9IG9w dGlvbiBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVtYWluaW5nIG9wdGlvbnMgc2hvdWxkCi0rYXBwbHkg dG8gYGBlbXB0eScnIGNvbW1hbmQgY29tcGxldGlvbjsgdGhhdCBpcywgY29tcGxldGlvbiBhdHRl bXB0ZWQgb24gYSAKLStibGFuayBsaW5lLgotKwotK1RoZSBAb3B0aW9uey1EfSBvcHRpb24gdGFr ZXMgcHJlY2VkZW5jZSBvdmVyIEBvcHRpb257LUV9LgotKwotK1RoZSByZXR1cm4gdmFsdWUgaXMg dHJ1ZSB1bmxlc3MgYW4gaW52YWxpZCBvcHRpb24gaXMgc3VwcGxpZWQsIGFuIGF0dGVtcHQKLStp cyBtYWRlIHRvIG1vZGlmeSB0aGUgb3B0aW9ucyBmb3IgYSBAdmFye25hbWV9IGZvciB3aGljaCBu byBjb21wbGV0aW9uCi0rc3BlY2lmaWNhdGlvbiBleGlzdHMsIG9yIGFuIG91dHB1dCBlcnJvciBv Y2N1cnMuCi0rCi0gQGVuZCB0YWJsZQotKwotIEBlbmQgaWZzZXQKLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL3JlYWRsaW5lL2RvYy9ybHVzZXJtYW4udGV4aQotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9kb2Mvcmx1c2VybWFuLnRleGkJMjAxMS0w Ny0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3Jl YWRsaW5lL2RvYy9ybHVzZXJtYW4udGV4aQkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCAr MDIwMAotQEAgLTQsOCArNCw2IEBACi0gQHNldHRpdGxlIEdOVSBSZWFkbGluZSBMaWJyYXJ5Ci0g QGNvbW1lbnQgJSoqZW5kIG9mIGhlYWRlciAoVGhpcyBpcyBmb3IgcnVubmluZyBUZXhpbmZvIG9u IGEgcmVnaW9uLikKLSAKLS1Ac2V0Y2hhcHRlcm5ld3BhZ2Ugb2RkCi0tCi0gQGluY2x1ZGUgdmVy c2lvbi50ZXhpCi0gCi0gQGNvcHlpbmcKLUBAIC0xNCw3ICsxMiw3IEBAIFRoaXMgbWFudWFsIGRl c2NyaWJlcyB0aGUgZW5kIHVzZXIgaW50ZXIKLSBjb25zaXN0ZW5jeSBvZiB1c2VyIGludGVyZmFj ZSBhY3Jvc3MgZGlzY3JldGUgcHJvZ3JhbXMgd2hpY2ggcHJvdmlkZQotIGEgY29tbWFuZCBsaW5l IGludGVyZmFjZS4KLSAKLS1Db3B5cmlnaHQgQGNvcHlyaWdodHt9IDE5ODgtMjAwNSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStDb3B5cmlnaHQgQGNvcHlyaWdodHt9IDE5ODgtLTIw MTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0gUGVybWlzc2lvbiBpcyBncmFu dGVkIHRvIG1ha2UgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mCi0gdGhpcyBtYW51 YWwgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2UKLUBAIC0yMiwxNSArMjAsMTYgQEAgYXJlIHByZXNlcnZlZCBvbiBhbGwgY29waWVzLgotIAot IEBxdW90YXRpb24KLSBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSwgZGlzdHJpYnV0ZSBh bmQvb3IgbW9kaWZ5IHRoaXMgZG9jdW1lbnQKLS11bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBG cmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjEgb3IKLSt1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjMgb3IK LSBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgd2l0aCBubwotLUludmFyaWFudCBTZWN0aW9ucywgd2l0aCB0aGUgRnJvbnQtQ292ZXIg dGV4dHMgYmVpbmcgYGBBIEdOVSBNYW51YWwsJycKLStJbnZhcmlhbnQgU2VjdGlvbnMsIHdpdGgg dGhlIEZyb250LUNvdmVyIHRleHRzIGJlaW5nIGBgQSBHTlUgTWFudWFsJycsCi0gYW5kIHdpdGgg dGhlIEJhY2stQ292ZXIgVGV4dHMgYXMgaW4gKGEpIGJlbG93LiAgQSBjb3B5IG9mIHRoZSBsaWNl bnNlIGlzCi0taW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRsZWQgYGBHTlUgRnJlZSBEb2N1 bWVudGF0aW9uIExpY2Vuc2UuJycKLStpbmNsdWRlZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxlZCBg YEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZScnLgotKwotKyhhKSBUaGUgRlNGJ3MgQmFj ay1Db3ZlciBUZXh0IGlzOiBZb3UgYXJlIGZyZWUgdG8gY29weSBhbmQgbW9kaWZ5Ci0rdGhpcyBH TlUgbWFudWFsLiAgQnV5aW5nIGNvcGllcyBmcm9tIEdOVSBQcmVzcyBzdXBwb3J0cyB0aGUgRlNG IGluCi0rZGV2ZWxvcGluZyBHTlUgYW5kIHByb21vdGluZyBzb2Z0d2FyZSBmcmVlZG9tLicnCi0g Ci0tKGEpIFRoZSBGU0YncyBCYWNrLUNvdmVyIFRleHQgaXM6IGBgWW91IGhhdmUgZnJlZWRvbSB0 byBjb3B5IGFuZCBtb2RpZnkKLS10aGlzIEdOVSBNYW51YWwsIGxpa2UgR05VIHNvZnR3YXJlLiAg Q29waWVzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQotLVNvZnR3YXJlIEZvdW5kYXRpb24gcmFpc2Ug ZnVuZHMgZm9yIEdOVSBkZXZlbG9wbWVudC4nJwotIEBlbmQgcXVvdGF0aW9uCi0gQGVuZCBjb3B5 aW5nCi0gCi1AQCAtNzAsMTggKzY5LDE0IEBAIHByb2dyYW1zIHdoaWNoIHByb3ZpZGUgYSBjb21t YW5kIGxpbmUgaW4KLSAKLSBAbWVudQotICogQ29tbWFuZCBMaW5lIEVkaXRpbmc6OgkgICBHTlUg UmVhZGxpbmUgVXNlcidzIE1hbnVhbC4KLS0qIENvcHlpbmcgVGhpcyBNYW51YWw6OgkJQ29weWlu ZyBUaGlzIE1hbnVhbC4KLSsqIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZTo6CUxpY2Vu c2UgZm9yIGNvcHlpbmcgdGhpcyBtYW51YWwuCi0gQGVuZCBtZW51Ci0gQGVuZCBpZm5vdHRleAot IAotIEBpbmNsdWRlIHJsdXNlci50ZXhpCi0gCi0tQG5vZGUgQ29weWluZyBUaGlzIE1hbnVhbAot LUBhcHBlbmRpeCBDb3B5aW5nIFRoaXMgTWFudWFsCi0tCi0tQG1lbnUKLS0qIEdOVSBGcmVlIERv Y3VtZW50YXRpb24gTGljZW5zZTo6CUxpY2Vuc2UgZm9yIGNvcHlpbmcgdGhpcyBtYW51YWwuCi0t QGVuZCBtZW51Ci0rQG5vZGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlCi0rQGFwcGVu ZGl4IEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZQotIAotIEBpbmNsdWRlIGZkbC50ZXhp Ci0gCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9kb2MvdGV4aTJkdmkKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvZG9jL3RleGky ZHZpCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4y MDExMDcwMy9yZWFkbGluZS9kb2MvdGV4aTJkdmkJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAw MDAgKzAyMDAKLUBAIC01LDIwICs1LDE4IEBACi0gIyBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMs IDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDEsCi0gIyAyMDAyLCAyMDAz IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSMgYW55IGxhdGVyIHZlcnNpb24uCi0rIyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rIyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gIwotLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsj ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rIyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAjCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgeW91IGNhbiBlaXRoZXIgc2VuZCBlbWFpbCB0byB0aGlz Ci0tIyBwcm9ncmFtJ3MgbWFpbnRhaW5lciBvciB3cml0ZSB0bzogVGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwKLS0jIEluYy47IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwOyBCb3N0b24s IE1BIDAyMTExLTEzMDcsIFVTQS4KLSsjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0g IwotICMgT3JpZ2luYWwgYXV0aG9yOiBOb2FoIEZyaWVkbWFuIDxmcmllZG1hbkBnbnUub3JnPi4K LSAjCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9kb2MvdGV4aTJodG1sCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2RvYy90ZXhp Mmh0bWwJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkw LjIwMTEwNzAzL3JlYWRsaW5lL2RvYy90ZXhpMmh0bWwJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAw MDAwMDAgKzAyMDAKLUBAIC03LDIwICs3LDE5IEBACi0gIwotICMgICAgQ29weXJpZ2h0IChDKSAx OTk5LCAyMDAwICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAjCi0tIyAgICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQotLSMgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0jICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0tIyAgICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLSMKLS0jICAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSMgICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLS0jICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLS0jICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0tIwotLSMgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0jICAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tIyAgICBGb3VuZGF0aW9u LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMw NyAgVVNBCi0tIyAKLSsjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsjICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyMgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSsjCi0gIy0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAKLSAjIFRoaXMgcmVxdWlyZXMg cGVybCB2ZXJzaW9uIDUgb3IgaGlnaGVyCi1AQCAtMzU2NCw3ICszNTYzLDcgQEAgSU5QVVRfTElO RTogd2hpbGUgKCRfID0gJm5leHRfbGluZSkgewotIAkJJG5hbWUgPSAmbm9ybWFsaXNlX25vZGUo JG5hbWUpOwotIAkJJGxldmVsID0gJHNlYzJsZXZlbHskdGFnfTsKLSAJCSMgY2hlY2sgZm9yIGlu ZGV4Ci0tCQkkZmlyc3RfaW5kZXhfY2hhcHRlciA9ICRuYW1lCi0rCQkkZmlyc3RfaW5kZXhfY2hh cHRlciA9ICRub2RlCi0gCQkgIGlmICgkbGV2ZWwgPT0gMSAmJiAhJGZpcnN0X2luZGV4X2NoYXB0 ZXIgJiYgCi0gCQkgICAgICAkbmFtZSA9fiAvaW5kZXgvaSk7Ci0gCQlpZiAoJGluX3RvcCAmJiAv aGVhZGluZy8pewotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZG9jL3ZlcnNp b24udGV4aQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGlu ZS9kb2MvdmVyc2lvbi50ZXhpCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9kb2MvdmVyc2lvbi50ZXhpCTIwMTEtMDct MDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwxMCArMSwxMCBAQAotIEBpZ25vcmUK LS1Db3B5cmlnaHQgKEMpIDE5ODgtMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4g Ci0rQ29weXJpZ2h0IChDKSAxOTg4LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu IAotIEBlbmQgaWdub3JlCi0gCi0tQHNldCBFRElUSU9OIDUuMS1iZXRhMQotLUBzZXQgVkVSU0lP TiA1LjEtYmV0YTEKLS1Ac2V0IFVQREFURUQgMTEgTm92ZW1iZXIgMjAwNQotLUBzZXQgVVBEQVRF RC1NT05USCBOb3ZlbWJlciAyMDA1Ci0rQHNldCBFRElUSU9OIDYuMgotK0BzZXQgVkVSU0lPTiA2 LjIKLStAc2V0IFVQREFURUQgU2VwdGVtYmVyIDYgMjAxMAotK0BzZXQgVVBEQVRFRC1NT05USCBT ZXB0ZW1iZXIgMjAxMAotIAotLUBzZXQgTEFTVENIQU5HRSBGcmkgTm92IDExIDE5OjUwOjUxIEVT VCAyMDA1Ci0rQHNldCBMQVNUQ0hBTkdFIE1vbiBTZXAgIDYgMjI6MDc6MTAgRURUIDIwMTAKLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2VtYWNzX2tleW1hcC5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2VtYWNzX2tleW1hcC5j CTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDEx MDcwMy9yZWFkbGluZS9lbWFjc19rZXltYXAuYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAw MCArMDIwMAotQEAgLTEsMjQgKzEsMjMgQEAKLSAvKiBlbWFjc19rZXltYXAuYyAtLSB0aGUga2V5 bWFwIGZvciBlbWFjc19tb2RlIGluIHJlYWRsaW5lICgpLiAqLwotIAotLS8qIENvcHlyaWdodCAo QykgMTk4NywgMTk4OSwgMTk5MiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBD b3B5cmlnaHQgKEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAK LS0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGli cmFyeSBmb3IKLS0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1 dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUg UmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBs aW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4g ICAgICAKLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKLS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsg ICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBh bmQKLS0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElD RU5TRS4gIElmIHlvdSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2Us IFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBh bG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgotKyovCi0gCi0gI2lmICFkZWZpbmVkIChCVUZTSVopCi0gI2luY2x1ZGUgPHN0ZGlv Lmg+Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9DaGFuZ2VM b2cuZ2RiCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5l L2V4YW1wbGVzL0NoYW5nZUxvZy5nZGIJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL0NoYW5nZUxvZy5n ZGIJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDMgKzEsNyBAQAot KzIwMTEtMDQtMjUgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LSsKLSsJSW1wb3J0ZWQgcmVhZGxpbmUgNi4yLCBhbmQgdXBzdHJlYW0gcGF0Y2ggMDAxLgotKwot IDIwMDYtMDQtMjQgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+Ci0g Ci0gCUltcG9ydGVkIHJlYWRsaW5lIDUuMSwgYW5kIHVwc3RyZWFtIHBhdGNoZXMgMDAxLTAwNC4K LUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL0lucHV0cmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvZXhhbXBsZXMv SW5wdXRyYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIu OTAuMjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvSW5wdXRyYwkyMDExLTA3LTAzIDEwOjQxOjIx LjAwMDAwMDAwMCArMDIwMAotQEAgLTQsMjEgKzQsMjEgQEAKLSAjIG9uIHdoaWNoIHByb2dyYW0g aXMgcnVubmluZywgb3Igd2hhdCB0ZXJtaW5hbCBpcyBhY3RpdmUuCi0gIwotIAotLSMgQ29weXJp Z2h0IChDKSAxOTg5LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgIENv cHlyaWdodCAoQykgMTk4OS0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICMK LS0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0tIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSMgYW55IGxh dGVyIHZlcnNpb24uCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rIyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gIwotLSMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0tIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsj ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rIyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotICMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotLSMg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg MDIxMTEgVVNBLgotIAotICMgSW4gYWxsIHByb2dyYW1zLCBhbGwgdGVybWluYWxzLCBtYWtlIHN1 cmUgdGhpcyBpcyBib3VuZC4KLSAiXEMteFxDLXIiOiByZS1yZWFkLWluaXQtZmlsZQotSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvTWFrZWZpbGUuaW4KLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvZXhhbXBsZXMvTWFr ZWZpbGUuaW4JMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4y LjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL01ha2VmaWxlLmluCTIwMTEtMDctMDMgMTA6 NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwzMCArMSw0NiBAQAotICMKLSAjIFRoaXMgaXMg dGhlIE1ha2VmaWxlIGZvciB0aGUgcmVhZGxpbmUgZXhhbXBsZXMgc3ViZGlyZWN0b3J5LgotICMK LS0jIENvcHlyaWdodCAoQykgMTk5NCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsj IENvcHlyaWdodCAoQykgMTk5NCwyMDA4LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rIyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rIyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyMgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rCi0rIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgot IAotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tIyBhbnkg bGF0ZXIgdmVyc2lvbi4KLS0KLS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot LSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKLS0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBC b3N0b24sIE1BIDAyMTExIFVTQS4KLSBSTF9MSUJSQVJZX1ZFUlNJT04gPSBATElCVkVSU0lPTkAK LSAKLSBTSEVMTCA9IEBNQUtFX1NIRUxMQAotIFJNID0gcm0gLWYKLSAKLStwcmVmaXggPSBAcHJl Zml4QAotK2V4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotKwotK2RhdGFyb290ZGlyID0gQGRh dGFyb290ZGlyQAotKwotK2JpbmRpciA9IEBiaW5kaXJACi0gc3JjZGlyID0gQHNyY2RpckAKLS1W UEFUSCA9IC46QHNyY2RpckAKLStkYXRhZGlyID0gQGRhdGFkaXJACi0rVlBBVEggPSBAc3JjZGly QAotIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKLS1CVUlMRF9ESVIgPSAuCi0rI0JVSUxEX0RJ UiA9IC4KLStCVUlMRF9ESVIgPSBAQlVJTERfRElSQAotK2luc3RhbGxkaXIgPSAkKGRhdGFkaXIp L3JlYWRsaW5lCi0rCi0rSU5TVEFMTCA9IEBJTlNUQUxMQAotK0lOU1RBTExfUFJPR1JBTSA9IEBJ TlNUQUxMX1BST0dSQU1ACi0rSU5TVEFMTF9EQVRBID0gQElOU1RBTExfREFUQUAKLSsKLStFWEVF WFQgPSBARVhFRVhUQAotK09CSkVYVCA9IEBPQkpFWFRACi0gCi0gIyBTdXBwb3J0IGFuIGFsdGVy bmF0ZSBkZXN0aW5hdGlvbiByb290IGRpcmVjdG9yeSBmb3IgcGFja2FnZSBidWlsZGluZwotIERF U1RESVIgPQotQEAgLTUxLDMxICs2Nyw1NiBAQCBURVJNQ0FQX0xJQiA9IEBURVJNQ0FQX0xJQkAK LSAJJHtSTX0gJEAKLSAJJChDQykgJChDQ0ZMQUdTKSAtYyAkPAotIAotLUVYRUNVVEFCTEVTID0g ZmlsZW1hbiBybHRlc3QgcmwgcmxjYXQgcmx2ZXJzaW9uIGhpc3RleGFtcCAKLS1PQkpFQ1RTID0g ZmlsZW1hbi5vIHJsdGVzdC5vIHJsLm8gcmxjYXQubyBybHZlcnNpb24ubyBoaXN0ZXhhbXAubwot K1NPVVJDRVMgPSBleGNhbGxiYWNrLmMgZmlsZW1hbi5jIGhpc3RleGFtcC5jIG1hbmV4YW1wLmMg cmwtZmdldHMuYyBybC5jIFwKLSsJCXJsY2F0LmMgcmxldmVudC5jIHJscHR5dGVzdC5jIHJsdGVz dC5jIHJsdmVyc2lvbi5jCi0rCi0rRVhFQ1VUQUJMRVMgPSBmaWxlbWFuJChFWEVFWFQpIHJsdGVz dCQoRVhFRVhUKSBybCQoRVhFRVhUKSBybGNhdCQoRVhFRVhUKSBcCi0rCQlybGV2ZW50JChFWEVF WFQpIHJsdmVyc2lvbiQoRVhFRVhUKSBoaXN0ZXhhbXAkKEVYRUVYVCkKLStPQkpFQ1RTID0gZmls ZW1hbi5vIHJsdGVzdC5vIHJsLm8gcmxldmVudC5vIHJsY2F0Lm8gcmx2ZXJzaW9uLm8gaGlzdGV4 YW1wLm8KLSAKLSBhbGw6ICQoRVhFQ1VUQUJMRVMpCi0gZXZlcnl0aGluZzogYWxsCi0gCi0tcmw6 IHJsLm8gJChSRUFETElORV9MSUIpCi0rY2hlY2s6CXJsdmVyc2lvbiQoRVhFRVhUKQotKwlAZWNo byBSZWFkbGluZSB2ZXJzaW9uOiBgcmx2ZXJzaW9uJChFWEVFWFQpYAotKwotK2luc3RhbGxkaXJz OgotKwktJChTSEVMTCkgJCh0b3Bfc3JjZGlyKS9zdXBwb3J0L21rZGlycyAkKERFU1RESVIpJChp bnN0YWxsZGlyKQotKwotK2luc3RhbGw6CWluc3RhbGxkaXJzCi0rCUBmb3IgZiBpbiAkKFNPVVJD RVMpOyBkbyBcCi0rCQkkKFJNKSAkKERFU1RESVIpJChpbnN0YWxsZGlyKS8kJGYgOyBcCi0rCQkk KElOU1RBTExfREFUQSkgJChzcmNkaXIpLyQkZiAkKERFU1RESVIpJChpbnN0YWxsZGlyKSA7IFwK LSsJZG9uZQotKwotK3VuaW5zdGFsbDoKLSsJQGZvciBmIGluICQoU09VUkNFUyk7IGRvIFwKLSsJ CSQoUk0pICQoREVTVERJUikkKGluc3RhbGxkaXIpLyQkZiA7IFwKLSsJZG9uZQotKwktcm1kaXIg JChERVNURElSKSQoaW5zdGFsbGRpcikKLSsKLStybCQoRVhFRVhUKTogcmwubyAkKFJFQURMSU5F X0xJQikKLSAJJChQVVJJRlkpICQoQ0MpICQoTERGTEFHUykgLW8gJEAgcmwubyAkKFJFQURMSU5F X0xJQikgJChURVJNQ0FQX0xJQikKLSAKLS1ybGNhdDogcmxjYXQubyAkKFJFQURMSU5FX0xJQikK LStybGNhdCQoRVhFRVhUKTogcmxjYXQubyAkKFJFQURMSU5FX0xJQikKLSAJJChQVVJJRlkpICQo Q0MpICQoTERGTEFHUykgLW8gJEAgcmxjYXQubyAkKFJFQURMSU5FX0xJQikgJChURVJNQ0FQX0xJ QikKLSAKLS1maWxlbWFuOiBmaWxlbWFuLm8gJChSRUFETElORV9MSUIpCi0rcmxldmVudCQoRVhF RVhUKTogcmxldmVudC5vICQoUkVBRExJTkVfTElCKQotKwkkKFBVUklGWSkgJChDQykgJChMREZM QUdTKSAtbyAkQCBybGV2ZW50Lm8gJChSRUFETElORV9MSUIpICQoVEVSTUNBUF9MSUIpCi0rCi0r ZmlsZW1hbiQoRVhFRVhUKTogZmlsZW1hbi5vICQoUkVBRExJTkVfTElCKQotIAkkKFBVUklGWSkg JChDQykgJChMREZMQUdTKSAtbyAkQCBmaWxlbWFuLm8gJChSRUFETElORV9MSUIpICQoVEVSTUNB UF9MSUIpCi0gCi0tcmx0ZXN0OiBybHRlc3QubyAkKFJFQURMSU5FX0xJQikKLStybHRlc3QkKEVY RUVYVCk6IHJsdGVzdC5vICQoUkVBRExJTkVfTElCKQotIAkkKFBVUklGWSkgJChDQykgJChMREZM QUdTKSAtbyAkQCBybHRlc3QubyAkKFJFQURMSU5FX0xJQikgJChURVJNQ0FQX0xJQikKLSAKLS1y bHB0eXRlc3Q6IHJscHR5dGVzdC5vICQoUkVBRExJTkVfTElCKQotK3JscHR5dGVzdCQoRVhFRVhU KTogcmxwdHl0ZXN0Lm8gJChSRUFETElORV9MSUIpCi0gCSQoUFVSSUZZKSAkKENDKSAkKExERkxB R1MpIC1vICRAIHJscHR5dGVzdC5vICQoUkVBRExJTkVfTElCKSAkKFRFUk1DQVBfTElCKQotIAot LXJsdmVyc2lvbjogcmx2ZXJzaW9uLm8gJChSRUFETElORV9MSUIpCi0rcmx2ZXJzaW9uJChFWEVF WFQpOiBybHZlcnNpb24ubyAkKFJFQURMSU5FX0xJQikKLSAJJChDQykgJChMREZMQUdTKSAtbyAk QCBybHZlcnNpb24ubyAkKFJFQURMSU5FX0xJQikgJChURVJNQ0FQX0xJQikKLSAKLS1oaXN0ZXhh bXA6IGhpc3RleGFtcC5vICQoSElTVE9SWV9MSUIpCi0raGlzdGV4YW1wJChFWEVFWFQpOiBoaXN0 ZXhhbXAubyAkKEhJU1RPUllfTElCKQotIAkkKFBVUklGWSkgJChDQykgJChMREZMQUdTKSAtbyAk QCBoaXN0ZXhhbXAubyAtbGhpc3RvcnkgJChURVJNQ0FQX0xJQikKLSAKLSBjbGVhbiBtb3N0bHlj bGVhbjoKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL2F1dG9j b25mL0JBU0hfQ0hFQ0tfTElCX1RFUk1DQVAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAz L3JlYWRsaW5lL2V4YW1wbGVzL2F1dG9jb25mL0JBU0hfQ0hFQ0tfTElCX1RFUk1DQVAJMjAxMS0w Ny0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNDAgQEAKLStBQ19ERUZV TihbQkFTSF9DSEVDS19MSUJfVEVSTUNBUF0sCi0rWwotK2lmIHRlc3QgIlgkYmFzaF9jdl90ZXJt Y2FwX2xpYiIgPSAiWCI7IHRoZW4KLStfYmFzaF9uZWVkbXNnPXllcwotK2Vsc2UKLStBQ19NU0df Q0hFQ0tJTkcod2hpY2ggbGlicmFyeSBoYXMgdGhlIHRlcm1jYXAgZnVuY3Rpb25zKQotK19iYXNo X25lZWRtc2c9Ci0rZmkKLStBQ19DQUNIRV9WQUwoYmFzaF9jdl90ZXJtY2FwX2xpYiwKLStbQUNf Q0hFQ0tfRlVOQyh0Z2V0ZW50LCBiYXNoX2N2X3Rlcm1jYXBfbGliPWxpYmMsCi0rICBbQUNfQ0hF Q0tfTElCKHRlcm1jYXAsIHRnZXRlbnQsIGJhc2hfY3ZfdGVybWNhcF9saWI9bGlidGVybWNhcCwK LSsgICAgW0FDX0NIRUNLX0xJQih0aW5mbywgdGdldGVudCwgYmFzaF9jdl90ZXJtY2FwX2xpYj1s aWJ0aW5mbywKLSsgICAgICAgIFtBQ19DSEVDS19MSUIoY3Vyc2VzLCB0Z2V0ZW50LCBiYXNoX2N2 X3Rlcm1jYXBfbGliPWxpYmN1cnNlcywKLSsJICAgIFtBQ19DSEVDS19MSUIobmN1cnNlcywgdGdl dGVudCwgYmFzaF9jdl90ZXJtY2FwX2xpYj1saWJuY3Vyc2VzLAotKwkgICAgICAgIGJhc2hfY3Zf dGVybWNhcF9saWI9Z251dGVybWNhcCldKV0pXSldKV0pCi0raWYgdGVzdCAiWCRfYmFzaF9uZWVk bXNnIiA9ICJYeWVzIjsgdGhlbgotK0FDX01TR19DSEVDS0lORyh3aGljaCBsaWJyYXJ5IGhhcyB0 aGUgdGVybWNhcCBmdW5jdGlvbnMpCi0rZmkKLStBQ19NU0dfUkVTVUxUKHVzaW5nICRiYXNoX2N2 X3Rlcm1jYXBfbGliKQotK2lmIHRlc3QgJGJhc2hfY3ZfdGVybWNhcF9saWIgPSBnbnV0ZXJtY2Fw ICYmIHRlc3QgLXogIiRwcmVmZXJfY3Vyc2VzIjsgdGhlbgotK0xERkxBR1M9IiRMREZMQUdTIC1M Li9saWIvdGVybWNhcCIKLStURVJNQ0FQX0xJQj0iLi9saWIvdGVybWNhcC9saWJ0ZXJtY2FwLmEi Ci0rVEVSTUNBUF9ERVA9Ii4vbGliL3Rlcm1jYXAvbGlidGVybWNhcC5hIgotK2VsaWYgdGVzdCAk YmFzaF9jdl90ZXJtY2FwX2xpYiA9IGxpYnRlcm1jYXAgJiYgdGVzdCAteiAiJHByZWZlcl9jdXJz ZXMiOyB0aGVuCi0rVEVSTUNBUF9MSUI9LWx0ZXJtY2FwCi0rVEVSTUNBUF9ERVA9Ci0rZWxpZiB0 ZXN0ICRiYXNoX2N2X3Rlcm1jYXBfbGliID0gbGlidGluZm87IHRoZW4KLStURVJNQ0FQX0xJQj0t bHRpbmZvCi0rVEVSTUNBUF9ERVA9Ci0rZWxpZiB0ZXN0ICRiYXNoX2N2X3Rlcm1jYXBfbGliID0g bGlibmN1cnNlczsgdGhlbgotK1RFUk1DQVBfTElCPS1sbmN1cnNlcwotK1RFUk1DQVBfREVQPQot K2VsaWYgdGVzdCAkYmFzaF9jdl90ZXJtY2FwX2xpYiA9IGxpYmM7IHRoZW4KLStURVJNQ0FQX0xJ Qj0KLStURVJNQ0FQX0RFUD0KLStlbHNlCi0rVEVSTUNBUF9MSUI9LWxjdXJzZXMKLStURVJNQ0FQ X0RFUD0KLStmaQotK10pCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFt cGxlcy9hdXRvY29uZi9STF9MSUJfUkVBRExJTkVfVkVSU0lPTgotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9k ZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIu OTAuMjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvYXV0b2NvbmYvUkxfTElCX1JFQURMSU5FX1ZF UlNJT04JMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMTE4 IEBACi0rZG5sIG5lZWQ6IHByZWZpeCBleGVjX3ByZWZpeCBsaWJkaXIgaW5jbHVkZWRpciBDQyBU RVJNQ0FQX0xJQgotK2RubCByZXF1aXJlOgotK2RubAlBQ19QUk9HX0NDCi0rZG5sCUJBU0hfQ0hF Q0tfTElCX1RFUk1DQVAKLSsKLStBQ19ERUZVTihbUkxfTElCX1JFQURMSU5FX1ZFUlNJT05dLAot K1sKLStBQ19SRVFVSVJFKFtCQVNIX0NIRUNLX0xJQl9URVJNQ0FQXSkKLSsKLStBQ19NU0dfQ0hF Q0tJTkcoW3ZlcnNpb24gb2YgaW5zdGFsbGVkIHJlYWRsaW5lIGxpYnJhcnldKQotKwotKyMgV2hh dCBhIHBhaW4gaW4gdGhlIGFzcyB0aGlzIGlzLgotKwotKyMgc2F2ZSBjcHAgYW5kIGxkIG9wdGlv bnMKLStfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rX3NhdmVfTERGTEFHUz0iJExERkxBR1MiCi0r X3NhdmVfTElCUz0iJExJQlMiCi0rCi0rIyBEb24ndCBzZXQgYWNfY3ZfcmxfcHJlZml4IGlmIHRo ZSBjYWxsZXIgaGFzIGFscmVhZHkgYXNzaWduZWQgYSB2YWx1ZS4gIFRoaXMKLSsjIGFsbG93cyB0 aGUgY2FsbGVyIHRvIGRvIHNvbWV0aGluZyBsaWtlICRfcmxfcHJlZml4PSR3aXRodmFsIGlmIHRo ZSB1c2VyCi0rIyBzcGVjaWZpZXMgLS13aXRoLWluc3RhbGxlZC1yZWFkbGluZT1QUkVGSVggYXMg YW4gYXJndW1lbnQgdG8gY29uZmlndXJlCi0rCi0raWYgdGVzdCAteiAiJGFjX2N2X3JsX3ByZWZp eCI7IHRoZW4KLSt0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBhY19jdl9ybF9wcmVmaXg9JGFj X2RlZmF1bHRfcHJlZml4IHx8IGFjX2N2X3JsX3ByZWZpeD0ke3ByZWZpeH0KLStmaQotKwotK2V2 YWwgYWNfY3ZfcmxfaW5jbHVkZWRpcj0ke2FjX2N2X3JsX3ByZWZpeH0vaW5jbHVkZQotK2V2YWwg YWNfY3ZfcmxfbGliZGlyPSR7YWNfY3ZfcmxfcHJlZml4fS9saWIKLSsKLStMSUJTPSIkTElCUyAt bHJlYWRsaW5lICR7VEVSTUNBUF9MSUJ9IgotK0NGTEFHUz0iJENGTEFHUyAtSSR7YWNfY3Zfcmxf aW5jbHVkZWRpcn0iCi0rTERGTEFHUz0iJExERkxBR1MgLUwke2FjX2N2X3JsX2xpYmRpcn0iCi0r Ci0rQUNfQ0FDSEVfVkFMKGFjX2N2X3JsX3ZlcnNpb24sCi0rW0FDX1RSWV9SVU4oWwotKyNpbmNs dWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxyZWFkbGluZS9yZWFkbGluZS5oPgotKwotK2V4dGVy biBpbnQgcmxfZ251X3JlYWRsaW5lX3A7Ci0rCi0rbWFpbigpCi0rewotKwlGSUxFICpmcDsKLSsJ ZnAgPSBmb3BlbigiY29uZnRlc3Qucmx2IiwgInciKTsKLSsJaWYgKGZwID09IDApCi0rCQlleGl0 KDEpOwotKwlpZiAocmxfZ251X3JlYWRsaW5lX3AgIT0gMSkKLSsJCWZwcmludGYoZnAsICIwLjBc biIpOwotKwllbHNlCi0rCQlmcHJpbnRmKGZwLCAiJXNcbiIsIHJsX2xpYnJhcnlfdmVyc2lvbiA/ IHJsX2xpYnJhcnlfdmVyc2lvbiA6ICIwLjAiKTsKLSsJZmNsb3NlKGZwKTsKLSsJZXhpdCgwKTsK LSt9Ci0rXSwKLSthY19jdl9ybF92ZXJzaW9uPWBjYXQgY29uZnRlc3Qucmx2YCwKLSthY19jdl9y bF92ZXJzaW9uPScwLjAnLAotK2FjX2N2X3JsX3ZlcnNpb249JzQuMicpXSkKLSsKLStDRkxBR1M9 IiRfc2F2ZV9DRkxBR1MiCi0rTERGTEFHUz0iJF9zYXZlX0xERkxBR1MiCi0rTElCUz0iJF9zYXZl X0xJQlMiCi0rCi0rUkxfTUFKT1I9MAotK1JMX01JTk9SPTAKLSsKLSsjICgKLStjYXNlICIkYWNf Y3ZfcmxfdmVyc2lvbiIgaW4KLSsyKnwzKnw0Knw1Knw2Knw3Knw4Knw5KikKLSsJUkxfTUFKT1I9 YGVjaG8gJGFjX2N2X3JsX3ZlcnNpb24gfCBzZWQgJ3M6XC4uKiQ6OidgCi0rCVJMX01JTk9SPWBl Y2hvICRhY19jdl9ybF92ZXJzaW9uIHwgc2VkIC1lICdzOl4uKlwuOjonIC1lICdzOltbYS16QS1a XV0qJDo6J2AKLSsJOzsKLStlc2FjCi0rCi0rIyAoKCgKLStjYXNlICRSTF9NQUpPUiBpbgotK1tb MC05XVswLTldXSkJX1JMX01BSk9SPSRSTF9NQUpPUiA7OwotK1tbMC05XV0pCV9STF9NQUpPUj0w JFJMX01BSk9SIDs7Ci0rKikJCV9STF9NQUpPUj0wMCA7OwotK2VzYWMKLSsKLSsjICgoKAotK2Nh c2UgJFJMX01JTk9SIGluCi0rW1swLTldWzAtOV1dKQlfUkxfTUlOT1I9JFJMX01JTk9SIDs7Ci0r W1swLTldXSkJX1JMX01JTk9SPTAkUkxfTUlOT1IgOzsKLSsqKQkJX1JMX01JTk9SPTAwIDs7Ci0r ZXNhYwotKwotK1JMX1ZFUlNJT049IjB4JHtfUkxfTUFKT1J9JHtfUkxfTUlOT1J9IgotKwotKyMg UmVhZGxpbmUgdmVyc2lvbnMgZ3JlYXRlciB0aGFuIDQuMiBoYXZlIHRoZXNlIGRlZmluZXMgaW4g cmVhZGxpbmUuaAotKwotK2lmIHRlc3QgJGFjX2N2X3JsX3ZlcnNpb24gPSAnMC4wJyA7IHRoZW4K LSsJQUNfTVNHX1dBUk4oW0NvdWxkIG5vdCB0ZXN0IHZlcnNpb24gb2YgaW5zdGFsbGVkIHJlYWRs aW5lIGxpYnJhcnkuXSkKLStlbGlmIHRlc3QgJFJMX01BSk9SIC1ndCA0IHx8IHsgdGVzdCAkUkxf TUFKT1IgPSA0ICYmIHRlc3QgJFJMX01JTk9SIC1ndCAyIDsgfSA7IHRoZW4KLSsJIyBzZXQgdGhl c2UgZm9yIHVzZSBieSB0aGUgY2FsbGVyCi0rCVJMX1BSRUZJWD0kYWNfY3ZfcmxfcHJlZml4Ci0r CVJMX0xJQkRJUj0kYWNfY3ZfcmxfbGliZGlyCi0rCVJMX0lOQ0xVREVESVI9JGFjX2N2X3JsX2lu Y2x1ZGVkaXIKLSsJQUNfTVNHX1JFU1VMVCgkYWNfY3ZfcmxfdmVyc2lvbikKLStlbHNlCi0rCi0r QUNfREVGSU5FX1VOUVVPVEVEKFJMX1JFQURMSU5FX1ZFUlNJT04sICRSTF9WRVJTSU9OLCBbZW5j b2RlZCB2ZXJzaW9uIG9mIHRoZSBpbnN0YWxsZWQgcmVhZGxpbmUgbGlicmFyeV0pCi0rQUNfREVG SU5FX1VOUVVPVEVEKFJMX1ZFUlNJT05fTUFKT1IsICRSTF9NQUpPUiwgW21ham9yIHZlcnNpb24g b2YgaW5zdGFsbGVkIHJlYWRsaW5lIGxpYnJhcnldKQotK0FDX0RFRklORV9VTlFVT1RFRChSTF9W RVJTSU9OX01JTk9SLCAkUkxfTUlOT1IsIFttaW5vciB2ZXJzaW9uIG9mIGluc3RhbGxlZCByZWFk bGluZSBsaWJyYXJ5XSkKLSsKLStBQ19TVUJTVChSTF9WRVJTSU9OKQotK0FDX1NVQlNUKFJMX01B Sk9SKQotK0FDX1NVQlNUKFJMX01JTk9SKQotKwotKyMgc2V0IHRoZXNlIGZvciB1c2UgYnkgdGhl IGNhbGxlcgotK1JMX1BSRUZJWD0kYWNfY3ZfcmxfcHJlZml4Ci0rUkxfTElCRElSPSRhY19jdl9y bF9saWJkaXIKLStSTF9JTkNMVURFRElSPSRhY19jdl9ybF9pbmNsdWRlZGlyCi0rCi0rQUNfTVNH X1JFU1VMVCgkYWNfY3ZfcmxfdmVyc2lvbikKLSsKLStmaQotK10pCi1JbmRleDogZ2RiLTcuMi45 MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9hdXRvY29uZi93aV9MSUJfUkVBRExJTkUKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL2F1dG9jb25mL3dp X0xJQl9SRUFETElORQkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTAs MCArMSw3NiBAQAotK2RubCBCb3J1dCBSYXplbQotK2RubAotK2RubCBUaGlzIG1hY3JvIGNoZWNr cyBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSByZWFkbGluZSBsaWJyYXJ5LgotK2RubCBJdCB3b3Jr cyBhbHNvIGluIGNyb3NzLWNvbXBpbGF0aW9uIGVudmlyb25tZW50LgotK2RubAotK2RubCBUbyBn ZXQgaXQgaW50byB0aGUgYWNsb2NhbC5tNCBkbmwgZmlsZSwgZG8gdGhpczoKLStkbmwgICBhY2xv Y2FsIC1JIC4gLS12ZXJib3NlCi0rZG5sCi0rZG5sIFRoZSAtLXZlcmJvc2Ugd2lsbCBzaG93IGFs bCBvZiB0aGUgZmlsZXMgdGhhdCBhcmUgc2VhcmNoZWQKLStkbmwgZm9yIC5tNCBtYWNyb3MuCi0r Ci0rQUNfREVGVU4oW3dpX0xJQl9SRUFETElORV0sIFsKLSsgIGRubCBjaGVjayBmb3IgdGhlIHJl YWRsaW5lLmggaGVhZGVyIGZpbGUKLSsKLSsgIEFDX0NIRUNLX0hFQURFUihyZWFkbGluZS9yZWFk bGluZS5oKQotKwotKyAgaWYgdGVzdCAiJGFjX2N2X2hlYWRlcl9yZWFkbGluZV9yZWFkbGluZV9o IiA9IHllczsgdGhlbgotKyAgICBkbmwgY2hlY2sgdGhlIHJlYWRsaW5lIHZlcnNpb24KLSsKLSsg ICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNp bmNsdWRlIDxyZWFkbGluZS9yZWFkbGluZS5oPgotK3dpX0xJQl9SRUFETElORV9WRVJTSU9OIFJM X1ZFUlNJT05fTUFKT1IgUkxfVkVSU0lPTl9NSU5PUgotK0VPRgotKwotKyAgICB3aV9SRUFETElO RV9WRVJTSU9OPSQoJENQUCAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCB8IHNlZCAtbiAtZSAi cy9ed2lfTElCX1JFQURMSU5FX1ZFUlNJT04gICpcKFtbMC05XF1dW1swLTlcXV0qXCkgICpcKFtb MC05XF1dW1swLTlcXV0qXCkkL1wxLlwyL3AiKQotKyAgICBybSAtcmYgY29uZnRlc3QqCi0rCi0r ICAgIGlmIHRlc3QgLW4gIiR3aV9SRUFETElORV9WRVJTSU9OIjsgdGhlbgotKyAgICAgIHdpX01B Sk9SPSQoZXhwciAkd2lfUkVBRExJTkVfVkVSU0lPTiA6ICdcKFtbMC05XV1bWzAtOV1dKlwpXC4n KQotKyAgICAgIHdpX01JTk9SPSQoZXhwciAkd2lfUkVBRExJTkVfVkVSU0lPTiA6ICdbWzAtOV1d W1swLTldXSpcLlwoW1swLTldXVtbMC05XV0qJFwpJykKLSsgICAgICBpZiB0ZXN0ICR3aV9NSU5P UiAtbHQgMTA7IHRoZW4KLSsgICAgICAgIHdpX01JTk9SPSQoZXhwciAkd2lfTUlOT1IgXCogMTAp Ci0rICAgICAgZmkKLSsgICAgICB3aV9SRUFETElORV9WRVJTSU9OPSQoZXhwciAkd2lfTUFKT1Ig XCogMTAwICsgJHdpX01JTk9SKQotKyAgICBlbHNlCi0rICAgICAgd2lfUkVBRExJTkVfVkVSU0lP Tj0tMQotKyAgICBmaQotKwotKyAgICBkbmwgY2hlY2sgZm9yIHRoZSByZWFkbGluZSBsaWJyYXJ5 Ci0rCi0rICAgIGFjX3NhdmVfTElCUz0iJExJQlMiCi0rICAgICMgTm90ZTogJExJQkNVUlNFUyBp cyBwZXJtaXR0ZWQgdG8gYmUgZW1wdHkuCi0rCi0rICAgIGZvciBMSUJSRUFETElORSBpbiAiLWxy ZWFkbGluZS5kbGwiICItbHJlYWRsaW5lIiAiLWxyZWFkbGluZSAkTElCQ1VSU0VTIiAiLWxyZWFk bGluZSAtbHRlcm1jYXAiICItbHJlYWRsaW5lIC1sbmN1cnNlcyIgIi1scmVhZGxpbmUgLWxjdXJz ZXMiCi0rICAgIGRvCi0rICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgR05VIFJlYWRsaW5lIGxp YnJhcnkgJExJQlJFQURMSU5FXSkKLSsKLSsgICAgICBMSUJTPSIkYWNfc2F2ZV9MSUJTICRMSUJS RUFETElORSIKLSsKLSsgICAgICBBQ19UUllfTElOSyhbCi0rICAgICAgICAvKiBpbmNsdWRlcyAq LwotKyAgICAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rICAgICAgICAjaW5jbHVkZSA8cmVhZGxp bmUvcmVhZGxpbmUuaD4KLSsgICAgICBdLFsKLSsgICAgICAgIC8qIGZ1bmN0aW9uLWJvZHkgKi8K LSsgICAgICAgIGludCBkdW1teSA9IHJsX2NvbXBsZXRpb25fYXBwZW5kX2NoYXJhY3RlcjsgLyog cmxfY29tcGxldGlvbl9hcHBlbmRfY2hhcmFjdGVyIGFwcGVhcmVkIGluIHZlcnNpb24gMi4xICov Ci0rICAgICAgICByZWFkbGluZShOVUxMKTsKLSsgICAgICBdLFsKLSsgICAgICAgIHdpX2N2X2xp Yl9yZWFkbGluZT15ZXMKLSsgICAgICAgIEFDX01TR19SRVNVTFQoeWVzKQotKyAgICAgIF0sWwot KyAgICAgICAgd2lfY3ZfbGliX3JlYWRsaW5lPW5vCi0rICAgICAgICBBQ19NU0dfUkVTVUxUKG5v KQotKyAgICAgIF0pCi0rCi0rICAgICAgaWYgdGVzdCAiJHdpX2N2X2xpYl9yZWFkbGluZSIgPSB5 ZXM7IHRoZW4KLSsgICAgICAgIEFDX1NVQlNUKExJQlJFQURMSU5FKQotKyAgICAgICAgQUNfREVG SU5FX1VOUVVPVEVEKEhBVkVfTElCUkVBRExJTkUsICR3aV9SRUFETElORV9WRVJTSU9OLCBbUmVh ZGxpbmVdKQotKyAgICAgICAgYnJlYWsKLSsgICAgICBmaQotKyAgICBkb25lCi0rCi0rICAgIExJ QlM9IiRhY19zYXZlX0xJQlMiCi0rICBmaQotK10pCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9yZWFkbGluZS9leGFtcGxlcy9leGNhbGxiYWNrLmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvZXhhbXBsZXMvZXhjYWxsYmFjay5jCTIwMTEtMDct MDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFk bGluZS9leGFtcGxlcy9leGNhbGxiYWNrLmMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAg KzAyMDAKLUBAIC0zMiw2ICszMiw5IEBAIExldCBtZSBrbm93IHdoYXQgeW91IHRoaW5rLgotIAot IEplZmYKLSAqLwotKy8qCi0rQ29weXJpZ2h0IChDKSAxOTk5IEplZmYgU29sb21vbgotKyovCi0g Ci0gI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvZmlsZW1hbi5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2V4YW1wbGVzL2Zp bGVtYW4uYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIu OTAuMjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvZmlsZW1hbi5jCTIwMTEtMDctMDMgMTA6NDE6 MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyMiArMSwyMyBAQAotLS8qIENvcHlyaWdodCAoQykg MTk4Ny0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIGZpbGVtYW4uYyAt IGZpbGUgbWFuYWdlciBleGFtcGxlIGZvciByZWFkbGluZSBsaWJyYXJ5LiAqLwotIAotLSAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZv cgotKy8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFy eSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkgZm9yCi0gICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdp dGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KLSAKLS0gICBUaGUgR05V IFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQKLS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNv ZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAg UmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBp cyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkg a2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QK LS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0gLyog ZmlsZW1hbi5jIC0tIEEgdGlueSBhcHBsaWNhdGlvbiB3aGljaCBkZW1vbnN0cmF0ZXMgaG93IHRv IHVzZSB0aGUKLSAgICBHTlUgUmVhZGxpbmUgbGlicmFyeS4gIFRoaXMgYXBwbGljYXRpb24gaW50 ZXJhY3RpdmVseSBhbGxvd3MgdXNlcnMKLUBAIC01MCw2ICs1MSw4IEBACi0gIyAgaW5jbHVkZSA8 c3RkbGliLmg+Ci0gI2VuZGlmCi0gCi0rI2luY2x1ZGUgPHRpbWUuaD4KLSsKLSAjaWZkZWYgUkVB RExJTkVfTElCUkFSWQotICMgIGluY2x1ZGUgInJlYWRsaW5lLmgiCi0gIyAgaW5jbHVkZSAiaGlz dG9yeS5oIgotQEAgLTU4LDcgKzYxLDcgQEAKLSAjICBpbmNsdWRlIDxyZWFkbGluZS9oaXN0b3J5 Lmg+Ci0gI2VuZGlmCi0gCi0tZXh0ZXJuIGNoYXIgKnhtYWxsb2MgKCk7Ci0rZXh0ZXJuIGNoYXIg KnhtYWxsb2MgUEFSQU1TKChzaXplX3QpKTsKLSAKLSAvKiBUaGUgbmFtZXMgb2YgZnVuY3Rpb25z IHRoYXQgYWN0dWFsbHkgZG8gdGhlIG1hbmlwdWxhdGlvbi4gKi8KLSBpbnQgY29tX2xpc3QgUEFS QU1TKChjaGFyICopKTsKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1w bGVzL2hpc3RleGFtcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmln L3JlYWRsaW5lL2V4YW1wbGVzL2hpc3RleGFtcC5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9oaXN0 ZXhhbXAuYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjIgKzEs MjMgQEAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsvKiBoaXN0ZXhhbXAuYyAtIGhpc3RvcnkgbGlicmFyeSBleGFtcGxlIHByb2dy YW0uICovCi0gCi0tICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJy YXJ5LCBhIGxpYnJhcnkgZm9yCi0rLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeSBmb3IKLSAgICByZWFkaW5n IGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5n LgotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJl YWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQot LSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAot LSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNF LiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3Vp dGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25n IHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCi0rKi8KLSAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAKLUluZGV4OiBnZGItNy4yLjkwLjIw MTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL21hbmV4YW1wLmMKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvZXhhbXBsZXMvbWFuZXhhbXAuYwkyMDExLTA3 LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVh ZGxpbmUvZXhhbXBsZXMvbWFuZXhhbXAuYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCAr MDIwMAotQEAgLTEsMjQgKzEsMjMgQEAKLSAvKiBtYW5leGFtcC5jIC0tIFRoZSBleGFtcGxlcyB3 aGljaCBhcHBlYXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYXJlIGhlcmUuICovCi0gCi0tLyogQ29w eXJpZ2h0IChDKSAxOTg3LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyog Q29weXJpZ2h0IChDKSAxOTg3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0g Ci0tICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxp YnJhcnkgZm9yCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJy YXJ5IChSZWFkbGluZSksIGEgbGlicmFyeSBmb3IKLSAgICByZWFkaW5nIGxpbmVzIG9mIHRleHQg d2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotIAotLSAgIFRoZSBH TlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUg c29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsg ICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxs eSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5v dAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24s IE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUu ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSAKLSAj aW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8cmVhZGxpbmUvcmVhZGxpbmUuaD4KLUluZGV4 OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL3JlYWRsaW5lYnVmLmgKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvZXhhbXBsZXMv cmVhZGxpbmVidWYuaAkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvcmVhZGxpbmVidWYuaAkyMDExLTA3 LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTgsNyArOCw3IEBACi0gICoKLSAgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsgKiB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyICBvZiB0aGUgTGljZW5zZSwgb3IK LSAgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICAqCi0gICogVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9ybC5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2V4YW1wbGVzL3Js LmMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIw MTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL3JsLmMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAw MDAgKzAyMDAKLUBAIC01LDI1ICs1LDI0IEBACi0gICogdXNhZ2U6IHJsIFstcCBwcm9tcHRdIFst dSB1bml0XSBbLWQgZGVmYXVsdF0gWy1uIG5jaGFyc10KLSAgKi8KLSAKLS0vKiBDb3B5cmlnaHQg KEMpIDE5ODctMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmln aHQgKEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBm b3IKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJl YWRsaW5lKSwgYSBsaWJyYXJ5IGZvcgotICAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGlu dGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0gCi0tICAgVGhlIEdOVSBSZWFk bGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0Ci0t ICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0tICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCi0rICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2Fy ZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKLSAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot IAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUKLS0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5Ci0tICAgb2YgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIFJlYWRs aW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0gICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSAKLS0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0 ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0tICAgaXMgZ2VuZXJhbGx5IGtlcHQg aW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90Ci0tICAg aGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sCi0tICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIx MTEgVVNBLiAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAotICNpZiBkZWZp bmVkIChIQVZFX0NPTkZJR19IKQotICMgIGluY2x1ZGUgPGNvbmZpZy5oPgotSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvcmxjYXQuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9leGFtcGxlcy9ybGNhdC5jCTIwMTEt MDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9y ZWFkbGluZS9leGFtcGxlcy9ybGNhdC5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICsw MjAwCi1AQCAtNCwyNSArNCwyNCBAQAotICAqIHVzYWdlOiBybGNhdAotICAqLwotIAotLS8qIENv cHlyaWdodCAoQykgMTk4Ny0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8q IENvcHlyaWdodCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot IAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBs aWJyYXJ5IGZvcgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGli cmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkgZm9yCi0gICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0 IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KLSAKLS0gICBUaGUg R05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQKLS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r ICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFs bHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBu b3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9u LCBNQSAwMjExMSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5l LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0g I2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCi0gIyAgaW5jbHVkZSA8Y29uZmlnLmg+Ci1JbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9ybGV2ZW50LmMKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAK LSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL3JsZXZlbnQuYwkyMDEx LTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwxNjYgQEAKLSsvKgot KyAqIHJsIC0gY29tbWFuZC1saW5lIGludGVyZmFjZSB0byByZWFkIGEgbGluZSBmcm9tIHRoZSBz dGFuZGFyZCBpbnB1dAotKyAqICAgICAgKG9yIGFub3RoZXIgZmQpIHVzaW5nIHJlYWRsaW5lLgot KyAqCi0rICogdXNhZ2U6IHJsIFstcCBwcm9tcHRdIFstdSB1bml0XSBbLWQgZGVmYXVsdF0gWy1u IG5jaGFyc10KLSsgKi8KLSsKLSsvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05V IFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5IGZvcgotKyAgIHJlYWRpbmcg bGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcu Ci0rCi0rICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFJlYWRsaW5lIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSsKLSsjaWYgZGVmaW5lZCAoSEFW RV9DT05GSUdfSCkKLSsjICBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVk ZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rCi0rI2lmZGVmIEhBVkVfU1RE TElCX0gKLSsjICBpbmNsdWRlIDxzdGRsaWIuaD4KLSsjZWxzZSAKLStleHRlcm4gdm9pZCBleGl0 KCk7Ci0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQgKFJFQURMSU5FX0xJQlJBUlkpCi0rIyAgaW5j bHVkZSAicG9zaXhzdGF0LmgiCi0rIyAgaW5jbHVkZSAicmVhZGxpbmUuaCIKLSsjICBpbmNsdWRl ICJoaXN0b3J5LmgiCi0rI2Vsc2UKLSsjICBpbmNsdWRlIDxzeXMvc3RhdC5oPgotKyMgIGluY2x1 ZGUgPHJlYWRsaW5lL3JlYWRsaW5lLmg+Ci0rIyAgaW5jbHVkZSA8cmVhZGxpbmUvaGlzdG9yeS5o PgotKyNlbmRpZgotKwotK2V4dGVybiBpbnQgb3B0aW5kOwotK2V4dGVybiBjaGFyICpvcHRhcmc7 Ci0rCi0rI2lmICFkZWZpbmVkIChzdHJjaHIpICYmICFkZWZpbmVkIChfX1NURENfXykKLStleHRl cm4gY2hhciAqc3RycmNocigpOwotKyNlbmRpZgotKwotK3N0YXRpYyBjaGFyICpwcm9nbmFtZTsK LStzdGF0aWMgY2hhciAqZGVmdGV4dDsKLSsKLStzdGF0aWMgaW50Ci0rZXZlbnRfaG9vayAoKQot K3sKLSsgIGZwcmludGYgKHN0ZGVyciwgImRpbmchXG4iKTsKLSsgIHNsZWVwICgxKTsKLSsgIHJl dHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50Ci0rc2V0X2RlZnRleHQgKCkKLSt7Ci0rICBpZiAo ZGVmdGV4dCkKLSsgICAgewotKyAgICAgIHJsX2luc2VydF90ZXh0IChkZWZ0ZXh0KTsKLSsgICAg ICBkZWZ0ZXh0ID0gKGNoYXIgKilOVUxMOwotKyAgICAgIHJsX3N0YXJ0dXBfaG9vayA9IChybF9o b29rX2Z1bmNfdCAqKU5VTEw7Ci0rICAgIH0KLSsgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMg dm9pZAotK3VzYWdlKCkKLSt7Ci0rICBmcHJpbnRmIChzdGRlcnIsICIlczogdXNhZ2U6ICVzIFst cCBwcm9tcHRdIFstdSB1bml0XSBbLWQgZGVmYXVsdF0gWy1uIG5jaGFyc11cbiIsCi0rCQlwcm9n bmFtZSwgcHJvZ25hbWUpOwotK30KLSsKLStpbnQKLSttYWluIChhcmdjLCBhcmd2KQotKyAgICAg aW50IGFyZ2M7Ci0rICAgICBjaGFyICoqYXJndjsKLSt7Ci0rICBjaGFyICp0ZW1wLCAqcHJvbXB0 OwotKyAgc3RydWN0IHN0YXQgc2I7Ci0rICBpbnQgb3B0LCBmZCwgbmNoOwotKyAgRklMRSAqaWZw OwotKwotKyAgcHJvZ25hbWUgPSBzdHJyY2hyKGFyZ3ZbMF0sICcvJyk7Ci0rICBpZiAocHJvZ25h bWUgPT0gMCkKLSsgICAgcHJvZ25hbWUgPSBhcmd2WzBdOwotKyAgZWxzZQotKyAgICBwcm9nbmFt ZSsrOwotKwotKyAgLyogZGVmYXVsdHMgKi8KLSsgIHByb21wdCA9ICJyZWFkbGluZSQgIjsKLSsg IGZkID0gbmNoID0gMDsKLSsgIGRlZnRleHQgPSAoY2hhciAqKTA7Ci0rCi0rICB3aGlsZSAoKG9w dCA9IGdldG9wdChhcmdjLCBhcmd2LCAicDp1OmQ6bjoiKSkgIT0gRU9GKQotKyAgICB7Ci0rICAg ICAgc3dpdGNoIChvcHQpCi0rCXsKLSsJY2FzZSAncCc6Ci0rCSAgcHJvbXB0ID0gb3B0YXJnOwot KwkgIGJyZWFrOwotKwljYXNlICd1JzoKLSsJICBmZCA9IGF0b2kob3B0YXJnKTsKLSsJICBpZiAo ZmQgPCAwKQotKwkgICAgewotKwkgICAgICBmcHJpbnRmIChzdGRlcnIsICIlczogYmFkIGZpbGUg ZGVzY3JpcHRvciBgJXMnXG4iLCBwcm9nbmFtZSwgb3B0YXJnKTsKLSsJICAgICAgZXhpdCAoMik7 Ci0rCSAgICB9Ci0rCSAgYnJlYWs7Ci0rCWNhc2UgJ2QnOgotKwkgIGRlZnRleHQgPSBvcHRhcmc7 Ci0rCSAgYnJlYWs7Ci0rCWNhc2UgJ24nOgotKwkgIG5jaCA9IGF0b2kob3B0YXJnKTsKLSsJICBp ZiAobmNoIDwgMCkKLSsJICAgIHsKLSsJICAgICAgZnByaW50ZiAoc3RkZXJyLCAiJXM6IGJhZCB2 YWx1ZSBmb3IgLW46IGAlcydcbiIsIHByb2duYW1lLCBvcHRhcmcpOwotKwkgICAgICBleGl0ICgy KTsKLSsJICAgIH0KLSsJICBicmVhazsKLSsJZGVmYXVsdDoKLSsJICB1c2FnZSAoKTsKLSsJICBl eGl0ICgyKTsKLSsJfQotKyAgICB9Ci0rCi0rICBpZiAoZmQgIT0gMCkKLSsgICAgewotKyAgICAg IGlmIChmc3RhdCAoZmQsICZzYikgPCAwKQotKwl7Ci0rCSAgZnByaW50ZiAoc3RkZXJyLCAiJXM6 ICVkOiBiYWQgZmlsZSBkZXNjcmlwdG9yXG4iLCBwcm9nbmFtZSwgZmQpOwotKwkgIGV4aXQgKDEp OwotKwl9Ci0rICAgICAgaWZwID0gZmRvcGVuIChmZCwgInIiKTsKLSsgICAgICBybF9pbnN0cmVh bSA9IGlmcDsKLSsgICAgfQotKwotKyAgaWYgKGRlZnRleHQgJiYgKmRlZnRleHQpCi0rICAgIHJs X3N0YXJ0dXBfaG9vayA9IHNldF9kZWZ0ZXh0OwotKwotKyAgaWYgKG5jaCA+IDApCi0rICAgIHJs X251bV9jaGFyc190b19yZWFkID0gbmNoOwotKwotKyAgcmxfZXZlbnRfaG9vayA9IGV2ZW50X2hv b2s7Ci0rICB0ZW1wID0gcmVhZGxpbmUgKHByb21wdCk7Ci0rCi0rICAvKiBUZXN0IGZvciBFT0Yu ICovCi0rICBpZiAodGVtcCA9PSAwKQotKyAgICBleGl0ICgxKTsKLSsKLSsgIHByaW50ZiAoIiVz XG4iLCB0ZW1wKTsKLSsgIGV4aXQgKDApOwotK30KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAz L3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvQ2hhbmdlTG9nCTIwMTEt MDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9y ZWFkbGluZS9leGFtcGxlcy9ybGZlL0NoYW5nZUxvZwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAw MDAwMCArMDIwMAotQEAgLTEsMTQgKzEsMyBAQAotLTIwMDktMDgtMjIgIFJhbGYgV2lsZGVuaHVl cyAgPFJhbGYuV2lsZGVuaHVlc0BnbXguZGU+Ci0tCi0tCSogY29uZmlndXJlOiBSZWdlbmVyYXRl LgotLQotLQkqIGNvbmZpZ3VyZS5pbjogbTRfaW5jbHVkZSB0b3BsZXZlbCBjb25maWcvb3ZlcnJp ZGUubTQuCi0tCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgotLQotLTIwMDktMDctMzAgIFJhbGYg V2lsZGVuaHVlcyAgPFJhbGYuV2lsZGVuaHVlc0BnbXguZGU+Ci0tCi0tCSogY29uZmlndXJlLmlu OiBDb3JyZWN0bHkgcXVvdGUgQUNfUFJPR1JBTV9TT1VSQ0UgZGVmaW5pdGlvbi4KLS0KLSAyMDA0 LTExLTA0ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KLSAKLSAJKiBwdHkuYzogIElt cG9ydCBmcm9tIHNjcmVlbi00LjAuMi4KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRs aW5lL2V4YW1wbGVzL3JsZmUvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkw LjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9NYWtlZmlsZS5pbgkyMDExLTA3 LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVh ZGxpbmUvZXhhbXBsZXMvcmxmZS9NYWtlZmlsZS5pbgkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAw MDAwMCArMDIwMAotQEAgLTI1LDcgKzI1LDcgQEAgQ0ZMQUdTID0gQENGTEFHU0AKLSBDUFBGTEFH UyA9IEBDUFBGTEFHU0AKLSAjTERGTEFHUyA9IC1MJChSRUFETElORV9ESVIpCi0gTERGTEFHUyA9 IEBMREZMQUdTQAotLUxJQlMgPSAtbHJlYWRsaW5lIC1saGlzdG9yeSAtbG5jdXJzZXMKLStMSUJT ID0gLWxyZWFkbGluZSAtbGhpc3RvcnkgQExJQlNACi0gCi0gQ1BQPUBDUFBACi0gQ1BQX0RFUEVO RD0kKENDKSAtTU0KLUBAIC01NSw3ICs1NSw3IEBAIHJsZmUtJChWRVJTSU9OKS50YXIuZ3o6Ci0g CXRhciBjemYgJEAgJChDRklMRVMpICQoSEZJTEVTKSAkKEVYVFJBX0RJU1QpCi0gCi0gLmMubzoK LS0JJChDQykgLWMgLUkuIC1JJChzcmNkaXIpICQoTV9DRkxBR1MpICQoREVGUykgJChPUFRJT05T KSAkKENGTEFHUykgJDwKLSsJJChDQykgLWMgLUkuIC1JJChzcmNkaXIpICQoQ1BQRkxBR1MpICQo TV9DRkxBR1MpICQoREVGUykgJChPUFRJT05TKSAkKENGTEFHUykgJDwKLSAKLSBpbnN0YWxsX2Jp bjogLnZlcnNpb24gc2NyZWVuCi0gCS1pZiBbIC1mICQoREVTVERJUikkKGJpbmRpcikvJChTQ1JF RU4pIF0gJiYgWyAhIC1mICQoREVTVERJUikkKGJpbmRpcikvJChTQ1JFRU4pLm9sZCBdOyBcCi1A QCAtNjgsNyArNjgsNiBAQCBpbnN0YWxsX2JpbjogLnZlcnNpb24gc2NyZWVuCi0gCShjZCAkKERF U1RESVIpJChiaW5kaXIpICYmIGxuIC1zZiAkKFNDUkVFTikgc2NyZWVuKQotIAljcCAkKHNyY2Rp cikvdXRmOGVuY29kaW5ncy8/PyAkKERFU1RESVIpJChTQ1JFRU5FTkNPRElOR1MpCi0gCi0tCi0g dW5pbnN0YWxsOiAudmVyc2lvbgotIAlybSAtZiAkKERFU1RESVIpJChiaW5kaXIpLyQoU0NSRUVO KQotIAlybSAtZiAkKERFU1RESVIpJChiaW5kaXIpL3NjcmVlbgotQEAgLTE3MCw2ICsxNjksMTUg QEAgZGVwZW5kLmluOiAkKENGSUxFUykgdGVybS5oCi0gCWZvciBpIGluICQoQ0ZJTEVTKTsgZG8g ZWNobyAkJGk7ICQoQ1BQX0RFUEVORCkgJCRpID4+IHRtcF9tYWtlOyBkb25lIAotIAltdiB0bXBf bWFrZSBNYWtlZmlsZS5pbgotIAotK01ha2VmaWxlIG1ha2VmaWxlOgljb25maWcuc3RhdHVzICQo c3JjZGlyKS9NYWtlZmlsZS5pbgotKwlDT05GSUdfRklMRVM9TWFrZWZpbGUgQ09ORklHX0hFQURF UlM9ICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cwotKwotK2NvbmZpZy5zdGF0dXM6CSQoc3JjZGly KS9jb25maWd1cmUKLSsJJChTSEVMTCkgLi9jb25maWcuc3RhdHVzIC0tcmVjaGVjawotKwotKyQo c3JjZGlyKS9jb25maWd1cmU6CSQoc3JjZGlyKS9jb25maWd1cmUuaW4KLSsJY2QgJChzcmNkaXIp ICYmIGF1dG9jb25mCi0rCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIAotICMjIyBEZXBlbmRl bmNpZXM6Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9ybGZl L2NvbmZpZy5oLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3Jl YWRsaW5lL2V4YW1wbGVzL3JsZmUvY29uZmlnLmguaW4JMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL3Js ZmUvY29uZmlnLmguaW4JMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0z NzMsMyArMzczLDcgQEAKLSAjdW5kZWYgUFRZUkFOR0UxCi0gCi0gI2RlZmluZSBVU0VWQVJBUkdT Ci0rCi0rI3VuZGVmIEhBVkVfU1lTX1NUUk9QVFNfSAotKwotKyN1bmRlZiBIQVZFX1NZU19XQUlU X0gKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvY29u ZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5l L2V4YW1wbGVzL3JsZmUvY29uZmlndXJlCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9ybGZlL2NvbmZp Z3VyZQkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTU1Miw2ICs1NTIs NDIgQEAgUEFDS0FHRV9CVUdSRVBPUlQ9Ci0gUEFDS0FHRV9VUkw9Ci0gCi0gYWNfdW5pcXVlX2Zp bGU9InJsZmUuYyIKLSsjIEZhY3RvcmluZyBkZWZhdWx0IGhlYWRlcnMgZm9yIG1vc3QgdGVzdHMu Ci0rYWNfaW5jbHVkZXNfZGVmYXVsdD0iXAotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpZmRlZiBI QVZFX1NZU19UWVBFU19ICi0rIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjZW5kaWYKLSsjaWZk ZWYgSEFWRV9TWVNfU1RBVF9ICi0rIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgotKyNlbmRpZgotKyNp ZmRlZiBTVERDX0hFQURFUlMKLSsjIGluY2x1ZGUgPHN0ZGxpYi5oPgotKyMgaW5jbHVkZSA8c3Rk ZGVmLmg+Ci0rI2Vsc2UKLSsjIGlmZGVmIEhBVkVfU1RETElCX0gKLSsjICBpbmNsdWRlIDxzdGRs aWIuaD4KLSsjIGVuZGlmCi0rI2VuZGlmCi0rI2lmZGVmIEhBVkVfU1RSSU5HX0gKLSsjIGlmICFk ZWZpbmVkIFNURENfSEVBREVSUyAmJiBkZWZpbmVkIEhBVkVfTUVNT1JZX0gKLSsjICBpbmNsdWRl IDxtZW1vcnkuaD4KLSsjIGVuZGlmCi0rIyBpbmNsdWRlIDxzdHJpbmcuaD4KLSsjZW5kaWYKLSsj aWZkZWYgSEFWRV9TVFJJTkdTX0gKLSsjIGluY2x1ZGUgPHN0cmluZ3MuaD4KLSsjZW5kaWYKLSsj aWZkZWYgSEFWRV9JTlRUWVBFU19ICi0rIyBpbmNsdWRlIDxpbnR0eXBlcy5oPgotKyNlbmRpZgot KyNpZmRlZiBIQVZFX1NURElOVF9ICi0rIyBpbmNsdWRlIDxzdGRpbnQuaD4KLSsjZW5kaWYKLSsj aWZkZWYgSEFWRV9VTklTVERfSAotKyMgaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2VuZGlmIgotKwot IGFjX3N1YnN0X3ZhcnM9J0xUTElCT0JKUwotIExJQk9CSlMKLSBYVEVSTVBBVEgKLUBAIC0xNTUw LDYgKzE1ODYsMTI0IEBAICRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KLSAgIGV2YWwgJGFzX2xp bmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07 IHVuc2V0IGFzX2xpbmVubzt9Ci0gCi0gfSAjIGFjX2ZuX2NfY2hlY2tfZnVuYwotKwotKyMgYWNf Zm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCBMSU5FTk8gSEVBREVSIFZBUiBJTkNMVURFUwotKyMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot KyMgVGVzdHMgd2hldGhlciBIRUFERVIgZXhpc3RzLCBnaXZpbmcgYSB3YXJuaW5nIGlmIGl0IGNh bm5vdCBiZSBjb21waWxlZCB1c2luZwotKyMgdGhlIGluY2x1ZGUgZmlsZXMgaW4gSU5DTFVERVMg YW5kIHNldHRpbmcgdGhlIGNhY2hlIHZhcmlhYmxlIFZBUgotKyMgYWNjb3JkaW5nbHkuCi0rYWNf Zm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAoKQotK3sKLSsgIGFzX2xpbmVubz0ke2FzX2xpbmVu by0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sK LSsgIGlmIHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQi OyB9OyB0aGVuIDoKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Y2hlY2tpbmcgZm9yICQyIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+ JjY7IH0KLStpZiB7IGFzX3Zhcj0kMzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwiID0g c2V0IjsgfTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2ZpCi0rZXZh bCBhY19yZXM9XCQkMwotKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQotKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0K LStlbHNlCi0rICAjIElzIHRoZSBoZWFkZXIgY29tcGlsYWJsZT8KLSt7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nICQyIHVzYWJpbGl0eSIgPiY1Ci0rJGFz X2VjaG9fbiAiY2hlY2tpbmcgJDIgdXNhYmlsaXR5Li4uICIgPiY2OyB9Ci0rY2F0IGNvbmZkZWZz LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8K LSskNAotKyNpbmNsdWRlIDwkMj4KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIk TElORU5PIjsgdGhlbiA6Ci0rICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCi0rZWxzZQotKyAgYWNf aGVhZGVyX2NvbXBpbGVyPW5vCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVz dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2hlYWRlcl9jb21waWxlciIgPiY1Ci0rJGFzX2Vj aG8gIiRhY19oZWFkZXJfY29tcGlsZXIiID4mNjsgfQotKwotKyMgSXMgdGhlIGhlYWRlciBwcmVz ZW50PwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg JDIgcHJlc2VuY2UiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nICQyIHByZXNlbmNlLi4uICIg PiY2OyB9Ci0rY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8q IGVuZCBjb25mZGVmcy5oLiAgKi8KLSsjaW5jbHVkZSA8JDI+Ci0rX0FDRU9GCi0raWYgYWNfZm5f Y190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6Ci0rICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKLStl bHNlCi0rICBhY19oZWFkZXJfcHJlcHJvYz1ubwotK2ZpCi0rcm0gLWYgY29uZnRlc3QuZXJyIGNv bmZ0ZXN0LiRhY19leHQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUKLSskYXNfZWNobyAiJGFjX2hlYWRlcl9w cmVwcm9jIiA+JjY7IH0KLSsKLSsjIFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8KLStjYXNl ICRhY19oZWFkZXJfY29tcGlsZXI6JGFjX2hlYWRlcl9wcmVwcm9jOiRhY19jX3ByZXByb2Nfd2Fy bl9mbGFnIGluICMoKAotKyAgeWVzOm5vOiApCi0rICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwg cmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdB Uk5JTkc6ICQyOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVw cm9jZXNzb3IhIiA+JjI7fQotKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IFdBUk5JTkc6ICQyOiBwcm9jZWVkaW5nIHdpdGggdGhlIGNvbXBpbGVyJ3MgcmVzdWx0 IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRo ZSBjb21waWxlcidzIHJlc3VsdCIgPiYyO30KLSsgICAgOzsKLSsgIG5vOnllczoqICkKLSsgICAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJl c2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJO SU5HOiAkMjogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjI7fQotKyAgICB7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiAgICAgY2hl Y2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjUKLSskYXNfZWNobyAiJGFz X21lOiBXQVJOSU5HOiAkMjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFk ZXJzPyIgPiYyO30KLSsgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBXQVJOSU5HOiAkMjogc2VlIHRoZSBBdXRvY29uZiBkb2N1bWVudGF0aW9uIiA+JjUKLSskYXNf ZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogc2VlIHRoZSBBdXRvY29uZiBkb2N1bWVudGF0aW9u IiA+JjI7fQotKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdB Uk5JTkc6ICQyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwi IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogICAgIHNlY3Rpb24gXCJQcmVz ZW50IEJ1dCBDYW5ub3QgQmUgQ29tcGlsZWRcIiIgPiYyO30KLSsgICAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRo ZSBjb21waWxlcidzIHJlc3VsdCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6 IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mMjt9Ci0rICAgIDs7Ci0r ZXNhYwotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu ZyBmb3IgJDIiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQot K2lmIHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9 OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgZXZhbCAi JDM9XCRhY19oZWFkZXJfY29tcGlsZXIiCi0rZmkKLStldmFsIGFjX3Jlcz1cJCQzCi0rCSAgICAg ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3Jl cyIgPiY1Ci0rJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQotK2ZpCi0rICBldmFsICRhc19saW5l bm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1 bnNldCBhc19saW5lbm87fQotKwotK30gIyBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsCi0r Ci0rIyBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlIExJTkVOTyBIRUFERVIgVkFSIElOQ0xV REVTCi0rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCi0rIyBUZXN0cyB3aGV0aGVyIEhFQURFUiBleGlzdHMgYW5kIGNhbiBiZSBjb21waWxl ZCB1c2luZyB0aGUgaW5jbHVkZSBmaWxlcyBpbgotKyMgSU5DTFVERVMsIHNldHRpbmcgdGhlIGNh Y2hlIHZhcmlhYmxlIFZBUiBhY2NvcmRpbmdseS4KLSthY19mbl9jX2NoZWNrX2hlYWRlcl9jb21w aWxlICgpCi0rewotKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFj az1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotKyAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQotKyRhc19lY2hvX24g ImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQotK2lmIHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0 IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihj YWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl c3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSskNAotKyNpbmNsdWRlIDwkMj4K LStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBl dmFsICIkMz15ZXMiCi0rZWxzZQotKyAgZXZhbCAiJDM9bm8iCi0rZmkKLStybSAtZiBjb3JlIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLStmaQotK2V2 YWwgYWNfcmVzPVwkJDMKLSsJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKLSskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9 Ci0rICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHgg JiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQotKwotK30gIyBhY19mbl9jX2NoZWNr X2hlYWRlcl9jb21waWxlCi0gY2F0ID5jb25maWcubG9nIDw8X0FDRU9GCi0gVGhpcyBmaWxlIGNv bnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUKLSBydW5uaW5n IGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtl LgotQEAgLTQwMDMsNiArNDE1NywxNTEgQEAgZmkKLSAKLSBmaQotIAotK3sgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmls ZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzLi4u ICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3RkYytzZXR9IiA9IHNldDsgdGhl biA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVm cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICov Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdGRhcmcuaD4KLSsjaW5jbHVkZSA8 c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGZsb2F0Lmg+Ci0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsK LSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxl ICIkTElORU5PIjsgdGhlbiA6Ci0rICBhY19jdl9oZWFkZXJfc3RkYz15ZXMKLStlbHNlCi0rICBh Y19jdl9oZWFkZXJfc3RkYz1ubwotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRl c3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0rCi0raWYgdGVzdCAkYWNfY3ZfaGVhZGVy X3N0ZGMgPSB5ZXM7IHRoZW4KLSsgICMgU3VuT1MgNC54IHN0cmluZy5oIGRvZXMgbm90IGRlY2xh cmUgbWVtKiwgY29udHJhcnkgdG8gQU5TSS4KLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg PmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rI2luY2x1ZGUgPHN0 cmluZy5oPgotKwotK19BQ0VPRgotK2lmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQi KSAyPiY1IHwKLSsgICRFR1JFUCAibWVtY2hyIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKwot K2Vsc2UKLSsgIGFjX2N2X2hlYWRlcl9zdGRjPW5vCi0rZmkKLStybSAtZiBjb25mdGVzdCoKLSsK LStmaQotKwotK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCi0rICAjIElT QyAyLjAuMiBzdGRsaWIuaCBkb2VzIG5vdCBkZWNsYXJlIGZyZWUsIGNvbnRyYXJ5IHRvIEFOU0ku Ci0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5k IGNvbmZkZWZzLmguICAqLwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsKLStfQUNFT0YKLStpZiAo ZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0rICAkRUdSRVAgImZyZWUi ID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rCi0rZWxzZQotKyAgYWNfY3ZfaGVhZGVyX3N0ZGM9 bm8KLStmaQotK3JtIC1mIGNvbmZ0ZXN0KgotKwotK2ZpCi0rCi0raWYgdGVzdCAkYWNfY3ZfaGVh ZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KLSsgICMgL2Jpbi9jYyBpbiBJcml4LTQuMC41IGdldHMgbm9u LUFOU0kgY3R5cGUgbWFjcm9zIHVubGVzcyB1c2luZyAtYW5zaS4KLSsgIGlmIHRlc3QgIiRjcm9z c19jb21waWxpbmciID0geWVzOyB0aGVuIDoKLSsgIDoKLStlbHNlCi0rICBjYXQgY29uZmRlZnMu aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwot KyNpbmNsdWRlIDxjdHlwZS5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaWYgKCgnICcgJiAw eDBGRikgPT0gMHgwMjApCi0rIyBkZWZpbmUgSVNMT1dFUihjKSAoJ2EnIDw9IChjKSAmJiAoYykg PD0gJ3onKQotKyMgZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAnQScgKyAoKGMpIC0g J2EnKSA6IChjKSkKLSsjZWxzZQotKyMgZGVmaW5lIElTTE9XRVIoYykgXAotKwkJICAgKCgnYScg PD0gKGMpICYmIChjKSA8PSAnaScpIFwKLSsJCSAgICAgfHwgKCdqJyA8PSAoYykgJiYgKGMpIDw9 ICdyJykgXAotKwkJICAgICB8fCAoJ3MnIDw9IChjKSAmJiAoYykgPD0gJ3onKSkKLSsjIGRlZmlu ZSBUT1VQUEVSKGMpIChJU0xPV0VSKGMpID8gKChjKSB8IDB4NDApIDogKGMpKQotKyNlbmRpZgot KwotKyNkZWZpbmUgWE9SKGUsIGYpICgoKGUpICYmICEoZikpIHx8ICghKGUpICYmIChmKSkpCi0r aW50Ci0rbWFpbiAoKQotK3sKLSsgIGludCBpOwotKyAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsr KQotKyAgICBpZiAoWE9SIChpc2xvd2VyIChpKSwgSVNMT1dFUiAoaSkpCi0rCXx8IHRvdXBwZXIg KGkpICE9IFRPVVBQRVIgKGkpKQotKyAgICAgIHJldHVybiAyOwotKyAgcmV0dXJuIDA7Ci0rfQot K19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgotKwotK2Vsc2UK LSsgIGFjX2N2X2hlYWRlcl9zdGRjPW5vCi0rZmkKLStybSAtZiBjb3JlICouY29yZSBjb3JlLmNv bmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCi0rICBjb25mdGVz dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAotK2ZpCi0rCi0rZmkK LStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk YWNfY3ZfaGVhZGVyX3N0ZGMiID4mNQotKyRhc19lY2hvICIkYWNfY3ZfaGVhZGVyX3N0ZGMiID4m NjsgfQotK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCi0rCi0rJGFzX2Vj aG8gIiNkZWZpbmUgU1REQ19IRUFERVJTIDEiID4+Y29uZmRlZnMuaAotKwotK2ZpCi0rCi0rIyBP biBJUklYIDUuMywgc3lzL3R5cGVzIGFuZCBpbnR0eXBlcy5oIGFyZSBjb25mbGljdGluZy4KLStm b3IgYWNfaGVhZGVyIGluIHN5cy90eXBlcy5oIHN5cy9zdGF0Lmggc3RkbGliLmggc3RyaW5nLmgg bWVtb3J5Lmggc3RyaW5ncy5oIFwKLSsJCSAgaW50dHlwZXMuaCBzdGRpbnQuaCB1bmlzdGQuaAot K2RvIDoKLSsgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVy IiB8ICRhc190cl9zaGAKLSthY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAi JGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIkYWNfaW5jbHVkZXNfZGVmYXVsdAotKyIKLStl dmFsIGFzX3ZhbD1cJCRhc19hY19IZWFkZXIKLSsgICBpZiB0ZXN0ICJ4JGFzX3ZhbCIgPSB4IiJ5 ZXM7IHRoZW4gOgotKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUgYCRhc19l Y2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQotK19BQ0VPRgotKwotK2ZpCi0r Ci0rZG9uZQotKwotKwotK2ZvciBhY19oZWFkZXIgaW4gc3lzL3N0cm9wdHMuaCBzeXMvd2FpdC5o Ci0rZG8gOgotKyAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFk ZXIiIHwgJGFzX3RyX3NoYAotK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8i ICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotK2V2 YWwgYXNfdmFsPVwkJGFzX2FjX0hlYWRlcgotKyAgIGlmIHRlc3QgIngkYXNfdmFsIiA9IHgiInll czsgdGhlbiA6Ci0rICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0rI2RlZmluZSBgJGFzX2Vj aG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCi0rX0FDRU9GCi0rCi0rZmkKLSsK LStkb25lCi0rCi0rCi0gYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxl IgotIAotIGNhdCA+Y29uZmNhY2hlIDw8XF9BQ0VPRgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3 MDMvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9jb25maWd1cmUuaW4KLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9jb25maWd1cmUu aW4JMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIw MTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvY29uZmlndXJlLmluCTIwMTEtMDctMDMgMTA6 NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtNDM3LDQgKzQzNyw2IEBAIG1haW4oKQotIAotIGZp Ci0gCi0rQUNfQ0hFQ0tfSEVBREVSUyhzeXMvc3Ryb3B0cy5oIHN5cy93YWl0LmgpCi0rCi0gQUNf T1VUUFVUKE1ha2VmaWxlKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZXhh bXBsZXMvcmxmZS9leHRlcm4uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMu b3JpZy9yZWFkbGluZS9leGFtcGxlcy9ybGZlL2V4dGVybi5oCTIwMTEtMDctMDMgMTA6NDA6NTMu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxl cy9ybGZlL2V4dGVybi5oCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAt MjcsNyArMjcsMTQgQEAKLSAjZGVmaW5lIF9fYXR0cmlidXRlX18oeCkKLSAjZW5kaWYKLSAKLSsj aWYgIWRlZmluZWQgKF9fUCkKLSsjICBpZiBkZWZpbmVkIChfX1NURENfXykgfHwgZGVmaW5lZCAo X19HTlVDX18pIHx8IGRlZmluZWQgKF9fY3BsdXNwbHVzKQotKyMgICAgZGVmaW5lIF9fUChwcm90 b3MpIHByb3RvcwotKyMgIGVsc2UKLSsjICAgIGRlZmluZSBfX1AocHJvdG9zKSAoKQotKyMgIGVu ZGlmCi0rI2VuZGlmCi0rCi0gLyogcHR5LmMgKi8KLSBleHRlcm4gaW50ICAgT3BlblBUWSBfX1Ao KGNoYXIgKiopKTsKLSBleHRlcm4gdm9pZCAgSW5pdFBUWSBfX1AoKGludCkpOwotLQotSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9vcy5oCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUv b3MuaAkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAu MjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9vcy5oCTIwMTEtMDctMDMgMTA6NDE6MjEu MDAwMDAwMDAwICswMjAwCi1AQCAtMTg2LDcgKzE4Niw3IEBAIGV4dGVybiBpbnQgZXJybm87Ci0g ICogICAgdGVybWluYWwgaGFuZGxpbmcKLSAgKi8KLSAKLS0jaWZkZWYgUE9TSVgKLSsjaWYgZGVm aW5lZCAoUE9TSVgpIHx8IGRlZmluZWQgKF9fRnJlZUJTRF9fKQotICMgaW5jbHVkZSA8dGVybWlv cy5oPgotICMgaWZkZWYgaHB1eAotICMgIGluY2x1ZGUgPGJzZHR0eS5oPgotQEAgLTUyNyw0ICs1 MjcsMyBAQCB0eXBlZGVmIHN0cnVjdCBmZF9zZXQgeyBpbnQgZmRzX2JpdHNbMV07Ci0gICogaG93 IG1hbnkgY2hhcmFjdGVycyB5b3VyIHB0eSdzIGNhbiBidWZmZXIuCi0gICovCi0gI2RlZmluZSBJ T1NJWkUJCTQwOTYKLS0KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1w bGVzL3JsZmUvcHR5LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcv cmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9wdHkuYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9w dHkuYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTIwLDEzICsyMCwx NSBAQAotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKLSAgKi8KLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0gCi0gI2lu Y2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxm Y250bC5oPgotICNpbmNsdWRlIDxzaWduYWwuaD4KLSAKLS0jaW5jbHVkZSAiY29uZmlnLmgiCi0r I2luY2x1ZGUgPHVuaXN0ZC5oPgotKwotICNpbmNsdWRlICJzY3JlZW4uaCIKLSAKLSAjaWZuZGVm IHN1bgotQEAgLTM0LDcgKzM2LDcgQEAKLSAjZW5kaWYKLSAKLSAvKiBmb3Igc29sYXJpcyAyLjEs IFVuaXh3YXJlIChTVlI0LjIpIGFuZCBwb3NzaWJseSBvdGhlcnMgKi8KLS0jaWZkZWYgSEFWRV9T VlI0X1BUWVMKLSsjaWYgZGVmaW5lZCAoSEFWRV9TVlI0X1BUWVMpICYmIGRlZmluZWQgKEhBVkVf U1lTX1NUUk9QVFNfSCkKLSAjIGluY2x1ZGUgPHN5cy9zdHJvcHRzLmg+Ci0gI2VuZGlmCi0gCi1A QCAtMzg0LDQgKzM4NiwzIEBAIGNoYXIgKip0dHluOwotICAgcmV0dXJuIC0xOwotIH0KLSAjZW5k aWYKLS0KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUv cmxmZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5l L2V4YW1wbGVzL3JsZmUvcmxmZS5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9ybGZlL3JsZmUuYwky MDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTczLDYgKzczLDExIEBACi0g I2luY2x1ZGUgPHRlcm1pb3MuaD4KLSAKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2luY2x1ZGUg ImV4dGVybi5oIgotKwotKyNpZiBkZWZpbmVkIChIQVZFX1NZU19XQUlUX0gpCi0rIyAgaW5jbHVk ZSA8c3lzL3dhaXQuaD4KLSsjZW5kaWYKLSAKLSAjaWZkZWYgUkVBRExJTkVfTElCUkFSWQotICMg IGluY2x1ZGUgInJlYWRsaW5lLmgiCi1AQCAtNTg4LDcgKzU5Myw3IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIqKiBhcmd2KQotIAl9Ci0gICAgICAgaWYgKEZEX0lTU0VUIChpbl9mcm9tX3R0eV9mZCwg JmluX3NldCkpCi0gCXsKLS0JICBleHRlcm4gaW50IHJlYWRsaW5lX2VjaG9pbmdfcDsKLSsJICBl eHRlcm4gaW50IF9ybF9lY2hvaW5nX3A7Ci0gCSAgc3RydWN0IHRlcm1pb3MgdGVybV9tYXN0ZXI7 Ci0gCSAgaW50IGRvX2Nhbm9uID0gMTsKLSAJICBpbnQgZG9faWNybmwgPSAxOwotQEAgLTYwNSw5 ICs2MTAsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKLSAJICAgIHsKLSAJICAgICAg ZG9fY2Fub24gPSAodGVybV9tYXN0ZXIuY19sZmxhZyAmIElDQU5PTikgIT0gMDsKLSAJICAgICAg ZG9faWNybmwgPSAodGVybV9tYXN0ZXIuY19sZmxhZyAmIElDUk5MKSAhPSAwOwotLQkgICAgICBy ZWFkbGluZV9lY2hvaW5nX3AgPSAodGVybV9tYXN0ZXIuY19sZmxhZyAmIEVDSE8pICE9IDA7Ci0r CSAgICAgIF9ybF9lY2hvaW5nX3AgPSAodGVybV9tYXN0ZXIuY19sZmxhZyAmIEVDSE8pICE9IDA7 Ci0gCSAgICAgIERQUklOVDEgKCJlY2hvLGNhbm9uLGNybmw6JTAzZFxuIiwKLS0JCSAgICAgICAx MDAgKiByZWFkbGluZV9lY2hvaW5nX3AKLSsJCSAgICAgICAxMDAgKiBfcmxfZWNob2luZ19wCi0g CQkgICAgICAgKyAxMCAqIGRvX2Nhbm9uCi0gCQkgICAgICAgKyAxICogZG9faWNybmwpOwotIAkg ICAgfQotQEAgLTc1Nyw3ICs3NjIsNyBAQCBzdGF0aWMgdm9pZCBzZXRfZWRpdF9tb2RlICgpCi0g CSAgdmkgPSAxOwotIAkgIGJyZWFrOwotIAl9Ci0tICAgICAgc2hlbGxvcHRzID0gaW5kZXggKHNo ZWxsb3B0cyArIDEsICc6Jyk7Ci0rICAgICAgc2hlbGxvcHRzID0gc3RyY2hyIChzaGVsbG9wdHMg KyAxLCAnOicpOwotICAgICB9Ci0gCi0gICBpZiAoIXZpKQotSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvcmx0ZXN0LmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvZXhhbXBsZXMvcmx0ZXN0LmMJMjAxMS0wNy0wMyAx MDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5l L2V4YW1wbGVzL3JsdGVzdC5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1A QCAtNCwyNSArNCwyNCBAQAotIC8qCQkJCQkJCQkgICAgKi8KLSAvKiAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0gCi0t LyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0gCi0tICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5 LCBhIGxpYnJhcnkgZm9yCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGlu ZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeSBmb3IKLSAgICByZWFkaW5nIGxpbmVzIG9m IHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotIAotLSAg IFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlz IGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdl bmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91 IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBC b3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVh ZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8K LSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci1J bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9leGFtcGxlcy9ybHZlcnNpb24uYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9leGFtcGxl cy9ybHZlcnNpb24uYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvZXhhbXBsZXMvcmx2ZXJzaW9uLmMJMjAxMS0wNy0w MyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yLDI1ICsyLDI0IEBACi0gICogcmx2ZXJz aW9uIC0tIHByaW50IG91dCByZWFkbGluZSdzIHZlcnNpb24gbnVtYmVyCi0gICovCi0gCi0tLyog Q29weXJpZ2h0IChDKSAxOTg3LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r LyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0gCi0tICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBh IGxpYnJhcnkgZm9yCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBM aWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeSBmb3IKLSAgICByZWFkaW5nIGxpbmVzIG9mIHRl eHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotIAotLSAgIFRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZy ZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVy YWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRv IG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0 b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxp bmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSAK LSAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKLSAjICBpbmNsdWRlIDxjb25maWcuaD4KLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2Z1bm1hcC5jCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2Z1bm1hcC5jCTIwMTEtMDctMDMg MTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGlu ZS9mdW5tYXAuYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQg KzEsMjQgQEAKLSAvKiBmdW5tYXAuYyAtLSBhdHRhY2ggbmFtZXMgdG8gZnVuY3Rpb25zLiAqLwot IAotLS8qIENvcHlyaWdodCAoQykgMTk4NywgMTk4OSwgMTk5MiBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAxMCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRs aW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKLS0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0 aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotKyAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkK LSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5k IGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKLS0gICBhbmQvb3IgbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0tICAgVGhlIEdO VSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot IAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdp dGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2Fs bGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBv ZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0g ICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0r ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0rCi0gI2RlZmluZSBSRUFETElORV9MSUJS QVJZCi0gCi0gI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCi1AQCAtNTYsNyArNTYsNyBAQCBz dGF0aWMgaW50IGZ1bm1hcF9lbnRyeTsKLSAgICBwcm9ncmFtIHNwZWNpZmljIGZ1bmN0aW9uLiAq LwotIGludCBmdW5tYXBfcHJvZ3JhbV9zcGVjaWZpY19lbnRyeV9zdGFydDsKLSAKLS1zdGF0aWMg RlVOTUFQIGRlZmF1bHRfZnVubWFwW10gPSB7Ci0rc3RhdGljIGNvbnN0IEZVTk1BUCBkZWZhdWx0 X2Z1bm1hcFtdID0gewotICAgeyAiYWJvcnQiLCBybF9hYm9ydCB9LAotICAgeyAiYWNjZXB0LWxp bmUiLCBybF9uZXdsaW5lIH0sCi0gICB7ICJhcnJvdy1rZXktcHJlZml4IiwgcmxfYXJyb3dfa2V5 cyB9LAotQEAgLTEwNSwxMSArMTA1LDEzIEBAIHN0YXRpYyBGVU5NQVAgZGVmYXVsdF9mdW5tYXBb XSA9IHsKLSAgIHsgImtpbGwtcmVnaW9uIiwgcmxfa2lsbF9yZWdpb24gfSwKLSAgIHsgImtpbGwt d29yZCIsIHJsX2tpbGxfd29yZCB9LAotICAgeyAibWVudS1jb21wbGV0ZSIsIHJsX21lbnVfY29t cGxldGUgfSwKLSsgIHsgIm1lbnUtY29tcGxldGUtYmFja3dhcmQiLCBybF9iYWNrd2FyZF9tZW51 X2NvbXBsZXRlIH0sCi0gICB7ICJuZXh0LWhpc3RvcnkiLCBybF9nZXRfbmV4dF9oaXN0b3J5IH0s Ci0gICB7ICJub24taW5jcmVtZW50YWwtZm9yd2FyZC1zZWFyY2gtaGlzdG9yeSIsIHJsX25vbmlu Y19mb3J3YXJkX3NlYXJjaCB9LAotICAgeyAibm9uLWluY3JlbWVudGFsLXJldmVyc2Utc2VhcmNo LWhpc3RvcnkiLCBybF9ub25pbmNfcmV2ZXJzZV9zZWFyY2ggfSwKLSAgIHsgIm5vbi1pbmNyZW1l bnRhbC1mb3J3YXJkLXNlYXJjaC1oaXN0b3J5LWFnYWluIiwgcmxfbm9uaW5jX2ZvcndhcmRfc2Vh cmNoX2FnYWluIH0sCi0gICB7ICJub24taW5jcmVtZW50YWwtcmV2ZXJzZS1zZWFyY2gtaGlzdG9y eS1hZ2FpbiIsIHJsX25vbmluY19yZXZlcnNlX3NlYXJjaF9hZ2FpbiB9LAotKyAgeyAib2xkLW1l bnUtY29tcGxldGUiLCBybF9vbGRfbWVudV9jb21wbGV0ZSB9LAotICAgeyAib3ZlcndyaXRlLW1v ZGUiLCBybF9vdmVyd3JpdGVfbW9kZSB9LAotICNpZmRlZiBfX0NZR1dJTl9fCi0gICB7ICJwYXN0 ZS1mcm9tLWNsaXBib2FyZCIsIHJsX3Bhc3RlX2Zyb21fY2xpcGJvYXJkIH0sCi1AQCAtMTIzLDYg KzEyNSw3IEBAIHN0YXRpYyBGVU5NQVAgZGVmYXVsdF9mdW5tYXBbXSA9IHsKLSAgIHsgInJldmVy dC1saW5lIiwgcmxfcmV2ZXJ0X2xpbmUgfSwKLSAgIHsgInNlbGYtaW5zZXJ0IiwgcmxfaW5zZXJ0 IH0sCi0gICB7ICJzZXQtbWFyayIsIHJsX3NldF9tYXJrIH0sCi0rICB7ICJza2lwLWNzaS1zZXF1 ZW5jZSIsIHJsX3NraXBfY3NpX3NlcXVlbmNlIH0sCi0gICB7ICJzdGFydC1rYmQtbWFjcm8iLCBy bF9zdGFydF9rYmRfbWFjcm8gfSwKLSAgIHsgInRhYi1pbnNlcnQiLCBybF90YWJfaW5zZXJ0IH0s Ci0gICB7ICJ0aWxkZS1leHBhbmQiLCBybF90aWxkZV9leHBhbmQgfSwKLUBAIC0xNDUsNiArMTQ4 LDggQEAgc3RhdGljIEZVTk1BUCBkZWZhdWx0X2Z1bm1hcFtdID0gewotICAgeyAidmktYXBwZW5k LW1vZGUiLCBybF92aV9hcHBlbmRfbW9kZSB9LAotICAgeyAidmktYXJnLWRpZ2l0Iiwgcmxfdmlf YXJnX2RpZ2l0IH0sCi0gICB7ICJ2aS1iYWNrLXRvLWluZGVudCIsIHJsX3ZpX2JhY2tfdG9faW5k ZW50IH0sCi0rICB7ICJ2aS1iYWNrd2FyZC1iaWd3b3JkIiwgcmxfdmlfYldvcmQgfSwKLSsgIHsg InZpLWJhY2t3YXJkLXdvcmQiLCBybF92aV9id29yZCB9LAotICAgeyAidmktYldvcmQiLCBybF92 aV9iV29yZCB9LAotICAgeyAidmktYndvcmQiLCBybF92aV9id29yZCB9LAotICAgeyAidmktY2hh bmdlLWNhc2UiLCBybF92aV9jaGFuZ2VfY2FzZSB9LAotQEAgLTE1NywxMiArMTYyLDE1IEBAIHN0 YXRpYyBGVU5NQVAgZGVmYXVsdF9mdW5tYXBbXSA9IHsKLSAgIHsgInZpLWRlbGV0ZS10byIsIHJs X3ZpX2RlbGV0ZV90byB9LAotICAgeyAidmktZVdvcmQiLCBybF92aV9lV29yZCB9LAotICAgeyAi dmktZWRpdGluZy1tb2RlIiwgcmxfdmlfZWRpdGluZ19tb2RlIH0sCi0rICB7ICJ2aS1lbmQtYmln d29yZCIsIHJsX3ZpX2VXb3JkIH0sCi0gICB7ICJ2aS1lbmQtd29yZCIsIHJsX3ZpX2VuZF93b3Jk IH0sCi0gICB7ICJ2aS1lb2YtbWF5YmUiLCBybF92aV9lb2ZfbWF5YmUgfSwKLSAgIHsgInZpLWV3 b3JkIiwgcmxfdmlfZXdvcmQgfSwKLSAgIHsgInZpLWZXb3JkIiwgcmxfdmlfZldvcmQgfSwKLSAg IHsgInZpLWZldGNoLWhpc3RvcnkiLCBybF92aV9mZXRjaF9oaXN0b3J5IH0sCi0gICB7ICJ2aS1m aXJzdC1wcmludCIsIHJsX3ZpX2ZpcnN0X3ByaW50IH0sCi0rICB7ICJ2aS1mb3J3YXJkLWJpZ3dv cmQiLCBybF92aV9mV29yZCB9LAotKyAgeyAidmktZm9yd2FyZC13b3JkIiwgcmxfdmlfZndvcmQg fSwKLSAgIHsgInZpLWZ3b3JkIiwgcmxfdmlfZndvcmQgfSwKLSAgIHsgInZpLWdvdG8tbWFyayIs IHJsX3ZpX2dvdG9fbWFyayB9LAotICAgeyAidmktaW5zZXJ0LWJlZyIsIHJsX3ZpX2luc2VydF9i ZWcgfSwKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2hpc3RleHBhbmQuYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9oaXN0ZXhw YW5kLmMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkw LjIwMTEwNzAzL3JlYWRsaW5lL2hpc3RleHBhbmQuYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAw MDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjMgQEAKLSAvKiBoaXN0ZXhwYW5kLmMgLS0gaGlzdG9y eSBleHBhbnNpb24uICovCi0gCi0tLyogQ29weXJpZ2h0IChDKSAxOTg5LTIwMDQgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAxOTg5LTIwMTAgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBH TlUgSGlzdG9yeSBMaWJyYXJ5ICh0aGUgTGlicmFyeSksIGEgc2V0IG9mCi0rICAgVGhpcyBmaWxl IGNvbnRhaW5zIHRoZSBHTlUgSGlzdG9yeSBMaWJyYXJ5IChIaXN0b3J5KSwgYSBzZXQgb2YKLSAg ICByb3V0aW5lcyBmb3IgbWFuYWdpbmcgdGhlIHRleHQgb2YgcHJldmlvdXNseSB0eXBlZCBsaW5l cy4KLSAKLS0gICBUaGUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgSGlzdG9yeSBpcyBmcmVlIHNvZnR3YXJlOiB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91 ciBvcHRpb24pCi0tICAgYW55IGxhdGVyIHZlcnNpb24uCi0rICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIAotLSAgIFRoZSBMaWJyYXJ5IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotLSAgIFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVQotLSAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KLS0KLS0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBl ZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0tICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxl IGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90Ci0tICAgaGF2ZSBhIGNv cHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s Ci0tICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAq LwotKyAgIEhpc3RvcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBI aXN0b3J5LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyov Ci0gCi0gI2RlZmluZSBSRUFETElORV9MSUJSQVJZCi0gCi1AQCAtNTYsOCArNTUsNiBAQAotIAot IHR5cGVkZWYgaW50IF9oaXN0X3NlYXJjaF9mdW5jX3QgUEFSQU1TKChjb25zdCBjaGFyICosIGlu dCkpOwotIAotLWV4dGVybiBpbnQgcmxfYnl0ZV9vcmllbnRlZDsJLyogZGVjbGFyZWQgaW4gbWJ1 dGlsLmMgKi8KLS0KLSBzdGF0aWMgY2hhciBlcnJvcl9wb2ludGVyOwotIAotIHN0YXRpYyBjaGFy ICpzdWJzdF9saHM7Ci1AQCAtNjYsOSArNjMsMTEgQEAgc3RhdGljIGludCBzdWJzdF9saHNfbGVu OwotIHN0YXRpYyBpbnQgc3Vic3RfcmhzX2xlbjsKLSAKLSBzdGF0aWMgY2hhciAqZ2V0X2hpc3Rv cnlfd29yZF9zcGVjaWZpZXIgUEFSQU1TKChjaGFyICosIGNoYXIgKiwgaW50ICopKTsKLS1zdGF0 aWMgY2hhciAqaGlzdG9yeV9maW5kX3dvcmQgUEFSQU1TKChjaGFyICosIGludCkpOwotIHN0YXRp YyBpbnQgaGlzdG9yeV90b2tlbml6ZV93b3JkIFBBUkFNUygoY29uc3QgY2hhciAqLCBpbnQpKTsK LStzdGF0aWMgY2hhciAqKmhpc3RvcnlfdG9rZW5pemVfaW50ZXJuYWwgUEFSQU1TKChjb25zdCBj aGFyICosIGludCwgaW50ICopKTsKLSBzdGF0aWMgY2hhciAqaGlzdG9yeV9zdWJzdHJpbmcgUEFS QU1TKChjb25zdCBjaGFyICosIGludCwgaW50KSk7Ci0rc3RhdGljIHZvaWQgZnJlZXdvcmRzIFBB UkFNUygoY2hhciAqKiwgaW50KSk7Ci0rc3RhdGljIGNoYXIgKmhpc3RvcnlfZmluZF93b3JkIFBB UkFNUygoY2hhciAqLCBpbnQpKTsKLSAKLSBzdGF0aWMgY2hhciAqcXVvdGVfYnJlYWtzIFBBUkFN UygoY2hhciAqKSk7Ci0gCi1AQCAtMjQ2LDcgKzI0NSw3IEBAIGdldF9oaXN0b3J5X2V2ZW50IChz dHJpbmcsIGNhbGxlcl9pbmRleCwKLSAKLSAjZGVmaW5lIEZBSUxfU0VBUkNIKCkgXAotICAgZG8g eyBcCi0tICAgIGhpc3Rvcnlfb2Zmc2V0ID0gaGlzdG9yeV9sZW5ndGg7IGZyZWUgKHRlbXApIDsg cmV0dXJuIChjaGFyICopTlVMTDsgXAotKyAgICBoaXN0b3J5X29mZnNldCA9IGhpc3RvcnlfbGVu Z3RoOyB4ZnJlZSAodGVtcCkgOyByZXR1cm4gKGNoYXIgKilOVUxMOyBcCi0gICB9IHdoaWxlICgw KQotIAotICAgLyogSWYgdGhlcmUgaXMgbm8gc2VhcmNoIHN0cmluZywgdHJ5IHRvIHVzZSB0aGUg cHJldmlvdXMgc2VhcmNoIHN0cmluZywKLUBAIC0yNTUsNyArMjU0LDcgQEAgZ2V0X2hpc3Rvcnlf ZXZlbnQgKHN0cmluZywgY2FsbGVyX2luZGV4LAotICAgICB7Ci0gICAgICAgaWYgKHNlYXJjaF9z dHJpbmcpCi0gICAgICAgICB7Ci0tICAgICAgICAgIGZyZWUgKHRlbXApOwotKyAgICAgICAgICB4 ZnJlZSAodGVtcCk7Ci0gICAgICAgICAgIHRlbXAgPSBzYXZlc3RyaW5nIChzZWFyY2hfc3RyaW5n KTsKLSAgICAgICAgIH0KLSAgICAgICBlbHNlCi1AQCAtMjg2LDcgKzI4NSw3IEBAIGdldF9oaXN0 b3J5X2V2ZW50IChzdHJpbmcsIGNhbGxlcl9pbmRleCwKLSAJICAgICAgc2VhcmNoX21hdGNoID0g aGlzdG9yeV9maW5kX3dvcmQgKGVudHJ5LT5saW5lLCBsb2NhbF9pbmRleCk7Ci0gCSAgICB9Ci0g CSAgZWxzZQotLQkgICAgZnJlZSAodGVtcCk7Ci0rCSAgICB4ZnJlZSAodGVtcCk7Ci0gCi0gCSAg cmV0dXJuIChlbnRyeS0+bGluZSk7Ci0gCX0KLUBAIC0zMDYsMTYgKzMwNSwyMCBAQCBnZXRfaGlz dG9yeV9ldmVudCAoc3RyaW5nLCBjYWxsZXJfaW5kZXgsCi0gLyogRXh0cmFjdCB0aGUgY29udGVu dHMgb2YgU1RSSU5HIGFzIGlmIGl0IGlzIGVuY2xvc2VkIGluIHNpbmdsZSBxdW90ZXMuCi0gICAg U0lOREVYLCB3aGVuIHBhc3NlZCBpbiwgaXMgdGhlIG9mZnNldCBvZiB0aGUgY2hhcmFjdGVyIGlt bWVkaWF0ZWx5Ci0gICAgZm9sbG93aW5nIHRoZSBvcGVuaW5nIHNpbmdsZSBxdW90ZTsgb24gZXhp dCwgU0lOREVYIGlzIGxlZnQgcG9pbnRpbmcKLS0gICB0byB0aGUgY2xvc2luZyBzaW5nbGUgcXVv dGUuICovCi0rICAgdG8gdGhlIGNsb3Npbmcgc2luZ2xlIHF1b3RlLiAgRkxBR1MgY3VycmVudGx5 IHVzZWQgdG8gYWxsb3cgYmFja3NsYXNoCi0rICAgdG8gZXNjYXBlIGEgc2luZ2xlIHF1b3RlIChl LmcuLCBmb3IgYmFzaCAkJy4uLicpLiAqLwotIHN0YXRpYyB2b2lkCi0taGlzdF9zdHJpbmdfZXh0 cmFjdF9zaW5nbGVfcXVvdGVkIChzdHJpbmcsIHNpbmRleCkKLStoaXN0X3N0cmluZ19leHRyYWN0 X3NpbmdsZV9xdW90ZWQgKHN0cmluZywgc2luZGV4LCBmbGFncykKLSAgICAgIGNoYXIgKnN0cmlu ZzsKLS0gICAgIGludCAqc2luZGV4OwotKyAgICAgaW50ICpzaW5kZXgsIGZsYWdzOwotIHsKLSAg IHJlZ2lzdGVyIGludCBpOwotIAotICAgZm9yIChpID0gKnNpbmRleDsgc3RyaW5nW2ldICYmIHN0 cmluZ1tpXSAhPSAnXCcnOyBpKyspCi0tICAgIDsKLSsgICAgewotKyAgICAgIGlmICgoZmxhZ3Mg JiAxKSAmJiBzdHJpbmdbaV0gPT0gJ1xcJyAmJiBzdHJpbmdbaSsxXSkKLSsgICAgICAgIGkrKzsK LSsgICAgfQotIAotICAgKnNpbmRleCA9IGk7Ci0gfQotQEAgLTUwNSw3ICs1MDgsNyBAQCBwb3N0 cHJvY19zdWJzdF9yaHMgKCkKLSAJfQotICAgICB9Ci0gICBuZXdbal0gPSAnXDAnOwotLSAgZnJl ZSAoc3Vic3RfcmhzKTsKLSsgIHhmcmVlIChzdWJzdF9yaHMpOwotICAgc3Vic3RfcmhzID0gbmV3 OwotICAgc3Vic3RfcmhzX2xlbiA9IGo7Ci0gfQotQEAgLTU2NCwxMiArNTY3LDEyIEBAIGhpc3Rv cnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCAKLSAjaWYgZGVmaW5lZCAoSEFORExF X01VTFRJQllURSkKLSAgICAgICBpZiAoTUJfQ1VSX01BWCA+IDEgJiYgcmxfYnl0ZV9vcmllbnRl ZCA9PSAwKQotIAl7Ci0tCSAgaW50IGMsIGw7Ci0rCSAgaW50IGNoLCBsOwotIAkgIGwgPSBfcmxf ZmluZF9wcmV2X21iY2hhciAoc3RyaW5nLCBpLCBNQl9GSU5EX0FOWSk7Ci0tCSAgYyA9IHN0cmlu Z1tsXTsKLSsJICBjaCA9IHN0cmluZ1tsXTsKLSAJICAvKiBYWFggLSBvcmlnaW5hbCBwYXRjaCBo YWQgaSAtIDEgPz8/ICBJZiBpID09IDAgaXQgd291bGQgZmFpbC4gKi8KLS0JICBpZiAoaSAmJiAo YyA9PSAnXCcnIHx8IGMgPT0gJyInKSkKLS0JICAgIHF1b3RlZF9zZWFyY2hfZGVsaW1pdGVyID0g YzsKLSsJICBpZiAoaSAmJiAoY2ggPT0gJ1wnJyB8fCBjaCA9PSAnIicpKQotKwkgICAgcXVvdGVk X3NlYXJjaF9kZWxpbWl0ZXIgPSBjaDsKLSAJfQotICAgICAgIGVsc2UKLSAjZW5kaWYgLyogSEFO RExFX01VTFRJQllURSAqLwkgIAotQEAgLTU4Miw3ICs1ODUsNyBAQCBoaXN0b3J5X2V4cGFuZF9p bnRlcm5hbCAoc3RyaW5nLCBzdGFydCwgCi0gICBpZiAoZXZlbnQgPT0gMCkKLSAgICAgewotICAg ICAgICpyZXRfc3RyaW5nID0gaGlzdF9lcnJvciAoc3RyaW5nLCBzdGFydCwgaSwgRVZFTlRfTk9U X0ZPVU5EKTsKLS0gICAgICBmcmVlIChyZXN1bHQpOwotKyAgICAgIHhmcmVlIChyZXN1bHQpOwot ICAgICAgIHJldHVybiAoLTEpOwotICAgICB9Ci0gCi1AQCAtNTk2LDcgKzU5OSw3IEBAIGhpc3Rv cnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCAKLSAgIGlmICh3b3JkX3NwZWMgPT0g KGNoYXIgKikmZXJyb3JfcG9pbnRlcikKLSAgICAgewotICAgICAgICpyZXRfc3RyaW5nID0gaGlz dF9lcnJvciAoc3RyaW5nLCBzdGFydGluZ19pbmRleCwgaSwgQkFEX1dPUkRfU1BFQyk7Ci0tICAg ICAgZnJlZSAocmVzdWx0KTsKLSsgICAgICB4ZnJlZSAocmVzdWx0KTsKLSAgICAgICByZXR1cm4g KC0xKTsKLSAgICAgfQotIAotQEAgLTYyOSw4ICs2MzIsOCBAQCBoaXN0b3J5X2V4cGFuZF9pbnRl cm5hbCAoc3RyaW5nLCBzdGFydCwgCi0gCXsKLSAJZGVmYXVsdDoKLSAJICAqcmV0X3N0cmluZyA9 IGhpc3RfZXJyb3IgKHN0cmluZywgaSsxLCBpKzIsIEJBRF9NT0RJRklFUik7Ci0tCSAgZnJlZSAo cmVzdWx0KTsKLS0JICBmcmVlICh0ZW1wKTsKLSsJICB4ZnJlZSAocmVzdWx0KTsKLSsJICB4ZnJl ZSAodGVtcCk7Ci0gCSAgcmV0dXJuIC0xOwotIAotIAljYXNlICdxJzoKLUBAIC02NTUsNyArNjU4 LDcgQEAgaGlzdG9yeV9leHBhbmRfaW50ZXJuYWwgKHN0cmluZywgc3RhcnQsIAotIAkgICAgewot IAkgICAgICB0c3RyKys7Ci0gCSAgICAgIHQgPSBzYXZlc3RyaW5nICh0c3RyKTsKLS0JICAgICAg ZnJlZSAodGVtcCk7Ci0rCSAgICAgIHhmcmVlICh0ZW1wKTsKLSAJICAgICAgdGVtcCA9IHQ7Ci0g CSAgICB9Ci0gCSAgYnJlYWs7Ci1AQCAtNjgwLDcgKzY4Myw3IEBAIGhpc3RvcnlfZXhwYW5kX2lu dGVybmFsIChzdHJpbmcsIHN0YXJ0LCAKLSAJICBpZiAodHN0cikKLSAJICAgIHsKLSAJICAgICAg dCA9IHNhdmVzdHJpbmcgKHRzdHIpOwotLQkgICAgICBmcmVlICh0ZW1wKTsKLSsJICAgICAgeGZy ZWUgKHRlbXApOwotIAkgICAgICB0ZW1wID0gdDsKLSAJICAgIH0KLSAJICBicmVhazsKLUBAIC03 NTYsOCArNzU5LDggQEAgaGlzdG9yeV9leHBhbmRfaW50ZXJuYWwgKHN0cmluZywgc3RhcnQsIAot IAkgICAgaWYgKHN1YnN0X2xoc19sZW4gPT0gMCkKLSAJICAgICAgewotIAkJKnJldF9zdHJpbmcg PSBoaXN0X2Vycm9yIChzdHJpbmcsIHN0YXJ0aW5nX2luZGV4LCBpLCBOT19QUkVWX1NVQlNUKTsK LS0JCWZyZWUgKHJlc3VsdCk7Ci0tCQlmcmVlICh0ZW1wKTsKLSsJCXhmcmVlIChyZXN1bHQpOwot KwkJeGZyZWUgKHRlbXApOwotIAkJcmV0dXJuIC0xOwotIAkgICAgICB9Ci0gCi1AQCAtNzY2LDgg Kzc2OSw4IEBAIGhpc3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCAKLSAJICAg IGlmIChzdWJzdF9saHNfbGVuID4gbF90ZW1wKQotIAkgICAgICB7Ci0gCQkqcmV0X3N0cmluZyA9 IGhpc3RfZXJyb3IgKHN0cmluZywgc3RhcnRpbmdfaW5kZXgsIGksIFNVQlNUX0ZBSUxFRCk7Ci0t CQlmcmVlIChyZXN1bHQpOwotLQkJZnJlZSAodGVtcCk7Ci0rCQl4ZnJlZSAocmVzdWx0KTsKLSsJ CXhmcmVlICh0ZW1wKTsKLSAJCXJldHVybiAoLTEpOwotIAkgICAgICB9Ci0gCi1AQCAtODA4LDcg KzgxMSw3IEBAIGhpc3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCAKLSAJCQkg ICAgIHRlbXAgKyBzaSArIHN1YnN0X2xoc19sZW4sCi0gCQkJICAgICBsX3RlbXAgLSAoc2kgKyBz dWJzdF9saHNfbGVuKSk7Ci0gCQkgICAgbmV3X2V2ZW50W2xlbl0gPSAnXDAnOwotLQkJICAgIGZy ZWUgKHRlbXApOwotKwkJICAgIHhmcmVlICh0ZW1wKTsKLSAJCSAgICB0ZW1wID0gbmV3X2V2ZW50 OwotIAotIAkJICAgIGZhaWxlZCA9IDA7Ci1AQCAtODQ0LDggKzg0Nyw4IEBAIGhpc3RvcnlfZXhw YW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCAKLSAJICAgICAgY29udGludWU7CQkvKiBkb24n dCB3YW50IHRvIGluY3JlbWVudCBpICovCi0gCi0gCSAgICAqcmV0X3N0cmluZyA9IGhpc3RfZXJy b3IgKHN0cmluZywgc3RhcnRpbmdfaW5kZXgsIGksIFNVQlNUX0ZBSUxFRCk7Ci0tCSAgICBmcmVl IChyZXN1bHQpOwotLQkgICAgZnJlZSAodGVtcCk7Ci0rCSAgICB4ZnJlZSAocmVzdWx0KTsKLSsJ ICAgIHhmcmVlICh0ZW1wKTsKLSAJICAgIHJldHVybiAoLTEpOwotIAkgIH0KLSAJfQotQEAgLTg2 Niw3ICs4NjksNyBAQCBoaXN0b3J5X2V4cGFuZF9pbnRlcm5hbCAoc3RyaW5nLCBzdGFydCwgCi0g ICAgICAgZWxzZQotIAl4ID0gc2F2ZXN0cmluZyAodGVtcCk7Ci0gCi0tICAgICAgZnJlZSAodGVt cCk7Ci0rICAgICAgeGZyZWUgKHRlbXApOwotICAgICAgIHRlbXAgPSB4OwotICAgICB9Ci0gCi1A QCAtODc0LDcgKzg3Nyw3IEBAIGhpc3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0 LCAKLSAgIGlmIChuID49IHJlc3VsdF9sZW4pCi0gICAgIHJlc3VsdCA9IChjaGFyICopeHJlYWxs b2MgKHJlc3VsdCwgbiArIDIpOwotICAgc3RyY3B5IChyZXN1bHQsIHRlbXApOwotLSAgZnJlZSAo dGVtcCk7Ci0rICB4ZnJlZSAodGVtcCk7Ci0gCi0gICAqZW5kX2luZGV4X3B0ciA9IGk7Ci0gICAq cmV0X3N0cmluZyA9IHJlc3VsdDsKLUBAIC05MjUsNyArOTI4LDcgQEAgaGlzdG9yeV9leHBhbmQg KGhzdHJpbmcsIG91dHB1dCkKLSAgICAgIGNoYXIgKipvdXRwdXQ7Ci0gewotICAgcmVnaXN0ZXIg aW50IGo7Ci0tICBpbnQgaSwgciwgbCwgcGFzc2MsIGNjLCBtb2RpZmllZCwgZWluZGV4LCBvbmx5 X3ByaW50aW5nLCBkcXVvdGU7Ci0rICBpbnQgaSwgciwgbCwgcGFzc2MsIGNjLCBtb2RpZmllZCwg ZWluZGV4LCBvbmx5X3ByaW50aW5nLCBkcXVvdGUsIGZsYWc7Ci0gICBjaGFyICpzdHJpbmc7Ci0g Ci0gICAvKiBUaGUgb3V0cHV0IHN0cmluZywgYW5kIGl0cyBsZW5ndGguICovCi1AQCAtMTAxNyw3 ICsxMDIwLDcgQEAgaGlzdG9yeV9leHBhbmQgKGhzdHJpbmcsIG91dHB1dCkKLSAJICAgIH0KLSAJ ICBlbHNlIGlmIChzdHJpbmdbaV0gPT0gaGlzdG9yeV9leHBhbnNpb25fY2hhcikKLSAJICAgIHsK LS0JICAgICAgaWYgKCFjYyB8fCBtZW1iZXIgKGNjLCBoaXN0b3J5X25vX2V4cGFuZF9jaGFycykp Ci0rCSAgICAgIGlmIChjYyA9PSAwIHx8IG1lbWJlciAoY2MsIGhpc3Rvcnlfbm9fZXhwYW5kX2No YXJzKSkKLSAJCWNvbnRpbnVlOwotIAkgICAgICAvKiBJZiB0aGUgY2FsbGluZyBhcHBsaWNhdGlv biBoYXMgc2V0Ci0gCQkgaGlzdG9yeV9pbmhpYml0X2V4cGFuc2lvbl9mdW5jdGlvbiB0byBhIGZ1 bmN0aW9uIHRoYXQgY2hlY2tzCi1AQCAtMTA0NSw4ICsxMDQ4LDkgQEAgaGlzdG9yeV9leHBhbmQg KGhzdHJpbmcsIG91dHB1dCkKLSAJICBlbHNlIGlmIChkcXVvdGUgPT0gMCAmJiBoaXN0b3J5X3F1 b3Rlc19pbmhpYml0X2V4cGFuc2lvbiAmJiBzdHJpbmdbaV0gPT0gJ1wnJykKLSAJICAgIHsKLSAJ ICAgICAgLyogSWYgdGhpcyBpcyBiYXNoLCBzaW5nbGUgcXVvdGVzIGluaGliaXQgaGlzdG9yeSBl eHBhbnNpb24uICovCi0rCSAgICAgIGZsYWcgPSAoaSA+IDAgJiYgc3RyaW5nW2kgLSAxXSA9PSAn JCcpOwotIAkgICAgICBpKys7Ci0tCSAgICAgIGhpc3Rfc3RyaW5nX2V4dHJhY3Rfc2luZ2xlX3F1 b3RlZCAoc3RyaW5nLCAmaSk7Ci0rCSAgICAgIGhpc3Rfc3RyaW5nX2V4dHJhY3Rfc2luZ2xlX3F1 b3RlZCAoc3RyaW5nLCAmaSwgZmxhZyk7Ci0gCSAgICB9Ci0gCSAgZWxzZSBpZiAoaGlzdG9yeV9x dW90ZXNfaW5oaWJpdF9leHBhbnNpb24gJiYgc3RyaW5nW2ldID09ICdcXCcpCi0gCSAgICB7Ci1A QCAtMTA2MCw3ICsxMDY0LDcgQEAgaGlzdG9yeV9leHBhbmQgKGhzdHJpbmcsIG91dHB1dCkKLSAJ ICAKLSAgICAgICBpZiAoc3RyaW5nW2ldICE9IGhpc3RvcnlfZXhwYW5zaW9uX2NoYXIpCi0gCXsK LS0JICBmcmVlIChyZXN1bHQpOwotKwkgIHhmcmVlIChyZXN1bHQpOwotIAkgICpvdXRwdXQgPSBz YXZlc3RyaW5nIChzdHJpbmcpOwotIAkgIHJldHVybiAoMCk7Ci0gCX0KLUBAIC0xMDk3LDcgKzEx MDEsNyBAQCBoaXN0b3J5X2V4cGFuZCAoaHN0cmluZywgb3V0cHV0KQotIAkgIGlmIChzdHJsZW4g KG1iKSA+IDEpCi0gCSAgICB7Ci0gCSAgICAgIEFERF9TVFJJTkcgKG1iKTsKLS0JICAgICAgYnJl YWs7Ci0rCSAgICAgIGNvbnRpbnVlOwotIAkgICAgfQotIAl9Ci0gI2VuZGlmIC8qIEhBTkRMRV9N VUxUSUJZVEUgKi8KLUBAIC0xMTMxLDE1ICsxMTM1LDE2IEBAIGhpc3RvcnlfZXhwYW5kIChoc3Ry aW5nLCBvdXRwdXQpCi0gCSAgICAgIHsKLSAJCWludCBxdW90ZSwgc2xlbjsKLSAKLSsJCWZsYWcg PSAoaSA+IDAgJiYgc3RyaW5nW2kgLSAxXSA9PSAnJCcpOwotIAkJcXVvdGUgPSBpKys7Ci0tCQlo aXN0X3N0cmluZ19leHRyYWN0X3NpbmdsZV9xdW90ZWQgKHN0cmluZywgJmkpOwotKwkJaGlzdF9z dHJpbmdfZXh0cmFjdF9zaW5nbGVfcXVvdGVkIChzdHJpbmcsICZpLCBmbGFnKTsKLSAKLSAJCXNs ZW4gPSBpIC0gcXVvdGUgKyAyOwotIAkJdGVtcCA9IChjaGFyICopeG1hbGxvYyAoc2xlbik7Ci0g CQlzdHJuY3B5ICh0ZW1wLCBzdHJpbmcgKyBxdW90ZSwgc2xlbik7Ci0gCQl0ZW1wW3NsZW4gLSAx XSA9ICdcMCc7Ci0gCQlBRERfU1RSSU5HICh0ZW1wKTsKLS0JCWZyZWUgKHRlbXApOwotKwkJeGZy ZWUgKHRlbXApOwotIAkgICAgICB9Ci0gCSAgICBlbHNlCi0gCSAgICAgIEFERF9DSEFSIChzdHJp bmdbaV0pOwotQEAgLTExNTIsNyArMTE1Nyw3IEBAIGhpc3RvcnlfZXhwYW5kIChoc3RyaW5nLCBv dXRwdXQpCi0gCSAgICAgIHRlbXAgPSAoY2hhciAqKXhtYWxsb2MgKGwgLSBpICsgMSk7Ci0gCSAg ICAgIHN0cmNweSAodGVtcCwgc3RyaW5nICsgaSk7Ci0gCSAgICAgIEFERF9TVFJJTkcgKHRlbXAp OwotLQkgICAgICBmcmVlICh0ZW1wKTsKLSsJICAgICAgeGZyZWUgKHRlbXApOwotIAkgICAgICBp ID0gbDsKLSAJICAgIH0KLSAJICBlbHNlCi1AQCAtMTE2NSw3ICsxMTcwLDggQEAgaGlzdG9yeV9l eHBhbmQgKGhzdHJpbmcsIG91dHB1dCkKLSAJICAvKiBJZiB0aGUgaGlzdG9yeV9leHBhbnNpb25f Y2hhciBpcyBmb2xsb3dlZCBieSBvbmUgb2YgdGhlCi0gCSAgICAgY2hhcmFjdGVycyBpbiBoaXN0 b3J5X25vX2V4cGFuZF9jaGFycywgdGhlbiBpdCBpcyBub3QgYQotIAkgICAgIGNhbmRpZGF0ZSBm b3IgZXhwYW5zaW9uIG9mIGFueSBraW5kLiAqLwotLQkgIGlmIChtZW1iZXIgKGNjLCBoaXN0b3J5 X25vX2V4cGFuZF9jaGFycykpCi0rCSAgaWYgKGNjID09IDAgfHwgbWVtYmVyIChjYywgaGlzdG9y eV9ub19leHBhbmRfY2hhcnMpIHx8Ci0rCSAgCQkgKGhpc3RvcnlfaW5oaWJpdF9leHBhbnNpb25f ZnVuY3Rpb24gJiYgKCpoaXN0b3J5X2luaGliaXRfZXhwYW5zaW9uX2Z1bmN0aW9uKSAoc3RyaW5n LCBpKSkpCi0gCSAgICB7Ci0gCSAgICAgIEFERF9DSEFSIChzdHJpbmdbaV0pOwotIAkgICAgICBi cmVhazsKLUBAIC0xMTg0LDcgKzExOTAsNyBAQCBoaXN0b3J5X2V4cGFuZCAoaHN0cmluZywgb3V0 cHV0KQotIAkJICB0ZW1wID0gKGNoYXIgKil4bWFsbG9jICgxICsgc3RybGVuIChyZXN1bHQpKTsK LSAJCSAgc3RyY3B5ICh0ZW1wLCByZXN1bHQpOwotIAkJICBBRERfU1RSSU5HICh0ZW1wKTsKLS0J CSAgZnJlZSAodGVtcCk7Ci0rCQkgIHhmcmVlICh0ZW1wKTsKLSAJCX0KLSAJICAgICAgaSsrOwot IAkgICAgICBicmVhazsKLUBAIC0xMTk1LDkgKzEyMDEsOSBAQCBoaXN0b3J5X2V4cGFuZCAoaHN0 cmluZywgb3V0cHV0KQotIAkgIGlmIChyIDwgMCkKLSAJICAgIHsKLSAJICAgICAgKm91dHB1dCA9 IHRlbXA7Ci0tCSAgICAgIGZyZWUgKHJlc3VsdCk7Ci0rCSAgICAgIHhmcmVlIChyZXN1bHQpOwot IAkgICAgICBpZiAoc3RyaW5nICE9IGhzdHJpbmcpCi0tCQlmcmVlIChzdHJpbmcpOwotKwkJeGZy ZWUgKHN0cmluZyk7Ci0gCSAgICAgIHJldHVybiAtMTsKLSAJICAgIH0KLSAJICBlbHNlCi1AQCAt MTIwNyw3ICsxMjEzLDcgQEAgaGlzdG9yeV9leHBhbmQgKGhzdHJpbmcsIG91dHB1dCkKLSAJCSAg bW9kaWZpZWQrKzsKLSAJCSAgaWYgKCp0ZW1wKQotIAkJICAgIEFERF9TVFJJTkcgKHRlbXApOwot LQkJICBmcmVlICh0ZW1wKTsKLSsJCSAgeGZyZWUgKHRlbXApOwotIAkJfQotIAkgICAgICBvbmx5 X3ByaW50aW5nID0gciA9PSAxOwotIAkgICAgICBpID0gZWluZGV4OwotQEAgLTEyMTgsNyArMTIy NCw3IEBAIGhpc3RvcnlfZXhwYW5kIChoc3RyaW5nLCBvdXRwdXQpCi0gCi0gICAqb3V0cHV0ID0g cmVzdWx0OwotICAgaWYgKHN0cmluZyAhPSBoc3RyaW5nKQotLSAgICBmcmVlIChzdHJpbmcpOwot KyAgICB4ZnJlZSAoc3RyaW5nKTsKLSAKLSAgIGlmIChvbmx5X3ByaW50aW5nKQotICAgICB7Ci1A QCAtMTM5OSw4ICsxNDA1LDggQEAgaGlzdG9yeV9hcmdfZXh0cmFjdCAoZmlyc3QsIGxhc3QsIHN0 cmluZwotICAgICB9Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCi0tICAgIGZyZWUg KGxpc3RbaV0pOwotLSAgZnJlZSAobGlzdCk7Ci0rICAgIHhmcmVlIChsaXN0W2ldKTsKLSsgIHhm cmVlIChsaXN0KTsKLSAKLSAgIHJldHVybiAocmVzdWx0KTsKLSB9Ci1AQCAtMTQxMSwxMCArMTQx NywxMCBAQCBoaXN0b3J5X3Rva2VuaXplX3dvcmQgKHN0cmluZywgaW5kKQotICAgICAgaW50IGlu ZDsKLSB7Ci0gICByZWdpc3RlciBpbnQgaTsKLS0gIGludCBkZWxpbWl0ZXI7Ci0rICBpbnQgZGVs aW1pdGVyLCBuZXN0ZGVsaW0sIGRlbGltb3BlbjsKLSAKLSAgIGkgPSBpbmQ7Ci0tICBkZWxpbWl0 ZXIgPSAwOwotKyAgZGVsaW1pdGVyID0gbmVzdGRlbGltID0gMDsKLSAKLSAgIGlmIChtZW1iZXIg KHN0cmluZ1tpXSwgIigpXG4iKSkKLSAgICAgewotQEAgLTE0MzAsMjAgKzE0MzYsMzQgQEAgaGlz dG9yeV90b2tlbml6ZV93b3JkIChzdHJpbmcsIGluZCkKLSAJewotIAkgIGlmIChwZWVrID09ICc8 JyAmJiBzdHJpbmdbaSArIDJdID09ICctJykKLSAJICAgIGkrKzsKLSsJICBlbHNlIGlmIChwZWVr ID09ICc8JyAmJiBzdHJpbmdbaSArIDJdID09ICc8JykKLSsJICAgIGkrKzsKLSAJICBpICs9IDI7 Ci0gCSAgcmV0dXJuIGk7Ci0gCX0KLS0gICAgICBlbHNlCi0rICAgICAgZWxzZSBpZiAoKHBlZWsg PT0gJyYnICYmIChzdHJpbmdbaV0gPT0gJz4nIHx8IHN0cmluZ1tpXSA9PSAnPCcpKSB8fAotKwkJ KHBlZWsgPT0gJz4nICYmIHN0cmluZ1tpXSA9PSAnJicpKQotIAl7Ci0tCSAgaWYgKChwZWVrID09 ICcmJyAmJiAoc3RyaW5nW2ldID09ICc+JyB8fCBzdHJpbmdbaV0gPT0gJzwnKSkgfHwKLS0JICAg ICAgKHBlZWsgPT0gJz4nICYmIHN0cmluZ1tpXSA9PSAnJicpIHx8Ci0tCSAgICAgIChwZWVrID09 ICcoJyAmJiAoc3RyaW5nW2ldID09ICc+JyB8fCBzdHJpbmdbaV0gPT0gJzwnKSkgfHwgLyogKSAq LwotLQkgICAgICAocGVlayA9PSAnKCcgJiYgc3RyaW5nW2ldID09ICckJykpIC8qICkgKi8KLS0J ICAgIHsKLS0JICAgICAgaSArPSAyOwotLQkgICAgICByZXR1cm4gaTsKLS0JICAgIH0KLSsJICBp ICs9IDI7Ci0rCSAgcmV0dXJuIGk7Ci0rCX0KLSsgICAgICAvKiBYWFggLSBzZXBhcmF0ZWQgb3V0 IGZvciBsYXRlciAtLSBiYXNoLTQuMiAqLwotKyAgICAgIGVsc2UgaWYgKChwZWVrID09ICcoJyAm JiAoc3RyaW5nW2ldID09ICc+JyB8fCBzdHJpbmdbaV0gPT0gJzwnKSkgfHwgLyogKSAqLwotKwkg ICAgICAgKHBlZWsgPT0gJygnICYmIHN0cmluZ1tpXSA9PSAnJCcpKSAvKikqLwotKwl7Ci0rCSAg aSArPSAyOwotKwkgIGRlbGltb3BlbiA9ICcoJzsKLSsJICBkZWxpbWl0ZXIgPSAnKSc7Ci0rCSAg bmVzdGRlbGltID0gMTsKLSsJICBnb3RvIGdldF93b3JkOwotIAl9Ci0rI2lmIDAKLSsgICAgICBl bHNlIGlmIChwZWVrID09ICdcJycgJiYgc3RyaW5nW2ldID09ICckJykKLSsgICAgICAgIHsKLSsJ ICBpICs9IDI7CS8qIFhYWCAqLwotKwkgIHJldHVybiBpOwotKyAgICAgICAgfQotKyNlbmRpZgot IAotICAgICAgIGlmIChzdHJpbmdbaV0gIT0gJyQnKQotIAl7Ci1AQCAtMTQ1Miw5ICsxNDcyLDI1 IEBAIGhpc3RvcnlfdG9rZW5pemVfd29yZCAoc3RyaW5nLCBpbmQpCi0gCX0KLSAgICAgfQotIAot KyAgLyogc2FtZSBjb2RlIGFsc28gdXNlZCBmb3IgJCguLi4pLzwoLi4uKS8+KC4uLikgYWJvdmUg Ki8KLSsgIGlmIChtZW1iZXIgKHN0cmluZ1tpXSwgIiFAPysqIikpCi0rICAgIHsKLSsgICAgICBp bnQgcGVlayA9IHN0cmluZ1tpICsgMV07Ci0rCi0rICAgICAgaWYgKHBlZWsgPT0gJygnKQkJLyop Ki8KLSsJewotKwkgIC8qIFNoZWxsIGV4dGVuZGVkIGdsb2JiaW5nIHBhdHRlcm5zICovCi0rCSAg aSArPSAyOwotKwkgIGRlbGltb3BlbiA9ICcoJzsKLSsJICBkZWxpbWl0ZXIgPSAnKSc7CS8qIFhY WCAtIG5vdCBwZXJmZWN0ICovCi0rCSAgbmVzdGRlbGltID0gMTsKLSsJfQotKyAgICB9Ci0rCi0r Z2V0X3dvcmQ6Ci0gICAvKiBHZXQgd29yZCBmcm9tIHN0cmluZyArIGk7ICovCi0gCi0tICBpZiAo bWVtYmVyIChzdHJpbmdbaV0sIEhJU1RPUllfUVVPVEVfQ0hBUkFDVEVSUykpCi0rICBpZiAoZGVs aW1pdGVyID09IDAgJiYgbWVtYmVyIChzdHJpbmdbaV0sIEhJU1RPUllfUVVPVEVfQ0hBUkFDVEVS UykpCi0gICAgIGRlbGltaXRlciA9IHN0cmluZ1tpKytdOwotIAotICAgZm9yICg7IHN0cmluZ1tp XTsgaSsrKQotQEAgLTE0NzIsMTYgKzE1MDgsMzEgQEAgaGlzdG9yeV90b2tlbml6ZV93b3JkIChz dHJpbmcsIGluZCkKLSAJICBjb250aW51ZTsKLSAJfQotIAotKyAgICAgIC8qIGRlbGltaXRlciBt dXN0IGJlIHNldCBhbmQgc2V0IHRvIHNvbWV0aGluZyBvdGhlciB0aGFuIGEgcXVvdGUgaWYKLSsJ IG5lc3RkZWxpbSBpcyBzZXQsIHNvIHRoZXNlIHRlc3RzIGFyZSBzYWZlLiAqLwotKyAgICAgIGlm IChuZXN0ZGVsaW0gJiYgc3RyaW5nW2ldID09IGRlbGltb3BlbikKLSsJewotKwkgIG5lc3RkZWxp bSsrOwotKwkgIGNvbnRpbnVlOwotKwl9Ci0rICAgICAgaWYgKG5lc3RkZWxpbSAmJiBzdHJpbmdb aV0gPT0gZGVsaW1pdGVyKQotKwl7Ci0rCSAgbmVzdGRlbGltLS07Ci0rCSAgaWYgKG5lc3RkZWxp bSA9PSAwKQotKwkgICAgZGVsaW1pdGVyID0gMDsKLSsJICBjb250aW51ZTsKLSsJfQotKyAgICAg IAotICAgICAgIGlmIChkZWxpbWl0ZXIgJiYgc3RyaW5nW2ldID09IGRlbGltaXRlcikKLSAJewot IAkgIGRlbGltaXRlciA9IDA7Ci0gCSAgY29udGludWU7Ci0gCX0KLSAKLS0gICAgICBpZiAoIWRl bGltaXRlciAmJiAobWVtYmVyIChzdHJpbmdbaV0sIGhpc3Rvcnlfd29yZF9kZWxpbWl0ZXJzKSkp Ci0rICAgICAgaWYgKGRlbGltaXRlciA9PSAwICYmIChtZW1iZXIgKHN0cmluZ1tpXSwgaGlzdG9y eV93b3JkX2RlbGltaXRlcnMpKSkKLSAJYnJlYWs7Ci0gCi0tICAgICAgaWYgKCFkZWxpbWl0ZXIg JiYgbWVtYmVyIChzdHJpbmdbaV0sIEhJU1RPUllfUVVPVEVfQ0hBUkFDVEVSUykpCi0rICAgICAg aWYgKGRlbGltaXRlciA9PSAwICYmIG1lbWJlciAoc3RyaW5nW2ldLCBISVNUT1JZX1FVT1RFX0NI QVJBQ1RFUlMpKQotIAlkZWxpbWl0ZXIgPSBzdHJpbmdbaV07Ci0gICAgIH0KLSAKLUBAIC0xNTY5 LDYgKzE2MjAsMTggQEAgaGlzdG9yeV90b2tlbml6ZSAoc3RyaW5nKQotICAgcmV0dXJuIChoaXN0 b3J5X3Rva2VuaXplX2ludGVybmFsIChzdHJpbmcsIC0xLCAoaW50ICopTlVMTCkpOwotIH0KLSAK LSsvKiBGcmVlIG1lbWJlcnMgb2YgV09SRFMgZnJvbSBTVEFSVCB0byBhbiBlbXB0eSBzdHJpbmcg Ki8KLStzdGF0aWMgdm9pZAotK2ZyZWV3b3JkcyAod29yZHMsIHN0YXJ0KQotKyAgICAgY2hhciAq KndvcmRzOwotKyAgICAgaW50IHN0YXJ0OwotK3sKLSsgIHJlZ2lzdGVyIGludCBpOwotKwotKyAg Zm9yIChpID0gc3RhcnQ7IHdvcmRzW2ldOyBpKyspCi0rICAgIHhmcmVlICh3b3Jkc1tpXSk7Ci0r fQotKwotIC8qIEZpbmQgYW5kIHJldHVybiB0aGUgd29yZCB3aGljaCBjb250YWlucyB0aGUgY2hh cmFjdGVyIGF0IGluZGV4IElORAotICAgIGluIHRoZSBoaXN0b3J5IGxpbmUgTElORS4gIFVzZWQg dG8gc2F2ZSB0aGUgd29yZCBtYXRjaGVkIGJ5IHRoZQotICAgIGxhc3QgaGlzdG9yeSAhP3N0cmlu Zz8gc2VhcmNoLiAqLwotQEAgLTE1ODIsMTIgKzE2NDUsMTYgQEAgaGlzdG9yeV9maW5kX3dvcmQg KGxpbmUsIGluZCkKLSAKLSAgIHdvcmRzID0gaGlzdG9yeV90b2tlbml6ZV9pbnRlcm5hbCAobGlu ZSwgaW5kLCAmd2luZCk7Ci0gICBpZiAod2luZCA9PSAtMSB8fCB3b3JkcyA9PSAwKQotLSAgICBy ZXR1cm4gKChjaGFyICopTlVMTCk7Ci0rICAgIHsKLSsgICAgICBpZiAod29yZHMpCi0rCWZyZWV3 b3JkcyAod29yZHMsIDApOwotKyAgICAgIEZSRUUgKHdvcmRzKTsKLSsgICAgICByZXR1cm4gKChj aGFyICopTlVMTCk7Ci0rICAgIH0KLSAgIHMgPSB3b3Jkc1t3aW5kXTsKLSAgIGZvciAoaSA9IDA7 IGkgPCB3aW5kOyBpKyspCi0tICAgIGZyZWUgKHdvcmRzW2ldKTsKLS0gIGZvciAoaSA9IHdpbmQg KyAxOyB3b3Jkc1tpXTsgaSsrKQotLSAgICBmcmVlICh3b3Jkc1tpXSk7Ci0tICBmcmVlICh3b3Jk cyk7Ci0rICAgIHhmcmVlICh3b3Jkc1tpXSk7Ci0rICBmcmVld29yZHMgKHdvcmRzLCB3aW5kICsg MSk7Ci0rICB4ZnJlZSAod29yZHMpOwotICAgcmV0dXJuIHM7Ci0gfQotSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA3MDMvcmVhZGxpbmUvaGlzdGZpbGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu OTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9oaXN0ZmlsZS5jCTIwMTEtMDctMDMgMTA6NDA6NTMu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9oaXN0Zmls ZS5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyNCArMSwyMyBA QAotIC8qIGhpc3RmaWxlLmMgLSBmdW5jdGlvbnMgdG8gbWFuaXB1bGF0ZSB0aGUgaGlzdG9yeSBm aWxlLiAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk4OS0yMDAzIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk4OS0yMDEwIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgR05VIEhpc3Rv cnkgTGlicmFyeSAodGhlIExpYnJhcnkpLCBhIHNldCBvZgotKyAgIFRoaXMgZmlsZSBjb250YWlu cyB0aGUgR05VIEhpc3RvcnkgTGlicmFyeSAoSGlzdG9yeSksIGEgc2V0IG9mCi0gICAgcm91dGlu ZXMgZm9yIG1hbmFnaW5nIHRoZSB0ZXh0IG9mIHByZXZpb3VzbHkgdHlwZWQgbGluZXMuCi0gCi0t ICAgVGhlIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyAgIEhpc3RvcnkgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9u KQotLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgTGlicmFyeSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLS0gICBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUKLS0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0t ICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBH TlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQg Q09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRo ZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5 IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBI aXN0b3J5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggSGlzdG9yeS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAotIC8q IFRoZSBnb2FsIGlzIHRvIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIHRyYW5zcGFyZW50LCBzbyB0 aGF0IHlvdQotICAgIGRvbid0IGhhdmUgdG8ga25vdyB3aGF0IGRhdGEgdHlwZXMgYXJlIHVzZWQs IGp1c3Qgd2hhdCBmdW5jdGlvbnMKLUBAIC01Myw3ICs1Miw5IEBACi0gIyAgaW5jbHVkZSA8dW5p c3RkLmg+Ci0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQgKF9fRU1YX18pIHx8IGRlZmluZWQgKF9f Q1lHV0lOX18pCi0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0rCi0rI2lmIGRlZmluZWQgKF9fRU1YX18p Ci0gIyAgdW5kZWYgSEFWRV9NTUFQCi0gI2VuZGlmCi0gCi1AQCAtMTAzLDcgKzEwNCw3IEBAIGlu dCBoaXN0b3J5X3dyaXRlX3RpbWVzdGFtcHMgPSAwOwotIAotIC8qIERvZXMgUyBsb29rIGxpa2Ug dGhlIGJlZ2lubmluZyBvZiBhIGhpc3RvcnkgdGltZXN0YW1wIGVudHJ5PyAgUGxhY2Vob2xkZXIK LSAgICBmb3IgbW9yZSBleHRlbnNpdmUgdGVzdHMuICovCi0tI2RlZmluZSBISVNUX1RJTUVTVEFN UF9TVEFSVChzKQkJKCoocykgPT0gaGlzdG9yeV9jb21tZW50X2NoYXIpCi0rI2RlZmluZSBISVNU X1RJTUVTVEFNUF9TVEFSVChzKQkJKCoocykgPT0gaGlzdG9yeV9jb21tZW50X2NoYXIgJiYgaXNk aWdpdCAoKHMpWzFdKSApCi0gCi0gLyogUmV0dXJuIHRoZSBzdHJpbmcgdGhhdCBzaG91bGQgYmUg dXNlZCBpbiB0aGUgcGxhY2Ugb2YgdGhpcwotICAgIGZpbGVuYW1lLiAgVGhpcyBvbmx5IG1hdHRl cnMgd2hlbiB5b3UgZG9uJ3Qgc3BlY2lmeSB0aGUKLUBAIC0xMjUsOCArMTI2LDEyIEBAIGhpc3Rv cnlfZmlsZW5hbWUgKGZpbGVuYW1lKQotIAotICAgaWYgKGhvbWUgPT0gMCkKLSAgICAgewotKyNp ZiAwCi0gICAgICAgaG9tZSA9ICIuIjsKLSAgICAgICBob21lX2xlbiA9IDE7Ci0rI2Vsc2UKLSsg ICAgICByZXR1cm4gKE5VTEwpOwotKyNlbmRpZgotICAgICB9Ci0gICBlbHNlCi0gICAgIGhvbWVf bGVuID0gc3RybGVuIChob21lKTsKLUBAIC0xNzgsNyArMTgzLDcgQEAgcmVhZF9oaXN0b3J5X3Jh bmdlIChmaWxlbmFtZSwgZnJvbSwgdG8pCi0gCi0gICBidWZmZXIgPSBsYXN0X3RzID0gKGNoYXIg KilOVUxMOwotICAgaW5wdXQgPSBoaXN0b3J5X2ZpbGVuYW1lIChmaWxlbmFtZSk7Ci0tICBmaWxl ID0gb3BlbiAoaW5wdXQsIE9fUkRPTkxZfE9fQklOQVJZLCAwNjY2KTsKLSsgIGZpbGUgPSBpbnB1 dCA/IG9wZW4gKGlucHV0LCBPX1JET05MWXxPX0JJTkFSWSwgMDY2NikgOiAtMTsKLSAKLSAgIGlm ICgoZmlsZSA8IDApIHx8IChmc3RhdCAoZmlsZSwgJmZpbmZvKSA9PSAtMSkpCi0gICAgIGdvdG8g ZXJyb3JfYW5kX2V4aXQ7Ci1AQCAtMjU2LDggKzI2MSw5IEBAIHJlYWRfaGlzdG9yeV9yYW5nZSAo ZmlsZW5hbWUsIGZyb20sIHRvKQotICAgZm9yIChsaW5lX2VuZCA9IGxpbmVfc3RhcnQ7IGxpbmVf ZW5kIDwgYnVmZW5kOyBsaW5lX2VuZCsrKQotICAgICBpZiAoKmxpbmVfZW5kID09ICdcbicpCi0g ICAgICAgewotLQlpZiAobGluZV9lbmQgLSAxID49IGxpbmVfc3RhcnQgJiYgKihsaW5lX2VuZCAt IDEpID09ICdccicpCi0tCSAgKihsaW5lX2VuZCAtIDEpID0gJ1wwJzsKLSsJLyogQ2hhbmdlIHRv IGFsbG93IFdpbmRvd3MtbGlrZSBcclxuIGVuZCBvZiBsaW5lIGRlbGltaXRlci4gKi8KLSsJaWYg KGxpbmVfZW5kID4gbGluZV9zdGFydCAmJiBsaW5lX2VuZFstMV0gPT0gJ1xyJykKLSsJICBsaW5l X2VuZFstMV0gPSAnXDAnOwotIAllbHNlCi0gCSAgKmxpbmVfZW5kID0gJ1wwJzsKLSAKLUBAIC0z MTIsNyArMzE4LDcgQEAgaGlzdG9yeV90cnVuY2F0ZV9maWxlIChmbmFtZSwgbGluZXMpCi0gCi0g ICBidWZmZXIgPSAoY2hhciAqKU5VTEw7Ci0gICBmaWxlbmFtZSA9IGhpc3RvcnlfZmlsZW5hbWUg KGZuYW1lKTsKLS0gIGZpbGUgPSBvcGVuIChmaWxlbmFtZSwgT19SRE9OTFl8T19CSU5BUlksIDA2 NjYpOwotKyAgZmlsZSA9IGZpbGVuYW1lID8gb3BlbiAoZmlsZW5hbWUsIE9fUkRPTkxZfE9fQklO QVJZLCAwNjY2KSA6IC0xOwotICAgcnYgPSAwOwotIAotICAgLyogRG9uJ3QgdHJ5IHRvIHRydW5j YXRlIG5vbi1yZWd1bGFyIGZpbGVzLiAqLwotQEAgLTQxMSw3ICs0MTcsNyBAQCBoaXN0b3J5X3Ry dW5jYXRlX2ZpbGUgKGZuYW1lLCBsaW5lcykKLSAKLSAgIEZSRUUgKGJ1ZmZlcik7Ci0gCi0tICBm cmVlIChmaWxlbmFtZSk7Ci0rICB4ZnJlZSAoZmlsZW5hbWUpOwotICAgcmV0dXJuIHJ2OwotIH0K LSAKLUBAIC00MzQsOSArNDQwLDEwIEBAIGhpc3RvcnlfZG9fd3JpdGUgKGZpbGVuYW1lLCBuZWxl bWVudHMsIG8KLSAgIG1vZGUgPSBvdmVyd3JpdGUgPyBPX1dST05MWXxPX0NSRUFUfE9fVFJVTkN8 T19CSU5BUlkgOiBPX1dST05MWXxPX0FQUEVORHxPX0JJTkFSWTsKLSAjZW5kaWYKLSAgIG91dHB1 dCA9IGhpc3RvcnlfZmlsZW5hbWUgKGZpbGVuYW1lKTsKLSsgIGZpbGUgPSBvdXRwdXQgPyBvcGVu IChvdXRwdXQsIG1vZGUsIDA2MDApIDogLTE7Ci0gICBydiA9IDA7Ci0gCi0tICBpZiAoKGZpbGUg PSBvcGVuIChvdXRwdXQsIG1vZGUsIDA2MDApKSA9PSAtMSkKLSsgIGlmIChmaWxlID09IC0xKQot ICAgICB7Ci0gICAgICAgRlJFRSAob3V0cHV0KTsKLSAgICAgICByZXR1cm4gKGVycm5vKTsKLUBA IC01MTMsNyArNTIwLDcgQEAgbW1hcF9lcnJvcjoKLSAjZWxzZQotICAgICBpZiAod3JpdGUgKGZp bGUsIGJ1ZmZlciwgYnVmZmVyX3NpemUpIDwgMCkKLSAgICAgICBydiA9IGVycm5vOwotLSAgICBm cmVlIChidWZmZXIpOwotKyAgICB4ZnJlZSAoYnVmZmVyKTsKLSAjZW5kaWYKLSAgIH0KLSAKLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2hpc3RsaWIuaAotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9oaXN0bGliLmgJMjAxMS0wNy0w MyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRs aW5lL2hpc3RsaWIuaAkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEs MjMgKzEsMjMgQEAKLSAvKiBoaXN0bGliLmggLS0gaW50ZXJuYWwgZGVmaW5pdGlvbnMgZm9yIHRo ZSBoaXN0b3J5IGxpYnJhcnkuICovCi0tLyogQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkyIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUg R05VIEhpc3RvcnkgTGlicmFyeSAodGhlIExpYnJhcnkpLCBhIHNldCBvZgotKy8qIENvcHlyaWdo dCAoQykgMTk4OS0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRo aXMgZmlsZSBjb250YWlucyB0aGUgR05VIEhpc3RvcnkgTGlicmFyeSAoSGlzdG9yeSksIGEgc2V0 IG9mCi0gICAgcm91dGluZXMgZm9yIG1hbmFnaW5nIHRoZSB0ZXh0IG9mIHByZXZpb3VzbHkgdHlw ZWQgbGluZXMuCi0gCi0tICAgVGhlIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIEhpc3RvcnkgaXMgZnJlZSBzb2Z0d2Fy ZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3Ig KGF0IHlvdXIgb3B0aW9uKQotLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0r ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgTGlicmFy eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQK LS0gICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZSBHTlUKLS0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0tCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVu IHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGlu IGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhh dmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx IFVTQS4gKi8KLSsgICBIaXN0b3J5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25n IHdpdGggSGlzdG9yeS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KLSsqLwotIAotICNpZiAhZGVmaW5lZCAoX0hJU1RMSUJfSF8pCi0gI2RlZmluZSBfSElTVExJ Ql9IXwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvaGlzdG9yeS5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2hpc3RvcnkuYwky MDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3 MDMvcmVhZGxpbmUvaGlzdG9yeS5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAw Ci1AQCAtMSwyNCArMSwyMyBAQAotIC8qIGhpc3RvcnkuYyAtLSBzdGFuZGFsb25lIGhpc3Rvcnkg bGlicmFyeSAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk4OS0yMDA1IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk4OS0yMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgR05VIEhp c3RvcnkgTGlicmFyeSAodGhlIExpYnJhcnkpLCBhIHNldCBvZgotKyAgIFRoaXMgZmlsZSBjb250 YWlucyB0aGUgR05VIEhpc3RvcnkgTGlicmFyeSAoSGlzdG9yeSksIGEgc2V0IG9mCi0gICAgcm91 dGluZXMgZm9yIG1hbmFnaW5nIHRoZSB0ZXh0IG9mIHByZXZpb3VzbHkgdHlwZWQgbGluZXMuCi0g Ci0tICAgVGhlIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyAgIEhpc3RvcnkgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0 aW9uKQotLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgTGlicmFyeSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLS0gICBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUKLS0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0t Ci0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0 aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxs ZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9m IHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAg IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsg ICBIaXN0b3J5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggSGlzdG9y eS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAot IC8qIFRoZSBnb2FsIGlzIHRvIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIHRyYW5zcGFyZW50LCBz byB0aGF0IHlvdQotICAgIGRvbid0IGhhdmUgdG8ga25vdyB3aGF0IGRhdGEgdHlwZXMgYXJlIHVz ZWQsIGp1c3Qgd2hhdCBmdW5jdGlvbnMKLUBAIC0xNTgsNyArMTU3LDcgQEAgaGlzdG9yeV9zZXRf cG9zIChwb3MpCi0gICByZXR1cm4gKDEpOwotIH0KLSAgCi0tLyogUmV0dXJuIHRoZSBjdXJyZW50 IGhpc3RvcnkgYXJyYXkuICBUaGUgY2FsbGVyIGhhcyB0byBiZSBjYXJlZnVsbCwgc2luY2UgdGhp cwotKy8qIFJldHVybiB0aGUgY3VycmVudCBoaXN0b3J5IGFycmF5LiAgVGhlIGNhbGxlciBoYXMg dG8gYmUgY2FyZWZ1bCwgc2luY2UgdGhpcwotICAgIGlzIHRoZSBhY3R1YWwgYXJyYXkgb2YgZGF0 YSwgYW5kIGNvdWxkIGJlIGJhc2hlZCBvciBtYWRlIGNvcnJ1cHQgZWFzaWx5LgotICAgIFRoZSBh cnJheSBpcyB0ZXJtaW5hdGVkIHdpdGggYSBOVUxMIHBvaW50ZXIuICovCi0gSElTVF9FTlRSWSAq KgotQEAgLTIwOSw2ICsyMDgsMjIgQEAgaGlzdG9yeV9nZXQgKG9mZnNldCkKLSAJCTogdGhlX2hp c3RvcnlbbG9jYWxfaW5kZXhdOwotIH0KLSAKLStISVNUX0VOVFJZICoKLSthbGxvY19oaXN0b3J5 X2VudHJ5IChzdHJpbmcsIHRzKQotKyAgICAgY2hhciAqc3RyaW5nOwotKyAgICAgY2hhciAqdHM7 Ci0rewotKyAgSElTVF9FTlRSWSAqdGVtcDsKLSsKLSsgIHRlbXAgPSAoSElTVF9FTlRSWSAqKXht YWxsb2MgKHNpemVvZiAoSElTVF9FTlRSWSkpOwotKwotKyAgdGVtcC0+bGluZSA9IHN0cmluZyA/ IHNhdmVzdHJpbmcgKHN0cmluZykgOiBzdHJpbmc7Ci0rICB0ZW1wLT5kYXRhID0gKGNoYXIgKilO VUxMOwotKyAgdGVtcC0+dGltZXN0YW1wID0gdHM7Ci0rCi0rICByZXR1cm4gdGVtcDsKLSt9Ci0r Ci0gdGltZV90Ci0gaGlzdG9yeV9nZXRfdGltZSAoaGlzdCkKLSAgICAgIEhJU1RfRU5UUlkgKmhp c3Q7Ci1AQCAtMjkwLDExICszMDUsNyBAQCBhZGRfaGlzdG9yeSAoc3RyaW5nKQotIAl9Ci0gICAg IH0KLSAKLS0gIHRlbXAgPSAoSElTVF9FTlRSWSAqKXhtYWxsb2MgKHNpemVvZiAoSElTVF9FTlRS WSkpOwotLSAgdGVtcC0+bGluZSA9IHNhdmVzdHJpbmcgKHN0cmluZyk7Ci0tICB0ZW1wLT5kYXRh ID0gKGNoYXIgKilOVUxMOwotLQotLSAgdGVtcC0+dGltZXN0YW1wID0gaGlzdF9pbml0dGltZSAo KTsKLSsgIHRlbXAgPSBhbGxvY19oaXN0b3J5X2VudHJ5IChzdHJpbmcsIGhpc3RfaW5pdHRpbWUg KCkpOwotIAotICAgdGhlX2hpc3RvcnlbaGlzdG9yeV9sZW5ndGhdID0gKEhJU1RfRU5UUlkgKilO VUxMOwotICAgdGhlX2hpc3RvcnlbaGlzdG9yeV9sZW5ndGggLSAxXSA9IHRlbXA7Ci1AQCAtMzA3 LDYgKzMxOCw4IEBAIGFkZF9oaXN0b3J5X3RpbWUgKHN0cmluZykKLSB7Ci0gICBISVNUX0VOVFJZ ICpoczsKLSAKLSsgIGlmIChzdHJpbmcgPT0gMCkKLSsgICAgcmV0dXJuOwotICAgaHMgPSB0aGVf aGlzdG9yeVtoaXN0b3J5X2xlbmd0aCAtIDFdOwotICAgRlJFRSAoaHMtPnRpbWVzdGFtcCk7Ci0g ICBocy0+dGltZXN0YW1wID0gc2F2ZXN0cmluZyAoc3RyaW5nKTsKLUBAIC0zMjUsOSArMzM4LDI5 IEBAIGZyZWVfaGlzdG9yeV9lbnRyeSAoaGlzdCkKLSAgIEZSRUUgKGhpc3QtPmxpbmUpOwotICAg RlJFRSAoaGlzdC0+dGltZXN0YW1wKTsKLSAgIHggPSBoaXN0LT5kYXRhOwotLSAgZnJlZSAoaGlz dCk7Ci0rICB4ZnJlZSAoaGlzdCk7Ci0gICByZXR1cm4gKHgpOwotIH0KLSsKLStISVNUX0VOVFJZ ICoKLStjb3B5X2hpc3RvcnlfZW50cnkgKGhpc3QpCi0rICAgICBISVNUX0VOVFJZICpoaXN0Owot K3sKLSsgIEhJU1RfRU5UUlkgKnJldDsKLSsgIGNoYXIgKnRzOwotKwotKyAgaWYgKGhpc3QgPT0g MCkKLSsgICAgcmV0dXJuIGhpc3Q7Ci0rCi0rICByZXQgPSBhbGxvY19oaXN0b3J5X2VudHJ5ICho aXN0LT5saW5lLCAoY2hhciAqKU5VTEwpOwotKwotKyAgdHMgPSBoaXN0LT50aW1lc3RhbXAgPyBz YXZlc3RyaW5nIChoaXN0LT50aW1lc3RhbXApIDogaGlzdC0+dGltZXN0YW1wOwotKyAgcmV0LT50 aW1lc3RhbXAgPSB0czsKLSsKLSsgIHJldC0+ZGF0YSA9IGhpc3QtPmRhdGE7Ci0rCi0rICByZXR1 cm4gcmV0OwotK30KLSAgIAotIC8qIE1ha2UgdGhlIGhpc3RvcnkgZW50cnkgYXQgV0hJQ0ggaGF2 ZSBMSU5FIGFuZCBEQVRBLiAgVGhpcyByZXR1cm5zCi0gICAgdGhlIG9sZCBlbnRyeSBzbyB5b3Ug Y2FuIGRpc3Bvc2Ugb2YgdGhlIGRhdGEuICBJbiB0aGUgY2FzZSBvZiBhbgotQEAgLTM1NCw2ICsz ODcsNTEgQEAgcmVwbGFjZV9oaXN0b3J5X2VudHJ5ICh3aGljaCwgbGluZSwgZGF0YQotICAgcmV0 dXJuIChvbGRfdmFsdWUpOwotIH0KLSAKLSsvKiBSZXBsYWNlIHRoZSBEQVRBIGluIHRoZSBzcGVj aWZpZWQgaGlzdG9yeSBlbnRyaWVzLCByZXBsYWNpbmcgT0xEIHdpdGgKLSsgICBORVcuICBXSElD SCBzYXlzIHdoaWNoIG9uZShzKSB0byByZXBsYWNlOiAgV0hJQ0ggPT0gLTEgbWVhbnMgdG8gcmVw bGFjZQotKyAgIGFsbCBvZiB0aGUgaGlzdG9yeSBlbnRyaWVzIHdoZXJlIGVudHJ5LT5kYXRhID09 IE9MRDsgV0hJQ0ggPT0gLTIgbWVhbnMKLSsgICB0byByZXBsYWNlIHRoZSBgbmV3ZXN0JyBoaXN0 b3J5IGVudHJ5IHdoZXJlIGVudHJ5LT5kYXRhID09IE9MRDsgYW5kCi0rICAgV0hJQ0ggPj0gMCBt ZWFucyB0byByZXBsYWNlIHRoYXQgcGFydGljdWxhciBoaXN0b3J5IGVudHJ5J3MgZGF0YSwgYXMK LSsgICBsb25nIGFzIGl0IG1hdGNoZXMgT0xELiAqLwotK3ZvaWQKLStyZXBsYWNlX2hpc3Rvcnlf ZGF0YSAod2hpY2gsb2xkLCBuZXcpCi0rICAgICBpbnQgd2hpY2g7Ci0rICAgICBoaXN0ZGF0YV90 ICpvbGQsICpuZXc7Ci0rewotKyAgSElTVF9FTlRSWSAqZW50cnk7Ci0rICByZWdpc3RlciBpbnQg aSwgbGFzdDsKLSsKLSsgIGlmICh3aGljaCA8IC0yIHx8IHdoaWNoID49IGhpc3RvcnlfbGVuZ3Ro IHx8IGhpc3RvcnlfbGVuZ3RoID09IDAgfHwgdGhlX2hpc3RvcnkgPT0gMCkKLSsgICAgcmV0dXJu OwotKwotKyAgaWYgKHdoaWNoID49IDApCi0rICAgIHsKLSsgICAgICBlbnRyeSA9IHRoZV9oaXN0 b3J5W3doaWNoXTsKLSsgICAgICBpZiAoZW50cnkgJiYgZW50cnktPmRhdGEgPT0gb2xkKQotKwll bnRyeS0+ZGF0YSA9IG5ldzsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIGxhc3QgPSAt MTsKLSsgIGZvciAoaSA9IDA7IGkgPCBoaXN0b3J5X2xlbmd0aDsgaSsrKQotKyAgICB7Ci0rICAg ICAgZW50cnkgPSB0aGVfaGlzdG9yeVtpXTsKLSsgICAgICBpZiAoZW50cnkgPT0gMCkKLSsJY29u dGludWU7Ci0rICAgICAgaWYgKGVudHJ5LT5kYXRhID09IG9sZCkKLSsJewotKwkgIGxhc3QgPSBp OwotKwkgIGlmICh3aGljaCA9PSAtMSkKLSsJICAgIGVudHJ5LT5kYXRhID0gbmV3OwotKwl9Ci0r ICAgIH0KLSsgIGlmICh3aGljaCA9PSAtMiAmJiBsYXN0ID49IDApCi0rICAgIHsKLSsgICAgICBl bnRyeSA9IHRoZV9oaXN0b3J5W2xhc3RdOwotKyAgICAgIGVudHJ5LT5kYXRhID0gbmV3OwkvKiBY WFggLSB3ZSBkb24ndCBjaGVjayBlbnRyeS0+b2xkICovCi0rICAgIH0KLSt9ICAgICAgCi0rICAK LSAvKiBSZW1vdmUgaGlzdG9yeSBlbGVtZW50IFdISUNIIGZyb20gdGhlIGhpc3RvcnkuICBUaGUg cmVtb3ZlZAotICAgIGVsZW1lbnQgaXMgcmV0dXJuZWQgdG8geW91IHNvIHlvdSBjYW4gZnJlZSB0 aGUgbGluZSwgZGF0YSwKLSAgICBhbmQgY29udGFpbmluZyBzdHJ1Y3R1cmUuICovCi1AQCAtNDA2 LDcgKzQ4NCw3IEBAIHN0aWZsZV9oaXN0b3J5IChtYXgpCi0gCi0gLyogU3RvcCBzdGlmbGluZyB0 aGUgaGlzdG9yeS4gIFRoaXMgcmV0dXJucyB0aGUgcHJldmlvdXMgbWF4aW11bQotICAgIG51bWJl ciBvZiBoaXN0b3J5IGVudHJpZXMuICBUaGUgdmFsdWUgaXMgcG9zaXRpdmUgaWYgdGhlIGhpc3Rv cnkKLS0gICB3YXMgc3RpZmxlZCwgIG5lZ2F0aXZlIGlmIGl0IHdhc24ndC4gKi8KLSsgICB3YXMg c3RpZmxlZCwgbmVnYXRpdmUgaWYgaXQgd2Fzbid0LiAqLwotIGludAotIHVuc3RpZmxlX2hpc3Rv cnkgKCkKLSB7Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9oaXN0b3J5LmgK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvaGlzdG9y eS5oCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4y MDExMDcwMy9yZWFkbGluZS9oaXN0b3J5LmgJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAg KzAyMDAKLUBAIC0xLDIzICsxLDIzIEBACi0gLyogaGlzdG9yeS5oIC0tIHRoZSBuYW1lcyBvZiBm dW5jdGlvbnMgdGhhdCB5b3UgY2FuIGNhbGwgaW4gaGlzdG9yeS4gKi8KLS0vKiBDb3B5cmlnaHQg KEMpIDE5ODktMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlz IGZpbGUgY29udGFpbnMgdGhlIEdOVSBIaXN0b3J5IExpYnJhcnkgKHRoZSBMaWJyYXJ5KSwgYSBz ZXQgb2YKLSsvKiBDb3B5cmlnaHQgKEMpIDE5ODktMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIEdOVSBIaXN0b3J5IExpYnJh cnkgKEhpc3RvcnkpLCBhIHNldCBvZgotICAgIHJvdXRpbmVzIGZvciBtYW5hZ2luZyB0aGUgdGV4 dCBvZiBwcmV2aW91c2x5IHR5cGVkIGxpbmVzLgotIAotLSAgIFRoZSBMaWJyYXJ5IGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBIaXN0 b3J5IGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0gICBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0gCi0tICAgVGhlIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwgYnV0Ci0tICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBp cyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElm IHlvdSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMz MCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAgSGlzdG9yeSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIEhpc3RvcnkuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSAKLSAjaWZuZGVmIF9ISVNUT1JZX0hfCi0gI2Rl ZmluZSBfSElTVE9SWV9IXwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvaGlz dHNlYXJjaC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRs aW5lL2hpc3RzZWFyY2guYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvaGlzdHNlYXJjaC5jCTIwMTEtMDctMDMgMTA6 NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyNCArMSwyMyBAQAotIC8qIGhpc3RzZWFyY2gu YyAtLSBzZWFyY2hpbmcgdGhlIGhpc3RvcnkgbGlzdC4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMp IDE5ODksIDE5OTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0 IChDKSAxOTg5LCAxOTkyLTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0t ICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBHTlUgSGlzdG9yeSBMaWJyYXJ5ICh0aGUgTGlicmFy eSksIGEgc2V0IG9mCi0rICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBHTlUgSGlzdG9yeSBMaWJy YXJ5IChIaXN0b3J5KSwgYSBzZXQgb2YKLSAgICByb3V0aW5lcyBmb3IgbWFuYWdpbmcgdGhlIHRl eHQgb2YgcHJldmlvdXNseSB0eXBlZCBsaW5lcy4KLSAKLS0gICBUaGUgTGlicmFyeSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgSGlz dG9yeSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0gICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tICAgYW55IGxhdGVyIHZlcnNp b24uCi0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgotIAotLSAgIFRoZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsIGJ1dAotLSAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotLSAgIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0KLS0gICBUaGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0tICAg aXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJ ZiB5b3UgZG8gbm90Ci0tICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAz MzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIEhpc3RvcnkgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBIaXN0b3J5LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0gI2RlZmluZSBSRUFETElORV9MSUJSQVJZ Ci0gCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9pbnB1dC5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL2lucHV0LmMJMjAxMS0w Ny0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3Jl YWRsaW5lL2lucHV0LmMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0x LDI0ICsxLDI0IEBACi0gLyogaW5wdXQuYyAtLSBjaGFyYWN0ZXIgaW5wdXQgZnVuY3Rpb25zIGZv ciByZWFkbGluZS4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5OTQtMjAwNSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDE5OTQtMjAxMCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg R05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKLS0gICByZWFkaW5nIGxpbmVzIG9m IHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotKyAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBh IGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUg aW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0gICBUaGUgR05VIFJlYWRsaW5l IExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKLS0gICBh bmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0t ICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgUmVhZGxpbmUg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBz aGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBh IGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0gICBoYXZl IGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBV U0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0rCi0gI2RlZmluZSBSRUFE TElORV9MSUJSQVJZCi0gCi0gI2lmIGRlZmluZWQgKF9fVEFOREVNKQotQEAgLTQ1LDE0ICs0NSw3 IEBACi0gIyAgaW5jbHVkZSAiYW5zaV9zdGRsaWIuaCIKLSAjZW5kaWYgLyogSEFWRV9TVERMSUJf SCAqLwotIAotLSNpZiBkZWZpbmVkIChIQVZFX1NFTEVDVCkKLS0jICBpZiAhZGVmaW5lZCAoSEFW RV9TWVNfU0VMRUNUX0gpIHx8ICFkZWZpbmVkIChNX1VOSVgpCi0tIyAgICBpbmNsdWRlIDxzeXMv dGltZS5oPgotLSMgIGVuZGlmCi0tI2VuZGlmIC8qIEhBVkVfU0VMRUNUICovCi0tI2lmIGRlZmlu ZWQgKEhBVkVfU1lTX1NFTEVDVF9IKQotLSMgIGluY2x1ZGUgPHN5cy9zZWxlY3QuaD4KLS0jZW5k aWYKLSsjaW5jbHVkZSAicG9zaXhzZWxlY3QuaCIKLSAKLSAjaWYgZGVmaW5lZCAoRklPTlJFQURf SU5fU1lTX0lPQ1RMKQotICMgIGluY2x1ZGUgPHN5cy9pb2N0bC5oPgotQEAgLTEzMyw4ICsxMjYs MTEgQEAgcmxfZ2V0X2NoYXIgKGtleSkKLSAgICAgcmV0dXJuICgwKTsKLSAKLSAgICprZXkgPSBp YnVmZmVyW3BvcF9pbmRleCsrXTsKLS0KLSsjaWYgMAotICAgaWYgKHBvcF9pbmRleCA+PSBpYnVm ZmVyX2xlbikKLSsjZWxzZQotKyAgaWYgKHBvcF9pbmRleCA+IGlidWZmZXJfbGVuKQotKyNlbmRp ZgotICAgICBwb3BfaW5kZXggPSAwOwotIAotICAgcmV0dXJuICgxKTsKLUBAIC0xNTEsNyArMTQ3 LDcgQEAgX3JsX3VuZ2V0X2NoYXIgKGtleSkKLSAgICAgewotICAgICAgIHBvcF9pbmRleC0tOwot ICAgICAgIGlmIChwb3BfaW5kZXggPCAwKQotLQlwb3BfaW5kZXggPSBpYnVmZmVyX2xlbiAtIDE7 Ci0rCXBvcF9pbmRleCA9IGlidWZmZXJfbGVuOwotICAgICAgIGlidWZmZXJbcG9wX2luZGV4XSA9 IGtleTsKLSAgICAgICByZXR1cm4gKDEpOwotICAgICB9Ci1AQCAtMTc5LDYgKzE3NSw3IEBAIHJs X2dhdGhlcl90eWkgKCkKLSAgIHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7Ci0gI2VuZGlmCi0gCi0r ICBjaGFyc19hdmFpbCA9IDA7Ci0gICB0dHkgPSBmaWxlbm8gKHJsX2luc3RyZWFtKTsKLSAKLSAj aWYgZGVmaW5lZCAoSEFWRV9TRUxFQ1QpCi1AQCAtMTg2LDggKzE4Myw3IEBAIHJsX2dhdGhlcl90 eWkgKCkKLSAgIEZEX1pFUk8gKCZleGNlcHRmZHMpOwotICAgRkRfU0VUICh0dHksICZyZWFkZmRz KTsKLSAgIEZEX1NFVCAodHR5LCAmZXhjZXB0ZmRzKTsKLS0gIHRpbWVvdXQudHZfc2VjID0gMDsK LS0gIHRpbWVvdXQudHZfdXNlYyA9IF9rZXlib2FyZF9pbnB1dF90aW1lb3V0OwotKyAgVVNFQ19U T19USU1FVkFMIChfa2V5Ym9hcmRfaW5wdXRfdGltZW91dCwgdGltZW91dCk7Ci0gICByZXN1bHQg PSBzZWxlY3QgKHR0eSArIDEsICZyZWFkZmRzLCAoZmRfc2V0ICopTlVMTCwgJmV4Y2VwdGZkcywg JnRpbWVvdXQpOwotICAgaWYgKHJlc3VsdCA8PSAwKQotICAgICByZXR1cm4gMDsJLyogTm90aGlu ZyB0byByZWFkLiAqLwotQEAgLTIyMSwxMyArMjE3LDEwIEBAIHJsX2dhdGhlcl90eWkgKCkKLSAj ZW5kaWYgLyogT19OREVMQVkgKi8KLSAKLSAjaWYgZGVmaW5lZCAoX19NSU5HVzMyX18pCi0tICAv KiBXZSB1c2UgZ2V0Y2ggdG8gcmVhZCBjb25zb2xlIGlucHV0LCBzbyB1c2UgdGhlIHNhbWUKLS0g ICAgIG1lY2hhbmlzbSB0byBjaGVjayBmb3IgbW9yZS4gIE90aGVyd2lzZSwgd2UgZG9uJ3Qga25v dy4gICovCi0tICBpZiAoaXNhdHR5IChmaWxlbm8gKHJsX2luc3RyZWFtKSkpCi0tICAgIGNoYXJz X2F2YWlsID0gX2tiaGl0ICgpOwotLSAgZWxzZQotLSAgICBjaGFyc19hdmFpbCA9IDA7Ci0tICBy ZXN1bHQgPSAwOwotKyAgLyogVXNlIGdldGNoL19rYmhpdCB0byBjaGVjayBmb3IgYXZhaWxhYmxl IGNvbnNvbGUgaW5wdXQsIGluIHRoZSBzYW1lIHdheQotKyAgICAgdGhhdCB3ZSByZWFkIGl0IG5v cm1hbGx5LiAqLwotKyAgIGNoYXJzX2F2YWlsID0gaXNhdHR5ICh0dHkpID8gX2tiaGl0ICgpIDog MDsKLSsgICByZXN1bHQgPSAwOwotICNlbmRpZgotIAotICAgLyogSWYgdGhlcmUncyBub3RoaW5n IGF2YWlsYWJsZSwgZG9uJ3Qgd2FzdGUgdGltZSB0cnlpbmcgdG8gcmVhZAotQEAgLTI1MSw4ICsy NDQsMTAgQEAgcmxfZ2F0aGVyX3R5aSAoKQotICAgICB7Ci0gICAgICAgd2hpbGUgKGNoYXJzX2F2 YWlsLS0pCi0gCXsKLSsJICBSTF9DSEVDS19TSUdOQUxTICgpOwotIAkgIGsgPSAoKnJsX2dldGNf ZnVuY3Rpb24pIChybF9pbnN0cmVhbSk7Ci0tCSAgcmxfc3R1ZmZfY2hhciAoayk7Ci0rCSAgaWYg KHJsX3N0dWZmX2NoYXIgKGspID09IDApCi0rCSAgICBicmVhazsJCQkvKiBzb21lIHByb2JsZW07 IG5vIG1vcmUgcm9vbSAqLwotIAkgIGlmIChrID09IE5FV0xJTkUgfHwgayA9PSBSRVRVUk4pCi0g CSAgICBicmVhazsKLSAJfQotQEAgLTI3Myw3ICsyNjgsNyBAQCBybF9zZXRfa2V5Ym9hcmRfaW5w dXRfdGltZW91dCAodSkKLSAgIGludCBvOwotIAotICAgbyA9IF9rZXlib2FyZF9pbnB1dF90aW1l b3V0OwotLSAgaWYgKHUgPiAwKQotKyAgaWYgKHUgPj0gMCkKLSAgICAgX2tleWJvYXJkX2lucHV0 X3RpbWVvdXQgPSB1OwotICAgcmV0dXJuIChvKTsKLSB9Ci1AQCAtMzE2LDEwICszMTEsOCBAQCBf cmxfaW5wdXRfYXZhaWxhYmxlICgpCi0gI2VuZGlmCi0gCi0gI2lmIGRlZmluZWQgKF9fTUlOR1cz Ml9fKQotLSAgLyogV2UgdXNlIGdldGNoIHRvIHJlYWQgY29uc29sZSBpbnB1dCwgc28gdXNlIHRo ZSBzYW1lCi0tICAgICBtZWNoYW5pc20gdG8gY2hlY2sgZm9yIG1vcmUuICBPdGhlcndpc2UsIHdl IGRvbid0IGtub3cuICAqLwotLSAgaWYgKGlzYXR0eSAoZmlsZW5vIChybF9pbnN0cmVhbSkpKQot LSAgICByZXR1cm4gX2tiaGl0ICgpOwotKyAgaWYgKGlzYXR0eSAodHR5KSkKLSsgICAgcmV0dXJu IChfa2JoaXQgKCkpOwotICNlbmRpZgotIAotICAgcmV0dXJuIDA7Ci1AQCAtMzU4LDcgKzM1MSw3 IEBAIF9ybF9pbnNlcnRfdHlwZWluIChjKQotIAotICAgc3RyaW5nW2ldID0gJ1wwJzsKLSAgIHJs X2luc2VydF90ZXh0IChzdHJpbmcpOwotLSAgZnJlZSAoc3RyaW5nKTsKLSsgIHhmcmVlIChzdHJp bmcpOwotIH0KLSAKLSAvKiBBZGQgS0VZIHRvIHRoZSBidWZmZXIgb2YgY2hhcmFjdGVycyB0byBi ZSByZWFkLiAgUmV0dXJucyAxIGlmIHRoZQotQEAgLTM3Nyw3ICszNzAsMTEgQEAgcmxfc3R1ZmZf Y2hhciAoa2V5KQotICAgICAgIFJMX1NFVFNUQVRFIChSTF9TVEFURV9JTlBVVFBFTkRJTkcpOwot ICAgICB9Ci0gICBpYnVmZmVyW3B1c2hfaW5kZXgrK10gPSBrZXk7Ci0rI2lmIDAKLSAgIGlmIChw dXNoX2luZGV4ID49IGlidWZmZXJfbGVuKQotKyNlbHNlCi0rICBpZiAocHVzaF9pbmRleCA+IGli dWZmZXJfbGVuKQotKyNlbmRpZgotICAgICBwdXNoX2luZGV4ID0gMDsKLSAKLSAgIHJldHVybiAx OwotQEAgLTQzMCwyMiArNDI3LDI2IEBAIHJsX3JlYWRfa2V5ICgpCi0gICAgICAgLyogSWYgdGhl IHVzZXIgaGFzIGFuIGV2ZW50IGZ1bmN0aW9uLCB0aGVuIGNhbGwgaXQgcGVyaW9kaWNhbGx5LiAq LwotICAgICAgIGlmIChybF9ldmVudF9ob29rKQotIAl7Ci0tCSAgd2hpbGUgKHJsX2V2ZW50X2hv b2sgJiYgcmxfZ2V0X2NoYXIgKCZjKSA9PSAwKQotKwkgIHdoaWxlIChybF9ldmVudF9ob29rKQot IAkgICAgewotLQkgICAgICAoKnJsX2V2ZW50X2hvb2spICgpOwotLQkgICAgICBpZiAocmxfZG9u ZSkJCS8qIFhYWCAtIGV4cGVyaW1lbnRhbCAqLwotLQkJcmV0dXJuICgnXG4nKTsKLSAJICAgICAg aWYgKHJsX2dhdGhlcl90eWkgKCkgPCAwKQkvKiBYWFggLSBFSU8gKi8KLSAJCXsKLSAJCSAgcmxf ZG9uZSA9IDE7Ci0gCQkgIHJldHVybiAoJ1xuJyk7Ci0gCQl9Ci0rCSAgICAgIFJMX0NIRUNLX1NJ R05BTFMgKCk7Ci0rCSAgICAgIGlmIChybF9nZXRfY2hhciAoJmMpICE9IDApCi0rCQlicmVhazsK LSsJICAgICAgaWYgKHJsX2RvbmUpCQkvKiBYWFggLSBleHBlcmltZW50YWwgKi8KLSsJCXJldHVy biAoJ1xuJyk7Ci0rCSAgICAgICgqcmxfZXZlbnRfaG9vaykgKCk7Ci0gCSAgICB9Ci0gCX0KLSAg ICAgICBlbHNlCi0gCXsKLSAJICBpZiAocmxfZ2V0X2NoYXIgKCZjKSA9PSAwKQotIAkgICAgYyA9 ICgqcmxfZ2V0Y19mdW5jdGlvbikgKHJsX2luc3RyZWFtKTsKLSsJICBSTF9DSEVDS19TSUdOQUxT ICgpOwotIAl9Ci0gICAgIH0KLSAKLUBAIC00NjEsNiArNDYyLDggQEAgcmxfZ2V0YyAoc3RyZWFt KQotIAotICAgd2hpbGUgKDEpCi0gICAgIHsKLSsgICAgICBSTF9DSEVDS19TSUdOQUxTICgpOwot KwotICNpZiBkZWZpbmVkIChfX01JTkdXMzJfXykKLSAgICAgICBpZiAoaXNhdHR5IChmaWxlbm8g KHN0cmVhbSkpKQotIAlyZXR1cm4gKGdldGNoICgpKTsKLUBAIC01MDYsNyArNTA5LDcgQEAgcmxf Z2V0YyAoc3RyZWFtKQotIAkgdGhpcyBpcyBzaW1wbHkgYW4gaW50ZXJydXB0ZWQgc3lzdGVtIGNh bGwgdG8gcmVhZCAoKS4KLSAJIE90aGVyd2lzZSwgc29tZSBlcnJvciBvY3VycmVkLCBhbHNvIHNp Z25pZnlpbmcgRU9GLiAqLwotICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikKLS0JcmV0dXJuIChF T0YpOwotKwlyZXR1cm4gKFJMX0lTU1RBVEUgKFJMX1NUQVRFX1JFQURDTUQpID8gUkVBREVSUiA6 IEVPRik7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtNTE3LDIwICs1MjAsMjYgQEAgX3JsX3JlYWRfbWJj aGFyIChtYmNoYXIsIHNpemUpCi0gICAgICBjaGFyICptYmNoYXI7Ci0gICAgICBpbnQgc2l6ZTsK LSB7Ci0tICBpbnQgbWJfbGVuID0gMDsKLSsgIGludCBtYl9sZW4sIGM7Ci0gICBzaXplX3QgbWJj aGFyX2J5dGVzX2xlbmd0aDsKLSAgIHdjaGFyX3Qgd2M7Ci0gICBtYnN0YXRlX3QgcHMsIHBzX2Jh Y2s7Ci0gCi0gICBtZW1zZXQoJnBzLCAwLCBzaXplb2YgKG1ic3RhdGVfdCkpOwotICAgbWVtc2V0 KCZwc19iYWNrLCAwLCBzaXplb2YgKG1ic3RhdGVfdCkpOwotLSAgCi0rCi0rICBtYl9sZW4gPSAw OyAgCi0gICB3aGlsZSAobWJfbGVuIDwgc2l6ZSkKLSAgICAgewotICAgICAgIFJMX1NFVFNUQVRF KFJMX1NUQVRFX01PUkVJTlBVVCk7Ci0tICAgICAgbWJjaGFyW21iX2xlbisrXSA9IHJsX3JlYWRf a2V5ICgpOwotKyAgICAgIGMgPSBybF9yZWFkX2tleSAoKTsKLSAgICAgICBSTF9VTlNFVFNUQVRF KFJMX1NUQVRFX01PUkVJTlBVVCk7Ci0gCi0rICAgICAgaWYgKGMgPCAwKQotKwlicmVhazsKLSsK LSsgICAgICBtYmNoYXJbbWJfbGVuKytdID0gYzsKLSsKLSAgICAgICBtYmNoYXJfYnl0ZXNfbGVu Z3RoID0gbWJydG93YyAoJndjLCBtYmNoYXIsIG1iX2xlbiwgJnBzKTsKLSAgICAgICBpZiAobWJj aGFyX2J5dGVzX2xlbmd0aCA9PSAoc2l6ZV90KSgtMSkpCi0gCWJyZWFrOwkJLyogaW52YWxpZCBi eXRlIHNlcXVlbmNlIGZvciB0aGUgY3VycmVudCBsb2NhbGUgKi8KLUBAIC01NTQsMjEgKzU2Mywy MSBAQCBfcmxfcmVhZF9tYmNoYXIgKG1iY2hhciwgc2l6ZSkKLSB9Ci0gCi0gLyogUmVhZCBhIG11 bHRpYnl0ZS1jaGFyYWN0ZXIgc3RyaW5nIHdob3NlIGZpcnN0IGNoYXJhY3RlciBpcyBGSVJTVCBp bnRvCi0tICAgdGhlIGJ1ZmZlciBNQiBvZiBsZW5ndGggTUJMRU4uICBSZXR1cm5zIHRoZSBsYXN0 IGNoYXJhY3RlciByZWFkLCB3aGljaAotKyAgIHRoZSBidWZmZXIgTUIgb2YgbGVuZ3RoIE1MRU4u ICBSZXR1cm5zIHRoZSBsYXN0IGNoYXJhY3RlciByZWFkLCB3aGljaAotICAgIG1heSBiZSBGSVJT VC4gIFVzZWQgYnkgdGhlIHNlYXJjaCBmdW5jdGlvbnMsIGFtb25nIG90aGVycy4gIFZlcnkgc2lt aWxhcgotICAgIHRvIF9ybF9yZWFkX21iY2hhci4gKi8KLSBpbnQKLS1fcmxfcmVhZF9tYnN0cmlu ZyAoZmlyc3QsIG1iLCBtYmxlbikKLStfcmxfcmVhZF9tYnN0cmluZyAoZmlyc3QsIG1iLCBtbGVu KQotICAgICAgaW50IGZpcnN0OwotICAgICAgY2hhciAqbWI7Ci0tICAgICBpbnQgbWJsZW47Ci0r ICAgICBpbnQgbWxlbjsKLSB7Ci0gICBpbnQgaSwgYzsKLSAgIG1ic3RhdGVfdCBwczsKLSAKLSAg IGMgPSBmaXJzdDsKLS0gIG1lbXNldCAobWIsIDAsIG1ibGVuKTsKLS0gIGZvciAoaSA9IDA7IGkg PCBtYmxlbjsgaSsrKQotKyAgbWVtc2V0IChtYiwgMCwgbWxlbik7Ci0rICBmb3IgKGkgPSAwOyBj ID49IDAgJiYgaSA8IG1sZW47IGkrKykKLSAgICAgewotICAgICAgIG1iW2ldID0gKGNoYXIpYzsK LSAgICAgICBtZW1zZXQgKCZwcywgMCwgc2l6ZW9mIChtYnN0YXRlX3QpKTsKLUluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2lzZWFyY2guYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9pc2VhcmNoLmMJMjAxMS0wNy0wMyAxMDo0MDo1 My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2lzZWFy Y2guYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjkgKzEsMzAg QEAKLSsvKiBpc2VhcmNoLmMgLSBpbmNyZW1lbnRhbCBzZWFyY2hpbmcgKi8KLSsKLSAvKiAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqICovCi0gLyoJCQkJCQkJCSAgICAqLwotIC8qCQkJSS1TZWFyY2ggYW5kIFNlYXJjaGluZwkJ CSAgICAqLwotIC8qCQkJCQkJCQkgICAgKi8KLSAvKiAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0gCi0tLyogQ29weXJp Z2h0IChDKSAxOTg3LTIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29w eXJpZ2h0IChDKSAxOTg3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0t ICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBSZWFkbGluZSBMaWJyYXJ5ICh0aGUgTGlicmFyeSks IGEgc2V0IG9mCi0tICAgcm91dGluZXMgZm9yIHByb3ZpZGluZyBFbWFjcyBzdHlsZSBsaW5lIGlu cHV0IHRvIHByb2dyYW1zIHRoYXQgYXNrCi0tICAgZm9yIGl0LgotKyAgIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsg ICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhp c3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0gICBUaGUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgUmVhZGxpbmUgaXMg ZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsg ICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRs aW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0g Ci0tICAgVGhlIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwgYnV0Ci0tICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBn ZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlv dSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwg Qm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0gI2RlZmluZSBSRUFETElORV9MSUJSQVJZCi0gCi0g I2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCi1AQCAtNjgsMTQgKzY5LDE0IEBAIHN0YXRpYyB2 b2lkIF9ybF9pc2VhcmNoX2ZpbmkgUEFSQU1TKChfcmwKLSBzdGF0aWMgaW50IF9ybF9pc2VhcmNo X2NsZWFudXAgUEFSQU1TKChfcmxfc2VhcmNoX2N4dCAqLCBpbnQpKTsKLSAKLSAvKiBMYXN0IGxp bmUgZm91bmQgYnkgdGhlIGN1cnJlbnQgaW5jcmVtZW50YWwgc2VhcmNoLCBzbyB3ZSBkb24ndCBg ZmluZCcKLS0gICBpZGVudGljYWwgbGluZXMgbWFueSB0aW1lcyBpbiBhIHJvdy4gKi8KLS1zdGF0 aWMgY2hhciAqcHJldl9saW5lX2ZvdW5kOwotKyAgIGlkZW50aWNhbCBsaW5lcyBtYW55IHRpbWVz IGluIGEgcm93LiAgTm93IHBhcnQgb2YgaXNlYXJjaCBjb250ZXh0LiAqLwotKy8qIHN0YXRpYyBj aGFyICpwcmV2X2xpbmVfZm91bmQ7ICovCi0gCi0gLyogTGFzdCBzZWFyY2ggc3RyaW5nIGFuZCBp dHMgbGVuZ3RoLiAqLwotIHN0YXRpYyBjaGFyICpsYXN0X2lzZWFyY2hfc3RyaW5nOwotIHN0YXRp YyBpbnQgbGFzdF9pc2VhcmNoX3N0cmluZ19sZW47Ci0gCi0tc3RhdGljIGNoYXIgKmRlZmF1bHRf aXNlYXJjaF90ZXJtaW5hdG9ycyA9ICJcMDMzXDAxMiI7Ci0rc3RhdGljIGNoYXIgKiBjb25zdCBk ZWZhdWx0X2lzZWFyY2hfdGVybWluYXRvcnMgPSAiXDAzM1wwMTIiOwotIAotIF9ybF9zZWFyY2hf Y3h0ICoKLSBfcmxfc2N4dF9hbGxvYyAodHlwZSwgZmxhZ3MpCi1AQCAtMTAzLDYgKzEwNCw5IEBA IF9ybF9zY3h0X2FsbG9jICh0eXBlLCBmbGFncykKLSAKLSAgIGN4dC0+c2F2ZV91bmRvX2xpc3Qg PSAwOwotIAotKyAgY3h0LT5rZXltYXAgPSBfcmxfa2V5bWFwOwotKyAgY3h0LT5va2V5bWFwID0g X3JsX2tleW1hcDsKLSsKLSAgIGN4dC0+aGlzdG9yeV9wb3MgPSAwOwotICAgY3h0LT5kaXJlY3Rp b24gPSAwOwotIAotQEAgLTEyNSw3ICsxMjksNyBAQCBfcmxfc2N4dF9kaXNwb3NlIChjeHQsIGZs YWdzKQotICAgRlJFRSAoY3h0LT5hbGxvY2F0ZWRfbGluZSk7Ci0gICBGUkVFIChjeHQtPmxpbmVz KTsKLSAKLS0gIGZyZWUgKGN4dCk7Ci0rICB4ZnJlZSAoY3h0KTsKLSB9Ci0gCi0gLyogU2VhcmNo IGJhY2t3YXJkcyB0aHJvdWdoIHRoZSBoaXN0b3J5IGxvb2tpbmcgZm9yIGEgc3RyaW5nIHdoaWNo IGlzIHR5cGVkCi1AQCAtMTkyLDcgKzE5Niw3IEBAIHJsX2Rpc3BsYXlfc2VhcmNoIChzZWFyY2hf c3RyaW5nLCByZXZlcnMKLSAgIHN0cmNweSAobWVzc2FnZSArIG1zZ2xlbiwgIic6ICIpOwotIAot ICAgcmxfbWVzc2FnZSAoIiVzIiwgbWVzc2FnZSk7Ci0tICBmcmVlIChtZXNzYWdlKTsKLSsgIHhm cmVlIChtZXNzYWdlKTsKLSAgICgqcmxfcmVkaXNwbGF5X2Z1bmN0aW9uKSAoKTsKLSB9Ci0gCi1A QCAtMzI3LDExICszMzEsMzAgQEAgX3JsX2lzZWFyY2hfZGlzcGF0Y2ggKGN4dCwgYykKLSAgIHJs X2NvbW1hbmRfZnVuY190ICpmOwotIAotICAgZiA9IChybF9jb21tYW5kX2Z1bmNfdCAqKU5VTEw7 Ci0tIAotLSAvKiBUcmFuc2xhdGUgdGhlIGtleXMgd2UgZG8gc29tZXRoaW5nIHdpdGggdG8gb3Bj b2Rlcy4gKi8KLS0gIGlmIChjID49IDAgJiYgX3JsX2tleW1hcFtjXS50eXBlID09IElTRlVOQykK LSsKLSsgIGlmIChjIDwgMCkKLSAgICAgewotLSAgICAgIGYgPSBfcmxfa2V5bWFwW2NdLmZ1bmN0 aW9uOwotKyAgICAgIGN4dC0+c2ZsYWdzIHw9IFNGX0ZBSUxFRDsKLSsgICAgICBjeHQtPmhpc3Rv cnlfcG9zID0gY3h0LT5sYXN0X2ZvdW5kX2xpbmU7Ci0rICAgICAgcmV0dXJuIC0xOwotKyAgICB9 Ci0rCi0rICAvKiBJZiB3ZSBhcmUgbW92aW5nIGludG8gYSBuZXcga2V5bWFwLCBtb2RpZnkgY3h0 LT5rZXltYXAgYW5kIGdvIG9uLgotKyAgICAgVGhpcyBjYW4gYmUgYSBwcm9ibGVtIGlmIGMgPT0g RVNDIGFuZCB3ZSB3YW50IHRvIHRlcm1pbmF0ZSB0aGUKLSsgICAgIGluY3JlbWVudGFsIHNlYXJj aCwgc28gd2UgY2hlY2sgKi8KLSsgIGlmIChjID49IDAgJiYgY3h0LT5rZXltYXBbY10udHlwZSA9 PSBJU0tNQVAgJiYgc3RyY2hyIChjeHQtPnNlYXJjaF90ZXJtaW5hdG9ycywgY3h0LT5sYXN0Yykg PT0gMCkKLSsgICAgewotKyAgICAgIGN4dC0+a2V5bWFwID0gRlVOQ1RJT05fVE9fS0VZTUFQIChj eHQtPmtleW1hcCwgYyk7Ci0rICAgICAgY3h0LT5zZmxhZ3MgfD0gU0ZfQ0hHS01BUDsKLSsgICAg ICAvKiBYWFggLSB3ZSBzaG91bGQgcHJvYmFibHkgc2F2ZSB0aGlzIHNlcXVlbmNlLCBzbyB3ZSBj YW4gZG8KLSsJIHNvbWV0aGluZyB1c2VmdWwgaWYgdGhpcyBkb2Vzbid0IGVuZCB1cCBtYXBwaW5n IHRvIGEgY29tbWFuZC4gKi8KLSsgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgLyogVHJh bnNsYXRlIHRoZSBrZXlzIHdlIGRvIHNvbWV0aGluZyB3aXRoIHRvIG9wY29kZXMuICovCi0rICBp ZiAoYyA+PSAwICYmIGN4dC0+a2V5bWFwW2NdLnR5cGUgPT0gSVNGVU5DKQotKyAgICB7Ci0rICAg ICAgZiA9IGN4dC0+a2V5bWFwW2NdLmZ1bmN0aW9uOwotIAotICAgICAgIGlmIChmID09IHJsX3Jl dmVyc2Vfc2VhcmNoX2hpc3RvcnkpCi0gCWN4dC0+bGFzdGMgPSAoY3h0LT5zZmxhZ3MgJiBTRl9S RVZFUlNFKSA/IC0xIDogLTI7Ci1AQCAtMzM5LDE5ICszNjIsMjcgQEAgX3JsX2lzZWFyY2hfZGlz cGF0Y2ggKGN4dCwgYykKLSAJY3h0LT5sYXN0YyA9IChjeHQtPnNmbGFncyAmIFNGX1JFVkVSU0Up ID8gLTIgOiAtMTsKLSAgICAgICBlbHNlIGlmIChmID09IHJsX3J1Ym91dCkKLSAJY3h0LT5sYXN0 YyA9IC0zOwotLSAgICAgIGVsc2UgaWYgKGMgPT0gQ1RSTCAoJ0cnKSkKLSsgICAgICBlbHNlIGlm IChjID09IENUUkwgKCdHJykgfHwgZiA9PSBybF9hYm9ydCkKLSAJY3h0LT5sYXN0YyA9IC00Owot LSAgICAgIGVsc2UgaWYgKGMgPT0gQ1RSTCAoJ1cnKSkJLyogWFhYICovCi0rICAgICAgZWxzZSBp ZiAoYyA9PSBDVFJMICgnVycpIHx8IGYgPT0gcmxfdW5peF93b3JkX3J1Ym91dCkJLyogWFhYICov Ci0gCWN4dC0+bGFzdGMgPSAtNTsKLS0gICAgICBlbHNlIGlmIChjID09IENUUkwgKCdZJykpCS8q IFhYWCAqLwotKyAgICAgIGVsc2UgaWYgKGMgPT0gQ1RSTCAoJ1knKSB8fCBmID09IHJsX3lhbmsp CS8qIFhYWCAqLwotIAljeHQtPmxhc3RjID0gLTY7Ci0gICAgIH0KLSAKLSsgIC8qIElmIHdlIGNo YW5nZWQgdGhlIGtleW1hcCBlYXJsaWVyIHdoaWxlIHRyYW5zbGF0aW5nIGEga2V5IHNlcXVlbmNl IGludG8KLSsgICAgIGEgY29tbWFuZCwgcmVzdG9yZSBpdCBub3cgdGhhdCB3ZSd2ZSBzdWNjZWVk ZWQuICovCi0rICBpZiAoY3h0LT5zZmxhZ3MgJiBTRl9DSEdLTUFQKQotKyAgICB7Ci0rICAgICAg Y3h0LT5rZXltYXAgPSBjeHQtPm9rZXltYXA7Ci0rICAgICAgY3h0LT5zZmxhZ3MgJj0gflNGX0NI R0tNQVA7Ci0rICAgIH0KLSsKLSAgIC8qIFRoZSBjaGFyYWN0ZXJzIGluIGlzZWFyY2hfdGVybWlu YXRvcnMgKHNldCBmcm9tIHRoZSB1c2VyLXNldHRhYmxlCi0gICAgICB2YXJpYWJsZSBpc2VhcmNo LXRlcm1pbmF0b3JzKSBhcmUgdXNlZCB0byB0ZXJtaW5hdGUgdGhlIHNlYXJjaCBidXQKLSAgICAg IG5vdCBzdWJzZXF1ZW50bHkgZXhlY3V0ZSB0aGUgY2hhcmFjdGVyIGFzIGEgY29tbWFuZC4gIFRo ZSBkZWZhdWx0Ci0gICAgICB2YWx1ZSBpcyAiXDAzM1wwMTIiIChFU0MgYW5kIEMtSikuICovCi0t ICBpZiAoc3RyY2hyIChjeHQtPnNlYXJjaF90ZXJtaW5hdG9ycywgY3h0LT5sYXN0YykpCi0rICBp ZiAoY3h0LT5sYXN0YyA+IDAgJiYgc3RyY2hyIChjeHQtPnNlYXJjaF90ZXJtaW5hdG9ycywgY3h0 LT5sYXN0YykpCi0gICAgIHsKLSAgICAgICAvKiBFU0Mgc3RpbGwgdGVybWluYXRlcyB0aGUgc2Vh cmNoLCBidXQgaWYgdGhlcmUgaXMgcGVuZGluZwotIAkgaW5wdXQgb3IgaWYgaW5wdXQgYXJyaXZl cyB3aXRoaW4gMC4xIHNlY29uZHMgKG9uIHN5c3RlbXMKLUBAIC0zNzUsNyArNDA2LDcgQEAgX3Js X2lzZWFyY2hfZGlzcGF0Y2ggKGN4dCwgYykKLSAgICAgewotICAgICAgIGlmIChjeHQtPmxhc3Rj ID49IDAgJiYgKGN4dC0+bWJbMF0gJiYgY3h0LT5tYlsxXSA9PSAnXDAnKSAmJiBFTkRTUkNIX0NI QVIgKGN4dC0+bGFzdGMpKQotIAl7Ci0tCSAgLyogVGhpcyBzZXRzIHJsX3BlbmRpbmdfaW5wdXQg dG8gYzsgaXQgd2lsbCBiZSBwaWNrZWQgdXAgdGhlIG5leHQKLSsJICAvKiBUaGlzIHNldHMgcmxf cGVuZGluZ19pbnB1dCB0byBMQVNUQzsgaXQgd2lsbCBiZSBwaWNrZWQgdXAgdGhlIG5leHQKLSAJ ICAgICB0aW1lIHJsX3JlYWRfa2V5IGlzIGNhbGxlZC4gKi8KLSAJICBybF9leGVjdXRlX25leHQg KGN4dC0+bGFzdGMpOwotIAkgIHJldHVybiAoMCk7Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9yZWFkbGluZS9rZXltYXBzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAz Lm9yaWcvcmVhZGxpbmUva2V5bWFwcy5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9rZXltYXBzLmMJMjAxMS0wNy0w MyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDIzICsxLDI0IEBACi0gLyoga2V5bWFw cy5jIC0tIEZ1bmN0aW9ucyBhbmQga2V5bWFwcyBmb3IgdGhlIEdOVSBSZWFkbGluZSBsaWJyYXJ5 LiAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk4OCwxOTg5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk4OCwxOTg5LTIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIFJlYWRs aW5lLCBhIGxpYnJhcnkgZm9yIHJlYWRpbmcgbGluZXMKLS0gICBvZiB0ZXh0IHdpdGggaW50ZXJh Y3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9y IHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5 IGVkaXRpbmcuICAgICAgCi0gCi0tICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotLSAgIHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotLSAg IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIg b3B0aW9uKSBhbnkKLS0gICBsYXRlciB2ZXJzaW9uLgotLQotLSAgIFJlYWRsaW5lIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotLSAgIFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0g ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVQotLSAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAot ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCBSZWFkbGluZTsgc2VlIHRoZSBmaWxlIENPUFlJ TkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0tICAgU29mdHdhcmUgRm91bmRhdGlvbiwg NTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwotKyAg IGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCi0rKi8KLSsKLSAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVm aW5lZCAoSEFWRV9DT05GSUdfSCkKLUBAIC01Niw4ICs1Nyw5IEBAIEtleW1hcAotIHJsX21ha2Vf YmFyZV9rZXltYXAgKCkKLSB7Ci0gICByZWdpc3RlciBpbnQgaTsKLS0gIEtleW1hcCBrZXltYXAg PSAoS2V5bWFwKXhtYWxsb2MgKEtFWU1BUF9TSVpFICogc2l6ZW9mIChLRVlNQVBfRU5UUlkpKTsK LSsgIEtleW1hcCBrZXltYXA7Ci0gCi0rICBrZXltYXAgPSAoS2V5bWFwKXhtYWxsb2MgKEtFWU1B UF9TSVpFICogc2l6ZW9mIChLRVlNQVBfRU5UUlkpKTsKLSAgIGZvciAoaSA9IDA7IGkgPCBLRVlN QVBfU0laRTsgaSsrKQotICAgICB7Ci0gICAgICAga2V5bWFwW2ldLnR5cGUgPSBJU0ZVTkM7Ci1A QCAtNzUsNyArNzcsOCBAQCBybF9tYWtlX2JhcmVfa2V5bWFwICgpCi0gICByZXR1cm4gKGtleW1h cCk7Ci0gfQotIAotLS8qIFJldHVybiBhIG5ldyBrZXltYXAgd2hpY2ggaXMgYSBjb3B5IG9mIE1B UC4gKi8KLSsvKiBSZXR1cm4gYSBuZXcga2V5bWFwIHdoaWNoIGlzIGEgY29weSBvZiBNQVAuICBK dXN0IGNvcGllcyBwb2ludGVycywgZG9lcwotKyAgIG5vdCBjb3B5IHRleHQgb2YgbWFjcm9zIG9y IGRlc2NlbmQgaW50byBjaGlsZCBrZXltYXBzLiAqLwotIEtleW1hcAotIHJsX2NvcHlfa2V5bWFw IChtYXApCi0gICAgICBLZXltYXAgbWFwOwotQEAgLTEyNyw3ICsxMzAsNyBAQCBybF9kaXNjYXJk X2tleW1hcCAobWFwKQotIHsKLSAgIGludCBpOwotIAotLSAgaWYgKCFtYXApCi0rICBpZiAobWFw ID09IDApCi0gICAgIHJldHVybjsKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCBLRVlNQVBfU0laRTsg aSsrKQotQEAgLTEzOSwxMSArMTQyLDIxIEBAIHJsX2Rpc2NhcmRfa2V5bWFwIChtYXApCi0gCi0g CWNhc2UgSVNLTUFQOgotIAkgIHJsX2Rpc2NhcmRfa2V5bWFwICgoS2V5bWFwKW1hcFtpXS5mdW5j dGlvbik7Ci0rCSAgeGZyZWUgKChjaGFyICopbWFwW2ldLmZ1bmN0aW9uKTsKLSAJICBicmVhazsK LSAKLSAJY2FzZSBJU01BQ1I6Ci0tCSAgZnJlZSAoKGNoYXIgKiltYXBbaV0uZnVuY3Rpb24pOwot KwkgIHhmcmVlICgoY2hhciAqKW1hcFtpXS5mdW5jdGlvbik7Ci0gCSAgYnJlYWs7Ci0gCX0KLSAg ICAgfQotIH0KLSsKLSsvKiBDb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGRpc2NhcmRzLCB0aGVu IGZyZWVzLCBNQVAuICovCi0rdm9pZAotK3JsX2ZyZWVfa2V5bWFwIChtYXApCi0rICAgICBLZXlt YXAgbWFwOwotK3sKLSsgIHJsX2Rpc2NhcmRfa2V5bWFwIChtYXApOwotKyAgeGZyZWUgKChjaGFy ICopbWFwKTsKLSt9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9rZXltYXBz LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUva2V5 bWFwcy5oCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45 MC4yMDExMDcwMy9yZWFkbGluZS9rZXltYXBzLmgJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAw MDAgKzAyMDAKLUBAIC0yLDIzICsyLDIyIEBACi0gCi0gLyogQ29weXJpZ2h0IChDKSAxOTg3LCAx OTg5LCAxOTkyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAg IHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5 IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJy YXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQg d2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAg IFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlz IGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdl bmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91 IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBC b3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVh ZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8K LSAKLSAjaWZuZGVmIF9LRVlNQVBTX0hfCi0gI2RlZmluZSBfS0VZTUFQU19IXwotQEAgLTUzLDEx ICs1Miw2IEBAIHR5cGVkZWYgc3RydWN0IF9rZXltYXBfZW50cnkgewotICNkZWZpbmUgS0VZTUFQ X1NJWkUgMjU3Ci0gI2RlZmluZSBBTllPVEhFUktFWSBLRVlNQVBfU0laRS0xCi0gCi0tLyogSSB3 YW50ZWQgdG8gbWFrZSB0aGUgYWJvdmUgc3RydWN0dXJlIGNvbnRhaW4gYSB1bmlvbiBvZjoKLS0g ICB1bmlvbiB7IHJsX2NvbW1hbmRfZnVuY190ICpmdW5jdGlvbjsgc3RydWN0IF9rZXltYXBfZW50 cnkgKmtleW1hcDsgfSB2YWx1ZTsKLS0gICBidXQgdGhpcyBtYWRlIGl0IGltcG9zc2libGUgZm9y IG1lIHRvIGNyZWF0ZSBhIHN0YXRpYyBhcnJheS4KLS0gICBNYXliZSBJIG5lZWQgQyBsZXNzb25z LiAqLwotLQotIHR5cGVkZWYgS0VZTUFQX0VOVFJZIEtFWU1BUF9FTlRSWV9BUlJBWVtLRVlNQVBf U0laRV07Ci0gdHlwZWRlZiBLRVlNQVBfRU5UUlkgKktleW1hcDsKLSAKLUluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL3JlYWRsaW5lL2tpbGwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAu MjAxMTA3MDMub3JpZy9yZWFkbGluZS9raWxsLmMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL2tpbGwuYwkyMDExLTA3 LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTIsMjMgKzIsMjMgQEAKLSAKLSAvKiBD b3B5cmlnaHQgKEMpIDE5OTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkg Zm9yCi0tICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5k IGhpc3RvcnkgZWRpdGluZy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRs aW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJlYWRpbmcgbGluZXMg b2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAg Ci0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0Ci0tICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCi0rICAgUmVh ZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSAgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKLS0gICB1c2VmdWwsIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5Ci0t ICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBUaGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0t ICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0Uu ICBJZiB5b3UgZG8gbm90Ci0tICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0 ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcg d2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KLSsqLwotKwotICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQotIAotICNpZiBkZWZpbmVkIChI QVZFX0NPTkZJR19IKQotQEAgLTExNSw3ICsxMTUsNyBAQCBfcmxfY29weV90b19raWxsX3Jpbmcg KHRleHQsIGFwcGVuZCkKLSAJICBpZiAoc2xvdCA9PSBybF9tYXhfa2lsbHMpCi0gCSAgICB7Ci0g CSAgICAgIHJlZ2lzdGVyIGludCBpOwotLQkgICAgICBmcmVlIChybF9raWxsX3JpbmdbMF0pOwot KwkgICAgICB4ZnJlZSAocmxfa2lsbF9yaW5nWzBdKTsKLSAJICAgICAgZm9yIChpID0gMDsgaSA8 IHNsb3Q7IGkrKykKLSAJCXJsX2tpbGxfcmluZ1tpXSA9IHJsX2tpbGxfcmluZ1tpICsgMV07Ci0g CSAgICB9Ci1AQCAtMTQ2LDggKzE0Niw4IEBAIF9ybF9jb3B5X3RvX2tpbGxfcmluZyAodGV4dCwg YXBwZW5kKQotIAkgIHN0cmNweSAobmV3LCB0ZXh0KTsKLSAJICBzdHJjYXQgKG5ldywgb2xkKTsK LSAJfQotLSAgICAgIGZyZWUgKG9sZCk7Ci0tICAgICAgZnJlZSAodGV4dCk7Ci0rICAgICAgeGZy ZWUgKG9sZCk7Ci0rICAgICAgeGZyZWUgKHRleHQpOwotICAgICAgIHJsX2tpbGxfcmluZ1tzbG90 XSA9IG5ldzsKLSAgICAgfQotICAgZWxzZQotQEAgLTU4Miw2ICs1ODIsNyBAQCBybF95YW5rX250 aF9hcmdfaW50ZXJuYWwgKGNvdW50LCBpZ25vcmUsCi0gICBpZiAoIWFyZyB8fCAhKmFyZykKLSAg ICAgewotICAgICAgIHJsX2RpbmcgKCk7Ci0rICAgICAgRlJFRSAoYXJnKTsKLSAgICAgICByZXR1 cm4gLTE7Ci0gICAgIH0KLSAKLUBAIC02MDAsNyArNjAxLDcgQEAgcmxfeWFua19udGhfYXJnX2lu dGVybmFsIChjb3VudCwgaWdub3JlLAotICNlbmRpZiAvKiBWSV9NT0RFICovCi0gCi0gICBybF9p bnNlcnRfdGV4dCAoYXJnKTsKLS0gIGZyZWUgKGFyZyk7Ci0rICB4ZnJlZSAoYXJnKTsKLSAKLSAg IHJsX2VuZF91bmRvX2dyb3VwICgpOwotICAgcmV0dXJuIDA7Ci1AQCAtNjM5LDcgKzY0MCw3IEBA IHJsX3lhbmtfbGFzdF9hcmcgKGNvdW50LCBrZXkpCi0gICAgIHsKLSAgICAgICBpZiAodW5kb19u ZWVkZWQpCi0gCXJsX2RvX3VuZG8gKCk7Ci0tICAgICAgaWYgKGNvdW50IDwgMSkKLSsgICAgICBp ZiAoY291bnQgPCAwKQkJLyogWFhYIC0gd2FzIDwgMSAqLwotICAgICAgICAgZGlyZWN0aW9uID0g LWRpcmVjdGlvbjsKLSAgICAgICBoaXN0b3J5X3NraXAgKz0gZGlyZWN0aW9uOwotICAgICAgIGlm IChoaXN0b3J5X3NraXAgPCAwKQotQEAgLTY4NSw3ICs2ODYsNyBAQCBybF9wYXN0ZV9mcm9tX2Ns aXBib2FyZCAoY291bnQsIGtleSkKLSAgICAgICBfcmxfc2V0X21hcmtfYXRfcG9zIChybF9wb2lu dCk7Ci0gICAgICAgcmxfaW5zZXJ0X3RleHQgKHB0cik7Ci0gICAgICAgaWYgKHB0ciAhPSBkYXRh KQotLQlmcmVlIChwdHIpOwotKwl4ZnJlZSAocHRyKTsKLSAgICAgICBDbG9zZUNsaXBib2FyZCAo KTsKLSAgICAgfQotICAgcmV0dXJuICgwKTsKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3Jl YWRsaW5lL21hY3JvLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcv cmVhZGxpbmUvbWFjcm8uYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvbWFjcm8uYwkyMDExLTA3LTAzIDEwOjQxOjIx LjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjQgQEAKLSAvKiBtYWNyby5jIC0tIGtleWJv YXJkIG1hY3JvcyBmb3IgcmVhZGxpbmUuICovCi0gCi0tLyogQ29weXJpZ2h0IChDKSAxOTk0IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk5NC0yMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcg bGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcu Ci0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFk bGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRl cmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAgIFRoZSBHTlUg UmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29m dHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBS ZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlz IG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBr ZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAot LSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1B IDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSsKLSAjZGVm aW5lIFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKLUBA IC0xMTMsNyArMTEzLDcgQEAgX3JsX25leHRfbWFjcm9fa2V5ICgpCi0gCi0gI2lmIGRlZmluZWQg KFJFQURMSU5FX0NBTExCQUNLUykKLSAgIGMgPSBybF9leGVjdXRpbmdfbWFjcm9bZXhlY3V0aW5n X21hY3JvX2luZGV4KytdOwotLSAgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSAm JiBSTF9JU1NUQVRFIChSTF9TVEFURV9SRUFEQ01EKSAmJiBybF9leGVjdXRpbmdfbWFjcm9bZXhl Y3V0aW5nX21hY3JvX2luZGV4XSA9PSAwKQotKyAgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NB TExCQUNLKSAmJiBSTF9JU1NUQVRFIChSTF9TVEFURV9SRUFEQ01EfFJMX1NUQVRFX01PUkVJTlBV VCkgJiYgcmxfZXhlY3V0aW5nX21hY3JvW2V4ZWN1dGluZ19tYWNyb19pbmRleF0gPT0gMCkKLSAg ICAgICBfcmxfcG9wX2V4ZWN1dGluZ19tYWNybyAoKTsKLSAgIHJldHVybiBjOwotICNlbHNlCi1A QCAtMTUyLDcgKzE1Miw3IEBAIF9ybF9wb3BfZXhlY3V0aW5nX21hY3JvICgpCi0gICAgICAgcmxf ZXhlY3V0aW5nX21hY3JvID0gbWFjcm9fbGlzdC0+c3RyaW5nOwotICAgICAgIGV4ZWN1dGluZ19t YWNyb19pbmRleCA9IG1hY3JvX2xpc3QtPnNpbmRleDsKLSAgICAgICBtYWNyb19saXN0ID0gbWFj cm9fbGlzdC0+bmV4dDsKLS0gICAgICBmcmVlIChtYWNybyk7Ci0rICAgICAgeGZyZWUgKG1hY3Jv KTsKLSAgICAgfQotIAotICAgaWYgKHJsX2V4ZWN1dGluZ19tYWNybyA9PSAwKQotQEAgLTE4MSw3 ICsxODEsNyBAQCBfcmxfa2lsbF9rYmRfbWFjcm8gKCkKLSB7Ci0gICBpZiAoY3VycmVudF9tYWNy bykKLSAgICAgewotLSAgICAgIGZyZWUgKGN1cnJlbnRfbWFjcm8pOwotKyAgICAgIHhmcmVlIChj dXJyZW50X21hY3JvKTsKLSAgICAgICBjdXJyZW50X21hY3JvID0gKGNoYXIgKikgTlVMTDsKLSAg ICAgfQotICAgY3VycmVudF9tYWNyb19zaXplID0gY3VycmVudF9tYWNyb19pbmRleCA9IDA7Ci1J bmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9tYnV0aWwuYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9tYnV0aWwuYwkyMDExLTA3LTAz IDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxp bmUvbWJ1dGlsLmMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDI0 ICsxLDI0IEBACi0gLyogbWJ1dGlsLmMgLS0gcmVhZGxpbmUgbXVsdGlieXRlIGNoYXJhY3RlciB1 dGlsaXR5IGZ1bmN0aW9ucyAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMjAwMS0yMDA1IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMjAwMS0yMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcgbGlu ZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0r ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGlu ZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFj dGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAgIFRoZSBHTlUgUmVh ZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAot LSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdh cmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFk bGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9m dGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0 IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAg IGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSsKLSAjZGVmaW5l IFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKLUBAIC03 Nyw3ICs3Nyw3IEBAIF9ybF9maW5kX25leHRfbWJjaGFyX2ludGVybmFsIChzdHJpbmcsIHMKLSAg ICAgIGNoYXIgKnN0cmluZzsKLSAgICAgIGludCBzZWVkLCBjb3VudCwgZmluZF9ub25femVybzsK LSB7Ci0tICBzaXplX3QgdG1wOwotKyAgc2l6ZV90IHRtcCwgbGVuOwotICAgbWJzdGF0ZV90IHBz OwotICAgaW50IHBvaW50OwotICAgd2NoYXJfdCB3YzsKLUBAIC05MSwxNyArOTEsMjEgQEAgX3Js X2ZpbmRfbmV4dF9tYmNoYXJfaW50ZXJuYWwgKHN0cmluZywgcwotICAgICByZXR1cm4gc2VlZDsK LSAKLSAgIHBvaW50ID0gc2VlZCArIF9ybF9hZGp1c3RfcG9pbnQgKHN0cmluZywgc2VlZCwgJnBz KTsKLS0gIC8qIGlmIHRoaXMgaXMgdHJ1ZSwgbWVhbnMgdGhhdCBzZWVkIHdhcyBub3QgcG9pbnRl ZCBjaGFyYWN0ZXIKLS0gICAgIHN0YXJ0ZWQgYnl0ZS4gIFNvIGNvcnJlY3QgdGhlIHBvaW50IGFu ZCBjb25zdW1lIGNvdW50ICovCi0rICAvKiBpZiB0aGlzIGlzIHRydWUsIG1lYW5zIHRoYXQgc2Vl ZCB3YXMgbm90IHBvaW50aW5nIHRvIGEgYnl0ZSBpbmRpY2F0aW5nCi0rICAgICB0aGUgYmVnaW5u aW5nIG9mIGEgbXVsdGlieXRlIGNoYXJhY3Rlci4gIENvcnJlY3QgdGhlIHBvaW50IGFuZCBjb25z dW1lCi0rICAgICBvbmUgY2hhci4gKi8KLSAgIGlmIChzZWVkIDwgcG9pbnQpCi0gICAgIGNvdW50 LS07Ci0gCi0gICB3aGlsZSAoY291bnQgPiAwKSAgCi0gICAgIHsKLS0gICAgICB0bXAgPSBtYnJ0 b3djICgmd2MsIHN0cmluZytwb2ludCwgc3RybGVuKHN0cmluZyArIHBvaW50KSwgJnBzKTsKLSsg ICAgICBsZW4gPSBzdHJsZW4gKHN0cmluZyArIHBvaW50KTsKLSsgICAgICBpZiAobGVuID09IDAp Ci0rCWJyZWFrOwotKyAgICAgIHRtcCA9IG1icnRvd2MgKCZ3Yywgc3RyaW5nK3BvaW50LCBsZW4s ICZwcyk7Ci0gICAgICAgaWYgKE1CX0lOVkFMSURDSCAoKHNpemVfdCl0bXApKQotIAl7Ci0tCSAg LyogaW52YWxpZCBieXRlcy4gYXN1bWUgYSBieXRlIHJlcHJlc2VudHMgYSBjaGFyYWN0ZXIgKi8K LSsJICAvKiBpbnZhbGlkIGJ5dGVzLiBhc3N1bWUgYSBieXRlIHJlcHJlc2VudHMgYSBjaGFyYWN0 ZXIgKi8KLSAJICBwb2ludCsrOwotIAkgIGNvdW50LS07Ci0gCSAgLyogcmVzZXQgc3RhdGVzLiAq LwotQEAgLTEyOCwxMiArMTMyLDEwIEBAIF9ybF9maW5kX25leHRfbWJjaGFyX2ludGVybmFsIChz dHJpbmcsIHMKLSAgIGlmIChmaW5kX25vbl96ZXJvKQotICAgICB7Ci0gICAgICAgdG1wID0gbWJy dG93YyAoJndjLCBzdHJpbmcgKyBwb2ludCwgc3RybGVuIChzdHJpbmcgKyBwb2ludCksICZwcyk7 Ci0tICAgICAgd2hpbGUgKHRtcCA+IDAgJiYgd2N3aWR0aCAod2MpID09IDApCi0rICAgICAgd2hp bGUgKE1CX05VTExXQ0ggKHRtcCkgPT0gMCAmJiBNQl9JTlZBTElEQ0ggKHRtcCkgPT0gMCAmJiB3 Y3dpZHRoICh3YykgPT0gMCkKLSAJewotIAkgIHBvaW50ICs9IHRtcDsKLSAJICB0bXAgPSBtYnJ0 b3djICgmd2MsIHN0cmluZyArIHBvaW50LCBzdHJsZW4gKHN0cmluZyArIHBvaW50KSwgJnBzKTsK LS0JICBpZiAoTUJfTlVMTFdDSCAodG1wKSB8fCBNQl9JTlZBTElEQ0ggKHRtcCkpCi0tCSAgICBi cmVhazsKLSAJfQotICAgICB9Ci0gCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGlu ZS9taXNjLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxp bmUvbWlzYy5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDcwMy9yZWFkbGluZS9taXNjLmMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAw MDAgKzAyMDAKLUBAIC0xLDI0ICsxLDI0IEBACi0gLyogbWlzYy5jIC0tIG1pc2NlbGxhbmVvdXMg YmluZGFibGUgcmVhZGxpbmUgZnVuY3Rpb25zLiAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk4 Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykg MTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAg IHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5 IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJy YXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQg d2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAg IFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlz IGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdl bmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91 IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBC b3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVh ZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8K LSsKLSAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9DT05G SUdfSCkKLUBAIC0xNDYsNiArMTQ2LDggQEAgX3JsX2FyZ19kaXNwYXRjaCAoY3h0LCBjKQotIAkg IHJsX3Jlc3RvcmVfcHJvbXB0ICgpOwotIAkgIHJsX2NsZWFyX21lc3NhZ2UgKCk7Ci0gCSAgUkxf VU5TRVRTVEFURShSTF9TVEFURV9OVU1FUklDQVJHKTsKLSsJICBpZiAoa2V5IDwgMCkKLSsJICAg IHJldHVybiAtMTsKLSAJICByZXR1cm4gKF9ybF9kaXNwYXRjaCAoa2V5LCBfcmxfa2V5bWFwKSk7 Ci0gCX0KLSAgICAgfQotQEAgLTIxMiw2ICsyMTQsOCBAQCBybF9kaWdpdF9sb29wICgpCi0gICAg ICAgaWYgKHIgPD0gMCB8fCAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTlVNRVJJQ0FSRykgPT0gMCkp Ci0gICAgICAgICBicmVhazsKLSAgICAgfQotKwotKyAgcmV0dXJuIHI7Ci0gfQotIAotIC8qIENy ZWF0ZSBhIGRlZmF1bHQgYXJndW1lbnQuICovCi1AQCAtMzI0LDcgKzMyOCw3IEBAIF9ybF9mcmVl X2hpc3RvcnlfZW50cnkgKGVudHJ5KQotICAgRlJFRSAoZW50cnktPmxpbmUpOwotICAgRlJFRSAo ZW50cnktPnRpbWVzdGFtcCk7Ci0gCi0tICBmcmVlIChlbnRyeSk7Ci0rICB4ZnJlZSAoZW50cnkp OwotIH0KLSAKLSAvKiBQZXJoYXBzIHB1dCBiYWNrIHRoZSBjdXJyZW50IGxpbmUgaWYgaXQgaGFz IGNoYW5nZWQuICovCi1AQCAtMzM4LDkgKzM0Miw5IEBAIHJsX21heWJlX3JlcGxhY2VfbGluZSAo KQotICAgaWYgKHRlbXAgJiYgKChVTkRPX0xJU1QgKikodGVtcC0+ZGF0YSkgIT0gcmxfdW5kb19s aXN0KSkKLSAgICAgewotICAgICAgIHRlbXAgPSByZXBsYWNlX2hpc3RvcnlfZW50cnkgKHdoZXJl X2hpc3RvcnkgKCksIHJsX2xpbmVfYnVmZmVyLCAoaGlzdGRhdGFfdClybF91bmRvX2xpc3QpOwot LSAgICAgIGZyZWUgKHRlbXAtPmxpbmUpOwotKyAgICAgIHhmcmVlICh0ZW1wLT5saW5lKTsKLSAg ICAgICBGUkVFICh0ZW1wLT50aW1lc3RhbXApOwotLSAgICAgIGZyZWUgKHRlbXApOwotKyAgICAg IHhmcmVlICh0ZW1wKTsKLSAgICAgfQotICAgcmV0dXJuIDA7Ci0gfQotQEAgLTQyNyw2ICs0MzEs NTYgQEAgcmxfcmVwbGFjZV9mcm9tX2hpc3RvcnkgKGVudHJ5LCBmbGFncykKLSAgICAgICBybF9t YXJrID0gcmxfZW5kOwotICAgICB9Ci0gI2VuZGlmCi0rfQotKwotKy8qIFByb2Nlc3MgYW5kIGZy ZWUgdW5kbyBsaXN0cyBhdHRhY2hlZCB0byBlYWNoIGhpc3RvcnkgZW50cnkgcHJpb3IgdG8gdGhl Ci0rICAgY3VycmVudCBlbnRyeSwgaW5jbHVzaXZlLCByZXZlcnRpbmcgZWFjaCBsaW5lIHRvIGl0 cyBzYXZlZCBzdGF0ZS4gIFRoaXMgCi0rICAgaXMgZGVzdHJ1Y3RpdmUsIGFuZCBzdGF0ZSBhYm91 dCB0aGUgY3VycmVudCBsaW5lIGlzIGxvc3QuICBUaGlzIGlzIG5vdAotKyAgIGludGVuZGVkIHRv IGJlIGNhbGxlZCB3aGlsZSBhY3RpdmVseSBlZGl0aW5nLCBhbmQgdGhlIGN1cnJlbnQgbGluZSBp cwotKyAgIG5vdCBhc3N1bWVkIHRvIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgaGlzdG9yeSBsaXN0 LiAqLwotK3ZvaWQKLStfcmxfcmV2ZXJ0X2FsbF9saW5lcyAoKQotK3sKLSsgIGludCBocG9zOwot KyAgSElTVF9FTlRSWSAqZW50cnk7Ci0rICBVTkRPX0xJU1QgKnVsLCAqc2F2ZWRfdW5kb19saXN0 OwotKyAgY2hhciAqbGJ1ZjsKLSsKLSsgIGxidWYgPSBzYXZlc3RyaW5nIChybF9saW5lX2J1ZmZl cik7Ci0rICBzYXZlZF91bmRvX2xpc3QgPSBybF91bmRvX2xpc3Q7Ci0rICBocG9zID0gd2hlcmVf aGlzdG9yeSAoKTsKLSsKLSsgIGVudHJ5ID0gKGhwb3MgPT0gaGlzdG9yeV9sZW5ndGgpID8gcHJl dmlvdXNfaGlzdG9yeSAoKSA6IGN1cnJlbnRfaGlzdG9yeSAoKTsKLSsgIHdoaWxlIChlbnRyeSkK LSsgICAgewotKyAgICAgIGlmICh1bCA9IChVTkRPX0xJU1QgKillbnRyeS0+ZGF0YSkKLSsJewot KwkgIGlmICh1bCA9PSBzYXZlZF91bmRvX2xpc3QpCi0rCSAgICBzYXZlZF91bmRvX2xpc3QgPSAw OwotKwkgIC8qIFNldCB1cCBybF9saW5lX2J1ZmZlciBhbmQgb3RoZXIgdmFyaWFibGVzIGZyb20g aGlzdG9yeSBlbnRyeSAqLwotKwkgIHJsX3JlcGxhY2VfZnJvbV9oaXN0b3J5IChlbnRyeSwgMCk7 CS8qIGVudHJ5LT5saW5lIGlzIG5vdyBjdXJyZW50ICovCi0rCSAgLyogVW5kbyBhbGwgY2hhbmdl cyB0byB0aGlzIGhpc3RvcnkgZW50cnkgKi8KLSsJICB3aGlsZSAocmxfdW5kb19saXN0KQotKwkg ICAgcmxfZG9fdW5kbyAoKTsKLSsJICAvKiBBbmQgY29weSB0aGUgcmV2ZXJ0ZWQgbGluZSBiYWNr IHRvIHRoZSBoaXN0b3J5IGVudHJ5LCBwcmVzZXJ2aW5nCi0rCSAgICAgdGhlIHRpbWVzdGFtcC4g Ki8KLSsJICBGUkVFIChlbnRyeS0+bGluZSk7Ci0rCSAgZW50cnktPmxpbmUgPSBzYXZlc3RyaW5n IChybF9saW5lX2J1ZmZlcik7Ci0rCSAgZW50cnktPmRhdGEgPSAwOwotKwl9Ci0rICAgICAgZW50 cnkgPSBwcmV2aW91c19oaXN0b3J5ICgpOwotKyAgICB9Ci0rCi0rICAvKiBSZXN0b3JlIGhpc3Rv cnkgc3RhdGUgKi8KLSsgIHJsX3VuZG9fbGlzdCA9IHNhdmVkX3VuZG9fbGlzdDsJLyogbWF5IGhh dmUgYmVlbiBzZXQgdG8gbnVsbCAqLwotKyAgaGlzdG9yeV9zZXRfcG9zIChocG9zKTsKLSsgIAot KyAgLyogcmVzZXQgdGhlIGxpbmUgYnVmZmVyICovCi0rICBybF9yZXBsYWNlX2xpbmUgKGxidWYs IDApOwotKyAgX3JsX3NldF90aGVfbGluZSAoKTsKLSsKLSsgIC8qIGFuZCBjbGVhbiB1cCAqLwot KyAgeGZyZWUgKGxidWYpOwotIH0gIAotIAotIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLUBAIC01NTYsNyArNjEw LDcgQEAgcmxfdmlfZWRpdGluZ19tb2RlIChjb3VudCwga2V5KQotICNpZiBkZWZpbmVkIChWSV9N T0RFKQotICAgX3JsX3NldF9pbnNlcnRfbW9kZSAoUkxfSU1fSU5TRVJULCAxKTsJLyogdmkgbW9k ZSBpZ25vcmVzIGluc2VydCBtb2RlICovCi0gICBybF9lZGl0aW5nX21vZGUgPSB2aV9tb2RlOwot LSAgcmxfdmlfaW5zZXJ0aW9uX21vZGUgKDEsIGtleSk7Ci0rICBybF92aV9pbnNlcnRfbW9kZSAo MSwga2V5KTsKLSAjZW5kaWYgLyogVklfTU9ERSAqLwotIAotICAgcmV0dXJuIDA7Ci1JbmRleDog Z2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9ubHMuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9ubHMuYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvbmxzLmMJMjAx MS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDI0ICsxLDI0IEBACi0gLyog bmxzLmMgLS0gc2tlbGV0YWwgaW50ZXJuYXRpb25hbGl6YXRpb24gY29kZS4gKi8KLSAKLS0vKiBD b3B5cmlnaHQgKEMpIDE5OTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29w eXJpZ2h0IChDKSAxOTk2LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0t ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJh cnkgZm9yCi0tICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQg YW5kIGhpc3RvcnkgZWRpdGluZy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJl YWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJlYWRpbmcgbGlu ZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAg ICAgCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0Ci0tICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCi0rICAg UmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSAgICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKLS0gICB1c2VmdWwsIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 Ci0tICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBUaGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5k Ci0tICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VO U0UuICBJZiB5b3UgZG8gbm90Ci0tICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgNTkgVGVtcGxlIFBsYWNlLCBT dWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxv bmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSsqLwotKwotICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQotIAotICNpZiBkZWZpbmVk IChIQVZFX0NPTkZJR19IKQotQEAgLTE0NSw3ICsxNDUsNyBAQCBfcmxfaW5pdF9laWdodGJpdCAo KQotIAlfcmxfb3V0cHV0X21ldGFfY2hhcnMgPSAxOwotIAlicmVhazsKLSAgICAgICB9Ci0tICBm cmVlICh0KTsKLSsgIHhmcmVlICh0KTsKLSAgIHJldHVybiAobGVnYWxfbGFuZ192YWx1ZXNbaV0g PyAxIDogMCk7Ci0gCi0gI2VuZGlmIC8qICFIQVZFX1NFVExPQ0FMRSAqLwotSW5kZXg6IGdkYi03 LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvcGFyZW5zLmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvcGFyZW5zLmMJMjAxMS0wNy0wMyAxMDo0MDo1My4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3BhcmVucy5j CTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyNCArMSwyNCBAQAot LS8qIHBhcmVucy5jIC0tIEltcGxlbWVudGF0aW9uIG9mIG1hdGNoaW5nIHBhcmVudGhlc2VzIGZl YXR1cmUuICovCi0rLyogcGFyZW5zLmMgLS0gaW1wbGVtZW50YXRpb24gb2YgbWF0Y2hpbmcgcGFy ZW50aGVzZXMgZmVhdHVyZS4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5ODcsIDE5ODksIDE5 OTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAxOTg3 LCAxOTg5LCAxOTkyLTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkg Zm9yCi0tICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5k IGhpc3RvcnkgZWRpdGluZy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRs aW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJlYWRpbmcgbGluZXMg b2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAg Ci0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0Ci0tICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCi0rICAgUmVh ZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSAgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKLS0gICB1c2VmdWwsIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5Ci0t ICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBUaGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0t ICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0Uu ICBJZiB5b3UgZG8gbm90Ci0tICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0 ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcg d2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KLSsqLwotKwotICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQotIAotICNpZiBkZWZpbmVkIChf X1RBTkRFTSkKLUBAIC0zOCwxNiArMzgsNyBAQAotICMgIGluY2x1ZGUgPHVuaXN0ZC5oPgotICNl bmRpZgotIAotLSNpZiBkZWZpbmVkIChGRF9TRVQpICYmICFkZWZpbmVkIChIQVZFX1NFTEVDVCkK LS0jICBkZWZpbmUgSEFWRV9TRUxFQ1QKLS0jZW5kaWYKLS0KLS0jaWYgZGVmaW5lZCAoSEFWRV9T RUxFQ1QpCi0tIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KLS0jZW5kaWYgLyogSEFWRV9TRUxFQ1Qg Ki8KLS0jaWYgZGVmaW5lZCAoSEFWRV9TWVNfU0VMRUNUX0gpCi0tIyAgaW5jbHVkZSA8c3lzL3Nl bGVjdC5oPgotLSNlbmRpZgotKyNpbmNsdWRlICJwb3NpeHNlbGVjdC5oIgotIAotICNpZiBkZWZp bmVkIChIQVZFX1NUUklOR19IKQotICMgIGluY2x1ZGUgPHN0cmluZy5oPgotQEAgLTEzMCw4ICsx MjEsNyBAQCBybF9pbnNlcnRfY2xvc2UgKGNvdW50LCBpbnZva2luZ19rZXkpCi0gCi0gICAgICAg RkRfWkVSTyAoJnJlYWRmZHMpOwotICAgICAgIEZEX1NFVCAoZmlsZW5vIChybF9pbnN0cmVhbSks ICZyZWFkZmRzKTsKLS0gICAgICB0aW1lci50dl9zZWMgPSAwOwotLSAgICAgIHRpbWVyLnR2X3Vz ZWMgPSBfcGFyZW5fYmxpbmtfdXNlYzsKLSsgICAgICBVU0VDX1RPX1RJTUVWQUwgKF9wYXJlbl9i bGlua191c2VjLCB0aW1lcik7Ci0gCi0gICAgICAgb3JpZ19wb2ludCA9IHJsX3BvaW50OwotICAg ICAgIHJsX3BvaW50ID0gbWF0Y2hfcG9pbnQ7Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9y ZWFkbGluZS9wYXRjaGxldmVsCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEg MDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGlu ZS9wYXRjaGxldmVsCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMCww ICsxLDMgQEAKLSsjIERvIG5vdCBlZGl0IC0tIGV4aXN0cyBvbmx5IGZvciB1c2UgYnkgcGF0Y2gK LSsKLSsxCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9wb3NpeGRpci5oCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3Bvc2l4ZGly LmgJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIw MTEwNzAzL3JlYWRsaW5lL3Bvc2l4ZGlyLmgJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAg KzAyMDAKLUBAIC00LDE5ICs0LDE5IEBACi0gCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05V IEJhc2gsIHRoZSBCb3VybmUgQWdhaW4gU0hlbGwuCi0gCi0tICAgQmFzaCBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0tICAgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBv ciAoYXQgeW91ciBvcHRpb24pCi0tICAgYW55IGxhdGVyIHZlcnNpb24uCi0tCi0tICAgQmFzaCBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lU SE9VVAotLSAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mIE1FUkNIQU5UQUJJTElUWQotLSAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLS0gICBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rICAgQmFzaCBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgQmFzaCBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0g ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIEJhc2g7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAg SWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotLSAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRl bXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBhbG9u ZyB3aXRoIEJhc2guICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u Ci0rKi8KLSAKLSAvKiBUaGlzIGZpbGUgc2hvdWxkIGJlIGluY2x1ZGVkIGluc3RlYWQgb2YgPGRp cmVudC5oPiBvciA8c3lzL2Rpci5oPi4gKi8KLSAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAz L3JlYWRsaW5lL3Bvc2l4am1wLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAz Lm9yaWcvcmVhZGxpbmUvcG9zaXhqbXAuaAkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvcG9zaXhqbXAuaAkyMDExLTA3 LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTQsMTkgKzQsMTkgQEAKLSAKLSAgICBU aGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgQmFzaCwgdGhlIEJvdXJuZSBBZ2FpbiBTSGVsbC4KLSAK LS0gICBCYXNoIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQKLS0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0gICBhbnkgbGF0ZXIg dmVyc2lvbi4KLS0KLS0gICBCYXNoIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCi0tICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZCi0tICAgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwot LSAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBCYXNoIGlzIGZyZWUgc29mdHdhcmU6 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsK LSsgICBCYXNoIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSAKLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggQmFzaDsg c2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0tICAgU29m dHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg MDIxMTEgVVNBLiAqLwotKyAgIGFsb25nIHdpdGggQmFzaC4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAotICNpZm5kZWYgX1BPU0lYSk1QX0hfCi0g I2RlZmluZSBfUE9TSVhKTVBfSF8KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5l L3Bvc2l4c2VsZWN0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3Bv c2l4c2VsZWN0LmgJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAg KzEsNDcgQEAKLSsvKiBwb3NpeHNlbGVjdC5oIC0tIHdyYXBwZXIgZm9yIHNlbGVjdCgyKSBpbmNs dWRlcyBhbmQgZGVmaW5pdGlvbnMgKi8KLSsKLSsvKiBDb3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05V IEJhc2gsIHRoZSBCb3VybmUgQWdhaW4gU0hlbGwuCi0rCi0rICAgQmFzaCBpcyBmcmVlIHNvZnR3 YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rCi0rICAgQmFzaCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIEJh c2guICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSsK LSsjaWZuZGVmIF9QT1NJWFNFTEVDVF9IXwotKyNkZWZpbmUgX1BPU0lYU0VMRUNUX0hfCi0rCi0r I2lmIGRlZmluZWQgKEZEX1NFVCkgJiYgIWRlZmluZWQgKEhBVkVfU0VMRUNUKQotKyMgIGRlZmlu ZSBIQVZFX1NFTEVDVCAxCi0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQgKEhBVkVfU0VMRUNUKQot KyMgIGlmICFkZWZpbmVkIChIQVZFX1NZU19TRUxFQ1RfSCkgfHwgIWRlZmluZWQgKE1fVU5JWCkK LSsjICAgIGluY2x1ZGUgPHN5cy90aW1lLmg+Ci0rIyAgZW5kaWYKLSsjZW5kaWYgLyogSEFWRV9T RUxFQ1QgKi8KLSsjaWYgZGVmaW5lZCAoSEFWRV9TWVNfU0VMRUNUX0gpCi0rIyAgaW5jbHVkZSA8 c3lzL3NlbGVjdC5oPgotKyNlbmRpZgotKwotKyNpZm5kZWYgVVNFQ19QRVJfU0VDCi0rIyAgZGVm aW5lIFVTRUNfUEVSX1NFQyAxMDAwMDAwCi0rI2VuZGlmCi0rCi0rI2RlZmluZSBVU0VDX1RPX1RJ TUVWQUwodXMsIHR2KSBcCi0rZG8geyBcCi0rICAodHYpLnR2X3NlYyA9ICh1cykgLyBVU0VDX1BF Ul9TRUM7IFwKLSsgICh0dikudHZfdXNlYyA9ICh1cykgJSBVU0VDX1BFUl9TRUM7IFwKLSt9IHdo aWxlICgwKQotKwotKyNlbmRpZiAvKiBfUE9TSVhTRUxFQ1RfSF8gKi8KLUluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL3JlYWRsaW5lL3Bvc2l4c3RhdC5oCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3Bvc2l4c3RhdC5oCTIwMTEtMDctMDMgMTA6NDA6 NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9wb3Np eHN0YXQuaAkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTUsMTkgKzUs MTkgQEAKLSAKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgQmFzaCwgdGhlIEJvdXJuZSBB Z2FpbiBTSGVsbC4KLSAKLS0gICBCYXNoIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLS0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikK LS0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0gICBCYXNoIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCi0tICAgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZ Ci0tICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYwotLSAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBCYXNoIGlz IGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSsKLSsgICBCYXNoIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLSAgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFs b25nIHdpdGggQmFzaDsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRo ZSBGcmVlCi0tICAgU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAz MzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIGFsb25nIHdpdGggQmFzaC4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAotIC8qIFRoaXMg ZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW5zdGVhZCBvZiA8c3lzL3N0YXQuaD4uCi0gICAgSXQg cmVsaWVzIG9uIHRoZSBsb2NhbCBzeXMvc3RhdC5oIHRvIHdvcmsgdGhvdWdoLiAqLwotSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvcmVhZGxpbmUuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9yZWFkbGluZS5jCTIwMTEtMDctMDMg MTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGlu ZS9yZWFkbGluZS5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwy NSArMSwyNSBAQAotIC8qIHJlYWRsaW5lLmMgLS0gYSBnZW5lcmFsIGZhY2lsaXR5IGZvciByZWFk aW5nIGxpbmVzIG9mIGlucHV0Ci0gICAgd2l0aCBlbWFjcyBzdHlsZSBlZGl0aW5nIGFuZCBjb21w bGV0aW9uLiAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUg UmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4 dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGli cmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1 dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGli cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAgIGFuZC9v ciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBU aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGluZSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBw ZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmls ZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBj b3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4g Ki8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSsKLSAjZGVmaW5lIFJFQURMSU5F X0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKLUBAIC00OSw2ICs0OSwx MSBAQAotIAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlICJwb3NpeGptcC5oIgotKyNp bmNsdWRlIDxlcnJuby5oPgotKwotKyNpZiAhZGVmaW5lZCAoZXJybm8pCi0rZXh0ZXJuIGludCBl cnJubzsKLSsjZW5kaWYgLyogIWVycm5vICovCi0gCi0gLyogU3lzdGVtLXNwZWNpZmljIGZlYXR1 cmUgZGVmaW5pdGlvbnMgYW5kIGluY2x1ZGUgZmlsZXMuICovCi0gI2luY2x1ZGUgInJsZGVmcy5o IgotQEAgLTE1OCw3ICsxNjMsNyBAQCBpbnQgcmxfZG9uZTsKLSBybF9jb21tYW5kX2Z1bmNfdCAq cmxfbGFzdF9mdW5jID0gKHJsX2NvbW1hbmRfZnVuY190ICopTlVMTDsKLSAKLSAvKiBUb3AgbGV2 ZWwgZW52aXJvbm1lbnQgZm9yIHJlYWRsaW5lX2ludGVybmFsICgpLiAqLwotLXByb2NlbnZfdCBy ZWFkbGluZV90b3BfbGV2ZWw7Ci0rcHJvY2Vudl90IF9ybF90b3BfbGV2ZWw7Ci0gCi0gLyogVGhl IHN0cmVhbXMgd2UgaW50ZXJhY3Qgd2l0aC4gKi8KLSBGSUxFICpfcmxfaW5fc3RyZWFtLCAqX3Js X291dF9zdHJlYW07Ci1AQCAtMTcxLDcgKzE3Niw3IEBAIEZJTEUgKnJsX291dHN0cmVhbSA9IChG SUxFICopTlVMTDsKLSAgICBzZXQgdG8gMSBpZiB0aGVyZSBpcyBhIGNvbnRyb2xsaW5nIHRlcm1p bmFsLCB3ZSBjYW4gZ2V0IGl0cyBhdHRyaWJ1dGVzLAotICAgIGFuZCB0aGUgYXR0cmlidXRlcyBp bmNsdWRlIGBlY2hvJy4gIExvb2sgYXQgcmx0dHkuYzpwcmVwYXJlX3Rlcm1pbmFsX3NldHRpbmdz Ci0gICAgZm9yIHRoZSBjb2RlIHRoYXQgc2V0cyBpdC4gKi8KLS1pbnQgcmVhZGxpbmVfZWNob2lu Z19wID0gMDsKLStpbnQgX3JsX2VjaG9pbmdfcCA9IDA7Ci0gCi0gLyogQ3VycmVudCBwcm9tcHQu ICovCi0gY2hhciAqcmxfcHJvbXB0ID0gKGNoYXIgKilOVUxMOwotQEAgLTI2NSw2ICsyNzAsMTUg QEAgaW50IF9ybF9vdXRwdXRfbWV0YV9jaGFycyA9IDA7Ci0gICAgdGhlbSB0byBlcXVpdmFsZW50 IHJlYWRsaW5lIGZ1bmN0aW9ucyBhdCBzdGFydHVwLiAqLwotIGludCBfcmxfYmluZF9zdHR5X2No YXJzID0gMTsKLSAKLSsvKiBOb24temVybyBtZWFucyB0byBnbyB0aHJvdWdoIHRoZSBoaXN0b3J5 IGxpc3QgYXQgZXZlcnkgbmV3bGluZSAob3IKLSsgICB3aGVuZXZlciBybF9kb25lIGlzIHNldCBh bmQgcmVhZGxpbmUgcmV0dXJucykgYW5kIHJldmVydCBlYWNoIGxpbmUgdG8KLSsgICBpdHMgaW5p dGlhbCBzdGF0ZS4gKi8KLStpbnQgX3JsX3JldmVydF9hbGxfYXRfbmV3bGluZSA9IDA7Ci0rCi0r LyogTm9uLXplcm8gbWVhbnMgdG8gaG9ub3IgdGhlIHRlcm1pb3MgRUNIT0NUTCBiaXQgYW5kIGVj aG8gY29udHJvbAotKyAgIGNoYXJhY3RlcnMgY29ycmVzcG9uZGluZyB0byBrZXlib2FyZC1nZW5l cmF0ZWQgc2lnbmFscy4gKi8KLStpbnQgX3JsX2VjaG9fY29udHJvbF9jaGFycyA9IDE7Ci0rCi0g LyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiAqLwotIC8qCQkJCQkJCQkgICAgKi8KLSAvKgkJCVRvcCBMZXZlbCBGdW5jdGlv bnMJCQkgICAgKi8KLUBAIC0yOTUsNiArMzA5LDkgQEAgcmVhZGxpbmUgKHByb21wdCkKLSAgICAg IGNvbnN0IGNoYXIgKnByb21wdDsKLSB7Ci0gICBjaGFyICp2YWx1ZTsKLSsjaWYgMAotKyAgaW50 IGluX2NhbGxiYWNrOwotKyNlbmRpZgotIAotICAgLyogSWYgd2UgYXJlIGF0IEVPRiByZXR1cm4g YSBOVUxMIHN0cmluZy4gKi8KLSAgIGlmIChybF9wZW5kaW5nX2lucHV0ID09IEVPRikKLUBAIC0z MDMsNiArMzIwLDE1IEBAIHJlYWRsaW5lIChwcm9tcHQpCi0gICAgICAgcmV0dXJuICgoY2hhciAq KU5VTEwpOwotICAgICB9Ci0gCi0rI2lmIDAKLSsgIC8qIElmIHJlYWRsaW5lKCkgaXMgY2FsbGVk IGFmdGVyIGluc3RhbGxpbmcgYSBjYWxsYmFjayBoYW5kbGVyLCB0ZW1wb3JhcmlseQotKyAgICAg dHVybiBvZmYgdGhlIGNhbGxiYWNrIHN0YXRlIHRvIGF2b2lkIGVuc3VpbmcgbWVzc2luZXNzLiAg UGF0Y2ggc3VwcGxpZWQKLSsgICAgIGJ5IHRoZSBnZGIgZm9sa3MuICBYWFggLS0gZGlzYWJsZWQu ICBUaGlzIGNhbiBiZSBmb29sZWQgYW5kIHJlYWRsaW5lCi0rICAgICBsZWZ0IGluIGEgc3RyYW5n ZSBzdGF0ZSBieSBhIHBvb3JseS10aW1lZCBsb25nam1wLiAqLwotKyAgaWYgKGluX2NhbGxiYWNr ID0gUkxfSVNTVEFURSAoUkxfU1RBVEVfQ0FMTEJBQ0spKQotKyAgICBSTF9VTlNFVFNUQVRFIChS TF9TVEFURV9DQUxMQkFDSyk7Ci0rI2VuZGlmCi0rCi0gICBybF9zZXRfcHJvbXB0IChwcm9tcHQp OwotIAotICAgcmxfaW5pdGlhbGl6ZSAoKTsKLUBAIC0zMjEsNiArMzQ3LDExIEBAIHJlYWRsaW5l IChwcm9tcHQpCi0gICBybF9jbGVhcl9zaWduYWxzICgpOwotICNlbmRpZgotIAotKyNpZiAwCi0r ICBpZiAoaW5fY2FsbGJhY2spCi0rICAgIFJMX1NFVFNUQVRFIChSTF9TVEFURV9DQUxMQkFDSyk7 Ci0rI2VuZGlmCi0rCi0gICByZXR1cm4gKHZhbHVlKTsKLSB9Ci0gCi1AQCAtMzQ0LDE0ICszNzUs MTQgQEAgcmVhZGxpbmVfaW50ZXJuYWxfc2V0dXAgKCkKLSAgIC8qIElmIHdlJ3JlIG5vdCBlY2hv aW5nLCB3ZSBzdGlsbCB3YW50IHRvIGF0IGxlYXN0IHByaW50IGEgcHJvbXB0LCBiZWNhdXNlCi0g ICAgICBybF9yZWRpc3BsYXkgd2lsbCBub3QgZG8gaXQgZm9yIHVzLiAgSWYgdGhlIGNhbGxpbmcg YXBwbGljYXRpb24gaGFzIGEKLSAgICAgIGN1c3RvbSByZWRpc3BsYXkgZnVuY3Rpb24sIHRob3Vn aCwgbGV0IHRoYXQgZnVuY3Rpb24gaGFuZGxlIGl0LiAqLwotLSAgaWYgKHJlYWRsaW5lX2VjaG9p bmdfcCA9PSAwICYmIHJsX3JlZGlzcGxheV9mdW5jdGlvbiA9PSBybF9yZWRpc3BsYXkpCi0rICBp ZiAoX3JsX2VjaG9pbmdfcCA9PSAwICYmIHJsX3JlZGlzcGxheV9mdW5jdGlvbiA9PSBybF9yZWRp c3BsYXkpCi0gICAgIHsKLSAgICAgICBpZiAocmxfcHJvbXB0ICYmIHJsX2FscmVhZHlfcHJvbXB0 ZWQgPT0gMCkKLSAJewotIAkgIG5wcm9tcHQgPSBfcmxfc3RyaXBfcHJvbXB0IChybF9wcm9tcHQp OwotIAkgIGZwcmludGYgKF9ybF9vdXRfc3RyZWFtLCAiJXMiLCBucHJvbXB0KTsKLSAJICBmZmx1 c2ggKF9ybF9vdXRfc3RyZWFtKTsKLS0JICBmcmVlIChucHJvbXB0KTsKLSsJICB4ZnJlZSAobnBy b21wdCk7Ci0gCX0KLSAgICAgfQotICAgZWxzZQotQEAgLTM2NSwxMSArMzk2LDEzIEBAIHJlYWRs aW5lX2ludGVybmFsX3NldHVwICgpCi0gCi0gI2lmIGRlZmluZWQgKFZJX01PREUpCi0gICBpZiAo cmxfZWRpdGluZ19tb2RlID09IHZpX21vZGUpCi0tICAgIHJsX3ZpX2luc2VydGlvbl9tb2RlICgx LCAnaScpOwotKyAgICBybF92aV9pbnNlcnRfbW9kZSAoMSwgJ2knKTsKLSAjZW5kaWYgLyogVklf TU9ERSAqLwotIAotICAgaWYgKHJsX3ByZV9pbnB1dF9ob29rKQotICAgICAoKnJsX3ByZV9pbnB1 dF9ob29rKSAoKTsKLSsKLSsgIFJMX0NIRUNLX1NJR05BTFMgKCk7Ci0gfQotIAotIFNUQVRJQ19D QUxMQkFDSyBjaGFyICoKLUBAIC0zNzksNiArNDEyLDggQEAgcmVhZGxpbmVfaW50ZXJuYWxfdGVh cmRvd24gKGVvZikKLSAgIGNoYXIgKnRlbXA7Ci0gICBISVNUX0VOVFJZICplbnRyeTsKLSAKLSsg IFJMX0NIRUNLX1NJR05BTFMgKCk7Ci0rCi0gICAvKiBSZXN0b3JlIHRoZSBvcmlnaW5hbCBvZiB0 aGlzIGhpc3RvcnkgbGluZSwgaWZmIHRoZSBsaW5lIHRoYXQgd2UKLSAgICAgIGFyZSBlZGl0aW5n IHdhcyBvcmlnaW5hbGx5IGluIHRoZSBoaXN0b3J5LCBBTkQgdGhlIGxpbmUgaGFzIGNoYW5nZWQu ICovCi0gICBlbnRyeSA9IGN1cnJlbnRfaGlzdG9yeSAoKTsKLUBAIC0zOTEsOSArNDI2LDEyIEBA IHJlYWRsaW5lX2ludGVybmFsX3RlYXJkb3duIChlb2YpCi0gICAgICAgX3JsX2ZyZWVfaGlzdG9y eV9lbnRyeSAoZW50cnkpOwotIAotICAgICAgIHN0cmNweSAodGhlX2xpbmUsIHRlbXApOwotLSAg ICAgIGZyZWUgKHRlbXApOwotKyAgICAgIHhmcmVlICh0ZW1wKTsKLSAgICAgfQotIAotKyAgaWYg KF9ybF9yZXZlcnRfYWxsX2F0X25ld2xpbmUpCi0rICAgIF9ybF9yZXZlcnRfYWxsX2xpbmVzICgp OwotKwotICAgLyogQXQgYW55IHJhdGUsIGl0IGlzIGhpZ2hseSBsaWtlbHkgdGhhdCB0aGlzIGxp bmUgaGFzIGFuIHVuZG8gbGlzdC4gIEdldAotICAgICAgcmlkIG9mIGl0IG5vdy4gKi8KLSAgIGlm IChybF91bmRvX2xpc3QpCi1AQCAtNDU0LDcgKzQ5Miw3IEBAIHJlYWRsaW5lX2ludGVybmFsX2No YXJsb29wICgpCi0gI2VuZGlmCi0gICAgICAgbGsgPSBfcmxfbGFzdF9jb21tYW5kX3dhc19raWxs OwotIAotLSAgICAgIGNvZGUgPSBzZXRqbXAgKHJlYWRsaW5lX3RvcF9sZXZlbCk7Ci0rICAgICAg Y29kZSA9IHNldGptcCAoX3JsX3RvcF9sZXZlbCk7Ci0gCi0gICAgICAgaWYgKGNvZGUpCi0gCXsK LUBAIC00NjIsNyArNTAwLDcgQEAgcmVhZGxpbmVfaW50ZXJuYWxfY2hhcmxvb3AgKCkKLSAJICBf cmxfd2FudF9yZWRpc3BsYXkgPSAwOwotIAkgIC8qIElmIHdlIGdldCBoZXJlLCB3ZSdyZSBub3Qg YmVpbmcgY2FsbGVkIGZyb20gc29tZXRoaW5nIGRpc3BhdGNoZWQKLSAJICAgICBmcm9tIF9ybF9j YWxsYmFja19yZWFkX2NoYXIoKSwgd2hpY2ggc2V0cyB1cCBpdHMgb3duIHZhbHVlIG9mCi0tCSAg ICAgcmVhZGxpbmVfdG9wX2xldmVsIChzYXZpbmcgYW5kIHJlc3RvcmluZyB0aGUgb2xkLCBvZiBj b3Vyc2UpLCBzbwotKwkgICAgIF9ybF90b3BfbGV2ZWwgKHNhdmluZyBhbmQgcmVzdG9yaW5nIHRo ZSBvbGQsIG9mIGNvdXJzZSksIHNvCi0gCSAgICAgd2UgY2FuIGp1c3QgcmV0dXJuIGhlcmUuICov Ci0gCSAgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSkKLSAJICAgIHJldHVybiAo MCk7Ci1AQCAtNDc5LDYgKzUxNywyMCBAQCByZWFkbGluZV9pbnRlcm5hbF9jaGFybG9vcCAoKQot ICAgICAgIGMgPSBybF9yZWFkX2tleSAoKTsKLSAgICAgICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRF X1JFQURDTUQpOwotIAotKyAgICAgIC8qIGxvb2sgYXQgaW5wdXQuYzpybF9nZXRjKCkgZm9yIHRo ZSBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIHRoaXMgd2lsbAotKwkgYmUgcmV0dXJuZWQ7IHB1 bnQgaW1tZWRpYXRlbHkgb24gcmVhZCBlcnJvciB3aXRob3V0IGNvbnZlcnRpbmcgaXQgdG8KLSsJ IGEgbmV3bGluZS4gKi8KLSsgICAgICBpZiAoYyA9PSBSRUFERVJSKQotKwl7Ci0rI2lmIGRlZmlu ZWQgKFJFQURMSU5FX0NBTExCQUNLUykKLSsJICBSTF9TRVRTVEFURShSTF9TVEFURV9ET05FKTsK LSsJICByZXR1cm4gKHJsX2RvbmUgPSAxKTsKLSsjZWxzZQotKwkgIGVvZl9mb3VuZCA9IDE7Ci0r CSAgYnJlYWs7Ci0rI2VuZGlmCi0rCX0KLSsKLSAgICAgICAvKiBFT0YgdHlwZWQgdG8gYSBub24t YmxhbmsgbGluZSBpcyBhIDxOTD4uICovCi0gICAgICAgaWYgKGMgPT0gRU9GICYmIHJsX2VuZCkK LSAJYyA9IE5FV0xJTkU7Ci1AQCAtNDk4LDYgKzU1MCw3IEBAIHJlYWRsaW5lX2ludGVybmFsX2No YXJsb29wICgpCi0gCi0gICAgICAgbGFzdGMgPSBjOwotICAgICAgIF9ybF9kaXNwYXRjaCAoKHVu c2lnbmVkIGNoYXIpYywgX3JsX2tleW1hcCk7Ci0rICAgICAgUkxfQ0hFQ0tfU0lHTkFMUyAoKTsK LSAKLSAgICAgICAvKiBJZiB0aGVyZSB3YXMgbm8gY2hhbmdlIGluIF9ybF9sYXN0X2NvbW1hbmRf d2FzX2tpbGwsIHRoZW4gbm8ga2lsbAotIAkgaGFzIHRha2VuIHBsYWNlLiAgTm90ZSB0aGF0IGlm IGlucHV0IGlzIHBlbmRpbmcgd2UgYXJlIHJlYWRpbmcKLUBAIC01NzYsNyArNjI5LDcgQEAgdm9p ZAotIF9ybF9rZXlzZXFfY3h0X2Rpc3Bvc2UgKGN4dCkKLSAgICAgX3JsX2tleXNlcV9jeHQgKmN4 dDsKLSB7Ci0tICBmcmVlIChjeHQpOwotKyAgeGZyZWUgKGN4dCk7Ci0gfQotIAotIHZvaWQKLUBA IC02MTgsNyArNjcxLDYgQEAgX3JsX2Rpc3BhdGNoX2NhbGxiYWNrIChjeHQpCi0gICBpbnQgbmtl eSwgcjsKLSAKLSAgIC8qIEZvciBub3cgKi8KLS0jaWYgMQotICAgLyogVGhlIGZpcnN0IHRpbWUg dGhpcyBjb250ZXh0IGlzIHVzZWQsIHdlIHdhbnQgdG8gcmVhZCBpbnB1dCBhbmQgZGlzcGF0Y2gK LSAgICAgIG9uIGl0LiAgV2hlbiB0cmF2ZXJzaW5nIHRoZSBjaGFpbiBvZiBjb250ZXh0cyBiYWNr IGB1cCcsIHdlIHdhbnQgdG8gdXNlCi0gICAgICB0aGUgdmFsdWUgZnJvbSB0aGUgbmV4dCBjb250 ZXh0IGRvd24uICBXZSdyZSBzaW11bGF0aW5nIHJlY3Vyc2lvbiB1c2luZwotQEAgLTYyNiwxOCAr Njc4LDIyIEBAIF9ybF9kaXNwYXRjaF9jYWxsYmFjayAoY3h0KQotICAgaWYgKChjeHQtPmZsYWdz ICYgS1NFUV9ESVNQQVRDSEVEKSA9PSAwKQotICAgICB7Ci0gICAgICAgbmtleSA9IF9ybF9zdWJz ZXFfZ2V0Y2hhciAoY3h0LT5va2V5KTsKLSsgICAgICBpZiAobmtleSA8IDApCi0rCXsKLSsJICBf cmxfYWJvcnRfaW50ZXJuYWwgKCk7Ci0rCSAgcmV0dXJuIC0xOwotKwl9Ci0gICAgICAgciA9IF9y bF9kaXNwYXRjaF9zdWJzZXEgKG5rZXksIGN4dC0+ZG1hcCwgY3h0LT5zdWJzZXFfYXJnKTsKLSAg ICAgICBjeHQtPmZsYWdzIHw9IEtTRVFfRElTUEFUQ0hFRDsKLSAgICAgfQotICAgZWxzZQotICAg ICByID0gY3h0LT5jaGlsZHZhbDsKLS0jZWxzZQotLSAgciA9IF9ybF9kaXNwYXRjaF9zdWJzZXEg KG5rZXksIGN4dC0+ZG1hcCwgY3h0LT5zdWJzZXFfYXJnKTsKLS0jZW5kaWYKLSAKLSAgIC8qIEZv ciBub3cgKi8KLS0gIHIgPSBfcmxfc3Vic2VxX3Jlc3VsdCAociwgY3h0LT5vbGRtYXAsIGN4dC0+ b2tleSwgKGN4dC0+ZmxhZ3MgJiBLU0VRX1NVQlNFUSkpOwotKyAgaWYgKHIgIT0gLTMpCS8qIGRv bid0IGRvIHRoaXMgaWYgd2UgaW5kaWNhdGUgdGhlcmUgd2lsbCBiZSBvdGhlciBtYXRjaGVzICov Ci0rICAgIHIgPSBfcmxfc3Vic2VxX3Jlc3VsdCAociwgY3h0LT5vbGRtYXAsIGN4dC0+b2tleSwg KGN4dC0+ZmxhZ3MgJiBLU0VRX1NVQlNFUSkpOwotIAotKyAgUkxfQ0hFQ0tfU0lHTkFMUyAoKTsK LSAgIGlmIChyID09IDApCQkJLyogc3VjY2VzcyEgKi8KLSAgICAgewotICAgICAgIF9ybF9rZXlz ZXFfY2hhaW5fZGlzcG9zZSAoKTsKLUBAIC03MjQsNiArNzgwLDggQEAgX3JsX2Rpc3BhdGNoX3N1 YnNlcSAoa2V5LCBtYXAsIGdvdF9zdWJzZQotIAkgICAgIHJlbWVtYmVyIHRoZSBsYXN0IGNvbW1h bmQgZXhlY3V0ZWQgaW4gdGhpcyB2YXJpYWJsZS4gKi8KLSAJICBpZiAocmxfcGVuZGluZ19pbnB1 dCA9PSAwICYmIG1hcFtrZXldLmZ1bmN0aW9uICE9IHJsX2RpZ2l0X2FyZ3VtZW50KQotIAkgICAg cmxfbGFzdF9mdW5jID0gbWFwW2tleV0uZnVuY3Rpb247Ci0rCi0rCSAgUkxfQ0hFQ0tfU0lHTkFM UyAoKTsKLSAJfQotICAgICAgIGVsc2UgaWYgKG1hcFtBTllPVEhFUktFWV0uZnVuY3Rpb24pCi0g CXsKLUBAIC03NzgsNyArODM2LDcgQEAgX3JsX2Rpc3BhdGNoX3N1YnNlcSAoa2V5LCBtYXAsIGdv dF9zdWJzZQotIAkgICAgewotIAkgICAgICAvKiBSZXR1cm4gMCBvbmx5IHRoZSBmaXJzdCB0aW1l LCB0byBpbmRpY2F0ZSBzdWNjZXNzIHRvCi0gCQkgX3JsX2NhbGxiYWNrX3JlYWRfY2hhci4gIFRo ZSByZXN0IG9mIHRoZSB0aW1lLCB3ZSdyZSBjYWxsZWQKLS0JCSBmcm9tIF9ybF9kaXNwYXRjaF9j YWxsYmFjaywgc28gd2UgcmV0dXJuIDMgdG8gaW5kaWNhdGUKLSsJCSBmcm9tIF9ybF9kaXNwYXRj aF9jYWxsYmFjaywgc28gd2UgcmV0dXJuIC0zIHRvIGluZGljYXRlCi0gCQkgc3BlY2lhbCBoYW5k bGluZyBpcyBuZWNlc3NhcnkuICovCi0gCSAgICAgIHIgPSBSTF9JU1NUQVRFIChSTF9TVEFURV9N VUxUSUtFWSkgPyAtMyA6IDA7Ci0gCSAgICAgIGN4dCA9IF9ybF9rZXlzZXFfY3h0X2FsbG9jICgp OwotQEAgLTg0Miw3ICs5MDAsNyBAQCBfcmxfc3Vic2VxX3Jlc3VsdCAociwgbWFwLCBrZXksIGdv dF9zdWJzCi0gICBLZXltYXAgbTsKLSAgIGludCB0eXBlLCBudDsKLSAgIHJsX2NvbW1hbmRfZnVu Y190ICpmdW5jLCAqbmY7Ci0tICAKLSsKLSAgIGlmIChyID09IC0yKQotICAgICAvKiBXZSBkaWRu J3QgbWF0Y2ggYW55dGhpbmcsIGFuZCB0aGUga2V5bWFwIHdlJ3JlIGluZGV4ZWQgaW50bwotICAg ICAgICBzaGFkb3dlZCBhIGZ1bmN0aW9uIHByZXZpb3VzbHkgYm91bmQgdG8gdGhhdCBwcmVmaXgu ICBDYWxsCi1AQCAtMTExNiw2ICsxMTc0LDEwIEBAIGJpbmRfYXJyb3dfa2V5cyAoKQotIAotICNp ZiBkZWZpbmVkIChWSV9NT0RFKQotICAgYmluZF9hcnJvd19rZXlzX2ludGVybmFsICh2aV9tb3Zl bWVudF9rZXltYXApOwotKyAgLyogVW5iaW5kIHZpX21vdmVtZW50X2tleW1hcFtFU0NdIHRvIGFs bG93IHVzZXJzIHRvIHJlcGVhdGVkbHkgaGl0IEVTQwotKyAgICAgaW4gdmkgY29tbWFuZCBtb2Rl IHdoaWxlIHN0aWxsIGFsbG93aW5nIHRoZSBhcnJvdyBrZXlzIHRvIHdvcmsuICovCi0rICBpZiAo dmlfbW92ZW1lbnRfa2V5bWFwW0VTQ10udHlwZSA9PSBJU0tNQVApCi0rICAgIHJsX2JpbmRfa2V5 c2VxX2luX21hcCAoIlwwMzMiLCAocmxfY29tbWFuZF9mdW5jX3QgKilOVUxMLCB2aV9tb3ZlbWVu dF9rZXltYXApOwotICAgYmluZF9hcnJvd19rZXlzX2ludGVybmFsICh2aV9pbnNlcnRpb25fa2V5 bWFwKTsKLSAjZW5kaWYKLSB9Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9y ZWFkbGluZS5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRs aW5lL3JlYWRsaW5lLmgJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3JlYWRsaW5lLmgJMjAxMS0wNy0wMyAxMDo0MToy MS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDI0ICsxLDIzIEBACi0gLyogUmVhZGxpbmUuaCAtLSB0 aGUgbmFtZXMgb2YgZnVuY3Rpb25zIGNhbGxhYmxlIGZyb20gd2l0aGluIHJlYWRsaW5lLiAqLwot IAotLS8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGli cmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVy YWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZv ciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9y eSBlZGl0aW5nLiAgICAgIAotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRs aW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0t ICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot ICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAg VGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUg c29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09Q WUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBs aWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRl bXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSAKLSAjaWYgIWRlZmluZWQgKF9SRUFETElORV9IXykK LSAjZGVmaW5lIF9SRUFETElORV9IXwotQEAgLTQwLDkgKzM5LDkgQEAgZXh0ZXJuICJDIiB7Ci0g I2VuZGlmCi0gCi0gLyogSGV4LWVuY29kZWQgUmVhZGxpbmUgdmVyc2lvbiBudW1iZXIuICovCi0t I2RlZmluZSBSTF9SRUFETElORV9WRVJTSU9OCTB4MDUwMQkJLyogUmVhZGxpbmUgNS4xICovCi0t I2RlZmluZSBSTF9WRVJTSU9OX01BSk9SCTUKLS0jZGVmaW5lIFJMX1ZFUlNJT05fTUlOT1IJMQot KyNkZWZpbmUgUkxfUkVBRExJTkVfVkVSU0lPTgkweDA2MDIJCS8qIFJlYWRsaW5lIDYuMiAqLwot KyNkZWZpbmUgUkxfVkVSU0lPTl9NQUpPUgk2Ci0rI2RlZmluZSBSTF9WRVJTSU9OX01JTk9SCTIK LSAKLSAvKiBSZWFkbGluZSBkYXRhIHN0cnVjdHVyZXMuICovCi0gCi1AQCAtOTYsNiArOTUsNyBA QCBleHRlcm4gaW50IHJsX2ZvcndhcmRfd29yZCBQQVJBTVMoKGludCwgCi0gZXh0ZXJuIGludCBy bF9iYWNrd2FyZF93b3JkIFBBUkFNUygoaW50LCBpbnQpKTsKLSBleHRlcm4gaW50IHJsX3JlZnJl c2hfbGluZSBQQVJBTVMoKGludCwgaW50KSk7Ci0gZXh0ZXJuIGludCBybF9jbGVhcl9zY3JlZW4g UEFSQU1TKChpbnQsIGludCkpOwotK2V4dGVybiBpbnQgcmxfc2tpcF9jc2lfc2VxdWVuY2UgUEFS QU1TKChpbnQsIGludCkpOwotIGV4dGVybiBpbnQgcmxfYXJyb3dfa2V5cyBQQVJBTVMoKGludCwg aW50KSk7Ci0gCi0gLyogQmluZGFibGUgY29tbWFuZHMgZm9yIGluc2VydGluZyBhbmQgZGVsZXRp bmcgdGV4dC4gKi8KLUBAIC0xNTEsNyArMTUxLDkgQEAgZXh0ZXJuIGludCBybF9kdW1wX3Zhcmlh YmxlcyBQQVJBTVMoKGludAotIGV4dGVybiBpbnQgcmxfY29tcGxldGUgUEFSQU1TKChpbnQsIGlu dCkpOwotIGV4dGVybiBpbnQgcmxfcG9zc2libGVfY29tcGxldGlvbnMgUEFSQU1TKChpbnQsIGlu dCkpOwotIGV4dGVybiBpbnQgcmxfaW5zZXJ0X2NvbXBsZXRpb25zIFBBUkFNUygoaW50LCBpbnQp KTsKLStleHRlcm4gaW50IHJsX29sZF9tZW51X2NvbXBsZXRlIFBBUkFNUygoaW50LCBpbnQpKTsK LSBleHRlcm4gaW50IHJsX21lbnVfY29tcGxldGUgUEFSQU1TKChpbnQsIGludCkpOwotK2V4dGVy biBpbnQgcmxfYmFja3dhcmRfbWVudV9jb21wbGV0ZSBQQVJBTVMoKGludCwgaW50KSk7Ci0gCi0g LyogQmluZGFibGUgY29tbWFuZHMgZm9yIGtpbGxpbmcgYW5kIHlhbmtpbmcgdGV4dCwgYW5kIG1h bmFnaW5nIHRoZSBraWxsIHJpbmcuICovCi0gZXh0ZXJuIGludCBybF9raWxsX3dvcmQgUEFSQU1T KChpbnQsIGludCkpOwotQEAgLTIzMyw2ICsyMzUsNyBAQCBleHRlcm4gaW50IHJsX3ZpX2FwcGVu ZF9tb2RlIFBBUkFNUygoaW50Ci0gZXh0ZXJuIGludCBybF92aV9hcHBlbmRfZW9sIFBBUkFNUygo aW50LCBpbnQpKTsKLSBleHRlcm4gaW50IHJsX3ZpX2VvZl9tYXliZSBQQVJBTVMoKGludCwgaW50 KSk7Ci0gZXh0ZXJuIGludCBybF92aV9pbnNlcnRpb25fbW9kZSBQQVJBTVMoKGludCwgaW50KSk7 Ci0rZXh0ZXJuIGludCBybF92aV9pbnNlcnRfbW9kZSBQQVJBTVMoKGludCwgaW50KSk7Ci0gZXh0 ZXJuIGludCBybF92aV9tb3ZlbWVudF9tb2RlIFBBUkFNUygoaW50LCBpbnQpKTsKLSBleHRlcm4g aW50IHJsX3ZpX2FyZ19kaWdpdCBQQVJBTVMoKGludCwgaW50KSk7Ci0gZXh0ZXJuIGludCBybF92 aV9jaGFuZ2VfY2FzZSBQQVJBTVMoKGludCwgaW50KSk7Ci1AQCAtNDIwLDYgKzQyMyw3IEBAIGV4 dGVybiBpbnQgcmxfc2V0X2tleWJvYXJkX2lucHV0X3RpbWVvdXQKLSBleHRlcm4gdm9pZCBybF9l eHRlbmRfbGluZV9idWZmZXIgUEFSQU1TKChpbnQpKTsKLSBleHRlcm4gaW50IHJsX2RpbmcgUEFS QU1TKCh2b2lkKSk7Ci0gZXh0ZXJuIGludCBybF9hbHBoYWJldGljIFBBUkFNUygoaW50KSk7Ci0r ZXh0ZXJuIHZvaWQgcmxfZnJlZSBQQVJBTVMoKHZvaWQgKikpOwotIAotIC8qIFJlYWRsaW5lIHNp Z25hbCBoYW5kbGluZywgZnJvbSBzaWduYWxzLmMgKi8KLSBleHRlcm4gaW50IHJsX3NldF9zaWdu YWxzIFBBUkFNUygodm9pZCkpOwotQEAgLTQyNyw3ICs0MzEsOSBAQCBleHRlcm4gaW50IHJsX2Ns ZWFyX3NpZ25hbHMgUEFSQU1TKCh2b2lkCi0gZXh0ZXJuIHZvaWQgcmxfY2xlYW51cF9hZnRlcl9z aWduYWwgUEFSQU1TKCh2b2lkKSk7Ci0gZXh0ZXJuIHZvaWQgcmxfcmVzZXRfYWZ0ZXJfc2lnbmFs IFBBUkFNUygodm9pZCkpOwotIGV4dGVybiB2b2lkIHJsX2ZyZWVfbGluZV9zdGF0ZSBQQVJBTVMo KHZvaWQpKTsKLS0gCi0rCi0rZXh0ZXJuIHZvaWQgcmxfZWNob19zaWduYWxfY2hhciBQQVJBTVMo KGludCkpOyAKLSsKLSBleHRlcm4gaW50IHJsX3NldF9wYXJlbl9ibGlua190aW1lb3V0IFBBUkFN UygoaW50KSk7Ci0gCi0gLyogVW5kb2N1bWVudGVkLiAqLwotQEAgLTQ5Myw2ICs0OTksMTAgQEAg ZXh0ZXJuIGNvbnN0IGNoYXIgKnJsX3JlYWRsaW5lX25hbWU7Ci0gICAgcmVhZGxpbmUgKCksIGFu ZCBzaG91bGQgbm90IGJlIGFzc2lnbmVkIHRvIGRpcmVjdGx5LiAqLwotIGV4dGVybiBjaGFyICpy bF9wcm9tcHQ7Ci0gCi0rLyogVGhlIHByb21wdCBzdHJpbmcgdGhhdCBpcyBhY3R1YWxseSBkaXNw bGF5ZWQgYnkgcmxfcmVkaXNwbGF5LiAgUHVibGljIHNvCi0rICAgYXBwbGljYXRpb25zIGNhbiBt b3JlIGVhc2lseSBzdXBwbHkgdGhlaXIgb3duIHJlZGlzcGxheSBmdW5jdGlvbnMuICovCi0rZXh0 ZXJuIGNoYXIgKnJsX2Rpc3BsYXlfcHJvbXB0OwotKwotIC8qIFRoZSBsaW5lIGJ1ZmZlciB0aGF0 IGlzIGluIHVzZS4gKi8KLSBleHRlcm4gY2hhciAqcmxfbGluZV9idWZmZXI7Ci0gCi1AQCAtNTk5 LDYgKzYwOSwxMCBAQCBleHRlcm4gaW50IHJsX2NhdGNoX3NpZ3dpbmNoOwotICAgIGZpbGVuYW1l IGNvbXBsZXRlci4gKi8KLSBleHRlcm4gcmxfY29tcGVudHJ5X2Z1bmNfdCAqcmxfY29tcGxldGlv bl9lbnRyeV9mdW5jdGlvbjsKLSAKLSsvKiBPcHRpb25hbCBnZW5lcmF0b3IgZm9yIG1lbnUgY29t cGxldGlvbi4gIERlZmF1bHQgaXMKLSsgICBybF9jb21wbGV0aW9uX2VudHJ5X2Z1bmN0aW9uIChy bF9maWxlbmFtZV9jb21wbGV0aW9uX2Z1bmN0aW9uKS4gKi8KLSsgZXh0ZXJuIHJsX2NvbXBlbnRy eV9mdW5jX3QgKnJsX21lbnVfY29tcGxldGlvbl9lbnRyeV9mdW5jdGlvbjsKLSsKLSAvKiBJZiBy bF9pZ25vcmVfc29tZV9jb21wbGV0aW9uc19mdW5jdGlvbiBpcyBub24tTlVMTCBpdCBpcyB0aGUg YWRkcmVzcwotICAgIG9mIGEgZnVuY3Rpb24gdG8gY2FsbCBhZnRlciBhbGwgb2YgdGhlIHBvc3Np YmxlIG1hdGNoZXMgaGF2ZSBiZWVuCi0gICAgZ2VuZXJhdGVkLCBidXQgYmVmb3JlIHRoZSBhY3R1 YWwgY29tcGxldGlvbiBpcyBkb25lIHRvIHRoZSBpbnB1dCBsaW5lLgotQEAgLTY1MiwxOCArNjY2 LDM3IEBAIGV4dGVybiBjb25zdCBjaGFyICpybF9zcGVjaWFsX3ByZWZpeGVzOwotICAgIGNvbXBs ZXRpbmcgb24gYSBkaXJlY3RvcnkgbmFtZS4gIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aAot ICAgIHRoZSBhZGRyZXNzIG9mIGEgc3RyaW5nICh0aGUgY3VycmVudCBkaXJlY3RvcnkgbmFtZSkg YXMgYW4gYXJnLiAgSXQKLSAgICBjaGFuZ2VzIHdoYXQgaXMgZGlzcGxheWVkIHdoZW4gdGhlIHBv c3NpYmxlIGNvbXBsZXRpb25zIGFyZSBwcmludGVkCi0tICAgb3IgaW5zZXJ0ZWQuICovCi0rICAg b3IgaW5zZXJ0ZWQuICBUaGUgZGlyZWN0b3J5IGNvbXBsZXRpb24gaG9vayBzaG91bGQgcGVyZm9y bQotKyAgIGFueSBuZWNlc3NhcnkgZGVxdW90aW5nLiAgVGhpcyBmdW5jdGlvbiBzaG91bGQgcmV0 dXJuIDEgaWYgaXQgbW9kaWZpZXMKLSsgICB0aGUgZGlyZWN0b3J5IG5hbWUgcG9pbnRlciBwYXNz ZWQgYXMgYW4gYXJndW1lbnQuICBJZiB0aGUgZGlyZWN0b3J5Ci0rICAgY29tcGxldGlvbiBob29r IHJldHVybnMgMCwgaXQgc2hvdWxkIG5vdCBtb2RpZnkgdGhlIGRpcmVjdG9yeSBuYW1lCi0rICAg cG9pbnRlciBwYXNzZWQgYXMgYW4gYXJndW1lbnQuICovCi0gZXh0ZXJuIHJsX2ljcHBmdW5jX3Qg KnJsX2RpcmVjdG9yeV9jb21wbGV0aW9uX2hvb2s7Ci0gCi0gLyogSWYgbm9uLXplcm8sIHRoaXMg aXMgdGhlIGFkZHJlc3Mgb2YgYSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gY29tcGxldGluZwotICAg IGEgZGlyZWN0b3J5IG5hbWUuICBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBhZGRyZXNzIG9mIHRo ZSBkaXJlY3RvcnkgbmFtZQotICAgIHRvIGJlIG1vZGlmaWVkIGFzIGFuIGFyZ3VtZW50LiAgVW5s aWtlIHJsX2RpcmVjdG9yeV9jb21wbGV0aW9uX2hvb2ssIGl0Ci0gICAgb25seSBtb2RpZmllcyB0 aGUgZGlyZWN0b3J5IG5hbWUgdXNlZCBpbiBvcGVuZGlyKDIpLCBub3Qgd2hhdCBpcyBkaXNwbGF5 ZWQKLS0gICB3aGVuIHRoZSBwb3NzaWJsZSBjb21wbGV0aW9ucyBhcmUgcHJpbnRlZCBvciBpbnNl cnRlZC4gIEl0IGlzIGNhbGxlZAotLSAgIGJlZm9yZSBybF9kaXJlY3RvcnlfY29tcGxldGlvbl9o b29rLiAgSSdtIG5vdCBoYXBweSB3aXRoIGhvdyB0aGlzIHdvcmtzCi0tICAgeWV0LCBzbyBpdCdz IHVuZG9jdW1lbnRlZC4gKi8KLSsgICB3aGVuIHRoZSBwb3NzaWJsZSBjb21wbGV0aW9ucyBhcmUg cHJpbnRlZCBvciBpbnNlcnRlZC4gIElmIHNldCwgaXQgdGFrZXMKLSsgICBwcmVjZWRlbmNlIG92 ZXIgcmxfZGlyZWN0b3J5X2NvbXBsZXRpb25faG9vay4gIFRoZSBkaXJlY3RvcnkgcmV3cml0ZQot KyAgIGhvb2sgc2hvdWxkIHBlcmZvcm0gYW55IG5lY2Vzc2FyeSBkZXF1b3RpbmcuICBUaGlzIGZ1 bmN0aW9uIGhhcyB0aGUgc2FtZQotKyAgIHJldHVybiB2YWx1ZSBwcm9wZXJ0aWVzIGFzIHRoZSBk aXJlY3RvcnlfY29tcGxldGlvbl9ob29rLgotKwotKyAgIEknbSBub3QgaGFwcHkgd2l0aCBob3cg dGhpcyB3b3JrcyB5ZXQsIHNvIGl0J3MgdW5kb2N1bWVudGVkLiAgSSdtIHRyeWluZwotKyAgIGl0 IGluIGJhc2ggdG8gc2VlIGhvdyB3ZWxsIGl0IGdvZXMuICovCi0gZXh0ZXJuIHJsX2ljcHBmdW5j X3QgKnJsX2RpcmVjdG9yeV9yZXdyaXRlX2hvb2s7Ci0gCi0rLyogSWYgbm9uLXplcm8sIHRoaXMg aXMgdGhlIGFkZHJlc3Mgb2YgYSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gcmVhZGluZwotKyAgIGRp cmVjdG9yeSBlbnRyaWVzIGZyb20gdGhlIGZpbGVzeXN0ZW0gZm9yIGNvbXBsZXRpb24gYW5kIGNv bXBhcmluZwotKyAgIHRoZW0gdG8gdGhlIHBhcnRpYWwgd29yZCB0byBiZSBjb21wbGV0ZWQuICBU aGUgZnVuY3Rpb24gc2hvdWxkCi0rICAgZWl0aGVyIHJldHVybiBpdHMgZmlyc3QgYXJndW1lbnQg KGlmIG5vIGNvbnZlcnNpb24gdGFrZXMgcGxhY2UpIG9yCi0rICAgbmV3bHktYWxsb2NhdGVkIG1l bW9yeS4gIFRoaXMgY2FuLCBmb3IgaW5zdGFuY2UsIGNvbnZlcnQgZmlsZW5hbWVzCi0rICAgYmV0 d2VlbiBjaGFyYWN0ZXIgc2V0cyBmb3IgY29tcGFyaXNvbiBhZ2FpbnN0IHdoYXQncyB0eXBlZCBh dCB0aGUKLSsgICBrZXlib2FyZC4gIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyB3aGF0IGlzIGFkZGVk IHRvIHRoZSBsaXN0IG9mCi0rICAgbWF0Y2hlcy4gIFRoZSBzZWNvbmQgYXJndW1lbnQgaXMgdGhl IGxlbmd0aCBvZiB0aGUgZmlsZW5hbWUgdG8gYmUKLSsgICBjb252ZXJ0ZWQuICovCi0rZXh0ZXJu IHJsX2RlcXVvdGVfZnVuY190ICpybF9maWxlbmFtZV9yZXdyaXRlX2hvb2s7Ci0rCi0gLyogQmFj a3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiByZWFkbGluZS4g Ki8KLSAjZGVmaW5lIHJsX3N5bWJvbGljX2xpbmtfaG9vayBybF9kaXJlY3RvcnlfY29tcGxldGlv bl9ob29rCi0gCi1AQCAtNzEzLDYgKzc0Niw5IEBAIGV4dGVybiBpbnQgcmxfYXR0ZW1wdGVkX2Nv bXBsZXRpb25fb3ZlcjsKLSAgICBmdW5jdGlvbnMuICovCi0gZXh0ZXJuIGludCBybF9jb21wbGV0 aW9uX3R5cGU7Ci0gCi0rLyogU2V0IHRvIHRoZSBsYXN0IGtleSB1c2VkIHRvIGludm9rZSBvbmUg b2YgdGhlIGNvbXBsZXRpb24gZnVuY3Rpb25zICovCi0rZXh0ZXJuIGludCBybF9jb21wbGV0aW9u X2ludm9raW5nX2tleTsKLSsKLSAvKiBVcCB0byB0aGlzIG1hbnkgaXRlbXMgd2lsbCBiZSBkaXNw bGF5ZWQgaW4gcmVzcG9uc2UgdG8gYQotICAgIHBvc3NpYmxlLWNvbXBsZXRpb25zIGNhbGwuICBB ZnRlciB0aGF0LCB3ZSBhc2sgdGhlIHVzZXIgaWYgc2hlCi0gICAgaXMgc3VyZSBzaGUgd2FudHMg dG8gc2VlIHRoZW0gYWxsLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTAwLiAqLwotQEAgLTczOSw2 ICs3NzUsOSBAQCBleHRlcm4gaW50IHJsX2NvbXBsZXRpb25fZm91bmRfcXVvdGU7Ci0gICAgYXBw bGljYXRpb24tc3BlY2lmaWMgY29tcGxldGlvbiBmdW5jdGlvbi4gKi8KLSBleHRlcm4gaW50IHJs X2NvbXBsZXRpb25fc3VwcHJlc3NfcXVvdGU7Ci0gCi0rLyogSWYgbm9uLXplcm8sIHJlYWRsaW5l IHdpbGwgc29ydCB0aGUgY29tcGxldGlvbiBtYXRjaGVzLiAgT24gYnkgZGVmYXVsdC4gKi8KLStl eHRlcm4gaW50IHJsX3NvcnRfY29tcGxldGlvbl9tYXRjaGVzOwotKwotIC8qIElmIG5vbi16ZXJv LCBhIHNsYXNoIHdpbGwgYmUgYXBwZW5kZWQgdG8gY29tcGxldGVkIGZpbGVuYW1lcyB0aGF0IGFy ZQotICAgIHN5bWJvbGljIGxpbmtzIHRvIGRpcmVjdG9yeSBuYW1lcywgc3ViamVjdCB0byB0aGUg dmFsdWUgb2YgdGhlCi0gICAgbWFyay1kaXJlY3RvcmllcyB2YXJpYWJsZSAod2hpY2ggaXMgdXNl ci1zZXR0YWJsZSkuICBUaGlzIGV4aXN0cyBzbwotQEAgLTc1Nyw2ICs3OTYsMTAgQEAgZXh0ZXJu IGludCBybF9pZ25vcmVfY29tcGxldGlvbl9kdXBsaWNhdAotICAgIGNvbXBsZXRpb24gY2hhcmFj dGVyIHdpbGwgYmUgaW5zZXJ0ZWQgYXMgYW55IG90aGVyLiAqLwotIGV4dGVybiBpbnQgcmxfaW5o aWJpdF9jb21wbGV0aW9uOwotIAotKy8qIElucHV0IGVycm9yOyBjYW4gYmUgcmV0dXJuZWQgYnkg KCpybF9nZXRjX2Z1bmN0aW9uKSBpZiByZWFkbGluZSBpcyByZWFkaW5nCi0rICAgYSB0b3AtbGV2 ZWwgY29tbWFuZCAoUkxfSVNTVEFURSAoUkxfU1RBVEVfUkVBRENNRCkpLiAqLwotKyNkZWZpbmUg UkVBREVSUgkJCSgtMikKLSsKLSAvKiBEZWZpbml0aW9ucyBhdmFpbGFibGUgZm9yIHVzZSBieSBy ZWFkbGluZSBjbGllbnRzLiAqLwotICNkZWZpbmUgUkxfUFJPTVBUX1NUQVJUX0lHTk9SRQknXDAw MScKLSAjZGVmaW5lIFJMX1BST01QVF9FTkRfSUdOT1JFCSdcMDAyJwotQEAgLTc3MCwzMSArODEz LDMyIEBAIGV4dGVybiBpbnQgcmxfaW5oaWJpdF9jb21wbGV0aW9uOwotIC8qIFBvc3NpYmxlIHN0 YXRlIHZhbHVlcyBmb3IgcmxfcmVhZGxpbmVfc3RhdGUgKi8KLSAjZGVmaW5lIFJMX1NUQVRFX05P TkUJCTB4MDAwMDAwCQkvKiBubyBzdGF0ZTsgYmVmb3JlIGZpcnN0IGNhbGwgKi8KLSAKLS0jZGVm aW5lIFJMX1NUQVRFX0lOSVRJQUxJWklORwkweDAwMDAwMQkvKiBpbml0aWFsaXppbmcgKi8KLS0j ZGVmaW5lIFJMX1NUQVRFX0lOSVRJQUxJWkVECTB4MDAwMDAyCS8qIGluaXRpYWxpemF0aW9uIGRv bmUgKi8KLS0jZGVmaW5lIFJMX1NUQVRFX1RFUk1QUkVQUEVECTB4MDAwMDA0CS8qIHRlcm1pbmFs IGlzIHByZXBwZWQgKi8KLS0jZGVmaW5lIFJMX1NUQVRFX1JFQURDTUQJMHgwMDAwMDgJLyogcmVh ZGluZyBhIGNvbW1hbmQga2V5ICovCi0tI2RlZmluZSBSTF9TVEFURV9NRVRBTkVYVAkweDAwMDAx MAkvKiByZWFkaW5nIGlucHV0IGFmdGVyIEVTQyAqLwotLSNkZWZpbmUgUkxfU1RBVEVfRElTUEFU Q0hJTkcJMHgwMDAwMjAJLyogZGlzcGF0Y2hpbmcgdG8gYSBjb21tYW5kICovCi0tI2RlZmluZSBS TF9TVEFURV9NT1JFSU5QVVQJMHgwMDAwNDAJLyogcmVhZGluZyBtb3JlIGlucHV0IGluIGEgY29t bWFuZCBmdW5jdGlvbiAqLwotLSNkZWZpbmUgUkxfU1RBVEVfSVNFQVJDSAkweDAwMDA4MAkvKiBk b2luZyBpbmNyZW1lbnRhbCBzZWFyY2ggKi8KLS0jZGVmaW5lIFJMX1NUQVRFX05TRUFSQ0gJMHgw MDAxMDAJLyogZG9pbmcgbm9uLWluYyBzZWFyY2ggKi8KLS0jZGVmaW5lIFJMX1NUQVRFX1NFQVJD SAkJMHgwMDAyMDAJLyogZG9pbmcgYSBoaXN0b3J5IHNlYXJjaCAqLwotLSNkZWZpbmUgUkxfU1RB VEVfTlVNRVJJQ0FSRwkweDAwMDQwMAkvKiByZWFkaW5nIG51bWVyaWMgYXJndW1lbnQgKi8KLS0j ZGVmaW5lIFJMX1NUQVRFX01BQ1JPSU5QVVQJMHgwMDA4MDAJLyogZ2V0dGluZyBpbnB1dCBmcm9t IGEgbWFjcm8gKi8KLS0jZGVmaW5lIFJMX1NUQVRFX01BQ1JPREVGCTB4MDAxMDAwCS8qIGRlZmlu aW5nIGtleWJvYXJkIG1hY3JvICovCi0tI2RlZmluZSBSTF9TVEFURV9PVkVSV1JJVEUJMHgwMDIw MDAJLyogb3ZlcndyaXRlIG1vZGUgKi8KLS0jZGVmaW5lIFJMX1NUQVRFX0NPTVBMRVRJTkcJMHgw MDQwMDAJLyogZG9pbmcgY29tcGxldGlvbiAqLwotLSNkZWZpbmUgUkxfU1RBVEVfU0lHSEFORExF UgkweDAwODAwMAkvKiBpbiByZWFkbGluZSBzaWdoYW5kbGVyICovCi0tI2RlZmluZSBSTF9TVEFU RV9VTkRPSU5HCTB4MDEwMDAwCS8qIGRvaW5nIGFuIHVuZG8gKi8KLS0jZGVmaW5lIFJMX1NUQVRF X0lOUFVUUEVORElORwkweDAyMDAwMAkvKiBybF9leGVjdXRlX25leHQgY2FsbGVkICovCi0tI2Rl ZmluZSBSTF9TVEFURV9UVFlDU0FWRUQJMHgwNDAwMDAJLyogdHR5IHNwZWNpYWwgY2hhcnMgc2F2 ZWQgKi8KLS0jZGVmaW5lIFJMX1NUQVRFX0NBTExCQUNLCTB4MDgwMDAwCS8qIHVzaW5nIHRoZSBj YWxsYmFjayBpbnRlcmZhY2UgKi8KLS0jZGVmaW5lIFJMX1NUQVRFX1ZJTU9USU9OCTB4MTAwMDAw CS8qIHJlYWRpbmcgdmkgbW90aW9uIGFyZyAqLwotLSNkZWZpbmUgUkxfU1RBVEVfTVVMVElLRVkJ MHgyMDAwMDAJLyogcmVhZGluZyBtdWx0aXBsZS1rZXkgY29tbWFuZCAqLwotLSNkZWZpbmUgUkxf U1RBVEVfVklDTURPTkNFCTB4NDAwMDAwCS8qIGVudGVyZWQgdmkgY29tbWFuZCBtb2RlIGF0IGxl YXN0IG9uY2UgKi8KLSsjZGVmaW5lIFJMX1NUQVRFX0lOSVRJQUxJWklORwkweDAwMDAwMDEJLyog aW5pdGlhbGl6aW5nICovCi0rI2RlZmluZSBSTF9TVEFURV9JTklUSUFMSVpFRAkweDAwMDAwMDIJ LyogaW5pdGlhbGl6YXRpb24gZG9uZSAqLwotKyNkZWZpbmUgUkxfU1RBVEVfVEVSTVBSRVBQRUQJ MHgwMDAwMDA0CS8qIHRlcm1pbmFsIGlzIHByZXBwZWQgKi8KLSsjZGVmaW5lIFJMX1NUQVRFX1JF QURDTUQJMHgwMDAwMDA4CS8qIHJlYWRpbmcgYSBjb21tYW5kIGtleSAqLwotKyNkZWZpbmUgUkxf U1RBVEVfTUVUQU5FWFQJMHgwMDAwMDEwCS8qIHJlYWRpbmcgaW5wdXQgYWZ0ZXIgRVNDICovCi0r I2RlZmluZSBSTF9TVEFURV9ESVNQQVRDSElORwkweDAwMDAwMjAJLyogZGlzcGF0Y2hpbmcgdG8g YSBjb21tYW5kICovCi0rI2RlZmluZSBSTF9TVEFURV9NT1JFSU5QVVQJMHgwMDAwMDQwCS8qIHJl YWRpbmcgbW9yZSBpbnB1dCBpbiBhIGNvbW1hbmQgZnVuY3Rpb24gKi8KLSsjZGVmaW5lIFJMX1NU QVRFX0lTRUFSQ0gJMHgwMDAwMDgwCS8qIGRvaW5nIGluY3JlbWVudGFsIHNlYXJjaCAqLwotKyNk ZWZpbmUgUkxfU1RBVEVfTlNFQVJDSAkweDAwMDAxMDAJLyogZG9pbmcgbm9uLWluYyBzZWFyY2gg Ki8KLSsjZGVmaW5lIFJMX1NUQVRFX1NFQVJDSAkJMHgwMDAwMjAwCS8qIGRvaW5nIGEgaGlzdG9y eSBzZWFyY2ggKi8KLSsjZGVmaW5lIFJMX1NUQVRFX05VTUVSSUNBUkcJMHgwMDAwNDAwCS8qIHJl YWRpbmcgbnVtZXJpYyBhcmd1bWVudCAqLwotKyNkZWZpbmUgUkxfU1RBVEVfTUFDUk9JTlBVVAkw eDAwMDA4MDAJLyogZ2V0dGluZyBpbnB1dCBmcm9tIGEgbWFjcm8gKi8KLSsjZGVmaW5lIFJMX1NU QVRFX01BQ1JPREVGCTB4MDAwMTAwMAkvKiBkZWZpbmluZyBrZXlib2FyZCBtYWNybyAqLwotKyNk ZWZpbmUgUkxfU1RBVEVfT1ZFUldSSVRFCTB4MDAwMjAwMAkvKiBvdmVyd3JpdGUgbW9kZSAqLwot KyNkZWZpbmUgUkxfU1RBVEVfQ09NUExFVElORwkweDAwMDQwMDAJLyogZG9pbmcgY29tcGxldGlv biAqLwotKyNkZWZpbmUgUkxfU1RBVEVfU0lHSEFORExFUgkweDAwMDgwMDAJLyogaW4gcmVhZGxp bmUgc2lnaGFuZGxlciAqLwotKyNkZWZpbmUgUkxfU1RBVEVfVU5ET0lORwkweDAwMTAwMDAJLyog ZG9pbmcgYW4gdW5kbyAqLwotKyNkZWZpbmUgUkxfU1RBVEVfSU5QVVRQRU5ESU5HCTB4MDAyMDAw MAkvKiBybF9leGVjdXRlX25leHQgY2FsbGVkICovCi0rI2RlZmluZSBSTF9TVEFURV9UVFlDU0FW RUQJMHgwMDQwMDAwCS8qIHR0eSBzcGVjaWFsIGNoYXJzIHNhdmVkICovCi0rI2RlZmluZSBSTF9T VEFURV9DQUxMQkFDSwkweDAwODAwMDAJLyogdXNpbmcgdGhlIGNhbGxiYWNrIGludGVyZmFjZSAq LwotKyNkZWZpbmUgUkxfU1RBVEVfVklNT1RJT04JMHgwMTAwMDAwCS8qIHJlYWRpbmcgdmkgbW90 aW9uIGFyZyAqLwotKyNkZWZpbmUgUkxfU1RBVEVfTVVMVElLRVkJMHgwMjAwMDAwCS8qIHJlYWRp bmcgbXVsdGlwbGUta2V5IGNvbW1hbmQgKi8KLSsjZGVmaW5lIFJMX1NUQVRFX1ZJQ01ET05DRQkw eDA0MDAwMDAJLyogZW50ZXJlZCB2aSBjb21tYW5kIG1vZGUgYXQgbGVhc3Qgb25jZSAqLwotKyNk ZWZpbmUgUkxfU1RBVEVfUkVESVNQTEFZSU5HCTB4MDgwMDAwMAkvKiB1cGRhdGluZyB0ZXJtaW5h bCBkaXNwbGF5ICovCi0gCi0tI2RlZmluZSBSTF9TVEFURV9ET05FCQkweDgwMDAwMAkvKiBkb25l OyBhY2NlcHRlZCBsaW5lICovCi0rI2RlZmluZSBSTF9TVEFURV9ET05FCQkweDEwMDAwMDAJLyog ZG9uZTsgYWNjZXB0ZWQgbGluZSAqLwotIAotICNkZWZpbmUgUkxfU0VUU1RBVEUoeCkJCShybF9y ZWFkbGluZV9zdGF0ZSB8PSAoeCkpCi0gI2RlZmluZSBSTF9VTlNFVFNUQVRFKHgpCShybF9yZWFk bGluZV9zdGF0ZSAmPSB+KHgpKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUv cmxjb25mLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxp bmUvcmxjb25mLmgJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3JsY29uZi5oCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAw MDAwMDAwICswMjAwCi1AQCAtMSwyNSArMSwyMyBAQAotIC8qIHJsY29uZi5oIC0tIHJlYWRsaW5l IGNvbmZpZ3VyYXRpb24gZGVmaW5pdGlvbnMgKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5OTQg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAxOTkyLTIw MDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxlIGNvbnRh aW5zIHRoZSBSZWFkbGluZSBMaWJyYXJ5ICh0aGUgTGlicmFyeSksIGEgc2V0IG9mCi0tICAgcm91 dGluZXMgZm9yIHByb3ZpZGluZyBFbWFjcyBzdHlsZSBsaW5lIGlucHV0IHRvIHByb2dyYW1zIHRo YXQgYXNrCi0tICAgZm9yIGl0LgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVh ZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5l cyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAg ICAKLSAKLS0gICBUaGUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlv dXIgb3B0aW9uKQotLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgTGlicmFyeSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLS0gICBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZSBHTlUKLS0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0tCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBw ZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmls ZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBj b3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4g Ki8KLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRo IFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgot KyovCi0gCi0gI2lmICFkZWZpbmVkIChfUkxDT05GX0hfKQotICNkZWZpbmUgX1JMQ09ORl9IXwot QEAgLTM3LDkgKzM1LDEyIEBACi0gLyogVWdseSBidXQgd29ya2luZyBoYWNrIGZvciBiaW5kaW5n IHByZWZpeCBtZXRhLiAqLwotICNkZWZpbmUgUFJFRklYX01FVEFfSEFDSwotIAotLS8qIFRoZSBm aW5hbCwgbGFzdC1kaXRjaCBlZmZvcnQgZmlsZSBuYW1lIGZvciBhbiBpbml0IGZpbGUuICovCi0r LyogVGhlIG5leHQtdG8tbGFzdC1kaXRjaCBlZmZvcnQgZmlsZSBuYW1lIGZvciBhIHVzZXItc3Bl Y2lmaWMgaW5pdCBmaWxlLiAqLwotICNkZWZpbmUgREVGQVVMVF9JTlBVVFJDICJ+Ly5pbnB1dHJj IgotIAotKy8qIFRoZSB1bHRpbWF0ZSBsYXN0LWRpdGNoIGZpbGVubmFtZSBmb3IgYW4gaW5pdCBm aWxlIC0tIHN5c3RlbS13aWRlLiAqLwotKyNkZWZpbmUgU1lTX0lOUFVUUkMgIi9ldGMvaW5wdXRy YyIKLSsKLSAvKiBJZiBkZWZpbmVkLCBleHBhbmQgdGFicyB0byBzcGFjZXMuICovCi0gI2RlZmlu ZSBESVNQTEFZX1RBQlMKLSAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3Js ZGVmcy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5l L3JsZGVmcy5oCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDcwMy9yZWFkbGluZS9ybGRlZnMuaAkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAw MDAwMCArMDIwMAotQEAgLTIsMjYgKzIsMjQgQEAKLSAgICBmb3IgcmVhZGxpbmUuICBUaGlzIHNo b3VsZCBiZSBpbmNsdWRlZCBhZnRlciBhbnkgZmlsZXMgdGhhdCBkZWZpbmUKLSAgICBzeXN0ZW0t c3BlY2lmaWMgY29uc3RhbnRzIGxpa2UgX1BPU0lYX1ZFUlNJT04gb3IgVVNHLiAqLwotIAotLS8q IENvcHlyaWdodCAoQykgMTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot Ky8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotIAotLSAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgUmVhZGxpbmUgTGlicmFyeSAodGhlIExp YnJhcnkpLCBhIHNldCBvZgotLSAgIHJvdXRpbmVzIGZvciBwcm92aWRpbmcgRW1hY3Mgc3R5bGUg bGluZSBpbnB1dCB0byBwcm9ncmFtcyB0aGF0IGFzawotLSAgIGZvciBpdC4KLSsgICBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJy YXJ5Ci0rICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0 IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCi0gCi0tICAgVGhlIExpYnJhcnkgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIFJlYWRs aW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0gICBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0gCi0tICAgVGhlIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwgYnV0Ci0tICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBp cyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElm IHlvdSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMz MCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAotICNpZiAhZGVmaW5lZCAoX1JMREVGU19I XykKLSAjZGVmaW5lIF9STERFRlNfSF8KLUBAIC0zMiw2ICszMCwxMCBAQAotIAotICNpbmNsdWRl ICJybHN0ZGMuaCIKLSAKLSsjaWYgZGVmaW5lZCAoU1RSQ09MTF9CUk9LRU4pCi0rIyAgdW5kZWYg SEFWRV9TVFJDT0xMCi0rI2VuZGlmCi0rCi0gI2lmIGRlZmluZWQgKF9QT1NJWF9WRVJTSU9OKSAm JiAhZGVmaW5lZCAoVEVSTUlPU19NSVNTSU5HKQotICMgIGRlZmluZSBURVJNSU9TX1RUWV9EUklW RVIKLSAjZWxzZQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvcmxtYnV0aWwu aAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9ybG1i dXRpbC5oCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45 MC4yMDExMDcwMy9yZWFkbGluZS9ybG1idXRpbC5oCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAw MDAwICswMjAwCi1AQCAtMSwyNCArMSwyMyBAQAotIC8qIHJsbWJ1dGlsLmggLS0gdXRpbGl0eSBm dW5jdGlvbnMgZm9yIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLiAqLwotIAotLS8qIENvcHlyaWdodCAo QykgMjAwMSwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmln aHQgKEMpIDIwMDEtMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBm b3IKLS0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQg aGlzdG9yeSBlZGl0aW5nLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxp bmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBv ZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAK LSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQKLS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFk bGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0g ICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0g ICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4g IElmIHlvdSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl IDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3 aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgotKyovCi0gCi0gI2lmICFkZWZpbmVkIChfUkxfTUJVVElMX0hfKQotICNkZWZpbmUgX1JMX01C VVRJTF9IXwotQEAgLTMwLDIyICsyOSwyMSBAQAotIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCi0gCi0gLyogRm9yIHBsYXRmb3JtcyB3aGljaCBzdXBw b3J0IHRoZSBJU08gQyBhbWVuZGVtZW50IDEgZnVuY3Rpb25hbGl0eSB3ZQotLSAgIHN1cHBvcnQg dXNlciBkZWZpbmVkIGNoYXJhY3RlciBjbGFzc2VzLgotLQotLSAgIFNvbWUgcGxhdGZvcm1zIGhh dmUgdGhlIG11bHRpYnl0ZSBmdW5jdGlvbnMgc3VjaCBhcyBtYnNydG93Y3MgYnV0Ci0tICAgYXJl IGxhY2tpbmcgdGhlIG11bHRpdHlwZSB0eXBlIG1ic3RhdGVfdC4gIEJlT1MgKHVua25vd24gdmVy c2lvbikKLS0gICBhbmQgSFAvVVggMTEuMjMgd2l0aG91dCBfWE9QRU5fU09VUkNFPTUwMCBhcmUg bGlrZSB0aGlzLgotLQotLSAgIFdlIHJlYWxseSBuZWVkIG1ic3RhdGVfdCB0eXBlIHRvIG9wZXJh dGUgcHJvcGVybHkuICBGb3IgZXhhbXBsZSwgc2VlCi0tICAgY29tcHV0ZV9sY2Rfb2ZfbWF0Y2hl cywgd2hlcmUgdHdvIG1ic3RhdGVfdCdzIGFyZSBhY3RpdmUgYXQgdGhlIHNhbWUKLS0gICB0aW1l LiAgU28gd2UgcmVxdWlyZSBib3RoIHRoZSBmdW5jdGlvbnMgYW5kIHRoZSBtYnN0YXRlX3QgdHlw ZSBpbgotLSAgIG9yZGVyIHRvIGVuYWJsZSBtdWx0aWJ5dGUgc3VwcG9ydC4gICovCi0tCi0rICAg c3VwcG9ydCB1c2VyIGRlZmluZWQgY2hhcmFjdGVyIGNsYXNzZXMuICAqLwotICAgIC8qIFNvbGFy aXMgMi41IGhhcyBhIGJ1ZzogPHdjaGFyLmg+IG11c3QgYmUgaW5jbHVkZWQgYmVmb3JlIDx3Y3R5 cGUuaD4uICAqLwotLSNpZiBkZWZpbmVkIChIQVZFX1dDVFlQRV9IKSAmJiBkZWZpbmVkIChIQVZF X1dDSEFSX0gpCi0rI2lmIGRlZmluZWQgKEhBVkVfV0NUWVBFX0gpICYmIGRlZmluZWQgKEhBVkVf V0NIQVJfSCkgJiYgZGVmaW5lZCAoSEFWRV9MT0NBTEVfSCkKLSAjICBpbmNsdWRlIDx3Y2hhci5o PgotICMgIGluY2x1ZGUgPHdjdHlwZS5oPgotLSMgIGlmIGRlZmluZWQgKEhBVkVfTUJTVEFURV9U KSAmJiBkZWZpbmVkIChIQVZFX01CU1JUT1dDUykgJiYgZGVmaW5lZCAoSEFWRV9NQlJUT1dDKSAm JiBkZWZpbmVkIChIQVZFX01CUkxFTikgJiYgZGVmaW5lZCAoSEFWRV9XQ1dJRFRIKQotKyMgIGlm IGRlZmluZWQgKEhBVkVfSVNXQ1RZUEUpICYmIFwKLSsgICAgICBkZWZpbmVkIChIQVZFX0lTV0xP V0VSKSAmJiBcCi0rICAgICAgZGVmaW5lZCAoSEFWRV9JU1dVUFBFUikgJiYgXAotKyAgICAgIGRl ZmluZWQgKEhBVkVfTUJTUlRPV0NTKSAmJiBcCi0rICAgICAgZGVmaW5lZCAoSEFWRV9NQlJUT1dD KSAmJiBcCi0rICAgICAgZGVmaW5lZCAoSEFWRV9NQlJMRU4pICYmIFwKLSsgICAgICBkZWZpbmVk IChIQVZFX1RPV0xPV0VSKSAmJiBcCi0rICAgICAgZGVmaW5lZCAoSEFWRV9UT1dVUFBFUikgJiYg XAotKyAgICAgIGRlZmluZWQgKEhBVkVfV0NIQVJfVCkgJiYgXAotKyAgICAgIGRlZmluZWQgKEhB VkVfV0NXSURUSCkKLSAgICAgIC8qIHN5c3RlbSBpcyBzdXBwb3NlZCB0byBzdXBwb3J0IFhQRzUg Ki8KLSAjICAgIGRlZmluZSBIQU5ETEVfTVVMVElCWVRFICAgICAgMQotICMgIGVuZGlmCi1JbmRl eDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9ybHByaXZhdGUuaAotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9ybHByaXZhdGUuaAkyMDExLTA3 LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVh ZGxpbmUvcmxwcml2YXRlLmgJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBA IC0xLDI1ICsxLDI0IEBACi0gLyogcmxwcml2YXRlLmggLS0gZnVuY3Rpb25zIGFuZCB2YXJpYWJs ZXMgZ2xvYmFsIHRvIHRoZSByZWFkbGluZSBsaWJyYXJ5LAotIAkJICBidXQgbm90IGludGVuZGVk IGZvciB1c2UgYnkgYXBwbGljYXRpb25zLiAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk5OS0y MDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk5 OS0yMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAgIHJl YWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVk aXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5 IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0 aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAgIFRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZy ZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVy YWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRv IG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0 b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxp bmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSAK LSAjaWYgIWRlZmluZWQgKF9STF9QUklWQVRFX0hfKQotICNkZWZpbmUgX1JMX1BSSVZBVEVfSF8K LUBAIC0zMCw2ICsyOSwyMSBAQAotIAotIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICoJCQkJCQkJCQkg KgotKyAqIENvbnZlbmllbmNlIGRlZmluaXRpb25zCQkJCQkJICoKLSsgKgkJCQkJCQkJCSAqCi0r ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCi0rCi0rI2RlZmluZSBFTUFDU19NT0RFKCkJCShybF9lZGl0aW5n X21vZGUgPT0gZW1hY3NfbW9kZSkKLSsjZGVmaW5lIFZJX0NPTU1BTkRfTU9ERSgpCShybF9lZGl0 aW5nX21vZGUgPT0gdmlfbW9kZSAmJiBfcmxfa2V5bWFwID09IHZpX21vdmVtZW50X2tleW1hcCkK LSsjZGVmaW5lIFZJX0lOU0VSVF9NT0RFKCkJKHJsX2VkaXRpbmdfbW9kZSA9PSB2aV9tb2RlICYm IF9ybF9rZXltYXAgPT0gdmlfaW5zZXJ0aW9uX2tleW1hcCkKLSsKLSsjZGVmaW5lIFJMX0NIRUNL X1NJR05BTFMoKSBcCi0rCWRvIHsgXAotKwkgIGlmIChfcmxfY2F1Z2h0X3NpZ25hbCkgX3JsX3Np Z25hbF9oYW5kbGVyIChfcmxfY2F1Z2h0X3NpZ25hbCk7IFwKLSsJfSB3aGlsZSAoMCkKLSsKLSsv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgotKyAqCQkJCQkJCQkJICoKLSAgKiBHbG9iYWwgc3RydWN0cyB1bmRv Y3VtZW50ZWQgaW4gdGV4aW5mbyBtYW51YWwgYW5kIG5vdCBpbiByZWFkbGluZS5oICAgKgotICAq CQkJCQkJCQkJICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLUBAIC00Miw2ICs1Niw3IEBACi0gI2Rl ZmluZSBTRl9SRVZFUlNFCQkweDAxCi0gI2RlZmluZSBTRl9GT1VORAkJMHgwMgotICNkZWZpbmUg U0ZfRkFJTEVECQkweDA0Ci0rI2RlZmluZSBTRl9DSEdLTUFQCQkweDA4Ci0gCi0gdHlwZWRlZiBz dHJ1Y3QgIF9fcmxfc2VhcmNoX2NvbnRleHQKLSB7Ci1AQCAtNjUsNiArODAsOSBAQCB0eXBlZGVm IHN0cnVjdCAgX19ybF9zZWFyY2hfY29udGV4dAotIAotICAgVU5ET19MSVNUICpzYXZlX3VuZG9f bGlzdDsKLSAKLSsgIEtleW1hcCBrZXltYXA7CS8qIHVzZWQgd2hlbiBkaXNwYXRjaGluZyBjb21t YW5kcyBpbiBzZWFyY2ggc3RyaW5nICovCi0rICBLZXltYXAgb2tleW1hcDsJLyogb3JpZ2luYWwg a2V5bWFwICovCi0rCi0gICBpbnQgaGlzdG9yeV9wb3M7Ci0gICBpbnQgZGlyZWN0aW9uOwotIAot QEAgLTEwNiw3ICsxMjQsMjggQEAgdHlwZWRlZiBzdHJ1Y3QgX19ybF9rZXlzZXFfY29udGV4dAot ICAgaW50IGNoaWxkdmFsOwotIH0gX3JsX2tleXNlcV9jeHQ7Ci0gCi0tICAvKiBmaWxsIGluIG1v cmUgYXMgbmVlZGVkICovCi0rLyogdmktbW9kZSBjb21tYW5kcyB0aGF0IHVzZSByZXN1bHQgb2Yg bW90aW9uIGNvbW1hbmQgdG8gZGVmaW5lIGJvdW5kYXJpZXMgKi8KLSsjZGVmaW5lIFZJTV9ERUxF VEUJMHgwMQotKyNkZWZpbmUgVklNX0NIQU5HRQkweDAyCi0rI2RlZmluZSBWSU1fWUFOSwkweDA0 Ci0rCi0rLyogdmFyaW91cyBzdGF0ZXMgZm9yIHZpLW1vZGUgY29tbWFuZHMgdGhhdCB1c2UgbW90 aW9uIGNvbW1hbmRzLiAgcmVmbGVjdHMKLSsgICBSTF9SRUFETElORV9TVEFURSAqLwotKyNkZWZp bmUgVk1TVEFURV9SRUFECTB4MDEKLSsjZGVmaW5lIFZNU1RBVEVfTlVNQVJHCTB4MDIKLSsKLSt0 eXBlZGVmIHN0cnVjdCBfX3JsX3ZpbW90aW9uX2NvbnRleHQKLSt7Ci0rICBpbnQgb3A7Ci0rICBp bnQgc3RhdGU7Ci0rICBpbnQgZmxhZ3M7CQkvKiByZXNlcnZlZCAqLwotKyAgX3JsX2FyZ19jeHQg bmN4dDsKLSsgIGludCBudW1lcmljX2FyZzsKLSsgIGludCBzdGFydCwgZW5kOwkvKiBybF9wb2lu dCwgcmxfZW5kICovCi0rICBpbnQga2V5LCBtb3Rpb247CS8qIGluaXRpYWwga2V5LCBtb3Rpb24g Y29tbWFuZCAqLwotK30gX3JsX3ZpbW90aW9uX2N4dDsKLSsKLSsvKiBmaWxsIGluIG1vcmUgYXMg bmVlZGVkICovCi0gLyogYEdlbmVyaWMnIGNhbGxiYWNrIGRhdGEgYW5kIGZ1bmN0aW9ucyAqLwot IHR5cGVkZWYgc3RydWN0IF9fcmxfY2FsbGJhY2tfZ2VuZXJpY19hcmcgCi0gewotQEAgLTEzOSwx MiArMTc4LDkgQEAgZXh0ZXJuIGludCBybF92aXNpYmxlX3N0YXRzOwotIGV4dGVybiBpbnQgcmxf bGluZV9idWZmZXJfbGVuOwotIGV4dGVybiBpbnQgcmxfYXJnX3NpZ247Ci0gZXh0ZXJuIGludCBy bF92aXNpYmxlX3Byb21wdF9sZW5ndGg7Ci0tZXh0ZXJuIGludCByZWFkbGluZV9lY2hvaW5nX3A7 Ci0gZXh0ZXJuIGludCBybF9rZXlfc2VxdWVuY2VfbGVuZ3RoOwotIGV4dGVybiBpbnQgcmxfYnl0 ZV9vcmllbnRlZDsKLSAKLS1leHRlcm4gX3JsX2tleXNlcV9jeHQgKl9ybF9rc2N4dDsKLS0KLSAv KiBkaXNwbGF5LmMgKi8KLSBleHRlcm4gaW50IHJsX2Rpc3BsYXlfZml4ZWQ7Ci0gCi1AQCAtMjA2 LDYgKzI0Miw3IEBAIGV4dGVybiB2b2lkIF9ybF9jYWxsYmFja19kYXRhX2Rpc3Bvc2UgUEEKLSAv KiBiaW5kLmMgKi8KLSAKLSAvKiBjb21wbGV0ZS5jICovCi0rZXh0ZXJuIHZvaWQgX3JsX3Jlc2V0 X2NvbXBsZXRpb25fc3RhdGUgUEFSQU1TKCh2b2lkKSk7Ci0gZXh0ZXJuIGNoYXIgX3JsX2ZpbmRf Y29tcGxldGlvbl93b3JkIFBBUkFNUygoaW50ICosIGludCAqKSk7Ci0gZXh0ZXJuIHZvaWQgX3Js X2ZyZWVfbWF0Y2hfbGlzdCBQQVJBTVMoKGNoYXIgKiopKTsKLSAKLUBAIC0yNjEsNiArMjk4LDgg QEAgZXh0ZXJuIHZvaWQgX3JsX3N0YXJ0X3VzaW5nX2hpc3RvcnkgUEFSQQotIGV4dGVybiBpbnQg X3JsX2ZyZWVfc2F2ZWRfaGlzdG9yeV9saW5lIFBBUkFNUygodm9pZCkpOwotIGV4dGVybiB2b2lk IF9ybF9zZXRfaW5zZXJ0X21vZGUgUEFSQU1TKChpbnQsIGludCkpOwotIAotK2V4dGVybiB2b2lk IF9ybF9yZXZlcnRfYWxsX2xpbmVzIFBBUkFNUygodm9pZCkpOwotKwotIC8qIG5scy5jICovCi0g ZXh0ZXJuIGludCBfcmxfaW5pdF9laWdodGJpdCBQQVJBTVMoKHZvaWQpKTsKLSAKLUBAIC0yODEs NiArMzIwLDE0IEBAIGV4dGVybiBpbnQgX3JsX3Jlc3RvcmVfdHR5X3NpZ25hbHMgUEFSQU0KLSAv KiBzZWFyY2guYyAqLwotIGV4dGVybiBpbnQgX3JsX25zZWFyY2hfY2FsbGJhY2sgUEFSQU1TKChf cmxfc2VhcmNoX2N4dCAqKSk7Ci0gCi0rLyogc2lnbmFscy5jICovCi0rZXh0ZXJuIHZvaWQgX3Js X3NpZ25hbF9oYW5kbGVyIFBBUkFNUygoaW50KSk7Ci0rCi0rZXh0ZXJuIHZvaWQgX3JsX2Jsb2Nr X3NpZ2ludCBQQVJBTVMoKHZvaWQpKTsKLStleHRlcm4gdm9pZCBfcmxfcmVsZWFzZV9zaWdpbnQg UEFSQU1TKCh2b2lkKSk7Ci0rZXh0ZXJuIHZvaWQgX3JsX2Jsb2NrX3NpZ3dpbmNoIFBBUkFNUygo dm9pZCkpOwotK2V4dGVybiB2b2lkIF9ybF9yZWxlYXNlX3NpZ3dpbmNoIFBBUkFNUygodm9pZCkp OwotKwotIC8qIHRlcm1pbmFsLmMgKi8KLSBleHRlcm4gdm9pZCBfcmxfZ2V0X3NjcmVlbl9zaXpl IFBBUkFNUygoaW50LCBpbnQpKTsKLSBleHRlcm4gaW50IF9ybF9pbml0X3Rlcm1pbmFsX2lvIFBB UkFNUygoY29uc3QgY2hhciAqKSk7Ci1AQCAtMjk4LDYgKzM0NSw3IEBAIGV4dGVybiB2b2lkIF9y bF9zZXRfY3Vyc29yIFBBUkFNUygoaW50LCAKLSAvKiB0ZXh0LmMgKi8KLSBleHRlcm4gdm9pZCBf cmxfZml4X3BvaW50IFBBUkFNUygoaW50KSk7Ci0gZXh0ZXJuIGludCBfcmxfcmVwbGFjZV90ZXh0 IFBBUkFNUygoY29uc3QgY2hhciAqLCBpbnQsIGludCkpOwotK2V4dGVybiBpbnQgX3JsX2Zvcndh cmRfY2hhcl9pbnRlcm5hbCBQQVJBTVMoKGludCkpOwotIGV4dGVybiBpbnQgX3JsX2luc2VydF9j aGFyIFBBUkFNUygoaW50LCBpbnQpKTsKLSBleHRlcm4gaW50IF9ybF9vdmVyd3JpdGVfY2hhciBQ QVJBTVMoKGludCwgaW50KSk7Ci0gZXh0ZXJuIGludCBfcmxfb3ZlcndyaXRlX3J1Ym91dCBQQVJB TVMoKGludCwgaW50KSk7Ci1AQCAtMzA5LDggKzM1NywyNSBAQCBleHRlcm4gaW50IF9ybF9jaGFy X3NlYXJjaF9pbnRlcm5hbCBQQVJBCi0gI2VuZGlmCi0gZXh0ZXJuIGludCBfcmxfc2V0X21hcmtf YXRfcG9zIFBBUkFNUygoaW50KSk7Ci0gCi0rLyogdW5kby5jICovCi0rZXh0ZXJuIFVORE9fTElT VCAqX3JsX2NvcHlfdW5kb19lbnRyeSBQQVJBTVMoKFVORE9fTElTVCAqKSk7Ci0rZXh0ZXJuIFVO RE9fTElTVCAqX3JsX2NvcHlfdW5kb19saXN0IFBBUkFNUygoVU5ET19MSVNUICopKTsKLSsKLSAv KiB1dGlsLmMgKi8KLSsjaWYgZGVmaW5lZCAoVVNFX1ZBUkFSR1MpICYmIGRlZmluZWQgKFBSRUZF Ul9TVERBUkcpCi0rZXh0ZXJuIHZvaWQgX3JsX3R0eW1zZyAoY29uc3QgY2hhciAqLCAuLi4pICBf X2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChwcmludGYsIDEsIDIpKSk7Ci0rZXh0ZXJuIHZvaWQg X3JsX2Vycm1zZyAoY29uc3QgY2hhciAqLCAuLi4pICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9f IChwcmludGYsIDEsIDIpKSk7Ci0rZXh0ZXJuIHZvaWQgX3JsX3RyYWNlIChjb25zdCBjaGFyICos IC4uLikgIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKHByaW50ZiwgMSwgMikpKTsKLSsjZWxz ZQotK2V4dGVybiB2b2lkIF9ybF90dHltc2cgKCk7Ci0rZXh0ZXJuIHZvaWQgX3JsX2Vycm1zZyAo KTsKLStleHRlcm4gdm9pZCBfcmxfdHJhY2UgKCk7Ci0rI2VuZGlmCi0rCi0rZXh0ZXJuIGludCBf cmxfdHJvcGVuIFBBUkFNUygodm9pZCkpOwotKwotIGV4dGVybiBpbnQgX3JsX2Fib3J0X2ludGVy bmFsIFBBUkFNUygodm9pZCkpOwotK2V4dGVybiBpbnQgX3JsX251bGxfZnVuY3Rpb24gUEFSQU1T KChpbnQsIGludCkpOwotIGV4dGVybiBjaGFyICpfcmxfc3RyaW5kZXggUEFSQU1TKChjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKikpOwotIGV4dGVybiBpbnQgX3JsX3Fzb3J0X3N0cmluZ19jb21w YXJlIFBBUkFNUygoY2hhciAqKiwgY2hhciAqKikpOwotIGV4dGVybiBpbnQgKF9ybF91cHBlcmNh c2VfcCkgUEFSQU1TKChpbnQpKTsKLUBAIC0zMjcsMTQgKzM5MiwxNSBAQCBleHRlcm4gdm9pZCBf cmxfdmlfcmVzZXRfbGFzdCBQQVJBTVMoKHZvCi0gZXh0ZXJuIHZvaWQgX3JsX3ZpX3NldF9sYXN0 IFBBUkFNUygoaW50LCBpbnQsIGludCkpOwotIGV4dGVybiBpbnQgX3JsX3ZpX3RleHRtb2RfY29t bWFuZCBQQVJBTVMoKGludCkpOwotIGV4dGVybiB2b2lkIF9ybF92aV9kb25lX2luc2VydGluZyBQ QVJBTVMoKHZvaWQpKTsKLStleHRlcm4gaW50IF9ybF92aV9kb21vdmVfY2FsbGJhY2sgUEFSQU1T KChfcmxfdmltb3Rpb25fY3h0ICopKTsKLSAKLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIFVuZG9j dW1lbnRlZCBwcml2YXRlIHZhcmlhYmxlcwkJCQkJICoKLSAgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAK LSAvKiBiaW5kLmMgKi8KLS1leHRlcm4gY29uc3QgY2hhciAqX3JsX3Bvc3NpYmxlX2NvbnRyb2xf cHJlZml4ZXNbXTsKLS1leHRlcm4gY29uc3QgY2hhciAqX3JsX3Bvc3NpYmxlX21ldGFfcHJlZml4 ZXNbXTsKLStleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IF9ybF9wb3NzaWJsZV9jb250cm9sX3By ZWZpeGVzW107Ci0rZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBfcmxfcG9zc2libGVfbWV0YV9w cmVmaXhlc1tdOwotIAotIC8qIGNhbGxiYWNrLmMgKi8KLSBleHRlcm4gX3JsX2NhbGxiYWNrX2Z1 bmNfdCAqX3JsX2NhbGxiYWNrX2Z1bmM7Ci1AQCAtMzQ1LDE3ICs0MTEsMjEgQEAgZXh0ZXJuIGlu dCBfcmxfY29tcGxldGVfc2hvd19hbGw7Ci0gZXh0ZXJuIGludCBfcmxfY29tcGxldGVfc2hvd191 bm1vZGlmaWVkOwotIGV4dGVybiBpbnQgX3JsX2NvbXBsZXRlX21hcmtfZGlyZWN0b3JpZXM7Ci0g ZXh0ZXJuIGludCBfcmxfY29tcGxldGVfbWFya19zeW1saW5rX2RpcnM7Ci0rZXh0ZXJuIGludCBf cmxfY29tcGxldGlvbl9wcmVmaXhfZGlzcGxheV9sZW5ndGg7Ci0rZXh0ZXJuIGludCBfcmxfY29t cGxldGlvbl9jb2x1bW5zOwotIGV4dGVybiBpbnQgX3JsX3ByaW50X2NvbXBsZXRpb25zX2hvcml6 b250YWxseTsKLSBleHRlcm4gaW50IF9ybF9jb21wbGV0aW9uX2Nhc2VfZm9sZDsKLStleHRlcm4g aW50IF9ybF9jb21wbGV0aW9uX2Nhc2VfbWFwOwotIGV4dGVybiBpbnQgX3JsX21hdGNoX2hpZGRl bl9maWxlczsKLSBleHRlcm4gaW50IF9ybF9wYWdlX2NvbXBsZXRpb25zOwotK2V4dGVybiBpbnQg X3JsX3NraXBfY29tcGxldGVkX3RleHQ7Ci0rZXh0ZXJuIGludCBfcmxfbWVudV9jb21wbGV0ZV9w cmVmaXhfZmlyc3Q7Ci0gCi0gLyogZGlzcGxheS5jICovCi0gZXh0ZXJuIGludCBfcmxfdmlzX2Jv dGxpbjsKLSBleHRlcm4gaW50IF9ybF9sYXN0X2NfcG9zOwotIGV4dGVybiBpbnQgX3JsX3N1cHBy ZXNzX3JlZGlzcGxheTsKLSBleHRlcm4gaW50IF9ybF93YW50X3JlZGlzcGxheTsKLS1leHRlcm4g Y2hhciAqcmxfZGlzcGxheV9wcm9tcHQ7Ci0gCi0gLyogaXNlYXJjaC5jICovCi0gZXh0ZXJuIGNo YXIgKl9ybF9pc2VhcmNoX3Rlcm1pbmF0b3JzOwotQEAgLTM3Miw2ICs0NDIsNyBAQCBleHRlcm4g aW50IF9ybF9oaXN0b3J5X3NhdmVkX3BvaW50OwotIGV4dGVybiBfcmxfYXJnX2N4dCBfcmxfYXJn Y3h0OwotIAotIC8qIHJlYWRsaW5lLmMgKi8KLStleHRlcm4gaW50IF9ybF9lY2hvaW5nX3A7Ci0g ZXh0ZXJuIGludCBfcmxfaG9yaXpvbnRhbF9zY3JvbGxfbW9kZTsKLSBleHRlcm4gaW50IF9ybF9t YXJrX21vZGlmaWVkX2xpbmVzOwotIGV4dGVybiBpbnQgX3JsX2JlbGxfcHJlZmVyZW5jZTsKLUBA IC0zNzksNiArNDUwLDggQEAgZXh0ZXJuIGludCBfcmxfbWV0YV9mbGFnOwotIGV4dGVybiBpbnQg X3JsX2NvbnZlcnRfbWV0YV9jaGFyc190b19hc2NpaTsKLSBleHRlcm4gaW50IF9ybF9vdXRwdXRf bWV0YV9jaGFyczsKLSBleHRlcm4gaW50IF9ybF9iaW5kX3N0dHlfY2hhcnM7Ci0rZXh0ZXJuIGlu dCBfcmxfcmV2ZXJ0X2FsbF9hdF9uZXdsaW5lOwotK2V4dGVybiBpbnQgX3JsX2VjaG9fY29udHJv bF9jaGFyczsKLSBleHRlcm4gY2hhciAqX3JsX2NvbW1lbnRfYmVnaW47Ci0gZXh0ZXJuIHVuc2ln bmVkIGNoYXIgX3JsX3BhcnNpbmdfY29uZGl0aW9uYWxpemVkX291dDsKLSBleHRlcm4gS2V5bWFw IF9ybF9rZXltYXA7Ci1AQCAtMzg2LDExICs0NTksMjIgQEAgZXh0ZXJuIEZJTEUgKl9ybF9pbl9z dHJlYW07Ci0gZXh0ZXJuIEZJTEUgKl9ybF9vdXRfc3RyZWFtOwotIGV4dGVybiBpbnQgX3JsX2xh c3RfY29tbWFuZF93YXNfa2lsbDsKLSBleHRlcm4gaW50IF9ybF9lb2ZfY2hhcjsKLS1leHRlcm4g cHJvY2Vudl90IHJlYWRsaW5lX3RvcF9sZXZlbDsKLStleHRlcm4gcHJvY2Vudl90IF9ybF90b3Bf bGV2ZWw7Ci0rZXh0ZXJuIF9ybF9rZXlzZXFfY3h0ICpfcmxfa3NjeHQ7Ci0gCi0gLyogc2VhcmNo LmMgKi8KLSBleHRlcm4gX3JsX3NlYXJjaF9jeHQgKl9ybF9uc2N4dDsKLSAKLSsvKiBzaWduYWxz LmMgKi8KLStleHRlcm4gaW50IF9ybF9pbnRlcnJ1cHRfaW1tZWRpYXRlbHk7Ci0rZXh0ZXJuIGlu dCB2b2xhdGlsZSBfcmxfY2F1Z2h0X3NpZ25hbDsKLSsKLStleHRlcm4gaW50IF9ybF9lY2hvY3Rs OwotKwotK2V4dGVybiBpbnQgX3JsX2ludHJfY2hhcjsKLStleHRlcm4gaW50IF9ybF9xdWl0X2No YXI7Ci0rZXh0ZXJuIGludCBfcmxfc3VzcF9jaGFyOwotKwotIC8qIHRlcm1pbmFsLmMgKi8KLSBl eHRlcm4gaW50IF9ybF9lbmFibGVfa2V5cGFkOwotIGV4dGVybiBpbnQgX3JsX2VuYWJsZV9tZXRh OwotQEAgLTQwNCw2ICs0ODgsNyBAQCBleHRlcm4gY2hhciAqX3JsX3Rlcm1fdXA7Ci0gZXh0ZXJu IGNoYXIgKl9ybF90ZXJtX2RjOwotIGV4dGVybiBjaGFyICpfcmxfdGVybV9jcjsKLSBleHRlcm4g Y2hhciAqX3JsX3Rlcm1fSUM7Ci0rZXh0ZXJuIGNoYXIgKl9ybF90ZXJtX2ZvcndhcmRfY2hhcjsK LSBleHRlcm4gaW50IF9ybF9zY3JlZW5oZWlnaHQ7Ci0gZXh0ZXJuIGludCBfcmxfc2NyZWVud2lk dGg7Ci0gZXh0ZXJuIGludCBfcmxfc2NyZWVuY2hhcnM7Ci1AQCAtNDE2LDUgKzUwMSw2IEBAIGV4 dGVybiBpbnQgX3JsX3VuZG9fZ3JvdXBfbGV2ZWw7Ci0gCi0gLyogdmlfbW9kZS5jICovCi0gZXh0 ZXJuIGludCBfcmxfdmlfbGFzdF9jb21tYW5kOwotK2V4dGVybiBfcmxfdmltb3Rpb25fY3h0ICpf cmxfdmltdmN4dDsKLSAKLSAjZW5kaWYgLyogX1JMX1BSSVZBVEVfSF8gKi8KLUluZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3Jsc2hlbGwuaAotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9ybHNoZWxsLmgJMjAxMS0wNy0wMyAxMDo0MDo1 My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3Jsc2hl bGwuaAkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjMg QEAKLSAvKiBybHNoZWxsLmggLS0gdXRpbGl0eSBmdW5jdGlvbnMgbm9ybWFsbHkgcHJvdmlkZWQg YnkgYmFzaC4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5OTkgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFk bGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCi0tICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdp dGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KLSsgICBUaGlzIGZpbGUg aXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5 Ci0rICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFu ZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5 IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0Ci0tICAgYW5kL29yIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0tICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIsIG9yCi0rICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKLSAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIAotLSAgIFRoZSBH TlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUKLS0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5Ci0tICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIFJlYWRsaW5lIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0gICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSAKLS0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3 aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0tICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNh bGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90Ci0tICAgaGF2ZSBhIGNvcHkg b2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0t ICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwot KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAotICNpZiAhZGVmaW5lZCAoX1JMX1NI RUxMX0hfKQotICNkZWZpbmUgX1JMX1NIRUxMX0hfCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcw My9yZWFkbGluZS9ybHN0ZGMuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMu b3JpZy9yZWFkbGluZS9ybHN0ZGMuaAkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvcmxzdGRjLmgJMjAxMS0wNy0wMyAx MDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDIzICsxLDIzIEBACi0tLyogc3RkYy5oIC0t IG1hY3JvcyB0byBtYWtlIHNvdXJjZSBjb21waWxlIG9uIGJvdGggQU5TSSBDIGFuZCBLJlIgQwot LSAgIGNvbXBpbGVycy4gKi8KLSsvKiBzdGRjLmggLS0gbWFjcm9zIHRvIG1ha2Ugc291cmNlIGNv bXBpbGUgb24gYm90aCBBTlNJIEMgYW5kIEsmUiBDIGNvbXBpbGVycy4gKi8KLSAKLS0vKiBDb3B5 cmlnaHQgKEMpIDE5OTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJp Z2h0IChDKSAxOTkzLTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEJhc2gsIHRoZSBCb3VybmUgQWdhaW4gU0hlbGwuCi0r ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGlu ZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFj dGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAgIEJhc2ggaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotLSAg IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotLQotLSAg IEJhc2ggaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwg YnV0IFdJVEhPVVQKLS0gICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKLS0gICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0tICAgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBSZWFkbGlu ZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0gCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIEJhc2g7IHNlZSB0aGUg ZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotLSAgIFNvZnR3YXJlIEZv dW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVT QS4gKi8KLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0gI2lmICFkZWZpbmVkIChfUkxfU1REQ19IXykK LSAjZGVmaW5lIF9STF9TVERDX0hfCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGlu ZS9ybHR0eS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRs aW5lL3JsdHR5LmMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3JsdHR5LmMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAw MDAwMDAgKzAyMDAKLUBAIC0zLDIzICszLDIzIEBACi0gCi0gLyogQ29weXJpZ2h0IChDKSAxOTky LTIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCi0tICAgcmVh ZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRp dGluZy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkg KFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRo IGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCi0gCi0tICAgVGhl IEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0Ci0tICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCi0rICAgUmVhZGxpbmUgaXMgZnJl ZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKLS0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5Ci0tICAgb2YgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCi0tICAgaXMgZ2VuZXJh bGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8g bm90Ci0tICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rv biwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBSZWFkbGlu ZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotKwot ICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQotIAotICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19I KQotQEAgLTUyLDc3ICs1MiwxMCBAQCBleHRlcm4gaW50IGVycm5vOwotIHJsX3ZpbnRmdW5jX3Qg KnJsX3ByZXBfdGVybV9mdW5jdGlvbiA9IHJsX3ByZXBfdGVybWluYWw7Ci0gcmxfdm9pZGZ1bmNf dCAqcmxfZGVwcmVwX3Rlcm1fZnVuY3Rpb24gPSBybF9kZXByZXBfdGVybWluYWw7Ci0gCi0tdm9p ZCBfcmxfYmxvY2tfc2lnaW50IFBBUkFNUygodm9pZCkpOwotLXZvaWQgX3JsX3JlbGVhc2Vfc2ln aW50IFBBUkFNUygodm9pZCkpOwotLQotIHN0YXRpYyB2b2lkIHNldF93aW5zaXplIFBBUkFNUygo aW50KSk7Ci0gCi0gLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiAqLwotIC8qCQkJCQkJCQkgICAgKi8KLS0vKgkJCSAgIFNp Z25hbCBNYW5hZ2VtZW50CQkJICAgICovCi0tLyoJCQkJCQkJCSAgICAqLwotLS8qICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiog Ki8KLS0KLS0jaWYgZGVmaW5lZCAoSEFWRV9QT1NJWF9TSUdOQUxTKQotLXN0YXRpYyBzaWdzZXRf dCBzaWdpbnRfc2V0LCBzaWdpbnRfb3NldDsKLS0jZWxzZSAvKiAhSEFWRV9QT1NJWF9TSUdOQUxT ICovCi0tIyAgaWYgZGVmaW5lZCAoSEFWRV9CU0RfU0lHTkFMUykKLS1zdGF0aWMgaW50IHNpZ2lu dF9vbGRtYXNrOwotLSMgIGVuZGlmIC8qIEhBVkVfQlNEX1NJR05BTFMgKi8KLS0jZW5kaWYgLyog IUhBVkVfUE9TSVhfU0lHTkFMUyAqLwotLQotLXN0YXRpYyBpbnQgc2lnaW50X2Jsb2NrZWQ7Ci0t Ci0tLyogQ2F1c2UgU0lHSU5UIHRvIG5vdCBiZSBkZWxpdmVyZWQgdW50aWwgdGhlIGNvcnJlc3Bv bmRpbmcgY2FsbCB0bwotLSAgIF9ybF9yZWxlYXNlX3NpZ2ludCgpLiAqLwotLXZvaWQKLS1fcmxf YmxvY2tfc2lnaW50ICgpCi0tewotLSAgaWYgKHNpZ2ludF9ibG9ja2VkKQotLSAgICByZXR1cm47 Ci0tCi0tI2lmIGRlZmluZWQgKEhBVkVfUE9TSVhfU0lHTkFMUykKLS0gIHNpZ2VtcHR5c2V0ICgm c2lnaW50X3NldCk7Ci0tICBzaWdlbXB0eXNldCAoJnNpZ2ludF9vc2V0KTsKLS0gIHNpZ2FkZHNl dCAoJnNpZ2ludF9zZXQsIFNJR0lOVCk7Ci0tICBzaWdwcm9jbWFzayAoU0lHX0JMT0NLLCAmc2ln aW50X3NldCwgJnNpZ2ludF9vc2V0KTsKLS0jZWxzZSAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICov Ci0tIyAgaWYgZGVmaW5lZCAoSEFWRV9CU0RfU0lHTkFMUykKLS0gIHNpZ2ludF9vbGRtYXNrID0g c2lnYmxvY2sgKHNpZ21hc2sgKFNJR0lOVCkpOwotLSMgIGVsc2UgLyogIUhBVkVfQlNEX1NJR05B TFMgKi8KLS0jICAgIGlmIGRlZmluZWQgKEhBVkVfVVNHX1NJR0hPTEQpCi0tICBzaWdob2xkIChT SUdJTlQpOwotLSMgICAgZW5kaWYgLyogSEFWRV9VU0dfU0lHSE9MRCAqLwotLSMgIGVuZGlmIC8q ICFIQVZFX0JTRF9TSUdOQUxTICovCi0tI2VuZGlmIC8qICFIQVZFX1BPU0lYX1NJR05BTFMgKi8K LS0KLS0gIHNpZ2ludF9ibG9ja2VkID0gMTsKLS19Ci0tCi0tLyogQWxsb3cgU0lHSU5UIHRvIGJl IGRlbGl2ZXJlZC4gKi8KLS12b2lkCi0tX3JsX3JlbGVhc2Vfc2lnaW50ICgpCi0tewotLSAgaWYg KHNpZ2ludF9ibG9ja2VkID09IDApCi0tICAgIHJldHVybjsKLS0KLS0jaWYgZGVmaW5lZCAoSEFW RV9QT1NJWF9TSUdOQUxTKQotLSAgc2lncHJvY21hc2sgKFNJR19TRVRNQVNLLCAmc2lnaW50X29z ZXQsIChzaWdzZXRfdCAqKU5VTEwpOwotLSNlbHNlCi0tIyAgaWYgZGVmaW5lZCAoSEFWRV9CU0Rf U0lHTkFMUykKLS0gIHNpZ3NldG1hc2sgKHNpZ2ludF9vbGRtYXNrKTsKLS0jICBlbHNlIC8qICFI QVZFX0JTRF9TSUdOQUxTICovCi0tIyAgICBpZiBkZWZpbmVkIChIQVZFX1VTR19TSUdIT0xEKQot LSAgc2lncmVsc2UgKFNJR0lOVCk7Ci0tIyAgICBlbmRpZiAvKiBIQVZFX1VTR19TSUdIT0xEICov Ci0tIyAgZW5kaWYgLyogIUhBVkVfQlNEX1NJR05BTFMgKi8KLS0jZW5kaWYgLyogIUhBVkVfUE9T SVhfU0lHTkFMUyAqLwotLQotLSAgc2lnaW50X2Jsb2NrZWQgPSAwOwotLX0KLS0KLS0vKiAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqICovCi0tLyoJCQkJCQkJCSAgICAqLwotIC8qCQkgICAgICBTYXZpbmcgYW5kIFJlc3Rvcmlu ZyB0aGUgVFRZCSAgICAJICAgICovCi0gLyoJCQkJCQkJCSAgICAqLwotIC8qICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8K LUBAIC0yMDQsOCArMTM3LDkgQEAgc2F2ZV90dHlfY2hhcnMgKHRpb3ApCi0gCi0gICBpZiAodGlv cC0+ZmxhZ3MgJiBUQ0hBUlNfU0VUKQotICAgICB7Ci0tICAgICAgX3JsX3R0eV9jaGFycy50X2lu dHIgPSB0aW9wLT50Y2hhcnMudF9pbnRyYzsKLS0gICAgICBfcmxfdHR5X2NoYXJzLnRfcXVpdCA9 IHRpb3AtPnRjaGFycy50X3F1aXRjOwotKyAgICAgIF9ybF9pbnRyX2NoYXIgPSBfcmxfdHR5X2No YXJzLnRfaW50ciA9IHRpb3AtPnRjaGFycy50X2ludHJjOwotKyAgICAgIF9ybF9xdWl0X2NoYXIg PSBfcmxfdHR5X2NoYXJzLnRfcXVpdCA9IHRpb3AtPnRjaGFycy50X3F1aXRjOwotKwotICAgICAg IF9ybF90dHlfY2hhcnMudF9zdGFydCA9IHRpb3AtPnRjaGFycy50X3N0YXJ0YzsKLSAgICAgICBf cmxfdHR5X2NoYXJzLnRfc3RvcCA9IHRpb3AtPnRjaGFycy50X3N0b3BjOwotICAgICAgIF9ybF90 dHlfY2hhcnMudF9lb2YgPSB0aW9wLT50Y2hhcnMudF9lb2ZjOwotQEAgLTIxNSw3ICsxNDksOCBA QCBzYXZlX3R0eV9jaGFycyAodGlvcCkKLSAKLSAgIGlmICh0aW9wLT5mbGFncyAmIExUQ0hBUlNf U0VUKQotICAgICB7Ci0tICAgICAgX3JsX3R0eV9jaGFycy50X3N1c3AgPSB0aW9wLT5sdGNoYXJz LnRfc3VzcGM7Ci0rICAgICAgX3JsX3N1c3BfY2hhciA9IF9ybF90dHlfY2hhcnMudF9zdXNwID0g dGlvcC0+bHRjaGFycy50X3N1c3BjOwotKwotICAgICAgIF9ybF90dHlfY2hhcnMudF9kc3VzcCA9 IHRpb3AtPmx0Y2hhcnMudF9kc3VzcGM7Ci0gICAgICAgX3JsX3R0eV9jaGFycy50X3JlcHJpbnQg PSB0aW9wLT5sdGNoYXJzLnRfcnBybnRjOwotICAgICAgIF9ybF90dHlfY2hhcnMudF9mbHVzaCA9 IHRpb3AtPmx0Y2hhcnMudF9mbHVzaGM7Ci1AQCAtMjY4LDcgKzIwMyw3IEBAIHNldF90dHlfc2V0 dGluZ3MgKHR0eSwgdGlvcCkKLSAgICAgICBpb2N0bCAodHR5LCBUSU9DU0VUTiwgJih0aW9wLT5z Z3R0eWIpKTsKLSAgICAgICB0aW9wLT5mbGFncyAmPSB+U0dUVFlfU0VUOwotICAgICB9Ci0tICBy ZWFkbGluZV9lY2hvaW5nX3AgPSAxOwotKyAgX3JsX2VjaG9pbmdfcCA9IDE7Ci0gCi0gI2lmIGRl ZmluZWQgKFRJT0NMU0VUKQotICAgaWYgKHRpb3AtPmZsYWdzICYgTEZMQUdfU0VUKQotQEAgLTMw Miw3ICsyMzcsOCBAQCBwcmVwYXJlX3Rlcm1pbmFsX3NldHRpbmdzIChtZXRhX2ZsYWcsIG9sCi0g ICAgICBpbnQgbWV0YV9mbGFnOwotICAgICAgVElPVFlQRSBvbGR0aW8sICp0aW9wOwotIHsKLS0g IHJlYWRsaW5lX2VjaG9pbmdfcCA9IChvbGR0aW8uc2d0dHliLnNnX2ZsYWdzICYgRUNITyk7Ci0r ICBfcmxfZWNob2luZ19wID0gKG9sZHRpby5zZ3R0eWIuc2dfZmxhZ3MgJiBFQ0hPKTsKLSsgIF9y bF9lY2hvY3RsID0gKG9sZHRpby5zZ3R0eWIuc2dfZmxhZ3MgJiBFQ0hPQ1RMKTsKLSAKLSAgIC8q IENvcHkgdGhlIG9yaWdpbmFsIHNldHRpbmdzIHRvIHRoZSBzdHJ1Y3R1cmUgd2UncmUgZ29pbmcg dG8gdXNlIGZvcgotICAgICAgb3VyIHNldHRpbmdzLiAqLwotQEAgLTQzMywxMCArMzY5LDEwIEBA IHNhdmVfdHR5X2NoYXJzICh0aW9wKQotICNpZmRlZiBWUkVQUklOVAotICAgX3JsX3R0eV9jaGFy cy50X3JlcHJpbnQgPSB0aW9wLT5jX2NjW1ZSRVBSSU5UXTsKLSAjZW5kaWYKLS0gIF9ybF90dHlf Y2hhcnMudF9pbnRyID0gdGlvcC0+Y19jY1tWSU5UUl07Ci0tICBfcmxfdHR5X2NoYXJzLnRfcXVp dCA9IHRpb3AtPmNfY2NbVlFVSVRdOwotKyAgX3JsX2ludHJfY2hhciA9IF9ybF90dHlfY2hhcnMu dF9pbnRyID0gdGlvcC0+Y19jY1tWSU5UUl07Ci0rICBfcmxfcXVpdF9jaGFyID0gX3JsX3R0eV9j aGFycy50X3F1aXQgPSB0aW9wLT5jX2NjW1ZRVUlUXTsKLSAjaWZkZWYgVlNVU1AKLS0gIF9ybF90 dHlfY2hhcnMudF9zdXNwID0gdGlvcC0+Y19jY1tWU1VTUF07Ci0rICBfcmxfc3VzcF9jaGFyID0g X3JsX3R0eV9jaGFycy50X3N1c3AgPSB0aW9wLT5jX2NjW1ZTVVNQXTsKLSAjZW5kaWYKLSAjaWZk ZWYgVkRTVVNQCi0gICBfcmxfdHR5X2NoYXJzLnRfZHN1c3AgPSB0aW9wLT5jX2NjW1ZEU1VTUF07 Ci1AQCAtNDY0LDcgKzQwMCw3IEBAIHN0YXRpYyB2b2lkCi0gcmx0dHlfd2FybmluZyAobXNnKQot ICAgICAgY2hhciAqbXNnOwotIHsKLS0gIGZwcmludGYgKHN0ZGVyciwgInJlYWRsaW5lOiB3YXJu aW5nOiAlc1xuIiwgbXNnKTsKLSsgIF9ybF9lcnJtc2cgKCJ3YXJuaW5nOiAlcyIsIG1zZyk7Ci0g fQotICNlbmRpZgotIAotQEAgLTQ3NSw3ICs0MTEsNyBAQCBUSU9UWVBFICp0cDsKLSB7Ci0gICBp ZiAoKHRwLT5jX29mbGFnICYgT1BPU1QpID09IDApCi0gICAgIHsKLS0gICAgICBybHR0eV93YXJu aW5nICgidHVybmluZyBvbiBPUE9TVCBmb3IgdGVybWluYWxcciIpOwotKyAgICAgIF9ybF9lcnJt c2cgKCJ3YXJuaW5nOiB0dXJuaW5nIG9uIE9QT1NUIGZvciB0ZXJtaW5hbFxyIik7Ci0gICAgICAg dHAtPmNfb2ZsYWcgfD0gT1BPU1R8T05MQ1I7Ci0gICAgIH0KLSB9Ci1AQCAtNTAwLDggKzQzNiw4 IEBAIF9nZXRfdHR5X3NldHRpbmdzICh0dHksIHRpb3ApCi0gCX0KLSAgICAgICBpZiAoT1VUUFVU X0JFSU5HX0ZMVVNIRUQgKHRpb3ApKQotIAl7Ci0tI2lmIGRlZmluZWQgKEZMVVNITykgJiYgZGVm aW5lZCAoX0FJWDQxKQotLQkgIHJsdHR5X3dhcm5pbmcgKCJ0dXJuaW5nIG9mZiBvdXRwdXQgZmx1 c2hpbmciKTsKLSsjaWYgZGVmaW5lZCAoRkxVU0hPKQotKwkgIF9ybF9lcnJtc2cgKCJ3YXJuaW5n OiB0dXJuaW5nIG9mZiBvdXRwdXQgZmx1c2hpbmciKTsKLSAJICB0aW9wLT5jX2xmbGFnICY9IH5G TFVTSE87Ci0gCSAgYnJlYWs7Ci0gI2Vsc2UKLUBAIC01ODAsNyArNTE2LDEwIEBAIHByZXBhcmVf dGVybWluYWxfc2V0dGluZ3MgKG1ldGFfZmxhZywgb2wKLSAgICAgIGludCBtZXRhX2ZsYWc7Ci0g ICAgICBUSU9UWVBFIG9sZHRpbywgKnRpb3A7Ci0gewotLSAgcmVhZGxpbmVfZWNob2luZ19wID0g KG9sZHRpby5jX2xmbGFnICYgRUNITyk7Ci0rICBfcmxfZWNob2luZ19wID0gKG9sZHRpby5jX2xm bGFnICYgRUNITyk7Ci0rI2lmIGRlZmluZWQgKEVDSE9DVEwpCi0rICBfcmxfZWNob2N0bCA9IChv bGR0aW8uY19sZmxhZyAmIEVDSE9DVEwpOwotKyNlbmRpZgotIAotICAgdGlvcC0+Y19sZmxhZyAm PSB+KElDQU5PTiB8IEVDSE8pOwotIAotQEAgLTY0Myw3ICs1ODIsNyBAQCB2b2lkCi0gcmxfcHJl cF90ZXJtaW5hbCAobWV0YV9mbGFnKQotICAgICAgaW50IG1ldGFfZmxhZzsKLSB7Ci0tICByZWFk bGluZV9lY2hvaW5nX3AgPSAxOwotKyAgX3JsX2VjaG9pbmdfcCA9IDE7Ci0gfQotIAotIHZvaWQK LUBAIC02NjUsMTcgKzYwNCwxOSBAQCBybF9wcmVwX3Rlcm1pbmFsIChtZXRhX2ZsYWcpCi0gICAv KiBUcnkgdG8ga2VlcCB0aGlzIGZ1bmN0aW9uIGZyb20gYmVpbmcgSU5UZXJydXB0ZWQuICovCi0g ICBfcmxfYmxvY2tfc2lnaW50ICgpOwotIAotLSAgdHR5ID0gZmlsZW5vIChybF9pbnN0cmVhbSk7 Ci0rICB0dHkgPSBybF9pbnN0cmVhbSA/IGZpbGVubyAocmxfaW5zdHJlYW0pIDogZmlsZW5vIChz dGRpbik7Ci0gCi0gICBpZiAoZ2V0X3R0eV9zZXR0aW5ncyAodHR5LCAmdGlvKSA8IDApCi0gICAg IHsKLSAjaWYgZGVmaW5lZCAoRU5PVFNVUCkKLS0gICAgICAvKiBNYWNPUyBYLCBhdCBsZWFzdCwg bGllcyBhYm91dCB0aGUgdmFsdWUgb2YgZXJybm8gaWYgdGNnZXRhdHRyIGZhaWxzLiAqLwotLSAg ICAgIGlmIChlcnJubyA9PSBFTk9UVFkgfHwgZXJybm8gPT0gRU5PVFNVUCkKLSsgICAgICAvKiBN YWNPUyBYIGFuZCBMaW51eCwgYXQgbGVhc3QsIGxpZSBhYm91dCB0aGUgdmFsdWUgb2YgZXJybm8g aWYKLSsJIHRjZ2V0YXR0ciBmYWlscy4gKi8KLSsgICAgICBpZiAoZXJybm8gPT0gRU5PVFRZIHx8 IGVycm5vID09IEVJTlZBTCB8fCBlcnJubyA9PSBFTk9UU1VQKQotICNlbHNlCi0tICAgICAgaWYg KGVycm5vID09IEVOT1RUWSkKLSsgICAgICBpZiAoZXJybm8gPT0gRU5PVFRZIHx8IGVycm5vID09 IEVJTlZBTCkKLSAjZW5kaWYKLS0JcmVhZGxpbmVfZWNob2luZ19wID0gMTsJCS8qIFhYWCAqLwot KwlfcmxfZWNob2luZ19wID0gMTsJCS8qIFhYWCAqLwotKwotICAgICAgIF9ybF9yZWxlYXNlX3Np Z2ludCAoKTsKLSAgICAgICByZXR1cm47Ci0gICAgIH0KLUBAIC03MzcsNyArNjc4LDcgQEAgcmxf ZGVwcmVwX3Rlcm1pbmFsICgpCi0gICAvKiBUcnkgdG8ga2VlcCB0aGlzIGZ1bmN0aW9uIGZyb20g YmVpbmcgaW50ZXJydXB0ZWQuICovCi0gICBfcmxfYmxvY2tfc2lnaW50ICgpOwotIAotLSAgdHR5 ID0gZmlsZW5vIChybF9pbnN0cmVhbSk7Ci0rICB0dHkgPSBybF9pbnN0cmVhbSA/IGZpbGVubyAo cmxfaW5zdHJlYW0pIDogZmlsZW5vIChzdGRvdXQpOwotIAotICAgaWYgKF9ybF9lbmFibGVfa2V5 cGFkKQotICAgICBfcmxfY29udHJvbF9rZXlwYWQgKDApOwotQEAgLTg2Miw3ICs4MDMsNyBAQCBz ZXRfc3BlY2lhbF9jaGFyIChrbWFwLCB0aW9wLCBzYywgZnVuYykKLSB9Ci0gCi0gI2RlZmluZSBS RVNFVF9TUEVDSUFMKGMpIFwKLS0gIGlmIChjICE9IC0xICYmIGttYXBbKHVuc2lnbmVkIGNoYXIp Y10udHlwZSA9PSBJU0ZVTkMpCi0rICBpZiAoYyAhPSAtMSAmJiBrbWFwWyh1bnNpZ25lZCBjaGFy KWNdLnR5cGUgPT0gSVNGVU5DKSBcCi0gICAgIGttYXBbKHVuc2lnbmVkIGNoYXIpY10uZnVuY3Rp b24gPSBybF9pbnNlcnQ7Ci0gCi0gc3RhdGljIHZvaWQKLUBAIC05MzMsNyArODc0LDYgQEAgcmx0 dHlfc2V0X2RlZmF1bHRfYmluZGluZ3MgKGttYXApCi0gI2lmICFkZWZpbmVkIChOT19UVFlfRFJJ VkVSKQotICAgVElPVFlQRSB0dHlidWZmOwotICAgaW50IHR0eTsKLS0gIHN0YXRpYyBpbnQgY2Fs bGVkID0gMDsKLSAKLSAgIHR0eSA9IGZpbGVubyAocmxfaW5zdHJlYW0pOwotIAotSW5kZXg6IGdk Yi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvcmx0dHkuaAotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9ybHR0eS5oCTIwMTEtMDctMDMgMTA6NDA6NTMu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9ybHR0eS5o CTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyNSArMSwyMyBAQAot IC8qIHJsdHR5LmggLSB0dHkgZHJpdmVyLXJlbGF0ZWQgZGVmaW5pdGlvbnMgdXNlZCBieSBzb21l IGxpYnJhcnkgZmlsZXMuICovCi0gCi0tLyogQ29weXJpZ2h0IChDKSAxOTk1IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk5NS0yMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgUmVh ZGxpbmUgTGlicmFyeSAodGhlIExpYnJhcnkpLCBhIHNldCBvZgotLSAgIHJvdXRpbmVzIGZvciBw cm92aWRpbmcgRW1hY3Mgc3R5bGUgbGluZSBpbnB1dCB0byBwcm9ncmFtcyB0aGF0IGFzawotLSAg IGZvciBpdC4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJh cnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3 aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCi0gCi0tICAg VGhlIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikK LS0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0tICAgVGhlIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0tICAgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VCi0tICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAg IFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05V IHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENP UFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUg bGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBU ZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAgUmVh ZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCBSZWFkbGluZS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAotICNp ZiAhZGVmaW5lZCAoX1JMVFRZX0hfKQotICNkZWZpbmUgX1JMVFRZX0hfCi1AQCAtNzksNyArNzcs NCBAQCB0eXBlZGVmIHN0cnVjdCBfcmxfdHR5X2NoYXJzIHsKLSAgIHVuc2lnbmVkIGNoYXIgdF9z dGF0dXM7Ci0gfSBfUkxfVFRZX0NIQVJTOwotIAotLWV4dGVybiB2b2lkIF9ybF9ibG9ja19zaWdp bnQgUEFSQU1TKCh2b2lkKSk7Ci0tZXh0ZXJuIHZvaWQgX3JsX3JlbGVhc2Vfc2lnaW50IFBBUkFN Uygodm9pZCkpOwotLQotICNlbmRpZiAvKiBfUkxUVFlfSF8gKi8KLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNzAzL3JlYWRsaW5lL3JsdHlwZWRlZnMuaAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu OTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9ybHR5cGVkZWZzLmgJMjAxMS0wNy0wMyAxMDo0MDo1 My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3JsdHlw ZWRlZnMuaAkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQgKzEs MjMgQEAKLSAvKiBybHR5cGVkZWZzLmggLS0gVHlwZSBkZWNsYXJhdGlvbnMgZm9yIHJlYWRsaW5l IGZ1bmN0aW9ucy4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwNCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwOSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg R05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKLS0gICByZWFkaW5nIGxpbmVzIG9m IHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotKyAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBh IGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUg aW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0gICBUaGUgR05VIFJlYWRsaW5l IExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKLS0gICBh bmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0t ICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgUmVhZGxpbmUg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBz aGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBh IGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0gICBoYXZl IGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBV U0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0gI2lmbmRlZiBfUkxf VFlQRURFRlNfSF8KLSAjZGVmaW5lIF9STF9UWVBFREVGU19IXwotSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA3MDMvcmVhZGxpbmUvcmx3aW5zaXplLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkw LjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvcmx3aW5zaXplLmgJMjAxMS0wNy0wMyAxMDo0MDo1My4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3Jsd2luc2l6 ZS5oCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyNiArMSwyNCBA QAotIC8qIHJsd2luc2l6ZS5oIC0tIGFuIGF0dGVtcHQgdG8gaXNvbGF0ZSBzb21lIG9mIHRoZSBz eXN0ZW0tc3BlY2lmaWMgZGVmaW5lcwotICAgIGZvciBgc3RydWN0IHdpbnNpemUnIGFuZCBUSU9D R1dJTlNaLiAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAwOSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIFJlYWRsaW5lIExp YnJhcnkgKHRoZSBMaWJyYXJ5KSwgYSBzZXQgb2YKLS0gICByb3V0aW5lcyBmb3IgcHJvdmlkaW5n IEVtYWNzIHN0eWxlIGxpbmUgaW5wdXQgdG8gcHJvZ3JhbXMgdGhhdCBhc2sKLS0gICBmb3IgaXQu Ci0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFk bGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRl cmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAgIFRoZSBMaWJy YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0gICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tICAgYW55 IGxhdGVyIHZlcnNpb24uCi0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotIAotLSAgIFRoZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotLSAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotLSAg IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0KLS0gICBUaGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2Fy ZSwgYW5kCi0tICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9y IExJQ0VOU0UuICBJZiB5b3UgZG8gbm90Ci0tICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2Us IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgNTkgVGVtcGxlIFBs YWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIFJlYWRsaW5lIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSAKLSAjaWYgIWRlZmlu ZWQgKF9STFdJTlNJWkVfSF8pCi0gI2RlZmluZSBfUkxXSU5TSVpFX0hfCi1AQCAtNTMsNSArNTEs OCBAQAotICMgIGVuZGlmIC8qIEhBVkVfU1lTX1BURV9IICovCi0gI2VuZGlmIC8qICFTVFJVQ1Rf V0lOU0laRV9JTl9URVJNSU9TICYmICFTVFJVQ1RfV0lOU0laRV9JTl9TWVNfSU9DVEwgKi8KLSAK LS0jZW5kaWYgLyogX1JMX1dJTlNJWkVfSCAqLwotKyNpZiBkZWZpbmVkIChNX1VOSVgpICYmICFk ZWZpbmVkIChfU0NPX0RTKSAmJiAhZGVmaW5lZCAodGNmbG93KQotKyMgIGRlZmluZSB0Y2Zsb3co ZmQsIGFjdGlvbikJaW9jdGwoZmQsIFRDWE9OQywgYWN0aW9uKQotKyNlbmRpZgotIAotKyNlbmRp ZiAvKiBfUkxfV0lOU0laRV9IICovCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGlu ZS9zYXZlc3RyaW5nLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcv cmVhZGxpbmUvc2F2ZXN0cmluZy5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9zYXZlc3RyaW5nLmMJMjAxMS0wNy0w MyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDI0ICsxLDI0IEBACi0tLyogc2F2ZXN0 cmluZy5jICAqLwotKy8qIHNhdmVzdHJpbmcuYyAtIGZ1bmN0aW9uIHZlcnNpb24gb2Ygc2F2ZXN0 cmluZyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKi8KLSAKLSAvKiBDb3B5cmlnaHQgKEMp IDE5OTgsMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKLS0g ICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9y eSBlZGl0aW5nLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGli cmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0 IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0g ICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQKLS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBp cyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBn ZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlv dSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwg Qm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJl YWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyov Ci0rCi0gI2RlZmluZSBSRUFETElORV9MSUJSQVJZCi0gCi0gI2luY2x1ZGUgPGNvbmZpZy5oPgot QEAgLTMzLDUgKzMzLDkgQEAgY2hhciAqCi0gc2F2ZXN0cmluZyAocykKLSAgICAgIGNvbnN0IGNo YXIgKnM7Ci0gewotLSAgcmV0dXJuICgoY2hhciAqKXN0cmNweSAoKGNoYXIgKil4bWFsbG9jICgx ICsgc3RybGVuIChzKSksIChzKSkpOwotKyAgY2hhciAqcmV0OwotKwotKyAgcmV0ID0gKGNoYXIg Kil4bWFsbG9jIChzdHJsZW4gKHMpICsgMSk7Ci0rICBzdHJjcHkgKHJldCwgcyk7Ci0rICByZXR1 cm4gcmV0OwotIH0KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3NlYXJjaC5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3NlYXJj aC5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4y MDExMDcwMy9yZWFkbGluZS9zZWFyY2guYwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCAr MDIwMAotQEAgLTEsMjUgKzEsMjQgQEAKLSAvKiBzZWFyY2guYyAtIGNvZGUgZm9yIG5vbi1pbmNy ZW1lbnRhbCBzZWFyY2hpbmcgaW4gZW1hY3MgYW5kIHZpIG1vZGVzLiAqLwotIAotLS8qIENvcHly aWdodCAoQykgMTk5Mi0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENv cHlyaWdodCAoQykgMTk5Mi0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAot LSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBSZWFkbGluZSBMaWJyYXJ5ICh0aGUgTGlicmFy eSksIGEgc2V0IG9mCi0tICAgcm91dGluZXMgZm9yIHByb3ZpZGluZyBFbWFjcyBzdHlsZSBsaW5l IGlucHV0IHRvIHByb2dyYW1zIHRoYXQgYXNrCi0tICAgZm9yIGl0LgotKyAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkK LSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5k IGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0gICBUaGUgTGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgUmVhZGxpbmUg aXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot ICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSAgIGFueSBsYXRlciB2ZXJzaW9uLgot KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsK LSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJl YWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyov Ci0gCi0tICAgVGhlIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwgYnV0Ci0tICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBp cyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElm IHlvdSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMz MCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0gI2RlZmluZSBSRUFETElORV9MSUJSQVJZCi0g Ci0gI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCi1AQCAtNzAsNyArNjksNiBAQCBzdGF0aWMg aW50IHJsX2hpc3Rvcnlfc2VhcmNoX3BvczsKLSBzdGF0aWMgY2hhciAqaGlzdG9yeV9zZWFyY2hf c3RyaW5nOwotIHN0YXRpYyBpbnQgaGlzdG9yeV9zdHJpbmdfc2l6ZTsKLSAKLS1zdGF0aWMgVU5E T19MSVNUICpub25pbmNfc2F2ZWRfdW5kb19saXN0OwotIHN0YXRpYyB2b2lkIG1ha2VfaGlzdG9y eV9saW5lX2N1cnJlbnQgUEFSQU1TKChISVNUX0VOVFJZICopKTsKLSBzdGF0aWMgaW50IG5vbmlu Y19zZWFyY2hfZnJvbV9wb3MgUEFSQU1TKChjaGFyICosIGludCwgaW50KSk7Ci0gc3RhdGljIGlu dCBub25pbmNfZG9zZWFyY2ggUEFSQU1TKChjaGFyICosIGludCkpOwotQEAgLTIxMiw4ICsyMTAs OCBAQCBfcmxfbnNlYXJjaF9pbml0IChkaXIsIHBjaGFyKQotICAgcmxfZW5kID0gcmxfcG9pbnQg PSAwOwotIAotICAgcCA9IF9ybF9tYWtlX3Byb21wdF9mb3Jfc2VhcmNoIChwY2hhciA/IHBjaGFy IDogJzonKTsKLS0gIHJsX21lc3NhZ2UgKHAsIDAsIDApOwotLSAgZnJlZSAocCk7Ci0rICBybF9t ZXNzYWdlICgiJXMiLCBwLCAwKTsKLSsgIHhmcmVlIChwKTsKLSAKLSAgIFJMX1NFVFNUQVRFKFJM X1NUQVRFX05TRUFSQ0gpOwotIAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUv c2hlbGwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGlu ZS9zaGVsbC5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu Mi45MC4yMDExMDcwMy9yZWFkbGluZS9zaGVsbC5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAw MDAwICswMjAwCi1AQCAtMSwyNSArMSwyNSBAQAotIC8qIHNoZWxsLmMgLS0gcmVhZGxpbmUgdXRp bGl0eSBmdW5jdGlvbnMgdGhhdCBhcmUgbm9ybWFsbHkgcHJvdmlkZWQgYnkKLSAJICAgICAgYmFz aCB3aGVuIHJlYWRsaW5lIGlzIGxpbmtlZCBhcyBwYXJ0IG9mIHRoZSBzaGVsbC4gKi8KLSAKLS0v KiBDb3B5cmlnaHQgKEMpIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyog Q29weXJpZ2h0IChDKSAxOTk3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0g Ci0tICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxp YnJhcnkgZm9yCi0tICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5w dXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05V IFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJlYWRpbmcg bGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcu ICAgICAgCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0Ci0tICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCi0r ICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSAgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFy eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKLS0gICB1c2VmdWws IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5Ci0tICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBUaGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwg YW5kCi0tICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJ Q0VOU0UuICBJZiB5b3UgZG8gbm90Ci0tICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgNTkgVGVtcGxlIFBsYWNl LCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAg YWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KLSsqLwotKwotICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQotIAotICNpZiBkZWZp bmVkIChIQVZFX0NPTkZJR19IKQotQEAgLTEzMCwxMiArMTMwLDEyIEBAIHNoX3NldF9saW5lc19h bmRfY29sdW1ucyAobGluZXMsIGNvbHMpCi0gICBiID0gKGNoYXIgKil4bWFsbG9jIChJTlRfU1RS TEVOX0JPVU5EIChpbnQpICsgMSk7Ci0gICBzcHJpbnRmIChiLCAiJWQiLCBsaW5lcyk7Ci0gICBz ZXRlbnYgKCJMSU5FUyIsIGIsIDEpOwotLSAgZnJlZSAoYik7Ci0rICB4ZnJlZSAoYik7Ci0gCi0g ICBiID0gKGNoYXIgKil4bWFsbG9jIChJTlRfU1RSTEVOX0JPVU5EIChpbnQpICsgMSk7Ci0gICBz cHJpbnRmIChiLCAiJWQiLCBjb2xzKTsKLSAgIHNldGVudiAoIkNPTFVNTlMiLCBiLCAxKTsKLS0g IGZyZWUgKGIpOwotKyAgeGZyZWUgKGIpOwotICNlbHNlIC8qICFIQVZFX1NFVEVOViAqLwotICMg IGlmIGRlZmluZWQgKEhBVkVfUFVURU5WKQotICAgYiA9IChjaGFyICopeG1hbGxvYyAoSU5UX1NU UkxFTl9CT1VORCAoaW50KSArIHNpemVvZiAoIkxJTkVTPSIpICsgMSk7Ci1JbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9yZWFkbGluZS9zaGxpYi9NYWtlZmlsZS5pbgotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9zaGxpYi9NYWtlZmlsZS5pbgkyMDEx LTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMv cmVhZGxpbmUvc2hsaWIvTWFrZWZpbGUuaW4JMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAg KzAyMDAKLUBAIC0xLDIxICsxLDIwIEBACi0gIyMgLSotIHRleHQgLSotICMjCi0gIyBNYWtlZmls ZSBmb3IgdGhlIEdOVSByZWFkbGluZSBsaWJyYXJ5IHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQuCi0g IwotLSMgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rIyBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSAKLS0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQot LSMgYW55IGxhdGVyIHZlcnNpb24uCi0tCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0t IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKLS0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlCi0tIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl IDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rIyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rIyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgotIAotIFBBQ0tBR0UgPSBAUEFDS0FHRV9OQU1FQAotIFZFUlNJ T04gPSBAUEFDS0FHRV9WRVJTSU9OQAotQEAgLTMxLDcgKzMwLDcgQEAgUkxfTElCUkFSWV9OQU1F ID0gcmVhZGxpbmUKLSBkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKLSAKLSBzcmNkaXIgPSBA c3JjZGlyQAotLVZQQVRIID0gLjpAdG9wX3NyY2RpckAKLStWUEFUSCA9IEB0b3Bfc3JjZGlyQAot IHRvcGRpciA9IEB0b3Bfc3JjZGlyQAotIEJVSUxEX0RJUiA9IEBCVUlMRF9ESVJACi0gCi1AQCAt NTEsNiArNTAsNyBAQCBMTiA9IGxuCi0gU0hFTEwgPSBATUFLRV9TSEVMTEAKLSAKLSBob3N0X29z ID0gQGhvc3Rfb3NACi0raG9zdF92ZW5kb3IgPSBAaG9zdF92ZW5kb3JACi0gCi0gcHJlZml4ID0g QHByZWZpeEAKLSBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLUBAIC01OCw3ICs1OCw3IEBA IGluY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKLSBiaW5kaXIgPSBAYmluZGlyQAotIGxpYmRpciA9 IEBsaWJkaXJACi0gZGF0YWRpciA9IEBkYXRhZGlyQAotLWxvY2FsZWRpciA9ICQoZGF0YWRpcikv bG9jYWxlCi0rbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKLSAKLSAjIFN1cHBvcnQgYW4gYWx0ZXJu YXRlIGRlc3RpbmF0aW9uIHJvb3QgZGlyZWN0b3J5IGZvciBwYWNrYWdlIGJ1aWxkaW5nCi0gREVT VERJUiA9Ci1AQCAtMTIyLDggKzEyMiw2IEBAIFNIQVJFRF9SRUFETElORSA9ICQoU0hMSUJfTElC UFJFRilyZWFkbGkKLSBTSEFSRURfSElTVE9SWSA9ICQoU0hMSUJfTElCUFJFRiloaXN0b3J5JChT SExJQl9ET1QpJChTSExJQl9MSUJWRVJTSU9OKQotIFNIQVJFRF9MSUJTID0gJChTSEFSRURfUkVB RExJTkUpICQoU0hBUkVEX0hJU1RPUlkpCi0gCi0tV0NXSURUSF9PQkogPSBAV0NXSURUSF9PQkpA Ci0tCi0gIyBUaGUgQyBjb2RlIHNvdXJjZSBmaWxlcyBmb3IgdGhpcyBsaWJyYXJ5LgotIENTT1VS Q0VTID0gJCh0b3BkaXIpL3JlYWRsaW5lLmMgJCh0b3BkaXIpL2Z1bm1hcC5jICQodG9wZGlyKS9r ZXltYXBzLmMgXAotIAkgICAkKHRvcGRpcikvdmlfbW9kZS5jICQodG9wZGlyKS9wYXJlbnMuYyAk KHRvcGRpcikvcmx0dHkuYyBcCi1AQCAtMTMxLDEyICsxMjksMTIgQEAgQ1NPVVJDRVMgPSAkKHRv cGRpcikvcmVhZGxpbmUuYyAkKHRvcGRpcgotIAkgICAkKHRvcGRpcikvZGlzcGxheS5jICQodG9w ZGlyKS9zaWduYWxzLmMgJCh0b3BkaXIpL2VtYWNzX2tleW1hcC5jIFwKLSAJICAgJCh0b3BkaXIp L3ZpX2tleW1hcC5jICQodG9wZGlyKS91dGlsLmMgJCh0b3BkaXIpL2tpbGwuYyBcCi0gCSAgICQo dG9wZGlyKS91bmRvLmMgJCh0b3BkaXIpL21hY3JvLmMgJCh0b3BkaXIpL2lucHV0LmMgXAotLQkg ICAkKHRvcGRpcikvY2FsbGJhY2suYyAkKHRvcGRpcikvdGVybWluYWwuYyAkKHRvcGRpcikveG1h bGxvYy5jIFwKLSsJICAgJCh0b3BkaXIpL2NhbGxiYWNrLmMgJCh0b3BkaXIpL3Rlcm1pbmFsLmMg JCh0b3BkaXIpL3htYWxsb2MuYyAkKHRvcGRpcikveGZyZWUuYyBcCi0gCSAgICQodG9wZGlyKS9o aXN0b3J5LmMgJCh0b3BkaXIpL2hpc3RzZWFyY2guYyAkKHRvcGRpcikvaGlzdGV4cGFuZC5jIFwK LSAJICAgJCh0b3BkaXIpL2hpc3RmaWxlLmMgJCh0b3BkaXIpL25scy5jICQodG9wZGlyKS9zZWFy Y2guYyBcCi0gCSAgICQodG9wZGlyKS9zaGVsbC5jICQodG9wZGlyKS9zYXZlc3RyaW5nLmMgJCh0 b3BkaXIpL3RpbGRlLmMgXAotIAkgICAkKHRvcGRpcikvdGV4dC5jICQodG9wZGlyKS9taXNjLmMg JCh0b3BkaXIpL2NvbXBhdC5jIFwKLS0JICAgJCh0b3BkaXIpL21idXRpbC5jICQodG9wZGlyKS9z dXBwb3J0L3djd2lkdGguYwotKwkgICAkKHRvcGRpcikvbWJ1dGlsLmMKLSAKLSAjIFRoZSBoZWFk ZXIgZmlsZXMgZm9yIHRoaXMgbGlicmFyeS4KLSBIU09VUkNFUyA9IHJlYWRsaW5lLmggcmxkZWZz LmggY2hhcmRlZnMuaCBrZXltYXBzLmggaGlzdG9yeS5oIGhpc3RsaWIuaCBcCi1AQCAtMTQ5LDgg KzE0Nyw4IEBAIFNIQVJFRF9USUxERU9CSiA9IHRpbGRlLnNvCi0gU0hBUkVEX09CSiA9IHJlYWRs aW5lLnNvIHZpX21vZGUuc28gZnVubWFwLnNvIGtleW1hcHMuc28gcGFyZW5zLnNvIHNlYXJjaC5z byBcCi0gCSAgcmx0dHkuc28gY29tcGxldGUuc28gYmluZC5zbyBpc2VhcmNoLnNvIGRpc3BsYXku c28gc2lnbmFscy5zbyBcCi0gCSAgdXRpbC5zbyBraWxsLnNvIHVuZG8uc28gbWFjcm8uc28gaW5w dXQuc28gY2FsbGJhY2suc28gdGVybWluYWwuc28gXAotLQkgIHRleHQuc28gbmxzLnNvIG1pc2Mu c28geG1hbGxvYy5zbyAkKFNIQVJFRF9ISVNUT0JKKSAkKFNIQVJFRF9USUxERU9CSikgXAotLQkg IGNvbXBhdC5zbyAkKFdDV0lEVEhfT0JKKQotKwkgIHRleHQuc28gbmxzLnNvIG1pc2Muc28geG1h bGxvYy5zbyB4ZnJlZS5zbyAkKFNIQVJFRF9ISVNUT0JKKSAkKFNIQVJFRF9USUxERU9CSikgXAot KwkgIGNvbXBhdC5zbwotIAotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gCi1AQCAtMTcwLDEzICsxNjgs OSBAQCAkKFNIQVJFRF9SRUFETElORSk6CSQoU0hBUkVEX09CSikKLSAJJChSTSkgJEAKLSAJJChT SE9CSl9MRCkgJHtTSE9CSl9MREZMQUdTfSAke1NITElCX1hMREZMQUdTfSAtbyAkQCAkKFNIQVJF RF9PQkopICQoU0hMSUJfTElCUykKLSAKLS0kKFNIQVJFRF9ISVNUT1JZKToJJChTSEFSRURfSElT VE9CSikgeG1hbGxvYy5zbwotLQkkKFJNKSAkQAotLQkkKFNIT0JKX0xEKSAke1NIT0JKX0xERkxB R1N9ICR7U0hMSUJfWExERkxBR1N9IC1vICRAICQoU0hBUkVEX0hJU1RPQkopIHhtYWxsb2Muc28g JChTSExJQl9MSUJTKQotLQotLXdjd2lkdGgubzogJChzcmNkaXIpL3N1cHBvcnQvd2N3aWR0aC5j Ci0rJChTSEFSRURfSElTVE9SWSk6CSQoU0hBUkVEX0hJU1RPQkopIHhtYWxsb2Muc28geGZyZWUu c28KLSAJJChSTSkgJEAKLS0JJChTSE9CSl9DQykgLWMgJChDQ0ZMQUdTKSAkKFNIT0JKX0ZMQUdT KSAkKHNyY2Rpcikvc3VwcG9ydC93Y3dpZHRoLmMKLSsJJChTSE9CSl9MRCkgJHtTSE9CSl9MREZM QUdTfSAke1NITElCX1hMREZMQUdTfSAtbyAkQCAkKFNIQVJFRF9ISVNUT0JKKSB4bWFsbG9jLnNv IHhmcmVlLnNvICQoU0hMSUJfTElCUykKLSAKLSAjIFNpbmNlIHRpbGRlLmMgaXMgc2hhcmVkIGJl dHdlZW4gcmVhZGxpbmUgYW5kIGJhc2gsIG1ha2Ugc3VyZSB3ZSBjb21waWxlIAotICMgaXQgd2l0 aCB0aGUgcmlnaHQgZmxhZ3Mgd2hlbiBpdCdzIGJ1aWx0IGFzIHBhcnQgb2YgcmVhZGxpbmUKLUBA IC0xODcsMTUgKzE4MSwxNiBAQCB0aWxkZS5zbzogICAgICAgIHRpbGRlLmMKLSAKLSBpbnN0YWxs ZGlyczogJCh0b3BkaXIpL3N1cHBvcnQvbWtkaXJzCi0gCS0kKFNIRUxMKSAkKHRvcGRpcikvc3Vw cG9ydC9ta2RpcnMgJChERVNURElSKSQobGliZGlyKQotKwktJChTSEVMTCkgJCh0b3BkaXIpL3N1 cHBvcnQvbWtkaXJzICQoREVTVERJUikkKGJpbmRpcikKLSAKLSBpbnN0YWxsOiBpbnN0YWxsZGly cyAkKFNITElCX1NUQVRVUykKLS0JJChTSEVMTCkgJCh0b3BkaXIpL3N1cHBvcnQvc2hsaWItaW5z dGFsbCAtTyAkKGhvc3Rfb3MpIC1kICQoREVTVERJUikkKGxpYmRpcikgLWIgJChERVNURElSKSQo YmluZGlyKSAtaSAiJChJTlNUQUxMX0RBVEEpIiAkKFNIQVJFRF9ISVNUT1JZKQotLQkkKFNIRUxM KSAkKHRvcGRpcikvc3VwcG9ydC9zaGxpYi1pbnN0YWxsIC1PICQoaG9zdF9vcykgLWQgJChERVNU RElSKSQobGliZGlyKSAtYiAkKERFU1RESVIpJChiaW5kaXIpIC1pICIkKElOU1RBTExfREFUQSki ICQoU0hBUkVEX1JFQURMSU5FKQotKwkkKFNIRUxMKSAkKHRvcGRpcikvc3VwcG9ydC9zaGxpYi1p bnN0YWxsIC1PICQoaG9zdF9vcykgLVYgJChob3N0X3ZlbmRvcikgLWQgJChERVNURElSKSQobGli ZGlyKSAtYiAkKERFU1RESVIpJChiaW5kaXIpIC1pICIkKElOU1RBTExfREFUQSkiICQoU0hBUkVE X0hJU1RPUlkpCi0rCSQoU0hFTEwpICQodG9wZGlyKS9zdXBwb3J0L3NobGliLWluc3RhbGwgLU8g JChob3N0X29zKSAtViAkKGhvc3RfdmVuZG9yKSAtZCAkKERFU1RESVIpJChsaWJkaXIpIC1iICQo REVTVERJUikkKGJpbmRpcikgLWkgIiQoSU5TVEFMTF9EQVRBKSIgJChTSEFSRURfUkVBRExJTkUp Ci0gCUBlY2hvIGluc3RhbGw6IHlvdSBtYXkgbmVlZCB0byBydW4gbGRjb25maWcKLSAKLSB1bmlu c3RhbGw6Ci0tCSQoU0hFTEwpICQodG9wZGlyKS9zdXBwb3J0L3NobGliLWluc3RhbGwgLU8gJCho b3N0X29zKSAtZCAkKERFU1RESVIpJChsaWJkaXIpIC1iICQoREVTVERJUikkKGJpbmRpcikgLVUg JChTSEFSRURfSElTVE9SWSkKLS0JJChTSEVMTCkgJCh0b3BkaXIpL3N1cHBvcnQvc2hsaWItaW5z dGFsbCAtTyAkKGhvc3Rfb3MpIC1kICQoREVTVERJUikkKGxpYmRpcikgLWIgJChERVNURElSKSQo YmluZGlyKSAtVSAkKFNIQVJFRF9SRUFETElORSkKLSsJJChTSEVMTCkgJCh0b3BkaXIpL3N1cHBv cnQvc2hsaWItaW5zdGFsbCAtTyAkKGhvc3Rfb3MpIC1WICQoaG9zdF92ZW5kb3IpIC1kICQoREVT VERJUikkKGxpYmRpcikgLWIgJChERVNURElSKSQoYmluZGlyKSAtVSAkKFNIQVJFRF9ISVNUT1JZ KQotKwkkKFNIRUxMKSAkKHRvcGRpcikvc3VwcG9ydC9zaGxpYi1pbnN0YWxsIC1PICQoaG9zdF9v cykgLVYgJChob3N0X3ZlbmRvcikgLWQgJChERVNURElSKSQobGliZGlyKSAtYiAkKERFU1RESVIp JChiaW5kaXIpIC1VICQoU0hBUkVEX1JFQURMSU5FKQotIAlAZWNobyB1bmluc3RhbGw6IHlvdSBt YXkgbmVlZCB0byBydW4gbGRjb25maWcKLSAKLSBjbGVhbiBtb3N0bHljbGVhbjoJZm9yY2UKLUBA IC0zMjIsNiArMzE3LDggQEAgdmlfbW9kZS5zbzogJCh0b3BkaXIpL3JsZGVmcy5oICR7QlVJTERf RAotIHZpX21vZGUuc286ICQodG9wZGlyKS9yZWFkbGluZS5oICQodG9wZGlyKS9rZXltYXBzLmgg JCh0b3BkaXIpL2NoYXJkZWZzLmgKLSB2aV9tb2RlLnNvOiAkKHRvcGRpcikvaGlzdG9yeS5oICQo dG9wZGlyKS9hbnNpX3N0ZGxpYi5oICQodG9wZGlyKS90aWxkZS5oCi0gdmlfbW9kZS5zbzogJCh0 b3BkaXIpL3JsdHlwZWRlZnMuaAotK3hmcmVlLnNvOiAke0JVSUxEX0RJUn0vY29uZmlnLmgKLSt4 ZnJlZS5zbzogJCh0b3BkaXIpL2Fuc2lfc3RkbGliLmgKLSB4bWFsbG9jLnNvOiAke0JVSUxEX0RJ Un0vY29uZmlnLmgKLSB4bWFsbG9jLnNvOiAkKHRvcGRpcikvYW5zaV9zdGRsaWIuaAotIAotQEAg LTM3OSw2ICszNzYsNyBAQCB0aWxkZS5zbzogJCh0b3BkaXIpL3htYWxsb2MuaAotIHVuZG8uc286 ICQodG9wZGlyKS94bWFsbG9jLmgKLSB1dGlsLnNvOiAkKHRvcGRpcikveG1hbGxvYy5oCi0gdmlf bW9kZS5zbzogJCh0b3BkaXIpL3htYWxsb2MuaAotK3hmcmVlLnNvOiAkKHRvcGRpcikveG1hbGxv Yy5oCi0geG1hbGxvYy5zbzogJCh0b3BkaXIpL3htYWxsb2MuaAotIAotIGNvbXBsZXRlLm86ICQo dG9wZGlyKS9ybG1idXRpbC5oCi1AQCAtNDIwLDYgKzQxOCw3IEBAIHRpbGRlLnNvOiAkKHRvcGRp cikvdGlsZGUuYwotIHVuZG8uc286ICQodG9wZGlyKS91bmRvLmMKLSB1dGlsLnNvOiAkKHRvcGRp cikvdXRpbC5jCi0gdmlfbW9kZS5zbzogJCh0b3BkaXIpL3ZpX21vZGUuYwotK3hmcmVlLnNvOiAk KHRvcGRpcikveGZyZWUuYwotIHhtYWxsb2Muc286ICQodG9wZGlyKS94bWFsbG9jLmMKLSAKLSBo aXN0ZXhwYW5kLnNvOiAkKHRvcGRpcikvaGlzdGV4cGFuZC5jCi1AQCAtNDU0LDYgKzQ1Myw3IEBA IHRpbGRlLnNvOiB0aWxkZS5jCi0gdW5kby5zbzogdW5kby5jCi0gdXRpbC5zbzogdXRpbC5jCi0g dmlfbW9kZS5zbzogdmlfbW9kZS5jCi0reGZyZWUuc286IHhmcmVlLmMKLSB4bWFsbG9jLnNvOiB4 bWFsbG9jLmMKLSAKLSBoaXN0ZXhwYW5kLnNvOiBoaXN0ZXhwYW5kLmMKLUluZGV4OiBnZGItNy4y LjkwLjIwMTEwNzAzL3JlYWRsaW5lL3NpZ25hbHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu OTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9zaWduYWxzLmMJMjAxMS0wNy0wMyAxMDo0MDo1My4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3NpZ25hbHMu YwkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjQgQEAK LSAvKiBzaWduYWxzLmMgLS0gc2lnbmFsIGhhbmRsaW5nIHN1cHBvcnQgZm9yIHJlYWRsaW5lLiAq LwotIAotLS8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUg TGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGlu dGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBh cnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAg IGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlz dG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAg IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0g ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJl YWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl Ci0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0t ICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBH TlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQg Q09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRo ZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5 IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSsKLSAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkK LSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKLUBAIC00MCwxMyArNDAsMTQgQEAKLSAj ICBpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSAjZW5kaWYgLyogR1dJTlNaX0lOX1NZU19JT0NUTCAq LwotIAotLSNpZiBkZWZpbmVkIChIQU5ETEVfU0lHTkFMUykKLSAvKiBTb21lIHN0YW5kYXJkIGxp YnJhcnkgcm91dGluZXMuICovCi0gI2luY2x1ZGUgInJlYWRsaW5lLmgiCi0gI2luY2x1ZGUgImhp c3RvcnkuaCIKLSAKLSAjaW5jbHVkZSAicmxwcml2YXRlLmgiCi0gCi0rI2lmIGRlZmluZWQgKEhB TkRMRV9TSUdOQUxTKQotKwotICNpZiAhZGVmaW5lZCAoUkVUU0lHVFlQRSkKLSAjICBpZiBkZWZp bmVkIChWT0lEX1NJR0hBTkRMRVIpCi0gIyAgICBkZWZpbmUgUkVUU0lHVFlQRSB2b2lkCi1AQCAt ODAsNiArODEsOSBAQCB0eXBlZGVmIHN0cnVjdCB7IFNpZ0hhbmRsZXIgKnNhX2hhbmRsZXI7Ci0g c3RhdGljIFNpZ0hhbmRsZXIgKnJsX3NldF9zaWdoYW5kbGVyIFBBUkFNUygoaW50LCBTaWdIYW5k bGVyICosIHNpZ2hhbmRsZXJfY3h0ICopKTsKLSBzdGF0aWMgdm9pZCBybF9tYXliZV9zZXRfc2ln aGFuZGxlciBQQVJBTVMoKGludCwgU2lnSGFuZGxlciAqLCBzaWdoYW5kbGVyX2N4dCAqKSk7Ci0g Ci0rc3RhdGljIFJFVFNJR1RZUEUgcmxfc2lnbmFsX2hhbmRsZXIgUEFSQU1TKChpbnQpKTsKLStz dGF0aWMgUkVUU0lHVFlQRSBfcmxfaGFuZGxlX3NpZ25hbCBQQVJBTVMoKGludCkpOwotKyAgICAg Ci0gLyogRXhwb3J0ZWQgdmFyaWFibGVzIGZvciB1c2UgYnkgYXBwbGljYXRpb25zLiAqLwotIAot IC8qIElmIG5vbi16ZXJvLCByZWFkbGluZSB3aWxsIGluc3RhbGwgaXRzIG93biBzaWduYWwgaGFu ZGxlcnMgZm9yCi1AQCAtOTMsNiArOTcsMTggQEAgaW50IHJsX2NhdGNoX3NpZ3dpbmNoID0gMTsK LSBpbnQgcmxfY2F0Y2hfc2lnd2luY2ggPSAwOwkvKiBmb3IgdGhlIHJlYWRsaW5lIHN0YXRlIHN0 cnVjdCBpbiByZWFkbGluZS5jICovCi0gI2VuZGlmCi0gCi0rLyogUHJpdmF0ZSB2YXJpYWJsZXMu ICovCi0raW50IF9ybF9pbnRlcnJ1cHRfaW1tZWRpYXRlbHkgPSAwOwotK2ludCB2b2xhdGlsZSBf cmxfY2F1Z2h0X3NpZ25hbCA9IDA7CS8qIHNob3VsZCBiZSBzaWdfYXRvbWljX3QsIGJ1dCB0aGF0 IHJlcXVpcmVzIGluY2x1ZGluZyA8c2lnbmFsLmg+IGV2ZXJ5d2hlcmUgKi8KLSsKLSsvKiBJZiBu b24temVybywgcHJpbnQgY2hhcmFjdGVycyBjb3JyZXNwb25kaW5nIHRvIHJlY2VpdmVkIHNpZ25h bHMgYXMgbG9uZyBhcwotKyAgIHRoZSB1c2VyIGhhcyBpbmRpY2F0ZWQgaGlzIGRlc2lyZSB0byBk byBzbyAoX3JsX2VjaG9fY29udHJvbF9jaGFycykuICovCi0raW50IF9ybF9lY2hvY3RsID0gMDsK LSsKLStpbnQgX3JsX2ludHJfY2hhciA9IDA7Ci0raW50IF9ybF9xdWl0X2NoYXIgPSAwOwotK2lu dCBfcmxfc3VzcF9jaGFyID0gMDsKLSsKLSBzdGF0aWMgaW50IHNpZ25hbHNfc2V0X2ZsYWc7Ci0g c3RhdGljIGludCBzaWd3aW5jaF9zZXRfZmxhZzsKLSAKLUBAIC0xMTIsMTAgKzEyOCwzNiBAQCBz dGF0aWMgc2lnaGFuZGxlcl9jeHQgb2xkX3dpbmNoOwotIAotIC8qIFJlYWRsaW5lIHNpZ25hbCBo YW5kbGVyIGZ1bmN0aW9ucy4gKi8KLSAKLSsvKiBDYWxsZWQgZnJvbSBSTF9DSEVDS19TSUdOQUxT KCkgbWFjcm8gKi8KLStSRVRTSUdUWVBFCi0rX3JsX3NpZ25hbF9oYW5kbGVyIChzaWcpCi0rICAg ICBpbnQgc2lnOwotK3sKLSsgIF9ybF9jYXVnaHRfc2lnbmFsID0gMDsJLyogWFhYICovCi0rCi0r ICBfcmxfaGFuZGxlX3NpZ25hbCAoc2lnKTsKLSsgIFNJR0hBTkRMRVJfUkVUVVJOOwotK30KLSsK LSBzdGF0aWMgUkVUU0lHVFlQRQotIHJsX3NpZ25hbF9oYW5kbGVyIChzaWcpCi0gICAgICBpbnQg c2lnOwotIHsKLSsgIGlmIChfcmxfaW50ZXJydXB0X2ltbWVkaWF0ZWx5IHx8IFJMX0lTU1RBVEUo UkxfU1RBVEVfQ0FMTEJBQ0spKQotKyAgICB7Ci0rICAgICAgX3JsX2ludGVycnVwdF9pbW1lZGlh dGVseSA9IDA7Ci0rICAgICAgX3JsX2hhbmRsZV9zaWduYWwgKHNpZyk7Ci0rICAgIH0KLSsgIGVs c2UKLSsgICAgX3JsX2NhdWdodF9zaWduYWwgPSBzaWc7Ci0rCi0rICBTSUdIQU5ETEVSX1JFVFVS TjsKLSt9Ci0rCi0rc3RhdGljIFJFVFNJR1RZUEUKLStfcmxfaGFuZGxlX3NpZ25hbCAoc2lnKQot KyAgICAgaW50IHNpZzsKLSt7Ci0gI2lmIGRlZmluZWQgKEhBVkVfUE9TSVhfU0lHTkFMUykKLSAg IHNpZ3NldF90IHNldDsKLSAjZWxzZSAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCi1AQCAtMTQy LDYgKzE4NCw3IEBAIHJsX3NpZ25hbF9oYW5kbGVyIChzaWcpCi0gICBzd2l0Y2ggKHNpZykKLSAg ICAgewotICAgICBjYXNlIFNJR0lOVDoKLSsgICAgICBfcmxfcmVzZXRfY29tcGxldGlvbl9zdGF0 ZSAoKTsKLSAgICAgICBybF9mcmVlX2xpbmVfc3RhdGUgKCk7Ci0gICAgICAgLyogRkFMTFRIUk9V R0ggKi8KLSAKLUBAIC0xNTcsOSArMjAwLDExIEBAIHJsX3NpZ25hbF9oYW5kbGVyIChzaWcpCi0g I2lmIGRlZmluZWQgKFNJR1FVSVQpCi0gICAgIGNhc2UgU0lHUVVJVDoKLSAjZW5kaWYKLSsgICAg ICBybF9lY2hvX3NpZ25hbF9jaGFyIChzaWcpOwotICAgICAgIHJsX2NsZWFudXBfYWZ0ZXJfc2ln bmFsICgpOwotIAotICNpZiBkZWZpbmVkIChIQVZFX1BPU0lYX1NJR05BTFMpCi0rICAgICAgc2ln ZW1wdHlzZXQgKCZzZXQpOwotICAgICAgIHNpZ3Byb2NtYXNrIChTSUdfQkxPQ0ssIChzaWdzZXRf dCAqKU5VTEwsICZzZXQpOwotICAgICAgIHNpZ2RlbHNldCAoJnNldCwgc2lnKTsKLSAjZWxzZSAv KiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCi1AQCAtMjUxLDExICsyOTYsMTEgQEAgcmxfc2V0X3Np Z2hhbmRsZXIgKHNpZywgaGFuZGxlciwgb2hhbmRsZQotICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Q7 Ci0gCi0gICBhY3Quc2FfaGFuZGxlciA9IGhhbmRsZXI7Ci0tI2lmIGRlZmluZWQgKFNJR1dJTkNI KQotKyMgIGlmIGRlZmluZWQgKFNJR1dJTkNIKQotICAgYWN0LnNhX2ZsYWdzID0gKHNpZyA9PSBT SUdXSU5DSCkgPyBTQV9SRVNUQVJUIDogMDsKLS0jZWxzZQotKyMgIGVsc2UKLSAgIGFjdC5zYV9m bGFncyA9IDA7Ci0tI2VuZGlmCi0rIyAgZW5kaWYgLyogU0lHV0lOQ0ggKi8KLSAgIHNpZ2VtcHR5 c2V0ICgmYWN0LnNhX21hc2spOwotICAgc2lnZW1wdHlzZXQgKCZvaGFuZGxlci0+c2FfbWFzayk7 Ci0gICBzaWdhY3Rpb24gKHNpZywgJmFjdCwgJm9sZF9oYW5kbGVyKTsKLUBAIC0yOTIsOSArMzM3 LDQ0IEBAIHJsX3NldF9zaWduYWxzICgpCi0gewotICAgc2lnaGFuZGxlcl9jeHQgZHVtbXk7Ci0g ICBTaWdIYW5kbGVyICpvaDsKLSsjaWYgZGVmaW5lZCAoSEFWRV9QT1NJWF9TSUdOQUxTKQotKyAg c3RhdGljIGludCBzaWdtYXNrX3NldCA9IDA7Ci0rICBzdGF0aWMgc2lnc2V0X3QgYnNldCwgb3Nl dDsKLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZCAoSEFWRV9QT1NJWF9TSUdOQUxTKQotKyAgaWYg KHJsX2NhdGNoX3NpZ25hbHMgJiYgc2lnbWFza19zZXQgPT0gMCkKLSsgICAgewotKyAgICAgIHNp Z2VtcHR5c2V0ICgmYnNldCk7Ci0rCi0rICAgICAgc2lnYWRkc2V0ICgmYnNldCwgU0lHSU5UKTsK LSsgICAgICBzaWdhZGRzZXQgKCZic2V0LCBTSUdURVJNKTsKLSsjaWYgZGVmaW5lZCAoU0lHUVVJ VCkKLSsgICAgICBzaWdhZGRzZXQgKCZic2V0LCBTSUdRVUlUKTsKLSsjZW5kaWYKLSsjaWYgZGVm aW5lZCAoU0lHQUxSTSkKLSsgICAgICBzaWdhZGRzZXQgKCZic2V0LCBTSUdBTFJNKTsKLSsjZW5k aWYKLSsjaWYgZGVmaW5lZCAoU0lHVFNUUCkKLSsgICAgICBzaWdhZGRzZXQgKCZic2V0LCBTSUdU U1RQKTsKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZCAoU0lHVFRJTikKLSsgICAgICBzaWdhZGRzZXQg KCZic2V0LCBTSUdUVElOKTsKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZCAoU0lHVFRPVSkKLSsgICAg ICBzaWdhZGRzZXQgKCZic2V0LCBTSUdUVE9VKTsKLSsjZW5kaWYKLSsgICAgICBzaWdtYXNrX3Nl dCA9IDE7Ci0rICAgIH0gICAgICAKLSsjZW5kaWYgLyogSEFWRV9QT1NJWF9TSUdOQUxTICovCi0g Ci0gICBpZiAocmxfY2F0Y2hfc2lnbmFscyAmJiBzaWduYWxzX3NldF9mbGFnID09IDApCi0gICAg IHsKLSsjaWYgZGVmaW5lZCAoSEFWRV9QT1NJWF9TSUdOQUxTKQotKyAgICAgIHNpZ2VtcHR5c2V0 ICgmb3NldCk7Ci0rICAgICAgc2lncHJvY21hc2sgKFNJR19CTE9DSywgJmJzZXQsICZvc2V0KTsK LSsjZW5kaWYKLSsKLSAgICAgICBybF9tYXliZV9zZXRfc2lnaGFuZGxlciAoU0lHSU5ULCBybF9z aWduYWxfaGFuZGxlciwgJm9sZF9pbnQpOwotICAgICAgIHJsX21heWJlX3NldF9zaWdoYW5kbGVy IChTSUdURVJNLCBybF9zaWduYWxfaGFuZGxlciwgJm9sZF90ZXJtKTsKLSAjaWYgZGVmaW5lZCAo U0lHUVVJVCkKLUBAIC0zMjgsNiArNDA4LDEwIEBAIHJsX3NldF9zaWduYWxzICgpCi0gI2VuZGlm IC8qIFNJR1RUSU4gKi8KLSAKLSAgICAgICBzaWduYWxzX3NldF9mbGFnID0gMTsKLSsKLSsjaWYg ZGVmaW5lZCAoSEFWRV9QT1NJWF9TSUdOQUxTKQotKyAgICAgIHNpZ3Byb2NtYXNrIChTSUdfU0VU TUFTSywgJm9zZXQsIChzaWdzZXRfdCAqKU5VTEwpOwotKyNlbmRpZgotICAgICB9Ci0gCi0gI2lm IGRlZmluZWQgKFNJR1dJTkNIKQotQEAgLTM5NCw4ICs0NzgsOCBAQCBybF9jbGVhbnVwX2FmdGVy X3NpZ25hbCAoKQotICAgX3JsX2NsZWFuX3VwX2Zvcl9leGl0ICgpOwotICAgaWYgKHJsX2RlcHJl cF90ZXJtX2Z1bmN0aW9uKQotICAgICAoKnJsX2RlcHJlcF90ZXJtX2Z1bmN0aW9uKSAoKTsKLS0g IHJsX2NsZWFyX3NpZ25hbHMgKCk7Ci0gICBybF9jbGVhcl9wZW5kaW5nX2lucHV0ICgpOwotKyAg cmxfY2xlYXJfc2lnbmFscyAoKTsKLSB9Ci0gCi0gLyogUmVzZXQgdGhlIHRlcm1pbmFsIGFuZCBy ZWFkbGluZSBzdGF0ZSBhZnRlciBhIHNpZ25hbCBoYW5kbGVyIHJldHVybnMuICovCi1AQCAtNDI4 LDMgKzUxMiwxNjAgQEAgcmxfZnJlZV9saW5lX3N0YXRlICgpCi0gfQotIAotICNlbmRpZiAgLyog SEFORExFX1NJR05BTFMgKi8KLSsKLSsvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0rLyoJCQkJCQkJCSAgICAqLwot Ky8qCQkJICAgU0lHSU5UIE1hbmFnZW1lbnQJCQkgICAgKi8KLSsvKgkJCQkJCQkJICAgICovCi0r LyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiAqLwotKwotKyNpZiBkZWZpbmVkIChIQVZFX1BPU0lYX1NJR05BTFMpCi0rc3Rh dGljIHNpZ3NldF90IHNpZ2ludF9zZXQsIHNpZ2ludF9vc2V0OwotK3N0YXRpYyBzaWdzZXRfdCBz aWd3aW5jaF9zZXQsIHNpZ3dpbmNoX29zZXQ7Ci0rI2Vsc2UgLyogIUhBVkVfUE9TSVhfU0lHTkFM UyAqLwotKyMgIGlmIGRlZmluZWQgKEhBVkVfQlNEX1NJR05BTFMpCi0rc3RhdGljIGludCBzaWdp bnRfb2xkbWFzazsKLStzdGF0aWMgaW50IHNpZ3dpbmNoX29sZG1hc2s7Ci0rIyAgZW5kaWYgLyog SEFWRV9CU0RfU0lHTkFMUyAqLwotKyNlbmRpZiAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCi0r Ci0rc3RhdGljIGludCBzaWdpbnRfYmxvY2tlZDsKLStzdGF0aWMgaW50IHNpZ3dpbmNoX2Jsb2Nr ZWQ7Ci0rCi0rLyogQ2F1c2UgU0lHSU5UIHRvIG5vdCBiZSBkZWxpdmVyZWQgdW50aWwgdGhlIGNv cnJlc3BvbmRpbmcgY2FsbCB0bwotKyAgIHJlbGVhc2Vfc2lnaW50KCkuICovCi0rdm9pZAotK19y bF9ibG9ja19zaWdpbnQgKCkKLSt7Ci0rICBpZiAoc2lnaW50X2Jsb2NrZWQpCi0rICAgIHJldHVy bjsKLSsKLSsjaWYgZGVmaW5lZCAoSEFWRV9QT1NJWF9TSUdOQUxTKQotKyAgc2lnZW1wdHlzZXQg KCZzaWdpbnRfc2V0KTsKLSsgIHNpZ2VtcHR5c2V0ICgmc2lnaW50X29zZXQpOwotKyAgc2lnYWRk c2V0ICgmc2lnaW50X3NldCwgU0lHSU5UKTsKLSsgIHNpZ3Byb2NtYXNrIChTSUdfQkxPQ0ssICZz aWdpbnRfc2V0LCAmc2lnaW50X29zZXQpOwotKyNlbHNlIC8qICFIQVZFX1BPU0lYX1NJR05BTFMg Ki8KLSsjICBpZiBkZWZpbmVkIChIQVZFX0JTRF9TSUdOQUxTKQotKyAgc2lnaW50X29sZG1hc2sg PSBzaWdibG9jayAoc2lnbWFzayAoU0lHSU5UKSk7Ci0rIyAgZWxzZSAvKiAhSEFWRV9CU0RfU0lH TkFMUyAqLwotKyMgICAgaWYgZGVmaW5lZCAoSEFWRV9VU0dfU0lHSE9MRCkKLSsgIHNpZ2hvbGQg KFNJR0lOVCk7Ci0rIyAgICBlbmRpZiAvKiBIQVZFX1VTR19TSUdIT0xEICovCi0rIyAgZW5kaWYg LyogIUhBVkVfQlNEX1NJR05BTFMgKi8KLSsjZW5kaWYgLyogIUhBVkVfUE9TSVhfU0lHTkFMUyAq LwotKwotKyAgc2lnaW50X2Jsb2NrZWQgPSAxOwotK30KLSsKLSsvKiBBbGxvdyBTSUdJTlQgdG8g YmUgZGVsaXZlcmVkLiAqLwotK3ZvaWQKLStfcmxfcmVsZWFzZV9zaWdpbnQgKCkKLSt7Ci0rICBp ZiAoc2lnaW50X2Jsb2NrZWQgPT0gMCkKLSsgICAgcmV0dXJuOwotKwotKyNpZiBkZWZpbmVkIChI QVZFX1BPU0lYX1NJR05BTFMpCi0rICBzaWdwcm9jbWFzayAoU0lHX1NFVE1BU0ssICZzaWdpbnRf b3NldCwgKHNpZ3NldF90ICopTlVMTCk7Ci0rI2Vsc2UKLSsjICBpZiBkZWZpbmVkIChIQVZFX0JT RF9TSUdOQUxTKQotKyAgc2lnc2V0bWFzayAoc2lnaW50X29sZG1hc2spOwotKyMgIGVsc2UgLyog IUhBVkVfQlNEX1NJR05BTFMgKi8KLSsjICAgIGlmIGRlZmluZWQgKEhBVkVfVVNHX1NJR0hPTEQp Ci0rICBzaWdyZWxzZSAoU0lHSU5UKTsKLSsjICAgIGVuZGlmIC8qIEhBVkVfVVNHX1NJR0hPTEQg Ki8KLSsjICBlbmRpZiAvKiAhSEFWRV9CU0RfU0lHTkFMUyAqLwotKyNlbmRpZiAvKiAhSEFWRV9Q T1NJWF9TSUdOQUxTICovCi0rCi0rICBzaWdpbnRfYmxvY2tlZCA9IDA7Ci0rfQotKwotKy8qIENh dXNlIFNJR1dJTkNIIHRvIG5vdCBiZSBkZWxpdmVyZWQgdW50aWwgdGhlIGNvcnJlc3BvbmRpbmcg Y2FsbCB0bwotKyAgIHJlbGVhc2Vfc2lnd2luY2goKS4gKi8KLSt2b2lkCi0rX3JsX2Jsb2NrX3Np Z3dpbmNoICgpCi0rewotKyAgaWYgKHNpZ3dpbmNoX2Jsb2NrZWQpCi0rICAgIHJldHVybjsKLSsK LSsjaWYgZGVmaW5lZCAoSEFWRV9QT1NJWF9TSUdOQUxTKQotKyAgc2lnZW1wdHlzZXQgKCZzaWd3 aW5jaF9zZXQpOwotKyAgc2lnZW1wdHlzZXQgKCZzaWd3aW5jaF9vc2V0KTsKLSsgIHNpZ2FkZHNl dCAoJnNpZ3dpbmNoX3NldCwgU0lHV0lOQ0gpOwotKyAgc2lncHJvY21hc2sgKFNJR19CTE9DSywg JnNpZ3dpbmNoX3NldCwgJnNpZ3dpbmNoX29zZXQpOwotKyNlbHNlIC8qICFIQVZFX1BPU0lYX1NJ R05BTFMgKi8KLSsjICBpZiBkZWZpbmVkIChIQVZFX0JTRF9TSUdOQUxTKQotKyAgc2lnd2luY2hf b2xkbWFzayA9IHNpZ2Jsb2NrIChzaWdtYXNrIChTSUdXSU5DSCkpOwotKyMgIGVsc2UgLyogIUhB VkVfQlNEX1NJR05BTFMgKi8KLSsjICAgIGlmIGRlZmluZWQgKEhBVkVfVVNHX1NJR0hPTEQpCi0r ICBzaWdob2xkIChTSUdXSU5DSCk7Ci0rIyAgICBlbmRpZiAvKiBIQVZFX1VTR19TSUdIT0xEICov Ci0rIyAgZW5kaWYgLyogIUhBVkVfQlNEX1NJR05BTFMgKi8KLSsjZW5kaWYgLyogIUhBVkVfUE9T SVhfU0lHTkFMUyAqLwotKwotKyAgc2lnd2luY2hfYmxvY2tlZCA9IDE7Ci0rfQotKwotKy8qIEFs bG93IFNJR1dJTkNIIHRvIGJlIGRlbGl2ZXJlZC4gKi8KLSt2b2lkCi0rX3JsX3JlbGVhc2Vfc2ln d2luY2ggKCkKLSt7Ci0rICBpZiAoc2lnd2luY2hfYmxvY2tlZCA9PSAwKQotKyAgICByZXR1cm47 Ci0rCi0rI2lmIGRlZmluZWQgKEhBVkVfUE9TSVhfU0lHTkFMUykKLSsgIHNpZ3Byb2NtYXNrIChT SUdfU0VUTUFTSywgJnNpZ3dpbmNoX29zZXQsIChzaWdzZXRfdCAqKU5VTEwpOwotKyNlbHNlCi0r IyAgaWYgZGVmaW5lZCAoSEFWRV9CU0RfU0lHTkFMUykKLSsgIHNpZ3NldG1hc2sgKHNpZ3dpbmNo X29sZG1hc2spOwotKyMgIGVsc2UgLyogIUhBVkVfQlNEX1NJR05BTFMgKi8KLSsjICAgIGlmIGRl ZmluZWQgKEhBVkVfVVNHX1NJR0hPTEQpCi0rICBzaWdyZWxzZSAoU0lHV0lOQ0gpOwotKyMgICAg ZW5kaWYgLyogSEFWRV9VU0dfU0lHSE9MRCAqLwotKyMgIGVuZGlmIC8qICFIQVZFX0JTRF9TSUdO QUxTICovCi0rI2VuZGlmIC8qICFIQVZFX1BPU0lYX1NJR05BTFMgKi8KLSsKLSsgIHNpZ3dpbmNo X2Jsb2NrZWQgPSAwOwotK30KLSsKLSsvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0rLyoJCQkJCQkJCSAgICAqLwot Ky8qCQlFY2hvaW5nIHNwZWNpYWwgY29udHJvbCBjaGFyYWN0ZXJzCQkgICAgKi8KLSsvKgkJCQkJ CQkJICAgICovCi0rLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiAqLwotK3ZvaWQKLStybF9lY2hvX3NpZ25hbF9jaGFyIChz aWcpCi0rICAgICBpbnQgc2lnOwotK3sKLSsgIGNoYXIgY3N0clszXTsKLSsgIGludCBjc2xlbiwg YzsKLSsKLSsgIGlmIChfcmxfZWNob2N0bCA9PSAwIHx8IF9ybF9lY2hvX2NvbnRyb2xfY2hhcnMg PT0gMCkKLSsgICAgcmV0dXJuOwotKwotKyAgc3dpdGNoIChzaWcpCi0rICAgIHsKLSsgICAgY2Fz ZSBTSUdJTlQ6ICBjID0gX3JsX2ludHJfY2hhcjsgYnJlYWs7Ci0rI2lmIGRlZmluZWQgKFNJR1FV SVQpCi0rICAgIGNhc2UgU0lHUVVJVDogYyA9IF9ybF9xdWl0X2NoYXI7IGJyZWFrOwotKyNlbmRp ZgotKyNpZiBkZWZpbmVkIChTSUdUU1RQKQotKyAgICBjYXNlIFNJR1RTVFA6IGMgPSBfcmxfc3Vz cF9jaGFyOyBicmVhazsKLSsjZW5kaWYKLSsgICAgZGVmYXVsdDogcmV0dXJuOwotKyAgICB9Ci0r Ci0rICBpZiAoQ1RSTF9DSEFSIChjKSB8fCBjID09IFJVQk9VVCkKLSsgICAgewotKyAgICAgIGNz dHJbMF0gPSAnXic7Ci0rICAgICAgY3N0clsxXSA9IENUUkxfQ0hBUiAoYykgPyBVTkNUUkwgKGMp IDogJz8nOwotKyAgICAgIGNzdHJbY3NsZW4gPSAyXSA9ICdcMCc7Ci0rICAgIH0KLSsgIGVsc2UK LSsgICAgewotKyAgICAgIGNzdHJbMF0gPSBjOwotKyAgICAgIGNzdHJbY3NsZW4gPSAxXSA9ICdc MCc7Ci0rICAgIH0KLSsKLSsgIF9ybF9vdXRwdXRfc29tZV9jaGFycyAoY3N0ciwgY3NsZW4pOwot K30KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3N1cHBvcnQvY29uZmlnLmd1 ZXNzCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3N1 cHBvcnQvY29uZmlnLmd1ZXNzCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9zdXBwb3J0L2NvbmZpZy5ndWVzcwkyMDEx LTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsOSArMSwxMCBAQAotICMhIC9i aW4vc2gKLSAjIEF0dGVtcHQgdG8gZ3Vlc3MgYSBjYW5vbmljYWwgc3lzdGVtIG5hbWUuCi0gIyAg IENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwg MTk5OSwKLS0jICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsjICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwg MjAwNywgMjAwOCwgMjAwOQotKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAK LS10aW1lc3RhbXA9JzIwMDQtMDItMTYnCi0rdGltZXN0YW1wPScyMDA4LTAzLTEyJwotIAotICMg VGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQKLSAjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci1AQCAtMTcsMTMgKzE4LDE1IEBAIHRpbWVzdGFtcD0n MjAwNC0wMi0xNicKLSAjCi0gIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07 IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0jIEZvdW5kYXRpb24sIEluYy4s IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu Ci0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQgLSBGaWZ0aCBGbG9vciwg Qm9zdG9uLCBNQQotKyMgMDIxMTAtMTMwMSwgVVNBLgotICMKLSAjIEFzIGEgc3BlY2lhbCBleGNl cHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKLSAjIGRpc3Ry aWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQotICMg Y29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1 ZGUgaXQgdW5kZXIKLSAjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2Ug Zm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSAKLSsKLSAjIE9yaWdpbmFsbHkgd3JpdHRl biBieSBQZXIgQm90aG5lciA8cGVyQGJvdGhuZXIuY29tPi4KLSAjIFBsZWFzZSBzZW5kIHBhdGNo ZXMgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LiAgU3VibWl0IGEgY29udGV4dAotICMgZGlm ZiBhbmQgYSBwcm9wZXJseSBmb3JtYXR0ZWQgQ2hhbmdlTG9nIGVudHJ5LgotQEAgLTUzLDggKzU2 LDggQEAgdmVyc2lvbj0iXAotIEdOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCi0gCi0gT3Jp Z2luYWxseSB3cml0dGVuIGJ5IFBlciBCb3RobmVyLgotLUNvcHlyaWdodCAoQykgMTk5MiwgMTk5 MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMQotLUZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5 NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKLSsyMDAyLCAyMDAz LCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0gCi0gVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3Ig Y29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KLSB3YXJyYW50eTsgbm90IGV2ZW4gZm9y IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCi1A QCAtNjYsMTEgKzY5LDExIEBAIFRyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9u LiIKLSB3aGlsZSB0ZXN0ICQjIC1ndCAwIDsgZG8KLSAgIGNhc2UgJDEgaW4KLSAgICAgLS10aW1l LXN0YW1wIHwgLS10aW1lKiB8IC10ICkKLS0gICAgICAgZWNobyAiJHRpbWVzdGFtcCIgOyBleGl0 IDAgOzsKLSsgICAgICAgZWNobyAiJHRpbWVzdGFtcCIgOyBleGl0IDs7Ci0gICAgIC0tdmVyc2lv biB8IC12ICkKLS0gICAgICAgZWNobyAiJHZlcnNpb24iIDsgZXhpdCAwIDs7Ci0rICAgICAgIGVj aG8gIiR2ZXJzaW9uIiA7IGV4aXQgOzsKLSAgICAgLS1oZWxwIHwgLS1oKiB8IC1oICkKLS0gICAg ICAgZWNobyAiJHVzYWdlIjsgZXhpdCAwIDs7Ci0rICAgICAgIGVjaG8gIiR1c2FnZSI7IGV4aXQg OzsKLSAgICAgLS0gKSAgICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCi0gICAgICAgIHNoaWZ0 OyBicmVhayA7OwotICAgICAtICkJIyBVc2Ugc3RkaW4gYXMgaW5wdXQuCi1AQCAtMTA0LDcgKzEw Nyw3IEBAIHNldF9jY19mb3JfYnVpbGQ9JwotIHRyYXAgImV4aXRjb2RlPVwkPzsgKHJtIC1mIFwk dG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGlyIFwkdG1wIDI+L2Rldi9udWxsKSAmJiBleGl0IFwk ZXhpdGNvZGUiIDAgOwotIHRyYXAgInJtIC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGly IFwkdG1wIDI+L2Rldi9udWxsOyBleGl0IDEiIDEgMiAxMyAxNSA7Ci0gOiAke1RNUERJUj0vdG1w fSA7Ci0tIHsgdG1wPWAodW1hc2sgMDc3ICYmIG1rdGVtcCAtZCAtcSAiJFRNUERJUi9jZ1hYWFhY WCIpIDI+L2Rldi9udWxsYCAmJiB0ZXN0IC1uICIkdG1wIiAmJiB0ZXN0IC1kICIkdG1wIiA7IH0g fHwKLSsgeyB0bXA9YCh1bWFzayAwNzcgJiYgbWt0ZW1wIC1kICIkVE1QRElSL2NnWFhYWFhYIikg Mj4vZGV2L251bGxgICYmIHRlc3QgLW4gIiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiIDsgfSB8fAot ICB7IHRlc3QgLW4gIiRSQU5ET00iICYmIHRtcD0kVE1QRElSL2NnJCQtJFJBTkRPTSAmJiAodW1h c2sgMDc3ICYmIG1rZGlyICR0bXApIDsgfSB8fAotICB7IHRtcD0kVE1QRElSL2NnLSQkICYmICh1 bWFzayAwNzcgJiYgbWtkaXIgJHRtcCkgJiYgZWNobyAiV2FybmluZzogY3JlYXRpbmcgaW5zZWN1 cmUgdGVtcCBkaXJlY3RvcnkiID4mMiA7IH0gfHwKLSAgeyBlY2hvICIkbWU6IGNhbm5vdCBjcmVh dGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluICRUTVBESVIiID4mMiA7IGV4aXQgMSA7IH0gOwot QEAgLTEyMyw3ICsxMjYsNyBAQCBjYXNlICRDQ19GT1JfQlVJTEQsJEhPU1RfQ0MsJENDIGluCi0g CTs7Ci0gICwsKikgICBDQ19GT1JfQlVJTEQ9JENDIDs7Ci0gICwqLCopICBDQ19GT1JfQlVJTEQ9 JEhPU1RfQ0MgOzsKLS1lc2FjIDsnCi0rZXNhYyA7IHNldF9jY19mb3JfYnVpbGQ9IDsnCi0gCi0g IyBUaGlzIGlzIG5lZWRlZCB0byBmaW5kIHVuYW1lIG9uIGEgUHlyYW1pZCBPU3ggd2hlbiBydW4g aW4gdGhlIEJTRCB1bml2ZXJzZS4KLSAjIChnaGF6aUBub2MucnV0Z2Vycy5lZHUgMTk5NC0wOC0y NCkKLUBAIC0xNTgsNiArMTYxLDcgQEAgY2FzZSAiJHtVTkFNRV9NQUNISU5FfToke1VOQU1FX1NZ U1RFTX06JAotIAkgICAgYXJtKikgbWFjaGluZT1hcm0tdW5rbm93biA7OwotIAkgICAgc2gzZWwp IG1hY2hpbmU9c2hsLXVua25vd24gOzsKLSAJICAgIHNoM2ViKSBtYWNoaW5lPXNoLXVua25vd24g OzsKLSsJICAgIHNoNWVsKSBtYWNoaW5lPXNoNWxlLXVua25vd24gOzsKLSAJICAgICopIG1hY2hp bmU9JHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVua25vd24gOzsKLSAJZXNhYwotIAkjIFRoZSBPcGVy YXRpbmcgU3lzdGVtIGluY2x1ZGluZyBvYmplY3QgZm9ybWF0LCBpZiBpdCBoYXMgc3dpdGNoZWQK LUBAIC0xOTYsNjggKzIwMCwzMiBAQCBjYXNlICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lT VEVNfTokCi0gCSMgY29udGFpbnMgcmVkdW5kYW50IGluZm9ybWF0aW9uLCB0aGUgc2hvcnRlciBm b3JtOgotIAkjIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNIGlzIHVzZWQu Ci0gCWVjaG8gIiR7bWFjaGluZX0tJHtvc30ke3JlbGVhc2V9IgotLQlleGl0IDAgOzsKLS0gICAg YW1kNjQ6T3BlbkJTRDoqOiopCi0tCWVjaG8geDg2XzY0LXVua25vd24tb3BlbmJzZCR7VU5BTUVf UkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0tICAgIGFtaWdhOk9wZW5CU0Q6KjoqKQotLQllY2hvIG02 OGstdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLS0gICAgYXJj Ok9wZW5CU0Q6KjoqKQotLQllY2hvIG1pcHNlbC11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVB U0V9Ci0tCWV4aXQgMCA7OwotLSAgICBjYXRzOk9wZW5CU0Q6KjoqKQotLQllY2hvIGFybS11bmtu b3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotLSAgICBocDMwMDpPcGVu QlNEOio6KikKLS0JZWNobyBtNjhrLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KLS0J ZXhpdCAwIDs7Ci0tICAgIG1hYzY4azpPcGVuQlNEOio6KikKLS0JZWNobyBtNjhrLXVua25vd24t b3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0tICAgIG1hY3BwYzpPcGVuQlNE Oio6KikKLS0JZWNobyBwb3dlcnBjLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KLS0J ZXhpdCAwIDs7Ci0tICAgIG12bWU2OGs6T3BlbkJTRDoqOiopCi0tCWVjaG8gbTY4ay11bmtub3du LW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotLSAgICBtdm1lODhrOk9wZW5C U0Q6KjoqKQotLQllY2hvIG04OGstdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQotLQll eGl0IDAgOzsKLS0gICAgbXZtZXBwYzpPcGVuQlNEOio6KikKLS0JZWNobyBwb3dlcnBjLXVua25v d24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0tICAgIHBlZ2Fzb3M6T3Bl bkJTRDoqOiopCi0tCWVjaG8gcG93ZXJwYy11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9 Ci0tCWV4aXQgMCA7OwotLSAgICBwbWF4Ok9wZW5CU0Q6KjoqKQotLQllY2hvIG1pcHNlbC11bmtu b3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotLSAgICBzZ2k6T3BlbkJT RDoqOiopCi0tCWVjaG8gbWlwc2ViLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KLS0J ZXhpdCAwIDs7Ci0tICAgIHN1bjM6T3BlbkJTRDoqOiopCi0tCWVjaG8gbTY4ay11bmtub3duLW9w ZW5ic2Qke1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotLSAgICB3Z3Jpc2M6T3BlbkJTRDoq OiopCi0tCWVjaG8gbWlwc2VsLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KLS0JZXhp dCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgKjpPcGVuQlNEOio6KikKLS0JZWNobyAke1VOQU1FX01B Q0hJTkV9LXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCVVO QU1FX01BQ0hJTkVfQVJDSD1gYXJjaCB8IHNlZCAncy9PcGVuQlNELi8vJ2AKLSsJZWNobyAke1VO QU1FX01BQ0hJTkVfQVJDSH0tdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQotKwlleGl0 IDs7Ci0gICAgICo6ZWtrb0JTRDoqOiopCi0gCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3du LWVra29ic2Qke1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0rICAgICo6 U29saWRCU0Q6KjoqKQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1zb2xpZGJzZCR7 VU5BTUVfUkVMRUFTRX0KLSsJZXhpdCA7OwotICAgICBtYWNwcGM6TWlyQlNEOio6KikKLS0JZWNo byBwb3dlcnBwYy11bmtub3duLW1pcmJzZCR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0r CWVjaG8gcG93ZXJwYy11bmtub3duLW1pcmJzZCR7VU5BTUVfUkVMRUFTRX0KLSsJZXhpdCA7Owot ICAgICAqOk1pckJTRDoqOiopCi0gCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW1pcmJz ZCR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgYWxwaGE6T1NG MToqOiopCi0tCWlmIHRlc3QgJFVOQU1FX1JFTEVBU0UgPSAiVjQuMCI7IHRoZW4KLSsJY2FzZSAk VU5BTUVfUkVMRUFTRSBpbgotKwkqNC4wKQotIAkJVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3Np emVyIC12IHwgYXdrICd7cHJpbnQgJDN9J2AKLS0JZmkKLSsJCTs7Ci0rCSo1LiopCi0rCSAgICAg ICAgVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDR9J2AK LSsJCTs7Ci0rCWVzYWMKLSAJIyBBY2NvcmRpbmcgdG8gQ29tcGFxLCAvdXNyL3NiaW4vcHNyaW5m byBoYXMgYmVlbiBhdmFpbGFibGUgb24KLSAJIyBPU0YvMSBhbmQgVHJ1NjQgc3lzdGVtcyBwcm9k dWNlZCBzaW5jZSAxOTk1LiAgSSBob3BlIHRoYXQKLSAJIyBjb3ZlcnMgbW9zdCBzeXN0ZW1zIHJ1 bm5pbmcgdG9kYXkuICBUaGlzIGNvZGUgcGlwZXMgdGhlIENQVQotQEAgLTI5NSw0NSArMjYzLDQ5 IEBAIGNhc2UgIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiQKLSAJICAgICJFVjcu OSAoMjEzNjRBKSIpCi0gCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NzkiIDs7Ci0gCWVzYWMKLSsJ IyBBIFBuLm4gdmVyc2lvbiBpcyBhIHBhdGNoZWQgdmVyc2lvbi4KLSAJIyBBIFZuLm4gdmVyc2lv biBpcyBhIHJlbGVhc2VkIHZlcnNpb24uCi0gCSMgQSBUbi5uIHZlcnNpb24gaXMgYSByZWxlYXNl ZCBmaWVsZCB0ZXN0IHZlcnNpb24uCi0gCSMgQSBYbi5uIHZlcnNpb24gaXMgYW4gdW5yZWxlYXNl ZCBleHBlcmltZW50YWwgYmFzZWxldmVsLgotIAkjIDEuMiB1c2VzICIxLjIiIGZvciB1bmFtZSAt ci4KLS0JZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1vc2ZgZWNobyAke1VOQU1FX1JFTEVBU0V9 IHwgc2VkIC1lICdzL15bVlRYXS8vJyB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicg J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J2AKLS0JZXhpdCAwIDs7Ci0tICAgIEFscGhhKjpP cGVuVk1TOio6KikKLS0JZWNobyBhbHBoYS1ocC12bXMKLS0JZXhpdCAwIDs7Ci0rCWVjaG8gJHtV TkFNRV9NQUNISU5FfS1kZWMtb3NmYGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9e W1BWVFhdLy8nIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamts bW5vcHFyc3R1dnd4eXonYAotKwlleGl0IDs7Ci0gICAgIEFscGhhXCAqOldpbmRvd3NfTlQqOiop Ci0gCSMgSG93IGRvIHdlIGtub3cgaXQncyBJbnRlcml4IHJhdGhlciB0aGFuIHRoZSBnZW5lcmlj IFBPU0lYIHN1YnN5c3RlbT8KLSAJIyBTaG91bGQgd2UgY2hhbmdlIFVOQU1FX01BQ0hJTkUgYmFz ZWQgb24gdGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFkCi0gCSMgb2YgdGhlIHNwZWNpZmljIEFs cGhhIG1vZGVsPwotIAllY2hvIGFscGhhLXBjLWludGVyaXgKLS0JZXhpdCAwIDs7Ci0rCWV4aXQg OzsKLSAgICAgMjEwNjQ6V2luZG93c19OVDo1MDozKQotIAllY2hvIGFscGhhLWRlYy13aW5udDMu NQotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBBbWlnYSo6VU5JWF9TeXN0ZW1fVjo0LjA6 KikKLSAJZWNobyBtNjhrLXVua25vd24tc3lzdjQKLS0JZXhpdCAwOzsKLSsJZXhpdCA7OwotICAg ICAqOltBYV1taWdhW09vXVtTc106KjoqKQotIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93 bi1hbWlnYW9zCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgICo6W01tXW9ycGhbT29dW1Nz XToqOiopCi0gCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW1vcnBob3MKLS0JZXhpdCAw IDs7Ci0rCWV4aXQgOzsKLSAgICAgKjpPUy8zOTA6KjoqKQotIAllY2hvIGkzNzAtaWJtLW9wZW5l ZGl0aW9uCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0rICAgICo6ei9WTToqOiopCi0rCWVjaG8g czM5MC1pYm0tenZtb2UKLSsJZXhpdCA7OwotICAgICAqOk9TNDAwOio6KikKLSAgICAgICAgIGVj aG8gcG93ZXJwYy1pYm0tb3M0MDAKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgYXJtOlJJ U0MqOjEuWzAxMl0qOip8YXJtOnJpc2NpeDoxLlswMTJdKjoqKQotIAllY2hvIGFybS1hY29ybi1y aXNjaXgke1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQgMDs7Ci0rCWV4aXQgOzsKLSsgICAgYXJtOnJp c2NvczoqOip8YXJtOlJJU0NPUzoqOiopCi0rCWVjaG8gYXJtLXVua25vd24tcmlzY29zCi0rCWV4 aXQgOzsKLSAgICAgU1IyPzAxOkhJLVVYL01QUDoqOiogfCBTUjgwMDA6SEktVVgvTVBQOio6KikK LSAJZWNobyBocHBhMS4xLWhpdGFjaGktaGl1eG1wcAotLQlleGl0IDA7OwotKwlleGl0IDs7Ci0g ICAgIFB5cmFtaWQqOk9TeCo6KjoqIHwgTUlTKjpPU3gqOio6KiB8IE1JUyo6U01QX0RDLU9TeCo6 KjoqKQotIAkjIGFrZWVAd3BkaXMwMy53cGFmYi5hZi5taWwgKEVhcmxlIEYuIEFrZSkgY29udHJp YnV0ZWQgTUlTIGFuZCBOSUxFLgotIAlpZiB0ZXN0ICJgKC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9u dWxsYCIgPSBhdHQgOyB0aGVuCi1AQCAtMzQxLDMyICszMTMsMzIgQEAgY2FzZSAiJHtVTkFNRV9N QUNISU5FfToke1VOQU1FX1NZU1RFTX06JAotIAllbHNlCi0gCQllY2hvIHB5cmFtaWQtcHlyYW1p ZC1ic2QKLSAJZmkKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgTklMRSo6KjoqOmRjb3N4 KQotIAllY2hvIHB5cmFtaWQtcHlyYW1pZC1zdnI0Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0g ICAgIERSUz82MDAwOnVuaXg6NC4wOjYqKQotIAllY2hvIHNwYXJjLWljbC1ueDYKLS0JZXhpdCAw IDs7Ci0tICAgIERSUz82MDAwOlVOSVhfU1Y6NC4yKjo3KikKLSsJZXhpdCA7OwotKyAgICBEUlM/ NjAwMDpVTklYX1NWOjQuMio6NyogfCBEUlM/NjAwMDppc2lzOjQuMio6NyopCi0gCWNhc2UgYC91 c3IvYmluL3VuYW1lIC1wYCBpbgotLQkgICAgc3BhcmMpIGVjaG8gc3BhcmMtaWNsLW54NyAmJiBl eGl0IDAgOzsKLSsJICAgIHNwYXJjKSBlY2hvIHNwYXJjLWljbC1ueDc7IGV4aXQgOzsKLSAJZXNh YyA7OwotICAgICBzdW40SDpTdW5PUzo1Lio6KikKLSAJZWNobyBzcGFyYy1oYWwtc29sYXJpczJg ZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKLS0JZXhpdCAwIDs7Ci0r CWV4aXQgOzsKLSAgICAgc3VuNCo6U3VuT1M6NS4qOiogfCB0YWRwb2xlKjpTdW5PUzo1Lio6KikK LSAJZWNobyBzcGFyYy1zdW4tc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAn cy9bXi5dKi8vJ2AKLS0JZXhpdCAwIDs7Ci0tICAgIGk4NnBjOlN1bk9TOjUuKjoqKQotKwlleGl0 IDs7Ci0rICAgIGk4NnBjOlN1bk9TOjUuKjoqIHwgaTg2eGVuOlN1bk9TOjUuKjoqKQotIAllY2hv IGkzODYtcGMtc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8v J2AKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgc3VuNCo6U3VuT1M6Nio6KikKLSAJIyBB Y2NvcmRpbmcgdG8gY29uZmlnLnN1YiwgdGhpcyBpcyB0aGUgcHJvcGVyIHdheSB0byBjYW5vbmlj YWxpemUKLSAJIyBTdW5PUzYuICBIYXJkIHRvIGd1ZXNzIGV4YWN0bHkgd2hhdCBTdW5PUzYgd2ls bCBiZSBsaWtlLCBidXQKLSAJIyBpdCdzIGxpa2VseSB0byBiZSBtb3JlIGxpa2UgU29sYXJpcyB0 aGFuIFN1bk9TNC4KLSAJZWNobyBzcGFyYy1zdW4tc29sYXJpczNgZWNobyAke1VOQU1FX1JFTEVB U0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgc3Vu NCo6U3VuT1M6KjoqKQotIAljYXNlICJgL3Vzci9iaW4vYXJjaCAta2AiIGluCi0gCSAgICBTZXJp ZXMqfFM0KikKLUBAIC0zNzUsMTAgKzM0NywxMCBAQCBjYXNlICIke1VOQU1FX01BQ0hJTkV9OiR7 VU5BTUVfU1lTVEVNfTokCi0gCWVzYWMKLSAJIyBKYXBhbmVzZSBMYW5ndWFnZSB2ZXJzaW9ucyBo YXZlIGEgdmVyc2lvbiBudW1iZXIgbGlrZSBgNC4xLjMtSkwnLgotIAllY2hvIHNwYXJjLXN1bi1z dW5vc2BlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLy0vXy8nYAotLQlleGl0IDAgOzsK LSsJZXhpdCA7OwotICAgICBzdW4zKjpTdW5PUzoqOiopCi0gCWVjaG8gbTY4ay1zdW4tc3Vub3Mk e1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIHN1bio6Kjo0LjJC U0Q6KikKLSAJVU5BTUVfUkVMRUFTRT1gKHNlZCAxcSAvZXRjL21vdGQgfCBhd2sgJ3twcmludCBz dWJzdHIoJDUsMSwzKX0nKSAyPi9kZXYvbnVsbGAKLSAJdGVzdCAieCR7VU5BTUVfUkVMRUFTRX0i ID0gIngiICYmIFVOQU1FX1JFTEVBU0U9MwotQEAgLTM5MCwxMCArMzYyLDEwIEBAIGNhc2UgIiR7 VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiQKLSAJCWVjaG8gc3BhcmMtc3VuLXN1bm9z JHtVTkFNRV9SRUxFQVNFfQotIAkJOzsKLSAJZXNhYwotLQlleGl0IDAgOzsKLSsJZXhpdCA7Owot ICAgICBhdXNocDpTdW5PUzoqOiopCi0gCWVjaG8gc3BhcmMtYXVzcGV4LXN1bm9zJHtVTkFNRV9S RUxFQVNFfQotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICAjIFRoZSBzaXR1YXRpb24gZm9y IE1pTlQgaXMgYSBsaXR0bGUgY29uZnVzaW5nLiAgVGhlIG1hY2hpbmUgbmFtZQotICAgICAjIGNh biBiZSB2aXJ0dWFsbHkgZXZlcnl0aGluZyAoZXZlcnl0aGluZyB3aGljaCBpcyBub3QKLSAgICAg IyAiYXRhcmlzdCIgb3IgImF0YXJpc3RlIiBhdCBsZWFzdCBzaG91bGQgaGF2ZSBhIHByb2Nlc3Nv cgotQEAgLTQwNCw0MCArMzc2LDQwIEBAIGNhc2UgIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9T WVNURU19OiQKLSAgICAgIyBiZSBubyBwcm9ibGVtLgotICAgICBhdGFyaXN0W2VdOipNaU5UOio6 KiB8IGF0YXJpc3RbZV06Km1pbnQ6KjoqIHwgYXRhcmlzdFtlXToqVE9TOio6KikKLSAgICAgICAg IGVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLSsJZXhp dCA7OwotICAgICBhdGFyaSo6Kk1pTlQ6KjoqIHwgYXRhcmkqOiptaW50Oio6KiB8IGF0YXJpc3Rb ZV06KlRPUzoqOiopCi0gCWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQotLSAg ICAgICAgZXhpdCAwIDs7Ci0rICAgICAgICBleGl0IDs7Ci0gICAgICpmYWxjb24qOipNaU5UOio6 KiB8ICpmYWxjb24qOiptaW50Oio6KiB8ICpmYWxjb24qOipUT1M6KjoqKQotICAgICAgICAgZWNo byBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7 Ci0gICAgIG1pbGFuKjoqTWlOVDoqOiogfCBtaWxhbio6Km1pbnQ6KjoqIHwgKm1pbGFuKjoqVE9T Oio6KikKLSAgICAgICAgIGVjaG8gbTY4ay1taWxhbi1taW50JHtVTkFNRV9SRUxFQVNFfQotLSAg ICAgICAgZXhpdCAwIDs7Ci0rICAgICAgICBleGl0IDs7Ci0gICAgIGhhZGVzKjoqTWlOVDoqOiog fCBoYWRlcyo6Km1pbnQ6KjoqIHwgKmhhZGVzKjoqVE9TOio6KikKLSAgICAgICAgIGVjaG8gbTY4 ay1oYWRlcy1taW50JHtVTkFNRV9SRUxFQVNFfQotLSAgICAgICAgZXhpdCAwIDs7Ci0rICAgICAg ICBleGl0IDs7Ci0gICAgICo6Kk1pTlQ6KjoqIHwgKjoqbWludDoqOiogfCAqOipUT1M6KjoqKQot ICAgICAgICAgZWNobyBtNjhrLXVua25vd24tbWludCR7VU5BTUVfUkVMRUFTRX0KLS0gICAgICAg IGV4aXQgMCA7OwotKyAgICAgICAgZXhpdCA7OwotICAgICBtNjhrOm1hY2h0ZW46KjoqKQotIAll Y2hvIG02OGstYXBwbGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWV4 aXQgOzsKLSAgICAgcG93ZXJwYzptYWNodGVuOio6KikKLSAJZWNobyBwb3dlcnBjLWFwcGxlLW1h Y2h0ZW4ke1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIFJJU0Mq Ok1hY2g6KjoqKQotIAllY2hvIG1pcHMtZGVjLW1hY2hfYnNkNC4zCi0tCWV4aXQgMCA7OwotKwll eGl0IDs7Ci0gICAgIFJJU0MqOlVMVFJJWDoqOiopCi0gCWVjaG8gbWlwcy1kZWMtdWx0cml4JHtV TkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBWQVgqOlVMVFJJWCo6 KjoqKQotIAllY2hvIHZheC1kZWMtdWx0cml4JHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsK LSsJZXhpdCA7OwotICAgICAyMDIwOkNMSVg6KjoqIHwgMjQzMDpDTElYOio6KikKLSAJZWNobyBj bGlwcGVyLWludGVyZ3JhcGgtY2xpeCR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWV4 aXQgOzsKLSAgICAgbWlwczoqOio6VU1JUFMgfCBtaXBzOio6KjpSSVNDb3MpCi0gCWV2YWwgJHNl dF9jY19mb3JfYnVpbGQKLSAJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15LmMKLUBAIC00NjEs MzIgKzQzMywzMyBAQCBjYXNlICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVNfTokCi0g CSAgZXhpdCAoLTEpOwotIAl9Ci0gRU9GCi0tCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1t eS5jIFwKLS0JICAmJiAkZHVtbXkgYGVjaG8gIiR7VU5BTUVfUkVMRUFTRX0iIHwgc2VkIC1uICdz L1woWzAtOV0qXCkuKi9cMS9wJ2AgXAotLQkgICYmIGV4aXQgMAotKwkkQ0NfRk9SX0JVSUxEIC1v ICRkdW1teSAkZHVtbXkuYyAmJgotKwkgIGR1bW15YXJnPWBlY2hvICIke1VOQU1FX1JFTEVBU0V9 IiB8IHNlZCAtbiAncy9cKFswLTldKlwpLiovXDEvcCdgICYmCi0rCSAgU1lTVEVNX05BTUU9YCRk dW1teSAkZHVtbXlhcmdgICYmCi0rCSAgICB7IGVjaG8gIiRTWVNURU1fTkFNRSI7IGV4aXQ7IH0K LSAJZWNobyBtaXBzLW1pcHMtcmlzY29zJHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLSsJ ZXhpdCA7OwotICAgICBNb3Rvcm9sYTpQb3dlck1BWF9PUzoqOiopCi0gCWVjaG8gcG93ZXJwYy1t b3Rvcm9sYS1wb3dlcm1heAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBNb3Rvcm9sYToq OjQuMzpQTDgtKikKLSAJZWNobyBwb3dlcnBjLWhhcnJpcy1wb3dlcm1heAotLQlleGl0IDAgOzsK LSsJZXhpdCA7OwotICAgICBOaWdodF9IYXdrOio6KjpQb3dlck1BWF9PUyB8IFN5bmVyZ3k6UG93 ZXJNQVhfT1M6KjoqKQotIAllY2hvIHBvd2VycGMtaGFycmlzLXBvd2VybWF4Ci0tCWV4aXQgMCA7 OwotKwlleGl0IDs7Ci0gICAgIE5pZ2h0X0hhd2s6UG93ZXJfVU5JWDoqOiopCi0gCWVjaG8gcG93 ZXJwYy1oYXJyaXMtcG93ZXJ1bml4Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIG04OGs6 Q1gvVVg6Nyo6KikKLSAJZWNobyBtODhrLWhhcnJpcy1jeHV4NwotLQlleGl0IDAgOzsKLSsJZXhp dCA7OwotICAgICBtODhrOio6NCo6UjQqKQotIAllY2hvIG04OGstbW90b3JvbGEtc3lzdjQKLS0J ZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgbTg4azoqOjMqOlIzKikKLSAJZWNobyBtODhrLW1v dG9yb2xhLXN5c3YzCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIEFWaWlPTjpkZ3V4Oio6 KikKLSAgICAgICAgICMgREcvVVggcmV0dXJucyBBVmlpT04gZm9yIGFsbCBhcmNoaXRlY3R1cmVz Ci0gICAgICAgICBVTkFNRV9QUk9DRVNTT1I9YC91c3IvYmluL3VuYW1lIC1wYAotQEAgLTUwMiwy OSArNDc1LDI5IEBAIEVPRgotIAllbHNlCi0gCSAgICBlY2hvIGk1ODYtZGctZGd1eCR7VU5BTUVf UkVMRUFTRX0KLSAJZmkKLS0gCWV4aXQgMCA7OwotKyAJZXhpdCA7OwotICAgICBNODgqOkRvbHBo aW5PUzoqOiopCSMgRG9scGhpbk9TIChTVlIzKQotIAllY2hvIG04OGstZG9scGhpbi1zeXN2Mwot LQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBNODgqOio6UjMqOiopCi0gCSMgRGVsdGEgODhr IHN5c3RlbSBydW5uaW5nIFNWUjMKLSAJZWNobyBtODhrLW1vdG9yb2xhLXN5c3YzCi0tCWV4aXQg MCA7OwotKwlleGl0IDs7Ci0gICAgIFhEODgqOio6KjoqKSAjIFRla3Ryb25peCBYRDg4IHN5c3Rl bSBydW5uaW5nIFVUZWtWIChTVlIzKQotIAllY2hvIG04OGstdGVrdHJvbml4LXN5c3YzCi0tCWV4 aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIFRlazQzWzAtOV1bMC05XTpVVGVrOio6KikgIyBUZWt0 cm9uaXggNDMwMCBzeXN0ZW0gcnVubmluZyBVVGVrIChCU0QpCi0gCWVjaG8gbTY4ay10ZWt0cm9u aXgtYnNkCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgICo6SVJJWCo6KjoqKQotIAllY2hv IG1pcHMtc2dpLWlyaXhgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy8tL18vZydgCi0t CWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgID8/Pz8/Pz8/OkFJWD86WzEyXS4xOjIpICAgIyBB SVggMi4yLjEgb3IgQUlYIDIuMS4xIGlzIFJUL1BDIEFJWC4KLS0JZWNobyByb21wLWlibS1haXgg ICAgICAjIHVuYW1lIC1tIGdpdmVzIGFuIDggaGV4LWNvZGUgQ1BVIGlkCi0tCWV4aXQgMCA7OyAg ICAgICAgICAgICAgIyBOb3RlIHRoYXQ6IGVjaG8gIidgdW5hbWUgLXNgJyIgZ2l2ZXMgJ0FJWCAn Ci0rCWVjaG8gcm9tcC1pYm0tYWl4ICAgICAjIHVuYW1lIC1tIGdpdmVzIGFuIDggaGV4LWNvZGUg Q1BVIGlkCi0rCWV4aXQgOzsgICAgICAgICAgICAgICAjIE5vdGUgdGhhdDogZWNobyAiJ2B1bmFt ZSAtc2AnIiBnaXZlcyAnQUlYICcKLSAgICAgaSo4NjpBSVg6KjoqKQotIAllY2hvIGkzODYtaWJt LWFpeAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBpYTY0OkFJWDoqOiopCi0gCWlmIFsg LXggL3Vzci9iaW4vb3NsZXZlbCBdIDsgdGhlbgotIAkJSUJNX1JFVj1gL3Vzci9iaW4vb3NsZXZl bGAKLUBAIC01MzIsNyArNTA1LDcgQEAgRU9GCi0gCQlJQk1fUkVWPSR7VU5BTUVfVkVSU0lPTn0u JHtVTkFNRV9SRUxFQVNFfQotIAlmaQotIAllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLWFpeCR7 SUJNX1JFVn0KLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgKjpBSVg6MjozKQotIAlpZiBn cmVwIGJvczMyNSAvdXNyL2luY2x1ZGUvc3RkaW8uaCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAJ CWV2YWwgJHNldF9jY19mb3JfYnVpbGQKLUBAIC01NDcsMTUgKzUyMCwxOSBAQCBFT0YKLSAJCQll eGl0KDApOwotIAkJCX0KLSBFT0YKLS0JCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5j ICYmICRkdW1teSAmJiBleGl0IDAKLS0JCWVjaG8gcnM2MDAwLWlibS1haXgzLjIuNQotKwkJaWYg JENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVNX05BTUU9YCRkdW1teWAK LSsJCXRoZW4KLSsJCQllY2hvICIkU1lTVEVNX05BTUUiCi0rCQllbHNlCi0rCQkJZWNobyByczYw MDAtaWJtLWFpeDMuMi41Ci0rCQlmaQotIAllbGlmIGdyZXAgYm9zMzI0IC91c3IvaW5jbHVkZS9z dGRpby5oID4vZGV2L251bGwgMj4mMTsgdGhlbgotIAkJZWNobyByczYwMDAtaWJtLWFpeDMuMi40 Ci0gCWVsc2UKLSAJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIKLSAJZmkKLS0JZXhpdCAwIDs7Ci0t ICAgICo6QUlYOio6WzQ1XSkKLSsJZXhpdCA7OwotKyAgICAqOkFJWDoqOls0NTZdKQotIAlJQk1f Q1BVX0lEPWAvdXNyL3NiaW4vbHNkZXYgLUMgLWMgcHJvY2Vzc29yIC1TIGF2YWlsYWJsZSB8IHNl ZCAxcSB8IGF3ayAneyBwcmludCAkMSB9J2AKLSAJaWYgL3Vzci9zYmluL2xzYXR0ciAtRWwgJHtJ Qk1fQ1BVX0lEfSB8IGdyZXAgJyBQT1dFUicgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gCQlJQk1f QVJDSD1yczYwMDAKLUBAIC01NjgsMjggKzU0NSwyOCBAQCBFT0YKLSAJCUlCTV9SRVY9JHtVTkFN RV9WRVJTSU9OfS4ke1VOQU1FX1JFTEVBU0V9Ci0gCWZpCi0gCWVjaG8gJHtJQk1fQVJDSH0taWJt LWFpeCR7SUJNX1JFVn0KLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgKjpBSVg6KjoqKQot IAllY2hvIHJzNjAwMC1pYm0tYWl4Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIGlibXJ0 OjQuNEJTRDoqfHJvbXAtaWJtOkJTRDoqKQotIAllY2hvIHJvbXAtaWJtLWJzZDQuNAotLQlleGl0 IDAgOzsKLSsJZXhpdCA7OwotICAgICBpYm1ydDoqQlNEOip8cm9tcC1pYm06QlNEOiopICAgICAg ICAgICAgIyBjb3ZlcnMgUlQvUEMgQlNEIGFuZAotIAllY2hvIHJvbXAtaWJtLWJzZCR7VU5BTUVf UkVMRUFTRX0gICAjIDQuMyB3aXRoIHVuYW1lIGFkZGVkIHRvCi0tCWV4aXQgMCA7OyAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgcmVwb3J0OiByb21wLWlibSBCU0QgNC4zCi0rCWV4aXQgOzsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVwb3J0OiByb21wLWlibSBCU0QgNC4zCi0g ICAgICo6Qk9TWDoqOiopCi0gCWVjaG8gcnM2MDAwLWJ1bGwtYm9zeAotLQlleGl0IDAgOzsKLSsJ ZXhpdCA7OwotICAgICBEUFgvMj8wMDpCLk8uUy46KjoqKQotIAllY2hvIG02OGstYnVsbC1zeXN2 MwotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICA5MDAwL1szNF0/Pzo0LjNic2Q6MS4qOiop Ci0gCWVjaG8gbTY4ay1ocC1ic2QKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgaHAzMDA6 NC40QlNEOio6KiB8IDkwMDAvWzM0XT8/OjQuM2JzZDoyLio6KikKLSAJZWNobyBtNjhrLWhwLWJz ZDQuNAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICA5MDAwL1szNDY3OF0/PzpIUC1VWDoq OiopCi0gCUhQVVhfUkVWPWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLlsw Ql0qLy8nYAotIAljYXNlICIke1VOQU1FX01BQ0hJTkV9IiBpbgotQEAgLTY1MSw5ICs2MjgsMTkg QEAgRU9GCi0gCWVzYWMKLSAJaWYgWyAke0hQX0FSQ0h9ID0gImhwcGEyLjB3IiBdCi0gCXRoZW4K LS0JICAgICMgYXZvaWQgZG91YmxlIGV2YWx1YXRpb24gb2YgJHNldF9jY19mb3JfYnVpbGQKLS0J ICAgIHRlc3QgLW4gIiRDQ19GT1JfQlVJTEQiIHx8IGV2YWwgJHNldF9jY19mb3JfYnVpbGQKLS0J ICAgIGlmIGVjaG8gX19MUDY0X18gfCAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0pIHwgZ3Jl cCBfX0xQNjRfXyA+L2Rldi9udWxsCi0rCSAgICBldmFsICRzZXRfY2NfZm9yX2J1aWxkCi0rCi0r CSAgICAjIGhwcGEyLjB3LWhwLWhwdXgqIGhhcyBhIDY0LWJpdCBrZXJuZWwgYW5kIGEgY29tcGls ZXIgZ2VuZXJhdGluZwotKwkgICAgIyAzMi1iaXQgY29kZS4gIGhwcGE2NC1ocC1ocHV4KiBoYXMg dGhlIHNhbWUga2VybmVsIGFuZCBhIGNvbXBpbGVyCi0rCSAgICAjIGdlbmVyYXRpbmcgNjQtYml0 IGNvZGUuICBHTlUgYW5kIEhQIHVzZSBkaWZmZXJlbnQgbm9tZW5jbGF0dXJlOgotKwkgICAgIwot KwkgICAgIyAkIENDX0ZPUl9CVUlMRD1jYyAuL2NvbmZpZy5ndWVzcwotKwkgICAgIyA9PiBocHBh Mi4wdy1ocC1ocHV4MTEuMjMKLSsJICAgICMgJCBDQ19GT1JfQlVJTEQ9ImNjICtEQTIuMHciIC4v Y29uZmlnLmd1ZXNzCi0rCSAgICAjID0+IGhwcGE2NC1ocC1ocHV4MTEuMjMKLSsKLSsJICAgIGlm IGVjaG8gX19MUDY0X18gfCAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwp IHwKLSsJCWdyZXAgX19MUDY0X18gPi9kZXYvbnVsbAotIAkgICAgdGhlbgotIAkJSFBfQVJDSD0i aHBwYTIuMHciCi0gCSAgICBlbHNlCi1AQCAtNjYxLDExICs2NDgsMTEgQEAgRU9GCi0gCSAgICBm aQotIAlmaQotIAllY2hvICR7SFBfQVJDSH0taHAtaHB1eCR7SFBVWF9SRVZ9Ci0tCWV4aXQgMCA7 OwotKwlleGl0IDs7Ci0gICAgIGlhNjQ6SFAtVVg6KjoqKQotIAlIUFVYX1JFVj1gZWNobyAke1VO QU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi5bMEJdKi8vJ2AKLSAJZWNobyBpYTY0LWhwLWhw dXgke0hQVVhfUkVWfQotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICAzMDUwKjpISS1VWDoq OiopCi0gCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKLSAJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1 bW15LmMKLUBAIC02OTMsMTYzICs2ODAsMTkyIEBAIEVPRgotIAkgIGV4aXQgKDApOwotIAl9Ci0g RU9GCi0tCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmICRkdW1teSAmJiBleGl0 IDAKLSsJJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVNX05BTUU9YCRk dW1teWAgJiYKLSsJCXsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQotIAllY2hvIHVua25v d24taGl0YWNoaS1oaXV4d2UyCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIDkwMDAvNz8/ OjQuM2JzZDoqOiogfCA5MDAwLzg/Wzc5XTo0LjNic2Q6KjoqICkKLSAJZWNobyBocHBhMS4xLWhw LWJzZAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICA5MDAwLzg/Pzo0LjNic2Q6KjoqKQot IAllY2hvIGhwcGExLjAtaHAtYnNkCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgICo5Pz8q Ok1QRS9pWDoqOiogfCAqMzAwMCo6TVBFL2lYOio6KikKLSAJZWNobyBocHBhMS4wLWhwLW1wZWl4 Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIGhwNz8/Ok9TRjE6KjoqIHwgaHA4P1s3OV06 T1NGMToqOiogKQotIAllY2hvIGhwcGExLjEtaHAtb3NmCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7 Ci0gICAgIGhwOD8/Ok9TRjE6KjoqKQotIAllY2hvIGhwcGExLjAtaHAtb3NmCi0tCWV4aXQgMCA7 OwotKwlleGl0IDs7Ci0gICAgIGkqODY6T1NGMToqOiopCi0gCWlmIFsgLXggL3Vzci9zYmluL3N5 c3ZlcnNpb24gXSA7IHRoZW4KLSAJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW9z ZjFtawotIAllbHNlCi0gCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1vc2YxCi0g CWZpCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIHBhcmlzYyo6TGl0ZXMqOio6KikKLSAJ ZWNobyBocHBhMS4xLWhwLWxpdGVzCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIEMxKjpD b252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzEqOiopCi0gCWVjaG8gYzEtY29udmV4LWJz ZAotLSAgICAgICAgZXhpdCAwIDs7Ci0rICAgICAgICBleGl0IDs7Ci0gICAgIEMyKjpDb252ZXhP UzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzIqOiopCi0gCWlmIGdldHN5c2luZm8gLWYgc2NhbGFy X2FjYwotIAl0aGVuIGVjaG8gYzMyLWNvbnZleC1ic2QKLSAJZWxzZSBlY2hvIGMyLWNvbnZleC1i c2QKLSAJZmkKLS0gICAgICAgIGV4aXQgMCA7OwotKyAgICAgICAgZXhpdCA7OwotICAgICBDMzQq OkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzQqOiopCi0gCWVjaG8gYzM0LWNvbnZl eC1ic2QKLS0gICAgICAgIGV4aXQgMCA7OwotKyAgICAgICAgZXhpdCA7OwotICAgICBDMzgqOkNv bnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzgqOiopCi0gCWVjaG8gYzM4LWNvbnZleC1i c2QKLS0gICAgICAgIGV4aXQgMCA7OwotKyAgICAgICAgZXhpdCA7OwotICAgICBDNCo6Q29udmV4 T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkM0KjoqKQotIAllY2hvIGM0LWNvbnZleC1ic2QKLS0g ICAgICAgIGV4aXQgMCA7OwotKyAgICAgICAgZXhpdCA7OwotICAgICBDUkFZKlktTVA6KjoqOiop Ci0gCWVjaG8geW1wLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlte Ll0qJC8uWC8nCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIENSQVkqW0EtWl05MDoqOio6 KikKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSBc Ci0gCXwgc2VkIC1lICdzL0NSQVkuKlwoW0EtWl05MFwpL1wxLycgXAotIAkgICAgICAtZSB5L0FC Q0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LyBcCi0g CSAgICAgIC1lICdzL1wuW14uXSokLy5YLycKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAg Q1JBWSpUUzoqOio6KikKLSAJZWNobyB0OTAtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwg c2VkIC1lICdzL1wuW14uXSokLy5YLycKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgQ1JB WSpUM0U6KjoqOiopCi0gCWVjaG8gYWxwaGFldjUtY3JheS11bmljb3NtayR7VU5BTUVfUkVMRUFT RX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJwotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAg ICBDUkFZKlNWMToqOio6KikKLSAJZWNobyBzdjEtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9 IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAg KjpVTklDT1MvbXA6KjoqKQotLQllY2hvIG52MS1jcmF5LXVuaWNvc21wJHtVTkFNRV9SRUxFQVNF fSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCi0tCWV4aXQgMCA7OwotKwllY2hvIGNyYXludi1j cmF5LXVuaWNvc21wJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCi0r CWV4aXQgOzsKLSAgICAgRjMwWzAxXTpVTklYX1N5c3RlbV9WOio6KiB8IEY3MDA6VU5JWF9TeXN0 ZW1fVjoqOiopCi0gCUZVSklUU1VfUFJPQz1gdW5hbWUgLW0gfCB0ciAnQUJDREVGR0hJSktMTU5P UFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCi0gICAgICAgICBGVUpJ VFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNk ZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCi0gICAgICAgICBGVUpJ VFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzLyAvXy8nYAotICAgICAg ICAgZWNobyAiJHtGVUpJVFNVX1BST0N9LWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1Vf UkVMfSIKLS0gICAgICAgIGV4aXQgMCA7OwotKyAgICAgICAgZXhpdCA7OwotICAgICA1MDAwOlVO SVhfU3lzdGVtX1Y6NC4qOiopCi0gICAgICAgICBGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAn QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicg fCBzZWQgLWUgJ3MvXC8vLydgCi0gICAgICAgICBGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JF TEVBU0V9IHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5v cHFyc3R1dnd4eXonIHwgc2VkIC1lICdzLyAvXy8nYAotICAgICAgICAgZWNobyAic3BhcmMtZnVq aXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgotLQlleGl0IDAgOzsKLSsJZXhpdCA7 OwotICAgICBpKjg2OkJTRC8zODY6KjoqIHwgaSo4NjpCU0QvT1M6KjoqIHwgKjpBc2NlbmRcIEVt YmVkZGVkL09TOio6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWJzZGkke1VOQU1FX1JF TEVBU0V9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIHNwYXJjKjpCU0QvT1M6KjoqKQot IAllY2hvIHNwYXJjLXVua25vd24tYnNkaSR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0r CWV4aXQgOzsKLSAgICAgKjpCU0QvT1M6KjoqKQotIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5r bm93bi1ic2RpJHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICAq OkZyZWVCU0Q6KjoqKQotLQkjIERldGVybWluZSB3aGV0aGVyIHRoZSBkZWZhdWx0IGNvbXBpbGVy IHVzZXMgZ2xpYmMuCi0tCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKLS0Jc2VkICdzL14JLy8nIDw8 IEVPRiA+JGR1bW15LmMKLS0JI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0tCSNpZiBfX0dMSUJDX18g Pj0gMgotLQlMSUJDPWdudQotLQkjZWxzZQotLQlMSUJDPQotLQkjZW5kaWYKLS1FT0YKLS0JZXZh bCBgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IGdyZXAgXkxJQkM9YAot LQkjIEdOVS9LRnJlZUJTRCBzeXN0ZW1zIGhhdmUgYSAiayIgcHJlZml4IHRvIGluZGljYXRlIHdl IGFyZSB1c2luZwotLQkjIEZyZWVCU0QncyBrZXJuZWwsIGJ1dCBub3QgdGhlIGNvbXBsZXRlIE9T LgotLQljYXNlICR7TElCQ30gaW4gZ251KSBrZXJuZWxfb25seT0naycgOzsgZXNhYwotLQllY2hv ICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi0ke2tlcm5lbF9vbmx5fWZyZWVic2RgZWNobyAke1VO QU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgJHtMSUJDOistJExJQkN9Ci0tCWV4aXQg MCA7OwotKwljYXNlICR7VU5BTUVfTUFDSElORX0gaW4KLSsJICAgIHBjOTgpCi0rCQllY2hvIGkz ODYtdW5rbm93bi1mcmVlYnNkYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4q Ly8nYCA7OwotKwkgICAgYW1kNjQpCi0rCQllY2hvIHg4Nl82NC11bmtub3duLWZyZWVic2RgZWNo byAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgIDs7Ci0rCSAgICAqKQotKwkJ ZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tZnJlZWJzZGBlY2hvICR7VU5BTUVfUkVMRUFT RX18c2VkIC1lICdzL1stKF0uKi8vJ2AgOzsKLSsJZXNhYwotKwlleGl0IDs7Ci0gICAgIGkqOkNZ R1dJTio6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWN5Z3dpbgotLQlleGl0IDAgOzsK LS0gICAgaSo6TUlOR1cqOiopCi0rCWV4aXQgOzsKLSsgICAgKjpNSU5HVyo6KikKLSAJZWNobyAk e1VOQU1FX01BQ0hJTkV9LXBjLW1pbmd3MzIKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSsgICAg aSo6d2luZG93czMyKjoqKQotKyAgICAJIyB1bmFtZSAtbSBpbmNsdWRlcyAiLXBjIiBvbiB0aGlz IHN5c3RlbS4KLSsgICAgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1taW5ndzMyCi0rCWV4aXQgOzsK LSAgICAgaSo6UFcqOiopCi0gCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1wdzMyCi0tCWV4aXQg MCA7OwotLSAgICB4ODY6SW50ZXJpeCo6WzM0XSopCi0tCWVjaG8gaTU4Ni1wYy1pbnRlcml4JHtV TkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvXC4uKi8vJwotLQlleGl0IDAgOzsKLSsJZXhpdCA7Owot KyAgICAqOkludGVyaXgqOlszNDU2XSopCi0rICAgIAljYXNlICR7VU5BTUVfTUFDSElORX0gaW4K LSsJICAgIHg4NikKLSsJCWVjaG8gaTU4Ni1wYy1pbnRlcml4JHtVTkFNRV9SRUxFQVNFfQotKwkJ ZXhpdCA7OwotKwkgICAgRU02NFQgfCBhdXRoZW50aWNhbWQpCi0rCQllY2hvIHg4Nl82NC11bmtu b3duLWludGVyaXgke1VOQU1FX1JFTEVBU0V9Ci0rCQlleGl0IDs7Ci0rCSAgICBJQTY0KQotKwkJ ZWNobyBpYTY0LXVua25vd24taW50ZXJpeCR7VU5BTUVfUkVMRUFTRX0KLSsJCWV4aXQgOzsKLSsJ ZXNhYyA7OwotICAgICBbMzQ1XTg2OldpbmRvd3NfOTU6KiB8IFszNDVdODY6V2luZG93c185ODoq IHwgWzM0NV04NjpXaW5kb3dzX05UOiopCi0gCWVjaG8gaSR7VU5BTUVfTUFDSElORX0tcGMtbWtz Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIGkqOldpbmRvd3NfTlQqOiogfCBQZW50aXVt KjpXaW5kb3dzX05UKjoqKQotIAkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIg dGhhbiB0aGUgZ2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/Ci0gCSMgSXQgYWxzbyBjb25mbGljdHMg d2l0aCBwcmUtMi4wIHZlcnNpb25zIG9mIEFUJlQgVVdJTi4gU2hvdWxkIHdlCi0gCSMgVU5BTUVf TUFDSElORSBiYXNlZCBvbiB0aGUgb3V0cHV0IG9mIHVuYW1lIGluc3RlYWQgb2YgaTM4Nj8KLSAJ ZWNobyBpNTg2LXBjLWludGVyaXgKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgaSo6VVdJ Tio6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXV3aW4KLS0JZXhpdCAwIDs7Ci0rCWV4 aXQgOzsKLSsgICAgYW1kNjQ6Q1lHV0lOKjoqOiogfCB4ODZfNjQ6Q1lHV0lOKjoqOiopCi0rCWVj aG8geDg2XzY0LXVua25vd24tY3lnd2luCi0rCWV4aXQgOzsKLSAgICAgcCo6Q1lHV0lOKjoqKQot IAllY2hvIHBvd2VycGNsZS11bmtub3duLWN5Z3dpbgotLQlleGl0IDAgOzsKLSsJZXhpdCA7Owot ICAgICBwcmVwKjpTdW5PUzo1Lio6KikKLSAJZWNobyBwb3dlcnBjbGUtdW5rbm93bi1zb2xhcmlz MmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAotLQlleGl0IDAgOzsK LSsJZXhpdCA7OwotICAgICAqOkdOVToqOiopCi0gCSMgdGhlIEdOVSBzeXN0ZW0KLSAJZWNobyBg ZWNobyAke1VOQU1FX01BQ0hJTkV9fHNlZCAtZSAncyxbLS9dLiokLCwnYC11bmtub3duLWdudWBl Y2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLC8uKiQsLCdgCi0tCWV4aXQgMCA7OwotKwll eGl0IDs7Ci0gICAgICo6R05VLyo6KjoqKQotIAkjIG90aGVyIHN5c3RlbXMgd2l0aCBHTlUgbGli YyBhbmQgdXNlcmxhbmQKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYGVjaG8gJHtV TkFNRV9TWVNURU19IHwgc2VkICdzLF5bXi9dKi8sLCcgfCB0ciAnW0EtWl0nICdbYS16XSdgYGVj aG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYC1nbnUKLS0JZXhpdCAwIDs7 Ci0rCWV4aXQgOzsKLSAgICAgaSo4NjpNaW5peDoqOiopCi0gCWVjaG8gJHtVTkFNRV9NQUNISU5F fS1wYy1taW5peAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBhcm0qOkxpbnV4Oio6KikK LSsJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotKwlpZiBlY2hvIF9fQVJNX0VBQklfXyB8ICRDQ19G T1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCBcCi0rCSAgICB8IGdyZXAgLXEgX19BUk1fRUFCSV9f Ci0rCXRoZW4KLSsJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQot KwllbHNlCi0rCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnVlYWJp Ci0rCWZpCi0rCWV4aXQgOzsKLSsgICAgYXZyMzIqOkxpbnV4Oio6KikKLSAJZWNobyAke1VOQU1F X01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAg IGNyaXM6TGludXg6KjoqKQotIAllY2hvIGNyaXMtYXhpcy1saW51eC1nbnUKLS0JZXhpdCAwIDs7 Ci0rCWV4aXQgOzsKLSsgICAgY3Jpc3YzMjpMaW51eDoqOiopCi0rCWVjaG8gY3Jpc3YzMi1heGlz LWxpbnV4LWdudQotKwlleGl0IDs7Ci0rICAgIGZydjpMaW51eDoqOiopCi0rICAgIAllY2hvIGZy di11bmtub3duLWxpbnV4LWdudQotKwlleGl0IDs7Ci0gICAgIGlhNjQ6TGludXg6KjoqKQotIAll Y2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLS0JZXhpdCAwIDs7Ci0rCWV4 aXQgOzsKLSsgICAgbTMycio6TGludXg6KjoqKQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5r bm93bi1saW51eC1nbnUKLSsJZXhpdCA7OwotICAgICBtNjgqOkxpbnV4Oio6KikKLSAJZWNobyAk e1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7 Ci0gICAgIG1pcHM6TGludXg6KjoqKQotIAlldmFsICRzZXRfY2NfZm9yX2J1aWxkCi0gCXNlZCAn cy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCi1AQCAtODY2LDggKzg4MiwxMiBAQCBFT0YKLSAJI2Vu ZGlmCi0gCSNlbmRpZgotIEVPRgotLQlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+ L2Rldi9udWxsIHwgZ3JlcCBeQ1BVPWAKLS0JdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiBlY2hvICIk e0NQVX0tdW5rbm93bi1saW51eC1nbnUiICYmIGV4aXQgMAotKwlldmFsICJgJENDX0ZPUl9CVUlM RCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IHNlZCAtbiAnCi0rCSAgICAvXkNQVS97Ci0rCQlz OiA6OmcKLSsJCXAKLSsJICAgIH0nYCIKLSsJdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiB7IGVjaG8g IiR7Q1BVfS11bmtub3duLWxpbnV4LWdudSI7IGV4aXQ7IH0KLSAJOzsKLSAgICAgbWlwczY0Okxp bnV4Oio6KikKLSAJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotQEAgLTg4NSwxNSArOTA1LDIyIEBA IEVPRgotIAkjZW5kaWYKLSAJI2VuZGlmCi0gRU9GCi0tCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUg JGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwIF5DUFU9YAotLQl0ZXN0IHgiJHtDUFV9IiAhPSB4 ICYmIGVjaG8gIiR7Q1BVfS11bmtub3duLWxpbnV4LWdudSIgJiYgZXhpdCAwCi0rCWV2YWwgImAk Q0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgc2VkIC1uICcKLSsJICAgIC9e Q1BVL3sKLSsJCXM6IDo6ZwotKwkJcAotKwkgICAgfSdgIgotKwl0ZXN0IHgiJHtDUFV9IiAhPSB4 ICYmIHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtZ251IjsgZXhpdDsgfQotIAk7OwotKyAg ICBvcjMyOkxpbnV4Oio6KikKLSsJZWNobyBvcjMyLXVua25vd24tbGludXgtZ251Ci0rCWV4aXQg OzsKLSAgICAgcHBjOkxpbnV4Oio6KikKLSAJZWNobyBwb3dlcnBjLXVua25vd24tbGludXgtZ251 Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIHBwYzY0OkxpbnV4Oio6KikKLSAJZWNobyBw b3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAg YWxwaGE6TGludXg6KjoqKQotIAljYXNlIGBzZWQgLW4gJy9eY3B1IG1vZGVsL3MvXi4qOiBcKC4q XCkvXDEvcCcgPCAvcHJvYy9jcHVpbmZvYCBpbgotIAkgIEVWNSkgICBVTkFNRV9NQUNISU5FPWFs cGhhZXY1IDs7Ci1AQCAtOTA3LDcgKzkzNCw3IEBAIEVPRgotIAlvYmpkdW1wIC0tcHJpdmF0ZS1o ZWFkZXJzIC9iaW4vc2ggfCBncmVwIGxkLnNvLjEgPi9kZXYvbnVsbAotIAlpZiB0ZXN0ICIkPyIg PSAwIDsgdGhlbiBMSUJDPSJsaWJjMSIgOyBlbHNlIExJQkM9IiIgOyBmaQotIAllY2hvICR7VU5B TUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUke0xJQkN9Ci0tCWV4aXQgMCA7OwotKwlleGl0 IDs7Ci0gICAgIHBhcmlzYzpMaW51eDoqOiogfCBocHBhOkxpbnV4Oio6KikKLSAJIyBMb29rIGZv ciBDUFUgbGV2ZWwKLSAJY2FzZSBgZ3JlcCAnXmNwdVteYS16XSo6JyAvcHJvYy9jcHVpbmZvIDI+ L2Rldi9udWxsIHwgY3V0IC1kJyAnIC1mMmAgaW4KLUBAIC05MTUsMjUgKzk0MiwzMSBAQCBFT0YK LSAJICBQQTgqKSBlY2hvIGhwcGEyLjAtdW5rbm93bi1saW51eC1nbnUgOzsKLSAJICAqKSAgICBl Y2hvIGhwcGEtdW5rbm93bi1saW51eC1nbnUgOzsKLSAJZXNhYwotLQlleGl0IDAgOzsKLSsJZXhp dCA7OwotICAgICBwYXJpc2M2NDpMaW51eDoqOiogfCBocHBhNjQ6TGludXg6KjoqKQotIAllY2hv IGhwcGE2NC11bmtub3duLWxpbnV4LWdudQotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBz MzkwOkxpbnV4Oio6KiB8IHMzOTB4OkxpbnV4Oio6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9 LWlibS1saW51eAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBzaDY0KjpMaW51eDoqOiop Ci0gICAgIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLS0JZXhpdCAw IDs7Ci0rCWV4aXQgOzsKLSAgICAgc2gqOkxpbnV4Oio6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJ TkV9LXVua25vd24tbGludXgtZ251Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIHNwYXJj OkxpbnV4Oio6KiB8IHNwYXJjNjQ6TGludXg6KjoqKQotIAllY2hvICR7VU5BTUVfTUFDSElORX0t dW5rbm93bi1saW51eC1nbnUKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSsgICAgdmF4OkxpbnV4 Oio6KikKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1saW51eC1nbnUKLSsJZXhpdCA7Owot ICAgICB4ODZfNjQ6TGludXg6KjoqKQotIAllY2hvIHg4Nl82NC11bmtub3duLWxpbnV4LWdudQot LQlleGl0IDAgOzsKLSsJZXhpdCA7OwotKyAgICB4dGVuc2EqOkxpbnV4Oio6KikKLSsgICAgCWVj aG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwlleGl0IDs7Ci0gICAgIGkq ODY6TGludXg6KjoqKQotIAkjIFRoZSBCRkQgbGlua2VyIGtub3dzIHdoYXQgdGhlIGRlZmF1bHQg b2JqZWN0IGZpbGUgZm9ybWF0IGlzLCBzbwotIAkjIGZpcnN0IHNlZSBpZiBpdCB3aWxsIHRlbGwg dXMuIGNkIHRvIHRoZSByb290IGRpcmVjdG9yeSB0byBwcmV2ZW50Ci1AQCAtOTUxLDE1ICs5ODQs MTUgQEAgRU9GCi0gCQk7OwotIAkgIGEub3V0LWkzODYtbGludXgpCi0gCQllY2hvICIke1VOQU1F X01BQ0hJTkV9LXBjLWxpbnV4LWdudWFvdXQiCi0tCQlleGl0IDAgOzsKLSsJCWV4aXQgOzsKLSAJ ICBjb2ZmLWkzODYpCi0gCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LWdudWNvZmYi Ci0tCQlleGl0IDAgOzsKLSsJCWV4aXQgOzsKLSAJICAiIikKLSAJCSMgRWl0aGVyIGEgcHJlLUJG RCBhLm91dCBsaW5rZXIgKGxpbnV4LWdudW9sZGxkKSBvcgotIAkJIyBvbmUgdGhhdCBkb2VzIG5v dCBnaXZlIHVzIHVzZWZ1bCAtLWhlbHAuCi0gCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxp bnV4LWdudW9sZGxkIgotLQkJZXhpdCAwIDs7Ci0rCQlleGl0IDs7Ci0gCWVzYWMKLSAJIyBEZXRl cm1pbmUgd2hldGhlciB0aGUgZGVmYXVsdCBjb21waWxlciBpcyBhLm91dCBvciBlbGYKLSAJZXZh bCAkc2V0X2NjX2Zvcl9idWlsZAotQEAgLTk3Niw3ICsxMDA5LDcgQEAgRU9GCi0gCUxJQkM9Z251 bGliYzEKLSAJIyBlbmRpZgotIAkjZWxzZQotLQkjaWZkZWYgX19JTlRFTF9DT01QSUxFUgotKwkj aWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSB8fCBkZWZpbmVkKF9fUEdJKSB8fCBkZWZpbmVk KF9fU1VOUFJPX0MpIHx8IGRlZmluZWQoX19TVU5QUk9fQ0MpCi0gCUxJQkM9Z251Ci0gCSNlbHNl Ci0gCUxJQkM9Z251YW91dAotQEAgLTk4NiwxNiArMTAxOSwyMyBAQCBFT0YKLSAJTElCQz1kaWV0 bGliYwotIAkjZW5kaWYKLSBFT0YKLS0JZXZhbCBgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAy Pi9kZXYvbnVsbCB8IGdyZXAgXkxJQkM9YAotLQl0ZXN0IHgiJHtMSUJDfSIgIT0geCAmJiBlY2hv ICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LSR7TElCQ30iICYmIGV4aXQgMAotLQl0ZXN0IHgi JHtURU5UQVRJVkV9IiAhPSB4ICYmIGVjaG8gIiR7VEVOVEFUSVZFfSIgJiYgZXhpdCAwCi0rCWV2 YWwgImAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgc2VkIC1uICcKLSsJ ICAgIC9eTElCQy97Ci0rCQlzOiA6OmcKLSsJCXAKLSsJICAgIH0nYCIKLSsJdGVzdCB4IiR7TElC Q30iICE9IHggJiYgewotKwkJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC0ke0xJQkN9 IgotKwkJZXhpdAotKwl9Ci0rCXRlc3QgeCIke1RFTlRBVElWRX0iICE9IHggJiYgeyBlY2hvICIk e1RFTlRBVElWRX0iOyBleGl0OyB9Ci0gCTs7Ci0gICAgIGkqODY6RFlOSVgvcHR4OjQqOiopCi0g CSMgcHR4IDQuMCBkb2VzIHVuYW1lIC1zIGNvcnJlY3RseSwgd2l0aCBEWU5JWC9wdHggaW4gdGhl cmUuCi0gCSMgZWFybGllciB2ZXJzaW9ucyBhcmUgbWVzc2VkIHVwIGFuZCBwdXQgdGhlIG5vZGVu YW1lIGluIGJvdGgKLSAJIyBzeXNuYW1lIGFuZCBub2RlbmFtZS4KLSAJZWNobyBpMzg2LXNlcXVl bnQtc3lzdjQKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgaSo4NjpVTklYX1NWOjQuMk1Q OjIuKikKLSAgICAgICAgICMgVW5peHdhcmUgaXMgYW4gb2Zmc2hvb3Qgb2YgU1ZSNCwgYnV0IGl0 IGhhcyBpdHMgb3duIHZlcnNpb24KLSAgICAgICAgICMgbnVtYmVyIHNlcmllcyBzdGFydGluZyB3 aXRoIDIuLi4KLUBAIC0xMDAzLDI3ICsxMDQzLDI3IEBAIEVPRgotIAkjIEkganVzdCBoYXZlIHRv IGhvcGUuICAtLSBybXMuCi0gICAgICAgICAjIFVzZSBzeXN2NC4ydXcuLi4gc28gdGhhdCBzeXN2 NCogbWF0Y2hlcyBpdC4KLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3Y0LjJ1dyR7VU5B TUVfVkVSU0lPTn0KLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgaSo4NjpPUy8yOio6KikK LSAJIyBJZiB3ZSB3ZXJlIGFibGUgdG8gZmluZCBgdW5hbWUnLCB0aGVuIEVNWCBVbml4IGNvbXBh dGliaWxpdHkKLSAJIyBpcyBwcm9iYWJseSBpbnN0YWxsZWQuCi0gCWVjaG8gJHtVTkFNRV9NQUNI SU5FfS1wYy1vczItZW14Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIGkqODY6WFRTLTMw MDoqOlNUT1ApCi0gCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXN0b3AKLS0JZXhpdCAw IDs7Ci0rCWV4aXQgOzsKLSAgICAgaSo4NjphdGhlb3M6KjoqKQotIAllY2hvICR7VU5BTUVfTUFD SElORX0tdW5rbm93bi1hdGhlb3MKLS0JZXhpdCAwIDs7Ci0tCWkqODY6c3lsbGFibGU6KjoqKQot KwlleGl0IDs7Ci0rICAgIGkqODY6c3lsbGFibGU6KjoqKQotIAllY2hvICR7VU5BTUVfTUFDSElO RX0tcGMtc3lsbGFibGUKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgaSo4NjpMeW54T1M6 Mi4qOiogfCBpKjg2Okx5bnhPUzozLlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LjAqOiopCi0gCWVj aG8gaTM4Ni11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWV4 aXQgOzsKLSAgICAgaSo4NjoqRE9TOio6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1z ZG9zZGpncHAKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgaSo4NjoqOjQuKjoqIHwgaSo4 NjpTWVNURU1fVjo0Lio6KikKLSAJVU5BTUVfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBz ZWQgJ3MvXC9NUCQvLydgCi0gCWlmIGdyZXAgTm92ZWxsIC91c3IvaW5jbHVkZS9saW5rLmggPi9k ZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbgotQEAgLTEwMzEsMTUgKzEwNzEsMTYgQEAgRU9GCi0g CWVsc2UKLSAJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeXN2JHtVTkFNRV9SRUx9Ci0gCWZp Ci0tCWV4aXQgMCA7OwotLSAgICBpKjg2Oio6NTpbNzhdKikKLSsJZXhpdCA7OwotKyAgICBpKjg2 Oio6NTpbNjc4XSopCi0rICAgIAkjIFVuaXhXYXJlIDcueCwgT3BlblVOSVggYW5kIE9wZW5TZXJ2 ZXIgNi4KLSAJY2FzZSBgL2Jpbi91bmFtZSAtWCB8IGdyZXAgIl5NYWNoaW5lImAgaW4KLSAJICAg ICo0ODYqKQkgICAgIFVOQU1FX01BQ0hJTkU9aTQ4NiA7OwotIAkgICAgKlBlbnRpdW0pCSAgICAg VU5BTUVfTUFDSElORT1pNTg2IDs7Ci0gCSAgICAqUGVudCp8KkNlbGVyb24pIFVOQU1FX01BQ0hJ TkU9aTY4NiA7OwotIAllc2FjCi0gCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXN5c3Yk e1VOQU1FX1JFTEVBU0V9JHtVTkFNRV9TWVNURU19JHtVTkFNRV9WRVJTSU9OfQotLQlleGl0IDAg OzsKLSsJZXhpdCA7OwotICAgICBpKjg2Oio6My4yOiopCi0gCWlmIHRlc3QgLWYgL3Vzci9vcHRp b25zL2NiLm5hbWU7IHRoZW4KLSAJCVVOQU1FX1JFTD1gc2VkIC1uICdzLy4qVmVyc2lvbiAvL3An IDwvdXNyL29wdGlvbnMvY2IubmFtZWAKLUBAIC0xMDU3LDczICsxMDk4LDczIEBAIEVPRgotIAll bHNlCi0gCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdjMyCi0gCWZpCi0tCWV4aXQgMCA7 OwotKwlleGl0IDs7Ci0gICAgIHBjOio6KjoqKQotIAkjIExlZnQgaGVyZSBmb3IgY29tcGF0aWJp bGl0eToKLSAgICAgICAgICMgdW5hbWUgLW0gcHJpbnRzIGZvciBESkdQUCBhbHdheXMgJ3BjJywg YnV0IGl0IHByaW50cyBub3RoaW5nIGFib3V0Ci0gICAgICAgICAjIHRoZSBwcm9jZXNzb3IsIHNv IHdlIHBsYXkgc2FmZSBieSBhc3N1bWluZyBpMzg2LgotIAllY2hvIGkzODYtcGMtbXNkb3Nkamdw cAotLSAgICAgICAgZXhpdCAwIDs7Ci0rICAgICAgICBleGl0IDs7Ci0gICAgIEludGVsOk1hY2g6 Myo6KikKLSAJZWNobyBpMzg2LXBjLW1hY2gzCi0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAg IHBhcmFnb246KjoqOiopCi0gCWVjaG8gaTg2MC1pbnRlbC1vc2YxCi0tCWV4aXQgMCA7OwotKwll eGl0IDs7Ci0gICAgIGk4NjA6Kjo0Lio6KikgIyBpODYwLVNWUjQKLSAJaWYgZ3JlcCBTdGFyZGVu dCAvdXNyL2luY2x1ZGUvc3lzL3VhZG1pbi5oID4vZGV2L251bGwgMj4mMSA7IHRoZW4KLSAJICBl Y2hvIGk4NjAtc3RhcmRlbnQtc3lzdiR7VU5BTUVfUkVMRUFTRX0gIyBTdGFyZGVudCBWaXN0cmEg aTg2MC1TVlI0Ci0gCWVsc2UgIyBBZGQgb3RoZXIgaTg2MC1TVlI0IHZlbmRvcnMgYmVsb3cgYXMg dGhleSBhcmUgZGlzY292ZXJlZC4KLSAJICBlY2hvIGk4NjAtdW5rbm93bi1zeXN2JHtVTkFNRV9S RUxFQVNFfSAgIyBVbmtub3duIGk4NjAtU1ZSNAotIAlmaQotLQlleGl0IDAgOzsKLSsJZXhpdCA7 OwotICAgICBtaW5pKjpDVElYOlNZUyo1OiopCi0gCSMgIm1pbmlmcmFtZSIKLSAJZWNobyBtNjgw MTAtY29udmVyZ2VudC1zeXN2Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIG1jNjhrOlVO SVg6U1lTVEVNNTozLjUxbSkKLSAJZWNobyBtNjhrLWNvbnZlcmdlbnQtc3lzdgotLQlleGl0IDAg OzsKLSsJZXhpdCA7OwotICAgICBNNjgwPzA6RC1OSVg6NS4zOiopCi0gCWVjaG8gbTY4ay1kaWFi LWRuaXgKLS0JZXhpdCAwIDs7Ci0tICAgIE02OCo6KjpSM1ZbNTY3XSo6KikKLS0JdGVzdCAtciAv c3lzVjY4ICYmIGVjaG8gJ202OGstbW90b3JvbGEtc3lzdicgJiYgZXhpdCAwIDs7Ci0tICAgIDNb MzQ1XT8/Oio6NC4wOjMuMCB8IDNbMzRdPz9BOio6NC4wOjMuMCB8IDNbMzRdPz8sKjoqOjQuMDoz LjAgfCAzWzM0XT8/Lyo6Kjo0LjA6My4wIHwgNDQwMDoqOjQuMDozLjAgfCA0ODUwOio6NC4wOjMu MCB8IFNLQTQwOio6NC4wOjMuMCB8IFNEUzI6Kjo0LjA6My4wIHwgU0hHMjoqOjQuMDozLjApCi0r CWV4aXQgOzsKLSsgICAgTTY4KjoqOlIzVls1Njc4XSo6KikKLSsJdGVzdCAtciAvc3lzVjY4ICYm IHsgZWNobyAnbTY4ay1tb3Rvcm9sYS1zeXN2JzsgZXhpdDsgfSA7OwotKyAgICAzWzM0NV0/Pzoq OjQuMDozLjAgfCAzWzM0XT8/QToqOjQuMDozLjAgfCAzWzM0XT8/LCo6Kjo0LjA6My4wIHwgM1sz NF0/Py8qOio6NC4wOjMuMCB8IDQ0MDA6Kjo0LjA6My4wIHwgNDg1MDoqOjQuMDozLjAgfCBTS0E0 MDoqOjQuMDozLjAgfCBTRFMyOio6NC4wOjMuMCB8IFNIRzI6Kjo0LjA6My4wIHwgUzc1MDEqOio6 NC4wOjMuMCkKLSAJT1NfUkVMPScnCi0gCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXAotIAkmJiBPU19S RUw9LmBzZWQgLW4gJ3MvW14gXSogW14gXSogXChbMC05XVswLTldXCkuKi9cMS9wJyA8IC9ldGMv LnJlbGlkYAotIAkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxs IFwKLS0JICAmJiBlY2hvIGk0ODYtbmNyLXN5c3Y0LjMke09TX1JFTH0gJiYgZXhpdCAwCi0rCSAg JiYgeyBlY2hvIGk0ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0KLSAJL2Jpbi91bmFt ZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4vZ3JlcCBlbnRpdW0gPi9kZXYvbnVsbCBcCi0tCSAgJiYg ZWNobyBpNTg2LW5jci1zeXN2NC4zJHtPU19SRUx9ICYmIGV4aXQgMCA7OwotKwkgICYmIHsgZWNo byBpNTg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9IDs7Ci0gICAgIDNbMzRdPz86Kjo0 LjA6KiB8IDNbMzRdPz8sKjoqOjQuMDoqKQotICAgICAgICAgL2Jpbi91bmFtZSAtcCAyPi9kZXYv bnVsbCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCi0tICAgICAgICAgICYmIGVjaG8gaTQ4Ni1uY3It c3lzdjQgJiYgZXhpdCAwIDs7Ci0rICAgICAgICAgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2NDsg ZXhpdDsgfSA7OwotICAgICBtNjgqOkx5bnhPUzoyLio6KiB8IG02OCo6THlueE9TOjMuMCo6KikK LSAJZWNobyBtNjhrLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsK LSsJZXhpdCA7OwotICAgICBtYzY4MDMwOlVOSVhfU3lzdGVtX1Y6NC4qOiopCi0gCWVjaG8gbTY4 ay1hdGFyaS1zeXN2NAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBUU1VOQU1JOkx5bnhP UzoyLio6KikKLSAJZWNobyBzcGFyYy11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KLS0J ZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgcnM2MDAwOkx5bnhPUzoyLio6KikKLSAJZWNobyBy czYwMDAtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotKwlleGl0 IDs7Ci0gICAgIFBvd2VyUEM6THlueE9TOjIuKjoqIHwgUG93ZXJQQzpMeW54T1M6My5bMDFdKjoq IHwgUG93ZXJQQzpMeW54T1M6NC4wKjoqKQotIAllY2hvIHBvd2VycGMtdW5rbm93bi1seW54b3Mk e1VOQU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIFNNW0JFXVM6VU5J WF9TVjoqOiopCi0gCWVjaG8gbWlwcy1kZGUtc3lzdiR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAw IDs7Ci0rCWV4aXQgOzsKLSAgICAgUk0qOlJlbGlhbnRVTklYLSo6KjoqKQotIAllY2hvIG1pcHMt c25pLXN5c3Y0Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIFJNKjpTSU5JWC0qOio6KikK LSAJZWNobyBtaXBzLXNuaS1zeXN2NAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICAqOlNJ TklYLSo6KjoqKQotIAlpZiB1bmFtZSAtcCAyPi9kZXYvbnVsbCA+L2Rldi9udWxsIDsgdGhlbgot IAkJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKLUBAIC0xMTMxLDY4ICsx MTcyLDg0IEBAIEVPRgotIAllbHNlCi0gCQllY2hvIG5zMzJrLXNuaS1zeXN2Ci0gCWZpCi0tCWV4 aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIFBFTlRJVU06Kjo0LjAqOiopICMgVW5pc3lzIGBDbGVh clBhdGggSE1QIElYIDQwMDAnIFNWUjQvTVAgZWZmb3J0Ci0gICAgICAgICAgICAgICAgICAgICAg ICMgc2F5cyA8UmljaGFyZC5NLkJhcnRlbEBjY01haWwuQ2Vuc3VzLkdPVj4KLSAgICAgICAgIGVj aG8gaTU4Ni11bmlzeXMtc3lzdjQKLS0gICAgICAgIGV4aXQgMCA7OwotKyAgICAgICAgZXhpdCA7 OwotICAgICAqOlVOSVhfU3lzdGVtX1Y6NCo6RlRYKikKLSAJIyBGcm9tIEdlcmFsZCBIZXdlcyA8 aGV3ZXNAb3Blbm1hcmtldC5jb20+LgotIAkjIEhvdyBhYm91dCBkaWZmZXJlbnRpYXRpbmcgYmV0 d2VlbiBzdHJhdHVzIGFyY2hpdGVjdHVyZXM/IC1kam0KLSAJZWNobyBocHBhMS4xLXN0cmF0dXMt c3lzdjQKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgKjoqOio6RlRYKikKLSAJIyBGcm9t IHNlYW5mQHN3ZGMuc3RyYXR1cy5jb20uCi0gCWVjaG8gaTg2MC1zdHJhdHVzLXN5c3Y0Ci0tCWV4 aXQgMCA7OwotKwlleGl0IDs7Ci0rICAgIGkqODY6Vk9TOio6KikKLSsJIyBGcm9tIFBhdWwuR3Jl ZW5Ac3RyYXR1cy5jb20uCi0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1zdHJhdHVzLXZvcwotKwll eGl0IDs7Ci0gICAgICo6Vk9TOio6KikKLSAJIyBGcm9tIFBhdWwuR3JlZW5Ac3RyYXR1cy5jb20u Ci0gCWVjaG8gaHBwYTEuMS1zdHJhdHVzLXZvcwotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAg ICBtYzY4KjpBL1VYOio6KikKLSAJZWNobyBtNjhrLWFwcGxlLWF1eCR7VU5BTUVfUkVMRUFTRX0K LS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgbmV3cyo6TkVXUy1PUzo2KjoqKQotIAllY2hv IG1pcHMtc29ueS1uZXdzb3M2Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIFJbMzRdMDAw OipTeXN0ZW1fVio6KjoqIHwgUjQwMDA6VU5JWF9TWVNWOio6KiB8IFIqMDAwOlVOSVhfU1Y6Kjoq KQotIAlpZiBbIC1kIC91c3IvbmVjIF07IHRoZW4KLSAJICAgICAgICBlY2hvIG1pcHMtbmVjLXN5 c3Yke1VOQU1FX1JFTEVBU0V9Ci0gCWVsc2UKLSAJICAgICAgICBlY2hvIG1pcHMtdW5rbm93bi1z eXN2JHtVTkFNRV9SRUxFQVNFfQotIAlmaQotLSAgICAgICAgZXhpdCAwIDs7Ci0rICAgICAgICBl eGl0IDs7Ci0gICAgIEJlQm94OkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBoYXJkd2FyZSBt YWRlIGJ5IEJlLCBQUEMgb25seS4KLSAJZWNobyBwb3dlcnBjLWJlLWJlb3MKLS0JZXhpdCAwIDs7 Ci0rCWV4aXQgOzsKLSAgICAgQmVNYWM6QmVPUzoqOiopCSMgQmVPUyBydW5uaW5nIG9uIE1hYyBv ciBNYWMgY2xvbmUsIFBQQyBvbmx5LgotIAllY2hvIHBvd2VycGMtYXBwbGUtYmVvcwotLQlleGl0 IDAgOzsKLSsJZXhpdCA7OwotICAgICBCZVBDOkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBJ bnRlbCBQQyBjb21wYXRpYmxlLgotIAllY2hvIGk1ODYtcGMtYmVvcwotLQlleGl0IDAgOzsKLSsJ ZXhpdCA7OwotKyAgICBCZVBDOkhhaWt1Oio6KikJIyBIYWlrdSBydW5uaW5nIG9uIEludGVsIFBD IGNvbXBhdGlibGUuCi0rCWVjaG8gaTU4Ni1wYy1oYWlrdQotKwlleGl0IDs7Ci0gICAgIFNYLTQ6 U1VQRVItVVg6KjoqKQotIAllY2hvIHN4NC1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KLS0J ZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgU1gtNTpTVVBFUi1VWDoqOiopCi0gCWVjaG8gc3g1 LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAg ICBTWC02OlNVUEVSLVVYOio6KikKLSAJZWNobyBzeDYtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVB U0V9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0rICAgIFNYLTc6U1VQRVItVVg6KjoqKQotKwll Y2hvIHN4Ny1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KLSsJZXhpdCA7OwotKyAgICBTWC04 OlNVUEVSLVVYOio6KikKLSsJZWNobyBzeDgtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9Ci0r CWV4aXQgOzsKLSsgICAgU1gtOFI6U1VQRVItVVg6KjoqKQotKwllY2hvIHN4OHItbmVjLXN1cGVy dXgke1VOQU1FX1JFTEVBU0V9Ci0rCWV4aXQgOzsKLSAgICAgUG93ZXIqOlJoYXBzb2R5Oio6KikK LSAJZWNobyBwb3dlcnBjLWFwcGxlLXJoYXBzb2R5JHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAg OzsKLSsJZXhpdCA7OwotICAgICAqOlJoYXBzb2R5Oio6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJ TkV9LWFwcGxlLXJoYXBzb2R5JHtVTkFNRV9SRUxFQVNFfQotLQlleGl0IDAgOzsKLSsJZXhpdCA7 OwotICAgICAqOkRhcndpbjoqOiopCi0tCWNhc2UgYHVuYW1lIC1wYCBpbgotLQkgICAgKjg2KSBV TkFNRV9QUk9DRVNTT1I9aTY4NiA7OwotLQkgICAgcG93ZXJwYykgVU5BTUVfUFJPQ0VTU09SPXBv d2VycGMgOzsKLSsJVU5BTUVfUFJPQ0VTU09SPWB1bmFtZSAtcGAgfHwgVU5BTUVfUFJPQ0VTU09S PXVua25vd24KLSsJY2FzZSAkVU5BTUVfUFJPQ0VTU09SIGluCi0rCSAgICB1bmtub3duKSBVTkFN RV9QUk9DRVNTT1I9cG93ZXJwYyA7OwotIAllc2FjCi0gCWVjaG8gJHtVTkFNRV9QUk9DRVNTT1J9 LWFwcGxlLWRhcndpbiR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAg ICAgKjpwcm9jbnRvKjoqOiogfCAqOlFOWDpbMDEyMzQ1Njc4OV0qOiopCi0gCVVOQU1FX1BST0NF U1NPUj1gdW5hbWUgLXBgCi0gCWlmIHRlc3QgIiRVTkFNRV9QUk9DRVNTT1IiID0gIng4NiI7IHRo ZW4KLUBAIC0xMjAwLDIyICsxMjU3LDI1IEBAIEVPRgotIAkJVU5BTUVfTUFDSElORT1wYwotIAlm aQotIAllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS0ke1VOQU1FX01BQ0hJTkV9LW50by1xbngke1VO QU1FX1JFTEVBU0V9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgICo6UU5YOio6NCopCi0g CWVjaG8gaTM4Ni1wYy1xbngKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSsgICAgTlNFLT86Tk9O U1RPUF9LRVJORUw6KjoqKQotKwllY2hvIG5zZS10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQot KwlleGl0IDs7Ci0gICAgIE5TUi0/Ok5PTlNUT1BfS0VSTkVMOio6KikKLSAJZWNobyBuc3ItdGFu ZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgKjpO b25TdG9wLVVYOio6KikKLSAJZWNobyBtaXBzLWNvbXBhcS1ub25zdG9wdXgKLS0JZXhpdCAwIDs7 Ci0rCWV4aXQgOzsKLSAgICAgQlMyMDAwOlBPU0lYKjoqOiopCi0gCWVjaG8gYnMyMDAwLXNpZW1l bnMtc3lzdgotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBEUy8qOlVOSVhfU3lzdGVtX1Y6 KjoqKQotIAllY2hvICR7VU5BTUVfTUFDSElORX0tJHtVTkFNRV9TWVNURU19LSR7VU5BTUVfUkVM RUFTRX0KLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgKjpQbGFuOToqOiopCi0gCSMgInVu YW1lIC1tIiBpcyBub3QgY29uc2lzdGVudCwgc28gdXNlICRjcHV0eXBlIGluc3RlYWQuIDM4Ngot IAkjIGlzIGNvbnZlcnRlZCB0byBpMzg2IGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIHg4Ngot QEAgLTEyMjYsMzEgKzEyODYsNDcgQEAgRU9GCi0gCSAgICBVTkFNRV9NQUNISU5FPSIkY3B1dHlw ZSIKLSAJZmkKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tcGxhbjkKLS0JZXhpdCAw IDs7Ci0rCWV4aXQgOzsKLSAgICAgKjpUT1BTLTEwOio6KikKLSAJZWNobyBwZHAxMC11bmtub3du LXRvcHMxMAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICAqOlRFTkVYOio6KikKLSAJZWNo byBwZHAxMC11bmtub3duLXRlbmV4Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgIEtTMTA6 VE9QUy0yMDoqOiogfCBLTDEwOlRPUFMtMjA6KjoqIHwgVFlQRTQ6VE9QUy0yMDoqOiopCi0gCWVj aG8gcGRwMTAtZGVjLXRvcHMyMAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBYS0wtMTpU T1BTLTIwOio6KiB8IFRZUEU1OlRPUFMtMjA6KjoqKQotIAllY2hvIHBkcDEwLXhrbC10b3BzMjAK LS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgKjpUT1BTLTIwOio6KikKLSAJZWNobyBwZHAx MC11bmtub3duLXRvcHMyMAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICAqOklUUzoqOiop Ci0gCWVjaG8gcGRwMTAtdW5rbm93bi1pdHMKLS0JZXhpdCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAg U0VJOio6KjpTRUlVWCkKLSAgICAgICAgIGVjaG8gbWlwcy1zZWktc2VpdXgke1VOQU1FX1JFTEVB U0V9Ci0tCWV4aXQgMCA7OwotKwlleGl0IDs7Ci0gICAgICo6RHJhZ29uRmx5Oio6KikKLSAJZWNo byAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tZHJhZ29uZmx5YGVjaG8gJHtVTkFNRV9SRUxFQVNF fXxzZWQgLWUgJ3MvWy0oXS4qLy8nYAotLQlleGl0IDAgOzsKLSsJZXhpdCA7OwotKyAgICAqOipW TVM6KjoqKQotKyAgICAJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKLSsJ Y2FzZSAiJHtVTkFNRV9NQUNISU5FfSIgaW4KLSsJICAgIEEqKSBlY2hvIGFscGhhLWRlYy12bXMg OyBleGl0IDs7Ci0rCSAgICBJKikgZWNobyBpYTY0LWRlYy12bXMgOyBleGl0IDs7Ci0rCSAgICBW KikgZWNobyB2YXgtZGVjLXZtcyA7IGV4aXQgOzsKLSsJZXNhYyA7OwotKyAgICAqOlhFTklYOio6 U3lzVikKLSsJZWNobyBpMzg2LXBjLXhlbml4Ci0rCWV4aXQgOzsKLSsgICAgaSo4Njpza3lvczoq OiopCi0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1za3lvc2BlY2hvICR7VU5BTUVfUkVMRUFT RX1gIHwgc2VkIC1lICdzLyAuKiQvLycKLSsJZXhpdCA7OwotKyAgICBpKjg2OnJkb3M6KjoqKQot KwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtcmRvcwotKwlleGl0IDs7Ci0gZXNhYwotIAotICNl Y2hvICcoTm8gdW5hbWUgY29tbWFuZCBvciB1bmFtZSBvdXRwdXQgbm90IHJlY29nbml6ZWQuKScg MT4mMgotQEAgLTEyODIsNyArMTM1OCw3IEBAIG1haW4gKCkKLSAjZW5kaWYKLSAKLSAjaWYgZGVm aW5lZCAoX19hcm0pICYmIGRlZmluZWQgKF9fYWNvcm4pICYmIGRlZmluZWQgKF9fdW5peCkKLS0g IHByaW50ZiAoImFybS1hY29ybi1yaXNjaXgiKTsgZXhpdCAoMCk7Ci0rICBwcmludGYgKCJhcm0t YWNvcm4tcmlzY2l4XG4iKTsgZXhpdCAoMCk7Ci0gI2VuZGlmCi0gCi0gI2lmIGRlZmluZWQgKGhw MzAwKSAmJiAhZGVmaW5lZCAoaHB1eCkKLUBAIC0xMzcxLDExICsxNDQ3LDEyIEBAIG1haW4gKCkK LSB9Ci0gRU9GCi0gCi0tJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgMj4vZGV2L251 bGwgJiYgJGR1bW15ICYmIGV4aXQgMAotKyRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5j IDI+L2Rldi9udWxsICYmIFNZU1RFTV9OQU1FPWAkZHVtbXlgICYmCi0rCXsgZWNobyAiJFNZU1RF TV9OQU1FIjsgZXhpdDsgfQotIAotICMgQXBvbGxvcyBwdXQgdGhlIHN5c3RlbSB0eXBlIGluIHRo ZSBlbnZpcm9ubWVudC4KLSAKLS10ZXN0IC1kIC91c3IvYXBvbGxvICYmIHsgZWNobyAke0lTUH0t YXBvbGxvLSR7U1lTVFlQRX07IGV4aXQgMDsgfQotK3Rlc3QgLWQgL3Vzci9hcG9sbG8gJiYgeyBl Y2hvICR7SVNQfS1hcG9sbG8tJHtTWVNUWVBFfTsgZXhpdDsgfQotIAotICMgQ29udmV4IHZlcnNp b25zIHRoYXQgcHJlZGF0ZSB1bmFtZSBjYW4gdXNlIGdldHN5c2luZm8oMSkKLSAKLUBAIC0xMzg0 LDIyICsxNDYxLDIyIEBAIHRoZW4KLSAgICAgY2FzZSBgZ2V0c3lzaW5mbyAtZiBjcHVfdHlwZWAg aW4KLSAgICAgYzEqKQotIAllY2hvIGMxLWNvbnZleC1ic2QKLS0JZXhpdCAwIDs7Ci0rCWV4aXQg OzsKLSAgICAgYzIqKQotIAlpZiBnZXRzeXNpbmZvIC1mIHNjYWxhcl9hY2MKLSAJdGhlbiBlY2hv IGMzMi1jb252ZXgtYnNkCi0gCWVsc2UgZWNobyBjMi1jb252ZXgtYnNkCi0gCWZpCi0tCWV4aXQg MCA7OwotKwlleGl0IDs7Ci0gICAgIGMzNCopCi0gCWVjaG8gYzM0LWNvbnZleC1ic2QKLS0JZXhp dCAwIDs7Ci0rCWV4aXQgOzsKLSAgICAgYzM4KikKLSAJZWNobyBjMzgtY29udmV4LWJzZAotLQll eGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBjNCopCi0gCWVjaG8gYzQtY29udmV4LWJzZAotLQll eGl0IDAgOzsKLSsJZXhpdCA7OwotICAgICBlc2FjCi0gZmkKLSAKLUBAIC0xNDEwLDcgKzE0ODcs OSBAQCBUaGlzIHNjcmlwdCwgbGFzdCBtb2RpZmllZCAkdGltZXN0YW1wLCBoCi0gdGhlIG9wZXJh dGluZyBzeXN0ZW0geW91IGFyZSB1c2luZy4gSXQgaXMgYWR2aXNlZCB0aGF0IHlvdQotIGRvd25s b2FkIHRoZSBtb3N0IHVwIHRvIGRhdGUgdmVyc2lvbiBvZiB0aGUgY29uZmlnIHNjcmlwdHMgZnJv bQotIAotLSAgICBmdHA6Ly9mdHAuZ251Lm9yZy9wdWIvZ251L2NvbmZpZy8KLSsgIGh0dHA6Ly9n aXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1j b25maWcuZ3Vlc3M7aGI9SEVBRAotK2FuZAotKyAgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3Jn L2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5zdWI7aGI9SEVBRAot IAotIElmIHRoZSB2ZXJzaW9uIHlvdSBydW4gKCQwKSBpcyBhbHJlYWR5IHVwIHRvIGRhdGUsIHBs ZWFzZQotIHNlbmQgdGhlIGZvbGxvd2luZyBkYXRhIGFuZCBhbnkgaW5mb3JtYXRpb24geW91IHRo aW5rIG1pZ2h0IGJlCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9zdXBwb3J0 L2NvbmZpZy5ycGF0aAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9y ZWFkbGluZS9zdXBwb3J0L2NvbmZpZy5ycGF0aAkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvc3VwcG9ydC9jb25maWcu cnBhdGgJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC02LDE5ICs2LDE4 IEBACi0gIyAgIFRha2VuIGZyb20gR05VIGxpYnRvb2wsIDIwMDEKLSAjICAgT3JpZ2luYWxseSBi eSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKLSAjCi0tIyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gIyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yCi0rIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gIyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0gIwotLSMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0tIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLS0jICAg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsj ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotICMKLSAjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0jICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0jICAgRm91bmRhdGlv biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEz MDcsIFVTQS4KLSsjICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gIwotICMgICBBcyBhIHNwZWNpYWwgZXhjZXB0 aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91Ci0gIyAgIGRpc3Ry aWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQotSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvc3VwcG9ydC9jb25maWcuc3ViCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3N1cHBvcnQvY29u ZmlnLnN1YgkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIu OTAuMjAxMTA3MDMvcmVhZGxpbmUvc3VwcG9ydC9jb25maWcuc3ViCTIwMTEtMDctMDMgMTA6NDE6 MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSw5ICsxLDEwIEBACi0gIyEgL2Jpbi9zaAotICMgQ29u ZmlndXJhdGlvbiB2YWxpZGF0aW9uIHN1YnJvdXRpbmUgc2NyaXB0LgotICMgICBDb3B5cmlnaHQg KEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCi0tIyAg IDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r IyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs IDIwMDk4Ci0rIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLXRpbWVzdGFt cD0nMjAwNC0wMi0xNicKLSt0aW1lc3RhbXA9JzIwMDgtMDMtMjYnCi0gCi0gIyBUaGlzIGZpbGUg aXMgKGluIHByaW5jaXBsZSkgY29tbW9uIHRvIEFMTCBHTlUgc29mdHdhcmUuCi0gIyBUaGUgcHJl c2VuY2Ugb2YgYSBtYWNoaW5lIGluIHRoaXMgZmlsZSBzdWdnZXN0cyB0aGF0IFNPTUUgR05VIHNv ZnR3YXJlCi1AQCAtMjEsMTQgKzIyLDE1IEBAIHRpbWVzdGFtcD0nMjAwNC0wMi0xNicKLSAjCi0g IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotICMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKLS0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAt IFN1aXRlIDMzMCwKLS0jIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotLQotKyMgRm91bmRh dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEK LSsjIDAyMTEwLTEzMDEsIFVTQS4KLSsjCi0gIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91Ci0gIyBkaXN0cmlidXRlIHRoaXMg ZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKLSAjIGNvbmZpZ3VyYXRp b24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVy Ci0gIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVz dCBvZiB0aGF0IHByb2dyYW0uCi0gCi0rCi0gIyBQbGVhc2Ugc2VuZCBwYXRjaGVzIHRvIDxjb25m aWctcGF0Y2hlc0BnbnUub3JnPi4gIFN1Ym1pdCBhIGNvbnRleHQKLSAjIGRpZmYgYW5kIGEgcHJv cGVybHkgZm9ybWF0dGVkIENoYW5nZUxvZyBlbnRyeS4KLSAjCi1AQCAtNzAsOCArNzIsOCBAQCBS ZXBvcnQgYnVncyBhbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoCi0gdmVyc2lvbj0iXAotIEdO VSBjb25maWcuc3ViICgkdGltZXN0YW1wKQotIAotLUNvcHlyaWdodCAoQykgMTk5MiwgMTk5Mywg MTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMQotLUZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwg MTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKLSsyMDAyLCAyMDAzLCAy MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0gCi0gVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29w eWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KLSB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCi1AQCAt ODMsMTEgKzg1LDExIEBAIFRyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIK LSB3aGlsZSB0ZXN0ICQjIC1ndCAwIDsgZG8KLSAgIGNhc2UgJDEgaW4KLSAgICAgLS10aW1lLXN0 YW1wIHwgLS10aW1lKiB8IC10ICkKLS0gICAgICAgZWNobyAiJHRpbWVzdGFtcCIgOyBleGl0IDAg OzsKLSsgICAgICAgZWNobyAiJHRpbWVzdGFtcCIgOyBleGl0IDs7Ci0gICAgIC0tdmVyc2lvbiB8 IC12ICkKLS0gICAgICAgZWNobyAiJHZlcnNpb24iIDsgZXhpdCAwIDs7Ci0rICAgICAgIGVjaG8g IiR2ZXJzaW9uIiA7IGV4aXQgOzsKLSAgICAgLS1oZWxwIHwgLS1oKiB8IC1oICkKLS0gICAgICAg ZWNobyAiJHVzYWdlIjsgZXhpdCAwIDs7Ci0rICAgICAgIGVjaG8gIiR1c2FnZSI7IGV4aXQgOzsK LSAgICAgLS0gKSAgICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCi0gICAgICAgIHNoaWZ0OyBi cmVhayA7OwotICAgICAtICkJIyBVc2Ugc3RkaW4gYXMgaW5wdXQuCi1AQCAtOTksNyArMTAxLDcg QEAgd2hpbGUgdGVzdCAkIyAtZ3QgMCA7IGRvCi0gICAgICpsb2NhbCopCi0gICAgICAgICMgRmly c3QgcGFzcyB0aHJvdWdoIGFueSBsb2NhbCBtYWNoaW5lIHR5cGVzLgotICAgICAgICBlY2hvICQx Ci0tICAgICAgIGV4aXQgMDs7Ci0rICAgICAgIGV4aXQgOzsKLSAKLSAgICAgKiApCi0gICAgICAg IGJyZWFrIDs7Ci1AQCAtMTE4LDggKzEyMCw5IEBAIGVzYWMKLSAjIEhlcmUgd2UgbXVzdCByZWNv Z25pemUgYWxsIHRoZSB2YWxpZCBLRVJORUwtT1MgY29tYmluYXRpb25zLgotIG1heWJlX29zPWBl Y2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMi8nYAotIGNhc2UgJG1h eWJlX29zIGluCi0tICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51eC1kaWV0bGliYyB8IGxp bnV4LXVjbGliYyogfCB1Y2xpbnV4LXVjbGliYyogfCB1Y2xpbnV4LWdudSogfCBcCi0tICBrZnJl ZWJzZCotZ251KiB8IGtuZXRic2QqLWdudSogfCBuZXRic2QqLWdudSogfCBzdG9ybS1jaGFvcyog fCBvczItZW14KiB8IHJ0bWstbm92YSopCi0rICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51 eC1kaWV0bGliYyB8IGxpbnV4LW5ld2xpYiogfCBsaW51eC11Y2xpYmMqIHwgXAotKyAgdWNsaW51 eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBrbmV0YnNkKi1nbnUq IHwgbmV0YnNkKi1nbnUqIHwgXAotKyAgc3Rvcm0tY2hhb3MqIHwgb3MyLWVteCogfCBydG1rLW5v dmEqKQotICAgICBvcz0tJG1heWJlX29zCi0gICAgIGJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBz ZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0qXCkkL1wxLydgCi0gICAgIDs7Ci1AQCAtMTQ1LDcg KzE0OCw3IEBAIGNhc2UgJG9zIGluCi0gCS1jb252ZXJnZW50KiB8IC1uY3IqIHwgLW5ld3MgfCAt MzIqIHwgLTM2MDAqIHwgLTMxMDAqIHwgLWhpdGFjaGkqIHxcCi0gCS1jWzEyM10qIHwgLWNvbnZl eCogfCAtc3VuIHwgLWNyZHMgfCAtb21yb24qIHwgLWRnIHwgLXVsdHJhIHwgLXR0aSogfCBcCi0g CS1oYXJyaXMgfCAtZG9scGhpbiB8IC1oaWdobGV2ZWwgfCAtZ291bGQgfCAtY2JtIHwgLW5zIHwg LW1hc3Njb21wIHwgXAotLQktYXBwbGUgfCAtYXhpcykKLSsJLWFwcGxlIHwgLWF4aXMgfCAta251 dGggfCAtY3JheSkKLSAJCW9zPQotIAkJYmFzaWNfbWFjaGluZT0kMQotIAkJOzsKLUBAIC0xNzAs NiArMTczLDEwIEBAIGNhc2UgJG9zIGluCi0gCS1oaXV4KikKLSAJCW9zPS1oaXV4d2UyCi0gCQk7 OwotKwktc2NvNikKLSsJCW9zPS1zY281djYKLSsJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBz ZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKLSsJCTs7Ci0gCS1zY281KQotIAkJb3M9LXNjbzMuMnY1 Ci0gCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCi1A QCAtMTg2LDYgKzE5MywxMCBAQCBjYXNlICRvcyBpbgotIAkJIyBEb24ndCBmb3JnZXQgdmVyc2lv biBpZiBpdCBpcyAzLjJ2NCBvciBuZXdlci4KLSAJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBz ZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKLSAJCTs7Ci0rCS1zY281djYqKQotKwkJIyBEb24ndCBm b3JnZXQgdmVyc2lvbiBpZiBpdCBpcyAzLjJ2NCBvciBuZXdlci4KLSsJCWJhc2ljX21hY2hpbmU9 YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKLSsJCTs7Ci0gCS1zY28qKQotIAkJ b3M9LXNjbzMuMnYyCi0gCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4q Lzg2LXBjLydgCi1AQCAtMjMwLDIyICsyNDEsMjcgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgot IAl8IGFscGhhIHwgYWxwaGFldls0LThdIHwgYWxwaGFldjU2IHwgYWxwaGFldjZbNzhdIHwgYWxw aGFwY2E1WzY3XSBcCi0gCXwgYWxwaGE2NCB8IGFscGhhNjRldls0LThdIHwgYWxwaGE2NGV2NTYg fCBhbHBoYTY0ZXY2Wzc4XSB8IGFscGhhNjRwY2E1WzY3XSBcCi0gCXwgYW0zM18yLjAgXAotLQl8 IGFyYyB8IGFybSB8IGFybVtibF1lIHwgYXJtZVtsYl0gfCBhcm12WzIzNDVdIHwgYXJtdlszNDVd W2xiXSB8IGF2ciBcCi0rCXwgYXJjIHwgYXJtIHwgYXJtW2JsXWUgfCBhcm1lW2xiXSB8IGFybXZb MjM0NV0gfCBhcm12WzM0NV1bbGJdIHwgYXZyIHwgYXZyMzIgXAotKwl8IGJmaW4gXAotIAl8IGM0 eCB8IGNsaXBwZXIgXAotIAl8IGQxMHYgfCBkMzB2IHwgZGx4IHwgZHNwMTZ4eCBcCi0tCXwgZnIz MCB8IGZydiBcCi0rCXwgZmlkbyB8IGZyMzAgfCBmcnYgXAotIAl8IGg4MzAwIHwgaDg1MDAgfCBo cHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEyLjAgfCBocHBhMi4wW253XSB8IGhwcGE2NCBcCi0gCXwg aTM3MCB8IGk4NjAgfCBpOTYwIHwgaWE2NCBcCi0gCXwgaXAyayB8IGlxMjAwMCBcCi0tCXwgbTMy ciB8IG02ODAwMCB8IG02OGsgfCBtODhrIHwgbWNvcmUgXAotKwl8IG0zMmMgfCBtMzJyIHwgbTMy cmxlIHwgbTY4MDAwIHwgbTY4ayB8IG04OGsgXAotKwl8IG1heHEgfCBtYiB8IG1pY3JvYmxhemUg fCBtY29yZSB8IG1lcCB8IG1ldGFnIFwKLSAJfCBtaXBzIHwgbWlwc2JlIHwgbWlwc2ViIHwgbWlw c2VsIHwgbWlwc2xlIFwKLSAJfCBtaXBzMTYgXAotIAl8IG1pcHM2NCB8IG1pcHM2NGVsIFwKLS0J fCBtaXBzNjR2ciB8IG1pcHM2NHZyZWwgXAotKwl8IG1pcHM2NG9jdGVvbiB8IG1pcHM2NG9jdGVv bmVsIFwKLSAJfCBtaXBzNjRvcmlvbiB8IG1pcHM2NG9yaW9uZWwgXAotKwl8IG1pcHM2NHI1OTAw IHwgbWlwczY0cjU5MDBlbCBcCi0rCXwgbWlwczY0dnIgfCBtaXBzNjR2cmVsIFwKLSAJfCBtaXBz NjR2cjQxMDAgfCBtaXBzNjR2cjQxMDBlbCBcCi0gCXwgbWlwczY0dnI0MzAwIHwgbWlwczY0dnI0 MzAwZWwgXAotIAl8IG1pcHM2NHZyNTAwMCB8IG1pcHM2NHZyNTAwMGVsIFwKLSsJfCBtaXBzNjR2 cjU5MDAgfCBtaXBzNjR2cjU5MDBlbCBcCi0gCXwgbWlwc2lzYTMyIHwgbWlwc2lzYTMyZWwgXAot IAl8IG1pcHNpc2EzMnIyIHwgbWlwc2lzYTMycjJlbCBcCi0gCXwgbWlwc2lzYTY0IHwgbWlwc2lz YTY0ZWwgXAotQEAgLTI1NCwyMCArMjcwLDI0IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJ fCBtaXBzaXNhNjRzcjcxayB8IG1pcHNpc2E2NHNyNzFrZWwgXAotIAl8IG1pcHN0eDM5IHwgbWlw c3R4MzllbCBcCi0gCXwgbW4xMDIwMCB8IG1uMTAzMDAgXAotKwl8IG10IFwKLSAJfCBtc3A0MzAg XAotKwl8IG5pb3MgfCBuaW9zMiBcCi0gCXwgbnMxNmsgfCBuczMyayBcCi0tCXwgb3BlbnJpc2Mg fCBvcjMyIFwKLSsJfCBvcjMyIFwKLSAJfCBwZHAxMCB8IHBkcDExIHwgcGogfCBwamwgXAotIAl8 IHBvd2VycGMgfCBwb3dlcnBjNjQgfCBwb3dlcnBjNjRsZSB8IHBvd2VycGNsZSB8IHBwY2JlIFwK LSAJfCBweXJhbWlkIFwKLS0JfCBzaCB8IHNoWzEyMzRdIHwgc2hbMjNdZSB8IHNoWzM0XWViIHwg c2hiZSB8IHNobGUgfCBzaFsxMjM0XWxlIHwgc2gzZWxlIFwKLSsJfCBzY29yZSBcCi0rCXwgc2gg fCBzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyM11lIHwgc2hbMzRdZWIgfCBzaGViIHwgc2hiZSB8 IHNobGUgfCBzaFsxMjM0XWxlIHwgc2gzZWxlIFwKLSAJfCBzaDY0IHwgc2g2NGxlIFwKLS0JfCBz cGFyYyB8IHNwYXJjNjQgfCBzcGFyYzg2eCB8IHNwYXJjbGV0IHwgc3BhcmNsaXRlIHwgc3BhcmN2 OSB8IHNwYXJjdjliIFwKLS0JfCBzdHJvbmdhcm0gXAotKwl8IHNwYXJjIHwgc3BhcmM2NCB8IHNw YXJjNjRiIHwgc3BhcmM2NHYgfCBzcGFyYzg2eCB8IHNwYXJjbGV0IHwgc3BhcmNsaXRlIFwKLSsJ fCBzcGFyY3Y4IHwgc3BhcmN2OSB8IHNwYXJjdjliIHwgc3BhcmN2OXYgXAotKwl8IHNwdSB8IHN0 cm9uZ2FybSBcCi0gCXwgdGFob2UgfCB0aHVtYiB8IHRpYzR4IHwgdGljODAgfCB0cm9uIFwKLSAJ fCB2ODUwIHwgdjg1MGUgXAotIAl8IHdlMzJrIFwKLS0JfCB4ODYgfCB4c2NhbGUgfCB4c3Rvcm15 MTYgfCB4dGVuc2EgXAotKwl8IHg4NiB8IHhjMTZ4IHwgeHNjYWxlIHwgeHNjYWxlZVtibF0gfCB4 c3Rvcm15MTYgfCB4dGVuc2EgXAotIAl8IHo4aykKLSAJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21h Y2hpbmUtdW5rbm93bgotIAkJOzsKLUBAIC0yNzgsNiArMjk4LDkgQEAgY2FzZSAkYmFzaWNfbWFj aGluZSBpbgotIAkJOzsKLSAJbTg4MTEwIHwgbTY4MFsxMjM0Nl0wIHwgbTY4Mz8yIHwgbTY4MzYw IHwgbTUyMDAgfCB2NzAgfCB3NjUgfCB6OGspCi0gCQk7OwotKwltczEpCi0rCQliYXNpY19tYWNo aW5lPW10LXVua25vd24KLSsJCTs7Ci0gCi0gCSMgV2UgdXNlIGBwYycgcmF0aGVyIHRoYW4gYHVu a25vd24nCi0gCSMgYmVjYXVzZSAoMSkgdGhhdCdzIHdoYXQgdGhleSBub3JtYWxseSBhcmUsIGFu ZAotQEAgLTI5NywyOCArMzIwLDMxIEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJfCBhbHBo YTY0LSogfCBhbHBoYTY0ZXZbNC04XS0qIHwgYWxwaGE2NGV2NTYtKiB8IGFscGhhNjRldjZbNzhd LSogXAotIAl8IGFscGhhcGNhNVs2N10tKiB8IGFscGhhNjRwY2E1WzY3XS0qIHwgYXJjLSogXAot IAl8IGFybS0qICB8IGFybWJlLSogfCBhcm1sZS0qIHwgYXJtZWItKiB8IGFybXYqLSogXAotLQl8 IGF2ci0qIFwKLS0JfCBiczIwMDAtKiBcCi0rCXwgYXZyLSogfCBhdnIzMi0qIFwKLSsJfCBiZmlu LSogfCBiczIwMDAtKiBcCi0gCXwgY1sxMjNdKiB8IGMzMC0qIHwgW2NqdF05MC0qIHwgYzR4LSog fCBjNTR4LSogfCBjNTV4LSogfCBjNngtKiBcCi0tCXwgY2xpcHBlci0qIHwgY3lkcmEtKiBcCi0r CXwgY2xpcHBlci0qIHwgY3JheW52LSogfCBjeWRyYS0qIFwKLSAJfCBkMTB2LSogfCBkMzB2LSog fCBkbHgtKiBcCi0gCXwgZWx4c2ktKiBcCi0tCXwgZjMwWzAxXS0qIHwgZjcwMC0qIHwgZnIzMC0q IHwgZnJ2LSogfCBmeDgwLSogXAotKwl8IGYzMFswMV0tKiB8IGY3MDAtKiB8IGZpZG8tKiB8IGZy MzAtKiB8IGZydi0qIHwgZng4MC0qIFwKLSAJfCBoODMwMC0qIHwgaDg1MDAtKiBcCi0gCXwgaHBw YS0qIHwgaHBwYTEuWzAxXS0qIHwgaHBwYTIuMC0qIHwgaHBwYTIuMFtud10tKiB8IGhwcGE2NC0q IFwKLSAJfCBpKjg2LSogfCBpODYwLSogfCBpOTYwLSogfCBpYTY0LSogXAotIAl8IGlwMmstKiB8 IGlxMjAwMC0qIFwKLS0JfCBtMzJyLSogXAotKwl8IG0zMmMtKiB8IG0zMnItKiB8IG0zMnJsZS0q IFwKLSAJfCBtNjgwMDAtKiB8IG02ODBbMDEyMzQ2XTAtKiB8IG02ODM2MC0qIHwgbTY4Mz8yLSog fCBtNjhrLSogXAotLQl8IG04ODExMC0qIHwgbTg4ay0qIHwgbWNvcmUtKiBcCi0rCXwgbTg4MTEw LSogfCBtODhrLSogfCBtYXhxLSogfCBtY29yZS0qIHwgbWV0YWctKiBcCi0gCXwgbWlwcy0qIHwg bWlwc2JlLSogfCBtaXBzZWItKiB8IG1pcHNlbC0qIHwgbWlwc2xlLSogXAotIAl8IG1pcHMxNi0q IFwKLSAJfCBtaXBzNjQtKiB8IG1pcHM2NGVsLSogXAotLQl8IG1pcHM2NHZyLSogfCBtaXBzNjR2 cmVsLSogXAotKwl8IG1pcHM2NG9jdGVvbi0qIHwgbWlwczY0b2N0ZW9uZWwtKiBcCi0gCXwgbWlw czY0b3Jpb24tKiB8IG1pcHM2NG9yaW9uZWwtKiBcCi0rCXwgbWlwczY0cjU5MDAtKiB8IG1pcHM2 NHI1OTAwZWwtKiBcCi0rCXwgbWlwczY0dnItKiB8IG1pcHM2NHZyZWwtKiBcCi0gCXwgbWlwczY0 dnI0MTAwLSogfCBtaXBzNjR2cjQxMDBlbC0qIFwKLSAJfCBtaXBzNjR2cjQzMDAtKiB8IG1pcHM2 NHZyNDMwMGVsLSogXAotIAl8IG1pcHM2NHZyNTAwMC0qIHwgbWlwczY0dnI1MDAwZWwtKiBcCi0r CXwgbWlwczY0dnI1OTAwLSogfCBtaXBzNjR2cjU5MDBlbC0qIFwKLSAJfCBtaXBzaXNhMzItKiB8 IG1pcHNpc2EzMmVsLSogXAotIAl8IG1pcHNpc2EzMnIyLSogfCBtaXBzaXNhMzJyMmVsLSogXAot IAl8IG1pcHNpc2E2NC0qIHwgbWlwc2lzYTY0ZWwtKiBcCi1AQCAtMzI2LDI3ICszNTIsMzUgQEAg Y2FzZSAkYmFzaWNfbWFjaGluZSBpbgotIAl8IG1pcHNpc2E2NHNiMS0qIHwgbWlwc2lzYTY0c2Ix ZWwtKiBcCi0gCXwgbWlwc2lzYTY0c3I3MWstKiB8IG1pcHNpc2E2NHNyNzFrZWwtKiBcCi0gCXwg bWlwc3R4MzktKiB8IG1pcHN0eDM5ZWwtKiBcCi0rCXwgbW1peC0qIFwKLSsJfCBtdC0qIFwKLSAJ fCBtc3A0MzAtKiBcCi0tCXwgbm9uZS0qIHwgbnAxLSogfCBudjEtKiB8IG5zMTZrLSogfCBuczMy ay0qIFwKLSsJfCBuaW9zLSogfCBuaW9zMi0qIFwKLSsJfCBub25lLSogfCBucDEtKiB8IG5zMTZr LSogfCBuczMyay0qIFwKLSAJfCBvcmlvbi0qIFwKLSAJfCBwZHAxMC0qIHwgcGRwMTEtKiB8IHBq LSogfCBwamwtKiB8IHBuLSogfCBwb3dlci0qIFwKLSAJfCBwb3dlcnBjLSogfCBwb3dlcnBjNjQt KiB8IHBvd2VycGM2NGxlLSogfCBwb3dlcnBjbGUtKiB8IHBwY2JlLSogXAotIAl8IHB5cmFtaWQt KiBcCi0gCXwgcm9tcC0qIHwgcnM2MDAwLSogXAotLQl8IHNoLSogfCBzaFsxMjM0XS0qIHwgc2hb MjNdZS0qIHwgc2hbMzRdZWItKiB8IHNoYmUtKiBcCi0rCXwgc2gtKiB8IHNoWzEyMzRdLSogfCBz aFsyNF1hLSogfCBzaFsyM11lLSogfCBzaFszNF1lYi0qIHwgc2hlYi0qIHwgc2hiZS0qIFwKLSAJ fCBzaGxlLSogfCBzaFsxMjM0XWxlLSogfCBzaDNlbGUtKiB8IHNoNjQtKiB8IHNoNjRsZS0qIFwK LS0JfCBzcGFyYy0qIHwgc3BhcmM2NC0qIHwgc3BhcmM4NngtKiB8IHNwYXJjbGV0LSogfCBzcGFy Y2xpdGUtKiBcCi0tCXwgc3BhcmN2OS0qIHwgc3BhcmN2OWItKiB8IHN0cm9uZ2FybS0qIHwgc3Yx LSogfCBzeD8tKiBcCi0rCXwgc3BhcmMtKiB8IHNwYXJjNjQtKiB8IHNwYXJjNjRiLSogfCBzcGFy YzY0di0qIHwgc3BhcmM4NngtKiB8IHNwYXJjbGV0LSogXAotKwl8IHNwYXJjbGl0ZS0qIFwKLSsJ fCBzcGFyY3Y4LSogfCBzcGFyY3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN0cm9u Z2FybS0qIHwgc3YxLSogfCBzeD8tKiBcCi0gCXwgdGFob2UtKiB8IHRodW1iLSogXAotLQl8IHRp YzMwLSogfCB0aWM0eC0qIHwgdGljNTR4LSogfCB0aWM1NXgtKiB8IHRpYzZ4LSogfCB0aWM4MC0q IFwKLSsJfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0q IHwgdGljODAtKiB8IHRpbGUtKiBcCi0gCXwgdHJvbi0qIFwKLSAJfCB2ODUwLSogfCB2ODUwZS0q IHwgdmF4LSogXAotIAl8IHdlMzJrLSogXAotLQl8IHg4Ni0qIHwgeDg2XzY0LSogfCB4cHMxMDAt KiB8IHhzY2FsZS0qIHwgeHN0b3JteTE2LSogXAotLQl8IHh0ZW5zYS0qIFwKLSsJfCB4ODYtKiB8 IHg4Nl82NC0qIHwgeGMxNngtKiB8IHhwczEwMC0qIHwgeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0q IFwKLSsJfCB4c3Rvcm15MTYtKiB8IHh0ZW5zYSotKiBcCi0gCXwgeW1wLSogXAotIAl8IHo4ay0q KQotIAkJOzsKLSsJIyBSZWNvZ25pemUgdGhlIGJhc2ljIENQVSB0eXBlcyB3aXRob3V0IGNvbXBh bnkgbmFtZSwgd2l0aCBnbG9iIG1hdGNoLgotKwl4dGVuc2EqKQotKwkJYmFzaWNfbWFjaGluZT0k YmFzaWNfbWFjaGluZS11bmtub3duCi0rCQk7OwotIAkjIFJlY29nbml6ZSB0aGUgdmFyaW91cyBt YWNoaW5lIG5hbWVzIGFuZCBhbGlhc2VzIHdoaWNoIHN0YW5kCi0gCSMgZm9yIGEgQ1BVIHR5cGUg YW5kIGEgY29tcGFueSBhbmQgc29tZXRpbWVzIGV2ZW4gYW4gT1MuCi0gCTM4NmJzZCkKLUBAIC00 MTcsNiArNDUxLDE0IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJCWJhc2ljX21hY2hpbmU9 bnMzMmstc2VxdWVudAotIAkJb3M9LWR5bml4Ci0gCQk7OwotKwlibGFja2ZpbikKLSsJCWJhc2lj X21hY2hpbmU9YmZpbi11bmtub3duCi0rCQlvcz0tbGludXgKLSsJCTs7Ci0rCWJsYWNrZmluLSop Ci0rCQliYXNpY19tYWNoaW5lPWJmaW4tYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlte LV0qLS8vJ2AKLSsJCW9zPS1saW51eAotKwkJOzsKLSAJYzkwKQotIAkJYmFzaWNfbWFjaGluZT1j OTAtY3JheQotIAkJb3M9LXVuaWNvcwotQEAgLTQ0NSwxNiArNDg3LDI3IEBAIGNhc2UgJGJhc2lj X21hY2hpbmUgaW4KLSAJCWJhc2ljX21hY2hpbmU9ajkwLWNyYXkKLSAJCW9zPS11bmljb3MKLSAJ CTs7Ci0tCWNyMTZjKQotLQkJYmFzaWNfbWFjaGluZT1jcjE2Yy11bmtub3duCi0rCWNyYXludikK LSsJCWJhc2ljX21hY2hpbmU9Y3JheW52LWNyYXkKLSsJCW9zPS11bmljb3NtcAotKwkJOzsKLSsJ Y3IxNikKLSsJCWJhc2ljX21hY2hpbmU9Y3IxNi11bmtub3duCi0gCQlvcz0tZWxmCi0gCQk7Owot IAljcmRzIHwgdW5vcykKLSAJCWJhc2ljX21hY2hpbmU9bTY4ay1jcmRzCi0gCQk7OwotKwljcmlz djMyIHwgY3Jpc3YzMi0qIHwgZXRyYXhmcyopCi0rCQliYXNpY19tYWNoaW5lPWNyaXN2MzItYXhp cwotKwkJOzsKLSAJY3JpcyB8IGNyaXMtKiB8IGV0cmF4KikKLSAJCWJhc2ljX21hY2hpbmU9Y3Jp cy1heGlzCi0gCQk7OwotKwljcngpCi0rCQliYXNpY19tYWNoaW5lPWNyeC11bmtub3duCi0rCQlv cz0tZWxmCi0rCQk7OwotIAlkYTMwIHwgZGEzMC0qKQotIAkJYmFzaWNfbWFjaGluZT1tNjhrLWRh MzAKLSAJCTs7Ci1AQCAtNDc3LDYgKzUzMCwxMCBAQCBjYXNlICRiYXNpY19tYWNoaW5lIGluCi0g CQliYXNpY19tYWNoaW5lPW04OGstbW90b3JvbGEKLSAJCW9zPS1zeXN2MwotIAkJOzsKLSsJZGpn cHApCi0rCQliYXNpY19tYWNoaW5lPWk1ODYtcGMKLSsJCW9zPS1tc2Rvc2RqZ3BwCi0rCQk7Owot IAlkcHgyMCB8IGRweDIwLSopCi0gCQliYXNpY19tYWNoaW5lPXJzNjAwMC1idWxsCi0gCQlvcz0t Ym9zeAotQEAgLTYyNyw2ICs2ODQsMTQgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgotIAkJYmFz aWNfbWFjaGluZT1tNjhrLWlzaQotIAkJb3M9LXN5c3YKLSAJCTs7Ci0rCW02OGtub21tdSkKLSsJ CWJhc2ljX21hY2hpbmU9bTY4ay11bmtub3duCi0rCQlvcz0tbGludXgKLSsJCTs7Ci0rCW02OGtu b21tdS0qKQotKwkJYmFzaWNfbWFjaGluZT1tNjhrLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2Vk ICdzL15bXi1dKi0vLydgCi0rCQlvcz0tbGludXgKLSsJCTs7Ci0gCW04OGstb21yb24qKQotIAkJ YmFzaWNfbWFjaGluZT1tODhrLW9tcm9uCi0gCQk7OwotQEAgLTY0Miw2ICs3MDcsMTAgQEAgY2Fz ZSAkYmFzaWNfbWFjaGluZSBpbgotIAkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCi0gCQlvcz0tbWlu Z3czMgotIAkJOzsKLSsJbWluZ3czMmNlKQotKwkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgot KwkJb3M9LW1pbmd3MzJjZQotKwkJOzsKLSAJbWluaWZyYW1lKQotIAkJYmFzaWNfbWFjaGluZT1t NjgwMDAtY29udmVyZ2VudAotIAkJOzsKLUBAIC02NTUsMTAgKzcyNCw2IEBAIGNhc2UgJGJhc2lj X21hY2hpbmUgaW4KLSAJbWlwczMqKQotIAkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFj aGluZSB8IHNlZCAtZSAncy9taXBzMy9taXBzNjQvJ2AtdW5rbm93bgotIAkJOzsKLS0JbW1peCop Ci0tCQliYXNpY19tYWNoaW5lPW1taXgta251dGgKLS0JCW9zPS1tbWl4d2FyZQotLQkJOzsKLSAJ bW9uaXRvcikKLSAJCWJhc2ljX21hY2hpbmU9bTY4ay1yb202OGsKLSAJCW9zPS1jb2ZmCi1AQCAt NjcxLDYgKzczNiw5IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJCWJhc2ljX21hY2hpbmU9 aTM4Ni1wYwotIAkJb3M9LW1zZG9zCi0gCQk7OwotKwltczEtKikKLSsJCWJhc2ljX21hY2hpbmU9 YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgLWUgJ3MvbXMxLS9tdC0vJ2AKLSsJCTs7Ci0gCW12 cykKLSAJCWJhc2ljX21hY2hpbmU9aTM3MC1pYm0KLSAJCW9zPS1tdnMKLUBAIC03MzksOSArODA3 LDggQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgotIAlucDEpCi0gCQliYXNpY19tYWNoaW5lPW5w MS1nb3VsZAotIAkJOzsKLS0JbnYxKQotLQkJYmFzaWNfbWFjaGluZT1udjEtY3JheQotLQkJb3M9 LXVuaWNvc21wCi0rCW5zZS10YW5kZW0pCi0rCQliYXNpY19tYWNoaW5lPW5zZS10YW5kZW0KLSAJ CTs7Ci0gCW5zci10YW5kZW0pCi0gCQliYXNpY19tYWNoaW5lPW5zci10YW5kZW0KLUBAIC03NTAs OSArODE3LDggQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgotIAkJYmFzaWNfbWFjaGluZT1ocHBh MS4xLW9raQotIAkJb3M9LXByb2VsZgotIAkJOzsKLS0Jb3IzMiB8IG9yMzItKikKLSsJb3BlbnJp c2MgfCBvcGVucmlzYy0qKQotIAkJYmFzaWNfbWFjaGluZT1vcjMyLXVua25vd24KLS0JCW9zPS1j b2ZmCi0gCQk7OwotIAlvczQwMCkKLSAJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1pYm0KLUBAIC03 NzQsNiArODQwLDE0IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJCWJhc2ljX21hY2hpbmU9 aTg2MC1pbnRlbAotIAkJb3M9LW9zZgotIAkJOzsKLSsJcGFyaXNjKQotKwkJYmFzaWNfbWFjaGlu ZT1ocHBhLXVua25vd24KLSsJCW9zPS1saW51eAotKwkJOzsKLSsJcGFyaXNjLSopCi0rCQliYXNp Y19tYWNoaW5lPWhwcGEtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AK LSsJCW9zPS1saW51eAotKwkJOzsKLSAJcGJkKQotIAkJYmFzaWNfbWFjaGluZT1zcGFyYy10dGkK LSAJCTs7Ci1AQCAtNzgzLDYgKzg1NywxMiBAQCBjYXNlICRiYXNpY19tYWNoaW5lIGluCi0gCXBj NTMyIHwgcGM1MzItKikKLSAJCWJhc2ljX21hY2hpbmU9bnMzMmstcGM1MzIKLSAJCTs7Ci0rCXBj OTgpCi0rCQliYXNpY19tYWNoaW5lPWkzODYtcGMKLSsJCTs7Ci0rCXBjOTgtKikKLSsJCWJhc2lj X21hY2hpbmU9aTM4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAot KwkJOzsKLSAJcGVudGl1bSB8IHA1IHwgazUgfCBrNiB8IG5leGdlbiB8IHZpYWMzKQotIAkJYmFz aWNfbWFjaGluZT1pNTg2LXBjCi0gCQk7OwotQEAgLTgzOSw2ICs5MTksMTAgQEAgY2FzZSAkYmFz aWNfbWFjaGluZSBpbgotIAkJYmFzaWNfbWFjaGluZT1pNTg2LXVua25vd24KLSAJCW9zPS1wdzMy Ci0gCQk7OwotKwlyZG9zKQotKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCi0rCQlvcz0tcmRvcwot KwkJOzsKLSAJcm9tNjhrKQotIAkJYmFzaWNfbWFjaGluZT1tNjhrLXJvbTY4awotIAkJb3M9LWNv ZmYKLUBAIC04NjUsNiArOTQ5LDEwIEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJc2IxZWwp Ci0gCQliYXNpY19tYWNoaW5lPW1pcHNpc2E2NHNiMWVsLXVua25vd24KLSAJCTs7Ci0rCXNkZSkK LSsJCWJhc2ljX21hY2hpbmU9bWlwc2lzYTMyLXNkZQotKwkJb3M9LWVsZgotKwkJOzsKLSAJc2Vp KQotIAkJYmFzaWNfbWFjaGluZT1taXBzLXNlaQotIAkJb3M9LXNlaXV4Ci1AQCAtODc2LDYgKzk2 NCw5IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJCWJhc2ljX21hY2hpbmU9c2gtaGl0YWNo aQotIAkJb3M9LWhtcwotIAkJOzsKLSsJc2g1ZWwpCi0rCQliYXNpY19tYWNoaW5lPXNoNWxlLXVu a25vd24KLSsJCTs7Ci0gCXNoNjQpCi0gCQliYXNpY19tYWNoaW5lPXNoNjQtdW5rbm93bgotIAkJ OzsKLUBAIC05NjUsNiArMTA1NiwxMCBAQCBjYXNlICRiYXNpY19tYWNoaW5lIGluCi0gCQliYXNp Y19tYWNoaW5lPXRpYzZ4LXVua25vd24KLSAJCW9zPS1jb2ZmCi0gCQk7OwotKwl0aWxlKikKLSsJ CWJhc2ljX21hY2hpbmU9dGlsZS11bmtub3duCi0rCQlvcz0tbGludXgtZ251Ci0rCQk7OwotIAl0 eDM5KQotIAkJYmFzaWNfbWFjaGluZT1taXBzdHgzOS11bmtub3duCi0gCQk7OwotQEAgLTEwMjUs NiArMTEyMCwxMCBAQCBjYXNlICRiYXNpY19tYWNoaW5lIGluCi0gCQliYXNpY19tYWNoaW5lPWhw cGExLjEtd2luYm9uZAotIAkJb3M9LXByb2VsZgotIAkJOzsKLSsJeGJveCkKLSsJCWJhc2ljX21h Y2hpbmU9aTY4Ni1wYwotKwkJb3M9LW1pbmd3MzIKLSsJCTs7Ci0gCXhwcyB8IHhwczEwMCkKLSAJ CWJhc2ljX21hY2hpbmU9eHBzMTAwLWhvbmV5d2VsbAotIAkJOzsKLUBAIC0xMDU1LDYgKzExNTQs OSBAQCBjYXNlICRiYXNpY19tYWNoaW5lIGluCi0gCXJvbXApCi0gCQliYXNpY19tYWNoaW5lPXJv bXAtaWJtCi0gCQk7OwotKwltbWl4KQotKwkJYmFzaWNfbWFjaGluZT1tbWl4LWtudXRoCi0rCQk7 OwotIAlyczYwMDApCi0gCQliYXNpY19tYWNoaW5lPXJzNjAwMC1pYm0KLSAJCTs7Ci1AQCAtMTA3 MSwxMyArMTE3MywxMCBAQCBjYXNlICRiYXNpY19tYWNoaW5lIGluCi0gCXdlMzJrKQotIAkJYmFz aWNfbWFjaGluZT13ZTMyay1hdHQKLSAJCTs7Ci0tCXNoMyB8IHNoNCB8IHNoWzM0XWViIHwgc2hb MTIzNF1sZSB8IHNoWzIzXWVsZSkKLSsJc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMzRdZWIgfCBz aFsxMjM0XWxlIHwgc2hbMjNdZWxlKQotIAkJYmFzaWNfbWFjaGluZT1zaC11bmtub3duCi0gCQk7 OwotLQlzaDY0KQotLQkJYmFzaWNfbWFjaGluZT1zaDY0LXVua25vd24KLS0JCTs7Ci0tCXNwYXJj IHwgc3BhcmN2OSB8IHNwYXJjdjliKQotKwlzcGFyYyB8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3Bh cmN2OWIgfCBzcGFyY3Y5dikKLSAJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCi0gCQk7OwotIAlj eWRyYSkKLUBAIC0xMTUwLDIwICsxMjQ5LDIzIEBAIGNhc2UgJG9zIGluCi0gCSAgICAgIHwgLWFv cyogXAotIAkgICAgICB8IC1uaW5keSogfCAtdnhzaW0qIHwgLXZ4d29ya3MqIHwgLWVibW9uKiB8 IC1obXMqIHwgLW12cyogXAotIAkgICAgICB8IC1jbGl4KiB8IC1yaXNjb3MqIHwgLXVuaXBsdXMq IHwgLWlyaXMqIHwgLXJ0dSogfCAteGVuaXgqIFwKLS0JICAgICAgfCAtaGl1eCogfCAtMzg2YnNk KiB8IC1rbmV0YnNkKiB8IC1taXJic2QqIHwgLW5ldGJzZCogfCAtb3BlbmJzZCogXAotKwkgICAg ICB8IC1oaXV4KiB8IC0zODZic2QqIHwgLWtuZXRic2QqIHwgLW1pcmJzZCogfCAtbmV0YnNkKiBc Ci0rCSAgICAgIHwgLW9wZW5ic2QqIHwgLXNvbGlkYnNkKiBcCi0gCSAgICAgIHwgLWVra29ic2Qq IHwgLWtmcmVlYnNkKiB8IC1mcmVlYnNkKiB8IC1yaXNjaXgqIHwgLWx5bnhvcyogXAotIAkgICAg ICB8IC1ib3N4KiB8IC1uZXh0c3RlcCogfCAtY3h1eCogfCAtYW91dCogfCAtZWxmKiB8IC1vYWJp KiBcCi0gCSAgICAgIHwgLXB0eCogfCAtY29mZiogfCAtZWNvZmYqIHwgLXdpbm50KiB8IC1kb21h aW4qIHwgLXZzdGEqIFwKLSAJICAgICAgfCAtdWRpKiB8IC1lYWJpKiB8IC1saXRlcyogfCAtaWVl ZSogfCAtZ28zMiogfCAtYXV4KiBcCi0gCSAgICAgIHwgLWNob3J1c29zKiB8IC1jaG9ydXNyZGIq IFwKLSAJICAgICAgfCAtY3lnd2luKiB8IC1wZSogfCAtcHNvcyogfCAtbW9zcyogfCAtcHJvZWxm KiB8IC1ydGVtcyogXAotLQkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4 LXVjbGliYyogfCAtdXhwdiogfCAtYmVvcyogfCAtbXBlaXgqIHwgLXVkayogXAotKwkgICAgICB8 IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LW5ld2xpYiogfCAtbGludXgtdWNsaWJj KiBcCi0rCSAgICAgIHwgLXV4cHYqIHwgLWJlb3MqIHwgLW1wZWl4KiB8IC11ZGsqIFwKLSAJICAg ICAgfCAtaW50ZXJpeCogfCAtdXdpbiogfCAtbWtzKiB8IC1yaGFwc29keSogfCAtZGFyd2luKiB8 IC1vcGVuZWQqIFwKLSAJICAgICAgfCAtb3BlbnN0ZXAqIHwgLW9za2l0KiB8IC1jb25peCogfCAt cHczMiogfCAtbm9uc3RvcHV4KiBcCi0gCSAgICAgIHwgLXN0b3JtLWNoYW9zKiB8IC10b3BzMTAq IHwgLXRlbmV4KiB8IC10b3BzMjAqIHwgLWl0cyogXAotIAkgICAgICB8IC1vczIqIHwgLXZvcyog fCAtcGFsbW9zKiB8IC11Y2xpbnV4KiB8IC1udWNsZXVzKiBcCi0gCSAgICAgIHwgLW1vcnBob3Mq IHwgLXN1cGVydXgqIHwgLXJ0bWsqIHwgLXJ0bWstbm92YSogfCAtd2luZGlzcyogXAotLQkgICAg ICB8IC1wb3dlcm1heCogfCAtZG5peCogfCAtbng2IHwgLW54NyB8IC1zZWkqIHwgLWRyYWdvbmZs eSopCi0rCSAgICAgIHwgLXBvd2VybWF4KiB8IC1kbml4KiB8IC1ueDYgfCAtbng3IHwgLXNlaSog fCAtZHJhZ29uZmx5KiBcCi0rCSAgICAgIHwgLXNreW9zKiB8IC1oYWlrdSogfCAtcmRvcyogfCAt dG9wcGVycyogfCAtZHJvcHMqKQotIAkjIFJlbWVtYmVyLCBlYWNoIGFsdGVybmF0aXZlIE1VU1Qg RU5EIElOICosIHRvIG1hdGNoIGEgdmVyc2lvbiBudW1iZXIuCi0gCQk7OwotIAktcW54KikKLUBA IC0xMTgxLDcgKzEyODMsNyBAQCBjYXNlICRvcyBpbgotIAkJb3M9YGVjaG8gJG9zIHwgc2VkIC1l ICdzfG50b3xudG8tcW54fCdgCi0gCQk7OwotIAktc2ltIHwgLWVzMTgwMCogfCAtaG1zKiB8IC14 cmF5IHwgLW9zNjhrKiB8IC1ub25lKiB8IC12ODhyKiBcCi0tCSAgICAgIHwgLXdpbmRvd3MqIHwg LW9zeCB8IC1hYnVnIHwgLW5ldHdhcmUqIHwgLW9zOSogfCAtYmVvcyogXAotKwkgICAgICB8IC13 aW5kb3dzKiB8IC1vc3ggfCAtYWJ1ZyB8IC1uZXR3YXJlKiB8IC1vczkqIHwgLWJlb3MqIHwgLWhh aWt1KiBcCi0gCSAgICAgIHwgLW1hY29zKiB8IC1tcHcqIHwgLW1hZ2ljKiB8IC1tbWl4d2FyZSog fCAtbW9uOTYwKiB8IC1sbmV3cyopCi0gCQk7OwotIAktbWFjKikKLUBAIC0xMjkwLDYgKzEzOTIs OSBAQCBjYXNlICRvcyBpbgotIAkta2FvcyopCi0gCQlvcz0ta2FvcwotIAkJOzsKLSsJLXp2bW9l KQotKwkJb3M9LXp2bW9lCi0rCQk7OwotIAktbm9uZSkKLSAJCTs7Ci0gCSopCi1AQCAtMTMxMiw2 ICsxNDE3LDEyIEBAIGVsc2UKLSAjIHN5c3RlbSwgYW5kIHdlJ2xsIG5ldmVyIGdldCB0byB0aGlz IHBvaW50LgotIAotIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSsgICAgICAgIHNjb3JlLSopCi0r CQlvcz0tZWxmCi0rCQk7OwotKyAgICAgICAgc3B1LSopCi0rCQlvcz0tZWxmCi0rCQk7OwotIAkq LWFjb3JuKQotIAkJb3M9LXJpc2NpeDEuMgotIAkJOzsKLUBAIC0xMzIxLDkgKzE0MzIsOSBAQCBj YXNlICRiYXNpY19tYWNoaW5lIGluCi0gCWFybSotc2VtaSkKLSAJCW9zPS1hb3V0Ci0gCQk7Owot LSAgICBjNHgtKiB8IHRpYzR4LSopCi0tICAgICAgICBvcz0tY29mZgotLSAgICAgICAgOzsKLSsg ICAgICAgIGM0eC0qIHwgdGljNHgtKikKLSsgICAgICAgIAlvcz0tY29mZgotKwkJOzsKLSAJIyBU aGlzIG11c3QgY29tZSBiZWZvcmUgdGhlICotZGVjIGVudHJ5LgotIAlwZHAxMC0qKQotIAkJb3M9 LXRvcHMyMAotQEAgLTEzNDksNiArMTQ2MCw5IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJ bTY4Ki1jaXNjbykKLSAJCW9zPS1hb3V0Ci0gCQk7OwotKyAgICAgICAgbWVwLSopCi0rCQlvcz0t ZWxmCi0rCQk7OwotIAltaXBzKi1jaXNjbykKLSAJCW9zPS1lbGYKLSAJCTs7Ci1AQCAtMTM2Nyw5 ICsxNDgxLDE1IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAJKi1iZSkKLSAJCW9zPS1iZW9z Ci0gCQk7OwotKwkqLWhhaWt1KQotKwkJb3M9LWhhaWt1Ci0rCQk7OwotIAkqLWlibSkKLSAJCW9z PS1haXgKLSAJCTs7Ci0rICAgIAkqLWtudXRoKQotKwkJb3M9LW1taXh3YXJlCi0rCQk7OwotIAkq LXdlYykKLSAJCW9zPS1wcm9lbGYKLSAJCTs7Ci1AQCAtMTUzNSw3ICsxNjU1LDcgQEAgY2FzZSAk YmFzaWNfbWFjaGluZSBpbgotIGVzYWMKLSAKLSBlY2hvICRiYXNpY19tYWNoaW5lJG9zCi0tZXhp dCAwCi0rZXhpdAotIAotICMgTG9jYWwgdmFyaWFibGVzOgotICMgZXZhbDogKGFkZC1ob29rICd3 cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMv cmVhZGxpbmUvc3VwcG9ydC9ta2RpcnMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEw NzAzLm9yaWcvcmVhZGxpbmUvc3VwcG9ydC9ta2RpcnMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3N1cHBvcnQvbWtk aXJzCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtNywxOSArNywxOCBA QAotIAotICMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0gIwotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24p Ci0tIyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsjICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSAjCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjICAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsj ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyMgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotICMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl IFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLgotKyMgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KLSAKLSBmb3IgZGlyCi0gZG8KLUluZGV4OiBnZGItNy4yLjkwLjIw MTEwNzAzL3JlYWRsaW5lL3N1cHBvcnQvbWtkaXN0Ci09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45 MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3N1cHBvcnQvbWtkaXN0CTIwMTEtMDctMDMgMTA6NDA6 NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9zdXBw b3J0L21rZGlzdAkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEyLDE5 ICsxMiwxOSBAQAotIAotICMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0gIwotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91 ciBvcHRpb24pCi0tIyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKLSsjICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSAjCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgICBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSsjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyMgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKyMKLSsjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gIwotLSMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLS0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlCi0tIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuCi0gCi0gU1JDRElSPXNyYwotIFJPT1ROQU1F PWJhc2gKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3N1cHBvcnQvc2hsaWIt aW5zdGFsbAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGlu ZS9zdXBwb3J0L3NobGliLWluc3RhbGwJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3N1cHBvcnQvc2hsaWItaW5zdGFs bAkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTMsNyArMyw3IEBACi0g IyBzaGxpYi1pbnN0YWxsIC0gaW5zdGFsbCBhIHNoYXJlZCBsaWJyYXJ5IGFuZCBkbyBhbnkgbmVj ZXNzYXJ5IGhvc3Qtc3BlY2lmaWMKLSAjCQkgIHBvc3QtaW5zdGFsbGF0aW9uIGNvbmZpZ3VyYXRp b24gKGxpa2UgbGRjb25maWcpCi0gIwotLSMgdXNhZ2U6IHNobGliLWluc3RhbGwgWy1EXSAtTyBo b3N0X29zIC1kIGluc3RhbGxhdGlvbi1kaXIgWy1iIGJpbi1kaXJdIC1pIGluc3RhbGwtcHJvZyBb LVVdIGxpYnJhcnkKLSsjIHVzYWdlOiBzaGxpYi1pbnN0YWxsIFstRF0gLU8gaG9zdF9vcyBbLVYg aG9zdF92ZW5kb3JdIC1kIGluc3RhbGxhdGlvbi1kaXIgWy1iIGJpbi1kaXJdIC1pIGluc3RhbGwt cHJvZyBbLVVdIGxpYnJhcnkKLSAjCi0gIyBDaGV0IFJhbWV5Ci0gIyBjaGV0QHBvLmN3cnUuZWR1 Ci1AQCAtMTUsMTMgKzE1LDE0IEBAIElOU1RBTExESVI9L3Vzci9sb2NhbC9saWIKLSBMRENPTkZJ Rz1sZGNvbmZpZwotIAotIFBST0dOQU1FPWBiYXNlbmFtZSAkMGAKLS1VU0FHRT0iJFBST0dOQU1F IFstRF0gLU8gaG9zdF9vcyAtZCBpbnN0YWxsYXRpb24tZGlyIFstYiBiaW4tZGlyXSAtaSBpbnN0 YWxsLXByb2cgWy1VXSBsaWJyYXJ5IgotK1VTQUdFPSIkUFJPR05BTUUgWy1EXSAtTyBob3N0X29z IFstViBob3N0X3ZlbmRvcl0gLWQgaW5zdGFsbGF0aW9uLWRpciBbLWIgYmluLWRpcl0gLWkgaW5z dGFsbC1wcm9nIFstVV0gbGlicmFyeSIKLSAKLSAjIHByb2Nlc3Mgb3B0aW9ucwotIAotIHdoaWxl IFsgJCMgLWd0IDAgXTsgZG8KLSAJY2FzZSAiJDEiIGluCi0gCS1PKQlzaGlmdDsgaG9zdF9vcz0i JDEiOyBzaGlmdCA7OwotKwktVikJc2hpZnQ7IGhvc3RfdmVuZG9yPSIkMSI7IHNoaWZ0IDs7Ci0g CS1kKQlzaGlmdDsgSU5TVEFMTERJUj0iJDEiOyBzaGlmdCA7OwotIAktYikJc2hpZnQ7IEJJTkRJ Uj0iJDEiIDsgc2hpZnQgOzsKLSAJLWkpCXNoaWZ0OyBJTlNUQUxMUFJPRz0iJDEiIDsgc2hpZnQg OzsKLUBAIC02NSwxNCArNjYsMTUgQEAgZmkKLSAjIHBvc3QtaW5zdGFsbC91bmluc3RhbGwKLSAK LSAjIEhQLVVYIGFuZCBEYXJ3aW4vTWFjT1MgWCByZXF1aXJlIHRoYXQgYSBzaGFyZWQgbGlicmFy eSBoYXZlIGV4ZWN1dGUgcGVybWlzc2lvbgotKyMgTGludXggZG9lcywgdG9vLCBhbmQgbGRkIHdh cm5zIGFib3V0IGl0Ci0gIyBDeWd3aW4gaW5zdGFsbHMgYm90aCBhIGRsbCAod2hpY2ggbXVzdCBn byBpbiAkQklORElSKSBhbmQgYW4gaW1wbGljaXQKLSAjIGxpbmsgbGlicmFyeSAoaW4gJGxpYmRp cikKLSBjYXNlICIkaG9zdF9vcyIgaW4KLS1ocHV4KnxkYXJ3aW4qfG1hY29zeCopCi0raHB1eCp8 ZGFyd2luKnxtYWNvc3gqfGxpbnV4KikKLSAJaWYgWyAteiAiJHVuaW5zdGFsbCIgXTsgdGhlbgot IAkJY2htb2QgNTU1ICR7SU5TVEFMTERJUn0vJHtMSUJOQU1FfQotIAlmaSA7OwotLWN5Z3dpbiop Ci0rY3lnd2luKnxtaW5ndyopCi0gCUlNUExJQk5BTUU9YGVjaG8gJHtMSUJOQU1FfSBcCi0gCQl8 IHNlZCAtZSAncyxeY3lnLGxpYiwnIC1lICdzLFswLTldKi5kbGwkLC5kbGwuYSwnYAotIAlpZiBb IC16ICIkdW5pbnN0YWxsIiBdOyB0aGVuCi1AQCAtMTE0LDggKzExNiw4IEBAIElOU1RBTExfTElO SzI9JyR7ZWNob30gY2QgJElOU1RBTExESVIgJiYKLSAjCi0gIyBDcmVhdGUgc3ltbGlua3MgdG8g dGhlIGluc3RhbGxlZCBsaWJyYXJ5LiAgVGhpcyBzZWN0aW9uIGlzIGluY29tcGxldGUuCi0gIwot LWNhc2UgIiRob3N0X29zIiBpbgotLSpsaW51eCopCi0rY2FzZSAiJGhvc3Rfb3MtJGhvc3RfdmVu ZG9yIiBpbgotKypsaW51eCp8ZnJlZWJzZCotZ2VudG9vKQotIAkjIGxpYm5hbWUuc28uTSAtPiBs aWJuYW1lLnNvLk0uTgotIAkke2VjaG99ICR7Uk19ICR7SU5TVEFMTERJUn0vJExJTksyCi0gCWlm IFsgLXogIiR1bmluc3RhbGwiIF07IHRoZW4KLUBAIC0xMjksNyArMTMxLDcgQEAgY2FzZSAiJGhv c3Rfb3MiIGluCi0gCWZpCi0gCTs7Ci0gCi0tYnNkaTQqfCpnbnUqfGRhcndpbip8bWFjb3N4Knxr KmJzZCotZ251KQotK2JzZGk0KnwqZ251KnxkYXJ3aW4qfG1hY29zeCp8bmV0YnNkKikKLSAJIyBs aWJuYW1lLnNvLk0gLT4gbGlibmFtZS5zby5NLk4KLSAJJHtlY2hvfSAke1JNfSAke0lOU1RBTExE SVJ9LyRMSU5LMgotIAlpZiBbIC16ICIkdW5pbnN0YWxsIiBdOyB0aGVuCi1AQCAtMTQzLDcgKzE0 NSw3IEBAIGJzZGk0KnwqZ251KnxkYXJ3aW4qfG1hY29zeCp8aypic2QqLWdudSkKLSAJZmkKLSAJ OzsKLSAKLS1zb2xhcmlzMip8YWl4NC5bMi05XSp8b3NmKnxpcml4WzU2XSp8c3lzdls0NV0qfGRn dXgqKQotK3NvbGFyaXMyKnxhaXg0LlsyLTldKnxhaXhbNS05XSp8b3NmKnxpcml4WzU2XSp8c3lz dls0NV0qfGRndXgqfGludGVyaXgqKQotIAkjIGxpYm5hbWUuc28gLT4gbGlibmFtZS5zby5NCi0g CSR7ZWNob30gJHtSTX0gJHtJTlNUQUxMRElSfS8kTElOSzEKLSAJaWYgWyAteiAiJHVuaW5zdGFs bCIgXTsgdGhlbgotQEAgLTE1Myw3ICsxNTUsNyBAQCBzb2xhcmlzMip8YWl4NC5bMi05XSp8b3Nm Knxpcml4WzU2XSp8c3lzCi0gCi0gCi0gIyBGcmVlQlNEIDMueCBhbmQgYWJvdmUgY2FuIGhhdmUg ZWl0aGVyIGEub3V0IG9yIEVMRiBzaGFyZWQgbGlicmFyaWVzCi0tZnJlZWJzZFszLTldKnxmcmVl YnNkZWxmWzMtOV0qfGZyZWVic2Rhb3V0WzMtOV0qKQotK2ZyZWVic2QzKnxmcmVlYnNkYW91dCop Ci0gCWlmIFsgLXggL3Vzci9iaW4vb2JqZm9ybWF0IF0gJiYgWyAiYC91c3IvYmluL29iamZvcm1h dGAiID0gImVsZiIgXTsgdGhlbgotIAkJIyBsaWJuYW1lLnNvIC0+IGxpYm5hbWUuc28uTQotIAkJ JHtlY2hvfSAke1JNfSAke0lOU1RBTExESVJ9LyRMSU5LMQotQEAgLTE3NSw2ICsxNzcsMTQgQEAg ZnJlZWJzZFszLTldKnxmcmVlYnNkZWxmWzMtOV0qfGZyZWVic2RhbwotIAlmaQotIAk7OwotIAot K2ZyZWVic2RbNC05XSp8ZnJlZWJzZGVsZip8ZHJhZ29uZmx5KikKLSsJIyBsaWJuYW1lLnNvIC0+ IGxpYm5hbWUuc28uTQotKwkke2VjaG99ICR7Uk19ICR7SU5TVEFMTERJUn0vJExJTksxCi0rCWlm IFsgLXogIiR1bmluc3RhbGwiIF07IHRoZW4KLSsJCWV2YWwgJElOU1RBTExfTElOSzEKLSsJZmkK LSsJOzsKLSsJCi0gaHB1eDEqKQotIAkjIGxpYm5hbWUuc2wgLT4gbGlibmFtZS5NCi0gCSR7ZWNo b30gJHtSTX0gJHtJTlNUQUxMRElSfS8kTElOSzEuc2wKLUBAIC0xODMsNyArMTkzLDcgQEAgaHB1 eDEqKQotIAlmaQotIAk7OwotIAotLWN5Z3dpbiopCi0rY3lnd2luKnxtaW5ndyopCi0gCSMgTGlu a3MgdG8gLmRsbHMgZG9uJ3Qgd29yay4gIEhlbmNlIHNob2JqLWNvbmYgdXNlZCBETExWRVJTSU9O LmRsbAotIAkjIGluc3RlYWQgb2Ygc28uU0hMSUJfTUFKT1IuU0hMSUJfTUlOT1IuICBUaGUgcG9z dGluc3RhbGwgYWJvdmUKLSAJIyB0b29rIGNhcmUgb2YgZXZlcnl0aGluZyBlbHNlLgotSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvc3VwcG9ydC9zaG9iai1jb25mCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3N1cHBvcnQvc2hvYmot Y29uZgkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAu MjAxMTA3MDMvcmVhZGxpbmUvc3VwcG9ydC9zaG9iai1jb25mCTIwMTEtMDctMDMgMTA6NDE6MjEu MDAwMDAwMDAwICswMjAwCi1AQCAtMTAsMjEgKzEwLDIzIEBACi0gIyBDaGV0IFJhbWV5Ci0gIyBj aGV0QHBvLmN3cnUuZWR1Ci0gCi0tIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMiBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwotKyMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBH TlUgQmFzaCwgdGhlIEJvdXJuZSBBZ2FpbiBTSGVsbC4KLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r IyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Ci0rIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyMgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsj ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSsjICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gIwotLSMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tIyBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0jCi0tIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotLSMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotLSMgRm91bmRhdGlvbiwg SW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLgot IAotICMKLSAjIGRlZmF1bHRzCi1AQCAtNjIsNyArNjQsNyBAQCB3aGlsZSBbICQjIC1ndCAwIF07 IGRvCi0gCWVzYWMKLSBkb25lCi0gCi0tY2FzZSAiJHtob3N0X29zfS0ke1NIT0JKX0NDfSIgaW4K LStjYXNlICIke2hvc3Rfb3N9LSR7U0hPQkpfQ0N9LSR7aG9zdF92ZW5kb3J9IiBpbgotIHN1bm9z NCotKmdjYyopCi0gCVNIT0JKX0NGTEFHUz0tZnBpYwotIAlTSE9CSl9MRD0vdXNyL2Jpbi9sZAot QEAgLTgwLDE1ICs4MiwxNyBAQCBzdW5vczQqKQotIAk7OwotIAotIHN1bm9zNSotKmdjYyp8c29s YXJpczIqLSpnY2MqKQotLQlTSE9CSl9DRkxBR1M9LWZwaWMKLSAJU0hPQkpfTEQ9JyR7Q0N9Jwot IAlsZF91c2VkPWBnY2MgLXByaW50LXByb2ctbmFtZT1sZGAKLSAJaWYgJHtsZF91c2VkfSAtViAy PiYxIHwgZ3JlcCBHTlUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gCQkjIFRoaXMgbGluZSB3b3Jr cyBmb3IgdGhlIEdOVSBsZAotIAkJU0hPQkpfTERGTEFHUz0nLXNoYXJlZCAtV2wsLWgsJEAnCi0r CQkjIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9iaW51dGlscy8yMDAxLTA4L21zZzAwMzYxLmh0 bWwKLSsJCVNIT0JKX0NGTEFHUz0tZlBJQwotIAllbHNlCi0gCQkjIFRoaXMgbGluZSB3b3JrcyBm b3IgdGhlIFNvbGFyaXMgbGlua2VyIGluIC91c3IvY2NzL2Jpbi9sZAotIAkJU0hPQkpfTERGTEFH Uz0nLXNoYXJlZCAtV2wsLWkgLVdsLC1oLCRAJwotKwkJU0hPQkpfQ0ZMQUdTPS1mcGljCi0gCWZp Ci0gCi0gIwlTSExJQl9YTERGTEFHUz0nLVIgJChsaWJkaXIpJwotQEAgLTEwNCw4ICsxMDgsOCBA QCBzdW5vczUqfHNvbGFyaXMyKikKLSAJU0hMSUJfTElCVkVSU0lPTj0nJChTSExJQl9MSUJTVUZG KS4kKFNITElCX01BSk9SKScKLSAJOzsKLSAKLS0jIEFsbCB2ZXJzaW9ucyBvZiBMaW51eCBvciB0 aGUgc2VtaS1teXRoaWNhbCBHTlUgSHVyZC4KLS1saW51eCotKnxnbnUqLSp8aypic2QqLWdudS0q KQotKyMgQWxsIHZlcnNpb25zIG9mIExpbnV4IChpbmNsdWRpbmcgR2VudG9vL0ZyZWVCU0QpIG9y IHRoZSBzZW1pLW15dGhpY2FsIEdOVSBIdXJkLgotK2xpbnV4Ki0qfGdudSotKnxrKmJzZCotZ251 LSp8ZnJlZWJzZCotZ2VudG9vKQotIAlTSE9CSl9DRkxBR1M9LWZQSUMKLSAJU0hPQkpfTEQ9JyR7 Q0N9JwotIAlTSE9CSl9MREZMQUdTPSctc2hhcmVkIC1XbCwtc29uYW1lLCRAJwotQEAgLTExNCw3 ICsxMTgsNyBAQCBsaW51eCotKnxnbnUqLSp8aypic2QqLWdudS0qKQotIAlTSExJQl9MSUJWRVJT SU9OPSckKFNITElCX0xJQlNVRkYpLiQoU0hMSUJfTUFKT1IpJChTSExJQl9NSU5PUiknCi0gCTs7 Ci0gCi0tZnJlZWJzZDIqIHwgbmV0YnNkKikKLStmcmVlYnNkMiopCi0gCVNIT0JKX0NGTEFHUz0t ZnBpYwotIAlTSE9CSl9MRD1sZAotIAlTSE9CSl9MREZMQUdTPScteCAtQnNoYXJlYWJsZScKLUBA IC0xMjQsOCArMTI4LDggQEAgZnJlZWJzZDIqIHwgbmV0YnNkKikKLSAJOzsKLSAKLSAjIEZyZWVC U0QtMy54IEVMRgotLWZyZWVic2RbMy05XSp8ZnJlZWJzZGVsZlszLTldKnxmcmVlYnNkYW91dFsz LTldKnxkcmFnb25mbHkqKQotLQlTSE9CSl9DRkxBR1M9LWZwaWMKLStmcmVlYnNkMyp8ZnJlZWJz ZGFvdXQqKQotKwlTSE9CSl9DRkxBR1M9LWZQSUMKLSAJU0hPQkpfTEQ9JyR7Q0N9JwotIAotIAlp ZiBbIC14IC91c3IvYmluL29iamZvcm1hdCBdICYmIFsgImAvdXNyL2Jpbi9vYmpmb3JtYXRgIiA9 ICJlbGYiIF07IHRoZW4KLUBAIC0xNDEsNyArMTQ1LDM1IEBAIGZyZWVic2RbMy05XSp8ZnJlZWJz ZGVsZlszLTldKnxmcmVlYnNkYW8KLSAJZmkKLSAJOzsKLSAKLSsjIEZyZWVCU0QtNC54IGFuZCBs YXRlciBoYXZlIG9ubHkgRUxGCi0rZnJlZWJzZFs0LTldKnxmcmVlYnNkZWxmKnxkcmFnb25mbHkq KQotKwlTSE9CSl9DRkxBR1M9LWZQSUMKLSsJU0hPQkpfTEQ9JyR7Q0N9JwotKwotKwlTSE9CSl9M REZMQUdTPSctc2hhcmVkIC1XbCwtc29uYW1lLCRAJwotKwlTSExJQl9YTERGTEFHUz0nLVdsLC1y cGF0aCwkKGxpYmRpciknCi0rCi0rCVNITElCX0xJQlZFUlNJT049JyQoU0hMSUJfTElCU1VGRiku JChTSExJQl9NQUpPUiknCi0rCTs7Ci0rCi0gIyBEYXJ3aW4vTWFjT1MgWAotK2Rhcndpbls4OV0q fGRhcndpbjEwKikKLSsJU0hPQkpfU1RBVFVTPXN1cHBvcnRlZAotKwlTSExJQl9TVEFUVVM9c3Vw cG9ydGVkCi0rCQotKwlTSE9CSl9DRkxBR1M9Jy1mbm8tY29tbW9uJwotKwotKwlTSE9CSl9MRD0n TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPTEwLjMgJHtDQ30nCi0rCi0rCVNITElCX0xJQlZFUlNJ T049JyQoU0hMSUJfTUFKT1IpJChTSExJQl9NSU5PUikuJChTSExJQl9MSUJTVUZGKScKLSsJU0hM SUJfTElCU1VGRj0nZHlsaWInCi0rCi0rCVNIT0JKX0xERkxBR1M9Jy1keW5hbWljbGliIC1keW5h bWljIC11bmRlZmluZWQgZHluYW1pY19sb29rdXAgLWFyY2hfb25seSBgL3Vzci9iaW4vYXJjaGAn Ci0rCVNITElCX1hMREZMQUdTPSctZHluYW1pY2xpYiAtYXJjaF9vbmx5IGAvdXNyL2Jpbi9hcmNo YCAtaW5zdGFsbF9uYW1lICQobGliZGlyKS8kQCAtY3VycmVudF92ZXJzaW9uICQoU0hMSUJfTUFK T1IpJChTSExJQl9NSU5PUikgLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAkKFNITElCX01BSk9SKSAt dicKLSsKLSsJU0hMSUJfTElCUz0nLWxuY3Vyc2VzJwkjIHNlZSBpZiAtbGN1cnNlcyB3b3JrcyBv biBNYWNPUyBYIDEwLjEgCi0rCTs7Ci0rCi0gZGFyd2luKnxtYWNvc3gqKQotIAlTSE9CSl9TVEFU VVM9dW5zdXBwb3J0ZWQKLSAJU0hMSUJfU1RBVFVTPXN1cHBvcnRlZAotQEAgLTE1NCw3ICsxODYs NyBAQCBkYXJ3aW4qfG1hY29zeCopCi0gCVNITElCX0xJQlNVRkY9J2R5bGliJwotIAotIAljYXNl ICIke2hvc3Rfb3N9IiBpbgotLQlkYXJ3aW5bNzhdKikJU0hPQkpfTERGTEFHUz0nJwotKwlkYXJ3 aW5bNzg5XSp8ZGFyd2luMTAqKQlTSE9CSl9MREZMQUdTPScnCi0gCQkJU0hMSUJfWExERkxBR1M9 Jy1keW5hbWljbGliIC1hcmNoX29ubHkgYC91c3IvYmluL2FyY2hgIC1pbnN0YWxsX25hbWUgJChs aWJkaXIpLyRAIC1jdXJyZW50X3ZlcnNpb24gJChTSExJQl9NQUpPUikkKFNITElCX01JTk9SKSAt Y29tcGF0aWJpbGl0eV92ZXJzaW9uICQoU0hMSUJfTUFKT1IpIC12JwotIAkJCTs7Ci0gCSopCQlT SE9CSl9MREZMQUdTPSctZHluYW1pYycKLUBAIC0xNjUsNyArMTk3LDcgQEAgZGFyd2luKnxtYWNv c3gqKQotIAlTSExJQl9MSUJTPSctbG5jdXJzZXMnCSMgc2VlIGlmIC1sY3Vyc2VzIHdvcmtzIG9u IE1hY09TIFggMTAuMSAKLSAJOzsKLSAKLS1vcGVuYnNkKikKLStvcGVuYnNkKnxuZXRic2QqKQot IAlTSE9CSl9DRkxBR1M9LWZQSUMKLSAJU0hPQkpfTEQ9JyR7Q0N9JwotIAlTSE9CSl9MREZMQUdT PSctc2hhcmVkJwotQEAgLTIzMCw3ICsyNjIsNyBAQCBvc2YqKQotIAlTSExJQl9MSUJWRVJTSU9O PSckKFNITElCX0xJQlNVRkYpLiQoU0hMSUJfTUFKT1IpJwotIAk7OwotIAotLWFpeDQuWzItOV0q LSpnY2MqKQkJIyBsaWdodGx5IHRlc3RlZCBieSBqaWtAY2lzY28uY29tCi0rYWl4NC5bMi05XSot KmdjYyp8YWl4WzUtOV0uKi0qZ2NjKikJCSMgbGlnaHRseSB0ZXN0ZWQgYnkgamlrQGNpc2NvLmNv bQotIAlTSE9CSl9DRkxBR1M9LWZwaWMKLSAJU0hPQkpfTEQ9J2xkJwotIAlTSE9CSl9MREZMQUdT PSctYmR5bmFtaWMgLWJub2VudHJ5IC1iZXhwYWxsJwotQEAgLTI0MSw3ICsyNzMsNyBAQCBhaXg0 LlsyLTldKi0qZ2NjKikJCSMgbGlnaHRseSB0ZXN0ZWQgYnkgCi0gCVNITElCX0xJQlZFUlNJT049 JyQoU0hMSUJfTElCU1VGRikuJChTSExJQl9NQUpPUiknCi0gCTs7Ci0gCi0tYWl4NC5bMi05XSop Ci0rYWl4NC5bMi05XSp8YWl4WzUtOV0uKikKLSAJU0hPQkpfQ0ZMQUdTPS1LCi0gCVNIT0JKX0xE PSdsZCcKLSAJU0hPQkpfTERGTEFHUz0nLWJkeW5hbWljIC1ibm9lbnRyeSAtYmV4cGFsbCcKLUBA IC0zMTIsNyArMzQ0LDcgQEAgaHB1eDEwKi0qZ2NjKikKLSAJU0hPQkpfTEQ9JyR7Q0N9JwotIAkj IGlmIHlvdSBoYXZlIHByb2JsZW1zIGxpbmtpbmcgaGVyZSwgbW92aW5nIHRoZSBgLVdsLCtoLCRA JyBmcm9tCi0gCSMgU0hMSUJfWExERkxBR1MgdG8gU0hPQkpfTERGTEFHUyBoYXMgYmVlbiByZXBv cnRlZCB0byB3b3JrCi0tCVNIT0JKX0xERkxBR1M9Jy1zaGFyZWQgLVdsLC1iIC1XbCwrcycKLSsJ U0hPQkpfTERGTEFHUz0nLXNoYXJlZCAtZnBpYyAtV2wsLWIgLVdsLCtzJwotIAotIAlTSExJQl9Y TERGTEFHUz0nLVdsLCtoLCRAIC1XbCwrYiwkKGxpYmRpciknCi0gCVNITElCX0xJQlNVRkY9J3Ns JwotQEAgLTQ3MiwyMCArNTA0LDM3IEBAIG1zZG9zKikKLSAKLSBjeWd3aW4qKQotIAlTSE9CSl9M RD0nJChDQyknCi0tICAgICAgICBTSE9CSl9MREZMQUdTPSctc2hhcmVkIC1XbCwtLWVuYWJsZS1h dXRvLWltcG9ydCAtV2wsLS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1XbCwtLWV4cG9ydC1hbGwg LVdsLC0tb3V0LWltcGxpYj0kKEApLmEnCi0tICAgICAgICBTSExJQl9MSUJQUkVGPSdjeWcnCi0t ICAgICAgICBTSExJQl9MSUJTVUZGPSdkbGwnCi0tICAgICAgICBTSExJQl9MSUJWRVJTSU9OPSck KFNITElCX0RMTFZFUlNJT04pLiQoU0hMSUJfTElCU1VGRiknCi0tICAgICAgICBTSExJQl9MSUJT PSckKFRFUk1DQVBfTElCKScKLSsJU0hPQkpfTERGTEFHUz0nLXNoYXJlZCAtV2wsLS1lbmFibGUt YXV0by1pbXBvcnQgLVdsLC0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtV2wsLS1leHBvcnQtYWxs IC1XbCwtLW91dC1pbXBsaWI9JChAKS5hJwotKwlTSExJQl9MSUJQUkVGPSdjeWcnCi0rCVNITElC X0xJQlNVRkY9J2RsbCcKLSsJU0hMSUJfTElCVkVSU0lPTj0nJChTSExJQl9ETExWRVJTSU9OKS4k KFNITElCX0xJQlNVRkYpJwotKwlTSExJQl9MSUJTPSckKFRFUk1DQVBfTElCKScKLSAKLSAJU0hM SUJfRE9UPQotLSAgICAgICAgIyBGb3Igb2ZmaWNpYWwgY3lnd2luIHJlbGVhc2VzLCBETExWRVJT SU9OIHdpbGwgYmUgZGVmaW5lZCBpbiB0aGUKLS0gICAgICAgICMgZW52aXJvbm1lbnQgb2YgY29u ZmlndXJlLCBhbmQgd2lsbCBiZSBpbmNyZW1lbnRlZCBhbnkgdGltZSB0aGUgQVBJCi0tICAgICAg ICAjIGNoYW5nZXMgaW4gYSBub24tYmFja3dhcmRzIGNvbXBhdGlibGUgbWFubmVyLiAgT3RoZXJ3 aXNlLCBpdCBpcyBqdXN0Ci0tICAgICAgICAjIFNITElCX01BSk9SLgotLSAgICAgICAgaWYgWyAt biAiJERMTFZFUlNJT04iIF0gOyB0aGVuCi0rCSMgRm9yIG9mZmljaWFsIGN5Z3dpbiByZWxlYXNl cywgRExMVkVSU0lPTiB3aWxsIGJlIGRlZmluZWQgaW4gdGhlCi0rCSMgZW52aXJvbm1lbnQgb2Yg Y29uZmlndXJlLCBhbmQgd2lsbCBiZSBpbmNyZW1lbnRlZCBhbnkgdGltZSB0aGUgQVBJCi0rCSMg Y2hhbmdlcyBpbiBhIG5vbi1iYWNrd2FyZHMgY29tcGF0aWJsZSBtYW5uZXIuICBPdGhlcndpc2Us IGl0IGlzIGp1c3QKLSsJIyBTSExJQl9NQUpPUi4KLSsJaWYgWyAtbiAiJERMTFZFUlNJT04iIF0g OyB0aGVuCi0gCQlTSExJQl9ETExWRVJTSU9OPSIkRExMVkVSU0lPTiIKLS0gICAgICAgIGZpCi0r CWZpCi0rCTs7Ci0rCi0rbWluZ3cqKQotKwlTSE9CSl9MRD0nJChDQyknCi0rCVNIT0JKX0xERkxB R1M9Jy1zaGFyZWQgLVdsLC0tZW5hYmxlLWF1dG8taW1wb3J0IC1XbCwtLWVuYWJsZS1hdXRvLWlt YWdlLWJhc2UgLVdsLC0tZXhwb3J0LWFsbCAtV2wsLS1vdXQtaW1wbGliPSQoQCkuYScKLSsJU0hM SUJfTElCU1VGRj0nZGxsJwotKwlTSExJQl9MSUJWRVJTSU9OPSckKFNITElCX0RMTFZFUlNJT04p LiQoU0hMSUJfTElCU1VGRiknCi0rCVNITElCX0xJQlM9JyQoVEVSTUNBUF9MSUIpJwotKwotKwlT SExJQl9ET1Q9Ci0rCSMgRm9yIG9mZmljaWFsIGN5Z3dpbiByZWxlYXNlcywgRExMVkVSU0lPTiB3 aWxsIGJlIGRlZmluZWQgaW4gdGhlCi0rCSMgZW52aXJvbm1lbnQgb2YgY29uZmlndXJlLCBhbmQg d2lsbCBiZSBpbmNyZW1lbnRlZCBhbnkgdGltZSB0aGUgQVBJCi0rCSMgY2hhbmdlcyBpbiBhIG5v bi1iYWNrd2FyZHMgY29tcGF0aWJsZSBtYW5uZXIuICBPdGhlcndpc2UsIGl0IGlzIGp1c3QKLSsJ IyBTSExJQl9NQUpPUi4KLSsJaWYgWyAtbiAiJERMTFZFUlNJT04iIF0gOyB0aGVuCi0rCQlTSExJ Ql9ETExWRVJTSU9OPSIkRExMVkVSU0lPTiIKLSsJZmkKLSAJOzsKLSAKLSAjCi1JbmRleDogZ2Ri LTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS9zdXBwb3J0L3djd2lkdGguYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS9zdXBwb3J0L3djd2lkdGguYwky MDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3 MDMvcmVhZGxpbmUvc3VwcG9ydC93Y3dpZHRoLmMJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAw MDAgKzAyMDAKLUBAIC0xLDIxICsxLDczIEBACi0gLyoKLS0gKiBUaGlzIGlzIGFuIGltcGxlbWVu dGF0aW9uIG9mIHdjd2lkdGgoKSBhbmQgd2Nzd2lkdGgoKSBhcyBkZWZpbmVkIGluCi0tICogIlRo ZSBTaW5nbGUgVU5JWCBTcGVjaWZpY2F0aW9uLCBWZXJzaW9uIDIsIFRoZSBPcGVuIEdyb3VwLCAx OTk3IgotLSAqIDxodHRwOi8vd3d3LlVOSVgtc3lzdGVtcy5vcmcvb25saW5lLmh0bWw+Ci0rICog VGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB3Y3dpZHRoKCkgYW5kIHdjc3dpZHRoKCkgKGRl ZmluZWQgaW4KLSsgKiBJRUVFIFN0ZCAxMDAyLjEtMjAwMSkgZm9yIFVuaWNvZGUuCi0gICoKLS0g KiBNYXJrdXMgS3VobiAtLSAyMDAxLTA5LTA4IC0tIHB1YmxpYyBkb21haW4KLSsgKiBodHRwOi8v d3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDc5MDQ5NzUvZnVuY3Rpb25zL3djd2lkdGgu aHRtbAotKyAqIGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwNzkwNDk3NS9m dW5jdGlvbnMvd2Nzd2lkdGguaHRtbAotKyAqCi0rICogSW4gZml4ZWQtd2lkdGggb3V0cHV0IGRl dmljZXMsIExhdGluIGNoYXJhY3RlcnMgYWxsIG9jY3VweSBhIHNpbmdsZQotKyAqICJjZWxsIiBw b3NpdGlvbiBvZiBlcXVhbCB3aWR0aCwgd2hlcmVhcyBpZGVvZ3JhcGhpYyBDSksgY2hhcmFjdGVy cwotKyAqIG9jY3VweSB0d28gc3VjaCBjZWxscy4gSW50ZXJvcGVyYWJpbGl0eSBiZXR3ZWVuIHRl cm1pbmFsLWxpbmUKLSsgKiBhcHBsaWNhdGlvbnMgYW5kICh0ZWxldHlwZS1zdHlsZSkgY2hhcmFj dGVyIHRlcm1pbmFscyB1c2luZyB0aGUKLSsgKiBVVEYtOCBlbmNvZGluZyByZXF1aXJlcyBhZ3Jl ZW1lbnQgb24gd2hpY2ggY2hhcmFjdGVyIHNob3VsZCBhZHZhbmNlCi0rICogdGhlIGN1cnNvciBi eSBob3cgbWFueSBjZWxsIHBvc2l0aW9ucy4gTm8gZXN0YWJsaXNoZWQgZm9ybWFsCi0rICogc3Rh bmRhcmRzIGV4aXN0IGF0IHByZXNlbnQgb24gd2hpY2ggVW5pY29kZSBjaGFyYWN0ZXIgc2hhbGwg b2NjdXB5Ci0rICogaG93IG1hbnkgY2VsbCBwb3NpdGlvbnMgb24gY2hhcmFjdGVyIHRlcm1pbmFs cy4gVGhlc2Ugcm91dGluZXMgYXJlCi0rICogYSBmaXJzdCBhdHRlbXB0IG9mIGRlZmluaW5nIHN1 Y2ggYmVoYXZpb3IgYmFzZWQgb24gc2ltcGxlIHJ1bGVzCi0rICogYXBwbGllZCB0byBkYXRhIHBy b3ZpZGVkIGJ5IHRoZSBVbmljb2RlIENvbnNvcnRpdW0uCi0rICoKLSsgKiBGb3Igc29tZSBncmFw aGljYWwgY2hhcmFjdGVycywgdGhlIFVuaWNvZGUgc3RhbmRhcmQgZXhwbGljaXRseQotKyAqIGRl ZmluZXMgYSBjaGFyYWN0ZXItY2VsbCB3aWR0aCB2aWEgdGhlIGRlZmluaXRpb24gb2YgdGhlIEVh c3QgQXNpYW4KLSsgKiBGdWxsV2lkdGggKEYpLCBXaWRlIChXKSwgSGFsZi13aWR0aCAoSCksIGFu ZCBOYXJyb3cgKE5hKSBjbGFzc2VzLgotKyAqIEluIGFsbCB0aGVzZSBjYXNlcywgdGhlcmUgaXMg bm8gYW1iaWd1aXR5IGFib3V0IHdoaWNoIHdpZHRoIGEKLSsgKiB0ZXJtaW5hbCBzaGFsbCB1c2Uu IEZvciBjaGFyYWN0ZXJzIGluIHRoZSBFYXN0IEFzaWFuIEFtYmlndW91cyAoQSkKLSsgKiBjbGFz cywgdGhlIHdpZHRoIGNob2ljZSBkZXBlbmRzIHB1cmVseSBvbiBhIHByZWZlcmVuY2Ugb2YgYmFj a3dhcmQKLSsgKiBjb21wYXRpYmlsaXR5IHdpdGggZWl0aGVyIGhpc3RvcmljIENKSyBvciBXZXN0 ZXJuIHByYWN0aWNlLgotKyAqIENob29zaW5nIHNpbmdsZS13aWR0aCBmb3IgdGhlc2UgY2hhcmFj dGVycyBpcyBlYXN5IHRvIGp1c3RpZnkgYXMKLSsgKiB0aGUgYXBwcm9wcmlhdGUgbG9uZy10ZXJt IHNvbHV0aW9uLCBhcyB0aGUgQ0pLIHByYWN0aWNlIG9mCi0rICogZGlzcGxheWluZyB0aGVzZSBj aGFyYWN0ZXJzIGFzIGRvdWJsZS13aWR0aCBjb21lcyBmcm9tIGhpc3RvcmljCi0rICogaW1wbGVt ZW50YXRpb24gc2ltcGxpY2l0eSAoOC1iaXQgZW5jb2RlZCBjaGFyYWN0ZXJzIHdlcmUgZGlzcGxh eWVkCi0rICogc2luZ2xlLXdpZHRoIGFuZCAxNi1iaXQgb25lcyBkb3VibGUtd2lkdGgsIGV2ZW4g Zm9yIEdyZWVrLAotKyAqIEN5cmlsbGljLCBldGMuKSBhbmQgbm90IGFueSB0eXBvZ3JhcGhpYyBj b25zaWRlcmF0aW9ucy4KLSsgKgotKyAqIE11Y2ggbGVzcyBjbGVhciBpcyB0aGUgY2hvaWNlIG9m IHdpZHRoIGZvciB0aGUgTm90IEVhc3QgQXNpYW4KLSsgKiAoTmV1dHJhbCkgY2xhc3MuIEV4aXN0 aW5nIHByYWN0aWNlIGRvZXMgbm90IGRpY3RhdGUgYSB3aWR0aCBmb3IgYW55Ci0rICogb2YgdGhl c2UgY2hhcmFjdGVycy4gSXQgd291bGQgbmV2ZXJ0aGVsZXNzIG1ha2Ugc2Vuc2UKLSsgKiB0eXBv Z3JhcGhpY2FsbHkgdG8gYWxsb2NhdGUgdHdvIGNoYXJhY3RlciBjZWxscyB0byBjaGFyYWN0ZXJz IHN1Y2gKLSsgKiBhcyBmb3IgaW5zdGFuY2UgRU0gU1BBQ0Ugb3IgVk9MVU1FIElOVEVHUkFMLCB3 aGljaCBjYW5ub3QgYmUKLSsgKiByZXByZXNlbnRlZCBhZGVxdWF0ZWx5IHdpdGggYSBzaW5nbGUt d2lkdGggZ2x5cGguIFRoZSBmb2xsb3dpbmcKLSsgKiByb3V0aW5lcyBhdCBwcmVzZW50IG1lcmVs eSBhc3NpZ24gYSBzaW5nbGUtY2VsbCB3aWR0aCB0byBhbGwKLSsgKiBuZXV0cmFsIGNoYXJhY3Rl cnMsIGluIHRoZSBpbnRlcmVzdCBvZiBzaW1wbGljaXR5LiBUaGlzIGlzIG5vdAotKyAqIGVudGly ZWx5IHNhdGlzZmFjdG9yeSBhbmQgc2hvdWxkIGJlIHJlY29uc2lkZXJlZCBiZWZvcmUKLSsgKiBl c3RhYmxpc2hpbmcgYSBmb3JtYWwgc3RhbmRhcmQgaW4gdGhpcyBhcmVhLiBBdCB0aGUgbW9tZW50 LCB0aGUKLSsgKiBkZWNpc2lvbiB3aGljaCBOb3QgRWFzdCBBc2lhbiAoTmV1dHJhbCkgY2hhcmFj dGVycyBzaG91bGQgYmUKLSsgKiByZXByZXNlbnRlZCBieSBkb3VibGUtd2lkdGggZ2x5cGhzIGNh bm5vdCB5ZXQgYmUgYW5zd2VyZWQgYnkKLSsgKiBhcHBseWluZyBhIHNpbXBsZSBydWxlIGZyb20g dGhlIFVuaWNvZGUgZGF0YWJhc2UgY29udGVudC4gU2V0dGluZwotKyAqIHVwIGEgcHJvcGVyIHN0 YW5kYXJkIGZvciB0aGUgYmVoYXZpb3Igb2YgVVRGLTggY2hhcmFjdGVyIHRlcm1pbmFscwotKyAq IHdpbGwgcmVxdWlyZSBhIGNhcmVmdWwgYW5hbHlzaXMgbm90IG9ubHkgb2YgZWFjaCBVbmljb2Rl IGNoYXJhY3RlciwKLSsgKiBidXQgYWxzbyBvZiBlYWNoIHByZXNlbnRhdGlvbiBmb3JtLCBzb21l dGhpbmcgdGhlIGF1dGhvciBvZiB0aGVzZQotKyAqIHJvdXRpbmVzIGhhcyBhdm9pZGVkIHRvIGRv IHNvIGZhci4KLSsgKgotKyAqIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRz L3RyMTEvCi0rICoKLSsgKiBNYXJrdXMgS3VobiAtLSAyMDA3LTA1LTI2IChVbmljb2RlIDUuMCkK LSsgKgotKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRl IHRoaXMgc29mdHdhcmUKLSsgKiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhl cmVieSBncmFudGVkLiBUaGUgYXV0aG9yCi0rICogZGlzY2xhaW1zIGFsbCB3YXJyYW50aWVzIHdp dGggcmVnYXJkIHRvIHRoaXMgc29mdHdhcmUuCi0rICoKLSsgKiBMYXRlc3QgdmVyc2lvbjogaHR0 cDovL3d3dy5jbC5jYW0uYWMudWsvfm1nazI1L3Vjcy93Y3dpZHRoLmMKLSAgKi8KLSAKLSAjaWZk ZWYgX19HTzMyX18KLS0vKiBESkdQUCBuZWVkcyB0byBpbmNsdWRlIHRoaXMgYmVmb3JlIGluY2x1 ZGluZyB3Y2hhci5oLiAgKi8KLS0jIGluY2x1ZGUgPHdjdHlwZS5oPgotKyMgIGluY2x1ZGUgPHdj dHlwZS5oPgotICNlbmRpZgotIAotICNpbmNsdWRlIDx3Y2hhci5oPgotIAotIHN0cnVjdCBpbnRl cnZhbCB7Ci0tICB1bnNpZ25lZCBzaG9ydCBmaXJzdDsKLS0gIHVuc2lnbmVkIHNob3J0IGxhc3Q7 Ci0rICBpbnQgZmlyc3Q7Ci0rICBpbnQgbGFzdDsKLSB9OwotIAotIC8qIGF1eGlsaWFyeSBmdW5j dGlvbiBmb3IgYmluYXJ5IHNlYXJjaCBpbiBpbnRlcnZhbCB0YWJsZSAqLwotQEAgLTM5LDcgKzkx LDcgQEAgc3RhdGljIGludCBiaXNlYXJjaCh3Y2hhcl90IHVjcywgY29uc3QgcwotIH0KLSAKLSAK LS0vKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBkZWZpbmUgdGhlIGNvbHVtbiB3aWR0aCBvZiBh biBJU08gMTA2NDYKLSsvKiBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMgZGVmaW5lIHRoZSBj b2x1bW4gd2lkdGggb2YgYW4gSVNPIDEwNjQ2Ci0gICogY2hhcmFjdGVyIGFzIGZvbGxvd3M6Ci0g ICoKLSAgKiAgICAtIFRoZSBudWxsIGNoYXJhY3RlciAoVSswMDAwKSBoYXMgYSBjb2x1bW4gd2lk dGggb2YgMC4KLUBAIC01MSw2ICsxMDMsOCBAQCBzdGF0aWMgaW50IGJpc2VhcmNoKHdjaGFyX3Qg dWNzLCBjb25zdCBzCi0gICogICAgICBjYXRlZ29yeSBjb2RlIE1uIG9yIE1lIGluIHRoZSBVbmlj b2RlIGRhdGFiYXNlKSBoYXZlIGEKLSAgKiAgICAgIGNvbHVtbiB3aWR0aCBvZiAwLgotICAqCi0r ICogICAgLSBTT0ZUIEhZUEhFTiAoVSswMEFEKSBoYXMgYSBjb2x1bW4gd2lkdGggb2YgMS4KLSsg KgotICAqICAgIC0gT3RoZXIgZm9ybWF0IGNoYXJhY3RlcnMgKGdlbmVyYWwgY2F0ZWdvcnkgY29k ZSBDZiBpbiB0aGUgVW5pY29kZQotICAqICAgICAgZGF0YWJhc2UpIGFuZCBaRVJPIFdJRFRIIFNQ QUNFIChVKzIwMEIpIGhhdmUgYSBjb2x1bW4gd2lkdGggb2YgMC4KLSAgKgotQEAgLTU4LDcgKzEx Miw3IEBAIHN0YXRpYyBpbnQgYmlzZWFyY2god2NoYXJfdCB1Y3MsIGNvbnN0IHMKLSAgKiAgICAg IGhhdmUgYSBjb2x1bW4gd2lkdGggb2YgMC4KLSAgKgotICAqICAgIC0gU3BhY2luZyBjaGFyYWN0 ZXJzIGluIHRoZSBFYXN0IEFzaWFuIFdpZGUgKFcpIG9yIEVhc3QgQXNpYW4KLS0gKiAgICAgIEZ1 bGxXaWR0aCAoRikgY2F0ZWdvcnkgYXMgZGVmaW5lZCBpbiBVbmljb2RlIFRlY2huaWNhbAotKyAq ICAgICAgRnVsbC13aWR0aCAoRikgY2F0ZWdvcnkgYXMgZGVmaW5lZCBpbiBVbmljb2RlIFRlY2hu aWNhbAotICAqICAgICAgUmVwb3J0ICMxMSBoYXZlIGEgY29sdW1uIHdpZHRoIG9mIDIuCi0gICoK LSAgKiAgICAtIEFsbCByZW1haW5pbmcgY2hhcmFjdGVycyAoaW5jbHVkaW5nIGFsbCBwcmludGFi bGUKLUBAIC02OSw0NCArMTIzLDU5IEBAIHN0YXRpYyBpbnQgYmlzZWFyY2god2NoYXJfdCB1Y3Ms IGNvbnN0IHMKLSAgKiBpbiBJU08gMTA2NDYuCi0gICovCi0gCi0taW50IHdjd2lkdGgod2NoYXJf dCB1Y3MpCi0raW50IG1rX3djd2lkdGgod2NoYXJfdCB1Y3MpCi0gewotICAgLyogc29ydGVkIGxp c3Qgb2Ygbm9uLW92ZXJsYXBwaW5nIGludGVydmFscyBvZiBub24tc3BhY2luZyBjaGFyYWN0ZXJz ICovCi0rICAvKiBnZW5lcmF0ZWQgYnkgInVuaXNldCArY2F0PU1lICtjYXQ9TW4gK2NhdD1DZiAt MDBBRCArMTE2MC0xMUZGICsyMDBCIGMiICovCi0gICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVy dmFsIGNvbWJpbmluZ1tdID0gewotLSAgICB7IDB4MDMwMCwgMHgwMzRFIH0sIHsgMHgwMzYwLCAw eDAzNjIgfSwgeyAweDA0ODMsIDB4MDQ4NiB9LAotLSAgICB7IDB4MDQ4OCwgMHgwNDg5IH0sIHsg MHgwNTkxLCAweDA1QTEgfSwgeyAweDA1QTMsIDB4MDVCOSB9LAotLSAgICB7IDB4MDVCQiwgMHgw NUJEIH0sIHsgMHgwNUJGLCAweDA1QkYgfSwgeyAweDA1QzEsIDB4MDVDMiB9LAotLSAgICB7IDB4 MDVDNCwgMHgwNUM0IH0sIHsgMHgwNjRCLCAweDA2NTUgfSwgeyAweDA2NzAsIDB4MDY3MCB9LAot KyAgICB7IDB4MDMwMCwgMHgwMzZGIH0sIHsgMHgwNDgzLCAweDA0ODYgfSwgeyAweDA0ODgsIDB4 MDQ4OSB9LAotKyAgICB7IDB4MDU5MSwgMHgwNUJEIH0sIHsgMHgwNUJGLCAweDA1QkYgfSwgeyAw eDA1QzEsIDB4MDVDMiB9LAotKyAgICB7IDB4MDVDNCwgMHgwNUM1IH0sIHsgMHgwNUM3LCAweDA1 QzcgfSwgeyAweDA2MDAsIDB4MDYwMyB9LAotKyAgICB7IDB4MDYxMCwgMHgwNjE1IH0sIHsgMHgw NjRCLCAweDA2NUUgfSwgeyAweDA2NzAsIDB4MDY3MCB9LAotICAgICB7IDB4MDZENiwgMHgwNkU0 IH0sIHsgMHgwNkU3LCAweDA2RTggfSwgeyAweDA2RUEsIDB4MDZFRCB9LAotICAgICB7IDB4MDcw RiwgMHgwNzBGIH0sIHsgMHgwNzExLCAweDA3MTEgfSwgeyAweDA3MzAsIDB4MDc0QSB9LAotLSAg ICB7IDB4MDdBNiwgMHgwN0IwIH0sIHsgMHgwOTAxLCAweDA5MDIgfSwgeyAweDA5M0MsIDB4MDkz QyB9LAotLSAgICB7IDB4MDk0MSwgMHgwOTQ4IH0sIHsgMHgwOTRELCAweDA5NEQgfSwgeyAweDA5 NTEsIDB4MDk1NCB9LAotLSAgICB7IDB4MDk2MiwgMHgwOTYzIH0sIHsgMHgwOTgxLCAweDA5ODEg fSwgeyAweDA5QkMsIDB4MDlCQyB9LAotLSAgICB7IDB4MDlDMSwgMHgwOUM0IH0sIHsgMHgwOUNE LCAweDA5Q0QgfSwgeyAweDA5RTIsIDB4MDlFMyB9LAotLSAgICB7IDB4MEEwMiwgMHgwQTAyIH0s IHsgMHgwQTNDLCAweDBBM0MgfSwgeyAweDBBNDEsIDB4MEE0MiB9LAotLSAgICB7IDB4MEE0Nywg MHgwQTQ4IH0sIHsgMHgwQTRCLCAweDBBNEQgfSwgeyAweDBBNzAsIDB4MEE3MSB9LAotLSAgICB7 IDB4MEE4MSwgMHgwQTgyIH0sIHsgMHgwQUJDLCAweDBBQkMgfSwgeyAweDBBQzEsIDB4MEFDNSB9 LAotLSAgICB7IDB4MEFDNywgMHgwQUM4IH0sIHsgMHgwQUNELCAweDBBQ0QgfSwgeyAweDBCMDEs IDB4MEIwMSB9LAotLSAgICB7IDB4MEIzQywgMHgwQjNDIH0sIHsgMHgwQjNGLCAweDBCM0YgfSwg eyAweDBCNDEsIDB4MEI0MyB9LAotLSAgICB7IDB4MEI0RCwgMHgwQjREIH0sIHsgMHgwQjU2LCAw eDBCNTYgfSwgeyAweDBCODIsIDB4MEI4MiB9LAotLSAgICB7IDB4MEJDMCwgMHgwQkMwIH0sIHsg MHgwQkNELCAweDBCQ0QgfSwgeyAweDBDM0UsIDB4MEM0MCB9LAotLSAgICB7IDB4MEM0NiwgMHgw QzQ4IH0sIHsgMHgwQzRBLCAweDBDNEQgfSwgeyAweDBDNTUsIDB4MEM1NiB9LAotKyAgICB7IDB4 MDdBNiwgMHgwN0IwIH0sIHsgMHgwN0VCLCAweDA3RjMgfSwgeyAweDA5MDEsIDB4MDkwMiB9LAot KyAgICB7IDB4MDkzQywgMHgwOTNDIH0sIHsgMHgwOTQxLCAweDA5NDggfSwgeyAweDA5NEQsIDB4 MDk0RCB9LAotKyAgICB7IDB4MDk1MSwgMHgwOTU0IH0sIHsgMHgwOTYyLCAweDA5NjMgfSwgeyAw eDA5ODEsIDB4MDk4MSB9LAotKyAgICB7IDB4MDlCQywgMHgwOUJDIH0sIHsgMHgwOUMxLCAweDA5 QzQgfSwgeyAweDA5Q0QsIDB4MDlDRCB9LAotKyAgICB7IDB4MDlFMiwgMHgwOUUzIH0sIHsgMHgw QTAxLCAweDBBMDIgfSwgeyAweDBBM0MsIDB4MEEzQyB9LAotKyAgICB7IDB4MEE0MSwgMHgwQTQy IH0sIHsgMHgwQTQ3LCAweDBBNDggfSwgeyAweDBBNEIsIDB4MEE0RCB9LAotKyAgICB7IDB4MEE3 MCwgMHgwQTcxIH0sIHsgMHgwQTgxLCAweDBBODIgfSwgeyAweDBBQkMsIDB4MEFCQyB9LAotKyAg ICB7IDB4MEFDMSwgMHgwQUM1IH0sIHsgMHgwQUM3LCAweDBBQzggfSwgeyAweDBBQ0QsIDB4MEFD RCB9LAotKyAgICB7IDB4MEFFMiwgMHgwQUUzIH0sIHsgMHgwQjAxLCAweDBCMDEgfSwgeyAweDBC M0MsIDB4MEIzQyB9LAotKyAgICB7IDB4MEIzRiwgMHgwQjNGIH0sIHsgMHgwQjQxLCAweDBCNDMg fSwgeyAweDBCNEQsIDB4MEI0RCB9LAotKyAgICB7IDB4MEI1NiwgMHgwQjU2IH0sIHsgMHgwQjgy LCAweDBCODIgfSwgeyAweDBCQzAsIDB4MEJDMCB9LAotKyAgICB7IDB4MEJDRCwgMHgwQkNEIH0s IHsgMHgwQzNFLCAweDBDNDAgfSwgeyAweDBDNDYsIDB4MEM0OCB9LAotKyAgICB7IDB4MEM0QSwg MHgwQzREIH0sIHsgMHgwQzU1LCAweDBDNTYgfSwgeyAweDBDQkMsIDB4MENCQyB9LAotICAgICB7 IDB4MENCRiwgMHgwQ0JGIH0sIHsgMHgwQ0M2LCAweDBDQzYgfSwgeyAweDBDQ0MsIDB4MENDRCB9 LAotLSAgICB7IDB4MEQ0MSwgMHgwRDQzIH0sIHsgMHgwRDRELCAweDBENEQgfSwgeyAweDBEQ0Es IDB4MERDQSB9LAotLSAgICB7IDB4MEREMiwgMHgwREQ0IH0sIHsgMHgwREQ2LCAweDBERDYgfSwg eyAweDBFMzEsIDB4MEUzMSB9LAotLSAgICB7IDB4MEUzNCwgMHgwRTNBIH0sIHsgMHgwRTQ3LCAw eDBFNEUgfSwgeyAweDBFQjEsIDB4MEVCMSB9LAotLSAgICB7IDB4MEVCNCwgMHgwRUI5IH0sIHsg MHgwRUJCLCAweDBFQkMgfSwgeyAweDBFQzgsIDB4MEVDRCB9LAotLSAgICB7IDB4MEYxOCwgMHgw RjE5IH0sIHsgMHgwRjM1LCAweDBGMzUgfSwgeyAweDBGMzcsIDB4MEYzNyB9LAotLSAgICB7IDB4 MEYzOSwgMHgwRjM5IH0sIHsgMHgwRjcxLCAweDBGN0UgfSwgeyAweDBGODAsIDB4MEY4NCB9LAot LSAgICB7IDB4MEY4NiwgMHgwRjg3IH0sIHsgMHgwRjkwLCAweDBGOTcgfSwgeyAweDBGOTksIDB4 MEZCQyB9LAotLSAgICB7IDB4MEZDNiwgMHgwRkM2IH0sIHsgMHgxMDJELCAweDEwMzAgfSwgeyAw eDEwMzIsIDB4MTAzMiB9LAotLSAgICB7IDB4MTAzNiwgMHgxMDM3IH0sIHsgMHgxMDM5LCAweDEw MzkgfSwgeyAweDEwNTgsIDB4MTA1OSB9LAotLSAgICB7IDB4MTE2MCwgMHgxMUZGIH0sIHsgMHgx N0I3LCAweDE3QkQgfSwgeyAweDE3QzYsIDB4MTdDNiB9LAotLSAgICB7IDB4MTdDOSwgMHgxN0Qz IH0sIHsgMHgxODBCLCAweDE4MEUgfSwgeyAweDE4QTksIDB4MThBOSB9LAotLSAgICB7IDB4MjAw QiwgMHgyMDBGIH0sIHsgMHgyMDJBLCAweDIwMkUgfSwgeyAweDIwNkEsIDB4MjA2RiB9LAotLSAg ICB7IDB4MjBEMCwgMHgyMEUzIH0sIHsgMHgzMDJBLCAweDMwMkYgfSwgeyAweDMwOTksIDB4MzA5 QSB9LAotLSAgICB7IDB4RkIxRSwgMHhGQjFFIH0sIHsgMHhGRTIwLCAweEZFMjMgfSwgeyAweEZF RkYsIDB4RkVGRiB9LAotLSAgICB7IDB4RkZGOSwgMHhGRkZCIH0KLSsgICAgeyAweDBDRTIsIDB4 MENFMyB9LCB7IDB4MEQ0MSwgMHgwRDQzIH0sIHsgMHgwRDRELCAweDBENEQgfSwKLSsgICAgeyAw eDBEQ0EsIDB4MERDQSB9LCB7IDB4MEREMiwgMHgwREQ0IH0sIHsgMHgwREQ2LCAweDBERDYgfSwK LSsgICAgeyAweDBFMzEsIDB4MEUzMSB9LCB7IDB4MEUzNCwgMHgwRTNBIH0sIHsgMHgwRTQ3LCAw eDBFNEUgfSwKLSsgICAgeyAweDBFQjEsIDB4MEVCMSB9LCB7IDB4MEVCNCwgMHgwRUI5IH0sIHsg MHgwRUJCLCAweDBFQkMgfSwKLSsgICAgeyAweDBFQzgsIDB4MEVDRCB9LCB7IDB4MEYxOCwgMHgw RjE5IH0sIHsgMHgwRjM1LCAweDBGMzUgfSwKLSsgICAgeyAweDBGMzcsIDB4MEYzNyB9LCB7IDB4 MEYzOSwgMHgwRjM5IH0sIHsgMHgwRjcxLCAweDBGN0UgfSwKLSsgICAgeyAweDBGODAsIDB4MEY4 NCB9LCB7IDB4MEY4NiwgMHgwRjg3IH0sIHsgMHgwRjkwLCAweDBGOTcgfSwKLSsgICAgeyAweDBG OTksIDB4MEZCQyB9LCB7IDB4MEZDNiwgMHgwRkM2IH0sIHsgMHgxMDJELCAweDEwMzAgfSwKLSsg ICAgeyAweDEwMzIsIDB4MTAzMiB9LCB7IDB4MTAzNiwgMHgxMDM3IH0sIHsgMHgxMDM5LCAweDEw MzkgfSwKLSsgICAgeyAweDEwNTgsIDB4MTA1OSB9LCB7IDB4MTE2MCwgMHgxMUZGIH0sIHsgMHgx MzVGLCAweDEzNUYgfSwKLSsgICAgeyAweDE3MTIsIDB4MTcxNCB9LCB7IDB4MTczMiwgMHgxNzM0 IH0sIHsgMHgxNzUyLCAweDE3NTMgfSwKLSsgICAgeyAweDE3NzIsIDB4MTc3MyB9LCB7IDB4MTdC NCwgMHgxN0I1IH0sIHsgMHgxN0I3LCAweDE3QkQgfSwKLSsgICAgeyAweDE3QzYsIDB4MTdDNiB9 LCB7IDB4MTdDOSwgMHgxN0QzIH0sIHsgMHgxN0RELCAweDE3REQgfSwKLSsgICAgeyAweDE4MEIs IDB4MTgwRCB9LCB7IDB4MThBOSwgMHgxOEE5IH0sIHsgMHgxOTIwLCAweDE5MjIgfSwKLSsgICAg eyAweDE5MjcsIDB4MTkyOCB9LCB7IDB4MTkzMiwgMHgxOTMyIH0sIHsgMHgxOTM5LCAweDE5M0Ig fSwKLSsgICAgeyAweDFBMTcsIDB4MUExOCB9LCB7IDB4MUIwMCwgMHgxQjAzIH0sIHsgMHgxQjM0 LCAweDFCMzQgfSwKLSsgICAgeyAweDFCMzYsIDB4MUIzQSB9LCB7IDB4MUIzQywgMHgxQjNDIH0s IHsgMHgxQjQyLCAweDFCNDIgfSwKLSsgICAgeyAweDFCNkIsIDB4MUI3MyB9LCB7IDB4MURDMCwg MHgxRENBIH0sIHsgMHgxREZFLCAweDFERkYgfSwKLSsgICAgeyAweDIwMEIsIDB4MjAwRiB9LCB7 IDB4MjAyQSwgMHgyMDJFIH0sIHsgMHgyMDYwLCAweDIwNjMgfSwKLSsgICAgeyAweDIwNkEsIDB4 MjA2RiB9LCB7IDB4MjBEMCwgMHgyMEVGIH0sIHsgMHgzMDJBLCAweDMwMkYgfSwKLSsgICAgeyAw eDMwOTksIDB4MzA5QSB9LCB7IDB4QTgwNiwgMHhBODA2IH0sIHsgMHhBODBCLCAweEE4MEIgfSwK LSsgICAgeyAweEE4MjUsIDB4QTgyNiB9LCB7IDB4RkIxRSwgMHhGQjFFIH0sIHsgMHhGRTAwLCAw eEZFMEYgfSwKLSsgICAgeyAweEZFMjAsIDB4RkUyMyB9LCB7IDB4RkVGRiwgMHhGRUZGIH0sIHsg MHhGRkY5LCAweEZGRkIgfSwKLSsgICAgeyAweDEwQTAxLCAweDEwQTAzIH0sIHsgMHgxMEEwNSwg MHgxMEEwNiB9LCB7IDB4MTBBMEMsIDB4MTBBMEYgfSwKLSsgICAgeyAweDEwQTM4LCAweDEwQTNB IH0sIHsgMHgxMEEzRiwgMHgxMEEzRiB9LCB7IDB4MUQxNjcsIDB4MUQxNjkgfSwKLSsgICAgeyAw eDFEMTczLCAweDFEMTgyIH0sIHsgMHgxRDE4NSwgMHgxRDE4QiB9LCB7IDB4MUQxQUEsIDB4MUQx QUQgfSwKLSsgICAgeyAweDFEMjQyLCAweDFEMjQ0IH0sIHsgMHhFMDAwMSwgMHhFMDAwMSB9LCB7 IDB4RTAwMjAsIDB4RTAwN0YgfSwKLSsgICAgeyAweEUwMTAwLCAweEUwMUVGIH0KLSAgIH07Ci0g Ci0gICAvKiB0ZXN0IGZvciA4LWJpdCBjb250cm9sIGNoYXJhY3RlcnMgKi8KLUBAIC0xMjUsMjMg KzE5NCwyNiBAQCBpbnQgd2N3aWR0aCh3Y2hhcl90IHVjcykKLSAgIHJldHVybiAxICsgCi0gICAg ICh1Y3MgPj0gMHgxMTAwICYmCi0gICAgICAodWNzIDw9IDB4MTE1ZiB8fCAgICAgICAgICAgICAg ICAgICAgLyogSGFuZ3VsIEphbW8gaW5pdC4gY29uc29uYW50cyAqLwotLSAgICAgICh1Y3MgPj0g MHgyZTgwICYmIHVjcyA8PSAweGE0Y2YgJiYgKHVjcyAmIH4weDAwMTEpICE9IDB4MzAwYSAmJgot KyAgICAgIHVjcyA9PSAweDIzMjkgfHwgdWNzID09IDB4MjMyYSB8fAotKyAgICAgICh1Y3MgPj0g MHgyZTgwICYmIHVjcyA8PSAweGE0Y2YgJiYKLSAgICAgICAgdWNzICE9IDB4MzAzZikgfHwgICAg ICAgICAgICAgICAgICAvKiBDSksgLi4uIFlpICovCi0gICAgICAgKHVjcyA+PSAweGFjMDAgJiYg dWNzIDw9IDB4ZDdhMykgfHwgLyogSGFuZ3VsIFN5bGxhYmxlcyAqLwotICAgICAgICh1Y3MgPj0g MHhmOTAwICYmIHVjcyA8PSAweGZhZmYpIHx8IC8qIENKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFw aHMgKi8KLSsgICAgICAodWNzID49IDB4ZmUxMCAmJiB1Y3MgPD0gMHhmZTE5KSB8fCAvKiBWZXJ0 aWNhbCBmb3JtcyAqLwotICAgICAgICh1Y3MgPj0gMHhmZTMwICYmIHVjcyA8PSAweGZlNmYpIHx8 IC8qIENKSyBDb21wYXRpYmlsaXR5IEZvcm1zICovCi0tICAgICAgKHVjcyA+PSAweGZmMDAgJiYg dWNzIDw9IDB4ZmY1ZikgfHwgLyogRnVsbHdpZHRoIEZvcm1zICovCi0rICAgICAgKHVjcyA+PSAw eGZmMDAgJiYgdWNzIDw9IDB4ZmY2MCkgfHwgLyogRnVsbHdpZHRoIEZvcm1zICovCi0gICAgICAg KHVjcyA+PSAweGZmZTAgJiYgdWNzIDw9IDB4ZmZlNikgfHwKLS0gICAgICAodWNzID49IDB4MjAw MDAgJiYgdWNzIDw9IDB4MmZmZmYpKSk7Ci0rICAgICAgKHVjcyA+PSAweDIwMDAwICYmIHVjcyA8 PSAweDJmZmZkKSB8fAotKyAgICAgICh1Y3MgPj0gMHgzMDAwMCAmJiB1Y3MgPD0gMHgzZmZmZCkp KTsKLSB9Ci0gCi0gCi0taW50IHdjc3dpZHRoKGNvbnN0IHdjaGFyX3QgKnB3Y3MsIHNpemVfdCBu KQotK2ludCBta193Y3N3aWR0aChjb25zdCB3Y2hhcl90ICpwd2NzLCBzaXplX3QgbikKLSB7Ci0g ICBpbnQgdywgd2lkdGggPSAwOwotIAotICAgZm9yICg7KnB3Y3MgJiYgbi0tID4gMDsgcHdjcysr KQotLSAgICBpZiAoKHcgPSB3Y3dpZHRoKCpwd2NzKSkgPCAwKQotKyAgICBpZiAoKHcgPSBta193 Y3dpZHRoKCpwd2NzKSkgPCAwKQotICAgICAgIHJldHVybiAtMTsKLSAgICAgZWxzZQotICAgICAg IHdpZHRoICs9IHc7Ci1AQCAtMTUxLDIwICsyMjMsMjEgQEAgaW50IHdjc3dpZHRoKGNvbnN0IHdj aGFyX3QgKnB3Y3MsIHNpemVfdAotIAotIAotIC8qCi0tICogVGhlIGZvbGxvd2luZyBmdW5jdGlv biBpcyB0aGUgc2FtZSBhcyB3Y3dpZHRoKCksIGV4Y2VwdCB0aGF0Ci0tICogc3BhY2luZyBjaGFy YWN0ZXJzIGluIHRoZSBFYXN0IEFzaWFuIEFtYmlndW91cyAoQSkgY2F0ZWdvcnkgYXMKLS0gKiBk ZWZpbmVkIGluIFVuaWNvZGUgVGVjaG5pY2FsIFJlcG9ydCAjMTEgaGF2ZSBhIGNvbHVtbiB3aWR0 aCBvZiAyLgotLSAqIFRoaXMgZXhwZXJpbWVudGFsIHZhcmlhbnQgbWlnaHQgYmUgdXNlZnVsIGZv ciB1c2VycyBvZiBDSksgbGVnYWN5Ci0tICogZW5jb2RpbmdzIHdobyB3YW50IHRvIG1pZ3JhdGUg dG8gVUNTLiBJdCBpcyBub3Qgb3RoZXJ3aXNlCi0tICogcmVjb21tZW5kZWQgZm9yIGdlbmVyYWwg dXNlLgotKyAqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB0aGUgc2FtZSBhcyBta193Y3dp ZHRoKCkgYW5kCi0rICogbWtfd2Nzd2lkdGgoKSwgZXhjZXB0IHRoYXQgc3BhY2luZyBjaGFyYWN0 ZXJzIGluIHRoZSBFYXN0IEFzaWFuCi0rICogQW1iaWd1b3VzIChBKSBjYXRlZ29yeSBhcyBkZWZp bmVkIGluIFVuaWNvZGUgVGVjaG5pY2FsIFJlcG9ydCAjMTEKLSsgKiBoYXZlIGEgY29sdW1uIHdp ZHRoIG9mIDIuIFRoaXMgdmFyaWFudCBtaWdodCBiZSB1c2VmdWwgZm9yIHVzZXJzIG9mCi0rICog Q0pLIGxlZ2FjeSBlbmNvZGluZ3Mgd2hvIHdhbnQgdG8gbWlncmF0ZSB0byBVQ1Mgd2l0aG91dCBj aGFuZ2luZwotKyAqIHRoZSB0cmFkaXRpb25hbCB0ZXJtaW5hbCBjaGFyYWN0ZXItd2lkdGggYmVo YXZpb3VyLiBJdCBpcyBub3QKLSsgKiBvdGhlcndpc2UgcmVjb21tZW5kZWQgZm9yIGdlbmVyYWwg dXNlLgotICAqLwotLXN0YXRpYyBpbnQgd2N3aWR0aF9jamsod2NoYXJfdCB1Y3MpCi0raW50IG1r X3djd2lkdGhfY2prKHdjaGFyX3QgdWNzKQotIHsKLSAgIC8qIHNvcnRlZCBsaXN0IG9mIG5vbi1v dmVybGFwcGluZyBpbnRlcnZhbHMgb2YgRWFzdCBBc2lhbiBBbWJpZ3VvdXMKLS0gICAqIGNoYXJh Y3RlcnMgKi8KLSsgICAqIGNoYXJhY3RlcnMsIGdlbmVyYXRlZCBieSAidW5pc2V0ICtXSURUSC1B IC1jYXQ9TWUgLWNhdD1NbiAtY2F0PUNmIGMiICovCi0gICBzdGF0aWMgY29uc3Qgc3RydWN0IGlu dGVydmFsIGFtYmlndW91c1tdID0gewotICAgICB7IDB4MDBBMSwgMHgwMEExIH0sIHsgMHgwMEE0 LCAweDAwQTQgfSwgeyAweDAwQTcsIDB4MDBBOCB9LAotLSAgICB7IDB4MDBBQSwgMHgwMEFBIH0s IHsgMHgwMEFELCAweDAwQUUgfSwgeyAweDAwQjAsIDB4MDBCNCB9LAotKyAgICB7IDB4MDBBQSwg MHgwMEFBIH0sIHsgMHgwMEFFLCAweDAwQUUgfSwgeyAweDAwQjAsIDB4MDBCNCB9LAotICAgICB7 IDB4MDBCNiwgMHgwMEJBIH0sIHsgMHgwMEJDLCAweDAwQkYgfSwgeyAweDAwQzYsIDB4MDBDNiB9 LAotICAgICB7IDB4MDBEMCwgMHgwMEQwIH0sIHsgMHgwMEQ3LCAweDAwRDggfSwgeyAweDAwREUs IDB4MDBFMSB9LAotICAgICB7IDB4MDBFNiwgMHgwMEU2IH0sIHsgMHgwMEU4LCAweDAwRUEgfSwg eyAweDAwRUMsIDB4MDBFRCB9LAotQEAgLTE4MCw0MiArMjUzLDQxIEBAIHN0YXRpYyBpbnQgd2N3 aWR0aF9jamsod2NoYXJfdCB1Y3MpCi0gICAgIHsgMHgwMURDLCAweDAxREMgfSwgeyAweDAyNTEs IDB4MDI1MSB9LCB7IDB4MDI2MSwgMHgwMjYxIH0sCi0gICAgIHsgMHgwMkM0LCAweDAyQzQgfSwg eyAweDAyQzcsIDB4MDJDNyB9LCB7IDB4MDJDOSwgMHgwMkNCIH0sCi0gICAgIHsgMHgwMkNELCAw eDAyQ0QgfSwgeyAweDAyRDAsIDB4MDJEMCB9LCB7IDB4MDJEOCwgMHgwMkRCIH0sCi0tICAgIHsg MHgwMkRELCAweDAyREQgfSwgeyAweDAyREYsIDB4MDJERiB9LCB7IDB4MDMwMCwgMHgwMzRFIH0s Ci0tICAgIHsgMHgwMzYwLCAweDAzNjIgfSwgeyAweDAzOTEsIDB4MDNBMSB9LCB7IDB4MDNBMywg MHgwM0E5IH0sCi0tICAgIHsgMHgwM0IxLCAweDAzQzEgfSwgeyAweDAzQzMsIDB4MDNDOSB9LCB7 IDB4MDQwMSwgMHgwNDAxIH0sCi0tICAgIHsgMHgwNDEwLCAweDA0NEYgfSwgeyAweDA0NTEsIDB4 MDQ1MSB9LCB7IDB4MjAxMCwgMHgyMDEwIH0sCi0tICAgIHsgMHgyMDEzLCAweDIwMTYgfSwgeyAw eDIwMTgsIDB4MjAxOSB9LCB7IDB4MjAxQywgMHgyMDFEIH0sCi0tICAgIHsgMHgyMDIwLCAweDIw MjIgfSwgeyAweDIwMjQsIDB4MjAyNyB9LCB7IDB4MjAzMCwgMHgyMDMwIH0sCi0tICAgIHsgMHgy MDMyLCAweDIwMzMgfSwgeyAweDIwMzUsIDB4MjAzNSB9LCB7IDB4MjAzQiwgMHgyMDNCIH0sCi0t ICAgIHsgMHgyMDNFLCAweDIwM0UgfSwgeyAweDIwNzQsIDB4MjA3NCB9LCB7IDB4MjA3RiwgMHgy MDdGIH0sCi0tICAgIHsgMHgyMDgxLCAweDIwODQgfSwgeyAweDIwQUMsIDB4MjBBQyB9LCB7IDB4 MjEwMywgMHgyMTAzIH0sCi0tICAgIHsgMHgyMTA1LCAweDIxMDUgfSwgeyAweDIxMDksIDB4MjEw OSB9LCB7IDB4MjExMywgMHgyMTEzIH0sCi0tICAgIHsgMHgyMTE2LCAweDIxMTYgfSwgeyAweDIx MjEsIDB4MjEyMiB9LCB7IDB4MjEyNiwgMHgyMTI2IH0sCi0tICAgIHsgMHgyMTJCLCAweDIxMkIg fSwgeyAweDIxNTMsIDB4MjE1NSB9LCB7IDB4MjE1QiwgMHgyMTVFIH0sCi0tICAgIHsgMHgyMTYw LCAweDIxNkIgfSwgeyAweDIxNzAsIDB4MjE3OSB9LCB7IDB4MjE5MCwgMHgyMTk5IH0sCi0tICAg IHsgMHgyMUI4LCAweDIxQjkgfSwgeyAweDIxRDIsIDB4MjFEMiB9LCB7IDB4MjFENCwgMHgyMUQ0 IH0sCi0tICAgIHsgMHgyMUU3LCAweDIxRTcgfSwgeyAweDIyMDAsIDB4MjIwMCB9LCB7IDB4MjIw MiwgMHgyMjAzIH0sCi0tICAgIHsgMHgyMjA3LCAweDIyMDggfSwgeyAweDIyMEIsIDB4MjIwQiB9 LCB7IDB4MjIwRiwgMHgyMjBGIH0sCi0tICAgIHsgMHgyMjExLCAweDIyMTEgfSwgeyAweDIyMTUs IDB4MjIxNSB9LCB7IDB4MjIxQSwgMHgyMjFBIH0sCi0tICAgIHsgMHgyMjFELCAweDIyMjAgfSwg eyAweDIyMjMsIDB4MjIyMyB9LCB7IDB4MjIyNSwgMHgyMjI1IH0sCi0tICAgIHsgMHgyMjI3LCAw eDIyMkMgfSwgeyAweDIyMkUsIDB4MjIyRSB9LCB7IDB4MjIzNCwgMHgyMjM3IH0sCi0tICAgIHsg MHgyMjNDLCAweDIyM0QgfSwgeyAweDIyNDgsIDB4MjI0OCB9LCB7IDB4MjI0QywgMHgyMjRDIH0s Ci0tICAgIHsgMHgyMjUyLCAweDIyNTIgfSwgeyAweDIyNjAsIDB4MjI2MSB9LCB7IDB4MjI2NCwg MHgyMjY3IH0sCi0tICAgIHsgMHgyMjZBLCAweDIyNkIgfSwgeyAweDIyNkUsIDB4MjI2RiB9LCB7 IDB4MjI4MiwgMHgyMjgzIH0sCi0tICAgIHsgMHgyMjg2LCAweDIyODcgfSwgeyAweDIyOTUsIDB4 MjI5NSB9LCB7IDB4MjI5OSwgMHgyMjk5IH0sCi0tICAgIHsgMHgyMkE1LCAweDIyQTUgfSwgeyAw eDIyQkYsIDB4MjJCRiB9LCB7IDB4MjMxMiwgMHgyMzEyIH0sCi0tICAgIHsgMHgyMzI5LCAweDIz MkEgfSwgeyAweDI0NjAsIDB4MjRCRiB9LCB7IDB4MjREMCwgMHgyNEU5IH0sCi0tICAgIHsgMHgy NTAwLCAweDI1NEIgfSwgeyAweDI1NTAsIDB4MjU3NCB9LCB7IDB4MjU4MCwgMHgyNThGIH0sCi0t ICAgIHsgMHgyNTkyLCAweDI1OTUgfSwgeyAweDI1QTAsIDB4MjVBMSB9LCB7IDB4MjVBMywgMHgy NUE5IH0sCi0tICAgIHsgMHgyNUIyLCAweDI1QjMgfSwgeyAweDI1QjYsIDB4MjVCNyB9LCB7IDB4 MjVCQywgMHgyNUJEIH0sCi0tICAgIHsgMHgyNUMwLCAweDI1QzEgfSwgeyAweDI1QzYsIDB4MjVD OCB9LCB7IDB4MjVDQiwgMHgyNUNCIH0sCi0tICAgIHsgMHgyNUNFLCAweDI1RDEgfSwgeyAweDI1 RTIsIDB4MjVFNSB9LCB7IDB4MjVFRiwgMHgyNUVGIH0sCi0tICAgIHsgMHgyNjA1LCAweDI2MDYg fSwgeyAweDI2MDksIDB4MjYwOSB9LCB7IDB4MjYwRSwgMHgyNjBGIH0sCi0rICAgIHsgMHgwMkRE LCAweDAyREQgfSwgeyAweDAyREYsIDB4MDJERiB9LCB7IDB4MDM5MSwgMHgwM0ExIH0sCi0rICAg IHsgMHgwM0EzLCAweDAzQTkgfSwgeyAweDAzQjEsIDB4MDNDMSB9LCB7IDB4MDNDMywgMHgwM0M5 IH0sCi0rICAgIHsgMHgwNDAxLCAweDA0MDEgfSwgeyAweDA0MTAsIDB4MDQ0RiB9LCB7IDB4MDQ1 MSwgMHgwNDUxIH0sCi0rICAgIHsgMHgyMDEwLCAweDIwMTAgfSwgeyAweDIwMTMsIDB4MjAxNiB9 LCB7IDB4MjAxOCwgMHgyMDE5IH0sCi0rICAgIHsgMHgyMDFDLCAweDIwMUQgfSwgeyAweDIwMjAs IDB4MjAyMiB9LCB7IDB4MjAyNCwgMHgyMDI3IH0sCi0rICAgIHsgMHgyMDMwLCAweDIwMzAgfSwg eyAweDIwMzIsIDB4MjAzMyB9LCB7IDB4MjAzNSwgMHgyMDM1IH0sCi0rICAgIHsgMHgyMDNCLCAw eDIwM0IgfSwgeyAweDIwM0UsIDB4MjAzRSB9LCB7IDB4MjA3NCwgMHgyMDc0IH0sCi0rICAgIHsg MHgyMDdGLCAweDIwN0YgfSwgeyAweDIwODEsIDB4MjA4NCB9LCB7IDB4MjBBQywgMHgyMEFDIH0s Ci0rICAgIHsgMHgyMTAzLCAweDIxMDMgfSwgeyAweDIxMDUsIDB4MjEwNSB9LCB7IDB4MjEwOSwg MHgyMTA5IH0sCi0rICAgIHsgMHgyMTEzLCAweDIxMTMgfSwgeyAweDIxMTYsIDB4MjExNiB9LCB7 IDB4MjEyMSwgMHgyMTIyIH0sCi0rICAgIHsgMHgyMTI2LCAweDIxMjYgfSwgeyAweDIxMkIsIDB4 MjEyQiB9LCB7IDB4MjE1MywgMHgyMTU0IH0sCi0rICAgIHsgMHgyMTVCLCAweDIxNUUgfSwgeyAw eDIxNjAsIDB4MjE2QiB9LCB7IDB4MjE3MCwgMHgyMTc5IH0sCi0rICAgIHsgMHgyMTkwLCAweDIx OTkgfSwgeyAweDIxQjgsIDB4MjFCOSB9LCB7IDB4MjFEMiwgMHgyMUQyIH0sCi0rICAgIHsgMHgy MUQ0LCAweDIxRDQgfSwgeyAweDIxRTcsIDB4MjFFNyB9LCB7IDB4MjIwMCwgMHgyMjAwIH0sCi0r ICAgIHsgMHgyMjAyLCAweDIyMDMgfSwgeyAweDIyMDcsIDB4MjIwOCB9LCB7IDB4MjIwQiwgMHgy MjBCIH0sCi0rICAgIHsgMHgyMjBGLCAweDIyMEYgfSwgeyAweDIyMTEsIDB4MjIxMSB9LCB7IDB4 MjIxNSwgMHgyMjE1IH0sCi0rICAgIHsgMHgyMjFBLCAweDIyMUEgfSwgeyAweDIyMUQsIDB4MjIy MCB9LCB7IDB4MjIyMywgMHgyMjIzIH0sCi0rICAgIHsgMHgyMjI1LCAweDIyMjUgfSwgeyAweDIy MjcsIDB4MjIyQyB9LCB7IDB4MjIyRSwgMHgyMjJFIH0sCi0rICAgIHsgMHgyMjM0LCAweDIyMzcg fSwgeyAweDIyM0MsIDB4MjIzRCB9LCB7IDB4MjI0OCwgMHgyMjQ4IH0sCi0rICAgIHsgMHgyMjRD LCAweDIyNEMgfSwgeyAweDIyNTIsIDB4MjI1MiB9LCB7IDB4MjI2MCwgMHgyMjYxIH0sCi0rICAg IHsgMHgyMjY0LCAweDIyNjcgfSwgeyAweDIyNkEsIDB4MjI2QiB9LCB7IDB4MjI2RSwgMHgyMjZG IH0sCi0rICAgIHsgMHgyMjgyLCAweDIyODMgfSwgeyAweDIyODYsIDB4MjI4NyB9LCB7IDB4MjI5 NSwgMHgyMjk1IH0sCi0rICAgIHsgMHgyMjk5LCAweDIyOTkgfSwgeyAweDIyQTUsIDB4MjJBNSB9 LCB7IDB4MjJCRiwgMHgyMkJGIH0sCi0rICAgIHsgMHgyMzEyLCAweDIzMTIgfSwgeyAweDI0NjAs IDB4MjRFOSB9LCB7IDB4MjRFQiwgMHgyNTRCIH0sCi0rICAgIHsgMHgyNTUwLCAweDI1NzMgfSwg eyAweDI1ODAsIDB4MjU4RiB9LCB7IDB4MjU5MiwgMHgyNTk1IH0sCi0rICAgIHsgMHgyNUEwLCAw eDI1QTEgfSwgeyAweDI1QTMsIDB4MjVBOSB9LCB7IDB4MjVCMiwgMHgyNUIzIH0sCi0rICAgIHsg MHgyNUI2LCAweDI1QjcgfSwgeyAweDI1QkMsIDB4MjVCRCB9LCB7IDB4MjVDMCwgMHgyNUMxIH0s Ci0rICAgIHsgMHgyNUM2LCAweDI1QzggfSwgeyAweDI1Q0IsIDB4MjVDQiB9LCB7IDB4MjVDRSwg MHgyNUQxIH0sCi0rICAgIHsgMHgyNUUyLCAweDI1RTUgfSwgeyAweDI1RUYsIDB4MjVFRiB9LCB7 IDB4MjYwNSwgMHgyNjA2IH0sCi0rICAgIHsgMHgyNjA5LCAweDI2MDkgfSwgeyAweDI2MEUsIDB4 MjYwRiB9LCB7IDB4MjYxNCwgMHgyNjE1IH0sCi0gICAgIHsgMHgyNjFDLCAweDI2MUMgfSwgeyAw eDI2MUUsIDB4MjYxRSB9LCB7IDB4MjY0MCwgMHgyNjQwIH0sCi0gICAgIHsgMHgyNjQyLCAweDI2 NDIgfSwgeyAweDI2NjAsIDB4MjY2MSB9LCB7IDB4MjY2MywgMHgyNjY1IH0sCi0gICAgIHsgMHgy NjY3LCAweDI2NkEgfSwgeyAweDI2NkMsIDB4MjY2RCB9LCB7IDB4MjY2RiwgMHgyNjZGIH0sCi0t ICAgIHsgMHgyNzNELCAweDI3M0QgfSwgeyAweDMwMDgsIDB4MzAwQiB9LCB7IDB4MzAxNCwgMHgz MDE1IH0sCi0tICAgIHsgMHgzMDE4LCAweDMwMUIgfSwgeyAweEZGRkQsIDB4RkZGRCB9Ci0rICAg IHsgMHgyNzNELCAweDI3M0QgfSwgeyAweDI3NzYsIDB4Mjc3RiB9LCB7IDB4RTAwMCwgMHhGOEZG IH0sCi0rICAgIHsgMHhGRkZELCAweEZGRkQgfSwgeyAweEYwMDAwLCAweEZGRkZEIH0sIHsgMHgx MDAwMDAsIDB4MTBGRkZEIH0KLSAgIH07Ci0gCi0gICAvKiBiaW5hcnkgc2VhcmNoIGluIHRhYmxl IG9mIG5vbi1zcGFjaW5nIGNoYXJhY3RlcnMgKi8KLUBAIC0yMjMsMTYgKzI5NSwxNiBAQCBzdGF0 aWMgaW50IHdjd2lkdGhfY2prKHdjaGFyX3QgdWNzKQotIAkgICAgICAgc2l6ZW9mKGFtYmlndW91 cykgLyBzaXplb2Yoc3RydWN0IGludGVydmFsKSAtIDEpKQotICAgICByZXR1cm4gMjsKLSAKLS0g IHJldHVybiB3Y3dpZHRoKHVjcyk7Ci0rICByZXR1cm4gbWtfd2N3aWR0aCh1Y3MpOwotIH0KLSAK LSAKLS1pbnQgd2Nzd2lkdGhfY2prKGNvbnN0IHdjaGFyX3QgKnB3Y3MsIHNpemVfdCBuKQotK2lu dCBta193Y3N3aWR0aF9jamsoY29uc3Qgd2NoYXJfdCAqcHdjcywgc2l6ZV90IG4pCi0gewotICAg aW50IHcsIHdpZHRoID0gMDsKLSAKLSAgIGZvciAoOypwd2NzICYmIG4tLSA+IDA7IHB3Y3MrKykK LS0gICAgaWYgKCh3ID0gd2N3aWR0aF9jamsoKnB3Y3MpKSA8IDApCi0rICAgIGlmICgodyA9IG1r X3djd2lkdGhfY2prKCpwd2NzKSkgPCAwKQotICAgICAgIHJldHVybiAtMTsKLSAgICAgZWxzZQot ICAgICAgIHdpZHRoICs9IHc7Ci1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS90 Y2FwLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUv dGNhcC5oCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45 MC4yMDExMDcwMy9yZWFkbGluZS90Y2FwLmgJMjAxMS0wNy0wMyAxMDo0MToyMS4wMDAwMDAwMDAg KzAyMDAKLUBAIC0xLDI1ICsxLDIzIEBACi0gLyogdGNhcC5oIC0tIHRlcm1jYXAgbGlicmFyeSBm dW5jdGlvbnMgYW5kIHZhcmlhYmxlcy4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5OTYgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDkg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxlIGNvbnRhaW5z IHRoZSBSZWFkbGluZSBMaWJyYXJ5ICh0aGUgTGlicmFyeSksIGEgc2V0IG9mCi0tICAgcm91dGlu ZXMgZm9yIHByb3ZpZGluZyBFbWFjcyBzdHlsZSBsaW5lIGlucHV0IHRvIHByb2dyYW1zIHRoYXQg YXNrCi0tICAgZm9yIGl0LgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxp bmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBv ZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAK LSAKLS0gICBUaGUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIg b3B0aW9uKQotLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgTGlicmFyeSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLS0gICBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0t ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZSBHTlUKLS0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0tCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQg d2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBj YWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5 IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAot LSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8K LSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJl YWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyov Ci0gCi0gI2lmICFkZWZpbmVkIChfUkxUQ0FQX0hfKQotICNkZWZpbmUgX1JMVENBUF9IXwotSW5k ZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvdGVybWluYWwuYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS90ZXJtaW5hbC5jCTIwMTEtMDct MDMgMTA6NDA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFk bGluZS90ZXJtaW5hbC5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAt MSwyNCArMSwyNCBAQAotIC8qIHRlcm1pbmFsLmMgLS0gY29udHJvbGxpbmcgdGhlIHRlcm1pbmFs IHdpdGggdGVybWNhcC4gKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwNSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwOSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKLS0gICByZWFkaW5nIGxpbmVz IG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotKyAg IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUp LCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3Rp dmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0gICBUaGUgR05VIFJlYWRs aW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKLS0g ICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJl OiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g Ci0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgUmVhZGxp bmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRl biBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2VwdCBp biBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0gICBo YXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx MSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0rCi0gI2RlZmluZSBS RUFETElORV9MSUJSQVJZCi0gCi0gI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCi1AQCAtNzEs NiArNzEsMTcgQEAKLSAjaW5jbHVkZSAieG1hbGxvYy5oIgotIAotICNpZiBkZWZpbmVkIChfX01J TkdXMzJfXykKLSsjICBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0rIyAgaW5jbHVkZSA8d2luY29uLmg+ Ci0rCi0rc3RhdGljIHZvaWQgX3dpbl9nZXRfc2NyZWVuc2l6ZSBQQVJBTVMoKGludCAqLCBpbnQg KikpOwotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkIChfX0VNWF9fKQotK3N0YXRpYyB2b2lkIF9l bXhfZ2V0X3NjcmVlbnNpemUgUEFSQU1TKChpbnQgKiwgaW50ICopKTsKLSsjZW5kaWYKLSsKLSsj aWYgZGVmaW5lZCAoX19NSU5HVzMyX18pCi0gIyBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0gIyBpbmNs dWRlIDx3aW5jb24uaD4KLSAjZW5kaWYKLUBAIC03OCw3ICs4OSwxMCBAQAotICNkZWZpbmUgQ1VT VE9NX1JFRElTUExBWV9GVU5DKCkgKHJsX3JlZGlzcGxheV9mdW5jdGlvbiAhPSBybF9yZWRpc3Bs YXkpCi0gI2RlZmluZSBDVVNUT01fSU5QVVRfRlVOQygpIChybF9nZXRjX2Z1bmN0aW9uICE9IHJs X2dldGMpCi0gCi0taW50IHJsX3ByZWZlcl9lbnZfd2luc2l6ZTsKLSsvKiAgSWYgdGhlIGNhbGxp bmcgYXBwbGljYXRpb24gc2V0cyB0aGlzIHRvIGEgbm9uLXplcm8gdmFsdWUsIHJlYWRsaW5lIHdp bGwKLSsgICAgdXNlIHRoZSAkTElORVMgYW5kICRDT0xVTU5TIGVudmlyb25tZW50IHZhcmlhYmxl cyB0byBzZXQgaXRzIGlkZWEgb2YgdGhlCi0rICAgIHdpbmRvdyBzaXplIGJlZm9yZSBpbnRlcnJv Z2F0aW5nIHRoZSBrZXJuZWwuICovCi0raW50IHJsX3ByZWZlcl9lbnZfd2luc2l6ZSA9IDA7Ci0g Ci0gLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiAqLwotIC8qCQkJCQkJCQkgICAgKi8KLUBAIC05MywxMiArMTA3LDEyIEBA IHN0YXRpYyBjaGFyICp0ZXJtX3N0cmluZ19idWZmZXIgPSAoY2hhciAKLSAKLSBzdGF0aWMgaW50 IHRjYXBfaW5pdGlhbGl6ZWQ7Ci0gCi0tI2lmICFkZWZpbmVkIChfX2xpbnV4X18pCi0rI2lmICFk ZWZpbmVkIChfX2xpbnV4X18pICYmICFkZWZpbmVkIChOQ1VSU0VTX1ZFUlNJT04pCi0gIyAgaWYg ZGVmaW5lZCAoX19FTVhfXykgfHwgZGVmaW5lZCAoTkVFRF9FWFRFUk5fUEMpCi0gZXh0ZXJuIAot ICMgIGVuZGlmIC8qIF9fRU1YX18gfHwgTkVFRF9FWFRFUk5fUEMgKi8KLSBjaGFyIFBDLCAqQkMs ICpVUDsKLS0jZW5kaWYgLyogX19saW51eF9fICovCi0rI2VuZGlmIC8qICFfX2xpbnV4X18gJiYg IU5DVVJTRVNfVkVSU0lPTiAqLwotIAotIC8qIFNvbWUgc3RyaW5ncyB0byBjb250cm9sIHRlcm1p bmFsIGFjdGlvbnMuICBUaGVzZSBhcmUgb3V0cHV0IGJ5IHRwdXRzICgpLiAqLwotIGNoYXIgKl9y bF90ZXJtX2NscmVvbDsKLUBAIC0xMjIsOSArMTM2LDcgQEAgY2hhciAqX3JsX3Rlcm1fSUM7Ci0g Y2hhciAqX3JsX3Rlcm1fZGM7Ci0gY2hhciAqX3JsX3Rlcm1fREM7Ci0gCi0tI2lmIGRlZmluZWQg KEhBQ0tfVEVSTUNBUF9NT1RJT04pCi0gY2hhciAqX3JsX3Rlcm1fZm9yd2FyZF9jaGFyOwotLSNl bmRpZiAgLyogSEFDS19URVJNQ0FQX01PVElPTiAqLwotIAotIC8qIEhvdyB0byBnbyB1cCBhIGxp bmUuICovCi0gY2hhciAqX3JsX3Rlcm1fdXA7Ci1AQCAtMTk1LDYgKzIwNywyNiBAQCBfZW14X2dl dF9zY3JlZW5zaXplIChzd3AsIHNocCkKLSB9Ci0gI2VuZGlmCi0gCi0rI2lmIGRlZmluZWQgKF9f TUlOR1czMl9fKQotK3N0YXRpYyB2b2lkCi0rX3dpbl9nZXRfc2NyZWVuc2l6ZSAoc3dwLCBzaHAp Ci0rICAgICBpbnQgKnN3cCwgKnNocDsKLSt7Ci0rICBIQU5ETEUgaENvbk91dDsKLSsgIENPTlNP TEVfU0NSRUVOX0JVRkZFUl9JTkZPIHNjcjsKLSsKLSsgIGhDb25PdXQgPSBHZXRTdGRIYW5kbGUg KFNURF9PVVRQVVRfSEFORExFKTsKLSsgIGlmIChoQ29uT3V0ICE9IElOVkFMSURfSEFORExFX1ZB TFVFKQotKyAgICB7Ci0rICAgICAgaWYgKEdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZvIChoQ29u T3V0LCAmc2NyKSkKLSsJewotKwkgICpzd3AgPSBzY3IuZHdTaXplLlg7Ci0rCSAgKnNocCA9IHNj ci5zcldpbmRvdy5Cb3R0b20gLSBzY3Iuc3JXaW5kb3cuVG9wICsgMTsKLSsJfQotKyAgICB9Ci0r fQotKyNlbmRpZgotKwotIC8qIEdldCByZWFkbGluZSdzIGlkZWEgb2YgdGhlIHNjcmVlbiBzaXpl LiAgVFRZIGlzIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4KLSAgICB0byB0aGUgdGVybWluYWwuICBJ ZiBJR05PUkVfRU5WIGlzIHRydWUsIHdlIGRvIG5vdCBwYXkgYXR0ZW50aW9uIHRvIHRoZQotICAg IHZhbHVlcyBvZiAkTElORVMgYW5kICRDT0xVTU5TLiAgVGhlIHRlc3RzIGZvciBURVJNX1NUUklO R19CVUZGRVIgYmVpbmcKLUBAIC0yMzMsNyArMjY1LDkgQEAgX3JsX2dldF9zY3JlZW5fc2l6ZSAo dHR5LCBpZ25vcmVfZW52KQotICNlbmRpZgotIAotICNpZiBkZWZpbmVkIChfX0VNWF9fKQotLSAg X2VteF9nZXRfc2NyZWVuc2l6ZSAoJl9ybF9zY3JlZW53aWR0aCwgJl9ybF9zY3JlZW5oZWlnaHQp OwotKyAgX2VteF9nZXRfc2NyZWVuc2l6ZSAoJndjLCAmd3IpOwotKyNlbGlmIGRlZmluZWQgKF9f TUlOR1czMl9fKQotKyAgX3dpbl9nZXRfc2NyZWVuc2l6ZSAoJndjLCAmd3IpOwotICNlbmRpZgot IAotICAgaWYgKGlnbm9yZV9lbnYgfHwgcmxfcHJlZmVyX2Vudl93aW5zaXplID09IDApCi1AQCAt MzQ3LDI0ICszODEsMjQgQEAgcmxfcmVzZXRfc2NyZWVuX3NpemUgKCkKLSB2b2lkCi0gcmxfcmVz aXplX3Rlcm1pbmFsICgpCi0gewotLSAgaWYgKHJlYWRsaW5lX2VjaG9pbmdfcCkKLSsgIF9ybF9n ZXRfc2NyZWVuX3NpemUgKGZpbGVubyAocmxfaW5zdHJlYW0pLCAxKTsKLSsgIGlmIChfcmxfZWNo b2luZ19wKQotICAgICB7Ci0tICAgICAgX3JsX2dldF9zY3JlZW5fc2l6ZSAoZmlsZW5vIChybF9p bnN0cmVhbSksIDEpOwotICAgICAgIGlmIChDVVNUT01fUkVESVNQTEFZX0ZVTkMgKCkpCi0gCXJs X2ZvcmNlZF91cGRhdGVfZGlzcGxheSAoKTsKLS0gICAgICBlbHNlCi0rICAgICAgZWxzZSBpZiAo UkxfSVNTVEFURShSTF9TVEFURV9SRURJU1BMQVlJTkcpID09IDApCi0gCV9ybF9yZWRpc3BsYXlf YWZ0ZXJfc2lnd2luY2ggKCk7Ci0gICAgIH0KLSB9Ci0gCi0gc3RydWN0IF90Y19zdHJpbmcgewot LSAgICAgY29uc3QgY2hhciAqdGNfdmFyOwotKyAgICAgY29uc3QgY2hhciAqIGNvbnN0IHRjX3Zh cjsKLSAgICAgIGNoYXIgKip0Y192YWx1ZTsKLSB9OwotIAotIC8qIFRoaXMgc2hvdWxkIGJlIGtl cHQgc29ydGVkLCBqdXN0IGluIGNhc2Ugd2UgZGVjaWRlIHRvIGNoYW5nZSB0aGUKLSAgICBzZWFy Y2ggYWxnb3JpdGhtIHRvIHNvbWV0aGluZyBzbWFydGVyLiAqLwotLXN0YXRpYyBzdHJ1Y3QgX3Rj X3N0cmluZyB0Y19zdHJpbmdzW10gPQotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgX3RjX3N0cmluZyB0 Y19zdHJpbmdzW10gPQotIHsKLSAgIHsgIkA3IiwgJl9ybF90ZXJtX2F0NyB9LAotICAgeyAiREMi LCAmX3JsX3Rlcm1fREMgfSwKLUBAIC0zODksOSArNDIzLDcgQEAgc3RhdGljIHN0cnVjdCBfdGNf c3RyaW5nIHRjX3N0cmluZ3NbXSA9Ci0gICB7ICJsZSIsICZfcmxfdGVybV9iYWNrc3BhY2UgfSwK LSAgIHsgIm1tIiwgJl9ybF90ZXJtX21tIH0sCi0gICB7ICJtbyIsICZfcmxfdGVybV9tbyB9LAot LSNpZiBkZWZpbmVkIChIQUNLX1RFUk1DQVBfTU9USU9OKQotICAgeyAibmQiLCAmX3JsX3Rlcm1f Zm9yd2FyZF9jaGFyIH0sCi0tI2VuZGlmCi0gICB7ICJwYyIsICZfcmxfdGVybV9wYyB9LAotICAg eyAidXAiLCAmX3JsX3Rlcm1fdXAgfSwKLSAgIHsgInZiIiwgJl9ybF92aXNpYmxlX2JlbGwgfSwK LUBAIC01MDUsOSArNTM3LDcgQEAgX3JsX2luaXRfdGVybWluYWxfaW8gKHRlcm1pbmFsX25hbWUp Ci0gICAgICAgX3JsX3Rlcm1fa3MgPSBfcmxfdGVybV9rZSA9IF9ybF90ZXJtX2F0NyA9IChjaGFy ICopTlVMTDsKLSAgICAgICBfcmxfdGVybV9tbSA9IF9ybF90ZXJtX21vID0gKGNoYXIgKilOVUxM OwotICAgICAgIF9ybF90ZXJtX3ZlID0gX3JsX3Rlcm1fdnMgPSAoY2hhciAqKU5VTEw7Ci0tI2lm IGRlZmluZWQgKEhBQ0tfVEVSTUNBUF9NT1RJT04pCi0tICAgICAgdGVybV9mb3J3YXJkX2NoYXIg PSAoY2hhciAqKU5VTEw7Ci0tI2VuZGlmCi0rICAgICAgX3JsX3Rlcm1fZm9yd2FyZF9jaGFyID0g KGNoYXIgKilOVUxMOwotICAgICAgIF9ybF90ZXJtaW5hbF9jYW5faW5zZXJ0ID0gdGVybV9oYXNf bWV0YSA9IDA7Ci0gCi0gICAgICAgLyogUmVhc29uYWJsZSBkZWZhdWx0cyBmb3IgdGdvdG8oKS4g IFJlYWRsaW5lIGN1cnJlbnRseSBvbmx5IHVzZXMKLUBAIC01NDYsOCArNTc2LDggQEAgX3JsX2lu aXRfdGVybWluYWxfaW8gKHRlcm1pbmFsX25hbWUpCi0gCi0gICAvKiBDaGVjayB0byBzZWUgaWYg dGhpcyB0ZXJtaW5hbCBoYXMgYSBtZXRhIGtleSBhbmQgY2xlYXIgdGhlIGNhcGFiaWxpdHkKLSAg ICAgIHZhcmlhYmxlcyBpZiB0aGVyZSBpcyBub25lLiAqLwotLSAgdGVybV9oYXNfbWV0YSA9ICh0 Z2V0ZmxhZyAoImttIikgfHwgdGdldGZsYWcgKCJNVCIpKTsKLS0gIGlmICghdGVybV9oYXNfbWV0 YSkKLSsgIHRlcm1faGFzX21ldGEgPSB0Z2V0ZmxhZyAoImttIikgIT0gMDsKLSsgIGlmICh0ZXJt X2hhc19tZXRhID09IDApCi0gICAgIF9ybF90ZXJtX21tID0gX3JsX3Rlcm1fbW8gPSAoY2hhciAq KU5VTEw7Ci0gCi0gI2VuZGlmIC8qICFfX01TRE9TX18gKi8KLUBAIC02NjMsMTAgKzY5MywxMCBA QCBfcmxfYmFja3NwYWNlIChjb3VudCkKLSBpbnQKLSBybF9jcmxmICgpCi0gewotLSNpZiBkZWZp bmVkIChORVdfVFRZX0RSSVZFUikKLSsjaWYgZGVmaW5lZCAoTkVXX1RUWV9EUklWRVIpIHx8IGRl ZmluZWQgKF9fTUlOVF9fKQotICAgaWYgKF9ybF90ZXJtX2NyKQotICAgICB0cHV0cyAoX3JsX3Rl cm1fY3IsIDEsIF9ybF9vdXRwdXRfY2hhcmFjdGVyX2Z1bmN0aW9uKTsKLS0jZW5kaWYgLyogTkVX X1RUWV9EUklWRVIgKi8KLSsjZW5kaWYgLyogTkVXX1RUWV9EUklWRVIgfHwgX19NSU5UX18gKi8K LSAgIHB1dGMgKCdcbicsIF9ybF9vdXRfc3RyZWFtKTsKLSAgIHJldHVybiAwOwotIH0KLUBAIC02 NzUsNyArNzA1LDcgQEAgcmxfY3JsZiAoKQotIGludAotIHJsX2RpbmcgKCkKLSB7Ci0tICBpZiAo cmVhZGxpbmVfZWNob2luZ19wKQotKyAgaWYgKF9ybF9lY2hvaW5nX3ApCi0gICAgIHsKLSAgICAg ICBzd2l0Y2ggKF9ybF9iZWxsX3ByZWZlcmVuY2UpCi0gICAgICAgICB7Ci1JbmRleDogZ2RiLTcu Mi45MC4yMDExMDcwMy9yZWFkbGluZS90ZXh0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkw LjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvdGV4dC5jCTIwMTEtMDctMDMgMTA6NDA6NTMuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFkbGluZS90ZXh0LmMJMjAxMS0w Ny0wMyAxMDo0MToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDI0ICsxLDI0IEBACi0gLyogdGV4 dC5jIC0tIHRleHQgaGFuZGxpbmcgY29tbWFuZHMgZm9yIHJlYWRsaW5lLiAqLwotIAotLS8qIENv cHlyaWdodCAoQykgMTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8q IENvcHlyaWdodCAoQykgMTk4Ny0yMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot IAotLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBs aWJyYXJ5IGZvcgotLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlu cHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5n IGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5n LiAgICAgIAotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgot KyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJh cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVs LCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUs IGFuZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBM SUNFTlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFj ZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAg IGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCi0rKi8KLSsKLSAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVm aW5lZCAoSEFWRV9DT05GSUdfSCkKLUBAIC02Nyw2ICs2NywxMCBAQCBzdGF0aWMgaW50IF9ybF9p bnNlcnRfbmV4dF9jYWxsYmFjayBQQVJBCi0gc3RhdGljIGludCBfcmxfY2hhcl9zZWFyY2hfY2Fs bGJhY2sgUEFSQU1TKChfcmxfY2FsbGJhY2tfZ2VuZXJpY19hcmcgKikpOwotICNlbmRpZgotIAot Ky8qIFRoZSBsYXJnZXN0IGNodW5rIG9mIHRleHQgdGhhdCBjYW4gYmUgaW5zZXJ0ZWQgaW4gb25l IGNhbGwgdG8KLSsgICBybF9pbnNlcnRfdGV4dC4gIFRleHQgYmxvY2tzIGxhcmdlciB0aGFuIHRo aXMgYXJlIGRpdmlkZWQuICovCi0rI2RlZmluZSBURVhUX0NPVU5UX01BWAkxMDI0Ci0rCi0gLyog KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiAqLwotIC8qCQkJCQkJCQkgICAgKi8KLSAvKgkJCUluc2VydCBhbmQgRGVsZXRlCQkJ ICAgICovCi1AQCAtMTQ2LDcgKzE1MCw3IEBAIHJsX2RlbGV0ZV90ZXh0IChmcm9tLCB0bykKLSAg IGlmIChfcmxfZG9pbmdfYW5fdW5kbyA9PSAwKQotICAgICBybF9hZGRfdW5kbyAoVU5ET19ERUxF VEUsIGZyb20sIHRvLCB0ZXh0KTsKLSAgIGVsc2UKLS0gICAgZnJlZSAodGV4dCk7Ci0rICAgIHhm cmVlICh0ZXh0KTsKLSAKLSAgIHJsX2VuZCAtPSBkaWZmOwotICAgcmxfbGluZV9idWZmZXJbcmxf ZW5kXSA9ICdcMCc7Ci1AQCAtMTg1LDEwICsxODksMTMgQEAgX3JsX3JlcGxhY2VfdGV4dCAodGV4 dCwgc3RhcnQsIGVuZCkKLSB7Ci0gICBpbnQgbjsKLSAKLSsgIG4gPSAwOwotICAgcmxfYmVnaW5f dW5kb19ncm91cCAoKTsKLS0gIHJsX2RlbGV0ZV90ZXh0IChzdGFydCwgZW5kICsgMSk7Ci0rICBp ZiAoc3RhcnQgPD0gZW5kKQotKyAgICBybF9kZWxldGVfdGV4dCAoc3RhcnQsIGVuZCArIDEpOwot ICAgcmxfcG9pbnQgPSBzdGFydDsKLS0gIG4gPSBybF9pbnNlcnRfdGV4dCAodGV4dCk7Ci0rICBp ZiAoKnRleHQpCi0rICAgIG4gPSBybF9pbnNlcnRfdGV4dCAodGV4dCk7Ci0gICBybF9lbmRfdW5k b19ncm91cCAoKTsKLSAKLSAgIHJldHVybiBuOwotQEAgLTI1OCwxMSArMjY1LDEzIEBAIHJsX2Zv cndhcmRfYnl0ZSAoY291bnQsIGtleSkKLSAKLSAgIGlmIChjb3VudCA+IDApCi0gICAgIHsKLS0g ICAgICBpbnQgZW5kID0gcmxfcG9pbnQgKyBjb3VudDsKLSsgICAgICBpbnQgZW5kLCBsZW5kOwot KwotKyAgICAgIGVuZCA9IHJsX3BvaW50ICsgY291bnQ7Ci0gI2lmIGRlZmluZWQgKFZJX01PREUp Ci0tICAgICAgaW50IGxlbmQgPSBybF9lbmQgPiAwID8gcmxfZW5kIC0gKHJsX2VkaXRpbmdfbW9k ZSA9PSB2aV9tb2RlKSA6IHJsX2VuZDsKLSsgICAgICBsZW5kID0gcmxfZW5kID4gMCA/IHJsX2Vu ZCAtIChWSV9DT01NQU5EX01PREUoKSkgOiBybF9lbmQ7Ci0gI2Vsc2UKLS0gICAgICBpbnQgbGVu ZCA9IHJsX2VuZDsKLSsgICAgICBsZW5kID0gcmxfZW5kOwotICNlbmRpZgotIAotICAgICAgIGlm IChlbmQgPiBsZW5kKQotQEAgLTI4MCw2ICsyODksMzEgQEAgcmxfZm9yd2FyZF9ieXRlIChjb3Vu dCwga2V5KQotICAgcmV0dXJuIDA7Ci0gfQotIAotK2ludAotK19ybF9mb3J3YXJkX2NoYXJfaW50 ZXJuYWwgKGNvdW50KQotKyAgICAgaW50IGNvdW50OwotK3sKLSsgIGludCBwb2ludDsKLSsKLSsj aWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKLSsgIHBvaW50ID0gX3JsX2ZpbmRfbmV4dF9t YmNoYXIgKHJsX2xpbmVfYnVmZmVyLCBybF9wb2ludCwgY291bnQsIE1CX0ZJTkRfTk9OWkVSTyk7 Ci0rCi0rI2lmIGRlZmluZWQgKFZJX01PREUpCi0rICBpZiAocG9pbnQgPj0gcmxfZW5kICYmIFZJ X0NPTU1BTkRfTU9ERSgpKQotKyAgICBwb2ludCA9IF9ybF9maW5kX3ByZXZfbWJjaGFyIChybF9s aW5lX2J1ZmZlciwgcmxfZW5kLCBNQl9GSU5EX05PTlpFUk8pOwotKyNlbmRpZgotKwotKyAgICBp ZiAocmxfZW5kIDwgMCkKLSsJcmxfZW5kID0gMDsKLSsjZWxzZQotKyAgcG9pbnQgPSBybF9wb2lu dCArIGNvdW50OwotKyAgaWYgKHBvaW50ID4gcmxfZW5kKQotKyAgICBwb2ludCA9IHJsX2VuZDsK LSsjZW5kaWYKLSsKLSsgIHJldHVybiAocG9pbnQpOwotK30KLSsKLSAjaWYgZGVmaW5lZCAoSEFO RExFX01VTFRJQllURSkKLSAvKiBNb3ZlIGZvcndhcmQgQ09VTlQgY2hhcmFjdGVycy4gKi8KLSBp bnQKLUBAIC0yOTYsMjAgKzMzMCwxOCBAQCBybF9mb3J3YXJkX2NoYXIgKGNvdW50LCBrZXkpCi0g Ci0gICBpZiAoY291bnQgPiAwKQotICAgICB7Ci0tICAgICAgcG9pbnQgPSBfcmxfZmluZF9uZXh0 X21iY2hhciAocmxfbGluZV9idWZmZXIsIHJsX3BvaW50LCBjb3VudCwgTUJfRklORF9OT05aRVJP KTsKLSsgICAgICBpZiAocmxfcG9pbnQgPT0gcmxfZW5kICYmIEVNQUNTX01PREUoKSkKLSsJewot KwkgIHJsX2RpbmcgKCk7Ci0rCSAgcmV0dXJuIDA7Ci0rCX0KLSAKLS0jaWYgZGVmaW5lZCAoVklf TU9ERSkKLS0gICAgICBpZiAocmxfZW5kIDw9IHBvaW50ICYmIHJsX2VkaXRpbmdfbW9kZSA9PSB2 aV9tb2RlKQotLQlwb2ludCA9IF9ybF9maW5kX3ByZXZfbWJjaGFyIChybF9saW5lX2J1ZmZlciwg cmxfZW5kLCBNQl9GSU5EX05PTlpFUk8pOwotLSNlbmRpZgotKyAgICAgIHBvaW50ID0gX3JsX2Zv cndhcmRfY2hhcl9pbnRlcm5hbCAoY291bnQpOwotIAotICAgICAgIGlmIChybF9wb2ludCA9PSBw b2ludCkKLSAJcmxfZGluZyAoKTsKLSAKLSAgICAgICBybF9wb2ludCA9IHBvaW50OwotLQotLSAg ICAgIGlmIChybF9lbmQgPCAwKQotLQlybF9lbmQgPSAwOwotICAgICB9Ci0gCi0gICByZXR1cm4g MDsKLUBAIC01NjUsNiArNTk3LDIxIEBAIHJsX2NsZWFyX3NjcmVlbiAoY291bnQsIGtleSkKLSB9 Ci0gCi0gaW50Ci0rcmxfc2tpcF9jc2lfc2VxdWVuY2UgKGNvdW50LCBrZXkpCi0rICAgICBpbnQg Y291bnQsIGtleTsKLSt7Ci0rICBpbnQgY2g7Ci0rCi0rICBSTF9TRVRTVEFURSAoUkxfU1RBVEVf TU9SRUlOUFVUKTsKLSsgIGRvCi0rICAgIGNoID0gcmxfcmVhZF9rZXkgKCk7Ci0rICB3aGlsZSAo Y2ggPj0gMHgyMCAmJiBjaCA8IDB4NDApOwotKyAgUkxfVU5TRVRTVEFURSAoUkxfU1RBVEVfTU9S RUlOUFVUKTsKLSsKLSsgIHJldHVybiAwOwotK30KLSsKLStpbnQKLSBybF9hcnJvd19rZXlzIChj b3VudCwgYykKLSAgICAgIGludCBjb3VudCwgYzsKLSB7Ci1AQCAtNzAxLDcgKzc0OCw3IEBAIF9y bF9pbnNlcnRfY2hhciAoY291bnQsIGMpCi0gCSAgCi0gICAvKiBJZiB3ZSBjYW4gb3B0aW1pemUs IHRoZW4gZG8gaXQuICBCdXQgZG9uJ3QgbGV0IHBlb3BsZSBjcmFzaAotICAgICAgcmVhZGxpbmUg YmVjYXVzZSBvZiBleHRyYSBsYXJnZSBhcmd1bWVudHMuICovCi0tICBpZiAoY291bnQgPiAxICYm IGNvdW50IDw9IDEwMjQpCi0rICBpZiAoY291bnQgPiAxICYmIGNvdW50IDw9IFRFWFRfQ09VTlRf TUFYKQotICAgICB7Ci0gI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCi0gICAgICAgc3Ry aW5nX3NpemUgPSBjb3VudCAqIGluY29taW5nX2xlbmd0aDsKLUBAIC03MjQsMTYgKzc3MSwxNiBA QCBfcmxfaW5zZXJ0X2NoYXIgKGNvdW50LCBjKQotIAotICAgICAgIHN0cmluZ1tpXSA9ICdcMCc7 Ci0gICAgICAgcmxfaW5zZXJ0X3RleHQgKHN0cmluZyk7Ci0tICAgICAgZnJlZSAoc3RyaW5nKTsK LSsgICAgICB4ZnJlZSAoc3RyaW5nKTsKLSAKLSAgICAgICByZXR1cm4gMDsKLSAgICAgfQotIAot LSAgaWYgKGNvdW50ID4gMTAyNCkKLSsgIGlmIChjb3VudCA+IFRFWFRfQ09VTlRfTUFYKQotICAg ICB7Ci0gICAgICAgaW50IGRlY3JlYXNlcjsKLSAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllU RSkKLS0gICAgICBzdHJpbmdfc2l6ZSA9IGluY29taW5nX2xlbmd0aCAqIDEwMjQ7Ci0rICAgICAg c3RyaW5nX3NpemUgPSBpbmNvbWluZ19sZW5ndGggKiBURVhUX0NPVU5UX01BWDsKLSAgICAgICBz dHJpbmcgPSAoY2hhciAqKXhtYWxsb2MgKDEgKyBzdHJpbmdfc2l6ZSk7Ci0gCi0gICAgICAgaSA9 IDA7Ci1AQCAtNzQ1LDI0ICs3OTIsMjQgQEAgX3JsX2luc2VydF9jaGFyIChjb3VudCwgYykKLSAK LSAgICAgICB3aGlsZSAoY291bnQpCi0gCXsKLS0JICBkZWNyZWFzZXIgPSAoY291bnQgPiAxMDI0 KSA/IDEwMjQgOiBjb3VudDsKLSsJICBkZWNyZWFzZXIgPSAoY291bnQgPiBURVhUX0NPVU5UX01B WCkgPyBURVhUX0NPVU5UX01BWCA6IGNvdW50OwotIAkgIHN0cmluZ1tkZWNyZWFzZXIqaW5jb21p bmdfbGVuZ3RoXSA9ICdcMCc7Ci0gCSAgcmxfaW5zZXJ0X3RleHQgKHN0cmluZyk7Ci0gCSAgY291 bnQgLT0gZGVjcmVhc2VyOwotIAl9Ci0gCi0tICAgICAgZnJlZSAoc3RyaW5nKTsKLSsgICAgICB4 ZnJlZSAoc3RyaW5nKTsKLSAgICAgICBpbmNvbWluZ19sZW5ndGggPSAwOwotICAgICAgIHN0b3Jl ZF9jb3VudCA9IDA7Ci0gI2Vsc2UgLyogIUhBTkRMRV9NVUxUSUJZVEUgKi8KLS0gICAgICBjaGFy IHN0clsxMDI0KzFdOwotKyAgICAgIGNoYXIgc3RyW1RFWFRfQ09VTlRfTUFYKzFdOwotIAotLSAg ICAgIGZvciAoaSA9IDA7IGkgPCAxMDI0OyBpKyspCi0rICAgICAgZm9yIChpID0gMDsgaSA8IFRF WFRfQ09VTlRfTUFYOyBpKyspCi0gCXN0cltpXSA9IGM7Ci0gCi0gICAgICAgd2hpbGUgKGNvdW50 KQotIAl7Ci0tCSAgZGVjcmVhc2VyID0gKGNvdW50ID4gMTAyNCA/IDEwMjQgOiBjb3VudCk7Ci0r CSAgZGVjcmVhc2VyID0gKGNvdW50ID4gVEVYVF9DT1VOVF9NQVggPyBURVhUX0NPVU5UX01BWCA6 IGNvdW50KTsKLSAJICBzdHJbZGVjcmVhc2VyXSA9ICdcMCc7Ci0gCSAgcmxfaW5zZXJ0X3RleHQg KHN0cik7Ci0gCSAgY291bnQgLT0gZGVjcmVhc2VyOwotQEAgLTc3Nyw4ICs4MjQsOSBAQCBfcmxf aW5zZXJ0X2NoYXIgKGNvdW50LCBjKQotICAgICAgIC8qIFdlIGFyZSBpbnNlcnRpbmcgYSBzaW5n bGUgY2hhcmFjdGVyLgotIAkgSWYgdGhlcmUgaXMgcGVuZGluZyBpbnB1dCwgdGhlbiBtYWtlIGEg c3RyaW5nIG9mIGFsbCBvZiB0aGUKLSAJIHBlbmRpbmcgY2hhcmFjdGVycyB0aGF0IGFyZSBib3Vu ZCB0byBybF9pbnNlcnQsIGFuZCBpbnNlcnQKLS0JIHRoZW0gYWxsLiAqLwotLSAgICAgIGlmIChf cmxfYW55X3R5cGVpbiAoKSkKLSsJIHRoZW0gYWxsLiAgRG9uJ3QgZG8gdGhpcyBpZiB3ZSdyZSBj dXJyZW50IHJlYWRpbmcgaW5wdXQgZnJvbQotKwkgYSBtYWNyby4gKi8KLSsgICAgICBpZiAoKFJM X0lTU1RBVEUgKFJMX1NUQVRFX01BQ1JPSU5QVVQpID09IDApICYmIF9ybF9hbnlfdHlwZWluICgp KQotIAlfcmxfaW5zZXJ0X3R5cGVpbiAoYyk7Ci0gICAgICAgZWxzZQotIAl7Ci1AQCAtODU3LDYg KzkwNSw5IEBAIF9ybF9pbnNlcnRfbmV4dCAoY291bnQpCi0gICBjID0gcmxfcmVhZF9rZXkgKCk7 Ci0gICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRFX01PUkVJTlBVVCk7Ci0gCi0rICBpZiAoYyA8IDAp Ci0rICAgIHJldHVybiAtMTsKLSsKLSAjaWYgZGVmaW5lZCAoSEFORExFX1NJR05BTFMpCi0gICBp ZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfQ0FMTEJBQ0spID09IDApCi0gICAgIF9ybF9yZXN0b3Jl X3R0eV9zaWduYWxzICgpOwotQEAgLTk0MCw3ICs5OTEsNyBAQCBybF9uZXdsaW5lIChjb3VudCwg a2V5KQotICAgaWYgKHJsX2VyYXNlX2VtcHR5X2xpbmUgJiYgcmxfcG9pbnQgPT0gMCAmJiBybF9l bmQgPT0gMCkKLSAgICAgcmV0dXJuIDA7Ci0gCi0tICBpZiAocmVhZGxpbmVfZWNob2luZ19wKQot KyAgaWYgKF9ybF9lY2hvaW5nX3ApCi0gICAgIF9ybF91cGRhdGVfZmluYWwgKCk7Ci0gICByZXR1 cm4gMDsKLSB9Ci1AQCAtMTA3MSw2ICsxMTIyLDggQEAgaW50Ci0gcmxfZGVsZXRlIChjb3VudCwg a2V5KQotICAgICAgaW50IGNvdW50LCBrZXk7Ci0gewotKyAgaW50IHhwb2ludDsKLSsKLSAgIGlm IChjb3VudCA8IDApCi0gICAgIHJldHVybiAoX3JsX3J1Ym91dF9jaGFyICgtY291bnQsIGtleSkp OwotIAotQEAgLTEwODIsMjEgKzExMzUsMTkgQEAgcmxfZGVsZXRlIChjb3VudCwga2V5KQotIAot ICAgaWYgKGNvdW50ID4gMSB8fCBybF9leHBsaWNpdF9hcmcpCi0gICAgIHsKLS0gICAgICBpbnQg b3JpZ19wb2ludCA9IHJsX3BvaW50OwotKyAgICAgIHhwb2ludCA9IHJsX3BvaW50OwotICAgICAg IGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCi0gCXJsX2Zvcndh cmRfY2hhciAoY291bnQsIGtleSk7Ci0gICAgICAgZWxzZQotIAlybF9mb3J3YXJkX2J5dGUgKGNv dW50LCBrZXkpOwotIAotLSAgICAgIHJsX2tpbGxfdGV4dCAob3JpZ19wb2ludCwgcmxfcG9pbnQp OwotLSAgICAgIHJsX3BvaW50ID0gb3JpZ19wb2ludDsKLSsgICAgICBybF9raWxsX3RleHQgKHhw b2ludCwgcmxfcG9pbnQpOwotKyAgICAgIHJsX3BvaW50ID0geHBvaW50OwotICAgICB9Ci0gICBl bHNlCi0gICAgIHsKLS0gICAgICBpbnQgbmV3X3BvaW50OwotLQotLSAgICAgIG5ld19wb2ludCA9 IE1CX05FWFRDSEFSIChybF9saW5lX2J1ZmZlciwgcmxfcG9pbnQsIDEsIE1CX0ZJTkRfTk9OWkVS Tyk7Ci0tICAgICAgcmxfZGVsZXRlX3RleHQgKHJsX3BvaW50LCBuZXdfcG9pbnQpOwotKyAgICAg IHhwb2ludCA9IE1CX05FWFRDSEFSIChybF9saW5lX2J1ZmZlciwgcmxfcG9pbnQsIDEsIE1CX0ZJ TkRfTk9OWkVSTyk7Ci0rICAgICAgcmxfZGVsZXRlX3RleHQgKHJsX3BvaW50LCB4cG9pbnQpOwot ICAgICB9Ci0gICByZXR1cm4gMDsKLSB9Ci1AQCAtMTEyMCw3ICsxMTcxLDcgQEAgaW50Ci0gcmxf ZGVsZXRlX2hvcml6b250YWxfc3BhY2UgKGNvdW50LCBpZ25vcmUpCi0gICAgICBpbnQgY291bnQs IGlnbm9yZTsKLSB7Ci0tICBpbnQgc3RhcnQgPSBybF9wb2ludDsKLSsgIGludCBzdGFydDsKLSAK LSAgIHdoaWxlIChybF9wb2ludCAmJiB3aGl0ZXNwYWNlIChybF9saW5lX2J1ZmZlcltybF9wb2lu dCAtIDFdKSkKLSAgICAgcmxfcG9pbnQtLTsKLUBAIC0xMjM3LDggKzEyODgsOSBAQCBybF9jaGFu Z2VfY2FzZSAoY291bnQsIG9wKQotICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQotICAg d2NoYXJfdCB3YywgbndjOwotICAgY2hhciBtYltNQl9MRU5fTUFYKzFdOwotLSAgaW50IG1ibGVu LCBwOwotLSAgbWJzdGF0ZV90IHBzOwotKyAgaW50IG1sZW47Ci0rICBzaXplX3QgbTsKLSsgIG1i c3RhdGVfdCBtcHM7Ci0gI2VuZGlmCi0gCi0gICBzdGFydCA9IHJsX3BvaW50OwotQEAgLTEyNTUs NyArMTMwNyw3IEBAIHJsX2NoYW5nZV9jYXNlIChjb3VudCwgb3ApCi0gICAgIFNXQVAgKHN0YXJ0 LCBlbmQpOwotIAotICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQotLSAgbWVtc2V0ICgm cHMsIDAsIHNpemVvZiAobWJzdGF0ZV90KSk7Ci0rICBtZW1zZXQgKCZtcHMsIDAsIHNpemVvZiAo bWJzdGF0ZV90KSk7Ci0gI2VuZGlmCi0gCi0gICAvKiBXZSBhcmUgZ29pbmcgdG8gbW9kaWZ5IHNv bWUgdGV4dCwgc28gbGV0J3MgcHJlcGFyZSB0byB1bmRvIGl0LiAqLwotQEAgLTEyOTAsMTUgKzEz NDIsMTkgQEAgcmxfY2hhbmdlX2Nhc2UgKGNvdW50LCBvcCkKLSAjaWYgZGVmaW5lZCAoSEFORExF X01VTFRJQllURSkKLSAgICAgICBlbHNlCi0gCXsKLS0JICBtYnJ0b3djICgmd2MsIHJsX2xpbmVf YnVmZmVyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCAmcHMpOwotKwkgIG0gPSBtYnJ0b3djICgmd2Ms IHJsX2xpbmVfYnVmZmVyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCAmbXBzKTsKLSsJICBpZiAoTUJf SU5WQUxJRENIIChtKSkKLSsJICAgIHdjID0gKHdjaGFyX3QpcmxfbGluZV9idWZmZXJbc3RhcnRd OwotKwkgIGVsc2UgaWYgKE1CX05VTExXQ0ggKG0pKQotKwkgICAgd2MgPSBMJ1wwJzsKLSAJICBu d2MgPSAobm9wID09IFVwQ2FzZSkgPyBfcmxfdG9fd3VwcGVyICh3YykgOiBfcmxfdG9fd2xvd2Vy ICh3Yyk7Ci0gCSAgaWYgIChud2MgIT0gd2MpCS8qICBqdXN0IHNraXAgdW5jaGFuZ2VkIGNoYXJh Y3RlcnMgKi8KLSAJICAgIHsKLS0JICAgICAgbWJsZW4gPSB3Y3J0b21iIChtYiwgbndjLCAmcHMp OwotLQkgICAgICBpZiAobWJsZW4gPiAwKQotLQkJbWJbbWJsZW5dID0gJ1wwJzsKLSsJICAgICAg bWxlbiA9IHdjcnRvbWIgKG1iLCBud2MsICZtcHMpOwotKwkgICAgICBpZiAobWxlbiA+IDApCi0r CQltYlttbGVuXSA9ICdcMCc7Ci0gCSAgICAgIC8qIEFzc3VtZSB0aGUgc2FtZSB3aWR0aCAqLwot LQkgICAgICBzdHJuY3B5IChybF9saW5lX2J1ZmZlciArIHN0YXJ0LCBtYiwgbWJsZW4pOwotKwkg ICAgICBzdHJuY3B5IChybF9saW5lX2J1ZmZlciArIHN0YXJ0LCBtYiwgbWxlbik7Ci0gCSAgICB9 Ci0gCX0KLSAjZW5kaWYKLUBAIC0xMzcxLDggKzE0MjcsOCBAQCBybF90cmFuc3Bvc2Vfd29yZHMg KGNvdW50LCBrZXkpCi0gCi0gICAvKiBJIHRoaW5rIHRoYXQgZG9lcyBpdC4gKi8KLSAgIHJsX2Vu ZF91bmRvX2dyb3VwICgpOwotLSAgZnJlZSAod29yZDEpOwotLSAgZnJlZSAod29yZDIpOwotKyAg eGZyZWUgKHdvcmQxKTsKLSsgIHhmcmVlICh3b3JkMik7Ci0gCi0gICByZXR1cm4gMDsKLSB9Ci1A QCAtMTQzMSw3ICsxNDg3LDcgQEAgcmxfdHJhbnNwb3NlX2NoYXJzIChjb3VudCwga2V5KQotICAg cmxfZW5kX3VuZG9fZ3JvdXAgKCk7Ci0gCi0gI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUp Ci0tICBmcmVlIChkdW1teSk7Ci0rICB4ZnJlZSAoZHVtbXkpOwotICNlbmRpZgotIAotICAgcmV0 dXJuIDA7Ci1AQCAtMTQ1OSw2ICsxNTE1LDkgQEAgX3JsX2NoYXJfc2VhcmNoX2ludGVybmFsIChj b3VudCwgZGlyLCBzYwotICAgaW50IHByZXBvczsKLSAjZW5kaWYKLSAKLSsgIGlmIChkaXIgPT0g MCkKLSsgICAgcmV0dXJuIC0xOwotKwotICAgcG9zID0gcmxfcG9pbnQ7Ci0gICBpbmMgPSAoZGly IDwgMCkgPyAtMSA6IDE7Ci0gICB3aGlsZSAoY291bnQpCi1AQCAtMTUyMCw2ICsxNTc5LDkgQEAg X3JsX2NoYXJfc2VhcmNoIChjb3VudCwgZmRpciwgYmRpcikKLSAKLSAgIG1iX2xlbiA9IF9ybF9y ZWFkX21iY2hhciAobWJjaGFyLCBNQl9MRU5fTUFYKTsKLSAKLSsgIGlmIChtYl9sZW4gPD0gMCkK LSsgICAgcmV0dXJuIC0xOwotKwotICAgaWYgKGNvdW50IDwgMCkKLSAgICAgcmV0dXJuIChfcmxf Y2hhcl9zZWFyY2hfaW50ZXJuYWwgKC1jb3VudCwgYmRpciwgbWJjaGFyLCBtYl9sZW4pKTsKLSAg IGVsc2UKLUBAIC0xNTM2LDYgKzE1OTgsOSBAQCBfcmxfY2hhcl9zZWFyY2ggKGNvdW50LCBmZGly LCBiZGlyKQotICAgYyA9IHJsX3JlYWRfa2V5ICgpOwotICAgUkxfVU5TRVRTVEFURShSTF9TVEFU RV9NT1JFSU5QVVQpOwotIAotKyAgaWYgKGMgPCAwKQotKyAgICByZXR1cm4gLTE7Ci0rCi0gICBp ZiAoY291bnQgPCAwKQotICAgICByZXR1cm4gKF9ybF9jaGFyX3NlYXJjaF9pbnRlcm5hbCAoLWNv dW50LCBiZGlyLCBjKSk7Ci0gICBlbHNlCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDcwMy9yZWFk bGluZS90aWxkZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3Jl YWRsaW5lL3RpbGRlLmMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3RpbGRlLmMJMjAxMS0wNy0wMyAxMDo0MToyMS4w MDAwMDAwMDAgKzAyMDAKLUBAIC0xLDIzICsxLDIzIEBACi0gLyogdGlsZGUuYyAtLSBUaWxkZSBl eHBhbnNpb24gY29kZSAofi9mb28gOj0gJEhPTUUvZm9vKS4gKi8KLSAKLS0vKiBDb3B5cmlnaHQg KEMpIDE5ODgsMTk4OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmln aHQgKEMpIDE5ODgtMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBU aGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgUmVhZGxpbmUsIGEgbGlicmFyeSBmb3IgcmVhZGluZyBs aW5lcwotLSAgIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0 aW5nLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAo UmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGgg aW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KLSAKLS0gICBSZWFkbGluZSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0 Ci0tICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkgdGhlCi0tICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQotLSAgIGxhdGVyIHZlcnNpb24uCi0t Ci0tICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwgYnV0Ci0tICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsg ICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0gCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIFJlYWRs aW5lOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLS0g ICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9u LCBNQSAwMjExMSBVU0EuICovCi0rICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqLwotIAotICNpZiBkZWZpbmVkIChI QVZFX0NPTkZJR19IKQotICMgIGluY2x1ZGUgPGNvbmZpZy5oPgotQEAgLTIzNiw3ICsyMzYsNyBA QCB0aWxkZV9leHBhbmQgKHN0cmluZykKLSAgICAgICBzdHJpbmcgKz0gZW5kOwotIAotICAgICAg IGV4cGFuc2lvbiA9IHRpbGRlX2V4cGFuZF93b3JkICh0aWxkZV93b3JkKTsKLS0gICAgICBmcmVl ICh0aWxkZV93b3JkKTsKLSsgICAgICB4ZnJlZSAodGlsZGVfd29yZCk7Ci0gCi0gICAgICAgbGVu ID0gc3RybGVuIChleHBhbnNpb24pOwotICNpZmRlZiBfX0NZR1dJTl9fCi1AQCAtMjUxLDcgKzI1 MSw3IEBAIHRpbGRlX2V4cGFuZCAoc3RyaW5nKQotIAkgIHN0cmNweSAocmVzdWx0ICsgcmVzdWx0 X2luZGV4LCBleHBhbnNpb24pOwotIAkgIHJlc3VsdF9pbmRleCArPSBsZW47Ci0gCX0KLS0gICAg ICBmcmVlIChleHBhbnNpb24pOwotKyAgICAgIHhmcmVlIChleHBhbnNpb24pOwotICAgICB9Ci0g Ci0gICByZXN1bHRbcmVzdWx0X2luZGV4XSA9ICdcMCc7Ci1AQCAtMzc3LDggKzM3Nyw4IEBAIHRp bGRlX2V4cGFuZF93b3JkIChmaWxlbmFtZSkKLSAgICAgICBpZiAoZXhwYW5zaW9uKQotIAl7Ci0g CSAgZGlybmFtZSA9IGdsdWVfcHJlZml4X2FuZF9zdWZmaXggKGV4cGFuc2lvbiwgZmlsZW5hbWUs IHVzZXJfbGVuKTsKLS0JICBmcmVlICh1c2VybmFtZSk7Ci0tCSAgZnJlZSAoZXhwYW5zaW9uKTsK LSsJICB4ZnJlZSAodXNlcm5hbWUpOwotKwkgIHhmcmVlIChleHBhbnNpb24pOwotIAkgIHJldHVy biAoZGlybmFtZSk7Ci0gCX0KLSAgICAgfQotQEAgLTQwMSwxMCArNDAxLDkgQEAgdGlsZGVfZXhw YW5kX3dvcmQgKGZpbGVuYW1lKQotIAkgIGlmIChleHBhbnNpb24pCi0gCSAgICB7Ci0gCSAgICAg IGRpcm5hbWUgPSBnbHVlX3ByZWZpeF9hbmRfc3VmZml4IChleHBhbnNpb24sIGZpbGVuYW1lLCB1 c2VyX2xlbik7Ci0tCSAgICAgIGZyZWUgKGV4cGFuc2lvbik7Ci0rCSAgICAgIHhmcmVlIChleHBh bnNpb24pOwotIAkgICAgfQotIAl9Ci0tICAgICAgZnJlZSAodXNlcm5hbWUpOwotICAgICAgIC8q IElmIHdlIGRvbid0IGhhdmUgYSBmYWlsdXJlIGhvb2ssIG9yIGlmIHRoZSBmYWlsdXJlIGhvb2sg ZGlkIG5vdAotIAkgZXhwYW5kIHRoZSB0aWxkZSwgcmV0dXJuIGEgY29weSBvZiB3aGF0IHdlIHdl cmUgcGFzc2VkLiAqLwotICAgICAgIGlmIChkaXJuYW1lID09IDApCi1AQCAtNDEyLDEwICs0MTEs MTEgQEAgdGlsZGVfZXhwYW5kX3dvcmQgKGZpbGVuYW1lKQotICAgICB9Ci0gI2lmIGRlZmluZWQg KEhBVkVfR0VUUFdFTlQpCi0gICBlbHNlCi0tICAgIHsKLS0gICAgICBmcmVlICh1c2VybmFtZSk7 Ci0tICAgICAgZGlybmFtZSA9IGdsdWVfcHJlZml4X2FuZF9zdWZmaXggKHVzZXJfZW50cnktPnB3 X2RpciwgZmlsZW5hbWUsIHVzZXJfbGVuKTsKLS0gICAgfQotKyAgICBkaXJuYW1lID0gZ2x1ZV9w cmVmaXhfYW5kX3N1ZmZpeCAodXNlcl9lbnRyeS0+cHdfZGlyLCBmaWxlbmFtZSwgdXNlcl9sZW4p OwotKyNlbmRpZgotKwotKyAgeGZyZWUgKHVzZXJuYW1lKTsKLSsjaWYgZGVmaW5lZCAoSEFWRV9H RVRQV0VOVCkKLSAgIGVuZHB3ZW50ICgpOwotICNlbmRpZgotICAgcmV0dXJuIChkaXJuYW1lKTsK LUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3RpbGRlLmgKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvdGlsZGUuaAkyMDExLTA3LTAz IDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxp bmUvdGlsZGUuaAkyMDExLTA3LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjUg KzEsMjQgQEAKLSAvKiB0aWxkZS5oOiBFeHRlcm5hbGx5IGF2YWlsYWJsZSB2YXJpYWJsZXMgYW5k IGZ1bmN0aW9uIGluIGxpYnRpbGRlLmEuICovCi0gCi0tLyogQ29weXJpZ2h0IChDKSAxOTkyIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk5Mi0yMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBjb250YWlu cyB0aGUgUmVhZGxpbmUgTGlicmFyeSAodGhlIExpYnJhcnkpLCBhIHNldCBvZgotKyAgIFRoaXMg ZmlsZSBjb250YWlucyB0aGUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIHNldCBvZgot ICAgIHJvdXRpbmVzIGZvciBwcm92aWRpbmcgRW1hY3Mgc3R5bGUgbGluZSBpbnB1dCB0byBwcm9n cmFtcyB0aGF0IGFzawotICAgIGZvciBpdC4KLSAKLS0gICBUaGUgTGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgUmVhZGxp bmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSAgIGFueSBsYXRlciB2ZXJzaW9u LgotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSAKLS0gICBUaGUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLCBidXQKLS0gICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLS0gICBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlz IGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYg eW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMw LCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0gCi0gI2lmICFkZWZpbmVkIChfVElMREVfSF8p Ci0gIyAgZGVmaW5lIF9USUxERV9IXwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxp bmUvdW5kby5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRs aW5lL3VuZG8uYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvdW5kby5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAw MDAwICswMjAwCi1AQCAtMSwyNSArMSwyNSBAQAotIC8qIHJlYWRsaW5lLmMgLS0gYSBnZW5lcmFs IGZhY2lsaXR5IGZvciByZWFkaW5nIGxpbmVzIG9mIGlucHV0Ci0gICAgd2l0aCBlbWFjcyBzdHls ZSBlZGl0aW5nIGFuZCBjb21wbGV0aW9uLiAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk4Nywg MTk4OSwgMTk5MiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQg KEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlz IGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IK LS0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlz dG9yeSBlZGl0aW5nLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUg TGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0 ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAK LS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQKLS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGlu ZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBv ZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBp cyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElm IHlvdSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMz MCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRo IFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgot KyovCi0rCi0gI2RlZmluZSBSRUFETElORV9MSUJSQVJZCi0gCi0gI2lmIGRlZmluZWQgKEhBVkVf Q09ORklHX0gpCi1AQCAtNTAsNiArNTAsOCBAQAotICNpbmNsdWRlICJybHByaXZhdGUuaCIKLSAj aW5jbHVkZSAieG1hbGxvYy5oIgotIAotK2V4dGVybiB2b2lkIHJlcGxhY2VfaGlzdG9yeV9kYXRh IFBBUkFNUygoaW50LCBoaXN0ZGF0YV90ICosIGhpc3RkYXRhX3QgKikpOwotKwotIC8qIE5vbi16 ZXJvIHRlbGxzIHJsX2RlbGV0ZV90ZXh0IGFuZCBybF9pbnNlcnRfdGV4dCB0byBub3QgYWRkIHRv Ci0gICAgdGhlIHVuZG8gbGlzdC4gKi8KLSBpbnQgX3JsX2RvaW5nX2FuX3VuZG8gPSAwOwotQEAg LTY2LDE5ICs2OCwzNSBAQCBVTkRPX0xJU1QgKnJsX3VuZG9fbGlzdCA9IChVTkRPX0xJU1QgKilO Ci0gLyoJCQkJCQkJCSAgICAqLwotIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSAKLS0vKiBSZW1lbWJlciBob3cg dG8gdW5kbyBzb21ldGhpbmcuICBDb25jYXRlbmF0ZSBzb21lIHVuZG9zIGlmIHRoYXQKLS0gICBz ZWVtcyByaWdodC4gKi8KLS12b2lkCi0tcmxfYWRkX3VuZG8gKHdoYXQsIHN0YXJ0LCBlbmQsIHRl eHQpCi0rc3RhdGljIFVORE9fTElTVCAqCi0rYWxsb2NfdW5kb19lbnRyeSAod2hhdCwgc3RhcnQs IGVuZCwgdGV4dCkKLSAgICAgIGVudW0gdW5kb19jb2RlIHdoYXQ7Ci0gICAgICBpbnQgc3RhcnQs IGVuZDsKLSAgICAgIGNoYXIgKnRleHQ7Ci0gewotLSAgVU5ET19MSVNUICp0ZW1wID0gKFVORE9f TElTVCAqKXhtYWxsb2MgKHNpemVvZiAoVU5ET19MSVNUKSk7Ci0rICBVTkRPX0xJU1QgKnRlbXA7 Ci0rCi0rICB0ZW1wID0gKFVORE9fTElTVCAqKXhtYWxsb2MgKHNpemVvZiAoVU5ET19MSVNUKSk7 Ci0gICB0ZW1wLT53aGF0ID0gd2hhdDsKLSAgIHRlbXAtPnN0YXJ0ID0gc3RhcnQ7Ci0gICB0ZW1w LT5lbmQgPSBlbmQ7Ci0gICB0ZW1wLT50ZXh0ID0gdGV4dDsKLSsKLSsgIHRlbXAtPm5leHQgPSAo VU5ET19MSVNUICopTlVMTDsKLSsgIHJldHVybiB0ZW1wOwotK30KLSsKLSsvKiBSZW1lbWJlciBo b3cgdG8gdW5kbyBzb21ldGhpbmcuICBDb25jYXRlbmF0ZSBzb21lIHVuZG9zIGlmIHRoYXQKLSsg ICBzZWVtcyByaWdodC4gKi8KLSt2b2lkCi0rcmxfYWRkX3VuZG8gKHdoYXQsIHN0YXJ0LCBlbmQs IHRleHQpCi0rICAgICBlbnVtIHVuZG9fY29kZSB3aGF0OwotKyAgICAgaW50IHN0YXJ0LCBlbmQ7 Ci0rICAgICBjaGFyICp0ZXh0OwotK3sKLSsgIFVORE9fTElTVCAqdGVtcDsKLSsKLSsgIHRlbXAg PSBhbGxvY191bmRvX2VudHJ5ICh3aGF0LCBzdGFydCwgZW5kLCB0ZXh0KTsKLSAgIHRlbXAtPm5l eHQgPSBybF91bmRvX2xpc3Q7Ci0gICBybF91bmRvX2xpc3QgPSB0ZW1wOwotIH0KLUBAIC04Nywx NyArMTA1LDYwIEBAIHJsX2FkZF91bmRvICh3aGF0LCBzdGFydCwgZW5kLCB0ZXh0KQotIHZvaWQK LSBybF9mcmVlX3VuZG9fbGlzdCAoKQotIHsKLSsgIFVORE9fTElTVCAqcmVsZWFzZSwgKm9yaWdf bGlzdDsKLSsKLSsgIG9yaWdfbGlzdCA9IHJsX3VuZG9fbGlzdDsKLSAgIHdoaWxlIChybF91bmRv X2xpc3QpCi0gICAgIHsKLS0gICAgICBVTkRPX0xJU1QgKnJlbGVhc2UgPSBybF91bmRvX2xpc3Q7 Ci0rICAgICAgcmVsZWFzZSA9IHJsX3VuZG9fbGlzdDsKLSAgICAgICBybF91bmRvX2xpc3QgPSBy bF91bmRvX2xpc3QtPm5leHQ7Ci0gCi0gICAgICAgaWYgKHJlbGVhc2UtPndoYXQgPT0gVU5ET19E RUxFVEUpCi0tCWZyZWUgKHJlbGVhc2UtPnRleHQpOwotKwl4ZnJlZSAocmVsZWFzZS0+dGV4dCk7 Ci0gCi0tICAgICAgZnJlZSAocmVsZWFzZSk7Ci0rICAgICAgeGZyZWUgKHJlbGVhc2UpOwotICAg ICB9Ci0gICBybF91bmRvX2xpc3QgPSAoVU5ET19MSVNUICopTlVMTDsKLSsgIHJlcGxhY2VfaGlz dG9yeV9kYXRhICgtMSwgKGhpc3RkYXRhX3QgKilvcmlnX2xpc3QsIChoaXN0ZGF0YV90ICopTlVM TCk7Ci0rfQotKwotK1VORE9fTElTVCAqCi0rX3JsX2NvcHlfdW5kb19lbnRyeSAoZW50cnkpCi0r ICAgICBVTkRPX0xJU1QgKmVudHJ5OwotK3sKLSsgIFVORE9fTElTVCAqbmV3OwotKwotKyAgbmV3 ID0gYWxsb2NfdW5kb19lbnRyeSAoZW50cnktPndoYXQsIGVudHJ5LT5zdGFydCwgZW50cnktPmVu ZCwgKGNoYXIgKilOVUxMKTsKLSsgIG5ldy0+dGV4dCA9IGVudHJ5LT50ZXh0ID8gc2F2ZXN0cmlu ZyAoZW50cnktPnRleHQpIDogMDsKLSsgIHJldHVybiBuZXc7Ci0rfQotKwotK1VORE9fTElTVCAq Ci0rX3JsX2NvcHlfdW5kb19saXN0IChoZWFkKQotKyAgICAgVU5ET19MSVNUICpoZWFkOwotK3sK LSsgIFVORE9fTElTVCAqbGlzdCwgKm5ldywgKnJvdmluZywgKmM7Ci0rCi0rICBpZiAoaGVhZCA9 PSAwKQotKyAgICByZXR1cm4gaGVhZDsKLSsKLSsgIGxpc3QgPSBoZWFkOwotKyAgbmV3ID0gMDsK LSsgIHdoaWxlIChsaXN0KQotKyAgICB7Ci0rICAgICAgYyA9IF9ybF9jb3B5X3VuZG9fZW50cnkg KGxpc3QpOwotKyAgICAgIGlmIChuZXcgPT0gMCkKLSsJcm92aW5nID0gbmV3ID0gYzsKLSsgICAg ICBlbHNlCi0rCXsKLSsJICByb3ZpbmctPm5leHQgPSBjOwotKwkgIHJvdmluZyA9IHJvdmluZy0+ bmV4dDsKLSsJfQotKyAgICAgIGxpc3QgPSBsaXN0LT5uZXh0OwotKyAgICB9Ci0rCi0rICByb3Zp bmctPm5leHQgPSAwOwotKyAgcmV0dXJuIG5ldzsKLSB9Ci0gCi0gLyogVW5kbyB0aGUgbmV4dCB0 aGluZyBpbiB0aGUgbGlzdC4gIFJldHVybiAwIGlmIHRoZXJlCi1AQCAtMTEzLDcgKzE3NCw3IEBA IHJsX2RvX3VuZG8gKCkKLSAgIHN0YXJ0ID0gZW5kID0gd2FpdGluZ19mb3JfYmVnaW4gPSAwOwot ICAgZG8KLSAgICAgewotLSAgICAgIGlmICghcmxfdW5kb19saXN0KQotKyAgICAgIGlmIChybF91 bmRvX2xpc3QgPT0gMCkKLSAJcmV0dXJuICgwKTsKLSAKLSAgICAgICBfcmxfZG9pbmdfYW5fdW5k byA9IDE7Ci1AQCAtMTMzLDcgKzE5NCw3IEBAIHJsX2RvX3VuZG8gKCkKLSAJY2FzZSBVTkRPX0RF TEVURToKLSAJICBybF9wb2ludCA9IHN0YXJ0OwotIAkgIHJsX2luc2VydF90ZXh0IChybF91bmRv X2xpc3QtPnRleHQpOwotLQkgIGZyZWUgKHJsX3VuZG9fbGlzdC0+dGV4dCk7Ci0rCSAgeGZyZWUg KHJsX3VuZG9fbGlzdC0+dGV4dCk7Ci0gCSAgYnJlYWs7Ci0gCi0gCS8qIFVuZG9pbmcgaW5zZXJ0 cyBtZWFucyBkZWxldGluZyBzb21lIHRleHQuICovCi1AQCAtMTYxLDcgKzIyMiw5IEBAIHJsX2Rv X3VuZG8gKCkKLSAKLSAgICAgICByZWxlYXNlID0gcmxfdW5kb19saXN0OwotICAgICAgIHJsX3Vu ZG9fbGlzdCA9IHJsX3VuZG9fbGlzdC0+bmV4dDsKLS0gICAgICBmcmVlIChyZWxlYXNlKTsKLSsg ICAgICByZXBsYWNlX2hpc3RvcnlfZGF0YSAoLTEsIChoaXN0ZGF0YV90ICopcmVsZWFzZSwgKGhp c3RkYXRhX3QgKilybF91bmRvX2xpc3QpOwotKwotKyAgICAgIHhmcmVlIChyZWxlYXNlKTsKLSAg ICAgfQotICAgd2hpbGUgKHdhaXRpbmdfZm9yX2JlZ2luKTsKLSAKLUBAIC0yMzEsNyArMjk0LDcg QEAgaW50Ci0gcmxfcmV2ZXJ0X2xpbmUgKGNvdW50LCBrZXkpCi0gICAgICBpbnQgY291bnQsIGtl eTsKLSB7Ci0tICBpZiAoIXJsX3VuZG9fbGlzdCkKLSsgIGlmIChybF91bmRvX2xpc3QgPT0gMCkK LSAgICAgcmxfZGluZyAoKTsKLSAgIGVsc2UKLSAgICAgewotSW5kZXg6IGdkYi03LjIuOTAuMjAx MTA3MDMvcmVhZGxpbmUvdXRpbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcw My5vcmlnL3JlYWRsaW5lL3V0aWwuYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvdXRpbC5jCTIwMTEtMDctMDMgMTA6 NDE6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwyNCArMSwyNCBAQAotIC8qIHV0aWwuYyAtLSBy ZWFkbGluZSB1dGlsaXR5IGZ1bmN0aW9ucyAqLwotIAotLS8qIENvcHlyaWdodCAoQykgMTk4Ny0y MDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk4 Ny0yMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgotLSAgIHJl YWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVk aXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5 IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0 aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAotIAotLSAgIFRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAgIFJlYWRsaW5lIGlzIGZy ZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQotLSAgIG9mIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAotLSAgIGlzIGdlbmVy YWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRv IG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0 b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggUmVhZGxp bmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKi8KLSsK LSAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdf SCkKLUBAIC02Niw3ICs2Niw3IEBACi0gICAgaW4gd29yZHMsIG9yIDEgaWYgaXQgaXMuICovCi0g Ci0gaW50IF9ybF9hbGxvd19wYXRobmFtZV9hbHBoYWJldGljX2NoYXJzID0gMDsKLS1zdGF0aWMg Y29uc3QgY2hhciAqcGF0aG5hbWVfYWxwaGFiZXRpY19jaGFycyA9ICIvLV89fi4jJCI7Ci0rc3Rh dGljIGNvbnN0IGNoYXIgKiBjb25zdCBwYXRobmFtZV9hbHBoYWJldGljX2NoYXJzID0gIi8tXz1+ LiMkIjsKLSAKLSBpbnQKLSBybF9hbHBoYWJldGljIChjKQotQEAgLTgxLDggKzgxLDcgQEAgcmxf YWxwaGFiZXRpYyAoYykKLSAKLSAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKLSBpbnQK LS1fcmxfd2FscGhhYmV0aWMgKHdjKQotLSAgICAgd2NoYXJfdCB3YzsKLStfcmxfd2FscGhhYmV0 aWMgKHdjaGFyX3Qgd2MpCi0gewotICAgaW50IGM7Ci0gCi1AQCAtMTA5LDcgKzEwOCw3IEBAIF9y bF9hYm9ydF9pbnRlcm5hbCAoKQotICAgICBfcmxfcG9wX2V4ZWN1dGluZ19tYWNybyAoKTsKLSAK LSAgIHJsX2xhc3RfZnVuYyA9IChybF9jb21tYW5kX2Z1bmNfdCAqKU5VTEw7Ci0tICBsb25nam1w IChyZWFkbGluZV90b3BfbGV2ZWwsIDEpOwotKyAgbG9uZ2ptcCAoX3JsX3RvcF9sZXZlbCwgMSk7 Ci0gICByZXR1cm4gKDApOwotIH0KLSAKLUBAIC0xMjEsNiArMTIwLDEzIEBAIHJsX2Fib3J0IChj b3VudCwga2V5KQotIH0KLSAKLSBpbnQKLStfcmxfbnVsbF9mdW5jdGlvbiAoY291bnQsIGtleSkK LSsgICAgIGludCBjb3VudCwga2V5OwotK3sKLSsgIHJldHVybiAwOwotK30KLSsKLStpbnQKLSBy bF90dHlfc3RhdHVzIChjb3VudCwga2V5KQotICAgICAgaW50IGNvdW50LCBrZXk7Ci0gewotQEAg LTE4NSw2ICsxOTEsNyBAQCBybF90aWxkZV9leHBhbmQgKGlnbm9yZSwga2V5KQotICAgICB7Ci0g ICAgICAgaG9tZWRpciA9IHRpbGRlX2V4cGFuZCAoIn4iKTsKLSAgICAgICBfcmxfcmVwbGFjZV90 ZXh0IChob21lZGlyLCBzdGFydCwgZW5kKTsKLSsgICAgICB4ZnJlZSAoaG9tZWRpcik7Ci0gICAg ICAgcmV0dXJuICgwKTsKLSAgICAgfQotICAgZWxzZSBpZiAocmxfbGluZV9idWZmZXJbc3RhcnRd ICE9ICd+JykKLUBAIC0yMTIsMTQgKzIxOSw5NiBAQCBybF90aWxkZV9leHBhbmQgKGlnbm9yZSwg a2V5KQotICAgICAgIHN0cm5jcHkgKHRlbXAsIHJsX2xpbmVfYnVmZmVyICsgc3RhcnQsIGxlbik7 Ci0gICAgICAgdGVtcFtsZW5dID0gJ1wwJzsKLSAgICAgICBob21lZGlyID0gdGlsZGVfZXhwYW5k ICh0ZW1wKTsKLS0gICAgICBmcmVlICh0ZW1wKTsKLSsgICAgICB4ZnJlZSAodGVtcCk7Ci0gCi0g ICAgICAgX3JsX3JlcGxhY2VfdGV4dCAoaG9tZWRpciwgc3RhcnQsIGVuZCk7Ci0rICAgICAgeGZy ZWUgKGhvbWVkaXIpOwotICAgICB9Ci0gCi0gICByZXR1cm4gKDApOwotIH0KLSAKLSsjaWYgZGVm aW5lZCAoVVNFX1ZBUkFSR1MpCi0rdm9pZAotKyNpZiBkZWZpbmVkIChQUkVGRVJfU1REQVJHKQot K19ybF90dHltc2cgKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotKyNlbHNlCi0rX3JsX3R0eW1z ZyAodmFfYWxpc3QpCi0rICAgICB2YV9kY2wKLSsjZW5kaWYKLSt7Ci0rICB2YV9saXN0IGFyZ3M7 Ci0rI2lmIGRlZmluZWQgKFBSRUZFUl9WQVJBUkdTKQotKyAgY2hhciAqZm9ybWF0OwotKyNlbmRp ZgotKwotKyNpZiBkZWZpbmVkIChQUkVGRVJfU1REQVJHKQotKyAgdmFfc3RhcnQgKGFyZ3MsIGZv cm1hdCk7Ci0rI2Vsc2UKLSsgIHZhX3N0YXJ0IChhcmdzKTsKLSsgIGZvcm1hdCA9IHZhX2FyZyAo YXJncywgY2hhciAqKTsKLSsjZW5kaWYKLSsKLSsgIGZwcmludGYgKHN0ZGVyciwgInJlYWRsaW5l OiAiKTsKLSsgIHZmcHJpbnRmIChzdGRlcnIsIGZvcm1hdCwgYXJncyk7Ci0rICBmcHJpbnRmIChz dGRlcnIsICJcbiIpOwotKyAgZmZsdXNoIChzdGRlcnIpOwotKwotKyAgdmFfZW5kIChhcmdzKTsK LSsKLSsgIHJsX2ZvcmNlZF91cGRhdGVfZGlzcGxheSAoKTsKLSt9Ci0rCi0rdm9pZAotKyNpZiBk ZWZpbmVkIChQUkVGRVJfU1REQVJHKQotK19ybF9lcnJtc2cgKGNvbnN0IGNoYXIgKmZvcm1hdCwg Li4uKQotKyNlbHNlCi0rX3JsX2Vycm1zZyAodmFfYWxpc3QpCi0rICAgICB2YV9kY2wKLSsjZW5k aWYKLSt7Ci0rICB2YV9saXN0IGFyZ3M7Ci0rI2lmIGRlZmluZWQgKFBSRUZFUl9WQVJBUkdTKQot KyAgY2hhciAqZm9ybWF0OwotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkIChQUkVGRVJfU1REQVJH KQotKyAgdmFfc3RhcnQgKGFyZ3MsIGZvcm1hdCk7Ci0rI2Vsc2UKLSsgIHZhX3N0YXJ0IChhcmdz KTsKLSsgIGZvcm1hdCA9IHZhX2FyZyAoYXJncywgY2hhciAqKTsKLSsjZW5kaWYKLSsKLSsgIGZw cmludGYgKHN0ZGVyciwgInJlYWRsaW5lOiAiKTsKLSsgIHZmcHJpbnRmIChzdGRlcnIsIGZvcm1h dCwgYXJncyk7Ci0rICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOwotKyAgZmZsdXNoIChzdGRlcnIp OwotKwotKyAgdmFfZW5kIChhcmdzKTsKLSt9Ci0rCi0rI2Vsc2UgLyogIVVTRV9WQVJBUkdTICov Ci0rdm9pZAotK19ybF90dHltc2cgKGZvcm1hdCwgYXJnMSwgYXJnMikKLSsgICAgIGNoYXIgKmZv cm1hdDsKLSt7Ci0rICBmcHJpbnRmIChzdGRlcnIsICJyZWFkbGluZTogIik7Ci0rICBmcHJpbnRm IChzdGRlcnIsIGZvcm1hdCwgYXJnMSwgYXJnMik7Ci0rICBmcHJpbnRmIChzdGRlcnIsICJcbiIp OwotKwotKyAgcmxfZm9yY2VkX3VwZGF0ZV9kaXNwbGF5ICgpOwotK30KLSsKLSt2b2lkCi0rX3Js X2Vycm1zZyAoZm9ybWF0LCBhcmcxLCBhcmcyKQotKyAgICAgY2hhciAqZm9ybWF0OwotK3sKLSsg IGZwcmludGYgKHN0ZGVyciwgInJlYWRsaW5lOiAiKTsKLSsgIGZwcmludGYgKHN0ZGVyciwgZm9y bWF0LCBhcmcxLCBhcmcyKTsKLSsgIGZwcmludGYgKHN0ZGVyciwgIlxuIik7Ci0rfQotKyNlbmRp ZiAvKiAhVVNFX1ZBUkFSR1MgKi8KLSsKLSAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0gLyoJCQkJCQkJCSAgICAq LwotIC8qCQkJU3RyaW5nIFV0aWxpdHkgRnVuY3Rpb25zCQkgICAgKi8KLUBAIC0yNzcsNDEgKzM2 Niw1NiBAQCBfcmxfc3RycGJyayAoc3RyaW5nMSwgc3RyaW5nMikKLSAKLSAjaWYgIWRlZmluZWQg KEhBVkVfU1RSQ0FTRUNNUCkKLSAvKiBDb21wYXJlIGF0IG1vc3QgQ09VTlQgY2hhcmFjdGVycyBm cm9tIHN0cmluZzEgdG8gc3RyaW5nMi4gIENhc2UKLS0gICBkb2Vzbid0IG1hdHRlci4gKi8KLSsg ICBkb2Vzbid0IG1hdHRlciAoc3RybmNhc2VjbXApLiAqLwotIGludAotIF9ybF9zdHJuaWNtcCAo c3RyaW5nMSwgc3RyaW5nMiwgY291bnQpCi0gICAgICBjaGFyICpzdHJpbmcxLCAqc3RyaW5nMjsK LSAgICAgIGludCBjb3VudDsKLSB7Ci0tICByZWdpc3RlciBjaGFyIGNoMSwgY2gyOwotKyAgcmVn aXN0ZXIgY2hhciAqczEsICpzMjsKLSsgIGludCBkOwotKwotKyAgaWYgKGNvdW50IDw9IDAgfHwg KHN0cmluZzEgPT0gc3RyaW5nMikpCi0rICAgIHJldHVybiAwOwotIAotLSAgd2hpbGUgKGNvdW50 KQotKyAgczEgPSBzdHJpbmcxOwotKyAgczIgPSBzdHJpbmcyOwotKyAgZG8KLSAgICAgewotLSAg ICAgIGNoMSA9ICpzdHJpbmcxKys7Ci0tICAgICAgY2gyID0gKnN0cmluZzIrKzsKLS0gICAgICBp ZiAoX3JsX3RvX3VwcGVyKGNoMSkgPT0gX3JsX3RvX3VwcGVyKGNoMikpCi0tCWNvdW50LS07Ci0t ICAgICAgZWxzZQotKyAgICAgIGQgPSBfcmxfdG9fbG93ZXIgKCpzMSkgLSBfcmxfdG9fbG93ZXIg KCpzMik7CS8qIFhYWCAtIGNhc3QgdG8gdW5zaWduZWQgY2hhcj8gKi8KLSsgICAgICBpZiAoZCAh PSAwKQotKwlyZXR1cm4gZDsKLSsgICAgICBpZiAoKnMxKysgPT0gJ1wwJykKLSAgICAgICAgIGJy ZWFrOwotKyAgICAgIHMyKys7Ci0gICAgIH0KLS0gIHJldHVybiAoY291bnQpOwotKyAgd2hpbGUg KC0tY291bnQgIT0gMCkKLSsKLSsgIHJldHVybiAoMCk7Ci0gfQotIAotLS8qIHN0cmNtcCAoKSwg YnV0IGNhc2VsZXNzLiAqLwotKy8qIHN0cmNtcCAoKSwgYnV0IGNhc2VsZXNzIChzdHJjYXNlY21w KS4gKi8KLSBpbnQKLSBfcmxfc3RyaWNtcCAoc3RyaW5nMSwgc3RyaW5nMikKLSAgICAgIGNoYXIg KnN0cmluZzEsICpzdHJpbmcyOwotIHsKLS0gIHJlZ2lzdGVyIGNoYXIgY2gxLCBjaDI7Ci0rICBy ZWdpc3RlciBjaGFyICpzMSwgKnMyOwotKyAgaW50IGQ7Ci0rCi0rICBzMSA9IHN0cmluZzE7Ci0r ICBzMiA9IHN0cmluZzI7Ci0rCi0rICBpZiAoczEgPT0gczIpCi0rICAgIHJldHVybiAwOwotIAot LSAgd2hpbGUgKCpzdHJpbmcxICYmICpzdHJpbmcyKQotKyAgd2hpbGUgKChkID0gX3JsX3RvX2xv d2VyICgqczEpIC0gX3JsX3RvX2xvd2VyICgqczIpKSA9PSAwKQotICAgICB7Ci0tICAgICAgY2gx ID0gKnN0cmluZzErKzsKLS0gICAgICBjaDIgPSAqc3RyaW5nMisrOwotLSAgICAgIGlmIChfcmxf dG9fdXBwZXIoY2gxKSAhPSBfcmxfdG9fdXBwZXIoY2gyKSkKLS0JcmV0dXJuICgxKTsKLSsgICAg ICBpZiAoKnMxKysgPT0gJ1wwJykKLSsgICAgICAgIHJldHVybiAwOwotKyAgICAgIHMyKys7Ci0g ICAgIH0KLS0gIHJldHVybiAoKnN0cmluZzEgLSAqc3RyaW5nMik7Ci0rCi0rICByZXR1cm4gKGQp OwotIH0KLSAjZW5kaWYgLyogIUhBVkVfU1RSQ0FTRUNNUCAqLwotIAotQEAgLTM0NCw2ICs0NDgs MTYgQEAgRlVOQ1RJT05fRk9SX01BQ1JPIChfcmxfdG9fbG93ZXIpCi0gRlVOQ1RJT05fRk9SX01B Q1JPIChfcmxfdG9fdXBwZXIpCi0gRlVOQ1RJT05fRk9SX01BQ1JPIChfcmxfdXBwZXJjYXNlX3Ap Ci0gCi0rLyogQSBjb252ZW5pZW5jZSBmdW5jdGlvbiwgdG8gZm9yY2UgbWVtb3J5IGRlYWxsb2Nh dGlvbiB0byBiZSBwZXJmb3JtZWQKLSsgICBieSByZWFkbGluZS4gIERMTHMgb24gV2luZG93cyBh cHBhcmVudGx5IHJlcXVpcmUgdGhpcy4gKi8KLSt2b2lkCi0rcmxfZnJlZSAobWVtKQotKyAgICAg dm9pZCAqbWVtOwotK3sKLSsgIGlmIChtZW0pCi0rICAgIGZyZWUgKG1lbSk7Ci0rfQotKwotIC8q IEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBub3cgdGhhdCBzYXZlc3RyaW5nIGhhcyBiZWVuIHJl bW92ZWQgZnJvbQotICAgIGFsbCBgcHVibGljJyByZWFkbGluZSBoZWFkZXIgZmlsZXMuICovCi0g I3VuZGVmIF9ybF9zYXZlc3RyaW5nCi1AQCAtMzUzLDMgKzQ2Nyw2MCBAQCBfcmxfc2F2ZXN0cmlu ZyAocykKLSB7Ci0gICByZXR1cm4gKHN0cmNweSAoKGNoYXIgKil4bWFsbG9jICgxICsgKGludClz dHJsZW4gKHMpKSwgKHMpKSk7Ci0gfQotKwotKyNpZiBkZWZpbmVkIChVU0VfVkFSQVJHUykKLStz dGF0aWMgRklMRSAqX3JsX3RyYWNlZnA7Ci0rCi0rdm9pZAotKyNpZiBkZWZpbmVkIChQUkVGRVJf U1REQVJHKQotK19ybF90cmFjZSAoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi0rI2Vsc2UKLStf cmxfdHJhY2UgKHZhX2FsaXN0KQotKyAgICAgdmFfZGNsCi0rI2VuZGlmCi0rewotKyAgdmFfbGlz dCBhcmdzOwotKyNpZiBkZWZpbmVkIChQUkVGRVJfVkFSQVJHUykKLSsgIGNoYXIgKmZvcm1hdDsK LSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZCAoUFJFRkVSX1NUREFSRykKLSsgIHZhX3N0YXJ0IChh cmdzLCBmb3JtYXQpOwotKyNlbHNlCi0rICB2YV9zdGFydCAoYXJncyk7Ci0rICBmb3JtYXQgPSB2 YV9hcmcgKGFyZ3MsIGNoYXIgKik7Ci0rI2VuZGlmCi0rCi0rICBpZiAoX3JsX3RyYWNlZnAgPT0g MCkKLSsgICAgX3JsX3Ryb3BlbiAoKTsKLSsgIHZmcHJpbnRmIChfcmxfdHJhY2VmcCwgZm9ybWF0 LCBhcmdzKTsKLSsgIGZwcmludGYgKF9ybF90cmFjZWZwLCAiXG4iKTsKLSsgIGZmbHVzaCAoX3Js X3RyYWNlZnApOwotKwotKyAgdmFfZW5kIChhcmdzKTsKLSt9Ci0rCi0raW50Ci0rX3JsX3Ryb3Bl biAoKQotK3sKLSsgIGNoYXIgZm5idWZbMTI4XTsKLSsKLSsgIGlmIChfcmxfdHJhY2VmcCkKLSsg ICAgZmNsb3NlIChfcmxfdHJhY2VmcCk7Ci0rICBzcHJpbnRmIChmbmJ1ZiwgIi92YXIvdG1wL3Js dHJhY2UuJWxkIiwgZ2V0cGlkKCkpOwotKyAgdW5saW5rKGZuYnVmKTsKLSsgIF9ybF90cmFjZWZw ID0gZm9wZW4gKGZuYnVmLCAidysiKTsKLSsgIHJldHVybiBfcmxfdHJhY2VmcCAhPSAwOwotK30K LSsKLStpbnQKLStfcmxfdHJjbG9zZSAoKQotK3sKLSsgIGludCByOwotKwotKyAgciA9IGZjbG9z ZSAoX3JsX3RyYWNlZnApOwotKyAgX3JsX3RyYWNlZnAgPSAwOwotKyAgcmV0dXJuIHI7Ci0rfQot KwotKyNlbmRpZgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvdmlfa2V5bWFw LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNzAzLm9yaWcvcmVhZGxpbmUvdmlf a2V5bWFwLmMJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4y LjkwLjIwMTEwNzAzL3JlYWRsaW5lL3ZpX2tleW1hcC5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAw MDAwMDAwICswMjAwCi1AQCAtMSwyNCArMSwyMyBAQAotIC8qIHZpX2tleW1hcC5jIC0tIHRoZSBr ZXltYXAgZm9yIHZpX21vZGUgaW4gcmVhZGxpbmUgKCkuICovCi0gCi0tLyogQ29weXJpZ2h0IChD KSAxOTg3LCAxOTg5LCAxOTkyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENv cHlyaWdodCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAot LSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJy YXJ5IGZvcgotLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0 IGFuZCBoaXN0b3J5IGVkaXRpbmcuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBS ZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxp bmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAg ICAgIAotIAotLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAotLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgotKyAg IFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0tICAgdXNlZnVsLCBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eQotLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSsgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgVGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFu ZAotLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNF TlNFLiAgSWYgeW91IGRvIG5vdAotLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0 ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIDU5IFRlbXBsZSBQbGFjZSwg U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFs b25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCi0rKi8KLSAKLSAjaWYgIWRlZmluZWQgKEJVRlNJWikKLSAjaW5jbHVkZSA8c3RkaW8u aD4KLUBAIC0xNTEsNyArMTUwLDcgQEAgS0VZTUFQX0VOVFJZX0FSUkFZIHZpX21vdmVtZW50X2tl eW1hcCA9IAotICAgeyBJU0ZVTkMsIHJsX3ZpX2NoYXJfc2VhcmNoIH0sCQkvKiBmICovCi0gICB7 IElTRlVOQywgKHJsX2NvbW1hbmRfZnVuY190ICopMHgwIH0sCQkvKiBnICovCi0gICB7IElTRlVO QywgcmxfYmFja3dhcmRfY2hhciB9LAkJCS8qIGggKi8KLS0gIHsgSVNGVU5DLCBybF92aV9pbnNl cnRpb25fbW9kZSB9LAkJLyogaSAqLwotKyAgeyBJU0ZVTkMsIHJsX3ZpX2luc2VydF9tb2RlIH0s CQkvKiBpICovCi0gICB7IElTRlVOQywgcmxfZ2V0X25leHRfaGlzdG9yeSB9LAkJLyogaiAqLwot ICAgeyBJU0ZVTkMsIHJsX2dldF9wcmV2aW91c19oaXN0b3J5IH0sCQkvKiBrICovCi0gICB7IElT RlVOQywgcmxfZm9yd2FyZF9jaGFyIH0sCQkJLyogbCAqLwotQEAgLTMyNyw5ICszMjYsOSBAQCBL RVlNQVBfRU5UUllfQVJSQVkgdmlfaW5zZXJ0aW9uX2tleW1hcCA9Ci0gICB7IElTRlVOQywgcmxf aW5zZXJ0IH0sCQkJLyogQ29udHJvbC1rICovCi0gICB7IElTRlVOQywgcmxfaW5zZXJ0IH0sCQkJ LyogQ29udHJvbC1sICovCi0gICB7IElTRlVOQywgcmxfbmV3bGluZSB9LAkJCS8qIENvbnRyb2wt bSAqLwotLSAgeyBJU0ZVTkMsIHJsX2luc2VydCB9LAkJCS8qIENvbnRyb2wtbiAqLwotKyAgeyBJ U0ZVTkMsIHJsX21lbnVfY29tcGxldGV9LAkJCS8qIENvbnRyb2wtbiAqLwotICAgeyBJU0ZVTkMs IHJsX2luc2VydCB9LAkJCS8qIENvbnRyb2wtbyAqLwotLSAgeyBJU0ZVTkMsIHJsX2luc2VydCB9 LAkJCS8qIENvbnRyb2wtcCAqLwotKyAgeyBJU0ZVTkMsIHJsX2JhY2t3YXJkX21lbnVfY29tcGxl dGUgfSwJLyogQ29udHJvbC1wICovCi0gICB7IElTRlVOQywgcmxfaW5zZXJ0IH0sCQkJLyogQ29u dHJvbC1xICovCi0gICB7IElTRlVOQywgcmxfcmV2ZXJzZV9zZWFyY2hfaGlzdG9yeSB9LAkvKiBD b250cm9sLXIgKi8KLSAgIHsgSVNGVU5DLCBybF9mb3J3YXJkX3NlYXJjaF9oaXN0b3J5IH0sCS8q IENvbnRyb2wtcyAqLwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUvdmlfbW9k ZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDcwMy5vcmlnL3JlYWRsaW5lL3Zp X21vZGUuYwkyMDExLTA3LTAzIDEwOjQwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIu OTAuMjAxMTA3MDMvcmVhZGxpbmUvdmlfbW9kZS5jCTIwMTEtMDctMDMgMTA6NDE6MjEuMDAwMDAw MDAwICswMjAwCi1AQCAtMSwyNSArMSwyNSBAQAotIC8qIHZpX21vZGUuYyAtLSBBIHZpIGVtdWxh dGlvbiBtb2RlIGZvciBCYXNoLgotICAgIERlcml2ZWQgZnJvbSBjb2RlIHdyaXR0ZW4gYnkgSmVm ZiBTcGFya2VzIChqc3Bhcmtlc0BibnIuY2EpLiAgKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5 ODctMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMp IDE5ODctMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKLS0g ICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9y eSBlZGl0aW5nLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGli cmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0 IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKLSAKLS0g ICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQKLS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKLSsgICBSZWFkbGluZSBp cyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKLS0gICBvZiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKLS0gICBpcyBn ZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlv dSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwg Qm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJl YWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyov Ci0rCi0gI2RlZmluZSBSRUFETElORV9MSUJSQVJZCi0gCi0gLyogKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotQEAgLTY1 LDExICs2NSwxMyBAQAotIAotIGludCBfcmxfdmlfbGFzdF9jb21tYW5kID0gJ2knOwkvKiBkZWZh dWx0IGAuJyBwdXRzIHlvdSBpbiBpbnNlcnQgbW9kZSAqLwotIAotK19ybF92aW1vdGlvbl9jeHQg Kl9ybF92aW12Y3h0ID0gMDsKLSsKLSAvKiBOb24temVybyBtZWFucyBlbnRlciBpbnNlcnRpb24g bW9kZS4gKi8KLSBzdGF0aWMgaW50IF9ybF92aV9kb2luZ19pbnNlcnQ7Ci0gCi0gLyogQ29tbWFu ZCBrZXlzIHdoaWNoIGRvIG1vdmVtZW50IGZvciB4eHhfdG8gY29tbWFuZHMuICovCi0tc3RhdGlj IGNvbnN0IGNoYXIgKnZpX21vdGlvbiA9ICIgaGxeJDBmdEZUOywld2JlV0JFfCI7Ci0rc3RhdGlj IGNvbnN0IGNoYXIgKiBjb25zdCB2aV9tb3Rpb24gPSAiIGhsXiQwZnRGVDssJXdiZVdCRXxgIjsK LSAKLSAvKiBLZXltYXAgdXNlZCBmb3IgdmkgcmVwbGFjZSBjaGFyYWN0ZXJzLiAgQ3JlYXRlZCBk eW5hbWljYWxseSBzaW5jZQotICAgIHJhcmVseSB1c2VkLiAqLwotQEAgLTEwMSw3ICsxMDMsNyBA QCBzdGF0aWMgaW50IF9ybF92aV9sYXN0X2tleV9iZWZvcmVfaW5zZXJ0Ci0gc3RhdGljIGludCB2 aV9yZWRvaW5nOwotIAotIC8qIFRleHQgbW9kaWZpY2F0aW9uIGNvbW1hbmRzLiAgVGhlc2UgYXJl IHRoZSBgcmVkb2FibGUnIGNvbW1hbmRzLiAqLwotLXN0YXRpYyBjb25zdCBjaGFyICp2aV90ZXh0 bW9kID0gIl8qXFxBYUlpQ2NEZFBwWXlSclNzWHh+IjsKLStzdGF0aWMgY29uc3QgY2hhciAqIGNv bnN0IHZpX3RleHRtb2QgPSAiXypcXEFhSWlDY0RkUHBZeVJyU3NYeH4iOwotIAotIC8qIEFycmF5 cyBmb3IgdGhlIHNhdmVkIG1hcmtzLiAqLwotIHN0YXRpYyBpbnQgdmlfbWFya19jaGFyc1sneicg LSAnYScgKyAxXTsKLUBAIC0xMDksMTIgKzExMSwxNiBAQCBzdGF0aWMgaW50IHZpX21hcmtfY2hh cnNbJ3onIC0gJ2EnICsgMV07Ci0gc3RhdGljIHZvaWQgX3JsX3ZpX3N0dWZmX2luc2VydCBQQVJB TVMoKGludCkpOwotIHN0YXRpYyB2b2lkIF9ybF92aV9zYXZlX2luc2VydCBQQVJBTVMoKFVORE9f TElTVCAqKSk7Ci0gCi0rc3RhdGljIHZvaWQgX3JsX3ZpX2JhY2t1cCBQQVJBTVMoKHZvaWQpKTsK LSsKLSBzdGF0aWMgaW50IF9ybF92aV9hcmdfZGlzcGF0Y2ggUEFSQU1TKChpbnQpKTsKLSBzdGF0 aWMgaW50IHJsX2RpZ2l0X2xvb3AxIFBBUkFNUygodm9pZCkpOwotIAotIHN0YXRpYyBpbnQgX3Js X3ZpX3NldF9tYXJrIFBBUkFNUygodm9pZCkpOwotIHN0YXRpYyBpbnQgX3JsX3ZpX2dvdG9fbWFy ayBQQVJBTVMoKHZvaWQpKTsKLSAKLStzdGF0aWMgdm9pZCBfcmxfdmlfYXBwZW5kX2ZvcndhcmQg UEFSQU1TKChpbnQpKTsKLSsKLSBzdGF0aWMgaW50IF9ybF92aV9jYWxsYmFja19nZXRjaGFyIFBB UkFNUygoY2hhciAqLCBpbnQpKTsKLSAKLSAjaWYgZGVmaW5lZCAoUkVBRExJTkVfQ0FMTEJBQ0tT KQotQEAgLTEyNCwxMiArMTMwLDIzIEBAIHN0YXRpYyBpbnQgX3JsX3ZpX2NhbGxiYWNrX2NoYW5n ZV9jaGFyIFAKLSBzdGF0aWMgaW50IF9ybF92aV9jYWxsYmFja19jaGFyX3NlYXJjaCBQQVJBTVMo KF9ybF9jYWxsYmFja19nZW5lcmljX2FyZyAqKSk7Ci0gI2VuZGlmCi0gCi0rc3RhdGljIGludCBy bF9kb21vdmVfcmVhZF9jYWxsYmFjayBQQVJBTVMoKF9ybF92aW1vdGlvbl9jeHQgKikpOwotK3N0 YXRpYyBpbnQgcmxfZG9tb3ZlX21vdGlvbl9jYWxsYmFjayBQQVJBTVMoKF9ybF92aW1vdGlvbl9j eHQgKikpOwotK3N0YXRpYyBpbnQgcmxfdmlfZG9tb3ZlX2dldGNoYXIgUEFSQU1TKChfcmxfdmlt b3Rpb25fY3h0ICopKTsKLSsKLStzdGF0aWMgaW50IHZpX2NoYW5nZV9kaXNwYXRjaCBQQVJBTVMo KF9ybF92aW1vdGlvbl9jeHQgKikpOwotK3N0YXRpYyBpbnQgdmlfZGVsZXRlX2Rpc3BhdGNoIFBB UkFNUygoX3JsX3ZpbW90aW9uX2N4dCAqKSk7Ci0rc3RhdGljIGludCB2aV95YW5rX2Rpc3BhdGNo IFBBUkFNUygoX3JsX3ZpbW90aW9uX2N4dCAqKSk7Ci0rCi0rc3RhdGljIGludCB2aWRvbW92ZV9k aXNwYXRjaCBQQVJBTVMoKF9ybF92aW1vdGlvbl9jeHQgKikpOwotKwotIHZvaWQKLSBfcmxfdmlf aW5pdGlhbGl6ZV9saW5lICgpCi0gewotLSAgcmVnaXN0ZXIgaW50IGk7Ci0rICByZWdpc3RlciBp bnQgaSwgbjsKLSAKLS0gIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKHZpX21hcmtfY2hhcnMpIC8g c2l6ZW9mIChpbnQpOyBpKyspCi0rICBuID0gc2l6ZW9mICh2aV9tYXJrX2NoYXJzKSAvIHNpemVv ZiAodmlfbWFya19jaGFyc1swXSk7Ci0rICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQotICAgICB2 aV9tYXJrX2NoYXJzW2ldID0gLTE7Ci0gCi0gICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRFX1ZJQ01E T05DRSk7Ci1AQCAtMjA1LDcgKzIyMiwzNCBAQCBybF92aV9yZWRvIChjb3VudCwgYykKLSAgICAg ICBfcmxfdmlfc3R1ZmZfaW5zZXJ0IChjb3VudCk7Ci0gICAgICAgLyogQW5kIGJhY2sgdXAgcG9p bnQgb3ZlciB0aGUgbGFzdCBjaGFyYWN0ZXIgaW5zZXJ0ZWQuICovCi0gICAgICAgaWYgKHJsX3Bv aW50ID4gMCkKLS0JcmxfcG9pbnQtLTsKLSsJX3JsX3ZpX2JhY2t1cCAoKTsKLSsgICAgfQotKyAg LyogRGl0dG8gZm9yIHJlZG9pbmcgYW4gaW5zZXJ0IHdpdGggYEknLCBidXQgbW92ZSB0byB0aGUg YmVnaW5uaW5nIG9mIHRoZQotKyAgICAgbGluZSBsaWtlIHRoZSBgSScgY29tbWFuZCBkb2VzLiAq LwotKyAgZWxzZSBpZiAoX3JsX3ZpX2xhc3RfY29tbWFuZCA9PSAnSScgJiYgdmlfaW5zZXJ0X2J1 ZmZlciAmJiAqdmlfaW5zZXJ0X2J1ZmZlcikKLSsgICAgewotKyAgICAgIHJsX2JlZ19vZl9saW5l ICgxLCAnSScpOwotKyAgICAgIF9ybF92aV9zdHVmZl9pbnNlcnQgKGNvdW50KTsKLSsgICAgICBp ZiAocmxfcG9pbnQgPiAwKQotKwlfcmxfdmlfYmFja3VwICgpOwotKyAgICB9Ci0rICAvKiBEaXR0 byBmb3IgcmVkb2luZyBhbiBpbnNlcnQgd2l0aCBgYScsIGJ1dCBtb3ZlIGZvcndhcmQgYSBjaGFy YWN0ZXIgZmlyc3QKLSsgICAgIGxpa2UgdGhlIGBhJyBjb21tYW5kIGRvZXMuICovCi0rICBlbHNl IGlmIChfcmxfdmlfbGFzdF9jb21tYW5kID09ICdhJyAmJiB2aV9pbnNlcnRfYnVmZmVyICYmICp2 aV9pbnNlcnRfYnVmZmVyKQotKyAgICB7Ci0rICAgICAgX3JsX3ZpX2FwcGVuZF9mb3J3YXJkICgn YScpOwotKyAgICAgIF9ybF92aV9zdHVmZl9pbnNlcnQgKGNvdW50KTsKLSsgICAgICBpZiAocmxf cG9pbnQgPiAwKQotKwlfcmxfdmlfYmFja3VwICgpOwotKyAgICB9Ci0rICAvKiBEaXR0byBmb3Ig cmVkb2luZyBhbiBpbnNlcnQgd2l0aCBgQScsIGJ1dCBtb3ZlIHRvIHRoZSBlbmQgb2YgdGhlIGxp bmUKLSsgICAgIGxpa2UgdGhlIGBBJyBjb21tYW5kIGRvZXMuICovCi0rICBlbHNlIGlmIChfcmxf dmlfbGFzdF9jb21tYW5kID09ICdBJyAmJiB2aV9pbnNlcnRfYnVmZmVyICYmICp2aV9pbnNlcnRf YnVmZmVyKQotKyAgICB7Ci0rICAgICAgcmxfZW5kX29mX2xpbmUgKDEsICdBJyk7Ci0rICAgICAg X3JsX3ZpX3N0dWZmX2luc2VydCAoY291bnQpOwotKyAgICAgIGlmIChybF9wb2ludCA+IDApCi0r CV9ybF92aV9iYWNrdXAgKCk7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgciA9IF9ybF9kaXNwYXRj aCAoX3JsX3ZpX2xhc3RfY29tbWFuZCwgX3JsX2tleW1hcCk7Ci1AQCAtNTcxLDI3ICs2MTUsNDAg QEAgcmxfdmlfaW5zZXJ0X2JlZyAoY291bnQsIGtleSkKLSAgICAgIGludCBjb3VudCwga2V5Owot IHsKLSAgIHJsX2JlZ19vZl9saW5lICgxLCBrZXkpOwotLSAgcmxfdmlfaW5zZXJ0aW9uX21vZGUg KDEsIGtleSk7Ci0rICBybF92aV9pbnNlcnRfbW9kZSAoMSwga2V5KTsKLSAgIHJldHVybiAoMCk7 Ci0gfQotIAotLWludAotLXJsX3ZpX2FwcGVuZF9tb2RlIChjb3VudCwga2V5KQotLSAgICAgaW50 IGNvdW50LCBrZXk7Ci0rc3RhdGljIHZvaWQKLStfcmxfdmlfYXBwZW5kX2ZvcndhcmQgKGtleSkK LSsgICAgIGludCBrZXk7Ci0gewotKyAgaW50IHBvaW50OwotKwotICAgaWYgKHJsX3BvaW50IDwg cmxfZW5kKQotICAgICB7Ci0gICAgICAgaWYgKE1CX0NVUl9NQVggPT0gMSB8fCBybF9ieXRlX29y aWVudGVkKQotIAlybF9wb2ludCsrOwotICAgICAgIGVsc2UKLS0gICAgICAgIHsKLS0gICAgICAg ICAgaW50IHBvaW50ID0gcmxfcG9pbnQ7Ci0tICAgICAgICAgIHJsX2ZvcndhcmRfY2hhciAoMSwg a2V5KTsKLS0gICAgICAgICAgaWYgKHBvaW50ID09IHJsX3BvaW50KQotLSAgICAgICAgICAgIHJs X3BvaW50ID0gcmxfZW5kOwotLSAgICAgICAgfQotKwl7Ci0rCSAgcG9pbnQgPSBybF9wb2ludDsK LSsjaWYgMAotKwkgIHJsX2ZvcndhcmRfY2hhciAoMSwga2V5KTsKLSsjZWxzZQotKwkgIHJsX3Bv aW50ID0gX3JsX2ZvcndhcmRfY2hhcl9pbnRlcm5hbCAoMSk7Ci0rI2VuZGlmCi0rCSAgaWYgKHBv aW50ID09IHJsX3BvaW50KQotKwkgICAgcmxfcG9pbnQgPSBybF9lbmQ7Ci0rCX0KLSAgICAgfQot LSAgcmxfdmlfaW5zZXJ0aW9uX21vZGUgKDEsIGtleSk7Ci0rfQotKwotK2ludAotK3JsX3ZpX2Fw cGVuZF9tb2RlIChjb3VudCwga2V5KQotKyAgICAgaW50IGNvdW50LCBrZXk7Ci0rewotKyAgX3Js X3ZpX2FwcGVuZF9mb3J3YXJkIChrZXkpOwotKyAgcmxfdmlfc3RhcnRfaW5zZXJ0aW5nIChrZXks IDEsIHJsX2FyZ19zaWduKTsKLSAgIHJldHVybiAoMCk7Ci0gfQotIAotQEAgLTYyNSwxMyArNjgy LDIxIEBAIHJsX3ZpX2luc2VydGlvbl9tb2RlIChjb3VudCwga2V5KQotICAgcmV0dXJuICgwKTsK LSB9Ci0gCi0raW50Ci0rcmxfdmlfaW5zZXJ0X21vZGUgKGNvdW50LCBrZXkpCi0rICAgICBpbnQg Y291bnQsIGtleTsKLSt7Ci0rICBybF92aV9zdGFydF9pbnNlcnRpbmcgKGtleSwgMSwgcmxfYXJn X3NpZ24pOwotKyAgcmV0dXJuICgwKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBfcmxfdmlfc2F2 ZV9pbnNlcnQgKHVwKQotICAgICAgIFVORE9fTElTVCAqdXA7Ci0gewotICAgaW50IGxlbiwgc3Rh cnQsIGVuZDsKLSAKLS0gIGlmICh1cCA9PSAwKQotKyAgaWYgKHVwID09IDAgfHwgdXAtPndoYXQg IT0gVU5ET19JTlNFUlQpCi0gICAgIHsKLSAgICAgICBpZiAodmlfaW5zZXJ0X2J1ZmZlcl9zaXpl ID49IDEpCi0gCXZpX2luc2VydF9idWZmZXJbMF0gPSAnXDAnOwotQEAgLTY2OCw4ICs3MzMsMTEg QEAgX3JsX3ZpX2RvbmVfaW5zZXJ0aW5nICgpCi0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotLSAg ICAgIGlmICgoX3JsX3ZpX2xhc3Rfa2V5X2JlZm9yZV9pbnNlcnQgPT0gJ2knIHx8IF9ybF92aV9s YXN0X2tleV9iZWZvcmVfaW5zZXJ0ID09ICdhJykgJiYgcmxfdW5kb19saXN0KQotLSAgICAgICAg X3JsX3ZpX3NhdmVfaW5zZXJ0IChybF91bmRvX2xpc3QpOwotKyAgICAgIGlmIChybF91bmRvX2xp c3QgJiYgKF9ybF92aV9sYXN0X2tleV9iZWZvcmVfaW5zZXJ0ID09ICdpJyB8fAotKwkJCSAgIF9y bF92aV9sYXN0X2tleV9iZWZvcmVfaW5zZXJ0ID09ICdhJyB8fAotKwkJCSAgIF9ybF92aV9sYXN0 X2tleV9iZWZvcmVfaW5zZXJ0ID09ICdJJyB8fAotKwkJCSAgIF9ybF92aV9sYXN0X2tleV9iZWZv cmVfaW5zZXJ0ID09ICdBJykpCi0rCV9ybF92aV9zYXZlX2luc2VydCAocmxfdW5kb19saXN0KTsK LSAgICAgICAvKiBYWFggLSBPdGhlciBrZXlzIHByb2JhYmx5IG5lZWQgdG8gYmUgY2hlY2tlZC4g Ki8KLSAgICAgICBlbHNlIGlmIChfcmxfdmlfbGFzdF9rZXlfYmVmb3JlX2luc2VydCA9PSAnQycp Ci0gCXJsX2VuZF91bmRvX2dyb3VwICgpOwotQEAgLTcxNiw3ICs3ODQsOCBAQCBfcmxfdmlfY2hh bmdlX21iY2hhcl9jYXNlIChjb3VudCkKLSB7Ci0gICB3Y2hhcl90IHdjOwotICAgY2hhciBtYltN Ql9MRU5fTUFYKzFdOwotLSAgaW50IG1ibGVuLCBwOwotKyAgaW50IG1sZW4sIHA7Ci0rICBzaXpl X3QgbTsKLSAgIG1ic3RhdGVfdCBwczsKLSAKLSAgIG1lbXNldCAoJnBzLCAwLCBzaXplb2YgKG1i c3RhdGVfdCkpOwotQEAgLTcyNCw3ICs3OTMsMTEgQEAgX3JsX3ZpX2NoYW5nZV9tYmNoYXJfY2Fz ZSAoY291bnQpCi0gICAgIGNvdW50LS07Ci0gICB3aGlsZSAoY291bnQtLSAmJiBybF9wb2ludCA8 IHJsX2VuZCkKLSAgICAgewotLSAgICAgIG1icnRvd2MgKCZ3YywgcmxfbGluZV9idWZmZXIgKyBy bF9wb2ludCwgcmxfZW5kIC0gcmxfcG9pbnQsICZwcyk7Ci0rICAgICAgbSA9IG1icnRvd2MgKCZ3 YywgcmxfbGluZV9idWZmZXIgKyBybF9wb2ludCwgcmxfZW5kIC0gcmxfcG9pbnQsICZwcyk7Ci0r ICAgICAgaWYgKE1CX0lOVkFMSURDSCAobSkpCi0rCXdjID0gKHdjaGFyX3QpcmxfbGluZV9idWZm ZXJbcmxfcG9pbnRdOwotKyAgICAgIGVsc2UgaWYgKE1CX05VTExXQ0ggKG0pKQotKwl3YyA9IEwn XDAnOwotICAgICAgIGlmIChpc3d1cHBlciAod2MpKQotIAl3YyA9IHRvd2xvd2VyICh3Yyk7Ci0g ICAgICAgZWxzZSBpZiAoaXN3bG93ZXIgKHdjKSkKLUBAIC03NDAsOSArODEzLDkgQEAgX3JsX3Zp X2NoYW5nZV9tYmNoYXJfY2FzZSAoY291bnQpCi0gICAgICAgaWYgKHdjKQotIAl7Ci0gCSAgcCA9 IHJsX3BvaW50OwotLQkgIG1ibGVuID0gd2NydG9tYiAobWIsIHdjLCAmcHMpOwotLQkgIGlmICht YmxlbiA+PSAwKQotLQkgICAgbWJbbWJsZW5dID0gJ1wwJzsKLSsJICBtbGVuID0gd2NydG9tYiAo bWIsIHdjLCAmcHMpOwotKwkgIGlmIChtbGVuID49IDApCi0rCSAgICBtYlttbGVuXSA9ICdcMCc7 Ci0gCSAgcmxfYmVnaW5fdW5kb19ncm91cCAoKTsKLSAJICBybF92aV9kZWxldGUgKDEsIDApOwot IAkgIGlmIChybF9wb2ludCA8IHApCS8qIERpZCB3ZSByZXRyZWF0IGF0IEVPTD8gKi8KLUBAIC03 NTIsNyArODI1LDcgQEAgX3JsX3ZpX2NoYW5nZV9tYmNoYXJfY2FzZSAoY291bnQpCi0gCSAgcmxf dmlfY2hlY2sgKCk7Ci0gCX0KLSAgICAgICBlbHNlCi0tICAgICAgICBybF9mb3J3YXJkX2NoYXIg KDEsIDApOwotKwlybF9mb3J3YXJkX2NoYXIgKDEsIDApOwotICAgICB9Ci0gCi0gICByZXR1cm4g MDsKLUBAIC03OTksNyArODcyLDcgQEAgcmxfdmlfY2hhbmdlX2Nhc2UgKGNvdW50LCBpZ25vcmUp Ci0gCSAgX3JsX2luc2VydF9jaGFyICgxLCBjKTsKLSAJICBybF9lbmRfdW5kb19ncm91cCAoKTsK LSAJICBybF92aV9jaGVjayAoKTsKLS0gICAgICAgIH0KLSsJfQotICAgICAgIGVsc2UKLSAJcmxf Zm9yd2FyZF9jaGFyICgxLCBjKTsKLSAgICAgfQotQEAgLTgyMCw2ICs4OTMsMTUgQEAgcmxfdmlf cHV0IChjb3VudCwga2V5KQotICAgcmV0dXJuICgwKTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQKLStf cmxfdmlfYmFja3VwICgpCi0rewotKyAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3Jp ZW50ZWQgPT0gMCkKLSsgICAgcmxfcG9pbnQgPSBfcmxfZmluZF9wcmV2X21iY2hhciAocmxfbGlu ZV9idWZmZXIsIHJsX3BvaW50LCBNQl9GSU5EX05PTlpFUk8pOwotKyAgZWxzZQotKyAgICBybF9w b2ludC0tOwotK30KLSsKLSBpbnQKLSBybF92aV9jaGVjayAoKQotIHsKLUBAIC04MjgsNyArOTEw LDcgQEAgcmxfdmlfY2hlY2sgKCkKLSAgICAgICBpZiAoTUJfQ1VSX01BWCA+IDEgJiYgcmxfYnl0 ZV9vcmllbnRlZCA9PSAwKQotIAlybF9wb2ludCA9IF9ybF9maW5kX3ByZXZfbWJjaGFyIChybF9s aW5lX2J1ZmZlciwgcmxfcG9pbnQsIE1CX0ZJTkRfTk9OWkVSTyk7Ci0gICAgICAgZWxzZQotLSAg ICAgICAgcmxfcG9pbnQtLTsKLSsJcmxfcG9pbnQtLTsKLSAgICAgfQotICAgcmV0dXJuICgwKTsK LSB9Ci1AQCAtODQ0LDQ3ICs5MjYsMTA2IEBAIHJsX3ZpX2NvbHVtbiAoY291bnQsIGtleSkKLSAg IHJldHVybiAoMCk7Ci0gfQotIAotLWludAotLXJsX3ZpX2RvbW92ZSAoa2V5LCBuZXh0a2V5KQot LSAgICAgaW50IGtleSwgKm5leHRrZXk7Ci0rLyogUHJvY2VzcyBDIGFzIHBhcnQgb2YgdGhlIGN1 cnJlbnQgbnVtZXJpYyBhcmd1bWVudC4gIFJldHVybiAtMSBpZiB0aGUKLSsgICBhcmd1bWVudCBz aG91bGQgYmUgYWJvcnRlZCwgMCBpZiB3ZSBzaG91bGQgbm90IHJlYWQgYW55IG1vcmUgY2hhcnMs IGFuZAotKyAgIDEgaWYgd2Ugc2hvdWxkIGNvbnRpbnVlIHRvIHJlYWQgY2hhcnMuICovCi0rc3Rh dGljIGludAotK19ybF92aV9hcmdfZGlzcGF0Y2ggKGMpCi0rICAgICBpbnQgYzsKLSB7Ci0tICBp bnQgYywgc2F2ZTsKLS0gIGludCBvbGRfZW5kOwotKyAgaW50IGtleTsKLSAKLS0gIHJsX21hcmsg PSBybF9wb2ludDsKLS0gIFJMX1NFVFNUQVRFKFJMX1NUQVRFX01PUkVJTlBVVCk7Ci0tICBjID0g cmxfcmVhZF9rZXkgKCk7Ci0tICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRFX01PUkVJTlBVVCk7Ci0t ICAqbmV4dGtleSA9IGM7Ci0rICBrZXkgPSBjOwotKyAgaWYgKGMgPj0gMCAmJiBfcmxfa2V5bWFw W2NdLnR5cGUgPT0gSVNGVU5DICYmIF9ybF9rZXltYXBbY10uZnVuY3Rpb24gPT0gcmxfdW5pdmVy c2FsX2FyZ3VtZW50KQotKyAgICB7Ci0rICAgICAgcmxfbnVtZXJpY19hcmcgKj0gNDsKLSsgICAg ICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgYyA9IFVOTUVUQSAoYyk7Ci0gCi0tICBpZiAoIW1l bWJlciAoYywgdmlfbW90aW9uKSkKLSsgIGlmIChfcmxfZGlnaXRfcCAoYykpCi0gICAgIHsKLS0g ICAgICBpZiAoX3JsX2RpZ2l0X3AgKGMpKQotLQl7Ci0tCSAgc2F2ZSA9IHJsX251bWVyaWNfYXJn OwotLQkgIHJsX251bWVyaWNfYXJnID0gX3JsX2RpZ2l0X3ZhbHVlIChjKTsKLS0JICBybF9leHBs aWNpdF9hcmcgPSAxOwotLQkgIFJMX1NFVFNUQVRFIChSTF9TVEFURV9OVU1FUklDQVJHfFJMX1NU QVRFX1ZJTU9USU9OKTsKLS0JICBybF9kaWdpdF9sb29wMSAoKTsKLS0JICBSTF9VTlNFVFNUQVRF IChSTF9TVEFURV9WSU1PVElPTik7Ci0tCSAgcmxfbnVtZXJpY19hcmcgKj0gc2F2ZTsKLS0JICBS TF9TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQpOwotLQkgIGMgPSBybF9yZWFkX2tleSAoKTsJ LyogcmVhbCBjb21tYW5kICovCi0tCSAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQp OwotLQkgICpuZXh0a2V5ID0gYzsKLS0JfQotLSAgICAgIGVsc2UgaWYgKGtleSA9PSBjICYmIChr ZXkgPT0gJ2QnIHx8IGtleSA9PSAneScgfHwga2V5ID09ICdjJykpCi0tCXsKLS0JICBybF9tYXJr ID0gcmxfZW5kOwotLQkgIHJsX2JlZ19vZl9saW5lICgxLCBjKTsKLS0JICBfcmxfdmlfbGFzdF9t b3Rpb24gPSBjOwotLQkgIHJldHVybiAoMCk7Ci0tCX0KLSsgICAgICBpZiAocmxfZXhwbGljaXRf YXJnKQotKwlybF9udW1lcmljX2FyZyA9IChybF9udW1lcmljX2FyZyAqIDEwKSArIF9ybF9kaWdp dF92YWx1ZSAoYyk7Ci0gICAgICAgZWxzZQotLQlyZXR1cm4gKC0xKTsKLSsJcmxfbnVtZXJpY19h cmcgPSBfcmxfZGlnaXRfdmFsdWUgKGMpOwotKyAgICAgIHJsX2V4cGxpY2l0X2FyZyA9IDE7Ci0r ICAgICAgcmV0dXJuIDE7CQkvKiBrZWVwIGdvaW5nICovCi0gICAgIH0KLSsgIGVsc2UKLSsgICAg ewotKyAgICAgIHJsX2NsZWFyX21lc3NhZ2UgKCk7Ci0rICAgICAgcmxfc3R1ZmZfY2hhciAoa2V5 KTsKLSsgICAgICByZXR1cm4gMDsJCS8qIGRvbmUgKi8KLSsgICAgfQotK30KLSsKLSsvKiBBIHNp bXBsaWZpZWQgbG9vcCBmb3IgdmkuIERvbid0IGRpc3BhdGNoIGtleSBhdCBlbmQuCi0rICAgRG9u J3QgcmVjb2duaXplIG1pbnVzIHNpZ24/Ci0rICAgU2hvdWxkIHRoaXMgZG8gcmxfc2F2ZV9wcm9t cHQvcmxfcmVzdG9yZV9wcm9tcHQ/ICovCi0rc3RhdGljIGludAotK3JsX2RpZ2l0X2xvb3AxICgp Ci0rewotKyAgaW50IGMsIHI7Ci0rCi0rICB3aGlsZSAoMSkKLSsgICAgewotKyAgICAgIGlmIChf cmxfYXJnX292ZXJmbG93ICgpKQotKwlyZXR1cm4gMTsKLSsKLSsgICAgICBjID0gX3JsX2FyZ19n ZXRjaGFyICgpOwotKwotKyAgICAgIHIgPSBfcmxfdmlfYXJnX2Rpc3BhdGNoIChjKTsKLSsgICAg ICBpZiAociA8PSAwKQotKwlicmVhazsKLSsgICAgfQotKwotKyAgUkxfVU5TRVRTVEFURShSTF9T VEFURV9OVU1FUklDQVJHKTsKLSsgIHJldHVybiAoMCk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0r X3JsX212Y3h0X2luaXQgKG0sIG9wLCBrZXkpCi0rICAgICBfcmxfdmltb3Rpb25fY3h0ICptOwot KyAgICAgaW50IG9wLCBrZXk7Ci0rewotKyAgbS0+b3AgPSBvcDsKLSsgIG0tPnN0YXRlID0gbS0+ ZmxhZ3MgPSAwOwotKyAgbS0+bmN4dCA9IDA7Ci0rICBtLT5udW1lcmljX2FyZyA9IC0xOwotKyAg bS0+c3RhcnQgPSBybF9wb2ludDsKLSsgIG0tPmVuZCA9IHJsX2VuZDsKLSsgIG0tPmtleSA9IGtl eTsKLSsgIG0tPm1vdGlvbiA9IC0xOwotK30KLSsKLStzdGF0aWMgX3JsX3ZpbW90aW9uX2N4dCAq Ci0rX3JsX212Y3h0X2FsbG9jIChvcCwga2V5KQotKyAgICAgaW50IG9wLCBrZXk7Ci0rewotKyAg X3JsX3ZpbW90aW9uX2N4dCAqbTsKLSsKLSsgIG0gPSB4bWFsbG9jIChzaXplb2YgKF9ybF92aW1v dGlvbl9jeHQpKTsKLSsgIF9ybF9tdmN4dF9pbml0IChtLCBvcCwga2V5KTsKLSsgIHJldHVybiBt OwotK30KLSsKLStzdGF0aWMgdm9pZAotK19ybF9tdmN4dF9kaXNwb3NlIChtKQotKyAgICAgX3Js X3ZpbW90aW9uX2N4dCAqbTsKLSt7Ci0rICB4ZnJlZSAobSk7Ci0rfQotIAotLSAgX3JsX3ZpX2xh c3RfbW90aW9uID0gYzsKLStzdGF0aWMgaW50Ci0rcmxfZG9tb3ZlX21vdGlvbl9jYWxsYmFjayAo bSkKLSsgICAgIF9ybF92aW1vdGlvbl9jeHQgKm07Ci0rewotKyAgaW50IGMsIHNhdmUsIHI7Ci0r ICBpbnQgb2xkX2VuZDsKLSsKLSsgIF9ybF92aV9sYXN0X21vdGlvbiA9IGMgPSBtLT5tb3Rpb247 Ci0gCi0gICAvKiBBcHBlbmQgYSBibGFuayBjaGFyYWN0ZXIgdGVtcG9yYXJpbHkgc28gdGhhdCB0 aGUgbW90aW9uIHJvdXRpbmVzCi0gICAgICB3b3JrIHJpZ2h0IGF0IHRoZSBlbmQgb2YgdGhlIGxp bmUuICovCi1AQCAtOTEzLDcgKzEwNTQsNyBAQCBybF92aV9kb21vdmUgKGtleSwgbmV4dGtleSkK LSAKLSAgIC8qIElmIGN3IG9yIGNXLCBiYWNrIHVwIHRvIHRoZSBlbmQgb2YgYSB3b3JkLCBzbyB0 aGUgYmVoYXZpb3VyIG9mIGNlCi0gICAgICBvciBjRSBpcyB0aGUgYWN0dWFsIHJlc3VsdC4gIEJy dXRlLWZvcmNlLCBubyBzdWJ0bGV0eS4gKi8KLS0gIGlmIChrZXkgPT0gJ2MnICYmIHJsX3BvaW50 ID49IHJsX21hcmsgJiYgKF9ybF90b191cHBlciAoYykgPT0gJ1cnKSkKLSsgIGlmIChtLT5rZXkg PT0gJ2MnICYmIHJsX3BvaW50ID49IHJsX21hcmsgJiYgKF9ybF90b191cHBlciAoYykgPT0gJ1cn KSkKLSAgICAgewotICAgICAgIC8qIERvbid0IG1vdmUgZmFydGhlciBiYWNrIHRoYW4gd2hlcmUg d2Ugc3RhcnRlZC4gKi8KLSAgICAgICB3aGlsZSAocmxfcG9pbnQgPiBybF9tYXJrICYmIHdoaXRl c3BhY2UgKHJsX2xpbmVfYnVmZmVyW3JsX3BvaW50XSkpCi1AQCAtOTIyLDcgKzEwNjMsNyBAQCBy bF92aV9kb21vdmUgKGtleSwgbmV4dGtleSkKLSAgICAgICAvKiBQb3NpeC4yIHNheXMgdGhhdCBp ZiBjdyBvciBjVyBtb3ZlcyB0aGUgY3Vyc29yIHRvd2FyZHMgdGhlIGVuZCBvZgotIAkgdGhlIGxp bmUsIHRoZSBjaGFyYWN0ZXIgdW5kZXIgdGhlIGN1cnNvciBzaG91bGQgYmUgZGVsZXRlZC4gKi8K LSAgICAgICBpZiAocmxfcG9pbnQgPT0gcmxfbWFyaykKLS0gICAgICAgIHJsX3BvaW50Kys7Ci0r CXJsX3BvaW50Kys7Ci0gICAgICAgZWxzZQotIAl7Ci0gCSAgLyogTW92ZSBwYXN0IHRoZSBlbmQg b2YgdGhlIHdvcmQgc28gdGhhdCB0aGUga2lsbCBkb2Vzbid0Ci1AQCAtOTM2LDg4ICsxMDc3LDE0 MiBAQCBybF92aV9kb21vdmUgKGtleSwgbmV4dGtleSkKLSAgIGlmIChybF9tYXJrIDwgcmxfcG9p bnQpCi0gICAgIFNXQVAgKHJsX3BvaW50LCBybF9tYXJrKTsKLSAKLS0gIHJldHVybiAoMCk7Ci0r I2lmIGRlZmluZWQgKFJFQURMSU5FX0NBTExCQUNLUykKLSsgIGlmIChSTF9JU1NUQVRFIChSTF9T VEFURV9DQUxMQkFDSykpCi0rICAgICgqcmxfcmVkaXNwbGF5X2Z1bmN0aW9uKSgpOwkJLyogbWFr ZSBzdXJlIG1vdGlvbiBpcyBkaXNwbGF5ZWQgKi8KLSsjZW5kaWYKLSsKLSsgIHIgPSB2aWRvbW92 ZV9kaXNwYXRjaCAobSk7Ci0rCi0rICByZXR1cm4gKHIpOwotIH0KLSAKLS0vKiBQcm9jZXNzIEMg YXMgcGFydCBvZiB0aGUgY3VycmVudCBudW1lcmljIGFyZ3VtZW50LiAgUmV0dXJuIC0xIGlmIHRo ZQotLSAgIGFyZ3VtZW50IHNob3VsZCBiZSBhYm9ydGVkLCAwIGlmIHdlIHNob3VsZCBub3QgcmVh ZCBhbnkgbW9yZSBjaGFycywgYW5kCi0tICAgMSBpZiB3ZSBzaG91bGQgY29udGludWUgdG8gcmVh ZCBjaGFycy4gKi8KLSsjZGVmaW5lIFJMX1ZJTU9WRU5VTUFSRygpCShSTF9JU1NUQVRFIChSTF9T VEFURV9WSU1PVElPTikgJiYgUkxfSVNTVEFURSAoUkxfU1RBVEVfTlVNRVJJQ0FSRykpCi0rCi0g c3RhdGljIGludAotLV9ybF92aV9hcmdfZGlzcGF0Y2ggKGMpCi0tICAgICBpbnQgYzsKLStybF9k b21vdmVfcmVhZF9jYWxsYmFjayAobSkKLSsgICAgIF9ybF92aW1vdGlvbl9jeHQgKm07Ci0gewot LSAgaW50IGtleTsKLSsgIGludCBjLCBzYXZlOwotIAotLSAga2V5ID0gYzsKLS0gIGlmIChjID49 IDAgJiYgX3JsX2tleW1hcFtjXS50eXBlID09IElTRlVOQyAmJiBfcmxfa2V5bWFwW2NdLmZ1bmN0 aW9uID09IHJsX3VuaXZlcnNhbF9hcmd1bWVudCkKLSsgIGMgPSBtLT5tb3Rpb247Ci0rCi0rICBp ZiAobWVtYmVyIChjLCB2aV9tb3Rpb24pKQotICAgICB7Ci0tICAgICAgcmxfbnVtZXJpY19hcmcg Kj0gNDsKLS0gICAgICByZXR1cm4gMTsKLSsjaWYgZGVmaW5lZCAoUkVBRExJTkVfQ0FMTEJBQ0tT KQotKyAgICAgIC8qIElmIHdlIGp1c3QgcmVhZCBhIHZpLW1vZGUgbW90aW9uIGNvbW1hbmQgbnVt ZXJpYyBhcmd1bWVudCwgdHVybiBvZmYKLSsJIHRoZSBgcmVhZGluZyBudW1lcmljIGFyZycgc3Rh dGUgKi8KLSsgICAgICBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfQ0FMTEJBQ0spICYmIFJMX1ZJ TU9WRU5VTUFSRygpKQotKwlSTF9VTlNFVFNUQVRFIChSTF9TVEFURV9OVU1FUklDQVJHKTsKLSsj ZW5kaWYKLSsgICAgICAvKiBTaG91bGQgZG8gZXZlcnl0aGluZywgaW5jbHVkaW5nIHR1cm5pbmcg b2ZmIFJMX1NUQVRFX1ZJTU9USU9OICovCi0rICAgICAgcmV0dXJuIChybF9kb21vdmVfbW90aW9u X2NhbGxiYWNrIChtKSk7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKG0tPmtleSA9PSBjICYmIChtLT5r ZXkgPT0gJ2QnIHx8IG0tPmtleSA9PSAneScgfHwgbS0+a2V5ID09ICdjJykpCi0rICAgIHsKLSsg ICAgICBybF9tYXJrID0gcmxfZW5kOwotKyAgICAgIHJsX2JlZ19vZl9saW5lICgxLCBjKTsKLSsg ICAgICBfcmxfdmlfbGFzdF9tb3Rpb24gPSBjOwotKyAgICAgIFJMX1VOU0VUU1RBVEUgKFJMX1NU QVRFX1ZJTU9USU9OKTsKLSsgICAgICByZXR1cm4gKHZpZG9tb3ZlX2Rpc3BhdGNoIChtKSk7Ci0g ICAgIH0KLS0KLS0gIGMgPSBVTk1FVEEgKGMpOwotLQotLSAgaWYgKF9ybF9kaWdpdF9wIChjKSkK LSsjaWYgZGVmaW5lZCAoUkVBRExJTkVfQ0FMTEJBQ0tTKQotKyAgLyogWFhYIC0gdGhlc2UgbmVl ZCB0byBoYW5kbGUgcmxfdW5pdmVyc2FsX2FyZ3VtZW50IGJpbmRpbmdzICovCi0rICAvKiBSZWFk aW5nIHZpIG1vdGlvbiBjaGFyIGNvbnRpbnVpbmcgbnVtZXJpYyBhcmd1bWVudCAqLwotKyAgZWxz ZSBpZiAoX3JsX2RpZ2l0X3AgKGMpICYmIFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSAm JiBSTF9WSU1PVkVOVU1BUkcoKSkKLSAgICAgewotLSAgICAgIGlmIChybF9leHBsaWNpdF9hcmcp Ci0tCXJsX251bWVyaWNfYXJnID0gKHJsX251bWVyaWNfYXJnICogMTApICsgX3JsX2RpZ2l0X3Zh bHVlIChjKTsKLS0gICAgICBlbHNlCi0tCXJsX251bWVyaWNfYXJnID0gX3JsX2RpZ2l0X3ZhbHVl IChjKTsKLSsgICAgICByZXR1cm4gKF9ybF92aV9hcmdfZGlzcGF0Y2ggKGMpKTsKLSsgICAgfQot KyAgLyogUmVhZGluZSB2aSBtb3Rpb24gY2hhciBzdGFydGluZyBudW1lcmljIGFyZ3VtZW50ICov Ci0rICBlbHNlIGlmIChfcmxfZGlnaXRfcCAoYykgJiYgUkxfSVNTVEFURSAoUkxfU1RBVEVfQ0FM TEJBQ0spICYmIFJMX0lTU1RBVEUgKFJMX1NUQVRFX1ZJTU9USU9OKSAmJiAoUkxfSVNTVEFURSAo UkxfU1RBVEVfTlVNRVJJQ0FSRykgPT0gMCkpCi0rICAgIHsKLSsgICAgICBSTF9TRVRTVEFURSAo UkxfU1RBVEVfTlVNRVJJQ0FSRyk7Ci0rICAgICAgcmV0dXJuIChfcmxfdmlfYXJnX2Rpc3BhdGNo IChjKSk7Ci0rICAgIH0KLSsjZW5kaWYKLSsgIGVsc2UgaWYgKF9ybF9kaWdpdF9wIChjKSkKLSsg ICAgewotKyAgICAgIC8qIFRoaXMgY29kZSBwYXRoIHRha2VuIHdoZW4gbm90IGluIGNhbGxiYWNr IG1vZGUgKi8KLSsgICAgICBzYXZlID0gcmxfbnVtZXJpY19hcmc7Ci0rICAgICAgcmxfbnVtZXJp Y19hcmcgPSBfcmxfZGlnaXRfdmFsdWUgKGMpOwotICAgICAgIHJsX2V4cGxpY2l0X2FyZyA9IDE7 Ci0tICAgICAgcmV0dXJuIDE7Ci0rICAgICAgUkxfU0VUU1RBVEUgKFJMX1NUQVRFX05VTUVSSUNB UkcpOwotKyAgICAgIHJsX2RpZ2l0X2xvb3AxICgpOwotKyAgICAgIHJsX251bWVyaWNfYXJnICo9 IHNhdmU7Ci0rICAgICAgYyA9IHJsX3ZpX2RvbW92ZV9nZXRjaGFyIChtKTsKLSsgICAgICBpZiAo YyA8IDApCi0rCXsKLSsJICBtLT5tb3Rpb24gPSAwOwotKwkgIHJldHVybiAtMTsKLSsJfQotKyAg ICAgIG0tPm1vdGlvbiA9IGM7Ci0rICAgICAgcmV0dXJuIChybF9kb21vdmVfbW90aW9uX2NhbGxi YWNrIChtKSk7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotLSAgICAgIHJsX2NsZWFyX21lc3Nh Z2UgKCk7Ci0tICAgICAgcmxfc3R1ZmZfY2hhciAoa2V5KTsKLS0gICAgICByZXR1cm4gMDsKLSsg ICAgICBSTF9VTlNFVFNUQVRFIChSTF9TVEFURV9WSU1PVElPTik7Ci0rICAgICAgUkxfVU5TRVRT VEFURSAoUkxfU1RBVEVfTlVNRVJJQ0FSRyk7Ci0rICAgICAgcmV0dXJuICgxKTsKLSAgICAgfQot IH0KLSAKLS0vKiBBIHNpbXBsaWZpZWQgbG9vcCBmb3IgdmkuIERvbid0IGRpc3BhdGNoIGtleSBh dCBlbmQuCi0tICAgRG9uJ3QgcmVjb2duaXplIG1pbnVzIHNpZ24/Ci0tICAgU2hvdWxkIHRoaXMg ZG8gcmxfc2F2ZV9wcm9tcHQvcmxfcmVzdG9yZV9wcm9tcHQ/ICovCi0gc3RhdGljIGludAotLXJs X2RpZ2l0X2xvb3AxICgpCi0rcmxfdmlfZG9tb3ZlX2dldGNoYXIgKG0pCi0rICAgICBfcmxfdmlt b3Rpb25fY3h0ICptOwotIHsKLS0gIGludCBjLCByOwotKyAgaW50IGM7Ci0gCi0tICB3aGlsZSAo MSkKLS0gICAgewotLSAgICAgIGlmIChfcmxfYXJnX292ZXJmbG93ICgpKQotLQlyZXR1cm4gMTsK LSsgIFJMX1NFVFNUQVRFKFJMX1NUQVRFX01PUkVJTlBVVCk7Ci0rICBjID0gcmxfcmVhZF9rZXkg KCk7Ci0rICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRFX01PUkVJTlBVVCk7Ci0gCi0tICAgICAgYyA9 IF9ybF9hcmdfZ2V0Y2hhciAoKTsKLSsgIHJldHVybiBjOwotK30KLSAKLS0gICAgICByID0gX3Js X3ZpX2FyZ19kaXNwYXRjaCAoYyk7Ci0tICAgICAgaWYgKHIgPD0gMCkKLS0JYnJlYWs7Ci0tICAg IH0KLSsjaWYgZGVmaW5lZCAoUkVBRExJTkVfQ0FMTEJBQ0tTKQotK2ludAotK19ybF92aV9kb21v dmVfY2FsbGJhY2sgKG0pCi0rICAgICBfcmxfdmltb3Rpb25fY3h0ICptOwotK3sKLSsgIGludCBj LCByOwotIAotLSAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9OVU1FUklDQVJHKTsKLS0gIHJldHVy biAoMCk7Ci0rICBtLT5tb3Rpb24gPSBjID0gcmxfdmlfZG9tb3ZlX2dldGNoYXIgKG0pOwotKyAg LyogWFhYIC0gd2hhdCB0byBkbyBpZiB0aGlzIHJldHVybnMgLTE/ICBTaG91bGQgd2UgcmV0dXJu IDEgZm9yIGVvZiB0bwotKyAgICAgY2FsbGJhY2sgY29kZT8gKi8KLSsgIHIgPSBybF9kb21vdmVf cmVhZF9jYWxsYmFjayAobSk7Ci0rCi0rICByZXR1cm4gKChyID09IDApID8gciA6IDEpOwkvKiBu b3JtYWxpemUgcmV0dXJuIHZhbHVlcyAqLwotIH0KLSsjZW5kaWYKLSAKLSsvKiBUaGlzIGNvZGUg cGF0aCB0YWtlbiB3aGVuIG5vdCBpbiBjYWxsYmFjayBtb2RlLiAqLwotIGludAotLXJsX3ZpX2Rl bGV0ZV90byAoY291bnQsIGtleSkKLS0gICAgIGludCBjb3VudCwga2V5OwotK3JsX3ZpX2RvbW92 ZSAoeCwgaWdub3JlKQotKyAgICAgaW50IHgsICppZ25vcmU7Ci0gewotLSAgaW50IGM7Ci0rICBp bnQgcjsKLSsgIF9ybF92aW1vdGlvbl9jeHQgKm07Ci0gCi0tICBpZiAoX3JsX3VwcGVyY2FzZV9w IChrZXkpKQotLSAgICBybF9zdHVmZl9jaGFyICgnJCcpOwotLSAgZWxzZSBpZiAodmlfcmVkb2lu ZykKLS0gICAgcmxfc3R1ZmZfY2hhciAoX3JsX3ZpX2xhc3RfbW90aW9uKTsKLSsgIG0gPSBfcmxf dmltdmN4dDsKLSsgICppZ25vcmUgPSBtLT5tb3Rpb24gPSBybF92aV9kb21vdmVfZ2V0Y2hhciAo bSk7Ci0gCi0tICBpZiAocmxfdmlfZG9tb3ZlIChrZXksICZjKSkKLSsgIGlmIChtLT5tb3Rpb24g PCAwKQotICAgICB7Ci0tICAgICAgcmxfZGluZyAoKTsKLSsgICAgICBtLT5tb3Rpb24gPSAwOwot ICAgICAgIHJldHVybiAtMTsKLSAgICAgfQotIAotKyAgcmV0dXJuIChybF9kb21vdmVfcmVhZF9j YWxsYmFjayAobSkpOwotK30KLSsKLStzdGF0aWMgaW50Ci0rdmlfZGVsZXRlX2Rpc3BhdGNoICht KQotKyAgICAgX3JsX3ZpbW90aW9uX2N4dCAqbTsKLSt7Ci0gICAvKiBUaGVzZSBhcmUgdGhlIG1v dGlvbiBjb21tYW5kcyB0aGF0IGRvIG5vdCByZXF1aXJlIGFkanVzdGluZyB0aGUKLSAgICAgIG1h cmsuICovCi0tICBpZiAoKHN0cmNociAoIiBsfGheMGJCIiwgYykgPT0gMCkgJiYgKHJsX21hcmsg PCBybF9lbmQpKQotKyAgaWYgKCgoc3RyY2hyICgiIGx8aF4wYkJGVGAiLCBtLT5tb3Rpb24pID09 IDApICYmIChybF9wb2ludCA+PSBtLT5zdGFydCkpICYmCi0rICAgICAgKHJsX21hcmsgPCBybF9l bmQpKQotICAgICBybF9tYXJrKys7Ci0gCi0gICBybF9raWxsX3RleHQgKHJsX3BvaW50LCBybF9t YXJrKTsKLUBAIC0xMDI1LDMzICsxMjIwLDYxIEBAIHJsX3ZpX2RlbGV0ZV90byAoY291bnQsIGtl eSkKLSB9Ci0gCi0gaW50Ci0tcmxfdmlfY2hhbmdlX3RvIChjb3VudCwga2V5KQotK3JsX3ZpX2Rl bGV0ZV90byAoY291bnQsIGtleSkKLSAgICAgIGludCBjb3VudCwga2V5OwotIHsKLS0gIGludCBj LCBzdGFydF9wb3M7Ci0rICBpbnQgYywgcjsKLSAKLSsgIF9ybF92aW12Y3h0ID0gX3JsX212Y3h0 X2FsbG9jIChWSU1fREVMRVRFLCBrZXkpOwotKyAgX3JsX3ZpbXZjeHQtPnN0YXJ0ID0gcmxfcG9p bnQ7Ci0rCi0rICBybF9tYXJrID0gcmxfcG9pbnQ7Ci0gICBpZiAoX3JsX3VwcGVyY2FzZV9wIChr ZXkpKQotLSAgICBybF9zdHVmZl9jaGFyICgnJCcpOwotKyAgICB7Ci0rICAgICAgX3JsX3ZpbXZj eHQtPm1vdGlvbiA9ICckJzsKLSsgICAgICByID0gcmxfZG9tb3ZlX21vdGlvbl9jYWxsYmFjayAo X3JsX3ZpbXZjeHQpOwotKyAgICB9Ci0gICBlbHNlIGlmICh2aV9yZWRvaW5nKQotLSAgICBybF9z dHVmZl9jaGFyIChfcmxfdmlfbGFzdF9tb3Rpb24pOwotLQotLSAgc3RhcnRfcG9zID0gcmxfcG9p bnQ7Ci0rICAgIHsKLSsgICAgICBfcmxfdmltdmN4dC0+bW90aW9uID0gX3JsX3ZpX2xhc3RfbW90 aW9uOwotKyAgICAgIHIgPSBybF9kb21vdmVfbW90aW9uX2NhbGxiYWNrIChfcmxfdmltdmN4dCk7 Ci0rICAgIH0KLSsjaWYgZGVmaW5lZCAoUkVBRExJTkVfQ0FMTEJBQ0tTKQotKyAgZWxzZSBpZiAo UkxfSVNTVEFURSAoUkxfU1RBVEVfQ0FMTEJBQ0spKQotKyAgICB7Ci0rICAgICAgUkxfU0VUU1RB VEUgKFJMX1NUQVRFX1ZJTU9USU9OKTsKLSsgICAgICByZXR1cm4gKDApOwotKyAgICB9Ci0rI2Vu ZGlmCi0rICBlbHNlCi0rICAgIHIgPSBybF92aV9kb21vdmUgKGtleSwgJmMpOwotIAotLSAgaWYg KHJsX3ZpX2RvbW92ZSAoa2V5LCAmYykpCi0rICBpZiAociA8IDApCi0gICAgIHsKLSAgICAgICBy bF9kaW5nICgpOwotLSAgICAgIHJldHVybiAtMTsKLSsgICAgICByID0gLTE7Ci0gICAgIH0KLSAK LSsgIF9ybF9tdmN4dF9kaXNwb3NlIChfcmxfdmltdmN4dCk7Ci0rICBfcmxfdmltdmN4dCA9IDA7 Ci0rCi0rICByZXR1cm4gcjsKLSt9Ci0rCi0rc3RhdGljIGludAotK3ZpX2NoYW5nZV9kaXNwYXRj aCAobSkKLSsgICAgIF9ybF92aW1vdGlvbl9jeHQgKm07Ci0rewotICAgLyogVGhlc2UgYXJlIHRo ZSBtb3Rpb24gY29tbWFuZHMgdGhhdCBkbyBub3QgcmVxdWlyZSBhZGp1c3RpbmcgdGhlCi0gICAg ICBtYXJrLiAgY1t3V10gYXJlIGhhbmRsZWQgYnkgc3BlY2lhbC1jYXNlIGNvZGUgaW4gcmxfdmlf ZG9tb3ZlKCksCi0gICAgICBhbmQgYWxyZWFkeSBsZWF2ZSB0aGUgbWFyayBhdCB0aGUgY29ycmVj dCBsb2NhdGlvbi4gKi8KLS0gIGlmICgoc3RyY2hyICgiIGx8aHdXXjBiQiIsIGMpID09IDApICYm IChybF9tYXJrIDwgcmxfZW5kKSkKLSsgIGlmICgoKHN0cmNociAoIiBsfGh3V14wYkJGVGAiLCBt LT5tb3Rpb24pID09IDApICYmIChybF9wb2ludCA+PSBtLT5zdGFydCkpICYmCi0rICAgICAgKHJs X21hcmsgPCBybF9lbmQpKQotICAgICBybF9tYXJrKys7Ci0gCi0gICAvKiBUaGUgY3Vyc29yIG5l dmVyIG1vdmVzIHdpdGggY1t3V10uICovCi0tICBpZiAoKF9ybF90b191cHBlciAoYykgPT0gJ1cn KSAmJiBybF9wb2ludCA8IHN0YXJ0X3BvcykKLS0gICAgcmxfcG9pbnQgPSBzdGFydF9wb3M7Ci0r ICBpZiAoKF9ybF90b191cHBlciAobS0+bW90aW9uKSA9PSAnVycpICYmIHJsX3BvaW50IDwgbS0+ c3RhcnQpCi0rICAgIHJsX3BvaW50ID0gbS0+c3RhcnQ7Ci0gCi0gICBpZiAodmlfcmVkb2luZykK LSAgICAgewotQEAgLTEwNjksNDkgKzEyOTIsMTQ1IEBAIHJsX3ZpX2NoYW5nZV90byAoY291bnQs IGtleSkKLSAgICAgICBybF9iZWdpbl91bmRvX2dyb3VwICgpOwkJLyogdG8gbWFrZSB0aGUgYHUn IGNvbW1hbmQgd29yayAqLwotICAgICAgIHJsX2tpbGxfdGV4dCAocmxfcG9pbnQsIHJsX21hcmsp OwotICAgICAgIC8qIGBDJyBkb2VzIG5vdCBzYXZlIHRoZSB0ZXh0IGluc2VydGVkIGZvciB1bmRv aW5nIG9yIHJlZG9pbmcuICovCi0tICAgICAgaWYgKF9ybF91cHBlcmNhc2VfcCAoa2V5KSA9PSAw KQotLSAgICAgICAgX3JsX3ZpX2RvaW5nX2luc2VydCA9IDE7Ci0tICAgICAgcmxfdmlfc3RhcnRf aW5zZXJ0aW5nIChrZXksIHJsX251bWVyaWNfYXJnLCBybF9hcmdfc2lnbik7Ci0rICAgICAgaWYg KF9ybF91cHBlcmNhc2VfcCAobS0+a2V5KSA9PSAwKQotKwlfcmxfdmlfZG9pbmdfaW5zZXJ0ID0g MTsKLSsgICAgICAvKiBYWFggLS0gVE9ETyAtLSB1c2UgbS0+bnVtZXJpY2FyZz8gKi8KLSsgICAg ICBybF92aV9zdGFydF9pbnNlcnRpbmcgKG0tPmtleSwgcmxfbnVtZXJpY19hcmcsIHJsX2FyZ19z aWduKTsKLSAgICAgfQotIAotICAgcmV0dXJuICgwKTsKLSB9Ci0gCi0gaW50Ci0tcmxfdmlfeWFu a190byAoY291bnQsIGtleSkKLStybF92aV9jaGFuZ2VfdG8gKGNvdW50LCBrZXkpCi0gICAgICBp bnQgY291bnQsIGtleTsKLSB7Ci0tICBpbnQgYywgc2F2ZTsKLSsgIGludCBjLCByOwotKwotKyAg X3JsX3ZpbXZjeHQgPSBfcmxfbXZjeHRfYWxsb2MgKFZJTV9DSEFOR0UsIGtleSk7Ci0rICBfcmxf dmltdmN4dC0+c3RhcnQgPSBybF9wb2ludDsKLSAKLS0gIHNhdmUgPSBybF9wb2ludDsKLSsgIHJs X21hcmsgPSBybF9wb2ludDsKLSAgIGlmIChfcmxfdXBwZXJjYXNlX3AgKGtleSkpCi0tICAgIHJs X3N0dWZmX2NoYXIgKCckJyk7Ci0rICAgIHsKLSsgICAgICBfcmxfdmltdmN4dC0+bW90aW9uID0g JyQnOwotKyAgICAgIHIgPSBybF9kb21vdmVfbW90aW9uX2NhbGxiYWNrIChfcmxfdmltdmN4dCk7 Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHZpX3JlZG9pbmcpCi0rICAgIHsKLSsgICAgICBfcmxfdmlt dmN4dC0+bW90aW9uID0gX3JsX3ZpX2xhc3RfbW90aW9uOwotKyAgICAgIHIgPSBybF9kb21vdmVf bW90aW9uX2NhbGxiYWNrIChfcmxfdmltdmN4dCk7Ci0rICAgIH0KLSsjaWYgZGVmaW5lZCAoUkVB RExJTkVfQ0FMTEJBQ0tTKQotKyAgZWxzZSBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfQ0FMTEJB Q0spKQotKyAgICB7Ci0rICAgICAgUkxfU0VUU1RBVEUgKFJMX1NUQVRFX1ZJTU9USU9OKTsKLSsg ICAgICByZXR1cm4gKDApOwotKyAgICB9Ci0rI2VuZGlmCi0rICBlbHNlCi0rICAgIHIgPSBybF92 aV9kb21vdmUgKGtleSwgJmMpOwotIAotLSAgaWYgKHJsX3ZpX2RvbW92ZSAoa2V5LCAmYykpCi0r ICBpZiAociA8IDApCi0gICAgIHsKLSAgICAgICBybF9kaW5nICgpOwotLSAgICAgIHJldHVybiAt MTsKLSsgICAgICByID0gLTE7CS8qIG5vcm1hbGl6ZSByZXR1cm4gdmFsdWUgKi8KLSAgICAgfQot IAotKyAgX3JsX212Y3h0X2Rpc3Bvc2UgKF9ybF92aW12Y3h0KTsKLSsgIF9ybF92aW12Y3h0ID0g MDsKLSsKLSsgIHJldHVybiByOwotK30KLSsKLStzdGF0aWMgaW50Ci0rdmlfeWFua19kaXNwYXRj aCAobSkKLSsgICAgIF9ybF92aW1vdGlvbl9jeHQgKm07Ci0rewotICAgLyogVGhlc2UgYXJlIHRo ZSBtb3Rpb24gY29tbWFuZHMgdGhhdCBkbyBub3QgcmVxdWlyZSBhZGp1c3RpbmcgdGhlCi0gICAg ICBtYXJrLiAqLwotLSAgaWYgKChzdHJjaHIgKCIgbHxoXjAlYkIiLCBjKSA9PSAwKSAmJiAocmxf bWFyayA8IHJsX2VuZCkpCi0rICBpZiAoKChzdHJjaHIgKCIgbHxoXjAlYkJGVGAiLCBtLT5tb3Rp b24pID09IDApICYmIChybF9wb2ludCA+PSBtLT5zdGFydCkpICYmCi0rICAgICAgKHJsX21hcmsg PCBybF9lbmQpKQotICAgICBybF9tYXJrKys7Ci0gCi0gICBybF9iZWdpbl91bmRvX2dyb3VwICgp OwotICAgcmxfa2lsbF90ZXh0IChybF9wb2ludCwgcmxfbWFyayk7Ci0gICBybF9lbmRfdW5kb19n cm91cCAoKTsKLSAgIHJsX2RvX3VuZG8gKCk7Ci0tICBybF9wb2ludCA9IHNhdmU7Ci0rICBybF9w b2ludCA9IG0tPnN0YXJ0OwotIAotICAgcmV0dXJuICgwKTsKLSB9Ci0gCi0gaW50Ci0rcmxfdmlf eWFua190byAoY291bnQsIGtleSkKLSsgICAgIGludCBjb3VudCwga2V5OwotK3sKLSsgIGludCBj LCByOwotKwotKyAgX3JsX3ZpbXZjeHQgPSBfcmxfbXZjeHRfYWxsb2MgKFZJTV9ZQU5LLCBrZXkp OwotKyAgX3JsX3ZpbXZjeHQtPnN0YXJ0ID0gcmxfcG9pbnQ7Ci0rCi0rICBybF9tYXJrID0gcmxf cG9pbnQ7Ci0rICBpZiAoX3JsX3VwcGVyY2FzZV9wIChrZXkpKQotKyAgICB7Ci0rICAgICAgX3Js X3ZpbXZjeHQtPm1vdGlvbiA9ICckJzsKLSsgICAgICByID0gcmxfZG9tb3ZlX21vdGlvbl9jYWxs YmFjayAoX3JsX3ZpbXZjeHQpOwotKyAgICB9Ci0rI2lmIGRlZmluZWQgKFJFQURMSU5FX0NBTExC QUNLUykKLSsgIGVsc2UgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSkKLSsgICAg ewotKyAgICAgIFJMX1NFVFNUQVRFIChSTF9TVEFURV9WSU1PVElPTik7Ci0rICAgICAgcmV0dXJu ICgwKTsKLSsgICAgfQotKyNlbmRpZgotKyAgZWxzZQotKyAgICByID0gcmxfdmlfZG9tb3ZlIChr ZXksICZjKTsKLSsKLSsgIGlmIChyIDwgMCkKLSsgICAgewotKyAgICAgIHJsX2RpbmcgKCk7Ci0r ICAgICAgciA9IC0xOwotKyAgICB9Ci0rCi0rICBfcmxfbXZjeHRfZGlzcG9zZSAoX3JsX3ZpbXZj eHQpOwotKyAgX3JsX3ZpbXZjeHQgPSAwOwotKwotKyAgcmV0dXJuIHI7Ci0rfQotKwotK3N0YXRp YyBpbnQKLSt2aWRvbW92ZV9kaXNwYXRjaCAobSkKLSsgICAgIF9ybF92aW1vdGlvbl9jeHQgKm07 Ci0rewotKyAgaW50IHI7Ci0rCi0rICBzd2l0Y2ggKG0tPm9wKQotKyAgICB7Ci0rICAgIGNhc2Ug VklNX0RFTEVURToKLSsgICAgICByID0gdmlfZGVsZXRlX2Rpc3BhdGNoIChtKTsKLSsgICAgICBi cmVhazsKLSsgICAgY2FzZSBWSU1fQ0hBTkdFOgotKyAgICAgIHIgPSB2aV9jaGFuZ2VfZGlzcGF0 Y2ggKG0pOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFZJTV9ZQU5LOgotKyAgICAgIHIgPSB2 aV95YW5rX2Rpc3BhdGNoIChtKTsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAg ICBfcmxfZXJybXNnICgidmlkb21vdmVfZGlzcGF0Y2g6IHVua25vd24gb3BlcmF0b3IgJWQiLCBt LT5vcCk7Ci0rICAgICAgciA9IDE7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgIFJMX1VO U0VUU1RBVEUgKFJMX1NUQVRFX1ZJTU9USU9OKTsKLSsgIHJldHVybiByOwotK30KLSsKLStpbnQK LSBybF92aV9ydWJvdXQgKGNvdW50LCBrZXkpCi0gICAgICBpbnQgY291bnQsIGtleTsKLSB7Ci0t ICBpbnQgcCwgb3BvaW50OwotKyAgaW50IG9wb2ludDsKLSAKLSAgIGlmIChjb3VudCA8IDApCi0g ICAgIHJldHVybiAocmxfdmlfZGVsZXRlICgtY291bnQsIGtleSkpOwotQEAgLTExOTMsMTQgKzE1 MTIsMjIgQEAgc3RhdGljIGludAotIF9ybF92aV9jYWxsYmFja19jaGFyX3NlYXJjaCAoZGF0YSkK LSAgICAgIF9ybF9jYWxsYmFja19nZW5lcmljX2FyZyAqZGF0YTsKLSB7Ci0rICBpbnQgYzsKLSAj aWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKLS0gIF9ybF92aV9sYXN0X3NlYXJjaF9tYmxl biA9IF9ybF9yZWFkX21iY2hhciAoX3JsX3ZpX2xhc3Rfc2VhcmNoX21iY2hhciwgTUJfTEVOX01B WCk7Ci0rICBjID0gX3JsX3ZpX2xhc3Rfc2VhcmNoX21ibGVuID0gX3JsX3JlYWRfbWJjaGFyIChf cmxfdmlfbGFzdF9zZWFyY2hfbWJjaGFyLCBNQl9MRU5fTUFYKTsKLSAjZWxzZQotICAgUkxfU0VU U1RBVEUoUkxfU1RBVEVfTU9SRUlOUFVUKTsKLS0gIF9ybF92aV9sYXN0X3NlYXJjaF9jaGFyID0g cmxfcmVhZF9rZXkgKCk7Ci0rICBjID0gcmxfcmVhZF9rZXkgKCk7Ci0gICBSTF9VTlNFVFNUQVRF KFJMX1NUQVRFX01PUkVJTlBVVCk7Ci0gI2VuZGlmCi0gCi0rICBpZiAoYyA8PSAwKQotKyAgICBy ZXR1cm4gLTE7Ci0rCi0rI2lmICFkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQotKyAgX3JsX3Zp X2xhc3Rfc2VhcmNoX2NoYXIgPSBjOwotKyNlbmRpZgotKwotICAgX3JsX2NhbGxiYWNrX2Z1bmMg PSAwOwotICAgX3JsX3dhbnRfcmVkaXNwbGF5ID0gMTsKLSAKLUBAIC0xMjE2LDYgKzE1NDMsNyBA QCBpbnQKLSBybF92aV9jaGFyX3NlYXJjaCAoY291bnQsIGtleSkKLSAgICAgIGludCBjb3VudCwg a2V5OwotIHsKLSsgIGludCBjOwotICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQotICAg c3RhdGljIGNoYXIgKnRhcmdldDsKLSAgIHN0YXRpYyBpbnQgdGxlbjsKLUBAIC0xMjI0LDI3ICsx NTUyLDM4IEBAIHJsX3ZpX2NoYXJfc2VhcmNoIChjb3VudCwga2V5KQotICNlbmRpZgotIAotICAg aWYgKGtleSA9PSAnOycgfHwga2V5ID09ICcsJykKLS0gICAgX3JsX2NzX2RpciA9IChrZXkgPT0g JzsnKSA/IF9ybF9jc19vcmlnX2RpciA6IC1fcmxfY3Nfb3JpZ19kaXI7Ci0rICAgIHsKLSsgICAg ICBpZiAoX3JsX2NzX29yaWdfZGlyID09IDApCi0rCXJldHVybiAtMTsKLSsjaWYgZGVmaW5lZCAo SEFORExFX01VTFRJQllURSkKLSsgICAgICBpZiAoX3JsX3ZpX2xhc3Rfc2VhcmNoX21ibGVuID09 IDApCi0rCXJldHVybiAtMTsKLSsjZWxzZQotKyAgICAgIGlmIChfcmxfdmlfbGFzdF9zZWFyY2hf Y2hhciA9PSAwKQotKwlyZXR1cm4gLTE7Ci0rI2VuZGlmCi0rICAgICAgX3JsX2NzX2RpciA9IChr ZXkgPT0gJzsnKSA/IF9ybF9jc19vcmlnX2RpciA6IC1fcmxfY3Nfb3JpZ19kaXI7Ci0rICAgIH0K LSAgIGVsc2UKLSAgICAgewotICAgICAgIHN3aXRjaCAoa2V5KQotLSAgICAgICAgewotLSAgICAg ICAgY2FzZSAndCc6Ci0tICAgICAgICAgIF9ybF9jc19vcmlnX2RpciA9IF9ybF9jc19kaXIgPSBG VE87Ci0tICAgICAgICAgIGJyZWFrOwotLQotLSAgICAgICAgY2FzZSAnVCc6Ci0tICAgICAgICAg IF9ybF9jc19vcmlnX2RpciA9IF9ybF9jc19kaXIgPSBCVE87Ci0tICAgICAgICAgIGJyZWFrOwot LQotLSAgICAgICAgY2FzZSAnZic6Ci0tICAgICAgICAgIF9ybF9jc19vcmlnX2RpciA9IF9ybF9j c19kaXIgPSBGRklORDsKLS0gICAgICAgICAgYnJlYWs7Ci0tCi0tICAgICAgICBjYXNlICdGJzoK LS0gICAgICAgICAgX3JsX2NzX29yaWdfZGlyID0gX3JsX2NzX2RpciA9IEJGSU5EOwotLSAgICAg ICAgICBicmVhazsKLS0gICAgICAgIH0KLSsJewotKwljYXNlICd0JzoKLSsJICBfcmxfY3Nfb3Jp Z19kaXIgPSBfcmxfY3NfZGlyID0gRlRPOwotKwkgIGJyZWFrOwotKwotKwljYXNlICdUJzoKLSsJ ICBfcmxfY3Nfb3JpZ19kaXIgPSBfcmxfY3NfZGlyID0gQlRPOwotKwkgIGJyZWFrOwotKwotKwlj YXNlICdmJzoKLSsJICBfcmxfY3Nfb3JpZ19kaXIgPSBfcmxfY3NfZGlyID0gRkZJTkQ7Ci0rCSAg YnJlYWs7Ci0rCi0rCWNhc2UgJ0YnOgotKwkgIF9ybF9jc19vcmlnX2RpciA9IF9ybF9jc19kaXIg PSBCRklORDsKLSsJICBicmVhazsKLSsJfQotIAotICAgICAgIGlmICh2aV9yZWRvaW5nKQotIAl7 Ci1AQCAtMTI1MiwyMSArMTU5MSwyNyBAQCBybF92aV9jaGFyX3NlYXJjaCAoY291bnQsIGtleSkK LSAJfQotICNpZiBkZWZpbmVkIChSRUFETElORV9DQUxMQkFDS1MpCi0gICAgICAgZWxzZSBpZiAo UkxfSVNTVEFURSAoUkxfU1RBVEVfQ0FMTEJBQ0spKQotLSAgICAgICAgewotLSAgICAgICAgICBf cmxfY2FsbGJhY2tfZGF0YSA9IF9ybF9jYWxsYmFja19kYXRhX2FsbG9jIChjb3VudCk7Ci0tICAg ICAgICAgIF9ybF9jYWxsYmFja19kYXRhLT5pMSA9IF9ybF9jc19kaXI7Ci0tICAgICAgICAgIF9y bF9jYWxsYmFja19mdW5jID0gX3JsX3ZpX2NhbGxiYWNrX2NoYXJfc2VhcmNoOwotLSAgICAgICAg ICByZXR1cm4gKDApOwotLSAgICAgICAgfQotKwl7Ci0rCSAgX3JsX2NhbGxiYWNrX2RhdGEgPSBf cmxfY2FsbGJhY2tfZGF0YV9hbGxvYyAoY291bnQpOwotKwkgIF9ybF9jYWxsYmFja19kYXRhLT5p MSA9IF9ybF9jc19kaXI7Ci0rCSAgX3JsX2NhbGxiYWNrX2Z1bmMgPSBfcmxfdmlfY2FsbGJhY2tf Y2hhcl9zZWFyY2g7Ci0rCSAgcmV0dXJuICgwKTsKLSsJfQotICNlbmRpZgotICAgICAgIGVsc2UK LSAJewotICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQotLQkgIF9ybF92aV9sYXN0X3Nl YXJjaF9tYmxlbiA9IF9ybF9yZWFkX21iY2hhciAoX3JsX3ZpX2xhc3Rfc2VhcmNoX21iY2hhciwg TUJfTEVOX01BWCk7Ci0rCSAgYyA9IF9ybF9yZWFkX21iY2hhciAoX3JsX3ZpX2xhc3Rfc2VhcmNo X21iY2hhciwgTUJfTEVOX01BWCk7Ci0rCSAgaWYgKGMgPD0gMCkKLSsJICAgIHJldHVybiAtMTsK LSsJICBfcmxfdmlfbGFzdF9zZWFyY2hfbWJsZW4gPSBjOwotICNlbHNlCi0gCSAgUkxfU0VUU1RB VEUoUkxfU1RBVEVfTU9SRUlOUFVUKTsKLS0JICBfcmxfdmlfbGFzdF9zZWFyY2hfY2hhciA9IHJs X3JlYWRfa2V5ICgpOwotKwkgIGMgPSBybF9yZWFkX2tleSAoKTsKLSAJICBSTF9VTlNFVFNUQVRF KFJMX1NUQVRFX01PUkVJTlBVVCk7Ci0rCSAgaWYgKGMgPCAwKQotKwkgICAgcmV0dXJuIC0xOwot KwkgIF9ybF92aV9sYXN0X3NlYXJjaF9jaGFyID0gYzsKLSAjZW5kaWYKLSAJfQotICAgICB9Ci1A QCAtMTMwMiw3ICsxNjQ3LDcgQEAgcmxfdmlfbWF0Y2ggKGlnbm9yZSwga2V5KQotIAkgICAgICBw cmUgPSBybF9wb2ludDsKLSAJICAgICAgcmxfZm9yd2FyZF9jaGFyICgxLCBrZXkpOwotIAkgICAg ICBpZiAocHJlID09IHJsX3BvaW50KQotLQkgICAgICAgIGJyZWFrOwotKwkJYnJlYWs7Ci0gCSAg ICB9Ci0gCX0KLSAgICAgICBlbHNlCi1AQCAtMTMzMSw3ICsxNjc2LDcgQEAgcmxfdmlfbWF0Y2gg KGlnbm9yZSwga2V5KQotIAkgICAgewotIAkgICAgICBwb3MgPSBfcmxfZmluZF9wcmV2X21iY2hh ciAocmxfbGluZV9idWZmZXIsIHBvcywgTUJfRklORF9BTlkpOwotIAkgICAgICBpZiAodG1wID09 IHBvcykKLS0JICAgICAgICBwb3MtLTsKLSsJCXBvcy0tOwotIAkgICAgfQotIAkgIGlmIChwb3Mg Pj0gMCkKLSAJICAgIHsKLUBAIC0xNDI2LDkgKzE3NzEsOSBAQCBfcmxfdmlfY2hhbmdlX2NoYXIg KGNvdW50LCBjLCBtYikKLSB9Ci0gCi0gc3RhdGljIGludAotLV9ybF92aV9jYWxsYmFja19nZXRj aGFyIChtYiwgbWJsZW4pCi0rX3JsX3ZpX2NhbGxiYWNrX2dldGNoYXIgKG1iLCBtbGVuKQotICAg ICAgY2hhciAqbWI7Ci0tICAgICBpbnQgbWJsZW47Ci0rICAgICBpbnQgbWxlbjsKLSB7Ci0gICBp bnQgYzsKLSAKLUBAIC0xNDM2LDkgKzE3ODEsMTIgQEAgX3JsX3ZpX2NhbGxiYWNrX2dldGNoYXIg KG1iLCBtYmxlbikKLSAgIGMgPSBybF9yZWFkX2tleSAoKTsKLSAgIFJMX1VOU0VUU1RBVEUoUkxf U1RBVEVfTU9SRUlOUFVUKTsKLSAKLSsgIGlmIChjIDwgMCkKLSsgICAgcmV0dXJuIC0xOwotKwot ICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQotICAgaWYgKE1CX0NVUl9NQVggPiAxICYm IHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKLS0gICAgYyA9IF9ybF9yZWFkX21ic3RyaW5nIChjLCBt YiwgbWJsZW4pOwotKyAgICBjID0gX3JsX3JlYWRfbWJzdHJpbmcgKGMsIG1iLCBtbGVuKTsKLSAj ZW5kaWYKLSAKLSAgIHJldHVybiBjOwotQEAgLTE0NTQsNiArMTgwMiw5IEBAIF9ybF92aV9jYWxs YmFja19jaGFuZ2VfY2hhciAoZGF0YSkKLSAKLSAgIF9ybF92aV9sYXN0X3JlcGxhY2VtZW50ID0g YyA9IF9ybF92aV9jYWxsYmFja19nZXRjaGFyIChtYiwgTUJfTEVOX01BWCk7Ci0gCi0rICBpZiAo YyA8IDApCi0rICAgIHJldHVybiAtMTsKLSsKLSAgIF9ybF9jYWxsYmFja19mdW5jID0gMDsKLSAg IF9ybF93YW50X3JlZGlzcGxheSA9IDE7Ci0gCi1AQCAtMTQ4NSw2ICsxODM2LDkgQEAgcmxfdmlf Y2hhbmdlX2NoYXIgKGNvdW50LCBrZXkpCi0gICBlbHNlCi0gICAgIF9ybF92aV9sYXN0X3JlcGxh Y2VtZW50ID0gYyA9IF9ybF92aV9jYWxsYmFja19nZXRjaGFyIChtYiwgTUJfTEVOX01BWCk7Ci0g Ci0rICBpZiAoYyA8IDApCi0rICAgIHJldHVybiAtMTsKLSsKLSAgIHJldHVybiAoX3JsX3ZpX2No YW5nZV9jaGFyIChjb3VudCwgYywgbWIpKTsKLSB9Ci0gCi1AQCAtMTU3MCw4ICsxOTI0LDggQEAg cmxfdmlfcmVwbGFjZSAoY291bnQsIGtleSkKLSAgICAgICB2aV9yZXBsYWNlX21hcFtORVdMSU5F XS5mdW5jdGlvbiA9IHJsX25ld2xpbmU7Ci0gCi0gICAgICAgLyogSWYgdGhlIG5vcm1hbCB2aSBp bnNlcnRpb24ga2V5bWFwIGhhcyBeSCBib3VuZCB0byBlcmFzZSwgZG8gdGhlCi0tICAgICAgICAg c2FtZSBoZXJlLiAgUHJvYmFibHkgc2hvdWxkIHJlbW92ZSB0aGUgYXNzaWdubWVudCB0byBSVUJP VVQgdXAKLS0gICAgICAgICB0aGVyZSwgYnV0IEkgZG9uJ3QgdGhpbmsgaXQgd2lsbCBtYWtlIGEg ZGlmZmVyZW5jZSBpbiByZWFsIGxpZmUuICovCi0rCSBzYW1lIGhlcmUuICBQcm9iYWJseSBzaG91 bGQgcmVtb3ZlIHRoZSBhc3NpZ25tZW50IHRvIFJVQk9VVCB1cAotKwkgdGhlcmUsIGJ1dCBJIGRv bid0IHRoaW5rIGl0IHdpbGwgbWFrZSBhIGRpZmZlcmVuY2UgaW4gcmVhbCBsaWZlLiAqLwotICAg ICAgIGlmICh2aV9pbnNlcnRpb25fa2V5bWFwW0NUUkwgKCdIJyldLnR5cGUgPT0gSVNGVU5DICYm Ci0gCSAgdmlfaW5zZXJ0aW9uX2tleW1hcFtDVFJMICgnSCcpXS5mdW5jdGlvbiA9PSBybF9ydWJv dXQpCi0gCXZpX3JlcGxhY2VfbWFwW0NUUkwgKCdIJyldLmZ1bmN0aW9uID0gcmxfdmlfb3ZlcnN0 cmlrZV9kZWxldGU7Ci1AQCAtMTYxOSw3ICsxOTczLDcgQEAgX3JsX3ZpX3NldF9tYXJrICgpCi0g ICBjaCA9IHJsX3JlYWRfa2V5ICgpOwotICAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9NT1JFSU5Q VVQpOwotIAotLSAgaWYgKGNoIDwgJ2EnIHx8IGNoID4gJ3onKQotKyAgaWYgKGNoIDwgMCB8fCBj aCA8ICdhJyB8fCBjaCA+ICd6JykJLyogbWFrZSB0ZXN0IGFnYWluc3QgMCBleHBsaWNpdCAqLwot ICAgICB7Ci0gICAgICAgcmxfZGluZyAoKTsKLSAgICAgICByZXR1cm4gLTE7Ci1AQCAtMTY3MSw3 ICsyMDI1LDcgQEAgX3JsX3ZpX2dvdG9fbWFyayAoKQotICAgICAgIHJsX3BvaW50ID0gcmxfbWFy azsKLSAgICAgICByZXR1cm4gMDsKLSAgICAgfQotLSAgZWxzZSBpZiAoY2ggPCAnYScgfHwgY2gg PiAneicpCi0rICBlbHNlIGlmIChjaCA8IDAgfHwgY2ggPCAnYScgfHwgY2ggPiAneicpCS8qIG1h a2UgdGVzdCBhZ2FpbnN0IDAgZXhwbGljaXQgKi8KLSAgICAgewotICAgICAgIHJsX2RpbmcgKCk7 Ci0gICAgICAgcmV0dXJuIC0xOwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUv eGZyZWUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuOTAuMjAxMTA3MDMvcmVhZGxpbmUveGZyZWUuYwky MDExLTA3LTAzIDEwOjQ0OjQ1LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw1NyBAQAotKy8q IHhmcmVlLmMgLS0gc2FmZSB2ZXJzaW9uIG9mIGZyZWUgdGhhdCBpZ25vcmVzIGF0dGVtcHRzIHRv IGZyZWUgTlVMICovCi0rCi0rLyogQ29weXJpZ2h0IChDKSAxOTkxLTIwMTAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBS ZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQotKyAgIGZvciByZWFkaW5nIGxp bmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAg ICAgIAotKwotKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBSZWFkbGluZSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyovCi0rCi0rI2RlZmluZSBSRUFE TElORV9MSUJSQVJZCi0rCi0rI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCi0rI2luY2x1ZGUg PGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkIChIQVZFX1NURExJQl9IKQotKyMg IGluY2x1ZGUgPHN0ZGxpYi5oPgotKyNlbHNlCi0rIyAgaW5jbHVkZSAiYW5zaV9zdGRsaWIuaCIK LSsjZW5kaWYgLyogSEFWRV9TVERMSUJfSCAqLwotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKwot KyNpbmNsdWRlICJ4bWFsbG9jLmgiCi0rI2luY2x1ZGUgInJlYWRsaW5lLmgiCi0rCi0rLyogKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiAqLwotKy8qCQkJCQkJCQkgICAgKi8KLSsvKgkJICAgTWVtb3J5IERlYWxsb2NhdGlvbi4J CQkJICAgICovCi0rLyoJCQkJCQkJCSAgICAqLwotKy8qICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSsKLSsvKiBVc2Ug dGhpcyBhcyB0aGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIGFkZGluZyB1bndpbmQgcHJvdGVjdHMg c28gd2UKLSsgICBkb24ndCBuZWVkIHRvIGtub3cgd2hhdCBmcmVlKCkgcmV0dXJucy4gKi8KLSt2 b2lkCi0reGZyZWUgKHN0cmluZykKLSsgICAgIFBUUl9UIHN0cmluZzsKLSt7Ci0rICAvKiBMZWFr IGEgYml0LiAgKi8KLSsgIGlmIChSTF9JU1NUQVRFKFJMX1NUQVRFX1NJR0hBTkRMRVIpKQotKyAg ICByZXR1cm47Ci0rCi0rICBpZiAoc3RyaW5nKQotKyAgICBmcmVlIChzdHJpbmcpOwotK30KLUlu ZGV4OiBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3htYWxsb2MuYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjIuOTAuMjAxMTA3MDMub3JpZy9yZWFkbGluZS94bWFsbG9jLmMJMjAxMS0wNy0w MyAxMDo0MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRs aW5lL3htYWxsb2MuYwkyMDExLTA3LTAzIDEwOjQzOjU0LjAwMDAwMDAwMCArMDIwMAotQEAgLTEs MjMgKzEsMjQgQEAKLSAvKiB4bWFsbG9jLmMgLS0gc2FmZSB2ZXJzaW9ucyBvZiBtYWxsb2MgYW5k IHJlYWxsb2MgKi8KLSAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAxOTkxLTIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIFJlYWRsaW5l LCBhIGxpYnJhcnkgZm9yIHJlYWRpbmcgbGluZXMKLS0gICBvZiB0ZXh0IHdpdGggaW50ZXJhY3Rp dmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5Ci0rICAgZm9yIHJl YWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVk aXRpbmcuICAgICAgCi0gCi0tICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotLSAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotLSAgIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0 aW9uKSBhbnkKLS0gICBsYXRlciB2ZXJzaW9uLgotLQotLSAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotLSAgIFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlIEdOVQotLSAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsg ICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotICAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCBSZWFkbGluZTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu ICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0tICAgU29mdHdhcmUgRm91bmRhdGlvbiwgNTkg VGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwotKyAgIGFs b25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCi0rKi8KLSsKLSAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKLSAKLSAjaWYgZGVmaW5l ZCAoSEFWRV9DT05GSUdfSCkKLUBAIC0zMyw3ICszNCw2IEBACi0gI2VuZGlmIC8qIEhBVkVfU1RE TElCX0ggKi8KLSAKLSAjaW5jbHVkZSAieG1hbGxvYy5oIgotLSNpbmNsdWRlICJyZWFkbGluZS5o IgotIAotIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiogKi8KLSAvKgkJCQkJCQkJICAgICovCi1AQCAtNDEsOSArNDEsNiBA QAotIC8qCQkJCQkJCQkgICAgKi8KLSAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0gCi0tLyogeG1hbGxvYyBhbmQg eHJlYWxsb2MgYXJlIHByb3ZpZGVkIGJ5IEdEQi4gICovCi0tI2lmIDAKLS0KLSBzdGF0aWMgdm9p ZAotIG1lbW9yeV9lcnJvcl9hbmRfYWJvcnQgKGZuYW1lKQotICAgICAgY2hhciAqZm5hbWU7Ci1A QCAtODAsMjEgKzc3LDMgQEAgeHJlYWxsb2MgKHBvaW50ZXIsIGJ5dGVzKQotICAgICBtZW1vcnlf ZXJyb3JfYW5kX2Fib3J0ICgieHJlYWxsb2MiKTsKLSAgIHJldHVybiAodGVtcCk7Ci0gfQotLQot LS8qIHhtYWxsb2MgYW5kIHhyZWFsbG9jIGFyZSBwcm92aWRlZCBieSBHREIuICAqLwotLSNlbmRp ZiAvKiAwICovCi0tCi0tLyogVXNlIHRoaXMgYXMgdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBh ZGRpbmcgdW53aW5kIHByb3RlY3RzIHNvIHdlCi0tICAgZG9uJ3QgbmVlZCB0byBrbm93IHdoYXQg ZnJlZSgpIHJldHVybnMuICovCi0tdm9pZAotLXhmcmVlIChzdHJpbmcpCi0tICAgICBQVFJfVCBz dHJpbmc7Ci0tewotLSAgLyogTGVhayBhIGJpdC4gICovCi0tICBpZiAoUkxfSVNTVEFURShSTF9T VEFURV9TSUdIQU5ETEVSKSkKLS0gICAgcmV0dXJuOwotLQotLSN1bmRlZiBmcmVlCi0tICBpZiAo c3RyaW5nKQotLSAgICBmcmVlIChzdHJpbmcpOwotLX0KLUluZGV4OiBnZGItNy4yLjkwLjIwMTEw NzAzL3JlYWRsaW5lL3htYWxsb2MuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA3 MDMub3JpZy9yZWFkbGluZS94bWFsbG9jLmgJMjAxMS0wNy0wMyAxMDo0MDo1My4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNzAzL3JlYWRsaW5lL3htYWxsb2MuaAkyMDExLTA3 LTAzIDEwOjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjQgKzEsMjMgQEAKLSAvKiB4bWFs bG9jLmggLS0gbWVtb3J5IGFsbG9jYXRpb24gdGhhdCBhYm9ydHMgb24gZXJyb3JzLiAqLwotIAot LS8qIENvcHlyaWdodCAoQykgMTk5OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsv KiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSAKLS0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEg bGlicmFyeSBmb3IKLS0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBp bnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBH TlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKLSsgICBmb3IgcmVhZGlu ZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGlu Zy4gICAgICAKLSAKLS0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKLS0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IK LSsgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotICAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0tICAgVGhlIEdOVSBSZWFkbGluZSBMaWJy YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQotLSAgIHVzZWZ1 bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkKLS0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJl LCBhbmQKLS0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3Ig TElDRU5TRS4gIElmIHlvdSBkbyBub3QKLS0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICA1OSBUZW1wbGUgUGxh Y2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCi0rICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsg ICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgotKyovCi0gCi0gI2lmICFkZWZpbmVkIChfWE1BTExPQ19IXykKLSAjZGVmaW5l IF9YTUFMTE9DX0hfCi1AQCAtNDIsOSArNDEsNiBAQAotIC8qIHhtYWxsb2MgYW5kIHhyZWFsbG9j IHNob3VsZCBiZSBhbHNvIHByb3RlY3RlZCBmcm9tIFJMX1NUQVRFX1NJR0hBTkRMRVIuICAqLwot ICNkZWZpbmUgeGZyZWUgeGZyZWVfcmVhZGxpbmUKLSAKLS0vKiByZWFkbGluZS01LjEgYmFja3Bv cnQuICAqLwotLSNkZWZpbmUgZnJlZSB4ZnJlZQotLQotIGV4dGVybiBQVFJfVCB4bWFsbG9jIFBB UkFNUygoc2l6ZV90KSk7Ci0gZXh0ZXJuIFBUUl9UIHhyZWFsbG9jIFBBUkFNUygodm9pZCAqLCBz aXplX3QpKTsKLSBleHRlcm4gdm9pZCB4ZnJlZSBQQVJBTVMoKHZvaWQgKikpOwoKZGlmZiAtLWdp dCBhL2dkYi1iejcwMTEzMS1yZWFkbGluZTYyLTJvZjMucGF0Y2ggYi9nZGItYno3MDExMzEtcmVh ZGxpbmU2Mi0yb2YzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDQ1YmRl Li4wMDAwMDAwCi0tLSBhL2dkYi1iejcwMTEzMS1yZWFkbGluZTYyLTJvZjMucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwyMzEgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1w YXRjaGVzLzIwMTEtMDUvbXNnMDAwMDIuaHRtbAotU3ViamVjdDogW3BhdGNoXSB0ZXN0c3VpdGU6 IFRlc3QgcmVhZGxpbmUtNi4yICJhc2siIHJlZ3Jlc3Npb24KLQotSGksCi0KLXRoaXMgcHJvYmxl bSBkb2VzIG5vdCBhZmZlY3QgZGVmYXVsdCBGU0YgR0RCIGJ1aWxkIGFzIGl0IGlzIHVzaW5nIGJ1 bmRsZWQKLXJlYWRsaW5lLTUuMS4gIEJ1dCB3aXRoIHN5c3RlbSByZWFkbGluZS02LjIgYW5kIGJ1 aWxkIHVzaW5nOgotICAtLXdpdGgtc3lzdGVtLXJlYWRsaW5lICB1c2UgaW5zdGFsbGVkIHJlYWRs aW5lIGxpYnJhcnkKLQotR0RCIHdpbGwgbm8gbG9uZ2VyIGFzayBhYm91dCBkaXNwbGF5aW5nIHRv byBtYW55IHN5bWJvbHMgYW5kIGR1bXBzIHRoZW0gYWxsCi1pbW1lZGlhdGVseS4KLVBBU1M6Ci0J JCBnZGIgZ2RiCi0JKGdkYikgcCA8dGFiPjx0YWI+Ci0JRGlzcGxheSBhbGwgMjE0ODIgcG9zc2li aWxpdGllcz8gKHkgb3IgbilfCi1GQUlMOgotCSQgZ2RiIGdkYgotCShnZGIpIHAgPHRhYj48dGFi PgotCURpc3BsYXkgYWxsIDIyMTI5IHBvc3NpYmlsaXRpZXM/ICh5IG9yIG4pCi0JLi4vLi4vYmZk L2FvdXQtdGFyZ2V0LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzX3Rv X3NlY3Rpb24KLQkuLi8uLi9iZmQvYW91dDMyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3RpbWUKLQk8c2NyZWVucyBhbmQgc2NyZWVucyBvZiBkdW1wcyB3aXRo b3V0IGFueSBxdWVzdGlvbj4KLQotVGhpcyByZWdyZXNzaW9uIHdpbGwgc29vbiBzdGFydCBhZmZl Y3RpbmcgZGlzdHJvczoKLQlGU0YgR0RCIEhFQUQgIC0gUEFTUyAtIHVzaW5nIGJ1bmRsZWQgcmVh ZGxpbmUtNS4xCi0JZmVkb3JhLTE1ICAgICAtIEZBSUwgLSB1c2luZyBzeXN0ZW0gIHJlYWRsaW5l LTYuMgotCWZlZG9yYS0xNCAgICAgLSBQQVNTIC0gdXNpbmcgc3lzdGVtICByZWFkbGluZS02LjEK LQlkZWJpYW4tNi4wICAgIC0gUEFTUyAtIHVzaW5nIHN5c3RlbSAgcmVhZGxpbmUtNi4xCi0Ja3Vi dW50dS0xMC4xMCAtIFBBU1MgLSB1c2luZyBzeXN0ZW0gIHJlYWRsaW5lLTYuMQotCi1JIGhhdmUg YXNrZWQgYWJvdXQgaXQgb24gcmVhZGxpbmUgbWw6Ci0JUmU6IFtCdWctcmVhZGxpbmVdIGNhbGxi YWNrIG1vZGUgcGFnZXIgZGlzYWJsZSBzdGF0dXMKLQlodHRwczovL2xpc3RzLmdudS5vcmcvYXJj aGl2ZS9odG1sL2J1Zy1yZWFkbGluZS8yMDExLTA0L21zZzAwMDEyLmh0bWwKLVRoZSBzdWdnZXN0 ZWQgd29ya2Fyb3VuZCAoaW4gZmFjdCB0aGUgcmVhZGxpbmUtNS4xIGNvZGUgc3RhdGUpIGdvaW5n IHRvIHBhdGNoCi1pbnRvIHRoZSBwcm9wb3NlZCBGU0YgR0RCIGJ1bmRsZWQgcmVhZGxpbmUtNi4y LiAgRGlzdHJvcyB0aGVuIGNhbiBzdG9wIHVzaW5nCi0tLXdpdGgtc3lzdGVtLXJlYWRsaW5lIHRv IHN0aWxsIGZlYXR1cmUgcmVjZW50IGFuZCBzeXN0ZW0gbWF0Y2hpbmcgcmVhZGxpbmUKLXVudGls IHJlYWRsaW5lLTcuMCBnZXRzIHJlbGVhc2VkLgotCi1UaGlzIHJlZ3Jlc3Npb24gaGFzIGJlZW4g c28gZmFyIGNhdWdodCBvbmx5IHdpdGggc3lzdGVtIGRlYnVnIGluZm9zIGluc3RhbGxlZDoKLQkt UEFTUzogZ2RiLmJhc2UvY29tcGxldGlvbi5leHA6IGNvbXBsZXRlICgyKSAncCBub192YXJfbmFt ZWRfdGhpcy0nCi0JLVBBU1M6IGdkYi5iYXNlL2NvbXBsZXRpb24uZXhwOiBjb21wbGV0ZSAncCB2 YWx1ZXNbMF0uYScKLQktUEFTUzogZ2RiLmJhc2UvY29tcGxldGlvbi5leHA6IGNvbXBsZXRlICdw IHZhbHVlc1swXSAuIGEnCi0JLVBBU1M6IGdkYi5iYXNlL2NvbXBsZXRpb24uZXhwOiBjb21wbGV0 ZSAncCAmdmFsdWVzWzBdIC0+IGEnCi0JLVBBU1M6IGdkYi5iYXNlL2NvbXBsZXRpb24uZXhwOiBj b3BtbGV0aW9uIG9mIGZpZWxkIGluIGFub255bW91cyB1bmlvbgotCStGQUlMOiBnZGIuYmFzZS9j b21wbGV0aW9uLmV4cDogKHRpbWVvdXQpIGNvbXBsZXRlICgyKSAncCBub192YXJfbmFtZWRfdGhp cy0nCi0JK0ZBSUw6IGdkYi5iYXNlL2NvbXBsZXRpb24uZXhwOiAodGltZW91dCkgY29tcGxldGUg J3AgdmFsdWVzWzBdLmEnIDIKLQkrRkFJTDogZ2RiLmJhc2UvY29tcGxldGlvbi5leHA6ICh0aW1l b3V0KSBjb21wbGV0ZSAncCB2YWx1ZXNbMF0gLiBhJyAyCi0JK0ZBSUw6IGdkYi5iYXNlL2NvbXBs ZXRpb24uZXhwOiAodGltZW91dCkgY29tcGxldGUgJ3AgJnZhbHVlc1swXSAtPiBhJyAyCi0JK0ZB SUw6IGdkYi5iYXNlL2NvbXBsZXRpb24uZXhwOiBjb3BtbGV0aW9uIG9mIGZpZWxkIGluIGFub255 bW91cyB1bmlvbgotCi1JIHdpbGwgY2hlY2sgaXQgaW4gd2l0aCBubyBjb21tZW50cy4KLQotCi1U aGFua3MsCi1KYW4KLQotCi1nZGIvdGVzdHN1aXRlLwotMjAxMS0wNS0wMSAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIuYmFzZS9yZWFkbGluZS1h c2suYzogTmV3IGZpbGUuCi0JKiBnZGIuYmFzZS9yZWFkbGluZS1hc2suZXhwOiBOZXcgZmlsZS4K LQkqIGdkYi5iYXNlL3JlYWRsaW5lLWFzay5pbnB1dHJjOiBOZXcgZmlsZS4KLQotLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9yZWFkbGluZS1hc2suYwotQEAgLTAs MCArMSwyMyBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVi dWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0r ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotK2lu dAotK3N5bWJvbF8wMV9sZW5ndGhfNDBfX19fX19fX19fX19fX19fX19fX18sCi0rc3ltYm9sXzAy X2xlbmd0aF80MF9fX19fX19fX19fX19fX19fX19fXywKLStzeW1ib2xfMDNfbGVuZ3RoXzQwX19f X19fX19fX19fX19fX19fX19fLAotK3N5bWJvbF8wNF9sZW5ndGhfNDBfX19fX19fX19fX19fX19f X19fX18sCi0rc3ltYm9sXzEwX2xlbmd0aF80MF9fX19fX19fX19fX19fX19fX19fXzsKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcmVhZGxpbmUtYXNrLmV4cAot QEAgLTAsMCArMSwxMTggQEAKLSsjIENvcHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3Nl dCB0ZXN0ZmlsZSByZWFkbGluZS1hc2sKLStzZXQgZXhlY3V0YWJsZSAke3Rlc3RmaWxlfS54Ci0r c2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRp cn0vJHtleGVjdXRhYmxlfQotK3NldCBpbnB1dHJjICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0 ZmlsZX0uaW5wdXRyYwotKwotK2lmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9 LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBvYmplY3Qge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAg IHVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBJTlBV VFJDIGdldHMgcmVzZXQgZm9yIHRoZSBuZXh0IHRlc3RmaWxlLgotK3NldGVudiBJTlBVVFJDICRp bnB1dHJjCi0rY2xlYW5fcmVzdGFydCAke2V4ZWN1dGFibGV9Ci0rCi0rZ2RiX3Rlc3Rfbm9fb3V0 cHV0ICJzZXQgd2lkdGggNTAiCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgaGVpZ2h0IDMiCi0r Ci0rc2V0IGNtZCAicCBzeW1ib2xfMCIKLStzZW5kX2dkYiAiJGNtZFx0IgotK3NldCB0ZXN0ICJi ZWxsIGZvciBtb3JlIG1lc3NhZ2UiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgewotKyAg ICAtcmUgIiRjbWRcMDA3JCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSt9Ci0rCi0rc2VuZF9n ZGIgIlx0IgotK3NldCB0ZXN0ICJtb3JlIG1lc3NhZ2UgZm9yIDAxIGFuZCAwMiIKLStnZGJfdGVz dF9tdWx0aXBsZSAiIiAkdGVzdCB7Ci0rICAgIC1yZSAiXlxyXG5zeW1ib2xfMDFfbGVuZ3RoXzQw X19fX19fX19fX19fX19fX19fX19fXHJcbnN5bWJvbF8wMl9sZW5ndGhfNDBfX19fX19fX19fX19f X19fX19fX19cclxuLS1Nb3JlLS0kIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotKyAgICAtcmUg IiRnZGJfcHJvbXB0ICIgewotKwlmYWlsICR0ZXN0Ci0rICAgIH0KLSt9Ci0rCi0rIyBUaGVyZSBn ZXQgc29tZSBWVDEwMCBjaGFyYWN0ZXJzIHByaW50ZWQuCi0rCi0rc2VuZF9nZGIgIlxyIgotK3Nl dCB0ZXN0ICJtb3JlIG1lc3NhZ2UgZm9yIDAzIgotK2dkYl90ZXN0X211bHRpcGxlICIiICR0ZXN0 IHsKLSsgICAgLXJlICJccnN5bWJvbF8wM19sZW5ndGhfNDBfX19fX19fX19fX19fX19fX19fX19c clxuLS1Nb3JlLS0kIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotK30KLSsKLSsjICIkZ2RiX3By b21wdCAkIiB3aWxsIG5vdCBtYXRjaCBhcyAkY21kIGdldHMgb3V0cHV0OiAkZ2RiX3Byb21wdCBw IHN5bWJvbF8wCi0rIyBBbmQgIiRnZGJfcHJvbXB0IHAgc3ltYm9sXzAiIGNhbm5vdCBiZSBtYXRj aGVkIGFzIHRoZSBkZWZhdWx0ICIkZ2RiX3Byb21wdCAkIgotKyMgc3RyaW5nIGZyb20gZ2RiX3Rl c3RfbXVsdGlwbGUgY291bGQgbWF0Y2ggZWFybGllci4KLSsKLStzZW5kX2dkYiAiXHIiCi0rc2V0 IHRlc3QgIm1vcmUgZmluaXNoIGZvciAwNCIKLStnZGJfdGVzdF9tdWx0aXBsZSAiIiAkdGVzdCB7 Ci0rICAgIC1yZSAiXHJzeW1ib2xfMDRfbGVuZ3RoXzQwX19fX19fX19fX19fX19fX19fX19fXHJc biRnZGJfcHJvbXB0ICIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSt9Ci0rCi0rZ2RiX3Rlc3Qg ImZvbyIge05vIHN5bWJvbCAic3ltYm9sXzBmb28iIGluIGN1cnJlbnQgY29udGV4dFwufSAiYWJv cnQgbW9yZSBtZXNzYWdlIgotKwotK3NldCBjbWQgInAgc3ltYm9sXyIKLStzZW5kX2dkYiAiJGNt ZFx0IgotK3NldCB0ZXN0ICJiZWxsIGZvciBhc2sgbWVzc2FnZSIKLStnZGJfdGVzdF9tdWx0aXBs ZSAiIiAkdGVzdCB7Ci0rICAgIC1yZSAiJGNtZFwwMDckIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAg fQotK30KLSsKLStzZW5kX2dkYiAiXHQiCi0rc2V0IHRlc3QgImFzayBtZXNzYWdlIgotK2dkYl90 ZXN0X211bHRpcGxlICIiICR0ZXN0IHsKLSsgICAgLXJlICJeXHJcbkRpc3BsYXkgYWxsIDUgcG9z c2liaWxpdGllc1xcPyBcXCh5IG9yIG5cXCkkIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotKyAg ICAtcmUgIiRnZGJfcHJvbXB0ICIgewotKwlmYWlsICR0ZXN0Ci0rCXJldHVybiAwCi0rICAgIH0K LSt9Ci0rCi0rc2VuZF9nZGIgInkiCi0rc2V0IHRlc3QgImFzayBtZXNzYWdlIGZvciAwMSBhbmQg MDIiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgewotKyAgICAtcmUgIl5cclxuc3ltYm9s XzAxX2xlbmd0aF80MF9fX19fX19fX19fX19fX19fX19fX1xyXG5zeW1ib2xfMDJfbGVuZ3RoXzQw X19fX19fX19fX19fX19fX19fX19fXHJcbi0tTW9yZS0tJCIgewotKwlwYXNzICR0ZXN0Ci0rICAg IH0KLSt9Ci0rCi0rIyBUaGVyZSBnZXQgc29tZSBWVDEwMCBjaGFyYWN0ZXJzIHByaW50ZWQuCi0r IyBTZWUgdGhlICIkZ2RiX3Byb21wdCAiIG1hdGNoIGxpa2UgaW4gIm1vcmUgZmluaXNoIGZvciAw NCIuCi0rCi0rc2VuZF9nZGIgIm4iCi0rc2V0IHRlc3QgImFzayBtZXNzYWdlIG5vIgotK2dkYl90 ZXN0X211bHRpcGxlICIiICR0ZXN0IHsKLSsgICAgLXJlICJcciRnZGJfcHJvbXB0ICIgewotKwlw YXNzICR0ZXN0Ci0rICAgIH0KLSt9Ci0rCi0rZ2RiX3Rlc3QgImZvbyIge05vIHN5bWJvbCAic3lt Ym9sX2ZvbyIgaW4gY3VycmVudCBjb250ZXh0XC59ICJhYm9ydCBhc2sgbWVzc2FnZSIKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcmVhZGxpbmUtYXNrLmlucHV0 cmMKLUBAIC0wLDAgKzEsMTYgQEAKLSsjIENvcHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwot K3NldCBjb21wbGV0aW9uLXF1ZXJ5LWl0ZW1zIDUKLQoKZGlmZiAtLWdpdCBhL2dkYi1iejcwMTEz MS1yZWFkbGluZTYyLTNvZjMucGF0Y2ggYi9nZGItYno3MDExMzEtcmVhZGxpbmU2Mi0zb2YzLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTcyNWE0Li4wMDAwMDAwCi0tLSBh L2dkYi1iejcwMTEzMS1yZWFkbGluZTYyLTNvZjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwx MjIgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTEtMDUv bXNnMDAwMTAuaHRtbAotU3ViamVjdDogW3BhdGNoIDQvM10gcmVhZGxpbmUtNi4yOiBTdWJzdGl0 dXRlIGluYy1oaXN0LnRleGluZm8KLQotSGksCi0KLWZvcmdvdCB0aGUgcGF0Y2hzZXQgaGFkIGEg YG1ha2UgZG9jJyByZWdyZXNzaW9uOgotbWFrZTogKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQg YC4uLy4uLy4uL2dkYi9kb2MvLi4vLi4vcmVhZGxpbmUvZG9jL2luYy1oaXN0LnRleGluZm8nLCBu ZWVkZWQgYnkgYGdkYi5pbmZvJy4gIFN0b3AuCi0KLVRoZXJlIHdhcyBhIGNvcHkgaHN1c2VyLnRl eGkgLT4gaW5jLWhpc3QudGV4aW5mbyBiZWZvcmUgd2l0aCB0aGlzIGRpZmY6Ci0JQEAgLTI2LDkg KzI2LDkgQEAgaW50byBhbm90aGVyIGxhbmd1YWdlLCB1bmRlciB0aGUgYWJvdmUgYwotCSBAbm9k ZSBVc2luZyBIaXN0b3J5IEludGVyYWN0aXZlbHkKLQkgQGNoYXB0ZXIgVXNpbmcgSGlzdG9yeSBJ bnRlcmFjdGl2ZWx5Ci0JIAotCS1AaWZjbGVhciBCYXNoRmVhdHVyZXMKLQktQGRlZmNvZGVpbmRl eCBidAotCS1AZW5kIGlmY2xlYXIKLQkrQGMgQGlmY2xlYXIgQmFzaEZlYXR1cmVzCi0JK0BjIEBk ZWZjb2RlaW5kZXggYnQKLQkrQGMgQGVuZCBpZmNsZWFyCi0JIAotCSBAaWZzZXQgQmFzaEZlYXR1 cmVzCi0JIFRoaXMgY2hhcHRlciBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUgQHNje2dudX0gSGlz dG9yeSBMaWJyYXJ5Ci0JQEAgLTM5LDkgKzM5LDkgQEAgc2VlIHRoZSBAc2N7Z251fSBSZWFkbGlu ZSBMaWJyYXJ5IE1hbnVhbAotCSBAZW5kIGlmc2V0Ci0JIEBpZmNsZWFyIEJhc2hGZWF0dXJlcwot CSBUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIEBzY3tnbnV9IEhpc3Rvcnkg TGlicmFyeSBpbnRlcmFjdGl2ZWx5LAotCS1mcm9tIGEgdXNlcidzIHN0YW5kcG9pbnQuICBJdCBz aG91bGQgYmUgY29uc2lkZXJlZCBhIHVzZXIncyBndWlkZS4gIEZvcgotCS1pbmZvcm1hdGlvbiBv biB1c2luZyB0aGUgQHNje2dudX0gSGlzdG9yeSBMaWJyYXJ5IGluIHlvdXIgb3duIHByb2dyYW1z LAotCS1AcHhyZWZ7UHJvZ3JhbW1pbmcgd2l0aCBHTlUgSGlzdG9yeX0uCi0JK2Zyb20gYSB1c2Vy J3Mgc3RhbmRwb2ludC4gIEl0IHNob3VsZCBiZSBjb25zaWRlcmVkIGEgdXNlcidzIGd1aWRlLgot CStGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlIEBzY3tnbnV9IEhpc3RvcnkgTGlicmFyeSBp biBvdGhlciBwcm9ncmFtcywKLQkrc2VlIHRoZSBAc2N7Z251fSBSZWFkbGluZSBMaWJyYXJ5IE1h bnVhbC4KLQkgQGVuZCBpZmNsZWFyCi0JIAotCSBAaWZzZXQgQmFzaEZlYXR1cmVzCi0KLVVzZWQg c2xpZ2h0bHkgYWx0ZXJuYXRpdmUgb25lIHdpdGggSU1PIGJldHRlciByZWZlcmVuY2UgYW5kIEkg aGF2ZSBhbHNvIGtlcHQKLWhzdXNlci50ZXhpIGluIHBsYWNlIGFzIHJlYWRsaW5lLyBpbiBzcmMv IGlzIG5vIGxvbmdlciBhIHN0YW5kYWxvbmUgcmVhZGxpbmUKLWRpc3RyaWJ1dGlvbiBhbnl3YXku Ci0KLQotU29ycnksCi1KYW4KLQotCi1nZGIvZG9jLwotMjAxMS0wNS0wMiAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBNYWtlZmlsZS5pbiAoR0RCX0RP Q19TT1VSQ0VfSU5DTFVERVMpOiBSZW5hbWUgaW5jLWhpc3QudGV4aW5mbyB0bwotCWhzdXNlci50 ZXhpLgotCSogZ2RiLnRleGluZm8gPCFTWVNURU1fUkVBRExJTkU+OiBSZW5hbWUgaW5jLWhpc3Qu dGV4aW5mbyBpbmNsdXNpb24gYW5kCi0JY29tbWVudCB0byBoc3VzZXIudGV4aS4gIENoYW5nZSBy bHVzZXIudGV4aSBuYW1lIGluIHRoZSBjb21tZW50LgotCi1yZWFkbGluZS9kb2MvCi0yMDExLTA1 LTAyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGhz dXNlci50ZXhpIChVc2luZyBIaXN0b3J5IEludGVyYWN0aXZlbHkpOiBEaXNhYmxlICFCYXNoRmVh dHVyZXMKLQlAZGVmY29kZWluZGV4LiAgTWFrZSB0aGUgYFByb2dyYW1taW5nIHdpdGggR05VIEhp c3RvcnknIHJlZmVyZW5jZQotCWV4dGVybmFsLgotCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDUy NS9nZGIvZG9jL01ha2VmaWxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDUy NS5vcmlnL2dkYi9kb2MvTWFrZWZpbGUuaW4JMjAxMS0wMS0wMyAxNDowMTowNS4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9kb2MvTWFrZWZpbGUuaW4JMjAxMS0w NS0yNSAxOToxNjozNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMTcsNyArMTE3LDcgQEAgR0RCX0RP Q19TT1VSQ0VfSU5DTFVERVMgPSBcCi0gCSQoc3JjZGlyKS9ncGwudGV4aSBcCi0gCSQoc3JjZGly KS9hZ2VudGV4cHIudGV4aSBcCi0gCSQoUkVBRExJTkVfRElSKS9ybHVzZXIudGV4aSBcCi0tCSQo UkVBRExJTkVfRElSKS9pbmMtaGlzdC50ZXhpbmZvCi0rCSQoUkVBRExJTkVfRElSKS9oc3VzZXIu dGV4aQotIEdEQl9ET0NfQlVJTERfSU5DTFVERVMgPSBcCi0gCWdkYi1jZmcudGV4aSBcCi0gCUdE QnZuLnRleGkKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9kb2MvZ2RiLnRleGluZm8K LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNTI1Lm9yaWcvZ2RiL2RvYy9nZGIudGV4 aW5mbwkyMDExLTA1LTI1IDE5OjE0OjM2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAu MjAxMTA1MjUvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDExLTA1LTI1IDE5OjE3OjAxLjAwMDAwMDAw MCArMDIwMAotQEAgLTMxMDk1LDEzICszMTA5NSwxMyBAQCB0aGluZ3Mgd2l0aG91dCBmaXJzdCB1 c2luZyB0aGUgZGVidWdnZXIgCi0gCi0gQGMgVGhlIHJlYWRsaW5lIGRvY3VtZW50YXRpb24gaXMg ZGlzdHJpYnV0ZWQgd2l0aCB0aGUgcmVhZGxpbmUgY29kZQotIEBjIGFuZCBjb25zaXN0cyBvZiB0 aGUgdHdvIGZvbGxvd2luZyBmaWxlczoKLS1AYyAgICAgcmx1c2VyLnRleGluZm8KLS1AYyAgICAg aW5jLWhpc3QudGV4aW5mbwotK0BjICAgICBybHVzZXIudGV4aQotK0BjICAgICBoc3VzZXIudGV4 aQotIEBjIFVzZSAtSSB3aXRoIG1ha2VpbmZvIHRvIHBvaW50IHRvIHRoZSBhcHByb3ByaWF0ZSBk aXJlY3RvcnksCi0gQGMgZW52aXJvbm1lbnQgdmFyIFRFWElOUFVUUyB3aXRoIFRlWC4KLSBAaWZj bGVhciBTWVNURU1fUkVBRExJTkUKLSBAaW5jbHVkZSBybHVzZXIudGV4aQotLUBpbmNsdWRlIGlu Yy1oaXN0LnRleGluZm8KLStAaW5jbHVkZSBoc3VzZXIudGV4aQotIEBlbmQgaWZjbGVhcgotIAot IEBub2RlIEluIE1lbW9yaWFtCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDUyNS9yZWFkbGluZS9k b2MvaHN1c2VyLnRleGkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNTI1Lm9yaWcv cmVhZGxpbmUvZG9jL2hzdXNlci50ZXhpCTIwMTEtMDUtMjUgMTk6MTY6MTcuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDUyNS9yZWFkbGluZS9kb2MvaHN1c2VyLnRleGkJMjAx MS0wNS0yNSAxOToxNjozNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yNiw5ICsyNiwxMCBAQCBpbnRv IGFub3RoZXIgbGFuZ3VhZ2UsIHVuZGVyIHRoZSBhYm92ZSBjCi0gQG5vZGUgVXNpbmcgSGlzdG9y eSBJbnRlcmFjdGl2ZWx5Ci0gQGNoYXB0ZXIgVXNpbmcgSGlzdG9yeSBJbnRlcmFjdGl2ZWx5Ci0g Ci0tQGlmY2xlYXIgQmFzaEZlYXR1cmVzCi0tQGRlZmNvZGVpbmRleCBidAotLUBlbmQgaWZjbGVh cgotK0BjIEdEQiBidW5kbGluZyBtb2RpZmljYXRpb246Ci0rQGMgQGlmY2xlYXIgQmFzaEZlYXR1 cmVzCi0rQGMgQGRlZmNvZGVpbmRleCBidAotK0BjIEBlbmQgaWZjbGVhcgotIAotIEBpZnNldCBC YXNoRmVhdHVyZXMKLSBUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIEBzY3tn bnV9IEhpc3RvcnkgTGlicmFyeQotQEAgLTQxLDcgKzQyLDggQEAgc2VlIHRoZSBAc2N7Z251fSBS ZWFkbGluZSBMaWJyYXJ5IE1hbnVhbAotIFRoaXMgY2hhcHRlciBkZXNjcmliZXMgaG93IHRvIHVz ZSB0aGUgQHNje2dudX0gSGlzdG9yeSBMaWJyYXJ5IGludGVyYWN0aXZlbHksCi0gZnJvbSBhIHVz ZXIncyBzdGFuZHBvaW50LiAgSXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSB1c2VyJ3MgZ3VpZGUu ICBGb3IKLSBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgQHNje2dudX0gSGlzdG9yeSBMaWJyYXJ5 IGluIHlvdXIgb3duIHByb2dyYW1zLAotLUBweHJlZntQcm9ncmFtbWluZyB3aXRoIEdOVSBIaXN0 b3J5fS4KLStAYyBHREIgYnVuZGxpbmcgbW9kaWZpY2F0aW9uOgotK0BweHJlZntQcm9ncmFtbWlu ZyB3aXRoIEdOVSBIaXN0b3J5LCAsICwgaGlzdG9yeSwgR05VIEhpc3RvcnkgTGlicmFyeX0uCi0g QGVuZCBpZmNsZWFyCi0gCi0gQGlmc2V0IEJhc2hGZWF0dXJlcwoKZGlmZiAtLWdpdCBhL2dkYi1j b3JlLW9wZW4tdmRzby13YXJuaW5nLnBhdGNoIGIvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcu cGF0Y2gKaW5kZXggMDU2YTI4Yy4uODdjY2MwYiAxMDA2NDQKLS0tIGEvZ2RiLWNvcmUtb3Blbi12 ZHNvLXdhcm5pbmcucGF0Y2gKKysrIGIvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gK QEAgLTMzLDEyICszMywxMiBAQCBnZGIvCiAKIFsgQ29udGV4dCBiYWNrcG9ydC4gIF0KIAotSW5k ZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAu MjAxMDA3MTEub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTAtMDctMTIgMjM6MDc6MzUuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvc29saWItc3ZyNC5jCTIwMTAt MDctMTMgMDA6MTk6MDMuMDAwMDAwMDAwICswMjAwCi1AQCAtMTE3Nyw4ICsxMTc3LDE4IEBAIHN2 cjRfY3VycmVudF9zb3MgKHZvaWQpCi0gCSAgdGFyZ2V0X3JlYWRfc3RyaW5nIChMTV9OQU1FIChu ZXcpLCAmYnVmZmVyLAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc29saWItc3Zy NC5jCTIwMTEtMDctMjIgMTk6MjY6NDYuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvc29saWItc3ZyNC5jCTIwMTEtMDctMjIgMTk6Mjk6MzYuMDAwMDAwMDAwICsw MjAwCitAQCAtMTE5Nyw4ICsxMTk3LDE4IEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCisgCSAg dGFyZ2V0X3JlYWRfc3RyaW5nIChsbV9uYW1lIChuZXcpLCAmYnVmZmVyLAogIAkJCSAgICAgIFNP X05BTUVfTUFYX1BBVEhfU0laRSAtIDEsICZlcnJjb2RlKTsKICAJICBpZiAoZXJyY29kZSAhPSAw KQogLQkgICAgd2FybmluZyAoXygiQ2FuJ3QgcmVhZCBwYXRobmFtZSBmb3IgbG9hZCBtYXA6ICVz LiIpLApAQCAtNTgsMTEgKzU4LDExIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9z b2xpYi1zdnI0LmMKICAJICBlbHNlCiAgCSAgICB7CiAgCSAgICAgIHN0cnVjdCBidWlsZF9pZCAq YnVpbGRfaWQ7Ci1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvc29saWIuYworSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3NvbGliLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4x LjkwLjIwMTAwNzExLm9yaWcvZ2RiL3NvbGliLmMJMjAxMC0wNS0xNyAwMTo0OTo1OC4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zb2xpYi5jCTIwMTAtMDctMTMg MDA6MjE6MDEuMDAwMDAwMDAwICswMjAwCi1AQCAtNzA1LDYgKzcwNSw3IEBAIHVwZGF0ZV9zb2xp Yl9saXN0IChpbnQgZnJvbV90dHksIHN0cnVjdCAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9y aWcvZ2RiL3NvbGliLmMJMjAxMS0wNi0zMCAyMToyOTo1NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zb2xpYi5jCTIwMTEtMDctMjIgMTk6Mjk6MTAuMDAwMDAw MDAwICswMjAwCitAQCAtNzA2LDYgKzcwNiw3IEBAIHVwZGF0ZV9zb2xpYl9saXN0IChpbnQgZnJv bV90dHksIHN0cnVjdCAKICAgIHN0cnVjdCB0YXJnZXRfc29fb3BzICpvcHMgPSBzb2xpYl9vcHMg KHRhcmdldF9nZGJhcmNoKTsKICAgIHN0cnVjdCBzb19saXN0ICppbmZlcmlvciA9IG9wcy0+Y3Vy cmVudF9zb3MoKTsKICAgIHN0cnVjdCBzb19saXN0ICpnZGIsICoqZ2RiX2xpbms7CkBAIC03MCw3 ICs3MCw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zb2xpYi5jCiAgCiAgICAv KiBXZSBjYW4gcmVhY2ggaGVyZSBkdWUgdG8gY2hhbmdpbmcgc29saWItc2VhcmNoLXBhdGggb3Ig dGhlCiAgICAgICBzeXNyb290LCBiZWZvcmUgaGF2aW5nIGFueSBpbmZlcmlvci4gICovCi1AQCAt ODQ0LDYgKzg0NSwxMiBAQCBFcnJvciB3aGlsZSBtYXBwaW5nIHNoYXJlZCBsaWJyYXJ5IHNlY3Rp CitAQCAtODQ2LDYgKzg0NywxMiBAQCB1cGRhdGVfc29saWJfbGlzdCAoaW50IGZyb21fdHR5LCBz dHJ1Y3QgCiAgCSAgb2JzZXJ2ZXJfbm90aWZ5X3NvbGliX2xvYWRlZCAoaSk7CiAgCX0KICAKCmRp ZmYgLS1naXQgYS9nZGItY29yZS10aHJlYWQtaW50ZXJuYWxlcnItMW9mMy5wYXRjaCBiL2dkYi1j b3JlLXRocmVhZC1pbnRlcm5hbGVyci0xb2YzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDQyZmVlLi4wMDAwMDAwCi0tLSBhL2dkYi1jb3JlLXRocmVhZC1pbnRlcm5hbGVy ci0xb2YzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLWh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDExLTAyL21zZzAwNjc5Lmh0bWwKLVN1YmplY3Q6 IFJlOiBbcGF0Y2ggMS8zXSBDb2RlIGNsZWFudXA6IGdkYi50aHJlYWRzL2djb3JlLXRocmVhZC5l eHAKLQotT24gVGh1LCAyNCBGZWIgMjAxMSAwODoyMDowOSArMDEwMCwgSm9lbCBCcm9iZWNrZXIg d3JvdGU6Ci0+IEp1c3QgYSB0aG91Z2h0OiBEbyB3ZSByZWFsbHkgbmVlZCB0byB3b3JyeSBhYm91 dCByZXN0b3JpbmcKLT4gdGhlIHRpbWVvdXQgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdGNhc2UsIGdp dmVuIHRoYXQgdGhpcyBpcwotPiBhdXRvbWF0aWNhbGx5IGRvbmUgYXQgdGhlIHN0YXJ0IG9mIGVh Y2ggdGVzdGNhc2UgKHNlZSBnZGIuZXhwOgotPiBnZGJfaW5pdCk/Ci0KLUkgc2VlIG5vdzoKLQlS ZTogW1JGQS90ZXN0c3VpdGVdIFJlc2V0IHRoZSB0aW1lb3V0IGR1cmF0aW9uIGF0IHRoZSBzdGFy dCBvZiBlYWNoIHRlc3RjYXNlLgotCWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hl cy8yMDEwLTAyL21zZzAwMjAyLmh0bWwKLQljb21taXQgNTAxYzU3ZGE0MGZkMjdjODAzNmE1ZmM5 OTVmNzUwYjA1NTkyNzJhZAotCi1QYXRjaCB1cGRhdGVkLgotCi0KLVRoYW5rcywKLUphbgotCi0K LWdkYi90ZXN0c3VpdGUvCi0yMDExLTAyLTI0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi50aHJlYWRzL2djb3JlLXRocmVhZC5leHAgKCR0ZXN0 ZmlsZSk6IE1hdGNoIGl0IHRoZSAuZXhwCi0JZmlsZW5hbWUuCi0JKCRzcmNmaWxlKTogUHJlc2Vy dmUgdGhlIG9yaWdpbmFsIHZhbHVlLgotCSgkdGVzdGZpbGUpOiBNYXRjaCBpdCB0aGUgLmV4cCBm aWxlbmFtZS4KLQkoJGNvcmVmaWxlKTogTmV3IHZhcmlhYmxlLiAgU3Vic3RpdHV0ZSBpdCBhcm91 bmQuCi0JVXNlIGNsZWFuX3Jlc3RhcnQuCi0JKCRwcmV2X3RpbWVvdXQpOiBSZW1vdmUuCi0JKGxv YWRfY29yZSk6IE1vdmUgY29yZSBsb2FkaW5nIGludG8gdGhpcyBwcm9jLgotCUZpeCByZXN0b3Jl IG9mICR0aW1lb3V0IGlmIGxvYWRfY29yZSBmYWlscy4KLQotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy9nY29yZS10aHJlYWQuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL2djb3JlLXRocmVhZC5leHAKLUBAIC0yMSwxMSArMjEsMTEgQEAgaWYgJHRyYWNlbGV2ZWwg dGhlbiB7Ci0gCXN0cmFjZSAkdHJhY2VsZXZlbAotIH0KLSAKLS0KLSAjIFNpbmdsZS10aHJlYWRl ZCB0ZXN0IGNhc2UKLS1zZXQgdGVzdGZpbGUgInB0aHJlYWRzIgotLXNldCBzcmNmaWxlICAke3Rl c3RmaWxlfS5jCi0tc2V0IGJpbmZpbGUgICR7b2JqZGlyfS8ke3N1YmRpcn0vZ2NvcmUtJHt0ZXN0 ZmlsZX0KLStzZXQgdGVzdGZpbGUgImdjb3JlLXRocmVhZCIKLStzZXQgc3JjZmlsZSAgcHRocmVh ZHMuYwotK3NldCBiaW5maWxlICAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rc2V0 IGNvcmVmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0udGVzdAotIAotIGlmIFtp c3RhcmdldCAiKi0qLWxpbnV4Il0gdGhlbiB7Ci0gICAgIHNldCB0YXJnZXRfY2ZsYWdzICItRF9N SVRfUE9TSVhfVEhSRUFEUyIKLUBAIC00MSwxMCArNDEsNyBAQCBpZiB7W2dkYl9jb21waWxlX3B0 aHJlYWRzICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVj dXRhYgotIAotICMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KLSAKLS1nZGJfZXhpdAotLWdkYl9z dGFydAotLWdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotLWdkYl9sb2FkICR7 YmluZmlsZX0KLStjbGVhbl9yZXN0YXJ0ICR7dGVzdGZpbGV9Ci0gCi0gIyByZWdleHAgZm9yICJo b3Jpem9udGFsIiB0ZXh0IChpLmUuIGRvZXNuJ3QgaW5jbHVkZSBuZXdsaW5lIG9yCi0gIyBjYXJy aWFnZSByZXR1cm4pCi1AQCAtNTMsNyArNTAsNiBAQCBzZXQgaG9yaXogIlxbXlxuXHJcXSoiCi0g IyByZWdleHAgZm9yIG5ld2xpbmUKLSBzZXQgbmwgIlxbXHJcblxdKyIKLSAKLS1zZXQgcHJldl90 aW1lb3V0ICR0aW1lb3V0Ci0gc2V0IHRpbWVvdXQgMzAKLSAKLSBnZGJfdGVzdF9tdWx0aXBsZSAi aGVscCBnY29yZSIgImhlbHAgZ2NvcmUiIHsKLUBAIC05MiwxMCArODgsOSBAQCBkZWxldGVfYnJl YWtwb2ludHMKLSBnZGJfYnJlYWtwb2ludCAidGhyZWFkMiIKLSBnZGJfdGVzdCAiY29udGludWUi ICJDb250aW51aW5nLipCcmVha3BvaW50LiogdGhyZWFkMiAuKiIgInRocmVhZCAyIGlzIHJ1bm5p bmciCi0gCi0tc2V0IGVzY2FwZWRmaWxlbmFtZSBbc3RyaW5nX3RvX3JlZ2V4cCAke29iamRpcn0v JHtzdWJkaXJ9L2djb3JlLnRlc3RdCi0rc2V0IGVzY2FwZWRmaWxlbmFtZSBbc3RyaW5nX3RvX3Jl Z2V4cCAkY29yZWZpbGVdCi0gIyBEcm9wIGNvcmVmaWxlCi0tZ2RiX3Rlc3RfbXVsdGlwbGUgImdj b3JlICR7b2JqZGlyfS8ke3N1YmRpcn0vZ2NvcmUudGVzdCIgXAotLQkic2F2ZSBhIGNvcmVmaWxl IiBcCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgImdjb3JlICRjb3JlZmlsZSIgInNhdmUgYSBjb3JlZmls ZSIgXAotIHsKLSAgIC1yZSAiU2F2ZWQgY29yZWZpbGUgJHtlc2NhcGVkZmlsZW5hbWV9XFtcclxu XF0rJGdkYl9wcm9tcHQgJCIgewotICAgICBwYXNzICJzYXZlIGEgY29yZWZpbGUiCi1AQCAtMTE0 LDMxICsxMDksMzggQEAgaWYgeyEkY29yZV9zdXBwb3J0ZWR9IHsKLSAgIHJldHVybiAtMQotIH0K LSAKLSsKLSAjIE5vdyByZXN0YXJ0IGdkYiBhbmQgbG9hZCB0aGUgY29yZWZpbGUuCi0tZ2RiX2V4 aXQKLS1nZGJfc3RhcnQKLS1nZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLS1n ZGJfbG9hZCAke2JpbmZpbGV9Ci0tCi0tZ2RiX3Rlc3RfbXVsdGlwbGUgImNvcmUgJHtvYmpkaXJ9 LyR7c3ViZGlyfS9nY29yZS50ZXN0IiBcCi0tICAgICJyZS1sb2FkIGdlbmVyYXRlZCBjb3JlZmls ZSIgewotLQktcmUgIi4qIGlzIG5vdCBhIGNvcmUgZHVtcDouKiRnZGJfcHJvbXB0ICQiIHsKLS0J ICAgIGZhaWwgInJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlIChiYWQgZmlsZSBmb3JtYXQpIgot LQkgICAgIyBObyB1c2UgcHJvY2VlZGluZyBmcm9tIGhlcmUuCi0tCSAgICByZXR1cm47Ci0tCX0K LS0JLXJlICIuKjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeS4qJGdkYl9wcm9tcHQgJCIgewot LQkgICAgZmFpbCAicmUtbG9hZCBnZW5lcmF0ZWQgY29yZWZpbGUgKGZpbGUgbm90IGZvdW5kKSIK LS0JICAgICMgTm8gdXNlIHByb2NlZWRpbmcgZnJvbSBoZXJlLgotLQkgICAgcmV0dXJuOwotLQl9 Ci0tCS1yZSAiLipDb3VsZG4ndCBmaW5kIC4qIHJlZ2lzdGVycyBpbiBjb3JlIGZpbGUuKiRnZGJf cHJvbXB0ICQiIHsKLS0JICAgIGZhaWwgInJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlIChpbmNv bXBsZXRlIG5vdGUgc2VjdGlvbikiCi0tCX0KLS0JLXJlICJDb3JlIHdhcyBnZW5lcmF0ZWQgYnkg LiokZ2RiX3Byb21wdCAkIiB7Ci0tCSAgICBwYXNzICJyZS1sb2FkIGdlbmVyYXRlZCBjb3JlZmls ZSIKLStjbGVhbl9yZXN0YXJ0ICR7dGVzdGZpbGV9Ci0rCi0rcHJvYyBsb2FkX2NvcmUgeyBjb3Jl ZmlsZSB9IHsKLSsgICAgZ2xvYmFsIGdkYl9wcm9tcHQKLSsKLSsgICAgZ2RiX3Rlc3RfbXVsdGlw bGUgImNvcmUgJGNvcmVmaWxlIiBcCi0rCSJyZS1sb2FkIGdlbmVyYXRlZCBjb3JlZmlsZSIgewot KwkgICAgLXJlICIgaXMgbm90IGEgY29yZSBkdW1wOi4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJ CWZhaWwgInJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlIChiYWQgZmlsZSBmb3JtYXQpIgotKwkJ IyBObyB1c2UgcHJvY2VlZGluZyBmcm9tIGhlcmUuCi0rCQlyZXR1cm4gMDsKLSsJICAgIH0KLSsJ ICAgIC1yZSAiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5LipcclxuJGdkYl9wcm9tcHQgJCIg ewotKwkJZmFpbCAicmUtbG9hZCBnZW5lcmF0ZWQgY29yZWZpbGUgKGZpbGUgbm90IGZvdW5kKSIK LSsJCSMgTm8gdXNlIHByb2NlZWRpbmcgZnJvbSBoZXJlLgotKwkJcmV0dXJuIDA7Ci0rCSAgICB9 Ci0rCSAgICAtcmUgIkNvdWxkbid0IGZpbmQgLiogcmVnaXN0ZXJzIGluIGNvcmUgZmlsZS4qXHJc biRnZGJfcHJvbXB0ICQiIHsKLSsJCWZhaWwgInJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlIChp bmNvbXBsZXRlIG5vdGUgc2VjdGlvbikiCi0rCSAgICB9Ci0rCSAgICAtcmUgIkNvcmUgd2FzIGdl bmVyYXRlZCBieSAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCQlwYXNzICJyZS1sb2FkIGdlbmVy YXRlZCBjb3JlZmlsZSIKLSsJICAgIH0KLSAJfQotLSAgICB9Ci0rICAgIHJldHVybiAxCi0rfQot KwotK2lmICFbbG9hZF9jb3JlICRjb3JlZmlsZV0gewotKyAgICByZXR1cm4KLSt9Ci0gCi0gIyBG SVhNRTogbm93IHdoYXQgY2FuIHdlIHRlc3QgYWJvdXQgdGhlIHRocmVhZCBzdGF0ZT8KLSAjIFdl IGRvIG5vdCBrbm93IGZvciBjZXJ0YWluIHRoYXQgdGhlcmUgc2hvdWxkIGJlIGF0IGxlYXN0IAot QEAgLTE1OCw1ICsxNjAsMyBAQCBnZGJfdGVzdCAiaW5mbyB0aHJlYWRzIiAiLiogdGhyZWFkMiAu KiIgXAotIAotIGdkYl90ZXN0ICJpbmZvIHRocmVhZHMiICIuKiR7bmx9XFwqICR7aG9yaXp9IHRo cmVhZDIgLioiIFwKLSAJInRocmVhZDIgaXMgY3VycmVudCB0aHJlYWQgaW4gY29yZWZpbGUiCi0t Ci0tc2V0IHRpbWVvdXQgJHByZXZfdGltZW91dAotCgpkaWZmIC0tZ2l0IGEvZ2RiLWNvcmUtdGhy ZWFkLWludGVybmFsZXJyLTJvZjMucGF0Y2ggYi9nZGItY29yZS10aHJlYWQtaW50ZXJuYWxlcnIt Mm9mMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTAxZjFkMS4uMDAwMDAw MAotLS0gYS9nZGItY29yZS10aHJlYWQtaW50ZXJuYWxlcnItMm9mMy5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDEwMiArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNo ZXMvMjAxMS0wMi9tc2cwMDY4MC5odG1sCi1TdWJqZWN0OiBbcGF0Y2ggMi8zXSBGaXggdGhyZWFk aW5nIGludGVybmFsIGVycm9yIG9uIGNvcnJ1cHRlZCBtZW1vcnkgW3JlZGlmZl0KLQotW3JlZGlm Zl0KLQotZ2RiLwotMjAxMS0wMi0yNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPgotCi0JKiBsaW51eC10aHJlYWQtZGIuYyAoZmluZF9uZXdfdGhyZWFkc19jYWxs YmFjayk6IEV4aXQgb24gemVybyBUSV9USUQKLQlldmVuIGlmICFUQVJHRVRfSEFTX0VYRUNVVElP Ti4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMTEtMDItMjQgIEphbiBLcmF0b2NodmlsICA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLnRocmVhZHMvZ2NvcmUtdGhyZWFkLmV4cCAo JGNvcmUwZmlsZSk6IE5ldyB2YXJpYWJsZS4KLQkoY2xlYXIgX19zdGFja191c2VyLm5leHQsIGNs ZWFyIHN0YWNrX3VzZWQubmV4dCkKLQkoc2F2ZSBhIHplcm9lZC10aHJlYWRzIGNvcmVmaWxlKTog TmV3IHRlc3QuCi0JQ2FsbCBjb3JlX2xvYWQgZm9yICRjb3JlMGZpbGUuCi0JKHplcm9lZC10aHJl YWRzIGNhbm5vdCBiZSBsaXN0ZWQpOiBOZXcgdGVzdC4KLQotLS0tIGEvZ2RiL2xpbnV4LXRocmVh ZC1kYi5jCi0rKysgYi9nZGIvbGludXgtdGhyZWFkLWRiLmMKLUBAIC0xMzM1LDcgKzEzMzUsNyBA QCBmaW5kX25ld190aHJlYWRzX2NhbGxiYWNrIChjb25zdCB0ZF90aHJoYW5kbGVfdCAqdGhfcCwg dm9pZCAqZGF0YSkKLSAgIGlmICh0aS50aV9zdGF0ZSA9PSBURF9USFJfVU5LTk9XTiB8fCB0aS50 aV9zdGF0ZSA9PSBURF9USFJfWk9NQklFKQotICAgICByZXR1cm4gMDsJCQkvKiBBIHpvbWJpZSAt LSBpZ25vcmUuICAqLwotIAotLSAgaWYgKHRpLnRpX3RpZCA9PSAwICYmIHRhcmdldF9oYXNfZXhl Y3V0aW9uKQotKyAgaWYgKHRpLnRpX3RpZCA9PSAwKQotICAgICB7Ci0gICAgICAgLyogQSB0aHJl YWQgSUQgb2YgemVybyBtZWFucyB0aGF0IHRoaXMgaXMgdGhlIG1haW4gdGhyZWFkLCBidXQKLSAJ IGdsaWJjIGhhcyBub3QgeWV0IGluaXRpYWxpemVkIHRocmVhZC1sb2NhbCBzdG9yYWdlIGFuZCB0 aGUKLUBAIC0xMzQ3LDEwICsxMzQ3LDEzIEBAIGZpbmRfbmV3X3RocmVhZHNfY2FsbGJhY2sgKGNv bnN0IHRkX3RocmhhbmRsZV90ICp0aF9wLCB2b2lkICpkYXRhKQotIAkgbmVlZCB0aGlzIGdsaWJj IGJ1ZyB3b3JrYXJvdW5kLiAgKi8KLSAgICAgICBpbmZvLT5uZWVkX3N0YWxlX3BhcmVudF90aHJl YWRzX2NoZWNrID0gMDsKLSAKLS0gICAgICBlcnIgPSBpbmZvLT50ZF90aHJfZXZlbnRfZW5hYmxl X3AgKHRoX3AsIDEpOwotLSAgICAgIGlmIChlcnIgIT0gVERfT0spCi0tCWVycm9yIChfKCJDYW5u b3QgZW5hYmxlIHRocmVhZCBldmVudCByZXBvcnRpbmcgZm9yIExXUCAlZDogJXMiKSwKLS0JICAg ICAgIChpbnQpIHRpLnRpX2xpZCwgdGhyZWFkX2RiX2Vycl9zdHIgKGVycikpOwotKyAgICAgIGlm ICh0YXJnZXRfaGFzX2V4ZWN1dGlvbikKLSsJewotKwkgIGVyciA9IGluZm8tPnRkX3Rocl9ldmVu dF9lbmFibGVfcCAodGhfcCwgMSk7Ci0rCSAgaWYgKGVyciAhPSBURF9PSykKLSsJICAgIGVycm9y IChfKCJDYW5ub3QgZW5hYmxlIHRocmVhZCBldmVudCByZXBvcnRpbmcgZm9yIExXUCAlZDogJXMi KSwKLSsJCSAgIChpbnQpIHRpLnRpX2xpZCwgdGhyZWFkX2RiX2Vycl9zdHIgKGVycikpOwotKwl9 Ci0gCi0gICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvZ2NvcmUtdGhyZWFkLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9n Y29yZS10aHJlYWQuZXhwCi1AQCAtMjYsNiArMjYsNyBAQCBzZXQgdGVzdGZpbGUgImdjb3JlLXRo cmVhZCIKLSBzZXQgc3JjZmlsZSAgcHRocmVhZHMuYwotIHNldCBiaW5maWxlICAke29iamRpcn0v JHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0gc2V0IGNvcmVmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0v JHt0ZXN0ZmlsZX0udGVzdAotK3NldCBjb3JlMGZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rl c3RmaWxlfTAudGVzdAotIAotIGlmIFtpc3RhcmdldCAiKi0qLWxpbnV4Il0gdGhlbiB7Ci0gICAg IHNldCB0YXJnZXRfY2ZsYWdzICItRF9NSVRfUE9TSVhfVEhSRUFEUyIKLUBAIC0xMTAsNiArMTEx LDI5IEBAIGlmIHshJGNvcmVfc3VwcG9ydGVkfSB7Ci0gfQotIAotIAotKyMgVGVzdCB0aGUgdW5p bml0aWFsaXplZCB0aHJlYWQgbGlzdC4KLSsjIFByb3ZpZGUgdGhlIGNhc2Ugb2YgZ2xpYmMgdGRf dGhyX2dldF9pbmZvIGhhbmRsaW5nIG9mOgotKyMgLyogU3BlY2lhbCBjYXNlIGZvciB0aGUgbWFp biB0aHJlYWQgYmVmb3JlIGluaXRpYWxpemF0aW9uLiAgKi8KLSsKLStmb3JlYWNoIHN5bWJvbCB7 X19zdGFja191c2VyIHN0YWNrX3VzZWR9IHsKLSsgICAgc2V0IHRlc3QgImNsZWFyICR7c3ltYm9s fS5uZXh0IgotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAicCAqKHZvaWQgKiopICYke3N5bWJvbH0g PSAwIiAkdGVzdCB7Ci0rCS1yZSAiID0gXFwodm9pZCBcXCpcXCkgMHgwXHJcbiRnZGJfcHJvbXB0 ICQiIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsJfQotKwktcmUgIk5vIHN5bWJvbCBcIiR7c3ltYm9s fVwiIGluIGN1cnJlbnQgY29udGV4dFxcLlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICB4ZmFp bCAkdGVzdAotKwkgICAgIyBEbyBub3QgZG8gdGhlIHZlcmlmaWNhdGlvbi4KLSsJICAgIHNldCBj b3JlMGZpbGUgIiIKLSsJfQotKyAgICB9Ci0rfQotKwotK2lmIHsiJGNvcmUwZmlsZSIgIT0gIiJ9 IHsKLSsgICAgZ2RiX3Rlc3QgImdjb3JlICRjb3JlMGZpbGUiICJTYXZlZCBjb3JlZmlsZSAuKiIg InNhdmUgYSB6ZXJvZWQtdGhyZWFkcyBjb3JlZmlsZSIKLSt9Ci0rCi0rCi0gIyBOb3cgcmVzdGFy dCBnZGIgYW5kIGxvYWQgdGhlIGNvcmVmaWxlLgotIGNsZWFuX3Jlc3RhcnQgJHt0ZXN0ZmlsZX0K LSAKLUBAIC0xNjAsMyArMTg0LDExIEBAIGdkYl90ZXN0ICJpbmZvIHRocmVhZHMiICIuKiB0aHJl YWQyIC4qIiBcCi0gCi0gZ2RiX3Rlc3QgImluZm8gdGhyZWFkcyIgIi4qJHtubH1cXCogJHtob3Jp en0gdGhyZWFkMiAuKiIgXAotIAkidGhyZWFkMiBpcyBjdXJyZW50IHRocmVhZCBpbiBjb3JlZmls ZSIKLSsKLSsKLSsjIFRlc3QgdGhlIHVuaW5pdGlhbGl6ZWQgdGhyZWFkIGxpc3QuCi0rCi0raWYg eyIkY29yZTBmaWxlIiAhPSAiIiAmJiBbbG9hZF9jb3JlICRjb3JlMGZpbGVdfSB7Ci0rCi0rICAg IGdkYl90ZXN0ICJpbmZvIHRocmVhZHMiICJDYW5ub3QgZmluZCBuZXcgdGhyZWFkczogLioiICJ6 ZXJvZWQtdGhyZWFkcyBjYW5ub3QgYmUgbGlzdGVkIgotK30KLQoKZGlmZiAtLWdpdCBhL2dkYi1j b3JlLXRocmVhZC1pbnRlcm5hbGVyci0zb2YzLnBhdGNoIGIvZ2RiLWNvcmUtdGhyZWFkLWludGVy bmFsZXJyLTNvZjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4ZTJkOGMu LjAwMDAwMDAKLS0tIGEvZ2RiLWNvcmUtdGhyZWFkLWludGVybmFsZXJyLTNvZjMucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1wYXRjaGVzLzIwMTEtMDIvbXNnMDA2NzUuaHRtbAotU3ViamVjdDogW3BhdGNoIDMvM10gRGlz cGxheSBjb3JlIHJlYXNvbnMgZXZlbiBkdXJpbmcgdGhyZWFkIGVycm9yCi0KLVsgcmVkaWZmIF0K LQotSGksCi0KLXRoaXMgaXMgbW9zdGx5IHVucmVsYXRlZC4gIEJ1dCBhZnRlciB0aGUgcGF0Y2gg Mi8zIGl0IHdpbGwgc3RpbGwgRkFJTDoKLQlMb2FkZWQgc3ltYm9scyBmb3IgL2xpYjY0L2xkLWxp bnV4LXg4Ni02NC5zby4yCi0JQ2Fubm90IGZpbmQgbmV3IHRocmVhZHM6IGRlYnVnZ2VyIHNlcnZp Y2UgZmFpbGVkCi0JKGdkYikgRkFJTDogZ2RiLnRocmVhZHMvZ2NvcmUtdGhyZWFkLmV4cDogcmUt bG9hZCBnZW5lcmF0ZWQgY29yZWZpbGUKLQotYXMgaXQgaXMgYSBjb21tb24gYnVnIEkgZGlzbGlr ZSBmb3IgeWVhcnMgSSBoYXZlIGZpeGVkIGl0IGhlcmU6Ci0JTG9hZGVkIHN5bWJvbHMgZm9yIC9s aWI2NC9sZC1saW51eC14ODYtNjQuc28uMgotCUNhbm5vdCBmaW5kIG5ldyB0aHJlYWRzOiBkZWJ1 Z2dlciBzZXJ2aWNlIGZhaWxlZAotCUNvcmUgd2FzIGdlbmVyYXRlZCBieSBgLi4uL2dkYi90ZXN0 c3VpdGUvZ2RiLnRocmVhZHMvZ2NvcmUtdGhyZWFkJy4KLQlQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0 aCBzaWduYWwgNSwgVHJhY2UvYnJlYWtwb2ludCB0cmFwLgotCSMwICB0aHJlYWQyIChhcmc9MHhk ZWFkYmVlZikgYXQgLi9nZGIudGhyZWFkcy9wdGhyZWFkcy5jOjkxCi0JOTEgICAgICAgIGludCBr ID0gMDsKLQkoZ2RiKSBQQVNTOiBnZGIudGhyZWFkcy9nY29yZS10aHJlYWQuZXhwOiByZS1sb2Fk IGdlbmVyYXRlZCBjb3JlZmlsZQotCi1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1t MzIsaTY4Nn0tZmVkb3JhMTUtbGludXgtZ251LgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8K LTIwMTEtMDItMjQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LQotCSogY29yZWxvdy5jOiBJbmNsdWRlIHdyYXBwZXIuaC4KLQkoY29yZV9vcGVuKTogQ2FsbCBu b3cgZ2RiX3RhcmdldF9maW5kX25ld190aHJlYWRzLgotCSogd3JhcHBlci5jOiBJbmNsdWRlIHRh cmdldC5oLgotCShnZGJfdGFyZ2V0X2ZpbmRfbmV3X3RocmVhZHMpOiBOZXcuCi0JKiB3cmFwcGVy LmggKGdkYl90YXJnZXRfZmluZF9uZXdfdGhyZWFkcyk6IE5ldyBkZWNsYXJhdGlvbi4KLQotLS0t IGEvZ2RiL2NvcmVsb3cuYwotKysrIGIvZ2RiL2NvcmVsb3cuYwotQEAgLTQ3LDYgKzQ3LDcgQEAK LSAjaW5jbHVkZSAiYXV4di5oIgotICNpbmNsdWRlICJlbGYvY29tbW9uLmgiCi0gI2luY2x1ZGUg ImdkYmNtZC5oIgotKyNpbmNsdWRlICJ3cmFwcGVyLmgiCi0gCi0gCi0gI2lmbmRlZiBPX0xBUkdF RklMRQotQEAgLTQyOCw3ICs0MjksNyBAQCBjb3JlX29wZW4gKGNoYXIgKmZpbGVuYW1lLCBpbnQg ZnJvbV90dHkpCi0gICAgICBtYXkgYmUgYSB0aHJlYWRfc3RyYXR1bSB0YXJnZXQgbG9hZGVkIG9u IHRvcCBvZiB0YXJnZXQgY29yZSBieQotICAgICAgbm93LiAgVGhlIGxheWVyIGFib3ZlIHNob3Vs ZCBjbGFpbSB0aHJlYWRzIGZvdW5kIGluIHRoZSBCRkQKLSAgICAgIHNlY3Rpb25zLiAgKi8KLS0g IHRhcmdldF9maW5kX25ld190aHJlYWRzICgpOwotKyAgZ2RiX3RhcmdldF9maW5kX25ld190aHJl YWRzICgpOwotIAotICAgcCA9IGJmZF9jb3JlX2ZpbGVfZmFpbGluZ19jb21tYW5kIChjb3JlX2Jm ZCk7Ci0gICBpZiAocCkKLS0tLSBhL2dkYi93cmFwcGVyLmMKLSsrKyBiL2dkYi93cmFwcGVyLmMK LUBAIC0yMSw2ICsyMSw3IEBACi0gI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKLSAjaW5jbHVkZSAi d3JhcHBlci5oIgotICNpbmNsdWRlICJ1aS1vdXQuaCIKLSsjaW5jbHVkZSAidGFyZ2V0LmgiCi0g Ci0gaW50Ci0gZ2RiX3BhcnNlX2V4cF8xIChjaGFyICoqc3RyaW5ncHRyLCBzdHJ1Y3QgYmxvY2sg KmJsb2NrLCBpbnQgY29tbWEsCi1AQCAtMTYxLDMgKzE2MiwyNCBAQCBnZGJfdmFsdWVfc3RydWN0 X2VsdCAoc3RydWN0IHVpX291dCAqdWlvdXQsIHN0cnVjdCB2YWx1ZSAqKnJlc3VsdCwKLSAgICAg cmV0dXJuIEdEQl9SQ19GQUlMOwotICAgcmV0dXJuIEdEQl9SQ19PSzsKLSB9Ci0rCi0rLyogQ2Fs bCB0YXJnZXRfZmluZF9uZXdfdGhyZWFkcyB3aXRob3V0IHRocm93aW5nIGV4Y2VwdGlvbi4gIEV4 Y2VwdGlvbiBpcwotKyAgIHByaW50ZWQgaWYgaXQgZ290IHRocm93bi4gICovCi0rCi0raW50Ci0r Z2RiX3RhcmdldF9maW5kX25ld190aHJlYWRzICh2b2lkKQotK3sKLSsgIHZvbGF0aWxlIHN0cnVj dCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5f TUFTS19FUlJPUikKLSsgICAgewotKyAgICAgIHRhcmdldF9maW5kX25ld190aHJlYWRzICgpOwot KyAgICB9Ci0rCi0rICBpZiAoZXhjZXB0LnJlYXNvbiA8IDApCi0rICAgIHsKLSsgICAgICBleGNl cHRpb25fcHJpbnQgKGdkYl9zdGRlcnIsIGV4Y2VwdCk7Ci0rICAgICAgcmV0dXJuIDA7Ci0rICAg IH0KLSsgIHJldHVybiAxOwotK30KLS0tLSBhL2dkYi93cmFwcGVyLmgKLSsrKyBiL2dkYi93cmFw cGVyLmgKLUBAIC00OCw0ICs0OCw2IEBAIGV4dGVybiBpbnQgZ2RiX3ZhbHVlX2luZCAoc3RydWN0 IHZhbHVlICp2YWwsIHN0cnVjdCB2YWx1ZSAqKiBydmFsKTsKLSAKLSBleHRlcm4gaW50IGdkYl9w YXJzZV9hbmRfZXZhbF90eXBlIChjaGFyICosIGludCwgc3RydWN0IHR5cGUgKiopOwotIAotK2V4 dGVybiBpbnQgZ2RiX3RhcmdldF9maW5kX25ld190aHJlYWRzICh2b2lkKTsKLSsKLSAjZW5kaWYg Lyogd3JhcHBlci5oICovCi0KCmRpZmYgLS1naXQgYS9nZGItZm9ydHJhbi1jb21tb24ucGF0Y2gg Yi9nZGItZm9ydHJhbi1jb21tb24ucGF0Y2gKaW5kZXggMTMwNDg2OC4uNjZkNDZiOSAxMDA2NDQK LS0tIGEvZ2RiLWZvcnRyYW4tY29tbW9uLnBhdGNoCisrKyBiL2dkYi1mb3J0cmFuLWNvbW1vbi5w YXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9kd2Fy ZjJyZWFkLmMKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNTI1Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwky MDExLTA1LTI1IDE3OjA2OjE5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA1 MjUvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTA1LTI1IDE3OjEwOjQ2LjAwMDAwMDAwMCArMDIwMAot QEAgLTc2NjUsMTIgKzc2NjUsMTQgQEAgcmVhZF9zZXRfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cgorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIw MTEtMDctMjIgMjA6MTI6MDUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDctMjIgMjA6MTc6MjIuMDAwMDAwMDAwICswMjAwCitA QCAtNzk2OSwxMiArNzk2OSwxNCBAQCByZWFkX3NldF90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RyCiAgICByZXR1cm4gc2V0X2RpZV90eXBlIChkaWUsIHNldF90eXBlLCBjdSk7CiAgfQog IApAQCAtMTksNyArMTksNyBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvZHdhcmYy cmVhZC5jCiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwogICAgc3RydWN0IHN5bWJvbCAqc3lt OwogICAgQ09SRV9BRERSIGJhc2UgPSAoQ09SRV9BRERSKSAwOwotQEAgLTc2OTUsMjAgKzc2OTcs NjcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAorQEAgLTc5OTks MjAgKzgwMDEsNjcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAog ICAgICB9CiAgICBpZiAoZGllLT5jaGlsZCAhPSBOVUxMKQogICAgICB7CkBAIC04Nyw3ICs4Nyw3 IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9kd2FyZjJyZWFkLmMKICAgICAgfQog IH0KICAKLUBAIC0xMTM3Niw2ICsxMTQyNSwxMyBAQCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzCitAQCAtMTE2OTUsNiArMTE3NDQsMTMgQEAgbmV3X3N5bWJvbF9mdWxs IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgcwogIAkgICAgewogIAkgICAgICB2YXJfZGVjb2RlX2xv Y2F0aW9uIChhdHRyLCBzeW0sIGN1KTsKICAJICAgICAgYXR0cjIgPSBkd2FyZjJfYXR0ciAoZGll LCBEV19BVF9leHRlcm5hbCwgY3UpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIEluZGV4OiBnZGItNy4y LjkwLjIwMTEwNTI1L2dkYi9kd2FyZjJyZWFkLmMKICAJICAgICAgaWYgKFNZTUJPTF9DTEFTUyAo c3ltKSA9PSBMT0NfU1RBVElDCiAgCQkgICYmIFNZTUJPTF9WQUxVRV9BRERSRVNTIChzeW0pID09 IDAKICAJCSAgJiYgIWR3YXJmMl9wZXJfb2JqZmlsZS0+aGFzX3NlY3Rpb25fYXRfemVybykKLUBA IC0xMTU0OCw2ICsxMTYwNCwxMSBAQCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzCitAQCAtMTE4NjcsNiArMTE5MjMsMTEgQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgcwogIAkgIFNZTUJPTF9DTEFTUyAoc3ltKSA9IExPQ19UWVBFREVGOwog IAkgIGxpc3RfdG9fYWRkID0gJmdsb2JhbF9zeW1ib2xzOwogIAkgIGJyZWFrOwpAQCAtMTEzLDEx ICsxMTMsMTEgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL2R3YXJmMnJlYWQuYwog IAlkZWZhdWx0OgogIAkgIC8qIE5vdCBhIHRhZyB3ZSByZWNvZ25pemUuICBIb3BlZnVsbHkgd2Ug YXJlbid0IHByb2Nlc3NpbmcKICAJICAgICB0cmFzaCBkYXRhLCBidXQgc2luY2Ugd2UgbXVzdCBz cGVjaWZpY2FsbHkgaWdub3JlIHRoaW5ncwotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2Ri L2YtbGFuZy5jCitJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi1sYW5nLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNTI1Lm9yaWcvZ2RiL2YtbGFuZy5jCTIwMTEtMDUt MjUgMTc6MDY6MjIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIv Zi1sYW5nLmMJMjAxMS0wNS0yNSAxNzowNzowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC00NDYsMjcg KzQ0NiwzIEBAIF9pbml0aWFsaXplX2ZfbGFuZ3VhZ2UgKHZvaWQpCistLS0gZ2RiLTcuMy41MC4y MDExMDcyMi5vcmlnL2dkYi9mLWxhbmcuYwkyMDExLTA3LTIyIDIwOjE3OjE2LjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2YtbGFuZy5jCTIwMTEtMDctMjIgMjA6 MTc6MjIuMDAwMDAwMDAwICswMjAwCitAQCAtMzcxLDI3ICszNzEsMyBAQCBfaW5pdGlhbGl6ZV9m X2xhbmd1YWdlICh2b2lkKQogIAogICAgYWRkX2xhbmd1YWdlICgmZl9sYW5ndWFnZV9kZWZuKTsK ICB9CkBAIC0xNDUsMTAgKzE0NSwxMCBAQCBJbmRleDogZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIv Zi1sYW5nLmMKIC0gICAgfQogLSAgcmV0dXJuIChOVUxMKTsKIC19Ci1JbmRleDogZ2RiLTcuMi45 MC4yMDExMDUyNS9nZGIvZi1sYW5nLmgKK0luZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9m LWxhbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA1MjUub3JpZy9nZGIvZi1s YW5nLmgJMjAxMS0wNS0yNSAxNzowNjoyMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjkw LjIwMTEwNTI1L2dkYi9mLWxhbmcuaAkyMDExLTA1LTI1IDE3OjA3OjAyLjAwMDAwMDAwMCArMDIw MAorLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZi1sYW5nLmgJMjAxMS0wNy0yMiAy MDoxNzoxNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLWxh bmcuaAkyMDExLTA3LTIyIDIwOjE3OjIyLjAwMDAwMDAwMCArMDIwMAogQEAgLTUyLDM2ICs1Miw4 IEBAIGVudW0gZjkwX3JhbmdlX3R5cGUKICAgICAgTk9ORV9CT1VORF9ERUZBVUxUCQkvKiAiKGxv dzpoaWdoKSIgICovCiAgICB9OwpAQCAtMTg2LDExICsxODYsMTEgQEAgSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA1MjUvZ2RiL2YtbGFuZy5oCiAgCiAgLyogV2hlbiByZWFzb25hYmxlIGFycmF5IGJv dW5kcyBjYW5ub3QgYmUgZmV0Y2hlZCwgc3VjaCBhcyB3aGVuIAogICAgIHlvdSBhc2sgdG8gJ210 IHByaW50IHN5bWJvbHMnIGFuZCB0aGVyZSBpcyBubyBzdGFjayBmcmFtZSBhbmQgCi1JbmRleDog Z2RiLTcuMi45MC4yMDExMDUyNS9nZGIvZi12YWxwcmludC5jCitJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvZi12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDEx MDUyNS5vcmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMS0wNS0yNSAxNzowNjoyMi4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9mLXZhbHByaW50LmMJMjAxMS0wNS0y NSAxNzowNzowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zNCw2ICszNCw4IEBACistLS0gZ2RiLTcu My41MC4yMDExMDcyMi5vcmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMS0wNy0yMiAyMDoxNzoxNi4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLXZhbHByaW50LmMJ MjAxMS0wNy0yMiAyMDoxODoyNi4wMDAwMDAwMDAgKzAyMDAKK0BAIC0zNCwxMCArMzQsMTEgQEAK ICAjaW5jbHVkZSAiZ2RiY29yZS5oIgogICNpbmNsdWRlICJjb21tYW5kLmgiCiAgI2luY2x1ZGUg ImJsb2NrLmgiCkBAIC0xOTksNyArMTk5LDExIEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1 L2dkYi9mLXZhbHByaW50LmMKICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9mX3ZhbHByaW50 ICh2b2lkKTsKICBzdGF0aWMgdm9pZCBpbmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICosIGludCk7 Ci1AQCAtNTAxLDIyICs1MDMsNTQgQEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBnZAorLXN0YXRpYyB2b2lkIGxpc3RfYWxsX3Zpc2libGVfY29tbW9ucyAoY2hhciAqKTsK KyBzdGF0aWMgdm9pZCBmNzdfY3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0X3RibCAoc3RydWN0IHR5 cGUgKiwKKyAJCQkJCSAgICAgIHN0cnVjdCB1aV9maWxlICopOworIHN0YXRpYyB2b2lkIGY3N19n ZXRfZHluYW1pY19sZW5ndGhfb2ZfYWdncmVnYXRlIChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC01MTUs MjIgKzUxNiw1NCBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkCiAg ICByZXR1cm4gMDsKICB9CiAgCkBAIC0yNjcsNyArMjcxLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA1MjUvZ2RiL2YtdmFscHJpbnQuYwogIH0KICAKICAvKiBUaGlzIGZ1bmN0aW9uIGlzIHVz ZWQgdG8gcHJpbnQgb3V0IHRoZSB2YWx1ZXMgaW4gYSBnaXZlbiBDT01NT04gCi1AQCAtNTI2LDEx ICs1NjAsOSBAQCBsaXN0X2FsbF92aXNpYmxlX2NvbW1vbnMgKGNoYXIgKmZ1bm5hbWUpCitAQCAt NTQwLDExICs1NzMsOSBAQCBsaXN0X2FsbF92aXNpYmxlX2NvbW1vbnMgKGNoYXIgKmZ1bm5hbWUp CiAgc3RhdGljIHZvaWQKICBpbmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICpjb21uYW1lLCBpbnQg ZnJvbV90dHkpCiAgewpAQCAtMjgxLDcgKzI4NSw3IEBAIEluZGV4OiBnZGItNy4yLjkwLjIwMTEw NTI1L2dkYi9mLXZhbHByaW50LmMKICAKICAgIC8qIFdlIGhhdmUgYmVlbiB0b2xkIHRvIGRpc3Bs YXkgdGhlIGNvbnRlbnRzIG9mIEY3NyBDT01NT04gCiAgICAgICBibG9jayBzdXBwb3NlZGx5IHZp c2libGUgaW4gdGhpcyBmdW5jdGlvbi4gIExldCB1cyAKLUBAIC01NDIsNzQgKzU3NCwzMSBAQCBp bmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICpjb21uYW1lLCBpbnQgCitAQCAtNTU2LDc0ICs1ODcs MzEgQEAgaW5mb19jb21tb25fY29tbWFuZCAoY2hhciAqY29tbmFtZSwgaW50IAogICAgLyogVGhl IGZvbGxvd2luZyBpcyBnZW5lcmFsbHkgcmlwcGVkIG9mZiBmcm9tIHN0YWNrLmMncyByb3V0aW5l IAogICAgICAgcHJpbnRfZnJhbWVfaW5mbygpLiAgKi8KICAKQEAgLTM3MiwxMSArMzc2LDExIEBA IEluZGV4OiBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi9mLXZhbHByaW50LmMKICB9CiAgCiAgdm9p ZAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3N0YWNrLmMKK0luZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9zdGFjay5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDEx MDUyNS5vcmlnL2dkYi9zdGFjay5jCTIwMTEtMDUtMjUgMTc6MDU6MjEuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvc3RhY2suYwkyMDExLTA1LTI1IDE3OjA3OjAy LjAwMDAwMDAwMCArMDIwMAotQEAgLTE1MjUsNiArMTUyNSw4IEBAIGl0ZXJhdGVfb3Zlcl9ibG9j a19sb2NhbHMgKHN0cnVjdCBibG9jayAKKy0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2Ri L3N0YWNrLmMJMjAxMS0wNy0yMiAyMDoxMjowNS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9zdGFjay5jCTIwMTEtMDctMjIgMjA6MTc6MjIuMDAwMDAwMDAwICsw MjAwCitAQCAtMTUyNCw2ICsxNTI0LDggQEAgaXRlcmF0ZV9vdmVyX2Jsb2NrX2xvY2FscyAoc3Ry dWN0IGJsb2NrIAogIAljYXNlIExPQ19DT01QVVRFRDoKICAJICBpZiAoU1lNQk9MX0lTX0FSR1VN RU5UIChzeW0pKQogIAkgICAgYnJlYWs7CkBAIC0zODUsMjYgKzM4OSwyNiBAQCBJbmRleDogZ2Ri LTcuMi45MC4yMDExMDUyNS9nZGIvc3RhY2suYwogIAkgICgqY2IpIChTWU1CT0xfUFJJTlRfTkFN RSAoc3ltKSwgc3ltLCBjYl9kYXRhKTsKICAJICBicmVhazsKICAKLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNTI1L2dkYi9zeW10YWIuaAorSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5 bXRhYi5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDUyNS5vcmlnL2dkYi9zeW10 YWIuaAkyMDExLTA1LTI1IDE3OjA1OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAu MjAxMTA1MjUvZ2RiL3N5bXRhYi5oCTIwMTEtMDUtMjUgMTc6MDc6MDIuMDAwMDAwMDAwICswMjAw Ci1AQCAtNDExLDcgKzQxMSwxMCBAQCB0eXBlZGVmIGVudW0gZG9tYWluX2VudW1fdGFnCi0gICBU WVBFU19ET01BSU4sCistLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9zeW10YWIuaAky MDExLTA3LTIyIDIwOjEyOjA1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3N5bXRhYi5oCTIwMTEtMDctMjIgMjA6MTg6NTguMDAwMDAwMDAwICswMjAwCitAQCAt Mzk2LDcgKzM5NiwxMCBAQCB0eXBlZGVmIGVudW0gZG9tYWluX2VudW1fdGFnCiAgCi0gICAvKiBB bnkgdHlwZS4gICovCi0tICBBTExfRE9NQUlOCi0rICBBTExfRE9NQUlOLAorICAgLyogTEFCRUxf RE9NQUlOIG1heSBiZSB1c2VkIGZvciBuYW1lcyBvZiBsYWJlbHMgKGZvciBnb3RvcykuICAqLwor IAorLSAgTEFCRUxfRE9NQUlOCisrICBMQUJFTF9ET01BSU4sCiArCiArICAvKiBGb3J0cmFuIGNv bW1vbiBibG9ja3MuICBUaGVpciBuYW1pbmcgbXVzdCBiZSBzZXBhcmF0ZSBmcm9tIFZBUl9ET01B SU4uICAqLwogKyAgQ09NTU9OX0JMT0NLX0RPTUFJTgotIH0KLSBkb21haW5fZW51bTsKKyB9IGRv bWFpbl9lbnVtOwogIAotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCisgLyogU2VhcmNoaW5nIGRvbWFpbnMsIHVzZWQg Zm9yIGBzZWFyY2hfc3ltYm9scycuICBFbGVtZW50IG51bWJlcnMgYXJlCitJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy4yLjkwLjIwMTEwNTI1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v Y29tbW9uLWJsb2NrLmV4cAkyMDExLTA1LTI1IDE3OjA3OjAyLjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxv Y2suZXhwCTIwMTEtMDctMjIgMjA6MTc6MjIuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDEw MSBAQAogKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAr CkBAIC00MjgsNyArNDMyLDcgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCiArc2V0IHNyY2ZpbGUgJHt0ZXN0Zmls ZX0uZjkwCiArc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQogKwot K2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHti aW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjc3IHF1aWV0fV0gIT0gIiIgfSB7CisraWYgIHsg W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9 IiBleGVjdXRhYmxlIHtkZWJ1ZyBmOTAgcXVpZXR9XSAhPSAiIiB9IHsKICsgICAgdW50ZXN0ZWQg IkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKICsgICAgcmV0dXJuIC0xCiArfQpAQCAtNTA3 LDEwICs1MTEsMTAgQEAgSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA1MjUvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCiArZ2RiX3Rlc3QgInAgaXhfeCIgIiA9IDEgKiIg InAgaXhfeCBpbiIKICtnZGJfdGVzdCAicCBpeV95IiAiID0gMiAqIiAicCBpeV95IGluIgogK2dk Yl90ZXN0ICJwIGl6X3oyIiAiID0gMyAqIiAicCBpel96MiBpbiIKLUluZGV4OiBnZGItNy4yLjkw LjIwMTEwNTI1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmY5MAorSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24t YmxvY2suZjkwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi45MC4yMDExMDUyNS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2NvbW1vbi1ibG9jay5mOTAJMjAxMS0wNS0yNSAxNzowNzowMi4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v Y29tbW9uLWJsb2NrLmY5MAkyMDExLTA3LTIyIDIwOjE3OjIyLjAwMDAwMDAwMCArMDIwMAogQEAg LTAsMCArMSw2NyBAQAogKyEgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCiArIQoKZGlmZiAtLWdpdCBhL2dkYi1nY2M0Ni1zdGRhcmctcHJvbG9ndWUucGF0Y2gg Yi9nZGItZ2NjNDYtc3RkYXJnLXByb2xvZ3VlLnBhdGNoCmluZGV4IDA3OWM0YTAuLmQwZjMxOGUg MTAwNjQ0Ci0tLSBhL2dkYi1nY2M0Ni1zdGRhcmctcHJvbG9ndWUucGF0Y2gKKysrIGIvZ2RiLWdj YzQ2LXN0ZGFyZy1wcm9sb2d1ZS5wYXRjaApAQCAtMSwyNCArMSw2NTUgQEAKLWRpZmYgLS1naXQg YS9nZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwotaW5kZXggNmE5OGQ1Ny4uOWZh OWMzYyAxMDA2NDQKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDExLTA3 L21zZzAwNjQ1Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gd29ya2Fyb3VuZCBnY2M0NjogcHJvbG9n dWUgc2tpcCBza2lwcyB0b28gZmFyIChQUiAxMjQzNSkgIzIKKworSGksCisKK3RoaXMgaXMgYW4g aW1wcm92ZWQgcGF0Y2ggb2YgYSBmb3JtZXI6CisJW3BhdGNoXSB3b3JrYXJvdW5kIGdjYzQ2OiBw cm9sb2d1ZSBza2lwIHNraXBzIHRvbyBmYXIgKFBSIDEyNDM1KQorCWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDExLTAzL21zZzAxMTA4Lmh0bWwKKwljYW5jZWwvRllJOiBS ZTogW3BhdGNoXSB3b3JrYXJvdW5kIGdjYzQ2OiBwcm9sb2d1ZSBza2lwIHNraXBzIHRvbyBmYXIg KFBSIDEyNDM1KQorCWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDExLTAz L21zZzAxMTIzLmh0bWwKKworRm9yIGV4YW1wbGUgYGJyZWFrIGVycm9yJyBkb2VzIG5vdCB3b3Jr IGZvciBkZWJ1Z2dpbmcgR0RCIHdpdGggZ2NjLTQuNi54LgorCitBcyBnY2MtNC42LjAgYW5kIG5v dyBldmVuIDQuNi4xIHN0aWxsIGhhcyB0aGlzIGJ1ZyBhbmQgSSBoYXZlIHNlZW4gYSB1c2VyKHM/ KQorb24gbm9uLUZlZG9yYSBwbGF0Zm9ybSBhc2tpbmcgYWJvdXQgdGhpcyBidWcgYW5kIGFzIHRo ZXJlIG1heSBiZSBlbm91Z2gKK2JpbmFyaWVzIG91dCB0aGVyZSAoYWx0aG91Z2ggaXQgYWZmZWN0 cyBvbmx5IC1PMCAtZyBjb21waWxhdGlvbikgY29kZWQgaXQKK3Byb3Blcmx5IEkgaGF2ZSBjb2Rl ZCB0aGUgd29ya2Fyb3VuZCBwcm9wZXJseSB0aGlzIHRpbWUuCisKK0l0IGRvZXMgbm90IHNvbHZl IG92ZXJsYXlzIHdlbGwsIGJ1dCB0aGUgY29kZSBqdXN0IGRvZXMgbm90IHdvcmsgZm9yIG92ZXJs YXlzLAoraXQgaGFzIG5vIG90aGVyIG5lZ2F0aXZlIGVmZmVjdC4KKworSSB3aWxsIHVwZGF0ZSB0 aGUgY29kZSBhZnRlciBGU0YgZ2NjIGdldHMgZml4ZWQgdG8gbWluaW1pemUgdGhlIHdvcmthcm91 bmQuCisKK05vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMixpNjg2fS1mZWRvcmEx NnByZS1saW51eC1nbnUuCisKK0kgd291bGQgd2VsY29tZSBhIGNvbW1lbnQgd2hldGhlciBpdCBp cyBzdWl0YWJsZSBmb3IgRlNGIEdEQi4KKworCitUaGFua3MsCitKYW4KKworCitnZGIvCisyMDEx LTA3LTIyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwlQ UiBicmVha3BvaW50cy8xMjQzNQorCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9za2lwX3Byb2xvZ3Vl KTogTmV3IHZhcmlhYmxlcyBzdGFydF9wY19zYWwsCisJbmV4dF9zYWwsIGJ1Ziwgb2Zmc2V0IGFu ZCB4bW1yZWcuICBBZHZhbmNlIFBDIGlmIGl0IHNlZXMgdGhlIFBSLgorCSogZHdhcmYycmVhZC5j IChwcm9jZXNzX2Z1bGxfY29tcF91bml0KTogSW5pdGlhbGl6ZQorCWFtZDY0X3Byb2xvZ3VlX2xp bmVfYnVnLgorCSogc3ltdGFiLmggKHN0cnVjdCBzeW10YWIpOiBOZXcgZmllbGQgYW1kNjRfcHJv bG9ndWVfbGluZV9idWcuCisKK2dkYi90ZXN0c3VpdGUvCisyMDExLTA3LTIyICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwlQUiBicmVha3BvaW50cy8xMjQz NQorCSogZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmM6IE5ldyBmaWxlLgorCSogZ2RiLmFy Y2gvYW1kNjQtcHJvbG9ndWUteG1tLmV4cDogTmV3IGZpbGUuCisJKiBnZGIuYXJjaC9hbWQ2NC1w cm9sb2d1ZS14bW0uczogTmV3IGZpbGUuCisKKy0tLSBhL2dkYi9hbWQ2NC10ZGVwLmMKKysrKyBi L2dkYi9hbWQ2NC10ZGVwLmMKK0BAIC0xOTAyLDYgKzE5MDIsOSBAQCBhbWQ2NF9za2lwX3Byb2xv Z3VlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHN0YXJ0X3BjKQorIHsKKyAg IHN0cnVjdCBhbWQ2NF9mcmFtZV9jYWNoZSBjYWNoZTsKKyAgIENPUkVfQUREUiBwYzsKKysgIHN0 cnVjdCBzeW10YWJfYW5kX2xpbmUgc3RhcnRfcGNfc2FsLCBuZXh0X3NhbDsKKysgIGdkYl9ieXRl IGJ1Zls0ICsgOCAqIDddOworKyAgaW50IG9mZnNldCwgeG1tcmVnOworIAorICAgYW1kNjRfaW5p dF9mcmFtZV9jYWNoZSAoJmNhY2hlKTsKKyAgIHBjID0gYW1kNjRfYW5hbHl6ZV9wcm9sb2d1ZSAo Z2RiYXJjaCwgc3RhcnRfcGMsIDB4ZmZmZmZmZmZmZmZmZmZmZkxMLAorQEAgLTE5MDksNyArMTkx Miw3MSBAQCBhbWQ2NF9za2lwX3Byb2xvZ3VlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09S RV9BRERSIHN0YXJ0X3BjKQorICAgaWYgKGNhY2hlLmZyYW1lbGVzc19wKQorICAgICByZXR1cm4g c3RhcnRfcGM7CisgCistICByZXR1cm4gcGM7CisrICAvKiBHQ0MgUFIgZGVidWcvNDg4MjcgcHJv ZHVjZWQgZmFsc2UgcHJvbG9ndWUgZW5kOgorKyAgICAgODQgYzAgICAgICAgICAgICAgICAgdGVz dCAgICVhbCwlYWwKKysgICAgIDc0IDIzICAgICAgICAgICAgICAgIGplICAgICBhZnRlcgorKyAg ICAgPC0tIGhlcmUgaXMgMCBsaW5lcyBhZHZhbmNlIC0gdGhlIGZhbHNlIHByb2xvZ3VlIGVuZCBt YXJrZXIuCisrICAgICAwZiAyOSA4NSA3MCBmZiBmZiBmZiBtb3ZhcHMgJXhtbTAsLTB4OTAoJXJi cCkKKysgICAgIDBmIDI5IDRkIDgwICAgICAgICAgIG1vdmFwcyAleG1tMSwtMHg4MCglcmJwKQor KyAgICAgMGYgMjkgNTUgOTAgICAgICAgICAgbW92YXBzICV4bW0yLC0weDcwKCVyYnApCisrICAg ICAwZiAyOSA1ZCBhMCAgICAgICAgICBtb3ZhcHMgJXhtbTMsLTB4NjAoJXJicCkKKysgICAgIDBm IDI5IDY1IGIwICAgICAgICAgIG1vdmFwcyAleG1tNCwtMHg1MCglcmJwKQorKyAgICAgMGYgMjkg NmQgYzAgICAgICAgICAgbW92YXBzICV4bW01LC0weDQwKCVyYnApCisrICAgICAwZiAyOSA3NSBk MCAgICAgICAgICBtb3ZhcHMgJXhtbTYsLTB4MzAoJXJicCkKKysgICAgIDBmIDI5IDdkIGUwICAg ICAgICAgIG1vdmFwcyAleG1tNywtMHgyMCglcmJwKQorKyAgICAgYWZ0ZXI6ICAqLworKworKyAg aWYgKHBjID09IHN0YXJ0X3BjKQorKyAgICByZXR1cm4gcGM7CisrCisrICBzdGFydF9wY19zYWwg PSBmaW5kX3BjX3NlY3RfbGluZSAoc3RhcnRfcGMsIE5VTEwsIDApOworKyAgaWYgKHN0YXJ0X3Bj X3NhbC5zeW10YWIgPT0gTlVMTAorKyAgICAgIHx8ICFzdGFydF9wY19zYWwuc3ltdGFiLT5hbWQ2 NF9wcm9sb2d1ZV9saW5lX2J1ZworKyAgICAgIHx8IHN0YXJ0X3BjX3NhbC5wYyAhPSBzdGFydF9w YyB8fCBwYyA+PSBzdGFydF9wY19zYWwuZW5kKQorKyAgICByZXR1cm4gcGM7CisrCisrICBuZXh0 X3NhbCA9IGZpbmRfcGNfc2VjdF9saW5lIChzdGFydF9wY19zYWwuZW5kLCBOVUxMLCAwKTsKKysg IGlmIChuZXh0X3NhbC5saW5lICE9IHN0YXJ0X3BjX3NhbC5saW5lKQorKyAgICByZXR1cm4gcGM7 CisrCisrICAvKiBTVEFSVF9QQyBjYW4gYmUgZnJvbSBvdmVybGF5ZWQgbWVtb3J5LCBpZ25vcmVk IGhlcmUuICAqLworKyAgaWYgKHRhcmdldF9yZWFkX21lbW9yeSAobmV4dF9zYWwucGMgLSA0LCBi dWYsIHNpemVvZiAoYnVmKSkgIT0gMCkKKysgICAgcmV0dXJuIHBjOworKworKyAgLyogdGVzdCAl YWwsJWFsICovCisrICBpZiAoYnVmWzBdICE9IDB4ODQgfHwgYnVmWzFdICE9IDB4YzApCisrICAg IHJldHVybiBwYzsKKysgIC8qIGplIEFGVEVSICovCisrICBpZiAoYnVmWzJdICE9IDB4NzQpCisr ICAgIHJldHVybiBwYzsKKysKKysgIG9mZnNldCA9IDQ7CisrICBmb3IgKHhtbXJlZyA9IDA7IHht bXJlZyA8IDg7IHhtbXJlZysrKQorKyAgICB7CisrICAgICAgLyogbW92YXBzICV4bW1yZWc/LC0w eD8/KCVyYnApICovCisrICAgICAgaWYgKGJ1ZltvZmZzZXRdICE9IDB4MGYgfHwgYnVmW29mZnNl dCArIDFdICE9IDB4MjkKKysgICAgICAgICAgfHwgKGJ1ZltvZmZzZXQgKyAyXSAmIDBiMDAxMTEx MTEpICE9ICh4bW1yZWcgPDwgMyB8IDBiMTAxKSkKKysJcmV0dXJuIHBjOworKworKyAgICAgIGlm ICgoYnVmW29mZnNldCArIDJdICYgMGIxMTAwMDAwMCkgPT0gMGIwMTAwMDAwMCkKKysJeworKwkg IC8qIDgtYml0IGRpc3BsYWNlbWVudC4gICovCisrCSAgb2Zmc2V0ICs9IDQ7CisrCX0KKysgICAg ICBlbHNlIGlmICgoYnVmW29mZnNldCArIDJdICYgMGIxMTAwMDAwMCkgPT0gMGIxMDAwMDAwMCkK KysJeworKwkgIC8qIDMyLWJpdCBkaXNwbGFjZW1lbnQuICAqLworKwkgIG9mZnNldCArPSA3Owor Kwl9CisrICAgICAgZWxzZQorKwlyZXR1cm4gcGM7CisrICAgIH0KKysKKysgIC8qIGplIEFGVEVS ICovCisrICBpZiAob2Zmc2V0IC0gNCAhPSBidWZbM10pCisrICAgIHJldHVybiBwYzsKKysKKysg IHJldHVybiBuZXh0X3NhbC5lbmQ7CisgfQorIAwKKyAKIC0tLSBhL2dkYi9kd2FyZjJyZWFkLmMK ICsrKyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBAIC0xMDM3MSw2ICsxMDM3MSw5IEBAIGR3YXJmX2Rl Y29kZV9saW5lcyAoc3RydWN0IGxpbmVfaGVhZGVyICpsaCwgY29uc3QgY2hhciAqY29tcF9kaXIs IGJmZCAqYWJmZCwKK0BAIC00ODE4LDYgKzQ4MTgsOSBAQCBwcm9jZXNzX2Z1bGxfY29tcF91bml0 IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCisgCisgICAgICAgaWYgKGdjY180 X21pbm9yID49IDUpCisgCXN5bXRhYi0+ZXBpbG9ndWVfdW53aW5kX3ZhbGlkID0gMTsKKysKKysg ICAgICBpZiAoZ2NjXzRfbWlub3IgPj0gNikKKysJc3ltdGFiLT5hbWQ2NF9wcm9sb2d1ZV9saW5l X2J1ZyA9IDE7CisgICAgIH0KKyAKKyAgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPnVzaW5nX2lu ZGV4KQorLS0tIGEvZ2RiL3N5bXRhYi5oCisrKysgYi9nZGIvc3ltdGFiLmgKK0BAIC03ODQsNiAr Nzg0LDExIEBAIHN0cnVjdCBzeW10YWIKICAKLSAJICBpZiAob3BfY29kZSA+PSBsaC0+b3Bjb2Rl X2Jhc2UpCi0gCSAgICB7Ci0rCSAgICAgIENPUkVfQUREUiBzYXZlZF9hZGRyZXNzID0gYWRkcmVz czsKLSsJICAgICAgdW5zaWduZWQgaW50IHNhdmVkX2xpbmUgPSBsaW5lOwotKwotIAkgICAgICAv KiBTcGVjaWFsIG9wZXJhbmQuICAqLwotIAkgICAgICBhZGpfb3Bjb2RlID0gb3BfY29kZSAtIGxo LT5vcGNvZGVfYmFzZTsKLSAJICAgICAgYWRkcmVzcyArPSAoKChvcF9pbmRleCArIChhZGpfb3Bj b2RlIC8gbGgtPmxpbmVfcmFuZ2UpKQotQEAgLTEwMzgzLDcgKzEwMzg2LDggQEAgZHdhcmZfZGVj b2RlX2xpbmVzIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCBjb25zdCBjaGFyICpjb21wX2Rpciwg YmZkICphYmZkLAotIAkJZHdhcmYyX2RlYnVnX2xpbmVfbWlzc2luZ19maWxlX2NvbXBsYWludCAo KTsKLSAJICAgICAgLyogRm9yIG5vdyB3ZSBpZ25vcmUgbGluZXMgbm90IHN0YXJ0aW5nIG9uIGFu Ci0gCQkgaW5zdHJ1Y3Rpb24gYm91bmRhcnkuICAqLwotLQkgICAgICBlbHNlIGlmIChvcF9pbmRl eCA9PSAwKQotKwkgICAgICBlbHNlIGlmIChvcF9pbmRleCA9PSAwCi0rCQkgICAgICAgJiYgKGFk ZHJlc3MgIT0gc2F2ZWRfYWRkcmVzcyB8fCBsaW5lICE9IHNhdmVkX2xpbmUpKQotIAkJewotIAkJ ICBsaC0+ZmlsZV9uYW1lc1tmaWxlIC0gMV0uaW5jbHVkZWRfcCA9IDE7Ci0gCQkgIGlmICghZGVj b2RlX2Zvcl9wc3RfcCAmJiBpc19zdG10KQorICAgdW5zaWduZWQgaW50IGVwaWxvZ3VlX3Vud2lu ZF92YWxpZCA6IDE7CisgCisrICAvKiBBdCBsZWFzdCBHQ0MgNC42LjAgYW5kIDQuNi4xIGNhbiBw cm9kdWNlIGludmFsaWQgZmFsc2UgcHJvbG9ndWUgYW5kIG1hcmtlcgorKyAgICAgb24gYW1kNjQu ICBUaGlzIGZsYWcgaXMgc2V0IGluZGVwZW5kZW50bHkgb2YgdGhlIHN5bXRhYiBhcmNoLiAgKi8K KysKKysgIHVuc2lnbmVkIGFtZDY0X3Byb2xvZ3VlX2xpbmVfYnVnIDogMTsKKysKKyAgIC8qIFRo ZSBtYWNybyB0YWJsZSBmb3IgdGhpcyBzeW10YWIuICBMaWtlIHRoZSBibG9ja3ZlY3RvciwgdGhp cworICAgICAgbWF5IGJlIHNoYXJlZCBiZXR3ZWVuIGRpZmZlcmVudCBzeW10YWJzIC0tLSBhbmQg bm9ybWFsbHkgaXMgZm9yCisgICAgICBhbGwgdGhlIHN5bXRhYnMgaW4gYSBnaXZlbiBjb21waWxh dGlvbiB1bml0LiAgKi8KKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFy Y2gvYW1kNjQtcHJvbG9ndWUteG1tLmMKK0BAIC0wLDAgKzEsMzggQEAKKysvKiBUaGlzIHRlc3Rj YXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAy MDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKytzdGF0aWMgdm9sYXRpbGUgaW50IHYsIGZhaWw7 CisrCisrc3RhdGljIHZvaWQKKytmdW5jIChpbnQgaSwgLi4uKQorK3sKKysgIHYgPSBpOworK30K KysKKytzdGF0aWMgdm9pZAorK21hcmtlciAodm9pZCkKKyt7CisrfQorKworK2ludAorK21haW4g KHZvaWQpCisreworKyAgZnVuYyAoMSk7CisrICBmYWlsID0gMTsKKysgIG1hcmtlciAoKTsKKysg IHJldHVybiAwOworK30KKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFy Y2gvYW1kNjQtcHJvbG9ndWUteG1tLmV4cAorQEAgLTAsMCArMSw0NiBAQAorKyMgQ29weXJpZ2h0 IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisr IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKysKKysjIFRlc3QgR0NDIFBSIGRlYnVnLzQ4ODI3IHdvcmthcm91bmQg aW4gR0RCLgorKworK3NldCB0ZXN0ZmlsZSAiYW1kNjQtcHJvbG9ndWUteG1tIgorK3NldCBzcmNm aWxlICR7dGVzdGZpbGV9LnMKKytzZXQgY3NyY2ZpbGUgJHt0ZXN0ZmlsZX0uYworK3NldCBiaW5m aWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0ueAorK3NldCBvcHRzIHt9CisrCisr aWYgW2luZm8gZXhpc3RzIENPTVBJTEVdIHsKKysgICAgIyBtYWtlIGNoZWNrIFJVTlRFU1RGTEFH Uz0nZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmV4cCBDT01QSUxFPTEnCisrICAgIHNldCBz cmNmaWxlICR7Y3NyY2ZpbGV9CisrICAgIGxhcHBlbmQgb3B0cyBkZWJ1ZyBvcHRpbWl6ZT0tTzAK Kyt9IGVsc2VpZiB7ICFbaXN0YXJnZXQgeDg2XzY0LSotKiBdIHx8ICFbaXNfbHA2NF90YXJnZXRd IH0geworKyAgICB2ZXJib3NlICJTa2lwcGluZyBhbWQ2NC1wcm9sb2d1ZS14bW0gdGVzdC4iCisr ICAgIHJldHVybiAwCisrfQorKworK2lmIHtbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxl fS5leHAgJHt0ZXN0ZmlsZX0gJHNyY2ZpbGUgJG9wdHNdfSB7CisrICAgIHJldHVybiAtMQorK30K KysKKytpZiAhW3J1bnRvX21haW5dIHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2dkYl9icmVh a3BvaW50ICJmdW5jIgorK2dkYl9icmVha3BvaW50ICJtYXJrZXIiCisrCisrZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgImZ1bmMiCisrCisrZ2RiX3Rlc3QgInAgZmFpbCIgIiA9IDAiICJzdG9w cGVkIGF0IGZ1bmMiCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNo L2FtZDY0LXByb2xvZ3VlLXhtbS5zCitAQCAtMCwwICsxLDQwMCBAQAorKy8qIFRoaXMgdGVzdGNh c2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrICAgICAgCQorKyAgIENvcHly aWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysgICAgICAJCisrLyogVGhpcyBmaWxlIGlz IGNvbXBpbGVkIGZyb20gZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmMKKysgICB1c2luZyAt ZyAtZEEgLVMuICAqLworKworKwkuZmlsZQkiYW1kNjQtcHJvbG9ndWUteG1tLmMiCisrCS50ZXh0 CisrLkx0ZXh0MDoKKysJLmxvY2FsCXYKKysJLmNvbW0Jdiw0LDQKKysJLmxvY2FsCWZhaWwKKysJ LmNvbW0JZmFpbCw0LDQKKysJLnR5cGUJZnVuYywgQGZ1bmN0aW9uCisrZnVuYzoKKysuTEZCMDoK KysJLmZpbGUgMSAiZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmMiCisrCSMgZ2RiLmFyY2gv YW1kNjQtcHJvbG9ndWUteG1tLmM6MjIKKysJLmxvYyAxIDIyIDAKKysJLmNmaV9zdGFydHByb2MK KysJIyBiYXNpYyBibG9jayAyCisrCXB1c2hxCSVyYnAKKysJLmNmaV9kZWZfY2ZhX29mZnNldCAx NgorKwkuY2ZpX29mZnNldCA2LCAtMTYKKysJbW92cQklcnNwLCAlcmJwCisrCS5jZmlfZGVmX2Nm YV9yZWdpc3RlciA2CisrCXN1YnEJJDcyLCAlcnNwCisrCW1vdnEJJXJzaSwgLTE2OCglcmJwKQor Kwltb3ZxCSVyZHgsIC0xNjAoJXJicCkKKysJbW92cQklcmN4LCAtMTUyKCVyYnApCisrCW1vdnEJ JXI4LCAtMTQ0KCVyYnApCisrCW1vdnEJJXI5LCAtMTM2KCVyYnApCisrCXRlc3RiCSVhbCwgJWFs CisrCWplCS5MMgorKwkjIGJhc2ljIGJsb2NrIDMKKysJIyBnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1 ZS14bW0uYzoyMgorKwkubG9jIDEgMjIgMAorKwltb3ZhcHMJJXhtbTAsIC0xMjgoJXJicCkKKysJ bW92YXBzCSV4bW0xLCAtMTEyKCVyYnApCisrCW1vdmFwcwkleG1tMiwgLTk2KCVyYnApCisrCW1v dmFwcwkleG1tMywgLTgwKCVyYnApCisrCW1vdmFwcwkleG1tNCwgLTY0KCVyYnApCisrCW1vdmFw cwkleG1tNSwgLTQ4KCVyYnApCisrCW1vdmFwcwkleG1tNiwgLTMyKCVyYnApCisrCW1vdmFwcwkl eG1tNywgLTE2KCVyYnApCisrLkwyOgorKwkjIGJhc2ljIGJsb2NrIDQKKysJbW92bAklZWRpLCAt MTgwKCVyYnApCisrCSMgZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmM6MjMKKysJLmxvYyAx IDIzIDAKKysJbW92bAktMTgwKCVyYnApLCAlZWF4CisrCW1vdmwJJWVheCwgdiglcmlwKQorKwkj IGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5jOjI0CisrCS5sb2MgMSAyNCAwCisrCWxlYXZl CisrCS5jZmlfZGVmX2NmYSA3LCA4CisrCXJldAorKwkuY2ZpX2VuZHByb2MKKysuTEZFMDoKKysJ LnNpemUJZnVuYywgLi1mdW5jCisrCS50eXBlCW1hcmtlciwgQGZ1bmN0aW9uCisrbWFya2VyOgor Ky5MRkIxOgorKwkjIGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5jOjI4CisrCS5sb2MgMSAy OCAwCisrCS5jZmlfc3RhcnRwcm9jCisrCSMgYmFzaWMgYmxvY2sgMgorKwlwdXNocQklcmJwCisr CS5jZmlfZGVmX2NmYV9vZmZzZXQgMTYKKysJLmNmaV9vZmZzZXQgNiwgLTE2CisrCW1vdnEJJXJz cCwgJXJicAorKwkuY2ZpX2RlZl9jZmFfcmVnaXN0ZXIgNgorKwkjIGdkYi5hcmNoL2FtZDY0LXBy b2xvZ3VlLXhtbS5jOjI5CisrCS5sb2MgMSAyOSAwCisrCXBvcHEJJXJicAorKwkuY2ZpX2RlZl9j ZmEgNywgOAorKwlyZXQKKysJLmNmaV9lbmRwcm9jCisrLkxGRTE6CisrCS5zaXplCW1hcmtlciwg Li1tYXJrZXIKKysJLmdsb2JsCW1haW4KKysJLnR5cGUJbWFpbiwgQGZ1bmN0aW9uCisrbWFpbjoK KysuTEZCMjoKKysJIyBnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYzozMworKwkubG9jIDEg MzMgMAorKwkuY2ZpX3N0YXJ0cHJvYworKwkjIGJhc2ljIGJsb2NrIDIKKysJcHVzaHEJJXJicAor KwkuY2ZpX2RlZl9jZmFfb2Zmc2V0IDE2CisrCS5jZmlfb2Zmc2V0IDYsIC0xNgorKwltb3ZxCSVy c3AsICVyYnAKKysJLmNmaV9kZWZfY2ZhX3JlZ2lzdGVyIDYKKysJIyBnZGIuYXJjaC9hbWQ2NC1w cm9sb2d1ZS14bW0uYzozNAorKwkubG9jIDEgMzQgMAorKwltb3ZsCSQxLCAlZWRpCisrCW1vdmwJ JDAsICVlYXgKKysJY2FsbAlmdW5jCisrCSMgZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmM6 MzUKKysJLmxvYyAxIDM1IDAKKysJbW92bAkkMSwgZmFpbCglcmlwKQorKwkjIGdkYi5hcmNoL2Ft ZDY0LXByb2xvZ3VlLXhtbS5jOjM2CisrCS5sb2MgMSAzNiAwCisrCWNhbGwJbWFya2VyCisrCSMg Z2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmM6MzcKKysJLmxvYyAxIDM3IDAKKysJbW92bAkk MCwgJWVheAorKwkjIGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5jOjM4CisrCS5sb2MgMSAz OCAwCisrCXBvcHEJJXJicAorKwkuY2ZpX2RlZl9jZmEgNywgOAorKwlyZXQKKysJLmNmaV9lbmRw cm9jCisrLkxGRTI6CisrCS5zaXplCW1haW4sIC4tbWFpbgorKy5MZXRleHQwOgorKwkuc2VjdGlv bgkuZGVidWdfaW5mbywiIixAcHJvZ2JpdHMKKysuTGRlYnVnX2luZm8wOgorKwkubG9uZwkweGMw CSMgTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgSW5mbworKwkudmFsdWUJMHg0CSMgRFdBUkYg dmVyc2lvbiBudW1iZXIKKysJLmxvbmcJLkxkZWJ1Z19hYmJyZXYwCSMgT2Zmc2V0IEludG8gQWJi cmV2LiBTZWN0aW9uCisrCS5ieXRlCTB4OAkjIFBvaW50ZXIgU2l6ZSAoaW4gYnl0ZXMpCisrCS51 bGViMTI4IDB4MQkjIChESUUgKDB4YikgRFdfVEFHX2NvbXBpbGVfdW5pdCkKKysJLmxvbmcJLkxB U0YxCSMgRFdfQVRfcHJvZHVjZXI6ICJHTlUgQyA0LjYuMSAyMDExMDcxNSAoUmVkIEhhdCA0LjYu MS0zKSIKKysJLmJ5dGUJMHgxCSMgRFdfQVRfbGFuZ3VhZ2UKKysJLmxvbmcJLkxBU0YyCSMgRFdf QVRfbmFtZTogImdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5jIgorKwkubG9uZwkuTEFTRjMJ IyBEV19BVF9jb21wX2RpcjogIiIKKysJLnF1YWQJLkx0ZXh0MAkjIERXX0FUX2xvd19wYworKwku cXVhZAkuTGV0ZXh0MAkjIERXX0FUX2hpZ2hfcGMKKysJLmxvbmcJLkxkZWJ1Z19saW5lMAkjIERX X0FUX3N0bXRfbGlzdAorKwkudWxlYjEyOCAweDIJIyAoRElFICgweDJkKSBEV19UQUdfc3VicHJv Z3JhbSkKKysJLmxvbmcJLkxBU0Y0CSMgRFdfQVRfbmFtZTogImZ1bmMiCisrCS5ieXRlCTB4MQkj IERXX0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmMpCisrCS5ieXRl CTB4MTUJIyBEV19BVF9kZWNsX2xpbmUKKysJCQkjIERXX0FUX3Byb3RvdHlwZWQKKysJLnF1YWQJ LkxGQjAJIyBEV19BVF9sb3dfcGMKKysJLnF1YWQJLkxGRTAJIyBEV19BVF9oaWdoX3BjCisrCS51 bGViMTI4IDB4MQkjIERXX0FUX2ZyYW1lX2Jhc2UKKysJLmJ5dGUJMHg5YwkjIERXX09QX2NhbGxf ZnJhbWVfY2ZhCisrCQkJIyBEV19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMKKysJLmxvbmcJMHg1OQkj IERXX0FUX3NpYmxpbmcKKysJLnVsZWIxMjggMHgzCSMgKERJRSAoMHg0YSkgRFdfVEFHX2Zvcm1h bF9wYXJhbWV0ZXIpCisrCS5hc2NpaSAiaVwwIgkjIERXX0FUX25hbWUKKysJLmJ5dGUJMHgxCSMg RFdfQVRfZGVjbF9maWxlIChnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYykKKysJLmJ5dGUJ MHgxNQkjIERXX0FUX2RlY2xfbGluZQorKwkubG9uZwkweDU5CSMgRFdfQVRfdHlwZQorKwkudWxl YjEyOCAweDMJIyBEV19BVF9sb2NhdGlvbgorKwkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKKysJ LnNsZWIxMjggLTE5NgorKwkudWxlYjEyOCAweDQJIyAoRElFICgweDU3KSBEV19UQUdfdW5zcGVj aWZpZWRfcGFyYW1ldGVycykKKysJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgy ZAorKwkudWxlYjEyOCAweDUJIyAoRElFICgweDU5KSBEV19UQUdfYmFzZV90eXBlKQorKwkuYnl0 ZQkweDQJIyBEV19BVF9ieXRlX3NpemUKKysJLmJ5dGUJMHg1CSMgRFdfQVRfZW5jb2RpbmcKKysJ LmFzY2lpICJpbnRcMCIJIyBEV19BVF9uYW1lCisrCS51bGViMTI4IDB4NgkjIChESUUgKDB4NjAp IERXX1RBR19zdWJwcm9ncmFtKQorKwkubG9uZwkuTEFTRjUJIyBEV19BVF9uYW1lOiAibWFya2Vy IgorKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKGdkYi5hcmNoL2FtZDY0LXByb2xvZ3Vl LXhtbS5jKQorKwkuYnl0ZQkweDFiCSMgRFdfQVRfZGVjbF9saW5lCisrCQkJIyBEV19BVF9wcm90 b3R5cGVkCisrCS5xdWFkCS5MRkIxCSMgRFdfQVRfbG93X3BjCisrCS5xdWFkCS5MRkUxCSMgRFdf QVRfaGlnaF9wYworKwkudWxlYjEyOCAweDEJIyBEV19BVF9mcmFtZV9iYXNlCisrCS5ieXRlCTB4 OWMJIyBEV19PUF9jYWxsX2ZyYW1lX2NmYQorKwkJCSMgRFdfQVRfR05VX2FsbF9jYWxsX3NpdGVz CisrCS51bGViMTI4IDB4NwkjIChESUUgKDB4NzkpIERXX1RBR19zdWJwcm9ncmFtKQorKwkJCSMg RFdfQVRfZXh0ZXJuYWwKKysJLmxvbmcJLkxBU0Y2CSMgRFdfQVRfbmFtZTogIm1haW4iCisrCS5i eXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmMp CisrCS5ieXRlCTB4MjAJIyBEV19BVF9kZWNsX2xpbmUKKysJCQkjIERXX0FUX3Byb3RvdHlwZWQK KysJLmxvbmcJMHg1OQkjIERXX0FUX3R5cGUKKysJLnF1YWQJLkxGQjIJIyBEV19BVF9sb3dfcGMK KysJLnF1YWQJLkxGRTIJIyBEV19BVF9oaWdoX3BjCisrCS51bGViMTI4IDB4MQkjIERXX0FUX2Zy YW1lX2Jhc2UKKysJLmJ5dGUJMHg5YwkjIERXX09QX2NhbGxfZnJhbWVfY2ZhCisrCQkJIyBEV19B VF9HTlVfYWxsX3RhaWxfY2FsbF9zaXRlcworKwkudWxlYjEyOCAweDgJIyAoRElFICgweDk2KSBE V19UQUdfdmFyaWFibGUpCisrCS5hc2NpaSAidlwwIgkjIERXX0FUX25hbWUKKysJLmJ5dGUJMHgx CSMgRFdfQVRfZGVjbF9maWxlIChnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYykKKysJLmJ5 dGUJMHgxMgkjIERXX0FUX2RlY2xfbGluZQorKwkubG9uZwkweGE5CSMgRFdfQVRfdHlwZQorKwku dWxlYjEyOCAweDkJIyBEV19BVF9sb2NhdGlvbgorKwkuYnl0ZQkweDMJIyBEV19PUF9hZGRyCisr CS5xdWFkCXYKKysJLnVsZWIxMjggMHg5CSMgKERJRSAoMHhhOSkgRFdfVEFHX3ZvbGF0aWxlX3R5 cGUpCisrCS5sb25nCTB4NTkJIyBEV19BVF90eXBlCisrCS51bGViMTI4IDB4YQkjIChESUUgKDB4 YWUpIERXX1RBR192YXJpYWJsZSkKKysJLmxvbmcJLkxBU0YwCSMgRFdfQVRfbmFtZTogImZhaWwi CisrCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUt eG1tLmMpCisrCS5ieXRlCTB4MTIJIyBEV19BVF9kZWNsX2xpbmUKKysJLmxvbmcJMHhhOQkjIERX X0FUX3R5cGUKKysJLnVsZWIxMjggMHg5CSMgRFdfQVRfbG9jYXRpb24KKysJLmJ5dGUJMHgzCSMg RFdfT1BfYWRkcgorKwkucXVhZAlmYWlsCisrCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2Yg RElFIDB4YgorKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cworKy5MZGVidWdf YWJicmV2MDoKKysJLnVsZWIxMjggMHgxCSMgKGFiYnJldiBjb2RlKQorKwkudWxlYjEyOCAweDEx CSMgKFRBRzogRFdfVEFHX2NvbXBpbGVfdW5pdCkKKysJLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5f eWVzCisrCS51bGViMTI4IDB4MjUJIyAoRFdfQVRfcHJvZHVjZXIpCisrCS51bGViMTI4IDB4ZQkj IChEV19GT1JNX3N0cnApCisrCS51bGViMTI4IDB4MTMJIyAoRFdfQVRfbGFuZ3VhZ2UpCisrCS51 bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQorKwkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFt ZSkKKysJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkKKysJLnVsZWIxMjggMHgxYgkjIChE V19BVF9jb21wX2RpcikKKysJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkKKysJLnVsZWIx MjggMHgxMQkjIChEV19BVF9sb3dfcGMpCisrCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2FkZHIp CisrCS51bGViMTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKKysJLnVsZWIxMjggMHgxCSMgKERX X0ZPUk1fYWRkcikKKysJLnVsZWIxMjggMHgxMAkjIChEV19BVF9zdG10X2xpc3QpCisrCS51bGVi MTI4IDB4MTcJIyAoRFdfRk9STV9zZWNfb2Zmc2V0KQorKwkuYnl0ZQkwCisrCS5ieXRlCTAKKysJ LnVsZWIxMjggMHgyCSMgKGFiYnJldiBjb2RlKQorKwkudWxlYjEyOCAweDJlCSMgKFRBRzogRFdf VEFHX3N1YnByb2dyYW0pCisrCS5ieXRlCTB4MQkjIERXX2NoaWxkcmVuX3llcworKwkudWxlYjEy OCAweDMJIyAoRFdfQVRfbmFtZSkKKysJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkKKysJ LnVsZWIxMjggMHgzYQkjIChEV19BVF9kZWNsX2ZpbGUpCisrCS51bGViMTI4IDB4YgkjIChEV19G T1JNX2RhdGExKQorKwkudWxlYjEyOCAweDNiCSMgKERXX0FUX2RlY2xfbGluZSkKKysJLnVsZWIx MjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCisrCS51bGViMTI4IDB4MjcJIyAoRFdfQVRfcHJvdG90 eXBlZCkKKysJLnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKKysJLnVsZWIx MjggMHgxMQkjIChEV19BVF9sb3dfcGMpCisrCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2FkZHIp CisrCS51bGViMTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKKysJLnVsZWIxMjggMHgxCSMgKERX X0ZPUk1fYWRkcikKKysJLnVsZWIxMjggMHg0MAkjIChEV19BVF9mcmFtZV9iYXNlKQorKwkudWxl YjEyOCAweDE4CSMgKERXX0ZPUk1fZXhwcmxvYykKKysJLnVsZWIxMjggMHgyMTE3CSMgKERXX0FU X0dOVV9hbGxfY2FsbF9zaXRlcykKKysJLnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJl c2VudCkKKysJLnVsZWIxMjggMHgxCSMgKERXX0FUX3NpYmxpbmcpCisrCS51bGViMTI4IDB4MTMJ IyAoRFdfRk9STV9yZWY0KQorKwkuYnl0ZQkwCisrCS5ieXRlCTAKKysJLnVsZWIxMjggMHgzCSMg KGFiYnJldiBjb2RlKQorKwkudWxlYjEyOCAweDUJIyAoVEFHOiBEV19UQUdfZm9ybWFsX3BhcmFt ZXRlcikKKysJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCisrCS51bGViMTI4IDB4MwkjIChEV19B VF9uYW1lKQorKwkudWxlYjEyOCAweDgJIyAoRFdfRk9STV9zdHJpbmcpCisrCS51bGViMTI4IDB4 M2EJIyAoRFdfQVRfZGVjbF9maWxlKQorKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkK KysJLnVsZWIxMjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCisrCS51bGViMTI4IDB4YgkjIChE V19GT1JNX2RhdGExKQorKwkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCisrCS51bGViMTI4 IDB4MTMJIyAoRFdfRk9STV9yZWY0KQorKwkudWxlYjEyOCAweDIJIyAoRFdfQVRfbG9jYXRpb24p CisrCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBybG9jKQorKwkuYnl0ZQkwCisrCS5ieXRl CTAKKysJLnVsZWIxMjggMHg0CSMgKGFiYnJldiBjb2RlKQorKwkudWxlYjEyOCAweDE4CSMgKFRB RzogRFdfVEFHX3Vuc3BlY2lmaWVkX3BhcmFtZXRlcnMpCisrCS5ieXRlCTAJIyBEV19jaGlsZHJl bl9ubworKwkuYnl0ZQkwCisrCS5ieXRlCTAKKysJLnVsZWIxMjggMHg1CSMgKGFiYnJldiBjb2Rl KQorKwkudWxlYjEyOCAweDI0CSMgKFRBRzogRFdfVEFHX2Jhc2VfdHlwZSkKKysJLmJ5dGUJMAkj IERXX2NoaWxkcmVuX25vCisrCS51bGViMTI4IDB4YgkjIChEV19BVF9ieXRlX3NpemUpCisrCS51 bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQorKwkudWxlYjEyOCAweDNlCSMgKERXX0FUX2Vu Y29kaW5nKQorKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKKysJLnVsZWIxMjggMHgz CSMgKERXX0FUX25hbWUpCisrCS51bGViMTI4IDB4OAkjIChEV19GT1JNX3N0cmluZykKKysJLmJ5 dGUJMAorKwkuYnl0ZQkwCisrCS51bGViMTI4IDB4NgkjIChhYmJyZXYgY29kZSkKKysJLnVsZWIx MjggMHgyZQkjIChUQUc6IERXX1RBR19zdWJwcm9ncmFtKQorKwkuYnl0ZQkwCSMgRFdfY2hpbGRy ZW5fbm8KKysJLnVsZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCisrCS51bGViMTI4IDB4ZQkjIChE V19GT1JNX3N0cnApCisrCS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxlKQorKwkudWxl YjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKKysJLnVsZWIxMjggMHgzYgkjIChEV19BVF9kZWNs X2xpbmUpCisrCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQorKwkudWxlYjEyOCAweDI3 CSMgKERXX0FUX3Byb3RvdHlwZWQpCisrCS51bGViMTI4IDB4MTkJIyAoRFdfRk9STV9mbGFnX3By ZXNlbnQpCisrCS51bGViMTI4IDB4MTEJIyAoRFdfQVRfbG93X3BjKQorKwkudWxlYjEyOCAweDEJ IyAoRFdfRk9STV9hZGRyKQorKwkudWxlYjEyOCAweDEyCSMgKERXX0FUX2hpZ2hfcGMpCisrCS51 bGViMTI4IDB4MQkjIChEV19GT1JNX2FkZHIpCisrCS51bGViMTI4IDB4NDAJIyAoRFdfQVRfZnJh bWVfYmFzZSkKKysJLnVsZWIxMjggMHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCisrCS51bGViMTI4 IDB4MjExNwkjIChEV19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMpCisrCS51bGViMTI4IDB4MTkJIyAo RFdfRk9STV9mbGFnX3ByZXNlbnQpCisrCS5ieXRlCTAKKysJLmJ5dGUJMAorKwkudWxlYjEyOCAw eDcJIyAoYWJicmV2IGNvZGUpCisrCS51bGViMTI4IDB4MmUJIyAoVEFHOiBEV19UQUdfc3VicHJv Z3JhbSkKKysJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCisrCS51bGViMTI4IDB4M2YJIyAoRFdf QVRfZXh0ZXJuYWwpCisrCS51bGViMTI4IDB4MTkJIyAoRFdfRk9STV9mbGFnX3ByZXNlbnQpCisr CS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQorKwkudWxlYjEyOCAweGUJIyAoRFdfRk9STV9z dHJwKQorKwkudWxlYjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKKysJLnVsZWIxMjggMHhi CSMgKERXX0ZPUk1fZGF0YTEpCisrCS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQor KwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKKysJLnVsZWIxMjggMHgyNwkjIChEV19B VF9wcm90b3R5cGVkKQorKwkudWxlYjEyOCAweDE5CSMgKERXX0ZPUk1fZmxhZ19wcmVzZW50KQor KwkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCisrCS51bGViMTI4IDB4MTMJIyAoRFdfRk9S TV9yZWY0KQorKwkudWxlYjEyOCAweDExCSMgKERXX0FUX2xvd19wYykKKysJLnVsZWIxMjggMHgx CSMgKERXX0ZPUk1fYWRkcikKKysJLnVsZWIxMjggMHgxMgkjIChEV19BVF9oaWdoX3BjKQorKwku dWxlYjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQorKwkudWxlYjEyOCAweDQwCSMgKERXX0FUX2Zy YW1lX2Jhc2UpCisrCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBybG9jKQorKwkudWxlYjEy OCAweDIxMTYJIyAoRFdfQVRfR05VX2FsbF90YWlsX2NhbGxfc2l0ZXMpCisrCS51bGViMTI4IDB4 MTkJIyAoRFdfRk9STV9mbGFnX3ByZXNlbnQpCisrCS5ieXRlCTAKKysJLmJ5dGUJMAorKwkudWxl YjEyOCAweDgJIyAoYWJicmV2IGNvZGUpCisrCS51bGViMTI4IDB4MzQJIyAoVEFHOiBEV19UQUdf dmFyaWFibGUpCisrCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubworKwkudWxlYjEyOCAweDMJIyAo RFdfQVRfbmFtZSkKKysJLnVsZWIxMjggMHg4CSMgKERXX0ZPUk1fc3RyaW5nKQorKwkudWxlYjEy OCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKKysJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0 YTEpCisrCS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQorKwkudWxlYjEyOCAweGIJ IyAoRFdfRk9STV9kYXRhMSkKKysJLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQorKwkudWxl YjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKKysJLnVsZWIxMjggMHgyCSMgKERXX0FUX2xvY2F0 aW9uKQorKwkudWxlYjEyOCAweDE4CSMgKERXX0ZPUk1fZXhwcmxvYykKKysJLmJ5dGUJMAorKwku Ynl0ZQkwCisrCS51bGViMTI4IDB4OQkjIChhYmJyZXYgY29kZSkKKysJLnVsZWIxMjggMHgzNQkj IChUQUc6IERXX1RBR192b2xhdGlsZV90eXBlKQorKwkuYnl0ZQkwCSMgRFdfY2hpbGRyZW5fbm8K KysJLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQorKwkudWxlYjEyOCAweDEzCSMgKERXX0ZP Uk1fcmVmNCkKKysJLmJ5dGUJMAorKwkuYnl0ZQkwCisrCS51bGViMTI4IDB4YQkjIChhYmJyZXYg Y29kZSkKKysJLnVsZWIxMjggMHgzNAkjIChUQUc6IERXX1RBR192YXJpYWJsZSkKKysJLmJ5dGUJ MAkjIERXX2NoaWxkcmVuX25vCisrCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQorKwkudWxl YjEyOCAweGUJIyAoRFdfRk9STV9zdHJwKQorKwkudWxlYjEyOCAweDNhCSMgKERXX0FUX2RlY2xf ZmlsZSkKKysJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCisrCS51bGViMTI4IDB4M2IJ IyAoRFdfQVRfZGVjbF9saW5lKQorKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKKysJ LnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQorKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1f cmVmNCkKKysJLnVsZWIxMjggMHgyCSMgKERXX0FUX2xvY2F0aW9uKQorKwkudWxlYjEyOCAweDE4 CSMgKERXX0ZPUk1fZXhwcmxvYykKKysJLmJ5dGUJMAorKwkuYnl0ZQkwCisrCS5ieXRlCTAKKysJ LnNlY3Rpb24JLmRlYnVnX2FyYW5nZXMsIiIsQHByb2diaXRzCisrCS5sb25nCTB4MmMJIyBMZW5n dGggb2YgQWRkcmVzcyBSYW5nZXMgSW5mbworKwkudmFsdWUJMHgyCSMgRFdBUkYgVmVyc2lvbgor KwkubG9uZwkuTGRlYnVnX2luZm8wCSMgT2Zmc2V0IG9mIENvbXBpbGF0aW9uIFVuaXQgSW5mbwor KwkuYnl0ZQkweDgJIyBTaXplIG9mIEFkZHJlc3MKKysJLmJ5dGUJMAkjIFNpemUgb2YgU2VnbWVu dCBEZXNjcmlwdG9yCisrCS52YWx1ZQkwCSMgUGFkIHRvIDE2IGJ5dGUgYm91bmRhcnkKKysJLnZh bHVlCTAKKysJLnF1YWQJLkx0ZXh0MAkjIEFkZHJlc3MKKysJLnF1YWQJLkxldGV4dDAtLkx0ZXh0 MAkjIExlbmd0aAorKwkucXVhZAkwCisrCS5xdWFkCTAKKysJLnNlY3Rpb24JLmRlYnVnX2xpbmUs IiIsQHByb2diaXRzCisrLkxkZWJ1Z19saW5lMDoKKysJLnNlY3Rpb24JLmRlYnVnX3N0ciwiTVMi LEBwcm9nYml0cywxCisrLkxBU0YzOgorKwkuc3RyaW5nCSIiCisrLkxBU0YwOgorKwkuc3RyaW5n CSJmYWlsIgorKy5MQVNGNDoKKysJLnN0cmluZwkiZnVuYyIKKysuTEFTRjE6CisrCS5zdHJpbmcJ IkdOVSBDIDQuNi4xIDIwMTEwNzE1IChSZWQgSGF0IDQuNi4xLTMpIgorKy5MQVNGMjoKKysJLnN0 cmluZwkiZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmMiCisrLkxBU0Y1OgorKwkuc3RyaW5n CSJtYXJrZXIiCisrLkxBU0Y2OgorKwkuc3RyaW5nCSJtYWluIgorKwkuaWRlbnQJIkdDQzogKEdO VSkgNC42LjEgMjAxMTA3MTUgKFJlZCBIYXQgNC42LjEtMykiCisrCS5zZWN0aW9uCS5ub3RlLkdO VS1zdGFjaywiIixAcHJvZ2JpdHMKKwoKZGlmZiAtLWdpdCBhL2dkYi1nY2M0Ni10eXBlZGVmLnBh dGNoIGIvZ2RiLWdjYzQ2LXR5cGVkZWYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDI5ODhkZjkuLjAwMDAwMDAKLS0tIGEvZ2RiLWdjYzQ2LXR5cGVkZWYucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwyMTggKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1w YXRjaGVzLzIwMTEtMDQvbXNnMDAxNTQuaHRtbAotU3ViamVjdDogW3BhdGNoXSBXb3JrYXJvdW5k IGJ1Z2d5IEdDQyBQUiA0NzUxMCBwcm9kdWNlZCBjb2RlCi0KLUhpLAotCi1HQ0MgUFIgZGVidWcv NDc1MTAgaXMgYWxyZWFkeSBmaXhlZCBhbmQgR0RCIGhhcyB0aGUgcHJvcGVyIHN1cHBvcnQgZm9y IGl0OgotCVJGQzogdXBkYXRlIGZvciBHQ0MgUFIgNDc1MTAKLQlodHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wMy9tc2cwMDkxNi5odG1sCi0KLVN0aWxsIEZTRiBHREIg SEVBRCB3aWxsIGNyYXNoIG9uIGEgYmluYXJ5IHByb2R1Y2VkIGJ5IG9sZGVyL2J1Z2d5IEdDQzoK LQlSZWFkaW5nIHN5bWJvbHMgZnJvbSAuLi4vZ2NjNDYuby4uLmR3YXJmMnJlYWQuYzo5MzI5OiBp bnRlcm5hbC1lcnJvcjogY291bGQgbm90IGZpbmQgcGFydGlhbCBESUUgMHg5YSBpbiBjYWNoZSBb ZnJvbSBtb2R1bGUgLi4uL2djYzQ2Lm9dCi0KLVdoaWNoIG1heSBub3QgZ2l2ZSBtdWNoIGNsdWUg dG8gdGhlIHVzZXIuCi0KLVRoZSBwcm9wb3NlZCBwYXRjaCBjb3VsZCBtYWtlIGZhbHNlIHdhcm5p bmdzIGlmIGFueSBjb2RlIG91dCB0aGVyZSBoYXMKLURXX1RBR190eXBlZGVmIHdpdGggY2hpbGRy ZW4sIGl0IGRvZXMgbm90IGNoZWNrIGZvciBzcGVjaWZpYyBHQ0MgdmVyc2lvbnMuCi1TdGlsbCBz dWNoIERXQVJGIGlzIGludmFsaWQsIGFsdGhvdWdoIGluIHN1Y2ggY2FzZSBjb21wbGFpbnQoKSB3 b3VsZCBiZSBtb3JlCi1hcHByb3ByaWF0ZSB0aGFuIHdhcm5pbmcoKS4gIERvZXMgaXQgbWFrZSBz ZW5zZSB0byBkaWZmZXJlbnRpYXRlIGl0PwotCi1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4 Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTUtbGludXgtZ251LgotCi0KLVRoYW5rcywKLUphbgotCi0K LWdkYi8KLTIwMTEtMDQtMTEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KLQotCSogZHdhcmYycmVhZC5jIChzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlKTogTmV3 IGZpZWxkCi0JdHlwZWRlZl9jaGlsZHJlbl93YXJuaW5nX3ByaW50ZWQuCi0JKGxvYWRfcGFydGlh bF9kaWVzKTogUmVhZCBpbiBhbnkgY2hpbGRyZW4gb2YgRFdfVEFHX3R5cGVkZWYgd2l0aAotCWEg d2FybmluZyBpbiBzdWNoIGNhc2UuCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDExLTA0LTExICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi5kd2FyZjIv ZHcyLXR5cGVkZWYtY2hpbGRyZW4uUzogTmV3IGZpbGUuCi0JKiBnZGIuZHdhcmYyL2R3Mi10eXBl ZGVmLWNoaWxkcmVuLmV4cDogTmV3IGZpbGUuCi0KLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsr KyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBAIC0yMDksNiArMjA5LDkgQEAgc3RydWN0IGR3YXJmMl9w ZXJfb2JqZmlsZQotICAgICAgb3Igd2UgYXJlIGZha2luZyBpdCBmb3IgT0JKRl9SRUFETk9XJ3Mg c2FrZS4gICovCi0gICB1bnNpZ25lZCBjaGFyIHVzaW5nX2luZGV4OwotIAotKyAgLyogUHJpbnQg dGhlIEdDQyBQUiBkZWJ1Zy80NzUxMCB3YXJuaW5nIG9ubHkgb25jZSBwZXIgb2JqZmlsZS4gICov Ci0rICB1bnNpZ25lZCB0eXBlZGVmX2NoaWxkcmVuX3dhcm5pbmdfcHJpbnRlZCA6IDE7Ci0rCi0g ICAvKiBUaGUgbWFwcGVkIGluZGV4LCBvciBOVUxMIGlmIC5nZGJfaW5kZXggaXMgbWlzc2luZyBv ciBub3QgYmVpbmcgdXNlZC4gICovCi0gICBzdHJ1Y3QgbWFwcGVkX2luZGV4ICppbmRleF90YWJs ZTsKLSAKLUBAIC04OTUxLDcgKzg5NTQsNyBAQCBsb2FkX3BhcnRpYWxfZGllcyAoYmZkICphYmZk LCBnZGJfYnl0ZSAqYnVmZmVyLCBnZGJfYnl0ZSAqaW5mb19wdHIsCi0gICAgICAgaWYgKHBhcmVu dF9kaWUgPT0gTlVMTAotIAkgICYmIHBhcnRfZGllLT5oYXNfc3BlY2lmaWNhdGlvbiA9PSAwCi0g CSAgJiYgcGFydF9kaWUtPmlzX2RlY2xhcmF0aW9uID09IDAKLS0JICAmJiAocGFydF9kaWUtPnRh ZyA9PSBEV19UQUdfdHlwZWRlZgotKwkgICYmICgocGFydF9kaWUtPnRhZyA9PSBEV19UQUdfdHlw ZWRlZiAmJiAhcGFydF9kaWUtPmhhc19jaGlsZHJlbikKLSAJICAgICAgfHwgcGFydF9kaWUtPnRh ZyA9PSBEV19UQUdfYmFzZV90eXBlCi0gCSAgICAgIHx8IHBhcnRfZGllLT50YWcgPT0gRFdfVEFH X3N1YnJhbmdlX3R5cGUpKQotIAl7Ci1AQCAtODk2NCw2ICs4OTY3LDIwIEBAIGxvYWRfcGFydGlh bF9kaWVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICpidWZmZXIsIGdkYl9ieXRlICppbmZvX3B0ciwK LSAJICBjb250aW51ZTsKLSAJfQotIAotKyAgICAgIC8qIFRoZSBleGNlcHRpb24gZm9yIERXX1RB R190eXBlZGVmIHdpdGggaGFzX2NoaWxkcmVuIGFib3ZlIGlzCi0rCSBhIHdvcmthcm91bmQgb2Yg R0NDIFBSIGRlYnVnLzQ3NTEwLiAgR0RCIGNyYXNoZWQgb24gYnJva2VuIEdDQyBvdXRwdXQKLSsJ IGFzIGl0IHNraXBwZWQgY2hpbGRyZW4gb2YgRFdfVEFHX3R5cGVkZWYgYnkgdGhlIHNob3J0Y3V0 IGFib3ZlIGFuZAotKwkgdGhlbiBpdCBjb3VsZCBub3QgZmluZCB0aGUgY2hpbGQgRElFcyByZWZl cmVuY2VkIGxhdGVyLiAgKi8KLSsKLSsgICAgICBpZiAoIWR3YXJmMl9wZXJfb2JqZmlsZS0+dHlw ZWRlZl9jaGlsZHJlbl93YXJuaW5nX3ByaW50ZWQKLSsJICAmJiBwYXJ0X2RpZS0+dGFnID09IERX X1RBR190eXBlZGVmICYmIHBhcnRfZGllLT5oYXNfY2hpbGRyZW4pCi0rCXsKLSsJICB3YXJuaW5n IChfKCJEV19UQUdfdHlwZWRlZiBoYXMgY2hpbGRlbiAtIEdDQyBQUiBkZWJ1Zy80NzUxMCBidWcg IgotKwkJICAgICAiLSBESUUgYXQgMHgleCBbaW4gbW9kdWxlICVzXSIpLAotKwkJICAgcGFydF9k aWUtPm9mZnNldCwgY3UtPm9iamZpbGUtPm5hbWUpOwotKwkgIGR3YXJmMl9wZXJfb2JqZmlsZS0+ dHlwZWRlZl9jaGlsZHJlbl93YXJuaW5nX3ByaW50ZWQgPSAxOwotKwl9Ci0rCi0gICAgICAgLyog SWYgd2UncmUgYXQgdGhlIHNlY29uZCBsZXZlbCwgYW5kIHdlJ3JlIGFuIGVudW1lcmF0b3IsIGFu ZAotIAkgb3VyIHBhcmVudCBoYXMgbm8gc3BlY2lmaWNhdGlvbiAobWVhbmluZyBwb3NzaWJseSBs aXZlcyBpbiBhCi0gCSBuYW1lc3BhY2UgZWxzZXdoZXJlKSwgdGhlbiB3ZSBjYW4gYWRkIHRoZSBw YXJ0aWFsIHN5bWJvbCBub3cKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmR3YXJmMi9kdzItdHlwZWRlZi1jaGlsZHJlbi5TCi1AQCAtMCwwICsxLDkyIEBACi0rLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5 cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rLyogRGVidWcgaW5mb3JtYXRpb24g Ki8KLSsKLSsJLnNlY3Rpb24gLmRlYnVnX2luZm8KLSsuTGN1MV9iZWdpbjoKLSsJLyogQ1UgaGVh ZGVyICovCi0rCS40Ynl0ZQkuTGN1MV9lbmQgLSAuTGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENv bXBpbGF0aW9uIFVuaXQgKi8KLSsuTGN1MV9zdGFydDoKLSsJLjJieXRlCTIJCQkJLyogRFdBUkYg VmVyc2lvbiAqLwotKwkuNGJ5dGUJLkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJi cmV2IHNlY3Rpb24gKi8KLSsJLmJ5dGUJNAkJCQkvKiBQb2ludGVyIHNpemUgKi8KLSsKLSsJLyog Q1UgZGllICovCi0rCS51bGViMTI4IDEJCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0 ICovCi0rCS5hc2NpaQkiZmlsZTEudHh0XDAiCQkJLyogRFdfQVRfbmFtZSAqLwotKwkuYXNjaWkJ IkdOVSBDIDMuMy4zXDAiCQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJMQkJCQkvKiBE V19BVF9sYW5ndWFnZSAoQykgKi8KLSsKLSsuTHR5cGVfaW50OgotKwkudWxlYjEyOAkyCQkJLyog QWJicmV2OiBEV19UQUdfYmFzZV90eXBlICovCi0rCS5hc2NpaQkJImludFwwIgkJCS8qIERXX0FU X25hbWUgKi8KLSsJLmJ5dGUJCTQJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmJ5dGUJCTUJ CQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwotKwkudWxlYjEyOAkweDMJCQkvKiAoRElFICgweDM4 KSBEV19UQUdfdHlwZWRlZikgKi8KLSsJLmFzY2lpCQkibmV3XDAiCQkJLyogRFdfQVRfbmFtZSAq LwotKwkubG9uZwkJLkx0eXBlX2ludCAtIC5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsK LSsJLnVsZWIxMjgJMgkJCS8qIEFiYnJldjogRFdfVEFHX2Jhc2VfdHlwZSAqLwotKwkuYXNjaWkJ CSJpbnRcMCIJCQkvKiBEV19BVF9uYW1lICovCi0rCS5ieXRlCQk0CQkJLyogRFdfQVRfYnl0ZV9z aXplICovCi0rCS5ieXRlCQk1CQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KLSsKLSsJLnVsZWIxMjgJ MAkJCS8qIEVuZCBvZiBEV19UQUdfdHlwZWRlZiAqLwotKwkudWxlYjEyOAkwCQkJLyogRW5kIG9m IERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsuTGN1MV9lbmQ6Ci0rCi0rLyogQWJicmV2IHRhYmxl ICovCi0rCS5zZWN0aW9uIC5kZWJ1Z19hYmJyZXYKLSsuTGFiYnJldjFfYmVnaW46Ci0rCS51bGVi MTI4CTEJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDExCQkJLyogRFdfVEFHX2Nv bXBpbGVfdW5pdCAqLwotKwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEy OAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3Ry aW5nICovCi0rCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLwotKwkudWxlYjEy OAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRf bGFuZ3VhZ2UgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LwotKwotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgyNAkJ CS8qIERXX1RBR19iYXNlX3R5cGUgKi8KLSsJLmJ5dGUJCTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8K LSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBE V19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8K LSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkudWxlYjEyOAkweDNlCQkJ LyogRFdfQVRfZW5jb2RpbmcgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAq LwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVy bWluYXRvciAqLwotKwotKwkudWxlYjEyOAkweDMJCQkvKiAoYWJicmV2IGNvZGUpICovCi0rCS51 bGViMTI4CTB4MTYJCQkvKiAoVEFHOiBEV19UQUdfdHlwZWRlZikgKi8KLSsJLmJ5dGUJCTB4MQkJ CS8qIERXX2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOAkweDMJCQkvKiAoRFdfQVRfbmFtZSkg Ki8KLSsJLnVsZWIxMjgJMHg4CQkJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwotKwkudWxlYjEyOAkw eDQ5CQkJLyogKERXX0FUX3R5cGUpICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiAoRFdfRk9STV9y ZWY0KSAqLwotKwkuYnl0ZQkJMHgwCi0rCS5ieXRlCQkweDAKLSsKLSsJLmJ5dGUJCTB4MAkJCS8q IFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLS0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItdHlwZWRlZi1jaGlsZHJl bi5leHAKLUBAIC0wLDAgKzEsMzcgQEAKLSsjIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLStsb2Fk X2xpYiBkd2FyZi5leHAKLSsKLSsjIE5vdGU6IEluc3BpcmVkIGZyb20gZHcyLWJhc2ljLmV4cC4K LSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0 IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0raWYgeyFbZHdhcmYyX3N1cHBvcnRdfSB7Ci0rICAgIHJl dHVybiAwCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiZHcyLXR5cGVkZWYtY2hpbGRyZW4iCi0rc2V0 IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uUwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0v JHt0ZXN0ZmlsZX0ueAotKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGly fS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgb2JqZWN0IHtub2RlYnVnfV0gIT0gIiIgfSB7Ci0r ICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfZXhpdAotK2dkYl9zdGFydAotKwotK2dkYl90ZXN0 ICJmaWxlICRiaW5maWxlIiBcCi0rCSAid2FybmluZzogRFdfVEFHX3R5cGVkZWYgaGFzIGNoaWxk ZW4gLSBHQ0MgUFIgZGVidWcvNDc1MTAgYnVnIC0gRElFIGF0IC4qIiBcCi0rCSAid2FybmluZyBt ZXNzYWdlIgotCgpkaWZmIC0tZ2l0IGEvZ2RiLXByZWxpbmstcmVsYS5wYXRjaCBiL2dkYi1wcmVs aW5rLXJlbGEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNjNmMGMuLjAw MDAwMDAKLS0tIGEvZ2RiLXByZWxpbmstcmVsYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0 MSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wMi9t c2cwMDYzMC5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIFtpMzg2XSBGaXggeyx1bn1wcmVsaW5rZWQg bGlicmFyaWVzIGZvciBhdHRhY2gvY29yZS1sb2FkCi0KLUhpLAotCi1wbGVhc2Ugc2VlIGNvbW1l bnRzIGluIHRoZSBwYXRjaC4gIFRoZSBhZGp1c3RlZCB0ZXN0Y2FzZSBGQUlMcyBvbiBpMzg2Lgot Ci0iUHJlbGluayIsIE1hcmNoIDQsIDIwMDQgLSBieSBKYWt1YiBKZWxpbmVrOgotCWh0dHA6Ly9w ZW9wbGUucmVkaGF0LmNvbS9qYWt1Yi9wcmVsaW5rLnBkZgotCXByaW1hcmlseSBzZWN0aW9uIDcg LSBSRUwgdG8gUkVMQSBjb252ZXJzaW9uCi0KLUFuIGV4YW1wbGUgb2YgdW5wcmVsaW5rZWQgLT4g cHJlbGlua2VkIGxpYnJhcnkgY2hhbmdlOgotIFByb2dyYW0gSGVhZGVyczoKLSAgIFR5cGUgICAg ICAgICAgIE9mZnNldCAgIFZpcnRBZGRyICAgUGh5c0FkZHIgICBGaWxlU2l6IE1lbVNpeiAgRmxn IEFsaWduCi0tICBMT0FEICAgICAgICAgICAweDAwMDAwMCAweDAwMDAwMDAwIDB4MDAwMDAwMDAg MHgwMDUzOCAweDAwNTM4IFIgRSAweDEwMDAKLS0gIExPQUQgICAgICAgICAgIDB4MDAwNTM4IDB4 MDAwMDE1MzggMHgwMDAwMTUzOCAweDAwMTAwIDB4MDAxMTAgUlcgIDB4MTAwMAotLSAgRFlOQU1J QyAgICAgICAgMHgwMDA1NTAgMHgwMDAwMTU1MCAweDAwMDAxNTUwIDB4MDAwYzggMHgwMDBjOCBS VyAgMHg0Ci0tICBOT1RFICAgICAgICAgICAweDAwMDBmNCAweDAwMDAwMGY0IDB4MDAwMDAwZjQg MHgwMDAyNCAweDAwMDI0IFIgICAweDQKLS0gIEdOVV9FSF9GUkFNRSAgIDB4MDAwNGU4IDB4MDAw MDA0ZTggMHgwMDAwMDRlOCAweDAwMDE0IDB4MDAwMTQgUiAgIDB4NAotKyAgTE9BRCAgICAgICAg ICAgMHgwMDAwMDAgMHg0MTFiMzAwMCAweDQxMWIzMDAwIDB4MDA1NTggMHgwMDU1OCBSIEUgMHgx MDAwCi0rICBMT0FEICAgICAgICAgICAweDAwMDU1OCAweDQxMWI0NTU4IDB4NDExYjQ1NTggMHgw MDEwMCAweDAwMTEwIFJXICAweDEwMDAKLSsgIERZTkFNSUMgICAgICAgIDB4MDAwNTcwIDB4NDEx YjQ1NzAgMHg0MTFiNDU3MCAweDAwMGM4IDB4MDAwYzggUlcgIDB4NAotKyAgTk9URSAgICAgICAg ICAgMHgwMDAwZjQgMHg0MTFiMzBmNCAweDQxMWIzMGY0IDB4MDAwMjQgMHgwMDAyNCBSICAgMHg0 Ci0rICBHTlVfRUhfRlJBTUUgICAweDAwMDUwOCAweDQxMWIzNTA4IDB4NDExYjM1MDggMHgwMDAx NCAweDAwMDE0IFIgICAweDQKLSAgIEdOVV9TVEFDSyAgICAgIDB4MDAwMDAwIDB4MDAwMDAwMDAg MHgwMDAwMDAwMCAweDAwMDAwIDB4MDAwMDAgUlcgIDB4NAotCi1TbyBmYXIgR0RCIGV4cGVjdGVk IGFsbCBzdWNoIGRpc3BsYWNlbWVudHMgd2lsbCBiZSBhbHdheXMgUEFHRV9TSVpFIGFsaWduZWQu Ci1UaGlzIGFwcGxpZXMgZm9yIGV4YW1wbGUgZm9yIHJlLXByZWxpbmtpbmcgb2YgYW4gYWxyZWFk eSBwcmVsaW5rZWQgZmlsZS4KLUJ1dCBpdCBkb2VzIG5vdCBhcHBseSBmb3IgcHJlbGlua2luZyBv ZiBhbiB1bnByZWxpbmtlZCBmaWxlIG9yIHVucHJlbGlua2luZyBvZgotYSBwcmVsaW5rZWQgZmls ZSwgdGhlcmUgY2FuIGJlIGFyYml0cmFyeSBkaXNwbGFjZW1lbnQuCi0KLUl0IGFmZmVjdHMgaTM4 NiAoPWk2ODYsIHByZWxpbmsgZG9jIHJlcG9ydHMgYWxzbyBBUk0gYW5kIE1JUFMpIHdoaWNoIHVz ZXMgUkVMLgoteDg2XzY0IGFsd2F5cyB1c2VzIFJFTEEsIHRoZXJlZm9yZSBJIGhhdmUgbm90IG5v dGljZWQgaXQgc28gZmFyLiAgaTM4NiBzdGlsbAotaGFzIHRvIGJlIHN1cHBvcnRlZC4KLQotVGhp cyBhZmZlY3RzIGJvdGggYXR0YWNobWVudCB0byBhIFBJRCBhbmQgY29yZSBmaWxlIGxvYWRzLgot Ci1UaGlzIGFwcGxpZXMgaW4gcmVhbCB3b3JsZCBpZiB5b3UgdHJhbnNmZXIgYSBjb3JlIGZpbGUg YmV0d2VlbiBob3N0cyBhbmQgdHJ5IHRvCi1iYWNrdHJhY2UgdGhlbSwgbGlicmFyaWVzIG9mIGJv dGggaG9zdHMgbWF5IGRpZmZlciB3aGV0aGVyIHRoZXkgYXJlIC8gYXJlIG5vdAotcHJlbGlua2Vk LgotCi1JIGNvdWxkIGltcGxlbWVudCBzb21lIChkaXNwbGFjZW1lbnQtZm9yZ2l2aW5nIGFuZCBw cmVsaW5rLW1vZGlmaWNhdGlvbnMKLWZvcmdpdmluZykgY29tcGFyaXNvbiBvZiBib3RoIERZTkFN SUMgc2VnbWVudHMgZm91bmQuICBCdXQgSSBkbyBub3QgdGhpbmsgaXQgaXMKLXVzZWZ1bCwgaWYg dGhlIERZTkFNSUMgYWRkcmVzcyBmcm9tIGxpbmttYXAgdnMuIGJmZCBkbyBub3QgbWF0Y2ggaXQg aXMgc3RpbGwgYQotYmV0dGVyIGNoYW5jZSB0byB0cnkgYSBkaXNwbGFjZW1lbnQgdG8gbWFrZSB0 aGVtIG1hdGNoLiAgS2VlcGluZyB0aGUgZmlsZQotcmVsb2NhdGlvbiBjYW5ub3Qgd29yayBhbnl3 YXkgd2hlbiB0aGUgRFlOQU1JQyBhZGRyZXNzIGlzIHZlcmlmaWVkIGFzIHdyb25nLgotCi1ObyBy ZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTUtbGludXgtZ251 LgotCi1Nb3N0bHkgZG8geW91IGFncmVlIHRoZSBEWU5BTUlDIGNvbnRlbnQgZG9lcyBub3QgaGF2 ZSB0byBiZSB2ZXJpZmVkPwotRG8geW91IGhhdmUgYW55IGNvbW1lbnRzIG9uIHRoZSBpbi1jb2Rl IGxvbmcgY29tbWVudHM/Ci0KLQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMS0wMi0yMiAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JRml4IGxpYnJh cmllcyBkaXNwbGFjZW1lbnQgaWYgdGhleSBjaGFuZ2Ugd2hldGhlciB0aGV5IHdlcmUgcHJlbGlu a2VkLgotCSogc29saWItc3ZyNC5jIChMTV9BRERSX0NIRUNLKTogU2V0IExfQUREUiBldmVuIGlm IHRoZSBEWU5BTUlDIHBvaW50ZXIKLQlkb2VzIG5vdCBtYXRjaC4gIENvbW1lbnQgd2h5LgotCi1n ZGIvdGVzdHN1aXRlLwotMjAxMS0wMi0yMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgotCi0JKiBnZGIuYmFzZS9icmVhay1pbnRlcnAtbGliLmMgKHYsIHZwdHIp OiBOZXcgdmFyaWFibGVzLgotCSogZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cCAodGVzdF9hdHRh Y2gpOiBOZXcgY29tbWVudC4KLQotLS0tIGEvZ2RiL3NvbGliLXN2cjQuYwotKysrIGIvZ2RiL3Nv bGliLXN2cjQuYwotQEAgLTIzNywxMSArMjM3LDExIEBAIExNX0FERFJfQ0hFQ0sgKHN0cnVjdCBz b19saXN0ICpzbywgYmZkICphYmZkKQotIAotIAkgICAgIEV2ZW4gb24gUFBDIGl0IG11c3QgYmUg emVyby1hbGlnbmVkIGF0IGxlYXN0IGZvciBNSU5QQUdFU0laRS4gICovCi0gCi0rCSAgbF9hZGRy ID0gbF9keW5hZGRyIC0gZHluYWRkcjsKLSsKLSAJICBpZiAoKGxfYWRkciAmIChtaW5wYWdlc2l6 ZSAtIDEpKSA9PSAwCi0gCSAgICAgICYmIChsX2FkZHIgJiBhbGlnbikgPT0gKChsX2R5bmFkZHIg LSBkeW5hZGRyKSAmIGFsaWduKSkKLSAJICAgIHsKLS0JICAgICAgbF9hZGRyID0gbF9keW5hZGRy IC0gZHluYWRkcjsKLS0KLSAJICAgICAgaWYgKGluZm9fdmVyYm9zZSkKLSAJCXByaW50Zl91bmZp bHRlcmVkIChfKCJVc2luZyBQSUMgKFBvc2l0aW9uIEluZGVwZW5kZW50IENvZGUpICIKLSAJCQkJ ICAgICAicHJlbGluayBkaXNwbGFjZW1lbnQgJXMgZm9yIFwiJXNcIi5cbiIpLAotQEAgLTI0OSw5 ICsyNDksMjAgQEAgTE1fQUREUl9DSEVDSyAoc3RydWN0IHNvX2xpc3QgKnNvLCBiZmQgKmFiZmQp Ci0gCQkJCSAgIHNvLT5zb19uYW1lKTsKLSAJICAgIH0KLSAJICBlbHNlCi0tCSAgICB3YXJuaW5n IChfKCIuZHluYW1pYyBzZWN0aW9uIGZvciBcIiVzXCIgIgotLQkJICAgICAgICJpcyBub3QgYXQg dGhlIGV4cGVjdGVkIGFkZHJlc3MgIgotLQkJICAgICAgICIod3JvbmcgbGlicmFyeSBvciB2ZXJz aW9uIG1pc21hdGNoPykiKSwgc28tPnNvX25hbWUpOwotKwkgICAgewotKwkgICAgICAvKiBUaGVy ZSBpcyBubyB3YXkgdG8gdmVyaWZ5IHRoZSBsaWJyYXJ5IGZpbGUgbWF0Y2hlcy4gIHByZWxpbmsK LSsJCSBjYW4gZHVyaW5nIHByZWxpbmtpbmcgb2YgYW4gdW5wcmVsaW5rZWQgZmlsZSAob3IgdW5w cmVsaW5raW5nCi0rCQkgb2YgYSBwcmVsaW5rZWQgZmlsZSkgc2hpZnQgdGhlIERZTkFNSUMgc2Vn bWVudCBieSBhcmJpdHJhcnkKLSsJCSBvZmZzZXQgd2l0aG91dCBhbnkgcGFnZSBzaXplIGFsaWdu bWVudC4gIFRoZXJlIGlzIG5vIHdheSB0bwotKwkJIGZpbmQgb3V0IHRoZSBFTEYgaGVhZGVyIGFu ZC9vciBQcm9ncmFtIEhlYWRlcnMgZm9yIGEgbGltaXRlZAotKwkJIHZlcmlmaWNhdGlvbiBpZiBp dCB0aGV5IG1hdGNoLiAgT25lIGNvdWxkIGRvIGEgdmVyaWZpY2F0aW9uCi0rCQkgb2YgdGhlIERZ TkFNSUMgc2VnbWVudC4gIFN0aWxsIHRoZSBmb3VuZCBhZGRyZXNzIGlzIHRoZSBiZXN0Ci0rCQkg b25lIEdEQiBjb3VsZCBmaW5kLiAgKi8KLSsKLSsJICAgICAgd2FybmluZyAoXygiLmR5bmFtaWMg c2VjdGlvbiBmb3IgXCIlc1wiICIKLSsJCQkgImlzIG5vdCBhdCB0aGUgZXhwZWN0ZWQgYWRkcmVz cyAiCi0rCQkJICIod3JvbmcgbGlicmFyeSBvciB2ZXJzaW9uIG1pc21hdGNoPykiKSwgc28tPnNv X25hbWUpOwotKwkgICAgfQotIAl9Ci0gCi0gICAgIHNldF9hZGRyOgotLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAtbGliLmMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvYnJlYWstaW50ZXJwLWxpYi5jCi1AQCAtMjAsNiArMjAsMTAgQEAKLSAjaW5jbHVkZSA8 YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gCi0rLyogRm9yY2UgUkVMLT5SRUxBIGNv bnZlcnNpb24gb24gaTM4Niwgc2VlICJQcmVsaW5rIiwgTWFyY2ggNCwgMjAwNC4gICovCi0rdm9s YXRpbGUgaW50IHZbMl07Ci0rdm9sYXRpbGUgaW50ICp2cHRyID0gJnZbMV07Ci0rCi0gdm9pZAot IGxpYmZ1bmMgKGNvbnN0IGNoYXIgKmFjdGlvbikKLSB7Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2JyZWFrLWludGVycC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJl YWstaW50ZXJwLmV4cAotQEAgLTM1Miw2ICszNTIsMTQgQEAgcHJvYyB0ZXN0X2F0dGFjaCB7Zmls ZSBkaXNwbGFjZW1lbnQge3JlbGlua19hcmdzICIifX0gewotIAkgICAgIyB0ZXN0IHNpbXBsaWNp dHksIHdlIG1lcmdlZCB0aGlzIHRlc3QgYW5kIHRoZSB0ZXN0IGFib3ZlIGJ5IG5vdAotIAkgICAg IyByZXN0b3JpbmcgJElOVEVSUCBhZnRlciAkRVhFQyBwcmVsaW5rLiAgJElOVEVSUCBnZXRzIHJl c3RvcmVkCi0gCSAgICAjIGxhdGVyIGJlbG93LgotKwkgICAgIwotKwkgICAgIyBgKHdyb25nIGxp YnJhcnkgb3IgdmVyc2lvbiBtaXNtYXRjaD8pJyBtZXNzYWdlcyBhcmUgcHJpbnRlZCBmb3IKLSsJ ICAgICMgJGJpbmZpbGVfbGliIG9uIHBsYXRmb3JtcyBjb252ZXJ0aW5nIFJFTC0+UkVMQSByZWxv Y2F0aW9ucyBieQotKwkgICAgIyBwcmVsaW5rIChzdWNoIGFzIG9uIGkzODYpLiAgVGhlcmUgaXMg bm8gcmVsaWFibGUgd2F5IHRvIHZlcmlmeQotKwkgICAgIyB0aGUgbGlicmFyeSBmaWxlIG1hdGNo ZXMgdGhlIHJ1bm5pbmcgbGlicmFyeSBpbiBzdWNoIGNhc2UgYnV0Ci0rCSAgICAjIEdEQiBhdCBs ZWFzdCBhdHRlbXB0cyB0byBzZXQgdGhlIHJpZ2h0IGRpc3BsYWNlbWVudC4gIFdlIHRlc3QKLSsJ ICAgICMgYGxpYmZ1bmMnIGlzIHByZXNlbnQgaW4gdGhlIGJhY2t0cmFjZSBhbmQgdGhlcmVmb3Jl IHRoZQotKwkgICAgIyBkaXNwbGFjZW1lbnQgaGFzIGJlZW4gZ3Vlc3NlZCByaWdodC4KLSAKLSAJ ICAgIGlmIFtwcmVsaW5rJHJlbGluayAkcmVsaW5rX2FyZ3MgW2ZpbGUgdGFpbCAkZXhlY11dIHsK LSAJCSMgL3Byb2MvUElEL2V4ZSBjYW5ub3QgYmUgbG9hZGVkIGFzIGl0IGlzICJFWEVDTkFNRSAo ZGVsZXRlZCkiLgotCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoIGIvZ2RiLXJo ZWw1LWdjYzQ0LnBhdGNoCmluZGV4IGJlMTU4NmUuLmE1YTY1NjcgMTAwNjQ0Ci0tLSBhL2dkYi1y aGVsNS1nY2M0NC5wYXRjaAorKysgYi9nZGItcmhlbDUtZ2NjNDQucGF0Y2gKQEAgLTc1LDIzICs3 NSwyMyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2NvbW1vbi1ibG9jay5leHAKICBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKICBzZXQg YmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CiAgCi0taWYgIHsgW2dkYl9j b21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVj dXRhYmxlIHtkZWJ1ZyBmNzcgcXVpZXR9XSAhPSAiIiB9IHsKLSsjIFRlbXBvcmFyaWx5IHByb3Zp ZGUgZjc3Y29tcGlsZXI9Z2ZvcnRyYW40NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3Vu ZC4KKy1pZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIg IiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY5MCBxdWlldH1dICE9ICIiIH0geworKyMg VGVtcG9yYXJpbHkgcHJvdmlkZSBmOTBjb21waWxlcj1nZm9ydHJhbjQ0IHNhdmluZyB0aGUgb3Jp Z2luYWwgdmFsdWUgYXJvdW5kLgogKwogK3NldCBib2FyZCBbdGFyZ2V0X2luZm8gbmFtZV0KLStp ZiBbYm9hcmRfaW5mbyAkYm9hcmQgZXhpc3RzIGY3N2NvbXBpbGVyXSB7Ci0rICAgIHNldCBvbGRf Zjc3Y29tcGlsZXIgW2JvYXJkX2luZm8gJGJvYXJkIGY3N2NvbXBpbGVyXQotKyAgICB1bnNldF9i b2FyZF9pbmZvIGY3N2NvbXBpbGVyCi0rfSBlbHNlaWYgW2luZm8gZXhpc3RzIG9sZF9mNzdjb21w aWxlcl0gewotKyAgICB1bnNldCBvbGRfZjc3Y29tcGlsZXIKKytpZiBbYm9hcmRfaW5mbyAkYm9h cmQgZXhpc3RzIGY5MGNvbXBpbGVyXSB7CisrICAgIHNldCBvbGRfZjkwY29tcGlsZXIgW2JvYXJk X2luZm8gJGJvYXJkIGY5MGNvbXBpbGVyXQorKyAgICB1bnNldF9ib2FyZF9pbmZvIGY5MGNvbXBp bGVyCisrfSBlbHNlaWYgW2luZm8gZXhpc3RzIG9sZF9mOTBjb21waWxlcl0geworKyAgICB1bnNl dCBvbGRfZjkwY29tcGlsZXIKICt9Ci0rc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgZ2ZvcnRy YW40NAorK3NldF9ib2FyZF9pbmZvIGY5MGNvbXBpbGVyIGdmb3J0cmFuNDQKICsKLStzZXQgZXJy IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxl fSIgZXhlY3V0YWJsZSB7ZGVidWcgZjc3IHF1aWV0fV0KKytzZXQgZXJyIFtnZGJfY29tcGlsZSAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7 ZGVidWcgZjkwIHF1aWV0fV0KICsKLSt1bnNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyCi0raWYg W2luZm8gZXhpc3RzIG9sZF9mNzdjb21waWxlcl0gewotKyAgICBzZXRfYm9hcmRfaW5mbyBmNzdj b21waWxlciAkb2xkX2Y3N2NvbXBpbGVyCisrdW5zZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlcgor K2lmIFtpbmZvIGV4aXN0cyBvbGRfZjkwY29tcGlsZXJdIHsKKysgICAgc2V0X2JvYXJkX2luZm8g ZjkwY29tcGlsZXIgJG9sZF9mOTBjb21waWxlcgogK30KICsKICtpZiAgeyAkZXJyICE9ICIiIH0g ewpAQCAtMTA2LDIzICsxMDYsMjMgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCiAgc2V0IHRlc3RmaWxlIGR3YXJm LXN0cmlkZQogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAogIAotLWlmIHsgW3ByZXBhcmVf Zm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2RlYnVn IGY3N31dIH0gewotKyMgVGVtcG9yYXJpbHkgcHJvdmlkZSBmNzdjb21waWxlcj1nZm9ydHJhbjQ0 IHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWUgYXJvdW5kLgorLWlmIHsgW3ByZXBhcmVfZm9yX3Rl c3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2RlYnVnIGY5MH1d IH0geworKyMgVGVtcG9yYXJpbHkgcHJvdmlkZSBmOTBjb21waWxlcj1nZm9ydHJhbjQ0IHNhdmlu ZyB0aGUgb3JpZ2luYWwgdmFsdWUgYXJvdW5kLgogKwogK3NldCBib2FyZCBbdGFyZ2V0X2luZm8g bmFtZV0KLStpZiBbYm9hcmRfaW5mbyAkYm9hcmQgZXhpc3RzIGY3N2NvbXBpbGVyXSB7Ci0rICAg IHNldCBvbGRfZjc3Y29tcGlsZXIgW2JvYXJkX2luZm8gJGJvYXJkIGY3N2NvbXBpbGVyXQotKyAg ICB1bnNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyIAotK30gZWxzZWlmIFtpbmZvIGV4aXN0cyBv bGRfZjc3Y29tcGlsZXJdIHsKLSsgICAgdW5zZXQgb2xkX2Y3N2NvbXBpbGVyCisraWYgW2JvYXJk X2luZm8gJGJvYXJkIGV4aXN0cyBmOTBjb21waWxlcl0geworKyAgICBzZXQgb2xkX2Y5MGNvbXBp bGVyIFtib2FyZF9pbmZvICRib2FyZCBmOTBjb21waWxlcl0KKysgICAgdW5zZXRfYm9hcmRfaW5m byBmOTBjb21waWxlciAKKyt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y5MGNvbXBpbGVyXSB7 CisrICAgIHVuc2V0IG9sZF9mOTBjb21waWxlcgogK30gCi0rc2V0X2JvYXJkX2luZm8gZjc3Y29t cGlsZXIgZ2ZvcnRyYW40NAorK3NldF9ib2FyZF9pbmZvIGY5MGNvbXBpbGVyIGdmb3J0cmFuNDQK ICsKLStzZXQgZXJyIFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3Rm aWxlfSAke3NyY2ZpbGV9IHtkZWJ1ZyBmNzd9XQorK3NldCBlcnIgW3ByZXBhcmVfZm9yX3Rlc3Rp bmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2RlYnVnIGY5MH1dCiAr Ci0rdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlcgotK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjc3 Y29tcGlsZXJdIHsKLSsgICAgc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgJG9sZF9mNzdjb21w aWxlcgorK3Vuc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIKKytpZiBbaW5mbyBleGlzdHMgb2xk X2Y5MGNvbXBpbGVyXSB7CisrICAgIHNldF9ib2FyZF9pbmZvIGY5MGNvbXBpbGVyICRvbGRfZjkw Y29tcGlsZXIKICt9CiArCiAraWYgJGVyciB7CkBAIC0xMzcsMjMgKzEzNywyMyBAQCBJbmRleDog Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhw CiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCiAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7 c3ViZGlyfS8ke3Rlc3RmaWxlfQogIAotLWlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7 c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjc3IHF1 aWV0fV0gIT0gIiIgfSB7Ci0rIyBUZW1wb3JhcmlseSBwcm92aWRlIGY3N2NvbXBpbGVyPWdmb3J0 cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCistaWYgIHsgW2dkYl9jb21w aWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRh YmxlIHtkZWJ1ZyBmOTAgcXVpZXR9XSAhPSAiIiB9IHsKKysjIFRlbXBvcmFyaWx5IHByb3ZpZGUg ZjkwY29tcGlsZXI9Z2ZvcnRyYW40NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3VuZC4K ICsKICtzZXQgYm9hcmQgW3RhcmdldF9pbmZvIG5hbWVdCi0raWYgW2JvYXJkX2luZm8gJGJvYXJk IGV4aXN0cyBmNzdjb21waWxlcl0gewotKyAgICBzZXQgb2xkX2Y3N2NvbXBpbGVyIFtib2FyZF9p bmZvICRib2FyZCBmNzdjb21waWxlcl0KLSsgICAgdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21waWxl cgotK30gZWxzZWlmIFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29tcGlsZXJdIHsKLSsgICAgdW5zZXQg b2xkX2Y3N2NvbXBpbGVyCisraWYgW2JvYXJkX2luZm8gJGJvYXJkIGV4aXN0cyBmOTBjb21waWxl cl0geworKyAgICBzZXQgb2xkX2Y5MGNvbXBpbGVyIFtib2FyZF9pbmZvICRib2FyZCBmOTBjb21w aWxlcl0KKysgICAgdW5zZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlcgorK30gZWxzZWlmIFtpbmZv IGV4aXN0cyBvbGRfZjkwY29tcGlsZXJdIHsKKysgICAgdW5zZXQgb2xkX2Y5MGNvbXBpbGVyCiAr fQotK3NldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyIGdmb3J0cmFuNDQKKytzZXRfYm9hcmRfaW5m byBmOTBjb21waWxlciBnZm9ydHJhbjQ0CiArCi0rc2V0IGVyciBbZ2RiX2NvbXBpbGUgIiR7c3Jj ZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVn IGY3NyBxdWlldH1dCisrc2V0IGVyciBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0v JHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY5MCBxdWlldH1dCiAr Ci0rdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlcgotK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjc3 Y29tcGlsZXJdIHsKLSsgICAgc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgJG9sZF9mNzdjb21w aWxlcgorK3Vuc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIKKytpZiBbaW5mbyBleGlzdHMgb2xk X2Y5MGNvbXBpbGVyXSB7CisrICAgIHNldF9ib2FyZF9pbmZvIGY5MGNvbXBpbGVyICRvbGRfZjkw Y29tcGlsZXIKICt9CiArCiAraWYgIHsgJGVyciAhPSAiIiB9IHsKQEAgLTE2OCwzMSArMTY4LDMx IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v bGlicmFyeS1tb2R1bGUuZXhwCiAgICAgcmV0dXJuIC0xCiAgfQogIAotLWlmICB7IFtnZGJfY29t cGlsZV9zaGxpYiAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2xpYmZpbGV9IiAkb2JqZGlyLyRz dWJkaXIvJGxpYmZpbGUge2RlYnVnIGY3N31dICE9ICIiIH0geworLWlmICB7IFtnZGJfY29tcGls ZV9zaGxpYiAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2xpYmZpbGV9IiAkb2JqZGlyLyRzdWJk aXIvJGxpYmZpbGUge2RlYnVnIGY5MH1dICE9ICIiIH0gewogLSAgICB1bnRlc3RlZCAiQ291bGRu J3QgY29tcGlsZSAke3NyY2xpYmZpbGV9IgogLSAgICByZXR1cm4gLTEKLSsjIFRlbXBvcmFyaWx5 IHByb3ZpZGUgZjc3Y29tcGlsZXI9Z2ZvcnRyYW40NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVl IGFyb3VuZC4KKysjIFRlbXBvcmFyaWx5IHByb3ZpZGUgZjkwY29tcGlsZXI9Z2ZvcnRyYW40NCBz YXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3VuZC4KICsKICtzZXQgYm9hcmQgW3RhcmdldF9p bmZvIG5hbWVdCi0raWYgW2JvYXJkX2luZm8gJGJvYXJkIGV4aXN0cyBmNzdjb21waWxlcl0gewot KyAgICBzZXQgb2xkX2Y3N2NvbXBpbGVyIFtib2FyZF9pbmZvICRib2FyZCBmNzdjb21waWxlcl0K LSsgICAgdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlcgotK30gZWxzZWlmIFtpbmZvIGV4aXN0 cyBvbGRfZjc3Y29tcGlsZXJdIHsKLSsgICAgdW5zZXQgb2xkX2Y3N2NvbXBpbGVyCisraWYgW2Jv YXJkX2luZm8gJGJvYXJkIGV4aXN0cyBmOTBjb21waWxlcl0geworKyAgICBzZXQgb2xkX2Y5MGNv bXBpbGVyIFtib2FyZF9pbmZvICRib2FyZCBmOTBjb21waWxlcl0KKysgICAgdW5zZXRfYm9hcmRf aW5mbyBmOTBjb21waWxlcgorK30gZWxzZWlmIFtpbmZvIGV4aXN0cyBvbGRfZjkwY29tcGlsZXJd IHsKKysgICAgdW5zZXQgb2xkX2Y5MGNvbXBpbGVyCiAgfQotK3NldF9ib2FyZF9pbmZvIGY3N2Nv bXBpbGVyIGdmb3J0cmFuNDQKKytzZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlciBnZm9ydHJhbjQ0 CiAgCiAgIyBwcmVwYXJlX2Zvcl90ZXN0aW5nIGNhbm5vdCBiZSB1c2VkIGFzIGxpbmtpbmcgd2l0 aCAkbGliZmlsZSBjYW5ub3QgYmUgcGFzc2VkCiAgIyBqdXN0IGZvciB0aGUgbGlua2luZyBwaGFz ZSAoYW5kIG5vdCB0aGUgc291cmNlIGNvbXBpbGF0aW9uIHBoYXNlKS4gIEFuZCBhbnkKICAjIHdh cm5pbmdzIG9uIGlnbm9yZWQgJGxpYmZpbGUgYWJvcnQgdGhlIHByb2Nlc3MuCiAgCi0taWYgIHsg W2dkYl9jb21waWxlIFtsaXN0ICRzcmNkaXIvJHN1YmRpci8kc3JjZmlsZSAkb2JqZGlyLyRzdWJk aXIvJGxpYmZpbGVdICRvYmpkaXIvJHN1YmRpci8kYmluZmlsZSBleGVjdXRhYmxlIHtkZWJ1ZyBm Nzd9XSAhPSAiIiB9IHsKLStzZXQgZXJyMSBbZ2RiX2NvbXBpbGVfc2hsaWIgIiR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNsaWJmaWxlfSIgJG9iamRpci8kc3ViZGlyLyRsaWJmaWxlIHtkZWJ1ZyBm Nzd9XQotK3NldCBlcnIyIFtnZGJfY29tcGlsZSBbbGlzdCAkc3JjZGlyLyRzdWJkaXIvJHNyY2Zp bGUgJG9iamRpci8kc3ViZGlyLyRsaWJmaWxlXSAkb2JqZGlyLyRzdWJkaXIvJGJpbmZpbGUgZXhl Y3V0YWJsZSB7ZGVidWcgZjc3fV0KKy1pZiAgeyBbZ2RiX2NvbXBpbGUgW2xpc3QgJHNyY2Rpci8k c3ViZGlyLyRzcmNmaWxlICRvYmpkaXIvJHN1YmRpci8kbGliZmlsZV0gJG9iamRpci8kc3ViZGly LyRiaW5maWxlIGV4ZWN1dGFibGUge2RlYnVnIGY5MH1dICE9ICIiIH0geworK3NldCBlcnIxIFtn ZGJfY29tcGlsZV9zaGxpYiAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2xpYmZpbGV9IiAkb2Jq ZGlyLyRzdWJkaXIvJGxpYmZpbGUge2RlYnVnIGY5MH1dCisrc2V0IGVycjIgW2dkYl9jb21waWxl IFtsaXN0ICRzcmNkaXIvJHN1YmRpci8kc3JjZmlsZSAkb2JqZGlyLyRzdWJkaXIvJGxpYmZpbGVd ICRvYmpkaXIvJHN1YmRpci8kYmluZmlsZSBleGVjdXRhYmxlIHtkZWJ1ZyBmOTB9XQogKwotK3Vu c2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIKLStpZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2NvbXBp bGVyXSB7Ci0rICAgIHNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyICRvbGRfZjc3Y29tcGlsZXIK Kyt1bnNldF9ib2FyZF9pbmZvIGY5MGNvbXBpbGVyCisraWYgW2luZm8gZXhpc3RzIG9sZF9mOTBj b21waWxlcl0geworKyAgICBzZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlciAkb2xkX2Y5MGNvbXBp bGVyCiArfQogKwogK2lmICB7ICRlcnIxICE9ICIiIH0gewpAQCAtMjExLDIzICsyMTEsMjMgQEAg SW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1 bGUuZXhwCiAgc2V0IHRlc3RmaWxlICJtb2R1bGUiCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0u ZjkwCiAgCi0taWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0Zmls ZSAkc3JjZmlsZSB7ZGVidWcgZjc3fV0gfSB7Ci0rIyBUZW1wb3JhcmlseSBwcm92aWRlIGY3N2Nv bXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCistaWYg eyBbcHJlcGFyZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSB7 ZGVidWcgZjkwfV0gfSB7CisrIyBUZW1wb3JhcmlseSBwcm92aWRlIGY5MGNvbXBpbGVyPWdmb3J0 cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCiArCiArc2V0IGJvYXJkIFt0 YXJnZXRfaW5mbyBuYW1lXQotK2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjc3Y29tcGls ZXJdIHsKLSsgICAgc2V0IG9sZF9mNzdjb21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjc3Y29t cGlsZXJdCi0rICAgIHVuc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIKLSt9IGVsc2VpZiBbaW5m byBleGlzdHMgb2xkX2Y3N2NvbXBpbGVyXSB7Ci0rICAgIHVuc2V0IG9sZF9mNzdjb21waWxlcgor K2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjkwY29tcGlsZXJdIHsKKysgICAgc2V0IG9s ZF9mOTBjb21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjkwY29tcGlsZXJdCisrICAgIHVuc2V0 X2JvYXJkX2luZm8gZjkwY29tcGlsZXIKKyt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y5MGNv bXBpbGVyXSB7CisrICAgIHVuc2V0IG9sZF9mOTBjb21waWxlcgogK30KLStzZXRfYm9hcmRfaW5m byBmNzdjb21waWxlciBnZm9ydHJhbjQ0Cisrc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgZ2Zv cnRyYW40NAogKwotK3NldCBlcnIgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAk dGVzdGZpbGUgJHNyY2ZpbGUge2RlYnVnIGY3N31dCisrc2V0IGVyciBbcHJlcGFyZV9mb3JfdGVz dGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSB7ZGVidWcgZjkwfV0KICsKLSt1 bnNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyCi0raWYgW2luZm8gZXhpc3RzIG9sZF9mNzdjb21w aWxlcl0gewotKyAgICBzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciAkb2xkX2Y3N2NvbXBpbGVy CisrdW5zZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlcgorK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjkw Y29tcGlsZXJdIHsKKysgICAgc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgJG9sZF9mOTBjb21w aWxlcgogK30KICsKICtpZiAkZXJyIHsKQEAgLTI0MiwyMyArMjQyLDIzIEBAIEluZGV4OiBnZGIt Ny4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAogIHNl dCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRp cn0vJHt0ZXN0ZmlsZX0KICAKLS1pZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRp cn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY3NyBxdWlldH1d ICE9ICIiIH0gewotKyMgVGVtcG9yYXJpbHkgcHJvdmlkZSBmNzdjb21waWxlcj1nZm9ydHJhbjQ0 IHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWUgYXJvdW5kLgorLWlmICB7IFtnZGJfY29tcGlsZSAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7 ZGVidWcgZjkwIHF1aWV0fV0gIT0gIiIgfSB7CisrIyBUZW1wb3JhcmlseSBwcm92aWRlIGY5MGNv bXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCiArCiAr c2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBuYW1lXQotK2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlz dHMgZjc3Y29tcGlsZXJdIHsKLSsgICAgc2V0IG9sZF9mNzdjb21waWxlciBbYm9hcmRfaW5mbyAk Ym9hcmQgZjc3Y29tcGlsZXJdCi0rICAgIHVuc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIKLSt9 IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2NvbXBpbGVyXSB7Ci0rICAgIHVuc2V0IG9sZF9m Nzdjb21waWxlcgorK2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjkwY29tcGlsZXJdIHsK KysgICAgc2V0IG9sZF9mOTBjb21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjkwY29tcGlsZXJd CisrICAgIHVuc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIKKyt9IGVsc2VpZiBbaW5mbyBleGlz dHMgb2xkX2Y5MGNvbXBpbGVyXSB7CisrICAgIHVuc2V0IG9sZF9mOTBjb21waWxlcgogK30KLStz ZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciBnZm9ydHJhbjQ0Cisrc2V0X2JvYXJkX2luZm8gZjkw Y29tcGlsZXIgZ2ZvcnRyYW40NAogKwotK3NldCBlcnIgW2dkYl9jb21waWxlICIke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzcg cXVpZXR9XQorK3NldCBlcnIgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3Jj ZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmOTAgcXVpZXR9XQogKwotK3Vu c2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIKLStpZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2NvbXBp bGVyXSB7Ci0rICAgIHNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyICRvbGRfZjc3Y29tcGlsZXIK Kyt1bnNldF9ib2FyZF9pbmZvIGY5MGNvbXBpbGVyCisraWYgW2luZm8gZXhpc3RzIG9sZF9mOTBj b21waWxlcl0geworKyAgICBzZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlciAkb2xkX2Y5MGNvbXBp bGVyCiArfQogKwogK2lmIHsgJGVyciAhPSAiIiB9IHsKQEAgLTI3MywyNCArMjczLDI0IEBAIElu ZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0 ZXAuZXhwCiAgCiAgc2V0IHRlc3RmaWxlICJvbXAtc3RlcCIKICBzZXQgc3JjZmlsZSAke3Rlc3Rm aWxlfS5mOTAKLS1pZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3Rm aWxlICRzcmNmaWxlIHtkZWJ1ZyBmNzcgYWRkaXRpb25hbF9mbGFncz0tZm9wZW5tcH1dIH0gewor LWlmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNyY2Zp bGUge2RlYnVnIGY5MCBhZGRpdGlvbmFsX2ZsYWdzPS1mb3Blbm1wfV0gfSB7CiArCi0rIyBUZW1w b3JhcmlseSBwcm92aWRlIGY3N2NvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5h bCB2YWx1ZSBhcm91bmQuCisrIyBUZW1wb3JhcmlseSBwcm92aWRlIGY5MGNvbXBpbGVyPWdmb3J0 cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCiArCiArc2V0IGJvYXJkIFt0 YXJnZXRfaW5mbyBuYW1lXQotK2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjc3Y29tcGls ZXJdIHsKLSsgICAgc2V0IG9sZF9mNzdjb21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjc3Y29t cGlsZXJdCi0rICAgIHVuc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgCi0rfSBlbHNlaWYgW2lu Zm8gZXhpc3RzIG9sZF9mNzdjb21waWxlcl0gewotKyAgICB1bnNldCBvbGRfZjc3Y29tcGlsZXIK KytpZiBbYm9hcmRfaW5mbyAkYm9hcmQgZXhpc3RzIGY5MGNvbXBpbGVyXSB7CisrICAgIHNldCBv bGRfZjkwY29tcGlsZXIgW2JvYXJkX2luZm8gJGJvYXJkIGY5MGNvbXBpbGVyXQorKyAgICB1bnNl dF9ib2FyZF9pbmZvIGY5MGNvbXBpbGVyIAorK30gZWxzZWlmIFtpbmZvIGV4aXN0cyBvbGRfZjkw Y29tcGlsZXJdIHsKKysgICAgdW5zZXQgb2xkX2Y5MGNvbXBpbGVyCiArfSAKLStzZXRfYm9hcmRf aW5mbyBmNzdjb21waWxlciBnZm9ydHJhbjQ0Cisrc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIg Z2ZvcnRyYW40NAogKwotK3NldCBlcnIgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0u ZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2RlYnVnIGY3NyBhZGRpdGlvbmFsX2ZsYWdzPS1m b3Blbm1wfV0KKytzZXQgZXJyIFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAk e3Rlc3RmaWxlfSAke3NyY2ZpbGV9IHtkZWJ1ZyBmOTAgYWRkaXRpb25hbF9mbGFncz0tZm9wZW5t cH1dCiArCi0rdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlcgotK2lmIFtpbmZvIGV4aXN0cyBv bGRfZjc3Y29tcGlsZXJdIHsKLSsgICAgc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgJG9sZF9m Nzdjb21waWxlcgorK3Vuc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIKKytpZiBbaW5mbyBleGlz dHMgb2xkX2Y5MGNvbXBpbGVyXSB7CisrICAgIHNldF9ib2FyZF9pbmZvIGY5MGNvbXBpbGVyICRv bGRfZjkwY29tcGlsZXIKICt9CiArCiAraWYgJGVyciB7CkBAIC0zMDYsMjQgKzMwNiwyNCBAQCBJ bmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2 ZWQtdHlwZS5leHAKICBzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9 CiAgCiAtaWYge1tnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAi JHtiaW5maWxlfSIgXAotLQkgZXhlY3V0YWJsZSB7ZGVidWcgZjc3fV0gIT0gIiJ9IHsKLSsjIFRl bXBvcmFyaWx5IHByb3ZpZGUgZjc3Y29tcGlsZXI9Z2ZvcnRyYW40NCBzYXZpbmcgdGhlIG9yaWdp bmFsIHZhbHVlIGFyb3VuZC4KKy0JIGV4ZWN1dGFibGUge2RlYnVnIGY5MH1dICE9ICIifSB7Cisr IyBUZW1wb3JhcmlseSBwcm92aWRlIGY5MGNvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5nIHRoZSBv cmlnaW5hbCB2YWx1ZSBhcm91bmQuCiArCiArc2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBuYW1lXQot K2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjc3Y29tcGlsZXJdIHsKLSsgICAgc2V0IG9s ZF9mNzdjb21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjc3Y29tcGlsZXJdCi0rICAgIHVuc2V0 X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIKLSt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2Nv bXBpbGVyXSB7Ci0rICAgIHVuc2V0IG9sZF9mNzdjb21waWxlcgorK2lmIFtib2FyZF9pbmZvICRi b2FyZCBleGlzdHMgZjkwY29tcGlsZXJdIHsKKysgICAgc2V0IG9sZF9mOTBjb21waWxlciBbYm9h cmRfaW5mbyAkYm9hcmQgZjkwY29tcGlsZXJdCisrICAgIHVuc2V0X2JvYXJkX2luZm8gZjkwY29t cGlsZXIKKyt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y5MGNvbXBpbGVyXSB7CisrICAgIHVu c2V0IG9sZF9mOTBjb21waWxlcgogK30KLStzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciBnZm9y dHJhbjQ0Cisrc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgZ2ZvcnRyYW40NAogKwogK3NldCBl cnIgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZp bGV9IiBcCi0rCSBleGVjdXRhYmxlIHtkZWJ1ZyBmNzd9XQorKwkgZXhlY3V0YWJsZSB7ZGVidWcg ZjkwfV0KICsKLSt1bnNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyCi0raWYgW2luZm8gZXhpc3Rz IG9sZF9mNzdjb21waWxlcl0gewotKyAgICBzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciAkb2xk X2Y3N2NvbXBpbGVyCisrdW5zZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlcgorK2lmIFtpbmZvIGV4 aXN0cyBvbGRfZjkwY29tcGlsZXJdIHsKKysgICAgc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIg JG9sZF9mOTBjb21waWxlcgogK30KICsKICtpZiB7ICRlcnIgIT0gIiIgfSB7CkBAIC0zMzksMjQg KzMzOSwyNCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3N1YmFycmF5LmV4cAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0 ZXN0ZmlsZX0KICAKIC1pZiB7W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3Jj ZmlsZX0iICIke2JpbmZpbGV9IiBcCi0tCWV4ZWN1dGFibGUge2RlYnVnIGY3N31dICE9ICIifSB7 Ci0rIyBUZW1wb3JhcmlseSBwcm92aWRlIGY3N2NvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5nIHRo ZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCistCWV4ZWN1dGFibGUge2RlYnVnIGY5MH1dICE9ICIi fSB7CisrIyBUZW1wb3JhcmlseSBwcm92aWRlIGY5MGNvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5n IHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCiArCiArc2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBu YW1lXQotK2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjc3Y29tcGlsZXJdIHsKLSsgICAg c2V0IG9sZF9mNzdjb21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjc3Y29tcGlsZXJdCi0rICAg IHVuc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIKLSt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xk X2Y3N2NvbXBpbGVyXSB7Ci0rICAgIHVuc2V0IG9sZF9mNzdjb21waWxlcgorK2lmIFtib2FyZF9p bmZvICRib2FyZCBleGlzdHMgZjkwY29tcGlsZXJdIHsKKysgICAgc2V0IG9sZF9mOTBjb21waWxl ciBbYm9hcmRfaW5mbyAkYm9hcmQgZjkwY29tcGlsZXJdCisrICAgIHVuc2V0X2JvYXJkX2luZm8g ZjkwY29tcGlsZXIKKyt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y5MGNvbXBpbGVyXSB7Cisr ICAgIHVuc2V0IG9sZF9mOTBjb21waWxlcgogK30KLStzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxl ciBnZm9ydHJhbjQ0Cisrc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgZ2ZvcnRyYW40NAogKwog K3NldCBlcnIgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIk e2JpbmZpbGV9IiBcCi0rCWV4ZWN1dGFibGUge2RlYnVnIGY3N31dCisrCWV4ZWN1dGFibGUge2Rl YnVnIGY5MH1dCiArCi0rdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlcgotK2lmIFtpbmZvIGV4 aXN0cyBvbGRfZjc3Y29tcGlsZXJdIHsKLSsgICAgc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIg JG9sZF9mNzdjb21waWxlcgorK3Vuc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIKKytpZiBbaW5m byBleGlzdHMgb2xkX2Y5MGNvbXBpbGVyXSB7CisrICAgIHNldF9ib2FyZF9pbmZvIGY5MGNvbXBp bGVyICRvbGRfZjkwY29tcGlsZXIKICt9CiArCiAraWYgeyAkZXJyICE9ICIiIH0gewoKZGlmZiAt LWdpdCBhL2dkYi1zdGFwLWRvdWJsZS1mcmVlLnBhdGNoIGIvZ2RiLXN0YXAtZG91YmxlLWZyZWUu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjN2ZjNDAuLjAwMDAwMDAKLS0t IGEvZ2RiLXN0YXAtZG91YmxlLWZyZWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCww IEBACi0tLS0gYS9nZGIvc3RhcC1wcm9iZS5jCi0rKysgYi9nZGIvc3RhcC1wcm9iZS5jCi1AQCAt MzU1LDkgKzM1NSw3IEBAIHN0YXBfZnJlZV9hcmdzX2luZm8gKHZvaWQgKmFyZ3NfaW5mb19wdHIp Ci0gICBpbnQgaTsKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCBhLT5uX2FyZ3M7IGkrKykKLS0gICAg ewotLSAgICAgIHhmcmVlIChhLT5hcmdbaV0uYXJnX3N0cik7Ci0tICAgIH0KLSsgICAgeGZyZWUg KGEtPmFyZ1tpXS5hcmdfc3RyKTsKLSAKLSAgIHhmcmVlIChhLT5hcmcpOwotICAgeGZyZWUgKGEp OwotQEAgLTQwMSw2ICszOTksNyBAQCBzdGFwX3BhcnNlX3Byb2JlX2FyZ3VtZW50cyAoc3RydWN0 IHN0YXBfcHJvYmUgKnByb2JlKQotICAgICByZXR1cm47Ci0gCi0gICBhcmdzX2luZm8gPSB4bWFs bG9jIChzaXplb2YgKHN0cnVjdCBzdGFwX2FyZ3NfaW5mbykpOwotKyAgYXJnc19pbmZvLT5uX2Fy Z3MgPSAwOwotICAgYmFja190byA9IG1ha2VfY2xlYW51cCAoc3RhcF9mcmVlX2FyZ3NfaW5mbywg YXJnc19pbmZvKTsKLSAgIGFyZ3NfaW5mby0+YXJnID0geGNhbGxvYyAoU1RBUF9NQVhfQVJHUywg c2l6ZW9mIChzdHJ1Y3Qgc3RhcF9wcm9iZV9hcmcpKTsKLSAKLUBAIC00OTMsNiArNDkyLDcgQEAg c3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSkKLSAK LSAJICAgICAgYXJnc19pbmZvLT5hcmdbY3VycmVudF9hcmddLmFyZ19zdHIKLSAJCT0gc2F2ZXN0 cmluZyAoc3RhcnQsIGN1ciAtIHN0YXJ0KTsKLSsJICAgICAgKythcmdzX2luZm8tPm5fYXJnczsK LSAJICAgICAgLyogU3RhcnQgaXQgb3ZlciBhZ2Fpbi4gICovCi0gCSAgICAgIGN1ciA9IHNraXBf c3BhY2VzICgoY2hhciAqKSBjdXIpOwotIAkgICAgICBjdXJyZW50X3N0YXRlID0gTkVXX0FSRzsK LUBAIC01MTMsNyArNTEzLDYgQEAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHN0cnVjdCBz dGFwX3Byb2JlICpwcm9iZSkKLSAJfQotICAgICB9Ci0gCi0tICBhcmdzX2luZm8tPm5fYXJncyA9 IGN1cnJlbnRfYXJnICsgMTsKLSAgIGFyZ3NfaW5mby0+YXJnID0geHJlYWxsb2MgKGFyZ3NfaW5m by0+YXJnLAotIAkJCSAgICAgIGFyZ3NfaW5mby0+bl9hcmdzCi0gCQkJICAgICAgKiBzaXplb2Yg KHN0cnVjdCBzdGFwX3Byb2JlX2FyZykpOwotQEAgLTE1MjYsOCArMTUyNSw5IEBAIHN0YXBfZnJl ZV9wYXJzZWRfYXJncyAoc3RydWN0IHN0YXBfYXJnc19pbmZvICpwYXJzZWRfYXJncykKLSAgICAg cmV0dXJuOwotIAotICAgZm9yIChpID0gMDsgaSA8IHBhcnNlZF9hcmdzLT5uX2FyZ3M7IGkrKykK LS0gICAgeGZyZWUgKHBhcnNlZF9hcmdzLT5hcmcpOwotKyAgICB4ZnJlZSAocGFyc2VkX2FyZ3Mt PmFyZ1tpXS5hcmdfc3RyKTsKLSAKLSsgIHhmcmVlIChwYXJzZWRfYXJncy0+YXJnKTsKLSAgIHhm cmVlIChwYXJzZWRfYXJncyk7Ci0gfQotIAotQEAgLTE4NTksNyArMTg1OSw3IEBAIHBhcnNlX3N0 YXBfcHJvYmUgKGNoYXIgKiphcmdwdHIsIHN0cnVjdCBsaW5lc3BlY19yZXN1bHQgKmNhbm9uaWNh bCkKLSAJaWYgKGNhbm9uaWNhbCkKLSAJICB7Ci0gCSAgICBjYW5vbmljYWwtPmNhbm9uaWNhbCA9 IHhyZWFsbG9jIChjYW5vbmljYWwtPmNhbm9uaWNhbCwKLS0JCQkJCSAgICAgcmVzdWx0Lm5lbHRz ICogc2l6ZW9mIChjaGFyICoqKSk7Ci0rCQkJCQkgICAgIHJlc3VsdC5uZWx0cyAqIHNpemVvZiAo Y2hhciAqKSk7Ci0gCSAgICBjYW5vbmljYWwtPmNhbm9uaWNhbFtyZXN1bHQubmVsdHMgLSAxXSA9 IHhzdHJkdXAgKGZ1bGxfYXJnKTsKLSAJICB9Ci0gICAgICAgfQoKZGlmZiAtLWdpdCBhL2dkYi10 ZXN0LXBwLWhpbnQtZXJyb3IucGF0Y2ggYi9nZGItdGVzdC1wcC1oaW50LWVycm9yLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmVjZTg1Li4wMDAwMDAwCi0tLSBhL2dkYi10 ZXN0LXBwLWhpbnQtZXJyb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi1o dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wMS9tc2cwMDAxNi5odG1s Ci1TdWJqZWN0OiBbcGF0Y2hdIE5ldyB0ZXN0Y2FzZTogcHktcHJldHR5cHJpbnQuZXhwOiBwcmlu dCBoaW50X2Vycm9yCi0KLUhpLAotCi1QQVNTOiBnZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4 cDogcHJpbnQgaGludF9lcnJvcgotZm9yCi0JRllJOiBmaXggYnVnbGV0IGluIGdkYnB5X2dldF9k aXNwbGF5X2hpbnQKLQlodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0w Ny9tc2cwMDE5MC5odG1sCi0JaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0w Ny9tc2cwMDA2MS5odG1sCi0KLUkgd291bGQgY2hlY2sgaXQgaW4gYXMgb2J2aW91cyBidXQgdGhl IDIwMTEgQ2hhbmdlTG9nIG1vdmUgcHJvY2VzcyBoYXMgdG8gYmUKLWRvbmUgZmlyc3QuICBTbyB0 byBiZSBjaGVja2VkIGluIGxhdGVyLgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi90ZXN0c3Vp dGUvCi0yMDExLTAxLTAxICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci0KLQkqIGdkYi5weXRob24vcHktcHJldHR5cHJpbnQuYyAoc3RydWN0IGhpbnRfZXJyb3Ip OiBOZXcuCi0JKG1haW4pOiBOZXcgdmFyaWFibGUgaGludF9lcnJvci4KLQkqIGdkYi5weXRob24v cHktcHJldHR5cHJpbnQuZXhwIChydW5fbGFuZ190ZXN0cyk6IE5ldyB0ZXN0Y2FzZQotCSJwcmlu dCBoaW50X2Vycm9yIi4KLQkqIGdkYi5weXRob24vcHktcHJldHR5cHJpbnQucHkgKGNsYXNzIHBw X2hpbnRfZXJyb3IpOiBOZXcuCi0JKHJlZ2lzdGVyX3ByZXR0eV9wcmludGVycyk6IFJlZ2lzdGVy IGl0LgotCi1JbmRleDogZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktcHJldHR5cHJpbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuOTAuMjAxMTA0MTEu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuYwkyMDExLTAzLTMx IDIxOjU5OjI2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmMJMjAxMS0wNC0xMSAxOTo0MjoxMC4w MDAwMDAwMDAgKzAyMDAKLUBAIC00NCw2ICs0NCwxMCBAQCBzdHJ1Y3QgbGF6eXN0cmluZyB7Ci0g ICBjb25zdCBjaGFyICpsYXp5X3N0cjsKLSB9OwotIAotK3N0cnVjdCBoaW50X2Vycm9yIHsKLSsg IGludCB4OwotK307Ci0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gc3RydWN0IFMgOiBwdWJsaWMg cyB7Ci0gICBpbnQgenM7Ci1AQCAtMjE1LDYgKzIxOSw3IEBAIG1haW4gKCkKLSAgIG5vc3RyaW5n X3R5cGUgbnN0eXBlLCBuc3R5cGUyOwotICAgc3RydWN0IG5zIG5zLCBuczI7Ci0gICBzdHJ1Y3Qg bGF6eXN0cmluZyBlc3RyaW5nLCBlc3RyaW5nMjsKLSsgIHN0cnVjdCBoaW50X2Vycm9yIGhpbnRf ZXJyb3I7Ci0gCi0gICBuc3R5cGUuZWxlbWVudHMgPSBuYXJyYXk7Ci0gICBuc3R5cGUubGVuID0g MDsKLUluZGV4OiBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1wcmV0dHlwcmludC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjkwLjIwMTEwNDExLm9y aWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cAkyMDExLTAzLTA3 IDE3OjAzOjAzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cAkyMDExLTA0LTExIDE5OjQxOjU2 LjAwMDAwMDAwMCArMDIwMAotQEAgLTk3LDYgKzk3LDggQEAgcHJvYyBydW5fbGFuZ190ZXN0cyB7 bGFuZ30gewotICAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBwcF9sc19lbmNvZGluZyA9 ICdVVEYtOCciCi0gICAgIGdkYl90ZXN0ICJwcmludCBlc3RyaW5nMiIgIlwiZW1iZWRkZWQgXCIs IDxpbmNvbXBsZXRlIHNlcXVlbmNlIFxcXFwzMDI+IgotIAotKyAgICBnZGJfdGVzdCAicHJpbnQg aGludF9lcnJvciIgIkV4Y2VwdGlvbjogaGludCBmYWlsZWRcclxuaGludF9lcnJvcl92YWwiCi0r Ci0gICAgIGdkYl90ZXN0ICJwcmludCBjIiAiID0gY29udGFpbmVyIFwiY29udGFpbmVyXCIgd2l0 aCAyIGVsZW1lbnRzID0geyRubCAqLjAuID0gMjMsJG5sICouMS4gPSA3MiRubH0iCi0gCi0gICAg IGdkYl90ZXN0ICJwcmludCBuc3R5cGUiICIgPSB7JG5sICouMC4gPSA3LCRubCAqLjEuID0gNDIk bmx9IgotSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LXByZXR0eXByaW50LnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi45MC4yMDExMDQxMS5v cmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5weQkyMDExLTAzLTMx IDIxOjU5OjI2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LnB5CTIwMTEtMDQtMTEgMTk6NDE6NTYu MDAwMDAwMDAwICswMjAwCi1AQCAtMTYxLDYgKzE2MSwxOCBAQCBjbGFzcyBwcF9sczoKLSAgICAg ZGVmIGRpc3BsYXlfaGludCAoc2VsZik6Ci0gICAgICAgICByZXR1cm4gJ3N0cmluZycKLSAKLStj bGFzcyBwcF9oaW50X2Vycm9yOgotKyAgICAiVGhyb3cgZXJyb3IgZnJvbSBkaXNwbGF5X2hpbnQi Ci0rCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWwpOgotKyAgICAgICAgc2VsZi52YWwgPSB2 YWwKLSsKLSsgICAgZGVmIHRvX3N0cmluZyhzZWxmKToKLSsgICAgICAgIHJldHVybiAnaGludF9l cnJvcl92YWwnCi0rCi0rICAgIGRlZiBkaXNwbGF5X2hpbnQgKHNlbGYpOgotKyAgICAgICAgcmFp c2UgRXhjZXB0aW9uKCJoaW50IGZhaWxlZCIpCi0rCi0gY2xhc3MgcHBfb3V0ZXI6Ci0gICAgICJQ cmludCBzdHJ1Y3Qgb3V0ZXIiCi0gCi1AQCAtMjQ2LDYgKzI1OCw5IEBAIGRlZiByZWdpc3Rlcl9w cmV0dHlfcHJpbnRlcnMgKCk6Ci0gICAgIHByZXR0eV9wcmludGVyc19kaWN0W3JlLmNvbXBpbGUg KCdec3RydWN0IG91dGVyc3RydWN0JCcpXSAgPSBwcF9vdXRlcgotICAgICBwcmV0dHlfcHJpbnRl cnNfZGljdFtyZS5jb21waWxlICgnXm91dGVyc3RydWN0JCcpXSAgPSBwcF9vdXRlcgotIAotKyAg ICBwcmV0dHlfcHJpbnRlcnNfZGljdFtyZS5jb21waWxlICgnXnN0cnVjdCBoaW50X2Vycm9yJCcp XSAgPSBwcF9oaW50X2Vycm9yCi0rICAgIHByZXR0eV9wcmludGVyc19kaWN0W3JlLmNvbXBpbGUg KCdeaGludF9lcnJvciQnKV0gID0gcHBfaGludF9lcnJvcgotKwotIHByZXR0eV9wcmludGVyc19k aWN0ID0ge30KLSAKLSByZWdpc3Rlcl9wcmV0dHlfcHJpbnRlcnMgKCkKCmRpZmYgLS1naXQgYS9n ZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IGI3ZTUzYTUuLjM0ODVjZjIgMTAwNjQ0Ci0tLSBhL2dk Yi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0yMyw3ICsyMyw3IEBAIE5hbWU6IGdkYiV7P193aXRo X2RlYnVnOi1kZWJ1Z30KICMgU2V0IHZlcnNpb24gdG8gY29udGVudHMgb2YgZ2RiL3ZlcnNpb24u aW4uCiAjIE5PVEU6IHRoZSBGU0YgZ2RiIHZlcnNpb25zIGFyZSBudW1iZXJlZCBOLk0gZm9yIG9m ZmljaWFsIHJlbGVhc2VzLCBsaWtlIDYuMwogIyBhbmQsIHNpbmNlIEphbnVhcnkgMjAwNSwgWC5Z LlouZGF0ZSBmb3IgZGFpbHkgc25hcHNob3RzLCBsaWtlIDYuMy41MC4yMDA1MDExMiAjIChkYWls eSBzbmFwc2hvdCBmcm9tIG1haWxpbmUpLCBvciA2LjMuMC4yMDA0MDExMiAoaGVhZCBvZiB0aGUg cmVsZWFzZSBicmFuY2gpLgotVmVyc2lvbjogNy4yLjkwLjIwMTEwNzAzCitWZXJzaW9uOiA3LjMu NTAuMjAxMTA3MjIKIAogIyBUaGUgcmVsZWFzZSBhbHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJl c2VydmVkIG51bWJlciwgc3RhcnQgaXQgYXQgMS4KICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0 IG9mIGBuYW1lJyB0byBzdGF5IGZ1bGx5IHJwbSBkZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3Ig dGhlIHRlc3RpbmcuCkBAIC0yOTAsMTIgKzI5MCw2IEBAIFBhdGNoMjU4OiBnZGItNi42LWJ6MjM3 NTcyLXBwYy1hdG9taWMtc2VxdWVuY2UtdGVzdC5wYXRjaAogIz1mZWRvcmF0ZXN0CiBQYXRjaDI2 MzogZ2RiLTYuMy1hdHRhY2gtc2VlLXZkc28tdGVzdC5wYXRjaAogCi0jIERvIG5vdCBoYW5nIG9u IGV4aXQgb2YgYSB0aHJlYWQgZ3JvdXAgbGVhZGVyIChCWiAyNDczNTQpLgotIz1wdXNoCi1QYXRj aDI2NTogZ2RiLTYuNi1iejI0NzM1NC1sZWFkZXItZXhpdC1maXgucGF0Y2gKLSM9cHVzaAotUGF0 Y2gyNjY6IGdkYi02LjYtYnoyNDczNTQtbGVhZGVyLWV4aXQtdGVzdC5wYXRjaAotCiAjIFRlc3Qg bGVmdG92ZXIgem9tYmllIHByb2Nlc3MgKEJaIDI0Mzg0NSkuCiAjPWZlZG9yYXRlc3QKIFBhdGNo MjcxOiBnZGItNi41LWJ6MjQzODQ1LXN0YWxlLXRlc3Rpbmctem9tYmllLXRlc3QucGF0Y2gKQEAg LTUwNywxMCArNTAxLDYgQEAgUGF0Y2g1MTE6IGdkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNW9m NS5wYXRjaAogIz1mZWRvcmF0ZXN0CiBQYXRjaDUyNjogZ2RiLWJ6NjM0MTA4LXNvbGliX2FkZHJl c3MucGF0Y2gKIAotIyBOZXcgdGVzdGNhc2UgcHktcHJldHR5cHJpbnQuZXhwOnByaW50IGhpbnRf ZXJyb3IgKGZvciBCWiA2MTE1NjksIEJaIDYyOTIzNikuCi0jPWZlZG9yYXRlc3QKLVBhdGNoNTQx OiBnZGItdGVzdC1wcC1oaW50LWVycm9yLnBhdGNoCi0KICMgTmV3IHRlc3QgZ2RiLmFyY2gveDg2 XzY0LXBpZDAtY29yZS5leHAgZm9yIGtlcm5lbCBQSUQgMCBjb3JlcyAoQlogNjExNDM1KS4KICM9 ZmVkb3JhdGVzdAogUGF0Y2g1NDI6IGdkYi10ZXN0LXBpZDAtY29yZS5wYXRjaApAQCAtNTIzLDIy ICs1MTMsMTAgQEAgUGF0Y2g1NDc6IGdkYi10ZXN0LWR3Mi1hcmFuZ2VzLnBhdGNoCiAjID1mZWRv cmF0ZXN0CiBQYXRjaDU0ODogZ2RiLXRlc3QtZXhwci1jdW11bGF0aXZlLWFyY2hlci5wYXRjaAog Ci0jIFRlbXBvcmFyeSBmaXggb2YgRjE1IGdjYy00LjYgY2hpbGQgRElFcyBvZiBEV19UQUdfdHlw ZWRlZiAoQlogNjcyMjMwKS4KLSMgPXB1c2gKLVBhdGNoNTU1OiBnZGItZ2NjNDYtdHlwZWRlZi5w YXRjaAotCiAjIFdvcmthcm91bmQgZ2NjLTQuNiBzdGRhcmcgZmFsc2UgcHJvbG9ndWUgZW5kIChH REIgUFIgMTI0MzUgKyBHQ0MgUFIgNDc0NzEpLgogIyA9cHVzaAogUGF0Y2g1NTY6IGdkYi1nY2M0 Ni1zdGRhcmctcHJvbG9ndWUucGF0Y2gKIAotIyBGaXggYXR0YWNoL2NvcmUtbG9hZCBvZiB7LHVu fXByZWxpbmtlZCBpMzg2IGxpYnMgKGJ1Z3JlcG9ydCBieSBNaWNoYWwgVG9tYW4pLgotUGF0Y2g1 NzE6IGdkYi1wcmVsaW5rLXJlbGEucGF0Y2gKLQotIyBGaXggdGhyZWFkaW5nIGludGVybmFsIGVy cm9yIG9uIGNvcnJ1cHRlZCBtZW1vcnkgKEJaIDY3NzY1NCkuCi1QYXRjaDU3MjogZ2RiLWNvcmUt dGhyZWFkLWludGVybmFsZXJyLTFvZjMucGF0Y2gKLVBhdGNoNTczOiBnZGItY29yZS10aHJlYWQt aW50ZXJuYWxlcnItMm9mMy5wYXRjaAotUGF0Y2g1NzQ6IGdkYi1jb3JlLXRocmVhZC1pbnRlcm5h bGVyci0zb2YzLnBhdGNoCi0KICMgVG9vbGNoYWluIG9uIHNwYXJjIGlzIHNsaWdodGx5IGJyb2tl biBhbmQgZGVidWdpbmZvIGZpbGVzIGFyZSBnZW5lcmF0ZWQKICMgd2l0aCBub24gNjRiaXQgYWxp Z25lZCB0YWJsZXMvb2Zmc2V0cy4KICMgU2VlIGZvciBleGFtcGxlIHJlYWRlbGYgLVMgLi4vWHZu Yy5kZWJ1Zy4KQEAgLTU1MiwyMCArNTMwLDYgQEAgUGF0Y2g1NzQ6IGdkYi1jb3JlLXRocmVhZC1p bnRlcm5hbGVyci0zb2YzLnBhdGNoCiAjIHJlYnVpbGQgdG8gZml4IGl0LCB3ZSBuZWVkIHRvIGJl IGFibGUgdG8gdXNlIGdkYiA6KQogUGF0Y2g1Nzk6IGdkYi03LjIuNTAtc3BhcmMtYWRkLXdvcmth cm91bmQtdG8tYnJva2VuLWRlYnVnLWZpbGVzLnBhdGNoCiAKLSMgRml4IGNhc2UgaW5zZW5zaXRp dmUgc3ltYm9scyBmb3IgRm9ydHJhbiBieSBpRm9ydCAoQlogNjQ1NzczKS4KLVBhdGNoNTgwOiBn ZGItYno2NDU3NzMtY2FzZS1pbnNlbnNpdGl2ZS0xb2Y1LnBhdGNoCi1QYXRjaDU4MTogZ2RiLWJ6 NjQ1NzczLWNhc2UtaW5zZW5zaXRpdmUtMm9mNS5wYXRjaAotUGF0Y2g1ODI6IGdkYi1iejY0NTc3 My1jYXNlLWluc2Vuc2l0aXZlLTNvZjUucGF0Y2gKLVBhdGNoNTgzOiBnZGItYno2NDU3NzMtY2Fz ZS1pbnNlbnNpdGl2ZS00b2Y1LnBhdGNoCi0KLSMgQnVuZGxlIHJlYWRsaW5lLTYuMiB3aXRoIGEg d29ya2Fyb3VuZCBvZiBza2lwcGVkICJhc2siIChCWiA3MDExMzEpLgotUGF0Y2g1OTE6IGdkYi1i ejcwMTEzMS1yZWFkbGluZTYyLTFvZjMucGF0Y2gKLVBhdGNoNTkyOiBnZGItYno3MDExMzEtcmVh ZGxpbmU2Mi0yb2YzLnBhdGNoCi1QYXRjaDU5MzogZ2RiLWJ6NzAxMTMxLXJlYWRsaW5lNjItM29m My5wYXRjaAotCi0jIFtzdGFwXSBGaXggZG91YmxlIGZyZWUuCi1QYXRjaDU5NDogZ2RiLXN0YXAt ZG91YmxlLWZyZWUucGF0Y2gKLQogQnVpbGRSZXF1aXJlczogbmN1cnNlcy1kZXZlbCV7P19pc2F9 IHRleGluZm8gZ2V0dGV4dCBmbGV4IGJpc29uIGV4cGF0LWRldmVsJXs/X2lzYX0KICMgLS13aXRo b3V0LXN5c3RlbS1yZWFkbGluZQogIyBSZXF1aXJlczogcmVhZGxpbmUlez9faXNhfQpAQCAtNzcx LDggKzczNSw2IEBAIHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhw LmMgZ2RiL3AtZXhwLmMKICVwYXRjaDI1OCAtcDEKICVwYXRjaDI2MCAtcDEKICVwYXRjaDI2MyAt cDEKLSVwYXRjaDI2NSAtcDEKLSVwYXRjaDI2NiAtcDEKICVwYXRjaDI3MSAtcDEKICVwYXRjaDI3 NCAtcDEKICVwYXRjaDM1MyAtcDEKQEAgLTgyNCwyNSArNzg2LDExIEBAIHJtIC1mIGdkYi9qdi1l eHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMKICVwYXRjaDUxMCAt cDEKICVwYXRjaDUxMSAtcDEKICVwYXRjaDUyNiAtcDEKLSVwYXRjaDU0MSAtcDEKICVwYXRjaDU0 MiAtcDEKICVwYXRjaDU0NyAtcDEKICVwYXRjaDU0OCAtcDEKLSVwYXRjaDU1NSAtcDEKICVwYXRj aDU1NiAtcDEKLSVwYXRjaDU3MSAtcDEKLSVwYXRjaDU3MiAtcDEKLSVwYXRjaDU3MyAtcDEKLSVw YXRjaDU3NCAtcDEKICVwYXRjaDU3OSAtcDEKLSVwYXRjaDU4MCAtcDEKLSVwYXRjaDU4MSAtcDEK LSVwYXRjaDU4MiAtcDEKLSVwYXRjaDU4MyAtcDEKLSVwYXRjaDU5MSAtcDEKLSVwYXRjaDU5MiAt cDEKLSVwYXRjaDU5MyAtcDEKLSVwYXRjaDU5NCAtcDEKIAogJXBhdGNoMzkzIC1wMQogJXBhdGNo MzM1IC1wMQpAQCAtMTI2NSw2ICsxMjEzLDEwIEBAIGZpCiAle19pbmZvZGlyfS9nZGIuaW5mbyoK IAogJWNoYW5nZWxvZworKiBTYXQgSnVsIDIzIDIwMTEgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+IC0gNy4zLjUwLjIwMTEwNzIyLTEuZmMxNgorLSBSZWJhc2UgdG8g RlNGIEdEQiA3LjMuNTAuMjAxMTA3MjIuCistIEltcHJvdmUgZ2NjLTQuNiBzdGRhcmcgZmFsc2Ug cHJvbG9ndWUgZW5kIHdvcmthcm91bmQgKEdEQiBQUiAxMjQzNSArIEdDQyBQUiA0NzQ3MSkuCisK ICogU3VuIEp1bCAgMyAyMDExIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPiAtIDcuMi45MC4yMDExMDcwMy00MC5mYzE1CiAtIFJlYmFzZSB0byBGU0YgR0RCIDcuMi45 MC4yMDExMDcwMyAod2hpY2ggaXMgYSA3LjMgcHJlLXJlbGVhc2UpLgogICAtIEFkanVzdCB0aGUg YHByaW50IGVycm5vJyBwYXRjaCBkdWUgdG8gdGhlIERXX0FUX2xpbmthZ2VfbmFtZSBmb2xsb3dp bmcgYWdhaW4uCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggMDJlMmZmZi4u OTMzMDQ1NyAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xLDIgKzEsMiBA QAogMDRlNWM0YjFiOWU2MzM0MjJjYzQ4OTkwZmU2MTk1OGQgIGxpYnN0ZGMrKy12My1weXRob24t cjE1NTk3OC50YXIuYnoyCi1iZTY1MjJhZGUxYWM3OGExNmIxMGVhMTYxMjE1OGQwYSAgZ2RiLTcu Mi45MC4yMDExMDcwMy50YXIuYnoyCitjNTU1NDkzMDUzYTMwOWM4YWEyMDU5MmVhOTU2ZjllNSAg Z2RiLTcuMy41MC4yMDExMDcyMi50YXIuYnoyCg==