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.5.50.20130118 (pre-7.6 snapshot). Date: Sat, 27 Jun 2026 23:55:59 GMT Message-ID: <178260455934.1.699091544265060573.rpms-gdb-556378e1011b@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 556378e1011b5095688856d9d2e124561b7fe6be QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogNTU2Mzc4ZTEwMTFiNTA5NTY4ODg1NmQ5ZDJl MTI0NTYxYjdmZTZiZQpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KRGF0ZSAgIDogMjAxMy0wMS0xOVQyMzo0MTo1NSswMTowMApTdGF0cyAgOiArMjE3 MS8tMTUxMjQgaW4gNTYgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0 Lm9yZy9ycG1zL2dkYi9jLzU1NjM3OGUxMDExYjUwOTU2ODg4NTZkOWQyZTEyNDU2MWI3ZmU2YmU/ YnJhbmNoPWdkYi0xNy4yLXJlYmFzZS1mNDQKCkxvZzoKUmViYXNlIHRvIEZTRiBHREIgNy41LjUw LjIwMTMwMTE4IChwcmUtNy42IHNuYXBzaG90KS4KCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9y ZSBiLy5naXRpZ25vcmUKaW5kZXggMGUxNzdhZC4uNWQ0ZjRiMiAxMDA2NDQKLS0tIGEvLmdpdGln bm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0xLDIgKzEsMiBAQAogL2dkYi1saWJzdGRjKystdjMt cHl0aG9uLXIxNTU5NzgudGFyLmJ6MgotL2dkYi03LjUuMS50YXIuYnoyCisvZ2RiLTcuNS41MC4y MDEzMDExOC50YXIuYnoyCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1iejIzMTgzMi1vYnN0YWNrLTJn Yi5wYXRjaCBiL2dkYi02LjMtYnoyMzE4MzItb2JzdGFjay0yZ2IucGF0Y2gKaW5kZXggMGIwOGNl ZS4uNDQ5NzFhZSAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1iejIzMTgzMi1vYnN0YWNrLTJnYi5wYXRj aAorKysgYi9nZGItNi4zLWJ6MjMxODMyLW9ic3RhY2stMmdiLnBhdGNoCkBAIC0xLDI1ICsxLDI5 IEBACiBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vYnVnemlsbGEvc2hvd19idWcuY2dpP2lk PTIzMTgzMgogCiAKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9zeW1taXNjLmMKK0lu ZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zeW1taXNjLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL3N5bW1pc2MuYwkyMDExLTA0LTA0IDE3OjE5OjU5 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3N5bW1pc2MuYwky MDExLTEyLTE5IDAwOjI4OjE4LjE4OTIzMjAxNCArMDEwMAotQEAgLTE0Nyw4ICsxNDcsOCBAQCBw cmludF9vYmpmaWxlX3N0YXRpc3RpY3MgKHZvaWQpCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5v cmlnL2dkYi9zeW1taXNjLmMJMjAxMy0wMS0xOCAyMzo1NDo1Ny40Nzg5NzQyODkgKzAxMDAKKysr KyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zeW1taXNjLmMJMjAxMy0wMS0xOCAyMzo1NTo0MS42 NTA5MzAyNTQgKzAxMDAKK0BAIC0xNDgsMTAgKzE0OCwxMCBAQCBwcmludF9vYmpmaWxlX3N0YXRp c3RpY3MgKHZvaWQpCiAgICAgIGlmIChPQkpTVEFUIChvYmpmaWxlLCBzel9zdHJ0YWIpID4gMCkK ICAgICAgICBwcmludGZfZmlsdGVyZWQgKF8oIiAgU3BhY2UgdXNlZCBieSBhLm91dCBzdHJpbmcg dGFibGVzOiAlZFxuIiksCiAgCQkgICAgICAgT0JKU1RBVCAob2JqZmlsZSwgc3pfc3RydGFiKSk7 CiAtICAgIHByaW50Zl9maWx0ZXJlZCAoXygiICBUb3RhbCBtZW1vcnkgdXNlZCBmb3Igb2JqZmls ZSBvYnN0YWNrOiAlZFxuIiksCiAtCQkgICAgIG9ic3RhY2tfbWVtb3J5X3VzZWQgKCZvYmpmaWxl LT5vYmpmaWxlX29ic3RhY2spKTsKKy0gICAgcHJpbnRmX2ZpbHRlcmVkIChfKCIgIFRvdGFsIG1l bW9yeSB1c2VkIGZvciBCRkQgb2JzdGFjazogJWRcbiIpLAorLQkJICAgICBvYnN0YWNrX21lbW9y eV91c2VkICgmb2JqZmlsZS0+cGVyX2JmZC0+c3RvcmFnZV9vYnN0YWNrKSk7CiArICAgIHByaW50 Zl9maWx0ZXJlZCAoXygiICBUb3RhbCBtZW1vcnkgdXNlZCBmb3Igb2JqZmlsZSBvYnN0YWNrOiAl bGRcbiIpLAogKwkJICAgICAobG9uZykgb2JzdGFja19tZW1vcnlfdXNlZCAoJm9iamZpbGUtPm9i amZpbGVfb2JzdGFjaykpOworKyAgICBwcmludGZfZmlsdGVyZWQgKF8oIiAgVG90YWwgbWVtb3J5 IHVzZWQgZm9yIEJGRCBvYnN0YWNrOiAlbGRcbiIpLAorKwkJICAgICAobG9uZykgb2JzdGFja19t ZW1vcnlfdXNlZCAoJm9iamZpbGUtPnBlcl9iZmQtPnN0b3JhZ2Vfb2JzdGFjaykpOwogICAgICBw cmludGZfZmlsdGVyZWQgKF8oIiAgVG90YWwgbWVtb3J5IHVzZWQgZm9yIHBzeW1ib2wgY2FjaGU6 ICVkXG4iKSwKICAJCSAgICAgYmNhY2hlX21lbW9yeV91c2VkIChwc3ltYm9sX2JjYWNoZV9nZXRf YmNhY2hlCiAgCQkgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmpmaWxlLT5wc3ltYm9sX2Nh Y2hlKSkpOwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvaW5jbHVkZS9vYnN0YWNrLmgKK0lu ZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2luY2x1ZGUvb2JzdGFjay5oCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2luY2x1ZGUvb2JzdGFjay5oCTIwMTEtMTAtMjIg MDM6MzU6MjkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9pbmNsdWRl L29ic3RhY2suaAkyMDExLTEyLTE5IDAwOjI4OjE4LjE4OTIzMjAxNCArMDEwMAorLS0tIGdkYi03 LjUuNTAuMjAxMzAxMTgub3JpZy9pbmNsdWRlL29ic3RhY2suaAkyMDEzLTAxLTE4IDIzOjU0OjU3 LjQ3ODk3NDI4OSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvaW5jbHVkZS9vYnN0YWNr LmgJMjAxMy0wMS0xOCAyMzo1NToxMC4yNTY5OTkxODggKzAxMDAKIEBAIC0xODgsMzEgKzE4OCwz MSBAQCBzdHJ1Y3Qgb2JzdGFjawkJLyogY29udHJvbCBjdXJyZW50IG9iamVjCiAgCiAgLyogRGVj bGFyZSB0aGUgZXh0ZXJuYWwgZnVuY3Rpb25zIHdlIHVzZTsgdGhleSBhcmUgaW4gb2JzdGFjay5j LiAgKi8KQEAgLTEyNSwxMCArMTI5LDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2lu Y2x1ZGUvb2JzdGFjay5oCiAgICAgaWYgKF9fby0+Y2h1bmtfbGltaXQgLSBfX28tPm5leHRfZnJl ZSA8IF9fbGVuKQkJCVwKICAgICAgIF9vYnN0YWNrX25ld2NodW5rIChfX28sIF9fbGVuKTsJCQkJ CVwKICAgICBvYnN0YWNrX2JsYW5rX2Zhc3QgKF9fbywgX19sZW4pOwkJCQkJXAotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMTEyMTgvbGliaWJlcnR5L29ic3RhY2suYworSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAxMTgvbGliaWJlcnR5L29ic3RhY2suYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMTEyMTgub3JpZy9saWJpYmVydHkvb2JzdGFjay5jCTIwMDUtMDUtMTAgMTc6MzM6MzMuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9saWJpYmVydHkvb2JzdGFjay5j CTIwMTEtMTItMTkgMDA6Mjg6MTguMTkxMjMyMDA2ICswMTAwCistLS0gZ2RiLTcuNS41MC4yMDEz MDExOC5vcmlnL2xpYmliZXJ0eS9vYnN0YWNrLmMJMjAxMy0wMS0xOCAyMzo1NDo1Ny40Nzg5NzQy ODkgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2xpYmliZXJ0eS9vYnN0YWNrLmMJMjAx My0wMS0xOCAyMzo1NToxMC4yNTY5OTkxODggKzAxMDAKIEBAIC00NCw5ICs0NCwxMSBAQAogICNp ZiAhZGVmaW5lZCAoX0xJQkMpICYmIGRlZmluZWQgKF9fR05VX0xJQlJBUllfXykgJiYgX19HTlVf TElCUkFSWV9fID4gMQogICNpbmNsdWRlIDxnbnUtdmVyc2lvbnMuaD4KCmRpZmYgLS1naXQgYS9n ZGItNi4zLWlhNjQtZ2NvcmUtcGFnZTAtMjAwNTA0MjEucGF0Y2ggYi9nZGItNi4zLWlhNjQtZ2Nv cmUtcGFnZTAtMjAwNTA0MjEucGF0Y2gKaW5kZXggZWNkZmJhZS4uYzJjMDAyNiAxMDA2NDQKLS0t IGEvZ2RiLTYuMy1pYTY0LWdjb3JlLXBhZ2UwLTIwMDUwNDIxLnBhdGNoCisrKyBiL2dkYi02LjMt aWE2NC1nY29yZS1wYWdlMC0yMDA1MDQyMS5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBn ZGItNy4yLjUwLjIwMTEwMTA3L2dkYi9nY29yZS5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvZ2NvcmUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAxMDcub3JpZy9n ZGIvZ2NvcmUuYwkyMDExLTAxLTA1IDIzOjIyOjQ5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjIuNTAuMjAxMTAxMDcvZ2RiL2djb3JlLmMJMjAxMS0wMS0wNyAwOTowNDoyOC4wMDAwMDAwMDAg KzAxMDAKLUBAIC01MzQsOCArNTM0LDE0IEBAIGdjb3JlX2NvcHlfY2FsbGJhY2sgKGJmZCAqb2Jm ZCwgYXNlY3Rpb24KKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2djb3JlLmMJMjAx My0wMS0xOCAyMzo1MDo1Ni42OTg1NzMxODYgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi9nY29yZS5jCTIwMTMtMDEtMTggMjM6NTI6MjkuNjM2NzA1MDQwICswMTAwCitAQCAtNTQ5 LDggKzU0OSwxNCBAQCBnY29yZV9jb3B5X2NhbGxiYWNrIChiZmQgKm9iZmQsIGFzZWN0aW9uCiAg ICAgICAgaWYgKHNpemUgPiB0b3RhbF9zaXplKQogIAlzaXplID0gdG90YWxfc2l6ZTsKICAKQEAg LTEyLDcgKzEyLDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMDcvZ2RiL2djb3JlLmMKICAg ICAgICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChiZmRfc2VjdGlvbl92bWEgKG9iZmQsIG9zZWMp ICsgb2Zmc2V0LAogLQkJCSAgICAgIG1lbWh1bmssIHNpemUpICE9IDApCiArCQkJICAgICAgbWVt aHVuaywgc2l6ZSkgIT0gMAotKwkgICYmIChzdHJjbXAgKGdkYmFyY2hfYmZkX2FyY2hfaW5mbyAo dGFyZ2V0X2dkYmFyY2gpLT5hcmNoX25hbWUsCisrCSAgJiYgKHN0cmNtcCAoZ2RiYXJjaF9iZmRf YXJjaF9pbmZvICh0YXJnZXRfZ2RiYXJjaCAoKSktPmFyY2hfbmFtZSwKICsJCSAgICAgICJpYTY0 IikKICsJICAgICAgfHwgYmZkX3NlY3Rpb25fdm1hIChvYmZkLCBvc2VjKSAhPSAwKSkKICAJewoK ZGlmZiAtLWdpdCBhL2dkYi02LjMtcmVhZG5ldmVyLTIwMDUwOTA3LnBhdGNoIGIvZ2RiLTYuMy1y ZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKaW5kZXggNzcyODA3MC4uMzE0YmU0NCAxMDA2NDQKLS0t IGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKKysrIGIvZ2RiLTYuMy1yZWFkbmV2 ZXItMjAwNTA5MDcucGF0Y2gKQEAgLTExLDExICsxMSwxMSBAQAogCiAgICAgICAgICogZ2RiLnRl eGluZm8gKEZpbGUgT3B0aW9ucyk6IERvY3VtZW50IC0tcmVhZG5ldmVyLgogCi1JbmRleDogZ2Ri LTcuNC41MC4yMDEyMDcwMy9nZGIvZG9jL2dkYi50ZXhpbmZvCitJbmRleDogZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4y MDEyMDcwMy5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNy0wMyAxNzozMDowNy4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9kb2MvZ2RiLnRleGluZm8J MjAxMi0wNy0wMyAxNzozMTo0MC42OTU2NDI0NDkgKzAyMDAKLUBAIC0xMDIzLDYgKzEwMjMsMTIg QEAgUmVhZCBlYWNoIHN5bWJvbCBmaWxlJ3MgZW50aXJlIHN5bWJvbCB0YQorLS0tIGdkYi03LjUu NTAuMjAxMzAxMTgub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTMtMDEtMTggMjI6NTQ6MjIu NTIxMTU1NTI3ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTMtMDEtMTggMjI6NTg6MTUuMDY0NTk2NTgwICswMTAwCitAQCAtMTAyNiw2ICsxMDI2 LDEyIEBAIFJlYWQgZWFjaCBzeW1ib2wgZmlsZSdzIGVudGlyZSBzeW1ib2wgdGEKICB0aGUgZGVm YXVsdCwgd2hpY2ggaXMgdG8gcmVhZCBpdCBpbmNyZW1lbnRhbGx5IGFzIGl0IGlzIG5lZWRlZC4K ICBUaGlzIG1ha2VzIHN0YXJ0dXAgc2xvd2VyLCBidXQgbWFrZXMgZnV0dXJlIG9wZXJhdGlvbnMg ZmFzdGVyLgogIApAQCAtMjgsMTEgKzI4LDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNzAz L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAZW5kIHRhYmxlCiAgCiAgQG5vZGUgTW9kZSBPcHRpb25z Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvbWFpbi5jCitJbmRleDogZ2RiLTcuNS41 MC4yMDEzMDExOC9nZGIvbWFpbi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDcw My5vcmlnL2dkYi9tYWluLmMJMjAxMi0wNy0wMyAxNzozMDowNy4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9tYWluLmMJMjAxMi0wNy0wMyAxNzozMTo0MC42OTY2 NDI0NDggKzAyMDAKLUBAIC00MTQsNiArNDE0LDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0 YSkKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL21haW4uYwkyMDEzLTAxLTE4IDIy OjU0OjIyLjUyMzE1NTUzMSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL21haW4u YwkyMDEzLTAxLTE4IDIyOjU4OjE1LjA2NTU5NjU5OCArMDEwMAorQEAgLTQ0NSw2ICs0NDUsNyBA QCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogICAgICAgIHsieGRiIiwgbm9fYXJndW1lbnQs ICZ4ZGJfY29tbWFuZHMsIDF9LAogICAgICAgIHsiZGJ4Iiwgbm9fYXJndW1lbnQsICZkYnhfY29t bWFuZHMsIDF9LAogICAgICAgIHsicmVhZG5vdyIsIG5vX2FyZ3VtZW50LCAmcmVhZG5vd19zeW1i b2xfZmlsZXMsIDF9LApAQCAtNDAsNyArNDAsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcw My9nZGIvbWFpbi5jCiAgICAgICAgeyJyIiwgbm9fYXJndW1lbnQsICZyZWFkbm93X3N5bWJvbF9m aWxlcywgMX0sCiAgICAgICAgeyJxdWlldCIsIG5vX2FyZ3VtZW50LCAmcXVpZXQsIDF9LAogICAg ICAgIHsicSIsIG5vX2FyZ3VtZW50LCAmcXVpZXQsIDF9LAotQEAgLTExMzEsNiArMTEzMiw3IEBA IE9wdGlvbnM6XG5cblwKK0BAIC0xMTY0LDYgKzExNjUsNyBAQCBPcHRpb25zOlxuXG5cCiAgICBm cHV0c191bmZpbHRlcmVkIChfKCJcCiAgICAtLXF1aWV0ICAgICAgICAgICAgRG8gbm90IHByaW50 IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAtLXJlYWRub3cgICAgICAgICAgRnVs bHkgcmVhZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXApAQCAtNDgsMzEgKzQ4LDMx IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9tYWluLmMKICAiKSwgc3RyZWFtKTsK ICAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKICAgIC0tc2U9RklMRSAgICAgICAgICBVc2UgRklM RSBhcyBzeW1ib2wgZmlsZSBhbmQgZXhlY3V0YWJsZSBmaWxlLlxuXAotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjA3MDMvZ2RiL3N5bWZpbGUuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L3N5bWZpbGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIv c3ltZmlsZS5jCTIwMTItMDctMDMgMTc6MzA6MDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDcwMy9nZGIvc3ltZmlsZS5jCTIwMTItMDctMDMgMTc6MzE6NDAuNjk3NjQyNDQ3 ICswMjAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9zeW1maWxlLmMJMjAxMy0w MS0xOCAyMjo1ODoxNS4wNjU1OTY1OTggKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi9zeW1maWxlLmMJMjAxMy0wMS0xOCAyMjo1ODozMS4yNDk2MTk1OTcgKzAxMDAKIEBAIC04MSw2 ICs4MSw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N5bXRhYl91c2Vyc19jbGVhbnVwICgKICAKICAv KiBHbG9iYWwgdmFyaWFibGVzIG93bmVkIGJ5IHRoaXMgZmlsZS4gICovCiAgaW50IHJlYWRub3df c3ltYm9sX2ZpbGVzOwkvKiBSZWFkIGZ1bGwgc3ltYm9scyBpbW1lZGlhdGVseS4gICovCiAraW50 IHJlYWRuZXZlcl9zeW1ib2xfZmlsZXM7CS8qIE5ldmVyIHJlYWQgZnVsbCBzeW1ib2xzLiAgKi8K ICAKLSAvKiBFeHRlcm5hbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyByZWZlcmVuY2VkLiAgKi8K KyAvKiBGdW5jdGlvbnMgdGhpcyBmaWxlIGRlZmluZXMuICAqLwogIAotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjA3MDMvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3Jp Zy9nZGIvZHdhcmYycmVhZC5jCTIwMTItMDctMDMgMTc6MzA6MDcuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvZHdhcmYycmVhZC5jCTIwMTItMDctMDMgMTc6MzE6 NTMuNDIxNjI3MTUzICswMjAwCi1AQCAtNjUsNiArNjUsNyBAQAotICNpbmNsdWRlICJnZGIvZ2Ri LWluZGV4LmgiCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJ MjAxMy0wMS0xOCAyMjo1NDoyMi41MjgxNTU1NDUgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMw MTE4L2dkYi9kd2FyZjJyZWFkLmMJMjAxMy0wMS0xOCAyMjo1OTowOC45NDA2NzQwMzUgKzAxMDAK K0BAIC02Nyw2ICs2Nyw3IEBACiAgI2luY2x1ZGUgPGN0eXBlLmg+CiAgI2luY2x1ZGUgImdkYl9i ZmQuaCIKKyAjaW5jbHVkZSAiZi1sYW5nLmgiCiArI2luY2x1ZGUgInRvcC5oIgogIAogICNpbmNs dWRlIDxmY250bC5oPgogICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtMTU4Nyw4ICsxNTg4 LDkgQEAgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQorQEAgLTE3ODIs OCArMTc4Myw5IEBAIGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopIG5hbWVzKTsKICAgICAgICBkd2Fy ZjJfcGVyX29iamZpbGUtPm9iamZpbGUgPSBvYmpmaWxlOwogICAgICB9CkBAIC04NCwxMSArODQs MTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2R3YXJmMnJlYWQuYwogIH0KICAK ICAvKiBXaGVuIGxvYWRpbmcgc2VjdGlvbnMsIHdlIGxvb2sgZWl0aGVyIGZvciB1bmNvbXByZXNz ZWQgc2VjdGlvbiBvciBmb3IKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90b3AuaAor SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3RvcC5oCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90b3AuaAkyMDEyLTAxLTIzIDE4OjEyOjMwLjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3RvcC5oCTIwMTItMDctMDMg MTc6MzE6NDAuNzAwNjQyNDQ0ICswMjAwCi1AQCAtNjAsNiArNjAsNyBAQCBleHRlcm4gdm9pZCBz ZXRfcHJvbXB0IChjb25zdCBjaGFyICpzKTsKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcv Z2RiL3RvcC5oCTIwMTMtMDEtMTggMjI6NTQ6MjIuNTI4MTU1NTQ1ICswMTAwCisrKysgZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvdG9wLmgJMjAxMy0wMS0xOCAyMjo1ODoxNS4wNjk1OTY2NTcgKzAx MDAKK0BAIC01OCw2ICs1OCw3IEBAIGV4dGVybiB2b2lkIHNldF9wcm9tcHQgKGNvbnN0IGNoYXIg KnMpOwogIAogIC8qIEZyb20gcmFuZG9tIHBsYWNlcy4gICovCiAgZXh0ZXJuIGludCByZWFkbm93 X3N5bWJvbF9maWxlczsKCmRpZmYgLS1naXQgYS9nZGItNi41LWJ6MjE4Mzc5LXNvbGliLXRyYW1w b2xpbmUtbG9va3VwLWxvY2stZml4LnBhdGNoIGIvZ2RiLTYuNS1iejIxODM3OS1zb2xpYi10cmFt cG9saW5lLWxvb2t1cC1sb2NrLWZpeC5wYXRjaAppbmRleCAwODJiOWEwLi42ODM5Njc4IDEwMDY0 NAotLS0gYS9nZGItNi41LWJ6MjE4Mzc5LXNvbGliLXRyYW1wb2xpbmUtbG9va3VwLWxvY2stZml4 LnBhdGNoCisrKyBiL2dkYi02LjUtYnoyMTgzNzktc29saWItdHJhbXBvbGluZS1sb29rdXAtbG9j ay1maXgucGF0Y2gKQEAgLTEsMTEgKzEsMTEgQEAKIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNv bS9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjE4Mzc5CiAKIAotSW5kZXg6IGdkYi03LjIuNTAu MjAxMTAxMTcvZ2RiL3N5bXRhYi5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc3lt dGFiLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMTE3Lm9yaWcvZ2RiL3N5bXRh Yi5jCTIwMTEtMDEtMTcgMTU6NDc6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4y MDExMDExNy9nZGIvc3ltdGFiLmMJMjAxMS0wMS0xNyAxNTo1MTo0OC4wMDAwMDAwMDAgKzAxMDAK LUBAIC0yMDE1LDYgKzIwMTUsMTMgQEAgZmluZF9wY19zZWN0X2xpbmUgKENPUkVfQUREUiBwYywg c3RydWN0IAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvc3ltdGFiLmMJMjAxMy0w MS0xOCAyMzo1MzoyMi4wMDk3OTc3ODggKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi9zeW10YWIuYwkyMDEzLTAxLTE4IDIzOjUzOjUxLjA0NDg0Njc3NyArMDEwMAorQEAgLTIzNTYs NiArMjM1NiwxMyBAQCBmaW5kX3BjX3NlY3RfbGluZSAoQ09SRV9BRERSIHBjLCBzdHJ1Y3QKICAJ ICAgICBTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSk7ICovCiAgCSAgOwogIAkvKiBmYWxs IHRocm91Z2ggKi8KQEAgLTE0LDcgKzE0LDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcv Z2RiL3N5bXRhYi5jCiArCSAgIEF2b2lkIGBmaW5kX3BjX3NlY3RfbGluZSc8LT5gZmluZF9wY19s aW5lJyBpbmZpbml0ZSBsb29wLgogKwkgICBSZWQgSGF0IEJ1ZyAyMTgzNzkuICAqLwogKwllbHNl IGlmIChTWU1CT0xfVkFMVUUgKG1mdW5zeW0pID09IHBjKQotKwkgIHdhcm5pbmcgKCJJbiBzdHVi IGZvciAlcyAoMHglcyk7IGludGVybG9ja2VkLCBwbGVhc2Ugc3VibWl0IHRoZSBiaW5hcnkgdG8g aHR0cDovL2J1Z3ppbGxhLnJlZGhhdC5jb20iLCBTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9s KSwgcGFkZHJlc3MgKHRhcmdldF9nZGJhcmNoLCBwYykpOworKwkgIHdhcm5pbmcgKCJJbiBzdHVi IGZvciAlcyAoMHglcyk7IGludGVybG9ja2VkLCBwbGVhc2Ugc3VibWl0IHRoZSBiaW5hcnkgdG8g aHR0cDovL2J1Z3ppbGxhLnJlZGhhdC5jb20iLCBTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9s KSwgcGFkZHJlc3MgKHRhcmdldF9nZGJhcmNoICgpLCBwYykpOwogKwkvKiBmYWxsIHRocm91Z2gg Ki8KICAJZWxzZQogIAkgIHJldHVybiBmaW5kX3BjX2xpbmUgKFNZTUJPTF9WQUxVRV9BRERSRVNT IChtZnVuc3ltKSwgMCk7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1z dGVwLWlzLWRlZmF1bHQucGF0Y2ggYi9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtaXMt ZGVmYXVsdC5wYXRjaAppbmRleCBiZmM4ZTk2Li4xMTMyNDQ5IDEwMDY0NAotLS0gYS9nZGItNi42 LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtaXMtZGVmYXVsdC5wYXRjaAorKysgYi9nZGItNi42LXNj aGVkdWxlcl9sb2NraW5nLXN0ZXAtaXMtZGVmYXVsdC5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUlu ZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9pbmZydW4uYworSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAxMTgvZ2RiL2luZnJ1bi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDcw My5vcmlnL2dkYi9pbmZydW4uYwkyMDEyLTA3LTAzIDIwOjI2OjI1LjA2MDk0MDc2NSArMDIwMAot KysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2luZnJ1bi5jCTIwMTItMDctMDMgMjA6MjY6MzIu ODA4OTI5ODYwICswMjAwCi1AQCAtMTU5MSw3ICsxNTkxLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIg KmNvbnN0IHNjaGVkdWxlcl9lbnVtcworLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIv aW5mcnVuLmMJMjAxMy0wMS0xOSAyMDo1NjozNC4xNDI5MTc0MTYgKzAxMDAKKysrKyBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi9pbmZydW4uYwkyMDEzLTAxLTE5IDIwOjU2OjM0LjY2MjkxODQ3NCAr MDEwMAorQEAgLTE2MjgsNyArMTYyOCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzY2hl ZHVsZXJfZW51bXMKICAgIHNjaGVkbG9ja19zdGVwLAogICAgTlVMTAogIH07CkBAIC0xMSwzOSAr MTEsMTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2luZnJ1bi5jCiAgc3RhdGlj IHZvaWQKICBzaG93X3NjaGVkdWxlcl9tb2RlIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZy b21fdHR5LAogIAkJICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAq dmFsdWUpCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5taS9t aS1jb25zb2xlLmV4cAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9n ZGIubWkvbWktY2xpLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jb25zb2xlLmV4cAkyMDEyLTA3LTAzIDIwOjI2OjI1 LjA2MDk0MDc2NSArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9n ZGIubWkvbWktY29uc29sZS5leHAJMjAxMi0wNy0wMyAyMDoyNjozMi44MDk5Mjk4NTggKzAyMDAK LUBAIC00Niw2ICs0Niw5IEBAIGlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGly fS8KLSAKLSBtaV9ydW5fdG9fbWFpbgotIAotKyMgdGhyZWFkLWlkPVwiYWxsXCIgdnMuIHRocmVh ZC1pZD1cIjFcIiBiZWxvdzoKLSttaV9nZGJfdGVzdCAiMjEwLWdkYi1zZXQgc2NoZWR1bGVyLWxv Y2tpbmcgb2ZmIiAiMjEwXFxeZG9uZSIgInNldCBzY2hlZHVsZXItbG9ja2luZyBvZmYiCi0rCi0g IyBOZXh0IG92ZXIgdGhlIGhlbGxvKCkgY2FsbCB3aGljaCB3aWxsIHByb2R1Y2UgbG90cyBvZiBv dXRwdXQKLSBtaV9nZGJfdGVzdCAiMjIwLWV4ZWMtbmV4dCIgXAotIAkgICAgIjIyMFxcXnJ1bm5p bmcoXHJcblxcKnJ1bm5pbmcsdGhyZWFkLWlkPVwiYWxsXCIpPyIgXAotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLWNvbnNvbGUuZXhwCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21p Mi1jb25zb2xlLmV4cAkyMDEyLTA3LTAzIDIwOjI2OjI1LjA2MDk0MDc2NSArMDIwMAotKysrIGdk Yi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLWNvbnNvbGUuZXhwCTIw MTItMDctMDMgMjA6MjY6MzIuODA5OTI5ODU4ICswMjAwCi1AQCAtNDYsNiArNDYsOSBAQCBpZiAg eyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vCi0gCi0gbWlfcnVuX3RvX21haW4K LSAKLSsjIHRocmVhZC1pZD1cImFsbFwiIHZzLiB0aHJlYWQtaWQ9XCIxXCIgYmVsb3c6Ci0rbWlf Z2RiX3Rlc3QgIjIxMC1nZGItc2V0IHNjaGVkdWxlci1sb2NraW5nIG9mZiIgIjIxMFxcXmRvbmUi ICJzZXQgc2NoZWR1bGVyLWxvY2tpbmcgb2ZmIgotKwotICMgTmV4dCBvdmVyIHRoZSBoZWxsbygp IGNhbGwgd2hpY2ggd2lsbCBwcm9kdWNlIGxvdHMgb2Ygb3V0cHV0Ci0gbWlfZ2RiX3Rlc3QgIjIy MC1leGVjLW5leHQiICIyMjBcXF5ydW5uaW5nKFxyXG4pPyhcXCpydW5uaW5nLHRocmVhZC1pZD1c ImFsbFwiKT8iIFwKLSAJIlN0YXJ0ZWQgc3RlcCBvdmVyIGhlbGxvIgotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY2xpLmV4cAotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGku ZXhwCTIwMTItMDctMDMgMjA6MjY6MjUuMDYwOTQwNzY1ICswMjAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCTIwMTItMDctMDMgMjA6MjY6 MzIuODEwOTI5ODU2ICswMjAwCi1AQCAtMTc1LDcgKzE3NSw3IEBAIG1pX2V4ZWN1dGVfdG8gImV4 ZWMtY29udGludWUiICJicmVha3BvaW4KKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9nZGIubWkvbWktY2xpLmV4cAkyMDEzLTAxLTAxIDA3OjQxOjI0LjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkt Y2xpLmV4cAkyMDEzLTAxLTE5IDIwOjU2OjM0LjY2MjkxODQ3NCArMDEwMAorQEAgLTE2Myw3ICsx NjMsNyBAQCBtaV9leGVjdXRlX3RvICJleGVjLWNvbnRpbnVlIiAiYnJlYWtwb2luCiAgIyBUZXN0 IHRoYXQgdGhlIHRva2VuIGlzIG91dHB1dCBldmVuIGZvciBDTEkgY29tbWFuZHMKICAjIEFsc28g dGVzdCB0aGF0ICpzdG9wcGVkIGluY2x1ZGVzIGZyYW1lIGluZm9ybWF0aW9uLgogIG1pX2dkYl90 ZXN0ICIzNCBuZXh0IiBcCkBAIC01MiwxMSArMjQsMTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAx MjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY2xpLmV4cAogICAgICAiMzQgbmV4dDogcnVu IgogIAogIGlmIHshJGFzeW5jfSB7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVz dHN1aXRlL2dkYi5taS9taS1sb2dnaW5nLmV4cAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktbG9nZ2luZy5leHAKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktbG9nZ2luZy5leHAJ MjAxMi0wNi0yOSAwMDoxMToyMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw NzAzL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWxvZ2dpbmcuZXhwCTIwMTItMDctMDMgMjA6Mjk6 MDMuNTczNzE3NjUxICswMjAwCi1AQCAtNTYsNyArNTYsNyBAQCBjbG9zZSAkY2hhbgorLS0tIGdk Yi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1sb2dnaW5nLmV4 cAkyMDEzLTAxLTAxIDA3OjQxOjI0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktbG9nZ2luZy5leHAJMjAxMy0wMS0xOSAyMDo1 NjozNC42NjI5MTg0NzQgKzAxMDAKK0BAIC01Myw3ICs1Myw3IEBAIGNsb3NlICRjaGFuCiAgCiAg c2V0IG1pX2xvZ19wcm9tcHQgIlxbKFxdZ2RiXFspXF0gXFtcclxuXF0rIgogIApAQCAtNjUsNyAr MzcsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5taS9t aS1sb2dnaW5nLmV4cAogICAgICBwYXNzICJMb2cgZmlsZSBjb250ZW50cyIKICB9IGVsc2Ugewog ICAgICBmYWlsICJMb2cgZmlsZSBjb250ZW50cyIKLUBAIC03OSw3ICs3OSw3IEBAIHNldCBjaGFu IFtvcGVuICRtaWxvZ2ZpbGVdCitAQCAtNzYsNyArNzYsNyBAQCBzZXQgY2hhbiBbb3BlbiAkbWls b2dmaWxlXQogIHNldCBsb2djb250ZW50IFtyZWFkICRjaGFuXQogIGNsb3NlICRjaGFuCiAgCkBA IC03NCwzICs0NiwxNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRl L2dkYi5taS9taS1sb2dnaW5nLmV4cAogICAgICBwYXNzICJSZWRpcmVjdCBsb2cgZmlsZSBjb250 ZW50cyIKICB9IGVsc2UgewogICAgICBmYWlsICJSZWRpcmVjdCBsb2cgZmlsZSBjb250ZW50cyIK K0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNvbnNv bGUuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi90ZXN0 c3VpdGUvZ2RiLm1pL21pLWNvbnNvbGUuZXhwCTIwMTMtMDEtMDEgMDc6NDE6MjQuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1j b25zb2xlLmV4cAkyMDEzLTAxLTE5IDIwOjU2OjU1Ljc4Mzk2MTE0NSArMDEwMAorQEAgLTQ1LDYg KzQ1LDkgQEAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LworIAorIG1p X3J1bl90b19tYWluCisgCisrIyB0aHJlYWQtaWQ9XCJhbGxcIiB2cy4gdGhyZWFkLWlkPVwiMVwi IGJlbG93OgorK21pX2dkYl90ZXN0ICIyMTAtZ2RiLXNldCBzY2hlZHVsZXItbG9ja2luZyBvZmYi ICIyMTBcXF5kb25lIiAic2V0IHNjaGVkdWxlci1sb2NraW5nIG9mZiIKKysKKyAjIE5leHQgb3Zl ciB0aGUgaGVsbG8oKSBjYWxsIHdoaWNoIHdpbGwgcHJvZHVjZSBsb3RzIG9mIG91dHB1dAorIG1p X2dkYl90ZXN0ICIyMjAtZXhlYy1uZXh0IiBcCisgCSAgICAiMjIwXFxecnVubmluZyhcclxuXFwq cnVubmluZyx0aHJlYWQtaWQ9XCJhbGxcIik/IiBcCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuOC1iejI1 NDIyOS1nY29yZS1wcnBzaW5mby5wYXRjaCBiL2dkYi02LjgtYnoyNTQyMjktZ2NvcmUtcHJwc2lu Zm8ucGF0Y2gKaW5kZXggNTEwNzFmNC4uMDM3NTU2ZiAxMDA2NDQKLS0tIGEvZ2RiLTYuOC1iejI1 NDIyOS1nY29yZS1wcnBzaW5mby5wYXRjaAorKysgYi9nZGItNi44LWJ6MjU0MjI5LWdjb3JlLXBy cHNpbmZvLnBhdGNoCkBAIC0xLDggKzEsOCBAQAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIv YmZkL2VsZi1iZmQuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvYmZkL2VsZi1iZmQuaAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9iZmQvZWxmLWJmZC5oCTIw MTItMDYtMDIgMjE6MjY6MDkuOTI4NzE3MDY5ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYw Mi9iZmQvZWxmLWJmZC5oCTIwMTItMDYtMDIgMjE6Mjc6MjEuNzI3Njg5NjI1ICswMjAwCi1AQCAt MjIyMSw4ICsyMjIxLDEwIEBAIGV4dGVybiBFbGZfSW50ZXJuYWxfUGhkciAqIF9iZmRfZWxmX2Zp bmQKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvYmZkL2VsZi1iZmQuaAkyMDEzLTAxLTE4 IDIzOjAyOjU0LjgwOTAwNDQ3MyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvYmZkL2Vs Zi1iZmQuaAkyMDEzLTAxLTE4IDIzOjAyOjU5LjMxNjAxMDc1NSArMDEwMAorQEAgLTIyNDIsOCAr MjI0MiwxMCBAQCBleHRlcm4gRWxmX0ludGVybmFsX1BoZHIgKiBfYmZkX2VsZl9maW5kCiAgLyog RXhwb3J0ZWQgaW50ZXJmYWNlIGZvciB3cml0aW5nIGVsZiBjb3JlZmlsZSBub3Rlcy4gKi8KICBl eHRlcm4gY2hhciAqZWxmY29yZV93cml0ZV9ub3RlCiAgICAoYmZkICosIGNoYXIgKiwgaW50ICos IGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCB2b2lkICosIGludCk7CkBAIC0xNCwxMSArMTQsMTEg QEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvYmZkL2VsZi1iZmQuaAogIGV4dGVybiBjaGFy ICplbGZjb3JlX3dyaXRlX3Byc3RhdHVzCiAgICAoYmZkICosIGNoYXIgKiwgaW50ICosIGxvbmcs IGludCwgY29uc3Qgdm9pZCAqKTsKICBleHRlcm4gY2hhciAqIGVsZmNvcmVfd3JpdGVfcHN0YXR1 cwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvYmZkL2VsZi5jCitJbmRleDogZ2RiLTcuNS41 MC4yMDEzMDExOC9iZmQvZWxmLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAy Lm9yaWcvYmZkL2VsZi5jCTIwMTItMDYtMDIgMjE6MjY6MDkuOTI4NzE3MDY5ICswMjAwCi0rKysg Z2RiLTcuNC41MC4yMDEyMDYwMi9iZmQvZWxmLmMJMjAxMi0wNi0wMiAyMToyNzoyMS43MzI2ODk2 MjMgKzAyMDAKLUBAIC04OTE3LDU2ICs4OTE3LDYxIEBAIGNoYXIgKgorLS0tIGdkYi03LjUuNTAu MjAxMzAxMTgub3JpZy9iZmQvZWxmLmMJMjAxMy0wMS0xOCAyMzowMjo1NC44MTIwMDQ0NzkgKzAx MDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2JmZC9lbGYuYwkyMDEzLTAxLTE4IDIzOjAyOjU5 LjMxOTAxMDgzNiArMDEwMAorQEAgLTkxMDMsNTYgKzkxMDMsNjEgQEAgY2hhciAqCiAgZWxmY29y ZV93cml0ZV9wcnBzaW5mbyAoYmZkICAqYWJmZCwKICAJCQljaGFyICpidWYsCiAgCQkJaW50ICAq YnVmc2l6LApAQCAtMTAzLDExICsxMDMsMTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIv YmZkL2VsZi5jCiAgCiAgICBmcmVlIChidWYpOwogICAgcmV0dXJuIE5VTEw7Ci1JbmRleDogZ2Ri LTcuNC41MC4yMDEyMDYwMi9nZGIvcHJvY2ZzLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi9wcm9jZnMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9n ZGIvcHJvY2ZzLmMJMjAxMi0wNi0wMiAyMToyNjowOS45Mjg3MTcwNjkgKzAyMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi9wcm9jZnMuYwkyMDEyLTA2LTAyIDIxOjI3OjIxLjc0NTY4OTYx OCArMDIwMAotQEAgLTU1NDEsNiArNTU0MSw3IEBAIHByb2Nmc19tYWtlX25vdGVfc2VjdGlvbiAo YmZkICpvYmZkLCBpbnQKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3Byb2Nmcy5j CTIwMTMtMDEtMTggMjM6MDI6NTQuODE1MDA0NDg3ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEz MDExOC9nZGIvcHJvY2ZzLmMJMjAxMy0wMS0xOCAyMzowMjo1OS4zMjAwMTA4NjEgKzAxMDAKK0BA IC01NTAyLDYgKzU1MDIsNyBAQCBwcm9jZnNfbWFrZV9ub3RlX3NlY3Rpb24gKGJmZCAqb2JmZCwg aW50CiAgICBub3RlX2RhdGEgPSAoY2hhciAqKSBlbGZjb3JlX3dyaXRlX3BycHNpbmZvIChvYmZk LAogIAkJCQkJICAgICAgIG5vdGVfZGF0YSwKICAJCQkJCSAgICAgICBub3RlX3NpemUsCkBAIC0x MTUsMTkgKzExNSwxOSBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvcHJvY2ZzLmMK ICAJCQkJCSAgICAgICBmbmFtZSwKICAJCQkJCSAgICAgICBwc2FyZ3MpOwogIAotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xpbnV4LXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL2xpbnV4LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2 MDIub3JpZy9nZGIvbGludXgtdGRlcC5jCTIwMTItMDYtMDIgMjE6MjY6MDkuOTI4NzE3MDY5ICsw MjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvbGludXgtdGRlcC5jCTIwMTItMDYtMDIg MjE6MzE6MTIuMDUxNjAxNTEwICswMjAwCi1AQCAtMzAsNiArMzAsNyBAQAotICNpbmNsdWRlICJl bGYtYmZkLmgiICAgICAgICAgICAgLyogZm9yIGVsZmNvcmVfd3JpdGVfKiAqLwotICNpbmNsdWRl ICJpbmZlcmlvci5oIgorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvbGludXgtdGRl cC5jCTIwMTMtMDEtMTggMjM6MDI6NTQuODE2MDA0NDg5ICswMTAwCisrKysgZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvbGludXgtdGRlcC5jCTIwMTMtMDEtMTggMjM6MDM6MTAuNzI3MDI3MzE3ICsw MTAwCitAQCAtMzIsNiArMzIsNyBAQAogICNpbmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCisgI2lu Y2x1ZGUgImFyY2gtdXRpbHMuaCIKKyAjaW5jbHVkZSAiZ2RiX29ic3RhY2suaCIKICsjaW5jbHVk ZSA8c3lzL3Byb2Nmcy5oPgogIAogICNpbmNsdWRlIDxjdHlwZS5oPgogIAotQEAgLTc2OSw2ICs3 NzAsMTMxIEBAIGxpbnV4X2NvcmVmaWxlX3RocmVhZF9jYWxsYmFjayAoc3RydWN0IHQKK0BAIC0x MTUzLDYgKzExNTQsMTMxIEBAIGxpbnV4X2NvcmVmaWxlX3RocmVhZF9jYWxsYmFjayAoc3RydWN0 IHQKICAgIHJldHVybiAhYXJncy0+bm90ZV9kYXRhOwogIH0KICAKQEAgLTI1OSw3ICsyNTksNyBA QCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvbGludXgtdGRlcC5jCiAgLyogRmlsbHMg dGhlICJ0b19tYWtlX2NvcmVmaWxlX25vdGUiIHRhcmdldCB2ZWN0b3IuICBCdWlsZHMgdGhlIG5v dGUKICAgICBzZWN0aW9uIGZvciBhIGNvcmVmaWxlLCBhbmQgcmV0dXJucyBpdCBpbiBhIG1hbGxv YyBidWZmZXIuICAqLwogIAotQEAgLTc4NCwxNiArOTEwLDkgQEAgbGludXhfbWFrZV9jb3JlZmls ZV9ub3RlcyAoc3RydWN0IGdkYmFyYworQEAgLTExNjgsMTYgKzEyOTQsOSBAQCBsaW51eF9tYWtl X2NvcmVmaWxlX25vdGVzIChzdHJ1Y3QgZ2RiYXJjCiAgICAvKiBQcm9jZXNzIGluZm9ybWF0aW9u LiAgKi8KICAgIGlmIChnZXRfZXhlY19maWxlICgwKSkKICAgICAgewoKZGlmZiAtLWdpdCBhL2dk Yi02LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2ggYi9nZGItNi44LXF1aXQtbmV2ZXItYWJvcnRz LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzE1NTdmLi4wMDAwMDAwCi0t LSBhL2dkYi02LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3 MiArMCwwIEBACi1XZSBtYXkgYWJvcnQgdGhlIHByb2Nlc3Mgb2YgZGV0YWNoaW5nIHRocmVhZHMg d2l0aCBtdWx0aXBsZSBTSUdJTlRzIC0gd2hpY2ggYXJlCi1iZWluZyBzZW50IGR1cmluZyBhIHRl c3RjYXNlIHRlcm1pbmF0aW5nIGl0cyBjaGlsZCBHREIuCi0KLVNvbWUgb2YgdGhlIHRocmVhZHMg bWF5IG5vdCBiZSBwcm9wZXJseSBQVFJBQ0VfREVUQUNIZWQgd2hpY2ggaHVydHMgaWYgdGhleQot c2hvdWxkIGhhdmUgYmVlbiBkZXRhY2hlZCB3aXRoIFNJR1NUT1AgKGFzIHRoZXkgYXJlIGFjY2lk ZW50YWxseSBsZWZ0IHJ1bm5pbmcKLW9uIHRoZSBkZWJ1Z2dlciB0ZXJtaW5hdGlvbikuCi0KLUlu ZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9kZWZzLmgKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4yLjUwLjIwMTEwMTE3Lm9yaWcvZ2RiL2RlZnMuaAkyMDExLTAxLTE3IDE1OjQ3OjM3LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2RlZnMuaAkyMDExLTAxLTE3 IDE1OjUzOjA1LjAwMDAwMDAwMCArMDEwMAotQEAgLTE2NSw2ICsxNjUsNyBAQCBleHRlcm4gY2hh ciAqcHl0aG9uX2xpYmRpcjsKLSBleHRlcm4gY2hhciAqZGVidWdfZmlsZV9kaXJlY3Rvcnk7Ci0g Ci0gZXh0ZXJuIGludCBxdWl0X2ZsYWc7Ci0rZXh0ZXJuIGludCBxdWl0X2ZsYWdfY2xlYW51cDsK LSBleHRlcm4gaW50IGltbWVkaWF0ZV9xdWl0OwotIGV4dGVybiBpbnQgc2V2ZW5iaXRfc3RyaW5n czsKLSAKLUBAIC0xNzgsNyArMTc5LDcgQEAgZXh0ZXJuIHZvaWQgcXVpdCAodm9pZCk7Ci0gICAg bmVlZGVkLiAgKi8KLSAKLSAjZGVmaW5lIFFVSVQgeyBcCi0tICBpZiAocXVpdF9mbGFnKSBxdWl0 ICgpOyBcCi0rICBpZiAocXVpdF9mbGFnICYmICFxdWl0X2ZsYWdfY2xlYW51cCkgcXVpdCAoKTsg XAotICAgaWYgKGRlcHJlY2F0ZWRfaW50ZXJhY3RpdmVfaG9vaykgZGVwcmVjYXRlZF9pbnRlcmFj dGl2ZV9ob29rICgpOyBcCi0gfQotIAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2V2 ZW50LXRvcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDExNy5vcmlnL2dkYi9l dmVudC10b3AuYwkyMDExLTAxLTE3IDE1OjUyOjM5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjIuNTAuMjAxMTAxMTcvZ2RiL2V2ZW50LXRvcC5jCTIwMTEtMDEtMTcgMTU6NTI6NDkuMDAwMDAw MDAwICswMTAwCi1AQCAtOTA0LDcgKzkwNCw3IEBAIGFzeW5jX3JlcXVlc3RfcXVpdCAoZ2RiX2Ns aWVudF9kYXRhIGFyZykKLSAgICAgIGlzIG5vIHJlYXNvbiB0byBjYWxsIHF1aXQgYWdhaW4gaGVy ZSwgdW5sZXNzIGltbWVkaWF0ZV9xdWl0IGlzCi0gICAgICBzZXQuICAqLwotIAotLSAgaWYgKHF1 aXRfZmxhZyB8fCBpbW1lZGlhdGVfcXVpdCkKLSsgIGlmICgocXVpdF9mbGFnIHx8IGltbWVkaWF0 ZV9xdWl0KSAmJiAhcXVpdF9mbGFnX2NsZWFudXApCi0gICAgIHF1aXQgKCk7Ci0gfQotIAotSW5k ZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL3RvcC5jCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi41MC4yMDExMDExNy5vcmlnL2dkYi90b3AuYwkyMDExLTAxLTE3IDE1OjQ3OjM3LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL3RvcC5jCTIwMTEtMDEtMTcgMTU6 NTI6NDkuMDAwMDAwMDAwICswMTAwCi1AQCAtMTI1Nyw3ICsxMjU3LDkgQEAgcXVpdF9mb3JjZSAo Y2hhciAqYXJncywgaW50IGZyb21fdHR5KQotICAgcXQuYXJncyA9IGFyZ3M7Ci0gICBxdC5mcm9t X3R0eSA9IGZyb21fdHR5OwotIAotLSAgLyogV2Ugd2FudCB0byBoYW5kbGUgYW55IHF1aXQgZXJy b3JzIGFuZCBleGl0IHJlZ2FyZGxlc3MuICAqLwotKyAgLyogV2Ugd2FudCB0byBoYW5kbGUgYW55 IHF1aXQgZXJyb3JzIGFuZCBleGl0IHJlZ2FyZGxlc3MgYnV0IHdlIHNob3VsZCBuZXZlcgotKyAg ICAgZ2V0IHVzZXItaW50ZXJydXB0ZWQgdG8gcHJvcGVybHkgZGV0YWNoIHRoZSBpbmZlcmlvci4g ICovCi0rICBxdWl0X2ZsYWdfY2xlYW51cCA9IDE7Ci0gICBjYXRjaF9lcnJvcnMgKHF1aXRfdGFy Z2V0LCAmcXQsCi0gCSAgICAgICAgIlF1aXR0aW5nOiAiLCBSRVRVUk5fTUFTS19BTEwpOwotIAot SW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL3V0aWxzLmMKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4yLjUwLjIwMTEwMTE3Lm9yaWcvZ2RiL3V0aWxzLmMJMjAxMS0wMS0xNyAxNTo0NzozNy4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi91dGlscy5jCTIwMTEt MDEtMTcgMTU6NTI6NDkuMDAwMDAwMDAwICswMTAwCi1AQCAtMTIxLDYgKzEyMSwxMSBAQCBpbnQg am9iX2NvbnRyb2w7Ci0gCi0gaW50IHF1aXRfZmxhZzsKLSAKLSsvKiBOb256ZXJvIG1lYW5zIHdl IGFyZSBhbHJlYWR5IHByb2Nlc3NpbmcgdGhlIHF1aXR0aW5nIGNsZWFudXBzIGFuZCB3ZSBzaG91 bGQKLSsgICBubyBsb25nZXIgZ2V0IGFib3J0ZWQuICAqLwotKwotK2ludCBxdWl0X2ZsYWdfY2xl YW51cDsKLSsKLSAvKiBOb256ZXJvIG1lYW5zIHF1aXQgaW1tZWRpYXRlbHkgaWYgQ29udHJvbC1D IGlzIHR5cGVkIG5vdywgcmF0aGVyCi0gICAgdGhhbiB3YWl0aW5nIHVudGlsIFFVSVQgaXMgZXhl Y3V0ZWQuICBCZSBjYXJlZnVsIGluIHNldHRpbmcgdGhpczsKLSAgICBjb2RlIHdoaWNoIGV4ZWN1 dGVzIHdpdGggaW1tZWRpYXRlX3F1aXQgc2V0IGhhcyB0byBiZSB2ZXJ5IGNhcmVmdWwKCmRpZmYg LS1naXQgYS9nZGItNy4yLjUwLXNwYXJjLWFkZC13b3JrYXJvdW5kLXRvLWJyb2tlbi1kZWJ1Zy1m aWxlcy5wYXRjaCBiL2dkYi03LjIuNTAtc3BhcmMtYWRkLXdvcmthcm91bmQtdG8tYnJva2VuLWRl YnVnLWZpbGVzLnBhdGNoCmluZGV4IGJlY2Y4MGUuLmQ1M2VmMDMgMTAwNjQ0Ci0tLSBhL2dkYi03 LjIuNTAtc3BhcmMtYWRkLXdvcmthcm91bmQtdG8tYnJva2VuLWRlYnVnLWZpbGVzLnBhdGNoCisr KyBiL2dkYi03LjIuNTAtc3BhcmMtYWRkLXdvcmthcm91bmQtdG8tYnJva2VuLWRlYnVnLWZpbGVz LnBhdGNoCkBAIC0xLDggKzEsOCBAQAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2dk Yl9iZmQuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2dkYl9iZmQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvZ2RiX2JmZC5jCTIwMTItMDct MDMgMTc6MzA6MDcuMzU2NzU0NjU1ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIv Z2RiX2JmZC5jCTIwMTItMDctMDMgMTc6NDM6NTIuNTY1NzYyNDU0ICswMjAwCi1AQCAtMjYsMTIg KzI2LDE0IEBACistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9nZGJfYmZkLmMJMjAx My0wMS0xOCAyMzoxMToxOC4xNTg3MTg3MDkgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi9nZGJfYmZkLmMJMjAxMy0wMS0xOCAyMzoxMjowNi44NDE3ODc4OTMgKzAxMDAKK0BAIC0y NywxMiArMjcsMTQgQEAKICAjaWZkZWYgSEFWRV9aTElCX0gKICAjaW5jbHVkZSA8emxpYi5oPgog ICNlbmRpZgpAQCAtMTcsNyArMTcsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIv Z2RiX2JmZC5jCiAgCiAgLyogQW4gb2JqZWN0IG9mIHRoaXMgdHlwZSBpcyBzdG9yZWQgaW4gdGhl IHNlY3Rpb24ncyB1c2VyIGRhdGEgd2hlbgogICAgIG1hcHBpbmcgYSBzZWN0aW9uLiAgKi8KLUBA IC0xODEsNiArMTgzLDcgQEAgZnJlZV9vbmVfYmZkX3NlY3Rpb24gKGJmZCAqYWJmZCwgYXNlY3Rp bworQEAgLTIwNSw2ICsyMDcsNyBAQCBmcmVlX29uZV9iZmRfc2VjdGlvbiAoYmZkICphYmZkLCBh c2VjdGlvCiAgCiAgICBpZiAoc2VjdCAhPSBOVUxMICYmIHNlY3QtPmRhdGEgIT0gTlVMTCkKICAg ICAgewpAQCAtMjUsNyArMjUsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvZ2Ri X2JmZC5jCiAgI2lmZGVmIEhBVkVfTU1BUAogICAgICAgIGlmIChzZWN0LT5tYXBfYWRkciAhPSBO VUxMKQogIAl7Ci1AQCAtMTkxLDYgKzE5NCw3IEBAIGZyZWVfb25lX2JmZF9zZWN0aW9uIChiZmQg KmFiZmQsIGFzZWN0aW8KK0BAIC0yMTUsNiArMjE4LDcgQEAgZnJlZV9vbmVfYmZkX3NlY3Rpb24g KGJmZCAqYWJmZCwgYXNlY3RpbwogIAl9CiAgICAgICAgZWxzZQogICNlbmRpZgpAQCAtMzMsMTkg KzMzLDE5IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9nZGJfYmZkLmMKICAJeGZy ZWUgKHNlY3QtPmRhdGEpOwogICAgICB9CiAgfQotQEAgLTQyNSw2ICs0MjksNyBAQCBnZGJfYmZk X21hcF9zZWN0aW9uIChhc2VjdGlvbiAqc2VjdHAsIGJmCi0gICAgICAgICB9Ci0gICAgIH0KK0BA IC0zNjAsNiArMzY0LDcgQEAgZ2RiX2JmZF9tYXBfc2VjdGlvbiAoYXNlY3Rpb24gKnNlY3RwLCBi ZgorICAgaWYgKGRlc2NyaXB0b3ItPmRhdGEgIT0gTlVMTCkKKyAgICAgZ290byBkb25lOwogIAog KyNpZm5kZWYgX19zcGFyY19fCiAgI2lmZGVmIEhBVkVfTU1BUAotICAgewotICAgICAvKiBUaGUg cGFnZSBzaXplLCB1c2VkIHdoZW4gbW1hcHBpbmcuICAqLwotQEAgLTQ1OCw2ICs0NjMsNyBAQCBn ZGJfYmZkX21hcF9zZWN0aW9uIChhc2VjdGlvbiAqc2VjdHAsIGJmCi0gICAgICAgfQotICAgfQor ICAgaWYgKCFiZmRfaXNfc2VjdGlvbl9jb21wcmVzc2VkIChhYmZkLCBzZWN0cCkpCisgICAgIHsK K0BAIC0zOTQsNiArMzk5LDcgQEAgZ2RiX2JmZF9tYXBfc2VjdGlvbiAoYXNlY3Rpb24gKnNlY3Rw LCBiZgorIAl9CisgICAgIH0KICAjZW5kaWYgLyogSEFWRV9NTUFQICovCiArI2VuZGlmCiAgCi0g ICAvKiBJZiB3ZSBnZXQgaGVyZSwgd2UgYXJlIGEgbm9ybWFsLCBub3QtY29tcHJlc3NlZCBzZWN0 aW9uLiAgKi8KLSAKKyAgIC8qIEhhbmRsZSBjb21wcmVzc2VkIHNlY3Rpb25zLCBvciBvcmRpbmFy eSB1bmNvbXByZXNzZWQgc2VjdGlvbnMgaW4KKyAgICAgIHRoZSBuby1tbWFwIGNhc2UuICAqLwoK ZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoIGIv Z2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKaW5kZXggNDFiOWI0Ni4u ZTZhZDM1NiAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQu cGF0Y2gKKysrIGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKQEAg LTEsOSArMSw5IEBACi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvYnJlYWtwb2ludC5j CitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYnJlYWtwb2ludC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMi0wNi0w MiAxOToxMTo1NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9i cmVha3BvaW50LmMJMjAxMi0wNi0wMiAxOTo1Mjo1OC4xNjEyMjY1MDYgKzAyMDAKLUBAIC0xNTQ5 NSw2ICsxNTQ5NSw1MCBAQCBpbml0aWFsaXplX2JyZWFrcG9pbnRfb3BzICh2b2lkKQotIH0KKy0t LSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEzLTAxLTE4IDIz OjA5OjUzLjcyNzU5NzU4NCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2JyZWFr cG9pbnQuYwkyMDEzLTAxLTE4IDIzOjEwOjIwLjE1ODYzNTA2NSArMDEwMAorQEAgLTE1OTkzLDYg KzE1OTkzLDUwIEBAIGluaXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQpCisgc3RhdGljIHN0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICplbmFibGVicmVha2xpc3QgPSBOVUxMOwogIAogIHZvaWQK ICticmVha3BvaW50c19yZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBz ZWN0aW9uX29mZnNldHMgKmRlbHRhKQpAQCAtNTMsMTEgKzUzLDExIEBAIEluZGV4OiBnZGItNy40 LjUwLjIwMTIwNjAyL2dkYi9icmVha3BvaW50LmMKICBfaW5pdGlhbGl6ZV9icmVha3BvaW50ICh2 b2lkKQogIHsKICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjOwotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL2JyZWFrcG9pbnQuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL2JyZWFrcG9pbnQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3Jp Zy9nZGIvYnJlYWtwb2ludC5oCTIwMTItMDUtMTYgMTY6MzU6MDMuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvYnJlYWtwb2ludC5oCTIwMTItMDYtMDIgMTk6NTM6 MDkuMjY4MjIzMjYzICswMjAwCi1AQCAtMTUwMyw0ICsxNTAzLDcgQEAgZXh0ZXJuIHN0cnVjdCBn ZGJhcmNoICpnZXRfc2FsX2FyY2ggKHN0cgorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9n ZGIvYnJlYWtwb2ludC5oCTIwMTMtMDEtMTggMjM6MDk6NTEuNjcxNTk0NTg1ICswMTAwCisrKysg Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYnJlYWtwb2ludC5oCTIwMTMtMDEtMTggMjM6MDk6NTMu NzI4NTk3NTg2ICswMTAwCitAQCAtMTU1MCw0ICsxNTUwLDcgQEAgZXh0ZXJuIHN0cnVjdCBnZGJh cmNoICpnZXRfc2FsX2FyY2ggKHN0cgogIAogIGV4dGVybiB2b2lkIGhhbmRsZV9zb2xpYl9ldmVu dCAodm9pZCk7CiAgCkBAIC02NSwxMSArNjUsMTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2 MDIvZ2RiL2JyZWFrcG9pbnQuaAogKwkJCQkgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKmRlbHRh KTsKICsKICAjZW5kaWYgLyogIWRlZmluZWQgKEJSRUFLUE9JTlRfSCkgKi8KLUluZGV4OiBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi9vYmpmaWxlcy5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvb2JqZmlsZXMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3Jp Zy9nZGIvb2JqZmlsZXMuYwkyMDEyLTA1LTEwIDIxOjUwOjA4LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL29iamZpbGVzLmMJMjAxMi0wNi0wMiAxOTo1Mjo1OC4y MDIyMjY1MDIgKzAyMDAKLUBAIC04MDIsNiArODAyLDExIEBAIG9iamZpbGVfcmVsb2NhdGUxIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL29i amZpbGVzLmMJMjAxMy0wMS0xOCAyMzowOTo1MS42NzE1OTQ1ODUgKzAxMDAKKysrKyBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi9vYmpmaWxlcy5jCTIwMTMtMDEtMTggMjM6MDk6NTMuNzI5NTk3NTg4 ICswMTAwCitAQCAtODI2LDYgKzgyNiwxMSBAQCBvYmpmaWxlX3JlbG9jYXRlMSAoc3RydWN0IG9i amZpbGUgKm9iamZpCiAgICAgIG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fcmVsb2Nh dGVfcHJvYmUgKG9iamZpbGUsCiAgCQkJCQkJICAgIG5ld19vZmZzZXRzLCBkZWx0YSk7CiAgCgpk aWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoIGIvZ2RiLWFyY2hlci1waWUt YWRkb25zLnBhdGNoCmluZGV4IGY4MTE5NjQuLmQwOTliNWIgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNo ZXItcGllLWFkZG9ucy5wYXRjaAorKysgYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2gKQEAg LTEsNjEgKzEsOCBAQAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2R3YXJmMnJlYWQu YworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2dkYnR5cGVzLmgKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEyLTA2LTAy IDE5OjE0OjM4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2R3 YXJmMnJlYWQuYwkyMDEyLTA2LTAyIDE5OjUxOjI5Ljk3NzI1MjMzOCArMDIwMAotQEAgLTk3NDYs NyArOTc0NiwxMiBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCi0g ewotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLSAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLS0g IENPUkVfQUREUiBiYXNlID0gKENPUkVfQUREUikgMDsKLSsgIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlID0gY3UtPm9iamZpbGU7Ci0rICBDT1JFX0FERFIgYmFzZWFkZHIgPSBBTk9GRlNFVCAob2Jq ZmlsZS0+c2VjdGlvbl9vZmZzZXRzLAotKwkJCQkgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOwot KyAgLyogVGhpcyBpcyB1c2VkIG9ubHkgZm9yIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uIGVu dHJpZXMuICAqLwotKyAgQ09SRV9BRERSIGJhc2UgPSAwOwotKyAgaW50IGJhc2VfcCA9IDA7Ci0g Ci0gICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbG9jYXRpb24sIGN1KTsKLSAgIGlm IChhdHRyKQotQEAgLTk3NTUsNiArOTc2MCw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwKLSAgICAgICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKLSAg ICAgICAgIHsKLSAgICAgICAgICAgYmFzZSA9IGRlY29kZV9sb2NkZXNjIChEV19CTE9DSyAoYXR0 ciksIGN1KTsKLSsJICBiYXNlX3AgPSAxOwotICAgICAgICAgfQotICAgICAgIGVsc2UgaWYgKGF0 dHJfZm9ybV9pc19zZWN0aW9uX29mZnNldCAoYXR0cikpCi0gICAgICAgICB7Ci1AQCAtOTgwNywx MiArOTgxMywxNSBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCi0g CSAgaWYgKHN5bSAhPSBOVUxMCi0gCSAgICAgICYmIGhhbmRsZV9kYXRhX21lbWJlcl9sb2NhdGlv biAoY2hpbGRfZGllLCBjdSwgJm9mZnNldCkpCi0gCSAgICB7Ci0tCSAgICAgIFNZTUJPTF9WQUxV RV9BRERSRVNTIChzeW0pID0gYmFzZSArIG9mZnNldDsKLSsJICAgICAgaWYgKCFiYXNlX3ApCi0r CQlkd2FyZjJfaW52YWxpZF9hdHRyaWJfY2xhc3NfY29tcGxhaW50Ci0rCQkgICgiRFdfQVRfZGF0 YV9tZW1iZXJfbG9jYXRpb24iLCAiY29tbW9uIGJsb2NrIG1lbWJlciIpOwotKwkgICAgICBTWU1C T0xfVkFMVUVfQUREUkVTUyAoc3ltKSA9IGJhc2UgKyBvZmZzZXQgKyBiYXNlYWRkcjsKLSAJICAg ICAgYWRkX3N5bWJvbF90b19saXN0IChzeW0sICZnbG9iYWxfc3ltYm9scyk7Ci0gCSAgICB9Ci0g Ci0gCSAgaWYgKFNZTUJPTF9DTEFTUyAoc3ltKSA9PSBMT0NfU1RBVElDKQotLQkgICAgU0VUX0ZJ RUxEX1BIWVNBRERSICgqZmllbGQsIFNZTUJPTF9WQUxVRV9BRERSRVNTIChzeW0pKTsKLSsJICAg IFNFVF9GSUVMRF9QSFlTQUREUiAoKmZpZWxkLCBTWU1CT0xfVkFMVUVfQUREUkVTUyAoc3ltKSAt IGJhc2VhZGRyKTsKLSAJICBlbHNlCi0gCSAgICBTRVRfRklFTERfUEhZU05BTUUgKCpmaWVsZCwg U1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKSk7Ci0gCSAgRklFTERfVFlQRSAoKmZpZWxkKSA9IFNZ TUJPTF9UWVBFIChzeW0pOwotQEAgLTk4MjYsNyArOTgzNSw3IEBAIHJlYWRfY29tbW9uX2Jsb2Nr IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKLSAKLSAgICAgICBzeW0gPSBuZXdfc3ltYm9sIChkaWUs IHR5cGUsIGN1KTsKLSAgICAgICAvKiBTWU1CT0xfVkFMVUVfQUREUkVTUyBuZXZlciBnZXRzIHVz ZWQgYXMgYWxsIGl0cyBmaWVsZHMgYXJlIHN0YXRpYy4gICovCi0tICAgICAgU1lNQk9MX1ZBTFVF X0FERFJFU1MgKHN5bSkgPSBiYXNlOwotKyAgICAgIFNZTUJPTF9WQUxVRV9BRERSRVNTIChzeW0p ID0gYmFzZSArIGJhc2VhZGRyOwotIAotICAgICAgIHNldF9kaWVfdHlwZSAoZGllLCB0eXBlLCBj dSk7Ci0gICAgIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9nZGJ0eXBlcy5oCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIw MTItMDYtMDIgMTk6MTE6NTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvZ2RidHlwZXMuaAkyMDEyLTA2LTAyIDE5OjUyOjQ0Ljk5MDIzMDIwMCArMDIwMAotQEAg LTQwMSw2ICs0MDEsNyBAQCBlbnVtIGZpZWxkX2xvY19raW5kCistLS0gZ2RiLTcuNS41MC4yMDEz MDExOC5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMTMtMDEtMTggMjM6MDc6MDMuNDg4MzU4MzE1ICsw MTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZ2RidHlwZXMuaAkyMDEzLTAxLTE4IDIz OjA4OjEwLjI4NjQ1MTU3MCArMDEwMAorQEAgLTQyMCw2ICs0MjAsNyBAQCBlbnVtIGZpZWxkX2xv Y19raW5kCiAgICB7CiAgICAgIEZJRUxEX0xPQ19LSU5EX0JJVFBPUywJLyogYml0cG9zICovCiAg ICAgIEZJRUxEX0xPQ19LSU5EX0VOVU1WQUwsCS8qIGVudW12YWwgKi8KQEAgLTYzLDcgKzEwLDcg QEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2dkYnR5cGVzLmgKICAgICAgRklFTERf TE9DX0tJTkRfUEhZU0FERFIsCS8qIHBoeXNhZGRyICovCiAgICAgIEZJRUxEX0xPQ19LSU5EX1BI WVNOQU1FLAkvKiBwaHlzbmFtZSAqLwogICAgICBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSwkv KiBkd2FyZl9ibG9jayAqLwotQEAgLTU5NSw2ICs1OTYsNyBAQCBzdHJ1Y3QgbWFpbl90eXBlCitA QCAtNjE0LDYgKzYxNSw3IEBAIHN0cnVjdCBtYWluX3R5cGUKICAJICAgaXMgdGhlIGxvY2F0aW9u IChpbiB0aGUgdGFyZ2V0KSBvZiB0aGUgc3RhdGljIGZpZWxkLgogIAkgICBPdGhlcndpc2UsIHBo eXNuYW1lIGlzIHRoZSBtYW5nbGVkIGxhYmVsIG9mIHRoZSBzdGF0aWMgZmllbGQuICAqLwogIApA QCAtNzEsNyArMTgsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZ2RidHlwZXMu aAogIAlDT1JFX0FERFIgcGh5c2FkZHI7CiAgCWNvbnN0IGNoYXIgKnBoeXNuYW1lOwogIAotQEAg LTEyMDAsNiArMTIwMiw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0 cnUKK0BAIC0xMjM3LDYgKzEyMzksNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90 eXBlIChzdHJ1CiAgI2RlZmluZSBGSUVMRF9FTlVNVkFMX0xWQUwodGhpc2ZsZCkgKCh0aGlzZmxk KS5sb2MuZW51bXZhbCkKICAjZGVmaW5lIEZJRUxEX0VOVU1WQUwodGhpc2ZsZCkgKEZJRUxEX0VO VU1WQUxfTFZBTCAodGhpc2ZsZCkgKyAwKQogICNkZWZpbmUgRklFTERfU1RBVElDX1BIWVNOQU1F KHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLnBoeXNuYW1lKQpAQCAtNzksNyArMjYsNyBAQCBJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZ2RidHlwZXMuaAogICNkZWZpbmUgRklFTERfU1RB VElDX1BIWVNBRERSKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLnBoeXNhZGRyKQogICNkZWZpbmUg RklFTERfRFdBUkZfQkxPQ0sodGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2MuZHdhcmZfYmxvY2spCiAg I2RlZmluZSBTRVRfRklFTERfQklUUE9TKHRoaXNmbGQsIGJpdHBvcykJCQlcCi1AQCAtMTIxMSw2 ICsxMjE0LDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQorQEAg LTEyNDgsNiArMTI1MSw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0 cnUKICAjZGVmaW5lIFNFVF9GSUVMRF9QSFlTTkFNRSh0aGlzZmxkLCBuYW1lKQkJCVwKICAgIChG SUVMRF9MT0NfS0lORCAodGhpc2ZsZCkgPSBGSUVMRF9MT0NfS0lORF9QSFlTTkFNRSwJCVwKICAg ICBGSUVMRF9TVEFUSUNfUEhZU05BTUUgKHRoaXNmbGQpID0gKG5hbWUpKQpAQCAtODcsNyArMzQs NyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZ2RidHlwZXMuaAogICNkZWZpbmUg U0VUX0ZJRUxEX1BIWVNBRERSKHRoaXNmbGQsIGFkZHIpCQkJXAogICAgKEZJRUxEX0xPQ19LSU5E ICh0aGlzZmxkKSA9IEZJRUxEX0xPQ19LSU5EX1BIWVNBRERSLAkJXAogICAgIEZJRUxEX1NUQVRJ Q19QSFlTQUREUiAodGhpc2ZsZCkgPSAoYWRkcikpCi1AQCAtMTIyNyw2ICsxMjMxLDcgQEAgZXh0 ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQorQEAgLTEyNjQsNiArMTI2OCw3 IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKICAjZGVmaW5lIFRZ UEVfRklFTERfQklUUE9TKHRoaXN0eXBlLCBuKSBGSUVMRF9CSVRQT1MgKFRZUEVfRklFTEQgKHRo aXN0eXBlLCBuKSkKICAjZGVmaW5lIFRZUEVfRklFTERfRU5VTVZBTCh0aGlzdHlwZSwgbikgRklF TERfRU5VTVZBTCAoVFlQRV9GSUVMRCAodGhpc3R5cGUsIG4pKQogICNkZWZpbmUgVFlQRV9GSUVM RF9TVEFUSUNfUEhZU05BTUUodGhpc3R5cGUsIG4pIEZJRUxEX1NUQVRJQ19QSFlTTkFNRSAoVFlQ RV9GSUVMRCAodGhpc3R5cGUsIG4pKQpAQCAtOTUsMTEgKzQyLDExIEBAIEluZGV4OiBnZGItNy40 LjUwLjIwMTIwNjAyL2dkYi9nZGJ0eXBlcy5oCiAgI2RlZmluZSBUWVBFX0ZJRUxEX1NUQVRJQ19Q SFlTQUREUih0aGlzdHlwZSwgbikgRklFTERfU1RBVElDX1BIWVNBRERSIChUWVBFX0ZJRUxEICh0 aGlzdHlwZSwgbikpCiAgI2RlZmluZSBUWVBFX0ZJRUxEX0RXQVJGX0JMT0NLKHRoaXN0eXBlLCBu KSBGSUVMRF9EV0FSRl9CTE9DSyAoVFlQRV9GSUVMRCAodGhpc3R5cGUsIG4pKQogICNkZWZpbmUg VFlQRV9GSUVMRF9BUlRJRklDSUFMKHRoaXN0eXBlLCBuKSBGSUVMRF9BUlRJRklDSUFMKFRZUEVf RklFTEQodGhpc3R5cGUsbikpCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvanYtbGFu Zy5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvanYtbGFuZy5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9qdi1sYW5nLmMJMjAxMi0wNS0xMCAy MTo1OToxMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9qdi1s YW5nLmMJMjAxMi0wNi0wMiAxOTo1MTo1My4yODYyNDUyODAgKzAyMDAKLUBAIC00MzEsNyArNDMx LDggQEAgamF2YV9saW5rX2NsYXNzX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZAorLS0tIGdkYi03 LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvanYtbGFuZy5jCTIwMTMtMDEtMTggMjM6MDc6MDMuNDg4 MzU4MzE1ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvanYtbGFuZy5jCTIwMTMt MDEtMTggMjM6MDg6MTAuMjg2NDUxNTcwICswMTAwCitAQCAtNDMwLDcgKzQzMCw4IEBAIGphdmFf bGlua19jbGFzc190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKICAKICAgIGZpZWxkcyA9IE5VTEw7 CiAgICBuZmllbGRzLS07CQkJLyogRmlyc3Qgc2V0IHVwIGR1bW15ICJjbGFzcyIgZmllbGQuICAq LwpAQCAtMTA5LDcgKzU2LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2p2LWxh bmcuYwogICAgVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBuZmllbGRzKSA9ICJjbGFzcyI7CiAgICBU WVBFX0ZJRUxEX1RZUEUgKHR5cGUsIG5maWVsZHMpID0gdmFsdWVfdHlwZSAoY2xhcyk7CiAgICBT RVRfVFlQRV9GSUVMRF9QUklWQVRFICh0eXBlLCBuZmllbGRzKTsKLUBAIC00NzksNyArNDgwLDgg QEAgamF2YV9saW5rX2NsYXNzX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZAorQEAgLTQ3OCw3ICs0 NzksOCBAQCBqYXZhX2xpbmtfY2xhc3NfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkCiAgCSAgU0VU X1RZUEVfRklFTERfUFJPVEVDVEVEICh0eXBlLCBpKTsKICAJfQogICAgICAgIGlmIChhY2NmbGFn cyAmIDB4MDAwOCkJLyogQUNDX1NUQVRJQyAqLwpAQCAtMTE5LDExICs2NiwxMSBAQCBJbmRleDog Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvanYtbGFuZy5jCiAgICAgICAgZWxzZQogIAlTRVRfRklF TERfQklUUE9TIChUWVBFX0ZJRUxEICh0eXBlLCBpKSwgOCAqIGJvZmZzZXQpOwogICAgICAgIGlm IChhY2NmbGFncyAmIDB4ODAwMCkJLyogRklFTERfVU5SRVNPTFZFRF9GTEFHICovCi1JbmRleDog Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdmFsdWUuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL3ZhbHVlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcv Z2RiL3ZhbHVlLmMJMjAxMi0wNi0wMiAxOToxMTo1NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi92YWx1ZS5jCTIwMTItMDYtMDIgMTk6NTE6MzAuMDMxMjUyMzE3 ICswMjAwCi1AQCAtMjU5Miw3ICsyNTkyLDggQEAgdmFsdWVfc3RhdGljX2ZpZWxkIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgaQorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdmFsdWUuYwky MDEzLTAxLTE4IDIzOjA3OjAzLjQ5MDM1ODMxOSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL3ZhbHVlLmMJMjAxMy0wMS0xOCAyMzowODoxMC4yODc0NTE1NDMgKzAxMDAKK0BAIC0y NjI0LDcgKzI2MjQsOCBAQCB2YWx1ZV9zdGF0aWNfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLCBp CiAgICAgIHsKICAgICAgY2FzZSBGSUVMRF9MT0NfS0lORF9QSFlTQUREUjoKICAgICAgICByZXR2 YWwgPSB2YWx1ZV9hdF9sYXp5IChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGZpZWxkbm8pLAoKZGlm ZiAtLWdpdCBhL2dkYi1hcmNoZXIucGF0Y2ggYi9nZGItYXJjaGVyLnBhdGNoCmluZGV4IDgwZTNj ZjIuLmQwNGFjMmUgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNoZXIucGF0Y2gKKysrIGIvZ2RiLWFyY2hl ci5wYXRjaApAQCAtMiw0NiArMiwxOCBAQCBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kv UHJvamVjdEFyY2hlcgogaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL0FyY2hlckJyYW5j aE1hbmFnZW1lbnQKIAogR0lUIHNuYXBzaG90OgotY29tbWl0IDg5NzY4NmMwYWVkYjdhNmRhNTli ODIzZjIyYjFkMjRlYzVhMWQyYmEKK2NvbW1pdCBmMWY3NjIzNjFlNWU4YTRmYWJkYWIxNjQ2M2Vj YjFmZDliYTFlNWU5CiAKIGJyYW5jaCBgYXJjaGVyJyAtIHRoZSBtZXJnZSBvZiBicmFuY2hlczoK IGFyY2hlci1qYW5rcmF0b2NodmlsLXZsYQogYXJjaGVyLXRyb21leS1weXRob24KLWFyY2hlci10 cm9tZXktZHd6LW11bHRpZmlsZS1yZWJhc2UgKGJ1dCBmcm9tIHBvc3QtNy41IEZTRiBHREIgY29t bWl0cykKIAogCiBkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmlu Ci1pbmRleCBhNDFjZmY5Li5kNzc4NmE2IDEwMDY0NAoraW5kZXggNzMwNWU2ZC4uZmZmOGNiMiAx MDA2NDQKIC0tLSBhL2dkYi9NYWtlZmlsZS5pbgogKysrIGIvZ2RiL01ha2VmaWxlLmluCi1AQCAt NzA0LDcgKzcwNCw3IEBAIFNGSUxFUyA9IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10eXBlcHJp bnQuYyBhZGEtdmFscHJpbnQuYyBhZGEtdGFza3MuYyBcCi0gCWV4Y2VwdGlvbnMuYyBleHBwcmlu dC5jIFwKLSAJZi1leHAueSBmLWxhbmcuYyBmLXR5cGVwcmludC5jIGYtdmFscHJpbnQuYyBmaWxl c3lzdGVtLmMgXAotIAlmaW5kY21kLmMgZmluZHZhci5jIGZyYW1lLmMgZnJhbWUtYmFzZS5jIGZy YW1lLXVud2luZC5jIFwKLS0JZ2RiYXJjaC5jIGFyY2gtdXRpbHMuYyBnZGJ0eXBlcy5jIGdudS12 Mi1hYmkuYyBnbnUtdjMtYWJpLmMgXAotKwlnZGJhcmNoLmMgYXJjaC11dGlscy5jIGdkYl9iZmQu YyBnZGJ0eXBlcy5jIGdudS12Mi1hYmkuYyBnbnUtdjMtYWJpLmMgXAotIAlnby1leHAueSBnby1s YW5nLmMgZ28tdHlwZXByaW50LmMgZ28tdmFscHJpbnQuYyBcCi0gCWluZi1sb29wLmMgXAotIAlp bmZjYWxsLmMgXAotQEAgLTgyOSw3ICs4MjksNyBAQCBnbnVsaWIvaW1wb3J0L2V4dHJhL3NuaXBw ZXQvd2Fybi1vbi11c2UuaCBcCi0gZ251bGliL2ltcG9ydC9zdGRkZWYuaW4uaCBnbnVsaWIvaW1w b3J0L2ludHR5cGVzLmluLmggaW5saW5lLWZyYW1lLmggc2tpcC5oIFwKLSBjb21tb24vY29tbW9u LXV0aWxzLmggY29tbW9uL3htbC11dGlscy5oIGNvbW1vbi9idWZmZXIuaCBjb21tb24vcHRpZC5o IFwKLSBjb21tb24vZm9ybWF0LmggXAotLWNvbW1vbi9saW51eC1vc2RhdGEuaCBnZGItZGxmY24u aCBhdXRvLWxvYWQuaCBwcm9iZS5oIHN0YXAtcHJvYmUuaAotK2NvbW1vbi9saW51eC1vc2RhdGEu aCBnZGItZGxmY24uaCBhdXRvLWxvYWQuaCBwcm9iZS5oIHN0YXAtcHJvYmUuaCBnZGJfYmZkLmgK LSAKLSAjIEhlYWRlciBmaWxlcyB0aGF0IGFscmVhZHkgaGF2ZSBzcmNkaXIgaW4gdGhlbSwgb3Ig d2hpY2ggYXJlIGluIG9iamRpci4KLSAKLUBAIC04NzksNyArODc5LDcgQEAgQ09NTU9OX09CUyA9 ICQoREVQRklMRVMpICQoQ09ORklHX09CUykgJChZWU9CSikgXAotIAltYWNyb3RhYi5vIG1hY3Jv Y21kLm8gbWFjcm9leHAubyBtYWNyb3Njb3BlLm8gXAotIAltaS1jb21tb24ubyBcCi0gCWV2ZW50 LWxvb3AubyBldmVudC10b3AubyBpbmYtbG9vcC5vIGNvbXBsZXRlci5vIFwKLS0JZ2RiYXJjaC5v IGFyY2gtdXRpbHMubyBnZGJ0eXBlcy5vIG9zYWJpLm8gY29weWluZy5vIFwKLSsJZ2RiYXJjaC5v IGFyY2gtdXRpbHMubyBnZGJ0eXBlcy5vIGdkYl9iZmQubyBvc2FiaS5vIGNvcHlpbmcubyBcCi0g CW1lbWF0dHIubyBtZW0tYnJlYWsubyB0YXJnZXQubyBwYXJzZS5vIGxhbmd1YWdlLm8gYnVpbGRz eW0ubyBcCi0gCWZpbmRjbWQubyBcCi0gCXN0ZC1yZWdzLm8gXAotQEAgLTEzMDcsNiArMTMwNywx MiBAQCBzdGFtcC1oOiAkKHNyY2RpcikvY29uZmlnLmluIGNvbmZpZy5zdGF0dXMKK0BAIC0xMzA4 LDYgKzEzMDgsMTIgQEAgc3RhbXAtaDogJChzcmNkaXIpL2NvbmZpZy5pbiBjb25maWcuc3RhdHVz CiAgCSAgQ09ORklHX0xJTktTPSBcCiAgCSAgJChTSEVMTCkgY29uZmlnLnN0YXR1cwogIApAQCAt NTQsMjkgKzI2LDExIEBAIGluZGV4IGE0MWNmZjkuLmQ3Nzg2YTYgMTAwNjQ0CiAgY29uZmlnLnN0 YXR1czogJChzcmNkaXIpL2NvbmZpZ3VyZSBjb25maWd1cmUudGd0IGNvbmZpZ3VyZS5ob3N0CiAg CSQoU0hFTEwpIGNvbmZpZy5zdGF0dXMgLS1yZWNoZWNrCiAgCi1kaWZmIC0tZ2l0IGEvZ2RiL05F V1MgYi9nZGIvTkVXUwotaW5kZXggYjI4MTgyNC4uNGRhODg2YyAxMDA2NDQKLS0tLSBhL2dkYi9O RVdTCi0rKysgYi9nZGIvTkVXUwotQEAgLTEsNiArMSwxMyBAQAotIAkJV2hhdCBoYXMgY2hhbmdl ZCBpbiBHREI/Ci0gCSAgICAgKE9yZ2FuaXplZCByZWxlYXNlIGJ5IHJlbGVhc2UpCi0gCi0rKioq IENoYW5nZXMgc2luY2UgR0RCIDcuNQotKwotKyogTmV3IGNvbW1hbmRzIChmb3Igc2V0L3Nob3cs IHNlZSAiTmV3IG9wdGlvbnMiIGJlbG93KQotKwotK21haW50IGluZm8gYmZkcwotKyAgTGlzdCB0 aGUgQkZEcyBrbm93biB0byBHREIuCi0rCi0gKioqIENoYW5nZXMgaW4gR0RCIDcuNQotIAotICog R0RCIG5vdyBzdXBwb3J0cyB4MzIgQUJJLiAgVmlzaXQgPGh0dHA6Ly9zaXRlcy5nb29nbGUuY29t L3NpdGUveDMyYWJpLz4KIGRpZmYgLS1naXQgYS9nZGIvYWRhLWxhbmcuYyBiL2dkYi9hZGEtbGFu Zy5jCi1pbmRleCBhYTA5MGFmLi5lNjcyNzMxIDEwMDY0NAoraW5kZXggYjQ4NDlhOS4uYTZlNmNh MiAxMDA2NDQKIC0tLSBhL2dkYi9hZGEtbGFuZy5jCiArKysgYi9nZGIvYWRhLWxhbmcuYwotQEAg LTEyMDM3LDYgKzEyMDM3LDcgQEAgYWRhX29wZXJhdG9yX2xlbmd0aCAoY29uc3Qgc3RydWN0IGV4 cHJlc3Npb24gKmV4cCwgaW50IHBjLCBpbnQgKm9wbGVucCwKK0BAIC0xMjI2Myw2ICsxMjI2Myw3 IEBAIGFkYV9vcGVyYXRvcl9sZW5ndGggKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHAsIGlu dCBwYywgaW50ICpvcGxlbnAsCiAgCiAgc3RhdGljIGludAogIGFkYV9vcGVyYXRvcl9jaGVjayAo c3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKQEAgLTg0LDcgKzM4LDcgQEAgaW5kZXgg YWEwOTBhZi4uZTY3MjczMSAxMDA2NDQKICAJCSAgICBpbnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0YSksCiAgCQkgICAgdm9pZCAqZGF0YSkKICB7 Ci1AQCAtMTIwNTEsMTIgKzEyMDUyLDE1IEBAIGFkYV9vcGVyYXRvcl9jaGVjayAoc3RydWN0IGV4 cHJlc3Npb24gKmV4cCwgaW50IHBvcywKK0BAIC0xMjI3NywxMiArMTIyNzgsMTUgQEAgYWRhX29w ZXJhdG9yX2NoZWNrIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAogIAlicmVhazsK ICAKICAgICAgICBkZWZhdWx0OgpAQCAtMTAyLDU0ICs1Niw4IEBAIGluZGV4IGFhMDkwYWYuLmU2 NzI3MzEgMTAwNjQ0CiAgICAgICAgJiYgKCpvYmpmaWxlX2Z1bmMpIChUWVBFX09CSkZJTEUgKHR5 cGUpLCBkYXRhKSkKICAgICAgcmV0dXJuIDE7CiAgCi1kaWZmIC0tZ2l0IGEvZ2RiL2JmZC10YXJn ZXQuYyBiL2dkYi9iZmQtdGFyZ2V0LmMKLWluZGV4IDY3Mjg4MDAuLjQ1NWQzZTYgMTAwNjQ0Ci0t LS0gYS9nZGIvYmZkLXRhcmdldC5jCi0rKysgYi9nZGIvYmZkLXRhcmdldC5jCi1AQCAtMjEsNiAr MjEsNyBAQAotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVkZSAiYmZkLXRhcmdldC5oIgot ICNpbmNsdWRlICJleGVjLmgiCi0rI2luY2x1ZGUgImdkYl9iZmQuaCIKLSAKLSAvKiBUaGUgb2Jq ZWN0IHRoYXQgaXMgc3RvcmVkIGluIHRoZSB0YXJnZXRfb3BzLT50b19kYXRhIGZpZWxkIGhhcyB0 aGlzCi0gICAgdHlwZS4gICovCi1AQCAtNzAsNyArNzEsNyBAQCB0YXJnZXRfYmZkX3hjbG9zZSAo c3RydWN0IHRhcmdldF9vcHMgKnQsIGludCBxdWl0dGluZykKLSB7Ci0gICBzdHJ1Y3QgdGFyZ2V0 X2JmZF9kYXRhICpkYXRhID0gdC0+dG9fZGF0YTsKLSAKLS0gIGJmZF9jbG9zZSAoZGF0YS0+YmZk KTsKLSsgIGdkYl9iZmRfdW5yZWYgKGRhdGEtPmJmZCk7Ci0gICB4ZnJlZSAoZGF0YS0+dGFibGUu c2VjdGlvbnMpOwotICAgeGZyZWUgKGRhdGEpOwotICAgeGZyZWUgKHQpOwotQEAgLTg0LDYgKzg1 LDcgQEAgdGFyZ2V0X2JmZF9yZW9wZW4gKHN0cnVjdCBiZmQgKmFiZmQpCi0gCi0gICBkYXRhID0g WFpBTExPQyAoc3RydWN0IHRhcmdldF9iZmRfZGF0YSk7Ci0gICBkYXRhLT5iZmQgPSBhYmZkOwot KyAgZ2RiX2JmZF9yZWYgKGFiZmQpOwotICAgYnVpbGRfc2VjdGlvbl90YWJsZSAoYWJmZCwgJmRh dGEtPnRhYmxlLnNlY3Rpb25zLCAmZGF0YS0+dGFibGUuc2VjdGlvbnNfZW5kKTsKLSAKLSAgIHQg PSBYWkFMTE9DIChzdHJ1Y3QgdGFyZ2V0X29wcyk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2JmZC10YXJn ZXQuaCBiL2dkYi9iZmQtdGFyZ2V0LmgKLWluZGV4IDcxMDAxYzUuLjdmNGU2MjggMTAwNjQ0Ci0t LS0gYS9nZGIvYmZkLXRhcmdldC5oCi0rKysgYi9nZGIvYmZkLXRhcmdldC5oCi1AQCAtMjMsOSAr MjMsOSBAQAotIHN0cnVjdCBiZmQ7Ci0gc3RydWN0IHRhcmdldF9vcHM7Ci0gCi0tLyogR2l2ZW4g YW4gZXhpc3RpbmcgQkZELCByZS1vcGVuIGl0IGFzIGEgInN0cnVjdCB0YXJnZXRfb3BzIi4gIE9u Ci0tICAgY2xvc2UsIGl0IHdpbGwgYWxzbyBjbG9zZSB0aGUgY29ycmVzcG9uZGluZyBCRkQgKHdo aWNoIGlzIGxpa2UKLS0gICBmcmVvcGVuIGFuZCBmZG9wZW4pLiAgKi8KLSsvKiBHaXZlbiBhbiBl eGlzdGluZyBCRkQsIHJlLW9wZW4gaXQgYXMgYSAic3RydWN0IHRhcmdldF9vcHMiLiAgVGhpcwot KyAgIGFjcXVpcmVzIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgQkZELiAgVGhpcyByZWZlcmVuY2Ug d2lsbCBiZQotKyAgIHJlbGVhc2VkIHdoZW4gdGhlIHRhcmdldCBpcyBjbG9zZWQuICAqLwotIHN0 cnVjdCB0YXJnZXRfb3BzICp0YXJnZXRfYmZkX3Jlb3BlbiAoc3RydWN0IGJmZCAqYmZkKTsKLSAK LSAjZW5kaWYKIGRpZmYgLS1naXQgYS9nZGIvYmxvY2suYyBiL2dkYi9ibG9jay5jCi1pbmRleCBh MGY4MmVjLi4wOTdkYmY2IDEwMDY0NAoraW5kZXggMjYzOGRlOC4uYjI5NmFlMCAxMDA2NDQKIC0t LSBhL2dkYi9ibG9jay5jCiArKysgYi9nZGIvYmxvY2suYwogQEAgLTY5MiwzICs2OTIsMjEgQEAg YmxvY2tfaXRlcl9tYXRjaF9uZXh0IChjb25zdCBjaGFyICpuYW1lLApAQCAtMTc1LDcgKzgzLDcg QEAgaW5kZXggYTBmODJlYy4uMDk3ZGJmNiAxMDA2NDQKICsgIHJldHVybiBTWU1CT0xfU1lNVEFC IChmdW5jKS0+b2JqZmlsZTsKICt9CiBkaWZmIC0tZ2l0IGEvZ2RiL2Jsb2NrLmggYi9nZGIvYmxv Y2suaAotaW5kZXggOTljNDc4OC4uNmNlYjcwNCAxMDA2NDQKK2luZGV4IDAyZTdlOGIuLjI5MzE0 MDEgMTAwNjQ0CiAtLS0gYS9nZGIvYmxvY2suaAogKysrIGIvZ2RiL2Jsb2NrLmgKIEBAIC0yNzks NCArMjc5LDYgQEAgZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmJsb2NrX2l0ZXJfbWF0Y2hfbmV4dCAo Y29uc3QgY2hhciAqbmFtZSwKQEAgLTE4NiwxMCArOTQsMTAgQEAgaW5kZXggOTljNDc4OC4uNmNl YjcwNCAxMDA2NDQKICsKICAjZW5kaWYgLyogQkxPQ0tfSCAqLwogZGlmZiAtLWdpdCBhL2dkYi9i cmVha3BvaW50LmMgYi9nZGIvYnJlYWtwb2ludC5jCi1pbmRleCA3OGZmZmQzLi4yMjRiYTQ5IDEw MDY0NAoraW5kZXggM2FkOTg4NS4uZTI4YjQ0ZSAxMDA2NDQKIC0tLSBhL2dkYi9icmVha3BvaW50 LmMKICsrKyBiL2dkYi9icmVha3BvaW50LmMKLUBAIC0xNTUxOSw2ICsxNTUxOSwyNCBAQCBhbGxf dHJhY2Vwb2ludHMgKHZvaWQpCitAQCAtMTU2NDEsNiArMTU2NDEsMjQgQEAgYWxsX3RyYWNlcG9p bnRzICh2b2lkKQogICAgcmV0dXJuIHRwX3ZlYzsKICB9CiAgCkBAIC0yMTQsNyArMTIyLDcgQEAg aW5kZXggNzhmZmZkMy4uMjI0YmE0OSAxMDA2NDQKICAMCiAgLyogVGhpcyBoZWxwIHN0cmluZyBp cyB1c2VkIGZvciB0aGUgYnJlYWssIGhicmVhaywgdGJyZWFrIGFuZCB0aGJyZWFrCiAgICAgY29t bWFuZHMuICBJdCBpcyBkZWZpbmVkIGFzIGEgbWFjcm8gdG8gcHJldmVudCBkdXBsaWNhdGlvbi4K LUBAIC0xNjQ4NCw0ICsxNjUwMiw3IEBAIGFnZW50LXByaW50ZiBcInByaW50ZiBmb3JtYXQgc3Ry aW5nXCIsIGFyZzEsIGFyZzIsIGFyZzMsIC4uLiwgYXJnblxuXAorQEAgLTE2NjEyLDQgKzE2NjMw LDcgQEAgYWdlbnQtcHJpbnRmIFwicHJpbnRmIGZvcm1hdCBzdHJpbmdcIiwgYXJnMSwgYXJnMiwg YXJnMywgLi4uLCBhcmduXG5cCiAgICBhdXRvbWF0aWNfaGFyZHdhcmVfYnJlYWtwb2ludHMgPSAx OwogIAogICAgb2JzZXJ2ZXJfYXR0YWNoX2Fib3V0X3RvX3Byb2NlZWQgKGJyZWFrcG9pbnRfYWJv dXRfdG9fcHJvY2VlZCk7CkBAIC0yMjIsODAgKzEzMCwxNSBAQCBpbmRleCA3OGZmZmQzLi4yMjRi YTQ5IDEwMDY0NAogKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAoYnJlYWtwb2ludF90eXBl c19tYXJrX3VzZWQpOwogKyNlbmRpZgogIH0KLWRpZmYgLS1naXQgYS9nZGIvYnVpbGRzeW0uYyBi L2dkYi9idWlsZHN5bS5jCi1pbmRleCBkNTQ3MDEyLi5lNDg4MmZiIDEwMDY0NAotLS0tIGEvZ2Ri L2J1aWxkc3ltLmMKLSsrKyBiL2dkYi9idWlsZHN5bS5jCi1AQCAtOTY2LDExICs5NjYsMTQgQEAg cmVzZXRfc3ltdGFiX2dsb2JhbHMgKHZvaWQpCi0gICAgZmlsZSdzIHRleHQuCi0gCi0gICAgSWYg RVhQQU5EQUJMRSBpcyBub24temVybyB0aGUgU1RBVElDX0JMT0NLIGRpY3Rpb25hcnkgaXMgbWFk ZQotLSAgIGV4cGFuZGFibGUuICAqLwotKyAgIGV4cGFuZGFibGUuCi0rCi0rICAgSWYgUkVRVUlS RUQgaXMgbm9uLXplcm8sIHRoZW4gYSBzeW10YWIgaXMgY3JlYXRlZCBldmVuIGlmIGl0IGRvZXMK LSsgICBub3QgY29udGFpbiBhbnkgc3ltYm9scy4gICovCi0gCi0gc3RydWN0IGJsb2NrICoKLSBl bmRfc3ltdGFiX2dldF9zdGF0aWNfYmxvY2sgKENPUkVfQUREUiBlbmRfYWRkciwgc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCi0tCQkJICAgICBpbnQgZXhwYW5kYWJsZSkKLSsJCQkgICAgIGludCBl eHBhbmRhYmxlLCBpbnQgcmVxdWlyZWQpCi0gewotICAgLyogRmluaXNoIHRoZSBsZXhpY2FsIGNv bnRleHQgb2YgdGhlIGxhc3QgZnVuY3Rpb24gaW4gdGhlIGZpbGU7IHBvcAotICAgICAgdGhlIGNv bnRleHQgc3RhY2suICAqLwotQEAgLTEwMzgsNyArMTA0MSw4IEBAIGVuZF9zeW10YWJfZ2V0X3N0 YXRpY19ibG9jayAoQ09SRV9BRERSIGVuZF9hZGRyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwK LSAgIGNsZWFudXBfdW5kZWZpbmVkX3N0YWJzX3R5cGVzIChvYmpmaWxlKTsKLSAgIGZpbmlzaF9n bG9iYWxfc3RhYnMgKG9iamZpbGUpOwotIAotLSAgaWYgKHBlbmRpbmdfYmxvY2tzID09IE5VTEwK LSsgIGlmICghcmVxdWlyZWQKLSsgICAgICAmJiBwZW5kaW5nX2Jsb2NrcyA9PSBOVUxMCi0gICAg ICAgJiYgZmlsZV9zeW1ib2xzID09IE5VTEwKLSAgICAgICAmJiBnbG9iYWxfc3ltYm9scyA9PSBO VUxMCi0gICAgICAgJiYgaGF2ZV9saW5lX251bWJlcnMgPT0gMAotQEAgLTEyOTYsNyArMTMwMCw3 IEBAIGVuZF9zeW10YWIgKENPUkVfQUREUiBlbmRfYWRkciwgc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIGludCBzZWN0aW9uKQotIHsKLSAgIHN0cnVjdCBibG9jayAqc3RhdGljX2Jsb2NrOwotIAot LSAgc3RhdGljX2Jsb2NrID0gZW5kX3N5bXRhYl9nZXRfc3RhdGljX2Jsb2NrIChlbmRfYWRkciwg b2JqZmlsZSwgMCk7Ci0rICBzdGF0aWNfYmxvY2sgPSBlbmRfc3ltdGFiX2dldF9zdGF0aWNfYmxv Y2sgKGVuZF9hZGRyLCBvYmpmaWxlLCAwLCAwKTsKLSAgIHJldHVybiBlbmRfc3ltdGFiX2Zyb21f c3RhdGljX2Jsb2NrIChzdGF0aWNfYmxvY2ssIG9iamZpbGUsIHNlY3Rpb24sIDApOwotIH0KLSAK LUBAIC0xMzA4LDcgKzEzMTIsNyBAQCBlbmRfZXhwYW5kYWJsZV9zeW10YWIgKENPUkVfQUREUiBl bmRfYWRkciwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gewotICAgc3RydWN0IGJsb2NrICpz dGF0aWNfYmxvY2s7Ci0gCi0tICBzdGF0aWNfYmxvY2sgPSBlbmRfc3ltdGFiX2dldF9zdGF0aWNf YmxvY2sgKGVuZF9hZGRyLCBvYmpmaWxlLCAxKTsKLSsgIHN0YXRpY19ibG9jayA9IGVuZF9zeW10 YWJfZ2V0X3N0YXRpY19ibG9jayAoZW5kX2FkZHIsIG9iamZpbGUsIDEsIDApOwotICAgcmV0dXJu IGVuZF9zeW10YWJfZnJvbV9zdGF0aWNfYmxvY2sgKHN0YXRpY19ibG9jaywgb2JqZmlsZSwgc2Vj dGlvbiwgMSk7Ci0gfQotIAotZGlmZiAtLWdpdCBhL2dkYi9idWlsZHN5bS5oIGIvZ2RiL2J1aWxk c3ltLmgKLWluZGV4IDE2MmVlOGMuLjMzYjM0YzggMTAwNjQ0Ci0tLS0gYS9nZGIvYnVpbGRzeW0u aAotKysrIGIvZ2RiL2J1aWxkc3ltLmgKLUBAIC0yNjAsNyArMjYwLDggQEAgZXh0ZXJuIGNoYXIg KnBvcF9zdWJmaWxlICh2b2lkKTsKLSAKLSBleHRlcm4gc3RydWN0IGJsb2NrICplbmRfc3ltdGFi X2dldF9zdGF0aWNfYmxvY2sgKENPUkVfQUREUiBlbmRfYWRkciwKLSAJCQkJCQkgIHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAotLQkJCQkJCSAgaW50IGV4cGFuZGFibGUpOwotKwkJCQkJCSAgaW50 IGV4cGFuZGFibGUsCi0rCQkJCQkJICBpbnQgcmVxdWlyZWQpOwotIAotIGV4dGVybiBzdHJ1Y3Qg c3ltdGFiICplbmRfc3ltdGFiX2Zyb21fc3RhdGljX2Jsb2NrIChzdHJ1Y3QgYmxvY2sgKnN0YXRp Y19ibG9jaywKLSAJCQkJCQkgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiBkaWZmIC0tZ2l0 IGEvZ2RiL2MtdHlwZXByaW50LmMgYi9nZGIvYy10eXBlcHJpbnQuYwotaW5kZXggYTU4OTJiNS4u Mjk0NGMyZCAxMDA2NDQKK2luZGV4IGE2ZGIxNjIuLmRkZmM2YTkgMTAwNjQ0CiAtLS0gYS9nZGIv Yy10eXBlcHJpbnQuYwogKysrIGIvZ2RiL2MtdHlwZXByaW50LmMKLUBAIC02MjQsOSArNjI0LDE0 IEBAIGNfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUsCi0gCSAg ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSIpOworQEAgLTY5Miw3ICs2OTIsMTMgQEAgY190 eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwKICAKLSAJZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAiWyIpOworIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sIChp c192ZWN0b3IgPworIAkJCQkgICAiIF9fYXR0cmlidXRlX18gKCh2ZWN0b3Jfc2l6ZSgiIDogIlsi KSk7CiAtCWlmIChnZXRfYXJyYXlfYm91bmRzICh0eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3Vu ZCkpCi0tCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQiLCAKLS0JCQkgICAgKGludCkg KGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKSk7CiArCWlmIChUWVBFX1JBTkdFX0RBVEEgKFRZ UEVfSU5ERVhfVFlQRSAodHlwZSkpLT5oaWdoLmtpbmQKICsJICAgICE9IFJBTkdFX0JPVU5EX0tJ TkRfQ09OU1RBTlQpCiArCSAgewpAQCAtMzAzLDUxNiArMTQ2LDE0IEBAIGluZGV4IGE1ODkyYjUu LjI5NDRjMmQgMTAwNjQ0CiArCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ2YXJpYWJs ZSIpOwogKwkgIH0KICsJZWxzZSBpZiAoZ2V0X2FycmF5X2JvdW5kcyAodHlwZSwgJmxvd19ib3Vu ZCwgJmhpZ2hfYm91bmQpKQotKwkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVkIiwgKGlu dCkgKGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKSk7Ci0gCWZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgIl0iKTsKLSAKLSAJY190eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdF VF9UWVBFICh0eXBlKSwgc3RyZWFtLAotZGlmZiAtLWdpdCBhL2dkYi9jYy13aXRoLWR3ei5zaCBi L2dkYi9jYy13aXRoLWR3ei5zaAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1Ci1pbmRleCBmNjZk ZWIxLi4wMDAwMDAwCi0tLS0gYS9nZGIvY2Mtd2l0aC1kd3ouc2gKLSsrKyAvZGV2L251bGwKLUBA IC0xLDgwICswLDAgQEAKLS0jISAvYmluL3NoCi0tIyBXcmFwcGVyIGFyb3VuZCBnY2MgdG8gcnVu ICdkd3onIHdoZW4gcnVubmluZyB0aGUgdGVzdHN1aXRlLgotLQotLSMgQ29weXJpZ2h0IChDKSAy MDEwLTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot LSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLS0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0tIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotLSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tIwotLSMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0j IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgotLQotLSMgVGhpcyBwcm9ncmFtIHJlcXVpcmVzIGR3eiBpbiBhZGRpdGlv biB0byBnY2MuCi0tIwotLSMgRXhhbXBsZSB1c2FnZToKLS0jCi0tIyBiYXNoJCBjZCAkb2JqZGly L2dkYi90ZXN0c3VpdGUKLS0jIGJhc2gkIHJ1bnRlc3QgXAotLSMgICBDQ19GT1JfVEFSR0VUPSIv YmluL3NoICRzcmNkaXIvY2Mtd2l0aC1kd3ouc2ggZ2NjIiBcCi0tIyAgIENYWF9GT1JfVEFSR0VU PSIvYmluL3NoICRzcmNkaXIvY2Mtd2l0aC1kd3ouc2ggZysrIgotLSMKLS0KLS1teW5hbWU9Y2Mt d2l0aC1kd3ouc2gKLS0KLS1EV1o9JHtEV1o6LWR3en0KLS0KLS1oYXZlX2xpbms9dW5rbm93bgot LW5leHRfaXNfb3V0cHV0X2ZpbGU9bm8KLS1vdXRwdXRfZmlsZT1hLm91dAotLQotLWZvciBhcmcg aW4gIiRAIgotLWRvCi0tICAgIGlmIFsgIiRuZXh0X2lzX291dHB1dF9maWxlIiA9ICJ5ZXMiIF0K LS0gICAgdGhlbgotLQlvdXRwdXRfZmlsZT0iJGFyZyIKLS0JbmV4dF9pc19vdXRwdXRfZmlsZT1u bwotLQljb250aW51ZQotLSAgICBmaQotLQotLSAgICAjIFBvb3IgbWFuJ3MgZ2NjIGFyZ3VtZW50 IHBhcnNlci4KLS0gICAgIyBXZSBkb24ndCBuZWVkIHRvIGhhbmRsZSBhbGwgYXJndW1lbnRzLCB3 ZSBqdXN0IG5lZWQgdG8ga25vdyBpZiB3ZSdyZQotLSAgICAjIGRvaW5nIGEgbGluayBhbmQgd2hh dCB0aGUgb3V0cHV0IGZpbGUgaXMuCi0tICAgICMgSXQncyBub3QgcGVyZmVjdCwgYnV0IGl0IHNl ZW1zIHRvIHdvcmsgd2VsbCBlbm91Z2ggZm9yIHRoZSB0YXNrIGF0IGhhbmQuCi0tICAgIGNhc2Ug IiRhcmciIGluCi0tICAgICItYyIpIGhhdmVfbGluaz1ubyA7OwotLSAgICAiLUUiKSBoYXZlX2xp bms9bm8gOzsKLS0gICAgIi1TIikgaGF2ZV9saW5rPW5vIDs7Ci0tICAgICItbyIpIG5leHRfaXNf b3V0cHV0X2ZpbGU9eWVzIDs7Ci0tICAgIGVzYWMKLS1kb25lCi0tCi0taWYgWyAiJG5leHRfaXNf b3V0cHV0X2ZpbGUiID0gInllcyIgXQotLXRoZW4KLS0gICAgZWNobyAiJG15bmFtZTogVW5hYmxl IHRvIGZpbmQgb3V0cHV0IGZpbGUiID4mMgotLSAgICBleGl0IDEKLS1maQotLQotLWlmIFsgIiRo YXZlX2xpbmsiID0gIm5vIiBdCi0tdGhlbgotLSAgICAiJEAiCi0tICAgIGV4aXQgJD8KLS1maQot LQotLSIkQCIKLS1yYz0kPwotLVsgJHJjICE9IDAgXSAmJiBleGl0ICRyYwotLWlmIFsgISAtZiAi JG91dHB1dF9maWxlIiBdCi0tdGhlbgotLSAgICBlY2hvICIkbXluYW1lOiBJbnRlcm5hbCBlcnJv cjogJG91dHB1dF9maWxlIG1pc3NpbmcuIiA+JjIKLS0gICAgZXhpdCAxCi0tZmkKLS0KLS0kRFda ICIkb3V0cHV0X2ZpbGUiID4gL2Rldi9udWxsIDI+JjEKLS0KLS1leGl0IDAKLWRpZmYgLS1naXQg YS9nZGIvY2Mtd2l0aC1pbmRleC5zaCBiL2dkYi9jYy13aXRoLWluZGV4LnNoCi1kZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDY0NGJhMzQuLjAwMDAwMDAKLS0tLSBhL2dkYi9jYy13aXRo LWluZGV4LnNoCi0rKysgL2Rldi9udWxsCi1AQCAtMSwxMjYgKzAsMCBAQAotLSMhIC9iaW4vc2gK LS0jIFdyYXBwZXIgYXJvdW5kIGdjYyB0byBhZGQgdGhlIC5nZGJfaW5kZXggc2VjdGlvbiB3aGVu IHJ1bm5pbmcgdGhlIHRlc3RzdWl0ZS4KLS0KLS0jIENvcHlyaWdodCAoQykgMjAxMC0yMDEyIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLSMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KLS0KLS0jIFRoaXMgcHJvZ3JhbSByZXF1aXJlcyBnZGIgYW5kIG9iamNvcHkgaW4gYWRkaXRp b24gdG8gZ2NjLgotLSMgVGhlIGRlZmF1bHQgdmFsdWVzIGFyZSBnZGIgZnJvbSB0aGUgYnVpbGQg dHJlZSBhbmQgb2JqY29weSBmcm9tICRQQVRILgotLSMgVGhleSBtYXkgYmUgb3ZlcnJpZGRlbiBi eSBzZXR0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyBHREIgYW5kIE9CSkNPUFkKLS0jIHJlc3Bl Y3RpdmVseS4KLS0jIFdlIGFzc3VtZSB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgZWl0aGVyICRv YmovZ2RiIG9yICRvYmovZ2RiL3Rlc3RzdWl0ZS4KLS0jCi0tIyBFeGFtcGxlIHVzYWdlOgotLSMK LS0jIGJhc2gkIGNkICRvYmpkaXIvZ2RiL3Rlc3RzdWl0ZQotLSMgYmFzaCQgcnVudGVzdCBcCi0t IyAgIENDX0ZPUl9UQVJHRVQ9Ii9iaW4vc2ggJHNyY2Rpci9jYy13aXRoLWluZGV4LnNoIGdjYyIg XAotLSMgICBDWFhfRk9SX1RBUkdFVD0iL2Jpbi9zaCAkc3JjZGlyL2NjLXdpdGgtaW5kZXguc2gg ZysrIgotLSMKLS0jIEZvciBkb2N1bWVudGF0aW9uIG9uIGluZGV4IGZpbGVzOiBpbmZvIC1mIGdk Yi5pbmZvIC1uICJJbmRleCBGaWxlcyIKLS0KLS1teW5hbWU9Y2Mtd2l0aC1pbmRleC5zaAotLQot LWlmIFsgLXogIiRHREIiIF0KLS10aGVuCi0tICAgIGlmIFsgLWYgLi9nZGIgXQotLSAgICB0aGVu Ci0tCUdEQj0iLi9nZGIiCi0tICAgIGVsaWYgWyAtZiAuLi9nZGIgXQotLSAgICB0aGVuCi0tCUdE Qj0iLi4vZ2RiIgotLSAgICBlbGlmIFsgLWYgLi4vLi4vZ2RiIF0KLS0gICAgdGhlbgotLQlHREI9 Ii4uLy4uL2dkYiIKLS0gICAgZWxzZQotLQllY2hvICIkbXluYW1lOiB1bmFibGUgdG8gZmluZCB1 c2FibGUgZ2RiIiA+JjIKLS0JZXhpdCAxCi0tICAgIGZpCi0tZmkKLS0KLS1PQkpDT1BZPSR7T0JK Q09QWTotb2JqY29weX0KLS0KLS1oYXZlX2xpbms9dW5rbm93bgotLW5leHRfaXNfb3V0cHV0X2Zp bGU9bm8KLS1vdXRwdXRfZmlsZT1hLm91dAotLQotLWZvciBhcmcgaW4gIiRAIgotLWRvCi0tICAg IGlmIFsgIiRuZXh0X2lzX291dHB1dF9maWxlIiA9ICJ5ZXMiIF0KLS0gICAgdGhlbgotLQlvdXRw dXRfZmlsZT0iJGFyZyIKLS0JbmV4dF9pc19vdXRwdXRfZmlsZT1ubwotLQljb250aW51ZQotLSAg ICBmaQotLQotLSAgICAjIFBvb3IgbWFuJ3MgZ2NjIGFyZ3VtZW50IHBhcnNlci4KLS0gICAgIyBX ZSBkb24ndCBuZWVkIHRvIGhhbmRsZSBhbGwgYXJndW1lbnRzLCB3ZSBqdXN0IG5lZWQgdG8ga25v dyBpZiB3ZSdyZQotLSAgICAjIGRvaW5nIGEgbGluayBhbmQgd2hhdCB0aGUgb3V0cHV0IGZpbGUg aXMuCi0tICAgICMgSXQncyBub3QgcGVyZmVjdCwgYnV0IGl0IHNlZW1zIHRvIHdvcmsgd2VsbCBl bm91Z2ggZm9yIHRoZSB0YXNrIGF0IGhhbmQuCi0tICAgIGNhc2UgIiRhcmciIGluCi0tICAgICIt YyIpIGhhdmVfbGluaz1ubyA7OwotLSAgICAiLUUiKSBoYXZlX2xpbms9bm8gOzsKLS0gICAgIi1T IikgaGF2ZV9saW5rPW5vIDs7Ci0tICAgICItbyIpIG5leHRfaXNfb3V0cHV0X2ZpbGU9eWVzIDs7 Ci0tICAgIGVzYWMKLS1kb25lCi0tCi0taWYgWyAiJG5leHRfaXNfb3V0cHV0X2ZpbGUiID0gInll cyIgXQotLXRoZW4KLS0gICAgZWNobyAiJG15bmFtZTogVW5hYmxlIHRvIGZpbmQgb3V0cHV0IGZp bGUiID4mMgotLSAgICBleGl0IDEKLS1maQotLQotLWlmIFsgIiRoYXZlX2xpbmsiID0gIm5vIiBd Ci0tdGhlbgotLSAgICAiJEAiCi0tICAgIGV4aXQgJD8KLS1maQotLQotLWluZGV4X2ZpbGU9IiR7 b3V0cHV0X2ZpbGV9LmdkYi1pbmRleCIKLS1pZiBbIC1mICIkaW5kZXhfZmlsZSIgXQotLXRoZW4K LS0gICAgZWNobyAiJG15bmFtZTogSW5kZXggZmlsZSAkaW5kZXhfZmlsZSBleGlzdHMsIHdvbid0 IGNsb2JiZXIuIiA+JjIKLS0gICAgZXhpdCAxCi0tZmkKLS0KLS1vdXRwdXRfZGlyPSIke291dHB1 dF9maWxlJS8qfSIKLS1bICIkb3V0cHV0X2RpciIgPSAiJG91dHB1dF9maWxlIiBdICYmIG91dHB1 dF9kaXI9Ii4iCi0tCi0tIiRAIgotLXJjPSQ/Ci0tWyAkcmMgIT0gMCBdICYmIGV4aXQgJHJjCi0t aWYgWyAhIC1mICIkb3V0cHV0X2ZpbGUiIF0KLS10aGVuCi0tICAgIGVjaG8gIiRteW5hbWU6IElu dGVybmFsIGVycm9yOiAkb3V0cHV0X2ZpbGUgbWlzc2luZy4iID4mMgotLSAgICBleGl0IDEKLS1m aQotLQotLSRHREIgLS1iYXRjaC1zaWxlbnQgLW54IC1leCAic2V0IGF1dG8tbG9hZCBubyIgLWV4 ICJmaWxlICRvdXRwdXRfZmlsZSIgLWV4ICJzYXZlIGdkYi1pbmRleCAkb3V0cHV0X2RpciIKLS1y Yz0kPwotLVsgJHJjICE9IDAgXSAmJiBleGl0ICRyYwotLQotLSMgR0RCIG1pZ2h0IG5vdCBhbHdh eXMgY3JlYXRlIGFuIGluZGV4LiAgQ29wZS4KLS1pZiBbIC1mICIkaW5kZXhfZmlsZSIgXQotLXRo ZW4KLS0gICAgJE9CSkNPUFkgLS1hZGQtc2VjdGlvbiAuZ2RiX2luZGV4PSIkaW5kZXhfZmlsZSIg XAotLQktLXNldC1zZWN0aW9uLWZsYWdzIC5nZGJfaW5kZXg9cmVhZG9ubHkgXAotLQkiJG91dHB1 dF9maWxlIiAiJG91dHB1dF9maWxlIgotLSAgICByYz0kPwotLWVsc2UKLS0gICAgcmM9MAotLWZp Ci0tCi0tcm0gLWYgIiRpbmRleF9maWxlIgotLWV4aXQgJHJjCi1kaWZmIC0tZ2l0IGEvZ2RiL2Ns aS9jbGktZHVtcC5jIGIvZ2RiL2NsaS9jbGktZHVtcC5jCi1pbmRleCA0YThiNWQxLi43MzQxZjAw IDEwMDY0NAotLS0tIGEvZ2RiL2NsaS9jbGktZHVtcC5jCi0rKysgYi9nZGIvY2xpL2NsaS1kdW1w LmMKLUBAIC0zMiw2ICszMiw3IEBACi0gI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCi0g I2luY2x1ZGUgImdkYmNvcmUuaCIKLSAjaW5jbHVkZSAiY2xpL2NsaS11dGlscy5oIgotKyNpbmNs dWRlICJnZGJfYmZkLmgiCi0gCi0gI2RlZmluZSBYTUFMTE9DKFRZUEUpICgoVFlQRSopIHhtYWxs b2MgKHNpemVvZiAoVFlQRSkpKQotIAotQEAgLTExMSwxMiArMTEyLDEyIEBAIGJmZF9vcGVucl93 aXRoX2NsZWFudXAgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICp0YXJnZXQpCi0g ewotICAgYmZkICppYmZkOwotIAotLSAgaWJmZCA9IGJmZF9vcGVuciAoZmlsZW5hbWUsIHRhcmdl dCk7Ci0rICBpYmZkID0gZ2RiX2JmZF9vcGVuciAoZmlsZW5hbWUsIHRhcmdldCk7Ci0gICBpZiAo aWJmZCA9PSBOVUxMKQotICAgICBlcnJvciAoXygiRmFpbGVkIHRvIG9wZW4gJXM6ICVzLiIpLCBm aWxlbmFtZSwgCi0gCSAgIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKLSAKLS0gIG1h a2VfY2xlYW51cF9iZmRfY2xvc2UgKGliZmQpOwotKyAgbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAo aWJmZCk7Ci0gICBpZiAoIWJmZF9jaGVja19mb3JtYXQgKGliZmQsIGJmZF9vYmplY3QpKQotICAg ICBlcnJvciAoXygiJyVzJyBpcyBub3QgYSByZWNvZ25pemVkIGZpbGUgZm9ybWF0LiIpLCBmaWxl bmFtZSk7Ci0gCi1AQCAtMTMxLDExICsxMzIsMTEgQEAgYmZkX29wZW53X3dpdGhfY2xlYW51cCAo Y29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCwKLSAKLSAgIGlmICgqbW9k ZSA9PSAndycpCS8qIFdyaXRlOiBjcmVhdGUgbmV3IGZpbGUgKi8KLSAgICAgewotLSAgICAgIG9i ZmQgPSBiZmRfb3BlbncgKGZpbGVuYW1lLCB0YXJnZXQpOwotKyAgICAgIG9iZmQgPSBnZGJfYmZk X29wZW53IChmaWxlbmFtZSwgdGFyZ2V0KTsKLSAgICAgICBpZiAob2JmZCA9PSBOVUxMKQotIAll cnJvciAoXygiRmFpbGVkIHRvIG9wZW4gJXM6ICVzLiIpLCBmaWxlbmFtZSwgCi0gCSAgICAgICBi ZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0tICAgICAgbWFrZV9jbGVhbnVwX2JmZF9j bG9zZSAob2JmZCk7Ci0rICAgICAgbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAob2JmZCk7Ci0gICAg ICAgaWYgKCFiZmRfc2V0X2Zvcm1hdCAob2JmZCwgYmZkX29iamVjdCkpCi0gCWVycm9yIChfKCJi ZmRfb3Blbndfd2l0aF9jbGVhbnVwOiAlcy4iKSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAo KSkpOwotICAgICB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL2NvZmZyZWFkLmMgYi9nZGIvY29mZnJlYWQu YwotaW5kZXggYjBhOGI4Mi4uMGM3ZTZkOSAxMDA2NDQKLS0tLSBhL2dkYi9jb2ZmcmVhZC5jCi0r KysgYi9nZGIvY29mZnJlYWQuYwotQEAgLTY1MywxMyArNjUzLDE0IEBAIGNvZmZfc3ltZmlsZV9y ZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3MpCi0gICAgICAg Y2hhciAqZGVidWdmaWxlOwotIAotICAgICAgIGRlYnVnZmlsZSA9IGZpbmRfc2VwYXJhdGVfZGVi dWdfZmlsZV9ieV9kZWJ1Z2xpbmsgKG9iamZpbGUpOwotKyAgICAgIG1ha2VfY2xlYW51cCAoeGZy ZWUsIGRlYnVnZmlsZSk7Ci0gCi0gICAgICAgaWYgKGRlYnVnZmlsZSkKLSAJewotIAkgIGJmZCAq YWJmZCA9IHN5bWZpbGVfYmZkX29wZW4gKGRlYnVnZmlsZSk7Ci0gCi0rCSAgbWFrZV9jbGVhbnVw X2JmZF91bnJlZiAoYWJmZCk7Ci0gCSAgc3ltYm9sX2ZpbGVfYWRkX3NlcGFyYXRlIChhYmZkLCBz eW1maWxlX2ZsYWdzLCBvYmpmaWxlKTsKLS0JICB4ZnJlZSAoZGVidWdmaWxlKTsKLSAJfQotICAg ICB9Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbnRyaWIvY2Mtd2l0aC10d2Vha3Muc2ggYi9nZGIv Y29udHJpYi9jYy13aXRoLXR3ZWFrcy5zaAotbmV3IGZpbGUgbW9kZSAxMDA3NTUKLWluZGV4IDAw MDAwMDAuLjdkNzkzMmMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9jb250cmliL2NjLXdpdGgt dHdlYWtzLnNoCi1AQCAtMCwwICsxLDE2MiBAQAotKyMhIC9iaW4vc2gKLSsjIFdyYXBwZXIgYXJv dW5kIGdjYyB0byB0d2VhayB0aGUgb3V0cHV0IGluIHZhcmlvdXMgd2F5cyB3aGVuIHJ1bm5pbmcK LSsjIHRoZSB0ZXN0c3VpdGUuCi0rCi0rIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMiBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwot KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0r Ci0rIyBUaGlzIHByb2dyYW0gcmVxdWlyZXMgZ2RiIGFuZCBvYmpjb3B5IGluIGFkZGl0aW9uIHRv IGdjYy4KLSsjIFRoZSBkZWZhdWx0IHZhbHVlcyBhcmUgZ2RiIGZyb20gdGhlIGJ1aWxkIHRyZWUg YW5kIG9iamNvcHkgZnJvbSAkUEFUSC4KLSsjIFRoZXkgbWF5IGJlIG92ZXJyaWRkZW4gYnkgc2V0 dGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgR0RCIGFuZCBPQkpDT1BZCi0rIyByZXNwZWN0aXZl bHkuCi0rIyBXZSBhc3N1bWUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIGVpdGhlciAkb2JqL2dk YiBvciAkb2JqL2dkYi90ZXN0c3VpdGUuCi0rIwotKyMgRXhhbXBsZSB1c2FnZToKLSsjCi0rIyBi YXNoJCBjZCAkb2JqZGlyL2dkYi90ZXN0c3VpdGUKLSsjIGJhc2gkIHJ1bnRlc3QgXAotKyMgICBD Q19GT1JfVEFSR0VUPSIvYmluL3NoICRzcmNkaXIvZ2RiL2NvbnRyaWIvY2Mtd2l0aC10d2Vha3Mu c2ggQVJHUyBnY2MiIFwKLSsjICAgQ1hYX0ZPUl9UQVJHRVQ9Ii9iaW4vc2ggJHNyY2Rpci9nZGIv Y29udHJpYi9jYy13aXRoLXR3ZWFrcy5zaCBBUkdTIGcrKyIKLSsjCi0rIyBGb3IgZG9jdW1lbnRh dGlvbiBvbiBpbmRleCBmaWxlczogaW5mbyAtZiBnZGIuaW5mbyAtbiAiSW5kZXggRmlsZXMiCi0r IyBGb3IgaW5mb3JtYXRpb24gYWJvdXQgJ2R3eicsIHNlZSB0aGUgYW5ub3VuY2VtZW50OgotKyMg ICAgIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MvMjAxMi0wNC9tc2cwMDY4Ni5odG1sCi0rIyAo TW9yZSBkb2N1bWVudGF0aW9uIGlzIHRvIGNvbWUuKQotKwotKyMgQVJHUyBkZXRlcm1pbmUgd2hh dCBpcyBkb25lLiAgVGhleSBjYW4gYmU6Ci0rIyAteiBjb21wcmVzcyB1c2luZyBkd3oKLSsjIC1t IGNvbXByZXNzIHVzaW5nIGR3eiAtbQotKyMgLWkgbWFrZSBhbiBpbmRleAotKyMgSWYgbm90aGlu ZyBpcyBnaXZlbiwgbm8gY2hhbmdlcyBhcmUgbWFkZQotKwotK215bmFtZT1jYy13aXRoLXR3ZWFr cy5zaAotKwotK2lmIFsgLXogIiRHREIiIF0KLSt0aGVuCi0rICAgIGlmIFsgLWYgLi9nZGIgXQot KyAgICB0aGVuCi0rCUdEQj0iLi9nZGIiCi0rICAgIGVsaWYgWyAtZiAuLi9nZGIgXQotKyAgICB0 aGVuCi0rCUdEQj0iLi4vZ2RiIgotKyAgICBlbGlmIFsgLWYgLi4vLi4vZ2RiIF0KLSsgICAgdGhl bgotKwlHREI9Ii4uLy4uL2dkYiIKLSsgICAgZWxzZQotKwllY2hvICIkbXluYW1lOiB1bmFibGUg dG8gZmluZCB1c2FibGUgZ2RiIiA+JjIKLSsJZXhpdCAxCi0rICAgIGZpCi0rZmkKLSsKLStPQkpD T1BZPSR7T0JKQ09QWTotb2JqY29weX0KLSsKLStEV1o9JHtEV1o6LWR3en0KLSsKLStoYXZlX2xp bms9dW5rbm93bgotK25leHRfaXNfb3V0cHV0X2ZpbGU9bm8KLStvdXRwdXRfZmlsZT1hLm91dAot KwotK3dhbnRfaW5kZXg9ZmFsc2UKLSt3YW50X2R3ej1mYWxzZQotK3dhbnRfbXVsdGk9ZmFsc2UK LSsKLSt3aGlsZSBbICQjIC1ndCAwIF07IGRvCi0rICAgIGNhc2UgIiQxIiBpbgotKwkteikgd2Fu dF9kd3o9dHJ1ZSA7OwotKwktaSkgd2FudF9pbmRleD10cnVlIDs7Ci0rCS1tKSB3YW50X211bHRp PXRydWUgOzsKLSsJKikgYnJlYWsgOzsKLSsgICAgZXNhYwotKyAgICBzaGlmdAotK2RvbmUKLSsK LStmb3IgYXJnIGluICIkQCIKLStkbwotKyAgICBpZiBbICIkbmV4dF9pc19vdXRwdXRfZmlsZSIg PSAieWVzIiBdCi0rICAgIHRoZW4KLSsJb3V0cHV0X2ZpbGU9IiRhcmciCi0rCW5leHRfaXNfb3V0 cHV0X2ZpbGU9bm8KLSsJY29udGludWUKLSsgICAgZmkKLSsKLSsgICAgIyBQb29yIG1hbidzIGdj YyBhcmd1bWVudCBwYXJzZXIuCi0rICAgICMgV2UgZG9uJ3QgbmVlZCB0byBoYW5kbGUgYWxsIGFy Z3VtZW50cywgd2UganVzdCBuZWVkIHRvIGtub3cgaWYgd2UncmUKLSsgICAgIyBkb2luZyBhIGxp bmsgYW5kIHdoYXQgdGhlIG91dHB1dCBmaWxlIGlzLgotKyAgICAjIEl0J3Mgbm90IHBlcmZlY3Qs IGJ1dCBpdCBzZWVtcyB0byB3b3JrIHdlbGwgZW5vdWdoIGZvciB0aGUgdGFzayBhdCBoYW5kLgot KyAgICBjYXNlICIkYXJnIiBpbgotKyAgICAiLWMiKSBoYXZlX2xpbms9bm8gOzsKLSsgICAgIi1F IikgaGF2ZV9saW5rPW5vIDs7Ci0rICAgICItUyIpIGhhdmVfbGluaz1ubyA7OwotKyAgICAiLW8i KSBuZXh0X2lzX291dHB1dF9maWxlPXllcyA7OwotKyAgICBlc2FjCi0rZG9uZQotKwotK2lmIFsg IiRuZXh0X2lzX291dHB1dF9maWxlIiA9ICJ5ZXMiIF0KLSt0aGVuCi0rICAgIGVjaG8gIiRteW5h bWU6IFVuYWJsZSB0byBmaW5kIG91dHB1dCBmaWxlIiA+JjIKLSsgICAgZXhpdCAxCi0rZmkKLSsK LStpZiBbICIkaGF2ZV9saW5rIiA9ICJubyIgXQotK3RoZW4KLSsgICAgIiRAIgotKyAgICBleGl0 ICQ/Ci0rZmkKLSsKLStpbmRleF9maWxlPSIke291dHB1dF9maWxlfS5nZGItaW5kZXgiCi0raWYg WyAiJHdhbnRfaW5kZXgiID0gdHJ1ZSBdICYmIFsgLWYgIiRpbmRleF9maWxlIiBdCi0rdGhlbgot KyAgICBlY2hvICIkbXluYW1lOiBJbmRleCBmaWxlICRpbmRleF9maWxlIGV4aXN0cywgd29uJ3Qg Y2xvYmJlci4iID4mMgotKyAgICBleGl0IDEKLStmaQotKwotK291dHB1dF9kaXI9IiR7b3V0cHV0 X2ZpbGUlLyp9IgotK1sgIiRvdXRwdXRfZGlyIiA9ICIkb3V0cHV0X2ZpbGUiIF0gJiYgb3V0cHV0 X2Rpcj0iLiIKLSsKLSsiJEAiCi0rcmM9JD8KLStbICRyYyAhPSAwIF0gJiYgZXhpdCAkcmMKLStp ZiBbICEgLWYgIiRvdXRwdXRfZmlsZSIgXQotK3RoZW4KLSsgICAgZWNobyAiJG15bmFtZTogSW50 ZXJuYWwgZXJyb3I6ICRvdXRwdXRfZmlsZSBtaXNzaW5nLiIgPiYyCi0rICAgIGV4aXQgMQotK2Zp Ci0rCi0raWYgWyAiJHdhbnRfaW5kZXgiID0gdHJ1ZSBdOyB0aGVuCi0rICAgICRHREIgLS1iYXRj aC1zaWxlbnQgLW54IC1leCAic2V0IGF1dG8tbG9hZCBubyIgLWV4ICJmaWxlICRvdXRwdXRfZmls ZSIgLWV4ICJzYXZlIGdkYi1pbmRleCAkb3V0cHV0X2RpciIKLSsgICAgcmM9JD8KLSsgICAgWyAk cmMgIT0gMCBdICYmIGV4aXQgJHJjCi0rCi0rICAgICMgR0RCIG1pZ2h0IG5vdCBhbHdheXMgY3Jl YXRlIGFuIGluZGV4LiAgQ29wZS4KLSsgICAgaWYgWyAtZiAiJGluZGV4X2ZpbGUiIF0KLSsgICAg dGhlbgotKwkkT0JKQ09QWSAtLWFkZC1zZWN0aW9uIC5nZGJfaW5kZXg9IiRpbmRleF9maWxlIiBc Ci0rCSAgICAtLXNldC1zZWN0aW9uLWZsYWdzIC5nZGJfaW5kZXg9cmVhZG9ubHkgXAotKwkgICAg IiRvdXRwdXRfZmlsZSIgIiRvdXRwdXRfZmlsZSIKLSsJcmM9JD8KLSsgICAgZWxzZQotKwlyYz0w Ci0rICAgIGZpCi0rICAgIFsgJHJjICE9IDAgXSAmJiBleGl0ICRyYwotK2ZpCi0rCi0raWYgWyAi JHdhbnRfZHd6IiA9IHRydWUgXTsgdGhlbgotKyAgICAkRFdaICIkb3V0cHV0X2ZpbGUiID4gL2Rl di9udWxsIDI+JjEKLStlbGlmIFsgIiR3YW50X211bHRpIiA9IHRydWUgXTsgdGhlbgotKyAgICBj cCAkb3V0cHV0X2ZpbGUgJHtvdXRwdXRfZmlsZX0uYWx0Ci0rICAgICREV1ogLW0gJHtvdXRwdXRf ZmlsZX0uZHd6ICIkb3V0cHV0X2ZpbGUiICR7b3V0cHV0X2ZpbGV9LmFsdCA+IC9kZXYvbnVsbCAy PiYxCi0rZmkKLSsKLStybSAtZiAiJGluZGV4X2ZpbGUiCi0rZXhpdCAkcmMKLWRpZmYgLS1naXQg YS9nZGIvY29yZWxvdy5jIGIvZ2RiL2NvcmVsb3cuYwotaW5kZXggZGQ2MjU2MC4uMzQwYjE0OSAx MDA2NDQKLS0tLSBhL2dkYi9jb3JlbG93LmMKLSsrKyBiL2dkYi9jb3JlbG93LmMKLUBAIC00Niw2 ICs0Niw3IEBACi0gI2luY2x1ZGUgImZpbGVuYW1lcy5oIgotICNpbmNsdWRlICJwcm9nc3BhY2Uu aCIKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKLSsjaW5jbHVkZSAiZ2RiX2JmZC5oIgotIAotICNp Zm5kZWYgT19MQVJHRUZJTEUKLSAjZGVmaW5lIE9fTEFSR0VGSUxFIDAKLUBAIC0yMTUsOSArMjE2 LDcgQEAgY29yZV9jbG9zZSAoaW50IHF1aXR0aW5nKQotIAkgIGNvcmVfZGF0YSA9IE5VTEw7Ci0g CX0KLSAKLS0gICAgICBuYW1lID0gYmZkX2dldF9maWxlbmFtZSAoY29yZV9iZmQpOwotLSAgICAg IGdkYl9iZmRfY2xvc2Vfb3Jfd2FybiAoY29yZV9iZmQpOwotLSAgICAgIHhmcmVlIChuYW1lKTsK LSsgICAgICBnZGJfYmZkX3VucmVmIChjb3JlX2JmZCk7Ci0gICAgICAgY29yZV9iZmQgPSBOVUxM OwotICAgICB9Ci0gICBjb3JlX3ZlYyA9IE5VTEw7Ci1AQCAtMzE5LDkgKzMxOCw5IEBAIGNvcmVf b3BlbiAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKLSAgIGlmIChzY3JhdGNoX2NoYW4g PCAwKQotICAgICBwZXJyb3Jfd2l0aF9uYW1lIChmaWxlbmFtZSk7Ci0gCi0tICB0ZW1wX2JmZCA9 IGJmZF9mb3BlbiAoZmlsZW5hbWUsIGdudXRhcmdldCwgCi0tCQkJd3JpdGVfZmlsZXMgPyBGT1BF Tl9SVUIgOiBGT1BFTl9SQiwKLS0JCQlzY3JhdGNoX2NoYW4pOwotKyAgdGVtcF9iZmQgPSBnZGJf YmZkX2ZvcGVuIChmaWxlbmFtZSwgZ251dGFyZ2V0LCAKLSsJCQkgICAgd3JpdGVfZmlsZXMgPyBG T1BFTl9SVUIgOiBGT1BFTl9SQiwKLSsJCQkgICAgc2NyYXRjaF9jaGFuKTsKLSAgIGlmICh0ZW1w X2JmZCA9PSBOVUxMKQotICAgICBwZXJyb3Jfd2l0aF9uYW1lIChmaWxlbmFtZSk7Ci0gCi1AQCAt MzMyLDcgKzMzMSw3IEBAIGNvcmVfb3BlbiAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkK LSAgICAgICAvKiBGSVhNRTogc2hvdWxkIGJlIGNoZWNraW5nIGZvciBlcnJvcnMgZnJvbSBiZmRf Y2xvc2UgKGZvciBvbmUKLSAgICAgICAgICB0aGluZywgb24gZXJyb3IgaXQgZG9lcyBub3QgZnJl ZSBhbGwgdGhlIHN0b3JhZ2UgYXNzb2NpYXRlZAotICAgICAgICAgIHdpdGggdGhlIGJmZCkuICAq LwotLSAgICAgIG1ha2VfY2xlYW51cF9iZmRfY2xvc2UgKHRlbXBfYmZkKTsKLSsgICAgICBtYWtl X2NsZWFudXBfYmZkX3VucmVmICh0ZW1wX2JmZCk7Ci0gICAgICAgZXJyb3IgKF8oIlwiJXNcIiBp cyBub3QgYSBjb3JlIGR1bXA6ICVzIiksCi0gCSAgICAgZmlsZW5hbWUsIGJmZF9lcnJtc2cgKGJm ZF9nZXRfZXJyb3IgKCkpKTsKLSAgICAgfQotQEAgLTM0MCw3ICszMzksNyBAQCBjb3JlX29wZW4g KGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCi0gICAvKiBMb29rcyBzZW1pLXJlYXNvbmFi bGUuICBUb3NzIHRoZSBvbGQgY29yZSBmaWxlIGFuZCB3b3JrIG9uIHRoZQotICAgICAgbmV3LiAg Ki8KLSAKLS0gIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7CS8qIERvbid0IGZyZWUgZmls ZW5hbWUgYW55IG1vcmUgKi8KLSsgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotICAgdW5wdXNo X3RhcmdldCAoJmNvcmVfb3BzKTsKLSAgIGNvcmVfYmZkID0gdGVtcF9iZmQ7Ci0gICBvbGRfY2hh aW4gPSBtYWtlX2NsZWFudXAgKGNvcmVfY2xvc2VfY2xlYW51cCwgMCAvKmlnbm9yZSovKTsKKyAJ ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlcyIsIAorIAkJCSAgICBwbG9uZ2VzdCAoaGln aF9ib3VuZCAtIGxvd19ib3VuZCArIDEpKTsKKyAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAo aXNfdmVjdG9yID8gIikpKSIgOiAiXSIpKTsKIGRpZmYgLS1naXQgYS9nZGIvZGF0YS1kaXJlY3Rv cnkvTWFrZWZpbGUuaW4gYi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KLWluZGV4IDg3 YzZkZDQuLjFjMjY2NTIgMTAwNjQ0CitpbmRleCBkOThhYzc3Li5lMjQ4Mzk5IDEwMDY0NAogLS0t IGEvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCiArKysgYi9nZGIvZGF0YS1kaXJlY3Rv cnkvTWFrZWZpbGUuaW4KLUBAIC01MiwxNCArNTIsMjUgQEAgU1lTQ0FMTFNfRklMRVMgPSBcCitA QCAtNTIsMTcgKzUyLDI4IEBAIFNZU0NBTExTX0ZJTEVTID0gXAogIFBZVEhPTl9ESVIgPSBweXRo b24KICBQWVRIT05fSU5TVEFMTF9ESVIgPSAkKERFU1RESVIpJChHREJfREFUQURJUikvJChQWVRI T05fRElSKQogIFBZVEhPTl9GSUxFUyA9IFwKQEAgLTgyNywxMCArMTY4LDEzIEBAIGluZGV4IDg3 YzZkZDQuLjFjMjY2NTIgMTAwNjQ0CiArCWdkYi9jb21tYW5kL2JhY2t0cmFjZS5weSBcCiArCWdk Yi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkgXAogKwlnZGIvY29tbWFuZC9wYWhvbGUucHkgXAor IAlnZGIvY29tbWFuZC90eXBlX3ByaW50ZXJzLnB5IFwKICAJZ2RiL2NvbW1hbmQvcHJldHR5X3By aW50ZXJzLnB5IFwKICAJZ2RiL2NvbW1hbmQvcHJvbXB0LnB5IFwKLS0JZ2RiL2NvbW1hbmQvZXhw bG9yZS5weQotKwlnZGIvY29tbWFuZC9leHBsb3JlLnB5IFwKKyAJZ2RiL2NvbW1hbmQvZXhwbG9y ZS5weSBcCisgCWdkYi9mdW5jdGlvbi9fX2luaXRfXy5weSBcCistCWdkYi9mdW5jdGlvbi9zdHJm bnMucHkKKysJZ2RiL2Z1bmN0aW9uL3N0cmZucy5weSBcCiArCWdkYi9jb21tYW5kL3JlcXVpcmUu cHkgXAogKwlnZGIvY29tbWFuZC91cHRvLnB5IFwKICsJZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5 IFwKQEAgLTg0MiwzMyArMTg2LDExIEBAIGluZGV4IDg3YzZkZDQuLjFjMjY2NTIgMTAwNjQ0CiAg CiAgRkxBR1NfVE9fUEFTUyA9IFwKICAJInByZWZpeD0kKHByZWZpeCkiIFwKLWRpZmYgLS1naXQg YS9nZGIvZGVmcy5oIGIvZ2RiL2RlZnMuaAotaW5kZXggMWM2ZmE3OS4uZWMwODM0OCAxMDA2NDQK LS0tLSBhL2dkYi9kZWZzLmgKLSsrKyBiL2dkYi9kZWZzLmgKLUBAIC0zMTUsNyArMzE1LDcgQEAg ZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBfY2xvc2UgKGludCBmZCk7Ci0gCi0g ZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBfZmNsb3NlIChGSUxFICpmaWxlKTsK LSAKLS1leHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfY2xlYW51cF9iZmRfY2xvc2UgKGJmZCAq YWJmZCk7Ci0rZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBfYmZkX3VucmVmIChi ZmQgKmFiZmQpOwotIAotIHN0cnVjdCBvYnN0YWNrOwotIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAq bWFrZV9jbGVhbnVwX29ic3RhY2tfZnJlZSAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwotQEAg LTM1Myw2ICszNTMsOCBAQCBleHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfY2xlYW51cF9yZXN0 b3JlX3BhZ2VfaW5mbyAodm9pZCk7Ci0gZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICoKLSAgIHNldF9i YXRjaF9mbGFnX2FuZF9tYWtlX2NsZWFudXBfcmVzdG9yZV9wYWdlX2luZm8gKHZvaWQpOwotIAot K2V4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3Jlc3RvcmVfc2VsZWN0ZWRfZnJh bWUgKHZvaWQpOwotKwotIGV4dGVybiBjaGFyICpnZGJfcmVhbHBhdGggKGNvbnN0IGNoYXIgKik7 Ci0gZXh0ZXJuIGNoYXIgKnhmdWxscGF0aCAoY29uc3QgY2hhciAqKTsKLSAKIGRpZmYgLS1naXQg YS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotaW5kZXggNjhlYTgx Ny4uNTk0NWJhYyAxMDA2NDQKK2luZGV4IDcyOGU0NGIuLjM2NTkxMzkgMTAwNjQ0CiAtLS0gYS9n ZGIvZG9jL2dkYi50ZXhpbmZvCiArKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCi1AQCAtMTIwMCw2 ICsxMjAwLDE2IEBAIGZvciByZW1vdGUgZGVidWdnaW5nLgorQEAgLTEyMTcsNiArMTIxNywxNiBA QCBmb3IgcmVtb3RlIGRlYnVnZ2luZy4KICBSdW4gdXNpbmcgQHZhcntkZXZpY2V9IGZvciB5b3Vy IHByb2dyYW0ncyBzdGFuZGFyZCBpbnB1dCBhbmQgb3V0cHV0LgogIEBjIEZJWE1FOiBraW5nZG9u IHRoaW5rcyB0aGVyZSBpcyBtb3JlIHRvIC10dHkuICBJbnZlc3RpZ2F0ZS4KICAKQEAgLTg4NSw3 ICsyMDcsNyBAQCBpbmRleCA2OGVhODE3Li41OTQ1YmFjIDEwMDY0NAogIEBjIHJlc29sdmUgdGhl IHNpdHVhdGlvbiBvZiB0aGVzZSBldmVudHVhbGx5CiAgQGl0ZW0gLXR1aQogIEBjaW5kZXggQGNv ZGV7LS10dWl9Ci1AQCAtMjI1NjMsOCArMjI1NzMsNiBAQCBjb250YWluaW5nIEBjb2Rle2VuZH0u ICBGb3IgZXhhbXBsZToKK0BAIC0yMjczOCw4ICsyMjc0OCw2IEBAIGNvbnRhaW5pbmcgQGNvZGV7 ZW5kfS4gIEZvciBleGFtcGxlOgogIAogIEBzbWFsbGV4YW1wbGUKICAoQHZhbHVle0dEQlB9KSBw eXRob24KQEAgLTg5NCw3ICsyMTYsNyBAQCBpbmRleCA2OGVhODE3Li41OTQ1YmFjIDEwMDY0NAog ID5wcmludCAyMwogID5lbmQKICAyMwotQEAgLTIyNTc4LDYgKzIyNTg2LDE0IEBAIGNvbnRyb2xs ZWQgdXNpbmcgQGNvZGV7c2V0IHB5dGhvbiBwcmludC1zdGFja306IGlmIEBjb2Rle2Z1bGx9LCB0 aGVuCitAQCAtMjI3NTMsNiArMjI3NjEsMTQgQEAgY29udHJvbGxlZCB1c2luZyBAY29kZXtzZXQg cHl0aG9uIHByaW50LXN0YWNrfTogaWYgQGNvZGV7ZnVsbH0sIHRoZW4KICBmdWxsIFB5dGhvbiBz dGFjayBwcmludGluZyBpcyBlbmFibGVkOyBpZiBAY29kZXtub25lfSwgdGhlbiBQeXRob24gc3Rh Y2sKICBhbmQgbWVzc2FnZSBwcmludGluZyBpcyBkaXNhYmxlZDsgaWYgQGNvZGV7bWVzc2FnZX0s IHRoZSBkZWZhdWx0LCBvbmx5CiAgdGhlIG1lc3NhZ2UgY29tcG9uZW50IG9mIHRoZSBlcnJvciBp cyBwcmludGVkLgpAQCAtOTA5LDcgKzIzMSw3IEBAIGluZGV4IDY4ZWE4MTcuLjU5NDViYWMgMTAw NjQ0CiAgQGVuZCB0YWJsZQogIAogIEl0IGlzIGFsc28gcG9zc2libGUgdG8gZXhlY3V0ZSBhIFB5 dGhvbiBzY3JpcHQgZnJvbSB0aGUgQHZhbHVle0dEQk59Ci1AQCAtMjI1OTksNiArMjI2MTUsMTQg QEAgYW5kIHRodXMgaXMgYWx3YXlzIGF2YWlsYWJsZS4KK0BAIC0yMjc3NCw2ICsyMjc5MCwxNCBA QCBhbmQgdGh1cyBpcyBhbHdheXMgYXZhaWxhYmxlLgogIEBjaW5kZXggcHl0aG9uIGFwaQogIEBj aW5kZXggcHJvZ3JhbW1pbmcgaW4gcHl0aG9uCiAgCkBAIC05MjQsMjMgKzI0NiwxMSBAQCBpbmRl eCA2OGVhODE3Li41OTQ1YmFjIDEwMDY0NAogIEBjaW5kZXggcHl0aG9uIHN0ZG91dAogIEBjaW5k ZXggcHl0aG9uIHBhZ2luYXRpb24KICBBdCBzdGFydHVwLCBAdmFsdWV7R0RCTn0gb3ZlcnJpZGVz IFB5dGhvbidzIEBjb2Rle3N5cy5zdGRvdXR9IGFuZAotQEAgLTM0NTM2LDYgKzM0NTYwLDExIEBA IFNoYXJlZCBsaWJyYXJ5IGV2ZW50cy4KLSAKLSBAZW5kIHRhYmxlCi0gCi0rQGtpbmRleCBtYWlu dCBpbmZvIGJmZHMKLStAaXRlbSBtYWludCBpbmZvIGJmZHMKLStUaGlzIHByaW50cyBpbmZvcm1h dGlvbiBhYm91dCBlYWNoIEBjb2Rle2JmZH0gb2JqZWN0IHRoYXQgaXMga25vd24gdG8KLStAdmFs dWV7R0RCTn0uICBAeHJlZntUb3AsICwgQkZELCBiZmQsIFRoZSBCaW5hcnkgRmlsZSBEZXNjcmlw dG9yIExpYnJhcnl9LgotKwotIEBraW5kZXggc2V0IGRpc3BsYWNlZC1zdGVwcGluZwotIEBraW5k ZXggc2hvdyBkaXNwbGFjZWQtc3RlcHBpbmcKLSBAY2luZGV4IGRpc3BsYWNlZCBzdGVwcGluZyBz dXBwb3J0CiBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbyBiL2dkYi9kb2MvZ2Ri aW50LnRleGluZm8KLWluZGV4IDVlMDBmMWYuLmM1YzQzMmIgMTAwNjQ0CitpbmRleCA0YTc1YzI2 Li45MTQ0NmZlIDEwMDY0NAogLS0tIGEvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwogKysrIGIvZ2Ri L2RvYy9nZGJpbnQudGV4aW5mbwotQEAgLTIxMDIsNiArMjEwMiwxOCBAQCB0aW1lLCBhbmQgc28g d2UgYXR0ZW1wdCB0byBoYW5kbGUgc3ltYm9scyBpbmNyZW1lbnRhbGx5LiAgRm9yIGluc3RhbmNl LAorQEAgLTIxMDEsNiArMjEwMSwxOCBAQCB0aW1lLCBhbmQgc28gd2UgYXR0ZW1wdCB0byBoYW5k bGUgc3ltYm9scyBpbmNyZW1lbnRhbGx5LiAgRm9yIGluc3RhbmNlLAogIHdlIGNyZWF0ZSBAZGZu e3BhcnRpYWwgc3ltYm9sIHRhYmxlc30gY29uc2lzdGluZyBvZiBvbmx5IHNlbGVjdGVkCiAgc3lt Ym9scywgYW5kIG9ubHkgZXhwYW5kIHRoZW0gdG8gZnVsbCBzeW1ib2wgdGFibGVzIHdoZW4gbmVj ZXNzYXJ5LgogIApAQCAtOTU5LDcgKzI2OSw3IEBAIGluZGV4IDVlMDBmMWYuLmM1YzQzMmIgMTAw NjQ0CiAgQHNlY3Rpb24gU3ltYm9sIFJlYWRpbmcKICAKICBAY2luZGV4IHN5bWJvbCByZWFkaW5n Ci1AQCAtMjE5NCw2ICsyMjA2LDcgQEAgc3ltdGFiLiAgVXBvbiByZXR1cm4sIEBjb2Rle3BzdC0+ cmVhZGlufSBzaG91bGQgaGF2ZSBiZWVuIHNldCB0byAxLCBhbmQKK0BAIC0yMTkzLDYgKzIyMDUs NyBAQCBzeW10YWIuICBVcG9uIHJldHVybiwgQGNvZGV7cHN0LT5yZWFkaW59IHNob3VsZCBoYXZl IGJlZW4gc2V0IHRvIDEsIGFuZAogIHplcm8gaWYgdGhlcmUgd2VyZSBubyBzeW1ib2xzIGluIHRo YXQgcGFydCBvZiB0aGUgc3ltYm9sIGZpbGUuCiAgQGVuZCB0YWJsZQogIApAQCAtOTY3LDcgKzI3 Nyw3IEBAIGluZGV4IDVlMDBmMWYuLmM1YzQzMmIgMTAwNjQ0CiAgQHNlY3Rpb24gUGFydGlhbCBT eW1ib2wgVGFibGVzCiAgCiAgQHZhbHVle0dEQk59IGhhcyB0aHJlZSB0eXBlcyBvZiBzeW1ib2wg dGFibGVzOgotQEAgLTIyOTUsNiArMjMwOCw3IEBAIGFuZCBwYXJ0aWFsIHN5bWJvbCB0YWJsZXMg YmVoaW5kIGEgc2V0IG9mIGZ1bmN0aW9uIHBvaW50ZXJzIGtub3duIGFzCitAQCAtMjI5NCw2ICsy MzA3LDcgQEAgYW5kIHBhcnRpYWwgc3ltYm9sIHRhYmxlcyBiZWhpbmQgYSBzZXQgb2YgZnVuY3Rp b24gcG9pbnRlcnMga25vd24gYXMKICB0aGUgQGRmbntxdWljayBzeW1ib2wgZnVuY3Rpb25zfS4g IFRoZXNlIGFyZSBkb2N1bWVudGVkIGluCiAgQGZpbGV7c3ltZmlsZS5ofS4KICAKQEAgLTk3NSw3 ICsyODUsNyBAQCBpbmRleCA1ZTAwZjFmLi5jNWM0MzJiIDEwMDY0NAogIEBzZWN0aW9uIFR5cGVz CiAgCiAgQHVubnVtYmVyZWRzdWJzZWMgRnVuZGFtZW50YWwgVHlwZXMgKGUuZy4sIEBjb2Rle0ZU X1ZPSUR9LCBAY29kZXtGVF9CT09MRUFOfSkuCi1AQCAtMjMxNyw2ICsyMzMxLDcgQEAgdHlwZXMg bWFwIHRvIG9uZSBAY29kZXtUWVBFX0NPREVfKn0gdHlwZSwgYW5kIGFyZSBkaXN0aW5ndWlzaGVk IGJ5CitAQCAtMjMxNiw2ICsyMzMwLDcgQEAgdHlwZXMgbWFwIHRvIG9uZSBAY29kZXtUWVBFX0NP REVfKn0gdHlwZSwgYW5kIGFyZSBkaXN0aW5ndWlzaGVkIGJ5CiAgb3RoZXIgbWVtYmVycyBvZiB0 aGUgdHlwZSBzdHJ1Y3QsIHN1Y2ggYXMgd2hldGhlciB0aGUgdHlwZSBpcyBzaWduZWQKICBvciB1 bnNpZ25lZCwgYW5kIGhvdyBtYW55IGJpdHMgaXQgdXNlcy4KICAKQEAgLTk4Myw3ICsyOTMsNyBA QCBpbmRleCA1ZTAwZjFmLi5jNWM0MzJiIDEwMDY0NAogIEB1bm51bWJlcmVkc3Vic2VjIEJ1aWx0 aW4gVHlwZXMgKGUuZy4sIEBjb2Rle2J1aWx0aW5fdHlwZV92b2lkfSwgQGNvZGV7YnVpbHRpbl90 eXBlX2NoYXJ9KS4KICAKICBUaGVzZSBhcmUgaW5zdGFuY2VzIG9mIHR5cGUgc3RydWN0cyB0aGF0 IHJvdWdobHkgY29ycmVzcG9uZCB0bwotQEAgLTIzMzEsNiArMjM0Niw3IEBAIG9ubHkgb25lIGlu c3RhbmNlIGV4aXN0cywgd2hpbGUgQGZpbGV7Yy1sYW5nLmN9IGJ1aWxkcyBhcyBtYW55CitAQCAt MjMzMCw2ICsyMzQ1LDcgQEAgb25seSBvbmUgaW5zdGFuY2UgZXhpc3RzLCB3aGlsZSBAZmlsZXtj LWxhbmcuY30gYnVpbGRzIGFzIG1hbnkKICBAY29kZXtUWVBFX0NPREVfSU5UfSB0eXBlcyBhcyBu ZWVkZWQsIHdpdGggZWFjaCBvbmUgYXNzb2NpYXRlZCB3aXRoCiAgc29tZSBwYXJ0aWN1bGFyIG9i amZpbGUuCiAgCkBAIC05OTEsNyArMzAxLDcgQEAgaW5kZXggNWUwMGYxZi4uYzVjNDMyYiAxMDA2 NDQKICBAc2VjdGlvbiBPYmplY3QgRmlsZSBGb3JtYXRzCiAgQGNpbmRleCBvYmplY3QgZmlsZSBm b3JtYXRzCiAgCi1AQCAtMjQxNiw2ICsyNDMyLDcgQEAgU09NLCB3aGljaCBpcyBhIGNyb3NzLWxh bmd1YWdlIEFCSSkuCitAQCAtMjQxNSw2ICsyNDMxLDcgQEAgU09NLCB3aGljaCBpcyBhIGNyb3Nz LWxhbmd1YWdlIEFCSSkuCiAgCiAgVGhlIFNPTSByZWFkZXIgaXMgaW4gQGZpbGV7c29tcmVhZC5j fS4KICAKQEAgLTk5OSw3ICszMDksNyBAQCBpbmRleCA1ZTAwZjFmLi5jNWM0MzJiIDEwMDY0NAog IEBzZWN0aW9uIERlYnVnZ2luZyBGaWxlIEZvcm1hdHMKICAKICBUaGlzIHNlY3Rpb24gZGVzY3Jp YmVzIGNoYXJhY3RlcmlzdGljcyBvZiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdGhhdAotQEAgLTI0 ODcsNiArMjUwNCw3IEBAIERXQVJGIDMgaXMgYW4gaW1wcm92ZWQgdmVyc2lvbiBvZiBEV0FSRiAy LgorQEAgLTI0ODYsNiArMjUwMyw3IEBAIERXQVJGIDMgaXMgYW4gaW1wcm92ZWQgdmVyc2lvbiBv ZiBEV0FSRiAyLgogIEBjaW5kZXggU09NIGRlYnVnZ2luZyBpbmZvCiAgTGlrZSBDT0ZGLCB0aGUg U09NIGRlZmluaXRpb24gaW5jbHVkZXMgZGVidWdnaW5nIGluZm9ybWF0aW9uLgogIApAQCAtMTAw Nyw3ICszMTcsNyBAQCBpbmRleCA1ZTAwZjFmLi5jNWM0MzJiIDEwMDY0NAogIEBzZWN0aW9uIEFk ZGluZyBhIE5ldyBTeW1ib2wgUmVhZGVyIHRvIEB2YWx1ZXtHREJOfQogIAogIEBjaW5kZXggYWRk aW5nIGRlYnVnZ2luZyBpbmZvIHJlYWRlcgotQEAgLTI1MDksNiArMjUyNyw3IEBAIHdpbGwgb25s eSBldmVyIGJlIGltcGxlbWVudGVkIGJ5IG9uZSBvYmplY3QgZmlsZSBmb3JtYXQgbWF5IGJlIGNh bGxlZAorQEAgLTI1MDgsNiArMjUyNiw3IEBAIHdpbGwgb25seSBldmVyIGJlIGltcGxlbWVudGVk IGJ5IG9uZSBvYmplY3QgZmlsZSBmb3JtYXQgbWF5IGJlIGNhbGxlZAogIGRpcmVjdGx5LiAgVGhp cyBpbnRlcmZhY2Ugc2hvdWxkIGJlIGRlc2NyaWJlZCBpbiBhIGZpbGUKICBAZmlsZXtiZmQvbGli QHZhcnt4eXp9Lmh9LCB3aGljaCBpcyBpbmNsdWRlZCBieSBAdmFsdWV7R0RCTn0uCiAgCkBAIC0x MDE1LDcgKzMyNSw3IEBAIGluZGV4IDVlMDBmMWYuLmM1YzQzMmIgMTAwNjQ0CiAgQHNlY3Rpb24g TWVtb3J5IE1hbmFnZW1lbnQgZm9yIFN5bWJvbCBGaWxlcwogIAogIE1vc3QgbWVtb3J5IGFzc29j aWF0ZWQgd2l0aCBhIGxvYWRlZCBzeW1ib2wgZmlsZSBpcyBzdG9yZWQgb24KLUBAIC0yNTIwLDEw ICsyNTM5LDQ1IEBAIHJlbGVhc2VkIHdoZW4gdGhlIG9iamZpbGUgaXMgdW5sb2FkZWQgb3IgcmVs b2FkZWQuICBUaGVyZWZvcmUgb25lCitAQCAtMjUxOSwxMCArMjUzOCw0NSBAQCByZWxlYXNlZCB3 aGVuIHRoZSBvYmpmaWxlIGlzIHVubG9hZGVkIG9yIHJlbG9hZGVkLiAgVGhlcmVmb3JlIG9uZQog IG9iamZpbGUgbXVzdCBub3QgcmVmZXJlbmNlIHN5bWJvbCBvciB0eXBlIGRhdGEgZnJvbSBhbm90 aGVyIG9iamZpbGU7CiAgdGhleSBjb3VsZCBiZSB1bmxvYWRlZCBhdCBkaWZmZXJlbnQgdGltZXMu CiAgCkBAIC0xMDY2LDExICszNzYsMTEgQEAgaW5kZXggNWUwMGYxZi4uYzVjNDMyYiAxMDA2NDQK ICAKICBAbm9kZSBMYW5ndWFnZSBTdXBwb3J0CiBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9vYnNlcnZl ci50ZXhpIGIvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCi1pbmRleCA2ODI3ZWQ4Li5jNjNiOTAxIDEw MDY0NAoraW5kZXggODdjMDhlMS4uY2M4ZjQ5OCAxMDA2NDQKIC0tLSBhL2dkYi9kb2Mvb2JzZXJ2 ZXIudGV4aQogKysrIGIvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCi1AQCAtMjMwLDYgKzIzMCwxMSBA QCB0aGUgY3VycmVudCB0b3AtbGV2ZWwgcHJvbXB0LgotIFZhcmlhYmxlIGdkYl9kYXRhZGlyIGhh cyBiZWVuIHNldC4gIFRoZSB2YWx1ZSBtYXkgbm90IG5lY2Vzc2FyaWx5IGNoYW5nZS4KK0BAIC0y NDYsNiArMjQ2LDExIEBAIFRoZSB0cmFjZSBzdGF0ZSB2YXJpYWJsZSBAdmFye25hbWV9IGlzIGRl bGV0ZWQuICBJZiBAdmFye25hbWV9IGlzCisgQGNvZGV7TlVMTH0sIGFsbCB0cmFjZSBzdGF0ZSB2 YXJpYWJsZXMgYXJlIGRlbGV0ZWQuCiAgQGVuZCBkZWZ0eXBlZnVuCiAgCiArQGMgQGRlZnR5cGVm dW4gdm9pZCBtYXJrX3VzZWQgKHZvaWQpCkBAIC0xMDgxLDU1ICszOTEsMTEgQEAgaW5kZXggNjgy N2VkOC4uYzYzYjkwMSAxMDA2NDQKICBAZGVmdHlwZWZ1biB2b2lkIHRlc3Rfbm90aWZpY2F0aW9u IChpbnQgQHZhcntzb21lYXJnfSkKICBUaGlzIG9ic2VydmVyIGlzIHVzZWQgZm9yIGludGVybmFs IHRlc3RpbmcuICBEbyBub3QgdXNlLiAgCiAgU2VlIHRlc3RzdWl0ZS9nZGIuZ2RiL29ic2VydmVy LmV4cC4KLWRpZmYgLS1naXQgYS9nZGIvZHNyZWMuYyBiL2dkYi9kc3JlYy5jCi1pbmRleCBkMmM5 OWIyLi5mMzlkMGVkIDEwMDY0NAotLS0tIGEvZ2RiL2RzcmVjLmMKLSsrKyBiL2dkYi9kc3JlYy5j Ci1AQCAtMjMsNiArMjMsNyBAQAotICNpbmNsdWRlIDx0aW1lLmg+Ci0gI2luY2x1ZGUgImdkYl9h c3NlcnQuaCIKLSAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgi Ci0gCi0gZXh0ZXJuIHZvaWQgcmVwb3J0X3RyYW5zZmVyX3BlcmZvcm1hbmNlICh1bnNpZ25lZCBs b25nLCB0aW1lX3QsIHRpbWVfdCk7Ci0gCi1AQCAtNTYsMTkgKzU3LDIyIEBAIGxvYWRfc3JlYyAo c3RydWN0IHNlcmlhbCAqZGVzYywgY29uc3QgY2hhciAqZmlsZSwgYmZkX3ZtYSBsb2FkX29mZnNl dCwKLSAgIGludCByZWNsZW47Ci0gICB0aW1lX3Qgc3RhcnRfdGltZSwgZW5kX3RpbWU7Ci0gICB1 bnNpZ25lZCBsb25nIGRhdGFfY291bnQgPSAwOwotKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7 Ci0gCi0gICBzcmVjID0gKGNoYXIgKikgYWxsb2NhIChtYXhyZWNzaXplICsgMSk7Ci0gCi0tICBh YmZkID0gYmZkX29wZW5yIChmaWxlLCAwKTsKLSsgIGFiZmQgPSBnZGJfYmZkX29wZW5yIChmaWxl LCAwKTsKLSAgIGlmICghYWJmZCkKLSAgICAgewotICAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygi VW5hYmxlIHRvIG9wZW4gZmlsZSAlc1xuIiksIGZpbGUpOwotICAgICAgIHJldHVybjsKLSAgICAg fQotIAotKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKGFiZmQpOwotICAgaWYg KGJmZF9jaGVja19mb3JtYXQgKGFiZmQsIGJmZF9vYmplY3QpID09IDApCi0gICAgIHsKLSAgICAg ICBwcmludGZfZmlsdGVyZWQgKF8oIkZpbGUgaXMgbm90IGFuIG9iamVjdCBmaWxlXG4iKSk7Ci0r ICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotICAgICAgIHJldHVybjsKLSAgICAgfQotIAot QEAgLTE3MCw2ICsxNzQsNyBAQCBsb2FkX3NyZWMgKHN0cnVjdCBzZXJpYWwgKmRlc2MsIGNvbnN0 IGNoYXIgKmZpbGUsIGJmZF92bWEgbG9hZF9vZmZzZXQsCi0gICBzZXJpYWxfZmx1c2hfaW5wdXQg KGRlc2MpOwotIAotICAgcmVwb3J0X3RyYW5zZmVyX3BlcmZvcm1hbmNlIChkYXRhX2NvdW50LCBz dGFydF90aW1lLCBlbmRfdGltZSk7Ci0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0gfQotIAot IC8qCiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuYyBiL2dkYi9kd2FyZjJleHByLmMKLWlu ZGV4IDIxNGIzNzEuLmQ5YjM3NTEgMTAwNjQ0CitpbmRleCA3NTJkNzgyLi5hYjBhM2ViIDEwMDY0 NAogLS0tIGEvZ2RiL2R3YXJmMmV4cHIuYwogKysrIGIvZ2RiL2R3YXJmMmV4cHIuYwotQEAgLTE0 ODAsNiArMTQ4MCwxNCBAQCBleGVjdXRlX3N0YWNrX29wIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250 ZXh0ICpjdHgsCitAQCAtMTQ3OSw2ICsxNDc5LDE0IEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVj dCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKICAJICB9CiAgCSAgYnJlYWs7CiAgCkBAIC0xMTQ1 LDEwICs0MTEsMTAgQEAgaW5kZXggMjE0YjM3MS4uZDliMzc1MSAxMDA2NDQKICAJICBlcnJvciAo XygiVW5oYW5kbGVkIGR3YXJmIGV4cHJlc3Npb24gb3Bjb2RlIDB4JXgiKSwgb3ApOwogIAl9CiBk aWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuaCBiL2dkYi9kd2FyZjJleHByLmgKLWluZGV4IDE5 ZWZiZmQuLjBlMGU0OTggMTAwNjQ0CitpbmRleCBlODU0ODZhLi5lN2FjNzk5IDEwMDY0NAogLS0t IGEvZ2RiL2R3YXJmMmV4cHIuaAogKysrIGIvZ2RiL2R3YXJmMmV4cHIuaAotQEAgLTc4LDEyICs3 OCw4IEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MKK0BAIC03NywxMiArNzcsOCBA QCBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0X2Z1bmNzCiAgICAgICBUaGlzIGNhbiB0aHJvdyBh biBleGNlcHRpb24gaWYgdGhlIGluZGV4IGlzIG91dCBvZiByYW5nZS4gICovCiAgICBDT1JFX0FE RFIgKCpnZXRfYWRkcl9pbmRleCkgKHZvaWQgKmJhdG9uLCB1bnNpZ25lZCBpbnQgaW5kZXgpOwog IApAQCAtMTE2Miw3ICs0MjgsNyBAQCBpbmRleCAxOWVmYmZkLi4wZTBlNDk4IDEwMDY0NAogIAog IC8qIFRoZSBsb2NhdGlvbiBvZiBhIHZhbHVlLiAgKi8KIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYy bG9jLmMgYi9nZGIvZHdhcmYybG9jLmMKLWluZGV4IDM4ZTQ4MTQuLjQ2YTAzM2QgMTAwNjQ0Citp bmRleCAyMjgyZmViLi4xM2U3YmJjIDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMmxvYy5jCiArKysg Yi9nZGIvZHdhcmYybG9jLmMKIEBAIC0yOTMsNiArMjkzLDkgQEAgc3RydWN0IGR3YXJmX2V4cHJf YmF0b24KQEAgLTExNzUsNyArNDQxLDcgQEAgaW5kZXggMzhlNDgxNC4uNDZhMDMzZCAxMDA2NDQK ICB9OwogIAogIC8qIEhlbHBlciBmdW5jdGlvbnMgZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVz Yy4gICovCi1AQCAtMzUyLDE2ICszNTUsMTQgQEAgc3RhdGljIHZvaWQKK0BAIC0zNTYsMTYgKzM1 OSwxNCBAQCBzdGF0aWMgdm9pZAogIGR3YXJmX2V4cHJfZnJhbWVfYmFzZV8xIChzdHJ1Y3Qgc3lt Ym9sICpmcmFtZWZ1bmMsIENPUkVfQUREUiBwYywKICAJCQkgY29uc3QgZ2RiX2J5dGUgKipzdGFy dCwgc2l6ZV90ICpsZW5ndGgpCiAgewpAQCAtMTE5NCw3ICs0NjAsNyBAQCBpbmRleCAzOGU0ODE0 Li40NmEwMzNkIDEwMDY0NAogICAgICB7CiAgICAgICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2Jh dG9uICpzeW1iYXRvbjsKICAKLUBAIC0zNzQsMTAgKzM3NSwyMyBAQCBkd2FyZl9leHByX2ZyYW1l X2Jhc2VfMSAoc3RydWN0IHN5bWJvbCAqZnJhbWVmdW5jLCBDT1JFX0FERFIgcGMsCitAQCAtMzc4 LDEwICszNzksMjMgQEAgZHdhcmZfZXhwcl9mcmFtZV9iYXNlXzEgKHN0cnVjdCBzeW1ib2wgKmZy YW1lZnVuYywgQ09SRV9BRERSIHBjLAogICAgICAgIGVsc2UKICAJKmxlbmd0aCA9IDA7CiAgICAg IH0KQEAgLTEyMTksNyArNDg1LDcgQEAgaW5kZXggMzhlNDgxNC4uNDZhMDMzZCAxMDA2NDQKICB9 CiAgCiAgLyogSGVscGVyIGZ1bmN0aW9uIGZvciBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MuICBD b21wdXRlcyB0aGUgQ0ZBIGZvcgotQEAgLTQ0NSw2ICs0NTksODUgQEAgZHdhcmZfZXhwcl9kd2Fy Zl9jYWxsIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsIGN1X29mZnNldCBkaWVfb2Zm c2V0KQorQEAgLTQ0OCw2ICs0NjIsODUgQEAgZHdhcmZfZXhwcl9kd2FyZl9jYWxsIChzdHJ1Y3Qg ZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsIGN1X29mZnNldCBkaWVfb2Zmc2V0KQogIAkJICAgICBj dHgtPmZ1bmNzLT5nZXRfZnJhbWVfcGMsIGN0eC0+YmF0b24pOwogIH0KICAKQEAgLTEzMDUsNyAr NTcxLDcgQEAgaW5kZXggMzhlNDgxNC4uNDZhMDMzZCAxMDA2NDQKICAvKiBDYWxsYmFjayBmdW5j dGlvbiBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjLiAgKi8KICAKICBzdGF0aWMgc3RydWN0 IHR5cGUgKgotQEAgLTExMzksMTAgKzEyMzIsMTIgQEAgZHdhcmZfZXhwcl9wdXNoX2R3YXJmX3Jl Z19lbnRyeV92YWx1ZSAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAorQEAgLTExNTAs MTAgKzEyNDMsMTIgQEAgZHdhcmZfZXhwcl9wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAoc3Ry dWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAogIAogICAgc2F2ZWRfY3R4LmdkYmFyY2ggPSBj dHgtPmdkYmFyY2g7CiAgICBzYXZlZF9jdHguYWRkcl9zaXplID0gY3R4LT5hZGRyX3NpemU7CkBA IC0xMzE4LDcgKzU4NCw3IEBAIGluZGV4IDM4ZTQ4MTQuLjQ2YTAzM2QgMTAwNjQ0CiAgICBjdHgt Pm9mZnNldCA9IGR3YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQgKGJhdG9uX2xvY2FsLnBlcl9jdSk7 CiAgICBjdHgtPmJhdG9uID0gJmJhdG9uX2xvY2FsOwogIAotQEAgLTExNTAsMTAgKzEyNDUsOTUg QEAgZHdhcmZfZXhwcl9wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAoc3RydWN0IGR3YXJmX2V4 cHJfY29udGV4dCAqY3R4LAorQEAgLTExNjEsMTAgKzEyNTYsOTUgQEAgZHdhcmZfZXhwcl9wdXNo X2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAog IAogICAgY3R4LT5nZGJhcmNoID0gc2F2ZWRfY3R4LmdkYmFyY2g7CiAgICBjdHgtPmFkZHJfc2l6 ZSA9IHNhdmVkX2N0eC5hZGRyX3NpemU7CkBAIC0xNDE0LDcgKzY4MCw3IEBAIGluZGV4IDM4ZTQ4 MTQuLjQ2YTAzM2QgMTAwNjQ0CiAgLyogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIGR3YXJmMl9ldmFs dWF0ZV9sb2NfZGVzYy4KICAgICBGZXRjaCB0aGUgYWRkcmVzcyBpbmRleGVkIGJ5IERXX09QX0dO VV9hZGRyX2luZGV4LiAgKi8KICAKLUBAIC0yMDg4LDIyICsyMjY4LDYgQEAgaW52YWxpZF9zeW50 aGV0aWNfcG9pbnRlciAodm9pZCkKK0BAIC0yMTAwLDIyICsyMjgwLDYgQEAgaW52YWxpZF9zeW50 aGV0aWNfcG9pbnRlciAodm9pZCkKICAJICAgInJlZmVyZW5jZWQgdmlhIHN5bnRoZXRpYyBwb2lu dGVyIikpOwogIH0KICAKQEAgLTE0MzcsNyArNzAzLDcgQEAgaW5kZXggMzhlNDgxNC4uNDZhMDMz ZCAxMDA2NDQKICAvKiBFdmFsdWF0ZSBhIGxvY2F0aW9uIGRlc2NyaXB0aW9uLCBzdGFydGluZyBh dCBEQVRBIGFuZCB3aXRoIGxlbmd0aAogICAgIFNJWkUsIHRvIGZpbmQgdGhlIGN1cnJlbnQgbG9j YXRpb24gb2YgdmFyaWFibGUgb2YgVFlQRSBpbiB0aGUKICAgICBjb250ZXh0IG9mIEZSQU1FLiAg QllURV9PRkZTRVQgaXMgYXBwbGllZCBhZnRlciB0aGUgY29udGVudHMgYXJlCi1AQCAtMjExNiw3 ICsyMjgwLDYgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0 eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCitAQCAtMjEyOCw3ICsyMjkyLDYgQEAgZHdh cmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUsCiAgCQkJICAgICAgIExPTkdFU1QgYnl0ZV9vZmZzZXQpCiAgewogICAg c3RydWN0IHZhbHVlICpyZXR2YWw7CkBAIC0xNDQ1LDcgKzcxMSw3IEBAIGluZGV4IDM4ZTQ4MTQu LjQ2YTAzM2QgMTAwNjQ0CiAgICBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHg7CiAgICBz dHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluLCAqdmFsdWVfY2hhaW47CiAgICBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSA9IGR3YXJmMl9wZXJfY3Vfb2JqZmlsZSAocGVyX2N1KTsKLUBAIC0yMTI4LDI5 ICsyMjkxLDE4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAorQEAgLTIxNDAsMjkgKzIzMDMsMTggQEAg ZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUsCiAgICBpZiAoc2l6ZSA9PSAwKQogICAgICByZXR1cm4gYWxsb2Nh dGVfb3B0aW1pemVkX291dF92YWx1ZSAodHlwZSk7CiAgCkBAIC0xNDc2LDcgKzc0Miw3IEBAIGlu ZGV4IDM4ZTQ4MTQuLjQ2YTAzM2QgMTAwNjQ0CiAgCSAgcmV0dmFsID0gYWxsb2NhdGVfdmFsdWUg KHR5cGUpOwogIAkgIG1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFpbGFibGUgKHJldHZhbCwgMCwgVFlQ RV9MRU5HVEggKHR5cGUpKTsKICAJICByZXR1cm4gcmV0dmFsOwotQEAgLTIyMTQsNiArMjM2Niwx NiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKK0BAIC0yMjI2LDYgKzIzNzgsMTYgQEAgZHdhcmYyX2V2 YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWUsCiAgCSAgICBpbnQgaW5fc3RhY2tfbWVtb3J5ID0gZHdhcmZfZXhwcl9mZXRjaF9p bl9zdGFja19tZW1vcnkgKGN0eCwgMCk7CiAgCiAgCSAgICBkb19jbGVhbnVwcyAodmFsdWVfY2hh aW4pOwpAQCAtMTQ5Myw3ICs3NTksNyBAQCBpbmRleCAzOGU0ODE0Li40NmEwMzNkIDEwMDY0NAog IAkgICAgcmV0dmFsID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7CiAgCSAgICBWQUxVRV9M VkFMIChyZXR2YWwpID0gbHZhbF9tZW1vcnk7CiAgCSAgICBpZiAoaW5fc3RhY2tfbWVtb3J5KQot QEAgLTQxMzAsOCArNDI5Miw3IEBAIGxvY2xpc3RfdHJhY2Vwb2ludF92YXJfcmVmIChzdHJ1Y3Qg c3ltYm9sICpzeW1ib2wsIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTQxNDMsOCArNDMw NSw3IEBAIGxvY2xpc3RfdHJhY2Vwb2ludF92YXJfcmVmIChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2ws IHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogIAkJCSAgICAgICBkbGJhdG9uLT5wZXJfY3UpOwog IH0KICAKQEAgLTE1MDMsNyArNzY5LDcgQEAgaW5kZXggMzhlNDgxNC4uNDZhMDMzZCAxMDA2NDQK ICBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9mdW5jcyA9 IHsKICAgIGxvY2xpc3RfcmVhZF92YXJpYWJsZSwKICAgIGxvY2xpc3RfcmVhZF92YXJpYWJsZV9h dF9lbnRyeSwKLUBAIC00MTQwLDYgKzQzMDEsNDggQEAgY29uc3Qgc3RydWN0IHN5bWJvbF9jb21w dXRlZF9vcHMgZHdhcmYyX2xvY2xpc3RfZnVuY3MgPSB7CitAQCAtNDE1Myw2ICs0MzE0LDQ4IEBA IGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2NsaXN0X2Z1bmNzID0g ewogICAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9yZWYKICB9OwogIApAQCAtMTU1MywxMCArODE5 LDEwIEBAIGluZGV4IDM4ZTQ4MTQuLjQ2YTAzM2QgMTAwNjQ0CiAgZXh0ZXJuIGluaXRpYWxpemVf ZmlsZV9mdHlwZSBfaW5pdGlhbGl6ZV9kd2FyZjJsb2M7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2R3 YXJmMmxvYy5oIGIvZ2RiL2R3YXJmMmxvYy5oCi1pbmRleCBlOWQwNmEzLi5iZmE2Nzc2IDEwMDY0 NAoraW5kZXggMzY2NDFiMy4uMTM5NDU3OCAxMDA2NDQKIC0tLSBhL2dkYi9kd2FyZjJsb2MuaAog KysrIGIvZ2RiL2R3YXJmMmxvYy5oCi1AQCAtMTI3LDYgKzEyNywxNSBAQCBzdHJ1Y3QgZHdhcmYy X2xvY2xpc3RfYmF0b24KK0BAIC0xMzIsNiArMTMyLDE1IEBAIHN0cnVjdCBkd2FyZjJfbG9jbGlz dF9iYXRvbgogIAogIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2Fy ZjJfbG9jZXhwcl9mdW5jczsKICBleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9jb21wdXRlZF9v cHMgZHdhcmYyX2xvY2xpc3RfZnVuY3M7CkBAIC0xNTczLDE0NSArODM5LDEwIEBAIGluZGV4IGU5 ZDA2YTMuLmJmYTY3NzYgMTAwNjQ0CiAgLyogQ29tcGlsZSBhIERXQVJGIGxvY2F0aW9uIGV4cHJl c3Npb24gdG8gYW4gYWdlbnQgZXhwcmVzc2lvbi4KICAgICAKIGRpZmYgLS1naXQgYS9nZGIvZHdh cmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwotaW5kZXggZGVlZTVhMi4uYjJmMDUyYiAxMDA2 NDQKK2luZGV4IDdhNThjNDUuLjk4YWViYWQgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYycmVhZC5j CiArKysgYi9nZGIvZHdhcmYycmVhZC5jCi1AQCAtNjQsMjAgKzY0LDEyIEBACi0gI2luY2x1ZGUg ImdkYmNvcmUuaCIgLyogZm9yIGdudXRhcmdldCAqLwotICNpbmNsdWRlICJnZGIvZ2RiLWluZGV4 LmgiCi0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0rI2luY2x1ZGUgImdkYl9iZmQuaCIKLSAKLSAjaW5j bHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotICNpbmNsdWRlICJnZGJf YXNzZXJ0LmgiCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLSNpZmRlZiBIQVZFX1pMSUJfSAot LSNpbmNsdWRlIDx6bGliLmg+Ci0tI2VuZGlmCi0tI2lmZGVmIEhBVkVfTU1BUAotLSNpbmNsdWRl IDxzeXMvbW1hbi5oPgotLSNpZm5kZWYgTUFQX0ZBSUxFRAotLSNkZWZpbmUgTUFQX0ZBSUxFRCAo KHZvaWQgKikgLTEpCi0tI2VuZGlmCi0tI2VuZGlmCi0gCi0gdHlwZWRlZiBzdHJ1Y3Qgc3ltYm9s ICpzeW1ib2xwOwotIERFRl9WRUNfUCAoc3ltYm9scCk7Ci1AQCAtOTUsOCArODcsNiBAQCBzdGF0 aWMgaW50IGNoZWNrX3BoeXNuYW1lID0gMDsKLSAvKiBXaGVuIG5vbi16ZXJvLCBkbyBub3QgcmVq ZWN0IGRlcHJlY2F0ZWQgLmdkYl9pbmRleCBzZWN0aW9ucy4gICovCi0gc3RhdGljIGludCB1c2Vf ZGVwcmVjYXRlZF9pbmRleF9zZWN0aW9ucyA9IDA7Ci0gCi0tc3RhdGljIGludCBwYWdlc2l6ZTsK LS0KLSAvKiBXaGVuIHNldCwgdGhlIGZpbGUgdGhhdCB3ZSdyZSBwcm9jZXNzaW5nIGlzIGtub3du IHRvIGhhdmUgZGVidWdnaW5nCi0gICAgaW5mbyBmb3IgQysrIG5hbWVzcGFjZXMuICBHQ0MgMy4z LnggZGlkIG5vdCBwcm9kdWNlIHRoaXMgaW5mb3JtYXRpb24sCi0gICAgYnV0IGxhdGVyIHZlcnNp b25zIGRvLiAgKi8KLUBAIC0xMTAsMTAgKzEwMCw2IEBAIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9p bmZvCi0gICBhc2VjdGlvbiAqYXNlY3Rpb247Ci0gICBnZGJfYnl0ZSAqYnVmZmVyOwotICAgYmZk X3NpemVfdHlwZSBzaXplOwotLSAgLyogTm90IE5VTEwgaWYgdGhlIHNlY3Rpb24gd2FzIGFjdHVh bGx5IG1tYXBwZWQuICAqLwotLSAgdm9pZCAqbWFwX2FkZHI7Ci0tICAvKiBQYWdlIGFsaWduZWQg c2l6ZSBvZiBtbWFwcGVkIGFyZWEuICAqLwotLSAgYmZkX3NpemVfdHlwZSBtYXBfbGVuOwotICAg LyogVHJ1ZSBpZiB3ZSBoYXZlIHRyaWVkIHRvIHJlYWQgdGhpcyBzZWN0aW9uLiAgKi8KLSAgIGlu dCByZWFkaW47Ci0gfTsKLUBAIC0yNDcsNiArMjMzLDEwIEBAIHN0cnVjdCBkd2FyZjJfcGVyX29i amZpbGUKLSAgICAgIFRoaXMgaXMgTlVMTCBpZiB0aGUgdGFibGUgaGFzbid0IGJlZW4gYWxsb2Nh dGVkIHlldC4gICovCi0gICBodGFiX3QgZHdvX2ZpbGVzOwotIAotKyAgLyogVGhlIHNoYXJlZCAn LmR3eicgZmlsZSwgaWYgb25lIGV4aXN0cy4gIFRoaXMgaXMgdXNlZCB3aGVuIHRoZQotKyAgICAg b3JpZ2luYWwgZGF0YSB3YXMgY29tcHJlc3NlZCB1c2luZyAnZHd6IC1tJy4gICovCi0rICBzdHJ1 Y3QgZHd6X2ZpbGUgKmR3el9maWxlOwotKwotICAgLyogQSBmbGFnIGluZGljYXRpbmcgd2V0aGVy IHRoaXMgb2JqZmlsZSBoYXMgYSBzZWN0aW9uIGxvYWRlZCBhdCBhCi0gICAgICBWTUEgb2YgMC4g ICovCi0gICBpbnQgaGFzX3NlY3Rpb25fYXRfemVybzsKLUBAIC01MDUsMTUgKzQ5NSwxMyBAQCBz dHJ1Y3QgZHdhcmYyX2N1Ci0gCi0gc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YQotIHsKLS0gIC8q IFRoZSBzdGFydCBvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGlzIGNvbXBpbGF0aW9uIHVuaXQuICAy KioyOS0xCi0tICAgICBieXRlcyBzaG91bGQgc3VmZmljZSB0byBzdG9yZSB0aGUgbGVuZ3RoIG9m IGFueSBjb21waWxhdGlvbiB1bml0Ci0tICAgICAtIGlmIGl0IGRvZXNuJ3QsIEdEQiB3aWxsIGZh bGwgb3ZlciBhbnl3YXkuCi0rICAvKiBUaGUgc3RhcnQgb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhp cyBjb21waWxhdGlvbiB1bml0LgotICAgICAgTk9URTogVW5saWtlIGNvbXBfdW5pdF9oZWFkLmxl bmd0aCwgdGhpcyBsZW5ndGggaW5jbHVkZXMKLSAgICAgIGluaXRpYWxfbGVuZ3RoX3NpemUuCi0g ICAgICBJZiB0aGUgRElFIHJlZmVycyB0byBhIERXTyBmaWxlLCB0aGlzIGlzIGFsd2F5cyBvZiB0 aGUgb3JpZ2luYWwgZGllLAotICAgICAgbm90IHRoZSBEV08gZmlsZS4gICovCi0gICBzZWN0X29m ZnNldCBvZmZzZXQ7Ci0tICB1bnNpZ25lZCBpbnQgbGVuZ3RoIDogMjk7Ci0rICB1bnNpZ25lZCBp bnQgbGVuZ3RoOwotIAotICAgLyogRmxhZyBpbmRpY2F0aW5nIHRoaXMgY29tcGlsYXRpb24gdW5p dCB3aWxsIGJlIHJlYWQgaW4gYmVmb3JlCi0gICAgICBhbnkgb2YgdGhlIGN1cnJlbnQgY29tcGls YXRpb24gdW5pdHMgYXJlIHByb2Nlc3NlZC4gICovCi1AQCAtNTI4LDYgKzUxNiw5IEBAIHN0cnVj dCBkd2FyZjJfcGVyX2N1X2RhdGEKLSAgIC8qIE5vbi16ZXJvIGlmIHRoaXMgQ1UgaXMgZnJvbSAu ZGVidWdfdHlwZXMuICAqLwotICAgdW5zaWduZWQgaW50IGlzX2RlYnVnX3R5cGVzIDogMTsKLSAK LSsgIC8qIE5vbi16ZXJvIGlmIHRoaXMgQ1UgaXMgZnJvbSB0aGUgLmR3eiBmaWxlLiAgKi8KLSsg IHVuc2lnbmVkIGludCBpc19kd3ogOiAxOwotKwotICAgLyogVGhlIHNlY3Rpb24gdGhpcyBDVS9U VSBsaXZlcyBpbi4KLSAgICAgIElmIHRoZSBESUUgcmVmZXJzIHRvIGEgRFdPIGZpbGUsIHRoaXMg aXMgYWx3YXlzIHRoZSBvcmlnaW5hbCBkaWUsCi0gICAgICBub3QgdGhlIERXTyBmaWxlLiAgKi8K LUBAIC03MTUsNiArNzA2LDIyIEBAIHN0cnVjdCBkd29fZmlsZQotICAgaHRhYl90IHR1czsKLSB9 OwotIAotKy8qIFRoaXMgcmVwcmVzZW50cyBhICcuZHd6JyBmaWxlLiAgKi8KLSsKLStzdHJ1Y3Qg ZHd6X2ZpbGUKLSt7Ci0rICAvKiBBIGR3eiBmaWxlIGNhbiBvbmx5IGNvbnRhaW4gYSBmZXcgc2Vj dGlvbnMuICAqLwotKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gYWJicmV2OwotKyAgc3Ry dWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gaW5mbzsKLSsgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9p bmZvIHN0cjsKLSsgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGxpbmU7Ci0rICBzdHJ1Y3Qg ZHdhcmYyX3NlY3Rpb25faW5mbyBtYWNybzsKLSsgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZv IGdkYl9pbmRleDsKLSsKLSsgIC8qIFRoZSBkd3oncyBCRkQuICAqLwotKyAgYmZkICpkd3pfYmZk OwotK307Ci0rCi0gLyogU3RydWN0IHVzZWQgdG8gcGFzcyBtaXNjLiBwYXJhbWV0ZXJzIHRvIHJl YWRfZGllX2FuZF9jaGlsZHJlbiwgZXQKLSAgICBhbC4gIHdoaWNoIGFyZSB1c2VkIGZvciBib3Ro IC5kZWJ1Z19pbmZvIGFuZCAuZGVidWdfdHlwZXMgZGllcy4KLSAgICBBbGwgcGFyYW1ldGVycyBo ZXJlIGFyZSB1bmNoYW5naW5nIGZvciB0aGUgbGlmZSBvZiB0aGUgY2FsbC4gIFRoaXMKLUBAIC04 MjgsNiArODM1LDEyIEBAIHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvCi0gICAgIC8qIEZsYWcgc2V0 IGlmIGZpeHVwX3BhcnRpYWxfZGllIGhhcyBiZWVuIGNhbGxlZCBvbiB0aGlzIGRpZS4gICovCi0g ICAgIHVuc2lnbmVkIGludCBmaXh1cF9jYWxsZWQgOiAxOwotIAotKyAgICAvKiBGbGFnIHNldCBp ZiBEV19UQUdfaW1wb3J0ZWRfdW5pdCB1c2VzIERXX0ZPUk1fR05VX3JlZl9hbHQuICAqLwotKyAg ICB1bnNpZ25lZCBpbnQgaXNfZHd6IDogMTsKLSsKLSsgICAgLyogRmxhZyBzZXQgaWYgc3BlY19v ZmZzZXQgdXNlcyBEV19GT1JNX0dOVV9yZWZfYWx0LiAgKi8KLSsgICAgdW5zaWduZWQgaW50IHNw ZWNfaXNfZHd6IDogMTsKLSsKLSAgICAgLyogVGhlIG5hbWUgb2YgdGhpcyBESUUuICBOb3JtYWxs eSB0aGUgdmFsdWUgb2YgRFdfQVRfbmFtZSwgYnV0Ci0gICAgICAgIHNvbWV0aW1lcyBhIGRlZmF1 bHQgbmFtZSBmb3IgdW5uYW1lZCBESUVzLiAgKi8KLSAgICAgY2hhciAqbmFtZTsKLUBAIC0xMjEz LDcgKzEyMjYsNyBAQCBzdGF0aWMgZ2RiX2J5dGUgKnJlYWRfcGFydGlhbF9kaWUgKGNvbnN0IHN0 cnVjdCBkaWVfcmVhZGVyX3NwZWNzICosCi0gCQkJCSAgIHVuc2lnbmVkIGludCwKLSAJCQkJICAg Z2RiX2J5dGUgKik7Ci0gCi0tc3RhdGljIHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpmaW5kX3Bh cnRpYWxfZGllIChzZWN0X29mZnNldCwKLStzdGF0aWMgc3RydWN0IHBhcnRpYWxfZGllX2luZm8g KmZpbmRfcGFydGlhbF9kaWUgKHNlY3Rfb2Zmc2V0LCBpbnQsCi0gCQkJCQkJICBzdHJ1Y3QgZHdh cmYyX2N1ICopOwotIAotIHN0YXRpYyB2b2lkIGZpeHVwX3BhcnRpYWxfZGllIChzdHJ1Y3QgcGFy dGlhbF9kaWVfaW5mbyAqLAotQEAgLTEyNTgsNiArMTI3MSw4IEBAIHN0YXRpYyBjaGFyICpyZWFk X2luZGlyZWN0X3N0cmluZyAoYmZkICosIGdkYl9ieXRlICosCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY29tcF91bml0X2hlYWQgKiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqKTsKLSAKLStzdGF0aWMg Y2hhciAqcmVhZF9pbmRpcmVjdF9zdHJpbmdfZnJvbV9kd3ogKHN0cnVjdCBkd3pfZmlsZSAqLCBM T05HRVNUKTsKLSsKLSBzdGF0aWMgVUxPTkdFU1QgcmVhZF91bnNpZ25lZF9sZWIxMjggKGJmZCAq LCBnZGJfYnl0ZSAqLCB1bnNpZ25lZCBpbnQgKik7Ci0gCi0gc3RhdGljIExPTkdFU1QgcmVhZF9z aWduZWRfbGViMTI4IChiZmQgKiwgZ2RiX2J5dGUgKiwgdW5zaWduZWQgaW50ICopOwotQEAgLTE1 MDksNiArMTUyNCw5IEBAIHN0YXRpYyB2b2lkIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAoc3RydWN0 IGR3YXJmMl9jdSAqY3UsCitAQCAtMTYxMyw2ICsxNjEzLDkgQEAgc3RhdGljIHZvaWQgZmlsbF9p bl9sb2NsaXN0X2JhdG9uIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKICAJCQkJICAgc3RydWN0IGR3 YXJmMl9sb2NsaXN0X2JhdG9uICpiYXRvbiwKICAJCQkJICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0 cik7CiAgCkBAIC0xNzIxLDE2ICs4NTIsNyBAQCBpbmRleCBkZWVlNWEyLi5iMmYwNTJiIDEwMDY0 NAogIHN0YXRpYyB2b2lkIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJp YnV0ZSAqYXR0ciwKICAJCQkJCSBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAgCQkJCQkgc3RydWN0IGR3 YXJmMl9jdSAqY3UpOwotQEAgLTE1MjQsNyArMTU0Miw3IEBAIHN0YXRpYyBoYXNodmFsX3QgcGFy dGlhbF9kaWVfaGFzaCAoY29uc3Qgdm9pZCAqaXRlbSk7Ci0gc3RhdGljIGludCBwYXJ0aWFsX2Rp ZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKTsKLSAKLSBz dGF0aWMgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqZHdhcmYyX2ZpbmRfY29udGFpbmluZ19j b21wX3VuaXQKLS0gIChzZWN0X29mZnNldCBvZmZzZXQsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl KTsKLSsgIChzZWN0X29mZnNldCBvZmZzZXQsIHVuc2lnbmVkIGludCBvZmZzZXRfaW5fZHd6LCBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7Ci0gCi0gc3RhdGljIHZvaWQgaW5pdF9vbmVfY29tcF91 bml0IChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKLSAJCQkJc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0 YSAqcGVyX2N1KTsKLUBAIC0xNTQxLDYgKzE1NTksOSBAQCBzdGF0aWMgdm9pZCBhZ2VfY2FjaGVk X2NvbXBfdW5pdHMgKHZvaWQpOworQEAgLTE2NDUsNiArMTY0OCw5IEBAIHN0YXRpYyB2b2lkIGFn ZV9jYWNoZWRfY29tcF91bml0cyAodm9pZCk7CiAgCiAgc3RhdGljIHZvaWQgZnJlZV9vbmVfY2Fj aGVkX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKTsKICAKQEAgLTE3NDAs NyArODYyLDcgQEAgaW5kZXggZGVlZTVhMi4uYjJmMDUyYiAxMDA2NDQKICBzdGF0aWMgc3RydWN0 IHR5cGUgKnNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCB0eXBlICosCiAg CQkJCSAgc3RydWN0IGR3YXJmMl9jdSAqKTsKICAKLUBAIC0xNTY5LDYgKzE1OTAsOSBAQCBzdGF0 aWMgc3RydWN0IHR5cGUgKmdldF9kaWVfdHlwZV9hdF9vZmZzZXQgKHNlY3Rfb2Zmc2V0LAorQEAg LTE2NzMsNiArMTY3OSw5IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlX2F0X29m ZnNldCAoc2VjdF9vZmZzZXQsCiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICpnZXRfZGllX3R5cGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7CiAgCkBAIC0xNzUw LDkwNSArODcyLDUxIEBAIGluZGV4IGRlZWU1YTIuLmIyZjA1MmIgMTAwNjQ0CiAgc3RhdGljIHZv aWQgZHdhcmYyX3JlbGVhc2VfcXVldWUgKHZvaWQgKmR1bW15KTsKICAKICBzdGF0aWMgdm9pZCBx dWV1ZV9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSwKLUBAIC0x NTg3LDYgKzE2MTEsMTIgQEAgc3RhdGljIHZvaWQgZmluZF9maWxlX2FuZF9kaXJlY3RvcnkgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLAotIHN0YXRpYyBjaGFyICpmaWxlX2Z1bGxfbmFtZSAoaW50IGZp bGUsIHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsCi0gCQkJICAgICBjb25zdCBjaGFyICpjb21wX2Rp cik7Ci0gCi0rc3RhdGljIGdkYl9ieXRlICpyZWFkX2FuZF9jaGVja19jb21wX3VuaXRfaGVhZAot KyAgKHN0cnVjdCBjb21wX3VuaXRfaGVhZCAqaGVhZGVyLAotKyAgIHN0cnVjdCBkd2FyZjJfc2Vj dGlvbl9pbmZvICpzZWN0aW9uLAotKyAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICphYmJy ZXZfc2VjdGlvbiwgZ2RiX2J5dGUgKmluZm9fcHRyLAotKyAgIGludCBpc19kZWJ1Z190eXBlc19z ZWN0aW9uKTsKLSsKLSBzdGF0aWMgdm9pZCBpbml0X2N1dHVfYW5kX3JlYWRfZGllcwotICAgKHN0 cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnRoaXNfY3UsIHN0cnVjdCBhYmJyZXZfdGFibGUgKmFi YnJldl90YWJsZSwKLSAgICBpbnQgdXNlX2V4aXN0aW5nX2N1LCBpbnQga2VlcCwKLUBAIC0xNjA4 LDggKzE2MzgsNiBAQCBzdGF0aWMgc3RydWN0IGR3b191bml0ICpsb29rdXBfZHdvX3R5cGVfdW5p dAotIAotIHN0YXRpYyB2b2lkIGZyZWVfZHdvX2ZpbGVfY2xlYW51cCAodm9pZCAqKTsKLSAKLS1z dGF0aWMgdm9pZCBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9p bmZvICopOwotLQotIHN0YXRpYyB2b2lkIHByb2Nlc3NfY3VfaW5jbHVkZXMgKHZvaWQpOwotIAot ICNpZiBXT1JEU19CSUdFTkRJQU4KLUBAIC0xNzc5LDg1ICsxODA3LDYgQEAgZHdhcmYyX2xvY2F0 ZV9zZWN0aW9ucyAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjdHAsIHZvaWQgKnZuYW1lcykKLSAg ICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5oYXNfc2VjdGlvbl9hdF96ZXJvID0gMTsKLSB9Ci0gCi0t LyogRGVjb21wcmVzcyBhIHNlY3Rpb24gdGhhdCB3YXMgY29tcHJlc3NlZCB1c2luZyB6bGliLiAg U3RvcmUgdGhlCi0tICAgZGVjb21wcmVzc2VkIGJ1ZmZlciwgYW5kIGl0cyBzaXplLCBpbiBPVVRC VUYgYW5kIE9VVFNJWkUuICAqLwotLQotLXN0YXRpYyB2b2lkCi0temxpYl9kZWNvbXByZXNzX3Nl Y3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBhc2VjdGlvbiAqc2VjdHAsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgIGdkYl9ieXRlICoqb3V0YnVmLCBiZmRfc2l6ZV90eXBlICpvdXRz aXplKQotLXsKLS0gIGJmZCAqYWJmZCA9IHNlY3RwLT5vd25lcjsKLS0jaWZuZGVmIEhBVkVfWkxJ Ql9ICi0tICBlcnJvciAoXygiU3VwcG9ydCBmb3IgemxpYi1jb21wcmVzc2VkIERXQVJGIGRhdGEg KGZyb20gJyVzJykgIgotLSAgICAgICAgICAgImlzIGRpc2FibGVkIGluIHRoaXMgY29weSBvZiBH REIiKSwKLS0gICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7Ci0tI2Vsc2UKLS0gIGJm ZF9zaXplX3R5cGUgY29tcHJlc3NlZF9zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3Rw KTsKLS0gIGdkYl9ieXRlICpjb21wcmVzc2VkX2J1ZmZlciA9IHhtYWxsb2MgKGNvbXByZXNzZWRf c2l6ZSk7Ci0tICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cCA9IG1ha2VfY2xlYW51cCAoeGZyZWUs IGNvbXByZXNzZWRfYnVmZmVyKTsKLS0gIGJmZF9zaXplX3R5cGUgdW5jb21wcmVzc2VkX3NpemU7 Ci0tICBnZGJfYnl0ZSAqdW5jb21wcmVzc2VkX2J1ZmZlcjsKLS0gIHpfc3RyZWFtIHN0cm07Ci0t ICBpbnQgcmM7Ci0tICBpbnQgaGVhZGVyX3NpemUgPSAxMjsKLS0KLS0gIGlmIChiZmRfc2VlayAo YWJmZCwgc2VjdHAtPmZpbGVwb3MsIFNFRUtfU0VUKSAhPSAwCi0tICAgICAgfHwgYmZkX2JyZWFk IChjb21wcmVzc2VkX2J1ZmZlciwKLS0JCSAgICBjb21wcmVzc2VkX3NpemUsIGFiZmQpICE9IGNv bXByZXNzZWRfc2l6ZSkKLS0gICAgZXJyb3IgKF8oIkR3YXJmIEVycm9yOiBDYW4ndCByZWFkIERX QVJGIGRhdGEgZnJvbSAnJXMnIiksCi0tICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZk KSk7Ci0tCi0tICAvKiBSZWFkIHRoZSB6bGliIGhlYWRlci4gIEluIHRoaXMgY2FzZSwgaXQgc2hv dWxkIGJlICJaTElCIiBmb2xsb3dlZAotLSAgICAgYnkgdGhlIHVuY29tcHJlc3NlZCBzZWN0aW9u IHNpemUsIDggYnl0ZXMgaW4gYmlnLWVuZGlhbiBvcmRlci4gICovCi0tICBpZiAoY29tcHJlc3Nl ZF9zaXplIDwgaGVhZGVyX3NpemUKLS0gICAgICB8fCBzdHJuY21wIChjb21wcmVzc2VkX2J1ZmZl ciwgIlpMSUIiLCA0KSAhPSAwKQotLSAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IENvcnJ1cHQg RFdBUkYgWkxJQiBoZWFkZXIgZnJvbSAnJXMnIiksCi0tICAgICAgICAgICBiZmRfZ2V0X2ZpbGVu YW1lIChhYmZkKSk7Ci0tICB1bmNvbXByZXNzZWRfc2l6ZSA9IGNvbXByZXNzZWRfYnVmZmVyWzRd OyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLS0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXBy ZXNzZWRfYnVmZmVyWzVdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLS0gIHVuY29tcHJlc3Nl ZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzZdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsK LS0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzddOyB1bmNvbXByZXNz ZWRfc2l6ZSA8PD0gODsKLS0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVy WzhdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLS0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNv bXByZXNzZWRfYnVmZmVyWzldOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLS0gIHVuY29tcHJl c3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzEwXTsgdW5jb21wcmVzc2VkX3NpemUgPDw9 IDg7Ci0tICB1bmNvbXByZXNzZWRfc2l6ZSArPSBjb21wcmVzc2VkX2J1ZmZlclsxMV07Ci0tCi0t ICAvKiBJdCBpcyBwb3NzaWJsZSB0aGUgc2VjdGlvbiBjb25zaXN0cyBvZiBzZXZlcmFsIGNvbXBy ZXNzZWQKLS0gICAgIGJ1ZmZlcnMgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyLCBzbyB3ZSB1bmNvbXBy ZXNzIGluIGEgbG9vcC4gICovCi0tICBzdHJtLnphbGxvYyA9IE5VTEw7Ci0tICBzdHJtLnpmcmVl ID0gTlVMTDsKLS0gIHN0cm0ub3BhcXVlID0gTlVMTDsKLS0gIHN0cm0uYXZhaWxfaW4gPSBjb21w cmVzc2VkX3NpemUgLSBoZWFkZXJfc2l6ZTsKLS0gIHN0cm0ubmV4dF9pbiA9IChCeXRlZiopIGNv bXByZXNzZWRfYnVmZmVyICsgaGVhZGVyX3NpemU7Ci0tICBzdHJtLmF2YWlsX291dCA9IHVuY29t cHJlc3NlZF9zaXplOwotLSAgdW5jb21wcmVzc2VkX2J1ZmZlciA9IG9ic3RhY2tfYWxsb2MgKCZv YmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5jb21wcmVzc2VkX3NpemUpOwotLSAgcmMgPSBpbmZsYXRlSW5pdCAoJnN0cm0p OwotLSAgd2hpbGUgKHN0cm0uYXZhaWxfaW4gPiAwKQotLSAgICB7Ci0tICAgICAgaWYgKHJjICE9 IFpfT0spCi0tICAgICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IHNldHRpbmcgdXAgRFdBUkYg dW5jb21wcmVzc2lvbiBpbiAnJXMnOiAlZCIpLAotLSAgICAgICAgICAgICAgIGJmZF9nZXRfZmls ZW5hbWUgKGFiZmQpLCByYyk7Ci0tICAgICAgc3RybS5uZXh0X291dCA9ICgoQnl0ZWYqKSB1bmNv bXByZXNzZWRfYnVmZmVyCi0tICAgICAgICAgICAgICAgICAgICAgICArICh1bmNvbXByZXNzZWRf c2l6ZSAtIHN0cm0uYXZhaWxfb3V0KSk7Ci0tICAgICAgcmMgPSBpbmZsYXRlICgmc3RybSwgWl9G SU5JU0gpOwotLSAgICAgIGlmIChyYyAhPSBaX1NUUkVBTV9FTkQpCi0tICAgICAgICBlcnJvciAo XygiRHdhcmYgRXJyb3I6IHpsaWIgZXJyb3IgdW5jb21wcmVzc2luZyBmcm9tICclcyc6ICVkIiks Ci0tICAgICAgICAgICAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksIHJjKTsKLS0gICAgICBy YyA9IGluZmxhdGVSZXNldCAoJnN0cm0pOwotLSAgICB9Ci0tICByYyA9IGluZmxhdGVFbmQgKCZz dHJtKTsKLS0gIGlmIChyYyAhPSBaX09LCi0tICAgICAgfHwgc3RybS5hdmFpbF9vdXQgIT0gMCkK LS0gICAgZXJyb3IgKF8oIkR3YXJmIEVycm9yOiBjb25jbHVkaW5nIERXQVJGIHVuY29tcHJlc3Np b24gaW4gJyVzJzogJWQiKSwKLS0gICAgICAgICAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLCBy Yyk7Ci0tCi0tICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0tICAqb3V0YnVmID0gdW5jb21wcmVz c2VkX2J1ZmZlcjsKLS0gICpvdXRzaXplID0gdW5jb21wcmVzc2VkX3NpemU7Ci0tI2VuZGlmCi0t fQotLQotIC8qIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgZGVjaWRlcyB3aGV0aGVyIGEgc2VjdGlv biBpcyBlbXB0eSwKLSAgICBvciBub3QgcHJlc2VudC4gICovCi0gCi1AQCAtMTg4NCw1NiArMTgz MywyNyBAQCBkd2FyZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3Ry dWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmluZm8pCi0gICBpZiAoaW5mby0+cmVhZGluKQotICAg ICByZXR1cm47Ci0gICBpbmZvLT5idWZmZXIgPSBOVUxMOwotLSAgaW5mby0+bWFwX2FkZHIgPSBO VUxMOwotICAgaW5mby0+cmVhZGluID0gMTsKLSAKLSAgIGlmIChkd2FyZjJfc2VjdGlvbl9lbXB0 eV9wIChpbmZvKSkKLSAgICAgcmV0dXJuOwotIAotLSAgLyogTm90ZSB0aGF0IEFCRkQgbWF5IG5v dCBiZSBmcm9tIE9CSkZJTEUsIGUuZy4gYSBEV08gc2VjdGlvbi4gICovCi0gICBhYmZkID0gc2Vj dHAtPm93bmVyOwotIAotLSAgLyogQ2hlY2sgaWYgdGhlIGZpbGUgaGFzIGEgNC1ieXRlIGhlYWRl ciBpbmRpY2F0aW5nIGNvbXByZXNzaW9uLiAgKi8KLS0gIGlmIChpbmZvLT5zaXplID4gc2l6ZW9m IChoZWFkZXIpCi0tICAgICAgJiYgYmZkX3NlZWsgKGFiZmQsIHNlY3RwLT5maWxlcG9zLCBTRUVL X1NFVCkgPT0gMAotLSAgICAgICYmIGJmZF9icmVhZCAoaGVhZGVyLCBzaXplb2YgKGhlYWRlciks IGFiZmQpID09IHNpemVvZiAoaGVhZGVyKSkKLS0gICAgewotLSAgICAgIC8qIFVwb24gZGVjb21w cmVzc2lvbiwgdXBkYXRlIHRoZSBidWZmZXIgYW5kIGl0cyBzaXplLiAgKi8KLS0gICAgICBpZiAo c3RybmNtcCAoaGVhZGVyLCAiWkxJQiIsIHNpemVvZiAoaGVhZGVyKSkgPT0gMCkKLS0gICAgICAg IHsKLS0gICAgICAgICAgemxpYl9kZWNvbXByZXNzX3NlY3Rpb24gKG9iamZpbGUsIHNlY3RwLCAm aW5mby0+YnVmZmVyLAotLQkJCQkgICAmaW5mby0+c2l6ZSk7Ci0tICAgICAgICAgIHJldHVybjsK LS0gICAgICAgIH0KLS0gICAgfQotLQotLSNpZmRlZiBIQVZFX01NQVAKLS0gIGlmIChwYWdlc2l6 ZSA9PSAwKQotLSAgICBwYWdlc2l6ZSA9IGdldHBhZ2VzaXplICgpOwotLQotLSAgLyogT25seSB0 cnkgdG8gbW1hcCBzZWN0aW9ucyB3aGljaCBhcmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50 IHRvCi0tICAgICB3YXN0ZSBzcGFjZSBkdWUgdG8gZnJhZ21lbnRhdGlvbi4gIEFsc28sIG9ubHkg dHJ5IG1tYXAgZm9yIHNlY3Rpb25zCi0tICAgICB3aXRob3V0IHJlbG9jYXRpb25zLiAgKi8KLS0K LS0gIGlmIChpbmZvLT5zaXplID4gNCAqIHBhZ2VzaXplICYmIChzZWN0cC0+ZmxhZ3MgJiBTRUNf UkVMT0MpID09IDApCi0rICAvKiBJZiB0aGUgc2VjdGlvbiBoYXMgcmVsb2NhdGlvbnMsIHdlIG11 c3QgcmVhZCBpdCBvdXJzZWx2ZXMuCi0rICAgICBPdGhlcndpc2Ugd2UgYXR0YWNoIGl0IHRvIHRo ZSBCRkQuICAqLwotKyAgaWYgKChzZWN0cC0+ZmxhZ3MgJiBTRUNfUkVMT0MpID09IDApCi0gICAg IHsKLS0gICAgICBpbmZvLT5idWZmZXIgPSBiZmRfbW1hcCAoYWJmZCwgMCwgaW5mby0+c2l6ZSwg UFJPVF9SRUFELAotLSAgICAgICAgICAgICAgICAgICAgICAgICBNQVBfUFJJVkFURSwgc2VjdHAt PmZpbGVwb3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICZpbmZvLT5tYXBfYWRkciwgJmlu Zm8tPm1hcF9sZW4pOwotKyAgICAgIGNvbnN0IGdkYl9ieXRlICpieXRlcyA9IGdkYl9iZmRfbWFw X3NlY3Rpb24gKHNlY3RwLCAmaW5mby0+c2l6ZSk7Ci0gCi0tICAgICAgaWYgKChjYWRkcl90KWlu Zm8tPmJ1ZmZlciAhPSBNQVBfRkFJTEVEKQotLQl7Ci0tI2lmIEhBVkVfUE9TSVhfTUFEVklTRQot LQkgIHBvc2l4X21hZHZpc2UgKGluZm8tPm1hcF9hZGRyLCBpbmZvLT5tYXBfbGVuLCBQT1NJWF9N QURWX1dJTExORUVEKTsKLS0jZW5kaWYKLS0JICByZXR1cm47Ci0tCX0KLSsgICAgICAvKiBXZSBo YXZlIHRvIGNhc3QgYXdheSBjb25zdCBoZXJlIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMuCi0rCSBG aXhpbmcgZHdhcmYycmVhZCB0byBiZSBjb25zdC1jb3JyZWN0IHdvdWxkIGJlIHF1aXRlIG5pY2Uu ICAqLwotKyAgICAgIGluZm8tPmJ1ZmZlciA9IChnZGJfYnl0ZSAqKSBieXRlczsKLSsgICAgICBy ZXR1cm47Ci0gICAgIH0KLS0jZW5kaWYKLSAKLS0gIC8qIElmIHdlIGdldCBoZXJlLCB3ZSBhcmUg YSBub3JtYWwsIG5vdC1jb21wcmVzc2VkIHNlY3Rpb24uICAqLwotLSAgaW5mby0+YnVmZmVyID0g YnVmCi0tICAgID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgaW5m by0+c2l6ZSk7Ci0rICBidWYgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0 YWNrLCBpbmZvLT5zaXplKTsKLSsgIGluZm8tPmJ1ZmZlciA9IGJ1ZjsKLSAKLSAgIC8qIFdoZW4g ZGVidWdnaW5nIC5vIGZpbGVzLCB3ZSBtYXkgbmVlZCB0byBhcHBseSByZWxvY2F0aW9uczsgc2Vl Ci0gICAgICBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwMi0wNC9tc2cw MDEzNi5odG1sIC4KLUBAIC0yMDA5LDYgKzE5MjksMTExIEBAIGR3YXJmMl9nZXRfc2VjdGlvbl9p bmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAgICpzaXplcCA9IGluZm8tPnNpemU7CitA QCAtMTE2NzcsNiArMTE2ODYsMjkgQEAgcHJvY2Vzc19lbnVtZXJhdGlvbl9zY29wZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgbmV3X3N5bWJvbCAoZGll LCB0aGlzX3R5cGUsIGN1KTsKICB9CiAgCi0rLyogQSBoZWxwZXIgZnVuY3Rpb24gdG8gZmluZCB0 aGUgc2VjdGlvbnMgZm9yIGEgLmR3eiBmaWxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2xvY2F0 ZV9kd3pfc2VjdGlvbnMgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlY3RwLCB2b2lkICphcmcpCi0r ewotKyAgc3RydWN0IGR3el9maWxlICpkd3pfZmlsZSA9IGFyZzsKLSsKLSsgIC8qIE5vdGUgdGhh dCB3ZSBvbmx5IHN1cHBvcnQgdGhlIHN0YW5kYXJkIEVMRiBuYW1lcywgYmVjYXVzZSAuZHd6Ci0r ICAgICBpcyBFTEYtb25seSAoYXQgdGhlIHRpbWUgb2Ygd3JpdGluZykuICAqLwotKyAgaWYgKHNl Y3Rpb25faXNfcCAoc2VjdHAtPm5hbWUsICZkd2FyZjJfZWxmX25hbWVzLmFiYnJldikpCi0rICAg IHsKLSsgICAgICBkd3pfZmlsZS0+YWJicmV2LmFzZWN0aW9uID0gc2VjdHA7Ci0rICAgICAgZHd6 X2ZpbGUtPmFiYnJldi5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKLSsgICAg fQotKyAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFtZSwgJmR3YXJmMl9lbGZfbmFt ZXMuaW5mbykpCi0rICAgIHsKLSsgICAgICBkd3pfZmlsZS0+aW5mby5hc2VjdGlvbiA9IHNlY3Rw OwotKyAgICAgIGR3el9maWxlLT5pbmZvLnNpemUgPSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2Vj dHApOwotKyAgICB9Ci0rICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAmZHdh cmYyX2VsZl9uYW1lcy5zdHIpKQotKyAgICB7Ci0rICAgICAgZHd6X2ZpbGUtPnN0ci5hc2VjdGlv biA9IHNlY3RwOwotKyAgICAgIGR3el9maWxlLT5zdHIuc2l6ZSA9IGJmZF9nZXRfc2VjdGlvbl9z aXplIChzZWN0cCk7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHNlY3Rpb25faXNfcCAoc2VjdHAtPm5h bWUsICZkd2FyZjJfZWxmX25hbWVzLmxpbmUpKQotKyAgICB7Ci0rICAgICAgZHd6X2ZpbGUtPmxp bmUuYXNlY3Rpb24gPSBzZWN0cDsKLSsgICAgICBkd3pfZmlsZS0+bGluZS5zaXplID0gYmZkX2dl dF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKLSsgICAgfQotKyAgZWxzZSBpZiAoc2VjdGlvbl9pc19w IChzZWN0cC0+bmFtZSwgJmR3YXJmMl9lbGZfbmFtZXMubWFjcm8pKQotKyAgICB7Ci0rICAgICAg ZHd6X2ZpbGUtPm1hY3JvLmFzZWN0aW9uID0gc2VjdHA7Ci0rICAgICAgZHd6X2ZpbGUtPm1hY3Jv LnNpemUgPSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdHApOwotKyAgICB9Ci0rICBlbHNlIGlm IChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAmZHdhcmYyX2VsZl9uYW1lcy5nZGJfaW5kZXgp KQotKyAgICB7Ci0rICAgICAgZHd6X2ZpbGUtPmdkYl9pbmRleC5hc2VjdGlvbiA9IHNlY3RwOwot KyAgICAgIGR3el9maWxlLT5nZGJfaW5kZXguc2l6ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChz ZWN0cCk7Ci0rICAgIH0KLSt9CisrLyogQ3JlYXRlIGEgbmV3IGFycmF5IGRpbWVuc2lvbiByZWZl cmVuY2luZyBpdHMgdGFyZ2V0IHR5cGUgVFlQRS4KICsKLSsvKiBPcGVuIHRoZSBzZXBhcmF0ZSAn LmR3eicgZGVidWcgZmlsZSwgaWYgbmVlZGVkLiAgRXJyb3IgaWYgdGhlIGZpbGUKLSsgICBjYW5u b3QgYmUgZm91bmQuICAqLworKyAgIE11bHRpZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBpbnRlcm5h bGx5IHJlcHJlc2VudGVkIGFzIGEgc3RhY2sgb2YKKysgICBzaW5nbGVkaW1lbnNpb25hbCBhcnJh eXMgYmVpbmcgcmVmZXJlbmNlZCBieSB0aGVpciBUWVBFX1RBUkdFVF9UWVBFLiAgKi8KICsKLStz dGF0aWMgc3RydWN0IGR3el9maWxlICoKLStkd2FyZjJfZ2V0X2R3el9maWxlICh2b2lkKQorK3N0 YXRpYyBzdHJ1Y3QgdHlwZSAqCisrY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHN0cnVj dCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwKKysJCQkgICAgICAgc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogK3sKLSsgIGJmZCAqYWJmZCwg KmR3el9iZmQ7Ci0rICBhc2VjdGlvbiAqc2VjdGlvbjsKLSsgIGdkYl9ieXRlICpkYXRhOwotKyAg c3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci0rICBjb25zdCBjaGFyICpmaWxlbmFtZTsKLSsgIHN0 cnVjdCBkd3pfZmlsZSAqcmVzdWx0OwotKwotKyAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+ZHd6 X2ZpbGUgIT0gTlVMTCkKLSsgICAgcmV0dXJuIGR3YXJmMl9wZXJfb2JqZmlsZS0+ZHd6X2ZpbGU7 Ci0rCi0rICBhYmZkID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLT5vYmZkOwotKyAgc2Vj dGlvbiA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAiLmdudV9kZWJ1Z2FsdGxpbmsi KTsKLSsgIGlmIChzZWN0aW9uID09IE5VTEwpCi0rICAgIGVycm9yIChfKCJjb3VsZCBub3QgZmlu ZCAnLmdudV9kZWJ1Z2FsdGxpbmsnIHNlY3Rpb24iKSk7Ci0rICBpZiAoIWJmZF9tYWxsb2NfYW5k X2dldF9zZWN0aW9uIChhYmZkLCBzZWN0aW9uLCAmZGF0YSkpCi0rICAgIGVycm9yIChfKCJjb3Vs ZCBub3QgcmVhZCAnLmdudV9kZWJ1Z2FsdGxpbmsnIHNlY3Rpb246ICVzIiksCi0rCSAgIGJmZF9l cnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKLSsgIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKHhm cmVlLCBkYXRhKTsKLSsKLSsgIGZpbGVuYW1lID0gZGF0YTsKLSsgIGlmICghSVNfQUJTT0xVVEVf UEFUSCAoZmlsZW5hbWUpKQotKyAgICB7Ci0rICAgICAgY2hhciAqYWJzID0gZ2RiX3JlYWxwYXRo IChkd2FyZjJfcGVyX29iamZpbGUtPm9iamZpbGUtPm5hbWUpOwotKyAgICAgIGNoYXIgKnJlbDsK LSsKLSsgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBhYnMpOwotKyAgICAgIGFicyA9IGxkaXJu YW1lIChhYnMpOwotKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGFicyk7Ci0rCi0rICAgICAg cmVsID0gY29uY2F0IChhYnMsIFNMQVNIX1NUUklORywgZmlsZW5hbWUsIChjaGFyICopIE5VTEwp OwotKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHJlbCk7Ci0rICAgICAgZmlsZW5hbWUgPSBy ZWw7Ci0rICAgIH0KLSsKLSsgIC8qIFRoZSBmb3JtYXQgaXMganVzdCBhIE5VTC10ZXJtaW5hdGVk IGZpbGUgbmFtZSwgZm9sbG93ZWQgYnkgdGhlCi0rICAgICBidWlsZC1pZC4gIEZvciBub3csIHRo b3VnaCwgd2UgaWdub3JlIHRoZSBidWlsZC1pZC4gICovCi0rICBkd3pfYmZkID0gZ2RiX2JmZF9v cGVuIChmaWxlbmFtZSwgZ251dGFyZ2V0LCAtMSk7Ci0rICBpZiAoZHd6X2JmZCA9PSBOVUxMKQot KyAgICBlcnJvciAoXygiY291bGQgbm90IHJlYWQgJyVzJzogJXMiKSwgZmlsZW5hbWUsCi0rCSAg IGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKLSsKLSsgIGlmICghYmZkX2NoZWNrX2Zv cm1hdCAoZHd6X2JmZCwgYmZkX29iamVjdCkpCi0rICAgIHsKLSsgICAgICBnZGJfYmZkX3VucmVm IChkd3pfYmZkKTsKLSsgICAgICBlcnJvciAoXygiZmlsZSAnJXMnIHdhcyBub3QgdXNhYmxlOiAl cyIpLCBmaWxlbmFtZSwKLSsJICAgICBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0r ICAgIH0KLSsKLSsgIHJlc3VsdCA9IE9CU1RBQ0tfWkFMTE9DICgmZHdhcmYyX3Blcl9vYmpmaWxl LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0rCQkJICAgc3RydWN0IGR3el9maWxlKTsKLSsg IHJlc3VsdC0+ZHd6X2JmZCA9IGR3el9iZmQ7CisrICB0eXBlID0gY3JlYXRlX2FycmF5X3R5cGUg KE5VTEwsIHR5cGUsIHJhbmdlX3R5cGUpOwogKwotKyAgYmZkX21hcF9vdmVyX3NlY3Rpb25zIChk d3pfYmZkLCBsb2NhdGVfZHd6X3NlY3Rpb25zLCByZXN1bHQpOworKyAgLyogVGhlc2UgZ2VuZXJp YyB0eXBlIGF0dHJpYnV0ZXMgbmVlZCB0byBiZSBmZXRjaGVkIGJ5CisrICAgICBldmFsdWF0ZV9z dWJleHBfc3RhbmRhcmQgPG11bHRpX2Y3N19zdWJzY3JpcHQ+J3MgY2FsbCBvZgorKyAgICAgdmFs dWVfc3Vic2NyaXB0ZWRfcnZhbHVlIG9ubHkgZm9yIHRoZSBpbm5lcm1vc3QgYXJyYXkgdHlwZS4g ICovCisrICBmZXRjaF9kaWVfdHlwZV9hdHRycyAoZGllLCB0eXBlLCBjdSk7CiArCi0rICBkb19j bGVhbnVwcyAoY2xlYW51cCk7CisrICAvKiBUaGVzZSBnZW5lcmljIHR5cGUgYXR0cmlidXRlcyBh cmUgY2hlY2tlZCBmb3IgYWxsb2NhdGVkL2Fzc29jaWF0ZWQKKysgICAgIHZhbGlkaXR5IHdoaWxl IGFjY2Vzc2luZyBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSy4gICovCisrICBmZXRjaF9kaWVf dHlwZV9hdHRycyAoZGllLCByYW5nZV90eXBlLCBjdSk7CiArCi0rICByZXR1cm4gcmVzdWx0Owor KyAgcmV0dXJuIHR5cGU7CiArfQotIAwKLSAvKiBEV0FSRiBxdWlja19zeW1ib2xzX2Z1bmN0aW9u cyBzdXBwb3J0LiAgKi8KLSAKLUBAIC0yMjc5LDIzICsyMzA0LDE5IEBAIGV4dHJhY3RfY3VfdmFs dWUgKGNvbnN0IGNoYXIgKmJ5dGVzLCBVTE9OR0VTVCAqcmVzdWx0KQotICAgcmV0dXJuIDE7Ci0g fQotIAotLS8qIFJlYWQgdGhlIENVIGxpc3QgZnJvbSB0aGUgbWFwcGVkIGluZGV4LCBhbmQgdXNl IGl0IHRvIGNyZWF0ZSBhbGwKLS0gICB0aGUgQ1Ugb2JqZWN0cyBmb3IgdGhpcyBvYmpmaWxlLiAg UmV0dXJuIDAgaWYgc29tZXRoaW5nIHdlbnQgd3JvbmcsCi0tICAgMSBpZiBldmVyeXRoaW5nIHdl bnQgb2suICAqLwotKy8qIEEgaGVscGVyIGZvciBjcmVhdGVfY3VzX2Zyb21faW5kZXggdGhhdCBo YW5kbGVzIGEgZ2l2ZW4gbGlzdCBvZgotKyAgIENVcy4gICovCisrCisgLyogRXh0cmFjdCBhbGwg aW5mb3JtYXRpb24gZnJvbSBhIERXX1RBR19hcnJheV90eXBlIERJRSBhbmQgcHV0IGl0IGluCisg ICAgdGhlIERJRSdzIHR5cGUgZmllbGQuICBGb3Igbm93LCB0aGlzIG9ubHkgaGFuZGxlcyBvbmUg ZGltZW5zaW9uYWwKKyAgICBhcnJheXMuICAqLworQEAgLTExNjkwLDcgKzExNzIyLDcgQEAgcmVh ZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up CisgICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGU7 CisgICBzdHJ1Y3QgdHlwZSAqKnJhbmdlX3R5cGVzID0gTlVMTDsKKyAgIHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHI7CistICBpbnQgbmRpbSA9IDA7CisrICBpbnQgbmRpbSA9IDAsIGk7CisgICBzdHJ1 Y3QgY2xlYW51cCAqYmFja190bzsKKyAgIGNoYXIgKm5hbWU7CiAgCi0gc3RhdGljIGludAotLWNy ZWF0ZV9jdXNfZnJvbV9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGdkYl9i eXRlICpjdV9saXN0LAotLQkJICAgICAgIG9mZnNldF90eXBlIGN1X2xpc3RfZWxlbWVudHMpCi0r Y3JlYXRlX2N1c19mcm9tX2luZGV4X2xpc3QgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJ CSAgICBjb25zdCBnZGJfYnl0ZSAqY3VfbGlzdCwgb2Zmc2V0X3R5cGUgbl9lbGVtZW50cywKLSsJ CQkgICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKnNlY3Rpb24sCi0rCQkJICAgIGludCBp c19kd3osCi0rCQkJICAgIGludCBiYXNlX29mZnNldCkKLSB7Ci0gICBvZmZzZXRfdHlwZSBpOwor QEAgLTExNzQzLDE3ICsxMTc3NSwxOSBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgIHR5cGUgPSBlbGVtZW50X3R5cGU7CiAg Ci0tICBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0cyA9IGN1X2xpc3RfZWxlbWVudHMg LyAyOwotLSAgZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0cwotLSAgICA9IG9ic3Rh Y2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0tCQkgICAgIGR3YXJmMl9wZXJf b2JqZmlsZS0+bl9jb21wX3VuaXRzCi0tCQkgICAgICogc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhICopKTsKLS0KLS0gIGZvciAoaSA9IDA7IGkgPCBjdV9saXN0X2VsZW1lbnRzOyBp ICs9IDIpCi0rICBmb3IgKGkgPSAwOyBpIDwgbl9lbGVtZW50czsgaSArPSAyKQotICAgICB7Ci0g ICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqdGhlX2N1OwotICAgICAgIFVMT05HRVNU IG9mZnNldCwgbGVuZ3RoOwotQEAgLTIzMTAsMTUgKzIzMzEsNDUgQEAgY3JlYXRlX2N1c19mcm9t X2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgZ2RiX2J5dGUgKmN1X2xpc3Qs Ci0gICAgICAgdGhlX2N1LT5vZmZzZXQuc2VjdF9vZmYgPSBvZmZzZXQ7Ci0gICAgICAgdGhlX2N1 LT5sZW5ndGggPSBsZW5ndGg7Ci0gICAgICAgdGhlX2N1LT5vYmpmaWxlID0gb2JqZmlsZTsKLS0g ICAgICB0aGVfY3UtPmluZm9fb3JfdHlwZXNfc2VjdGlvbiA9ICZkd2FyZjJfcGVyX29iamZpbGUt PmluZm87Ci0rICAgICAgdGhlX2N1LT5pbmZvX29yX3R5cGVzX3NlY3Rpb24gPSBzZWN0aW9uOwot ICAgICAgIHRoZV9jdS0+di5xdWljayA9IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmls ZV9vYnN0YWNrLAotIAkJCQkJc3RydWN0IGR3YXJmMl9wZXJfY3VfcXVpY2tfZGF0YSk7Ci0tICAg ICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tpIC8gMl0gPSB0aGVfY3U7Ci0r ICAgICAgdGhlX2N1LT5pc19kd3ogPSBpc19kd3o7Ci0rICAgICAgZHdhcmYyX3Blcl9vYmpmaWxl LT5hbGxfY29tcF91bml0c1tiYXNlX29mZnNldCArIGkgLyAyXSA9IHRoZV9jdTsKLSAgICAgfQot IAotICAgcmV0dXJuIDE7Ci0gfQotIAotKy8qIFJlYWQgdGhlIENVIGxpc3QgZnJvbSB0aGUgbWFw cGVkIGluZGV4LCBhbmQgdXNlIGl0IHRvIGNyZWF0ZSBhbGwKLSsgICB0aGUgQ1Ugb2JqZWN0cyBm b3IgdGhpcyBvYmpmaWxlLiAgUmV0dXJuIDAgaWYgc29tZXRoaW5nIHdlbnQgd3JvbmcsCi0rICAg MSBpZiBldmVyeXRoaW5nIHdlbnQgb2suICAqLwotKwotK3N0YXRpYyBpbnQKLStjcmVhdGVfY3Vz X2Zyb21faW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJICAgICAgIGNvbnN0IGdk Yl9ieXRlICpjdV9saXN0LCBvZmZzZXRfdHlwZSBjdV9saXN0X2VsZW1lbnRzLAotKwkJICAgICAg IGNvbnN0IGdkYl9ieXRlICpkd3pfbGlzdCwgb2Zmc2V0X3R5cGUgZHd6X2VsZW1lbnRzKQotK3sK LSsgIHN0cnVjdCBkd3pfZmlsZSAqZHd6OwotKwotKyAgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2Nv bXBfdW5pdHMgPSAoY3VfbGlzdF9lbGVtZW50cyArIGR3el9lbGVtZW50cykgLyAyOwotKyAgZHdh cmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0cwotKyAgICA9IG9ic3RhY2tfYWxsb2MgKCZv YmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0rCQkgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9j b21wX3VuaXRzCi0rCQkgICAgICogc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICop KTsKLSsKLSsgIGlmICghY3JlYXRlX2N1c19mcm9tX2luZGV4X2xpc3QgKG9iamZpbGUsIGN1X2xp c3QsIGN1X2xpc3RfZWxlbWVudHMsCi0rCQkJCSAgICZkd2FyZjJfcGVyX29iamZpbGUtPmluZm8s IDAsIDApKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmIChkd3pfZWxlbWVudHMgPT0gMCkKLSsg ICAgcmV0dXJuIDE7Ci0rCi0rICBkd3ogPSBkd2FyZjJfZ2V0X2R3el9maWxlICgpOwotKyAgcmV0 dXJuIGNyZWF0ZV9jdXNfZnJvbV9pbmRleF9saXN0IChvYmpmaWxlLCBkd3pfbGlzdCwgZHd6X2Vs ZW1lbnRzLAotKwkJCQkgICAgICZkd3otPmluZm8sIDEsIGN1X2xpc3RfZWxlbWVudHMgLyAyKTsK LSt9Ci0rCi0gLyogQ3JlYXRlIHRoZSBzaWduYXR1cmVkIHR5cGUgaGFzaCB0YWJsZSBmcm9tIHRo ZSBpbmRleC4gICovCi0gCi0gc3RhdGljIGludAotQEAgLTI1MDgsMzMgKzI1NTksNDQgQEAgZmlu ZF9zbG90X2luX21hcHBlZF9oYXNoIChzdHJ1Y3QgbWFwcGVkX2luZGV4ICppbmRleCwgY29uc3Qg Y2hhciAqbmFtZSwKLSAgICAgfQotIH0KLSAKLS0vKiBSZWFkIHRoZSBpbmRleCBmaWxlLiAgSWYg ZXZlcnl0aGluZyB3ZW50IG9rLCBpbml0aWFsaXplIHRoZSAicXVpY2siCi0tICAgZWxlbWVudHMg b2YgYWxsIHRoZSBDVXMgYW5kIHJldHVybiAxLiAgT3RoZXJ3aXNlLCByZXR1cm4gMC4gICovCi0r LyogQSBoZWxwZXIgZnVuY3Rpb24gdGhhdCByZWFkcyB0aGUgLmdkYl9pbmRleCBmcm9tIFNFQ1RJ T04gYW5kIGZpbGxzCi0rICAgaW4gTUFQLiAgRklMRU5BTUUgaXMgdGhlIG5hbWUgb2YgdGhlIGZp bGUgY29udGFpbmluZyB0aGUgc2VjdGlvbjsKLSsgICBpdCBpcyB1c2VkIGZvciBlcnJvciByZXBv cnRpbmcuICBERVBSRUNBVEVEX09LIGlzIG5vbnplcm8gaWYgaXQgaXMKLSsgICBvayB0byB1c2Ug ZGVwcmVjYXRlZCBzZWN0aW9ucy4KLSsKLSsgICBDVV9MSVNULCBDVV9MSVNUX0VMRU1FTlRTLCBU WVBFU19MSVNULCBhbmQgVFlQRVNfTElTVF9FTEVNRU5UUyBhcmUKLSsgICBvdXQgcGFyYW1ldGVy cyB0aGF0IGFyZSBmaWxsZWQgaW4gd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQ1UgYW5kCi0r ICAgVFUgbGlzdHMgaW4gdGhlIHNlY3Rpb24uCi0rCi0rICAgUmV0dXJucyAxIGlmIGFsbCB3ZW50 IHdlbGwsIDAgb3RoZXJ3aXNlLiAgKi8KLSAKLSBzdGF0aWMgaW50Ci0tZHdhcmYyX3JlYWRfaW5k ZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK3JlYWRfaW5kZXhfZnJvbV9zZWN0aW9uIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkgY29uc3QgY2hhciAqZmlsZW5hbWUsCi0rCQkJ IGludCBkZXByZWNhdGVkX29rLAotKwkJCSBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2Vj dGlvbiwKLSsJCQkgc3RydWN0IG1hcHBlZF9pbmRleCAqbWFwLAotKwkJCSBjb25zdCBnZGJfYnl0 ZSAqKmN1X2xpc3QsCi0rCQkJIG9mZnNldF90eXBlICpjdV9saXN0X2VsZW1lbnRzLAotKwkJCSBj b25zdCBnZGJfYnl0ZSAqKnR5cGVzX2xpc3QsCi0rCQkJIG9mZnNldF90eXBlICp0eXBlc19saXN0 X2VsZW1lbnRzKQotIHsKLSAgIGNoYXIgKmFkZHI7Ci0tICBzdHJ1Y3QgbWFwcGVkX2luZGV4ICpt YXA7Ci0rICBvZmZzZXRfdHlwZSB2ZXJzaW9uOwotICAgb2Zmc2V0X3R5cGUgKm1ldGFkYXRhOwot LSAgY29uc3QgZ2RiX2J5dGUgKmN1X2xpc3Q7Ci0tICBjb25zdCBnZGJfYnl0ZSAqdHlwZXNfbGlz dCA9IE5VTEw7Ci0tICBvZmZzZXRfdHlwZSB2ZXJzaW9uLCBjdV9saXN0X2VsZW1lbnRzOwotLSAg b2Zmc2V0X3R5cGUgdHlwZXNfbGlzdF9lbGVtZW50cyA9IDA7Ci0gICBpbnQgaTsKLSAKLS0gIGlm IChkd2FyZjJfc2VjdGlvbl9lbXB0eV9wICgmZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXgp KQotKyAgaWYgKGR3YXJmMl9zZWN0aW9uX2VtcHR5X3AgKHNlY3Rpb24pKQotICAgICByZXR1cm4g MDsKLSAKLSAgIC8qIE9sZGVyIGVsZnV0aWxzIHN0cmlwIHZlcnNpb25zIGNvdWxkIGtlZXAgdGhl IHNlY3Rpb24gaW4gdGhlIG1haW4KLSAgICAgIGV4ZWN1dGFibGUgd2hpbGUgc3BsaXR0aW5nIGl0 IGZvciB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBmaWxlLiAgKi8KLS0gIGlmICgoYmZkX2dldF9m aWxlX2ZsYWdzIChkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5hc2VjdGlvbikKLS0gICAg ICAgJiBTRUNfSEFTX0NPTlRFTlRTKSA9PSAwKQotKyAgaWYgKChiZmRfZ2V0X2ZpbGVfZmxhZ3Mg KHNlY3Rpb24tPmFzZWN0aW9uKSAmIFNFQ19IQVNfQ09OVEVOVFMpID09IDApCi0gICAgIHJldHVy biAwOwotIAotLSAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgJmR3YXJmMl9wZXJfb2Jq ZmlsZS0+Z2RiX2luZGV4KTsKLSsgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsIHNlY3Rp b24pOwotIAotLSAgYWRkciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+Z2RiX2luZGV4LmJ1ZmZlcjsK LSsgIGFkZHIgPSBzZWN0aW9uLT5idWZmZXI7Ci0gICAvKiBWZXJzaW9uIGNoZWNrLiAgKi8KLSAg IHZlcnNpb24gPSBNQVlCRV9TV0FQICgqKG9mZnNldF90eXBlICopIGFkZHIpOwotICAgLyogVmVy c2lvbnMgZWFybGllciB0aGFuIDMgZW1pdHRlZCBldmVyeSBjb3B5IG9mIGEgcHN5bWJvbC4gIFRo aXMKLUBAIC0yNTQ3LDcgKzI2MDksNyBAQCBkd2FyZjJfcmVhZF9pbmRleCAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUpCi0gICAgICAgaWYgKCF3YXJuaW5nX3ByaW50ZWQpCi0gCXsKLSAJICB3YXJu aW5nIChfKCJTa2lwcGluZyBvYnNvbGV0ZSAuZ2RiX2luZGV4IHNlY3Rpb24gaW4gJXMuIiksCi0t CQkgICBvYmpmaWxlLT5uYW1lKTsKLSsJCSAgIGZpbGVuYW1lKTsKLSAJICB3YXJuaW5nX3ByaW50 ZWQgPSAxOwotIAl9Ci0gICAgICAgcmV0dXJuIDA7Ci1AQCAtMjU2MCw3ICsyNjIyLDcgQEAgZHdh cmYyX3JlYWRfaW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotICAgICAgc2V0IGJyZWFr cG9pbnRzIG9uIGlubGluZWQgZnVuY3Rpb25zIGJ5IG5hbWUsIHNvIHdlIGlnbm9yZSB0aGVzZQot ICAgICAgaW5kaWNlcyB1bmxlc3MgdGhlIHVzZXIgaGFzIGRvbmUKLSAgICAgICJzZXQgdXNlLWRl cHJlY2F0ZWQtaW5kZXgtc2VjdGlvbnMgb24iLiAgKi8KLS0gIGlmICh2ZXJzaW9uIDwgNiAmJiAh dXNlX2RlcHJlY2F0ZWRfaW5kZXhfc2VjdGlvbnMpCi0rICBpZiAodmVyc2lvbiA8IDYgJiYgIWRl cHJlY2F0ZWRfb2spCi0gICAgIHsKLSAgICAgICBzdGF0aWMgaW50IHdhcm5pbmdfcHJpbnRlZCA9 IDA7Ci0gICAgICAgaWYgKCF3YXJuaW5nX3ByaW50ZWQpCi1AQCAtMjU2OSw3ICsyNjMxLDcgQEAg ZHdhcmYyX3JlYWRfaW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIFNraXBwaW5nIGRl cHJlY2F0ZWQgLmdkYl9pbmRleCBzZWN0aW9uIGluICVzLlxuXAotIERvIFwic2V0IHVzZS1kZXBy ZWNhdGVkLWluZGV4LXNlY3Rpb25zIG9uXCIgYmVmb3JlIHRoZSBmaWxlIGlzIHJlYWRcblwKLSB0 byB1c2UgdGhlIHNlY3Rpb24gYW55d2F5LiIpLAotLQkJICAgb2JqZmlsZS0+bmFtZSk7Ci0rCQkg ICBmaWxlbmFtZSk7Ci0gCSAgd2FybmluZ19wcmludGVkID0gMTsKLSAJfQotICAgICAgIHJldHVy biAwOwotQEAgLTI1NzksMjIgKzI2NDEsMjEgQEAgdG8gdXNlIHRoZSBzZWN0aW9uIGFueXdheS4i KSwKLSAgIGlmICh2ZXJzaW9uID4gNykKLSAgICAgcmV0dXJuIDA7Ci0gCi0tICBtYXAgPSBPQlNU QUNLX1pBTExPQyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc3RydWN0IG1hcHBlZF9pbmRl eCk7Ci0gICBtYXAtPnZlcnNpb24gPSB2ZXJzaW9uOwotLSAgbWFwLT50b3RhbF9zaXplID0gZHdh cmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguc2l6ZTsKLSsgIG1hcC0+dG90YWxfc2l6ZSA9IHNl Y3Rpb24tPnNpemU7Ci0gCi0gICBtZXRhZGF0YSA9IChvZmZzZXRfdHlwZSAqKSAoYWRkciArIHNp emVvZiAob2Zmc2V0X3R5cGUpKTsKLSAKLSAgIGkgPSAwOwotLSAgY3VfbGlzdCA9IGFkZHIgKyBN QVlCRV9TV0FQIChtZXRhZGF0YVtpXSk7Ci0tICBjdV9saXN0X2VsZW1lbnRzID0gKChNQVlCRV9T V0FQIChtZXRhZGF0YVtpICsgMV0pIC0gTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pKQotLQkJICAg ICAgLyA4KTsKLSsgICpjdV9saXN0ID0gYWRkciArIE1BWUJFX1NXQVAgKG1ldGFkYXRhW2ldKTsK LSsgICpjdV9saXN0X2VsZW1lbnRzID0gKChNQVlCRV9TV0FQIChtZXRhZGF0YVtpICsgMV0pIC0g TUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pKQotKwkJICAgICAgIC8gOCk7Ci0gICArK2k7Ci0gCi0t ICB0eXBlc19saXN0ID0gYWRkciArIE1BWUJFX1NXQVAgKG1ldGFkYXRhW2ldKTsKLS0gIHR5cGVz X2xpc3RfZWxlbWVudHMgPSAoKE1BWUJFX1NXQVAgKG1ldGFkYXRhW2kgKyAxXSkKLS0JCQkgIC0g TUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pKQotLQkJCSAvIDgpOwotKyAgKnR5cGVzX2xpc3QgPSBh ZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pOwotKyAgKnR5cGVzX2xpc3RfZWxlbWVudHMg PSAoKE1BWUJFX1NXQVAgKG1ldGFkYXRhW2kgKyAxXSkKLSsJCQkgICAtIE1BWUJFX1NXQVAgKG1l dGFkYXRhW2ldKSkKLSsJCQkgIC8gOCk7Ci0gICArK2k7Ci0gCi0gICBtYXAtPmFkZHJlc3NfdGFi bGUgPSBhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pOwotQEAgLTI2MTAsMTEgKzI2NzEs NTUgQEAgdG8gdXNlIHRoZSBzZWN0aW9uIGFueXdheS4iKSwKLSAKLSAgIG1hcC0+Y29uc3RhbnRf cG9vbCA9IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSk7Ci0gCi0rICByZXR1cm4gMTsK LSt9Ci0rCi0rCi0rLyogUmVhZCB0aGUgaW5kZXggZmlsZS4gIElmIGV2ZXJ5dGhpbmcgd2VudCBv aywgaW5pdGlhbGl6ZSB0aGUgInF1aWNrIgotKyAgIGVsZW1lbnRzIG9mIGFsbCB0aGUgQ1VzIGFu ZCByZXR1cm4gMS4gIE90aGVyd2lzZSwgcmV0dXJuIDAuICAqLwotKwotK3N0YXRpYyBpbnQKLStk d2FyZjJfcmVhZF9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rewotKyAgc3RydWN0 IG1hcHBlZF9pbmRleCBsb2NhbF9tYXAsICptYXA7Ci0rICBjb25zdCBnZGJfYnl0ZSAqY3VfbGlz dCwgKnR5cGVzX2xpc3QsICpkd3pfbGlzdCA9IE5VTEw7Ci0rICBvZmZzZXRfdHlwZSBjdV9saXN0 X2VsZW1lbnRzLCB0eXBlc19saXN0X2VsZW1lbnRzLCBkd3pfbGlzdF9lbGVtZW50cyA9IDA7Ci0r Ci0rICBpZiAoIXJlYWRfaW5kZXhfZnJvbV9zZWN0aW9uIChvYmpmaWxlLCBvYmpmaWxlLT5uYW1l LAotKwkJCQl1c2VfZGVwcmVjYXRlZF9pbmRleF9zZWN0aW9ucywKLSsJCQkJJmR3YXJmMl9wZXJf b2JqZmlsZS0+Z2RiX2luZGV4LCAmbG9jYWxfbWFwLAotKwkJCQkmY3VfbGlzdCwgJmN1X2xpc3Rf ZWxlbWVudHMsCi0rCQkJCSZ0eXBlc19saXN0LCAmdHlwZXNfbGlzdF9lbGVtZW50cykpCi0rICAg IHJldHVybiAwOwotKwotICAgLyogRG9uJ3QgdXNlIHRoZSBpbmRleCBpZiBpdCdzIGVtcHR5LiAg Ki8KLS0gIGlmIChtYXAtPnN5bWJvbF90YWJsZV9zbG90cyA9PSAwKQotKyAgaWYgKGxvY2FsX21h cC5zeW1ib2xfdGFibGVfc2xvdHMgPT0gMCkKLSAgICAgcmV0dXJuIDA7Ci0gCi0tICBpZiAoIWNy ZWF0ZV9jdXNfZnJvbV9pbmRleCAob2JqZmlsZSwgY3VfbGlzdCwgY3VfbGlzdF9lbGVtZW50cykp Ci0rICAvKiBJZiB0aGVyZSBpcyBhIC5kd3ogZmlsZSwgcmVhZCBpdCBzbyB3ZSBjYW4gZ2V0IGl0 cyBDVSBsaXN0IGFzCi0rICAgICB3ZWxsLiAgKi8KLSsgIGlmIChiZmRfZ2V0X3NlY3Rpb25fYnlf bmFtZSAob2JqZmlsZS0+b2JmZCwgIi5nbnVfZGVidWdhbHRsaW5rIikgIT0gTlVMTCkKLSsgICAg ewotKyAgICAgIHN0cnVjdCBkd3pfZmlsZSAqZHd6ID0gZHdhcmYyX2dldF9kd3pfZmlsZSAoKTsK LSsgICAgICBzdHJ1Y3QgbWFwcGVkX2luZGV4IGR3el9tYXA7Ci0rICAgICAgY29uc3QgZ2RiX2J5 dGUgKmR3el90eXBlc19pZ25vcmU7Ci0rICAgICAgb2Zmc2V0X3R5cGUgZHd6X3R5cGVzX2VsZW1l bnRzX2lnbm9yZTsKLSsKLSsgICAgICBpZiAoIXJlYWRfaW5kZXhfZnJvbV9zZWN0aW9uIChvYmpm aWxlLCBiZmRfZ2V0X2ZpbGVuYW1lIChkd3otPmR3el9iZmQpLAotKwkJCQkgICAgMSwKLSsJCQkJ ICAgICZkd3otPmdkYl9pbmRleCwgJmR3el9tYXAsCi0rCQkJCSAgICAmZHd6X2xpc3QsICZkd3pf bGlzdF9lbGVtZW50cywKLSsJCQkJICAgICZkd3pfdHlwZXNfaWdub3JlLAotKwkJCQkgICAgJmR3 el90eXBlc19lbGVtZW50c19pZ25vcmUpKQotKwl7Ci0rCSAgd2FybmluZyAoXygiY291bGQgbm90 IHJlYWQgJy5nZGJfaW5kZXgnIHNlY3Rpb24gZnJvbSAlczsgc2tpcHBpbmciKSwKLSsJCSAgIGJm ZF9nZXRfZmlsZW5hbWUgKGR3ei0+ZHd6X2JmZCkpOwotKwkgIHJldHVybiAwOwotKwl9Ci0rICAg IH0KLSsKLSsgIGlmICghY3JlYXRlX2N1c19mcm9tX2luZGV4IChvYmpmaWxlLCBjdV9saXN0LCBj dV9saXN0X2VsZW1lbnRzLAotKwkJCSAgICAgIGR3el9saXN0LCBkd3pfbGlzdF9lbGVtZW50cykp Ci0gICAgIHJldHVybiAwOwotIAotICAgaWYgKHR5cGVzX2xpc3RfZWxlbWVudHMpCi1AQCAtMjYz NSw3ICsyNzQwLDEwIEBAIHRvIHVzZSB0aGUgc2VjdGlvbiBhbnl3YXkuIiksCi0gCXJldHVybiAw OwotICAgICB9Ci0gCi0tICBjcmVhdGVfYWRkcm1hcF9mcm9tX2luZGV4IChvYmpmaWxlLCBtYXAp OwotKyAgY3JlYXRlX2FkZHJtYXBfZnJvbV9pbmRleCAob2JqZmlsZSwgJmxvY2FsX21hcCk7Ci0r Ci0rICBtYXAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXpl b2YgKHN0cnVjdCBtYXBwZWRfaW5kZXgpKTsKLSsgICptYXAgPSBsb2NhbF9tYXA7Ci0gCi0gICBk d2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlID0gbWFwOwotICAgZHdhcmYyX3Blcl9vYmpm aWxlLT51c2luZ19pbmRleCA9IDE7Ci1AQCAtMzY4Niw2ICszNzk0LDIyIEBAIHJlYWRfY29tcF91 bml0X2hlYWQgKHN0cnVjdCBjb21wX3VuaXRfaGVhZCAqY3VfaGVhZGVyLAotICAgcmV0dXJuIGlu Zm9fcHRyOwotIH0KLSAKLSsvKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBwcm9w ZXIgYWJicmV2IHNlY3Rpb24gZm9yCi0rICAgVEhJU19DVS4gICovCi0rCi0rc3RhdGljIHN0cnVj dCBkd2FyZjJfc2VjdGlvbl9pbmZvICoKLStnZXRfYWJicmV2X3NlY3Rpb25fZm9yX2N1IChzdHJ1 Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1KQotK3sKLSsgIHN0cnVjdCBkd2FyZjJfc2Vj dGlvbl9pbmZvICphYmJyZXY7Ci0rCi0rICBpZiAodGhpc19jdS0+aXNfZHd6KQotKyAgICBhYmJy ZXYgPSAmZHdhcmYyX2dldF9kd3pfZmlsZSAoKS0+YWJicmV2OwotKyAgZWxzZQotKyAgICBhYmJy ZXYgPSAmZHdhcmYyX3Blcl9vYmpmaWxlLT5hYmJyZXY7Ci0rCi0rICByZXR1cm4gYWJicmV2Owot K30KLSsKLSAvKiBTdWJyb3V0aW5lIG9mIHJlYWRfYW5kX2NoZWNrX2NvbXBfdW5pdF9oZWFkIGFu ZAotICAgIHJlYWRfYW5kX2NoZWNrX3R5cGVfdW5pdF9oZWFkIHRvIHNpbXBsaWZ5IHRoZW0uCi0g ICAgUGVyZm9ybSB2YXJpb3VzIGVycm9yIGNoZWNraW5nIG9uIHRoZSBoZWFkZXIuICAqLwotQEAg LTM3MDQsOCArMzgyOCw3IEBAIGVycm9yX2NoZWNrX2NvbXBfdW5pdF9oZWFkIChzdHJ1Y3QgY29t cF91bml0X2hlYWQgKmhlYWRlciwKLSAJICAgZmlsZW5hbWUpOwotIAotICAgaWYgKGhlYWRlci0+ YWJicmV2X29mZnNldC5zZWN0X29mZgotLSAgICAgID49IGR3YXJmMl9zZWN0aW9uX3NpemUgKGR3 YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwKLS0JCQkgICAgICAmZHdhcmYyX3Blcl9vYmpmaWxl LT5hYmJyZXYpKQotKyAgICAgID49IGR3YXJmMl9zZWN0aW9uX3NpemUgKGR3YXJmMl9wZXJfb2Jq ZmlsZS0+b2JqZmlsZSwgYWJicmV2X3NlY3Rpb24pKQotICAgICBlcnJvciAoXygiRHdhcmYgRXJy b3I6IGJhZCBvZmZzZXQgKDB4JWx4KSBpbiBjb21waWxhdGlvbiB1bml0IGhlYWRlciAiCi0gCSAg ICIob2Zmc2V0IDB4JWx4ICsgNikgW2luIG1vZHVsZSAlc10iKSwKLSAJICAgKGxvbmcpIGhlYWRl ci0+YWJicmV2X29mZnNldC5zZWN0X29mZiwgKGxvbmcpIGhlYWRlci0+b2Zmc2V0LnNlY3Rfb2Zm LAotQEAgLTM5NDIsNiArNDA2NSw3IEBAIGNyZWF0ZV9kZWJ1Z190eXBlc19oYXNoX3RhYmxlIChz dHJ1Y3QgZHdvX2ZpbGUgKmR3b19maWxlLAotICAgICB7Ci0gICAgICAgYmZkICphYmZkOwotICAg ICAgIGdkYl9ieXRlICppbmZvX3B0ciwgKmVuZF9wdHI7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9z ZWN0aW9uX2luZm8gKmFiYnJldl9zZWN0aW9uOwotIAotICAgICAgIGR3YXJmMl9yZWFkX3NlY3Rp b24gKG9iamZpbGUsIHNlY3Rpb24pOwotICAgICAgIGluZm9fcHRyID0gc2VjdGlvbi0+YnVmZmVy OwotQEAgLTM5NTMsNiArNDA3NywxMSBAQCBjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSAo c3RydWN0IGR3b19maWxlICpkd29fZmlsZSwKLSAJIG5vdCBwcmVzZW50LCBpbiB3aGljaCBjYXNl IHNlY3Rpb24tPmFzZWN0aW9uIHdpbGwgYmUgTlVMTC4gICovCi0gICAgICAgYWJmZCA9IHNlY3Rp b24tPmFzZWN0aW9uLT5vd25lcjsKLSAKLSsgICAgICBpZiAoZHdvX2ZpbGUpCi0rCWFiYnJldl9z ZWN0aW9uID0gJmR3b19maWxlLT5zZWN0aW9ucy5hYmJyZXY7Ci0rICAgICAgZWxzZQotKwlhYmJy ZXZfc2VjdGlvbiA9ICZkd2FyZjJfcGVyX29iamZpbGUtPmFiYnJldjsKLSsKLSAgICAgICBpZiAo dHlwZXNfaHRhYiA9PSBOVUxMKQotIAl7Ci0gCSAgaWYgKGR3b19maWxlKQotQEAgLTQxOTIsNyAr NDMyMSw4IEBAIGluaXRfY3V0dV9hbmRfcmVhZF9kaWVzIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9k YXRhICp0aGlzX2N1LAotICAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgc2VjdGlvbik7 Ci0gCi0gICBiZWdpbl9pbmZvX3B0ciA9IGluZm9fcHRyID0gc2VjdGlvbi0+YnVmZmVyICsgdGhp c19jdS0+b2Zmc2V0LnNlY3Rfb2ZmOwotLSAgYWJicmV2X3NlY3Rpb24gPSAmZHdhcmYyX3Blcl9v YmpmaWxlLT5hYmJyZXY7Ci0rCi0rICBhYmJyZXZfc2VjdGlvbiA9IGdldF9hYmJyZXZfc2VjdGlv bl9mb3JfY3UgKHRoaXNfY3UpOwotIAotICAgaWYgKHVzZV9leGlzdGluZ19jdSAmJiB0aGlzX2N1 LT5jdSAhPSBOVUxMKQotICAgICB7Ci1AQCAtNDU3NCw3ICs0NzA0LDcgQEAgaW5pdF9jdXR1X2Fu ZF9yZWFkX2RpZXNfc2ltcGxlIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1LAot IAkJCQl2b2lkICpkYXRhKQotIHsKLSAgIGluaXRfY3V0dV9hbmRfcmVhZF9kaWVzX25vX2ZvbGxv dyAodGhpc19jdSwKLS0JCQkJICAgICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5hYmJyZXYsCi0rCQkJ CSAgICAgZ2V0X2FiYnJldl9zZWN0aW9uX2Zvcl9jdSAodGhpc19jdSksCi0gCQkJCSAgICAgTlVM TCwKLSAJCQkJICAgICBkaWVfcmVhZGVyX2Z1bmMsIGRhdGEpOwotIH0KLUBAIC01MjAyLDYgKzUz MzIsOSBAQCBzZXRfcGFydGlhbF91c2VyIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAgICAg ICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCA9IHBlcl9jdS0+di5wc3ltdGFiOwotICAgICAg IGludCBqOwotIAotKyAgICAgIGlmIChwc3QgPT0gTlVMTCkKLSsJY29udGludWU7Ci0rCi0gICAg ICAgZm9yIChqID0gMDsgaiA8IHBzdC0+bnVtYmVyX29mX2RlcGVuZGVuY2llczsgKytqKQotIAl7 Ci0gCSAgLyogU2V0IHRoZSAndXNlcicgZmllbGQgb25seSBpZiBpdCBpcyBub3QgYWxyZWFkeSBz ZXQuICAqLwotQEAgLTUyOTYsMzggKzU0MjksMzIgQEAgbG9hZF9wYXJ0aWFsX2NvbXBfdW5pdCAo c3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqdGhpc19jdSkKLSAJCQkgICBsb2FkX3BhcnRpYWxf Y29tcF91bml0X3JlYWRlciwgTlVMTCk7Ci0gfQotIAotLS8qIENyZWF0ZSBhIGxpc3Qgb2YgYWxs IGNvbXBpbGF0aW9uIHVuaXRzIGluIE9CSkZJTEUuCi0tICAgVGhpcyBpcyBvbmx5IGRvbmUgZm9y IC1yZWFkbm93IGFuZCBidWlsZGluZyBwYXJ0aWFsIHN5bXRhYnMuICAqLwotLQotIHN0YXRpYyB2 b2lkCi0tY3JlYXRlX2FsbF9jb21wX3VuaXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSty ZWFkX2NvbXBfdW5pdHNfZnJvbV9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJ CQkgICAgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbiwKLSsJCQkgICAgICB1 bnNpZ25lZCBpbnQgaXNfZHd6LAotKwkJCSAgICAgIGludCAqbl9hbGxvY2F0ZWQsCi0rCQkJICAg ICAgaW50ICpuX2NvbXBfdW5pdHMsCi0rCQkJICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0 YSAqKiphbGxfY29tcF91bml0cykKLSB7Ci0tICBpbnQgbl9hbGxvY2F0ZWQ7Ci0tICBpbnQgbl9j b21wX3VuaXRzOwotLSAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKmFsbF9jb21wX3VuaXRz OwotICAgZ2RiX2J5dGUgKmluZm9fcHRyOwotKyAgYmZkICphYmZkID0gc2VjdGlvbi0+YXNlY3Rp b24tPm93bmVyOwotIAotLSAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgJmR3YXJmMl9w ZXJfb2JqZmlsZS0+aW5mbyk7Ci0tICBpbmZvX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5m by5idWZmZXI7Ci0rICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCBzZWN0aW9uKTsKLSAK LS0gIG5fY29tcF91bml0cyA9IDA7Ci0tICBuX2FsbG9jYXRlZCA9IDEwOwotLSAgYWxsX2NvbXBf dW5pdHMgPSB4bWFsbG9jIChuX2FsbG9jYXRlZAotLQkJCSAgICAqIHNpemVvZiAoc3RydWN0IGR3 YXJmMl9wZXJfY3VfZGF0YSAqKSk7Ci0rICBpbmZvX3B0ciA9IHNlY3Rpb24tPmJ1ZmZlcjsKLSAK LS0gIHdoaWxlIChpbmZvX3B0ciA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXIKLS0J ICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvLnNpemUpCi0rICB3aGlsZSAoaW5mb19wdHIgPCBz ZWN0aW9uLT5idWZmZXIgKyBzZWN0aW9uLT5zaXplKQotICAgICB7Ci0gICAgICAgdW5zaWduZWQg aW50IGxlbmd0aCwgaW5pdGlhbF9sZW5ndGhfc2l6ZTsKLSAgICAgICBzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhICp0aGlzX2N1OwotICAgICAgIHNlY3Rfb2Zmc2V0IG9mZnNldDsKLSAKLS0gICAg ICBvZmZzZXQuc2VjdF9vZmYgPSBpbmZvX3B0ciAtIGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5i dWZmZXI7Ci0rICAgICAgb2Zmc2V0LnNlY3Rfb2ZmID0gaW5mb19wdHIgLSBzZWN0aW9uLT5idWZm ZXI7Ci0gCi0gICAgICAgLyogUmVhZCBqdXN0IGVub3VnaCBpbmZvcm1hdGlvbiB0byBmaW5kIG91 dCB3aGVyZSB0aGUgbmV4dAotIAkgY29tcGlsYXRpb24gdW5pdCBpcy4gICovCi0tICAgICAgbGVu Z3RoID0gcmVhZF9pbml0aWFsX2xlbmd0aCAob2JqZmlsZS0+b2JmZCwgaW5mb19wdHIsCi0tCQkJ CSAgICAmaW5pdGlhbF9sZW5ndGhfc2l6ZSk7Ci0rICAgICAgbGVuZ3RoID0gcmVhZF9pbml0aWFs X2xlbmd0aCAoYWJmZCwgaW5mb19wdHIsICZpbml0aWFsX2xlbmd0aF9zaXplKTsKLSAKLSAgICAg ICAvKiBTYXZlIHRoZSBjb21waWxhdGlvbiB1bml0IGZvciBsYXRlciBsb29rdXAuICAqLwotICAg ICAgIHRoaXNfY3UgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAot QEAgLTUzMzUsMjAgKzU0NjIsNTAgQEAgY3JlYXRlX2FsbF9jb21wX3VuaXRzIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSkKLSAgICAgICBtZW1zZXQgKHRoaXNfY3UsIDAsIHNpemVvZiAoKnRoaXNf Y3UpKTsKLSAgICAgICB0aGlzX2N1LT5vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgICAgdGhpc19jdS0+ bGVuZ3RoID0gbGVuZ3RoICsgaW5pdGlhbF9sZW5ndGhfc2l6ZTsKLSsgICAgICB0aGlzX2N1LT5p c19kd3ogPSBpc19kd3o7Ci0gICAgICAgdGhpc19jdS0+b2JqZmlsZSA9IG9iamZpbGU7Ci0tICAg ICAgdGhpc19jdS0+aW5mb19vcl90eXBlc19zZWN0aW9uID0gJmR3YXJmMl9wZXJfb2JqZmlsZS0+ aW5mbzsKLSsgICAgICB0aGlzX2N1LT5pbmZvX29yX3R5cGVzX3NlY3Rpb24gPSBzZWN0aW9uOwot IAotLSAgICAgIGlmIChuX2NvbXBfdW5pdHMgPT0gbl9hbGxvY2F0ZWQpCi0rICAgICAgaWYgKCpu X2NvbXBfdW5pdHMgPT0gKm5fYWxsb2NhdGVkKQotIAl7Ci0tCSAgbl9hbGxvY2F0ZWQgKj0gMjsK LS0JICBhbGxfY29tcF91bml0cyA9IHhyZWFsbG9jIChhbGxfY29tcF91bml0cywKLS0JCQkJICAg ICBuX2FsbG9jYXRlZAotLQkJCQkgICAgICogc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9k YXRhICopKTsKLSsJICAqbl9hbGxvY2F0ZWQgKj0gMjsKLSsJICAqYWxsX2NvbXBfdW5pdHMgPSB4 cmVhbGxvYyAoKmFsbF9jb21wX3VuaXRzLAotKwkJCQkgICAgICAqbl9hbGxvY2F0ZWQKLSsJCQkJ ICAgICAgKiBzaXplb2YgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKikpOwotIAl9Ci0tICAg ICAgYWxsX2NvbXBfdW5pdHNbbl9jb21wX3VuaXRzKytdID0gdGhpc19jdTsKLSsgICAgICAoKmFs bF9jb21wX3VuaXRzKVsqbl9jb21wX3VuaXRzXSA9IHRoaXNfY3U7Ci0rICAgICAgKysqbl9jb21w X3VuaXRzOwotIAotICAgICAgIGluZm9fcHRyID0gaW5mb19wdHIgKyB0aGlzX2N1LT5sZW5ndGg7 Ci0gICAgIH0KLSt9Ci0rCi0rLyogQ3JlYXRlIGEgbGlzdCBvZiBhbGwgY29tcGlsYXRpb24gdW5p dHMgaW4gT0JKRklMRS4KLSsgICBUaGlzIGlzIG9ubHkgZG9uZSBmb3IgLXJlYWRub3cgYW5kIGJ1 aWxkaW5nIHBhcnRpYWwgc3ltdGFicy4gICovCi0rCi0rc3RhdGljIHZvaWQKLStjcmVhdGVfYWxs X2NvbXBfdW5pdHMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK3sKLSsgIGludCBuX2FsbG9j YXRlZDsKLSsgIGludCBuX2NvbXBfdW5pdHM7Ci0rICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRh ICoqYWxsX2NvbXBfdW5pdHM7Ci0rCi0rICBuX2NvbXBfdW5pdHMgPSAwOwotKyAgbl9hbGxvY2F0 ZWQgPSAxMDsKLSsgIGFsbF9jb21wX3VuaXRzID0geG1hbGxvYyAobl9hbGxvY2F0ZWQKLSsJCQkg ICAgKiBzaXplb2YgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKikpOwotKwotKyAgcmVhZF9j b21wX3VuaXRzX2Zyb21fc2VjdGlvbiAob2JqZmlsZSwgJmR3YXJmMl9wZXJfb2JqZmlsZS0+aW5m bywgMCwKLSsJCQkJJm5fYWxsb2NhdGVkLCAmbl9jb21wX3VuaXRzLCAmYWxsX2NvbXBfdW5pdHMp OwotKwotKyAgaWYgKGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmpmaWxlLT5vYmZkLCAiLmdu dV9kZWJ1Z2FsdGxpbmsiKSAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGR3el9maWxl ICpkd3ogPSBkd2FyZjJfZ2V0X2R3el9maWxlICgpOwotKwotKyAgICAgIHJlYWRfY29tcF91bml0 c19mcm9tX3NlY3Rpb24gKG9iamZpbGUsICZkd3otPmluZm8sIDEsCi0rCQkJCSAgICAmbl9hbGxv Y2F0ZWQsICZuX2NvbXBfdW5pdHMsCi0rCQkJCSAgICAmYWxsX2NvbXBfdW5pdHMpOwotKyAgICB9 Ci0gCi0gICBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzCi0gICAgID0gb2JzdGFj a19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLUBAIC01NDQxLDYgKzU1OTgsNyBA QCBzY2FuX3BhcnRpYWxfc3ltYm9scyAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKmZpcnN0X2Rp ZSwgQ09SRV9BRERSICpsb3dwYywKLSAJCSAgfQotIAotIAkJcGVyX2N1ID0gZHdhcmYyX2ZpbmRf Y29udGFpbmluZ19jb21wX3VuaXQgKHBkaS0+ZC5vZmZzZXQsCi0rCQkJCQkJCSAgIHBkaS0+aXNf ZHd6LAotIAkJCQkJCQkgICBjdS0+b2JqZmlsZSk7Ci0gCi0gCQkvKiBHbyByZWFkIHRoZSBwYXJ0 aWFsIHVuaXQsIGlmIG5lZWRlZC4gICovCi1AQCAtNTQ5OCw3ICs1NjU2LDggQEAgcGFydGlhbF9k aWVfcGFyZW50X3Njb3BlIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGRpLAotIAotICAgcmVh bF9wZGkgPSBwZGk7Ci0gICB3aGlsZSAocmVhbF9wZGktPmhhc19zcGVjaWZpY2F0aW9uKQotLSAg ICByZWFsX3BkaSA9IGZpbmRfcGFydGlhbF9kaWUgKHJlYWxfcGRpLT5zcGVjX29mZnNldCwgY3Up OwotKyAgICByZWFsX3BkaSA9IGZpbmRfcGFydGlhbF9kaWUgKHJlYWxfcGRpLT5zcGVjX29mZnNl dCwKLSsJCQkJIHJlYWxfcGRpLT5zcGVjX2lzX2R3eiwgY3UpOwotIAotICAgcGFyZW50ID0gcmVh bF9wZGktPmRpZV9wYXJlbnQ7Ci0gICBpZiAocGFyZW50ID09IE5VTEwpCi1AQCAtNTk5OCw2ICs2 MTU3LDkgQEAgc2tpcF9vbmVfZGllIChjb25zdCBzdHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVh ZGVyLCBnZGJfYnl0ZSAqaW5mb19wdHIsCi0gCSAgZWxzZQotIAkgICAgaW5mb19wdHIgKz0gY3Ut PmhlYWRlci5vZmZzZXRfc2l6ZTsKLSAJICBicmVhazsKLSsJY2FzZSBEV19GT1JNX0dOVV9yZWZf YWx0OgotKwkgIGluZm9fcHRyICs9IGN1LT5oZWFkZXIub2Zmc2V0X3NpemU7Ci0rCSAgYnJlYWs7 Ci0gCWNhc2UgRFdfRk9STV9hZGRyOgotIAkgIGluZm9fcHRyICs9IGN1LT5oZWFkZXIuYWRkcl9z aXplOwotIAkgIGJyZWFrOwotQEAgLTYwMjcsNiArNjE4OSw3IEBAIHNraXBfb25lX2RpZSAoY29u c3Qgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwgZ2RiX2J5dGUgKmluZm9fcHRyLAot IAkgIGJyZWFrOwotIAljYXNlIERXX0ZPUk1fc2VjX29mZnNldDoKLSAJY2FzZSBEV19GT1JNX3N0 cnA6Ci0rCWNhc2UgRFdfRk9STV9HTlVfc3RycF9hbHQ6Ci0gCSAgaW5mb19wdHIgKz0gY3UtPmhl YWRlci5vZmZzZXRfc2l6ZTsKLSAJICBicmVhazsKLSAJY2FzZSBEV19GT1JNX2V4cHJsb2M6Ci1A QCAtNjY5NCw3ICs2ODU3LDkgQEAgcHJvY2Vzc19mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJm Ml9wZXJfY3VfZGF0YSAqcGVyX2N1LAotICAgICAgaXQsIGJ5IHNjYW5uaW5nIHRoZSBESUUncyBi ZWxvdyB0aGUgY29tcGlsYXRpb24gdW5pdC4gICovCi0gICBnZXRfc2NvcGVfcGNfYm91bmRzIChj dS0+ZGllcywgJmxvd3BjLCAmaGlnaHBjLCBjdSk7Ci0gCi0tICBzdGF0aWNfYmxvY2sgPSBlbmRf c3ltdGFiX2dldF9zdGF0aWNfYmxvY2sgKGhpZ2hwYyArIGJhc2VhZGRyLCBvYmpmaWxlLCAwKTsK LSsgIHN0YXRpY19ibG9jawotKyAgICA9IGVuZF9zeW10YWJfZ2V0X3N0YXRpY19ibG9jayAoaGln aHBjICsgYmFzZWFkZHIsIG9iamZpbGUsIDAsCi0rCQkJCSAgIHBlcl9jdS0+cy5pbXBvcnRlZF9z eW10YWJzICE9IE5VTEwpOwotIAotICAgLyogSWYgdGhlIGNvbXAgdW5pdCBoYXMgRFdfQVRfcmFu Z2VzLCBpdCBtYXkgaGF2ZSBkaXNjb250aWd1b3VzIHJhbmdlcy4KLSAgICAgIEFsc28sIERXX0FU X3JhbmdlcyBtYXkgcmVjb3JkIHJhbmdlcyBub3QgYmVsb25naW5nIHRvIGFueSBjaGlsZCBESUVz Ci1AQCAtNjg0NSw5ICs3MDEwLDExIEBAIHByb2Nlc3NfaW1wb3J0ZWRfdW5pdF9kaWUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICBzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICpwZXJfY3U7Ci0gICAgICAgc3RydWN0IHN5bXRhYiAqaW1wb3J0ZWRf c3ltdGFiOwotICAgICAgIHNlY3Rfb2Zmc2V0IG9mZnNldDsKLSsgICAgICBpbnQgaXNfZHd6Owot IAotICAgICAgIG9mZnNldCA9IGR3YXJmMl9nZXRfcmVmX2RpZV9vZmZzZXQgKGF0dHIpOwotLSAg ICAgIHBlcl9jdSA9IGR3YXJmMl9maW5kX2NvbnRhaW5pbmdfY29tcF91bml0IChvZmZzZXQsIGN1 LT5vYmpmaWxlKTsKLSsgICAgICBpc19kd3ogPSAoYXR0ci0+Zm9ybSA9PSBEV19GT1JNX0dOVV9y ZWZfYWx0IHx8IGN1LT5wZXJfY3UtPmlzX2R3eik7Ci0rICAgICAgcGVyX2N1ID0gZHdhcmYyX2Zp bmRfY29udGFpbmluZ19jb21wX3VuaXQgKG9mZnNldCwgaXNfZHd6LCBjdS0+b2JqZmlsZSk7Ci0g Ci0gICAgICAgLyogUXVldWUgdGhlIHVuaXQsIGlmIG5lZWRlZC4gICovCi0gICAgICAgaWYgKG1h eWJlX3F1ZXVlX2NvbXBfdW5pdCAoY3UsIHBlcl9jdSwgY3UtPmxhbmd1YWdlKSkKLUBAIC04MTE2 LDI0ICs4MjgzLDIxIEBAIHRyeV9vcGVuX2R3b19maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUp Ci0gICBpZiAoZGVzYyA8IDApCi0gICAgIHJldHVybiBOVUxMOwotIAotLSAgc3ltX2JmZCA9IGJm ZF9mb3BlbiAoYWJzb2x1dGVfbmFtZSwgZ251dGFyZ2V0LCBGT1BFTl9SQiwgZGVzYyk7Ci0rICBz eW1fYmZkID0gZ2RiX2JmZF9vcGVuIChhYnNvbHV0ZV9uYW1lLCBnbnV0YXJnZXQsIGRlc2MpOwot ICAgaWYgKCFzeW1fYmZkKQotICAgICB7Ci0gICAgICAgeGZyZWUgKGFic29sdXRlX25hbWUpOwot ICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0rICB4ZnJlZSAoYWJzb2x1dGVfbmFtZSk7Ci0g ICBiZmRfc2V0X2NhY2hlYWJsZSAoc3ltX2JmZCwgMSk7Ci0gCi0gICBpZiAoIWJmZF9jaGVja19m b3JtYXQgKHN5bV9iZmQsIGJmZF9vYmplY3QpKQotICAgICB7Ci0tICAgICAgYmZkX2Nsb3NlIChz eW1fYmZkKTsgLyogVGhpcyBhbHNvIGNsb3NlcyBkZXNjLiAgKi8KLS0gICAgICB4ZnJlZSAoYWJz b2x1dGVfbmFtZSk7Ci0rICAgICAgZ2RiX2JmZF91bnJlZiAoc3ltX2JmZCk7IC8qIFRoaXMgYWxz byBjbG9zZXMgZGVzYy4gICovCi0gICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gIC8q IGJmZF91c3JkYXRhIGV4aXN0cyBmb3IgYXBwbGljYXRpb25zIGFuZCBsaWJiZmQgbXVzdCBub3Qg dG91Y2ggaXQuICAqLwotLSAgZ2RiX2Fzc2VydCAoYmZkX3VzcmRhdGEgKHN5bV9iZmQpID09IE5V TEwpOwotLQotICAgcmV0dXJuIHN5bV9iZmQ7Ci0gfQotIAotQEAgLTgzMjUsMjAgKzg0ODksNyBA QCBmcmVlX2R3b19maWxlIChzdHJ1Y3QgZHdvX2ZpbGUgKmR3b19maWxlLCBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSkKLSAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpzZWN0aW9uOwotIAot ICAgZ2RiX2Fzc2VydCAoZHdvX2ZpbGUtPmR3b19iZmQgIT0gb2JqZmlsZS0+b2JmZCk7Ci0tICBi ZmRfY2xvc2UgKGR3b19maWxlLT5kd29fYmZkKTsKLS0KLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZl ciAoJmR3b19maWxlLT5zZWN0aW9ucy5hYmJyZXYpOwotLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVy ICgmZHdvX2ZpbGUtPnNlY3Rpb25zLmluZm8pOwotLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgm ZHdvX2ZpbGUtPnNlY3Rpb25zLmxpbmUpOwotLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZHdv X2ZpbGUtPnNlY3Rpb25zLmxvYyk7Ci0tICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkd29fZmls ZS0+c2VjdGlvbnMuc3RyKTsKLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmR3b19maWxlLT5z ZWN0aW9ucy5zdHJfb2Zmc2V0cyk7Ci0tCi0tICBmb3IgKGl4ID0gMDsKLS0gICAgICAgVkVDX2l0 ZXJhdGUgKGR3YXJmMl9zZWN0aW9uX2luZm9fZGVmLCBkd29fZmlsZS0+c2VjdGlvbnMudHlwZXMs Ci0tCQkgICAgaXgsIHNlY3Rpb24pOwotLSAgICAgICArK2l4KQotLSAgICBtdW5tYXBfc2VjdGlv bl9idWZmZXIgKHNlY3Rpb24pOwotKyAgZ2RiX2JmZF91bnJlZiAoZHdvX2ZpbGUtPmR3b19iZmQp OwotIAotICAgVkVDX2ZyZWUgKGR3YXJmMl9zZWN0aW9uX2luZm9fZGVmLCBkd29fZmlsZS0+c2Vj dGlvbnMudHlwZXMpOwotIH0KLUBAIC0xMDcyMSw2ICsxMDg3MiwyOSBAQCBwcm9jZXNzX2VudW1l cmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up Ci0gICBuZXdfc3ltYm9sIChkaWUsIHRoaXNfdHlwZSwgY3UpOwotIH0KLSAKLSsvKiBDcmVhdGUg YSBuZXcgYXJyYXkgZGltZW5zaW9uIHJlZmVyZW5jaW5nIGl0cyB0YXJnZXQgdHlwZSBUWVBFLgot KwotKyAgIE11bHRpZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBpbnRlcm5hbGx5IHJlcHJlc2VudGVk IGFzIGEgc3RhY2sgb2YKLSsgICBzaW5nbGVkaW1lbnNpb25hbCBhcnJheXMgYmVpbmcgcmVmZXJl bmNlZCBieSB0aGVpciBUWVBFX1RBUkdFVF9UWVBFLiAgKi8KLSsKLStzdGF0aWMgc3RydWN0IHR5 cGUgKgotK2NyZWF0ZV9zaW5nbGVfYXJyYXlfZGltZW5zaW9uIChzdHJ1Y3QgdHlwZSAqdHlwZSwg c3RydWN0IHR5cGUgKnJhbmdlX3R5cGUsCi0rCQkJICAgICAgIHN0cnVjdCBkaWVfaW5mbyAqZGll LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSt7Ci0rICB0eXBlID0gY3JlYXRlX2FycmF5X3R5cGUg KE5VTEwsIHR5cGUsIHJhbmdlX3R5cGUpOwotKwotKyAgLyogVGhlc2UgZ2VuZXJpYyB0eXBlIGF0 dHJpYnV0ZXMgbmVlZCB0byBiZSBmZXRjaGVkIGJ5Ci0rICAgICBldmFsdWF0ZV9zdWJleHBfc3Rh bmRhcmQgPG11bHRpX2Y3N19zdWJzY3JpcHQ+J3MgY2FsbCBvZgotKyAgICAgdmFsdWVfc3Vic2Ny aXB0ZWRfcnZhbHVlIG9ubHkgZm9yIHRoZSBpbm5lcm1vc3QgYXJyYXkgdHlwZS4gICovCi0rICBm ZXRjaF9kaWVfdHlwZV9hdHRycyAoZGllLCB0eXBlLCBjdSk7Ci0rCi0rICAvKiBUaGVzZSBnZW5l cmljIHR5cGUgYXR0cmlidXRlcyBhcmUgY2hlY2tlZCBmb3IgYWxsb2NhdGVkL2Fzc29jaWF0ZWQK LSsgICAgIHZhbGlkaXR5IHdoaWxlIGFjY2Vzc2luZyBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9D Sy4gICovCi0rICBmZXRjaF9kaWVfdHlwZV9hdHRycyAoZGllLCByYW5nZV90eXBlLCBjdSk7Ci0r Ci0rICByZXR1cm4gdHlwZTsKLSt9Ci0rCi0gLyogRXh0cmFjdCBhbGwgaW5mb3JtYXRpb24gZnJv bSBhIERXX1RBR19hcnJheV90eXBlIERJRSBhbmQgcHV0IGl0IGluCi0gICAgdGhlIERJRSdzIHR5 cGUgZmllbGQuICBGb3Igbm93LCB0aGlzIG9ubHkgaGFuZGxlcyBvbmUgZGltZW5zaW9uYWwKLSAg ICBhcnJheXMuICAqLwotQEAgLTEwNzM0LDcgKzEwOTA4LDcgQEAgcmVhZF9hcnJheV90eXBlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICBzdHJ1Y3QgdHlw ZSAqZWxlbWVudF90eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGU7Ci0gICBzdHJ1Y3QgdHlw ZSAqKnJhbmdlX3R5cGVzID0gTlVMTDsKLSAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0tICBp bnQgbmRpbSA9IDA7Ci0rICBpbnQgbmRpbSA9IDAsIGk7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqYmFj a190bzsKLSAgIGNoYXIgKm5hbWU7Ci0gCi1AQCAtMTA3ODcsMTcgKzEwOTYxLDE5IEBAIHJlYWRf YXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQot ICAgdHlwZSA9IGVsZW1lbnRfdHlwZTsKLSAKLSAgIGlmIChyZWFkX2FycmF5X29yZGVyIChkaWUs IGN1KSA9PSBEV19PUkRfY29sX21ham9yKQotLSAgICB7Ci0tICAgICAgaW50IGkgPSAwOworICAg aWYgKHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9jb2xfbWFqb3IpCistICAg IHsKKy0gICAgICBpbnQgaSA9IDA7CiAtCiAtICAgICAgd2hpbGUgKGkgPCBuZGltKQogLQl0eXBl ID0gY3JlYXRlX2FycmF5X3R5cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5cGVzW2krK10pOwpAQCAt MjY3NCw3ICs5NDIsNyBAQCBpbmRleCBkZWVlNWEyLi5iMmYwNTJiIDEwMDY0NAogIAogICAgLyog VW5kZXJzdGFuZCBEd2FyZjIgc3VwcG9ydCBmb3IgdmVjdG9yIHR5cGVzIChsaWtlIHRoZXkgb2Nj dXIgb24KICAgICAgIHRoZSBQb3dlclBDIHcvIEFsdGlWZWMpLiAgR2NjIGp1c3QgYWRkcyBhbm90 aGVyIGF0dHJpYnV0ZSB0byB0aGUKLUBAIC0xMTI4MSwyOSArMTE0NTcsMTE0IEBAIHJlYWRfdGFn X3N0cmluZ190eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up CitAQCAtMTIzNzksMjkgKzEyNDEzLDExNCBAQCByZWFkX3RhZ19zdHJpbmdfdHlwZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IGdkYmFyY2gg KmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKICAgIHN0cnVjdCB0eXBlICp0 eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpjaGFyX3R5cGU7CiAgICBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyOwpAQCAtMjgwMiw3ICsxMDcwLDcgQEAgaW5kZXggZGVlZTVhMi4uYjJmMDUy YiAxMDA2NDQKICAgIGNoYXJfdHlwZSA9IGxhbmd1YWdlX3N0cmluZ19jaGFyX3R5cGUgKGN1LT5s YW5ndWFnZV9kZWZuLCBnZGJhcmNoKTsKICAgIHR5cGUgPSBjcmVhdGVfc3RyaW5nX3R5cGUgKE5V TEwsIGNoYXJfdHlwZSwgcmFuZ2VfdHlwZSk7CiAgCi1AQCAtMTE2MDcsNyArMTE4NjgsNyBAQCBy ZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKK0BAIC0xMjcwNSw3ICsxMjgyNCw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IHR5cGUgKmJh c2VfdHlwZTsKICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwogICAgc3RydWN0IGF0dHJpYnV0 ZSAqYXR0cjsKQEAgLTI4MTEsNyArMTA3OSw3IEBAIGluZGV4IGRlZWU1YTIuLmIyZjA1MmIgMTAw NjQ0CiAgICBpbnQgbG93X2RlZmF1bHRfaXNfdmFsaWQ7CiAgICBjaGFyICpuYW1lOwogICAgTE9O R0VTVCBuZWdhdGl2ZV9tYXNrOwotQEAgLTExNjYzLDQyICsxMTkyNCw2IEBAIHJlYWRfc3VicmFu Z2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAg LTEyNzYxLDQyICsxMjg4MCw2IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAkJCQkgICAgICAiLSBESUUgYXQgMHgleCBb aW4gbW9kdWxlICVzXSIpLAogIAkgICAgICAgZGllLT5vZmZzZXQuc2VjdF9vZmYsIGN1LT5vYmpm aWxlLT5uYW1lKTsKICAKQEAgLTI4NTQsNyArMTEyMiw3IEBAIGluZGV4IGRlZWU1YTIuLmIyZjA1 MmIgMTAwNjQ0CiAgICAvKiBEd2FyZi0yIHNwZWNpZmljYXRpb25zIGV4cGxpY2l0bHkgYWxsb3dz IHRvIGNyZWF0ZSBzdWJyYW5nZSB0eXBlcwogICAgICAgd2l0aG91dCBzcGVjaWZ5aW5nIGEgYmFz ZSB0eXBlLgogICAgICAgSW4gdGhhdCBjYXNlLCB0aGUgYmFzZSB0eXBlIG11c3QgYmUgc2V0IHRv IHRoZSB0eXBlIG9mCi1AQCAtMTE3MzcsMjQgKzExOTYyLDE2MyBAQCByZWFkX3N1YnJhbmdlX3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0xMjgz NSwyNCArMTI5MTgsMTYzIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAl9CiAgICAgIH0KICAKQEAgLTI4OTYsMTAgKzEx NjQsNyBAQCBpbmRleCBkZWVlNWEyLi5iMmYwNTJiIDEwMDY0NAogKyAgICAgIHN0cnVjdCBkaWVf aW5mbyAqdGFyZ2V0X2RpZTsKICsgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICp0YXJnZXRfY3UgPSBj dTsKICsgICAgICBzdHJ1Y3QgYXR0cmlidXRlICp0YXJnZXRfbG9jX2F0dHI7Ci0gCi0tICAvKiBB ZGEgZXhwZWN0cyBhbiBlbXB0eSBhcnJheSBvbiBubyBib3VuZGFyeSBhdHRyaWJ1dGVzLiAgKi8K LS0gIGlmIChhdHRyID09IE5VTEwgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKLS0g ICAgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgPSAxOworKwogKyAgICAg IHRhcmdldF9kaWUgPSBmb2xsb3dfZGllX3JlZl9vcl9zaWcgKGRpZSwgYXR0ciwgJnRhcmdldF9j dSk7CiArICAgICAgZ2RiX2Fzc2VydCAodGFyZ2V0X2N1LT5vYmpmaWxlID09IGN1LT5vYmpmaWxl KTsKICsgICAgICB0YXJnZXRfbG9jX2F0dHIgPSBkd2FyZjJfYXR0ciAodGFyZ2V0X2RpZSwgRFdf QVRfbG9jYXRpb24sIHRhcmdldF9jdSk7CkBAIC0yOTM3LDcgKzEyMDIsMTAgQEAgaW5kZXggZGVl ZTVhMi4uYjJmMDUyYiAxMDA2NDQKICsgICAgICBpZiAobG93ID49IDApCiArCVRZUEVfVU5TSUdO RUQgKHJhbmdlX3R5cGUpID0gMTsKICsgICAgfQotKworIAorLSAgLyogQWRhIGV4cGVjdHMgYW4g ZW1wdHkgYXJyYXkgb24gbm8gYm91bmRhcnkgYXR0cmlidXRlcy4gICovCistICBpZiAoYXR0ciA9 PSBOVUxMICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEpCistICAgIFRZUEVfSElHSF9C T1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKICsgIGF0dHIgPSBkd2FyZjJfYXR0ciAo ZGllLCBEV19BVF91cHBlcl9ib3VuZCwgY3UpOwogKyAgaWYgKCFhdHRyIHx8ICghYXR0cl9mb3Jt X2lzX2Jsb2NrIChhdHRyKSAmJiAhYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKQogKwkJJiYg IWlzX3JlZl9hdHRyIChhdHRyKSkpCkBAIC0zMDMyLDIxNCArMTMwMCw3IEBAIGluZGV4IGRlZWU1 YTIuLmIyZjA1MmIgMTAwNjQ0CiAgCiAgICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwog ICAgaWYgKG5hbWUpCi1AQCAtMTI1NDQsNiArMTI5MDgsOCBAQCByZWFkX3BhcnRpYWxfZGllIChj b25zdCBzdHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLAotIAljYXNlIERXX0FUX2V4dGVu c2lvbjoKLSAJICBwYXJ0X2RpZS0+aGFzX3NwZWNpZmljYXRpb24gPSAxOwotIAkgIHBhcnRfZGll LT5zcGVjX29mZnNldCA9IGR3YXJmMl9nZXRfcmVmX2RpZV9vZmZzZXQgKCZhdHRyKTsKLSsJICBw YXJ0X2RpZS0+c3BlY19pc19kd3ogPSAoYXR0ci5mb3JtID09IERXX0ZPUk1fR05VX3JlZl9hbHQK LSsJCQkJICAgfHwgY3UtPnBlcl9jdS0+aXNfZHd6KTsKLSAJICBicmVhazsKLSAJY2FzZSBEV19B VF9zaWJsaW5nOgotIAkgIC8qIElnbm9yZSBhYnNvbHV0ZSBzaWJsaW5ncywgdGhleSBtaWdodCBw b2ludCBvdXRzaWRlIG9mCi1AQCAtMTI1OTAsNyArMTI5NTYsMTEgQEAgcmVhZF9wYXJ0aWFsX2Rp ZSAoY29uc3Qgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwKLSAKLSAJY2FzZSBEV19B VF9pbXBvcnQ6Ci0gCSAgaWYgKHBhcnRfZGllLT50YWcgPT0gRFdfVEFHX2ltcG9ydGVkX3VuaXQp Ci0tCSAgICBwYXJ0X2RpZS0+ZC5vZmZzZXQgPSBkd2FyZjJfZ2V0X3JlZl9kaWVfb2Zmc2V0ICgm YXR0cik7Ci0rCSAgICB7Ci0rCSAgICAgIHBhcnRfZGllLT5kLm9mZnNldCA9IGR3YXJmMl9nZXRf cmVmX2RpZV9vZmZzZXQgKCZhdHRyKTsKLSsJICAgICAgcGFydF9kaWUtPmlzX2R3eiA9IChhdHRy LmZvcm0gPT0gRFdfRk9STV9HTlVfcmVmX2FsdAotKwkJCQkgIHx8IGN1LT5wZXJfY3UtPmlzX2R3 eik7Ci0rCSAgICB9Ci0gCSAgYnJlYWs7Ci0gCi0gCWRlZmF1bHQ6Ci1AQCAtMTI2NjEsMTMgKzEz MDMxLDE0IEBAIGZpbmRfcGFydGlhbF9kaWVfaW5fY29tcF91bml0IChzZWN0X29mZnNldCBvZmZz ZXQsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgIERXX0ZPUk1fcmVmX3NpZzgpLiAgKi8KLSAK LSBzdGF0aWMgc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKgotLWZpbmRfcGFydGlhbF9kaWUgKHNl Y3Rfb2Zmc2V0IG9mZnNldCwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0rZmluZF9wYXJ0aWFsX2Rp ZSAoc2VjdF9vZmZzZXQgb2Zmc2V0LCBpbnQgb2Zmc2V0X2luX2R3eiwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCi0gewotICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+b2JqZmlsZTsKLSAg IHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSA9IE5VTEw7Ci0gICBzdHJ1Y3QgcGFy dGlhbF9kaWVfaW5mbyAqcGQgPSBOVUxMOwotIAotLSAgaWYgKG9mZnNldF9pbl9jdV9wICgmY3Ut PmhlYWRlciwgb2Zmc2V0KSkKLSsgIGlmIChvZmZzZXRfaW5fZHd6ID09IGN1LT5wZXJfY3UtPmlz X2R3egotKyAgICAgICYmIG9mZnNldF9pbl9jdV9wICgmY3UtPmhlYWRlciwgb2Zmc2V0KSkKLSAg ICAgewotICAgICAgIHBkID0gZmluZF9wYXJ0aWFsX2RpZV9pbl9jb21wX3VuaXQgKG9mZnNldCwg Y3UpOwotICAgICAgIGlmIChwZCAhPSBOVUxMKQotQEAgLTEyNjg2LDcgKzEzMDU3LDggQEAgZmlu ZF9wYXJ0aWFsX2RpZSAoc2VjdF9vZmZzZXQgb2Zmc2V0LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK LSAJCSAobG9uZykgY3UtPmhlYWRlci5vZmZzZXQuc2VjdF9vZmYsIChsb25nKSBvZmZzZXQuc2Vj dF9vZmYsCi0gCQkgYmZkX2dldF9maWxlbmFtZSAob2JqZmlsZS0+b2JmZCkpOwotIAl9Ci0tICAg ICAgcGVyX2N1ID0gZHdhcmYyX2ZpbmRfY29udGFpbmluZ19jb21wX3VuaXQgKG9mZnNldCwgb2Jq ZmlsZSk7Ci0rICAgICAgcGVyX2N1ID0gZHdhcmYyX2ZpbmRfY29udGFpbmluZ19jb21wX3VuaXQg KG9mZnNldCwgb2Zmc2V0X2luX2R3eiwKLSsJCQkJCQkgb2JqZmlsZSk7Ci0gCi0gICAgICAgaWYg KHBlcl9jdS0+Y3UgPT0gTlVMTCB8fCBwZXJfY3UtPmN1LT5wYXJ0aWFsX2RpZXMgPT0gTlVMTCkK LSAJbG9hZF9wYXJ0aWFsX2NvbXBfdW5pdCAocGVyX2N1KTsKLUBAIC0xMjc0NCw3ICsxMzExNiw4 IEBAIGd1ZXNzX3BhcnRpYWxfZGllX3N0cnVjdHVyZV9uYW1lIChzdHJ1Y3QgcGFydGlhbF9kaWVf aW5mbyAqc3RydWN0X3BkaSwKLSAKLSAgIHJlYWxfcGRpID0gc3RydWN0X3BkaTsKLSAgIHdoaWxl IChyZWFsX3BkaS0+aGFzX3NwZWNpZmljYXRpb24pCi0tICAgIHJlYWxfcGRpID0gZmluZF9wYXJ0 aWFsX2RpZSAocmVhbF9wZGktPnNwZWNfb2Zmc2V0LCBjdSk7Ci0rICAgIHJlYWxfcGRpID0gZmlu ZF9wYXJ0aWFsX2RpZSAocmVhbF9wZGktPnNwZWNfb2Zmc2V0LAotKwkJCQkgcmVhbF9wZGktPnNw ZWNfaXNfZHd6LCBjdSk7Ci0gCi0gICBpZiAocmVhbF9wZGktPmRpZV9wYXJlbnQgIT0gTlVMTCkK LSAgICAgcmV0dXJuOwotQEAgLTEyNzkyLDcgKzEzMTY1LDggQEAgZml4dXBfcGFydGlhbF9kaWUg KHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwYXJ0X2RpZSwKLSAgICAgewotICAgICAgIHN0cnVj dCBwYXJ0aWFsX2RpZV9pbmZvICpzcGVjX2RpZTsKLSAKLS0gICAgICBzcGVjX2RpZSA9IGZpbmRf cGFydGlhbF9kaWUgKHBhcnRfZGllLT5zcGVjX29mZnNldCwgY3UpOwotKyAgICAgIHNwZWNfZGll ID0gZmluZF9wYXJ0aWFsX2RpZSAocGFydF9kaWUtPnNwZWNfb2Zmc2V0LAotKwkJCQkgICBwYXJ0 X2RpZS0+c3BlY19pc19kd3osIGN1KTsKLSAKLSAgICAgICBmaXh1cF9wYXJ0aWFsX2RpZSAoc3Bl Y19kaWUsIGN1KTsKLSAKLUBAIC0xMjg4MCw2ICsxMzI1NCwxMCBAQCByZWFkX2F0dHJpYnV0ZV92 YWx1ZSAoY29uc3Qgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwKLSAJCQkJICAgICAg ICZjdS0+aGVhZGVyLCAmYnl0ZXNfcmVhZCk7Ci0gICAgICAgaW5mb19wdHIgKz0gYnl0ZXNfcmVh ZDsKLSAgICAgICBicmVhazsKLSsgICAgY2FzZSBEV19GT1JNX0dOVV9yZWZfYWx0OgotKyAgICAg IERXX1VOU05EIChhdHRyKSA9IHJlYWRfb2Zmc2V0IChhYmZkLCBpbmZvX3B0ciwgJmN1LT5oZWFk ZXIsICZieXRlc19yZWFkKTsKLSsgICAgICBpbmZvX3B0ciArPSBieXRlc19yZWFkOwotKyAgICAg IGJyZWFrOwotICAgICBjYXNlIERXX0ZPUk1fYWRkcjoKLSAgICAgICBEV19BRERSIChhdHRyKSA9 IHJlYWRfYWRkcmVzcyAoYWJmZCwgaW5mb19wdHIsIGN1LCAmYnl0ZXNfcmVhZCk7Ci0gICAgICAg aW5mb19wdHIgKz0gYnl0ZXNfcmVhZDsKLUBAIC0xMjkyMiwxMCArMTMzMDAsMjUgQEAgcmVhZF9h dHRyaWJ1dGVfdmFsdWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFkZXIsCi0g ICAgICAgaW5mb19wdHIgKz0gYnl0ZXNfcmVhZDsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBE V19GT1JNX3N0cnA6Ci0tICAgICAgRFdfU1RSSU5HIChhdHRyKSA9IHJlYWRfaW5kaXJlY3Rfc3Ry aW5nIChhYmZkLCBpbmZvX3B0ciwgY3VfaGVhZGVyLAotLQkJCQkJICAgICAgICZieXRlc19yZWFk KTsKLS0gICAgICBEV19TVFJJTkdfSVNfQ0FOT05JQ0FMIChhdHRyKSA9IDA7Ci0tICAgICAgaW5m b19wdHIgKz0gYnl0ZXNfcmVhZDsKLSsgICAgICBpZiAoIWN1LT5wZXJfY3UtPmlzX2R3eikKLSsJ ewotKwkgIERXX1NUUklORyAoYXR0cikgPSByZWFkX2luZGlyZWN0X3N0cmluZyAoYWJmZCwgaW5m b19wdHIsIGN1X2hlYWRlciwKLSsJCQkJCQkgICAmYnl0ZXNfcmVhZCk7Ci0rCSAgRFdfU1RSSU5H X0lTX0NBTk9OSUNBTCAoYXR0cikgPSAwOwotKwkgIGluZm9fcHRyICs9IGJ5dGVzX3JlYWQ7Ci0r CSAgYnJlYWs7Ci0rCX0KLSsgICAgICAvKiBGQUxMVEhST1VHSCAqLwotKyAgICBjYXNlIERXX0ZP Uk1fR05VX3N0cnBfYWx0OgotKyAgICAgIHsKLSsJc3RydWN0IGR3el9maWxlICpkd3ogPSBkd2Fy ZjJfZ2V0X2R3el9maWxlICgpOwotKwlMT05HRVNUIHN0cl9vZmZzZXQgPSByZWFkX29mZnNldCAo YWJmZCwgaW5mb19wdHIsIGN1X2hlYWRlciwKLSsJCQkJCSAgJmJ5dGVzX3JlYWQpOwotKwotKwlE V19TVFJJTkcgKGF0dHIpID0gcmVhZF9pbmRpcmVjdF9zdHJpbmdfZnJvbV9kd3ogKGR3eiwgc3Ry X29mZnNldCk7Ci0rCURXX1NUUklOR19JU19DQU5PTklDQUwgKGF0dHIpID0gMDsKLSsJaW5mb19w dHIgKz0gYnl0ZXNfcmVhZDsKLSsgICAgICB9Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgRFdf Rk9STV9leHBybG9jOgotICAgICBjYXNlIERXX0ZPUk1fYmxvY2s6Ci1AQCAtMTMwMzcsNiArMTM0 MzAsMTAgQEAgcmVhZF9hdHRyaWJ1dGVfdmFsdWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3Nw ZWNzICpyZWFkZXIsCi0gCSAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwotICAgICB9Ci0g Ci0rICAvKiBTdXBlciBoYWNrLiAgKi8KLSsgIGlmIChjdS0+cGVyX2N1LT5pc19kd3ogJiYgaXNf cmVmX2F0dHIgKGF0dHIpKQotKyAgICBhdHRyLT5mb3JtID0gRFdfRk9STV9HTlVfcmVmX2FsdDsK LSsKLSAgIC8qIFdlIGhhdmUgc2VlbiBpbnN0YW5jZXMgd2hlcmUgdGhlIGNvbXBpbGVyIHRyaWVk IHRvIGVtaXQgYSBieXRlCi0gICAgICBzaXplIGF0dHJpYnV0ZSBvZiAtMSB3aGljaCBlbmRlZCB1 cCBiZWluZyBlbmNvZGVkIGFzIGFuIHVuc2lnbmVkCi0gICAgICAweGZmZmZmZmZmLiAgQWx0aG91 Z2ggMHhmZmZmZmZmZiBpcyB0ZWNobmljYWxseSBhIHZhbGlkIHNpemUgdmFsdWUsCi1AQCAtMTMz MzMsNiArMTM3MzAsMzAgQEAgcmVhZF9pbmRpcmVjdF9zdHJpbmdfYXRfb2Zmc2V0IChiZmQgKmFi ZmQsIExPTkdFU1Qgc3RyX29mZnNldCkKLSAgIHJldHVybiAoY2hhciAqKSAoZHdhcmYyX3Blcl9v YmpmaWxlLT5zdHIuYnVmZmVyICsgc3RyX29mZnNldCk7Ci0gfQotIAotKy8qIFJlYWQgYSBzdHJp bmcgYXQgb2Zmc2V0IFNUUl9PRkZTRVQgaW4gdGhlIC5kZWJ1Z19zdHIgc2VjdGlvbiBmcm9tCi0r ICAgdGhlIC5kd3ogZmlsZSBEV1ouICBUaHJvdyBhbiBlcnJvciBpZiB0aGUgb2Zmc2V0IGlzIHRv byBsYXJnZS4gIElmCi0rICAgdGhlIHN0cmluZyBjb25zaXN0cyBvZiBhIHNpbmdsZSBOVUwgYnl0 ZSwgcmV0dXJuIE5VTEw7IG90aGVyd2lzZQotKyAgIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHN0 cmluZy4gICovCi0rCi0rc3RhdGljIGNoYXIgKgotK3JlYWRfaW5kaXJlY3Rfc3RyaW5nX2Zyb21f ZHd6IChzdHJ1Y3QgZHd6X2ZpbGUgKmR3eiwgTE9OR0VTVCBzdHJfb2Zmc2V0KQotK3sKLSsgIGR3 YXJmMl9yZWFkX3NlY3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwgJmR3ei0+c3Ry KTsKLSsKLSsgIGlmIChkd3otPnN0ci5idWZmZXIgPT0gTlVMTCkKLSsgICAgZXJyb3IgKF8oIkRX X0ZPUk1fR05VX3N0cnBfYWx0IHVzZWQgd2l0aG91dCAuZGVidWdfc3RyICIKLSsJICAgICAic2Vj dGlvbiBbaW4gbW9kdWxlICVzXSIpLAotKwkgICBiZmRfZ2V0X2ZpbGVuYW1lIChkd3otPmR3el9i ZmQpKTsKLSsgIGlmIChzdHJfb2Zmc2V0ID49IGR3ei0+c3RyLnNpemUpCi0rICAgIGVycm9yIChf KCJEV19GT1JNX0dOVV9zdHJwX2FsdCBwb2ludGluZyBvdXRzaWRlIG9mICIKLSsJICAgICAiLmRl YnVnX3N0ciBzZWN0aW9uIFtpbiBtb2R1bGUgJXNdIiksCi0rCSAgIGJmZF9nZXRfZmlsZW5hbWUg KGR3ei0+ZHd6X2JmZCkpOwotKyAgZ2RiX2Fzc2VydCAoSE9TVF9DSEFSX0JJVCA9PSA4KTsKLSsg IGlmIChkd3otPnN0ci5idWZmZXJbc3RyX29mZnNldF0gPT0gJ1wwJykKLSsgICAgcmV0dXJuIE5V TEw7Ci0rICByZXR1cm4gKGNoYXIgKikgKGR3ei0+c3RyLmJ1ZmZlciArIHN0cl9vZmZzZXQpOwot K30KLSsKLSBzdGF0aWMgY2hhciAqCi0gcmVhZF9pbmRpcmVjdF9zdHJpbmcgKGJmZCAqYWJmZCwg Z2RiX2J5dGUgKmJ1ZiwKLSAJCSAgICAgIGNvbnN0IHN0cnVjdCBjb21wX3VuaXRfaGVhZCAqY3Vf aGVhZGVyLAotQEAgLTEzODA0LDYgKzE0MjI1LDMwIEBAIGFkZF9maWxlX25hbWUgKHN0cnVjdCBs aW5lX2hlYWRlciAqbGgsCi0gICBmZS0+c3ltdGFiID0gTlVMTDsKLSB9Ci0gCi0rLyogQSBjb252 ZW5pZW5jZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBwcm9wZXIgLmRlYnVnX2xpbmUgc2VjdGlvbiBm b3IgYQotKyAgIENVLiAgKi8KLSsKLStzdGF0aWMgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8g KgotK2dldF9kZWJ1Z19saW5lX3NlY3Rpb24gKHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotK3sKLSsg IHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpzZWN0aW9uOwotKwotKyAgLyogRm9yIFRVcyBp biBEV08gZmlsZXMsIHRoZSBEV19BVF9zdG10X2xpc3QgYXR0cmlidXRlIGxpdmVzIGluIHRoZQot KyAgICAgRFdPIGZpbGUuICAqLwotKyAgaWYgKGN1LT5kd29fdW5pdCAmJiBjdS0+cGVyX2N1LT5p c19kZWJ1Z190eXBlcykKLSsgICAgc2VjdGlvbiA9ICZjdS0+ZHdvX3VuaXQtPmR3b19maWxlLT5z ZWN0aW9ucy5saW5lOwotKyAgZWxzZSBpZiAoY3UtPnBlcl9jdS0+aXNfZHd6KQotKyAgICB7Ci0r ICAgICAgc3RydWN0IGR3el9maWxlICpkd3ogPSBkd2FyZjJfZ2V0X2R3el9maWxlICgpOwotKwot KyAgICAgIHNlY3Rpb24gPSAmZHd6LT5saW5lOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHNlY3Rp b24gPSAmZHdhcmYyX3Blcl9vYmpmaWxlLT5saW5lOwotKwotKyAgcmV0dXJuIHNlY3Rpb247Ci0r fQotKwotIC8qIFJlYWQgdGhlIHN0YXRlbWVudCBwcm9ncmFtIGhlYWRlciBzdGFydGluZyBhdCBP RkZTRVQgaW4KLSAgICAuZGVidWdfbGluZSwgb3IgLmRlYnVnX2xpbmUuZHdvLiAgUmV0dXJuIGEg cG9pbnRlcgotICAgIHRvIGEgc3RydWN0IGxpbmVfaGVhZGVyLCBhbGxvY2F0ZWQgdXNpbmcgeG1h bGxvYy4KLUBAIC0xMzgyNCwxMyArMTQyNjksNyBAQCBkd2FyZl9kZWNvZGVfbGluZV9oZWFkZXIg KHVuc2lnbmVkIGludCBvZmZzZXQsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgc3RydWN0IGR3 YXJmMl9zZWN0aW9uX2luZm8gKnNlY3Rpb247Ci0gICBiZmQgKmFiZmQ7Ci0gCi0tICAvKiBGb3Ig VFVzIGluIERXTyBmaWxlcywgdGhlIERXX0FUX3N0bXRfbGlzdCBhdHRyaWJ1dGUgbGl2ZXMgaW4g dGhlCi0tICAgICBEV08gZmlsZS4gICovCi0tICBpZiAoY3UtPmR3b191bml0ICYmIGN1LT5wZXJf Y3UtPmlzX2RlYnVnX3R5cGVzKQotLSAgICBzZWN0aW9uID0gJmN1LT5kd29fdW5pdC0+ZHdvX2Zp bGUtPnNlY3Rpb25zLmxpbmU7Ci0tICBlbHNlCi0tICAgIHNlY3Rpb24gPSAmZHdhcmYyX3Blcl9v YmpmaWxlLT5saW5lOwotLQotKyAgc2VjdGlvbiA9IGdldF9kZWJ1Z19saW5lX3NlY3Rpb24gKGN1 KTsKLSAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwg c2VjdGlvbik7Ci0gICBpZiAoc2VjdGlvbi0+YnVmZmVyID09IE5VTEwpCi0gICAgIHsKLUBAIC0x NDE1NSw3ICsxNDU5NCw3IEBAIGR3YXJmX2RlY29kZV9saW5lc18xIChzdHJ1Y3QgbGluZV9oZWFk ZXIgKmxoLCBjb25zdCBjaGFyICpjb21wX2RpciwKLSAJCQkgR0NkIGJ5IHRoZSBsaW5rZXIuICBJ Z25vcmUgaXQuICBQUiBnZGIvMTI1MjggKi8KLSAKLSAJCSAgICAgIGxvbmcgbGluZV9vZmZzZXQK LS0JCQk9IGxpbmVfcHRyIC0gZHdhcmYyX3Blcl9vYmpmaWxlLT5saW5lLmJ1ZmZlcjsKLSsJCQk9 IGxpbmVfcHRyIC0gZ2V0X2RlYnVnX2xpbmVfc2VjdGlvbiAoY3UpLT5idWZmZXI7Ci0gCi0gCQkg ICAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0gCQkJCSBfKCIuZGVidWdfbGlu ZSBhZGRyZXNzIGF0IG9mZnNldCAweCVseCBpcyAwICIKLUBAIC0xNDUzNCwxMCArMTQ5NzMsMTIg QEAgdmFyX2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5 bWJvbCAqc3ltLAorQEAgLTE1NzEyLDEwICsxNTkzNCwxMiBAQCB2YXJfZGVjb2RlX2xvY2F0aW9u IChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAgICAgICAoaS5l LiB3aGVuIHRoZSB2YWx1ZSBvZiBhIHJlZ2lzdGVyIG9yIG1lbW9yeSBsb2NhdGlvbiBpcwogICAg ICAgcmVmZXJlbmNlZCwgb3IgYSB0aHJlYWQtbG9jYWwgYmxvY2ssIGV0Yy4pLiAgVGhlbiBhZ2Fp biwgaXQgbWlnaHQKICAgICAgIG5vdCBiZSB3b3J0aHdoaWxlLiAgSSdtIGFzc3VtaW5nIHRoYXQg aXQgaXNuJ3QgdW5sZXNzIHBlcmZvcm1hbmNlCkBAIC0zMjU0LDcgKzEzMTUsNyBAQCBpbmRleCBk ZWVlNWEyLi5iMmYwNTJiIDEwMDY0NAogIAogICAgaWYgKFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5 bSkgPT0gJmR3YXJmMl9sb2NsaXN0X2Z1bmNzKQogICAgICBjdS0+aGFzX2xvY2xpc3QgPSAxOwot QEAgLTE0NTc4LDYgKzE1MDE5LDggQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorQEAgLTE1NzU2 LDYgKzE1OTgwLDggQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAogICAgICAgIGVsc2UKICAJc3lt ID0gT0JTVEFDS19aQUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHN0cnVjdCBzeW1i b2wpOwogICAgICAgIE9CSlNUQVQgKG9iamZpbGUsIG5fc3ltcysrKTsKQEAgLTMyNjMsMzIgKzEz MjQsNyBAQCBpbmRleCBkZWVlNWEyLi5iMmYwNTJiIDEwMDY0NAogIAogICAgICAgIC8qIENhY2hl IHRoaXMgc3ltYm9sJ3MgbmFtZSBhbmQgdGhlIG5hbWUncyBkZW1hbmdsZWQgZm9ybSAoaWYgYW55 KS4gICovCiAgICAgICAgU1lNQk9MX1NFVF9MQU5HVUFHRSAoc3ltLCBjdS0+bGFuZ3VhZ2UpOwot QEAgLTE1MDAxLDYgKzE1NDQ0LDcgQEAgZHdhcmYyX2NvbnN0X3ZhbHVlX2F0dHIgKHN0cnVjdCBh dHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCB0eXBlICp0eXBlLAotICAgICBjYXNlIERXX0ZPUk1fc3Ry aW5nOgotICAgICBjYXNlIERXX0ZPUk1fc3RycDoKLSAgICAgY2FzZSBEV19GT1JNX0dOVV9zdHJf aW5kZXg6Ci0rICAgIGNhc2UgRFdfRk9STV9HTlVfc3RycF9hbHQ6Ci0gICAgICAgLyogRFdfU1RS SU5HIGlzIGFscmVhZHkgYWxsb2NhdGVkIG9uIHRoZSBvYmpmaWxlIG9ic3RhY2ssIHBvaW50Ci0g CSBkaXJlY3RseSB0byBpdC4gICovCi0gICAgICAgKmJ5dGVzID0gKGdkYl9ieXRlICopIERXX1NU UklORyAoYXR0cik7Ci1AQCAtMTUxODcsNyArMTU2MzEsMTUgQEAgbG9va3VwX2RpZV90eXBlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwKLSAKLSAgIC8qIEZp cnN0IHNlZSBpZiB3ZSBoYXZlIGl0IGNhY2hlZC4gICovCi0gCi0tICBpZiAoaXNfcmVmX2F0dHIg KGF0dHIpKQotKyAgaWYgKGF0dHItPmZvcm0gPT0gRFdfRk9STV9HTlVfcmVmX2FsdCkKLSsgICAg ewotKyAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdTsKLSsgICAgICBzZWN0 X29mZnNldCBvZmZzZXQgPSBkd2FyZjJfZ2V0X3JlZl9kaWVfb2Zmc2V0IChhdHRyKTsKLSsKLSsg ICAgICBwZXJfY3UgPSBkd2FyZjJfZmluZF9jb250YWluaW5nX2NvbXBfdW5pdCAob2Zmc2V0LCAx LCBjdS0+b2JqZmlsZSk7Ci0rICAgICAgdGhpc190eXBlID0gZ2V0X2RpZV90eXBlX2F0X29mZnNl dCAob2Zmc2V0LCBwZXJfY3UpOwotKyAgICB9Ci0rICBlbHNlIGlmIChpc19yZWZfYXR0ciAoYXR0 cikpCi0gICAgIHsKLSAgICAgICBzZWN0X29mZnNldCBvZmZzZXQgPSBkd2FyZjJfZ2V0X3JlZl9k aWVfb2Zmc2V0IChhdHRyKTsKLSAKLUBAIC0xNTM1Miw2ICsxNTgwNCw5IEBAIHJlYWRfdHlwZV9k aWVfMSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTE2 NTY1LDYgKzE2NzkxLDkgQEAgcmVhZF90eXBlX2RpZV8xIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAKQEAgLTMyOTgs MjEzICsxMzM0LDcgQEAgaW5kZXggZGVlZTVhMi4uYjJmMDUyYiAxMDA2NDQKICAgIHJldHVybiB0 aGlzX3R5cGU7CiAgfQogIAotQEAgLTE1OTYwLDYgKzE2NDE1LDEwIEBAIGR1bXBfZGllX3NoYWxs b3cgKHN0cnVjdCB1aV9maWxlICpmLCBpbnQgaW5kZW50LCBzdHJ1Y3QgZGllX2luZm8gKmRpZSkK LSAJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGYsICJyZWYgYWRkcmVzczogIik7Ci0gCSAgZnB1dHNf ZmlsdGVyZWQgKGhleF9zdHJpbmcgKERXX1VOU05EICgmZGllLT5hdHRyc1tpXSkpLCBmKTsKLSAJ ICBicmVhazsKLSsJY2FzZSBEV19GT1JNX0dOVV9yZWZfYWx0OgotKwkgIGZwcmludGZfdW5maWx0 ZXJlZCAoZiwgImFsdCByZWYgYWRkcmVzczogIik7Ci0rCSAgZnB1dHNfZmlsdGVyZWQgKGhleF9z dHJpbmcgKERXX1VOU05EICgmZGllLT5hdHRyc1tpXSkpLCBmKTsKLSsJICBicmVhazsKLSAJY2Fz ZSBEV19GT1JNX3JlZjE6Ci0gCWNhc2UgRFdfRk9STV9yZWYyOgotIAljYXNlIERXX0ZPUk1fcmVm NDoKLUBAIC0xNTk5MSw2ICsxNjQ1MCw3IEBAIGR1bXBfZGllX3NoYWxsb3cgKHN0cnVjdCB1aV9m aWxlICpmLCBpbnQgaW5kZW50LCBzdHJ1Y3QgZGllX2luZm8gKmRpZSkKLSAJY2FzZSBEV19GT1JN X3N0cmluZzoKLSAJY2FzZSBEV19GT1JNX3N0cnA6Ci0gCWNhc2UgRFdfRk9STV9HTlVfc3RyX2lu ZGV4OgotKwljYXNlIERXX0ZPUk1fR05VX3N0cnBfYWx0OgotIAkgIGZwcmludGZfdW5maWx0ZXJl ZCAoZiwgInN0cmluZzogXCIlc1wiICglcyBjYW5vbmljYWxpemVkKSIsCi0gCQkgICBEV19TVFJJ TkcgKCZkaWUtPmF0dHJzW2ldKQotIAkJICAgPyBEV19TVFJJTkcgKCZkaWUtPmF0dHJzW2ldKSA6 ICIiLAotQEAgLTE2MDk0LDYgKzE2NTU0LDcgQEAgaXNfcmVmX2F0dHIgKHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHIpCi0gICAgIGNhc2UgRFdfRk9STV9yZWY0OgotICAgICBjYXNlIERXX0ZPUk1fcmVm ODoKLSAgICAgY2FzZSBEV19GT1JNX3JlZl91ZGF0YToKLSsgICAgY2FzZSBEV19GT1JNX0dOVV9y ZWZfYWx0OgotICAgICAgIHJldHVybiAxOwotICAgICBkZWZhdWx0OgotICAgICAgIHJldHVybiAw OwotQEAgLTE2MTcxLDcgKzE2NjMyLDggQEAgZm9sbG93X2RpZV9yZWZfb3Jfc2lnIChzdHJ1Y3Qg ZGllX2luZm8gKnNyY19kaWUsIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCi0gICAgUmV0dXJucyBO VUxMIGlmIE9GRlNFVCBpcyBpbnZhbGlkLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0IGRpZV9pbmZv ICoKLS1mb2xsb3dfZGllX29mZnNldCAoc2VjdF9vZmZzZXQgb2Zmc2V0LCBzdHJ1Y3QgZHdhcmYy X2N1ICoqcmVmX2N1KQotK2ZvbGxvd19kaWVfb2Zmc2V0IChzZWN0X29mZnNldCBvZmZzZXQsIGlu dCBvZmZzZXRfaW5fZHd6LAotKwkJICAgc3RydWN0IGR3YXJmMl9jdSAqKnJlZl9jdSkKLSB7Ci0g ICBzdHJ1Y3QgZGllX2luZm8gdGVtcF9kaWU7Ci0gICBzdHJ1Y3QgZHdhcmYyX2N1ICp0YXJnZXRf Y3UsICpjdSA9ICpyZWZfY3U7Ci1AQCAtMTYxODgsMTEgKzE2NjUwLDEzIEBAIGZvbGxvd19kaWVf b2Zmc2V0IChzZWN0X29mZnNldCBvZmZzZXQsIHN0cnVjdCBkd2FyZjJfY3UgKipyZWZfY3UpCi0g ICAgICAgaWYgKCEgb2Zmc2V0X2luX2N1X3AgKCZjdS0+aGVhZGVyLCBvZmZzZXQpKQotIAlyZXR1 cm4gTlVMTDsKLSAgICAgfQotLSAgZWxzZSBpZiAoISBvZmZzZXRfaW5fY3VfcCAoJmN1LT5oZWFk ZXIsIG9mZnNldCkpCi0rICBlbHNlIGlmIChvZmZzZXRfaW5fZHd6ICE9IGN1LT5wZXJfY3UtPmlz X2R3egotKwkgICB8fCAhIG9mZnNldF9pbl9jdV9wICgmY3UtPmhlYWRlciwgb2Zmc2V0KSkKLSAg ICAgewotICAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdTsKLSAKLS0gICAg ICBwZXJfY3UgPSBkd2FyZjJfZmluZF9jb250YWluaW5nX2NvbXBfdW5pdCAob2Zmc2V0LCBjdS0+ b2JqZmlsZSk7Ci0rICAgICAgcGVyX2N1ID0gZHdhcmYyX2ZpbmRfY29udGFpbmluZ19jb21wX3Vu aXQgKG9mZnNldCwgb2Zmc2V0X2luX2R3eiwKLSsJCQkJCQkgY3UtPm9iamZpbGUpOwotIAotICAg ICAgIC8qIElmIG5lY2Vzc2FyeSwgYWRkIGl0IHRvIHRoZSBxdWV1ZSBhbmQgbG9hZCBpdHMgRElF cy4gICovCi0gICAgICAgaWYgKG1heWJlX3F1ZXVlX2NvbXBfdW5pdCAoY3UsIHBlcl9jdSwgY3Ut Pmxhbmd1YWdlKSkKLUBAIC0xNjIyNCw3ICsxNjY4OCwxMCBAQCBmb2xsb3dfZGllX3JlZiAoc3Ry dWN0IGRpZV9pbmZvICpzcmNfZGllLCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLAotICAgc3RydWN0 IGR3YXJmMl9jdSAqY3UgPSAqcmVmX2N1OwotICAgc3RydWN0IGRpZV9pbmZvICpkaWU7Ci0gCi0t ICBkaWUgPSBmb2xsb3dfZGllX29mZnNldCAob2Zmc2V0LCByZWZfY3UpOwotKyAgZGllID0gZm9s bG93X2RpZV9vZmZzZXQgKG9mZnNldCwKLSsJCQkgICAoYXR0ci0+Zm9ybSA9PSBEV19GT1JNX0dO VV9yZWZfYWx0Ci0rCQkJICAgIHx8IGN1LT5wZXJfY3UtPmlzX2R3eiksCi0rCQkJICAgcmVmX2N1 KTsKLSAgIGlmICghZGllKQotICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IENhbm5vdCBmaW5k IERJRSBhdCAweCV4IHJlZmVyZW5jZWQgZnJvbSBESUUgIgotIAkgICAiYXQgMHgleCBbaW4gbW9k dWxlICVzXSIpLAotQEAgLTE2MjU1LDcgKzE2NzIyLDcgQEAgZHdhcmYyX2ZldGNoX2RpZV9sb2Nh dGlvbl9ibG9jayAoY3Vfb2Zmc2V0IG9mZnNldF9pbl9jdSwKLSAgICAgbG9hZF9jdSAocGVyX2N1 KTsKLSAgIGN1ID0gcGVyX2N1LT5jdTsKLSAKLS0gIGRpZSA9IGZvbGxvd19kaWVfb2Zmc2V0IChv ZmZzZXQsICZjdSk7Ci0rICBkaWUgPSBmb2xsb3dfZGllX29mZnNldCAob2Zmc2V0LCBwZXJfY3Ut PmlzX2R3eiwgJmN1KTsKLSAgIGlmICghZGllKQotICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6 IENhbm5vdCBmaW5kIERJRSBhdCAweCV4IHJlZmVyZW5jZWQgaW4gbW9kdWxlICVzIiksCi0gCSAg IG9mZnNldC5zZWN0X29mZiwgcGVyX2N1LT5vYmpmaWxlLT5uYW1lKTsKLUBAIC0xNzA0OSw2ICsx NzUxNiw3IEBAIHNraXBfZm9ybV9ieXRlcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqYnl0ZXMsIGdk Yl9ieXRlICpidWZmZXJfZW5kLAotIAotICAgICBjYXNlIERXX0ZPUk1fc2VjX29mZnNldDoKLSAg ICAgY2FzZSBEV19GT1JNX3N0cnA6Ci0rICAgIGNhc2UgRFdfRk9STV9HTlVfc3RycF9hbHQ6Ci0g ICAgICAgYnl0ZXMgKz0gb2Zmc2V0X3NpemU7Ci0gICAgICAgYnJlYWs7Ci0gCi1AQCAtMTcyMDQs NyArMTc2NzIsNyBAQCBkd2FyZl9kZWNvZGVfbWFjcm9fYnl0ZXMgKGJmZCAqYWJmZCwgZ2RiX2J5 dGUgKm1hY19wdHIsIGdkYl9ieXRlICptYWNfZW5kLAotIAkJCSAgc3RydWN0IG1hY3JvX3NvdXJj ZV9maWxlICpjdXJyZW50X2ZpbGUsCi0gCQkJICBzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCBjaGFy ICpjb21wX2RpciwKLSAJCQkgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpzZWN0aW9uLAot LQkJCSAgaW50IHNlY3Rpb25faXNfZ251LAotKwkJCSAgaW50IHNlY3Rpb25faXNfZ251LCBpbnQg c2VjdGlvbl9pc19kd3osCi0gCQkJICB1bnNpZ25lZCBpbnQgb2Zmc2V0X3NpemUsCi0gCQkJICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkgIGh0YWJfdCBpbmNsdWRlX2hhc2gpCi1AQCAt MTcyNTUsNiArMTc3MjMsOCBAQCBkd2FyZl9kZWNvZGVfbWFjcm9fYnl0ZXMgKGJmZCAqYWJmZCwg Z2RiX2J5dGUgKm1hY19wdHIsIGdkYl9ieXRlICptYWNfZW5kLAotICAgICAgICAgY2FzZSBEV19N QUNST19HTlVfdW5kZWY6Ci0gCWNhc2UgRFdfTUFDUk9fR05VX2RlZmluZV9pbmRpcmVjdDoKLSAJ Y2FzZSBEV19NQUNST19HTlVfdW5kZWZfaW5kaXJlY3Q6Ci0rCWNhc2UgRFdfTUFDUk9fR05VX2Rl ZmluZV9pbmRpcmVjdF9hbHQ6Ci0rCWNhc2UgRFdfTUFDUk9fR05VX3VuZGVmX2luZGlyZWN0X2Fs dDoKLSAgICAgICAgICAgewotICAgICAgICAgICAgIHVuc2lnbmVkIGludCBieXRlc19yZWFkOwot ICAgICAgICAgICAgIGludCBsaW5lOwotQEAgLTE3Mjc3LDExICsxNzc0NywyMSBAQCBkd2FyZl9k ZWNvZGVfbWFjcm9fYnl0ZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKm1hY19wdHIsIGdkYl9ieXRl ICptYWNfZW5kLAotIAkJc3RyX29mZnNldCA9IHJlYWRfb2Zmc2V0XzEgKGFiZmQsIG1hY19wdHIs IG9mZnNldF9zaXplKTsKLSAJCW1hY19wdHIgKz0gb2Zmc2V0X3NpemU7Ci0gCi0tCQlib2R5ID0g cmVhZF9pbmRpcmVjdF9zdHJpbmdfYXRfb2Zmc2V0IChhYmZkLCBzdHJfb2Zmc2V0KTsKLSsJCWlm IChtYWNpbmZvX3R5cGUgPT0gRFdfTUFDUk9fR05VX2RlZmluZV9pbmRpcmVjdF9hbHQKLSsJCSAg ICB8fCBtYWNpbmZvX3R5cGUgPT0gRFdfTUFDUk9fR05VX3VuZGVmX2luZGlyZWN0X2FsdAotKwkJ ICAgIHx8IHNlY3Rpb25faXNfZHd6KQotKwkJICB7Ci0rCQkgICAgc3RydWN0IGR3el9maWxlICpk d3ogPSBkd2FyZjJfZ2V0X2R3el9maWxlICgpOwotKwotKwkJICAgIGJvZHkgPSByZWFkX2luZGly ZWN0X3N0cmluZ19mcm9tX2R3eiAoZHd6LCBzdHJfb2Zmc2V0KTsKLSsJCSAgfQotKwkJZWxzZQot KwkJICBib2R5ID0gcmVhZF9pbmRpcmVjdF9zdHJpbmdfYXRfb2Zmc2V0IChhYmZkLCBzdHJfb2Zm c2V0KTsKLSAJICAgICAgfQotIAotIAkgICAgaXNfZGVmaW5lID0gKG1hY2luZm9fdHlwZSA9PSBE V19NQUNST19HTlVfZGVmaW5lCi0tCQkJIHx8IG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVf ZGVmaW5lX2luZGlyZWN0KTsKLSsJCQkgfHwgbWFjaW5mb190eXBlID09IERXX01BQ1JPX0dOVV9k ZWZpbmVfaW5kaXJlY3QKLSsJCQkgfHwgbWFjaW5mb190eXBlID09IERXX01BQ1JPX0dOVV9kZWZp bmVfaW5kaXJlY3RfYWx0KTsKLSAgICAgICAgICAgICBpZiAoISBjdXJyZW50X2ZpbGUpCi0gCSAg ICAgIHsKLSAJCS8qIERXQVJGIHZpb2xhdGlvbiBhcyBubyBtYWluIHNvdXJjZSBpcyBwcmVzZW50 LiAgKi8KLUBAIC0xNzMwNSw3ICsxNzc4NSw4IEBAIGR3YXJmX2RlY29kZV9tYWNyb19ieXRlcyAo YmZkICphYmZkLCBnZGJfYnl0ZSAqbWFjX3B0ciwgZ2RiX2J5dGUgKm1hY19lbmQsCi0gCSAgICBl bHNlCi0gCSAgICAgIHsKLSAJCWdkYl9hc3NlcnQgKG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19H TlVfdW5kZWYKLS0JCQkgICAgfHwgbWFjaW5mb190eXBlID09IERXX01BQ1JPX0dOVV91bmRlZl9p bmRpcmVjdCk7Ci0rCQkJICAgIHx8IG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVfdW5kZWZf aW5kaXJlY3QKLSsJCQkgICAgfHwgbWFjaW5mb190eXBlID09IERXX01BQ1JPX0dOVV91bmRlZl9p bmRpcmVjdF9hbHQpOwotIAkJbWFjcm9fdW5kZWYgKGN1cnJlbnRfZmlsZSwgbGluZSwgYm9keSk7 Ci0gCSAgICAgIH0KLSAgICAgICAgICAgfQotQEAgLTE3MzgwLDYgKzE3ODYxLDcgQEAgZHdhcmZf ZGVjb2RlX21hY3JvX2J5dGVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICptYWNfcHRyLCBnZGJfYnl0 ZSAqbWFjX2VuZCwKLSAgICAgICAgICAgYnJlYWs7Ci0gCi0gCWNhc2UgRFdfTUFDUk9fR05VX3Ry YW5zcGFyZW50X2luY2x1ZGU6Ci0rCWNhc2UgRFdfTUFDUk9fR05VX3RyYW5zcGFyZW50X2luY2x1 ZGVfYWx0OgotIAkgIHsKLSAJICAgIExPTkdFU1Qgb2Zmc2V0OwotIAkgICAgdm9pZCAqKnNsb3Q7 Ci1AQCAtMTczOTgsMTMgKzE3ODgwLDMyIEBAIGR3YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoYmZk ICphYmZkLCBnZGJfYnl0ZSAqbWFjX3B0ciwgZ2RiX2J5dGUgKm1hY19lbmQsCi0gCSAgICAgIH0K LSAJICAgIGVsc2UKLSAJICAgICAgewotKwkJYmZkICppbmNsdWRlX2JmZCA9IGFiZmQ7Ci0rCQlz dHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5jbHVkZV9zZWN0aW9uID0gc2VjdGlvbjsKLSsJ CXN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGFsdF9zZWN0aW9uOwotKwkJZ2RiX2J5dGUgKmlu Y2x1ZGVfbWFjX2VuZCA9IG1hY19lbmQ7Ci0rCQlpbnQgaXNfZHd6ID0gc2VjdGlvbl9pc19kd3o7 Ci0rCi0gCQkqc2xvdCA9IG1hY19wdHI7Ci0gCi0tCQlkd2FyZl9kZWNvZGVfbWFjcm9fYnl0ZXMg KGFiZmQsCi0tCQkJCQkgIHNlY3Rpb24tPmJ1ZmZlciArIG9mZnNldCwKLS0JCQkJCSAgbWFjX2Vu ZCwgY3VycmVudF9maWxlLAotKwkJaWYgKG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVfdHJh bnNwYXJlbnRfaW5jbHVkZV9hbHQpCi0rCQkgIHsKLSsJCSAgICBzdHJ1Y3QgZHd6X2ZpbGUgKmR3 eiA9IGR3YXJmMl9nZXRfZHd6X2ZpbGUgKCk7Ci0rCi0rCQkgICAgZHdhcmYyX3JlYWRfc2VjdGlv biAoZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLAotKwkJCQkJICZkd3otPm1hY3JvKTsKLSsK LSsJCSAgICBpbmNsdWRlX2JmZCA9IGR3ei0+bWFjcm8uYXNlY3Rpb24tPm93bmVyOwotKwkJICAg IGluY2x1ZGVfc2VjdGlvbiA9ICZkd3otPm1hY3JvOwotKwkJICAgIGluY2x1ZGVfbWFjX2VuZCA9 IGR3ei0+bWFjcm8uYnVmZmVyICsgZHd6LT5tYWNyby5zaXplOwotKwkJICAgIGlzX2R3eiA9IDE7 Ci0rCQkgIH0KLSsKLSsJCWR3YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoaW5jbHVkZV9iZmQsCi0r CQkJCQkgIGluY2x1ZGVfc2VjdGlvbi0+YnVmZmVyICsgb2Zmc2V0LAotKwkJCQkJICBpbmNsdWRl X21hY19lbmQsIGN1cnJlbnRfZmlsZSwKLSAJCQkJCSAgbGgsIGNvbXBfZGlyLAotLQkJCQkJICBz ZWN0aW9uLCBzZWN0aW9uX2lzX2dudSwKLSsJCQkJCSAgc2VjdGlvbiwgc2VjdGlvbl9pc19nbnUs IGlzX2R3eiwKLSAJCQkJCSAgb2Zmc2V0X3NpemUsIG9iamZpbGUsIGluY2x1ZGVfaGFzaCk7Ci0g Ci0gCQlodGFiX3JlbW92ZV9lbHQgKGluY2x1ZGVfaGFzaCwgbWFjX3B0cik7Ci1AQCAtMTc1NzEs NiArMTgwNzIsOCBAQCBkd2FyZl9kZWNvZGVfbWFjcm9zIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwg dW5zaWduZWQgaW50IG9mZnNldCwKLSAKLSAJY2FzZSBEV19NQUNST19HTlVfZGVmaW5lX2luZGly ZWN0OgotIAljYXNlIERXX01BQ1JPX0dOVV91bmRlZl9pbmRpcmVjdDoKLSsJY2FzZSBEV19NQUNS T19HTlVfZGVmaW5lX2luZGlyZWN0X2FsdDoKLSsJY2FzZSBEV19NQUNST19HTlVfdW5kZWZfaW5k aXJlY3RfYWx0OgotIAkgIHsKLSAJICAgIHVuc2lnbmVkIGludCBieXRlc19yZWFkOwotIAotQEAg LTE3NTgxLDYgKzE4MDg0LDcgQEAgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGR3YXJmMl9j dSAqY3UsIHVuc2lnbmVkIGludCBvZmZzZXQsCi0gCSAgYnJlYWs7Ci0gCi0gCWNhc2UgRFdfTUFD Uk9fR05VX3RyYW5zcGFyZW50X2luY2x1ZGU6Ci0rCWNhc2UgRFdfTUFDUk9fR05VX3RyYW5zcGFy ZW50X2luY2x1ZGVfYWx0OgotIAkgIC8qIE5vdGUgdGhhdCwgYWNjb3JkaW5nIHRvIHRoZSBzcGVj LCBhIHRyYW5zcGFyZW50IGluY2x1ZGUKLSAJICAgICBjaGFpbiBjYW5ub3QgY2FsbCBEV19NQUNS T19HTlVfc3RhcnRfZmlsZS4gIFNvLCB3ZSBjYW4ganVzdAotIAkgICAgIHNraXAgdGhpcyBvcGNv ZGUuICAqLwotQEAgLTE3NjIzLDcgKzE4MTI3LDggQEAgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3Ry dWN0IGR3YXJmMl9jdSAqY3UsIHVuc2lnbmVkIGludCBvZmZzZXQsCi0gICBzbG90ID0gaHRhYl9m aW5kX3Nsb3QgKGluY2x1ZGVfaGFzaCwgbWFjX3B0ciwgSU5TRVJUKTsKLSAgICpzbG90ID0gbWFj X3B0cjsKLSAgIGR3YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoYWJmZCwgbWFjX3B0ciwgbWFjX2Vu ZCwKLS0JCQkgICAgY3VycmVudF9maWxlLCBsaCwgY29tcF9kaXIsIHNlY3Rpb24sIHNlY3Rpb25f aXNfZ251LAotKwkJCSAgICBjdXJyZW50X2ZpbGUsIGxoLCBjb21wX2Rpciwgc2VjdGlvbiwKLSsJ CQkgICAgc2VjdGlvbl9pc19nbnUsIDAsCi0gCQkJICAgIG9mZnNldF9zaXplLCBvYmpmaWxlLCBp bmNsdWRlX2hhc2gpOwotICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotIH0KLUBAIC0xNzcyMSw2 MiArMTgyMjYsMTAwIEBAIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAoc3RydWN0IGR3YXJmMl9jdSAq Y3UsCitAQCAtMTg5OTksNjIgKzE5MjI4LDEwMCBAQCBmaWxsX2luX2xvY2xpc3RfYmF0b24gKHN0 cnVjdCBkd2FyZjJfY3UgKmN1LAogICAgYmF0b24tPmZyb21fZHdvID0gY3UtPmR3b191bml0ICE9 IE5VTEw7CiAgfQogIApAQCAtMzU0NCwxNSArMTM3NCwxNSBAQCBpbmRleCBkZWVlNWEyLi5iMmYw NTJiIDEwMDY0NAogICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX29iamZp bGUtPm9iamZpbGU7CiAgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbiA9IGN1 X2RlYnVnX2xvY19zZWN0aW9uIChjdSk7CiArICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24g KmJhdG9uOwotKworIAorLSAgaWYgKGF0dHJfZm9ybV9pc19zZWN0aW9uX29mZnNldCAoYXR0cikK ICsgIC8qIERXX0FUX2xvY2F0aW9uIG9mIHRoZSByZWZlcmVuY2VkIERJRSBtYXkgYmUgbWlzc2lu ZyBpZiB0aGUgcmVmZXJlbmNlZAogKyAgICAgdmFyaWFibGUgaGFzIGJlZW4gb3B0aW1pemVkIG91 dC4gICovCiArICBpZiAoIWF0dHIpCiArICAgIHJldHVybiBOVUxMOwogKwogKyAgZHdhcmYyX3Jl YWRfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLCBzZWN0aW9uKTsKLSAKLS0g IGlmIChhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKGF0dHIpCisrCiArICBpZiAoIShhdHRy X2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKGF0dHIpCiAgICAgICAgLyogLmRlYnVnX2xvY3ssLmR3 b30gbWF5IG5vdCBleGlzdCBhdCBhbGwsIG9yIHRoZSBvZmZzZXQgbWF5IGJlIG91dHNpZGUKICAJ IHRoZSBzZWN0aW9uLiAgSWYgc28sIGZhbGwgdGhyb3VnaCB0byB0aGUgY29tcGxhaW50IGluIHRo ZQpAQCAtMzY0Myw1MCArMTQ3Myw5IEBAIGluZGV4IGRlZWU1YTIuLmIyZjA1MmIgMTAwNjQ0CiAg ICAgIH0KICB9CiAgCi1AQCAtMTc4NzgsMjggKzE4NDIxLDM1IEBAIGR3YXJmMl9wZXJfY3VfdGV4 dF9vZmZzZXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKLSAKLSBzdGF0aWMg c3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqCi0gZHdhcmYyX2ZpbmRfY29udGFpbmluZ19jb21w X3VuaXQgKHNlY3Rfb2Zmc2V0IG9mZnNldCwKLSsJCQkJICB1bnNpZ25lZCBpbnQgb2Zmc2V0X2lu X2R3eiwKLSAJCQkJICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSB7Ci0gICBzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1OwotICAgaW50IGxvdywgaGlnaDsKLSsgIGNvbnN0IHNl Y3Rfb2Zmc2V0ICpjdV9vZmY7Ci0gCi0gICBsb3cgPSAwOwotICAgaGlnaCA9IGR3YXJmMl9wZXJf b2JqZmlsZS0+bl9jb21wX3VuaXRzIC0gMTsKLSAgIHdoaWxlIChoaWdoID4gbG93KQotICAgICB7 Ci0rICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqbWlkX2N1OwotICAgICAgIGludCBt aWQgPSBsb3cgKyAoaGlnaCAtIGxvdykgLyAyOwotIAotLSAgICAgIGlmIChkd2FyZjJfcGVyX29i amZpbGUtPmFsbF9jb21wX3VuaXRzW21pZF0tPm9mZnNldC5zZWN0X29mZgotLQkgID49IG9mZnNl dC5zZWN0X29mZikKLSsgICAgICBtaWRfY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21w X3VuaXRzW21pZF07Ci0rICAgICAgY3Vfb2ZmID0gJm1pZF9jdS0+b2Zmc2V0OwotKyAgICAgIGlm IChtaWRfY3UtPmlzX2R3eiA+IG9mZnNldF9pbl9kd3oKLSsJICB8fCAobWlkX2N1LT5pc19kd3og PT0gb2Zmc2V0X2luX2R3egotKwkgICAgICAmJiBjdV9vZmYtPnNlY3Rfb2ZmID49IG9mZnNldC5z ZWN0X29mZikpCi0gCWhpZ2ggPSBtaWQ7Ci0gICAgICAgZWxzZQotIAlsb3cgPSBtaWQgKyAxOwot ICAgICB9Ci0gICBnZGJfYXNzZXJ0IChsb3cgPT0gaGlnaCk7Ci0tICBpZiAoZHdhcmYyX3Blcl9v YmpmaWxlLT5hbGxfY29tcF91bml0c1tsb3ddLT5vZmZzZXQuc2VjdF9vZmYKLS0gICAgICA+IG9m ZnNldC5zZWN0X29mZikKLSsgIHRoaXNfY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21w X3VuaXRzW2xvd107Ci0rICBjdV9vZmYgPSAmdGhpc19jdS0+b2Zmc2V0OwotKyAgaWYgKHRoaXNf Y3UtPmlzX2R3eiAhPSBvZmZzZXRfaW5fZHd6IHx8IGN1X29mZi0+c2VjdF9vZmYgPiBvZmZzZXQu c2VjdF9vZmYpCi0gICAgIHsKLS0gICAgICBpZiAobG93ID09IDApCi0rICAgICAgaWYgKGxvdyA9 PSAwIHx8IHRoaXNfY3UtPmlzX2R3eiAhPSBvZmZzZXRfaW5fZHd6KQotIAllcnJvciAoXygiRHdh cmYgRXJyb3I6IGNvdWxkIG5vdCBmaW5kIHBhcnRpYWwgRElFIGNvbnRhaW5pbmcgIgotIAkgICAg ICAgIm9mZnNldCAweCVseCBbaW4gbW9kdWxlICVzXSIpLAotIAkgICAgICAgKGxvbmcpIG9mZnNl dC5zZWN0X29mZiwgYmZkX2dldF9maWxlbmFtZSAob2JqZmlsZS0+b2JmZCkpOwotQEAgLTE4MTQw LDYgKzE4NjkwLDI1IEBAIHBlcl9jdV9vZmZzZXRfYW5kX3R5cGVfZXEgKGNvbnN0IHZvaWQgKml0 ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKLSAJICAmJiBvZnNfbGhzLT5vZmZzZXQuc2Vj dF9vZmYgPT0gb2ZzX3Jocy0+b2Zmc2V0LnNlY3Rfb2ZmKTsKLSB9CitAQCAtMTk0MjUsNiArMTk2 OTIsMjUgQEAgcGVyX2N1X29mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMs IGNvbnN0IHZvaWQgKml0ZW1fcmhzKQorIAkgICYmIG9mc19saHMtPm9mZnNldC5zZWN0X29mZiA9 PSBvZnNfcmhzLT5vZmZzZXQuc2VjdF9vZmYpOworIH0KICAKICsvKiBGaWxsIGluIGdlbmVyaWMg YXR0cmlidXRlcyBhcHBsaWNhYmxlIGZvciB0eXBlIERJRXMuICAqLwogKwpAQCAtMzcxMCw3ICsx NDk5LDcgQEAgaW5kZXggZGVlZTVhMi4uYjJmMDUyYiAxMDA2NDQKICAvKiBTZXQgdGhlIHR5cGUg YXNzb2NpYXRlZCB3aXRoIERJRSB0byBUWVBFLiAgU2F2ZSBpdCBpbiBDVSdzIGhhc2gKICAgICB0 YWJsZSBpZiBuZWNlc3NhcnkuICBGb3IgY29udmVuaWVuY2UsIHJldHVybiBUWVBFLgogIAotQEAg LTE4MTY0LDYgKzE4NzMzLDggQEAgc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTE5NDQ5LDYgKzE5 NzM1LDggQEAgc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IGR3YXJmMl9wZXJfY3Vfb2Zm c2V0X2FuZF90eXBlICoqc2xvdCwgb2ZzOwogICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBj dS0+b2JqZmlsZTsKICAKQEAgLTM3MTksMTE3ICsxNTA4LDggQEAgaW5kZXggZGVlZTVhMi4uYjJm MDUyYiAxMDA2NDQKICAgIC8qIEZvciBBZGEgdHlwZXMsIG1ha2Ugc3VyZSB0aGF0IHRoZSBnbmF0 LXNwZWNpZmljIGRhdGEgaXMgYWx3YXlzCiAgICAgICBpbml0aWFsaXplZCAoaWYgbm90IGFscmVh ZHkgc2V0KS4gIFRoZXJlIGFyZSBhIGZldyB0eXBlcyB3aGVyZQogICAgICAgd2Ugc2hvdWxkIG5v dCBiZSBkb2luZyBzbywgYmVjYXVzZSB0aGUgdHlwZS1zcGVjaWZpYyBhcmVhIGlzCi1AQCAtMTgz NDEsNTMgKzE4OTEyLDEzIEBAIHNob3dfZHdhcmYyX2NtZCAoY2hhciAqYXJncywgaW50IGZyb21f dHR5KQotICAgY21kX3Nob3dfbGlzdCAoc2hvd19kd2FyZjJfY21kbGlzdCwgZnJvbV90dHksICIi KTsKLSB9Ci0gCi0tLyogSWYgc2VjdGlvbiBkZXNjcmliZWQgYnkgSU5GTyB3YXMgbW1hcHBlZCwg bXVubWFwIGl0IG5vdy4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1tdW5tYXBfc2VjdGlvbl9idWZm ZXIgKHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQotLXsKLS0gIGlmIChpbmZvLT5t YXBfYWRkciAhPSBOVUxMKQotLSAgICB7Ci0tI2lmZGVmIEhBVkVfTU1BUAotLSAgICAgIGludCBy ZXM7Ci0tCi0tICAgICAgcmVzID0gbXVubWFwIChpbmZvLT5tYXBfYWRkciwgaW5mby0+bWFwX2xl bik7Ci0tICAgICAgZ2RiX2Fzc2VydCAocmVzID09IDApOwotLSNlbHNlCi0tICAgICAgLyogV2l0 aG91dCBIQVZFX01NQVAsIHdlIHNob3VsZCBuZXZlciBiZSBoZXJlIHRvIGJlZ2luIHdpdGguICAq LwotLSAgICAgIGdkYl9hc3NlcnRfbm90X3JlYWNoZWQgKCJubyBtbWFwIHN1cHBvcnQiKTsKLS0j ZW5kaWYKLS0gICAgfQotLX0KLS0KLS0vKiBtdW5tYXAgZGVidWcgc2VjdGlvbnMgZm9yIE9CSkZJ TEUsIGlmIG5lY2Vzc2FyeS4gICovCi0rLyogRnJlZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBPQkpG SUxFLCBpZiBuZWNlc3NhcnkuICAqLwotIAotIHN0YXRpYyB2b2lkCi0gZHdhcmYyX3Blcl9vYmpm aWxlX2ZyZWUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkKQotIHsKLSAgIHN0cnVj dCBkd2FyZjJfcGVyX29iamZpbGUgKmRhdGEgPSBkOwotICAgaW50IGl4OwotLSAgc3RydWN0IGR3 YXJmMl9zZWN0aW9uX2luZm8gKnNlY3Rpb247Ci0tCi0tICAvKiBUaGlzIGlzIHNvcnRlZCBhY2Nv cmRpbmcgdG8gdGhlIG9yZGVyIHRoZXkncmUgZGVmaW5lZCBpbiB0byBtYWtlIGl0IGVhc2llcgot LSAgICAgdG8ga2VlcCBpbiBzeW5jLiAgKi8KLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRh dGEtPmluZm8pOwotLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+YWJicmV2KTsKLS0g IG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmxpbmUpOwotLSAgbXVubWFwX3NlY3Rpb25f YnVmZmVyICgmZGF0YS0+bG9jKTsKLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPm1h Y2luZm8pOwotLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+bWFjcm8pOwotLSAgbXVu bWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+c3RyKTsKLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZl ciAoJmRhdGEtPnJhbmdlcyk7Ci0tICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5hZGRy KTsKLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmZyYW1lKTsKLS0gIG11bm1hcF9z ZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmVoX2ZyYW1lKTsKLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZl ciAoJmRhdGEtPmdkYl9pbmRleCk7Ci0tCi0tICBmb3IgKGl4ID0gMDsKLS0gICAgICAgVkVDX2l0 ZXJhdGUgKGR3YXJmMl9zZWN0aW9uX2luZm9fZGVmLCBkYXRhLT50eXBlcywgaXgsIHNlY3Rpb24p OwotLSAgICAgICArK2l4KQotLSAgICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKHNlY3Rpb24pOwot IAotICAgZm9yIChpeCA9IDA7IGl4IDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7 ICsraXgpCi0gICAgIFZFQ19mcmVlIChkd2FyZjJfcGVyX2N1X3B0ciwKLUBAIC0xODM5Nyw2ICsx ODkyOCw5IEBAIGR3YXJmMl9wZXJfb2JqZmlsZV9mcmVlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgdm9pZCAqZCkKLSAKLSAgIGlmIChkYXRhLT5kd29fZmlsZXMpCi0gICAgIGZyZWVfZHdvX2Zp bGVzIChkYXRhLT5kd29fZmlsZXMsIG9iamZpbGUpOwotKwotKyAgaWYgKGRhdGEtPmR3el9maWxl ICYmIGRhdGEtPmR3el9maWxlLT5kd3pfYmZkKQotKyAgICBnZGJfYmZkX3VucmVmIChkYXRhLT5k d3pfZmlsZS0+ZHd6X2JmZCk7Ci0gfQotIAotIAwKLWRpZmYgLS1naXQgYS9nZGIvZWxmcmVhZC5j IGIvZ2RiL2VsZnJlYWQuYwotaW5kZXggMWVkZmIyNy4uMGI1NGI4YSAxMDA2NDQKLS0tLSBhL2dk Yi9lbGZyZWFkLmMKLSsrKyBiL2dkYi9lbGZyZWFkLmMKLUBAIC00NCw2ICs0NCw3IEBACi0gI2lu Y2x1ZGUgImdkYnRocmVhZC5oIgotICNpbmNsdWRlICJyZWdjYWNoZS5oIgotICNpbmNsdWRlICJi Y2FjaGUuaCIKLSsjaW5jbHVkZSAiZ2RiX2JmZC5oIgotIAotIGV4dGVybiB2b2lkIF9pbml0aWFs aXplX2VsZnJlYWQgKHZvaWQpOwotIAotQEAgLTExMDgsNyArMTEwOSw3IEBAIGJ1aWxkX2lkX3Zl cmlmeSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBidWlsZF9pZCAqY2hlY2spCi0gICBp bnQgcmV0dmFsID0gMDsKLSAKLSAgIC8qIFdlIGV4cGVjdCB0byBiZSBzaWxlbnQgb24gdGhlIG5v bi1leGlzdGluZyBmaWxlcy4gICovCi0tICBhYmZkID0gYmZkX29wZW5fbWF5YmVfcmVtb3RlIChm aWxlbmFtZSk7Ci0rICBhYmZkID0gZ2RiX2JmZF9vcGVuX21heWJlX3JlbW90ZSAoZmlsZW5hbWUp OwotICAgaWYgKGFiZmQgPT0gTlVMTCkKLSAgICAgcmV0dXJuIDA7Ci0gCi1AQCAtMTEyMyw3ICsx MTI0LDcgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IGJ1 aWxkX2lkICpjaGVjaykKLSAgIGVsc2UKLSAgICAgcmV0dmFsID0gMTsKLSAKLS0gIGdkYl9iZmRf Y2xvc2Vfb3Jfd2FybiAoYWJmZCk7Ci0rICBnZGJfYmZkX3VucmVmIChhYmZkKTsKLSAKLSAgIHhm cmVlIChmb3VuZCk7Ci0gCi1AQCAtMTQ0NCwxMCArMTQ0NSwxMiBAQCBlbGZfc3ltZmlsZV9yZWFk IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3MpCi0gCi0gICAgICAg aWYgKGRlYnVnZmlsZSkKLSAJewotKwkgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwID0gbWFrZV9j bGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKLSAJICBiZmQgKmFiZmQgPSBzeW1maWxlX2JmZF9v cGVuIChkZWJ1Z2ZpbGUpOwotIAotKwkgIG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKGFiZmQpOwot IAkgIHN5bWJvbF9maWxlX2FkZF9zZXBhcmF0ZSAoYWJmZCwgc3ltZmlsZV9mbGFncywgb2JqZmls ZSk7Ci0tCSAgeGZyZWUgKGRlYnVnZmlsZSk7Ci0rCSAgZG9fY2xlYW51cHMgKGNsZWFudXApOwot IAl9Ci0gICAgIH0KLSAKIGRpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYwotaW5k ZXggN2QzYThiOS4uZjY5ZGZmMCAxMDA2NDQKK2luZGV4IGM5NjMwZGYuLmI3OTcxODkgMTAwNjQ0 CiAtLS0gYS9nZGIvZXZhbC5jCiArKysgYi9nZGIvZXZhbC5jCiBAQCAtNDEsNiArNDEsNyBAQApA QCAtMzg0MCw3ICsxNTIwLDcgQEAgaW5kZXggN2QzYThiOS4uZjY5ZGZmMCAxMDA2NDQKICAKICAj aW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgogIAotQEAgLTUwMCwyNyArNTAxLDIxNyBAQCBpbml0X2Fy cmF5X2VsZW1lbnQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCB2YWx1ZSAqZWxlbWVudCwK K0BAIC0zOTMsMjcgKzM5NCwyMTcgQEAgaW5pdF9hcnJheV9lbGVtZW50IChzdHJ1Y3QgdmFsdWUg KmFycmF5LCBzdHJ1Y3QgdmFsdWUgKmVsZW1lbnQsCiAgfQogIAogIHN0YXRpYyBzdHJ1Y3QgdmFs dWUgKgpAQCAtNDA3NCw3ICsxNzU0LDcgQEAgaW5kZXggN2QzYThiOS4uZjY5ZGZmMCAxMDA2NDQK ICB9CiAgCiAgCi1AQCAtODE4LDYgKzEwMDksNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQg KHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKK0BAIC03MTAsNiArOTAxLDcgQEAgZXZhbHVhdGVf c3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgICBpbnQgc2F2ZV9w b3MxOwogICAgc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24gPSBOVUxMOwogICAgY2hhciAqZnVuY3Rp b25fbmFtZSA9IE5VTEw7CkBAIC00MDgyLDcgKzE3NjIsNyBAQCBpbmRleCA3ZDNhOGI5Li5mNjlk ZmYwIDEwMDY0NAogIAogICAgcGMgPSAoKnBvcykrKzsKICAgIG9wID0gZXhwLT5lbHRzW3BjXS5v cGNvZGU7Ci1AQCAtMTg5Miw2ICsyMDg0LDggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChz dHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMTc3OSw2ICsxOTcxLDggQEAgZXZhbHVhdGVf c3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCiAgICAgICAgLyog Rmlyc3QgZGV0ZXJtaW5lIHRoZSB0eXBlIGNvZGUgd2UgYXJlIGRlYWxpbmcgd2l0aC4gICovCiAg ICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsIHBvcywgbm9zaWRl KTsKQEAgLTQwOTEsNyArMTc3MSw3IEBAIGluZGV4IDdkM2E4YjkuLmY2OWRmZjAgMTAwNjQ0CiAg ICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKICAgICAgICBj b2RlID0gVFlQRV9DT0RFICh0eXBlKTsKICAKLUBAIC0xOTEyLDIzICsyMTA2LDEzIEBAIGV2YWx1 YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTE3OTks MjMgKzE5OTMsMTMgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhw ZWN0X3R5cGUsCiAgCSAgICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOwogIAkgICAgfQogIAl9 IApAQCAtNDExNyw3ICsxNzk3LDcgQEAgaW5kZXggN2QzYThiOS4uZjY5ZGZmMCAxMDA2NDQKICAK ICAJY2FzZSBUWVBFX0NPREVfUFRSOgogIAljYXNlIFRZUEVfQ09ERV9GVU5DOgotQEAgLTIzNjEs NDkgKzI1NDUsNiBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBl Y3RfdHlwZSwKK0BAIC0yMjQyLDQ5ICsyNDI2LDYgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJk IChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCX0KICAgICAgICByZXR1cm4gKGFyZzEpOwog IApAQCAtNDE1Nyw4ICsxODM3LDggQEAgaW5kZXggN2QzYThiOS4uZjY5ZGZmMCAxMDA2NDQKIC0J ICAgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAo YXJyYXkpKTsKIC0JICAgIExPTkdFU1QgaW5kZXggPSBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOwog LQotLQkgICAgbG93ZXIgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKGFycmF5X3R5cGUpOwotLQkgICAg YXJyYXkgPSB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFycmF5LCBpbmRleCwgbG93ZXIpOwor LQkgICAgYXJyYXkgPSB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFycmF5LCBpbmRleCwKKy0J CQkJCSAgICAgIGY3N19nZXRfbG93ZXJib3VuZCAoYXJyYXlfdHlwZSkpOwogLQkgIH0KIC0KIC0J cmV0dXJuIGFycmF5OwpAQCAtNDE2Nyw3ICsxODQ3LDcgQEAgaW5kZXggN2QzYThiOS4uZjY5ZGZm MCAxMDA2NDQKICAgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKICAgICAgICBhcmcxID0gZXZh bHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3NpZGUpOwogICAgICAgIGlmIChu b3NpZGUgPT0gRVZBTF9TS0lQKQotQEAgLTI2MzUsMTUgKzI3NzYsMjMgQEAgZXZhbHVhdGVfc3Vi ZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMjUxNiwxNSArMjY1 NywyMyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlw ZSwKICAgICAgICBpZiAoZXhwZWN0X3R5cGUgJiYgVFlQRV9DT0RFIChleHBlY3RfdHlwZSkgPT0g VFlQRV9DT0RFX1BUUikKICAJZXhwZWN0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChjaGVja190 eXBlZGVmIChleHBlY3RfdHlwZSkpOwogICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKGV4 cGVjdF90eXBlLCBleHAsIHBvcywgbm9zaWRlKTsKQEAgLTQxOTMsNyArMTg3Myw3IEBAIGluZGV4 IDdkM2E4YjkuLmY2OWRmZjAgMTAwNjQ0CiAgICAgICAgZWxzZSBpZiAobm9zaWRlID09IEVWQUxf QVZPSURfU0lERV9FRkZFQ1RTKQogIAl7CiAgCSAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVl X3R5cGUgKGFyZzEpKTsKLUBAIC0yNjUyLDEyICsyODAxLDE4IEBAIGV2YWx1YXRlX3N1YmV4cF9z dGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTI1MzMsMTIgKzI2ODIsMTgg QEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAg CSAgLyogSW4gQyB5b3UgY2FuIGRlcmVmZXJlbmNlIGFuIGFycmF5IHRvIGdldCB0aGUgMXN0IGVs dC4gICovCiAgCSAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCiAg CSAgICApCkBAIC00MjE3LDcgKzE4OTcsNyBAQCBpbmRleCA3ZDNhOGI5Li5mNjlkZmYwIDEwMDY0 NAogIAkgIGVsc2UKICAJICAgIGVycm9yIChfKCJBdHRlbXB0IHRvIHRha2UgY29udGVudHMgb2Yg YSBub24tcG9pbnRlciB2YWx1ZS4iKSk7CiAgCX0KLUBAIC0yNjY3LDkgKzI4MjIsMTQgQEAgZXZh bHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMjU0 OCw5ICsyNzAzLDE0IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4 cGVjdF90eXBlLAogIAkgZG8uICAibG9uZyBsb25nIiB2YXJpYWJsZXMgYXJlIHJhcmUgZW5vdWdo IHRoYXQKICAJIEJVSUxUSU5fVFlQRV9MT05HRVNUIHdvdWxkIHNlZW0gdG8gYmUgYSBtaXN0YWtl LiAgKi8KICAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfSU5UKQpAQCAt NDIzNSw3ICsxOTE1LDcgQEAgaW5kZXggN2QzYThiOS4uZjY5ZGZmMCAxMDA2NDQKICAKICAgICAg Y2FzZSBVTk9QX0FERFI6CiAgICAgICAgLyogQysrOiBjaGVjayBmb3IgYW5kIGhhbmRsZSBwb2lu dGVyIHRvIG1lbWJlcnMuICAqLwotQEAgLTMwMTEsNyArMzE3MSw3IEBAIGV2YWx1YXRlX3N1YmV4 cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorQEAgLTI5NjMsNyArMzEy Myw3IEBAIGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwLAogIHsKICAgIGVudW0gZXhwX29wY29kZSBvcDsKICAgIGludCBwYzsKQEAgLTQyNDQsNyAr MTkyNCw3IEBAIGluZGV4IDdkM2E4YjkuLmY2OWRmZjAgMTAwNjQ0CiAgICBzdHJ1Y3Qgc3ltYm9s ICp2YXI7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKICAKLUBAIC0zMDIyLDEzICszMTgyLDE4IEBA IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAor QEAgLTI5NzQsMTMgKzMxMzQsMTggQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0 cnVjdCBleHByZXNzaW9uICpleHAsCiAgICAgIHsKICAgICAgY2FzZSBPUF9WQVJfVkFMVUU6CiAg ICAgICAgdmFyID0gZXhwLT5lbHRzW3BjICsgMl0uc3ltYm9sOwpAQCAtNDI2NCw3ICsxOTQ0LDcg QEAgaW5kZXggN2QzYThiOS4uZjY5ZGZmMCAxMDA2NDQKICAJICByZXR1cm4gdmFsdWVfY2FzdCAo bG9va3VwX3BvaW50ZXJfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpLAogIAkJCSAgICAg dmFsKTsKICAJfQotQEAgLTMwODAsOSArMzI0NSwxMyBAQCBldmFsdWF0ZV9zdWJleHBfZm9yX3Np emVvZiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MpCitAQCAtMzAzOCw5ICszMjAz LDEzIEBAIGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6ZW9mIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw LCBpbnQgKnBvcykKICAKICAgICAgY2FzZSBPUF9WQVJfVkFMVUU6CiAgICAgICAgKCpwb3MpICs9 IDQ7CkBAIC00MjgxLDcgKzE5NjEsNyBAQCBpbmRleCA3ZDNhOGI5Li5mNjlkZmYwIDEwMDY0NAog IAogICAgICBkZWZhdWx0OgogICAgICAgIHZhbCA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBF LCBleHAsIHBvcywgRVZBTF9BVk9JRF9TSURFX0VGRkVDVFMpOwotQEAgLTMxMTMsMTggKzMyODIs MjUgQEAgcGFyc2VfYW5kX2V2YWxfdHlwZSAoY2hhciAqcCwgaW50IGxlbmd0aCkKK0BAIC0zMDcx LDE4ICszMjQwLDI1IEBAIHBhcnNlX2FuZF9ldmFsX3R5cGUgKGNoYXIgKnAsIGludCBsZW5ndGgp CiAgaW50CiAgY2FsY19mNzdfYXJyYXlfZGltcyAoc3RydWN0IHR5cGUgKmFycmF5X3R5cGUpCiAg ewpAQCAtNDMxNyw5NSArMTk5NywxMSBAQCBpbmRleCA3ZDNhOGI5Li5mNjlkZmYwIDEwMDY0NAog LSAgcmV0dXJuIG5kaW1lbjsKICsKICB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL2V4ZWMuYyBiL2dkYi9l eGVjLmMKLWluZGV4IDZiYTE5ODYuLmUwNzY2MDkgMTAwNjQ0Ci0tLS0gYS9nZGIvZXhlYy5jCi0r KysgYi9nZGIvZXhlYy5jCi1AQCAtMzMsNiArMzMsNyBAQAotICNpbmNsdWRlICJhcmNoLXV0aWxz LmgiCi0gI2luY2x1ZGUgImdkYnRocmVhZC5oIgotICNpbmNsdWRlICJwcm9nc3BhY2UuaCIKLSsj aW5jbHVkZSAiZ2RiX2JmZC5oIgotIAotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlICJy ZWFkbGluZS9yZWFkbGluZS5oIgotQEAgLTk4LDEwICs5OSw4IEBAIGV4ZWNfY2xvc2UgKHZvaWQp Ci0gICBpZiAoZXhlY19iZmQpCi0gICAgIHsKLSAgICAgICBiZmQgKmFiZmQgPSBleGVjX2JmZDsK LS0gICAgICBjaGFyICpuYW1lID0gYmZkX2dldF9maWxlbmFtZSAoYWJmZCk7Ci0gCi0tICAgICAg Z2RiX2JmZF9jbG9zZV9vcl93YXJuIChhYmZkKTsKLS0gICAgICB4ZnJlZSAobmFtZSk7Ci0rICAg ICAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7Ci0gCi0gICAgICAgLyogUmVtb3ZpbmcgdGFyZ2V0IHNl Y3Rpb25zIG1heSBjbG9zZSB0aGUgZXhlY19vcHMgdGFyZ2V0LgotIAkgQ2xlYXIgZXhlY19iZmQg YmVmb3JlIGRvaW5nIHNvIHRvIHByZXZlbnQgcmVjdXJzaW9uLiAgKi8KLUBAIC0xMjgsMTcgKzEy NywxMyBAQCBleGVjX2Nsb3NlXzEgKGludCBxdWl0dGluZykKLSAgICAgICB2cCA9IG54dDsKLSAg ICAgICBueHQgPSB2cC0+bnh0OwotIAotLSAgICAgIC8qIGlmIHRoZXJlIGlzIGFuIG9iamZpbGUg YXNzb2NpYXRlZCB3aXRoIHRoaXMgYmZkLAotLSAgICAgICAgIGZyZWVfb2JqZmlsZSgpIHdpbGwg ZG8gcHJvcGVyIGNsZWFudXAgb2Ygb2JqZmlsZSAqYW5kKiBiZmQuICAqLwotLQotICAgICAgIGlm ICh2cC0+b2JqZmlsZSkKLSAJewotIAkgIGZyZWVfb2JqZmlsZSAodnAtPm9iamZpbGUpOwotIAkg IG5lZWRfc3ltdGFiX2NsZWFudXAgPSAxOwotIAl9Ci0tICAgICAgZWxzZSBpZiAodnAtPmJmZCAh PSBleGVjX2JmZCkKLS0JLyogRklYTUUtbGVhazogV2Ugc2hvdWxkIGJlIGZyZWVpbmcgdnAtPm5h bWUgdG9vLCBJIHRoaW5rLiAgKi8KLS0JZ2RiX2JmZF9jbG9zZV9vcl93YXJuICh2cC0+YmZkKTsK LSsKLSsgICAgICBnZGJfYmZkX3VucmVmICh2cC0+YmZkKTsKLSAKLSAgICAgICB4ZnJlZSAodnAp OwotICAgICB9Ci1AQCAtMjMwLDExICsyMjUsMTQgQEAgZXhlY19maWxlX2F0dGFjaCAoY2hhciAq ZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKLSAJICAgICAmc2NyYXRjaF9wYXRobmFtZSk7Ci0gCX0K LSAjZW5kaWYKLSsKLSsgICAgICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIHNjcmF0 Y2hfcGF0aG5hbWUpOwotKwotICAgICAgIGlmIChzY3JhdGNoX2NoYW4gPCAwKQotIAlwZXJyb3Jf d2l0aF9uYW1lIChmaWxlbmFtZSk7Ci0tICAgICAgZXhlY19iZmQgPSBiZmRfZm9wZW4gKHNjcmF0 Y2hfcGF0aG5hbWUsIGdudXRhcmdldCwKLS0JCQkgICAgd3JpdGVfZmlsZXMgPyBGT1BFTl9SVUIg OiBGT1BFTl9SQiwKLS0JCQkgICAgc2NyYXRjaF9jaGFuKTsKLSsgICAgICBleGVjX2JmZCA9IGdk Yl9iZmRfZm9wZW4gKHNjcmF0Y2hfcGF0aG5hbWUsIGdudXRhcmdldCwKLSsJCQkJd3JpdGVfZmls ZXMgPyBGT1BFTl9SVUIgOiBGT1BFTl9SQiwKLSsJCQkJc2NyYXRjaF9jaGFuKTsKLSAKLSAgICAg ICBpZiAoIWV4ZWNfYmZkKQotIAl7Ci1AQCAtMjQyLDEzICsyNDAsNiBAQCBleGVjX2ZpbGVfYXR0 YWNoIChjaGFyICpmaWxlbmFtZSwgaW50IGZyb21fdHR5KQotIAkJIHNjcmF0Y2hfcGF0aG5hbWUs IGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKLSAJfQotIAotLSAgICAgIC8qIEF0IHRo aXMgcG9pbnQsIHNjcmF0Y2hfcGF0aG5hbWUgYW5kIGV4ZWNfYmZkLT5uYW1lIGJvdGggcG9pbnQg dG8gdGhlCi0tICAgICAgICAgc2FtZSBtYWxsb2MnZCBzdHJpbmcuICBIb3dldmVyIGV4ZWNfY2xv c2UoKSB3aWxsIGF0dGVtcHQgdG8gZnJlZSBpdAotLSAgICAgICAgIHZpYSB0aGUgZXhlY19iZmQt Pm5hbWUgcG9pbnRlciwgc28gd2UgbmVlZCB0byBtYWtlIGFub3RoZXIgY29weSBhbmQKLS0gICAg ICAgICBsZWF2ZSBleGVjX2JmZCBhcyB0aGUgbmV3IG93bmVyIG9mIHRoZSBvcmlnaW5hbCBjb3B5 LiAgKi8KLS0gICAgICBzY3JhdGNoX3BhdGhuYW1lID0geHN0cmR1cCAoc2NyYXRjaF9wYXRobmFt ZSk7Ci0tICAgICAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBzY3JhdGNoX3BhdGhu YW1lKTsKLS0KLSAgICAgICBpZiAoIWJmZF9jaGVja19mb3JtYXRfbWF0Y2hlcyAoZXhlY19iZmQs IGJmZF9vYmplY3QsICZtYXRjaGluZykpCi0gCXsKLSAJICAvKiBNYWtlIHN1cmUgdG8gY2xvc2Ug ZXhlY19iZmQsIG9yIGVsc2UgInJ1biIgbWlnaHQgdHJ5IHRvIHVzZQotQEAgLTU1NCw2ICs1NDUs NyBAQCBtYXBfdm1hcCAoYmZkICphYmZkLCBiZmQgKmFyY2gpCi0gICBtZW1zZXQgKChjaGFyICop IHZwLCAnXDAnLCBzaXplb2YgKCp2cCkpOwotICAgdnAtPm54dCA9IDA7Ci0gICB2cC0+YmZkID0g YWJmZDsKLSsgIGdkYl9iZmRfcmVmIChhYmZkKTsKLSAgIHZwLT5uYW1lID0gYmZkX2dldF9maWxl bmFtZSAoYXJjaCA/IGFyY2ggOiBhYmZkKTsKLSAgIHZwLT5tZW1iZXIgPSBhcmNoID8gYmZkX2dl dF9maWxlbmFtZSAoYWJmZCkgOiAiIjsKLSAKIGRpZmYgLS1naXQgYS9nZGIvZi1leHAueSBiL2dk Yi9mLWV4cC55Ci1pbmRleCAzM2M3NDE4Li40ZGIxYmZhIDEwMDY0NAoraW5kZXggODQ2Y2MwMi4u OTI4MzE4MyAxMDA2NDQKIC0tLSBhL2dkYi9mLWV4cC55CiArKysgYi9nZGIvZi1leHAueQotQEAg LTI5OCw3ICsyOTgsOSBAQCBhcmdsaXN0IDoJc3VicmFuZ2UKK0BAIC0yOTcsNyArMjk3LDkgQEAg YXJnbGlzdCA6CXN1YnJhbmdlCiAgCQkJeyBhcmdsaXN0X2xlbiA9IDE7IH0KICAJOwogICAgIApA QCAtNDQxNywxMiArMjAxMywxMiBAQCBpbmRleCAzM2M3NDE4Li40ZGIxYmZhIDEwMDY0NAogIAk7 CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5oIGIvZ2RiL2YtbGFuZy5oCi1pbmRleCA0YWFl M2M1Li41MWE0ZTFlIDEwMDY0NAoraW5kZXggNGVmMWFjZi4uOGRhMDE2YiAxMDA2NDQKIC0tLSBh L2dkYi9mLWxhbmcuaAogKysrIGIvZ2RiL2YtbGFuZy5oCi1AQCAtMjgsNiArMjgsMTAgQEAgZXh0 ZXJuIHZvaWQgZl9lcnJvciAoY2hhciAqKTsJLyogRGVmaW5lZCBpbiBmLWV4cC55ICovCitAQCAt MjksNiArMjksMTAgQEAgZXh0ZXJuIHZvaWQgZl9lcnJvciAoY2hhciAqKTsJLyogRGVmaW5lZCBp biBmLWV4cC55ICovCiAgZXh0ZXJuIHZvaWQgZl9wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAqLCBj b25zdCBjaGFyICosIHN0cnVjdCB1aV9maWxlICosIGludCwKLSAJCQkgIGludCk7CisgCQkJICBp bnQsIGNvbnN0IHN0cnVjdCB0eXBlX3ByaW50X29wdGlvbnMgKik7CiAgCiArZXh0ZXJuIGNvbnN0 IGNoYXIgKmZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9wcmludF90b19zdHJlYW0KICsgIChz dHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7CkBAIC00NDMyLDEwICsy MDI4LDEwIEBAIGluZGV4IDRhYWUzYzUuLjUxYTRlMWUgMTAwNjQ0CiAgCQkJIHN0cnVjdCB1aV9m aWxlICosIGludCwKICAJCQkgY29uc3Qgc3RydWN0IHZhbHVlICosCiBkaWZmIC0tZ2l0IGEvZ2Ri L2YtdHlwZXByaW50LmMgYi9nZGIvZi10eXBlcHJpbnQuYwotaW5kZXggYTk1ZWY4NC4uODMwOTE3 ZCAxMDA2NDQKK2luZGV4IGFhMzMyMzEuLmRmOTk4YzQgMTAwNjQ0CiAtLS0gYS9nZGIvZi10eXBl cHJpbnQuYwogKysrIGIvZ2RiL2YtdHlwZXByaW50LmMKLUBAIC0zMSw3ICszMSw3IEBACitAQCAt MzAsNyArMzAsNyBAQAogICNpbmNsdWRlICJnZGJjb3JlLmgiCiAgI2luY2x1ZGUgInRhcmdldC5o IgogICNpbmNsdWRlICJmLWxhbmcuaCIKQEAgLTQ0NDQsNyArMjA0MCw3IEBAIGluZGV4IGE5NWVm ODQuLjgzMDkxN2QgMTAwNjQ0CiAgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKICAjaW5jbHVkZSA8 ZXJybm8uaD4KICAKLUBAIC00OCw2ICs0OCwzNCBAQCB2b2lkIGZfdHlwZV9wcmludF92YXJzcGVj X3ByZWZpeCAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUgKiwKK0BAIC00Nyw2ICs0Nywz NCBAQCB2b2lkIGZfdHlwZV9wcmludF92YXJzcGVjX3ByZWZpeCAoc3RydWN0IHR5cGUgKiwgc3Ry dWN0IHVpX2ZpbGUgKiwKICB2b2lkIGZfdHlwZV9wcmludF9iYXNlIChzdHJ1Y3QgdHlwZSAqLCBz dHJ1Y3QgdWlfZmlsZSAqLCBpbnQsIGludCk7CiAgDAogIApAQCAtNDQ3OSw3ICsyMDc1LDcgQEAg aW5kZXggYTk1ZWY4NC4uODMwOTE3ZCAxMDA2NDQKICAvKiBMRVZFTCBpcyB0aGUgZGVwdGggdG8g aW5kZW50IGxpbmVzIGJ5LiAgKi8KICAKICB2b2lkCi1AQCAtNTcsNiArODUsOSBAQCBmX3ByaW50 X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1 aV9maWxlICpzdHJlYW0sCitAQCAtNTYsNiArODQsOSBAQCBmX3ByaW50X3R5cGUgKHN0cnVjdCB0 eXBlICp0eXBlLCBjb25zdCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0s CiAgICBlbnVtIHR5cGVfY29kZSBjb2RlOwogICAgaW50IGRlbWFuZ2xlZF9hcmdzOwogIApAQCAt NDQ4OSw3ICsyMDg1LDcgQEAgaW5kZXggYTk1ZWY4NC4uODMwOTE3ZCAxMDA2NDQKICAgIGZfdHlw ZV9wcmludF9iYXNlICh0eXBlLCBzdHJlYW0sIHNob3csIGxldmVsKTsKICAgIGNvZGUgPSBUWVBF X0NPREUgKHR5cGUpOwogICAgaWYgKCh2YXJzdHJpbmcgIT0gTlVMTCAmJiAqdmFyc3RyaW5nICE9 ICdcMCcpCi1AQCAtMTY0LDYgKzE5NSw5IEBAIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAo c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCitAQCAtMTYyLDYgKzE5 Myw5IEBAIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0 cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgCiAgICBRVUlUOwogIApAQCAtNDUwMCwxMCArMjA5Niwx MCBAQCBpbmRleCBhOTVlZjg0Li44MzA5MTdkIDEwMDY0NAogICAgICB7CiAgICAgIGNhc2UgVFlQ RV9DT0RFX0FSUkFZOgogZGlmZiAtLWdpdCBhL2dkYi9mLXZhbHByaW50LmMgYi9nZGIvZi12YWxw cmludC5jCi1pbmRleCA0MzU5ZjZmLi44ZmY4MzRiIDEwMDY0NAoraW5kZXggMjJjY2E4My4uYjJh MmNjMyAxMDA2NDQKIC0tLSBhL2dkYi9mLXZhbHByaW50LmMKICsrKyBiL2dkYi9mLXZhbHByaW50 LmMKLUBAIC01NCwxNSArNTQsMTcgQEAgaW50IGY3N19hcnJheV9vZmZzZXRfdGJsW01BWF9GT1JU UkFOX0RJTVMgKyAxXVsyXTsKK0BAIC01MSwxNSArNTEsMTcgQEAgaW50IGY3N19hcnJheV9vZmZz ZXRfdGJsW01BWF9GT1JUUkFOX0RJTVMgKyAxXVsyXTsKICAvKiBUaGUgZm9sbG93aW5nIG1hY3Jv IGdpdmVzIHVzIHRoZSBzaXplIG9mIHRoZSBudGggZGltZW5zaW9uLCBXaGVyZSAKICAgICBuIGlz IDEgYmFzZWQuICAqLwogIApAQCAtNDUyNCw3ICsyMTIwLDcgQEAgaW5kZXggNDM1OWY2Zi4uOGZm ODM0YiAxMDA2NDQKICAgIGlmIChUWVBFX0FSUkFZX0xPV0VSX0JPVU5EX0lTX1VOREVGSU5FRCAo dHlwZSkpCiAgICAgIGVycm9yIChfKCJMb3dlciBib3VuZCBtYXkgbm90IGJlICcqJyBpbiBGNzci KSk7CiAgCi1AQCAtNzIsMTQgKzc0LDE3IEBAIGY3N19nZXRfbG93ZXJib3VuZCAoc3RydWN0IHR5 cGUgKnR5cGUpCitAQCAtNjksMTQgKzcxLDE3IEBAIGY3N19nZXRfbG93ZXJib3VuZCAoc3RydWN0 IHR5cGUgKnR5cGUpCiAgaW50CiAgZjc3X2dldF91cHBlcmJvdW5kIChzdHJ1Y3QgdHlwZSAqdHlw ZSkKICB7CkBAIC00NTQ3LDcgKzIxNDMsNyBAQCBpbmRleCA0MzU5ZjZmLi44ZmY4MzRiIDEwMDY0 NAogICAgICB9CiAgCiAgICByZXR1cm4gVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9WQUxVRSAodHlw ZSk7Ci1AQCAtMTM1LDI0ICsxNDAsMjkgQEAgZjc3X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90 YmwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQorQEAgLTEzMiwy NCArMTM3LDI5IEBAIGY3N19jcmVhdGVfYXJyYXlwcmludF9vZmZzZXRfdGJsIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKICAgICAgICB1cHBlciA9IGY3N19nZXRf dXBwZXJib3VuZCAodG1wX3R5cGUpOwogICAgICAgIGxvd2VyID0gZjc3X2dldF9sb3dlcmJvdW5k ICh0bXBfdHlwZSk7CiAgCkBAIC00NTgzLDcgKzIxNzksNyBAQCBpbmRleCA0MzU5ZjZmLi44ZmY4 MzRiIDEwMDY0NAogICAgICB9CiAgfQogIAotQEAgLTE3NCwzNyArMTg0LDM1IEBAIGY3N19wcmlu dF9hcnJheV8xIChpbnQgbnNzLCBpbnQgbmRpbWVuc2lvbnMsIHN0cnVjdCB0eXBlICp0eXBlLAor QEAgLTE3MSwzNyArMTgxLDM1IEBAIGY3N19wcmludF9hcnJheV8xIChpbnQgbnNzLCBpbnQgbmRp bWVuc2lvbnMsIHN0cnVjdCB0eXBlICp0eXBlLAogIAogICAgaWYgKG5zcyAhPSBuZGltZW5zaW9u cykKICAgICAgewpAQCAtNDYyOCw3ICsyMjI0LDcgQEAgaW5kZXggNDM1OWY2Zi4uOGZmODM0YiAx MDA2NDQKICAJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIi4uLiIpOwogIAl9CiAgICAg IH0KLUBAIC0yNzAsNiArMjc4LDkgQEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKK0BAIC0yNjcsNiAr Mjc1LDkgQEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKICAgIENPUkVfQUREUiBhZGRyOwogICAgaW50 IGluZGV4OwogIApAQCAtNDYzOSwxMCArMjIzNSwxMCBAQCBpbmRleCA0MzU5ZjZmLi44ZmY4MzRi IDEwMDY0NAogICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQogICAgICB7CiBkaWZmIC0tZ2l0 IGEvZ2RiL2ZpbmR2YXIuYyBiL2dkYi9maW5kdmFyLmMKLWluZGV4IDY2YmNlYmUuLmU1OWU1ZjIg MTAwNjQ0CitpbmRleCBmYjY2ZTBmLi40NTY4NGYwIDEwMDY0NAogLS0tIGEvZ2RiL2ZpbmR2YXIu YwogKysrIGIvZ2RiL2ZpbmR2YXIuYwotQEAgLTM1LDYgKzM1LDcgQEAKK0BAIC0zNCw2ICszNCw3 IEBACiAgI2luY2x1ZGUgImJsb2NrLmgiCiAgI2luY2x1ZGUgIm9iamZpbGVzLmgiCiAgI2luY2x1 ZGUgImxhbmd1YWdlLmgiCkBAIC00NjUwLDcgKzIyNDYsNyBAQCBpbmRleCA2NmJjZWJlLi5lNTll NWYyIDEwMDY0NAogIAogIC8qIEJhc2ljIGJ5dGUtc3dhcHBpbmcgcm91dGluZXMuICBBbGwgJ2V4 dHJhY3QnIGZ1bmN0aW9ucyByZXR1cm4gYQogICAgIGhvc3QtZm9ybWF0IGludGVnZXIgZnJvbSBh IHRhcmdldC1mb3JtYXQgaW50ZWdlciBhdCBBRERSIHdoaWNoIGlzCi1AQCAtNDM4LDcgKzQzOSwx MCBAQCBtaW5zeW1fbG9va3VwX2l0ZXJhdG9yX2NiIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg dm9pZCAqY2JfZGF0YSkKK0BAIC00MzcsNyArNDM4LDEwIEBAIG1pbnN5bV9sb29rdXBfaXRlcmF0 b3JfY2IgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpjYl9kYXRhKQogIH0KICAKICAv KiBBIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSAibGFfcmVhZF92YXJfdmFsdWUiIGhv b2sgaW4KQEAgLTQ2NjIsMTIgKzIyNTgsMTAgQEAgaW5kZXggNjZiY2ViZS4uZTU5ZTVmMiAxMDA2 NDQKICAKICBzdHJ1Y3QgdmFsdWUgKgogIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBz eW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotQEAgLTQ0NiwxNiArNDUwLDYg QEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUpCi0gICBzdHJ1Y3QgdmFsdWUgKnY7CitAQCAtNDQ2LDEzICs0NTAsNiBA QCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFt ZV9pbmZvICpmcmFtZSkKICAgIHN0cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7 CiAgICBDT1JFX0FERFIgYWRkcjsKLS0gIGludCBsZW47Ci0tCisgCiAtICAvKiBDYWxsIGNoZWNr X3R5cGVkZWYgb24gb3VyIHR5cGUgdG8gbWFrZSBzdXJlIHRoYXQsIGlmIFRZUEUgaXMKIC0gICAg IGEgVFlQRV9DT0RFX1RZUEVERUYsIGl0cyBsZW5ndGggaXMgc2V0IHRvIHRoZSBsZW5ndGggb2Yg dGhlIHRhcmdldCB0eXBlCiAtICAgICBpbnN0ZWFkIG9mIHplcm8uICBIb3dldmVyLCB3ZSBkbyBu b3QgcmVwbGFjZSB0aGUgdHlwZWRlZiB0eXBlIGJ5IHRoZQpAQCAtNDY3NSwyNyArMjI2OSwxMCBA QCBpbmRleCA2NmJjZWJlLi5lNTllNWYyIDEwMDY0NAogLSAgICAgc2V0IHRoZSByZXR1cm5lZCB2 YWx1ZSB0eXBlIGRlc2NyaXB0aW9uIGNvcnJlY3RseS4gICovCiAtICBjaGVja190eXBlZGVmICh0 eXBlKTsKIC0KLS0gIGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKICAgIGlmIChzeW1ib2xf cmVhZF9uZWVkc19mcmFtZSAodmFyKSkKICAgICAgZ2RiX2Fzc2VydCAoZnJhbWUpOwotQEAgLTQ2 NSw3ICs0NTksNyBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIs IHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAgICAgY2FzZSBMT0NfQ09OU1Q6Ci0gICAgICAg LyogUHV0IHRoZSBjb25zdGFudCBiYWNrIGluIHRhcmdldCBmb3JtYXQuICAqLwotICAgICAgIHYg PSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7Ci0tICAgICAgc3RvcmVfc2lnbmVkX2ludGVnZXIgKHZh bHVlX2NvbnRlbnRzX3JhdyAodiksIGxlbiwKLSsgICAgICBzdG9yZV9zaWduZWRfaW50ZWdlciAo dmFsdWVfY29udGVudHNfcmF3ICh2KSwgVFlQRV9MRU5HVEggKHR5cGUpLAotIAkJCSAgICBnZGJh cmNoX2J5dGVfb3JkZXIgKGdldF90eXBlX2FyY2ggKHR5cGUpKSwKLSAJCQkgICAgKExPTkdFU1Qp IFNZTUJPTF9WQUxVRSAodmFyKSk7Ci0gICAgICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsK LUBAIC00OTAsMTIgKzQ4NCwxMiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3lt Ym9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAKLSAgICAgY2FzZSBMT0NfQ09O U1RfQllURVM6Ci0gICAgICAgdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLS0gICAgICBtZW1j cHkgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFNZTUJPTF9WQUxVRV9CWVRFUyAodmFyKSwgbGVu KTsKLSsgICAgICBtZW1jcHkgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFNZTUJPTF9WQUxVRV9C WVRFUyAodmFyKSwKLSsJICAgICAgVFlQRV9MRU5HVEggKHR5cGUpKTsKLSAgICAgICBWQUxVRV9M VkFMICh2KSA9IG5vdF9sdmFsOworIAorQEAgLTQ5Miw3ICs0ODksNiBAQCBkZWZhdWx0X3JlYWRf dmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkK ICAgICAgICByZXR1cm4gdjsKICAKICAgICAgY2FzZSBMT0NfU1RBVElDOgpAQCAtNDcwMyw3ICsy MjgwLDcgQEAgaW5kZXggNjZiY2ViZS4uZTU5ZTVmMiAxMDA2NDQKICAgICAgICBpZiAob3Zlcmxh eV9kZWJ1Z2dpbmcpCiAgCWFkZHIgPSBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MgKFNZTUJPTF9W QUxVRV9BRERSRVNTICh2YXIpLAogIAkJCQkJIFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSk7Ci1A QCAtNTA5LDcgKzUwMyw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wg KnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorQEAgLTUwNiw3ICs1MDIsNiBAQCBkZWZh dWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZv ICpmcmFtZSkKICAJZXJyb3IgKF8oIlVua25vd24gYXJndW1lbnQgbGlzdCBhZGRyZXNzIGZvciBg JXMnLiIpLAogIAkgICAgICAgU1lNQk9MX1BSSU5UX05BTUUgKHZhcikpOwogICAgICAgIGFkZHIg Kz0gU1lNQk9MX1ZBTFVFICh2YXIpOwpAQCAtNDcxMSw3ICsyMjg4LDcgQEAgaW5kZXggNjZiY2Vi ZS4uZTU5ZTVmMiAxMDA2NDQKICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBMT0NfUkVGX0FS RzoKLUBAIC01MjQsMTQgKzUxNywxMiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qg c3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC01MjEsMTQgKzUxNiwx MiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBm cmFtZV9pbmZvICpmcmFtZSkKICAJYXJncmVmICs9IFNZTUJPTF9WQUxVRSAodmFyKTsKICAJcmVm ID0gdmFsdWVfYXQgKGxvb2t1cF9wb2ludGVyX3R5cGUgKHR5cGUpLCBhcmdyZWYpOwogIAlhZGRy ID0gdmFsdWVfYXNfYWRkcmVzcyAocmVmKTsKQEAgLTQ3MjYsNyArMjMwMyw3IEBAIGluZGV4IDY2 YmNlYmUuLmU1OWU1ZjIgMTAwNjQ0CiAgICAgICAgYnJlYWs7CiAgCiAgICAgIGNhc2UgTE9DX1RZ UEVERUY6Ci1AQCAtNTQwLDcgKzUzMSw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVj dCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorQEAgLTUzNyw3ICs1MzAs NiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBm cmFtZV9pbmZvICpmcmFtZSkKICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBMT0NfQkxPQ0s6 CkBAIC00NzM0LDcgKzIzMTEsNyBAQCBpbmRleCA2NmJjZWJlLi5lNTllNWYyIDEwMDY0NAogICAg ICAgIGlmIChvdmVybGF5X2RlYnVnZ2luZykKICAJYWRkciA9IHN5bWJvbF9vdmVybGF5ZWRfYWRk cmVzcwogIAkgIChCTE9DS19TVEFSVCAoU1lNQk9MX0JMT0NLX1ZBTFVFICh2YXIpKSwgU1lNQk9M X09CSl9TRUNUSU9OICh2YXIpKTsKLUBAIC01NjYsNyArNTU2LDYgQEAgZGVmYXVsdF9yZWFkX3Zh cl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitA QCAtNTYzLDcgKzU1NSw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wg KnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogIAkgICAgICAgICAgICAgU1lNQk9MX1BS SU5UX05BTUUgKHZhcikpOwogIAogIAkgICAgYWRkciA9IHZhbHVlX2FzX2FkZHJlc3MgKHJlZ3Zh bCk7CkBAIC00NzQyLDcgKzIzMTksNyBAQCBpbmRleCA2NmJjZWJlLi5lNTllNWYyIDEwMDY0NAog IAkgIH0KICAJZWxzZQogIAkgIHsKLUBAIC02MTUsNyArNjA0LDYgQEAgZGVmYXVsdF9yZWFkX3Zh cl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitA QCAtNjEyLDcgKzYwMyw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wg KnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogIAlpZiAob2JqX3NlY3Rpb24KICAJICAg ICYmIChvYmpfc2VjdGlvbi0+dGhlX2JmZF9zZWN0aW9uLT5mbGFncyAmIFNFQ19USFJFQURfTE9D QUwpICE9IDApCiAgCSAgYWRkciA9IHRhcmdldF90cmFuc2xhdGVfdGxzX2FkZHJlc3MgKG9ial9z ZWN0aW9uLT5vYmpmaWxlLCBhZGRyKTsKQEAgLTQ3NTAsNyArMjMyNyw3IEBAIGluZGV4IDY2YmNl YmUuLmU1OWU1ZjIgMTAwNjQ0CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogIAotQEAgLTYyOCw2 ICs2MTYsMTAgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBz dHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNjI1LDYgKzYxNSwxMCBAQCBkZWZhdWx0X3Jl YWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFt ZSkKICAgICAgICBicmVhazsKICAgICAgfQogIApAQCAtNDc2MSw3ICsyMzM4LDcgQEAgaW5kZXgg NjZiY2ViZS4uZTU5ZTVmMiAxMDA2NDQKICAgIFZBTFVFX0xWQUwgKHYpID0gbHZhbF9tZW1vcnk7 CiAgICBzZXRfdmFsdWVfYWRkcmVzcyAodiwgYWRkcik7CiAgICByZXR1cm4gdjsKLUBAIC03MjMs MTAgKzcxNSwxMSBAQCBzdHJ1Y3QgdmFsdWUgKgorQEAgLTcyOSwxMCArNzIzLDExIEBAIHN0cnVj dCB2YWx1ZSAqCiAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCBy ZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICB7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7CkBAIC00Nzc1LDcgKzIzNTIsNyBAQCBp bmRleCA2NmJjZWJlLi5lNTllNWYyIDEwMDY0NAogICAgICB7CiAgICAgICAgaW50IG9wdGltLCB1 bmF2YWlsLCBvazsKICAKLUBAIC03NDEsNyArNzM0LDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAo c3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkK K0BAIC03NDcsNyArNzQyLDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5 cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAgICAgICBWQUxVRV9M VkFMICh2KSA9IGx2YWxfcmVnaXN0ZXI7CiAgICAgICAgVkFMVUVfRlJBTUVfSUQgKHYpID0gZ2V0 X2ZyYW1lX2lkIChmcmFtZSk7CiAgICAgICAgVkFMVUVfUkVHTlVNICh2KSA9IHJlZ251bTsKQEAg LTQ3ODQsNDUgKzIzNjEsNiBAQCBpbmRleCA2NmJjZWJlLi5lNTllNWYyIDEwMDY0NAogIAkJCQkg ICAgICB2YWx1ZV9jb250ZW50c19yYXcgKHYpLCAmb3B0aW0sCiAgCQkJCSAgICAgICZ1bmF2YWls KTsKICAKLWRpZmYgLS1naXQgYS9nZGIvZ2NvcmUuYyBiL2dkYi9nY29yZS5jCi1pbmRleCBhZWRk YTQxLi5hNDVlNzg3IDEwMDY0NAotLS0tIGEvZ2RiL2djb3JlLmMKLSsrKyBiL2dkYi9nY29yZS5j Ci1AQCAtMzMsNiArMzMsNyBAQAotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlICJyZWdj YWNoZS5oIgotICNpbmNsdWRlICJyZWdzZXQuaCIKLSsjaW5jbHVkZSAiZ2RiX2JmZC5oIgotIAot IC8qIFRoZSBsYXJnZXN0IGFtb3VudCBvZiBtZW1vcnkgdG8gcmVhZCBmcm9tIHRoZSB0YXJnZXQg YXQgb25jZS4gIFdlCi0gICAgbXVzdCB0aHJvdHRsZSBpdCB0byBsaW1pdCB0aGUgYW1vdW50IG9m IG1lbW9yeSB1c2VkIGJ5IEdEQiBkdXJpbmcKLUBAIC01MCw3ICs1MSw3IEBAIHN0YXRpYyBpbnQg Z2NvcmVfbWVtb3J5X3NlY3Rpb25zIChiZmQgKik7Ci0gYmZkICoKLSBjcmVhdGVfZ2NvcmVfYmZk IChjaGFyICpmaWxlbmFtZSkKLSB7Ci0tICBiZmQgKm9iZmQgPSBiZmRfb3BlbncgKGZpbGVuYW1l LCBkZWZhdWx0X2djb3JlX3RhcmdldCAoKSk7Ci0rICBiZmQgKm9iZmQgPSBnZGJfYmZkX29wZW53 IChmaWxlbmFtZSwgZGVmYXVsdF9nY29yZV90YXJnZXQgKCkpOwotIAotICAgaWYgKCFvYmZkKQot ICAgICBlcnJvciAoXygiRmFpbGVkIHRvIG9wZW4gJyVzJyBmb3Igb3V0cHV0LiIpLCBmaWxlbmFt ZSk7Ci1AQCAtMTEwLDcgKzExMSw3IEBAIGRvX2JmZF9kZWxldGVfY2xlYW51cCAodm9pZCAqYXJn KQotICAgYmZkICpvYmZkID0gYXJnOwotICAgY29uc3QgY2hhciAqZmlsZW5hbWUgPSBvYmZkLT5m aWxlbmFtZTsKLSAKLS0gIGJmZF9jbG9zZSAoYXJnKTsKLSsgIGdkYl9iZmRfdW5yZWYgKGFyZyk7 Ci0gICB1bmxpbmsgKGZpbGVuYW1lKTsKLSB9Ci0gCi1AQCAtMTU0LDcgKzE1NSw3IEBAIGdjb3Jl X2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSAgIGZwcmludGZfZmlsdGVyZWQg KGdkYl9zdGRvdXQsICJTYXZlZCBjb3JlZmlsZSAlc1xuIiwgY29yZWZpbGVuYW1lKTsKLSAKLSAg IGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0tICBiZmRfY2xvc2UgKG9iZmQpOwotKyAg Z2RiX2JmZF91bnJlZiAob2JmZCk7Ci0gfQotIAotIHN0YXRpYyB1bnNpZ25lZCBsb25nCiBkaWZm IC0tZ2l0IGEvZ2RiL2dkYi1nZGIuZ2RiLmluIGIvZ2RiL2dkYi1nZGIuZ2RiLmluCiBpbmRleCBm ZmI3ZjUzLi5hMmU3ZTk0IDEwMDY0NAogLS0tIGEvZ2RiL2dkYi1nZGIuZ2RiLmluCkBAIC00ODQz LDExNTggKzIzODEsMzY0IEBAIGluZGV4IGZmYjdmNTMuLmEyZTdlOTQgMTAwNjQ0CiAgc2V0IGNv bXBsYWludHMgMQogIAogIGIgaW50ZXJuYWxfZXJyb3IKLWRpZmYgLS1naXQgYS9nZGIvZ2RiX2Jm ZC5jIGIvZ2RiL2dkYl9iZmQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAu LmZhYzg3NzYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9nZGJfYmZkLmMKLUBAIC0wLDAgKzEs NjcwIEBACi0rLyogRGVmaW5pdGlvbnMgZm9yIEJGRCB3cmFwcGVycyB1c2VkIGJ5IEdEQi4KLSsK LSsgICBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIKLSsgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlICJkZWZzLmgiCi0r I2luY2x1ZGUgImdkYl9iZmQuaCIKLSsjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgotKyNpbmNsdWRl ICJnZGJfc3RyaW5nLmgiCi0rI2luY2x1ZGUgInVpLW91dC5oIgotKyNpbmNsdWRlICJnZGJjbWQu aCIKLSsjaW5jbHVkZSAiaGFzaHRhYi5oIgotKyNpZmRlZiBIQVZFX1pMSUJfSAotKyNpbmNsdWRl IDx6bGliLmg+Ci0rI2VuZGlmCi0rI2lmZGVmIEhBVkVfTU1BUAotKyNpbmNsdWRlIDxzeXMvbW1h bi5oPgotKyNpZm5kZWYgTUFQX0ZBSUxFRAotKyNkZWZpbmUgTUFQX0ZBSUxFRCAoKHZvaWQgKikg LTEpCi0rI2VuZGlmCi0rI2VuZGlmCi0rCi0rLyogQW4gb2JqZWN0IG9mIHRoaXMgdHlwZSBpcyBz dG9yZWQgaW4gdGhlIHNlY3Rpb24ncyB1c2VyIGRhdGEgd2hlbgotKyAgIG1hcHBpbmcgYSBzZWN0 aW9uLiAgKi8KK2RpZmYgLS1naXQgYS9nZGIvZ2RidHlwZXMuYyBiL2dkYi9nZGJ0eXBlcy5jCitp bmRleCA1ODg1MjQxLi5hM2RiNjZhIDEwMDY0NAorLS0tIGEvZ2RiL2dkYnR5cGVzLmMKKysrKyBi L2dkYi9nZGJ0eXBlcy5jCitAQCAtMzcsNiArMzcsOSBAQAorICNpbmNsdWRlICJnZGJfYXNzZXJ0 LmgiCisgI2luY2x1ZGUgImhhc2h0YWIuaCIKKyAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgorKyNp bmNsdWRlICJvYnNlcnZlci5oIgorKyNpbmNsdWRlICJkd2FyZjJleHByLmgiCisrI2luY2x1ZGUg ImR3YXJmMmxvYy5oIgorIAorIC8qIEluaXRpYWxpemUgQkFETkVTUyBjb25zdGFudHMuICAqLwor IAorQEAgLTE4NSw2ICsxODgsNDMgQEAgYWxsb2NfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUpCisgICByZXR1cm4gdHlwZTsKKyB9CisgCisrI2lmIDAKKysvKiBEZWNsYXJlIFRZUEUgYXMg ZGlzY2FyZGFibGUgb24gbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gYnkgZnJlZV9hbGxfdHlwZXMu CisrICAgWW91IG11c3QgY2FsbCB0eXBlX21hcmtfdXNlZCBkdXJpbmcgZWFjaCBmcmVlX2FsbF90 eXBlcyB0byBwcm90ZWN0IFRZUEUgZnJvbQorKyAgIGJlaW5nIGRlYWxsb2NhdGVkLiAgKi8KICsK LStzdHJ1Y3QgZ2RiX2JmZF9zZWN0aW9uX2RhdGEKKytzdGF0aWMgdm9pZAorK3NldF90eXBlX2Fz X2Rpc2NhcmRhYmxlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKICt7Ci0rICAvKiBTaXplIG9mIHRoZSBk YXRhLiAgKi8KLSsgIGJmZF9zaXplX3R5cGUgc2l6ZTsKLSsgIC8qIElmIHRoZSBkYXRhIHdhcyBt bWFwcGVkLCB0aGlzIGlzIHRoZSBsZW5ndGggb2YgdGhlIG1hcC4gICovCi0rICBiZmRfc2l6ZV90 eXBlIG1hcF9sZW47Ci0rICAvKiBUaGUgZGF0YS4gIElmIE5VTEwsIHRoZSBzZWN0aW9uIGRhdGEg aGFzIG5vdCBiZWVuIHJlYWQuICAqLwotKyAgdm9pZCAqZGF0YTsKLSsgIC8qIElmIHRoZSBkYXRh IHdhcyBtbWFwcGVkLCB0aGlzIGlzIHRoZSBtYXAgYWRkcmVzcy4gICovCi0rICB2b2lkICptYXBf YWRkcjsKLSt9OwotKwotKy8qIEEgaGFzaCB0YWJsZSBob2xkaW5nIGV2ZXJ5IEJGRCB0aGF0IGdk YiBrbm93cyBhYm91dC4gIFRoaXMgaXMgbm90Ci0rICAgdG8gYmUgY29uZnVzZWQgd2l0aCAnZ2Ri X2JmZF9jYWNoZScsIHdoaWNoIGlzIHVzZWQgZm9yIHNoYXJpbmcKLSsgICBCRkRzOyBpbiBjb250 cmFzdCwgdGhpcyBoYXNoIGlzIHVzZWQganVzdCB0byBpbXBsZW1lbnQKLSsgICAibWFpbnQgaW5m byBiZmQiLiAgKi8KLSsKLStzdGF0aWMgaHRhYl90IGFsbF9iZmRzOwotKwotKy8qIFNlZSBnZGJf YmZkLmguICAqLworKyAgdm9pZCAqKnNsb3Q7CiArCi0rdm9pZAotK2dkYl9iZmRfc3Rhc2hfZmls ZW5hbWUgKHN0cnVjdCBiZmQgKmFiZmQpCi0rewotKyAgY2hhciAqbmFtZSA9IGJmZF9nZXRfZmls ZW5hbWUgKGFiZmQpOwotKyAgY2hhciAqZGF0YTsKKysgIGdkYl9hc3NlcnQgKCFUWVBFX0RJU0NB UkRBQkxFICh0eXBlKSk7CiArCi0rICBkYXRhID0gYmZkX2FsbG9jIChhYmZkLCBzdHJsZW4gKG5h bWUpICsgMSk7Ci0rICBzdHJjcHkgKGRhdGEsIG5hbWUpOworKyAgVFlQRV9ESVNDQVJEQUJMRSAo dHlwZSkgPSAxOworKyAgVFlQRV9ESVNDQVJEQUJMRV9BR0UgKHR5cGUpID0gdHlwZV9kaXNjYXJk YWJsZV9hZ2VfY3VycmVudDsKICsKLSsgIC8qIFVud2FycmFudGVkIGNodW1taW5lc3Mgd2l0aCBC RkQuICAqLwotKyAgYWJmZC0+ZmlsZW5hbWUgPSBkYXRhOworKyAgc2xvdCA9IGh0YWJfZmluZF9z bG90ICh0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLCB0eXBlLCBJTlNFUlQpOworKyAgZ2RiX2Fzc2Vy dCAoISpzbG90KTsKKysgICpzbG90ID0gdHlwZTsKICt9CisrI2VuZGlmCiArCi0rLyogQW4gb2Jq ZWN0IG9mIHRoaXMgdHlwZSBpcyBzdG9yZWQgaW4gZWFjaCBCRkQncyB1c2VyIGRhdGEuICAqLwot KwotK3N0cnVjdCBnZGJfYmZkX2RhdGEKLSt7Ci0rICAvKiBUaGUgcmVmZXJlbmNlIGNvdW50LiAg Ki8KLSsgIGludCByZWZjOwotKwotKyAgLyogVGhlIG10aW1lIG9mIHRoZSBCRkQgYXQgdGhlIHBv aW50IHRoZSBjYWNoZSBlbnRyeSB3YXMgbWFkZS4gICovCi0rICB0aW1lX3QgbXRpbWU7Ci0rfTsK LSsKLSsvKiBBIGhhc2ggdGFibGUgc3RvcmluZyBhbGwgdGhlIEJGRHMgbWFpbnRhaW5lZCBpbiB0 aGUgY2FjaGUuICAqLwotKwotK3N0YXRpYyBodGFiX3QgZ2RiX2JmZF9jYWNoZTsKLSsKLSsvKiBU aGUgdHlwZSBvZiBhbiBvYmplY3QgYmVpbmcgbG9va2VkIHVwIGluIGdkYl9iZmRfY2FjaGUuICBX ZSB1c2UKLSsgICBodGFiJ3MgY2FwYWJpbGl0eSBvZiBzdG9yaW5nIG9uZSBraW5kIG9mIG9iamVj dCAoQkZEIGluIHRoaXMgY2FzZSkKLSsgICBhbmQgdXNpbmcgYSBkaWZmZXJlbnQgc29ydCBvZiBv YmplY3QgZm9yIHNlYXJjaGluZy4gICovCi0rCi0rc3RydWN0IGdkYl9iZmRfY2FjaGVfc2VhcmNo Ci0rewotKyAgLyogVGhlIGZpbGVuYW1lLiAgKi8KLSsgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOwot KyAgLyogVGhlIG10aW1lLiAgKi8KLSsgIHRpbWVfdCBtdGltZTsKLSt9OwotKwotKy8qIEEgaGFz aCBmdW5jdGlvbiBmb3IgQkZEcy4gICovCisrLyogQWxsb2NhdGUgYSBuZXcgdHlwZSBsaWtlIGFs bG9jX3R5cGUgYnV0IHByZXNlcnZlIGZvciBpdCB0aGUgZGlzY2FyZGFiaWxpdHkKKysgICBzdGF0 ZSBvZiBQQVJFTlRfVFlQRS4gICovCiArCi0rc3RhdGljIGhhc2h2YWxfdAotK2hhc2hfYmZkIChj b25zdCB2b2lkICpiKQorK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCisrYWxsb2NfdHlwZV9hc19wYXJl bnQgKHN0cnVjdCB0eXBlICpwYXJlbnRfdHlwZSkKICt7Ci0rICBjb25zdCBiZmQgKmFiZmQgPSBi OwotKwotKyAgLyogSXQgaXMgc2ltcGxlc3QgdG8ganVzdCBoYXNoIHRoZSBmaWxlbmFtZS4gICov Ci0rICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAoYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwot K30KLSsKLSsvKiBBbiBlcXVhbGl0eSBmdW5jdGlvbiBmb3IgQkZEcy4gIE5vdGUgdGhhdCB0aGlz IGV4cGVjdHMgdGhlIGNhbGxlcgotKyAgIHRvIHNlYXJjaCB1c2luZyBzdHJ1Y3QgZ2RiX2JmZF9j YWNoZV9zZWFyY2ggb25seSwgbm90IEJGRHMuICAqLworKyAgc3RydWN0IHR5cGUgKm5ld190eXBl ID0gYWxsb2NfdHlwZV9jb3B5IChwYXJlbnRfdHlwZSk7CiArCi0rc3RhdGljIGludAotK2VxX2Jm ZCAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBiZmQgKmFiZmQg PSBhOwotKyAgY29uc3Qgc3RydWN0IGdkYl9iZmRfY2FjaGVfc2VhcmNoICpzID0gYjsKLSsgIHN0 cnVjdCBnZGJfYmZkX2RhdGEgKmdkYXRhID0gYmZkX3VzcmRhdGEgKGFiZmQpOworKyNpZiAwCisr ICBpZiAoVFlQRV9ESVNDQVJEQUJMRSAocGFyZW50X3R5cGUpKQorKyAgICBzZXRfdHlwZV9hc19k aXNjYXJkYWJsZSAobmV3X3R5cGUpOworKyNlbmRpZgogKwotKyAgcmV0dXJuIChnZGF0YS0+bXRp bWUgPT0gcy0+bXRpbWUKLSsJICAmJiBzdHJjbXAgKGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLCBz LT5maWxlbmFtZSkgPT0gMCk7CisrICByZXR1cm4gbmV3X3R5cGU7CiArfQogKwotKy8qIFNlZSBn ZGJfYmZkLmguICAqLwotKwotK3N0cnVjdCBiZmQgKgotK2dkYl9iZmRfb3BlbiAoY29uc3QgY2hh ciAqbmFtZSwgY29uc3QgY2hhciAqdGFyZ2V0LCBpbnQgZmQpCi0rewotKyAgaGFzaHZhbF90IGhh c2g7Ci0rICB2b2lkICoqc2xvdDsKLSsgIGJmZCAqYWJmZDsKLSsgIHN0cnVjdCBnZGJfYmZkX2Nh Y2hlX3NlYXJjaCBzZWFyY2g7Ci0rICBzdHJ1Y3Qgc3RhdCBzdDsKLSsKLSsgIGlmIChnZGJfYmZk X2NhY2hlID09IE5VTEwpCi0rICAgIGdkYl9iZmRfY2FjaGUgPSBodGFiX2NyZWF0ZV9hbGxvYyAo MSwgaGFzaF9iZmQsIGVxX2JmZCwgTlVMTCwKLSsJCQkJICAgICAgIHhjYWxsb2MsIHhmcmVlKTsK KyAvKiBBbGxvY2F0ZSBhIG5ldyBHREJBUkNILWFzc29jaWF0ZWQgdHlwZSBzdHJ1Y3R1cmUgYW5k IGZpbGwgaXQKKyAgICB3aXRoIHNvbWUgZGVmYXVsdHMuICBTcGFjZSBmb3IgdGhlIHR5cGUgc3Ry dWN0dXJlIGlzIGFsbG9jYXRlZAorICAgIG9uIHRoZSBoZWFwLiAgKi8KK0BAIC0zMTAsNyArMzUw LDcgQEAgbWFrZV9wb2ludGVyX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAq KnR5cGVwdHIpCisgCisgICBpZiAodHlwZXB0ciA9PSAwIHx8ICp0eXBlcHRyID09IDApCS8qIFdl J2xsIG5lZWQgdG8gYWxsb2NhdGUgb25lLiAgKi8KKyAgICAgeworLSAgICAgIG50eXBlID0gYWxs b2NfdHlwZV9jb3B5ICh0eXBlKTsKKysgICAgICBudHlwZSA9IGFsbG9jX3R5cGVfYXNfcGFyZW50 ICh0eXBlKTsKKyAgICAgICBpZiAodHlwZXB0cikKKyAJKnR5cGVwdHIgPSBudHlwZTsKKyAgICAg fQorQEAgLTM4Myw3ICs0MjMsNyBAQCBtYWtlX3JlZmVyZW5jZV90eXBlIChzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IHR5cGUgKip0eXBlcHRyKQorIAorICAgaWYgKHR5cGVwdHIgPT0gMCB8fCAq dHlwZXB0ciA9PSAwKQkvKiBXZSdsbCBuZWVkIHRvIGFsbG9jYXRlIG9uZS4gICovCisgICAgIHsK Ky0gICAgICBudHlwZSA9IGFsbG9jX3R5cGVfY29weSAodHlwZSk7CisrICAgICAgbnR5cGUgPSBh bGxvY190eXBlX2FzX3BhcmVudCAodHlwZSk7CisgICAgICAgaWYgKHR5cGVwdHIpCisgCSp0eXBl cHRyID0gbnR5cGU7CisgICAgIH0KK0BAIC04MDYsNiArODQ2LDcgQEAgY3JlYXRlX3JhbmdlX3R5 cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwgc3RydWN0IHR5cGUgKmluZGV4X3R5cGUsCisg ICAgIFRZUEVfWkFMTE9DIChyZXN1bHRfdHlwZSwgc2l6ZW9mIChzdHJ1Y3QgcmFuZ2VfYm91bmRz KSk7CisgICBUWVBFX0xPV19CT1VORCAocmVzdWx0X3R5cGUpID0gbG93X2JvdW5kOworICAgVFlQ RV9ISUdIX0JPVU5EIChyZXN1bHRfdHlwZSkgPSBoaWdoX2JvdW5kOworKyAgVFlQRV9CWVRFX1NU UklERSAocmVzdWx0X3R5cGUpID0gMDsKKyAKKyAgIGlmIChsb3dfYm91bmQgPj0gMCkKKyAgICAg VFlQRV9VTlNJR05FRCAocmVzdWx0X3R5cGUpID0gMTsKK0BAIC05MjYsNiArOTY3LDEwIEBAIGdl dF9hcnJheV9ib3VuZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBMT05HRVNUICpsb3dfYm91bmQsIExP TkdFU1QgKmhpZ2hfYm91bmQpCisgICByZXR1cm4gMTsKKyB9CisgCisrc3RhdGljIExPTkdFU1Qg dHlwZV9sZW5ndGhfZ2V0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKnRhcmdldF90 eXBlLAorKwkJCQlpbnQgZnVsbF9zcGFuKTsKICsKLSsgIGlmIChmZCA9PSAtMSkKLSsgICAgewot KyAgICAgIGZkID0gb3BlbiAobmFtZSwgT19SRE9OTFkgfCBPX0JJTkFSWSk7Ci0rICAgICAgaWYg KGZkID09IC0xKQotKwl7Ci0rCSAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX3N5c3RlbV9jYWxs KTsKLSsJICByZXR1cm4gTlVMTDsKLSsJfQotKyAgICB9CiArCi0rICBzZWFyY2guZmlsZW5hbWUg PSBuYW1lOwotKyAgaWYgKGZzdGF0IChmZCwgJnN0KSA8IDApCisgLyogQ3JlYXRlIGFuIGFycmF5 IHR5cGUgdXNpbmcgZWl0aGVyIGEgYmxhbmsgdHlwZSBzdXBwbGllZCBpbgorICAgIFJFU1VMVF9U WVBFLCBvciBjcmVhdGluZyBhIG5ldyB0eXBlLCBpbmhlcml0aW5nIHRoZSBvYmpmaWxlIGZyb20K KyAgICBSQU5HRV9UWVBFLgorQEAgLTk0OSwyNiArOTk0LDMxIEBAIGNyZWF0ZV9hcnJheV90eXBl IChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsCisgCisgICBUWVBFX0NPREUgKHJlc3VsdF90eXBl KSA9IFRZUEVfQ09ERV9BUlJBWTsKKyAgIFRZUEVfVEFSR0VUX1RZUEUgKHJlc3VsdF90eXBlKSA9 IGVsZW1lbnRfdHlwZTsKKy0gIGlmIChnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBlLCAm bG93X2JvdW5kLCAmaGlnaF9ib3VuZCkgPCAwKQorLSAgICBsb3dfYm91bmQgPSBoaWdoX2JvdW5k ID0gMDsKKy0gIENIRUNLX1RZUEVERUYgKGVsZW1lbnRfdHlwZSk7CistICAvKiBCZSBjYXJlZnVs IHdoZW4gc2V0dGluZyB0aGUgYXJyYXkgbGVuZ3RoLiAgQWRhIGFycmF5cyBjYW4gYmUKKy0gICAg IGVtcHR5IGFycmF5cyB3aXRoIHRoZSBoaWdoX2JvdW5kIGJlaW5nIHNtYWxsZXIgdGhhbiB0aGUg bG93X2JvdW5kLgorLSAgICAgSW4gc3VjaCBjYXNlcywgdGhlIGFycmF5IGxlbmd0aCBzaG91bGQg YmUgemVyby4gICovCistICBpZiAoaGlnaF9ib3VuZCA8IGxvd19ib3VuZCkKKy0gICAgVFlQRV9M RU5HVEggKHJlc3VsdF90eXBlKSA9IDA7CistICBlbHNlCistICAgIFRZUEVfTEVOR1RIIChyZXN1 bHRfdHlwZSkgPQorLSAgICAgIFRZUEVfTEVOR1RIIChlbGVtZW50X3R5cGUpICogKGhpZ2hfYm91 bmQgLSBsb3dfYm91bmQgKyAxKTsKKyAgIFRZUEVfTkZJRUxEUyAocmVzdWx0X3R5cGUpID0gMTsK KyAgIFRZUEVfRklFTERTIChyZXN1bHRfdHlwZSkgPQorICAgICAoc3RydWN0IGZpZWxkICopIFRZ UEVfWkFMTE9DIChyZXN1bHRfdHlwZSwgc2l6ZW9mIChzdHJ1Y3QgZmllbGQpKTsKKyAgIFRZUEVf SU5ERVhfVFlQRSAocmVzdWx0X3R5cGUpID0gcmFuZ2VfdHlwZTsKKyAgIFRZUEVfVlBUUl9GSUVM RE5PIChyZXN1bHRfdHlwZSkgPSAtMTsKKyAKKy0gIC8qIFRZUEVfRkxBR19UQVJHRVRfU1RVQiB3 aWxsIHRha2UgY2FyZSBvZiB6ZXJvIGxlbmd0aCBhcnJheXMuICAqLworKyAgLyogRFdBUkYgYmxv Y2tzIG1heSBkZXBlbmQgb24gcnVudGltZSBpbmZvcm1hdGlvbiBsaWtlCisrICAgICBEV19PUF9Q VVNIX09CSkVDVF9BRERSRVNTIG5vdCBiZWluZyBhdmFpbGFibGUgZHVyaW5nIHRoZQorKyAgICAg Q1JFQVRFX0FSUkFZX1RZUEUgdGltZS4gICovCisrICBpZiAoVFlQRV9SQU5HRV9EQVRBIChyYW5n ZV90eXBlKS0+bG93LmtpbmQgIT0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVAorKyAgICAgIHx8 IFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gua2luZCAhPSBSQU5HRV9CT1VORF9L SU5EX0NPTlNUQU5UCisrICAgICAgfHwgVFlQRV9EWU5BTUlDIChlbGVtZW50X3R5cGUpKQorKyAg ICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0gMDsKKysgIGVsc2UKICsgICAgewotKyAgICAg IC8qIFdlaXJkIHNpdHVhdGlvbiBoZXJlLiAgKi8KLSsgICAgICBzZWFyY2gubXRpbWUgPSAwOwor KyAgICAgIENIRUNLX1RZUEVERUYgKGVsZW1lbnRfdHlwZSk7CisrICAgICAgVFlQRV9MRU5HVEgg KHJlc3VsdF90eXBlKSA9IHR5cGVfbGVuZ3RoX2dldCAocmVzdWx0X3R5cGUsIGVsZW1lbnRfdHlw ZSwKKysJCQkJCQkgICAwKTsKICsgICAgfQotKyAgZWxzZQotKyAgICBzZWFyY2gubXRpbWUgPSBz dC5zdF9tdGltZTsKLSsKLSsgIC8qIE5vdGUgdGhhdCB0aGlzIG11c3QgY29tcHV0ZSB0aGUgc2Ft ZSByZXN1bHQgYXMgaGFzaF9iZmQuICAqLwotKyAgaGFzaCA9IGh0YWJfaGFzaF9zdHJpbmcgKG5h bWUpOwotKyAgLyogTm90ZSB0aGF0IHdlIGNhbm5vdCB1c2UgaHRhYl9maW5kX3Nsb3Rfd2l0aF9o YXNoIGhlcmUsIGJlY2F1c2UKLSsgICAgIG9wZW5pbmcgdGhlIEJGRCBtYXkgZmFpbDsgYW5kIHRo aXMgd291bGQgdmlvbGF0ZSBoYXNodGFiCi0rICAgICBpbnZhcmlhbnRzLiAgKi8KLSsgIGFiZmQg PSBodGFiX2ZpbmRfd2l0aF9oYXNoIChnZGJfYmZkX2NhY2hlLCAmc2VhcmNoLCBoYXNoKTsKLSsg IGlmIChhYmZkICE9IE5VTEwpCisgICBpZiAoVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9PSAw KQorLSAgICBUWVBFX1RBUkdFVF9TVFVCIChyZXN1bHRfdHlwZSkgPSAxOwogKyAgICB7Ci0rICAg ICAgY2xvc2UgKGZkKTsKLSsgICAgICBnZGJfYmZkX3JlZiAoYWJmZCk7Ci0rICAgICAgcmV0dXJu IGFiZmQ7CisrICAgICAgLyogVGhlIHJlYWwgc2l6ZSB3aWxsIGJlIGNvbXB1dGVkIGZvciBzcGVj aWZpYyBpbnN0YW5jZXMgYnkKKysJIENIRUNLX1RZUEVERUYuICAqLworKyAgICAgIFRZUEVfVEFS R0VUX1NUVUIgKHJlc3VsdF90eXBlKSA9IDE7CiArICAgIH0KKyAKKyAgIHJldHVybiByZXN1bHRf dHlwZTsKKyB9CitAQCAtMTQ4OSw2ICsxNTM5LDEwNSBAQCBzdHViX25vbmFtZV9jb21wbGFpbnQg KHZvaWQpCisgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsIF8oInN0dWIgdHlwZSBo YXMgTlVMTCBuYW1lIikpOworIH0KKyAKKysvKiBDYWxjdWxhdGUgdGhlIG1lbW9yeSBsZW5ndGgg b2YgYXJyYXkgVFlQRS4KICsKLSsgIGFiZmQgPSBiZmRfZm9wZW4gKG5hbWUsIHRhcmdldCwgRk9Q RU5fUkIsIGZkKTsKLSsgIGlmIChhYmZkID09IE5VTEwpCi0rICAgIHJldHVybiBOVUxMOwotKwot KyAgc2xvdCA9IGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCAoZ2RiX2JmZF9jYWNoZSwgJnNlYXJj aCwgaGFzaCwgSU5TRVJUKTsKLSsgIGdkYl9hc3NlcnQgKCEqc2xvdCk7Ci0rICAqc2xvdCA9IGFi ZmQ7Ci0rCi0rICBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lIChhYmZkKTsKLSsgIGdkYl9iZmRfcmVm IChhYmZkKTsKLSsgIHJldHVybiBhYmZkOwotK30KKysgICBUQVJHRVRfVFlQRSBzaG91bGQgYmUg c2V0IHRvIGBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSknIGFzCisrICAg YSBwZXJmb3JtYW5jZSBoaW50LiAgRmVlbCBmcmVlIHRvIHBhc3MgTlVMTC4gIFNldCBGVUxMX1NQ QU4gdG8gcmV0dXJuIHRoZQorKyAgIHNpemUgaW5jbC4gdGhlIHBvc3NpYmxlIHBhZGRpbmcgb2Yg dGhlIGxhc3QgZWxlbWVudCAtIGl0IG1heSBkaWZmZXIgZnJvbSB0aGUKKysgICBjbGVhcmVkIEZV TExfU1BBTiByZXR1cm4gdmFsdWUgKHRoZSBleHBlY3RlZCBTSVpFT0YpIGZvciBub24temVybwor KyAgIFRZUEVfQllURV9TVFJJREUgdmFsdWVzLiAgKi8KICsKLSsvKiBBIGhlbHBlciBmdW5jdGlv biB0aGF0IHJlbGVhc2VzIGFueSBzZWN0aW9uIGRhdGEgYXR0YWNoZWQgdG8gdGhlCi0rICAgQkZE LiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2ZyZWVfb25lX2JmZF9zZWN0aW9uIChiZmQgKmFiZmQs IGFzZWN0aW9uICpzZWN0cCwgdm9pZCAqaWdub3JlKQorK3N0YXRpYyBMT05HRVNUCisrdHlwZV9s ZW5ndGhfZ2V0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlLCBp bnQgZnVsbF9zcGFuKQogK3sKLSsgIHN0cnVjdCBnZGJfYmZkX3NlY3Rpb25fZGF0YSAqc2VjdCA9 IGJmZF9nZXRfc2VjdGlvbl91c2VyZGF0YSAoYWJmZCwgc2VjdHApOworKyAgc3RydWN0IHR5cGUg KnJhbmdlX3R5cGU7CisrICBMT05HRVNUIGJ5dGVfc3RyaWRlID0gMDsJLyogYD0gMCcgZm9yIGEg ZmFsc2UgR0NDIHdhcm5pbmcuICAqLworKyAgTE9OR0VTVCBjb3VudCwgZWxlbWVudF9zaXplLCBy ZXR2YWw7CiArCi0rICBpZiAoc2VjdCAhPSBOVUxMICYmIHNlY3QtPmRhdGEgIT0gTlVMTCkKLSsg ICAgewotKyNpZmRlZiBIQVZFX01NQVAKLSsgICAgICBpZiAoc2VjdC0+bWFwX2FkZHIgIT0gTlVM TCkKLSsJewotKwkgIGludCByZXM7CisrICBpZiAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NP REVfQVJSQVkKKysgICAgICAmJiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9TVFJJTkcp CisrICAgIHJldHVybiBUWVBFX0xFTkdUSCAodHlwZSk7CisrCisrICAvKiBBdm9pZCBleGVjdXRp bmcgVFlQRV9ISUdIX0JPVU5EIGZvciBpbnZhbGlkICh1bmFsbG9jYXRlZC91bmFzc29jaWF0ZWQp CisrICAgICBGb3J0cmFuIGFycmF5cy4gIFRoZSBhbGxvY2F0ZWQgZGF0YSB3aWxsIG5ldmVyIGJl IHVzZWQgc28gdGhleSBjYW4gYmUKKysgICAgIHplcm8tbGVuZ3RoLiAgKi8KKysgIGlmIChvYmpl Y3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAodHlwZSkpCisrICAgIHJldHVybiAwOwogKwotKwkg IHJlcyA9IG11bm1hcCAoc2VjdC0+bWFwX2FkZHIsIHNlY3QtPm1hcF9sZW4pOwotKwkgIGdkYl9h c3NlcnQgKHJlcyA9PSAwKTsKKysgIHJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUp OworKyAgaWYgKFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkKKysgICAgICB8 fCBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSkKKysgICAgcmV0dXJuIDA7 CisrICBjb3VudCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgLSBUWVBFX0xPV19CT1VO RCAocmFuZ2VfdHlwZSkgKyAxOworKyAgLyogSXQgbWF5IGhhcHBlbiBmb3Igd3JvbmcgRFdBUkYg YW5ub3RhdGlvbnMgcmV0dXJuaW5nIGdhcmJhZ2UgZGF0YS4gICovCisrICBpZiAoY291bnQgPCAw KQorKyAgICB3YXJuaW5nIChfKCJSYW5nZSBmb3IgdHlwZSAlcyBoYXMgaW52YWxpZCBib3VuZHMg JXMuLiVzIiksCisrCSAgICAgVFlQRV9FUlJPUl9OQU1FICh0eXBlKSwgcGxvbmdlc3QgKFRZUEVf TE9XX0JPVU5EIChyYW5nZV90eXBlKSksCisrCSAgICAgcGxvbmdlc3QgKFRZUEVfSElHSF9CT1VO RCAocmFuZ2VfdHlwZSkpKTsKKysgIC8qIFRoZSBjb2RlIGJlbG93IGRvZXMgbm90IGhhbmRsZSBj b3VudCA9PSAwIHJpZ2h0LiAgKi8KKysgIGlmIChjb3VudCA8PSAwKQorKyAgICByZXR1cm4gMDsK KysgIGlmIChmdWxsX3NwYW4gfHwgY291bnQgPiAxKQorKyAgICB7CisrICAgICAgLyogV2UgZG8g bm90IHVzZSBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFICh0eXBlKSBoZXJlIGFzIHdlIHdh bnQgdG8KKysgICAgICAgICBmb3JjZSBGVUxMX1NQQU4gdG8gMS4gICovCisrICAgICAgYnl0ZV9z dHJpZGUgPSBUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKTsKKysgICAgICBpZiAoYnl0ZV9z dHJpZGUgPT0gMCkKKysgICAgICAgIHsKKysJICBpZiAodGFyZ2V0X3R5cGUgPT0gTlVMTCkKKysJ ICAgIHRhcmdldF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkp OworKwkgIGJ5dGVfc3RyaWRlID0gdHlwZV9sZW5ndGhfZ2V0ICh0YXJnZXRfdHlwZSwgTlVMTCwg MSk7CiArCX0KLSsgICAgICBlbHNlCi0rI2VuZGlmCi0rCXhmcmVlIChzZWN0LT5kYXRhKTsKICsg ICAgfQotK30KLSsKLSsvKiBDbG9zZSBBQkZELCBhbmQgd2FybiBpZiB0aGF0IGZhaWxzLiAgKi8K LSsKLStzdGF0aWMgaW50Ci0rZ2RiX2JmZF9jbG9zZV9vcl93YXJuIChzdHJ1Y3QgYmZkICphYmZk KQotK3sKLSsgIGludCByZXQ7Ci0rICBjaGFyICpuYW1lID0gYmZkX2dldF9maWxlbmFtZSAoYWJm ZCk7CiArCi0rICBiZmRfbWFwX292ZXJfc2VjdGlvbnMgKGFiZmQsIGZyZWVfb25lX2JmZF9zZWN0 aW9uLCBOVUxMKTsKLSsKLSsgIHJldCA9IGJmZF9jbG9zZSAoYWJmZCk7Ci0rCi0rICBpZiAoIXJl dCkKLSsgICAgd2FybmluZyAoXygiY2Fubm90IGNsb3NlIFwiJXNcIjogJXMiKSwKLSsJICAgICBu YW1lLCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0rCi0rICByZXR1cm4gcmV0Owot K30KLSsKLSsvKiBTZWUgZ2RiX2JmZC5oLiAgKi8KLSsKLSt2b2lkCi0rZ2RiX2JmZF9yZWYgKHN0 cnVjdCBiZmQgKmFiZmQpCi0rewotKyAgc3RydWN0IGdkYl9iZmRfZGF0YSAqZ2RhdGE7Ci0rICB2 b2lkICoqc2xvdDsKLSsKLSsgIGlmIChhYmZkID09IE5VTEwpCi0rICAgIHJldHVybjsKLSsKLSsg IGdkYXRhID0gYmZkX3VzcmRhdGEgKGFiZmQpOworKyAgLyogRm9yIG5vdywgd2UgY29uc2VydmF0 aXZlbHkgdGFrZSB0aGUgYXJyYXkgbGVuZ3RoIHRvIGJlIDAgaWYgaXRzIGxlbmd0aAorKyAgICAg ZXhjZWVkcyBVSU5UX01BWC4gIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMgdGhhdCBmb3IgeCA8IDAs CisrICAgICAoVUxPTkdFU1QpIHggPT0gLXggKyBVTE9OR0VTVF9NQVggKyAxLCB3aGljaCBpcyB0 ZWNobmljYWxseSBub3QgZ3VhcmFudGVlZAorKyAgICAgYnkgQywgYnV0IGlzIHVzdWFsbHkgdHJ1 ZSAoYmVjYXVzZSBpdCB3b3VsZCBiZSB0cnVlIGlmIHggd2VyZSB1bnNpZ25lZAorKyAgICAgd2l0 aCBpdHMgaGlnaC1vcmRlciBiaXQgb24pLiBJdCB1c2VzIHRoZSBmYWN0IHRoYXQgaGlnaF9ib3Vu ZC1sb3dfYm91bmQgaXMKKysgICAgIGFsd2F5cyByZXByZXNlbnRhYmxlIGluIFVMT05HRVNUIGFu ZCB0aGF0IGlmIGhpZ2hfYm91bmQtbG93X2JvdW5kKzEKKysgICAgIG92ZXJmbG93cywgaXQgb3Zl cmZsb3dzIHRvIDAuICBXZSBtdXN0IGNoYW5nZSB0aGVzZSB0ZXN0cyBpZiB3ZSBkZWNpZGUgdG8K KysgICAgIGluY3JlYXNlIHRoZSByZXByZXNlbnRhdGlvbiBvZiBUWVBFX0xFTkdUSCBmcm9tIHVu c2lnbmVkIGludCB0byBVTE9OR0VTVC4KKysgICAgICovCiArCi0rICBpZiAoZ2RhdGEgIT0gTlVM TCkKKysgIGlmIChmdWxsX3NwYW4pCiArICAgIHsKLSsgICAgICBnZGF0YS0+cmVmYyArPSAxOwot KyAgICAgIHJldHVybjsKKysgICAgICByZXR2YWwgPSBjb3VudCAqIGJ5dGVfc3RyaWRlOworKyAg ICAgIGlmIChjb3VudCA9PSAwIHx8IHJldHZhbCAvIGNvdW50ICE9IGJ5dGVfc3RyaWRlIHx8IHJl dHZhbCA+IFVJTlRfTUFYKQorKwlyZXR2YWwgPSAwOworKyAgICAgIHJldHVybiByZXR2YWw7CiAr ICAgIH0KLSsKLSsgIGdkYXRhID0gYmZkX3phbGxvYyAoYWJmZCwgc2l6ZW9mIChzdHJ1Y3QgZ2Ri X2JmZF9kYXRhKSk7Ci0rICBnZGF0YS0+cmVmYyA9IDE7Ci0rICBnZGF0YS0+bXRpbWUgPSBiZmRf Z2V0X210aW1lIChhYmZkKTsKLSsgIGJmZF91c3JkYXRhIChhYmZkKSA9IGdkYXRhOwotKwotKyAg LyogVGhpcyBpcyB0aGUgZmlyc3Qgd2UndmUgc2VlbiBpdCwgc28gYWRkIGl0IHRvIHRoZSBoYXNo IHRhYmxlLiAgKi8KLSsgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAoYWxsX2JmZHMsIGFiZmQsIElO U0VSVCk7Ci0rICBnZGJfYXNzZXJ0IChzbG90ICYmICEqc2xvdCk7Ci0rICAqc2xvdCA9IGFiZmQ7 CisrICBpZiAodGFyZ2V0X3R5cGUgPT0gTlVMTCkKKysgICAgdGFyZ2V0X3R5cGUgPSBjaGVja190 eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CisrICBlbGVtZW50X3NpemUgPSB0eXBl X2xlbmd0aF9nZXQgKHRhcmdldF90eXBlLCBOVUxMLCAxKTsKKysgIHJldHZhbCA9IChjb3VudCAt IDEpICogYnl0ZV9zdHJpZGUgKyBlbGVtZW50X3NpemU7CisrICBpZiAocmV0dmFsIDwgZWxlbWVu dF9zaXplCisrICAgICAgfHwgKGJ5dGVfc3RyaWRlICE9IDAKKysgICAgICAgICAgJiYgKHJldHZh bCAtIGVsZW1lbnRfc2l6ZSkgLyBieXRlX3N0cmlkZSAhPSBjb3VudCAtIDEpCisrICAgICAgfHwg cmV0dmFsID4gVUlOVF9NQVgpCisrICAgIHJldHZhbCA9IDA7CisrICByZXR1cm4gcmV0dmFsOwog K30KICsKLSsvKiBTZWUgZ2RiX2JmZC5oLiAgKi8KKysvKiBQcmVwYXJlIFRZUEUgYWZ0ZXIgYmVp bmcgcmVhZCBpbiBieSB0aGUgYmFja2VuZC4gIEN1cnJlbnRseSB0aGlzIGZ1bmN0aW9uCisrICAg b25seSBwcm9wYWdhdGVzIHRoZSBUWVBFX0RZTkFNSUMgZmxhZy4gICovCiArCiArdm9pZAotK2dk Yl9iZmRfdW5yZWYgKHN0cnVjdCBiZmQgKmFiZmQpCisrZmluYWxpemVfdHlwZSAoc3RydWN0IHR5 cGUgKnR5cGUpCiArewotKyAgc3RydWN0IGdkYl9iZmRfZGF0YSAqZ2RhdGE7Ci0rICBzdHJ1Y3Qg Z2RiX2JmZF9jYWNoZV9zZWFyY2ggc2VhcmNoOwotKyAgdm9pZCAqKnNsb3Q7Ci0rCi0rICBpZiAo YWJmZCA9PSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0rICBnZGF0YSA9IGJmZF91c3JkYXRhIChh YmZkKTsKLSsgIGdkYl9hc3NlcnQgKGdkYXRhLT5yZWZjID49IDEpOwotKwotKyAgZ2RhdGEtPnJl ZmMgLT0gMTsKLSsgIGlmIChnZGF0YS0+cmVmYyA+IDApCi0rICAgIHJldHVybjsKLSsKLSsgIHNl YXJjaC5maWxlbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpOwotKwotKyAgaWYgKGdkYl9i ZmRfY2FjaGUgJiYgc2VhcmNoLmZpbGVuYW1lKQotKyAgICB7Ci0rICAgICAgaGFzaHZhbF90IGhh c2ggPSBodGFiX2hhc2hfc3RyaW5nIChzZWFyY2guZmlsZW5hbWUpOwotKyAgICAgIHZvaWQgKipz bG90OwotKwotKyAgICAgIHNlYXJjaC5tdGltZSA9IGdkYXRhLT5tdGltZTsKLSsgICAgICBzbG90 ID0gaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoIChnZGJfYmZkX2NhY2hlLCAmc2VhcmNoLCBoYXNo LAotKwkJCQkgICAgICAgTk9fSU5TRVJUKTsKLSsKLSsgICAgICBpZiAoc2xvdCAmJiAqc2xvdCkK LSsJaHRhYl9jbGVhcl9zbG90IChnZGJfYmZkX2NhY2hlLCBzbG90KTsKLSsgICAgfQotKwotKyAg YmZkX3VzcmRhdGEgKGFiZmQpID0gTlVMTDsgIC8qIFBhcmFub2lhLiAgKi8KKysgIGludCBpOwog KwotKyAgaHRhYl9yZW1vdmVfZWx0IChhbGxfYmZkcywgYWJmZCk7CisrICBmb3IgKGkgPSAwOyBp IDwgVFlQRV9ORklFTERTICh0eXBlKTsgKytpKQorKyAgICBpZiAoVFlQRV9GSUVMRF9UWVBFICh0 eXBlLCBpKSAmJiBUWVBFX0RZTkFNSUMgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkpKQorKyAg ICAgIGJyZWFrOwogKwotKyAgZ2RiX2JmZF9jbG9zZV9vcl93YXJuIChhYmZkKTsKKysgIC8qIEZJ WE1FOiBjcGx1c19zdHVmZiBpcyBpZ25vcmVkIGhlcmUuICAqLworKyAgaWYgKGkgPCBUWVBFX05G SUVMRFMgKHR5cGUpCisrICAgICAgfHwgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSkgJiYgVFlQ RV9EWU5BTUlDIChUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpKSkKKysgICAgICB8fCAoVFlQRV9U QVJHRVRfVFlQRSAodHlwZSkgJiYgVFlQRV9EWU5BTUlDIChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSkpKQorKyAgICBUWVBFX0RZTkFNSUMgKHR5cGUpID0gMTsKICt9CiArCi0rLyogQSBoZWxwZXIg ZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzZWN0aW9uIGRhdGEgZGVzY3JpcHRvcgotKyAgIGFz c29jaWF0ZWQgd2l0aCBTRUNUSU9OLiAgSWYgbm8gc3VjaCBkZXNjcmlwdG9yIGV4aXN0cywgYSBu ZXcgb25lCi0rICAgaXMgYWxsb2NhdGVkIGFuZCBjbGVhcmVkLiAgKi8KLSsKLStzdGF0aWMgc3Ry dWN0IGdkYl9iZmRfc2VjdGlvbl9kYXRhICoKLStnZXRfc2VjdGlvbl9kZXNjcmlwdG9yIChhc2Vj dGlvbiAqc2VjdGlvbikKLSt7Ci0rICBzdHJ1Y3QgZ2RiX2JmZF9zZWN0aW9uX2RhdGEgKnJlc3Vs dDsKLSsKLSsgIHJlc3VsdCA9IGJmZF9nZXRfc2VjdGlvbl91c2VyZGF0YSAoc2VjdGlvbi0+b3du ZXIsIHNlY3Rpb24pOwotKwotKyAgaWYgKHJlc3VsdCA9PSBOVUxMKQorIC8qIEZpbmQgdGhlIHJl YWwgdHlwZSBvZiBUWVBFLiAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZWFsIHR5cGUsCisg ICAgYWZ0ZXIgcmVtb3ZpbmcgYWxsIGxheWVycyBvZiB0eXBlZGVmcywgYW5kIGNvbXBsZXRpbmcg b3BhcXVlIG9yIHN0dWIKKyAgICB0eXBlcy4gIENvbXBsZXRpb24gY2hhbmdlcyB0aGUgVFlQRSBh cmd1bWVudCwgYnV0IHN0cmlwcGluZyBvZgorQEAgLTE2NTUsNTIgKzE4MDQsMzcgQEAgY2hlY2tf dHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5cGUpCisgICAgICAgICB9CisgICAgIH0KKyAKKy0gIGlm IChUWVBFX1RBUkdFVF9TVFVCICh0eXBlKSkKKysgIC8qIGNvcHlfdHlwZV9yZWN1cnNpdmUgYXV0 b21hdGljYWxseSBtYWtlcyB0aGUgcmVzdWx0aW5nIHR5cGUgY29udGFpbmluZyBvbmx5CisrICAg ICBjb25zdGFudCB2YWx1ZXMgZXhwZWN0ZWQgYnkgdGhlIGNhbGxlcnMgb2YgdGhpcyBmdW5jdGlv bi4gICovCisrICBpZiAoVFlQRV9EWU5BTUlDICh0eXBlKSkKICsgICAgewotKyAgICAgIHJlc3Vs dCA9IGJmZF96YWxsb2MgKHNlY3Rpb24tPm93bmVyLCBzaXplb2YgKCpyZXN1bHQpKTsKLSsgICAg ICBiZmRfc2V0X3NlY3Rpb25fdXNlcmRhdGEgKHNlY3Rpb24tPm93bmVyLCBzZWN0aW9uLCByZXN1 bHQpOwotKyAgICB9Ci0rCi0rICByZXR1cm4gcmVzdWx0OwotK30KKysgICAgICBodGFiX3QgY29w aWVkX3R5cGVzOwogKwotKy8qIERlY29tcHJlc3MgYSBzZWN0aW9uIHRoYXQgd2FzIGNvbXByZXNz ZWQgdXNpbmcgemxpYi4gIFN0b3JlIHRoZQotKyAgIGRlY29tcHJlc3NlZCBidWZmZXIsIGFuZCBp dHMgc2l6ZSwgaW4gREVTQ1JJUFRPUi4gICovCisrICAgICAgY29waWVkX3R5cGVzID0gY3JlYXRl X2NvcGllZF90eXBlc19oYXNoIChOVUxMKTsKKysgICAgICB0eXBlID0gY29weV90eXBlX3JlY3Vy c2l2ZSAodHlwZSwgY29waWVkX3R5cGVzKTsKKysgICAgICBodGFiX2RlbGV0ZSAoY29waWVkX3R5 cGVzKTsKICsKLStzdGF0aWMgdm9pZAotK3psaWJfZGVjb21wcmVzc19zZWN0aW9uIChhc2VjdGlv biAqc2VjdHAsCi0rCQkJIHN0cnVjdCBnZGJfYmZkX3NlY3Rpb25fZGF0YSAqZGVzY3JpcHRvcikK LSt7Ci0rICBiZmQgKmFiZmQgPSBzZWN0cC0+b3duZXI7Ci0rI2lmbmRlZiBIQVZFX1pMSUJfSAot KyAgZXJyb3IgKF8oIlN1cHBvcnQgZm9yIHpsaWItY29tcHJlc3NlZCBkYXRhIChmcm9tICclcycs IHNlY3Rpb24gJyVzJykgIgotKyAgICAgICAgICAgImlzIGRpc2FibGVkIGluIHRoaXMgY29weSBv ZiBHREIiKSwKLSsgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwKLSsJIGJmZF9nZXRf c2VjdGlvbl9uYW1lIChzZWN0cCkpOwotKyNlbHNlCi0rICBiZmRfc2l6ZV90eXBlIGNvbXByZXNz ZWRfc2l6ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0cCk7Ci0rICBnZGJfYnl0ZSAqY29t cHJlc3NlZF9idWZmZXIgPSB4bWFsbG9jIChjb21wcmVzc2VkX3NpemUpOwotKyAgc3RydWN0IGNs ZWFudXAgKmNsZWFudXAgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBjb21wcmVzc2VkX2J1ZmZlcik7 Ci0rICBzdHJ1Y3QgY2xlYW51cCAqaW5uZXJfY2xlYW51cDsKLSsgIGJmZF9zaXplX3R5cGUgdW5j b21wcmVzc2VkX3NpemU7Ci0rICBnZGJfYnl0ZSAqdW5jb21wcmVzc2VkX2J1ZmZlcjsKLSsgIHpf c3RyZWFtIHN0cm07Ci0rICBpbnQgcmM7Ci0rICBpbnQgaGVhZGVyX3NpemUgPSAxMjsKLSsgIHN0 cnVjdCBkd2FyZjJfcGVyX2JmZF9zZWN0aW9uICpzZWN0aW9uX2RhdGE7Ci0rCi0rICBpZiAoYmZk X3NlZWsgKGFiZmQsIHNlY3RwLT5maWxlcG9zLCBTRUVLX1NFVCkgIT0gMAotKyAgICAgIHx8IGJm ZF9icmVhZCAoY29tcHJlc3NlZF9idWZmZXIsCi0rCQkgICAgY29tcHJlc3NlZF9zaXplLCBhYmZk KSAhPSBjb21wcmVzc2VkX3NpemUpCi0rICAgIGVycm9yIChfKCJjYW4ndCByZWFkIGRhdGEgZnJv bSAnJXMnLCBzZWN0aW9uICclcyciKSwKLSsgICAgICAgICAgIGJmZF9nZXRfZmlsZW5hbWUgKGFi ZmQpLAotKwkgICBiZmRfZ2V0X3NlY3Rpb25fbmFtZSAoYWJmZCwgc2VjdHApKTsKLSsKLSsgIC8q IFJlYWQgdGhlIHpsaWIgaGVhZGVyLiAgSW4gdGhpcyBjYXNlLCBpdCBzaG91bGQgYmUgIlpMSUIi IGZvbGxvd2VkCi0rICAgICBieSB0aGUgdW5jb21wcmVzc2VkIHNlY3Rpb24gc2l6ZSwgOCBieXRl cyBpbiBiaWctZW5kaWFuIG9yZGVyLiAgKi8KLSsgIGlmIChjb21wcmVzc2VkX3NpemUgPCBoZWFk ZXJfc2l6ZQotKyAgICAgIHx8IHN0cm5jbXAgKGNvbXByZXNzZWRfYnVmZmVyLCAiWkxJQiIsIDQp ICE9IDApCi0rICAgIGVycm9yIChfKCJjb3JydXB0IFpMSUIgaGVhZGVyIGZyb20gJyVzJywgc2Vj dGlvbiAnJXMnIiksCi0rICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwKLSsJICAg YmZkX2dldF9zZWN0aW9uX25hbWUgKGFiZmQsIHNlY3RwKSk7Ci0rICB1bmNvbXByZXNzZWRfc2l6 ZSA9IGNvbXByZXNzZWRfYnVmZmVyWzRdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLSsgIHVu Y29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzVdOyB1bmNvbXByZXNzZWRfc2l6 ZSA8PD0gODsKLSsgIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzZdOyB1 bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLSsgIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNz ZWRfYnVmZmVyWzddOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLSsgIHVuY29tcHJlc3NlZF9z aXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzhdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLSsg IHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzldOyB1bmNvbXByZXNzZWRf c2l6ZSA8PD0gODsKLSsgIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzEw XTsgdW5jb21wcmVzc2VkX3NpemUgPDw9IDg7Ci0rICB1bmNvbXByZXNzZWRfc2l6ZSArPSBjb21w cmVzc2VkX2J1ZmZlclsxMV07Ci0rCi0rICAvKiBJdCBpcyBwb3NzaWJsZSB0aGUgc2VjdGlvbiBj b25zaXN0cyBvZiBzZXZlcmFsIGNvbXByZXNzZWQKLSsgICAgIGJ1ZmZlcnMgY29uY2F0ZW5hdGVk IHRvZ2V0aGVyLCBzbyB3ZSB1bmNvbXByZXNzIGluIGEgbG9vcC4gICovCi0rICBzdHJtLnphbGxv YyA9IE5VTEw7Ci0rICBzdHJtLnpmcmVlID0gTlVMTDsKLSsgIHN0cm0ub3BhcXVlID0gTlVMTDsK LSsgIHN0cm0uYXZhaWxfaW4gPSBjb21wcmVzc2VkX3NpemUgLSBoZWFkZXJfc2l6ZTsKLSsgIHN0 cm0ubmV4dF9pbiA9IChCeXRlZiopIGNvbXByZXNzZWRfYnVmZmVyICsgaGVhZGVyX3NpemU7Ci0r ICBzdHJtLmF2YWlsX291dCA9IHVuY29tcHJlc3NlZF9zaXplOwotKyAgdW5jb21wcmVzc2VkX2J1 ZmZlciA9IHhtYWxsb2MgKHVuY29tcHJlc3NlZF9zaXplKTsKLSsgIGlubmVyX2NsZWFudXAgPSBt YWtlX2NsZWFudXAgKHhmcmVlLCB1bmNvbXByZXNzZWRfYnVmZmVyKTsKLSsgIHJjID0gaW5mbGF0 ZUluaXQgKCZzdHJtKTsKLSsgIHdoaWxlIChzdHJtLmF2YWlsX2luID4gMCkKLSsgICAgewotKyAg ICAgIGlmIChyYyAhPSBaX09LKQotKyAgICAgICAgZXJyb3IgKF8oInNldHRpbmcgdXAgdW5jb21w cmVzc2lvbiBpbiAnJXMnLCBzZWN0aW9uICclcyc6ICVkIiksCi0rICAgICAgICAgICAgICAgYmZk X2dldF9maWxlbmFtZSAoYWJmZCksCi0rCSAgICAgICBiZmRfZ2V0X3NlY3Rpb25fbmFtZSAoYWJm ZCwgc2VjdHApLAotKwkgICAgICAgcmMpOwotKyAgICAgIHN0cm0ubmV4dF9vdXQgPSAoKEJ5dGVm KikgdW5jb21wcmVzc2VkX2J1ZmZlcgotKyAgICAgICAgICAgICAgICAgICAgICAgKyAodW5jb21w cmVzc2VkX3NpemUgLSBzdHJtLmF2YWlsX291dCkpOwotKyAgICAgIHJjID0gaW5mbGF0ZSAoJnN0 cm0sIFpfRklOSVNIKTsKLSsgICAgICBpZiAocmMgIT0gWl9TVFJFQU1fRU5EKQotKyAgICAgICAg ZXJyb3IgKF8oInpsaWIgZXJyb3IgdW5jb21wcmVzc2luZyBmcm9tICclcycsIHNlY3Rpb24gJyVz JzogJWQiKSwKLSsgICAgICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwKLSsJICAg ICAgIGJmZF9nZXRfc2VjdGlvbl9uYW1lIChhYmZkLCBzZWN0cCksCi0rCSAgICAgICByYyk7Ci0r ICAgICAgcmMgPSBpbmZsYXRlUmVzZXQgKCZzdHJtKTsKKysgICAgICBnZGJfYXNzZXJ0IChUWVBF X0RZTkFNSUMgKHR5cGUpID09IDApOworKyAgICAgIC8qIEZvcmNlIFRZUEVfTEVOR1RIICh0eXBl KSByZWNhbGN1bGF0aW9uLiAgKi8KKysgICAgICBUWVBFX0RZTkFNSUMgKHR5cGUpID0gMTsKICsg ICAgfQotKyAgcmMgPSBpbmZsYXRlRW5kICgmc3RybSk7Ci0rICBpZiAocmMgIT0gWl9PSwotKyAg ICAgIHx8IHN0cm0uYXZhaWxfb3V0ICE9IDApCi0rICAgIGVycm9yIChfKCJjb25jbHVkaW5nIHVu Y29tcHJlc3Npb24gaW4gJyVzJywgc2VjdGlvbiAnJXMnOiAlZCIpLAotKyAgICAgICAgICAgYmZk X2dldF9maWxlbmFtZSAoYWJmZCksCi0rCSAgIGJmZF9nZXRfc2VjdGlvbl9uYW1lIChhYmZkLCBz ZWN0cCksCi0rCSAgIHJjKTsKLSsKLSsgIGRpc2NhcmRfY2xlYW51cHMgKGlubmVyX2NsZWFudXAp OwotKyAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotKwotKyAgLyogQXR0YWNoIHRoZSBkYXRhIHRv IHRoZSBCRkQgc2VjdGlvbi4gICovCi0rICBkZXNjcmlwdG9yLT5kYXRhID0gdW5jb21wcmVzc2Vk X2J1ZmZlcjsKLSsgIGRlc2NyaXB0b3ItPnNpemUgPSB1bmNvbXByZXNzZWRfc2l6ZTsKLSsjZW5k aWYKLSt9Ci0rCi0rLyogU2VlIGdkYl9iZmQuaC4gICovCi0rCi0rY29uc3QgZ2RiX2J5dGUgKgot K2dkYl9iZmRfbWFwX3NlY3Rpb24gKGFzZWN0aW9uICpzZWN0cCwgYmZkX3NpemVfdHlwZSAqc2l6 ZSkKLSt7Ci0rICBiZmQgKmFiZmQ7Ci0rICBnZGJfYnl0ZSAqYnVmLCAqcmV0YnVmOwotKyAgdW5z aWduZWQgY2hhciBoZWFkZXJbNF07Ci0rICBzdHJ1Y3QgZ2RiX2JmZF9zZWN0aW9uX2RhdGEgKmRl c2NyaXB0b3I7Ci0rCi0rICBnZGJfYXNzZXJ0ICgoc2VjdHAtPmZsYWdzICYgU0VDX1JFTE9DKSA9 PSAwKTsKLSsgIGdkYl9hc3NlcnQgKHNpemUgIT0gTlVMTCk7Ci0rCi0rICBhYmZkID0gc2VjdHAt Pm93bmVyOwotKwotKyAgZGVzY3JpcHRvciA9IGdldF9zZWN0aW9uX2Rlc2NyaXB0b3IgKHNlY3Rw KTsKICsKLSsgIC8qIElmIHRoZSBkYXRhIHdhcyBhbHJlYWR5IHJlYWQgZm9yIHRoaXMgQkZELCBq dXN0IHJldXNlIGl0LiAgKi8KLSsgIGlmIChkZXNjcmlwdG9yLT5kYXRhICE9IE5VTEwpCi0rICAg IGdvdG8gZG9uZTsKLSsKLSsgIC8qIENoZWNrIGlmIHRoZSBmaWxlIGhhcyBhIDQtYnl0ZSBoZWFk ZXIgaW5kaWNhdGluZyBjb21wcmVzc2lvbi4gICovCi0rICBpZiAoYmZkX2dldF9zZWN0aW9uX3Np emUgKHNlY3RwKSA+IHNpemVvZiAoaGVhZGVyKQotKyAgICAgICYmIGJmZF9zZWVrIChhYmZkLCBz ZWN0cC0+ZmlsZXBvcywgU0VFS19TRVQpID09IDAKLSsgICAgICAmJiBiZmRfYnJlYWQgKGhlYWRl ciwgc2l6ZW9mIChoZWFkZXIpLCBhYmZkKSA9PSBzaXplb2YgKGhlYWRlcikpCisrICBpZiAoVFlQ RV9UQVJHRVRfU1RVQiAodHlwZSkgfHwgVFlQRV9EWU5BTUlDICh0eXBlKSkKKyAgICAgeworLSAg ICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOworICAgICAgIHN0cnVjdCB0eXBlICp0YXJnZXRf dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKKyAKKysgICAg ICBpZiAoVFlQRV9EWU5BTUlDICh0eXBlKSkKKysJVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkgPSB0 YXJnZXRfdHlwZTsKKyAgICAgICBpZiAoVFlQRV9TVFVCICh0YXJnZXRfdHlwZSkgfHwgVFlQRV9U QVJHRVRfU1RVQiAodGFyZ2V0X3R5cGUpKQorIAl7CisgCSAgLyogTm90aGluZyB3ZSBjYW4gZG8u ICAqLworIAl9CisgICAgICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVf QVJSQVkKKy0JICAgICAgICYmIFRZUEVfTkZJRUxEUyAodHlwZSkgPT0gMQorLQkgICAgICAgJiYg KFRZUEVfQ09ERSAocmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSkpCistCQkgICA9 PSBUWVBFX0NPREVfUkFOR0UpKQorKwkgICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfU1RSSU5HKQorIAl7CisgCSAgLyogTm93IHJlY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRo ZSBhcnJheSB0eXBlLCBiYXNlZCBvbiBpdHMKKy0JICAgICBudW1iZXIgb2YgZWxlbWVudHMgYW5k IHRoZSB0YXJnZXQgdHlwZSdzIGxlbmd0aC4KKy0JICAgICBXYXRjaCBvdXQgZm9yIEFkYSBudWxs IEFkYSBhcnJheXMgd2hlcmUgdGhlIGhpZ2ggYm91bmQKKy0JICAgICBpcyBzbWFsbGVyIHRoYW4g dGhlIGxvdyBib3VuZC4gICovCistCSAgY29uc3QgTE9OR0VTVCBsb3dfYm91bmQgPSBUWVBFX0xP V19CT1VORCAocmFuZ2VfdHlwZSk7CistCSAgY29uc3QgTE9OR0VTVCBoaWdoX2JvdW5kID0gVFlQ RV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKTsKKy0JICBVTE9OR0VTVCBsZW47CistCistCSAgaWYg KGhpZ2hfYm91bmQgPCBsb3dfYm91bmQpCistCSAgICBsZW4gPSAwOworLQkgIGVsc2UKKy0JICAg IHsKKy0JICAgICAgLyogRm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFrZSB0aGUgYXJyYXkg bGVuZ3RoIHRvIGJlIDAKKy0JCSBpZiBpdHMgbGVuZ3RoIGV4Y2VlZHMgVUlOVF9NQVguICBUaGUg Y29kZSBiZWxvdyBhc3N1bWVzCistCQkgdGhhdCBmb3IgeCA8IDAsIChVTE9OR0VTVCkgeCA9PSAt eCArIFVMT05HRVNUX01BWCArIDEsCistCQkgd2hpY2ggaXMgdGVjaG5pY2FsbHkgbm90IGd1YXJh bnRlZWQgYnkgQywgYnV0IGlzIHVzdWFsbHkgdHJ1ZQorLQkJIChiZWNhdXNlIGl0IHdvdWxkIGJl IHRydWUgaWYgeCB3ZXJlIHVuc2lnbmVkIHdpdGggaXRzCistCQkgaGlnaC1vcmRlciBiaXQgb24p LiAgSXQgdXNlcyB0aGUgZmFjdCB0aGF0CistCQkgaGlnaF9ib3VuZC1sb3dfYm91bmQgaXMgYWx3 YXlzIHJlcHJlc2VudGFibGUgaW4KKy0JCSBVTE9OR0VTVCBhbmQgdGhhdCBpZiBoaWdoX2JvdW5k LWxvd19ib3VuZCsxIG92ZXJmbG93cywKKy0JCSBpdCBvdmVyZmxvd3MgdG8gMC4gIFdlIG11c3Qg Y2hhbmdlIHRoZXNlIHRlc3RzIGlmIHdlIAorLQkJIGRlY2lkZSB0byBpbmNyZWFzZSB0aGUgcmVw cmVzZW50YXRpb24gb2YgVFlQRV9MRU5HVEgKKy0JCSBmcm9tIHVuc2lnbmVkIGludCB0byBVTE9O R0VTVC4gICovCistCSAgICAgIFVMT05HRVNUIHVsb3cgPSBsb3dfYm91bmQsIHVoaWdoID0gaGln aF9ib3VuZDsKKy0JICAgICAgVUxPTkdFU1QgdGxlbiA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlw ZSk7CistCistCSAgICAgIGxlbiA9IHRsZW4gKiAodWhpZ2ggLSB1bG93ICsgMSk7CistCSAgICAg IGlmICh0bGVuID09IDAgfHwgKGxlbiAvIHRsZW4gLSAxICsgdWxvdykgIT0gdWhpZ2ggCistCQkg IHx8IGxlbiA+IFVJTlRfTUFYKQorLQkJbGVuID0gMDsKKy0JICAgIH0KKy0JICBUWVBFX0xFTkdU SCAodHlwZSkgPSBsZW47CisrCSAgICAgbnVtYmVyIG9mIGVsZW1lbnRzIGFuZCB0aGUgdGFyZ2V0 IHR5cGUncyBsZW5ndGguICAqLworKwkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IHR5cGVfbGVuZ3Ro X2dldCAodHlwZSwgdGFyZ2V0X3R5cGUsIDApOworIAkgIFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUp ID0gMDsKKyAJfQorICAgICAgIGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RF X1JBTkdFKQorQEAgLTE3MDgsNiArMTg0Miw3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBl ICp0eXBlKQorIAkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlw ZSk7CisgCSAgVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgPSAwOworIAl9CisrICAgICAgVFlQRV9E WU5BTUlDICh0eXBlKSA9IDA7CisgICAgIH0KKyAKKyAgIHR5cGUgPSBtYWtlX3F1YWxpZmllZF90 eXBlICh0eXBlLCBpbnN0YW5jZV9mbGFncywgTlVMTCk7CitAQCAtMzM4NywzMyArMzUyMiw0MiBA QCB0eXBlX3BhaXJfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3Jo cykKKyB9CisgCisgLyogQWxsb2NhdGUgdGhlIGhhc2ggdGFibGUgdXNlZCBieSBjb3B5X3R5cGVf cmVjdXJzaXZlIHRvIHdhbGsKKy0gICB0eXBlcyB3aXRob3V0IGR1cGxpY2F0ZXMuICBXZSB1c2Ug T0JKRklMRSdzIG9ic3RhY2ssIGJlY2F1c2UKKy0gICBPQkpGSUxFIGlzIGFib3V0IHRvIGJlIGRl bGV0ZWQuICAqLworKyAgIHR5cGVzIHdpdGhvdXQgZHVwbGljYXRlcy4gICAqLworIAorIGh0YWJf dAorIGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisg eworLSAgcmV0dXJuIGh0YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlw ZV9wYWlyX2VxLAorLQkJCSAgICAgICBOVUxMLCAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAor LQkJCSAgICAgICBoYXNodGFiX29ic3RhY2tfYWxsb2NhdGUsCistCQkJICAgICAgIGR1bW15X29i c3RhY2tfZGVhbGxvY2F0ZSk7CisrICBpZiAob2JqZmlsZSA9PSBOVUxMKQogKyAgICB7Ci0rICAg ICAgLyogVXBvbiBkZWNvbXByZXNzaW9uLCB1cGRhdGUgdGhlIGJ1ZmZlciBhbmQgaXRzIHNpemUu ICAqLwotKyAgICAgIGlmIChzdHJuY21wIChoZWFkZXIsICJaTElCIiwgc2l6ZW9mIChoZWFkZXIp KSA9PSAwKQotKyAgICAgICAgewotKyAgICAgICAgICB6bGliX2RlY29tcHJlc3Nfc2VjdGlvbiAo c2VjdHAsIGRlc2NyaXB0b3IpOwotKwkgIGdvdG8gZG9uZTsKLSsgICAgICAgIH0KKysgICAgICAv KiBOVUxMIE9CSkZJTEUgaXMgZm9yIFRZUEVfRFlOQU1JQyB0eXBlcyBhbHJlYWR5IGNvbnRhaW5l ZCBpbgorKwkgT0JKRklMRV9NQUxMT0MgbWVtb3J5LCBzdWNoIGFzIHRob3NlIGZyb20gVkFMVUVf SElTVE9SWV9DSEFJTi4gIFRhYmxlCisrCSBlbGVtZW50IGVudHJpZXMgZ2V0IGFsbG9jYXRlZCBi eSB4bWFsbG9jIC0gc28gdXNlIHhmcmVlLiAgKi8KKysgICAgICByZXR1cm4gaHRhYl9jcmVhdGUg KDEsIHR5cGVfcGFpcl9oYXNoLCB0eXBlX3BhaXJfZXEsIHhmcmVlKTsKICsgICAgfQotKwotKyNp ZmRlZiBIQVZFX01NQVAKLSsgIHsKLSsgICAgLyogVGhlIHBhZ2Ugc2l6ZSwgdXNlZCB3aGVuIG1t YXBwaW5nLiAgKi8KLSsgICAgc3RhdGljIGludCBwYWdlc2l6ZTsKLSsKLSsgICAgaWYgKHBhZ2Vz aXplID09IDApCi0rICAgICAgcGFnZXNpemUgPSBnZXRwYWdlc2l6ZSAoKTsKLSsKLSsgICAgLyog T25seSB0cnkgdG8gbW1hcCBzZWN0aW9ucyB3aGljaCBhcmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24n dCB3YW50Ci0rICAgICAgIHRvIHdhc3RlIHNwYWNlIGR1ZSB0byBmcmFnbWVudGF0aW9uLiAgKi8K LSsKLSsgICAgaWYgKGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0cCkgPiA0ICogcGFnZXNpemUp Ci0rICAgICAgewotKwlkZXNjcmlwdG9yLT5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNl Y3RwKTsKLSsJZGVzY3JpcHRvci0+ZGF0YSA9IGJmZF9tbWFwIChhYmZkLCAwLCBkZXNjcmlwdG9y LT5zaXplLCBQUk9UX1JFQUQsCi0rCQkJCSAgICAgTUFQX1BSSVZBVEUsIHNlY3RwLT5maWxlcG9z LAotKwkJCQkgICAgICZkZXNjcmlwdG9yLT5tYXBfYWRkciwKLSsJCQkJICAgICAmZGVzY3JpcHRv ci0+bWFwX2xlbik7Ci0rCi0rCWlmICgoY2FkZHJfdClkZXNjcmlwdG9yLT5kYXRhICE9IE1BUF9G QUlMRUQpCi0rCSAgewotKyNpZiBIQVZFX1BPU0lYX01BRFZJU0UKLSsJICAgIHBvc2l4X21hZHZp c2UgKGRlc2NyaXB0b3ItPm1hcF9hZGRyLCBkZXNjcmlwdG9yLT5tYXBfbGVuLAotKwkJCSAgIFBP U0lYX01BRFZfV0lMTE5FRUQpOwotKyNlbmRpZgotKwkgICAgZ290byBkb25lOwotKwkgIH0KLSsK LSsJLyogT24gZmFpbHVyZSwgY2xlYXIgb3V0IHRoZSBzZWN0aW9uIGRhdGEgYW5kIHRyeSBhZ2Fp bi4gICovCi0rCW1lbXNldCAoZGVzY3JpcHRvciwgMCwgc2l6ZW9mICgqZGVzY3JpcHRvcikpOwot KyAgICAgIH0KLSsgIH0KLSsjZW5kaWYgLyogSEFWRV9NTUFQICovCi0rCi0rICAvKiBJZiB3ZSBn ZXQgaGVyZSwgd2UgYXJlIGEgbm9ybWFsLCBub3QtY29tcHJlc3NlZCBzZWN0aW9uLiAgKi8KLSsK LSsgIGRlc2NyaXB0b3ItPnNpemUgPSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdHApOwotKyAg ZGVzY3JpcHRvci0+ZGF0YSA9IHhtYWxsb2MgKGRlc2NyaXB0b3ItPnNpemUpOwotKwotKyAgaWYg KGJmZF9zZWVrIChhYmZkLCBzZWN0cC0+ZmlsZXBvcywgU0VFS19TRVQpICE9IDAKLSsgICAgICB8 fCBiZmRfYnJlYWQgKGRlc2NyaXB0b3ItPmRhdGEsIGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0 cCksCi0rCQkgICAgYWJmZCkgIT0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKSkKKysgIGVs c2UKICsgICAgewotKyAgICAgIHhmcmVlIChkZXNjcmlwdG9yLT5kYXRhKTsKLSsgICAgICBkZXNj cmlwdG9yLT5kYXRhID0gTlVMTDsKLSsgICAgICBlcnJvciAoXygiQ2FuJ3QgcmVhZCBkYXRhIGZv ciBzZWN0aW9uICclcyciKSwKLSsJICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7Ci0rICAg IH0KLSsKLSsgZG9uZToKLSsgIGdkYl9hc3NlcnQgKGRlc2NyaXB0b3ItPmRhdGEgIT0gTlVMTCk7 Ci0rICAqc2l6ZSA9IGRlc2NyaXB0b3ItPnNpemU7Ci0rICByZXR1cm4gZGVzY3JpcHRvci0+ZGF0 YTsKLSt9Ci0rCi0rDAotKwotKy8qIFNlZSBnZGJfYmZkLmguICAqLwotKwotK2JmZCAqCi0rZ2Ri X2JmZF9mb3BlbiAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCwgY29u c3QgY2hhciAqbW9kZSwKLSsJICAgICAgIGludCBmZCkKLSt7Ci0rICBiZmQgKnJlc3VsdCA9IGJm ZF9mb3BlbiAoZmlsZW5hbWUsIHRhcmdldCwgbW9kZSwgZmQpOwotKwotKyAgaWYgKHJlc3VsdCkK LSsgICAgewotKyAgICAgIGdkYl9iZmRfc3Rhc2hfZmlsZW5hbWUgKHJlc3VsdCk7Ci0rICAgICAg Z2RiX2JmZF9yZWYgKHJlc3VsdCk7Ci0rICAgIH0KLSsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQot KwotKy8qIFNlZSBnZGJfYmZkLmguICAqLwotKwotK2JmZCAqCi0rZ2RiX2JmZF9vcGVuciAoY29u c3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCkKLSt7Ci0rICBiZmQgKnJlc3Vs dCA9IGJmZF9vcGVuciAoZmlsZW5hbWUsIHRhcmdldCk7Ci0rCi0rICBpZiAocmVzdWx0KQotKyAg ICB7Ci0rICAgICAgZ2RiX2JmZF9zdGFzaF9maWxlbmFtZSAocmVzdWx0KTsKLSsgICAgICBnZGJf YmZkX3JlZiAocmVzdWx0KTsKLSsgICAgfQotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0r LyogU2VlIGdkYl9iZmQuaC4gICovCi0rCi0rYmZkICoKLStnZGJfYmZkX29wZW53IChjb25zdCBj aGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqdGFyZ2V0KQotK3sKLSsgIGJmZCAqcmVzdWx0ID0g YmZkX29wZW53IChmaWxlbmFtZSwgdGFyZ2V0KTsKLSsKLSsgIGlmIChyZXN1bHQpCi0rICAgIHsK LSsgICAgICBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lIChyZXN1bHQpOwotKyAgICAgIGdkYl9iZmRf cmVmIChyZXN1bHQpOwotKyAgICB9Ci0rCi0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLSsvKiBT ZWUgZ2RiX2JmZC5oLiAgKi8KLSsKLStiZmQgKgotK2dkYl9iZmRfb3BlbnJfaW92ZWMgKGNvbnN0 IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICp0YXJnZXQsCi0rCQkgICAgIHZvaWQgKigqb3Bl bl9mdW5jKSAoc3RydWN0IGJmZCAqbmJmZCwKLSsJCQkJCSB2b2lkICpvcGVuX2Nsb3N1cmUpLAot KwkJICAgICB2b2lkICpvcGVuX2Nsb3N1cmUsCi0rCQkgICAgIGZpbGVfcHRyICgqcHJlYWRfZnVu YykgKHN0cnVjdCBiZmQgKm5iZmQsCi0rCQkJCQkgICAgIHZvaWQgKnN0cmVhbSwKLSsJCQkJCSAg ICAgdm9pZCAqYnVmLAotKwkJCQkJICAgICBmaWxlX3B0ciBuYnl0ZXMsCi0rCQkJCQkgICAgIGZp bGVfcHRyIG9mZnNldCksCi0rCQkgICAgIGludCAoKmNsb3NlX2Z1bmMpIChzdHJ1Y3QgYmZkICpu YmZkLAotKwkJCQkJdm9pZCAqc3RyZWFtKSwKLSsJCSAgICAgaW50ICgqc3RhdF9mdW5jKSAoc3Ry dWN0IGJmZCAqYWJmZCwKLSsJCQkJICAgICAgIHZvaWQgKnN0cmVhbSwKLSsJCQkJICAgICAgIHN0 cnVjdCBzdGF0ICpzYikpCi0rewotKyAgYmZkICpyZXN1bHQgPSBiZmRfb3BlbnJfaW92ZWMgKGZp bGVuYW1lLCB0YXJnZXQsCi0rCQkJCSBvcGVuX2Z1bmMsIG9wZW5fY2xvc3VyZSwKLSsJCQkJIHBy ZWFkX2Z1bmMsIGNsb3NlX2Z1bmMsIHN0YXRfZnVuYyk7Ci0rCi0rICBpZiAocmVzdWx0KQotKyAg ICB7Ci0rICAgICAgZ2RiX2JmZF9yZWYgKHJlc3VsdCk7Ci0rICAgICAgZ2RiX2JmZF9zdGFzaF9m aWxlbmFtZSAocmVzdWx0KTsKLSsgICAgfQotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0r LyogU2VlIGdkYl9iZmQuaC4gICovCi0rCi0rYmZkICoKLStnZGJfYmZkX29wZW5yX25leHRfYXJj aGl2ZWRfZmlsZSAoYmZkICphcmNoaXZlLCBiZmQgKnByZXZpb3VzKQotK3sKLSsgIGJmZCAqcmVz dWx0ID0gYmZkX29wZW5yX25leHRfYXJjaGl2ZWRfZmlsZSAoYXJjaGl2ZSwgcHJldmlvdXMpOwot KwotKyAgaWYgKHJlc3VsdCkKLSsgICAgewotKyAgICAgIGdkYl9iZmRfcmVmIChyZXN1bHQpOwot KyAgICAgIC8qIE5vIG5lZWQgdG8gc3Rhc2ggdGhlIGZpbGVuYW1lIGhlcmUuICAqLwotKyAgICB9 Ci0rCi0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLSsvKiBTZWUgZ2RiX2JmZC5oLiAgKi8KLSsK LStiZmQgKgotK2dkYl9iZmRfZmRvcGVuciAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNo YXIgKnRhcmdldCwgaW50IGZkKQotK3sKLSsgIGJmZCAqcmVzdWx0ID0gYmZkX2Zkb3BlbnIgKGZp bGVuYW1lLCB0YXJnZXQsIGZkKTsKLSsKLSsgIGlmIChyZXN1bHQpCi0rICAgIHsKLSsgICAgICBn ZGJfYmZkX3JlZiAocmVzdWx0KTsKLSsgICAgICBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lIChyZXN1 bHQpOwotKyAgICB9Ci0rCi0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLSsMCi0rCi0rLyogQSBj YWxsYmFjayBmb3IgaHRhYl90cmF2ZXJzZSB0aGF0IHByaW50cyBhIHNpbmdsZSBCRkQuICAqLwot KwotK3N0YXRpYyBpbnQKLStwcmludF9vbmVfYmZkICh2b2lkICoqc2xvdCwgdm9pZCAqZGF0YSkK LSt7Ci0rICBiZmQgKmFiZmQgPSAqc2xvdDsKLSsgIHN0cnVjdCBnZGJfYmZkX2RhdGEgKmdkYXRh ID0gYmZkX3VzcmRhdGEgKGFiZmQpOwotKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBkYXRhOwot KyAgc3RydWN0IGNsZWFudXAgKmlubmVyOwotKwotKyAgaW5uZXIgPSBtYWtlX2NsZWFudXBfdWlf b3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOwotKyAgdWlfb3V0X2ZpZWxkX2ludCAo dWlvdXQsICJyZWZjb3VudCIsIGdkYXRhLT5yZWZjKTsKLSsgIHVpX291dF9maWVsZF9zdHJpbmcg KHVpb3V0LCAiYWRkciIsIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGFiZmQpKTsKLSsgIHVpX291 dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAiZmlsZW5hbWUiLCBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZk KSk7Ci0rICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwotKyAgZG9fY2xlYW51cHMgKGlubmVy KTsKLSsKLSsgIHJldHVybiAxOwotK30KLSsKLSsvKiBJbXBsZW1lbnQgdGhlICdtYWludCBpbmZv IGJmZCcgY29tbWFuZC4gICovCi0rCi0rc3RhdGljIHZvaWQKLSttYWludGVuYW5jZV9pbmZvX2Jm ZHMgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQotK3sKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVh bnVwOwotKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OwotKwotKyAgY2xl YW51cCA9IG1ha2VfY2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgMywgLTEs ICJiZmRzIik7Ci0rICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgMTAsIHVpX2xlZnQsICJy ZWZjb3VudCIsICJSZWZjb3VudCIpOwotKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDE4 LCB1aV9sZWZ0LCAiYWRkciIsICJBZGRyZXNzIik7Ci0rICB1aV9vdXRfdGFibGVfaGVhZGVyICh1 aW91dCwgNDAsIHVpX2xlZnQsICJmaWxlbmFtZSIsICJGaWxlbmFtZSIpOwotKwotKyAgdWlfb3V0 X3RhYmxlX2JvZHkgKHVpb3V0KTsKLSsgIGh0YWJfdHJhdmVyc2UgKGFsbF9iZmRzLCBwcmludF9v bmVfYmZkLCB1aW91dCk7Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rfQotKwotKy8q IC1XbWlzc2luZy1wcm90b3R5cGVzICovCi0rZXh0ZXJuIGluaXRpYWxpemVfZmlsZV9mdHlwZSBf aW5pdGlhbGl6ZV9nZGJfYmZkOwotKwotK3ZvaWQKLStfaW5pdGlhbGl6ZV9nZGJfYmZkICh2b2lk KQotK3sKLSsgIGFsbF9iZmRzID0gaHRhYl9jcmVhdGVfYWxsb2MgKDEwLCBodGFiX2hhc2hfcG9p bnRlciwgaHRhYl9lcV9wb2ludGVyLAotKwkJCQlOVUxMLCB4Y2FsbG9jLCB4ZnJlZSk7Ci0rCi0r ICBhZGRfY21kICgiYmZkcyIsIGNsYXNzX21haW50ZW5hbmNlLCBtYWludGVuYW5jZV9pbmZvX2Jm ZHMsIF8oIlwKLStMaXN0IHRoZSBCRkRzIHRoYXQgYXJlIGN1cnJlbnRseSBvcGVuLiIpLAotKwkg ICAmbWFpbnRlbmFuY2VpbmZvbGlzdCk7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi9nZGJfYmZkLmgg Yi9nZGIvZ2RiX2JmZC5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZjEz MWJhNwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL2dkYl9iZmQuaAotQEAgLTAsMCArMSwxMDYg QEAKLSsvKiBEZWZpbml0aW9ucyBmb3IgQkZEIHdyYXBwZXJzIHVzZWQgYnkgR0RCLgotKwotKyAg IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMgotKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2lmbmRlZiBHREJfQkZEX0gKLSsjZGVm aW5lIEdEQl9CRkRfSAotKwotKy8qIE1ha2UgYSBjb3B5IEFCRkQncyBmaWxlbmFtZSB1c2luZyBi ZmRfYWxsb2MsIGFuZCByZWFzc2lnbiBpdCB0byB0aGUKLSsgICBCRkQuICBUaGlzIGVuc3VyZXMg dGhhdCB0aGUgQkZEJ3MgZmlsZW5hbWUgaGFzIHRoZSBzYW1lIGxpZmV0aW1lIGFzCi0rICAgdGhl IEJGRCBpdHNlbGYuICAqLwotKwotK3ZvaWQgZ2RiX2JmZF9zdGFzaF9maWxlbmFtZSAoc3RydWN0 IGJmZCAqYWJmZCk7Ci0rCi0rLyogT3BlbiBhIHJlYWQtb25seSAoRk9QRU5fUkIpIEJGRCBnaXZl biBhcmd1bWVudHMgbGlrZSBiZmRfZm9wZW4uCi0rICAgUmV0dXJucyBOVUxMIG9uIGVycm9yLiAg T24gc3VjY2VzcywgcmV0dXJucyBhIG5ldyByZWZlcmVuY2UgdG8gdGhlCi0rICAgQkZELCB3aGlj aCBtdXN0IGJlIGZyZWVkIHdpdGggZ2RiX2JmZF91bnJlZi4gIEJGRHMgcmV0dXJuZWQgYnkgdGhp cwotKyAgIGNhbGwgYXJlIHNoYXJlZCBhbW9uZyBhbGwgY2FsbGVycyBvcGVuaW5nIHRoZSBzYW1l IGZpbGUuICBJZiBGRCBpcwotKyAgIG5vdCAtMSwgdGhlbiBhZnRlciB0aGlzIGNhbGwgaXQgaXMg b3duZWQgYnkgQkZELiAgKi8KLSsKLStzdHJ1Y3QgYmZkICpnZGJfYmZkX29wZW4gKGNvbnN0IGNo YXIgKm5hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCwgaW50IGZkKTsKLSsKLSsvKiBJbmNyZW1lbnQg dGhlIHJlZmVyZW5jZSBjb3VudCBvZiBBQkZELiAgSXQgaXMgZmluZSBmb3IgQUJGRCB0byBiZQot KyAgIE5VTEw7IGluIHRoaXMgY2FzZSB0aGUgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiAgKi8KLSsK LSt2b2lkIGdkYl9iZmRfcmVmIChzdHJ1Y3QgYmZkICphYmZkKTsKLSsKLSsvKiBEZWNyZW1lbnQg dGhlIHJlZmVyZW5jZSBjb3VudCBvZiBBQkZELiAgSWYgdGhpcyBpcyB0aGUgbGFzdAotKyAgIHJl ZmVyZW5jZSwgQUJGRCB3aWxsIGJlIGZyZWVkLiAgSWYgQUJGRCBpcyBOVUxMLCB0aGlzIGZ1bmN0 aW9uIGRvZXMKLSsgICBub3RoaW5nLiAgKi8KLSsKLSt2b2lkIGdkYl9iZmRfdW5yZWYgKHN0cnVj dCBiZmQgKmFiZmQpOwotKwotKy8qIFRyeSB0byByZWFkIG9yIG1hcCB0aGUgY29udGVudHMgb2Yg dGhlIHNlY3Rpb24gU0VDVC4gIElmCi0rICAgc3VjY2Vzc2Z1bCwgdGhlIHNlY3Rpb24gZGF0YSBp cyByZXR1cm5lZCBhbmQgKlNJWkUgaXMgc2V0IHRvIHRoZQotKyAgIHNpemUgb2YgdGhlIHNlY3Rp b24gZGF0YTsgdGhpcyBtYXkgbm90IGJlIHRoZSBzYW1lIGFzIHRoZSBzaXplCi0rICAgYWNjb3Jk aW5nIHRvIGJmZF9nZXRfc2VjdGlvbl9zaXplIGlmIHRoZSBzZWN0aW9uIHdhcyBjb21wcmVzc2Vk LgotKyAgIFRoZSByZXR1cm5lZCBzZWN0aW9uIGRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBC RkQgYW5kIHdpbGwgYmUKLSsgICBkZXN0cm95ZWQgd2hlbiB0aGUgQkZEIGlzIGRlc3Ryb3llZC4g IFRoZXJlIGlzIG5vIG90aGVyIHdheSB0byBmcmVlCi0rICAgaXQ7IGZvciB0ZW1wb3JhcnkgdXNl cyBvZiBzZWN0aW9uIGRhdGEsIHNlZQotKyAgIGJmZF9tYWxsb2NfYW5kX2dldF9zZWN0aW9uLiAg U0VDVCBtYXkgbm90IGhhdmUgcmVsb2NhdGlvbnMuICBUaGlzCi0rICAgZnVuY3Rpb24gd2lsbCB0 aHJvdyBvbiBlcnJvci4gICovCi0rCi0rY29uc3QgZ2RiX2J5dGUgKmdkYl9iZmRfbWFwX3NlY3Rp b24gKGFzZWN0aW9uICpzZWN0aW9uLCBiZmRfc2l6ZV90eXBlICpzaXplKTsKLSsKLSsMCi0rCi0r LyogQSB3cmFwcGVyIGZvciBiZmRfZm9wZW4gdGhhdCBpbml0aWFsaXplcyB0aGUgZ2RiLXNwZWNp ZmljIHJlZmVyZW5jZQotKyAgIGNvdW50IGFuZCBjYWxscyBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1l LiAgKi8KLSsKLStiZmQgKmdkYl9iZmRfZm9wZW4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq LCBjb25zdCBjaGFyICosIGludCk7Ci0rCi0rLyogQSB3cmFwcGVyIGZvciBiZmRfb3BlbnIgdGhh dCBpbml0aWFsaXplcyB0aGUgZ2RiLXNwZWNpZmljIHJlZmVyZW5jZQotKyAgIGNvdW50IGFuZCBj YWxscyBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lLiAgKi8KLSsKLStiZmQgKmdkYl9iZmRfb3BlbnIg KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKLSsKLSsvKiBBIHdyYXBwZXIgZm9yIGJmZF9v cGVudyB0aGF0IGluaXRpYWxpemVzIHRoZSBnZGItc3BlY2lmaWMgcmVmZXJlbmNlCi0rICAgY291 bnQgYW5kIGNhbGxzIGdkYl9iZmRfc3Rhc2hfZmlsZW5hbWUuICAqLwotKwotK2JmZCAqZ2RiX2Jm ZF9vcGVudyAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwotKwotKy8qIEEgd3JhcHBlciBm b3IgYmZkX29wZW5yX2lvdmVjIHRoYXQgaW5pdGlhbGl6ZXMgdGhlIGdkYi1zcGVjaWZpYwotKyAg IHJlZmVyZW5jZSBjb3VudCBhbmQgY2FsbHMgZ2RiX2JmZF9zdGFzaF9maWxlbmFtZS4gICovCi0r Ci0rYmZkICpnZGJfYmZkX29wZW5yX2lvdmVjIChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3Qg Y2hhciAqdGFyZ2V0LAotKwkJCSAgdm9pZCAqKCpvcGVuX2Z1bmMpIChzdHJ1Y3QgYmZkICpuYmZk LAotKwkJCQkJICAgICAgdm9pZCAqb3Blbl9jbG9zdXJlKSwKLSsJCQkgIHZvaWQgKm9wZW5fY2xv c3VyZSwKLSsJCQkgIGZpbGVfcHRyICgqcHJlYWRfZnVuYykgKHN0cnVjdCBiZmQgKm5iZmQsCi0r CQkJCQkJICB2b2lkICpzdHJlYW0sCi0rCQkJCQkJICB2b2lkICpidWYsCi0rCQkJCQkJICBmaWxl X3B0ciBuYnl0ZXMsCi0rCQkJCQkJICBmaWxlX3B0ciBvZmZzZXQpLAotKwkJCSAgaW50ICgqY2xv c2VfZnVuYykgKHN0cnVjdCBiZmQgKm5iZmQsCi0rCQkJCQkgICAgIHZvaWQgKnN0cmVhbSksCi0r CQkJICBpbnQgKCpzdGF0X2Z1bmMpIChzdHJ1Y3QgYmZkICphYmZkLAotKwkJCQkJICAgIHZvaWQg KnN0cmVhbSwKLSsJCQkJCSAgICBzdHJ1Y3Qgc3RhdCAqc2IpKTsKLSsKLSsvKiBBIHdyYXBwZXIg Zm9yIGJmZF9vcGVucl9uZXh0X2FyY2hpdmVkX2ZpbGUgdGhhdCBpbml0aWFsaXplcyB0aGUKLSsg ICBnZGItc3BlY2lmaWMgcmVmZXJlbmNlIGNvdW50IGFuZCBjYWxscyBnZGJfYmZkX3N0YXNoX2Zp bGVuYW1lLiAgKi8KLSsKLStiZmQgKmdkYl9iZmRfb3BlbnJfbmV4dF9hcmNoaXZlZF9maWxlIChi ZmQgKmFyY2hpdmUsIGJmZCAqcHJldmlvdXMpOwotKwotKy8qIEEgd3JhcHBlciBmb3IgYmZkX2Zk b3BlbnIgdGhhdCBpbml0aWFsaXplcyB0aGUgZ2RiLXNwZWNpZmljCi0rICAgcmVmZXJlbmNlIGNv dW50IGFuZCBjYWxscyBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lLiAgKi8KLSsKLStiZmQgKmdkYl9i ZmRfZmRvcGVuciAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCwgaW50 IGZkKTsKLSsKLSsjZW5kaWYgLyogR0RCX0JGRF9IICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5 cGVzLmMgYi9nZGIvZ2RidHlwZXMuYwotaW5kZXggODE0MmFiOS4uYTI5NTNjYyAxMDA2NDQKLS0t LSBhL2dkYi9nZGJ0eXBlcy5jCi0rKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTM3LDYgKzM3LDkg QEAKLSAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgotICNpbmNsdWRlICJoYXNodGFiLmgiCi0gI2lu Y2x1ZGUgImV4Y2VwdGlvbnMuaCIKLSsjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKLSsjaW5jbHVkZSAi ZHdhcmYyZXhwci5oIgotKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKLSAKLSAvKiBJbml0aWFsaXpl IEJBRE5FU1MgY29uc3RhbnRzLiAgKi8KLSAKLUBAIC0xNDEsNyArMTQ0LDE2IEBAIHN0YXRpYyB2 b2lkIHByaW50X2JpdF92ZWN0b3IgKEJfVFlQRSAqLCBpbnQpOwotIHN0YXRpYyB2b2lkIHByaW50 X2FyZ190eXBlcyAoc3RydWN0IGZpZWxkICosIGludCwgaW50KTsKLSBzdGF0aWMgdm9pZCBkdW1w X2ZuX2ZpZWxkbGlzdHMgKHN0cnVjdCB0eXBlICosIGludCk7Ci0gc3RhdGljIHZvaWQgcHJpbnRf Y3BsdXNfc3R1ZmYgKHN0cnVjdCB0eXBlICosIGludCk7Ci0rc3RhdGljIExPTkdFU1QgdHlwZV9s ZW5ndGhfZ2V0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlLAot KwkJCQlpbnQgZnVsbF9zcGFuKTsKLSAKLSsjaWYgMAotKy8qIFRoZSBoYXNoIHRhYmxlIGhvbGRp bmcgYWxsIGRpc2NhcmRhYmxlIGBzdHJ1Y3QgdHlwZSAqJyByZWZlcmVuY2VzLiAgKi8KLStzdGF0 aWMgaHRhYl90IHR5cGVfZGlzY2FyZGFibGVfdGFibGU7Ci0rCi0rLyogQ3VycmVudCB0eXBlX2Rp c2NhcmRhYmxlX2NoZWNrIHBhc3MgdXNlZCBmb3IgVFlQRV9ESVNDQVJEQUJMRV9BR0UuICAqLwot K3N0YXRpYyBpbnQgdHlwZV9kaXNjYXJkYWJsZV9hZ2VfY3VycmVudDsKLSsjZW5kaWYKLSAKLSAv KiBBbGxvY2F0ZSBhIG5ldyBPQkpGSUxFLWFzc29jaWF0ZWQgdHlwZSBzdHJ1Y3R1cmUgYW5kIGZp bGwgaXQKLSAgICB3aXRoIHNvbWUgZGVmYXVsdHMuICBTcGFjZSBmb3IgdGhlIHR5cGUgc3RydWN0 dXJlIGlzIGFsbG9jYXRlZAotQEAgLTE3Miw2ICsxODQsNDMgQEAgYWxsb2NfdHlwZSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUpCi0gICByZXR1cm4gdHlwZTsKLSB9Ci0gCi0rI2lmIDAKLSsvKiBE ZWNsYXJlIFRZUEUgYXMgZGlzY2FyZGFibGUgb24gbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gYnkg ZnJlZV9hbGxfdHlwZXMuCi0rICAgWW91IG11c3QgY2FsbCB0eXBlX21hcmtfdXNlZCBkdXJpbmcg ZWFjaCBmcmVlX2FsbF90eXBlcyB0byBwcm90ZWN0IFRZUEUgZnJvbQotKyAgIGJlaW5nIGRlYWxs b2NhdGVkLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3NldF90eXBlX2FzX2Rpc2NhcmRhYmxlIChz dHJ1Y3QgdHlwZSAqdHlwZSkKLSt7Ci0rICB2b2lkICoqc2xvdDsKLSsKLSsgIGdkYl9hc3NlcnQg KCFUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSk7Ci0rCi0rICBUWVBFX0RJU0NBUkRBQkxFICh0eXBl KSA9IDE7Ci0rICBUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPSB0eXBlX2Rpc2NhcmRhYmxl X2FnZV9jdXJyZW50OwotKwotKyAgc2xvdCA9IGh0YWJfZmluZF9zbG90ICh0eXBlX2Rpc2NhcmRh YmxlX3RhYmxlLCB0eXBlLCBJTlNFUlQpOwotKyAgZ2RiX2Fzc2VydCAoISpzbG90KTsKLSsgICpz bG90ID0gdHlwZTsKLSt9Ci0rI2VuZGlmCi0rCi0rLyogQWxsb2NhdGUgYSBuZXcgdHlwZSBsaWtl IGFsbG9jX3R5cGUgYnV0IHByZXNlcnZlIGZvciBpdCB0aGUgZGlzY2FyZGFiaWxpdHkKLSsgICBz dGF0ZSBvZiBQQVJFTlRfVFlQRS4gICovCi0rCi0rc3RhdGljIHN0cnVjdCB0eXBlICoKLSthbGxv Y190eXBlX2FzX3BhcmVudCAoc3RydWN0IHR5cGUgKnBhcmVudF90eXBlKQotK3sKLSsgIHN0cnVj dCB0eXBlICpuZXdfdHlwZSA9IGFsbG9jX3R5cGVfY29weSAocGFyZW50X3R5cGUpOwotKwotKyNp ZiAwCi0rICBpZiAoVFlQRV9ESVNDQVJEQUJMRSAocGFyZW50X3R5cGUpKQotKyAgICBzZXRfdHlw ZV9hc19kaXNjYXJkYWJsZSAobmV3X3R5cGUpOwotKyNlbmRpZgotKwotKyAgcmV0dXJuIG5ld190 eXBlOwotK30KLSsKLSAvKiBBbGxvY2F0ZSBhIG5ldyBHREJBUkNILWFzc29jaWF0ZWQgdHlwZSBz dHJ1Y3R1cmUgYW5kIGZpbGwgaXQKLSAgICB3aXRoIHNvbWUgZGVmYXVsdHMuICBTcGFjZSBmb3Ig dGhlIHR5cGUgc3RydWN0dXJlIGlzIGFsbG9jYXRlZAotICAgIG9uIHRoZSBoZWFwLiAgKi8KLUBA IC0yOTcsNyArMzQ2LDcgQEAgbWFrZV9wb2ludGVyX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBz dHJ1Y3QgdHlwZSAqKnR5cGVwdHIpCi0gCi0gICBpZiAodHlwZXB0ciA9PSAwIHx8ICp0eXBlcHRy ID09IDApCS8qIFdlJ2xsIG5lZWQgdG8gYWxsb2NhdGUgb25lLiAgKi8KLSAgICAgewotLSAgICAg IG50eXBlID0gYWxsb2NfdHlwZV9jb3B5ICh0eXBlKTsKLSsgICAgICBudHlwZSA9IGFsbG9jX3R5 cGVfYXNfcGFyZW50ICh0eXBlKTsKLSAgICAgICBpZiAodHlwZXB0cikKLSAJKnR5cGVwdHIgPSBu dHlwZTsKLSAgICAgfQotQEAgLTM3NCw3ICs0MjMsNyBAQCBtYWtlX3JlZmVyZW5jZV90eXBlIChz dHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKip0eXBlcHRyKQotIAotICAgaWYgKHR5cGVw dHIgPT0gMCB8fCAqdHlwZXB0ciA9PSAwKQkvKiBXZSdsbCBuZWVkIHRvIGFsbG9jYXRlIG9uZS4g ICovCi0gICAgIHsKLS0gICAgICBudHlwZSA9IGFsbG9jX3R5cGVfY29weSAodHlwZSk7Ci0rICAg ICAgbnR5cGUgPSBhbGxvY190eXBlX2FzX3BhcmVudCAodHlwZSk7Ci0gICAgICAgaWYgKHR5cGVw dHIpCi0gCSp0eXBlcHRyID0gbnR5cGU7Ci0gICAgIH0KLUBAIC03ODQsNiArODMzLDcgQEAgY3Jl YXRlX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwgc3RydWN0IHR5cGUgKmlu ZGV4X3R5cGUsCi0gICAgIFRZUEVfWkFMTE9DIChyZXN1bHRfdHlwZSwgc2l6ZW9mIChzdHJ1Y3Qg cmFuZ2VfYm91bmRzKSk7Ci0gICBUWVBFX0xPV19CT1VORCAocmVzdWx0X3R5cGUpID0gbG93X2Jv dW5kOwotICAgVFlQRV9ISUdIX0JPVU5EIChyZXN1bHRfdHlwZSkgPSBoaWdoX2JvdW5kOwotKyAg VFlQRV9CWVRFX1NUUklERSAocmVzdWx0X3R5cGUpID0gMDsKLSAKLSAgIGlmIChsb3dfYm91bmQg Pj0gMCkKLSAgICAgVFlQRV9VTlNJR05FRCAocmVzdWx0X3R5cGUpID0gMTsKLUBAIC05MjcsMjYg Kzk3NywzMSBAQCBjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlLAot IAotICAgVFlQRV9DT0RFIChyZXN1bHRfdHlwZSkgPSBUWVBFX0NPREVfQVJSQVk7Ci0gICBUWVBF X1RBUkdFVF9UWVBFIChyZXN1bHRfdHlwZSkgPSBlbGVtZW50X3R5cGU7Ci0tICBpZiAoZ2V0X2Rp c2NyZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpIDwgMCkK LS0gICAgbG93X2JvdW5kID0gaGlnaF9ib3VuZCA9IDA7Ci0tICBDSEVDS19UWVBFREVGIChlbGVt ZW50X3R5cGUpOwotLSAgLyogQmUgY2FyZWZ1bCB3aGVuIHNldHRpbmcgdGhlIGFycmF5IGxlbmd0 aC4gIEFkYSBhcnJheXMgY2FuIGJlCi0tICAgICBlbXB0eSBhcnJheXMgd2l0aCB0aGUgaGlnaF9i b3VuZCBiZWluZyBzbWFsbGVyIHRoYW4gdGhlIGxvd19ib3VuZC4KLS0gICAgIEluIHN1Y2ggY2Fz ZXMsIHRoZSBhcnJheSBsZW5ndGggc2hvdWxkIGJlIHplcm8uICAqLwotLSAgaWYgKGhpZ2hfYm91 bmQgPCBsb3dfYm91bmQpCi0tICAgIFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSAwOwotLSAg ZWxzZQotLSAgICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0KLS0gICAgICBUWVBFX0xFTkdU SCAoZWxlbWVudF90eXBlKSAqIChoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSk7Ci0gICBUWVBF X05GSUVMRFMgKHJlc3VsdF90eXBlKSA9IDE7Ci0gICBUWVBFX0ZJRUxEUyAocmVzdWx0X3R5cGUp ID0KLSAgICAgKHN0cnVjdCBmaWVsZCAqKSBUWVBFX1pBTExPQyAocmVzdWx0X3R5cGUsIHNpemVv ZiAoc3RydWN0IGZpZWxkKSk7Ci0gICBUWVBFX0lOREVYX1RZUEUgKHJlc3VsdF90eXBlKSA9IHJh bmdlX3R5cGU7Ci0gICBUWVBFX1ZQVFJfRklFTEROTyAocmVzdWx0X3R5cGUpID0gLTE7Ci0gCi0t ICAvKiBUWVBFX0ZMQUdfVEFSR0VUX1NUVUIgd2lsbCB0YWtlIGNhcmUgb2YgemVybyBsZW5ndGgg YXJyYXlzLiAgKi8KLSsgIC8qIERXQVJGIGJsb2NrcyBtYXkgZGVwZW5kIG9uIHJ1bnRpbWUgaW5m b3JtYXRpb24gbGlrZQotKyAgICAgRFdfT1BfUFVTSF9PQkpFQ1RfQUREUkVTUyBub3QgYmVpbmcg YXZhaWxhYmxlIGR1cmluZyB0aGUKLSsgICAgIENSRUFURV9BUlJBWV9UWVBFIHRpbWUuICAqLwot KyAgaWYgKFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy5raW5kICE9IFJBTkdFX0JP VU5EX0tJTkRfQ09OU1RBTlQKLSsgICAgICB8fCBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUp LT5oaWdoLmtpbmQgIT0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVAotKyAgICAgIHx8IFRZUEVf RFlOQU1JQyAoZWxlbWVudF90eXBlKSkKLSsgICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9 IDA7Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBDSEVDS19UWVBFREVGIChlbGVtZW50X3R5cGUp OwotKyAgICAgIFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSB0eXBlX2xlbmd0aF9nZXQgKHJl c3VsdF90eXBlLCBlbGVtZW50X3R5cGUsCi0rCQkJCQkJICAgMCk7Ci0rICAgIH0KLSAgIGlmIChU WVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID09IDApCi0tICAgIFRZUEVfVEFSR0VUX1NUVUIgKHJl c3VsdF90eXBlKSA9IDE7Ci0rICAgIHsKLSsgICAgICAvKiBUaGUgcmVhbCBzaXplIHdpbGwgYmUg Y29tcHV0ZWQgZm9yIHNwZWNpZmljIGluc3RhbmNlcyBieQotKwkgQ0hFQ0tfVFlQRURFRi4gICov Ci0rICAgICAgVFlQRV9UQVJHRVRfU1RVQiAocmVzdWx0X3R5cGUpID0gMTsKLSsgICAgfQotIAot ICAgcmV0dXJuIHJlc3VsdF90eXBlOwotIH0KLUBAIC0xNDY4LDYgKzE1MjMsMTA1IEBAIHN0dWJf bm9uYW1lX2NvbXBsYWludCAodm9pZCkKLSAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50 cywgXygic3R1YiB0eXBlIGhhcyBOVUxMIG5hbWUiKSk7Ci0gfQotIAotKy8qIENhbGN1bGF0ZSB0 aGUgbWVtb3J5IGxlbmd0aCBvZiBhcnJheSBUWVBFLgotKwotKyAgIFRBUkdFVF9UWVBFIHNob3Vs ZCBiZSBzZXQgdG8gYGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKScgYXMK LSsgICBhIHBlcmZvcm1hbmNlIGhpbnQuICBGZWVsIGZyZWUgdG8gcGFzcyBOVUxMLiAgU2V0IEZV TExfU1BBTiB0byByZXR1cm4gdGhlCi0rICAgc2l6ZSBpbmNsLiB0aGUgcG9zc2libGUgcGFkZGlu ZyBvZiB0aGUgbGFzdCBlbGVtZW50IC0gaXQgbWF5IGRpZmZlciBmcm9tIHRoZQotKyAgIGNsZWFy ZWQgRlVMTF9TUEFOIHJldHVybiB2YWx1ZSAodGhlIGV4cGVjdGVkIFNJWkVPRikgZm9yIG5vbi16 ZXJvCi0rICAgVFlQRV9CWVRFX1NUUklERSB2YWx1ZXMuICAqLwotKwotK3N0YXRpYyBMT05HRVNU Ci0rdHlwZV9sZW5ndGhfZ2V0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKnRhcmdl dF90eXBlLCBpbnQgZnVsbF9zcGFuKQotK3sKLSsgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwot KyAgTE9OR0VTVCBieXRlX3N0cmlkZSA9IDA7CS8qIGA9IDAnIGZvciBhIGZhbHNlIEdDQyB3YXJu aW5nLiAgKi8KLSsgIExPTkdFU1QgY291bnQsIGVsZW1lbnRfc2l6ZSwgcmV0dmFsOwotKwotKyAg aWYgKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX0FSUkFZCi0rICAgICAgJiYgVFlQRV9D T0RFICh0eXBlKSAhPSBUWVBFX0NPREVfU1RSSU5HKQotKyAgICByZXR1cm4gVFlQRV9MRU5HVEgg KHR5cGUpOwotKwotKyAgLyogQXZvaWQgZXhlY3V0aW5nIFRZUEVfSElHSF9CT1VORCBmb3IgaW52 YWxpZCAodW5hbGxvY2F0ZWQvdW5hc3NvY2lhdGVkKQotKyAgICAgRm9ydHJhbiBhcnJheXMuICBU aGUgYWxsb2NhdGVkIGRhdGEgd2lsbCBuZXZlciBiZSB1c2VkIHNvIHRoZXkgY2FuIGJlCi0rICAg ICB6ZXJvLWxlbmd0aC4gICovCi0rICBpZiAob2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQg KHR5cGUpKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIHJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZ UEUgKHR5cGUpOwotKyAgaWYgKFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkK LSsgICAgICB8fCBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSkKLSsgICAg cmV0dXJuIDA7Ci0rICBjb3VudCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgLSBUWVBF X0xPV19CT1VORCAocmFuZ2VfdHlwZSkgKyAxOwotKyAgLyogSXQgbWF5IGhhcHBlbiBmb3Igd3Jv bmcgRFdBUkYgYW5ub3RhdGlvbnMgcmV0dXJuaW5nIGdhcmJhZ2UgZGF0YS4gICovCi0rICBpZiAo Y291bnQgPCAwKQotKyAgICB3YXJuaW5nIChfKCJSYW5nZSBmb3IgdHlwZSAlcyBoYXMgaW52YWxp ZCBib3VuZHMgJXMuLiVzIiksCi0rCSAgICAgVFlQRV9FUlJPUl9OQU1FICh0eXBlKSwgcGxvbmdl c3QgKFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSksCi0rCSAgICAgcGxvbmdlc3QgKFRZUEVf SElHSF9CT1VORCAocmFuZ2VfdHlwZSkpKTsKLSsgIC8qIFRoZSBjb2RlIGJlbG93IGRvZXMgbm90 IGhhbmRsZSBjb3VudCA9PSAwIHJpZ2h0LiAgKi8KLSsgIGlmIChjb3VudCA8PSAwKQotKyAgICBy ZXR1cm4gMDsKLSsgIGlmIChmdWxsX3NwYW4gfHwgY291bnQgPiAxKQotKyAgICB7Ci0rICAgICAg LyogV2UgZG8gbm90IHVzZSBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFICh0eXBlKSBoZXJl IGFzIHdlIHdhbnQgdG8KLSsgICAgICAgICBmb3JjZSBGVUxMX1NQQU4gdG8gMS4gICovCi0rICAg ICAgYnl0ZV9zdHJpZGUgPSBUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKTsKLSsgICAgICBp ZiAoYnl0ZV9zdHJpZGUgPT0gMCkKLSsgICAgICAgIHsKLSsJICBpZiAodGFyZ2V0X3R5cGUgPT0g TlVMTCkKLSsJICAgIHRhcmdldF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQ RSAodHlwZSkpOwotKwkgIGJ5dGVfc3RyaWRlID0gdHlwZV9sZW5ndGhfZ2V0ICh0YXJnZXRfdHlw ZSwgTlVMTCwgMSk7Ci0rCX0KLSsgICAgfQotKwotKyAgLyogRm9yIG5vdywgd2UgY29uc2VydmF0 aXZlbHkgdGFrZSB0aGUgYXJyYXkgbGVuZ3RoIHRvIGJlIDAgaWYgaXRzIGxlbmd0aAotKyAgICAg ZXhjZWVkcyBVSU5UX01BWC4gIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMgdGhhdCBmb3IgeCA8IDAs Ci0rICAgICAoVUxPTkdFU1QpIHggPT0gLXggKyBVTE9OR0VTVF9NQVggKyAxLCB3aGljaCBpcyB0 ZWNobmljYWxseSBub3QgZ3VhcmFudGVlZAotKyAgICAgYnkgQywgYnV0IGlzIHVzdWFsbHkgdHJ1 ZSAoYmVjYXVzZSBpdCB3b3VsZCBiZSB0cnVlIGlmIHggd2VyZSB1bnNpZ25lZAotKyAgICAgd2l0 aCBpdHMgaGlnaC1vcmRlciBiaXQgb24pLiBJdCB1c2VzIHRoZSBmYWN0IHRoYXQgaGlnaF9ib3Vu ZC1sb3dfYm91bmQgaXMKLSsgICAgIGFsd2F5cyByZXByZXNlbnRhYmxlIGluIFVMT05HRVNUIGFu ZCB0aGF0IGlmIGhpZ2hfYm91bmQtbG93X2JvdW5kKzEKLSsgICAgIG92ZXJmbG93cywgaXQgb3Zl cmZsb3dzIHRvIDAuICBXZSBtdXN0IGNoYW5nZSB0aGVzZSB0ZXN0cyBpZiB3ZSBkZWNpZGUgdG8K LSsgICAgIGluY3JlYXNlIHRoZSByZXByZXNlbnRhdGlvbiBvZiBUWVBFX0xFTkdUSCBmcm9tIHVu c2lnbmVkIGludCB0byBVTE9OR0VTVC4KLSsgICAgICovCi0rCi0rICBpZiAoZnVsbF9zcGFuKQot KyAgICB7Ci0rICAgICAgcmV0dmFsID0gY291bnQgKiBieXRlX3N0cmlkZTsKLSsgICAgICBpZiAo Y291bnQgPT0gMCB8fCByZXR2YWwgLyBjb3VudCAhPSBieXRlX3N0cmlkZSB8fCByZXR2YWwgPiBV SU5UX01BWCkKLSsJcmV0dmFsID0gMDsKLSsgICAgICByZXR1cm4gcmV0dmFsOwotKyAgICB9Ci0r ICBpZiAodGFyZ2V0X3R5cGUgPT0gTlVMTCkKLSsgICAgdGFyZ2V0X3R5cGUgPSBjaGVja190eXBl ZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0rICBlbGVtZW50X3NpemUgPSB0eXBlX2xl bmd0aF9nZXQgKHRhcmdldF90eXBlLCBOVUxMLCAxKTsKLSsgIHJldHZhbCA9IChjb3VudCAtIDEp ICogYnl0ZV9zdHJpZGUgKyBlbGVtZW50X3NpemU7Ci0rICBpZiAocmV0dmFsIDwgZWxlbWVudF9z aXplCi0rICAgICAgfHwgKGJ5dGVfc3RyaWRlICE9IDAKLSsgICAgICAgICAgJiYgKHJldHZhbCAt IGVsZW1lbnRfc2l6ZSkgLyBieXRlX3N0cmlkZSAhPSBjb3VudCAtIDEpCi0rICAgICAgfHwgcmV0 dmFsID4gVUlOVF9NQVgpCi0rICAgIHJldHZhbCA9IDA7Ci0rICByZXR1cm4gcmV0dmFsOwotK30K LSsKLSsvKiBQcmVwYXJlIFRZUEUgYWZ0ZXIgYmVpbmcgcmVhZCBpbiBieSB0aGUgYmFja2VuZC4g IEN1cnJlbnRseSB0aGlzIGZ1bmN0aW9uCi0rICAgb25seSBwcm9wYWdhdGVzIHRoZSBUWVBFX0RZ TkFNSUMgZmxhZy4gICovCi0rCi0rdm9pZAotK2ZpbmFsaXplX3R5cGUgKHN0cnVjdCB0eXBlICp0 eXBlKQotK3sKLSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IFRZUEVfTkZJRUxEUyAo dHlwZSk7ICsraSkKLSsgICAgaWYgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkgJiYgVFlQRV9E WU5BTUlDIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKSkKLSsgICAgICBicmVhazsKLSsKLSsg IC8qIEZJWE1FOiBjcGx1c19zdHVmZiBpcyBpZ25vcmVkIGhlcmUuICAqLwotKyAgaWYgKGkgPCBU WVBFX05GSUVMRFMgKHR5cGUpCi0rICAgICAgfHwgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSkg JiYgVFlQRV9EWU5BTUlDIChUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpKSkKLSsgICAgICB8fCAo VFlQRV9UQVJHRVRfVFlQRSAodHlwZSkgJiYgVFlQRV9EWU5BTUlDIChUWVBFX1RBUkdFVF9UWVBF ICh0eXBlKSkpKQotKyAgICBUWVBFX0RZTkFNSUMgKHR5cGUpID0gMTsKLSt9Ci0rCi0gLyogRmlu ZCB0aGUgcmVhbCB0eXBlIG9mIFRZUEUuICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlYWwg dHlwZSwKLSAgICBhZnRlciByZW1vdmluZyBhbGwgbGF5ZXJzIG9mIHR5cGVkZWZzLCBhbmQgY29t cGxldGluZyBvcGFxdWUgb3Igc3R1YgotICAgIHR5cGVzLiAgQ29tcGxldGlvbiBjaGFuZ2VzIHRo ZSBUWVBFIGFyZ3VtZW50LCBidXQgc3RyaXBwaW5nIG9mCi1AQCAtMTYzNCw1MiArMTc4OCwzNyBA QCBjaGVja190eXBlZGVmIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAgICAgICAgIH0KLSAgICAgfQot IAotLSAgaWYgKFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpKQotKyAgLyogY29weV90eXBlX3JlY3Vy c2l2ZSBhdXRvbWF0aWNhbGx5IG1ha2VzIHRoZSByZXN1bHRpbmcgdHlwZSBjb250YWluaW5nIG9u bHkKLSsgICAgIGNvbnN0YW50IHZhbHVlcyBleHBlY3RlZCBieSB0aGUgY2FsbGVycyBvZiB0aGlz IGZ1bmN0aW9uLiAgKi8KLSsgIGlmIChUWVBFX0RZTkFNSUMgKHR5cGUpKQotKyAgICB7Ci0rICAg ICAgaHRhYl90IGNvcGllZF90eXBlczsKLSsKLSsgICAgICBjb3BpZWRfdHlwZXMgPSBjcmVhdGVf Y29waWVkX3R5cGVzX2hhc2ggKE5VTEwpOwotKyAgICAgIHR5cGUgPSBjb3B5X3R5cGVfcmVjdXJz aXZlICh0eXBlLCBjb3BpZWRfdHlwZXMpOwotKyAgICAgIGh0YWJfZGVsZXRlIChjb3BpZWRfdHlw ZXMpOwotKwotKyAgICAgIGdkYl9hc3NlcnQgKFRZUEVfRFlOQU1JQyAodHlwZSkgPT0gMCk7Ci0r ICAgICAgLyogRm9yY2UgVFlQRV9MRU5HVEggKHR5cGUpIHJlY2FsY3VsYXRpb24uICAqLwotKyAg ICAgIFRZUEVfRFlOQU1JQyAodHlwZSkgPSAxOwotKyAgICB9Ci0rCi0rICBpZiAoVFlQRV9UQVJH RVRfU1RVQiAodHlwZSkgfHwgVFlQRV9EWU5BTUlDICh0eXBlKSkKLSAgICAgewotLSAgICAgIHN0 cnVjdCB0eXBlICpyYW5nZV90eXBlOwotICAgICAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZSA9 IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLSAKLSsgICAgICBpZiAo VFlQRV9EWU5BTUlDICh0eXBlKSkKLSsJVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkgPSB0YXJnZXRf dHlwZTsKLSAgICAgICBpZiAoVFlQRV9TVFVCICh0YXJnZXRfdHlwZSkgfHwgVFlQRV9UQVJHRVRf U1RVQiAodGFyZ2V0X3R5cGUpKQotIAl7Ci0gCSAgLyogTm90aGluZyB3ZSBjYW4gZG8uICAqLwot IAl9Ci0gICAgICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkK LS0JICAgICAgICYmIFRZUEVfTkZJRUxEUyAodHlwZSkgPT0gMQotLQkgICAgICAgJiYgKFRZUEVf Q09ERSAocmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSkpCi0tCQkgICA9PSBUWVBF X0NPREVfUkFOR0UpKQotKwkgICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVf U1RSSU5HKQotIAl7Ci0gCSAgLyogTm93IHJlY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJh eSB0eXBlLCBiYXNlZCBvbiBpdHMKLS0JICAgICBudW1iZXIgb2YgZWxlbWVudHMgYW5kIHRoZSB0 YXJnZXQgdHlwZSdzIGxlbmd0aC4KLS0JICAgICBXYXRjaCBvdXQgZm9yIEFkYSBudWxsIEFkYSBh cnJheXMgd2hlcmUgdGhlIGhpZ2ggYm91bmQKLS0JICAgICBpcyBzbWFsbGVyIHRoYW4gdGhlIGxv dyBib3VuZC4gICovCi0tCSAgY29uc3QgTE9OR0VTVCBsb3dfYm91bmQgPSBUWVBFX0xPV19CT1VO RCAocmFuZ2VfdHlwZSk7Ci0tCSAgY29uc3QgTE9OR0VTVCBoaWdoX2JvdW5kID0gVFlQRV9ISUdI X0JPVU5EIChyYW5nZV90eXBlKTsKLS0JICBVTE9OR0VTVCBsZW47Ci0tCi0tCSAgaWYgKGhpZ2hf Ym91bmQgPCBsb3dfYm91bmQpCi0tCSAgICBsZW4gPSAwOwotLQkgIGVsc2UKLS0JICAgIHsKLS0J ICAgICAgLyogRm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFrZSB0aGUgYXJyYXkgbGVuZ3Ro IHRvIGJlIDAKLS0JCSBpZiBpdHMgbGVuZ3RoIGV4Y2VlZHMgVUlOVF9NQVguICBUaGUgY29kZSBi ZWxvdyBhc3N1bWVzCi0tCQkgdGhhdCBmb3IgeCA8IDAsIChVTE9OR0VTVCkgeCA9PSAteCArIFVM T05HRVNUX01BWCArIDEsCi0tCQkgd2hpY2ggaXMgdGVjaG5pY2FsbHkgbm90IGd1YXJhbnRlZWQg YnkgQywgYnV0IGlzIHVzdWFsbHkgdHJ1ZQotLQkJIChiZWNhdXNlIGl0IHdvdWxkIGJlIHRydWUg aWYgeCB3ZXJlIHVuc2lnbmVkIHdpdGggaXRzCi0tCQkgaGlnaC1vcmRlciBiaXQgb24pLiAgSXQg dXNlcyB0aGUgZmFjdCB0aGF0Ci0tCQkgaGlnaF9ib3VuZC1sb3dfYm91bmQgaXMgYWx3YXlzIHJl cHJlc2VudGFibGUgaW4KLS0JCSBVTE9OR0VTVCBhbmQgdGhhdCBpZiBoaWdoX2JvdW5kLWxvd19i b3VuZCsxIG92ZXJmbG93cywKLS0JCSBpdCBvdmVyZmxvd3MgdG8gMC4gIFdlIG11c3QgY2hhbmdl IHRoZXNlIHRlc3RzIGlmIHdlIAotLQkJIGRlY2lkZSB0byBpbmNyZWFzZSB0aGUgcmVwcmVzZW50 YXRpb24gb2YgVFlQRV9MRU5HVEgKLS0JCSBmcm9tIHVuc2lnbmVkIGludCB0byBVTE9OR0VTVC4g ICovCi0tCSAgICAgIFVMT05HRVNUIHVsb3cgPSBsb3dfYm91bmQsIHVoaWdoID0gaGlnaF9ib3Vu ZDsKLS0JICAgICAgVUxPTkdFU1QgdGxlbiA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7Ci0t Ci0tCSAgICAgIGxlbiA9IHRsZW4gKiAodWhpZ2ggLSB1bG93ICsgMSk7Ci0tCSAgICAgIGlmICh0 bGVuID09IDAgfHwgKGxlbiAvIHRsZW4gLSAxICsgdWxvdykgIT0gdWhpZ2ggCi0tCQkgIHx8IGxl biA+IFVJTlRfTUFYKQotLQkJbGVuID0gMDsKLS0JICAgIH0KLS0JICBUWVBFX0xFTkdUSCAodHlw ZSkgPSBsZW47Ci0rCSAgICAgbnVtYmVyIG9mIGVsZW1lbnRzIGFuZCB0aGUgdGFyZ2V0IHR5cGUn cyBsZW5ndGguICAqLwotKwkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IHR5cGVfbGVuZ3RoX2dldCAo dHlwZSwgdGFyZ2V0X3R5cGUsIDApOwotIAkgIFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpID0gMDsK LSAJfQotICAgICAgIGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdF KQotQEAgLTE2ODcsNiArMTgyNiw3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBl KQotIAkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7Ci0g CSAgVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgPSAwOwotIAl9Ci0rICAgICAgVFlQRV9EWU5BTUlD ICh0eXBlKSA9IDA7Ci0gICAgIH0KLSAKLSAgIHR5cGUgPSBtYWtlX3F1YWxpZmllZF90eXBlICh0 eXBlLCBpbnN0YW5jZV9mbGFncywgTlVMTCk7Ci1AQCAtMzM0NSwzMyArMzQ4NSw0MiBAQCB0eXBl X3BhaXJfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKLSB9 Ci0gCi0gLyogQWxsb2NhdGUgdGhlIGhhc2ggdGFibGUgdXNlZCBieSBjb3B5X3R5cGVfcmVjdXJz aXZlIHRvIHdhbGsKLS0gICB0eXBlcyB3aXRob3V0IGR1cGxpY2F0ZXMuICBXZSB1c2UgT0JKRklM RSdzIG9ic3RhY2ssIGJlY2F1c2UKLS0gICBPQkpGSUxFIGlzIGFib3V0IHRvIGJlIGRlbGV0ZWQu ICAqLwotKyAgIHR5cGVzIHdpdGhvdXQgZHVwbGljYXRlcy4gICAqLwotIAotIGh0YWJfdAotIGNy ZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gewotLSAg cmV0dXJuIGh0YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWly X2VxLAotLQkJCSAgICAgICBOVUxMLCAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotLQkJCSAg ICAgICBoYXNodGFiX29ic3RhY2tfYWxsb2NhdGUsCi0tCQkJICAgICAgIGR1bW15X29ic3RhY2tf ZGVhbGxvY2F0ZSk7Ci0rICBpZiAob2JqZmlsZSA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgLyog TlVMTCBPQkpGSUxFIGlzIGZvciBUWVBFX0RZTkFNSUMgdHlwZXMgYWxyZWFkeSBjb250YWluZWQg aW4KLSsJIE9CSkZJTEVfTUFMTE9DIG1lbW9yeSwgc3VjaCBhcyB0aG9zZSBmcm9tIFZBTFVFX0hJ U1RPUllfQ0hBSU4uICBUYWJsZQotKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQgYnkg eG1hbGxvYyAtIHNvIHVzZSB4ZnJlZS4gICovCi0rICAgICAgcmV0dXJuIGh0YWJfY3JlYXRlICgx LCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLCB4ZnJlZSk7Ci0rICAgIH0KLSsgIGVsc2UK LSsgICAgewotKyAgICAgIC8qIFVzZSBPQkpGSUxFJ3Mgb2JzdGFjaywgYmVjYXVzZSBPQkpGSUxF IGlzIGFib3V0IHRvIGJlIGRlbGV0ZWQuICBUYWJsZQotKwkgZWxlbWVudCBlbnRyaWVzIGdldCBh bGxvY2F0ZWQgYnkgeG1hbGxvYyAtIHNvIHVzZSB4ZnJlZS4gICovCi0rICAgICAgcmV0dXJuIGh0 YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAotKwkJ CQkgICB4ZnJlZSwgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCQkJICAgaGFzaHRhYl9v YnN0YWNrX2FsbG9jYXRlLAotKwkJCQkgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOworKyAg ICAgIC8qIFVzZSBPQkpGSUxFJ3Mgb2JzdGFjaywgYmVjYXVzZSBPQkpGSUxFIGlzIGFib3V0IHRv IGJlIGRlbGV0ZWQuICBUYWJsZQorKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQgYnkg eG1hbGxvYyAtIHNvIHVzZSB4ZnJlZS4gICovCisrICAgICAgcmV0dXJuIGh0YWJfY3JlYXRlX2Fs bG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAorKwkJCQkgICB4ZnJlZSwg Jm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKysJCQkJICAgaGFzaHRhYl9vYnN0YWNrX2FsbG9j YXRlLAorKwkJCQkgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOwogKyAgICB9CiAgfQogIApA QCAtNjAyMyw3ICsyNzY3LDcgQEAgaW5kZXggODE0MmFiOS4uYTI5NTNjYyAxMDA2NDQKICAgICAg cmV0dXJuIHR5cGU7CiAgCiAgICAvKiBUaGlzIHR5cGUgc2hvdWxkbid0IGJlIHBvaW50aW5nIHRv IGFueSB0eXBlcyBpbiBvdGhlciBvYmpmaWxlczsKLUBAIC0zMzg2LDkgKzM1MzUsMTAgQEAgY29w eV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzQyOCw5ICsz NTcyLDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAog ICAgbmV3X3R5cGUgPSBhbGxvY190eXBlX2FyY2ggKGdldF90eXBlX2FyY2ggKHR5cGUpKTsKICAK ICAgIC8qIFdlIG11c3QgYWRkIHRoZSBuZXcgdHlwZSB0byB0aGUgaGFzaCB0YWJsZSBpbW1lZGlh dGVseSwgaW4gY2FzZQpAQCAtNjAzNyw3ICsyNzgxLDcgQEAgaW5kZXggODE0MmFiOS4uYTI5NTNj YyAxMDA2NDQKICAgIHN0b3JlZC0+b2xkID0gdHlwZTsKICAgIHN0b3JlZC0+bmV3ID0gbmV3X3R5 cGU7CiAgICAqc2xvdCA9IHN0b3JlZDsKLUBAIC0zMzk5LDYgKzM1NDksMjEgQEAgY29weV90eXBl X3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzQ0MSw2ICszNTg2LDIx IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgVFlQ RV9PQkpGSUxFX09XTkVEIChuZXdfdHlwZSkgPSAwOwogICAgVFlQRV9PV05FUiAobmV3X3R5cGUp LmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh0eXBlKTsKICAKQEAgLTYwNTksNyArMjgwMyw3IEBA IGluZGV4IDgxNDJhYjkuLmEyOTUzY2MgMTAwNjQ0CiAgICBpZiAoVFlQRV9OQU1FICh0eXBlKSkK ICAgICAgVFlQRV9OQU1FIChuZXdfdHlwZSkgPSB4c3RyZHVwIChUWVBFX05BTUUgKHR5cGUpKTsK ICAgIGlmIChUWVBFX1RBR19OQU1FICh0eXBlKSkKLUBAIC0zNDA3LDEyICszNTcyLDQ4IEBAIGNv cHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTM0NDksMTIg KzM2MDksNDggQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs CiAgICBUWVBFX0lOU1RBTkNFX0ZMQUdTIChuZXdfdHlwZSkgPSBUWVBFX0lOU1RBTkNFX0ZMQUdT ICh0eXBlKTsKICAgIFRZUEVfTEVOR1RIIChuZXdfdHlwZSkgPSBUWVBFX0xFTkdUSCAodHlwZSk7 CiAgCkBAIC02MTA4LDcgKzI4NTIsNyBAQCBpbmRleCA4MTQyYWI5Li5hMjk1M2NjIDEwMDY0NAog ICAgICAgIFRZUEVfRklFTERTIChuZXdfdHlwZSkgPSBYQ0FMTE9DIChuZmllbGRzLCBzdHJ1Y3Qg ZmllbGQpOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZmllbGRzOyBpKyspCiAgCXsKLUBAIC0z NDIxLDggKzM2MjIsOCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKK0BAIC0zNDYzLDggKzM2NTksOCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwKICAJICBUWVBFX0ZJRUxEX0JJVFNJWkUgKG5ld190eXBlLCBpKSA9 IFRZUEVfRklFTERfQklUU0laRSAodHlwZSwgaSk7CiAgCSAgaWYgKFRZUEVfRklFTERfVFlQRSAo dHlwZSwgaSkpCiAgCSAgICBUWVBFX0ZJRUxEX1RZUEUgKG5ld190eXBlLCBpKQpAQCAtNjExOSw3 ICsyODYzLDcgQEAgaW5kZXggODE0MmFiOS4uYTI5NTNjYyAxMDA2NDQKICAJICBpZiAoVFlQRV9G SUVMRF9OQU1FICh0eXBlLCBpKSkKICAJICAgIFRZUEVfRklFTERfTkFNRSAobmV3X3R5cGUsIGkp ID0gCiAgCSAgICAgIHhzdHJkdXAgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSkpOwotQEAgLTM0 NTMsMjQgKzM2NTQsMTg0IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAorQEAgLTM0OTUsMjQgKzM2OTEsMTg0IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAl9CiAgICAgIH0KICAKQEAgLTYzMTEsNyArMzA1NSw3 IEBAIGluZGV4IDgxNDJhYjkuLmEyOTUzY2MgMTAwNjQ0CiAgICAvKiBNYXliZSBjb3B5IHRoZSB0 eXBlX3NwZWNpZmljIGJpdHMuCiAgCiAgICAgICBOT1RFIGRyb3cvMjAwNS0xMi0wOTogV2UgZG8g bm90IGNvcHkgdGhlIEMrKy1zcGVjaWZpYyBiaXRzIGxpa2UKLUBAIC0zNDg3LDYgKzM4NDgsMTcg QEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzUy OSw2ICszODg1LDE3IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAogICAgcmV0dXJuIG5ld190eXBlOwogIH0KICAKQEAgLTYzMjksMjA5ICszMDczLDcgQEAg aW5kZXggODE0MmFiOS4uYTI5NTNjYyAxMDA2NDQKICAvKiBNYWtlIGEgY29weSBvZiB0aGUgZ2l2 ZW4gVFlQRSwgZXhjZXB0IHRoYXQgdGhlIHBvaW50ZXIgJiByZWZlcmVuY2UKICAgICB0eXBlcyBh cmUgbm90IHByZXNlcnZlZC4KICAgICAKLUBAIC0zNTA5LDYgKzM4ODEsMjAxIEBAIGNvcHlfdHlw ZSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpCi0gICByZXR1cm4gbmV3X3R5cGU7Ci0gfQotIAot KyNpZiAwCi0rLyogQ2FsbGJhY2sgdHlwZSBmb3IgbWFpbl90eXBlX2NyYXdsLiAgKi8KLSt0eXBl ZGVmIGludCAoKm1haW5fdHlwZV9jcmF3bF9pdGVyKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQg KmRhdGEpOwotKwotKy8qIEl0ZXJhdGUgYWxsIG1haW5fdHlwZSBzdHJ1Y3R1cmVzIHJlYWNoYWJs ZSB0aHJvdWdoIGFueSBgc3RydWN0IHR5cGUgKicgZnJvbQotKyAgIFRZUEUuICBJVEVSIHdpbGwg YmUgY2FsbGVkIG9ubHkgZm9yIG9uZSB0eXBlIG9mIGVhY2ggbWFpbl90eXBlLCB1c2UKLSsgICBU WVBFX0NIQUlOIHRyYXZlcnNhbCB0byBmaW5kIGFsbCB0aGUgdHlwZSBpbnN0YW5jZXMuICBJVEVS IGlzIGJlaW5nIGNhbGxlZAotKyAgIGZvciBlYWNoIG1haW5fdHlwZSBmb3VuZC4gIElURVIgcmV0 dXJucyBub24temVybyBpZiBtYWluX3R5cGVfY3Jhd2wgc2hvdWxkCi0rICAgZGVwdGgtZmlyc3Qg ZW50ZXIgdGhlIHNwZWNpZmljIHR5cGUuICBJVEVSIG11c3QgcHJvdmlkZSBzb21lIGRldGVjdGlv biBmb3IKLSsgICByZWVudGVyaW5nIHRoZSBzYW1lIG1haW5fdHlwZSBhcyB0aGlzIGZ1bmN0aW9u IHdvdWxkIG90aGVyd2lzZSBlbmRsZXNzbHkKLSsgICBsb29wLiAgKi8KLSsKLStzdGF0aWMgdm9p ZAotK21haW5fdHlwZV9jcmF3bCAoc3RydWN0IHR5cGUgKnR5cGUsIG1haW5fdHlwZV9jcmF3bF9p dGVyIGl0ZXIsIHZvaWQgKmRhdGEpCi0rewotKyAgc3RydWN0IHR5cGUgKnR5cGVfaXRlcjsKLSsg IGludCBpOwotKwotKyAgaWYgKCF0eXBlKQotKyAgICByZXR1cm47Ci0rCi0rICBnZGJfYXNzZXJ0 IChUWVBFX09CSkZJTEUgKHR5cGUpID09IE5VTEwpOwotKwotKyAgLyogYHN0cnVjdCBjcGx1c19z dHJ1Y3RfdHlwZScgaGFuZGxpbmcgaXMgdW5zdXBwb3J0ZWQgYnkgdGhpcyBmdW5jdGlvbi4gICov Ci0rICBnZGJfYXNzZXJ0ICgoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfU1RSVUNUCi0r CSAgICAgICAmJiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9VTklPTikKLSsJICAgICAg fHwgIUhBVkVfQ1BMVVNfU1RSVUNUICh0eXBlKSk7Ci0rCi0rICBpZiAoISgqaXRlcikgKHR5cGUs IGRhdGEpKQotKyAgICByZXR1cm47Ci0rCi0rICAvKiBJdGVyYXRlIGFsbCB0aGUgdHlwZSBpbnN0 YW5jZXMgb2YgdGhpcyBtYWluX3R5cGUuICAqLwotKyAgdHlwZV9pdGVyID0gdHlwZTsKLSsgIGRv Ci0rICAgIHsKLSsgICAgICBnZGJfYXNzZXJ0IChUWVBFX01BSU5fVFlQRSAodHlwZV9pdGVyKSA9 PSBUWVBFX01BSU5fVFlQRSAodHlwZSkpOwotKwotKyAgICAgIG1haW5fdHlwZV9jcmF3bCAoVFlQ RV9QT0lOVEVSX1RZUEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKLSsgICAgICBtYWluX3R5cGVfY3Jh d2wgKFRZUEVfUkVGRVJFTkNFX1RZUEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKLSsKLSsgICAgICB0 eXBlX2l0ZXIgPSBUWVBFX0NIQUlOICh0eXBlX2l0ZXIpOwotKyAgICB9Ci0rICB3aGlsZSAodHlw ZV9pdGVyICE9IHR5cGUpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IFRZUEVfTkZJRUxEUyAodHlw ZSk7IGkrKykKLSsgICAgbWFpbl90eXBlX2NyYXdsIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkp LCBpdGVyLCBkYXRhKTsKLSsKLSsgIG1haW5fdHlwZV9jcmF3bCAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSksIGl0ZXIsIGRhdGEpOwotKyAgbWFpbl90eXBlX2NyYXdsIChUWVBFX1ZQVFJfQkFTRVRZ UEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKLSt9Ci0rCi0rLyogQSBoZWxwZXIgZm9yIGRlbGV0ZV90 eXBlIHdoaWNoIGRlbGV0ZXMgYSBtYWluX3R5cGUgYW5kIHRoZSB0aGluZ3MgdG8gd2hpY2gKLSsg ICBpdCByZWZlcnMuICBUWVBFIGlzIGEgdHlwZSB3aG9zZSBtYWluX3R5cGUgd2Ugd2lzaCB0byBk ZXN0cm95LiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2RlbGV0ZV9tYWluX3R5cGUgKHN0cnVjdCB0 eXBlICp0eXBlKQotK3sKLSsgIGludCBpOwotKwotKyAgZ2RiX2Fzc2VydCAoVFlQRV9ESVNDQVJE QUJMRSAodHlwZSkpOwotKyAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxFICh0eXBlKSA9PSBOVUxM KTsKLSsKLSsgIHhmcmVlIChUWVBFX05BTUUgKHR5cGUpKTsKLSsgIHhmcmVlIChUWVBFX1RBR19O QU1FICh0eXBlKSk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9ORklFTERTICh0eXBlKTsg KytpKQotKyAgICB7Ci0rICAgICAgeGZyZWUgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSkpOwot KwotKyAgICAgIGlmIChUWVBFX0ZJRUxEX0xPQ19LSU5EICh0eXBlLCBpKSA9PSBGSUVMRF9MT0Nf S0lORF9QSFlTTkFNRSkKLSsJeGZyZWUgKFRZUEVfRklFTERfU1RBVElDX1BIWVNOQU1FICh0eXBl LCBpKSk7Ci0rICAgIH0KLSsgIHhmcmVlIChUWVBFX0ZJRUxEUyAodHlwZSkpOwotKwotKyAgZ2Ri X2Fzc2VydCAoIUhBVkVfQ1BMVVNfU1RSVUNUICh0eXBlKSk7Ci0rCi0rICB4ZnJlZSAoVFlQRV9N QUlOX1RZUEUgKHR5cGUpKTsKLSt9Ci0rCi0rLyogRGVsZXRlIGFsbCB0aGUgaW5zdGFuY2VzIG9u IFRZUEVfQ0hBSU4gb2YgVFlQRSwgaW5jbHVkaW5nIHRoZWlyIHJlZmVyZW5jZWQKLSsgICBtYWlu X3R5cGUuICBUWVBFIG11c3QgYmUgYSByZWNsYWltYWJsZSB0eXBlIC0gbmVpdGhlciBwZXJtYW5l bnQgbm9yIG9iamZpbGUKLSsgICBhc3NvY2lhdGVkLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2Rl bGV0ZV90eXBlX2NoYWluIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSt7Ci0rICBzdHJ1Y3QgdHlwZSAq dHlwZV9pdGVyLCAqdHlwZV9pdGVyX3RvX2ZyZWU7Ci0rCi0rICBnZGJfYXNzZXJ0IChUWVBFX0RJ U0NBUkRBQkxFICh0eXBlKSk7Ci0rICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUgKHR5cGUpID09 IE5VTEwpOwotKwotKyAgZGVsZXRlX21haW5fdHlwZSAodHlwZSk7Ci0rCi0rICB0eXBlX2l0ZXIg PSB0eXBlOwotKyAgZG8KLSsgICAgewotKyAgICAgIHR5cGVfaXRlcl90b19mcmVlID0gdHlwZV9p dGVyOwotKyAgICAgIHR5cGVfaXRlciA9IFRZUEVfQ0hBSU4gKHR5cGVfaXRlcik7Ci0rICAgICAg eGZyZWUgKHR5cGVfaXRlcl90b19mcmVlKTsKLSsgICAgfQotKyAgd2hpbGUgKHR5cGVfaXRlciAh PSB0eXBlKTsKLSt9Ci0rCi0rLyogSGFzaCBmdW5jdGlvbiBmb3IgdHlwZV9kaXNjYXJkYWJsZV90 YWJsZS4gICovCi0rCi0rc3RhdGljIGhhc2h2YWxfdAotK3R5cGVfZGlzY2FyZGFibGVfaGFzaCAo Y29uc3Qgdm9pZCAqcCkKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSA9IHA7Ci0rCi0r ICByZXR1cm4gaHRhYl9oYXNoX3BvaW50ZXIgKFRZUEVfTUFJTl9UWVBFICh0eXBlKSk7Ci0rfQot KwotKy8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLiAgKi8K LSsKLStzdGF0aWMgaW50Ci0rdHlwZV9kaXNjYXJkYWJsZV9lcXVhbCAoY29uc3Qgdm9pZCAqYSwg Y29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgdHlwZSAqbGVmdCA9IGE7Ci0rICBj b25zdCBzdHJ1Y3QgdHlwZSAqcmlnaHQgPSBiOwotKwotKyAgcmV0dXJuIFRZUEVfTUFJTl9UWVBF IChsZWZ0KSA9PSBUWVBFX01BSU5fVFlQRSAocmlnaHQpOwotK30KLSsKLSsvKiBBIGhlbHBlciBm b3IgdHlwZV9tYXJrX3VzZWQuICAqLwotKwotK3N0YXRpYyBpbnQKLSt0eXBlX21hcmtfdXNlZF9j cmF3bCAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKnVudXNlZCkKLSt7Ci0rICBpZiAoIVRZUEVf RElTQ0FSREFCTEUgKHR5cGUpKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmIChUWVBFX0RJU0NB UkRBQkxFX0FHRSAodHlwZSkgPT0gdHlwZV9kaXNjYXJkYWJsZV9hZ2VfY3VycmVudCkKLSsgICAg cmV0dXJuIDA7Ci0rCi0rICBUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPSB0eXBlX2Rpc2Nh cmRhYmxlX2FnZV9jdXJyZW50OwotKwotKyAgLyogQ29udGludWUgdGhlIHRyYXZlcnNhbC4gICov Ci0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogTWFyayBUWVBFIGFuZCBpdHMgY29ubmVjdGVkIHR5 cGVzIGFzIHVzZWQgaW4gdGhpcyBmcmVlX2FsbF90eXBlcyBwYXNzLiAgKi8KLSsKLSt2b2lkCi0r dHlwZV9tYXJrX3VzZWQgKHN0cnVjdCB0eXBlICp0eXBlKQotK3sKLSsgIGlmICh0eXBlID09IE5V TEwpCi0rICAgIHJldHVybjsKLSsKLSsgIGlmICghVFlQRV9ESVNDQVJEQUJMRSAodHlwZSkpCi0r ICAgIHJldHVybjsKLSsKLSsgIG1haW5fdHlwZV9jcmF3bCAodHlwZSwgdHlwZV9tYXJrX3VzZWRf Y3Jhd2wsIE5VTEwpOwotK30KLSsKLSsvKiBBIHRyYXZlcnNlIGNhbGxiYWNrIGZvciB0eXBlX2Rp c2NhcmRhYmxlX3RhYmxlIHdoaWNoIHJlbW92ZXMgYW55Ci0rICAgdHlwZV9kaXNjYXJkYWJsZSB3 aG9zZSByZWZlcmVuY2UgY291bnQgaXMgbm93IHplcm8gKHVudXNlZCBsaW5rKS4gICovCi0rCi0r c3RhdGljIGludAotK3R5cGVfZGlzY2FyZGFibGVfcmVtb3ZlICh2b2lkICoqc2xvdCwgdm9pZCAq dW51c2VkKQotK3sKLSsgIHN0cnVjdCB0eXBlICp0eXBlID0gKnNsb3Q7Ci0rCi0rICBnZGJfYXNz ZXJ0IChUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSk7Ci0rCi0rICBpZiAoVFlQRV9ESVNDQVJEQUJM RV9BR0UgKHR5cGUpICE9IHR5cGVfZGlzY2FyZGFibGVfYWdlX2N1cnJlbnQpCi0rICAgIHsKLSsg ICAgICBkZWxldGVfdHlwZV9jaGFpbiAodHlwZSk7Ci0rCi0rICAgICAgaHRhYl9jbGVhcl9zbG90 ICh0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLCBzbG90KTsKLSsgICAgfQotKwotKyAgcmV0dXJuIDE7 Ci0rfQotKwotKy8qIEZyZWUgYWxsIHRoZSByZWNsYWltYWJsZSB0eXBlcyB0aGF0IGhhdmUgYmVl biBhbGxvY2F0ZWQgYW5kIHRoYXQgaGF2ZQotKyAgIGN1cnJlbnRseSB6ZXJvIHJlZmVyZW5jZSBj b3VudGVyLgotKwotKyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIGVhY2ggY29tbWFu ZCwgc3VjY2Vzc2Z1bCBvciBub3QuICBVc2UgdGhpcwotKyAgIGNsZWFudXAgb25seSBpbiB0aGUg R0RCIGlkbGUgc3RhdGUgYXMgR0RCIG9ubHkgbWFya3MgdGhvc2UgdHlwZXMgdXNlZCBieQotKyAg IGdsb2JhbGx5IHRyYWNrZWQgb2JqZWN0cyAod2l0aCBubyBhdXRvdmFyaWFibGUgcmVmZXJlbmNl cyB0cmFja2luZykuICAqLwotKwotK3ZvaWQKLStmcmVlX2FsbF90eXBlcyAodm9pZCkKLSt7Ci0r ICAvKiBNYXJrIGEgbmV3IHBhc3MuICBBcyBHREIgY2hlY2tzIGFsbCB0aGUgZW50cmllcyB3ZXJl IHZpc2l0ZWQgYWZ0ZXIgZWFjaAotKyAgICAgcGFzcyB0aGVyZSBjYW5ub3QgYmUgYW55IHN0YWxl IGVudHJpZXMgYWxyZWFkeSBjb250YWluaW5nIHRoZSBjaGFuZ2VkCi0rICAgICB2YWx1ZS4gICov Ci0rICB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50IF49IDE7Ci0rCi0rICBvYnNlcnZlcl9u b3RpZnlfbWFya191c2VkICgpOwotKwotKyAgaHRhYl90cmF2ZXJzZSAodHlwZV9kaXNjYXJkYWJs ZV90YWJsZSwgdHlwZV9kaXNjYXJkYWJsZV9yZW1vdmUsIE5VTEwpOwotK30KLSsjZW5kaWYKLSAK LSAvKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGluaXRpYWxpemUgYXJjaGl0ZWN0dXJlLXNwZWNpZmlj IHR5cGVzLiAgKi8KLSAKLUBAIC00MDQyLDYgKzQ2MDksMTMgQEAgdm9pZAorQEAgLTQwOTMsNiAr NDQ2MCwxMyBAQCB2b2lkCiAgX2luaXRpYWxpemVfZ2RidHlwZXMgKHZvaWQpCiAgewogICAgZ2Ri dHlwZXNfZGF0YSA9IGdkYmFyY2hfZGF0YV9yZWdpc3Rlcl9wb3N0X2luaXQgKGdkYnR5cGVzX3Bv c3RfaW5pdCk7CkBAIC02NTQ0LDEyICszMDg2LDEyIEBAIGluZGV4IDgxNDJhYjkuLmEyOTUzY2Mg MTAwNjQ0CiArCiAgICBvYmpmaWxlX3R5cGVfZGF0YSA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YSAo KTsKICAKLSAgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2NtZCAoIm92ZXJsb2FkIiwgbm9fY2xhc3Ms ICZvdmVybG9hZF9kZWJ1ZywKKyAgIGFkZF9zZXRzaG93X3p1aW50ZWdlcl9jbWQgKCJvdmVybG9h ZCIsIG5vX2NsYXNzLCAmb3ZlcmxvYWRfZGVidWcsCiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVz LmggYi9nZGIvZ2RidHlwZXMuaAotaW5kZXggMTdiZmJjNS4uNzJlOWNjNSAxMDA2NDQKK2luZGV4 IDhiMzQwYTMuLmFlYTFjOTYgMTAwNjQ0CiAtLS0gYS9nZGIvZ2RidHlwZXMuaAogKysrIGIvZ2Ri L2dkYnR5cGVzLmgKLUBAIC0yMjgsNiArMjI4LDExIEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFn X3ZhbHVlCitAQCAtMjI2LDYgKzIyNiwxMSBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1 ZQogIAogICNkZWZpbmUgVFlQRV9UQVJHRVRfU1RVQih0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5m bGFnX3RhcmdldF9zdHViKQogIApAQCAtNjU2MSw3ICszMTAzLDcgQEAgaW5kZXggMTdiZmJjNS4u NzJlOWNjNSAxMDA2NDQKICAvKiBTdGF0aWMgdHlwZS4gIElmIHRoaXMgaXMgc2V0LCB0aGUgY29y cmVzcG9uZGluZyB0eXBlIGhhZCAKICAgICBhIHN0YXRpYyBtb2RpZmllci4KICAgICBOb3RlOiBU aGlzIG1heSBiZSB1bm5lY2Vzc2FyeSwgc2luY2Ugc3RhdGljIGRhdGEgbWVtYmVycwotQEAgLTMx MSw2ICszMTYsNTAgQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKK0BAIC0zMDksNiAr MzE0LDUwIEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCiAgCiAgI2RlZmluZSBUWVBF X0ZMQUdfRU5VTSh0KSAoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2ZsYWdfZW51bSkKICAKQEAg LTY2MTIsNyArMzE1NCw3IEBAIGluZGV4IDE3YmZiYzUuLjcyZTljYzUgMTAwNjQ0CiAgLyogQ29u c3RhbnQgdHlwZS4gIElmIHRoaXMgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyB0eXBlIGhhcyBh CiAgICAgY29uc3QgbW9kaWZpZXIuICAqLwogIAotQEAgLTQyMSw2ICs0NzAsMTUgQEAgc3RydWN0 IG1haW5fdHlwZQorQEAgLTQyNSw2ICs0NzQsMTUgQEAgc3RydWN0IG1haW5fdHlwZQogICAgLyog VHJ1ZSBpZiB0aGlzIHR5cGUgd2FzIGRlY2xhcmVkIHdpdGggImNsYXNzIiByYXRoZXIgdGhhbgog ICAgICAgInN0cnVjdCIuICAqLwogICAgdW5zaWduZWQgaW50IGZsYWdfZGVjbGFyZWRfY2xhc3Mg OiAxOwpAQCAtNjYyOCw3ICszMTcwLDcgQEAgaW5kZXggMTdiZmJjNS4uNzJlOWNjNSAxMDA2NDQK ICAKICAgIC8qIFRydWUgaWYgdGhpcyBpcyBhbiBlbnVtIHR5cGUgd2l0aCBkaXNqb2ludCB2YWx1 ZXMuICBUaGlzIGFmZmVjdHMKICAgICAgIGhvdyB0aGUgZW51bSBpcyBwcmludGVkLiAgKi8KLUBA IC01MDEsNiArNTU5LDIwIEBAIHN0cnVjdCBtYWluX3R5cGUKK0BAIC01MDUsNiArNTYzLDIwIEBA IHN0cnVjdCBtYWluX3R5cGUKICAKICAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZTsKICAKQEAg LTY2NDksNyArMzE5MSw3IEBAIGluZGV4IDE3YmZiYzUuLjcyZTljYzUgMTAwNjQ0CiAgICAvKiBG b3Igc3RydWN0dXJlIGFuZCB1bmlvbiB0eXBlcywgYSBkZXNjcmlwdGlvbiBvZiBlYWNoIGZpZWxk LgogICAgICAgRm9yIHNldCBhbmQgcGFzY2FsIGFycmF5IHR5cGVzLCB0aGVyZSBpcyBvbmUgImZp ZWxkIiwKICAgICAgIHdob3NlIHR5cGUgaXMgdGhlIGRvbWFpbiB0eXBlIG9mIHRoZSBzZXQgb3Ig YXJyYXkuCi1AQCAtNTgzLDEzICs2NTUsMzQgQEAgc3RydWN0IG1haW5fdHlwZQorQEAgLTU4Nywx MyArNjU5LDM0IEBAIHN0cnVjdCBtYWluX3R5cGUKICAKICAgICAgc3RydWN0IHJhbmdlX2JvdW5k cwogICAgICB7CkBAIC02Njg5LDcgKzMyMzEsNyBAQCBpbmRleCAxN2JmYmM1Li43MmU5Y2M1IDEw MDY0NAogIAogICAgICAgIC8qIEZsYWdzIGluZGljYXRpbmcgd2hldGhlciB0aGUgdmFsdWVzIG9m IGxvdyBhbmQgaGlnaCBhcmUKICAgICAgICAgICB2YWxpZC4gIFdoZW4gdHJ1ZSwgdGhlIHJlc3Bl Y3RpdmUgcmFuZ2UgdmFsdWUgaXMKLUBAIC0xMDU0LDkgKzExNDcsOSBAQCBleHRlcm4gdm9pZCBh bGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC0xMDUzLDkgKzExNDYs OSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsK ICAjZGVmaW5lIFRZUEVfUE9JTlRFUl9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5wb2ludGVy X3R5cGUKICAjZGVmaW5lIFRZUEVfUkVGRVJFTkNFX1RZUEUodGhpc3R5cGUpICh0aGlzdHlwZSkt PnJlZmVyZW5jZV90eXBlCiAgI2RlZmluZSBUWVBFX0NIQUlOKHRoaXN0eXBlKSAodGhpc3R5cGUp LT5jaGFpbgpAQCAtNjcwMiw3ICszMjQ0LDcgQEAgaW5kZXggMTdiZmJjNS4uNzJlOWNjNSAxMDA2 NDQKICAgICBjYWxscyBjaGVja190eXBlZGVmLCBUWVBFX0xFTkdUSCAoVkFMVUVfVFlQRSAoWCkp IGlzIHNhZmUuICAqLwogICNkZWZpbmUgVFlQRV9MRU5HVEgodGhpc3R5cGUpICh0aGlzdHlwZSkt Pmxlbmd0aAogIC8qIE5vdGUgdGhhdCBUWVBFX0NPREUgY2FuIGJlIFRZUEVfQ09ERV9UWVBFREVG LCBzbyBpZiB5b3Ugd2FudCB0aGUgcmVhbAotQEAgLTEwNjQsMTEgKzExNTcsMTYgQEAgZXh0ZXJu IHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CitAQCAtMTA2Mywx MSArMTE1NiwxNiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3Qg dHlwZSAqKTsKICAjZGVmaW5lIFRZUEVfQ09ERSh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhp c3R5cGUpLT5jb2RlCiAgI2RlZmluZSBUWVBFX05GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9U WVBFKHRoaXN0eXBlKS0+bmZpZWxkcwogICNkZWZpbmUgVFlQRV9GSUVMRFModGhpc3R5cGUpIFRZ UEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+Zmxkc19ibmRzLmZpZWxkcwpAQCAtNjcyMSw3ICszMjYz LDcgQEAgaW5kZXggMTdiZmJjNS4uNzJlOWNjNSAxMDA2NDQKICAjZGVmaW5lIFRZUEVfTE9XX0JP VU5EX1VOREVGSU5FRChyYW5nZV90eXBlKSBcCiAgICAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5 cGUpLT5sb3dfdW5kZWZpbmVkCiAgI2RlZmluZSBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEKHJh bmdlX3R5cGUpIFwKLUBAIC0xMDg1LDcgKzExODMsMTQgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVf Z25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CitAQCAtMTA4NCw3ICsxMTgyLDE0IEBAIGV4 dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwogICAgIChU WVBFX0hJR0hfQk9VTkQoVFlQRV9JTkRFWF9UWVBFKChhcnJheXR5cGUpKSkpCiAgCiAgI2RlZmlu ZSBUWVBFX0FSUkFZX0xPV0VSX0JPVU5EX1ZBTFVFKGFycmF5dHlwZSkgXApAQCAtNjczNyw5ICsz Mjc5LDkgQEAgaW5kZXggMTdiZmJjNS4uNzJlOWNjNSAxMDA2NDQKICAKICAvKiBDKysgKi8KICAK LUBAIC0xNTMxLDYgKzE2MzYsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlf dHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKK0BAIC0xNTI5LDYgKzE2MzQsMTgg QEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwg c3RydWN0IHR5cGUgKiwKICAJCQkJICAgICAgIHN0cnVjdCB0eXBlICopOwotIGV4dGVybiBzdHJ1 Y3QgdHlwZSAqbG9va3VwX2FycmF5X3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50 KTsKKyBleHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9hcnJheV9yYW5nZV90eXBlIChzdHJ1Y3Qg dHlwZSAqLCBMT05HRVNULCBMT05HRVNUKTsKICAKICtleHRlcm4gQ09SRV9BRERSIHR5cGVfcmFu Z2VfYW55X2ZpZWxkX2ludGVybmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwKICsJCQkJCQlp bnQgZmllbGRubyk7CkBAIC02NzU1LDggKzMyOTcsOCBAQCBpbmRleCAxN2JmYmM1Li43MmU5Y2M1 IDEwMDY0NAogKwogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX3N0cmluZ190eXBlIChzdHJ1 Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAogIAkJCQkJc3RydWN0IHR5cGUgKik7Ci0gZXh0ZXJu IHN0cnVjdCB0eXBlICpsb29rdXBfc3RyaW5nX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGlu dCwgaW50KTsKLUBAIC0xNTc2LDYgKzE2OTMsMTAgQEAgZXh0ZXJuIGludCBpc19wdWJsaWNfYW5j ZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICopOworIGV4dGVybiBzdHJ1Y3QgdHlw ZSAqbG9va3VwX3N0cmluZ19yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBMT05HRVNULCBMT05H RVNUKTsKK0BAIC0xNTc0LDYgKzE2OTEsMTAgQEAgZXh0ZXJuIGludCBpc19wdWJsaWNfYW5jZXN0 b3IgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICopOwogIAogIGV4dGVybiBpbnQgaXNfdW5p cXVlX2FuY2VzdG9yIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdmFsdWUgKik7CiAgCkBAIC02NzY3 LDcgKzMzMDksNyBAQCBpbmRleCAxN2JmYmM1Li43MmU5Y2M1IDEwMDY0NAogIC8qIE92ZXJsb2Fk IHJlc29sdXRpb24gKi8KICAKICAjZGVmaW5lIExFTkdUSF9NQVRDSChidikgKChidiktPnJhbmtb MF0pCi1AQCAtMTY1MSwxMCArMTc3MiwxMyBAQCBleHRlcm4gdm9pZCBtYWludGVuYW5jZV9wcmlu dF90eXBlIChjaGFyICosIGludCk7CitAQCAtMTY1Miw4ICsxNzczLDcgQEAgZXh0ZXJuIHZvaWQg bWFpbnRlbmFuY2VfcHJpbnRfdHlwZSAoY2hhciAqLCBpbnQpOwogIAogIGV4dGVybiBodGFiX3Qg Y3JlYXRlX2NvcGllZF90eXBlc19oYXNoIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CiAgCkBA IC02Nzc3LDMzMiArMzMxOSw4IEBAIGluZGV4IDE3YmZiYzUuLjcyZTljYzUgMTAwNjQ0CiAgCQkJ CQkgaHRhYl90IGNvcGllZF90eXBlcyk7CiAgCiAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjb3B5X3R5 cGUgKGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKTsKLSAKLSsjaWYgMAotK2V4dGVybiB2b2lkIGZy ZWVfYWxsX3R5cGVzICh2b2lkKTsKLSsjZW5kaWYKLSsKLSAjZW5kaWYgLyogR0RCVFlQRVNfSCAq LwotZGlmZiAtLWdpdCBhL2dkYi9qaXQuYyBiL2dkYi9qaXQuYwotaW5kZXggNTY4ZDE3Yi4uY2Rk OWY0OSAxMDA2NDQKLS0tLSBhL2dkYi9qaXQuYwotKysrIGIvZ2RiL2ppdC5jCi1AQCAtMzgsNiAr MzgsNyBAQAotICNpbmNsdWRlICJnZGItZGxmY24uaCIKLSAjaW5jbHVkZSAiZ2RiX3N0YXQuaCIK LSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0gCi0gc3Rh dGljIGNvbnN0IGNoYXIgKmppdF9yZWFkZXJfZGlyID0gTlVMTDsKLSAKLUBAIC0xMzIsMTcgKzEz MywxNiBAQCBtZW1fYmZkX2lvdmVjX3N0YXQgKHN0cnVjdCBiZmQgKmFiZmQsIHZvaWQgKnN0cmVh bSwgc3RydWN0IHN0YXQgKnNiKQotIHN0YXRpYyBzdHJ1Y3QgYmZkICoKLSBiZmRfb3Blbl9mcm9t X3RhcmdldF9tZW1vcnkgKENPUkVfQUREUiBhZGRyLCBVTE9OR0VTVCBzaXplLCBjaGFyICp0YXJn ZXQpCi0gewotLSAgY29uc3QgY2hhciAqZmlsZW5hbWUgPSB4c3RyZHVwICgiPGluLW1lbW9yeT4i KTsKLSAgIHN0cnVjdCB0YXJnZXRfYnVmZmVyICpidWZmZXIgPSB4bWFsbG9jIChzaXplb2YgKHN0 cnVjdCB0YXJnZXRfYnVmZmVyKSk7Ci0gCi0gICBidWZmZXItPmJhc2UgPSBhZGRyOwotICAgYnVm ZmVyLT5zaXplID0gc2l6ZTsKLS0gIHJldHVybiBiZmRfb3BlbnJfaW92ZWMgKGZpbGVuYW1lLCB0 YXJnZXQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1fYmZkX2lvdmVjX29wZW4sCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICBtZW1fYmZkX2lvdmVjX3ByZWFkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgbWVt X2JmZF9pb3ZlY19jbG9zZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIG1lbV9iZmRfaW92 ZWNfc3RhdCk7Ci0rICByZXR1cm4gZ2RiX2JmZF9vcGVucl9pb3ZlYyAoIjxpbi1tZW1vcnk+Iiwg dGFyZ2V0LAotKwkJCSAgICAgIG1lbV9iZmRfaW92ZWNfb3BlbiwKLSsJCQkgICAgICBidWZmZXIs Ci0rCQkJICAgICAgbWVtX2JmZF9pb3ZlY19wcmVhZCwKLSsJCQkgICAgICBtZW1fYmZkX2lvdmVj X2Nsb3NlLAotKwkJCSAgICAgIG1lbV9iZmRfaW92ZWNfc3RhdCk7Ci0gfQotIAotIC8qIE9uZSBy ZWFkZXIgdGhhdCBoYXMgYmVlbiBsb2FkZWQgc3VjY2Vzc2Z1bGx5LCBhbmQgY2FuIHBvdGVudGlh bGx5IGJlIHVzZWQgdG8KLUBAIC04NjgsNyArODY4LDcgQEAgaml0X2JmZF90cnlfcmVhZF9zeW10 YWIgKHN0cnVjdCBqaXRfY29kZV9lbnRyeSAqY29kZV9lbnRyeSwKLSAgICAgewotICAgICAgIHBy aW50Zl91bmZpbHRlcmVkIChfKCJcCi0gSklUZWQgc3ltYm9sIGZpbGUgaXMgbm90IGFuIG9iamVj dCBmaWxlLCBpZ25vcmluZyBpdC5cbiIpKTsKLS0gICAgICBiZmRfY2xvc2UgKG5iZmQpOwotKyAg ICAgIGdkYl9iZmRfdW5yZWYgKG5iZmQpOwotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotQEAg LTg5Niw3ICs4OTYsOCBAQCBKSVRlZCBzeW1ib2wgZmlsZSBpcyBub3QgYW4gb2JqZWN0IGZpbGUs IGlnbm9yaW5nIGl0LlxuIikpOwotICAgICAgICAgKytpOwotICAgICAgIH0KLSAKLS0gIC8qIFRo aXMgY2FsbCB0YWtlcyBvd25lcnNoaXAgb2YgTkJGRC4gIEl0IGRvZXMgbm90IHRha2Ugb3duZXJz aGlwIG9mIFNBSS4gICovCi0rICAvKiBUaGlzIGNhbGwgZG9lcyBub3QgdGFrZSBvd25lcnNoaXAg b2YgU0FJLiAgKi8KLSsgIG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKG5iZmQpOwotICAgb2JqZmls ZSA9IHN5bWJvbF9maWxlX2FkZF9mcm9tX2JmZCAobmJmZCwgMCwgc2FpLCBPQkpGX1NIQVJFRCwg TlVMTCk7Ci0gCi0gICBkb19jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKLWRpZmYgLS1naXQgYS9n ZGIvbTMyci1yb20uYyBiL2dkYi9tMzJyLXJvbS5jCi1pbmRleCA3NmU0YmYxLi45YTJmNWFhIDEw MDY0NAotLS0tIGEvZ2RiL20zMnItcm9tLmMKLSsrKyBiL2dkYi9tMzJyLXJvbS5jCi1AQCAtNDAs NiArNDAsNyBAQAotICNpbmNsdWRlICJpbmZlcmlvci5oIgotICNpbmNsdWRlIDxjdHlwZS5oPgot ICNpbmNsdWRlICJyZWdjYWNoZS5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0gCi0gLyoKLSAg KiBBbGwgdGhpcyBzdHVmZiBqdXN0IHRvIGdldCBteSBob3N0IGNvbXB1dGVyJ3MgSVAgYWRkcmVz cyEKLUBAIC0xMjQsMTMgKzEyNSwxNSBAQCBtMzJyX2xvYWQgKGNoYXIgKmZpbGVuYW1lLCBpbnQg ZnJvbV90dHkpCi0gICBiZmQgKmFiZmQ7Ci0gICB1bnNpZ25lZCBpbnQgZGF0YV9jb3VudCA9IDA7 Ci0gICBzdHJ1Y3QgdGltZXZhbCBzdGFydF90aW1lLCBlbmRfdGltZTsKLSsgIHN0cnVjdCBjbGVh bnVwICpjbGVhbnVwOwotIAotICAgaWYgKGZpbGVuYW1lID09IE5VTEwgfHwgZmlsZW5hbWVbMF0g PT0gMCkKLSAgICAgZmlsZW5hbWUgPSBnZXRfZXhlY19maWxlICgxKTsKLSAKLS0gIGFiZmQgPSBi ZmRfb3BlbnIgKGZpbGVuYW1lLCAwKTsKLSsgIGFiZmQgPSBnZGJfYmZkX29wZW5yIChmaWxlbmFt ZSwgMCk7Ci0gICBpZiAoIWFiZmQpCi0gICAgIGVycm9yIChfKCJVbmFibGUgdG8gb3BlbiBmaWxl ICVzLiIpLCBmaWxlbmFtZSk7Ci0rICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAo YWJmZCk7Ci0gICBpZiAoYmZkX2NoZWNrX2Zvcm1hdCAoYWJmZCwgYmZkX29iamVjdCkgPT0gMCkK LSAgICAgZXJyb3IgKF8oIkZpbGUgaXMgbm90IGFuIG9iamVjdCBmaWxlLiIpKTsKLSAgIGdldHRp bWVvZmRheSAoJnN0YXJ0X3RpbWUsIE5VTEwpOwotQEAgLTE4OCw2ICsxOTEsNyBAQCBtMzJyX2xv YWQgKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCi0gICAgICBjb25mdXNlZC4uLiAgKi8K LSAKLSAgIGNsZWFyX3N5bXRhYl91c2VycyAoMCk7Ci0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7 Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtNDM0LDYgKzQzOCw3IEBAIG0zMnJfdXBsb2FkX2Nv bW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSAgIGNoYXIgYnVmWzEwMjRdOwotICAg c3RydWN0IGhvc3RlbnQgKmhvc3RlbnQ7Ci0gICBzdHJ1Y3QgaW5fYWRkciBpbmV0X2FkZHI7Ci0r ICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKLSAKLSAgIC8qIEZpcnN0IGNoZWNrIHRvIHNlZSBp ZiB0aGVyZSdzIGFuIGV0aGVybmV0IHBvcnQhICAqLwotICAgbW9uaXRvcl9wcmludGYgKCJ1c3Rc ciIpOwotQEAgLTUyNCw3ICs1MjksOCBAQCBtMzJyX3VwbG9hZF9jb21tYW5kIChjaGFyICphcmdz LCBpbnQgZnJvbV90dHkpCi0gICAgIHByaW50Zl9maWx0ZXJlZCAoIiAtLSBFdGhlcm5ldCBsb2Fk IGNvbXBsZXRlLlxuIik7Ci0gCi0gICBnZXR0aW1lb2ZkYXkgKCZlbmRfdGltZSwgTlVMTCk7Ci0t ICBhYmZkID0gYmZkX29wZW5yIChhcmdzLCAwKTsKLSsgIGFiZmQgPSBnZGJfYmZkX29wZW5yIChh cmdzLCAwKTsKLSsgIGNsZWFudXAgPSBtYWtlX2NsZWFudXBfYmZkX3VucmVmIChhYmZkKTsKLSAg IGlmIChhYmZkICE9IE5VTEwpCi0gICAgIHsJCS8qIERvd25sb2FkIGlzIGRvbmUgLS0gcHJpbnQg c2VjdGlvbiBzdGF0aXN0aWNzLiAgKi8KLSAgICAgICBpZiAoYmZkX2NoZWNrX2Zvcm1hdCAoYWJm ZCwgYmZkX29iamVjdCkgPT0gMCkKLUBAIC01NjUsNiArNTcxLDcgQEAgbTMycl91cGxvYWRfY29t bWFuZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotICAgICAgY29uZnVzZWQuLi4gICovCi0g Ci0gICBjbGVhcl9zeW10YWJfdXNlcnMgKDApOwotKyAgZG9fY2xlYW51cHMgKGNsZWFudXApOwot IH0KLSAKLSAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3Rv dHlwZXMuICAqLwotZGlmZiAtLWdpdCBhL2dkYi9tYWNob3JlYWQuYyBiL2dkYi9tYWNob3JlYWQu YwotaW5kZXggMjI1MzBhYi4uMGQ3NTc4YSAxMDA2NDQKLS0tLSBhL2dkYi9tYWNob3JlYWQuYwot KysrIGIvZ2RiL21hY2hvcmVhZC5jCi1AQCAtNDU0LDYgKzQ1NCw3IEBAIG1hY2hvX2FkZF9vc29f c3ltZmlsZSAob3NvX2VsICpvc28sIGJmZCAqYWJmZCwKLSAgIGFzeW1ib2wgKipzeW1wOwotICAg c3RydWN0IGJmZF9oYXNoX3RhYmxlIHRhYmxlOwotICAgaW50IG5icl9zZWN0aW9uczsKLSsgIHN0 cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotIAotICAgLyogUGVyIHNlY3Rpb24gZmxhZyB0byBtYXJr IHdoaWNoIHNlY3Rpb24gaGF2ZSBiZWVuIHJlYmFzZWQuICAqLwotICAgdW5zaWduZWQgY2hhciAq c2VjdGlvbnNfcmViYXNlZDsKLUBAIC00NjYsMTQgKzQ2NywxNCBAQCBtYWNob19hZGRfb3NvX3N5 bWZpbGUgKG9zb19lbCAqb3NvLCBiZmQgKmFiZmQsCi0gICAgIHsKLSAgICAgICB3YXJuaW5nIChf KCJgJXMnOiBjYW4ndCByZWFkIHN5bWJvbHM6ICVzLiIpLCBvc28tPm5hbWUsCi0gICAgICAgICAg ICAgICAgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOwotLSAgICAgIGJmZF9jbG9zZSAo YWJmZCk7Ci0rICAgICAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7Ci0gICAgICAgcmV0dXJuOwotICAg ICB9Ci0gCi0gICBpZiAoYWJmZC0+bXlfYXJjaGl2ZSA9PSBOVUxMICYmIG9zby0+bXRpbWUgIT0g YmZkX2dldF9tdGltZSAoYWJmZCkpCi0gICAgIHsKLSAgICAgICB3YXJuaW5nIChfKCJgJXMnOiBm aWxlIHRpbWUgc3RhbXAgbWlzbWF0Y2guIiksIG9zby0+bmFtZSk7Ci0tICAgICAgYmZkX2Nsb3Nl IChhYmZkKTsKLSsgICAgICBnZGJfYmZkX3VucmVmIChhYmZkKTsKLSAgICAgICByZXR1cm47Ci0g ICAgIH0KLSAKLUBAIC00ODIsNyArNDgzLDcgQEAgbWFjaG9fYWRkX29zb19zeW1maWxlIChvc29f ZWwgKm9zbywgYmZkICphYmZkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zby0+ bmJyX3N5bXMpKQotICAgICB7Ci0gICAgICAgd2FybmluZyAoXygiYCVzJzogY2FuJ3QgY3JlYXRl IGhhc2ggdGFibGUiKSwgb3NvLT5uYW1lKTsKLS0gICAgICBiZmRfY2xvc2UgKGFiZmQpOwotKyAg ICAgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOwotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotQEAg LTYyOSwxOCArNjMwLDE1IEBAIG1hY2hvX2FkZF9vc29fc3ltZmlsZSAob3NvX2VsICpvc28sIGJm ZCAqYWJmZCwKLSAKLSAgIGJmZF9oYXNoX3RhYmxlX2ZyZWUgKCZ0YWJsZSk7Ci0gCi0tICAvKiBN YWtlIHN1cmUgdGhhdCB0aGUgZmlsZW5hbWUgd2FzIG1hbGxvYydlZC4gIFRoZSBjdXJyZW50IGZp bGVuYW1lIGNvbWVzCi0tICAgICBlaXRoZXIgZnJvbSBhbiBPU08gc3ltYm9sIG5hbWUgb3IgZnJv bSBhbiBhcmNoaXZlIG5hbWUuICBNZW1vcnkgZm9yIGJvdGgKLS0gICAgIGlzIG5vdCBtYW5hZ2Vk IGJ5IGdkYi4gICovCi0tICBhYmZkLT5maWxlbmFtZSA9IHhzdHJkdXAgKGFiZmQtPmZpbGVuYW1l KTsKLS0KLSAgIC8qIFdlIG5lZWQgdG8gY2xlYXIgU1lNRklMRV9NQUlOTElORSB0byBhdm9pZCBp bnRlcnJhY3RpdmUgcXVlc3Rpb24KLSAgICAgIGZyb20gc3ltZmlsZS5jOnN5bWJvbF9maWxlX2Fk ZF93aXRoX2FkZHJzX29yX29mZnNldHMuICAqLwotKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cF9i ZmRfdW5yZWYgKGFiZmQpOwotICAgc3ltYm9sX2ZpbGVfYWRkX2Zyb21fYmZkCi0gICAgIChhYmZk LCBzeW1maWxlX2ZsYWdzICYgfihTWU1GSUxFX01BSU5MSU5FIHwgU1lNRklMRV9WRVJCT1NFKSwg TlVMTCwKLSAgICAgIG1haW5fb2JqZmlsZS0+ZmxhZ3MgJiAoT0JKRl9SRU9SREVSRUQgfCBPQkpG X1NIQVJFRAotIAkJCSAgICB8IE9CSkZfUkVBRE5PVyB8IE9CSkZfVVNFUkxPQURFRCksCi0gICAg ICBtYWluX29iamZpbGUpOwotKyAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotIH0KLSAKLSAvKiBS ZWFkIHN5bWJvbHMgZnJvbSB0aGUgdmVjdG9yIG9mIG9zbyBmaWxlcy4gICovCi1AQCAtNjUxLDYg KzY0OSw3IEBAIG1hY2hvX3N5bWZpbGVfcmVhZF9hbGxfb3NvIChzdHJ1Y3Qgb2JqZmlsZSAqbWFp bl9vYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKLSAgIGludCBpeDsKLSAgIFZFQyAob3NvX2Vs KSAqdmVjOwotICAgb3NvX2VsICpvc287Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cCA9IG1h a2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsKLSAKLSAgIHZlYyA9IG9zb192ZWN0b3I7 Ci0gICBvc29fdmVjdG9yID0gTlVMTDsKLUBAIC02NzcsNiArNjc2LDggQEAgbWFjaG9fc3ltZmls ZV9yZWFkX2FsbF9vc28gKHN0cnVjdCBvYmpmaWxlICptYWluX29iamZpbGUsIGludCBzeW1maWxl X2ZsYWdzKQotIAkgIG1lbWNweSAoYXJjaGl2ZV9uYW1lLCBvc28tPm5hbWUsIHBmeF9sZW4pOwot IAkgIGFyY2hpdmVfbmFtZVtwZnhfbGVuXSA9ICdcMCc7Ci0gCi0rCSAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgYXJjaGl2ZV9uYW1lKTsKLSsKLSAgICAgICAgICAgLyogQ29tcHV0ZSBudW1iZXIgb2Yg b3NvIGZvciB0aGlzIGFyY2hpdmUuICAqLwotICAgICAgICAgICBmb3IgKGxhc3RfaXggPSBpeDsK LSAgICAgICAgICAgICAgICBWRUNfaXRlcmF0ZSAob3NvX2VsLCB2ZWMsIGxhc3RfaXgsIG9zbzIp OyBsYXN0X2l4KyspCi1AQCAtNjg2LDcgKzY4Nyw3IEBAIG1hY2hvX3N5bWZpbGVfcmVhZF9hbGxf b3NvIChzdHJ1Y3Qgb2JqZmlsZSAqbWFpbl9vYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKLSAg ICAgICAgICAgICB9Ci0gCi0gCSAgLyogT3BlbiB0aGUgYXJjaGl2ZSBhbmQgY2hlY2sgdGhlIGZv cm1hdC4gICovCi0tCSAgYXJjaGl2ZV9iZmQgPSBiZmRfb3BlbnIgKGFyY2hpdmVfbmFtZSwgZ251 dGFyZ2V0KTsKLSsJICBhcmNoaXZlX2JmZCA9IGdkYl9iZmRfb3BlbnIgKGFyY2hpdmVfbmFtZSwg Z251dGFyZ2V0KTsKLSAJICBpZiAoYXJjaGl2ZV9iZmQgPT0gTlVMTCkKLSAJICAgIHsKLSAJICAg ICAgd2FybmluZyAoXygiQ291bGQgbm90IG9wZW4gT1NPIGFyY2hpdmUgZmlsZSBcIiVzXCIiKSwK LUBAIC02OTgsMTcgKzY5OSwxOCBAQCBtYWNob19zeW1maWxlX3JlYWRfYWxsX29zbyAoc3RydWN0 IG9iamZpbGUgKm1haW5fb2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3MpCi0gCSAgICB7Ci0gCSAg ICAgIHdhcm5pbmcgKF8oIk9TTyBhcmNoaXZlIGZpbGUgXCIlc1wiIG5vdCBhbiBhcmNoaXZlLiIp LAotIAkJICAgICAgIGFyY2hpdmVfbmFtZSk7Ci0tCSAgICAgIGJmZF9jbG9zZSAoYXJjaGl2ZV9i ZmQpOwotKwkgICAgICBnZGJfYmZkX3VucmVmIChhcmNoaXZlX2JmZCk7Ci0gICAgICAgICAgICAg ICBpeCA9IGxhc3RfaXg7Ci0gCSAgICAgIGNvbnRpbnVlOwotIAkgICAgfQotLQkgIG1lbWJlcl9i ZmQgPSBiZmRfb3BlbnJfbmV4dF9hcmNoaXZlZF9maWxlIChhcmNoaXZlX2JmZCwgTlVMTCk7Ci0r Ci0rCSAgbWVtYmVyX2JmZCA9IGdkYl9iZmRfb3BlbnJfbmV4dF9hcmNoaXZlZF9maWxlIChhcmNo aXZlX2JmZCwgTlVMTCk7Ci0gCi0gCSAgaWYgKG1lbWJlcl9iZmQgPT0gTlVMTCkKLSAJICAgIHsK LSAJICAgICAgd2FybmluZyAoXygiQ291bGQgbm90IHJlYWQgYXJjaGl2ZSBtZW1iZXJzIG91dCBv ZiAiCi0gCQkJICJPU08gYXJjaGl2ZSBcIiVzXCIiKSwgYXJjaGl2ZV9uYW1lKTsKLS0JICAgICAg YmZkX2Nsb3NlIChhcmNoaXZlX2JmZCk7Ci0rCSAgICAgIGdkYl9iZmRfdW5yZWYgKGFyY2hpdmVf YmZkKTsKLSAgICAgICAgICAgICAgIGl4ID0gbGFzdF9peDsKLSAJICAgICAgY29udGludWU7Ci0g CSAgICB9Ci1AQCAtNzM4LDEyICs3NDAsMTIgQEAgbWFjaG9fc3ltZmlsZV9yZWFkX2FsbF9vc28g KHN0cnVjdCBvYmpmaWxlICptYWluX29iamZpbGUsIGludCBzeW1maWxlX2ZsYWdzKQotICAgICAg ICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgICBwcmV2ID0gbWVtYmVyX2JmZDsKLS0JICAg ICAgbWVtYmVyX2JmZCA9IGJmZF9vcGVucl9uZXh0X2FyY2hpdmVkX2ZpbGUKLS0JCShhcmNoaXZl X2JmZCwgbWVtYmVyX2JmZCk7Ci0rCSAgICAgIG1lbWJlcl9iZmQgPSBnZGJfYmZkX29wZW5yX25l eHRfYXJjaGl2ZWRfZmlsZSAoYXJjaGl2ZV9iZmQsCi0rCQkJCQkJCSAgICAgbWVtYmVyX2JmZCk7 Ci0gCi0gICAgICAgICAgICAgICAvKiBGcmVlIHByZXZpb3VzIG1lbWJlciBpZiBub3QgcmVmZXJl bmNlZCBieSBhbiBvc28uICAqLwotICAgICAgICAgICAgICAgaWYgKGl4MiA+PSBsYXN0X2l4KQot LSAgICAgICAgICAgICAgICBiZmRfY2xvc2UgKHByZXYpOwotKyAgICAgICAgICAgICAgICBnZGJf YmZkX3VucmVmIChwcmV2KTsKLSAJICAgIH0KLSAgICAgICAgICAgZm9yIChpeDIgPSBpeDsgaXgy IDwgbGFzdF9peDsgaXgyKyspCi0gICAgICAgICAgICAgewotQEAgLTc1OSw3ICs3NjEsNyBAQCBt YWNob19zeW1maWxlX3JlYWRfYWxsX29zbyAoc3RydWN0IG9iamZpbGUgKm1haW5fb2JqZmlsZSwg aW50IHN5bWZpbGVfZmxhZ3MpCi0gCXsKLSAgICAgICAgICAgYmZkICphYmZkOwotIAotLQkgIGFi ZmQgPSBiZmRfb3BlbnIgKG9zby0+bmFtZSwgZ251dGFyZ2V0KTsKLSsJICBhYmZkID0gZ2RiX2Jm ZF9vcGVuciAob3NvLT5uYW1lLCBnbnV0YXJnZXQpOwotIAkgIGlmICghYWJmZCkKLSAgICAgICAg ICAgICB3YXJuaW5nIChfKCJgJXMnOiBjYW4ndCBvcGVuIHRvIHJlYWQgc3ltYm9sczogJXMuIiks IG9zby0+bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICBiZmRfZXJybXNnIChiZmRfZ2V0X2Vy cm9yICgpKSk7Ci1AQCAtNzcxLDYgKzc3Myw3IEBAIG1hY2hvX3N5bWZpbGVfcmVhZF9hbGxfb3Nv IChzdHJ1Y3Qgb2JqZmlsZSAqbWFpbl9vYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKLSAgICAg fQotIAotICAgVkVDX2ZyZWUgKG9zb19lbCwgdmVjKTsKLSsgIGRvX2NsZWFudXBzIChjbGVhbnVw KTsKLSB9Ci0gCi0gLyogRFNZTSAoZGVidWcgc3ltYm9scykgZmlsZXMgY29udGFpbiB0aGUgZGVi dWcgaW5mbyBvZiBhbiBleGVjdXRhYmxlLgotQEAgLTgwOCwyMCArODExLDE3IEBAIG1hY2hvX2No ZWNrX2RzeW0gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotICAgICAgIHdhcm5pbmcgKF8oImNh bid0IGZpbmQgVVVJRCBpbiAlcyIpLCBvYmpmaWxlLT5uYW1lKTsKLSAgICAgICByZXR1cm4gTlVM TDsKLSAgICAgfQotLSAgZHN5bV9maWxlbmFtZSA9IHhzdHJkdXAgKGRzeW1fZmlsZW5hbWUpOwot LSAgZHN5bV9iZmQgPSBiZmRfb3BlbnIgKGRzeW1fZmlsZW5hbWUsIGdudXRhcmdldCk7Ci0rICBk c3ltX2JmZCA9IGdkYl9iZmRfb3BlbnIgKGRzeW1fZmlsZW5hbWUsIGdudXRhcmdldCk7Ci0gICBp ZiAoZHN5bV9iZmQgPT0gTlVMTCkKLSAgICAgewotICAgICAgIHdhcm5pbmcgKF8oImNhbid0IG9w ZW4gZHN5bSBmaWxlICVzIiksIGRzeW1fZmlsZW5hbWUpOwotLSAgICAgIHhmcmVlIChkc3ltX2Zp bGVuYW1lKTsKLSAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotICAgaWYgKCFiZmRfY2hl Y2tfZm9ybWF0IChkc3ltX2JmZCwgYmZkX29iamVjdCkpCi0gICAgIHsKLS0gICAgICBiZmRfY2xv c2UgKGRzeW1fYmZkKTsKLSsgICAgICBnZGJfYmZkX3VucmVmIChkc3ltX2JmZCk7Ci0gICAgICAg d2FybmluZyAoXygiYmFkIGRzeW0gZmlsZSBmb3JtYXQ6ICVzIiksIGJmZF9lcnJtc2cgKGJmZF9n ZXRfZXJyb3IgKCkpKTsKLS0gICAgICB4ZnJlZSAoZHN5bV9maWxlbmFtZSk7Ci0gICAgICAgcmV0 dXJuIE5VTEw7Ci0gICAgIH0KLSAKLUBAIC04MjksMTYgKzgyOSwxNCBAQCBtYWNob19jaGVja19k c3ltIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBCRkRfTUFDSF9PX0xDX1VVSUQsICZkc3ltX3V1aWQpID09IDApCi0gICAgIHsKLSAg ICAgICB3YXJuaW5nIChfKCJjYW4ndCBmaW5kIFVVSUQgaW4gJXMiKSwgZHN5bV9maWxlbmFtZSk7 Ci0tICAgICAgYmZkX2Nsb3NlIChkc3ltX2JmZCk7Ci0tICAgICAgeGZyZWUgKGRzeW1fZmlsZW5h bWUpOwotKyAgICAgIGdkYl9iZmRfdW5yZWYgKGRzeW1fYmZkKTsKLSAgICAgICByZXR1cm4gTlVM TDsKLSAgICAgfQotICAgaWYgKG1lbWNtcCAoZHN5bV91dWlkLT5jb21tYW5kLnV1aWQudXVpZCwg bWFpbl91dWlkLT5jb21tYW5kLnV1aWQudXVpZCwKLSAgICAgICAgICAgICAgIHNpemVvZiAobWFp bl91dWlkLT5jb21tYW5kLnV1aWQudXVpZCkpKQotICAgICB7Ci0gICAgICAgd2FybmluZyAoXygi ZHN5bSBmaWxlIFVVSUQgZG9lc24ndCBtYXRjaCB0aGUgb25lIGluICVzIiksIG9iamZpbGUtPm5h bWUpOwotLSAgICAgIGJmZF9jbG9zZSAoZHN5bV9iZmQpOwotLSAgICAgIHhmcmVlIChkc3ltX2Zp bGVuYW1lKTsKLSsgICAgICBnZGJfYmZkX3VucmVmIChkc3ltX2JmZCk7Ci0gICAgICAgcmV0dXJu IE5VTEw7Ci0gICAgIH0KLSAgIHJldHVybiBkc3ltX2JmZDsKLUBAIC05MDIsNiArOTAwLDcgQEAg bWFjaG9fc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IHN5bWZpbGVf ZmxhZ3MpCi0gCSAgaW50IGl4OwotIAkgIG9zb19lbCAqb3NvOwotICAgICAgICAgICBzdHJ1Y3Qg YmZkX3NlY3Rpb24gKmFzZWN0LCAqZHNlY3Q7Ci0rCSAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7 Ci0gCi0gCSAgaWYgKG1hY2hfb19kZWJ1Z19sZXZlbCA+IDApCi0gCSAgICBwcmludGZfdW5maWx0 ZXJlZCAoXygiZHN5bSBmaWxlIGZvdW5kXG4iKSk7Ci1AQCAtOTIyLDcgKzkyMSw5IEBAIG1hY2hv X3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBzeW1maWxlX2ZsYWdz KQotICAgICAgICAgICAgIH0KLSAKLSAJICAvKiBBZGQgdGhlIGRzeW0gZmlsZSBhcyBhIHNlcGFy YXRlIGZpbGUuICAqLwotKwkgIGNsZWFudXAgPSBtYWtlX2NsZWFudXBfYmZkX3VucmVmIChkc3lt X2JmZCk7Ci0gICAgICAgICAgIHN5bWJvbF9maWxlX2FkZF9zZXBhcmF0ZSAoZHN5bV9iZmQsIHN5 bWZpbGVfZmxhZ3MsIG9iamZpbGUpOwotKwkgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSAKLSAJ ICAvKiBEb24ndCB0cnkgdG8gcmVhZCBkd2FyZjIgZnJvbSBtYWluIGZpbGUgb3Igc2hhcmVkIGxp YnJhcmllcy4gICovCi0gICAgICAgICAgIHJldHVybjsKIGRpZmYgLS1naXQgYS9nZGIvbWFpbi5j IGIvZ2RiL21haW4uYwotaW5kZXggZDA3NTY5NC4uZTRkYTNmMSAxMDA2NDQKK2luZGV4IGM5NDM5 YmIuLjZjNGFjYzQgMTAwNjQ0CiAtLS0gYS9nZGIvbWFpbi5jCiArKysgYi9nZGIvbWFpbi5jCiBA QCAtMzcsNiArMzcsNyBAQApAQCAtNzExMyw3ICszMzMxLDcgQEAgaW5kZXggZDA3NTY5NC4uZTRk YTNmMSAxMDA2NDQKICAjaW5jbHVkZSAic291cmNlLmgiCiAgI2luY2x1ZGUgImNsaS9jbGktY21k cy5oIgogICNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCi1AQCAtMjgzLDYgKzI4NCw4IEBAIGNh cHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtMzE0LDYgKzMxNSw4IEBAIGNhcHR1cmVkX21h aW4gKHZvaWQgKmRhdGEpCiAgICBjaGFyICpjZGFyZyA9IE5VTEw7CiAgICBjaGFyICp0dHlhcmcg PSBOVUxMOwogIApAQCAtNzEyMiw3ICszMzQwLDcgQEAgaW5kZXggZDA3NTY5NC4uZTRkYTNmMSAx MDA2NDQKICAgIC8qIFRoZXNlIGFyZSBzdGF0aWMgc28gdGhhdCB3ZSBjYW4gdGFrZSB0aGVpciBh ZGRyZXNzIGluIGFuCiAgICAgICBpbml0aWFsaXplci4gICovCiAgICBzdGF0aWMgaW50IHByaW50 X2hlbHA7Ci1AQCAtNDcxLDEwICs0NzQsMTQgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkK K0BAIC01MDIsMTAgKzUwNSwxNCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogICAgICAg IHsiYXJncyIsIG5vX2FyZ3VtZW50LCAmc2V0X2FyZ3MsIDF9LAogICAgICAgIHsibCIsIHJlcXVp cmVkX2FyZ3VtZW50LCAwLCAnbCd9LAogICAgICAgIHsicmV0dXJuLWNoaWxkLXJlc3VsdCIsIG5v X2FyZ3VtZW50LCAmcmV0dXJuX2NoaWxkX3Jlc3VsdCwgMX0sCkBAIC03MTM4LDcgKzMzNTYsNyBA QCBpbmRleCBkMDc1Njk0Li5lNGRhM2YxIDEwMDY0NAogICAgICAgIHsKICAJaW50IG9wdGlvbl9p bmRleDsKICAKLUBAIC00OTIsNiArNDk5LDkgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkK K0BAIC01MjMsNiArNTMwLDkgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAJICBjYXNl IDA6CiAgCSAgICAvKiBMb25nIG9wdGlvbiB0aGF0IGp1c3Qgc2V0cyBhIGZsYWcuICAqLwogIAkg ICAgYnJlYWs7CkBAIC03MTQ4LDcgKzMzNjYsNyBAQCBpbmRleCBkMDc1Njk0Li5lNGRhM2YxIDEw MDY0NAogIAkgIGNhc2UgT1BUX1NFOgogIAkgICAgc3ltYXJnID0gb3B0YXJnOwogIAkgICAgZXhl Y2FyZyA9IG9wdGFyZzsKLUBAIC02OTksNyArNzA5LDMxIEBAIGNhcHR1cmVkX21haW4gKHZvaWQg KmRhdGEpCitAQCAtNzMxLDcgKzc0MSwzMSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQog IAogICAgLyogTm93IHRoYXQgZ2RiX2luaXQgaGFzIGNyZWF0ZWQgdGhlIGluaXRpYWwgaW5mZXJp b3IsIHdlJ3JlIGluCiAgICAgICBwb3NpdGlvbiB0byBzZXQgYXJncyBmb3IgdGhhdCBpbmZlcmlv ci4gICovCkBAIC03MTgxLDcgKzMzOTksNyBAQCBpbmRleCBkMDc1Njk0Li5lNGRhM2YxIDEwMDY0 NAogICAgICB7CiAgICAgICAgLyogVGhlIHJlbWFpbmluZyBvcHRpb25zIGFyZSB0aGUgY29tbWFu ZC1saW5lIG9wdGlvbnMgZm9yIHRoZQogIAkgaW5mZXJpb3IuICBUaGUgZmlyc3Qgb25lIGlzIHRo ZSBzeW0vZXhlYyBmaWxlLCBhbmQgdGhlIHJlc3QKLUBAIC05NzksNyArMTAxMyw4IEBAIGNhcHR1 cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtMTAxMSw3ICsxMDQ1LDggQEAgY2FwdHVyZWRfbWFp biAodm9pZCAqZGF0YSkKICAKICAgIC8qIFJlYWQgaW4gdGhlIG9sZCBoaXN0b3J5IGFmdGVyIGFs bCB0aGUgY29tbWFuZCBmaWxlcyBoYXZlIGJlZW4KICAgICAgIHJlYWQuICAqLwpAQCAtNzE5MSw3 ICszNDA5LDcgQEAgaW5kZXggZDA3NTY5NC4uZTRkYTNmMSAxMDA2NDQKICAKICAgIGlmIChiYXRj aF9mbGFnKQogICAgICB7Ci1AQCAtOTkwLDEzICsxMDI1LDI1IEBAIGNhcHR1cmVkX21haW4gKHZv aWQgKmRhdGEpCitAQCAtMTAyMiwxMyArMTA1NywyNSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpk YXRhKQogICAgLyogU2hvdyB0aW1lIGFuZC9vciBzcGFjZSB1c2FnZS4gICovCiAgICBkb19jbGVh bnVwcyAocHJlX3N0YXRfY2hhaW4pOwogIApAQCAtNzIyMyw3ICszNDQxLDcgQEAgaW5kZXggZDA3 NTY5NC4uZTRkYTNmMSAxMDA2NDQKICAgICAgfQogICAgLyogTm8gZXhpdCAtLSBleGl0IGlzIHRo cm91Z2ggcXVpdF9jb21tYW5kLiAgKi8KICB9Ci1AQCAtMTAyOCw3ICsxMDc1LDEyIEBAIHByaW50 X2dkYl9oZWxwIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQorQEAgLTEwNjAsNyArMTEwNywxMiBA QCBwcmludF9nZGJfaGVscCAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKICAgIGZwdXRzX3VuZmls dGVyZWQgKF8oIlwKICBUaGlzIGlzIHRoZSBHTlUgZGVidWdnZXIuICBVc2FnZTpcblxuXAogICAg ICBnZGIgW29wdGlvbnNdIFtleGVjdXRhYmxlLWZpbGUgW2NvcmUtZmlsZSBvciBwcm9jZXNzLWlk XV1cblwKQEAgLTcyMzcsMTIgKzM0NTUsMTIgQEAgaW5kZXggZDA3NTY5NC4uZTRkYTNmMSAxMDA2 NDQKICBPcHRpb25zOlxuXG5cCiAgIiksIHN0cmVhbSk7CiAgICBmcHV0c191bmZpbHRlcmVkIChf KCJcCi1AQCAtMTA2OCw3ICsxMTIwLDEzIEBAIE9wdGlvbnM6XG5cblwKLSAgIC0tbncJCSAgICAg RG8gbm90IHVzZSBhIHdpbmRvdyBpbnRlcmZhY2UuXG5cCi0gICAtLW54ICAgICAgICAgICAgICAg RG8gbm90IHJlYWQgIiksIHN0cmVhbSk7CitAQCAtMTEwMyw3ICsxMTU1LDEzIEBAIE9wdGlvbnM6 XG5cblwKKyAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIiBmaWxlcy5cblwKKyAgIC0tbmggICAgICAg ICAgICAgICBEbyBub3QgcmVhZCAiKSwgc3RyZWFtKTsKICAgIGZwdXRzX3VuZmlsdGVyZWQgKGdk YmluaXQsIHN0cmVhbSk7Ci0tICBmcHV0c191bmZpbHRlcmVkIChfKCIgZmlsZS5cblwKLSsgIGZw dXRzX3VuZmlsdGVyZWQgKF8oIiBmaWxlLlxuIiksIHN0cmVhbSk7CistICBmcHV0c191bmZpbHRl cmVkIChfKCIgZmlsZSBmcm9tIGhvbWUgZGlyZWN0b3J5LlxuXAorKyAgZnB1dHNfdW5maWx0ZXJl ZCAoXygiIGZpbGUgZnJvbSBob21lIGRpcmVjdG9yeS5cbiIpLCBzdHJlYW0pOwogKyNpZiBIQVZF X1BZVEhPTgogKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAogKyAgLS1weXRob24sIC1QICAgICAg IEZvbGxvd2luZyBhcmd1bWVudCBpcyBQeXRob24gc2NyaXB0IGZpbGU7IHJlbWFpbmluZ1xuXApA QCAtNzI1MiwxMjQgKzM0NzAsMTEgQEAgaW5kZXggZDA3NTY5NC4uZTRkYTNmMSAxMDA2NDQKICAg IC0tcXVpZXQgICAgICAgICAgICBEbyBub3QgcHJpbnQgdmVyc2lvbiBudW1iZXIgb24gc3RhcnR1 cC5cblwKICAgIC0tcmVhZG5vdyAgICAgICAgICBGdWxseSByZWFkIHN5bWJvbCBmaWxlcyBvbiBm aXJzdCBhY2Nlc3MuXG5cCiAgIiksIHN0cmVhbSk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL29iamZpbGVz LmMgYi9nZGIvb2JqZmlsZXMuYwotaW5kZXggZjVlNWM3NS4uNDExNjE4ZiAxMDA2NDQKLS0tLSBh L2dkYi9vYmpmaWxlcy5jCi0rKysgYi9nZGIvb2JqZmlsZXMuYwotQEAgLTUzLDYgKzUzLDcgQEAK LSAjaW5jbHVkZSAiY29tcGxhaW50cy5oIgotICNpbmNsdWRlICJwc3ltdGFiLmgiCi0gI2luY2x1 ZGUgInNvbGlzdC5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0gCi0gLyogUHJvdG90eXBlcyBm b3IgbG9jYWwgZnVuY3Rpb25zICovCi0gCi1AQCAtMTk1LDcgKzE5Niw4IEBAIGFsbG9jYXRlX29i amZpbGUgKGJmZCAqYWJmZCwgaW50IGZsYWdzKQotICAgICAgdGhhdCBhbnkgZGF0YSB0aGF0IGlz IHJlZmVyZW5jZSBpcyBzYXZlZCBpbiB0aGUgcGVyLW9iamZpbGUgZGF0YQotICAgICAgcmVnaW9u LiAgKi8KLSAKLS0gIG9iamZpbGUtPm9iZmQgPSBnZGJfYmZkX3JlZiAoYWJmZCk7Ci0rICBvYmpm aWxlLT5vYmZkID0gYWJmZDsKLSsgIGdkYl9iZmRfcmVmIChhYmZkKTsKLSAgIGlmIChhYmZkICE9 IE5VTEwpCi0gICAgIHsKLSAgICAgICAvKiBMb29rIHVwIHRoZSBnZGJhcmNoIGFzc29jaWF0ZWQg d2l0aCB0aGUgQkZELiAgKi8KLUBAIC0xNDU2LDc1ICsxNDU4LDYgQEAgb2JqZmlsZXNfY2hhbmdl ZCAodm9pZCkKLSAgIGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3Bh Y2UpLT5vYmpmaWxlc19jaGFuZ2VkX3AgPSAxOwotIH0KLSAKLS0vKiBDbG9zZSBBQkZELCBhbmQg d2FybiBpZiB0aGF0IGZhaWxzLiAgKi8KLS0KLS1pbnQKLS1nZGJfYmZkX2Nsb3NlX29yX3dhcm4g KHN0cnVjdCBiZmQgKmFiZmQpCi0tewotLSAgaW50IHJldDsKLS0gIGNoYXIgKm5hbWUgPSBiZmRf Z2V0X2ZpbGVuYW1lIChhYmZkKTsKLS0KLS0gIHJldCA9IGJmZF9jbG9zZSAoYWJmZCk7Ci0tCi0t ICBpZiAoIXJldCkKLS0gICAgd2FybmluZyAoXygiY2Fubm90IGNsb3NlIFwiJXNcIjogJXMiKSwK LS0JICAgICBuYW1lLCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0tCi0tICByZXR1 cm4gcmV0OwotLX0KLS0KLS0vKiBBZGQgcmVmZXJlbmNlIHRvIEFCRkQuICBSZXR1cm5zIEFCRkQu ICAqLwotLXN0cnVjdCBiZmQgKgotLWdkYl9iZmRfcmVmIChzdHJ1Y3QgYmZkICphYmZkKQotLXsK LS0gIGludCAqcF9yZWZjb3VudDsKLS0KLS0gIGlmIChhYmZkID09IE5VTEwpCi0tICAgIHJldHVy biBOVUxMOwotLQotLSAgcF9yZWZjb3VudCA9IGJmZF91c3JkYXRhIChhYmZkKTsKLS0KLS0gIGlm IChwX3JlZmNvdW50ICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICAqcF9yZWZjb3VudCArPSAxOwot LSAgICAgIHJldHVybiBhYmZkOwotLSAgICB9Ci0tCi0tICBwX3JlZmNvdW50ID0geG1hbGxvYyAo c2l6ZW9mICgqcF9yZWZjb3VudCkpOwotLSAgKnBfcmVmY291bnQgPSAxOwotLSAgYmZkX3VzcmRh dGEgKGFiZmQpID0gcF9yZWZjb3VudDsKLS0KLS0gIHJldHVybiBhYmZkOwotLX0KLS0KLS0vKiBV bnJlZmVyZW5jZSBhbmQgcG9zc2libHkgY2xvc2UgQUJGRC4gICovCi0tdm9pZAotLWdkYl9iZmRf dW5yZWYgKHN0cnVjdCBiZmQgKmFiZmQpCi0tewotLSAgaW50ICpwX3JlZmNvdW50OwotLSAgY2hh ciAqbmFtZTsKLS0KLS0gIGlmIChhYmZkID09IE5VTEwpCi0tICAgIHJldHVybjsKLS0KLS0gIHBf cmVmY291bnQgPSBiZmRfdXNyZGF0YSAoYWJmZCk7Ci0tCi0tICAvKiBWYWxpZCByYW5nZSBmb3Ig cF9yZWZjb3VudDogYSBwb2ludGVyIHRvIGludCBjb3VudGVyLCB3aGljaCBoYXMgYQotLSAgICAg dmFsdWUgb2YgMSAoc2luZ2xlIG93bmVyKSBvciAyIChzaGFyZWQpLiAgKi8KLS0gIGdkYl9hc3Nl cnQgKCpwX3JlZmNvdW50ID09IDEgfHwgKnBfcmVmY291bnQgPT0gMik7Ci0tCi0tICAqcF9yZWZj b3VudCAtPSAxOwotLSAgaWYgKCpwX3JlZmNvdW50ID4gMCkKLS0gICAgcmV0dXJuOwotLQotLSAg eGZyZWUgKHBfcmVmY291bnQpOwotLSAgYmZkX3VzcmRhdGEgKGFiZmQpID0gTlVMTDsgIC8qIFBh cmFub2lhLiAgKi8KLS0KLS0gIG5hbWUgPSBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKTsKLS0gIGdk Yl9iZmRfY2xvc2Vfb3Jfd2FybiAoYWJmZCk7Ci0tICB4ZnJlZSAobmFtZSk7Ci0tfQotLQotIC8q IFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciB0aGUgIml0ZXJhdGVfb3Zlcl9vYmpmaWxl c19pbl9zZWFyY2hfb3JkZXIiCi0gICAgZ2RiYXJjaCBtZXRob2QuICBJdCBpcyBlcXVpdmFsZW50 IHRvIHVzZSB0aGUgQUxMX09CSkZJTEVTIG1hY3JvLAotICAgIHNlYXJjaGluZyB0aGUgb2JqZmls ZXMgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIHN0b3JlZCBpbnRlcm5hbGx5LAotZGlmZiAtLWdpdCBh L2dkYi9vYmpmaWxlcy5oIGIvZ2RiL29iamZpbGVzLmgKLWluZGV4IDAxYzNhZWEuLjBkZjU3OTgg MTAwNjQ0Ci0tLS0gYS9nZGIvb2JqZmlsZXMuaAotKysrIGIvZ2RiL29iamZpbGVzLmgKLUBAIC01 MjIsMTAgKzUyMiw2IEBAIGV4dGVybiB2b2lkIHNldF9vYmpmaWxlX2RhdGEgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAotIGV4dGVybiB2b2lkICpvYmpmaWxlX2RhdGEgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAotIAkJCSAgIGNvbnN0IHN0cnVjdCBvYmpmaWxlX2RhdGEgKmRhdGEpOwotIAot LWV4dGVybiBzdHJ1Y3QgYmZkICpnZGJfYmZkX3JlZiAoc3RydWN0IGJmZCAqYWJmZCk7Ci0tZXh0 ZXJuIHZvaWQgZ2RiX2JmZF91bnJlZiAoc3RydWN0IGJmZCAqYWJmZCk7Ci0tZXh0ZXJuIGludCBn ZGJfYmZkX2Nsb3NlX29yX3dhcm4gKHN0cnVjdCBiZmQgKmFiZmQpOwotLQotIGV4dGVybiB2b2lk IGRlZmF1bHRfaXRlcmF0ZV9vdmVyX29iamZpbGVzX2luX3NlYXJjaF9vcmRlcgotICAgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLAotICAgIGl0ZXJhdGVfb3Zlcl9vYmpmaWxlc19pbl9zZWFyY2hf b3JkZXJfY2JfZnR5cGUgKmNiLAogZGlmZiAtLWdpdCBhL2dkYi9wLXZhbHByaW50LmMgYi9nZGIv cC12YWxwcmludC5jCi1pbmRleCBiODQzNGVkLi45OGEwNzZkIDEwMDY0NAoraW5kZXggYmNjMDU1 ZS4uOGE5ZDY0NSAxMDA2NDQKIC0tLSBhL2dkYi9wLXZhbHByaW50LmMKICsrKyBiL2dkYi9wLXZh bHByaW50LmMKLUBAIC0zOSw2ICszOSw3IEBACitAQCAtMzgsNiArMzgsNyBAQAogICNpbmNsdWRl ICJjcC1hYmkuaCIKICAjaW5jbHVkZSAiY3Atc3VwcG9ydC5oIgogICNpbmNsdWRlICJleGNlcHRp b25zLmgiCkBAIC03Mzc3LDcgKzM0ODIsNyBAQCBpbmRleCBiODQzNGVkLi45OGEwNzZkIDEwMDY0 NAogIAwKICAKICAvKiBEZWNvcmF0aW9ucyBmb3IgUGFzY2FsLiAgKi8KLUBAIC03NCw4ICs3NSwz MSBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsCitAQCAtNzMsOCArNzQsMzEgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5 cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogICAgc3RydWN0IHR5cGUgKmNoYXJf dHlwZTsKICAgIENPUkVfQUREUiBhZGRyOwogICAgaW50IHdhbnRfc3BhY2UgPSAwOwpAQCAtNzQx MCw3ICszNTE1LDcgQEAgaW5kZXggYjg0MzRlZC4uOThhMDc2ZCAxMDA2NDQKICAgIHN3aXRjaCAo VFlQRV9DT0RFICh0eXBlKSkKICAgICAgewogICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKLUBA IC0xMzEsOCArMTU1LDggQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLAorQEAgLTEzMCw4ICsxNTQsOCBAQCBwYXNjYWxfdmFsX3By aW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCQl7CiAg CQkgIGkgPSAwOwogIAkJfQpAQCAtNzQyMSw3ICszNTI2LDcgQEAgaW5kZXggYjg0MzRlZC4uOThh MDc2ZCAxMDA2NDQKICAJCQkJCW9yaWdpbmFsX3ZhbHVlLCBvcHRpb25zLCBpKTsKICAJICAgICAg ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAifSIpOwogIAkgICAgfQotQEAgLTE3MCw2ICsxOTQs NyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsCitAQCAtMTY5LDYgKzE5Myw3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0 eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAJewogIAkgIC8qIFRyeSB0byBw cmludCB3aGF0IGZ1bmN0aW9uIGl0IHBvaW50cyB0by4gICovCiAgCSAgcHJpbnRfYWRkcmVzc19k ZW1hbmdsZSAob3B0aW9ucywgZ2RiYXJjaCwgYWRkciwgc3RyZWFtLCBkZW1hbmdsZSk7CkBAIC03 NDI5LDcgKzM1MzQsNyBAQCBpbmRleCBiODQzNGVkLi45OGEwNzZkIDEwMDY0NAogIAkgIHJldHVy bjsKICAJfQogIAotQEAgLTI3MSw2ICsyOTYsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3Qg dHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCitAQCAtMjcwLDYgKzI5NSw3IEBA IHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFs YWRkciwKICAJICAgIH0KICAJfQogIApAQCAtNzQzNyw3ICszNTQyLDcgQEAgaW5kZXggYjg0MzRl ZC4uOThhMDc2ZCAxMDA2NDQKICAgICAgICByZXR1cm47CiAgCiAgICAgIGNhc2UgVFlQRV9DT0RF X1JFRjoKLUBAIC00MjEsNiArNDQ3LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorQEAgLTQxMCw2ICs0MzYsNyBAQCBwYXNj YWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIs CiAgCSAgICAgVFlQRV9DT0RFICh0eXBlKSk7CiAgICAgIH0KICAgIGdkYl9mbHVzaCAoc3RyZWFt KTsKQEAgLTc0NDYsMTAgKzM1NTEsMTAgQEAgaW5kZXggYjg0MzRlZC4uOThhMDc2ZCAxMDA2NDQK ICAMCiAgdm9pZAogZGlmZiAtLWdpdCBhL2dkYi9wYXJzZS5jIGIvZ2RiL3BhcnNlLmMKLWluZGV4 IDUyOWM1MTcuLjYzMjZhMDEgMTAwNjQ0CitpbmRleCAwOWMzNzhiLi45M2M0MzRmIDEwMDY0NAog LS0tIGEvZ2RiL3BhcnNlLmMKICsrKyBiL2dkYi9wYXJzZS5jCi1AQCAtMTcwOCw2ICsxNzA4LDcg QEAgcGFyc2VyX2ZwcmludGYgKEZJTEUgKngsIGNvbnN0IGNoYXIgKnksIC4uLikKK0BAIC0xNzU3 LDYgKzE3NTcsNyBAQCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwgLi4u KQogIAogIGludAogIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwLCBpbnQgcG9zLApAQCAtNzQ1Nyw3ICszNTYyLDcgQEAgaW5kZXggNTI5YzUxNy4uNjMyNmEw MSAxMDA2NDQKICAJCQkgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCiAgCQkJCQkgICAgICB2b2lkICpkYXRhKSwKICAJCQkgdm9pZCAqZGF0YSkKLUBAIC0xNzQ5 LDcgKzE3NTAsNyBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24g KmV4cCwgaW50IHBvcywKK0BAIC0xNzk2LDcgKzE3OTcsNyBAQCBvcGVyYXRvcl9jaGVja19zdGFu ZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKICAJICAgIHN0cnVjdCB0eXBl ICp0eXBlID0gZWx0c1twb3MgKyAyICsgYXJnXS50eXBlOwogIAkgICAgc3RydWN0IG9iamZpbGUg Km9iamZpbGUgPSBUWVBFX09CSkZJTEUgKHR5cGUpOwogIApAQCAtNzQ2Niw3ICszNTcxLDcgQEAg aW5kZXggNTI5YzUxNy4uNjMyNmEwMSAxMDA2NDQKICAJICAgICAgcmV0dXJuIDE7CiAgCSAgfQog ICAgICAgIH0KLUBAIC0xNzY3LDcgKzE3NjgsOCBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAo c3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKK0BAIC0xODE0LDcgKzE4MTUsOCBAQCBv cGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywK ICAKICAJLyogQ2hlY2sgb2JqZmlsZSB3aGVyZSB0aGUgdmFyaWFibGUgaXRzZWxmIGlzIHBsYWNl ZC4KICAJICAgU1lNQk9MX09CSl9TRUNUSU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAgKi8KQEAg LTc0NzYsNyArMzU4MSw3IEBAIGluZGV4IDUyOWM1MTcuLjYzMjZhMDEgMTAwNjQ0CiAgCSAgcmV0 dXJuIDE7CiAgCiAgCS8qIENoZWNrIG9iamZpbGUgd2hlcmUgaXMgcGxhY2VkIHRoZSBjb2RlIHRv dWNoaW5nIHRoZSB2YXJpYWJsZS4gICovCi1AQCAtMTc4MCwyNCArMTc4MiwyNyBAQCBvcGVyYXRv cl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKK0BAIC0x ODI3LDI0ICsxODI5LDI3IEBAIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLCBpbnQgcG9zLAogIAogICAgLyogSW52b2tlIGNhbGxiYWNrcyBmb3IgVFlQRSBh bmQgT0JKRklMRSBpZiB0aGV5IHdlcmUgc2V0IGFzIG5vbi1OVUxMLiAgKi8KICAKQEAgLTc1MTIs NyArMzYxNyw3IEBAIGluZGV4IDUyOWM1MTcuLjYzMjZhMDEgMTAwNjQ0CiAgCSAgICAgaW50ICgq b2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAogIAkg ICAgIHZvaWQgKmRhdGEpCiAgewotQEAgLTE4MTIsNyArMTgxNyw5IEBAIGV4cF9pdGVyYXRlIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorQEAgLTE4NTksNyArMTg2NCw5IEBAIGV4cF9pdGVyYXRl IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAogIAogICAgICAgIHBvcyA9IGVuZHBvcyAtIG9wbGVu OwogICAgICAgIGlmIChleHAtPmxhbmd1YWdlX2RlZm4tPmxhX2V4cF9kZXNjLT5vcGVyYXRvcl9j aGVjayAoZXhwLCBwb3MsCkBAIC03NTIzLDcgKzM2MjgsNyBAQCBpbmRleCA1MjljNTE3Li42MzI2 YTAxIDEwMDY0NAogIAlyZXR1cm4gMTsKICAKICAgICAgICBlbmRwb3MgPSBwb3M7Ci1AQCAtMTg0 Myw4ICsxODUwLDI5IEBAIGV4cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAs IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorQEAgLTE4OTAsOCArMTg5NywyOSBAQCBleHBfdXNl c19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSkKICB7CiAgICBnZGJfYXNzZXJ0IChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2Jh Y2tsaW5rID09IE5VTEwpOwogIApAQCAtNzU1NSwxMCArMzY2MCwxMCBAQCBpbmRleCA1MjljNTE3 Li42MzI2YTAxIDEwMDY0NAogIHZvaWQKICBfaW5pdGlhbGl6ZV9wYXJzZSAodm9pZCkKIGRpZmYg LS1naXQgYS9nZGIvcGFyc2VyLWRlZnMuaCBiL2dkYi9wYXJzZXItZGVmcy5oCi1pbmRleCA4NmYz YmRmLi5mOTA4YTYxIDEwMDY0NAoraW5kZXggOGQyNTMxMS4uMjMzZWQ0NiAxMDA2NDQKIC0tLSBh L2dkYi9wYXJzZXItZGVmcy5oCiArKysgYi9nZGIvcGFyc2VyLWRlZnMuaAotQEAgLTI0NSw2ICsy NDUsOCBAQCBleHRlcm4gdm9pZCBvcGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQgKGNvbnN0IHN0cnVj dCBleHByZXNzaW9uICosIGludCwgaW50ICosCitAQCAtMjQ0LDYgKzI0NCw4IEBAIGV4dGVybiB2 b2lkIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAoY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gKiwg aW50LCBpbnQgKiwKICAJCQkJICAgICAgaW50ICopOwogIAogIGV4dGVybiBpbnQgb3BlcmF0b3Jf Y2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCkBAIC03NTY3 LDcgKzM2NzIsNyBAQCBpbmRleCA4NmYzYmRmLi5mOTA4YTYxIDEwMDY0NAogIAkJCQkgICAgaW50 ICgqb2JqZmlsZV9mdW5jKQogIAkJCQkgICAgICAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZv aWQgKmRhdGEpLAogIAkJCQkgICAgdm9pZCAqZGF0YSk7Ci1AQCAtMzMxLDYgKzMzMyw3IEBAIHN0 cnVjdCBleHBfZGVzY3JpcHRvcgorQEAgLTMzMCw2ICszMzIsNyBAQCBzdHJ1Y3QgZXhwX2Rlc2Ny aXB0b3IKICAgICAgICAgdmFsdWUgc2hvdWxkIGJlIGltbWVkaWF0ZWx5IHJldHVybmVkIHRvIHRo ZSBjYWxsZXIuICBPdGhlcndpc2UgemVybwogICAgICAgICBzaG91bGQgYmUgcmV0dXJuZWQuICAq LwogICAgICBpbnQgKCpvcGVyYXRvcl9jaGVjaykgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGlu dCBwb3MsCkBAIC03NTc1LDE5ICszNjgwLDggQEAgaW5kZXggODZmM2JkZi4uZjkwOGE2MSAxMDA2 NDQKICAJCQkgICBpbnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwK ICAJCQkJCQl2b2lkICpkYXRhKSwKICAJCQkgICB2b2lkICpkYXRhKTsKLUBAIC0zNjksNCArMzcy LDEwIEBAIGV4dGVybiB2b2lkIHBhcnNlcl9mcHJpbnRmIChGSUxFICosIGNvbnN0IGNoYXIgKiwg Li4uKSBBVFRSSUJVVEVfUFJJTlRGICgyLCAzKTsKLSAKLSBleHRlcm4gaW50IGV4cF91c2VzX29i amZpbGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsK LSAKLStleHRlcm4gaW50IGV4cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAs IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKLSsKLSsjaWYgMAotK2V4dGVybiB2b2lkIGV4cF90 eXBlc19tYXJrX3VzZWQgKHN0cnVjdCBleHByZXNzaW9uICpleHApOwotKyNlbmRpZgotKwotICNl bmRpZiAvKiBQQVJTRVJfREVGU19IICovCiBkaWZmIC0tZ2l0IGEvZ2RiL3ByaW50Y21kLmMgYi9n ZGIvcHJpbnRjbWQuYwotaW5kZXggZDViNWI2My4uNGJjMmI1YiAxMDA2NDQKK2luZGV4IGE1NzZk ODguLjI3M2E1ZTEgMTAwNjQ0CiAtLS0gYS9nZGIvcHJpbnRjbWQuYwogKysrIGIvZ2RiL3ByaW50 Y21kLmMKIEBAIC01MCw2ICs1MCw3IEBACkBAIC03NTk4LDcgKzM2OTIsNyBAQCBpbmRleCBkNWI1 YjYzLi40YmMyYjViIDEwMDY0NAogIAogICNpZmRlZiBUVUkKICAjaW5jbHVkZSAidHVpL3R1aS5o IgkJLyogRm9yIHR1aV9hY3RpdmUgZXQgYWwuICAgKi8KLUBAIC05NjgsNiArOTY5LDExIEBAIHBy aW50X2NvbW1hbmRfMSAoY2hhciAqZXhwLCBpbnQgaW5zcGVjdCwgaW50IHZvaWRwcmludCkKK0BA IC05NjYsNiArOTY3LDExIEBAIHByaW50X2NvbW1hbmRfMSAoY2hhciAqZXhwLCBpbnQgdm9pZHBy aW50KQogICAgZWxzZQogICAgICB2YWwgPSBhY2Nlc3NfdmFsdWVfaGlzdG9yeSAoMCk7CiAgCkBA IC03NjEwLDcgKzM3MDQsNyBAQCBpbmRleCBkNWI1YjYzLi40YmMyYjViIDEwMDY0NAogICAgaWYg KHZvaWRwcmludCB8fCAodmFsICYmIHZhbHVlX3R5cGUgKHZhbCkgJiYKICAJCSAgICBUWVBFX0NP REUgKHZhbHVlX3R5cGUgKHZhbCkpICE9IFRZUEVfQ09ERV9WT0lEKSkKICAgICAgewotQEAgLTEw NTYsNiArMTA2Miw5IEBAIG91dHB1dF9jb21tYW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkK K0BAIC0xMDM4LDYgKzEwNDQsOSBAQCBvdXRwdXRfY29tbWFuZCAoY2hhciAqZXhwLCBpbnQgZnJv bV90dHkpCiAgCiAgICB2YWwgPSBldmFsdWF0ZV9leHByZXNzaW9uIChleHByKTsKICAKQEAgLTc2 MjAsNyArMzcxNCw3IEBAIGluZGV4IGQ1YjViNjMuLjRiYzJiNWIgMTAwNjQ0CiAgICBhbm5vdGF0 ZV92YWx1ZV9iZWdpbiAodmFsdWVfdHlwZSAodmFsKSk7CiAgCiAgICBnZXRfZm9ybWF0dGVkX3By aW50X29wdGlvbnMgKCZvcHRzLCBmb3JtYXQpOwotQEAgLTE0ODUsNiArMTQ5NCwyNCBAQCB4X2Nv bW1hbmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQorQEAgLTE0NjYsNiArMTQ3NSwyNCBAQCB4 X2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQogIAlzZXRfaW50ZXJuYWx2YXIgKGxv b2t1cF9pbnRlcm5hbHZhciAoIl9fIiksIGxhc3RfZXhhbWluZV92YWx1ZSk7CiAgICAgIH0KICB9 CkBAIC03NjQ1LDcgKzM3MzksNyBAQCBpbmRleCBkNWI1YjYzLi40YmMyYjViIDEwMDY0NAogIAwK ICAKICAvKiBBZGQgYW4gZXhwcmVzc2lvbiB0byB0aGUgYXV0by1kaXNwbGF5IGNoYWluLgotQEAg LTE5ODIsNiArMjAwOSwxMCBAQCBwcmludF92YXJpYWJsZV9hbmRfdmFsdWUgKGNvbnN0IGNoYXIg Km5hbWUsIHN0cnVjdCBzeW1ib2wgKnZhciwKK0BAIC0xOTYzLDYgKzE5OTAsMTAgQEAgcHJpbnRf dmFyaWFibGVfYW5kX3ZhbHVlIChjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgc3ltYm9sICp2YXIs CiAgICAgICAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKICAKICAgICAgICB2YWwg PSByZWFkX3Zhcl92YWx1ZSAodmFyLCBmcmFtZSk7CkBAIC03NjU2LDU1ICszNzUwLDE1IEBAIGlu ZGV4IGQ1YjViNjMuLjRiYzJiNWIgMTAwNjQ0CiAgICAgICAgZ2V0X3VzZXJfcHJpbnRfb3B0aW9u cyAoJm9wdHMpOwogICAgICAgIG9wdHMuZGVyZWZfcmVmID0gMTsKICAgICAgICBjb21tb25fdmFs X3ByaW50ICh2YWwsIHN0cmVhbSwgaW5kZW50LCAmb3B0cywgY3VycmVudF9sYW5ndWFnZSk7Ci1A QCAtMjYyNiw0ICsyNjU3LDggQEAgU2hvdyBwcmludGluZyBvZiBzb3VyY2UgZmlsZW5hbWUgYW5k IGxpbmUgbnVtYmVyIHdpdGggPHN5bWJvbD4uIiksIE5VTEwsCitAQCAtMjYwMiw0ICsyNjMzLDgg QEAgU2hvdyBwcmludGluZyBvZiBzb3VyY2UgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyIHdpdGgg PHN5bWJvbD4uIiksIE5VTEwsCiAgICBhZGRfY29tICgiZXZhbCIsIG5vX2NsYXNzLCBldmFsX2Nv bW1hbmQsIF8oIlwKICBDb252ZXJ0IFwicHJpbnRmIGZvcm1hdCBzdHJpbmdcIiwgYXJnMSwgYXJn MiwgYXJnMywgLi4uLCBhcmduIHRvXG5cCiAgYSBjb21tYW5kIGxpbmUsIGFuZCBjYWxsIGl0LiIp KTsKICsKLSsjaWYgMAotKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAocHJpbnRfdHlwZXNf bWFya191c2VkKTsKLSsjZW5kaWYKLSB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Byb2Nmcy5jIGIvZ2Ri L3Byb2Nmcy5jCi1pbmRleCA3NzRkZjJlLi40NDA5ZTViIDEwMDY0NAotLS0tIGEvZ2RiL3Byb2Nm cy5jCi0rKysgYi9nZGIvcHJvY2ZzLmMKLUBAIC0zNDg2LDcgKzM0ODYsNyBAQCBpbnNlcnRfZGJ4 X2xpbmtfYnB0X2luX2ZpbGUgKGludCBmZCwgQ09SRV9BRERSIGlnbm9yZWQpCi0gICBsb25nIHN0 b3JhZ2VfbmVlZGVkOwotICAgQ09SRV9BRERSIHN5bV9hZGRyOwotIAotLSAgYWJmZCA9IGJmZF9m ZG9wZW5yICgidW5hbWVkIiwgMCwgZmQpOwotKyAgYWJmZCA9IGdkYl9iZmRfZmRvcGVuciAoInVu YW1lZCIsIDAsIGZkKTsKLSAgIGlmIChhYmZkID09IE5VTEwpCi0gICAgIHsKLSAgICAgICB3YXJu aW5nIChfKCJGYWlsZWQgdG8gY3JlYXRlIGEgYmZkOiAlcy4iKSwgYmZkX2Vycm1zZyAoYmZkX2dl dF9lcnJvciAoKSkpOwotQEAgLTM0OTcsNyArMzQ5Nyw3IEBAIGluc2VydF9kYnhfbGlua19icHRf aW5fZmlsZSAoaW50IGZkLCBDT1JFX0FERFIgaWdub3JlZCkKLSAgICAgewotICAgICAgIC8qIE5v dCB0aGUgY29ycmVjdCBmb3JtYXQsIHNvIHdlIGNhbiBub3QgcG9zc2libHkgZmluZCB0aGUgZGJ4 X2xpbmsKLSAJIHN5bWJvbCBpbiBpdC4JKi8KLS0gICAgICBiZmRfY2xvc2UgKGFiZmQpOwotKyAg ICAgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOwotICAgICAgIHJldHVybiAwOwotICAgICB9Ci0gCi1A QCAtMzUxMSwxNCArMzUxMSwxNCBAQCBpbnNlcnRfZGJ4X2xpbmtfYnB0X2luX2ZpbGUgKGludCBm ZCwgQ09SRV9BRERSIGlnbm9yZWQpCi0gICAgICAgaWYgKGRieF9saW5rX2JwdCA9PSBOVUxMKQot IAl7Ci0gCSAgd2FybmluZyAoXygiRmFpbGVkIHRvIGluc2VydCBkYnhfbGluayBicmVha3BvaW50 LiIpKTsKLS0JICBiZmRfY2xvc2UgKGFiZmQpOwotKwkgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOwot IAkgIHJldHVybiAwOwotIAl9Ci0tICAgICAgYmZkX2Nsb3NlIChhYmZkKTsKLSsgICAgICBnZGJf YmZkX3VucmVmIChhYmZkKTsKLSAgICAgICByZXR1cm4gMTsKLSAgICAgfQotIAotLSAgYmZkX2Ns b3NlIChhYmZkKTsKLSsgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOwotICAgcmV0dXJuIDA7CisrI2lm IDAKKysgIG9ic2VydmVyX2F0dGFjaF9tYXJrX3VzZWQgKHByaW50X3R5cGVzX21hcmtfdXNlZCk7 CisrI2VuZGlmCiAgfQotIAogZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9GcmFtZUl0 ZXJhdG9yLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkKIG5ldyBmaWxl IG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwLi41NjU0NTQ2CkBAIC04MDY3LDEzICs0MTIxLDEz IEBAIGluZGV4IDAwMDAwMDAuLjZmYTQ4ZmYKICtJZ25vcmVFcnJvcnNDb21tYW5kICgpCiBkaWZm IC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcGFob2xlLnB5IGIvZ2RiL3B5dGhv bi9saWIvZ2RiL2NvbW1hbmQvcGFob2xlLnB5CiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg MDAwMDAwMC4uMjFhMGJmMAoraW5kZXggMDAwMDAwMC4uNjM2Zjk5ZAogLS0tIC9kZXYvbnVsbAog KysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcGFob2xlLnB5Ci1AQCAtMCwwICsxLDc1 IEBACitAQCAtMCwwICsxLDgxIEBACiArIyBwYWhvbGUgY29tbWFuZCBmb3IgZ2RiCiArCi0rIyBD b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisr IyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTgwOTksNiArNDE1 MywxMSBAQCBpbmRleCAwMDAwMDAwLi4yMWEwYmYwCiArICAgICAgICBzdXBlciAoUGFob2xlLCBz ZWxmKS5fX2luaXRfXyAoInBhaG9sZSIsIGdkYi5DT01NQU5EX05PTkUsCiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTVBMRVRFX1NZTUJPTCkKICsKKysgICAg ZGVmIG1heWJlX3ByaW50X2hvbGUoc2VsZiwgYml0cG9zLCBmaWVsZF9iaXRwb3MpOgorKyAgICAg ICAgaWYgYml0cG9zICE9IGZpZWxkX2JpdHBvczoKKysgICAgICAgICAgICBob2xlID0gZmllbGRf Yml0cG9zIC0gYml0cG9zCisrICAgICAgICAgICAgcHJpbnQgJyAgLyogWFhYICVkIGJpdCBob2xl LCB0cnkgdG8gcGFjayAqLycgJSBob2xlCisrCiArICAgIGRlZiBwYWhvbGUgKHNlbGYsIHR5cGUs IGxldmVsLCBuYW1lKToKICsgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKICsgICAgICAgICAgICBu YW1lID0gJycKQEAgLTgxMTQsMTAgKzQxNzMsOCBAQCBpbmRleCAwMDAwMDAwLi4yMWEwYmYwCiAr CiArICAgICAgICAgICAgZnR5cGUgPSBmaWVsZC50eXBlLnN0cmlwX3R5cGVkZWZzKCkKICsKLSsg ICAgICAgICAgICBpZiBiaXRwb3MgIT0gZmllbGQuYml0cG9zOgotKyAgICAgICAgICAgICAgICBo b2xlID0gZmllbGQuYml0cG9zIC0gYml0cG9zCi0rICAgICAgICAgICAgICAgIHByaW50ICcgIC8q IFhYWCAlZCBiaXQgaG9sZSwgdHJ5IHRvIHBhY2sgKi8nICUgaG9sZQotKyAgICAgICAgICAgICAg ICBiaXRwb3MgPSBmaWVsZC5iaXRwb3MKKysgICAgICAgICAgICBzZWxmLm1heWJlX3ByaW50X2hv bGUoYml0cG9zLCBmaWVsZC5iaXRwb3MpCisrICAgICAgICAgICAgYml0cG9zID0gZmllbGQuYml0 cG9zCiArICAgICAgICAgICAgaWYgZmllbGQuYml0c2l6ZSA+IDA6CiArICAgICAgICAgICAgICAg IGZpZWxkc2l6ZSA9IGZpZWxkLmJpdHNpemUKICsgICAgICAgICAgICBlbHNlOgpAQCAtODEzNCw2 ICs0MTkxLDkgQEAgaW5kZXggMDAwMDAwMC4uMjFhMGJmMAogKyAgICAgICAgICAgICAgICBwcmlu dCAnICcgKiAoMiArIDIgKiBsZXZlbCksCiArICAgICAgICAgICAgICAgIHByaW50ICclcyAlcycg JSAoc3RyIChmdHlwZSksIGZpZWxkLm5hbWUpCiArCisrICAgICAgICBpZiBsZXZlbCA9PSAwOgor KyAgICAgICAgICAgIHNlbGYubWF5YmVfcHJpbnRfaG9sZShiaXRwb3MsIDggKiB0eXBlLnNpemVv ZikKKysKICsgICAgICAgIHByaW50ICcgJyAqICgxNCArIDIgKiBsZXZlbCksCiArICAgICAgICBw cmludCAnfSAlcycgJSBuYW1lCiArCkBAIC04MzQ0LDEzICs0NDA0LDYgQEAgaW5kZXggMDAwMDAw MC4uZmFmNTRlZAogK1VwdG9Tb3VyY2VDb21tYW5kICgpCiArVXB0b09iamVjdENvbW1hbmQgKCkK ICtVcHRvV2hlcmVDb21tYW5kICgpCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1 bmN0aW9uL19faW5pdF9fLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9f LnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOGIxMzc4OQotLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5Ci1A QCAtMCwwICsxIEBACi0rCiBkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9u L2NhbGxlcl9pcy5weSBiL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkK IG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwLi4yYjljNWM3CkBAIC04NDY5LDE5 ICs0NTIyLDE5IEBAIGluZGV4IDAwMDAwMDAuLmRlYmIzYmIKICsKICtJblNjb3BlICgpCiBkaWZm IC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS10eXBlLmMgYi9nZGIvcHl0aG9uL3B5LXR5cGUuYwotaW5k ZXggOTgwMzBhNi4uOTg3MGVlYyAxMDA2NDQKK2luZGV4IDMxYjc3NzYuLjU2MDg1ZDEgMTAwNjQ0 CiAtLS0gYS9nZGIvcHl0aG9uL3B5LXR5cGUuYwogKysrIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMK LUBAIC0zMCw2ICszMCw4IEBACi0gI2luY2x1ZGUgInZlYy5oIgorQEAgLTMxLDYgKzMxLDggQEAK ICAjaW5jbHVkZSAiYmNhY2hlLmgiCiAgI2luY2x1ZGUgImR3YXJmMmxvYy5oIgorICNpbmNsdWRl ICJ0eXBlcHJpbnQuaCIKICsjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKICsjaW5jbHVkZSAiZ2RiX2Fz c2VydC5oIgogIAogIHR5cGVkZWYgc3RydWN0IHB5dHlfdHlwZV9vYmplY3QKICB7Ci1AQCAtMzgs MTEgKzQwLDE5IEBAIHR5cGVkZWYgc3RydWN0IHB5dHlfdHlwZV9vYmplY3QKK0BAIC0zOSwxMSAr NDEsMTkgQEAgdHlwZWRlZiBzdHJ1Y3QgcHl0eV90eXBlX29iamVjdAogIAogICAgLyogSWYgYSBU eXBlIG9iamVjdCBpcyBhc3NvY2lhdGVkIHdpdGggYW4gb2JqZmlsZSwgaXQgaXMga2VwdCBvbiBh CiAgICAgICBkb3VibHktbGlua2VkIGxpc3QsIHJvb3RlZCBpbiB0aGUgb2JqZmlsZS4gIFRoaXMg bGV0cyB1cyBjb3B5IHRoZQpAQCAtODQ5MywxMDA3ICs0NTQ2LDMxNSBAQCBpbmRleCA5ODAzMGE2 Li45ODcwZWVjIDEwMDY0NAogICAgc3RydWN0IHB5dHlfdHlwZV9vYmplY3QgKnByZXY7CiAgICBz dHJ1Y3QgcHl0eV90eXBlX29iamVjdCAqbmV4dDsKICB9IHR5cGVfb2JqZWN0OwotIAotKyNpZiAw Ci0rLyogRmlyc3QgZWxlbWVudCBvZiBhIGRvdWJseS1saW5rZWQgbGlzdCBvZiBUWVBFX0RJU0NB UkRBQkxFIFR5cGVzLiAgKi8KLStzdGF0aWMgdHlwZV9vYmplY3QgKnB5dHlfb2JqZWN0c19kaXNj YXJkYWJsZTsKLSsjZW5kaWYKLSsKLSBzdGF0aWMgUHlUeXBlT2JqZWN0IHR5cGVfb2JqZWN0X3R5 cGU7Ci0gCi0gLyogQSBGaWVsZCBvYmplY3QuICAqLwotQEAgLTExNjYsOCArMTE3Niw2MyBAQCB0 eXB5X3JpY2hjb21wYXJlIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyLCBpbnQgb3Ap Ci0gCi0gDAotIAotKy8qIEtleSBhc3NvY2lhdGVkIHdpdGggZWFjaCBvYmpmaWxlIHBvaW50aW5n IHRvIHRoZSBmaXJzdCBlbGVtZW50IG9mCi0rICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb2YgVHlw ZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZmlsZS4gICovCi0gc3RhdGljIGNvbnN0IHN0cnVj dCBvYmpmaWxlX2RhdGEgKnR5cHlfb2JqZmlsZV9kYXRhX2tleTsKLSAKLSsvKiBMaW5rIFRZUEVf T0JKIHRvIGl0cyBhcHByb3ByaWF0ZSBsaXN0LiAgRWl0aGVyIHRvIGl0cyBvYmpmaWxlIGFzc29j aWF0ZWQgb25lCi0rICAgb3IgYXQgbGVhc3QgdG8gdGhlIGdsb2JhbCBsaXN0IGZvciBUWVBFX0RJ U0NBUkRBQkxFIFR5cGVzLiAgUGVybWFuZW50IHR5cGVzCi0rICAgZG8gbm90IGdldCBsaW5rZWQg YW55d2hlcmUuICAqLwotK3N0YXRpYyB2b2lkCi0rdHlweV9saW5rICh0eXBlX29iamVjdCAqdHlw ZV9vYmopCi0rewotKyAgdHlwZV9vYmotPnByZXYgPSBOVUxMOwotKwotKyAgaWYgKHR5cGVfb2Jq LT50eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZV9vYmotPnR5cGUpKQotKyAgICB7Ci0rICAgICAg c3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBUWVBFX09CSkZJTEUgKHR5cGVfb2JqLT50eXBlKTsK LSsKLSsgICAgICB0eXBlX29iai0+bmV4dCA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9v YmpmaWxlX2RhdGFfa2V5KTsKLSsgICAgICBpZiAodHlwZV9vYmotPm5leHQpCi0rCXR5cGVfb2Jq LT5uZXh0LT5wcmV2ID0gdHlwZV9vYmo7Ci0rICAgICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmls ZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBlX29iaik7Ci0rICAgIH0KLSsjaWYgMAotKyAg ZWxzZSBpZiAodHlwZV9vYmotPnR5cGUgJiYgVFlQRV9ESVNDQVJEQUJMRSAodHlwZV9vYmotPnR5 cGUpKQotKyAgICB7Ci0rICAgICAgdHlwZV9vYmotPm5leHQgPSBweXR5X29iamVjdHNfZGlzY2Fy ZGFibGU7Ci0rICAgICAgaWYgKHR5cGVfb2JqLT5uZXh0KQotKwl0eXBlX29iai0+bmV4dC0+cHJl diA9IHR5cGVfb2JqOwotKyAgICAgIHB5dHlfb2JqZWN0c19kaXNjYXJkYWJsZSA9IHR5cGVfb2Jq OwotKyAgICB9Ci0rI2VuZGlmCi0rICBlbHNlCi0rICAgIHR5cGVfb2JqLT5uZXh0ID0gTlVMTDsK LSt9Ci0rCi0rLyogVW5saW5rIFRZUEVfT0JKIGZyb20gaXRzIGN1cnJlbnQgbGlzdC4gIFBlcm1h bmVudCB0eXBlcyBhcmUgbm90IGxpbmtlZAotKyAgIGFueXdoZXJlIGFuZCB0aGlzIGZ1bmN0aW9u IGhhcyBubyBlZmZlY3Qgb24gdGhlbS4gICovCi0rc3RhdGljIHZvaWQKLSt0eXB5X3VubGluayAo dHlwZV9vYmplY3QgKnR5cGVfb2JqKQotK3sKLSsgIGlmICh0eXBlX29iai0+cHJldikKLSsgICAg dHlwZV9vYmotPnByZXYtPm5leHQgPSB0eXBlX29iai0+bmV4dDsKLSsgIGVsc2UgaWYgKHR5cGVf b2JqLT50eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZV9vYmotPnR5cGUpKQotKyAgICB7Ci0rICAg ICAgLyogTXVzdCByZXNldCBoZWFkIG9mIGxpc3QuICAqLwotKyAgICAgIHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlX29iai0+dHlwZSk7Ci0rCi0rICAgICAgc2V0 X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBlX29iai0+ bmV4dCk7Ci0rICAgIH0KLSsjaWYgMAotKyAgZWxzZSBpZiAocHl0eV9vYmplY3RzX2Rpc2NhcmRh YmxlID09IHR5cGVfb2JqKQotKyAgICBweXR5X29iamVjdHNfZGlzY2FyZGFibGUgPSB0eXBlX29i ai0+bmV4dDsKLSsjZW5kaWYKLSsKLSsgIGlmICh0eXBlX29iai0+bmV4dCkKLSsgICAgdHlwZV9v YmotPm5leHQtPnByZXYgPSB0eXBlX29iai0+cHJldjsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBz YXZlX29iamZpbGVfdHlwZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkK LSB7Ci1AQCAtMTE4NSwxMiArMTI1MCwxMyBAQCBzYXZlX29iamZpbGVfdHlwZXMgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKLSAgICAgewotICAgICAgIHR5cGVfb2JqZWN0 ICpuZXh0ID0gb2JqLT5uZXh0OwotIAotLSAgICAgIGh0YWJfZW1wdHkgKGNvcGllZF90eXBlcyk7 Ci0rICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxFIChvYmotPnR5cGUpID09IG9iamZpbGUp OwotKyAgICAgIHR5cHlfdW5saW5rIChvYmopOwotIAotLSAgICAgIG9iai0+dHlwZSA9IGNvcHlf dHlwZV9yZWN1cnNpdmUgKG9iamZpbGUsIG9iai0+dHlwZSwgY29waWVkX3R5cGVzKTsKLSsgICAg ICBvYmotPnR5cGUgPSBjb3B5X3R5cGVfcmVjdXJzaXZlIChvYmotPnR5cGUsIGNvcGllZF90eXBl cyk7Ci0gCi0tICAgICAgb2JqLT5uZXh0ID0gTlVMTDsKLS0gICAgICBvYmotPnByZXYgPSBOVUxM OwotKyAgICAgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAob2JqLT50eXBlKSA9PSBOVUxMKTsK LSsgICAgICB0eXB5X2xpbmsgKG9iaik7Ci0gCi0gICAgICAgb2JqID0gbmV4dDsKLSAgICAgfQot QEAgLTEyMDEsNDMgKzEyNjcsMjggQEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCi0gfQotIAotIHN0YXRpYyB2b2lkCi0tc2V0X3R5cGUg KHR5cGVfb2JqZWN0ICpvYmosIHN0cnVjdCB0eXBlICp0eXBlKQotK3R5cHlfZGVhbGxvYyAoUHlP YmplY3QgKm9iaikKLSB7Ci0tICBvYmotPnR5cGUgPSB0eXBlOwotLSAgb2JqLT5wcmV2ID0gTlVM TDsKLS0gIGlmICh0eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZSkpCi0tICAgIHsKLS0gICAgICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZSk7Ci0rICB0eXBlX29i amVjdCAqdHlwZV9vYmogPSAodHlwZV9vYmplY3QgKikgb2JqOwotIAotLSAgICAgIG9iai0+bmV4 dCA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5KTsKLS0gICAg ICBpZiAob2JqLT5uZXh0KQotLQlvYmotPm5leHQtPnByZXYgPSBvYmo7Ci0tICAgICAgc2V0X29i amZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCBvYmopOwotLSAgICB9 Ci0tICBlbHNlCi0tICAgIG9iai0+bmV4dCA9IE5VTEw7Ci0rICB0eXB5X3VubGluayAodHlwZV9v YmopOwotKwotKyAgdHlwZV9vYmotPm9iX3R5cGUtPnRwX2ZyZWUgKG9iaik7Ci0gfQotIAotKyNp ZiAwCi0rLyogQ2FsbCB0eXBlX21hcmtfdXNlZCBmb3IgYW55IFRZUEVzIHJlZmVyZW5jZWQgZnJv bSB0aGlzIEdEQiBzb3VyY2UgZmlsZS4gICovCi0gc3RhdGljIHZvaWQKLS10eXB5X2RlYWxsb2Mg KFB5T2JqZWN0ICpvYmopCi0rdHlweV90eXBlc19tYXJrX3VzZWQgKHZvaWQpCi0gewotLSAgdHlw ZV9vYmplY3QgKnR5cGUgPSAodHlwZV9vYmplY3QgKikgb2JqOwotLQotLSAgaWYgKHR5cGUtPnBy ZXYpCi0tICAgIHR5cGUtPnByZXYtPm5leHQgPSB0eXBlLT5uZXh0OwotLSAgZWxzZSBpZiAodHlw ZS0+dHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUtPnR5cGUpKQotLSAgICB7Ci0tICAgICAgLyog TXVzdCByZXNldCBoZWFkIG9mIGxpc3QuICAqLwotLSAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlID0gVFlQRV9PQkpGSUxFICh0eXBlLT50eXBlKTsKLS0KLS0gICAgICBpZiAob2JqZmlsZSkK LS0Jc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBl LT5uZXh0KTsKLS0gICAgfQotLSAgaWYgKHR5cGUtPm5leHQpCi0tICAgIHR5cGUtPm5leHQtPnBy ZXYgPSB0eXBlLT5wcmV2OwotKyAgdHlwZV9vYmplY3QgKnR5cGVfb2JqOwotIAotLSAgdHlwZS0+ b2JfdHlwZS0+dHBfZnJlZSAodHlwZSk7Ci0rICBmb3IgKHR5cGVfb2JqID0gcHl0eV9vYmplY3Rz X2Rpc2NhcmRhYmxlOwotKyAgICAgICB0eXBlX29iaiAhPSBOVUxMOwotKyAgICAgICB0eXBlX29i aiA9IHR5cGVfb2JqLT5uZXh0KQotKyAgICB0eXBlX21hcmtfdXNlZCAodHlwZV9vYmotPnR5cGUp OwotIH0KLSsjZW5kaWYKLSAKLSAvKiBSZXR1cm4gbnVtYmVyIG9mIGZpZWxkcyAoImxlbmd0aCIg b2YgdGhlIGZpZWxkIGRpY3Rpb25hcnkpLiAgKi8KLSAKLUBAIC0xNDU3LDcgKzE1MDgsMTAgQEAg dHlwZV90b190eXBlX29iamVjdCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gCi0gICB0eXBlX29iaiA9 IFB5T2JqZWN0X05ldyAodHlwZV9vYmplY3QsICZ0eXBlX29iamVjdF90eXBlKTsKLSAgIGlmICh0 eXBlX29iaikKLS0gICAgc2V0X3R5cGUgKHR5cGVfb2JqLCB0eXBlKTsKLSsgICAgewotKyAgICAg IHR5cGVfb2JqLT50eXBlID0gdHlwZTsKLSsgICAgICB0eXB5X2xpbmsgKHR5cGVfb2JqKTsKLSsg ICAgfQotIAotICAgcmV0dXJuIChQeU9iamVjdCAqKSB0eXBlX29iajsKLSB9Ci1AQCAtMTUzNyw2 ICsxNTkxLDEwIEBAIGdkYnB5X2luaXRpYWxpemVfdHlwZXMgKHZvaWQpCi0gCi0gICBQeV9JTkNS RUYgKCZmaWVsZF9vYmplY3RfdHlwZSk7Ci0gICBQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1 bGUsICJGaWVsZCIsIChQeU9iamVjdCAqKSAmZmllbGRfb2JqZWN0X3R5cGUpOwotKwotKyNpZiAw Ci0rICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkICh0eXB5X3R5cGVzX21hcmtfdXNlZCk7Ci0r I2VuZGlmCi0gfQotIAotIAwKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMgYi9n ZGIvcHl0aG9uL3B5LXZhbHVlLmMKLWluZGV4IDZmNjdiZGIuLjVkZGQ2YmMgMTAwNjQ0Ci0tLS0g YS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKLSsrKyBiL2dkYi9weXRob24vcHktdmFsdWUuYwotQEAg LTI5LDYgKzI5LDcgQEAKLSAjaW5jbHVkZSAiZXhwcmVzc2lvbi5oIgotICNpbmNsdWRlICJjcC1h YmkuaCIKLSAjaW5jbHVkZSAicHl0aG9uLmgiCi0rI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0gCi0g I2lmZGVmIEhBVkVfUFlUSE9OCi0gCi1AQCAtMTM3OCw2ICsxMzc5LDE5IEBAIGdkYnB5X2lzX3Zh bHVlX29iamVjdCAoUHlPYmplY3QgKm9iaikKLSAgIHJldHVybiBQeU9iamVjdF9UeXBlQ2hlY2sg KG9iaiwgJnZhbHVlX29iamVjdF90eXBlKTsKLSB9Ci0gCi0rI2lmIDAKLSsvKiBDYWxsIHR5cGVf bWFya191c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRoaXMgR0RCIHNvdXJjZSBm aWxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3B5dGhvbl90eXBlc19tYXJrX3VzZWQgKHZvaWQp Ci0rewotKyAgdmFsdWVfb2JqZWN0ICppdGVyOwotKwotKyAgZm9yIChpdGVyID0gdmFsdWVzX2lu X3B5dGhvbjsgaXRlcjsgaXRlciA9IGl0ZXItPm5leHQpCi0rICAgIHR5cGVfbWFya191c2VkICh2 YWx1ZV90eXBlIChpdGVyLT52YWx1ZSkpOwotK30KLSsjZW5kaWYKLSsKLSB2b2lkCi0gZ2RicHlf aW5pdGlhbGl6ZV92YWx1ZXMgKHZvaWQpCi0gewotQEAgLTEzODgsNiArMTQwMiwxMCBAQCBnZGJw eV9pbml0aWFsaXplX3ZhbHVlcyAodm9pZCkKLSAgIFB5TW9kdWxlX0FkZE9iamVjdCAoZ2RiX21v ZHVsZSwgIlZhbHVlIiwgKFB5T2JqZWN0ICopICZ2YWx1ZV9vYmplY3RfdHlwZSk7Ci0gCi0gICB2 YWx1ZXNfaW5fcHl0aG9uID0gTlVMTDsKLSsKLSsjaWYgMAotKyAgb2JzZXJ2ZXJfYXR0YWNoX21h cmtfdXNlZCAocHl0aG9uX3R5cGVzX21hcmtfdXNlZCk7Ci0rI2VuZGlmCi0gfQotIAotIAwKLWRp ZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi5jIGIvZ2RiL3B5dGhvbi9weXRob24uYwotaW5k ZXggYzY2ZWZlNC4uMDIxMWZjYiAxMDA2NDQKLS0tLSBhL2dkYi9weXRob24vcHl0aG9uLmMKLSsr KyBiL2dkYi9weXRob24vcHl0aG9uLmMKLUBAIC02NiwxMCArNjYsMTMgQEAgc3RhdGljIGNvbnN0 IGNoYXIgKmdkYnB5X3Nob3VsZF9wcmludF9zdGFjayA9IHB5dGhvbl9leGNwX21lc3NhZ2U7Ci0g I2luY2x1ZGUgImxpbmVzcGVjLmgiCi0gI2luY2x1ZGUgInNvdXJjZS5oIgotICNpbmNsdWRlICJ2 ZXJzaW9uLmgiCi0rI2luY2x1ZGUgImluZmVyaW9yLmgiCi0rI2luY2x1ZGUgImdkYnRocmVhZC5o IgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCi0gI2luY2x1 ZGUgIm9ic2VydmVyLmgiCi0gI2luY2x1ZGUgImludGVycHMuaCIKLSsjaW5jbHVkZSAiZXZlbnQt dG9wLmgiCi0gCi0gc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNbXTsKLSAKLUBAIC05Nzks NiArOTgyLDUzIEBAIGdkYnB5X3ByaW50X3N0YWNrICh2b2lkKQotIAotIC8qIFJldHVybiB0aGUg Y3VycmVudCBQcm9nc3BhY2UuCi0gICAgVGhlcmUgYWx3YXlzIGlzIG9uZS4gICovCi0rLyogVHJ1 ZSBpZiAnZ2RiIC1QJyB3YXMgdXNlZCwgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KLStzdGF0aWMgaW50 IHJ1bm5pbmdfcHl0aG9uX3NjcmlwdDsKLSsKLSsvKiBUcnVlIGlmIHdlIGFyZSBjdXJyZW50bHkg aW4gYSBjYWxsIHRvICdnZGIuY2xpJywgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KLStzdGF0aWMgaW50 IGluX2NsaTsKLSsKLSsvKiBFbnRlciB0aGUgY29tbWFuZCBsb29wLiAgKi8KLSsKLStzdGF0aWMg UHlPYmplY3QgKgotK2dkYnB5X2NsaSAoUHlPYmplY3QgKnVudXNlZDEsIFB5T2JqZWN0ICp1bnVz ZWQyKQotK3sKLSsgIGlmICghIHJ1bm5pbmdfcHl0aG9uX3NjcmlwdCB8fCBpbl9jbGkpCi0rICAg IHJldHVybiBQeUVycl9Gb3JtYXQgKFB5RXhjX1J1bnRpbWVFcnJvciwgImNhbm5vdCBpbnZva2Ug Q0xJIHJlY3Vyc2l2ZWx5Iik7Ci0rCi0rICBpbl9jbGkgPSAxOwotKyAgY2xpX2NvbW1hbmRfbG9v cCAoKTsKLSsgIGluX2NsaSA9IDA7Ci0rCi0rICBQeV9SRVRVUk5fTk9ORTsKLSt9Ci0rCi0rLyog U2V0IHVwIHRoZSBQeXRob24gYXJndW1lbnQgdmVjdG9yIGFuZCBldmFsdWF0ZSBhIHNjcmlwdC4g IFRoaXMgaXMKLSsgICB1c2VkIHRvIGltcGxlbWVudCAnZ2RiIC1QJy4gICovCisgCisrI2lmIDAK KysvKiBGaXJzdCBlbGVtZW50IG9mIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIFRZUEVfRElTQ0FS REFCTEUgVHlwZXMuICAqLworK3N0YXRpYyB0eXBlX29iamVjdCAqcHl0eV9vYmplY3RzX2Rpc2Nh cmRhYmxlOworKyNlbmRpZgogKwotK3ZvaWQKLStydW5fcHl0aG9uX3NjcmlwdCAoaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQorIHN0YXRpYyBQeVR5cGVPYmplY3QgdHlwZV9vYmplY3RfdHlwZTsKKyAK KyAvKiBBIEZpZWxkIG9iamVjdC4gICovCitAQCAtMTE5Miw4ICsxMjAyLDYzIEBAIHR5cHlfcmlj aGNvbXBhcmUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKKyAKKyAM CisgCisrLyogS2V5IGFzc29jaWF0ZWQgd2l0aCBlYWNoIG9iamZpbGUgcG9pbnRpbmcgdG8gdGhl IGZpcnN0IGVsZW1lbnQgb2YKKysgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvZiBUeXBlcyBhc3Nv Y2lhdGVkIHdpdGggdGhpcyBvYmpmaWxlLiAgKi8KKyBzdGF0aWMgY29uc3Qgc3RydWN0IG9iamZp bGVfZGF0YSAqdHlweV9vYmpmaWxlX2RhdGFfa2V5OworIAorKy8qIExpbmsgVFlQRV9PQkogdG8g aXRzIGFwcHJvcHJpYXRlIGxpc3QuICBFaXRoZXIgdG8gaXRzIG9iamZpbGUgYXNzb2NpYXRlZCBv bmUKKysgICBvciBhdCBsZWFzdCB0byB0aGUgZ2xvYmFsIGxpc3QgZm9yIFRZUEVfRElTQ0FSREFC TEUgVHlwZXMuICBQZXJtYW5lbnQgdHlwZXMKKysgICBkbyBub3QgZ2V0IGxpbmtlZCBhbnl3aGVy ZS4gICovCisrc3RhdGljIHZvaWQKKyt0eXB5X2xpbmsgKHR5cGVfb2JqZWN0ICp0eXBlX29iaikK ICt7Ci0rICBGSUxFICppbnB1dDsKKysgIHR5cGVfb2JqLT5wcmV2ID0gTlVMTDsKICsKLSsgIC8q IFdlIG5ldmVyIGZyZWUgdGhpcywgc2luY2Ugd2UgcGxhbiB0byBleGl0IGF0IHRoZSBlbmQuICAq LwotKyAgZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFu Z3VhZ2UpOworKyAgaWYgKHR5cGVfb2JqLT50eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZV9vYmot PnR5cGUpKQorKyAgICB7CisrICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBUWVBFX09C SkZJTEUgKHR5cGVfb2JqLT50eXBlKTsKICsKLSsgIHJ1bm5pbmdfcHl0aG9uX3NjcmlwdCA9IDE7 Ci0rICBQeVN5c19TZXRBcmd2IChhcmdjIC0gMSwgYXJndiArIDEpOwotKyAgaW5wdXQgPSBmb3Bl biAoYXJndlswXSwgInIiKTsKLSsgIGlmICghIGlucHV0KQorKyAgICAgIHR5cGVfb2JqLT5uZXh0 ID0gb2JqZmlsZV9kYXRhIChvYmpmaWxlLCB0eXB5X29iamZpbGVfZGF0YV9rZXkpOworKyAgICAg IGlmICh0eXBlX29iai0+bmV4dCkKKysJdHlwZV9vYmotPm5leHQtPnByZXYgPSB0eXBlX29iajsK KysgICAgICBzZXRfb2JqZmlsZV9kYXRhIChvYmpmaWxlLCB0eXB5X29iamZpbGVfZGF0YV9rZXks IHR5cGVfb2JqKTsKKysgICAgfQorKyNpZiAwCisrICBlbHNlIGlmICh0eXBlX29iai0+dHlwZSAm JiBUWVBFX0RJU0NBUkRBQkxFICh0eXBlX29iai0+dHlwZSkpCiArICAgIHsKLSsgICAgICBmcHJp bnRmIChzdGRlcnIsICJjb3VsZCBub3Qgb3BlbiAlczogJXNcbiIsIGFyZ3ZbMF0sIHN0cmVycm9y IChlcnJubykpOwotKyAgICAgIGV4aXQgKDEpOworKyAgICAgIHR5cGVfb2JqLT5uZXh0ID0gcHl0 eV9vYmplY3RzX2Rpc2NhcmRhYmxlOworKyAgICAgIGlmICh0eXBlX29iai0+bmV4dCkKKysJdHlw ZV9vYmotPm5leHQtPnByZXYgPSB0eXBlX29iajsKKysgICAgICBweXR5X29iamVjdHNfZGlzY2Fy ZGFibGUgPSB0eXBlX29iajsKICsgICAgfQotKyAgUHlSdW5fU2ltcGxlRmlsZSAoaW5wdXQsIGFy Z3ZbMF0pOwotKyAgZmNsb3NlIChpbnB1dCk7Ci0rICBleGl0ICgwKTsKKysjZW5kaWYKKysgIGVs c2UKKysgICAgdHlwZV9vYmotPm5leHQgPSBOVUxMOwogK30KICsKLSsMCisrLyogVW5saW5rIFRZ UEVfT0JKIGZyb20gaXRzIGN1cnJlbnQgbGlzdC4gIFBlcm1hbmVudCB0eXBlcyBhcmUgbm90IGxp bmtlZAorKyAgIGFueXdoZXJlIGFuZCB0aGlzIGZ1bmN0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhl bS4gICovCisrc3RhdGljIHZvaWQKKyt0eXB5X3VubGluayAodHlwZV9vYmplY3QgKnR5cGVfb2Jq KQorK3sKKysgIGlmICh0eXBlX29iai0+cHJldikKKysgICAgdHlwZV9vYmotPnByZXYtPm5leHQg PSB0eXBlX29iai0+bmV4dDsKKysgIGVsc2UgaWYgKHR5cGVfb2JqLT50eXBlICYmIFRZUEVfT0JK RklMRSAodHlwZV9vYmotPnR5cGUpKQorKyAgICB7CisrICAgICAgLyogTXVzdCByZXNldCBoZWFk IG9mIGxpc3QuICAqLworKyAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpG SUxFICh0eXBlX29iai0+dHlwZSk7CiArCi0gCi0gc3RhdGljIFB5T2JqZWN0ICoKLSBnZGJweV9n ZXRfY3VycmVudF9wcm9nc3BhY2UgKFB5T2JqZWN0ICp1bnVzZWQxLCBQeU9iamVjdCAqdW51c2Vk MikKLUBAIC0xNDIwLDYgKzE0NzAsOCBAQCBzdGF0aWMgUHlNZXRob2REZWYgR2RiTWV0aG9kc1td ID0KLSAgICAgIkdldCBhIHZhbHVlIGZyb20gaGlzdG9yeSIgfSwKLSAgIHsgImV4ZWN1dGUiLCAo UHlDRnVuY3Rpb24pIGV4ZWN1dGVfZ2RiX2NvbW1hbmQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZ V09SRFMsCi0gICAgICJFeGVjdXRlIGEgZ2RiIGNvbW1hbmQiIH0sCi0rICB7ICJjbGkiLCBnZGJw eV9jbGksIE1FVEhfTk9BUkdTLAotKyAgICAiRW50ZXIgdGhlIGdkYiBDTEkiIH0sCi0gICB7ICJw YXJhbWV0ZXIiLCBnZGJweV9wYXJhbWV0ZXIsIE1FVEhfVkFSQVJHUywKLSAgICAgIlJldHVybiBh IGdkYiBwYXJhbWV0ZXIncyB2YWx1ZSIgfSwKLSAKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5 dGhvbi5oIGIvZ2RiL3B5dGhvbi9weXRob24uaAotaW5kZXggZGQ3MDY2Zi4uZjBmNmU5MCAxMDA2 NDQKLS0tLSBhL2dkYi9weXRob24vcHl0aG9uLmgKLSsrKyBiL2dkYi9weXRob24vcHl0aG9uLmgK LUBAIC0zMCw2ICszMCw4IEBAIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1hbmQg KHN0cnVjdCBjb21tYW5kX2xpbmUgKik7Ci0gCi0gdm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdCAo RklMRSAqZmlsZSwgY29uc3QgY2hhciAqZmlsZW5hbWUpOwotIAotK3ZvaWQgcnVuX3B5dGhvbl9z Y3JpcHQgKGludCBhcmdjLCBjaGFyICoqYXJndik7CisrICAgICAgc2V0X29iamZpbGVfZGF0YSAo b2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBlX29iai0+bmV4dCk7CisrICAgIH0K KysjaWYgMAorKyAgZWxzZSBpZiAocHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlID09IHR5cGVfb2Jq KQorKyAgICBweXR5X29iamVjdHNfZGlzY2FyZGFibGUgPSB0eXBlX29iai0+bmV4dDsKKysjZW5k aWYKICsKLSBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0gCQkJICAgICAgaW50IGVtYmVkZGVkX29mZnNldCwg Q09SRV9BRERSIGFkZHJlc3MsCi0gCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50 IHJlY3Vyc2UsCi1kaWZmIC0tZ2l0IGEvZ2RiL3JlY29yZC5jIGIvZ2RiL3JlY29yZC5jCi1pbmRl eCBiYjBmZTUyLi5lYzQyYWFjIDEwMDY0NAotLS0tIGEvZ2RiL3JlY29yZC5jCi0rKysgYi9nZGIv cmVjb3JkLmMKLUBAIC0zMiw2ICszMiw3IEBACi0gI2luY2x1ZGUgImdjb3JlLmgiCi0gI2luY2x1 ZGUgImV2ZW50LWxvb3AuaCIKLSAjaW5jbHVkZSAiaW5mLWxvb3AuaCIKLSsjaW5jbHVkZSAiZ2Ri X2JmZC5oIgotIAotICNpbmNsdWRlIDxzaWduYWwuaD4KLSAKLUBAIC0yNjM4LDcgKzI2MzksNyBA QCByZWNvcmRfc2F2ZV9jbGVhbnVwcyAodm9pZCAqZGF0YSkKLSAgIGJmZCAqb2JmZCA9IGRhdGE7 Ci0gICBjaGFyICpwYXRobmFtZSA9IHhzdHJkdXAgKGJmZF9nZXRfZmlsZW5hbWUgKG9iZmQpKTsK LSAKLS0gIGJmZF9jbG9zZSAob2JmZCk7Ci0rICBnZGJfYmZkX3VucmVmIChvYmZkKTsKLSAgIHVu bGluayAocGF0aG5hbWUpOwotICAgeGZyZWUgKHBhdGhuYW1lKTsKLSB9Ci1AQCAtMjg1NCw3ICsy ODU1LDcgQEAgY21kX3JlY29yZF9zYXZlIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0gICAg IH0KLSAKLSAgIGRvX2NsZWFudXBzIChzZXRfY2xlYW51cHMpOwotLSAgYmZkX2Nsb3NlIChvYmZk KTsKLSsgIGdkYl9iZmRfdW5yZWYgKG9iZmQpOwotICAgZGlzY2FyZF9jbGVhbnVwcyAob2xkX2Ns ZWFudXBzKTsKLSAKLSAgIC8qIFN1Y2NlZWRlZC4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3JlbW90 ZS1tMzJyLXNkaS5jIGIvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jCi1pbmRleCA0N2Y0NDA1Li44NTI2 OGI2IDEwMDY0NAotLS0tIGEvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jCi0rKysgYi9nZGIvcmVtb3Rl LW0zMnItc2RpLmMKLUBAIC0zOSw2ICszOSw3IEBACi0gI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0g I2luY2x1ZGUgPHNpZ25hbC5oPgotICNpbmNsdWRlIDx0aW1lLmg+Ci0rI2luY2x1ZGUgImdkYl9i ZmQuaCIKLSAKLSAKLSAjaW5jbHVkZSAic2VyaWFsLmgiCi1AQCAtMTI1NywxMyArMTI1OCwxMyBA QCBtMzJyX2xvYWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSAgIGlmICghZmlsZW5hbWUp Ci0gICAgIGZpbGVuYW1lID0gZ2V0X2V4ZWNfZmlsZSAoMSk7Ci0gCi0tICBwYmZkID0gYmZkX29w ZW5yIChmaWxlbmFtZSwgZ251dGFyZ2V0KTsKLSsgIHBiZmQgPSBnZGJfYmZkX29wZW5yIChmaWxl bmFtZSwgZ251dGFyZ2V0KTsKLSAgIGlmIChwYmZkID09IE5VTEwpCi0gICAgIHsKLSAgICAgICBw ZXJyb3Jfd2l0aF9uYW1lIChmaWxlbmFtZSk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0tICBv bGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfYmZkX2Nsb3NlIChwYmZkKTsKLSsgIG9sZF9jaGFpbiA9 IG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKHBiZmQpOwotIAotICAgaWYgKCFiZmRfY2hlY2tfZm9y bWF0IChwYmZkLCBiZmRfb2JqZWN0KSkKLSAgICAgZXJyb3IgKF8oIlwiJXNcIiBpcyBub3QgYW4g b2JqZWN0IGZpbGU6ICVzIiksIGZpbGVuYW1lLAotZGlmZiAtLWdpdCBhL2dkYi9yZW1vdGUtbWlw cy5jIGIvZ2RiL3JlbW90ZS1taXBzLmMKLWluZGV4IGJhYmJmMTkuLmRiNDM4MWIgMTAwNjQ0Ci0t LS0gYS9nZGIvcmVtb3RlLW1pcHMuYwotKysrIGIvZ2RiL3JlbW90ZS1taXBzLmMKLUBAIC0zNiw2 ICszNiw3IEBACi0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgIm1pcHMtdGRlcC5oIgot ICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKLSsjaW5jbHVkZSAiZ2RiX2JmZC5oIgotIAwKLSAKLSAv KiBCcmVha3BvaW50IHR5cGVzLiAgVmFsdWVzIDAsIDEsIGFuZCAyIG11c3QgYWdyZWUgd2l0aCB0 aGUgd2F0Y2gKLUBAIC0yNzgzLDIwICsyNzg0LDIzIEBAIG1pcHNfbG9hZF9zcmVjIChjaGFyICph cmdzKQotICAgdW5zaWduZWQgaW50IGk7Ci0gICB1bnNpZ25lZCBpbnQgc3JlY19mcmFtZSA9IDIw MDsKLSAgIGludCByZWNsZW47Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKLSAgIHN0YXRp YyBpbnQgaGFzaG1hcmsgPSAxOwotIAotICAgYnVmZmVyID0gYWxsb2NhIChzcmVjX2ZyYW1lICog MiArIDI1Nik7Ci0gCi0tICBhYmZkID0gYmZkX29wZW5yIChhcmdzLCAwKTsKLSsgIGFiZmQgPSBn ZGJfYmZkX29wZW5yIChhcmdzLCAwKTsKLSAgIGlmICghYWJmZCkKLSAgICAgewotICAgICAgIHBy aW50Zl9maWx0ZXJlZCAoIlVuYWJsZSB0byBvcGVuIGZpbGUgJXNcbiIsIGFyZ3MpOwotICAgICAg IHJldHVybjsKLSAgICAgfQotIAotKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cF9iZmRfdW5yZWYg KGFiZmQpOwotICAgaWYgKGJmZF9jaGVja19mb3JtYXQgKGFiZmQsIGJmZF9vYmplY3QpID09IDAp CisrICBpZiAodHlwZV9vYmotPm5leHQpCisrICAgIHR5cGVfb2JqLT5uZXh0LT5wcmV2ID0gdHlw ZV9vYmotPnByZXY7CisrfQorKworIHN0YXRpYyB2b2lkCisgc2F2ZV9vYmpmaWxlX3R5cGVzIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCisgeworQEAgLTEyMTEsMTIgKzEy NzYsMTMgQEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9p ZCAqZGF0dW0pCiAgICAgIHsKLSAgICAgICBwcmludGZfZmlsdGVyZWQgKCJGaWxlIGlzIG5vdCBh biBvYmplY3QgZmlsZVxuIik7Ci0rICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotICAgICAg IHJldHVybjsKLSAgICAgfQotIAotQEAgLTI4NTAsNiArMjg1NCw3IEBAIG1pcHNfbG9hZF9zcmVj IChjaGFyICphcmdzKQotICAgc2VuZF9zcmVjIChzcmVjLCByZWNsZW4sIGFiZmQtPnN0YXJ0X2Fk ZHJlc3MpOwotIAotICAgc2VyaWFsX2ZsdXNoX2lucHV0IChtaXBzX2Rlc2MpOwotKyAgZG9fY2xl YW51cHMgKGNsZWFudXApOwotIH0KLSAKLSAvKgotQEAgLTMzNjYsMjAgKzMzNzEsMjMgQEAgcG1v bl9sb2FkX2Zhc3QgKGNoYXIgKmZpbGUpCi0gICBpbnQgYmludG90YWwgPSAwOwotICAgaW50IGZp bmFsID0gMDsKLSAgIGludCBmaW5pc2hlZCA9IDA7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51 cDsKKyAgICAgICB0eXBlX29iamVjdCAqbmV4dCA9IG9iai0+bmV4dDsKICAKLSAgIGJ1ZmZlciA9 IChjaGFyICopIHhtYWxsb2MgKE1BWFJFQ1NJWkUgKyAxKTsKLSAgIGJpbmJ1ZiA9ICh1bnNpZ25l ZCBjaGFyICopIHhtYWxsb2MgKEJJTkNIVU5LKTsKKy0gICAgICBodGFiX2VtcHR5IChjb3BpZWRf dHlwZXMpOworKyAgICAgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAob2JqLT50eXBlKSA9PSBv YmpmaWxlKTsKKysgICAgICB0eXB5X3VubGluayAob2JqKTsKICAKLS0gIGFiZmQgPSBiZmRfb3Bl bnIgKGZpbGUsIDApOwotKyAgYWJmZCA9IGdkYl9iZmRfb3BlbnIgKGZpbGUsIDApOwotICAgaWYg KCFhYmZkKQotICAgICB7Ci0gICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiVW5hYmxlIHRvIG9wZW4g ZmlsZSAlc1xuIiwgZmlsZSk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0rICBjbGVhbnVwID0g bWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoYWJmZCk7CistICAgICAgb2JqLT50eXBlID0gY29weV90 eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwgb2JqLT50eXBlLCBjb3BpZWRfdHlwZXMpOworKyAgICAg IG9iai0+dHlwZSA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKG9iai0+dHlwZSwgY29waWVkX3R5cGVz KTsKICAKLSAgIGlmIChiZmRfY2hlY2tfZm9ybWF0IChhYmZkLCBiZmRfb2JqZWN0KSA9PSAwKQot ICAgICB7Ci0gICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiRmlsZSBpcyBub3QgYW4gb2JqZWN0IGZp bGVcbiIpOwotKyAgICAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSAgICAgICByZXR1cm47Ci0g ICAgIH0KKy0gICAgICBvYmotPm5leHQgPSBOVUxMOworLSAgICAgIG9iai0+cHJldiA9IE5VTEw7 CisrICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxFIChvYmotPnR5cGUpID09IE5VTEwpOwor KyAgICAgIHR5cHlfbGluayAob2JqKTsKICAKLUBAIC0zNTAzLDYgKzM1MTEsNyBAQCBwbW9uX2xv YWRfZmFzdCAoY2hhciAqZmlsZSkKLSAgICAgICBwbW9uX2VuZF9kb3dubG9hZCAoZmluYWwsIGJp bnRvdGFsKTsKKyAgICAgICBvYmogPSBuZXh0OwogICAgICB9Ci0gCi0rICBkb19jbGVhbnVwcyAo Y2xlYW51cCk7Ci0gICByZXR1cm47Ci0gfQotIAotZGlmZiAtLWdpdCBhL2dkYi9yZW1vdGUuYyBi L2dkYi9yZW1vdGUuYwotaW5kZXggMWM5MzY3ZC4uZjJiNWU3YiAxMDA2NDQKLS0tLSBhL2dkYi9y ZW1vdGUuYwotKysrIGIvZ2RiL3JlbW90ZS5jCi1AQCAtNDIsNiArNDIsNyBAQAotICNpbmNsdWRl ICJjbGkvY2xpLWRlY29kZS5oIgotICNpbmNsdWRlICJjbGkvY2xpLXNldHNob3cuaCIKLSAjaW5j bHVkZSAidGFyZ2V0LWRlc2NyaXB0aW9ucy5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0gCi0g I2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci1AQCAtOTgyMywxMSAr OTgyNCwxMyBAQCByZW1vdGVfZmlsZW5hbWVfcCAoY29uc3QgY2hhciAqZmlsZW5hbWUpCi0gYmZk ICoKLSByZW1vdGVfYmZkX29wZW4gKGNvbnN0IGNoYXIgKnJlbW90ZV9maWxlLCBjb25zdCBjaGFy ICp0YXJnZXQpCi0gewotLSAgcmV0dXJuIGJmZF9vcGVucl9pb3ZlYyAocmVtb3RlX2ZpbGUsIHRh cmdldCwKLS0JCQkgIHJlbW90ZV9iZmRfaW92ZWNfb3BlbiwgTlVMTCwKLS0JCQkgIHJlbW90ZV9i ZmRfaW92ZWNfcHJlYWQsCi0tCQkJICByZW1vdGVfYmZkX2lvdmVjX2Nsb3NlLAotLQkJCSAgcmVt b3RlX2JmZF9pb3ZlY19zdGF0KTsKLSsgIGJmZCAqYWJmZCA9IGdkYl9iZmRfb3BlbnJfaW92ZWMg KHJlbW90ZV9maWxlLCB0YXJnZXQsCi0rCQkJCSAgIHJlbW90ZV9iZmRfaW92ZWNfb3BlbiwgTlVM TCwKLSsJCQkJICAgcmVtb3RlX2JmZF9pb3ZlY19wcmVhZCwKLSsJCQkJICAgcmVtb3RlX2JmZF9p b3ZlY19jbG9zZSwKLSsJCQkJICAgcmVtb3RlX2JmZF9pb3ZlY19zdGF0KTsKLSsKLSsgIHJldHVy biBhYmZkOworQEAgLTEyMjcsNDMgKzEyOTMsMjggQEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCiAgfQogIAotIHZvaWQKLWRpZmYgLS1n aXQgYS9nZGIvcnM2MDAwLW5hdC5jIGIvZ2RiL3JzNjAwMC1uYXQuYwotaW5kZXggMGEyMDAwYS4u OWI4ZWZkMyAxMDA2NDQKLS0tLSBhL2dkYi9yczYwMDAtbmF0LmMKLSsrKyBiL2dkYi9yczYwMDAt bmF0LmMKLUBAIC03MzAsNyArNzMwLDcgQEAgc3RhdGljIHN0cnVjdCB2bWFwICoKLSBhZGRfdm1h cCAoTGRJbmZvICpsZGkpCisgc3RhdGljIHZvaWQKKy1zZXRfdHlwZSAodHlwZV9vYmplY3QgKm9i aiwgc3RydWN0IHR5cGUgKnR5cGUpCisrdHlweV9kZWFsbG9jIChQeU9iamVjdCAqb2JqKQogIHsK LSAgIGJmZCAqYWJmZCwgKmxhc3Q7Ci0tICBjaGFyICptZW0sICpvYmpuYW1lLCAqZmlsZW5hbWU7 Ci0rICBjaGFyICptZW0sICpmaWxlbmFtZTsKLSAgIHN0cnVjdCBvYmpmaWxlICpvYmo7Ci0gICBz dHJ1Y3Qgdm1hcCAqdnA7Ci0gICBpbnQgZmQ7Ci1AQCAtNzQzLDE5ICs3NDMsMTggQEAgYWRkX3Zt YXAgKExkSW5mbyAqbGRpKQotICAgZmlsZW5hbWUgPSBMRElfRklMRU5BTUUgKGxkaSwgYXJjaDY0 KTsKLSAgIG1lbSA9IGZpbGVuYW1lICsgc3RybGVuIChmaWxlbmFtZSkgKyAxOwotICAgbWVtID0g eHN0cmR1cCAobWVtKTsKLS0gIG9iam5hbWUgPSB4c3RyZHVwIChmaWxlbmFtZSk7Ci0gCi0gICBm ZCA9IExESV9GRCAobGRpLCBhcmNoNjQpOwotICAgaWYgKGZkIDwgMCkKLSAgICAgLyogTm90ZSB0 aGF0IHRoaXMgb3BlbnMgaXQgb25jZSBmb3IgZXZlcnkgbWVtYmVyOyBhIHBvc3NpYmxlCi0gICAg ICAgIGVuaGFuY2VtZW50IHdvdWxkIGJlIHRvIG9ubHkgb3BlbiBpdCBvbmNlIGZvciBldmVyeSBv YmplY3QuICAqLwotLSAgICBhYmZkID0gYmZkX29wZW5yIChvYmpuYW1lLCBnbnV0YXJnZXQpOwot KyAgICBhYmZkID0gZ2RiX2JmZF9vcGVuciAoZmlsZW5hbWUsIGdudXRhcmdldCk7Ci0gICBlbHNl Ci0tICAgIGFiZmQgPSBiZmRfZmRvcGVuciAob2JqbmFtZSwgZ251dGFyZ2V0LCBmZCk7Ci0rICAg IGFiZmQgPSBnZGJfYmZkX2Zkb3BlbnIgKGZpbGVuYW1lLCBnbnV0YXJnZXQsIGZkKTsKLSAgIGlm ICghYWJmZCkKLSAgICAgewotICAgICAgIHdhcm5pbmcgKF8oIkNvdWxkIG5vdCBvcGVuIGAlcycg YXMgYW4gZXhlY3V0YWJsZSBmaWxlOiAlcyIpLAotLQkgICAgICAgb2JqbmFtZSwgYmZkX2Vycm1z ZyAoYmZkX2dldF9lcnJvciAoKSkpOwotKwkgICAgICAgZmlsZW5hbWUsIGJmZF9lcnJtc2cgKGJm ZF9nZXRfZXJyb3IgKCkpKTsKLSAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotQEAgLTc2 NiwzNSArNzY1LDQ0IEBAIGFkZF92bWFwIChMZEluZm8gKmxkaSkKLSAKLSAgIGVsc2UgaWYgKGJm ZF9jaGVja19mb3JtYXQgKGFiZmQsIGJmZF9hcmNoaXZlKSkKLSAgICAgewotLSAgICAgIGxhc3Qg PSAwOwotLSAgICAgIC8qIEZJWE1FPz8/IGFtIEkgdG9zc2luZyBCRkRzPyAgYmZkPyAgKi8KLS0g ICAgICB3aGlsZSAoKGxhc3QgPSBiZmRfb3BlbnJfbmV4dF9hcmNoaXZlZF9maWxlIChhYmZkLCBs YXN0KSkpCi0tCWlmIChzdHJjbXAgKG1lbSwgbGFzdC0+ZmlsZW5hbWUpID09IDApCi0tCSAgYnJl YWs7Ci0rICAgICAgbGFzdCA9IGdkYl9iZmRfb3BlbnJfbmV4dF9hcmNoaXZlZF9maWxlIChhYmZk LCBOVUxMKTsKLSsgICAgICB3aGlsZSAobGFzdCAhPSBOVUxMKQotKwl7Ci0rCSAgYmZkICpuZXh0 OwotKwotKwkgIGlmIChzdHJjbXAgKG1lbSwgbGFzdC0+ZmlsZW5hbWUpID09IDApCi0rCSAgICBi cmVhazsKLSsKLSsJICBuZXh0ID0gZ2RiX2JmZF9vcGVucl9uZXh0X2FyY2hpdmVkX2ZpbGUgKGFi ZmQsIGxhc3QpOwotKwkgIGdkYl9iZmRfdW5yZWYgKGxhc3QpOwotKwl9Ci0gCi0gICAgICAgaWYg KCFsYXN0KQotIAl7Ci0tCSAgd2FybmluZyAoXygiXCIlc1wiOiBtZW1iZXIgXCIlc1wiIG1pc3Np bmcuIiksIG9iam5hbWUsIG1lbSk7Ci0tCSAgYmZkX2Nsb3NlIChhYmZkKTsKLSsJICB3YXJuaW5n IChfKCJcIiVzXCI6IG1lbWJlciBcIiVzXCIgbWlzc2luZy4iKSwgZmlsZW5hbWUsIG1lbSk7Ci0r CSAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7Ci0gCSAgcmV0dXJuIE5VTEw7Ci0gCX0KLSAKLSAgICAg ICBpZiAoIWJmZF9jaGVja19mb3JtYXQgKGxhc3QsIGJmZF9vYmplY3QpKQotIAl7Ci0gCSAgd2Fy bmluZyAoXygiXCIlc1wiOiBtZW1iZXIgXCIlc1wiIG5vdCBpbiBleGVjdXRhYmxlIGZvcm1hdDog JXMuIiksCi0tCQkgICBvYmpuYW1lLCBtZW0sIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkp KTsKLS0JICBiZmRfY2xvc2UgKGxhc3QpOwotLQkgIGJmZF9jbG9zZSAoYWJmZCk7Ci0rCQkgICBm aWxlbmFtZSwgbWVtLCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0rCSAgZ2RiX2Jm ZF91bnJlZiAobGFzdCk7Ci0rCSAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7Ci0gCSAgcmV0dXJuIE5V TEw7Ci0gCX0KKy0gIG9iai0+dHlwZSA9IHR5cGU7CistICBvYmotPnByZXYgPSBOVUxMOworLSAg aWYgKHR5cGUgJiYgVFlQRV9PQkpGSUxFICh0eXBlKSkKKy0gICAgeworLSAgICAgIHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlKTsKKysgIHR5cGVfb2JqZWN0ICp0 eXBlX29iaiA9ICh0eXBlX29iamVjdCAqKSBvYmo7CiAgCi0gICAgICAgdnAgPSBtYXBfdm1hcCAo bGFzdCwgYWJmZCk7Ci0rICAgICAgLyogbWFwX3ZtYXAgYWNxdWlyZWQgYSByZWZlcmVuY2UgdG8g TEFTVCwgc28gd2UgY2FuIHJlbGVhc2UKLSsJIG91cnMuICAqLwotKyAgICAgIGdkYl9iZmRfdW5y ZWYgKGxhc3QpOwotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLSAgICAgICB3YXJuaW5nIChfKCJc IiVzXCI6IG5vdCBpbiBleGVjdXRhYmxlIGZvcm1hdDogJXMuIiksCi0tCSAgICAgICBvYmpuYW1l LCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0tICAgICAgYmZkX2Nsb3NlIChhYmZk KTsKLSsJICAgICAgIGZpbGVuYW1lLCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0r ICAgICAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7Ci0gICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0K LSAgIG9iaiA9IGFsbG9jYXRlX29iamZpbGUgKHZwLT5iZmQsIDApOwotQEAgLTgwMyw2ICs4MTEs MTEgQEAgYWRkX3ZtYXAgKExkSW5mbyAqbGRpKQotICAgLyogQWx3YXlzIGFkZCBzeW1ib2xzIGZv ciB0aGUgbWFpbiBvYmpmaWxlLiAgKi8KLSAgIGlmICh2cCA9PSB2bWFwIHx8IGF1dG9fc29saWJf YWRkKQotICAgICB2bWFwX2FkZF9zeW1ib2xzICh2cCk7Ci0rCi0rICAvKiBBbnl0aGluZyBuZWVk aW5nIGEgcmVmZXJlbmNlIHRvIEFCRkQgaGFzIGFscmVhZHkgYWNxdWlyZWQgaXQsIHNvCi0rICAg ICByZWxlYXNlIG91ciBsb2NhbCByZWZlcmVuY2UuICAqLwotKyAgZ2RiX2JmZF91bnJlZiAoYWJm ZCk7CistICAgICAgb2JqLT5uZXh0ID0gb2JqZmlsZV9kYXRhIChvYmpmaWxlLCB0eXB5X29iamZp bGVfZGF0YV9rZXkpOworLSAgICAgIGlmIChvYmotPm5leHQpCistCW9iai0+bmV4dC0+cHJldiA9 IG9iajsKKy0gICAgICBzZXRfb2JqZmlsZV9kYXRhIChvYmpmaWxlLCB0eXB5X29iamZpbGVfZGF0 YV9rZXksIG9iaik7CistICAgIH0KKy0gIGVsc2UKKy0gICAgb2JqLT5uZXh0ID0gTlVMTDsKKysg IHR5cHlfdW5saW5rICh0eXBlX29iaik7CiArCi0gICByZXR1cm4gdnA7CisrICB0eXBlX29iai0+ b2JfdHlwZS0+dHBfZnJlZSAob2JqKTsKICB9Ci0gDAotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1k YXJ3aW4uYyBiL2dkYi9zb2xpYi1kYXJ3aW4uYwotaW5kZXggZDUyZmI0Ni4uZGI4ZjE4NyAxMDA2 NDQKLS0tLSBhL2dkYi9zb2xpYi1kYXJ3aW4uYwotKysrIGIvZ2RiL3NvbGliLWRhcndpbi5jCi1A QCAtMjgsNiArMjgsNyBAQAotICNpbmNsdWRlICJpbmZlcmlvci5oIgotICNpbmNsdWRlICJyZWdj YWNoZS5oIgotICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKLSsjaW5jbHVkZSAiZ2RiX2JmZC5oIgot IAotICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0gCi1AQCAtMzU2LDYgKzM1Nyw3IEBAIGRhcndp bl9zb2xpYl9nZXRfYWxsX2ltYWdlX2luZm9fYWRkcl9hdF9pbml0IChzdHJ1Y3QgZGFyd2luX2lu Zm8gKmluZm8pCi0gICBnZGJfYnl0ZSAqaW50ZXJwX25hbWU7Ci0gICBDT1JFX0FERFIgbG9hZF9h ZGRyID0gMDsKLSAgIGJmZCAqZHlsZF9iZmQgPSBOVUxMOwotKyAgc3RydWN0IGNsZWFudXAgKmNs ZWFudXA7Ci0gCi0gICAvKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHdvcmsgd2l0aCBhbiBhdHRhY2hl ZCBwcm9jZXNzLiAgKi8KLSAgIGlmIChjdXJyZW50X2luZmVyaW9yICgpLT5hdHRhY2hfZmxhZykK LUBAIC0zNjYsMjQgKzM2OCwzMSBAQCBkYXJ3aW5fc29saWJfZ2V0X2FsbF9pbWFnZV9pbmZvX2Fk ZHJfYXRfaW5pdCAoc3RydWN0IGRhcndpbl9pbmZvICppbmZvKQotICAgaWYgKCFpbnRlcnBfbmFt ZSkKLSAgICAgcmV0dXJuOwotIAotKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVh bnVwLCBOVUxMKTsKLSsKLSAgIC8qIENyZWF0ZSBhIGJmZCBmb3IgdGhlIGludGVycHJldGVyLiAg Ki8KLS0gIGR5bGRfYmZkID0gYmZkX29wZW5yIChpbnRlcnBfbmFtZSwgZ251dGFyZ2V0KTsKLSsg IGR5bGRfYmZkID0gZ2RiX2JmZF9vcGVuciAoaW50ZXJwX25hbWUsIGdudXRhcmdldCk7Ci0gICBp ZiAoZHlsZF9iZmQpCi0gICAgIHsKLSAgICAgICBiZmQgKnN1YjsKLSAKLSsgICAgICBtYWtlX2Ns ZWFudXBfYmZkX3VucmVmIChkeWxkX2JmZCk7Ci0gICAgICAgc3ViID0gYmZkX21hY2hfb19mYXRf ZXh0cmFjdCAoZHlsZF9iZmQsIGJmZF9vYmplY3QsCi0gCQkJCSAgICBnZGJhcmNoX2JmZF9hcmNo X2luZm8gKHRhcmdldF9nZGJhcmNoKSk7Ci0gICAgICAgaWYgKHN1YikKLS0JZHlsZF9iZmQgPSBz dWI7Ci0tICAgICAgZWxzZQotIAl7Ci0tCSAgYmZkX2Nsb3NlIChkeWxkX2JmZCk7Ci0tCSAgZHls ZF9iZmQgPSBOVUxMOwotKwkgIGR5bGRfYmZkID0gc3ViOwotKwkgIGdkYl9iZmRfcmVmIChzdWIp OwotKwkgIG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKHN1Yik7Ci0gCX0KLSsgICAgICBlbHNlCi0r CWR5bGRfYmZkID0gTlVMTDsKLSAgICAgfQotICAgaWYgKCFkeWxkX2JmZCkKLS0gICAgcmV0dXJu OwotKyAgICB7Ci0rICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotKyAgICAgIHJldHVybjsK LSsgICAgfQotIAotICAgLyogV2UgZmluZCB0aGUgZHluYW1pYyBsaW5rZXIncyBiYXNlIGFkZHJl c3MgYnkgZXhhbWluaW5nCi0gICAgICB0aGUgY3VycmVudCBwYyAod2hpY2ggc2hvdWxkIHBvaW50 IGF0IHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlCi1AQCAtMzk1LDcgKzQwNCw3IEBAIGRhcndpbl9z b2xpYl9nZXRfYWxsX2ltYWdlX2luZm9fYWRkcl9hdF9pbml0IChzdHJ1Y3QgZGFyd2luX2luZm8g KmluZm8pCi0gICBpbmZvLT5hbGxfaW1hZ2VfYWRkciA9Ci0gICAgIGxvb2t1cF9zeW1ib2xfZnJv bV9iZmQgKGR5bGRfYmZkLCAiX2R5bGRfYWxsX2ltYWdlX2luZm9zIik7CiAgCi0tICBiZmRfY2xv c2UgKGR5bGRfYmZkKTsKLSsgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSAKLSAgIGlmIChpbmZv LT5hbGxfaW1hZ2VfYWRkciA9PSAwKQotICAgICByZXR1cm47Ci1AQCAtNTA5LDE3ICs1MTgsMTAg QEAgZGFyd2luX2JmZF9vcGVuIChjaGFyICpwYXRobmFtZSkKLSAJCQkJZ2RiYXJjaF9iZmRfYXJj aF9pbmZvICh0YXJnZXRfZ2RiYXJjaCkpOwotICAgaWYgKCFyZXMpCi0gICAgIHsKLS0gICAgICBi ZmRfY2xvc2UgKGFiZmQpOwotLSAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZvdW5kX3BhdGhu YW1lKTsKLSsgICAgICBtYWtlX2NsZWFudXBfYmZkX3VucmVmIChhYmZkKTsKLSAgICAgICBlcnJv ciAoXygiYCVzJzogbm90IGEgc2hhcmVkLWxpYnJhcnk6ICVzIiksCi0tCSAgICAgZm91bmRfcGF0 aG5hbWUsIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKLSsJICAgICBiZmRfZ2V0X2Zp bGVuYW1lIChhYmZkKSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOwotICAgICB9Cisr I2lmIDAKKysvKiBDYWxsIHR5cGVfbWFya191c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBm cm9tIHRoaXMgR0RCIHNvdXJjZSBmaWxlLiAgKi8KKyBzdGF0aWMgdm9pZAorLXR5cHlfZGVhbGxv YyAoUHlPYmplY3QgKm9iaikKKyt0eXB5X3R5cGVzX21hcmtfdXNlZCAodm9pZCkKKyB7CistICB0 eXBlX29iamVjdCAqdHlwZSA9ICh0eXBlX29iamVjdCAqKSBvYmo7CiAtCi0tICAvKiBNYWtlIHN1 cmUgdGhhdCB0aGUgZmlsZW5hbWUgaXMgbWFsbG9jJ2VkLiAgVGhlIGN1cnJlbnQgZmlsZW5hbWUK LS0gICAgIGZvciBmYXQtYmluYXJpZXMgQkZEcyBpcyBhIG5hbWUgdGhhdCB3YXMgZ2VuZXJhdGVk IGJ5IEJGRCwgdXN1YWxseQotLSAgICAgYSBzdGF0aWMgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5h bWUgb2YgdGhlIGFyY2hpdGVjdHVyZS4gICovCi0tICByZXMtPmZpbGVuYW1lID0geHN0cmR1cCAo cGF0aG5hbWUpOworLSAgaWYgKHR5cGUtPnByZXYpCistICAgIHR5cGUtPnByZXYtPm5leHQgPSB0 eXBlLT5uZXh0OworLSAgZWxzZSBpZiAodHlwZS0+dHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUt PnR5cGUpKQorLSAgICB7CistICAgICAgLyogTXVzdCByZXNldCBoZWFkIG9mIGxpc3QuICAqLwor LSAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlLT50eXBl KTsKIC0KLSAgIHJldHVybiByZXM7Ci0gfQotIAotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1kc2J0 LmMgYi9nZGIvc29saWItZHNidC5jCi1pbmRleCAyNTAwYzFmLi5mY2MwMWE4IDEwMDY0NAotLS0t IGEvZ2RiL3NvbGliLWRzYnQuYwotKysrIGIvZ2RiL3NvbGliLWRzYnQuYwotQEAgLTMwLDYgKzMw LDcgQEAKLSAjaW5jbHVkZSAiZ2RiY21kLmgiCi0gI2luY2x1ZGUgImVsZi1iZmQuaCIKLSAjaW5j bHVkZSAiZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0gCi0gI2RlZmluZSBH T1RfTU9EVUxFX09GRlNFVCA0Ci0gCi1AQCAtODk5LDcgKzkwMCw3IEBAIGVuYWJsZV9icmVhazIg KHZvaWQpCi0gCXsKLSAJICB3YXJuaW5nIChfKCJDb3VsZCBub3QgZmluZCBzeW1ib2wgX2RsX2Rl YnVnX2FkZHIgaW4gZHluYW1pYyBsaW5rZXIiKSk7Ci0gCSAgZW5hYmxlX2JyZWFrX2ZhaWx1cmVf d2FybmluZyAoKTsKLS0JICBiZmRfY2xvc2UgKHRtcF9iZmQpOwotKwkgIGdkYl9iZmRfdW5yZWYg KHRtcF9iZmQpOwotIAkgIHJldHVybiAwOwotIAl9Ci0gCi1AQCAtOTQ4LDEzICs5NDksMTMgQEAg ZW5hYmxlX2JyZWFrMiAodm9pZCkKLSAJCSAgICAgIihhdCBhZGRyZXNzICVzKSBmcm9tIGR5bmFt aWMgbGlua2VyIiksCi0gCSAgICAgICAgICAgaGV4X3N0cmluZ19jdXN0b20gKGFkZHIgKyA4LCA4 KSk7Ci0gCSAgZW5hYmxlX2JyZWFrX2ZhaWx1cmVfd2FybmluZyAoKTsKLS0JICBiZmRfY2xvc2Ug KHRtcF9iZmQpOwotKwkgIGdkYl9iZmRfdW5yZWYgKHRtcF9iZmQpOwotIAkgIHJldHVybiAwOwot IAl9Ci0gICAgICAgYWRkciA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoYWRkcl9idWYsIHNp emVvZiBhZGRyX2J1ZiwgYnl0ZV9vcmRlcik7Ci0gCi0gICAgICAgLyogV2UncmUgZG9uZSB3aXRo IHRoZSB0ZW1wb3JhcnkgYmZkLiAgKi8KLS0gICAgICBiZmRfY2xvc2UgKHRtcF9iZmQpOwotKyAg ICAgIGdkYl9iZmRfdW5yZWYgKHRtcF9iZmQpOwotIAotICAgICAgIC8qIFdlJ3JlIGFsc28gZG9u ZSB3aXRoIHRoZSBsb2FkbWFwLiAgKi8KLSAgICAgICB4ZnJlZSAobGRtKTsKLWRpZmYgLS1naXQg YS9nZGIvc29saWItZnJ2LmMgYi9nZGIvc29saWItZnJ2LmMKLWluZGV4IDJmMmM4YjAuLjBmNTk1 MzUgMTAwNjQ0Ci0tLS0gYS9nZGIvc29saWItZnJ2LmMKLSsrKyBiL2dkYi9zb2xpYi1mcnYuYwot QEAgLTMxLDYgKzMxLDcgQEAKLSAjaW5jbHVkZSAiZ2RiY21kLmgiCi0gI2luY2x1ZGUgImVsZi9m cnYuaCIKLSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0g Ci0gLyogRmxhZyB3aGljaCBpbmRpY2F0ZXMgd2hldGhlciBpbnRlcm5hbCBkZWJ1ZyBtZXNzYWdl cyBzaG91bGQgYmUgcHJpbnRlZC4gICovCi0gc3RhdGljIGludCBzb2xpYl9mcnZfZGVidWc7Ci1A QCAtNTc0LDcgKzU3NSw3IEBAIGVuYWJsZV9icmVhazIgKHZvaWQpCi0gCXsKLSAJICB3YXJuaW5n IChfKCJVbmFibGUgdG8gZGV0ZXJtaW5lIGR5bmFtaWMgbGlua2VyIGxvYWRtYXAgYWRkcmVzcy4i KSk7Ci0gCSAgZW5hYmxlX2JyZWFrX2ZhaWx1cmVfd2FybmluZyAoKTsKLS0JICBiZmRfY2xvc2Ug KHRtcF9iZmQpOwotKwkgIGdkYl9iZmRfdW5yZWYgKHRtcF9iZmQpOwotIAkgIHJldHVybiAwOwot IAl9Ci0gCi1AQCAtNTg5LDcgKzU5MCw3IEBAIGVuYWJsZV9icmVhazIgKHZvaWQpCi0gCSAgd2Fy bmluZyAoXygiVW5hYmxlIHRvIGxvYWQgZHluYW1pYyBsaW5rZXIgbG9hZG1hcCBhdCBhZGRyZXNz ICVzLiIpLAotIAkgICAgICAgICAgIGhleF9zdHJpbmdfY3VzdG9tIChpbnRlcnBfbG9hZG1hcF9h ZGRyLCA4KSk7Ci0gCSAgZW5hYmxlX2JyZWFrX2ZhaWx1cmVfd2FybmluZyAoKTsKLS0JICBiZmRf Y2xvc2UgKHRtcF9iZmQpOwotKwkgIGdkYl9iZmRfdW5yZWYgKHRtcF9iZmQpOwotIAkgIHJldHVy biAwOwotIAl9Ci0gCi1AQCAtNjIzLDcgKzYyNCw3IEBAIGVuYWJsZV9icmVhazIgKHZvaWQpCi0g CSAgd2FybmluZyAoXygiQ291bGQgbm90IGZpbmQgc3ltYm9sIF9kbF9kZWJ1Z19hZGRyICIKLSAJ CSAgICAgImluIGR5bmFtaWMgbGlua2VyIikpOwotIAkgIGVuYWJsZV9icmVha19mYWlsdXJlX3dh cm5pbmcgKCk7Ci0tCSAgYmZkX2Nsb3NlICh0bXBfYmZkKTsKLSsJICBnZGJfYmZkX3VucmVmICh0 bXBfYmZkKTsKLSAJICByZXR1cm4gMDsKLSAJfQotIAotQEAgLTY3NCw3ICs2NzUsNyBAQCBlbmFi bGVfYnJlYWsyICh2b2lkKQotIAkJICAgICAiKGF0IGFkZHJlc3MgJXMpIGZyb20gZHluYW1pYyBs aW5rZXIiKSwKLSAJICAgICAgICAgICBoZXhfc3RyaW5nX2N1c3RvbSAoYWRkciArIDgsIDgpKTsK LSAJICBlbmFibGVfYnJlYWtfZmFpbHVyZV93YXJuaW5nICgpOwotLQkgIGJmZF9jbG9zZSAodG1w X2JmZCk7Ci0rCSAgZ2RiX2JmZF91bnJlZiAodG1wX2JmZCk7Ci0gCSAgcmV0dXJuIDA7Ci0gCX0K LSAgICAgICBhZGRyID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChhZGRyX2J1Ziwgc2l6ZW9m IGFkZHJfYnVmLCBieXRlX29yZGVyKTsKLUBAIC02ODYsMTMgKzY4NywxMyBAQCBlbmFibGVfYnJl YWsyICh2b2lkKQotIAkJICAgICAiKGF0IGFkZHJlc3MgJXMpIGZyb20gZHluYW1pYyBsaW5rZXIi KSwKLSAJICAgICAgICAgICBoZXhfc3RyaW5nX2N1c3RvbSAoYWRkciwgOCkpOwotIAkgIGVuYWJs ZV9icmVha19mYWlsdXJlX3dhcm5pbmcgKCk7Ci0tCSAgYmZkX2Nsb3NlICh0bXBfYmZkKTsKLSsJ ICBnZGJfYmZkX3VucmVmICh0bXBfYmZkKTsKLSAJICByZXR1cm4gMDsKLSAJfQotICAgICAgIGFk ZHIgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGFkZHJfYnVmLCBzaXplb2YgYWRkcl9idWYs IGJ5dGVfb3JkZXIpOwotIAotICAgICAgIC8qIFdlJ3JlIGRvbmUgd2l0aCB0aGUgdGVtcG9yYXJ5 IGJmZC4gICovCi0tICAgICAgYmZkX2Nsb3NlICh0bXBfYmZkKTsKLSsgICAgICBnZGJfYmZkX3Vu cmVmICh0bXBfYmZkKTsKLSAKLSAgICAgICAvKiBXZSdyZSBhbHNvIGRvbmUgd2l0aCB0aGUgbG9h ZG1hcC4gICovCi0gICAgICAgeGZyZWUgKGxkbSk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXBh NjQuYyBiL2dkYi9zb2xpYi1wYTY0LmMKLWluZGV4IDJiOGQwNjEuLjAwZWQ4YTUgMTAwNjQ0Ci0t LS0gYS9nZGIvc29saWItcGE2NC5jCi0rKysgYi9nZGIvc29saWItcGE2NC5jCi1AQCAtMzYyLDcg KzM2Miw3IEBAIG1hbnBhZ2UgZm9yIG1ldGhvZHMgdG8gcHJpdmF0ZWx5IG1hcCBzaGFyZWQgbGli cmFyeSB0ZXh0LiIpKTsKLSAJIHRvIGZpbmQgYW55IG1hZ2ljIGZvcm11bGEgdG8gZmluZCBpdCBm b3IgU29sYXJpcyAoYXBwZWFycyB0bwotIAkgYmUgdHJpdmlhbCBvbiBHTlUvTGludXgpLiAgVGhl cmVmb3JlLCB3ZSBoYXZlIHRvIHRyeSBhbiBhbHRlcm5hdGUKLSAJIG1lY2hhbmlzbSB0byBmaW5k IHRoZSBkeW5hbWljIGxpbmtlcidzIGJhc2UgYWRkcmVzcy4gICovCi0tICAgICAgdG1wX2JmZCA9 IGJmZF9vcGVuciAoYnVmLCBnbnV0YXJnZXQpOwotKyAgICAgIHRtcF9iZmQgPSBnZGJfYmZkX29w ZW5yIChidWYsIGdudXRhcmdldCk7Ci0gICAgICAgaWYgKHRtcF9iZmQgPT0gTlVMTCkKLSAJcmV0 dXJuOwotIAotQEAgLTM3MSw3ICszNzEsNyBAQCBtYW5wYWdlIGZvciBtZXRob2RzIHRvIHByaXZh dGVseSBtYXAgc2hhcmVkIGxpYnJhcnkgdGV4dC4iKSk7Ci0gCXsKLSAJICB3YXJuaW5nIChfKCJV bmFibGUgdG8gZ3JvayBkeW5hbWljIGxpbmtlciAlcyBhcyBhbiBvYmplY3QgZmlsZSIpLAotIAkJ ICAgYnVmKTsKLS0JICBiZmRfY2xvc2UgKHRtcF9iZmQpOwotKwkgIGdkYl9iZmRfdW5yZWYgKHRt cF9iZmQpOwotIAkgIHJldHVybjsKLSAJfQotIAotQEAgLTQwMSw3ICs0MDEsNyBAQCBtYW5wYWdl IGZvciBtZXRob2RzIHRvIHByaXZhdGVseSBtYXAgc2hhcmVkIGxpYnJhcnkgdGV4dC4iKSk7Ci0g ICAgICAgfQorLSAgICAgIGlmIChvYmpmaWxlKQorLQlzZXRfb2JqZmlsZV9kYXRhIChvYmpmaWxl LCB0eXB5X29iamZpbGVfZGF0YV9rZXksIHR5cGUtPm5leHQpOworLSAgICB9CistICBpZiAodHlw ZS0+bmV4dCkKKy0gICAgdHlwZS0+bmV4dC0+cHJldiA9IHR5cGUtPnByZXY7CisrICB0eXBlX29i amVjdCAqdHlwZV9vYmo7CiAgCi0gICAgICAgLyogV2UncmUgZG9uZSB3aXRoIHRoZSB0ZW1wb3Jh cnkgYmZkLiAgKi8KLS0gICAgICBiZmRfY2xvc2UgKHRtcF9iZmQpOwotKyAgICAgIGdkYl9iZmRf dW5yZWYgKHRtcF9iZmQpOwotICAgICB9CistICBQeV9UWVBFICh0eXBlKS0+dHBfZnJlZSAodHlw ZSk7CisrICBmb3IgKHR5cGVfb2JqID0gcHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlOworKyAgICAg ICB0eXBlX29iaiAhPSBOVUxMOworKyAgICAgICB0eXBlX29iaiA9IHR5cGVfb2JqLT5uZXh0KQor KyAgICB0eXBlX21hcmtfdXNlZCAodHlwZV9vYmotPnR5cGUpOwogIH0KKysjZW5kaWYKICAKLWRp ZmYgLS1naXQgYS9nZGIvc29saWItc3B1LmMgYi9nZGIvc29saWItc3B1LmMKLWluZGV4IGI1NDU0 ZTcuLmY2MmQ5NmMgMTAwNjQ0Ci0tLS0gYS9nZGIvc29saWItc3B1LmMKLSsrKyBiL2dkYi9zb2xp Yi1zcHUuYwotQEAgLTM2LDYgKzM2LDcgQEAKLSAjaW5jbHVkZSAiYnJlYWtwb2ludC5oIgotICNp bmNsdWRlICJnZGJ0aHJlYWQuaCIKLSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRl ICJnZGJfYmZkLmgiCi0gCi0gI2luY2x1ZGUgInNwdS10ZGVwLmgiCi0gCi1AQCAtMzI1LDE2ICsz MjYsMTYgQEAgc3B1X2JmZF9mb3BlbiAoY2hhciAqbmFtZSwgQ09SRV9BRERSIGFkZHIpCi0gICBD T1JFX0FERFIgKm9wZW5fY2xvc3VyZSA9IHhtYWxsb2MgKHNpemVvZiAoQ09SRV9BRERSKSk7Ci0g ICAqb3Blbl9jbG9zdXJlID0gYWRkcjsKLSAKLS0gIG5iZmQgPSBiZmRfb3BlbnJfaW92ZWMgKHhz dHJkdXAgKG5hbWUpLCAiZWxmMzItc3B1IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIHNw dV9iZmRfaW92ZWNfb3Blbiwgb3Blbl9jbG9zdXJlLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgc3B1X2JmZF9pb3ZlY19wcmVhZCwgc3B1X2JmZF9pb3ZlY19jbG9zZSwKLS0JCQkgIHNwdV9i ZmRfaW92ZWNfc3RhdCk7Ci0rICBuYmZkID0gZ2RiX2JmZF9vcGVucl9pb3ZlYyAobmFtZSwgImVs ZjMyLXNwdSIsCi0rCQkJICAgICAgc3B1X2JmZF9pb3ZlY19vcGVuLCBvcGVuX2Nsb3N1cmUsCi0r CQkJICAgICAgc3B1X2JmZF9pb3ZlY19wcmVhZCwgc3B1X2JmZF9pb3ZlY19jbG9zZSwKLSsJCQkg ICAgICBzcHVfYmZkX2lvdmVjX3N0YXQpOwotICAgaWYgKCFuYmZkKQotICAgICByZXR1cm4gTlVM TDsKLSAKLSAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAobmJmZCwgYmZkX29iamVjdCkpCi0gICAg IHsKLS0gICAgICBiZmRfY2xvc2UgKG5iZmQpOwotKyAgICAgIGdkYl9iZmRfdW5yZWYgKG5iZmQp OwotICAgICAgIHJldHVybiBOVUxMOwotICAgICB9CisgLyogUmV0dXJuIG51bWJlciBvZiBmaWVs ZHMgKCJsZW5ndGgiIG9mIHRoZSBmaWVsZCBkaWN0aW9uYXJ5KS4gICovCiAgCi1kaWZmIC0tZ2l0 IGEvZ2RiL3NvbGliLXN2cjQuYyBiL2dkYi9zb2xpYi1zdnI0LmMKLWluZGV4IDMwN2U0ODMuLjc2 YmQ4NzIgMTAwNjQ0Ci0tLS0gYS9nZGIvc29saWItc3ZyNC5jCi0rKysgYi9nZGIvc29saWItc3Zy NC5jCi1AQCAtNDYsNiArNDYsNyBAQAotICNpbmNsdWRlICJleGVjLmgiCi0gI2luY2x1ZGUgImF1 eHYuaCIKLSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0g Ci0gc3RhdGljIHN0cnVjdCBsaW5rX21hcF9vZmZzZXRzICpzdnI0X2ZldGNoX2xpbmtfbWFwX29m ZnNldHMgKHZvaWQpOwotIHN0YXRpYyBpbnQgc3ZyNF9oYXZlX2xpbmtfbWFwX29mZnNldHMgKHZv aWQpOwotQEAgLTE1NTgsOSArMTU1OSwxMSBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2lu Zm8gKmluZm8sIGludCBmcm9tX3R0eSkKLSAJZ290byBia3B0X2F0X3N5bWJvbDsKLSAKLSAgICAg ICAvKiBOb3cgY29udmVydCB0aGUgVE1QX0JGRCBpbnRvIGEgdGFyZ2V0LiAgVGhhdCB3YXkgdGFy Z2V0LCBhcwotLSAgICAgICAgIHdlbGwgYXMgQkZEIG9wZXJhdGlvbnMgY2FuIGJlIHVzZWQuICBO b3RlIHRoYXQgY2xvc2luZyB0aGUKLS0gICAgICAgICB0YXJnZXQgd2lsbCBhbHNvIGNsb3NlIHRo ZSB1bmRlcmx5aW5nIGJmZC4gICovCi0rICAgICAgICAgd2VsbCBhcyBCRkQgb3BlcmF0aW9ucyBj YW4gYmUgdXNlZC4gICovCi0gICAgICAgdG1wX2JmZF90YXJnZXQgPSB0YXJnZXRfYmZkX3Jlb3Bl biAodG1wX2JmZCk7Ci0rICAgICAgLyogdGFyZ2V0X2JmZF9yZW9wZW4gYWNxdWlyZWQgaXRzIG93 biByZWZlcmVuY2UsIHNvIHdlIGNhbgotKyAgICAgICAgIHJlbGVhc2Ugb3VycyBub3cuICAqLwot KyAgICAgIGdkYl9iZmRfdW5yZWYgKHRtcF9iZmQpOwotIAotICAgICAgIC8qIE9uIGEgcnVubmlu ZyB0YXJnZXQsIHdlIGNhbiBnZXQgdGhlIGR5bmFtaWMgbGlua2VyJ3MgYmFzZQotICAgICAgICAg IGFkZHJlc3MgZnJvbSB0aGUgc2hhcmVkIGxpYnJhcnkgdGFibGUuICAqLwotQEAgLTE2NzAsOCAr MTY3Myw5IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW50IGZyb21f dHR5KQotIAkJCQkJCSAgICAgICBzeW1fYWRkciwKLSAJCQkJCQkgICAgICAgdG1wX2JmZF90YXJn ZXQpOwotIAotLSAgICAgIC8qIFdlJ3JlIGRvbmUgd2l0aCBib3RoIHRoZSB0ZW1wb3JhcnkgYmZk IGFuZCB0YXJnZXQuICBSZW1lbWJlciwKLS0gICAgICAgICBjbG9zaW5nIHRoZSB0YXJnZXQgY2xv c2VzIHRoZSB1bmRlcmx5aW5nIGJmZC4gICovCi0rICAgICAgLyogV2UncmUgZG9uZSB3aXRoIGJv dGggdGhlIHRlbXBvcmFyeSBiZmQgYW5kIHRhcmdldC4gIENsb3NpbmcKLSsgICAgICAgICB0aGUg dGFyZ2V0IGNsb3NlcyB0aGUgdW5kZXJseWluZyBiZmQsIGJlY2F1c2UgaXQgaG9sZHMgdGhlCi0r ICAgICAgICAgb25seSByZW1haW5pbmcgcmVmZXJlbmNlLiAgKi8KLSAgICAgICB0YXJnZXRfY2xv c2UgKHRtcF9iZmRfdGFyZ2V0LCAwKTsKLSAKLSAgICAgICBpZiAoc3ltX2FkZHIgIT0gMCkKLWRp ZmYgLS1naXQgYS9nZGIvc29saWIuYyBiL2dkYi9zb2xpYi5jCi1pbmRleCA5MDQzOWJhLi43Mzc3 M2YxIDEwMDY0NAotLS0tIGEvZ2RiL3NvbGliLmMKLSsrKyBiL2dkYi9zb2xpYi5jCi1AQCAtNDYs NiArNDYsNyBAQAotICNpbmNsdWRlICJzb2xpYi5oIgotICNpbmNsdWRlICJpbnRlcnBzLmgiCi0g I2luY2x1ZGUgImZpbGVzeXN0ZW0uaCIKLSsjaW5jbHVkZSAiZ2RiX2JmZC5oIgorQEAgLTE0ODMs NyArMTUzNCwxMCBAQCB0eXBlX3RvX3R5cGVfb2JqZWN0IChzdHJ1Y3QgdHlwZSAqdHlwZSkKICAK LSAvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgb3BlcmF0aW9ucy4gICovCisgICB0eXBlX29iaiA9 IFB5T2JqZWN0X05ldyAodHlwZV9vYmplY3QsICZ0eXBlX29iamVjdF90eXBlKTsKKyAgIGlmICh0 eXBlX29iaikKKy0gICAgc2V0X3R5cGUgKHR5cGVfb2JqLCB0eXBlKTsKKysgICAgeworKyAgICAg IHR5cGVfb2JqLT50eXBlID0gdHlwZTsKKysgICAgICB0eXB5X2xpbmsgKHR5cGVfb2JqKTsKKysg ICAgfQogIAotQEAgLTM2MCw5ICszNjEsOSBAQCBzb2xpYl9maW5kIChjaGFyICppbl9wYXRobmFt ZSwgaW50ICpmZCkKLSAgICBpdCBpcyB1c2VkIGFzIGZpbGUgaGFuZGxlIHRvIG9wZW4gdGhlIGZp bGUuICBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIGZpbGUKLSAgICBjb3VsZCBub3QgYmUgb3BlbmVk LiAgSGFuZGxlcyBib3RoIGxvY2FsIGFuZCByZW1vdGUgZmlsZSBhY2Nlc3MuCisgICByZXR1cm4g KFB5T2JqZWN0ICopIHR5cGVfb2JqOworIH0KK0BAIC0xNTYzLDYgKzE2MTcsMTAgQEAgZ2RicHlf aW5pdGlhbGl6ZV90eXBlcyAodm9pZCkKICAKLS0gICBQQVRITkFNRSBtdXN0IGJlIG1hbGxvYydl ZCBieSB0aGUgY2FsbGVyLiAgSWYgc3VjY2Vzc2Z1bCwgdGhlIG5ldyBCRkQncwotLSAgIG5hbWUg d2lsbCBwb2ludCB0byBpdC4gIElmIHVuc3VjY2Vzc2Z1bCwgUEFUSE5BTUUgd2lsbCBiZSBmcmVl ZCBhbmQgdGhlCi0tICAgRkQgd2lsbCBiZSBjbG9zZWQgKHVubGVzcyBGRCB3YXMgLTEpLiAgKi8K LSsgICBQQVRITkFNRSBtdXN0IGJlIG1hbGxvYydlZCBieSB0aGUgY2FsbGVyLiAgSXQgd2lsbCBi ZSBmcmVlZCBieSB0aGlzCi0rICAgZnVuY3Rpb24uICBJZiB1bnN1Y2Nlc3NmdWwsIHRoZSBGRCB3 aWxsIGJlIGNsb3NlZCAodW5sZXNzIEZEIHdhcwotKyAgIC0xKS4gICovCisgICBQeV9JTkNSRUYg KCZmaWVsZF9vYmplY3RfdHlwZSk7CisgICBQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1bGUs ICJGaWVsZCIsIChQeU9iamVjdCAqKSAmZmllbGRfb2JqZWN0X3R5cGUpOworKworKyNpZiAwCisr ICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkICh0eXB5X3R5cGVzX21hcmtfdXNlZCk7CisrI2Vu ZGlmCisgfQogIAotIGJmZCAqCi0gc29saWJfYmZkX2ZvcGVuIChjaGFyICpwYXRobmFtZSwgaW50 IGZkKQotQEAgLTM3Niw3ICszNzcsNyBAQCBzb2xpYl9iZmRfZm9wZW4gKGNoYXIgKnBhdGhuYW1l LCBpbnQgZmQpCi0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotLSAgICAgIGFiZmQgPSBiZmRfZm9w ZW4gKHBhdGhuYW1lLCBnbnV0YXJnZXQsIEZPUEVOX1JCLCBmZCk7Ci0rICAgICAgYWJmZCA9IGdk Yl9iZmRfZm9wZW4gKHBhdGhuYW1lLCBnbnV0YXJnZXQsIEZPUEVOX1JCLCBmZCk7CisgDAorZGlm ZiAtLWdpdCBhL2dkYi9weXRob24vcHktdmFsdWUuYyBiL2dkYi9weXRob24vcHktdmFsdWUuYwor aW5kZXggMTFjYzAzOC4uZWYyMzhmNiAxMDA2NDQKKy0tLSBhL2dkYi9weXRob24vcHktdmFsdWUu YworKysrIGIvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCitAQCAtMjksNiArMjksNyBAQAorICNpbmNs dWRlICJleHByZXNzaW9uLmgiCisgI2luY2x1ZGUgImNwLWFiaS5oIgorICNpbmNsdWRlICJweXRo b24uaCIKKysjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKICAKLSAgICAgICBpZiAoYWJmZCkKLSAJYmZk X3NldF9jYWNoZWFibGUgKGFiZmQsIDEpOwotQEAgLTM4OSw2ICszOTAsOCBAQCBzb2xpYl9iZmRf Zm9wZW4gKGNoYXIgKnBhdGhuYW1lLCBpbnQgZmQpCi0gCSAgICAgcGF0aG5hbWUsIGJmZF9lcnJt c2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKLSAgICAgfQorICNpZmRlZiBIQVZFX1BZVEhPTgogIAot KyAgeGZyZWUgKHBhdGhuYW1lKTsKLSsKLSAgIHJldHVybiBhYmZkOworQEAgLTEzODUsNiArMTM4 NiwxOSBAQCBnZGJweV9pc192YWx1ZV9vYmplY3QgKFB5T2JqZWN0ICpvYmopCisgICByZXR1cm4g UHlPYmplY3RfVHlwZUNoZWNrIChvYmosICZ2YWx1ZV9vYmplY3RfdHlwZSk7CiAgfQogIAotQEAg LTQyMCwxNyArNDIzLDE2IEBAIHNvbGliX2JmZF9vcGVuIChjaGFyICpwYXRobmFtZSkKLSAgIC8q IENoZWNrIGJmZCBmb3JtYXQuICAqLwotICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChhYmZkLCBi ZmRfb2JqZWN0KSkKLSAgICAgewotLSAgICAgIGJmZF9jbG9zZSAoYWJmZCk7Ci0tICAgICAgbWFr ZV9jbGVhbnVwICh4ZnJlZSwgZm91bmRfcGF0aG5hbWUpOwotKyAgICAgIG1ha2VfY2xlYW51cF9i ZmRfdW5yZWYgKGFiZmQpOwotICAgICAgIGVycm9yIChfKCJgJXMnOiBub3QgaW4gZXhlY3V0YWJs ZSBmb3JtYXQ6ICVzIiksCi0tCSAgICAgZm91bmRfcGF0aG5hbWUsIGJmZF9lcnJtc2cgKGJmZF9n ZXRfZXJyb3IgKCkpKTsKLSsJICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwgYmZkX2Vycm1z ZyAoYmZkX2dldF9lcnJvciAoKSkpOwotICAgICB9CisrI2lmIDAKKysvKiBDYWxsIHR5cGVfbWFy a191c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRoaXMgR0RCIHNvdXJjZSBmaWxl LiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3B5dGhvbl90eXBlc19tYXJrX3VzZWQgKHZvaWQpCisr eworKyAgdmFsdWVfb2JqZWN0ICppdGVyOworKworKyAgZm9yIChpdGVyID0gdmFsdWVzX2luX3B5 dGhvbjsgaXRlcjsgaXRlciA9IGl0ZXItPm5leHQpCisrICAgIHR5cGVfbWFya191c2VkICh2YWx1 ZV90eXBlIChpdGVyLT52YWx1ZSkpOworK30KKysjZW5kaWYKKysKKyB2b2lkCisgZ2RicHlfaW5p dGlhbGl6ZV92YWx1ZXMgKHZvaWQpCisgeworQEAgLTEzOTUsNiArMTQwOSwxMCBAQCBnZGJweV9p bml0aWFsaXplX3ZhbHVlcyAodm9pZCkKKyAgIFB5TW9kdWxlX0FkZE9iamVjdCAoZ2RiX21vZHVs ZSwgIlZhbHVlIiwgKFB5T2JqZWN0ICopICZ2YWx1ZV9vYmplY3RfdHlwZSk7CiAgCi0gICAvKiBD aGVjayBiZmQgYXJjaC4gICovCi0gICBiID0gZ2RiYXJjaF9iZmRfYXJjaF9pbmZvICh0YXJnZXRf Z2RiYXJjaCk7Ci0gICBpZiAoIWItPmNvbXBhdGlibGUgKGIsIGJmZF9nZXRfYXJjaF9pbmZvIChh YmZkKSkpCi0gICAgIHdhcm5pbmcgKF8oImAlcyc6IFNoYXJlZCBsaWJyYXJ5IGFyY2hpdGVjdHVy ZSAlcyBpcyBub3QgY29tcGF0aWJsZSAiCi0tICAgICAgICAgICAgICAgIndpdGggdGFyZ2V0IGFy Y2hpdGVjdHVyZSAlcy4iKSwgZm91bmRfcGF0aG5hbWUsCi0rICAgICAgICAgICAgICAgIndpdGgg dGFyZ2V0IGFyY2hpdGVjdHVyZSAlcy4iKSwgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksCi0gICAg ICAgICAgICAgIGJmZF9nZXRfYXJjaF9pbmZvIChhYmZkKS0+cHJpbnRhYmxlX25hbWUsIGItPnBy aW50YWJsZV9uYW1lKTsKLSAKLSAgIHJldHVybiBhYmZkOwotQEAgLTQ2Niw3ICs0NjgsNyBAQCBz b2xpYl9tYXBfc2VjdGlvbnMgKHN0cnVjdCBzb19saXN0ICpzbykKLSAgICAgcmV0dXJuIDA7Ci0g Ci0gICAvKiBMZWF2ZSBiZmQgb3BlbiwgY29yZV94ZmVyX21lbW9yeSBhbmQgImluZm8gZmlsZXMi IG5lZWQgaXQuICAqLwotLSAgc28tPmFiZmQgPSBnZGJfYmZkX3JlZiAoYWJmZCk7Ci0rICBzby0+ YWJmZCA9IGFiZmQ7Ci0gCi0gICAvKiBjb3B5IGZ1bGwgcGF0aCBuYW1lIGludG8gc29fbmFtZSwg c28gdGhhdCBsYXRlciBzeW1ib2xfZmlsZV9hZGQKLSAgICAgIGNhbiBmaW5kIGl0LiAgKi8KLUBA IC0xMjMzLDcgKzEyMzUsNyBAQCByZWxvYWRfc2hhcmVkX2xpYnJhcmllc18xIChpbnQgZnJvbV90 dHkpCi0gCXsKLSAJICBmb3VuZF9wYXRobmFtZSA9IHhzdHJkdXAgKGJmZF9nZXRfZmlsZW5hbWUg KGFiZmQpKTsKLSAJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmb3VuZF9wYXRobmFtZSk7Ci0tCSAg Z2RiX2JmZF9jbG9zZV9vcl93YXJuIChhYmZkKTsKLSsJICBnZGJfYmZkX3VucmVmIChhYmZkKTsK LSAJfQorICAgdmFsdWVzX2luX3B5dGhvbiA9IE5VTEw7CisrCisrI2lmIDAKKysgIG9ic2VydmVy X2F0dGFjaF9tYXJrX3VzZWQgKHB5dGhvbl90eXBlc19tYXJrX3VzZWQpOworKyNlbmRpZgorIH0K ICAKLSAgICAgICAvKiBJZiB0aGlzIHNoYXJlZCBsaWJyYXJ5IGlzIG5vIGxvbmdlciBhc3NvY2lh dGVkIHdpdGggaXRzIHByZXZpb3VzCi1kaWZmIC0tZ2l0IGEvZ2RiL3NwdS1saW51eC1uYXQuYyBi L2dkYi9zcHUtbGludXgtbmF0LmMKLWluZGV4IDJkZmVjOGMuLjk5OWYxYWIgMTAwNjQ0Ci0tLS0g YS9nZGIvc3B1LWxpbnV4LW5hdC5jCi0rKysgYi9nZGIvc3B1LWxpbnV4LW5hdC5jCi1AQCAtMzE1 LDE2ICszMTUsMTYgQEAgc3B1X2JmZF9vcGVuIChVTE9OR0VTVCBhZGRyKQotICAgVUxPTkdFU1Qg Km9wZW5fY2xvc3VyZSA9IHhtYWxsb2MgKHNpemVvZiAoVUxPTkdFU1QpKTsKLSAgICpvcGVuX2Ns b3N1cmUgPSBhZGRyOwotIAotLSAgbmJmZCA9IGJmZF9vcGVucl9pb3ZlYyAoeHN0cmR1cCAoIjxp bi1tZW1vcnk+IiksICJlbGYzMi1zcHUiLAotLQkJCSAgc3B1X2JmZF9pb3ZlY19vcGVuLCBvcGVu X2Nsb3N1cmUsCi0tCQkJICBzcHVfYmZkX2lvdmVjX3ByZWFkLCBzcHVfYmZkX2lvdmVjX2Nsb3Nl LAotLQkJCSAgc3B1X2JmZF9pb3ZlY19zdGF0KTsKLSsgIG5iZmQgPSBnZGJfYmZkX29wZW5yX2lv dmVjICgiPGluLW1lbW9yeT4iLCAiZWxmMzItc3B1IiwKLSsJCQkgICAgICBzcHVfYmZkX2lvdmVj X29wZW4sIG9wZW5fY2xvc3VyZSwKLSsJCQkgICAgICBzcHVfYmZkX2lvdmVjX3ByZWFkLCBzcHVf YmZkX2lvdmVjX2Nsb3NlLAotKwkJCSAgICAgIHNwdV9iZmRfaW92ZWNfc3RhdCk7Ci0gICBpZiAo IW5iZmQpCi0gICAgIHJldHVybiBOVUxMOwotIAotICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChu YmZkLCBiZmRfb2JqZWN0KSkKLSAgICAgewotLSAgICAgIGJmZF9jbG9zZSAobmJmZCk7Ci0rICAg ICAgZ2RiX2JmZF91bnJlZiAobmJmZCk7Ci0gICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KKyAM CitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uYyBiL2dkYi9weXRob24vcHl0aG9uLmMK K2luZGV4IGIwZjcxYTIuLmQyMjQ4YzEgMTAwNjQ0CistLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5j CisrKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCitAQCAtNjYsNiArNjYsOCBAQCBzdGF0aWMgY29u c3QgY2hhciAqZ2RicHlfc2hvdWxkX3ByaW50X3N0YWNrID0gcHl0aG9uX2V4Y3BfbWVzc2FnZTsK KyAjaW5jbHVkZSAibGluZXNwZWMuaCIKKyAjaW5jbHVkZSAic291cmNlLmgiCisgI2luY2x1ZGUg InZlcnNpb24uaCIKKysjaW5jbHVkZSAiaW5mZXJpb3IuaCIKKysjaW5jbHVkZSAiZ2RidGhyZWFk LmgiCisgI2luY2x1ZGUgInRhcmdldC5oIgorICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKyAjaW5j bHVkZSAib2JzZXJ2ZXIuaCIKK0BAIC0xMDgyLDYgKzEwODQsNTMgQEAgZ2RicHlfcHJpbnRfc3Rh Y2sgKHZvaWQpCiAgCi1AQCAtMzc0LDggKzM3NCwxMyBAQCBzcHVfc3ltYm9sX2ZpbGVfYWRkX2Zy b21fbWVtb3J5IChpbnQgaW5mZXJpb3JfZmQpCi0gICAvKiBPcGVuIEJGRCByZXByZXNlbnRpbmcg U1BFIGV4ZWN1dGFibGUgYW5kIHJlYWQgaXRzIHN5bWJvbHMuICAqLwotICAgbmJmZCA9IHNwdV9i ZmRfb3BlbiAoYWRkcik7Ci0gICBpZiAobmJmZCkKLS0gICAgc3ltYm9sX2ZpbGVfYWRkX2Zyb21f YmZkIChuYmZkLCBTWU1GSUxFX1ZFUkJPU0UgfCBTWU1GSUxFX01BSU5MSU5FLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsIE5VTEwpOwotKyAgICB7Ci0rICAgICAgc3Ry dWN0IGNsZWFudXAgKmNsZWFudXAgPSBtYWtlX2NsZWFudXBfYmZkX3VucmVmIChuYmZkKTsKKyAv KiBSZXR1cm4gdGhlIGN1cnJlbnQgUHJvZ3NwYWNlLgorICAgIFRoZXJlIGFsd2F5cyBpcyBvbmUu ICAqLworKy8qIFRydWUgaWYgJ2dkYiAtUCcgd2FzIHVzZWQsIGZhbHNlIG90aGVyd2lzZS4gICov Cisrc3RhdGljIGludCBydW5uaW5nX3B5dGhvbl9zY3JpcHQ7CisrCisrLyogVHJ1ZSBpZiB3ZSBh cmUgY3VycmVudGx5IGluIGEgY2FsbCB0byAnZ2RiLmNsaScsIGZhbHNlIG90aGVyd2lzZS4gICov Cisrc3RhdGljIGludCBpbl9jbGk7CisrCisrLyogRW50ZXIgdGhlIGNvbW1hbmQgbG9vcC4gICov CisrCisrc3RhdGljIFB5T2JqZWN0ICoKKytnZGJweV9jbGkgKFB5T2JqZWN0ICp1bnVzZWQxLCBQ eU9iamVjdCAqdW51c2VkMikKKyt7CisrICBpZiAoISBydW5uaW5nX3B5dGhvbl9zY3JpcHQgfHwg aW5fY2xpKQorKyAgICByZXR1cm4gUHlFcnJfRm9ybWF0IChQeUV4Y19SdW50aW1lRXJyb3IsICJj YW5ub3QgaW52b2tlIENMSSByZWN1cnNpdmVseSIpOworKworKyAgaW5fY2xpID0gMTsKKysgIGNs aV9jb21tYW5kX2xvb3AgKCk7CisrICBpbl9jbGkgPSAwOworKworKyAgUHlfUkVUVVJOX05PTkU7 CisrfQorKworKy8qIFNldCB1cCB0aGUgUHl0aG9uIGFyZ3VtZW50IHZlY3RvciBhbmQgZXZhbHVh dGUgYSBzY3JpcHQuICBUaGlzIGlzCisrICAgdXNlZCB0byBpbXBsZW1lbnQgJ2dkYiAtUCcuICAq LworKworK3ZvaWQKKytydW5fcHl0aG9uX3NjcmlwdCAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQor K3sKKysgIEZJTEUgKmlucHV0OwogKwotKyAgICAgIHN5bWJvbF9maWxlX2FkZF9mcm9tX2JmZCAo bmJmZCwgU1lNRklMRV9WRVJCT1NFIHwgU1lNRklMRV9NQUlOTElORSwKLSsJCQkJTlVMTCwgMCwg TlVMTCk7Ci0rICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXApOworKyAgLyogV2UgbmV2ZXIgZnJl ZSB0aGlzLCBzaW5jZSB3ZSBwbGFuIHRvIGV4aXQgYXQgdGhlIGVuZC4gICovCisrICBlbnN1cmVf cHl0aG9uX2VudiAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7CisrCisr ICBydW5uaW5nX3B5dGhvbl9zY3JpcHQgPSAxOworKyAgUHlTeXNfU2V0QXJndiAoYXJnYyAtIDEs IGFyZ3YgKyAxKTsKKysgIGlucHV0ID0gZm9wZW4gKGFyZ3ZbMF0sICJyIik7CisrICBpZiAoISBp bnB1dCkKKysgICAgeworKyAgICAgIGZwcmludGYgKHN0ZGVyciwgImNvdWxkIG5vdCBvcGVuICVz OiAlc1xuIiwgYXJndlswXSwgc3RyZXJyb3IgKGVycm5vKSk7CisrICAgICAgZXhpdCAoMSk7CiAr ICAgIH0KLSB9CisrICBQeVJ1bl9TaW1wbGVGaWxlIChpbnB1dCwgYXJndlswXSk7CisrICBmY2xv c2UgKGlucHV0KTsKKysgIGV4aXQgKDApOworK30KKysKKysMCisrCisgCisgc3RhdGljIFB5T2Jq ZWN0ICoKKyBnZGJweV9nZXRfY3VycmVudF9wcm9nc3BhY2UgKFB5T2JqZWN0ICp1bnVzZWQxLCBQ eU9iamVjdCAqdW51c2VkMikKK0BAIC0xNzM0LDYgKzE3ODMsOCBAQCBzdGF0aWMgUHlNZXRob2RE ZWYgR2RiTWV0aG9kc1tdID0KKyAgICAgIkdldCBhIHZhbHVlIGZyb20gaGlzdG9yeSIgfSwKKyAg IHsgImV4ZWN1dGUiLCAoUHlDRnVuY3Rpb24pIGV4ZWN1dGVfZ2RiX2NvbW1hbmQsIE1FVEhfVkFS QVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICJFeGVjdXRlIGEgZ2RiIGNvbW1hbmQiIH0sCisr ICB7ICJjbGkiLCBnZGJweV9jbGksIE1FVEhfTk9BUkdTLAorKyAgICAiRW50ZXIgdGhlIGdkYiBD TEkiIH0sCisgICB7ICJwYXJhbWV0ZXIiLCBnZGJweV9wYXJhbWV0ZXIsIE1FVEhfVkFSQVJHUywK KyAgICAgIlJldHVybiBhIGdkYiBwYXJhbWV0ZXIncyB2YWx1ZSIgfSwKKyAKK2RpZmYgLS1naXQg YS9nZGIvcHl0aG9uL3B5dGhvbi5oIGIvZ2RiL3B5dGhvbi9weXRob24uaAoraW5kZXggMjRlMzA3 Ny4uMDQ0MzA4NyAxMDA2NDQKKy0tLSBhL2dkYi9weXRob24vcHl0aG9uLmgKKysrKyBiL2dkYi9w eXRob24vcHl0aG9uLmgKK0BAIC0zNCw2ICszNCw4IEBAIHZvaWQgZXZhbF9weXRob25fZnJvbV9j b250cm9sX2NvbW1hbmQgKHN0cnVjdCBjb21tYW5kX2xpbmUgKik7CiAgCisgdm9pZCBzb3VyY2Vf cHl0aG9uX3NjcmlwdCAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAqZmlsZW5hbWUpOwogIAorK3Zv aWQgcnVuX3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoqYXJndik7CisrCisgaW50IGFw cGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLAorIAkJCSAgICAgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRy ZXNzLAorIAkJCSAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAogZGlm ZiAtLWdpdCBhL2dkYi9zdGFjay5jIGIvZ2RiL3N0YWNrLmMKLWluZGV4IDM1ZDM3OWQuLjA0YWFi NWUgMTAwNjQ0CitpbmRleCBhOWRhYmI1Li42Yzc4NDM2IDEwMDY0NAogLS0tIGEvZ2RiL3N0YWNr LmMKICsrKyBiL2dkYi9zdGFjay5jCi1AQCAtNTA5LDYgKzUwOSwxMCBAQCBwcmludF9mcmFtZV9h cmdzIChzdHJ1Y3Qgc3ltYm9sICpmdW5jLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCitAQCAt NTEwLDYgKzUxMCwxMCBAQCBwcmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9sICpmdW5jLCBz dHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAgICBzdGIgPSBtZW1fZmlsZW9wZW4gKCk7CiAgICBv bGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfZmlsZV9kZWxldGUgKHN0Yik7CiAgCkBAIC05NTA0 LDI5MCArNDg2NSwxMSBAQCBpbmRleCAzNWQzNzlkLi4wNGFhYjVlIDEwMDY0NAogICAgaWYgKGZ1 bmMpCiAgICAgIHsKICAgICAgICBzdHJ1Y3QgYmxvY2sgKmIgPSBTWU1CT0xfQkxPQ0tfVkFMVUUg KGZ1bmMpOwotZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxlLW1lbS5jIGIvZ2RiL3N5bWZpbGUtbWVt LmMKLWluZGV4IGU4MGZkMjUuLjJlNTNiZTAgMTAwNjQ0Ci0tLS0gYS9nZGIvc3ltZmlsZS1tZW0u YwotKysrIGIvZ2RiL3N5bWZpbGUtbWVtLmMKLUBAIC01NCw2ICs1NCw3IEBACi0gI2luY2x1ZGUg Im9ic2VydmVyLmgiCi0gI2luY2x1ZGUgImF1eHYuaCIKLSAjaW5jbHVkZSAiZWxmL2NvbW1vbi5o IgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0gCi0gLyogVmVyaWZ5IHBhcmFtZXRlcnMgb2YgdGFy Z2V0X3JlYWRfbWVtb3J5X2JmZCBhbmQgdGFyZ2V0X3JlYWRfbWVtb3J5IGFyZQotICAgIGNvbXBh dGlibGUuICAqLwotQEAgLTEwMCwyMyArMTAxLDI0IEBAIHN5bWJvbF9maWxlX2FkZF9mcm9tX21l bW9yeSAoc3RydWN0IGJmZCAqdGVtcGwsIENPUkVfQUREUiBhZGRyLCBjaGFyICpuYW1lLAotICAg aWYgKG5iZmQgPT0gTlVMTCkKLSAgICAgZXJyb3IgKF8oIkZhaWxlZCB0byByZWFkIGEgdmFsaWQg b2JqZWN0IGZpbGUgaW1hZ2UgZnJvbSBtZW1vcnkuIikpOwotIAotKyAgZ2RiX2JmZF9yZWYgKG5i ZmQpOwotICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgbmJmZC0+ZmlsZW5hbWUgPSB4c3RyZHVw ICgic2hhcmVkIG9iamVjdCByZWFkIGZyb20gdGFyZ2V0IG1lbW9yeSIpOwotKyAgICBuYmZkLT5m aWxlbmFtZSA9ICJzaGFyZWQgb2JqZWN0IHJlYWQgZnJvbSB0YXJnZXQgbWVtb3J5IjsKLSAgIGVs c2UKLS0gICAgbmJmZC0+ZmlsZW5hbWUgPSBuYW1lOwotLQotLSAgaWYgKCFiZmRfY2hlY2tfZm9y bWF0IChuYmZkLCBiZmRfb2JqZWN0KSkKLSAgICAgewotLSAgICAgIC8qIEZJWE1FOiBzaG91bGQg YmUgY2hlY2tpbmcgZm9yIGVycm9ycyBmcm9tIGJmZF9jbG9zZSAoZm9yIG9uZSB0aGluZywKLS0g ICAgICAgICBvbiBlcnJvciBpdCBkb2VzIG5vdCBmcmVlIGFsbCB0aGUgc3RvcmFnZSBhc3NvY2lh dGVkIHdpdGggdGhlCi0tICAgICAgICAgYmZkKS4gICovCi0tICAgICAgYmZkX2Nsb3NlIChuYmZk KTsKLS0gICAgICBlcnJvciAoXygiR290IG9iamVjdCBmaWxlIGZyb20gbWVtb3J5IGJ1dCBjYW4n dCByZWFkIHN5bWJvbHM6ICVzLiIpLAotLQkgICAgIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3Ig KCkpKTsKLSsgICAgICBuYmZkLT5maWxlbmFtZSA9IG5hbWU7Ci0rICAgICAgZ2RiX2JmZF9zdGFz aF9maWxlbmFtZSAobmJmZCk7Ci0rICAgICAgeGZyZWUgKG5hbWUpOwotICAgICB9Ci0gCi0rICBj bGVhbnVwID0gbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAobmJmZCk7Ci0rCi0rICBpZiAoIWJmZF9j aGVja19mb3JtYXQgKG5iZmQsIGJmZF9vYmplY3QpKQotKyAgICBlcnJvciAoXygiR290IG9iamVj dCBmaWxlIGZyb20gbWVtb3J5IGJ1dCBjYW4ndCByZWFkIHN5bWJvbHM6ICVzLiIpLAotKwkgICBi ZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0rCi0gICBzYWkgPSBhbGxvY19zZWN0aW9u X2FkZHJfaW5mbyAoYmZkX2NvdW50X3NlY3Rpb25zIChuYmZkKSk7Ci0tICBjbGVhbnVwID0gbWFr ZV9jbGVhbnVwICh4ZnJlZSwgc2FpKTsKLSsgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHNhaSk7Ci0g ICBpID0gMDsKLSAgIGZvciAoc2VjID0gbmJmZC0+c2VjdGlvbnM7IHNlYyAhPSBOVUxMOyBzZWMg PSBzZWMtPm5leHQpCi0gICAgIGlmICgoYmZkX2dldF9zZWN0aW9uX2ZsYWdzIChuYmZkLCBzZWMp ICYgKFNFQ19BTExPQ3xTRUNfTE9BRCkpICE9IDApCi1kaWZmIC0tZ2l0IGEvZ2RiL3N5bWZpbGUu YyBiL2dkYi9zeW1maWxlLmMKLWluZGV4IDAxMjUyZTIuLjk1ZWQ0ODAgMTAwNjQ0Ci0tLS0gYS9n ZGIvc3ltZmlsZS5jCi0rKysgYi9nZGIvc3ltZmlsZS5jCi1AQCAtNTUsNiArNTUsNyBAQAotICNp bmNsdWRlICJzb2xpYi5oIgotICNpbmNsdWRlICJyZW1vdGUuaCIKLSAjaW5jbHVkZSAic3RhY2su aCIKLSsjaW5jbHVkZSAiZ2RiX2JmZC5oIgotIAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAj aW5jbHVkZSA8ZmNudGwuaD4KLUBAIC0xMDM2LDcgKzEwMzcsNyBAQCBuZXdfc3ltZmlsZV9vYmpm aWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IGFkZF9mbGFncykKLSAgICBsb2FkZWQg ZmlsZS4KLSAKLSAgICBBQkZEIGlzIGEgQkZEIGFscmVhZHkgb3BlbiBvbiB0aGUgZmlsZSwgYXMg ZnJvbSBzeW1maWxlX2JmZF9vcGVuLgotLSAgIFRoaXMgQkZEIHdpbGwgYmUgY2xvc2VkIG9uIGVy cm9yLCBhbmQgaXMgYWx3YXlzIGNvbnN1bWVkIGJ5IHRoaXMgZnVuY3Rpb24uCi0rICAgQSBuZXcg cmVmZXJlbmNlIGlzIGFjcXVpcmVkIGJ5IHRoaXMgZnVuY3Rpb24uCi0gCi0gICAgQUREX0ZMQUdT IGVuY29kZXMgdmVyYm9zaXR5LCB3aGV0aGVyIHRoaXMgaXMgbWFpbiBzeW1ib2wgZmlsZSBvcgot ICAgIGV4dHJhLCBzdWNoIGFzIGR5bmFtaWNhbGx5IGxvYWRlZCBjb2RlLCBhbmQgd2hhdCB0byBk byB3aXRoIGJyZWFrcG9pbnMuCi1AQCAtMTA2MCw3ICsxMDYxLDYgQEAgc3ltYm9sX2ZpbGVfYWRk X3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICphYmZkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBmbGFncywgc3RydWN0IG9iamZpbGUgKnBhcmVudCkKLSB7 Ci0gICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLS0gIHN0cnVjdCBjbGVhbnVwICpteV9jbGVh bnVwczsKLSAgIGNvbnN0IGNoYXIgKm5hbWUgPSBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKTsKLSAg IGNvbnN0IGludCBmcm9tX3R0eSA9IGFkZF9mbGFncyAmIFNZTUZJTEVfVkVSQk9TRTsKLSAgIGNv bnN0IGludCBtYWlubGluZSA9IGFkZF9mbGFncyAmIFNZTUZJTEVfTUFJTkxJTkU7Ci1AQCAtMTA3 NCw4ICsxMDc0LDYgQEAgc3ltYm9sX2ZpbGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZk ICphYmZkLAotICAgICAgIGFkZF9mbGFncyAmPSB+U1lNRklMRV9OT19SRUFEOwotICAgICB9Ci0g Ci0tICBteV9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cF9iZmRfY2xvc2UgKGFiZmQpOwotLQotICAg LyogR2l2ZSB1c2VyIGEgY2hhbmNlIHRvIGJ1cnAgaWYgd2UnZCBiZQotICAgICAgaW50ZXJhY3Rp dmVseSB3aXBpbmcgb3V0IGFueSBleGlzdGluZyBzeW1ib2xzLiAgKi8KLSAKLUBAIC0xMDg2LDcg KzEwODQsNiBAQCBzeW1ib2xfZmlsZV9hZGRfd2l0aF9hZGRyc19vcl9vZmZzZXRzIChiZmQgKmFi ZmQsCi0gICAgIGVycm9yIChfKCJOb3QgY29uZmlybWVkLiIpKTsKLSAKLSAgIG9iamZpbGUgPSBh bGxvY2F0ZV9vYmpmaWxlIChhYmZkLCBmbGFncyB8IChtYWlubGluZSA/IE9CSkZfTUFJTkxJTkUg OiAwKSk7Ci0tICBkaXNjYXJkX2NsZWFudXBzIChteV9jbGVhbnVwcyk7Ci0gCi0gICBpZiAocGFy ZW50KQotICAgICBhZGRfc2VwYXJhdGVfZGVidWdfb2JqZmlsZSAob2JqZmlsZSwgcGFyZW50KTsK LUBAIC0xMjA3LDggKzEyMDQsMTMgQEAgc3RydWN0IG9iamZpbGUgKgotIHN5bWJvbF9maWxlX2Fk ZCAoY2hhciAqbmFtZSwgaW50IGFkZF9mbGFncywgc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICph ZGRycywKLSAJCSBpbnQgZmxhZ3MpCi0gewotLSAgcmV0dXJuIHN5bWJvbF9maWxlX2FkZF9mcm9t X2JmZCAoc3ltZmlsZV9iZmRfb3BlbiAobmFtZSksIGFkZF9mbGFncywgYWRkcnMsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncywgTlVMTCk7Ci0rICBiZmQgKmJmZCA9 IHN5bWZpbGVfYmZkX29wZW4gKG5hbWUpOwotKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXAgPSBt YWtlX2NsZWFudXBfYmZkX3VucmVmIChiZmQpOwotKyAgc3RydWN0IG9iamZpbGUgKm9iamY7Ci0r Ci0rICBvYmpmID0gc3ltYm9sX2ZpbGVfYWRkX2Zyb21fYmZkIChiZmQsIGFkZF9mbGFncywgYWRk cnMsIGZsYWdzLCBOVUxMKTsKLSsgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSsgIHJldHVybiBv YmpmOwotIH0KLSAKLSAKLUBAIC0xMzUwLDcgKzEzNTIsNyBAQCBzZXBhcmF0ZV9kZWJ1Z19maWxl X2V4aXN0cyAoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgbG9uZyBjcmMsCi0gICBpZiAoZmls ZW5hbWVfY21wIChuYW1lLCBwYXJlbnRfb2JqZmlsZS0+bmFtZSkgPT0gMCkKLSAgICAgcmV0dXJu IDA7Ci0gCi0tICBhYmZkID0gYmZkX29wZW5fbWF5YmVfcmVtb3RlIChuYW1lKTsKLSsgIGFiZmQg PSBnZGJfYmZkX29wZW5fbWF5YmVfcmVtb3RlIChuYW1lKTsKLSAKLSAgIGlmICghYWJmZCkKLSAg ICAgcmV0dXJuIDA7Ci1AQCAtMTM3Miw3ICsxMzc0LDcgQEAgc2VwYXJhdGVfZGVidWdfZmlsZV9l eGlzdHMgKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGxvbmcgY3JjLAotICAgICAgIGlmIChh YmZkX3N0YXQuc3RfZGV2ID09IHBhcmVudF9zdGF0LnN0X2RldgotIAkgICYmIGFiZmRfc3RhdC5z dF9pbm8gPT0gcGFyZW50X3N0YXQuc3RfaW5vKQotIAl7Ci0tCSAgYmZkX2Nsb3NlIChhYmZkKTsK LSsJICBnZGJfYmZkX3VucmVmIChhYmZkKTsKLSAJICByZXR1cm4gMDsKLSAJfQotICAgICAgIHZl cmlmaWVkX2FzX2RpZmZlcmVudCA9IDE7Ci1AQCAtMTM4Miw3ICsxMzg0LDcgQEAgc2VwYXJhdGVf ZGVidWdfZmlsZV9leGlzdHMgKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGxvbmcgY3JjLAot IAotICAgZmlsZV9jcmNfcCA9IGdldF9maWxlX2NyYyAoYWJmZCwgJmZpbGVfY3JjKTsKLSAKLS0g IGJmZF9jbG9zZSAoYWJmZCk7Ci0rICBnZGJfYmZkX3VucmVmIChhYmZkKTsKLSAKLSAgIGlmICgh ZmlsZV9jcmNfcCkKLSAgICAgcmV0dXJuIDA7Ci1AQCAtMTY5MCwxNSArMTY5MiwyMCBAQCBzZXRf aW5pdGlhbF9sYW5ndWFnZSAodm9pZCkKLSB9Ci0gCi0gLyogSWYgTkFNRSBpcyBhIHJlbW90ZSBu YW1lIG9wZW4gdGhlIGZpbGUgdXNpbmcgcmVtb3RlIHByb3RvY29sLCBvdGhlcndpc2UKLS0gICBv cGVuIGl0IG5vcm1hbGx5LiAgKi8KLSsgICBvcGVuIGl0IG5vcm1hbGx5LiAgUmV0dXJucyBhIG5l dyByZWZlcmVuY2UgdG8gdGhlIEJGRC4gIE9uIGVycm9yLAotKyAgIHJldHVybnMgTlVMTCB3aXRo IHRoZSBCRkQgZXJyb3Igc2V0LiAgKi8KLSAKLSBiZmQgKgotLWJmZF9vcGVuX21heWJlX3JlbW90 ZSAoY29uc3QgY2hhciAqbmFtZSkKLStnZGJfYmZkX29wZW5fbWF5YmVfcmVtb3RlIChjb25zdCBj aGFyICpuYW1lKQotIHsKLSsgIGJmZCAqcmVzdWx0OwotKwotICAgaWYgKHJlbW90ZV9maWxlbmFt ZV9wIChuYW1lKSkKLS0gICAgcmV0dXJuIHJlbW90ZV9iZmRfb3BlbiAobmFtZSwgZ251dGFyZ2V0 KTsKLSsgICAgcmVzdWx0ID0gcmVtb3RlX2JmZF9vcGVuIChuYW1lLCBnbnV0YXJnZXQpOwotICAg ZWxzZQotLSAgICByZXR1cm4gYmZkX29wZW5yIChuYW1lLCBnbnV0YXJnZXQpOwotKyAgICByZXN1 bHQgPSBnZGJfYmZkX29wZW5yIChuYW1lLCBnbnV0YXJnZXQpOwotKwotKyAgcmV0dXJuIHJlc3Vs dDsKLSB9Ci0gCi0gCi1AQCAtMTcxNiwxOSArMTcyMywxNCBAQCBzeW1maWxlX2JmZF9vcGVuIChj aGFyICpuYW1lKQotIAotICAgaWYgKHJlbW90ZV9maWxlbmFtZV9wIChuYW1lKSkKLSAgICAgewot LSAgICAgIG5hbWUgPSB4c3RyZHVwIChuYW1lKTsKLSAgICAgICBzeW1fYmZkID0gcmVtb3RlX2Jm ZF9vcGVuIChuYW1lLCBnbnV0YXJnZXQpOwotICAgICAgIGlmICghc3ltX2JmZCkKLS0JewotLQkg IG1ha2VfY2xlYW51cCAoeGZyZWUsIG5hbWUpOwotLQkgIGVycm9yIChfKCJgJXMnOiBjYW4ndCBv cGVuIHRvIHJlYWQgc3ltYm9sczogJXMuIiksIG5hbWUsCi0tCQkgYmZkX2Vycm1zZyAoYmZkX2dl dF9lcnJvciAoKSkpOwotLQl9Ci0rCWVycm9yIChfKCJgJXMnOiBjYW4ndCBvcGVuIHRvIHJlYWQg c3ltYm9sczogJXMuIiksIG5hbWUsCi0rCSAgICAgICBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9y ICgpKSk7Ci0gCi0gICAgICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChzeW1fYmZkLCBiZmRfb2Jq ZWN0KSkKLSAJewotLQkgIGJmZF9jbG9zZSAoc3ltX2JmZCk7Ci0tCSAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgbmFtZSk7Ci0rCSAgbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoc3ltX2JmZCk7Ci0gCSAg ZXJyb3IgKF8oImAlcyc6IGNhbid0IHJlYWQgc3ltYm9sczogJXMuIiksIG5hbWUsCi0gCQkgYmZk X2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOwotIAl9Ci1AQCAtMTc1NywxMiArMTc1OSwxMSBA QCBzeW1maWxlX2JmZF9vcGVuIChjaGFyICpuYW1lKQotICAgICAgIHBlcnJvcl93aXRoX25hbWUg KG5hbWUpOwotICAgICB9Ci0gCi0tICAvKiBGcmVlIDFzdCBuZXcgbWFsbG9jJ2QgY29weSwgYnV0 IGtlZXAgdGhlIDJuZCBtYWxsb2MnZCBjb3B5IGluCi0tICAgICBiZmQuICBJdCdsbCBiZSBmcmVl ZCBpbiBmcmVlX29iamZpbGUoKS4gICovCi0gICB4ZnJlZSAobmFtZSk7Ci0gICBuYW1lID0gYWJz b2x1dGVfbmFtZTsKLSsgIG1ha2VfY2xlYW51cCAoeGZyZWUsIG5hbWUpOwotIAotLSAgc3ltX2Jm ZCA9IGJmZF9mb3BlbiAobmFtZSwgZ251dGFyZ2V0LCBGT1BFTl9SQiwgZGVzYyk7Ci0rICBzeW1f YmZkID0gZ2RiX2JmZF9mb3BlbiAobmFtZSwgZ251dGFyZ2V0LCBGT1BFTl9SQiwgZGVzYyk7Ci0g ICBpZiAoIXN5bV9iZmQpCi0gICAgIHsKLSAgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBuYW1l KTsKLUBAIC0xNzczLDE4ICsxNzc0LDExIEBAIHN5bWZpbGVfYmZkX29wZW4gKGNoYXIgKm5hbWUp Ci0gCi0gICBpZiAoIWJmZF9jaGVja19mb3JtYXQgKHN5bV9iZmQsIGJmZF9vYmplY3QpKQotICAg ICB7Ci0tICAgICAgLyogRklYTUU6IHNob3VsZCBiZSBjaGVja2luZyBmb3IgZXJyb3JzIGZyb20g YmZkX2Nsb3NlIChmb3Igb25lCi0tICAgICAgICAgdGhpbmcsIG9uIGVycm9yIGl0IGRvZXMgbm90 IGZyZWUgYWxsIHRoZSBzdG9yYWdlIGFzc29jaWF0ZWQKLS0gICAgICAgICB3aXRoIHRoZSBiZmQp LiAgKi8KLS0gICAgICBiZmRfY2xvc2UgKHN5bV9iZmQpOwkvKiBUaGlzIGFsc28gY2xvc2VzIGRl c2MuICAqLwotLSAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIG5hbWUpOwotKyAgICAgIG1ha2Vf Y2xlYW51cF9iZmRfdW5yZWYgKHN5bV9iZmQpOwotICAgICAgIGVycm9yIChfKCJgJXMnOiBjYW4n dCByZWFkIHN5bWJvbHM6ICVzLiIpLCBuYW1lLAotIAkgICAgIGJmZF9lcnJtc2cgKGJmZF9nZXRf ZXJyb3IgKCkpKTsKLSAgICAgfQotIAotLSAgLyogYmZkX3VzcmRhdGEgZXhpc3RzIGZvciBhcHBs aWNhdGlvbnMgYW5kIGxpYmJmZCBtdXN0IG5vdCB0b3VjaCBpdC4gICovCi0tICBnZGJfYXNzZXJ0 IChiZmRfdXNyZGF0YSAoc3ltX2JmZCkgPT0gTlVMTCk7Ci0tCi0gICByZXR1cm4gc3ltX2JmZDsK LSB9Ci0gCi1AQCAtMjEwOSwxNyArMjEwMywxNCBAQCBnZW5lcmljX2xvYWQgKGNoYXIgKmFyZ3Ms IGludCBmcm9tX3R0eSkKLSAgICAgfQotIAotICAgLyogT3BlbiB0aGUgZmlsZSBmb3IgbG9hZGlu Zy4gICovCi0tICBsb2FkZmlsZV9iZmQgPSBiZmRfb3BlbnIgKGZpbGVuYW1lLCBnbnV0YXJnZXQp OwotKyAgbG9hZGZpbGVfYmZkID0gZ2RiX2JmZF9vcGVuciAoZmlsZW5hbWUsIGdudXRhcmdldCk7 Ci0gICBpZiAobG9hZGZpbGVfYmZkID09IE5VTEwpCi0gICAgIHsKLSAgICAgICBwZXJyb3Jfd2l0 aF9uYW1lIChmaWxlbmFtZSk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0tICAvKiBGSVhN RTogc2hvdWxkIGJlIGNoZWNraW5nIGZvciBlcnJvcnMgZnJvbSBiZmRfY2xvc2UgKGZvciBvbmUg dGhpbmcsCi0tICAgICBvbiBlcnJvciBpdCBkb2VzIG5vdCBmcmVlIGFsbCB0aGUgc3RvcmFnZSBh c3NvY2lhdGVkIHdpdGggdGhlCi0tICAgICBiZmQpLiAgKi8KLS0gIG1ha2VfY2xlYW51cF9iZmRf Y2xvc2UgKGxvYWRmaWxlX2JmZCk7Ci0rICBtYWtlX2NsZWFudXBfYmZkX3VucmVmIChsb2FkZmls ZV9iZmQpOwotIAotICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChsb2FkZmlsZV9iZmQsIGJmZF9v YmplY3QpKQotICAgICB7Ci1AQCAtMjUxOCwxNSArMjUwOSwxOCBAQCByZXJlYWRfc3ltYm9scyAo dm9pZCkKLSAJICAvKiBDbGVhbiB1cCBhbnkgc3RhdGUgQkZEIGhhcyBzaXR0aW5nIGFyb3VuZC4g IFdlIGRvbid0IG5lZWQKLSAJICAgICB0byBjbG9zZSB0aGUgZGVzY3JpcHRvciBidXQgQkZEIGxh Y2tzIGEgd2F5IG9mIGNsb3NpbmcgdGhlCi0gCSAgICAgQkZEIHdpdGhvdXQgY2xvc2luZyB0aGUg ZGVzY3JpcHRvci4gICovCi0tCSAgb2JmZF9maWxlbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKG9i amZpbGUtPm9iZmQpOwotLQkgIGlmICghYmZkX2Nsb3NlIChvYmpmaWxlLT5vYmZkKSkKLS0JICAg IGVycm9yIChfKCJDYW4ndCBjbG9zZSBCRkQgZm9yICVzOiAlcyIpLCBvYmpmaWxlLT5uYW1lLAot LQkJICAgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOwotLQkgIG9iamZpbGUtPm9iZmQg PSBiZmRfb3Blbl9tYXliZV9yZW1vdGUgKG9iZmRfZmlsZW5hbWUpOwotKwkgIHsKLSsJICAgIHN0 cnVjdCBiZmQgKm9iZmQgPSBvYmpmaWxlLT5vYmZkOwotKwotKwkgICAgb2JmZF9maWxlbmFtZSA9 IGJmZF9nZXRfZmlsZW5hbWUgKG9iamZpbGUtPm9iZmQpOwotKwkgICAgLyogT3BlbiB0aGUgbmV3 IEJGRCBiZWZvcmUgZnJlZWluZyB0aGUgb2xkIG9uZSwgc28gdGhhdAotKwkgICAgICAgdGhlIGZp bGVuYW1lIHJlbWFpbnMgbGl2ZS4gICovCi0rCSAgICBvYmpmaWxlLT5vYmZkID0gZ2RiX2JmZF9v cGVuX21heWJlX3JlbW90ZSAob2JmZF9maWxlbmFtZSk7Ci0rCSAgICBnZGJfYmZkX3VucmVmIChv YmZkKTsKLSsJICB9Ci0rCi0gCSAgaWYgKG9iamZpbGUtPm9iZmQgPT0gTlVMTCkKLSAJICAgIGVy cm9yIChfKCJDYW4ndCBvcGVuICVzIHRvIHJlYWQgc3ltYm9scy4iKSwgb2JqZmlsZS0+bmFtZSk7 Ci0tCSAgZWxzZQotLQkgICAgb2JqZmlsZS0+b2JmZCA9IGdkYl9iZmRfcmVmIChvYmpmaWxlLT5v YmZkKTsKLSAJICAvKiBiZmRfb3BlbnIgc2V0cyBjYWNoZWFibGUgdG8gdHJ1ZSwgd2hpY2ggaXMg d2hhdCB3ZSB3YW50LiAgKi8KLSAJICBpZiAoIWJmZF9jaGVja19mb3JtYXQgKG9iamZpbGUtPm9i ZmQsIGJmZF9vYmplY3QpKQotIAkgICAgZXJyb3IgKF8oIkNhbid0IHJlYWQgc3ltYm9scyBmcm9t ICVzOiAlcy4iKSwgb2JqZmlsZS0+bmFtZSwKLWRpZmYgLS1naXQgYS9nZGIvc3ltZmlsZS5oIGIv Z2RiL3N5bWZpbGUuaAotaW5kZXggYWNhNzM1OS4uMTg0YTgzZSAxMDA2NDQKLS0tLSBhL2dkYi9z eW1maWxlLmgKLSsrKyBiL2dkYi9zeW1maWxlLmgKLUBAIC01NTMsNyArNTUzLDcgQEAgZXh0ZXJu IHZvaWQgZmluZF9sb3dlc3Rfc2VjdGlvbiAoYmZkICosIGFzZWN0aW9uICosIHZvaWQgKik7Ci0g Ci0gZXh0ZXJuIGJmZCAqc3ltZmlsZV9iZmRfb3BlbiAoY2hhciAqKTsKLSAKLS1leHRlcm4gYmZk ICpiZmRfb3Blbl9tYXliZV9yZW1vdGUgKGNvbnN0IGNoYXIgKik7Ci0rZXh0ZXJuIGJmZCAqZ2Ri X2JmZF9vcGVuX21heWJlX3JlbW90ZSAoY29uc3QgY2hhciAqKTsKLSAKLSBleHRlcm4gaW50IGdl dF9zZWN0aW9uX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqLCBjaGFyICopOwotIAogZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9wYWNrZWRfYXJyYXkuZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYWRhL3BhY2tlZF9hcnJheS5leHAKLWluZGV4IDY3ODYzOWMuLjQ3YTIyMDIgMTAwNjQ0 CitpbmRleCBlMjJjYjNhLi41ZTE2MTg2IDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu YWRhL3BhY2tlZF9hcnJheS5leHAKICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9wYWNrZWRf YXJyYXkuZXhwCi1AQCAtNjAsNSArNjAsMTEgQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgIiR0ZXN0IiAi JHRlc3QiIHsKK0BAIC01Niw1ICs1NiwxMSBAQCBnZGJfdGVzdF9tdWx0aXBsZSAiJHRlc3QiICIk dGVzdCIgewogICAgICAgICAgIyBhcmUuICBPYnNlcnZlZCB3aXRoIChGU0YgR05VIEFkYSA0LjUu MyAyMDExMDEyNCkuCiAgICAgICAgICB4ZmFpbCAkdGVzdAogICAgICB9CkBAIC0xMDk2NCw3ICs2 MDQ2LDcgQEAgaW5kZXggMDAwMDAwMC4uYjA1NDExZQogKwogK2dkYl90ZXN0ICJwdHlwZSBhcnJh eSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBlIGFycmF5IgogZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYXJyYXlpZHguYwotaW5kZXggYTk5MTM3ZS4uYzNkYzJkOSAxMDA2NDQKK2luZGV4 IDJjYzkzNWIuLjMwYzdmODUgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fy cmF5aWR4LmMKICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYwogQEAgLTE3 LDYgKzE3LDEzIEBACkBAIC0xMDk4Miw3ICs2MDY0LDcgQEAgaW5kZXggYTk5MTM3ZS4uYzNkYzJk OSAxMDA2NDQKICBtYWluICh2b2lkKQogIHsKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2FycmF5aWR4LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhw Ci1pbmRleCBjYmEwMDI0Li4wZGMwZTQ2IDEwMDY0NAoraW5kZXggMzg3YjM0Zi4uZDU5NTZjZSAx MDA2NDQKIC0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCiArKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cAogQEAgLTUzLDQgKzUzLDEyIEBAIGdk Yl90ZXN0ICJwcmludCBhcnJheSIgXApAQCAtMTI4NDcsMTAgKzc5MjksMTAgQEAgaW5kZXggMDAw MDAwMC4uNDc0N2VhOQogKyAgd3JpdGUgKCosKikgYSAgICAgICAgICAgICAgICAgISBicmVhay1z dGF0aWMKICtlbmQKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3Qu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAotaW5kZXggNzY0NWNhZi4u ZjRmOWMxZiAxMDA2NDQKK2luZGV4IDM1MWZhODcuLjBiNWRiNmUgMTAwNjQ0CiAtLS0gYS9nZGIv dGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5n ZGIvc2VsZnRlc3QuZXhwCi1AQCAtOTIsNiArOTIsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4 dHMge30geworQEAgLTkxLDYgKzkxLDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsK ICAJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIGNtZGFyZ192ZWMgaW5pdGlhbGl6YXRpb24i CiAgCQlzZXQgY29tbWFuZCAic3RlcCIKICAJICAgIH0KQEAgLTEzMjU2LDI5ICs4MzM4LDIwIEBA IGluZGV4IDAwMDAwMDAuLjI5NTYwMmQKICsgIHdyaXRlbG4ocyk7IHsgc2V0IGJyZWFrcG9pbnQg MiBoZXJlIH0KICtlbmQuCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LWZyYW1lLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKLWluZGV4 IDk5M2U3NzQuLjUyZGJkMTcgMTAwNjQ0CitpbmRleCBhYTRkOTM3Li42MGQyY2M4IDEwMDY0NAog LS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cAogKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cAotQEAgLTc0LDggKzc0LDYgQEAgZ2RiX3Rl c3QgInB5dGhvbiBwcmludCBiZnJhbWUgPT0gZ2RiLm5ld2VzdF9mcmFtZSgpIiBUcnVlIFwKLSAK LSBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwID09IGYxIiAiID0gRmFsc2Ui ICJ0ZXN0IGVxdWFsaXR5IGNvbXBhcmlzb24gKGZhbHNlKSIKLSBnZGJfdGVzdCAicHl0aG9uIHBy aW50ICdyZXN1bHQgPScsIGYwID09IGYwIiAiID0gVHJ1ZSIgInRlc3QgZXF1YWxpdHkgY29tcGFy aXNvbiAodHJ1ZSkiCi0tZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMCAhPSBm MSIgIiA9IFRydWUiICJ0ZXN0IGluZXF1YWxpdHkgY29tcGFyaXNvbiAodHJ1ZSkiCi0tZ2RiX3Rl c3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMCAhPSBmMCIgIiA9IEZhbHNlIiAidGVzdCBp bmVxdWFsaXR5IGNvbXBhcmlzb24gKGZhbHNlKSIKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdy ZXN1bHQgPScsIGYwLmlzX3ZhbGlkICgpIiAiID0gVHJ1ZSIgInRlc3QgRnJhbWUuaXNfdmFsaWQi Ci0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5uYW1lICgpIiAiID0gZjIi ICJ0ZXN0IEZyYW1lLm5hbWUiCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBm MC50eXBlICgpID09IGdkYi5OT1JNQUxfRlJBTUUiICIgPSBUcnVlIiAidGVzdCBGcmFtZS50eXBl IgotQEAgLTkwLDMgKzg4LDUgQEAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBm MC5yZWFkX3ZhciAoJ3ZhcmlhYmxlX3doaWNoX3N1cmVseV9kb2VzbnRfZXgKLSBnZGJfdGVzdCAi cHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnJlYWRfdmFyICgnYScpIiAiID0gMSIgInRlc3Qg RnJhbWUucmVhZF92YXIgLSBzdWNjZXNzIgorQEAgLTkwLDMgKzkwLDUgQEAgZ2RiX3Rlc3QgInB5 dGhvbiBwcmludCAoJ3Jlc3VsdCA9ICVzJyAlIGYwLnJlYWRfdmFyICgndmFyaWFibGVfd2hpY2hf c3VyZWx5X2RvZXMKKyBnZGJfdGVzdCAicHl0aG9uIHByaW50ICgncmVzdWx0ID0gJXMnICUgZjAu cmVhZF92YXIgKCdhJykpIiAiID0gMSIgInRlc3QgRnJhbWUucmVhZF92YXIgLSBzdWNjZXNzIgog IAotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZ2RiLnNlbGVjdGVkX2ZyYW1l ICgpID09IGYxIiAiID0gVHJ1ZSIgInRlc3QgZ2RiLnNlbGVjdGVkX2ZyYW1lIgorIGdkYl90ZXN0 ICJweXRob24gcHJpbnQgKCdyZXN1bHQgPSAlcycgJSAoZ2RiLnNlbGVjdGVkX2ZyYW1lICgpID09 IGYxKSkiICIgPSBUcnVlIiAidGVzdCBnZGIuc2VsZWN0ZWRfZnJhbWUiCiArCi0rZ2RiX3Rlc3Qg InB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5ibG9jayAoKSIgIjxnZGIuQmxvY2sgb2JqZWN0 IGF0IDB4XFtcWzp4ZGlnaXQ6XF1cXSs+IiAidGVzdCBGcmFtZS5ibG9jayIKKytnZGJfdGVzdCAi cHl0aG9uIHByaW50ICgncmVzdWx0ID0gJXMnICUgKGYwLmJsb2NrICgpKSkiICI8Z2RiLkJsb2Nr IG9iamVjdCBhdCAweFxbXFs6eGRpZ2l0OlxdXF0rPiIgInRlc3QgRnJhbWUuYmxvY2siCiBkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKLWluZGV4IGFjZmQ4OWIuLmM3N2Q5YzIgMTAw NjQ0CitpbmRleCA5MTQyYzcyLi4yODU1MjIwIDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LXZhbHVlLmV4cAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LXZhbHVlLmV4cAotQEAgLTM1OCw2ICszNTgsMTUgQEAgcHJvYyB0ZXN0X3ZhbHVlX2FmdGVyX2Rl YXRoIHt9IHsKK0BAIC0zNjYsNiArMzY2LDE1IEBAIHByb2MgdGVzdF92YWx1ZV9hZnRlcl9kZWF0 aCB7fSB7CiAgICAgICJwcmludCB2YWx1ZSdzIHR5cGUiCiAgfQogIApAQCAtMTMyOTQsNyArODM2 Nyw3IEBAIGluZGV4IGFjZmQ4OWIuLmM3N2Q5YzIgMTAwNjQ0CiAgIyBSZWdyZXNzaW9uIHRlc3Qg Zm9yIGludmFsaWQgc3Vic2NyaXB0IG9wZXJhdGlvbnMuICBUaGUgYnVnIHdhcyB0aGF0CiAgIyB0 aGUgdHlwZSBvZiB0aGUgdmFsdWUgd2FzIG5vdCBiZWluZyBjaGVja2VkIGJlZm9yZSBhbGxvd2lu ZyBhCiAgIyBzdWJzY3JpcHQgb3BlcmF0aW9uIHRvIHByb2NlZWQuCi1AQCAtNDk0LDYgKzUwMyw3 IEBAIHRlc3RfdmFsdWVfaW5faW5mZXJpb3IKK0BAIC00OTIsNiArNTAxLDcgQEAgdGVzdF92YWx1 ZV9pbl9pbmZlcmlvcgogIHRlc3RfaW5mZXJpb3JfZnVuY3Rpb25fY2FsbAogIHRlc3RfbGF6eV9z dHJpbmdzCiAgdGVzdF92YWx1ZV9hZnRlcl9kZWF0aApAQCAtMTMzMDMsMTAgKzgzNzYsMTAgQEAg aW5kZXggYWNmZDg5Yi4uYzc3ZDljMiAxMDA2NDQKICAjIFRlc3QgZWl0aGVyIEMgb3IgQysrIHZh bHVlcy4gCiAgdGVzdF9zdWJzY3JpcHRfcmVncmVzc2lvbiAiJHtiaW5maWxlfSIgImMiCiBkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL2dk Yi5leHAKLWluZGV4IDRmMmI3YzkuLjBkYWVmMjUgMTAwNjQ0CitpbmRleCA4YjE2YjM4Li5mNmU1 OWIwIDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogKysrIGIvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cAotQEAgLTE0Miw2ICsxNDIsMTEgQEAgcHJvYyBnZGJfdW5sb2Fk IHt9IHsKK0BAIC0xNDMsNiArMTQzLDExIEBAIHByb2MgZ2RiX3VubG9hZCB7fSB7CiAgCSAgICBz ZW5kX2dkYiAieVxuIgogIAkgICAgZXhwX2NvbnRpbnVlCiAgCX0KQEAgLTEzMzE5LDcgKzgzOTIs NyBAQCBpbmRleCA0ZjJiN2M5Li4wZGFlZjI1IDEwMDY0NAogIAkgICAgc2VuZF9nZGIgInlcbiIK ICAJICAgIGV4cF9jb250aW51ZQogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2Nh bC5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhwCi1pbmRleCBkZDE4ZDM3Li5mOTcz NDg1IDEwMDY0NAoraW5kZXggNTY5ZmIwMi4uY2FjZWNmNCAxMDA2NDQKIC0tLSBhL2dkYi90ZXN0 c3VpdGUvbGliL3Bhc2NhbC5leHAKICsrKyBiL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAK IEBAIC0zNyw2ICszNyw5IEBAIHByb2MgcGFzY2FsX2luaXQge30gewpAQCAtMTMzNTQsMTAgKzg0 MjcsMTAgQEAgaW5kZXggZGQxOGQzNy4uZjk3MzQ4NSAxMDA2NDQKICAgICAgc2V0IHBhc2NhbF9p bml0X2RvbmUgMQogIH0gICAKIGRpZmYgLS1naXQgYS9nZGIvdG9wLmMgYi9nZGIvdG9wLmMKLWlu ZGV4IDA2MWFkNDguLmQ2MTVjZmMgMTAwNjQ0CitpbmRleCBlOWQ2YzFjLi43ZmU2YWQxIDEwMDY0 NAogLS0tIGEvZ2RiL3RvcC5jCiArKysgYi9nZGIvdG9wLmMKLUBAIC0zNTIsNiArMzUyLDkgQEAg cHJlcGFyZV9leGVjdXRlX2NvbW1hbmQgKHZvaWQpCitAQCAtMzUwLDYgKzM1MCw5IEBAIHByZXBh cmVfZXhlY3V0ZV9jb21tYW5kICh2b2lkKQogIAogICAgbWFyayA9IHZhbHVlX21hcmsgKCk7CiAg ICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX3ZhbHVlX2ZyZWVfdG9fbWFyayAobWFyayk7CkBAIC0x MzM2OCw0NSArODQ0MSwzNiBAQCBpbmRleCAwNjFhZDQ4Li5kNjE1Y2ZjIDEwMDY0NAogICAgLyog V2l0aCBtdWx0aXBsZSB0aHJlYWRzIHJ1bm5pbmcgd2hpbGUgdGhlIG9uZSB3ZSdyZSBleGFtaW5p bmcgaXMKICAgICAgIHN0b3BwZWQsIHRoZSBkY2FjaGUgY2FuIGdldCBzdGFsZSB3aXRob3V0IHVz IGJlaW5nIGFibGUgdG8gZGV0ZWN0CiBkaWZmIC0tZ2l0IGEvZ2RiL3R5cGVwcmludC5jIGIvZ2Ri L3R5cGVwcmludC5jCi1pbmRleCBjMjVlNzA1Li40OTg5NThhIDEwMDY0NAoraW5kZXggMmQ1YTZh Zi4uNTI1MWUzZiAxMDA2NDQKIC0tLSBhL2dkYi90eXBlcHJpbnQuYwogKysrIGIvZ2RiL3R5cGVw cmludC5jCi1AQCAtMzUsNiArMzUsNyBAQAorQEAgLTM0LDYgKzM0LDcgQEAKICAjaW5jbHVkZSAi Z2RiX3N0cmluZy5oIgogICNpbmNsdWRlICJleGNlcHRpb25zLmgiCiAgI2luY2x1ZGUgInZhbHBy aW50LmgiCiArI2luY2x1ZGUgImR3YXJmMmxvYy5oIgogICNpbmNsdWRlIDxlcnJuby5oPgotIAot IGV4dGVybiB2b2lkIF9pbml0aWFsaXplX3R5cGVwcmludCAodm9pZCk7Ci1AQCAtNzYsNiArNzcs OSBAQCB2b2lkCisgI2luY2x1ZGUgPGN0eXBlLmg+CisgI2luY2x1ZGUgImNsaS9jbGktdXRpbHMu aCIKK0BAIC0zNjMsNiArMzY0LDkgQEAgdm9pZAogIHR5cGVfcHJpbnQgKHN0cnVjdCB0eXBlICp0 eXBlLCBjb25zdCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgCSAg ICBpbnQgc2hvdykKICB7CiArICBpZiAoc2hvdyA+PSAwICYmIGN1cnJlbnRfbGFuZ3VhZ2UtPmxh X2xhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKICsgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5 cGUpOwogKwotICAgTEFfUFJJTlRfVFlQRSAodHlwZSwgdmFyc3RyaW5nLCBzdHJlYW0sIHNob3cs IDApOworICAgTEFfUFJJTlRfVFlQRSAodHlwZSwgdmFyc3RyaW5nLCBzdHJlYW0sIHNob3csIDAs ICZkZWZhdWx0X3B0eXBlX2ZsYWdzKTsKICB9CiAgCi1AQCAtMTE0LDcgKzExOCw4IEBAIHdoYXRp c19leHAgKGNoYXIgKmV4cCwgaW50IHNob3cpCi0gewotICAgc3RydWN0IGV4cHJlc3Npb24gKmV4 cHI7Ci0gICBzdHJ1Y3QgdmFsdWUgKnZhbDsKLS0gIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW4g PSBOVUxMOworQEAgLTQxMCw2ICs0MTQsNyBAQCB3aGF0aXNfZXhwIChjaGFyICpleHAsIGludCBz aG93KQorICAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKKyAgIHN0cnVjdCB0eXBl X3ByaW50X29wdGlvbnMgZmxhZ3MgPSBkZWZhdWx0X3B0eXBlX2ZsYWdzOworIAogKyAgLyogUmVx dWlyZWQgYXQgbGVhc3QgZm9yIHRoZSBvYmplY3RfYWRkcmVzc19zZXQgY2FsbC4gICovCi0rICBz dHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5V TEwpOwotICAgc3RydWN0IHR5cGUgKnJlYWxfdHlwZSA9IE5VTEw7Ci0gICBzdHJ1Y3QgdHlwZSAq dHlwZTsKLSAgIGludCBmdWxsID0gMDsKLUBAIC0xMjUsMTIgKzEzMCwxMyBAQCB3aGF0aXNfZXhw IChjaGFyICpleHAsIGludCBzaG93KQorICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxs X2NsZWFudXAsIE5VTEwpOworIAogICAgaWYgKGV4cCkKLSAgICAgewotICAgICAgIGV4cHIgPSBw YXJzZV9leHByZXNzaW9uIChleHApOwotLSAgICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAo ZnJlZV9jdXJyZW50X2NvbnRlbnRzLCAmZXhwcik7Ci0rICAgICAgbWFrZV9jbGVhbnVwIChmcmVl X2N1cnJlbnRfY29udGVudHMsICZleHByKTsKLSAgICAgICB2YWwgPSBldmFsdWF0ZV90eXBlIChl eHByKTsKLSAgICAgfQorQEAgLTQ1Nyw2ICs0NjIsNyBAQCB3aGF0aXNfZXhwIChjaGFyICpleHAs IGludCBzaG93KQogICAgZWxzZQogICAgICB2YWwgPSBhY2Nlc3NfdmFsdWVfaGlzdG9yeSAoMCk7 CiAgCkBAIC0xMzQxNCw0MyArODQ3OCwxMSBAQCBpbmRleCBjMjVlNzA1Li40OTg5NThhIDEwMDY0 NAogICAgdHlwZSA9IHZhbHVlX3R5cGUgKHZhbCk7CiAgCiAgICBnZXRfdXNlcl9wcmludF9vcHRp b25zICgmb3B0cyk7Ci1AQCAtMTU4LDggKzE2NCw3IEBAIHdoYXRpc19leHAgKGNoYXIgKmV4cCwg aW50IHNob3cpCi0gICB0eXBlX3ByaW50ICh0eXBlLCAiIiwgZ2RiX3N0ZG91dCwgc2hvdyk7Ci0g ICBwcmludGZfZmlsdGVyZWQgKCJcbiIpOwotIAotLSAgaWYgKGV4cCkKLS0gICAgZG9fY2xlYW51 cHMgKG9sZF9jaGFpbik7Ci0rICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSB9Ci0gCi0gc3Rh dGljIHZvaWQKIGRpZmYgLS1naXQgYS9nZGIvdXRpbHMuYyBiL2dkYi91dGlscy5jCi1pbmRleCA1 NTY2MTQ5Li42ZTFhYTM0IDEwMDY0NAoraW5kZXggOGJhZTRlYi4uNmViNTg3NyAxMDA2NDQKIC0t LSBhL2dkYi91dGlscy5jCiArKysgYi9nZGIvdXRpbHMuYwotQEAgLTI3LDYgKzI3LDcgQEAKLSAj aW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKLSAjaW5jbHVk ZSAiZm5tYXRjaC5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0gI2lmZGVmIEhBVkVfU1lTX1JF U09VUkNFX0gKLSAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0gI2VuZGlmIC8qIEhBVkVfU1lT X1JFU09VUkNFX0ggKi8KLUBAIC0xOTgsMTEgKzE5OSwxMSBAQCBtYWtlX2NsZWFudXBfZHluX3N0 cmluZ19kZWxldGUgKGR5bl9zdHJpbmdfdCBhcmcpCi0gc3RhdGljIHZvaWQKLSBkb19iZmRfY2xv c2VfY2xlYW51cCAodm9pZCAqYXJnKQotIHsKLS0gIGJmZF9jbG9zZSAoYXJnKTsKLSsgIGdkYl9i ZmRfdW5yZWYgKGFyZyk7Ci0gfQotIAotIHN0cnVjdCBjbGVhbnVwICoKLS1tYWtlX2NsZWFudXBf YmZkX2Nsb3NlIChiZmQgKmFiZmQpCi0rbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoYmZkICphYmZk KQotIHsKLSAgIHJldHVybiBtYWtlX2NsZWFudXAgKGRvX2JmZF9jbG9zZV9jbGVhbnVwLCBhYmZk KTsKLSB9Ci1AQCAtMTczOCw2ICsxNzM5LDM2IEBAIHNldF9iYXRjaF9mbGFnX2FuZF9tYWtlX2Ns ZWFudXBfcmVzdG9yZV9wYWdlX2luZm8gKHZvaWQpCitAQCAtMTgyMSw2ICsxODIxLDM2IEBAIHNl dF9iYXRjaF9mbGFnX2FuZF9tYWtlX2NsZWFudXBfcmVzdG9yZV9wYWdlX2luZm8gKHZvaWQpCiAg ICByZXR1cm4gYmFja190bzsKICB9CiAgCkBAIC0xMzQ4NywxMSArODUxOSwyMiBAQCBpbmRleCA1 NTY2MTQ5Li42ZTFhYTM0IDEwMDY0NAogIC8qIFNldCB0aGUgc2NyZWVuIHNpemUgYmFzZWQgb24g TElORVNfUEVSX1BBR0UgYW5kIENIQVJTX1BFUl9MSU5FLiAgKi8KICAKICBzdGF0aWMgdm9pZAor ZGlmZiAtLWdpdCBhL2dkYi91dGlscy5oIGIvZ2RiL3V0aWxzLmgKK2luZGV4IDY5ODNhNTMuLjBl ZmE1NTMgMTAwNjQ0CistLS0gYS9nZGIvdXRpbHMuaAorKysrIGIvZ2RiL3V0aWxzLmgKK0BAIC0z ODAsNCArMzgwLDYgQEAgZXh0ZXJuIGludCBteXJlYWQgKGludCwgY2hhciAqLCBpbnQpOworIGV4 dGVybiBVTE9OR0VTVCBhbGlnbl91cCAoVUxPTkdFU1QgdiwgaW50IG4pOworIGV4dGVybiBVTE9O R0VTVCBhbGlnbl9kb3duIChVTE9OR0VTVCB2LCBpbnQgbik7CisgCisrZXh0ZXJuIHN0cnVjdCBj bGVhbnVwICptYWtlX2NsZWFudXBfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAodm9pZCk7CisrCisg I2VuZGlmIC8qIFVUSUxTX0ggKi8KIGRpZmYgLS1naXQgYS9nZGIvdmFsYXJpdGguYyBiL2dkYi92 YWxhcml0aC5jCi1pbmRleCA5NmQ1NDExLi4zN2JkNDY0IDEwMDY0NAoraW5kZXggMDc0Y2YzNi4u NWM0NGVkYyAxMDA2NDQKIC0tLSBhL2dkYi92YWxhcml0aC5jCiArKysgYi9nZGIvdmFsYXJpdGgu YwotQEAgLTE5Nyw3ICsxOTcsMTAgQEAgdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3Qg dmFsdWUgKmFycmF5LCBMT05HRVNUIGluZGV4LCBpbnQgbG93ZXJib3VuZCkKK0BAIC0xOTUsNyAr MTk1LDEwIEBAIHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZhbHVlICphcnJheSwg TE9OR0VTVCBpbmRleCwgaW50IGxvd2VyYm91bmQpCiAgICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlw ZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7CiAgICBzdHJ1Y3QgdHlwZSAq ZWx0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKSk7 CiAgICB1bnNpZ25lZCBpbnQgZWx0X3NpemUgPSBUWVBFX0xFTkdUSCAoZWx0X3R5cGUpOwpAQCAt MTM1MDMsNyArODU0Niw3IEBAIGluZGV4IDk2ZDU0MTEuLjM3YmQ0NjQgMTAwNjQ0CiAgICBzdHJ1 Y3QgdmFsdWUgKnY7CiAgCiAgICBpZiAoaW5kZXggPCBsb3dlcmJvdW5kIHx8ICghVFlQRV9BUlJB WV9VUFBFUl9CT1VORF9JU19VTkRFRklORUQgKGFycmF5X3R5cGUpCi1AQCAtMjk3LDYgKzMwMCwx MCBAQCBpbnQKK0BAIC0yNTUsNiArMjU4LDEwIEBAIGludAogIGJpbm9wX3VzZXJfZGVmaW5lZF9w IChlbnVtIGV4cF9vcGNvZGUgb3AsCiAgCQkgICAgICBzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVj dCB2YWx1ZSAqYXJnMikKICB7CkBAIC0xMzUxNSw3ICs4NTU4LDcgQEAgaW5kZXggOTZkNTQxMS4u MzdiZDQ2NCAxMDA2NDQKICB9CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbG9wcy5jIGIvZ2RiL3Zh bG9wcy5jCi1pbmRleCA5N2Q4ODliLi42YWU3N2I4IDEwMDY0NAoraW5kZXggZTNkMzZhMS4uYTZi ZGE0ZCAxMDA2NDQKIC0tLSBhL2dkYi92YWxvcHMuYwogKysrIGIvZ2RiL3ZhbG9wcy5jCiBAQCAt NDUsNiArNDUsNyBAQApAQCAtMTM1MjQsNyArODU2Nyw3IEBAIGluZGV4IDk3ZDg4OWIuLjZhZTc3 YjggMTAwNjQ0CiAgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKICsjaW5jbHVkZSAiZHdhcmYybG9j LmgiCiAgCi0gZXh0ZXJuIGludCBvdmVybG9hZF9kZWJ1ZzsKKyBleHRlcm4gdW5zaWduZWQgaW50 IG92ZXJsb2FkX2RlYnVnOwogIC8qIExvY2FsIGZ1bmN0aW9ucy4gICovCiBAQCAtOTE5LDYgKzky MCw2NSBAQCB2YWx1ZV9vbmUgKHN0cnVjdCB0eXBlICp0eXBlKQogICAgcmV0dXJuIHZhbDsKQEAg LTEzNjAyLDE3ICs4NjQ1LDE4IEBAIGluZGV4IDk3ZDg4OWIuLjZhZTc3YjggMTAwNjQ0CiAgICBp ZiAodmFsdWVfYml0c2l6ZSAodmFsKSkKICAgICAgewogICAgICAgIC8qIFRvIHJlYWQgYSBsYXp5 IGJpdGZpZWxkLCByZWFkIHRoZSBlbnRpcmUgZW5jbG9zaW5nIHZhbHVlLiAgVGhpcwotQEAgLTEw MTUsMTIgKzEwNzYsMjQgQEAgdmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCitA QCAtMTAxNCwxMyArMTA3NSwyNCBAQCB2YWx1ZV9mZXRjaF9sYXp5IChzdHJ1Y3QgdmFsdWUgKnZh bCkKICAgICAgfQogICAgZWxzZSBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX21lbW9yeSkK ICAgICAgewogLSAgICAgIENPUkVfQUREUiBhZGRyID0gdmFsdWVfYWRkcmVzcyAodmFsKTsKLS0g ICAgICBpbnQgbGVuZ3RoID0gVFlQRV9MRU5HVEggKGNoZWNrX3R5cGVkZWYgKHZhbHVlX2VuY2xv c2luZ190eXBlICh2YWwpKSk7CistICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBjaGVja190eXBl ZGVmICh2YWx1ZV9lbmNsb3NpbmdfdHlwZSAodmFsKSk7CiArICAgICAgQ09SRV9BRERSIGFkZHIg PSB2YWx1ZV9yYXdfYWRkcmVzcyAodmFsKTsKICAKLS0gICAgICBpZiAobGVuZ3RoKQorLSAgICAg IGlmIChUWVBFX0xFTkdUSCAodHlwZSkpCiAtCXJlYWRfdmFsdWVfbWVtb3J5ICh2YWwsIDAsIHZh bHVlX3N0YWNrICh2YWwpLAotLQkJCSAgIGFkZHIsIHZhbHVlX2NvbnRlbnRzX2FsbF9yYXcgKHZh bCksIGxlbmd0aCk7CistCQkJICAgYWRkciwgdmFsdWVfY29udGVudHNfYWxsX3JhdyAodmFsKSwK Ky0JCQkgICBUWVBFX0xFTkdUSCAodHlwZSkpOwogKyAgICAgIGlmIChvYmplY3RfYWRkcmVzc19n ZXRfZGF0YSAodmFsdWVfdHlwZSAodmFsKSwgJmFkZHIpKQogKwl7CiArCSAgc3RydWN0IHR5cGUg KnR5cGUgPSB2YWx1ZV9lbmNsb3NpbmdfdHlwZSAodmFsKTsKQEAgLTEzNjMyLDcgKzg2NzYsNyBA QCBpbmRleCA5N2Q4ODliLi42YWU3N2I4IDEwMDY0NAogICAgICB9CiAgICBlbHNlIGlmIChWQUxV RV9MVkFMICh2YWwpID09IGx2YWxfcmVnaXN0ZXIpCiAgICAgIHsKLUBAIC0xNTMwLDcgKzE2MDMs MTggQEAgYWRkcmVzc19vZl92YXJpYWJsZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgYmxv Y2sgKmIpCitAQCAtMTUyOSw3ICsxNjAxLDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0cnVj dCBzeW1ib2wgKnZhciwgY29uc3Qgc3RydWN0IGJsb2NrICpiKQogICAgaWYgKChWQUxVRV9MVkFM ICh2YWwpID09IGx2YWxfbWVtb3J5ICYmIHZhbHVlX2xhenkgKHZhbCkpCiAgICAgICAgfHwgVFlQ RV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRlVOQykKICAgICAgewpAQCAtMTM2NTIsNyArODY5 Niw3IEBAIGluZGV4IDk3ZDg4OWIuLjZhZTc3YjggMTAwNjQ0CiAgCiAgICAgICAgcmV0dXJuIHZh bHVlX2Zyb21fcG9pbnRlciAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFkZHIpOwogICAg ICB9Ci1AQCAtMTYzNyw2ICsxNzIxLDcgQEAgc3RydWN0IHZhbHVlICoKK0BAIC0xNjM2LDYgKzE3 MTksNyBAQCBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVl ICphcmcxKQogIHsKICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVf dHlwZSAoYXJnMSkpOwpAQCAtMTM2NjAsNyArODcwNCw3IEBAIGluZGV4IDk3ZDg4OWIuLjZhZTc3 YjggMTAwNjQ0CiAgCiAgICAvKiBJZiB0aGUgdXNlciB0cmllcyB0byBkbyBzb21ldGhpbmcgcmVx dWlyaW5nIGEgcG9pbnRlciB3aXRoIGFuCiAgICAgICBhcnJheSB0aGF0IGhhcyBub3QgeWV0IGJl ZW4gcHVzaGVkIHRvIHRoZSB0YXJnZXQsIHRoZW4gdGhpcyB3b3VsZAotQEAgLTE2NDYsOCArMTcz MSwxMiBAQCB2YWx1ZV9jb2VyY2VfYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJnMSkKK0BAIC0xNjQ1 LDggKzE3MjksMTIgQEAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCiAg ICBpZiAoVkFMVUVfTFZBTCAoYXJnMSkgIT0gbHZhbF9tZW1vcnkpCiAgICAgIGVycm9yIChfKCJB dHRlbXB0IHRvIHRha2UgYWRkcmVzcyBvZiB2YWx1ZSBub3QgbG9jYXRlZCBpbiBtZW1vcnkuIikp OwogIApAQCAtMTM2NzQsMTcgKzg3MTgsMTcgQEAgaW5kZXggOTdkODg5Yi4uNmFlNzdiOCAxMDA2 NDQKICB9CiAgCiAgLyogR2l2ZW4gYSB2YWx1ZSB3aGljaCBpcyBhIGZ1bmN0aW9uLCByZXR1cm4g YSB2YWx1ZSB3aGljaCBpcyBhIHBvaW50ZXIKLUBAIC0zNzY5LDYgKzM4NTgsOCBAQCB2YWx1ZV9z bGljZSAoc3RydWN0IHZhbHVlICphcnJheSwgaW50IGxvd2JvdW5kLCBpbnQgbGVuZ3RoKQorQEAg LTM3MjQsNiArMzgxMiw4IEBAIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQg bG93Ym91bmQsIGludCBsZW5ndGgpCiAgCQkJCQlUWVBFX1RBUkdFVF9UWVBFIChyYW5nZV90eXBl KSwKICAJCQkJCWxvd2JvdW5kLCAKICAJCQkJCWxvd2JvdW5kICsgbGVuZ3RoIC0gMSk7CiArICBU WVBFX0JZVEVfU1RSSURFIChzbGljZV9yYW5nZV90eXBlKSA9IFRZUEVfQllURV9TVFJJREUgKHJh bmdlX3R5cGUpOwogKwotICAgaWYgKFRZUEVfQ09ERSAoYXJyYXlfdHlwZSkgPT0gVFlQRV9DT0RF X0JJVFNUUklORykKKyAKICAgICAgewotICAgICAgIGludCBpOworICAgICAgIHN0cnVjdCB0eXBl ICplbGVtZW50X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKTsKIGRpZmYgLS1n aXQgYS9nZGIvdmFscHJpbnQuYyBiL2dkYi92YWxwcmludC5jCi1pbmRleCBmYzU5NDJkLi44MzMz ZWI0IDEwMDY0NAoraW5kZXggNDJkYWNjNS4uNjk3N2Y2MiAxMDA2NDQKIC0tLSBhL2dkYi92YWxw cmludC5jCiArKysgYi9nZGIvdmFscHJpbnQuYwogQEAgLTM3LDYgKzM3LDcgQEAKQEAgLTEzNjk1 LDE1ICs4NzM5LDE1IEBAIGluZGV4IGZjNTk0MmQuLjgzMzNlYjQgMTAwNjQ0CiAgCiAgI2luY2x1 ZGUgPGVycm5vLmg+CiAgCi1AQCAtMjUxLDcgKzI1Miw2IEBAIHNjYWxhcl90eXBlX3AgKHN0cnVj dCB0eXBlICp0eXBlKQorQEAgLTI4Nyw3ICsyODgsNiBAQCBzY2FsYXJfdHlwZV9wIChzdHJ1Y3Qg dHlwZSAqdHlwZSkKICAgICAgY2FzZSBUWVBFX0NPREVfU1RSVUNUOgogICAgICBjYXNlIFRZUEVf Q09ERV9VTklPTjoKICAgICAgY2FzZSBUWVBFX0NPREVfU0VUOgogLSAgICBjYXNlIFRZUEVfQ09E RV9TVFJJTkc6Ci0gICAgIGNhc2UgVFlQRV9DT0RFX0JJVFNUUklORzoKICAgICAgICByZXR1cm4g MDsKICAgICAgZGVmYXVsdDoKLUBAIC0xNTcwLDYgKzE1NzAsNyBAQCB2YWxfcHJpbnRfYXJyYXlf ZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBlLAorICAgICAgIHJldHVybiAxOworQEAgLTE2MDUs NiArMTYwNSw3IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUs CiAgewogICAgdW5zaWduZWQgaW50IHRoaW5nc19wcmludGVkID0gMDsKICAgIHVuc2lnbmVkIGxl bjsKQEAgLTEzNzExLDcgKzg3NTUsNyBAQCBpbmRleCBmYzU5NDJkLi44MzMzZWI0IDEwMDY0NAog ICAgc3RydWN0IHR5cGUgKmVsdHR5cGUsICppbmRleF90eXBlOwogICAgdW5zaWduZWQgZWx0bGVu OwogICAgLyogUG9zaXRpb24gb2YgdGhlIGFycmF5IGVsZW1lbnQgd2UgYXJlIGV4YW1pbmluZyB0 byBzZWUKLUBAIC0xNTc4LDkgKzE1NzksMzMgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChz dHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC0xNjEzLDkgKzE2MTQsMzMgQEAgdmFsX3ByaW50X2FycmF5 X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwKICAgIC8qIE51bWJlciBvZiByZXBldGl0aW9u cyB3ZSBoYXZlIGRldGVjdGVkIHNvIGZhci4gICovCiAgICB1bnNpZ25lZCBpbnQgcmVwczsKICAg IExPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kOwpAQCAtMTM3NDcsNyArODc5MSw3IEBAIGlu ZGV4IGZjNTk0MmQuLjgzMzNlYjQgMTAwNjQ0CiAgICBpbmRleF90eXBlID0gVFlQRV9JTkRFWF9U WVBFICh0eXBlKTsKICAKICAgIGlmIChnZXRfYXJyYXlfYm91bmRzICh0eXBlLCAmbG93X2JvdW5k LCAmaGlnaF9ib3VuZCkpCi1AQCAtMTY2Nyw2ICsxNjkyLDggQEAgdmFsX3ByaW50X2FycmF5X2Vs ZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC0xNzAyLDYgKzE3MjcsOCBAQCB2YWxfcHJp bnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBlLAogICAgICB7CiAgICAgICAgZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7CiAgICAgIH0KQEAgLTEzNzU3LDcgKzg4MDEs NyBAQCBpbmRleCBmYzU5NDJkLi44MzMzZWI0IDEwMDY0NAogIAogIC8qIFJlYWQgTEVOIGJ5dGVz IG9mIHRhcmdldCBtZW1vcnkgYXQgYWRkcmVzcyBNRU1BRERSLCBwbGFjaW5nIHRoZQogZGlmZiAt LWdpdCBhL2dkYi92YWx1ZS5jIGIvZ2RiL3ZhbHVlLmMKLWluZGV4IGE2YmI3MTguLjdiMDhkMWYg MTAwNjQ0CitpbmRleCBlYzRiMDkwLi45NmEzMDhmIDEwMDY0NAogLS0tIGEvZ2RiL3ZhbHVlLmMK ICsrKyBiL2dkYi92YWx1ZS5jCiBAQCAtNDIsNiArNDIsNyBAQApAQCAtMTM3NjgsNyArODgxMiw3 IEBAIGluZGV4IGE2YmI3MTguLjdiMDhkMWYgMTAwNjQ0CiAgCiAgLyogUHJvdG90eXBlcyBmb3Ig ZXhwb3J0ZWQgZnVuY3Rpb25zLiAgKi8KICAKLUBAIC0xNDM3LDEyICsxNDM4LDE1IEBAIHZvaWQK K0BAIC0xNDQwLDEyICsxNDQxLDE1IEBAIHZvaWQKICBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0 aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBvbmVudCwKICAJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFs dWUgKndob2xlKQogIHsKQEAgLTEzNzg0LDcgKzg4MjgsNyBAQCBpbmRleCBhNmJiNzE4Li43YjA4 ZDFmIDEwMDY0NAogICAgaWYgKHdob2xlLT5sdmFsID09IGx2YWxfY29tcHV0ZWQpCiAgICAgIHsK ICAgICAgICBjb25zdCBzdHJ1Y3QgbHZhbF9mdW5jcyAqZnVuY3MgPSB3aG9sZS0+bG9jYXRpb24u Y29tcHV0ZWQuZnVuY3M7Ci1AQCAtMTQ1MCw2ICsxNDU0LDEyIEBAIHNldF92YWx1ZV9jb21wb25l bnRfbG9jYXRpb24gKHN0cnVjdCB2YWx1ZSAqY29tcG9uZW50LAorQEAgLTE0NTMsNiArMTQ1Nywx MiBAQCBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBvbmVu dCwKICAgICAgICBpZiAoZnVuY3MtPmNvcHlfY2xvc3VyZSkKICAgICAgICAgIGNvbXBvbmVudC0+ bG9jYXRpb24uY29tcHV0ZWQuY2xvc3VyZSA9IGZ1bmNzLT5jb3B5X2Nsb3N1cmUgKHdob2xlKTsK ICAgICAgfQpAQCAtMTM3OTcsNyArODg0MSw3IEBAIGluZGV4IGE2YmI3MTguLjdiMDhkMWYgMTAw NjQ0CiAgfQogIAogIAwKLUBAIC0xNTgzLDYgKzE1OTMsMzEgQEAgc2hvd192YWx1ZXMgKGNoYXIg Km51bV9leHAsIGludCBmcm9tX3R0eSkKK0BAIC0xNTg2LDYgKzE1OTYsMzEgQEAgc2hvd192YWx1 ZXMgKGNoYXIgKm51bV9leHAsIGludCBmcm9tX3R0eSkKICAgICAgICBudW1fZXhwWzFdID0gJ1ww JzsKICAgICAgfQogIH0KQEAgLTEzODI5LDcgKzg4NzMsNyBAQCBpbmRleCBhNmJiNzE4Li43YjA4 ZDFmIDEwMDY0NAogIAwKICAvKiBJbnRlcm5hbCB2YXJpYWJsZXMuICBUaGVzZSBhcmUgdmFyaWFi bGVzIHdpdGhpbiB0aGUgZGVidWdnZXIKICAgICB0aGF0IGhvbGQgdmFsdWVzIGFzc2lnbmVkIGJ5 IGRlYnVnZ2VyIGNvbW1hbmRzLgotQEAgLTIxMTgsNiArMjE1MywzOCBAQCBjYWxsX2ludGVybmFs X2Z1bmN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC0yMTIxLDYgKzIxNTYsMzgg QEAgY2FsbF9pbnRlcm5hbF9mdW5jdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgICBy ZXR1cm4gKCppZm4tPmhhbmRsZXIpIChnZGJhcmNoLCBsYW5ndWFnZSwgaWZuLT5jb29raWUsIGFy Z2MsIGFyZ3YpOwogIH0KICAKQEAgLTEzODY4LDcgKzg5MTIsNyBAQCBpbmRleCBhNmJiNzE4Li43 YjA4ZDFmIDEwMDY0NAogIC8qIFRoZSAnZnVuY3Rpb24nIGNvbW1hbmQuICBUaGlzIGRvZXMgbm90 aGluZyAtLSBpdCBpcyBqdXN0IGEKICAgICBwbGFjZWhvbGRlciB0byBsZXQgImhlbHAgZnVuY3Rp b24gTkFNRSIgd29yay4gIFRoaXMgaXMgYWxzbyB1c2VkIGFzCiAgICAgdGhlIGltcGxlbWVudGF0 aW9uIG9mIHRoZSBzdWItY29tbWFuZCB0aGF0IGlzIGNyZWF0ZWQgd2hlbgotQEAgLTIxNjUsMTEg KzIyMzIsMTAgQEAgcHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0yMTY4LDExICsyMjM1LDEwIEBAIHByZXNlcnZlX29u ZV92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAg CQkgICAgaHRhYl90IGNvcGllZF90eXBlcykKICB7CiAgICBpZiAoVFlQRV9PQkpGSUxFICh2YWx1 ZS0+dHlwZSkgPT0gb2JqZmlsZSkKQEAgLTEzODgyLDcgKzg5MjYsNyBAQCBpbmRleCBhNmJiNzE4 Li43YjA4ZDFmIDEwMDY0NAogIAkJCQkJCSBjb3BpZWRfdHlwZXMpOwogIH0KICAKLUBAIC0yMTg0 LDcgKzIyNTAsNyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZh ciAqdmFyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0yMTg3LDcgKzIyNTMsNyBAQCBw cmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyLCBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwKICAgICAgY2FzZSBJTlRFUk5BTFZBUl9JTlRFR0VSOgogICAgICAg IGlmICh2YXItPnUuaW50ZWdlci50eXBlICYmIFRZUEVfT0JKRklMRSAodmFyLT51LmludGVnZXIu dHlwZSkgPT0gb2JqZmlsZSkKICAJdmFyLT51LmludGVnZXIudHlwZQpAQCAtMTM4OTEsNyArODkz NSw3IEBAIGluZGV4IGE2YmI3MTguLjdiMDhkMWYgMTAwNjQ0CiAgICAgICAgYnJlYWs7CiAgCiAg ICAgIGNhc2UgSU5URVJOQUxWQVJfVkFMVUU6Ci1AQCAtMzI3NiwxMCArMzM0MiwyNyBAQCByZWFk anVzdF9pbmRpcmVjdF92YWx1ZV90eXBlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3QgdHlw ZSAqZW5jX3R5cGUsCitAQCAtMzI4NSwxMCArMzM1MSwyNyBAQCByZWFkanVzdF9pbmRpcmVjdF92 YWx1ZV90eXBlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3QgdHlwZSAqZW5jX3R5cGUsCiAg c3RydWN0IHZhbHVlICoKICBjb2VyY2VfcmVmIChzdHJ1Y3QgdmFsdWUgKmFyZykKICB7CkBAIC0x MzkyMCw3ICs4OTY0LDcgQEAgaW5kZXggYTZiYjcxOC4uN2IwOGQxZiAxMDA2NDQKICAgIHJldHZh bCA9IGNvZXJjZV9yZWZfaWZfY29tcHV0ZWQgKGFyZyk7CiAgICBpZiAocmV0dmFsKQogICAgICBy ZXR1cm4gcmV0dmFsOwotQEAgLTMzODYsNCArMzQ2OSwxMCBAQCBWQVJJQUJMRSBpcyBhbHJlYWR5 IGluaXRpYWxpemVkLiIpKTsKK0BAIC0zNDAwLDQgKzM0ODMsMTAgQEAgVkFSSUFCTEUgaXMgYWxy ZWFkeSBpbml0aWFsaXplZC4iKSk7CiAgICBhZGRfcHJlZml4X2NtZCAoImZ1bmN0aW9uIiwgbm9f Y2xhc3MsIGZ1bmN0aW9uX2NvbW1hbmQsIF8oIlwKICBQbGFjZWhvbGRlciBjb21tYW5kIGZvciBz aG93aW5nIGhlbHAgb24gY29udmVuaWVuY2UgZnVuY3Rpb25zLiIpLAogIAkJICAmZnVuY3Rpb25s aXN0LCAiZnVuY3Rpb24gIiwgMCwgJmNtZGxpc3QpOwpAQCAtMTM5MzIsNyArODk3Niw3IEBAIGlu ZGV4IGE2YmI3MTguLjdiMDhkMWYgMTAwNjQ0CiArI2VuZGlmCiAgfQogZGlmZiAtLWdpdCBhL2dk Yi92YWx1ZS5oIGIvZ2RiL3ZhbHVlLmgKLWluZGV4IGQ4YjE1N2YuLmY0OWU4MjcgMTAwNjQ0Citp bmRleCA2N2YxZDA0Li4yZDJiODMwIDEwMDY0NAogLS0tIGEvZ2RiL3ZhbHVlLmgKICsrKyBiL2dk Yi92YWx1ZS5oCiBAQCAtNTMzLDYgKzUzMywxMCBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1 ZV9mcm9tX2RlY2Zsb2F0IChzdHJ1Y3QgdHlwZSAqdHlwZSwKQEAgLTEzOTQ2LDM0ICs4OTkwLDMg QEAgaW5kZXggZDhiMTU3Zi4uZjQ5ZTgyNyAxMDA2NDQKICBleHRlcm4gc3RydWN0IHZhbHVlICp2 YWx1ZV9hdCAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyKTsKICBleHRlcm4gc3Ry dWN0IHZhbHVlICp2YWx1ZV9hdF9sYXp5IChzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSIGFk ZHIpOwogIAotZGlmZiAtLWdpdCBhL2dkYi93aW5kb3dzLW5hdC5jIGIvZ2RiL3dpbmRvd3MtbmF0 LmMKLWluZGV4IGYxNjU4OGEuLmFmZWY2MTUgMTAwNjQ0Ci0tLS0gYS9nZGIvd2luZG93cy1uYXQu YwotKysrIGIvZ2RiL3dpbmRvd3MtbmF0LmMKLUBAIC03NTIsNyArNzUyLDcgQEAgd2luZG93c19t YWtlX3NvIChjb25zdCBjaGFyICpuYW1lLCBMUFZPSUQgbG9hZF9hZGRyKQotICAgICAgIGFzZWN0 aW9uICp0ZXh0ID0gTlVMTDsKLSAgICAgICBDT1JFX0FERFIgdGV4dF92bWE7Ci0gCi0tICAgICAg YWJmZCA9IGJmZF9vcGVuciAoc28tPnNvX25hbWUsICJwZWktaTM4NiIpOwotKyAgICAgIGFiZmQg PSBnZGJfYmZkX29wZW5yIChzby0+c29fbmFtZSwgInBlaS1pMzg2Iik7Ci0gCi0gICAgICAgaWYg KCFhYmZkKQotIAlyZXR1cm4gc287Ci1AQCAtNzYyLDcgKzc2Miw3IEBAIHdpbmRvd3NfbWFrZV9z byAoY29uc3QgY2hhciAqbmFtZSwgTFBWT0lEIGxvYWRfYWRkcikKLSAKLSAgICAgICBpZiAoIXRl eHQpCi0gCXsKLS0JICBiZmRfY2xvc2UgKGFiZmQpOwotKwkgIGdkYl9iZmRfdW5yZWYgKGFiZmQp OwotIAkgIHJldHVybiBzbzsKLSAJfQotIAotQEAgLTc3Myw3ICs3NzMsNyBAQCB3aW5kb3dzX21h a2Vfc28gKGNvbnN0IGNoYXIgKm5hbWUsIExQVk9JRCBsb2FkX2FkZHIpCi0gCQkJCQkJICAgbG9h ZF9hZGRyICsgMHgxMDAwKTsKLSAgICAgICBjeWd3aW5fbG9hZF9lbmQgPSBjeWd3aW5fbG9hZF9z dGFydCArIGJmZF9zZWN0aW9uX3NpemUgKGFiZmQsIHRleHQpOwotIAotLSAgICAgIGJmZF9jbG9z ZSAoYWJmZCk7Ci0rICAgICAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7Ci0gICAgIH0KLSAjZW5kaWYK LSAKCmRpZmYgLS1naXQgYS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBhdGNoIGIvZ2Ri LWF0dGFjaC1mYWlsLXJlYXNvbnMtNW9mNS5wYXRjaAppbmRleCA3MTcxMWYwLi43NzM0NTdlIDEw MDY0NAotLS0gYS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBhdGNoCisrKyBiL2dkYi1h dHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0Y2gKQEAgLTM3LDEzICszNywxMyBAQCBnZGIvZ2Ri c2VydmVyLwogCShsaW51eF9jcmVhdGVfaW5mZXJpb3IsIGxpbnV4X3RyYWNlZm9ya19jaGlsZCk6 IENhbGwgaXQgaW5zdGVhZCBvZgogCWRpcmVjdCBwdHJhY2UuCiAKLUluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2UuYworSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2UuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu MC4yMDEyMDkyNi5vcmlnL2dkYi9jb21tb24vbGludXgtcHRyYWNlLmMJMjAxMi0wOS0xNyAyMDoy ODoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2NvbW1vbi9s aW51eC1wdHJhY2UuYwkyMDEyLTA5LTI2IDE5OjEzOjUzLjUwODc4MDIzOSArMDIwMAotQEAgLTI4 LDYgKzI4LDEwIEBACi0gI2luY2x1ZGUgImJ1ZmZlci5oIgorLS0tIGdkYi03LjUuNTAuMjAxMzAx MTgub3JpZy9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5jCTIwMTMtMDEtMTggMjM6MTg6NDcuMzEz MzYwMDY1ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvY29tbW9uL2xpbnV4LXB0 cmFjZS5jCTIwMTMtMDEtMTggMjM6MTk6MjcuMjY5NDE3MDUxICswMTAwCitAQCAtMjksNiArMjks MTAgQEAKICAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgorICNpbmNsdWRlICJnZGJfd2FpdC5oIgog IAogKyNpZmRlZiBIQVZFX1NFTElOVVhfU0VMSU5VWF9ICiArIyBpbmNsdWRlIDxzZWxpbnV4L3Nl bGludXguaD4KQEAgLTUyLDcgKzUyLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv Y29tbW9uL2xpbnV4LXB0cmFjZS5jCiAgLyogRmluZCBhbGwgcG9zc2libGUgcmVhc29ucyB3ZSBj b3VsZCBmYWlsIHRvIGF0dGFjaCBQSUQgYW5kIGFwcGVuZCB0aGVzZQogICAgIG5ld2xpbmUgdGVy bWluYXRlZCByZWFzb24gc3RyaW5ncyB0byBpbml0aWFsaXplZCBCVUZGRVIuICAnXDAnIHRlcm1p bmF0aW9uCiAgICAgb2YgQlVGRkVSIG11c3QgYmUgZG9uZSBieSB0aGUgY2FsbGVyLiAgKi8KLUBA IC00Nyw2ICs1MSw4IEBAIGxpbnV4X3B0cmFjZV9hdHRhY2hfd2FybmluZ3MgKHBpZF90IHBpZCwK K0BAIC00OCw2ICs1Miw4IEBAIGxpbnV4X3B0cmFjZV9hdHRhY2hfd2FybmluZ3MgKHBpZF90IHBp ZCwKICAgICAgYnVmZmVyX3htbF9wcmludGYgKGJ1ZmZlciwgXygid2FybmluZzogcHJvY2VzcyAl ZCBpcyBhIHpvbWJpZSAiCiAgCQkJCSAiLSB0aGUgcHJvY2VzcyBoYXMgYWxyZWFkeSB0ZXJtaW5h dGVkXG4iKSwKICAJCSAgICAgICAoaW50KSBwaWQpOwpAQCAtNjEsNyArNjEsNyBAQCBJbmRleDog Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jb21tb24vbGludXgtcHRyYWNlLmMKICB9CiAgCiAgI2lm IGRlZmluZWQgX19pMzg2X18gfHwgZGVmaW5lZCBfX3g4Nl82NF9fCi1AQCAtMjQyLDMgKzI0OCwx OSBAQCBsaW51eF9wdHJhY2VfaW5pdF93YXJuaW5ncyAodm9pZCkKK0BAIC0yNDMsMyArMjQ5LDE5 IEBAIGxpbnV4X3B0cmFjZV9pbml0X3dhcm5pbmdzICh2b2lkKQogIAogICAgbGludXhfcHRyYWNl X3Rlc3RfcmV0X3RvX254ICgpOwogIH0KQEAgLTgxLDEwICs4MSwxMCBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9jb21tb24vbGludXgtcHRyYWNlLmMKICsJCQkgIihnZGIpIHNoZWxs IHN1ZG8gc2V0c2Vib29sIGRlbnlfcHRyYWNlPTAiKSk7CiArI2VuZGlmIC8qIEhBVkVfTElCU0VM SU5VWCAqLwogK30KLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2NvbW1vbi9saW51eC1w dHJhY2UuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2NvbW1vbi9saW51eC1wdHJh Y2UuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9jb21tb24v bGludXgtcHRyYWNlLmgJMjAxMi0wNy0wNyAxNDoxMzo1Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2UuaAkyMDEyLTA5LTI2IDE5 OjEzOjI4LjM1ODc2NTQwNiArMDIwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIv Y29tbW9uL2xpbnV4LXB0cmFjZS5oCTIwMTMtMDEtMTggMjM6MTg6NDcuMzEzMzYwMDY1ICswMTAw CisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5oCTIwMTMt MDEtMTggMjM6MTk6MDQuOTkwMzg1MzYwICswMTAwCiBAQCAtNjksNSArNjksNiBAQCBzdHJ1Y3Qg YnVmZmVyOwogIAogIGV4dGVybiB2b2lkIGxpbnV4X3B0cmFjZV9hdHRhY2hfd2FybmluZ3MgKHBp ZF90IHBpZCwgc3RydWN0IGJ1ZmZlciAqYnVmZmVyKTsKQEAgLTkyLDExICs5MiwxMSBAQCBJbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jb21tb24vbGludXgtcHRyYWNlLmgKICtleHRlcm4g dm9pZCBsaW51eF9wdHJhY2VfY3JlYXRlX3dhcm5pbmdzIChzdHJ1Y3QgYnVmZmVyICpidWZmZXIp OwogIAogICNlbmRpZiAvKiBDT01NT05fTElOVVhfUFRSQUNFX0ggKi8KLUluZGV4OiBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL2NvbmZpZ3VyZS5hYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmln L2dkYi9jb25maWd1cmUuYWMJMjAxMi0wOS0yNiAxOToxMzoyNC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA5LTI2IDE5OjEzOjI4 LjQxMDc2NTQ1MSArMDIwMAotQEAgLTIwMDgsNiArMjAwOCwxMCBAQCB0aGVuCistLS0gZ2RiLTcu NS41MC4yMDEzMDExOC5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMy0wMS0xOCAyMzoxODo0Ny4z MTUzNjAwNjkgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9jb25maWd1cmUuYWMJ MjAxMy0wMS0xOCAyMzoxOTowNC45OTEzODUzNjIgKzAxMDAKK0BAIC0yMDY4LDYgKzIwNjgsMTAg QEAgdGhlbgogIAkgICAgICBbRGVmaW5lIGlmIHlvdSBzdXBwb3J0IHRoZSBwZXJzb25hbGl0eSBz eXNjYWxsLl0pCiAgZmkKICAKQEAgLTEwNywxMSArMTA3LDExIEBAIEluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL2NvbmZpZ3VyZS5hYwogIGRubCBIYW5kbGUgb3B0aW9uYWwgZmVhdHVyZXMg dGhhdCBjYW4gYmUgZW5hYmxlZC4KICAKICAjIFN1cHBvcnQgZm9yIC0td2l0aC1zeXNyb290IGlz IGEgY29weSBvZiBHREJfQUNfV0lUSF9ESVIsCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv Z2Ric2VydmVyL2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDky Ni5vcmlnL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjCTIwMTItMDQtMTkgMjE6MzQ6NTEuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9nZGJzZXJ2ZXIvY29uZmln dXJlLmFjCTIwMTItMDktMjYgMTk6MTM6MjguNDQ2NzY1NDI4ICswMjAwCi1AQCAtNDM4LDYgKzQz OCwxMCBAQCBpZiAkd2FudF9pcGEgOyB0aGVuCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmln L2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjCTIwMTMtMDEtMTggMjM6MTg6NDcuMzE1MzYwMDY5 ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5h YwkyMDEzLTAxLTE4IDIzOjE5OjA0Ljk5MTM4NTM2MiArMDEwMAorQEAgLTQ1MSw2ICs0NTEsMTAg QEAgaWYgJHdhbnRfaXBhIDsgdGhlbgogICAgIGZpCiAgZmkKICAKQEAgLTEyMiwxMCArMTIyLDEw IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuYWMK ICBBQ19TVUJTVChHREJTRVJWRVJfREVQRklMRVMpCiAgQUNfU1VCU1QoR0RCU0VSVkVSX0xJQlMp CiAgQUNfU1VCU1QoVVNFX1RIUkVBRF9EQikKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L2dkYnNlcnZlci9saW51eC1sb3cuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2dk YnNlcnZlci9saW51eC1sb3cuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5v cmlnL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMJMjAxMi0wNy0wNyAxNDoxMzo1Ny4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cu YwkyMDEyLTA5LTI2IDE5OjEzOjI4LjQ1Mzc2NTQ3MSArMDIwMAorLS0tIGdkYi03LjUuNTAuMjAx MzAxMTgub3JpZy9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCTIwMTMtMDEtMTggMjM6MTg6NDcu MzE3MzYwMDczICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZ2Ric2VydmVyL2xp bnV4LWxvdy5jCTIwMTMtMDEtMTggMjM6MTk6MDQuOTkzMzg1MzY2ICswMTAwCiBAQCAtNjAxLDYg KzYwMSwyOCBAQCBhZGRfbHdwIChwdGlkX3QgcHRpZCkKICAgIHJldHVybiBsd3A7CiAgfQpAQCAt MTY0LDcgKzE2NCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dkYnNlcnZlci9s aW51eC1sb3cuYwogIAogICNpZm5kZWYgX19BTkRST0lEX18gLyogQmlvbmljIGRvZXNuJ3QgdXNl IFNJR1JUTUlOIHRoZSB3YXkgZ2xpYmMgZG9lcy4gICovCiAgICAgICAgc2lnbmFsIChfX1NJR1JU TUlOICsgMSwgU0lHX0RGTCk7Ci1AQCAtNDU3Miw3ICs0NTk0LDcgQEAgbGludXhfdHJhY2Vmb3Jr X2dyYW5kY2hpbGQgKHZvaWQgKmFyZykKK0BAIC00NTc0LDcgKzQ1OTYsNyBAQCBsaW51eF90cmFj ZWZvcmtfZ3JhbmRjaGlsZCAodm9pZCAqYXJnKQogIHN0YXRpYyBpbnQKICBsaW51eF90cmFjZWZv cmtfY2hpbGQgKHZvaWQgKmFyZykKICB7CkBAIC0xNzMsMTEgKzE3MywxMSBAQCBJbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKICAgIGtpbGwgKGdldHBp ZCAoKSwgU0lHU1RPUCk7CiAgCiAgI2lmICEoZGVmaW5lZChfX1VDTElCQ19fKSAmJiBkZWZpbmVk KEhBU19OT01NVSkpCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9pbmYtcHRyYWNlLmMK K0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9pbmYtcHRyYWNlLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvaW5mLXB0cmFjZS5jCTIwMTItMDUtMjQg MTg6NTE6MzQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9pbmYt cHRyYWNlLmMJMjAxMi0wOS0yNiAxOToxMzoyOC40NTg3NjU0NjEgKzAyMDAKLUBAIC0xMDUsNyAr MTA1LDE1IEBAIHN0YXRpYyB2b2lkCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9p bmYtcHRyYWNlLmMJMjAxMy0wMS0xOCAyMzoxODo0Ny4zMTgzNjAwNzYgKzAxMDAKKysrKyBnZGIt Ny41LjUwLjIwMTMwMTE4L2dkYi9pbmYtcHRyYWNlLmMJMjAxMy0wMS0xOCAyMzoxOTowNC45OTMz ODUzNjYgKzAxMDAKK0BAIC0xMDQsNyArMTA0LDE1IEBAIHN0YXRpYyB2b2lkCiAgaW5mX3B0cmFj ZV9tZSAodm9pZCkKICB7CiAgICAvKiAiVHJhY2UgbWUsIERyLiBNZW1vcnkhIiAgKi8KQEAgLTE5 MywxMSArMTkzLDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2luZi1wdHJhY2Uu YwogIH0KICAKICAvKiBTdGFydCBhIG5ldyBpbmZlcmlvciBVbml4IGNoaWxkIHByb2Nlc3MuICBF WEVDX0ZJTEUgaXMgdGhlIGZpbGUgdG8KLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2xp bnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbGludXgtbmF0LmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvbGludXgtbmF0LmMJMjAx Mi0wOS0yNiAxOToxMzoyMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL2xpbnV4LW5hdC5jCTIwMTItMDktMjYgMTk6MTM6MjguNDY4NzY1NDY5ICswMjAwCi1AQCAt MTU3NCw2ICsxNTc0LDcgQEAgbGludXhfbmF0X2NyZWF0ZV9pbmZlcmlvciAoc3RydWN0IHRhcmdl dAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMy0wMS0x OCAyMzoxODo0Ny4zMjAzNjAwODMgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9s aW51eC1uYXQuYwkyMDEzLTAxLTE4IDIzOjE5OjA0Ljk5NDM4NTM2OSArMDEwMAorQEAgLTE1Nzgs NiArMTU3OCw3IEBAIGxpbnV4X25hdF9jcmVhdGVfaW5mZXJpb3IgKHN0cnVjdCB0YXJnZXQKICAj aWZkZWYgSEFWRV9QRVJTT05BTElUWQogICAgaW50IHBlcnNvbmFsaXR5X29yaWcgPSAwLCBwZXJz b25hbGl0eV9zZXQgPSAwOwogICNlbmRpZiAvKiBIQVZFX1BFUlNPTkFMSVRZICovCkBAIC0yMDUs NyArMjA1LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbGludXgtbmF0LmMKICAK ICAgIC8qIFRoZSBmb3JrX2NoaWxkIG1lY2hhbmlzbSBpcyBzeW5jaHJvbm91cyBhbmQgY2FsbHMg dGFyZ2V0X3dhaXQsIHNvCiAgICAgICB3ZSBoYXZlIHRvIG1hc2sgdGhlIGFzeW5jIG1vZGUuICAq LwotQEAgLTE1OTgsNyArMTU5OSwxMCBAQCBsaW51eF9uYXRfY3JlYXRlX2luZmVyaW9yIChzdHJ1 Y3QgdGFyZ2V0CitAQCAtMTYwMiw3ICsxNjAzLDEwIEBAIGxpbnV4X25hdF9jcmVhdGVfaW5mZXJp b3IgKHN0cnVjdCB0YXJnZXQKICAgIC8qIE1ha2Ugc3VyZSB3ZSByZXBvcnQgYWxsIHNpZ25hbHMg ZHVyaW5nIHN0YXJ0dXAuICAqLwogICAgbGludXhfbmF0X3Bhc3Nfc2lnbmFscyAoMCwgTlVMTCk7 CiAgCkBAIC0yMTcsNyArMjE3LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbGlu dXgtbmF0LmMKICAKICAjaWZkZWYgSEFWRV9QRVJTT05BTElUWQogICAgaWYgKHBlcnNvbmFsaXR5 X3NldCkKLUBAIC0xNjEwLDYgKzE2MTQsMjQgQEAgbGludXhfbmF0X2NyZWF0ZV9pbmZlcmlvciAo c3RydWN0IHRhcmdldAorQEAgLTE2MTQsNiArMTYxOCwyNCBAQCBsaW51eF9uYXRfY3JlYXRlX2lu ZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0CiAgCQkgc2FmZV9zdHJlcnJvciAoZXJybm8pKTsKICAgICAg fQogICNlbmRpZiAvKiBIQVZFX1BFUlNPTkFMSVRZICovCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTMz MTc2LWZvcnRyYW4tb21wLXN0ZXAucGF0Y2ggYi9nZGItYno1MzMxNzYtZm9ydHJhbi1vbXAtc3Rl cC5wYXRjaAppbmRleCAyY2RkYWMzLi4wNzI1YWQyIDEwMDY0NAotLS0gYS9nZGItYno1MzMxNzYt Zm9ydHJhbi1vbXAtc3RlcC5wYXRjaAorKysgYi9nZGItYno1MzMxNzYtZm9ydHJhbi1vbXAtc3Rl cC5wYXRjaApAQCAtMjEsMjQgKzIxLDI4IEBAIGRlYnVnZ2luZyBwcm9ibGVtIG9mIEdPTVAgb3V0 c2lkZSBvZiB0aGUgc2NvcGUgb2YgdGhpcyBCdWcuCiAKIAogCi1JbmRleDogZ2RiLTcuMi41MC4y MDEwMTIzMS9nZGIvaW5mcnVuLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9pbmZy dW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvaW5mcnVu LmMJMjAxMS0wMS0wMSAwMTowMjo0NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIw MTAxMjMxL2dkYi9pbmZydW4uYwkyMDExLTAxLTAxIDAxOjEwOjIyLjAwMDAwMDAwMCArMDEwMAot QEAgLTQ1ODUsNiArNDU4NSwxMiBAQCBpbmZydW46IG5vdCBzd2l0Y2hpbmcgYmFjayB0byBzdGVw cGVkIHRoCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9pbmZydW4uYwkyMDEzLTAx LTE5IDIzOjM4OjIyLjMyOTM3MTQxMCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L2luZnJ1bi5jCTIwMTMtMDEtMTkgMjM6Mzk6MDMuMzIyNDI5MDQxICswMTAwCitAQCAtNDkxOCw2 ICs0OTE4LDE2IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgogIAogICAgICAgIGlmIChlY3Mt PmV2ZW50X3RocmVhZC0+Y29udHJvbC5zdGVwX292ZXJfY2FsbHMgPT0gU1RFUF9PVkVSX0FMTCkK ICAJewogKwkgIHN0cnVjdCBzeW1ib2wgKnN0b3BfZm4gPSBmaW5kX3BjX2Z1bmN0aW9uIChzdG9w X3BjKTsKKysJICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKnN0b3BmID0gbG9va3VwX21pbmltYWxf c3ltYm9sX2J5X3BjIChzdG9wX3BjKTsKICsKLSsJICBpZiAoc3RvcF9mbiA9PSBOVUxMCi0rCSAg ICAgIHx8IHN0cnN0ciAoU1lNQk9MX0xJTktBR0VfTkFNRSAoc3RvcF9mbiksICIub21wX2ZuLiIp ID09IE5VTEwpCisrCSAgaWYgKChzdG9wX2ZuID09IE5VTEwKKysJICAgICAgIHx8IHN0cnN0ciAo U1lNQk9MX0xJTktBR0VfTkFNRSAoc3RvcF9mbiksICIub21wX2ZuLiIpID09IE5VTEwpCisrCSAg ICAgIC8qIGdjYy00LjcuMi05LmZjMTkueDg2XzY0IHVzZXMgYSBuZXcgZm9ybWF0LiAgKi8KKysJ ICAgICAgJiYgKHN0b3BmID09IE5VTEwKKysJCSAgfHwgc3Ryc3RyIChTWU1CT0xfTElOS0FHRV9O QU1FIChzdG9wZiksICIuX29tcF9mbi4iKSA9PSBOVUxMKSkKICt7CS8qICIub21wX2ZuLiIgKi8K ICsKICAJICAvKiBXZSdyZSBkb2luZyBhICJuZXh0Ii4KICAKICAJICAgICBOb3JtYWwgKGZvcndh cmQpIGV4ZWN1dGlvbjogc2V0IGEgYnJlYWtwb2ludCBhdCB0aGUKLUBAIC00NjEyLDYgKzQ2MTgs NyBAQCBpbmZydW46IG5vdCBzd2l0Y2hpbmcgYmFjayB0byBzdGVwcGVkIHRoCitAQCAtNDk1Myw2 ICs0OTYzLDcgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CiAgCiAgCSAga2VlcF9nb2luZyAo ZWNzKTsKICAJICByZXR1cm47CkBAIC00NiwxMCArNTAsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAu MjAxMDEyMzEvZ2RiL2luZnJ1bi5jCiAgCX0KICAKICAgICAgICAvKiBJZiB3ZSBhcmUgaW4gYSBm dW5jdGlvbiBjYWxsIHRyYW1wb2xpbmUgKGEgc3R1YiBiZXR3ZWVuIHRoZQotSW5kZXg6IGdkYi03 LjIuNTAuMjAxMDEyMzEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAKK0lu ZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0 ZXAuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAw MDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL29tcC1zdGVwLmV4cAkyMDExLTAxLTAxIDAxOjA5OjU4LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3Rl cC5leHAJMjAxMy0wMS0xOSAyMzozODoyMy4yMTMzNzI2MjIgKzAxMDAKIEBAIC0wLDAgKzEsMzEg QEAKICsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpA QCAtODIsMTAgKzg2LDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCiArCiArZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgInN1Y2Nlc3MiXQogK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJzdWNj ZXNzIiAiLipzdWNjZXNzLioiCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmY5MAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5mOTAKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4y LjUwLjIwMTAxMjMxL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZjkwCTIwMTEt MDEtMDEgMDE6MDk6NTguMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmY5MAkyMDEzLTAxLTE5IDIzOjM4OjIz LjIxMzM3MjYyMiArMDEwMAogQEAgLTAsMCArMSwzMiBAQAogKyEgQ29weXJpZ2h0IDIwMDkgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjIzNzQ5 LWdjb3JlLXJlbHJvLnBhdGNoIGIvZ2RiLWJ6NjIzNzQ5LWdjb3JlLXJlbHJvLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDE1YTdhLi4wMDAwMDAwCi0tLSBhL2dkYi1iejYy Mzc0OS1nY29yZS1yZWxyby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi1n ZGI6Ci1odHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTYyMzc0OQot a2VybmVsOgotaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02MzY5 MzcKLQotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDkvbXNnMDAz OTUuaHRtbAotU3ViamVjdDogUmU6IFtwYXRjaF0gRml4IGdjb3JlIHdyaXRlciBmb3IgLVdsLC16 LHJlbHJvIChQUiBjb3JlZmlsZXMvMTE4MDQpCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDEwLTA5LTIy ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlGaXggZ2Nv cmUgd3JpdGVyIGZvciAtV2wsLXoscmVscm8uCi0JKiBnZGIuYmFzZS9nY29yZS1yZWxyby5leHA6 IE5ldyBmaWxlLgotCSogZ2RiLmJhc2UvZ2NvcmUtcmVscm8tbWFpbi5jOiBOZXcgZmlsZS4KLQkq IGdkYi5iYXNlL2djb3JlLXJlbHJvLWxpYi5jOiBOZXcgZmlsZS4KLQotLS0tIC4vZ2RiL2djb3Jl LmMJMjAxMC0wOS0yMyAyMDoxNDo1Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyAuL2dkYi9nY29yZS5j CTIwMTAtMDktMjMgMjA6Mzc6NTYuMDAwMDAwMDAwICswMjAwCi1AQCAtNDAxLDYgKzQwMSw3IEBA IGdjb3JlX2NyZWF0ZV9jYWxsYmFjayAoQ09SRV9BRERSIHZhZGRyLCAKLSAKLSAgIGlmICh3cml0 ZSA9PSAwICYmICFzb2xpYl9rZWVwX2RhdGFfaW5fY29yZSAodmFkZHIsIHNpemUpKQotICAgICB7 Ci0rI2lmIDAgLyogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02 MzY5MzcgICovCi0gICAgICAgLyogU2VlIGlmIHRoaXMgcmVnaW9uIG9mIG1lbW9yeSBsaWVzIGlu c2lkZSBhIGtub3duIGZpbGUgb24gZGlzay4KLSAJIElmIHNvLCB3ZSBjYW4gYXZvaWQgY29weWlu ZyBpdHMgY29udGVudHMgYnkgY2xlYXJpbmcgU0VDX0xPQUQuICAqLwotICAgICAgIHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlOwotQEAgLTQzMyw2ICs0MzQsNyBAQCBnY29yZV9jcmVhdGVfY2FsbGJh Y2sgKENPUkVfQUREUiB2YWRkciwgCi0gCX0KLSAKLSAgICAga2VlcDoKLSsjZW5kaWYKLSAgICAg ICBmbGFncyB8PSBTRUNfUkVBRE9OTFk7Ci0gICAgIH0KLSAKLS0tLSAvZGV2L251bGwKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2NvcmUtcmVscm8tbGliLmMKLUBAIC0wLDAgKzEsMjEg QEAKLSsvKiBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0r ICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uICAqLwotKwotK3ZvaWQKLStsaWIgKHZvaWQpCi0rewotK30KLS0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2NvcmUtcmVscm8tbWFpbi5j Ci1AQCAtMCwwICsxLDI1IEBACi0rLyogQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsK LSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLStleHRlcm4gdm9pZCBsaWIg KHZvaWQpOwotKwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAgbGliICgpOwotKyAgcmV0dXJu IDA7Ci0rfQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29y ZS1yZWxyby5leHAKLUBAIC0wLDAgKzEsODAgQEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsj Ci0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K LSsKLStpZiB7W3NraXBfc2hsaWJfdGVzdHNdfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK3Nl dCB0ZXN0ZmlsZSAiZ2NvcmUtcmVscm8iCi0rc2V0IHNyY21haW5maWxlICR7dGVzdGZpbGV9LW1h aW4uYwotK3NldCBzcmNsaWJmaWxlICR7dGVzdGZpbGV9LWxpYi5jCi0rc2V0IGxpYmZpbGUgJHtv YmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1saWIuc28KLStzZXQgb2JqZmlsZSAke29iamRp cn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LW1haW4ubwotK3NldCBleGVjdXRhYmxlICR7dGVzdGZp bGV9LW1haW4KLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0K LStzZXQgZ2NvcmVmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfS5nY29yZQot KwotK2lmIHsgW2dkYl9jb21waWxlX3NobGliICR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNsaWJm aWxlfSAke2xpYmZpbGV9IHtkZWJ1Z31dICE9ICIiCi0rICAgICB8fCBbZ2RiX2NvbXBpbGUgJHtz cmNkaXJ9LyR7c3ViZGlyfS8ke3NyY21haW5maWxlfSAke29iamZpbGV9IG9iamVjdCB7ZGVidWd9 XSAhPSAiIiB9IHsKLSsgICAgIHVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAotKyAgICAgcmV0dXJu IC0xCi0rfQotK3NldCBvcHRzIFtsaXN0IGRlYnVnIHNobGliPSR7bGliZmlsZX0gYWRkaXRpb25h bF9mbGFncz0tV2wsLXoscmVscm9dCi0raWYgeyBbZ2RiX2NvbXBpbGUgJHtvYmpmaWxlfSAke2Jp bmZpbGV9IGV4ZWN1dGFibGUgJG9wdHNdICE9ICIiIH0gewotKyAgICAgdW5zdXBwb3J0ZWQgIi1X bCwteixyZWxybyBjb21waWxhdGlvbiBmYWlsZWQiCi0rICAgICByZXR1cm4gLTEKLSt9Ci0rCi0r Y2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQotK2dkYl9sb2FkX3NobGlicyAkbGliZmlsZQotKwot KyMgRG9lcyB0aGlzIGdkYiBzdXBwb3J0IGdjb3JlPwotK3NldCB0ZXN0ICJoZWxwIGdjb3JlIgot K2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJVbmRlZmluZWQgY29t bWFuZDogLmdjb3JlLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwkjIGdjb3JlIGNvbW1hbmQgbm90 IHN1cHBvcnRlZCAtLSBub3RoaW5nIHRvIHRlc3QgaGVyZS4KLSsJdW5zdXBwb3J0ZWQgImdkYiBk b2VzIG5vdCBzdXBwb3J0IGdjb3JlIG9uIHRoaXMgdGFyZ2V0IgotKwlyZXR1cm4gLTE7Ci0rICAg IH0KLSsgICAgLXJlICJTYXZlIGEgY29yZSBmaWxlIC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJ cGFzcyAkdGVzdAotKyAgICB9Ci0rfQotKwotK2lmIHsgIVtydW50byBsaWJdIH0gdGhlbiB7Ci0r ICAgIHJldHVybiAtMQotK30KLSsKLStzZXQgZXNjYXBlZGZpbGVuYW1lIFtzdHJpbmdfdG9fcmVn ZXhwICR7Z2NvcmVmaWxlfV0KLSsKLStzZXQgdGVzdCAic2F2ZSBhIGNvcmVmaWxlIgotK2dkYl90 ZXN0X211bHRpcGxlICJnY29yZSAke2djb3JlZmlsZX0iICR0ZXN0IHsKLSsgICAgLXJlICJTYXZl ZCBjb3JlZmlsZSAke2VzY2FwZWRmaWxlbmFtZX1cclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNz ICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJlICJDYW4ndCBjcmVhdGUgYSBjb3JlZmlsZVxyXG4kZ2Ri X3Byb21wdCAkIiB7Ci0rCXVuc3VwcG9ydGVkICR0ZXN0Ci0rCXJldHVybiAtMQotKyAgICB9Ci0r fQotKwotKyMgTm93IHJlc3RhcnQgZ2RiIGFuZCBsb2FkIHRoZSBjb3JlZmlsZS4KLSsKLStjbGVh bl9yZXN0YXJ0ICRleGVjdXRhYmxlCi0rZ2RiX2xvYWRfc2hsaWJzICRsaWJmaWxlCi0rCi0rZ2Ri X3Rlc3QgImNvcmUgJHtnY29yZWZpbGV9IiAiQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qIiAicmUt bG9hZCBnZW5lcmF0ZWQgY29yZWZpbGUiCi0rCi0rZ2RiX3Rlc3QgImZyYW1lIiAiIzAgXFteXHJc blxdKiBsaWIgLioiICJsaWJyYXJ5IGdvdCBsb2FkZWQiCgpkaWZmIC0tZ2l0IGEvZ2RiLWNoZWNr LXR5cGUucGF0Y2ggYi9nZGItY2hlY2stdHlwZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggZmI0NDA2NS4uMDAwMDAwMAotLS0gYS9nZGItY2hlY2stdHlwZS5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDEwMDIgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1jdnMvMjAxMi0wOC9tc2cwMDEzMy5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEy LzA4LzE3IDAzOjA2OjEwCTEuMTQ1OTkKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA4LzE3 IDE3OjM2OjU2CTEuMTQ2MDAKLSMjIC0xLDMgKzEsNDggQEAKLSsyMDEyLTA4LTE3ICBLZWl0aCBT ZWl0eiAgPGtlaXRoc0ByZWRoYXQuY29tPgotKwotKwlQUiBjKysvMTMzNTYKLSsJKiBnZGJ0eXBl cy5jIChzdHJpY3RfdHlwZV9jaGVja2luZyk6IE5ldyB2YXJpYWJsZS4KLSsJKHNob3dfc3RyaWN0 X3R5cGVfY2hlY2tpbmcpOiBOZXcgZnVuY3Rpb24uCi0rCShyYW5rX29uZV90eXBlKTogUmV0dXJu IE5TX1BPSU5URVJfSU5URUdFUl9DT05WRVJTSU9OX0JBRE5FU1MKLSsJaWYgc3RyaWN0IHR5cGUg Y2hlY2tpbmcgaXMgZGlzYWJsZWQuCi0rCShfaW5pdGlhbGl6ZV9nZGJ0eXBlcyk6IEFkZCAiY2hl Y2sgdHlwZSIgc3ViY29tbWFuZC4KLSsJKiBnZGJ0eXBlcy5oIChOU19JTlRFR0VSX1BPSU5URVJf Q09OVkVSU0lPTl9CQURORVNTKTogTmV3IHN0cnVjdC4KLSsKLSsyMDEyLTA4LTE3ICBLZWl0aCBT ZWl0eiAgPGtlaXRoc0ByZWRoYXQuY29tPgotKwotKwkqIGxhbmd1YWdlLmggKHR5cGVfbW9kZSk6 IFJlbW92ZS4KLSsJKHR5cGVfY2hlY2spOiBSZW1vdmUuCi0rCShzdHJ1Y3QgbGFuZ3VhZ2VfZGVm bik6IFJlbW92ZSBsYV90eXBlX2NoZWNrLgotKwkoU1RSSUNUX1RZUEUpOiBSZW1vdmUgdW51c2Vk IG1hY3JvLgotKwkodHlwZV9lcnJvcik6IFJlbW92ZS4KLSsJKiBsYW5ndWFnZS5jIChzZXRfdHlw ZV9yYW5nZV9jYXNlKTogUmVuYW1lZCB0byAuLi4KLSsJKHNldF9yYW5nZV9jYXNlKTogLi4uIHRo aXMuICBVcGRhdGUgYWxsIGNhbGxlcnMuCi0rCVJlbW92ZSB0eXBlX21vZGUvdHlwZV9jaGVjay4K LSsJKHR5cGVfbW9kZSk6IFJlbW92ZS4KLSsJKHR5cGVfY2hlY2spOiBSZW1vdmUuCi0rCShzaG93 X3R5cGVfY29tbWFuZCk6IFJlbW92ZS4KLSsJKHNldF90eXBlX2NvbW1hbmQpOiBSZW1vdmUuCi0r CShsYW5ndWFnZV9pbmZvKTogUmVtb3ZlIHR5cGUgY2hlY2tpbmcgb3V0cHV0LgotKwkodHlwZV9l cnJvcik6IFJlbW92ZSB1bnVzZWQgZnVuY3Rpb24uCi0rCShyYW5nZV9lcnJvcik6IFVwZGF0ZSBj b21tZW50LgotKwkodW5rbm93bl9sYW5ndWFnZV9kZWZuKTogUmVtb3ZlIGxhX3R5cGVfY2hlY2su Ci0rCShhdXRvX2xhbmd1YWdlX2RlZm4pOiBMaWtld2lzZS4KLSsJKGxvY2FsX2xhbmd1YWdlX2Rl Zm4pOiBMaWtld2lzZS4KLSsJKF9pbml0aWFsaXplX2xhbmd1YWdlKTogUmVtb3ZlICJjaGVjayB0 eXBlIiBzdWJjb21tYW5kLgotKwkqIGFkYS1sYW5nLmMgKGFkYV9sYW5ndWFnZV9kZWZuKTogUmVt b3ZlIGxhX3R5cGVfY2hlY2suCi0rCSogYy1sYW5nLmMgKGNfbGFuZ3VhZ2VfZGVmbik6IExpa2V3 aXNlLgotKwkoY3BsdXNfbGFuZ3VhZ2VfZGVmbik6IExpa2V3aXNlLgotKwkoYXNtX2xhbmd1YWdl X2RlZm4pOiBMaWtld2lzZS4KLSsJKG1pbmltYWxfbGFuZ3VhZ2VfZGVmbik6IExpa2V3aXNlLgot KwkqIGQtbGFuZy5jIChkX2xhbmd1YWdlX2RlZm4pOiBMaWtld2lzZS4KLSsJKiBmLWxhbmcuYyAo Zl9sYW5ndWFnZV9kZWZuKTogTGlrZXdpc2UuCi0rCSogZ28tbGFuZy5jIChnb19sYW5ndWFnZV9k ZWZuKTogTGlrZXdpc2UuCi0rCSoganYtbGFuZy5jIChqYXZhX2xhbmd1YWdlX2RlZm4pOiBMaWtl d2lzZS4KLSsJKiBtMi1sYW5nLmMgKG0yX2xhbmd1YWdlX2RlZm4pOiBMaWtld2lzZS4KLSsJKiBv YmpjLWxhbmcuYyAob2JqY19sYW5ndWFnZV9kZWZuKTogTGlrZXdpc2UuCi0rCSogb3BlbmNsLWxh bmcuYyAob3BlbmNsX2xhbmd1YWdlX2RlZm4pOiBMaWtld2lzZS4KLSsJKiBwLWxhbmcuYyAocGFz Y2FsX2xhbmd1YWdlX2RlZm4pOiBMaWtld2lzZS4KLSsKLSAyMDEyLTA4LTE2ICBNaWtlIEZyeXNp bmdlciAgPHZhcGllckBnZW50b28ub3JnPgotIAotIAkqIGluZmNtZC5jIChfaW5pdGlhbGl6ZV9p bmZjbWQpOiBSZW1vdmUgdHJhaWxpbmcgKSBpbiBuZXh0IGhlbHAgdGV4dC4KLUluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL2dkYnR5cGVzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAu MjAxMjA5MjYub3JpZy9nZGIvZ2RidHlwZXMuYwkyMDEyLTA5LTI3IDIyOjE0OjIxLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ2RidHlwZXMuYwkyMDEyLTA5LTI3 IDIyOjE1OjA1LjgwNzcwNjEwNSArMDIwMAotQEAgLTYyLDYgKzYyLDcgQEAgY29uc3Qgc3RydWN0 IHJhbmsgQkFTRV9DT05WRVJTSU9OX0JBRE5FUwotIGNvbnN0IHN0cnVjdCByYW5rIFJFRkVSRU5D RV9DT05WRVJTSU9OX0JBRE5FU1MgPSB7MiwwfTsKLSBjb25zdCBzdHJ1Y3QgcmFuayBOVUxMX1BP SU5URVJfQ09OVkVSU0lPTl9CQURORVNTID0gezIsMH07Ci0gY29uc3Qgc3RydWN0IHJhbmsgTlNf UE9JTlRFUl9DT05WRVJTSU9OX0JBRE5FU1MgPSB7MTAsMH07Ci0rY29uc3Qgc3RydWN0IHJhbmsg TlNfSU5URUdFUl9QT0lOVEVSX0NPTlZFUlNJT05fQkFETkVTUyA9IHszLDB9OwotIAotIC8qIEZs b2F0Zm9ybWF0IHBhaXJzLiAgKi8KLSBjb25zdCBzdHJ1Y3QgZmxvYXRmb3JtYXQgKmZsb2F0Zm9y bWF0c19pZWVlX2hhbGZbQkZEX0VORElBTl9VTktOT1dOXSA9IHsKLUBAIC0xMzQsNiArMTM1LDE5 IEBAIHNob3dfb3ZlcmxvYWRfZGVidWcgKHN0cnVjdCB1aV9maWxlICpmaWwKLSAJCSAgICB2YWx1 ZSk7Ci0gfQotIAotKy8qIEEgZmxhZyB0byBlbmFibGUgc3RyaWN0IHR5cGUgY2hlY2tpbmcuICAq LwotKwotK3N0YXRpYyBpbnQgc3RyaWN0X3R5cGVfY2hlY2tpbmcgPSAxOwotKwotKy8qIEEgZnVu Y3Rpb24gdG8gc2hvdyB0aGUgc3RhdHVzIG9mIHN0cmljdCB0eXBlIGNoZWNraW5nLiAgKi8KLSsK LStzdGF0aWMgdm9pZAotK3Nob3dfc3RyaWN0X3R5cGVfY2hlY2tpbmcgKHN0cnVjdCB1aV9maWxl ICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMs IGNvbnN0IGNoYXIgKnZhbHVlKQotK3sKLSsgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIlN0 cmljdCB0eXBlIGNoZWNraW5nIGlzICVzLlxuIiksIHZhbHVlKTsKLSt9Ci0rCi0gc3RydWN0IGV4 dHJhCi0gICB7Ci0gICAgIGNoYXIgc3RyWzEyOF07Ci1AQCAtMjY0OSwxMiArMjY2MywyMCBAQCBy YW5rX29uZV90eXBlIChzdHJ1Y3QgdHlwZSAqcGFybSwgc3RydWN0Ci0gCWNhc2UgVFlQRV9DT0RF X0ZVTkM6Ci0gCSAgcmV0dXJuIHJhbmtfb25lX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHBhcm0p LCBhcmcsIE5VTEwpOwotIAljYXNlIFRZUEVfQ09ERV9JTlQ6Ci0tCSAgaWYgKHZhbHVlICE9IE5V TEwgJiYgVFlQRV9DT0RFICh2YWx1ZV90eXBlICh2YWx1ZSkpID09IFRZUEVfQ09ERV9JTlQKLS0J ICAgICAgJiYgdmFsdWVfYXNfbG9uZyAodmFsdWUpID09IDApCi0rCSAgaWYgKHZhbHVlICE9IE5V TEwgJiYgVFlQRV9DT0RFICh2YWx1ZV90eXBlICh2YWx1ZSkpID09IFRZUEVfQ09ERV9JTlQpCi0g CSAgICB7Ci0tCSAgICAgIC8qIE51bGwgcG9pbnRlciBjb252ZXJzaW9uOiBhbGxvdyBpdCB0byBi ZSBjYXN0IHRvIGEgcG9pbnRlci4KLS0JCSBbNC4xMC4xIG9mIEMrKyBzdGFuZGFyZCBkcmFmdCBu MzI5MF0gICovCi0tCSAgICAgIHJldHVybiBOVUxMX1BPSU5URVJfQ09OVkVSU0lPTl9CQURORVNT OwotKwkgICAgICBpZiAodmFsdWVfYXNfbG9uZyAodmFsdWUpID09IDApCi0rCQl7Ci0rCQkgIC8q IE51bGwgcG9pbnRlciBjb252ZXJzaW9uOiBhbGxvdyBpdCB0byBiZSBjYXN0IHRvIGEgcG9pbnRl ci4KLSsJCSAgICAgWzQuMTAuMSBvZiBDKysgc3RhbmRhcmQgZHJhZnQgbjMyOTBdICAqLwotKwkJ ICByZXR1cm4gTlVMTF9QT0lOVEVSX0NPTlZFUlNJT05fQkFETkVTUzsKLSsJCX0KLSsJICAgICAg ZWxzZQotKwkJewotKwkJICAvKiBJZiB0eXBlIGNoZWNraW5nIGlzIGRpc2FibGVkLCBhbGxvdyB0 aGUgY29udmVyc2lvbi4gICovCi0rCQkgIGlmICghc3RyaWN0X3R5cGVfY2hlY2tpbmcpCi0rCQkg ICAgcmV0dXJuIE5TX0lOVEVHRVJfUE9JTlRFUl9DT05WRVJTSU9OX0JBRE5FU1M7Ci0rCQl9Ci0g CSAgICB9Ci0gCSAgLyogZmFsbCB0aHJvdWdoICAqLwotIAljYXNlIFRZUEVfQ09ERV9FTlVNOgot QEAgLTQ2MzcsNCArNDY1OSwxMyBAQCBfaW5pdGlhbGl6ZV9nZGJ0eXBlcyAodm9pZCkKLSAJCQkg ICBOVUxMLCBOVUxMLAotIAkJCSAgIHNob3dfb3BhcXVlX3R5cGVfcmVzb2x1dGlvbiwKLSAJCQkg ICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKLSsKLSsgIC8qIEFkZCBhbiBvcHRpb24gdG8gcGVybWl0 IG5vbi1zdHJpY3QgdHlwZSBjaGVja2luZy4gICovCi0rICBhZGRfc2V0c2hvd19ib29sZWFuX2Nt ZCAoInR5cGUiLCBjbGFzc19zdXBwb3J0LAotKwkJCSAgICZzdHJpY3RfdHlwZV9jaGVja2luZywK LSsJCQkgICBfKCJTZXQgc3RyaWN0IHR5cGUgY2hlY2tpbmcuIiksCi0rCQkJICAgXygiU2hvdyBz dHJpY3QgdHlwZSBjaGVja2luZy4iKSwKLSsJCQkgICBOVUxMLCBOVUxMLAotKwkJCSAgIHNob3df c3RyaWN0X3R5cGVfY2hlY2tpbmcsCi0rCQkJICAgJnNldGNoZWNrbGlzdCwgJnNob3djaGVja2xp c3QpOwotIH0KLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dkYnR5cGVzLmgKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDEyLTA5 LTI3IDIyOjE0OjIzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv Z2RidHlwZXMuaAkyMDEyLTA5LTI3IDIyOjE0OjQwLjY5MDY5NTA1OSArMDIwMAotQEAgLTE3NDUs NiArMTc0NSw5IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgcmFuayBOVUxMX1BPSU5URVJfQ08KLSAv KiBDb252ZXJ0aW5nIGEgcG9pbnRlciB0byBhbiBpbnQgaXMgdXN1YWxseSBPSy4gICovCi0gZXh0 ZXJuIGNvbnN0IHN0cnVjdCByYW5rIE5TX1BPSU5URVJfQ09OVkVSU0lPTl9CQURORVNTOwotIAot Ky8qIEJhZG5lc3Mgb2YgY29udmVydGluZyBhIChub24temVybykgaW50ZWdlciBjb25zdGFudAot KyAgIHRvIGEgcG9pbnRlci4gICovCi0rZXh0ZXJuIGNvbnN0IHN0cnVjdCByYW5rIE5TX0lOVEVH RVJfUE9JTlRFUl9DT05WRVJTSU9OX0JBRE5FU1M7Ci0gCi0gZXh0ZXJuIHN0cnVjdCByYW5rIHN1 bV9yYW5rcyAoc3RydWN0IHJhbmsgYSwgc3RydWN0IHJhbmsgYik7Ci0gZXh0ZXJuIGludCBjb21w YXJlX3JhbmtzIChzdHJ1Y3QgcmFuayBhLCBzdHJ1Y3QgcmFuayBiKTsKLUluZGV4OiBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL2xhbmd1YWdlLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAx MjA5MjYub3JpZy9nZGIvbGFuZ3VhZ2UuaAkyMDEyLTA2LTEzIDE3OjQ3OjE0LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbGFuZ3VhZ2UuaAkyMDEyLTA5LTI3IDIy OjE0OjQwLjgzNDY5NTEyMSArMDIwMAotQEAgLTU1LDI3ICs1NSw2IEBAIGV4dGVybiBlbnVtIHJh bmdlX2NoZWNrCi0gICB9Ci0gcmFuZ2VfY2hlY2s7Ci0gCi0tLyogdHlwZV9tb2RlID09Ci0tICAg dHlwZV9tb2RlX2F1dG86ICAgdHlwZV9jaGVjayBzZXQgYXV0b21hdGljYWxseSB0byBkZWZhdWx0 IG9mIGxhbmd1YWdlLgotLSAgIHR5cGVfbW9kZV9tYW51YWw6IHR5cGVfY2hlY2sgc2V0IG1hbnVh bGx5IGJ5IHVzZXIuICAqLwotLQotLWV4dGVybiBlbnVtIHR5cGVfbW9kZQotLSAgewotLSAgICB0 eXBlX21vZGVfYXV0bywgdHlwZV9tb2RlX21hbnVhbAotLSAgfQotLXR5cGVfbW9kZTsKLS0KLS0v KiB0eXBlX2NoZWNrID09Ci0tICAgdHlwZV9jaGVja19vbjogICAgVHlwZXMgYXJlIGNoZWNrZWQg aW4gR0RCIGV4cHJlc3Npb25zLCBwcm9kdWNpbmcgZXJyb3JzLgotLSAgIHR5cGVfY2hlY2tfd2Fy bjogIFR5cGVzIGFyZSBjaGVja2VkLCBwcm9kdWNpbmcgd2FybmluZ3MuCi0tICAgdHlwZV9jaGVj a19vZmY6ICAgVHlwZXMgYXJlIG5vdCBjaGVja2VkIGluIEdEQiBleHByZXNzaW9ucy4gICovCi0t Ci0tZXh0ZXJuIGVudW0gdHlwZV9jaGVjawotLSAgewotLSAgICB0eXBlX2NoZWNrX29mZiwgdHlw ZV9jaGVja193YXJuLCB0eXBlX2NoZWNrX29uCi0tICB9Ci0tdHlwZV9jaGVjazsKLS0KLSAvKiBj YXNlX21vZGUgPT0KLSAgICBjYXNlX21vZGVfYXV0bzogICBjYXNlX3NlbnNpdGl2aXR5IHNldCB1 cG9uIHNlbGVjdGlvbiBvZiBzY29wZS4KLSAgICBjYXNlX21vZGVfbWFudWFsOiBjYXNlX3NlbnNp dGl2aXR5IHNldCBvbmx5IGJ5IHVzZXIuICAqLwotQEAgLTE2MiwxMCArMTQxLDYgQEAgc3RydWN0 IGxhbmd1YWdlX2RlZm4KLSAKLSAgICAgZW51bSByYW5nZV9jaGVjayBsYV9yYW5nZV9jaGVjazsK LSAKLS0gICAgLyogRGVmYXVsdCB0eXBlIGNoZWNraW5nLiAgKi8KLS0KLS0gICAgZW51bSB0eXBl X2NoZWNrIGxhX3R5cGVfY2hlY2s7Ci0tCi0gICAgIC8qIERlZmF1bHQgY2FzZSBzZW5zaXRpdml0 eS4gICovCi0gICAgIGVudW0gY2FzZV9zZW5zaXRpdml0eSBsYV9jYXNlX3NlbnNpdGl2aXR5Owot IAotQEAgLTQyMiw5ICszOTcsNiBAQCBzdHJ1Y3QgdHlwZSAqbGFuZ3VhZ2VfbG9va3VwX3ByaW1p dGl2ZV90Ci0gLyogVGhlc2UgbWFjcm9zIGRlZmluZSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBleHBy ZXNzaW9uIAotICAgIGV2YWx1YXRvci4gICovCi0gCi0tLyogU2hvdWxkIHdlIHN0cmljdGx5IHR5 cGUgY2hlY2sgZXhwcmVzc2lvbnM/ICAqLwotLSNkZWZpbmUgU1RSSUNUX1RZUEUgKHR5cGVfY2hl Y2sgIT0gdHlwZV9jaGVja19vZmYpCi0tCi0gLyogU2hvdWxkIHdlIHJhbmdlIGNoZWNrIHZhbHVl cyBhZ2FpbnN0IHRoZSBkb21haW4gb2YgdGhlaXIgdHlwZT8gICovCi0gI2RlZmluZSBSQU5HRV9D SEVDSyAocmFuZ2VfY2hlY2sgIT0gcmFuZ2VfY2hlY2tfb2ZmKQotIAotQEAgLTQ5Niw4ICs0Njgs NiBAQCBleHRlcm4gdm9pZCBiaW5vcF90eXBlX2NoZWNrIChzdHJ1Y3QgdmFsCi0gCi0gLyogRXJy b3IgbWVzc2FnZXMgKi8KLSAKLS1leHRlcm4gdm9pZCB0eXBlX2Vycm9yIChjb25zdCBjaGFyICos IC4uLikgQVRUUklCVVRFX1BSSU5URiAoMSwgMik7Ci0tCi0gZXh0ZXJuIHZvaWQgcmFuZ2VfZXJy b3IgKGNvbnN0IGNoYXIgKiwgLi4uKSBBVFRSSUJVVEVfUFJJTlRGICgxLCAyKTsKLSAKLSAvKiBE YXRhOiAgRG9lcyB0aGlzIHZhbHVlIHJlcHJlc2VudCAidHJ1dGgiIHRvIHRoZSBjdXJyZW50IGxh bmd1YWdlPyAgKi8KLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2xhbmd1YWdlLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvbGFuZ3VhZ2UuYwkyMDEy LTAzLTAyIDIwOjI5OjAxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvbGFuZ3VhZ2UuYwkyMDEyLTA5LTI3IDIyOjE0OjQwLjkyMjY5NTE2MiArMDIwMAotQEAgLTU1 LDcgKzU1LDcgQEAgc3RhdGljIHZvaWQgc2hvd19jaGVjayAoY2hhciAqLCBpbnQpOwotIAotIHN0 YXRpYyB2b2lkIHNldF9jaGVjayAoY2hhciAqLCBpbnQpOwotIAotLXN0YXRpYyB2b2lkIHNldF90 eXBlX3JhbmdlX2Nhc2UgKHZvaWQpOwotK3N0YXRpYyB2b2lkIHNldF9yYW5nZV9jYXNlICh2b2lk KTsKLSAKLSBzdGF0aWMgdm9pZCB1bmtfbGFuZ19lbWl0X2NoYXIgKGludCBjLCBzdHJ1Y3QgdHlw ZSAqdHlwZSwKLSAJCQkJc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHF1b3Rlcik7Ci1AQCAt ODEsOCArODEsNiBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gdW5rbm93Ci0g Ci0gZW51bSByYW5nZV9tb2RlIHJhbmdlX21vZGUgPSByYW5nZV9tb2RlX2F1dG87Ci0gZW51bSBy YW5nZV9jaGVjayByYW5nZV9jaGVjayA9IHJhbmdlX2NoZWNrX29mZjsKLS1lbnVtIHR5cGVfbW9k ZSB0eXBlX21vZGUgPSB0eXBlX21vZGVfYXV0bzsKLS1lbnVtIHR5cGVfY2hlY2sgdHlwZV9jaGVj ayA9IHR5cGVfY2hlY2tfb2ZmOwotIGVudW0gY2FzZV9tb2RlIGNhc2VfbW9kZSA9IGNhc2VfbW9k ZV9hdXRvOwotIGVudW0gY2FzZV9zZW5zaXRpdml0eSBjYXNlX3NlbnNpdGl2aXR5ID0gY2FzZV9z ZW5zaXRpdmVfb247Ci0gCi1AQCAtMTc0LDcgKzE3Miw3IEBAIHNldF9sYW5ndWFnZV9jb21tYW5k IChjaGFyICppZ25vcmUsIGludAotIAkgICAgICAvKiBFbnRlciBtYW51YWwgbW9kZS4gIFNldCB0 aGUgc3BlY2lmaWVkIGxhbmd1YWdlLiAgKi8KLSAJICAgICAgbGFuZ3VhZ2VfbW9kZSA9IGxhbmd1 YWdlX21vZGVfbWFudWFsOwotIAkgICAgICBjdXJyZW50X2xhbmd1YWdlID0gbGFuZ3VhZ2VzW2ld OwotLQkgICAgICBzZXRfdHlwZV9yYW5nZV9jYXNlICgpOwotKwkgICAgICBzZXRfcmFuZ2VfY2Fz ZSAoKTsKLSAJICAgICAgZXhwZWN0ZWRfbGFuZ3VhZ2UgPSBjdXJyZW50X2xhbmd1YWdlOwotIAkg ICAgICByZXR1cm47Ci0gCSAgICB9Ci1AQCAtMTg2LDc5ICsxODQsNiBAQCBzZXRfbGFuZ3VhZ2Vf Y29tbWFuZCAoY2hhciAqaWdub3JlLCBpbnQKLSAJCSAgbGFuZ3VhZ2UpOwotIH0KLSAKLS0vKiBT aG93IGNvbW1hbmQuICBEaXNwbGF5IGEgd2FybmluZyBpZiB0aGUgdHlwZSBzZXR0aW5nIGRvZXMK LS0gICBub3QgbWF0Y2ggdGhlIGN1cnJlbnQgbGFuZ3VhZ2UuICAqLwotLXN0YXRpYyB2b2lkCi0t c2hvd190eXBlX2NvbW1hbmQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0t CQkgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0tewot LSAgaWYgKHR5cGVfbW9kZSA9PSB0eXBlX21vZGVfYXV0bykKLS0gICAgewotLSAgICAgIGNoYXIg KnRtcCA9IE5VTEw7Ci0tCi0tICAgICAgc3dpdGNoICh0eXBlX2NoZWNrKQotLQl7Ci0tCWNhc2Ug dHlwZV9jaGVja19vbjoKLS0JICB0bXAgPSAib24iOwotLQkgIGJyZWFrOwotLQljYXNlIHR5cGVf Y2hlY2tfb2ZmOgotLQkgIHRtcCA9ICJvZmYiOwotLQkgIGJyZWFrOwotLQljYXNlIHR5cGVfY2hl Y2tfd2FybjoKLS0JICB0bXAgPSAid2FybiI7Ci0tCSAgYnJlYWs7Ci0tCWRlZmF1bHQ6Ci0tCSAg aW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywKLS0JCQkgICJVbnJlY29nbml6ZWQg dHlwZSBjaGVjayBzZXR0aW5nLiIpOwotLQl9Ci0tCi0tICAgICAgZnByaW50Zl9maWx0ZXJlZCAo Z2RiX3N0ZG91dCwKLS0JCQlfKCJUeXBlIGNoZWNraW5nIGlzIFwiYXV0bzsgY3VycmVudGx5ICVz XCIuXG4iKSwKLS0JCQl0bXApOwotLSAgICB9Ci0tICBlbHNlCi0tICAgIGZwcmludGZfZmlsdGVy ZWQgKGdkYl9zdGRvdXQsIF8oIlR5cGUgY2hlY2tpbmcgaXMgXCIlc1wiLlxuIiksCi0tCQkgICAg ICB2YWx1ZSk7Ci0tCi0tICAgaWYgKHR5cGVfY2hlY2sgIT0gY3VycmVudF9sYW5ndWFnZS0+bGFf dHlwZV9jaGVjaykKLS0gICAgd2FybmluZyAoXygidGhlIGN1cnJlbnQgdHlwZSBjaGVjayBzZXR0 aW5nIgotLQkgICAgICAgIiBkb2VzIG5vdCBtYXRjaCB0aGUgbGFuZ3VhZ2UuXG4iKSk7Ci0tfQot LQotLS8qIFNldCBjb21tYW5kLiAgQ2hhbmdlIHRoZSBzZXR0aW5nIGZvciB0eXBlIGNoZWNraW5n LiAgKi8KLS1zdGF0aWMgdm9pZAotLXNldF90eXBlX2NvbW1hbmQgKGNoYXIgKmlnbm9yZSwgaW50 IGZyb21fdHR5LCBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKLS17Ci0tICBpZiAoc3RyY21w ICh0eXBlLCAib24iKSA9PSAwKQotLSAgICB7Ci0tICAgICAgdHlwZV9jaGVjayA9IHR5cGVfY2hl Y2tfb247Ci0tICAgICAgdHlwZV9tb2RlID0gdHlwZV9tb2RlX21hbnVhbDsKLS0gICAgfQotLSAg ZWxzZSBpZiAoc3RyY21wICh0eXBlLCAid2FybiIpID09IDApCi0tICAgIHsKLS0gICAgICB0eXBl X2NoZWNrID0gdHlwZV9jaGVja193YXJuOwotLSAgICAgIHR5cGVfbW9kZSA9IHR5cGVfbW9kZV9t YW51YWw7Ci0tICAgIH0KLS0gIGVsc2UgaWYgKHN0cmNtcCAodHlwZSwgIm9mZiIpID09IDApCi0t ICAgIHsKLS0gICAgICB0eXBlX2NoZWNrID0gdHlwZV9jaGVja19vZmY7Ci0tICAgICAgdHlwZV9t b2RlID0gdHlwZV9tb2RlX21hbnVhbDsKLS0gICAgfQotLSAgZWxzZSBpZiAoc3RyY21wICh0eXBl LCAiYXV0byIpID09IDApCi0tICAgIHsKLS0gICAgICB0eXBlX21vZGUgPSB0eXBlX21vZGVfYXV0 bzsKLS0gICAgICBzZXRfdHlwZV9yYW5nZV9jYXNlICgpOwotLSAgICAgIHJldHVybjsKLS0gICAg fQotLSAgZWxzZQotLSAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAotLQkJ ICAgIF8oIlVucmVjb2duaXplZCB0eXBlIGNoZWNrIHNldHRpbmc6IFwiJXNcIiIpLCB0eXBlKTsK LS0KLS0gIGlmICh0eXBlX2NoZWNrICE9IGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX3R5cGVfY2hlY2sp Ci0tICAgIHdhcm5pbmcgKF8oInRoZSBjdXJyZW50IHR5cGUgY2hlY2sgc2V0dGluZyIKLS0JICAg ICAgICIgZG9lcyBub3QgbWF0Y2ggdGhlIGxhbmd1YWdlLlxuIikpOwotLX0KLS0KLSAvKiBTaG93 IGNvbW1hbmQuICBEaXNwbGF5IGEgd2FybmluZyBpZiB0aGUgcmFuZ2Ugc2V0dGluZyBkb2VzCi0g ICAgbm90IG1hdGNoIHRoZSBjdXJyZW50IGxhbmd1YWdlLiAgKi8KLSBzdGF0aWMgdm9pZAotQEAg LTMyMCw3ICsyNDUsNyBAQCBzZXRfcmFuZ2VfY29tbWFuZCAoY2hhciAqaWdub3JlLCBpbnQgZnJv Ci0gICBlbHNlIGlmIChzdHJjbXAgKHJhbmdlLCAiYXV0byIpID09IDApCi0gICAgIHsKLSAgICAg ICByYW5nZV9tb2RlID0gcmFuZ2VfbW9kZV9hdXRvOwotLSAgICAgIHNldF90eXBlX3JhbmdlX2Nh c2UgKCk7Ci0rICAgICAgc2V0X3JhbmdlX2Nhc2UgKCk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9 Ci0gICBlbHNlCi1AQCAtMzg5LDcgKzMxNCw3IEBAIHNldF9jYXNlX2NvbW1hbmQgKGNoYXIgKmln bm9yZSwgaW50IGZyb20KLSAgICBlbHNlIGlmIChzdHJjbXAgKGNhc2Vfc2Vuc2l0aXZlLCAiYXV0 byIpID09IDApCi0gICAgICB7Ci0gICAgICAgIGNhc2VfbW9kZSA9IGNhc2VfbW9kZV9hdXRvOwot LSAgICAgICBzZXRfdHlwZV9yYW5nZV9jYXNlICgpOwotKyAgICAgICBzZXRfcmFuZ2VfY2FzZSAo KTsKLSAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgIGVsc2UKLUBAIC00MDksMTQgKzMzNCwx MSBAQCBzZXRfY2FzZV9jb21tYW5kIChjaGFyICppZ25vcmUsIGludCBmcm9tCi0gICAgSWYgU0hP VyBpcyBub24temVybywgdGhlbiBwcmludCBvdXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UsCi0gICAg dHlwZSBhbmQgcmFuZ2UgY2hlY2tpbmcgc3RhdHVzLiAgKi8KLSBzdGF0aWMgdm9pZAotLXNldF90 eXBlX3JhbmdlX2Nhc2UgKHZvaWQpCi0rc2V0X3JhbmdlX2Nhc2UgKHZvaWQpCi0gewotICAgaWYg KHJhbmdlX21vZGUgPT0gcmFuZ2VfbW9kZV9hdXRvKQotICAgICByYW5nZV9jaGVjayA9IGN1cnJl bnRfbGFuZ3VhZ2UtPmxhX3JhbmdlX2NoZWNrOwotIAotLSAgaWYgKHR5cGVfbW9kZSA9PSB0eXBl X21vZGVfYXV0bykKLS0gICAgdHlwZV9jaGVjayA9IGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX3R5cGVf Y2hlY2s7Ci0tCi0gICBpZiAoY2FzZV9tb2RlID09IGNhc2VfbW9kZV9hdXRvKQotICAgICBjYXNl X3NlbnNpdGl2aXR5ID0gY3VycmVudF9sYW5ndWFnZS0+bGFfY2FzZV9zZW5zaXRpdml0eTsKLSB9 Ci1AQCAtNDM3LDcgKzM1OSw3IEBAIHNldF9sYW5ndWFnZSAoZW51bSBsYW5ndWFnZSBsYW5nKQot ICAgICAgIGlmIChsYW5ndWFnZXNbaV0tPmxhX2xhbmd1YWdlID09IGxhbmcpCi0gCXsKLSAJICBj dXJyZW50X2xhbmd1YWdlID0gbGFuZ3VhZ2VzW2ldOwotLQkgIHNldF90eXBlX3JhbmdlX2Nhc2Ug KCk7Ci0rCSAgc2V0X3JhbmdlX2Nhc2UgKCk7Ci0gCSAgYnJlYWs7Ci0gCX0KLSAgICAgfQotQEAg LTQ2MSw4ICszODMsNiBAQCBsYW5ndWFnZV9pbmZvIChpbnQgcXVpZXRseSkKLSAKLSAgIGlmICgh cXVpZXRseSkKLSAgICAgewotLSAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJUeXBlIGNoZWNr aW5nOiAgICAgJXNcbiIpLCB0eXBlKTsKLS0gICAgICBzaG93X3R5cGVfY29tbWFuZCAoTlVMTCwg MSwgTlVMTCwgTlVMTCk7Ci0gICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlJhbmdlIGNoZWNr aW5nOiAgICAlc1xuIiksIHJhbmdlKTsKLSAgICAgICBzaG93X3JhbmdlX2NvbW1hbmQgKE5VTEws IDEsIE5VTEwsIE5VTEwpOwotICAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJDYXNlIHNlbnNp dGl2aXR5OiAgJXNcbiIpLCBjYXNlX3NlbnNpdGl2ZSk7Ci1AQCAtNTAwLDM4ICs0MjAsMTEgQEAg dmFsdWVfdHJ1ZSAoc3RydWN0IHZhbHVlICp2YWwpCi0gICAgZXJyb3IgbWVzc2FnZXMgdGhhdCBv Y2N1ciBkdXJpbmcgdHlwZS0gYW5kIHJhbmdlLQotICAgIGNoZWNraW5nLiAgKi8KLSAKLS0vKiBU aGVzZSBhcmUgY2FsbGVkIHdoZW4gYSBsYW5ndWFnZSBmYWlscyBhIHR5cGUtIG9yIHJhbmdlLWNo ZWNrLiAgVGhlCi0rLyogVGhpcyBpcyBjYWxsZWQgd2hlbiBhIGxhbmd1YWdlIGZhaWxzIGEgcmFu Z2UtY2hlY2suICBUaGUKLSAgICBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYSBwcmludGYoKS1z dHlsZSBmb3JtYXQgc3RyaW5nLCBhbmQgdGhlCi0tICAgcmVzdCBvZiB0aGUgYXJndW1lbnRzIHNo b3VsZCBiZSBpdHMgYXJndW1lbnRzLiAgSWYKLS0gICBbdHlwZXxyYW5nZV1fY2hlY2sgaXMgW3R5 cGV8cmFuZ2VdX2NoZWNrX29uLCBhbiBlcnJvciBpcyBwcmludGVkOwotLSAgIGlmIFt0eXBlfHJh bmdlXV9jaGVja193YXJuLCBhIHdhcm5pbmc7IG90aGVyd2lzZSBqdXN0IHRoZQotLSAgIG1lc3Nh Z2UuICAqLwotLQotLXZvaWQKLS10eXBlX2Vycm9yIChjb25zdCBjaGFyICpzdHJpbmcsLi4uKQot LXsKLS0gIHZhX2xpc3QgYXJnczsKLS0KLS0gIHZhX3N0YXJ0IChhcmdzLCBzdHJpbmcpOwotLSAg c3dpdGNoICh0eXBlX2NoZWNrKQotLSAgICB7Ci0tICAgIGNhc2UgdHlwZV9jaGVja193YXJuOgot LSAgICAgIHZ3YXJuaW5nIChzdHJpbmcsIGFyZ3MpOwotLSAgICAgIGJyZWFrOwotLSAgICBjYXNl IHR5cGVfY2hlY2tfb246Ci0tICAgICAgdmVycm9yIChzdHJpbmcsIGFyZ3MpOwotLSAgICAgIGJy ZWFrOwotLSAgICBjYXNlIHR5cGVfY2hlY2tfb2ZmOgotLSAgICAgIC8qIEZJWE1FOiBjYWduZXkv MjAwMi0wMS0zMDogU2hvdWxkIHRoaXMgZnVuY3Rpb24gcHJpbnQgYW55dGhpbmcKLS0gICAgICAg ICB3aGVuIHR5cGUgZXJyb3IgaXMgb2ZmPyAgKi8KLS0gICAgICB2ZnByaW50Zl9maWx0ZXJlZCAo Z2RiX3N0ZGVyciwgc3RyaW5nLCBhcmdzKTsKLS0gICAgICBmcHJpbnRmX2ZpbHRlcmVkIChnZGJf c3RkZXJyLCAiXG4iKTsKLS0gICAgICBicmVhazsKLS0gICAgZGVmYXVsdDoKLS0gICAgICBpbnRl cm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBfKCJiYWQgc3dpdGNoIikpOwotLSAgICB9 Ci0tICB2YV9lbmQgKGFyZ3MpOwotLX0KLSsgICByZXN0IG9mIHRoZSBhcmd1bWVudHMgc2hvdWxk IGJlIGl0cyBhcmd1bWVudHMuICBJZiByYW5nZV9jaGVjayBpcwotKyAgIHJhbmdlX2NoZWNrX29u LCBhbiBlcnJvciBpcyBwcmludGVkOyAgaWYgcmFuZ2VfY2hlY2tfd2FybiwgYSB3YXJuaW5nOwot KyAgIG90aGVyd2lzZSBqdXN0IHRoZSBtZXNzYWdlLiAgKi8KLSAKLSB2b2lkCi0gcmFuZ2VfZXJy b3IgKGNvbnN0IGNoYXIgKnN0cmluZywuLi4pCi1AQCAtOTAyLDcgKzc5NSw2IEBAIGNvbnN0IHN0 cnVjdCBsYW5ndWFnZV9kZWZuIHVua25vd25fbGFuZ3UKLSAgICJ1bmtub3duIiwKLSAgIGxhbmd1 YWdlX3Vua25vd24sCi0gICByYW5nZV9jaGVja19vZmYsCi0tICB0eXBlX2NoZWNrX29mZiwKLSAg IGNhc2Vfc2Vuc2l0aXZlX29uLAotICAgYXJyYXlfcm93X21ham9yLAotICAgbWFjcm9fZXhwYW5z aW9uX25vLAotQEAgLTk0Niw3ICs4MzgsNiBAQCBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiBh dXRvX2xhbmd1YWdlCi0gICAiYXV0byIsCi0gICBsYW5ndWFnZV9hdXRvLAotICAgcmFuZ2VfY2hl Y2tfb2ZmLAotLSAgdHlwZV9jaGVja19vZmYsCi0gICBjYXNlX3NlbnNpdGl2ZV9vbiwKLSAgIGFy cmF5X3Jvd19tYWpvciwKLSAgIG1hY3JvX2V4cGFuc2lvbl9ubywKLUBAIC05ODgsNyArODc5LDYg QEAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gbG9jYWxfbGFuZ3VhZwotICAgImxvY2FsIiwK LSAgIGxhbmd1YWdlX2F1dG8sCi0gICByYW5nZV9jaGVja19vZmYsCi0tICB0eXBlX2NoZWNrX29m ZiwKLSAgIGNhc2Vfc2Vuc2l0aXZlX29uLAotICAgYXJyYXlfcm93X21ham9yLAotICAgbWFjcm9f ZXhwYW5zaW9uX25vLAotQEAgLTExMzUsMTMgKzEwMjUsNiBAQCBfaW5pdGlhbGl6ZV9sYW5ndWFn ZSAodm9pZCkKLSAgIGFkZF9hbGlhc19jbWQgKCJjIiwgImNoZWNrIiwgbm9fY2xhc3MsIDEsICZz aG93bGlzdCk7Ci0gICBhZGRfYWxpYXNfY21kICgiY2giLCAiY2hlY2siLCBub19jbGFzcywgMSwg JnNob3dsaXN0KTsKLSAKLS0gIGFkZF9zZXRzaG93X2VudW1fY21kICgidHlwZSIsIGNsYXNzX3N1 cHBvcnQsIHR5cGVfb3JfcmFuZ2VfbmFtZXMsICZ0eXBlLAotLQkJCV8oIlNldCB0eXBlIGNoZWNr aW5nLiAgKG9uL3dhcm4vb2ZmL2F1dG8pIiksCi0tCQkJXygiU2hvdyB0eXBlIGNoZWNraW5nLiAg KG9uL3dhcm4vb2ZmL2F1dG8pIiksCi0tCQkJTlVMTCwgc2V0X3R5cGVfY29tbWFuZCwKLS0JCQlz aG93X3R5cGVfY29tbWFuZCwKLS0JCQkmc2V0Y2hlY2tsaXN0LCAmc2hvd2NoZWNrbGlzdCk7Ci0t Ci0gICBhZGRfc2V0c2hvd19lbnVtX2NtZCAoInJhbmdlIiwgY2xhc3Nfc3VwcG9ydCwgdHlwZV9v cl9yYW5nZV9uYW1lcywKLSAJCQkmcmFuZ2UsCi0gCQkJXygiU2V0IHJhbmdlIGNoZWNraW5nLiAg KG9uL3dhcm4vb2ZmL2F1dG8pIiksCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEt bGFuZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2FkYS1s YW5nLmMJMjAxMi0wOS0yNyAyMjoxNDoxNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmMJMjAxMi0wOS0yNyAyMjoxNDo0MS4xMTI2OTUyNDUgKzAy MDAKLUBAIC0xMjUwMyw3ICsxMjUwMyw2IEBAIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuIGFk YV9sYW5ndWFnZV8KLSAgICJhZGEiLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIExhbmd1YWdl IG5hbWUgKi8KLSAgIGxhbmd1YWdlX2FkYSwKLSAgIHJhbmdlX2NoZWNrX29mZiwKLS0gIHR5cGVf Y2hlY2tfb2ZmLAotICAgY2FzZV9zZW5zaXRpdmVfb24sICAgICAgICAgICAgLyogWWVzLCBBZGEg aXMgY2FzZS1pbnNlbnNpdGl2ZSwgYnV0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0aGF0J3Mgbm90IHF1aXRlIHdoYXQgdGhpcyBtZWFucy4gICovCi0gICBhcnJheV9yb3df bWFqb3IsCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jLWxhbmcuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9jLWxhbmcuYwkyMDEyLTA3LTA2IDA3 OjQ2OjA0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYy1sYW5n LmMJMjAxMi0wOS0yNyAyMjoxNDo0MS4xNDE2OTUyNTcgKzAyMDAKLUBAIC04MzEsNyArODMxLDYg QEAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gY19sYW5ndWFnZV9kZQotICAgImMiLAkJCQkv KiBMYW5ndWFnZSBuYW1lICovCi0gICBsYW5ndWFnZV9jLAotICAgcmFuZ2VfY2hlY2tfb2ZmLAot LSAgdHlwZV9jaGVja19vZmYsCi0gICBjYXNlX3NlbnNpdGl2ZV9vbiwKLSAgIGFycmF5X3Jvd19t YWpvciwKLSAgIG1hY3JvX2V4cGFuc2lvbl9jLAotQEAgLTk1NSw3ICs5NTQsNiBAQCBjb25zdCBz dHJ1Y3QgbGFuZ3VhZ2VfZGVmbiBjcGx1c19sYW5ndWFnCi0gICAiYysrIiwJCQkvKiBMYW5ndWFn ZSBuYW1lICovCi0gICBsYW5ndWFnZV9jcGx1cywKLSAgIHJhbmdlX2NoZWNrX29mZiwKLS0gIHR5 cGVfY2hlY2tfb2ZmLAotICAgY2FzZV9zZW5zaXRpdmVfb24sCi0gICBhcnJheV9yb3dfbWFqb3Is Ci0gICBtYWNyb19leHBhbnNpb25fYywKLUBAIC05OTcsNyArOTk1LDYgQEAgY29uc3Qgc3RydWN0 IGxhbmd1YWdlX2RlZm4gYXNtX2xhbmd1YWdlXwotICAgImFzbSIsCQkJLyogTGFuZ3VhZ2UgbmFt ZSAqLwotICAgbGFuZ3VhZ2VfYXNtLAotICAgcmFuZ2VfY2hlY2tfb2ZmLAotLSAgdHlwZV9jaGVj a19vZmYsCi0gICBjYXNlX3NlbnNpdGl2ZV9vbiwKLSAgIGFycmF5X3Jvd19tYWpvciwKLSAgIG1h Y3JvX2V4cGFuc2lvbl9jLAotQEAgLTEwNDQsNyArMTA0MSw2IEBAIGNvbnN0IHN0cnVjdCBsYW5n dWFnZV9kZWZuIG1pbmltYWxfbGFuZ3UKLSAgICJtaW5pbWFsIiwJCQkvKiBMYW5ndWFnZSBuYW1l ICovCi0gICBsYW5ndWFnZV9taW5pbWFsLAotICAgcmFuZ2VfY2hlY2tfb2ZmLAotLSAgdHlwZV9j aGVja19vZmYsCi0gICBjYXNlX3NlbnNpdGl2ZV9vbiwKLSAgIGFycmF5X3Jvd19tYWpvciwKLSAg IG1hY3JvX2V4cGFuc2lvbl9jLAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZC1sYW5n LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvZC1sYW5nLmMJ MjAxMi0wMy0xNSAxNTowNjoyMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL2QtbGFuZy5jCTIwMTItMDktMjcgMjI6MTQ6NDEuMTQzNjk1MjU3ICswMjAwCi1AQCAt MjQwLDcgKzI0MCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiBkX2xhbmcK LSAgICJkIiwKLSAgIGxhbmd1YWdlX2QsCi0gICByYW5nZV9jaGVja19vZmYsCi0tICB0eXBlX2No ZWNrX29mZiwKLSAgIGNhc2Vfc2Vuc2l0aXZlX29uLAotICAgYXJyYXlfcm93X21ham9yLAotICAg bWFjcm9fZXhwYW5zaW9uX2MsCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mLWxhbmcu YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9mLWxhbmcuYwky MDEyLTA5LTI3IDIyOjE0OjIzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvZi1sYW5nLmMJMjAxMi0wOS0yNyAyMjoxNDo0MS4xNTE2OTUyNjAgKzAyMDAKLUBAIC0y NjAsNyArMjYwLDYgQEAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gZl9sYW5ndWFnZV9kZQot ICAgImZvcnRyYW4iLAotICAgbGFuZ3VhZ2VfZm9ydHJhbiwKLSAgIHJhbmdlX2NoZWNrX29uLAot LSAgdHlwZV9jaGVja19vbiwKLSAgIGNhc2Vfc2Vuc2l0aXZlX29mZiwKLSAgIGFycmF5X2NvbHVt bl9tYWpvciwKLSAgIG1hY3JvX2V4cGFuc2lvbl9ubywKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL2dvLWxhbmcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmln L2dkYi9nby1sYW5nLmMJMjAxMi0wNC0yNSAxNjowNzoyMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dvLWxhbmcuYwkyMDEyLTA5LTI3IDIyOjE0OjQxLjE1MjY5 NTI2MSArMDIwMAotQEAgLTU2Miw3ICs1NjIsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGxhbmd1 YWdlX2RlZm4gZ29fbGFuCi0gICAiZ28iLAotICAgbGFuZ3VhZ2VfZ28sCi0gICByYW5nZV9jaGVj a19vZmYsCi0tICB0eXBlX2NoZWNrX29mZiwKLSAgIGNhc2Vfc2Vuc2l0aXZlX29uLAotICAgYXJy YXlfcm93X21ham9yLAotICAgbWFjcm9fZXhwYW5zaW9uX25vLAotSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvanYtbGFuZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2 Lm9yaWcvZ2RiL2p2LWxhbmcuYwkyMDEyLTA5LTI3IDIyOjE0OjIzLjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvanYtbGFuZy5jCTIwMTItMDktMjcgMjI6MTQ6NDEu MTU0Njk1MjYzICswMjAwCi1AQCAtMTE2OSw3ICsxMTY5LDYgQEAgY29uc3Qgc3RydWN0IGxhbmd1 YWdlX2RlZm4gamF2YV9sYW5ndWFnZQotICAgImphdmEiLAkJCS8qIExhbmd1YWdlIG5hbWUgKi8K LSAgIGxhbmd1YWdlX2phdmEsCi0gICByYW5nZV9jaGVja19vZmYsCi0tICB0eXBlX2NoZWNrX29m ZiwKLSAgIGNhc2Vfc2Vuc2l0aXZlX29uLAotICAgYXJyYXlfcm93X21ham9yLAotICAgbWFjcm9f ZXhwYW5zaW9uX25vLAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbTItbGFuZy5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL20yLWxhbmcuYwkyMDEy LTAzLTAyIDIwOjI5OjAxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvbTItbGFuZy5jCTIwMTItMDktMjcgMjI6MTQ6NDEuMTYxNjk1MjY2ICswMjAwCi1AQCAtMzcw LDcgKzM3MCw2IEBAIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuIG0yX2xhbmd1YWdlX2QKLSAg ICJtb2R1bGEtMiIsCi0gICBsYW5ndWFnZV9tMiwKLSAgIHJhbmdlX2NoZWNrX29uLAotLSAgdHlw ZV9jaGVja19vbiwKLSAgIGNhc2Vfc2Vuc2l0aXZlX29uLAotICAgYXJyYXlfcm93X21ham9yLAot ICAgbWFjcm9fZXhwYW5zaW9uX25vLAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvb2Jq Yy1sYW5nLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvb2Jq Yy1sYW5nLmMJMjAxMi0wMy0wMiAyMDoyOTowMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL29iamMtbGFuZy5jCTIwMTItMDktMjcgMjI6MTQ6NDEuMTYzNjk1MjY4 ICswMjAwCi1AQCAtNTA5LDcgKzUwOSw2IEBAIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuIG9i amNfbGFuZ3VhZ2UKLSAgICJvYmplY3RpdmUtYyIsCQkvKiBMYW5ndWFnZSBuYW1lICovCi0gICBs YW5ndWFnZV9vYmpjLAotICAgcmFuZ2VfY2hlY2tfb2ZmLAotLSAgdHlwZV9jaGVja19vZmYsCi0g ICBjYXNlX3NlbnNpdGl2ZV9vbiwKLSAgIGFycmF5X3Jvd19tYWpvciwKLSAgIG1hY3JvX2V4cGFu c2lvbl9jLAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvb3BlbmNsLWxhbmcuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9vcGVuY2wtbGFuZy5jCTIw MTItMDMtMDIgMjA6Mjk6MDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9vcGVuY2wtbGFuZy5jCTIwMTItMDktMjcgMjI6MTQ6NDEuMTY1Njk1MjY4ICswMjAwCi1A QCAtOTkzLDcgKzk5Myw2IEBAIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuIG9wZW5jbF9sYW5n dWEKLSAgICJvcGVuY2wiLAkJCS8qIExhbmd1YWdlIG5hbWUgKi8KLSAgIGxhbmd1YWdlX29wZW5j bCwKLSAgIHJhbmdlX2NoZWNrX29mZiwKLS0gIHR5cGVfY2hlY2tfb2ZmLAotICAgY2FzZV9zZW5z aXRpdmVfb24sCi0gICBhcnJheV9yb3dfbWFqb3IsCi0gICBtYWNyb19leHBhbnNpb25fYywKLUlu ZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3AtbGFuZy5jCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3AtbGFuZy5jCTIwMTItMDMtMDIgMjA6Mjk6MDEuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wLWxhbmcuYwkyMDEyLTA5 LTI3IDIyOjE0OjQxLjE3MDY5NTI3MCArMDIwMAotQEAgLTQyOSw3ICs0MjksNiBAQCBjb25zdCBz dHJ1Y3QgbGFuZ3VhZ2VfZGVmbiBwYXNjYWxfbGFuZ3VhCi0gICAicGFzY2FsIiwJCQkvKiBMYW5n dWFnZSBuYW1lICovCi0gICBsYW5ndWFnZV9wYXNjYWwsCi0gICByYW5nZV9jaGVja19vbiwKLS0g IHR5cGVfY2hlY2tfb24sCi0gICBjYXNlX3NlbnNpdGl2ZV9vbiwKLSAgIGFycmF5X3Jvd19tYWpv ciwKLSAgIG1hY3JvX2V4cGFuc2lvbl9ubywKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L2RvYy9nZGIudGV4aW5mbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmln L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wOS0yNyAyMjoxNDoyMy4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA5LTI3IDIy OjE0OjQxLjE4ODY5NTI3OSArMDIwMAotQEAgLTEyNjQ4LDI5ICsxMjY0OCwxOCBAQCBMaXN0IGFs bCB0aGUgZmlsZW5hbWUgZXh0ZW5zaW9ucyBhbmQgdGhlCi0gQG5vZGUgQ2hlY2tzCi0gQHNlY3Rp b24gVHlwZSBhbmQgUmFuZ2UgQ2hlY2tpbmcKLSAKLS1AcXVvdGF0aW9uCi0tQGVtcGh7V2Fybmlu Zzp9IEluIHRoaXMgcmVsZWFzZSwgdGhlIEB2YWx1ZXtHREJOfSBjb21tYW5kcyBmb3IgdHlwZSBh bmQgcmFuZ2UKLS1jaGVja2luZyBhcmUgaW5jbHVkZWQsIGJ1dCB0aGV5IGRvIG5vdCB5ZXQgaGF2 ZSBhbnkgZWZmZWN0LiAgVGhpcwotLXNlY3Rpb24gZG9jdW1lbnRzIHRoZSBpbnRlbmRlZCBmYWNp bGl0aWVzLgotLUBlbmQgcXVvdGF0aW9uCi0tQGMgRklYTUUgcmVtb3ZlIHdhcm5pbmcgd2hlbiB0 eXBlL3JhbmdlIGNvZGUgYWRkZWQKLS0KLSBTb21lIGxhbmd1YWdlcyBhcmUgZGVzaWduZWQgdG8g Z3VhcmQgeW91IGFnYWluc3QgbWFraW5nIHNlZW1pbmdseSBjb21tb24KLSBlcnJvcnMgdGhyb3Vn aCBhIHNlcmllcyBvZiBjb21waWxlLSBhbmQgcnVuLXRpbWUgY2hlY2tzLiAgVGhlc2UgaW5jbHVk ZQotLWNoZWNraW5nIHRoZSB0eXBlIG9mIGFyZ3VtZW50cyB0byBmdW5jdGlvbnMgYW5kIG9wZXJh dG9ycywgYW5kIG1ha2luZwotK2NoZWNraW5nIHRoZSB0eXBlIG9mIGFyZ3VtZW50cyB0byBmdW5j dGlvbnMgYW5kIG9wZXJhdG9ycyBhbmQgbWFraW5nCi0gc3VyZSBtYXRoZW1hdGljYWwgb3ZlcmZs b3dzIGFyZSBjYXVnaHQgYXQgcnVuIHRpbWUuICBDaGVja3Mgc3VjaCBhcwotIHRoZXNlIGhlbHAg dG8gZW5zdXJlIGEgcHJvZ3JhbSdzIGNvcnJlY3RuZXNzIG9uY2UgaXQgaGFzIGJlZW4gY29tcGls ZWQKLS1ieSBlbGltaW5hdGluZyB0eXBlIG1pc21hdGNoZXMsIGFuZCBwcm92aWRpbmcgYWN0aXZl IGNoZWNrcyBmb3IgcmFuZ2UKLStieSBlbGltaW5hdGluZyB0eXBlIG1pc21hdGNoZXMgYW5kIHBy b3ZpZGluZyBhY3RpdmUgY2hlY2tzIGZvciByYW5nZQotIGVycm9ycyB3aGVuIHlvdXIgcHJvZ3Jh bSBpcyBydW5uaW5nLgotIAotLUB2YWx1ZXtHREJOfSBjYW4gY2hlY2sgZm9yIGNvbmRpdGlvbnMg bGlrZSB0aGUgYWJvdmUgaWYgeW91IHdpc2guCi0tQWx0aG91Z2ggQHZhbHVle0dEQk59IGRvZXMg bm90IGNoZWNrIHRoZSBzdGF0ZW1lbnRzIGluIHlvdXIgcHJvZ3JhbSwKLS1pdCBjYW4gY2hlY2sg ZXhwcmVzc2lvbnMgZW50ZXJlZCBkaXJlY3RseSBpbnRvIEB2YWx1ZXtHREJOfSBmb3IKLS1ldmFs dWF0aW9uIHZpYSB0aGUgQGNvZGV7cHJpbnR9IGNvbW1hbmQsIGZvciBleGFtcGxlLiAgQXMgd2l0 aCB0aGUKLS13b3JraW5nIGxhbmd1YWdlLCBAdmFsdWV7R0RCTn0gY2FuIGFsc28gZGVjaWRlIHdo ZXRoZXIgb3Igbm90IHRvIGNoZWNrCi0tYXV0b21hdGljYWxseSBiYXNlZCBvbiB5b3VyIHByb2dy YW0ncyBzb3VyY2UgbGFuZ3VhZ2UuCi0tQHhyZWZ7U3VwcG9ydGVkIExhbmd1YWdlcywgLFN1cHBv cnRlZCBMYW5ndWFnZXN9LCBmb3IgdGhlIGRlZmF1bHQKLS1zZXR0aW5ncyBvZiBzdXBwb3J0ZWQg bGFuZ3VhZ2VzLgotK0J5IGRlZmF1bHQgQHZhbHVle0dEQk59IGNoZWNrcyBmb3IgdGhlc2UgZXJy b3JzIGFjY29yZGluZyB0byB0aGUKLStydWxlcyBvZiB0aGUgY3VycmVudCBzb3VyY2UgbGFuZ3Vh Z2UuICBBbHRob3VnaCBAdmFsdWV7R0RCTn0gZG9lcyBub3QgY2hlY2sKLSt0aGUgc3RhdGVtZW50 cyBpbiB5b3VyIHByb2dyYW0sIGl0IGNhbiBjaGVjayBleHByZXNzaW9ucyBlbnRlcmVkIGRpcmVj dGx5Ci0raW50byBAdmFsdWV7R0RCTn0gZm9yIGV2YWx1YXRpb24gdmlhIHRoZSBAY29kZXtwcmlu dH0gY29tbWFuZCwgZm9yIGV4YW1wbGUuCi0gCi0gQG1lbnUKLSAqIFR5cGUgQ2hlY2tpbmc6OiAg ICAgICAgICAgICAgIEFuIG92ZXJ2aWV3IG9mIHR5cGUgY2hlY2tpbmcKLUBAIC0xMjY4Miw2OSAr MTI2NzEsNTEgQEAgc2V0dGluZ3Mgb2Ygc3VwcG9ydGVkIGxhbmd1YWdlcy4KLSBAbm9kZSBUeXBl IENoZWNraW5nCi0gQHN1YnNlY3Rpb24gQW4gT3ZlcnZpZXcgb2YgVHlwZSBDaGVja2luZwotIAot LVNvbWUgbGFuZ3VhZ2VzLCBzdWNoIGFzIE1vZHVsYS0yLCBhcmUgc3Ryb25nbHkgdHlwZWQsIG1l YW5pbmcgdGhhdCB0aGUKLStTb21lIGxhbmd1YWdlcywgc3VjaCBhcyBDIGFuZCBDQHR7Kyt9LCBh cmUgc3Ryb25nbHkgdHlwZWQsIG1lYW5pbmcgdGhhdCB0aGUKLSBhcmd1bWVudHMgdG8gb3BlcmF0 b3JzIGFuZCBmdW5jdGlvbnMgaGF2ZSB0byBiZSBvZiB0aGUgY29ycmVjdCB0eXBlLAotIG90aGVy d2lzZSBhbiBlcnJvciBvY2N1cnMuICBUaGVzZSBjaGVja3MgcHJldmVudCB0eXBlIG1pc21hdGNo Ci0gZXJyb3JzIGZyb20gZXZlciBjYXVzaW5nIGFueSBydW4tdGltZSBwcm9ibGVtcy4gIEZvciBl eGFtcGxlLAotIAotIEBzbWFsbGV4YW1wbGUKLS0xICsgMiBAcmVzdWx0e30gMwotK2ludCBrbGFz czo6bXlfbWV0aG9kKGNoYXIgKmIpIEB7IHJldHVybiAgYiA/IDEgOiAyOyBAfQotKwotKyhAdmFs dWV7R0RCUH0pIHByaW50IG9iai5teV9tZXRob2QgKDApCi0rJDEgPSAyCi0gQGV4ZGVudCBidXQK LS1AZXJyb3J7fSAxICsgMi4zCi0rKEB2YWx1ZXtHREJQfSkgcHJpbnQgb2JqLm15X21ldGhvZCAo MHgxMjM0KQotK0Nhbm5vdCByZXNvbHZlIG1ldGhvZCBrbGFzczo6bXlfbWV0aG9kIHRvIGFueSBv dmVybG9hZGVkIGluc3RhbmNlCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLS1UaGUgc2Vjb25kIGV4 YW1wbGUgZmFpbHMgYmVjYXVzZSB0aGUgQGNvZGV7Q0FSRElOQUx9IDEgaXMgbm90Ci0tdHlwZS1j b21wYXRpYmxlIHdpdGggdGhlIEBjb2Rle1JFQUx9IDIuMy4KLStUaGUgc2Vjb25kIGV4YW1wbGUg ZmFpbHMgYmVjYXVzZSBpbiBDQHR7Kyt9IHRoZSBpbnRlZ2VyIGNvbnN0YW50Ci0rQHNhbXB7MHgx MjM0fSBpcyBub3QgdHlwZS1jb21wYXRpYmxlIHdpdGggdGhlIHBvaW50ZXIgcGFyYW1ldGVyIHR5 cGUuCi0gCi0tRm9yIHRoZSBleHByZXNzaW9ucyB5b3UgdXNlIGluIEB2YWx1ZXtHREJOfSBjb21t YW5kcywgeW91IGNhbiB0ZWxsIHRoZQotLUB2YWx1ZXtHREJOfSB0eXBlIGNoZWNrZXIgdG8gc2tp cCBjaGVja2luZzsKLStGb3IgdGhlIGV4cHJlc3Npb25zIHlvdSB1c2UgaW4gQHZhbHVle0dEQk59 IGNvbW1hbmRzLCB5b3UgY2FuIHRlbGwKLStAdmFsdWV7R0RCTn0gdG8gbm90IGVuZm9yY2Ugc3Ry aWN0IHR5cGUgY2hlY2tpbmcgb3IKLSB0byB0cmVhdCBhbnkgbWlzbWF0Y2hlcyBhcyBlcnJvcnMg YW5kIGFiYW5kb24gdGhlIGV4cHJlc3Npb247Ci0tb3IgdG8gb25seSBpc3N1ZSB3YXJuaW5ncyB3 aGVuIHR5cGUgbWlzbWF0Y2hlcyBvY2N1ciwKLS1idXQgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24g YW55d2F5LiAgV2hlbiB5b3UgY2hvb3NlIHRoZSBsYXN0IG9mCi0tdGhlc2UsIEB2YWx1ZXtHREJO fSBldmFsdWF0ZXMgZXhwcmVzc2lvbnMgbGlrZSB0aGUgc2Vjb25kIGV4YW1wbGUgYWJvdmUsIGJ1 dAotLWFsc28gaXNzdWVzIGEgd2FybmluZy4KLStXaGVuIHR5cGUgY2hlY2tpbmcgaXMgZGlzYWJs ZWQsIEB2YWx1ZXtHREJOfSBzdWNjZXNzZnVsbHkgZXZhbHVhdGVzCi0rZXhwcmVzc2lvbnMgbGlr ZSB0aGUgc2Vjb25kIGV4YW1wbGUgYWJvdmUuCi0gCi0tRXZlbiBpZiB5b3UgdHVybiB0eXBlIGNo ZWNraW5nIG9mZiwgdGhlcmUgbWF5IGJlIG90aGVyIHJlYXNvbnMKLStFdmVuIGlmIHR5cGUgY2hl Y2tpbmcgaXMgb2ZmLCB0aGVyZSBtYXkgYmUgb3RoZXIgcmVhc29ucwotIHJlbGF0ZWQgdG8gdHlw ZSB0aGF0IHByZXZlbnQgQHZhbHVle0dEQk59IGZyb20gZXZhbHVhdGluZyBhbiBleHByZXNzaW9u LgotIEZvciBpbnN0YW5jZSwgQHZhbHVle0dEQk59IGRvZXMgbm90IGtub3cgaG93IHRvIGFkZCBh biBAY29kZXtpbnR9IGFuZAotIGEgQGNvZGV7c3RydWN0IGZvb30uICBUaGVzZSBwYXJ0aWN1bGFy IHR5cGUgZXJyb3JzIGhhdmUgbm90aGluZyB0byBkbwotLXdpdGggdGhlIGxhbmd1YWdlIGluIHVz ZSwgYW5kIHVzdWFsbHkgYXJpc2UgZnJvbSBleHByZXNzaW9ucywgc3VjaCBhcwotLXRoZSBvbmUg ZGVzY3JpYmVkIGFib3ZlLCB3aGljaCBtYWtlIGxpdHRsZSBzZW5zZSB0byBldmFsdWF0ZSBhbnl3 YXkuCi0tCi0tRWFjaCBsYW5ndWFnZSBkZWZpbmVzIHRvIHdoYXQgZGVncmVlIGl0IGlzIHN0cmlj dCBhYm91dCB0eXBlLiAgRm9yCi0taW5zdGFuY2UsIGJvdGggTW9kdWxhLTIgYW5kIEMgcmVxdWly ZSB0aGUgYXJndW1lbnRzIHRvIGFyaXRobWV0aWNhbAotLW9wZXJhdG9ycyB0byBiZSBudW1iZXJz LiAgSW4gQywgZW51bWVyYXRlZCB0eXBlcyBhbmQgcG9pbnRlcnMgY2FuIGJlCi0tcmVwcmVzZW50 ZWQgYXMgbnVtYmVycywgc28gdGhhdCB0aGV5IGFyZSB2YWxpZCBhcmd1bWVudHMgdG8gbWF0aGVt YXRpY2FsCi0tb3BlcmF0b3JzLiAgQHhyZWZ7U3VwcG9ydGVkIExhbmd1YWdlcywgLFN1cHBvcnRl ZCBMYW5ndWFnZXN9LCBmb3IgZnVydGhlcgotLWRldGFpbHMgb24gc3BlY2lmaWMgbGFuZ3VhZ2Vz LgotK3dpdGggdGhlIGxhbmd1YWdlIGluIHVzZSBhbmQgdXN1YWxseSBhcmlzZSBmcm9tIGV4cHJl c3Npb25zIHdoaWNoIG1ha2UKLStsaXR0bGUgc2Vuc2UgdG8gZXZhbHVhdGUgYW55d2F5LgotIAot LUB2YWx1ZXtHREJOfSBwcm92aWRlcyBzb21lIGFkZGl0aW9uYWwgY29tbWFuZHMgZm9yIGNvbnRy b2xsaW5nIHRoZSB0eXBlIGNoZWNrZXI6Ci0rQHZhbHVle0dEQk59IHByb3ZpZGVzIHNvbWUgYWRk aXRpb25hbCBjb21tYW5kcyBmb3IgY29udHJvbGxpbmcgdHlwZSBjaGVja2luZzoKLSAKLSBAa2lu ZGV4IHNldCBjaGVjayB0eXBlCi0gQGtpbmRleCBzaG93IGNoZWNrIHR5cGUKLSBAdGFibGUgQGNv ZGUKLS1AaXRlbSBzZXQgY2hlY2sgdHlwZSBhdXRvCi0tU2V0IHR5cGUgY2hlY2tpbmcgb24gb3Ig b2ZmIGJhc2VkIG9uIHRoZSBjdXJyZW50IHdvcmtpbmcgbGFuZ3VhZ2UuCi0tQHhyZWZ7U3VwcG9y dGVkIExhbmd1YWdlcywgLFN1cHBvcnRlZCBMYW5ndWFnZXN9LCBmb3IgdGhlIGRlZmF1bHQgc2V0 dGluZ3MgZm9yCi0tZWFjaCBsYW5ndWFnZS4KLS0KLSBAaXRlbSBzZXQgY2hlY2sgdHlwZSBvbgot IEBpdGVteCBzZXQgY2hlY2sgdHlwZSBvZmYKLS1TZXQgdHlwZSBjaGVja2luZyBvbiBvciBvZmYs IG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgc2V0dGluZyBmb3IgdGhlCi0tY3VycmVudCB3b3JraW5n IGxhbmd1YWdlLiAgSXNzdWUgYSB3YXJuaW5nIGlmIHRoZSBzZXR0aW5nIGRvZXMgbm90Ci0tbWF0 Y2ggdGhlIGxhbmd1YWdlIGRlZmF1bHQuICBJZiBhbnkgdHlwZSBtaXNtYXRjaGVzIG9jY3VyIGlu Ci0rU2V0IHN0cmljdCB0eXBlIGNoZWNraW5nIG9uIG9yIG9mZi4gIElmIGFueSB0eXBlIG1pc21h dGNoZXMgb2NjdXIgaW4KLSBldmFsdWF0aW5nIGFuIGV4cHJlc3Npb24gd2hpbGUgdHlwZSBjaGVj a2luZyBpcyBvbiwgQHZhbHVle0dEQk59IHByaW50cyBhCi0gbWVzc2FnZSBhbmQgYWJvcnRzIGV2 YWx1YXRpb24gb2YgdGhlIGV4cHJlc3Npb24uCi0gCi0tQGl0ZW0gc2V0IGNoZWNrIHR5cGUgd2Fy bgotLUNhdXNlIHRoZSB0eXBlIGNoZWNrZXIgdG8gaXNzdWUgd2FybmluZ3MsIGJ1dCB0byBhbHdh eXMgYXR0ZW1wdCB0bwotLWV2YWx1YXRlIHRoZSBleHByZXNzaW9uLiAgRXZhbHVhdGluZyB0aGUg ZXhwcmVzc2lvbiBtYXkgc3RpbGwKLS1iZSBpbXBvc3NpYmxlIGZvciBvdGhlciByZWFzb25zLiAg Rm9yIGV4YW1wbGUsIEB2YWx1ZXtHREJOfSBjYW5ub3QgYWRkCi0tbnVtYmVycyBhbmQgc3RydWN0 dXJlcy4KLS0KLS1AaXRlbSBzaG93IHR5cGUKLS1TaG93IHRoZSBjdXJyZW50IHNldHRpbmcgb2Yg dGhlIHR5cGUgY2hlY2tlciwgYW5kIHdoZXRoZXIgb3Igbm90IEB2YWx1ZXtHREJOfQotLWlzIHNl dHRpbmcgaXQgYXV0b21hdGljYWxseS4KLStAaXRlbSBzaG93IGNoZWNrIHR5cGUKLStTaG93IHRo ZSBjdXJyZW50IHNldHRpbmcgb2YgdHlwZSBjaGVja2luZyBhbmQgd2hldGhlciBAdmFsdWV7R0RC Tn0KLStpcyBlbmZvcmNpbmcgc3RyaWN0IHR5cGUgY2hlY2tpbmcgcnVsZXMuCi0gQGVuZCB0YWJs ZQotIAotIEBjaW5kZXggcmFuZ2UgY2hlY2tpbmcKLUBAIC0xMzE5NSw4ICsxMzE2Niw4IEBAIHNw ZWNpZmljYXRpb24uCi0gCi0gQGNpbmRleCBDIGFuZCBDQHR7Kyt9IGRlZmF1bHRzCi0gCi0tSWYg eW91IGFsbG93IEB2YWx1ZXtHREJOfSB0byBzZXQgdHlwZSBhbmQgcmFuZ2UgY2hlY2tpbmcgYXV0 b21hdGljYWxseSwgdGhleQotLWJvdGggZGVmYXVsdCB0byBAY29kZXtvZmZ9IHdoZW5ldmVyIHRo ZSB3b3JraW5nIGxhbmd1YWdlIGNoYW5nZXMgdG8KLStJZiB5b3UgYWxsb3cgQHZhbHVle0dEQk59 IHRvIHNldCByYW5nZSBjaGVja2luZyBhdXRvbWF0aWNhbGx5LCBpdAotK2RlZmF1bHRzIHRvIEBj b2Rle29mZn0gd2hlbmV2ZXIgdGhlIHdvcmtpbmcgbGFuZ3VhZ2UgY2hhbmdlcyB0bwotIEMgb3Ig Q0B0eysrfS4gIFRoaXMgaGFwcGVucyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgeW91IG9yIEB2YWx1 ZXtHREJOfQotIHNlbGVjdHMgdGhlIHdvcmtpbmcgbGFuZ3VhZ2UuCi0gCi1AQCAtMTMyMDcsMzcg KzEzMTc4LDE1IEBAIHRoZXNlIGZpbGVzLCBpdCBzZXRzIHRoZSB3b3JraW5nIGxhbmd1YWcKLSBA eHJlZntBdXRvbWF0aWNhbGx5LCAsSGF2aW5nIEB2YWx1ZXtHREJOfSBJbmZlciB0aGUgU291cmNl IExhbmd1YWdlfSwKLSBmb3IgZnVydGhlciBkZXRhaWxzLgotIAotLUBjIFR5cGUgY2hlY2tpbmcg aXMgKGEpIHByaW1hcmlseSBtb3RpdmF0ZWQgYnkgTW9kdWxhLTIsIGFuZCAoYikKLS1AYyB1bmlt cGxlbWVudGVkLiAgSWYgKGIpIGNoYW5nZXMsIGl0IG1pZ2h0IG1ha2Ugc2Vuc2UgdG8gbGV0IHRo aXMgbm9kZQotLUBjIGFwcGVhciBldmVuIGlmIE1vZC0yIGRvZXMgbm90LCBidXQgbWVhbndoaWxl IGlnbm9yZSBpdC4gcm9sYW5kIDE2anVsOTMuCi0tCi0gQG5vZGUgQyBDaGVja3MKLSBAc3Vic3Vi c2VjdGlvbiBDIGFuZCBDQHR7Kyt9IFR5cGUgYW5kIFJhbmdlIENoZWNrcwotIAotIEBjaW5kZXgg QyBhbmQgQ0B0eysrfSBjaGVja3MKLSAKLS1CeSBkZWZhdWx0LCB3aGVuIEB2YWx1ZXtHREJOfSBw YXJzZXMgQyBvciBDQHR7Kyt9IGV4cHJlc3Npb25zLCB0eXBlIGNoZWNraW5nCi0taXMgbm90IHVz ZWQuICBIb3dldmVyLCBpZiB5b3UgdHVybiB0eXBlIGNoZWNraW5nIG9uLCBAdmFsdWV7R0RCTn0K LS1jb25zaWRlcnMgdHdvIHZhcmlhYmxlcyB0eXBlIGVxdWl2YWxlbnQgaWY6Ci0tCi0tQGl0ZW1p emUgQGJ1bGxldAotLUBpdGVtCi0tVGhlIHR3byB2YXJpYWJsZXMgYXJlIHN0cnVjdHVyZWQgYW5k IGhhdmUgdGhlIHNhbWUgc3RydWN0dXJlLCB1bmlvbiwgb3IKLS1lbnVtZXJhdGVkIHRhZy4KLS0K LS1AaXRlbQotLVRoZSB0d28gdmFyaWFibGVzIGhhdmUgdGhlIHNhbWUgdHlwZSBuYW1lLCBvciB0 eXBlcyB0aGF0IGhhdmUgYmVlbgotLWRlY2xhcmVkIGVxdWl2YWxlbnQgdGhyb3VnaCBAY29kZXt0 eXBlZGVmfS4KLS0KLS1AaWdub3JlCi0tQGMgbGVhdmluZyB0aGlzIG91dCBiZWNhdXNlIG5laXRo ZXIgSiBHaWxtb3JlIG5vciBSIFBlc2NoIHVuZGVyc3RhbmQgaXQuCi0tQGMgRklYTUUtLWJlZXJz PwotLUBpdGVtCi0tVGhlIHR3byBAY29kZXtzdHJ1Y3R9LCBAY29kZXt1bmlvbn0sIG9yIEBjb2Rl e2VudW19IHZhcmlhYmxlcyBhcmUKLS1kZWNsYXJlZCBpbiB0aGUgc2FtZSBkZWNsYXJhdGlvbi4g IChOb3RlOiB0aGlzIG1heSBub3QgYmUgdHJ1ZSBmb3IgYWxsIEMKLS1jb21waWxlcnMuKQotLUBl bmQgaWdub3JlCi0tQGVuZCBpdGVtaXplCi0rQnkgZGVmYXVsdCwgd2hlbiBAdmFsdWV7R0RCTn0g cGFyc2VzIEMgb3IgQ0B0eysrfSBleHByZXNzaW9ucywgc3RyaWN0IHR5cGUKLStjaGVja2luZyBp cyB1c2VkLiAgSG93ZXZlciwgaWYgeW91IHR1cm4gdHlwZSBjaGVja2luZyBvZmYsIEB2YWx1ZXtH REJOfQotK3dpbGwgYWxsb3cgY2VydGFpbiBub24tc3RhbmRhcmQgY29udmVyc2lvbnMsIHN1Y2gg YXMgcHJvbW90aW5nIGludGVnZXIKLStjb25zdGFudHMgdG8gcG9pbnRlcnMuCi0gCi0gUmFuZ2Ug Y2hlY2tpbmcsIGlmIHR1cm5lZCBvbiwgaXMgZG9uZSBvbiBtYXRoZW1hdGljYWwgb3BlcmF0aW9u cy4gIEFycmF5Ci0gaW5kaWNlcyBhcmUgbm90IGNoZWNrZWQsIHNpbmNlIHRoZXkgYXJlIG9mdGVu IHVzZWQgdG8gaW5kZXggYSBwb2ludGVyCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAu MjAxMjA5MjYub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2RlZmF1bHQuZXhwCTIwMTItMDQt MjcgMjI6NTI6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAJMjAxMi0wOS0yNyAyMjoxNDo0MS4zMTI2OTUz MzMgKzAyMDAKLUBAIC00OTUsMTIgKzQ5NSwxMyBAQCBnZGJfdGVzdCAic2VjdGlvbiIgIk11c3Qg c3BlY2lmeSBzZWN0aW9uCi0gZ2RiX3Rlc3QgInNldCBhbm5vdGF0ZSIgIkFyZ3VtZW50IHJlcXVp cmVkIC5pbnRlZ2VyIHRvIHNldCBpdCB0by4qIiAic2V0IGFubm90YXRlIgotICN0ZXN0IHNldCBh cmdzCi0gZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXJncyIgInNldCBhcmdzIgotLSN0ZXN0IHNl dCBjaGVjayAiYyIgYWJicmV2aWF0aW9uCi0tZ2RiX3Rlc3QgInNldCBjIiAiXCJzZXQgY2hlY2tc IiBtdXN0IGJlIGZvbGxvd2VkIGJ5IHRoZSBuYW1lIG9mIGEgY2hlY2sgc3ViY29tbWFuZC4oXFte XHJcblxdKlxbXHJcblxdKStMaXN0IG9mIHNldCBjaGVjayBzdWJjb21tYW5kczooXFteXHJcblxd KlxbXHJcblxdKStzZXQgY2hlY2sgcmFuZ2UgLS0gU2V0IHJhbmdlIGNoZWNraW5nKFxbXlxyXG5c XSpcW1xyXG5cXSkrc2V0IGNoZWNrIHR5cGUgLS0gU2V0IHR5cGUgY2hlY2tpbmcoXFteXHJcblxd KlxbXHJcblxdKStUeXBlIFwiaGVscCBzZXQgY2hlY2tcIiBmb2xsb3dlZCBieSBzZXQgY2hlY2sg c3ViY29tbWFuZCBuYW1lIGZvciBmdWxsIGRvY3VtZW50YXRpb24uKFxbXlxyXG5cXSpcW1xyXG5c XSkrQ29tbWFuZCBuYW1lIGFiYnJldmlhdGlvbnMgYXJlIGFsbG93ZWQgaWYgdW5hbWJpZ3VvdXMu IiAic2V0IGNoZWNrIFwiY1wiIGFiYnJldmlhdGlvbiIKLS0jdGVzdCBzZXQgY2hlY2sgImNoIiBh YmJyZXZpYXRpb24KLS1nZGJfdGVzdCAic2V0IGNoIiAiXCJzZXQgY2hlY2tcIiBtdXN0IGJlIGZv bGxvd2VkIGJ5IHRoZSBuYW1lIG9mIGEgY2hlY2sgc3ViY29tbWFuZC4oXFteXHJcblxdKlxbXHJc blxdKStMaXN0IG9mIHNldCBjaGVjayBzdWJjb21tYW5kczooXFteXHJcblxdKlxbXHJcblxdKStz ZXQgY2hlY2sgcmFuZ2UgLS0gU2V0IHJhbmdlIGNoZWNraW5nKFxbXlxyXG5cXSpcW1xyXG5cXSkr c2V0IGNoZWNrIHR5cGUgLS0gU2V0IHR5cGUgY2hlY2tpbmcoXFteXHJcblxdKlxbXHJcblxdKStU eXBlIFwiaGVscCBzZXQgY2hlY2tcIiBmb2xsb3dlZCBieSBzZXQgY2hlY2sgc3ViY29tbWFuZCBu YW1lIGZvciBmdWxsIGRvY3VtZW50YXRpb24uKFxbXlxyXG5cXSpcW1xyXG5cXSkrQ29tbWFuZCBu YW1lIGFiYnJldmlhdGlvbnMgYXJlIGFsbG93ZWQgaWYgdW5hbWJpZ3VvdXMuIiAic2V0IGNoZWNr IFwiY2hcIiBhYmJyZXZpYXRpb24iCi0tI3Rlc3Qgc2V0IGNoZWNrCi0tZ2RiX3Rlc3QgInNldCBj aGVjayIgIlwic2V0IGNoZWNrXCIgbXVzdCBiZSBmb2xsb3dlZCBieSB0aGUgbmFtZSBvZiBhIGNo ZWNrIHN1YmNvbW1hbmQuKFxbXlxyXG5cXSpcW1xyXG5cXSkrTGlzdCBvZiBzZXQgY2hlY2sgc3Vi Y29tbWFuZHM6KFxbXlxyXG5cXSpcW1xyXG5cXSkrc2V0IGNoZWNrIHJhbmdlIC0tIFNldCByYW5n ZSBjaGVja2luZyhcW15cclxuXF0qXFtcclxuXF0pK3NldCBjaGVjayB0eXBlIC0tIFNldCB0eXBl IGNoZWNraW5nKFxbXlxyXG5cXSpcW1xyXG5cXSkrVHlwZSBcImhlbHAgc2V0IGNoZWNrXCIgZm9s bG93ZWQgYnkgc2V0IGNoZWNrIHN1YmNvbW1hbmQgbmFtZSBmb3IgZnVsbCBkb2N1bWVudGF0aW9u LihcW15cclxuXF0qXFtcclxuXF0pK0NvbW1hbmQgbmFtZSBhYmJyZXZpYXRpb25zIGFyZSBhbGxv d2VkIGlmIHVuYW1iaWd1b3VzLiIgInNldCBjaGVjayIKLSsKLSsjIFRlc3Qgc2V0IGNoZWNrIGFi YnJldmlhdGlvbnMKLStmb3JlYWNoIHggeyJjIiAiY2giICJjaGVjayJ9IHsKLSsgICAgZ2RiX3Rl c3QgInNldCAkeCIgIlwic2V0IGNoZWNrXCIgbXVzdCBiZSBmb2xsb3dlZCBieSB0aGUgbmFtZSBv ZiBhIGNoZWNrIHN1YmNvbW1hbmQuKFxbXlxyXG5cXSpcW1xyXG5cXSkrTGlzdCBvZiBzZXQgY2hl Y2sgc3ViY29tbWFuZHM6KFxbXlxyXG5cXSpcW1xyXG5cXSkrc2V0IGNoZWNrIHJhbmdlIC0tIFNl dCByYW5nZSBjaGVja2luZyhcW15cclxuXF0qXFtcclxuXF0pK3NldCBjaGVjayB0eXBlIC0tIFNl dCBzdHJpY3QgdHlwZSBjaGVja2luZyhcW15cclxuXF0qXFtcclxuXF0pK1R5cGUgXCJoZWxwIHNl dCBjaGVja1wiIGZvbGxvd2VkIGJ5IHNldCBjaGVjayBzdWJjb21tYW5kIG5hbWUgZm9yIGZ1bGwg ZG9jdW1lbnRhdGlvbi4oXFteXHJcblxdKlxbXHJcblxdKStDb21tYW5kIG5hbWUgYWJicmV2aWF0 aW9ucyBhcmUgYWxsb3dlZCBpZiB1bmFtYmlndW91cy4iIFwKLSsJInNldCBjaGVjayBcIiR4XCIg YWJicmV2aWF0aW9uIgotK30KLSsKLSAjdGVzdCBzZXQgY2hlY2sgcmFuZ2UKLSBnZGJfdGVzdCAi c2V0IGNoZWNrIHJhbmdlIiAiLioiICJzZXQgY2hlY2sgcmFuZ2UiCi0gI3Rlc3Qgc2V0IGNoZWNr IHR5cGUKLUBAIC01NzcsMTYgKzU3OCwxNyBAQCBnZGJfdGVzdCAic2hlbGwgZWNobyBIaSBkYWQh IiAiSGkgZGFkISIKLSBnZGJfdGVzdCAic2hvdyBhbm5vdGF0ZSIgIkFubm90YXRpb25fbGV2ZWwg aXMgMC4iIAkgInNob3cgYW5ub3RhdGUiCi0gI3Rlc3Qgc2hvdyBhcmdzCi0gZ2RiX3Rlc3QgInNo b3cgYXJncyIgIkFyZ3VtZW50IGxpc3QgdG8gZ2l2ZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIHdo ZW4gaXQgaXMgc3RhcnRlZCBpcyBcIlwiLiIgInNob3cgYXJncyIKLS0jdGVzdCBzaG93IGNoZWNr ICJjIiBhYmJyZXZpYXRpb24KLS1nZGJfdGVzdCAic2hvdyBjIiAicmFuZ2U6ICAqUmFuZ2UgY2hl Y2tpbmcgaXMgXCJhdXRvOyBjdXJyZW50bHkgb2ZmXCIuKFxbXlxyXG5cXSpcW1xyXG5cXSkrdHlw ZTogICpUeXBlIGNoZWNraW5nIGlzIFwiYXV0bzsgY3VycmVudGx5IG9mZlwiLioiICJzaG93IGNo ZWNrIFwiY1wiIGFiYnJldmlhdGlvbiIKLS0jdGVzdCBzaG93IGNoZWNrICJjaCIgYWJicmV2aWF0 aW9uCi0tZ2RiX3Rlc3QgInNob3cgY2giICJyYW5nZTogKlJhbmdlIGNoZWNraW5nIGlzIFwiYXV0 bzsgY3VycmVudGx5IG9mZlwiLihcW15cclxuXF0qXFtcclxuXF0pK3R5cGU6ICAqVHlwZSBjaGVj a2luZyBpcyBcImF1dG87IGN1cnJlbnRseSBvZmZcIi4iICJzaG93IGNoZWNrIFwiY2hcIiBhYmJy ZXZpYXRpb24iCi0tI3Rlc3Qgc2hvdyBjaGVjawotLWdkYl90ZXN0ICJzaG93IGNoZWNrIiAicmFu Z2U6ICAqUmFuZ2UgY2hlY2tpbmcgaXMgXCJhdXRvOyBjdXJyZW50bHkgb2ZmXCIuKFxbXlxyXG5c XSpcW1xyXG5cXSkrdHlwZTogICpUeXBlIGNoZWNraW5nIGlzIFwiYXV0bzsgY3VycmVudGx5IG9m ZlwiLiIgInNob3cgY2hlY2siCi0rCi0rIyB0ZXN0IHNob3cgY2hlY2sgYWJicmV2aWF0aW9ucwot K2ZvcmVhY2ggeCB7ImMiICJjaCIgImNoZWNrIn0gewotKyAgICBnZGJfdGVzdCAic2hvdyAkeCIg InJhbmdlOiAgKlJhbmdlIGNoZWNraW5nIGlzIFwiYXV0bzsgY3VycmVudGx5IG9mZlwiLihcW15c clxuXF0qXFtcclxuXF0pK3R5cGU6ICAqU3RyaWN0IHR5cGUgY2hlY2tpbmcgaXMgb25cLi4qIiBc Ci0rCSJzaG93IGNoZWNrIFwiJHhcIiBhYmJyZXZpYXRpb24iCi0rfQotKwotICN0ZXN0IHNob3cg Y2hlY2sgcmFuZ2UKLSBnZGJfdGVzdCAic2hvdyBjaGVjayByYW5nZSIgIlJhbmdlIGNoZWNraW5n IGlzIFwiYXV0bzsgY3VycmVudGx5IG9mZlwiLiIgInNob3cgY2hlY2sgcmFuZ2UiCi0gI3Rlc3Qg c2hvdyBjaGVjayB0eXBlCi0tZ2RiX3Rlc3QgInNob3cgY2hlY2sgdHlwZSIgIlR5cGUgY2hlY2tp bmcgaXMgXCJhdXRvOyBjdXJyZW50bHkgb2ZmXCIuIiAic2hvdyBjaGVjayB0eXBlIgotK2dkYl90 ZXN0ICJzaG93IGNoZWNrIHR5cGUiICJTdHJpY3QgdHlwZSBjaGVja2luZyBpcyBvblwuIiAic2hv dyBjaGVjayB0eXBlIgotICN0ZXN0IHNob3cgY29tbWFuZHMKLSBnZGJfdGVzdCAic2hvdyBjb21t YW5kcyIgIi4qIiAic2hvdyBjb21tYW5kcyIKLSAjdGVzdCBzaG93IGNvbXBsYWludHMKLUluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvaGVscC5leHAJMjAxMi0wNy0wMiAxOTo1MzoxOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAkyMDEyLTA5LTI3 IDIyOjE0OjQxLjMxNTY5NTMzMyArMDIwMAotQEAgLTM3NiwyMiArMzc2LDI2IEBAIGdkYl90ZXN0 ICJoZWxwIHNlY3Rpb24iICJDaGFuZ2UgdGhlIGJhc2UKLSBnZGJfdGVzdCAiaGVscCBzZXQgYW5u b3RhdGUiICJTZXQgYW5ub3RhdGlvbl9sZXZlbFwuXFtcclxuXF0rMCA9PSBub3JtYWw7ICAgICAx ID09IGZ1bGxuYW1lIFxcKGZvciB1c2Ugd2hlbiBydW5uaW5nIHVuZGVyIGVtYWNzXFwpXFtcclxu XF0rMiA9PSBvdXRwdXQgYW5ub3RhdGVkIHN1aXRhYmx5IGZvciB1c2UgYnkgcHJvZ3JhbXMgdGhh dCBjb250cm9sIEdEQlwuIiAiaGVscCBzZXQgYW5ub3RhdGUiCi0gIyB0ZXN0IGhlbHAgc2V0IGFy Z3MKLSBnZGJfdGVzdCAiaGVscCBzZXQgYXJncyIgIlNldCBhcmd1bWVudCBsaXN0IHRvIGdpdmUg cHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCB3aGVuIGl0IGlzIHN0YXJ0ZWRcLlxbXHJcblxdK0ZvbGxv dyB0aGlzIGNvbW1hbmQgd2l0aCBhbnkgbnVtYmVyIG9mIGFyZ3MsIHRvIGJlIHBhc3NlZCB0byB0 aGUgcHJvZ3JhbVwuIgotLSMgdGVzdCBoZWxwIHNldCBjaGVjayAiYyIgYWJicmV2aWF0aW9uCi0t dGVzdF9wcmVmaXhfY29tbWFuZF9oZWxwIHsic2V0IGMiICJzZXQgY2hlY2sifSB7Ci0tICAgICJT ZXQgdGhlIHN0YXR1cyBvZiB0aGUgdHlwZS9yYW5nZSBjaGVja2VyXC5cW1xyXG5cXSsiCi0tfSAi aGVscCBzZXQgY2hlY2sgXCJjXCIgYWJicmV2aWF0aW9uIgotLSMgdGVzdCBoZWxwIHNldCBjaGVj ayAiY2giIGFiYnJldmlhdGlvbgotLXRlc3RfcHJlZml4X2NvbW1hbmRfaGVscCB7InNldCBjaCIg InNldCBjaGVjayJ9IHsKLS0gICAgIlNldCB0aGUgc3RhdHVzIG9mIHRoZSB0eXBlL3JhbmdlIGNo ZWNrZXJcLlxbXHJcblxdKyIKLS19ICJoZWxwIHNldCBjaGVjayBcImNoXCIgYWJicmV2aWF0aW9u IgotLSMgdGVzdCBoZWxwIHNldCBjaGVjawotKwotKyMgVGVzdCBoZWxwIHNldCBjaGVjayBhYmJy ZXZpYXRpb25zCi0rZm9yZWFjaCB4IHsiYyIgImNoIn0gewotKyAgICB0ZXN0X3ByZWZpeF9jb21t YW5kX2hlbHAgW2xpc3QgInNldCAkeCIgInNldCBjaGVjayJdIHsKLSsJIlNldCB0aGUgc3RhdHVz IG9mIHRoZSB0eXBlL3JhbmdlIGNoZWNrZXJcLlxbXHJcblxdKyIKLSsgICAgfSAiaGVscCBzZXQg Y2hlY2sgXCIkeFwiIGFiYnJldmlhdGlvbiIKLSt9Ci0rCi0rIyBUZXN0IGhlbHAgc2V0IGNoZWNr Ci0gdGVzdF9wcmVmaXhfY29tbWFuZF9oZWxwIHsic2V0IGNoZWNrIn0gewotICAgICAiU2V0IHRo ZSBzdGF0dXMgb2YgdGhlIHR5cGUvcmFuZ2UgY2hlY2tlclwuXFtcclxuXF0rIgotIH0KLSsKLSAj IHRlc3QgaGVscCBzZXQgY2hlY2sgcmFuZ2UKLSBnZGJfdGVzdCAiaGVscCBzZXQgY2hlY2sgcmFu Z2UiICJTZXQgcmFuZ2UgY2hlY2tpbmdcLiAgXFwob24vd2Fybi9vZmYvYXV0b1xcKSIgImhlbHAg c2V0IGNoZWNrIHJhbmdlIgotLSMgdGVzdCBoZWxwIHNldCBjaGVjayB0eXBlCi0tZ2RiX3Rlc3Qg ImhlbHAgc2V0IGNoZWNrIHR5cGUiICJTZXQgdHlwZSBjaGVja2luZ1wuICBcXChvbi93YXJuL29m Zi9hdXRvXFwpLiIgImhlbHAgc2V0IGNoZWNrIHR5cGUiCi0rCi0rIyBUZXN0IGhlbHAgc2V0IGNo ZWNrIHR5cGUKLStnZGJfdGVzdCAiaGVscCBzZXQgY2hlY2sgdHlwZSIgIlNldCBzdHJpY3QgdHlw ZSBjaGVja2luZ1wuIiBcCi0rICAgICJoZWxwIHNldCBjaGVjayB0eXBlIgotKwotICMgdGVzdCBo ZWxwIHNldCBjb21wbGFpbnRzCi0gZ2RiX3Rlc3QgImhlbHAgc2V0IGNvbXBsYWludHMiICJTZXQg bWF4IG51bWJlciBvZiBjb21wbGFpbnRzIGFib3V0IGluY29ycmVjdCBzeW1ib2xzXC4iICJoZWxw IHNldCBjb21wbGFpbnRzIgotICMgdGVzdCBoZWxwIHNldCBjb25maXJtCi1AQCAtNDg3LDE4ICs0 OTEsMjUgQEAgZ2RiX3Rlc3QgImhlbHAgc2hlbGwiICJFeGVjdXRlIHRoZSByZXN0Ci0gZ2RiX3Rl c3QgImhlbHAgc2hvdyBhbm5vdGF0ZSIgIlNob3cgYW5ub3RhdGlvbl9sZXZlbFwuXFtcclxuXF0r MCA9PSBub3JtYWw7ICAgICAxID09IGZ1bGxuYW1lIFxcKGZvciB1c2Ugd2hlbiBydW5uaW5nIHVu ZGVyIGVtYWNzXFwpXFtcclxuXF0rMiA9PSBvdXRwdXQgYW5ub3RhdGVkIHN1aXRhYmx5IGZvciB1 c2UgYnkgcHJvZ3JhbXMgdGhhdCBjb250cm9sIEdEQlwuIiAiaGVscCBzaG93IGFubm90YXRlIgot ICMgdGVzdCBoZWxwIHNob3cgYXJncwotIGdkYl90ZXN0ICJoZWxwIHNob3cgYXJncyIgIlNob3cg YXJndW1lbnQgbGlzdCB0byBnaXZlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgd2hlbiBpdCBpcyBz dGFydGVkXC5cW1xyXG5cXStGb2xsb3cgdGhpcyBjb21tYW5kIHdpdGggYW55IG51bWJlciBvZiBh cmdzLCB0byBiZSBwYXNzZWQgdG8gdGhlIHByb2dyYW1cLiIKLS0jIHRlc3QgaGVscCBzaG93IGNo ZWNrICJjIiBhYmJyZXZpYXRpb24KLS10ZXN0X3ByZWZpeF9jb21tYW5kX2hlbHAgeyJzaG93IGMi ICJzaG93IGNoZWNrIn0gewotLSAgICAiU2hvdyB0aGUgc3RhdHVzIG9mIHRoZSB0eXBlL3Jhbmdl IGNoZWNrZXJcLlxbXHJcblxdKyIKLS19ICJoZWxwIHNob3cgY2hlY2sgXCJjXCIgYWJicmV2aWF0 aW9uIgotKwotKyMgVGVzdCBoZWxwIHNob3cgY2hlY2sgYWJicmV2aWF0aW9ucwotK2ZvcmVhY2gg eCB7ImMiICJjaGVjayJ9IHsKLSsgICAgdGVzdF9wcmVmaXhfY29tbWFuZF9oZWxwIFtsaXN0ICJz aG93ICR4IiAic2hvdyBjaGVjayJdIHsKLSsJIlNob3cgdGhlIHN0YXR1cyBvZiB0aGUgdHlwZS9y YW5nZSBjaGVja2VyXC5cW1xyXG5cXSsiCi0rICAgIH0gImhlbHAgc2hvdyBjaGVjayBcIiR4XCIg YWJicmV2aWF0aW9uIgotK30KLSsKLSAjIHRlc3QgaGVscCBzaG93IGNoZWNrCi0gdGVzdF9wcmVm aXhfY29tbWFuZF9oZWxwIHsic2hvdyBjaGVjayJ9IHsKLSAgICAgIlNob3cgdGhlIHN0YXR1cyBv ZiB0aGUgdHlwZS9yYW5nZSBjaGVja2VyXC5cW1xyXG5cXSsiCi0gfQotICMgdGVzdCBoZWxwIHNo b3cgY2hlY2sgcmFuZ2UKLSBnZGJfdGVzdCAiaGVscCBzaG93IGNoZWNrIHJhbmdlIiAiU2hvdyBy YW5nZSBjaGVja2luZ1wuICBcXChvbi93YXJuL29mZi9hdXRvXFwpIiAiaGVscCBzaG93IGNoZWNr IHJhbmdlIgotKwotICMgdGVzdCBoZWxwIHNob3cgY2hlY2sgdHlwZQotLWdkYl90ZXN0ICJoZWxw IHNob3cgY2hlY2sgdHlwZSIgIlNob3cgdHlwZSBjaGVja2luZ1wuICBcXChvbi93YXJuL29mZi9h dXRvXFwpIiAiaGVscCBzaG93IGNoZWNrIHR5cGUiCi0rZ2RiX3Rlc3QgImhlbHAgc2hvdyBjaGVj ayB0eXBlIiAiU2hvdyBzdHJpY3QgdHlwZSBjaGVja2luZ1wuIiBcCi0rICAgICJoZWxwIHNob3cg Y2hlY2sgdHlwZSIKLSsKLSAjIHRlc3QgaGVscCBzaG93IGNvbW1hbmRzCi0gZ2RiX3Rlc3QgImhl bHAgc2hvdyBjb21tYW5kcyIgIlNob3cgdGhlIGhpc3Rvcnkgb2YgY29tbWFuZHMgeW91IHR5cGVk XC5cW1xyXG5cXStZb3UgY2FuIHN1cHBseSBhIGNvbW1hbmQgbnVtYmVyIHRvIHN0YXJ0IHdpdGgs IG9yIGEgYFxbK1xdJyB0byBzdGFydCBhZnRlclxbXHJcblxdK3RoZSBwcmV2aW91cyBjb21tYW5k IG51bWJlciBzaG93blwuIiAiaGVscCBzaG93IGNvbW1hbmRzIgotICMgdGVzdCBoZWxwIHNob3cg Y29tcGxhaW50cwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3NldHNob3cuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zZXRzaG93LmV4cAkyMDEyLTAzLTEzIDIyOjAyOjQwLjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3NldHNob3cuZXhwCTIwMTItMDktMjcgMjI6MTQ6NDEuMzIwNjk1MzM2ICswMjAwCi1AQCAt MTEwLDE5ICsxMTAsMjIgQEAgZ2RiX3Rlc3QgInNob3cgY2hlY2sgcmFuZ2UiICJSYW5nZSBjaGVj awotICN0ZXN0IHNldCBjaGVjayByYW5nZSBhdXRvCi0gZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQg Y2hlY2sgcmFuZ2UgYXV0byIgInNldCBjaGVjayByYW5nZSBhdXRvIiAKLSAjdGVzdCBzaG93IGNo ZWNrIHJhbmdlIGF1dG8KLS1nZGJfdGVzdCAic2hvdyBjaGVjayByYW5nZSIgIlJhbmdlIGNoZWNr aW5nIGlzIFwiYXV0bzsgY3VycmVudGx5IC4qIiAic2hvdyBjaGVjayByYW5nZSAoYXV0bykiIAot LSN0ZXN0IHNldCBjaGVjayB0eXBlIG9uCi0tZ2RiX3Rlc3QgInNldCBjaGVjayB0eXBlIG9uIiAi LioiICJzZXQgY2hlY2sgdHlwZSBvbiIgCi0tI3Rlc3Qgc2hvdyBjaGVjayB0eXBlIG9uCi0tZ2Ri X3Rlc3QgInNob3cgY2hlY2sgdHlwZSIgIlR5cGUgY2hlY2tpbmcgaXMgXCJvblwiLi4qIiAic2hv dyBjaGVjayB0eXBlIChvbikiIAotLSN0ZXN0IHNldCBjaGVjayB0eXBlIG9mZiB3aXRoIHRyYWls aW5nIHNwYWNlCi0tZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgY2hlY2sgdHlwZSBvZmYgIiAic2V0 IGNoZWNrIHR5cGUgb2ZmIiAKLS0jdGVzdCBzaG93IGNoZWNrIHR5cGUgb2ZmCi0tZ2RiX3Rlc3Qg InNob3cgY2hlY2sgdHlwZSIgIlR5cGUgY2hlY2tpbmcgaXMgXCJvZmZcIi4uKiIgInNob3cgY2hl Y2sgdHlwZSAob2ZmKSIgCi0tI3Rlc3Qgc2V0IGNoZWNrIHR5cGUgYXV0bwotLWdkYl90ZXN0X25v X291dHB1dCAic2V0IGNoZWNrIHR5cGUgYXV0byIgInNldCBjaGVjayB0eXBlIGF1dG8iIAotLSN0 ZXN0IHNob3cgY2hlY2sgdHlwZQotLWdkYl90ZXN0ICJzaG93IGNoZWNrIHR5cGUiICJUeXBlIGNo ZWNraW5nIGlzIFwiYXV0bzsgY3VycmVudGx5IC4qIiAic2hvdyBjaGVjayB0eXBlIChhdXRvKSIg Ci0rZ2RiX3Rlc3QgInNob3cgY2hlY2sgcmFuZ2UiICJSYW5nZSBjaGVja2luZyBpcyBcImF1dG87 IGN1cnJlbnRseSAuKiIgInNob3cgY2hlY2sgcmFuZ2UgKGF1dG8pIgotKwotKyMgVGVzdCBzZXQg Y2hlY2sgdHlwZSBvbgotK2dkYl90ZXN0ICJzZXQgY2hlY2sgdHlwZSBvbiIgIi4qIiAic2V0IGNo ZWNrIHR5cGUgb24iCi0rCi0rIyBUZXN0IHNob3cgY2hlY2sgdHlwZSBvbgotK2dkYl90ZXN0ICJz aG93IGNoZWNrIHR5cGUiICJTdHJpY3QgdHlwZSBjaGVja2luZyBpcyBvblwuLioiIFwKLSsgICAg InNob3cgY2hlY2sgdHlwZSAob24pIgotKwotKyMgVGVzdCBzZXQgY2hlY2sgdHlwZSBvZmYgd2l0 aCB0cmFpbGluZyBzcGFjZQotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGNoZWNrIHR5cGUgb2Zm ICIgInNldCBjaGVjayB0eXBlIG9mZiIKLSsKLSsjIFRlc3Qgc2hvdyBjaGVjayB0eXBlIG9mZgot K2dkYl90ZXN0ICJzaG93IGNoZWNrIHR5cGUiICJTdHJpY3QgdHlwZSBjaGVja2luZyBpcyBvZmZc Li4qIiBcCi0rICAgICJzaG93IGNoZWNrIHR5cGUgKG9mZikiCi0rCi0gI3Rlc3Qgc2V0IGNvbXBs YWludHMgMTAwCi0gZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgY29tcGxhaW50cyAxMDAiICJzZXQg Y29tcGxhaW50cyAxMDAiIAotICN0ZXN0IHNob3cgY29tcGxhaW50cyAxMDAKLUluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY29udmVydHMuZXhwCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY29u dmVydHMuZXhwCTIwMTItMDctMTAgMTc6MTg6MTguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NvbnZlcnRzLmV4cAkyMDEyLTA5LTI3 IDIyOjE0OjQxLjMyMTY5NTMzNyArMDIwMAotQEAgLTcwLDkgKzcwLDM3IEBAIGdkYl90ZXN0X211 bHRpcGxlICJwIGZvbzNfMSAoMCwgMCkiICR0IHsKLSAgICAgcGFzcyAkdAotICAgfQotIH0KLSsK LSBnZGJfdGVzdCAicCBmb28zXzEgKDAsIDEpIiBcCi0gICAgICJDYW5ub3QgcmVzb2x2ZSBmdW5j dGlvbiBmb28zXzEgdG8gYW55IG92ZXJsb2FkZWQgaW5zdGFuY2UiCi0gZ2RiX3Rlc3QgInAgZm9v M18xICgwLCAoY29uc3QgY2hhcioqKSAxKSIgIiA9IDMxIgotIGdkYl90ZXN0ICJwIGZvbzNfMiAo MCwgMCkiICI9IDMyIgotIGdkYl90ZXN0ICJwIGZvbzNfMiAoMCwgKGNoYXIgY29uc3QqKikgMCki ICIgPSAzMjAiCi0gCi0rIyBUZXN0IGZvciBzdHJpY3QgdHlwZSBjaGVja2luZwotK3NldCBlcnJv cl9zdHIgIkNhbm5vdCByZXNvbHZlIGZ1bmN0aW9uICVzIHRvIGFueSBvdmVybG9hZGVkIGluc3Rh bmNlIgotK2dkYl90ZXN0ICJzaG93IGNoZWNrIHR5cGUiICJTdHJpY3QgdHlwZSBjaGVja2luZyBp cyBvblwuIgotK2dkYl90ZXN0ICJwIGZvbzFfdHlwZV9jaGVjayAoMTIzKSIgW2Zvcm1hdCAkZXJy b3Jfc3RyICJmb28xX3R5cGVfY2hlY2siXQotK2dkYl90ZXN0ICJwIGZvbzJfdHlwZV9jaGVjayAo MCwgMSkiIFtmb3JtYXQgJGVycm9yX3N0ciAiZm9vMl90eXBlX2NoZWNrIl0KLStnZGJfdGVzdCAi cCBmb28yX3R5cGVfY2hlY2sgKDEsIDApIiBbZm9ybWF0ICRlcnJvcl9zdHIgImZvbzJfdHlwZV9j aGVjayJdCi0rZ2RiX3Rlc3QgInAgZm9vMl90eXBlX2NoZWNrICgxLCAxKSIgW2Zvcm1hdCAkZXJy b3Jfc3RyICJmb28yX3R5cGVfY2hlY2siXQotK2dkYl90ZXN0ICJwIGZvbzNfdHlwZV9jaGVjayAo MCwgMCwgMSkiIFtmb3JtYXQgJGVycm9yX3N0ciAiZm9vM190eXBlX2NoZWNrIl0KLStnZGJfdGVz dCAicCBmb28zX3R5cGVfY2hlY2sgKDAsIDEsIDApIiBbZm9ybWF0ICRlcnJvcl9zdHIgImZvbzNf dHlwZV9jaGVjayJdCi0rZ2RiX3Rlc3QgInAgZm9vM190eXBlX2NoZWNrICgxLCAwLCAwKSIgW2Zv cm1hdCAkZXJyb3Jfc3RyICJmb28zX3R5cGVfY2hlY2siXQotK2dkYl90ZXN0ICJwIGZvbzNfdHlw ZV9jaGVjayAoMCwgMSwgMSkiIFtmb3JtYXQgJGVycm9yX3N0ciAiZm9vM190eXBlX2NoZWNrIl0K LStnZGJfdGVzdCAicCBmb28zX3R5cGVfY2hlY2sgKDEsIDEsIDApIiBbZm9ybWF0ICRlcnJvcl9z dHIgImZvbzNfdHlwZV9jaGVjayJdCi0rZ2RiX3Rlc3QgInAgZm9vM190eXBlX2NoZWNrICgxLCAx LCAxKSIgW2Zvcm1hdCAkZXJyb3Jfc3RyICJmb28zX3R5cGVfY2hlY2siXQotKwotK2dkYl90ZXN0 X25vX291dHB1dCAic2V0IGNoZWNrIHR5cGUgb2ZmIgotK2dkYl90ZXN0ICJzaG93IGNoZWNrIHR5 cGUiICJTdHJpY3QgdHlwZSBjaGVja2luZyBpcyBvZmZcLiIKLStnZGJfdGVzdCAicCBmb28xX3R5 cGVfY2hlY2sgKDEyMykiICIgPSAxMDAwIgotK2dkYl90ZXN0ICJwIGZvbzJfdHlwZV9jaGVjayAo MCwgMSkiICIgPSAxMDAxIgotK2dkYl90ZXN0ICJwIGZvbzJfdHlwZV9jaGVjayAoMSwgMCkiICIg PSAxMDAxIgotK2dkYl90ZXN0ICJwIGZvbzJfdHlwZV9jaGVjayAoMSwgMSkiICIgPSAxMDAxIgot K2dkYl90ZXN0ICJwIGZvbzNfdHlwZV9jaGVjayAoMCwgMCwgMSkiICIgPSAxMDAyIgotK2dkYl90 ZXN0ICJwIGZvbzNfdHlwZV9jaGVjayAoMCwgMSwgMCkiICIgPSAxMDAyIgotK2dkYl90ZXN0ICJw IGZvbzNfdHlwZV9jaGVjayAoMSwgMCwgMCkiICIgPSAxMDAyIgotK2dkYl90ZXN0ICJwIGZvbzNf dHlwZV9jaGVjayAoMCwgMSwgMSkiICIgPSAxMDAyIgotK2dkYl90ZXN0ICJwIGZvbzNfdHlwZV9j aGVjayAoMSwgMSwgMCkiICIgPSAxMDAyIgotK2dkYl90ZXN0ICJwIGZvbzNfdHlwZV9jaGVjayAo MSwgMSwgMSkiICIgPSAxMDAyIgotK2dkYl90ZXN0ICJwIGZvbzNfMiAoMSwxKSIgIiA9IDMyIgot SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jb252ZXJ0cy5j YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL2NvbnZlcnRzLmNjCTIwMTEtMTAtMTQgMjI6MjI6NTAuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NvbnZlcnRzLmNjCTIw MTItMDktMjcgMjI6MTQ6NDEuMzIyNjk1MzM3ICswMjAwCi1AQCAtMjcsNiArMjcsMTAgQEAgaW50 IGZvbzNfMSAoaW50IGEsIGNvbnN0IGNoYXIgKipiKSB7IHJldAotIGludCBmb28zXzIgKGludCBh LCBpbnQgYikgeyByZXR1cm4gMzI7IH0KLSBpbnQgZm9vM18yIChpbnQgYSwgY29uc3QgY2hhciAq KmIpIHsgcmV0dXJuIDMyMDsgfQotIAotK2ludCBmb28xX3R5cGVfY2hlY2sgKGNoYXIgKmEpIHsg cmV0dXJuIDEwMDA7IH0KLStpbnQgZm9vMl90eXBlX2NoZWNrIChjaGFyICphLCBjaGFyICpiKSB7 IHJldHVybiAxMDAxOyB9Ci0raW50IGZvbzNfdHlwZV9jaGVjayAoY2hhciAqYSwgY2hhciAqYiwg Y2hhciAqYykgeyByZXR1cm4gMTAwMjsgfQotKwotIGludCBtYWluKCkKLSB7Ci0gCi1AQCAtNjIs NSArNjYsOSBAQCBpbnQgbWFpbigpCi0gICBmb28zXzIgKDAsIHN0YXRpY19jYXN0PGNoYXIgY29u c3QqKj4gKDApKTsKLSAgIGZvbzNfMiAoMCwgMCk7Ci0gCi0rICBmb28xX3R5cGVfY2hlY2sgKGEp OwotKyAgZm9vMl90eXBlX2NoZWNrIChhLCBhKTsKLSsgIGZvbzNfdHlwZV9jaGVjayAoYSwgYSwg YSk7Ci0rCi0gICByZXR1cm4gMDsgICAgICAgICAgLy8gZW5kIG9mIG1haW4KLSB9CgpkaWZmIC0t Z2l0IGEvZ2RiLWNvbW1vbmJsb2NrLXBpZS5wYXRjaCBiL2dkYi1jb21tb25ibG9jay1waWUucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJlMjM2ZQotLS0gL2Rldi9u dWxsCisrKyBiL2dkYi1jb21tb25ibG9jay1waWUucGF0Y2gKQEAgLTAsMCArMSw2MCBAQAorZGlm ZiAtLWdpdCBhL2dkYi9kd2FyZjJyZWFkLmMgYi9nZGIvZHdhcmYycmVhZC5jCitpbmRleCA3YTU4 YzQ1Li4zNjRlNmFmIDEwMDY0NAorLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYworKysrIGIvZ2RiL2R3 YXJmMnJlYWQuYworQEAgLTE2MDcxLDcgKzE2MDcxLDcgQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 LAorIAkgIGxpc3RfdG9fYWRkID0gJmdsb2JhbF9zeW1ib2xzOworIAkgIGJyZWFrOworIAljYXNl IERXX1RBR19jb21tb25fYmxvY2s6CistCSAgU1lNQk9MX0NMQVNTIChzeW0pID0gTE9DX1NUQVRJ QzsKKysJICBTWU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfQ09NTU9OX0JMT0NLOworIAkgIFNZTUJP TF9ET01BSU4gKHN5bSkgPSBDT01NT05fQkxPQ0tfRE9NQUlOOworIAkgIGFkZF9zeW1ib2xfdG9f bGlzdCAoc3ltLCBjdS0+bGlzdF9pbl9zY29wZSk7CisgCSAgYnJlYWs7CitkaWZmIC0tZ2l0IGEv Z2RiL2YtdmFscHJpbnQuYyBiL2dkYi9mLXZhbHByaW50LmMKK2luZGV4IDIyY2NhODMuLmQwMWQ2 ZWMgMTAwNjQ0CistLS0gYS9nZGIvZi12YWxwcmludC5jCisrKysgYi9nZGIvZi12YWxwcmludC5j CitAQCAtNDI3LDcgKzQyNyw3IEBAIGluZm9fY29tbW9uX2NvbW1hbmRfZm9yX2Jsb2NrIChzdHJ1 Y3QgYmxvY2sgKmJsb2NrLCBjb25zdCBjaGFyICpjb21uYW1lLAorIAlzdHJ1Y3QgY29tbW9uX2Js b2NrICpjb21tb24gPSBTWU1CT0xfVkFMVUVfQ09NTU9OX0JMT0NLIChzeW0pOworIAlzaXplX3Qg aW5kZXg7CisgCistCWdkYl9hc3NlcnQgKFNZTUJPTF9DTEFTUyAoc3ltKSA9PSBMT0NfU1RBVElD KTsKKysJZ2RiX2Fzc2VydCAoU1lNQk9MX0NMQVNTIChzeW0pID09IExPQ19DT01NT05fQkxPQ0sp OworIAorIAlpZiAoY29tbmFtZSAmJiAoIVNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSkKKyAJICAg ICAgICAgICAgICAgIHx8IHN0cmNtcCAoY29tbmFtZSwgU1lNQk9MX0xJTktBR0VfTkFNRSAoc3lt KSkgIT0gMCkpCitkaWZmIC0tZ2l0IGEvZ2RiL3N5bXRhYi5oIGIvZ2RiL3N5bXRhYi5oCitpbmRl eCBjMzM0YTNhLi5iOTkyMjY2IDEwMDY0NAorLS0tIGEvZ2RiL3N5bXRhYi5oCisrKysgYi9nZGIv c3ltdGFiLmgKK0BAIC0xMjAsNyArMTIwLDcgQEAgc3RydWN0IGdlbmVyYWxfc3ltYm9sX2luZm8K KyAKKyAgICAgQ09SRV9BRERSIGFkZHJlc3M7CisgCistICAgIC8qIEEgY29tbW9uIGJsb2NrLiAg VXNlZCB3aXRoIENPTU1PTl9CTE9DS19ET01BSU4uICAqLworKyAgICAvKiBBIGNvbW1vbiBibG9j ay4gIFVzZWQgd2l0aCBMT0NfQ09NTU9OX0JMT0NLLiAgKi8KKyAKKyAgICAgc3RydWN0IGNvbW1v bl9ibG9jayAqY29tbW9uX2Jsb2NrOworIAorQEAgLTQxNCw3ICs0MTQsOCBAQCB0eXBlZGVmIGVu dW0gZG9tYWluX2VudW1fdGFnCisgCisgICBMQUJFTF9ET01BSU4sCisgCistICAvKiBGb3J0cmFu IGNvbW1vbiBibG9ja3MuICBUaGVpciBuYW1pbmcgbXVzdCBiZSBzZXBhcmF0ZSBmcm9tIFZBUl9E T01BSU4uICAqLworKyAgLyogRm9ydHJhbiBjb21tb24gYmxvY2tzLiAgVGhlaXIgbmFtaW5nIG11 c3QgYmUgc2VwYXJhdGUgZnJvbSBWQVJfRE9NQUlOLgorKyAgICAgVGhleSBhbHNvIGFsd2F5cyB1 c2UgTE9DX0NPTU1PTl9CTE9DSy4gICovCisgICBDT01NT05fQkxPQ0tfRE9NQUlOCisgfSBkb21h aW5fZW51bTsKKyAKK0BAIC01MzMsNiArNTM0LDEwIEBAIGVudW0gYWRkcmVzc19jbGFzcworICAg LyogVGhlIHZhcmlhYmxlJ3MgYWRkcmVzcyBpcyBjb21wdXRlZCBieSBhIHNldCBvZiBsb2NhdGlv bgorICAgICAgZnVuY3Rpb25zIChzZWUgInN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIiBiZWxv dykuICAqLworICAgTE9DX0NPTVBVVEVELAorKworKyAgLyogVGhlIHZhcmlhYmxlIHVzZXMgZ2Vu ZXJhbF9zeW1ib2xfaW5mby0+dmFsdWUtPmNvbW1vbl9ibG9jayBmaWVsZC4KKysgICAgIEl0IGFs c28gYWx3YXlzIHVzZXMgQ09NTU9OX0JMT0NLX0RPTUFJTi4gICovCisrICBMT0NfQ09NTU9OX0JM T0NLLAorIH07CisgCisgLyogVGhlIG1ldGhvZHMgbmVlZGVkIHRvIGltcGxlbWVudCBMT0NfQ09N UFVURUQuICBUaGVzZSBtZXRob2RzIGNhbgoKZGlmZiAtLWdpdCBhL2dkYi1jb3JlLW9wZW4tdmRz by13YXJuaW5nLnBhdGNoIGIvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKaW5kZXgg YjgzNTY1Ny4uY2FmZDg0NCAxMDA2NDQKLS0tIGEvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcu cGF0Y2gKKysrIGIvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKQEAgLTMsMTAgKzMs MTAgQEAgU3ViamVjdDogW3BhdGNoXSBGaXggR05VL0xpbnV4IGNvcmUgb3BlbjogQ2FuJ3QgcmVh ZCBwYXRobmFtZSBmb3IgbG9hZCBtYXA6ICBJbnAKIAogWyBOZXcgcGF0Y2ggdmFyaWFudC4gIF0K IAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTItMDctMDYgMTU6Mzk6NTcu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvc29saWItc3ZyNC5j CTIwMTItMDctMDYgMTU6NDA6MDEuMTI0ODE2MTQ4ICswMjAwCistLS0gZ2RiLTcuNS41MC4yMDEz MDExOC5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAxMy0wMS0xOCAyMzowNToxOS40MTQyMTAwMTUg KzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zb2xpYi1zdnI0LmMJMjAxMy0wMS0x OCAyMzowNTozNC44MTMyMzE2NjQgKzAxMDAKIEBAIC0xMjIxLDggKzEyMjEsMTcgQEAgc3ZyNF9y ZWFkX3NvX2xpc3QgKENPUkVfQUREUiBsbSwgc3RydWN0CiAgCQkJICBTT19OQU1FX01BWF9QQVRI X1NJWkUgLSAxLCAmZXJyY29kZSk7CiAgICAgICAgaWYgKGVycmNvZGUgIT0gMCkKQEAgLTI3LDIw ICsyNywyMCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvc29saWItc3ZyNC5jCiAg CSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CiAgCSAgY29udGludWU7CiAgCX0KLUluZGV4OiBn ZGItNy40LjUwLjIwMTIwNzAzL2dkYi9zb2xpYi5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvc29saWIuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9n ZGIvc29saWIuYwkyMDEyLTA3LTA2IDE1OjM4OjM5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjQuNTAuMjAxMjA3MDMvZ2RiL3NvbGliLmMJMjAxMi0wNy0wNiAxNTo0MDowMS4xMjU4MTYxNDcg KzAyMDAKLUBAIC02NzIsNyArNjcyLDcgQEAgc29saWJfdXNlZCAoY29uc3Qgc3RydWN0IHNvX2xp c3QgKmNvbnN0CistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9zb2xpYi5jCTIwMTMt MDEtMTggMjM6MDU6MTkuNDE1MjEwMDE3ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9n ZGIvc29saWIuYwkyMDEzLTAxLTE4IDIzOjA1OjU3LjQyMTI2MzE3MyArMDEwMAorQEAgLTY2Niw3 ICs2NjYsNyBAQCBzb2xpYl91c2VkIChjb25zdCBzdHJ1Y3Qgc29fbGlzdCAqY29uc3QKICAgICBw cm9jZXNzZXMgd2UndmUganVzdCBhdHRhY2hlZCB0bywgc28gdGhhdCdzIG9rYXkuICAqLwogIAog IHN0YXRpYyB2b2lkCiAtdXBkYXRlX3NvbGliX2xpc3QgKGludCBmcm9tX3R0eSwgc3RydWN0IHRh cmdldF9vcHMgKnRhcmdldCkKICt1cGRhdGVfc29saWJfbGlzdF8xIChpbnQgZnJvbV90dHksIHN0 cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQpCiAgewotICAgc3RydWN0IHRhcmdldF9zb19vcHMgKm9w cyA9IHNvbGliX29wcyAodGFyZ2V0X2dkYmFyY2gpOworICAgc3RydWN0IHRhcmdldF9zb19vcHMg Km9wcyA9IHNvbGliX29wcyAodGFyZ2V0X2dkYmFyY2ggKCkpOwogICAgc3RydWN0IHNvX2xpc3Qg KmluZmVyaW9yID0gb3BzLT5jdXJyZW50X3NvcygpOwotQEAgLTg0Myw2ICs4NDMsMjEgQEAgRG8g eW91IG5lZWQgXCJzZXQgc29saWItc2VhcmNoLXBhdGhcIiBvcgorQEAgLTgzNyw2ICs4MzcsMjEg QEAgRG8geW91IG5lZWQgXCJzZXQgc29saWItc2VhcmNoLXBhdGhcIiBvcgogICAgICB9CiAgfQog IApAQCAtNjIsMTAgKzYyLDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9zb2xp Yi5jCiAgCiAgLyogUmV0dXJuIG5vbi16ZXJvIGlmIE5BTUUgaXMgdGhlIGxpYnB0aHJlYWQgc2hh cmVkIGxpYnJhcnkuCiAgCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2NvcmVmaWxlLmV4cAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUw LjIwMTIwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAJMjAxMi0w Ny0wNiAxNTozOTo0MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCTIwMTItMDctMDYgMTU6NDA6MTAuMzIy ODA1NTM5ICswMjAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvY29yZWZpbGUuZXhwCTIwMTMtMDEtMTggMjM6MDU6MTkuNDE2MjEwMDIwICswMTAw CisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxl LmV4cAkyMDEzLTAxLTE4IDIzOjA1OjM0LjgxNDIzMTY2NyArMDEwMAogQEAgLTI4NiwzICsyODYs MTkgQEAgaWYgeyRidWlsZGlkID09ICIifSB7CiAgICAgIGdkYl90ZXN0ICJpbmZvIGZpbGVzIiAi TG9jYWwgZXhlYyBmaWxlOlxyXG5cWyBcdFxdKmBbc3RyaW5nX3RvX3JlZ2V4cCAkZGVidWdkaXIv JGJ1aWxkaWRdJywgZmlsZSB0eXBlIC4qIgogICAgICBwYXNzICR3aG9sZXRlc3QKQEAgLTg2LDEw ICs4NiwxMCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2NvcmVmaWxlLmV4cAogKwlwYXNzICR0ZXN0CiArICAgIH0KICt9Ci1JbmRleDogZ2RiLTcu NC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAKK0lu ZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc29saWItc3lt Ym9sLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAJMjAxMi0wNy0wNiAxNTozODozOS4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvc29saWItc3ltYm9sLmV4cAkyMDEyLTA3LTA2IDE1OjQwOjAxLjEyNzgxNjE0NSArMDIwMAor LS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGli LXN5bWJvbC5leHAJMjAxMy0wMS0xOCAyMzowNToxOS40MTYyMTAwMjAgKzAxMDAKKysrKyBnZGIt Ny41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc29saWItc3ltYm9sLmV4cAky MDEzLTAxLTE4IDIzOjA1OjM0LjgxNDIzMTY2NyArMDEwMAogQEAgLTI3LDcgKzI3LDggQEAgc2V0 IGxpYl9mbGFncyBbbGlzdCBkZWJ1ZyBsZGZsYWdzPS1XbCwtQgogICMgQmluYXJ5IGZpbGUuCiAg c2V0IHRlc3RmaWxlICJzb2xpYi1zeW1ib2wtbWFpbiIKCmRpZmYgLS1naXQgYS9nZGItZGxvcGVu LXN0YXAtcHJvYmUtMW9mNy5wYXRjaCBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS0xb2Y3LnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODkxZmIzLi4wMDAwMDAwCi0tLSBhL2dk Yi1kbG9wZW4tc3RhcC1wcm9iZS0xb2Y3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzk1ICsw LDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDcvbXNnMDAxMjMu aHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNy8xOCAwNDozNjoxNQkxLjE0NDcz Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNy8xOCAxNjoxMjoxNQkxLjE0NDc0Ci0jIyAt MSwzICsxLDM3IEBACi0rMjAxMi0wNy0xOCAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lv ZGpAcmVkaGF0LmNvbT4KLSsKLSsJKiBlbGZyZWFkLmMgKGVsZl9nZXRfcHJvYmVfYXJndW1lbnRf Y291bnQpOiBSZW1vdmUgYG9iamZpbGUnIGFyZ3VtZW50LgotKwkoZWxmX2NvbXBpbGVfdG9fYXgp OiBMaWtld2lzZS4KLSsJKiBpbmZydW4uYyAoaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfZnJvbV9w cm9iZSk6IExpa2V3aXNlLgotKwkoY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSk6IFJlbW92ZSBgb2Jq ZmlsZScgdmFyaWFibGUuCi0rCSogcHJvYmUuYyAoZmluZF9wcm9iZV9ieV9wYyk6IFJlbW92ZSBg b2JqZmlsZScgYXJndW1lbnQuCi0rCShzdHJ1Y3QgcHJvYmVfYW5kX29iamZpbGUsIHByb2JlX2Fu ZF9vYmpmaWxlX3MpOiBEZWxldGUuCi0rCShjb2xsZWN0X3Byb2Jlcyk6IEFkanVzdCByZXR1cm4g dmFsdWUgdG8gYFZFQyAocHJvYmVfcCkgKicuCi0rCShjb21wYXJlX2VudHJpZXMpOiBSZW5hbWUg dG8uLi4KLSsJKGNvbXBhcmVfcHJvYmVzKTogLi4udGhpcy4gIEFkanVzdCBmdW5jdGlvbiB0byB3 b3JrIHdpdGgKLSsJYHN0cnVjdCBwcm9iZSAqJy4gIFJlbmFtZSB2YXJpYWJsZXMgYGVhJyBhbmQg YGViJyB0byBgcGEnIGFuZCBgcGInCi0rCXJlc3BlY3RpdmVseS4KLSsJKGdlbl91aV9vdXRfdGFi bGVfaGVhZGVyX2luZm8pOiBBZGp1c3QgYHByb2JlcycgYXJndW1lbnQgdG8gYmUKLSsJYFZFQyAo cHJvYmVfcCkgKicuCi0rCShwcmludF91aV9vdXRfaW5mbyk6IEFkanVzdCBhcmd1bWVudCB0byBi ZSBgc3RydWN0IHByb2JlIConLgotKwkoaW5mb19wcm9iZXNfZm9yX29wcyk6IEFkanVzdCBpbnRl cm5hbCBjb21wdXRhdGlvbnMgdG8gdXNlCi0rCWBWRUMgKHByb2JlX3ApIConLgotKwkocHJvYmVf c2FmZV9ldmFsdWF0ZV9hdF9wYyk6IFJlZmFjdG9yIHRvIG5vdCBwYXNzIGBvYmpmaWxlJyBhbnlt b3JlLgotKwkqIHByb2JlLmggKHN0cnVjdCBwcm9iZV9vcHMpIDxnZXRfcHJvYmVfYXJndW1lbnRf Y291bnQsIGNvbXBpbGVfdG9fYXgsCi0rCWdlbl9pbmZvX3Byb2Jlc190YWJsZV92YWx1ZXM+OiBS ZW1vdmUgYG9iamZpbGUnIGFyZ3VtZW50LgotKwkoc3RydWN0IHByb2JlKSA8b2JqZmlsZT46IE5l dyBmaWVsZC4KLSsJKGZpbmRfcHJvYmVfYnlfcGMpOiBSZW1vdmUgYG9iamZpbGUnIGFyZ3VtZW50 LgotKwkqIHN0YXAtcHJvYmUuYyAoc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMpOiBMaWtld2lz ZS4KLSsJKHN0YXBfZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50KTogTGlrZXdpc2UuCi0rCShzdGFw X2dldF9hcmcpOiBMaWtld2lzZS4KLSsJKHN0YXBfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQpOiBM aWtld2lzZS4KLSsJKHN0YXBfY29tcGlsZV90b19heCk6IExpa2V3aXNlLgotKwkoY29tcGlsZV9w cm9iZV9hcmcpOiBSZWZhY3RvciBub3QgdG8gcGFzcyBgb2JqZmlsZScgYW55bW9yZS4KLSsJKGhh bmRsZV9zdGFwX3Byb2JlKTogRmlsbCBgb2JqZmlsZScgZmllbGQgZnJvbSBgc3RydWN0IHByb2Jl Jy4KLSsJKHN0YXBfZ2VuX2luZm9fcHJvYmVzX3RhYmxlX2hlYWRlcik6IFJlbW92ZSBgb2JqZmls ZScgYXJndW1lbnQuCi0rCSogc3ltZmlsZS5oIChzdHJ1Y3Qgc3ltX3Byb2JlX2ZucykgPHN5bV9l dmFsdWF0ZV9wcm9iZV9hcmd1bWVudCwKLSsJc3ltX2NvbXBpbGVfdG9fYXg+OiBMaWtld2lzZS4K LSsKLSAyMDEyLTA3LTE4ICBUZXJyeSBHdW8gIDx0ZXJyeS5ndW9AYXJtLmNvbT4KLSAKLSAJUFIg MTQzMjkKLS0tLSBzcmMvZ2RiL2VsZnJlYWQuYwkyMDEyLzA2LzI2IDIwOjE0OjAxCTEuMTMzCi0r Kysgc3JjL2dkYi9lbGZyZWFkLmMJMjAxMi8wNy8xOCAxNjoxMjoxNQkxLjEzNAotQEAgLTE2MzUs MzMgKzE2MzUsMjkgQEAKLSAgICBzeW1maWxlLmguICAqLwotIAotIHN0YXRpYyB1bnNpZ25lZAot LWVsZl9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAot LQkJCSAgICAgIHN0cnVjdCBwcm9iZSAqcHJvYmUpCi0rZWxmX2dldF9wcm9iZV9hcmd1bWVudF9j b3VudCAoc3RydWN0IHByb2JlICpwcm9iZSkKLSB7Ci0tICByZXR1cm4gcHJvYmUtPnBvcHMtPmdl dF9wcm9iZV9hcmd1bWVudF9jb3VudCAocHJvYmUsIG9iamZpbGUpOwotKyAgcmV0dXJuIHByb2Jl LT5wb3BzLT5nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHByb2JlKTsKLSB9Ci0gCi0gLyogSW1w bGVtZW50YXRpb24gb2YgYHN5bV9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCcsIGFzIGRvY3VtZW50 ZWQgaW4KLSAgICBzeW1maWxlLmguICAqLwotIAotIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotLWVs Zl9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0tCQkJ ICAgICBzdHJ1Y3QgcHJvYmUgKnByb2JlLAotLQkJCSAgICAgdW5zaWduZWQgbikKLStlbGZfZXZh bHVhdGVfcHJvYmVfYXJndW1lbnQgKHN0cnVjdCBwcm9iZSAqcHJvYmUsIHVuc2lnbmVkIG4pCi0g ewotLSAgcmV0dXJuIHByb2JlLT5wb3BzLT5ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAocHJvYmUs IG9iamZpbGUsIG4pOwotKyAgcmV0dXJuIHByb2JlLT5wb3BzLT5ldmFsdWF0ZV9wcm9iZV9hcmd1 bWVudCAocHJvYmUsIG4pOwotIH0KLSAKLSAvKiBJbXBsZW1lbnRhdGlvbiBvZiBgc3ltX2NvbXBp bGVfdG9fYXgnLCBhcyBkb2N1bWVudGVkIGluIHN5bWZpbGUuaC4gICovCi0gCi0gc3RhdGljIHZv aWQKLS1lbGZfY29tcGlsZV90b19heCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0tCQkgICBz dHJ1Y3QgcHJvYmUgKnByb2JlLAotK2VsZl9jb21waWxlX3RvX2F4IChzdHJ1Y3QgcHJvYmUgKnBy b2JlLAotIAkJICAgc3RydWN0IGFnZW50X2V4cHIgKmV4cHIsCi0gCQkgICBzdHJ1Y3QgYXhzX3Zh bHVlICp2YWx1ZSwKLSAJCSAgIHVuc2lnbmVkIG4pCi0gewotLSAgcHJvYmUtPnBvcHMtPmNvbXBp bGVfdG9fYXggKHByb2JlLCBvYmpmaWxlLCBleHByLCB2YWx1ZSwgbik7Ci0rICBwcm9iZS0+cG9w cy0+Y29tcGlsZV90b19heCAocHJvYmUsIGV4cHIsIHZhbHVlLCBuKTsKLSB9Ci0gCi0gLyogSW1w bGVtZW50YXRpb24gb2YgYHN5bV9yZWxvY2F0ZV9wcm9iZScsIGFzIGRvY3VtZW50ZWQgaW4gc3lt ZmlsZS5oLiAgKi8KLS0tLSBzcmMvZ2RiL2luZnJ1bi5jCTIwMTIvMDcvMDEgMTA6Mzc6MDQJMS41 NDkKLSsrKyBzcmMvZ2RiL2luZnJ1bi5jCTIwMTIvMDcvMTggMTY6MTI6MTYJMS41NTAKLUBAIC01 NTE4LDcgKzU1MTgsNiBAQAotIHN0YXRpYyB2b2lkCi0gaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVf ZnJvbV9wcm9iZSAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwKLSAJCQkJICAgIGNvbnN0IHN0cnVj dCBwcm9iZSAqcHJvYmUsCi0tCQkJCSAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkJ ICAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSB7Ci0gICBzdHJ1Y3QgdmFsdWUgKmFyZ192 YWx1ZTsKLUBAIC01NTM0LDcgKzU1MzMsNyBAQAotICAgaWYgKGRlYnVnX2luZnJ1bikKLSAgICAg ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotIAkJCSJpbmZydW46IGV4Y2VwdGlvbiBy ZXN1bWUgYXQgJXNcbiIsCi0tCQkJcGFkZHJlc3MgKGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUp LAotKwkJCXBhZGRyZXNzIChnZXRfb2JqZmlsZV9hcmNoIChwcm9iZS0+b2JqZmlsZSksCi0gCQkJ CSAgaGFuZGxlcikpOwotIAotICAgYnAgPSBzZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnRfYXRfcGMg KGdldF9mcmFtZV9hcmNoIChmcmFtZSksCi1AQCAtNTU1Miw3ICs1NTUxLDYgQEAKLSAJCQlzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gewotICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRp b24gZTsKLS0gIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwotICAgY29uc3Qgc3RydWN0IHByb2Jl ICpwcm9iZTsKLSAgIHN0cnVjdCBzeW1ib2wgKmZ1bmM7Ci0gCi1AQCAtNTU2MCwxMSArNTU1OCwx MCBAQAotICAgICAgU3lzdGVtVGFwIHByb2JlIHBvaW50LiAgSWYgc28sIHRoZSBwcm9iZSBoYXMg dHdvIGFyZ3VtZW50czogdGhlCi0gICAgICBDRkEgYW5kIHRoZSBIQU5ETEVSLiAgV2UgaWdub3Jl IHRoZSBDRkEsIGV4dHJhY3QgdGhlIGhhbmRsZXIsIGFuZAotICAgICAgc2V0IGEgYnJlYWtwb2lu dCB0aGVyZS4gICovCi0tICBwcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKGdldF9mcmFtZV9wYyAo ZnJhbWUpLCAmb2JqZmlsZSk7Ci0rICBwcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKGdldF9mcmFt ZV9wYyAoZnJhbWUpKTsKLSAgIGlmIChwcm9iZSkKLSAgICAgewotLSAgICAgIGluc2VydF9leGNl cHRpb25fcmVzdW1lX2Zyb21fcHJvYmUgKGVjcy0+ZXZlbnRfdGhyZWFkLCBwcm9iZSwKLS0JCQkJ CSAgb2JqZmlsZSwgZnJhbWUpOwotKyAgICAgIGluc2VydF9leGNlcHRpb25fcmVzdW1lX2Zyb21f cHJvYmUgKGVjcy0+ZXZlbnRfdGhyZWFkLCBwcm9iZSwgZnJhbWUpOwotICAgICAgIHJldHVybjsK LSAgICAgfQotIAotLS0tIHNyYy9nZGIvcHJvYmUuYwkyMDEyLzA1LzA4IDAxOjM1OjM0CTEuMwot KysrIHNyYy9nZGIvcHJvYmUuYwkyMDEyLzA3LzE4IDE2OjEyOjE3CTEuNAotQEAgLTIwNCw3ICsy MDQsNyBAQAotIC8qIFNlZSBkZWZpbml0aW9uIGluIHByb2JlLmguICAqLwotIAotIHN0cnVjdCBw cm9iZSAqCi0tZmluZF9wcm9iZV9ieV9wYyAoQ09SRV9BRERSIHBjLCBzdHJ1Y3Qgb2JqZmlsZSAq Km9iamZpbGVfb3V0KQotK2ZpbmRfcHJvYmVfYnlfcGMgKENPUkVfQUREUiBwYykKLSB7Ci0gICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSAKLUBAIC0yMjEsMTAgKzIyMSw3IEBACi0gICAgIHBy b2JlcyA9IG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlcyAob2JqZmls ZSk7Ci0gICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAocHJvYmVfcCwgcHJvYmVzLCBpeCwg cHJvYmUpOyBpeCsrKQotICAgICAgIGlmIChwcm9iZS0+YWRkcmVzcyA9PSBwYykKLS0JewotLQkg ICpvYmpmaWxlX291dCA9IG9iamZpbGU7Ci0tCSAgcmV0dXJuIHByb2JlOwotLQl9Ci0rCXJldHVy biBwcm9iZTsKLSAgIH0KLSAKLSAgIHJldHVybiBOVUxMOwotQEAgLTIzMiwyMSArMjI5LDYgQEAK LSAKLSAMCi0gCi0tLyogQSB1dGlsaXR5IHN0cnVjdHVyZS4gIEEgVkVDIG9mIHRoZXNlIGlzIGJ1 aWx0IHdoZW4gaGFuZGxpbmcgImluZm8KLS0gICBwcm9iZXMiLiAgKi8KLS0KLS1zdHJ1Y3QgcHJv YmVfYW5kX29iamZpbGUKLS17Ci0tICAvKiBUaGUgcHJvYmUuICAqLwotLSAgc3RydWN0IHByb2Jl ICpwcm9iZTsKLS0KLS0gIC8qIFRoZSBwcm9iZSdzIG9iamZpbGUuICAqLwotLSAgc3RydWN0IG9i amZpbGUgKm9iamZpbGU7Ci0tfTsKLS0KLS10eXBlZGVmIHN0cnVjdCBwcm9iZV9hbmRfb2JqZmls ZSBwcm9iZV9hbmRfb2JqZmlsZV9zOwotLURFRl9WRUNfTyAocHJvYmVfYW5kX29iamZpbGVfcyk7 Ci0tCi0gLyogQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNvbGxlY3RfcHJvYmVzIHRoYXQgY29tcGls ZXMgYSByZWdleHAgYW5kCi0gICAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4gIFRoaXMg aW5zdGFsbHMgYSBjbGVhbnVwIHRvIGZyZWUgdGhlCi0gICAgcmVzdWx0aW5nIHBhdHRlcm4gb24g c3VjY2Vzcy4gIElmIFJYIGlzIE5VTEwsIHRoaXMgZG9lcyBub3RoaW5nLiAgKi8KLUBAIC0yNzUs MTYgKzI1NywxNiBAQAotICAgIElmIFBPUFMgaXMgbm90IE5VTEwsIG9ubHkgcHJvYmVzIG9mIHRo aXMgY2VydGFpbiBwcm9iZV9vcHMgd2lsbCBtYXRjaC4KLSAgICBFYWNoIGFyZ3VtZW50IGlzIGEg cmVnZXhwLCBvciBOVUxMLCB3aGljaCBtYXRjaGVzIGFueXRoaW5nLiAgKi8KLSAKLS1zdGF0aWMg VkVDIChwcm9iZV9hbmRfb2JqZmlsZV9zKSAqCi0rc3RhdGljIFZFQyAocHJvYmVfcCkgKgotIGNv bGxlY3RfcHJvYmVzIChjaGFyICpvYmpuYW1lLCBjaGFyICpwcm92aWRlciwgY2hhciAqcHJvYmVf bmFtZSwKLSAJCWNvbnN0IHN0cnVjdCBwcm9iZV9vcHMgKnBvcHMpCi0gewotICAgc3RydWN0IG9i amZpbGUgKm9iamZpbGU7Ci0tICBWRUMgKHByb2JlX2FuZF9vYmpmaWxlX3MpICpyZXN1bHQgPSBO VUxMOwotKyAgVkVDIChwcm9iZV9wKSAqcmVzdWx0ID0gTlVMTDsKLSAgIHN0cnVjdCBjbGVhbnVw ICpjbGVhbnVwLCAqY2xlYW51cF90ZW1wczsKLSAgIHJlZ2V4X3Qgb2JqX3BhdCwgcHJvdl9wYXQs IHByb2JlX3BhdDsKLSAKLS0gIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChw cm9iZV9hbmRfb2JqZmlsZV9zKSwgJnJlc3VsdCk7Ci0rICBjbGVhbnVwID0gbWFrZV9jbGVhbnVw IChWRUNfY2xlYW51cCAocHJvYmVfcCksICZyZXN1bHQpOwotIAotICAgY2xlYW51cF90ZW1wcyA9 IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsKLSAgIGNvbXBpbGVfcnhfb3JfZXJy b3IgKCZwcm92X3BhdCwgcHJvdmlkZXIsIF8oIkludmFsaWQgcHJvdmlkZXIgcmVnZXhwIikpOwot QEAgLTMxMCw4ICsyOTIsNiBAQAotIAotICAgICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAo cHJvYmVfcCwgcHJvYmVzLCBpeCwgcHJvYmUpOyBpeCsrKQotIAl7Ci0tCSAgcHJvYmVfYW5kX29i amZpbGVfcyBlbnRyeTsKLS0KLSAJICBpZiAocG9wcyAhPSBOVUxMICYmIHByb2JlLT5wb3BzICE9 IHBvcHMpCi0gCSAgICBjb250aW51ZTsKLSAKLUBAIC0zMjMsOSArMzAzLDcgQEAKLSAJICAgICAg JiYgcmVnZXhlYyAoJnByb2JlX3BhdCwgcHJvYmUtPm5hbWUsIDAsIE5VTEwsIDApICE9IDApCi0g CSAgICBjb250aW51ZTsKLSAKLS0JICBlbnRyeS5wcm9iZSA9IHByb2JlOwotLQkgIGVudHJ5Lm9i amZpbGUgPSBvYmpmaWxlOwotLQkgIFZFQ19zYWZlX3B1c2ggKHByb2JlX2FuZF9vYmpmaWxlX3Ms IHJlc3VsdCwgJmVudHJ5KTsKLSsJICBWRUNfc2FmZV9wdXNoIChwcm9iZV9wLCByZXN1bHQsIHBy b2JlKTsKLSAJfQotICAgICB9Ci0gCi1AQCAtMzM0LDM2ICszMTIsMzYgQEAKLSAgIHJldHVybiBy ZXN1bHQ7Ci0gfQotIAotLS8qIEEgcXNvcnQgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgcHJvYmVf YW5kX29iamZpbGVfcyBvYmplY3RzLiAgKi8KLSsvKiBBIHFzb3J0IGNvbXBhcmlzb24gZnVuY3Rp b24gZm9yIHByb2JlX3Agb2JqZWN0cy4gICovCi0gCi0gc3RhdGljIGludAotLWNvbXBhcmVfZW50 cmllcyAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLStjb21wYXJlX3Byb2JlcyAoY29u c3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLSB7Ci0tICBjb25zdCBwcm9iZV9hbmRfb2JqZmls ZV9zICplYSA9IGE7Ci0tICBjb25zdCBwcm9iZV9hbmRfb2JqZmlsZV9zICplYiA9IGI7Ci0rICBj b25zdCBzdHJ1Y3QgcHJvYmUgKnBhID0gKigoY29uc3Qgc3RydWN0IHByb2JlICoqKSBhKTsKLSsg IGNvbnN0IHN0cnVjdCBwcm9iZSAqcGIgPSAqKChjb25zdCBzdHJ1Y3QgcHJvYmUgKiopIGIpOwot ICAgaW50IHY7Ci0gCi0tICB2ID0gc3RyY21wIChlYS0+cHJvYmUtPnByb3ZpZGVyLCBlYi0+cHJv YmUtPnByb3ZpZGVyKTsKLSsgIHYgPSBzdHJjbXAgKHBhLT5wcm92aWRlciwgcGItPnByb3ZpZGVy KTsKLSAgIGlmICh2KQotICAgICByZXR1cm4gdjsKLSAKLS0gIHYgPSBzdHJjbXAgKGVhLT5wcm9i ZS0+bmFtZSwgZWItPnByb2JlLT5uYW1lKTsKLSsgIHYgPSBzdHJjbXAgKHBhLT5uYW1lLCBwYi0+ bmFtZSk7Ci0gICBpZiAodikKLSAgICAgcmV0dXJuIHY7Ci0gCi0tICBpZiAoZWEtPnByb2JlLT5h ZGRyZXNzIDwgZWItPnByb2JlLT5hZGRyZXNzKQotKyAgaWYgKHBhLT5hZGRyZXNzIDwgcGItPmFk ZHJlc3MpCi0gICAgIHJldHVybiAtMTsKLS0gIGlmIChlYS0+cHJvYmUtPmFkZHJlc3MgPiBlYi0+ cHJvYmUtPmFkZHJlc3MpCi0rICBpZiAocGEtPmFkZHJlc3MgPiBwYi0+YWRkcmVzcykKLSAgICAg cmV0dXJuIDE7Ci0gCi0tICByZXR1cm4gc3RyY21wIChlYS0+b2JqZmlsZS0+bmFtZSwgZWItPm9i amZpbGUtPm5hbWUpOwotKyAgcmV0dXJuIHN0cmNtcCAocGEtPm9iamZpbGUtPm5hbWUsIHBiLT5v YmpmaWxlLT5uYW1lKTsKLSB9Ci0gCi0gLyogSGVscGVyIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGUg ZW50cmllcyBpbiB0aGUgdWlfb3V0IHRhYmxlIGJlaW5nCi0gICAgY3JhZnRlZCBieSBgaW5mb19w cm9iZXNfZm9yX29wcycuICAqLwotIAotIHN0YXRpYyB2b2lkCi0tZ2VuX3VpX291dF90YWJsZV9o ZWFkZXJfaW5mbyAoVkVDIChwcm9iZV9hbmRfb2JqZmlsZV9zKSAqcHJvYmVzLAotK2dlbl91aV9v dXRfdGFibGVfaGVhZGVyX2luZm8gKFZFQyAocHJvYmVfcCkgKnByb2JlcywKLSAJCQkgICAgICBj b25zdCBzdHJ1Y3QgcHJvYmVfb3BzICpwKQotIHsKLSAgIC8qIGBoZWFkaW5ncycgcmVmZXJzIHRv IHRoZSBuYW1lcyBvZiB0aGUgY29sdW1ucyB3aGVuIHByaW50aW5nIGBpbmZvCi1AQCAtMzkyLDEx ICszNzAsMTEgQEAKLSAgICAgICAgVkVDX2l0ZXJhdGUgKGluZm9fcHJvYmVfY29sdW1uX3MsIGhl YWRpbmdzLCBpeCwgY29sdW1uKTsKLSAgICAgICAgKytpeCkKLSAgICAgewotLSAgICAgIHByb2Jl X2FuZF9vYmpmaWxlX3MgKmVudHJ5OwotKyAgICAgIHN0cnVjdCBwcm9iZSAqcHJvYmU7Ci0gICAg ICAgaW50IGp4OwotICAgICAgIHNpemVfdCBzaXplX21heCA9IHN0cmxlbiAoY29sdW1uLT5wcmlu dF9uYW1lKTsKLSAKLS0gICAgICBmb3IgKGp4ID0gMDsgVkVDX2l0ZXJhdGUgKHByb2JlX2FuZF9v YmpmaWxlX3MsIHByb2JlcywgangsIGVudHJ5KTsgKytqeCkKLSsgICAgICBmb3IgKGp4ID0gMDsg VkVDX2l0ZXJhdGUgKHByb2JlX3AsIHByb2JlcywgangsIHByb2JlKTsgKytqeCkKLSAJewotIAkg IC8qIGBwcm9iZV9maWVsZHMnIHJlZmVycyB0byB0aGUgdmFsdWVzIG9mIGVhY2ggbmV3IGZpZWxk IHRoYXQgdGhpcwotIAkgICAgIHByb2JlIHdpbGwgZGlzcGxheS4gICovCi1AQCAtNDA1LDEyICsz ODMsMTEgQEAKLSAJICBjb25zdCBjaGFyICp2YWw7Ci0gCSAgaW50IGt4OwotIAotLQkgIGlmIChl bnRyeS0+cHJvYmUtPnBvcHMgIT0gcCkKLSsJICBpZiAocHJvYmUtPnBvcHMgIT0gcCkKLSAJICAg IGNvbnRpbnVlOwotIAotIAkgIGMyID0gbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAoY29uc3Rf Y2hhcl9wdHIpLCAmcHJvYmVfZmllbGRzKTsKLS0JICBwLT5nZW5faW5mb19wcm9iZXNfdGFibGVf dmFsdWVzIChlbnRyeS0+cHJvYmUsIGVudHJ5LT5vYmpmaWxlLAotLQkJCQkJICAgJnByb2JlX2Zp ZWxkcyk7Ci0rCSAgcC0+Z2VuX2luZm9fcHJvYmVzX3RhYmxlX3ZhbHVlcyAocHJvYmUsICZwcm9i ZV9maWVsZHMpOwotIAotIAkgIGdkYl9hc3NlcnQgKFZFQ19sZW5ndGggKGNvbnN0X2NoYXJfcHRy LCBwcm9iZV9maWVsZHMpCi0gCQkgICAgICA9PSBoZWFkaW5nc19zaXplKTsKLUBAIC00MzcsMTAg KzQxNCwxMCBAQAotIH0KLSAKLSAvKiBIZWxwZXIgZnVuY3Rpb24gdG8gcHJpbnQgZXh0cmEgaW5m b3JtYXRpb24gYWJvdXQgYSBwcm9iZSBhbmQgYW4gb2JqZmlsZQotLSAgIHJlcHJlc2VudGVkIGJ5 IEVOVFJZLiAgKi8KLSsgICByZXByZXNlbnRlZCBieSBQUk9CRS4gICovCi0gCi0gc3RhdGljIHZv aWQKLS1wcmludF91aV9vdXRfaW5mbyAocHJvYmVfYW5kX29iamZpbGVfcyAqZW50cnkpCi0rcHJp bnRfdWlfb3V0X2luZm8gKHN0cnVjdCBwcm9iZSAqcHJvYmUpCi0gewotICAgaW50IGl4OwotICAg aW50IGogPSAwOwotQEAgLTQ1MSwyMyArNDI4LDIxIEBACi0gICBpbmZvX3Byb2JlX2NvbHVtbl9z ICpjb2x1bW47Ci0gICBzdHJ1Y3QgY2xlYW51cCAqYzsKLSAKLS0gIGdkYl9hc3NlcnQgKGVudHJ5 ICE9IE5VTEwpOwotLSAgZ2RiX2Fzc2VydCAoZW50cnktPnByb2JlICE9IE5VTEwpOwotLSAgZ2Ri X2Fzc2VydCAoZW50cnktPnByb2JlLT5wb3BzICE9IE5VTEwpOwotKyAgZ2RiX2Fzc2VydCAocHJv YmUgIT0gTlVMTCk7Ci0rICBnZGJfYXNzZXJ0IChwcm9iZS0+cG9wcyAhPSBOVUxMKTsKLSAKLS0g IGlmIChlbnRyeS0+cHJvYmUtPnBvcHMtPmdlbl9pbmZvX3Byb2Jlc190YWJsZV9oZWFkZXIgPT0g TlVMTAotLSAgICAgICYmIGVudHJ5LT5wcm9iZS0+cG9wcy0+Z2VuX2luZm9fcHJvYmVzX3RhYmxl X3ZhbHVlcyA9PSBOVUxMKQotKyAgaWYgKHByb2JlLT5wb3BzLT5nZW5faW5mb19wcm9iZXNfdGFi bGVfaGVhZGVyID09IE5VTEwKLSsgICAgICAmJiBwcm9iZS0+cG9wcy0+Z2VuX2luZm9fcHJvYmVz X3RhYmxlX3ZhbHVlcyA9PSBOVUxMKQotICAgICByZXR1cm47Ci0gCi0tICBnZGJfYXNzZXJ0IChl bnRyeS0+cHJvYmUtPnBvcHMtPmdlbl9pbmZvX3Byb2Jlc190YWJsZV9oZWFkZXIgIT0gTlVMTAot LQkgICAgICAmJiBlbnRyeS0+cHJvYmUtPnBvcHMtPmdlbl9pbmZvX3Byb2Jlc190YWJsZV92YWx1 ZXMgIT0gTlVMTCk7Ci0rICBnZGJfYXNzZXJ0IChwcm9iZS0+cG9wcy0+Z2VuX2luZm9fcHJvYmVz X3RhYmxlX2hlYWRlciAhPSBOVUxMCi0rCSAgICAgICYmIHByb2JlLT5wb3BzLT5nZW5faW5mb19w cm9iZXNfdGFibGVfdmFsdWVzICE9IE5VTEwpOwotIAotICAgYyA9IG1ha2VfY2xlYW51cCAoVkVD X2NsZWFudXAgKGluZm9fcHJvYmVfY29sdW1uX3MpLCAmaGVhZGluZ3MpOwotICAgbWFrZV9jbGVh bnVwIChWRUNfY2xlYW51cCAoY29uc3RfY2hhcl9wdHIpLCAmdmFsdWVzKTsKLSAKLS0gIGVudHJ5 LT5wcm9iZS0+cG9wcy0+Z2VuX2luZm9fcHJvYmVzX3RhYmxlX2hlYWRlciAoJmhlYWRpbmdzKTsK LS0gIGVudHJ5LT5wcm9iZS0+cG9wcy0+Z2VuX2luZm9fcHJvYmVzX3RhYmxlX3ZhbHVlcyAoZW50 cnktPnByb2JlLAotLQkJCQkJCSAgICBlbnRyeS0+b2JqZmlsZSwgJnZhbHVlcyk7Ci0rICBwcm9i ZS0+cG9wcy0+Z2VuX2luZm9fcHJvYmVzX3RhYmxlX2hlYWRlciAoJmhlYWRpbmdzKTsKLSsgIHBy b2JlLT5wb3BzLT5nZW5faW5mb19wcm9iZXNfdGFibGVfdmFsdWVzIChwcm9iZSwgJnZhbHVlcyk7 Ci0gCi0gICBnZGJfYXNzZXJ0IChWRUNfbGVuZ3RoIChpbmZvX3Byb2JlX2NvbHVtbl9zLCBoZWFk aW5ncykKLSAJICAgICAgPT0gVkVDX2xlbmd0aCAoY29uc3RfY2hhcl9wdHIsIHZhbHVlcykpOwot QEAgLTUxNSwxNiArNDkwLDE2IEBACi0gdm9pZAotIGluZm9fcHJvYmVzX2Zvcl9vcHMgKGNoYXIg KmFyZywgaW50IGZyb21fdHR5LCBjb25zdCBzdHJ1Y3QgcHJvYmVfb3BzICpwb3BzKQotIHsKLS0g IGNoYXIgKnByb3ZpZGVyLCAqcHJvYmUgPSBOVUxMLCAqb2JqbmFtZSA9IE5VTEw7Ci0rICBjaGFy ICpwcm92aWRlciwgKnByb2JlX25hbWUgPSBOVUxMLCAqb2JqbmFtZSA9IE5VTEw7Ci0gICBzdHJ1 Y3QgY2xlYW51cCAqY2xlYW51cCA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsK LS0gIFZFQyAocHJvYmVfYW5kX29iamZpbGVfcykgKml0ZW1zOwotKyAgVkVDIChwcm9iZV9wKSAq cHJvYmVzOwotICAgaW50IGksIGFueV9mb3VuZDsKLSAgIGludCB1aV9vdXRfZXh0cmFfZmllbGRz ID0gMDsKLSAgIHNpemVfdCBzaXplX2FkZHI7Ci0gICBzaXplX3Qgc2l6ZV9uYW1lID0gc3RybGVu ICgiTmFtZSIpOwotICAgc2l6ZV90IHNpemVfb2JqbmFtZSA9IHN0cmxlbiAoIk9iamVjdCIpOwot ICAgc2l6ZV90IHNpemVfcHJvdmlkZXIgPSBzdHJsZW4gKCJQcm92aWRlciIpOwotLSAgcHJvYmVf YW5kX29iamZpbGVfcyAqZW50cnk7Ci0rICBzdHJ1Y3QgcHJvYmUgKnByb2JlOwotICAgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfY3VycmVudF9hcmNoICgpOwotIAotICAgLyogRG8gd2Ug aGF2ZSBhIGBwcm92aWRlcjpwcm9iZTpvYmpmaWxlJyBzdHlsZSBvZiBsaW5lc3BlYz8gICovCi1A QCAtNTMzLDEwICs1MDgsMTAgQEAKLSAgICAgewotICAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUs IHByb3ZpZGVyKTsKLSAKLS0gICAgICBwcm9iZSA9IGV4dHJhY3RfYXJnICgmYXJnKTsKLS0gICAg ICBpZiAocHJvYmUpCi0rICAgICAgcHJvYmVfbmFtZSA9IGV4dHJhY3RfYXJnICgmYXJnKTsKLSsg ICAgICBpZiAocHJvYmVfbmFtZSkKLSAJewotLQkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHByb2Jl KTsKLSsJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBwcm9iZV9uYW1lKTsKLSAKLSAJICBvYmpuYW1l ID0gZXh0cmFjdF9hcmcgKCZhcmcpOwotIAkgIGlmIChvYmpuYW1lKQotQEAgLTU2NCwyOCArNTM5 LDI3IEBACi0gICBlbHNlCi0gICAgIHVpX291dF9leHRyYV9maWVsZHMgPSBnZXRfbnVtYmVyX2V4 dHJhX2ZpZWxkcyAocG9wcyk7Ci0gCi0tICBpdGVtcyA9IGNvbGxlY3RfcHJvYmVzIChvYmpuYW1l LCBwcm92aWRlciwgcHJvYmUsIHBvcHMpOwotLSAgbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAo cHJvYmVfYW5kX29iamZpbGVfcyksICZpdGVtcyk7Ci0rICBwcm9iZXMgPSBjb2xsZWN0X3Byb2Jl cyAob2JqbmFtZSwgcHJvdmlkZXIsIHByb2JlX25hbWUsIHBvcHMpOwotKyAgbWFrZV9jbGVhbnVw IChWRUNfY2xlYW51cCAocHJvYmVfcCksICZwcm9iZXMpOwotICAgbWFrZV9jbGVhbnVwX3VpX291 dF90YWJsZV9iZWdpbl9lbmQgKGN1cnJlbnRfdWlvdXQsCi0gCQkJCSAgICAgICA0ICsgdWlfb3V0 X2V4dHJhX2ZpZWxkcywKLS0JCQkJICAgICAgIFZFQ19sZW5ndGggKHByb2JlX2FuZF9vYmpmaWxl X3MsIGl0ZW1zKSwKLSsJCQkJICAgICAgIFZFQ19sZW5ndGggKHByb2JlX3AsIHByb2JlcyksCi0g CQkJCSAgICAgICAiU3RhdGljUHJvYmVzIik7Ci0gCi0tICBpZiAoIVZFQ19lbXB0eSAocHJvYmVf YW5kX29iamZpbGVfcywgaXRlbXMpKQotLSAgICBxc29ydCAoVkVDX2FkZHJlc3MgKHByb2JlX2Fu ZF9vYmpmaWxlX3MsIGl0ZW1zKSwKLS0JICAgVkVDX2xlbmd0aCAocHJvYmVfYW5kX29iamZpbGVf cywgaXRlbXMpLAotLQkgICBzaXplb2YgKHByb2JlX2FuZF9vYmpmaWxlX3MpLCBjb21wYXJlX2Vu dHJpZXMpOwotKyAgaWYgKCFWRUNfZW1wdHkgKHByb2JlX3AsIHByb2JlcykpCi0rICAgIHFzb3J0 IChWRUNfYWRkcmVzcyAocHJvYmVfcCwgcHJvYmVzKSwgVkVDX2xlbmd0aCAocHJvYmVfcCwgcHJv YmVzKSwKLSsJICAgc2l6ZW9mIChwcm9iZV9wKSwgY29tcGFyZV9wcm9iZXMpOwotIAotICAgLyog V2hhdCdzIHRoZSBzaXplIG9mIGFuIGFkZHJlc3MgaW4gb3VyIGFyY2hpdGVjdHVyZT8gICovCi0g ICBzaXplX2FkZHIgPSBnZGJhcmNoX2FkZHJfYml0IChnZGJhcmNoKSA9PSA2NCA/IDE4IDogMTA7 Ci0gCi0gICAvKiBEZXRlcm1pbmluZyB0aGUgbWF4aW11bSBzaXplIG9mIGVhY2ggZmllbGQgKGBw cm92aWRlcicsIGBuYW1lJyBhbmQKLSAgICAgIGBvYmpuYW1lJykuICAqLwotLSAgZm9yIChpID0g MDsgVkVDX2l0ZXJhdGUgKHByb2JlX2FuZF9vYmpmaWxlX3MsIGl0ZW1zLCBpLCBlbnRyeSk7ICsr aSkKLSsgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChwcm9iZV9wLCBwcm9iZXMsIGksIHByb2Jl KTsgKytpKQotICAgICB7Ci0tICAgICAgc2l6ZV9uYW1lID0gbWF4IChzdHJsZW4gKGVudHJ5LT5w cm9iZS0+bmFtZSksIHNpemVfbmFtZSk7Ci0tICAgICAgc2l6ZV9wcm92aWRlciA9IG1heCAoc3Ry bGVuIChlbnRyeS0+cHJvYmUtPnByb3ZpZGVyKSwgc2l6ZV9wcm92aWRlcik7Ci0tICAgICAgc2l6 ZV9vYmpuYW1lID0gbWF4IChzdHJsZW4gKGVudHJ5LT5vYmpmaWxlLT5uYW1lKSwgc2l6ZV9vYmpu YW1lKTsKLSsgICAgICBzaXplX25hbWUgPSBtYXggKHN0cmxlbiAocHJvYmUtPm5hbWUpLCBzaXpl X25hbWUpOwotKyAgICAgIHNpemVfcHJvdmlkZXIgPSBtYXggKHN0cmxlbiAocHJvYmUtPnByb3Zp ZGVyKSwgc2l6ZV9wcm92aWRlcik7Ci0rICAgICAgc2l6ZV9vYmpuYW1lID0gbWF4IChzdHJsZW4g KHByb2JlLT5vYmpmaWxlLT5uYW1lKSwgc2l6ZV9vYmpuYW1lKTsKLSAgICAgfQotIAotICAgdWlf b3V0X3RhYmxlX2hlYWRlciAoY3VycmVudF91aW91dCwgc2l6ZV9wcm92aWRlciwgdWlfbGVmdCwg InByb3ZpZGVyIiwKLUBAIC02MDEsMjYgKzU3NSwyNiBAQAotICAgICAgIC8qIFdlIGhhdmUgdG8g Z2VuZXJhdGUgdGhlIHRhYmxlIGhlYWRlciBmb3IgZWFjaCBuZXcgcHJvYmUgdHlwZSB0aGF0IHdl Ci0gCSB3aWxsIHByaW50LiAgKi8KLSAgICAgICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKHBy b2JlX29wc19jcCwgYWxsX3Byb2JlX29wcywgaXgsIHBvKTsgKytpeCkKLS0JZ2VuX3VpX291dF90 YWJsZV9oZWFkZXJfaW5mbyAoaXRlbXMsIHBvKTsKLSsJZ2VuX3VpX291dF90YWJsZV9oZWFkZXJf aW5mbyAocHJvYmVzLCBwbyk7Ci0gICAgIH0KLSAgIGVsc2UKLS0gICAgZ2VuX3VpX291dF90YWJs ZV9oZWFkZXJfaW5mbyAoaXRlbXMsIHBvcHMpOwotKyAgICBnZW5fdWlfb3V0X3RhYmxlX2hlYWRl cl9pbmZvIChwcm9iZXMsIHBvcHMpOwotIAotICAgdWlfb3V0X3RhYmxlX2hlYWRlciAoY3VycmVu dF91aW91dCwgc2l6ZV9vYmpuYW1lLCB1aV9sZWZ0LCAib2JqZWN0IiwKLSAJCSAgICAgICBfKCJP YmplY3QiKSk7Ci0gICB1aV9vdXRfdGFibGVfYm9keSAoY3VycmVudF91aW91dCk7Ci0gCi0tICBm b3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAocHJvYmVfYW5kX29iamZpbGVfcywgaXRlbXMsIGksIGVu dHJ5KTsgKytpKQotKyAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKHByb2JlX3AsIHByb2Jlcywg aSwgcHJvYmUpOyArK2kpCi0gICAgIHsKLSAgICAgICBzdHJ1Y3QgY2xlYW51cCAqaW5uZXI7Ci0g Ci0gICAgICAgaW5uZXIgPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAoY3Vy cmVudF91aW91dCwgInByb2JlIik7Ci0gCi0tICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAoY3Vy cmVudF91aW91dCwgInByb3ZpZGVyIiwgZW50cnktPnByb2JlLT5wcm92aWRlcik7Ci0tICAgICAg dWlfb3V0X2ZpZWxkX3N0cmluZyAoY3VycmVudF91aW91dCwgIm5hbWUiLCBlbnRyeS0+cHJvYmUt Pm5hbWUpOwotKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQsICJwcm92 aWRlciIsIHByb2JlLT5wcm92aWRlcik7Ci0rICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAoY3Vy cmVudF91aW91dCwgIm5hbWUiLCBwcm9iZS0+bmFtZSk7Ci0gICAgICAgdWlfb3V0X2ZpZWxkX2Nv cmVfYWRkciAoY3VycmVudF91aW91dCwgImFkZHIiLAotLQkJCSAgICAgIGdldF9vYmpmaWxlX2Fy Y2ggKGVudHJ5LT5vYmpmaWxlKSwKLS0JCQkgICAgICBlbnRyeS0+cHJvYmUtPmFkZHJlc3MpOwot KwkJCSAgICAgIGdldF9vYmpmaWxlX2FyY2ggKHByb2JlLT5vYmpmaWxlKSwKLSsJCQkgICAgICBw cm9iZS0+YWRkcmVzcyk7Ci0gCi0gICAgICAgaWYgKHBvcHMgPT0gTlVMTCkKLSAJewotQEAgLTYy OSwxOSArNjAzLDE5IEBACi0gCi0gCSAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChwcm9iZV9v cHNfY3AsIGFsbF9wcm9iZV9vcHMsIGl4LCBwbyk7Ci0gCSAgICAgICArK2l4KQotLQkgICAgaWYg KGVudHJ5LT5wcm9iZS0+cG9wcyA9PSBwbykKLS0JICAgICAgcHJpbnRfdWlfb3V0X2luZm8gKGVu dHJ5KTsKLSsJICAgIGlmIChwcm9iZS0+cG9wcyA9PSBwbykKLSsJICAgICAgcHJpbnRfdWlfb3V0 X2luZm8gKHByb2JlKTsKLSAJfQotICAgICAgIGVsc2UKLS0JcHJpbnRfdWlfb3V0X2luZm8gKGVu dHJ5KTsKLSsJcHJpbnRfdWlfb3V0X2luZm8gKHByb2JlKTsKLSAKLS0gICAgICB1aV9vdXRfZmll bGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAib2JqZWN0IiwgZW50cnktPm9iamZpbGUtPm5hbWUp OwotKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQsICJvYmplY3QiLCBw cm9iZS0+b2JqZmlsZS0+bmFtZSk7Ci0gICAgICAgdWlfb3V0X3RleHQgKGN1cnJlbnRfdWlvdXQs ICJcbiIpOwotIAotICAgICAgIGRvX2NsZWFudXBzIChpbm5lcik7Ci0gICAgIH0KLSAKLS0gIGFu eV9mb3VuZCA9ICFWRUNfZW1wdHkgKHByb2JlX2FuZF9vYmpmaWxlX3MsIGl0ZW1zKTsKLSsgIGFu eV9mb3VuZCA9ICFWRUNfZW1wdHkgKHByb2JlX3AsIHByb2Jlcyk7Ci0gICBkb19jbGVhbnVwcyAo Y2xlYW51cCk7Ci0gCi0gICBpZiAoIWFueV9mb3VuZCkKLUBAIC02NjIsMjMgKzYzNiwyNCBAQAot IHByb2JlX3NhZmVfZXZhbHVhdGVfYXRfcGMgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgdW5z aWduZWQgbikKLSB7Ci0gICBzdHJ1Y3QgcHJvYmUgKnByb2JlOwotLSAgc3RydWN0IG9iamZpbGUg Km9iamZpbGU7Ci0rICBjb25zdCBzdHJ1Y3Qgc3ltX3Byb2JlX2ZucyAqcHJvYmVfZm5zOwotICAg dW5zaWduZWQgbl9wcm9iZXM7Ci0gCi0tICBwcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKGdldF9m cmFtZV9wYyAoZnJhbWUpLCAmb2JqZmlsZSk7Ci0rICBwcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMg KGdldF9mcmFtZV9wYyAoZnJhbWUpKTsKLSAgIGlmICghcHJvYmUpCi0gICAgIHJldHVybiBOVUxM OwotLSAgZ2RiX2Fzc2VydCAob2JqZmlsZS0+c2YgJiYgb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9m bnMpOwotIAotLSAgbl9wcm9iZXMKLS0gICAgPSBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zucy0+ c3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAob2JqZmlsZSwKLS0JCQkJCQkJCXByb2JlKTsK LSsgIGdkYl9hc3NlcnQgKHByb2JlLT5vYmpmaWxlICE9IE5VTEwpOwotKyAgZ2RiX2Fzc2VydCAo cHJvYmUtPm9iamZpbGUtPnNmICE9IE5VTEwpOwotKyAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZp bGUtPnNmLT5zeW1fcHJvYmVfZm5zICE9IE5VTEwpOwotKwotKyAgcHJvYmVfZm5zID0gcHJvYmUt Pm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zOwotKyAgbl9wcm9iZXMgPSBwcm9iZV9mbnMtPnN5 bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHByb2JlKTsKLSsKLSAgIGlmIChuID49IG5fcHJv YmVzKQotICAgICByZXR1cm4gTlVMTDsKLSAKLS0gIHJldHVybiBvYmpmaWxlLT5zZi0+c3ltX3By b2JlX2Zucy0+c3ltX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChvYmpmaWxlLAotLQkJCQkJCQkJ ICBwcm9iZSwKLS0JCQkJCQkJCSAgbik7Ci0rICByZXR1cm4gcHJvYmVfZm5zLT5zeW1fZXZhbHVh dGVfcHJvYmVfYXJndW1lbnQgKHByb2JlLCBuKTsKLSB9Ci0gCi0gLyogU2VlIGNvbW1lbnQgaW4g cHJvYmUuaC4gICovCi0tLS0gc3JjL2dkYi9wcm9iZS5oCTIwMTIvMDQvMjcgMjA6NDc6NTUJMS4x Ci0rKysgc3JjL2dkYi9wcm9iZS5oCTIwMTIvMDcvMTggMTY6MTI6MTcJMS4yCi1AQCAtNjYsMjEg KzY2LDE4IEBACi0gCi0gICAgIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBvZiBQ Uk9CRS4gICovCi0gCi0tICAgIHVuc2lnbmVkICgqZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50KSAo c3RydWN0IHByb2JlICpwcm9iZSwKLS0JCQkJCSAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwot KyAgICB1bnNpZ25lZCAoKmdldF9wcm9iZV9hcmd1bWVudF9jb3VudCkgKHN0cnVjdCBwcm9iZSAq cHJvYmUpOwotIAotICAgICAvKiBFdmFsdWF0ZSB0aGUgTnRoIGFyZ3VtZW50IGZyb20gdGhlIFBS T0JFLCByZXR1cm5pbmcgYSB2YWx1ZQotICAgICAgICBjb3JyZXNwb25kaW5nIHRvIGl0LiAgVGhl IGFyZ3VtZW50IG51bWJlciBpcyByZXByZXNlbnRlZCBOLiAgKi8KLSAKLSAgICAgc3RydWN0IHZh bHVlICooKmV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50KSAoc3RydWN0IHByb2JlICpwcm9iZSwKLS0J CQkJCSAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJCQkJICAgICAgdW5zaWduZWQg bik7Ci0gCi0gICAgIC8qIENvbXBpbGUgdGhlIE50aCBhcmd1bWVudCBvZiB0aGUgUFJPQkUgdG8g YW4gYWdlbnQgZXhwcmVzc2lvbi4KLSAgICAgICAgVGhlIGFyZ3VtZW50IG51bWJlciBpcyByZXBy ZXNlbnRlZCBieSBOLiAgKi8KLSAKLS0gICAgdm9pZCAoKmNvbXBpbGVfdG9fYXgpIChzdHJ1Y3Qg cHJvYmUgKnByb2JlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLS0JCQkgICBzdHJ1Y3QgYWdl bnRfZXhwciAqYWV4cHIsCi0rICAgIHZvaWQgKCpjb21waWxlX3RvX2F4KSAoc3RydWN0IHByb2Jl ICpwcm9iZSwgc3RydWN0IGFnZW50X2V4cHIgKmFleHByLAotIAkJCSAgIHN0cnVjdCBheHNfdmFs dWUgKmF4c192YWx1ZSwgdW5zaWduZWQgbik7Ci0gCi0gICAgIC8qIFNldCB0aGUgc2VtYXBob3Jl IGFzc29jaWF0ZWQgd2l0aCB0aGUgUFJPQkUuICBUaGlzIGZ1bmN0aW9uIG9ubHkgbWFrZXMKLUBA IC0xMDgsOCArMTA1LDggQEAKLSAgICAgdm9pZCAoKmdlbl9pbmZvX3Byb2Jlc190YWJsZV9oZWFk ZXIpIChWRUMgKGluZm9fcHJvYmVfY29sdW1uX3MpICoqaGVhZHMpOwotIAotICAgICAvKiBGdW5j dGlvbiB0aGF0IHdpbGwgZmlsbCBWQUxVRVMgd2l0aCB0aGUgdmFsdWVzIG9mIHRoZSBleHRyYSBm aWVsZHMKLS0gICAgICAgdG8gYmUgcHJpbnRlZCBmb3IgUFJPQkUgIGFuZCBPQkpGSUxFLiAgSWYg dGhlIGJhY2tlbmQgaW1wbGVtZW50cwotLSAgICAgICB0aGUgYGdlbl91aV9vdXRfdGFibGVfaGVh ZGVyJyBtZXRob2QsIHRoZW4gaXQgc2hvdWxkIGltcGxlbWVudAotKyAgICAgICB0byBiZSBwcmlu dGVkIGZvciBQUk9CRS4gIElmIHRoZSBiYWNrZW5kIGltcGxlbWVudHMgdGhlCi0rICAgICAgIGBn ZW5fdWlfb3V0X3RhYmxlX2hlYWRlcicgbWV0aG9kLCB0aGVuIGl0IHNob3VsZCBpbXBsZW1lbnQK LSAgICAgICAgdGhpcyBtZXRob2QgYXMgd2VsbC4gIFRoZSBiYWNrZW5kIHNob3VsZCBhbHNvIGd1 YXJhbnRlZSB0aGF0IHRoZQotICAgICAgICBvcmRlciBhbmQgdGhlIG51bWJlciBvZiB2YWx1ZXMg aW4gdGhlIHZlY3RvciBpcyBleGFjdGx5IHRoZSBzYW1lCi0gICAgICAgIGFzIHRoZSBvcmRlciBv ZiB0aGUgZXh0cmEgZmllbGRzIHByb3ZpZGVkIGluIHRoZSBtZXRob2QKLUBAIC0xMTgsNyArMTE1 LDYgQEAKLSAgICAgICAgcG9zaXRpb24gaW4gdGhlIHZlY3Rvci4gICovCi0gCi0gICAgIHZvaWQg KCpnZW5faW5mb19wcm9iZXNfdGFibGVfdmFsdWVzKSAoc3RydWN0IHByb2JlICpwcm9iZSwKLS0J CQkJCSAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCQkJCQkgIFZFQyAoY29uc3RfY2hhcl9w dHIpICoqdmFsdWVzKTsKLSAgIH07Ci0gCi1AQCAtMTU3LDYgKzE1MywxMSBAQAotICAgICAvKiBU aGUgb3BlcmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwcm9iZS4gICovCi0gICAgIGNvbnN0 IHN0cnVjdCBwcm9iZV9vcHMgKnBvcHM7Ci0gCi0rICAgIC8qIFRoZSBvYmpmaWxlIHdoaWNoIGNv bnRhaW5zIHRoaXMgcHJvYmUuICBFdmVuIGlmIHRoZSBwcm9iZSBpcyBhbHNvCi0rICAgICAgIHBy ZXNlbnQgaW4gYSBzZXBhcmF0ZSBkZWJ1ZyBvYmpmaWxlLCB0aGlzIHZhcmlhYmxlIGFsd2F5cyBw b2ludHMgdG8KLSsgICAgICAgdGhlIG5vbi1zZXBhcmF0ZSBkZWJ1ZyBvYmpmaWxlLiAgKi8KLSsg ICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7Ci0rCi0gICAgIC8qIFRoZSBuYW1lIG9mIHRoZSBw cm9iZS4gICovCi0gICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gCi1AQCAtMTgxLDExICsxODIsOSBA QAotIGV4dGVybiB2b2lkIHJlZ2lzdGVyX3Byb2JlX29wcyAoc3RydWN0IHByb2JlICpwcm9iZSk7 Ci0gCi0gLyogR2l2ZW4gYSBQQywgZmluZCBhbiBhc3NvY2lhdGVkIHByb2JlIHdpdGggdHlwZSBQ VFlQRS4gIElmIGEgcHJvYmUgaXMKLS0gICBmb3VuZCwgc2V0ICpPQkpGSUxFX09VVCB0byB0aGUg cHJvYmUncyBvYmpmaWxlLCBhbmQgcmV0dXJuIHRoZQotLSAgIHByb2JlLiAgSWYgbm8gcHJvYmUg aXMgZm91bmQsIHJldHVybiBOVUxMLiAgKi8KLSsgICBmb3VuZCwgcmV0dXJuIGl0LiAgSWYgbm8g cHJvYmUgaXMgZm91bmQsIHJldHVybiBOVUxMLiAgKi8KLSAKLS1leHRlcm4gc3RydWN0IHByb2Jl ICpmaW5kX3Byb2JlX2J5X3BjIChDT1JFX0FERFIgcGMsCi0tCQkJCSAgICAgICBzdHJ1Y3Qgb2Jq ZmlsZSAqKm9iamZpbGVfb3V0KTsKLStleHRlcm4gc3RydWN0IHByb2JlICpmaW5kX3Byb2JlX2J5 X3BjIChDT1JFX0FERFIgcGMpOwotIAotIC8qIFNlYXJjaCBPQkpGSUxFIGZvciBhIHByb2JlIHdp dGggdGhlIGdpdmVuIFBST1ZJREVSLCBOQU1FIGFuZCBQVFlQRS4KLSAgICBSZXR1cm4gYSBWRUMg b2YgYWxsIHByb2JlcyB0aGF0IHdlcmUgZm91bmQuICBJZiBubyBtYXRjaGluZyBwcm9iZQotLS0t IHNyYy9nZGIvc3RhcC1wcm9iZS5jCTIwMTIvMDUvMDggMDE6MzU6MzUJMS40Ci0rKysgc3JjL2dk Yi9zdGFwLXByb2JlLmMJMjAxMi8wNy8xOCAxNjoxMjoxNwkxLjUKLUBAIC05MDMsMTAgKzkwMywx MCBAQAotICAgIHRoaXMgaW5mb3JtYXRpb24uICAqLwotIAotIHN0YXRpYyB2b2lkCi0tc3RhcF9w YXJzZV9wcm9iZV9hcmd1bWVudHMgKHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwgc3RydWN0IG9i amZpbGUgKm9iamZpbGUpCi0rc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHN0cnVjdCBzdGFw X3Byb2JlICpwcm9iZSkKLSB7Ci0gICBjb25zdCBjaGFyICpjdXI7Ci0tICBzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwotKyAgc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChwcm9iZS0+cC5vYmpmaWxlKTsKLSAKLSAg IGdkYl9hc3NlcnQgKCFwcm9iZS0+YXJnc19wYXJzZWQpOwotICAgY3VyID0gcHJvYmUtPmFyZ3Nf dS50ZXh0OwotQEAgLTk5MSwxNSArOTkxLDE0IEBACi0gICAgYXJndW1lbnQgc3RyaW5nLiAgKi8K LSAKLSBzdGF0aWMgdW5zaWduZWQKLS1zdGFwX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAoc3Ry dWN0IHByb2JlICpwcm9iZV9nZW5lcmljLAotLQkJCSAgICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSkKLStzdGFwX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAoc3RydWN0IHByb2JlICpwcm9i ZV9nZW5lcmljKQotIHsKLSAgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSA9IChzdHJ1Y3Qgc3Rh cF9wcm9iZSAqKSBwcm9iZV9nZW5lcmljOwotIAotICAgZ2RiX2Fzc2VydCAocHJvYmVfZ2VuZXJp Yy0+cG9wcyA9PSAmc3RhcF9wcm9iZV9vcHMpOwotIAotICAgaWYgKCFwcm9iZS0+YXJnc19wYXJz ZWQpCi0tICAgIHN0YXBfcGFyc2VfcHJvYmVfYXJndW1lbnRzIChwcm9iZSwgb2JqZmlsZSk7Ci0r ICAgIHN0YXBfcGFyc2VfcHJvYmVfYXJndW1lbnRzIChwcm9iZSk7Ci0gCi0gICBnZGJfYXNzZXJ0 IChwcm9iZS0+YXJnc19wYXJzZWQpOwotICAgcmV0dXJuIFZFQ19sZW5ndGggKHN0YXBfcHJvYmVf YXJnX3MsIHByb2JlLT5hcmdzX3UudmVjKTsKLUBAIC0xMDQyLDEwICsxMDQxLDEwIEBACi0gfQot IAotIHN0YXRpYyBzdHJ1Y3Qgc3RhcF9wcm9iZV9hcmcgKgotLXN0YXBfZ2V0X2FyZyAoc3RydWN0 IHN0YXBfcHJvYmUgKnByb2JlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdW5zaWduZWQgbikK LStzdGFwX2dldF9hcmcgKHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwgdW5zaWduZWQgbikKLSB7 Ci0gICBpZiAoIXByb2JlLT5hcmdzX3BhcnNlZCkKLS0gICAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1 bWVudHMgKHByb2JlLCBvYmpmaWxlKTsKLSsgICAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMg KHByb2JlKTsKLSAKLSAgIHJldHVybiBWRUNfaW5kZXggKHN0YXBfcHJvYmVfYXJnX3MsIHByb2Jl LT5hcmdzX3UudmVjLCBuKTsKLSB9Ci1AQCAtMTA1NCw4ICsxMDUzLDcgQEAKLSAgICBjb3JyZXNw b25kaW5nIHRvIGl0LiAgQXNzZXJ0aW9uIGlzIHRocm93biBpZiBOIGRvZXMgbm90IGV4aXN0LiAg Ki8KLSAKLSBzdGF0aWMgc3RydWN0IHZhbHVlICoKLS1zdGFwX2V2YWx1YXRlX3Byb2JlX2FyZ3Vt ZW50IChzdHJ1Y3QgcHJvYmUgKnByb2JlX2dlbmVyaWMsCi0tCQkJICAgICAgc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIHVuc2lnbmVkIG4pCi0rc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAo c3RydWN0IHByb2JlICpwcm9iZV9nZW5lcmljLCB1bnNpZ25lZCBuKQotIHsKLSAgIHN0cnVjdCBz dGFwX3Byb2JlICpzdGFwX3Byb2JlID0gKHN0cnVjdCBzdGFwX3Byb2JlICopIHByb2JlX2dlbmVy aWM7Ci0gICBzdHJ1Y3Qgc3RhcF9wcm9iZV9hcmcgKmFyZzsKLUBAIC0xMDYzLDcgKzEwNjEsNyBA QAotIAotICAgZ2RiX2Fzc2VydCAocHJvYmVfZ2VuZXJpYy0+cG9wcyA9PSAmc3RhcF9wcm9iZV9v cHMpOwotIAotLSAgYXJnID0gc3RhcF9nZXRfYXJnIChzdGFwX3Byb2JlLCBvYmpmaWxlLCBuKTsK LSsgIGFyZyA9IHN0YXBfZ2V0X2FyZyAoc3RhcF9wcm9iZSwgbik7Ci0gICByZXR1cm4gZXZhbHVh dGVfc3ViZXhwX3N0YW5kYXJkIChhcmctPmF0eXBlLCBhcmctPmFleHByLCAmcG9zLCBFVkFMX05P Uk1BTCk7Ci0gfQotIAotQEAgLTEwNzEsOSArMTA2OSw4IEBACi0gICAgQXNzZXJ0aW9uIGlzIHRo cm93biBpZiBOIGRvZXMgbm90IGV4aXN0LiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLXN0YXBfY29t cGlsZV90b19heCAoc3RydWN0IHByb2JlICpwcm9iZV9nZW5lcmljLCBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKLS0JCSAgICBzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwgc3RydWN0IGF4c192YWx1 ZSAqdmFsdWUsCi0tCQkgICAgdW5zaWduZWQgbikKLStzdGFwX2NvbXBpbGVfdG9fYXggKHN0cnVj dCBwcm9iZSAqcHJvYmVfZ2VuZXJpYywgc3RydWN0IGFnZW50X2V4cHIgKmV4cHIsCi0rCQkgICAg c3RydWN0IGF4c192YWx1ZSAqdmFsdWUsIHVuc2lnbmVkIG4pCi0gewotICAgc3RydWN0IHN0YXBf cHJvYmUgKnN0YXBfcHJvYmUgPSAoc3RydWN0IHN0YXBfcHJvYmUgKikgcHJvYmVfZ2VuZXJpYzsK LSAgIHN0cnVjdCBzdGFwX3Byb2JlX2FyZyAqYXJnOwotQEAgLTEwODEsNyArMTA3OCw3IEBACi0g Ci0gICBnZGJfYXNzZXJ0IChwcm9iZV9nZW5lcmljLT5wb3BzID09ICZzdGFwX3Byb2JlX29wcyk7 Ci0gCi0tICBhcmcgPSBzdGFwX2dldF9hcmcgKHN0YXBfcHJvYmUsIG9iamZpbGUsIG4pOwotKyAg YXJnID0gc3RhcF9nZXRfYXJnIChzdGFwX3Byb2JlLCBuKTsKLSAKLSAgIHBjID0gYXJnLT5hZXhw ci0+ZWx0czsKLSAgIGdlbl9leHByIChhcmctPmFleHByLCAmcGMsIGV4cHIsIHZhbHVlKTsKLUBA IC0xMTI0LDIwICsxMTIxLDI0IEBACi0gICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUgPSBnZXRf c2VsZWN0ZWRfZnJhbWUgKF8oIk5vIGZyYW1lIHNlbGVjdGVkIikpOwotICAgQ09SRV9BRERSIHBj ID0gZ2V0X2ZyYW1lX3BjIChmcmFtZSk7Ci0gICBpbnQgc2VsID0gKGludCkgKHVpbnRwdHJfdCkg ZGF0YTsKLS0gIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwotICAgc3RydWN0IHByb2JlICpwY19w cm9iZTsKLSsgIGNvbnN0IHN0cnVjdCBzeW1fcHJvYmVfZm5zICpwY19wcm9iZV9mbnM7Ci0gICB1 bnNpZ25lZCBuX2FyZ3M7Ci0gCi0gICAvKiBTRUwgPT0gLTEgbWVhbnMgIl9wcm9iZV9hcmdjIi4g ICovCi0gICBnZGJfYXNzZXJ0IChzZWwgPj0gLTEpOwotIAotLSAgcGNfcHJvYmUgPSBmaW5kX3By b2JlX2J5X3BjIChwYywgJm9iamZpbGUpOwotKyAgcGNfcHJvYmUgPSBmaW5kX3Byb2JlX2J5X3Bj IChwYyk7Ci0gICBpZiAocGNfcHJvYmUgPT0gTlVMTCkKLSAgICAgZXJyb3IgKF8oIk5vIFN5c3Rl bVRhcCBwcm9iZSBhdCBQQyAlcyIpLCBjb3JlX2FkZHJfdG9fc3RyaW5nIChwYykpOwotIAotLSAg bl9hcmdzCi0tICAgID0gb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVf YXJndW1lbnRfY291bnQgKG9iamZpbGUsCi0tCQkJCQkJCQlwY19wcm9iZSk7Ci0rICBnZGJfYXNz ZXJ0IChwY19wcm9iZS0+b2JqZmlsZSAhPSBOVUxMKTsKLSsgIGdkYl9hc3NlcnQgKHBjX3Byb2Jl LT5vYmpmaWxlLT5zZiAhPSBOVUxMKTsKLSsgIGdkYl9hc3NlcnQgKHBjX3Byb2JlLT5vYmpmaWxl LT5zZi0+c3ltX3Byb2JlX2ZucyAhPSBOVUxMKTsKLSsKLSsgIHBjX3Byb2JlX2ZucyA9IHBjX3By b2JlLT5vYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZuczsKLSsKLSsgIG5fYXJncyA9IHBjX3Byb2Jl X2Zucy0+c3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAocGNfcHJvYmUpOwotICAgaWYgKHNl bCA9PSAtMSkKLSAgICAgcmV0dXJuIHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChh cmNoKS0+YnVpbHRpbl9pbnQsIG5fYXJncyk7Ci0gCi1AQCAtMTE0NSw5ICsxMTQ2LDcgQEAKLSAg ICAgZXJyb3IgKF8oIkludmFsaWQgcHJvYmUgYXJndW1lbnQgJWQgLS0gcHJvYmUgaGFzICV1IGFy Z3VtZW50cyBhdmFpbGFibGUiKSwKLSAJICAgc2VsLCBuX2FyZ3MpOwotIAotLSAgcmV0dXJuIG9i amZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQgKG9i amZpbGUsCi0tCQkJCQkJCQkgIHBjX3Byb2JlLAotLQkJCQkJCQkJICBzZWwpOwotKyAgcmV0dXJu IHBjX3Byb2JlX2Zucy0+c3ltX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChwY19wcm9iZSwgc2Vs KTsKLSB9Ci0gCi0gLyogVGhpcyBpcyBjYWxsZWQgdG8gY29tcGlsZSBvbmUgb2YgdGhlICRfcHJv YmVfYXJnKiBjb252ZW5pZW5jZQotQEAgLTExNTksMjAgKzExNTgsMjUgQEAKLSB7Ci0gICBDT1JF X0FERFIgcGMgPSBleHByLT5zY29wZTsKLSAgIGludCBzZWwgPSAoaW50KSAodWludHB0cl90KSBk YXRhOwotLSAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7Ci0gICBzdHJ1Y3QgcHJvYmUgKnBjX3By b2JlOwotKyAgY29uc3Qgc3RydWN0IHN5bV9wcm9iZV9mbnMgKnBjX3Byb2JlX2ZuczsKLSAgIGlu dCBuX3Byb2JlczsKLSAKLSAgIC8qIFNFTCA9PSAtMSBtZWFucyAiX3Byb2JlX2FyZ2MiLiAgKi8K LSAgIGdkYl9hc3NlcnQgKHNlbCA+PSAtMSk7Ci0gCi0tICBwY19wcm9iZSA9IGZpbmRfcHJvYmVf YnlfcGMgKHBjLCAmb2JqZmlsZSk7Ci0rICBwY19wcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKHBj KTsKLSAgIGlmIChwY19wcm9iZSA9PSBOVUxMKQotICAgICBlcnJvciAoXygiTm8gU3lzdGVtVGFw IHByb2JlIGF0IFBDICVzIiksIGNvcmVfYWRkcl90b19zdHJpbmcgKHBjKSk7Ci0gCi0tICBuX3By b2JlcwotLSAgICA9IG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2Fy Z3VtZW50X2NvdW50IChvYmpmaWxlLAotLQkJCQkJCQkJcGNfcHJvYmUpOwotKyAgZ2RiX2Fzc2Vy dCAocGNfcHJvYmUtPm9iamZpbGUgIT0gTlVMTCk7Ci0rICBnZGJfYXNzZXJ0IChwY19wcm9iZS0+ b2JqZmlsZS0+c2YgIT0gTlVMTCk7Ci0rICBnZGJfYXNzZXJ0IChwY19wcm9iZS0+b2JqZmlsZS0+ c2YtPnN5bV9wcm9iZV9mbnMgIT0gTlVMTCk7Ci0rCi0rICBwY19wcm9iZV9mbnMgPSBwY19wcm9i ZS0+b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnM7Ci0rCi0rICBuX3Byb2JlcyA9IHBjX3Byb2Jl X2Zucy0+c3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAocGNfcHJvYmUpOwotKwotICAgaWYg KHNlbCA9PSAtMSkKLSAgICAgewotICAgICAgIHZhbHVlLT5raW5kID0gYXhzX3J2YWx1ZTsKLUBA IC0xMTg2LDggKzExOTAsNyBAQAotICAgICBlcnJvciAoXygiSW52YWxpZCBwcm9iZSBhcmd1bWVu dCAlZCAtLSBwcm9iZSBoYXMgJWQgYXJndW1lbnRzIGF2YWlsYWJsZSIpLAotIAkgICBzZWwsIG5f cHJvYmVzKTsKLSAKLS0gIG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fY29tcGlsZV90 b19heCAob2JqZmlsZSwgcGNfcHJvYmUsCi0tCQkJCQkJIGV4cHIsIHZhbHVlLCBzZWwpOwotKyAg cGNfcHJvYmVfZm5zLT5zeW1fY29tcGlsZV90b19heCAocGNfcHJvYmUsIGV4cHIsIHZhbHVlLCBz ZWwpOwotIH0KLSAKLSAMCi1AQCAtMTI5Nyw2ICsxMzAwLDcgQEAKLSAKLSAgIHJldCA9IG9ic3Rh Y2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAoKnJldCkpOwotICAg cmV0LT5wLnBvcHMgPSAmc3RhcF9wcm9iZV9vcHM7Ci0rICByZXQtPnAub2JqZmlsZSA9IG9iamZp bGU7Ci0gCi0gICAvKiBQcm92aWRlciBhbmQgdGhlIG5hbWUgb2YgdGhlIHByb2JlLiAgKi8KLSAg IHJldC0+cC5wcm92aWRlciA9ICZlbC0+ZGF0YVszICogc2l6ZV07Ci1AQCAtMTQ4MSwxNSArMTQ4 NSwxNiBAQAotIAotIHN0YXRpYyB2b2lkCi0gc3RhcF9nZW5faW5mb19wcm9iZXNfdGFibGVfdmFs dWVzIChzdHJ1Y3QgcHJvYmUgKnByb2JlX2dlbmVyaWMsCi0tCQkJCSAgIHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAotIAkJCQkgICBWRUMgKGNvbnN0X2NoYXJfcHRyKSAqKnJldCkKLSB7Ci0gICBz dHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUgPSAoc3RydWN0IHN0YXBfcHJvYmUgKikgcHJvYmVfZ2Vu ZXJpYzsKLS0gIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2Jq ZmlsZSk7Ci0rICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKLSAgIGNvbnN0IGNoYXIgKnZhbCA9 IE5VTEw7Ci0gCi0gICBnZGJfYXNzZXJ0IChwcm9iZV9nZW5lcmljLT5wb3BzID09ICZzdGFwX3By b2JlX29wcyk7Ci0gCi0rICBnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAocHJvYmUtPnAub2Jq ZmlsZSk7Ci0rCi0gICBpZiAocHJvYmUtPnNlbV9hZGRyKQotICAgICB2YWwgPSBwcmludF9jb3Jl X2FkZHJlc3MgKGdkYmFyY2gsIHByb2JlLT5zZW1fYWRkcik7Ci0gCi0tLS0gc3JjL2dkYi9zeW1m aWxlLmgJMjAxMi8wNS8yNCAyMjoxNDozNQkxLjEwOQotKysrIHNyYy9nZGIvc3ltZmlsZS5oCTIw MTIvMDcvMTggMTY6MTI6MTcJMS4xMTAKLUBAIC0zMjAsOCArMzIwLDcgQEAKLSAgICAgIGhhdmUg Y29tZSBmcm9tIGEgY2FsbCB0byB0aGlzIG9iamZpbGUncyBzeW1fZ2V0X3Byb2JlcyBtZXRob2Qu Ci0gICAgICBJZiB5b3UgcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBvZiBzeW1fZ2V0X3Byb2Jl cywgeW91IG11c3QKLSAgICAgIGltcGxlbWVudCB0aGlzIG1ldGhvZCBhcyB3ZWxsLiAgKi8KLS0g IHVuc2lnbmVkICgqc3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCkgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAotLQkJCQkJICAgIHN0cnVjdCBwcm9iZSAqcHJvYmUpOwotKyAgdW5zaWduZWQg KCpzeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50KSAoc3RydWN0IHByb2JlICpwcm9iZSk7Ci0g Ci0gICAvKiBFdmFsdWF0ZSB0aGUgTnRoIGFyZ3VtZW50IGF2YWlsYWJsZSB0byBQUk9CRS4gIFBS T0JFIHdpbGwgaGF2ZQotICAgICAgY29tZSBmcm9tIGEgY2FsbCB0byB0aGlzIG9iamZpbGUncyBz eW1fZ2V0X3Byb2JlcyBtZXRob2QuICBOIHdpbGwKLUBAIC0zMzAsOCArMzI5LDcgQEAKLSAgICAg IFBDIHdpbGwgbWF0Y2ggdGhlIGFkZHJlc3Mgb2YgdGhlIHByb2JlLiAgSWYgeW91IHByb3ZpZGUg YW4KLSAgICAgIGltcGxlbWVudGF0aW9uIG9mIHN5bV9nZXRfcHJvYmVzLCB5b3UgbXVzdCBpbXBs ZW1lbnQgdGhpcyBtZXRob2QKLSAgICAgIGFzIHdlbGwuICAqLwotLSAgc3RydWN0IHZhbHVlICoo KnN5bV9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCkgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAot LQkJCQkJCXN0cnVjdCBwcm9iZSAqcHJvYmUsCi0rICBzdHJ1Y3QgdmFsdWUgKigqc3ltX2V2YWx1 YXRlX3Byb2JlX2FyZ3VtZW50KSAoc3RydWN0IHByb2JlICpwcm9iZSwKLSAJCQkJCQl1bnNpZ25l ZCBuKTsKLSAKLSAgIC8qIENvbXBpbGUgdGhlIE50aCBwcm9iZSBhcmd1bWVudCB0byBhbiBhZ2Vu dCBleHByZXNzaW9uLiAgUFJPQkUKLUBAIC0zMzksOCArMzM3LDcgQEAKLSAgICAgIG1ldGhvZC4g IE4gd2lsbCBiZSBiZXR3ZWVuIDAgYW5kIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAgICBh dmFpbGFibGUgdG8gdGhpcyBwcm9iZS4gIEVYUFIgYW5kIFZBTFVFIGFyZSB0aGUgYWdlbnQgZXhw cmVzc2lvbgotICAgICAgdGhhdCBpcyBiZWluZyB1cGRhdGVkLiAgKi8KLS0gIHZvaWQgKCpzeW1f Y29tcGlsZV90b19heCkgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotLQkJCSAgICAgc3RydWN0 IHByb2JlICpwcm9iZSwKLSsgIHZvaWQgKCpzeW1fY29tcGlsZV90b19heCkgKHN0cnVjdCBwcm9i ZSAqcHJvYmUsCi0gCQkJICAgICBzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwKLSAJCQkgICAgIHN0 cnVjdCBheHNfdmFsdWUgKnZhbHVlLAotIAkJCSAgICAgdW5zaWduZWQgbik7CgpkaWZmIC0tZ2l0 IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTJvZjcucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJv YmUtMm9mNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFiMzVlOS4uMDAw MDAwMAotLS0gYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUtMm9mNy5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDc0ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTIt MDcvbXNnMDAxMjQuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNy8xOCAxNjox MjoxNQkxLjE0NDc0Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNy8xOCAxNjoyMDozNgkx LjE0NDc1Ci0jIyAtMSw1ICsxLDEwIEBACi0gMjAxMi0wNy0xOCAgU2VyZ2lvIER1cmlnYW4gSnVu aW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4KLSAKLSsJKiBwcm9iZS5jIChwcm9iZV9zYWZlX2V2 YWx1YXRlX2F0X3BjKTogUmVuYW1lIHZhcmlhYmxlIGBuX3Byb2JlcycuCi0rCSogc3RhcC1wcm9i ZS5jIChjb21waWxlX3Byb2JlX2FyZyk6IExpa2V3aXNlLgotKwotKzIwMTItMDctMTggIFNlcmdp byBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+Ci0rCi0gCSogZWxmcmVhZC5j IChlbGZfZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50KTogUmVtb3ZlIGBvYmpmaWxlJyBhcmd1bWVu dC4KLSAJKGVsZl9jb21waWxlX3RvX2F4KTogTGlrZXdpc2UuCi0gCSogaW5mcnVuLmMgKGluc2Vy dF9leGNlcHRpb25fcmVzdW1lX2Zyb21fcHJvYmUpOiBMaWtld2lzZS4KLS0tLSBzcmMvZ2RiL3By b2JlLmMJMjAxMi8wNy8xOCAxNjoxMjoxNwkxLjQKLSsrKyBzcmMvZ2RiL3Byb2JlLmMJMjAxMi8w Ny8xOCAxNjoyMDo0MwkxLjUKLUBAIC02MzcsNyArNjM3LDcgQEAKLSB7Ci0gICBzdHJ1Y3QgcHJv YmUgKnByb2JlOwotICAgY29uc3Qgc3RydWN0IHN5bV9wcm9iZV9mbnMgKnByb2JlX2ZuczsKLS0g IHVuc2lnbmVkIG5fcHJvYmVzOwotKyAgdW5zaWduZWQgbl9hcmdzOwotIAotICAgcHJvYmUgPSBm aW5kX3Byb2JlX2J5X3BjIChnZXRfZnJhbWVfcGMgKGZyYW1lKSk7Ci0gICBpZiAoIXByb2JlKQot QEAgLTY0OCw5ICs2NDgsOSBAQAotICAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUtPnNmLT5z eW1fcHJvYmVfZm5zICE9IE5VTEwpOwotIAotICAgcHJvYmVfZm5zID0gcHJvYmUtPm9iamZpbGUt PnNmLT5zeW1fcHJvYmVfZm5zOwotLSAgbl9wcm9iZXMgPSBwcm9iZV9mbnMtPnN5bV9nZXRfcHJv YmVfYXJndW1lbnRfY291bnQgKHByb2JlKTsKLSsgIG5fYXJncyA9IHByb2JlX2Zucy0+c3ltX2dl dF9wcm9iZV9hcmd1bWVudF9jb3VudCAocHJvYmUpOwotIAotLSAgaWYgKG4gPj0gbl9wcm9iZXMp Ci0rICBpZiAobiA+PSBuX2FyZ3MpCi0gICAgIHJldHVybiBOVUxMOwotIAotICAgcmV0dXJuIHBy b2JlX2Zucy0+c3ltX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChwcm9iZSwgbik7Ci0tLS0gc3Jj L2dkYi9zdGFwLXByb2JlLmMJMjAxMi8wNy8xOCAxNjoxMjoxNwkxLjUKLSsrKyBzcmMvZ2RiL3N0 YXAtcHJvYmUuYwkyMDEyLzA3LzE4IDE2OjIwOjQzCTEuNgotQEAgLTExNjAsNyArMTE2MCw3IEBA Ci0gICBpbnQgc2VsID0gKGludCkgKHVpbnRwdHJfdCkgZGF0YTsKLSAgIHN0cnVjdCBwcm9iZSAq cGNfcHJvYmU7Ci0gICBjb25zdCBzdHJ1Y3Qgc3ltX3Byb2JlX2ZucyAqcGNfcHJvYmVfZm5zOwot LSAgaW50IG5fcHJvYmVzOwotKyAgaW50IG5fYXJnczsKLSAKLSAgIC8qIFNFTCA9PSAtMSBtZWFu cyAiX3Byb2JlX2FyZ2MiLiAgKi8KLSAgIGdkYl9hc3NlcnQgKHNlbCA+PSAtMSk7Ci1AQCAtMTE3 NSwyMCArMTE3NSwyMCBAQAotIAotICAgcGNfcHJvYmVfZm5zID0gcGNfcHJvYmUtPm9iamZpbGUt PnNmLT5zeW1fcHJvYmVfZm5zOwotIAotLSAgbl9wcm9iZXMgPSBwY19wcm9iZV9mbnMtPnN5bV9n ZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHBjX3Byb2JlKTsKLSsgIG5fYXJncyA9IHBjX3Byb2Jl X2Zucy0+c3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAocGNfcHJvYmUpOwotIAotICAgaWYg KHNlbCA9PSAtMSkKLSAgICAgewotICAgICAgIHZhbHVlLT5raW5kID0gYXhzX3J2YWx1ZTsKLSAg ICAgICB2YWx1ZS0+dHlwZSA9IGJ1aWx0aW5fdHlwZSAoZXhwci0+Z2RiYXJjaCktPmJ1aWx0aW5f aW50OwotLSAgICAgIGF4X2NvbnN0X2wgKGV4cHIsIG5fcHJvYmVzKTsKLSsgICAgICBheF9jb25z dF9sIChleHByLCBuX2FyZ3MpOwotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotICAgZ2RiX2Fz c2VydCAoc2VsID49IDApOwotLSAgaWYgKHNlbCA+PSBuX3Byb2JlcykKLSsgIGlmIChzZWwgPj0g bl9hcmdzKQotICAgICBlcnJvciAoXygiSW52YWxpZCBwcm9iZSBhcmd1bWVudCAlZCAtLSBwcm9i ZSBoYXMgJWQgYXJndW1lbnRzIGF2YWlsYWJsZSIpLAotLQkgICBzZWwsIG5fcHJvYmVzKTsKLSsJ ICAgc2VsLCBuX2FyZ3MpOwotIAotICAgcGNfcHJvYmVfZm5zLT5zeW1fY29tcGlsZV90b19heCAo cGNfcHJvYmUsIGV4cHIsIHZhbHVlLCBzZWwpOwotIH0KCmRpZmYgLS1naXQgYS9nZGItZGxvcGVu LXN0YXAtcHJvYmUtNm9mNy5wYXRjaCBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS02b2Y3LnBhdGNo CmluZGV4IDU3NDE1MGUuLmFmNDQzMDUgMTAwNjQ0Ci0tLSBhL2dkYi1kbG9wZW4tc3RhcC1wcm9i ZS02b2Y3LnBhdGNoCisrKyBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS02b2Y3LnBhdGNoCkBAIC04 MSwxMSArODEsMTEgQEAgZ2RiL3Rlc3RzdWl0ZQogCSogZ2RiLmJhc2UvYnJlYWstZGxtb3Blbi5j OiBMaWtld2lzZS4KIAkqIGdkYi5iYXNlL2JyZWFrLWRsbW9wZW4tc29saWIuYzogTGlrZXdpc2Uu CiAKLUluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9icmVha3BvaW50LmgKK0luZGV4OiBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi9icmVha3BvaW50LmgKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjkxLjIwMTIwODE0Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAkyMDEyLTA4LTE0IDE3OjMxOjM3 LjA1MDk4NDQyNyArMDIwMAotKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL2JyZWFrcG9pbnQu aAkyMDEyLTA4LTE0IDE3OjM0OjQ0LjIwMzc0NjYwMSArMDIwMAotQEAgLTE1MTUsOCArMTUxNSw2 IEBAIGV4dGVybiBpbnQgdXNlcl9icmVha3BvaW50X3AgKHN0cnVjdCBicmUKKy0tLSBnZGItNy41 LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAkyMDEzLTAxLTE4IDIzOjU3OjE0Ljc4 Mjk3ODQ4NSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2JyZWFrcG9pbnQuaAky MDEzLTAxLTE4IDIzOjU3OjUwLjUxMTc5Mjg5MCArMDEwMAorQEAgLTE1NDgsOCArMTU0OCw2IEBA IGV4dGVybiBpbnQgdXNlcl9icmVha3BvaW50X3AgKHN0cnVjdCBicmUKICAvKiBBdHRlbXB0IHRv IGRldGVybWluZSBhcmNoaXRlY3R1cmUgb2YgbG9jYXRpb24gaWRlbnRpZmllZCBieSBTQUwuICAq LwogIGV4dGVybiBzdHJ1Y3QgZ2RiYXJjaCAqZ2V0X3NhbF9hcmNoIChzdHJ1Y3Qgc3ltdGFiX2Fu ZF9saW5lIHNhbCk7CiAgCkBAIC05NCwxMSArOTQsMTEgQEAgSW5kZXg6IGdkYi03LjQuOTEuMjAx MjA4MTQvZ2RiL2JyZWFrcG9pbnQuaAogIGV4dGVybiB2b2lkIGJyZWFrcG9pbnRzX3JlbG9jYXRl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAJCQkJICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRz ICpkZWx0YSk7CiAgCi1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvYnJlYWtwb2ludC5j CitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYnJlYWtwb2ludC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNC45MS4yMDEyMDgxNC5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMi0wOC0x NCAxNzozMTozNy4xMjg5ODQ0MDQgKzAyMDAKLSsrKyBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9i cmVha3BvaW50LmMJMjAxMi0wOC0xNCAxNzozNDo0NC4yMTE3NDY1OTcgKzAyMDAKLUBAIC01MjA1 LDcgKzUyMDUsNyBAQCBicHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNzX3NwYWNlCist LS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMy0wMS0xOCAy Mzo1NzoxNC43ODI5Nzg0ODUgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9icmVh a3BvaW50LmMJMjAxMy0wMS0xOCAyMzo1Nzo1MC41MTQ3OTI4NzkgKzAxMDAKK0BAIC01MjU0LDcg KzUyNTQsNyBAQCBicHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNzX3NwYWNlCiAgICAg IHsKICAgICAgICBpZiAoYnMtPmJyZWFrcG9pbnRfYXQgJiYgYnMtPmJyZWFrcG9pbnRfYXQtPnR5 cGUgPT0gYnBfc2hsaWJfZXZlbnQpCiAgCXsKQEAgLTEwNyw3ICsxMDcsNyBAQCBJbmRleDogZ2Ri LTcuNC45MS4yMDEyMDgxNC9nZGIvYnJlYWtwb2ludC5jCiAgCSAgYnJlYWs7CiAgCX0KICAgICAg fQotQEAgLTUzMDEsMjUgKzUzMDEsNiBAQCBoYW5kbGVfaml0X2V2ZW50ICh2b2lkKQorQEAgLTUz NTAsMjUgKzUzNTAsNiBAQCBoYW5kbGVfaml0X2V2ZW50ICh2b2lkKQogICAgdGFyZ2V0X3Rlcm1p bmFsX2luZmVyaW9yICgpOwogIH0KICAKQEAgLTEzMywxMSArMTMzLDExIEBAIEluZGV4OiBnZGIt Ny40LjkxLjIwMTIwODE0L2dkYi9icmVha3BvaW50LmMKICAvKiBQcmVwYXJlIFdIQVQgZmluYWwg ZGVjaXNpb24gZm9yIGluZnJ1bi4gICovCiAgCiAgLyogRGVjaWRlIHdoYXQgaW5mcnVuIG5lZWRz IHRvIGRvIHdpdGggdGhpcyBicHN0YXQuICAqLwotSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQv Z2RiL3NvbGliLmgKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zb2xpYi5oCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC45MS4yMDEyMDgxNC5vcmlnL2dkYi9zb2xpYi5oCTIwMTItMDIt MDMgMTY6MTk6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIv c29saWIuaAkyMDEyLTA4LTE0IDE3OjM0OjQ0LjI1Nzc0NjU4NyArMDIwMAotQEAgLTIxLDYgKzIx LDkgQEAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3NvbGliLmgJMjAxMy0wMS0x OCAyMzo1NzoxNC43ODI5Nzg0ODUgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9z b2xpYi5oCTIwMTMtMDEtMTggMjM6NTc6NTAuNTE1NzkyODc1ICswMTAwCitAQCAtMjAsNiArMjAs OSBAQAogICNpZm5kZWYgU09MSUJfSAogICNkZWZpbmUgU09MSUJfSAogIApAQCAtMTQ3LDcgKzE0 Nyw3IEBAIEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9zb2xpYi5oCiAgLyogRm9yd2Fy ZCBkZWNsJ3MgZm9yIHByb3RvdHlwZXMgKi8KICBzdHJ1Y3Qgc29fbGlzdDsKICBzdHJ1Y3QgdGFy Z2V0X29wczsKLUBAIC05MSw0ICs5NCwxNSBAQCBleHRlcm4gQ09SRV9BRERSIGdkYl9iZmRfbG9v a3VwX3N5bWJvbF9mCitAQCAtOTAsNCArOTMsMTUgQEAgZXh0ZXJuIENPUkVfQUREUiBnZGJfYmZk X2xvb2t1cF9zeW1ib2xfZgogIAkJCQkJCQkJICAgICAgdm9pZCAqKSwKICAJCQkJCQkgICAgdm9p ZCAqZGF0YSk7CiAgCkBAIC0xNjMsMTEgKzE2MywxMSBAQCBJbmRleDogZ2RiLTcuNC45MS4yMDEy MDgxNC9nZGIvc29saWIuaAogK2V4dGVybiB2b2lkIHVwZGF0ZV9zb2xpYl9icmVha3BvaW50cyAo dm9pZCk7CiArCiAgI2VuZGlmIC8qIFNPTElCX0ggKi8KLUluZGV4OiBnZGItNy40LjkxLjIwMTIw ODE0L2dkYi9zb2xpYi5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc29saWIuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuOTEuMjAxMjA4MTQub3JpZy9nZGIvc29saWIuYwkyMDEy LTA4LTE0IDE3OjMxOjM2LjgzMjk4NDQ5MiArMDIwMAotKysrIGdkYi03LjQuOTEuMjAxMjA4MTQv Z2RiL3NvbGliLmMJMjAxMi0wOC0xNCAxNzozNDo0NC4yNzI3NDY1ODMgKzAyMDAKLUBAIC0xMjI2 LDYgKzEyMjYsNDIgQEAgbm9fc2hhcmVkX2xpYnJhcmllcyAoY2hhciAqaWdub3JlZCwgaW50Cist LS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9zb2xpYi5jCTIwMTMtMDEtMTggMjM6NTc6 MTQuNzgyOTc4NDg1ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc29saWIuYwky MDEzLTAxLTE4IDIzOjU4OjA5LjE0NDcxNjYwMSArMDEwMAorQEAgLTEyMjEsNiArMTIyMSw0MiBA QCBub19zaGFyZWRfbGlicmFyaWVzIChjaGFyICppZ25vcmVkLCBpbnQKICAgIG9iamZpbGVfcHVy Z2Vfc29saWJzICgpOwogIH0KICAKQEAgLTE3Niw3ICsxNzYsNyBAQCBJbmRleDogZ2RiLTcuNC45 MS4yMDEyMDgxNC9nZGIvc29saWIuYwogK3ZvaWQKICtoYW5kbGVfc29saWJfZXZlbnQgKGJwc3Rh dCBicykKICt7Ci0rICBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyAqb3BzID0gc29saWJfb3BzICh0YXJn ZXRfZ2RiYXJjaCk7CisrICBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyAqb3BzID0gc29saWJfb3BzICh0 YXJnZXRfZ2RiYXJjaCAoKSk7CiArCiArICBpZiAob3BzLT5oYW5kbGVfc29saWJfZXZlbnQgIT0g TlVMTCkKICsgICAgb3BzLT5oYW5kbGVfc29saWJfZXZlbnQgKGJzKTsKQEAgLTIwMCw3ICsyMDAs NyBAQCBJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWIuYwogK3ZvaWQKICt1cGRh dGVfc29saWJfYnJlYWtwb2ludHMgKHZvaWQpCiArewotKyAgc3RydWN0IHRhcmdldF9zb19vcHMg Km9wcyA9IHNvbGliX29wcyAodGFyZ2V0X2dkYmFyY2gpOworKyAgc3RydWN0IHRhcmdldF9zb19v cHMgKm9wcyA9IHNvbGliX29wcyAodGFyZ2V0X2dkYmFyY2ggKCkpOwogKwogKyAgaWYgKG9wcy0+ dXBkYXRlX2JyZWFrcG9pbnRzICE9IE5VTEwpCiArICAgIG9wcy0+dXBkYXRlX2JyZWFrcG9pbnRz ICgpOwpAQCAtMjEwLDExICsyMTAsMTEgQEAgSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2Ri L3NvbGliLmMKICAvKiBSZWxvYWQgc2hhcmVkIGxpYnJhcmllcywgYnV0IGF2b2lkIHJlbG9hZGlu ZyB0aGUgc2FtZSBzeW1ib2wgZmlsZQogICAgIHdlIGFscmVhZHkgaGF2ZSBsb2FkZWQuICAqLwog IAotSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGlzdC5oCitJbmRleDogZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvc29saXN0LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjkxLjIw MTIwODE0Lm9yaWcvZ2RiL3NvbGlzdC5oCTIwMTItMDEtMDQgMDk6MTc6MTEuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saXN0LmgJMjAxMi0wOC0xNCAxNzoz NDo0NC4yNzM3NDY1ODQgKzAyMDAKLUBAIC0yMyw2ICsyMyw4IEBACistLS0gZ2RiLTcuNS41MC4y MDEzMDExOC5vcmlnL2dkYi9zb2xpc3QuaAkyMDEzLTAxLTE4IDIzOjU3OjE0Ljc4Mjk3ODQ4NSAr MDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3NvbGlzdC5oCTIwMTMtMDEtMTggMjM6 NTc6NTAuNTE1NzkyODc1ICswMTAwCitAQCAtMjIsNiArMjIsOCBAQAogICNkZWZpbmUgU09fTkFN RV9NQVhfUEFUSF9TSVpFIDUxMgkvKiBGSVhNRTogU2hvdWxkIGJlIGR5bmFtaWMgKi8KICAvKiBG b3IgZG9tYWluX2VudW0gZG9tYWluLiAgKi8KICAjaW5jbHVkZSAic3ltdGFiLmgiCkBAIC0yMjMs NyArMjIzLDcgQEAgSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGlzdC5oCiAgCiAg LyogRm9yd2FyZCBkZWNsYXJhdGlvbiBmb3IgdGFyZ2V0IHNwZWNpZmljIGxpbmsgbWFwIGluZm9y bWF0aW9uLiAgVGhpcwogICAgIHN0cnVjdCBpcyBvcGFxdWUgdG8gYWxsIGJ1dCB0aGUgdGFyZ2V0 IHNwZWNpZmljIGZpbGUuICAqLwotQEAgLTE0OSw2ICsxNTEsMjAgQEAgc3RydWN0IHRhcmdldF9z b19vcHMKK0BAIC0xNDgsNiArMTUwLDIwIEBAIHN0cnVjdCB0YXJnZXRfc29fb3BzCiAgICAgICAg IGNvcmUgZmlsZSAoaW4gcGFydGljdWxhciwgZm9yIHJlYWRvbmx5IHNlY3Rpb25zKS4gICovCiAg ICAgIGludCAoKmtlZXBfZGF0YV9pbl9jb3JlKSAoQ09SRV9BRERSIHZhZGRyLAogIAkJCSAgICAg IHVuc2lnbmVkIGxvbmcgc2l6ZSk7CkBAIC0yNDQsMTEgKzI0NCwxMSBAQCBJbmRleDogZ2RiLTcu NC45MS4yMDEyMDgxNC9nZGIvc29saXN0LmgKICAgIH07CiAgCiAgLyogRnJlZSB0aGUgbWVtb3J5 IGFzc29jaWF0ZWQgd2l0aCBhIChzb19saXN0ICopLiAgKi8KLUluZGV4OiBnZGItNy40LjkxLjIw MTIwODE0L2dkYi9pbmZydW4uYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2luZnJ1 bi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC45MS4yMDEyMDgxNC5vcmlnL2dkYi9pbmZydW4u YwkyMDEyLTA4LTE0IDE3OjMzOjE2LjI0OTk1NTAwNyArMDIwMAotKysrIGdkYi03LjQuOTEuMjAx MjA4MTQvZ2RiL2luZnJ1bi5jCTIwMTItMDgtMTQgMTc6MzQ6NDQuMjc2NzQ2NTgzICswMjAwCi1A QCAtMzYxLDYgKzM2MSwxNiBAQCBzdGF0aWMgc3RydWN0IHN5bWJvbCAqc3RlcF9zdGFydF9mdW5j dGlvCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9pbmZydW4uYwkyMDEzLTAxLTE4 IDIzOjU3OjE0Ljc4Mjk3ODQ4NSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2lu ZnJ1bi5jCTIwMTMtMDEtMTggMjM6NTc6NTAuNTE3NzkyODY1ICswMTAwCitAQCAtMzY5LDYgKzM2 OSwxNiBAQCBzdGF0aWMgc3RydWN0IHN5bWJvbCAqc3RlcF9zdGFydF9mdW5jdGlvCiAgLyogTm9u emVybyBpZiB3ZSB3YW50IHRvIGdpdmUgY29udHJvbCB0byB0aGUgdXNlciB3aGVuIHdlJ3JlIG5v dGlmaWVkCiAgICAgb2Ygc2hhcmVkIGxpYnJhcnkgZXZlbnRzIGJ5IHRoZSBkeW5hbWljIGxpbmtl ci4gICovCiAgaW50IHN0b3Bfb25fc29saWJfZXZlbnRzOwpAQCAtMjY1LDcgKzI2NSw3IEBAIElu ZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9pbmZydW4uYwogIHN0YXRpYyB2b2lkCiAgc2hv d19zdG9wX29uX3NvbGliX2V2ZW50cyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0 eSwKICAJCQkgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUp Ci1AQCAtMzMyMSw3ICszMzMxLDcgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhl Y3V0aW9uXworQEAgLTMzNDcsNyArMzM1Nyw3IEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3Ry dWN0IGV4ZWN1dGlvbl8KICAJICAgIGNvbnRleHRfc3dpdGNoIChlY3MtPnB0aWQpOwogIAkgIHJl Z2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoZWNzLT5wdGlkKTsKICAKQEAgLTI3NCw3ICsy NzQsNyBAQCBJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvaW5mcnVuLmMKICAKICAJICBl Y3MtPmV2ZW50X3RocmVhZC0+Y29udHJvbC5zdG9wX2Jwc3RhdAogIAkgICAgPSBicHN0YXRfc3Rv cF9zdGF0dXMgKGdldF9yZWdjYWNoZV9hc3BhY2UgKHJlZ2NhY2hlKSwKLUBAIC03MjI2LDcgKzcy MzYsNyBAQCBTaG93IHN0b3BwaW5nIGZvciBzaGFyZWQgbGlicmFyeSBldmVudHMuCitAQCAtNzMy Nyw3ICs3MzM3LDcgQEAgU2hvdyBzdG9wcGluZyBmb3Igc2hhcmVkIGxpYnJhcnkgZXZlbnRzLgog IElmIG5vbnplcm8sIGdkYiB3aWxsIGdpdmUgY29udHJvbCB0byB0aGUgdXNlciB3aGVuIHRoZSBk eW5hbWljIGxpbmtlclxuXAogIG5vdGlmaWVzIGdkYiBvZiBzaGFyZWQgbGlicmFyeSBldmVudHMu ICBUaGUgbW9zdCBjb21tb24gZXZlbnQgb2YgaW50ZXJlc3RcblwKICB0byB0aGUgdXNlciB3b3Vs ZCBiZSBsb2FkaW5nL3VubG9hZGluZyBvZiBhIG5ldyBsaWJyYXJ5LiIpLApAQCAtMjgzLDExICsy ODMsMTEgQEAgSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL2luZnJ1bi5jCiAgCQkJICAg IHNob3dfc3RvcF9vbl9zb2xpYl9ldmVudHMsCiAgCQkJICAgICZzZXRsaXN0LCAmc2hvd2xpc3Qp OwogIAotSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuOTEuMjAxMjA4MTQub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTItMDgtMTQgMTc6MzQ6 MzkuMzQ2NzUyODQwICswMjAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWItc3Zy NC5jCTIwMTItMDgtMTQgMTc6MzU6NDIuNjM1NzMyNTk2ICswMjAwCi1AQCAtNDcsMTAgKzQ3LDEy IEBACistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAxMy0w MS0xOCAyMzo1Nzo0NS40MzA4MTU5NDMgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi9zb2xpYi1zdnI0LmMJMjAxMy0wMS0xOCAyMzo1Nzo1MC41MTk3OTI4NTggKzAxMDAKK0BAIC00 NiwxMCArNDYsMTIgQEAKICAjaW5jbHVkZSAiYXV4di5oIgogICNpbmNsdWRlICJleGNlcHRpb25z LmgiCiAgI2luY2x1ZGUgImdkYl9iZmQuaCIKQEAgLTMwMCw3ICszMDAsNyBAQCBJbmRleDogZ2Ri LTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5jCiAgCiAgLyogTGluayBtYXAgaW5mbyB0 byBpbmNsdWRlIGluIGFuIGFsbG9jYXRlZCBzb19saXN0IGVudHJ5LiAgKi8KICAKLUBAIC03MSw2 ICs3MywxNiBAQCBzdHJ1Y3QgbG1faW5mbworQEAgLTcwLDYgKzcyLDE2IEBAIHN0cnVjdCBsbV9p bmZvCiAgCiAgICAgIC8qIFZhbHVlcyByZWFkIGluIGZyb20gaW5mZXJpb3IncyBmaWVsZHMgb2Yg dGhlIHNhbWUgbmFtZS4gICovCiAgICAgIENPUkVfQUREUiBsX2xkLCBsX25leHQsIGxfcHJldiwg bF9uYW1lOwpAQCAtMzE3LDcgKzMxNyw3IEBAIEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dk Yi9zb2xpYi1zdnI0LmMKICAgIH07CiAgCiAgLyogT24gU1ZSNCBzeXN0ZW1zLCBhIGxpc3Qgb2Yg c3ltYm9scyBpbiB0aGUgZHluYW1pYyBsaW5rZXIgd2hlcmUKLUBAIC0xMDcsNiArMTE5LDUzIEBA IHN0YXRpYyBjb25zdCAgY2hhciAqIGNvbnN0IG1haW5fbmFtZV9saXMKK0BAIC0xMDYsNiArMTE4 LDUzIEBAIHN0YXRpYyBjb25zdCAgY2hhciAqIGNvbnN0IG1haW5fbmFtZV9saXMKICAgIE5VTEwK ICB9OwogIApAQCAtMzcxLDcgKzM3MSw3IEBAIEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dk Yi9zb2xpYi1zdnI0LmMKICAvKiBQZXIgcHNwYWNlIFNWUjQgc3BlY2lmaWMgZGF0YS4gICovCiAg CiAgc3RydWN0IHN2cjRfaW5mbwotQEAgLTEyOSwxNyArMTg4LDU4IEBAIHN0cnVjdCBzdnI0X2lu Zm8KK0BAIC0xMjgsMTcgKzE4Nyw1OCBAQCBzdHJ1Y3Qgc3ZyNF9pbmZvCiAgICBDT1JFX0FERFIg aW50ZXJwX3RleHRfc2VjdF9oaWdoOwogICAgQ09SRV9BRERSIGludGVycF9wbHRfc2VjdF9sb3c7 CiAgICBDT1JFX0FERFIgaW50ZXJwX3BsdF9zZWN0X2hpZ2g7CkBAIC00MzAsNyArNDMwLDcgQEAg SW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLXN2cjQuYwogICAgeGZyZWUgKGlu Zm8pOwogIH0KICAKLUBAIC0xODgsMTAgKzI4OCwyMSBAQCBzdnI0X3NhbWVfMSAoY29uc3QgY2hh ciAqZ2RiX3NvX25hbWUsIGNvCitAQCAtMTg3LDEwICsyODcsMjEgQEAgc3ZyNF9zYW1lXzEgKGNv bnN0IGNoYXIgKmdkYl9zb19uYW1lLCBjbwogICAgcmV0dXJuIDA7CiAgfQogIApAQCAtNDUzLDcg KzQ1Myw3IEBAIEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9zb2xpYi1zdnI0LmMKICB9 CiAgCiAgc3RhdGljIHN0cnVjdCBsbV9pbmZvICoKLUBAIC0zMjIsMTggKzQzMywyNiBAQCBsbV9h ZGRyX2NoZWNrIChzdHJ1Y3Qgc29fbGlzdCAqc28sIGJmZCAqCitAQCAtMzIxLDE4ICs0MzIsMjYg QEAgbG1fYWRkcl9jaGVjayAoc3RydWN0IHNvX2xpc3QgKnNvLCBiZmQgKgogIAkgICAgfQogIAkg IGVsc2UKICAJICAgIHsKQEAgLTQ5Miw3ICs0OTIsNyBAQCBJbmRleDogZ2RiLTcuNC45MS4yMDEy MDgxNC9nZGIvc29saWItc3ZyNC5jCiAgCSAgICB9CiAgCX0KICAKLUBAIC03NzUsMTYgKzg5NCwx MCBAQCBsb2NhdGVfYmFzZSAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbykKK0BAIC03NzQsMTYgKzg5 MywxMCBAQCBsb2NhdGVfYmFzZSAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbykKICAgIHJldHVybiBp bmZvLT5kZWJ1Z19iYXNlOwogIH0KICAKQEAgLTUxMCw4ICs1MTAsOCBAQCBJbmRleDogZ2RiLTcu NC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5jCiArcl9tYXBfZnJvbV9kZWJ1Z19iYXNlIChD T1JFX0FERFIgZGVidWdfYmFzZSkKICB7CiAgICBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqbG1v ID0gc3ZyNF9mZXRjaF9saW5rX21hcF9vZmZzZXRzICgpOwotICAgc3RydWN0IHR5cGUgKnB0cl90 eXBlID0gYnVpbHRpbl90eXBlICh0YXJnZXRfZ2RiYXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7Ci1A QCAtNzkzLDEzICs5MDYsMjcgQEAgc29saWJfc3ZyNF9yX21hcCAoc3RydWN0IHN2cjRfaW5mbyAq aW5mbworICAgc3RydWN0IHR5cGUgKnB0cl90eXBlID0gYnVpbHRpbl90eXBlICh0YXJnZXRfZ2Ri YXJjaCAoKSktPmJ1aWx0aW5fZGF0YV9wdHI7CitAQCAtNzkyLDEzICs5MDUsMjcgQEAgc29saWJf c3ZyNF9yX21hcCAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbwogIAogICAgVFJZX0NBVENIIChleCwg UkVUVVJOX01BU0tfRVJST1IpCiAgICAgIHsKQEAgLTU0MCw3ICs1NDAsNyBAQCBJbmRleDogZ2Ri LTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5jCiAgLyogRmluZCByX2JyayBmcm9tIHRo ZSBpbmZlcmlvcidzIGRlYnVnIGJhc2UuICAqLwogIAogIHN0YXRpYyBDT1JFX0FERFIKLUBAIC0x MTY0LDE1ICsxMjkxLDE3IEBAIHN2cjRfZGVmYXVsdF9zb3MgKHZvaWQpCitAQCAtMTE2MywxNSAr MTI5MCwxNyBAQCBzdnI0X2RlZmF1bHRfc29zICh2b2lkKQogICAgcmV0dXJuIG5ldzsKICB9CiAg CkBAIC01NjUsNyArNTY1LDcgQEAgSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGli LXN2cjQuYwogIAogICAgZm9yICg7IGxtICE9IDA7IHByZXZfbG0gPSBsbSwgbG0gPSBuZXh0X2xt KQogICAgICB7Ci1AQCAtMTE4OSw3ICsxMzE4LDcgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKENPUkVf QUREUiBsbSwgc3RydWN0CitAQCAtMTE4OCw3ICsxMzE3LDcgQEAgc3ZyNF9yZWFkX3NvX2xpc3Qg KENPUkVfQUREUiBsbSwgc3RydWN0CiAgICAgICAgaWYgKG5ldy0+bG1faW5mbyA9PSBOVUxMKQog IAl7CiAgCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CkBAIC01NzQsMTYgKzU3NCwxNiBAQCBJ bmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5jCiAgCX0KICAKICAgICAg ICBuZXh0X2xtID0gbmV3LT5sbV9pbmZvLT5sX25leHQ7Ci1AQCAtMTIwMCw3ICsxMzI5LDcgQEAg c3ZyNF9yZWFkX3NvX2xpc3QgKENPUkVfQUREUiBsbSwgc3RydWN0Ci0gCQkgICBwYWRkcmVzcyAo dGFyZ2V0X2dkYmFyY2gsIHByZXZfbG0pLAotIAkJICAgcGFkZHJlc3MgKHRhcmdldF9nZGJhcmNo LCBuZXctPmxtX2luZm8tPmxfcHJldikpOworQEAgLTExOTksNyArMTMyOCw3IEBAIHN2cjRfcmVh ZF9zb19saXN0IChDT1JFX0FERFIgbG0sIHN0cnVjdAorIAkJICAgcGFkZHJlc3MgKHRhcmdldF9n ZGJhcmNoICgpLCBwcmV2X2xtKSwKKyAJCSAgIHBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCAoKSwg bmV3LT5sbV9pbmZvLT5sX3ByZXYpKTsKICAJICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKIC0J ICBicmVhazsKICsJICByZXR1cm4gMDsKICAJfQogIAogICAgICAgIC8qIEZvciBTVlI0IHZlcnNp b25zLCB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGxpbmsgbWFwIGlzIGZvciB0aGUKLUBAIC0xMjk1 LDIwICsxNDI0LDYxIEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0sIHN0cnVjdAor QEAgLTEyOTQsMjAgKzE0MjMsNjEgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKENPUkVfQUREUiBsbSwg c3RydWN0CiAgICAgICAgKipsaW5rX3B0cl9wdHIgPSBuZXc7CiAgICAgICAgKmxpbmtfcHRyX3B0 ciA9ICZuZXctPm5leHQ7CiAgICAgIH0KQEAgLTY0OCw3ICs2NDgsNyBAQCBJbmRleDogZ2RiLTcu NC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5jCiAgCiAgICAvKiBGYWxsIGJhY2sgdG8gbWFu dWFsIGV4YW1pbmF0aW9uIG9mIHRoZSB0YXJnZXQgaWYgdGhlIHBhY2tldCBpcyBub3QKICAgICAg IHN1cHBvcnRlZCBvciBnZGJzZXJ2ZXIgZmFpbGVkIHRvIGZpbmQgRFRfREVCVUcuICBnZGIuc2Vy dmVyL3NvbGliLWxpc3QuZXhwCi1AQCAtMTMzMSw2ICsxNTAxLDEwIEBAIHN2cjRfY3VycmVudF9z b3MgKHZvaWQpCitAQCAtMTMzMCw2ICsxNTAwLDEwIEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQp CiAgCiAgICBpbmZvID0gZ2V0X3N2cjRfaW5mbyAoKTsKICAKQEAgLTY1OSw3ICs2NTksNyBAQCBJ bmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5jCiAgICAvKiBBbHdheXMg bG9jYXRlIHRoZSBkZWJ1ZyBzdHJ1Y3QsIGluIGNhc2UgaXQgaGFzIG1vdmVkLiAgKi8KICAgIGlu Zm8tPmRlYnVnX2Jhc2UgPSAwOwogICAgbG9jYXRlX2Jhc2UgKGluZm8pOwotQEAgLTEzNDAsMzUg KzE1MTQsMTIgQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKK0BAIC0xMzM5LDM1ICsxNTEzLDEy IEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCiAgICBpZiAoISBpbmZvLT5kZWJ1Z19iYXNlKQog ICAgICByZXR1cm4gc3ZyNF9kZWZhdWx0X3NvcyAoKTsKICAKQEAgLTY5OCw4ICs2OTgsOCBAQCBJ bmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5jCiAgfQogIAogIC8qIEdl dCB0aGUgYWRkcmVzcyBvZiB0aGUgbGlua19tYXAgZm9yIGEgZ2l2ZW4gT0JKRklMRS4gICovCi1A QCAtMTQ1MCw2ICsxNjAxLDQ5OCBAQCBleGVjX2VudHJ5X3BvaW50IChzdHJ1Y3QgYmZkICphYmZk LCBzdHJ1Ci0gCQkJCQkgICAgIHRhcmcpOworQEAgLTE0NTIsNiArMTYwMyw0OTggQEAgZXhlY19l bnRyeV9wb2ludCAoc3RydWN0IGJmZCAqYWJmZCwgc3RydQorICAgcmV0dXJuIGdkYmFyY2hfYWRk cl9iaXRzX3JlbW92ZSAodGFyZ2V0X2dkYmFyY2ggKCksIGFkZHIpOwogIH0KICAKICsvKiBBIHBy b2JlIGFuZCBpdHMgYXNzb2NpYXRlZCBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUuICAqLwpAQCAtMTE5 Nyw3ICsxMTk3LDcgQEAgSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLXN2cjQu YwogIC8qIEhlbHBlciBmdW5jdGlvbiBmb3IgZ2RiX2JmZF9sb29rdXBfc3ltYm9sLiAgKi8KICAK ICBzdGF0aWMgaW50Ci1AQCAtMTUwMiw2ICsyMTQ1LDkgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qg c3ZyNF9pbmZvICppbmZvLCBpbgorQEAgLTE1MDQsNiArMjE0Nyw5IEBAIGVuYWJsZV9icmVhayAo c3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KICAgIGluZm8tPmludGVycF90ZXh0X3NlY3RfbG93 ID0gaW5mby0+aW50ZXJwX3RleHRfc2VjdF9oaWdoID0gMDsKICAgIGluZm8tPmludGVycF9wbHRf c2VjdF9sb3cgPSBpbmZvLT5pbnRlcnBfcGx0X3NlY3RfaGlnaCA9IDA7CiAgCkBAIC0xMjA3LDcg KzEyMDcsNyBAQCBJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5jCiAg ICAvKiBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBzaGFyZWQgbGlicmFyeSBsaXN0IGluIHRoZSB0YXJn ZXQsIGFuZAogICAgICAgcl9kZWJ1ZyBjb250YWlucyByX2Jyaywgc2V0IHRoZSBicmVha3BvaW50 IHRoZXJlIC0gdGhpcyBzaG91bGQKICAgICAgIG1lYW4gcl9icmsgaGFzIGFscmVhZHkgYmVlbiBy ZWxvY2F0ZWQuICBBc3N1bWUgdGhlIGR5bmFtaWMgbGlua2VyCi1AQCAtMTUzMyw3ICsyMTc5LDcg QEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgorQEAgLTE1MzUsNyAr MjE4MSw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KICAJIFRo YXQga25vd2xlZGdlIGlzIGVuY29kZWQgaW4gdGhlIGFkZHJlc3MsIGlmIGl0J3MgVGh1bWIgdGhl IGxvdyBiaXQKICAJIGlzIDEuICBIb3dldmVyLCB3ZSd2ZSBzdHJpcHBlZCB0aGF0IGluZm8gYWJv dmUgYW5kIGl0J3Mgbm90IGNsZWFyCiAgCSB3aGF0IGFsbCB0aGUgY29uc2VxdWVuY2VzIGFyZSBv ZiBwYXNzaW5nIGEgbm9uLWFkZHJfYml0c19yZW1vdmUnZApAQCAtMTIxNiw0NCArMTIxNiw0NCBA QCBJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5jCiAgCSBmaW5kX3Bj X3NlY3Rpb24gdmVyaWZpZXMgd2Uga25vdyBhYm91dCB0aGUgYWRkcmVzcyBhbmQgaGF2ZSBzb21l CiAgCSBob3BlIG9mIGNvbXB1dGluZyB0aGUgcmlnaHQga2luZCBvZiBicmVha3BvaW50IHRvIHVz ZSAodmlhCiAgCSBzeW1ib2wgaW5mbykuICBJdCBkb2VzIG1lYW4gdGhhdCBHREIgbmVlZHMgdG8g YmUgcG9pbnRlZCBhdCBhCi1AQCAtMTU3MSw3ICsyMjE3LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1 Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgorQEAgLTE1NzMsNyArMjIxOSw3IEBAIGVuYWJsZV9icmVh ayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KICAJCSsgYmZkX3NlY3Rpb25fc2l6ZSAodG1w X2JmZCwgaW50ZXJwX3NlY3QpOwogIAkgICAgfQogIAotLQkgIGNyZWF0ZV9zb2xpYl9ldmVudF9i cmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCwgc3ltX2FkZHIpOwotKwkgIHN2cjRfY3JlYXRlX3Nv bGliX2V2ZW50X2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCwgc3ltX2FkZHIpOworLQkgIGNy ZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIp OworKwkgIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJj aCAoKSwgc3ltX2FkZHIpOwogIAkgIHJldHVybiAxOwogIAl9CiAgICAgIH0KLUBAIC0xNzI5LDcg KzIzNzUsOCBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCitAQCAt MTczMSw3ICsyMzc3LDggQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBp bgogIAogICAgICAgIGlmIChzeW1fYWRkciAhPSAwKQogIAl7Ci0tCSAgY3JlYXRlX3NvbGliX2V2 ZW50X2JyZWFrcG9pbnQgKHRhcmdldF9nZGJhcmNoLCBsb2FkX2FkZHIgKyBzeW1fYWRkcik7Ci0r CSAgc3ZyNF9jcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMgKHRhcmdldF9nZGJhcmNoLAor LQkgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgbG9h ZF9hZGRyICsgc3ltX2FkZHIpOworKwkgIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9p bnRzICh0YXJnZXRfZ2RiYXJjaCAoKSwKICsJCQkJCSAgICAgICBsb2FkX2FkZHIgKyBzeW1fYWRk cik7CiAgCSAgeGZyZWUgKGludGVycF9uYW1lKTsKICAJICByZXR1cm4gMTsKICAJfQotQEAgLTE3 NTUsNyArMjQwMiw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4K LSAJICBzeW1fYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHRhcmdl dF9nZGJhcmNoLAorQEAgLTE3NTcsNyArMjQwNCw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2 cjRfaW5mbyAqaW5mbywgaW4KKyAJICBzeW1fYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1 bmNfcHRyX2FkZHIgKHRhcmdldF9nZGJhcmNoICgpLAogIAkJCQkJCQkgc3ltX2FkZHIsCiAgCQkJ CQkJCSAmY3VycmVudF90YXJnZXQpOwotLQkgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50 ICh0YXJnZXRfZ2RiYXJjaCwgc3ltX2FkZHIpOwotKwkgIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50 X2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCwgc3ltX2FkZHIpOworLQkgIGNyZWF0ZV9zb2xp Yl9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOworKwkgIHN2 cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3lt X2FkZHIpOwogIAkgIHJldHVybiAxOwogIAl9CiAgICAgIH0KLUBAIC0xNzcxLDcgKzI0MTgsNyBA QCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCi0gCSAgICAgIHN5bV9h ZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAodGFyZ2V0X2dkYmFyY2gs CitAQCAtMTc3Myw3ICsyNDIwLDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICpp bmZvLCBpbgorIAkgICAgICBzeW1fYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRy X2FkZHIgKHRhcmdldF9nZGJhcmNoICgpLAogIAkJCQkJCQkgICAgIHN5bV9hZGRyLAogIAkJCQkJ CQkgICAgICZjdXJyZW50X3RhcmdldCk7Ci0tCSAgICAgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVh a3BvaW50ICh0YXJnZXRfZ2RiYXJjaCwgc3ltX2FkZHIpOwotKwkgICAgICBzdnI0X2NyZWF0ZV9z b2xpYl9ldmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2gsIHN5bV9hZGRyKTsKKy0JICAg ICAgY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnQgKHRhcmdldF9nZGJhcmNoICgpLCBzeW1f YWRkcik7CisrCSAgICAgIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzICh0YXJn ZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOwogIAkgICAgICByZXR1cm4gMTsKICAJICAgIH0KICAJ fQotQEAgLTIyODEsNiArMjkyOCw5IEBAIHN2cjRfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sg KGludCBmcm8KK0BAIC0yMjY5LDYgKzI5MTYsOSBAQCBzdnI0X3NvbGliX2NyZWF0ZV9pbmZlcmlv cl9ob29rIChpbnQgZnJvCiAgCiAgICBpbmZvID0gZ2V0X3N2cjRfaW5mbyAoKTsKICAKQEAgLTEy NjMsMTcgKzEyNjMsMTcgQEAgSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLXN2 cjQuYwogICAgLyogUmVsb2NhdGUgdGhlIG1haW4gZXhlY3V0YWJsZSBpZiBuZWNlc3NhcnkuICAq LwogICAgc3ZyNF9yZWxvY2F0ZV9tYWluX2V4ZWN1dGFibGUgKCk7CiAgCi1AQCAtMjU0Nyw0ICsz MTk3LDYgQEAgX2luaXRpYWxpemVfc3ZyNF9zb2xpYiAodm9pZCkKK0BAIC0yNTEwLDQgKzMxNjAs NiBAQCBfaW5pdGlhbGl6ZV9zdnI0X3NvbGliICh2b2lkKQogICAgc3ZyNF9zb19vcHMubG9va3Vw X2xpYl9nbG9iYWxfc3ltYm9sID0gZWxmX2xvb2t1cF9saWJfc3ltYm9sOwogICAgc3ZyNF9zb19v cHMuc2FtZSA9IHN2cjRfc2FtZTsKICAgIHN2cjRfc29fb3BzLmtlZXBfZGF0YV9pbl9jb3JlID0g c3ZyNF9rZWVwX2RhdGFfaW5fY29yZTsKICsgIHN2cjRfc29fb3BzLmhhbmRsZV9zb2xpYl9ldmVu dCA9IHN2cjRfaGFuZGxlX3NvbGliX2V2ZW50OwogKyAgc3ZyNF9zb19vcHMudXBkYXRlX2JyZWFr cG9pbnRzID0gc3ZyNF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHM7CiAgfQotSW5kZXg6 IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1kbG1vcGVu LXNvbGliLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvYnJlYWstZGxtb3Blbi1zb2xpYi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWRsbW9wZW4tc29saWIuYwkyMDEyLTA4LTE0IDE3 OjM0OjQ0LjMzMDc0NjU5MSArMDIwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9icmVhay1kbG1vcGVuLXNvbGliLmMJMjAxMy0wMS0xOCAyMzo1Nzo1MC41 MTk3OTI4NTggKzAxMDAKIEBAIC0wLDAgKzEsMjQgQEAKICsvKiBDb3B5cmlnaHQgMjAxMiBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTEyOTksMTAgKzEyOTksMTAgQEAgSW5k ZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1kbG1v cGVuLXNvbGliLmMKICsKICsgIHJldHVybiAwOwogK30KLUluZGV4OiBnZGItNy40LjkxLjIwMTIw ODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstZGxtb3Blbi5jCitJbmRleDogZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWRsbW9wZW4uYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1k bG1vcGVuLmMJMjAxMi0wOC0xNCAxNzozNDo0NC4zMzk3NDY1NzYgKzAyMDAKKysrKyBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstZGxtb3Blbi5jCTIwMTMt MDEtMTggMjM6NTc6NTAuNTE5NzkyODU4ICswMTAwCiBAQCAtMCwwICsxLDU4IEBACiArLyogQ29w eXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0xMzYyLDEw ICsxMzYyLDEwIEBAIEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvYnJlYWstZGxtb3Blbi5jCiArCiArICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcu NC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWRsbW9wZW4uZXhwCitJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWRs bW9wZW4uZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2JyZWFrLWRsbW9wZW4uZXhwCTIwMTItMDgtMTQgMTc6MzQ6NDQuMzQzNzQ2NTYzICsw MjAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFr LWRsbW9wZW4uZXhwCTIwMTMtMDEtMTggMjM6NTc6NTAuNTE5NzkyODU4ICswMTAwCiBAQCAtMCww ICsxLDEyNSBAQAogKyMgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCiArCkBAIC0xNDkyLDEwICsxNDkyLDEwIEBAIEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstZGxtb3Blbi5leHAKICsgICAgZ2RiX3Rlc3Qg ImMiIHtCcmVha3BvaW50IFswLTldKywgLiogaW4gc3RvcCBcKFwpfQogKyAgICBjaGVja19pbmZv X3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICM3IiAwCiArfQotSW5kZXg6IGdkYi03LjQuOTEu MjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCitJbmRleDog Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5l eHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjkxLjIwMTIwODE0Lm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMTItMDYtMjEgMjI6NDY6MjEuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Jy ZWFrLWludGVycC5leHAJMjAxMi0wOC0xNCAxNzozNDo0NC4zNDQ3NDY1NjUgKzAyMDAKKy0tLSBn ZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRl cnAuZXhwCTIwMTMtMDEtMTggMjM6NTc6MTQuNzgyOTc4NDg1ICswMTAwCisrKysgZ2RiLTcuNS41 MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMy0w MS0xOCAyMzo1Nzo1MC41MjA3OTI4NTQgKzAxMDAKIEBAIC0xMDksMTIgKzEwOSwxOSBAQCBwcm9j IHN0cmlwX2RlYnVnIHtkZXN0fSB7CiAgICAgIH0KICB9CkBAIC0xNTkxLDEwICsxNTkxLDEwIEBA IEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWst aW50ZXJwLmV4cAogIAogIAkgICAgIyBVc2UgdHdvIHNlcGFyYXRlIGdkYl90ZXN0X211bHRpcGxl IHN0YXRlbWVudHMgdG8gYXZvaWQgdGltZW91dHMgZHVlCiAgCSAgICAjIHRvIHNsb3cgcHJvY2Vz c2luZyBvZiB3aWxkY2FyZCBjYXB0dXJpbmcgbG9uZyBvdXRwdXQKLUluZGV4OiBnZGItNy40Ljkx LjIwMTIwODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLXNvbGliLmMKK0lu ZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJv YmVzLXNvbGliLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjkxLjIwMTIwODE0L2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYnJlYWstcHJvYmVzLXNvbGliLmMJMjAxMi0wOC0xNCAxNzozNDo0NC4zNTU3NDY1 NjEgKzAyMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YnJlYWstcHJvYmVzLXNvbGliLmMJMjAxMy0wMS0xOCAyMzo1Nzo1MC41MjA3OTI4NTQgKzAxMDAK IEBAIC0wLDAgKzEsMjQgQEAKICsvKiBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KICsKQEAgLTE2MjAsMTAgKzE2MjAsMTAgQEAgSW5kZXg6IGdkYi03LjQuOTEu MjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMtc29saWIuYwogKwog KyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYv bnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuOTEu MjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMuYwkyMDEyLTA4LTE0 IDE3OjM0OjQ0LjM2Mjc0NjU2MSArMDIwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMuYwkyMDEzLTAxLTE4IDIzOjU3OjUwLjUyMDc5 Mjg1NCArMDEwMAogQEAgLTAsMCArMSwyNiBAQAogKy8qIENvcHlyaWdodCAyMDEyIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTY1MSwxMCArMTY1MSwxMCBAQCBJbmRleDog Z2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy5j CiArCiArICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy5leHAKK0luZGV4OiBnZGItNy41LjUwLjIwMTMw MTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmV4cAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQog LS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdk Yi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMuZXhw CTIwMTItMDgtMTQgMTc6MzQ6NDQuMzYzNzQ2NTYxICswMjAwCisrKysgZ2RiLTcuNS41MC4yMDEz MDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy5leHAJMjAxMy0wMS0xOCAy Mzo1Nzo1MC41MjA3OTI4NTQgKzAxMDAKIEBAIC0wLDAgKzEsNzYgQEAKICsjIENvcHlyaWdodCAy MDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTczMiwxMCArMTczMiwx MCBAQCBJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Jy ZWFrLXByb2Jlcy5leHAKICsgICAgIyBDYWxsIHNvbWV0aGluZyB0byBlbnN1cmUgdGhhdCByZWxv Y2F0aW9uIG9jY3VycmVkCiArICAgIGdkYl90ZXN0ICJjYWxsIGZvbygyMykiICJmb28gMjMuKlxc XCQuKiA9IC4qIgogK30KLUluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvaW5mby1zaGFyZWQtc29saWIxLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQtc29saWIxLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNy40LjkxLjIwMTIwODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQtc29s aWIxLmMJMjAxMi0wOC0xNCAxNzozNDo0NC4zNjU3NDY1NjEgKzAyMDAKKysrKyBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQtc29saWIxLmMJMjAx My0wMS0xOCAyMzo1Nzo1MC41MjA3OTI4NTQgKzAxMDAKIEBAIC0wLDAgKzEsMjQgQEAKICsvKiBD b3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTE3NjEs MTAgKzE3NjEsMTAgQEAgSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjEuYwogKwogKyAgcmV0dXJuIDA7CiArfQotSW5kZXg6 IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC1z b2xpYjIuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9pbmZvLXNoYXJlZC1zb2xpYjIuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAx LTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjIuYwkyMDEyLTA4LTE0IDE3OjM0 OjQ0LjM2NTc0NjU2MSArMDIwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjIuYwkyMDEzLTAxLTE4IDIzOjU3OjUwLjUyMDc5 Mjg1NCArMDEwMAogQEAgLTAsMCArMSwyNCBAQAogKy8qIENvcHlyaWdodCAyMDEyIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTc5MCwxMCArMTc5MCwxMCBAQCBJbmRleDog Z2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLXNv bGliMi5jCiArCiArICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLmMKK0luZGV4OiBnZGItNy41LjUwLjIw MTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQog LS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdk Yi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC5jCTIw MTItMDgtMTQgMTc6MzQ6NDQuMzY2NzQ2NTYxICswMjAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLmMJMjAxMy0wMS0xOCAyMzo1Nzo1 MC41MjA3OTI4NTQgKzAxMDAKIEBAIC0wLDAgKzEsNDggQEAKICsvKiBDb3B5cmlnaHQgMjAxMiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTE4NDMsMTAgKzE4NDMsMTAgQEAg SW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNo YXJlZC5jCiArCiArICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLmV4cAorSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC5leHAKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy40LjkxLjIwMTIwODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQu ZXhwCTIwMTItMDgtMTQgMTc6MzQ6NDQuMzY3NzQ2NTYxICswMjAwCisrKysgZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLmV4cAkyMDEzLTAxLTE4 IDIzOjU3OjUwLjUyMTc5Mjg1MCArMDEwMAogQEAgLTAsMCArMSwxMzkgQEAKICsjIENvcHlyaWdo dCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwoKZGlmZiAtLWdpdCBhL2dk Yi1kbG9wZW4tc3RhcC1wcm9iZS03b2Y3LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTdv ZjcucGF0Y2gKaW5kZXggMDc0ZGIyNC4uOGYyYjQxOSAxMDA2NDQKLS0tIGEvZ2RiLWRsb3Blbi1z dGFwLXByb2JlLTdvZjcucGF0Y2gKKysrIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTdvZjcucGF0 Y2gKQEAgLTEzLDEzICsxMywxMyBAQAogCSogc29saWItc3ZyNC5jIChzdnI0X2hhbmRsZV9zb2xp Yl9ldmVudCk6IEluaGliaXQgc2VjdGlvbiBtYXAKIAl1cGRhdGVzIGZvciBjYWxscyB0byBldmFs dWF0ZV9wcm9iZV9hcmd1bWVudC4KIAotSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL29i amZpbGVzLmgKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9vYmpmaWxlcy5oCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC45MS4yMDEyMDgxNC5vcmlnL2dkYi9vYmpmaWxlcy5oCTIwMTIt MDgtMTQgMTc6MTY6NTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9n ZGIvb2JqZmlsZXMuaAkyMDEyLTA4LTE0IDE3OjIwOjU1LjkxMzE3NDYwOSArMDIwMAotQEAgLTUy Niw2ICs1MjYsMjIgQEAgZXh0ZXJuIHZvaWQgc2V0X29iamZpbGVfZGF0YSAoc3RydWN0IG9iagot IGV4dGVybiB2b2lkICpvYmpmaWxlX2RhdGEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJ CSAgIGNvbnN0IHN0cnVjdCBvYmpmaWxlX2RhdGEgKmRhdGEpOworLS0tIGdkYi03LjUuNTAuMjAx MzAxMTgub3JpZy9nZGIvb2JqZmlsZXMuaAkyMDEzLTAxLTE4IDIzOjE4OjE2Ljg2MjMxNTY3MyAr MDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL29iamZpbGVzLmgJMjAxMy0wMS0xOCAy MzoxODozNi43MDIzNDM0ODIgKzAxMDAKK0BAIC01MDgsNiArNTA4LDIyIEBAIGV4dGVybiBpbnQg aW5fcGx0X3NlY3Rpb24gKENPUkVfQUREUiwgY2gKKyAgICBtb2R1bGVzLiAgKi8KKyBERUNMQVJF X1JFR0lTVFJZKG9iamZpbGUpOwogIAogKy8qIEluIG5vcm1hbCB1c2UsIHRoZSBzZWN0aW9uIG1h cCB3aWxsIGJlIHJlYnVpbHQgYnkgRklORF9QQ19TRUNUSU9OCiArICAgaWYgb2JqZmlsZXMgaGF2 ZSBiZWVuIGFkZGVkLCByZW1vdmVkIG9yIHJlbG9jYXRlZCBzaW5jZSBpdCB3YXMgbGFzdApAQCAt NDAsMTEgKzQwLDExIEBAIEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9vYmpmaWxlcy5o CiAgZXh0ZXJuIHZvaWQgZGVmYXVsdF9pdGVyYXRlX292ZXJfb2JqZmlsZXNfaW5fc2VhcmNoX29y ZGVyCiAgICAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgICAgaXRlcmF0ZV9vdmVyX29iamZp bGVzX2luX3NlYXJjaF9vcmRlcl9jYl9mdHlwZSAqY2IsCi1JbmRleDogZ2RiLTcuNC45MS4yMDEy MDgxNC9nZGIvb2JqZmlsZXMuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL29iamZp bGVzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjkxLjIwMTIwODE0Lm9yaWcvZ2RiL29iamZp bGVzLmMJMjAxMi0wOC0xNCAxNzoxNjo1NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40Ljkx LjIwMTIwODE0L2dkYi9vYmpmaWxlcy5jCTIwMTItMDgtMTQgMTc6MjA6NTUuOTE1MTc0NjA5ICsw MjAwCi1AQCAtNzAsNiArNzAsOSBAQCBzdHJ1Y3Qgb2JqZmlsZV9wc3BhY2VfaW5mbworLS0tIGdk Yi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvb2JqZmlsZXMuYwkyMDEzLTAxLTE4IDIzOjE4OjEz LjY0NzMxMTAwNiArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL29iamZpbGVzLmMJ MjAxMy0wMS0xOCAyMzoxODoxNi44NjIzMTU2NzMgKzAxMDAKK0BAIC02OSw2ICs2OSw5IEBAIHN0 cnVjdCBvYmpmaWxlX3BzcGFjZV9pbmZvCiAgICBpbnQgb2JqZmlsZXNfY2hhbmdlZF9wOwogICAg c3RydWN0IG9ial9zZWN0aW9uICoqc2VjdGlvbnM7CiAgICBpbnQgbnVtX3NlY3Rpb25zOwpAQCAt NTQsNyArNTQsNyBAQCBJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvb2JqZmlsZXMuYwog IH07CiAgCiAgLyogUGVyLXByb2dyYW0tc3BhY2UgZGF0YSBrZXkuICAqLwotQEAgLTEyOTUsNyAr MTI5OCw3IEBAIGZpbmRfcGNfc2VjdGlvbiAoQ09SRV9BRERSIHBjKQorQEAgLTEzNTYsNyArMTM1 OSw3IEBAIGZpbmRfcGNfc2VjdGlvbiAoQ09SRV9BRERSIHBjKQogICAgICByZXR1cm4gczsKICAK ICAgIHBzcGFjZV9pbmZvID0gZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKGN1cnJlbnRfcHJvZ3Jh bV9zcGFjZSk7CkBAIC02Myw3ICs2Myw3IEBAIEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dk Yi9vYmpmaWxlcy5jCiAgICAgIHsKICAgICAgICB1cGRhdGVfc2VjdGlvbl9tYXAgKGN1cnJlbnRf cHJvZ3JhbV9zcGFjZSwKICAJCQkgICZwc3BhY2VfaW5mby0+c2VjdGlvbnMsCi1AQCAtMTQ2Myw2 ICsxNDY2LDMwIEBAIG9iamZpbGVzX2NoYW5nZWQgKHZvaWQpCitAQCAtMTQxNSw2ICsxNDE4LDMw IEBAIG9iamZpbGVzX2NoYW5nZWQgKHZvaWQpCiAgICBnZXRfb2JqZmlsZV9wc3BhY2VfZGF0YSAo Y3VycmVudF9wcm9ncmFtX3NwYWNlKS0+b2JqZmlsZXNfY2hhbmdlZF9wID0gMTsKICB9CiAgCkBA IC05NCwxMSArOTQsMTEgQEAgSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL29iamZpbGVz LmMKICAvKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlICJpdGVyYXRlX292ZXJf b2JqZmlsZXNfaW5fc2VhcmNoX29yZGVyIgogICAgIGdkYmFyY2ggbWV0aG9kLiAgSXQgaXMgZXF1 aXZhbGVudCB0byB1c2UgdGhlIEFMTF9PQkpGSUxFUyBtYWNybywKICAgICBzZWFyY2hpbmcgdGhl IG9iamZpbGVzIGluIHRoZSBvcmRlciB0aGV5IGFyZSBzdG9yZWQgaW50ZXJuYWxseSwKLUluZGV4 OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9zb2xpYi1zdnI0LmMKK0luZGV4OiBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi9zb2xpYi1zdnI0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjkxLjIw MTIwODE0Lm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEyLTA4LTE0IDE3OjIwOjQyLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLXN2cjQuYwkyMDEyLTA4 LTE0IDE3OjIxOjE0LjA5MDE2OTIxNiArMDIwMAotQEAgLTE4NDcsNiArMTg0Nyw3IEBAIHN2cjRf aGFuZGxlX3NvbGliX2V2ZW50IChicHN0YXQgYnMpCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5v cmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAxMy0wMS0xOCAyMzoxODoxMy42NDkzMTEwMTAgKzAxMDAK KysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zb2xpYi1zdnI0LmMJMjAxMy0wMS0xOCAyMzox ODoxNi44NjMzMTU2NzUgKzAxMDAKK0BAIC0xODQ5LDYgKzE4NDksNyBAQCBzdnI0X2hhbmRsZV9z b2xpYl9ldmVudCAoYnBzdGF0IGJzKQogICAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9z dnI0X2luZm8gKCk7CiAgICBzdHJ1Y3QgcHJvYmVfYW5kX2luZm8gYnVmLCAqcGkgPSAmYnVmOwog ICAgZW51bSBwcm9iZV9hY3Rpb24gYWN0aW9uOwpAQCAtMTA2LDcgKzEwNiw3IEBAIEluZGV4OiBn ZGItNy40LjkxLjIwMTIwODE0L2dkYi9zb2xpYi1zdnI0LmMKICAgIHN0cnVjdCB2YWx1ZSAqdmFs OwogICAgTE9OR0VTVCBsbWlkOwogICAgQ09SRV9BRERSIGRlYnVnX2Jhc2UsIGxtID0gMDsKLUBA IC0xODcwLDYgKzE4NzEsMTkgQEAgc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQgKGJwc3RhdCBicykK K0BAIC0xODcyLDYgKzE4NzMsMTkgQEAgc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQgKGJwc3RhdCBi cykKICAgIGlmIChhY3Rpb24gPT0gTkFNRVNQQUNFX05PX0FDVElPTikKICAgICAgcmV0dXJuOwog IApAQCAtMTI2LDcgKzEyNiw3IEBAIEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9zb2xp Yi1zdnI0LmMKICAgIHZhbCA9IGV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChwaS0+cHJvYmUsIDAp OwogICAgaWYgKHZhbCA9PSBOVUxMKQogICAgICBnb3RvIGVycm9yOwotQEAgLTE5MDEsNiArMTkx NSw5IEBAIHN2cjRfaGFuZGxlX3NvbGliX2V2ZW50IChicHN0YXQgYnMpCitAQCAtMTkwMyw2ICsx OTE3LDkgQEAgc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQgKGJwc3RhdCBicykKICAJYWN0aW9uID0g TkFNRVNQQUNFX1JFTE9BRDsKICAgICAgfQogIApAQCAtMTM2LDcgKzEzNiw3IEBAIEluZGV4OiBn ZGItNy40LjkxLjIwMTIwODE0L2dkYi9zb2xpYi1zdnI0LmMKICAgIGlmIChhY3Rpb24gPT0gTkFN RVNQQUNFX1VQREFURV9PUl9SRUxPQUQpCiAgICAgIHsKICAgICAgICBpZiAobmFtZXNwYWNlX3Vw ZGF0ZV9pbmNyZW1lbnRhbCAoaW5mbywgbG1pZCwgbG0sIGlzX2luaXRpYWxfbnMpKQotQEAgLTE5 MjMsNiArMTk0MCw4IEBAIHN2cjRfaGFuZGxlX3NvbGliX2V2ZW50IChicHN0YXQgYnMpCitAQCAt MTkyNSw2ICsxOTQyLDggQEAgc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQgKGJwc3RhdCBicykKICAg IHdhcm5pbmcgKF8oIlByb2Jlcy1iYXNlZCBkeW5hbWljIGxpbmtlciBpbnRlcmZhY2UgZmFpbGVk LlxuIgogIAkgICAgICJSZXZlcnRpbmcgdG8gb3JpZ2luYWwgaW50ZXJmYWNlLlxuIikpOwogIAoK ZGlmZiAtLWdpdCBhL2dkYi1lbnRyeXZhbC1pbmxpbmVkLnBhdGNoIGIvZ2RiLWVudHJ5dmFsLWlu bGluZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjYmU4NGIuLjAwMDAw MDAKLS0tIGEvZ2RiLWVudHJ5dmFsLWlubGluZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4 ODggKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMTAv bXNnMDAwOTUuaHRtbAotU3ViamVjdDogW3BhdGNoXSBlbnRyeSB2YWx1ZXM6IEZpeCByZXNvbHZp bmcgaW4gaW5saW5lZCBmcmFtZXMKLQotSGksCi0KLUJyZWFrcG9pbnQgMSwgZm4yICh5PTxvcHRp bWl6ZWQgb3V0PiwgeD02KSBhdCBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYzoz MgotMzIJICAgICAgeSA9IC0yICsgeDsJLyogYnJlYWstaGVyZSAqLwotKGdkYikgaW5mbyBhZGRy IHkKLShnZGIpIGJ0Ci0jMCAgZm4yICh5PTxvcHRpbWl6ZWQgb3V0PiwgeD02KSBhdCBnZGIuYXJj aC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYzozMgotIzEgIGZuMyAoeD14QGVudHJ5PTYsIHk9 eUBlbnRyeT0yNSkgYXQgZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmM6NDIKLSMy ICAweDAwMDAwMDAwMDA0MDA0YWYgaW4gbWFpbiAoKSBhdCBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12 YWx1ZS1pbmxpbmUuYzo0OAotKGdkYikgaW5mbyBmcmFtZQotU3RhY2sgbGV2ZWwgMCwgZnJhbWUg YXQgMHg3ZmZmZmZmZmRiNjg6Ci0gcmlwID0gMHg0MDA1YmMgaW4gZm4yIChnZGIuYXJjaC9hbWQ2 NC1lbnRyeS12YWx1ZS1pbmxpbmUuYzozMik7IHNhdmVkIHJpcCAweDQwMDRhZgotIGlubGluZWQg aW50byBmcmFtZSAxCi1bLi4uXQotKGdkYikgc2V0IGRlYnVnIGVudHJ5LXZhbHVlcyAxCi0oZ2Ri KSBwIHkKLURXX09QX0dOVV9lbnRyeV92YWx1ZSByZXNvbHZpbmcgZXhwZWN0cyBjYWxsZWUgZm4x IGF0IDB4NDAwNWEwIGJ1dCB0aGUgY2FsbGVkIGZyYW1lIGlzIGZvciBmbjMgYXQgMHg0MDA1YjAK LQotRkFJTDoKLS0tLS0tCi0kMSA9IDxvcHRpbWl6ZWQgb3V0PgotUEFTUzoKLS0tLS0tCi0kMSA9 IDI1Ci0KLShnZGIpIHAveCAkcGMKLSQyID0gMHg0MDA1YmMKLShnZGIpIHVwCi0jMSAgZm4zICh4 PXhAZW50cnk9NiwgeT15QGVudHJ5PTI1KSBhdCBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1p bmxpbmUuYzo0MgotKGdkYikgcC94ICRwYwotJDMgPSAweDQwMDViYwotCi1UaGUgcHJvYmxlbSBp cyB0aGF0IERXX1RBR19HTlVfY2FsbF9zaXRlIDwtPiBEV19PUF9HTlVfZW50cnlfdmFsdWUgYmlu ZGluZwotZXhpc3RzIGJldHdlZW4gRFdfVEFHX3N1YnByb2dyYW0sIG5vciBEV19UQUdfaW5saW5l ZF9zdWJyb3V0aW5lIGFzIGRlc2NyaWJlZAotYnkgSmFrdWIgSmVsaW5lay4gIFRoaXMgbWFrZXMg c2Vuc2UsIHdoZW4gd2UgbG9vayBhdCBEV19UQUdfR05VX2NhbGxfc2l0ZSBhbmQKLXdlIGp1c3Qg dW53aW5kIHRoZSBjdXJyZW50IGlubGluZWQgZnJhbWUgd2UgZ2V0IHRoZSBzYW1lIFBDIC0gdGhp cyBpcyBubyBuZXcKLWluZm9ybWF0aW9uLgotCi1UQUlMQ0FMTF9GUkFNRSBpcyBhIGRpZmZlcmVu dCBjYXNlLCB3aGlsZSBhbHNvIGFuIGFydGlmaWNpYWwgZnJhbWUgdGhlCi1zZXF1ZW5jZSBjYW5u b3QgYmUgZGV0ZXJtaW5lZCBhdCBjb21waWxlIHRpbWUgYW5kIHRoZSBiaW5kaW5nCi1EV19UQUdf R05VX2NhbGxfc2l0ZSA8LT4gRFdfT1BfR05VX2VudHJ5X3ZhbHVlIGV4aXN0cyBhbHNvIGZvcgot VEFJTENBTExfRlJBTUVzLgotCi1JIHdpbGwgY2hlY2sgaXQgaW4uCi0KLU5vIHJlZ3Jlc3Npb25z IG9uIHt4ODZfNjQseDg2XzY0LW0zMixpNjg2fS1mZWRvcmExOC1saW51eC1nbnUuCi0KLQotVGhh bmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMi0xMC0wNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotCi0JRml4IGVudHJ5IHZhbHVlcyByZXNvbHZpbmcgaW4gaW5s aW5lZCBmcmFtZXMuCi0JKiBkd2FyZjJsb2MuYyAoZHdhcmZfZXhwcl9yZWdfdG9fZW50cnlfcGFy YW1ldGVyKTogTW92ZSBmdW5jX2FkZHIsCi0JZ2RiYXJjaCBhbmQgY2FsbGVyX2ZyYW1lIGluaXRp YWxpemF0aW9uIGxhdGVyLiAgU2tpcCBJTkxJTkVfRlJBTUUKLQllbnRyaWVzIG9mIEZSQU1FLgot Ci1nZGIvdGVzdHN1aXRlLwotMjAxMi0xMC0wNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotCi0JRml4IGVudHJ5IHZhbHVlcyByZXNvbHZpbmcgaW4gaW5saW5l ZCBmcmFtZXMuCi0JKiBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuUzogTmV3IGZp bGUuCi0JKiBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYzogTmV3IGZpbGUuCi0J KiBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuZXhwOiBOZXcgZmlsZS4KLQotZGlm ZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2MuYyBiL2dkYi9kd2FyZjJsb2MuYwotaW5kZXggZThkMzlm ZS4uMGJkYzA0MiAxMDA2NDQKLS0tLSBhL2dkYi9kd2FyZjJsb2MuYwotKysrIGIvZ2RiL2R3YXJm MmxvYy5jCi1AQCAtOTgwLDE2ICs5ODAsMjcgQEAgZHdhcmZfZXhwcl9yZWdfdG9fZW50cnlfcGFy YW1ldGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0gCQkJCSAgIHVuaW9uIGNhbGxfc2l0 ZV9wYXJhbWV0ZXJfdSBraW5kX3UsCi0gCQkJCSAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEg KipwZXJfY3VfcmV0dXJuKQotIHsKLS0gIENPUkVfQUREUiBmdW5jX2FkZHIgPSBnZXRfZnJhbWVf ZnVuYyAoZnJhbWUpOwotLSAgQ09SRV9BRERSIGNhbGxlcl9wYzsKLS0gIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKTsKLS0gIHN0cnVjdCBmcmFtZV9pbmZv ICpjYWxsZXJfZnJhbWUgPSBnZXRfcHJldl9mcmFtZSAoZnJhbWUpOwotKyAgQ09SRV9BRERSIGZ1 bmNfYWRkciwgY2FsbGVyX3BjOwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7Ci0rICBzdHJ1 Y3QgZnJhbWVfaW5mbyAqY2FsbGVyX2ZyYW1lOwotICAgc3RydWN0IGNhbGxfc2l0ZSAqY2FsbF9z aXRlOwotICAgaW50IGlwYXJhbXM7Ci0gICAvKiBJbml0aWFsaXplIGl0IGp1c3QgdG8gYXZvaWQg YSBHQ0MgZmFsc2Ugd2FybmluZy4gICovCi0gICBzdHJ1Y3QgY2FsbF9zaXRlX3BhcmFtZXRlciAq cGFyYW1ldGVyID0gTlVMTDsKLSAgIENPUkVfQUREUiB0YXJnZXRfYWRkcjsKLSAKLSsgIC8qIFNr aXAgYW55IGlubGluZWQgZnJhbWVzLCBlbnRyeSB2YWx1ZSBjYWxsIHNpdGVzIHdvcmsgYmV0d2Vl biByZWFsCi0rICAgICBmdW5jdGlvbnMuICBUaGV5IGRvIG5vdCBtYWtlIHNlbnNlIGJldHdlZW4g aW5saW5lIGZ1bmN0aW9ucyBhcyBldmVuIFBDCi0rICAgICBkb2VzIG5vdCBjaGFuZ2UgdGhlcmUu ICAqLwotKyAgd2hpbGUgKGdldF9mcmFtZV90eXBlIChmcmFtZSkgPT0gSU5MSU5FX0ZSQU1FKQot KyAgICB7Ci0rICAgICAgZnJhbWUgPSBnZXRfcHJldl9mcmFtZSAoZnJhbWUpOwotKyAgICAgIGdk Yl9hc3NlcnQgKGZyYW1lICE9IE5VTEwpOwotKyAgICB9Ci0rCi0rICBmdW5jX2FkZHIgPSBnZXRf ZnJhbWVfZnVuYyAoZnJhbWUpOwotKyAgZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7 Ci0rICBjYWxsZXJfZnJhbWUgPSBnZXRfcHJldl9mcmFtZSAoZnJhbWUpOwotICAgaWYgKGdkYmFy Y2ggIT0gZnJhbWVfdW53aW5kX2FyY2ggKGZyYW1lKSkKLSAgICAgewotICAgICAgIHN0cnVjdCBt aW5pbWFsX3N5bWJvbCAqbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZnVuY19h ZGRyKTsKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FtZDY0LWVudHJ5LXZh bHVlLWlubGluZS5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1p bmxpbmUuUwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjVmMzUzZjUKLS0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFs dWUtaW5saW5lLlMKLUBAIC0wLDAgKzEsNjcyIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCi0rCi0rLyogVGhpcyBmaWxlIGlzIGNvbXBpbGVkIGZyb20gZ2RiLmFyY2gv YW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmMKLSsgICB1c2luZyAtZyAtZEEgLVMgLU8yLiAgKi8K LSsKLSsJLmZpbGUJImFtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5jIgotKwkudGV4dAotKy5MdGV4 dDA6Ci0rCS5wMmFsaWduIDQsLDE1Ci0rCS50eXBlCWZuMSwgQGZ1bmN0aW9uCi0rZm4xOgotKy5M RkIwOgotKwkuZmlsZSAxICJnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYyIKLSsJ IyBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYzoyMgotKwkubG9jIDEgMjIgMAot KwkuY2ZpX3N0YXJ0cHJvYwotKy5MVkwwOgotKyMgQkxPQ0sgMiBmcmVxOjEwMDAwIHNlcTowCi0r IyBQUkVEOiBFTlRSWSBbMTAwLjAlXSAgKEZBTExUSFJVKQotKwkjIGdkYi5hcmNoL2FtZDY0LWVu dHJ5LXZhbHVlLWlubGluZS5jOjIzCi0rCS5sb2MgMSAyMyAwCi0rCW1vdmwJdiglcmlwKSwgJWVh eAotKwlhZGRsCSQxLCAlZWF4Ci0rCW1vdmwJJWVheCwgdiglcmlwKQotKyMgU1VDQzogRVhJVCBb MTAwLjAlXSAKLSsJcmV0Ci0rCS5jZmlfZW5kcHJvYwotKy5MRkUwOgotKwkuc2l6ZQlmbjEsIC4t Zm4xCi0rCS5wMmFsaWduIDQsLDE1Ci0rCS5nbG9ibAlmbjMKLSsJLnR5cGUJZm4zLCBAZnVuY3Rp b24KLStmbjM6Ci0rLkxGQjI6Ci0rCSMgZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5l LmM6NDEKLSsJLmxvYyAxIDQxIDAKLSsJLmNmaV9zdGFydHByb2MKLSsuTFZMMToKLSsjIEJMT0NL IDIgZnJlcToxMDAwMCBzZXE6MAotKyMgUFJFRDogRU5UUlkgWzEwMC4wJV0gIChGQUxMVEhSVSkK LSsuTEJCNDoKLSsuTEJCNToKLSsJIyBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUu YzoyOQotKwkubG9jIDEgMjkgMAotKwl0ZXN0bAklZXNpLCAlZXNpCi0rLkxCRTU6Ci0rLkxCRTQ6 Ci0rCSMgZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmM6NDEKLSsJLmxvYyAxIDQx IDAKLSsJcHVzaHEJJXJieAotKwkuY2ZpX2RlZl9jZmFfb2Zmc2V0IDE2Ci0rCS5jZmlfb2Zmc2V0 IDMsIC0xNgotKwkjIGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5jOjQxCi0rCS5s b2MgMSA0MSAwCi0rCW1vdmwJJWVkaSwgJWVieAotKy5MQkI3OgotKy5MQkI2OgotKyMgU1VDQzog MyBbMzkuMCVdICAoRkFMTFRIUlUsQ0FOX0ZBTExUSFJVKSA0IFs2MS4wJV0gIChDQU5fRkFMTFRI UlUpCi0rCSMgZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmM6MjkKLSsJLmxvYyAx IDI5IDAKLSsJamUJLkwzCi0rIyBCTE9DSyAzIGZyZXE6Mzg5OCBzZXE6MQotKyMgUFJFRDogMiBb MzkuMCVdICAoRkFMTFRIUlUsQ0FOX0ZBTExUSFJVKQotKwkjIGdkYi5hcmNoL2FtZDY0LWVudHJ5 LXZhbHVlLWlubGluZS5jOjMxCi0rCS5sb2MgMSAzMSAwCi0rCWNhbGwJZm4xCi0rLkxWTDI6Ci0r CSMgZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmM6MzIKLSsJLmxvYyAxIDMyIDAK LSsJbGVhbAktMiglcmJ4KSwgJWVheAotKy5MVkwzOgotKwkjIGdkYi5hcmNoL2FtZDY0LWVudHJ5 LXZhbHVlLWlubGluZS5jOjMzCi0rCS5sb2MgMSAzMyAwCi0rCW1vdmwJJWVheCwgJWVkaQotKwlp bXVsbAklZWF4LCAlZWRpCi0rCWFkZGwJJDEsICVlZGkKLSsuTFZMNDoKLSsJaW11bGwJJWVkaSwg JWVheAotKy5MVkw1OgotKwkjIGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5jOjM0 Ci0rCS5sb2MgMSAzNCAwCi0rCWxlYWwJKCVyYngsJXJheCksICVlZGkKLSsJY2FsbAlmbjEKLSsu TFZMNjoKLSsjIFNVQ0M6IDQgWzEwMC4wJV0gIChGQUxMVEhSVSxDQU5fRkFMTFRIUlUpCi0rIyBC TE9DSyA0IGZyZXE6MTAwMDAgc2VxOjIKLSsjIFBSRUQ6IDIgWzYxLjAlXSAgKENBTl9GQUxMVEhS VSkgMyBbMTAwLjAlXSAgKEZBTExUSFJVLENBTl9GQUxMVEhSVSkKLSsuTDM6Ci0rLkxCRTY6Ci0r LkxCRTc6Ci0rCSMgZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmM6NDMKLSsJLmxv YyAxIDQzIDAKLSsJbW92bAklZWJ4LCAlZWF4Ci0rCXBvcHEJJXJieAotKwkuY2ZpX2RlZl9jZmFf b2Zmc2V0IDgKLSsuTFZMNzoKLSsjIFNVQ0M6IEVYSVQgWzEwMC4wJV0gCi0rCXJldAotKwkuY2Zp X2VuZHByb2MKLSsuTEZFMjoKLSsJLnNpemUJZm4zLCAuLWZuMwotKwkuc2VjdGlvbgkudGV4dC5z dGFydHVwLCJheCIsQHByb2diaXRzCi0rCS5wMmFsaWduIDQsLDE1Ci0rCS5nbG9ibAltYWluCi0r CS50eXBlCW1haW4sIEBmdW5jdGlvbgotK21haW46Ci0rLkxGQjM6Ci0rCSMgZ2RiLmFyY2gvYW1k NjQtZW50cnktdmFsdWUtaW5saW5lLmM6NDcKLSsJLmxvYyAxIDQ3IDAKLSsJLmNmaV9zdGFydHBy b2MKLSsjIEJMT0NLIDIgZnJlcToxMDAwMCBzZXE6MAotKyMgUFJFRDogRU5UUlkgWzEwMC4wJV0g IChGQUxMVEhSVSkKLSsJIyBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYzo0OAot KwkubG9jIDEgNDggMAotKwltb3ZsCSQyNSwgJWVzaQotKwltb3ZsCSQ2LCAlZWRpCi0rCWNhbGwJ Zm4zCi0rLkxWTDg6Ci0rCSMgZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmM6NTAK LSsJLmxvYyAxIDUwIDAKLSsJeG9ybAklZWF4LCAlZWF4Ci0rIyBTVUNDOiBFWElUIFsxMDAuMCVd IAotKwlyZXQKLSsJLmNmaV9lbmRwcm9jCi0rLkxGRTM6Ci0rCS5zaXplCW1haW4sIC4tbWFpbgot KwkubG9jYWwJdgotKwkuY29tbQl2LDQsNAotKwkudGV4dAotKy5MZXRleHQwOgotKwkuc2VjdGlv bgkuZGVidWdfaW5mbywiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2luZm8wOgotKwkubG9uZwkweDE2 NAkjIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0IEluZm8KLSsJLnZhbHVlCTB4NAkjIERXQVJG IHZlcnNpb24gbnVtYmVyCi0rCS5sb25nCS5MZGVidWdfYWJicmV2MAkjIE9mZnNldCBJbnRvIEFi YnJldi4gU2VjdGlvbgotKwkuYnl0ZQkweDgJIyBQb2ludGVyIFNpemUgKGluIGJ5dGVzKQotKwku dWxlYjEyOCAweDEJIyAoRElFICgweGIpIERXX1RBR19jb21waWxlX3VuaXQpCi0rCS5sb25nCS5M QVNGMAkjIERXX0FUX3Byb2R1Y2VyOiAiR05VIEMgNC44LjAgMjAxMjEwMDUgKGV4cGVyaW1lbnRh bCkgLW10dW5lPWdlbmVyaWMgLW1hcmNoPXg4Ni02NCAtZyAtTzIiCi0rCS5ieXRlCTB4MQkjIERX X0FUX2xhbmd1YWdlCi0rCS5sb25nCS5MQVNGMQkjIERXX0FUX25hbWU6ICJnZGIuYXJjaC9hbWQ2 NC1lbnRyeS12YWx1ZS1pbmxpbmUuYyIKLSsJLmxvbmcJLkxBU0YyCSMgRFdfQVRfY29tcF9kaXI6 ICIiCi0rCS5sb25nCS5MZGVidWdfcmFuZ2VzMCsweDMwCSMgRFdfQVRfcmFuZ2VzCi0rCS5xdWFk CTAJIyBEV19BVF9sb3dfcGMKLSsJLmxvbmcJLkxkZWJ1Z19saW5lMAkjIERXX0FUX3N0bXRfbGlz dAotKwkudWxlYjEyOCAweDIJIyAoRElFICgweDI5KSBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLmFz Y2lpICJmbjFcMCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAo Z2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmMpCi0rCS5ieXRlCTB4MTUJIyBEV19B VF9kZWNsX2xpbmUKLSsJCQkjIERXX0FUX3Byb3RvdHlwZWQKLSsJLnF1YWQJLkxGQjAJIyBEV19B VF9sb3dfcGMKLSsJLnF1YWQJLkxGRTAtLkxGQjAJIyBEV19BVF9oaWdoX3BjCi0rCS51bGViMTI4 IDB4MQkjIERXX0FUX2ZyYW1lX2Jhc2UKLSsJLmJ5dGUJMHg5YwkjIERXX09QX2NhbGxfZnJhbWVf Y2ZhCi0rCQkJIyBEV19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMKLSsJLmxvbmcJMHg1MgkjIERXX0FU X3NpYmxpbmcKLSsJLnVsZWIxMjggMHgzCSMgKERJRSAoMHg0NikgRFdfVEFHX2Zvcm1hbF9wYXJh bWV0ZXIpCi0rCS5hc2NpaSAieFwwIgkjIERXX0FUX25hbWUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRf ZGVjbF9maWxlIChnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYykKLSsJLmJ5dGUJ MHgxNQkjIERXX0FUX2RlY2xfbGluZQotKwkubG9uZwkweDUyCSMgRFdfQVRfdHlwZQotKwkudWxl YjEyOCAweDEJIyBEV19BVF9sb2NhdGlvbgotKwkuYnl0ZQkweDU1CSMgRFdfT1BfcmVnNQotKwku Ynl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDI5Ci0rCS51bGViMTI4IDB4NAkjIChE SUUgKDB4NTIpIERXX1RBR19iYXNlX3R5cGUpCi0rCS5ieXRlCTB4NAkjIERXX0FUX2J5dGVfc2l6 ZQotKwkuYnl0ZQkweDUJIyBEV19BVF9lbmNvZGluZwotKwkuYXNjaWkgImludFwwIgkjIERXX0FU X25hbWUKLSsJLnVsZWIxMjggMHg1CSMgKERJRSAoMHg1OSkgRFdfVEFHX3N1YnByb2dyYW0pCi0r CS5hc2NpaSAiZm4yXDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2Zp bGUgKGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5jKQotKwkuYnl0ZQkweDFiCSMg RFdfQVRfZGVjbF9saW5lCi0rCQkJIyBEV19BVF9wcm90b3R5cGVkCi0rCS5sb25nCTB4NTIJIyBE V19BVF90eXBlCi0rCS5ieXRlCTB4MQkjIERXX0FUX2lubGluZQotKwkubG9uZwkweDdjCSMgRFdf QVRfc2libGluZwotKwkudWxlYjEyOCAweDYJIyAoRElFICgweDY5KSBEV19UQUdfZm9ybWFsX3Bh cmFtZXRlcikKLSsJLmFzY2lpICJ4XDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19B VF9kZWNsX2ZpbGUgKGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5jKQotKwkuYnl0 ZQkweDFiCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4NTIJIyBEV19BVF90eXBlCi0rCS51 bGViMTI4IDB4NgkjIChESUUgKDB4NzIpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotKwkuYXNj aWkgInlcMCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2Ri LmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmMpCi0rCS5ieXRlCTB4MWIJIyBEV19BVF9k ZWNsX2xpbmUKLSsJLmxvbmcJMHg1MgkjIERXX0FUX3R5cGUKLSsJLmJ5dGUJMAkjIGVuZCBvZiBj aGlsZHJlbiBvZiBESUUgMHg1OQotKwkudWxlYjEyOCAweDcJIyAoRElFICgweDdjKSBEV19UQUdf c3VicHJvZ3JhbSkKLSsJCQkjIERXX0FUX2V4dGVybmFsCi0rCS5hc2NpaSAiZm4zXDAiCSMgRFdf QVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKGdkYi5hcmNoL2FtZDY0LWVu dHJ5LXZhbHVlLWlubGluZS5jKQotKwkuYnl0ZQkweDI4CSMgRFdfQVRfZGVjbF9saW5lCi0rCQkJ IyBEV19BVF9wcm90b3R5cGVkCi0rCS5sb25nCTB4NTIJIyBEV19BVF90eXBlCi0rCS5xdWFkCS5M RkIyCSMgRFdfQVRfbG93X3BjCi0rCS5xdWFkCS5MRkUyLS5MRkIyCSMgRFdfQVRfaGlnaF9wYwot KwkudWxlYjEyOCAweDEJIyBEV19BVF9mcmFtZV9iYXNlCi0rCS5ieXRlCTB4OWMJIyBEV19PUF9j YWxsX2ZyYW1lX2NmYQotKwkJCSMgRFdfQVRfR05VX2FsbF9jYWxsX3NpdGVzCi0rCS5sb25nCTB4 MTE1CSMgRFdfQVRfc2libGluZwotKwkudWxlYjEyOCAweDgJIyAoRElFICgweDlkKSBEV19UQUdf Zm9ybWFsX3BhcmFtZXRlcikKLSsJLmFzY2lpICJ4XDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkw eDEJIyBEV19BVF9kZWNsX2ZpbGUgKGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5j KQotKwkuYnl0ZQkweDI4CSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4NTIJIyBEV19BVF90 eXBlCi0rCS5sb25nCS5MTFNUMAkjIERXX0FUX2xvY2F0aW9uCi0rCS51bGViMTI4IDB4OAkjIChE SUUgKDB4YWEpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotKwkuYXNjaWkgInlcMCIJIyBEV19B VF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gvYW1kNjQtZW50 cnktdmFsdWUtaW5saW5lLmMpCi0rCS5ieXRlCTB4MjgJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxv bmcJMHg1MgkjIERXX0FUX3R5cGUKLSsJLmxvbmcJLkxMU1QxCSMgRFdfQVRfbG9jYXRpb24KLSsJ LnVsZWIxMjggMHg5CSMgKERJRSAoMHhiNykgRFdfVEFHX2lubGluZWRfc3Vicm91dGluZSkKLSsJ LmxvbmcJMHg1OQkjIERXX0FUX2Fic3RyYWN0X29yaWdpbgotKwkucXVhZAkuTEJCNAkjIERXX0FU X2VudHJ5X3BjCi0rCS5sb25nCS5MZGVidWdfcmFuZ2VzMCswCSMgRFdfQVRfcmFuZ2VzCi0rCS5i eXRlCTB4MQkjIERXX0FUX2NhbGxfZmlsZSAoZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5s aW5lLmMpCi0rCS5ieXRlCTB4MmEJIyBEV19BVF9jYWxsX2xpbmUKLSsJLnVsZWIxMjggMHhhCSMg KERJRSAoMHhjYSkgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0rCS5sb25nCTB4NzIJIyBEV19B VF9hYnN0cmFjdF9vcmlnaW4KLSsJLmxvbmcJLkxMU1QyCSMgRFdfQVRfbG9jYXRpb24KLSsJLnVs ZWIxMjggMHhhCSMgKERJRSAoMHhkMykgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0rCS5sb25n CTB4NjkJIyBEV19BVF9hYnN0cmFjdF9vcmlnaW4KLSsJLmxvbmcJLkxMU1QwCSMgRFdfQVRfbG9j YXRpb24KLSsJLnVsZWIxMjggMHhiCSMgKERJRSAoMHhkYykgRFdfVEFHX0dOVV9jYWxsX3NpdGUp Ci0rCS5xdWFkCS5MVkwyCSMgRFdfQVRfbG93X3BjCi0rCS5sb25nCTB4MjkJIyBEV19BVF9hYnN0 cmFjdF9vcmlnaW4KLSsJLmxvbmcJMHhmNAkjIERXX0FUX3NpYmxpbmcKLSsJLnVsZWIxMjggMHhj CSMgKERJRSAoMHhlZCkgRFdfVEFHX0dOVV9jYWxsX3NpdGVfcGFyYW1ldGVyKQotKwkudWxlYjEy OCAweDEJIyBEV19BVF9sb2NhdGlvbgotKwkuYnl0ZQkweDU1CSMgRFdfT1BfcmVnNQotKwkudWxl YjEyOCAweDIJIyBEV19BVF9HTlVfY2FsbF9zaXRlX3ZhbHVlCi0rCS5ieXRlCTB4NzMJIyBEV19P UF9icmVnMwotKwkuc2xlYjEyOCAwCi0rCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElF IDB4ZGMKLSsJLnVsZWIxMjggMHhkCSMgKERJRSAoMHhmNCkgRFdfVEFHX0dOVV9jYWxsX3NpdGUp Ci0rCS5xdWFkCS5MVkw2CSMgRFdfQVRfbG93X3BjCi0rCS5sb25nCTB4MjkJIyBEV19BVF9hYnN0 cmFjdF9vcmlnaW4KLSsJLnVsZWIxMjggMHhjCSMgKERJRSAoMHgxMDEpIERXX1RBR19HTlVfY2Fs bF9zaXRlX3BhcmFtZXRlcikKLSsJLnVsZWIxMjggMHgxCSMgRFdfQVRfbG9jYXRpb24KLSsJLmJ5 dGUJMHg1NQkjIERXX09QX3JlZzUKLSsJLnVsZWIxMjggMHhkCSMgRFdfQVRfR05VX2NhbGxfc2l0 ZV92YWx1ZQotKwkuYnl0ZQkweDczCSMgRFdfT1BfYnJlZzMKLSsJLnNsZWIxMjggLTIKLSsJLmJ5 dGUJMHg3MwkjIERXX09QX2JyZWczCi0rCS5zbGViMTI4IC0yCi0rCS5ieXRlCTB4NzMJIyBEV19P UF9icmVnMwotKwkuc2xlYjEyOCAtMgotKwkuYnl0ZQkweDFlCSMgRFdfT1BfbXVsCi0rCS5ieXRl CTB4MjMJIyBEV19PUF9wbHVzX3Vjb25zdAotKwkudWxlYjEyOCAweDEKLSsJLmJ5dGUJMHgxZQkj IERXX09QX211bAotKwkuYnl0ZQkweDczCSMgRFdfT1BfYnJlZzMKLSsJLnNsZWIxMjggMAotKwku Ynl0ZQkweDIyCSMgRFdfT1BfcGx1cwotKwkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJ RSAweGY0Ci0rCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4YjcKLSsJLmJ5dGUJ MAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHg3YwotKwkudWxlYjEyOCAweGUJIyAoRElFICgw eDExNSkgRFdfVEFHX3N1YnByb2dyYW0pCi0rCQkJIyBEV19BVF9leHRlcm5hbAotKwkubG9uZwku TEFTRjMJIyBEV19BVF9uYW1lOiAibWFpbiIKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxl IChnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYykKLSsJLmJ5dGUJMHgyZQkjIERX X0FUX2RlY2xfbGluZQotKwkubG9uZwkweDUyCSMgRFdfQVRfdHlwZQotKwkucXVhZAkuTEZCMwkj IERXX0FUX2xvd19wYwotKwkucXVhZAkuTEZFMy0uTEZCMwkjIERXX0FUX2hpZ2hfcGMKLSsJLnVs ZWIxMjggMHgxCSMgRFdfQVRfZnJhbWVfYmFzZQotKwkuYnl0ZQkweDljCSMgRFdfT1BfY2FsbF9m cmFtZV9jZmEKLSsJCQkjIERXX0FUX0dOVV9hbGxfY2FsbF9zaXRlcwotKwkubG9uZwkweDE0Zgkj IERXX0FUX3NpYmxpbmcKLSsJLnVsZWIxMjggMHhkCSMgKERJRSAoMHgxMzYpIERXX1RBR19HTlVf Y2FsbF9zaXRlKQotKwkucXVhZAkuTFZMOAkjIERXX0FUX2xvd19wYwotKwkubG9uZwkweDdjCSMg RFdfQVRfYWJzdHJhY3Rfb3JpZ2luCi0rCS51bGViMTI4IDB4YwkjIChESUUgKDB4MTQzKSBEV19U QUdfR05VX2NhbGxfc2l0ZV9wYXJhbWV0ZXIpCi0rCS51bGViMTI4IDB4MQkjIERXX0FUX2xvY2F0 aW9uCi0rCS5ieXRlCTB4NTUJIyBEV19PUF9yZWc1Ci0rCS51bGViMTI4IDB4MQkjIERXX0FUX0dO VV9jYWxsX3NpdGVfdmFsdWUKLSsJLmJ5dGUJMHgzNgkjIERXX09QX2xpdDYKLSsJLnVsZWIxMjgg MHhjCSMgKERJRSAoMHgxNDgpIERXX1RBR19HTlVfY2FsbF9zaXRlX3BhcmFtZXRlcikKLSsJLnVs ZWIxMjggMHgxCSMgRFdfQVRfbG9jYXRpb24KLSsJLmJ5dGUJMHg1NAkjIERXX09QX3JlZzQKLSsJ LnVsZWIxMjggMHgxCSMgRFdfQVRfR05VX2NhbGxfc2l0ZV92YWx1ZQotKwkuYnl0ZQkweDQ5CSMg RFdfT1BfbGl0MjUKLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgxMzYKLSsJ LmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgxMTUKLSsJLnVsZWIxMjggMHhmCSMg KERJRSAoMHgxNGYpIERXX1RBR192YXJpYWJsZSkKLSsJLmFzY2lpICJ2XDAiCSMgRFdfQVRfbmFt ZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZh bHVlLWlubGluZS5jKQotKwkuYnl0ZQkweDEyCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4 MTYyCSMgRFdfQVRfdHlwZQotKwkudWxlYjEyOCAweDkJIyBEV19BVF9sb2NhdGlvbgotKwkuYnl0 ZQkweDMJIyBEV19PUF9hZGRyCi0rCS5xdWFkCXYKLSsJLnVsZWIxMjggMHgxMAkjIChESUUgKDB4 MTYyKSBEV19UQUdfdm9sYXRpbGVfdHlwZSkKLSsJLmxvbmcJMHg1MgkjIERXX0FUX3R5cGUKLSsJ LmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHhiCi0rCS5zZWN0aW9uCS5kZWJ1Z19h YmJyZXYsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19hYmJyZXYwOgotKwkudWxlYjEyOCAweDEJIyAo YWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MTEJIyAoVEFHOiBEV19UQUdfY29tcGlsZV91bml0 KQotKwkuYnl0ZQkweDEJIyBEV19jaGlsZHJlbl95ZXMKLSsJLnVsZWIxMjggMHgyNQkjIChEV19B VF9wcm9kdWNlcikKLSsJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkKLSsJLnVsZWIxMjgg MHgxMwkjIChEV19BVF9sYW5ndWFnZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEp Ci0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQotKwkudWxlYjEyOCAweGUJIyAoRFdfRk9S TV9zdHJwKQotKwkudWxlYjEyOCAweDFiCSMgKERXX0FUX2NvbXBfZGlyKQotKwkudWxlYjEyOCAw eGUJIyAoRFdfRk9STV9zdHJwKQotKwkudWxlYjEyOCAweDU1CSMgKERXX0FUX3JhbmdlcykKLSsJ LnVsZWIxMjggMHgxNwkjIChEV19GT1JNX3NlY19vZmZzZXQpCi0rCS51bGViMTI4IDB4MTEJIyAo RFdfQVRfbG93X3BjKQotKwkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQotKwkudWxlYjEy OCAweDEwCSMgKERXX0FUX3N0bXRfbGlzdCkKLSsJLnVsZWIxMjggMHgxNwkjIChEV19GT1JNX3Nl Y19vZmZzZXQpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDIJIyAoYWJicmV2 IGNvZGUpCi0rCS51bGViMTI4IDB4MmUJIyAoVEFHOiBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLmJ5 dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCi0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQot KwkudWxlYjEyOCAweDgJIyAoRFdfRk9STV9zdHJpbmcpCi0rCS51bGViMTI4IDB4M2EJIyAoRFdf QVRfZGVjbF9maWxlKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIx MjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2Rh dGExKQotKwkudWxlYjEyOCAweDI3CSMgKERXX0FUX3Byb3RvdHlwZWQpCi0rCS51bGViMTI4IDB4 MTkJIyAoRFdfRk9STV9mbGFnX3ByZXNlbnQpCi0rCS51bGViMTI4IDB4MTEJIyAoRFdfQVRfbG93 X3BjKQotKwkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQotKwkudWxlYjEyOCAweDEyCSMg KERXX0FUX2hpZ2hfcGMpCi0rCS51bGViMTI4IDB4NwkjIChEV19GT1JNX2RhdGE4KQotKwkudWxl YjEyOCAweDQwCSMgKERXX0FUX2ZyYW1lX2Jhc2UpCi0rCS51bGViMTI4IDB4MTgJIyAoRFdfRk9S TV9leHBybG9jKQotKwkudWxlYjEyOCAweDIxMTcJIyAoRFdfQVRfR05VX2FsbF9jYWxsX3NpdGVz KQotKwkudWxlYjEyOCAweDE5CSMgKERXX0ZPUk1fZmxhZ19wcmVzZW50KQotKwkudWxlYjEyOCAw eDEJIyAoRFdfQVRfc2libGluZykKLSsJLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0r CS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDMJIyAoYWJicmV2IGNvZGUpCi0rCS51 bGViMTI4IDB4NQkjIChUQUc6IERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotKwkuYnl0ZQkwCSMg RFdfY2hpbGRyZW5fbm8KLSsJLnVsZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0rCS51bGViMTI4 IDB4OAkjIChEV19GT1JNX3N0cmluZykKLSsJLnVsZWIxMjggMHgzYQkjIChEV19BVF9kZWNsX2Zp bGUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDNiCSMg KERXX0FUX2RlY2xfbGluZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51 bGViMTI4IDB4NDkJIyAoRFdfQVRfdHlwZSkKLSsJLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3Jl ZjQpCi0rCS51bGViMTI4IDB4MgkjIChEV19BVF9sb2NhdGlvbikKLSsJLnVsZWIxMjggMHgxOAkj IChEV19GT1JNX2V4cHJsb2MpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDQJ IyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MjQJIyAoVEFHOiBEV19UQUdfYmFzZV90eXBl KQotKwkuYnl0ZQkwCSMgRFdfY2hpbGRyZW5fbm8KLSsJLnVsZWIxMjggMHhiCSMgKERXX0FUX2J5 dGVfc2l6ZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4 M2UJIyAoRFdfQVRfZW5jb2RpbmcpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQot KwkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHg4CSMgKERXX0ZPUk1f c3RyaW5nKQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHg1CSMgKGFiYnJldiBj b2RlKQotKwkudWxlYjEyOCAweDJlCSMgKFRBRzogRFdfVEFHX3N1YnByb2dyYW0pCi0rCS5ieXRl CTB4MQkjIERXX2NoaWxkcmVuX3llcwotKwkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLSsJ LnVsZWIxMjggMHg4CSMgKERXX0ZPUk1fc3RyaW5nKQotKwkudWxlYjEyOCAweDNhCSMgKERXX0FU X2RlY2xfZmlsZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4 IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRh MSkKLSsJLnVsZWIxMjggMHgyNwkjIChEV19BVF9wcm90b3R5cGVkKQotKwkudWxlYjEyOCAweDE5 CSMgKERXX0ZPUk1fZmxhZ19wcmVzZW50KQotKwkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUp Ci0rCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9yZWY0KQotKwkudWxlYjEyOCAweDIwCSMgKERX X0FUX2lubGluZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4 IDB4MQkjIChEV19BVF9zaWJsaW5nKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkK LSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4NgkjIChhYmJyZXYgY29kZSkKLSsJ LnVsZWIxMjggMHg1CSMgKFRBRzogRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0rCS5ieXRlCTAJ IyBEV19jaGlsZHJlbl9ubwotKwkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIx MjggMHg4CSMgKERXX0ZPUk1fc3RyaW5nKQotKwkudWxlYjEyOCAweDNhCSMgKERXX0FUX2RlY2xf ZmlsZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4M2IJ IyAoRFdfQVRfZGVjbF9saW5lKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJ LnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1f cmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4NwkjIChhYmJyZXYgY29k ZSkKLSsJLnVsZWIxMjggMHgyZQkjIChUQUc6IERXX1RBR19zdWJwcm9ncmFtKQotKwkuYnl0ZQkw eDEJIyBEV19jaGlsZHJlbl95ZXMKLSsJLnVsZWIxMjggMHgzZgkjIChEV19BVF9leHRlcm5hbCkK LSsJLnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKLSsJLnVsZWIxMjggMHgz CSMgKERXX0FUX25hbWUpCi0rCS51bGViMTI4IDB4OAkjIChEV19GT1JNX3N0cmluZykKLSsJLnVs ZWIxMjggMHgzYQkjIChEV19BVF9kZWNsX2ZpbGUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JN X2RhdGExKQotKwkudWxlYjEyOCAweDNiCSMgKERXX0FUX2RlY2xfbGluZSkKLSsJLnVsZWIxMjgg MHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4MjcJIyAoRFdfQVRfcHJvdG90eXBl ZCkKLSsJLnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKLSsJLnVsZWIxMjgg MHg0OQkjIChEV19BVF90eXBlKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJ LnVsZWIxMjggMHgxMQkjIChEV19BVF9sb3dfcGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19GT1JN X2FkZHIpCi0rCS51bGViMTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKLSsJLnVsZWIxMjggMHg3 CSMgKERXX0ZPUk1fZGF0YTgpCi0rCS51bGViMTI4IDB4NDAJIyAoRFdfQVRfZnJhbWVfYmFzZSkK LSsJLnVsZWIxMjggMHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCi0rCS51bGViMTI4IDB4MjExNwkj IChEV19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMpCi0rCS51bGViMTI4IDB4MTkJIyAoRFdfRk9STV9m bGFnX3ByZXNlbnQpCi0rCS51bGViMTI4IDB4MQkjIChEV19BVF9zaWJsaW5nKQotKwkudWxlYjEy OCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4 IDB4OAkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHg1CSMgKFRBRzogRFdfVEFHX2Zvcm1h bF9wYXJhbWV0ZXIpCi0rCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubwotKwkudWxlYjEyOCAweDMJ IyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHg4CSMgKERXX0ZPUk1fc3RyaW5nKQotKwkudWxl YjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1f ZGF0YTEpCi0rCS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQotKwkudWxlYjEyOCAw eGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQotKwku dWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLnVsZWIxMjggMHgyCSMgKERXX0FUX2xv Y2F0aW9uKQotKwkudWxlYjEyOCAweDE3CSMgKERXX0ZPUk1fc2VjX29mZnNldCkKLSsJLmJ5dGUJ MAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4OQkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjgg MHgxZAkjIChUQUc6IERXX1RBR19pbmxpbmVkX3N1YnJvdXRpbmUpCi0rCS5ieXRlCTB4MQkjIERX X2NoaWxkcmVuX3llcwotKwkudWxlYjEyOCAweDMxCSMgKERXX0FUX2Fic3RyYWN0X29yaWdpbikK LSsJLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS51bGViMTI4IDB4NTIJIyAoRFdf QVRfZW50cnlfcGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2FkZHIpCi0rCS51bGViMTI4 IDB4NTUJIyAoRFdfQVRfcmFuZ2VzKQotKwkudWxlYjEyOCAweDE3CSMgKERXX0ZPUk1fc2VjX29m ZnNldCkKLSsJLnVsZWIxMjggMHg1OAkjIChEV19BVF9jYWxsX2ZpbGUpCi0rCS51bGViMTI4IDB4 YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDU5CSMgKERXX0FUX2NhbGxfbGluZSkK LSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAot KwkudWxlYjEyOCAweGEJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4NQkjIChUQUc6IERX X1RBR19mb3JtYWxfcGFyYW1ldGVyKQotKwkuYnl0ZQkwCSMgRFdfY2hpbGRyZW5fbm8KLSsJLnVs ZWIxMjggMHgzMQkjIChEV19BVF9hYnN0cmFjdF9vcmlnaW4pCi0rCS51bGViMTI4IDB4MTMJIyAo RFdfRk9STV9yZWY0KQotKwkudWxlYjEyOCAweDIJIyAoRFdfQVRfbG9jYXRpb24pCi0rCS51bGVi MTI4IDB4MTcJIyAoRFdfRk9STV9zZWNfb2Zmc2V0KQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJ LnVsZWIxMjggMHhiCSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEyOCAweDQxMDkJIyAoVEFHOiBE V19UQUdfR05VX2NhbGxfc2l0ZSkKLSsJLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCi0rCS51 bGViMTI4IDB4MTEJIyAoRFdfQVRfbG93X3BjKQotKwkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9h ZGRyKQotKwkudWxlYjEyOCAweDMxCSMgKERXX0FUX2Fic3RyYWN0X29yaWdpbikKLSsJLnVsZWIx MjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS51bGViMTI4IDB4MQkjIChEV19BVF9zaWJsaW5n KQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkw Ci0rCS51bGViMTI4IDB4YwkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHg0MTBhCSMgKFRB RzogRFdfVEFHX0dOVV9jYWxsX3NpdGVfcGFyYW1ldGVyKQotKwkuYnl0ZQkwCSMgRFdfY2hpbGRy ZW5fbm8KLSsJLnVsZWIxMjggMHgyCSMgKERXX0FUX2xvY2F0aW9uKQotKwkudWxlYjEyOCAweDE4 CSMgKERXX0ZPUk1fZXhwcmxvYykKLSsJLnVsZWIxMjggMHgyMTExCSMgKERXX0FUX0dOVV9jYWxs X3NpdGVfdmFsdWUpCi0rCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBybG9jKQotKwkuYnl0 ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHhkCSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEy OCAweDQxMDkJIyAoVEFHOiBEV19UQUdfR05VX2NhbGxfc2l0ZSkKLSsJLmJ5dGUJMHgxCSMgRFdf Y2hpbGRyZW5feWVzCi0rCS51bGViMTI4IDB4MTEJIyAoRFdfQVRfbG93X3BjKQotKwkudWxlYjEy OCAweDEJIyAoRFdfRk9STV9hZGRyKQotKwkudWxlYjEyOCAweDMxCSMgKERXX0FUX2Fic3RyYWN0 X29yaWdpbikKLSsJLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS5ieXRlCTAKLSsJ LmJ5dGUJMAotKwkudWxlYjEyOCAweGUJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MmUJ IyAoVEFHOiBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVz Ci0rCS51bGViMTI4IDB4M2YJIyAoRFdfQVRfZXh0ZXJuYWwpCi0rCS51bGViMTI4IDB4MTkJIyAo RFdfRk9STV9mbGFnX3ByZXNlbnQpCi0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQotKwku dWxlYjEyOCAweGUJIyAoRFdfRk9STV9zdHJwKQotKwkudWxlYjEyOCAweDNhCSMgKERXX0FUX2Rl Y2xfZmlsZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4 M2IJIyAoRFdfQVRfZGVjbF9saW5lKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkK LSsJLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZP Uk1fcmVmNCkKLSsJLnVsZWIxMjggMHgxMQkjIChEV19BVF9sb3dfcGMpCi0rCS51bGViMTI4IDB4 MQkjIChEV19GT1JNX2FkZHIpCi0rCS51bGViMTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKLSsJ LnVsZWIxMjggMHg3CSMgKERXX0ZPUk1fZGF0YTgpCi0rCS51bGViMTI4IDB4NDAJIyAoRFdfQVRf ZnJhbWVfYmFzZSkKLSsJLnVsZWIxMjggMHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCi0rCS51bGVi MTI4IDB4MjExNwkjIChEV19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMpCi0rCS51bGViMTI4IDB4MTkJ IyAoRFdfRk9STV9mbGFnX3ByZXNlbnQpCi0rCS51bGViMTI4IDB4MQkjIChEV19BVF9zaWJsaW5n KQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkw Ci0rCS51bGViMTI4IDB4ZgkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHgzNAkjIChUQUc6 IERXX1RBR192YXJpYWJsZSkKLSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4 IDB4MwkjIChEV19BVF9uYW1lKQotKwkudWxlYjEyOCAweDgJIyAoRFdfRk9STV9zdHJpbmcpCi0r CS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxlKQotKwkudWxlYjEyOCAweGIJIyAoRFdf Rk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCi0rCS51bGVi MTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUp Ci0rCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9yZWY0KQotKwkudWxlYjEyOCAweDIJIyAoRFdf QVRfbG9jYXRpb24pCi0rCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBybG9jKQotKwkuYnl0 ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHgxMAkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIx MjggMHgzNQkjIChUQUc6IERXX1RBR192b2xhdGlsZV90eXBlKQotKwkuYnl0ZQkwCSMgRFdfY2hp bGRyZW5fbm8KLSsJLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQotKwkudWxlYjEyOCAweDEz CSMgKERXX0ZPUk1fcmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnNl Y3Rpb24JLmRlYnVnX2xvYywiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2xvYzA6Ci0rLkxMU1QwOgot KwkucXVhZAkuTFZMMQkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMCkKLSsJ LnF1YWQJLkxWTDItMQkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDApCi0rCS52 YWx1ZQkweDEJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg1NQkjIERXX09Q X3JlZzUKLSsJLnF1YWQJLkxWTDItMQkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5M TFNUMCkKLSsJLnF1YWQJLkxWTDcJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Qw KQotKwkudmFsdWUJMHgxCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NTMJ IyBEV19PUF9yZWczCi0rCS5xdWFkCS5MVkw3CSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNz ICgqLkxMU1QwKQotKwkucXVhZAkuTEZFMgkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCou TExTVDApCi0rCS52YWx1ZQkweDEJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJ MHg1MAkjIERXX09QX3JlZzAKLSsJLnF1YWQJMAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBi ZWdpbiAoKi5MTFNUMCkKLSsJLnF1YWQJMAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBlbmQg KCouTExTVDApCi0rLkxMU1QxOgotKwkucXVhZAkuTFZMMQkjIExvY2F0aW9uIGxpc3QgYmVnaW4g YWRkcmVzcyAoKi5MTFNUMSkKLSsJLnF1YWQJLkxWTDItMQkjIExvY2F0aW9uIGxpc3QgZW5kIGFk ZHJlc3MgKCouTExTVDEpCi0rCS52YWx1ZQkweDEJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUK LSsJLmJ5dGUJMHg1NAkjIERXX09QX3JlZzQKLSsJLnF1YWQJLkxWTDItMQkjIExvY2F0aW9uIGxp c3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMSkKLSsJLnF1YWQJLkxGRTIJIyBMb2NhdGlvbiBsaXN0 IGVuZCBhZGRyZXNzICgqLkxMU1QxKQotKwkudmFsdWUJMHg0CSMgTG9jYXRpb24gZXhwcmVzc2lv biBzaXplCi0rCS5ieXRlCTB4ZjMJIyBEV19PUF9HTlVfZW50cnlfdmFsdWUKLSsJLnVsZWIxMjgg MHgxCi0rCS5ieXRlCTB4NTQJIyBEV19PUF9yZWc0Ci0rCS5ieXRlCTB4OWYJIyBEV19PUF9zdGFj a192YWx1ZQotKwkucXVhZAkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxM U1QxKQotKwkucXVhZAkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGVuZCAoKi5MTFNUMSkK LSsuTExTVDI6Ci0rCS5xdWFkCS5MVkwxCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgq LkxMU1QyKQotKwkucXVhZAkuTFZMMi0xCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5M TFNUMikKLSsJLnZhbHVlCTB4MQkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkw eDU0CSMgRFdfT1BfcmVnNAotKwkucXVhZAkuTFZMMi0xCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBh ZGRyZXNzICgqLkxMU1QyKQotKwkucXVhZAkuTFZMMwkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJl c3MgKCouTExTVDIpCi0rCS52YWx1ZQkweDQJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJ LmJ5dGUJMHhmMwkjIERXX09QX0dOVV9lbnRyeV92YWx1ZQotKwkudWxlYjEyOCAweDEKLSsJLmJ5 dGUJMHg1NAkjIERXX09QX3JlZzQKLSsJLmJ5dGUJMHg5ZgkjIERXX09QX3N0YWNrX3ZhbHVlCi0r CS5xdWFkCS5MVkwzCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1QyKQotKwku cXVhZAkuTFZMNAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDIpCi0rCS52YWx1 ZQkweDEJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg1MAkjIERXX09QX3Jl ZzAKLSsJLnF1YWQJLkxWTDQJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDIp Ci0rCS5xdWFkCS5MVkw1CSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUMikKLSsJ LnZhbHVlCTB4NgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDcwCSMgRFdf T1BfYnJlZzAKLSsJLnNsZWIxMjggMAotKwkuYnl0ZQkweDc1CSMgRFdfT1BfYnJlZzUKLSsJLnNs ZWIxMjggMAotKwkuYnl0ZQkweDFlCSMgRFdfT1BfbXVsCi0rCS5ieXRlCTB4OWYJIyBEV19PUF9z dGFja192YWx1ZQotKwkucXVhZAkuTFZMNQkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAo Ki5MTFNUMikKLSsJLnF1YWQJLkxWTDYtMQkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCou TExTVDIpCi0rCS52YWx1ZQkweDEJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJ MHg1MAkjIERXX09QX3JlZzAKLSsJLnF1YWQJLkxWTDYtMQkjIExvY2F0aW9uIGxpc3QgYmVnaW4g YWRkcmVzcyAoKi5MTFNUMikKLSsJLnF1YWQJLkxWTDYJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRy ZXNzICgqLkxMU1QyKQotKwkudmFsdWUJMHhiCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0r CS5ieXRlCTB4NzMJIyBEV19PUF9icmVnMwotKwkuc2xlYjEyOCAtMgotKwkuYnl0ZQkweDczCSMg RFdfT1BfYnJlZzMKLSsJLnNsZWIxMjggLTIKLSsJLmJ5dGUJMHg3MwkjIERXX09QX2JyZWczCi0r CS5zbGViMTI4IC0yCi0rCS5ieXRlCTB4MWUJIyBEV19PUF9tdWwKLSsJLmJ5dGUJMHgyMwkjIERX X09QX3BsdXNfdWNvbnN0Ci0rCS51bGViMTI4IDB4MQotKwkuYnl0ZQkweDFlCSMgRFdfT1BfbXVs Ci0rCS5ieXRlCTB4OWYJIyBEV19PUF9zdGFja192YWx1ZQotKwkucXVhZAkwCSMgTG9jYXRpb24g bGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1QyKQotKwkucXVhZAkwCSMgTG9jYXRpb24gbGlz dCB0ZXJtaW5hdG9yIGVuZCAoKi5MTFNUMikKLSsJLnNlY3Rpb24JLmRlYnVnX2FyYW5nZXMsIiIs QHByb2diaXRzCi0rCS5sb25nCTB4M2MJIyBMZW5ndGggb2YgQWRkcmVzcyBSYW5nZXMgSW5mbwot KwkudmFsdWUJMHgyCSMgRFdBUkYgVmVyc2lvbgotKwkubG9uZwkuTGRlYnVnX2luZm8wCSMgT2Zm c2V0IG9mIENvbXBpbGF0aW9uIFVuaXQgSW5mbwotKwkuYnl0ZQkweDgJIyBTaXplIG9mIEFkZHJl c3MKLSsJLmJ5dGUJMAkjIFNpemUgb2YgU2VnbWVudCBEZXNjcmlwdG9yCi0rCS52YWx1ZQkwCSMg UGFkIHRvIDE2IGJ5dGUgYm91bmRhcnkKLSsJLnZhbHVlCTAKLSsJLnF1YWQJLkx0ZXh0MAkjIEFk ZHJlc3MKLSsJLnF1YWQJLkxldGV4dDAtLkx0ZXh0MAkjIExlbmd0aAotKwkucXVhZAkuTEZCMwkj IEFkZHJlc3MKLSsJLnF1YWQJLkxGRTMtLkxGQjMJIyBMZW5ndGgKLSsJLnF1YWQJMAotKwkucXVh ZAkwCi0rCS5zZWN0aW9uCS5kZWJ1Z19yYW5nZXMsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19yYW5n ZXMwOgotKwkucXVhZAkuTEJCNAkjIE9mZnNldCAwCi0rCS5xdWFkCS5MQkU0Ci0rCS5xdWFkCS5M QkI3Ci0rCS5xdWFkCS5MQkU3Ci0rCS5xdWFkCTAKLSsJLnF1YWQJMAotKwkucXVhZAkuTHRleHQw CSMgT2Zmc2V0IDB4MzAKLSsJLnF1YWQJLkxldGV4dDAKLSsJLnF1YWQJLkxGQjMJIyBPZmZzZXQg MHg0MAotKwkucXVhZAkuTEZFMwotKwkucXVhZAkwCi0rCS5xdWFkCTAKLSsJLnNlY3Rpb24JLmRl YnVnX2xpbmUsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19saW5lMDoKLSsJLnNlY3Rpb24JLmRlYnVn X3N0ciwiTVMiLEBwcm9nYml0cywxCi0rLkxBU0YwOgotKwkuc3RyaW5nCSJHTlUgQyA0LjguMCAy MDEyMTAwNStwYXRjaGVzIChleHBlcmltZW50YWwpIC1tdHVuZT1nZW5lcmljIC1tYXJjaD14ODYt NjQgLWcgLU8yIgotKy5MQVNGMToKLSsJLnN0cmluZwkiZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFs dWUtaW5saW5lLmMiCi0rLkxBU0YyOgotKwkuc3RyaW5nCSIiCi0rLkxBU0YzOgotKwkuc3RyaW5n CSJtYWluIgotKwkuaWRlbnQJIkdDQzogKEdOVSkgNC44LjAgMjAxMjEwMDUgKGV4cGVyaW1lbnRh bCkiCi0rCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKLWRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5jIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYwotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmY3ZmVmYjgKLS0tLSAvZGV2L251bGwKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmMKLUBAIC0w LDAgKzEsNTAgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRl YnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLStz dGF0aWMgdm9sYXRpbGUgaW50IHY7Ci0rCi0rc3RhdGljIF9fYXR0cmlidXRlX18oKG5vaW5saW5l LCBub2Nsb25lKSkgdm9pZAotK2ZuMSAoaW50IHgpCi0rewotKyAgdisrOwotK30KLSsKLStzdGF0 aWMgaW50Ci0rZm4yIChpbnQgeCwgaW50IHkpCi0rewotKyAgaWYgKHkpCi0rICAgIHsKLSsgICAg ICBmbjEgKHgpOwotKyAgICAgIHkgPSAtMiArIHg7CS8qIGJyZWFrLWhlcmUgKi8KLSsgICAgICB5 ID0geSAqIHkgKiB5ICsgeTsKLSsgICAgICBmbjEgKHggKyB5KTsKLSsgICAgfQotKyAgcmV0dXJu IHg7Ci0rfQotKwotK19fYXR0cmlidXRlX18oKG5vaW5saW5lLCBub2Nsb25lKSkgaW50Ci0rZm4z IChpbnQgeCwgaW50IHkpCi0rewotKyAgcmV0dXJuIGZuMiAoeCwgeSk7Ci0rfQotKwotK2ludAot K21haW4gKCkKLSt7Ci0rICBmbjMgKDYsIDI1KTsKLSsgIHJldHVybiAwOwotK30KLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5leHAKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42YWE5MmMxCi0tLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5l eHAKLUBAIC0wLDAgKzEsNDAgQEAKLSsjIENvcHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwot K3NldCBvcHRzIHt9Ci0rc3RhbmRhcmRfdGVzdGZpbGUgLlMKLSsKLStpZiBbaW5mbyBleGlzdHMg Q09NUElMRV0gewotKyAgICAjIG1ha2UgY2hlY2sgUlVOVEVTVEZMQUdTPSJnZGIuYXJjaC9hbWQ2 NC1lbnRyeS12YWx1ZS1pbmxpbmUuZXhwIENPTVBJTEU9MSIKLSsgICAgc3RhbmRhcmRfdGVzdGZp bGUKLSsgICAgbGFwcGVuZCBvcHRzIGRlYnVnIG9wdGltaXplPS1PMgotK30gZWxzZWlmIHsgIVtp c3RhcmdldCB4ODZfNjQtKi0qIF0gfHwgIVtpc19scDY0X3RhcmdldF0gfSB7Ci0rICAgIHZlcmJv c2UgIlNraXBwaW5nICR7dGVzdGZpbGV9LiIKLSsgICAgcmV0dXJuCi0rfQotKwotK2lmIHsgW3By ZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0g JG9wdHNdIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtydW50b19tYWluXSB7Ci0r ICAgIHJldHVybiAtMQotK30KLSsKLStzZXQgc3JjZmlsZSAkdGVzdGZpbGUuYwotK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1oZXJlIl0KLSsKLStnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAiYnJlYWstaGVyZSIgIi4qIGJyZWFrLWhlcmUgLioiCi0rZ2RiX3Rl c3QgInAgeSIgIiA9IDI1IgotCgpkaWZmIC0tZ2l0IGEvZ2RiLWZvcnRyYW4tY29tbW9uLXJlZHVj ZS5wYXRjaCBiL2dkYi1mb3J0cmFuLWNvbW1vbi1yZWR1Y2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDIzOGIzNTUuLjAwMDAwMDAKLS0tIGEvZ2RiLWZvcnRyYW4tY29tbW9u LXJlZHVjZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwOCArMCwwIEBACi1JbmRleDogZ2Ri LTcuNC41MC4yMDEyMDYwMi9nZGIvZi1sYW5nLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUw LjIwMTIwNjAyLm9yaWcvZ2RiL2YtbGFuZy5jCTIwMTItMDMtMDIgMjA6Mjk6MDAuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZi1sYW5nLmMJMjAxMi0wNi0wMiAx OToxMzozMS41MjAwNTA2NTQgKzAyMDAKLUBAIC01OSwyMCArNTksNiBAQCB0eXBlZGVmIHN0cnVj dCBzYXZlZF9iZl9zeW1udW0gU0FWRURfQkYsCi0gLyogTG9jYWwgZnVuY3Rpb25zICovCi0gCi0g ZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZl9sYW5ndWFnZSAodm9pZCk7Ci0tI2lmIDAKLS1zdGF0 aWMgdm9pZCBjbGVhcl9mdW5jdGlvbl9saXN0ICh2b2lkKTsKLS1zdGF0aWMgbG9uZyBnZXRfYmZf Zm9yX2ZjbiAobG9uZyk7Ci0tc3RhdGljIHZvaWQgY2xlYXJfYmZfbGlzdCAodm9pZCk7Ci0tc3Rh dGljIHZvaWQgcGF0Y2hfYWxsX2NvbW1vbnNfYnlfbmFtZSAoY2hhciAqLCBDT1JFX0FERFIsIGlu dCk7Ci0tc3RhdGljIFNBVkVEX0Y3N19DT01NT05fUFRSIGZpbmRfZmlyc3RfY29tbW9uX25hbWVk IChjaGFyICopOwotLXN0YXRpYyB2b2lkIGFkZF9jb21tb25fZW50cnkgKHN0cnVjdCBzeW1ib2wg Kik7Ci0tc3RhdGljIHZvaWQgYWRkX2NvbW1vbl9ibG9jayAoY2hhciAqLCBDT1JFX0FERFIsIGlu dCwgY2hhciAqKTsKLS1zdGF0aWMgU0FWRURfRlVOQ1RJT04gKmFsbG9jYXRlX3NhdmVkX2Z1bmN0 aW9uX25vZGUgKHZvaWQpOwotLXN0YXRpYyBTQVZFRF9CRl9QVFIgYWxsb2NhdGVfc2F2ZWRfYmZf bm9kZSAodm9pZCk7Ci0tc3RhdGljIENPTU1PTl9FTlRSWV9QVFIgYWxsb2NhdGVfY29tbW9uX2Vu dHJ5X25vZGUgKHZvaWQpOwotLXN0YXRpYyBTQVZFRF9GNzdfQ09NTU9OX1BUUiBhbGxvY2F0ZV9z YXZlZF9mNzdfY29tbW9uX25vZGUgKHZvaWQpOwotLXN0YXRpYyB2b2lkIHBhdGNoX2NvbW1vbl9l bnRyaWVzIChTQVZFRF9GNzdfQ09NTU9OX1BUUiwgQ09SRV9BRERSLCBpbnQpOwotLSNlbmRpZgot IAotIHN0YXRpYyB2b2lkIGZfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5cGUsIHN0 cnVjdCB1aV9maWxlICogc3RyZWFtKTsKLSBzdGF0aWMgdm9pZCBmX2VtaXRfY2hhciAoaW50IGMs IHN0cnVjdCB0eXBlICp0eXBlLAotQEAgLTM4NSwxODUgKzM3MSw3IEBAIF9pbml0aWFsaXplX2Zf bGFuZ3VhZ2UgKHZvaWQpCi0gICBhZGRfbGFuZ3VhZ2UgKCZmX2xhbmd1YWdlX2RlZm4pOwotIH0K LSAKLS0jaWYgMAotLXN0YXRpYyBTQVZFRF9CRl9QVFIKLS1hbGxvY2F0ZV9zYXZlZF9iZl9ub2Rl ICh2b2lkKQotLXsKLS0gIFNBVkVEX0JGX1BUUiBuZXc7Ci0tCi0tICBuZXcgPSAoU0FWRURfQkZf UFRSKSB4bWFsbG9jIChzaXplb2YgKFNBVkVEX0JGKSk7Ci0tICByZXR1cm4gKG5ldyk7Ci0tfQot LQotLXN0YXRpYyBTQVZFRF9GVU5DVElPTiAqCi0tYWxsb2NhdGVfc2F2ZWRfZnVuY3Rpb25fbm9k ZSAodm9pZCkKLS17Ci0tICBTQVZFRF9GVU5DVElPTiAqbmV3OwotLQotLSAgbmV3ID0gKFNBVkVE X0ZVTkNUSU9OICopIHhtYWxsb2MgKHNpemVvZiAoU0FWRURfRlVOQ1RJT04pKTsKLS0gIHJldHVy biAobmV3KTsKLS19Ci0tCi0tc3RhdGljIFNBVkVEX0Y3N19DT01NT05fUFRSCi0tYWxsb2NhdGVf c2F2ZWRfZjc3X2NvbW1vbl9ub2RlICh2b2lkKQotLXsKLS0gIFNBVkVEX0Y3N19DT01NT05fUFRS IG5ldzsKLS0KLS0gIG5ldyA9IChTQVZFRF9GNzdfQ09NTU9OX1BUUikgeG1hbGxvYyAoc2l6ZW9m IChTQVZFRF9GNzdfQ09NTU9OKSk7Ci0tICByZXR1cm4gKG5ldyk7Ci0tfQotLQotLXN0YXRpYyBD T01NT05fRU5UUllfUFRSCi0tYWxsb2NhdGVfY29tbW9uX2VudHJ5X25vZGUgKHZvaWQpCi0tewot LSAgQ09NTU9OX0VOVFJZX1BUUiBuZXc7Ci0tCi0tICBuZXcgPSAoQ09NTU9OX0VOVFJZX1BUUikg eG1hbGxvYyAoc2l6ZW9mIChDT01NT05fRU5UUlkpKTsKLS0gIHJldHVybiAobmV3KTsKLS19Ci0t I2VuZGlmCi0tCi0gU0FWRURfRjc3X0NPTU1PTl9QVFIgaGVhZF9jb21tb25fbGlzdCA9IE5VTEw7 CS8qIFB0ciB0byAxc3Qgc2F2ZWQgQ09NTU9OICAqLwotLVNBVkVEX0Y3N19DT01NT05fUFRSIHRh aWxfY29tbW9uX2xpc3QgPSBOVUxMOwkvKiBQdHIgdG8gbGFzdCBzYXZlZCBDT01NT04gICovCi0t U0FWRURfRjc3X0NPTU1PTl9QVFIgY3VycmVudF9jb21tb24gPSBOVUxMOwkvKiBQdHIgdG8gY3Vy cmVudCBDT01NT04gKi8KLS0KLS0jaWYgMAotLXN0YXRpYyBTQVZFRF9CRl9QVFIgc2F2ZWRfYmZf bGlzdCA9IE5VTEw7CS8qIFB0ciB0byAoLmJmLGZ1bmN0aW9uKSAKLS0JCQkJCQkgICBsaXN0ICov Ci0tc3RhdGljIFNBVkVEX0JGX1BUUiBzYXZlZF9iZl9saXN0X2VuZCA9IE5VTEw7CS8qIFB0ciB0 byBhYm92ZSBsaXN0J3MgZW5kICovCi0tc3RhdGljIFNBVkVEX0JGX1BUUiBjdXJyZW50X2hlYWRf YmZfbGlzdCA9IE5VTEw7ICAgIC8qIEN1cnJlbnQgaGVhZCBvZgotLQkJCQkJCSAgICAgICBhYm92 ZSBsaXN0LiAgKi8KLS0KLS1zdGF0aWMgU0FWRURfQkZfUFRSIHRtcF9iZl9wdHI7CS8qIEdlbmVy aWMgdGVtcG9yYXJ5IGZvciB1c2UgCi0tCQkJCSAgIGluIG1hY3Jvcy4gICovCi0tCi0tLyogVGhl IGZvbGxvd2luZyBmdW5jdGlvbiBzaW1wbHkgZW50ZXJzIGEgZ2l2ZW4gY29tbW9uIGJsb2NrIG9u dG8gCi0tICAgdGhlIGdsb2JhbCBjb21tb24gYmxvY2sgY2hhaW4uICAqLwotLQotLXN0YXRpYyB2 b2lkCi0tYWRkX2NvbW1vbl9ibG9jayAoY2hhciAqbmFtZSwgQ09SRV9BRERSIG9mZnNldCwgaW50 IHNlY251bSwgY2hhciAqZnVuY19zdGFiKQotLXsKLS0gIFNBVkVEX0Y3N19DT01NT05fUFRSIHRt cDsKLS0gIGNoYXIgKmMsICpsb2NhbF9jb3B5X2Z1bmNfc3RhYjsKLS0KLS0gIC8qIElmIHRoZSBD T01NT04gYmxvY2sgd2UgYXJlIHRyeWluZyB0byBhZGQgaGFzIGEgYmxhbmsgCi0tICAgICBuYW1l IChpLmUuICIjQkxOS19DT00iKSB0aGVuIHdlIHNldCBpdCB0byBfX0JMQU5LCi0tICAgICBiZWNh dXNlIHRoZSBkYXJuICIjIiBjaGFyYWN0ZXIgbWFrZXMgR0RCJ3MgaW5wdXQgCi0tICAgICBwYXJz ZXIgaGF2ZSBmaXRzLiAgKi8KLS0KLS0KLS0gIGlmIChzdHJjbXAgKG5hbWUsIEJMQU5LX0NPTU1P Tl9OQU1FX09SSUdJTkFMKSA9PSAwCi0tICAgICAgfHwgc3RyY21wIChuYW1lLCBCTEFOS19DT01N T05fTkFNRV9NRjc3KSA9PSAwKQotLSAgICB7Ci0tCi0tICAgICAgeGZyZWUgKG5hbWUpOwotLSAg ICAgIG5hbWUgPSBhbGxvY2EgKHN0cmxlbiAoQkxBTktfQ09NTU9OX05BTUVfTE9DQUwpICsgMSk7 Ci0tICAgICAgc3RyY3B5IChuYW1lLCBCTEFOS19DT01NT05fTkFNRV9MT0NBTCk7Ci0tICAgIH0K LS0KLS0gIHRtcCA9IGFsbG9jYXRlX3NhdmVkX2Y3N19jb21tb25fbm9kZSAoKTsKLS0KLS0gIGxv Y2FsX2NvcHlfZnVuY19zdGFiID0geG1hbGxvYyAoc3RybGVuIChmdW5jX3N0YWIpICsgMSk7Ci0t ICBzdHJjcHkgKGxvY2FsX2NvcHlfZnVuY19zdGFiLCBmdW5jX3N0YWIpOwotLQotLSAgdG1wLT5u YW1lID0geG1hbGxvYyAoc3RybGVuIChuYW1lKSArIDEpOwotLQotLSAgLyogbG9jYWxfY29weV9m dW5jX3N0YWIgaXMgYSBzdGFic3RyaW5nLCBsZXQgdXMgZmlyc3QgZXh0cmFjdCB0aGUgCi0tICAg ICBmdW5jdGlvbiBuYW1lIGZyb20gdGhlIHN0YWIgYnkgTlVMTGluZyBvdXQgdGhlICc6JyBjaGFy YWN0ZXIuICAqLwotLQotLQotLSAgYyA9IE5VTEw7Ci0tICBjID0gc3RyY2hyIChsb2NhbF9jb3B5 X2Z1bmNfc3RhYiwgJzonKTsKLS0KLS0gIGlmIChjKQotLSAgICAqYyA9ICdcMCc7Ci0tICBlbHNl Ci0tICAgIGVycm9yIChfKCJNYWxmb3JtZWQgZnVuY3Rpb24gU1RBQiBmb3VuZCBpbiBhZGRfY29t bW9uX2Jsb2NrKCkiKSk7Ci0tCi0tCi0tICB0bXAtPm93bmluZ19mdW5jdGlvbiA9IHhtYWxsb2Mg KHN0cmxlbiAobG9jYWxfY29weV9mdW5jX3N0YWIpICsgMSk7Ci0tCi0tICBzdHJjcHkgKHRtcC0+ b3duaW5nX2Z1bmN0aW9uLCBsb2NhbF9jb3B5X2Z1bmNfc3RhYik7Ci0tCi0tICBzdHJjcHkgKHRt cC0+bmFtZSwgbmFtZSk7Ci0tICB0bXAtPm9mZnNldCA9IG9mZnNldDsKLS0gIHRtcC0+bmV4dCA9 IE5VTEw7Ci0tICB0bXAtPmVudHJpZXMgPSBOVUxMOwotLSAgdG1wLT5zZWNudW0gPSBzZWNudW07 Ci0tCi0tICBjdXJyZW50X2NvbW1vbiA9IHRtcDsKLS0KLS0gIGlmIChoZWFkX2NvbW1vbl9saXN0 ID09IE5VTEwpCi0tICAgIHsKLS0gICAgICBoZWFkX2NvbW1vbl9saXN0ID0gdGFpbF9jb21tb25f bGlzdCA9IHRtcDsKLS0gICAgfQotLSAgZWxzZQotLSAgICB7Ci0tICAgICAgdGFpbF9jb21tb25f bGlzdC0+bmV4dCA9IHRtcDsKLS0gICAgICB0YWlsX2NvbW1vbl9saXN0ID0gdG1wOwotLSAgICB9 Ci0tfQotLSNlbmRpZgotLQotLS8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gc2ltcGx5IGVudGVy cyBhIGdpdmVuIGNvbW1vbiBlbnRyeSBvbnRvIAotLSAgIHRoZSAiY3VycmVudF9jb21tb24iIGJs b2NrIHRoYXQgaGFzIGJlZW4gc2F2ZWQgYXdheS4gICovCi0tCi0tI2lmIDAKLS1zdGF0aWMgdm9p ZAotLWFkZF9jb21tb25fZW50cnkgKHN0cnVjdCBzeW1ib2wgKmVudHJ5X3N5bV9wdHIpCi0tewot LSAgQ09NTU9OX0VOVFJZX1BUUiB0bXA7Ci0tCi0tCi0tCi0tICAvKiBUaGUgb3JkZXIgb2YgdGhp cyBsaXN0IGlzIGltcG9ydGFudCwgc2luY2UgCi0tICAgICB3ZSBleHBlY3QgdGhlIGVudHJpZXMg dG8gYXBwZWFyIGluIGRlY2wuCi0tICAgICBvcmRlciB3aGVuIHdlIGxhdGVyIGlzc3VlICJpbmZv IGNvbW1vbiIgY2FsbHMuICAqLwotLQotLSAgdG1wID0gYWxsb2NhdGVfY29tbW9uX2VudHJ5X25v ZGUgKCk7Ci0tCi0tICB0bXAtPm5leHQgPSBOVUxMOwotLSAgdG1wLT5zeW1ib2wgPSBlbnRyeV9z eW1fcHRyOwotLQotLSAgaWYgKGN1cnJlbnRfY29tbW9uID09IE5VTEwpCi0tICAgIGVycm9yIChf KCJBdHRlbXB0IHRvIGFkZCBDT01NT04gZW50cnkgd2l0aCBubyBibG9jayBvcGVuISIpKTsKLS0g IGVsc2UKLS0gICAgewotLSAgICAgIGlmIChjdXJyZW50X2NvbW1vbi0+ZW50cmllcyA9PSBOVUxM KQotLQl7Ci0tCSAgY3VycmVudF9jb21tb24tPmVudHJpZXMgPSB0bXA7Ci0tCSAgY3VycmVudF9j b21tb24tPmVuZF9vZl9lbnRyaWVzID0gdG1wOwotLQl9Ci0tICAgICAgZWxzZQotLQl7Ci0tCSAg Y3VycmVudF9jb21tb24tPmVuZF9vZl9lbnRyaWVzLT5uZXh0ID0gdG1wOwotLQkgIGN1cnJlbnRf Y29tbW9uLT5lbmRfb2ZfZW50cmllcyA9IHRtcDsKLS0JfQotLSAgICB9Ci0tfQotLSNlbmRpZgot LQotLS8qIFRoaXMgcm91dGluZSBmaW5kcyB0aGUgZmlyc3QgZW5jb3VudHJlZCBDT01NT04gYmxv Y2sgbmFtZWQgIm5hbWUiLiAgKi8KLS0KLS0jaWYgMAotLXN0YXRpYyBTQVZFRF9GNzdfQ09NTU9O X1BUUgotLWZpbmRfZmlyc3RfY29tbW9uX25hbWVkIChjaGFyICpuYW1lKQotLXsKLS0KLS0gIFNB VkVEX0Y3N19DT01NT05fUFRSIHRtcDsKLS0KLS0gIHRtcCA9IGhlYWRfY29tbW9uX2xpc3Q7Ci0t Ci0tICB3aGlsZSAodG1wICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBpZiAoc3RyY21wICh0bXAt Pm5hbWUsIG5hbWUpID09IDApCi0tCXJldHVybiAodG1wKTsKLS0gICAgICBlbHNlCi0tCXRtcCA9 IHRtcC0+bmV4dDsKLS0gICAgfQotLSAgcmV0dXJuIChOVUxMKTsKLS19Ci0tI2VuZGlmCi0gCi0g LyogVGhpcyByb3V0aW5lIGZpbmRzIHRoZSBmaXJzdCBlbmNvdW50cmVkIENPTU1PTiBibG9jayBu YW1lZCAibmFtZSIgCi0gICAgdGhhdCBiZWxvbmdzIHRvIGZ1bmN0aW9uIGZ1bmNuYW1lLiAgKi8K LUBAIC01ODYsMTkzICszOTQsMyBAQCBmaW5kX2NvbW1vbl9mb3JfZnVuY3Rpb24gKGNvbnN0IGNo YXIgKm5hCi0gICAgIH0KLSAgIHJldHVybiAoTlVMTCk7Ci0gfQotLQotLQotLSNpZiAwCi0tCi0t LyogVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gcGF0Y2ggdXAgdGhlIG9mZnNl dHMgCi0tICAgZm9yIHRoZSBzdGF0aWNzIGNvbnRhaW5lZCBpbiB0aGUgQ09NTU9OIGJsb2NrIG5h bWVkCi0tICAgIm5hbWUuIiAgKi8KLS0KLS1zdGF0aWMgdm9pZAotLXBhdGNoX2NvbW1vbl9lbnRy aWVzIChTQVZFRF9GNzdfQ09NTU9OX1BUUiBibGssIENPUkVfQUREUiBvZmZzZXQsIGludCBzZWNu dW0pCi0tewotLSAgQ09NTU9OX0VOVFJZX1BUUiBlbnRyeTsKLS0KLS0gIGJsay0+b2Zmc2V0ID0g b2Zmc2V0OwkJLyogS2VlcCB0aGlzIGFyb3VuZCBmb3IgZnV0dXJlIHVzZS4gICovCi0tCi0tICBl bnRyeSA9IGJsay0+ZW50cmllczsKLS0KLS0gIHdoaWxlIChlbnRyeSAhPSBOVUxMKQotLSAgICB7 Ci0tICAgICAgU1lNQk9MX1ZBTFVFIChlbnRyeS0+c3ltYm9sKSArPSBvZmZzZXQ7Ci0tICAgICAg U1lNQk9MX1NFQ1RJT04gKGVudHJ5LT5zeW1ib2wpID0gc2VjbnVtOwotLQotLSAgICAgIGVudHJ5 ID0gZW50cnktPm5leHQ7Ci0tICAgIH0KLS0gIGJsay0+c2VjbnVtID0gc2VjbnVtOwotLX0KLS0K LS0vKiBQYXRjaCBhbGwgY29tbW9ucyBuYW1lZCAibmFtZSIgdGhhdCBuZWVkIHBhdGNoaW5nLlNp bmNlIENPTU1PTgotLSAgIGJsb2NrcyBvY2N1ciB3aXRoIHJlbGF0aXZlIGluZnJlcXVlbmN5LCB3 ZSBzaW1wbHkgZG8gYSBsaW5lYXIgc2NhbiBvbgotLSAgIHRoZSBuYW1lLiAgRXZlbnR1YWxseSwg dGhlIGJlc3Qgd2F5IHRvIGRvIHRoaXMgd2lsbCBiZSBhCi0tICAgaGFzaGVkLWxvb2t1cC4gIFNl Y251bSBpcyB0aGUgc2VjdGlvbiBudW1iZXIgZm9yIHRoZSAuYnNzIHNlY3Rpb24KLS0gICAod2hp Y2ggaXMgd2hlcmUgY29tbW9uIGRhdGEgbGl2ZXMpLiAgKi8KLS0KLS1zdGF0aWMgdm9pZAotLXBh dGNoX2FsbF9jb21tb25zX2J5X25hbWUgKGNoYXIgKm5hbWUsIENPUkVfQUREUiBvZmZzZXQsIGlu dCBzZWNudW0pCi0tewotLQotLSAgU0FWRURfRjc3X0NPTU1PTl9QVFIgdG1wOwotLQotLSAgLyog Rm9yIGJsYW5rIGNvbW1vbiBibG9ja3MsIGNoYW5nZSB0aGUgY2Fub25pY2FsIHJlcHJzZW50YXRp b24gCi0tICAgICBvZiBhIGJsYW5rIG5hbWUgKi8KLS0KLS0gIGlmIChzdHJjbXAgKG5hbWUsIEJM QU5LX0NPTU1PTl9OQU1FX09SSUdJTkFMKSA9PSAwCi0tICAgICAgfHwgc3RyY21wIChuYW1lLCBC TEFOS19DT01NT05fTkFNRV9NRjc3KSA9PSAwKQotLSAgICB7Ci0tICAgICAgeGZyZWUgKG5hbWUp OwotLSAgICAgIG5hbWUgPSBhbGxvY2EgKHN0cmxlbiAoQkxBTktfQ09NTU9OX05BTUVfTE9DQUwp ICsgMSk7Ci0tICAgICAgc3RyY3B5IChuYW1lLCBCTEFOS19DT01NT05fTkFNRV9MT0NBTCk7Ci0t ICAgIH0KLS0KLS0gIHRtcCA9IGhlYWRfY29tbW9uX2xpc3Q7Ci0tCi0tICB3aGlsZSAodG1wICE9 IE5VTEwpCi0tICAgIHsKLS0gICAgICBpZiAoQ09NTU9OX05FRURTX1BBVENISU5HICh0bXApKQot LQlpZiAoc3RyY21wICh0bXAtPm5hbWUsIG5hbWUpID09IDApCi0tCSAgcGF0Y2hfY29tbW9uX2Vu dHJpZXMgKHRtcCwgb2Zmc2V0LCBzZWNudW0pOwotLQotLSAgICAgIHRtcCA9IHRtcC0+bmV4dDsK LS0gICAgfQotLX0KLS0jZW5kaWYKLS0KLS0vKiBUaGlzIG1hY3JvIGFkZHMgdGhlIHN5bWJvbC1u dW1iZXIgZm9yIHRoZSBzdGFydCBvZiB0aGUgZnVuY3Rpb24gCi0tICAgKHRoZSBzeW1ib2wgbnVt YmVyIG9mIHRoZSAuYmYpIHJlZmVyZW5jZWQgYnkgc3ltbnVtX2ZjbiB0byBhIAotLSAgIGxpc3Qu ICBUaGlzIGxpc3QsIGluIHJlYWxpdHkgc2hvdWxkIGJlIGEgRklGTyBxdWV1ZSBidXQgc2luY2Ug Ci0tICAgI2xpbmUgcHJhZ21hcyBzb21ldGltZXMgY2F1c2UgbGluZSByYW5nZXMgdG8gZ2V0IG1l c3NlZCB1cCAKLS0gICB3ZSBzaW1wbHkgY3JlYXRlIGEgbGluZWFyIGxpc3QuICBUaGlzIGxpc3Qg Y2FuIHRoZW4gYmUgc2VhcmNoZWQgCi0tICAgZmlyc3QgYnkgYSBxdWV1ZWluZyBhbGdvcml0aG0g YW5kIHVwb24gZmFpbHVyZSBmYWxsIGJhY2sgdG8gCi0tICAgYSBsaW5lYXIgc2Nhbi4gICovCi0t Ci0tI2lmIDAKLS0jZGVmaW5lIEFERF9CRl9TWU1OVU0oYmZfc3ltLGZjbl9zeW0pIFwKLS0gIFwK LS0gIGlmIChzYXZlZF9iZl9saXN0ID09IE5VTEwpIFwKLS17IFwKLS0gICAgdG1wX2JmX3B0ciA9 IGFsbG9jYXRlX3NhdmVkX2JmX25vZGUoKTsgXAotLSAgICAgIFwKLS0JdG1wX2JmX3B0ci0+c3lt bnVtX2JmID0gKGJmX3N5bSk7IFwKLS0JICB0bXBfYmZfcHRyLT5zeW1udW1fZmNuID0gKGZjbl9z eW0pOyAgXAotLQkgICAgdG1wX2JmX3B0ci0+bmV4dCA9IE5VTEw7IFwKLS0JICAgICAgXAotLQkJ Y3VycmVudF9oZWFkX2JmX2xpc3QgPSBzYXZlZF9iZl9saXN0ID0gdG1wX2JmX3B0cjsgXAotLQkJ ICBzYXZlZF9iZl9saXN0X2VuZCA9IHRtcF9iZl9wdHI7IFwKLS0JCSAgfSBcCi0tZWxzZSBcCi0t eyAgXAotLSAgICAgdG1wX2JmX3B0ciA9IGFsbG9jYXRlX3NhdmVkX2JmX25vZGUoKTsgXAotLSAg ICAgICBcCi0tICAgICAgICAgdG1wX2JmX3B0ci0+c3ltbnVtX2JmID0gKGJmX3N5bSk7ICBcCi0t CSAgIHRtcF9iZl9wdHItPnN5bW51bV9mY24gPSAoZmNuX3N5bSk7ICBcCi0tCSAgICAgdG1wX2Jm X3B0ci0+bmV4dCA9IE5VTEw7ICBcCi0tCSAgICAgICBcCi0tCQkgc2F2ZWRfYmZfbGlzdF9lbmQt Pm5leHQgPSB0bXBfYmZfcHRyOyAgXAotLQkJICAgc2F2ZWRfYmZfbGlzdF9lbmQgPSB0bXBfYmZf cHRyOyBcCi0tCQkgICB9Ci0tI2VuZGlmCi0tCi0tLyogVGhpcyBmdW5jdGlvbiBmcmVlcyB0aGUg ZW50aXJlICguYmYsZnVuY3Rpb24pIGxpc3QuICAqLwotLQotLSNpZiAwCi0tc3RhdGljIHZvaWQK LS1jbGVhcl9iZl9saXN0ICh2b2lkKQotLXsKLS0KLS0gIFNBVkVEX0JGX1BUUiB0bXAgPSBzYXZl ZF9iZl9saXN0OwotLSAgU0FWRURfQkZfUFRSIG5leHQgPSBOVUxMOwotLQotLSAgd2hpbGUgKHRt cCAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgbmV4dCA9IHRtcC0+bmV4dDsKLS0gICAgICB4ZnJl ZSAodG1wKTsKLS0gICAgICB0bXAgPSBuZXh0OwotLSAgICB9Ci0tICBzYXZlZF9iZl9saXN0ID0g TlVMTDsKLS19Ci0tI2VuZGlmCi0tCi0taW50IGdsb2JhbF9yZW1vdGVfZGVidWc7Ci0tCi0tI2lm IDAKLS0KLS1zdGF0aWMgbG9uZwotLWdldF9iZl9mb3JfZmNuIChsb25nIHRoZV9mdW5jdGlvbikK LS17Ci0tICBTQVZFRF9CRl9QVFIgdG1wOwotLSAgaW50IG5wcm9iZXMgPSAwOwotLQotLSAgLyog Rmlyc3QgdXNlIGEgc2ltcGxlIHF1ZXVpbmcgYWxnb3JpdGhtIChpLmUuIGxvb2sgYW5kIHNlZSBp ZiB0aGUgCi0tICAgICBpdGVtIGF0IHRoZSBoZWFkIG9mIHRoZSBxdWV1ZSBpcyB0aGUgb25lIHlv dSB3YW50KS4gICovCi0tCi0tICBpZiAoc2F2ZWRfYmZfbGlzdCA9PSBOVUxMKQotLSAgICBpbnRl cm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAotLQkJICAgIF8oImNhbm5vdCBnZXQgLmJm IG5vZGUgb2ZmIGVtcHR5IGxpc3QiKSk7Ci0tCi0tICBpZiAoY3VycmVudF9oZWFkX2JmX2xpc3Qg IT0gTlVMTCkKLS0gICAgaWYgKGN1cnJlbnRfaGVhZF9iZl9saXN0LT5zeW1udW1fZmNuID09IHRo ZV9mdW5jdGlvbikKLS0gICAgICB7Ci0tCWlmIChnbG9iYWxfcmVtb3RlX2RlYnVnKQotLQkgIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwgIioiKTsKLS0KLS0JdG1wID0gY3VycmVudF9o ZWFkX2JmX2xpc3Q7Ci0tCWN1cnJlbnRfaGVhZF9iZl9saXN0ID0gY3VycmVudF9oZWFkX2JmX2xp c3QtPm5leHQ7Ci0tCXJldHVybiAodG1wLT5zeW1udW1fYmYpOwotLSAgICAgIH0KLS0KLS0gIC8q IElmIHRoZSBhYm92ZSBkaWQgbm90IHdvcmsgKHByb2JhYmx5IGJlY2F1c2UgI2xpbmUgZGlyZWN0 aXZlcyB3ZXJlIAotLSAgICAgdXNlZCBpbiB0aGUgc291cmNlZmlsZSBhbmQgdGhleSBtZXNzZWQg dXAgb3VyIGludGVybmFsIHRhYmxlcykgd2Ugbm93IGRvCi0tICAgICB0aGUgdWdseSBsaW5lYXIg c2Nhbi4gICovCi0tCi0tICBpZiAoZ2xvYmFsX3JlbW90ZV9kZWJ1ZykKLS0gICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkZXJyLCAiXG5kZWZhdWx0aW5nIHRvIGxpbmVhciBzY2FuXG4iKTsK LS0KLS0gIG5wcm9iZXMgPSAwOwotLSAgdG1wID0gc2F2ZWRfYmZfbGlzdDsKLS0gIHdoaWxlICh0 bXAgIT0gTlVMTCkKLS0gICAgewotLSAgICAgIG5wcm9iZXMrKzsKLS0gICAgICBpZiAodG1wLT5z eW1udW1fZmNuID09IHRoZV9mdW5jdGlvbikKLS0JewotLQkgIGlmIChnbG9iYWxfcmVtb3RlX2Rl YnVnKQotLQkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkZXJyLCAiRm91bmQgaW4gJWQg cHJvYmVzXG4iLCBucHJvYmVzKTsKLS0JICBjdXJyZW50X2hlYWRfYmZfbGlzdCA9IHRtcC0+bmV4 dDsKLS0JICByZXR1cm4gKHRtcC0+c3ltbnVtX2JmKTsKLS0JfQotLSAgICAgIHRtcCA9IHRtcC0+ bmV4dDsKLS0gICAgfQotLQotLSAgcmV0dXJuICgtMSk7Ci0tfQotLQotLXN0YXRpYyBTQVZFRF9G VU5DVElPTl9QVFIgc2F2ZWRfZnVuY3Rpb25fbGlzdCA9IE5VTEw7Ci0tc3RhdGljIFNBVkVEX0ZV TkNUSU9OX1BUUiBzYXZlZF9mdW5jdGlvbl9saXN0X2VuZCA9IE5VTEw7Ci0tCi0tc3RhdGljIHZv aWQKLS1jbGVhcl9mdW5jdGlvbl9saXN0ICh2b2lkKQotLXsKLS0gIFNBVkVEX0ZVTkNUSU9OX1BU UiB0bXAgPSBzYXZlZF9mdW5jdGlvbl9saXN0OwotLSAgU0FWRURfRlVOQ1RJT05fUFRSIG5leHQg PSBOVUxMOwotLQotLSAgd2hpbGUgKHRtcCAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgbmV4dCA9 IHRtcC0+bmV4dDsKLS0gICAgICB4ZnJlZSAodG1wKTsKLS0gICAgICB0bXAgPSBuZXh0OwotLSAg ICB9Ci0tCi0tICBzYXZlZF9mdW5jdGlvbl9saXN0ID0gTlVMTDsKLS19Ci0tI2VuZGlmCi1JbmRl eDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZi1sYW5nLmgKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2YtbGFuZy5oCTIwMTItMDYtMDIgMTk6MTE6NTQuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZi1sYW5nLmgJMjAxMi0w Ni0wMiAxOToxMzo1NS4zNDUzMTc5NzAgKzAyMDAKLUBAIC03NiwxNSArNzYsMTAgQEAgdHlwZWRl ZiBzdHJ1Y3Qgc2F2ZWRfZjc3X2NvbW1vbiBTQVZFRF9GNwotIHR5cGVkZWYgc3RydWN0IGNvbW1v bl9lbnRyeSBDT01NT05fRU5UUlksICpDT01NT05fRU5UUllfUFRSOwotIAotIGV4dGVybiBTQVZF RF9GNzdfQ09NTU9OX1BUUiBoZWFkX2NvbW1vbl9saXN0OwkvKiBQdHIgdG8gMXN0IHNhdmVkIENP TU1PTiAgKi8KLS1leHRlcm4gU0FWRURfRjc3X0NPTU1PTl9QVFIgdGFpbF9jb21tb25fbGlzdDsJ LyogUHRyIHRvIGxhc3Qgc2F2ZWQgQ09NTU9OICAqLwotLWV4dGVybiBTQVZFRF9GNzdfQ09NTU9O X1BUUiBjdXJyZW50X2NvbW1vbjsJLyogUHRyIHRvIGN1cnJlbnQgQ09NTU9OICovCi0gCi0gZXh0 ZXJuIFNBVkVEX0Y3N19DT01NT05fUFRSIGZpbmRfY29tbW9uX2Zvcl9mdW5jdGlvbiAoY29uc3Qg Y2hhciAqLAotIAkJCQkJCSAgICAgIGNvbnN0IGNoYXIgKik7Ci0gCi0tI2RlZmluZSBVTklOSVRJ QUxJWkVEX1NFQ05VTSAtMQotLSNkZWZpbmUgQ09NTU9OX05FRURTX1BBVENISU5HKGJsaykgKChi bGspLT5zZWNudW0gPT0gVU5JTklUSUFMSVpFRF9TRUNOVU0pCi0tCi0gI2RlZmluZSBCTEFOS19D T01NT05fTkFNRV9PUklHSU5BTCAiI0JMTktfQ09NIgkvKiBYTEYgYXNzaWduZWQgICovCi0gI2Rl ZmluZSBCTEFOS19DT01NT05fTkFNRV9NRjc3ICAgICAiX19CTE5LX18iCS8qIE1GNzcgYXNzaWdu ZWQgICovCi0gI2RlZmluZSBCTEFOS19DT01NT05fTkFNRV9MT0NBTCAgICAiX19CTEFOSyIJLyog TG9jYWwgR0RCICovCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZi12YWxwcmludC5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9mLXZhbHByaW50 LmMJMjAxMi0wNi0wMiAxOToxMTo1NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwNjAyL2dkYi9mLXZhbHByaW50LmMJMjAxMi0wNi0wMiAxOToxNDoxMS42MjUzMTM0MzIgKzAy MDAKLUBAIC0zNSwxMCArMzUsNiBAQAotICNpbmNsdWRlICJjb21tYW5kLmgiCi0gI2luY2x1ZGUg ImJsb2NrLmgiCi0gCi0tI2lmIDAKLS1zdGF0aWMgaW50IHRoZXJlX2lzX2FfdmlzaWJsZV9jb21t b25fbmFtZWQgKGNoYXIgKik7Ci0tI2VuZGlmCi0tCi0gZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVf Zl92YWxwcmludCAodm9pZCk7Ci0gc3RhdGljIHZvaWQgaW5mb19jb21tb25fY29tbWFuZCAoY2hh ciAqLCBpbnQpOwotIHN0YXRpYyB2b2lkIGxpc3RfYWxsX3Zpc2libGVfY29tbW9ucyAoY29uc3Qg Y2hhciAqKTsKLUBAIC01MzUsNjcgKzUzMSw2IEBAIGluZm9fY29tbW9uX2NvbW1hbmQgKGNoYXIg KmNvbW5hbWUsIGludAotIAkJICAgICBjb21uYW1lLCBmdW5uYW1lKTsKLSB9Ci0gCi0tLyogVGhp cyBmdW5jdGlvbiBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZXJlIGlzIGEKLS0gICBG NzcgY29tbW9uIGJsb2NrIHZpc2libGUgYXQgdGhlIGN1cnJlbnQgc2NvcGUgY2FsbGVkICdjb21u YW1lJy4gICovCi0tCi0tI2lmIDAKLS1zdGF0aWMgaW50Ci0tdGhlcmVfaXNfYV92aXNpYmxlX2Nv bW1vbl9uYW1lZCAoY2hhciAqY29tbmFtZSkKLS17Ci0tICBTQVZFRF9GNzdfQ09NTU9OX1BUUiB0 aGVfY29tbW9uOwotLSAgc3RydWN0IGZyYW1lX2luZm8gKmZpOwotLSAgY2hhciAqZnVubmFtZSA9 IDA7Ci0tICBzdHJ1Y3Qgc3ltYm9sICpmdW5jOwotLQotLSAgaWYgKGNvbW5hbWUgPT0gTlVMTCkK LS0gICAgZXJyb3IgKF8oIkNhbm5vdCBkZWFsIHdpdGggTlVMTCBjb21tb24gbmFtZSEiKSk7Ci0t Ci0tICBmaSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoXygiTm8gZnJhbWUgc2VsZWN0ZWQiKSk7Ci0t Ci0tICAvKiBUaGUgZm9sbG93aW5nIGlzIGdlbmVyYWxseSByaXBwZWQgb2ZmIGZyb20gc3RhY2su YydzIHJvdXRpbmUgCi0tICAgICBwcmludF9mcmFtZV9pbmZvKCkuICAqLwotLQotLSAgZnVuYyA9 IGZpbmRfcGNfZnVuY3Rpb24gKGZpLT5wYyk7Ci0tICBpZiAoZnVuYykKLS0gICAgewotLSAgICAg IC8qIEluIGNlcnRhaW4gcGF0aG9sb2dpY2FsIGNhc2VzLCB0aGUgc3ltdGFicyBnaXZlIHRoZSB3 cm9uZwotLSAgICAgICAgIGZ1bmN0aW9uICh3aGVuIHdlIGFyZSBpbiB0aGUgZmlyc3QgZnVuY3Rp b24gaW4gYSBmaWxlIHdoaWNoCi0tICAgICAgICAgaXMgY29tcGlsZWQgd2l0aG91dCBkZWJ1Z2dp bmcgc3ltYm9scywgdGhlIHByZXZpb3VzIGZ1bmN0aW9uCi0tICAgICAgICAgaXMgY29tcGlsZWQg d2l0aCBkZWJ1Z2dpbmcgc3ltYm9scywgYW5kIHRoZSAiZm9vLm8iIHN5bWJvbAotLSAgICAgICAg IHRoYXQgaXMgc3VwcG9zZWQgdG8gdGVsbCB1cyB3aGVyZSB0aGUgZmlsZSB3aXRoIGRlYnVnZ2lu ZyBzeW1ib2xzCi0tICAgICAgICAgZW5kcyBoYXMgYmVlbiB0cnVuY2F0ZWQgYnkgYXIgYmVjYXVz ZSBpdCBpcyBsb25nZXIgdGhhbiAxNQotLSAgICAgICAgIGNoYXJhY3RlcnMpLgotLQotLSAgICAg ICAgIFNvIGxvb2sgaW4gdGhlIG1pbmltYWwgc3ltYm9sIHRhYmxlcyBhcyB3ZWxsLCBhbmQgaWYg aXQgY29tZXMKLS0gICAgICAgICB1cCB3aXRoIGEgbGFyZ2VyIGFkZHJlc3MgZm9yIHRoZSBmdW5j dGlvbiB1c2UgdGhhdCBpbnN0ZWFkLgotLSAgICAgICAgIEkgZG9uJ3QgdGhpbmsgdGhpcyBjYW4g ZXZlciBjYXVzZSBhbnkgcHJvYmxlbXM7IHRoZXJlIHNob3VsZG4ndAotLSAgICAgICAgIGJlIGFu eSBtaW5pbWFsIHN5bWJvbHMgaW4gdGhlIG1pZGRsZSBvZiBhIGZ1bmN0aW9uLgotLSAgICAgICAg IEZJWE1FOiAgKE5vdCBuZWNlc3NhcmlseSB0cnVlLiAgV2hhdCBhYm91dCB0ZXh0IGxhYmVscz8p ICAqLwotLQotLSAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCA9IGxvb2t1cF9t aW5pbWFsX3N5bWJvbF9ieV9wYyAoZmktPnBjKTsKLS0KLS0gICAgICBpZiAobXN5bWJvbCAhPSBO VUxMCi0tCSAgJiYgKFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltYm9sKQotLQkgICAgICA+IEJM T0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKGZ1bmMpKSkpCi0tCWZ1bm5hbWUgPSBTWU1C T0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKTsKLS0gICAgICBlbHNlCi0tCWZ1bm5hbWUgPSBTWU1C T0xfTElOS0FHRV9OQU1FIChmdW5jKTsKLS0gICAgfQotLSAgZWxzZQotLSAgICB7Ci0tICAgICAg c3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sID0KLS0JbG9va3VwX21pbmltYWxfc3ltYm9s X2J5X3BjIChmaS0+cGMpOwotLQotLSAgICAgIGlmIChtc3ltYm9sICE9IE5VTEwpCi0tCWZ1bm5h bWUgPSBTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKTsKLS0gICAgfQotLQotLSAgdGhlX2Nv bW1vbiA9IGZpbmRfY29tbW9uX2Zvcl9mdW5jdGlvbiAoY29tbmFtZSwgZnVubmFtZSk7Ci0tCi0t ICByZXR1cm4gKHRoZV9jb21tb24gPyAxIDogMCk7Ci0tfQotLSNlbmRpZgotLQotIHZvaWQKLSBf aW5pdGlhbGl6ZV9mX3ZhbHByaW50ICh2b2lkKQotIHsKCmRpZmYgLS1naXQgYS9nZGItZm9ydHJh bi1jb21tb24ucGF0Y2ggYi9nZGItZm9ydHJhbi1jb21tb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGUwNzIxMzMuLjAwMDAwMDAKLS0tIGEvZ2RiLWZvcnRyYW4tY29tbW9u LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTk4ICswLDAgQEAKLUluZGV4OiBnZGItNy40Ljkx LjIwMTIwODAxL2dkYi9kd2FyZjJyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjkxLjIw MTIwODAxLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEyLTA4LTAxIDE4OjM2OjUxLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjQuOTEuMjAxMjA4MDEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEyLTA4 LTAxIDE4OjM4OjU0LjIwMTU0MDUwMCArMDIwMAotQEAgLTExMDczLDEyICsxMTA3MywxNCBAQCBy ZWFkX3NldF90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RyCi0gICByZXR1cm4gc2V0X2Rp ZV90eXBlIChkaWUsIHNldF90eXBlLCBjdSk7Ci0gfQotIAotLS8qIEZpcnN0IGN1dDogaW5zdGFs bCBlYWNoIGNvbW1vbiBibG9jayBtZW1iZXIgYXMgYSBnbG9iYWwgdmFyaWFibGUuICAqLwotKy8q IENyZWF0ZSBhcHByb3ByaWF0ZSBsb2NhbGx5LXNjb3BlZCB2YXJpYWJsZXMgZm9yIGFsbCB0aGUg RFdfVEFHX2NvbW1vbl9ibG9jawotKyAgIGVudHJpZXMuICBDcmVhdGUgYWxzbyBUWVBFX0NPREVf U1RSVUNUIGxpc3RpbmcgYWxsIHN1Y2ggdmFyaWFibGVzIHRvIGJlCi0rICAgYXZhaWxhYmxlIGZv ciBgaW5mbyBjb21tb24nLiAgQ09NTU9OX0JMT0NLX0RPTUFJTiBpcyB1c2VkIHRvIHNlcGF0ZSB0 aGUKLSsgICBjb21tb24gYmxvY2tzIG5hbWUgbmFtZXNwYWNlIGZyb20gcmVndWxhciB2YXJpYWJs ZSBuYW1lcy4gICovCi0gCi0gc3RhdGljIHZvaWQKLSByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIHsKLS0gIHN0cnVjdCBkaWVf aW5mbyAqY2hpbGRfZGllOwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLSAgIHN0cnVjdCBz eW1ib2wgKnN5bTsKLSAgIENPUkVfQUREUiBiYXNlID0gKENPUkVfQUREUikgMDsKLUBAIC0xMTEw MywyMCArMTExMDUsNjcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGll LAotICAgICB9Ci0gICBpZiAoZGllLT5jaGlsZCAhPSBOVUxMKQotICAgICB7Ci0rICAgICAgc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+b2JqZmlsZTsKLSsgICAgICBzdHJ1Y3QgZGllX2lu Zm8gKmNoaWxkX2RpZTsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSsgICAgICBzdHJ1Y3Qg ZmllbGQgKmZpZWxkOwotKyAgICAgIGNoYXIgKm5hbWU7Ci0rICAgICAgc3RydWN0IHN5bWJvbCAq c3ltOwotKwotKyAgICAgIHR5cGUgPSBhbGxvY190eXBlIChvYmpmaWxlKTsKLSsgICAgICBUWVBF X0NPREUgKHR5cGUpID0gVFlQRV9DT0RFX1NUUlVDVDsKLSsgICAgICAvKiBBcnRpZmljaWFsIHR5 cGUgdG8gYmUgdXNlZCBvbmx5IGJ5IGBpbmZvIGNvbW1vbicuICAqLwotKyAgICAgIFRZUEVfTkFN RSAodHlwZSkgPSAiPGNvbW1vbj4iOwotKwotKyAgICAgIGNoaWxkX2RpZSA9IGRpZS0+Y2hpbGQ7 Ci0rICAgICAgd2hpbGUgKGNoaWxkX2RpZSAmJiBjaGlsZF9kaWUtPnRhZykKLSsJewotKwkgIFRZ UEVfTkZJRUxEUyAodHlwZSkrKzsKLSsJICBjaGlsZF9kaWUgPSBzaWJsaW5nX2RpZSAoY2hpbGRf ZGllKTsKLSsJfQotKwotKyAgICAgIFRZUEVfRklFTERTICh0eXBlKSA9IG9ic3RhY2tfYWxsb2Mg KCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0rCQkJCQkgIHNpemVvZiAoKlRZUEVfRklFTERT ICh0eXBlKSkKLSsJCQkJCSAgKiBUWVBFX05GSUVMRFMgKHR5cGUpKTsKLSsgICAgICBtZW1zZXQg KFRZUEVfRklFTERTICh0eXBlKSwgMCwgc2l6ZW9mICgqVFlQRV9GSUVMRFMgKHR5cGUpKQotKwkJ CQkgICAgICogVFlQRV9ORklFTERTICh0eXBlKSk7Ci0rICAgICAgCi0rICAgICAgZmllbGQgPSBU WVBFX0ZJRUxEUyAodHlwZSk7Ci0gICAgICAgY2hpbGRfZGllID0gZGllLT5jaGlsZDsKLSAgICAg ICB3aGlsZSAoY2hpbGRfZGllICYmIGNoaWxkX2RpZS0+dGFnKQotIAl7Ci0gCSAgTE9OR0VTVCBv ZmZzZXQ7Ci0gCi0rCSAgLyogQ3JlYXRlIHRoZSBzeW1ib2wgaW4gdGhlIERXX1RBR19jb21tb25f YmxvY2sgYmxvY2sgaW4gdGhlIGN1cnJlbnQKLSsJICAgICBzeW1ib2wgc2NvcGUuICAqLwotIAkg IHN5bSA9IG5ld19zeW1ib2wgKGNoaWxkX2RpZSwgTlVMTCwgY3UpOwotKwotKwkgIC8qIFVuZG9j dW1lbnRlZCBpbiBEV0FSRjMsIHdoZW4gaXQgY2FuIGJlIHByZXNlbnQ/ICAqLwotIAkgIGlmIChz eW0gIT0gTlVMTAotIAkgICAgICAmJiBoYW5kbGVfZGF0YV9tZW1iZXJfbG9jYXRpb24gKGNoaWxk X2RpZSwgY3UsICZvZmZzZXQpKQotIAkgICAgewotIAkgICAgICBTWU1CT0xfVkFMVUVfQUREUkVT UyAoc3ltKSA9IGJhc2UgKyBvZmZzZXQ7Ci0gCSAgICAgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3lt LCAmZ2xvYmFsX3N5bWJvbHMpOwotIAkgICAgfQotKwotKwkgIGlmIChTWU1CT0xfQ0xBU1MgKHN5 bSkgPT0gTE9DX1NUQVRJQykKLSsJICAgIFNFVF9GSUVMRF9QSFlTQUREUiAoKmZpZWxkLCBTWU1C T0xfVkFMVUVfQUREUkVTUyAoc3ltKSk7Ci0rCSAgZWxzZQotKwkgICAgU0VUX0ZJRUxEX1BIWVNO QU1FICgqZmllbGQsIFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSkpOwotKwkgIEZJRUxEX1RZUEUg KCpmaWVsZCkgPSBTWU1CT0xfVFlQRSAoc3ltKTsKLSsJICBGSUVMRF9OQU1FICgqZmllbGQpID0g U1lNQk9MX05BVFVSQUxfTkFNRSAoc3ltKTsKLSsJICBmaWVsZCsrOwotIAkgIGNoaWxkX2RpZSA9 IHNpYmxpbmdfZGllIChjaGlsZF9kaWUpOwotIAl9Ci0rCi0rICAgICAgLyogVFlQRV9MRU5HVEgg KHR5cGUpIGlzIGxlZnQgMCAtIGl0IGlzIG9ubHkgYSB2aXJ0dWFsIHN0cnVjdHVyZSBldmVuCi0r CSB3aXRoIG5vIGNvbnNlY3V0aXZlIGFkZHJlc3Mgc3BhY2UuICAqLwotKwotKyAgICAgIHN5bSA9 IG5ld19zeW1ib2wgKGRpZSwgdHlwZSwgY3UpOwotKyAgICAgIC8qIFNZTUJPTF9WQUxVRV9BRERS RVNTIG5ldmVyIGdldHMgdXNlZCBhcyBhbGwgaXRzIGZpZWxkcyBhcmUgc3RhdGljLiAgKi8KLSsg ICAgICBTWU1CT0xfVkFMVUVfQUREUkVTUyAoc3ltKSA9IGJhc2U7Ci0rCi0rICAgICAgc2V0X2Rp ZV90eXBlIChkaWUsIHR5cGUsIGN1KTsKLSAgICAgfQotIH0KLSAKLUBAIC0xNTE1NSw2ICsxNTIw NCwxMyBAQCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzCi0gCSAgICB7 Ci0gCSAgICAgIHZhcl9kZWNvZGVfbG9jYXRpb24gKGF0dHIsIHN5bSwgY3UpOwotIAkgICAgICBh dHRyMiA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2V4dGVybmFsLCBjdSk7Ci0rCi0rCSAgICAg IC8qIEZvcnRyYW4gZXhwbGljaXRseSBpbXBvcnRzIGFueSBnbG9iYWwgc3ltYm9scyB0byB0aGUg bG9jYWwKLSsJCSBzY29wZSBieSBEV19UQUdfY29tbW9uX2Jsb2NrLiAgKi8KLSsJICAgICAgaWYg KGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9mb3J0cmFuICYmIGRpZS0+cGFyZW50Ci0rCQkgICYm IGRpZS0+cGFyZW50LT50YWcgPT0gRFdfVEFHX2NvbW1vbl9ibG9jaykKLSsJCWF0dHIyID0gTlVM TDsKLSsKLSAJICAgICAgaWYgKFNZTUJPTF9DTEFTUyAoc3ltKSA9PSBMT0NfU1RBVElDCi0gCQkg ICYmIFNZTUJPTF9WQUxVRV9BRERSRVNTIChzeW0pID09IDAKLSAJCSAgJiYgIWR3YXJmMl9wZXJf b2JqZmlsZS0+aGFzX3NlY3Rpb25fYXRfemVybykKLUBAIC0xNTMxOSw2ICsxNTM3NSwxMSBAQCBu ZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzCi0gCSAgU1lNQk9MX0NMQVNT IChzeW0pID0gTE9DX1RZUEVERUY7Ci0gCSAgbGlzdF90b19hZGQgPSAmZ2xvYmFsX3N5bWJvbHM7 Ci0gCSAgYnJlYWs7Ci0rCWNhc2UgRFdfVEFHX2NvbW1vbl9ibG9jazoKLSsJICBTWU1CT0xfQ0xB U1MgKHN5bSkgPSBMT0NfU1RBVElDOwotKwkgIFNZTUJPTF9ET01BSU4gKHN5bSkgPSBDT01NT05f QkxPQ0tfRE9NQUlOOwotKwkgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCBjdS0+bGlzdF9pbl9z Y29wZSk7Ci0rCSAgYnJlYWs7Ci0gCWRlZmF1bHQ6Ci0gCSAgLyogTm90IGEgdGFnIHdlIHJlY29n bml6ZS4gIEhvcGVmdWxseSB3ZSBhcmVuJ3QgcHJvY2Vzc2luZwotIAkgICAgIHRyYXNoIGRhdGEs IGJ1dCBzaW5jZSB3ZSBtdXN0IHNwZWNpZmljYWxseSBpZ25vcmUgdGhpbmdzCi1JbmRleDogZ2Ri LTcuNC45MS4yMDEyMDgwMS9nZGIvZi1sYW5nLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40Ljkx LjIwMTIwODAxLm9yaWcvZ2RiL2YtbGFuZy5jCTIwMTItMDgtMDEgMTg6Mzg6MjQuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvZi1sYW5nLmMJMjAxMi0wOC0wMSAx ODozODo1NC4yMDI1NDA0OTUgKzAyMDAKLUBAIC0zNzAsMjcgKzM3MCwzIEBAIF9pbml0aWFsaXpl X2ZfbGFuZ3VhZ2UgKHZvaWQpCi0gCi0gICBhZGRfbGFuZ3VhZ2UgKCZmX2xhbmd1YWdlX2RlZm4p OwotIH0KLS0KLS1TQVZFRF9GNzdfQ09NTU9OX1BUUiBoZWFkX2NvbW1vbl9saXN0ID0gTlVMTDsJ LyogUHRyIHRvIDFzdCBzYXZlZCBDT01NT04gICovCi0tCi0tLyogVGhpcyByb3V0aW5lIGZpbmRz IHRoZSBmaXJzdCBlbmNvdW50cmVkIENPTU1PTiBibG9jayBuYW1lZCAibmFtZSIgCi0tICAgdGhh dCBiZWxvbmdzIHRvIGZ1bmN0aW9uIGZ1bmNuYW1lLiAgKi8KLS0KLS1TQVZFRF9GNzdfQ09NTU9O X1BUUgotLWZpbmRfY29tbW9uX2Zvcl9mdW5jdGlvbiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qg Y2hhciAqZnVuY25hbWUpCi0tewotLQotLSAgU0FWRURfRjc3X0NPTU1PTl9QVFIgdG1wOwotLQot LSAgdG1wID0gaGVhZF9jb21tb25fbGlzdDsKLS0KLS0gIHdoaWxlICh0bXAgIT0gTlVMTCkKLS0g ICAgewotLSAgICAgIGlmIChzdHJjbXAgKHRtcC0+bmFtZSwgbmFtZSkgPT0gMAotLQkgICYmIHN0 cmNtcCAodG1wLT5vd25pbmdfZnVuY3Rpb24sIGZ1bmNuYW1lKSA9PSAwKQotLQlyZXR1cm4gKHRt cCk7Ci0tICAgICAgZWxzZQotLQl0bXAgPSB0bXAtPm5leHQ7Ci0tICAgIH0KLS0gIHJldHVybiAo TlVMTCk7Ci0tfQotSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MDEvZ2RiL2YtbGFuZy5oCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC45MS4yMDEyMDgwMS5vcmlnL2dkYi9mLWxhbmcuaAkyMDEyLTA4 LTAxIDE4OjM4OjI0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuOTEuMjAxMjA4MDEvZ2Ri L2YtbGFuZy5oCTIwMTItMDgtMDEgMTg6Mzg6NTQuMjAzNTQwNDg5ICswMjAwCi1AQCAtNTIsMzcg KzUyLDggQEAgZW51bSBmOTBfcmFuZ2VfdHlwZQotICAgICBOT05FX0JPVU5EX0RFRkFVTFQJCS8q ICIobG93OmhpZ2gpIiAgKi8KLSAgIH07Ci0gCi0tc3RydWN0IGNvbW1vbl9lbnRyeQotLSAgewot LSAgICBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2w7CS8qIFRoZSBzeW1ib2wgbm9kZSBjb3JyZXNwb25k aW5nCi0tCQkJCSAgIHRvIHRoaXMgY29tcG9uZW50ICovCi0tICAgIHN0cnVjdCBjb21tb25fZW50 cnkgKm5leHQ7CS8qIFRoZSBuZXh0IGNvbXBvbmVudCAqLwotLSAgfTsKLS0KLS1zdHJ1Y3Qgc2F2 ZWRfZjc3X2NvbW1vbgotLSAgewotLSAgICBjaGFyICpuYW1lOwkJCS8qIE5hbWUgb2YgQ09NTU9O ICovCi0tICAgIGNoYXIgKm93bmluZ19mdW5jdGlvbjsJLyogTmFtZSBvZiBwYXJlbnQgZnVuY3Rp b24gKi8KLS0gICAgaW50IHNlY251bTsJCQkvKiBTZWN0aW9uICMgb2YgLmJzcyAqLwotLSAgICBD T1JFX0FERFIgb2Zmc2V0OwkJLyogT2Zmc2V0IGZyb20gLmJzcyBmb3IgCi0tCQkJCSAgIHRoaXMg YmxvY2sgKi8KLS0gICAgc3RydWN0IGNvbW1vbl9lbnRyeSAqZW50cmllczsJLyogTGlzdCBvZiBi bG9jaydzIGNvbXBvbmVudHMgKi8KLS0gICAgc3RydWN0IGNvbW1vbl9lbnRyeSAqZW5kX29mX2Vu dHJpZXM7CS8qIHB0ci4gdG8gZW5kIG9mIGNvbXBvbmVudHMgKi8KLS0gICAgc3RydWN0IHNhdmVk X2Y3N19jb21tb24gKm5leHQ7CS8qIE5leHQgc2F2ZWQgQ09NTU9OIGJsb2NrICovCi0tICB9Owot LQotLXR5cGVkZWYgc3RydWN0IHNhdmVkX2Y3N19jb21tb24gU0FWRURfRjc3X0NPTU1PTiwgKlNB VkVEX0Y3N19DT01NT05fUFRSOwotLQotLXR5cGVkZWYgc3RydWN0IGNvbW1vbl9lbnRyeSBDT01N T05fRU5UUlksICpDT01NT05fRU5UUllfUFRSOwotLQotLWV4dGVybiBTQVZFRF9GNzdfQ09NTU9O X1BUUiBoZWFkX2NvbW1vbl9saXN0OwkvKiBQdHIgdG8gMXN0IHNhdmVkIENPTU1PTiAgKi8KLS0K LS1leHRlcm4gU0FWRURfRjc3X0NPTU1PTl9QVFIgZmluZF9jb21tb25fZm9yX2Z1bmN0aW9uIChj b25zdCBjaGFyICosCi0tCQkJCQkJICAgICAgY29uc3QgY2hhciAqKTsKLS0KLSAjZGVmaW5lIEJM QU5LX0NPTU1PTl9OQU1FX09SSUdJTkFMICIjQkxOS19DT00iCS8qIFhMRiBhc3NpZ25lZCAgKi8K LSAjZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX01GNzcgICAgICJfX0JMTktfXyIJLyogTUY3NyBh c3NpZ25lZCAgKi8KLS0jZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX0xPQ0FMICAgICJfX0JMQU5L IgkvKiBMb2NhbCBHREIgKi8KLSAKLSAvKiBXaGVuIHJlYXNvbmFibGUgYXJyYXkgYm91bmRzIGNh bm5vdCBiZSBmZXRjaGVkLCBzdWNoIGFzIHdoZW4gCi0gICAgeW91IGFzayB0byAnbXQgcHJpbnQg c3ltYm9scycgYW5kIHRoZXJlIGlzIG5vIHN0YWNrIGZyYW1lIGFuZCAKLUluZGV4OiBnZGItNy40 LjkxLjIwMTIwODAxL2dkYi9mLXZhbHByaW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40Ljkx LjIwMTIwODAxLm9yaWcvZ2RiL2YtdmFscHJpbnQuYwkyMDEyLTA4LTAxIDE4OjM4OjI0LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjQuOTEuMjAxMjA4MDEvZ2RiL2YtdmFscHJpbnQuYwkyMDEy LTA4LTAxIDE4OjQxOjI2LjQxMTY5ODE4NiArMDIwMAotQEAgLTM0LDEwICszNCwxMSBAQAotICNp bmNsdWRlICJnZGJjb3JlLmgiCi0gI2luY2x1ZGUgImNvbW1hbmQuaCIKLSAjaW5jbHVkZSAiYmxv Y2suaCIKLSsjaW5jbHVkZSAiZGljdGlvbmFyeS5oIgotKyNpbmNsdWRlICJnZGJfYXNzZXJ0Lmgi Ci0gCi0gZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZl92YWxwcmludCAodm9pZCk7Ci0gc3RhdGlj IHZvaWQgaW5mb19jb21tb25fY29tbWFuZCAoY2hhciAqLCBpbnQpOwotLXN0YXRpYyB2b2lkIGxp c3RfYWxsX3Zpc2libGVfY29tbW9ucyAoY29uc3QgY2hhciAqKTsKLSBzdGF0aWMgdm9pZCBmNzdf Y3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0X3RibCAoc3RydWN0IHR5cGUgKiwKLSAJCQkJCSAgICAg IHN0cnVjdCB1aV9maWxlICopOwotIHN0YXRpYyB2b2lkIGY3N19nZXRfZHluYW1pY19sZW5ndGhf b2ZfYWdncmVnYXRlIChzdHJ1Y3QgdHlwZSAqKTsKLUBAIC00MjAsMjIgKzQyMSw1MyBAQCBmX3Zh bF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkCi0gICBnZGJfZmx1c2ggKHN0cmVh bSk7Ci0gfQotIAotLXN0YXRpYyB2b2lkCi0tbGlzdF9hbGxfdmlzaWJsZV9jb21tb25zIChjb25z dCBjaGFyICpmdW5uYW1lKQotK3N0YXRpYyBpbnQKLStpbmZvX2NvbW1vbl9jb21tYW5kX2Zvcl9i bG9jayAoc3RydWN0IGJsb2NrICpibG9jaywgY29uc3QgY2hhciAqY29tbmFtZSkKLSB7Ci0tICBT QVZFRF9GNzdfQ09NTU9OX1BUUiB0bXA7Ci0tCi0tICB0bXAgPSBoZWFkX2NvbW1vbl9saXN0Owot KyAgc3RydWN0IGJsb2NrX2l0ZXJhdG9yIGl0ZXI7Ci0rICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0r ICBpbnQgdmFsdWVzX3ByaW50ZWQgPSAwOwotKyAgY29uc3QgY2hhciAqbmFtZTsKLSsgIHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7Ci0rCi0rICBnZXRfdXNlcl9wcmludF9vcHRpb25z ICgmb3B0cyk7Ci0rCi0rICBBTExfQkxPQ0tfU1lNQk9MUyAoYmxvY2ssIGl0ZXIsIHN5bSkKLSsg ICAgaWYgKFNZTUJPTF9ET01BSU4gKHN5bSkgPT0gQ09NTU9OX0JMT0NLX0RPTUFJTikKLSsgICAg ICB7Ci0rICAgICAgCXN0cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHN5bSk7Ci0rCWlu dCBpbmRleDsKLSsKLSsJZ2RiX2Fzc2VydCAoU1lNQk9MX0NMQVNTIChzeW0pID09IExPQ19TVEFU SUMpOwotKwlnZGJfYXNzZXJ0IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9TVFJVQ1Qp OwotKwotKwlpZiAoY29tbmFtZSAmJiAoIVNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSkKLSsJICAg ICAgICAgICAgICAgIHx8IHN0cmNtcCAoY29tbmFtZSwgU1lNQk9MX0xJTktBR0VfTkFNRSAoc3lt KSkgIT0gMCkpCi0rCSAgY29udGludWU7Ci0rCi0rCXZhbHVlc19wcmludGVkID0gMTsKLSsJaWYg KFNZTUJPTF9QUklOVF9OQU1FIChzeW0pKQotKwkgIHByaW50Zl9maWx0ZXJlZCAoXygiQ29udGVu dHMgb2YgRjc3IENPTU1PTiBibG9jayAnJXMnOlxuIiksCi0rCQkJICAgU1lNQk9MX1BSSU5UX05B TUUgKHN5bSkpOwotKwllbHNlCi0rCSAgcHJpbnRmX2ZpbHRlcmVkIChfKCJDb250ZW50cyBvZiBi bGFuayBDT01NT04gYmxvY2s6XG4iKSk7Ci0rCQotKwlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBU WVBFX05GSUVMRFMgKHR5cGUpOyBpbmRleCsrKQotKwkgIHsKLSsJICAgIHN0cnVjdCB2YWx1ZSAq dmFsOwotKwotKwkgICAgZ2RiX2Fzc2VydCAoZmllbGRfaXNfc3RhdGljICgmVFlQRV9GSUVMRCAo dHlwZSwgaW5kZXgpKSk7Ci0rCSAgICB2YWwgPSB2YWx1ZV9zdGF0aWNfZmllbGQgKHR5cGUsIGlu ZGV4KTsKLSsKLSsJICAgIHByaW50Zl9maWx0ZXJlZCAoIiVzID0gIiwgVFlQRV9GSUVMRF9OQU1F ICh0eXBlLCBpbmRleCkpOwotKwkgICAgdmFsdWVfcHJpbnQgKHZhbCwgZ2RiX3N0ZG91dCwgJm9w dHMpOwotKwkgICAgcHV0Y2hhcl9maWx0ZXJlZCAoJ1xuJyk7Ci0rCSAgfQotIAotLSAgcHJpbnRm X2ZpbHRlcmVkIChfKCJBbGwgQ09NTU9OIGJsb2NrcyB2aXNpYmxlIGF0IHRoaXMgbGV2ZWw6XG5c biIpKTsKLS0KLS0gIHdoaWxlICh0bXAgIT0gTlVMTCkKLS0gICAgewotLSAgICAgIGlmIChzdHJj bXAgKHRtcC0+b3duaW5nX2Z1bmN0aW9uLCBmdW5uYW1lKSA9PSAwKQotLQlwcmludGZfZmlsdGVy ZWQgKCIlc1xuIiwgdG1wLT5uYW1lKTsKLSsJcHV0Y2hhcl9maWx0ZXJlZCAoJ1xuJyk7Ci0rICAg ICAgfQotIAotLSAgICAgIHRtcCA9IHRtcC0+bmV4dDsKLS0gICAgfQotKyAgcmV0dXJuIHZhbHVl c19wcmludGVkOwotIH0KLSAKLSAvKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcHJpbnQgb3V0 IHRoZSB2YWx1ZXMgaW4gYSBnaXZlbiBDT01NT04gCi1AQCAtNDQ1LDExICs0NzcsOSBAQCBsaXN0 X2FsbF92aXNpYmxlX2NvbW1vbnMgKGNvbnN0IGNoYXIgKmZ1Ci0gc3RhdGljIHZvaWQKLSBpbmZv X2NvbW1vbl9jb21tYW5kIChjaGFyICpjb21uYW1lLCBpbnQgZnJvbV90dHkpCi0gewotLSAgU0FW RURfRjc3X0NPTU1PTl9QVFIgdGhlX2NvbW1vbjsKLS0gIENPTU1PTl9FTlRSWV9QVFIgZW50cnk7 Ci0gICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZmk7Ci0tICBjb25zdCBjaGFyICpmdW5uYW1lID0gMDsK LS0gIHN0cnVjdCBzeW1ib2wgKmZ1bmM7Ci0rICBzdHJ1Y3QgYmxvY2sgKmJsb2NrOwotKyAgaW50 IHZhbHVlc19wcmludGVkID0gMDsKLSAKLSAgIC8qIFdlIGhhdmUgYmVlbiB0b2xkIHRvIGRpc3Bs YXkgdGhlIGNvbnRlbnRzIG9mIEY3NyBDT01NT04gCi0gICAgICBibG9jayBzdXBwb3NlZGx5IHZp c2libGUgaW4gdGhpcyBmdW5jdGlvbi4gIExldCB1cyAKLUBAIC00NjEsODcgKzQ5MSwzMSBAQCBp bmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICpjb21uYW1lLCBpbnQKLSAgIC8qIFRoZSBmb2xsb3dp bmcgaXMgZ2VuZXJhbGx5IHJpcHBlZCBvZmYgZnJvbSBzdGFjay5jJ3Mgcm91dGluZSAKLSAgICAg IHByaW50X2ZyYW1lX2luZm8oKS4gICovCi0gCi0tICBmdW5jID0gZmluZF9wY19mdW5jdGlvbiAo Z2V0X2ZyYW1lX3BjIChmaSkpOwotLSAgaWYgKGZ1bmMpCi0rICBibG9jayA9IGdldF9mcmFtZV9i bG9jayAoZmksIDApOwotKyAgaWYgKGJsb2NrID09IE5VTEwpCi0gICAgIHsKLS0gICAgICAvKiBJ biBjZXJ0YWluIHBhdGhvbG9naWNhbCBjYXNlcywgdGhlIHN5bXRhYnMgZ2l2ZSB0aGUgd3JvbmcK LS0gICAgICAgICBmdW5jdGlvbiAod2hlbiB3ZSBhcmUgaW4gdGhlIGZpcnN0IGZ1bmN0aW9uIGlu IGEgZmlsZSB3aGljaAotLSAgICAgICAgIGlzIGNvbXBpbGVkIHdpdGhvdXQgZGVidWdnaW5nIHN5 bWJvbHMsIHRoZSBwcmV2aW91cyBmdW5jdGlvbgotLSAgICAgICAgIGlzIGNvbXBpbGVkIHdpdGgg ZGVidWdnaW5nIHN5bWJvbHMsIGFuZCB0aGUgImZvby5vIiBzeW1ib2wKLS0gICAgICAgICB0aGF0 IGlzIHN1cHBvc2VkIHRvIHRlbGwgdXMgd2hlcmUgdGhlIGZpbGUgd2l0aCBkZWJ1Z2dpbmcgc3lt Ym9scwotLSAgICAgICAgIGVuZHMgaGFzIGJlZW4gdHJ1bmNhdGVkIGJ5IGFyIGJlY2F1c2UgaXQg aXMgbG9uZ2VyIHRoYW4gMTUKLS0gICAgICAgICBjaGFyYWN0ZXJzKS4KLS0KLS0gICAgICAgICBT byBsb29rIGluIHRoZSBtaW5pbWFsIHN5bWJvbCB0YWJsZXMgYXMgd2VsbCwgYW5kIGlmIGl0IGNv bWVzCi0tICAgICAgICAgdXAgd2l0aCBhIGxhcmdlciBhZGRyZXNzIGZvciB0aGUgZnVuY3Rpb24g dXNlIHRoYXQgaW5zdGVhZC4KLS0gICAgICAgICBJIGRvbid0IHRoaW5rIHRoaXMgY2FuIGV2ZXIg Y2F1c2UgYW55IHByb2JsZW1zOyB0aGVyZSBzaG91bGRuJ3QKLS0gICAgICAgICBiZSBhbnkgbWlu aW1hbCBzeW1ib2xzIGluIHRoZSBtaWRkbGUgb2YgYSBmdW5jdGlvbi4KLS0gICAgICAgICBGSVhN RTogIChOb3QgbmVjZXNzYXJpbHkgdHJ1ZS4gIFdoYXQgYWJvdXQgdGV4dCBsYWJlbHM/KSAgKi8K LS0KLS0gICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wgPSAKLS0JbG9va3VwX21p bmltYWxfc3ltYm9sX2J5X3BjIChnZXRfZnJhbWVfcGMgKGZpKSk7Ci0tCi0tICAgICAgaWYgKG1z eW1ib2wgIT0gTlVMTAotLQkgICYmIChTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCkKLS0J ICAgICAgPiBCTE9DS19TVEFSVCAoU1lNQk9MX0JMT0NLX1ZBTFVFIChmdW5jKSkpKQotLQlmdW5u YW1lID0gU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbCk7Ci0tICAgICAgZWxzZQotLQlmdW5u YW1lID0gU1lNQk9MX0xJTktBR0VfTkFNRSAoZnVuYyk7Ci0tICAgIH0KLS0gIGVsc2UKLS0gICAg ewotLSAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCA9Ci0tCWxvb2t1cF9taW5p bWFsX3N5bWJvbF9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmaSkpOwotLQotLSAgICAgIGlmIChtc3lt Ym9sICE9IE5VTEwpCi0tCWZ1bm5hbWUgPSBTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKTsK LS0gICAgICBlbHNlIC8qIEdvdCBubyAnZnVubmFtZScsIGNvZGUgYmVsb3cgd2lsbCBmYWlsLiAg Ki8KLS0JZXJyb3IgKF8oIk5vIGZ1bmN0aW9uIGZvdW5kIGZvciBmcmFtZS4iKSk7Ci0rICAgICAg cHJpbnRmX2ZpbHRlcmVkIChfKCJObyBzeW1ib2wgdGFibGUgaW5mbyBhdmFpbGFibGUuXG4iKSk7 Ci0rICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0tICAvKiBJZiBjb21uYW1lIGlzIE5VTEwsIHdl IGFzc3VtZSB0aGUgdXNlciB3aXNoZXMgdG8gc2VlIHRoZSAKLS0gICAgIHdoaWNoIENPTU1PTiBi bG9ja3MgYXJlIHZpc2libGUgaGVyZSBhbmQgdGhlbiByZXR1cm4uICAqLwotLQotLSAgaWYgKGNv bW5hbWUgPT0gMCkKLSsgIHdoaWxlIChibG9jaykKLSAgICAgewotLSAgICAgIGxpc3RfYWxsX3Zp c2libGVfY29tbW9ucyAoZnVubmFtZSk7Ci0tICAgICAgcmV0dXJuOwotKyAgICAgIGlmIChpbmZv X2NvbW1vbl9jb21tYW5kX2Zvcl9ibG9jayAoYmxvY2ssIGNvbW5hbWUpKQotKwl2YWx1ZXNfcHJp bnRlZCA9IDE7Ci0rICAgICAgLyogQWZ0ZXIgaGFuZGxpbmcgdGhlIGZ1bmN0aW9uJ3MgdG9wLWxl dmVsIGJsb2NrLCBzdG9wLiAgRG9uJ3QKLSsgICAgICAgICBjb250aW51ZSB0byBpdHMgc3VwZXJi bG9jaywgdGhlIGJsb2NrIG9mIHBlci1maWxlIHN5bWJvbHMuICAqLwotKyAgICAgIGlmIChCTE9D S19GVU5DVElPTiAoYmxvY2spKQotKwlicmVhazsKLSsgICAgICBibG9jayA9IEJMT0NLX1NVUEVS QkxPQ0sgKGJsb2NrKTsKLSAgICAgfQotIAotLSAgdGhlX2NvbW1vbiA9IGZpbmRfY29tbW9uX2Zv cl9mdW5jdGlvbiAoY29tbmFtZSwgZnVubmFtZSk7Ci0tCi0tICBpZiAodGhlX2NvbW1vbikKLSsg IGlmICghdmFsdWVzX3ByaW50ZWQpCi0gICAgIHsKLS0gICAgICBzdHJ1Y3QgZnJhbWVfaWQgZnJh bWVfaWQgPSBnZXRfZnJhbWVfaWQgKGZpKTsKLS0KLS0gICAgICBpZiAoc3RyY21wIChjb21uYW1l LCBCTEFOS19DT01NT05fTkFNRV9MT0NBTCkgPT0gMCkKLS0JcHJpbnRmX2ZpbHRlcmVkIChfKCJD b250ZW50cyBvZiBibGFuayBDT01NT04gYmxvY2s6XG4iKSk7Ci0rICAgICAgaWYgKGNvbW5hbWUp Ci0rCXByaW50Zl9maWx0ZXJlZCAoXygiTm8gY29tbW9uIGJsb2NrICclcycuXG4iKSwgY29tbmFt ZSk7Ci0gICAgICAgZWxzZQotLQlwcmludGZfZmlsdGVyZWQgKF8oIkNvbnRlbnRzIG9mIEY3NyBD T01NT04gYmxvY2sgJyVzJzpcbiIpLCBjb21uYW1lKTsKLS0KLS0gICAgICBwcmludGZfZmlsdGVy ZWQgKCJcbiIpOwotLSAgICAgIGVudHJ5ID0gdGhlX2NvbW1vbi0+ZW50cmllczsKLS0KLS0gICAg ICB3aGlsZSAoZW50cnkgIT0gTlVMTCkKLS0JewotLQkgIGZpID0gZnJhbWVfZmluZF9ieV9pZCAo ZnJhbWVfaWQpOwotLQkgIGlmIChmaSA9PSBOVUxMKQotLQkgICAgewotLQkgICAgICB3YXJuaW5n IChfKCJVbmFibGUgdG8gcmVzdG9yZSBwcmV2aW91c2x5IHNlbGVjdGVkIGZyYW1lLiIpKTsKLS0J ICAgICAgYnJlYWs7Ci0tCSAgICB9Ci0tCi0tCSAgcHJpbnRfdmFyaWFibGVfYW5kX3ZhbHVlIChO VUxMLCBlbnRyeS0+c3ltYm9sLCBmaSwgZ2RiX3N0ZG91dCwgMCk7Ci0tCi0tCSAgLyogcHJpbnRf dmFyaWFibGVfYW5kX3ZhbHVlIGludmFsaWRhdGVzIEZJLiAgKi8KLS0JICBmaSA9IE5VTEw7Ci0t Ci0tCSAgZW50cnkgPSBlbnRyeS0+bmV4dDsKLS0JfQotKwlwcmludGZfZmlsdGVyZWQgKF8oIk5v IGNvbW1vbiBibG9ja3MuXG4iKSk7Ci0gICAgIH0KLS0gIGVsc2UKLS0gICAgcHJpbnRmX2ZpbHRl cmVkIChfKCJDYW5ub3QgbG9jYXRlIHRoZSBjb21tb24gYmxvY2sgJXMgaW4gZnVuY3Rpb24gJyVz J1xuIiksCi0tCQkgICAgIGNvbW5hbWUsIGZ1bm5hbWUpOwotIH0KLSAKLSB2b2lkCi1JbmRleDog Z2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvc3RhY2suYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu OTEuMjAxMjA4MDEub3JpZy9nZGIvc3RhY2suYwkyMDEyLTA4LTAxIDE4OjM2OjUxLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjQuOTEuMjAxMjA4MDEvZ2RiL3N0YWNrLmMJMjAxMi0wOC0wMSAx ODozODo1NC4yMDY1NDA0NzEgKzAyMDAKLUBAIC0xODUxLDYgKzE4NTEsOCBAQCBpdGVyYXRlX292 ZXJfYmxvY2tfbG9jYWxzIChzdHJ1Y3QgYmxvY2sKLSAJY2FzZSBMT0NfQ09NUFVURUQ6Ci0gCSAg aWYgKFNZTUJPTF9JU19BUkdVTUVOVCAoc3ltKSkKLSAJICAgIGJyZWFrOwotKwkgIGlmIChTWU1C T0xfRE9NQUlOIChzeW0pID09IENPTU1PTl9CTE9DS19ET01BSU4pCi0rCSAgICBicmVhazsKLSAJ ICAoKmNiKSAoU1lNQk9MX1BSSU5UX05BTUUgKHN5bSksIHN5bSwgY2JfZGF0YSk7Ci0gCSAgYnJl YWs7Ci0gCi1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvc3ltdGFiLmgKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjkxLjIwMTIwODAxLm9yaWcvZ2RiL3N5bXRhYi5oCTIwMTItMDYtMzAg MDA6NDY6NDYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvc3lt dGFiLmgJMjAxMi0wOC0wMSAxODozODo1NC4yMDY1NDA0NzEgKzAyMDAKLUBAIC0zOTQsNyArMzk0 LDEwIEBAIHR5cGVkZWYgZW51bSBkb21haW5fZW51bV90YWcKLSAKLSAgIC8qIExBQkVMX0RPTUFJ TiBtYXkgYmUgdXNlZCBmb3IgbmFtZXMgb2YgbGFiZWxzIChmb3IgZ290b3MpLiAgKi8KLSAKLS0g IExBQkVMX0RPTUFJTgotKyAgTEFCRUxfRE9NQUlOLAotKwotKyAgLyogRm9ydHJhbiBjb21tb24g YmxvY2tzLiAgVGhlaXIgbmFtaW5nIG11c3QgYmUgc2VwYXJhdGUgZnJvbSBWQVJfRE9NQUlOLiAg Ki8KLSsgIENPTU1PTl9CTE9DS19ET01BSU4KLSB9IGRvbWFpbl9lbnVtOwotIAotIC8qIFNlYXJj aGluZyBkb21haW5zLCB1c2VkIGZvciBgc2VhcmNoX3N5bWJvbHMnLiAgRWxlbWVudCBudW1iZXJz IGFyZQotSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MDEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9jb21tb24tYmxvY2suZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEg MDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAJMjAxMi0wOC0wMSAxODozODo1NC4y MDc1NDA0NjUgKzAyMDAKLUBAIC0wLDAgKzEsMTAxIEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIyAKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIyAKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1B IDAyMTExLTEzMDcsIFVTQS4gIAotKwotKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEphbiBL cmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KLSsKLStzZXQgdGVzdGZpbGUg ImNvbW1vbi1ibG9jayIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLStzZXQgYmluZmls ZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0raWYgIHsgW2dkYl9jb21waWxl ICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxl IHtkZWJ1ZyBmOTAgcXVpZXR9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNv bXBpbGUgJHtzcmNmaWxlfSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9leGl0Ci0rZ2Ri X3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQg JHtiaW5maWxlfQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9yICJj b3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQotKwot K2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzdG9wLWhlcmUtb3V0Il0KLStn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAic3RvcC1oZXJlLW91dCIKLSsKLSsjIENvbW1vbiBi bG9jayBuYW1pbmcgd2l0aCBzb3VyY2UgbmFtZSAvZm9vLzoKLSsjICAgICAgICAgICAgICAgIC5z eW10YWIgIERXX1RBR19jb21tb25fYmxvY2sncyBEV19BVF9uYW1lCi0rIyBJbnRlbCBGb3J0cmFu ICBmb29fICAgICBmb29fCi0rIyBHTlUgRm9ydHJhbiAgICBmb29fICAgICBmb28KLSsjc2V0IHN1 ZmZpeCAiXyIKLStzZXQgc3VmZml4ICIiCi0rCi0rc2V0IGludDQgeyhpbnRlZ2VyXChraW5kPTRc KXxJTlRFR0VSXCg0XCkpfQotK3NldCByZWFsNCB7KHJlYWxcKGtpbmQ9NFwpfFJFQUxcKDRcKSl9 Ci0rc2V0IHJlYWw4IHsocmVhbFwoa2luZD04XCl8UkVBTFwoOFwpKX0KLSsKLStnZGJfdGVzdCAi d2hhdGlzIGZvbyRzdWZmaXgiICJObyBzeW1ib2wgXCJmb28kc3VmZml4XCIgaW4gY3VycmVudCBj b250ZXh0LiIKLStnZGJfdGVzdCAicHR5cGUgZm9vJHN1ZmZpeCIgIk5vIHN5bWJvbCBcImZvbyRz dWZmaXhcIiBpbiBjdXJyZW50IGNvbnRleHQuIgotK2dkYl90ZXN0ICJwIGZvbyRzdWZmaXgiICJO byBzeW1ib2wgXCJmb28kc3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIKLStnZGJfdGVzdCAi d2hhdGlzIGZvX28kc3VmZml4IiAiTm8gc3ltYm9sIFwiZm9fbyRzdWZmaXhcIiBpbiBjdXJyZW50 IGNvbnRleHQuIgotK2dkYl90ZXN0ICJwdHlwZSBmb19vJHN1ZmZpeCIgIk5vIHN5bWJvbCBcImZv X28kc3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIKLStnZGJfdGVzdCAicCBmb19vJHN1ZmZp eCIgIk5vIHN5bWJvbCBcImZvX28kc3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIKLSsKLStn ZGJfdGVzdCAiaW5mbyBsb2NhbHMiICJpeF94ID0gMTFcclxuaXlfeSA9IDIyXHJcbml6X3ogPSAz M1xyXG5peCA9IDFcclxuaXkgPSAyXHJcbml6ID0gMyIgImluZm8gbG9jYWxzIG91dCIKLStnZGJf dGVzdCAiaW5mbyBjb21tb24iICJDb250ZW50cyBvZiBGNzcgQ09NTU9OIGJsb2NrICdmb19vJzpc clxuaXhfeCA9IDExXHJcbml5X3kgPSAyMlxyXG5pel96ID0gMzNcclxuXHJcbkNvbnRlbnRzIG9m IEY3NyBDT01NT04gYmxvY2sgJ2Zvbyc6XHJcbml4ID0gMVxyXG5peSA9IDJcclxuaXogPSAzIiAi aW5mbyBjb21tb24gb3V0IgotKwotK2dkYl90ZXN0ICJwdHlwZSBpeCIgInR5cGUgPSAkaW50NCIg InB0eXBlIGl4IG91dCIKLStnZGJfdGVzdCAicHR5cGUgaXkiICJ0eXBlID0gJHJlYWw0IiAicHR5 cGUgaXkgb3V0IgotK2dkYl90ZXN0ICJwdHlwZSBpeiIgInR5cGUgPSAkcmVhbDgiICJwdHlwZSBp eiBvdXQiCi0rZ2RiX3Rlc3QgInB0eXBlIGl4X3giICJ0eXBlID0gJGludDQiICJwdHlwZSBpeF94 IG91dCIKLStnZGJfdGVzdCAicHR5cGUgaXlfeSIgInR5cGUgPSAkcmVhbDQiICJwdHlwZSBpeV95 IG91dCIKLStnZGJfdGVzdCAicHR5cGUgaXpfeiIgInR5cGUgPSAkcmVhbDgiICJwdHlwZSBpel96 IG91dCIKLSsKLStnZGJfdGVzdCAicCBpeCIgIiA9IDEgKiIgInAgaXggb3V0IgotK2dkYl90ZXN0 ICJwIGl5IiAiID0gMiAqIiAicCBpeSBvdXQiCi0rZ2RiX3Rlc3QgInAgaXoiICIgPSAzICoiICJw IGl6IG91dCIKLStnZGJfdGVzdCAicCBpeF94IiAiID0gMTEgKiIgInAgaXhfeCBvdXQiCi0rZ2Ri X3Rlc3QgInAgaXlfeSIgIiA9IDIyICoiICJwIGl5X3kgb3V0IgotK2dkYl90ZXN0ICJwIGl6X3oi ICIgPSAzMyAqIiAicCBpel96IG91dCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAic3RvcC1oZXJlLWluIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAic3Rv cC1oZXJlLWluIgotKwotK2dkYl90ZXN0ICJ3aGF0aXMgZm9vJHN1ZmZpeCIgIk5vIHN5bWJvbCBc ImZvbyRzdWZmaXhcIiBpbiBjdXJyZW50IGNvbnRleHQuIiAid2hhdGlzIGZvbyRzdWZmaXggaW4i Ci0rZ2RiX3Rlc3QgInB0eXBlIGZvbyRzdWZmaXgiICJObyBzeW1ib2wgXCJmb28kc3VmZml4XCIg aW4gY3VycmVudCBjb250ZXh0LiIgInB0eXBlIGZvbyRzdWZmaXggaW4iCi0rZ2RiX3Rlc3QgInAg Zm9vJHN1ZmZpeCIgIk5vIHN5bWJvbCBcImZvbyRzdWZmaXhcIiBpbiBjdXJyZW50IGNvbnRleHQu IiAicCBmb28kc3VmZml4IGluIgotK2dkYl90ZXN0ICJ3aGF0aXMgZm9fbyRzdWZmaXgiICJObyBz eW1ib2wgXCJmb19vJHN1ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4dC4iICJ3aGF0aXMgZm9fbyRz dWZmaXggaW4iCi0rZ2RiX3Rlc3QgInB0eXBlIGZvX28kc3VmZml4IiAiTm8gc3ltYm9sIFwiZm9f byRzdWZmaXhcIiBpbiBjdXJyZW50IGNvbnRleHQuIiAicHR5cGUgZm9fbyRzdWZmaXggaW4iCi0r Z2RiX3Rlc3QgInAgZm9fbyRzdWZmaXgiICJObyBzeW1ib2wgXCJmb19vJHN1ZmZpeFwiIGluIGN1 cnJlbnQgY29udGV4dC4iICJwIGZvX28kc3VmZml4IGluIgotKwotK2dkYl90ZXN0ICJpbmZvIGxv Y2FscyIgIml4ID0gMTFcclxuaXkyID0gMjJcclxuaXogPSAzM1xyXG5peF94ID0gMVxyXG5peV95 ID0gMlxyXG5pel96MiA9IDNcclxuaXkgPSA1XHJcbml6X3ogPSA1NSIgImluZm8gbG9jYWxzIGlu IgotK2dkYl90ZXN0ICJpbmZvIGNvbW1vbiIgIkNvbnRlbnRzIG9mIEY3NyBDT01NT04gYmxvY2sg J2ZvX28nOlxyXG5peCA9IDExXHJcbml5MiA9IDIyXHJcbml6ID0gMzNcclxuXHJcbkNvbnRlbnRz IG9mIEY3NyBDT01NT04gYmxvY2sgJ2Zvbyc6XHJcbml4X3ggPSAxXHJcbml5X3kgPSAyXHJcbml6 X3oyID0gMyIgImluZm8gY29tbW9uIGluIgotKwotK2dkYl90ZXN0ICJwdHlwZSBpeCIgInR5cGUg PSAkaW50NCIgInB0eXBlIGl4IGluIgotK2dkYl90ZXN0ICJwdHlwZSBpeTIiICJ0eXBlID0gJHJl YWw0IiAicHR5cGUgaXkyIGluIgotK2dkYl90ZXN0ICJwdHlwZSBpeiIgInR5cGUgPSAkcmVhbDgi ICJwdHlwZSBpeiBpbiIKLStnZGJfdGVzdCAicHR5cGUgaXhfeCIgInR5cGUgPSAkaW50NCIgInB0 eXBlIGl4X3ggaW4iCi0rZ2RiX3Rlc3QgInB0eXBlIGl5X3kiICJ0eXBlID0gJHJlYWw0IiAicHR5 cGUgaXlfeSBpbiIKLStnZGJfdGVzdCAicHR5cGUgaXpfejIiICJ0eXBlID0gJHJlYWw4IiAicHR5 cGUgaXpfejIgaW4iCi0rCi0rZ2RiX3Rlc3QgInAgaXgiICIgPSAxMSAqIiAicCBpeCBpbiIKLStn ZGJfdGVzdCAicCBpeTIiICIgPSAyMiAqIiAicCBpeTIgaW4iCi0rZ2RiX3Rlc3QgInAgaXoiICIg PSAzMyAqIiAicCBpeiBpbiIKLStnZGJfdGVzdCAicCBpeF94IiAiID0gMSAqIiAicCBpeF94IGlu IgotK2dkYl90ZXN0ICJwIGl5X3kiICIgPSAyICoiICJwIGl5X3kgaW4iCi0rZ2RiX3Rlc3QgInAg aXpfejIiICIgPSAzICoiICJwIGl6X3oyIGluIgotSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MDEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZjkwCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuNC45MS4yMDEyMDgwMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5m OTAJMjAxMi0wOC0wMSAxODozODo1NC4yMDc1NDA0NjUgKzAyMDAKLUBAIC0wLDAgKzEsNjcgQEAK LSshIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyEKLSsh IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyEgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSshCi0r ISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKLSshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAt IFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rIQotKyEgSWhpcyBmaWxl IGlzIHRoZSBGb3J0cmFuIHNvdXJjZSBmaWxlIGZvciBkeW5hbWljLmV4cC4KLSshIE9yaWdpbmFs IGZpbGUgd3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KLSshIE1v ZGlmaWVkIGZvciB0aGUgR0RCIHRlc3RjYXNlIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPi4KLSsKLStzdWJyb3V0aW5lIGluCi0rCi0rICAgSU5URUdFUio0ICAg ICAgICAgICAgaXgKLSsgICBSRUFMKjQgICAgICAgICAgICAgICBpeTIKLSsgICBSRUFMKjggICAg ICAgICAgICAgICBpegotKwotKyAgIElOVEVHRVIqNCAgICAgICAgICAgIGl4X3gKLSsgICBSRUFM KjQgICAgICAgICAgICAgICBpeV95Ci0rICAgUkVBTCo4ICAgICAgICAgICAgICAgaXpfejIKLSsK LSsgICBjb21tb24gL2ZvX28vaXgsaXkyLGl6Ci0rICAgY29tbW9uIC9mb28vaXhfeCxpeV95LGl6 X3oyCi0rCi0rICAgaXkgPSA1Ci0rICAgaXpfeiA9IDU1Ci0rCi0rICAgaWYgKGl4IC5uZS4gMTEg Lm9yLiBpeTIgLm5lLiAyMi4wIC5vci4gaXogLm5lLiAzMy4wKSBjYWxsIGFib3J0Ci0rICAgaWYg KGl4X3ggLm5lLiAxIC5vci4gaXlfeSAubmUuIDIuMCAub3IuIGl6X3oyIC5uZS4gMy4wKSBjYWxs IGFib3J0Ci0rCi0rICAgaXggPSAwCQkJCQkhIHN0b3AtaGVyZS1pbgotKwotK2VuZCBzdWJyb3V0 aW5lIGluCi0rCi0rcHJvZ3JhbSBjb21tb25fdGVzdAotKwotKyAgIElOVEVHRVIqNCAgICAgICAg ICAgIGl4Ci0rICAgUkVBTCo0ICAgICAgICAgICAgICAgaXkKLSsgICBSRUFMKjggICAgICAgICAg ICAgICBpegotKwotKyAgIElOVEVHRVIqNCAgICAgICAgICAgIGl4X3gKLSsgICBSRUFMKjQgICAg ICAgICAgICAgICBpeV95Ci0rICAgUkVBTCo4ICAgICAgICAgICAgICAgaXpfegotKwotKyAgIGNv bW1vbiAvZm9vL2l4LGl5LGl6Ci0rICAgY29tbW9uIC9mb19vL2l4X3gsaXlfeSxpel96Ci0rCi0r ICAgaXggPSAxCi0rICAgaXkgPSAyLjAKLSsgICBpeiA9IDMuMAotKwotKyAgIGl4X3ggPSAxMQot KyAgIGl5X3kgPSAyMi4wCi0rICAgaXpfeiA9IDMzLjAKLSsKLSsgICBjYWxsIGluCQkJCQkhIHN0 b3AtaGVyZS1vdXQKLSsKLStlbmQgcHJvZ3JhbSBjb21tb25fdGVzdAoKZGlmZiAtLWdpdCBhL2dk Yi1nbGliYy1zdHJzdHItd29ya2Fyb3VuZC5wYXRjaCBiL2dkYi1nbGliYy1zdHJzdHItd29ya2Fy b3VuZC5wYXRjaAppbmRleCAzMDhiMzU5Li44M2Y2YjA5IDEwMDY0NAotLS0gYS9nZGItZ2xpYmMt c3Ryc3RyLXdvcmthcm91bmQucGF0Y2gKKysrIGIvZ2RiLWdsaWJjLXN0cnN0ci13b3JrYXJvdW5k LnBhdGNoCkBAIC0xLDggKzEsOCBAQAotZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJyZWFkLmMgYi9n ZGIvZHdhcmYycmVhZC5jCi1pbmRleCA1MzEwMGM1Li5lNzU4NmFjIDEwMDY0NAotLS0tIGEvZ2Ri L2R3YXJmMnJlYWQuYwotKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwotQEAgLTEzMzA2LDYgKzEzMzA2 LDI1IEBAIG5ld19zeW1ib2xfZnVsbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBl ICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi9kd2FyZjJyZWFkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9y aWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEzLTAxLTE5IDIxOjE2OjIyLjQzNzk2MTc4OSArMDEwMAor KysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2R3YXJmMnJlYWQuYwkyMDEzLTAxLTE5IDIxOjI0 OjIyLjI0Mjk2OTI2NiArMDEwMAorQEAgLTE1OTg3LDYgKzE1OTg3LDI1IEBAIG5ld19zeW1ib2xf ZnVsbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHMKICAgICAgICAvKiBDYWNoZSB0aGlzIHN5bWJv bCdzIG5hbWUgYW5kIHRoZSBuYW1lJ3MgZGVtYW5nbGVkIGZvcm0gKGlmIGFueSkuICAqLwogICAg ICAgIFNZTUJPTF9TRVRfTEFOR1VBR0UgKHN5bSwgY3UtPmxhbmd1YWdlKTsKICAgICAgICBsaW5r YWdlbmFtZSA9IGR3YXJmMl9waHlzbmFtZSAobmFtZSwgZGllLCBjdSk7CkBAIC0yOCwxMiArMjgs MTEgQEAgaW5kZXggNTMxMDBjNS4uZTc1ODZhYyAxMDA2NDQKICAgICAgICBTWU1CT0xfU0VUX05B TUVTIChzeW0sIGxpbmthZ2VuYW1lLCBzdHJsZW4gKGxpbmthZ2VuYW1lKSwgMCwgb2JqZmlsZSk7 CiAgCiAgICAgICAgLyogRm9ydHJhbiBkb2VzIG5vdCBoYXZlIG1hbmdsaW5nIHN0YW5kYXJkIGFu ZCB0aGUgbWFuZ2xpbmcgZG9lcyBkaWZmZXIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2dudS1pZnVuYy1zdHJzdHItd29ya2Fyb3VuZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2dudS1pZnVuYy1zdHJzdHItd29ya2Fyb3VuZC5leHAKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwLi41NzUwNzFmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy1zdHJzdHItd29ya2Fyb3VuZC5leHAKLUBAIC0wLDAg KzEsMTAxIEBACitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2dudS1pZnVuYy1zdHJzdHItd29ya2Fyb3VuZC5leHAKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLXN0cnN0ci13b3JrYXJv dW5kLmV4cAkyMDEzLTAxLTE5IDIxOjIzOjA5LjExOTgyNzk2MyArMDEwMAorQEAgLTAsMCArMSwx MDggQEAKICsjIENvcHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC05MCw3ICs4OSwxMSBAQCBpbmRleCAwMDAwMDAwLi41 NzUwNzFmCiArICAgIH0KICsgICAgLXJlICIgPSB7PHRleHQgZ251LWluZGlyZWN0LWZ1bmN0aW9u IHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPn0gKDB4XFswLTlhLWZcXSspIDxfX3N0cnN0cj5cclxu JGdkYl9wcm9tcHQgJCIgewogKwlzZXQgYWRkciAkZXhwZWN0X291dCgxLHN0cmluZykKLSsJcGFz cyAiJHRlc3QgKEdEQiB3b3JrYXJvdW5kIG9yIGZ1dHVyZSBmaXhlZCBnbGliYykiCisrCXBhc3Mg IiR0ZXN0IChHREIgd29ya2Fyb3VuZCkiCisrICAgIH0KKysgICAgLXJlICIgPSB7PHRleHQgZ251 LWluZGlyZWN0LWZ1bmN0aW9uIHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPn0gKDB4XFswLTlhLWZc XSspIDxfX2xpYmNfc3Ryc3RyPlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXNldCBhZGRyICRleHBl Y3Rfb3V0KDEsc3RyaW5nKQorKwlwYXNzICIkdGVzdCAoZml4ZWQgZ2xpYmMpIgogKyAgICB9CiAr ICAgIC1yZSAiID0ge2NoYXIgXFwqXFwoY29uc3QgY2hhciBcXCosIGNvbnN0IGNoYXIgXFwqXFwp fSAweFxbMC05YS1mXF0rIDxzdHJzdHI+XHJcbiRnZGJfcHJvbXB0ICQiIHsKICsJdW50ZXN0ZWQg IiR0ZXN0IChnbnUtaWZ1bmMgbm90IGluIHVzZSBieSBnbGliYykiCkBAIC0xMjYsNyArMTI5LDEw IEBAIGluZGV4IDAwMDAwMDAuLjU3NTA3MWYKICsJcGFzcyAkdGVzdAogKyAgICB9CiArICAgIC1y ZSAiID0gezx0ZXh0IGdudS1pbmRpcmVjdC1mdW5jdGlvbiB2YXJpYWJsZSwgbm8gZGVidWcgaW5m bz59ICRhZGRyIDxfX3N0cnN0cj5cclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICIkdGVzdCAo R0RCIHdvcmthcm91bmQgb3IgZnV0dXJlIGZpeGVkIGdsaWJjKSIKKysJcGFzcyAiJHRlc3QgKEdE QiB3b3JrYXJvdW5kKSIKKysgICAgfQorKyAgICAtcmUgIiA9IHs8dGV4dCBnbnUtaW5kaXJlY3Qt ZnVuY3Rpb24gdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+fSAkYWRkciA8X19saWJjX3N0cnN0cj5c clxuJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICIkdGVzdCAoZml4ZWQgZ2xpYmMpIgogKyAgICB9 CiArICAgIC1yZSAiID0ge3ZvaWQgXFwqXFwodm9pZFxcKX0gMHhcWzAtOWEtZlxdKyA8c3Ryc3Ry PlxyXG4kZ2RiX3Byb21wdCAkIiB7CiArCWZhaWwgJHRlc3QKCmRpZmYgLS1naXQgYS9nZGItaW1w bGljaXRwb2ludGVyLW9mZnNldC5wYXRjaCBiL2dkYi1pbXBsaWNpdHBvaW50ZXItb2Zmc2V0LnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjdkZjEyLi4wMDAwMDAwCi0tLSBh L2dkYi1pbXBsaWNpdHBvaW50ZXItb2Zmc2V0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUw ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTEyL21z ZzAwMDMwLmh0bWwKLVN1YmplY3Q6IFJlOiBSRkM6IGZpeCBidWcgaW4gRFdfT1BfR05VX2ltcGxp Y2l0X3BvaW50ZXIKLQotPj4+Pj4gIkphbiIgPT0gSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+IHdyaXRlczoKLQotSmFuPiBBbmQgaG93IGl0IGlzIGltcGxlbWVudGVk IGluIEdDQz8KLQotQ29ycmVjdGx5LgotCi0+PiBJIHVwZGF0ZWQgdGhlIGltcGxwdHItNjRiaXQg dGVzdCBjYXNlIHRvIHRlc3QgdGhlIG5ldyBjb2RlIGFzIHdlbGwuCi0KLUphbj4gVGhpcyBpcyAu UyB0ZXN0IHNvIEdDQyBpcyBub3QgdGVzdGVkIHRoZXJlLgotCi1ZZWFoLCBJIGNvbnNpZGVyZWQg dGhpcywgYnV0IEkgZGlkIG5vdCB3YW50IHRvIGFkZCBhIG5ldyB0ZXN0IHRoYXQgd291bGQKLWJl IGV4cG9zZWQgdG8gZ2NjIHZlcnNpb24gZGlmZmVyZW5jZXMgLS0gYW5kIHRlc3RpbmcgZ2NjJ3Mg b3V0cHV0IGlzCi1tb3JlIHByb3Blcmx5IGRvbmUgaW4gdGhlIGdjYyB0ZXN0IHN1aXRlIGFueXdh eS4KLQotSmFuPiBNYXliZSB0byBjYWxsIHRoZW0gbm93IGZvciBleGFtcGxlOgotSmFuPiAgIGR3 YXJmMl9mZXRjaF9kaWVfbG9jX2N1X29mZgotSmFuPiAgIGR3YXJmMl9mZXRjaF9kaWVfbG9jX3Nl Y3Rfb2ZmCi0KLU9rLgotCi1KYW4+IE1pc3NpbmcgYWRkZWQgVFdPX0NVIGhlcmUuCi0KLUFkZGVk LgotCi1Ub20KLQotMjAxMi0xMS0zMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgot Ci0JKiBkd2FyZjJyZWFkLmMgKGR3YXJmMl9mZXRjaF9kaWVfbG9jX3NlY3Rfb2ZmKTogTmV3IGZ1 bmN0aW9uLgotCShkd2FyZjJfZmV0Y2hfZGllX2xvY19jdV9vZmYpOiBSZW5hbWUgZnJvbQotCWR3 YXJmMl9mZXRjaF9kaWVfbG9jYXRpb25fYmxvY2suICBSZXdyaXRlIHRvIHVzZQotCWR3YXJmMl9m ZXRjaF9kaWVfbG9jX3NlY3Rfb2ZmLgotCSogZHdhcmYybG9jLmggKGR3YXJmMl9mZXRjaF9kaWVf bG9jX3NlY3Rfb2ZmKTogRGVjbGFyZS4KLQkoZHdhcmYyX2ZldGNoX2RpZV9sb2NfY3Vfb2ZmKTog UmVuYW1lLgotCSogZHdhcmYybG9jLmMgKGluZGlyZWN0X3BpZWNlZF92YWx1ZSk6IFVzZQotCWR3 YXJmMl9mZXRjaF9kaWVfbG9jX3NlY3Rfb2ZmLgotCSogZHdhcmYyZXhwci5oIChzdHJ1Y3QgZHdh cmZfZXhwcl9jb250ZXh0KSA8bGVuLCBkYXRhPjogVXBkYXRlCi0JY29tbWVudC4KLQkoc3RydWN0 IGR3YXJmX2V4cHJfcGllY2UpIDx2LnB0ci5kaWU+OiBOb3cgYSBzZWN0X29mZnNldC4KLQkqIGR3 YXJmMmV4cHIuYyAoYWRkX3BpZWNlKTogVXBkYXRlLgotCShleGVjdXRlX3N0YWNrX29wKSA8RFdf T1BfR05VX2ltcGxpY2l0X3BvaW50ZXI+OiBVcGRhdGUgY29tbWVudC4KLQotMjAxMi0xMS0zMCAg VG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgotCi0JKiBnZGIuZHdhcmYyL2ltcGxwdHIt NjRiaXQuZXhwOiBSdW4gdGVzdHMgd2l0aCB0d28gQ1VzIGFzIHdlbGwuCi0JKHRlc3QpOiBBZGQg InR3b19jdSIgYXJndW1lbnQuCi0JKiBnZGIuZHdhcmYyL2ltcGxwdHItNjRiaXQuUzogTW92ZSBz dWJwcm9ncmFtIGxhdGVyOyB1c2UgcmVmX2FkZHIKLQlmb3IgdHlwZXM7IGFsbG93IHR3byBDVXMu Ci0KLWRpZmYgLS1naXQgYS9nZGIvZHdhcmYyZXhwci5jIGIvZ2RiL2R3YXJmMmV4cHIuYwotaW5k ZXggMjE0YjM3MS4uODc3YWRkNCAxMDA2NDQKLS0tLSBhL2dkYi9kd2FyZjJleHByLmMKLSsrKyBi L2dkYi9kd2FyZjJleHByLmMKLUBAIC0zNDIsNyArMzQyLDcgQEAgYWRkX3BpZWNlIChzdHJ1Y3Qg ZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsIFVMT05HRVNUIHNpemUsIFVMT05HRVNUIG9mZnNldCkK LSAgICAgfQotICAgZWxzZSBpZiAocC0+bG9jYXRpb24gPT0gRFdBUkZfVkFMVUVfSU1QTElDSVRf UE9JTlRFUikKLSAgICAgewotLSAgICAgIHAtPnYucHRyLmRpZS5jdV9vZmYgPSBjdHgtPmxlbjsK LSsgICAgICBwLT52LnB0ci5kaWUuc2VjdF9vZmYgPSBjdHgtPmxlbjsKLSAgICAgICBwLT52LnB0 ci5vZmZzZXQgPSB2YWx1ZV9hc19sb25nIChkd2FyZl9leHByX2ZldGNoIChjdHgsIDApKTsKLSAg ICAgfQotICAgZWxzZSBpZiAocC0+bG9jYXRpb24gPT0gRFdBUkZfVkFMVUVfUkVHSVNURVIpCi1A QCAtODcyLDcgKzg3Miw3IEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2Nv bnRleHQgKmN0eCwKLSAJICAgICAgZXJyb3IgKF8oIkRXQVJGLTIgZXhwcmVzc2lvbiBlcnJvcjog RFdfT1BfR05VX2ltcGxpY2l0X3BvaW50ZXIgIgotIAkJICAgICAgICJpcyBub3QgYWxsb3dlZCBp biBmcmFtZSBjb250ZXh0IikpOwotIAotLQkgICAgLyogVGhlIHJlZmVycmVkLXRvIERJRSBvZiBj dV9vZmZzZXQga2luZC4gICovCi0rCSAgICAvKiBUaGUgcmVmZXJyZWQtdG8gRElFIG9mIHNlY3Rf b2Zmc2V0IGtpbmQuICAqLwotIAkgICAgY3R4LT5sZW4gPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVn ZXIgKG9wX3B0ciwgY3R4LT5yZWZfYWRkcl9zaXplLAotIAkJCQkJCSBieXRlX29yZGVyKTsKLSAJ ICAgIG9wX3B0ciArPSBjdHgtPnJlZl9hZGRyX3NpemU7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJm MmV4cHIuaCBiL2dkYi9kd2FyZjJleHByLmgKLWluZGV4IDE5ZWZiZmQuLjFiODkwZGMgMTAwNjQ0 Ci0tLS0gYS9nZGIvZHdhcmYyZXhwci5oCi0rKysgYi9nZGIvZHdhcmYyZXhwci5oCi1AQCAtMTY1 LDcgKzE2NSw3IEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQKLSAKLSAgIC8qIEZvciBEV0FS Rl9WQUxVRV9MSVRFUkFMLCB0aGUgY3VycmVudCBsaXRlcmFsIHZhbHVlJ3MgbGVuZ3RoIGFuZAot ICAgICAgZGF0YS4gIEZvciBEV0FSRl9WQUxVRV9JTVBMSUNJVF9QT0lOVEVSLCBMRU4gaXMgdGhl IG9mZnNldCBvZiB0aGUKLS0gICAgIHRhcmdldCBESUUgb2YgY3Vfb2Zmc2V0IGtpbmQuICAqLwot KyAgICAgdGFyZ2V0IERJRSBvZiBzZWN0X29mZnNldCBraW5kLiAgKi8KLSAgIFVMT05HRVNUIGxl bjsKLSAgIGNvbnN0IGdkYl9ieXRlICpkYXRhOwotIAotQEAgLTIzNiw3ICsyMzYsNyBAQCBzdHJ1 Y3QgZHdhcmZfZXhwcl9waWVjZQotICAgICBzdHJ1Y3QKLSAgICAgewotICAgICAgIC8qIFRoZSBy ZWZlcmVudCBESUUgZnJvbSBEV19PUF9HTlVfaW1wbGljaXRfcG9pbnRlci4gICovCi0tICAgICAg Y3Vfb2Zmc2V0IGRpZTsKLSsgICAgICBzZWN0X29mZnNldCBkaWU7Ci0gICAgICAgLyogVGhlIGJ5 dGUgb2Zmc2V0IGludG8gdGhlIHJlc3VsdGluZyBkYXRhLiAgKi8KLSAgICAgICBMT05HRVNUIG9m ZnNldDsKLSAgICAgfSBwdHI7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmxvYy5jIGIvZ2RiL2R3 YXJmMmxvYy5jCi1pbmRleCBjYWRjYzE3Li45NGEwM2NhIDEwMDY0NAotLS0tIGEvZ2RiL2R3YXJm MmxvYy5jCi0rKysgYi9nZGIvZHdhcmYybG9jLmMKLUBAIC00MjUsOCArNDI1LDcgQEAgcGVyX2N1 X2R3YXJmX2NhbGwgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwgY3Vfb2Zmc2V0IGRp ZV9vZmZzZXQsCi0gewotICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uIGJsb2NrOwotIAot LSAgYmxvY2sgPSBkd2FyZjJfZmV0Y2hfZGllX2xvY2F0aW9uX2Jsb2NrIChkaWVfb2Zmc2V0LCBw ZXJfY3UsCi0tCQkJCQkgICBnZXRfZnJhbWVfcGMsIGJhdG9uKTsKLSsgIGJsb2NrID0gZHdhcmYy X2ZldGNoX2RpZV9sb2NfY3Vfb2ZmIChkaWVfb2Zmc2V0LCBwZXJfY3UsIGdldF9mcmFtZV9wYywg YmF0b24pOwotIAotICAgLyogRFdfT1BfY2FsbF9yZWYgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0 ZWQuICAqLwotICAgZ2RiX2Fzc2VydCAoYmxvY2sucGVyX2N1ID09IHBlcl9jdSk7Ci1AQCAtMjAz NCw5ICsyMDMzLDEwIEBAIGluZGlyZWN0X3BpZWNlZF92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWx1 ZSkKLSAgIGJ5dGVfb2Zmc2V0ID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsdWUpOwotIAotICAgZ2Ri X2Fzc2VydCAocGllY2UpOwotLSAgYmF0b24gPSBkd2FyZjJfZmV0Y2hfZGllX2xvY2F0aW9uX2Js b2NrIChwaWVjZS0+di5wdHIuZGllLCBjLT5wZXJfY3UsCi0tCQkJCQkgICBnZXRfZnJhbWVfYWRk cmVzc19pbl9ibG9ja193cmFwcGVyLAotLQkJCQkJICAgZnJhbWUpOwotKyAgYmF0b24KLSsgICAg PSBkd2FyZjJfZmV0Y2hfZGllX2xvY19zZWN0X29mZiAocGllY2UtPnYucHRyLmRpZSwgYy0+cGVy X2N1LAotKwkJCQkgICAgIGdldF9mcmFtZV9hZGRyZXNzX2luX2Jsb2NrX3dyYXBwZXIsCi0rCQkJ CSAgICAgZnJhbWUpOwotIAotICAgcmV0dXJuIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxs IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgZnJhbWUsCi0gCQkJCQliYXRvbi5kYXRhLCBiYXRv bi5zaXplLCBiYXRvbi5wZXJfY3UsCi1AQCAtMzIwMSw4ICszMjAxLDggQEAgZHdhcmYyX2NvbXBp bGVfZXhwcl90b19heCAoc3RydWN0IGFnZW50X2V4cHIgKmV4cHIsIHN0cnVjdCBheHNfdmFsdWUg KmxvYywKLSAJICAgIG9wX3B0ciArPSBzaXplOwotIAotIAkgICAgb2Zmc2V0LmN1X29mZiA9IHVv ZmZzZXQ7Ci0tCSAgICBibG9jayA9IGR3YXJmMl9mZXRjaF9kaWVfbG9jYXRpb25fYmxvY2sgKG9m ZnNldCwgcGVyX2N1LAotLQkJCQkJCSAgICAgZ2V0X2F4X3BjLCBleHByKTsKLSsJICAgIGJsb2Nr ID0gZHdhcmYyX2ZldGNoX2RpZV9sb2NfY3Vfb2ZmIChvZmZzZXQsIHBlcl9jdSwKLSsJCQkJCQkg Z2V0X2F4X3BjLCBleHByKTsKLSAKLSAJICAgIC8qIERXX09QX2NhbGxfcmVmIGlzIGN1cnJlbnRs eSBub3Qgc3VwcG9ydGVkLiAgKi8KLSAJICAgIGdkYl9hc3NlcnQgKGJsb2NrLnBlcl9jdSA9PSBw ZXJfY3UpOwotZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2MuaCBiL2dkYi9kd2FyZjJsb2MuaAot aW5kZXggMGYxMDc2Ny4uNmE4YjNjOCAxMDA2NDQKLS0tLSBhL2dkYi9kd2FyZjJsb2MuaAotKysr IGIvZ2RiL2R3YXJmMmxvYy5oCi1AQCAtNjIsNyArNjIsMTIgQEAgY29uc3QgZ2RiX2J5dGUgKmR3 YXJmMl9maW5kX2xvY2F0aW9uX2V4cHJlc3Npb24KLSAgICBzaXplX3QgKmxvY2V4cHJfbGVuZ3Ro LAotICAgIENPUkVfQUREUiBwYyk7Ci0gCi0tc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uIGR3 YXJmMl9mZXRjaF9kaWVfbG9jYXRpb25fYmxvY2sKLStzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0 b24gZHdhcmYyX2ZldGNoX2RpZV9sb2Nfc2VjdF9vZmYKLSsgIChzZWN0X29mZnNldCBvZmZzZXRf aW5fY3UsIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSwKLSsgICBDT1JFX0FERFIg KCpnZXRfZnJhbWVfcGMpICh2b2lkICpiYXRvbiksCi0rICAgdm9pZCAqYmF0b24pOwotKwotK3N0 cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiBkd2FyZjJfZmV0Y2hfZGllX2xvY19jdV9vZmYKLSAg IChjdV9vZmZzZXQgb2Zmc2V0X2luX2N1LCBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJf Y3UsCi0gICAgQ09SRV9BRERSICgqZ2V0X2ZyYW1lX3BjKSAodm9pZCAqYmF0b24pLAotICAgIHZv aWQgKmJhdG9uKTsKLWRpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJl YWQuYwotaW5kZXggZjRiZDdhOS4uNTlkZWEwNSAxMDA2NDQKLS0tLSBhL2dkYi9kd2FyZjJyZWFk LmMKLSsrKyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBAIC0xNzM0MywxMiArMTczNDMsMTEgQEAgZm9s bG93X2RpZV9yZWYgKHN0cnVjdCBkaWVfaW5mbyAqc3JjX2RpZSwgc3RydWN0IGF0dHJpYnV0ZSAq YXR0ciwKLSAgICBkd2FyZjJfbG9jZXhwcl9iYXRvbi0+ZGF0YSBoYXMgbGlmZXRpbWUgb2YgUEVS X0NVLT5PQkpGSUxFLiAgKi8KLSAKLSBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24KLS1kd2Fy ZjJfZmV0Y2hfZGllX2xvY2F0aW9uX2Jsb2NrIChjdV9vZmZzZXQgb2Zmc2V0X2luX2N1LAotLQkJ CQkgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAotLQkJCQkgQ09SRV9BRERSICgq Z2V0X2ZyYW1lX3BjKSAodm9pZCAqYmF0b24pLAotLQkJCQkgdm9pZCAqYmF0b24pCi0rZHdhcmYy X2ZldGNoX2RpZV9sb2Nfc2VjdF9vZmYgKHNlY3Rfb2Zmc2V0IG9mZnNldCwKLSsJCQkgICAgICAg c3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAotKwkJCSAgICAgICBDT1JFX0FERFIg KCpnZXRfZnJhbWVfcGMpICh2b2lkICpiYXRvbiksCi0rCQkJICAgICAgIHZvaWQgKmJhdG9uKQot IHsKLS0gIHNlY3Rfb2Zmc2V0IG9mZnNldCA9IHsgcGVyX2N1LT5vZmZzZXQuc2VjdF9vZmYgKyBv ZmZzZXRfaW5fY3UuY3Vfb2ZmIH07Ci0gICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdTsKLSAgIHN0cnVj dCBkaWVfaW5mbyAqZGllOwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLUBAIC0xNzQwMyw2 ICsxNzQwMiwyMCBAQCBkd2FyZjJfZmV0Y2hfZGllX2xvY2F0aW9uX2Jsb2NrIChjdV9vZmZzZXQg b2Zmc2V0X2luX2N1LAotICAgcmV0dXJuIHJldHZhbDsKLSB9Ci0gCi0rLyogTGlrZSBkd2FyZjJf ZmV0Y2hfZGllX2xvY19zZWN0X29mZiwgYnV0IHRha2UgYSBDVQotKyAgIG9mZnNldC4gICovCi0r Ci0rc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uCi0rZHdhcmYyX2ZldGNoX2RpZV9sb2NfY3Vf b2ZmIChjdV9vZmZzZXQgb2Zmc2V0X2luX2N1LAotKwkJCSAgICAgc3RydWN0IGR3YXJmMl9wZXJf Y3VfZGF0YSAqcGVyX2N1LAotKwkJCSAgICAgQ09SRV9BRERSICgqZ2V0X2ZyYW1lX3BjKSAodm9p ZCAqYmF0b24pLAotKwkJCSAgICAgdm9pZCAqYmF0b24pCi0rewotKyAgc2VjdF9vZmZzZXQgb2Zm c2V0ID0geyBwZXJfY3UtPm9mZnNldC5zZWN0X29mZiArIG9mZnNldF9pbl9jdS5jdV9vZmYgfTsK LSsKLSsgIHJldHVybiBkd2FyZjJfZmV0Y2hfZGllX2xvY19zZWN0X29mZiAob2Zmc2V0LCBwZXJf Y3UsIGdldF9mcmFtZV9wYywgYmF0b24pOwotK30KLSsKLSAvKiBSZXR1cm4gdGhlIHR5cGUgb2Yg dGhlIERJRSBhdCBESUVfT0ZGU0VUIGluIHRoZSBDVSBuYW1lZCBieQotICAgIFBFUl9DVS4gICov Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2ltcGxwdHItNjRiaXQu UyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9pbXBscHRyLTY0Yml0LlMKLWluZGV4IGJlOGRi NWMuLmQwZDg3MGEgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvaW1wbHB0 ci02NGJpdC5TCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvaW1wbHB0ci02NGJpdC5T Ci1AQCAtMTgsMTEgKzE4LDEyIEBAIGQ6Ci0gCS8qIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0 IEluZm8gKi8KLSAjaWYgT0ZGU0VUX1NJWkUgPT0gNAotICMgZGVmaW5lIE9GRlNFVCAuNGJ5dGUK LS0JLjRieXRlCWRlYnVnX2VuZCAtIDFmCi0rIyBkZWZpbmUgSEVBREVSX0xJTkUxCi0rIyBkZWZp bmUgSEVBREVSX0xJTkUyKEVORCkgLjRieXRlCUVORCAtIDFmCi0gI2VsaWYgT0ZGU0VUX1NJWkUg PT0gOAotICMgZGVmaW5lIE9GRlNFVCAuOGJ5dGUKLS0JLjRieXRlCTB4ZmZmZmZmZmYKLS0JLjhi eXRlCWRlYnVnX2VuZCAtIDFmCi0rIyBkZWZpbmUgSEVBREVSX0xJTkUxIC40Ynl0ZQkweGZmZmZm ZmZmCi0rIyBkZWZpbmUgSEVBREVSX0xJTkUyKEVORCkgLjhieXRlCUVORCAtIDFmCi0gI2Vsc2UK LSAjIGVycm9yCi0gI2VuZGlmCi1AQCAtNDAsNiArNDEsMTYgQEAgZDoKLSAjZWxzZQotICMgZXJy b3IKLSAjZW5kaWYKLSsJCi0rI2lmIFRXT19DVQotKyMgZGVmaW5lIEVORDEgLkxjdV9lbmRfMQot KyNlbHNlCi0rIyBkZWZpbmUgRU5EMSBkZWJ1Z19lbmQKLSsjZW5kaWYKLSsKLSsJSEVBREVSX0xJ TkUxCi0rCUhFQURFUl9MSU5FMihFTkQxKQotKwotIDE6Ci0gCS4yYnl0ZQlEV0FSRl9WRVJTSU9O CS8qIERXQVJGIHZlcnNpb24gbnVtYmVyICovCi0gCU9GRlNFVAkuTGRlYnVnX2FiYnJldjAJLyog T2Zmc2V0IEludG8gQWJicmV2LiBTZWN0aW9uICovCi1AQCAtNjgsMTMgKzc5LDYgQEAgZDoKLSAK LSAJLmJ5dGUJMHgwCS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBEV19UQUdfc3RydWN0dXJlX3R5cGUg Ki8KLSAKLS0JLnVsZWIxMjgJNgkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnByb2dyYW0gKi8KLS0J LmFzY2lpCQkibWFpblwwIgkJLyogRFdfQVRfbmFtZSAqLwotLQlBRERSCQltYWluCQkJLyogRFdf QVRfbG93X3BjICovCi0tCUFERFIJCW1haW4gKyAweDEwMAkJLyogRFdfQVRfaGlnaF9wYyAqLwot LQkuNGJ5dGUJCS5MdHlwZV9pbnQgLSBkCQkvKiBEV19BVF90eXBlICovCi0tCS5ieXRlCQkxCQkJ LyogRFdfQVRfZXh0ZXJuYWwgKi8KLS0KLSAuTHR5cGVfc3RydWN0cHRyOgotIAkudWxlYjEyOCAw eDUJLyogRFdfVEFHX3BvaW50ZXJfdHlwZSAqLwotIAkuYnl0ZQlBRERSX1NJWkUJLyogRFdfQVRf Ynl0ZV9zaXplICovCi1AQCAtOTAsNyArOTQsMzIgQEAgZDoKLSAzOgotIAkuYnl0ZQkxLCAxLCAx LCAxCi0gMjoKLS0JLjRieXRlCS5MdHlwZV9zdHJ1Y3QgLSBkCS8qIERXX0FUX3R5cGUgKi8KLSsJ UkVGX0FERFIJLkx0eXBlX3N0cnVjdCAtIGQJLyogRFdfQVRfdHlwZSAqLwotKwotKyNpZiBUV09f Q1UKLSsJLmJ5dGUJMHgwCS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLwotKy5MY3VfZW5kXzE6 Ci0rCi0rCUhFQURFUl9MSU5FMQotKwlIRUFERVJfTElORTIgKGRlYnVnX2VuZCkKLSsKLSsxOgot KwkuMmJ5dGUJRFdBUkZfVkVSU0lPTgkvKiBEV0FSRiB2ZXJzaW9uIG51bWJlciAqLwotKwlPRkZT RVQJLkxkZWJ1Z19hYmJyZXYwCS8qIE9mZnNldCBJbnRvIEFiYnJldi4gU2VjdGlvbiAqLwotKwku Ynl0ZQlBRERSX1NJWkUJLyogUG9pbnRlciBTaXplIChpbiBieXRlcykgKi8KLSsKLSsJLnVsZWIx MjggMHgxCS8qIChESUUgKDB4YikgRFdfVEFHX2NvbXBpbGVfdW5pdCkgKi8KLSsJLmFzY2lpICJH TlUgQyA0LjQuM1wwIgkvKiBEV19BVF9wcm9kdWNlciAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRf bGFuZ3VhZ2UgKi8KLSsJLmFzY2lpICIxLmNcMCIJLyogRFdfQVRfbmFtZSAqLwotKyNlbmRpZgot KwotKwkudWxlYjEyOAk2CQkJLyogQWJicmV2OiBEV19UQUdfc3VicHJvZ3JhbSAqLwotKwkuYXNj aWkJCSJtYWluXDAiCQkvKiBEV19BVF9uYW1lICovCi0rCUFERFIJCW1haW4JCQkvKiBEV19BVF9s b3dfcGMgKi8KLSsJQUREUgkJbWFpbiArIDB4MTAwCQkvKiBEV19BVF9oaWdoX3BjICovCi0rCVJF Rl9BRERSCS5MdHlwZV9pbnQgLSBkCQkvKiBEV19BVF90eXBlICovCi0rCS5ieXRlCQkxCQkJLyog RFdfQVRfZXh0ZXJuYWwgKi8KLSAKLSAJLnVsZWIxMjggMHg0CS8qIChEV19UQUdfdmFyaWFibGUp ICovCi0gCS5hc2NpaSAicFwwIgkvKiBEV19BVF9uYW1lICovCi1AQCAtMTAwLDcgKzEyOSw3IEBA IGQ6Ci0gCVJFRl9BRERSCS5MdmFyX291dCAtIGQJLyogcmVmZXJlbmNlZCBESUUgKi8KLSAJLnNs ZWIxMjgJMAkvKiBvZmZzZXQgKi8KLSAyOgotLQkuNGJ5dGUJLkx0eXBlX3N0cnVjdHB0ciAtIGQJ LyogRFdfQVRfdHlwZSAqLwotKwlSRUZfQUREUgkuTHR5cGVfc3RydWN0cHRyIC0gZAkvKiBEV19B VF90eXBlICovCi0gCi0gCS5ieXRlCTB4MAkvKiBlbmQgb2YgY2hpbGRyZW4gb2YgbWFpbiAqLwot IAotQEAgLTE1Miw3ICsxODEsNyBAQCBkZWJ1Z19lbmQ6Ci0gCS51bGViMTI4IDB4MDIJLyogKERX X0FUX2xvY2F0aW9uKSAqLwotIAkudWxlYjEyOCAweGEJLyogKERXX0ZPUk1fYmxvY2sxKSAqLwot IAkudWxlYjEyOCAweDQ5CS8qIChEV19BVF90eXBlKSAqLwotLQkudWxlYjEyOCAweDEzCS8qIChE V19GT1JNX3JlZjQpICovCi0rCS51bGViMTI4IDB4MTAJLyogKERXX0ZPUk1fcmVmX2FkZHIpICov Ci0gCS5ieXRlCTB4MAotIAkuYnl0ZQkweDAKLSAKLUBAIC0xNzYsNyArMjA1LDcgQEAgZGVidWdf ZW5kOgotIAkudWxlYjEyOAkweDEyCQkJLyogRFdfQVRfaGlnaF9wYyAqLwotIAkudWxlYjEyOAkw eDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KLSAJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUg Ki8KLS0JLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOAkweDEw CQkJLyogRFdfRk9STV9yZWZfYWRkciAqLwotIAkudWxlYjEyOAkweDNmCQkJLyogRFdfQVRfZXh0 ZXJuYWwgKi8KLSAJLnVsZWIxMjgJMHhjCQkJLyogRFdfRk9STV9mbGFnICovCi0gCS5ieXRlCQkw eDAJCQkvKiBUZXJtaW5hdG9yICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdh cmYyL2ltcGxwdHItNjRiaXQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2ltcGxwdHIt NjRiaXQuZXhwCi1pbmRleCA3OGYxNTk0Li4wNjZjZjc4IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyL2ltcGxwdHItNjRiaXQuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5kd2FyZjIvaW1wbHB0ci02NGJpdC5leHAKLUBAIC0yMiwxNiArMjIsMTYgQEAgaWYgeyFbZHdh cmYyX3N1cHBvcnRdfSB7Ci0gc3RhbmRhcmRfdGVzdGZpbGUgLlMKLSBzZXQgbWFpbmZpbGUgbWFp bi5jCi0gCi0tcHJvYyB0ZXN0IHsgZHdhcmZfdmVyc2lvbiBvZmZzZXRfc2l6ZSBhZGRyX3NpemUg cmVmX2FkZHJfc2l6ZSB9IHsKLStwcm9jIHRlc3QgeyBkd2FyZl92ZXJzaW9uIG9mZnNldF9zaXpl IGFkZHJfc2l6ZSByZWZfYWRkcl9zaXplIHR3b19jdSB9IHsKLSAgICAgZ2xvYmFsIHRlc3RmaWxl IHNyY2ZpbGUgbWFpbmZpbGUKLSAKLSAgICAgIyAzMi1iaXQgdGFyZ2V0cyBkbyBub3Qgc3VwcG9y dCBhbnkgb2YgdGhlIHRlc3RjYXNlczsga2VlcCBxdWlldCB0aGVyZS4KLSAgICAgc2V0IG9wdHMg e3F1aWV0fQotLSAgICBmb3JlYWNoIG4geyBkd2FyZl92ZXJzaW9uIG9mZnNldF9zaXplIGFkZHJf c2l6ZSByZWZfYWRkcl9zaXplIH0gewotKyAgICBmb3JlYWNoIG4geyBkd2FyZl92ZXJzaW9uIG9m ZnNldF9zaXplIGFkZHJfc2l6ZSByZWZfYWRkcl9zaXplIHR3b19jdSB9IHsKLSAJbGFwcGVuZCBv cHRzICJhZGRpdGlvbmFsX2ZsYWdzPS1EW3N0cmluZyB0b3VwcGVyICRuXT1bZXhwciAiXCQkbiJd IgotICAgICB9Ci0gCi0tICAgIHNldCBuYW1lICJkJHtkd2FyZl92ZXJzaW9ufW8ke29mZnNldF9z aXplfWEke2FkZHJfc2l6ZX1yJHtyZWZfYWRkcl9zaXplfSIKLSsgICAgc2V0IG5hbWUgImQke2R3 YXJmX3ZlcnNpb259byR7b2Zmc2V0X3NpemV9YSR7YWRkcl9zaXplfXIke3JlZl9hZGRyX3NpemV9 dCR7dHdvX2N1fSIKLSAgICAgc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0tJHtuYW1lfQotICAg ICBpZiBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJGV4ZWN1dGFibGUgIiR7 c3JjZmlsZX0gJHttYWluZmlsZX0iICRvcHRzXSB7Ci0gCXJldHVybiAtMQotQEAgLTQ0LDggKzQ0 LDEyIEBAIHByb2MgdGVzdCB7IGR3YXJmX3ZlcnNpb24gb2Zmc2V0X3NpemUgYWRkcl9zaXplIHJl Zl9hZGRyX3NpemUgfSB7Ci0gICAgIGdkYl90ZXN0ICJwL3ggcC0+ZiIgIiA9IDB4MTAxMDEwMSIg JG5hbWUKLSB9Ci0gCi0tIyAgICBEV0FSRl9WRVJTSU9OIE9GRlNFVF9TSVpFIEFERFJfU0laRSBS RUZfQUREUl9TSVpFCi0tdGVzdCAyIDggNCA0Ci0tdGVzdCAyIDQgOCA4Ci0tdGVzdCAzIDggNCA4 Ci0tdGVzdCAzIDQgOCA0Ci0rIyAgICBEV0FSRl9WRVJTSU9OIE9GRlNFVF9TSVpFIEFERFJfU0la RSBSRUZfQUREUl9TSVpFIFRXT19DVQotK3Rlc3QgMiA4IDQgNCAwCi0rdGVzdCAyIDQgOCA4IDAK LSt0ZXN0IDMgOCA0IDggMAotK3Rlc3QgMyA0IDggNCAwCi0rdGVzdCAyIDggNCA0IDEKLSt0ZXN0 IDIgNCA4IDggMQotK3Rlc3QgMyA4IDQgOCAxCi0rdGVzdCAzIDQgOCA0IDEKLQoKZGlmZiAtLWdp dCBhL2dkYi1taW5pZGVidWdpbmZvLnBhdGNoIGIvZ2RiLW1pbmlkZWJ1Z2luZm8ucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2ZTZmN2UuLjAwMDAwMDAKLS0tIGEvZ2RiLW1p bmlkZWJ1Z2luZm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDU2ICswLDAgQEAKLWh0dHA6 Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlYXR1cmVzL01pbmlEZWJ1Z0luZm8KLWh0dHBzOi8v YnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9ODM0MDY4Ci0KLVBhdGNoIGJ5IEFs ZXhhbmRlciBMYXJzc29uLgotUmV2aWV3L21vZGlmaWNhdGlvbnMgYW5kIHRlc3RmaWxlIGJ5IEph biBLcmF0b2NodmlsLgotCi1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvTWFrZWZpbGUu aW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjkxLjIwMTIwODAxLm9yaWcvZ2RiL01ha2VmaWxl LmluCTIwMTItMDgtMDEgMTg6NDQ6NTEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC45MS4y MDEyMDgwMS9nZGIvTWFrZWZpbGUuaW4JMjAxMi0wOC0wMSAxODo0NzowNS43MDE4MjA1OTQgKzAy MDAKLUBAIC0xNTEsNiArMTUxLDkgQEAgUkVBRExJTkVfQ0ZMQUdTID0gQFJFQURMSU5FX0NGTEFH U0AKLSAjIFdoZXJlIGlzIGV4cGF0PyAgVGhpcyB3aWxsIGJlIGVtcHR5IGlmIGV4cGF0IHdhcyBu b3QgYXZhaWxhYmxlLgotIExJQkVYUEFUID0gQExJQkVYUEFUQAotIAotKyMgV2hlcmUgaXMgbHpt YT8gIFRoaXMgd2lsbCBiZSBlbXB0eSBpZiBsem1hIHdhcyBub3QgYXZhaWxhYmxlLgotK0xJQkxa TUEgPSBATElCTFpNQUAKLSsKLSBXQVJOX0NGTEFHUyA9IEBXQVJOX0NGTEFHU0AKLSBXRVJST1Jf Q0ZMQUdTID0gQFdFUlJPUl9DRkxBR1NACi0gR0RCX1dBUk5fQ0ZMQUdTID0gJChXQVJOX0NGTEFH UykKLUBAIC00NjcsNyArNDcwLDcgQEAgSU5URVJOQUxfTERGTEFHUyA9ICQoQ0ZMQUdTKSAkKEdM T0JBTF9DRgotICMgTElCSUJFUlRZIGFwcGVhcnMgdHdpY2Ugb24gcHVycG9zZS4KLSBDTElCUyA9 ICQoU0lNKSAkKFJFQURMSU5FKSAkKE9QQ09ERVMpICQoQkZEKSAkKElOVEwpICQoTElCSUJFUlRZ KSAkKExJQkRFQ05VTUJFUikgXAotIAkkKFhNX0NMSUJTKSAkKE5BVF9DTElCUykgJChHREJUS0xJ QlMpIEBMSUJTQCBAUFlUSE9OX0xJQlNAIFwKLS0JJChMSUJFWFBBVCkgXAotKwkkKExJQkVYUEFU KSAkKExJQkxaTUEpIFwKLSAJJChMSUJJQkVSVFkpICQoV0lOMzJMSUJTKSAkKExJQkdOVSkKLSBD REVQUyA9ICQoWE1fQ0RFUFMpICQoTkFUX0NERVBTKSAkKFNJTSkgJChCRkQpICQoUkVBRExJTkVf REVQUykgXAotIAkkKE9QQ09ERVMpICQoSU5UTF9ERVBTKSAkKExJQklCRVJUWSkgJChDT05GSUdf REVQUykgJChMSUJHTlUpCi1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvY29uZmlnLmlu Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC45MS4yMDEyMDgwMS5vcmlnL2dkYi9jb25maWcuaW4J MjAxMi0wOC0wMSAxODo0NToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjkxLjIwMTIw ODAxL2dkYi9jb25maWcuaW4JMjAxMi0wOC0wMSAxODo0NzowNS43MDE4MjA1OTQgKzAyMDAKLUBA IC0xOTgsNiArMTk4LDkgQEAKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxpYmlj b252bGlzdCcgZnVuY3Rpb24uICovCi0gI3VuZGVmIEhBVkVfTElCSUNPTlZMSVNUCi0gCi0rLyog RGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBsem1hIGxpYnJhcnkuICovCi0rI3VuZGVmIEhBVkVfTElC TFpNQQotKwotIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbScgbGlicmFyeSAoLWxt KS4gKi8KLSAjdW5kZWYgSEFWRV9MSUJNCi0gCi1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgwMS9n ZGIvY29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC45MS4yMDEyMDgwMS5vcmlnL2dk Yi9jb25maWd1cmUJMjAxMi0wOC0wMSAxODo0NToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny40LjkxLjIwMTIwODAxL2dkYi9jb25maWd1cmUJMjAxMi0wOC0wMSAxODo0NzowNS43MDM4MjA1 ODMgKzAyMDAKLUBAIC02NDEsNiArNjQxLDkgQEAgVENMX1ZFUlNJT04KLSBXSU4zMkxEQVBQCi0g R1VJX0NGTEFHU19YCi0gTElCR1VJCi0rTFRMSUJMWk1BCi0rTElCTFpNQQotK0hBVkVfTElCTFpN QQotIFdJTjMyTElCUwotIFNFUl9IQVJEV0lSRQotIFdFUlJPUl9DRkxBR1MKLUBAIC04MTMsNiAr ODE2LDggQEAgd2l0aF9zeXN0ZW1fZ2RiaW5pdAotIGVuYWJsZV93ZXJyb3IKLSBlbmFibGVfYnVp bGRfd2FybmluZ3MKLSBlbmFibGVfZ2RiX2J1aWxkX3dhcm5pbmdzCi0rd2l0aF9sem1hCi0rd2l0 aF9saWJsem1hX3ByZWZpeAotIHdpdGhfdGNsCi0gd2l0aF90awotIHdpdGhfeAotQEAgLTE1MzIs NiArMTUzNyw5IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXN5c3Jvb3RbPURJUl0g ICAgc2VhcmNoIGZvciB1c3IvbGliIGV0IGFsIHdpdGhpbiBESVIKLSAgIC0td2l0aC1zeXN0ZW0t Z2RiaW5pdD1QQVRICi0gICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IGxv YWQgYSBzeXN0ZW0td2lkZSBnZGJpbml0IGZpbGUKLSsgIC0td2l0aC1sem1hICAgICAgICAgICAg IHN1cHBvcnQgbHptYSBjb21wcmVzc2lvbiAoYXV0by95ZXMvbm8pCi0rICAtLXdpdGgtbGlibHpt YS1wcmVmaXhbPURJUl0gIHNlYXJjaCBmb3IgbGlibHptYSBpbiBESVIvaW5jbHVkZSBhbmQgRElS L2xpYgotKyAgLS13aXRob3V0LWxpYmx6bWEtcHJlZml4ICAgICBkb24ndCBzZWFyY2ggZm9yIGxp Ymx6bWEgaW4gaW5jbHVkZWRpciBhbmQgbGliZGlyCi0gICAtLXdpdGgtdGNsICAgICAgICAgICAg ICBkaXJlY3RvcnkgY29udGFpbmluZyB0Y2wgY29uZmlndXJhdGlvbiAodGNsQ29uZmlnLnNoKQot ICAgLS13aXRoLXRrICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGsgY29uZmln dXJhdGlvbiAodGtDb25maWcuc2gpCi0gICAtLXdpdGgteCAgICAgICAgICAgICAgICB1c2UgdGhl IFggV2luZG93IFN5c3RlbQotQEAgLTEzMTUxLDYgKzEzMTU5LDQ5NCBAQCBMSUJTPSRPTERfTElC UwotICMgQWRkIGFueSBob3N0LXNwZWNpZmljIG9iamVjdHMgdG8gR0RCLgotIENPTkZJR19PQlM9 IiR7Q09ORklHX09CU30gJHtnZGJfaG9zdF9vYnN9IgotIAotKyMgSWYgYnVpbGRpbmcgb24gRUxG LCBsb29rIGZvciBsem1hIHN1cHBvcnQgZm9yIGVtYmVkZGVkIGNvbXByZXNzZWQgZGVidWcgaW5m by4KLStpZiB0ZXN0ICRnZGJfY3ZfdmFyX2VsZiA9IHllczsgdGhlbgotKwotKyMgQ2hlY2sgd2hl dGhlciAtLXdpdGgtbHptYSB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2x6bWErc2V0fSIg PSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9sem1hOwotK2Vsc2UKLSsgIHdpdGhfbHpt YT1hdXRvCi0rZmkKLSsKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgd2hldGhlciB0byB1c2UgbHptYSIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tp bmcgd2hldGhlciB0byB1c2UgbHptYS4uLiAiID4mNjsgfQotKyAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2x6bWEiID4mNQotKyRhc19lY2hv ICIkd2l0aF9sem1hIiA+JjY7IH0KLSsKLSsgIGlmIHRlc3QgIiR7d2l0aF9sem1hfSIgIT0gbm87 IHRoZW4KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsgICAgdXNlX2FkZGl0aW9uYWw9eWVzCi0r Ci0rICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCi0rICBwcmVmaXg9IiRhY2xfZmluYWxfcHJl Zml4IgotKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKLSsgIGV4ZWNfcHJl Zml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgotKwotKyAgICBldmFsIGFkZGl0aW9uYWxfaW5j bHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKLSsgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRs aWJkaXJcIgotKwotKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKLSsgIHBy ZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKLSsKLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxp Ymx6bWEtcHJlZml4IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbGlibHptYV9wcmVmaXgr c2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJsem1hX3ByZWZpeDsKLSsg ICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYbm8iOyB0aGVuCi0rICAgICAgdXNlX2FkZGl0aW9u YWw9bm8KLSsgICAgZWxzZQotKyAgICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWCI7IHRoZW4K LSsKLSsgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKLSsgIHByZWZpeD0iJGFjbF9maW5hbF9w cmVmaXgiCi0rICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgotKyAgZXhlY19w cmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCi0rCi0rICAgICAgICAgIGV2YWwgYWRkaXRp b25hbF9pbmNsdWRlZGlyPVwiJGluY2x1ZGVkaXJcIgotKyAgICAgICAgICBldmFsIGFkZGl0aW9u YWxfbGliZGlyPVwiJGxpYmRpclwiCi0rCi0rICBleGVjX3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNf cHJlZml4IgotKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgotKwotKyAgICAgIGVsc2UKLSsg ICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJHdpdGh2YWwvaW5jbHVkZSIKLSsgICAgICAg IGFkZGl0aW9uYWxfbGliZGlyPSIkd2l0aHZhbC9saWIiCi0rICAgICAgZmkKLSsgICAgZmkKLSsK LStmaQotKwotKyAgICAgIExJQkxaTUE9Ci0rICBMVExJQkxaTUE9Ci0rICBJTkNMWk1BPQotKyAg cnBhdGhkaXJzPQotKyAgbHRycGF0aGRpcnM9Ci0rICBuYW1lc19hbHJlYWR5X2hhbmRsZWQ9Ci0r ICBuYW1lc19uZXh0X3JvdW5kPSdsem1hICcKLSsgIHdoaWxlIHRlc3QgLW4gIiRuYW1lc19uZXh0 X3JvdW5kIjsgZG8KLSsgICAgbmFtZXNfdGhpc19yb3VuZD0iJG5hbWVzX25leHRfcm91bmQiCi0r ICAgIG5hbWVzX25leHRfcm91bmQ9Ci0rICAgIGZvciBuYW1lIGluICRuYW1lc190aGlzX3JvdW5k OyBkbwotKyAgICAgIGFscmVhZHlfaGFuZGxlZD0KLSsgICAgICBmb3IgbiBpbiAkbmFtZXNfYWxy ZWFkeV9oYW5kbGVkOyBkbwotKyAgICAgICAgaWYgdGVzdCAiJG4iID0gIiRuYW1lIjsgdGhlbgot KyAgICAgICAgICBhbHJlYWR5X2hhbmRsZWQ9eWVzCi0rICAgICAgICAgIGJyZWFrCi0rICAgICAg ICBmaQotKyAgICAgIGRvbmUKLSsgICAgICBpZiB0ZXN0IC16ICIkYWxyZWFkeV9oYW5kbGVkIjsg dGhlbgotKyAgICAgICAgbmFtZXNfYWxyZWFkeV9oYW5kbGVkPSIkbmFtZXNfYWxyZWFkeV9oYW5k bGVkICRuYW1lIgotKyAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVybmFtZT1gZWNobyAiJG5h bWUiIHwgc2VkIC1lICd5fGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tfEFCQ0RFRkdISUpL TE1OT1BRUlNUVVZXWFlaX19ffCdgCi0rICAgICAgICBldmFsIHZhbHVlPVwiXCRIQVZFX0xJQiR1 cHBlcm5hbWVcIgotKyAgICAgICAgaWYgdGVzdCAtbiAiJHZhbHVlIjsgdGhlbgotKyAgICAgICAg ICBpZiB0ZXN0ICIkdmFsdWUiID0geWVzOyB0aGVuCi0rICAgICAgICAgICAgZXZhbCB2YWx1ZT1c IlwkTElCJHVwcGVybmFtZVwiCi0rICAgICAgICAgICAgdGVzdCAteiAiJHZhbHVlIiB8fCBMSUJM Wk1BPSIke0xJQkxaTUF9JHtMSUJMWk1BOisgfSR2YWx1ZSIKLSsgICAgICAgICAgICBldmFsIHZh bHVlPVwiXCRMVExJQiR1cHBlcm5hbWVcIgotKyAgICAgICAgICAgIHRlc3QgLXogIiR2YWx1ZSIg fHwgTFRMSUJMWk1BPSIke0xUTElCTFpNQX0ke0xUTElCTFpNQTorIH0kdmFsdWUiCi0rICAgICAg ICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Ci0rICAgICAg ICAgIGZpCi0rICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91 bmRfZGlyPQotKyAgICAgICAgICBmb3VuZF9sYT0KLSsgICAgICAgICAgZm91bmRfc289Ci0rICAg ICAgICAgIGZvdW5kX2E9Ci0rICAgICAgICAgIGlmIHRlc3QgJHVzZV9hZGRpdGlvbmFsID0geWVz OyB0aGVuCi0rICAgICAgICAgICAgaWYgdGVzdCAtbiAiJHNobGliZXh0IiAmJiB0ZXN0IC1mICIk YWRkaXRpb25hbF9saWJkaXIvbGliJG5hbWUuJHNobGliZXh0IjsgdGhlbgotKyAgICAgICAgICAg ICAgZm91bmRfZGlyPSIkYWRkaXRpb25hbF9saWJkaXIiCi0rICAgICAgICAgICAgICBmb3VuZF9z bz0iJGFkZGl0aW9uYWxfbGliZGlyL2xpYiRuYW1lLiRzaGxpYmV4dCIKLSsgICAgICAgICAgICAg IGlmIHRlc3QgLWYgIiRhZGRpdGlvbmFsX2xpYmRpci9saWIkbmFtZS5sYSI7IHRoZW4KLSsgICAg ICAgICAgICAgICAgZm91bmRfbGE9IiRhZGRpdGlvbmFsX2xpYmRpci9saWIkbmFtZS5sYSIKLSsg ICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgaWYgdGVz dCAtZiAiJGFkZGl0aW9uYWxfbGliZGlyL2xpYiRuYW1lLiRsaWJleHQiOyB0aGVuCi0rICAgICAg ICAgICAgICAgIGZvdW5kX2Rpcj0iJGFkZGl0aW9uYWxfbGliZGlyIgotKyAgICAgICAgICAgICAg ICBmb3VuZF9hPSIkYWRkaXRpb25hbF9saWJkaXIvbGliJG5hbWUuJGxpYmV4dCIKLSsgICAgICAg ICAgICAgICAgaWYgdGVzdCAtZiAiJGFkZGl0aW9uYWxfbGliZGlyL2xpYiRuYW1lLmxhIjsgdGhl bgotKyAgICAgICAgICAgICAgICAgIGZvdW5kX2xhPSIkYWRkaXRpb25hbF9saWJkaXIvbGliJG5h bWUubGEiCi0rICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAg ICAgIGZpCi0rICAgICAgICAgIGZpCi0rICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiA9 ICJYIjsgdGhlbgotKyAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMVExJQkxaTUE7IGRv Ci0rCi0rICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCi0rICBwcmVmaXg9IiRhY2xfZmluYWxf cHJlZml4IgotKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKLSsgIGV4ZWNf cHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgotKyAgZXZhbCB4PVwiJHhcIgotKyAgZXhl Y19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKLSsgIHByZWZpeD0iJGFjbF9zYXZlX3By ZWZpeCIKLSsKLSsgICAgICAgICAgICAgIGNhc2UgIiR4IiBpbgotKyAgICAgICAgICAgICAgICAt TCopCi0rICAgICAgICAgICAgICAgICAgZGlyPWBlY2hvICJYJHgiIHwgc2VkIC1lICdzL15YLUwv LydgCi0rICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJHNobGliZXh0IiAmJiB0ZXN0IC1m ICIkZGlyL2xpYiRuYW1lLiRzaGxpYmV4dCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgIGZv dW5kX2Rpcj0iJGRpciIKLSsgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyL2xpYiRu YW1lLiRzaGxpYmV4dCIKLSsgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvbGli JG5hbWUubGEiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2xhPSIkZGlyL2xp YiRuYW1lLmxhIgotKyAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICBl bHNlCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyL2xpYiRuYW1lLiRsaWJl eHQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKLSsgICAg ICAgICAgICAgICAgICAgICAgZm91bmRfYT0iJGRpci9saWIkbmFtZS4kbGliZXh0IgotKyAgICAg ICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyL2xpYiRuYW1lLmxhIjsgdGhlbgotKyAg ICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2xhPSIkZGlyL2xpYiRuYW1lLmxhIgotKyAgICAg ICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAg ICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICAgICBlc2FjCi0r ICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCi0rICAgICAg ICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGRvbmUKLSsg ICAgICAgICAgZmkKLSsgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsgdGhl bgotKyAgICAgICAgICAgICAgICAgICAgICAgIExUTElCTFpNQT0iJHtMVExJQkxaTUF9JHtMVExJ QkxaTUE6KyB9LUwkZm91bmRfZGlyIC1sJG5hbWUiCi0rICAgICAgICAgICAgaWYgdGVzdCAiWCRm b3VuZF9zbyIgIT0gIlgiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkZW5hYmxlX3JwYXRoIiA9IG5vIHx8IHRl c3QgIlgkZm91bmRfZGlyIiA9ICJYL3Vzci9saWIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMSUJMWk1BPSIke0xJQkxaTUF9JHtMSUJMWk1BOisgfSRmb3VuZF9zbyIK LSsgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KLSsg ICAgICAgICAgICAgICAgZm9yIHggaW4gJGx0cnBhdGhkaXJzOyBkbwotKyAgICAgICAgICAgICAg ICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRmb3VuZF9kaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAg ICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAg ICAgICAgIGZpCi0rICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgaWYgdGVz dCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICBsdHJwYXRoZGlycz0iJGx0 cnBhdGhkaXJzICRmb3VuZF9kaXIiCi0rICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiA9IHllczsgdGhl bgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExJQkxaTUE9IiR7TElCTFpNQX0ke0xJQkxaTUE6KyB9JGZvdW5kX3NvIgotKyAgICAgICAgICAg ICAgICBlbHNlCi0rICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRp cl9mbGFnX3NwZWMiICYmIHRlc3QgIiRoYXJkY29kZV9taW51c19MIiA9IG5vOyB0aGVuCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TElCTFpNQT0iJHtMSUJMWk1BfSR7TElCTFpNQTorIH0kZm91bmRfc28iCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQot KyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJHJwYXRoZGlyczsgZG8KLSsgICAgICAgICAg ICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGZvdW5kX2RpciI7IHRoZW4KLSsgICAgICAg ICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgYnJl YWsKLSsgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgIGRvbmUK LSsgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAg ICAgICAgICAgICAgICAgIHJwYXRoZGlycz0iJHJwYXRoZGlycyAkZm91bmRfZGlyIgotKyAgICAg ICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFH UyAkTElCTFpNQTsgZG8KLSsKLSsgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKLSsgIHByZWZp eD0iJGFjbF9maW5hbF9wcmVmaXgiCi0rICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJl Zml4IgotKyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCi0rICBldmFsIHg9 XCIkeFwiCi0rICBleGVjX3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNfcHJlZml4IgotKyAgcHJlZml4 PSIkYWNsX3NhdmVfcHJlZml4IgotKwotKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJY JHgiID0gIlgtTCRmb3VuZF9kaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgaGF2 ZWl0PXllcwotKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICAg ICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICBkb25lCi0rICAgICAgICAgICAgICAgICAg ICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICBMSUJM Wk1BPSIke0xJQkxaTUF9JHtMSUJMWk1BOisgfS1MJGZvdW5kX2RpciIKLSsgICAgICAgICAgICAg ICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfbWludXNf TCIgIT0gbm87IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCTFpNQT0i JHtMSUJMWk1BfSR7TElCTFpNQTorIH0kZm91bmRfc28iCi0rICAgICAgICAgICAgICAgICAgICBl bHNlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMSUJMWk1BPSIke0xJQkxaTUF9JHtMSUJMWk1BOisgfS1sJG5hbWUiCi0rICAg ICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAg ICAgIGZpCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAg ICAgIGlmIHRlc3QgIlgkZm91bmRfYSIgIT0gIlgiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMSUJMWk1BPSIke0xJQkxaTUF9JHtMSUJMWk1BOisgfSRmb3VuZF9hIgot KyAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExJQkxaTUE9IiR7TElCTFpNQX0ke0xJQkxaTUE6KyB9LUwkZm91bmRfZGly IC1sJG5hbWUiCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGZpCi0rICAgICAgICAg ICAgICAgICAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPQotKyAgICAgICAgICAgIGNhc2Ug IiRmb3VuZF9kaXIiIGluCi0rICAgICAgICAgICAgICAqL2xpYiB8ICovbGliLykKLSsgICAgICAg ICAgICAgICAgYmFzZWRpcj1gZWNobyAiWCRmb3VuZF9kaXIiIHwgc2VkIC1lICdzLF5YLCwnIC1l ICdzLC9saWIvKiQsLCdgCi0rICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0i JGJhc2VkaXIvaW5jbHVkZSIKLSsgICAgICAgICAgICAgICAgOzsKLSsgICAgICAgICAgICBlc2Fj Ci0rICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiICE9ICJYIjsg dGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgIT0gIlgvdXNyL2luY2x1ZGUi OyB0aGVuCi0rICAgICAgICAgICAgICAgIGhhdmVpdD0KLSsgICAgICAgICAgICAgICAgaWYgdGVz dCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiID0gIlgvdXNyL2xvY2FsL2luY2x1ZGUiOyB0aGVu Ci0rICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KLSsgICAgICAgICAg ICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgICAgICAgICAgICAgICAgICAgICAgbGludXgq KSBoYXZlaXQ9eWVzOzsKLSsgICAgICAgICAgICAgICAgICAgIGVzYWMKLSsgICAgICAgICAgICAg ICAgICBmaQotKyAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICBpZiB0ZXN0IC16 ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgIGZvciB4IGluICRDUFBGTEFHUyAk SU5DTFpNQTsgZG8KLSsKLSsgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKLSsgIHByZWZpeD0i JGFjbF9maW5hbF9wcmVmaXgiCi0rICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4 IgotKyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCi0rICBldmFsIHg9XCIk eFwiCi0rICBleGVjX3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNfcHJlZml4IgotKyAgcHJlZml4PSIk YWNsX3NhdmVfcHJlZml4IgotKwotKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9 ICJYLUkkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAg ICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAg ICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgICBp ZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAt ZCAiJGFkZGl0aW9uYWxfaW5jbHVkZWRpciI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElOQ0xaTUE9IiR7SU5DTFpNQX0ke0lOQ0xaTUE6KyB9LUkk YWRkaXRpb25hbF9pbmNsdWRlZGlyIgotKyAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAg ICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgZmkKLSsg ICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmb3Vu ZF9sYSI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNhdmVfbGliZGlyPSIkbGliZGlyIgotKyAgICAgICAgICAgICAgY2FzZSAi JGZvdW5kX2xhIiBpbgotKyAgICAgICAgICAgICAgICAqLyogfCAqXFwqKSAuICIkZm91bmRfbGEi IDs7Ci0rICAgICAgICAgICAgICAgICopIC4gIi4vJGZvdW5kX2xhIiA7OwotKyAgICAgICAgICAg ICAgZXNhYwotKyAgICAgICAgICAgICAgbGliZGlyPSIkc2F2ZV9saWJkaXIiCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZvciBkZXAgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KLSsgICAg ICAgICAgICAgICAgY2FzZSAiJGRlcCIgaW4KLSsgICAgICAgICAgICAgICAgICAtTCopCi0rICAg ICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2xpYmRpcj1gZWNobyAiWCRkZXAiIHwgc2VkIC1l ICdzL15YLUwvLydgCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiICE9ICJYL3Vzci9saWIiOyB0aGVuCi0r ICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KLSsgICAgICAgICAgICAgICAgICAgICAgaWYg dGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgPSAiWC91c3IvbG9jYWwvbGliIjsgdGhlbgotKyAg ICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICBjYXNlICRob3N0X29zIGluCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxpbnV4KikgaGF2ZWl0PXllczs7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICBl c2FjCi0rICAgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAg ZmkKLSsgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsg ICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICAgICAg Zm9yIHggaW4gJExERkxBR1MgJExJQkxaTUE7IGRvCi0rCi0rICBhY2xfc2F2ZV9wcmVmaXg9IiRw cmVmaXgiCi0rICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgotKyAgYWNsX3NhdmVfZXhlY19w cmVmaXg9IiRleGVjX3ByZWZpeCIKLSsgIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJl Zml4IgotKyAgZXZhbCB4PVwiJHhcIgotKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3By ZWZpeCIKLSsgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKLSsKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAg ICAgICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0 IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAt ZCAiJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCTFpNQT0iJHtMSUJMWk1BfSR7TElCTFpN QTorIH0tTCRhZGRpdGlvbmFsX2xpYmRpciIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGZp Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgICBo YXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExUTElC TFpNQTsgZG8KLSsKLSsgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKLSsgIHByZWZpeD0iJGFj bF9maW5hbF9wcmVmaXgiCi0rICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4Igot KyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCi0rICBldmFsIHg9XCIkeFwi Ci0rICBleGVjX3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNfcHJlZml4IgotKyAgcHJlZml4PSIkYWNs X3NhdmVfcHJlZml4IgotKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4 IiA9ICJYLUwkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgICAgZG9u ZQotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9saWJkaXIi OyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMVExJQkxaTUE9IiR7TFRMSUJMWk1BfSR7TFRMSUJMWk1BOisgfS1MJGFkZGl0aW9u YWxfbGliZGlyIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAg ICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAg ICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICAgICAgICAgLVIq KQotKyAgICAgICAgICAgICAgICAgICAgZGlyPWBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MvXlgt Ui8vJ2AKLSsgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRlbmFibGVfcnBhdGgiICE9IG5v OyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaGF2ZWl0PQotKyAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBp biAkcnBhdGhkaXJzOyBkbwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIg PSAiWCRkaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgICAgICAgICAgICAg IGZpCi0rICAgICAgICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgICAgICAg aWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICBycGF0 aGRpcnM9IiRycGF0aGRpcnMgJGRpciIKLSsgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRsdHJwYXRoZGly czsgZG8KLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZGlyIjsg dGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcwotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAg ICAgICAgICAgICAgICAgICBkb25lCi0rICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXog IiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgbHRycGF0aGRpcnM9IiRs dHJwYXRoZGlycyAkZGlyIgotKyAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAg ICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICAgICAgICAg LWwqKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc19uZXh0 X3JvdW5kPSIkbmFtZXNfbmV4dF9yb3VuZCAiYGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncy9eWC1s Ly8nYAotKyAgICAgICAgICAgICAgICAgICAgOzsKLSsgICAgICAgICAgICAgICAgICAqLmxhKQot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNfbmV4dF9yb3VuZD0iJG5hbWVzX25leHRfcm91 bmQgImBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MsXlguKi8sLCcgLWUgJ3MsXmxpYiwsJyAtZSAn cyxcLmxhJCwsJ2AKLSsgICAgICAgICAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICAgICAgICAg KikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCTFpNQT0iJHtM SUJMWk1BfSR7TElCTFpNQTorIH0kZGVwIgotKyAgICAgICAgICAgICAgICAgICAgTFRMSUJMWk1B PSIke0xUTElCTFpNQX0ke0xUTElCTFpNQTorIH0kZGVwIgotKyAgICAgICAgICAgICAgICAgICAg OzsKLSsgICAgICAgICAgICAgICAgZXNhYwotKyAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAg ICAgIGZpCi0rICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJMWk1BPSIke0xJQkxaTUF9JHtMSUJMWk1B OisgfS1sJG5hbWUiCi0rICAgICAgICAgICAgTFRMSUJMWk1BPSIke0xUTElCTFpNQX0ke0xUTElC TFpNQTorIH0tbCRuYW1lIgotKyAgICAgICAgICBmaQotKyAgICAgICAgZmkKLSsgICAgICBmaQot KyAgICBkb25lCi0rICBkb25lCi0rICBpZiB0ZXN0ICJYJHJwYXRoZGlycyIgIT0gIlgiOyB0aGVu Ci0rICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgotKyAg ICAgICAgICAgICAgICAgICAgICAgIGFsbGRpcnM9Ci0rICAgICAgZm9yIGZvdW5kX2RpciBpbiAk cnBhdGhkaXJzOyBkbwotKyAgICAgICAgYWxsZGlycz0iJHthbGxkaXJzfSR7YWxsZGlyczorJGhh cmRjb2RlX2xpYmRpcl9zZXBhcmF0b3J9JGZvdW5kX2RpciIKLSsgICAgICBkb25lCi0rICAgICAg ICAgICAgYWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgotKyAgICAgIGxpYmRpcj0iJGFsbGRpcnMi Ci0rICAgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotKyAgICAg IGxpYmRpcj0iJGFjbF9zYXZlX2xpYmRpciIKLSsgICAgICBMSUJMWk1BPSIke0xJQkxaTUF9JHtM SUJMWk1BOisgfSRmbGFnIgotKyAgICBlbHNlCi0rICAgICAgICAgICAgZm9yIGZvdW5kX2RpciBp biAkcnBhdGhkaXJzOyBkbwotKyAgICAgICAgYWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgotKyAg ICAgICAgbGliZGlyPSIkZm91bmRfZGlyIgotKyAgICAgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2Rl X2xpYmRpcl9mbGFnX3NwZWNcIgotKyAgICAgICAgbGliZGlyPSIkYWNsX3NhdmVfbGliZGlyIgot KyAgICAgICAgTElCTFpNQT0iJHtMSUJMWk1BfSR7TElCTFpNQTorIH0kZmxhZyIKLSsgICAgICBk b25lCi0rICAgIGZpCi0rICBmaQotKyAgaWYgdGVzdCAiWCRsdHJwYXRoZGlycyIgIT0gIlgiOyB0 aGVuCi0rICAgICAgICAgICAgZm9yIGZvdW5kX2RpciBpbiAkbHRycGF0aGRpcnM7IGRvCi0rICAg ICAgTFRMSUJMWk1BPSIke0xUTElCTFpNQX0ke0xUTElCTFpNQTorIH0tUiRmb3VuZF9kaXIiCi0r ICAgIGRvbmUKLSsgIGZpCi0rCi0rCi0rICAgICAgICBhY19zYXZlX0NQUEZMQUdTPSIkQ1BQRkxB R1MiCi0rCi0rICBmb3IgZWxlbWVudCBpbiAkSU5DTFpNQTsgZG8KLSsgICAgaGF2ZWl0PQotKyAg ICBmb3IgeCBpbiAkQ1BQRkxBR1M7IGRvCi0rCi0rICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgi Ci0rICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgotKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9 IiRleGVjX3ByZWZpeCIKLSsgIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4Igot KyAgZXZhbCB4PVwiJHhcIgotKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIK LSsgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKLSsKLSsgICAgICBpZiB0ZXN0ICJYJHgiID0g IlgkZWxlbWVudCI7IHRoZW4KLSsgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgIGJyZWFrCi0r ICAgICAgZmkKLSsgICAgZG9uZQotKyAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAg ICAgIENQUEZMQUdTPSIke0NQUEZMQUdTfSR7Q1BQRkxBR1M6KyB9JGVsZW1lbnQiCi0rICAgIGZp Ci0rICBkb25lCi0rCi0rCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGNoZWNraW5nIGZvciBsaWJsem1hIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Ig bGlibHptYS4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfbGlibHptYStzZXR9IiA9IHNl dDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsKLSsgICAg YWNfc2F2ZV9MSUJTPSIkTElCUyIKLSsgICAgTElCUz0iJExJQlMgJExJQkxaTUEiCi0rICAgIGNh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRl ZnMuaC4gICovCi0rI2luY2x1ZGUgImx6bWEuaCIKLStpbnQKLSttYWluICgpCi0rewotK2x6bWFf aW5kZXhfaXRlciBpdGVyOwotKwkJCSAgIGx6bWFfaW5kZXhfaXRlcl9pbml0ICgmaXRlciwgMCk7 Ci0rCQkJICAgbHptYV9tZl9pc19zdXBwb3J0ZWQgKExaTUFfTUZfSEMzKTsKLSsgIDsKLSsgIHJl dHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhl biA6Ci0rICBhY19jdl9saWJsem1hPXllcwotK2Vsc2UKLSsgIGFjX2N2X2xpYmx6bWE9bm8KLStm aQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotKyAgICBj b25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotKyAgICBMSUJTPSIkYWNfc2F2ZV9M SUJTIgotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICRhY19jdl9saWJsem1hIiA+JjUKLSskYXNfZWNobyAiJGFjX2N2X2xpYmx6bWEiID4m NjsgfQotKyAgaWYgdGVzdCAiJGFjX2N2X2xpYmx6bWEiID0geWVzOyB0aGVuCi0rICAgIEhBVkVf TElCTFpNQT15ZXMKLSsKLSskYXNfZWNobyAiI2RlZmluZSBIQVZFX0xJQkxaTUEgMSIgPj5jb25m ZGVmcy5oCi0rCi0rICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Y2hlY2tpbmcgaG93IHRvIGxpbmsgd2l0aCBsaWJsem1hIiA+JjUKLSskYXNfZWNob19uICJjaGVj a2luZyBob3cgdG8gbGluayB3aXRoIGxpYmx6bWEuLi4gIiA+JjY7IH0KLSsgICAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRMSUJMWk1BIiA+JjUKLSsk YXNfZWNobyAiJExJQkxaTUEiID4mNjsgfQotKyAgZWxzZQotKyAgICBIQVZFX0xJQkxaTUE9bm8K LSsgICAgICAgICAgICBDUFBGTEFHUz0iJGFjX3NhdmVfQ1BQRkxBR1MiCi0rICAgIExJQkxaTUE9 Ci0rICAgIExUTElCTFpNQT0KLSsgIGZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rICAgIGlmIHRlc3Qg IiRIQVZFX0xJQkxaTUEiICE9IHllczsgdGhlbgotKyAgICAgIGlmIHRlc3QgIiR3aXRoX2x6bWEi ID0geWVzOyB0aGVuCi0rICAgICAgICBhc19mbl9lcnJvciAibWlzc2luZyBsaWJsem1hIGZvciAt LXdpdGgtbHptYSIgIiRMSU5FTk8iIDUKLSsgICAgICBmaQotKyAgICBmaQotKyAgZmkKLStmaQot KwotIExJQkdVST0iLi4vbGliZ3VpL3NyYy9saWJndWkuYSIKLSBHVUlfQ0ZMQUdTX1g9Ii1JJHtz cmNkaXJ9Ly4uL2xpYmd1aS9zcmMiCi0gCi1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIv Y29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC45MS4yMDEyMDgwMS5vcmlnL2dk Yi9jb25maWd1cmUuYWMJMjAxMi0wOC0wMSAxODo0NToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy40LjkxLjIwMTIwODAxL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wOC0wMSAxODo0NzowNS43 MDQ4MjA1NzcgKzAyMDAKLUBAIC0yMTk2LDYgKzIxOTYsMjcgQEAgTElCUz0kT0xEX0xJQlMKLSAj IEFkZCBhbnkgaG9zdC1zcGVjaWZpYyBvYmplY3RzIHRvIEdEQi4KLSBDT05GSUdfT0JTPSIke0NP TkZJR19PQlN9ICR7Z2RiX2hvc3Rfb2JzfSIKLSAKLSsjIElmIGJ1aWxkaW5nIG9uIEVMRiwgbG9v ayBmb3IgbHptYSBzdXBwb3J0IGZvciBlbWJlZGRlZCBjb21wcmVzc2VkIGRlYnVnIGluZm8uCi0r aWYgdGVzdCAkZ2RiX2N2X3Zhcl9lbGYgPSB5ZXM7IHRoZW4KLSsgIEFDX0FSR19XSVRIKGx6bWEs Ci0rICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtbHptYV0sIFtzdXBwb3J0IGx6bWEgY29tcHJl c3Npb24gKGF1dG8veWVzL25vKV0pLAotKyAgICBbXSwgW3dpdGhfbHptYT1hdXRvXSkKLSsgIEFD X01TR19DSEVDS0lORyhbd2hldGhlciB0byB1c2UgbHptYV0pCi0rICBBQ19NU0dfUkVTVUxUKFsk d2l0aF9sem1hXSkKLSsKLSsgIGlmIHRlc3QgIiR7d2l0aF9sem1hfSIgIT0gbm87IHRoZW4KLSsg ICAgQUNfTElCX0hBVkVfTElOS0ZMQUdTKFtsem1hXSwgW10sIFsjaW5jbHVkZSAibHptYS5oIl0s Ci0rCQkJICBbbHptYV9pbmRleF9pdGVyIGl0ZXI7Ci0rCQkJICAgbHptYV9pbmRleF9pdGVyX2lu aXQgKCZpdGVyLCAwKTsKLSsJCQkgICBsem1hX21mX2lzX3N1cHBvcnRlZCAoTFpNQV9NRl9IQzMp O10pCi0rICAgIGlmIHRlc3QgIiRIQVZFX0xJQkxaTUEiICE9IHllczsgdGhlbgotKyAgICAgIGlm IHRlc3QgIiR3aXRoX2x6bWEiID0geWVzOyB0aGVuCi0rICAgICAgICBBQ19NU0dfRVJST1IoW21p c3NpbmcgbGlibHptYSBmb3IgLS13aXRoLWx6bWFdKQotKyAgICAgIGZpCi0rICAgIGZpCi0rICBm aQotK2ZpCi0rCi0gTElCR1VJPSIuLi9saWJndWkvc3JjL2xpYmd1aS5hIgotIEdVSV9DRkxBR1Nf WD0iLUkke3NyY2Rpcn0vLi4vbGliZ3VpL3NyYyIKLSBBQ19TVUJTVChMSUJHVUkpCi1JbmRleDog Z2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvZWxmcmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NC45MS4yMDEyMDgwMS5vcmlnL2dkYi9lbGZyZWFkLmMJMjAxMi0wOC0wMSAxODo0NDo1MS4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjkxLjIwMTIwODAxL2dkYi9lbGZyZWFkLmMJMjAxMi0w OC0wMSAxODo1Nzo1OS41MjgyMDIzOTggKzAyMDAKLUBAIC01MSw2ICs1MSwxMCBAQAotICNpbmNs dWRlICJvYnNlcnZlci5oIgotICNpbmNsdWRlICJlbGYvZXh0ZXJuYWwuaCIKLSAjaW5jbHVkZSA8 c3lzL3N0YXQuaD4KLSsjaW5jbHVkZSAiZ2RiY29yZS5oIgotKyNpZmRlZiBIQVZFX0xJQkxaTUEK LSsjIGluY2x1ZGUgPGx6bWEuaD4KLSsjZW5kaWYKLSAKLSBleHRlcm4gdm9pZCBfaW5pdGlhbGl6 ZV9lbGZyZWFkICh2b2lkKTsKLSAKLUBAIC0yMjEwLDYgKzIyMTQsMjYyIEBAIGZpbmRfc2VwYXJh dGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHIKLSAgIHJldHVybiBOVUxMOwotIH0KLSAKLSsj aWZkZWYgSEFWRV9MSUJMWk1BCi0rCi0rLyogQ3VzdG9tIGx6bWFfYWxsb2NhdG9yLmFsbG9jIHNv IHRoZXkgdXNlIHRoZSBnZGIgb25lcy4gICovCi0rCi0rc3RhdGljIHZvaWQgKgotK2FsbG9jX2x6 bWEgKHZvaWQgKm9wYXF1ZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSkKLSt7Ci0rICByZXR1 cm4geG1hbGxvYyAobm1lbWIgKiBzaXplKTsKLSt9Ci0rCi0rLyogQ3VzdG9tIGx6bWFfYWxsb2Nh dG9yLmZyZWUgc28gdGhleSB1c2UgdGhlIGdkYiBvbmVzLiAgKi8KLSsKLStzdGF0aWMgdm9pZAot K2ZyZWVfbHptYSAodm9pZCAqb3BhcXVlLCB2b2lkICpwdHIpCi0rewotKyAgeGZyZWUgKHB0cik7 Ci0rfQotKwotKy8qIEl0IGNhbm5vdCBiZSBjb25zdCBkdWUgdG8gdGhlIGx6bWEgbGlicmFyeSBm dW5jdGlvbiBwcm90b3R5cGVzLiAgKi8KLSsKLStzdGF0aWMgbHptYV9hbGxvY2F0b3IgZ2RiX2x6 bWFfYWxsb2NhdG9yID0geyBhbGxvY19sem1hLCBmcmVlX2x6bWEsIE5VTEx9OwotKwotKy8qIEN1 c3RvbSBiZmRfb3BlbnJfaW92ZWMgaW1wbGVtZW50YXRpb24gdG8gcmVhZCBjb21wcmVzc2VkIGRh dGEgZnJvbSBhCi0rICAgc2VjdGlvbi4gVGhpcyBrZWVwcyBvbmx5IHRoZSBsYXN0IGRlY29tcHJl c3NlZCBibG9jayBpbiBtZW1vcnkgdG8KLSsgICBhbGxvdyBsYXJnZXIgZGF0YSB3aXRob3V0IHVz aW5nIHRvIG11Y2ggbWVtb3J5LiAgKi8KLSsKLStzdHJ1Y3QgbHptYV9zdHJlYW0KLSt7Ci0rICAv KiBTZWN0aW9uIG9mIGlucHV0IEJGRCB3ZSBhcmUgZGVjb2RpbmcgZGF0YSBmcm9tLiAgKi8KLSsg IGFzZWN0aW9uICpzZWN0aW9uOwotKwotKyAgLyogbHptYSBsaWJyYXJ5IGRlY29tcHJlc3Npb24g c3RhdGUuICAqLwotKyAgbHptYV9pbmRleCAqaW5kZXg7Ci0rCi0rICAvKiBDdXJyZW50bHkgZGVj b2RlZCBibG9jay4gICovCi0rICBiZmRfc2l6ZV90eXBlIGRhdGFfc3RhcnQ7Ci0rICBiZmRfc2l6 ZV90eXBlIGRhdGFfZW5kOwotKyAgZ2RiX2J5dGUgKmRhdGE7Ci0rfTsKLSsKLSsvKiBiZmRfb3Bl bnJfaW92ZWMgT1BFTl9QIGltcGxlbWVudGF0aW9uIGZvcgotKyAgIGZpbmRfc2VwYXJhdGVfZGVi dWdfZmlsZV9pbl9zZWN0aW9uLiAgT1BFTl9DTE9TVVJFIGlzICdhc2VjdGlvbiAqJyBvZiB0aGUK LSsgICBzZWN0aW9uIHRvIGRlY29tcHJlc3MuCi0rCi0rICAgUmV0dXJuICdzdHJ1Y3QgbHptYV9z dHJlYW0gKicgbXVzdCBiZSBmcmVlZCBieSBjYWxsZXIgYnkgeGZyZWUsIHRvZ2V0aGVyCi0rICAg d2l0aCBpdHMgSU5ERVggbHptYSBkYXRhLiAgKi8KLSsKLStzdGF0aWMgdm9pZCAqCi0rbHptYV9v cGVuIChzdHJ1Y3QgYmZkICpuYmZkLCB2b2lkICpvcGVuX2Nsb3N1cmUpCi0rewotKyAgYXNlY3Rp b24gKnNlY3Rpb24gPSBvcGVuX2Nsb3N1cmU7Ci0rICBiZmRfc2l6ZV90eXBlIHNpemUsIG9mZnNl dDsKLSsgIGx6bWFfc3RyZWFtX2ZsYWdzIG9wdGlvbnM7Ci0rICBnZGJfYnl0ZSBmb290ZXJbTFpN QV9TVFJFQU1fSEVBREVSX1NJWkVdOwotKyAgZ2RiX2J5dGUgKmluZGV4ZGF0YTsKLSsgIGx6bWFf aW5kZXggKmluZGV4OwotKyAgaW50IHJldDsKLSsgIHVpbnQ2NF90IG1lbWxpbWl0ID0gVUlOVDY0 X01BWDsKLSsgIHN0cnVjdCBsem1hX3N0cmVhbSAqbHN0cmVhbTsKLSsgIHNpemVfdCBwb3M7Ci0r Ci0rICBzaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3Rpb24pOwotKyAgb2Zmc2V0ID0g c2VjdGlvbi0+ZmlsZXBvcyArIHNpemUgLSBMWk1BX1NUUkVBTV9IRUFERVJfU0laRTsKLSsgIGlm IChzaXplIDwgTFpNQV9TVFJFQU1fSEVBREVSX1NJWkUKLSsgICAgICB8fCBiZmRfc2VlayAoc2Vj dGlvbi0+b3duZXIsIG9mZnNldCwgU0VFS19TRVQpICE9IDAKLSsgICAgICB8fCBiZmRfYnJlYWQg KGZvb3RlciwgTFpNQV9TVFJFQU1fSEVBREVSX1NJWkUsIHNlY3Rpb24tPm93bmVyKQotKyAgICAg ICAgICE9IExaTUFfU1RSRUFNX0hFQURFUl9TSVpFCi0rICAgICAgfHwgbHptYV9zdHJlYW1fZm9v dGVyX2RlY29kZSAoJm9wdGlvbnMsIGZvb3RlcikgIT0gTFpNQV9PSwotKyAgICAgIHx8IG9mZnNl dCA8IG9wdGlvbnMuYmFja3dhcmRfc2l6ZSkKLSsgICAgewotKyAgICAgIGJmZF9zZXRfZXJyb3Ig KGJmZF9lcnJvcl93cm9uZ19mb3JtYXQpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0r Ci0rICBvZmZzZXQgLT0gb3B0aW9ucy5iYWNrd2FyZF9zaXplOwotKyAgaW5kZXhkYXRhID0geG1h bGxvYyAob3B0aW9ucy5iYWNrd2FyZF9zaXplKTsKLSsgIGluZGV4ID0gTlVMTDsKLSsgIHBvcyA9 IDA7Ci0rICBpZiAoYmZkX3NlZWsgKHNlY3Rpb24tPm93bmVyLCBvZmZzZXQsIFNFRUtfU0VUKSAh PSAwCi0rICAgICAgfHwgYmZkX2JyZWFkIChpbmRleGRhdGEsIG9wdGlvbnMuYmFja3dhcmRfc2l6 ZSwgc2VjdGlvbi0+b3duZXIpCi0rICAgICAgICAgIT0gb3B0aW9ucy5iYWNrd2FyZF9zaXplCi0r ICAgICAgfHwgbHptYV9pbmRleF9idWZmZXJfZGVjb2RlICgmaW5kZXgsICZtZW1saW1pdCwgJmdk Yl9sem1hX2FsbG9jYXRvciwKLSsJCQkJICAgaW5kZXhkYXRhLCAmcG9zLCBvcHRpb25zLmJhY2t3 YXJkX3NpemUpCi0rICAgICAgICAgIT0gTFpNQV9PSwotKyAgICAgIHx8IGx6bWFfaW5kZXhfc2l6 ZSAoaW5kZXgpICE9IG9wdGlvbnMuYmFja3dhcmRfc2l6ZSkKLSsgICAgewotKyAgICAgIHhmcmVl IChpbmRleGRhdGEpOwotKyAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl93cm9uZ19mb3Jt YXQpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rICB4ZnJlZSAoaW5kZXhkYXRhKTsK LSsKLSsgIGxzdHJlYW0gPSB4emFsbG9jIChzaXplb2YgKHN0cnVjdCBsem1hX3N0cmVhbSkpOwot KyAgbHN0cmVhbS0+c2VjdGlvbiA9IHNlY3Rpb247Ci0rICBsc3RyZWFtLT5pbmRleCA9IGluZGV4 OwotKwotKyAgcmV0dXJuIGxzdHJlYW07Ci0rfQotKwotKy8qIGJmZF9vcGVucl9pb3ZlYyBQUkVB RF9QIGltcGxlbWVudGF0aW9uIGZvcgotKyAgIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9pbl9z ZWN0aW9uLiAgUGFzc2VkIFNUUkVBTQotKyAgIGlzICdzdHJ1Y3QgbHptYV9zdHJlYW0gKicuICAq LwotKwotK3N0YXRpYyBmaWxlX3B0cgotK2x6bWFfcHJlYWQgKHN0cnVjdCBiZmQgKm5iZmQsIHZv aWQgKnN0cmVhbSwgdm9pZCAqYnVmLCBmaWxlX3B0ciBuYnl0ZXMsCi0rCSAgICBmaWxlX3B0ciBv ZmZzZXQpCi0rewotKyAgc3RydWN0IGx6bWFfc3RyZWFtICpsc3RyZWFtID0gc3RyZWFtOwotKyAg YmZkX3NpemVfdHlwZSBjaHVua19zaXplOwotKyAgbHptYV9pbmRleF9pdGVyIGl0ZXI7Ci0rICBn ZGJfYnl0ZSAqY29tcHJlc3NlZCwgKnVuY29tcHJlc3NlZDsKLSsgIGZpbGVfcHRyIGJsb2NrX29m ZnNldDsKLSsgIGx6bWFfZmlsdGVyIGZpbHRlcnNbTFpNQV9GSUxURVJTX01BWCArIDFdOwotKyAg bHptYV9ibG9jayBibG9jazsKLSsgIHNpemVfdCBjb21wcmVzc2VkX3BvcywgdW5jb21wcmVzc2Vk X3BvczsKLSsgIGZpbGVfcHRyIHJlczsKLSsKLSsgIHJlcyA9IDA7Ci0rICB3aGlsZSAobmJ5dGVz ID4gMCkKLSsgICAgewotKyAgICAgIGlmIChsc3RyZWFtLT5kYXRhID09IE5VTEwKLSsJICB8fCBs c3RyZWFtLT5kYXRhX3N0YXJ0ID4gb2Zmc2V0IHx8IG9mZnNldCA+PSBsc3RyZWFtLT5kYXRhX2Vu ZCkKLSsJewotKwkgIGFzZWN0aW9uICpzZWN0aW9uID0gbHN0cmVhbS0+c2VjdGlvbjsKLSsKLSsJ ICBsem1hX2luZGV4X2l0ZXJfaW5pdCAoJml0ZXIsIGxzdHJlYW0tPmluZGV4KTsKLSsJICBpZiAo bHptYV9pbmRleF9pdGVyX2xvY2F0ZSAoJml0ZXIsIG9mZnNldCkpCi0rCSAgICBicmVhazsKLSsK LSsJICBjb21wcmVzc2VkID0geG1hbGxvYyAoaXRlci5ibG9jay50b3RhbF9zaXplKTsKLSsJICBi bG9ja19vZmZzZXQgPSBzZWN0aW9uLT5maWxlcG9zICsgaXRlci5ibG9jay5jb21wcmVzc2VkX2Zp bGVfb2Zmc2V0OwotKwkgIGlmIChiZmRfc2VlayAoc2VjdGlvbi0+b3duZXIsIGJsb2NrX29mZnNl dCwgU0VFS19TRVQpICE9IDAKLSsJICAgICAgfHwgYmZkX2JyZWFkIChjb21wcmVzc2VkLCBpdGVy LmJsb2NrLnRvdGFsX3NpemUsIHNlY3Rpb24tPm93bmVyKQotKwkJICE9IGl0ZXIuYmxvY2sudG90 YWxfc2l6ZSkKLSsJICAgIHsKLSsJICAgICAgeGZyZWUgKGNvbXByZXNzZWQpOwotKwkgICAgICBi cmVhazsKLSsJICAgIH0KLSsKLSsJICB1bmNvbXByZXNzZWQgPSB4bWFsbG9jIChpdGVyLmJsb2Nr LnVuY29tcHJlc3NlZF9zaXplKTsKLSsKLSsJICBtZW1zZXQgKCZibG9jaywgMCwgc2l6ZW9mIChi bG9jaykpOwotKwkgIGJsb2NrLmZpbHRlcnMgPSBmaWx0ZXJzOwotKwkgIGJsb2NrLmhlYWRlcl9z aXplID0gbHptYV9ibG9ja19oZWFkZXJfc2l6ZV9kZWNvZGUgKGNvbXByZXNzZWRbMF0pOwotKwkg IGlmIChsem1hX2Jsb2NrX2hlYWRlcl9kZWNvZGUgKCZibG9jaywgJmdkYl9sem1hX2FsbG9jYXRv ciwgY29tcHJlc3NlZCkKLSsJICAgICAgIT0gTFpNQV9PSykKLSsJICAgIHsKLSsJICAgICAgeGZy ZWUgKGNvbXByZXNzZWQpOwotKwkgICAgICB4ZnJlZSAodW5jb21wcmVzc2VkKTsKLSsJICAgICAg YnJlYWs7Ci0rCSAgICB9Ci0rCi0rCSAgY29tcHJlc3NlZF9wb3MgPSBibG9jay5oZWFkZXJfc2l6 ZTsKLSsJICB1bmNvbXByZXNzZWRfcG9zID0gMDsKLSsJICBpZiAobHptYV9ibG9ja19idWZmZXJf ZGVjb2RlICgmYmxvY2ssICZnZGJfbHptYV9hbGxvY2F0b3IsCi0rCQkJCQljb21wcmVzc2VkLCAm Y29tcHJlc3NlZF9wb3MsCi0rCQkJCQlpdGVyLmJsb2NrLnRvdGFsX3NpemUsCi0rCQkJCQl1bmNv bXByZXNzZWQsICZ1bmNvbXByZXNzZWRfcG9zLAotKwkJCQkJaXRlci5ibG9jay51bmNvbXByZXNz ZWRfc2l6ZSkKLSsJICAgICAgIT0gTFpNQV9PSykKLSsJICAgIHsKLSsJICAgICAgeGZyZWUgKGNv bXByZXNzZWQpOwotKwkgICAgICB4ZnJlZSAodW5jb21wcmVzc2VkKTsKLSsJICAgICAgYnJlYWs7 Ci0rCSAgICB9Ci0rCi0rCSAgeGZyZWUgKGNvbXByZXNzZWQpOwotKwotKwkgIHhmcmVlIChsc3Ry ZWFtLT5kYXRhKTsKLSsJICBsc3RyZWFtLT5kYXRhID0gdW5jb21wcmVzc2VkOwotKwkgIGxzdHJl YW0tPmRhdGFfc3RhcnQgPSBpdGVyLmJsb2NrLnVuY29tcHJlc3NlZF9maWxlX29mZnNldDsKLSsJ ICBsc3RyZWFtLT5kYXRhX2VuZCA9IChpdGVyLmJsb2NrLnVuY29tcHJlc3NlZF9maWxlX29mZnNl dAotKwkJCSAgICAgICArIGl0ZXIuYmxvY2sudW5jb21wcmVzc2VkX3NpemUpOwotKwl9Ci0rCi0r ICAgICAgY2h1bmtfc2l6ZSA9IG1pbiAobmJ5dGVzLCBsc3RyZWFtLT5kYXRhX2VuZCAtIG9mZnNl dCk7Ci0rICAgICAgbWVtY3B5IChidWYsIGxzdHJlYW0tPmRhdGEgKyBvZmZzZXQgLSBsc3RyZWFt LT5kYXRhX3N0YXJ0LCBjaHVua19zaXplKTsKLSsgICAgICBidWYgPSAoZ2RiX2J5dGUgKikgYnVm ICsgY2h1bmtfc2l6ZTsKLSsgICAgICBvZmZzZXQgKz0gY2h1bmtfc2l6ZTsKLSsgICAgICBuYnl0 ZXMgLT0gY2h1bmtfc2l6ZTsKLSsgICAgICByZXMgKz0gY2h1bmtfc2l6ZTsKLSsgICAgfQotKwot KyAgcmV0dXJuIHJlczsKLSt9Ci0rCi0rLyogYmZkX29wZW5yX2lvdmVjIENMT1NFX1AgaW1wbGVt ZW50YXRpb24gZm9yCi0rICAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2luX3NlY3Rpb24uICBQ YXNzZWQgU1RSRUFNCi0rICAgaXMgJ3N0cnVjdCBsem1hX3N0cmVhbSAqJy4gICovCi0rCi0rc3Rh dGljIGludAotK2x6bWFfY2xvc2UgKHN0cnVjdCBiZmQgKm5iZmQsCi0rCSAgICB2b2lkICpzdHJl YW0pCi0rewotKyAgc3RydWN0IGx6bWFfc3RyZWFtICpsc3RyZWFtID0gc3RyZWFtOwotKwotKyAg bHptYV9pbmRleF9lbmQgKGxzdHJlYW0tPmluZGV4LCAmZ2RiX2x6bWFfYWxsb2NhdG9yKTsKLSsg IHhmcmVlIChsc3RyZWFtLT5kYXRhKTsKLSsgIHhmcmVlIChsc3RyZWFtKTsKLSsgIHJldHVybiAw OwotK30KLSsKLSsvKiBiZmRfb3BlbnJfaW92ZWMgU1RBVF9QIGltcGxlbWVudGF0aW9uIGZvcgot KyAgIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9pbl9zZWN0aW9uLiAgUGFzc2VkIFNUUkVBTQot KyAgIGlzICdzdHJ1Y3QgbHptYV9zdHJlYW0gKicuICAqLwotKwotK3N0YXRpYyBpbnQKLStsem1h X3N0YXQgKHN0cnVjdCBiZmQgKmFiZmQsCi0rCSAgIHZvaWQgKnN0cmVhbSwKLSsJICAgc3RydWN0 IHN0YXQgKnNiKQotK3sKLSsgIHN0cnVjdCBsem1hX3N0cmVhbSAqbHN0cmVhbSA9IHN0cmVhbTsK LSsKLSsgIHNiLT5zdF9zaXplID0gbHptYV9pbmRleF91bmNvbXByZXNzZWRfc2l6ZSAobHN0cmVh bS0+aW5kZXgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIFRoaXMgbG9va3MgZm9yIGEgeHog Y29tcHJlc3NlZCBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIG9iamVjdCBmaWxlIGVtYmVkZGVkCi0rICAg aW4gYSBzZWN0aW9uIGNhbGxlZCAuZ251X2RlYnVnZGF0YS4gSWYgd2UgZmluZCBvbmUgd2UgY3Jl YXRlIGEgaW92ZWMKLSsgICBiYXNlZCBiZmQgdGhhdCBkZWNvbXByZXNzZXMgdGhlIG9iamVjdCBk YXRhIG9uIGRlbWFuZC4gICovCi0rCi0rc3RhdGljIGJmZCAqCi0rZmluZF9zZXBhcmF0ZV9kZWJ1 Z19maWxlX2luX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK3sKLSsgIGFzZWN0 aW9uICpzZWN0aW9uOwotKyAgYmZkICphYmZkOwotKwotKyAgc2VjdGlvbiA9IGJmZF9nZXRfc2Vj dGlvbl9ieV9uYW1lIChvYmpmaWxlLT5vYmZkLCAiLmdudV9kZWJ1Z2RhdGEiKTsKLSsgIGlmIChz ZWN0aW9uID09IE5VTEwpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgLyogb2JqZmlsZS0+TkFN RSBsaWZldGltZSBpcyBsb25nZXIgdGhhbiB0aGUgQUJGRCdzIGxpZmV0aW1lLiAgKi8KLSsgIGFi ZmQgPSBnZGJfYmZkX29wZW5yX2lvdmVjIChvYmpmaWxlLT5uYW1lLCBnbnV0YXJnZXQsIGx6bWFf b3Blbiwgc2VjdGlvbiwKLSsJCQkgICAgICBsem1hX3ByZWFkLCBsem1hX2Nsb3NlLCBsem1hX3N0 YXQpOwotKyAgaWYgKGFiZmQgPT0gTlVMTCkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBpZiAo IWJmZF9jaGVja19mb3JtYXQgKGFiZmQsIGJmZF9vYmplY3QpKQotKyAgICB7Ci0rICAgICAgZ2Ri X2JmZF91bnJlZiAoYWJmZCk7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsgIHJl dHVybiBhYmZkOwotK30KLSsKLSsjZWxzZSAvKiAhSEFWRV9MSUJMWk1BICovCi0rCi0rc3RhdGlj IGJmZCAqCi0rZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2luX3NlY3Rpb24gKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlKQotK3sKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLSsjZW5kaWYgLyogIUhB VkVfTElCTFpNQSAqLwotKwotIC8qIFNjYW4gYW5kIGJ1aWxkIHBhcnRpYWwgc3ltYm9scyBmb3Ig YSBzeW1ib2wgZmlsZS4KLSAgICBXZSBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgYnkgYSBjYWxsIHRv IGVsZl9zeW1maWxlX2luaXQsIHdoaWNoCi0gICAgY3VycmVudGx5IGRvZXMgbm90aGluZy4KLUBA IC0yNDMzLDYgKzI2OTMsOCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsCi0gICBlbHNlIGlmICghb2JqZmlsZV9oYXNfcGFydGlhbF9zeW1ib2xzIChvYmpmaWxlKSkK LSAgICAgewotICAgICAgIGNoYXIgKmRlYnVnZmlsZSwgKmJ1aWxkX2lkX2ZpbGVuYW1lOwotKyAg ICAgIGJmZCAqYWJmZCA9IE5VTEw7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci0g Ci0gICAgICAgZGVidWdmaWxlID0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQg KG9iamZpbGUsCi0gCQkJCQkJICAgICAgICZidWlsZF9pZF9maWxlbmFtZSk7Ci1AQCAtMjQ0MCwx NCArMjcwMiwxMSBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCi0g ICAgICAgaWYgKGRlYnVnZmlsZSA9PSBOVUxMKQotIAlkZWJ1Z2ZpbGUgPSBmaW5kX3NlcGFyYXRl X2RlYnVnX2ZpbGVfYnlfZGVidWdsaW5rIChvYmpmaWxlKTsKLSAKLSsgICAgICBjbGVhbnVwID0g bWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKLSAgICAgICBpZiAoZGVidWdmaWxlKQot IAl7Ci0tCSAgc3RydWN0IGNsZWFudXAgKmNsZWFudXAgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBk ZWJ1Z2ZpbGUpOwotLQkgIGJmZCAqYWJmZCA9IHN5bWZpbGVfYmZkX29wZW4gKGRlYnVnZmlsZSk7 Ci0tCi0rCSAgYWJmZCA9IHN5bWZpbGVfYmZkX29wZW4gKGRlYnVnZmlsZSk7Ci0gCSAgbWFrZV9j bGVhbnVwX2JmZF91bnJlZiAoYWJmZCk7Ci0tCSAgc3ltYm9sX2ZpbGVfYWRkX3NlcGFyYXRlIChh YmZkLCBzeW1maWxlX2ZsYWdzLCBvYmpmaWxlKTsKLS0JICBkb19jbGVhbnVwcyAoY2xlYW51cCk7 Ci0gCX0KLSAgICAgICAvKiBDaGVjayBpZiBhbnkgc2VwYXJhdGUgZGVidWcgaW5mbyBoYXMgYmVl biBleHRyYWN0ZWQgb3V0LiAgKi8KLSAgICAgICBlbHNlIGlmIChiZmRfZ2V0X3NlY3Rpb25fYnlf bmFtZSAob2JqZmlsZS0+b2JmZCwgIi5nbnVfZGVidWdsaW5rIikKLUBAIC0yNDU1LDYgKzI3MTQs MTcgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbAotIAlkZWJ1Z19w cmludF9taXNzaW5nIChvYmpmaWxlLT5uYW1lLCBidWlsZF9pZF9maWxlbmFtZSk7Ci0gCi0gICAg ICAgeGZyZWUgKGJ1aWxkX2lkX2ZpbGVuYW1lKTsKLSsKLSsgICAgICBpZiAoYWJmZCA9PSBOVUxM KQotKwl7Ci0rCSAgYWJmZCA9IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9pbl9zZWN0aW9uIChv YmpmaWxlKTsKLSsJICBtYWtlX2NsZWFudXBfYmZkX3VucmVmIChhYmZkKTsKLSsJfQotKwotKyAg ICAgIGlmIChhYmZkICE9IE5VTEwpCi0rCXN5bWJvbF9maWxlX2FkZF9zZXBhcmF0ZSAoYWJmZCwg c3ltZmlsZV9mbGFncywgb2JqZmlsZSk7Ci0rCi0rICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXAp OwotICAgICB9Ci0gCi0gICBpZiAoc3ltdGFiX2NyZWF0ZV9kZWJ1ZykKLUluZGV4OiBnZGItNy40 LjkxLjIwMTIwODAxL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZ251LWRlYnVnZGF0YS5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAw ICswMDAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIv ZHcyLWdudS1kZWJ1Z2RhdGEuYwkyMDEyLTA4LTAxIDE4OjQ3OjA1LjcwNTgyMDU3MiArMDIwMAot QEAgLTAsMCArMSwzMCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBH TlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwot KwotKyNpbmNsdWRlIDxzaWduYWwuaD4KLSsKLStzdGF0aWMgaW50Ci0rZGVidWdkYXRhX2Z1bmN0 aW9uICh2b2lkKQotK3sKLSsgIHJldHVybiByYWlzZSAoU0lHU0VHVikgKyAxOwotK30KLSsKLStp bnQKLSttYWluICh2b2lkKQotK3sKLSsgIHJldHVybiBkZWJ1Z2RhdGFfZnVuY3Rpb24gKCkgKyAx OwotK30KLUluZGV4OiBnZGItNy40LjkxLjIwMTIwODAxL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9kdzItZ251LWRlYnVnZGF0YS5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjkxLjIwMTIwODAxL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZ251LWRlYnVnZGF0YS5leHAJMjAxMi0wOC0wMSAx ODo0NzowNS43MDU4MjA1NzIgKzAyMDAKLUBAIC0wLDAgKzEsOTEgQEAKLSsjIENvcHlyaWdodCAy MDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCi0rCi0rc3RhbmRhcmRfdGVzdGZpbGUKLSsKLStsb2FkX2xpYiBkd2FyZi5l eHAKLStpZiAhW2R3YXJmMl9zdXBwb3J0XSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK2lmIFti dWlsZF9leGVjdXRhYmxlICR7dGVzdGZpbGV9LmV4cCAkdGVzdGZpbGVdIHsKLSsgICAgcmV0dXJu IC0xCi0rfQotKwotK3Byb2MgcnVuIHsgdGVzdCBjbWRsaW5lIH0gewotKyAgICB2ZXJib3NlICJj bWRsaW5lIGlzICRjbWRsaW5lIgotKyAgICBzZXQgcmVzdWx0IFtjYXRjaCAiZXhlYyAkY21kbGlu ZSIgb3V0cHV0XQotKyAgICB2ZXJib3NlICJyZXN1bHQgaXMgJHJlc3VsdCIKLSsgICAgdmVyYm9z ZSAib3V0cHV0IGlzICRvdXRwdXQiCi0rICAgIGlmIHskcmVzdWx0ID09IDB9IHsKLSsJcGFzcyAk dGVzdAotKwlyZXR1cm4gMAotKyAgICB9IGVsc2UgewotKwlmYWlsICR0ZXN0Ci0rCXJldHVybiAt MQotKyAgICB9Ci0rfQotKwotK3NldCBzdHJpcF9wcm9ncmFtIFt0cmFuc2Zvcm0gc3RyaXBdCi0r c2V0IG5tX3Byb2dyYW0gW3RyYW5zZm9ybSBubV0KLSsKLSsjIEV4dHJhY3QgdGhlIGR5bmFtaWMg c3ltYm9scyBmcm9tIHRoZSBtYWluIGJpbmFyeSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhbHNvIGhh dmUgdGhlc2UKLSsjIGluIHRoZSBub3JtYWwgc3ltYm9sIHRhYmxlCi0rZmlsZSBkZWxldGUgLS0g JHtiaW5maWxlfS5keW5zeW1zCi0raWYgW3J1biAibm0gLUQiICJbdHJhbnNmb3JtIG5tXSAtRCAk e2JpbmZpbGV9IC0tZm9ybWF0PXBvc2l4IC0tZGVmaW5lZC1vbmx5IHwgYXdrIFxce3ByaW50XFwg XFxcJDFcXH0gfCBzb3J0ID4gJHtiaW5maWxlfS5keW5zeW1zIl0gewotKyAgICByZXR1cm4gLTEK LSt9Ci0rCi0rIyBFeHRyYWN0IGFsbCB0aGUgdGV4dCAoaS5lLiBmdW5jdGlvbikgc3ltYm9scyBm cm9tIHRoZSBkZWJ1Z2luZm8KLStmaWxlIGRlbGV0ZSAtLSAke2JpbmZpbGV9LmZ1bmNzeW1zCi0r aWYgW3J1biAibm0iICJbdHJhbnNmb3JtIG5tXSAke2JpbmZpbGV9IC0tZm9ybWF0PXBvc2l4IC0t ZGVmaW5lZC1vbmx5IHwgYXdrIFxce2lmKFxcXCQyPT1cIlRcInx8XFxcJDI9PVwidFwiKXByaW50 XFwgXFxcJDFcXH0gfCBzb3J0ID4gJHtiaW5maWxlfS5mdW5jc3ltcyJdIHsKLSsgICAgcmV0dXJu IC0xCi0rfQotKwotKyMgS2VlcCBhbGwgdGhlIGZ1bmN0aW9uIHN5bWJvbHMgbm90IGFscmVhZHkg aW4gdGhlIGR5bmFtaWMgc3ltYm9sIHRhYmxlCi0rZmlsZSBkZWxldGUgLS0gJHtiaW5maWxlfS5r ZWVwX3N5bWJvbHMKLStpZiBbcnVuICJjb21tIiAiY29tbSAtMTMgJHtiaW5maWxlfS5keW5zeW1z ICR7YmluZmlsZX0uZnVuY3N5bXMgPiAke2JpbmZpbGV9LmtlZXBfc3ltYm9scyJdIHsKLSsgICAg cmV0dXJuIC0xCi0rfQotKwotKyMgQ29weSB0aGUgZnVsbCBkZWJ1Z2luZm8sIGtlZXBpbmcgb25s eSBhIG1pbnVtYWwgc2V0IG9mIHN5bWJvbHMgYW5kIHJlbW92aW5nIHNvbWUgdW5uZWNlc3Nhcnkg c2VjdGlvbnMKLStmaWxlIGRlbGV0ZSAtLSAke2JpbmZpbGV9Lm1pbmlfZGVidWdpbmZvCi0raWYg W3J1biAib2JqY29weSAxIiAiW3RyYW5zZm9ybSBvYmpjb3B5XSAtUyAtLXJlbW92ZS1zZWN0aW9u IC5nZGJfaW5kZXggLS1yZW1vdmUtc2VjdGlvbiAuY29tbWVudCAtLWtlZXAtc3ltYm9scz0ke2Jp bmZpbGV9LmtlZXBfc3ltYm9scyAke2JpbmZpbGV9ICR7YmluZmlsZX0ubWluaV9kZWJ1Z2luZm8i XSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIEdEQiBzcGVjaWZpYyAtIHdlIGRvIG5vdCBo YXZlIHNwbGl0IGV4ZWN1dGFibGUgaW4gYWR2YW5jZS4KLStmaWxlIGRlbGV0ZSAtLSAke2JpbmZp bGV9LnN0cmlwCi0raWYgW3J1biAic3RyaXAiICJbdHJhbnNmb3JtIHN0cmlwXSAtLXN0cmlwLWFs bCAtbyAke2JpbmZpbGV9LnN0cmlwICR7YmluZmlsZX0iXSB7Ci0rICAgIHJldHVybiAtMQotK30K LSsKLSsjIEluamVjdCB0aGUgY29tcHJlc3NlZCBkYXRhIGludG8gdGhlIC5nbnVfZGVidWdkYXRh IHNlY3Rpb24gb2YgdGhlIG9yaWdpbmFsIGJpbmFyeQotK2ZpbGUgZGVsZXRlIC0tICR7YmluZmls ZX0ubWluaV9kZWJ1Z2luZm8ueHoKLStpZiBbcnVuICJ4eiIgInh6ICR7YmluZmlsZX0ubWluaV9k ZWJ1Z2luZm8iXSB7Ci0rICAgIHJldHVybiAtMQotK30KLStmaWxlIGRlbGV0ZSAtLSAke2JpbmZp bGV9LnRlc3QKLStpZiBbcnVuICJvYmpjb3B5IDIiICJbdHJhbnNmb3JtIG9iamNvcHldIC0tYWRk LXNlY3Rpb24gLmdudV9kZWJ1Z2RhdGE9JHtiaW5maWxlfS5taW5pX2RlYnVnaW5mby54eiAke2Jp bmZpbGV9LnN0cmlwICR7YmluZmlsZX0udGVzdCJdIHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwot K2NsZWFuX3Jlc3RhcnQgIiR0ZXN0ZmlsZS5zdHJpcCIKLSsKLStnZGJfdGVzdCAicCBkZWJ1Z2Rh dGFfZnVuY3Rpb24iIHtObyBzeW1ib2wgdGFibGUgaXMgbG9hZGVkXC4gIFVzZSB0aGUgImZpbGUi IGNvbW1hbmRcLn0gIm5vIHN5bXRhYiIKLSsKLStjbGVhbl9yZXN0YXJ0ICIkdGVzdGZpbGUudGVz dCIKLSsKLStnZGJfdGVzdCAicCBkZWJ1Z2RhdGFfZnVuY3Rpb24iIHsgPSB7PHRleHQgdmFyaWFi bGUsIG5vIGRlYnVnIGluZm8+fSAweFswLTlhLWZdKyA8ZGVidWdkYXRhX2Z1bmN0aW9uPn0gImhh dmUgc3ltdGFiIgoKZGlmZiAtLWdpdCBhL2dkYi1wcmludC1jbGFzcy5wYXRjaCBiL2dkYi1wcmlu dC1jbGFzcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYxODM4MS4uMDAw MDAwMAotLS0gYS9nZGItcHJpbnQtY2xhc3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAg KzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wOS9tc2cwMDE2 OS5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA5LzI3IDEyOjUzOjU3CTEuMTQ3 MTgKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA5LzI3IDE2OjA0OjE4CTEuMTQ3MTkKLSMj IC0xLDMgKzEsOCBAQAotKzIwMTItMDktMjcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNv bT4KLSsKLSsJRml4IGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9 ODQ5MzU3Ci0rCSogY3AtdmFscHJpbnQuYyAoY3BfcHJpbnRfdmFsdWVfZmllbGRzKTogVXNlIGdl dF92cHRyX2ZpZWxkbm8uCi0rCi0gMjAxMi0wOS0yNyAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNr ZXJAYWRhY29yZS5jb20+Ci0gCi0gCSogc29sLXRocmVhZC5jIChzb2xfdGhyZWFkX2ZldGNoX3Jl Z2lzdGVycykKLS0tLSBzcmMvZ2RiL2NwLXZhbHByaW50LmMJMjAxMi8wNy8wNiAwNTozNjowNwkx Ljg1Ci0rKysgc3JjL2dkYi9jcC12YWxwcmludC5jCTIwMTIvMDkvMjcgMTY6MDQ6MjIJMS44Ngot QEAgLTIxMCw3ICsyMTAsOSBAQAotICAgICB7Ci0gICAgICAgaW50IHN0YXRtZW1fb2JzdGFja19p bml0aWFsX3NpemUgPSAwOwotICAgICAgIGludCBzdGF0X2FycmF5X29ic3RhY2tfaW5pdGlhbF9z aXplID0gMDsKLS0gICAgICAKLSsgICAgICBzdHJ1Y3QgdHlwZSAqdnB0cl9iYXNldHlwZSA9IE5V TEw7Ci0rICAgICAgaW50IHZwdHJfZmllbGRubzsKLSsKLSAgICAgICBpZiAoZG9udF9wcmludF9z dGF0bWVtID09IDApCi0gCXsKLSAJICBzdGF0bWVtX29ic3RhY2tfaW5pdGlhbF9zaXplID0KLUBA IC0yMjUsNiArMjI3LDcgQEAKLSAJICAgIH0KLSAJfQotIAotKyAgICAgIHZwdHJfZmllbGRubyA9 IGdldF92cHRyX2ZpZWxkbm8gKHR5cGUsICZ2cHRyX2Jhc2V0eXBlKTsKLSAgICAgICBmb3IgKGkg PSBuX2Jhc2VjbGFzc2VzOyBpIDwgbGVuOyBpKyspCi0gCXsKLSAJICAvKiBJZiByZXF1ZXN0ZWQs IHNraXAgcHJpbnRpbmcgb2Ygc3RhdGljIGZpZWxkcy4gICovCi1AQCAtMzU4LDcgKzM2MSw3IEBA Ci0gCQkJCQkgICB2LCBzdHJlYW0sIHJlY3Vyc2UgKyAxLAotIAkJCQkJICAgb3B0aW9ucyk7Ci0g CQl9Ci0tCSAgICAgIGVsc2UgaWYgKGkgPT0gVFlQRV9WUFRSX0ZJRUxETk8gKHR5cGUpKQotKwkg ICAgICBlbHNlIGlmIChpID09IHZwdHJfZmllbGRubyAmJiB0eXBlID09IHZwdHJfYmFzZXR5cGUp Ci0gCQl7Ci0gCQkgIGludCBpX29mZnNldCA9IG9mZnNldCArIFRZUEVfRklFTERfQklUUE9TICh0 eXBlLCBpKSAvIDg7Ci0gCQkgIHN0cnVjdCB0eXBlICppX3R5cGUgPSBUWVBFX0ZJRUxEX1RZUEUg KHR5cGUsIGkpOwotIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEyLzA5LzI2IDE5 OjUwOjEyCTEuMzM5NgotIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEyLzA5LzI3 IDE2OjA0OjIyCTEuMzM5NwotIyMgLTEsMyArMSwxMCBAQAotKzIwMTItMDktMjcgIFRvbSBUcm9t ZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIuY3AvZGVyaXZhdGlvbi5leHA6IEFk ZCByZWdyZXNzaW9uIHRlc3QuCi0rCSogZ2RiLmNwL2Rlcml2YXRpb24uY2MgKGNsYXNzIFZfYmFz ZSwgY2xhc3MgVl9pbnRlciwgY2xhc3MKLSsJVl9kZXJpdmVkKTogTmV3LgotKwkodmRlcml2ZWQp OiBOZXcgZ2xvYmFsLgotKwotIDIwMTItMDktMjYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0 LmNvbT4KLSAKLSAJKiBnZGIuZHdhcmYyL2R3Mi1jb21tb24tYmxvY2suUzogTmV3IGZpbGUuCi0t LS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2Rlcml2YXRpb24uY2MJMjAxMS8xMi8xMyAxNzoy MjowOAkxLjIKLSsrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZGVyaXZhdGlvbi5jYwkyMDEy LzA5LzI3IDE2OjA0OjIzCTEuMwotQEAgLTExOCw4ICsxMTgsMzcgQEAKLSAgICAgCi0gfTsKLSAK LStjbGFzcyBWX2Jhc2UKLSt7Ci0rcHVibGljOgotKyAgdmlydHVhbCB2b2lkIG0oKTsKLSsgIGlu dCBiYXNlOwotK307Ci0gCi0rdm9pZAotK1ZfYmFzZTo6bSgpCi0rewotK30KLSsKLStjbGFzcyBW X2ludGVyIDogcHVibGljIHZpcnR1YWwgVl9iYXNlCi0rewotK3B1YmxpYzoKLSsgIHZpcnR1YWwg dm9pZCBmKCk7Ci0rICBpbnQgaW50ZXI7Ci0rfTsKLSsKLSt2b2lkCi0rVl9pbnRlcjo6ZigpCi0r ewotK30KLSsKLStjbGFzcyBWX2Rlcml2ZWQgOiBwdWJsaWMgVl9pbnRlcgotK3sKLStwdWJsaWM6 Ci0rICBkb3VibGUgeDsKLSt9OwotIAotK1ZfZGVyaXZlZCB2ZGVyaXZlZDsKLSAKLSBpbnQgQTo6 YWZvbygpIHsKLSAgICAgcmV0dXJuIDE7Ci0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2Rl cml2YXRpb24uZXhwCTIwMTIvMDcvMTAgMTU6MTg6MTgJMS4xOQotKysrIHNyYy9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9kZXJpdmF0aW9uLmV4cAkyMDEyLzA5LzI3IDE2OjA0OjIzCTEuMjAKLUBAIC0x NzYsMyArMTc2LDExIEBACi0gCi0gZ2RiX3Rlc3QgInByaW50IGdfaW5zdGFuY2UuYmZvbygpIiAi XFwkXFswLTlcXSsgPSAyIiAicHJpbnQgdmFsdWUgb2YgZ19pbnN0YW5jZS5iZm9vKCkiCi0gZ2Ri X3Rlc3QgInByaW50IGdfaW5zdGFuY2UuY2ZvbygpIiAiXFwkXFswLTlcXSsgPSAzIiAicHJpbnQg dmFsdWUgb2YgZ19pbnN0YW5jZS5jZm9vKCkiCi0rCi0rIyBUaGlzIGlzIGEgcmVncmVzc2lvbiB0 ZXN0IGZvciBhIGJ1ZyB0aGF0IGNhdXNlZCBhIGNyYXNoIHdoZW4gdHJ5aW5nCi0rIyB0byBwcmlu dCB0aGUgdnRibCBwb2ludGVyLiAgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgb3V0cHV0IHNvIG11 Y2gKLSsjIGhlcmUgKGl0IGlzIHRlc3RlZCBlbHNld2hlcmUpLCBqdXN0IHRoYXQgZ2RiIGRvZXNu J3QgY3Jhc2guICBXZSB0ZXN0Ci0rIyAicHR5cGUiIGZpcnN0IGJlY2F1c2UsIGJlZm9yZSB0aGUg Z2RiIGZpeCwgdGhhdCB3YXMgdGhlIG9ubHkgY29kZQotKyMgcGF0aCBjYWxsaW5nIGdldF92cHRy X2ZpZWxkbm8uCi0rZ2RiX3Rlc3QgInB0eXBlIHZkZXJpdmVkIiAidHlwZSA9IC4qIgotK2dkYl90 ZXN0ICJwcmludCB2ZGVyaXZlZCIgIiA9IHsuKiBpbnRlciA9IDAuKnggPSAwfSIKCmRpZmYgLS1n aXQgYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMDZvZjI1LnBhdGNoIGIvZ2RiLXJoYno3OTU0MjQt Yml0cG9zLTA2b2YyNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc1YmE5 ZC4uMDAwMDAwMAotLS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMDZvZjI1LnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1j dnMvMjAxMi0wNy9tc2cwMDE3My5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA3 LzIwIDE3OjU0OjA1CTEuMTQ1MDcKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA3LzIyIDE2 OjUyOjM5CTEuMTQ1MDgKLSMjIC0xLDMgKzEsNyBAQAotKzIwMTItMDctMjIgIFNpZGRoZXNoIFBv eWFyZWthciAgPHNpZGRoZXNoQHJlZGhhdC5jb20+Ci0rCi0rCSogc2gtdGRlcC5jIChzaF90cmVh dF9hc19mbHRfcCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgTEVOLgotKwotIDIwMTItMDctMjAg IEplZmYgS2VudG9uICA8amtlbnRvbkB0aWxlcmEuY29tPgotIAotIAkqIHRpbGVneC1saW51eC10 ZGVwLmMgKHRpbGVneF9saW51eF9zaWdmcmFtZV9pbml0KTogRml4Ci0tLS0gc3JjL2dkYi9zaC10 ZGVwLmMJMjAxMi8wNi8wOCAxNDoyNDo1NwkxLjI0NQotKysrIHNyYy9nZGIvc2gtdGRlcC5jCTIw MTIvMDcvMjIgMTY6NTI6NDEJMS4yNDYKLUBAIC0xMDMyLDggKzEwMzIsNiBAQAotIHN0YXRpYyBp bnQKLSBzaF90cmVhdF9hc19mbHRfcCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gewotLSAgaW50IGxl biA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLS0KLSAgIC8qIE9yZGluYXJ5IGZsb2F0IHR5cGVzIGFy ZSBvYnZpb3VzbHkgdHJlYXRlZCBhcyBmbG9hdC4gICovCi0gICBpZiAoVFlQRV9DT0RFICh0eXBl KSA9PSBUWVBFX0NPREVfRkxUKQotICAgICByZXR1cm4gMTsKCmRpZmYgLS1naXQgYS9nZGItcmhi ejc5NTQyNC1iaXRwb3MtMDdvZjI1LnBhdGNoIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTA3b2Yy NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ5YjZmZC4uMDAwMDAwMAot LS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMDdvZjI1LnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsNjQgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNy9t c2cwMDE4Mi5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA3LzIzIDE1OjI1OjEx CTEuMTQ1MTQKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA3LzIzIDE4OjA4OjI3CTEuMTQ1 MTUKLSMjIC0xLDMgKzEsOSBAQAotKzIwMTItMDctMjMgIFNpZGRoZXNoIFBveWFyZWthciAgPHNp ZGRoZXNoQHJlZGhhdC5jb20+Ci0rCi0rCSogcC12YWxwcmludC5jIChwYXNjYWxfb2JqZWN0X3By aW50X3ZhbHVlKTogUmVwbGFjZSBwb3RlbnRpYWxseQotKwl1bnNhZmUgYWxsb2NhIHdpdGggeG1h bGxvYy94ZnJlZS4KLSsJKiB2YWxvcHMuYyAoc2VhcmNoX3N0cnVjdF9tZXRob2QpOiBMaWtld2lz ZS4KLSsKLSAyMDEyLTA3LTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0gCi0g CSogc29saWItc3ZyNC5jIChlbmFibGVfYnJlYWspOiBVcGRhdGUuCi0tLS0gc3JjL2dkYi9wLXZh bHByaW50LmMJMjAxMi8wNS8xOCAyMTowMjo0OQkxLjEwMAotKysrIHNyYy9nZGIvcC12YWxwcmlu dC5jCTIwMTIvMDcvMjMgMTg6MDg6MjkJMS4xMDEKLUBAIC03OTcsOCArNzk3LDExIEBACi0gCi0g CSAgaWYgKGJvZmZzZXQgPCAwIHx8IGJvZmZzZXQgPj0gVFlQRV9MRU5HVEggKHR5cGUpKQotIAkg ICAgewotLQkgICAgICAvKiBGSVhNRSAoYWxsb2MpOiBub3Qgc2FmZSBpcyBiYXNlY2xhc3MgaXMg cmVhbGx5IHJlYWxseSBiaWcuICovCi0tCSAgICAgIGdkYl9ieXRlICpidWYgPSBhbGxvY2EgKFRZ UEVfTEVOR1RIIChiYXNlY2xhc3MpKTsKLSsJICAgICAgZ2RiX2J5dGUgKmJ1ZjsKLSsJICAgICAg c3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0rCi0rCSAgICAgIGJ1ZiA9IHhtYWxsb2MgKFRZUEVf TEVOR1RIIChiYXNlY2xhc3MpKTsKLSsJICAgICAgYmFja190byA9IG1ha2VfY2xlYW51cCAoeGZy ZWUsIGJ1Zik7Ci0gCi0gCSAgICAgIGJhc2VfdmFsYWRkciA9IGJ1ZjsKLSAJICAgICAgaWYgKHRh cmdldF9yZWFkX21lbW9yeSAoYWRkcmVzcyArIGJvZmZzZXQsIGJ1ZiwKLUBAIC04MDcsNiArODEw LDcgQEAKLSAJICAgICAgYWRkcmVzcyA9IGFkZHJlc3MgKyBib2Zmc2V0OwotIAkgICAgICB0aGlz b2Zmc2V0ID0gMDsKLSAJICAgICAgYm9mZnNldCA9IDA7Ci0rCSAgICAgIGRvX2NsZWFudXBzIChi YWNrX3RvKTsKLSAJICAgIH0KLSAJICBlbHNlCi0gCSAgICBiYXNlX3ZhbGFkZHIgPSB2YWxhZGRy OwotLS0tIHNyYy9nZGIvdmFsb3BzLmMJMjAxMi8wNi8yNCAwNzoyODoxMAkxLjI5NwotKysrIHNy Yy9nZGIvdmFsb3BzLmMJMjAxMi8wNy8yMyAxODowODoyOQkxLjI5OAotQEAgLTIyODEsOCArMjI4 MSwxMyBAQAotIAotIAkgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCA+PSBUWVBFX0xFTkdUSCAo dHlwZSkpCi0gCSAgICB7Ci0tCSAgICAgIGdkYl9ieXRlICp0bXAgPSBhbGxvY2EgKFRZUEVfTEVO R1RIIChiYXNlY2xhc3MpKTsKLS0JICAgICAgQ09SRV9BRERSIGFkZHJlc3MgPSB2YWx1ZV9hZGRy ZXNzICgqYXJnMXApOwotKwkgICAgICBnZGJfYnl0ZSAqdG1wOwotKwkgICAgICBzdHJ1Y3QgY2xl YW51cCAqYmFja190bzsKLSsJICAgICAgQ09SRV9BRERSIGFkZHJlc3M7Ci0rCi0rCSAgICAgIHRt cCA9IHhtYWxsb2MgKFRZUEVfTEVOR1RIIChiYXNlY2xhc3MpKTsKLSsJICAgICAgYmFja190byA9 IG1ha2VfY2xlYW51cCAoeGZyZWUsIHRtcCk7Ci0rCSAgICAgIGFkZHJlc3MgPSB2YWx1ZV9hZGRy ZXNzICgqYXJnMXApOwotIAotIAkgICAgICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChhZGRyZXNz ICsgb2Zmc2V0LAotIAkJCQkgICAgICB0bXAsIFRZUEVfTEVOR1RIIChiYXNlY2xhc3MpKSAhPSAw KQotQEAgLTIyOTMsNiArMjI5OCw3IEBACi0gCQkJCQkJCSAgYWRkcmVzcyArIG9mZnNldCk7Ci0g CSAgICAgIGJhc2VfdmFsYWRkciA9IHZhbHVlX2NvbnRlbnRzX2Zvcl9wcmludGluZyAoYmFzZV92 YWwpOwotIAkgICAgICB0aGlzX29mZnNldCA9IDA7Ci0rCSAgICAgIGRvX2NsZWFudXBzIChiYWNr X3RvKTsKLSAJICAgIH0KLSAJICBlbHNlCi0gCSAgICB7CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYno3 OTU0MjQtYml0cG9zLTA4b2YyNS5wYXRjaCBiL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0wOG9mMjUu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmMmY2OTEuLjAwMDAwMDAKLS0t IGEvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTA4b2YyNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDEzOSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA3L21z ZzAwMjEzLmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDcvMjUgMjA6MTQ6MTcJ MS4xNDUzMQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDcvMjYgMDI6MDM6MTQJMS4xNDUz MgotIyMgLTEsMyArMSwxNyBAQAotKzIwMTItMDctMjYgIFNpZGRoZXNoIFBveWFyZWthciAgPHNp ZGRoZXNoQHJlZGhhdC5jb20+Ci0rCi0rCSogZHdhcmYybG9jLmMgKGR3YXJmMl9ldmFsdWF0ZV9s b2NfZGVzY19mdWxsKTogRXhwYW5kIHBhcmFtZXRlcgotKwlTSVpFIHRvIHNpemVfdC4KLSsJKGR3 YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyk6IExpa2V3aXNlLgotKwkoZHdhcmYyX2xvY19kZXNjX25l ZWRzX2ZyYW1lKTogTGlrZXdpc2UuCi0rCShsb2NleHByX2Rlc2NyaWJlX2xvY2F0aW9uXzEpOiBM aWtld2lzZS4KLSsJKiBkd2FyZjJsb2MuaCAoc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uKTog TWFrZSBTSVpFIGFzCi0rCXNpemVfdC4KLSsJKHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbik6 IExpa2V3aXNlLgotKwkqIGR3YXJmMnJlYWQuYyAoc3RydWN0IGR3YXJmX2Jsb2NrKTogTGlrZXdp c2UuCi0rCShkdW1wX2RpZV9zaGFsbG93KTogVXNlIHB1bG9uZ2VzdCB0byBwcmludCBkd2FyZl9i bG9jay5zaXplLgotKwkoZGVjb2RlX2xvY2Rlc2MpOiBFeHBhbmQgU0laRSBhbmQgSSB0byBzaXpl X3QuCi0rCi0gMjAxMi0wNy0yNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotIAotIAkqIGNvbnRyaWIvY2Mtd2l0aC10d2Vha3Muc2g6IFB1dCBpbnRvIGNvbW1l bnQgcGF0aCBnZGIvY29udHJpYi8uCi0tLS0gc3JjL2dkYi9kd2FyZjJsb2MuYwkyMDEyLzA3LzEz IDIwOjE1OjUwCTEuMTUyCi0rKysgc3JjL2dkYi9kd2FyZjJsb2MuYwkyMDEyLzA3LzI2IDAyOjAz OjE2CTEuMTUzCi1AQCAtNTQsOCArNTQsOCBAQAotIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKmR3YXJm Ml9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSAJCQkJCQkgICAg c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAotIAkJCQkJCSAgICBjb25zdCBnZGJfYnl0ZSAqZGF0 YSwKLS0JCQkJCQkgICAgdW5zaWduZWQgc2hvcnQgc2l6ZSwKLS0JCQkJCSAgICAgIHN0cnVjdCBk d2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSwKLSsJCQkJCQkgICAgc2l6ZV90IHNpemUsCi0rCQkJ CQkJICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSwKLSAJCQkJCQkgICAgTE9O R0VTVCBieXRlX29mZnNldCk7Ci0gCi0gLyogVW50aWwgdGhlc2UgaGF2ZSBmb3JtYWwgbmFtZXMs IHdlIGRlZmluZSB0aGVzZSBoZXJlLgotQEAgLTIxMTEsNyArMjExMSw3IEBACi0gCi0gc3RhdGlj IHN0cnVjdCB2YWx1ZSAqCi0gZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0 eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0tCQkJICAgICAgIGNvbnN0IGdk Yl9ieXRlICpkYXRhLCB1bnNpZ25lZCBzaG9ydCBzaXplLAotKwkJCSAgICAgICBjb25zdCBnZGJf Ynl0ZSAqZGF0YSwgc2l6ZV90IHNpemUsCi0gCQkJICAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdGEgKnBlcl9jdSwKLSAJCQkgICAgICAgTE9OR0VTVCBieXRlX29mZnNldCkKLSB7Ci1AQCAt MjMxMiw3ICsyMzEyLDcgQEAKLSAKLSBzdHJ1Y3QgdmFsdWUgKgotIGR3YXJmMl9ldmFsdWF0ZV9s b2NfZGVzYyAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKLS0J CQkgIGNvbnN0IGdkYl9ieXRlICpkYXRhLCB1bnNpZ25lZCBzaG9ydCBzaXplLAotKwkJCSAgY29u c3QgZ2RiX2J5dGUgKmRhdGEsIHNpemVfdCBzaXplLAotIAkJCSAgc3RydWN0IGR3YXJmMl9wZXJf Y3VfZGF0YSAqcGVyX2N1KQotIHsKLSAgIHJldHVybiBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2Nf ZnVsbCAodHlwZSwgZnJhbWUsIGRhdGEsIHNpemUsIHBlcl9jdSwgMCk7Ci1AQCAtMjQzMyw3ICsy NDMzLDcgQEAKLSAgICByZXF1aXJlcyBhIGZyYW1lIHRvIGV2YWx1YXRlLiAgKi8KLSAKLSBzdGF0 aWMgaW50Ci0tZHdhcmYyX2xvY19kZXNjX25lZWRzX2ZyYW1lIChjb25zdCBnZGJfYnl0ZSAqZGF0 YSwgdW5zaWduZWQgc2hvcnQgc2l6ZSwKLStkd2FyZjJfbG9jX2Rlc2NfbmVlZHNfZnJhbWUgKGNv bnN0IGdkYl9ieXRlICpkYXRhLCBzaXplX3Qgc2l6ZSwKLSAJCQkgICAgIHN0cnVjdCBkd2FyZjJf cGVyX2N1X2RhdGEgKnBlcl9jdSkKLSB7Ci0gICBzdHJ1Y3QgbmVlZHNfZnJhbWVfYmF0b24gYmF0 b247Ci1AQCAtMzgyNyw3ICszODI3LDcgQEAKLSBzdGF0aWMgdm9pZAotIGxvY2V4cHJfZGVzY3Jp YmVfbG9jYXRpb25fMSAoc3RydWN0IHN5bWJvbCAqc3ltYm9sLCBDT1JFX0FERFIgYWRkciwKLSAJ CQkgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCi0tCQkJICAgICBjb25zdCBnZGJfYnl0ZSAq ZGF0YSwgaW50IHNpemUsCi0rCQkJICAgICBjb25zdCBnZGJfYnl0ZSAqZGF0YSwgc2l6ZV90IHNp emUsCi0gCQkJICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdW5zaWduZWQgaW50IGFkZHJf c2l6ZSwKLSAJCQkgICAgIGludCBvZmZzZXRfc2l6ZSwgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0 YSAqcGVyX2N1KQotIHsKLS0tLSBzcmMvZ2RiL2R3YXJmMmxvYy5oCTIwMTIvMDUvMjIgMTg6NDU6 MjIJMS4zMwotKysrIHNyYy9nZGIvZHdhcmYybG9jLmgJMjAxMi8wNy8yNiAwMjowMzoxNgkxLjM0 Ci1AQCAtNzcsNyArNzcsNyBAQAotIHN0cnVjdCB2YWx1ZSAqZHdhcmYyX2V2YWx1YXRlX2xvY19k ZXNjIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSAJCQkJCXN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwK LSAJCQkJCWNvbnN0IGdkYl9ieXRlICpkYXRhLAotLQkJCQkJdW5zaWduZWQgc2hvcnQgc2l6ZSwK LSsJCQkJCXNpemVfdCBzaXplLAotIAkJCQkJc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVy X2N1KTsKLSAKLSBDT1JFX0FERFIgZHdhcmYyX3JlYWRfYWRkcl9pbmRleCAoc3RydWN0IGR3YXJm Ml9wZXJfY3VfZGF0YSAqcGVyX2N1LAotQEAgLTk3LDcgKzk3LDcgQEAKLSAKLSAgIC8qIExlbmd0 aCBvZiB0aGUgbG9jYXRpb24gZXhwcmVzc2lvbi4gIEZvciBvcHRpbWl6ZWQgb3V0IGV4cHJlc3Np b25zIGl0IGlzCi0gICAgICB6ZXJvLiAgKi8KLS0gIHVuc2lnbmVkIGxvbmcgc2l6ZTsKLSsgIHNp emVfdCBzaXplOwotIAotICAgLyogVGhlIGNvbXBpbGF0aW9uIHVuaXQgY29udGFpbmluZyB0aGUg c3ltYm9sIHdob3NlIGxvY2F0aW9uCi0gICAgICB3ZSdyZSBjb21wdXRpbmcuICAqLwotQEAgLTEx NCw3ICsxMTQsNyBAQAotICAgY29uc3QgZ2RiX2J5dGUgKmRhdGE7Ci0gCi0gICAvKiBMZW5ndGgg b2YgdGhlIGxvY2F0aW9uIGxpc3QuICAqLwotLSAgdW5zaWduZWQgbG9uZyBzaXplOwotKyAgc2l6 ZV90IHNpemU7Ci0gCi0gICAvKiBUaGUgY29tcGlsYXRpb24gdW5pdCBjb250YWluaW5nIHRoZSBz eW1ib2wgd2hvc2UgbG9jYXRpb24KLSAgICAgIHdlJ3JlIGNvbXB1dGluZy4gICovCi0tLS0gc3Jj L2dkYi9kd2FyZjJyZWFkLmMJMjAxMi8wNy8yMCAxNzozODowNAkxLjY5NwotKysrIHNyYy9nZGIv ZHdhcmYycmVhZC5jCTIwMTIvMDcvMjYgMDI6MDM6MTYJMS42OTgKLUBAIC05OTAsNyArOTkwLDcg QEAKLSAvKiBCbG9ja3MgYXJlIGEgYnVuY2ggb2YgdW50eXBlZCBieXRlcy4gICovCi0gc3RydWN0 IGR3YXJmX2Jsb2NrCi0gICB7Ci0tICAgIHVuc2lnbmVkIGludCBzaXplOwotKyAgICBzaXplX3Qg c2l6ZTsKLSAKLSAgICAgLyogVmFsaWQgb25seSBpZiBTSVpFIGlzIG5vdCB6ZXJvLiAgKi8KLSAg ICAgZ2RiX2J5dGUgKmRhdGE7Ci1AQCAtMTYxOTcsMTIgKzE2MTk3LDEyIEBACi0gCWNhc2UgRFdf Rk9STV9ibG9jazQ6Ci0gCWNhc2UgRFdfRk9STV9ibG9jazoKLSAJY2FzZSBEV19GT1JNX2Jsb2Nr MToKLS0JICBmcHJpbnRmX3VuZmlsdGVyZWQgKGYsICJibG9jazogc2l6ZSAlZCIsCi0tCQkJICAg ICAgRFdfQkxPQ0sgKCZkaWUtPmF0dHJzW2ldKS0+c2l6ZSk7Ci0rCSAgZnByaW50Zl91bmZpbHRl cmVkIChmLCAiYmxvY2s6IHNpemUgJXMiLAotKwkJCSAgICAgIHB1bG9uZ2VzdCAoRFdfQkxPQ0sg KCZkaWUtPmF0dHJzW2ldKS0+c2l6ZSkpOwotIAkgIGJyZWFrOwotIAljYXNlIERXX0ZPUk1fZXhw cmxvYzoKLS0JICBmcHJpbnRmX3VuZmlsdGVyZWQgKGYsICJleHByZXNzaW9uOiBzaXplICV1IiwK LS0JCQkgICAgICBEV19CTE9DSyAoJmRpZS0+YXR0cnNbaV0pLT5zaXplKTsKLSsJICBmcHJpbnRm X3VuZmlsdGVyZWQgKGYsICJleHByZXNzaW9uOiBzaXplICVzIiwKLSsJCQkgICAgICBwdWxvbmdl c3QgKERXX0JMT0NLICgmZGllLT5hdHRyc1tpXSktPnNpemUpKTsKLSAJICBicmVhazsKLSAJY2Fz ZSBEV19GT1JNX3JlZl9hZGRyOgotIAkgIGZwcmludGZfdW5maWx0ZXJlZCAoZiwgInJlZiBhZGRy ZXNzOiAiKTsKLUBAIC0xNjc0Niw4ICsxNjc0Niw4IEBACi0gZGVjb2RlX2xvY2Rlc2MgKHN0cnVj dCBkd2FyZl9ibG9jayAqYmxrLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0gICBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOwotLSAgaW50IGk7Ci0tICBpbnQgc2l6ZSA9 IGJsay0+c2l6ZTsKLSsgIHNpemVfdCBpOwotKyAgc2l6ZV90IHNpemUgPSBibGstPnNpemU7Ci0g ICBnZGJfYnl0ZSAqZGF0YSA9IGJsay0+ZGF0YTsKLSAgIENPUkVfQUREUiBzdGFja1s2NF07Ci0g ICBpbnQgc3RhY2tpOwoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0wOW9mMjUu cGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMDlvZjI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA0YjE4NjZkLi4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJp dHBvcy0wOW9mMjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1odHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA4L21zZzAwMDg1Lmh0bWwKLQotIyMjIHNy Yy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDgvMTAgMDU6MDM6MDcJMS4xNDU3NAotIyMjIHNyYy9nZGIv Q2hhbmdlTG9nCTIwMTIvMDgvMTAgMTg6NTU6MTYJMS4xNDU3NQotIyMgLTEsMyArMSw5IEBACi0r MjAxMi0wOC0xMCAgU2lkZGhlc2ggUG95YXJla2FyICA8c2lkZGhlc2hAcmVkaGF0LmNvbT4KLSsK LSsJKiBweXRob24vcHktdHlwZS5jIChjb252ZXJ0X2ZpZWxkKTogVXNlIGdkYl9weV9sb25nX2Zy b21fbG9uZ2VzdAotKwlmb3IgVFlQRV9GSUVMRF9CSVRQT1MuCi0rCSh0eXB5X2dldF9zaXplb2Yp OiBMaWtld2lzZSBmb3IgVFlQRV9MRU5HVEguCi0rCi0gMjAxMi0wOC0xMCAgTWlrZSBGcnlzaW5n ZXIgIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAKLSAJUFIgY2xpLzEwNDM2OgotLS0tIHNyYy9nZGIv cHl0aG9uL3B5LXR5cGUuYwkyMDEyLzA1LzE4IDIxOjAyOjUyCTEuMzkKLSsrKyBzcmMvZ2RiL3B5 dGhvbi9weS10eXBlLmMJMjAxMi8wOC8xMCAxODo1NToxOAkxLjQwCi1AQCAtMTc2LDcgKzE3Niw3 IEBACi0gCX0KLSAgICAgICBlbHNlCi0gCXsKLS0JICBhcmcgPSBQeUxvbmdfRnJvbUxvbmcgKFRZ UEVfRklFTERfQklUUE9TICh0eXBlLCBmaWVsZCkpOwotKwkgIGFyZyA9IGdkYl9weV9sb25nX2Zy b21fbG9uZ2VzdCAoVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGZpZWxkKSk7Ci0gCSAgYXR0cnN0 cmluZyA9ICJiaXRwb3MiOwotIAl9Ci0gCi1AQCAtNjgzLDcgKzY4Myw3IEBACi0gICAgIH0KLSAg IC8qIElnbm9yZSBleGNlcHRpb25zLiAgKi8KLSAKLS0gIHJldHVybiBQeUxvbmdfRnJvbUxvbmcg KFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0rICByZXR1cm4gZ2RiX3B5X2xvbmdfZnJvbV9sb25nZXN0 IChUWVBFX0xFTkdUSCAodHlwZSkpOwotIH0KLSAKLSBzdGF0aWMgc3RydWN0IHR5cGUgKgoKZGlm ZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0xMG9mMjUucGF0Y2ggYi9nZGItcmhiejc5 NTQyNC1iaXRwb3MtMTBvZjI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm NzAxNDVhLi4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0xMG9mMjUucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1jdnMvMjAxMi0wOC9tc2cwMDE4Ny5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEyLzA4LzI0IDAzOjE3OjEyCTEuMTQ2MjgKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA4 LzI0IDAzOjU3OjIyCTEuMTQ2MjkKLSMjIC0xLDMgKzEsMTEgQEAKLSsyMDEyLTA4LTI0ICBTaWRk aGVzaCBQb3lhcmVrYXIgIDxzaWRkaGVzaEByZWRoYXQuY29tPgotKwotKwkqIGg4MzAwLXRkZXAu YyAoaDgzMDBfcHVzaF9kdW1teV9jYWxsKTogUmVwbGFjZSB1bnNhZmUgYWxsb2NhCi0rCXdpdGgg eG1hbGxvYy9jbGVhbnVwLgotKwkqIG10LXRkZXAuYyAobXRfcHVzaF9kdW1teV9jYWxsKTogTGlr ZXdpc2UuCi0rCSogdGlsZWd4LXRkZXAuYyAodGlsZWd4X3B1c2hfZHVtbXlfY2FsbCk6IExpa2V3 aXNlLgotKwkqIHhzdG9ybXkxNi10ZGVwLmMgKHhzdG9ybXkxNl9wdXNoX2R1bW15X2NhbGwpOiBM aWtld2lzZS4KLSsKLSAyMDEyLTA4LTI0ICBZYW8gUWkgIDx5YW9AY29kZXNvdXJjZXJ5LmNvbT4K LSAKLSAJKiBqdi1leHAueSAocHVzaF9leHByZXNzaW9uX25hbWUpOiBBZGQgIi4iIGF0IHRoZSBl bmQgb2YgZXJyb3IKLS0tLSBzcmMvZ2RiL2g4MzAwLXRkZXAuYwkyMDEyLzA1LzE4IDIxOjAyOjQ3 CTEuMTMzCi0rKysgc3JjL2dkYi9oODMwMC10ZGVwLmMJMjAxMi8wOC8yNCAwMzo1NzoyMgkxLjEz NAotQEAgLTY2NiwxMyArNjY2LDE1IEBACi0gCi0gICBmb3IgKGFyZ3VtZW50ID0gMDsgYXJndW1l bnQgPCBuYXJnczsgYXJndW1lbnQrKykKLSAgICAgewotKyAgICAgIHN0cnVjdCBjbGVhbnVwICpi YWNrX3RvOwotICAgICAgIHN0cnVjdCB0eXBlICp0eXBlID0gdmFsdWVfdHlwZSAoYXJnc1thcmd1 bWVudF0pOwotICAgICAgIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gICAgICAgY2hh ciAqY29udGVudHMgPSAoY2hhciAqKSB2YWx1ZV9jb250ZW50cyAoYXJnc1thcmd1bWVudF0pOwot IAotICAgICAgIC8qIFBhZCB0aGUgYXJndW1lbnQgYXBwcm9wcmlhdGVseS4gICovCi0gICAgICAg aW50IHBhZGRlZF9sZW4gPSBhbGlnbl91cCAobGVuLCB3b3Jkc2l6ZSk7Ci0tICAgICAgZ2RiX2J5 dGUgKnBhZGRlZCA9IGFsbG9jYSAocGFkZGVkX2xlbik7Ci0rICAgICAgZ2RiX2J5dGUgKnBhZGRl ZCA9IHhtYWxsb2MgKHBhZGRlZF9sZW4pOwotKyAgICAgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAg KHhmcmVlLCBwYWRkZWQpOwotIAotICAgICAgIG1lbXNldCAocGFkZGVkLCAwLCBwYWRkZWRfbGVu KTsKLSAgICAgICBtZW1jcHkgKGxlbiA8IHdvcmRzaXplID8gcGFkZGVkICsgcGFkZGVkX2xlbiAt IGxlbiA6IHBhZGRlZCwKLUBAIC03MjAsNiArNzIyLDggQEAKLSAJICAgICBzdWJzZXF1ZW50IGFy Z3VtZW50cyBnbyBvbiB0aGUgc3RhY2suICAqLwotIAkgIHJlZyA9IEVfQVJHTEFTVF9SRUdOVU0g KyAxOwotIAl9Ci0rCi0rICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotICAgICB9Ci0gCi0g ICAvKiBTdG9yZSByZXR1cm4gYWRkcmVzcy4gICovCi0tLS0gc3JjL2dkYi9tdC10ZGVwLmMJMjAx Mi8wNS8xNiAxNDozNTowNgkxLjQwCi0rKysgc3JjL2dkYi9tdC10ZGVwLmMJMjAxMi8wOC8yNCAw Mzo1NzoyMgkxLjQxCi1AQCAtODQ1LDE2ICs4NDUsMjAgQEAKLSAgIGZvciAoaiA9IG5hcmdzIC0g MTsgaiA+PSBpOyBqLS0pCi0gICAgIHsKLSAgICAgICBnZGJfYnl0ZSAqdmFsOwotKyAgICAgIHN0 cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotKyAgICAgIGNvbnN0IGdkYl9ieXRlICpjb250ZW50cyA9 IHZhbHVlX2NvbnRlbnRzIChhcmdzW2pdKTsKLSAgICAgICAKLSAgICAgICAvKiBSaWdodC1qdXN0 aWZ5IHRoZSB2YWx1ZSBpbiBhbiBhbGlnbmVkLWxlbmd0aCBidWZmZXIuICAqLwotICAgICAgIHR5 cGVsZW4gPSBUWVBFX0xFTkdUSCAodmFsdWVfdHlwZSAoYXJnc1tqXSkpOwotICAgICAgIHNsYWNr bGVuID0gKHdvcmRzaXplIC0gKHR5cGVsZW4gJSB3b3Jkc2l6ZSkpICUgd29yZHNpemU7Ci0tICAg ICAgdmFsID0gYWxsb2NhICh0eXBlbGVuICsgc2xhY2tsZW4pOwotLSAgICAgIG1lbWNweSAodmFs LCB2YWx1ZV9jb250ZW50cyAoYXJnc1tqXSksIHR5cGVsZW4pOwotKyAgICAgIHZhbCA9IHhtYWxs b2MgKHR5cGVsZW4gKyBzbGFja2xlbik7Ci0rICAgICAgYmFja190byA9IG1ha2VfY2xlYW51cCAo eGZyZWUsIHZhbCk7Ci0rICAgICAgbWVtY3B5ICh2YWwsIGNvbnRlbnRzLCB0eXBlbGVuKTsKLSAg ICAgICBtZW1zZXQgKHZhbCArIHR5cGVsZW4sIDAsIHNsYWNrbGVuKTsKLSAgICAgICAvKiBOb3cg d3JpdGUgdGhpcyBkYXRhIHRvIHRoZSBzdGFjay4gICovCi0gICAgICAgc3RhY2tfZGVzdCAtPSB0 eXBlbGVuICsgc2xhY2tsZW47Ci0gICAgICAgd3JpdGVfbWVtb3J5IChzdGFja19kZXN0LCB2YWws IHR5cGVsZW4gKyBzbGFja2xlbik7Ci0rICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotICAg ICB9Ci0gCi0gICAvKiBGaW5hbGx5LCBpZiBhIHBhcmFtIG5lZWRzIHRvIGJlIHNwbGl0IGJldHdl ZW4gcmVnaXN0ZXJzIGFuZCBzdGFjaywgCi0tLS0gc3JjL2dkYi90aWxlZ3gtdGRlcC5jCTIwMTIv MDUvMzAgMTk6MzE6NDQJMS4xCi0rKysgc3JjL2dkYi90aWxlZ3gtdGRlcC5jCTIwMTIvMDgvMjQg MDM6NTc6MjIJMS4yCi1AQCAtMzQzLDE2ICszNDMsMjAgQEAKLSAgIGZvciAoaiA9IG5hcmdzIC0g MTsgaiA+PSBpOyBqLS0pCi0gICAgIHsKLSAgICAgICBnZGJfYnl0ZSAqdmFsOwotKyAgICAgIHN0 cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotKyAgICAgIGNvbnN0IGdkYl9ieXRlICpjb250ZW50cyA9 IHZhbHVlX2NvbnRlbnRzIChhcmdzW2pdKTsKLSAKLSAgICAgICB0eXBlbGVuID0gVFlQRV9MRU5H VEggKHZhbHVlX2VuY2xvc2luZ190eXBlIChhcmdzW2pdKSk7Ci0gICAgICAgc2xhY2tsZW4gPSAo KHR5cGVsZW4gKyAzKSAmICh+MykpIC0gdHlwZWxlbjsKLS0gICAgICB2YWwgPSBhbGxvY2EgKHR5 cGVsZW4gKyBzbGFja2xlbik7Ci0tICAgICAgbWVtY3B5ICh2YWwsIHZhbHVlX2NvbnRlbnRzIChh cmdzW2pdKSwgdHlwZWxlbik7Ci0rICAgICAgdmFsID0geG1hbGxvYyAodHlwZWxlbiArIHNsYWNr bGVuKTsKLSsgICAgICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgdmFsKTsKLSsgICAg ICBtZW1jcHkgKHZhbCwgY29udGVudHMsIHR5cGVsZW4pOwotICAgICAgIG1lbXNldCAodmFsICsg dHlwZWxlbiwgMCwgc2xhY2tsZW4pOwotIAotICAgICAgIC8qIE5vdyB3cml0ZSBkYXRhIHRvIHRo ZSBzdGFjay4gIFRoZSBzdGFjayBncm93cyBkb3dud2FyZHMuICAqLwotICAgICAgIHN0YWNrX2Rl c3QgLT0gdHlwZWxlbiArIHNsYWNrbGVuOwotICAgICAgIHdyaXRlX21lbW9yeSAoc3RhY2tfZGVz dCwgdmFsLCB0eXBlbGVuICsgc2xhY2tsZW4pOwotKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3Rv KTsKLSAgICAgfQotIAotICAgLyogQWRkIDIgd29yZHMgZm9yIGxpbmthZ2Ugc3BhY2UgdG8gdGhl IHN0YWNrLiAgKi8KLS0tLSBzcmMvZ2RiL3hzdG9ybXkxNi10ZGVwLmMJMjAxMi8wNS8xNiAxNDoz NTowOAkxLjExOAotKysrIHNyYy9nZGIveHN0b3JteTE2LXRkZXAuYwkyMDEyLzA4LzI0IDAzOjU3 OjIyCTEuMTE5Ci1AQCAtMjc5LDE2ICsyNzksMjAgQEAKLSAgIGZvciAoaiA9IG5hcmdzIC0gMTsg aiA+PSBpOyBqLS0pCi0gICAgIHsKLSAgICAgICBjaGFyICp2YWw7Ci0rICAgICAgc3RydWN0IGNs ZWFudXAgKmJhY2tfdG87Ci0rICAgICAgY29uc3QgZ2RiX2J5dGUgKmJ5dGVzID0gdmFsdWVfY29u dGVudHMgKGFyZ3Nbal0pOwotIAotICAgICAgIHR5cGVsZW4gPSBUWVBFX0xFTkdUSCAodmFsdWVf ZW5jbG9zaW5nX3R5cGUgKGFyZ3Nbal0pKTsKLSAgICAgICBzbGFja2xlbiA9IHR5cGVsZW4gJiAx OwotLSAgICAgIHZhbCA9IGFsbG9jYSAodHlwZWxlbiArIHNsYWNrbGVuKTsKLS0gICAgICBtZW1j cHkgKHZhbCwgdmFsdWVfY29udGVudHMgKGFyZ3Nbal0pLCB0eXBlbGVuKTsKLSsgICAgICB2YWwg PSB4bWFsbG9jICh0eXBlbGVuICsgc2xhY2tsZW4pOwotKyAgICAgIGJhY2tfdG8gPSBtYWtlX2Ns ZWFudXAgKHhmcmVlLCB2YWwpOwotKyAgICAgIG1lbWNweSAodmFsLCBieXRlcywgdHlwZWxlbik7 Ci0gICAgICAgbWVtc2V0ICh2YWwgKyB0eXBlbGVuLCAwLCBzbGFja2xlbik7Ci0gCi0gICAgICAg LyogTm93IHdyaXRlIHRoaXMgZGF0YSB0byB0aGUgc3RhY2suICBUaGUgc3RhY2sgZ3Jvd3MgdXB3 YXJkcy4gICovCi0gICAgICAgd3JpdGVfbWVtb3J5IChzdGFja19kZXN0LCB2YWwsIHR5cGVsZW4g KyBzbGFja2xlbik7Ci0gICAgICAgc3RhY2tfZGVzdCArPSB0eXBlbGVuICsgc2xhY2tsZW47Ci0r ICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotICAgICB9Ci0gCi0gICBzdG9yZV91bnNpZ25l ZF9pbnRlZ2VyIChidWYsIHhzdG9ybXkxNl9wY19zaXplLCBieXRlX29yZGVyLCBicF9hZGRyKTsK CmRpZmYgLS1naXQgYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMTFvZjI1LnBhdGNoIGIvZ2RiLXJo Yno3OTU0MjQtYml0cG9zLTExb2YyNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggZTU4YTVhOC4uMDAwMDAwMAotLS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMTFvZjI1LnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1jdnMvMjAxMi0wOS9tc2cwMDA2NS5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxv ZwkyMDEyLzA5LzE0IDAwOjU0OjU3CTEuMTQ2NTYKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEy LzA5LzE0IDA3OjAwOjM3CTEuMTQ2NTcKLSMjIC0xLDMgKzEsOCBAQAotKzIwMTItMDktMTQgIFNp ZGRoZXNoIFBveWFyZWthciAgPHNpZGRoZXNoQHJlZGhhdC5jb20+Ci0rCi0rCSogcHJpbnRjbWQu YyAodWlfcHJpbnRmKTogRWxpbWluYXRlIHNpbmdsZS11c2UgdmFyaWFibGUKLSsJUEFSQU1fTEVO LgotKwotIDIwMTItMDktMTQgIFlhbyBRaSAgPHlhb0Bjb2Rlc291cmNlcnkuY29tPgotIAkgICAg UGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KLSAKLS0tLSBzcmMvZ2RiL3ByaW50Y21k LmMJMjAxMi8wOS8xMSAyMToyNjoxNgkxLjIxMQotKysrIHNyYy9nZGIvcHJpbnRjbWQuYwkyMDEy LzA5LzE0IDA3OjAwOjQyCTEuMjEyCi1AQCAtMjI2Nyw3ICsyMjY3LDYgQEAKLSAKLSAJICAgICAg LyogUGFyYW1ldGVyIGRhdGEuICAqLwotIAkgICAgICBzdHJ1Y3QgdHlwZSAqcGFyYW1fdHlwZSA9 IHZhbHVlX3R5cGUgKHZhbF9hcmdzW2ldKTsKLS0JICAgICAgdW5zaWduZWQgaW50IHBhcmFtX2xl biA9IFRZUEVfTEVOR1RIIChwYXJhbV90eXBlKTsKLSAJICAgICAgc3RydWN0IGdkYmFyY2ggKmdk YmFyY2ggPSBnZXRfdHlwZV9hcmNoIChwYXJhbV90eXBlKTsKLSAJICAgICAgZW51bSBiZmRfZW5k aWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwotIAotQEAgLTIz MjksOCArMjMyOCw4IEBACi0gCi0gCSAgICAgIC8qIENvbnZlcnNpb24gYmV0d2VlbiBkaWZmZXJl bnQgREZQIHR5cGVzLiAgKi8KLSAJICAgICAgaWYgKFRZUEVfQ09ERSAocGFyYW1fdHlwZSkgPT0g VFlQRV9DT0RFX0RFQ0ZMT0FUKQotLQkJZGVjaW1hbF9jb252ZXJ0IChwYXJhbV9wdHIsIHBhcmFt X2xlbiwgYnl0ZV9vcmRlciwKLS0JCQkJIGRlYywgZGZwX2xlbiwgYnl0ZV9vcmRlcik7Ci0rCQlk ZWNpbWFsX2NvbnZlcnQgKHBhcmFtX3B0ciwgVFlQRV9MRU5HVEggKHBhcmFtX3R5cGUpLAotKwkJ CQkgYnl0ZV9vcmRlciwgZGVjLCBkZnBfbGVuLCBieXRlX29yZGVyKTsKLSAJICAgICAgZWxzZQot IAkJLyogSWYgdGhpcyBpcyBhIG5vbi10cml2aWFsIGNvbnZlcnNpb24sIGp1c3Qgb3V0cHV0IDAu Ci0gCQkgICBBIGNvcnJlY3QgY29udmVydGVkIHZhbHVlIGNhbiBiZSBkaXNwbGF5ZWQgYnkgZXhw bGljaXRseQoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0xMm9mMjUucGF0Y2gg Yi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMTJvZjI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA1MGIxOWExLi4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0x Mm9mMjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi1odHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA5L21zZzAwMDY4Lmh0bWwKLQotIyMjIHNyYy9nZGIv Q2hhbmdlTG9nCTIwMTIvMDkvMTQgMTI6MTA6MjEJMS4xNDY1OQotIyMjIHNyYy9nZGIvQ2hhbmdl TG9nCTIwMTIvMDkvMTQgMTI6NDY6NTUJMS4xNDY2MAotIyMgLTEsMyArMSw4IEBACi0rMjAxMi0w OS0xNCAgU2lkZGhlc2ggUG95YXJla2FyICA8c2lkZGhlc2hAcmVkaGF0LmNvbT4KLSsKLSsJKiB2 YWxhcml0aC5jICh2YWx1ZV9jb25jYXQpOiBSZXBsYWNlIHVuc2FmZSBBTExPQ0Egd2l0aAotKwlY TUFMTE9DL1hGUkVFLgotKwotIDIwMTItMDktMTQgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhh dC5jb20+Ci0gCi0gCSogZ2RiLjEgKFNFRSBBTFNPKTogRXhwYW5kIHBvaW50ZXIgdG8gR0RCJ3Mg VGV4aW5mbyBtYW51YWwuCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxhcml0aC5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3ZhbGFyaXRoLmMJ MjAxMi0xMS0wNyAyMjowMDo0MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL3ZhbGFyaXRoLmMJMjAxMi0xMS0wNyAyMjowMjoxOC42NjE3NjcyODEgKzAxMDAKLUBA IC03MTYsOSArNzE2LDEyIEBAIHZhbHVlX2NvbmNhdCAoc3RydWN0IHZhbHVlICphcmcxLCBzdHJ1 Y3QKLSAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlMikgPT0gVFlQRV9DT0RFX1NUUklORwotIAkg IHx8IFRZUEVfQ09ERSAodHlwZTIpID09IFRZUEVfQ09ERV9DSEFSKQotIAl7Ci0rCSAgc3RydWN0 IGNsZWFudXAgKmJhY2tfdG87Ci0rCi0gCSAgY291bnQgPSBsb25nZXN0X3RvX2ludCAodmFsdWVf YXNfbG9uZyAoaW52YWwxKSk7Ci0gCSAgaW52YWwybGVuID0gVFlQRV9MRU5HVEggKHR5cGUyKTsK LS0JICBwdHIgPSAoY2hhciAqKSBhbGxvY2EgKGNvdW50ICogaW52YWwybGVuKTsKLSsJICBwdHIg PSAoY2hhciAqKSB4bWFsbG9jIChjb3VudCAqIGludmFsMmxlbik7Ci0rCSAgYmFja190byA9IG1h a2VfY2xlYW51cCAoeGZyZWUsIHB0cik7Ci0gCSAgaWYgKFRZUEVfQ09ERSAodHlwZTIpID09IFRZ UEVfQ09ERV9DSEFSKQotIAkgICAgewotIAkgICAgICBjaGFyX3R5cGUgPSB0eXBlMjsKLUBAIC03 NDEsNiArNzQ0LDcgQEAgdmFsdWVfY29uY2F0IChzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVjdAot IAkJfQotIAkgICAgfQotIAkgIG91dHZhbCA9IHZhbHVlX3N0cmluZyAocHRyLCBjb3VudCAqIGlu dmFsMmxlbiwgY2hhcl90eXBlKTsKLSsJICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0gCX0KLSAg ICAgICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUyKSA9PSBUWVBFX0NPREVfQklUU1RSSU5HCi0g CSAgICAgICB8fCBUWVBFX0NPREUgKHR5cGUyKSA9PSBUWVBFX0NPREVfQk9PTCkKLUBAIC03NTUs NiArNzU5LDggQEAgdmFsdWVfY29uY2F0IChzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVjdAotICAg ZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlMSkgPT0gVFlQRV9DT0RFX1NUUklORwotIAkgICB8fCBU WVBFX0NPREUgKHR5cGUxKSA9PSBUWVBFX0NPREVfQ0hBUikKLSAgICAgewotKyAgICAgIHN0cnVj dCBjbGVhbnVwICpiYWNrX3RvOwotKwotICAgICAgIC8qIFdlIGhhdmUgdHdvIGNoYXJhY3RlciBz dHJpbmdzIHRvIGNvbmNhdGVuYXRlLiAgKi8KLSAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlMikg IT0gVFlQRV9DT0RFX1NUUklORwotIAkgICYmIFRZUEVfQ09ERSAodHlwZTIpICE9IFRZUEVfQ09E RV9DSEFSKQotQEAgLTc2Myw3ICs3NjksOCBAQCB2YWx1ZV9jb25jYXQgKHN0cnVjdCB2YWx1ZSAq YXJnMSwgc3RydWN0Ci0gCX0KLSAgICAgICBpbnZhbDFsZW4gPSBUWVBFX0xFTkdUSCAodHlwZTEp OwotICAgICAgIGludmFsMmxlbiA9IFRZUEVfTEVOR1RIICh0eXBlMik7Ci0tICAgICAgcHRyID0g KGNoYXIgKikgYWxsb2NhIChpbnZhbDFsZW4gKyBpbnZhbDJsZW4pOwotKyAgICAgIHB0ciA9IChj aGFyICopIHhtYWxsb2MgKGludmFsMWxlbiArIGludmFsMmxlbik7Ci0rICAgICAgYmFja190byA9 IG1ha2VfY2xlYW51cCAoeGZyZWUsIHB0cik7Ci0gICAgICAgaWYgKFRZUEVfQ09ERSAodHlwZTEp ID09IFRZUEVfQ09ERV9DSEFSKQotIAl7Ci0gCSAgY2hhcl90eXBlID0gdHlwZTE7Ci1AQCAtNzg2 LDYgKzc5Myw3IEBAIHZhbHVlX2NvbmNhdCAoc3RydWN0IHZhbHVlICphcmcxLCBzdHJ1Y3QKLSAJ ICBtZW1jcHkgKHB0ciArIGludmFsMWxlbiwgdmFsdWVfY29udGVudHMgKGludmFsMiksIGludmFs Mmxlbik7Ci0gCX0KLSAgICAgICBvdXR2YWwgPSB2YWx1ZV9zdHJpbmcgKHB0ciwgaW52YWwxbGVu ICsgaW52YWwybGVuLCBjaGFyX3R5cGUpOwotKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsK LSAgICAgfQotICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlMSkgPT0gVFlQRV9DT0RFX0JJVFNU UklORwotIAkgICB8fCBUWVBFX0NPREUgKHR5cGUxKSA9PSBUWVBFX0NPREVfQk9PTCkKCmRpZmYg LS1naXQgYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMTNvZjI1LnBhdGNoIGIvZ2RiLXJoYno3OTU0 MjQtYml0cG9zLTEzb2YyNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFl MjA5OC4uMDAwMDAwMAotLS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMTNvZjI1LnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1jdnMvMjAxMi0wOS9tc2cwMDA4Mi5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEy LzA5LzE3IDA3OjE1OjQ3CTEuMTQ2NjQKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA5LzE3 IDA3OjI2OjU0CTEuMTQ2NjUKLSMjIC0xLDMgKzEsOCBAQAotKzIwMTItMDktMTcgIFNpZGRoZXNo IFBveWFyZWthciAgPHNpZGRoZXNoQHJlZGhhdC5jb20+Ci0rCi0rCSogaW5mcnVuLmMgKHJlc3Rv cmVfaW5mY2FsbF9zdXNwZW5kX3N0YXRlKTogRWxpbWluYXRlIHNpbmdsZS11c2UKLSsJdmFyaWFi bGUgTEVOLgotKwotIDIwMTItMDktMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KLSAKLSAJUFIgMTQxMTkKLS0tLSBzcmMvZ2RiL2luZnJ1bi5jCTIwMTIvMDkv MTcgMDc6MDk6MzQJMS41NTgKLSsrKyBzcmMvZ2RiL2luZnJ1bi5jCTIwMTIvMDkvMTcgMDc6MjY6 NTUJMS41NTkKLUBAIC02Nzc3LDExICs2Nzc3LDEwIEBACi0gICBpZiAoaW5mX3N0YXRlLT5zaWdp bmZvX2dkYmFyY2ggPT0gZ2RiYXJjaCkKLSAgICAgewotICAgICAgIHN0cnVjdCB0eXBlICp0eXBl ID0gZ2RiYXJjaF9nZXRfc2lnaW5mb190eXBlIChnZGJhcmNoKTsKLS0gICAgICBzaXplX3QgbGVu ID0gVFlQRV9MRU5HVEggKHR5cGUpOwotIAotICAgICAgIC8qIEVycm9ycyBpZ25vcmVkLiAgKi8K LSAgICAgICB0YXJnZXRfd3JpdGUgKCZjdXJyZW50X3RhcmdldCwgVEFSR0VUX09CSkVDVF9TSUdO QUxfSU5GTywgTlVMTCwKLS0JCSAgICBpbmZfc3RhdGUtPnNpZ2luZm9fZGF0YSwgMCwgbGVuKTsK LSsJCSAgICBpbmZfc3RhdGUtPnNpZ2luZm9fZGF0YSwgMCwgVFlQRV9MRU5HVEggKHR5cGUpKTsK LSAgICAgfQotIAotICAgLyogVGhlIGluZmVyaW9yIGNhbiBiZSBnb25lIGlmIHRoZSB1c2VyIHR5 cGVzICJwcmludCBleGl0KDApIgoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0x NG9mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMTRvZjI1LnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDlhZDVlLi4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6Nzk1 NDI0LWJpdHBvcy0xNG9mMjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDkgKzAsMCBAQAot aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wOS9tc2cwMDA4NC5odG1sCi0K LSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA5LzE3IDA4OjQyOjA3CTEuMTQ2NjYKLSMjIyBz cmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA5LzE3IDA4OjUyOjE3CTEuMTQ2NjcKLSMjIC0xLDMgKzEs MjMgQEAKLSsyMDEyLTA5LTE3ICBTaWRkaGVzaCBQb3lhcmVrYXIgIDxzaWRkaGVzaEByZWRoYXQu Y29tPgotKwotKwkqIG0yLXZhbHByaW50LmMgKG0yX3ByaW50X2FycmF5X2NvbnRlbnRzKTogRWxp bWluYXRlIHZhcmlhYmxlCi0rCUVMVExFTiBhbmQgdXNlIFRZUEVfTEVOR1RIIGRpcmVjdGx5Lgot KwkobTJfdmFsX3ByaW50KTogTGlrZXdpc2UuCi0rCSogbTY4ay10ZGVwLmMgKG02OGtfc3ZyNF9l eHRyYWN0X3JldHVybl92YWx1ZSk6IEVsaW1pbmF0ZQotKwl2YXJpYWJsZSBMRU4gYW5kIHVzZSBU WVBFX0xFTkdUSCBkaXJlY3RseS4KLSsJKG02OGtfc3ZyNF9zdG9yZV9yZXR1cm5fdmFsdWUpOiBM aWtld2lzZS4KLSsJKiBtaXBzLXRkZXAuYyAobWlwc19vMzJfcHVzaF9kdW1teV9jYWxsKTogRWxp bWluYXRlIHZhcmlhYmxlCi0rCUFSR0xFTiBhbmQgdXNlIFRZUEVfTEVOR1RIIGRpcmVjdGx5Lgot KwkobWlwc19vNjRfcHVzaF9kdW1teV9jYWxsKTogTGlrZXdpc2UuCi0rCSogczM5MC10ZGVwIChz MzkwX2Z1bmN0aW9uX2FyZ19wYXNzX2J5X3JlZmVyZW5jZSk6IEVsaW1pbmF0ZQotKwl2YXJpYWJs ZSBMRU5HVEggYW5kIHVzZSBUWVBFX0xFTkdUSCBkaXJlY3RseS4KLSsJKHMzOTBfZnVuY3Rpb25f YXJnX2Zsb2F0KTogTGlrZXdpc2UuCi0rCShzMzkwX2Z1bmN0aW9uX2FyZ19pbnRlZ2VyKTogTGlr ZXdpc2UuCi0rCShzMzkwX3B1c2hfZHVtbXlfY2FsbCk6IExpa2V3aXNlLgotKwkoczM5MF9yZXR1 cm5fdmFsdWVfY29udmVudGlvbik6IExpa2V3aXNlLgotKwkqIHNwdS10ZGVwLmMgKHNwdV9wdXNo X2R1bW15X2NhbGwpOiBFbGltaW5hdGUgTEVOIGFuZCB1c2UKLSsJVFlQRV9MRU5HVEggZGlyZWN0 bHkuCi0rCi0gMjAxMi0wOS0xNyAgWWFvIFFpICA8eWFvQGNvZGVzb3VyY2VyeS5jb20+Ci0gCi0g CSogY2xpL2NsaS1kZWNvZGUuYyAoYWRkX3NldHNob3dfenVpbnRlZ2VyX3VubGltaXRlZF9jbWQp OiBOZXcuCi0tLS0gc3JjL2dkYi9tMi12YWxwcmludC5jCTIwMTIvMDgvMTYgMDc6MzY6MjAJMS40 NQotKysrIHNyYy9nZGIvbTItdmFscHJpbnQuYwkyMDEyLzA5LzE3IDA4OjUyOjE4CTEuNDYKLUBA IC0yNjksMTYgKzI2OSwxNCBAQAotIAkJCSBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9u cyAqb3B0aW9ucywKLSAJCQkgaW50IGxlbikKLSB7Ci0tICBpbnQgZWx0bGVuOwotICAgQ0hFQ0tf VFlQRURFRiAodHlwZSk7Ci0gCi0gICBpZiAoVFlQRV9MRU5HVEggKHR5cGUpID4gMCkKLSAgICAg ewotLSAgICAgIGVsdGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAgICAgICBpZiAob3B0aW9u cy0+cHJldHR5cHJpbnRfYXJyYXlzKQotIAlwcmludF9zcGFjZXNfZmlsdGVyZWQgKDIgKyAyICog cmVjdXJzZSwgc3RyZWFtKTsKLSAgICAgICAvKiBGb3IgYW4gYXJyYXkgb2YgY2hhcnMsIHByaW50 IHdpdGggc3RyaW5nIHN5bnRheC4gICovCi0tICAgICAgaWYgKGVsdGxlbiA9PSAxICYmCi0rICAg ICAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA9PSAxICYmCi0gCSAgKChUWVBFX0NPREUgKHR5cGUp ID09IFRZUEVfQ09ERV9JTlQpCi0gCSAgIHx8ICgoY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3Vh Z2UgPT0gbGFuZ3VhZ2VfbTIpCi0gCSAgICAgICAmJiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfQ0hBUikpKQotQEAgLTMyMCw3ICszMTgsNiBAQAotICAgdW5zaWduZWQgaW50IGkgPSAw OwkvKiBOdW1iZXIgb2YgY2hhcmFjdGVycyBwcmludGVkLiAgKi8KLSAgIHVuc2lnbmVkIGxlbjsK LSAgIHN0cnVjdCB0eXBlICplbHR0eXBlOwotLSAgdW5zaWduZWQgZWx0bGVuOwotICAgQ09SRV9B RERSIGFkZHI7Ci0gCi0gICBDSEVDS19UWVBFREVGICh0eXBlKTsKLUBAIC0zMzAsMTIgKzMyNywx MSBAQAotICAgICAgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPiAwICYmIFRZUEVfTEVOR1RIIChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgPiAwKQotIAl7Ci0gCSAgZWx0dHlwZSA9IGNoZWNrX3R5 cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLS0JICBlbHRsZW4gPSBUWVBFX0xFTkdU SCAoZWx0dHlwZSk7Ci0tCSAgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpIC8gZWx0bGVuOwotKwkg IGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKSAvIFRZUEVfTEVOR1RIIChlbHR0eXBlKTsKLSAJICBp ZiAob3B0aW9ucy0+cHJldHR5cHJpbnRfYXJyYXlzKQotIAkgICAgcHJpbnRfc3BhY2VzX2ZpbHRl cmVkICgyICsgMiAqIHJlY3Vyc2UsIHN0cmVhbSk7Ci0gCSAgLyogRm9yIGFuIGFycmF5IG9mIGNo YXJzLCBwcmludCB3aXRoIHN0cmluZyBzeW50YXguICAqLwotLQkgIGlmIChlbHRsZW4gPT0gMSAm JgotKwkgIGlmIChUWVBFX0xFTkdUSCAoZWx0dHlwZSkgPT0gMSAmJgotIAkgICAgICAoKFRZUEVf Q09ERSAoZWx0dHlwZSkgPT0gVFlQRV9DT0RFX0lOVCkKLSAJICAgICAgIHx8ICgoY3VycmVudF9s YW5ndWFnZS0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfbTIpCi0gCQkgICAmJiAoVFlQRV9DT0RF IChlbHR0eXBlKSA9PSBUWVBFX0NPREVfQ0hBUikpKQotLS0tIHNyYy9nZGIvbTY4ay10ZGVwLmMJ MjAxMi8wNy8yNCAxNjozNzoyNAkxLjE1OQotKysrIHNyYy9nZGIvbTY4ay10ZGVwLmMJMjAxMi8w OS8xNyAwODo1MjoxOAkxLjE2MAotQEAgLTMxNSw3ICszMTUsNiBAQAotIG02OGtfc3ZyNF9leHRy YWN0X3JldHVybl92YWx1ZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsCi0gCQkJCWdkYl9ieXRlICp2YWxidWYpCi0gewotLSAgaW50IGxlbiA9IFRZUEVfTEVO R1RIICh0eXBlKTsKLSAgIGdkYl9ieXRlIGJ1ZltNNjhLX01BWF9SRUdJU1RFUl9TSVpFXTsKLSAg IHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2ggKHJlZ2NhY2hlKTsK LSAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwot QEAgLTMyNiw3ICszMjUsNyBAQAotICAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNoZSwg TTY4S19GUDBfUkVHTlVNLCBidWYpOwotICAgICAgIGNvbnZlcnRfdHlwZWRfZmxvYXRpbmcgKGJ1 ZiwgZnByZWdfdHlwZSwgdmFsYnVmLCB0eXBlKTsKLSAgICAgfQotLSAgZWxzZSBpZiAoVFlQRV9D T0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUFRSICYmIGxlbiA9PSA0KQotKyAgZWxzZSBpZiAoVFlQ RV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUFRSICYmIFRZUEVfTEVOR1RIICh0eXBlKSA9PSA0 KQotICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVnY2FjaGUsIE02OEtfQTBfUkVHTlVNLCB2YWxi dWYpOwotICAgZWxzZQotICAgICBtNjhrX2V4dHJhY3RfcmV0dXJuX3ZhbHVlICh0eXBlLCByZWdj YWNoZSwgdmFsYnVmKTsKLUBAIC0zNTcsNyArMzU2LDYgQEAKLSBtNjhrX3N2cjRfc3RvcmVfcmV0 dXJuX3ZhbHVlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwK LSAJCQkgICAgICBjb25zdCBnZGJfYnl0ZSAqdmFsYnVmKQotIHsKLS0gIGludCBsZW4gPSBUWVBF X0xFTkdUSCAodHlwZSk7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9yZWdjYWNo ZV9hcmNoIChyZWdjYWNoZSk7Ci0gICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJj aF90ZGVwIChnZGJhcmNoKTsKLSAKLUBAIC0zNjgsNyArMzY2LDcgQEAKLSAgICAgICBjb252ZXJ0 X3R5cGVkX2Zsb2F0aW5nICh2YWxidWYsIHR5cGUsIGJ1ZiwgZnByZWdfdHlwZSk7Ci0gICAgICAg cmVnY2FjaGVfcmF3X3dyaXRlIChyZWdjYWNoZSwgTTY4S19GUDBfUkVHTlVNLCBidWYpOwotICAg ICB9Ci0tICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9QVFIgJiYgbGVu ID09IDQpCi0rICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9QVFIgJiYg VFlQRV9MRU5HVEggKHR5cGUpID09IDQpCi0gICAgIHsKLSAgICAgICByZWdjYWNoZV9yYXdfd3Jp dGUgKHJlZ2NhY2hlLCBNNjhLX0EwX1JFR05VTSwgdmFsYnVmKTsKLSAgICAgICByZWdjYWNoZV9y YXdfd3JpdGUgKHJlZ2NhY2hlLCBNNjhLX0QwX1JFR05VTSwgdmFsYnVmKTsKLS0tLSBzcmMvZ2Ri L21pcHMtdGRlcC5jCTIwMTIvMDgvMTkgMjI6MjI6NDkJMS41NjEKLSsrKyBzcmMvZ2RiL21pcHMt dGRlcC5jCTIwMTIvMDkvMTcgMDg6NTI6MTgJMS41NjIKLUBAIC01MTc0LDEzICs1MTc0LDEyIEBA Ci0gICBmb3IgKGFyZ251bSA9IDA7IGFyZ251bSA8IG5hcmdzOyBhcmdudW0rKykKLSAgICAgewot ICAgICAgIHN0cnVjdCB0eXBlICphcmdfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUg KGFyZ3NbYXJnbnVtXSkpOwotLSAgICAgIGludCBhcmdsZW4gPSBUWVBFX0xFTkdUSCAoYXJnX3R5 cGUpOwotIAotICAgICAgIC8qIEFsaWduIHRvIGRvdWJsZS13b3JkIGlmIG5lY2Vzc2FyeS4gICov Ci0gICAgICAgaWYgKG1pcHNfdHlwZV9uZWVkc19kb3VibGVfYWxpZ24gKGFyZ190eXBlKSkKLSAJ bGVuID0gYWxpZ25fdXAgKGxlbiwgTUlQUzMyX1JFR1NJWkUgKiAyKTsKLSAgICAgICAvKiBBbGxv Y2F0ZSBzcGFjZSBvbiB0aGUgc3RhY2suICAqLwotLSAgICAgIGxlbiArPSBhbGlnbl91cCAoYXJn bGVuLCBNSVBTMzJfUkVHU0laRSk7Ci0rICAgICAgbGVuICs9IGFsaWduX3VwIChUWVBFX0xFTkdU SCAoYXJnX3R5cGUpLCBNSVBTMzJfUkVHU0laRSk7Ci0gICAgIH0KLSAgIHNwIC09IGFsaWduX3Vw IChsZW4sIDE2KTsKLSAKLUBAIC01NzAzLDEwICs1NzAyLDkgQEAKLSAgIGZvciAoYXJnbnVtID0g MDsgYXJnbnVtIDwgbmFyZ3M7IGFyZ251bSsrKQotICAgICB7Ci0gICAgICAgc3RydWN0IHR5cGUg KmFyZ190eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnc1thcmdudW1dKSk7Ci0t ICAgICAgaW50IGFyZ2xlbiA9IFRZUEVfTEVOR1RIIChhcmdfdHlwZSk7Ci0gCi0gICAgICAgLyog QWxsb2NhdGUgc3BhY2Ugb24gdGhlIHN0YWNrLiAgKi8KLS0gICAgICBsZW4gKz0gYWxpZ25fdXAg KGFyZ2xlbiwgTUlQUzY0X1JFR1NJWkUpOwotKyAgICAgIGxlbiArPSBhbGlnbl91cCAoVFlQRV9M RU5HVEggKGFyZ190eXBlKSwgTUlQUzY0X1JFR1NJWkUpOwotICAgICB9Ci0gICBzcCAtPSBhbGln bl91cCAobGVuLCAxNik7Ci0gCi0tLS0gc3JjL2dkYi9zMzkwLXRkZXAuYwkyMDEyLzA1LzE4IDIx OjAyOjUwCTEuMjA2Ci0rKysgc3JjL2dkYi9zMzkwLXRkZXAuYwkyMDEyLzA5LzE3IDA4OjUyOjE4 CTEuMjA3Ci1AQCAtMjQ4OSw4ICsyNDg5LDcgQEAKLSBzdGF0aWMgaW50Ci0gczM5MF9mdW5jdGlv bl9hcmdfcGFzc19ieV9yZWZlcmVuY2UgKHN0cnVjdCB0eXBlICp0eXBlKQotIHsKLS0gIHVuc2ln bmVkIGxlbmd0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLS0gIGlmIChsZW5ndGggPiA4KQotKyAg aWYgKFRZUEVfTEVOR1RIICh0eXBlKSA+IDgpCi0gICAgIHJldHVybiAxOwotIAotICAgcmV0dXJu IChpc19zdHJ1Y3RfbGlrZSAodHlwZSkgJiYgIWlzX3Bvd2VyX29mX3R3byAoVFlQRV9MRU5HVEgg KHR5cGUpKSkKLUBAIC0yNTAzLDggKzI1MDIsNyBAQAotIHN0YXRpYyBpbnQKLSBzMzkwX2Z1bmN0 aW9uX2FyZ19mbG9hdCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gewotLSAgdW5zaWduZWQgbGVuZ3Ro ID0gVFlQRV9MRU5HVEggKHR5cGUpOwotLSAgaWYgKGxlbmd0aCA+IDgpCi0rICBpZiAoVFlQRV9M RU5HVEggKHR5cGUpID4gOCkKLSAgICAgcmV0dXJuIDA7Ci0gCi0gICByZXR1cm4gaXNfZmxvYXRf bGlrZSAodHlwZSk7Ci1AQCAtMjUxNSwxMyArMjUxMywxMiBAQAotIHN0YXRpYyBpbnQKLSBzMzkw X2Z1bmN0aW9uX2FyZ19pbnRlZ2VyIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSB7Ci0tICB1bnNpZ25l ZCBsZW5ndGggPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0tICBpZiAobGVuZ3RoID4gOCkKLSsgIGlm IChUWVBFX0xFTkdUSCAodHlwZSkgPiA4KQotICAgICByZXR1cm4gMDsKLSAKLSAgICByZXR1cm4g aXNfaW50ZWdlcl9saWtlICh0eXBlKQotIAkgIHx8IGlzX3BvaW50ZXJfbGlrZSAodHlwZSkKLS0J ICB8fCAoaXNfc3RydWN0X2xpa2UgKHR5cGUpICYmIGlzX3Bvd2VyX29mX3R3byAobGVuZ3RoKSk7 Ci0rCSAgfHwgKGlzX3N0cnVjdF9saWtlICh0eXBlKSAmJiBpc19wb3dlcl9vZl90d28gKFRZUEVf TEVOR1RIICh0eXBlKSkpOwotIH0KLSAKLSAvKiBSZXR1cm4gQVJHLCBhIGBTSU1QTEVfQVJHJywg c2lnbi1leHRlbmRlZCBvciB6ZXJvLWV4dGVuZGVkIHRvIGEgZnVsbAotQEAgLTI2MTYsMTEgKzI2 MTMsMTAgQEAKLSAgICAgewotICAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0gYXJnc1tpXTsKLSAg ICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykp OwotLSAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLSAgICAg ICBpZiAoczM5MF9mdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UgKHR5cGUpKQotICAgICAg ICAgewotLSAgICAgICAgICBzcCAtPSBsZW5ndGg7Ci0rICAgICAgICAgIHNwIC09IFRZUEVfTEVO R1RIICh0eXBlKTsKLSAgICAgICAgICAgc3AgPSBhbGlnbl9kb3duIChzcCwgYWxpZ25tZW50X29m ICh0eXBlKSk7Ci0gICAgICAgICAgIGNvcHlfYWRkcltpXSA9IHNwOwotICAgICAgICAgfQotQEAg LTI3OTksOCArMjc5NSw3IEBACi0gc3RhdGljIGVudW0gcmV0dXJuX3ZhbHVlX2NvbnZlbnRpb24K LSBzMzkwX3JldHVybl92YWx1ZV9jb252ZW50aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg c3RydWN0IHR5cGUgKnR5cGUpCi0gewotLSAgaW50IGxlbmd0aCA9IFRZUEVfTEVOR1RIICh0eXBl KTsKLS0gIGlmIChsZW5ndGggPiA4KQotKyAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA+IDgpCi0g ICAgIHJldHVybiBSRVRVUk5fVkFMVUVfU1RSVUNUX0NPTlZFTlRJT047Ci0gCi0gICBzd2l0Y2gg KFRZUEVfQ09ERSAodHlwZSkpCi0tLS0gc3JjL2dkYi9zcHUtdGRlcC5jCTIwMTIvMDUvMTggMjE6 MDI6NTAJMS44MQotKysrIHNyYy9nZGIvc3B1LXRkZXAuYwkyMDEyLzA5LzE3IDA4OjUyOjE4CTEu ODIKLUBAIC0xMzczLDggKzEzNzMsNyBAQAotICAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0gYXJn c1tpXTsKLSAgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5 cGUgKGFyZykpOwotICAgICAgIGNvbnN0IGdkYl9ieXRlICpjb250ZW50cyA9IHZhbHVlX2NvbnRl bnRzIChhcmcpOwotLSAgICAgIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0tICAgICAg aW50IG5fcmVncyA9IGFsaWduX3VwIChsZW4sIDE2KSAvIDE2OwotKyAgICAgIGludCBuX3JlZ3Mg PSBhbGlnbl91cCAoVFlQRV9MRU5HVEggKHR5cGUpLCAxNikgLyAxNjsKLSAKLSAgICAgICAvKiBJ ZiB0aGUgYXJndW1lbnQgZG9lc24ndCB3aG9sbHkgZml0IGludG8gcmVnaXN0ZXJzLCBpdCBhbmQK LSAJIGFsbCBzdWJzZXF1ZW50IGFyZ3VtZW50cyBnbyB0byB0aGUgc3RhY2suICAqLwoKZGlmZiAt LWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0xNW9mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQy NC1iaXRwb3MtMTVvZjI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmNi YTY5Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0xNW9mMjUucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LWN2cy8yMDEyLTA5L21zZzAwMTMyLmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIv MDkvMjIgMTM6MDQ6NTQJMS4xNDY5MQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDkvMjQg MTA6MjU6MDcJMS4xNDY5MgotIyMgLTEsMyArMSw4IEBACi0rMjAxMi0wOS0yNCAgU2lkZGhlc2gg UG95YXJla2FyICA8c2lkZGhlc2hAcmVkaGF0LmNvbT4KLSsKLSsJKiBtMi10eXBlcHJpbnQuYyAo bTJfZW51bSk6IEV4cGFuZCBMQVNUVkFMIHRvIExPTkdFU1QuCi0rCSogcC12YWxwcmludC5jIChw YXNjYWxfdHlwZV9wcmludF9iYXNlKTogTGlrZXdpc2UuCi0rCi0gMjAxMi0wOS0yMiAgWWFvIFFp ICA8eWFvQGNvZGVzb3VyY2VyeS5jb20+Ci0gCi0gCSogcmVtb3RlLmMgKHJlbW90ZV9nZXRfdHJh Y2Vfc3RhdHVzKTogUmVtb3ZlIHNldHRpbmcgZGVmYXVsdAotLS0tIHNyYy9nZGIvbTItdHlwZXBy aW50LmMJMjAxMi8wNC8xOCAwNjo0Njo0NgkxLjMwCi0rKysgc3JjL2dkYi9tMi10eXBlcHJpbnQu YwkyMDEyLzA5LzI0IDEwOjI1OjA5CTEuMzEKLUBAIC01ODcsNyArNTg3LDggQEAKLSB2b2lkCi0g bTJfZW51bSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBz aG93LCBpbnQgbGV2ZWwpCi0gewotLSAgaW50IGxhc3R2YWwsIGksIGxlbjsKLSsgIExPTkdFU1Qg bGFzdHZhbDsKLSsgIGludCBpLCBsZW47Ci0gCi0gICBpZiAoc2hvdyA8IDApCi0gICAgIHsKLS0t LSBzcmMvZ2RiL3AtdHlwZXByaW50LmMJMjAxMi8wOC8xNiAwNzozNjoyMAkxLjQ3Ci0rKysgc3Jj L2dkYi9wLXR5cGVwcmludC5jCTIwMTIvMDkvMjQgMTA6MjU6MDkJMS40OAotQEAgLTQ0MCw3ICs0 NDAsNyBAQAotIHsKLSAgIGludCBpOwotICAgaW50IGxlbjsKLS0gIGludCBsYXN0dmFsOwotKyAg TE9OR0VTVCBsYXN0dmFsOwotICAgZW51bQotICAgICB7Ci0gICAgICAgc19ub25lLCBzX3B1Ymxp Yywgc19wcml2YXRlLCBzX3Byb3RlY3RlZAoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJp dHBvcy0xNm9mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMTZvZjI1LnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTFkODE1Li4wMDAwMDAwCi0tLSBhL2dkYi1y aGJ6Nzk1NDI0LWJpdHBvcy0xNm9mMjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCww IEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA5L21zZzAwMTM4Lmh0 bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDkvMjQgMTA6MjU6MDcJMS4xNDY5Mgot IyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDkvMjUgMTI6MjA6MzUJMS4xNDY5MwotIyMgLTEs MyArMSw4IEBACi0rMjAxMi0wOS0yNSAgU2lkZGhlc2ggUG95YXJla2FyICA8c2lkZGhlc2hAcmVk aGF0LmNvbT4KLSsKLSsJKiBjLXR5cGVwcmludC5jIChjX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZm aXgpOiBSZW1vdmUgY2FzdCBhbmQKLSsJdXNlIHBsb25nZXN0IHRvIHByaW50IHRoZSBhcnJheSBz aXplLgotKwotIDIwMTItMDktMjQgIFNpZGRoZXNoIFBveWFyZWthciAgPHNpZGRoZXNoQHJlZGhh dC5jb20+Ci0gCi0gCSogbTItdHlwZXByaW50LmMgKG0yX2VudW0pOiBFeHBhbmQgTEFTVFZBTCB0 byBMT05HRVNULgotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYy10eXBlcHJpbnQuYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9jLXR5cGVwcmludC5j CTIwMTItMTEtMDcgMjI6MDA6NDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9jLXR5cGVwcmludC5jCTIwMTItMTEtMDcgMjI6MDM6MzkuMjY5NjUwMTU3ICswMTAw Ci1AQCAtNjMxLDcgKzYzMSw4IEBAIGNfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0 IHR5cGUKLSAJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgInZhcmlhYmxlIik7Ci0gCSAg fQotIAllbHNlIGlmIChnZXRfYXJyYXlfYm91bmRzICh0eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9i b3VuZCkpCi0tCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQiLCAoaW50KSAoaGlnaF9i b3VuZCAtIGxvd19ib3VuZCArIDEpKTsKLSsJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIl cyIsIAotKwkJCSAgICBwbG9uZ2VzdCAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpKTsKLSAJ ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiXSIpOwotIAotIAljX3R5cGVfcHJpbnRfdmFyc3Bl Y19zdWZmaXggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0sCgpkaWZmIC0tZ2l0IGEv Z2RiLXJoYno3OTU0MjQtYml0cG9zLTE3b2YyNS5wYXRjaCBiL2dkYi1yaGJ6Nzk1NDI0LWJpdHBv cy0xN29mMjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmYWRhNGUuLjAw MDAwMDAKLS0tIGEvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTE3b2YyNS5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDcyOSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8y MDEyLTA5L21zZzAwMTQyLmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDkvMjUg MTI6Mzg6NTUJMS4xNDY5NgotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDkvMjUgMTI6NDg6 NTIJMS4xNDY5NwotIyMgLTEsMyArMSwzNiBAQAotKzIwMTItMDktMjUgIFNpZGRoZXNoIFBveWFy ZWthciAgPHNpZGRoZXNoQHJlZGhhdC5jb20+Ci0rCi0rCSogYWRhLXZhbHByaW50LmMgKGFkYV92 YWxfcHJpbnRfMSk6IEVsaW1pbmF0ZSBzaW5nbGUtdXNlCi0rCXZhcmlhYmxlIExFTi4KLSsJKiBh bHBoYS10ZGVwLmMgKGFscGhhX2V4dHJhY3RfcmV0dXJuX3ZhbHVlKTogVXNlIFRZUEVfTEVOR1RI Ci0rCWRpcmVjdGx5LgotKwkoYWxwaGFfc3RvcmVfcmV0dXJuX3ZhbHVlKTogTGlrZXdpc2UuCi0r CSogYW1kNjQtdGRlcC5jIChhbWQ2NF9jbGFzc2lmeV9hZ2dyZWdhdGUpOiBMaWtld2lzZS4KLSsJ KGFtZDY0X3B1c2hfYXJndW1lbnRzKTogTGlrZXdpc2UuCi0rCSogYXgtZ2RiLmMgKGdlbl90cmFj ZV9zdGF0aWNfZmllbGRzKTogTGlrZXdpc2UuCi0rCShnZW5fdHJhY2VkX3BvcCk6IExpa2V3aXNl LgotKwkqIGJmaW4tdGRlcC5jIChiZmluX3B1c2hfZHVtbXlfY2FsbCk6IExpa2V3aXNlLgotKwkq IGJyZWFrcG9pbnQuYyAodXBkYXRlX3dhdGNocG9pbnQpOiBMaWtld2lzZS4KLSsJKiBmaW5kY21k LmMgKHBhcnNlX2ZpbmRfYXJncyk6IFVzZSBsb2NhbCB2YXJpYWJsZSBmb3IgdHlwZQotKwlpbnN0 ZWFkIG9mIGxlbmd0aC4KLSsJKiBmaW5kdmFyLmMgKGRlZmF1bHRfcmVhZF92YXJfdmFsdWUpOiBV c2UgVFlQRV9MRU5HVEggZGlyZWN0bHkuCi0rCSogaDgzMDAtdGRlcC5jIChoODMwMGhfZXh0cmFj dF9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4KLSsJKGg4MzAwX3N0b3JlX3JldHVybl92YWx1ZSk6 IExpa2V3aXNlLgotKwkqIGkzODYtZGFyd2luLXRkZXAuYyAoaTM4Nl9kYXJ3aW5fcHVzaF9kdW1t eV9jYWxsKTogTGlrZXdpc2UuCi0rCVVzZSBpMzg2X2Rhcndpbl9hcmdfdHlwZV9hbGlnbm1lbnQg ZGlyZWN0bHkuCi0rCSogaW5mY2FsbC5jIChjYWxsX2Z1bmN0aW9uX2J5X2hhbmQpOiBVc2UgVFlQ RV9MRU5HVEggZGlyZWN0bHkuCi0rCSogbG0zMi10ZGVwLmMgKGxtMzJfcHVzaF9kdW1teV9jYWxs KTogTGlrZXdpc2UuCi0rCSogbTY4aGMxMS10ZGVwLmMgKG02OGhjMTFfcHVzaF9kdW1teV9jYWxs KTogTGlrZXdpc2UuCi0rCShtNjhoYzExX2V4dHJhY3RfcmV0dXJuX3ZhbHVlKTogTGlrZXdpc2Uu Ci0rCSogbWVwLXRkZXAuYyAobWVwX3B1c2hfZHVtbXlfY2FsbCk6IExpa2V3aXNlLgotKwkqIHBy aW50Y21kLmMgKGZsb2F0X3R5cGVfZnJvbV9sZW5ndGgpOiBMaWtld2lzZS4KLSsJKiBzMzkwLXRk ZXAuYyAoczM5MF92YWx1ZV9mcm9tX3JlZ2lzdGVyKTogTGlrZXdpc2UuCi0rCSogc3RhY2suYyAo cmVhZF9mcmFtZV9hcmcpOiBMaWtld2lzZS4KLSsJKiB0cmFjZXBvaW50LmMgKGVuY29kZV9hY3Rp b25zXzEpOiBMaWtld2lzZS4KLSsJKiB2YWxvcHMuYyAodmFsdWVfZmV0Y2hfbGF6eSk6IFVzZSBs b2NhbCB2YXJpYWJsZSBmb3IgdHlwZQotKwlpbnN0ZWFkIG9mIGxlbmd0aC4gIFVzZSBUWVBFX0xF TkdUSCBkaXJlY3RseS4KLSsJKiB2YWx1ZS5jICh2YWx1ZV9jb250ZW50c19lcXVhbCk6IFVzZSBU WVBFX0xFTkdUSCBkaXJlY3RseS4KLSsKLSAyMDEyLTA5LTI1ICBKb2VsIEJyb2JlY2tlciAgPGJy b2JlY2tlckBhZGFjb3JlLmNvbT4KLSAKLSAJKiBzeW10YWIuYyAoc2tpcF9wcm9sb2d1ZV9zYWwp OiBGaXggdHlwbyBpbiBjb21tZW50LgotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRh LXZhbHByaW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIv YWRhLXZhbHByaW50LmMJMjAxMi0wNC0xOCAwODo0Njo0Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS12YWxwcmludC5jCTIwMTItMTEtMDcgMjI6MDM6NTcu NjAwNjIzNTIyICswMTAwCi1AQCAtNzMwLDkgKzczMCw4IEBAIGFkYV92YWxfcHJpbnRfMSAoc3Ry dWN0IHR5cGUgKnR5cGUsIGNvbnMKLSAgICAgICBpZiAoYWRhX2lzX2ZpeGVkX3BvaW50X3R5cGUg KHR5cGUpKQotIAl7Ci0gCSAgTE9OR0VTVCB2ID0gdW5wYWNrX2xvbmcgKHR5cGUsIHZhbGFkZHIg KyBvZmZzZXRfYWxpZ25lZCk7Ci0tCSAgaW50IGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAK LS0JICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sIGxlbiA8IDQgPyAiJS4xMWciIDogIiUuMTdn IiwKLSsJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sIFRZUEVfTEVOR1RIICh0eXBlKSA8IDQg PyAiJS4xMWciIDogIiUuMTdnIiwKLSAJCQkgICAgKGRvdWJsZSkgYWRhX2ZpeGVkX3RvX2Zsb2F0 ICh0eXBlLCB2KSk7Ci0gCSAgcmV0dXJuOwotIAl9Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9hbHBoYS10ZGVwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3Jp Zy9nZGIvYWxwaGEtdGRlcC5jCTIwMTItMDUtMTYgMTY6MzU6MDIuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hbHBoYS10ZGVwLmMJMjAxMi0xMS0wNyAyMjowMzo1 Ny42MDI2MjM1MjAgKzAxMDAKLUBAIC00NzUsMTQgKzQ3NSwxMyBAQCBhbHBoYV9leHRyYWN0X3Jl dHVybl92YWx1ZSAoc3RydWN0IHR5cGUKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9 IGdldF9yZWdjYWNoZV9hcmNoIChyZWdjYWNoZSk7Ci0gICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9v cmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7Ci0tICBpbnQgbGVuZ3RoID0gVFlQ RV9MRU5HVEggKHZhbHR5cGUpOwotICAgZ2RiX2J5dGUgcmF3X2J1ZmZlcltBTFBIQV9SRUdJU1RF Ul9TSVpFXTsKLSAgIFVMT05HRVNUIGw7Ci0gCi0gICBzd2l0Y2ggKFRZUEVfQ09ERSAodmFsdHlw ZSkpCi0gICAgIHsKLSAgICAgY2FzZSBUWVBFX0NPREVfRkxUOgotLSAgICAgIHN3aXRjaCAobGVu Z3RoKQotKyAgICAgIHN3aXRjaCAoVFlQRV9MRU5HVEggKHZhbHR5cGUpKQotIAl7Ci0gCWNhc2Ug NDoKLSAJICByZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIEFMUEhBX0ZQMF9SRUdOVU0s IHJhd19idWZmZXIpOwotQEAgLTUwNSw3ICs1MDQsNyBAQCBhbHBoYV9leHRyYWN0X3JldHVybl92 YWx1ZSAoc3RydWN0IHR5cGUKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBUWVBFX0NPREVf Q09NUExFWDoKLS0gICAgICBzd2l0Y2ggKGxlbmd0aCkKLSsgICAgICBzd2l0Y2ggKFRZUEVfTEVO R1RIICh2YWx0eXBlKSkKLSAJewotIAljYXNlIDg6Ci0gCSAgLyogPz8/IFRoaXMgaXNuJ3QgY29y cmVjdCB3cnQgdGhlIEFCSSwgYnV0IGl0J3Mgd2hhdCBHQ0MgZG9lcy4gICovCi1AQCAtNTMxLDcg KzUzMCw3IEBAIGFscGhhX2V4dHJhY3RfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgdHlwZQotICAgICBk ZWZhdWx0OgotICAgICAgIC8qIEFzc3VtZSBldmVyeXRoaW5nIGVsc2UgZGVnZW5lcmF0ZXMgdG8g YW4gaW50ZWdlci4gICovCi0gICAgICAgcmVnY2FjaGVfY29va2VkX3JlYWRfdW5zaWduZWQgKHJl Z2NhY2hlLCBBTFBIQV9WMF9SRUdOVU0sICZsKTsKLS0gICAgICBzdG9yZV91bnNpZ25lZF9pbnRl Z2VyICh2YWxidWYsIGxlbmd0aCwgYnl0ZV9vcmRlciwgbCk7Ci0rICAgICAgc3RvcmVfdW5zaWdu ZWRfaW50ZWdlciAodmFsYnVmLCBUWVBFX0xFTkdUSCAodmFsdHlwZSksIGJ5dGVfb3JkZXIsIGwp OwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gfQotQEAgLTU0NCwxNCArNTQzLDEzIEBAIGFscGhh X3N0b3JlX3JldHVybl92YWx1ZSAoc3RydWN0IHR5cGUgKnYKLSAJCQkgIGNvbnN0IGdkYl9ieXRl ICp2YWxidWYpCi0gewotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfcmVnY2FjaGVf YXJjaCAocmVnY2FjaGUpOwotLSAgaW50IGxlbmd0aCA9IFRZUEVfTEVOR1RIICh2YWx0eXBlKTsK LSAgIGdkYl9ieXRlIHJhd19idWZmZXJbQUxQSEFfUkVHSVNURVJfU0laRV07Ci0gICBVTE9OR0VT VCBsOwotIAotICAgc3dpdGNoIChUWVBFX0NPREUgKHZhbHR5cGUpKQotICAgICB7Ci0gICAgIGNh c2UgVFlQRV9DT0RFX0ZMVDoKLS0gICAgICBzd2l0Y2ggKGxlbmd0aCkKLSsgICAgICBzd2l0Y2gg KFRZUEVfTEVOR1RIICh2YWx0eXBlKSkKLSAJewotIAljYXNlIDQ6Ci0gCSAgYWxwaGFfbGRzIChn ZGJhcmNoLCByYXdfYnVmZmVyLCB2YWxidWYpOwotQEAgLTU3NSw3ICs1NzMsNyBAQCBhbHBoYV9z dG9yZV9yZXR1cm5fdmFsdWUgKHN0cnVjdCB0eXBlICp2Ci0gICAgICAgYnJlYWs7Ci0gCi0gICAg IGNhc2UgVFlQRV9DT0RFX0NPTVBMRVg6Ci0tICAgICAgc3dpdGNoIChsZW5ndGgpCi0rICAgICAg c3dpdGNoIChUWVBFX0xFTkdUSCAodmFsdHlwZSkpCi0gCXsKLSAJY2FzZSA4OgotIAkgIC8qID8/ PyBUaGlzIGlzbid0IGNvcnJlY3Qgd3J0IHRoZSBBQkksIGJ1dCBpdCdzIHdoYXQgR0NDIGRvZXMu ICAqLwotQEAgLTYwMyw3ICs2MDEsNyBAQCBhbHBoYV9zdG9yZV9yZXR1cm5fdmFsdWUgKHN0cnVj dCB0eXBlICp2Ci0gICAgICAgLyogQXNzdW1lIGV2ZXJ5dGhpbmcgZWxzZSBkZWdlbmVyYXRlcyB0 byBhbiBpbnRlZ2VyLiAgKi8KLSAgICAgICAvKiAzMi1iaXQgdmFsdWVzIG11c3QgYmUgc2lnbi1l eHRlbmRlZCB0byA2NCBiaXRzCi0gCSBldmVuIGlmIHRoZSBiYXNlIGRhdGEgdHlwZSBpcyB1bnNp Z25lZC4gICovCi0tICAgICAgaWYgKGxlbmd0aCA9PSA0KQotKyAgICAgIGlmIChUWVBFX0xFTkdU SCAodmFsdHlwZSkgPT0gNCkKLSAJdmFsdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1 aWx0aW5faW50MzI7Ci0gICAgICAgbCA9IHVucGFja19sb25nICh2YWx0eXBlLCB2YWxidWYpOwot ICAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIEFMUEhBX1Yw X1JFR05VTSwgbCk7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hbWQ2NC10ZGVwLmMK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvYW1kNjQtdGRlcC5j CTIwMTItMTEtMDcgMjI6MDA6NDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9hbWQ2NC10ZGVwLmMJMjAxMi0xMS0wNyAyMjowMzo1Ny42MjM2MjM0ODkgKzAxMDAK LUBAIC00NDYsMTIgKzQ0NiwxMCBAQCBhbWQ2NF9ub25fcG9kX3AgKHN0cnVjdCB0eXBlICp0eXBl KQotIHN0YXRpYyB2b2lkCi0gYW1kNjRfY2xhc3NpZnlfYWdncmVnYXRlIChzdHJ1Y3QgdHlwZSAq dHlwZSwgZW51bSBhbWQ2NF9yZWdfY2xhc3MgY2xhc3NbMl0pCi0gewotLSAgaW50IGxlbiA9IFRZ UEVfTEVOR1RIICh0eXBlKTsKLS0KLSAgIC8qIDEuIElmIHRoZSBzaXplIG9mIGFuIG9iamVjdCBp cyBsYXJnZXIgdGhhbiB0d28gZWlnaHRieXRlcywgb3IgaW4KLSAgICAgICAgIEMrKywgaXMgYSBu b24tUE9EIHN0cnVjdHVyZSBvciB1bmlvbiB0eXBlLCBvciBjb250YWlucwotICAgICAgICAgdW5h bGlnbmVkIGZpZWxkcywgaXQgaGFzIGNsYXNzIG1lbW9yeS4gICovCi0tICBpZiAobGVuID4gMTYg fHwgYW1kNjRfbm9uX3BvZF9wICh0eXBlKSkKLSsgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPiAx NiB8fCBhbWQ2NF9ub25fcG9kX3AgKHR5cGUpKQotICAgICB7Ci0gICAgICAgY2xhc3NbMF0gPSBj bGFzc1sxXSA9IEFNRDY0X01FTU9SWTsKLSAgICAgICByZXR1cm47Ci1AQCAtNDcxLDcgKzQ2OSw3 IEBAIGFtZDY0X2NsYXNzaWZ5X2FnZ3JlZ2F0ZSAoc3RydWN0IHR5cGUgKnQKLSAKLSAgICAgICAv KiBBbGwgZmllbGRzIGluIGFuIGFycmF5IGhhdmUgdGhlIHNhbWUgdHlwZS4gICovCi0gICAgICAg YW1kNjRfY2xhc3NpZnkgKHN1YnR5cGUsIGNsYXNzKTsKLS0gICAgICBpZiAobGVuID4gOCAmJiBj bGFzc1sxXSA9PSBBTUQ2NF9OT19DTEFTUykKLSsgICAgICBpZiAoVFlQRV9MRU5HVEggKHR5cGUp ID4gOCAmJiBjbGFzc1sxXSA9PSBBTUQ2NF9OT19DTEFTUykKLSAJY2xhc3NbMV0gPSBjbGFzc1sw XTsKLSAgICAgfQotICAgZWxzZQotQEAgLTgzOSwxMCArODM3LDkgQEAgYW1kNjRfcHVzaF9hcmd1 bWVudHMgKHN0cnVjdCByZWdjYWNoZSAqcgotICAgICB7Ci0gICAgICAgc3RydWN0IHR5cGUgKnR5 cGUgPSB2YWx1ZV90eXBlIChzdGFja19hcmdzW2ldKTsKLSAgICAgICBjb25zdCBnZGJfYnl0ZSAq dmFsYnVmID0gdmFsdWVfY29udGVudHMgKHN0YWNrX2FyZ3NbaV0pOwotLSAgICAgIGludCBsZW4g PSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gICAgICAgQ09SRV9BRERSIGFyZ19hZGRyID0gc3AgKyBl bGVtZW50ICogODsKLSAKLS0gICAgICB3cml0ZV9tZW1vcnkgKGFyZ19hZGRyLCB2YWxidWYsIGxl bik7Ci0rICAgICAgd3JpdGVfbWVtb3J5IChhcmdfYWRkciwgdmFsYnVmLCBUWVBFX0xFTkdUSCAo dHlwZSkpOwotICAgICAgIGlmIChhcmdfYWRkcl9yZWdub1tpXSA+PSAwKQotICAgICAgICAgewot ICAgICAgICAgICAvKiBXZSBhbHNvIG5lZWQgdG8gc3RvcmUgdGhlIGFkZHJlc3Mgb2YgdGhhdCBh cmd1bWVudCBpbgotQEAgLTg1Myw3ICs4NTAsNyBAQCBhbWQ2NF9wdXNoX2FyZ3VtZW50cyAoc3Ry dWN0IHJlZ2NhY2hlICpyCi0gICAgICAgICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGJ1Ziwg OCwgYnl0ZV9vcmRlciwgYXJnX2FkZHIpOwotICAgICAgICAgICByZWdjYWNoZV9jb29rZWRfd3Jp dGUgKHJlZ2NhY2hlLCBhcmdfYWRkcl9yZWdub1tpXSwgYnVmKTsKLSAgICAgICAgIH0KLS0gICAg ICBlbGVtZW50ICs9ICgobGVuICsgNykgLyA4KTsKLSsgICAgICBlbGVtZW50ICs9ICgoVFlQRV9M RU5HVEggKHR5cGUpICsgNykgLyA4KTsKLSAgICAgfQotIAotICAgLyogVGhlIHBzQUJJIHNheXMg dGhhdCAiRm9yIGNhbGxzIHRoYXQgbWF5IGNhbGwgZnVuY3Rpb25zIHRoYXQgdXNlCi1JbmRleDog Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9heC1nZGIuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu MC4yMDEyMDkyNi5vcmlnL2dkYi9heC1nZGIuYwkyMDEyLTA3LTA1IDAzOjAzOjAxLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYXgtZ2RiLmMJMjAxMi0xMS0wNyAy MjowMzo1Ny42MjY2MjM0ODQgKzAxMDAKLUBAIC0zNjcsOSArMzY3LDkgQEAgZ2VuX3RyYWNlX3N0 YXRpY19maWVsZHMgKHN0cnVjdCBnZGJhcmNoCi0gCSAgICB7Ci0gCSAgICBjYXNlIGF4c19sdmFs dWVfbWVtb3J5OgotIAkgICAgICB7Ci0tCQlpbnQgbGVuZ3RoID0gVFlQRV9MRU5HVEggKGNoZWNr X3R5cGVkZWYgKHZhbHVlLnR5cGUpKTsKLS0KLS0JCWF4X2NvbnN0X2wgKGF4LCBsZW5ndGgpOwot KwkgICAgICAgIC8qIEluaXRpYWxpemUgdGhlIFRZUEVfTEVOR1RIIGlmIGl0IGlzIGEgdHlwZWRl Zi4gICovCi0rCSAgICAgICAgY2hlY2tfdHlwZWRlZiAodmFsdWUudHlwZSk7Ci0rCQlheF9jb25z dF9sIChheCwgVFlQRV9MRU5HVEggKHZhbHVlLnR5cGUpKTsKLSAJCWF4X3NpbXBsZSAoYXgsIGFv cF90cmFjZSk7Ci0gCSAgICAgIH0KLSAJICAgICAgYnJlYWs7Ci1AQCAtNDI1LDE3ICs0MjUsMTgg QEAgZ2VuX3RyYWNlZF9wb3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotIAotICAgICAgIGNh c2UgYXhzX2x2YWx1ZV9tZW1vcnk6Ci0gCXsKLS0JICBpbnQgbGVuZ3RoID0gVFlQRV9MRU5HVEgg KGNoZWNrX3R5cGVkZWYgKHZhbHVlLT50eXBlKSk7Ci0tCi0gCSAgaWYgKHN0cmluZ190cmFjZSkK LSAJICAgIGF4X3NpbXBsZSAoYXgsIGFvcF9kdXApOwotIAotKwkgIC8qIEluaXRpYWxpemUgdGhl IFRZUEVfTEVOR1RIIGlmIGl0IGlzIGEgdHlwZWRlZi4gICovCi0rCSAgY2hlY2tfdHlwZWRlZiAo dmFsdWUtPnR5cGUpOwotKwotIAkgIC8qIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gdHJ5aW5nIHRvIHVz ZSBhIHRyYWNlX3F1aWNrIGJ5dGVjb2RlCi0gCSAgICAgaGVyZSwgc2luY2UgInRyYWNlX3F1aWNr IFNJWkUgcG9wIiBpcyB0aHJlZSBieXRlcywgd2hlcmVhcwotIAkgICAgICJjb25zdDggU0laRSB0 cmFjZSIgaXMgYWxzbyB0aHJlZSBieXRlcywgZG9lcyB0aGUgc2FtZQotIAkgICAgIHRoaW5nLCBh bmQgdGhlIHNpbXBsZXN0IGNvZGUgd2hpY2ggZ2VuZXJhdGVzIHRoYXQgd2lsbCBhbHNvCi0gCSAg ICAgd29yayBjb3JyZWN0bHkgZm9yIG9iamVjdHMgd2l0aCBsYXJnZSBzaXplcy4gICovCi0tCSAg YXhfY29uc3RfbCAoYXgsIGxlbmd0aCk7Ci0rCSAgYXhfY29uc3RfbCAoYXgsIFRZUEVfTEVOR1RI ICh2YWx1ZS0+dHlwZSkpOwotIAkgIGF4X3NpbXBsZSAoYXgsIGFvcF90cmFjZSk7Ci0gCi0gCSAg aWYgKHN0cmluZ190cmFjZSkKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2JmaW4tdGRl cC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2JmaW4tdGRl cC5jCTIwMTItMDUtMTYgMTY6MzU6MDMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9iZmluLXRkZXAuYwkyMDEyLTExLTA3IDIyOjAzOjU3LjY0MzYyMzQ2MCArMDEw MAotQEAgLTUxMyw5ICs1MTMsOCBAQCBiZmluX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFy Y2ggKmdkCi0gICBmb3IgKGkgPSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQotICAgICB7Ci0gICAg ICAgc3RydWN0IHR5cGUgKnZhbHVlX3R5cGUgPSB2YWx1ZV9lbmNsb3NpbmdfdHlwZSAoYXJnc1tp XSk7Ci0tICAgICAgaW50IGxlbiA9IFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlKTsKLSAKLS0gICAg ICB0b3RhbF9sZW4gKz0gKGxlbiArIDMpICYgfjM7Ci0rICAgICAgdG90YWxfbGVuICs9IChUWVBF X0xFTkdUSCAodmFsdWVfdHlwZSkgKyAzKSAmIH4zOwotICAgICB9Ci0gCi0gICAvKiBBdCBsZWFz dCB0d2VsdmUgYnl0ZXMgb2Ygc3RhY2sgc3BhY2UgbXVzdCBiZSBhbGxvY2F0ZWQgZm9yIHRoZSBm dW5jdGlvbidzCi1AQCAtNTMxLDggKzUzMCw3IEBAIGJmaW5fcHVzaF9kdW1teV9jYWxsIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2QKLSAgICAgewotICAgICAgIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlID0g dmFsdWVfZW5jbG9zaW5nX3R5cGUgKGFyZ3NbaV0pOwotICAgICAgIHN0cnVjdCB0eXBlICphcmdf dHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUpOwotLSAgICAgIGludCBsZW4gPSBUWVBF X0xFTkdUSCAodmFsdWVfdHlwZSk7Ci0tICAgICAgaW50IGNvbnRhaW5lcl9sZW4gPSAobGVuICsg MykgJiB+MzsKLSsgICAgICBpbnQgY29udGFpbmVyX2xlbiA9IChUWVBFX0xFTkdUSCAodmFsdWVf dHlwZSkgKyAzKSAmIH4zOwotIAotICAgICAgIHNwIC09IGNvbnRhaW5lcl9sZW47Ci0gICAgICAg d3JpdGVfbWVtb3J5IChzcCwgdmFsdWVfY29udGVudHNfd3JpdGVhYmxlIChhcmdzW2ldKSwgY29u dGFpbmVyX2xlbik7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9icmVha3BvaW50LmMK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvYnJlYWtwb2ludC5j CTIwMTItMTEtMDcgMjI6MDA6NDMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9icmVha3BvaW50LmMJMjAxMi0xMS0wNyAyMjowMzo1Ny42NjA2MjM0MzQgKzAxMDAK LUBAIC0xODQ0LDExICsxODQ0LDEwIEBAIHVwZGF0ZV93YXRjaHBvaW50IChzdHJ1Y3Qgd2F0Y2hw b2ludCAqYiwKLSAJCSAgICAgICYmIFRZUEVfQ09ERSAodnR5cGUpICE9IFRZUEVfQ09ERV9BUlJB WSkpCi0gCQl7Ci0gCQkgIENPUkVfQUREUiBhZGRyOwotLQkJICBpbnQgbGVuLCB0eXBlOwotKwkJ ICBpbnQgdHlwZTsKLSAJCSAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2MsICoqdG1wOwotIAotIAkJ ICBhZGRyID0gdmFsdWVfYWRkcmVzcyAodik7Ci0tCQkgIGxlbiA9IFRZUEVfTEVOR1RIICh2YWx1 ZV90eXBlICh2KSk7Ci0gCQkgIHR5cGUgPSBod193cml0ZTsKLSAJCSAgaWYgKGItPmJhc2UudHlw ZSA9PSBicF9yZWFkX3dhdGNocG9pbnQpCi0gCQkgICAgdHlwZSA9IGh3X3JlYWQ7Ci1AQCAtMTg2 Myw3ICsxODYyLDcgQEAgdXBkYXRlX3dhdGNocG9pbnQgKHN0cnVjdCB3YXRjaHBvaW50ICpiLAot IAotIAkJICBsb2MtPnBzcGFjZSA9IGZyYW1lX3BzcGFjZTsKLSAJCSAgbG9jLT5hZGRyZXNzID0g YWRkcjsKLS0JCSAgbG9jLT5sZW5ndGggPSBsZW47Ci0rCQkgIGxvYy0+bGVuZ3RoID0gVFlQRV9M RU5HVEggKHZhbHVlX3R5cGUgKHYpKTsKLSAJCSAgbG9jLT53YXRjaHBvaW50X3R5cGUgPSB0eXBl OwotIAkJfQotIAkgICAgfQotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZmluZGNtZC5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2ZpbmRjbWQuYwky MDEyLTA3LTA2IDE3OjUxOjM5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvZmluZGNtZC5jCTIwMTItMTEtMDcgMjI6MDM6NTcuNjc2NjIzNDExICswMTAwCi1AQCAt MTY5LDE5ICsxNjksMTkgQEAgcGFyc2VfZmluZF9hcmdzIChjaGFyICphcmdzLCBVTE9OR0VTVCAq bQotICAgd2hpbGUgKCpzICE9ICdcMCcpCi0gICAgIHsKLSAgICAgICBMT05HRVNUIHg7Ci0tICAg ICAgaW50IHZhbF9ieXRlczsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqdDsKLSAgICAgICBVTE9OR0VT VCBwYXR0ZXJuX2J1Zl9zaXplX25lZWQ7Ci0gCi0gICAgICAgd2hpbGUgKGlzc3BhY2UgKCpzKSkK LSAJKytzOwotIAotICAgICAgIHYgPSBwYXJzZV90b19jb21tYV9hbmRfZXZhbCAoJnMpOwotLSAg ICAgIHZhbF9ieXRlcyA9IFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlICh2KSk7Ci0rICAgICAgdCA9 IHZhbHVlX3R5cGUgKHYpOwotIAotICAgICAgIC8qIEtlZXAgaXQgc2ltcGxlIGFuZCBhc3N1bWUg c2l6ZSA9PSAnZycgd2hlbiB3YXRjaGluZyBmb3Igd2hlbiB3ZQotIAkgbmVlZCB0byBncm93IHRo ZSBwYXR0ZXJuIGJ1Zi4gICovCi0gICAgICAgcGF0dGVybl9idWZfc2l6ZV9uZWVkID0gKHBhdHRl cm5fYnVmX2VuZCAtIHBhdHRlcm5fYnVmCi0tCQkJICAgICAgICsgbWF4ICh2YWxfYnl0ZXMsIHNp emVvZiAoaW50NjRfdCkpKTsKLSsJCQkgICAgICAgKyBtYXggKFRZUEVfTEVOR1RIICh0KSwgc2l6 ZW9mIChpbnQ2NF90KSkpOwotICAgICAgIGlmIChwYXR0ZXJuX2J1Zl9zaXplX25lZWQgPiBwYXR0 ZXJuX2J1Zl9zaXplKQotIAl7Ci0gCSAgc2l6ZV90IGN1cnJlbnRfb2Zmc2V0ID0gcGF0dGVybl9i dWZfZW5kIC0gcGF0dGVybl9idWY7Ci1AQCAtMjE1LDggKzIxNSw4IEBAIHBhcnNlX2ZpbmRfYXJn cyAoY2hhciAqYXJncywgVUxPTkdFU1QgKm0KLSAJfQotICAgICAgIGVsc2UKLSAJewotLQkgIG1l bWNweSAocGF0dGVybl9idWZfZW5kLCB2YWx1ZV9jb250ZW50cyAodiksIHZhbF9ieXRlcyk7Ci0t CSAgcGF0dGVybl9idWZfZW5kICs9IHZhbF9ieXRlczsKLSsJICBtZW1jcHkgKHBhdHRlcm5fYnVm X2VuZCwgdmFsdWVfY29udGVudHMgKHYpLCBUWVBFX0xFTkdUSCAodCkpOwotKwkgIHBhdHRlcm5f YnVmX2VuZCArPSBUWVBFX0xFTkdUSCAodCk7Ci0gCX0KLSAKLSAgICAgICBpZiAoKnMgPT0gJywn KQotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaDgzMDAtdGRlcC5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2g4MzAwLXRkZXAuYwkyMDEyLTExLTA3 IDIyOjAwOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaDgz MDAtdGRlcC5jCTIwMTItMTEtMDcgMjI6MDM6NTcuNjc5NjIzNDA5ICswMTAwCi1AQCAtNzg1LDE2 ICs3ODUsMTUgQEAgaDgzMDBoX2V4dHJhY3RfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgdHlwZQotIHsK LSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2ggKHJlZ2NhY2hl KTsKLSAgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChn ZGJhcmNoKTsKLS0gIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gICBVTE9OR0VTVCBj OwotIAotLSAgc3dpdGNoIChsZW4pCi0rICBzd2l0Y2ggKFRZUEVfTEVOR1RIICh0eXBlKSkKLSAg ICAgewotICAgICBjYXNlIDE6Ci0gICAgIGNhc2UgMjoKLSAgICAgY2FzZSA0OgotICAgICAgIHJl Z2NhY2hlX2Nvb2tlZF9yZWFkX3Vuc2lnbmVkIChyZWdjYWNoZSwgRV9SRVQwX1JFR05VTSwgJmMp OwotLSAgICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKHZhbGJ1ZiwgbGVuLCBieXRlX29yZGVy LCBjKTsKLSsgICAgICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyICh2YWxidWYsIFRZUEVfTEVOR1RI ICh0eXBlKSwgYnl0ZV9vcmRlciwgYyk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgODoJCQkv KiBsb25nIGxvbmcgaXMgbm93IDggYnl0ZXMuICAqLwotICAgICAgIGlmIChUWVBFX0NPREUgKHR5 cGUpID09IFRZUEVfQ09ERV9JTlQpCi1AQCAtODUyLDE4ICs4NTEsMTcgQEAgaDgzMDBfc3RvcmVf cmV0dXJuX3ZhbHVlIChzdHJ1Y3QgdHlwZSAqdAotIHsKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2ggKHJlZ2NhY2hlKTsKLSAgIGVudW0gYmZkX2VuZGlhbiBi eXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsKLS0gIGludCBsZW4gPSBU WVBFX0xFTkdUSCAodHlwZSk7Ci0gICBVTE9OR0VTVCB2YWw7Ci0gCi0tICBzd2l0Y2ggKGxlbikK LSsgIHN3aXRjaCAoVFlQRV9MRU5HVEggKHR5cGUpKQotICAgICB7Ci0gICAgIGNhc2UgMToKLSAg ICAgY2FzZSAyOgkJCS8qIHNob3J0Li4uICAqLwotLSAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWdu ZWRfaW50ZWdlciAodmFsYnVmLCBsZW4sIGJ5dGVfb3JkZXIpOwotKyAgICAgIHZhbCA9IGV4dHJh Y3RfdW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCBUWVBFX0xFTkdUSCAodHlwZSksIGJ5dGVfb3Jk ZXIpOwotICAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIEVf UkVUMF9SRUdOVU0sIHZhbCk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgNDoJCQkvKiBsb25n LCBmbG9hdCAqLwotLSAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAodmFsYnVm LCBsZW4sIGJ5dGVfb3JkZXIpOwotKyAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdl ciAodmFsYnVmLCBUWVBFX0xFTkdUSCAodHlwZSksIGJ5dGVfb3JkZXIpOwotICAgICAgIHJlZ2Nh Y2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIEVfUkVUMF9SRUdOVU0sCi0gCQkJ CSAgICAgICh2YWwgPj4gMTYpICYgMHhmZmZmKTsKLSAgICAgICByZWdjYWNoZV9jb29rZWRfd3Jp dGVfdW5zaWduZWQgKHJlZ2NhY2hlLCBFX1JFVDFfUkVHTlVNLCB2YWwgJiAweGZmZmYpOwotQEAg LTg4MiwxOSArODgwLDE4IEBAIGg4MzAwaF9zdG9yZV9yZXR1cm5fdmFsdWUgKHN0cnVjdCB0eXBl ICoKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9yZWdjYWNoZV9hcmNoIChy ZWdjYWNoZSk7Ci0gICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9v cmRlciAoZ2RiYXJjaCk7Ci0tICBpbnQgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOwotICAgVUxP TkdFU1QgdmFsOwotIAotLSAgc3dpdGNoIChsZW4pCi0rICBzd2l0Y2ggKFRZUEVfTEVOR1RIICh0 eXBlKSkKLSAgICAgewotICAgICBjYXNlIDE6Ci0gICAgIGNhc2UgMjoKLSAgICAgY2FzZSA0OgkJ CS8qIGxvbmcsIGZsb2F0ICovCi0tICAgICAgdmFsID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2Vy ICh2YWxidWYsIGxlbiwgYnl0ZV9vcmRlcik7Ci0rICAgICAgdmFsID0gZXh0cmFjdF91bnNpZ25l ZF9pbnRlZ2VyICh2YWxidWYsIFRZUEVfTEVOR1RIICh0eXBlKSwgYnl0ZV9vcmRlcik7Ci0gICAg ICAgcmVnY2FjaGVfY29va2VkX3dyaXRlX3Vuc2lnbmVkIChyZWdjYWNoZSwgRV9SRVQwX1JFR05V TSwgdmFsKTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSA4OgotLSAgICAgIHZhbCA9IGV4dHJh Y3RfdW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCBsZW4sIGJ5dGVfb3JkZXIpOwotKyAgICAgIHZh bCA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCBUWVBFX0xFTkdUSCAodHlwZSks IGJ5dGVfb3JkZXIpOwotICAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVn Y2FjaGUsIEVfUkVUMF9SRUdOVU0sCi0gCQkJCSAgICAgICh2YWwgPj4gMzIpICYgMHhmZmZmZmZm Zik7Ci0gICAgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlX3Vuc2lnbmVkIChyZWdjYWNoZSwgRV9S RVQxX1JFR05VTSwKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2kzODYtZGFyd2luLXRk ZXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9pMzg2LWRh cndpbi10ZGVwLmMJMjAxMi0wNC0wMiAxNToxNTo0OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL2kzODYtZGFyd2luLXRkZXAuYwkyMDEyLTExLTA3IDIyOjAzOjU3 LjY4MDYyMzQwNyArMDEwMAotQEAgLTE5NiwxMyArMTk2LDEyIEBAIGkzODZfZGFyd2luX3B1c2hf ZHVtbXlfY2FsbCAoc3RydWN0IGdkYmEKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIGVsc2UK LSAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICBpbnQgbGVuID0gVFlQRV9MRU5HVEggKGFy Z190eXBlKTsKLS0gICAgICAgICAgICAgIGludCBhbGlnbiA9IGkzODZfZGFyd2luX2FyZ190eXBl X2FsaWdubWVudCAoYXJnX3R5cGUpOwotLQotLSAgICAgICAgICAgICAgYXJnc19zcGFjZSA9IGFs aWduX3VwIChhcmdzX3NwYWNlLCBhbGlnbik7Ci0rICAgICAgICAgICAgICBhcmdzX3NwYWNlID0g YWxpZ25fdXAgKGFyZ3Nfc3BhY2UsCi0rCQkJCSAgICAgaTM4Nl9kYXJ3aW5fYXJnX3R5cGVfYWxp Z25tZW50IChhcmdfdHlwZSkpOwotICAgICAgICAgICAgICAgaWYgKHdyaXRlX3Bhc3MpCi0gICAg ICAgICAgICAgICAgIHdyaXRlX21lbW9yeSAoc3AgKyBhcmdzX3NwYWNlLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZhbHVlX2NvbnRlbnRzX2FsbCAoYXJnc1tpXSksIGxlbik7Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfY29udGVudHNfYWxsIChhcmdzW2ld KSwKLSsJCQkgICAgICBUWVBFX0xFTkdUSCAoYXJnX3R5cGUpKTsKLSAKLSAgICAgICAgICAgICAg IC8qIFRoZSBTeXN0ZW0gViBBQkkgc2F5cyB0aGF0OgotICAgICAgICAgICAgICAgICAgCi1AQCAt MjExLDcgKzIxMCw3IEBAIGkzODZfZGFyd2luX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmEK LSAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiB0aGUgc2l6ZSBvZiB0aGUgYXJndW1lbnQu IgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICBUaGlzIG1ha2VzIHN1cmUg dGhlIHN0YWNrIHN0YXlzIHdvcmQtYWxpZ25lZC4gICovCi0tICAgICAgICAgICAgICBhcmdzX3Nw YWNlICs9IGFsaWduX3VwIChsZW4sIDQpOwotKyAgICAgICAgICAgICAgYXJnc19zcGFjZSArPSBh bGlnbl91cCAoVFlQRV9MRU5HVEggKGFyZ190eXBlKSwgNCk7Ci0gICAgICAgICAgICAgfQotICAg ICAgICAgfQotIAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaW5mY2FsbC5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2luZmNhbGwuYwkyMDEyLTA3 LTMxIDA5OjM0OjM5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv aW5mY2FsbC5jCTIwMTItMTEtMDcgMjI6MDM6NTcuNjk0NjIzMzg1ICswMTAwCi1AQCAtNzA5LDEz ICs3MDksMTEgQEAgY2FsbF9mdW5jdGlvbl9ieV9oYW5kIChzdHJ1Y3QgdmFsdWUgKmZ1bgotIAot ICAgaWYgKHN0cnVjdF9yZXR1cm4gfHwgaGlkZGVuX2ZpcnN0X3BhcmFtX3ApCi0gICAgIHsKLS0g ICAgICBpbnQgbGVuID0gVFlQRV9MRU5HVEggKHZhbHVlc190eXBlKTsKLS0KLSAgICAgICBpZiAo Z2RiYXJjaF9pbm5lcl90aGFuIChnZGJhcmNoLCAxLCAyKSkKLSAJewotIAkgIC8qIFN0YWNrIGdy b3dzIGRvd253YXJkLiAgQWxpZ24gU1RSVUNUX0FERFIgYW5kIFNQIGFmdGVyCi0gICAgICAgICAg ICAgIG1ha2luZyBzcGFjZSBmb3IgdGhlIHJldHVybiB2YWx1ZS4gICovCi0tCSAgc3AgLT0gbGVu OwotKwkgIHNwIC09IFRZUEVfTEVOR1RIICh2YWx1ZXNfdHlwZSk7Ci0gCSAgaWYgKGdkYmFyY2hf ZnJhbWVfYWxpZ25fcCAoZ2RiYXJjaCkpCi0gCSAgICBzcCA9IGdkYmFyY2hfZnJhbWVfYWxpZ24g KGdkYmFyY2gsIHNwKTsKLSAJICBzdHJ1Y3RfYWRkciA9IHNwOwotQEAgLTcyNyw3ICs3MjUsNyBA QCBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKHN0cnVjdCB2YWx1ZSAqZnVuCi0gCSAgaWYgKGdkYmFy Y2hfZnJhbWVfYWxpZ25fcCAoZ2RiYXJjaCkpCi0gCSAgICBzcCA9IGdkYmFyY2hfZnJhbWVfYWxp Z24gKGdkYmFyY2gsIHNwKTsKLSAJICBzdHJ1Y3RfYWRkciA9IHNwOwotLQkgIHNwICs9IGxlbjsK LSsJICBzcCArPSBUWVBFX0xFTkdUSCAodmFsdWVzX3R5cGUpOwotIAkgIGlmIChnZGJhcmNoX2Zy YW1lX2FsaWduX3AgKGdkYmFyY2gpKQotIAkgICAgc3AgPSBnZGJhcmNoX2ZyYW1lX2FsaWduIChn ZGJhcmNoLCBzcCk7Ci0gCX0KLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2xtMzItdGRl cC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2xtMzItdGRl cC5jCTIwMTItMDUtMTggMjM6MDI6NDguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9sbTMyLXRkZXAuYwkyMDEyLTExLTA3IDIyOjAzOjU3LjY5NTYyMzM4NCArMDEw MAotQEAgLTI2MSw3ICsyNjEsNiBAQCBsbTMyX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFy Y2ggKmdkCi0gICAgICAgc3RydWN0IHZhbHVlICphcmcgPSBhcmdzW2ldOwotICAgICAgIHN0cnVj dCB0eXBlICphcmdfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykpOwotICAg ICAgIGdkYl9ieXRlICpjb250ZW50czsKLS0gICAgICBpbnQgbGVuOwotICAgICAgIFVMT05HRVNU IHZhbDsKLSAKLSAgICAgICAvKiBQcm9tb3RlIHNtYWxsIGludGVnZXIgdHlwZXMgdG8gaW50LiAg Ki8KLUBAIC0yODMsOCArMjgyLDggQEAgbG0zMl9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJh cmNoICpnZAotICAgICAgIC8qIEZJWE1FOiBIYW5kbGUgc3RydWN0dXJlcy4gICovCi0gCi0gICAg ICAgY29udGVudHMgPSAoZ2RiX2J5dGUgKikgdmFsdWVfY29udGVudHMgKGFyZyk7Ci0tICAgICAg bGVuID0gVFlQRV9MRU5HVEggKGFyZ190eXBlKTsKLS0gICAgICB2YWwgPSBleHRyYWN0X3Vuc2ln bmVkX2ludGVnZXIgKGNvbnRlbnRzLCBsZW4sIGJ5dGVfb3JkZXIpOwotKyAgICAgIHZhbCA9IGV4 dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoY29udGVudHMsIFRZUEVfTEVOR1RIIChhcmdfdHlwZSks Ci0rCQkJCSAgICAgIGJ5dGVfb3JkZXIpOwotIAotICAgICAgIC8qIEZpcnN0IG51bV9hcmdfcmVn cyBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgYnkgcmVnaXN0ZXJzLCAKLSAgICAgICAgICBhbmQgdGhl IHJlc3QgYXJlIHBhc3NlZCBvbiB0aGUgc3RhY2suICAqLwotQEAgLTI5Miw3ICsyOTEsNyBAQCBs bTMyX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCi0gCXJlZ2NhY2hlX2Nvb2tl ZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIGZpcnN0X2FyZ19yZWcgKyBpLCB2YWwpOwotICAg ICAgIGVsc2UKLSAJewotLQkgIHdyaXRlX21lbW9yeSAoc3AsICh2b2lkICopICZ2YWwsIGxlbik7 Ci0rCSAgd3JpdGVfbWVtb3J5IChzcCwgKHZvaWQgKikgJnZhbCwgVFlQRV9MRU5HVEggKGFyZ190 eXBlKSk7Ci0gCSAgc3AgLT0gNDsKLSAJfQotICAgICB9Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9tNjhoYzExLXRkZXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDky Ni5vcmlnL2dkYi9tNjhoYzExLXRkZXAuYwkyMDEyLTA1LTE2IDE2OjM1OjA2LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbTY4aGMxMS10ZGVwLmMJMjAxMi0xMS0w NyAyMjowMzo1Ny43MjQ2MjMzNDcgKzAxMDAKLUBAIC0xMTc0LDcgKzExNzQsNiBAQCBtNjhoYzEx X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2gKLSAgIGludCBmaXJzdF9zdGFja19hcmdu dW07Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSAgIGNoYXIgKnZhbDsKLS0gIGludCBsZW47Ci0g ICBjaGFyIGJ1ZlsyXTsKLSAgIAotICAgZmlyc3Rfc3RhY2tfYXJnbnVtID0gMDsKLUBAIC0xMTg1 LDE5ICsxMTg0LDE4IEBAIG02OGhjMTFfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaAot ICAgZWxzZSBpZiAobmFyZ3MgPiAwKQotICAgICB7Ci0gICAgICAgdHlwZSA9IHZhbHVlX3R5cGUg KGFyZ3NbMF0pOwotLSAgICAgIGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLSAgICAgICAv KiBGaXJzdCBhcmd1bWVudCBpcyBwYXNzZWQgaW4gRCBhbmQgWCByZWdpc3RlcnMuICAqLwotLSAg ICAgIGlmIChsZW4gPD0gNCkKLSsgICAgICBpZiAoVFlQRV9MRU5HVEggKHR5cGUpIDw9IDQpCi0g ICAgICAgICB7Ci0gICAgICAgICAgIFVMT05HRVNUIHY7Ci0gCi0gICAgICAgICAgIHYgPSBleHRy YWN0X3Vuc2lnbmVkX2ludGVnZXIgKHZhbHVlX2NvbnRlbnRzIChhcmdzWzBdKSwKLS0JCQkJCWxl biwgYnl0ZV9vcmRlcik7Ci0rCQkJCQlUWVBFX0xFTkdUSCAodHlwZSksIGJ5dGVfb3JkZXIpOwot ICAgICAgICAgICBmaXJzdF9zdGFja19hcmdudW0gPSAxOwotIAotICAgICAgICAgICByZWdjYWNo ZV9jb29rZWRfd3JpdGVfdW5zaWduZWQgKHJlZ2NhY2hlLCBIQVJEX0RfUkVHTlVNLCB2KTsKLS0g ICAgICAgICAgaWYgKGxlbiA+IDIpCi0rICAgICAgICAgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkg PiAyKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHYgPj49IDE2OwotICAgICAgICAg ICAgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlX3Vuc2lnbmVkIChyZWdjYWNoZSwgSEFSRF9YX1JF R05VTSwgdik7Ci1AQCAtMTIwOCw5ICsxMjA2LDggQEAgbTY4aGMxMV9wdXNoX2R1bW15X2NhbGwg KHN0cnVjdCBnZGJhcmNoCi0gICBmb3IgKGFyZ251bSA9IG5hcmdzIC0gMTsgYXJnbnVtID49IGZp cnN0X3N0YWNrX2FyZ251bTsgYXJnbnVtLS0pCi0gICAgIHsKLSAgICAgICB0eXBlID0gdmFsdWVf dHlwZSAoYXJnc1thcmdudW1dKTsKLS0gICAgICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0g Ci0tICAgICAgaWYgKGxlbiAmIDEpCi0rICAgICAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSAmIDEp Ci0gICAgICAgICB7Ci0gICAgICAgICAgIHN0YXRpYyBjaGFyIHplcm8gPSAwOwotIAotQEAgLTEy MTgsOCArMTIxNSw4IEBAIG02OGhjMTFfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaAot ICAgICAgICAgICB3cml0ZV9tZW1vcnkgKHNwLCAmemVybywgMSk7Ci0gICAgICAgICB9Ci0gICAg ICAgdmFsID0gKGNoYXIqKSB2YWx1ZV9jb250ZW50cyAoYXJnc1thcmdudW1dKTsKLS0gICAgICBz cCAtPSBsZW47Ci0tICAgICAgd3JpdGVfbWVtb3J5IChzcCwgdmFsLCBsZW4pOwotKyAgICAgIHNw IC09IFRZUEVfTEVOR1RIICh0eXBlKTsKLSsgICAgICB3cml0ZV9tZW1vcnkgKHNwLCB2YWwsIFRZ UEVfTEVOR1RIICh0eXBlKSk7Ci0gICAgIH0KLSAKLSAgIC8qIFN0b3JlIHJldHVybiBhZGRyZXNz LiAgKi8KLUBAIC0xMjkxLDExICsxMjg4LDEwIEBAIHN0YXRpYyB2b2lkCi0gbTY4aGMxMV9leHRy YWN0X3JldHVybl92YWx1ZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdmFsYnVmKQotIHsK LS0gIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gICBjaGFyIGJ1ZltNNjhIQzExX1JF R19TSVpFXTsKLSAKLSAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNoZSwgSEFSRF9EX1JFR05V TSwgYnVmKTsKLS0gIHN3aXRjaCAobGVuKQotKyAgc3dpdGNoIChUWVBFX0xFTkdUSCAodHlwZSkp Ci0gICAgIHsKLSAgICAgY2FzZSAxOgotICAgICAgIG1lbWNweSAodmFsYnVmLCBidWYgKyAxLCAx KTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL21lcC10ZGVwLmMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvbWVwLXRkZXAuYwkyMDEyLTA1LTE2IDE2 OjM1OjA2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbWVwLXRk ZXAuYwkyMDEyLTExLTA3IDIyOjAzOjU3LjcyNzYyMzMzNCArMDEwMAotQEAgLTIzMzcsMTEgKzIz MzcsMTAgQEAgbWVwX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkYgotIAotICAg Zm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykKLSAgICAgewotLSAgICAgIHVuc2lnbmVkIGFyZ19z aXplID0gVFlQRV9MRU5HVEggKHZhbHVlX3R5cGUgKGFyZ3ZbaV0pKTsKLSAgICAgICBVTE9OR0VT VCB2YWx1ZTsKLSAKLSAgICAgICAvKiBBcmd1bWVudHMgdGhhdCBmaXQgaW4gYSBHUFIgZ2V0IGV4 cGFuZGVkIHRvIGZpbGwgdGhlIEdQUi4gICovCi0tICAgICAgaWYgKGFyZ19zaXplIDw9IE1FUF9H UFJfU0laRSkKLSsgICAgICBpZiAoVFlQRV9MRU5HVEggKHZhbHVlX3R5cGUgKGFyZ3ZbaV0pKSA8 PSBNRVBfR1BSX1NJWkUpCi0gICAgICAgICB2YWx1ZSA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdl ciAodmFsdWVfY29udGVudHMgKGFyZ3ZbaV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlIChhcmd2W2ldKSksCi0gCQkJ CQkgIGJ5dGVfb3JkZXIpOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcHJpbnRjbWQu YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9wcmludGNtZC5j CTIwMTItMTEtMDcgMjI6MDA6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9wcmludGNtZC5jCTIwMTItMTEtMDcgMjI6MDM6NTcuNzMwNjIzMzM0ICswMTAwCi1A QCAtMzQ3LDEzICszNDcsMTIgQEAgZmxvYXRfdHlwZV9mcm9tX2xlbmd0aCAoc3RydWN0IHR5cGUg KnR5cAotIHsKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAodHlw ZSk7Ci0gICBjb25zdCBzdHJ1Y3QgYnVpbHRpbl90eXBlICpidWlsdGluID0gYnVpbHRpbl90eXBl IChnZGJhcmNoKTsKLS0gIHVuc2lnbmVkIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0g Ci0tICBpZiAobGVuID09IFRZUEVfTEVOR1RIIChidWlsdGluLT5idWlsdGluX2Zsb2F0KSkKLSsg IGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPT0gVFlQRV9MRU5HVEggKGJ1aWx0aW4tPmJ1aWx0aW5f ZmxvYXQpKQotICAgICB0eXBlID0gYnVpbHRpbi0+YnVpbHRpbl9mbG9hdDsKLS0gIGVsc2UgaWYg KGxlbiA9PSBUWVBFX0xFTkdUSCAoYnVpbHRpbi0+YnVpbHRpbl9kb3VibGUpKQotKyAgZWxzZSBp ZiAoVFlQRV9MRU5HVEggKHR5cGUpID09IFRZUEVfTEVOR1RIIChidWlsdGluLT5idWlsdGluX2Rv dWJsZSkpCi0gICAgIHR5cGUgPSBidWlsdGluLT5idWlsdGluX2RvdWJsZTsKLS0gIGVsc2UgaWYg KGxlbiA9PSBUWVBFX0xFTkdUSCAoYnVpbHRpbi0+YnVpbHRpbl9sb25nX2RvdWJsZSkpCi0rICBl bHNlIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPT0gVFlQRV9MRU5HVEggKGJ1aWx0aW4tPmJ1aWx0 aW5fbG9uZ19kb3VibGUpKQotICAgICB0eXBlID0gYnVpbHRpbi0+YnVpbHRpbl9sb25nX2RvdWJs ZTsKLSAKLSAgIHJldHVybiB0eXBlOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvczM5 MC10ZGVwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvczM5 MC10ZGVwLmMJMjAxMi0xMS0wNyAyMjowMjozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL3MzOTAtdGRlcC5jCTIwMTItMTEtMDcgMjI6MDM6NTcuNzMzNjIzMzI5 ICswMTAwCi1AQCAtMzc2LDkgKzM3NiwxMSBAQCBzMzkwX3ZhbHVlX2Zyb21fcmVnaXN0ZXIgKHN0 cnVjdCB0eXBlICp0Ci0gCQkJICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gewotICAgc3Ry dWN0IHZhbHVlICp2YWx1ZSA9IGRlZmF1bHRfdmFsdWVfZnJvbV9yZWdpc3RlciAodHlwZSwgcmVn bnVtLCBmcmFtZSk7Ci0tICBpbnQgbGVuID0gVFlQRV9MRU5HVEggKGNoZWNrX3R5cGVkZWYgKHR5 cGUpKTsKLSAKLS0gIGlmIChyZWdudW0gPj0gUzM5MF9GMF9SRUdOVU0gJiYgcmVnbnVtIDw9IFMz OTBfRjE1X1JFR05VTSAmJiBsZW4gPCA4KQotKyAgY2hlY2tfdHlwZWRlZiAodHlwZSk7Ci0rCi0r ICBpZiAocmVnbnVtID49IFMzOTBfRjBfUkVHTlVNICYmIHJlZ251bSA8PSBTMzkwX0YxNV9SRUdO VU0KLSsgICAgICAmJiBUWVBFX0xFTkdUSCAodHlwZSkgPCA4KQotICAgICBzZXRfdmFsdWVfb2Zm c2V0ICh2YWx1ZSwgMCk7Ci0gCi0gICByZXR1cm4gdmFsdWU7Ci1JbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9zdGFjay5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9y aWcvZ2RiL3N0YWNrLmMJMjAxMi0xMS0wNyAyMjowMDo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL3N0YWNrLmMJMjAxMi0xMS0wNyAyMjowMzo1Ny43Mzc2MjMz MjIgKzAxMDAKLUBAIC0zNTQsMTQgKzM1NCwxNSBAQCByZWFkX2ZyYW1lX2FyZyAoc3RydWN0IHN5 bWJvbCAqc3ltLCBzdHJ1Ci0gCi0gCSAgaWYgKHZhbCAmJiBlbnRyeXZhbCAmJiAhdWlfb3V0X2lz X21pX2xpa2VfcCAoY3VycmVudF91aW91dCkpCi0gCSAgICB7Ci0tCSAgICAgIHVuc2lnbmVkIGxl biA9IFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlICh2YWwpKTsKLSsJICAgICAgc3RydWN0IHR5cGUg KnR5cGUgPSB2YWx1ZV90eXBlICh2YWwpOwotIAotIAkgICAgICBpZiAoIXZhbHVlX29wdGltaXpl ZF9vdXQgKHZhbCkgJiYgdmFsdWVfbGF6eSAodmFsKSkKLSAJCXZhbHVlX2ZldGNoX2xhenkgKHZh bCk7Ci0gCSAgICAgIGlmICghdmFsdWVfb3B0aW1pemVkX291dCAodmFsKSAmJiB2YWx1ZV9sYXp5 IChlbnRyeXZhbCkpCi0gCQl2YWx1ZV9mZXRjaF9sYXp5IChlbnRyeXZhbCk7Ci0gCSAgICAgIGlm ICghdmFsdWVfb3B0aW1pemVkX291dCAodmFsKQotLQkJICAmJiB2YWx1ZV9hdmFpbGFibGVfY29u dGVudHNfZXEgKHZhbCwgMCwgZW50cnl2YWwsIDAsIGxlbikpCi0rCQkgICYmIHZhbHVlX2F2YWls YWJsZV9jb250ZW50c19lcSAodmFsLCAwLCBlbnRyeXZhbCwgMCwKLSsJCQkJCQkgIFRZUEVfTEVO R1RIICh0eXBlKSkpCi0gCQl7Ci0gCQkgIC8qIEluaXRpYWxpemUgaXQganVzdCB0byBhdm9pZCBh IEdDQyBmYWxzZSB3YXJuaW5nLiAgKi8KLSAJCSAgc3RydWN0IHZhbHVlICp2YWxfZGVyZWYgPSBO VUxMLCAqZW50cnl2YWxfZGVyZWY7Ci1AQCAtMzczLDEyICszNzQsMTIgQEAgcmVhZF9mcmFtZV9h cmcgKHN0cnVjdCBzeW1ib2wgKnN5bSwgc3RydQotIAotIAkJICBUUllfQ0FUQ0ggKGV4Y2VwdCwg UkVUVVJOX01BU0tfRVJST1IpCi0gCQkgICAgewotLQkJICAgICAgdW5zaWduZWQgbGVuX2RlcmVm OwotKwkJICAgICAgc3RydWN0IHR5cGUgKnR5cGVfZGVyZWY7Ci0gCi0gCQkgICAgICB2YWxfZGVy ZWYgPSBjb2VyY2VfcmVmICh2YWwpOwotIAkJICAgICAgaWYgKHZhbHVlX2xhenkgKHZhbF9kZXJl ZikpCi0gCQkJdmFsdWVfZmV0Y2hfbGF6eSAodmFsX2RlcmVmKTsKLS0JCSAgICAgIGxlbl9kZXJl ZiA9IFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlICh2YWxfZGVyZWYpKTsKLSsJCSAgICAgIHR5cGVf ZGVyZWYgPSB2YWx1ZV90eXBlICh2YWxfZGVyZWYpOwotIAotIAkJICAgICAgZW50cnl2YWxfZGVy ZWYgPSBjb2VyY2VfcmVmIChlbnRyeXZhbCk7Ci0gCQkgICAgICBpZiAodmFsdWVfbGF6eSAoZW50 cnl2YWxfZGVyZWYpKQotQEAgLTM4OSw3ICszOTAsNyBAQCByZWFkX2ZyYW1lX2FyZyAoc3RydWN0 IHN5bWJvbCAqc3ltLCBzdHJ1Ci0gCQkgICAgICBpZiAodmFsICE9IHZhbF9kZXJlZgotIAkJCSAg JiYgdmFsdWVfYXZhaWxhYmxlX2NvbnRlbnRzX2VxICh2YWxfZGVyZWYsIDAsCi0gCQkJCQkJCSAg ZW50cnl2YWxfZGVyZWYsIDAsCi0tCQkJCQkJCSAgbGVuX2RlcmVmKSkKLSsJCQkJCQkgICAgICBU WVBFX0xFTkdUSCAodHlwZV9kZXJlZikpKQotIAkJCXZhbF9lcXVhbCA9IDE7Ci0gCQkgICAgfQot IAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdHJhY2Vwb2ludC5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3RyYWNlcG9pbnQuYwkyMDEyLTA2LTMw IDAwOjQ2OjQ2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdHJh Y2Vwb2ludC5jCTIwMTItMTEtMDcgMjI6MDM6NTcuNzQxNjIzMzE4ICswMTAwCi1AQCAtMTQ1MCw3 ICsxNDUwLDcgQEAgZW5jb2RlX2FjdGlvbnNfMSAoc3RydWN0IGNvbW1hbmRfbGluZSAqYQotIAkJ fQotIAkgICAgICBlbHNlCi0gCQl7Ci0tCQkgIHVuc2lnbmVkIGxvbmcgYWRkciwgbGVuOwotKwkJ ICB1bnNpZ25lZCBsb25nIGFkZHI7Ci0gCQkgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW4gPSBO VUxMOwotIAkJICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluMSA9IE5VTEw7Ci0gCi1AQCAtMTQ4 MCw4ICsxNDgwLDEwIEBAIGVuY29kZV9hY3Rpb25zXzEgKHN0cnVjdCBjb21tYW5kX2xpbmUgKmEK LSAJCSAgICAgIC8qIFNhZmUgYmVjYXVzZSB3ZSBrbm93IGl0J3MgYSBzaW1wbGUgZXhwcmVzc2lv bi4gICovCi0gCQkgICAgICB0ZW1wdmFsID0gZXZhbHVhdGVfZXhwcmVzc2lvbiAoZXhwKTsKLSAJ CSAgICAgIGFkZHIgPSB2YWx1ZV9hZGRyZXNzICh0ZW1wdmFsKTsKLS0JCSAgICAgIGxlbiA9IFRZ UEVfTEVOR1RIIChjaGVja190eXBlZGVmIChleHAtPmVsdHNbMV0udHlwZSkpOwotLQkJICAgICAg YWRkX21lbXJhbmdlIChjb2xsZWN0LCBtZW1yYW5nZV9hYnNvbHV0ZSwgYWRkciwgbGVuKTsKLSsJ CSAgICAgIC8qIEluaXRpYWxpemUgdGhlIFRZUEVfTEVOR1RIIGlmIGl0IGlzIGEgdHlwZWRlZi4g ICovCi0rCQkgICAgICBjaGVja190eXBlZGVmIChleHAtPmVsdHNbMV0udHlwZSk7Ci0rCQkgICAg ICBhZGRfbWVtcmFuZ2UgKGNvbGxlY3QsIG1lbXJhbmdlX2Fic29sdXRlLCBhZGRyLAotKwkJCQkg ICAgVFlQRV9MRU5HVEggKGV4cC0+ZWx0c1sxXS50eXBlKSk7Ci0gCQkgICAgICBicmVhazsKLSAK LSAJCSAgICBjYXNlIE9QX1ZBUl9WQUxVRToKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L3ZhbG9wcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3Zh bG9wcy5jCTIwMTItMTEtMDcgMjI6MDA6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi92YWxvcHMuYwkyMDEyLTExLTA3IDIyOjA2OjM1Ljg5OTM5MzUzOSArMDEw MAotQEAgLTEwNTUsNyArMTA1NSw2IEBAIHZhbHVlX2ZldGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAq dmFsKQotICAgICAgIHN0cnVjdCB2YWx1ZSAqcGFyZW50ID0gdmFsdWVfcGFyZW50ICh2YWwpOwot ICAgICAgIExPTkdFU1Qgb2Zmc2V0ID0gdmFsdWVfb2Zmc2V0ICh2YWwpOwotICAgICAgIExPTkdF U1QgbnVtOwotLSAgICAgIGludCBsZW5ndGggPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gCi0gICAg ICAgaWYgKCF2YWx1ZV9iaXRzX3ZhbGlkICh2YWwsCi0gCQkJICAgICBUQVJHRVRfQ0hBUl9CSVQg KiBvZmZzZXQgKyB2YWx1ZV9iaXRwb3MgKHZhbCksCi1AQCAtMTA2OSw5ICsxMDY4LDkgQEAgdmFs dWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCi0gCQkJCSAgICAgIHZhbHVlX2JpdHNp emUgKHZhbCksIHBhcmVudCwgJm51bSkpCi0gCW1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFpbGFibGUg KHZhbCwKLSAJCQkJICAgICAgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0ICh2YWwpLAotLQkJCQkgICAg ICBsZW5ndGgpOwotKwkJCQkgICAgICBUWVBFX0xFTkdUSCAodHlwZSkpOwotICAgICAgIGVsc2UK LS0Jc3RvcmVfc2lnbmVkX2ludGVnZXIgKHZhbHVlX2NvbnRlbnRzX3JhdyAodmFsKSwgbGVuZ3Ro LAotKwlzdG9yZV9zaWduZWRfaW50ZWdlciAodmFsdWVfY29udGVudHNfcmF3ICh2YWwpLCBUWVBF X0xFTkdUSCAodHlwZSksCi0gCQkJICAgICAgYnl0ZV9vcmRlciwgbnVtKTsKLSAgICAgfQotICAg ZWxzZSBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX21lbW9yeSkKLUBAIC0xMDgwLDE2ICsx MDc5LDE2IEBAIHZhbHVlX2ZldGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAqdmFsKQotIAotICAgICAg IGlmIChvYmplY3RfYWRkcmVzc19nZXRfZGF0YSAodmFsdWVfdHlwZSAodmFsKSwgJmFkZHIpKQot IAl7Ci0tCSAgc3RydWN0IHR5cGUgKnR5cGUgPSB2YWx1ZV9lbmNsb3NpbmdfdHlwZSAodmFsKTsK LS0JICBpbnQgbGVuZ3RoID0gVFlQRV9MRU5HVEggKGNoZWNrX3R5cGVkZWYgKHR5cGUpKTsKLSsJ ICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX2VuY2xvc2luZ190eXBl ICh2YWwpKTsKLSAKLS0JICBpZiAobGVuZ3RoKQotKwkgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkp Ci0gCSAgICB7Ci0gCSAgICAgIC8qIERlbGF5IGl0IGFmdGVyIG9iamVjdF9hZGRyZXNzX2dldF9k YXRhIGFib3ZlLiAgKi8KLSAJICAgICAgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKHZhbCk7Ci0g CSAgICAgIGFkZHIgKz0gdmFsdWVfb2Zmc2V0ICh2YWwpOwotIAkgICAgICByZWFkX3ZhbHVlX21l bW9yeSAodmFsLCAwLCB2YWx1ZV9zdGFjayAodmFsKSwKLS0JCQkJIGFkZHIsIHZhbHVlX2NvbnRl bnRzX2FsbF9yYXcgKHZhbCksIGxlbmd0aCk7Ci0rCQkJCSBhZGRyLCB2YWx1ZV9jb250ZW50c19h bGxfcmF3ICh2YWwpLAotKwkJCQkgVFlQRV9MRU5HVEggKHR5cGUpKTsKLSAJICAgIH0KLSAJfQot ICAgICAgIC8qIEp1c3QgdG8gYmUgc3VyZSBpdCBoYXMgYmVlbiBjYWxsZWQuICAqLwotSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsdWUuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu MC4yMDEyMDkyNi5vcmlnL2dkYi92YWx1ZS5jCTIwMTItMTEtMDcgMjI6MDA6NDMuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWx1ZS5jCTIwMTItMTEtMDcgMjI6 MDM6NTcuNzUxNjIzMzAzICswMTAwCi1AQCAtMTAzNCwxNSArMTAzNCwxNCBAQCB2YWx1ZV9jb250 ZW50c19lcXVhbCAoc3RydWN0IHZhbHVlICp2YWwxCi0gewotICAgc3RydWN0IHR5cGUgKnR5cGUx OwotICAgc3RydWN0IHR5cGUgKnR5cGUyOwotLSAgaW50IGxlbjsKLSAKLSAgIHR5cGUxID0gY2hl Y2tfdHlwZWRlZiAodmFsdWVfdHlwZSAodmFsMSkpOwotICAgdHlwZTIgPSBjaGVja190eXBlZGVm ICh2YWx1ZV90eXBlICh2YWwyKSk7Ci0tICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZTEpOwotLSAg aWYgKGxlbiAhPSBUWVBFX0xFTkdUSCAodHlwZTIpKQotKyAgaWYgKFRZUEVfTEVOR1RIICh0eXBl MSkgIT0gVFlQRV9MRU5HVEggKHR5cGUyKSkKLSAgICAgcmV0dXJuIDA7Ci0gCi0tICByZXR1cm4g KG1lbWNtcCAodmFsdWVfY29udGVudHMgKHZhbDEpLCB2YWx1ZV9jb250ZW50cyAodmFsMiksIGxl bikgPT0gMCk7Ci0rICByZXR1cm4gKG1lbWNtcCAodmFsdWVfY29udGVudHMgKHZhbDEpLCB2YWx1 ZV9jb250ZW50cyAodmFsMiksCi0rCQkgIFRZUEVfTEVOR1RIICh0eXBlMSkpID09IDApOwotIH0K LSAKLSBpbnQKCmRpZmYgLS1naXQgYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMThvZjI1LnBhdGNo IGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTE4b2YyNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMTYyYjU1Ni4uMDAwMDAwMAotLS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3Mt MThvZjI1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotaHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wOS9tc2cwMDE0NS5odG1sCi0KLSMjIyBzcmMvZ2Ri L0NoYW5nZUxvZwkyMDEyLzA5LzI1IDEyOjQ4OjUyCTEuMTQ2OTcKLSMjIyBzcmMvZ2RiL0NoYW5n ZUxvZwkyMDEyLzA5LzI2IDAyOjA2OjUxCTEuMTQ2OTgKLSMjIC0xLDMgKzEsOCBAQAotKzIwMTIt MDktMjYgIFNpZGRoZXNoIFBveWFyZWthciAgPHNpZGRoZXNoQHJlZGhhdC5jb20+Ci0rCi0rCSog YnJlYWtwb2ludC5jIChpbnZhbGlkYXRlX2JwX3ZhbHVlX29uX21lbW9yeV9jaGFuZ2UpOiBFeHBh bmQKLSsJcGFyYW1ldGVyIExFTiB0byBzc2l6ZV90LgotKwotIDIwMTItMDktMjUgIFNpZGRoZXNo IFBveWFyZWthciAgPHNpZGRoZXNoQHJlZGhhdC5jb20+Ci0gCi0gCSogYWRhLXZhbHByaW50LmMg KGFkYV92YWxfcHJpbnRfMSk6IEVsaW1pbmF0ZSBzaW5nbGUtdXNlCi0tLS0gc3JjL2dkYi9icmVh a3BvaW50LmMJMjAxMi8wOS8yNSAxMjo0ODo1MgkxLjcwNQotKysrIHNyYy9nZGIvYnJlYWtwb2lu dC5jCTIwMTIvMDkvMjYgMDI6MDY6NTQJMS43MDYKLUBAIC0xNDcxOCw3ICsxNDcxOCw3IEBACi0g ICAgR0RCIGl0c2VsZi4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1pbnZhbGlkYXRlX2JwX3ZhbHVl X29uX21lbW9yeV9jaGFuZ2UgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLAotK2ludmFsaWRhdGVf YnBfdmFsdWVfb25fbWVtb3J5X2NoYW5nZSAoQ09SRV9BRERSIGFkZHIsIHNzaXplX3QgbGVuLAot IAkJCQkgICAgICBjb25zdCBiZmRfYnl0ZSAqZGF0YSkKLSB7Ci0gICBzdHJ1Y3QgYnJlYWtwb2lu dCAqYnA7Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDkvMjEgMDE6NDY6NDIJMS4x MzcwCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDkvMjYgMDI6MDY6NTUJMS4xMzcx Ci0jIyAtMSwzICsxLDcgQEAKLSsyMDEyLTA5LTI2ICBTaWRkaGVzaCBQb3lhcmVrYXIgIDxzaWRk aGVzaEByZWRoYXQuY29tPgotKwotKwkqIG9ic2VydmVyLnRleGkgKG1lbW9yeV9jaGFuZ2VkKTog RXhwYW5kIHBhcmFtZXRlciBMRU4gdG8gc3NpemVfdC4KLSsKLSAyMDEyLTA5LTIxICBZYW8gUWkg IDx5YW9AY29kZXNvdXJjZXJ5LmNvbT4KLSAgICAgICAgICAgICBQZWRybyBBbHZlcyAgPHBhbHZl c0ByZWRoYXQuY29tPgotIAotLS0tIHNyYy9nZGIvZG9jL29ic2VydmVyLnRleGkJMjAxMi8wOS8y MSAwMTo0Njo0MwkxLjQwCi0rKysgc3JjL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQkyMDEyLzA5LzI2 IDAyOjA2OjU1CTEuNDEKLUBAIC0yMzAsNyArMjMwLDcgQEAKLSBUaGlzIG1ldGhvZCBpcyBjYWxs ZWQgaW1tZWRpYXRlbHkgYmVmb3JlIGZyZWVpbmcgQHZhcntpbmZ9LgotIEBlbmQgZGVmdHlwZWZ1 bgotIAotLUBkZWZ0eXBlZnVuIHZvaWQgbWVtb3J5X2NoYW5nZWQgKENPUkVfQUREUiBAdmFye2Fk ZHJ9LCBpbnQgQHZhcntsZW59LCBjb25zdCBiZmRfYnl0ZSAqQHZhcntkYXRhfSkKLStAZGVmdHlw ZWZ1biB2b2lkIG1lbW9yeV9jaGFuZ2VkIChDT1JFX0FERFIgQHZhcnthZGRyfSwgc3NpemVfdCBA dmFye2xlbn0sIGNvbnN0IGJmZF9ieXRlICpAdmFye2RhdGF9KQotIEJ5dGVzIGZyb20gQHZhcntk YXRhfSB0byBAdmFye2RhdGF9ICsgQHZhcntsZW59IGhhdmUgYmVlbiB3cml0dGVuCi0gdG8gdGhl IGN1cnJlbnQgaW5mZXJpb3IgYXQgQHZhcnthZGRyfS4KLSBAZW5kIGRlZnR5cGVmdW4KCmRpZmYg LS1naXQgYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMTlvZjI1LnBhdGNoIGIvZ2RiLXJoYno3OTU0 MjQtYml0cG9zLTE5b2YyNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE1 MGVjNy4uMDAwMDAwMAotLS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMTlvZjI1LnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMjYwICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItY3ZzLzIwMTItMDkvbXNnMDAxNDcuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAx Mi8wOS8yNiAwMjowNjo1MQkxLjE0Njk4Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wOS8y NiAwNzo1Mjo0NAkxLjE0Njk5Ci0jIyAtMSw1ICsxLDE5IEBACi0gMjAxMi0wOS0yNiAgU2lkZGhl c2ggUG95YXJla2FyICA8c2lkZGhlc2hAcmVkaGF0LmNvbT4KLSAKLSsJKiBhbWQ2NC10ZGVwLmMg KGFtZDY0X3JldHVybl92YWx1ZSk6IFVzZSBUWVBFX0xFTkdUSCBkaXJlY3RseS4KLSsJKiBiZmlu LXRkZXAuYyAoYmZpbl9leHRyYWN0X3JldHVybl92YWx1ZSk6IExpa2V3aXNlLgotKwkoYmZpbl9z dG9yZV9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4KLSsJKiBjcmlzLXRkZXAuYyAoY3Jpc19zdG9y ZV9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4KLSsJKGNyaXNfZXh0cmFjdF9yZXR1cm5fdmFsdWUp OiBMaWtld2lzZS4KLSsJKiBoODMwMC10ZGVwLmMgKGg4MzAwX2V4dHJhY3RfcmV0dXJuX3ZhbHVl KTogTGlrZXdpc2UuCi0rCSogaHBwYS10ZGVwLmMgKGhwcGE2NF9yZXR1cm5fdmFsdWUpOiBMaWtl d2lzZS4KLSsJKiBsbTMyLXRkZXAuYyAobG0zMl9zdG9yZV9yZXR1cm5fdmFsdWUpOiBMaWtld2lz ZS4KLSsJKiBtaWNyb2JsYXplLXRkZXAuYyAobWljcm9ibGF6ZV9zdG9yZV9yZXR1cm5fdmFsdWUp OiBMaWtld2lzZS4KLSsJKiBzcHUtdGRlcC5jIChzcHVfdmFsdWVfZnJvbV9yZWdpc3Rlcik6IExp a2V3aXNlLgotKwkqIHZheC10ZGVwLmMgKHZheF9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4KLSsK LSsyMDEyLTA5LTI2ICBTaWRkaGVzaCBQb3lhcmVrYXIgIDxzaWRkaGVzaEByZWRoYXQuY29tPgot KwotIAkqIGJyZWFrcG9pbnQuYyAoaW52YWxpZGF0ZV9icF92YWx1ZV9vbl9tZW1vcnlfY2hhbmdl KTogRXhwYW5kCi0gCXBhcmFtZXRlciBMRU4gdG8gc3NpemVfdC4KLSAKLS0tLSBzcmMvZ2RiL2Ft ZDY0LXRkZXAuYwkyMDEyLzA5LzI1IDEyOjQ4OjUyCTEuMTEwCi0rKysgc3JjL2dkYi9hbWQ2NC10 ZGVwLmMJMjAxMi8wOS8yNiAwNzo1Mjo0NwkxLjExMQotQEAgLTYzNyw3ICs2MzcsNyBAQAotICAg ICB9Ci0gCi0gICBnZGJfYXNzZXJ0IChjbGFzc1sxXSAhPSBBTUQ2NF9NRU1PUlkpOwotLSAgZ2Ri X2Fzc2VydCAobGVuIDw9IDE2KTsKLSsgIGdkYl9hc3NlcnQgKFRZUEVfTEVOR1RIICh0eXBlKSA8 PSAxNik7Ci0gCi0gICBmb3IgKGkgPSAwOyBsZW4gPiAwOyBpKyssIGxlbiAtPSA4KQotICAgICB7 Ci0tLS0gc3JjL2dkYi9iZmluLXRkZXAuYwkyMDEyLzA5LzI1IDEyOjQ4OjUyCTEuMTEKLSsrKyBz cmMvZ2RiL2JmaW4tdGRlcC5jCTIwMTIvMDkvMjYgMDc6NTI6NDcJMS4xMgotQEAgLTYxNSw3ICs2 MTUsNyBAQAotICAgVUxPTkdFU1QgdG1wOwotICAgaW50IHJlZ25vID0gQkZJTl9SMF9SRUdOVU07 Ci0gCi0tICBnZGJfYXNzZXJ0IChsZW4gPD0gOCk7Ci0rICBnZGJfYXNzZXJ0IChUWVBFX0xFTkdU SCAodHlwZSkgPD0gOCk7Ci0gCi0gICB3aGlsZSAobGVuID4gMCkKLSAgICAgewotQEAgLTY0Myw3 ICs2NDMsNyBAQAotICAgaW50IGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAgIGludCByZWdu byA9IEJGSU5fUjBfUkVHTlVNOwotIAotLSAgZ2RiX2Fzc2VydCAobGVuIDw9IDgpOwotKyAgZ2Ri X2Fzc2VydCAoVFlQRV9MRU5HVEggKHR5cGUpIDw9IDgpOwotIAotICAgd2hpbGUgKGxlbiA+IDAp Ci0gICAgIHsKLS0tLSBzcmMvZ2RiL2NyaXMtdGRlcC5jCTIwMTIvMDUvMTggMjE6MDI6NDcJMS4x ODUKLSsrKyBzcmMvZ2RiL2NyaXMtdGRlcC5jCTIwMTIvMDkvMjYgMDc6NTI6NDcJMS4xODYKLUBA IC0xNjYyLDIwICsxNjYyLDIwIEBACi0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9y ZWdjYWNoZV9hcmNoIChyZWdjYWNoZSk7Ci0gICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9 IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7Ci0gICBVTE9OR0VTVCB2YWw7Ci0tICBpbnQg bGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOwotICAgCi0tICBpZiAobGVuIDw9IDQpCi0rICBpZiAo VFlQRV9MRU5HVEggKHR5cGUpIDw9IDQpCi0gICAgIHsKLSAgICAgICAvKiBQdXQgdGhlIHJldHVy biB2YWx1ZSBpbiBSMTAuICAqLwotLSAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdl ciAodmFsYnVmLCBsZW4sIGJ5dGVfb3JkZXIpOwotKyAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWdu ZWRfaW50ZWdlciAodmFsYnVmLCBUWVBFX0xFTkdUSCAodHlwZSksIGJ5dGVfb3JkZXIpOwotICAg ICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIEFSRzFfUkVHTlVN LCB2YWwpOwotICAgICB9Ci0tICBlbHNlIGlmIChsZW4gPD0gOCkKLSsgIGVsc2UgaWYgKFRZUEVf TEVOR1RIICh0eXBlKSA8PSA4KQotICAgICB7Ci0gICAgICAgLyogUHV0IHRoZSByZXR1cm4gdmFs dWUgaW4gUjEwIGFuZCBSMTEuICAqLwotICAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWduZWRfaW50 ZWdlciAodmFsYnVmLCA0LCBieXRlX29yZGVyKTsKLSAgICAgICByZWdjYWNoZV9jb29rZWRfd3Jp dGVfdW5zaWduZWQgKHJlZ2NhY2hlLCBBUkcxX1JFR05VTSwgdmFsKTsKLS0gICAgICB2YWwgPSBl eHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKChjaGFyICopdmFsYnVmICsgNCwgbGVuIC0gNCwgYnl0 ZV9vcmRlcik7Ci0rICAgICAgdmFsID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyICgoY2hhciAq KXZhbGJ1ZiArIDQsCi0rCQkJCSAgICAgIFRZUEVfTEVOR1RIICh0eXBlKSAtIDQsIGJ5dGVfb3Jk ZXIpOwotICAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIEFS RzJfUkVHTlVNLCB2YWwpOwotICAgICB9Ci0gICBlbHNlCi1AQCAtMTgzMywyMSArMTgzMywyMSBA QAotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2Fj aGUpOwotICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIg KGdkYmFyY2gpOwotICAgVUxPTkdFU1QgdmFsOwotLSAgaW50IGxlbiA9IFRZUEVfTEVOR1RIICh0 eXBlKTsKLSAgIAotLSAgaWYgKGxlbiA8PSA0KQotKyAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA8 PSA0KQotICAgICB7Ci0gICAgICAgLyogR2V0IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBSMTAuICAq LwotICAgICAgIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkX3Vuc2lnbmVkIChyZWdjYWNoZSwgQVJHMV9S RUdOVU0sICZ2YWwpOwotLSAgICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKHZhbGJ1ZiwgbGVu LCBieXRlX29yZGVyLCB2YWwpOwotKyAgICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKHZhbGJ1 ZiwgVFlQRV9MRU5HVEggKHR5cGUpLCBieXRlX29yZGVyLCB2YWwpOwotICAgICB9Ci0tICBlbHNl IGlmIChsZW4gPD0gOCkKLSsgIGVsc2UgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA8PSA4KQotICAg ICB7Ci0gICAgICAgLyogR2V0IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBSMTAgYW5kIFIxMS4gICov Ci0gICAgICAgcmVnY2FjaGVfY29va2VkX3JlYWRfdW5zaWduZWQgKHJlZ2NhY2hlLCBBUkcxX1JF R05VTSwgJnZhbCk7Ci0gICAgICAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCA0LCBi eXRlX29yZGVyLCB2YWwpOwotICAgICAgIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkX3Vuc2lnbmVkIChy ZWdjYWNoZSwgQVJHMl9SRUdOVU0sICZ2YWwpOwotLSAgICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVn ZXIgKChjaGFyICopdmFsYnVmICsgNCwgbGVuIC0gNCwgYnl0ZV9vcmRlciwgdmFsKTsKLSsgICAg ICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyICgoY2hhciAqKXZhbGJ1ZiArIDQsIFRZUEVfTEVOR1RI ICh0eXBlKSAtIDQsCi0rCQkJICAgICAgYnl0ZV9vcmRlciwgdmFsKTsKLSAgICAgfQotICAgZWxz ZQotICAgICBlcnJvciAoXygiY3Jpc19leHRyYWN0X3JldHVybl92YWx1ZTogdHlwZSBsZW5ndGgg dG9vIGxhcmdlIikpOwotLS0tIHNyYy9nZGIvaDgzMDAtdGRlcC5jCTIwMTIvMDkvMjUgMTI6NDg6 NTMJMS4xMzYKLSsrKyBzcmMvZ2RiL2g4MzAwLXRkZXAuYwkyMDEyLzA5LzI2IDA3OjUyOjQ4CTEu MTM3Ci1AQCAtNzUxLDEyICs3NTEsMTIgQEAKLSAgIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlw ZSk7Ci0gICBVTE9OR0VTVCBjLCBhZGRyOwotIAotLSAgc3dpdGNoIChsZW4pCi0rICBzd2l0Y2gg KFRZUEVfTEVOR1RIICh0eXBlKSkKLSAgICAgewotICAgICBjYXNlIDE6Ci0gICAgIGNhc2UgMjoK LSAgICAgICByZWdjYWNoZV9jb29rZWRfcmVhZF91bnNpZ25lZCAocmVnY2FjaGUsIEVfUkVUMF9S RUdOVU0sICZjKTsKLS0gICAgICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyICh2YWxidWYsIGxlbiwg Ynl0ZV9vcmRlciwgYyk7Ci0rICAgICAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCBU WVBFX0xFTkdUSCAodHlwZSksIGJ5dGVfb3JkZXIsIGMpOwotICAgICAgIGJyZWFrOwotICAgICBj YXNlIDQ6CQkJLyogTmVlZHMgdHdvIHJlZ2lzdGVycyBvbiBwbGFpbiBIOC8zMDAgKi8KLSAgICAg ICByZWdjYWNoZV9jb29rZWRfcmVhZF91bnNpZ25lZCAocmVnY2FjaGUsIEVfUkVUMF9SRUdOVU0s ICZjKTsKLUBAIC03NjgsOCArNzY4LDkgQEAKLSAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9 PSBUWVBFX0NPREVfSU5UKQotIAl7Ci0gCSAgcmVnY2FjaGVfY29va2VkX3JlYWRfdW5zaWduZWQg KHJlZ2NhY2hlLCBFX1JFVDBfUkVHTlVNLCAmYWRkcik7Ci0tCSAgYyA9IHJlYWRfbWVtb3J5X3Vu c2lnbmVkX2ludGVnZXIgKChDT1JFX0FERFIpIGFkZHIsIGxlbiwgYnl0ZV9vcmRlcik7Ci0tCSAg c3RvcmVfdW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCBsZW4sIGJ5dGVfb3JkZXIsIGMpOwotKwkg IGMgPSByZWFkX21lbW9yeV91bnNpZ25lZF9pbnRlZ2VyICgoQ09SRV9BRERSKSBhZGRyLAotKwkJ CQkJICAgIFRZUEVfTEVOR1RIICh0eXBlKSwgYnl0ZV9vcmRlcik7Ci0rCSAgc3RvcmVfdW5zaWdu ZWRfaW50ZWdlciAodmFsYnVmLCBUWVBFX0xFTkdUSCAodHlwZSksIGJ5dGVfb3JkZXIsIGMpOwot IAl9Ci0gICAgICAgZWxzZQotIAl7Ci0tLS0gc3JjL2dkYi9ocHBhLXRkZXAuYwkyMDEyLzA1LzE4 IDIxOjAyOjQ4CTEuMjgxCi0rKysgc3JjL2dkYi9ocHBhLXRkZXAuYwkyMDEyLzA5LzI2IDA3OjUy OjQ4CTEuMjgyCi1AQCAtMTE2MCw3ICsxMTYwLDcgQEAKLSAgIGludCBsZW4gPSBUWVBFX0xFTkdU SCAodHlwZSk7Ci0gICBpbnQgcmVnbnVtLCBvZmZzZXQ7Ci0gCi0tICBpZiAobGVuID4gMTYpCi0r ICBpZiAoVFlQRV9MRU5HVEggKHR5cGUpID4gMTYpCi0gICAgIHsKLSAgICAgICAvKiBBbGwgcmV0 dXJuIHZhbHVlcyBsYXJnZXQgdGhhbiAxMjggYml0cyBtdXN0IGJlIGFnZ3JlZ2F0ZQotICAgICAg ICAgIHJldHVybiB2YWx1ZXMuICAqLwotLS0tIHNyYy9nZGIvbG0zMi10ZGVwLmMJMjAxMi8wOS8y NSAxMjo0ODo1MwkxLjEzCi0rKysgc3JjL2dkYi9sbTMyLXRkZXAuYwkyMDEyLzA5LzI2IDA3OjUy OjQ4CTEuMTQKLUBAIC0zNDksMTggKzM0OSwxOCBAQAotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUpOwotICAgZW51bSBiZmRfZW5kaWFuIGJ5 dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwotICAgVUxPTkdFU1QgdmFs OwotLSAgaW50IGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLS0gIGlmIChsZW4gPD0gNCkK LSsgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPD0gNCkKLSAgICAgewotLSAgICAgIHZhbCA9IGV4 dHJhY3RfdW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCBsZW4sIGJ5dGVfb3JkZXIpOwotKyAgICAg IHZhbCA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCBUWVBFX0xFTkdUSCAodHlw ZSksIGJ5dGVfb3JkZXIpOwotICAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAo cmVnY2FjaGUsIFNJTV9MTTMyX1IxX1JFR05VTSwgdmFsKTsKLSAgICAgfQotLSAgZWxzZSBpZiAo bGVuIDw9IDgpCi0rICBlbHNlIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPD0gOCkKLSAgICAgewot ICAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCA0LCBieXRlX29y ZGVyKTsKLSAgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGVfdW5zaWduZWQgKHJlZ2NhY2hlLCBT SU1fTE0zMl9SMV9SRUdOVU0sIHZhbCk7Ci0tICAgICAgdmFsID0gZXh0cmFjdF91bnNpZ25lZF9p bnRlZ2VyICh2YWxidWYgKyA0LCBsZW4gLSA0LCBieXRlX29yZGVyKTsKLSsgICAgICB2YWwgPSBl eHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKHZhbGJ1ZiArIDQsIFRZUEVfTEVOR1RIICh0eXBlKSAt IDQsCi0rCQkJCSAgICAgIGJ5dGVfb3JkZXIpOwotICAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0 ZV91bnNpZ25lZCAocmVnY2FjaGUsIFNJTV9MTTMyX1IyX1JFR05VTSwgdmFsKTsKLSAgICAgfQot ICAgZWxzZQotLS0tIHNyYy9nZGIvbWljcm9ibGF6ZS10ZGVwLmMJMjAxMi8wOC8wMiAwOTozNjoz OQkxLjEzCi0rKysgc3JjL2dkYi9taWNyb2JsYXplLXRkZXAuYwkyMDEyLzA5LzI2IDA3OjUyOjQ4 CTEuMTQKLUBAIC01OTAsMjIgKzU5MCwyMSBAQAotIG1pY3JvYmxhemVfc3RvcmVfcmV0dXJuX3Zh bHVlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSAJCQkg ICAgICAgY29uc3QgZ2RiX2J5dGUgKnZhbGJ1ZikKLSB7Ci0tICBpbnQgbGVuID0gVFlQRV9MRU5H VEggKHR5cGUpOwotICAgZ2RiX2J5dGUgYnVmWzhdOwotIAotICAgbWVtc2V0IChidWYsIDAsIHNp emVvZihidWYpKTsKLSAKLSAgIC8qIEludGVncmFsIGFuZCBwb2ludGVyIHJldHVybiB2YWx1ZXMu ICAqLwotIAotLSAgaWYgKGxlbiA+IDQpCi0rICBpZiAoVFlQRV9MRU5HVEggKHR5cGUpID4gNCkK LSAgICAgewotLSAgICAgICBnZGJfYXNzZXJ0IChsZW4gPT0gOCk7Ci0rICAgICAgIGdkYl9hc3Nl cnQgKFRZUEVfTEVOR1RIICh0eXBlKSA9PSA4KTsKLSAgICAgICAgbWVtY3B5IChidWYsIHZhbGJ1 ZiwgOCk7Ci0gICAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIE1JQ1JPQkxB WkVfUkVUVkFMX1JFR05VTSsxLCBidWYgKyA0KTsKLSAgICAgfQotICAgZWxzZQotICAgICAvKiA/ Pz8gRG8gd2UgbmVlZCB0byBkbyBhbnkgc2lnbi1leHRlbnNpb24gaGVyZT8gICovCi0tICAgIG1l bWNweSAoYnVmICsgNCAtIGxlbiwgdmFsYnVmLCBsZW4pOwotKyAgICBtZW1jcHkgKGJ1ZiArIDQg LSBUWVBFX0xFTkdUSCAodHlwZSksIHZhbGJ1ZiwgVFlQRV9MRU5HVEggKHR5cGUpKTsKLSAKLSAg IHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIE1JQ1JPQkxBWkVfUkVUVkFMX1JFR05V TSwgYnVmKTsKLSB9Ci0tLS0gc3JjL2dkYi9zcHUtdGRlcC5jCTIwMTIvMDkvMTcgMDg6NTI6MTgJ MS44MgotKysrIHNyYy9nZGIvc3B1LXRkZXAuYwkyMDEyLzA5LzI2IDA3OjUyOjQ4CTEuODMKLUBA IC0zMTYsMTEgKzMxNiwxMCBAQAotIAkJCSBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gewot ICAgc3RydWN0IHZhbHVlICp2YWx1ZSA9IGRlZmF1bHRfdmFsdWVfZnJvbV9yZWdpc3RlciAodHlw ZSwgcmVnbnVtLCBmcmFtZSk7Ci0tICBpbnQgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOwotIAot LSAgaWYgKHJlZ251bSA8IFNQVV9OVU1fR1BSUyAmJiBsZW4gPCAxNikKLSsgIGlmIChyZWdudW0g PCBTUFVfTlVNX0dQUlMgJiYgVFlQRV9MRU5HVEggKHR5cGUpIDwgMTYpCi0gICAgIHsKLS0gICAg ICBpbnQgcHJlZmVycmVkX3Nsb3QgPSBsZW4gPCA0ID8gNCAtIGxlbiA6IDA7Ci0rICAgICAgaW50 IHByZWZlcnJlZF9zbG90ID0gVFlQRV9MRU5HVEggKHR5cGUpIDwgNCA/IDQgLSBUWVBFX0xFTkdU SCAodHlwZSkgOiAwOwotICAgICAgIHNldF92YWx1ZV9vZmZzZXQgKHZhbHVlLCBwcmVmZXJyZWRf c2xvdCk7Ci0gICAgIH0KLSAKLS0tLSBzcmMvZ2RiL3ZheC10ZGVwLmMJMjAxMi8wNS8xNiAxNDoz NTowOAkxLjExMgotKysrIHNyYy9nZGIvdmF4LXRkZXAuYwkyMDEyLzA5LzI2IDA3OjUyOjQ4CTEu MTEzCi1AQCAtMjA4LDcgKzIwOCw2IEBACi0gCQkgIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLAotIAkJICBnZGJfYnl0ZSAqcmVhZGJ1ZiwgY29uc3QgZ2RiX2J5 dGUgKndyaXRlYnVmKQotIHsKLS0gIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gICBn ZGJfYnl0ZSBidWZbOF07Ci0gCi0gICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVf U1RSVUNUCi1AQCAtMjI0LDcgKzIyMyw3IEBACi0gCSAgVUxPTkdFU1QgYWRkcjsKLSAKLSAJICBy ZWdjYWNoZV9yYXdfcmVhZF91bnNpZ25lZCAocmVnY2FjaGUsIFZBWF9SMF9SRUdOVU0sICZhZGRy KTsKLS0JICByZWFkX21lbW9yeSAoYWRkciwgcmVhZGJ1ZiwgbGVuKTsKLSsJICByZWFkX21lbW9y eSAoYWRkciwgcmVhZGJ1ZiwgVFlQRV9MRU5HVEggKHR5cGUpKTsKLSAJfQotIAotICAgICAgIHJl dHVybiBSRVRVUk5fVkFMVUVfQUJJX1JFVFVSTlNfQUREUkVTUzsKLUBAIC0yMzQsMTYgKzIzMywx NiBAQAotICAgICB7Ci0gICAgICAgLyogUmVhZCB0aGUgY29udGVudHMgb2YgUjAgYW5kIChpZiBu ZWNlc3NhcnkpIFIxLiAgKi8KLSAgICAgICByZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUs IFZBWF9SMF9SRUdOVU0sIGJ1Zik7Ci0tICAgICAgaWYgKGxlbiA+IDQpCi0rICAgICAgaWYgKFRZ UEVfTEVOR1RIICh0eXBlKSA+IDQpCi0gCXJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwg VkFYX1IxX1JFR05VTSwgYnVmICsgNCk7Ci0tICAgICAgbWVtY3B5IChyZWFkYnVmLCBidWYsIGxl bik7Ci0rICAgICAgbWVtY3B5IChyZWFkYnVmLCBidWYsIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0g ICAgIH0KLSAgIGlmICh3cml0ZWJ1ZikKLSAgICAgewotICAgICAgIC8qIFJlYWQgdGhlIGNvbnRl bnRzIHRvIFIwIGFuZCAoaWYgbmVjZXNzYXJ5KSBSMS4gICovCi0tICAgICAgbWVtY3B5IChidWYs IHdyaXRlYnVmLCBsZW4pOwotKyAgICAgIG1lbWNweSAoYnVmLCB3cml0ZWJ1ZiwgVFlQRV9MRU5H VEggKHR5cGUpKTsKLSAgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCBWQVhf UjBfUkVHTlVNLCBidWYpOwotLSAgICAgIGlmIChsZW4gPiA0KQotKyAgICAgIGlmIChUWVBFX0xF TkdUSCAodHlwZSkgPiA0KQotIAlyZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCBWQVhf UjFfUkVHTlVNLCBidWYgKyA0KTsKLSAgICAgfQotIAoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1 NDI0LWJpdHBvcy0yMG9mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjBvZjI1LnBh dGNoCmluZGV4IDEyMTAxMjcuLmIzMjA0ZTEgMTAwNjQ0Ci0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJp dHBvcy0yMG9mMjUucGF0Y2gKKysrIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIwb2YyNS5wYXRj aApAQCAtNDYzLDEwICs0NjMsMTAgQEAgQ29udGVudC1UeXBlOiB0ZXh0L3gtcGF0Y2gKIENvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1l bnQ7IGZpbGVuYW1lPWJpdHBvcy1tYWluLnBhdGNoCiAKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL2FkYS1sYW5nLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9hZGEtbGFu Zy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2FkYS1sYW5n LmMJMjAxMi0xMS0wNyAyMjowMDo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL2FkYS1sYW5nLmMJMjAxMi0xMS0wNyAyMjowOToyOS42NjgxNDEwMzYgKzAxMDAK Ky0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2FkYS1sYW5nLmMJMjAxMy0wMS0xOCAy MzoyNzoyMi4wNjA2MDEyOTkgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9hZGEt bGFuZy5jCTIwMTMtMDEtMTggMjM6Mjc6MjguODQ1NjA3Mjk1ICswMTAwCiBAQCAtODAsNyArODAs NyBAQCBzdGF0aWMgc3RydWN0IHR5cGUgKmRlc2NfYm91bmRzX3R5cGUgKHN0CiAgCiAgc3RhdGlj IHN0cnVjdCB2YWx1ZSAqZGVzY19ib3VuZHMgKHN0cnVjdCB2YWx1ZSAqKTsKQEAgLTUzOSw3ICs1 MzksNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgCQkJCQkg ICAgIHN0cnVjdCB0eXBlICopOwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKmFzc2lnbl9hZ2dy ZWdhdGUgKHN0cnVjdCB2YWx1ZSAqLCBzdHJ1Y3QgdmFsdWUgKiwgCi1AQCAtNTg2LDcgKzU4Nyw3 IEBAIGNvZXJjZV91bnNwZWNfdmFsX3RvX3R5cGUgKHN0cnVjdCB2YWx1ZQorQEAgLTU4Nyw3ICs1 ODgsNyBAQCBjb2VyY2VfdW5zcGVjX3ZhbF90b190eXBlIChzdHJ1Y3QgdmFsdWUKICB9CiAgCiAg c3RhdGljIGNvbnN0IGdkYl9ieXRlICoKQEAgLTU0OCw3ICs1NDgsNyBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgewogICAgaWYgKHZhbGFkZHIgPT0gTlVMTCkK ICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtNTk1LDcgKzU5Niw3IEBAIGNvbmRfb2Zmc2V0X2hvc3Qg KGNvbnN0IGdkYl9ieXRlICp2YWxhZGQKK0BAIC01OTYsNyArNTk3LDcgQEAgY29uZF9vZmZzZXRf aG9zdCAoY29uc3QgZ2RiX2J5dGUgKnZhbGFkZAogIH0KICAKICBzdGF0aWMgQ09SRV9BRERSCkBA IC01NTcsNyArNTU3LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLWxhbmcu YwogIHsKICAgIGlmIChhZGRyZXNzID09IDApCiAgICAgIHJldHVybiAwOwotQEAgLTE2MDEsNyAr MTYwMiw3IEBAIGRlc2NfYm91bmRzIChzdHJ1Y3QgdmFsdWUgKmFycikKK0BAIC0xNjAyLDcgKzE2 MDMsNyBAQCBkZXNjX2JvdW5kcyAoc3RydWN0IHZhbHVlICphcnIpCiAgLyogSWYgVFlQRSBpcyB0 aGUgdHlwZSBvZiBhbiBhcnJheS1kZXNjcmlwdG9yIChmYXQgcG9pbnRlciksICB0aGUgYml0CiAg ICAgcG9zaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3Mgb2YgdGhlIGJv dW5kcyBkYXRhLiAgKi8KICAKQEAgLTU2Niw3ICs1NjYsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgZmF0X3BudHJfYm91bmRzX2JpdHBvcyAoc3RydWN0IHR5 cGUgKnR5cGUpCiAgewogICAgcmV0dXJuIFRZUEVfRklFTERfQklUUE9TIChkZXNjX2Jhc2VfdHlw ZSAodHlwZSksIDEpOwotQEAgLTE2NjcsNyArMTY2OCw3IEBAIGRlc2NfZGF0YSAoc3RydWN0IHZh bHVlICphcnIpCitAQCAtMTY2OCw3ICsxNjY5LDcgQEAgZGVzY19kYXRhIChzdHJ1Y3QgdmFsdWUg KmFycikKICAvKiBJZiBUWVBFIGlzIHRoZSB0eXBlIG9mIGFuIGFycmF5LWRlc2NyaXB0b3IgKGZh dCBwb2ludGVyKSwgdGhlIGJpdAogICAgIHBvc2l0aW9uIG9mIHRoZSBmaWVsZCBjb250YWluaW5n IHRoZSBhZGRyZXNzIG9mIHRoZSBkYXRhLiAgKi8KICAKQEAgLTU3NSw3ICs1NzUsNyBAQCBJbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgZmF0X3BudHJfZGF0YV9iaXRw b3MgKHN0cnVjdCB0eXBlICp0eXBlKQogIHsKICAgIHJldHVybiBUWVBFX0ZJRUxEX0JJVFBPUyAo ZGVzY19iYXNlX3R5cGUgKHR5cGUpLCAwKTsKLUBAIC0xNzAyLDcgKzE3MDMsNyBAQCBkZXNjX29u ZV9ib3VuZCAoc3RydWN0IHZhbHVlICpib3VuZHMsIGluCitAQCAtMTcwMyw3ICsxNzA0LDcgQEAg ZGVzY19vbmVfYm91bmQgKHN0cnVjdCB2YWx1ZSAqYm91bmRzLCBpbgogICAgIG9mIHRoZSBJdGgg bG93ZXIgYm91bmQgc3RvcmVkIGluIGl0LCBpZiBXSElDSCBpcyAwLCBhbmQgdGhlIEl0aCB1cHBl cgogICAgIGJvdW5kLCBpZiBXSElDSCBpcyAxLiAgVGhlIGZpcnN0IGJvdW5kIGlzIEk9MS4gICov CiAgCkBAIC01ODQsNyArNTg0LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRh LWxhbmcuYwogIGRlc2NfYm91bmRfYml0cG9zIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IGksIGlu dCB3aGljaCkKICB7CiAgICByZXR1cm4gVFlQRV9GSUVMRF9CSVRQT1MgKGRlc2NfYmFzZV90eXBl ICh0eXBlKSwgMiAqIGkgKyB3aGljaCAtIDIpOwotQEAgLTE4OTIsNyArMTg5Myw3IEBAIGFkYV90 eXBlX29mX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyciwgaW4KK0BAIC0xODkzLDcgKzE4OTQsNyBA QCBhZGFfdHlwZV9vZl9hcnJheSAoc3RydWN0IHZhbHVlICphcnIsIGluCiAgCSAgICAgICAgIHpl cm8sIGFuZCBkb2VzIG5vdCBuZWVkIHRvIGJlIHJlY29tcHV0ZWQuICAqLwogIAkgICAgICBpZiAo bG8gPCBoaSkKICAJCXsKQEAgLTU5Myw3ICs1OTMsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9hZGEtbGFuZy5jCiAgCQkgICAgICAgIChoaSAtIGxvICsgMSkgKiBUWVBFX0ZJRUxE X0JJVFNJWkUgKGVsdF90eXBlLCAwKTsKICAKICAJCSAgVFlQRV9MRU5HVEggKGFycmF5X3R5cGUp ID0gKGFycmF5X2JpdHNpemUgKyA3KSAvIDg7Ci1AQCAtMjA0NCw3ICsyMDQ1LDcgQEAgZGVjb2Rl X3BhY2tlZF9hcnJheV9iaXRzaXplIChzdHJ1Y3QgdHlwZQorQEAgLTIwNDUsNyArMjA0Niw3IEBA IGRlY29kZV9wYWNrZWRfYXJyYXlfYml0c2l6ZSAoc3RydWN0IHR5cGUKICAgICBpbiBiaXRzLiAg Ki8KICAKICBzdGF0aWMgc3RydWN0IHR5cGUgKgpAQCAtNjAyLDcgKzYwMiw3IEBAIEluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmMKICB7CiAgICBzdHJ1Y3QgdHlwZSAqbmV3 X2VsdF90eXBlOwogICAgc3RydWN0IHR5cGUgKm5ld190eXBlOwotQEAgLTIwOTYsNyArMjA5Nyw3 IEBAIGRlY29kZV9jb25zdHJhaW5lZF9wYWNrZWRfYXJyYXlfdHlwZSAoc3QKK0BAIC0yMDk3LDcg KzIwOTgsNyBAQCBkZWNvZGVfY29uc3RyYWluZWRfcGFja2VkX2FycmF5X3R5cGUgKHN0CiAgICBj aGFyICpuYW1lOwogICAgY29uc3QgY2hhciAqdGFpbDsKICAgIHN0cnVjdCB0eXBlICpzaGFkb3df dHlwZTsKQEAgLTYxMSw3ICs2MTEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9h ZGEtbGFuZy5jCiAgCiAgICBpZiAoIXJhd19uYW1lKQogICAgICByYXdfbmFtZSA9IGFkYV90eXBl X25hbWUgKGRlc2NfYmFzZV90eXBlICh0eXBlKSk7Ci1AQCAtMjE2Nyw3ICsyMTY4LDggQEAgZGVj b2RlX2NvbnN0cmFpbmVkX3BhY2tlZF9hcnJheSAoc3RydWN0CitAQCAtMjE2OCw3ICsyMTY5LDgg QEAgZGVjb2RlX2NvbnN0cmFpbmVkX3BhY2tlZF9hcnJheSAoc3RydWN0CiAgIAkgYXJyYXkgd2l0 aCBubyB3cmFwcGVyLiAgSW4gb3JkZXIgdG8gaW50ZXJwcmV0IHRoZSB2YWx1ZSB0aHJvdWdoCiAg IAkgdGhlIChsZWZ0LWp1c3RpZmllZCkgcGFja2VkIGFycmF5IHR5cGUgd2UganVzdCBidWlsdCwg d2UgbXVzdAogICAJIGZpcnN0IGxlZnQtanVzdGlmeSBpdC4gICovCkBAIC02MjEsNyArNjIxLDcg QEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLWxhbmcuYwogICAgICAgIFVMT05H RVNUIG1vZDsKICAKICAgICAgICBtb2QgPSBhZGFfbW9kdWx1cyAodmFsdWVfdHlwZSAoYXJyKSkg LSAxOwotQEAgLTIyNjgsMTUgKzIyNzAsMTYgQEAgaGFzX25lZ2F0aXZlcyAoc3RydWN0IHR5cGUg KnR5cGUpCitAQCAtMjI2OSwxNSArMjI3MSwxNiBAQCBoYXNfbmVnYXRpdmVzIChzdHJ1Y3QgdHlw ZSAqdHlwZSkKICAKICBzdHJ1Y3QgdmFsdWUgKgogIGFkYV92YWx1ZV9wcmltaXRpdmVfcGFja2Vk X3ZhbCAoc3RydWN0IHZhbHVlICpvYmosIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtNjQ0 LDcgKzY0NCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmMKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGUgb2Ygc291cmNlIHRoYXQgYXJl IHVudXNlZCAqLwogICAgICBhY2N1bVNpemU7ICAgICAgICAgICAgICAgICAgLyogTnVtYmVyIG9m IG1lYW5pbmdmdWwgYml0cyBpbiBhY2N1bSAqLwogICAgdW5zaWduZWQgY2hhciAqYnl0ZXM7ICAg ICAgICAgLyogRmlyc3QgYnl0ZSBjb250YWluaW5nIGRhdGEgdG8gdW5wYWNrICovCi1AQCAtMjMw OSw3ICsyMzEyLDcgQEAgYWRhX3ZhbHVlX3ByaW1pdGl2ZV9wYWNrZWRfdmFsIChzdHJ1Y3Qgdgor QEAgLTIzMTAsNyArMjMxMyw3IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfcGFja2VkX3ZhbCAoc3Ry dWN0IHYKICAKICAgIGlmIChvYmogIT0gTlVMTCkKICAgICAgewpAQCAtNjUzLDcgKzY1Myw3IEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmMKICAKICAgICAgICBzZXRf dmFsdWVfY29tcG9uZW50X2xvY2F0aW9uICh2LCBvYmopOwogICAgICAgIHNldF92YWx1ZV9iaXRw b3MgKHYsIGJpdF9vZmZzZXQgKyB2YWx1ZV9iaXRwb3MgKG9iaikpOwotQEAgLTI0MjYsNyArMjQy OSw3IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfcGFja2VkX3ZhbCAoc3RydWN0IHYKK0BAIC0yNDI3 LDcgKzI0MzAsNyBAQCBhZGFfdmFsdWVfcHJpbWl0aXZlX3BhY2tlZF92YWwgKHN0cnVjdCB2CiAg ICAgbm90IG92ZXJsYXAuICAqLwogIHN0YXRpYyB2b2lkCiAgbW92ZV9iaXRzIChnZGJfYnl0ZSAq dGFyZ2V0LCBpbnQgdGFyZ19vZmZzZXQsIGNvbnN0IGdkYl9ieXRlICpzb3VyY2UsCkBAIC02NjIs NyArNjYyLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLWxhbmcuYwogIHsK ICAgIHVuc2lnbmVkIGludCBhY2N1bSwgbWFzazsKICAgIGludCBhY2N1bV9iaXRzLCBjaHVua19z aXplOwotQEAgLTI1MTYsNyArMjUxOSw3IEBAIGFkYV92YWx1ZV9hc3NpZ24gKHN0cnVjdCB2YWx1 ZSAqdG92YWwsIHMKK0BAIC0yNTE3LDcgKzI1MjAsNyBAQCBhZGFfdmFsdWVfYXNzaWduIChzdHJ1 Y3QgdmFsdWUgKnRvdmFsLCBzCiAgICAgIHsKICAgICAgICBpbnQgbGVuID0gKHZhbHVlX2JpdHBv cyAodG92YWwpCiAgCQkgKyBiaXRzICsgSE9TVF9DSEFSX0JJVCAtIDEpIC8gSE9TVF9DSEFSX0JJ VDsKQEAgLTY3MSw3ICs2NzEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEt bGFuZy5jCiAgICAgICAgY2hhciAqYnVmZmVyID0gKGNoYXIgKikgYWxsb2NhIChsZW4pOwogICAg ICAgIHN0cnVjdCB2YWx1ZSAqdmFsOwogICAgICAgIENPUkVfQUREUiB0b19hZGRyID0gdmFsdWVf YWRkcmVzcyAodG92YWwpOwotQEAgLTI1NjEsNyArMjU2NCw3IEBAIHZhbHVlX2Fzc2lnbl90b19j b21wb25lbnQgKHN0cnVjdCB2YWx1ZQorQEAgLTI1NjIsNyArMjU2NSw3IEBAIHZhbHVlX2Fzc2ln bl90b19jb21wb25lbnQgKHN0cnVjdCB2YWx1ZQogICAgICAoTE9OR0VTVCkgICh2YWx1ZV9hZGRy ZXNzIChjb21wb25lbnQpIC0gdmFsdWVfYWRkcmVzcyAoY29udGFpbmVyKSk7CiAgICBpbnQgYml0 X29mZnNldF9pbl9jb250YWluZXIgPSAKICAgICAgdmFsdWVfYml0cG9zIChjb21wb25lbnQpIC0g dmFsdWVfYml0cG9zIChjb250YWluZXIpOwpAQCAtNjgwLDcgKzY4MCw3IEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmMKICAgIAogICAgdmFsID0gdmFsdWVfY2FzdCAo dmFsdWVfdHlwZSAoY29tcG9uZW50KSwgdmFsKTsKICAKLUBAIC00MDgxLDcgKzQwODQsNyBAQCBl bnN1cmVfbHZhbCAoc3RydWN0IHZhbHVlICp2YWwpCitAQCAtNDA4Miw3ICs0MDg1LDcgQEAgZW5z dXJlX2x2YWwgKHN0cnVjdCB2YWx1ZSAqdmFsKQogICAgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0g bm90X2x2YWwKICAgICAgICB8fCBWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfaW50ZXJuYWx2YXIp CiAgICAgIHsKQEAgLTY4OSw3ICs2ODksNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9hZGEtbGFuZy5jCiAgICAgICAgY29uc3QgQ09SRV9BRERSIGFkZHIgPQogICAgICAgICAgdmFs dWVfYXNfbG9uZyAodmFsdWVfYWxsb2NhdGVfc3BhY2VfaW5faW5mZXJpb3IgKGxlbikpOwogIAot QEAgLTQxNTUsNyArNDE1OCw3IEBAIHN0YXRpYyBDT1JFX0FERFIKK0BAIC00MTU2LDcgKzQxNTks NyBAQCBzdGF0aWMgQ09SRV9BRERSCiAgdmFsdWVfcG9pbnRlciAoc3RydWN0IHZhbHVlICp2YWx1 ZSwgc3RydWN0IHR5cGUgKnR5cGUpCiAgewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBn ZXRfdHlwZV9hcmNoICh0eXBlKTsKQEAgLTY5OCw3ICs2OTgsNyBAQCBJbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgICBnZGJfYnl0ZSAqYnVmID0gYWxsb2NhIChsZW4p OwogICAgQ09SRV9BRERSIGFkZHI7CiAgCi1AQCAtNjAyNCw3ICs2MDI3LDcgQEAgdmFsdWVfdGFn X2Zyb21fY29udGVudHNfYW5kX2FkZHJlc3MgKHN0cgorQEAgLTYwNTEsNyArNjA1NCw3IEBAIHZh bHVlX3RhZ19mcm9tX2NvbnRlbnRzX2FuZF9hZGRyZXNzIChzdHIKICAJCQkJICAgICBjb25zdCBn ZGJfYnl0ZSAqdmFsYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q09SRV9BRERSIGFkZHJlc3MpCiAgewpAQCAtNzA3LDcgKzcwNyw3IEBAIEluZGV4OiBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmMKICAgIHN0cnVjdCB0eXBlICp0YWdfdHlwZTsKICAK ICAgIGlmIChmaW5kX3N0cnVjdF9maWVsZCAoIl90YWciLCB0eXBlLCAwLCAmdGFnX3R5cGUsICZ0 YWdfYnl0ZV9vZmZzZXQsCi1AQCAtNjQwNyw3ICs2NDEwLDcgQEAgYWRhX2luX3ZhcmlhbnQgKExP TkdFU1QgdmFsLCBzdHJ1Y3QgdHlwZQorQEAgLTY1MTYsNyArNjUxOSw3IEBAIGFkYV9pbl92YXJp YW50IChMT05HRVNUIHZhbCwgc3RydWN0IHR5cGUKICAgICBvbmx5IGluIHRoYXQgaXQgY2FuIGhh bmRsZSBwYWNrZWQgdmFsdWVzIG9mIGFyYml0cmFyeSB0eXBlLiAgKi8KICAKICBzdGF0aWMgc3Ry dWN0IHZhbHVlICoKQEAgLTcxNiw3ICs3MTYsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9hZGEtbGFuZy5jCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHR5cGUg KmFyZ190eXBlKQogIHsKICAgIHN0cnVjdCB0eXBlICp0eXBlOwotQEAgLTY0MTksNyArNjQyMiw3 IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZQorQEAgLTY1MjgsNyAr NjUzMSw3IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZQogIAogICAg aWYgKFRZUEVfRklFTERfQklUU0laRSAoYXJnX3R5cGUsIGZpZWxkbm8pICE9IDApCiAgICAgIHsK QEAgLTcyNSw3ICs3MjUsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFu Zy5jCiAgICAgICAgaW50IGJpdF9zaXplID0gVFlQRV9GSUVMRF9CSVRTSVpFIChhcmdfdHlwZSwg ZmllbGRubyk7CiAgCiAgICAgICAgcmV0dXJuIGFkYV92YWx1ZV9wcmltaXRpdmVfcGFja2VkX3Zh bCAoYXJnMSwgdmFsdWVfY29udGVudHMgKGFyZzEpLAotQEAgLTY0NDYsOSArNjQ0OSw5IEBAIGFk YV92YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZQorQEAgLTY1NTUsOSArNjU1OCw5 IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZQogICAgIFJldHVybnMg MSBpZiBmb3VuZCwgMCBvdGhlcndpc2UuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTczNyw3ICs3 MzcsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgCQkgICBp bnQgKmluZGV4X3ApCiAgewogICAgaW50IGk7Ci1AQCAtNjQ2Niw4ICs2NDY5LDggQEAgZmluZF9z dHJ1Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5hbWUsIHN0cgorQEAgLTY1NzUsOCArNjU3OCw4IEBA IGZpbmRfc3RydWN0X2ZpZWxkIChjb25zdCBjaGFyICpuYW1lLCBzdHIKICAKICAgIGZvciAoaSA9 IDA7IGkgPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBpICs9IDEpCiAgICAgIHsKQEAgLTc0OCw3ICs3 NDgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgICAgICAg Y29uc3QgY2hhciAqdF9maWVsZF9uYW1lID0gVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKTsKICAK ICAgICAgICBpZiAodF9maWVsZF9uYW1lID09IE5VTEwpCi1AQCAtNjUzNyw3ICs2NTQwLDcgQEAg bnVtX3Zpc2libGVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BAIC02NjQ2LDcgKzY2NDks NyBAQCBudW1fdmlzaWJsZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlKQogICAgIFNlYXJjaGVz IHJlY3Vyc2l2ZWx5IHRocm91Z2ggd3JhcHBlciBmaWVsZHMgKGUuZy4sICdfcGFyZW50JykuICAq LwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAtNzU3LDcgKzc1Nyw3IEBAIEluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmMKICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHR5cGUgKnR5cGUpCiAgewogICAgaW50IGk7Ci1AQCAtNjU3MCw3ICs2NTczLDcg QEAgYWRhX3NlYXJjaF9zdHJ1Y3RfZmllbGQgKGNoYXIgKm5hbWUsIHN0cgorQEAgLTY2NzksNyAr NjY4Miw3IEBAIGFkYV9zZWFyY2hfc3RydWN0X2ZpZWxkIChjaGFyICpuYW1lLCBzdHIKICAgICAg ICAgICAgaW50IGo7CiAgICAgICAgICAgIHN0cnVjdCB0eXBlICpmaWVsZF90eXBlID0gYWRhX2No ZWNrX3R5cGVkZWYgKFRZUEVfRklFTERfVFlQRSAodHlwZSwKICAJCQkJCQkJCQlpKSk7CkBAIC03 NjYsNyArNzY2LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLWxhbmcuYwog IAogICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgVFlQRV9ORklFTERTIChmaWVsZF90eXBlKTsg aiArPSAxKQogICAgICAgICAgICAgIHsKLUBAIC02NTg4LDggKzY1OTEsOCBAQCBhZGFfc2VhcmNo X3N0cnVjdF9maWVsZCAoY2hhciAqbmFtZSwgc3RyCitAQCAtNjY5Nyw4ICs2NzAwLDggQEAgYWRh X3NlYXJjaF9zdHJ1Y3RfZmllbGQgKGNoYXIgKm5hbWUsIHN0cgogICAgcmV0dXJuIE5VTEw7CiAg fQogIApAQCAtNzc3LDcgKzc3Nyw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2Fk YS1sYW5nLmMKICAKICAKICAvKiBSZXR1cm4gZmllbGQgI0lOREVYIGluIEFSRywgd2hlcmUgdGhl IGluZGV4IGlzIHRoYXQgcmV0dXJuZWQgYnkKLUBAIC02NTk4LDcgKzY2MDEsNyBAQCBzdGF0aWMg c3RydWN0IHZhbHVlICphZGFfaW5kZXhfc3RydWN0X2ZpCitAQCAtNjcwNyw3ICs2NzEwLDcgQEAg c3RhdGljIHN0cnVjdCB2YWx1ZSAqYWRhX2luZGV4X3N0cnVjdF9maQogICAqIElmIGZvdW5kLCBy ZXR1cm4gdmFsdWUsIGVsc2UgcmV0dXJuIE5VTEwuICAqLwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFs dWUgKgpAQCAtNzg2LDcgKzc4Niw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2Fk YS1sYW5nLmMKICAJCQlzdHJ1Y3QgdHlwZSAqdHlwZSkKICB7CiAgICByZXR1cm4gYWRhX2luZGV4 X3N0cnVjdF9maWVsZF8xICgmaW5kZXgsIGFyZywgb2Zmc2V0LCB0eXBlKTsKLUBAIC02NjEwLDcg KzY2MTMsNyBAQCBhZGFfaW5kZXhfc3RydWN0X2ZpZWxkIChpbnQgaW5kZXgsIHN0cnVjCitAQCAt NjcxOSw3ICs2NzIyLDcgQEAgYWRhX2luZGV4X3N0cnVjdF9maWVsZCAoaW50IGluZGV4LCBzdHJ1 YwogICAqICpJTkRFWF9QLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHZhbHVlICoKQEAgLTc5NSw3 ICs3OTUsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgCQkJ ICBzdHJ1Y3QgdHlwZSAqdHlwZSkKICB7CiAgICBpbnQgaTsKLUBAIC02NzAwLDcgKzY3MDMsOCBA QCBhZGFfdmFsdWVfc3RydWN0X2VsdCAoc3RydWN0IHZhbHVlICphcmcsCitAQCAtNjgwOSw3ICs2 ODEyLDggQEAgYWRhX3ZhbHVlX3N0cnVjdF9lbHQgKHN0cnVjdCB2YWx1ZSAqYXJnLAogICAgICB2 ID0gYWRhX3NlYXJjaF9zdHJ1Y3RfZmllbGQgKG5hbWUsIGFyZywgMCwgdCk7CiAgICBlbHNlCiAg ICAgIHsKQEAgLTgwNSw3ICs4MDUsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9h ZGEtbGFuZy5jCiAgICAgICAgc3RydWN0IHR5cGUgKmZpZWxkX3R5cGU7CiAgICAgICAgQ09SRV9B RERSIGFkZHJlc3M7CiAgCi1AQCAtNzAwNiw4ICs3MDEwLDggQEAgYWRhX2NvZXJjZV9yZWYgKHN0 cnVjdCB2YWx1ZSAqdmFsMCkKK0BAIC03MTIyLDggKzcxMjYsOCBAQCBhZGFfY29lcmNlX3JlZiAo c3RydWN0IHZhbHVlICp2YWwwKQogIC8qIFJldHVybiBPRkYgcm91bmRlZCB1cHdhcmQgaWYgbmVj ZXNzYXJ5IHRvIGEgbXVsdGlwbGUgb2YKICAgICBBTElHTk1FTlQgKGEgcG93ZXIgb2YgMikuICAq LwogIApAQCAtODE2LDcgKzgxNiw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2Fk YS1sYW5nLmMKICB7CiAgICByZXR1cm4gKG9mZiArIGFsaWdubWVudCAtIDEpICYgfihhbGlnbm1l bnQgLSAxKTsKICB9Ci1AQCAtNzM4NiwxMCArNzM5MCw5IEBAIGFkYV90ZW1wbGF0ZV90b19maXhl ZF9yZWNvcmRfdHlwZV8xIChzdHIKK0BAIC03NTAyLDEwICs3NTA2LDkgQEAgYWRhX3RlbXBsYXRl X3RvX2ZpeGVkX3JlY29yZF90eXBlXzEgKHN0cgogICAgc3RydWN0IHZhbHVlICptYXJrID0gdmFs dWVfbWFyayAoKTsKICAgIHN0cnVjdCB2YWx1ZSAqZHZhbDsKICAgIHN0cnVjdCB0eXBlICpydHlw ZTsKQEAgLTgyOSw3ICs4MjksNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEt bGFuZy5jCiAgICBpbnQgZjsKICAKICAgIC8qIENvbXB1dGUgdGhlIG51bWJlciBvZiBmaWVsZHMg aW4gdGhpcyByZWNvcmQgdHlwZSB0aGF0IGFyZSBnb2luZwotQEAgLTc0NjAsNyArNzQ2Myw3IEBA IGFkYV90ZW1wbGF0ZV90b19maXhlZF9yZWNvcmRfdHlwZV8xIChzdHIKK0BAIC03NTc2LDcgKzc1 NzksNyBAQCBhZGFfdGVtcGxhdGVfdG9fZml4ZWRfcmVjb3JkX3R5cGVfMSAoc3RyCiAgCSAgICAg dGhhdCBmb2xsb3cgdGhpcyBvbmUuICAqLwogIAkgIGlmIChhZGFfaXNfYWxpZ25lcl90eXBlIChm aWVsZF90eXBlKSkKICAJICAgIHsKQEAgLTgzOCw3ICs4MzgsNyBAQCBJbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgCiAgCSAgICAgIGZpZWxkX3ZhbGFkZHIgPSBjb25k X29mZnNldF9ob3N0IChmaWVsZF92YWxhZGRyLCBmaWVsZF9vZmZzZXQpOwogIAkgICAgICBmaWVs ZF9hZGRyZXNzID0gY29uZF9vZmZzZXRfdGFyZ2V0IChmaWVsZF9hZGRyZXNzLCBmaWVsZF9vZmZz ZXQpOwotQEAgLTc1NzksMTEgKzc1ODIsMTEgQEAgYWRhX3RlbXBsYXRlX3RvX2ZpeGVkX3JlY29y ZF90eXBlXzEgKHN0cgorQEAgLTc3MDUsMTEgKzc3MDgsMTEgQEAgYWRhX3RlbXBsYXRlX3RvX2Zp eGVkX3JlY29yZF90eXBlXzEgKHN0cgogICAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA8PSAwKQog ICAgICB7CiAgICAgICAgaWYgKFRZUEVfTkFNRSAocnR5cGUpKQpAQCAtODU0LDcgKzg1NCw3IEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmMKICAgICAgfQogICAgZWxz ZQogICAgICB7Ci1AQCAtNzkyMCw3ICs3OTIzLDggQEAgdG9fZml4ZWRfYXJyYXlfdHlwZSAoc3Ry dWN0IHR5cGUgKnR5cGUwLAorQEAgLTgwNDYsNyArODA0OSw4IEBAIHRvX2ZpeGVkX2FycmF5X3R5 cGUgKHN0cnVjdCB0eXBlICp0eXBlMCwKICAJIHR5cGUgd2FzIGEgcmVndWxhciAobm9uLXBhY2tl ZCkgYXJyYXkgdHlwZS4gIEFzIGEgcmVzdWx0LCB0aGUKICAJIGJpdHNpemUgb2YgdGhlIGFycmF5 IGVsZW1lbnRzIG5lZWRzIHRvIGJlIHNldCBhZ2FpbiwgYW5kIHRoZSBhcnJheQogIAkgbGVuZ3Ro IG5lZWRzIHRvIGJlIHJlY29tcHV0ZWQgYmFzZWQgb24gdGhhdCBiaXRzaXplLiAgKi8KQEAgLTg2 NCwxMSArODY0LDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmMK ICAgICAgICBpbnQgZWx0X2JpdHNpemUgPSBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUwLCAwKTsK ICAKICAgICAgICBUWVBFX0ZJRUxEX0JJVFNJWkUgKHJlc3VsdCwgMCkgPSBUWVBFX0ZJRUxEX0JJ VFNJWkUgKHR5cGUwLCAwKTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5n LmgKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9hZGEtbGFuZy5oCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2FkYS1sYW5nLmgJMjAxMi0wMy0yOSAy MDoyMzowMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1s YW5nLmgJMjAxMi0xMS0wNyAyMjowOToyOS42NjkxNDEwMzUgKzAxMDAKLUBAIC0xNjgsNyArMTY4 LDcgQEAgZXh0ZXJuIHZvaWQgYWRhX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlCistLS0gZ2RiLTcu NS41MC4yMDEzMDExOC5vcmlnL2dkYi9hZGEtbGFuZy5oCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDYx NjAxMzAxICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYWRhLWxhbmcuaAkyMDEz LTAxLTE4IDIzOjI3OjI4Ljg0NTYwNzI5NSArMDEwMAorQEAgLTE2OSw3ICsxNjksNyBAQCBleHRl cm4gdm9pZCBhZGFfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUKICBleHRlcm4gdm9pZCBhZGFfcHJp bnRfdHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBzeW1ib2wgKm5ld19zeW1ib2ws CiAgCQkJICAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOwogIApAQCAtODc3LDcgKzg3Nyw3 IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmgKICAJCQkgICBzdHJ1 Y3QgdWlfZmlsZSAqLCBpbnQsCiAgCQkJICAgY29uc3Qgc3RydWN0IHZhbHVlICosCiAgCQkJICAg Y29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7Ci1AQCAtMTgzLDcgKzE4Myw3IEBA IGV4dGVybiB2b2lkIGFkYV9lbWl0X2NoYXIgKGludCwgc3RydWN0IHQKK0BAIC0xODQsNyArMTg0 LDcgQEAgZXh0ZXJuIHZvaWQgYWRhX2VtaXRfY2hhciAoaW50LCBzdHJ1Y3QgdAogIGV4dGVybiB2 b2lkIGFkYV9wcmludGNoYXIgKGludCwgc3RydWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUgKik7 CiAgCiAgZXh0ZXJuIHZvaWQgYWRhX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqLCBzdHJ1Y3Qg dHlwZSAqLCBjb25zdCBnZGJfYnl0ZSAqLApAQCAtODg2LDcgKzg4Niw3IEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmgKICAJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZV9w cmludF9vcHRpb25zICopOwogIAogIHN0cnVjdCB2YWx1ZSAqYWRhX2NvbnZlcnRfYWN0dWFsIChz dHJ1Y3QgdmFsdWUgKmFjdHVhbCwKLUBAIC0yNTcsNyArMjU3LDcgQEAgZXh0ZXJuIGludCBhZGFf aXNfY29uc3RyYWluZWRfcGFja2VkX2FycgorQEAgLTI1OCw3ICsyNTgsNyBAQCBleHRlcm4gaW50 IGFkYV9pc19jb25zdHJhaW5lZF9wYWNrZWRfYXJyCiAgCiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAq YWRhX3ZhbHVlX3ByaW1pdGl2ZV9wYWNrZWRfdmFsIChzdHJ1Y3QgdmFsdWUgKiwKICAJCQkJCQkg ICAgIGNvbnN0IGdkYl9ieXRlICosCkBAIC04OTUsMTEgKzg5NSwxMSBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdHlwZSAqKTsKICAKICBleHRlcm4gc3Ry dWN0IHR5cGUgKmFkYV9jb2VyY2VfdG9fc2ltcGxlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICop OwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLXR5cGVwcmludC5jCitJbmRleDog Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYWRhLXR5cGVwcmludC5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2FkYS10eXBlcHJpbnQuYwkyMDEyLTA0LTE4IDA4 OjQ2OjQ2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLXR5 cGVwcmludC5jCTIwMTItMTEtMDcgMjI6MDk6MjkuNzA1MTQwOTgyICswMTAwCi1AQCAtODE1LDgg KzgxNSw4IEBAIGFkYV9wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZTAsIGNvbnMKKy0tLSBn ZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2FkYS10eXBlcHJpbnQuYwkyMDEzLTAxLTE4IDIz OjI3OjIyLjA2MTYwMTMwMSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2FkYS10 eXBlcHJpbnQuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg0NTYwNzI5NSArMDEwMAorQEAgLTgyOSw4 ICs4MjksOCBAQCBhZGFfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUwLCBjb25zCiAgCSAg ICBjb25zdCBjaGFyICpuYW1lID0gYWRhX3R5cGVfbmFtZSAodHlwZSk7CiAgCiAgCSAgICBpZiAo IWFkYV9pc19yYW5nZV90eXBlX25hbWUgKG5hbWUpKQpAQCAtOTEwLDcgKzkxMCw3IEBAIEluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS10eXBlcHJpbnQuYwogIAkgICAgZWxzZQogIAkg ICAgICB7CiAgCQlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJyYW5nZSAiKTsKLUBAIC04Mzcs NyArODM3LDggQEAgYWRhX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlMCwgY29ucworQEAg LTg1MSw3ICs4NTEsOCBAQCBhZGFfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUwLCBjb25z CiAgCSAgfQogIAlicmVhazsKICAgICAgICBjYXNlIFRZUEVfQ09ERV9GTFQ6CkBAIC05MjAsMTEg KzkyMCwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtdHlwZXByaW50LmMK ICAJYnJlYWs7CiAgICAgICAgY2FzZSBUWVBFX0NPREVfRU5VTToKICAJaWYgKHNob3cgPCAwKQot SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLXZhbHByaW50LmMKK0luZGV4OiBnZGIt Ny41LjUwLjIwMTMwMTE4L2dkYi9hZGEtdmFscHJpbnQuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9hZGEtdmFscHJpbnQuYwkyMDEyLTExLTA3IDIyOjAzOjU3 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLXZhbHByaW50 LmMJMjAxMi0xMS0wNyAyMjowOToyOS43MzExNDA5NDMgKzAxMDAKLUBAIC00MiwxNiArNDIsMTYg QEAgc3RhdGljIHZvaWQgcHJpbnRfcmVjb3JkIChzdHJ1Y3QgdHlwZSAqLAorLS0tIGdkYi03LjUu NTAuMjAxMzAxMTgub3JpZy9nZGIvYWRhLXZhbHByaW50LmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4w NjI2MDEzMDMgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9hZGEtdmFscHJpbnQu YwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg0NjYwNzI5NyArMDEwMAorQEAgLTQxLDE2ICs0MSwxNiBA QCBzdGF0aWMgdm9pZCBwcmludF9yZWNvcmQgKHN0cnVjdCB0eXBlICosCiAgCQkJICBjb25zdCBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKICAKICBzdGF0aWMgaW50IHByaW50X2ZpZWxk X3ZhbHVlcyAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwKQEAgLTk0NSw3ICs5NDUs NyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtdmFscHJpbnQuYwogIAkJCSAg ICAgY29uc3Qgc3RydWN0IHZhbHVlICosCiAgCQkJICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJp bnRfb3B0aW9ucyAqKTsKICAMCi1AQCAtMTQ0LDcgKzE0NCw3IEBAIHZhbF9wcmludF9wYWNrZWRf YXJyYXlfZWxlbWVudHMgKHN0cnVjdAorQEAgLTE0Myw3ICsxNDMsNyBAQCB2YWxfcHJpbnRfcGFj a2VkX2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QKICAgIHVuc2lnbmVkIGludCB0aGluZ3NfcHJpbnRl ZCA9IDA7CiAgICB1bnNpZ25lZCBsZW47CiAgICBzdHJ1Y3QgdHlwZSAqZWx0dHlwZSwgKmluZGV4 X3R5cGU7CkBAIC05NTQsNyArOTU0LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv YWRhLXZhbHByaW50LmMKICAgIHVuc2lnbmVkIGxvbmcgYml0c2l6ZSA9IFRZUEVfRklFTERfQklU U0laRSAodHlwZSwgMCk7CiAgICBzdHJ1Y3QgdmFsdWUgKm1hcmsgPSB2YWx1ZV9tYXJrICgpOwog ICAgTE9OR0VTVCBsb3cgPSAwOwotQEAgLTI5Myw3ICsyOTMsNyBAQCBhZGFfZW1pdF9jaGFyIChp bnQgYywgc3RydWN0IHR5cGUgKnR5cGUsCitAQCAtMjkyLDcgKzI5Miw3IEBAIGFkYV9lbWl0X2No YXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKICAgICBvZiBhIGNoYXJhY3Rlci4gICovCiAg CiAgc3RhdGljIGludApAQCAtOTYzLDcgKzk2Myw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL2FkYS12YWxwcmludC5jCiAgCSBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlcikKICB7 CiAgICBpZiAodHlwZV9sZW4gPT0gMSkKLUBAIC00NjUsMTEgKzQ2NSwxMSBAQCBhZGFfcHJpbnRf c2NhbGFyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9OCitAQCAtNDY0LDExICs0NjQsMTEgQEAgYWRh X3ByaW50X3NjYWxhciAoc3RydWN0IHR5cGUgKnR5cGUsIExPTgogIAogIHN0YXRpYyB2b2lkCiAg cHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHN0cnVjdCB0eXBlICplbHR0eXBlLCBj b25zdCBnZGJfYnl0ZSAqc3RyaW5nLApAQCAtOTc3LDcgKzk3Nyw3IEBAIEluZGV4OiBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL2FkYS12YWxwcmludC5jCiAgICB1bnNpZ25lZCBpbnQgdGhpbmdzX3By aW50ZWQgPSAwOwogICAgaW50IGluX3F1b3RlcyA9IDA7CiAgICBpbnQgbmVlZF9jb21tYSA9IDA7 Ci1AQCAtNDg0LDkgKzQ4NCw5IEBAIHByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBz dHJ1Y3QKK0BAIC00ODMsOSArNDgzLDkgQEAgcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJl YW0sIHN0cnVjdAogICAgICB7CiAgICAgICAgLyogUG9zaXRpb24gb2YgdGhlIGNoYXJhY3RlciB3 ZSBhcmUgZXhhbWluaW5nCiAgICAgICAgICAgdG8gc2VlIHdoZXRoZXIgaXQgaXMgcmVwZWF0ZWQu ICAqLwpAQCAtOTg5LDcgKzk4OSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2Fk YS12YWxwcmludC5jCiAgCiAgICAgICAgUVVJVDsKICAKLUBAIC01MjAsNyArNTIwLDggQEAgcHJp bnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHN0cnVjdAorQEAgLTUxNiw3ICs1MTYsOCBA QCBwcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgc3RydWN0CiAgCSAgYWRhX2VtaXRf Y2hhciAoY2hhcl9hdCAoc3RyaW5nLCBpLCB0eXBlX2xlbiwgYnl0ZV9vcmRlciksCiAgCQkJIGVs dHR5cGUsIHN0cmVhbSwgJ1wnJywgdHlwZV9sZW4pOwogIAkgIGZwdXRzX2ZpbHRlcmVkICgiJyIs IHN0cmVhbSk7CkBAIC05OTksNyArOTk5LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvYWRhLXZhbHByaW50LmMKICAJICBpID0gcmVwMSAtIDE7CiAgCSAgdGhpbmdzX3ByaW50ZWQg Kz0gb3B0aW9ucy0+cmVwZWF0X2NvdW50X3RocmVzaG9sZDsKICAJICBuZWVkX2NvbW1hID0gMTsK LUBAIC01NTYsNyArNTU3LDcgQEAgcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHN0 cnVjdAorQEAgLTU0NCw3ICs1NDUsNyBAQCBwcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSwgc3RydWN0CiAgCiAgdm9pZAogIGFkYV9wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSwgc3RydWN0IHR5cGUgKnR5cGUsCkBAIC0xMDA4LDcgKzEwMDgsNyBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9hZGEtdmFscHJpbnQuYwogIAkgICAgICBjb25zdCBjaGFyICplbmNv ZGluZywgaW50IGZvcmNlX2VsbGlwc2VzLAogIAkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJp bnRfb3B0aW9ucyAqb3B0aW9ucykKICB7Ci1AQCAtNTcwLDcgKzU3MSw3IEBAIGFkYV9wcmludHN0 ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgc3QKK0BAIC01NTgsNyArNTU5LDcgQEAgYWRhX3By aW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdAogIAogIHZvaWQKICBhZGFfdmFsX3By aW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC0xMDE3 LDcgKzEwMTcsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtdmFscHJpbnQu YwogIAkgICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAgCSAgICAg ICBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKICAJICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9w cmludF9vcHRpb25zICpvcHRpb25zKQotQEAgLTYwMiw4ICs2MDMsOCBAQCBhZGFfdmFsX3ByaW50 X2FycmF5IChzdHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC01OTAsOCArNTkxLDggQEAgYWRhX3ZhbF9w cmludF9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsCiAgICAgIHsKICAgICAgICBlbnVtIGJmZF9l bmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2V0X3R5cGVfYXJjaCAodHlw ZSkpOwogICAgICAgIHN0cnVjdCB0eXBlICplbHR0eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSk7CkBAIC0xMDI4LDcgKzEwMjgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9h ZGEtdmFscHJpbnQuYwogIAogICAgICAgIC8qIFdlIGtub3cgdGhhdCBFTFRUWVBFIGNhbm5vdCBw b3NzaWJseSBiZSBudWxsLCBiZWNhdXNlIHdlIGZvdW5kCiAgCSB0aGF0IFRZUEUgaXMgYSBzdHJp bmctbGlrZSB0eXBlLiAgU2ltaWxhcmx5LCB0aGUgc2l6ZSBvZiBFTFRUWVBFCi1AQCAtNjIxLDcg KzYyMiw3IEBAIGFkYV92YWxfcHJpbnRfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlLAorQEAgLTYw OSw3ICs2MTAsNyBAQCBhZGFfdmFsX3ByaW50X2FycmF5IChzdHJ1Y3QgdHlwZSAqdHlwZSwKICAg ICAgICAgICBlbGVtZW50cyB1cCB0byBpdC4gICovCiAgICAgICAgaWYgKG9wdGlvbnMtPnN0b3Bf cHJpbnRfYXRfbnVsbCkKICAgICAgICAgIHsKQEAgLTEwMzcsNyArMTAzNyw3IEBAIEluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS12YWxwcmludC5jCiAgCiAgICAgICAgICAgIC8qIExv b2sgZm9yIGEgTlVMTCBjaGFyLiAgKi8KICAgICAgICAgICAgZm9yICh0ZW1wX2xlbiA9IDA7Ci1A QCAtNjU0LDcgKzY1NSw3IEBAIGFkYV92YWxfcHJpbnRfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBl LAorQEAgLTY0Miw3ICs2NDMsNyBAQCBhZGFfdmFsX3ByaW50X2FycmF5IChzdHJ1Y3QgdHlwZSAq dHlwZSwKICAKICBzdGF0aWMgdm9pZAogIGFkYV92YWxfcHJpbnRfMSAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLXZhbHByaW50LmMKICAJCSBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCSBjb25zdCBzdHJ1Y3QgdmFsdWUgKm9yaWdpbmFs X3ZhbHVlLAogIAkJIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQot QEAgLTkyMywxMiArOTI0LDEyIEBAIGFkYV92YWxfcHJpbnRfMSAoc3RydWN0IHR5cGUgKnR5cGUs IGNvbnMKK0BAIC05MTcsMTIgKzkxOCwxMiBAQCBhZGFfdmFsX3ByaW50XzEgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zCiAgCiAgc3RhdGljIGludAogIHByaW50X3ZhcmlhbnRfcGFydCAoc3RydWN0 IHR5cGUgKnR5cGUsIGludCBmaWVsZF9udW0sCkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBJbmRleDog Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtdmFscHJpbnQuYwogIHsKICAgIHN0cnVjdCB0eXBl ICp2YXJfdHlwZSA9IFRZUEVfRklFTERfVFlQRSAodHlwZSwgZmllbGRfbnVtKTsKICAgIGludCB3 aGljaCA9IGFkYV93aGljaF92YXJpYW50X2FwcGxpZXMgKHZhcl90eXBlLCBvdXRlcl90eXBlLAot QEAgLTEwMzUsMTEgKzEwMzYsMTEgQEAgcHJpbnRfcmVjb3JkIChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZworQEAgLTEwMjksMTEgKzEwMzAsMTEgQEAgcHJpbnRfcmVjb3JkIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgY29uc3QgZwogIAogIHN0YXRpYyBpbnQKICBwcmludF9maWVsZF92YWx1ZXMgKHN0 cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTEwNzUsNyArMTA3 NSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS12YWxwcmludC5jCiAgewog ICAgaW50IGksIGxlbjsKICAKLUBAIC0xMTIwLDcgKzExMjEsNyBAQCBwcmludF9maWVsZF92YWx1 ZXMgKHN0cnVjdCB0eXBlICp0eXBlLCBjCitAQCAtMTA5OSw3ICsxMTAwLDcgQEAgcHJpbnRfZmll bGRfdmFsdWVzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgYwogIAkgICAgfQogIAkgIGVsc2UKICAJICAg IHsKQEAgLTEwODQsMTEgKzEwODQsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv YWRhLXZhbHByaW50LmMKICAJICAgICAgaW50IGJpdF9zaXplID0gVFlQRV9GSUVMRF9CSVRTSVpF ICh0eXBlLCBpKTsKICAJICAgICAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKICAK LUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2Fubm90YXRlLmMKK0luZGV4OiBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi9hbm5vdGF0ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIw MTIwOTI2Lm9yaWcvZ2RiL2Fubm90YXRlLmMJMjAxMi0wMS0wNCAwOToxNjo1Ni4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2Fubm90YXRlLmMJMjAxMi0xMS0wNyAy MjowOToyOS43MzIxNDA5NDIgKzAxMDAKLUBAIC01MjIsMjEgKzUyMiwyMSBAQCBhbm5vdGF0ZV9m cmFtZV9lbmQgKHZvaWQpCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9hbm5vdGF0 ZS5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDYyNjAxMzAzICswMTAwCisrKysgZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvYW5ub3RhdGUuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg0NjYwNzI5NyArMDEw MAorQEAgLTUyMSwyMSArNTIxLDIxIEBAIGFubm90YXRlX2ZyYW1lX2VuZCAodm9pZCkKICB9CiAg DAogIHZvaWQKQEAgLTExMTQsMTEgKzExMTQsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvYW5ub3RhdGUuYwogIH0KICAKICB2b2lkCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9hbm5vdGF0ZS5oCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYW5ub3RhdGUu aAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9hbm5vdGF0ZS5o CTIwMTItMDEtMDQgMDk6MTY6NTYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9hbm5vdGF0ZS5oCTIwMTItMTEtMDcgMjI6MDk6MjkuNzMzMTQwOTQxICswMTAwCi1A QCAtOTQsOCArOTQsOCBAQCBleHRlcm4gdm9pZCBhbm5vdGF0ZV9mcmFtZV9zb3VyY2VfZW5kICh2 CistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9hbm5vdGF0ZS5oCTIwMTMtMDEtMTgg MjM6Mjc6MjIuMDYyNjAxMzAzICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYW5u b3RhdGUuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg0NjYwNzI5NyArMDEwMAorQEAgLTkzLDggKzkz LDggQEAgZXh0ZXJuIHZvaWQgYW5ub3RhdGVfZnJhbWVfc291cmNlX2VuZCAodgogIGV4dGVybiB2 b2lkIGFubm90YXRlX2ZyYW1lX3doZXJlICh2b2lkKTsKICBleHRlcm4gdm9pZCBhbm5vdGF0ZV9m cmFtZV9lbmQgKHZvaWQpOwogIApAQCAtMTEyOSwxMCArMTEyOSwxMCBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9hbm5vdGF0ZS5oCiAgZXh0ZXJuIHZvaWQgYW5ub3RhdGVfZWx0X3Jl cF9lbmQgKHZvaWQpOwogIGV4dGVybiB2b2lkIGFubm90YXRlX2VsdCAodm9pZCk7CiAgZXh0ZXJu IHZvaWQgYW5ub3RhdGVfYXJyYXlfc2VjdGlvbl9lbmQgKHZvaWQpOwotSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvYXJtLWxpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvYXJtLWxpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2 Lm9yaWcvZ2RiL2FybS1saW51eC1uYXQuYwkyMDEyLTA4LTAxIDE0OjU3OjA2LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYXJtLWxpbnV4LW5hdC5jCTIwMTItMTEt MDcgMjI6MDk6MjkuNzM0MTQwOTQwICswMTAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmln L2dkYi9hcm0tbGludXgtbmF0LmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wNjM2MDEzMDUgKzAxMDAK KysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9hcm0tbGludXgtbmF0LmMJMjAxMy0wMS0xOCAy MzoyNzoyOC44NDc2MDcyOTggKzAxMDAKIEBAIC0xMDczLDcgKzEwNzMsNyBAQCBhcm1fbGludXhf cmVtb3ZlX2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBnCiAgLyogQXJlIHdlIGFibGUgdG8gdXNlIGEg aGFyZHdhcmUgd2F0Y2hwb2ludCBmb3IgdGhlIExFTiBieXRlcyBzdGFydGluZyBhdCAKICAgICBB RERSPyAgKi8KQEAgLTExNDIsMTEgKzExNDIsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvYXJtLWxpbnV4LW5hdC5jCiAgewogICAgY29uc3Qgc3RydWN0IGFybV9saW51eF9od2Jw X2NhcCAqY2FwID0gYXJtX2xpbnV4X2dldF9od2JwX2NhcCAoKTsKICAgIENPUkVfQUREUiBtYXhf d3BfbGVuZ3RoLCBhbGlnbmVkX2FkZHI7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9h eC1nZGIuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2F4LWdkYi5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2F4LWdkYi5jCTIwMTItMTEtMDcg MjI6MDM6NTcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9heC1n ZGIuYwkyMDEyLTExLTA3IDIyOjA5OjI5LjczNjE0MDkzOCArMDEwMAotQEAgLTg0LDEyICs4NCwx MiBAQCBzdGF0aWMgdm9pZCBnZW5fdHJhY2VkX3BvcCAoc3RydWN0IGdkYmFyCistLS0gZ2RiLTcu NS41MC4yMDEzMDExOC5vcmlnL2dkYi9heC1nZGIuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA2NDYw MTMwNyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2F4LWdkYi5jCTIwMTMtMDEt MTggMjM6Mjc6MjguODQ4NjA3Mjk5ICswMTAwCitAQCAtODMsMTIgKzgzLDEyIEBAIHN0YXRpYyB2 b2lkIGdlbl90cmFjZWRfcG9wIChzdHJ1Y3QgZ2RiYXIKICBzdGF0aWMgdm9pZCBnZW5fc2lnbl9l eHRlbmQgKHN0cnVjdCBhZ2VudF9leHByICosIHN0cnVjdCB0eXBlICopOwogIHN0YXRpYyB2b2lk IGdlbl9leHRlbmQgKHN0cnVjdCBhZ2VudF9leHByICosIHN0cnVjdCB0eXBlICopOwogIHN0YXRp YyB2b2lkIGdlbl9mZXRjaCAoc3RydWN0IGFnZW50X2V4cHIgKiwgc3RydWN0IHR5cGUgKik7CkBA IC0xMTYxLDcgKzExNjEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9heC1nZGIu YwogIHN0YXRpYyB2b2lkIGdlbl9zeW1fb2Zmc2V0IChzdHJ1Y3QgYWdlbnRfZXhwciAqLCBzdHJ1 Y3Qgc3ltYm9sICopOwogIHN0YXRpYyB2b2lkIGdlbl92YXJfcmVmIChzdHJ1Y3QgZ2RiYXJjaCAq LCBzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsCiAgCQkJIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLCBz dHJ1Y3Qgc3ltYm9sICp2YXIpOwotQEAgLTEzNywxNSArMTM3LDE2IEBAIHN0YXRpYyB2b2lkIGdl bl9kZXJlZiAoc3RydWN0IGFnZW50X2V4cHIKK0BAIC0xMzYsMTUgKzEzNiwxNiBAQCBzdGF0aWMg dm9pZCBnZW5fZGVyZWYgKHN0cnVjdCBhZ2VudF9leHByCiAgc3RhdGljIHZvaWQgZ2VuX2FkZHJl c3Nfb2YgKHN0cnVjdCBhZ2VudF9leHByICosIHN0cnVjdCBheHNfdmFsdWUgKik7CiAgc3RhdGlj IHZvaWQgZ2VuX2JpdGZpZWxkX3JlZiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgc3RydWN0IGFn ZW50X2V4cHIgKmF4LAogIAkJCSAgICAgIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLApAQCAtMTE4 MSw3ICsxMTgxLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYXgtZ2RiLmMKICAJ CQkJICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSk7CiAgc3RhdGljIHZvaWQgZ2VuX3N0cnVjdF9yZWYg KHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBhZ2VudF9leHByICpheCwKICAJCQkgICAg c3RydWN0IGF4c192YWx1ZSAqdmFsdWUsCi1AQCAtNTcwLDcgKzU3MSw3IEBAIGdlbl9mZXRjaCAo c3RydWN0IGFnZW50X2V4cHIgKmF4LCBzdHJ1Y3QKK0BAIC01NjksNyArNTcwLDcgQEAgZ2VuX2Zl dGNoIChzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsIHN0cnVjdAogICAgIHJpZ2h0IHNoaWZ0IGl0IGJ5 IC1ESVNUQU5DRSBiaXRzIGlmIERJU1RBTkNFIDwgMC4gIFRoaXMgZ2VuZXJhdGVzCiAgICAgdW5z aWduZWQgKGxvZ2ljYWwpIHJpZ2h0IHNoaWZ0cy4gICovCiAgc3RhdGljIHZvaWQKQEAgLTExOTAs NyArMTE5MCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2F4LWdkYi5jCiAgewog ICAgaWYgKGRpc3RhbmNlID4gMCkKICAgICAgewotQEAgLTYyNCw3ICs2MjUsNyBAQCBnZW5fZnJh bWVfbG9jYWxzX2FkZHJlc3MgKHN0cnVjdCBnZGJhcmNoCitAQCAtNjIzLDcgKzYyNCw3IEBAIGdl bl9mcmFtZV9sb2NhbHNfYWRkcmVzcyAoc3RydWN0IGdkYmFyY2gKICAgICBwcm9ncmFtbWluZyBp biBNTCwgaXQgd291bGQgYmUgY2xlYXJlciB3aHkgdGhlc2UgYXJlIHRoZSBzYW1lCiAgICAgdGhp bmcuICAqLwogIHN0YXRpYyB2b2lkCkBAIC0xMTk5LDcgKzExOTksNyBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9heC1nZGIuYwogIHsKICAgIC8qIEl0IHdvdWxkIHN1ZmZpY2UgdG8g c2ltcGx5IHB1c2ggdGhlIG9mZnNldCBhbmQgYWRkIGl0LCBidXQgdGhpcwogICAgICAgbWFrZXMg aXQgZWFzaWVyIHRvIHJlYWQgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIG9mZnNldHMgaW4gdGhlCi1A QCAtMTI4MCw3ICsxMjgxLDcgQEAgZ2VuX2FkZHJlc3Nfb2YgKHN0cnVjdCBhZ2VudF9leHByICph eCwgcworQEAgLTEyNzksNyArMTI4MCw3IEBAIGdlbl9hZGRyZXNzX29mIChzdHJ1Y3QgYWdlbnRf ZXhwciAqYXgsIHMKICBzdGF0aWMgdm9pZAogIGdlbl9iaXRmaWVsZF9yZWYgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIHN0cnVjdCBhZ2VudF9leHByICpheCwKICAJCSAgc3RydWN0IGF4c192YWx1 ZSAqdmFsdWUsIHN0cnVjdCB0eXBlICp0eXBlLApAQCAtMTIwOCw3ICsxMjA4LDcgQEAgSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYXgtZ2RiLmMKICB7CiAgICAvKiBOb3RlIHRoYXQgb3Bz W2ldIGZldGNoZXMgOCA8PCBpIGJpdHMuICAqLwogICAgc3RhdGljIGVudW0gYWdlbnRfb3Agb3Bz W10KLUBAIC0xMzE1LDEzICsxMzE2LDEzIEBAIGdlbl9iaXRmaWVsZF9yZWYgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAKK0BAIC0xMzE0LDEzICsxMzE1LDEzIEBAIGdlbl9iaXRmaWVsZF9yZWYgKHN0 cnVjdCBleHByZXNzaW9uICpleHAKICAKICAgIC8qIFRoZSBmaXJzdCBhbmQgb25lLWFmdGVyLWxh c3QgYml0cyBpbiB0aGUgZmllbGQsIGJ1dCByb3VuZGVkIGRvd24KICAgICAgIGFuZCB1cCB0byBi eXRlIGJvdW5kYXJpZXMuICAqLwpAQCAtMTIyNyw3ICsxMjI3LDcgQEAgSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvYXgtZ2RiLmMKICAKICAgIC8qIFRoZSBpbmRleCBpbiBvcHMgb2YgdGhl IG9wY29kZSB3ZSdyZSBjb25zaWRlcmluZy4gICovCiAgICBpbnQgb3A7Ci1AQCAtMTQ0MCw3ICsx NDQxLDcgQEAgZ2VuX2JpdGZpZWxkX3JlZiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cAorQEAgLTE0 MzksNyArMTQ0MCw3IEBAIGdlbl9iaXRmaWVsZF9yZWYgKHN0cnVjdCBleHByZXNzaW9uICpleHAK ICBzdGF0aWMgdm9pZAogIGdlbl9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCBleHByZXNzaW9uICpl eHAsCiAgCQkgICAgIHN0cnVjdCBhZ2VudF9leHByICpheCwgc3RydWN0IGF4c192YWx1ZSAqdmFs dWUsCkBAIC0xMjM2LDcgKzEyMzYsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9h eC1nZGIuYwogIHsKICAgIC8qIElzIHRoaXMgYSBiaXRmaWVsZD8gICovCiAgICBpZiAoVFlQRV9G SUVMRF9QQUNLRUQgKHR5cGUsIGZpZWxkbm8pKQotQEAgLTE0NjUsNyArMTQ2Niw3IEBAIGdlbl9w cmltaXRpdmVfZmllbGQgKHN0cnVjdCBleHByZXNzaW9uICoKK0BAIC0xNDY0LDcgKzE0NjUsNyBA QCBnZW5fcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqCiAgc3RhdGljIGludAog IGdlbl9zdHJ1Y3RfcmVmX3JlY3Vyc2l2ZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgc3RydWN0 IGFnZW50X2V4cHIgKmF4LAogIAkJCSAgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUsCkBAIC0xMjQ1 LDEwICsxMjQ1LDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2F4LWdkYi5jCiAg ewogICAgaW50IGksIHJzbHQ7CiAgICBpbnQgbmJhc2VzID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0 eXBlKTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2F4LWdlbmVyYWwuYworSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2F4LWdlbmVyYWwuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9heC1nZW5lcmFsLmMJMjAxMi0wNy0wMiAxNzoyOToz My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2F4LWdlbmVyYWwu YwkyMDEyLTExLTA3IDIyOjA5OjI5Ljc0MzE0MDkyNyArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAx MzAxMTgub3JpZy9nZGIvYXgtZ2VuZXJhbC5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDY0NjAxMzA3 ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYXgtZ2VuZXJhbC5jCTIwMTMtMDEt MTggMjM6Mjc6MjguODQ4NjA3Mjk5ICswMTAwCiBAQCAtMTkyLDcgKzE5Miw3IEBAIGF4X3plcm9f ZXh0IChzdHJ1Y3QgYWdlbnRfZXhwciAqeCwgaW50IG4KICAKICAvKiBBcHBlbmQgYSB0cmFjZV9x dWljayBpbnN0cnVjdGlvbiB0byBFWFBSLCB0byByZWNvcmQgTiBieXRlcy4gICovCkBAIC0xMjU4 LDEwICsxMjU4LDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2F4LWdlbmVyYWwu YwogIHsKICAgIC8qIE4gbXVzdCBmaXQgaW4gYSBieXRlLiAgKi8KICAgIGlmIChuIDwgMCB8fCBu ID4gMjU1KQotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYXguaAorSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAxMTgvZ2RiL2F4LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5 MjYub3JpZy9nZGIvYXguaAkyMDEyLTA3LTAyIDE3OjI5OjMzLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYXguaAkyMDEyLTExLTA3IDIyOjA5OjI5Ljc0NDE0MDky NSArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvYXguaAkyMDEzLTAxLTE4 IDIzOjI3OjIyLjA2NDYwMTMwNyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2F4 LmgJMjAxMy0wMS0xOCAyMzoyNzoyOC44NDg2MDcyOTkgKzAxMDAKIEBAIC0xOTAsNyArMTkwLDcg QEAgZXh0ZXJuIHZvaWQgYXhfZXh0IChzdHJ1Y3QgYWdlbnRfZXhwciAqRQogIGV4dGVybiB2b2lk IGF4X3plcm9fZXh0IChzdHJ1Y3QgYWdlbnRfZXhwciAqRVhQUiwgaW50IE4pOwogIApAQCAtMTI3 MSwxMSArMTI3MSwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9heC5oCiAgCiAg LyogQXBwZW5kIGEgZ290byBvcCB0byBFWFBSLiAgT1AgaXMgdGhlIGFjdHVhbCBvcCAobXVzdCBi ZSBhb3BfZ290byBvcgogICAgIGFvcF9pZl9nb3RvKS4gIFdlIGFzc3VtZSB3ZSBkb24ndCBrbm93 IHRoZSB0YXJnZXQgb2Zmc2V0IHlldCwKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2Jy ZWFrcG9pbnQuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2JyZWFrcG9pbnQuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9icmVha3BvaW50LmMJ MjAxMi0xMS0wNyAyMjowOToyNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL2JyZWFrcG9pbnQuYwkyMDEyLTExLTA3IDIyOjA5OjI5Ljc0ODE0MDkyMCArMDEwMAot QEAgLTY1NjUsNyArNjU2NSw3IEBAIGJyZWFrcG9pbnRfYWRkcmVzc19tYXRjaCAoc3RydWN0IGFk ZHJlc3MKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEz LTAxLTE4IDIzOjI3OjIyLjA2NzYwMTMxMiArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL2JyZWFrcG9pbnQuYwkyMDEzLTAxLTE4IDIzOjI5OjMzLjY1MjcyNjYwMyArMDEwMAorQEAg LTY2MjcsNyArNjYyNyw3IEBAIGJyZWFrcG9pbnRfYWRkcmVzc19tYXRjaCAoc3RydWN0IGFkZHJl c3MKICAKICBzdGF0aWMgaW50CiAgYnJlYWtwb2ludF9hZGRyZXNzX21hdGNoX3JhbmdlIChzdHJ1 Y3QgYWRkcmVzc19zcGFjZSAqYXNwYWNlMSwgQ09SRV9BRERSIGFkZHIxLApAQCAtMTI4Myw4ICsx MjgzLDggQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYnJlYWtwb2ludC5jCiArCQkJ CUxPTkdFU1QgbGVuMSwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZTIsCiAgCQkJCUNPUkVf QUREUiBhZGRyMikKICB7Ci0gICByZXR1cm4gKChnZGJhcmNoX2hhc19nbG9iYWxfYnJlYWtwb2lu dHMgKHRhcmdldF9nZGJhcmNoKQotQEAgLTExMDQzLDcgKzExMDQzLDcgQEAgY2FuX3VzZV9oYXJk d2FyZV93YXRjaHBvaW50IChzdHJ1Y3QgdmFsdQorICAgcmV0dXJuICgoZ2RiYXJjaF9oYXNfZ2xv YmFsX2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCAoKSkKK0BAIC0xMTE1NSw3ICsxMTE1NSw3 IEBAIGNhbl91c2VfaGFyZHdhcmVfd2F0Y2hwb2ludCAoc3RydWN0IHZhbHUKICAJCSAgICAgICYm IFRZUEVfQ09ERSAodnR5cGUpICE9IFRZUEVfQ09ERV9BUlJBWSkpCiAgCQl7CiAgCQkgIENPUkVf QUREUiB2YWRkciA9IHZhbHVlX2FkZHJlc3MgKHYpOwpAQCAtMTI5MywxMCArMTI5MywxMCBAQCBJ bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9icmVha3BvaW50LmMKICAJCSAgaW50IG51bV9y ZWdzOwogIAogIAkJICBsZW4gPSAodGFyZ2V0X2V4YWN0X3dhdGNocG9pbnRzCi1JbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9icmVha3BvaW50LmgKK0luZGV4OiBnZGItNy41LjUwLjIwMTMw MTE4L2dkYi9icmVha3BvaW50LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYu b3JpZy9nZGIvYnJlYWtwb2ludC5oCTIwMTItMTEtMDcgMjI6MDA6NDMuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9icmVha3BvaW50LmgJMjAxMi0xMS0wNyAyMjow OToyOS43NzgxNDA4NzUgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2Jy ZWFrcG9pbnQuaAkyMDEzLTAxLTE4IDIzOjI3OjIyLjA2ODYwMTMxMyArMDEwMAorKysrIGdkYi03 LjUuNTAuMjAxMzAxMTgvZ2RiL2JyZWFrcG9pbnQuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg1NDYw NzMxMSArMDEwMAogQEAgLTI1MCw3ICsyNTAsNyBAQCBzdHJ1Y3QgYnBfdGFyZ2V0X2luZm8KICAK ICAgIC8qIElmIHRoaXMgaXMgYSByYW5nZWQgYnJlYWtwb2ludCwgdGhlbiB0aGlzIGZpZWxkIGNv bnRhaW5zIHRoZQpAQCAtMTMxNSwxMSArMTMxNSwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9icmVha3BvaW50LmgKICAKICAgIC8qIFR5cGUgb2YgaGFyZHdhcmUgd2F0Y2hwb2lu dC4gICovCiAgICBlbnVtIHRhcmdldF9od19icF90eXBlIHdhdGNocG9pbnRfdHlwZTsKLUluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2MtbGFuZy5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEz MDExOC9nZGIvYy1sYW5nLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3Jp Zy9nZGIvYy1sYW5nLmMJMjAxMi0xMS0wNyAyMjowMDo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2MtbGFuZy5jCTIwMTItMTEtMDcgMjI6MDk6MjkuNzg2MTQw ODY0ICswMTAwCi1AQCAtMTg5LDcgKzE4OSw3IEBAIGNfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0 IHR5cGUgKnR5cGUsIHMKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2MtbGFuZy5j CTIwMTMtMDEtMTggMjM6Mjc6MjIuMDY5NjAxMzE1ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEz MDExOC9nZGIvYy1sYW5nLmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NTQ2MDczMTEgKzAxMDAKK0BA IC0xODgsNyArMTg4LDcgQEAgY19wcmludGNoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZSwg cwogIAogIHZvaWQKICBjX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdHJ1Y3Qg dHlwZSAqdHlwZSwgCkBAIC0xMzI4LDcgKzEzMjgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9jLWxhbmcuYwogIAkgICAgY29uc3QgY2hhciAqdXNlcl9lbmNvZGluZywgaW50IGZv cmNlX2VsbGlwc2VzLAogIAkgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9w dGlvbnMpCiAgewotQEAgLTY3OCw3ICs2NzgsNyBAQCBldmFsdWF0ZV9zdWJleHBfYyAoc3RydWN0 IHR5cGUgKmV4cGVjdF90CitAQCAtNjc3LDcgKzY3Nyw3IEBAIGV2YWx1YXRlX3N1YmV4cF9jIChz dHJ1Y3QgdHlwZSAqZXhwZWN0X3QKICAJICB9CiAgCWVsc2UKICAJICB7CkBAIC0xMzM3LDcgKzEz MzcsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jLWxhbmcuYwogIAogIAkgICAg LyogV3JpdGUgdGhlIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4gICovCiAgCSAgICBmb3IgKGkgPSAw OyBpIDwgVFlQRV9MRU5HVEggKHR5cGUpOyArK2kpCi1AQCAtNjg3LDcgKzY4Nyw3IEBAIGV2YWx1 YXRlX3N1YmV4cF9jIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3QKK0BAIC02ODYsNyArNjg2LDcgQEAg ZXZhbHVhdGVfc3ViZXhwX2MgKHN0cnVjdCB0eXBlICpleHBlY3RfdAogIAkgICAgaWYgKHNhdGlz ZnlfZXhwZWN0ZWQpCiAgCSAgICAgIHsKICAJCUxPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5k OwpAQCAtMTM0NiwxMSArMTM0NiwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9j LWxhbmcuYwogIAogIAkJaWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKFRZUEVfSU5ERVhfVFlQRSAo ZXhwZWN0X3R5cGUpLAogIAkJCQkJICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDApCi1JbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jLWxhbmcuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL2MtbGFuZy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9y aWcvZ2RiL2MtbGFuZy5oCTIwMTItMDMtMDEgMjA6MjY6MTIuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jLWxhbmcuaAkyMDEyLTExLTA3IDIyOjA5OjI5Ljc4NzE0 MDg2MyArMDEwMAotQEAgLTcyLDcgKzcyLDcgQEAgZXh0ZXJuIHZvaWQgY19wcmludF90eXBlZGVm IChzdHJ1Y3QgdHlwZQorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvYy1sYW5nLmgJ MjAxMy0wMS0xOCAyMzoyNzoyMi4wNjk2MDEzMTUgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMw MTE4L2dkYi9jLWxhbmcuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg1NDYwNzMxMSArMDEwMAorQEAg LTczLDcgKzczLDcgQEAgZXh0ZXJuIHZvaWQgY19wcmludF90eXBlZGVmIChzdHJ1Y3QgdHlwZQog IAkJCSAgICAgc3RydWN0IHVpX2ZpbGUgKik7CiAgCiAgZXh0ZXJuIHZvaWQgY192YWxfcHJpbnQg KHN0cnVjdCB0eXBlICosIGNvbnN0IGdkYl9ieXRlICosCkBAIC0xMzU5LDcgKzEzNTksNyBAQCBJ bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jLWxhbmcuaAogIAkJCSBzdHJ1Y3QgdWlfZmls ZSAqLCBpbnQsCiAgCQkJIGNvbnN0IHN0cnVjdCB2YWx1ZSAqLAogIAkJCSBjb25zdCBzdHJ1Y3Qg dmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKLUBAIC05Miw3ICs5Miw3IEBAIGV4dGVybiB2b2lkIGNf cHJpbnRjaGFyIChpbnQsIHN0cnVjdCB0eXAKK0BAIC05Myw3ICs5Myw3IEBAIGV4dGVybiB2b2lk IGNfcHJpbnRjaGFyIChpbnQsIHN0cnVjdCB0eXAKICBleHRlcm4gdm9pZCBjX3ByaW50c3RyIChz dHJ1Y3QgdWlfZmlsZSAqIHN0cmVhbSwKICAJCQlzdHJ1Y3QgdHlwZSAqZWx0dHlwZSwKICAJCQlj b25zdCBnZGJfYnl0ZSAqc3RyaW5nLApAQCAtMTM2OCw3ICsxMzY4LDcgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvYy1sYW5nLmgKICAJCQljb25zdCBjaGFyICp1c2VyX2VuY29kaW5n LAogIAkJCWludCBmb3JjZV9lbGxpcHNlcywKICAJCQljb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRf b3B0aW9ucyAqb3B0aW9ucyk7Ci1AQCAtMTE4LDE0ICsxMTgsMTQgQEAgZXh0ZXJuIHZvaWQgY3Bf cHJpbnRfY2xhc3NfbWVtYmVyIChjb25zdAorQEAgLTExOSwxNCArMTE5LDE0IEBAIGV4dGVybiB2 b2lkIGNwX3ByaW50X2NsYXNzX21lbWJlciAoY29uc3QKICAJCQkJICAgc3RydWN0IHVpX2ZpbGUg KiwgY2hhciAqKTsKICAKICBleHRlcm4gdm9pZCBjcF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVj dCB0eXBlICosIHN0cnVjdCB0eXBlICosCkBAIC0xMzg1LDExICsxMzg1LDExIEBAIEluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2MtbGFuZy5oCiAgCQkJCQlzdHJ1Y3QgdWlfZmlsZSAqLCBp bnQsCiAgCQkJCQljb25zdCBzdHJ1Y3QgdmFsdWUgKiwKICAJCQkJCWNvbnN0IHN0cnVjdCB2YWx1 ZV9wcmludF9vcHRpb25zICosCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jLXZhbHBy aW50LmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9jLXZhbHByaW50LmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvYy12YWxwcmludC5jCTIwMTIt MDUtMTggMjM6MDI6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9jLXZhbHByaW50LmMJMjAxMi0xMS0wNyAyMjowOToyOS43ODkxNDA4NjEgKzAxMDAKLUBAIC0x MzMsNyArMTMzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBnZW5lcmljX3ZhbF9wcmludF9kZQor LS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvYy12YWxwcmludC5jCTIwMTMtMDEtMTgg MjM6Mjc6MjIuMDY5NjAxMzE1ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYy12 YWxwcmludC5jCTIwMTMtMDEtMTggMjM6Mjc6MjguODU1NjA3MzEzICswMTAwCitAQCAtMTMyLDcg KzEzMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VuZXJpY192YWxfcHJpbnRfZGUKICAKICB2 b2lkCiAgY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFs YWRkciwKQEAgLTEzOTgsNyArMTM5OCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L2MtdmFscHJpbnQuYwogIAkgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNl LAogIAkgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqb3JpZ2luYWxfdmFsdWUsCiAgCSAgICAgY29u c3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCi1AQCAtMTQ0LDcgKzE0NCw3 IEBAIGNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2QKK0BAIC0xNDMsNyAr MTQzLDcgQEAgY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZAogICAgdW5z aWduZWQgbGVuOwogICAgc3RydWN0IHR5cGUgKmVsdHR5cGUsICp1bnJlc29sdmVkX2VsdHR5cGU7 CiAgICBzdHJ1Y3QgdHlwZSAqdW5yZXNvbHZlZF90eXBlID0gdHlwZTsKQEAgLTE0MDcsNyArMTQw Nyw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2MtdmFscHJpbnQuYwogICAgQ09S RV9BRERSIGFkZHI7CiAgCiAgICBDSEVDS19UWVBFREVGICh0eXBlKTsKLUBAIC0zNjQsOSArMzY0 LDkgQEAgY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZAorQEAgLTM3OSw5 ICszNzksOSBAQCBjX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkCiAgCSAg LyogUHJpbnQgdnRhYmxlIGVudHJ5IC0gd2Ugb25seSBnZXQgaGVyZSBpZiBOT1QgdXNpbmcKICAJ ICAgICAtZnZ0YWJsZV90aHVua3MuICAoT3RoZXJ3aXNlLCBsb29rIHVuZGVyCiAgCSAgICAgVFlQ RV9DT0RFX1BUUi4pICAqLwpAQCAtMTQyMCw3ICsxNDIwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvYy12YWxwcmludC5jCiAgCSAgc3RydWN0IHR5cGUgKmZpZWxkX3R5cGUgPSBU WVBFX0ZJRUxEX1RZUEUgKHR5cGUsCiAgCQkJCQkJICAgICBWVEJMX0ZOQUREUl9PRkZTRVQpOwog IAkgIENPUkVfQUREUiBhZGRyCi1AQCAtNDQ1LDcgKzQ0NSw4IEBAIGNfdmFsdWVfcHJpbnQgKHN0 cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1Y3QKK0BAIC00NjAsNyArNDYwLDggQEAgY192YWx1ZV9wcmlu dCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdAogIAkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCiAgewogICAgc3RydWN0IHR5cGUgKnR5cGUsICpyZWFs X3R5cGUsICp2YWxfdHlwZTsKQEAgLTE0MzAsMTAgKzE0MzAsMTAgQEAgSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvYy12YWxwcmludC5jCiAgICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9u cyBvcHRzID0gKm9wdGlvbnM7CiAgCiAgICBvcHRzLmRlcmVmX3JlZiA9IDE7Ci1JbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9jcC1hYmkuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL2NwLWFiaS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2Ri L2NwLWFiaS5jCTIwMTItMDMtMTUgMTY6NDM6MTEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9jcC1hYmkuYwkyMDEyLTExLTA3IDIyOjA5OjI5Ljc5MDE0MDg1OSAr MDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvY3AtYWJpLmMJMjAxMy0wMS0x OCAyMzoyNzoyMi4wNzA2MDEzMTcgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9j cC1hYmkuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg1NTYwNzMxMyArMDEwMAogQEAgLTY4LDEzICs2 OCwxMyBAQCBpc19vcGVyYXRvcl9uYW1lIChjb25zdCBjaGFyICpuYW1lKQogICAgcmV0dXJuICgq Y3VycmVudF9jcF9hYmkuaXNfb3BlcmF0b3JfbmFtZSkgKG5hbWUpOwogIH0KQEAgLTE0NjksMTAg KzE0NjksMTAgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvY3AtYWJpLmMKICB7CiAg ICBzdHJ1Y3QgdHlwZSAqcmV0ID0gTlVMTDsKICAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0 aW9uIGU7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jcC1hYmkuaAorSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL2NwLWFiaS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4w LjIwMTIwOTI2Lm9yaWcvZ2RiL2NwLWFiaS5oCTIwMTItMDMtMTUgMTY6NDM6MTEuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jcC1hYmkuaAkyMDEyLTExLTA3IDIy OjA5OjI5Ljc5MjE0MDg1NSArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIv Y3AtYWJpLmgJMjAxMy0wMS0xOCAyMzoyNzoyMi4wNzA2MDEzMTcgKzAxMDAKKysrKyBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi9jcC1hYmkuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg1NTYwNzMxMyAr MDEwMAogQEAgLTEwOCw3ICsxMDgsNyBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV92aXJ0 dWFsX2ZuX2ZpCiAgCQkJCQkgICAgIHN0cnVjdCBmbl9maWVsZCAqZiwKICAJCQkJCSAgICAgaW50 IGosCkBAIC0xNTI3LDEwICsxNTI3LDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L2NwLWFiaS5oCiAgICB2b2lkICgqcHJpbnRfbWV0aG9kX3B0cikgKGNvbnN0IGdkYl9ieXRlICpj b250ZW50cywKICAJCQkgICAgc3RydWN0IHR5cGUgKnR5cGUsCiAgCQkJICAgIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0pOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvY3AtdmFscHJpbnQu YworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2NwLXZhbHByaW50LmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvY3AtdmFscHJpbnQuYwkyMDEyLTEx LTA3IDIyOjAwOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv Y3AtdmFscHJpbnQuYwkyMDEyLTExLTA3IDIyOjEyOjE0LjM5MjkwMTY5OSArMDEwMAorLS0tIGdk Yi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvY3AtdmFscHJpbnQuYwkyMDEzLTAxLTE4IDIzOjI3 OjIyLjA3MDYwMTMxNyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2NwLXZhbHBy aW50LmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NTY2MDczMTUgKzAxMDAKIEBAIC04Miw3ICs4Miw3 IEBAIHN0YXRpYyB2b2lkIGNwX3ByaW50X3N0YXRpY19maWVsZCAoc3RydWMKICAJCQkJICAgY29u c3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAgCkBAIC0xNTQ5LDcgKzE1NDksNyBA QCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jcC12YWxwcmludC5jCiAgCQkgICAgICAg Q09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgCQkgICAgICAgaW50 IHJlY3Vyc2UsIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkJICAgICAgIGNvbnN0IHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAotQEAgLTM2Myw3ICszNjMsNyBAQCBjcF9w cmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlCitAQCAtMzQyLDcgKzM0Miw3IEBA IGNwX3ByaW50X3ZhbHVlX2ZpZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUKICAJCX0KICAJICAgICAg ZWxzZSBpZiAoaSA9PSB2cHRyX2ZpZWxkbm8gJiYgdHlwZSA9PSB2cHRyX2Jhc2V0eXBlKQogIAkJ ewpAQCAtMTU1OCw3ICsxNTU4LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvY3At dmFscHJpbnQuYwogIAkJICBzdHJ1Y3QgdHlwZSAqaV90eXBlID0gVFlQRV9GSUVMRF9UWVBFICh0 eXBlLCBpKTsKICAKICAJCSAgaWYgKHZhbHByaW50X2NoZWNrX3ZhbGlkaXR5IChzdHJlYW0sIGlf dHlwZSwgaV9vZmZzZXQsIHZhbCkpCi1AQCAtNDQ2LDcgKzQ0Niw3IEBAIGNwX3ByaW50X3ZhbHVl X2ZpZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUKK0BAIC00MjUsNyArNDI1LDcgQEAgY3BfcHJpbnRf dmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZQogIAogIHZvaWQKICBjcF9wcmludF92YWx1 ZV9maWVsZHNfcnR0aSAoc3RydWN0IHR5cGUgKnR5cGUsCkBAIC0xNTY3LDcgKzE1NjcsNyBAQCBJ bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jcC12YWxwcmludC5jCiAgCQkJICAgIENPUkVf QUREUiBhZGRyZXNzLAogIAkJCSAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJz ZSwKICAJCQkgICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCi1AQCAtNDYyLDcgKzQ2Miw4IEBA IGNwX3ByaW50X3ZhbHVlX2ZpZWxkc19ydHRpIChzdHJ1Y3QgdHlwZQorQEAgLTQ0MSw3ICs0NDEs OCBAQCBjcF9wcmludF92YWx1ZV9maWVsZHNfcnR0aSAoc3RydWN0IHR5cGUKICAJCQlUQVJHRVRf Q0hBUl9CSVQgKiBUWVBFX0xFTkdUSCAodHlwZSkpKQogICAgICB7CiAgICAgICAgc3RydWN0IHZh bHVlICp2YWx1ZTsKQEAgLTE1NzcsNyArMTU3Nyw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL2NwLXZhbHByaW50LmMKICAKICAgICAgICAvKiBVZ2gsIHdlIGhhdmUgdG8gY29udmVy dCBiYWNrIHRvIGEgdmFsdWUgaGVyZS4gICovCiAgICAgICAgdmFsdWUgPSB2YWx1ZV9mcm9tX2Nv bnRlbnRzX2FuZF9hZGRyZXNzICh0eXBlLCB2YWxhZGRyICsgb2Zmc2V0LAotQEAgLTQ4Niw3ICs0 ODcsNyBAQCBjcF9wcmludF92YWx1ZV9maWVsZHNfcnR0aSAoc3RydWN0IHR5cGUKK0BAIC00NjUs NyArNDY2LDcgQEAgY3BfcHJpbnRfdmFsdWVfZmllbGRzX3J0dGkgKHN0cnVjdCB0eXBlCiAgCiAg c3RhdGljIHZvaWQKICBjcF9wcmludF92YWx1ZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0 eXBlICpyZWFsX3R5cGUsCkBAIC0xNTg2LDcgKzE1ODYsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9jcC12YWxwcmludC5jCiAgCQlDT1JFX0FERFIgYWRkcmVzcywgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSwKICAJCWludCByZWN1cnNlLCBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwK ICAJCWNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAotQEAgLTQ5Niw3 ICs0OTcsNyBAQCBjcF9wcmludF92YWx1ZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjCitAQCAt NDc1LDcgKzQ3Niw3IEBAIGNwX3ByaW50X3ZhbHVlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWMK ICAgICAgPSAoc3RydWN0IHR5cGUgKiopIG9ic3RhY2tfbmV4dF9mcmVlICgmZG9udF9wcmludF92 Yl9vYnN0YWNrKTsKICAgIHN0cnVjdCBvYnN0YWNrIHRtcF9vYnN0YWNrID0gZG9udF9wcmludF92 Yl9vYnN0YWNrOwogICAgaW50IGksIG5fYmFzZWNsYXNzZXMgPSBUWVBFX05fQkFTRUNMQVNTRVMg KHR5cGUpOwpAQCAtMTU5NSw3ICsxNTk1LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvY3AtdmFscHJpbnQuYwogICAgc3RydWN0IHR5cGUgKnRoaXN0eXBlOwogIAogICAgaWYgKGRv bnRfcHJpbnRfdmIgPT0gMCkKLUBAIC01MTAsNyArNTExLDcgQEAgY3BfcHJpbnRfdmFsdWUgKHN0 cnVjdCB0eXBlICp0eXBlLCBzdHJ1YworQEAgLTQ4OSw3ICs0OTAsNyBAQCBjcF9wcmludF92YWx1 ZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjCiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgbl9iYXNl Y2xhc3NlczsgaSsrKQogICAgICB7CkBAIC0xNjA0LDEwICsxNjA0LDEwIEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL2NwLXZhbHByaW50LmMKICAgICAgICBpbnQgc2tpcDsKICAgICAg ICBzdHJ1Y3QgdHlwZSAqYmFzZWNsYXNzID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9CQVNFQ0xBU1Mg KHR5cGUsIGkpKTsKICAgICAgICBjb25zdCBjaGFyICpiYXNlbmFtZSA9IFRZUEVfTkFNRSAoYmFz ZWNsYXNzKTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2QtbGFuZy5oCitJbmRleDog Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZC1sYW5nLmgKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjAuMjAxMjA5MjYub3JpZy9nZGIvZC1sYW5nLmgJMjAxMi0wMy0wMSAyMDoyNjoxMi4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2QtbGFuZy5oCTIwMTItMTEtMDcg MjI6MDk6MjkuNzk1MTQwODUyICswMTAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dk Yi9kLWxhbmcuaAkyMDEzLTAxLTE4IDIzOjI3OjIyLjA3MDYwMTMxNyArMDEwMAorKysrIGdkYi03 LjUuNTAuMjAxMzAxMTgvZ2RiL2QtbGFuZy5oCTIwMTMtMDEtMTggMjM6Mjc6MjguODU2NjA3MzE1 ICswMTAwCiBAQCAtMjUsNyArMjUsNyBAQAogIGV4dGVybiBjaGFyICpkX2RlbWFuZ2xlIChjb25z dCBjaGFyICptYW5nbGVkLCBpbnQgb3B0aW9ucyk7CiAgCkBAIC0xNjE3LDEwICsxNjE3LDEwIEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2QtbGFuZy5oCiAgCQkJIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sIGludCByZWN1cnNlLAogIAkJCSBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwK ICAJCQkgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpOwotSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZC12YWxwcmludC5jCitJbmRleDogZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvZC12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIw OTI2Lm9yaWcvZ2RiL2QtdmFscHJpbnQuYwkyMDEyLTAzLTAxIDIwOjI2OjEyLjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZC12YWxwcmludC5jCTIwMTItMTEtMDcg MjI6MDk6MjkuNzk1MTQwODUyICswMTAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dk Yi9kLXZhbHByaW50LmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wNzE2MDEzMTkgKzAxMDAKKysrKyBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi9kLXZhbHByaW50LmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44 NTY2MDczMTUgKzAxMDAKIEBAIC0yOSw3ICsyOSw3IEBACiAgCiAgc3RhdGljIGludApAQCAtMTY0 MywxMSArMTY0MywxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9kLXZhbHByaW50 LmMKICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlv bnMpCiAgewogICAgaW50IHJldDsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2RvdWJs ZXN0LmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9kb3VibGVzdC5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2RvdWJsZXN0LmMJMjAxMi0wMS0w NCAwOToxNzowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2Rv dWJsZXN0LmMJMjAxMi0xMS0wNyAyMjowOToyOS43OTcxNDA4NDggKzAxMDAKLUBAIC03NzAsNyAr NzcwLDcgQEAgZmxvYXRmb3JtYXRfZnJvbV9kb3VibGVzdCAoY29uc3Qgc3RydWN0CistLS0gZ2Ri LTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9kb3VibGVzdC5jCTIwMTMtMDEtMTggMjM6Mjc6MjIu MDcxNjAxMzE5ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZG91Ymxlc3QuYwky MDEzLTAxLTE4IDIzOjI3OjI4Ljg1NjYwNzMxNSArMDEwMAorQEAgLTc5MSw3ICs3OTEsNyBAQCBm bG9hdGZvcm1hdF9mcm9tX2RvdWJsZXN0IChjb25zdCBzdHJ1Y3QKICAgICBidXQgbm90IHBhc3Nl ZCBvbiBieSBHREIuICBUaGlzIHNob3VsZCBiZSBmaXhlZC4gICovCiAgCiAgc3RhdGljIGNvbnN0 IHN0cnVjdCBmbG9hdGZvcm1hdCAqCkBAIC0xNjU2LDcgKzE2NTYsNyBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9kb3VibGVzdC5jCiAgewogICAgY29uc3Qgc3RydWN0IGZsb2F0Zm9y bWF0ICpmb3JtYXQ7CiAgCi1AQCAtNzk4LDggKzc5OCw4IEBAIGZsb2F0Zm9ybWF0X2Zyb21fbGVu Z3RoIChzdHJ1Y3QgZ2RiYXJjaAorQEAgLTgxOSw4ICs4MTksOCBAQCBmbG9hdGZvcm1hdF9mcm9t X2xlbmd0aCAoc3RydWN0IGdkYmFyY2gKICAgIGVsc2UKICAgICAgZm9ybWF0ID0gTlVMTDsKICAg IGlmIChmb3JtYXQgPT0gTlVMTCkKQEAgLTE2NjcsMTAgKzE2NjcsMTAgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvZG91Ymxlc3QuYwogICAgcmV0dXJuIGZvcm1hdDsKICB9CiAgCi1J bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9kd2FyZjJsb2MuYworSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAxMTgvZ2RiL2R3YXJmMmxvYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIw MTIwOTI2Lm9yaWcvZ2RiL2R3YXJmMmxvYy5jCTIwMTItMTEtMDcgMjI6MDA6NDQuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9kd2FyZjJsb2MuYwkyMDEyLTExLTA3 IDIyOjA5OjI5LjgwMDE0MDg0NCArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9n ZGIvZHdhcmYybG9jLmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wNzM2MDEzMjMgKzAxMDAKKysrKyBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi9kd2FyZjJsb2MuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg1 NzYwNzMxNiArMDEwMAogQEAgLTE2NzIsMTkgKzE2NzIsMTkgQEAgaW5zZXJ0X2JpdHMgKHVuc2ln bmVkIGludCBkYXR1bSwKICAgICBCSVRTX0JJR19FTkRJQU4gaXMgdGFrZW4gZGlyZWN0bHkgZnJv bSBnZGJhcmNoLiAgKi8KICAKQEAgLTE4MTUsNyArMTgxNSw3IEBAIEluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL2R3YXJmMmxvYy5jCiAgCiAgICAgICAgaWYgKGJpdF9vZmZzZXQgPiAwKQog IAl7Ci1AQCAtMjQwMCw3ICsyNDAxLDcgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwg KHN0cnVjdCB0eQorQEAgLTI0MDEsNyArMjQwMiw3IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVz Y19mdWxsIChzdHJ1Y3QgdHkKICAJICAgIHN0cnVjdCB2YWx1ZSAqdmFsdWUgPSBkd2FyZl9leHBy X2ZldGNoIChjdHgsIDApOwogIAkgICAgZ2RiX2J5dGUgKmNvbnRlbnRzOwogIAkgICAgY29uc3Qg Z2RiX2J5dGUgKnZhbF9ieXRlczsKQEAgLTE4MjQsMTEgKzE4MjQsMTEgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvZHdhcmYybG9jLmMKICAKICAJICAgIGlmIChieXRlX29mZnNldCAr IFRZUEVfTEVOR1RIICh0eXBlKSA+IG4pCiAgCSAgICAgIGludmFsaWRfc3ludGhldGljX3BvaW50 ZXIgKCk7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4 OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9kd2FyZjJyZWFkLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTItMTEtMDcgMjI6MDA6 NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9kd2FyZjJyZWFk LmMJMjAxMi0xMS0wNyAyMjowOToyOS44MDkxNDA4MzIgKzAxMDAKLUBAIC0xMTI4LDEyICsxMTI4 LDEyIEBAIGR3YXJmMl9jb21wbGV4X2xvY2F0aW9uX2V4cHJfY29tcGxhaW50ICgKKy0tLSBnZGIt Ny41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEzLTAxLTE4IDIzOjI3OjIy LjA3NjYwMTMyOCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2R3YXJmMnJlYWQu YwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2MDYwNzMyMSArMDEwMAorQEAgLTEyMTYsMTIgKzEyMTYs MTIgQEAgZHdhcmYyX2NvbXBsZXhfbG9jYXRpb25fZXhwcl9jb21wbGFpbnQgKAogIH0KICAKICBz dGF0aWMgdm9pZApAQCAtMTg0NSw3ICsxODQ1LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvZHdhcmYycmVhZC5jCiAgfQogIAogIHN0YXRpYyB2b2lkCi1AQCAtOTgzMSw4ICs5ODMx LDggQEAgZHdhcmYyX2FkZF9maWVsZCAoc3RydWN0IGZpZWxkX2luZm8gKmZpcAorQEAgLTEwNjE1 LDggKzEwNjE1LDggQEAgZHdhcmYyX2FkZF9maWVsZCAoc3RydWN0IGZpZWxkX2luZm8gKmZpcAog IAkgICAgICAgICBvYmplY3QsIGFuZCB0aGVuIHN1YnRyYWN0IG9mZiB0aGUgbnVtYmVyIG9mIGJp dHMgb2YKICAJICAgICAgICAgdGhlIGZpZWxkIGl0c2VsZi4gIFRoZSByZXN1bHQgaXMgdGhlIGJp dCBvZmZzZXQgb2YKICAJICAgICAgICAgdGhlIExTQiBvZiB0aGUgZmllbGQuICAqLwpAQCAtMTg1 NiwyMSArMTg1NiwyMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9kd2FyZjJyZWFk LmMKICAKICAJICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5dGVfc2l6ZSwg Y3UpOwogIAkgICAgICBpZiAoYXR0cikKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2V2 YWwuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2V2YWwuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9ldmFsLmMJMjAxMi0xMS0wNyAyMjowMDo0 MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2V2YWwuYwkyMDEy LTExLTA3IDIyOjEzOjUyLjA5NjgzNzMxNCArMDEwMAotQEAgLTMyMCw3ICszMjAsOCBAQCBldmFs dWF0ZV9zdHJ1Y3RfdHVwbGUgKHN0cnVjdCB2YWx1ZSAqc3RyCi0gICAgICAgaW50IHBjID0gKnBv czsKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2V2YWwuYwkyMDEzLTAxLTE4IDIz OjI3OjIyLjA3ODYwMTMzMSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2V2YWwu YwkyMDEzLTAxLTE4IDIzOjMwOjI3LjQzMjc4NTcxMiArMDEwMAorQEAgLTI5NCw3ICsyOTQsOCBA QCBldmFsdWF0ZV9zdHJ1Y3RfdHVwbGUgKHN0cnVjdCB2YWx1ZSAqc3RyCisgICB3aGlsZSAoLS1u YXJncyA+PSAwKQorICAgICB7CiAgICAgICAgc3RydWN0IHZhbHVlICp2YWwgPSBOVUxMOwotICAg ICAgIGludCBubGFiZWxzID0gMDsKIC0gICAgICBpbnQgYml0cG9zLCBiaXRzaXplOwotKyAgICAg IGludCBiaXRzaXplOwogKyAgICAgIExPTkdFU1QgYml0cG9zOworKyAgICAgIGludCBiaXRzaXpl OwogICAgICAgIGJmZF9ieXRlICphZGRyOwogIAotICAgICAgIC8qIFNraXAgcGFzdCB0aGUgbGFi ZWxzLCBhbmQgY291bnQgdGhlbS4gICovCi1AQCAtNDYzLDcgKzQ2NCw3IEBAIGluaXRfYXJyYXlf ZWxlbWVudCAoc3RydWN0IHZhbHVlICphcnJheSwKKyAgICAgICBmaWVsZG5vKys7CitAQCAtMzU2 LDcgKzM1Nyw3IEBAIGluaXRfYXJyYXlfZWxlbWVudCAoc3RydWN0IHZhbHVlICphcnJheSwKICAJ CSAgICBlbnVtIG5vc2lkZSBub3NpZGUsIExPTkdFU1QgbG93X2JvdW5kLCBMT05HRVNUIGhpZ2hf Ym91bmQpCiAgewogICAgTE9OR0VTVCBpbmRleDsKQEAgLTE4NzksNyArMTg3OSw3IEBAIEluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2V2YWwuYwogIAogICAgaWYgKGV4cC0+ZWx0c1sqcG9z XS5vcGNvZGUgPT0gQklOT1BfQ09NTUEpCiAgICAgIHsKLUBAIC04MTYsMTEgKzgxNywxMSBAQCBi aW5vcF9wcm9tb3RlIChjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmCitAQCAtNzA5LDExICs3MTAs MTEgQEAgYmlub3BfcHJvbW90ZSAoY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZgogICAgICAvKiBG SVhNRTogQWxzbyBtaXhlZCBpbnRlZ3JhbC9ib29sZWFucywgd2l0aCByZXN1bHQgYW4gaW50ZWdl ci4gICovCiAgICAgIHsKICAgICAgICBjb25zdCBzdHJ1Y3QgYnVpbHRpbl90eXBlICpidWlsdGlu ID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKTsKQEAgLTE4OTQsOCArMTg5NCw4IEBAIEluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2V2YWwuYwogICAgICAgIGludCB1bnNpZ25lZF9vcGVyYXRp b247CiAgCiAgICAgICAgLyogRGV0ZXJtaW5lIHR5cGUgbGVuZ3RoIGFuZCBzaWduZWRuZXNzIGFm dGVyIHByb21vdGlvbiBmb3IKLUBAIC0xMDA0LDcgKzEwMDUsNyBAQCBldmFsdWF0ZV9zdWJleHBf c3RhbmRhcmQgKHN0cnVjdCB0eXBlICplCi0gICBpbnQgbG93ZXI7CitAQCAtODk2LDcgKzg5Nyw3 IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmUKKyAgIHN0cnVjdCB2 YWx1ZSAqKmFyZ3ZlYzsKICAgIGludCBjb2RlOwogICAgaW50IGl4OwogLSAgbG9uZyBtZW1fb2Zm c2V0OwpAQCAtMTkwMyw3ICsxOTAzLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv ZXZhbC5jCiAgICBzdHJ1Y3QgdHlwZSAqKmFyZ190eXBlczsKICAgIGludCBzYXZlX3BvczE7CiAg ICBzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiA9IE5VTEw7Ci1AQCAtMTE5NCw3ICsxMTk1LDcgQEAg ZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZQorQEAgLTEwNzYsNyArMTA3 Nyw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmUKICAJICBzdHJ1 Y3QgdHlwZSAqcmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSk7CiAgCSAgc3RydWN0 IHR5cGUgKmVsZW1lbnRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOwogIAkgIHN0cnVj dCB2YWx1ZSAqYXJyYXkgPSBhbGxvY2F0ZV92YWx1ZSAoZXhwZWN0X3R5cGUpOwpAQCAtMTkxMiw3 ICsxOTEyLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZXZhbC5jCiAgCSAgTE9O R0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQsIGluZGV4OwogIAogIAkgIGlmIChnZXRfZGlzY3Jl dGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkgPCAwKQotQEAg LTIxOTQsNyArMjE5NSw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUg KmUKK0BAIC0yMDgxLDcgKzIwODIsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVj dCB0eXBlICplCiAgICAgICAgewogICAgICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSB2YWx1ZV90 eXBlIChhcmcxKTsKICAgICAgICAgIHN0cnVjdCB0eXBlICpyZWFsX3R5cGU7CkBAIC0xOTIyLDEx ICsxOTIyLDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2V2YWwuYwogIAlzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOwogIAogIAlnZXRfdXNlcl9wcmludF9vcHRpb25z ICgmb3B0cyk7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mLWxhbmcuYworSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2YtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2YtbGFuZy5jCTIwMTItMTEtMDcgMjI6MDA6NDQuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mLWxhbmcuYwkyMDEyLTExLTA3 IDIyOjA5OjI5Ljg0NzE0MDc3NiArMDEwMAotQEAgLTEyNCw3ICsxMjQsNyBAQCBmX3ByaW50Y2hh ciAoaW50IGMsIHN0cnVjdCB0eXBlICp0eXBlLCBzCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5v cmlnL2dkYi9mLWxhbmcuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA3ODYwMTMzMSArMDEwMAorKysr IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2YtbGFuZy5jCTIwMTMtMDEtMTggMjM6Mjc6MjguODYx NjA3MzIzICswMTAwCitAQCAtMTAzLDcgKzEwMyw3IEBAIGZfcHJpbnRjaGFyIChpbnQgYywgc3Ry dWN0IHR5cGUgKnR5cGUsIHMKICAKICBzdGF0aWMgdm9pZAogIGZfcHJpbnRzdHIgKHN0cnVjdCB1 aV9maWxlICpzdHJlYW0sIHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5n LApAQCAtMTkzNSwxMSArMTkzNSwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9m LWxhbmcuYwogIAkgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMp CiAgewogICAgY29uc3QgY2hhciAqdHlwZV9lbmNvZGluZyA9IGZfZ2V0X2VuY29kaW5nICh0eXBl KTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2YtbGFuZy5oCitJbmRleDogZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvZi1sYW5nLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAx MjA5MjYub3JpZy9nZGIvZi1sYW5nLmgJMjAxMi0xMS0wNyAyMjowMDo0My4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2YtbGFuZy5oCTIwMTItMTEtMDcgMjI6MTI6 MzkuNTA0ODY1MjA4ICswMTAwCi1AQCAtMzIsNyArMzIsNyBAQCBleHRlcm4gY29uc3QgY2hhciAq Zl9vYmplY3RfYWRkcmVzc19kYXRhCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9m LWxhbmcuaAkyMDEzLTAxLTE4IDIzOjI3OjIyLjA3ODYwMTMzMSArMDEwMAorKysrIGdkYi03LjUu NTAuMjAxMzAxMTgvZ2RiL2YtbGFuZy5oCTIwMTMtMDEtMTggMjM6Mjc6MjguODYxNjA3MzIzICsw MTAwCitAQCAtMzMsNyArMzMsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqZl9vYmplY3RfYWRkcmVz c19kYXRhCiAgICAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOwog IGV4dGVybiB2b2lkIGZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9vcl9lcnJvciAoc3RydWN0 IHR5cGUgKnR5cGUpOwogIApAQCAtMTk0OCwxMCArMTk0OCwxMCBAQCBJbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9mLWxhbmcuaAogIAkJCSBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCiAgCQkJ IGNvbnN0IHN0cnVjdCB2YWx1ZSAqLAogIAkJCSBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0 aW9ucyAqKTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2YtdmFscHJpbnQuYworSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2YtdmFscHJpbnQuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMi0xMS0wNyAyMjow MDo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2YtdmFscHJp bnQuYwkyMDEyLTExLTA3IDIyOjA5OjI5Ljg0OTE0MDc3MiArMDEwMAorLS0tIGdkYi03LjUuNTAu MjAxMzAxMTgub3JpZy9nZGIvZi12YWxwcmludC5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDc5NjAx MzMzICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZi12YWxwcmludC5jCTIwMTMt MDEtMTggMjM6Mjc6MjguODYxNjA3MzIzICswMTAwCiBAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMg dm9pZCBmNzdfY3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0CiAgCQkJCQkgICAgICBzdHJ1Y3QgdWlf ZmlsZSAqKTsKICBzdGF0aWMgdm9pZCBmNzdfZ2V0X2R5bmFtaWNfbGVuZ3RoX29mX2FnZ3JlZ2F0 ZSAoc3RydWN0IHR5cGUgKik7CkBAIC0yMDE2LDExICsyMDE2LDExIEBAIEluZGV4OiBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL2YtdmFscHJpbnQuYwogIAogICAgICAgICAgICB2YWxfcHJpbnQgKFRZ UEVfRklFTERfVFlQRSAodHlwZSwgaW5kZXgpLCB2YWxhZGRyLAogIAkJICAgICBlbWJlZGRlZF9v ZmZzZXQgKyBvZmZzZXQsCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9maW5kdmFyLmMK K0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9maW5kdmFyLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvZmluZHZhci5jCTIwMTItMTEtMDcgMjI6MDA6 NDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9maW5kdmFyLmMJ MjAxMi0xMS0wNyAyMjoxMDoyMS44NTUwNjUyMTAgKzAxMDAKLUBAIC02NDUsNyArNjQ1LDcgQEAg ZGVmYXVsdF92YWx1ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1Y3QgdHlwZQorLS0tIGdkYi03LjUuNTAu MjAxMzAxMTgub3JpZy9nZGIvZmluZHZhci5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDc5NjAxMzMz ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZmluZHZhci5jCTIwMTMtMDEtMTgg MjM6MzA6NTMuNTExODE1NzE2ICswMTAwCitAQCAtNjQ0LDcgKzY0NCw3IEBAIGRlZmF1bHRfdmFs dWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUKICAJCQkgICAgIHN0cnVjdCBmcmFtZV9pbmZv ICpmcmFtZSkKICB7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNo IChmcmFtZSk7CkBAIC0yMDI5LDcgKzIwMjksNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9maW5kdmFyLmMKICAgIHN0cnVjdCB2YWx1ZSAqdmFsdWUgPSBhbGxvY2F0ZV92YWx1ZSAo dHlwZSk7CiAgCiAgICBWQUxVRV9MVkFMICh2YWx1ZSkgPSBsdmFsX3JlZ2lzdGVyOwotQEAgLTY3 NSwxMCArNjc1LDEwIEBAIHZvaWQKK0BAIC02NzcsMTAgKzY3NywxMCBAQCB2b2lkCiAgcmVhZF9m cmFtZV9yZWdpc3Rlcl92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lKQogIHsKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2Fy Y2ggKGZyYW1lKTsKQEAgLTIwNDMsMjAgKzIwNDMsMjAgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvZmluZHZhci5jCiAgCiAgICBnZGJfYXNzZXJ0IChWQUxVRV9MVkFMICh2YWx1ZSkg PT0gbHZhbF9yZWdpc3Rlcik7CiAgCi1AQCAtNjkzLDcgKzY5Myw3IEBAIHJlYWRfZnJhbWVfcmVn aXN0ZXJfdmFsdWUgKHN0cnVjdCB2YWx1ZQorQEAgLTY5NSw3ICs2OTUsNyBAQCByZWFkX2ZyYW1l X3JlZ2lzdGVyX3ZhbHVlIChzdHJ1Y3QgdmFsdWUKICAgIHdoaWxlIChsZW4gPiAwKQogICAgICB7 CiAgICAgICAgc3RydWN0IHZhbHVlICpyZWd2YWwgPSBnZXRfZnJhbWVfcmVnaXN0ZXJfdmFsdWUg KGZyYW1lLCByZWdudW0pOwogLSAgICAgIGludCByZWdfbGVuID0gVFlQRV9MRU5HVEggKHZhbHVl X3R5cGUgKHJlZ3ZhbCkpIC0gcmVnX29mZnNldDsKICsgICAgICBMT05HRVNUIHJlZ19sZW4gPSBU WVBFX0xFTkdUSCAodmFsdWVfdHlwZSAocmVndmFsKSkgLSByZWdfb2Zmc2V0OwogIAotICAgICAg IC8qIElmIHRoZSByZWdpc3RlciBsZW5ndGggaXMgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBi eXRlcwotICAgICAgICAgIHJlbWFpbmluZyB0byBjb3B5LCB0aGVuIG9ubHkgY29weSB0aGUgYXBw cm9wcmlhdGUgYnl0ZXMuICAqLwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZnJhbWUu YworICAgICAgIGlmICh2YWx1ZV9vcHRpbWl6ZWRfb3V0IChyZWd2YWwpKQorIAl7CitJbmRleDog Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZnJhbWUuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu MC4yMDEyMDkyNi5vcmlnL2dkYi9mcmFtZS5jCTIwMTItMDktMTcgMDk6MTc6MjcuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mcmFtZS5jCTIwMTItMTEtMDcgMjI6 MDk6MjkuODUzMTQwNzY4ICswMTAwCi1AQCAtMTExNyw3ICsxMTE3LDcgQEAgZnJhbWVfcmVnaXN0 ZXJfcmVhZCAoc3RydWN0IGZyYW1lX2luZm8gKgorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3Jp Zy9nZGIvZnJhbWUuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA4MDYwMTMzNSArMDEwMAorKysrIGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL2ZyYW1lLmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NjI2MDcz MjUgKzAxMDAKK0BAIC0xMTEzLDcgKzExMTMsNyBAQCBkZXByZWNhdGVkX2ZyYW1lX3JlZ2lzdGVy X3JlYWQgKHN0cnVjdCBmCiAgCiAgaW50CiAgZ2V0X2ZyYW1lX3JlZ2lzdGVyX2J5dGVzIChzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIGludCByZWdudW0sCkBAIC0yMDY1LDcgKzIwNjUsNyBAQCBJ bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mcmFtZS5jCiAgCQkJICBpbnQgKm9wdGltaXpl ZHAsIGludCAqdW5hdmFpbGFibGVwKQogIHsKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0g Z2V0X2ZyYW1lX2FyY2ggKGZyYW1lKTsKLUBAIC0xMTQ2LDcgKzExNDYsNyBAQCBnZXRfZnJhbWVf cmVnaXN0ZXJfYnl0ZXMgKHN0cnVjdCBmcmFtZV9pCitAQCAtMTE0Miw3ICsxMTQyLDcgQEAgZ2V0 X2ZyYW1lX3JlZ2lzdGVyX2J5dGVzIChzdHJ1Y3QgZnJhbWVfaQogICAgICB9CiAgICBpZiAobGVu ID4gbWF4c2l6ZSkKICAgICAgZXJyb3IgKF8oIkJhZCBkZWJ1ZyBpbmZvcm1hdGlvbiBkZXRlY3Rl ZDogIgpAQCAtMjA3NCwxMSArMjA3NCwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9mcmFtZS5jCiAgCiAgICAvKiBDb3B5IHRoZSBkYXRhLiAgKi8KICAgIHdoaWxlIChsZW4gPiAw KQotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZnJhbWUuaAorSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAxMTgvZ2RiL2ZyYW1lLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5 MjYub3JpZy9nZGIvZnJhbWUuaAkyMDEyLTAzLTAxIDIzOjQ3OjQ2LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZnJhbWUuaAkyMDEyLTExLTA3IDIyOjA5OjI5Ljg1 NDE0MDc2NiArMDEwMAotQEAgLTUzMCw3ICs1MzAsNyBAQCBleHRlcm4gdm9pZCBwdXRfZnJhbWVf cmVnaXN0ZXIgKHN0cnVjdCBmCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9mcmFt ZS5oCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDgwNjAxMzM1ICswMTAwCisrKysgZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvZnJhbWUuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2MjYwNzMyNSArMDEwMAor QEAgLTUzMiw3ICs1MzIsNyBAQCBleHRlcm4gdm9pZCBwdXRfZnJhbWVfcmVnaXN0ZXIgKHN0cnVj dCBmCiAgICAgY29udGVudHMgYXJlIG9wdGltaXplZCBvdXQgb3IgdW5hdmFpbGFibGUsIHNldCAq T1BUSU1JWkVEUCwKICAgICAqVU5BVkFJTEFCTEVQIGFjY29yZGluZ2x5LiAgKi8KICBleHRlcm4g aW50IGdldF9mcmFtZV9yZWdpc3Rlcl9ieXRlcyAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBp bnQgcmVnbnVtLApAQCAtMjA4NywxMSArMjA4NywxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9mcmFtZS5oCiAgCQkJCSAgICAgZ2RiX2J5dGUgKm15YWRkciwKICAJCQkJICAgICBp bnQgKm9wdGltaXplZHAsIGludCAqdW5hdmFpbGFibGVwKTsKICAKLUluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL2dkYnR5cGVzLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9n ZGJ0eXBlcy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2dk YnR5cGVzLmMJMjAxMi0xMS0wNyAyMjowMDo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL2dkYnR5cGVzLmMJMjAxMi0xMS0wNyAyMjowOTo1Ny45MjQwOTk5ODIg KzAxMDAKLUBAIC0yMDg5LDcgKzIwODksNyBAQCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1 Y3QgdHlwZSAqdHlwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9nZGJ0eXBlcy5j CTIwMTMtMDEtMTggMjM6Mjc6MjIuMDgxNjAxMzM3ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEz MDExOC9nZGIvZ2RidHlwZXMuYwkyMDEzLTAxLTE4IDIzOjI4OjUzLjc2OTY4NTI0MiArMDEwMAor QEAgLTIwOTEsNyArMjA5MSw3IEBAIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBl ICp0eXAKICAgICB3aGVyZSBpbml0X3R5cGUgaXMgY2FsbGVkIHdpdGggYSBOVUxMIHZhbHVlIGZv ciBOQU1FKS4gICovCiAgCiAgc3RydWN0IHR5cGUgKgpAQCAtMjEwMCw3ICsyMTAwLDcgQEAgSW5k ZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ2RidHlwZXMuYwogIAkgICBjaGFyICpuYW1lLCBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKICB7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLUBAIC0y MzIxLDggKzIzMjEsOCBAQCBpc19wdWJsaWNfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICpiYXNlLCBz CitAQCAtMjMyNCw4ICsyMzI0LDggQEAgaXNfcHVibGljX2FuY2VzdG9yIChzdHJ1Y3QgdHlwZSAq YmFzZSwgcwogIAogIHN0YXRpYyBpbnQKICBpc191bmlxdWVfYW5jZXN0b3Jfd29ya2VyIChzdHJ1 Y3QgdHlwZSAqYmFzZSwgc3RydWN0IHR5cGUgKmRjbGFzcywKQEAgLTIxMTEsNyArMjExMSw3IEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dkYnR5cGVzLmMKICAJCQkgICBDT1JFX0FE RFIgYWRkcmVzcywgc3RydWN0IHZhbHVlICp2YWwpCiAgewogICAgaW50IGksIGNvdW50ID0gMDsK LUBAIC0yMzMzLDcgKzIzMzMsNyBAQCBpc191bmlxdWVfYW5jZXN0b3Jfd29ya2VyIChzdHJ1Y3Qg dHlwZSAqCitAQCAtMjMzNiw3ICsyMzM2LDcgQEAgaXNfdW5pcXVlX2FuY2VzdG9yX3dvcmtlciAo c3RydWN0IHR5cGUgKgogICAgZm9yIChpID0gMDsgaSA8IFRZUEVfTl9CQVNFQ0xBU1NFUyAoZGNs YXNzKSAmJiBjb3VudCA8IDI7ICsraSkKICAgICAgewogICAgICAgIHN0cnVjdCB0eXBlICppdGVy OwpAQCAtMjEyMCw3ICsyMTIwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ2Ri dHlwZXMuYwogIAogICAgICAgIGl0ZXIgPSBjaGVja190eXBlZGVmIChUWVBFX0JBU0VDTEFTUyAo ZGNsYXNzLCBpKSk7CiAgCi1AQCAtMjM3NCw3ICsyMzc0LDcgQEAgaXNfdW5pcXVlX2FuY2VzdG9y X3dvcmtlciAoc3RydWN0IHR5cGUgKgorQEAgLTIzNzcsNyArMjM3Nyw3IEBAIGlzX3VuaXF1ZV9h bmNlc3Rvcl93b3JrZXIgKHN0cnVjdCB0eXBlICoKICBpbnQKICBpc191bmlxdWVfYW5jZXN0b3Ig KHN0cnVjdCB0eXBlICpiYXNlLCBzdHJ1Y3QgdmFsdWUgKnZhbCkKICB7CkBAIC0yMTI5LDcgKzIx MjksNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9nZGJ0eXBlcy5jCiAgCiAgICBy ZXR1cm4gaXNfdW5pcXVlX2FuY2VzdG9yX3dvcmtlciAoYmFzZSwgdmFsdWVfdHlwZSAodmFsKSwg Jm9mZnNldCwKICAJCQkJICAgIHZhbHVlX2NvbnRlbnRzX2Zvcl9wcmludGluZyAodmFsKSwKLUBA IC0zMjc1LDcgKzMyNzUsNyBAQCByZWN1cnNpdmVfZHVtcF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlw ZSwKK0BAIC0zMjg2LDcgKzMyODYsNyBAQCByZWN1cnNpdmVfZHVtcF90eXBlIChzdHJ1Y3QgdHlw ZSAqdHlwZSwKICAgICAgICBicmVhazsKICAgICAgfQogICAgcHV0c19maWx0ZXJlZCAoIlxuIik7 CkBAIC0yMTM4LDcgKzIxMzgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9nZGJ0 eXBlcy5jCiAgICBpZiAoVFlQRV9PQkpGSUxFX09XTkVEICh0eXBlKSkKICAgICAgewogICAgICAg IHByaW50ZmlfZmlsdGVyZWQgKHNwYWNlcywgIm9iamZpbGUgIik7Ci1AQCAtMzM5NSw4ICszMzk1 LDggQEAgcmVjdXJzaXZlX2R1bXBfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsCitAQCAtMzQxMCw4 ICszNDEwLDggQEAgcmVjdXJzaXZlX2R1bXBfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsCiAgCQkJ ICBpZHgsIHBsb25nZXN0IChUWVBFX0ZJRUxEX0VOVU1WQUwgKHR5cGUsIGlkeCkpKTsKICAgICAg ICBlbHNlCiAgCXByaW50ZmlfZmlsdGVyZWQgKHNwYWNlcyArIDIsCkBAIC0yMTQ5LDggKzIxNDks OCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9nZGJ0eXBlcy5jCiAgCQkJICBUWVBF X0ZJRUxEX0JJVFNJWkUgKHR5cGUsIGlkeCkpOwogICAgICAgIGdkYl9wcmludF9ob3N0X2FkZHJl c3MgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaWR4KSwgZ2RiX3N0ZG91dCk7CiAgICAgICAgcHJp bnRmX2ZpbHRlcmVkICgiIG5hbWUgJyVzJyAoIiwKLUBAIC00MTA1LDcgKzQxMDUsNyBAQCBmcmVl X2FsbF90eXBlcyAodm9pZCkKLSAgICBDT0RFLCBMRU5HVEgsIGFuZCBOQU1FIGZpZWxkcy4gICov CitAQCAtMzkyNSw3ICszOTI1LDcgQEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlw ZSkKKyAKICBzdHJ1Y3QgdHlwZSAqCiAgYXJjaF90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwKIC0JICAgZW51bSB0eXBlX2NvZGUgY29kZSwgaW50IGxlbmd0aCwgY2hhciAqbmFtZSkKQEAg LTIxNTgsMTEgKzIxNTgsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ2RidHlw ZXMuYwogIHsKICAgIHN0cnVjdCB0eXBlICp0eXBlOwogIAotSW5kZXg6IGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvZ2RidHlwZXMuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2dkYnR5 cGVzLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvZ2RidHlw ZXMuaAkyMDEyLTExLTA3IDIyOjAwOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvZ2RidHlwZXMuaAkyMDEyLTExLTA3IDIyOjA5OjI5Ljg2MTE0MDc1NSArMDEw MAotQEAgLTYwMiw3ICs2MDIsNyBAQCBzdHJ1Y3QgbWFpbl90eXBlCistLS0gZ2RiLTcuNS41MC4y MDEzMDExOC5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDgyNjAxMzM5 ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZ2RidHlwZXMuaAkyMDEzLTAxLTE4 IDIzOjI3OjI4Ljg2MzYwNzMyNyArMDEwMAorQEAgLTYwNiw3ICs2MDYsNyBAQCBzdHJ1Y3QgbWFp bl90eXBlCiAgCSAgIGdkYmFyY2hfYml0c19iaWdfZW5kaWFuPTAgdGFyZ2V0cywgaXQgaXMgdGhl IGJpdCBvZmZzZXQgdG8KICAJICAgdGhlIExTQi4gICovCiAgCkBAIC0yMTcxLDcgKzIxNzEsNyBA QCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9nZGJ0eXBlcy5oCiAgCiAgCS8qIEVudW0g dmFsdWUuICAqLwogIAlMT05HRVNUIGVudW12YWw7Ci1AQCAtNzk0LDcgKzc5NCw3IEBAIHN0cnVj dCB0eXBlCitAQCAtNzk4LDcgKzc5OCw3IEBAIHN0cnVjdCB0eXBlCiAgICAgICBIT1NUX0NIQVJf QklULiAgSG93ZXZlciwgdGhpcyB3b3VsZCBzdGlsbCBmYWlsIHRvIGFkZHJlc3MKICAgICAgIG1h Y2hpbmVzIGJhc2VkIG9uIGEgdGVybmFyeSBvciBkZWNpbWFsIHJlcHJlc2VudGF0aW9uLiAgKi8K ICAgIApAQCAtMjE4MCw3ICsyMTgwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv Z2RidHlwZXMuaAogIAogICAgLyogQ29yZSB0eXBlLCBzaGFyZWQgYnkgYSBncm91cCBvZiBxdWFs aWZpZWQgdHlwZXMuICAqLwogICAgc3RydWN0IG1haW5fdHlwZSAqbWFpbl90eXBlOwotQEAgLTE1 NDYsMTEgKzE1NDYsMTIgQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICphbGxvY190eXBlX2NvcHkgKGNv bgorQEAgLTE1NDIsMTEgKzE1NDIsMTIgQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICphbGxvY190eXBl X2NvcHkgKGNvbgogIGV4dGVybiBzdHJ1Y3QgZ2RiYXJjaCAqZ2V0X3R5cGVfYXJjaCAoY29uc3Qg c3RydWN0IHR5cGUgKik7CiAgCiAgLyogSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCBvYmpm aWxlLW93bmVkIHR5cGVzLiAgKi8KQEAgLTIxOTUsMTEgKzIxOTUsMTEgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvZ2RidHlwZXMuaAogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqYXJjaF9p bnRlZ2VyX3R5cGUgKHN0cnVjdCBnZGJhcmNoICosIGludCwgaW50LCBjaGFyICopOwogIGV4dGVy biBzdHJ1Y3QgdHlwZSAqYXJjaF9jaGFyYWN0ZXJfdHlwZSAoc3RydWN0IGdkYmFyY2ggKiwgaW50 LCBpbnQsIGNoYXIgKik7CiAgZXh0ZXJuIHN0cnVjdCB0eXBlICphcmNoX2Jvb2xlYW5fdHlwZSAo c3RydWN0IGdkYmFyY2ggKiwgaW50LCBpbnQsIGNoYXIgKik7Ci1JbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9nbnUtdjItYWJpLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9n bnUtdjItYWJpLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIv Z251LXYyLWFiaS5jCTIwMTItMDItMDcgMDU6NDg6MjEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9nbnUtdjItYWJpLmMJMjAxMi0xMS0wNyAyMjowOToyOS44NzAx NDA3NDIgKzAxMDAKLUBAIC04Niw3ICs4Niw3IEBAIGdudXYyX2lzX29wZXJhdG9yX25hbWUgKGNv bnN0IGNoYXIgKm5hbWUKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2dudS12Mi1h YmkuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA4MjYwMTMzOSArMDEwMAorKysrIGdkYi03LjUuNTAu MjAxMzAxMTgvZ2RiL2dudS12Mi1hYmkuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2MzYwNzMyNyAr MDEwMAorQEAgLTg1LDcgKzg1LDcgQEAgZ251djJfaXNfb3BlcmF0b3JfbmFtZSAoY29uc3QgY2hh ciAqbmFtZQogICAgIFRZUEUgaXMgdGhlIHR5cGUgaW4gd2hpY2ggRiBpcyBsb2NhdGVkLiAgKi8K ICBzdGF0aWMgc3RydWN0IHZhbHVlICoKICBnbnV2Ml92aXJ0dWFsX2ZuX2ZpZWxkIChzdHJ1Y3Qg dmFsdWUgKiphcmcxcCwgc3RydWN0IGZuX2ZpZWxkICogZiwgaW50IGosCkBAIC0yMjA4LDcgKzIy MDgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9nbnUtdjItYWJpLmMKICB7CiAg ICBzdHJ1Y3QgdmFsdWUgKmFyZzEgPSAqYXJnMXA7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZTEgPSBj aGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci1AQCAtMTg3LDcgKzE4Nyw4IEBAIGdu dXYyX3ZpcnR1YWxfZm5fZmllbGQgKHN0cnVjdCB2YWx1ZSAqKmEKK0BAIC0xODYsNyArMTg2LDgg QEAgZ251djJfdmlydHVhbF9mbl9maWVsZCAoc3RydWN0IHZhbHVlICoqYQogIAogIAogIHN0YXRp YyBzdHJ1Y3QgdHlwZSAqCkBAIC0yMjE4LDcgKzIyMTgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9nbnUtdjItYWJpLmMKICB7CiAgICBzdHJ1Y3QgdHlwZSAqa25vd25fdHlwZTsK ICAgIHN0cnVjdCB0eXBlICpydHRpX3R5cGU7Ci1AQCAtMzQyLDkgKzM0Myw5IEBAIHZiX21hdGNo IChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IGluZGV4LAorQEAgLTM0MSw5ICszNDIsOSBAQCB2Yl9t YXRjaCAoc3RydWN0IHR5cGUgKnR5cGUsIGludCBpbmRleCwKICAgICB0YXJnZXQpLiAgVGhlIHJl c3VsdCBpcyB0aGUgb2Zmc2V0IG9mIHRoZSBiYXNlY2xhc3MgdmFsdWUgcmVsYXRpdmUKICAgICB0 byAodGhlIGFkZHJlc3Mgb2YpKEFSRykgKyBPRkZTRVQuICAqLwogIApAQCAtMjIzMCw3ICsyMjMw LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ251LXYyLWFiaS5jCiAgCQkJQ09S RV9BRERSIGFkZHJlc3MsIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsKQogIHsKICAgIHN0cnVjdCB0 eXBlICpiYXNldHlwZSA9IFRZUEVfQkFTRUNMQVNTICh0eXBlLCBpbmRleCk7Ci1AQCAtMzYyLDgg KzM2Myw4IEBAIGdudXYyX2Jhc2VjbGFzc19vZmZzZXQgKHN0cnVjdCB0eXBlICp0eXAKK0BAIC0z NjEsOCArMzYyLDggQEAgZ251djJfYmFzZWNsYXNzX29mZnNldCAoc3RydWN0IHR5cGUgKnR5cAog IAkgIGlmICh2Yl9tYXRjaCAodHlwZSwgaSwgYmFzZXR5cGUpKQogIAkgICAgewogIAkgICAgICBz dHJ1Y3QgdHlwZSAqZmllbGRfdHlwZTsKQEAgLTIyNDEsNyArMjI0MSw3IEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL2dudS12Mi1hYmkuYwogIAkgICAgICBDT1JFX0FERFIgYWRkcjsK ICAKICAJICAgICAgZmllbGRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfRklFTERfVFlQRSAo dHlwZSwgaSkpOwotQEAgLTM4Nyw3ICszODgsNyBAQCBnbnV2Ml9iYXNlY2xhc3Nfb2Zmc2V0IChz dHJ1Y3QgdHlwZSAqdHlwCitAQCAtMzg2LDcgKzM4Nyw3IEBAIGdudXYyX2Jhc2VjbGFzc19vZmZz ZXQgKHN0cnVjdCB0eXBlICp0eXAKICAJICAvKiBEb24ndCBnbyB0aHJvdWdoIGJhc2VjbGFzc19v ZmZzZXQsIGFzIHRoYXQgd3JhcHMKICAJICAgICBleGNlcHRpb25zLCB0aHVzLCBpbm5lciBleGNl cHRpb25zIHdvdWxkIGJlIHdyYXBwZWQgbW9yZQogIAkgICAgIHRoYW4gb25jZS4gICovCkBAIC0y MjUwLDExICsyMjUwLDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dudS12Mi1h YmkuYwogIAkgICAgZ251djJfYmFzZWNsYXNzX29mZnNldCAodHlwZSwgaSwgdmFsYWRkciwKICAJ CQkJICAgIGVtYmVkZGVkX29mZnNldCwgYWRkcmVzcywgdmFsKTsKICAKLUluZGV4OiBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL2dudS12My1hYmkuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL2dudS12My1hYmkuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmln L2dkYi9nbnUtdjMtYWJpLmMJMjAxMi0wNS0yMSAyMTo0Nzo1My4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dudS12My1hYmkuYwkyMDEyLTExLTA3IDIyOjA5OjI5 Ljg3MjE0MDc0MCArMDEwMAotQEAgLTEwNSw3ICsxMDUsNyBAQCBidWlsZF9nZGJfdnRhYmxlX3R5 cGUgKHN0cnVjdCBnZGJhcmNoICphCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9n bnUtdjMtYWJpLmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wODM2MDEzNDEgKzAxMDAKKysrKyBnZGIt Ny41LjUwLjIwMTMwMTE4L2dkYi9nbnUtdjMtYWJpLmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NjQ2 MDczMjkgKzAxMDAKK0BAIC0xMDYsNyArMTA2LDcgQEAgYnVpbGRfZ2RiX3Z0YWJsZV90eXBlIChz dHJ1Y3QgZ2RiYXJjaCAqYQogIHsKICAgIHN0cnVjdCB0eXBlICp0OwogICAgc3RydWN0IGZpZWxk ICpmaWVsZF9saXN0LCAqZmllbGQ7CkBAIC0yMjYzLDcgKzIyNjMsNyBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9nbnUtdjMtYWJpLmMKICAKICAgIHN0cnVjdCB0eXBlICp2b2lkX3B0 cl90eXBlCiAgICAgID0gYnVpbHRpbl90eXBlIChhcmNoKS0+YnVpbHRpbl9kYXRhX3B0cjsKLUBA IC0xODEsNyArMTgxLDcgQEAgdnRhYmxlX3B0cmRpZmZfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdk YgorQEAgLTE4Miw3ICsxODIsNyBAQCB2dGFibGVfcHRyZGlmZl90eXBlIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiCiAgLyogUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGltYWdp bmFyeSBgc3RydWN0CiAgICAgZ2RiX2dudV92M19hYmlfdnRhYmxlJyBvYmplY3QgdG8gdGhlIHZ0 YWJsZSdzICJhZGRyZXNzIHBvaW50IgogICAgIChpLmUuLCB3aGVyZSBvYmplY3RzJyB2aXJ0dWFs IHRhYmxlIHBvaW50ZXJzIHBvaW50KS4gICovCkBAIC0yMjcyLDcgKzIyNzIsNyBAQCBJbmRleDog Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9nbnUtdjMtYWJpLmMKICB2dGFibGVfYWRkcmVzc19wb2lu dF9vZmZzZXQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQogIHsKICAgIHN0cnVjdCB0eXBlICp2 dGFibGVfdHlwZSA9IGdkYmFyY2hfZGF0YSAoZ2RiYXJjaCwgdnRhYmxlX3R5cGVfZ2RiYXJjaF9k YXRhKTsKLUBAIC0yNzIsNyArMjcyLDcgQEAgZ251djNfZ2V0X3Z0YWJsZSAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyYworQEAgLTI3Myw3ICsyNzMsNyBAQCBnbnV2M19nZXRfdnRhYmxlIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjCiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICoKICBnbnV2M19ydHRpX3R5 cGUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsCkBAIC0yMjgxLDcgKzIyODEsNyBAQCBJbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9nbnUtdjMtYWJpLmMKICB7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaDsKICAgIHN0cnVjdCB0eXBlICp2YWx1ZXNfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZh bHVlX3R5cGUgKHZhbHVlKSk7Ci1AQCAtMzg0LDcgKzM4NCw3IEBAIGdudXYzX2dldF92aXJ0dWFs X2ZuIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKK0BAIC0zODUsNyArMzg1LDcgQEAgZ251djNfZ2V0X3Zp cnR1YWxfZm4gKHN0cnVjdCBnZGJhcmNoICpnZAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgogIGdu dXYzX3ZpcnR1YWxfZm5fZmllbGQgKHN0cnVjdCB2YWx1ZSAqKnZhbHVlX3AsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGZuX2ZpZWxkICpmLCBpbnQgaiwKQEAgLTIyOTAsNyArMjI5 MCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dudS12My1hYmkuYwogIHsKICAg IHN0cnVjdCB0eXBlICp2YWx1ZXNfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKCp2 YWx1ZV9wKSk7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKLUBAIC00MTQsMTYgKzQxNCwx NiBAQCBnbnV2M192aXJ0dWFsX2ZuX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKip2CitAQCAtNDE1LDE2 ICs0MTUsMTYgQEAgZ251djNfdmlydHVhbF9mbl9maWVsZCAoc3RydWN0IHZhbHVlICoqdgogIAog ICAgIC0xIGlzIHJldHVybmVkIG9uIGVycm9yLiAgKi8KICAKQEAgLTIzMTAsNyArMjMxMCw3IEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dudS12My1hYmkuYwogIAogICAgLyogRGV0 ZXJtaW5lIGFyY2hpdGVjdHVyZS4gICovCiAgICBnZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAodHlw ZSk7Ci1AQCAtNDQ3LDcgKzQ0Nyw3IEBAIGdudXYzX2Jhc2VjbGFzc19vZmZzZXQgKHN0cnVjdCB0 eXBlICp0eXAKK0BAIC00NDgsNyArNDQ4LDcgQEAgZ251djNfYmFzZWNsYXNzX29mZnNldCAoc3Ry dWN0IHR5cGUgKnR5cAogICAgY3VyX2Jhc2Vfb2Zmc2V0ID0gY3VyX2Jhc2Vfb2Zmc2V0ICsgdnRh YmxlX2FkZHJlc3NfcG9pbnRfb2Zmc2V0IChnZGJhcmNoKTsKICAgIGlmICgoLSBjdXJfYmFzZV9v ZmZzZXQpICUgVFlQRV9MRU5HVEggKHB0cl90eXBlKSAhPSAwKQogICAgICBlcnJvciAoXygiTWlz YWxpZ25lZCB2YmFzZSBvZmZzZXQuIikpOwpAQCAtMjMxOSw3ICsyMzE5LDcgQEAgSW5kZXg6IGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvZ251LXYzLWFiaS5jCiAgCiAgICB2dGFibGUgPSBnbnV2M19n ZXRfdnRhYmxlIChnZGJhcmNoLCB0eXBlLCBhZGRyZXNzICsgZW1iZWRkZWRfb2Zmc2V0KTsKICAg IGdkYl9hc3NlcnQgKHZ0YWJsZSAhPSBOVUxMKTsKLUBAIC00OTEsNyArNDkxLDcgQEAgZ251djNf ZmluZF9tZXRob2RfaW4gKHN0cnVjdCB0eXBlICpkb21haQorQEAgLTQ5Miw3ICs0OTIsNyBAQCBn bnV2M19maW5kX21ldGhvZF9pbiAoc3RydWN0IHR5cGUgKmRvbWFpCiAgICAgICB3ZSdyZSBvdXQg b2YgbHVjay4gICovCiAgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9OX0JBU0VDTEFTU0VTIChkb21h aW4pOyBpKyspCiAgICAgIHsKQEAgLTIzMjgsMTEgKzIzMjgsMTEgQEAgSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvZ251LXYzLWFiaS5jCiAgICAgICAgc3RydWN0IHR5cGUgKmJhc2V0eXBl OwogIAogICAgICAgIGlmIChCQVNFVFlQRV9WSUFfVklSVFVBTCAoZG9tYWluLCBpKSkKLUluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dvLWxhbmcuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL2dvLWxhbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5v cmlnL2dkYi9nby1sYW5nLmgJMjAxMi0wNC0yNSAxNjowNzoyMC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dvLWxhbmcuaAkyMDEyLTExLTA3IDIyOjA5OjI5Ljg3 NDE0MDczNyArMDEwMAotQEAgLTgwLDcgKzgwLDcgQEAgZXh0ZXJuIHZvaWQgZ29fcHJpbnRfdHlw ZSAoc3RydWN0IHR5cGUgKgorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvZ28tbGFu Zy5oCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDgzNjAxMzQxICswMTAwCisrKysgZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvZ28tbGFuZy5oCTIwMTMtMDEtMTggMjM6Mjc6MjguODY0NjA3MzI5ICswMTAw CitAQCAtODMsNyArODMsNyBAQCBleHRlcm4gdm9pZCBnb19wcmludF90eXBlIChzdHJ1Y3QgdHlw ZSAqCiAgLyogRGVmaW5lZCBpbiBnby12YWxwcmludC5jLiAgKi8KICAKICBleHRlcm4gdm9pZCBn b192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwK QEAgLTIzNDEsMTAgKzIzNDEsMTAgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ28t bGFuZy5oCiAgCQkJICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCQkg IGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkJCSAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50 X29wdGlvbnMgKm9wdGlvbnMpOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ28tdmFs cHJpbnQuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2dvLXZhbHByaW50LmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvZ28tdmFscHJpbnQuYwky MDEyLTA1LTE4IDE3OjI5OjEyLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvZ28tdmFscHJpbnQuYwkyMDEyLTExLTA3IDIyOjA5OjI5Ljg3NDE0MDczNyArMDEwMAor LS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvZ28tdmFscHJpbnQuYwkyMDEzLTAxLTE4 IDIzOjI3OjIyLjA4MzYwMTM0MSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2dv LXZhbHByaW50LmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NjQ2MDczMjkgKzAxMDAKIEBAIC0zNyw3 ICszNyw3IEBACiAgCiAgc3RhdGljIHZvaWQKQEAgLTIzNjcsMTEgKzIzNjcsMTEgQEAgSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ28tdmFscHJpbnQuYwogIAkgICAgICBjb25zdCBzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKICB7CiAgICBDSEVDS19UWVBFREVGICh0 eXBlKTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2kzODYtbmF0LmMKK0luZGV4OiBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi9pMzg2LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2kzODYtbmF0LmMJMjAxMi0wMS0yNCAxNDo0OTo1Ni4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2kzODYtbmF0LmMJMjAxMi0x MS0wNyAyMjowOToyOS44NzYxNDA3MzMgKzAxMDAKLUBAIC0yOTMsNyArMjkzLDcgQEAgc3RhdGlj IGludCBpMzg2X3JlbW92ZV9hbGlnbmVkX3dhdGNocG9pbgorLS0tIGdkYi03LjUuNTAuMjAxMzAx MTgub3JpZy9nZGIvaTM4Ni1uYXQuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA4NDYwMTM0MyArMDEw MAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2kzODYtbmF0LmMJMjAxMy0wMS0xOCAyMzoy NzoyOC44NjQ2MDczMjkgKzAxMDAKK0BAIC0yOTIsNyArMjkyLDcgQEAgc3RhdGljIGludCBpMzg2 X3JlbW92ZV9hbGlnbmVkX3dhdGNocG9pbgogICAgIHZhbGlkIHZhbHVlLCBib21icyB0aHJvdWdo IGludGVybmFsX2Vycm9yLiAgKi8KICBzdGF0aWMgaW50IGkzODZfaGFuZGxlX25vbmFsaWduZWRf d2F0Y2hwb2ludCAoc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKICAJCQkJCSAg ICAgIGkzODZfd3Bfb3BfdCB3aGF0LApAQCAtMjM4MCw3ICsyMzgwLDcgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvaTM4Ni1uYXQuYwogIAkJCQkJICAgICAgZW51bSB0YXJnZXRfaHdf YnBfdHlwZSB0eXBlKTsKICAKICAvKiBJbXBsZW1lbnRhdGlvbi4gICovCi1AQCAtNTA1LDggKzUw NSw4IEBAIGkzODZfcmVtb3ZlX2FsaWduZWRfd2F0Y2hwb2ludCAoc3RydWN0IGkKK0BAIC01MDQs OCArNTA0LDggQEAgaTM4Nl9yZW1vdmVfYWxpZ25lZF93YXRjaHBvaW50IChzdHJ1Y3QgaQogIAog IHN0YXRpYyBpbnQKICBpMzg2X2hhbmRsZV9ub25hbGlnbmVkX3dhdGNocG9pbnQgKHN0cnVjdCBp Mzg2X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCkBAIC0yMzkxLDcgKzIzOTEsNyBAQCBJbmRleDog Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9pMzg2LW5hdC5jCiAgewogICAgaW50IHJldHZhbCA9IDA7 CiAgICBpbnQgbWF4X3dwX2xlbiA9IFRBUkdFVF9IQVNfRFJfTEVOXzggPyA4IDogNDsKLUBAIC02 NjMsNyArNjYzLDcgQEAgaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsCitA QCAtNjYyLDcgKzY2Miw3IEBAIGkzODZfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRy LAogICAgIGFkZHJlc3MgQUREUiBhbmQgd2hvc2UgbGVuZ3RoIGlzIExFTiBieXRlcy4gICovCiAg CiAgc3RhdGljIGludApAQCAtMjQwMCwxMCArMjQwMCwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9pMzg2LW5hdC5jCiAgewogICAgc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRl ICpzdGF0ZSA9IGkzODZfZGVidWdfcmVnX3N0YXRlICgpOwogICAgaW50IG5yZWdzOwotSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaW5mLXR0cmFjZS5jCitJbmRleDogZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvaW5mLXR0cmFjZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIw OTI2Lm9yaWcvZ2RiL2luZi10dHJhY2UuYwkyMDEyLTA2LTE0IDIwOjIxOjMxLjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaW5mLXR0cmFjZS5jCTIwMTItMTEtMDcg MjI6MDk6MjkuODc3MTQwNzMyICswMTAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dk Yi9pbmYtdHRyYWNlLmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wODQ2MDEzNDMgKzAxMDAKKysrKyBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi9pbmYtdHRyYWNlLmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44 NjQ2MDczMjkgKzAxMDAKIEBAIC0zNjQsNyArMzY0LDcgQEAgaW5mX3R0cmFjZV9jYW5fdXNlX2h3 X2JyZWFrcG9pbnQgKGludCB0eQogIH0KICAKQEAgLTI0MTMsMTEgKzI0MTMsMTEgQEAgSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaW5mLXR0cmFjZS5jCiAgewogICAgcmV0dXJuIDE7CiAg fQotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvanYtbGFuZy5jCitJbmRleDogZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvanYtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIw MTIwOTI2Lm9yaWcvZ2RiL2p2LWxhbmcuYwkyMDEyLTExLTA3IDIyOjAwOjQ0LjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvanYtbGFuZy5jCTIwMTItMTEtMDcgMjI6 MDk6MjkuODk0MTQwNzA4ICswMTAwCi1AQCAtNDQwLDcgKzQ0MCw3IEBAIGphdmFfbGlua19jbGFz c190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcv Z2RiL2p2LWxhbmcuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA4NDYwMTM0MyArMDEwMAorKysrIGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL2p2LWxhbmcuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2NTYw NzMzMSArMDEwMAorQEAgLTQzOSw3ICs0MzksNyBAQCBqYXZhX2xpbmtfY2xhc3NfdHlwZSAoc3Ry dWN0IGdkYmFyY2ggKmdkCiAgICBmb3IgKGkgPSBUWVBFX05fQkFTRUNMQVNTRVMgKHR5cGUpOyBp IDwgbmZpZWxkczsgaSsrKQogICAgICB7CiAgICAgICAgaW50IGFjY2ZsYWdzOwpAQCAtMjQyNiw3 ICsyNDI2LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvanYtbGFuZy5jCiAgCiAg ICAgICAgaWYgKGZpZWxkcyA9PSBOVUxMKQogIAl7Ci1AQCAtODkwLDcgKzg5MCw3IEBAIGphdmFf cHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5cGUKK0BAIC04ODksNyArODg5LDcgQEAg amF2YV9wcmludGNoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZQogIHN0YXRpYyB2b2lkCiAg amF2YV9wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgc3RydWN0IHR5cGUgKnR5cGUs CiAgCSAgICAgICBjb25zdCBnZGJfYnl0ZSAqc3RyaW5nLApAQCAtMjQzNSwxMCArMjQzNSwxMCBA QCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9qdi1sYW5nLmMKICAJICAgICAgIGNvbnN0 IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogIHsKICAgIGNvbnN0IGNoYXIg KnR5cGVfZW5jb2RpbmcgPSBqYXZhX2dldF9lbmNvZGluZyAodHlwZSk7Ci1JbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9qdi1sYW5nLmgKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi9qdi1sYW5nLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIv anYtbGFuZy5oCTIwMTItMDMtMDEgMjA6MjY6MTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9qdi1sYW5nLmgJMjAxMi0xMS0wNyAyMjowOToyOS45MDIxNDA2OTYg KzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2p2LWxhbmcuaAkyMDEzLTAx LTE4IDIzOjI3OjIyLjA4NTYwMTM0NSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L2p2LWxhbmcuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2NTYwNzMzMSArMDEwMAogQEAgLTQyLDgg KzQyLDggQEAgc3RydWN0IGJ1aWx0aW5famF2YV90eXBlCiAgCiAgZXh0ZXJuIGNvbnN0IHN0cnVj dCBidWlsdGluX2phdmFfdHlwZSAqYnVpbHRpbl9qYXZhX3R5cGUgKHN0cnVjdCBnZGJhcmNoICop OwpAQCAtMjQ1MCwxMCArMjQ1MCwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9q di1sYW5nLmgKICAJCQkgICAgY29uc3Qgc3RydWN0IHZhbHVlICosCiAgCQkJICAgIGNvbnN0IHN0 cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwogIAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvanYtdmFscHJpbnQuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2p2LXZh bHByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvanYt dmFscHJpbnQuYwkyMDEyLTA1LTE4IDE3OjI5OjEyLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvanYtdmFscHJpbnQuYwkyMDEyLTExLTA3IDIyOjA5OjI5LjkwMzE0 MDY5NCArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvanYtdmFscHJpbnQu YwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA4NTYwMTM0NSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL2p2LXZhbHByaW50LmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NjU2MDczMzEgKzAx MDAKIEBAIC0yNjYsNyArMjY2LDcgQEAgamF2YV92YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2 YWwsIHN0cgogIAogIHN0YXRpYyB2b2lkCkBAIC0yNDYzLDcgKzI0NjMsNyBAQCBJbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9qdi12YWxwcmludC5jCiAgCQkJIENPUkVfQUREUiBhZGRyZXNz LCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAogIAkJCSBpbnQgcmVjdXJzZSwKICAJCQkgY29uc3Qg c3RydWN0IHZhbHVlICp2YWwsCi1AQCAtNDg0LDcgKzQ4NCw3IEBAIGphdmFfcHJpbnRfdmFsdWVf ZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHkKK0BAIC00NjUsNyArNDY1LDcgQEAgamF2YV9wcmludF92 YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eQogIAogIHZvaWQKICBqYXZhX3ZhbF9wcmludCAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtMjQ3MiwxMSAr MjQ3MiwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9qdi12YWxwcmludC5jCiAg CQlzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCWNvbnN0IHN0cnVjdCB2 YWx1ZSAqdmFsLAogIAkJY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMp Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9sYW5ndWFnZS5jCitJbmRleDogZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvbGFuZ3VhZ2UuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4y MDEyMDkyNi5vcmlnL2dkYi9sYW5ndWFnZS5jCTIwMTItMTEtMDcgMjI6MDA6NDQuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9sYW5ndWFnZS5jCTIwMTItMTEtMDcg MjI6MDk6MjkuOTA1MTQwNjkxICswMTAwCi1AQCAtNzI0LDcgKzcyNCw3IEBAIHVua19sYW5nX3By aW50Y2hhciAoaW50IGMsIHN0cnVjdCB0eXBlICoKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9y aWcvZ2RiL2xhbmd1YWdlLmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wODU2MDEzNDUgKzAxMDAKKysr KyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9sYW5ndWFnZS5jCTIwMTMtMDEtMTggMjM6Mjc6Mjgu ODY1NjA3MzMxICswMTAwCitAQCAtNzIwLDcgKzcyMCw3IEBAIHVua19sYW5nX3ByaW50Y2hhciAo aW50IGMsIHN0cnVjdCB0eXBlICoKICAKICBzdGF0aWMgdm9pZAogIHVua19sYW5nX3ByaW50c3Ry IChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKQEAgLTI0ODUsNyAr MjQ4NSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2xhbmd1YWdlLmMKICAJCSAg IGNvbnN0IGNoYXIgKmVuY29kaW5nLCBpbnQgZm9yY2VfZWxsaXBzZXMsCiAgCQkgICBjb25zdCBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKICB7Ci1AQCAtNzQyLDcgKzc0Miw3 IEBAIHVua19sYW5nX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLAorQEAgLTczOSw3ICs3 MzksNyBAQCB1bmtfbGFuZ19wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKICAKICBzdGF0 aWMgdm9pZAogIHVua19sYW5nX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLApAQCAtMjQ5NCwxMCArMjQ5NCwxMCBAQCBJbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9sYW5ndWFnZS5jCiAgCQkgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwg aW50IHJlY3Vyc2UsCiAgCQkgICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCiAgCQkgICAgY29u c3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCi1JbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9sYW5ndWFnZS5oCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv bGFuZ3VhZ2UuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9s YW5ndWFnZS5oCTIwMTItMTEtMDcgMjI6MDA6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9sYW5ndWFnZS5oCTIwMTItMTEtMDcgMjI6MDk6MjkuOTA2MTQwNjkw ICswMTAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9sYW5ndWFnZS5oCTIwMTMt MDEtMTggMjM6Mjc6MjIuMDg2NjAxMzQ2ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9n ZGIvbGFuZ3VhZ2UuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2NTYwNzMzMSArMDEwMAogQEAgLTE3 NSw3ICsxNzUsNyBAQCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbgogIAkJCSAgc3RydWN0IHVpX2ZpbGUg KiBzdHJlYW0pOwogIApAQCAtMjUxNiwxMSArMjUxNiwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9sYW5ndWFnZS5oCiAgCQkJICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQg cmVjdXJzZSwKICAJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkJCSAgY29uc3Qgc3Ry dWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpOwotSW5kZXg6IGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvbTItbGFuZy5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbTItbGFu Zy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL20yLWxhbmcu YwkyMDEyLTExLTA3IDIyOjAwOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvbTItbGFuZy5jCTIwMTItMTEtMDcgMjI6MDk6MjkuOTA4MTQwNjg4ICswMTAwCi1A QCAtMTA0LDEwICsxMDQsMTAgQEAgbTJfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5 cGUsCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9tMi1sYW5nLmMJMjAxMy0wMS0x OCAyMzoyNzoyMi4wODY2MDEzNDYgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9t Mi1sYW5nLmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NjY2MDczMzMgKzAxMDAKK0BAIC0xMDMsMTAg KzEwMywxMCBAQCBtMl9wcmludGNoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKICAKICBz dGF0aWMgdm9pZAogIG0yX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdHJ1Y3Qg dHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnN0cmluZywKQEAgLTI1MzMsNyArMjUzMyw3IEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL20yLWxhbmcuYwogICAgdW5zaWduZWQgaW50 IHRoaW5nc19wcmludGVkID0gMDsKICAgIGludCBpbl9xdW90ZXMgPSAwOwogICAgaW50IG5lZWRf Y29tbWEgPSAwOwotQEAgLTEyMiw5ICsxMjIsOSBAQCBtMl9wcmludHN0ciAoc3RydWN0IHVpX2Zp bGUgKnN0cmVhbSwgc3RyCitAQCAtMTIxLDkgKzEyMSw5IEBAIG0yX3ByaW50c3RyIChzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtLCBzdHIKICAgICAgewogICAgICAgIC8qIFBvc2l0aW9uIG9mIHRoZSBj aGFyYWN0ZXIgd2UgYXJlIGV4YW1pbmluZwogICAgICAgICAgIHRvIHNlZSB3aGV0aGVyIGl0IGlz IHJlcGVhdGVkLiAgKi8KQEAgLTI1NDUsNyArMjU0NSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL20yLWxhbmcuYwogIAogICAgICAgIFFVSVQ7CiAgCi1AQCAtMTUzLDcgKzE1Myw3 IEBAIG0yX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdHIKK0BAIC0xNDksNyAr MTQ5LDcgQEAgbTJfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHN0cgogIAkgICAg ICBpbl9xdW90ZXMgPSAwOwogIAkgICAgfQogIAkgIG0yX3ByaW50Y2hhciAoc3RyaW5nW2ldLCB0 eXBlLCBzdHJlYW0pOwpAQCAtMjU1NCwxMSArMjU1NCwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9tMi1sYW5nLmMKICAJICBpID0gcmVwMSAtIDE7CiAgCSAgdGhpbmdzX3ByaW50 ZWQgKz0gb3B0aW9ucy0+cmVwZWF0X2NvdW50X3RocmVzaG9sZDsKICAJICBuZWVkX2NvbW1hID0g MTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL20yLWxhbmcuaAorSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAxMTgvZ2RiL20yLWxhbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4y MDEyMDkyNi5vcmlnL2dkYi9tMi1sYW5nLmgJMjAxMi0wMy0wMSAyMDoyNjoxMy4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL20yLWxhbmcuaAkyMDEyLTExLTA3IDIy OjA5OjI5LjkwOTE0MDY4NiArMDEwMAotQEAgLTMyLDcgKzMyLDcgQEAgZXh0ZXJuIHZvaWQgbTJf cHJpbnRfdHlwZWRlZiAoc3RydWN0IHR5cAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9n ZGIvbTItbGFuZy5oCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDg2NjAxMzQ2ICswMTAwCisrKysgZ2Ri LTcuNS41MC4yMDEzMDExOC9nZGIvbTItbGFuZy5oCTIwMTMtMDEtMTggMjM6Mjc6MjguODY2NjA3 MzMzICswMTAwCitAQCAtMzMsNyArMzMsNyBAQCBleHRlcm4gdm9pZCBtMl9wcmludF90eXBlZGVm IChzdHJ1Y3QgdHlwCiAgZXh0ZXJuIGludCBtMl9pc19sb25nX3NldCAoc3RydWN0IHR5cGUgKnR5 cGUpOwogIGV4dGVybiBpbnQgbTJfaXNfdW5ib3VuZGVkX2FycmF5IChzdHJ1Y3QgdHlwZSAqdHlw ZSk7CiAgCkBAIC0yNTY3LDExICsyNTY3LDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL20yLWxhbmcuaAogIAkJCSAgc3RydWN0IHVpX2ZpbGUgKiwgaW50LAogIAkJCSAgY29uc3Qg c3RydWN0IHZhbHVlICosCiAgCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAq KTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL20yLXR5cGVwcmludC5jCitJbmRleDog Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbTItdHlwZXByaW50LmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvbTItdHlwZXByaW50LmMJMjAxMi0xMS0wNyAyMjow MjozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL20yLXR5cGVw cmludC5jCTIwMTItMTEtMDcgMjI6MDk6MjkuOTEwMTQwNjg0ICswMTAwCi1AQCAtMjI4LDkgKzIy OCwxMiBAQCBzdGF0aWMgdm9pZCBtMl9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsCistLS0gZ2Ri LTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9tMi10eXBlcHJpbnQuYwkyMDEzLTAxLTE4IDIzOjI3 OjI4Ljg2NjYwNzMzMyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL20yLXR5cGVw cmludC5jCTIwMTMtMDEtMTggMjM6MzE6NDUuODMyODc3ODA1ICswMTAwCitAQCAtMjM2LDkgKzIz NiwxMiBAQCBzdGF0aWMgdm9pZCBtMl9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsCiAgCSAgbTJf cHJpbnRfYm91bmRzIChUWVBFX0lOREVYX1RZUEUgKHR5cGUpLCBzdHJlYW0sIHNob3csIC0xLCAx KTsKICAJfQogICAgICAgIGVsc2UKQEAgLTI1ODYsMTIgKzI1ODYsMTIgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvbTItdHlwZXByaW50LmMKICsJfQogICAgICB9CiAgICBmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sICJdIE9GICIpOwotICAgbTJfcHJpbnRfdHlwZSAoVFlQRV9UQVJH RVRfVFlQRSAodHlwZSksICIiLCBzdHJlYW0sIHNob3csIGxldmVsKTsKLUluZGV4OiBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL20yLXZhbHByaW50LmMKKyAgIG0yX3ByaW50X3R5cGUgKFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpLCAiIiwgc3RyZWFtLCBzaG93LCBsZXZlbCwgZmxhZ3MpOworSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL20yLXZhbHByaW50LmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvbTItdmFscHJpbnQuYwkyMDEyLTExLTA3IDIyOjAy OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbTItdmFscHJp bnQuYwkyMDEyLTExLTA3IDIyOjA5OjI5LjkxMTE0MDY4MiArMDEwMAotQEAgLTM2LDcgKzM2LDcg QEAgc3RhdGljIGludCBwcmludF91bnBhY2tlZF9wb2ludGVyIChzdHJ1YworLS0tIGdkYi03LjUu NTAuMjAxMzAxMTgub3JpZy9nZGIvbTItdmFscHJpbnQuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA4 NzYwMTM0NyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL20yLXZhbHByaW50LmMJ MjAxMy0wMS0xOCAyMzoyNzoyOC44NjY2MDczMzMgKzAxMDAKK0BAIC0zNSw3ICszNSw3IEBAIHN0 YXRpYyBpbnQgcHJpbnRfdW5wYWNrZWRfcG9pbnRlciAoc3RydWMKICAJCQkJICAgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSk7CiAgc3RhdGljIHZvaWQKICBtMl9wcmludF9hcnJheV9jb250ZW50cyAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtMjYwMCw3ICsy NjAwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbTItdmFscHJpbnQuYwogIAkJ CSBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCQkgY29uc3Qgc3RydWN0 IHZhbHVlICp2YWwsCiAgCQkJIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRp b25zLAotQEAgLTY4LDcgKzY4LDcgQEAgZ2V0X2xvbmdfc2V0X2JvdW5kcyAoc3RydWN0IHR5cGUg KnR5cGUsCitAQCAtNjcsNyArNjcsNyBAQCBnZXRfbG9uZ19zZXRfYm91bmRzIChzdHJ1Y3QgdHlw ZSAqdHlwZSwKICAKICBzdGF0aWMgdm9pZAogIG0yX3ByaW50X2xvbmdfc2V0IChzdHJ1Y3QgdHlw ZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC0yNjA5LDcgKzI2MDksNyBAQCBJ bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tMi12YWxwcmludC5jCiAgCQkgICBzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtKQogIHsKICAgIGludCBlbXB0eV9zZXQgICAgICAgID0gMTsKLUBAIC0x NTksNyArMTU5LDcgQEAgbTJfcHJpbnRfbG9uZ19zZXQgKHN0cnVjdCB0eXBlICp0eXBlLCBjbwor QEAgLTE1OCw3ICsxNTgsNyBAQCBtMl9wcmludF9sb25nX3NldCAoc3RydWN0IHR5cGUgKnR5cGUs IGNvCiAgCiAgc3RhdGljIHZvaWQKICBtMl9wcmludF91bmJvdW5kZWRfYXJyYXkgKHN0cnVjdCB0 eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTI2MTgsNyArMjYxOCw3IEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL20yLXZhbHByaW50LmMKICAJCQkgIHN0cnVj dCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAogIAkJCSAgY29uc3Qgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCiAgewotQEAgLTI2Myw3ICsyNjMsNyBAQCBwcmludF92 YXJpYWJsZV9hdF9hZGRyZXNzIChzdHJ1Y3QgdHlwZSAqCitAQCAtMjYyLDcgKzI2Miw3IEBAIHBy aW50X3ZhcmlhYmxlX2F0X2FkZHJlc3MgKHN0cnVjdCB0eXBlICoKICAKICBzdGF0aWMgdm9pZAog IG0yX3ByaW50X2FycmF5X2NvbnRlbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsCkBAIC0yNjI3LDcgKzI2MjcsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9tMi12YWxwcmludC5jCiAgCQkJIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBy ZWN1cnNlLAogIAkJCSBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKICAJCQkgY29uc3Qgc3RydWN0 IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCi1AQCAtMzA5LDE0ICszMDksMTUgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBnZW5lcmljX3ZhbF9wcmludF9kZQorQEAgLTMwOCwxNCArMzA4LDE1 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VuZXJpY192YWxfcHJpbnRfZGUKICAgICBmdW5jdGlv bjsgdGhleSBhcmUgaWRlbnRpY2FsLiAgKi8KICAKICB2b2lkCkBAIC0yNjQ3LDcgKzI2NDcsNyBA QCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tMi12YWxwcmludC5jCiAgICBzdHJ1Y3Qg dHlwZSAqZWx0dHlwZTsKICAgIENPUkVfQUREUiBhZGRyOwogIAotQEAgLTM0MSw3ICszNDIsNyBA QCBtMl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnCitAQCAtMzQwLDcgKzM0 MSw3IEBAIG0yX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGcKICAJICAgICAg ICAgZWxlbWVudHMgdXAgdG8gaXQuICAqLwogIAkgICAgICBpZiAob3B0aW9ucy0+c3RvcF9wcmlu dF9hdF9udWxsKQogIAkJewpAQCAtMjY1NiwxMCArMjY1NiwxMCBAQCBJbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9tMi12YWxwcmludC5jCiAgCiAgCQkgIC8qIExvb2sgZm9yIGEgTlVMTCBj aGFyLiAgKi8KICAJCSAgZm9yICh0ZW1wX2xlbiA9IDA7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9tZW1yYW5nZS5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbWVtcmFu Z2UuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9tZW1yYW5n ZS5jCTIwMTItMDEtMDQgMDk6MTc6MDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9tZW1yYW5nZS5jCTIwMTItMTEtMDcgMjI6MDk6MjkuOTE2MTQwNjc2ICswMTAw CistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9tZW1yYW5nZS5jCTIwMTMtMDEtMTgg MjM6Mjc6MjIuMDg3NjAxMzQ3ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbWVt cmFuZ2UuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2NjYwNzMzMyArMDEwMAogQEAgLTIxLDggKzIx LDggQEAKICAjaW5jbHVkZSAibWVtcmFuZ2UuaCIKICAKQEAgLTI2NzEsMTAgKzI2NzEsMTAgQEAg SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbWVtcmFuZ2UuYwogIHsKICAgIFVMT05HRVNU IGgsIGw7CiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tZW1yYW5nZS5oCitJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbWVtcmFuZ2UuaAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9tZW1yYW5nZS5oCTIwMTItMDEtMDQgMDk6MTc6MDYu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tZW1yYW5nZS5oCTIw MTItMTEtMDcgMjI6MDk6MjkuOTE3MTQwNjc0ICswMTAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDEx OC5vcmlnL2dkYi9tZW1yYW5nZS5oCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDg3NjAxMzQ3ICswMTAw CisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbWVtcmFuZ2UuaAkyMDEzLTAxLTE4IDIzOjI3 OjI4Ljg2NjYwNzMzMyArMDEwMAogQEAgLTMwLDcgKzMwLDcgQEAgc3RydWN0IG1lbV9yYW5nZQog ICAgQ09SRV9BRERSIHN0YXJ0OwogIApAQCAtMjY5NSwxMCArMjY5NSwxMCBAQCBJbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9tZW1yYW5nZS5oCiAgCiAgLyogU29ydCByYW5nZXMgYnkgc3Rh cnQgYWRkcmVzcywgdGhlbiBjb2FsZXNjZSBjb250aWd1b3VzIG9yCiAgICAgb3ZlcmxhcHBpbmcg cmFuZ2VzLiAgKi8KLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL21pcHMtbGludXgtbmF0 LmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9taXBzLWxpbnV4LW5hdC5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL21pcHMtbGludXgtbmF0LmMJ MjAxMi0wNS0yMiAyMDoxMjoxMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL21pcHMtbGludXgtbmF0LmMJMjAxMi0xMS0wNyAyMjowOToyOS45MTgxNDA2NzIgKzAx MDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL21pcHMtbGludXgtbmF0LmMJMjAx My0wMS0xOCAyMzoyNzoyMi4wODc2MDEzNDcgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi9taXBzLWxpbnV4LW5hdC5jCTIwMTMtMDEtMTggMjM6Mjc6MjguODY3NjA3MzM0ICswMTAw CiBAQCAtOTM4LDcgKzkzOCw3IEBAIHRyeV9vbmVfd2F0Y2ggKHN0cnVjdCBwdF93YXRjaF9yZWdz ICpyZWcKICAgICB0aGUgc3BlY2lmaWVkIHJlZ2lvbiBjYW4gYmUgY292ZXJlZCBieSB0aGUgd2F0 Y2ggcmVnaXN0ZXJzLiAgKi8KICAKQEAgLTI3MDgsNDkgKzI3MDgsMTAgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvbWlwcy1saW51eC1uYXQuYwogIHsKICAgIHN0cnVjdCBwdF93YXRj aF9yZWdzIGR1bW15X3JlZ3M7CiAgICBpbnQgaTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL29iamMtbGFuZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcv Z2RiL29iamMtbGFuZy5jCTIwMTItMTEtMDcgMjI6MDA6NDQuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9vYmpjLWxhbmcuYwkyMDEyLTExLTA3IDIyOjA5OjI5Ljky MDE0MDY3MCArMDEwMAotQEAgLTM0NywxMSArMzQ3LDExIEBAIG9iamNfcHJpbnRjaGFyIChpbnQg Yywgc3RydWN0IHR5cGUgKnR5cGUKLSAKLSBzdGF0aWMgdm9pZAotIG9iamNfcHJpbnRzdHIgKHN0 cnVjdCB1aV9maWxlICpzdHJlYW0sIHN0cnVjdCB0eXBlICp0eXBlLAotLQkgICAgICAgY29uc3Qg Z2RiX2J5dGUgKnN0cmluZywgdW5zaWduZWQgaW50IGxlbmd0aCwKLSsJICAgICAgIGNvbnN0IGdk Yl9ieXRlICpzdHJpbmcsIFVMT05HRVNUIGxlbmd0aCwKLSAJICAgICAgIGNvbnN0IGNoYXIgKmVu Y29kaW5nLCBpbnQgZm9yY2VfZWxsaXBzZXMsCi0gCSAgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVf cHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKLSB7Ci0tICB1bnNpZ25lZCBpbnQgaTsKLSsgIFVMT05H RVNUIGk7Ci0gICB1bnNpZ25lZCBpbnQgdGhpbmdzX3ByaW50ZWQgPSAwOwotICAgaW50IGluX3F1 b3RlcyA9IDA7Ci0gICBpbnQgbmVlZF9jb21tYSA9IDA7Ci1AQCAtMzcyLDkgKzM3Miw5IEBAIG9i amNfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHMKLSAgICAgewotICAgICAgIC8q IFBvc2l0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgd2UgYXJlIGV4YW1pbmluZyB0byBzZWUgd2hldGhl ciBpdAotIAkgaXMgcmVwZWF0ZWQuICAqLwotLSAgICAgIHVuc2lnbmVkIGludCByZXAxOwotKyAg ICAgIFVMT05HRVNUIHJlcDE7Ci0gICAgICAgLyogTnVtYmVyIG9mIHJlcGV0aXRpb25zIHdlIGhh dmUgZGV0ZWN0ZWQgc28gZmFyLiAgKi8KLS0gICAgICB1bnNpZ25lZCBpbnQgcmVwczsKLSsgICAg ICBVTE9OR0VTVCByZXBzOwotIAotICAgICAgIFFVSVQ7Ci0gCi1AQCAtNDAzLDcgKzQwMyw3IEBA IG9iamNfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHMKLSAJICAgICAgaW5fcXVv dGVzID0gMDsKLSAJICAgIH0KLSAJICBvYmpjX3ByaW50Y2hhciAoc3RyaW5nW2ldLCB0eXBlLCBz dHJlYW0pOwotLQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiA8cmVwZWF0cyAldSB0aW1l cz4iLCByZXBzKTsKLSsJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIgPHJlcGVhdHMgJXMg dGltZXM+IiwgcHVsb25nZXN0IChyZXBzKSk7Ci0gCSAgaSA9IHJlcDEgLSAxOwotIAkgIHRoaW5n c19wcmludGVkICs9IG9wdGlvbnMtPnJlcGVhdF9jb3VudF90aHJlc2hvbGQ7Ci0gCSAgbmVlZF9j b21tYSA9IDE7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9vcGVuY2wtbGFuZy5jCitJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvb3BlbmNsLWxhbmcuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9vcGVuY2wtbGFuZy5jCTIwMTItMTEtMDcg MjI6MDA6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9vcGVu Y2wtbGFuZy5jCTIwMTItMTEtMDcgMjI6MDk6MjkuOTIxMTQwNjY5ICswMTAwCistLS0gZ2RiLTcu NS41MC4yMDEzMDExOC5vcmlnL2dkYi9vcGVuY2wtbGFuZy5jCTIwMTMtMDEtMTggMjM6Mjc6MjIu MDg4NjAxMzQ5ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvb3BlbmNsLWxhbmcu YwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2ODYwNzMzNSArMDEwMAogQEAgLTgwLDExICs4MCwxMSBA QCBidWlsdGluX29wZW5jbF90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCiAgCiAgc3RhdGljIHN0 cnVjdCB0eXBlICoKQEAgLTI4NzcsMTEgKzI4MzgsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvb3BlbmNsLWxhbmcuYwogIAogICAgICAgIGlmICghdmFsdWVfYml0c19zeW50aGV0 aWNfcG9pbnRlciAoYy0+dmFsLAogIAkJCQkJIGMtPmluZGljZXNbaV0gKiBlbHNpemUgKyBjb21w X29mZnNldCwKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3AtbGFuZy5jCitJbmRleDog Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcC1sYW5nLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjAuMjAxMjA5MjYub3JpZy9nZGIvcC1sYW5nLmMJMjAxMi0xMS0wNyAyMjowMDo0NC4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3AtbGFuZy5jCTIwMTItMTEtMDcg MjI6MDk6MjkuOTIyMTQwNjY3ICswMTAwCi1AQCAtOTYsOCArOTYsOCBAQCBwYXNjYWxfbWFpbl9u YW1lICh2b2lkKQorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvcC1sYW5nLmMJMjAx My0wMS0xOCAyMzoyNzoyMi4wODk2MDEzNTEgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi9wLWxhbmcuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2ODYwNzMzNSArMDEwMAorQEAgLTk1 LDggKzk1LDggQEAgcGFzY2FsX21haW5fbmFtZSAodm9pZCkKICAgICBhcmUgbm90IG11bHRpcGxl IG9mIFRBUkdFVF9DSEFSX0JJVCB0aGVuIHRoZSByZXN1bHRzIGFyZSB3cm9uZwogICAgIGJ1dCB0 aGlzIGRvZXMgbm90IGhhcHBlbiBmb3IgRnJlZSBQYXNjYWwgbm9yIGZvciBHUEMuICAqLwogIGlu dApAQCAtMjg5Miw3ICsyODUzLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcC1s YW5nLmMKICAJCSAgICAgICBzdHJ1Y3QgdHlwZSAqKmNoYXJfdHlwZSwKICAJCSAgICAgICBjb25z dCBjaGFyICoqYXJyYXluYW1lKQogIHsKLUBAIC0yMTcsMTIgKzIxNywxMiBAQCBwYXNjYWxfcHJp bnRjaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5CitAQCAtMjE2LDEyICsyMTYsMTIgQEAgcGFz Y2FsX3ByaW50Y2hhciAoaW50IGMsIHN0cnVjdCB0eXBlICp0eQogIAogIHZvaWQKICBwYXNjYWxf cHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHN0cnVjdCB0eXBlICp0eXBlLApAQCAt MjkwNyw3ICsyODY4LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcC1sYW5nLmMK ICAgIHVuc2lnbmVkIGludCB0aGluZ3NfcHJpbnRlZCA9IDA7CiAgICBpbnQgaW5fcXVvdGVzID0g MDsKICAgIGludCBuZWVkX2NvbW1hID0gMDsKLUBAIC0yNTAsOSArMjUwLDkgQEAgcGFzY2FsX3By aW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAorQEAgLTI0OSw5ICsyNDksOSBAQCBwYXNj YWxfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgICAgIHsKICAgICAgICAvKiBQ b3NpdGlvbiBvZiB0aGUgY2hhcmFjdGVyIHdlIGFyZSBleGFtaW5pbmcKICAgICAgICAgICB0byBz ZWUgd2hldGhlciBpdCBpcyByZXBlYXRlZC4gICovCkBAIC0yOTE5LDcgKzI4ODAsNyBAQCBJbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wLWxhbmcuYwogICAgICAgIHVuc2lnbmVkIGxvbmcg aW50IGN1cnJlbnRfY2hhcjsKICAKICAgICAgICBRVUlUOwotQEAgLTI4Nyw3ICsyODcsNyBAQCBw YXNjYWxfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCitAQCAtMjgzLDcgKzI4Myw3 IEBAIHBhc2NhbF9wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKICAJICAgICAgaW5f cXVvdGVzID0gMDsKICAJICAgIH0KICAJICBwYXNjYWxfcHJpbnRjaGFyIChjdXJyZW50X2NoYXIs IHR5cGUsIHN0cmVhbSk7CkBAIC0yOTI4LDEwICsyODg5LDEwIEBAIEluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL3AtbGFuZy5jCiAgCSAgaSA9IHJlcDEgLSAxOwogIAkgIHRoaW5nc19wcmlu dGVkICs9IG9wdGlvbnMtPnJlcGVhdF9jb3VudF90aHJlc2hvbGQ7CiAgCSAgbmVlZF9jb21tYSA9 IDE7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wLWxhbmcuaAorSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAxMTgvZ2RiL3AtbGFuZy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIw MTIwOTI2Lm9yaWcvZ2RiL3AtbGFuZy5oCTIwMTItMDMtMDEgMjA6MjY6MTMuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wLWxhbmcuaAkyMDEyLTExLTA3IDIyOjA5 OjI5LjkyMzE0MDY2NSArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvcC1s YW5nLmgJMjAxMy0wMS0xOCAyMzoyNzoyMi4wODk2MDEzNTEgKzAxMDAKKysrKyBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi9wLWxhbmcuaAkyMDEzLTAxLTE4IDIzOjMyOjE3LjM1ODkxNjQyNiArMDEw MAogQEAgLTM1LDcgKzM1LDcgQEAgZXh0ZXJuIHZvaWQgcGFzY2FsX3ByaW50X3R5cGUgKHN0cnVj dCB0eQogIGV4dGVybiB2b2lkIHBhc2NhbF9wcmludF90eXBlZGVmIChzdHJ1Y3QgdHlwZSAqLCBz dHJ1Y3Qgc3ltYm9sICosCiAgCQkJCSAgc3RydWN0IHVpX2ZpbGUgKik7CkBAIC0yOTU3LDggKzI5 MTgsOCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wLWxhbmcuaAogIAkJCSAgICAg Y29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAgCiAgZXh0ZXJuIHN0cnVjdCB0 eXBlICoqY29uc3QgKHBhc2NhbF9idWlsdGluX3R5cGVzW10pOwotQEAgLTY5LDcgKzY5LDcgQEAg ZXh0ZXJuIHZvaWQKLSAgIHBhc2NhbF90eXBlX3ByaW50X3ZhcnNwZWNfcHJlZml4IChzdHJ1Y3Qg dHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsIGludCk7CitAQCAtNzEsNyArNzEsNyBAQCBl eHRlcm4gdm9pZAorIAkJCQkgICAgY29uc3Qgc3RydWN0IHR5cGVfcHJpbnRfb3B0aW9ucyAqKTsK ICAKICBleHRlcm4gdm9pZCBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlX2ZpZWxkcyAoc3RydWN0 IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwKIC0JCQkJCSAgICAgIGludCwKQEAgLTI5NjYsMTEg KzI5MjcsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcC1sYW5nLmgKICAJCQkJ CSAgICAgIENPUkVfQUREUiwgc3RydWN0IHVpX2ZpbGUgKiwKICAJCQkJCSAgICAgIGludCwKICAJ CQkJCSAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqLAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvcC12YWxwcmludC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcC12YWxw cmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3AtdmFs cHJpbnQuYwkyMDEyLTExLTA3IDIyOjAwOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvcC12YWxwcmludC5jCTIwMTItMTEtMDcgMjI6MDk6MjkuOTMwMTQwNjU1 ICswMTAwCi1AQCAtNTksNyArNTksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGdlbmVyaWNfdmFs X3ByaW50X2RlCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9wLXZhbHByaW50LmMJ MjAxMy0wMS0xOCAyMzoyNzoyMi4wODk2MDEzNTEgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMw MTE4L2dkYi9wLXZhbHByaW50LmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44Njg2MDczMzUgKzAxMDAK K0BAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VuZXJpY192YWxfcHJpbnRf ZGUKICAKICB2b2lkCiAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0 IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtMjk3OSw3ICsyOTQwLDcgQEAgSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvcC12YWxwcmludC5jCiAgCQkgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0s IGludCByZWN1cnNlLAogIAkJICBjb25zdCBzdHJ1Y3QgdmFsdWUgKm9yaWdpbmFsX3ZhbHVlLAog IAkJICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKLUBAIC03MCw4 ICs3MCw4IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb24KK0BAIC02 OSw4ICs2OSw4IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb24KICAg IHVuc2lnbmVkIGxlbjsKICAgIExPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kOwogICAgc3Ry dWN0IHR5cGUgKmVsdHR5cGU7CkBAIC0yOTkwLDcgKzI5NTEsNyBAQCBJbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9wLXZhbHByaW50LmMKICAgIHN0cnVjdCB0eXBlICpjaGFyX3R5cGU7CiAg ICBDT1JFX0FERFIgYWRkcjsKICAgIGludCB3YW50X3NwYWNlID0gMDsKLUBAIC01MDQsNyArNTA0 LDcgQEAgc3RhdGljIHZvaWQgcGFzY2FsX29iamVjdF9wcmludF9zdGF0aWNfZgorQEAgLTQ5Myw3 ICs0OTMsNyBAQCBzdGF0aWMgdm9pZCBwYXNjYWxfb2JqZWN0X3ByaW50X3N0YXRpY19mCiAgCQkJ CQkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKICAKICBzdGF0aWMg dm9pZCBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlIChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBnZGJf Ynl0ZSAqLApAQCAtMjk5OSw3ICsyOTYwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvcC12YWxwcmludC5jCiAgCQkJCSAgICAgICBDT1JFX0FERFIsIHN0cnVjdCB1aV9maWxlICos IGludCwKICAJCQkJICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqLAogIAkJCQkgICAgICAgY29u c3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKiwKLUBAIC01NjMsNyArNTYzLDcgQEAgcGFz Y2FsX29iamVjdF9pc192dGJsX21lbWJlciAoc3RydWN0IHR5cAorQEAgLTU1Miw3ICs1NTIsNyBA QCBwYXNjYWxfb2JqZWN0X2lzX3Z0YmxfbWVtYmVyIChzdHJ1Y3QgdHlwCiAgCiAgdm9pZAogIHBh c2NhbF9vYmplY3RfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3Qg Z2RiX2J5dGUgKnZhbGFkZHIsCkBAIC0zMDA4LDcgKzI5NjksNyBAQCBJbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9wLXZhbHByaW50LmMKICAJCQkJICBDT1JFX0FERFIgYWRkcmVzcywgc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSwKICAJCQkJICBpbnQgcmVjdXJzZSwKICAJCQkJICBjb25zdCBz dHJ1Y3QgdmFsdWUgKnZhbCwKLUBAIC03NTgsNyArNzU4LDcgQEAgcGFzY2FsX29iamVjdF9wcmlu dF92YWx1ZV9maWVsZHMgKHN0cnVjdAorQEAgLTcyOCw3ICs3MjgsNyBAQCBwYXNjYWxfb2JqZWN0 X3ByaW50X3ZhbHVlX2ZpZWxkcyAoc3RydWN0CiAgCiAgc3RhdGljIHZvaWQKICBwYXNjYWxfb2Jq ZWN0X3ByaW50X3ZhbHVlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIsCkBAIC0zMDE3LDcgKzI5NzgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9w LXZhbHByaW50LmMKICAJCQkgICBDT1JFX0FERFIgYWRkcmVzcywgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwKICAJCQkgICBpbnQgcmVjdXJzZSwKICAJCQkgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZh bCwKLUBAIC03ODEsMTEgKzc4MSwxMSBAQCBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlIChzdHJ1 Y3QgdHlwZSAqCitAQCAtNzUxLDExICs3NTEsMTEgQEAgcGFzY2FsX29iamVjdF9wcmludF92YWx1 ZSAoc3RydWN0IHR5cGUgKgogIAogICAgZm9yIChpID0gMDsgaSA8IG5fYmFzZWNsYXNzZXM7IGkr KykKICAgICAgewpAQCAtMzAzMSwxMSArMjk5MiwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9wLXZhbHByaW50LmMKICAgICAgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlv biBleDsKICAgICAgICBpbnQgc2tpcCA9IDA7CiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9wcGMtbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9wcGMt bGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIv cHBjLWxpbnV4LW5hdC5jCTIwMTItMDctMDYgMTg6NDk6NDMuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wcGMtbGludXgtbmF0LmMJMjAxMi0xMS0wNyAyMjowOToy OS45MzMxNDA2NTEgKzAxMDAKLUBAIC0xNDkzLDcgKzE0OTMsNyBAQCBwcGNfbGludXhfY2FuX3Vz ZV9od19icmVha3BvaW50IChpbnQgdHlwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dk Yi9wcGMtbGludXgtbmF0LmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wOTA2MDEzNTMgKzAxMDAKKysr KyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9wcGMtbGludXgtbmF0LmMJMjAxMy0wMS0xOCAyMzoy NzoyOC44Njk2MDczMzcgKzAxMDAKK0BAIC0xNDkyLDcgKzE0OTIsNyBAQCBwcGNfbGludXhfY2Fu X3VzZV9od19icmVha3BvaW50IChpbnQgdHlwCiAgfQogIAogIHN0YXRpYyBpbnQKQEAgLTMwNDQs MTEgKzMwMDUsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcHBjLWxpbnV4LW5h dC5jCiAgewogICAgLyogSGFuZGxlIHN1Yi04LWJ5dGUgcXVhbnRpdGllcy4gICovCiAgICBpZiAo bGVuIDw9IDApCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wcmludGNtZC5jCitJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcHJpbnRjbWQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9wcmludGNtZC5jCTIwMTItMTEtMDcgMjI6MDM6NTcu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wcmludGNtZC5jCTIw MTItMTEtMDcgMjI6MDk6MjkuOTQwMTQwNjQxICswMTAwCi1AQCAtMjkxLDcgKzI5MSw3IEBAIHBy aW50X2Zvcm1hdHRlZCAoc3RydWN0IHZhbHVlICp2YWwsIGludAorLS0tIGdkYi03LjUuNTAuMjAx MzAxMTgub3JpZy9nZGIvcHJpbnRjbWQuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA5MTYwMTM1NSAr MDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3ByaW50Y21kLmMJMjAxMy0wMS0xOCAy MzoyNzoyOC44Njk2MDczMzcgKzAxMDAKK0BAIC0yODksNyArMjg5LDcgQEAgcHJpbnRfZm9ybWF0 dGVkIChzdHJ1Y3QgdmFsdWUgKnZhbCwgaW50CiAgCQkgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkK ICB7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKHZh bCkpOwpAQCAtMzA1Nyw3ICszMDE4LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv cHJpbnRjbWQuYwogIAogICAgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkpCiAg ICAgIG5leHRfYWRkcmVzcyA9IHZhbHVlX2FkZHJlc3MgKHZhbCkgKyBsZW47Ci1AQCAtMzY5LDcg KzM2OSw3IEBAIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKGNvbnN0IHZvaWQgKnZhbGEKK0BAIC0z NjcsNyArMzY3LDcgQEAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAoY29uc3Qgdm9pZCAqdmFsYQog IHsKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAodHlwZSk7CiAg ICBMT05HRVNUIHZhbF9sb25nID0gMDsKQEAgLTMwNjYsMTEgKzMwMjcsMTEgQEAgSW5kZXg6IGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvcHJpbnRjbWQuYwogICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVf b3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwogIAogICAgLyogU3RyaW5nIHBy aW50aW5nIHNob3VsZCBnbyB0aHJvdWdoIHZhbF9wcmludF9zY2FsYXJfZm9ybWF0dGVkLiAgKi8K LUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3Byb2Nmcy5jCitJbmRleDogZ2RiLTcuNS41 MC4yMDEzMDExOC9nZGIvcHJvY2ZzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5 MjYub3JpZy9nZGIvcHJvY2ZzLmMJMjAxMi0xMS0wNyAyMjowMDo0My4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3Byb2Nmcy5jCTIwMTItMTEtMDcgMjI6MDk6Mjku OTQ1MTQwNjMzICswMTAwCi1AQCAtNDk2Niw3ICs0OTY2LDcgQEAgcHJvY2ZzX3JlbW92ZV93YXRj aHBvaW50IChDT1JFX0FERFIgYWRkcgorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIv cHJvY2ZzLmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wOTI2MDEzNTcgKzAxMDAKKysrKyBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi9wcm9jZnMuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg3MDYwNzM0MCAr MDEwMAorQEAgLTQ5MjYsNyArNDkyNiw3IEBAIHByb2Nmc19yZW1vdmVfd2F0Y2hwb2ludCAoQ09S RV9BRERSIGFkZHIKICB9CiAgCiAgc3RhdGljIGludApAQCAtMzA3OSwxMSArMzA0MCwxMSBAQCBJ bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wcm9jZnMuYwogIHsKICAgIC8qIFRoZSBtYW4g cGFnZSBmb3IgcHJvYyg0KSBvbiBTb2xhcmlzIDIuNiBhbmQgdXAgc2F5cyB0aGF0IHRoZQogICAg ICAgc3lzdGVtIGNhbiBzdXBwb3J0ICJ0aG91c2FuZHMiIG9mIGhhcmR3YXJlIHdhdGNocG9pbnRz LCBidXQgZ2l2ZXMKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3B5dGhvbi9weS1wcmV0 dHlwcmludC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcHl0aG9uL3B5LXByZXR0 eXByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvcHl0 aG9uL3B5LXByZXR0eXByaW50LmMJMjAxMi0wMS0wNCAwOToxNzoyNS4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCTIwMTIt MTEtMDcgMjI6MDk6MjkuOTY5MTQwNTk4ICswMTAwCi1AQCAtNjc2LDcgKzY3Niw3IEBAIHByaW50 X2NoaWxkcmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29uc3QKKy0tLSBnZGItNy41LjUwLjIwMTMw MTE4Lm9yaWcvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCTIwMTMtMDEtMTggMjM6Mjc6MjIu MDkyNjAxMzU3ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcHl0aG9uL3B5LXBy ZXR0eXByaW50LmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NzA2MDczNDAgKzAxMDAKK0BAIC02ODks NyArNjg5LDcgQEAgcHJpbnRfY2hpbGRyZW4gKFB5T2JqZWN0ICpwcmludGVyLCBjb25zdAogIAog IGludAogIGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0 IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtMzA5Miw3ICszMDUzLDcgQEAgSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMKICAJCQkgIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sIGludCByZWN1cnNlLAogIAkJCSAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWws CiAgCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywKLUBAIC04 MjQsNyArODI0LDcgQEAgZ2RicHlfZGVmYXVsdF92aXN1YWxpemVyIChQeU9iamVjdCAqc2VsZgor QEAgLTgzNyw3ICs4MzcsNyBAQCBnZGJweV9kZWZhdWx0X3Zpc3VhbGl6ZXIgKFB5T2JqZWN0ICpz ZWxmCiAgCiAgaW50CiAgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC0zMTAxLDEwICszMDYyLDEwIEBAIEluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCiAgCQkJICBz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCQkgIGNvbnN0IHN0cnVjdCB2 YWx1ZSAqdmFsLAogIAkJCSAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlv bnMsCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9weXRob24vcHl0aG9uLmgKK0luZGV4 OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9weXRob24vcHl0aG9uLmgKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMTEtMDcg MjI6MDA6NDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9weXRo b24vcHl0aG9uLmgJMjAxMi0xMS0wNyAyMjoxMDo0Ni4wMTAwMzAxMTUgKzAxMDAKKy0tLSBnZGIt Ny41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEzLTAxLTE4IDIzOjI3 OjIyLjA5MjYwMTM1NyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3B5dGhvbi9w eXRob24uaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg3MDYwNzM0MCArMDEwMAogQEAgLTM3LDcgKzM3 LDcgQEAgdm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqZmlsZSwgYwogIHZvaWQgcnVu X3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoqYXJndik7CiAgCkBAIC0zMTE0LDExICsz MDc1LDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3B5dGhvbi9weXRob24uaAog IAkJCSAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAogIAkJCSAgICAg IGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkJCSAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9w cmludF9vcHRpb25zICpvcHRpb25zLAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcmVn Y2FjaGUuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3JlZ2NhY2hlLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvcmVnY2FjaGUuYwkyMDEyLTAx LTA0IDA5OjE3OjA5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv cmVnY2FjaGUuYwkyMDEyLTExLTA3IDIyOjA5OjI5Ljk4ODE0MDU3MSArMDEwMAotQEAgLTkwMiw3 ICs5MDIsNyBAQCB0eXBlZGVmIHZvaWQgKHJlZ2NhY2hlX3dyaXRlX2Z0eXBlKSAoc3RyCistLS0g Z2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9yZWdjYWNoZS5jCTIwMTMtMDEtMTggMjM6Mjc6 MjIuMDkzNjAxMzU5ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcmVnY2FjaGUu YwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg3MTYwNzM0MiArMDEwMAorQEAgLTkwMSw3ICs5MDEsNyBA QCB0eXBlZGVmIHZvaWQgKHJlZ2NhY2hlX3dyaXRlX2Z0eXBlKSAoc3RyCiAgCiAgc3RhdGljIGVu dW0gcmVnaXN0ZXJfc3RhdHVzCiAgcmVnY2FjaGVfeGZlcl9wYXJ0IChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCBpbnQgcmVnbnVtLApAQCAtMzEyNyw3ICszMDg4LDcgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvcmVnY2FjaGUuYwogIAkJICAgIGVudW0gcmVnaXN0ZXJfc3RhdHVz ICgqcmVhZCkgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCiAgCQkJCQkJICBpbnQgcmVnbnVt LAogIAkJCQkJCSAgZ2RiX2J5dGUgKmJ1ZiksCi1AQCAtOTQ2LDcgKzk0Niw3IEBAIHJlZ2NhY2hl X3hmZXJfcGFydCAoc3RydWN0IHJlZ2NhY2hlICpyZWcKK0BAIC05NDUsNyArOTQ1LDcgQEAgcmVn Y2FjaGVfeGZlcl9wYXJ0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZwogIAogIGVudW0gcmVnaXN0ZXJf c3RhdHVzCiAgcmVnY2FjaGVfcmF3X3JlYWRfcGFydCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgaW50IHJlZ251bSwKQEAgLTMxMzYsNyArMzA5Nyw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL3JlZ2NhY2hlLmMKICB7CiAgICBzdHJ1Y3QgcmVnY2FjaGVfZGVzY3IgKmRlc2Ny ID0gcmVnY2FjaGUtPmRlc2NyOwogIAotQEAgLTk1Nyw3ICs5NTcsNyBAQCByZWdjYWNoZV9yYXdf cmVhZF9wYXJ0IChzdHJ1Y3QgcmVnY2FjaGUKK0BAIC05NTYsNyArOTU2LDcgQEAgcmVnY2FjaGVf cmF3X3JlYWRfcGFydCAoc3RydWN0IHJlZ2NhY2hlCiAgCiAgdm9pZAogIHJlZ2NhY2hlX3Jhd193 cml0ZV9wYXJ0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtLApAQCAtMzE0 NSw3ICszMTA2LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcmVnY2FjaGUuYwog IHsKICAgIHN0cnVjdCByZWdjYWNoZV9kZXNjciAqZGVzY3IgPSByZWdjYWNoZS0+ZGVzY3I7CiAg Ci1AQCAtOTY4LDcgKzk2OCw3IEBAIHJlZ2NhY2hlX3Jhd193cml0ZV9wYXJ0IChzdHJ1Y3QgcmVn Y2FjaGUKK0BAIC05NjcsNyArOTY3LDcgQEAgcmVnY2FjaGVfcmF3X3dyaXRlX3BhcnQgKHN0cnVj dCByZWdjYWNoZQogIAogIGVudW0gcmVnaXN0ZXJfc3RhdHVzCiAgcmVnY2FjaGVfY29va2VkX3Jl YWRfcGFydCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ251bSwKQEAgLTMxNTQs NyArMzExNSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3JlZ2NhY2hlLmMKICB7 CiAgICBzdHJ1Y3QgcmVnY2FjaGVfZGVzY3IgKmRlc2NyID0gcmVnY2FjaGUtPmRlc2NyOwogIAot QEAgLTk3OSw3ICs5NzksNyBAQCByZWdjYWNoZV9jb29rZWRfcmVhZF9wYXJ0IChzdHJ1Y3QgcmVn Y2FjCitAQCAtOTc4LDcgKzk3OCw3IEBAIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkX3BhcnQgKHN0cnVj dCByZWdjYWMKICAKICB2b2lkCiAgcmVnY2FjaGVfY29va2VkX3dyaXRlX3BhcnQgKHN0cnVjdCBy ZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdudW0sCkBAIC0zMTYzLDExICszMTI0LDExIEBAIElu ZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3JlZ2NhY2hlLmMKICB7CiAgICBzdHJ1Y3QgcmVn Y2FjaGVfZGVzY3IgKmRlc2NyID0gcmVnY2FjaGUtPmRlc2NyOwogIAotSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvcmVnY2FjaGUuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L3JlZ2NhY2hlLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIv cmVnY2FjaGUuaAkyMDEyLTAxLTA0IDA5OjE3OjEwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvcmVnY2FjaGUuaAkyMDEyLTExLTA3IDIyOjA5OjI5Ljk5MDE0MDU2 OCArMDEwMAotQEAgLTkwLDkgKzkwLDkgQEAgZXh0ZXJuIHZvaWQgcmVnY2FjaGVfcmF3X3dyaXRl X3Vuc2lnbmVkCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9yZWdjYWNoZS5oCTIw MTMtMDEtMTggMjM6Mjc6MjIuMDkzNjAxMzU5ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvcmVnY2FjaGUuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg3MTYwNzM0MiArMDEwMAorQEAg LTg5LDkgKzg5LDkgQEAgZXh0ZXJuIHZvaWQgcmVnY2FjaGVfcmF3X3dyaXRlX3Vuc2lnbmVkCiAg CiAgZXh0ZXJuIGVudW0gcmVnaXN0ZXJfc3RhdHVzCiAgICByZWdjYWNoZV9yYXdfcmVhZF9wYXJ0 IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtLApAQCAtMzE3OSw3ICszMTQw LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcmVnY2FjaGUuaAogIAogIHZvaWQg cmVnY2FjaGVfaW52YWxpZGF0ZSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ251 bSk7CiAgCi1AQCAtMTI5LDEwICsxMjksMTEgQEAgZXh0ZXJuIHZvaWQgcmVnY2FjaGVfY29va2Vk X3dyaXRlX3Vuc2lnbgorQEAgLTEyOCwxMCArMTI4LDExIEBAIGV4dGVybiB2b2lkIHJlZ2NhY2hl X2Nvb2tlZF93cml0ZV91bnNpZ24KICAgICB3cml0ZSBzdHlsZSBvcGVyYXRpb25zLiAgKi8KICAK ICBlbnVtIHJlZ2lzdGVyX3N0YXR1cyByZWdjYWNoZV9jb29rZWRfcmVhZF9wYXJ0IChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLApAQCAtMzE5NCwxMSArMzE1NSwxMSBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9yZWdjYWNoZS5oCiAgCiAgLyogU3BlY2lhbCByb3V0aW5lcyB0byBy ZWFkL3dyaXRlIHRoZSBQQy4gICovCiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9y ZW1vdGUuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3JlbW90ZS5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3JlbW90ZS5jCTIwMTItMTEtMDcg MjI6MDA6NDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9yZW1v dGUuYwkyMDEyLTExLTA3IDIyOjA5OjI5Ljk5NDE0MDU2MiArMDEwMAotQEAgLTgxMTksNyArODEx OSw3IEBAIGludCByZW1vdGVfaHdfd2F0Y2hwb2ludF9sZW5ndGhfbGltaXQgPQorLS0tIGdkYi03 LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvcmVtb3RlLmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wOTU2 MDEzNjIgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9yZW1vdGUuYwkyMDEzLTAx LTE4IDIzOjI3OjI4Ljg3MjYwNzM0MyArMDEwMAorQEAgLTgxNzQsNyArODE3NCw3IEBAIGludCBy ZW1vdGVfaHdfd2F0Y2hwb2ludF9sZW5ndGhfbGltaXQgPQogIGludCByZW1vdGVfaHdfYnJlYWtw b2ludF9saW1pdCA9IC0xOwogIAogIHN0YXRpYyBpbnQKQEAgLTMyMDcsMTEgKzMxNjgsMTEgQEAg SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcmVtb3RlLmMKICB7CiAgICBpZiAocmVtb3Rl X2h3X3dhdGNocG9pbnRfbGVuZ3RoX2xpbWl0ID09IDApCiAgICAgIHJldHVybiAwOwotSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvczM5MC1uYXQuYworSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL3MzOTAtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYu b3JpZy9nZGIvczM5MC1uYXQuYwkyMDEyLTAzLTA1IDIwOjA1OjA5LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvczM5MC1uYXQuYwkyMDEyLTExLTA3IDIyOjA5OjMw LjAxNjE0MDUzMSArMDEwMAotQEAgLTU3Miw3ICs1NzIsNyBAQCBzMzkwX2Nhbl91c2VfaHdfYnJl YWtwb2ludCAoaW50IHR5cGUsIGluCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9z MzkwLW5hdC5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDk2NjAxMzYzICswMTAwCisrKysgZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvczM5MC1uYXQuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg3MjYwNzM0 MyArMDEwMAorQEAgLTU3MSw3ICs1NzEsNyBAQCBzMzkwX2Nhbl91c2VfaHdfYnJlYWtwb2ludCAo aW50IHR5cGUsIGluCiAgfQogIAogIHN0YXRpYyBpbnQKQEAgLTMyMjAsMTAgKzMxODEsMTAgQEAg SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvczM5MC1uYXQuYwogIHsKICAgIHJldHVybiAx OwogIH0KLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3NwdS1tdWx0aWFyY2guYworSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3NwdS1tdWx0aWFyY2guYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9zcHUtbXVsdGlhcmNoLmMJMjAxMi0wNS0x OCAyMzowMjo1MC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3Nw dS1tdWx0aWFyY2guYwkyMDEyLTExLTA3IDIyOjA5OjMwLjAyMTE0MDUyMyArMDEwMAorLS0tIGdk Yi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvc3B1LW11bHRpYXJjaC5jCTIwMTMtMDEtMTggMjM6 Mjc6MjIuMDk2NjAxMzYzICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc3B1LW11 bHRpYXJjaC5jCTIwMTMtMDEtMTggMjM6Mjc6MjguODczNjA3MzQ0ICswMTAwCiBAQCAtMTE4LDcg KzExOCw3IEBAIHNwdV90aHJlYWRfYXJjaGl0ZWN0dXJlIChzdHJ1Y3QgdGFyZ2V0X28KICAKICAv KiBPdmVycmlkZSB0aGUgdG9fcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IHJvdXRpbmUuICAq LwpAQCAtMzIzMywxMCArMzE5NCwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9z cHUtbXVsdGlhcmNoLmMKICB7CiAgICBzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzX2JlbmVhdGggPSBm aW5kX3RhcmdldF9iZW5lYXRoICgmc3B1X29wcyk7CiAgICB3aGlsZSAob3BzX2JlbmVhdGggJiYg IW9wc19iZW5lYXRoLT50b19yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQpCi1JbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9zdGFjay5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9n ZGIvc3RhY2suYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9z dGFjay5jCTIwMTItMTEtMDcgMjI6MDM6NTcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9zdGFjay5jCTIwMTItMTEtMDcgMjI6MDk6MzAuMDI0MTQwNTE4ICswMTAw CistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9zdGFjay5jCTIwMTMtMDEtMTggMjM6 Mjc6MjIuMDk2NjAxMzYzICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc3RhY2su YwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg3MzYwNzM0NCArMDEwMAogQEAgLTE3Myw3ICsxNzMsNyBA QCBwcmludF9zdGFja19mcmFtZSAoc3RydWN0IGZyYW1lX2luZm8gKmZyCiAgICAgYXJndW1lbnQg KG5vdCBqdXN0IHRoZSBmaXJzdCBuYW1lbGVzcyBhcmd1bWVudCkuICAqLwogIApAQCAtMzI3NSwx MSArMzIzNiwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9zdGFjay5jCiAgCiAg ICAgICAgaWYgKGhpZ2hlc3Rfb2Zmc2V0ID09IC0xKQogIAlzdGFydCA9IGdkYmFyY2hfZnJhbWVf YXJnc19za2lwIChnZXRfZnJhbWVfYXJjaCAoZnJhbWUpKTsKLUluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL3N5bW1pc2MuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3N5bW1p c2MuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9zeW1taXNj LmMJMjAxMi0xMS0wNyAyMjowMDo0Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL3N5bW1pc2MuYwkyMDEyLTExLTA3IDIyOjA5OjMwLjAyNjE0MDUxNiArMDEwMAot QEAgLTUxNywxMSArNTE3LDExIEBAIHByaW50X3N5bWJvbCAodm9pZCAqYXJncykKKy0tLSBnZGIt Ny41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3N5bW1pc2MuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA5 NzYwMTM2NSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3N5bW1pc2MuYwkyMDEz LTAxLTE4IDIzOjI3OjI4Ljg3MzYwNzM0NCArMDEwMAorQEAgLTUyNCwxMSArNTI0LDExIEBAIHBy aW50X3N5bWJvbCAodm9pZCAqYXJncykKICAKICAJY2FzZSBMT0NfQ09OU1RfQllURVM6CiAgCSAg ewpAQCAtMzI5NCwxMCArMzI1NSwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9z eW1taXNjLmMKICAJICAgIGZvciAoaSA9IDA7IGkgPCBUWVBFX0xFTkdUSCAodHlwZSk7IGkrKykK ICAJICAgICAgZnByaW50Zl9maWx0ZXJlZCAob3V0ZmlsZSwgIiAlMDJ4IiwKICAJCQkJKHVuc2ln bmVkKSBTWU1CT0xfVkFMVUVfQllURVMgKHN5bWJvbClbaV0pOwotSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvdGFyZ2V0LmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90YXJn ZXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi90YXJnZXQu YwkyMDEyLTA3LTAyIDE3OjI5OjM1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvdGFyZ2V0LmMJMjAxMi0xMS0wNyAyMjowOTozMC4wMjkxNDA1MTEgKzAxMDAKKy0t LSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3RhcmdldC5jCTIwMTMtMDEtMTggMjM6Mjc6 MjIuMDk4NjAxMzY3ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGFyZ2V0LmMJ MjAxMy0wMS0xOCAyMzozMjozOS4xNTk5NDM2NzQgKzAxMDAKIEBAIC01MSw3ICs1MSw3IEBAIHN0 YXRpYyB2b2lkIGRlZmF1bHRfdGVybWluYWxfaW5mbyAoY2hhcgogIHN0YXRpYyBpbnQgZGVmYXVs dF93YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLAogIAkJ CQkJCSBDT1JFX0FERFIsIENPUkVfQUREUiwgaW50KTsKQEAgLTMzMTYsMTYgKzMyNzcsMTYgQEAg SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdGFyZ2V0LmMKICAKICBzdGF0aWMgaW50IGRl YnVnX3RvX2Nhbl9hY2NlbF93YXRjaHBvaW50X2NvbmRpdGlvbiAoQ09SRV9BRERSLCBpbnQsIGlu dCwKICAJCQkJCQkgICAgc3RydWN0IGV4cHJlc3Npb24gKik7Ci1AQCAtMzU0Niw3ICszNTQ2LDcg QEAgdGFyZ2V0X2ZpbGVpb19yZWFkX3N0cmFsbG9jIChjb25zdCBjaGFyCitAQCAtMzU1Miw3ICsz NTUyLDcgQEAgdGFyZ2V0X2ZpbGVpb19yZWFkX3N0cmFsbG9jIChjb25zdCBjaGFyCiAgCiAgCiAg c3RhdGljIGludAogLWRlZmF1bHRfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChDT1JFX0FE RFIgYWRkciwgaW50IGxlbikKICtkZWZhdWx0X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAo Q09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuKQogIHsKLSAgIHJldHVybiAobGVuIDw9IGdkYmFy Y2hfcHRyX2JpdCAodGFyZ2V0X2dkYmFyY2gpIC8gVEFSR0VUX0NIQVJfQklUKTsKKyAgIHJldHVy biAobGVuIDw9IGdkYmFyY2hfcHRyX2JpdCAodGFyZ2V0X2dkYmFyY2ggKCkpIC8gVEFSR0VUX0NI QVJfQklUKTsKICB9Ci1AQCAtNDE5Nyw3ICs0MTk3LDcgQEAgZGVidWdfdG9fY2FuX3VzZV9od19i cmVha3BvaW50IChpbnQgdHlwZQorQEAgLTQyNTMsNyArNDI1Myw3IEBAIGRlYnVnX3RvX2Nhbl91 c2VfaHdfYnJlYWtwb2ludCAoaW50IHR5cGUKICB9CiAgCiAgc3RhdGljIGludApAQCAtMzMzNCwx MSArMzI5NSwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi90YXJnZXQuYwogIHsK ICAgIENPUkVfQUREUiByZXR2YWw7CiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi90 YXJnZXQuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3RhcmdldC5oCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3RhcmdldC5oCTIwMTItMTEtMDcg MjI6MDA6NDMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi90YXJn ZXQuaAkyMDEyLTExLTA3IDIyOjA5OjMwLjA1NTE0MDQ3NCArMDEwMAotQEAgLTQ3OCw3ICs0Nzgs NyBAQCBzdHJ1Y3QgdGFyZ2V0X29wcworLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIv dGFyZ2V0LmgJMjAxMy0wMS0xOCAyMzoyNzoyMi4wOTk2MDEzNjkgKzAxMDAKKysrKyBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi90YXJnZXQuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg3NDYwNzM0NiAr MDEwMAorQEAgLTQ4Miw3ICs0ODIsNyBAQCBzdHJ1Y3QgdGFyZ2V0X29wcwogIAogICAgICAvKiBE b2N1bWVudGF0aW9uIG9mIHRoaXMgcm91dGluZSBpcyBwcm92aWRlZCB3aXRoIHRoZSBjb3JyZXNw b25kaW5nCiAgICAgICAgIHRhcmdldF8qIG1hY3JvLiAgKi8KQEAgLTMzNDcsMTAgKzMzMDgsMTAg QEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdGFyZ2V0LmgKICAKICAgICAgaW50ICgq dG9fY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uKSAoQ09SRV9BRERSLCBpbnQsIGludCwK ICAJCQkJCSAgICAgIHN0cnVjdCBleHByZXNzaW9uICopOwotSW5kZXg6IGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvdHJhY2Vwb2ludC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdHJh Y2Vwb2ludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3Ry YWNlcG9pbnQuYwkyMDEyLTExLTA3IDIyOjAzOjU3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvdHJhY2Vwb2ludC5jCTIwMTItMTEtMDcgMjI6MDk6MzAuMDY1MTQw NDU5ICswMTAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi90cmFjZXBvaW50LmMJ MjAxMy0wMS0xOCAyMzoyNzoyMi4xMDA2MDEzNzEgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMw MTE4L2dkYi90cmFjZXBvaW50LmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NzU2MDczNDkgKzAxMDAK IEBAIC05MzQsMTMgKzkzNCwxMyBAQCBhZGRfcmVnaXN0ZXIgKHN0cnVjdCBjb2xsZWN0aW9uX2xp c3QgKmNvCiAgc3RhdGljIHZvaWQKICBhZGRfbWVtcmFuZ2UgKHN0cnVjdCBjb2xsZWN0aW9uX2xp c3QgKm1lbXJhbmdlcywgCkBAIC0zNDIwLDcgKzMzODEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi90cmFjZXBvaW50LmMKICAJICBwcmludGZfdm1hIChvZmZzZXQpOwogIAkgIHBy aW50Zl9maWx0ZXJlZCAoIiBmcm9tIGZyYW1lIHB0ciByZWcgJWRcbiIsIHJlZyk7CiAgCX0KLUBA IC0yNjE3LDcgKzI2MTcsOCBAQCBzY29wZV9pbmZvIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkp CitAQCAtMjYyMCw3ICsyNjIwLDggQEAgc2NvcGVfaW5mbyAoY2hhciAqYXJncywgaW50IGZyb21f dHR5KQogICAgY29uc3QgY2hhciAqc3ltbmFtZTsKICAgIGNoYXIgKnNhdmVfYXJncyA9IGFyZ3M7 CiAgICBzdHJ1Y3QgYmxvY2tfaXRlcmF0b3IgaXRlcjsKQEAgLTM0MzAsNyArMzM5MSw3IEBAIElu ZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3RyYWNlcG9pbnQuYwogICAgc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2g7CiAgICBpbnQgcmVnbm87CiAgCi1AQCAtMjc0Nyw4ICsyNzQ4LDExIEBAIHNj b3BlX2luZm8gKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKK0BAIC0yNzUwLDggKzI3NTEsMTEg QEAgc2NvcGVfaW5mbyAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQogIAkgICAgICBicmVhazsK ICAJICAgIH0KICAJICBpZiAoU1lNQk9MX1RZUEUgKHN5bSkpCkBAIC0zNDQ0LDExICszNDA1LDEx IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3RyYWNlcG9pbnQuYwogIAl9CiAgICAg ICAgaWYgKEJMT0NLX0ZVTkNUSU9OIChibG9jaykpCiAgCWJyZWFrOwotSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvdHlwZXByaW50LmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi90eXBlcHJpbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dk Yi90eXBlcHJpbnQuYwkyMDEyLTExLTA3IDIyOjAwOjQxLjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvdHlwZXByaW50LmMJMjAxMi0xMS0wNyAyMjowOTozMC4wNjYx NDA0NTcgKzAxMDAKLUBAIC0xMjMsNyArMTIzLDcgQEAgd2hhdGlzX2V4cCAoY2hhciAqZXhwLCBp bnQgc2hvdykKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3R5cGVwcmludC5jCTIw MTMtMDEtMTggMjM6Mjc6MjguODc2NjA3MzUxICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvdHlwZXByaW50LmMJMjAxMy0wMS0xOCAyMzozMzowMi43MDI5NzM2MTAgKzAxMDAKK0BA IC00MDksNyArNDA5LDcgQEAgd2hhdGlzX2V4cCAoY2hhciAqZXhwLCBpbnQgc2hvdykKICAgIHN0 cnVjdCB0eXBlICpyZWFsX3R5cGUgPSBOVUxMOwogICAgc3RydWN0IHR5cGUgKnR5cGU7CiAgICBp bnQgZnVsbCA9IDA7CkBAIC0zNDU2LDEyICszNDE3LDEyIEBAIEluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL3R5cGVwcmludC5jCiArICBMT05HRVNUIHRvcCA9IC0xOwogICAgaW50IHVzaW5n X2VuYyA9IDA7CiAgICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOwotIAotSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsYXJpdGguYworICAgc3RydWN0IHR5cGVfcHJpbnRf b3B0aW9ucyBmbGFncyA9IGRlZmF1bHRfcHR5cGVfZmxhZ3M7CitJbmRleDogZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvdmFsYXJpdGguYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDky Ni5vcmlnL2dkYi92YWxhcml0aC5jCTIwMTItMTEtMDcgMjI6MDI6MTguMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxhcml0aC5jCTIwMTItMTEtMDcgMjI6MTM6 MzEuMTQ1ODY3NTE5ICswMTAwCi1AQCAtMTkyLDE1ICsxOTIsMTUgQEAgdmFsdWVfc3Vic2NyaXB0 IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMTworLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9n ZGIvdmFsYXJpdGguYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjEwMTYwMTM3MyArMDEwMAorKysrIGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL3ZhbGFyaXRoLmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NzY2 MDczNTEgKzAxMDAKK0BAIC0xOTAsMTUgKzE5MCwxNSBAQCB2YWx1ZV9zdWJzY3JpcHQgKHN0cnVj dCB2YWx1ZSAqYXJyYXksIExPCiAgICAgdG8gZG91YmxlcywgYnV0IG5vIGxvbmdlciBkb2VzLiAg Ki8KICAKICBzdHJ1Y3QgdmFsdWUgKgpAQCAtMzQ4MSw3ICszNDQyLDcgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvdmFsYXJpdGguYwogICAgc3RydWN0IHZhbHVlICp2OwogIAogICAg aWYgKGluZGV4IDwgbG93ZXJib3VuZCB8fCAoIVRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5E RUZJTkVEIChhcnJheV90eXBlKQotQEAgLTY3OCw3ICs2NzgsNyBAQCB2YWx1ZV9jb25jYXQgKHN0 cnVjdCB2YWx1ZSAqYXJnMSwgc3RydWN0CitAQCAtNjM2LDcgKzYzNiw3IEBAIHZhbHVlX2NvbmNh dCAoc3RydWN0IHZhbHVlICphcmcxLCBzdHJ1Y3QKICAgIHN0cnVjdCB2YWx1ZSAqaW52YWwxOwog ICAgc3RydWN0IHZhbHVlICppbnZhbDI7CiAgICBzdHJ1Y3QgdmFsdWUgKm91dHZhbCA9IE5VTEw7 CkBAIC0zNDkwLDcgKzM0NTEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxh cml0aC5jCiAgICBpbnQgY291bnQsIGlkeDsKICAgIGNoYXIgKnB0cjsKICAgIGNoYXIgaW5jaGFy OwotQEAgLTE0ODksNyArMTQ4OSw3IEBAIHZhbHVlX2Jpbm9wIChzdHJ1Y3QgdmFsdWUgKmFyZzEs IHN0cnVjdAorQEAgLTE0NDQsNyArMTQ0NCw3IEBAIHZhbHVlX2Jpbm9wIChzdHJ1Y3QgdmFsdWUg KmFyZzEsIHN0cnVjdAogIGludAogIHZhbHVlX2xvZ2ljYWxfbm90IChzdHJ1Y3QgdmFsdWUgKmFy ZzEpCiAgewpAQCAtMzQ5OSw3ICszNDYwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvdmFsYXJpdGguYwogICAgY29uc3QgZ2RiX2J5dGUgKnA7CiAgICBzdHJ1Y3QgdHlwZSAqdHlw ZTE7CiAgCi1AQCAtMTUyMCwxMSArMTUyMCwxMSBAQCB2YWx1ZV9sb2dpY2FsX25vdCAoc3RydWN0 IHZhbHVlICphcmcxKQorQEAgLTE0NzUsMTEgKzE0NzUsMTEgQEAgdmFsdWVfbG9naWNhbF9ub3Qg KHN0cnVjdCB2YWx1ZSAqYXJnMSkKICBzdGF0aWMgaW50CiAgdmFsdWVfc3RyY21wIChzdHJ1Y3Qg dmFsdWUgKmFyZzEsIHN0cnVjdCB2YWx1ZSAqYXJnMikKICB7CkBAIC0zNTE0LDEwICszNDc1LDEw IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbGFyaXRoLmMKICAKICAgIGZvciAo aSA9IDA7IGkgPCBsZW47IGkrKykKICAgICAgewotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvdmFsb3BzLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi92YWxvcHMuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi92YWxvcHMuYwkyMDEyLTEx LTA3IDIyOjA2OjM1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv dmFsb3BzLmMJMjAxMi0xMS0wNyAyMjowOTozMC4wNzQxNDA0NDUgKzAxMDAKKy0tLSBnZGItNy41 LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3ZhbG9wcy5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMTA0NjAx Mzc5ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdmFsb3BzLmMJMjAxMy0wMS0x OCAyMzoyNzoyOC44Nzc2MDczNTIgKzAxMDAKIEBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlu dCB0eXBlY21wIChpbnQgc3RhdGljcCwgaW50IHZhcgogIAkJICAgIHN0cnVjdCBmaWVsZCB0MVtd LCBzdHJ1Y3QgdmFsdWUgKnQyW10pOwogIApAQCAtMzY2MSw3ICszNjIyLDcgQEAgSW5kZXg6IGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsb3BzLmMKICAJCWludCBjaGFuZ2VkX2xlbjsKICAJCWdk Yl9ieXRlIGJ1ZmZlcltzaXplb2YgKExPTkdFU1QpXTsKICAJCWludCBvcHRpbSwgdW5hdmFpbDsK LUBAIC0xODkyLDcgKzE4OTQsNyBAQCB2YWx1ZV9hcnJheSAoaW50IGxvd2JvdW5kLCBpbnQgaGln aGJvdW5kCitAQCAtMTg5MSw3ICsxODkzLDcgQEAgdmFsdWVfYXJyYXkgKGludCBsb3dib3VuZCwg aW50IGhpZ2hib3VuZAogIHsKICAgIGludCBuZWxlbTsKICAgIGludCBpZHg7CkBAIC0zNjcwLDcg KzM2MzEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxvcHMuYwogICAgc3Ry dWN0IHZhbHVlICp2YWw7CiAgICBzdHJ1Y3QgdHlwZSAqYXJyYXl0eXBlOwogIAotQEAgLTIwODAs NyArMjA4Miw3IEBAIHR5cGVjbXAgKGludCBzdGF0aWNwLCBpbnQgdmFyYXJncywgaW50IG4KK0BA IC0yMDY2LDcgKzIwNjgsNyBAQCB0eXBlY21wIChpbnQgc3RhdGljcCwgaW50IHZhcmFyZ3MsIGlu dCBuCiAgCiAgc3RhdGljIHZvaWQKICB1cGRhdGVfc2VhcmNoX3Jlc3VsdCAoc3RydWN0IHZhbHVl ICoqcmVzdWx0X3B0ciwgc3RydWN0IHZhbHVlICp2LApAQCAtMzY3OSw3ICszNjQwLDcgQEAgSW5k ZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsb3BzLmMKICAJCSAgICAgIGNvbnN0IGNoYXIg Km5hbWUsIHN0cnVjdCB0eXBlICp0eXBlKQogIHsKICAgIGlmICh2ICE9IE5VTEwpCi1AQCAtMjEw NCwxMCArMjEwNiwxMCBAQCB1cGRhdGVfc2VhcmNoX3Jlc3VsdCAoc3RydWN0IHZhbHVlICoqcmVz CitAQCAtMjA5MCwxMCArMjA5MiwxMCBAQCB1cGRhdGVfc2VhcmNoX3Jlc3VsdCAoc3RydWN0IHZh bHVlICoqcmVzCiAgICAgbG9va3VwIGlzIGFtYmlndW91cy4gICovCiAgCiAgc3RhdGljIHZvaWQK QEAgLTM2OTIsNyArMzY1Myw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbG9w cy5jCiAgCQkJc3RydWN0IHR5cGUgKm91dGVybW9zdF90eXBlKQogIHsKICAgIGludCBpOwotQEAg LTIxNjIsNyArMjE2NCw3IEBAIGRvX3NlYXJjaF9zdHJ1Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5h bWUKK0BAIC0yMTQ4LDcgKzIxNTAsNyBAQCBkb19zZWFyY2hfc3RydWN0X2ZpZWxkIChjb25zdCBj aGFyICpuYW1lCiAgCQkgICA8dmFyaWFudCBmaWVsZD4uICAqLwogIAogIAkJc3RydWN0IHZhbHVl ICp2ID0gTlVMTDsKQEAgLTM3MDEsNyArMzY2Miw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL3ZhbG9wcy5jCiAgCiAgCQkvKiBUaGlzIGlzIHByZXR0eSBncm9zcy4gIEluIEcrKywg dGhlIG9mZnNldCBpbiBhbgogIAkJICAgYW5vbnltb3VzIHVuaW9uIGlzIHJlbGF0aXZlIHRvIHRo ZSBiZWdpbm5pbmcgb2YgdGhlCi1AQCAtMjIwMSw3ICsyMjAzLDcgQEAgZG9fc2VhcmNoX3N0cnVj dF9maWVsZCAoY29uc3QgY2hhciAqbmFtZQorQEAgLTIxODcsNyArMjE4OSw3IEBAIGRvX3NlYXJj aF9zdHJ1Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5hbWUKICAJCQkgICAgICYmIChzdHJjbXBfaXcg KG5hbWUsIAogIAkJCQkJICAgIFRZUEVfQkFTRUNMQVNTX05BTUUgKHR5cGUsIAogIAkJCQkJCQkJ IGkpKSA9PSAwKSk7CkBAIC0zNzEwLDcgKzM2NzEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi92YWxvcHMuYwogIAogICAgICAgIGlmIChCQVNFVFlQRV9WSUFfVklSVFVBTCAodHlw ZSwgaSkpCiAgCXsKLUBAIC0yMjc2LDExICsyMjc4LDExIEBAIGRvX3NlYXJjaF9zdHJ1Y3RfZmll bGQgKGNvbnN0IGNoYXIgKm5hbWUKK0BAIC0yMjYyLDExICsyMjY0LDExIEBAIGRvX3NlYXJjaF9z dHJ1Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5hbWUKICAgICBmaWVsZHMsIGxvb2sgZm9yIGEgYmFz ZWNsYXNzIG5hbWVkIE5BTUUuICAqLwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAtMzcy NCw3ICszNjg1LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsb3BzLmMKICAK ICAgIGRvX3NlYXJjaF9zdHJ1Y3RfZmllbGQgKG5hbWUsIGFyZzEsIG9mZnNldCwgdHlwZSwgbG9v a2luZ19mb3JfYmFzZWNsYXNzLAogIAkJCSAgJnJlc3VsdCwgJmJvZmZzZXQsIHR5cGUpOwotQEAg LTIyOTcsNyArMjI5OSw3IEBAIHNlYXJjaF9zdHJ1Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5hbWUs IHMKK0BAIC0yMjgzLDcgKzIyODUsNyBAQCBzZWFyY2hfc3RydWN0X2ZpZWxkIChjb25zdCBjaGFy ICpuYW1lLCBzCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCiAgc2VhcmNoX3N0cnVjdF9tZXRo b2QgKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCB2YWx1ZSAqKmFyZzFwLApAQCAtMzczMyw3ICsz Njk0LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsb3BzLmMKICAJCSAgICAg IGludCAqc3RhdGljX21lbWZ1bmNwLCBzdHJ1Y3QgdHlwZSAqdHlwZSkKICB7CiAgICBpbnQgaTsK LUBAIC0yMzYxLDkgKzIzNjMsOSBAQCBzZWFyY2hfc3RydWN0X21ldGhvZCAoY29uc3QgY2hhciAq bmFtZSwKK0BAIC0yMzQ3LDkgKzIzNDksOSBAQCBzZWFyY2hfc3RydWN0X21ldGhvZCAoY29uc3Qg Y2hhciAqbmFtZSwKICAKICAgIGZvciAoaSA9IFRZUEVfTl9CQVNFQ0xBU1NFUyAodHlwZSkgLSAx OyBpID49IDA7IGktLSkKICAgICAgewpAQCAtMzc0NSw3ICszNzA2LDcgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvdmFsb3BzLmMKICAKICAgICAgICBpZiAoQkFTRVRZUEVfVklBX1ZJ UlRVQUwgKHR5cGUsIGkpKQogIAl7Ci1AQCAtMjU0NSw4ICsyNTQ3LDggQEAgdmFsdWVfc3RydWN0 X2VsdCAoc3RydWN0IHZhbHVlICoqYXJncCwgcworQEAgLTI1MzEsOCArMjUzMyw4IEBAIHZhbHVl X3N0cnVjdF9lbHQgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIHMKICAKICBzdGF0aWMgc3RydWN0IGZu X2ZpZWxkICoKICBmaW5kX21ldGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUgKiphcmdwLCBjb25zdCBj aGFyICptZXRob2QsCkBAIC0zNzU2LDcgKzM3MTcsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi92YWxvcHMuYwogIHsKICAgIGludCBpOwogICAgc3RydWN0IGZuX2ZpZWxkICpmOwot QEAgLTI1NzksNyArMjU4MSw3IEBAIGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFy Z3AsIGMKK0BAIC0yNTY1LDcgKzI1NjcsNyBAQCBmaW5kX21ldGhvZF9saXN0IChzdHJ1Y3QgdmFs dWUgKiphcmdwLCBjCiAgICAvKiBOb3QgZm91bmQgaW4gb2JqZWN0LCBjaGVjayBpbiBiYXNlIHN1 Ym9iamVjdHMuICAqLwogICAgZm9yIChpID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0eXBlKSAtIDE7 IGkgPj0gMDsgaS0tKQogICAgICB7CkBAIC0zNzY1LDcgKzM3MjYsNyBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi92YWxvcHMuYwogIAogICAgICAgIGlmIChCQVNFVFlQRV9WSUFfVklS VFVBTCAodHlwZSwgaSkpCiAgCXsKLUBAIC0yNjE1LDcgKzI2MTcsNyBAQCBmaW5kX21ldGhvZF9s aXN0IChzdHJ1Y3QgdmFsdWUgKiphcmdwLCBjCitAQCAtMjYwMSw3ICsyNjAzLDcgQEAgZmluZF9t ZXRob2RfbGlzdCAoc3RydWN0IHZhbHVlICoqYXJncCwgYwogIHN0YXRpYyBzdHJ1Y3QgZm5fZmll bGQgKgogIHZhbHVlX2ZpbmRfb2xvYWRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3As IGNvbnN0IGNoYXIgKm1ldGhvZCwKICAJCQkgICAgICBpbnQgb2Zmc2V0LCBpbnQgKm51bV9mbnMs IApAQCAtMzc3NCw3ICszNzM1LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFs b3BzLmMKICB7CiAgICBzdHJ1Y3QgdHlwZSAqdDsKICAKLUBAIC0yNzA3LDcgKzI3MDksNyBAQCBm aW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdmFsdWUgKiphcmdzCitAQCAtMjY5Myw3ICsyNjk1 LDcgQEAgZmluZF9vdmVybG9hZF9tYXRjaCAoc3RydWN0IHZhbHVlICoqYXJncwogICAgLyogTnVt YmVyIG9mIG92ZXJsb2FkZWQgaW5zdGFuY2VzIGJlaW5nIGNvbnNpZGVyZWQuICAqLwogICAgaW50 IG51bV9mbnMgPSAwOwogICAgc3RydWN0IHR5cGUgKmJhc2V0eXBlID0gTlVMTDsKQEAgLTM3ODMs NyArMzc0NCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbG9wcy5jCiAgCiAg ICBzdHJ1Y3QgY2xlYW51cCAqYWxsX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFu dXAsIE5VTEwpOwogIAotQEAgLTM0MTMsNyArMzQxNSw3IEBAIGNvbXBhcmVfcGFyYW1ldGVycyAo c3RydWN0IHR5cGUgKnQxLCBzdHIKK0BAIC0zMzYzLDcgKzMzNjUsNyBAQCBjb21wYXJlX3BhcmFt ZXRlcnMgKHN0cnVjdCB0eXBlICp0MSwgc3RyCiAgICAgdGhlIGZvcm0gIkRPTUFJTjo6TkFNRSIu ICAqLwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAtMzc5Miw3ICszNzUzLDcgQEAgSW5k ZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsb3BzLmMKICAJCQkJc3RydWN0IHR5cGUgKmN1 cnR5cGUsIGNoYXIgKm5hbWUsCiAgCQkJCXN0cnVjdCB0eXBlICppbnR5cGUsIAogIAkJCQlpbnQg d2FudF9hZGRyZXNzLAotQEAgLTM0NTAsNyArMzQ1Miw3IEBAIHZhbHVlX3N0cnVjdF9lbHRfZm9y X3JlZmVyZW5jZSAoc3RydWN0IHQKK0BAIC0zNDAwLDcgKzM0MDIsNyBAQCB2YWx1ZV9zdHJ1Y3Rf ZWx0X2Zvcl9yZWZlcmVuY2UgKHN0cnVjdCB0CiAgCSAgaWYgKHdhbnRfYWRkcmVzcykKICAJICAg IHJldHVybiB2YWx1ZV9mcm9tX2xvbmdlc3QKICAJICAgICAgKGxvb2t1cF9tZW1iZXJwdHJfdHlw ZSAoVFlQRV9GSUVMRF9UWVBFICh0LCBpKSwgZG9tYWluKSwKQEAgLTM4MDEsNyArMzc2Miw3IEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbG9wcy5jCiAgCSAgZWxzZSBpZiAobm9z aWRlID09IEVWQUxfQVZPSURfU0lERV9FRkZFQ1RTKQogIAkgICAgcmV0dXJuIGFsbG9jYXRlX3Zh bHVlIChUWVBFX0ZJRUxEX1RZUEUgKHQsIGkpKTsKICAJICBlbHNlCi1AQCAtMzU5Myw3ICszNTk1 LDcgQEAgdmFsdWVfc3RydWN0X2VsdF9mb3JfcmVmZXJlbmNlIChzdHJ1Y3QgdAorQEAgLTM1NDMs NyArMzU0NSw3IEBAIHZhbHVlX3N0cnVjdF9lbHRfZm9yX3JlZmVyZW5jZSAoc3RydWN0IHQKICAg IGZvciAoaSA9IFRZUEVfTl9CQVNFQ0xBU1NFUyAodCkgLSAxOyBpID49IDA7IGktLSkKICAgICAg ewogICAgICAgIHN0cnVjdCB2YWx1ZSAqdjsKQEAgLTM4MTAsNyArMzc3MSw3IEBAIEluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbG9wcy5jCiAgCiAgICAgICAgaWYgKEJBU0VUWVBFX1ZJ QV9WSVJUVUFMICh0LCBpKSkKICAJYmFzZV9vZmZzZXQgPSAwOwotQEAgLTM2ODMsNyArMzY4NSw3 IEBAIHZhbHVlX21heWJlX25hbWVzcGFjZV9lbHQgKGNvbnN0IHN0cnVjdAorQEAgLTM2MzMsNyAr MzYzNSw3IEBAIHZhbHVlX21heWJlX25hbWVzcGFjZV9lbHQgKGNvbnN0IHN0cnVjdAogIAogIHN0 cnVjdCB0eXBlICoKICB2YWx1ZV9ydHRpX2luZGlyZWN0X3R5cGUgKHN0cnVjdCB2YWx1ZSAqdiwg aW50ICpmdWxsLCAKQEAgLTM4MTksNyArMzc4MCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL3ZhbG9wcy5jCiAgewogICAgc3RydWN0IHZhbHVlICp0YXJnZXQ7CiAgICBzdHJ1Y3Qg dHlwZSAqdHlwZSwgKnJlYWxfdHlwZSwgKnRhcmdldF90eXBlOwotQEAgLTM3MzMsMTIgKzM3MzUs MTIgQEAgdmFsdWVfcnR0aV9pbmRpcmVjdF90eXBlIChzdHJ1Y3QgdmFsdWUgKgorQEAgLTM2ODMs MTIgKzM2ODUsMTIgQEAgdmFsdWVfcnR0aV9pbmRpcmVjdF90eXBlIChzdHJ1Y3QgdmFsdWUgKgog IHN0cnVjdCB2YWx1ZSAqCiAgdmFsdWVfZnVsbF9vYmplY3QgKHN0cnVjdCB2YWx1ZSAqYXJncCwg CiAgCQkgICBzdHJ1Y3QgdHlwZSAqcnR5cGUsIApAQCAtMzgzNCwxMSArMzc5NSwxMSBAQCBJbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxvcHMuYwogICAgaW50IHVzaW5nX2VuYyA9IDA7 CiAgICBzdHJ1Y3QgdmFsdWUgKm5ld192YWw7CiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi92YWxwcmludC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdmFscHJpbnQu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi92YWxwcmludC5j CTIwMTItMTEtMDcgMjI6MDA6NDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi92YWxwcmludC5jCTIwMTItMTEtMDcgMjI6MTE6NDkuMzEzOTM4MTMzICswMTAwCi1A QCAtMjY0LDcgKzI2NCw3IEBAIHNjYWxhcl90eXBlX3AgKHN0cnVjdCB0eXBlICp0eXBlKQorLS0t IGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdmFscHJpbnQuYwkyMDEzLTAxLTE4IDIzOjI3 OjIyLjEwNTYwMTM4MCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3ZhbHByaW50 LmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44Nzc2MDczNTIgKzAxMDAKK0BAIC0yOTksNyArMjk5LDcg QEAgc2NhbGFyX3R5cGVfcCAoc3RydWN0IHR5cGUgKnR5cGUpCiAgaW50CiAgdmFscHJpbnRfY2hl Y2tfdmFsaWRpdHkgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgCQkJIHN0cnVjdCB0eXBlICp0 eXBlLApAQCAtMzg0Nyw3ICszODA4LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv dmFscHJpbnQuYwogIAkJCSBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCkKICB7CiAgICBDSEVDS19U WVBFREVGICh0eXBlKTsKLUBAIC0zMjgsNyArMzI4LDcgQEAgdmFsX3ByaW50X2ludmFsaWRfYWRk cmVzcyAoc3RydWN0IHVpX2ZpbAorQEAgLTM2Myw3ICszNjMsNyBAQCB2YWxfcHJpbnRfaW52YWxp ZF9hZGRyZXNzIChzdHJ1Y3QgdWlfZmlsCiAgCiAgdm9pZAogIGdlbmVyaWNfdmFsX3ByaW50IChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC0zODU2LDcgKzM4 MTcsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxwcmludC5jCiAgCQkgICBz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCSAgIGNvbnN0IHN0cnVjdCB2 YWx1ZSAqb3JpZ2luYWxfdmFsdWUsCiAgCQkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0 aW9ucyAqb3B0aW9ucywKLUBAIC02OTEsNyArNjkxLDcgQEAgZ2VuZXJpY192YWxfcHJpbnQgKHN0 cnVjdCB0eXBlICp0eXBlLCBjbworQEAgLTcyNiw3ICs3MjYsNyBAQCBnZW5lcmljX3ZhbF9wcmlu dCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvCiAgICAgUkVDVVJTRS4gICovCiAgCiAgdm9pZApAQCAt Mzg2NSw3ICszODI2LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFscHJpbnQu YwogIAkgICBDT1JFX0FERFIgYWRkcmVzcywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJl Y3Vyc2UsCiAgCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkgICBjb25zdCBzdHJ1Y3Qg dmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywKLUBAIC05MDMsNyArOTAzLDcgQEAgdmFsX3By aW50X3R5cGVfY29kZV9mbGFncyAoc3RydWN0IHR5cGUgKgorQEAgLTkzOCw3ICs5MzgsNyBAQCB2 YWxfcHJpbnRfdHlwZV9jb2RlX2ZsYWdzIChzdHJ1Y3QgdHlwZSAqCiAgCiAgdm9pZAogIHZhbF9w cmludF9zY2FsYXJfZm9ybWF0dGVkIChzdHJ1Y3QgdHlwZSAqdHlwZSwKQEAgLTM4NzQsNyArMzgz NSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHByaW50LmMKICAJCQkgICAg Y29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCiAgCQkJICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmlu dF9vcHRpb25zICpvcHRpb25zLAogIAkJCSAgICBpbnQgc2l6ZSwKLUBAIC0xNDQ0LDcgKzE0NDQs NyBAQCBwcmludF9kZWNpbWFsX2NoYXJzIChzdHJ1Y3QgdWlfZmlsZSAqc3RyCitAQCAtMTQ3OSw3 ICsxNDc5LDcgQEAgcHJpbnRfZGVjaW1hbF9jaGFycyAoc3RydWN0IHVpX2ZpbGUgKnN0cgogIAog IHZvaWQKICBwcmludF9oZXhfY2hhcnMgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLApAQCAtMzg4Myw3ICszODQ0LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvdmFscHJpbnQuYwogIHsKICAgIGNvbnN0IGdkYl9ieXRlICpwOwogIAotQEAg LTE1NjEsMjMgKzE1NjEsMjMgQEAgbWF5YmVfcHJpbnRfYXJyYXlfaW5kZXggKHN0cnVjdCB0eXBl ICppbgorQEAgLTE1OTYsMjMgKzE1OTYsMjMgQEAgbWF5YmVfcHJpbnRfYXJyYXlfaW5kZXggKHN0 cnVjdCB0eXBlICppbgogIAogIHZvaWQKICB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVj dCB0eXBlICp0eXBlLApAQCAtMzkxMyw3ICszODc0LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvdmFscHJpbnQuYwogICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7CiAg ICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKICAgIENPUkVfQUREUiBzYXZlZF9hZGRyZXNzID0g YWRkcmVzczsKLUBAIC0xNjcyLDcgKzE2NzIsNyBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMg KHN0cnVjdCB0eXBlICp0CitAQCAtMTcwNyw3ICsxNzA3LDcgQEAgdmFsX3ByaW50X2FycmF5X2Vs ZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdAogIAkJICAgICBhZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2Ug KyAxLCB2YWwsIG9wdGlvbnMsCiAgCQkgICAgIGN1cnJlbnRfbGFuZ3VhZ2UpOwogIAkgIGFubm90 YXRlX2VsdF9yZXAgKHJlcHMpOwpAQCAtMzkyMiw3ICszODgzLDcgQEAgSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvdmFscHJpbnQuYwogIAkgIGFubm90YXRlX2VsdF9yZXBfZW5kICgpOwog IAogIAkgIGkgPSByZXAxIC0gMTsKLUBAIC0yMDg1LDcgKzIwODUsNyBAQCBnZW5lcmljX2VtaXRf Y2hhciAoaW50IGMsIHN0cnVjdCB0eXBlICp0CitAQCAtMjM1OCw3ICsyMzU4LDcgQEAgcHJpbnRf Y29udmVydGVkX2NoYXJzX3RvX29ic3RhY2sgKHN0cnVjdAogIAogIHZvaWQKICBnZW5lcmljX3By aW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgCkBAIC0z OTMxLDExICszODkyLDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHByaW50 LmMKICAJCSAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGludCBmb3JjZV9lbGxpcHNlcywKICAJCSAg aW50IHF1b3RlX2NoYXIsIGludCBjX3N0eWxlX3Rlcm1pbmF0b3IsCiAgCQkgIGNvbnN0IHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvdmFscHJpbnQuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3ZhbHByaW50 LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvdmFscHJpbnQu aAkyMDEyLTA1LTE4IDE3OjMxOjQwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvdmFscHJpbnQuaAkyMDEyLTExLTA3IDIyOjA5OjMwLjA5MzE0MDQxOCArMDEwMAot QEAgLTExNywxMSArMTE3LDExIEBAIGV4dGVybiB2b2lkIG1heWJlX3ByaW50X2FycmF5X2luZGV4 IChzdHIKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3ZhbHByaW50LmgJMjAxMy0w MS0xOCAyMzoyNzoyMi4xMDY2MDEzODEgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi92YWxwcmludC5oCTIwMTMtMDEtMTggMjM6Mjc6MjguODc4NjA3MzUzICswMTAwCitAQCAtMTEz LDExICsxMTMsMTEgQEAgZXh0ZXJuIHZvaWQgbWF5YmVfcHJpbnRfYXJyYXlfaW5kZXggKHN0cgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3Ry ZWFtLAogIAkJCQkgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwogIApA QCAtMzk0OSw3ICszOTEwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFscHJp bnQuaAogIAogIGV4dGVybiB2b2lkIHZhbF9wcmludF90eXBlX2NvZGVfaW50IChzdHJ1Y3QgdHlw ZSAqLCBjb25zdCBnZGJfYnl0ZSAqLAogIAkJCQkgICAgIHN0cnVjdCB1aV9maWxlICopOwotQEAg LTEzMSw3ICsxMzEsNyBAQCBleHRlcm4gdm9pZCB2YWxfcHJpbnRfdHlwZV9jb2RlX2ZsYWdzIChz CitAQCAtMTI3LDcgKzEyNyw3IEBAIGV4dGVybiB2b2lkIHZhbF9wcmludF90eXBlX2NvZGVfZmxh Z3MgKHMKICAJCQkJICAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOwogIAogIGV4dGVybiB2 b2lkIHZhbF9wcmludF9zY2FsYXJfZm9ybWF0dGVkIChzdHJ1Y3QgdHlwZSAqLApAQCAtMzk1OCw3 ICszOTE5LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFscHJpbnQuaAogIAkJ CQkJY29uc3Qgc3RydWN0IHZhbHVlICosCiAgCQkJCQljb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRf b3B0aW9ucyAqLAogIAkJCQkJaW50LAotQEAgLTE0Nyw3ICsxNDcsNyBAQCBleHRlcm4gdm9pZCBw cmludF9kZWNpbWFsX2NoYXJzIChzdHJ1Y3QKK0BAIC0xNDMsNyArMTQzLDcgQEAgZXh0ZXJuIHZv aWQgcHJpbnRfZGVjaW1hbF9jaGFycyAoc3RydWN0CiAgCQkJCSB1bnNpZ25lZCBpbnQsIGVudW0g YmZkX2VuZGlhbik7CiAgCiAgZXh0ZXJuIHZvaWQgcHJpbnRfaGV4X2NoYXJzIChzdHJ1Y3QgdWlf ZmlsZSAqLCBjb25zdCBnZGJfYnl0ZSAqLApAQCAtMzk2Nyw3ICszOTI4LDcgQEAgSW5kZXg6IGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvdmFscHJpbnQuaAogIAogIGV4dGVybiB2b2lkIHByaW50X2No YXJfY2hhcnMgKHN0cnVjdCB1aV9maWxlICosIHN0cnVjdCB0eXBlICosCiAgCQkJICAgICAgY29u c3QgZ2RiX2J5dGUgKiwgdW5zaWduZWQgaW50LCBlbnVtIGJmZF9lbmRpYW4pOwotQEAgLTE5MSw3 ICsxOTEsNyBAQCBzdHJ1Y3QgZ2VuZXJpY192YWxfcHJpbnRfZGVjb3JhdGlvbnMKK0BAIC0xODgs NyArMTg4LDcgQEAgc3RydWN0IGdlbmVyaWNfdmFsX3ByaW50X2RlY29yYXRpb25zCiAgCiAgCiAg ZXh0ZXJuIHZvaWQgZ2VuZXJpY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBn ZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTM5NzYsNyArMzkzNyw3IEBAIEluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL3ZhbHByaW50LmgKICAJCQkgICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSwgaW50IHJlY3Vyc2UsCiAgCQkJICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqb3JpZ2luYWxf dmFsdWUsCiAgCQkJICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRp b25zLAotQEAgLTIwMSw3ICsyMDEsNyBAQCBleHRlcm4gdm9pZCBnZW5lcmljX2VtaXRfY2hhciAo aW50IGMsIHN0CitAQCAtMTk4LDcgKzE5OCw3IEBAIGV4dGVybiB2b2lkIGdlbmVyaWNfZW1pdF9j aGFyIChpbnQgYywgc3QKICAJCQkgICAgICAgaW50IHF1b3RlciwgY29uc3QgY2hhciAqZW5jb2Rp bmcpOwogIAogIGV4dGVybiB2b2lkIGdlbmVyaWNfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpz dHJlYW0sIHN0cnVjdCB0eXBlICp0eXBlLCAKQEAgLTM5ODUsMTAgKzM5NDYsMTAgQEAgSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFscHJpbnQuaAogIAkJCSAgICAgIGNvbnN0IGNoYXIg KmVuY29kaW5nLCBpbnQgZm9yY2VfZWxsaXBzZXMsCiAgCQkJICAgICAgaW50IHF1b3RlX2NoYXIs IGludCBjX3N0eWxlX3Rlcm1pbmF0b3IsCiAgCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgKm9wdGlvbnMpOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFs dWUuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3ZhbHVlLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvdmFsdWUuYwkyMDEyLTExLTA3IDIyOjAz OjU3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsdWUuYwky MDEyLTExLTA3IDIyOjA5OjMwLjA5NjE0MDQxNCArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAx MTgub3JpZy9nZGIvdmFsdWUuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjEwODYwMTM4NSArMDEwMAor KysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3ZhbHVlLmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44 Nzg2MDczNTMgKzAxMDAKIEBAIC02OCwxMCArNjgsMTAgQEAgc3RydWN0IGludGVybmFsX2Z1bmN0 aW9uCiAgc3RydWN0IHJhbmdlCiAgewpAQCAtNDEwMCw3ICs0MDYxLDcgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvdmFsdWUuYwogIHsKICAgIHZhbHVlLT5vZmZzZXQgPSBvZmZzZXQ7 CiAgfQotQEAgLTkyNCw4ICs5MjYsOSBAQCB2YWx1ZV9jb250ZW50c19hbGwgKHN0cnVjdCB2YWx1 ZSAqdmFsdWUpCitAQCAtOTI4LDggKzkzMCw5IEBAIHZhbHVlX2NvbnRlbnRzX2FsbCAoc3RydWN0 IHZhbHVlICp2YWx1ZSkKICAgICBEU1RfT0ZGU0VUK0xFTkdUSCkgcmFuZ2UgYXJlIHdob2xseSBh dmFpbGFibGUuICAqLwogIAogIHZvaWQKQEAgLTQxMTIsNyArNDA3Myw3IEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmMKICB7CiAgICByYW5nZV9zICpyOwogICAgaW50IGk7 Ci1AQCAtOTczLDggKzk3Niw4IEBAIHZhbHVlX2NvbnRlbnRzX2NvcHlfcmF3IChzdHJ1Y3QgdmFs dWUgKmQKK0BAIC05NzcsOCArOTgwLDggQEAgdmFsdWVfY29udGVudHNfY29weV9yYXcgKHN0cnVj dCB2YWx1ZSAqZAogICAgIERTVF9PRkZTRVQrTEVOR1RIKSByYW5nZSBhcmUgd2hvbGx5IGF2YWls YWJsZS4gICovCiAgCiAgdm9pZApAQCAtNDEyMyw3ICs0MDg0LDcgQEAgSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvdmFsdWUuYwogIHsKICAgIHJlcXVpcmVfbm90X29wdGltaXplZF9vdXQg KHNyYyk7CiAgCi1AQCAtMTA2OCw3ICsxMDcxLDcgQEAgdmFsdWVfZW50aXJlbHlfb3B0aW1pemVk X291dCAoY29uc3Qgc3RydQorQEAgLTEwNzIsNyArMTA3NSw3IEBAIHZhbHVlX2VudGlyZWx5X29w dGltaXplZF9vdXQgKGNvbnN0IHN0cnUKICB9CiAgCiAgaW50CkBAIC00MTMyLDcgKzQwOTMsNyBA QCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWx1ZS5jCiAgewogICAgaWYgKCF2YWx1 ZS0+b3B0aW1pemVkX291dCkKICAgICAgcmV0dXJuIDE7Ci1AQCAtMTA4MSw3ICsxMDg0LDcgQEAg dmFsdWVfYml0c192YWxpZCAoY29uc3Qgc3RydWN0IHZhbHVlICp2YQorQEAgLTEwODUsNyArMTA4 OCw3IEBAIHZhbHVlX2JpdHNfdmFsaWQgKGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmEKICAKICBpbnQK ICB2YWx1ZV9iaXRzX3N5bnRoZXRpY19wb2ludGVyIChjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbHVl LApAQCAtNDE0MSw3ICs0MTAyLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFs dWUuYwogIHsKICAgIGlmICh2YWx1ZS0+bHZhbCAhPSBsdmFsX2NvbXB1dGVkCiAgICAgICAgfHwg IXZhbHVlLT5sb2NhdGlvbi5jb21wdXRlZC5mdW5jcy0+Y2hlY2tfc3ludGhldGljX3BvaW50ZXIp Ci1AQCAtMTA5MSwyNiArMTA5NCwyNiBAQCB2YWx1ZV9iaXRzX3N5bnRoZXRpY19wb2ludGVyIChj b25zdCBzdHJ1CitAQCAtMTA5NSwyNiArMTA5OCwyNiBAQCB2YWx1ZV9iaXRzX3N5bnRoZXRpY19w b2ludGVyIChjb25zdCBzdHJ1CiAgCQkJCQkJCQkgIGxlbmd0aCk7CiAgfQogIApAQCAtNDE3Miw3 ICs0MTMzLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsdWUuYwogIHsKICAg IHZhbHVlLT5wb2ludGVkX3RvX29mZnNldCA9IHZhbDsKICB9Ci1AQCAtMTk3MCw3ICsxOTczLDcg QEAgZ2V0X2ludGVybmFsdmFyX2Z1bmN0aW9uIChzdHJ1Y3QgaW50ZXJuYQorQEAgLTE5NzQsNyAr MTk3Nyw3IEBAIGdldF9pbnRlcm5hbHZhcl9mdW5jdGlvbiAoc3RydWN0IGludGVybmEKICB9CiAg CiAgdm9pZApAQCAtNDE4MSw3ICs0MTQyLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvdmFsdWUuYwogIAkJCSAgIGludCBiaXRzaXplLCBzdHJ1Y3QgdmFsdWUgKm5ld3ZhbCkKICB7 CiAgICBnZGJfYnl0ZSAqYWRkcjsKLUBAIC0yNjcxLDcgKzI2NzQsNyBAQCBzZXRfdmFsdWVfZW5j bG9zaW5nX3R5cGUgKHN0cnVjdCB2YWx1ZSAqCitAQCAtMjY4MSw3ICsyNjg0LDcgQEAgc2V0X3Zh bHVlX2VuY2xvc2luZ190eXBlIChzdHJ1Y3QgdmFsdWUgKgogICAgIEZJRUxETk8gc2F5cyB3aGlj aCBmaWVsZC4gICovCiAgCiAgc3RydWN0IHZhbHVlICoKQEAgLTQxOTAsNyArNDE1MSw3IEBAIElu ZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmMKICAJCSAgICAgICBpbnQgZmllbGRu bywgc3RydWN0IHR5cGUgKmFyZ190eXBlKQogIHsKICAgIHN0cnVjdCB2YWx1ZSAqdjsKLUBAIC0y NzAxLDcgKzI3MDQsNyBAQCB2YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJn CitAQCAtMjcxMSw3ICsyNzE0LDcgQEAgdmFsdWVfcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3QgdmFs dWUgKmFyZwogIAkgYml0LiAgQXNzdW1lIHRoYXQgdGhlIGFkZHJlc3MsIG9mZnNldCwgYW5kIGVt YmVkZGVkIG9mZnNldAogIAkgYXJlIHN1ZmZpY2llbnRseSBhbGlnbmVkLiAgKi8KICAKQEAgLTQx OTksNyArNDE2MCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmMKICAg ICAgICBpbnQgY29udGFpbmVyX2JpdHNpemUgPSBUWVBFX0xFTkdUSCAodHlwZSkgKiA4OwogIAog ICAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5ICh0eXBlKTsKLUBAIC0yNzI0LDcgKzI3Mjcs NyBAQCB2YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnCitAQCAtMjczNCw3 ICsyNzM3LDcgQEAgdmFsdWVfcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKmFyZwogICAg ICAgIC8qIFRoaXMgZmllbGQgaXMgYWN0dWFsbHkgYSBiYXNlIHN1Ym9iamVjdCwgc28gcHJlc2Vy dmUgdGhlCiAgCSBlbnRpcmUgb2JqZWN0J3MgY29udGVudHMgZm9yIGxhdGVyIHJlZmVyZW5jZXMg dG8gdmlydHVhbAogIAkgYmFzZXMsIGV0Yy4gICovCkBAIC00MjA4LDcgKzQxNjksNyBAQCBJbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWx1ZS5jCiAgCiAgICAgICAgLyogTGF6eSByZWdp c3RlciB2YWx1ZXMgd2l0aCBvZmZzZXRzIGFyZSBub3Qgc3VwcG9ydGVkLiAgKi8KICAgICAgICBp ZiAoVkFMVUVfTFZBTCAoYXJnMSkgPT0gbHZhbF9yZWdpc3RlciAmJiB2YWx1ZV9sYXp5IChhcmcx KSkKLUBAIC0yODAxLDcgKzI4MDQsNyBAQCB2YWx1ZV9maWVsZCAoc3RydWN0IHZhbHVlICphcmcx LCBpbnQgZmllCitAQCAtMjgxMSw3ICsyODE0LDcgQEAgdmFsdWVfZmllbGQgKHN0cnVjdCB2YWx1 ZSAqYXJnMSwgaW50IGZpZQogIHN0cnVjdCB2YWx1ZSAqCiAgdmFsdWVfZm5fZmllbGQgKHN0cnVj dCB2YWx1ZSAqKmFyZzFwLCBzdHJ1Y3QgZm5fZmllbGQgKmYsCiAgCQlpbnQgaiwgc3RydWN0IHR5 cGUgKnR5cGUsCkBAIC00MjE3LDcgKzQxNzgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi92YWx1ZS5jCiAgewogICAgc3RydWN0IHZhbHVlICp2OwogICAgc3RydWN0IHR5cGUgKmZ0 eXBlID0gVFlQRV9GTl9GSUVMRF9UWVBFIChmLCBqKTsKLUBAIC0yODYxLDggKzI4NjQsOCBAQCB2 YWx1ZV9mbl9maWVsZCAoc3RydWN0IHZhbHVlICoqYXJnMXAsIHN0CitAQCAtMjg3MSw4ICsyODc0 LDggQEAgdmFsdWVfZm5fZmllbGQgKHN0cnVjdCB2YWx1ZSAqKmFyZzFwLCBzdAogIAogIHN0YXRp YyBpbnQKICB1bnBhY2tfdmFsdWVfYml0c19hc19sb25nXzEgKHN0cnVjdCB0eXBlICpmaWVsZF90 eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQyMjgsNyArNDE4OSw3IEBAIEluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmMKICAJCQkgICAgIExPTkdFU1QgKnJlc3Vs dCkKICB7CiAgICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRl ciAoZ2V0X3R5cGVfYXJjaCAoZmllbGRfdHlwZSkpOwotQEAgLTI4NzAsNyArMjg3Myw3IEBAIHVu cGFja192YWx1ZV9iaXRzX2FzX2xvbmdfMSAoc3RydWN0IHR5cGUKK0BAIC0yODgwLDcgKzI4ODMs NyBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19sb25nXzEgKHN0cnVjdCB0eXBlCiAgICBVTE9OR0VT VCB2YWxtYXNrOwogICAgaW50IGxzYmNvdW50OwogICAgaW50IGJ5dGVzX3JlYWQ7CkBAIC00MjM3 LDcgKzQxOTgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWx1ZS5jCiAgCiAg ICAvKiBSZWFkIHRoZSBtaW5pbXVtIG51bWJlciBvZiBieXRlcyByZXF1aXJlZDsgdGhlcmUgbWF5 IG5vdCBiZQogICAgICAgZW5vdWdoIGJ5dGVzIHRvIHJlYWQgYW4gZW50aXJlIFVMT05HRVNULiAg Ki8KLUBAIC0yOTQwLDcgKzI5NDMsNyBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19sb25nXzEgKHN0 cnVjdCB0eXBlCitAQCAtMjk1MCw3ICsyOTUzLDcgQEAgdW5wYWNrX3ZhbHVlX2JpdHNfYXNfbG9u Z18xIChzdHJ1Y3QgdHlwZQogIAogIGludAogIHVucGFja192YWx1ZV9iaXRzX2FzX2xvbmcgKHN0 cnVjdCB0eXBlICpmaWVsZF90eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQyNDYs NyArNDIwNyw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmMKICAJCQkg ICBjb25zdCBzdHJ1Y3QgdmFsdWUgKm9yaWdpbmFsX3ZhbHVlLAogIAkJCSAgIExPTkdFU1QgKnJl c3VsdCkKICB7Ci1AQCAtMjk1OCwxMCArMjk2MSwxMCBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19s b25nIChzdHJ1Y3QgdHlwZSAqCitAQCAtMjk2OCwxMCArMjk3MSwxMCBAQCB1bnBhY2tfdmFsdWVf Yml0c19hc19sb25nIChzdHJ1Y3QgdHlwZSAqCiAgCiAgc3RhdGljIGludAogIHVucGFja192YWx1 ZV9maWVsZF9hc19sb25nXzEgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFs YWRkciwKQEAgLTQyNTksNyArNDIyMCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L3ZhbHVlLmMKICAgIGludCBiaXRzaXplID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlLCBmaWVs ZG5vKTsKICAgIHN0cnVjdCB0eXBlICpmaWVsZF90eXBlID0gVFlQRV9GSUVMRF9UWVBFICh0eXBl LCBmaWVsZG5vKTsKICAKLUBAIC0yOTc3LDcgKzI5ODAsNyBAQCB1bnBhY2tfdmFsdWVfZmllbGRf YXNfbG9uZ18xIChzdHJ1Y3QgdHlwCitAQCAtMjk4Nyw3ICsyOTkwLDcgQEAgdW5wYWNrX3ZhbHVl X2ZpZWxkX2FzX2xvbmdfMSAoc3RydWN0IHR5cAogIAogIGludAogIHVucGFja192YWx1ZV9maWVs ZF9hc19sb25nIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBA IC00MjY4LDcgKzQyMjksNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWx1ZS5j CiAgCQkJICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLCBMT05HRVNUICpyZXN1bHQpCiAgewog ICAgZ2RiX2Fzc2VydCAodmFsICE9IE5VTEwpOwotQEAgLTMwMDksNyArMzAxMiw3IEBAIHVucGFj a19maWVsZF9hc19sb25nIChzdHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC0zMDE5LDcgKzMwMjIsNyBA QCB1bnBhY2tfZmllbGRfYXNfbG9uZyAoc3RydWN0IHR5cGUgKnR5cGUsCiAgc3RydWN0IHZhbHVl ICoKICB2YWx1ZV9maWVsZF9iaXRmaWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGludCBmaWVsZG5v LAogIAkJICAgICAgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC00Mjc3LDcgKzQyMzgsNyBA QCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWx1ZS5jCiAgewogICAgTE9OR0VTVCBs OwogIAotQEAgLTMwMzYsMTIgKzMwMzksMTIgQEAgdmFsdWVfZmllbGRfYml0ZmllbGQgKHN0cnVj dCB0eXBlICp0eXBlLAorQEAgLTMwNDYsMTIgKzMwNDksMTIgQEAgdmFsdWVfZmllbGRfYml0Zmll bGQgKHN0cnVjdCB0eXBlICp0eXBlLAogIAogIHZvaWQKICBtb2RpZnlfZmllbGQgKHN0cnVjdCB0 eXBlICp0eXBlLCBnZGJfYnl0ZSAqYWRkciwKQEAgLTQyOTIsMTAgKzQyNTMsMTAgQEAgSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsdWUuYwogIAogICAgLyogTm9ybWFsaXplIEJJVFBP Uy4gICovCiAgICBhZGRyICs9IGJpdHBvcyAvIDg7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi92YWx1ZS5oCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdmFsdWUuaAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi92YWx1ZS5oCTIwMTItMTEt MDcgMjI6MDA6NDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92 YWx1ZS5oCTIwMTItMTEtMDcgMjI6MDk6MzAuMTA0MTQwNDAzICswMTAwCistLS0gZ2RiLTcuNS41 MC4yMDEzMDExOC5vcmlnL2dkYi92YWx1ZS5oCTIwMTMtMDEtMTggMjM6Mjc6MjIuMTA5NjAxMzg3 ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdmFsdWUuaAkyMDEzLTAxLTE4IDIz OjI3OjI4Ljg3OTYwNzM1NSArMDEwMAogQEAgLTgyLDggKzgyLDggQEAgZXh0ZXJuIHZvaWQgc2V0 X3ZhbHVlX3BhcmVudCAoc3RydWN0IHZhbAogICAgIHdpdGhpbiB0aGUgcmVnaXN0ZXJzIHN0cnVj dHVyZS4gIE5vdGUgYWxzbyB0aGUgbWVtYmVyCiAgICAgZW1iZWRkZWRfb2Zmc2V0IGJlbG93LiAg Ki8KQEAgLTQ0NDAsNyArNDQwMSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3Zh bHVlLmgKICAJCQkJCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsKTsKICAKICBleHRlcm4gdm9p ZCBwYWNrX2xvbmcgKGdkYl9ieXRlICpidWYsIHN0cnVjdCB0eXBlICp0eXBlLCBMT05HRVNUIG51 bSk7Ci1AQCAtNTc4LDEyICs1ODAsMTIgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqZGVmYXVsdF9y ZWFkX3Zhcl92YQorQEAgLTU3OSwxMiArNTgxLDEyIEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKmRl ZmF1bHRfcmVhZF92YXJfdmEKICBleHRlcm4gc3RydWN0IHZhbHVlICphbGxvY2F0ZV92YWx1ZSAo c3RydWN0IHR5cGUgKnR5cGUpOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKmFsbG9jYXRlX3ZhbHVl X2xhenkgKHN0cnVjdCB0eXBlICp0eXBlKTsKICBleHRlcm4gdm9pZCBhbGxvY2F0ZV92YWx1ZV9j b250ZW50cyAoc3RydWN0IHZhbHVlICp2YWx1ZSk7CkBAIC00NDU5LDcgKzQ0MjAsNyBAQCBJbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWx1ZS5oCiAgCiAgZXh0ZXJuIHN0cnVjdCB2YWx1 ZSAqYWxsb2NhdGVfcmVwZWF0X3ZhbHVlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IGNvdW50KTsK ICAKLUBAIC02NTcsMTYgKzY1OSwxNiBAQCBleHRlcm4gaW50IGZpbmRfb3ZlcmxvYWRfbWF0Y2gg KHN0cnVjdCB2CitAQCAtNjU2LDE2ICs2NTgsMTYgQEAgZXh0ZXJuIGludCBmaW5kX292ZXJsb2Fk X21hdGNoIChzdHJ1Y3QgdgogIAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2ZpZWxkIChz dHJ1Y3QgdmFsdWUgKmFyZzEsIGludCBmaWVsZG5vKTsKICAKQEAgLTQ0NzksNyArNDQ0MCw3IEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmgKICAKICBleHRlcm4gc3RydWN0 IHZhbHVlICp2YWx1ZV9jYXN0X3BvaW50ZXJzIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdmFsdWUg KiwgaW50KTsKICAKLUBAIC03NTYsNyArNzU4LDcgQEAgZXh0ZXJuIHZvaWQgc2V0X2ludGVybmFs dmFyX3N0cmluZyAoc3RydQorQEAgLTc1NSw3ICs3NTcsNyBAQCBleHRlcm4gdm9pZCBzZXRfaW50 ZXJuYWx2YXJfc3RyaW5nIChzdHJ1CiAgZXh0ZXJuIHZvaWQgY2xlYXJfaW50ZXJuYWx2YXIgKHN0 cnVjdCBpbnRlcm5hbHZhciAqdmFyKTsKICAKICBleHRlcm4gdm9pZCBzZXRfaW50ZXJuYWx2YXJf Y29tcG9uZW50IChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwKQEAgLTQ0ODgsNyArNDQ0OSw3IEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmgKICAJCQkJICAgICAgIGludCBi aXRwb3MsIGludCBiaXRzaXplLAogIAkJCQkgICAgICAgc3RydWN0IHZhbHVlICpuZXd2YWx1ZSk7 CiAgCi1AQCAtODM4LDcgKzg0MCw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3hfdW5v cCAoc3RydWMKK0BAIC04MzcsNyArODM5LDcgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVf eF91bm9wIChzdHJ1YwogIAkJCQkgICBlbnVtIG5vc2lkZSBub3NpZGUpOwogIAogIGV4dGVybiBz dHJ1Y3QgdmFsdWUgKnZhbHVlX2ZuX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKiphcmcxcCwgc3RydWN0 IGZuX2ZpZWxkICpmLApAQCAtNDQ5Nyw3ICs0NDU4LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvdmFsdWUuaAogIAogIGV4dGVybiBpbnQgYmlub3BfdHlwZXNfdXNlcl9kZWZpbmVk X3AgKGVudW0gZXhwX29wY29kZSBvcCwKICAJCQkJICAgICAgIHN0cnVjdCB0eXBlICp0eXBlMSwK LUBAIC04NjYsNyArODY4LDggQEAgZXh0ZXJuIHZvaWQgcmVsZWFzZV92YWx1ZV9vcl9pbmNyZWYg KHN0cgorQEAgLTg2NSw3ICs4NjcsOCBAQCBleHRlcm4gdm9pZCByZWxlYXNlX3ZhbHVlX29yX2lu Y3JlZiAoc3RyCiAgZXh0ZXJuIGludCByZWNvcmRfbGF0ZXN0X3ZhbHVlIChzdHJ1Y3QgdmFsdWUg KnZhbCk7CiAgCiAgZXh0ZXJuIHZvaWQgbW9kaWZ5X2ZpZWxkIChzdHJ1Y3QgdHlwZSAqdHlwZSwg Z2RiX2J5dGUgKmFkZHIsCkBAIC00NTA3LDcgKzQ0NjgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi92YWx1ZS5oCiAgCiAgZXh0ZXJuIHZvaWQgdHlwZV9wcmludCAoc3RydWN0IHR5 cGUgKnR5cGUsIGNvbnN0IGNoYXIgKnZhcnN0cmluZywKICAJCQlzdHJ1Y3QgdWlfZmlsZSAqc3Ry ZWFtLCBpbnQgc2hvdyk7Ci1AQCAtODk2LDcgKzg5OSw3IEBAIGV4dGVybiB2b2lkIHZhbHVlX3By aW50X2FycmF5X2VsZW1lbnRzICgKK0BAIC04OTUsNyArODk4LDcgQEAgZXh0ZXJuIHZvaWQgdmFs dWVfcHJpbnRfYXJyYXlfZWxlbWVudHMgKAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3Jl bGVhc2VfdG9fbWFyayAoc3RydWN0IHZhbHVlICptYXJrKTsKICAKICBleHRlcm4gdm9pZCB2YWxf cHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQ1 MTYsNyArNDQ3Nyw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmgKICAJ CSAgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCSAgICAgICBj b25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKICAJCSAgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJp bnRfb3B0aW9ucyAqb3B0aW9ucywKLUBAIC05NDcsMTAgKzk1MCwxMSBAQCBleHRlcm4gc3RydWN0 IHZhbHVlICp2YWx1ZV9saXRlcmFsX2NvbXBsCitAQCAtOTQ0LDEwICs5NDcsMTEgQEAgZXh0ZXJu IHN0cnVjdCB2YWx1ZSAqdmFsdWVfbGl0ZXJhbF9jb21wbAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUg KmZpbmRfZnVuY3Rpb25faW5faW5mZXJpb3IgKGNvbnN0IGNoYXIgKiwKICAJCQkJCQlzdHJ1Y3Qg b2JqZmlsZSAqKik7CiAgCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIxb2Yy NS5wYXRjaCBiL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMW9mMjUucGF0Y2gKaW5kZXggMGFlYTVl Zi4uODExMjRmYiAxMDA2NDQKLS0tIGEvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIxb2YyNS5wYXRj aAorKysgYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjFvZjI1LnBhdGNoCkBAIC01MiwxMCArNTIs MTAgQEAgQ29udGVudC1UeXBlOiB0ZXh0L3gtcGF0Y2gKIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rp bmc6IDdiaXQKIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPWJpdHBv cy1lbnN1cmUtc2l6ZV90LnBhdGNoCiAKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2Fs cGhhLXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2FscGhhLXRkZXAuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9hbHBoYS10ZGVwLmMJ MjAxMi0xMS0wNyAyMjowMzo1Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL2FscGhhLXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ2OjAwLjA0MjkwMjM4MiArMDEwMAor LS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvYWxwaGEtdGRlcC5jCTIwMTMtMDEtMTgg MjM6MzM6NTkuMjc3MDQ3MzI0ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYWxw aGEtdGRlcC5jCTIwMTMtMDEtMTggMjM6MzQ6MDIuNjc4MDUxODQ2ICswMTAwCiBAQCAtNDE0LDYg KzQxNCwxMyBAQCBhbHBoYV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnCiAgICAg IGFjY3VtdWxhdGVfc2l6ZSA9IDA7CiAgICBlbHNlCkBAIC03MCwxMSArNzAsMTEgQEAgSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWxwaGEtdGRlcC5jCiAgICBzcCAtPSBhY2N1bXVsYXRl X3NpemU7CiAgCiAgICAvKiBLZWVwIHNwIGFsaWduZWQgdG8gYSBtdWx0aXBsZSBvZiAxNiBhcyB0 aGUgQUJJIHJlcXVpcmVzLiAgKi8KLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2NwLXZh bHByaW50LmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9jcC12YWxwcmludC5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2NwLXZhbHByaW50LmMJ MjAxMi0xMS0wNyAyMjoxMjoxNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL2NwLXZhbHByaW50LmMJMjAxMi0xMS0wNyAyMjo0NjowMC4wNDM5MDIzODEgKzAxMDAK LUBAIC01NjEsNiArNTYxLDggQEAgY3BfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICp0eXBlLCBz dHJ1YworLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvY3AtdmFscHJpbnQuYwkyMDEz LTAxLTE4IDIzOjMzOjU5LjI3ODA0NzMyNiArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL2NwLXZhbHByaW50LmMJMjAxMy0wMS0xOCAyMzozNDowMi42NzkwNTE4NDggKzAxMDAKK0BA IC01NDAsNiArNTQwLDggQEAgY3BfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1 YwogIAkJICBnZGJfYnl0ZSAqYnVmOwogIAkJICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKICAK QEAgLTgzLDEwICs4MywxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jcC12YWxw cmludC5jCiAgCQkgIGJ1ZiA9IHhtYWxsb2MgKFRZUEVfTEVOR1RIIChiYXNlY2xhc3MpKTsKICAJ CSAgYmFja190byA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGJ1Zik7CiAgCi1JbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9kd2FyZjJsb2MuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL2R3YXJmMmxvYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcv Z2RiL2R3YXJmMmxvYy5jCTIwMTItMTEtMDcgMjI6MDk6MjkuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9kd2FyZjJsb2MuYwkyMDEyLTExLTA3IDIyOjQ2OjAwLjA3 MDkwMjM0MiArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvZHdhcmYybG9j LmMJMjAxMy0wMS0xOCAyMzozMzo1OS4yODAwNDczMzIgKzAxMDAKKysrKyBnZGItNy41LjUwLjIw MTMwMTE4L2dkYi9kd2FyZjJsb2MuYwkyMDEzLTAxLTE4IDIzOjM0OjAyLjY4MDA1MTg1MSArMDEw MAogQEAgLTE3ODQsNiArMTc4NCw4IEBAIHJlYWRfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUg KnYpCiAgCiAgICAgICAgdGhpc19zaXplID0gKHRoaXNfc2l6ZV9iaXRzICsgc291cmNlX29mZnNl dF9iaXRzICUgOCArIDcpIC8gODsKQEAgLTEwNCwxMCArMTA0LDEwIEBAIEluZGV4OiBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL2R3YXJmMmxvYy5jCiAgCSAgaWYgKGJ1ZmZlcl9zaXplIDwgdGhpc19z aXplKQogIAkgICAgewogIAkgICAgICBidWZmZXJfc2l6ZSA9IHRoaXNfc2l6ZTsKLUluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2ZpbmRjbWQuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL2ZpbmRjbWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmln L2dkYi9maW5kY21kLmMJMjAxMi0xMS0wNyAyMjowMzo1Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2ZpbmRjbWQuYwkyMDEyLTExLTA3IDIyOjQ2OjAwLjE1Mzkw MjI0OSArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvZmluZGNtZC5jCTIw MTMtMDEtMTggMjM6MzM6NTkuMjgwMDQ3MzMyICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvZmluZGNtZC5jCTIwMTMtMDEtMTggMjM6MzQ6MDIuNjgwMDUxODUxICswMTAwCiBAQCAt MTg3LDYgKzE4Nyw3IEBAIHBhcnNlX2ZpbmRfYXJncyAoY2hhciAqYXJncywgVUxPTkdFU1QgKm0K ICAJICBzaXplX3QgY3VycmVudF9vZmZzZXQgPSBwYXR0ZXJuX2J1Zl9lbmQgLSBwYXR0ZXJuX2J1 ZjsKICAKQEAgLTExNiwxMSArMTE2LDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L2ZpbmRjbWQuYwogIAkgIHBhdHRlcm5fYnVmID0geHJlYWxsb2MgKHBhdHRlcm5fYnVmLCBwYXR0 ZXJuX2J1Zl9zaXplKTsKICAJICBwYXR0ZXJuX2J1Zl9lbmQgPSBwYXR0ZXJuX2J1ZiArIGN1cnJl bnRfb2Zmc2V0OwogIAl9Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wLXZhbHByaW50 LmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9wLXZhbHByaW50LmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvcC12YWxwcmludC5jCTIwMTItMTEt MDcgMjI6MDk6MjkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9w LXZhbHByaW50LmMJMjAxMi0xMS0wNyAyMjo0NjowMC4xNjM5MDIyMDggKzAxMDAKLUBAIC04Mjcs NiArODI3LDcgQEAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZSAoc3RydWN0IHR5cGUgKgorLS0t IGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvcC12YWxwcmludC5jCTIwMTMtMDEtMTggMjM6 MzM6NTkuMjgxMDQ3MzM0ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcC12YWxw cmludC5jCTIwMTMtMDEtMTggMjM6MzQ6MDIuNjgwMDUxODUxICswMTAwCitAQCAtNzk3LDYgKzc5 Nyw3IEBAIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICoKICAJICAgICAg Z2RiX2J5dGUgKmJ1ZjsKICAJICAgICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAgCkBAIC0x MjgsMTEgKzEyOCwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wLXZhbHByaW50 LmMKICAJICAgICAgYnVmID0geG1hbGxvYyAoVFlQRV9MRU5HVEggKGJhc2VjbGFzcykpOwogIAkg ICAgICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgYnVmKTsKICAKLUluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL3V0aWxzLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi91dGlscy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3V0 aWxzLmMJMjAxMi0xMS0wNyAyMjowMDo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL3V0aWxzLmMJMjAxMi0xMS0wNyAyMjo0NjowMC4xNjY5MDIyMDIgKzAxMDAK LUBAIC0zMTM1LDYgKzMxMzUsMTggQEAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoY29uc3Qgdm9p ZCAqYWRkcgorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdXRpbHMuYwkyMDEzLTAx LTE4IDIzOjMzOjU5LjI4MjA0NzMzNiArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L3V0aWxzLmMJMjAxMy0wMS0xOCAyMzozNDowMi42ODEwNTE4NTQgKzAxMDAKK0BAIC0zMjE5LDYg KzMyMTksMTggQEAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoY29uc3Qgdm9pZCAqYWRkcgogICAg cmV0dXJuIHN0cjsKICB9CiAgCkBAIC0xNTEsMTEgKzE1MSwxMSBAQCBJbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi91dGlscy5jCiAgY2hhciAqCiAgZ2RiX3JlYWxwYXRoIChjb25zdCBjaGFy ICpmaWxlbmFtZSkKICB7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxvcHMuYwor SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3ZhbG9wcy5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3ZhbG9wcy5jCTIwMTItMTEtMDcgMjI6MDk6MzAu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxvcHMuYwkyMDEy LTExLTA3IDIyOjQ2OjAwLjE4MTkwMjE4MSArMDEwMAotQEAgLTIzODMsNiArMjM4Myw3IEBAIHNl YXJjaF9zdHJ1Y3RfbWV0aG9kIChjb25zdCBjaGFyICpuYW1lLAorLS0tIGdkYi03LjUuNTAuMjAx MzAxMTgub3JpZy9nZGIvdmFsb3BzLmMJMjAxMy0wMS0xOCAyMzozMzo1OS4yODMwNDczMzggKzAx MDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi92YWxvcHMuYwkyMDEzLTAxLTE4IDIzOjM0 OjAyLjY4MjA1MTg1NiArMDEwMAorQEAgLTIzNjksNiArMjM2OSw3IEBAIHNlYXJjaF9zdHJ1Y3Rf bWV0aG9kIChjb25zdCBjaGFyICpuYW1lLAogIAkgICAgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190 bzsKICAJICAgICAgQ09SRV9BRERSIGFkZHJlc3M7CiAgCkBAIC0xNjMsMTAgKzE2MywxMCBAQCBJ bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxvcHMuYwogIAkgICAgICB0bXAgPSB4bWFs bG9jIChUWVBFX0xFTkdUSCAoYmFzZWNsYXNzKSk7CiAgCSAgICAgIGJhY2tfdG8gPSBtYWtlX2Ns ZWFudXAgKHhmcmVlLCB0bXApOwogIAkgICAgICBhZGRyZXNzID0gdmFsdWVfYWRkcmVzcyAoKmFy ZzFwKTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmMKK0luZGV4OiBnZGIt Ny41LjUwLjIwMTMwMTE4L2dkYi92YWx1ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIw MTIwOTI2Lm9yaWcvZ2RiL3ZhbHVlLmMJMjAxMi0xMS0wNyAyMjowOTozMC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmMJMjAxMi0xMS0wNyAyMjo0Njow MC4xODQ5MDIxNzYgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3ZhbHVl LmMJMjAxMy0wMS0xOCAyMzozMzo1OS4yODUwNDczNDIgKzAxMDAKKysrKyBnZGItNy41LjUwLjIw MTMwMTE4L2dkYi92YWx1ZS5jCTIwMTMtMDEtMTggMjM6MzQ6MDIuNjgzMDUxODU4ICswMTAwCiBA QCAtNjYzLDYgKzY2Myw3IEBAIGFsbG9jYXRlX3ZhbHVlX2xhenkgKHN0cnVjdCB0eXBlICp0eXBl KQogICAgICAgZGVzY3JpcHRpb24gY29ycmVjdGx5LiAgKi8KICAgIGNoZWNrX3R5cGVkZWYgKHR5 cGUpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3Zh bHVlLmMKICAgIGlmICghdmFsLT5jb250ZW50cykKICAgICAgdmFsLT5jb250ZW50cyA9IChnZGJf Ynl0ZSAqKSB4emFsbG9jIChUWVBFX0xFTkdUSCAodmFsLT5lbmNsb3NpbmdfdHlwZSkpOwogIH0K LUBAIC0yNjYyLDggKzI2NjUsMTIgQEAgdm9pZAorQEAgLTI2NzIsOCArMjY3NSwxMiBAQCB2b2lk CiAgc2V0X3ZhbHVlX2VuY2xvc2luZ190eXBlIChzdHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHR5 cGUgKm5ld19lbmNsX3R5cGUpCiAgewogICAgaWYgKFRZUEVfTEVOR1RIIChuZXdfZW5jbF90eXBl KSA+IFRZUEVfTEVOR1RIICh2YWx1ZV9lbmNsb3NpbmdfdHlwZSAodmFsKSkpIApAQCAtMTk5LDI1 ICsxOTksMjUgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsdWUuYwogIAogICAg dmFsLT5lbmNsb3NpbmdfdHlwZSA9IG5ld19lbmNsX3R5cGU7CiAgfQotSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvdmF4LXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L3ZheC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIv dmF4LXRkZXAuYwkyMDEyLTExLTA3IDIyOjA5OjI0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvdmF4LXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ2OjU2LjgxMDgxOTg3 OCArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdmF4LXRkZXAuYwkyMDEz LTAxLTE4IDIzOjM0OjAyLjY4MzA1MTg1OCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL3ZheC10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNDozNC45NTAwOTQxOTggKzAxMDAKIEBAIC0y MjMsNiArMjIzLDcgQEAgdmF4X3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyYwog IAkgIFVMT05HRVNUIGFkZHI7CiAgCiAgCSAgcmVnY2FjaGVfcmF3X3JlYWRfdW5zaWduZWQgKHJl Z2NhY2hlLCBWQVhfUjBfUkVHTlVNLCAmYWRkcik7CiArCSAgdWxvbmdlc3RfZml0c19ob3N0X29y X2Vycm9yIChUWVBFX0xFTkdUSCAodHlwZSkpOwotIAkgIHJlYWRfbWVtb3J5IChhZGRyLCByZWFk YnVmLCBUWVBFX0xFTkdUSCAodHlwZSkpOworIAkgIHJlYWRfbWVtb3J5IChhZGRyLCByZWFkYnVm LCBsZW4pOwogIAl9CiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9kZWZzLmgKK0lu ZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9kZWZzLmgKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny41LjAuMjAxMjA5MjYub3JpZy9nZGIvZGVmcy5oCTIwMTItMTEtMDcgMjI6MDA6NDMuMTExOTA2 MTA5ICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9kZWZzLmgJMjAxMi0xMS0wNyAy Mjo0Nzo0Ni4wMDEwMDEyMzkgKzAxMDAKLUBAIC0xMTcwLDQgKzExNzAsNiBAQCBlbnVtIGJsb2Nr X2VudW0KLSAgIEZJUlNUX0xPQ0FMX0JMT0NLID0gMgotIH07CistLS0gZ2RiLTcuNS41MC4yMDEz MDExOC5vcmlnL2dkYi9kZWZzLmgJMjAxMy0wMS0xOCAyMzozNDowMi42ODQwNTE4NjAgKzAxMDAK KysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9kZWZzLmgJMjAxMy0wMS0xOCAyMzozNDoxNC4y MzgwNjcxOTMgKzAxMDAKK0BAIC04MDEsNCArODAxLDYgQEAgZW51bSBibG9ja19lbnVtCisgCisg I2luY2x1ZGUgInV0aWxzLmgiCiAgCiArZXh0ZXJuIHZvaWQgdWxvbmdlc3RfZml0c19ob3N0X29y X2Vycm9yIChVTE9OR0VTVCBudW0pOwogKwoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJp dHBvcy0yMm9mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjJvZjI1LnBhdGNoCmlu ZGV4IGRkNzdmMDMuLjhlMzRlNzQgMTAwNjQ0Ci0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0y Mm9mMjUucGF0Y2gKKysrIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIyb2YyNS5wYXRjaApAQCAt OTYsMTEgKzk2LDExIEBAIENvbnRlbnQtVHlwZTogdGV4dC94LXBhdGNoCiBDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA3Yml0CiBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxl bmFtZT1iaXRwb3Mtd3AucGF0Y2gKIAotZGlmZiAtLWdpdCBhL2dkYi9hcm0tbGludXgtbmF0LmMg Yi9nZGIvYXJtLWxpbnV4LW5hdC5jCi1pbmRleCAyMzFiMDA4Li42ZGViMjNkIDEwMDY0NAotLS0t IGEvZ2RiL2FybS1saW51eC1uYXQuYwotKysrIGIvZ2RiL2FybS1saW51eC1uYXQuYwotQEAgLTEx MDUsNyArMTEwNSw3IEBAIGFybV9saW51eF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKENP UkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbikKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi9hcm0tbGludXgtbmF0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9y aWcvZ2RiL2FybS1saW51eC1uYXQuYwkyMDEzLTAxLTE4IDIzOjM0OjQzLjkzMDEwNjgzOSArMDEw MAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2FybS1saW51eC1uYXQuYwkyMDEzLTAxLTE4 IDIzOjM0OjUxLjIwNjExNjUxMyArMDEwMAorQEAgLTExMDUsNyArMTEwNSw3IEBAIGFybV9saW51 eF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKEMKICAKICAvKiBJbnNlcnQgYSBIYXJkd2Fy ZSBicmVha3BvaW50LiAgKi8KICBzdGF0aWMgaW50CkBAIC0xMDksNyArMTA5LDcgQEAgaW5kZXgg MjMxYjAwOC4uNmRlYjIzZCAxMDA2NDQKICAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25k KQogIHsKICAgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci1AQCAtMTEyMyw3ICsxMTIzLDcgQEAgYXJt X2xpbnV4X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3 LAorQEAgLTExMjMsNyArMTEyMyw3IEBAIGFybV9saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09S RV9BRERSIGEKICAKICAvKiBSZW1vdmUgYSBoYXJkd2FyZSBicmVha3BvaW50LiAgKi8KICBzdGF0 aWMgaW50CkBAIC0xMjcsMTEgKzEyNywxMSBAQCBpbmRleCAyMzFiMDA4Li42ZGViMjNkIDEwMDY0 NAogIHsKICAgIHJldHVybiBzdGFydCA8PSBhZGRyICYmIHN0YXJ0ICsgbGVuZ3RoIC0gMSA+PSBh ZGRyOwogIH0KLWRpZmYgLS1naXQgYS9nZGIvaTM4Ni1uYXQuYyBiL2dkYi9pMzg2LW5hdC5jCi1p bmRleCA3NmM1MWE4Li45ZTI5M2ZlIDEwMDY0NAotLS0tIGEvZ2RiL2kzODYtbmF0LmMKLSsrKyBi L2dkYi9pMzg2LW5hdC5jCi1AQCAtNTkyLDcgKzU5Miw3IEBAIGkzODZfdXBkYXRlX2luZmVyaW9y X2RlYnVnX3JlZ3MgKHN0cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSAqbmV3X3N0YXRlKQorSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2kzODYtbmF0LmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2kzODYtbmF0LmMJMjAxMy0wMS0xOCAyMzozNDo0 My45MzExMDY4NDEgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9pMzg2LW5hdC5j CTIwMTMtMDEtMTggMjM6MzQ6NTEuMjA2MTE2NTEzICswMTAwCitAQCAtNTkxLDcgKzU5MSw3IEBA IGkzODZfdXBkYXRlX2luZmVyaW9yX2RlYnVnX3JlZ3MgKHN0cnVjdAogICAgIG9mIHRoZSB0eXBl IFRZUEUuICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBmYWlsdXJlLiAgKi8KICAKICBzdGF0 aWMgaW50CkBAIC0xNDAsNyArMTQwLDcgQEAgaW5kZXggNzZjNTFhOC4uOWUyOTNmZSAxMDA2NDQK ICAJCQlzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7CiAgICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19y ZWdfc3RhdGUgKnN0YXRlID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7Ci1AQCAtNjI5LDcgKzYy OSw3IEBAIGkzODZfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBp bnQgdHlwZSwKK0BAIC02MjgsNyArNjI4LDcgQEAgaTM4Nl9pbnNlcnRfd2F0Y2hwb2ludCAoQ09S RV9BRERSIGFkZHIsCiAgICAgYWRkcmVzcyBBRERSLCB3aG9zZSBsZW5ndGggaXMgTEVOIGJ5dGVz LCBhbmQgZm9yIGFjY2Vzc2VzIG9mIHRoZQogICAgIHR5cGUgVFlQRS4gIFJldHVybiAwIG9uIHN1 Y2Nlc3MsIC0xIG9uIGZhaWx1cmUuICAqLwogIHN0YXRpYyBpbnQKQEAgLTE0OSwxMCArMTQ5LDEw IEBAIGluZGV4IDc2YzUxYTguLjllMjkzZmUgMTAwNjQ0CiAgCQkJc3RydWN0IGV4cHJlc3Npb24g KmNvbmQpCiAgewogICAgc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSA9IGkzODZf ZGVidWdfcmVnX3N0YXRlICgpOwotZGlmZiAtLWdpdCBhL2dkYi9pYTY0LWxpbnV4LW5hdC5jIGIv Z2RiL2lhNjQtbGludXgtbmF0LmMKLWluZGV4IDliNWZiZjMuLjYwNjFlYWUgMTAwNjQ0Ci0tLS0g YS9nZGIvaWE2NC1saW51eC1uYXQuYwotKysrIGIvZ2RiL2lhNjQtbGludXgtbmF0LmMKK0luZGV4 OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9pYTY0LWxpbnV4LW5hdC5jCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9pYTY0LWxpbnV4LW5hdC5jCTIwMTMtMDEt MTggMjM6MzQ6NDMuOTMxMTA2ODQxICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv aWE2NC1saW51eC1uYXQuYwkyMDEzLTAxLTE4IDIzOjM0OjUxLjIwNjExNjUxMyArMDEwMAogQEAg LTU0Miw3ICs1NDIsNyBAQCBpc19wb3dlcl9vZl8yIChpbnQgdmFsKQogIH0KICAKQEAgLTE2Miw3 ICsxNjIsNyBAQCBpbmRleCA5YjVmYmYzLi42MDYxZWFlIDEwMDY0NAogIAkJCSAgICAgIHN0cnVj dCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci1AQCAtNTk2 LDcgKzU5Niw3IEBAIGlhNjRfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRy LCBpbnQgbGVuLCBpbnQgcncsCitAQCAtNTk2LDcgKzU5Niw3IEBAIGlhNjRfbGludXhfaW5zZXJ0 X3dhdGNocG9pbnQgKENPUkVfQUREUgogIH0KICAKICBzdGF0aWMgaW50CkBAIC0xNzEsMTEgKzE3 MSwxMSBAQCBpbmRleCA5YjVmYmYzLi42MDYxZWFlIDEwMDY0NAogIAkJCSAgICAgIHN0cnVjdCBl eHByZXNzaW9uICpjb25kKQogIHsKICAgIGludCBpZHg7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2luZi10 dHJhY2UuYyBiL2dkYi9pbmYtdHRyYWNlLmMKLWluZGV4IGQ2MGVkZGIuLmMzM2RiNDUgMTAwNjQ0 Ci0tLS0gYS9nZGIvaW5mLXR0cmFjZS5jCi0rKysgYi9nZGIvaW5mLXR0cmFjZS5jCi1AQCAtMzEz LDE0ICszMTMsMTQgQEAgaW5mX3R0cmFjZV9kaXNhYmxlX3BhZ2VfcHJvdGVjdGlvbnMgKHBpZF90 IHBpZCkKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9pbmYtdHRyYWNlLmMKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2luZi10dHJhY2UuYwkyMDEz LTAxLTE4IDIzOjM0OjQzLjkzMjEwNjg0NCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL2luZi10dHJhY2UuYwkyMDEzLTAxLTE4IDIzOjM0OjUxLjIwNjExNjUxMyArMDEwMAorQEAg LTMxMywxNCArMzEzLDE0IEBAIGluZl90dHJhY2VfZGlzYWJsZV9wYWdlX3Byb3RlY3Rpb25zIChw aWQKICAgICB0eXBlIFRZUEUuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTE5Myw3ICsxOTMsNyBA QCBpbmRleCBkNjBlZGRiLi5jMzNkYjQ1IDEwMDY0NAogIAogICAgZ2RiX2Fzc2VydCAodHlwZSA9 PSBod193cml0ZSk7CiAgCi1AQCAtMzM3LDE0ICszMzcsMTQgQEAgaW5mX3R0cmFjZV9pbnNlcnRf d2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAorQEAgLTMzNywx NCArMzM3LDE0IEBAIGluZl90dHJhY2VfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUgogICAg IHR5cGUgVFlQRS4gICovCiAgCiAgc3RhdGljIGludApAQCAtMjExLDExICsyMTEsMTEgQEAgaW5k ZXggZDYwZWRkYi4uYzMzZGI0NSAxMDA2NDQKICAKICAgIGdkYl9hc3NlcnQgKHR5cGUgPT0gaHdf d3JpdGUpOwogIAotZGlmZiAtLWdpdCBhL2dkYi9taXBzLWxpbnV4LW5hdC5jIGIvZ2RiL21pcHMt bGludXgtbmF0LmMKLWluZGV4IDU1NjZkMGMuLjc0NjdkMTEgMTAwNjQ0Ci0tLS0gYS9nZGIvbWlw cy1saW51eC1uYXQuYwotKysrIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKLUBAIC0xMDE3LDcgKzEw MTcsNyBAQCBwb3B1bGF0ZV9yZWdzX2Zyb21fd2F0Y2hlcyAoc3RydWN0IHB0X3dhdGNoX3JlZ3Mg KnJlZ3MpCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbWlwcy1saW51eC1uYXQuYwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvbWlwcy1saW51eC1u YXQuYwkyMDEzLTAxLTE4IDIzOjM0OjQzLjkzMjEwNjg0NCArMDEwMAorKysrIGdkYi03LjUuNTAu MjAxMzAxMTgvZ2RiL21pcHMtbGludXgtbmF0LmMJMjAxMy0wMS0xOCAyMzozNDo1MS4yMDgxMTY1 MTggKzAxMDAKK0BAIC0xMDE3LDcgKzEwMTcsNyBAQCBwb3B1bGF0ZV9yZWdzX2Zyb21fd2F0Y2hl cyAoc3RydWN0IHB0X3dhCiAgICAgd2F0Y2guICBSZXR1cm4gemVybyBvbiBzdWNjZXNzLiAgKi8K ICAKICBzdGF0aWMgaW50CkBAIC0yMjQsNyArMjI0LDcgQEAgaW5kZXggNTU2NmQwYy4uNzQ2N2Qx MSAxMDA2NDQKICAJCQkgICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7CiAgICBzdHJ1 Y3QgcHRfd2F0Y2hfcmVncyByZWdzOwotQEAgLTEwNjcsNyArMTA2Nyw3IEBAIG1pcHNfbGludXhf aW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKK0BA IC0xMDY3LDcgKzEwNjcsNyBAQCBtaXBzX2xpbnV4X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FE RFIKICAgICBSZXR1cm4gemVybyBvbiBzdWNjZXNzLiAgKi8KICAKICBzdGF0aWMgaW50CkBAIC0y MzMsMTAgKzIzMywxMCBAQCBpbmRleCA1NTY2ZDBjLi43NDY3ZDExIDEwMDY0NAogIAkJCSAgICAg IHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIGludCByZXR2YWw7Ci1kaWZmIC0tZ2l0 IGEvZ2RiL250by1wcm9jZnMuYyBiL2dkYi9udG8tcHJvY2ZzLmMKLWluZGV4IGI1OGYzMTguLjI1 ZmVjZjMgMTAwNjQ0Ci0tLS0gYS9nZGIvbnRvLXByb2Nmcy5jCi0rKysgYi9nZGIvbnRvLXByb2Nm cy5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbnRvLXByb2Nmcy5jCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9udG8tcHJvY2ZzLmMJMjAxMy0w MS0xOCAyMzozNDo0My45MzMxMDY4NDcgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi9udG8tcHJvY2ZzLmMJMjAxMy0wMS0xOCAyMzozNDo1MS4yMDgxMTY1MTggKzAxMDAKIEBAIC02 OSwxMCArNjksMTAgQEAgc3RhdGljIHB0aWRfdCBkb19hdHRhY2ggKHB0aWRfdCBwdGlkKTsKICAK ICBzdGF0aWMgaW50IHByb2Nmc19jYW5fdXNlX2h3X2JyZWFrcG9pbnQgKGludCwgaW50LCBpbnQp OwpAQCAtMjUwLDcgKzI1MCw3IEBAIGluZGV4IGI1OGYzMTguLjI1ZmVjZjMgMTAwNjQ0CiAgCQkJ CQlzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCk7CiAgCiAgc3RhdGljIGludCBwcm9jZnNfc3RvcHBl ZF9ieV93YXRjaHBvaW50ICh2b2lkKTsKLUBAIC0xNDkzLDE0ICsxNDkzLDE0IEBAIHByb2Nmc19j YW5fdXNlX2h3X2JyZWFrcG9pbnQgKGludCB0eXBlLCBpbnQgY250LCBpbnQgb3RoZXJ0eXBlKQor QEAgLTE0OTMsMTQgKzE0OTMsMTQgQEAgcHJvY2ZzX2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50 IHR5cGUsCiAgfQogIAogIHN0YXRpYyBpbnQKQEAgLTI2NywxMSArMjY3LDExIEBAIGluZGV4IGI1 OGYzMTguLjI1ZmVjZjMgMTAwNjQ0CiAgCQkJICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkK ICB7CiAgICByZXR1cm4gcHJvY2ZzX2h3X3dhdGNocG9pbnQgKGFkZHIsIGxlbiwgdHlwZSk7Ci1k aWZmIC0tZ2l0IGEvZ2RiL3BwYy1saW51eC1uYXQuYyBiL2dkYi9wcGMtbGludXgtbmF0LmMKLWlu ZGV4IDY3ZTFjYWMuLmFiZmIyZmMgMTAwNjQ0Ci0tLS0gYS9nZGIvcHBjLWxpbnV4LW5hdC5jCi0r KysgYi9nZGIvcHBjLWxpbnV4LW5hdC5jCi1AQCAtMTgzOSwxMSArMTgzOSwxMSBAQCBjYW5fdXNl X3dhdGNocG9pbnRfY29uZF9hY2NlbCAodm9pZCkKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi9wcGMtbGludXgtbmF0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4 Lm9yaWcvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDEzLTAxLTE4IDIzOjM0OjQzLjkzNDEwNjg0OSAr MDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDEzLTAx LTE4IDIzOjM0OjUxLjIwODExNjUxOCArMDEwMAorQEAgLTE4MzgsMTEgKzE4MzgsMTEgQEAgY2Fu X3VzZV93YXRjaHBvaW50X2NvbmRfYWNjZWwgKHZvaWQpCiAgICAgQ09ORElUSU9OX1ZBTFVFIHdp bGwgaG9sZCB0aGUgdmFsdWUgd2hpY2ggc2hvdWxkIGJlIHB1dCBpbiB0aGUKICAgICBEVkMgcmVn aXN0ZXIuICAqLwogIHN0YXRpYyB2b2lkCkBAIC0yODYsNyArMjg2LDcgQEAgaW5kZXggNjdlMWNh Yy4uYWJmYjJmYyAxMDA2NDQKICAgIENPUkVfQUREUiBhZGRyX2VuZF9kYXRhLCBhZGRyX2VuZF9k dmM7CiAgCiAgICAvKiBUaGUgRFZDIHJlZ2lzdGVyIGNvbXBhcmVzIGJ5dGVzIHdpdGhpbiBmaXhl ZC1sZW5ndGggd2luZG93cyB3aGljaAotQEAgLTE5MzAsNyArMTkzMCw3IEBAIG51bV9tZW1vcnlf YWNjZXNzZXMgKHN0cnVjdCB2YWx1ZSAqdikKK0BAIC0xOTI5LDcgKzE5MjksNyBAQCBudW1fbWVt b3J5X2FjY2Vzc2VzIChzdHJ1Y3QgdmFsdWUgKnYpCiAgICAgb2YgdGhlIGNvbnN0YW50LiAgKi8K ICBzdGF0aWMgaW50CiAgY2hlY2tfY29uZGl0aW9uIChDT1JFX0FERFIgd2F0Y2hfYWRkciwgc3Ry dWN0IGV4cHJlc3Npb24gKmNvbmQsCkBAIC0yOTUsNyArMjk1LDcgQEAgaW5kZXggNjdlMWNhYy4u YWJmYjJmYyAxMDA2NDQKICB7CiAgICBpbnQgcGMgPSAxLCBudW1fYWNjZXNzZXNfbGVmdCwgbnVt X2FjY2Vzc2VzX3JpZ2h0OwogICAgc3RydWN0IHZhbHVlICpsZWZ0X3ZhbCwgKnJpZ2h0X3ZhbCwg KmxlZnRfY2hhaW4sICpyaWdodF9jaGFpbjsKLUBAIC0xOTk3LDcgKzE5OTcsNyBAQCBjaGVja19j b25kaXRpb24gKENPUkVfQUREUiB3YXRjaF9hZGRyLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCwK K0BAIC0xOTk2LDcgKzE5OTYsNyBAQCBjaGVja19jb25kaXRpb24gKENPUkVfQUREUiB3YXRjaF9h ZGRyLCBzCiAgICAgdGhlIGNvbmRpdGlvbiBleHByZXNzaW9uLCB0aHVzIG9ubHkgdHJpZ2dlcmlu ZyB0aGUgd2F0Y2hwb2ludCB3aGVuIGl0IGlzCiAgICAgdHJ1ZS4gICovCiAgc3RhdGljIGludApA QCAtMzA0LDcgKzMwNCw3IEBAIGluZGV4IDY3ZTFjYWMuLmFiZmIyZmMgMTAwNjQ0CiAgCQkJCQkg IHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIENPUkVfQUREUiBkYXRhX3ZhbHVlOwot QEAgLTIwMTQsNyArMjAxNCw3IEBAIHBwY19saW51eF9jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25k aXRpb24gKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCitAQCAtMjAxMyw3ICsyMDEz LDcgQEAgcHBjX2xpbnV4X2Nhbl9hY2NlbF93YXRjaHBvaW50X2NvbmRpdGlvbgogIAogIHN0YXRp YyB2b2lkCiAgY3JlYXRlX3dhdGNocG9pbnRfcmVxdWVzdCAoc3RydWN0IHBwY19od19icmVha3Bv aW50ICpwLCBDT1JFX0FERFIgYWRkciwKQEAgLTMxMyw3ICszMTMsNyBAQCBpbmRleCA2N2UxY2Fj Li5hYmZiMmZjIDEwMDY0NAogIAkJCSAgIGludCBpbnNlcnQpCiAgewogICAgaWYgKGxlbiA9PSAx Ci1AQCAtMjA1OSw3ICsyMDU5LDcgQEAgY3JlYXRlX3dhdGNocG9pbnRfcmVxdWVzdCAoc3RydWN0 IHBwY19od19icmVha3BvaW50ICpwLCBDT1JFX0FERFIgYWRkciwKK0BAIC0yMDU4LDcgKzIwNTgs NyBAQCBjcmVhdGVfd2F0Y2hwb2ludF9yZXF1ZXN0IChzdHJ1Y3QgcHBjX2h3CiAgfQogIAogIHN0 YXRpYyBpbnQKQEAgLTMyMiw3ICszMjIsNyBAQCBpbmRleCA2N2UxY2FjLi5hYmZiMmZjIDEwMDY0 NAogIAkJCSAgICAgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCiAgewogICAgc3RydWN0IGx3cF9p bmZvICpscDsKLUBAIC0yMTI3LDcgKzIxMjcsNyBAQCBwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9p bnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCitAQCAtMjEyNiw3ICsyMTI2LDcg QEAgcHBjX2xpbnV4X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYQogIH0KICAKICBzdGF0 aWMgaW50CkBAIC0zMzEsNyArMzMxLDcgQEAgaW5kZXggNjdlMWNhYy4uYWJmYjJmYyAxMDA2NDQK ICAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIHN0cnVjdCBsd3BfaW5m byAqbHA7Ci1AQCAtMjI2Nyw3ICsyMjY3LDcgQEAgcHBjX2xpbnV4X3N0b3BwZWRfYnlfd2F0Y2hw b2ludCAodm9pZCkKK0BAIC0yMjY2LDcgKzIyNjYsNyBAQCBwcGNfbGludXhfc3RvcHBlZF9ieV93 YXRjaHBvaW50ICh2b2lkKQogIHN0YXRpYyBpbnQKICBwcGNfbGludXhfd2F0Y2hwb2ludF9hZGRy X3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwKICAJCQkJCUNPUkVfQURE UiBhZGRyLApAQCAtMzQwLDExICszNDAsMTEgQEAgaW5kZXggNjdlMWNhYy4uYWJmYjJmYyAxMDA2 NDQKICB7CiAgICBpbnQgbWFzazsKICAKLWRpZmYgLS1naXQgYS9nZGIvcHJvY2ZzLmMgYi9nZGIv cHJvY2ZzLmMKLWluZGV4IDRhOTMzNmYuLjI2YWNjZDggMTAwNjQ0Ci0tLS0gYS9nZGIvcHJvY2Zz LmMKLSsrKyBiL2dkYi9wcm9jZnMuYwotQEAgLTI0NzAsNyArMjQ3MCw3IEBAIHByb2Nmc19hZGRy ZXNzX3RvX2hvc3RfcG9pbnRlciAoQ09SRV9BRERSIGFkZHIpCitJbmRleDogZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvcHJvY2ZzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4 Lm9yaWcvZ2RiL3Byb2Nmcy5jCTIwMTMtMDEtMTggMjM6MzQ6NDMuOTM3MTA2ODU1ICswMTAwCisr KysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcHJvY2ZzLmMJMjAxMy0wMS0xOCAyMzozNToxMi41 OTgxNDUwNzMgKzAxMDAKK0BAIC0yNDMzLDcgKzI0MzMsNyBAQCBwcm9jZnNfYWRkcmVzc190b19o b3N0X3BvaW50ZXIgKENPUkVfQURECiAgI2VuZGlmCiAgCiAgc3RhdGljIGludApAQCAtMzUzLDcg KzM1Myw3IEBAIGluZGV4IDRhOTMzNmYuLjI2YWNjZDggMTAwNjQ0CiAgewogICNpZiAhZGVmaW5l ZCAoUENXQVRDSCkgJiYgIWRlZmluZWQgKFBJT0NTV0FUQ0gpCiAgICAvKiBJZiBuZWl0aGVyIG9y IHRoZXNlIGlzIGRlZmluZWQsIHdlIGNhbid0IHN1cHBvcnQgd2F0Y2hwb2ludHMuCi1AQCAtNDgx Niw3ICs0ODE2LDcgQEAgcHJvY2ZzX3BpZF90b19zdHIgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMs IHB0aWRfdCBwdGlkKQorQEAgLTQ3NzcsNyArNDc3Nyw3IEBAIHByb2Nmc19waWRfdG9fc3RyIChz dHJ1Y3QgdGFyZ2V0X29wcyAqb3AKICAvKiBJbnNlcnQgYSB3YXRjaHBvaW50LiAgKi8KICAKICBz dGF0aWMgaW50CkBAIC0zNjEsOCArMzYxLDggQEAgaW5kZXggNGE5MzM2Zi4uMjZhY2NkOCAxMDA2 NDQKICtwcm9jZnNfc2V0X3dhdGNocG9pbnQgKHB0aWRfdCBwdGlkLCBDT1JFX0FERFIgYWRkciwg TE9OR0VTVCBsZW4sIGludCByd2ZsYWcsCiAgCQkgICAgICAgaW50IGFmdGVyKQogIHsKLSAjaWZu ZGVmIFVOSVhXQVJFCi1AQCAtNDkzOCw3ICs0OTM4LDcgQEAgcHJvY2ZzX3N0b3BwZWRfZGF0YV9h ZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZywgQ09SRV9BRERSICphZGRyKQorICNpZm5k ZWYgQUlYNQorQEAgLTQ4OTcsNyArNDg5Nyw3IEBAIHByb2Nmc19zdG9wcGVkX2RhdGFfYWRkcmVz cyAoc3RydWN0IHRhcmcKICB9CiAgCiAgc3RhdGljIGludApAQCAtMzcxLDcgKzM3MSw3IEBAIGlu ZGV4IDRhOTMzNmYuLjI2YWNjZDggMTAwNjQ0CiAgCQkJICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29u ZCkKICB7CiAgICBpZiAoIXRhcmdldF9oYXZlX3N0ZXBwYWJsZV93YXRjaHBvaW50Ci1AQCAtNDk2 MCw3ICs0OTYwLDcgQEAgcHJvY2ZzX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwg aW50IGxlbiwgaW50IHR5cGUsCitAQCAtNDkxOSw3ICs0OTE5LDcgQEAgcHJvY2ZzX2luc2VydF93 YXRjaHBvaW50IChDT1JFX0FERFIgYWRkcgogIH0KICAKICBzdGF0aWMgaW50CkBAIC0zODAsMTEg KzM4MCwxMSBAQCBpbmRleCA0YTkzMzZmLi4yNmFjY2Q4IDEwMDY0NAogIAkJCSAgc3RydWN0IGV4 cHJlc3Npb24gKmNvbmQpCiAgewogICAgcmV0dXJuIHByb2Nmc19zZXRfd2F0Y2hwb2ludCAoaW5m ZXJpb3JfcHRpZCwgYWRkciwgMCwgMCwgMCk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3JlbW90ZS1tMzJy LXNkaS5jIGIvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jCi1pbmRleCA3NDhhZWJhLi5iMzg1YzNmIDEw MDY0NAotLS0tIGEvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jCi0rKysgYi9nZGIvcmVtb3RlLW0zMnIt c2RpLmMKLUBAIC0xNDE3LDE0ICsxNDE3LDE0IEBAIG0zMnJfY2FuX3VzZV9od193YXRjaHBvaW50 IChpbnQgdHlwZSwgaW50IGNudCwgaW50IG90aGVydHlwZSkKK0luZGV4OiBnZGItNy41LjUwLjIw MTMwMTE4L2dkYi9yZW1vdGUtbTMyci1zZGkuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjUuNTAu MjAxMzAxMTgub3JpZy9nZGIvcmVtb3RlLW0zMnItc2RpLmMJMjAxMy0wMS0xOCAyMzozNDo1MS4y MTExMTY1MjMgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9yZW1vdGUtbTMyci1z ZGkuYwkyMDEzLTAxLTE4IDIzOjM2OjUwLjAwNDI3NjI5NiArMDEwMAorQEAgLTE0MTcsMTQgKzE0 MTcsMTUgQEAgbTMycl9jYW5fdXNlX2h3X3dhdGNocG9pbnQgKGludCB0eXBlLCBpbgogICAgIHdh dGNocG9pbnQuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTM5NiwxMyArMzk2LDE0IEBAIGluZGV4 IDc0OGFlYmEuLmIzODVjM2YgMTAwNjQ0CiAgCiAgICBpZiAocmVtb3RlX2RlYnVnKQogLSAgICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJtMzJyX2luc2VydF93YXRjaHBvaW50KCVz LCVkLCVkKVxuIiwKLS0JCQlwYWRkcmVzcyAodGFyZ2V0X2dkYmFyY2gsIGFkZHIpLCBsZW4sIHR5 cGUpOworLQkJCXBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCAoKSwgYWRkciksIGxlbiwgdHlwZSk7 CiArICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIm0zMnJfaW5zZXJ0X3dhdGNo cG9pbnQoJXMsJXMsJWQpXG4iLAotKwkJCXBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCwgYWRkciks IHBsb25nZXN0IChsZW4pLCB0eXBlKTsKKysJCQlwYWRkcmVzcyAodGFyZ2V0X2dkYmFyY2ggKCks IGFkZHIpLCBwbG9uZ2VzdCAobGVuKSwKKysJCQl0eXBlKTsKICAKICAgIGZvciAoaSA9IDA7IGkg PCBNQVhfQUNDRVNTX0JSRUFLUzsgaSsrKQogICAgICB7Ci1AQCAtMTQ0MiwxNCArMTQ0MiwxNCBA QCBtMzJyX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5 cGUsCitAQCAtMTQ0MiwxNCArMTQ0MywxNSBAQCBtMzJyX2luc2VydF93YXRjaHBvaW50IChDT1JF X0FERFIgYWRkciwKICB9CiAgCiAgc3RhdGljIGludApAQCAtNDE0LDE2ICs0MTUsMTcgQEAgaW5k ZXggNzQ4YWViYS4uYjM4NWMzZiAxMDA2NDQKICAKICAgIGlmIChyZW1vdGVfZGVidWcpCiAtICAg IGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIm0zMnJfcmVtb3ZlX3dhdGNocG9pbnQo JXMsJWQsJWQpXG4iLAotLQkJCXBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCwgYWRkciksIGxlbiwg dHlwZSk7CistCQkJcGFkZHJlc3MgKHRhcmdldF9nZGJhcmNoICgpLCBhZGRyKSwgbGVuLCB0eXBl KTsKICsgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAibTMycl9yZW1vdmVfd2F0 Y2hwb2ludCglcywlcywlZClcbiIsCi0rCQkJcGFkZHJlc3MgKHRhcmdldF9nZGJhcmNoLCBhZGRy KSwgcGxvbmdlc3QgKGxlbiksIHR5cGUpOworKwkJCXBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCAo KSwgYWRkciksIHBsb25nZXN0IChsZW4pLAorKwkJCXR5cGUpOwogIAogICAgZm9yIChpID0gMDsg aSA8IE1BWF9BQ0NFU1NfQlJFQUtTOyBpKyspCiAgICAgIHsKLWRpZmYgLS1naXQgYS9nZGIvcmVt b3RlLW1pcHMuYyBiL2dkYi9yZW1vdGUtbWlwcy5jCi1pbmRleCBlZWUyNDYwLi45YTkyNjVhIDEw MDY0NAotLS0tIGEvZ2RiL3JlbW90ZS1taXBzLmMKLSsrKyBiL2dkYi9yZW1vdGUtbWlwcy5jCitJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcmVtb3RlLW1pcHMuYworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvcmVtb3RlLW1pcHMuYwkyMDEzLTAxLTE4 IDIzOjM0OjQzLjkzOTEwNjg2MCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Jl bW90ZS1taXBzLmMJMjAxMy0wMS0xOCAyMzozNDo1MS4yMTIxMTY1MjUgKzAxMDAKIEBAIC0yNDE5 LDcgKzI0MTksNyBAQCBjYWxjdWxhdGVfbWFzayAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4pCiAg ICAgd2F0Y2hwb2ludC4gICovCiAgCkBAIC00MzMsNyArNDM1LDcgQEAgaW5kZXggZWVlMjQ2MC4u OWE5MjY1YSAxMDA2NDQKICAJCQlzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7CiAgICBpZiAo bWlwc19zZXRfYnJlYWtwb2ludCAoYWRkciwgbGVuLCB0eXBlKSkKLUBAIC0yNDMxLDcgKzI0MzEs NyBAQCBtaXBzX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50 IHR5cGUsCitAQCAtMjQzMSw3ICsyNDMxLDcgQEAgbWlwc19pbnNlcnRfd2F0Y2hwb2ludCAoQ09S RV9BRERSIGFkZHIsCiAgLyogUmVtb3ZlIGEgd2F0Y2hwb2ludC4gICovCiAgCiAgc3RhdGljIGlu dApAQCAtNDQyLDExICs0NDQsMTEgQEAgaW5kZXggZWVlMjQ2MC4uOWE5MjY1YSAxMDA2NDQKICAJ CQlzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7CiAgICBpZiAobWlwc19jbGVhcl9icmVha3Bv aW50IChhZGRyLCBsZW4sIHR5cGUpKQotZGlmZiAtLWdpdCBhL2dkYi9yZW1vdGUuYyBiL2dkYi9y ZW1vdGUuYwotaW5kZXggOGMyNzM5MC4uYmNlYzMzMSAxMDA2NDQKLS0tLSBhL2dkYi9yZW1vdGUu YwotKysrIGIvZ2RiL3JlbW90ZS5jCi1AQCAtODAzNSw3ICs4MDM1LDcgQEAgd2F0Y2hwb2ludF90 b19aX3BhY2tldCAoaW50IHR5cGUpCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcmVt b3RlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3JlbW90 ZS5jCTIwMTMtMDEtMTggMjM6MzQ6NDMuOTQzMTA2ODY5ICswMTAwCisrKysgZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvcmVtb3RlLmMJMjAxMy0wMS0xOCAyMzozNDo1MS4yMTQxMTY1MjkgKzAxMDAK K0BAIC04MDkzLDcgKzgwOTMsNyBAQCB3YXRjaHBvaW50X3RvX1pfcGFja2V0IChpbnQgdHlwZSkK ICB9CiAgCiAgc3RhdGljIGludApAQCAtNDU1LDcgKzQ1Nyw3IEBAIGluZGV4IDhjMjczOTAuLmJj ZWMzMzEgMTAwNjQ0CiAgCQkJICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7CiAgICBzdHJ1 Y3QgcmVtb3RlX3N0YXRlICpycyA9IGdldF9yZW1vdGVfc3RhdGUgKCk7Ci1AQCAtODA1MCw3ICs4 MDUwLDcgQEAgcmVtb3RlX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxl biwgaW50IHR5cGUsCitAQCAtODEwOCw3ICs4MTA4LDcgQEAgcmVtb3RlX2luc2VydF93YXRjaHBv aW50IChDT1JFX0FERFIgYWRkcgogICAgcCA9IHN0cmNociAocnMtPmJ1ZiwgJ1wwJyk7CiAgICBh ZGRyID0gcmVtb3RlX2FkZHJlc3NfbWFza2VkIChhZGRyKTsKICAgIHAgKz0gaGV4bnVtc3RyIChw LCAoVUxPTkdFU1QpIGFkZHIpOwpAQCAtNDY0LDcgKzQ2Niw3IEBAIGluZGV4IDhjMjczOTAuLmJj ZWMzMzEgMTAwNjQ0CiAgCiAgICBwdXRwa3QgKHJzLT5idWYpOwogICAgZ2V0cGt0ICgmcnMtPmJ1 ZiwgJnJzLT5idWZfc2l6ZSwgMCk7Ci1AQCAtODA3MCw3ICs4MDcwLDcgQEAgcmVtb3RlX2luc2Vy dF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCitAQCAtODEy OCw3ICs4MTI4LDcgQEAgcmVtb3RlX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkcgog IAogIHN0YXRpYyBpbnQKICByZW1vdGVfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3Ry dWN0IHRhcmdldF9vcHMgKnRhcmdldCwgQ09SRV9BRERSIGFkZHIsCkBAIC00NzMsNyArNDc1LDcg QEAgaW5kZXggOGMyNzM5MC4uYmNlYzMzMSAxMDA2NDQKICB7CiAgICBDT1JFX0FERFIgZGlmZiA9 IHJlbW90ZV9hZGRyZXNzX21hc2tlZCAoYWRkciAtIHN0YXJ0KTsKICAKLUBAIC04MDc5LDcgKzgw NzksNyBAQCByZW1vdGVfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdl dF9vcHMgKnRhcmdldCwgQ09SRV9BRERSIGFkZHIsCitAQCAtODEzNyw3ICs4MTM3LDcgQEAgcmVt b3RlX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cgogIAogIAogIHN0YXRpYyBpbnQK QEAgLTQ4Miw3ICs0ODQsNyBAQCBpbmRleCA4YzI3MzkwLi5iY2VjMzMxIDEwMDY0NAogIAkJCSAg c3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCiAgewogICAgc3RydWN0IHJlbW90ZV9zdGF0ZSAqcnMg PSBnZXRfcmVtb3RlX3N0YXRlICgpOwotQEAgLTgwOTQsNyArODA5NCw3IEBAIHJlbW90ZV9yZW1v dmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAorQEAgLTgx NTIsNyArODE1Miw3IEBAIHJlbW90ZV9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIK ICAgIHAgPSBzdHJjaHIgKHJzLT5idWYsICdcMCcpOwogICAgYWRkciA9IHJlbW90ZV9hZGRyZXNz X21hc2tlZCAoYWRkcik7CiAgICBwICs9IGhleG51bXN0ciAocCwgKFVMT05HRVNUKSBhZGRyKTsK QEAgLTQ5MSwxMSArNDkzLDExIEBAIGluZGV4IDhjMjczOTAuLmJjZWMzMzEgMTAwNjQ0CiAgICBw dXRwa3QgKHJzLT5idWYpOwogICAgZ2V0cGt0ICgmcnMtPmJ1ZiwgJnJzLT5idWZfc2l6ZSwgMCk7 CiAgCi1kaWZmIC0tZ2l0IGEvZ2RiL3MzOTAtbmF0LmMgYi9nZGIvczM5MC1uYXQuYwotaW5kZXgg NDk3NGJhZC4uM2Y0MTUxOSAxMDA2NDQKLS0tLSBhL2dkYi9zMzkwLW5hdC5jCi0rKysgYi9nZGIv czM5MC1uYXQuYwotQEAgLTUxNyw3ICs1MTcsNyBAQCBzMzkwX2ZpeF93YXRjaF9wb2ludHMgKHN0 cnVjdCBsd3BfaW5mbyAqbHApCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvczM5MC1u YXQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvczM5MC1u YXQuYwkyMDEzLTAxLTE4IDIzOjM0OjQzLjk0NDEwNjg3MSArMDEwMAorKysrIGdkYi03LjUuNTAu MjAxMzAxMTgvZ2RiL3MzOTAtbmF0LmMJMjAxMy0wMS0xOCAyMzozNDo1MS4yMTUxMTY1MzEgKzAx MDAKK0BAIC01MTYsNyArNTE2LDcgQEAgczM5MF9maXhfd2F0Y2hfcG9pbnRzIChzdHJ1Y3QgbHdw X2luZm8gKgogIH0KICAKICBzdGF0aWMgaW50CkBAIC01MDQsNyArNTA2LDcgQEAgaW5kZXggNDk3 NGJhZC4uM2Y0MTUxOSAxMDA2NDQKICAJCQlzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7CiAg ICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotQEAgLTUzOCw3ICs1MzgsNyBAQCBzMzkwX2luc2VydF93 YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCitAQCAtNTM3LDcg KzUzNyw3IEBAIHMzOTBfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLAogIH0KICAK ICBzdGF0aWMgaW50CkBAIC01MTMsMTAgKzUxNSwxMCBAQCBpbmRleCA0OTc0YmFkLi4zZjQxNTE5 IDEwMDY0NAogIAkJCXN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIHN0cnVjdCBsd3Bf aW5mbyAqbHA7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC5jIGIvZ2RiL3RhcmdldC5jCi1pbmRl eCBmNzIwN2MwLi5hNjlmYjA2IDEwMDY0NAotLS0tIGEvZ2RiL3RhcmdldC5jCi0rKysgYi9nZGIv dGFyZ2V0LmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90YXJnZXQuYworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdGFyZ2V0LmMJMjAxMy0wMS0x OCAyMzozNDo0My45NDcxMDY4NzggKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90 YXJnZXQuYwkyMDEzLTAxLTE4IDIzOjM0OjUxLjIxNjExNjUzMyArMDEwMAogQEAgLTQ5LDcgKzQ5 LDggQEAgc3RhdGljIHZvaWQgdGFyZ2V0X2luZm8gKGNoYXIgKiwgaW50KTsKICBzdGF0aWMgdm9p ZCBkZWZhdWx0X3Rlcm1pbmFsX2luZm8gKGNoYXIgKiwgaW50KTsKICAKQEAgLTUyNyw3ICs1Mjks NyBAQCBpbmRleCBmNzIwN2MwLi5hNjlmYjA2IDEwMDY0NAogIAogIHN0YXRpYyBpbnQgZGVmYXVs dF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKENPUkVfQUREUiwgTE9OR0VTVCk7CiAgCi1A QCAtMTE0LDEwICsxMTUsMTAgQEAgc3RhdGljIGludCBkZWJ1Z190b19pbnNlcnRfaHdfYnJlYWtw b2ludCAoc3RydWN0IGdkYmFyY2ggKiwKK0BAIC0xMTQsMTAgKzExNSwxMCBAQCBzdGF0aWMgaW50 IGRlYnVnX3RvX2luc2VydF9od19icmVha3BvaW50CiAgc3RhdGljIGludCBkZWJ1Z190b19yZW1v dmVfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKiwKICAJCQkJCSAgc3RydWN0IGJwX3Rh cmdldF9pbmZvICopOwogIApAQCAtNTQwLDcgKzU0Miw3IEBAIGluZGV4IGY3MjA3YzAuLmE2OWZi MDYgMTAwNjQ0CiAgCQkJCSAgICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKICAKICBzdGF0aWMg aW50IGRlYnVnX3RvX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAodm9pZCk7Ci1AQCAtMTI1LDExICsx MjYsMTIgQEAgc3RhdGljIGludCBkZWJ1Z190b19zdG9wcGVkX2J5X3dhdGNocG9pbnQgKHZvaWQp OworQEAgLTEyNSwxMSArMTI2LDEyIEBAIHN0YXRpYyBpbnQgZGVidWdfdG9fc3RvcHBlZF9ieV93 YXRjaHBvaW4KICBzdGF0aWMgaW50IGRlYnVnX3RvX3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1 Y3QgdGFyZ2V0X29wcyAqLCBDT1JFX0FERFIgKik7CiAgCiAgc3RhdGljIGludCBkZWJ1Z190b193 YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLApAQCAtNTc3 LDcgKzU3OSw3IEBAIGluZGV4IGY3MjA3YzAuLmE2OWZiMDYgMTAwNjQ0CiAgICAgICAgICAgICAg cmV0dXJuX3plcm8pOwogICAgZGVfZmF1bHQgKHRvX3Rlcm1pbmFsX2luaXQsCiAgCSAgICAodm9p ZCAoKikgKHZvaWQpKQotQEAgLTM1NTgsNyArMzU2MCw3IEBAIGRlZmF1bHRfcmVnaW9uX29rX2Zv cl9od193YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4pCitAQCAtMzU2MCw3 ICszNTYyLDcgQEAgZGVmYXVsdF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKENPUgogIHN0 YXRpYyBpbnQKICBkZWZhdWx0X3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0 YXJnZXRfb3BzICp0YXJnZXQsCiAgCQkJCSAgICAgIENPUkVfQUREUiBhZGRyLApAQCAtNTg2LDcg KzU4OCw3IEBAIGluZGV4IGY3MjA3YzAuLmE2OWZiMDYgMTAwNjQ0CiAgewogICAgcmV0dXJuIGFk ZHIgPj0gc3RhcnQgJiYgYWRkciA8IHN0YXJ0ICsgbGVuZ3RoOwogIH0KLUBAIC00MjYzLDcgKzQy NjUsNyBAQCBkZWJ1Z190b19yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKENPUkVfQUREUiBh ZGRyLCBMT05HRVNUIGxlbikKK0BAIC00MjY3LDcgKzQyNjksNyBAQCBkZWJ1Z190b19yZWdpb25f b2tfZm9yX2h3X3dhdGNocG9pbnQgKENPCiAgfQogIAogIHN0YXRpYyBpbnQKQEAgLTU5NSw3ICs1 OTcsNyBAQCBpbmRleCBmNzIwN2MwLi5hNjlmYjA2IDEwMDY0NAogIAkJCQkJIHN0cnVjdCBleHBy ZXNzaW9uICpjb25kKQogIHsKICAgIGludCByZXR2YWw7Ci1AQCAtNDI3Myw4ICs0Mjc1LDggQEAg ZGVidWdfdG9fY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uIChDT1JFX0FERFIgYWRkciwg aW50IGxlbiwgaW50IHJ3LAorQEAgLTQyNzcsOCArNDI3OSw4IEBAIGRlYnVnX3RvX2Nhbl9hY2Nl bF93YXRjaHBvaW50X2NvbmRpdGlvbgogIAogICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rk bG9nLAogIAkJICAgICAgInRhcmdldF9jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24gIgpA QCAtNjA2LDcgKzYwOCw3IEBAIGluZGV4IGY3MjA3YzAuLmE2OWZiMDYgMTAwNjQ0CiAgCQkgICAg ICBob3N0X2FkZHJlc3NfdG9fc3RyaW5nIChjb25kKSwgKHVuc2lnbmVkIGxvbmcpIHJldHZhbCk7 CiAgICByZXR1cm4gcmV0dmFsOwogIH0KLUBAIC00MzA5LDcgKzQzMTEsNyBAQCBkZWJ1Z190b19z dG9wcGVkX2RhdGFfYWRkcmVzcyAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwgQ09SRV9BRERS ICphZGRyKQorQEAgLTQzMTMsNyArNDMxNSw3IEBAIGRlYnVnX3RvX3N0b3BwZWRfZGF0YV9hZGRy ZXNzIChzdHJ1Y3QgdGEKICBzdGF0aWMgaW50CiAgZGVidWdfdG9fd2F0Y2hwb2ludF9hZGRyX3dp dGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwKICAJCQkJICAgICAgIENPUkVf QUREUiBhZGRyLApAQCAtNjE1LDcgKzYxNyw3IEBAIGluZGV4IGY3MjA3YzAuLmE2OWZiMDYgMTAw NjQ0CiAgewogICAgaW50IHJldHZhbDsKICAKLUBAIC00MzE3LDkgKzQzMTksOSBAQCBkZWJ1Z190 b193YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0 LAorQEAgLTQzMjEsOSArNDMyMyw5IEBAIGRlYnVnX3RvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5f cmFuZ2UgKHMKICAJCQkJCQkJIHN0YXJ0LCBsZW5ndGgpOwogIAogICAgZnByaW50Zl9maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywKQEAgLTYyNyw3ICs2MjksNyBAQCBpbmRleCBmNzIwN2MwLi5hNjlmYjA2 IDEwMDY0NAogICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCi1AQCAtNDM1NCw3ICs0MzU2LDcgQEAg ZGVidWdfdG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAor QEAgLTQzNTgsNyArNDM2MCw3IEBAIGRlYnVnX3RvX3JlbW92ZV9od19icmVha3BvaW50IChzdHJ1 Y3QgZ2QKICB9CiAgCiAgc3RhdGljIGludApAQCAtNjM2LDcgKzYzOCw3IEBAIGluZGV4IGY3MjA3 YzAuLmE2OWZiMDYgMTAwNjQ0CiAgCQkJICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsK ICAgIGludCByZXR2YWw7Ci1AQCAtNDM2MiwxNCArNDM2NCwxNCBAQCBkZWJ1Z190b19pbnNlcnRf d2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAorQEAgLTQzNjYs MTQgKzQzNjgsMTQgQEAgZGVidWdfdG9faW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZAog ICAgcmV0dmFsID0gZGVidWdfdGFyZ2V0LnRvX2luc2VydF93YXRjaHBvaW50IChhZGRyLCBsZW4s IHR5cGUsIGNvbmQpOwogIAogICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLApAQCAt NjU0LDcgKzY1Niw3IEBAIGluZGV4IGY3MjA3YzAuLmE2OWZiMDYgMTAwNjQ0CiAgCQkJICAgIHN0 cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIGludCByZXR2YWw7Ci1AQCAtNDM3Nyw4ICs0 Mzc5LDggQEAgZGVidWdfdG9fcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQg bGVuLCBpbnQgdHlwZSwKK0BAIC00MzgxLDggKzQzODMsOCBAQCBkZWJ1Z190b19yZW1vdmVfd2F0 Y2hwb2ludCAoQ09SRV9BRERSIGFkCiAgICByZXR2YWwgPSBkZWJ1Z190YXJnZXQudG9fcmVtb3Zl X3dhdGNocG9pbnQgKGFkZHIsIGxlbiwgdHlwZSwgY29uZCk7CiAgCiAgICBmcHJpbnRmX3VuZmls dGVyZWQgKGdkYl9zdGRsb2csCkBAIC02NjUsMTAgKzY2NywxMCBAQCBpbmRleCBmNzIwN2MwLi5h NjlmYjA2IDEwMDY0NAogIAkJICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoY29uZCksICh1 bnNpZ25lZCBsb25nKSByZXR2YWwpOwogICAgcmV0dXJuIHJldHZhbDsKICB9Ci1kaWZmIC0tZ2l0 IGEvZ2RiL3RhcmdldC5oIGIvZ2RiL3RhcmdldC5oCi1pbmRleCA2OTIyOGUxLi40YjUyZDUzIDEw MDY0NAotLS0tIGEvZ2RiL3RhcmdldC5oCi0rKysgYi9nZGIvdGFyZ2V0LmgKK0luZGV4OiBnZGIt Ny41LjUwLjIwMTMwMTE4L2dkYi90YXJnZXQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjUuNTAu MjAxMzAxMTgub3JpZy9nZGIvdGFyZ2V0LmgJMjAxMy0wMS0xOCAyMzozNDo0My45NDcxMDY4Nzgg KzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90YXJnZXQuaAkyMDEzLTAxLTE4IDIz OjM0OjUxLjIxNzExNjUzNiArMDEwMAogQEAgLTQ2Niw4ICs0NjYsOCBAQCBzdHJ1Y3QgdGFyZ2V0 X29wcwogIAogICAgICAvKiBEb2N1bWVudGF0aW9uIG9mIHdoYXQgdGhlIHR3byByb3V0aW5lcyBi ZWxvdyBhcmUgZXhwZWN0ZWQgdG8gZG8gaXMKQEAgLTY5Niw2ICs2OTgsMyBAQCBpbmRleCA2OTIy OGUxLi40YjUyZDUzIDEwMDY0NAogIAkJCQkJICAgICAgc3RydWN0IGV4cHJlc3Npb24gKik7CiAg ICAgIGludCAoKnRvX21hc2tlZF93YXRjaF9udW1fcmVnaXN0ZXJzKSAoc3RydWN0IHRhcmdldF9v cHMgKiwKICAJCQkJCSAgQ09SRV9BRERSLCBDT1JFX0FERFIpOwotCi0tLU1QXy82SFJsSDZ2cHlx dFN5NENZeU1yWDZiMi0tCi0KCmRpZmYgLS1naXQgYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjNv ZjI1LnBhdGNoIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIzb2YyNS5wYXRjaAppbmRleCA5MWY2 YWQ1Li45ZTZiNzEyIDEwMDY0NAotLS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjNvZjI1LnBh dGNoCisrKyBiL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yM29mMjUucGF0Y2gKQEAgLTEzNywxMCAr MTM3LDEwIEBAIENvbnRlbnQtVHlwZTogdGV4dC94LXBhdGNoCiBDb250ZW50LVRyYW5zZmVyLUVu Y29kaW5nOiA3Yml0CiBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1i aXRwb3MtdGRlcC5wYXRjaAogCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hbHBoYS10 ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9hbHBoYS10ZGVwLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvYWxwaGEtdGRlcC5jCTIwMTIt MTEtMDcgMjI6NDY6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9hbHBoYS10ZGVwLmMJMjAxMi0xMS0wNyAyMjo0Nzo1Ny4zNzE5ODQ5MjkgKzAxMDAKKy0tLSBn ZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2FscGhhLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2 OjU5Ljk1NDI5MDM2MiArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2FscGhhLXRk ZXAuYwkyMDEzLTAxLTE4IDIzOjM3OjEyLjQ2NTMwNzU2NiArMDEwMAogQEAgLTI5OSwxOCArMjk5 LDE4IEBAIGFscGhhX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmcKICB7CiAgICBl bnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7 CkBAIC0xODQsMTEgKzE4NCwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hbHBo YS10ZGVwLmMKICAJICAgICAgbWVtY3B5IChhcmdfcmVnX2J1ZmZlciArIG9mZnNldCwgY29udGVu dHMsIHRsZW4pOwogIAkgICAgICBvZmZzZXQgKz0gdGxlbjsKICAJICAgICAgY29udGVudHMgKz0g dGxlbjsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FtZDY0LXRkZXAuYworSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2FtZDY0LXRkZXAuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9hbWQ2NC10ZGVwLmMJMjAxMi0xMS0wNyAyMjowOToy NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FtZDY0LXRkZXAu YwkyMDEyLTExLTA3IDIyOjQ3OjU3LjM3NDk4NDkyMyArMDEwMAotQEAgLTU5OSw3ICs1OTksNyBA QCBhbWQ2NF9yZXR1cm5fdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhCistLS0gZ2RiLTcuNS41 MC4yMDEzMDExOC5vcmlnL2dkYi9hbWQ2NC10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNjo1OS45NTUy OTAzNjUgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9hbWQ2NC10ZGVwLmMJMjAx My0wMS0xOCAyMzozNzoxMi40NjYzMDc1NjkgKzAxMDAKK0BAIC02MTYsNyArNjE2LDcgQEAgYW1k NjRfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYQogIHsKICAgIHN0cnVjdCBnZGJh cmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwogICAgZW51bSBhbWQ2NF9y ZWdfY2xhc3MgY2xhc3NbMl07CkBAIC0xOTcsNyArMTk3LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvYW1kNjQtdGRlcC5jCiAgICBzdGF0aWMgaW50IGludGVnZXJfcmVnbnVtW10g PSB7IEFNRDY0X1JBWF9SRUdOVU0sIEFNRDY0X1JEWF9SRUdOVU0gfTsKICAgIHN0YXRpYyBpbnQg c3NlX3JlZ251bVtdID0geyBBTUQ2NF9YTU0wX1JFR05VTSwgQU1ENjRfWE1NMV9SRUdOVU0gfTsK ICAgIGludCBpbnRlZ2VyX3JlZyA9IDA7Ci1AQCAtNzI4LDggKzcyOCw4IEBAIGFtZDY0X3B1c2hf YXJndW1lbnRzIChzdHJ1Y3QgcmVnY2FjaGUgKnIKK0BAIC03NjksOCArNzY5LDggQEAgYW1kNjRf cHVzaF9hcmd1bWVudHMgKHN0cnVjdCByZWdjYWNoZSAqcgogICAgICAgdGhhdCByZWdpc3RlciBu dW1iZXIgKG9yIGEgbmVnYXRpdmUgdmFsdWUgb3RoZXJ3aXNlKS4gICovCiAgICBpbnQgKmFyZ19h ZGRyX3JlZ25vID0gYWxsb2NhIChuYXJncyAqIHNpemVvZiAoaW50KSk7CiAgICBpbnQgbnVtX3N0 YWNrX2FyZ3MgPSAwOwpAQCAtMjA4LDcgKzIwOCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL2FtZDY0LXRkZXAuYwogICAgaW50IGludGVnZXJfcmVnID0gMDsKICAgIGludCBzc2Vf cmVnID0gMDsKICAgIGludCBpOwotQEAgLTc0Myw3ICs3NDMsNyBAQCBhbWQ2NF9wdXNoX2FyZ3Vt ZW50cyAoc3RydWN0IHJlZ2NhY2hlICpyCitAQCAtNzg0LDcgKzc4NCw3IEBAIGFtZDY0X3B1c2hf YXJndW1lbnRzIChzdHJ1Y3QgcmVnY2FjaGUgKnIKICAgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsg aSsrKQogICAgICB7CiAgICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSB2YWx1ZV90eXBlIChhcmdz W2ldKTsKQEAgLTIxNywxMSArMjE3LDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L2FtZDY0LXRkZXAuYwogICAgICAgIGVudW0gYW1kNjRfcmVnX2NsYXNzIGNsYXNzWzJdOwogICAg ICAgIGludCBuZWVkZWRfaW50ZWdlcl9yZWdzID0gMDsKICAgICAgICBpbnQgbmVlZGVkX3NzZV9y ZWdzID0gMDsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FtZDY0LXdpbmRvd3MtdGRl cC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYW1kNjQtd2luZG93cy10ZGVwLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvYW1kNjQtd2luZG93 cy10ZGVwLmMJMjAxMi0wNi0wNSAxNTo1MDo1Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6NTcu NDEzOTg0ODY3ICswMTAwCi1AQCAtNzgsNyArNzgsNyBAQCBhbWQ2NF93aW5kb3dzX3JldHVybl92 YWx1ZSAoc3RydWN0IGdkYmFyCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9hbWQ2 NC13aW5kb3dzLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk1NjI5MDM2OSArMDEwMAorKysr IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCTIwMTMtMDEtMTgg MjM6Mzc6MTIuNDY2MzA3NTY5ICswMTAwCitAQCAtNzksNyArNzksNyBAQCBhbWQ2NF93aW5kb3dz X3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyCiAgCQkJICAgIHN0cnVjdCB0eXBlICp0eXBlLCBz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAogIAkJCSAgICBnZGJfYnl0ZSAqcmVhZGJ1ZiwgY29u c3QgZ2RiX2J5dGUgKndyaXRlYnVmKQogIHsKQEAgLTIzMCwxMSArMjMwLDExIEBAIEluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCiAgICBpbnQgcmVnbnVt ID0gLTE7CiAgCiAgICAvKiBTZWUgaWYgb3VyIHZhbHVlIGlzIHJldHVybmVkIHRocm91Z2ggYSBy ZWdpc3Rlci4gIElmIGl0IGlzLCB0aGVuCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9h cm0tdGRlcC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYXJtLXRkZXAuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9hcm0tdGRlcC5jCTIwMTIt MDYtMjUgMTQ6MzI6NDUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9hcm0tdGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6NTcuNDIyOTg0ODU1ICswMTAwCi1AQCAtMzM3 Nyw3ICszMzc3LDcgQEAgYXJtX3ZmcF9jcHJjX3JlZ19jaGFyIChlbnVtIGFybV92ZnBfY3ByYwor LS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvYXJtLXRkZXAuYwkyMDEzLTAxLTE4IDIz OjM2OjU5Ljk2MTI5MDM3OCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2FybS10 ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40NjkzMDc1NzMgKzAxMDAKK0BAIC0zNDk2LDcgKzM0 OTYsNyBAQCBhcm1fdmZwX2NwcmNfcmVnX2NoYXIgKGVudW0gYXJtX3ZmcF9jcHJjCiAgICAgYXJy YXkpLiAgVmVjdG9ycyBhbmQgY29tcGxleCB0eXBlcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0 ZWQsCiAgICAgbWF0Y2hpbmcgdGhlIGdlbmVyaWMgQUFQQ1Mgc3VwcG9ydC4gICovCiAgCkBAIC0y NDMsNyArMjQzLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYXJtLXRkZXAuYwog IGFybV92ZnBfY3ByY19zdWJfY2FuZGlkYXRlIChzdHJ1Y3QgdHlwZSAqdCwKICAJCQkgICAgZW51 bSBhcm1fdmZwX2NwcmNfYmFzZV90eXBlICpiYXNlX3R5cGUpCiAgewotQEAgLTM0MDgsNyArMzQw OCw3IEBAIGFybV92ZnBfY3ByY19zdWJfY2FuZGlkYXRlIChzdHJ1Y3QgdHlwZQorQEAgLTM1Mjcs NyArMzUyNyw3IEBAIGFybV92ZnBfY3ByY19zdWJfY2FuZGlkYXRlIChzdHJ1Y3QgdHlwZQogIAog ICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKICAgICAgICB7CkBAIC0yNTIsNyArMjUyLDcgQEAg SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYXJtLXRkZXAuYwogIAl1bnNpZ25lZCB1bml0 bGVuOwogIAljb3VudCA9IGFybV92ZnBfY3ByY19zdWJfY2FuZGlkYXRlIChUWVBFX1RBUkdFVF9U WVBFICh0KSwgYmFzZV90eXBlKTsKICAJaWYgKGNvdW50ID09IC0xKQotQEAgLTM0MjgsMTMgKzM0 MjgsMTUgQEAgYXJtX3ZmcF9jcHJjX3N1Yl9jYW5kaWRhdGUgKHN0cnVjdCB0eXBlCitAQCAtMzU0 NywxMyArMzU0NywxNSBAQCBhcm1fdmZwX2NwcmNfc3ViX2NhbmRpZGF0ZSAoc3RydWN0IHR5cGUK ICAKICAgICAgY2FzZSBUWVBFX0NPREVfU1RSVUNUOgogICAgICAgIHsKQEAgLTI3MSw3ICsyNzEs NyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hcm0tdGRlcC5jCiAgCSAgICBpZiAo c3ViX2NvdW50ID09IC0xKQogIAkgICAgICByZXR1cm4gLTE7CiAgCSAgICBjb3VudCArPSBzdWJf Y291bnQ7Ci1AQCAtMzQ1NCwxMyArMzQ1NiwxNSBAQCBhcm1fdmZwX2NwcmNfc3ViX2NhbmRpZGF0 ZSAoc3RydWN0IHR5cGUKK0BAIC0zNTczLDEzICszNTc1LDE1IEBAIGFybV92ZnBfY3ByY19zdWJf Y2FuZGlkYXRlIChzdHJ1Y3QgdHlwZQogIAogICAgICBjYXNlIFRZUEVfQ09ERV9VTklPTjoKICAg ICAgICB7CkBAIC0yOTAsNyArMjkwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv YXJtLXRkZXAuYwogIAkgICAgaWYgKHN1Yl9jb3VudCA9PSAtMSkKICAJICAgICAgcmV0dXJuIC0x OwogIAkgICAgY291bnQgPSAoY291bnQgPiBzdWJfY291bnQgPyBjb3VudCA6IHN1Yl9jb3VudCk7 Ci1AQCAtMzQ5Niw3ICszNTAwLDcgQEAgYXJtX3ZmcF9jYWxsX2NhbmRpZGF0ZSAoc3RydWN0IHR5 cGUgKnQsCitAQCAtMzYxNSw3ICszNjE5LDcgQEAgYXJtX3ZmcF9jYWxsX2NhbmRpZGF0ZSAoc3Ry dWN0IHR5cGUgKnQsCiAgCQkJaW50ICpjb3VudCkKICB7CiAgICBlbnVtIGFybV92ZnBfY3ByY19i YXNlX3R5cGUgYiA9IFZGUF9DUFJDX1VOS05PV047CkBAIC0yOTksNyArMjk5LDcgQEAgSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYXJtLXRkZXAuYwogICAgaWYgKGMgPD0gMCB8fCBjID4g NCkKICAgICAgcmV0dXJuIDA7CiAgICAqYmFzZV90eXBlID0gYjsKLUBAIC0zNTc3LDcgKzM1ODEs NyBAQCBhcm1fcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCitAQCAtMzY5Niw3 ICszNzAwLDcgQEAgYXJtX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkYgogIAog ICAgZm9yIChhcmdudW0gPSAwOyBhcmdudW0gPCBuYXJnczsgYXJnbnVtKyspCiAgICAgIHsKQEAg LTMwOCwxMCArMzA4LDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FybS10ZGVw LmMKICAgICAgICBzdHJ1Y3QgdHlwZSAqYXJnX3R5cGU7CiAgICAgICAgc3RydWN0IHR5cGUgKnRh cmdldF90eXBlOwogICAgICAgIGVudW0gdHlwZV9jb2RlIHR5cGVjb2RlOwotSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvYXZyLXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL2F2ci10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9n ZGIvYXZyLXRkZXAuYwkyMDEyLTA1LTE4IDIzOjAyOjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvYXZyLXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ3OjU3LjQ0NDk4 NDgyMyArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvYXZyLXRkZXAuYwky MDEzLTAxLTE4IDIzOjM2OjU5Ljk2MzI5MDM4NSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL2F2ci10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40NzAzMDc1NzQgKzAxMDAKIEBA IC0xMTcwLDEzICsxMTcwLDE0IEBAIGF2cl9kdW1teV9pZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsIHMKICAKICBzdHJ1Y3Qgc3RhY2tfaXRlbQpAQCAtMzQ1LDEwICszNDUsMTAgQEAgSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYXZyLXRkZXAuYwogIAogICAgICAgIC8qIENhbGN1bGF0 ZSB0aGUgcG90ZW50aWFsIGxhc3QgcmVnaXN0ZXIgbmVlZGVkLiAgKi8KICAgICAgICBsYXN0X3Jl Z251bSA9IHJlZ251bSAtIChsZW4gKyAobGVuICYgMSkpOwotSW5kZXg6IGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvYmZpbi10ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9iZmlu LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9iZmlu LXRkZXAuYwkyMDEyLTExLTA3IDIyOjA5OjI0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvYmZpbi10ZGVwLmMJMjAxMi0xMS0wNyAyMjo0Nzo1Ny40NTA5ODQ4MTQg KzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2JmaW4tdGRlcC5jCTIwMTMt MDEtMTggMjM6MzY6NTkuOTYzMjkwMzg1ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9n ZGIvYmZpbi10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40NzAzMDc1NzQgKzAxMDAKIEBAIC01 MDYsNyArNTA2LDcgQEAgYmZpbl9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAog ICAgY2hhciBidWZbNF07CiAgICBpbnQgaTsKQEAgLTM2NywxMCArMzY3LDEwIEBAIEluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2JmaW4tdGRlcC5jCiAgCiAgICAgICAgc3AgLT0gY29udGFp bmVyX2xlbjsKICAgICAgICB3cml0ZV9tZW1vcnkgKHNwLCB2YWx1ZV9jb250ZW50c193cml0ZWFi bGUgKGFyZ3NbaV0pLCBjb250YWluZXJfbGVuKTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL2NyaXMtdGRlcC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvY3Jpcy10ZGVw LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvY3Jpcy10ZGVw LmMJMjAxMi0xMS0wNyAyMjowOToyNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL2NyaXMtdGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6NTcuNDUzOTg0ODEwICswMTAw CistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9jcmlzLXRkZXAuYwkyMDEzLTAxLTE4 IDIzOjM2OjU5Ljk2NTI5MDM5MCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2Ny aXMtdGRlcC5jCTIwMTMtMDEtMTggMjM6Mzc6MTIuNDcxMzA3NTc4ICswMTAwCiBAQCAtNjcwLDEz ICs2NzAsMTMgQEAgc3RhdGljIENPUkVfQUREUiBjcmlzX3Vud2luZF9zcCAoc3RydWN0CiAgCiAg c3RydWN0IHN0YWNrX2l0ZW0KQEAgLTQwNSwxMSArNDA1LDExIEBAIEluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL2NyaXMtdGRlcC5jCiAgICAgICAgCiAgICAgICAgLyogSG93IG1heSByZWdp c3RlcnMgd29ydGggb2Ygc3RvcmFnZSBkbyB3ZSBuZWVkIGZvciB0aGlzIGFyZ3VtZW50PyAgKi8K ICAgICAgICByZWdfZGVtYW5kID0gKGxlbiAvIDQpICsgKGxlbiAlIDQgIT0gMCA/IDEgOiAwKTsK LUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2g4MzAwLXRkZXAuYworSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAxMTgvZ2RiL2g4MzAwLXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu MC4yMDEyMDkyNi5vcmlnL2dkYi9oODMwMC10ZGVwLmMJMjAxMi0xMS0wNyAyMjowOToyNC4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2g4MzAwLXRkZXAuYwkyMDEy LTExLTA3IDIyOjQ3OjU3LjQ1Njk4NDgwNiArMDEwMAotQEAgLTY0MSw3ICs2NDEsNyBAQCBoODMw MF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnCistLS0gZ2RiLTcuNS41MC4yMDEz MDExOC5vcmlnL2dkYi9oODMwMC10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNjo1OS45NjYyOTAzOTIg KzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9oODMwMC10ZGVwLmMJMjAxMy0wMS0x OCAyMzozNzoxMi40NzIzMDc1ODMgKzAxMDAKK0BAIC02NDAsNyArNjQwLDcgQEAgaDgzMDBfcHVz aF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZwogIAkJICAgICAgIGludCBzdHJ1Y3RfcmV0 dXJuLCBDT1JFX0FERFIgc3RydWN0X2FkZHIpCiAgewogICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVf b3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwpAQCAtNDE4LDcgKzQxOCw3IEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2g4MzAwLXRkZXAuYwogICAgaW50IHdvcmRz aXplID0gQklOV09SRCAoZ2RiYXJjaCk7CiAgICBpbnQgcmVnID0gRV9BUkcwX1JFR05VTTsKICAg IGludCBhcmd1bWVudDsKLUBAIC02NjgsMTEgKzY2OCwxMSBAQCBoODMwMF9wdXNoX2R1bW15X2Nh bGwgKHN0cnVjdCBnZGJhcmNoICpnCitAQCAtNjY3LDExICs2NjcsMTEgQEAgaDgzMDBfcHVzaF9k dW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZwogICAgICB7CiAgICAgICAgc3RydWN0IGNsZWFu dXAgKmJhY2tfdG87CiAgICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSB2YWx1ZV90eXBlIChhcmdz W2FyZ3VtZW50XSk7CkBAIC00MzIsNyArNDMyLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvaDgzMDAtdGRlcC5jCiAgICAgICAgZ2RiX2J5dGUgKnBhZGRlZCA9IHhtYWxsb2MgKHBh ZGRlZF9sZW4pOwogICAgICAgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBwYWRkZWQp OwogIAotQEAgLTcwMSw3ICs3MDEsNyBAQCBoODMwMF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBn ZGJhcmNoICpnCitAQCAtNzAwLDcgKzcwMCw3IEBAIGg4MzAwX3B1c2hfZHVtbXlfY2FsbCAoc3Ry dWN0IGdkYmFyY2ggKmcKICAJICAgICAgLyogSGVhdmVucyB0byBCZXRzeSAtLS0gaXQncyByZWFs bHkgZ29pbmcgaW4gcmVnaXN0ZXJzIQogIAkgICAgICAgICBOb3RlIHRoYXQgb24gdGhlIGg4LzMw MHMsIHRoZXJlIGFyZSBnYXBzIGJldHdlZW4gdGhlCiAgCSAgICAgICAgIHJlZ2lzdGVycyBpbiB0 aGUgcmVnaXN0ZXIgZmlsZS4gICovCkBAIC00NDEsMTEgKzQ0MSwxMSBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9oODMwMC10ZGVwLmMKICAKICAJICAgICAgZm9yIChvZmZzZXQgPSAw OyBvZmZzZXQgPCBwYWRkZWRfbGVuOyBvZmZzZXQgKz0gd29yZHNpemUpCiAgCQl7Ci1JbmRleDog Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9ocHBhLXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL2hwcGEtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2 Lm9yaWcvZ2RiL2hwcGEtdGRlcC5jCTIwMTItMTEtMDcgMjI6MDk6MjQuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9ocHBhLXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ4 OjMxLjM3ODkzNjA4MyArMDEwMAotQEAgLTk2Miw3ICs5NjIsNyBAQCBocHBhNjRfcHVzaF9kdW1t eV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dk Yi9ocHBhLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk2NjI5MDM5MiArMDEwMAorKysrIGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL2hwcGEtdGRlcC5jCTIwMTMtMDEtMTggMjM6Mzc6NDQuMjI4 MzUxMzcwICswMTAwCitAQCAtOTYxLDcgKzk2MSw3IEBAIGhwcGE2NF9wdXNoX2R1bW15X2NhbGwg KHN0cnVjdCBnZGJhcmNoICoKICAgICAgewogICAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0gYXJn c1tpXTsKICAgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IHZhbHVlX3R5cGUgKGFyZyk7CkBAIC00 NTQsNyArNDU0LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaHBwYS10ZGVwLmMK ICAgICAgICBjb25zdCBiZmRfYnl0ZSAqdmFsYnVmOwogICAgICAgIGJmZF9ieXRlIGZwdHJidWZb OF07CiAgICAgICAgaW50IHJlZ251bTsKLUBAIC0xMTU3LDcgKzExNTcsNyBAQCBocHBhNjRfcmV0 dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCitAQCAtMTE1Niw3ICsxMTU2LDcgQEAgaHBw YTY0X3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYgogIAkJICAgICBzdHJ1Y3QgdHlw ZSAqdHlwZSwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKICAJCSAgICAgZ2RiX2J5dGUgKnJl YWRidWYsIGNvbnN0IGdkYl9ieXRlICp3cml0ZWJ1ZikKICB7CkBAIC00NjIsMTEgKzQ2MiwxMSBA QCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9ocHBhLXRkZXAuYwogKyAgTE9OR0VTVCBs ZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7CiAgICBpbnQgcmVnbnVtLCBvZmZzZXQ7CiAgCi0gICBp ZiAoVFlQRV9MRU5HVEggKHR5cGUpID4gMTYpCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9pMzg2LWRhcndpbi10ZGVwLmMKKyAgIGlmIChsZW4gPiAxNikKK0luZGV4OiBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi9pMzg2LWRhcndpbi10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjAuMjAxMjA5MjYub3JpZy9nZGIvaTM4Ni1kYXJ3aW4tdGRlcC5jCTIwMTItMTEtMDcgMjI6MDM6 NTcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9pMzg2LWRhcndp bi10ZGVwLmMJMjAxMi0xMS0wNyAyMjo0Nzo1Ny40NzA5ODQ3ODYgKzAxMDAKKy0tLSBnZGItNy41 LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2kzODYtZGFyd2luLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2 OjU5Ljk2NzI5MDM5NCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2kzODYtZGFy d2luLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM3OjEyLjQ3MzMwNzU4NiArMDEwMAogQEAgLTE2Niw3 ICsxNjYsNyBAQCBpMzg2X2Rhcndpbl9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhCiAgCiAg ICBmb3IgKHdyaXRlX3Bhc3MgPSAwOyB3cml0ZV9wYXNzIDwgMjsgd3JpdGVfcGFzcysrKQpAQCAt NDc2LDExICs0NzYsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaTM4Ni1kYXJ3 aW4tdGRlcC5jCiAgICAgICAgaW50IG51bV9tMTI4ID0gMDsKICAKICAgICAgICBpZiAoc3RydWN0 X3JldHVybikKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2kzODYtdGRlcC5jCitJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvaTM4Ni10ZGVwLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvaTM4Ni10ZGVwLmMJMjAxMi0xMS0wNyAyMjowMDo0 Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2kzODYtdGRlcC5j CTIwMTItMTEtMDcgMjI6NDc6NTcuNDc0OTg0NzgwICswMTAwCi1AQCAtMjM1OCw3ICsyMzU4LDcg QEAgaTM4Nl9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAorLS0tIGdkYi03LjUu NTAuMjAxMzAxMTgub3JpZy9nZGIvaTM4Ni10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNjo1OS45Njky OTAzOTggKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9pMzg2LXRkZXAuYwkyMDEz LTAxLTE4IDIzOjM3OjEyLjQ3NTMwNzU4OSArMDEwMAorQEAgLTI0MDcsNyArMjQwNyw3IEBAIGkz ODZfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKICAgIGdkYl9ieXRlIGJ1Zls0 XTsKICAgIGludCBpOwogICAgaW50IHdyaXRlX3Bhc3M7CkBAIC00ODksNyArNDg5LDcgQEAgSW5k ZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaTM4Ni10ZGVwLmMKICAKICAgIC8qIERldGVybWlu ZSB0aGUgdG90YWwgc3BhY2UgcmVxdWlyZWQgZm9yIGFyZ3VtZW50cyBhbmQgc3RydWN0CiAgICAg ICByZXR1cm4gYWRkcmVzcyBpbiBhIGZpcnN0IHBhc3MgKGFsbG93aW5nIGZvciAxNi1ieXRlLWFs aWduZWQKLUBAIC0yMzY2LDcgKzIzNjYsNyBAQCBpMzg2X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0 IGdkYmFyY2ggKmdkCitAQCAtMjQxNSw3ICsyNDE1LDcgQEAgaTM4Nl9wdXNoX2R1bW15X2NhbGwg KHN0cnVjdCBnZGJhcmNoICpnZAogIAogICAgZm9yICh3cml0ZV9wYXNzID0gMDsgd3JpdGVfcGFz cyA8IDI7IHdyaXRlX3Bhc3MrKykKICAgICAgewpAQCAtNDk4LDcgKzQ5OCw3IEBAIEluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2kzODYtdGRlcC5jCiAgCiAgICAgICAgaWYgKHN0cnVjdF9y ZXR1cm4pCiAgCXsKLUBAIC0yMzgzLDcgKzIzODMsNyBAQCBpMzg2X3B1c2hfZHVtbXlfY2FsbCAo c3RydWN0IGdkYmFyY2ggKmdkCitAQCAtMjQzMiw3ICsyNDMyLDcgQEAgaTM4Nl9wdXNoX2R1bW15 X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAogIAogICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYXJn czsgaSsrKQogIAl7CkBAIC01MDcsNyArNTA3LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvaTM4Ni10ZGVwLmMKICAKICAJICBpZiAod3JpdGVfcGFzcykKICAJICAgIHsKLUBAIC0y NTkwLDcgKzI1OTAsNyBAQCBpMzg2X3JlZ19zdHJ1Y3RfcmV0dXJuX3AgKHN0cnVjdCBnZGJhcmNo CitAQCAtMjYzOSw3ICsyNjM5LDcgQEAgaTM4Nl9yZWdfc3RydWN0X3JldHVybl9wIChzdHJ1Y3Qg Z2RiYXJjaAogIHsKICAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAg KGdkYmFyY2gpOwogICAgZW51bSB0eXBlX2NvZGUgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CkBA IC01MTYsNyArNTE2LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaTM4Ni10ZGVw LmMKICAKICAgIGdkYl9hc3NlcnQgKGNvZGUgPT0gVFlQRV9DT0RFX1NUUlVDVAogICAgICAgICAg ICAgICAgfHwgY29kZSA9PSBUWVBFX0NPREVfVU5JT04KLUBAIC0zMDQyLDcgKzMwNDIsNyBAQCBz dGF0aWMgaW50CitAQCAtMzA5NCw3ICszMDk0LDcgQEAgc3RhdGljIGludAogIGkzODZfY29udmVy dF9yZWdpc3Rlcl9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAJCQkgaW50IHJlZ251bSwg c3RydWN0IHR5cGUgKnR5cGUpCiAgewpAQCAtNTI1LDcgKzUyNSw3IEBAIEluZGV4OiBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL2kzODYtdGRlcC5jCiAgCiAgICAvKiBWYWx1ZXMgbWF5IGJlIHNwcmVh ZCBhY3Jvc3MgbXVsdGlwbGUgcmVnaXN0ZXJzLiAgTW9zdCBkZWJ1Z2dpbmcKICAgICAgIGZvcm1h dHMgYXJlbid0IGV4cHJlc3NpdmUgZW5vdWdoIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9ucywgc28K LUBAIC0zMDc1LDcgKzMwNzUsNyBAQCBpMzg2X3JlZ2lzdGVyX3RvX3ZhbHVlIChzdHJ1Y3QgZnJh bWVfaW5mCitAQCAtMzEyNyw3ICszMTI3LDcgQEAgaTM4Nl9yZWdpc3Rlcl90b192YWx1ZSAoc3Ry dWN0IGZyYW1lX2luZgogIAkJCWludCAqb3B0aW1pemVkcCwgaW50ICp1bmF2YWlsYWJsZXApCiAg ewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOwpA QCAtNTM0LDcgKzUzNCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2kzODYtdGRl cC5jCiAgCiAgICBpZiAoaTM4Nl9mcF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKICAgICAg cmV0dXJuIGkzODdfcmVnaXN0ZXJfdG9fdmFsdWUgKGZyYW1lLCByZWdudW0sIHR5cGUsIHRvLAot QEAgLTMxMTEsNyArMzExMSw3IEBAIHN0YXRpYyB2b2lkCitAQCAtMzE2Myw3ICszMTYzLDcgQEAg c3RhdGljIHZvaWQKICBpMzg2X3ZhbHVlX3RvX3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUsIGludCByZWdudW0sCiAgCQkJc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICpmcm9tKQogIHsKQEAgLTU0MywxMCArNTQzLDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL2kzODYtdGRlcC5jCiAgCiAgICBpZiAoaTM4Nl9mcF9yZWdudW1fcCAoZ2V0X2ZyYW1l X2FyY2ggKGZyYW1lKSwgcmVnbnVtKSkKICAgICAgewotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvaWE2NC10ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9pYTY0LXRk ZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9pYTY0LXRk ZXAuYwkyMDEyLTExLTA3IDIyOjAwOjQyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvaWE2NC10ZGVwLmMJMjAxMi0xMS0wNyAyMjo0Nzo1Ny40OTE5ODQ3NTYgKzAx MDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2lhNjQtdGRlcC5jCTIwMTMtMDEt MTggMjM6MzY6NTkuOTcwMjkwNDAwICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv aWE2NC10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40NzYzMDc1ODkgKzAxMDAKIEBAIC0zOTc0 LDggKzM5NzQsMTAgQEAgaWE2NF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAog ICAgaW50IGFyZ25vOwogICAgc3RydWN0IHZhbHVlICphcmc7CkBAIC01NjAsMTEgKzU2MCwxMSBA QCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9pYTY0LXRkZXAuYwogICAgaW50IGZsb2F0 cmVnOwogICAgVUxPTkdFU1QgYnNwOwogICAgQ09SRV9BRERSIGZ1bmNkZXNjYWRkciwgcGMsIGds b2JhbF9wb2ludGVyOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaXEyMDAwLXRkZXAu YworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2lxMjAwMC10ZGVwLmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvaXEyMDAwLXRkZXAuYwkyMDEyLTA1 LTE2IDE2OjM1OjA2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv aXEyMDAwLXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ3OjU3LjUwOTk4NDcyOSArMDEwMAotQEAgLTY1 NSw4ICs2NTUsOSBAQCBpcTIwMDBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqCist LS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9pcTIwMDAtdGRlcC5jCTIwMTMtMDEtMTgg MjM6MzY6NTkuOTcwMjkwNDAwICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvaXEy MDAwLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM3OjEyLjQ3NjMwNzU4OSArMDEwMAorQEAgLTY1NCw4 ICs2NTQsOSBAQCBpcTIwMDBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqCiAgICBj b25zdCBiZmRfYnl0ZSAqdmFsOwogICAgYmZkX2J5dGUgYnVmWzRdOwogICAgc3RydWN0IHR5cGUg KnR5cGU7CkBAIC01NzYsMTEgKzU3NiwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9pcTIwMDAtdGRlcC5jCiAgICAvKiBVc2VkIHRvIGNvcHkgc3RydWN0IGFyZ3VtZW50cyBpbnRv IHRoZSBzdGFjay4gICovCiAgICBDT1JFX0FERFIgc3RydWN0X3B0cjsKICAKLUluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL20zMnItdGRlcC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvbTMyci10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3Jp Zy9nZGIvbTMyci10ZGVwLmMJMjAxMi0wNS0xOCAyMzowMjo0OS4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL20zMnItdGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6NTcu NTE2OTg0NzE5ICswMTAwCi1AQCAtNjk2LDcgKzY5Niw3IEBAIG0zMnJfcHVzaF9kdW1teV9jYWxs IChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL20z MnItdGRlcC5jCTIwMTMtMDEtMTggMjM6MzY6NTkuOTcxMjkwNDAyICswMTAwCisrKysgZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvbTMyci10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40NzYzMDc1 ODkgKzAxMDAKK0BAIC02OTUsNyArNjk1LDcgQEAgbTMycl9wdXNoX2R1bW15X2NhbGwgKHN0cnVj dCBnZGJhcmNoICpnZAogICAgQ09SRV9BRERSIHJlZ3ZhbDsKICAgIGdkYl9ieXRlICp2YWw7CiAg ICBnZGJfYnl0ZSB2YWxidWZbTUFYX1JFR0lTVEVSX1NJWkVdOwpAQCAtNTg5LDEwICs1ODksMTAg QEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbTMyci10ZGVwLmMKICAKICAgIC8qIEZp cnN0IGZvcmNlIHNwIHRvIGEgNC1ieXRlIGFsaWdubWVudC4gICovCiAgICBzcCA9IHNwICYgfjM7 Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tNjhrLXRkZXAuYworSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAxMTgvZ2RiL202OGstdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4w LjIwMTIwOTI2Lm9yaWcvZ2RiL202OGstdGRlcC5jCTIwMTItMTEtMDcgMjI6MDI6MzAuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tNjhrLXRkZXAuYwkyMDEyLTEx LTA3IDIyOjQ5OjQ1Ljg4MTgyOTAzMiArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3Jp Zy9nZGIvbTY4ay10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNjo1OS45NzEyOTA0MDIgKzAxMDAKKysr KyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9tNjhrLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM5OjA2 LjQ3NDQ1OTA0MSArMDEwMAogQEAgLTM4NCw3ICszODQsNyBAQCBtNjhrX3JlZ19zdHJ1Y3RfcmV0 dXJuX3AgKHN0cnVjdCBnZGJhcmNoCiAgewogICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9 IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7CkBAIC02MDAsOSArNjAwLDkgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvbTY4ay10ZGVwLmMKIC0gIGludCBsZW4gPSBUWVBFX0xFTkdUSCAo dHlwZSk7CiArICBMT05HRVNUIGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKICAKLSAgIGdkYl9h c3NlcnQgKGNvZGUgPT0gVFlQRV9DT0RFX1NUUlVDVCB8fCBjb2RlID09IFRZUEVfQ09ERV9VTklP Tik7Ci0gCi1AQCAtNTEzLDkgKzUxMyw5IEBAIG02OGtfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2QKKyAgIGdkYl9hc3NlcnQgKGNvZGUgPT0gVFlQRV9DT0RFX1NUUlVDVCB8fCBj b2RlID09IFRZUEVfQ09ERV9VTklPTgorIAkgICAgICB8fCBjb2RlID09IFRZUEVfQ09ERV9DT01Q TEVYKTsKK0BAIC01MTYsOSArNTE2LDkgQEAgbTY4a19wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBn ZGJhcmNoICpnZAogICAgZm9yIChpID0gbmFyZ3MgLSAxOyBpID49IDA7IGktLSkKICAgICAgewog ICAgICAgIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlID0gdmFsdWVfZW5jbG9zaW5nX3R5cGUgKGFy Z3NbaV0pOwpAQCAtNjE1LDEwICs2MTUsMTAgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvbTY4ay10ZGVwLmMKICAKICAgICAgICAvKiBOb24tc2NhbGFycyBiaWdnZXIgdGhhbiA0IGJ5 dGVzIGFyZSBsZWZ0IGFsaWduZWQsIG90aGVycyBhcmUKICAJIHJpZ2h0IGFsaWduZWQuICAqLwot SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbTg4ay10ZGVwLmMKK0luZGV4OiBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi9tODhrLXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4y MDEyMDkyNi5vcmlnL2dkYi9tODhrLXRkZXAuYwkyMDEyLTA1LTE2IDE2OjM1OjA2LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbTg4ay10ZGVwLmMJMjAxMi0xMS0w NyAyMjo0Nzo1Ny41MjA5ODQ3MTQgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcv Z2RiL204OGstdGRlcC5jCTIwMTMtMDEtMTggMjM6MzY6NTkuOTcxMjkwNDAyICswMTAwCisrKysg Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbTg4ay10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40 NzczMDc1OTAgKzAxMDAKIEBAIC0yNjAsMTMgKzI2MCwxMyBAQCBtODhrX3N0b3JlX2FyZ3VtZW50 cyAoc3RydWN0IHJlZ2NhY2hlICpyCiAgewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBn ZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUpOwpAQCAtNjQ2LDEwICs2NDYsMTAgQEAgSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbTg4ay10ZGVwLmMKICAKICAgICAgICBpZiAobTg4a19p bl9yZWdpc3Rlcl9wICh0eXBlKSkKICAJewotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv bWVwLXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL21lcC10ZGVwLmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvbWVwLXRkZXAuYwkyMDEy LTExLTA3IDIyOjAzOjU3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvbWVwLXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ3OjU3LjUyMjk4NDcxMiArMDEwMAorLS0tIGdk Yi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvbWVwLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5 Ljk3MjI5MDQwNCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL21lcC10ZGVwLmMJ MjAxMy0wMS0xOCAyMzozNzoxMi40NzczMDc1OTAgKzAxMDAKIEBAIC0yMjc5LDcgKzIyNzksNyBA QCBwdXNoX2xhcmdlX2FyZ3VtZW50cyAoQ09SRV9BRERSIHNwLCBpbnQKICAKICAgIGZvciAoaSA9 IDA7IGkgPCBhcmdjOyBpKyspCkBAIC02NTksMTAgKzY1OSwxMCBAQCBJbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9tZXAtdGRlcC5jCiAgCiAgICAgICAgaWYgKGFyZ19sZW4gPiBNRVBfR1BS X1NJWkUpCiAgICAgICAgICB7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9taXBzLXRk ZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL21pcHMtdGRlcC5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL21pcHMtdGRlcC5jCTIwMTItMTEt MDcgMjI6MDI6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9t aXBzLXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ3OjU3LjUzNDk4NDY5NCArMDEwMAorLS0tIGdkYi03 LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvbWlwcy10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNjo1OS45 NzUyOTA0MTQgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9taXBzLXRkZXAuYwky MDEzLTAxLTE4IDIzOjM3OjEyLjQ3OTMwNzU5OSArMDEwMAogQEAgLTM5Niw3ICszOTYsNyBAQCBz dGF0aWMgdm9pZAogIG1pcHNfeGZlcl9yZWdpc3RlciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCiAgCQkgICAgaW50IHJlZ19udW0sIGludCBsZW5n dGgsCkBAIC02ODMsNyArNjgzLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbWlw cy10ZGVwLmMKICAgIGlmIChtaXBzX2RlYnVnICYmIG91dCAhPSBOVUxMKQogICAgICB7CiAgICAg ICAgaW50IGk7Ci1AQCAtNDI5NSwxMyArNDI5NSwxMyBAQCBtaXBzX2VhYmlfcHVzaF9kdW1teV9j YWxsIChzdHJ1Y3QgZ2RiYXJjCitAQCAtNDM0NSwxMyArNDM0NSwxMyBAQCBtaXBzX2VhYmlfcHVz aF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjCiAgICAgICAgZ2RiX2J5dGUgdmFsYnVmW01BWF9S RUdJU1RFUl9TSVpFXTsKICAgICAgICBzdHJ1Y3QgdmFsdWUgKmFyZyA9IGFyZ3NbYXJnbnVtXTsK ICAgICAgICBzdHJ1Y3QgdHlwZSAqYXJnX3R5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBl IChhcmcpKTsKQEAgLTcwMCw3ICs3MDAsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9taXBzLXRkZXAuYwogIAogICAgICAgIC8qIEZ1bmN0aW9uIHBvaW50ZXIgYXJndW1lbnRzIHRv IG1pcHMxNiBjb2RlIG5lZWQgdG8gYmUgbWFkZSBpbnRvCiAgICAgICAgICAgbWlwczE2IHBvaW50 ZXJzLiAgKi8KLUBAIC00NTg2LDcgKzQ1ODYsNyBAQCBtaXBzX2VhYmlfcmV0dXJuX3ZhbHVlIChz dHJ1Y3QgZ2RiYXJjaCAqCitAQCAtNDYzNiw3ICs0NjM2LDcgQEAgbWlwc19lYWJpX3JldHVybl92 YWx1ZSAoc3RydWN0IGdkYmFyY2ggKgogIAogIHN0YXRpYyBpbnQKICBtaXBzX24zMm42NF9mcF9h cmdfY2h1bmtfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB0eXBlICphcmdfdHlw ZSwKQEAgLTcwOSw3ICs3MDksNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9taXBz LXRkZXAuYwogIHsKICAgIGludCBpOwogIAotQEAgLTQ2MDEsNyArNDYwMSw3IEBAIG1pcHNfbjMy bjY0X2ZwX2FyZ19jaHVua19wIChzdHJ1Y3QgZ2RiYXIKK0BAIC00NjUxLDcgKzQ2NTEsNyBAQCBt aXBzX24zMm42NF9mcF9hcmdfY2h1bmtfcCAoc3RydWN0IGdkYmFyCiAgCiAgICBmb3IgKGkgPSAw OyBpIDwgVFlQRV9ORklFTERTIChhcmdfdHlwZSk7IGkrKykKICAgICAgewpAQCAtNzE4LDcgKzcx OCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL21pcHMtdGRlcC5jCiAgICAgICAg c3RydWN0IHR5cGUgKmZpZWxkX3R5cGU7CiAgCiAgICAgICAgLyogV2UncmUgb25seSBsb29raW5n IGF0IG5vcm1hbCBmaWVsZHMuICAqLwotQEAgLTQ2NDMsNyArNDY0Myw3IEBAIG1pcHNfbjMybjY0 X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmEKK0BAIC00NjkzLDcgKzQ2OTMsNyBAQCBtaXBz X24zMm42NF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhCiAgICBpbnQgYXJncmVnOwogICAg aW50IGZsb2F0X2FyZ3JlZzsKICAgIGludCBhcmdudW07CkBAIC03MjcsNyArNzI3LDcgQEAgSW5k ZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbWlwcy10ZGVwLmMKICAgIGludCBzdGFja19vZmZz ZXQgPSAwOwogICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3Jk ZXIgKGdkYmFyY2gpOwogICAgQ09SRV9BRERSIGZ1bmNfYWRkciA9IGZpbmRfZnVuY3Rpb25fYWRk ciAoZnVuY3Rpb24sIE5VTEwpOwotQEAgLTQ5OTQsMTEgKzQ5OTQsMTEgQEAgbWlwc19uMzJuNjRf cmV0dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaAorQEAgLTUwNDQsMTEgKzUwNDQsMTEgQEAgbWlw c19uMzJuNjRfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaAogIAkJCQk6IE1JUFNfVjBfUkVH TlVNKTsKICAJICAgZmllbGQgPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBmaWVsZCsrLCByZWdudW0g Kz0gMikKICAJewpAQCAtNzQzLDcgKzc0Myw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL21pcHMtdGRlcC5jCiAgCSAgaWYgKFRZUEVfTEVOR1RIIChUWVBFX0ZJRUxEX1RZUEUgKHR5 cGUsIGZpZWxkKSkgPT0gMTYpCiAgCSAgICB7CiAgCSAgICAgIC8qIEEgMTYtYnl0ZSBsb25nIGRv dWJsZSBmaWVsZCBnb2VzIGluIHR3byBjb25zZWN1dGl2ZQotQEAgLTUwNDAsOCArNTA0MCw4IEBA IG1pcHNfbjMybjY0X3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyY2gKK0BAIC01MDkwLDggKzUw OTAsOCBAQCBtaXBzX24zMm42NF9yZXR1cm5fdmFsdWUgKHN0cnVjdCBnZGJhcmNoCiAgCSAgaWYg KG9mZnNldCArIHhmZXIgPiBUWVBFX0xFTkdUSCAodHlwZSkpCiAgCSAgICB4ZmVyID0gVFlQRV9M RU5HVEggKHR5cGUpIC0gb2Zmc2V0OwogIAkgIGlmIChtaXBzX2RlYnVnKQpAQCAtNzU0LDcgKzc1 NCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL21pcHMtdGRlcC5jCiAgCSAgbWlw c194ZmVyX3JlZ2lzdGVyIChnZGJhcmNoLCByZWdjYWNoZSwKICAJCQkgICAgICBnZGJhcmNoX251 bV9yZWdzIChnZGJhcmNoKSArIHJlZ251bSwKICAJCQkgICAgICB4ZmVyLCBCRkRfRU5ESUFOX1VO S05PV04sIHJlYWRidWYsIHdyaXRlYnVmLAotQEAgLTUwOTksNyArNTA5OSw3IEBAIG1pcHNfbzMy X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2gKK0BAIC01MTQ5LDcgKzUxNDksNyBAQCBt aXBzX28zMl9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoCiAgICBpbnQgYXJncmVnOwog ICAgaW50IGZsb2F0X2FyZ3JlZzsKICAgIGludCBhcmdudW07CkBAIC03NjMsNyArNzYzLDcgQEAg SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbWlwcy10ZGVwLmMKICAgIGludCBzdGFja19v ZmZzZXQgPSAwOwogICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVf b3JkZXIgKGdkYmFyY2gpOwogICAgQ09SRV9BRERSIGZ1bmNfYWRkciA9IGZpbmRfZnVuY3Rpb25f YWRkciAoZnVuY3Rpb24sIE5VTEwpOwotQEAgLTUxNjMsMTMgKzUxNjMsMTMgQEAgbWlwc19vMzJf cHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaAorQEAgLTUyMTMsMTMgKzUyMTMsMTMgQEAg bWlwc19vMzJfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaAogICAgICAgIGNvbnN0IGdk Yl9ieXRlICp2YWw7CiAgICAgICAgc3RydWN0IHZhbHVlICphcmcgPSBhcmdzW2FyZ251bV07CiAg ICAgICAgc3RydWN0IHR5cGUgKmFyZ190eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAo YXJnKSk7CkBAIC03ODAsNyArNzgwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv bWlwcy10ZGVwLmMKICAKICAgICAgICB2YWwgPSB2YWx1ZV9jb250ZW50cyAoYXJnKTsKICAKLUBA IC01NjI3LDggKzU2MjcsOCBAQCBtaXBzX282NF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJh cmNoCitAQCAtNTY3Nyw4ICs1Njc3LDggQEAgbWlwc19vNjRfcHVzaF9kdW1teV9jYWxsIChzdHJ1 Y3QgZ2RiYXJjaAogICAgaW50IGFyZ3JlZzsKICAgIGludCBmbG9hdF9hcmdyZWc7CiAgICBpbnQg YXJnbnVtOwpAQCAtNzkxLDcgKzc5MSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L21pcHMtdGRlcC5jCiAgICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0 ZV9vcmRlciAoZ2RiYXJjaCk7CiAgICBDT1JFX0FERFIgZnVuY19hZGRyID0gZmluZF9mdW5jdGlv bl9hZGRyIChmdW5jdGlvbiwgTlVMTCk7CiAgCi1AQCAtNTY4OSwxMyArNTY4OSwxMyBAQCBtaXBz X282NF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoCitAQCAtNTczOSwxMyArNTczOSwx MyBAQCBtaXBzX282NF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoCiAgICAgICAgZ2Ri X2J5dGUgdmFsYnVmW01BWF9SRUdJU1RFUl9TSVpFXTsKICAgICAgICBzdHJ1Y3QgdmFsdWUgKmFy ZyA9IGFyZ3NbYXJnbnVtXTsKICAgICAgICBzdHJ1Y3QgdHlwZSAqYXJnX3R5cGUgPSBjaGVja190 eXBlZGVmICh2YWx1ZV90eXBlIChhcmcpKTsKQEAgLTgwOCwxMCArODA4LDEwIEBAIEluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL21pcHMtdGRlcC5jCiAgCiAgICAgICAgdmFsID0gdmFsdWVf Y29udGVudHMgKGFyZyk7CiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tbjEwMzAw LXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL21uMTAzMDAtdGRlcC5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL21uMTAzMDAtdGRlcC5j CTIwMTItMDUtMTggMjM6MDI6NDkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9tbjEwMzAwLXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ3OjU3LjU0Mjk4NDY4MiArMDEw MAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvbW4xMDMwMC10ZGVwLmMJMjAxMy0w MS0xOCAyMzozNjo1OS45NzYyOTA0MTYgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi9tbjEwMzAwLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM3OjEyLjQ3OTMwNzU5OSArMDEwMAogQEAg LTEyMjgsNyArMTIyOCw3IEBAIG1uMTAzMDBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJj aAogICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdk YmFyY2gpOwogICAgY29uc3QgaW50IHB1c2hfc2l6ZSA9IHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gs IEVfUENfUkVHTlVNKTsKQEAgLTgyMSwxMCArODIxLDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL21uMTAzMDAtdGRlcC5jCiAgICBpbnQgc3RhY2tfb2Zmc2V0ID0gMDsKICAgIGlu dCBhcmdudW07CiAgICBjaGFyICp2YWwsIHZhbGJ1ZltNQVhfUkVHSVNURVJfU0laRV07Ci1JbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tdC10ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIw MTMwMTE4L2dkYi9tdC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYu b3JpZy9nZGIvbXQtdGRlcC5jCTIwMTItMTEtMDcgMjI6MDA6NDQuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tdC10ZGVwLmMJMjAxMi0xMS0wNyAyMjo0Nzo1Ny41 NDQ5ODQ2ODAgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL210LXRkZXAu YwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk3NjI5MDQxNiArMDEwMAorKysrIGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL210LXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM3OjEyLjQ3OTMwNzU5OSArMDEwMAog QEAgLTc4Myw5ICs3ODMsOSBAQCBtdF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpn ZGJhCiAgICBnZGJfYnl0ZSBidWZbTVRfTUFYX1NUUlVDVF9TSVpFXTsKICAgIGludCBhcmdyZWcg PSBNVF8xU1RfQVJHUkVHOwpAQCAtODM3LDExICs4MzcsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvbXQtdGRlcC5jCiAgICBpbnQgaSwgajsKICAKICAgIC8qIEZpcnN0IGhhbmRs ZSBob3dldmVyIG1hbnkgYXJncyB3ZSBjYW4gZml0IGludG8gTVRfMVNUX0FSR1JFRyB0aHJ1Ci1J bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wcGMtc3lzdi10ZGVwLmMKK0luZGV4OiBnZGIt Ny41LjUwLjIwMTMwMTE4L2dkYi9wcGMtc3lzdi10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny41LjAuMjAxMjA5MjYub3JpZy9nZGIvcHBjLXN5c3YtdGRlcC5jCTIwMTItMDUtMTggMjM6MDI6 NDkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wcGMtc3lzdi10 ZGVwLmMJMjAxMi0xMS0wNyAyMjo0Nzo1Ny41NTE5ODQ2NjkgKzAxMDAKLUBAIC02OSw3ICs2OSw3 IEBAIHBwY19zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGIKKy0tLSBnZGItNy41 LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3BwYy1zeXN2LXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5 Ljk3NzI5MDQxNyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3BwYy1zeXN2LXRk ZXAuYwkyMDEzLTAxLTE4IDIzOjM3OjEyLjQ4MDMwNzYwMiArMDEwMAorQEAgLTY4LDcgKzY4LDcg QEAgcHBjX3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYgogICAgZW51bSBiZmRf ZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwogICAgaW50 IG9wZW5jbF9hYmkgPSBwcGNfc3lzdl91c2Vfb3BlbmNsX2FiaSAodmFsdWVfdHlwZSAoZnVuY3Rp b24pKTsKICAgIFVMT05HRVNUIHNhdmVkX3NwOwpAQCAtODUwLDcgKzg1MCw3IEBAIEluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL3BwYy1zeXN2LXRkZXAuYwogICAgaW50IHdyaXRlX3Bhc3M7 CiAgCiAgICBnZGJfYXNzZXJ0ICh0ZGVwLT53b3Jkc2l6ZSA9PSA0KTsKLUBAIC0xMDAsOSArMTAw LDkgQEAgcHBjX3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYgorQEAgLTk5LDkg Kzk5LDkgQEAgcHBjX3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYgogICAgICAg IC8qIE5leHQgYXZhaWxhYmxlIHZlY3RvciByZWdpc3RlciBmb3IgdmVjdG9yIGFyZ3VtZW50cy4g ICovCiAgICAgICAgaW50IHZyZWcgPSAyOwogICAgICAgIC8qIEFyZ3VtZW50cyBzdGFydCBhYm92 ZSB0aGUgIkxSIHNhdmUgd29yZCIgYW5kICJCYWNrIGNoYWluIi4gICovCkBAIC04NjIsNyArODYy LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcHBjLXN5c3YtdGRlcC5jCiAgCiAg ICAgICAgLyogSWYgdGhlIGZ1bmN0aW9uIGlzIHJldHVybmluZyBhIGBzdHJ1Y3QnLCB0aGVuIHRo ZSBmaXJzdCB3b3JkCiAgICAgICAgICAgKHdoaWNoIHdpbGwgYmUgcGFzc2VkIGluIHIzKSBpcyB1 c2VkIGZvciBzdHJ1Y3QgcmV0dXJuCi1AQCAtMTIxLDcgKzEyMSw3IEBAIHBwY19zeXN2X2FiaV9w dXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGIKK0BAIC0xMjAsNyArMTIwLDcgQEAgcHBjX3N5c3Zf YWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYgogIAl7CiAgCSAgc3RydWN0IHZhbHVlICph cmcgPSBhcmdzW2FyZ25vXTsKICAJICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYg KHZhbHVlX3R5cGUgKGFyZykpOwpAQCAtODcxLDcgKzg3MSw3IEBAIEluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL3BwYy1zeXN2LXRkZXAuYwogIAkgIGNvbnN0IGJmZF9ieXRlICp2YWwgPSB2 YWx1ZV9jb250ZW50cyAoYXJnKTsKICAKICAJICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfRkxUICYmIGxlbiA8PSA4Ci1AQCAtMTU1NywxNCArMTU1NywxNCBAQCBwcGM2NF9zeXN2 X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnCitAQCAtMTU1NiwxNCArMTU1NiwxNCBAQCBw cGM2NF9zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnCiAgCSAgICB9CiAgCSAgZWxz ZQogIAkgICAgewpAQCAtODg4LDcgKzg4OCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL3BwYy1zeXN2LXRkZXAuYwogIAkJICAgICAgaWYgKGxlbiA+IHRkZXAtPndvcmRzaXplKQog IAkJCWxlbiA9IHRkZXAtPndvcmRzaXplOwogIAkJICAgICAgbWVtc2V0IChyZWd2YWwsIDAsIHNp emVvZiByZWd2YWwpOwotQEAgLTE1OTIsNyArMTU5Miw3IEBAIHBwYzY0X3N5c3ZfYWJpX3B1c2hf ZHVtbXlfY2FsbCAoc3RydWN0IGcKK0BAIC0xNTkxLDcgKzE1OTEsNyBAQCBwcGM2NF9zeXN2X2Fi aV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnCiAgCQkgICAgIHJlZ2lzdGVyLiAgV29yayBhcm91 bmQgdGhpcyBieSBhbHdheXMgd3JpdGluZyB0aGUKICAJCSAgICAgdmFsdWUgdG8gbWVtb3J5LiAg Rm9ydHVuYXRlbHksIGRvaW5nIHRoaXMKICAJCSAgICAgc2ltcGxpZmllcyB0aGUgY29kZS4gICov CkBAIC04OTcsMTAgKzg5NywxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wcGMt c3lzdi10ZGVwLmMKICAJCSAgaWYgKGxlbiA8IHRkZXAtPndvcmRzaXplKQogIAkJICAgIHdyaXRl X21lbW9yeSAoZ3BhcmFtICsgdGRlcC0+d29yZHNpemUgLSBsZW4sIHZhbCwgbGVuKTsKICAJCSAg ZWxzZQotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcmw3OC10ZGVwLmMKK0luZGV4OiBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi9ybDc4LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9ybDc4LXRkZXAuYwkyMDEyLTA1LTE4IDIzOjAyOjUwLjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcmw3OC10ZGVwLmMJMjAx Mi0xMS0wNyAyMjo0Nzo1Ny41NTc5ODQ2NjAgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4 Lm9yaWcvZ2RiL3JsNzgtdGRlcC5jCTIwMTMtMDEtMTggMjM6MzY6NTkuOTc3MjkwNDE3ICswMTAw CisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcmw3OC10ZGVwLmMJMjAxMy0wMS0xOCAyMzoz NzoxMi40ODAzMDc2MDIgKzAxMDAKIEBAIC0xMDE5LDggKzEwMTksOCBAQCBybDc4X3B1c2hfZHVt bXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCiAgICBmb3IgKGkgPSBuYXJncyAtIDE7IGkgPj0g MDsgaS0tKQogICAgICB7CkBAIC05MTIsMTEgKzkxMiwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9ybDc4LXRkZXAuYwogIAogICAgICAgIHNwIC09IGNvbnRhaW5lcl9sZW47CiAg ICAgICAgd3JpdGVfbWVtb3J5IChybDc4X21ha2VfZGF0YV9hZGRyZXNzIChzcCksCi1JbmRleDog Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9yczYwMDAtYWl4LXRkZXAuYworSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAxMTgvZ2RiL3JzNjAwMC1haXgtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3JzNjAwMC1haXgtdGRlcC5jCTIwMTItMDUtMTggMjM6MDI6 NTAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9yczYwMDAtYWl4 LXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ3OjU3LjU2MDk4NDY1NyArMDEwMAotQEAgLTE5Nyw5ICsx OTcsOSBAQCByczYwMDBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqCistLS0gZ2Ri LTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9yczYwMDAtYWl4LXRkZXAuYwkyMDEzLTAxLTE4IDIz OjM2OjU5Ljk3ODI5MDQxOCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3JzNjAw MC1haXgtdGRlcC5jCTIwMTMtMDEtMTggMjM6Mzc6MTIuNDgwMzA3NjAyICswMTAwCitAQCAtMTk4 LDkgKzE5OCw5IEBAIHJzNjAwMF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICoKICAg IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwogICAg ZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gp OwogICAgaW50IGlpOwpAQCAtOTI4LDcgKzkyOCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL3JzNjAwMC1haXgtdGRlcC5jCiAgICBnZGJfYnl0ZSB0bXBfYnVmZmVyWzUwXTsKICAg IGludCBmX2FyZ25vID0gMDsJCS8qIGN1cnJlbnQgZmxvYXRpbmcgcG9pbnQgYXJnbm8gKi8KICAg IGludCB3b3Jkc2l6ZSA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCktPndvcmRzaXplOwotQEAgLTMy Nyw3ICszMjcsNyBAQCByYW5fb3V0X29mX3JlZ2lzdGVyc19mb3JfYXJndW1lbnRzOgorQEAgLTMy OCw3ICszMjgsNyBAQCByYW5fb3V0X29mX3JlZ2lzdGVyc19mb3JfYXJndW1lbnRzOgogIAogICAg aWYgKChhcmdubyA8IG5hcmdzKSB8fCBhcmdieXRlcykKICAgICAgewpAQCAtOTM3LDExICs5Mzcs MTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcnM2MDAwLWFpeC10ZGVwLmMKICAK ICAgICAgICBpZiAoYXJnYnl0ZXMpCiAgCXsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L3MzOTAtdGRlcC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvczM5MC10ZGVwLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvczM5MC10ZGVwLmMJ MjAxMi0xMS0wNyAyMjowMzo1Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL3MzOTAtdGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6NTcuNTY5OTg0NjQ0ICswMTAwCi1A QCAtMjQ4MSw3ICsyNDgxLDcgQEAgaXNfZmxvYXRfbGlrZSAoc3RydWN0IHR5cGUgKnR5cGUpCist LS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9zMzkwLXRkZXAuYwkyMDEzLTAxLTE4IDIz OjM2OjU5Ljk3OTI5MDQyMCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3MzOTAt dGRlcC5jCTIwMTMtMDEtMTggMjM6Mzc6MTIuNDgwMzA3NjAyICswMTAwCitAQCAtMjQ4Miw3ICsy NDgyLDcgQEAgaXNfZmxvYXRfbGlrZSAoc3RydWN0IHR5cGUgKnR5cGUpCiAgCiAgCiAgc3RhdGlj IGludApAQCAtOTUwLDcgKzk1MCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3Mz OTAtdGRlcC5jCiAgewogICAgcmV0dXJuICgobiAmIChuIC0gMSkpID09IDApOwogIH0KLUBAIC0y NjY3LDcgKzI2NjcsNyBAQCBzMzkwX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdk CitAQCAtMjY2OCw3ICsyNjY4LDcgQEAgczM5MF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJh cmNoICpnZAogICAgICAgIHsKICAgICAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0gYXJnc1tpXTsK ICAgICAgICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAo YXJnKSk7CkBAIC05NTksMTAgKzk1OSwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9zMzkwLXRkZXAuYwogIAogIAlpZiAoczM5MF9mdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVu Y2UgKHR5cGUpKQogIAkgIHsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3Njb3JlLXRk ZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Njb3JlLXRkZXAuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9zY29yZS10ZGVwLmMJMjAxMi0w NS0xOCAyMzowMjo1MC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L3Njb3JlLXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ3OjU3LjU3MTk4NDY0MCArMDEwMAorLS0tIGdk Yi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvc2NvcmUtdGRlcC5jCTIwMTMtMDEtMTggMjM6MzY6 NTkuOTc5MjkwNDIwICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc2NvcmUtdGRl cC5jCTIwMTMtMDEtMTggMjM6Mzc6MTIuNDgxMzA3NjA0ICswMTAwCiBAQCAtNTE1LDcgKzUxNSw3 IEBAIHNjb3JlX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmcKICAgIGVudW0gYmZk X2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsKICAgIGlu dCBhcmdudW07CkBAIC05NzIsMTEgKzk3MiwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9zY29yZS10ZGVwLmMKICAgIENPUkVfQUREUiBzdGFja19vZmZzZXQgPSAwOwogICAgQ09S RV9BRERSIGFkZHIgPSAwOwogIAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvc2gtdGRl cC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc2gtdGRlcC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3NoLXRkZXAuYwkyMDEyLTExLTA3IDIy OjAwOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvc2gtdGRl cC5jCTIwMTItMTEtMDcgMjI6NDc6NTcuNTc5OTg0NjI4ICswMTAwCi1AQCAtODA1LDcgKzgwNSw3 IEBAIHNoX3NraXBfcHJvbG9ndWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmMKKy0tLSBnZGItNy41 LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3NoLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk4MDI5 MDQyMyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3NoLXRkZXAuYwkyMDEzLTAx LTE4IDIzOjM3OjEyLjQ4MTMwNzYwNCArMDEwMAorQEAgLTgwNyw3ICs4MDcsNyBAQCBzaF9za2lw X3Byb2xvZ3VlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjCiAgc3RhdGljIGludAogIHNoX3VzZV9z dHJ1Y3RfY29udmVudGlvbiAoaW50IHJlbmVzYXNfYWJpLCBzdHJ1Y3QgdHlwZSAqdHlwZSkKICB7 CkBAIC05ODUsNyArOTg1LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvc2gtdGRl cC5jCiAgICBpbnQgbmVsZW0gPSBUWVBFX05GSUVMRFMgKHR5cGUpOwogIAogICAgLyogVGhlIFJl bmVzYXMgQUJJIHJldHVybnMgYWdncmVnYXRlIHR5cGVzIGFsd2F5cyBvbiBzdGFjay4gICovCi1A QCAtOTA3LDcgKzkwNyw3IEBAIHNoX2ZyYW1lX2FsaWduIChzdHJ1Y3QgZ2RiYXJjaCAqaWdub3Jl LAorQEAgLTkwOSw3ICs5MDksNyBAQCBzaF9mcmFtZV9hbGlnbiAoc3RydWN0IGdkYmFyY2ggKmln bm9yZSwKICAKICAvKiBIZWxwZXIgZnVuY3Rpb24gdG8ganVzdGlmeSB2YWx1ZSBpbiByZWdpc3Rl ciBhY2NvcmRpbmcgdG8gZW5kaWFuZXNzLiAgKi8KICBzdGF0aWMgY2hhciAqCkBAIC05OTQsNyAr OTk0LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvc2gtdGRlcC5jCiAgewogICAg c3RhdGljIGNoYXIgdmFsYnVmWzRdOwogIAotQEAgLTEwNjcsNyArMTA2Nyw4IEBAIHNoX3B1c2hf ZHVtbXlfY2FsbF9mcHUgKHN0cnVjdCBnZGJhcmNoICoKK0BAIC0xMDY5LDcgKzEwNjksOCBAQCBz aF9wdXNoX2R1bW15X2NhbGxfZnB1IChzdHJ1Y3QgZ2RiYXJjaCAqCiAgICBzdHJ1Y3QgdHlwZSAq dHlwZTsKICAgIENPUkVfQUREUiByZWd2YWw7CiAgICBjaGFyICp2YWw7CkBAIC0xMDA0LDcgKzEw MDQsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9zaC10ZGVwLmMKICAgIGludCBw YXNzX29uX3N0YWNrID0gMDsKICAgIGludCB0cmVhdF9hc19mbHQ7CiAgICBpbnQgbGFzdF9yZWdf YXJnID0gSU5UX01BWDsKLUBAIC0xMjA4LDcgKzEyMDksOCBAQCBzaF9wdXNoX2R1bW15X2NhbGxf bm9mcHUgKHN0cnVjdCBnZGJhcmNoCitAQCAtMTIxMCw3ICsxMjExLDggQEAgc2hfcHVzaF9kdW1t eV9jYWxsX25vZnB1IChzdHJ1Y3QgZ2RiYXJjaAogICAgc3RydWN0IHR5cGUgKnR5cGU7CiAgICBD T1JFX0FERFIgcmVndmFsOwogICAgY2hhciAqdmFsOwpAQCAtMTAxNCwxMCArMTAxNCwxMCBAQCBJ bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9zaC10ZGVwLmMKICAgIGludCBwYXNzX29uX3N0 YWNrID0gMDsKICAgIGludCBsYXN0X3JlZ19hcmcgPSBJTlRfTUFYOwogIAotSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvc2g2NC10ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi9zaDY0LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmln L2dkYi9zaDY0LXRkZXAuYwkyMDEyLTA2LTA2IDIwOjAzOjUzLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvc2g2NC10ZGVwLmMJMjAxMi0xMS0wNyAyMjo0Nzo1Ny41 ODI5ODQ2MjUgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3NoNjQtdGRl cC5jCTIwMTMtMDEtMTggMjM6MzY6NTkuOTgwMjkwNDIzICswMTAwCisrKysgZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvc2g2NC10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40ODIzMDc2MDYgKzAx MDAKIEBAIC0xMDU4LDcgKzEwNTgsNyBAQCBzaDY0X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdk YmFyY2ggKmdkCiAgCQkgICAgICBDT1JFX0FERFIgc3RydWN0X2FkZHIpCiAgewpAQCAtMTAzNiwx MSArMTAzNiwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9zaDY0LXRkZXAuYwog ICAgaW50IGFyZ3JlZ19zaXplOwogICAgaW50IGZwX2FyZ3NbMTJdOwogIAotSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvc3BhcmMtdGRlcC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvc3BhcmMtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9y aWcvZ2RiL3NwYXJjLXRkZXAuYwkyMDEyLTExLTA3IDIyOjAwOjQzLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvc3BhcmMtdGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6 NTcuNTkzOTg0NjA5ICswMTAwCi1AQCAtNDcwLDcgKzQ3MCw3IEBAIHNwYXJjMzJfc3RvcmVfYXJn dW1lbnRzIChzdHJ1Y3QgcmVnY2FjaGUKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2Ri L3NwYXJjLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk4MTI5MDQyNyArMDEwMAorKysrIGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL3NwYXJjLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM3OjEyLjQ4 MjMwNzYwNiArMDEwMAorQEAgLTQ3MSw3ICs0NzEsNyBAQCBzcGFyYzMyX3N0b3JlX2FyZ3VtZW50 cyAoc3RydWN0IHJlZ2NhY2hlCiAgICBmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKICAgICAg ewogICAgICAgIHN0cnVjdCB0eXBlICp0eXBlID0gdmFsdWVfdHlwZSAoYXJnc1tpXSk7CkBAIC0x MDQ5LDEwICsxMDQ5LDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3NwYXJjLXRk ZXAuYwogIAogICAgICAgIGlmIChzcGFyY19zdHJ1Y3R1cmVfb3JfdW5pb25fcCAodHlwZSkKICAJ ICB8fCAoc3BhcmNfZmxvYXRpbmdfcCAodHlwZSkgJiYgbGVuID09IDE2KQotSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvc3BhcmM2NC10ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMw MTE4L2dkYi9zcGFyYzY0LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDky Ni5vcmlnL2dkYi9zcGFyYzY0LXRkZXAuYwkyMDEyLTA1LTE2IDE2OjM1OjA3LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvc3BhcmM2NC10ZGVwLmMJMjAxMi0xMS0w NyAyMjo0Nzo1Ny41OTU5ODQ2MDUgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcv Z2RiL3NwYXJjNjQtdGRlcC5jCTIwMTMtMDEtMTggMjM6MzY6NTkuOTgyMjkwNDMwICswMTAwCisr KysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc3BhcmM2NC10ZGVwLmMJMjAxMy0wMS0xOCAyMzoz NzoxMi40ODIzMDc2MDYgKzAxMDAKIEBAIC02MzksNyArNjM5LDggQEAgc3BhcmM2NF8xNl9ieXRl X2FsaWduX3AgKHN0cnVjdCB0eXBlICp0eQogIAogIHN0YXRpYyB2b2lkCkBAIC0xMTA4LDExICsx MTA4LDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3NwYXJjNjQtdGRlcC5jCiAg ICAgICAgaW50IHJlZ251bSA9IC0xOwogICAgICAgIGdkYl9ieXRlIGJ1ZlsxNl07CiAgCi1JbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9zcHUtdGRlcC5jCitJbmRleDogZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvc3B1LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDky Ni5vcmlnL2dkYi9zcHUtdGRlcC5jCTIwMTItMTEtMDcgMjI6MDk6MjQuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9zcHUtdGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6 NTcuNTk4OTg0NjAyICswMTAwCi1AQCAtMTM3Miw3ICsxMzcyLDcgQEAgc3B1X3B1c2hfZHVtbXlf Y2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkYgorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9n ZGIvc3B1LXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk4MjI5MDQzMCArMDEwMAorKysrIGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL3NwdS10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40ODMz MDc2MDcgKzAxMDAKK0BAIC0xMzczLDcgKzEzNzMsNyBAQCBzcHVfcHVzaF9kdW1teV9jYWxsIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiCiAgICAgICAgc3RydWN0IHZhbHVlICphcmcgPSBhcmdzW2ldOwog ICAgICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJn KSk7CiAgICAgICAgY29uc3QgZ2RiX2J5dGUgKmNvbnRlbnRzID0gdmFsdWVfY29udGVudHMgKGFy Zyk7CkBAIC0xMTIxLDcgKzExMjEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9z cHUtdGRlcC5jCiAgCiAgICAgICAgLyogSWYgdGhlIGFyZ3VtZW50IGRvZXNuJ3Qgd2hvbGx5IGZp dCBpbnRvIHJlZ2lzdGVycywgaXQgYW5kCiAgCSBhbGwgc3Vic2VxdWVudCBhcmd1bWVudHMgZ28g dG8gdGhlIHN0YWNrLiAgKi8KLUBAIC0xNDA0LDcgKzE0MDQsNyBAQCBzcHVfcHVzaF9kdW1teV9j YWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCitAQCAtMTQwNSw3ICsxNDA1LDcgQEAgc3B1X3B1c2hf ZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkYgogIAl7CiAgCSAgc3RydWN0IHZhbHVlICph cmcgPSBhcmdzW2ldOwogIAkgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFs dWVfdHlwZSAoYXJnKSk7CkBAIC0xMTMwLDIwICsxMTMwLDIwIEBAIEluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL3NwdS10ZGVwLmMKICAJICBpbnQgcHJlZmVycmVkX3Nsb3Q7CiAgCSAgCiAg CSAgaWYgKHNwdV9zY2FsYXJfdmFsdWVfcCAodHlwZSkpCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi90aWM2eC10ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90aWM2 eC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvdGlj NngtdGRlcC5jCTIwMTItMDYtMDggMTY6MjQ6NTcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi90aWM2eC10ZGVwLmMJMjAxMi0xMS0wNyAyMjo1MDozMS43OTI3NjMx NzggKzAxMDAKLUBAIC05MTgsNyArOTE4LDcgQEAgdGljNnhfcHVzaF9kdW1teV9jYWxsIChzdHJ1 Y3QgZ2RiYXJjaCAqZworLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdGljNngtdGRl cC5jCTIwMTMtMDEtMTggMjM6MzY6NTkuOTgzMjkwNDMyICswMTAwCisrKysgZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvdGljNngtdGRlcC5jCTIwMTMtMDEtMTggMjM6Mzk6MjcuNzcwNDg0NTE2ICsw MTAwCitAQCAtODk2LDcgKzg5Niw3IEBAIHRpYzZ4X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdk YmFyY2ggKmcKKyAgIGludCBhcmdyZWcgPSAwOwogICAgaW50IGFyZ251bTsKLSAgIGludCBsZW4g PSAwOwogICAgaW50IHN0YWNrX29mZnNldCA9IDQ7CiAtICBpbnQgcmVmZXJlbmNlc19vZmZzZXQg PSA0OwogKyAgTE9OR0VTVCByZWZlcmVuY2VzX29mZnNldCA9IDQ7CiAgICBDT1JFX0FERFIgZnVu Y19hZGRyID0gZmluZF9mdW5jdGlvbl9hZGRyIChmdW5jdGlvbiwgTlVMTCk7CiAgICBlbnVtIGJm ZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7CiAgICBz dHJ1Y3QgdHlwZSAqZnVuY190eXBlID0gdmFsdWVfdHlwZSAoZnVuY3Rpb24pOwotQEAgLTk1Miw3 ICs5NTIsNyBAQCB0aWM2eF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnCitAQCAt OTMwLDcgKzkzMCw3IEBAIHRpYzZ4X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmcK ICAgIC8qIE5vdyBtYWtlIHNwYWNlIG9uIHRoZSBzdGFjayBmb3IgdGhlIGFyZ3MuICAqLwogICAg Zm9yIChhcmdudW0gPSAwOyBhcmdudW0gPCBuYXJnczsgYXJnbnVtKyspCiAgICAgIHsKQEAgLTEx NTIsNyArMTE1Miw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3RpYzZ4LXRkZXAu YwogICAgICAgIGlmIChhcmdudW0gPj0gMTAgLSBhcmdyZWcpCiAgCXJlZmVyZW5jZXNfb2Zmc2V0 ICs9IGxlbjsKICAgICAgICBzdGFja19vZmZzZXQgKz0gbGVuOwotQEAgLTk3MSw3ICs5NzEsNyBA QCB0aWM2eF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnCitAQCAtOTQ5LDcgKzk0 OSw3IEBAIHRpYzZ4X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmcKICAgICAgICBj b25zdCBnZGJfYnl0ZSAqdmFsOwogICAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0gYXJnc1thcmdu dW1dOwogICAgICAgIHN0cnVjdCB0eXBlICphcmdfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVl X3R5cGUgKGFyZykpOwpAQCAtMTE2MSw3ICsxMTYxLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvdGljNngtdGRlcC5jCiAgICAgICAgZW51bSB0eXBlX2NvZGUgdHlwZWNvZGUgPSBU WVBFX0NPREUgKGFyZ190eXBlKTsKICAKICAgICAgICB2YWwgPSB2YWx1ZV9jb250ZW50cyAoYXJn KTsKLUBAIC0xMTMxLDcgKzExMzEsOCBAQCB0aWM2eF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBn ZGJhcmNoICpnCitAQCAtMTEwOSw3ICsxMTA5LDggQEAgdGljNnhfcHVzaF9kdW1teV9jYWxsIChz dHJ1Y3QgZ2RiYXJjaCAqZwogIAkgICAgfQogIAkgIGVsc2UKICAJICAgIGludGVybmFsX2Vycm9y IChfX0ZJTEVfXywgX19MSU5FX18sCkBAIC0xMTcxLDEwICsxMTcxLDEwIEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL3RpYzZ4LXRkZXAuYwogIAogIAkgIGFkZHIgPSBzcCArIHN0YWNr X29mZnNldDsKICAJICB3cml0ZV9tZW1vcnkgKGFkZHIsIHZhbCwgbGVuKTsKLUluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL3RpbGVneC10ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMw MTE4L2dkYi90aWxlZ3gtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2 Lm9yaWcvZ2RiL3RpbGVneC10ZGVwLmMJMjAxMi0xMS0wNyAyMjowMDo0NC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3RpbGVneC10ZGVwLmMJMjAxMi0xMS0wNyAy Mjo0Nzo1Ny42MTA5ODQ1ODQgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2Ri L3RpbGVneC10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNjo1OS45ODMyOTA0MzIgKzAxMDAKKysrKyBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi90aWxlZ3gtdGRlcC5jCTIwMTMtMDEtMTggMjM6Mzc6MTIu NDgzMzA3NjA3ICswMTAwCiBAQCAtMjkxLDcgKzI5MSw3IEBAIHRpbGVneF9wdXNoX2R1bW15X2Nh bGwgKHN0cnVjdCBnZGJhcmNoICoKICAgIENPUkVfQUREUiBzdGFja19kZXN0ID0gc3A7CiAgICBp bnQgYXJncmVnID0gVElMRUdYX1IwX1JFR05VTTsKQEAgLTExODQsMTEgKzExODQsMTEgQEAgSW5k ZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdGlsZWd4LXRkZXAuYwogICAgc3RhdGljIGNvbnN0 IGdkYl9ieXRlIHR3b196ZXJvX3dvcmRzWzhdID0geyAwIH07CiAgCiAgICAvKiBJZiBzdHJ1Y3Rf cmV0dXJuIGlzIDEsIHRoZW4gdGhlIHN0cnVjdCByZXR1cm4gYWRkcmVzcyB3aWxsCi1JbmRleDog Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92ODUwLXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL3Y4NTAtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2 Lm9yaWcvZ2RiL3Y4NTAtdGRlcC5jCTIwMTItMDUtMTggMjM6MDI6NTAuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92ODUwLXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ3 OjU3LjYxNzk4NDU3NSArMDEwMAotQEAgLTgwOSw3ICs4MDksNyBAQCB2ODUwX3B1c2hfZHVtbXlf Y2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dk Yi92ODUwLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk4NDI5MDQzNCArMDEwMAorKysrIGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Y4NTAtdGRlcC5jCTIwMTMtMDEtMTggMjM6Mzc6MTIuNDg0 MzA3NjA4ICswMTAwCitAQCAtODA4LDcgKzgwOCw3IEBAIHY4NTBfcHVzaF9kdW1teV9jYWxsIChz dHJ1Y3QgZ2RiYXJjaCAqZ2QKICAgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJj aF9ieXRlX29yZGVyIChnZGJhcmNoKTsKICAgIGludCBhcmdyZWc7CiAgICBpbnQgYXJnbnVtOwpA QCAtMTE5Nyw3ICsxMTk3LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdjg1MC10 ZGVwLmMKICAgIGludCBzdGFja19vZmZzZXQ7CiAgCiAgICAvKiBUaGUgb2Zmc2V0IG9udG8gdGhl IHN0YWNrIGF0IHdoaWNoIHdlIHdpbGwgc3RhcnQgY29weWluZyBwYXJhbWV0ZXJzCi1AQCAtODM0 LDcgKzgzNCw3IEBAIHY4NTBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKK0BA IC04MzMsNyArODMzLDcgQEAgdjg1MF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpn ZAogICAgICAgaW4gZm91ciByZWdpc3RlcnMgYXZhaWxhYmxlLiAgTG9vcCB0aHJ1IGFyZ3MgZnJv bSBmaXJzdCB0byBsYXN0LiAgKi8KICAgIGZvciAoYXJnbnVtID0gMDsgYXJnbnVtIDwgbmFyZ3M7 IGFyZ251bSsrKQogICAgICB7CkBAIC0xMjA2LDExICsxMjA2LDExIEBAIEluZGV4OiBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL3Y4NTAtdGRlcC5jCiAgICAgICAgZ2RiX2J5dGUgKnZhbDsKICAgICAg ICBnZGJfYnl0ZSB2YWxidWZbdjg1MF9yZWdfc2l6ZV07CiAgCi1JbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi92YXgtdGRlcC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdmF4 LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi92YXgt dGRlcC5jCTIwMTItMTEtMDcgMjI6NDY6NTYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi92YXgtdGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6NTcuNjE4OTg0NTczICsw MTAwCi1AQCAtMTE2LDcgKzExNiw3IEBAIHZheF9zdG9yZV9hcmd1bWVudHMgKHN0cnVjdCByZWdj YWNoZSAqcmUKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3ZheC10ZGVwLmMJMjAx My0wMS0xOCAyMzozNjo1OS45ODQyOTA0MzQgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi92YXgtdGRlcC5jCTIwMTMtMDEtMTggMjM6Mzc6MTIuNDg0MzA3NjA4ICswMTAwCitAQCAt MTE1LDcgKzExNSw3IEBAIHZheF9zdG9yZV9hcmd1bWVudHMgKHN0cnVjdCByZWdjYWNoZSAqcmUK ICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2ggKHJlZ2NhY2hl KTsKICAgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChn ZGJhcmNoKTsKICAgIGdkYl9ieXRlIGJ1Zls0XTsKQEAgLTEyMTksNyArMTIxOSw3IEBAIEluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZheC10ZGVwLmMKICAgIGludCBpOwogIAogICAgLyog V2UgY3JlYXRlIGFuIGFyZ3VtZW50IGxpc3Qgb24gdGhlIHN0YWNrLCBhbmQgbWFrZSB0aGUgYXJn dW1lbnQKLUBAIC0xMjUsNyArMTI1LDcgQEAgdmF4X3N0b3JlX2FyZ3VtZW50cyAoc3RydWN0IHJl Z2NhY2hlICpyZQorQEAgLTEyNCw3ICsxMjQsNyBAQCB2YXhfc3RvcmVfYXJndW1lbnRzIChzdHJ1 Y3QgcmVnY2FjaGUgKnJlCiAgICAvKiBQdXNoIGFyZ3VtZW50cyBpbiByZXZlcnNlIG9yZGVyLiAg Ki8KICAgIGZvciAoaSA9IG5hcmdzIC0gMTsgaSA+PSAwOyBpLS0pCiAgICAgIHsKQEAgLTEyMjgs MTAgKzEyMjgsMTAgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmF4LXRkZXAuYwog IAogICAgICAgIHNwIC09IChsZW4gKyAzKSAmIH4zOwogICAgICAgIGNvdW50ICs9IChsZW4gKyAz KSAvIDQ7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi94c3Rvcm15MTYtdGRlcC5jCitJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIveHN0b3JteTE2LXRkZXAuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi94c3Rvcm15MTYtdGRlcC5jCTIwMTIt MTEtMDcgMjI6MDA6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi94c3Rvcm15MTYtdGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6NTcuNjI2OTg0NTYyICswMTAwCist LS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi94c3Rvcm15MTYtdGRlcC5jCTIwMTMtMDEt MTggMjM6MzY6NTkuOTg0MjkwNDM0ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv eHN0b3JteTE2LXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM3OjEyLjQ4NDMwNzYwOCArMDEwMAogQEAg LTIzNSw4ICsyMzUsOSBAQCB4c3Rvcm15MTZfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJj CiAgICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2Ri YXJjaCk7CiAgICBDT1JFX0FERFIgc3RhY2tfZGVzdCA9IHNwOwpAQCAtMTI0NCwxMCArMTI0NCwx MCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi94c3Rvcm15MTYtdGRlcC5jCiAgICBj b25zdCBnZGJfYnl0ZSAqdmFsOwogICAgY2hhciBidWZbeHN0b3JteTE2X3BjX3NpemVdOwogIAot SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIveHRlbnNhLXRkZXAuYworSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAxMTgvZ2RiL3h0ZW5zYS10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjAuMjAxMjA5MjYub3JpZy9nZGIveHRlbnNhLXRkZXAuYwkyMDEyLTA1LTE4IDIzOjAyOjUxLjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIveHRlbnNhLXRkZXAuYwky MDEyLTExLTA3IDIyOjQ3OjU3LjYyOTk4NDU1NyArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAx MTgub3JpZy9nZGIveHRlbnNhLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk4NTI5MDQzNiAr MDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3h0ZW5zYS10ZGVwLmMJMjAxMy0wMS0x OCAyMzozNzoxMi40ODQzMDc2MDggKzAxMDAKIEBAIC0xNjUzLDggKzE2NTMsNyBAQCB4dGVuc2Ff c3RvcmVfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgdHlwZSAqCiAgCiAgICAgICAgaWYgKGxlbiA+IChj YWxsc2l6ZSA+IDggPyA4IDogMTYpKQoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBv cy0yNG9mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjRvZjI1LnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWQ4NDM5Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6 Nzk1NDI0LWJpdHBvcy0yNG9mMjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBA QAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wOS9tc2cwMDE2MC5odG1s Ci0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA5LzI2IDIzOjUzOjUzCTEuMTQ3MDkKLSMj IyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA5LzI3IDA4OjU3OjE0CTEuMTQ3MTAKLSMjIC0xLDMg KzEsMTYgQEAKLSsyMDEyLTA5LTI3ICBTaWRkaGVzaCBQb3lhcmVrYXIgIDxzaWRkaGVzaEByZWRo YXQuY29tPgotKwotKwkqIGdkYnR5cGVzLmMgKGxvb2t1cF9hcnJheV9yYW5nZV90eXBlKTogRXhw YW5kIHBhcmFtZXRlcnMKLSsJTE9XX0JPVU5EIGFuZCBISUdIX0JPVU5EIHRvIExPTkdFU1QuCi0r CShsb29rdXBfc3RyaW5nX3JhbmdlX3R5cGUpOiBMaWtld2lzZS4KLSsJKiBnZGJ0eXBlcy5oIChs b29rdXBfYXJyYXlfcmFuZ2VfdHlwZSk6IExpa2V3aXNlLgotKwkobG9va3VwX3N0cmluZ19yYW5n ZV90eXBlKTogTGlrZXdpc2UuCi0rCSogdmFsb3BzLmMgKHZhbHVlX2NzdHJpbmcpOiBFeHBhbmQg cGFyYW1ldGVyIExFTiB0byBzc2l6ZV90LgotKwlFeHBhbmQgSElHSEJPVU5EIHRvIHNzaXplX3Qu Ci0rCSh2YWx1ZV9zdHJpbmcpOiBMaWtld2lzZS4KLSsJKiB2YWx1ZS5oICh2YWx1ZV9jc3RyaW5n KTogRXhwYW5kIHBhcmFtZXRlciBMRU4gdG8gc3NpemVfdC4KLSsJKHZhbHVlX3N0cmluZyk6IExp a2V3aXNlLgotKwotIDIwMTItMDktMjcgIFlhbyBRaSAgPHlhb0Bjb2Rlc291cmNlcnkuY29tPgot IAotIAlQUiBicmVha3BvaW50cy8xMzg5OAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv Z2RidHlwZXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9n ZGJ0eXBlcy5jCTIwMTItMTEtMDcgMjI6MDk6NTcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9nZGJ0eXBlcy5jCTIwMTItMTEtMDcgMjI6NTA6NDcuMDQ4NzQxMTY0 ICswMTAwCi1AQCAtMTAyMiw3ICsxMDIyLDcgQEAgY3JlYXRlX2FycmF5X3R5cGUgKHN0cnVjdCB0 eXBlICpyZXN1bHRfdAotIAotIHN0cnVjdCB0eXBlICoKLSBsb29rdXBfYXJyYXlfcmFuZ2VfdHlw ZSAoc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSwKLS0JCQkgaW50IGxvd19ib3VuZCwgaW50IGhp Z2hfYm91bmQpCi0rCQkJIExPTkdFU1QgbG93X2JvdW5kLCBMT05HRVNUIGhpZ2hfYm91bmQpCi0g ewotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoIChlbGVtZW50X3R5 cGUpOwotICAgc3RydWN0IHR5cGUgKmluZGV4X3R5cGUgPSBidWlsdGluX3R5cGUgKGdkYmFyY2gp LT5idWlsdGluX2ludDsKLUBAIC0xMDU4LDcgKzEwNTgsNyBAQCBjcmVhdGVfc3RyaW5nX3R5cGUg KHN0cnVjdCB0eXBlICpyZXN1bHRfCi0gCi0gc3RydWN0IHR5cGUgKgotIGxvb2t1cF9zdHJpbmdf cmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKnN0cmluZ19jaGFyX3R5cGUsCi0tCQkJICBpbnQgbG93 X2JvdW5kLCBpbnQgaGlnaF9ib3VuZCkKLSsJCQkgIExPTkdFU1QgbG93X2JvdW5kLCBMT05HRVNU IGhpZ2hfYm91bmQpCi0gewotICAgc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlOwotIAotSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ2RidHlwZXMuaAotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMTItMTEtMDcgMjI6MDk6MjkuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9nZGJ0eXBlcy5oCTIwMTIt MTEtMDcgMjI6NTE6NDYuNDQwNjU1ODE3ICswMTAwCi1AQCAtMTY0MCw3ICsxNjQwLDcgQEAgZXh0 ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfcmFuZ2VfdHlwZSAocwotIAotIGV4dGVybiBzdHJ1Y3Qg dHlwZSAqY3JlYXRlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCi0g CQkJCSAgICAgICBzdHJ1Y3QgdHlwZSAqKTsKLS1leHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9h cnJheV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGludCk7Ci0rZXh0ZXJuIHN0cnVj dCB0eXBlICpsb29rdXBfYXJyYXlfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgTE9OR0VTVCwg TE9OR0VTVCk7Ci0gCi0gZXh0ZXJuIENPUkVfQUREUiB0eXBlX3JhbmdlX2FueV9maWVsZF9pbnRl cm5hbCAoc3RydWN0IHR5cGUgKnJhbmdlX3R5cGUsCi0gCQkJCQkJaW50IGZpZWxkbm8pOwotQEAg LTE2NTYsNyArMTY1Niw3IEBAIGV4dGVybiB2b2lkIGZpbmFsaXplX3R5cGUgKHN0cnVjdCB0eXBl ICoKLSAKLSBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9zdHJpbmdfdHlwZSAoc3RydWN0IHR5 cGUgKiwgc3RydWN0IHR5cGUgKiwKLSAJCQkJCXN0cnVjdCB0eXBlICopOwotLWV4dGVybiBzdHJ1 Y3QgdHlwZSAqbG9va3VwX3N0cmluZ19yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGlu dCk7Ci0rZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBfc3RyaW5nX3JhbmdlX3R5cGUgKHN0cnVj dCB0eXBlICosIExPTkdFU1QsIExPTkdFU1QpOwotIAotIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3Jl YXRlX3NldF90eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqKTsKLSAKLUluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbG9wcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4w LjIwMTIwOTI2Lm9yaWcvZ2RiL3ZhbG9wcy5jCTIwMTItMTEtMDcgMjI6NDY6MDAuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxvcHMuYwkyMDEyLTExLTA3IDIy OjUwOjQ3LjA5MTc0MTEwNCArMDEwMAotQEAgLTE5MzcsMTEgKzE5MzcsMTEgQEAgdmFsdWVfYXJy YXkgKGludCBsb3dib3VuZCwgaW50IGhpZ2hib3VuZAotIH0KLSAKLSBzdHJ1Y3QgdmFsdWUgKgot LXZhbHVlX2NzdHJpbmcgKGNoYXIgKnB0ciwgaW50IGxlbiwgc3RydWN0IHR5cGUgKmNoYXJfdHlw ZSkKLSt2YWx1ZV9jc3RyaW5nIChjaGFyICpwdHIsIHNzaXplX3QgbGVuLCBzdHJ1Y3QgdHlwZSAq Y2hhcl90eXBlKQotIHsKLSAgIHN0cnVjdCB2YWx1ZSAqdmFsOwotICAgaW50IGxvd2JvdW5kID0g Y3VycmVudF9sYW5ndWFnZS0+c3RyaW5nX2xvd2VyX2JvdW5kOwotLSAgaW50IGhpZ2hib3VuZCA9 IGxlbiAvIFRZUEVfTEVOR1RIIChjaGFyX3R5cGUpOwotKyAgc3NpemVfdCBoaWdoYm91bmQgPSBs ZW4gLyBUWVBFX0xFTkdUSCAoY2hhcl90eXBlKTsKLSAgIHN0cnVjdCB0eXBlICpzdHJpbmd0eXBl Ci0gICAgID0gbG9va3VwX2FycmF5X3JhbmdlX3R5cGUgKGNoYXJfdHlwZSwgbG93Ym91bmQsIGhp Z2hib3VuZCArIGxvd2JvdW5kIC0gMSk7Ci0gCi1AQCAtMTk2MCwxMSArMTk2MCwxMSBAQCB2YWx1 ZV9jc3RyaW5nIChjaGFyICpwdHIsIGludCBsZW4sIHN0cnVjCi0gICAgc3RyaW5nIG1heSBjb250 YWluIGVtYmVkZGVkIG51bGwgYnl0ZXMuICAqLwotIAotIHN0cnVjdCB2YWx1ZSAqCi0tdmFsdWVf c3RyaW5nIChjaGFyICpwdHIsIGludCBsZW4sIHN0cnVjdCB0eXBlICpjaGFyX3R5cGUpCi0rdmFs dWVfc3RyaW5nIChjaGFyICpwdHIsIHNzaXplX3QgbGVuLCBzdHJ1Y3QgdHlwZSAqY2hhcl90eXBl KQotIHsKLSAgIHN0cnVjdCB2YWx1ZSAqdmFsOwotICAgaW50IGxvd2JvdW5kID0gY3VycmVudF9s YW5ndWFnZS0+c3RyaW5nX2xvd2VyX2JvdW5kOwotLSAgaW50IGhpZ2hib3VuZCA9IGxlbiAvIFRZ UEVfTEVOR1RIIChjaGFyX3R5cGUpOwotKyAgc3NpemVfdCBoaWdoYm91bmQgPSBsZW4gLyBUWVBF X0xFTkdUSCAoY2hhcl90eXBlKTsKLSAgIHN0cnVjdCB0eXBlICpzdHJpbmd0eXBlCi0gICAgID0g bG9va3VwX3N0cmluZ19yYW5nZV90eXBlIChjaGFyX3R5cGUsIGxvd2JvdW5kLCBoaWdoYm91bmQg KyBsb3dib3VuZCAtIDEpOwotIAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsdWUu aAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi92YWx1ZS5oCTIw MTItMTEtMDcgMjI6MDk6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi92YWx1ZS5oCTIwMTItMTEtMDcgMjI6NTE6MTEuNzQ0NzA1NjE0ICswMTAwCi1AQCAtNTkz LDkgKzU5Myw5IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX21hcmsgKHZvaWQpOwotIAot IGV4dGVybiB2b2lkIHZhbHVlX2ZyZWVfdG9fbWFyayAoc3RydWN0IHZhbHVlICptYXJrKTsKLSAK LS1leHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9jc3RyaW5nIChjaGFyICpwdHIsIGludCBsZW4s Ci0rZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfY3N0cmluZyAoY2hhciAqcHRyLCBzc2l6ZV90 IGxlbiwKLSAJCQkJICAgIHN0cnVjdCB0eXBlICpjaGFyX3R5cGUpOwotLWV4dGVybiBzdHJ1Y3Qg dmFsdWUgKnZhbHVlX3N0cmluZyAoY2hhciAqcHRyLCBpbnQgbGVuLAotK2V4dGVybiBzdHJ1Y3Qg dmFsdWUgKnZhbHVlX3N0cmluZyAoY2hhciAqcHRyLCBzc2l6ZV90IGxlbiwKLSAJCQkJICAgc3Ry dWN0IHR5cGUgKmNoYXJfdHlwZSk7Ci0gZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYml0c3Ry aW5nIChjaGFyICpwdHIsIGludCBsZW4sCi0gCQkJCSAgICAgIHN0cnVjdCB0eXBlICppbmRleF90 eXBlKTsKCmRpZmYgLS1naXQgYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjVvZjI1LnBhdGNoIGIv Z2RiLXJoYno3OTU0MjQtYml0cG9zLTI1b2YyNS5wYXRjaAppbmRleCBmYTNhNmJlLi4xYzM5Yjll IDEwMDY0NAotLS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjVvZjI1LnBhdGNoCisrKyBiL2dk Yi1yaGJ6Nzk1NDI0LWJpdHBvcy0yNW9mMjUucGF0Y2gKQEAgLTQ3LDEzICs0NywxMyBAQCBDb250 ZW50LVR5cGU6IHRleHQveC1wYXRjaAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAog Q29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9Zjc3LWJvdW5kcy5wYXRj aAogCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mLWxhbmcuaAorSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAxMTgvZ2RiL2YtbGFuZy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIw MTIwOTI2Lm9yaWcvZ2RiL2YtbGFuZy5oCTIwMTItMTEtMDcgMjI6MTI6MzkuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mLWxhbmcuaAkyMDEyLTExLTA3IDIyOjUy OjAyLjY4ODYzMjQ5OCArMDEwMAotQEAgLTY2LDkgKzY2LDkgQEAgZW51bSBmOTBfcmFuZ2VfdHlw ZQotIGV4dGVybiBjaGFyICpyZWFsX21haW5fbmFtZTsJLyogTmFtZSBvZiBtYWluIGZ1bmN0aW9u LiAgKi8KLSBleHRlcm4gaW50IHJlYWxfbWFpbl9jX3ZhbHVlOwkvKiBDX3ZhbHVlIGZpZWxkIG9m IG1haW4gZnVuY3Rpb24uICAqLworLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvZi1s YW5nLmgJMjAxMy0wMS0xOCAyMzozOTo0MC4yMDk1MDA5NjggKzAxMDAKKysrKyBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi9mLWxhbmcuaAkyMDEzLTAxLTE4IDIzOjQwOjA0LjAxMDUzMTE3NyArMDEw MAorQEAgLTY1LDkgKzY1LDkgQEAgc3RydWN0IGNvbW1vbl9ibG9jaworICAgc3RydWN0IHN5bWJv bCAqY29udGVudHNbMV07CisgfTsKICAKIC1leHRlcm4gaW50IGY3N19nZXRfdXBwZXJib3VuZCAo c3RydWN0IHR5cGUgKik7CiArZXh0ZXJuIExPTkdFU1QgZjc3X2dldF91cHBlcmJvdW5kIChzdHJ1 Y3QgdHlwZSAqKTsKQEAgLTYzLDExICs2MywxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9mLWxhbmcuaAogIAogIGV4dGVybiB2b2lkIGY3N19nZXRfZHluYW1pY19hcnJheV9sZW5n dGggKHN0cnVjdCB0eXBlICopOwogIAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZi10 eXBlcHJpbnQuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2YtdHlwZXByaW50LmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvZi10eXBlcHJpbnQu YwkyMDEyLTExLTA3IDIyOjAwOjQxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvZi10eXBlcHJpbnQuYwkyMDEyLTExLTA3IDIyOjUyOjAyLjY4OTYzMjQ5NyArMDEw MAotQEAgLTE4Miw3ICsxODIsNyBAQCBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVj dCB0eXBlCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9mLXR5cGVwcmludC5jCTIw MTMtMDEtMTggMjM6Mzk6MzcuNTY0NDk3NjIwICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvZi10eXBlcHJpbnQuYwkyMDEzLTAxLTE4IDIzOjM5OjQwLjIxMDUwMDk3MCArMDEwMAor QEAgLTE4MCw3ICsxODAsNyBAQCBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVjdCB0 eXBlCiAgCQkJICAgICBpbnQgc2hvdywgaW50IHBhc3NlZF9hX3B0ciwgaW50IGRlbWFuZ2xlZF9h cmdzLAogIAkJCSAgICAgaW50IGFycmF5cHJpbnRfcmVjdXJzZV9sZXZlbCkKICB7CkBAIC03Niw3 ICs3Niw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2YtdHlwZXByaW50LmMKICAK ICAgIC8qIE5vIHN0YXRpYyB2YXJpYWJsZXMgYXJlIHBlcm1pdHRlZCBhcyBhbiBlcnJvciBjYWxs IG1heSBvY2N1ciBkdXJpbmcKICAgICAgIGV4ZWN1dGlvbiBvZiB0aGlzIGZ1bmN0aW9uLiAgKi8K LUBAIC0yMTIsNyArMjEyLDcgQEAgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3Qg dHlwZQorQEAgLTIxMCw3ICsyMTAsNyBAQCBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0 cnVjdCB0eXBlCiAgCiAgICAgICAgbG93ZXJfYm91bmQgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHR5 cGUpOwogICAgICAgIGlmIChsb3dlcl9ib3VuZCAhPSAxKQkvKiBOb3QgdGhlIGRlZmF1bHQuICAq LwpAQCAtODUsNyArODUsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mLXR5cGVw cmludC5jCiAgCiAgICAgICAgLyogTWFrZSBzdXJlIHRoYXQsIGlmIHdlIGhhdmUgYW4gYXNzdW1l ZCBzaXplIGFycmF5LCB3ZQogICAgICAgICAgIHByaW50IG91dCBhIHdhcm5pbmcgYW5kIHByaW50 IHRoZSB1cHBlcmJvdW5kIGFzICcqJy4gICovCi1AQCAtMjIyLDcgKzIyMiw3IEBAIGZfdHlwZV9w cmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUKK0BAIC0yMjAsNyArMjIwLDcgQEAgZl90 eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZQogICAgICAgIGVsc2UKICAJewog IAkgIHVwcGVyX2JvdW5kID0gZjc3X2dldF91cHBlcmJvdW5kICh0eXBlKTsKQEAgLTk0LDcgKzk0 LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZi10eXBlcHJpbnQuYwogIAl9CiAg CiAgICAgICAgaWYgKFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpICE9IFRZUEVf Q09ERV9BUlJBWSkKLUBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZAorQEAgLTI4OCw3ICsyODgsNyBA QCB2b2lkCiAgZl90eXBlX3ByaW50X2Jhc2UgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtLCBpbnQgc2hvdywKICAJCSAgIGludCBsZXZlbCkKICB7CkBAIC0xMDMsNyAr MTAzLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZi10eXBlcHJpbnQuYwogICAg aW50IGluZGV4OwogIAogICAgUVVJVDsKLUBAIC0zNzMsNyArMzczLDcgQEAgZl90eXBlX3ByaW50 X2Jhc2UgKHN0cnVjdCB0eXBlICp0eXBlLCBzdAorQEAgLTM3MCw3ICszNzAsNyBAQCBmX3R5cGVf cHJpbnRfYmFzZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0CiAgICAgICAgZWxzZQogIAl7CiAgCSAg dXBwZXJfYm91bmQgPSBmNzdfZ2V0X3VwcGVyYm91bmQgKHR5cGUpOwpAQCAtMTEyLDEwICsxMTIs MTAgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZi10eXBlcHJpbnQuYwogIAl9CiAg ICAgICAgYnJlYWs7CiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mLXZhbHByaW50 LmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9mLXZhbHByaW50LmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvZi12YWxwcmludC5jCTIwMTItMTEt MDcgMjI6MDk6MjkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9m LXZhbHByaW50LmMJMjAxMi0xMS0wNyAyMjo1MjoyMS44ODg2MDQ5MDcgKzAxMDAKKy0tLSBnZGIt Ny41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2YtdmFscHJpbnQuYwkyMDEzLTAxLTE4IDIzOjM5OjM3 LjU2NDQ5NzYyMCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2YtdmFscHJpbnQu YwkyMDEzLTAxLTE4IDIzOjM5OjQwLjIxMDUwMDk3MCArMDEwMAogQEAgLTU3LDcgKzU3LDcgQEAg TE9OR0VTVCBmNzdfYXJyYXlfb2Zmc2V0X3RibFtNQVhfRk9SVFJBTgogIAogICNkZWZpbmUgRjc3 X0RJTV9CWVRFX1NUUklERShuKSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1bMF0pCgpkaWZmIC0t Z2l0IGEvZ2RiLXJoYno3OTU0MjQtYml0cG9zLWxhenl2YWx1ZS5wYXRjaCBiL2dkYi1yaGJ6Nzk1 NDI0LWJpdHBvcy1sYXp5dmFsdWUucGF0Y2gKaW5kZXggMjBlOGU1MS4uNjRlMTU2NSAxMDA2NDQK LS0tIGEvZ2RiLXJoYno3OTU0MjQtYml0cG9zLWxhenl2YWx1ZS5wYXRjaAorKysgYi9nZGItcmhi ejc5NTQyNC1iaXRwb3MtbGF6eXZhbHVlLnBhdGNoCkBAIC05LDcgKzksNyBAQAogICAgdmFsLT5j b250ZW50cyA9IE5VTEw7CiAgICB2YWwtPm5leHQgPSBhbGxfdmFsdWVzOwogLS0tIC9kZXYvbnVs bAkyMDEyLTEwLTE4IDExOjA4OjEzLjIwMjMyODIzOSArMDIwMAotKysrIGdkYi03LjUuMC4yMDEy MDkyNi1tNjQtdGVzdC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2xvbmdlc3QtdHlwZXMuZXhwCTIw MTItMTEtMDkgMTg6MTM6NTYuMjg2NTg3OTk0ICswMTAwCisrKysgZ2RiLTcuNS4wLjIwMTIwOTI2 LW02NC10ZXN0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbG9uZ2VzdC10eXBlcy02NGJpdC5leHAJ MjAxMi0xMS0wOSAxODoxMzo1Ni4yODY1ODc5OTQgKzAxMDAKIEBAIC0wLDAgKzEsNTkgQEAKICsj IFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCkBAIC03 MSw3ICs3MSw3IEBACiArCiArdGVzdCAibmF0aXZlIgogLS0tIC9kZXYvbnVsbAkyMDEyLTEwLTE4 IDExOjA4OjEzLjIwMjMyODIzOSArMDIwMAotKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9s b25nZXN0LXR5cGVzLmMJMjAxMi0xMS0wOSAxNzowODo1MS4zNzQ0MDYzNDQgKzAxMDAKKysrKyAu L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbG9uZ2VzdC10eXBlcy02NGJpdC5jCTIwMTItMTEtMDkg MTc6MDg6NTEuMzc0NDA2MzQ0ICswMTAwCiBAQCAtMCwwICsxLDI4IEBACiArLyogVGhpcyB0ZXN0 Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKCmRpZmYgLS1naXQgYS9n ZGItcmhiejg5MDkwMC1wcGMtZGlzLTFvZjIucGF0Y2ggYi9nZGItcmhiejg5MDkwMC1wcGMtZGlz LTFvZjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxMWM2YzQuLjAwMDAw MDAKLS0tIGEvZ2RiLXJoYno4OTA5MDAtcHBjLWRpcy0xb2YyLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMjI4ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9iaW51dGlscy8yMDEy LTExL21zZzAwMzUyLmh0bWwKLVN1YmplY3Q6IFJlOiBbUEFUQ0hdIEZpeCBnZGIgZGlzYXNzZW1i bGUgZm9yIHBvd2VyNi9wb3dlcjcgaW5zdHJ1Y3Rpb25zCi0KLU9uIFdlZCwgTm92IDE0LCAyMDEy IGF0IDEwOjE2OjM4QU0gKzEwMzAsIEFsYW4gTW9kcmEgd3JvdGU6Ci0+IFdoYXQgSSB0aGluayBz aG91bGQgaGFwcGVuIGlzIHRoYXQgdGhlIGRlZmF1bHQgaGFuZGxpbmcsIGllLiB0aGUgYmxvY2sK LT4gdGhhdCBzdGFydHMgd2l0aAotPiAgIGlmICgoZGlhbGVjdCAmIH4ocHBjX2NwdV90KSBQUENf T1BDT0RFXzY0KSA9PSAwKQotPiBzaG91bGQgYmUgZGVsZXRlZCBhbmQgYSBzd2l0Y2ggb24gaW5m by0+bWFjaCBzZXR0aW5nIHVwIGRpYWxlY3QgYWRkZWQKLT4gYmVmb3JlIHdlIHBhcnNlIGRpc2Fz c2VtYmxlcl9vcHRpb25zLiAgVGhhdCB3YXkgLW0zMiBhbmQgLW02NCBjYW4KLT4gb3ZlcnJpZGUg dGhlIGRlZmF1bHQgYXMgdGhleSBhcmUgc3VwcG9zZWQgdG8uICBTZWUgYmZkL2FyY2h1cmVzLmMg Zm9yCi0+IHZhbHVlcyBvZiBiZmRfbWFjaF9wcGNfKi4KLQotV2VsbCB0aGF0IGlkZWEgZGlkbid0 IHR1cm4gb3V0IHRvIGJlIHNpbXBsZS4gIElmIHdlIHdhbnQgdG8gYnJpbmcgdGhlCi1kZWZhdWx0 IHVwIHRvIHNvbWV0aGluZyBtb3JlIHVwLXRvLWRhdGUgdGhhbiB0aGUgY3VycmVudCBwcGM2MDEs IHRoZW4KLXlvdSBydW4gaW50byBkaWZmaWN1bHR5IHdpdGggInJldGFpbl9tYXNrIiBpbiBwcGNf cGFyc2VfY3B1LiAgQ2hvb3NpbmcKLWFueSBvZiB0aGUgYml0cyBpbiB0aGF0IG1hc2sgYXMgYSBk ZWZhdWx0LCBlZy4gUFBDX09QQ09ERV9WU1gsIHJlc3VsdHMKLWluIG5vdCBiZWluZyBhYmxlIHRv IGdldCByaWQgb2YgdGhvc2UgYml0cy4KLQotTm93IHRoZSBpZGVhIG9mICJyZXRhaW5fbWFzayIg d2FzIHRvIGNvdmVyIGNhc2VzIHdoZXJlIHBlb3BsZSBwYXNzCi1zb21ldGhpbmcgbGlrZSAtbXBw YyAtbWFsdGl2ZWMgKG9yIGV2ZW4gLW1hbHRpdmVjIC1tcHBjKSB0byB0aGUKLWFzc2VtYmxlci4g IEhpc3RvcmljYWxseSB0aGF0IGhhcyByZXN1bHRlZCBpbiBib3RoIFBQQ19PUENPREVfUFBDIGFu ZAotUFBDX09QQ09ERV9BTFRJVkVDIGJlaW5nIHNldDsgIFNvbWUgb3B0aW9ucyBhY2N1bXVsYXRl LiAgU28gSSd2ZQotcmVkb25lIGNvZGUgaGFuZGxpbmcgdGhlc2Ugc3RpY2t5IG9wdGlvbnMgdG8g anVzdCBrZWVwIHRyYWNrIG9mIHRoZQotYml0cyBzZWxlY3RlZCBieSBwcGNfb3B0cy5zdGlja3ku ICBBbnkgZGVmYXVsdCBzZWxlY3Rpb24gd29uJ3QgbWFrZQotdGhlc2UgYml0cyBzdGlja3ksIHlv dSdsbCBvbmx5IGdldCB0aGF0IGVmZmVjdCBmcm9tIC1tYWx0aXZlYywgLW1hbnksCi0tbXNwZSwg LW12bGUgYW5kIC1tdnN4IG9uIHRoZSBjb21tYW5kIGxpbmUgb3IgaW4gLm1hY2hpbmUgZGlyZWN0 aXZlcwotKGFuZCBzaW1pbGFybHkgZm9yIHRoZSBjb3JyZXNwb25kaW5nIC1NIGRpc2Fzc2VtYmxl ciBvcHRpb25zKS4gIEknbQotbm90IHN1cmUgd2h5IFBQQ19PUENPREVfUE1SIHdhcyBldmVyIGlu ICJyZXRhaW5fbWFzayIuICBQZW9wbGUKLWludGVyZXN0ZWQgaW4gVkxFIG1pZ2h0IG5lZWQgdG8g aW52ZXN0aWdhdGUgdGhhdC4KLQotT25lIG9mIHRoZSBlZmZlY3RzIG9mIHVwZGF0aW5nIHRvIGEg cG93ZXI3IGRlZmF1bHQgaXMgdGhhdCBjb25kaXRpb25hbAotYnJhbmNoIGhpbnRzIGFyZSBkaXNw bGF5ZWQgZm9yICJhdCIgc3R5bGUgaGludHMgcmF0aGVyIHRoYW4gdGhlIG9sZGVyCi0ieSIgaGlu dHMuICBXaGVuIHVzaW5nICJ5IiBoaW50cyB0aGUgZGlzYXNzZW1ibGVyIGFsd2F5cyBzaG93ZWQg dGhlCi1oaW50LCBlZy4gImJuZS0iIG9yICJibmUrIi4gIE5vdyB5b3UnbGwgc2VlICJibmUiIG1v c3QgdGltZXMuICBUaGlzCi1tZWFudCB1cGRhdGluZyB0aGUgdGVzdHN1aXRlLiAgSSBtYWRlIG9u ZSBnYXMgdGVzdCBkaXNhc3NlbWJsZSBmb3IKLXBsYWluIHBwYyBqdXN0IHRvIGVuc3VyZSB0aGUg b2xkZXIgInkiIGhpbnRzIGNvbnRpbnVlIHRvIGJlIGF2YWlsYWJsZS4KLQotQ29tbWl0dGVkLgot Ci1pbmNsdWRlL29wY29kZS8KLQkqIHBwYy5oIChwcGNfcGFyc2VfY3B1KTogVXBkYXRlIHByb3Rv dHlwZS4KLW9wY29kZXMvCi0JKiBwcGMtZGlzLmMgKHBwY19wYXJzZV9jcHUpOiBBZGQgInN0aWNr eSIgcGFyYW0uICBUcmFjayBiaXRzCi0Jc2V0IGZyb20gcHBjX29wdHMuc3RpY2t5IGluIGl0LiAg RGVsZXRlICJyZXRhaW5fbWFzayIuCi0JKHBvd2VycGNfaW5pdF9kaWFsZWN0KTogQ2hvb3NlIGRl ZmF1bHQgZGlhbGVjdCBmcm9tIGluZm8tPm1hY2gKLQliZWZvcmUgcGFyc2luZyAtTSBvcHRpb25z LiAgSGFuZGxlIG1vcmUgYmZkX21hY2hfcHBjIHZhcmlhbnRzLgotCVVwZGF0ZSBjb21tb24gZGVm YXVsdCB0byBwb3dlcjcuCi1nYXMvCi0JKiBjb25maWcvdGMtcHBjLmMgKHN0aWNreSk6IE5ldyB2 YXIuCi0JKG1kX3BhcnNlX29wdGlvbiwgcHBjX21hY2hpbmUpOiBVcGRhdGUgcHBjX3BhcnNlX2Nw dSBjYWxscy4KLWdhcy90ZXN0c3VpdGUvCi0JKiBnYXMvcHBjL2FzdGVzdDIuZDogUGFzcyAtTXBw YyB0byBvYmpkdW1wLgotbGQvdGVzdHN1aXRlLwotCSogbGQtcG93ZXJwYy9wbHQxLmQ6IFVwZGF0 ZSBmb3IgZGVmYXVsdCAiYXQiIGJyYW5jaCBoaW50cy4KLQkqIGxkLXBvd2VycGMvdGxzZXhlLmQ6 IExpa2V3aXNlLgotCSogbGQtcG93ZXJwYy90bHNleGV0b2MuZDogTGlrZXdpc2UuCi0JKiBsZC1w b3dlcnBjL3Rsc29wdDEuZDogTGlrZXdpc2UuCi0JKiBsZC1wb3dlcnBjL3Rsc29wdDFfMzIuZDog TGlrZXdpc2UuCi0JKiBsZC1wb3dlcnBjL3Rsc29wdDIuZDogTGlrZXdpc2UuCi0JKiBsZC1wb3dl cnBjL3Rsc29wdDJfMzIuZDogTGlrZXdpc2UuCi0JKiBsZC1wb3dlcnBjL3Rsc29wdDQuZDogTGlr ZXdpc2UuCi0JKiBsZC1wb3dlcnBjL3Rsc29wdDRfMzIuZDogTGlrZXdpc2UuCi0JKiBsZC1wb3dl cnBjL3Rsc3NvLmQ6IExpa2V3aXNlLgotCSogbGQtcG93ZXJwYy90bHN0b2Nzby5kOiBMaWtld2lz ZS4KLQotSW5kZXg6IGluY2x1ZGUvb3Bjb2RlL3BwYy5oCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1SQ1MgZmlsZTog L2N2cy9zcmMvc3JjL2luY2x1ZGUvb3Bjb2RlL3BwYy5oLHYKLXJldHJpZXZpbmcgcmV2aXNpb24g MS40NAotZGlmZiAtdSAtcCAtcjEuNDQgcHBjLmgKLS0tLSAuL2luY2x1ZGUvb3Bjb2RlL3BwYy5o CTE0IE1heSAyMDEyIDE5OjQ1OjI3IC0wMDAwCTEuNDQKLSsrKyAuL2luY2x1ZGUvb3Bjb2RlL3Bw Yy5oCTIyIE5vdiAyMDEyIDIyOjQ1OjE4IC0wMDAwCi1AQCAtNDAwLDYgKzQwMCw2IEBAIHN0cnVj dCBwb3dlcnBjX21hY3JvCi0gZXh0ZXJuIGNvbnN0IHN0cnVjdCBwb3dlcnBjX21hY3JvIHBvd2Vy cGNfbWFjcm9zW107Ci0gZXh0ZXJuIGNvbnN0IGludCBwb3dlcnBjX251bV9tYWNyb3M7Ci0gCi0t ZXh0ZXJuIHBwY19jcHVfdCBwcGNfcGFyc2VfY3B1IChwcGNfY3B1X3QsIGNvbnN0IGNoYXIgKik7 Ci0rZXh0ZXJuIHBwY19jcHVfdCBwcGNfcGFyc2VfY3B1IChwcGNfY3B1X3QsIHBwY19jcHVfdCAq LCBjb25zdCBjaGFyICopOwotIAotICNlbmRpZiAvKiBQUENfSCAqLwotSW5kZXg6IG9wY29kZXMv cHBjLWRpcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci1SQ1MgZmlsZTogL2N2cy9zcmMvc3JjL29wY29kZXMvcHBj LWRpcy5jLHYKLXJldHJpZXZpbmcgcmV2aXNpb24gMS42MAotZGlmZiAtdSAtcCAtcjEuNjAgcHBj LWRpcy5jCi0tLS0gLi9vcGNvZGVzL3BwYy1kaXMuYwk1IE9jdCAyMDEyIDE0OjA2OjIwIC0wMDAw CTEuNjAKLSsrKyAuL29wY29kZXMvcHBjLWRpcy5jCTIyIE5vdiAyMDEyIDIyOjQ1OjE5IC0wMDAw Ci1AQCAtMjExLDEzICsyMTEsOCBAQCBnZXRfcG93ZXJwY19kaWFsZWN0IChzdHJ1Y3QgZGlzYXNz ZW1ibGVfCi0gLyogSGFuZGxlIC1tIGFuZCAtTSBvcHRpb25zIHRoYXQgc2V0IGNwdSB0eXBlLCBh bmQgLm1hY2hpbmUgYXJnLiAgKi8KLSAKLSBwcGNfY3B1X3QKLS1wcGNfcGFyc2VfY3B1IChwcGNf Y3B1X3QgcHBjX2NwdSwgY29uc3QgY2hhciAqYXJnKQotK3BwY19wYXJzZV9jcHUgKHBwY19jcHVf dCBwcGNfY3B1LCBwcGNfY3B1X3QgKnN0aWNreSwgY29uc3QgY2hhciAqYXJnKQotIHsKLS0gIGNv bnN0IHBwY19jcHVfdCByZXRhaW5fbWFzayA9IChQUENfT1BDT0RFX0FMVElWRUMgfCBQUENfT1BD T0RFX1ZTWAotLQkJCQkgfCBQUENfT1BDT0RFX1NQRSB8IFBQQ19PUENPREVfQU5ZCi0tCQkJCSB8 IFBQQ19PUENPREVfVkxFIHwgUFBDX09QQ09ERV9QTVIpOwotLSAgLyogU3RpY2t5IGJpdHMuICAq LwotLSAgcHBjX2NwdV90IHJldGFpbl9mbGFncyA9IHBwY19jcHUgJiByZXRhaW5fbWFzazsKLSAg IHVuc2lnbmVkIGludCBpOwotIAotICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAocHBjX29wdHMp IC8gc2l6ZW9mIChwcGNfb3B0c1swXSk7IGkrKykKLUBAIC0yMjUsOCArMjIwLDggQEAgcHBjX3Bh cnNlX2NwdSAocHBjX2NwdV90IHBwY19jcHUsIGNvbnN0IAotICAgICAgIHsKLSAJaWYgKHBwY19v cHRzW2ldLnN0aWNreSkKLSAJICB7Ci0tCSAgICByZXRhaW5fZmxhZ3MgfD0gcHBjX29wdHNbaV0u c3RpY2t5OwotLQkgICAgaWYgKChwcGNfY3B1ICYgfnJldGFpbl9tYXNrKSAhPSAwKQotKwkgICAg KnN0aWNreSB8PSBwcGNfb3B0c1tpXS5zdGlja3k7Ci0rCSAgICBpZiAoKHBwY19jcHUgJiB+KnN0 aWNreSkgIT0gMCkKLSAJICAgICAgYnJlYWs7Ci0gCSAgfQotIAlwcGNfY3B1ID0gcHBjX29wdHNb aV0uY3B1OwotQEAgLTIzNSw3ICsyMzAsNyBAQCBwcGNfcGFyc2VfY3B1IChwcGNfY3B1X3QgcHBj X2NwdSwgY29uc3QgCi0gICBpZiAoaSA+PSBzaXplb2YgKHBwY19vcHRzKSAvIHNpemVvZiAocHBj X29wdHNbMF0pKQotICAgICByZXR1cm4gMDsKLSAKLS0gIHBwY19jcHUgfD0gcmV0YWluX2ZsYWdz OwotKyAgcHBjX2NwdSB8PSAqc3RpY2t5OwotICAgcmV0dXJuIHBwY19jcHU7Ci0gfQotIAotQEAg LTI0NSwxMiArMjQwLDc1IEBAIHN0YXRpYyB2b2lkCi0gcG93ZXJwY19pbml0X2RpYWxlY3QgKHN0 cnVjdCBkaXNhc3NlbWJsZV9pbmZvICppbmZvKQotIHsKLSAgIHBwY19jcHVfdCBkaWFsZWN0ID0g MDsKLSsgIHBwY19jcHVfdCBzdGlja3kgPSAwOwotICAgY2hhciAqYXJnOwotICAgc3RydWN0IGRp c19wcml2YXRlICpwcml2ID0gY2FsbG9jIChzaXplb2YgKCpwcml2KSwgMSk7Ci0gCi0gICBpZiAo cHJpdiA9PSBOVUxMKQotICAgICBwcml2ID0gJnByaXZhdGU7Ci0gCi0rICBzd2l0Y2ggKGluZm8t Pm1hY2gpCi0rICAgIHsKLSsgICAgY2FzZSBiZmRfbWFjaF9wcGNfNDAzOgotKyAgICBjYXNlIGJm ZF9tYWNoX3BwY180MDNnYzoKLSsgICAgICBkaWFsZWN0ID0gKFBQQ19PUENPREVfUFBDIHwgUFBD X09QQ09ERV80MDMpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGJmZF9tYWNoX3BwY180MDU6 Ci0rICAgICAgZGlhbGVjdCA9IChQUENfT1BDT0RFX1BQQyB8IFBQQ19PUENPREVfNDAzIHwgUFBD X09QQ09ERV80MDUpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGJmZF9tYWNoX3BwY182MDE6 Ci0rICAgICAgZGlhbGVjdCA9IChQUENfT1BDT0RFX1BQQyB8IFBQQ19PUENPREVfNjAxKTsKLSsg ICAgICBicmVhazsKLSsgICAgY2FzZSBiZmRfbWFjaF9wcGNfYTM1OgotKyAgICBjYXNlIGJmZF9t YWNoX3BwY19yczY0aWk6Ci0rICAgIGNhc2UgYmZkX21hY2hfcHBjX3JzNjRpaWk6Ci0rICAgICAg ZGlhbGVjdCA9IChQUENfT1BDT0RFX1BPV0VSIHwgUFBDX09QQ09ERV9QT1dFUjIgfCBQUENfT1BD T0RFXzY0KTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBiZmRfbWFjaF9wcGNfZTUwMDoKLSsg ICAgICBkaWFsZWN0ID0gKFBQQ19PUENPREVfUFBDIHwgUFBDX09QQ09ERV9CT09LRSB8IFBQQ19P UENPREVfU1BFCi0rCQkgfCBQUENfT1BDT0RFX0lTRUwgfCBQUENfT1BDT0RFX0VGUyB8IFBQQ19P UENPREVfQlJMT0NLCi0rCQkgfCBQUENfT1BDT0RFX1BNUiB8IFBQQ19PUENPREVfQ0FDSEVMQ0sg fCBQUENfT1BDT0RFX1JGTUNJCi0rCQkgfCBQUENfT1BDT0RFX0U1MDApOwotKyAgICAgIGJyZWFr OwotKyAgICBjYXNlIGJmZF9tYWNoX3BwY19lNTAwbWM6Ci0rICAgICAgZGlhbGVjdCA9IChQUENf T1BDT0RFX1BQQyB8IFBQQ19PUENPREVfQk9PS0UgfCBQUENfT1BDT0RFX0lTRUwKLSsJCSB8IFBQ Q19PUENPREVfUE1SIHwgUFBDX09QQ09ERV9DQUNIRUxDSyB8IFBQQ19PUENPREVfUkZNQ0kKLSsJ CSB8IFBQQ19PUENPREVfRTUwME1DKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBiZmRfbWFj aF9wcGNfZTUwMG1jNjQ6Ci0rICAgICAgZGlhbGVjdCA9IChQUENfT1BDT0RFX1BQQyB8IFBQQ19P UENPREVfQk9PS0UgfCBQUENfT1BDT0RFX0lTRUwKLSsJCSB8IFBQQ19PUENPREVfUE1SIHwgUFBD X09QQ09ERV9DQUNIRUxDSyB8IFBQQ19PUENPREVfUkZNQ0kKLSsJCSB8IFBQQ19PUENPREVfRTUw ME1DIHwgUFBDX09QQ09ERV82NCB8IFBQQ19PUENPREVfUE9XRVI1Ci0rCQkgfCBQUENfT1BDT0RF X1BPV0VSNiB8IFBQQ19PUENPREVfUE9XRVI3KTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBi ZmRfbWFjaF9wcGNfZTU1MDA6Ci0rICAgICAgZGlhbGVjdCA9IChQUENfT1BDT0RFX1BQQyB8IFBQ Q19PUENPREVfQk9PS0UgfCBQUENfT1BDT0RFX0lTRUwKLSsJCSB8IFBQQ19PUENPREVfUE1SIHwg UFBDX09QQ09ERV9DQUNIRUxDSyB8IFBQQ19PUENPREVfUkZNQ0kKLSsJCSB8IFBQQ19PUENPREVf RTUwME1DIHwgUFBDX09QQ09ERV82NCB8IFBQQ19PUENPREVfUE9XRVI0Ci0rCQkgfCBQUENfT1BD T0RFX1BPV0VSNSB8IFBQQ19PUENPREVfUE9XRVI2Ci0rCQkgfCBQUENfT1BDT0RFX1BPV0VSNyk7 Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgYmZkX21hY2hfcHBjX2U2NTAwOgotKyAgICAgIGRp YWxlY3QgPSAoUFBDX09QQ09ERV9QUEMgfCBQUENfT1BDT0RFX0JPT0tFIHwgUFBDX09QQ09ERV9J U0VMCi0rCQkgfCBQUENfT1BDT0RFX1BNUiB8IFBQQ19PUENPREVfQ0FDSEVMQ0sgfCBQUENfT1BD T0RFX1JGTUNJCi0rCQkgfCBQUENfT1BDT0RFX0U1MDBNQyB8IFBQQ19PUENPREVfNjQgfCBQUENf T1BDT0RFX0FMVElWRUMKLSsJCSB8IFBQQ19PUENPREVfQUxUSVZFQzIgfCBQUENfT1BDT0RFX0U2 NTAwIHwgUFBDX09QQ09ERV9QT1dFUjQKLSsJCSB8IFBQQ19PUENPREVfUE9XRVI1IHwgUFBDX09Q Q09ERV9QT1dFUjYgfCBQUENfT1BDT0RFX1BPV0VSNyk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNh c2UgYmZkX21hY2hfcHBjX3RpdGFuOgotKyAgICAgIGRpYWxlY3QgPSAoUFBDX09QQ09ERV9QUEMg fCBQUENfT1BDT0RFX0JPT0tFIHwgUFBDX09QQ09ERV9QTVIKLSsJCSB8IFBQQ19PUENPREVfUkZN Q0kgfCBQUENfT1BDT0RFX1RJVEFOKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBiZmRfbWFj aF9wcGNfdmxlOgotKyAgICAgIGRpYWxlY3QgPSAoUFBDX09QQ09ERV9QUEMgfCBQUENfT1BDT0RF X0lTRUwgfCBQUENfT1BDT0RFX1ZMRSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0r ICAgICAgZGlhbGVjdCA9IChQUENfT1BDT0RFX1BQQyB8IFBQQ19PUENPREVfSVNFTCB8IFBQQ19P UENPREVfNjQKLSsJCSB8IFBQQ19PUENPREVfUE9XRVI0IHwgUFBDX09QQ09ERV9QT1dFUjUgfCBQ UENfT1BDT0RFX1BPV0VSNgotKwkJIHwgUFBDX09QQ09ERV9QT1dFUjcgfCBQUENfT1BDT0RFX0FM VElWRUMgfCBQUENfT1BDT0RFX1ZTWAotKwkJIHwgUFBDX09QQ09ERV9BTlkpOwotKyAgICB9Ci0r Ci0gICBhcmcgPSBpbmZvLT5kaXNhc3NlbWJsZXJfb3B0aW9uczsKLSAgIHdoaWxlIChhcmcgIT0g TlVMTCkKLSAgICAgewotQEAgLTI2MCw3ICszMTgsNyBAQCBwb3dlcnBjX2luaXRfZGlhbGVjdCAo c3RydWN0IGRpc2Fzc2VtYmxlCi0gICAgICAgaWYgKGVuZCAhPSBOVUxMKQotIAkqZW5kID0gMDsK LSAKLS0gICAgICBpZiAoKG5ld19jcHUgPSBwcGNfcGFyc2VfY3B1IChkaWFsZWN0LCBhcmcpKSAh PSAwKQotKyAgICAgIGlmICgobmV3X2NwdSA9IHBwY19wYXJzZV9jcHUgKGRpYWxlY3QsICZzdGlj a3ksIGFyZykpICE9IDApCi0gCWRpYWxlY3QgPSBuZXdfY3B1OwotICAgICAgIGVsc2UgaWYgKHN0 cmNtcCAoYXJnLCAiMzIiKSA9PSAwKQotIAlkaWFsZWN0ICY9IH4ocHBjX2NwdV90KSBQUENfT1BD T0RFXzY0OwotQEAgLTI3NCwyMCArMzMyLDYgQEAgcG93ZXJwY19pbml0X2RpYWxlY3QgKHN0cnVj dCBkaXNhc3NlbWJsZQotICAgICAgIGFyZyA9IGVuZDsKLSAgICAgfQotIAotLSAgaWYgKChkaWFs ZWN0ICYgfihwcGNfY3B1X3QpIFBQQ19PUENPREVfNjQpID09IDApCi0tICAgIHsKLS0gICAgICBp ZiAoaW5mby0+bWFjaCA9PSBiZmRfbWFjaF9wcGM2NCkKLS0JZGlhbGVjdCB8PSBQUENfT1BDT0RF XzY0OwotLSAgICAgIGVsc2UKLS0JZGlhbGVjdCAmPSB+KHBwY19jcHVfdCkgUFBDX09QQ09ERV82 NDsKLS0gICAgICBpZiAoaW5mby0+bWFjaCA9PSBiZmRfbWFjaF9wcGNfdmxlKQotLSAgICAgICAg ZGlhbGVjdCB8PSBQUENfT1BDT0RFX1BQQyB8IFBQQ19PUENPREVfVkxFOwotLSAgICAgIGVsc2UK LS0gICAgICAgIC8qIENob29zZSBhIHJlYXNvbmFibGUgZGVmYXVsdC4gICovCi0tICAgICAgICBk aWFsZWN0IHw9IChQUENfT1BDT0RFX1BQQyB8IFBQQ19PUENPREVfQ09NTU9OIHwgUFBDX09QQ09E RV82MDEKLS0JCSAgICB8IFBQQ19PUENPREVfQUxUSVZFQyk7Ci0tICAgIH0KLS0KLSAgIGluZm8t PnByaXZhdGVfZGF0YSA9IHByaXY7Ci0gICBQT1dFUlBDX0RJQUxFQ1QoaW5mbykgPSBkaWFsZWN0 OwotIH0KCmRpZmYgLS1naXQgYS9nZGItcmhiejg5MDkwMC1wcGMtZGlzLTJvZjIucGF0Y2ggYi9n ZGItcmhiejg5MDkwMC1wcGMtZGlzLTJvZjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDQxMzc0ZWMuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYno4OTA5MDAtcHBjLWRpcy0yb2Yy LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMTEvbXNnMDA2MjQuaHRtbAotU3ViamVjdDogUmU6IFtQ QVRDSF0gRml4IGdkYiBkaXNhc3NlbWJsZSBmb3IgcG93ZXI2L3Bvd2VyNyBpbnN0cnVjdGlvbnMK LQotT24gMTEvMjMvMjAxMiAwMToyOCBBTSwgQWxhbiBNb2RyYSB3cm90ZToKLT4gT25lIG9mIHRo ZSBlZmZlY3RzIG9mIHVwZGF0aW5nIHRvIGEgcG93ZXI3IGRlZmF1bHQgaXMgdGhhdCBjb25kaXRp b25hbAotPiBicmFuY2ggaGludHMgYXJlIGRpc3BsYXllZCBmb3IgImF0IiBzdHlsZSBoaW50cyBy YXRoZXIgdGhhbiB0aGUgb2xkZXIKLT4gInkiIGhpbnRzLiAgV2hlbiB1c2luZyAieSIgaGludHMg dGhlIGRpc2Fzc2VtYmxlciBhbHdheXMgc2hvd2VkIHRoZQotPiBoaW50LCBlZy4gImJuZS0iIG9y ICJibmUrIi4gIE5vdyB5b3UnbGwgc2VlICJibmUiIG1vc3QgdGltZXMuICBUaGlzCi0+IG1lYW50 IHVwZGF0aW5nIHRoZSB0ZXN0c3VpdGUuICBJIG1hZGUgb25lIGdhcyB0ZXN0IGRpc2Fzc2VtYmxl IGZvcgotPiBwbGFpbiBwcGMganVzdCB0byBlbnN1cmUgdGhlIG9sZGVyICJ5IiBoaW50cyBjb250 aW51ZSB0byBiZSBhdmFpbGFibGUuCi0+IAotPiBDb21taXR0ZWQuCi0KLVRoYW5rcyBhIGxvdCBm b3IgdGhlIHBhdGNoLCBBbGFuLiBUaGlzIGFsc28gZml4ZXMgdGhlIGlzc3VlcyB3aXRoIGdkYgot ZGlzYXNzZW1ibGUgZm9yIHBvd2VyNiBhbmQgcG93ZXI3IGluc3RydWN0aW9ucy4KLQotV2l0aCB0 aGVzZSBjaGFuZ2VzIG9uIHBvd2VycGNfaW5pdF9kaWFsZWN0KCksIEknZCBzdWdnZXN0IHRvIHJl bW92ZSB0aGUgaW5mby0+bWFjaAotY2hlY2tpbmcgZnJvbSBnZGIuIE9rPwotCi0tLQotRWRqdW5p b3IKLQotMjAxMi0xMS0yMyAgRWRqdW5pb3IgTWFjaGFkbyAgPGVtYWNoYWRvQGxpbnV4LnZuZXQu aWJtLmNvbT4KLQotCSogcnM2MDAwLXRkZXAuYyAoZ2RiX3ByaW50X2luc25fcG93ZXJwYyk6IFJl bW92ZSBpbmZvLT5tYWNoIGNoZWNraW5nLAotCXNpbmNlIG5vdyBpdCBpcyBiZWluZyBkb25lIGlu IGJpbnV0aWxzJyBwb3dlcnBjX2luaXRfZGlhbGVjdCgpLgotCi0tLS0KLSBnZGIvcnM2MDAwLXRk ZXAuYyB8ICAgMTUgLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAwIGluc2VydGlv bnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL3JzNjAwMC10ZGVwLmMg Yi9nZGIvcnM2MDAwLXRkZXAuYwotaW5kZXggMTc5N2NjNS4uMDdiODFiYyAxMDA2NDQKLS0tLSBh L2dkYi9yczYwMDAtdGRlcC5jCi0rKysgYi9nZGIvcnM2MDAwLXRkZXAuYwotQEAgLTMwODQsMjEg KzMwODQsNiBAQCBmaW5kX3ZhcmlhbnRfYnlfYXJjaCAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlIGFy Y2gsIHVuc2lnbmVkIGxvbmcgbWFjaCkKLSBzdGF0aWMgaW50Ci0gZ2RiX3ByaW50X2luc25fcG93 ZXJwYyAoYmZkX3ZtYSBtZW1hZGRyLCBkaXNhc3NlbWJsZV9pbmZvICppbmZvKQotIHsKLS0gIGlm ICghaW5mby0+ZGlzYXNzZW1ibGVyX29wdGlvbnMpCi0tICAgIHsKLS0gICAgICAvKiBXaGVuIGRl YnVnZ2luZyBFNTAwIGJpbmFyaWVzIGFuZCBkaXNhc3NlbWJsaW5nIGNvZGUgY29udGFpbmluZwot LQkgRTUwMC1zcGVjaWZpYyAoU1BFKSBpbnN0cnVjdGlvbnMsIG9uZSBzb21ldGltZXMgc2VlcyBB bHRpVmVjCi0tCSBpbnN0cnVjdGlvbnMgaW5zdGVhZC4gIFRoZSBvcGNvZGUgc3BhY2VzIGZvciBT UEUgaW5zdHJ1Y3Rpb25zCi0tCSBhbmQgQWx0aVZlYyBpbnN0cnVjdGlvbnMgb3ZlcmxhcCwgYW5k IHNwZWNpZml5aW5nIHRoZSAiYW55IiBjcHUKLS0JIGxvb2tzIGZvciBBbHRpVmVjIGluc3RydWN0 aW9ucyBmaXJzdC4gIElmIHdlIGtub3cgd2UncmUKLS0JIGRlYnVnZ2luZyBhbiBFNTAwIGJpbmFy eSwgaG93ZXZlciwgd2UgY2FuIHNwZWNpZnkgdGhlICJlNTAweDIiCi0tCSBjcHUgYW5kIGdldCBt dWNoIG1vcmUgc2FuZSBkaXNhc3NlbWJseSBvdXRwdXQuICAqLwotLSAgICAgIGlmIChpbmZvLT5t YWNoID09IGJmZF9tYWNoX3BwY19lNTAwKQotLQlpbmZvLT5kaXNhc3NlbWJsZXJfb3B0aW9ucyA9 ICJlNTAweDIiOwotLSAgICAgIGVsc2UKLS0JaW5mby0+ZGlzYXNzZW1ibGVyX29wdGlvbnMgPSAi YW55IjsKLS0gICAgfQotLQotICAgaWYgKGluZm8tPmVuZGlhbiA9PSBCRkRfRU5ESUFOX0JJRykK LSAgICAgcmV0dXJuIHByaW50X2luc25fYmlnX3Bvd2VycGMgKG1lbWFkZHIsIGluZm8pOwotICAg ZWxzZQotLS0gCi0xLjcuMQotCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoIGIv Z2RiLXJoZWw1LWdjYzQ0LnBhdGNoCmluZGV4IDI0MTc5NWEuLjE3MmQwNjcgMTAwNjQ0Ci0tLSBh L2dkYi1yaGVsNS1nY2M0NC5wYXRjaAorKysgYi9nZGItcmhlbDUtZ2NjNDQucGF0Y2gKQEAgLTEs MTAgKzEsMTAgQEAKIFNvbWUgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgb24gUkhFTC01LjQr IG9ubHkgd2l0aCBnY2M0NCBhbmQgZ2ZvcnRyYW40NCBhcwogdGhlIGRlZmF1bHQgZ2NjIGFuZCBn Zm9ydHJhbiBiaW5hcmllcyBhcmUgZnJvbSBnY2MtNC4xLgogCi1JbmRleDogZ2RiLTcuNC41MC4y MDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAKK0luZGV4OiBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAJ MjAxMi0wNy0wMyAxNzozMDowNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw NzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDEyLTA3LTAzIDE3OjUwOjU3Ljk5 OTIwNzU0MCArMDIwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3ZsYS5leHAJMjAxMy0wMS0xOCAyMzo0MzowNC40NTU3NTYzNjIgKzAxMDAKKysr KyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDEz LTAxLTE4IDIzOjQzOjA4LjA4Mjc2MTE2NCArMDEwMAogQEAgLTE2LDcgKzE2LDI1IEBACiAgc2V0 IHRlc3RmaWxlIHZsYQogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKQEAgLTMyLDEwICszMiwx MCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Zs YS5leHAKICAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgogICAg ICByZXR1cm4gLTEKICB9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVy cC5leHAJMjAxMi0wNy0wMyAxNzo0NDo0NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUw LjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAkyMDEyLTA3 LTAzIDE3OjUwOjU4LjAwMDIwNzUzOSArMDIwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMy0wMS0xOCAyMzo0 MzowNC40NTY3NTYzNjUgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAkyMDEzLTAxLTE4IDIzOjQzOjA4LjA4Mjc2MTE2 NCArMDEwMAogQEAgLTM0LDkgKzM0LDI5IEBAIGlmIFtnZXRfY29tcGlsZXJfaW5mb10gewogICAg ICByZXR1cm4gLTEKICB9CkBAIC02NywxNSArNjcsMTYgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAx MjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCiAgICAgIHJldHVy biAtMQogIH0KICAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9u LWJsb2NrLmV4cAkyMDEyLTA3LTAzIDE3OjM2OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhw CTIwMTItMDctMDMgMTc6NTA6NTguMDAxMjA3NTM3ICswMjAwCi1AQCAtMjAsNyArMjAsMjUgQEAg c2V0IHRlc3RmaWxlICJjb21tb24tYmxvY2siCi0gc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkw Ci0gc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorLS0tIGdkYi03 LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9j ay5leHAJMjAxMy0wMS0xOCAyMzo0MzowOC4wODI3NjExNjQgKzAxMDAKKysrKyBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAkyMDEz LTAxLTE4IDIzOjQ0OjIzLjA0Nzg1NjE4MiArMDEwMAorQEAgLTIyLDggKzIyLDI1IEBAIGlmIHtb c2tpcF9mb3J0cmFuX3Rlc3RzXX0gewogIAotLWlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9 LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjkw IHF1aWV0fV0gIT0gIiIgfSB7Cisgc3RhbmRhcmRfdGVzdGZpbGUgLmY5MAorIAorLWlmIHtbcHJl cGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gXAorLQkgJHNyY2Zp bGUge2RlYnVnIGY5MCBxdWlldH1dfSB7CiArIyBUZW1wb3JhcmlseSBwcm92aWRlIGY5MGNvbXBp bGVyPWdmb3J0cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCiArCiArc2V0 IGJvYXJkIFt0YXJnZXRfaW5mbyBuYW1lXQpAQCAtODcsMjEgKzg4LDIxIEBAIEluZGV4OiBnZGIt Ny40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4 cAogK30KICtzZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlciBnZm9ydHJhbjQ0CiArCi0rc2V0IGVy ciBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmls ZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY5MCBxdWlldH1dCisrc2V0IGVyciBbcHJlcGFyZV9mb3Jf dGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHNyY2ZpbGUge2RlYnVnIGY5MCBx dWlldH1dCiArCiArdW5zZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlcgogK2lmIFtpbmZvIGV4aXN0 cyBvbGRfZjkwY29tcGlsZXJdIHsKICsgICAgc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgJG9s ZF9mOTBjb21waWxlcgogK30KICsKLStpZiAgeyAkZXJyICE9ICIiIH0gewotICAgICB1bnRlc3Rl ZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgorK2lmIHskZXJyfSB7CiAgICAgIHJldHVy biAtMQogIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vZHdhcmYtc3RyaWRlLmV4cAorIAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYt c3RyaWRlLmV4cAkyMDEyLTA3LTAzIDE3OjMwOjA3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhw CTIwMTItMDctMDMgMTc6NTA6NTguMDAyMjA3NTM1ICswMjAwCistLS0gZ2RiLTcuNS41MC4yMDEz MDExOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAkyMDEz LTAxLTE4IDIzOjQzOjA0LjQ1Njc1NjM2NSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCTIwMTMtMDEtMTggMjM6 NDM6MDguMDgzNzYxMTQ4ICswMTAwCiBAQCAtMjcsNyArMjcsMjUgQEAKICBzZXQgdGVzdGZpbGUg ZHdhcmYtc3RyaWRlCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCkBAIC0xMjksMTAgKzEz MCwxMCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2R3YXJmLXN0cmlkZS5leHAKICAgICAgcmV0dXJuIC0xCiAgfQogIAotSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAorSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWlj LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTItMDctMDMgMTc6MzA6MDcuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2R5bmFtaWMuZXhwCTIwMTItMDctMDMgMTc6NTA6NTguMDAyMjA3NTM1ICswMjAwCistLS0gZ2Ri LTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5l eHAJMjAxMy0wMS0xOCAyMzo0MzowNC40NTc3NTYzNjcgKzAxMDAKKysrKyBnZGItNy41LjUwLjIw MTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAJMjAxMy0wMS0xOCAy Mzo0MzowOC4wODM3NjExNDggKzAxMDAKIEBAIC0yNSw3ICsyNSwyNSBAQCBzZXQgdGVzdGZpbGUg ImR5bmFtaWMiCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCiAgc2V0IGJpbmZpbGUgJHtv YmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQpAQCAtMTYwLDEwICsxNjEsMTAgQEAgSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4 cAogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgogICAgICByZXR1 cm4gLTEKICB9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJy YXJ5LW1vZHVsZS5leHAJMjAxMi0wNi0yNSAyMjo1MTozNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1 bGUuZXhwCTIwMTItMDctMDMgMTc6NTI6NTcuNjY2MDYyOTgxICswMjAwCistLS0gZ2RiLTcuNS41 MC4yMDEzMDExOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUu ZXhwCTIwMTMtMDEtMTggMjM6NDM6MDQuNDU3NzU2MzY3ICswMTAwCisrKysgZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAkyMDEz LTAxLTE4IDIzOjQzOjA4LjA4Mzc2MTE0OCArMDEwMAogQEAgLTIzLDE2ICsyMywzNCBAQCBpZiBb Z2V0X2NvbXBpbGVyX2luZm9dIHsKICAgICByZXR1cm4gLTEKICB9CkBAIC0yMDMsMTAgKzIwNCwx MCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2xpYnJhcnktbW9kdWxlLmV4cAogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3Ny Y2ZpbGV9IgogICAgICByZXR1cm4gLTEKICB9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAKK0luZGV4OiBnZGItNy41LjUwLjIw MTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21v ZHVsZS5leHAJMjAxMi0wNi0yNSAyMjo1MTozNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40 LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAkyMDEyLTA3 LTAzIDE3OjUzOjU2LjQ2NDk5MjA4NiArMDIwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAJMjAxMy0wMS0xOCAyMzo0Mzow NC40NTc3NTYzNjcgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vbW9kdWxlLmV4cAkyMDEzLTAxLTE4IDIzOjQzOjA4LjA4Mzc2MTE0OCArMDEw MAogQEAgLTE1LDcgKzE1LDI1IEBACiAgCiAgc3RhbmRhcmRfdGVzdGZpbGUgLmY5MApAQCAtMjM0 LDEwICsyMzUsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9tb2R1bGUuZXhwCiAgICAgIHJldHVybiAtMQogIH0KICAKLUluZGV4OiBnZGIt Ny40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAorSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcu ZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAkyMDEyLTA3LTAzIDE3OjMwOjA3LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9z dHJpbmcuZXhwCTIwMTItMDctMDMgMTc6NTA6NTguMDA1MjA3NTMyICswMjAwCistLS0gZ2RiLTcu NS41MC4yMDEzMDExOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAky MDEzLTAxLTE4IDIzOjQzOjA0LjQ1Nzc1NjM2NyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCTIwMTMtMDEtMTggMjM6NDM6 MDguMDgzNzYxMTQ4ICswMTAwCiBAQCAtMjMsNyArMjMsMjUgQEAgc2V0IHRlc3RmaWxlICJzdHJp bmciCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCiAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9 LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQpAQCAtMjY1LDEwICsyNjYsMTAgQEAgSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCiAgICAg IHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCiAgICAgIHJldHVybiAtMQog IH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v b21wLXN0ZXAuZXhwCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL29tcC1zdGVwLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA3 MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAkyMDEyLTA3LTAz IDE3OjM2OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAJMjAxMi0wNy0wMyAxNzo1MDo1OC4wMDYy MDc1MzEgKzAyMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAJMjAxMy0wMS0xOCAyMzo0MzowNC40NTg3NTYzNjkgKzAx MDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21w LXN0ZXAuZXhwCTIwMTMtMDEtMTggMjM6NDM6MDguMDgzNzYxMTQ4ICswMTAwCiBAQCAtMTUsNyAr MTUsMjYgQEAKICAKICBzZXQgdGVzdGZpbGUgIm9tcC1zdGVwIgpAQCAtMjk3LDEwICsyOTgsMTAg QEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9v bXAtc3RlcC5leHAKICAgICAgcmV0dXJuIC0xCiAgfQogIAotSW5kZXg6IGdkYi03LjQuNTAuMjAx MjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCitJbmRleDog Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlw ZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCTIwMTItMDYtMjUgMjI6NTE6MzUuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAJMjAxMi0wNy0wMyAxNzo1NTo0Ni41ODM4NTg4NDkgKzAy MDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9kZXJpdmVkLXR5cGUuZXhwCTIwMTMtMDEtMTggMjM6NDM6MDQuNDU4NzU2MzY5ICswMTAwCisr KysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQt dHlwZS5leHAJMjAxMy0wMS0xOCAyMzo0MzowOC4wODQ3NjExMzUgKzAxMDAKIEBAIC0yMiw3ICsy MiwyNSBAQCBpZiB7IFtza2lwX2ZvcnRyYW5fdGVzdHNdIH0geyByZXR1cm4gLTEKICAKICBzdGFu ZGFyZF90ZXN0ZmlsZSAuZjkwCkBAIC0zMjgsMTAgKzMyOSwxMCBAQCBJbmRleDogZ2RiLTcuNC41 MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAKICAg ICAgcmV0dXJuIC0xCiAgfQogIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJy YXkuZXhwCTIwMTItMDYtMjUgMjI6NTE6MzUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41 MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAkyMDEyLTA3 LTAzIDE3OjU2OjIwLjQ1NDgxODE5OCArMDIwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAkyMDEzLTAxLTE4IDIzOjQz OjA0LjQ1ODc1NjM2OSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAJMjAxMy0wMS0xOCAyMzo0MzowOC4wODQ3NjExMzUg KzAxMDAKIEBAIC0yMiw3ICsyMiwyNSBAQCBpZiB7IFtza2lwX2ZvcnRyYW5fdGVzdHNdIH0geyBy ZXR1cm4gLTEKICAKICBzdGFuZGFyZF90ZXN0ZmlsZSAuZgpAQCAtMzU5LDEwICszNjAsMTAgQEAg SW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJh cnJheS5leHAKICAgICAgcmV0dXJuIC0xCiAgfQogIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3 MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy90bHMtc2VwZGVidWcuZXhwCitJbmRleDogZ2Ri LTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5l eHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9nZGIudGhyZWFkcy90bHMtc2VwZGVidWcuZXhwCTIwMTItMDctMDMgMTc6MzI6MDUuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL3Rscy1zZXBkZWJ1Zy5leHAJMjAxMi0wNy0wMyAxNzo1MDo1OC4wMDcyMDc1MzAgKzAyMDAK Ky0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy90 bHMtc2VwZGVidWcuZXhwCTIwMTMtMDEtMTggMjM6NDM6MDQuNDU5NzU2MzcxICswMTAwCisrKysg Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1 Zy5leHAJMjAxMy0wMS0xOCAyMzo0MzowOC4wODQ3NjExMzUgKzAxMDAKIEBAIC0zMiw3ICszMiwy NSBAQCBzZXQgYmluc2hhcmVkZGVidWdmaWxlICR7b2JqZGlyfS8ke3N1YmRpCiAgCiAgIyBGSVhN RTogZ2NjIGRlcGVuZGVuY3kgKC1XbCwtc29uYW1lKS4KQEAgLTM5MCwxMCArMzkxLDEwIEBAIElu ZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNl cGRlYnVnLmV4cAogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IGxpYnJhcnki CiAgICAgIHJldHVybiAtMQogIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0 c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi90ZXN0c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0 LmV4cAkyMDEyLTA3LTAzIDE3OjQ0OjQ1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAu MjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAkyMDEyLTA3LTAz IDE3OjUwOjU4LjAwODIwNzUyOSArMDIwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9n ZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTMtMDEtMTggMjM6NDM6MDQu NDU5NzU2MzcxICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2xp Yi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTMtMDEtMTggMjM6NDM6MDguMDg0NzYxMTM1ICswMTAw CiBAQCAtMTE5LDkgKzExOSwzMSBAQCBwcm9jIGZpbGVfY29weSB7c3JjIGRlc3R9IHsKICBwcm9j IGJ1aWxkX2V4ZWN1dGFibGVfb3duX2xpYnMge3Rlc3RuYW1lIGV4ZWN1dGFibGUgc291cmNlcyBv cHRpb25zIHtpbnRlcnAgIiJ9IHtkaXIgIiJ9fSB7CiAgICAgIGdsb2JhbCBvYmpkaXIgc3ViZGly CgpkaWZmIC0tZ2l0IGEvZ2RiLXVwc3RyZWFtLnBhdGNoIGIvZ2RiLXVwc3RyZWFtLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTUxMjQ3Li4wMDAwMDAwCi0tLSBhL2dkYi11 cHN0cmVhbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZZSTogc2V0IGR3 el9maWxlIGluIGR3YXJmMnJlYWQuYwotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRj aGVzLzIwMTItMTIvbXNnMDAzNTQuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1j dnMvMjAxMi0xMi9tc2cwMDA1OC5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzEy LzExIDE4OjQ1OjIzCTEuMTQ5MDQKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzEyLzExIDE5 OjUwOjUyCTEuMTQ5MDUKLSMjIC0xLDUgKzEsOSBAQAotIDIwMTItMTItMTEgIFRvbSBUcm9tZXkg IDx0cm9tZXlAcmVkaGF0LmNvbT4KLSAKLSsJKiBkd2FyZjJyZWFkLmMgKGR3YXJmMl9nZXRfZHd6 X2ZpbGUpOiBTZXQgJ2R3el9maWxlJy4KLSsKLSsyMDEyLTEyLTExICBUb20gVHJvbWV5ICA8dHJv bWV5QHJlZGhhdC5jb20+Ci0rCi0gCSogZHNyZWMuYyAocmVwb3J0X3RyYW5zZmVyX3BlcmZvcm1h bmNlKTogRG9uJ3QgZGVjbGFyZS4KLSAJKGxvYWRfc3JlYyk6IFVzZSBnZXR0aW1lb2ZkYXksIHBy aW50X3RyYW5zZmVyX3BlcmZvcm1hbmNlLgotIAkqIHN5bWZpbGUuYyAocmVwb3J0X3RyYW5zZmVy X3BlcmZvcm1hbmNlKTogUmVtb3ZlLgotLS0tIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIwMTIvMTIv MTAgMjI6MDI6MzQJMS43MjAKLSsrKyBzcmMvZ2RiL2R3YXJmMnJlYWQuYwkyMDEyLzEyLzExIDE5 OjUwOjUzCTEuNzIxCi1AQCAtMjExMiw2ICsyMTEyLDcgQEAKLSAKLSAgIGRvX2NsZWFudXBzIChj bGVhbnVwKTsKLSAKLSsgIGR3YXJmMl9wZXJfb2JqZmlsZS0+ZHd6X2ZpbGUgPSByZXN1bHQ7Ci0g ICByZXR1cm4gcmVzdWx0OwotIH0KLSAMCgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3Bl YwppbmRleCAwNTVjZDdmLi5mNDE0YWEzIDEwMDY0NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIu c3BlYwpAQCAtMzAsMTEgKzMwLDExIEBAIE5hbWU6ICV7P3NjbF9wcmVmaXh9Z2RiCiAlZ2xvYmFs IHNuYXAgICAgICAgMjAxMjA4MTcKICMgU2VlIHRpbWVzdGFtcCBvZiBzb3VyY2UgZ251bGliIGlu c3RhbGxlZCBpbnRvIGdkYi9nbnVsaWIvIC4KICVnbG9iYWwgc25hcGdudWxpYiAyMDEyMDYyMwot VmVyc2lvbjogNy41LjEKK1ZlcnNpb246IDcuNS41MC4yMDEzMDExOAogCiAjIFRoZSByZWxlYXNl IGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAx LgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBt IGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDM1JXs/ ZGlzdH0KK1JlbGVhc2U6IDElez9kaXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3 aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQg R1BMKyBhbmQgTEdQTHYyKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9tYWluCiBHcm91cDogRGV2ZWxv cG1lbnQvRGVidWdnZXJzCkBAIC0yNjEsNyArMjYxLDcgQEAgUGF0Y2gyMzE6IGdkYi02LjMtYnoy MDI2ODktZXhlYy1mcm9tLXB0aHJlYWQtdGVzdC5wYXRjaAogCiAjIEJhY2twb3J0ZWQgZml4dXBz IHBvc3QgdGhlIHNvdXJjZSB0YXJiYWxsLgogI1hkcm9wOiBKdXN0IGJhY2twb3J0cy4KLVBhdGNo MjMyOiBnZGItdXBzdHJlYW0ucGF0Y2gKKyNQYXRjaDIzMjogZ2RiLXVwc3RyZWFtLnBhdGNoCiAK ICMgVGVzdGNhc2UgZm9yIFBQQyBQb3dlcjYvREZQIGluc3RydWN0aW9ucyBkaXNhc3NlbWJseSAo QlogMjMwMDAwKS4KICM9ZmVkb3JhdGVzdCtwcGMKQEAgLTM3NCwxMCArMzc0LDYgQEAgUGF0Y2gz Mjk6IGdkYi02LjgtYnoyNTQyMjktZ2NvcmUtcHJwc2luZm8ucGF0Y2gKICM9cHVzaCt3b3JrOiBU aGlzIGZpeCBpcyBpbmNvcnJlY3QuCiBQYXRjaDMzMDogZ2RiLTYuOC1iejQzNjAzNy1yZWctbm8t bG9uZ2VyLWFjdGl2ZS5wYXRjaAogCi0jIE1ha2UgdGhlIEdEQiBxdWl0IHByb2Nlc3Npbmcgbm9u LWFib3J0YWJsZSB0byBjbGVhbnVwIGV2ZXJ5dGhpbmcgcHJvcGVybHkuCi0jPXB1c2g6IEl0IHdh cyB1c2VmdWwgb25seSBhZnRlciBnZGItNi44LWF0dGFjaC1zaWduYWxsZWQtZGV0YWNoLXN0b3Bw ZWQucGF0Y2ggLgotUGF0Y2gzMzE6IGdkYi02LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2gKLQog IyBbUkhFTDVdIFdvcmthcm91bmQga2VybmVsIGZvciBkZXRhY2hpbmcgU0lHU1RPUHBlZCBwcm9j ZXNzZXMgKEJaIDgwOTM4MikuCiAjPWZlZG9yYQogUGF0Y2gzMzU6IGdkYi1yaGVsNS1jb21wYXQu cGF0Y2gKQEAgLTQzMywxMiArNDI5LDYgQEAgUGF0Y2gzOTc6IGdkYi1mb2xsb3ctY2hpbGQtc3Rh bGUtcGFyZW50LnBhdGNoCiAjPWZlZG9yYXRlc3Q6IGNjYWNoZSBpcyByYXJlbHkgdXNlZCBhbmQg aXQgaXMgZXZlbiBmaXhlZCBub3cuCiBQYXRjaDQwMzogZ2RiLWNjYWNoZS13b3JrYXJvdW5kLnBh dGNoCiAKLSMgSW1wbGVtZW50IGBpbmZvIGNvbW1vbicgZm9yIEZvcnRyYW4uCi0jPXB1c2gKLVBh dGNoNDA0OiBnZGItZm9ydHJhbi1jb21tb24tcmVkdWNlLnBhdGNoCi0jPXB1c2gKLVBhdGNoNDA1 OiBnZGItZm9ydHJhbi1jb21tb24ucGF0Y2gKLQogIyBUZXN0Y2FzZSBmb3IgIkRvIG5vdCBtYWtl IHVwIGxpbmUgaW5mb3JtYXRpb24iIGZpeCBieSBEYW5pZWwgSmFjb2Jvd2l0ei4KICM9ZmVkb3Jh dGVzdAogUGF0Y2g0MDc6IGdkYi1saW5lbm8tbWFrZXVwLXRlc3QucGF0Y2gKQEAgLTQ3NiwxMCAr NDY2LDYgQEAgUGF0Y2g0OTE6IGdkYi1nZGItYWRkLWluZGV4LXNjcmlwdC5wYXRjaAogIz1kcm9w K3dvcms6IEluZmVyaW9yIG9iamVjdHMgc2hvdWxkIGJlIHJlYWQgaW4gcGFydHMsIHRoZW4gdGhp cyBwYXRjaCBnZXRzIG9ic29sZXRlZC4KIFBhdGNoNDk2OiBnZGItYno1NjgyNDgtb29tLWlzLWVy cm9yLnBhdGNoCiAKLSMgRml4IGdjb3JlIHdyaXRlciBmb3IgLVdsLC16LHJlbHJvIChQUiBjb3Jl ZmlsZXMvMTE4MDQpLgotIz1wdXNoOiBUaGVyZSBpcyBkaWZmZXJlbnQgcGF0Y2ggb24gZ2RiLXBh dGNoZXMsIHdhaXRpbmcgbm93IGZvciByZXNvbHV0aW9uIGluIGtlcm5lbC4KLVBhdGNoNTA0OiBn ZGItYno2MjM3NDktZ2NvcmUtcmVscm8ucGF0Y2gKLQogIyBWZXJpZnkgR0RCIFB5dGhvbiBidWls dC1pbiBmdW5jdGlvbiBnZGIuc29saWJfYWRkcmVzcyBleGlzdHMgKEJaICMgNjM0MTA4KS4KICM9 ZmVkb3JhdGVzdAogUGF0Y2g1MjY6IGdkYi1iejYzNDEwOC1zb2xpYl9hZGRyZXNzLnBhdGNoCkBA IC01MTIsOCArNDk4LDYgQEAgUGF0Y2g1Nzk6IGdkYi03LjIuNTAtc3BhcmMtYWRkLXdvcmthcm91 bmQtdG8tYnJva2VuLWRlYnVnLWZpbGVzLnBhdGNoCiAKICMgRml4IGRsb3BlbiBvZiBsaWJwdGhy ZWFkLnNvLCBwYXRjaGVkIGdsaWJjIHJlcXVpcmVkIChHYXJ5IEJlbnNvbiwgQlogNjY5NDMyKS4K ICM9cHVzaAotUGF0Y2g2MTg6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS0xb2Y3LnBhdGNoCi1QYXRj aDcxNzogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTJvZjcucGF0Y2gKIFBhdGNoNzE4OiBnZGItZGxv cGVuLXN0YXAtcHJvYmUtM29mNy5wYXRjaAogUGF0Y2g3MTk6IGdkYi1kbG9wZW4tc3RhcC1wcm9i ZS00b2Y3LnBhdGNoCiBQYXRjaDcyMDogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTVvZjcucGF0Y2gK QEAgLTU1MCw3ICs1MzQsNyBAQCBQYXRjaDY1NzogZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtNW9m NWNvbmZpZ3VyZS5wYXRjaAogUGF0Y2g2NjE6IGdkYi1zdGFsZS1mcmFtZV9pbmZvLnBhdGNoCiAK ICMgV29ya2Fyb3VuZCBQUiBsaWJjLzE0MTY2IGZvciBpbmZlcmlvciBjYWxscyBvZiBzdHJzdHIu Ci0jPXB1c2grd29yazogQnV0IHB1c2ggaXQgdG8gZ2xpYmMuCisjPWZlZG9yYTogQ29tcGF0aWJp bGl0eSB3aXRoIFJIRUxzICh1bmNoZWNrZWQgd2hpY2ggb25lcykuCiBQYXRjaDY5MDogZ2RiLWds aWJjLXN0cnN0ci13b3JrYXJvdW5kLnBhdGNoCiAKICMgSW5jbHVkZSB0ZXN0Y2FzZSBmb3IgYFVu YWJsZSB0byBzZWUgYSB2YXJpYWJsZSBpbnNpZGUgYSBtb2R1bGUgKFhMRiknIChCWiA4MjM3ODkp LgpAQCAtNTYyLDUwICs1NDYsMTggQEAgUGF0Y2g2OTg6IGdkYi1yaGVsNS45LXRlc3RjYXNlLXhs Zi12YXItaW5zaWRlLW1vZC5wYXRjaAogIz1mZWRvcmF0ZXN0CiBQYXRjaDcwMzogZ2RiLXJoYnot ODE4MzQzLXNldC1zb2xpYi1hYnNvbHV0ZS1wcmVmaXgtdGVzdGNhc2UucGF0Y2gKIAotIyBJbXBs ZW1lbnQgTWluaURlYnVnSW5mbyBGLTE4IEZlYXR1cmUgY29uc3VtZXIgKEFsZXhhbmRlciBMYXJz c29uLCBCWiA4MzQwNjgpLgotIz1mZWRvcmEKLVBhdGNoNzE2OiBnZGItbWluaWRlYnVnaW5mby5w YXRjaAotCi0jIEZpeCBjcmFzaCBwcmludGluZyBjbGFzc2VzIChCWiA4NDkzNTcsIFRvbSBUcm9t ZXkpLgotUGF0Y2g3MjY6IGdkYi1wcmludC1jbGFzcy5wYXRjaAotCi0jIFBlcm1pdCBwYXNzaW5n IHBvaW50ZXJzIGFzIGFkZHJlc3MgbnVtYmVyIGV2ZW4gZm9yIEMrKyBtZXRob2RzIChLZWl0aCBT ZWl0eikuCi1QYXRjaDcyODogZ2RiLWNoZWNrLXR5cGUucGF0Y2gKLQotIyBlbnRyeSB2YWx1ZXM6 IEZpeCByZXNvbHZpbmcgaW4gaW5saW5lZCBmcmFtZXMuCi1QYXRjaDcyOTogZ2RiLWVudHJ5dmFs LWlubGluZWQucGF0Y2gKLQogIyBGaXggYEdEQiBjYW5ub3QgYWNjZXNzIHN0cnVjdCBtZW1iZXIg d2hvc2Ugb2Zmc2V0IGlzIGxhcmdlciB0aGFuIDI1Nk1CJwogIyAoUkggQlogNzk1NDI0KS4KLVBh dGNoNzk3OiBnZGItcmhiejc5NTQyNC1iaXRwb3MtMDZvZjI1LnBhdGNoCi1QYXRjaDc5ODogZ2Ri LXJoYno3OTU0MjQtYml0cG9zLTA3b2YyNS5wYXRjaAotUGF0Y2g3OTk6IGdkYi1yaGJ6Nzk1NDI0 LWJpdHBvcy0wOG9mMjUucGF0Y2gKLVBhdGNoODAwOiBnZGItcmhiejc5NTQyNC1iaXRwb3MtMDlv ZjI1LnBhdGNoCi1QYXRjaDgwMTogZ2RiLXJoYno3OTU0MjQtYml0cG9zLTEwb2YyNS5wYXRjaAot UGF0Y2g4MDI6IGdkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0xMW9mMjUucGF0Y2gKLVBhdGNoODAzOiBn ZGItcmhiejc5NTQyNC1iaXRwb3MtMTJvZjI1LnBhdGNoCi1QYXRjaDgwNDogZ2RiLXJoYno3OTU0 MjQtYml0cG9zLTEzb2YyNS5wYXRjaAotUGF0Y2g4MDU6IGdkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0x NG9mMjUucGF0Y2gKLVBhdGNoODA2OiBnZGItcmhiejc5NTQyNC1iaXRwb3MtMTVvZjI1LnBhdGNo Ci1QYXRjaDgwNzogZ2RiLXJoYno3OTU0MjQtYml0cG9zLTE2b2YyNS5wYXRjaAotUGF0Y2g4MDg6 IGdkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0xN29mMjUucGF0Y2gKLVBhdGNoODA5OiBnZGItcmhiejc5 NTQyNC1iaXRwb3MtMThvZjI1LnBhdGNoCi1QYXRjaDgxMDogZ2RiLXJoYno3OTU0MjQtYml0cG9z LTE5b2YyNS5wYXRjaAogUGF0Y2g4MTE6IGdkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMG9mMjUucGF0 Y2gKIFBhdGNoODEyOiBnZGItcmhiejc5NTQyNC1iaXRwb3MtMjFvZjI1LnBhdGNoCiBQYXRjaDgx MzogZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIyb2YyNS5wYXRjaAogUGF0Y2g4MTQ6IGdkYi1yaGJ6 Nzk1NDI0LWJpdHBvcy0yM29mMjUucGF0Y2gKLVBhdGNoODE1OiBnZGItcmhiejc5NTQyNC1iaXRw b3MtMjRvZjI1LnBhdGNoCiBQYXRjaDgxNjogZ2RiLXJoYno3OTU0MjQtYml0cG9zLTI1b2YyNS5w YXRjaAogUGF0Y2g4MTc6IGdkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yNW9mMjUtdGVzdC5wYXRjaAog UGF0Y2g4MTg6IGdkYi1yaGJ6Nzk1NDI0LWJpdHBvcy1sYXp5dmFsdWUucGF0Y2gKIAotIyBGaXgg RFdfT1BfR05VX2ltcGxpY2l0X3BvaW50ZXIgb2Zmc2V0IGJ1ZyAoVG9tIFRyb21leSkuCi1QYXRj aDgxOTogZ2RiLWltcGxpY2l0cG9pbnRlci1vZmZzZXQucGF0Y2gKLQotIyBbcHBjKl0gRml4IFBv d2VyUEMgZGlzYXNzZW1ibHkgcmVncmVzc2lvbiAoQWxhbiBNb2RyYSwgRWRqdW5pb3IgTWFjaGFk bykuCi1QYXRjaDgyMDogZ2RiLXJoYno4OTA5MDAtcHBjLWRpcy0xb2YyLnBhdGNoCi1QYXRjaDgy MTogZ2RiLXJoYno4OTA5MDAtcHBjLWRpcy0yb2YyLnBhdGNoCisjIEZpeCBnZGIuZm9ydHJhbi9j b21tb24tYmxvY2suZXhwIGluIFBJRSBtb2RlLgorUGF0Y2g4MjM6IGdkYi1jb21tb25ibG9jay1w aWUucGF0Y2gKIAogJWlmIDAleyE/cmhlbDoxfSB8fCAwJXs/cmhlbH0gPiA2CiAjIFJMX1NUQVRF X0ZFRE9SQV9HREIgd291bGQgbm90IGJlIGZvdW5kIGZvcjoKQEAgLTgwNiw3ICs3NTgsNyBAQCBm aW5kIC1uYW1lICIqLmluZm8qInx4YXJncyBybSAtZgogJXBhdGNoMiAtcDEKIAogJXBhdGNoMzQ5 IC1wMQotJXBhdGNoMjMyIC1wMQorI3BhdGNoMjMyIC1wMQogJXBhdGNoMSAtcDEKICVwYXRjaDMg LXAxCiAKQEAgLTg2OSw3ICs4MjEsNiBAQCBmaW5kIC1uYW1lICIqLmluZm8qInx4YXJncyBybSAt ZgogJXBhdGNoMzIwIC1wMQogJXBhdGNoMzI5IC1wMQogJXBhdGNoMzMwIC1wMQotJXBhdGNoMzMx IC1wMQogJXBhdGNoMzQzIC1wMQogJXBhdGNoMzQ4IC1wMQogJXBhdGNoMzYwIC1wMQpAQCAtODc5 LDggKzgzMCw2IEBAIGZpbmQgLW5hbWUgIiouaW5mbyoifHhhcmdzIHJtIC1mCiAlcGF0Y2gzOTIg LXAxCiAlcGF0Y2gzOTcgLXAxCiAlcGF0Y2g0MDMgLXAxCi0lcGF0Y2g0MDQgLXAxCi0lcGF0Y2g0 MDUgLXAxCiAlcGF0Y2gzODkgLXAxCiAlcGF0Y2gzOTQgLXAxCiAlcGF0Y2g0MDcgLXAxCkBAIC04 OTQsMTQgKzg0MywxMSBAQCBmaW5kIC1uYW1lICIqLmluZm8qInx4YXJncyBybSAtZgogJXBhdGNo NDkwIC1wMQogJXBhdGNoNDkxIC1wMQogJXBhdGNoNDk2IC1wMQotJXBhdGNoNTA0IC1wMQogJXBh dGNoNTI2IC1wMQogJXBhdGNoNTQyIC1wMQogJXBhdGNoNTQ3IC1wMQogJXBhdGNoNTQ4IC1wMQog JXBhdGNoNTc5IC1wMQotJXBhdGNoNjE4IC1wMQotJXBhdGNoNzE3IC1wMQogJXBhdGNoNzE4IC1w MQogJXBhdGNoNzE5IC1wMQogJXBhdGNoNzIwIC1wMQpAQCAtOTE5LDM1ICs4NjUsMTQgQEAgZmlu ZCAtbmFtZSAiKi5pbmZvKiJ8eGFyZ3Mgcm0gLWYKICVwYXRjaDY5MCAtcDEKICVwYXRjaDY5OCAt cDEKICVwYXRjaDcwMyAtcDEKLSVwYXRjaDcxNiAtcDEKLSVwYXRjaDcyNiAtcDEKLSVwYXRjaDcy OCAtcDEKLSVwYXRjaDcyOSAtcDEKLSVwYXRjaDc5NyAtcDEKLSVwYXRjaDc5OCAtcDEKLSVwYXRj aDc5OSAtcDEKLSVwYXRjaDgwMCAtcDEKLSVwYXRjaDgwMSAtcDEKLSVwYXRjaDgwMiAtcDEKLSVw YXRjaDgwMyAtcDEKLSVwYXRjaDgwNCAtcDEKLSVwYXRjaDgwNSAtcDEKLSVwYXRjaDgwNiAtcDEK LSVwYXRjaDgwNyAtcDEKLSVwYXRjaDgwOCAtcDEKLSVwYXRjaDgwOSAtcDEKLSVwYXRjaDgxMCAt cDEKICVwYXRjaDgxMSAtcDEKICVwYXRjaDgxMiAtcDEKICVwYXRjaDgxMyAtcDEKICVwYXRjaDgx NCAtcDEKLSVwYXRjaDgxNSAtcDEKICVwYXRjaDgxNiAtcDEKICVwYXRjaDgxNyAtcDEKICVwYXRj aDgxOCAtcDEKLSVwYXRjaDgxOSAtcDEKLSVwYXRjaDgyMCAtcDEKLSVwYXRjaDgyMSAtcDEKKyVw YXRjaDgyMyAtcDEKIAogJXBhdGNoMzkzIC1wMQogJWlmIDAleyE/ZWw1OjF9IHx8IDAlez9zY2w6 MX0KQEAgLTE0NDYsNiArMTM3MSw5IEBAIGZpCiAlZW5kaWYgIyAwJXshP2VsNToxfSB8fCAiJXtf dGFyZ2V0X2NwdX0iID09ICJub2FyY2giCiAKICVjaGFuZ2Vsb2cKKyogU2F0IEphbiAxOSAyMDEz IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuNS41MC4yMDEz MDExOC0xLmZjMTkKKy0gUmViYXNlIHRvIEZTRiBHREIgNy41LjUwLjIwMTMwMTE4IChwcmUtNy42 IHNuYXBzaG90KS4KKwogKiBTdW4gSmFuIDEzIDIwMTMgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+IC0gNy41LjEtMzUuZmMxOAogLSBbdGVzdHN1aXRlXSBGaXggZ2Ri LW9ycGhhbnJpcHBlci5jIGxvY2t1cCBvbiBGLTE3ICgvZGV2L3B0cy8qIGdsaWJjIGNob3duKS4K IApAQCAtMzAxNCw3ICsyOTQyLDcgQEAgZmkKICogU3VuIE9jdCAxNCAyMDA3IEphbiBLcmF0b2No dmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDYuNi0zNgogLSBGaXggaGFyZHdhcmUg d2F0Y2hwb2ludHMgYWZ0ZXIgaW5mZXJpb3IgZm9ya3Mtb2ZmIHNvbWUgcHJvY2Vzcy4KIAotKiBG cmkgT2N0IDEzIDIwMDcgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ IC0gNi42LTM1CisqIFNhdCBPY3QgMTMgMjAwNyBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4gLSA2LjYtMzUKIC0gRml4IG5vbi10aHJlYWRlZCB3YXRjaHBvaW50cyBD VFJMLUMgcmVncmVzc2lvbiBvbiBgc2V0IGZvbGxvdyBjaGlsZCcuCiAKICogRnJpIE9jdCAxMiAy MDA3IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDYuNi0zNApA QCAtMzE2MSw3ICszMDg5LDcgQEAgZmkKICogTW9uIEphbiAxNSAyMDA3IEphbiBLcmF0b2Nodmls IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDYuNS0yNwogLSBGaXggdGhlIHRlc3RzdWl0 ZSByZXN1bHRzIGJyb2tlbiBpbiA2LjUtMjYsIHN0b3AgaW52YWxpZCB0ZXN0c3VpdGUgcnVucy4K IAotKiBGcmkgSmFuIDEzIDIwMDcgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+IC0gNi41LTI2CisqIFNhdCBKYW4gMTMgMjAwNyBKYW4gS3JhdG9jaHZpbCA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA2LjUtMjYKIC0gRml4IHVud2luZGluZyBvZiBub24tZGVi dWcgKC5laF9mcmFtZSkgUFBDIGNvZGUsIEFuZHJlYXMgU2Nod2FiIChCWiAxNDA1MzIpLgogLSBG aXggdW53aW5kaW5nIG9mIGRlYnVnICguZGVidWdfZnJhbWUpIFBQQyBjb2RlLCB3b3JrYXJvdW5k IEdDQyAoQlogMTQwNTMyKS4KIC0gRml4IG1pc3NpbmcgdGVzdHN1aXRlIC5sb2cgb3V0cHV0IG9m IHRlc3RjYXNlcyB1c2luZyBnZXRfY29tcGlsZXJfaW5mbygpLgpAQCAtMzE5NSwxNiArMzEyMywx NiBAQCBmaQogKiBTYXQgTm92IDI1IDIwMDYgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+IC0gNi41LTE4CiAtIEZpeCByZWFkbGluZSBoaXN0b3J5IGZvciBpbnB1dCBt b2RlIGNvbW1hbmRzIGxpa2UgYGNvbW1hbmQnIChCWiAyMTU4MTYpLgogCi0qIFdlZCBOb3YgMTYg MjAwNiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA2LjUtMTcK KyogVGh1IE5vdiAxNiAyMDA2IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPiAtIDYuNS0xNwogLSBCdWdmaXggdGVzdGNhc2UgdHlwbyBvZiBnZGItNi41LTE2LgogCi0q IFdlZCBOb3YgMTYgMjAwNiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4gLSA2LjUtMTYKKyogVGh1IE5vdiAxNiAyMDA2IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPiAtIDYuNS0xNgogLSBQcm92aWRlIHRlc3RjYXNlIGZvciBhY2Nlc3Np bmcgdGhlIGxhc3QgYWRkcmVzcyBzcGFjZSBieXRlLgogCi0qIFdlZCBOb3YgIDkgMjAwNiBKYW4g S3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA2LjUtMTUKKyogVGh1IE5v diAgOSAyMDA2IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDYu NS0xNQogLSBGaXggcmVhZGxpbmUgc2VnZmF1bHQgb24gZXhjZXNzaXZlbHkgbG9uZyBoYW5kLXR5 cGVkIGxpbmVzLgogCi0qIFNhdCBOb3YgIDIgMjAwNiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4gLSA2LjUtMTQKKyogVGh1IE5vdiAgMiAyMDA2IEphbiBLcmF0b2No dmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDYuNS0xNAogLSBGaXggIj8/IiByZXNv bHZpbmcgb2Ygc3ltYm9scyBmcm9tIChub24tcHJlbGlua2VkKSBkZWJ1Z2luZm8gcGFja2FnZXMu CiAtIEZpeCAiPz8iIHJlc29sdmluZyBvZiBzeW1ib2xzIGZyb20gb3ZlcmxhcHBpbmcgZnVuY3Rp b25zIChuYW5vc2xlZXAoMykpLgogLSBBbHNvIGRpc2FibGUgdGVzdGNhc2UgImNoZWNrcG9pbnQu ZXhwIiBmb3IgYSBwb3NzaWJsZSBrZXJuZWwgQnVnIDIwNzAwMi4KQEAgLTMyMjcsNyArMzE1NSw3 IEBAIGZpCiAtIFN1cHBvcnQgSVB2NiBmb3IgZ2Ric2VydmVyIChCWiAxOTgzNjUpLgogLSBUZW1w b3JhcmlseSBkaXNhYmxlIHRlc3RjYXNlICJjaG5nLXN5bXMuZXhwIiBmb3IgYSBwb3NzaWJsZSBr ZXJuZWwgQnVnIDIwNzAwMi4KIAotKiBXZWQgU2VwIDIxIDIwMDYgSmFuIEtyYXRvY2h2aWwgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNi41LTkKKyogVGh1IFNlcCAyMSAyMDA2IEphbiBL cmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDYuNS05CiAtIEZpeCBjcmFz aCBvbiBDKysgc3ltYm9sIGZhaWxpbmcgdG8gYmUgZGVtYW5nbGVkIChCWiAyMDY4MTMpLgogLSBG aXggYXR0YWNoIHRvIHN0b3BwZWQgcHJvY2Vzcywgc3VwZXJzZWRlIGBnZGItNi4zLWF0dGFjaC1z dG9wLTIwMDUxMDExLnBhdGNoJy4KIC0gRml4IFRMUyBzeW1ib2xzIHJlc29sdmluZyBmb3Igb2Jq ZWN0cyB3aXRoIHNlcGFyYXRlIC5kZWJ1ZyBmaWxlICgtZGVidWdpbmZvKS4KQEAgLTM3NjIsMTEg KzM2OTAsMTEgQEAgQnVnemlsbGEgMTM1NjMzCiAtIEZvciA2NC1iaXQgUFBDLCBjb252ZXJ0IF9k bF9kZWJ1Z19zdGF0ZSBkZXNjcmlwdG9yIGludG8gYSBjb2RlIGFkZHJlc3MuCiAtIEZpeCAtLWln bm9yZSBvcHRpb24uCiAKLSogTW9uIE9jdCAxMCAyMDA0IEFuZHJldyBDYWduZXkgPGNhZ25leUBy ZWRoYXQuY29tPiAtIDEuMjAwNDAwNjA3LjQwCisqIFN1biBPY3QgMTAgMjAwNCBBbmRyZXcgQ2Fn bmV5IDxjYWduZXlAcmVkaGF0LmNvbT4gLSAxLjIwMDQwMDYwNy40MAogLSBEaXNhYmxlIGF0dGFj aC1waWUuZXhwIHRlc3QsIGhhbmdzIG9uIGFtZDY0IHdpdGhvdXQgYXV4di4KIC0gTW92ZSBwaWUg dGVzdHMgdG8gcGllLgogCi0qIE1vbiBPY3QgMTAgMjAwNCBBbmRyZXcgQ2FnbmV5IDxjYWduZXlA cmVkaGF0LmNvbT4gLSAxLjIwMDQwMDYwNy4zOQorKiBTdW4gT2N0IDEwIDIwMDQgQW5kcmV3IENh Z25leSA8Y2FnbmV5QHJlZGhhdC5jb20+IC0gMS4yMDA0MDA2MDcuMzkKIC0gRml4IGNvbW1lbnQg YnVnIGluIHNpZ3N0ZXAuZXhwLgogCiAqIFRodSBPY3QgMDcgMjAwNCBKZWZmIEpvaG5zdG9uIDxq am9obnN0bkByZWRoYXQuY29tPiAtIDEuMjAwNDAwNjA3LjM4CkBAIC0zOTM5LDE3ICszODY3LDE3 IEBAIEJ1Z3ppbGxhIDEzNTYzMwogKiBUdWUgTWFyIDMwIDIwMDQgRWxlbmEgWmFubm9uaSA8ZXph bm5vbmlAcmVkaGF0LmNvbT4gLSAwLjIwMDQwMjIzLjEzCiAtIEZpeCB0ZXN0c3VpdGUgZ2xpdGNo ZXMuCiAKLSogVGh1IE1hciAyNCAyMDA0IEVsZW5hIFphbm5vbmkgPGV6YW5ub25pQHJlZGhhdC5j b20+IC0gMC4yMDA0MDIyMy4xMgorKiBXZWQgTWFyIDI0IDIwMDQgRWxlbmEgWmFubm9uaSA8ZXph bm5vbmlAcmVkaGF0LmNvbT4gLSAwLjIwMDQwMjIzLjEyCiAtIEZpeCB0eXBvLgogCi0qIFRodSBN YXIgMjQgMjAwNCBFbGVuYSBaYW5ub25pIDxlemFubm9uaUByZWRoYXQuY29tPiAtIDAuMjAwNDAy MjMuMTEKKyogV2VkIE1hciAyNCAyMDA0IEVsZW5hIFphbm5vbmkgPGV6YW5ub25pQHJlZGhhdC5j b20+IC0gMC4yMDA0MDIyMy4xMQogLSBNYWtlIGdkYiBjb21waWxlIHcvbyB3YXJuaW5ncyB3aXRo IGdjYy0zLjQuCiAtIFJlZW5hYmxlIFBJRSBzdXBwb3J0IGNvZGUuCiAKLSogV2VkIE1hciAyMyAy MDA0IEVsZW5hIFphbm5vbmkgPGV6YW5ub25pQHJlZGhhdC5jb20+IC0gMC4yMDA0MDIyMy4xMAor KiBUdWUgTWFyIDIzIDIwMDQgRWxlbmEgWmFubm9uaSA8ZXphbm5vbmlAcmVkaGF0LmNvbT4gLSAw LjIwMDQwMjIzLjEwCiAtIEJ1bXAgdmVyc2lvbiBudW1iZXIKIAotKiBXZWQgTWFyIDIzIDIwMDQg RWxlbmEgWmFubm9uaSA8ZXphbm5vbmlAcmVkaGF0LmNvbT4gLSAwLjIwMDQwMjIzLjkKKyogVHVl IE1hciAyMyAyMDA0IEVsZW5hIFphbm5vbmkgPGV6YW5ub25pQHJlZGhhdC5jb20+IC0gMC4yMDA0 MDIyMy45CiAtIHRlbXBvcmFyaWx5IGRpc2FibGUgUElFIHN1cHBvcnQuCiAtIEFkZCBzZWN0aW9u IHRvIG9ic29sZXRlIGdkYjY0IHBhY2thZ2UuCiAKQEAgLTQxMzgsNyArNDA2Niw3IEBAIHRvIHBv aW50ZXJzIHdoZW4gdGhlIGFkZHJlc3MgaXMgaW4gdGhlICIub3BkIiBzZWN0aW9uLgogKiBXZWQg QXVnIDA2IDIwMDMgQW5kcmV3IENhZ25leSA8Y2FnbmV5QHJlZGhhdC5jb20+IC0gMC4yMDAzMDcx MC4xMAogLSBTeW5jIHRvIGdkYi01LjMuOTAtc3luYy0yMDAzMDgwNi5wYXRjaC4KIAotKiBXZWQg SnVsIDI5IDIwMDMgQW5kcmV3IENhZ25leSA8Y2FnbmV5QHJlZGhhdC5jb20+IC0gMC4yMDAzMDcx MC45CisqIFR1ZSBKdWwgMjkgMjAwMyBBbmRyZXcgQ2FnbmV5IDxjYWduZXlAcmVkaGF0LmNvbT4g LSAwLjIwMDMwNzEwLjkKIC0gYWRkIHg4Ni02NCBpMzg2IGZpeGVzCiAKICogVHVlIEp1bCAyOSAy MDAzIEVsZW5hIFphbm5vbmkgPGV6YW5ub25pQHJlZGhhdC5jb20+IC0gMC4yMDAzMDcxMC44CkBA IC00NTI1LDcgKzQ0NTMsNyBAQCBHZW5lcmFsIHJldmFtcC4KICogRnJpIE1hciAxNiAyMDAxIFRy b25kIEVpdmluZCBHbG9tc3JvZCA8dGVnQHJlZGhhdC5jb20+CiAtIGJ1aWxkIHdpdGggb2xkIGhl YWRlcnMsIG5ldyBjb21waWxlcgogCi0qIFdlZCBNYXIgMTYgMjAwMSBUcm9uZCBFaXZpbmQgR2xv bXNyb2QgPHRlZ0ByZWRoYXQuY29tPgorKiBGcmkgTWFyIDE2IDIwMDEgVHJvbmQgRWl2aW5kIEds b21zcm9kIDx0ZWdAcmVkaGF0LmNvbT4KIC0gbmV3IHNuYXBzaG90CiAKICogTW9uIEZlYiAyNiAy MDAxIFRyb25kIEVpdmluZCBHbG9tc3JvZCA8dGVnQHJlZGhhdC5jb20+CkBAIC00NTQ4LDcgKzQ0 NzYsNyBAQCBHZW5lcmFsIHJldmFtcC4KICogRnJpIEphbiAxOSAyMDAxIFRyb25kIEVpdmluZCBH bG9tc3JvZCA8dGVnQHJlZGhhdC5jb20+CiAtIG5ldyBzbmFwc2hvdAogCi0qIFRodSBEZWMgMjAg MjAwMCBUcm9uZCBFaXZpbmQgR2xvbXNyb2QgPHRlZ0ByZWRoYXQuY29tPgorKiBXZWQgRGVjIDIw IDIwMDAgVHJvbmQgRWl2aW5kIEdsb21zcm9kIDx0ZWdAcmVkaGF0LmNvbT4KIC0gbmV3IHNuYXBz aG90CiAKICogTW9uIERlYyAwNCAyMDAwIFRyb25kIEVpdmluZCBHbG9tc3JvZCA8dGVnQHJlZGhh dC5jb20+CkBAIC00NTY4LDcgKzQ0OTYsNyBAQCBHZW5lcmFsIHJldmFtcC4KICogV2VkIEF1ZyAw OSAyMDAwIFRyb25kIEVpdmluZCBHbG9tc3JvZCA8dGVnQHJlZGhhdC5jb20+CiAtIGFkZGVkIHBh dGNoIGZyb20gR0RCIHRlYW0gZm9yIEMrKyBzeW1ib2wgaGFuZGxpbmcKIAotKiBNb24gSnVsIDI1 IDIwMDAgVHJvbmQgRWl2aW5kIEdsb21zcm9kIDx0ZWdAcmVkaGF0LmNvbT4KKyogVHVlIEp1bCAy NSAyMDAwIFRyb25kIEVpdmluZCBHbG9tc3JvZCA8dGVnQHJlZGhhdC5jb20+CiAtIHVwZ3JhZGUg dG8gQ1ZTIHNuYXBzaG90CiAtIGV4Y2x1ZGVhcmNoIFNQQVJDLCBidWlsZCBvbiBJQTYxCiAKQEAg LTQ1ODEsNyArNDUwOSw3IEBAIEdlbmVyYWwgcmV2YW1wLgogKiBTdW4gSnVsIDAyIDIwMDAgVHJv bmQgRWl2aW5kIEdsb21zcm9kIDx0ZWdAcmVkaGF0LmNvbT4KIC0gcmVidWlsZAogCi0qIEZyaSBK dW4gMDggMjAwMCBUcm9uZCBFaXZpbmQgR2xvbXNyb2QgPHRlZ0ByZWRoYXQuY29tPgorKiBUaHUg SnVuIDA4IDIwMDAgVHJvbmQgRWl2aW5kIEdsb21zcm9kIDx0ZWdAcmVkaGF0LmNvbT4KIC0gdXNl ICUlY29uZmlndXJlLCAlJW1ha2VpbnN0YWxsLCAlJXtfaW5mb2Rpcn0sICUle19tYW5kaXJ9LAog ICBhbmQgJSV7X3RtcHBhdGh9CiAtIHRoZSBpbnN0YWxsIHNjcmlwdHMgIGZvciBpbmZvIGFyZSBi cm9rZW4odGhleSBkb24ndCBjYXJlIGFib3V0CkBAIC00NjIwLDcgKzQ1NDgsNyBAQCBzaWd0cmFt cCwgc3BhcmMsIHhyZWYsIGFuZCB0aHJlYWRzIHBhdGNoZXMuICBVcGRhdGUgc3BhcmNtaW4gcGF0 Y2guCiAqIE1vbiBBdWcgMjMgMTk5OSBKaW0gS2luZ2RvbgogLSBPbWl0IHJlYWRsaW5lIG1hbnBh Z2UuCiAKLSogVHVlIEF1ZyA3IDE5OTkgSmltIEtpbmdkb24KKyogU2F0IEF1ZyAgNyAxOTk5IEpp bSBLaW5nZG9uCiAtIFJlbW92ZSBILkouIEx1J3MgcGF0Y2hlcyAodGhleSBoYWQgYmVlbiBjb21t ZW50ZWQgb3V0KS4KIC0gQWRkIHNpZ3RyYW1wIHBhdGNoIChmcm9tIGdkYi5jeWdudXMuY29tKSBh bmQgdGhyZWFkcyBwYXRjaCAoYWRhcHRlZAogZnJvbSBjb2RlIGZ1c2lvbiBDRC1ST00pLgoKZGlm ZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IDZmMjQyOWYuLjEwYTU1OTcgMTAwNjQ0 Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSwyICsxLDIgQEAKIDQ5ODEzMDdhYTk2 MTliYmVjNWI3MzI2MWU0ZTQxYzhkICBnZGItbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRh ci5iejIKLTNmNDhmNDY4YjI0NDQ3Y2YyNDgyMDA1NGZmNmU4NWIxICBnZGItNy41LjEudGFyLmJ6 MgorODg5ZjYyYWQ5OWEwNDFkYWY1MTQzYzYxYTU1OWNmMmYgIGdkYi03LjUuNTAuMjAxMzAxMTgu dGFyLmJ6Mgo=