From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1b3KFO-0005oa-VY for barebox@lists.infradead.org; Thu, 19 May 2016 09:28:21 +0000 Received: by mail-wm0-x241.google.com with SMTP id r12so19363831wme.0 for ; Thu, 19 May 2016 02:27:46 -0700 (PDT) From: Raphael Poggi Date: Fri, 20 May 2016 03:11:07 +0200 Message-Id: <1463706669-39738-2-git-send-email-poggi.raph@gmail.com> In-Reply-To: <1463706669-39738-1-git-send-email-poggi.raph@gmail.com> References: <1463706669-39738-1-git-send-email-poggi.raph@gmail.com> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [PATCH 1/3] arch: add minimal aarch64 support To: barebox@lists.infradead.org Cc: Raphael Poggi VGhpcyBjb21taXQgYWRkIG1pbmltYWwgc3VwcG9ydCBmb3IgYWFyY2g2NC9hcm02NCBhcmNoaXRl Y3R1cmUuCgpUaGUgbWFpbiBjdXJyZW50IGxpbWl0YXRpb25zIGFyZToKCS0gTU1VIG5vdCBpbXBs ZW1lbnRlZAoJLSBiYXJlYm94IHJ1bm5pbmcgYXQgRUwxCgktIGJhcmVib3ggZW52IG5vdCB3b3Jr aW5nCgktIG9ubHkgdGVzdCBvbiBxZW11CgpTaWduZWQtb2ZmLWJ5OiBSYXBoYWVsIFBvZ2dpIDxw b2dnaS5yYXBoQGdtYWlsLmNvbT4KLS0tCiBhcmNoL2FybTY0L0tjb25maWcgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDE0MCArKysrKysrCiBhcmNoL2FybTY0L01ha2VmaWxlICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDEwOSArKysrKwogYXJjaC9hcm02NC9ib2FyZHMvTWFrZWZpbGUg ICAgICAgICAgICAgICAgICAgfCAgIDIgKwogYXJjaC9hcm02NC9ib2FyZHMvdmlydC9LY29uZmln ICAgICAgICAgICAgICAgfCAgIDggKwogYXJjaC9hcm02NC9ib2FyZHMvdmlydC9NYWtlZmlsZSAg ICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9hcm02NC9ib2FyZHMvdmlydC9lbnYvYmluL191cGRh dGUgICAgICAgfCAgMzYgKysKIGFyY2gvYXJtNjQvYm9hcmRzL3ZpcnQvZW52L2Jpbi9ib290ICAg ICAgICAgIHwgIDM4ICsrCiBhcmNoL2FybTY0L2JvYXJkcy92aXJ0L2Vudi9iaW4vaW5pdCAgICAg ICAgICB8ICAyMCArCiBhcmNoL2FybTY0L2JvYXJkcy92aXJ0L2Vudi9iaW4vdXBkYXRlX2tlcm5l bCB8ICAgOCArCiBhcmNoL2FybTY0L2JvYXJkcy92aXJ0L2Vudi9iaW4vdXBkYXRlX3Jvb3QgICB8 ICAgOCArCiBhcmNoL2FybTY0L2JvYXJkcy92aXJ0L2Vudi9jb25maWcgICAgICAgICAgICB8ICAz OCArKwogYXJjaC9hcm02NC9ib2FyZHMvdmlydC9lbnYvaW5pdC9tdGRwYXJ0cy1ub3IgfCAgMTEg KwogYXJjaC9hcm02NC9ib2FyZHMvdmlydC9pbml0LmMgICAgICAgICAgICAgICAgfCAgNTIgKysr CiBhcmNoL2FybTY0L2NvbmZpZ3MvdmlydF9kZWZjb25maWcgICAgICAgICAgICB8ICA1MyArKysK IGFyY2gvYXJtNjQvY3B1L0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgIHwgIDU0ICsrKwog YXJjaC9hcm02NC9jcHUvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgfCAgMjUgKysKIGFy Y2gvYXJtNjQvY3B1L2NhY2hlLWFybXY4LlMgICAgICAgICAgICAgICAgIHwgMTY4ICsrKysrKysr CiBhcmNoL2FybTY0L2NwdS9jYWNoZS5jICAgICAgICAgICAgICAgICAgICAgICB8IDExMCArKysr KysKIGFyY2gvYXJtNjQvY3B1L2NwdS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTA2ICsr KysrCiBhcmNoL2FybTY0L2NwdS9jcHVpbmZvLmMgICAgICAgICAgICAgICAgICAgICB8IDIxMSAr KysrKysrKysrCiBhcmNoL2FybTY0L2NwdS9lbnRyeS5jICAgICAgICAgICAgICAgICAgICAgICB8 ICAzOCArKwogYXJjaC9hcm02NC9jcHUvZW50cnkuaCAgICAgICAgICAgICAgICAgICAgICAgfCAg MTggKwogYXJjaC9hcm02NC9jcHUvZXhjZXB0aW9ucy5TICAgICAgICAgICAgICAgICAgfCAxMjcg KysrKysrCiBhcmNoL2FybTY0L2NwdS9pbnRlcnJ1cHRzLmMgICAgICAgICAgICAgICAgICB8IDE2 MiArKysrKysrKwogYXJjaC9hcm02NC9jcHUvbG93bGV2ZWwuUyAgICAgICAgICAgICAgICAgICAg fCAgNDMgKysKIGFyY2gvYXJtNjQvY3B1L21tdS1lYXJseS5oICAgICAgICAgICAgICAgICAgIHwg ICA2ICsKIGFyY2gvYXJtNjQvY3B1L21tdS5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE0 ICsKIGFyY2gvYXJtNjQvY3B1L21tdWluZm8uYyAgICAgICAgICAgICAgICAgICAgIHwgMTA0ICsr KysrCiBhcmNoL2FybTY0L2NwdS9zdGFydC1wYmwuYyAgICAgICAgICAgICAgICAgICB8IDEwMiAr KysrKwogYXJjaC9hcm02NC9jcHUvc3RhcnQuYyAgICAgICAgICAgICAgICAgICAgICAgfCAyNDcg KysrKysrKysrKysrCiBhcmNoL2FybTY0L2NwdS91bmNvbXByZXNzLmMgICAgICAgICAgICAgICAg ICB8IDExMSArKysrKysKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vYXJtbGludXguaCAgICAgICAg ICAgIHwgIDQzICsrCiBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Fzc2VtYmxlci5oICAgICAgICAg ICB8IDExNiArKysrKysKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vYmFyZWJveC1hcm0taGVhZC5o ICAgIHwgIDY1ICsrKwogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9iYXJlYm94LWFybS5oICAgICAg ICAgfCAxNjUgKysrKysrKysKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vYmFyZWJveC5oICAgICAg ICAgICAgIHwgIDEyICsKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vYml0b3BzLmggICAgICAgICAg ICAgIHwgIDQ4ICsrKwogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9iaXRzcGVybG9uZy5oICAgICAg ICAgfCAgIDEgKwogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCAgICAgICAgICAg fCAgMzIgKysKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vY2FjaGUtbDJ4MC5oICAgICAgICAgIHwg MTAxICsrKysrCiBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2NhY2hlLmggICAgICAgICAgICAgICB8 ICAxNiArCiBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2NvbW1vbi5oICAgICAgICAgICAgICB8ICA0 OCArKysKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vY3B1dHlwZS5oICAgICAgICAgICAgIHwgMTAw ICsrKysrCiBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2RlYnVnX2xsX3BsMDExLmggICAgICB8ICAy NSArKwogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9kbWEuaCAgICAgICAgICAgICAgICAgfCAgNDYg KysrCiBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VsZi5oICAgICAgICAgICAgICAgICB8IDExOSAr KysrKysKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXJyYXRhLmggICAgICAgICAgICAgIHwgIDc5 ICsrKysKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZ2ljLmggICAgICAgICAgICAgICAgIHwgMTI4 ICsrKysrKwogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9oYXJkd2FyZS9hcm1fdGltZXIuaCAgfCAg MzggKysKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vaGFyZHdhcmUvc3A4MTAuaCAgICAgIHwgIDY4 ICsrKysKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vaW8uaCAgICAgICAgICAgICAgICAgIHwgIDg3 ICsrKysKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbGlua2FnZS5oICAgICAgICAgICAgIHwgIDEx ICsKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbWVtb3J5LmggICAgICAgICAgICAgIHwgIDE5ICsK IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW11LmggICAgICAgICAgICAgICAgIHwgIDY1ICsrKwog YXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tb2R1bGUuaCAgICAgICAgICAgICAgfCAgMTMgKwogYXJj aC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmggICAgICAgICAgICAgfCAgOTAgKysrKysKIGFy Y2gvYXJtNjQvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCAgICAgICAgIHwgICAxICsKIGFyY2gv YXJtNjQvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmggICAgICAgICAgIHwgMTMxICsrKysrKwogYXJj aC9hcm02NC9pbmNsdWRlL2FzbS9wdHJhY2UuaCAgICAgICAgICAgICAgfCAgMzQgKysKIGFyY2gv YXJtNjQvaW5jbHVkZS9hc20vc2VjdGlvbnMuaCAgICAgICAgICAgIHwgIDM0ICsrCiBhcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL3NlbWlob3N0aW5nLmggICAgICAgICB8ICAxOSArCiBhcmNoL2FybTY0 L2luY2x1ZGUvYXNtL3NldHVwLmggICAgICAgICAgICAgICB8IDIxNiArKysrKysrKysrCiBhcmNo L2FybTY0L2luY2x1ZGUvYXNtL3N0YWNrdHJhY2UuaCAgICAgICAgICB8ICAxNiArCiBhcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL3N0cmluZy5oICAgICAgICAgICAgICB8ICAxMyArCiBhcmNoL2FybTY0 L2luY2x1ZGUvYXNtL3N3YWIuaCAgICAgICAgICAgICAgICB8ICA2OSArKysrCiBhcmNoL2FybTY0 L2luY2x1ZGUvYXNtL3N5c3RlbS5oICAgICAgICAgICAgICB8IDEyNSArKysrKysKIGFyY2gvYXJt NjQvaW5jbHVkZS9hc20vc3lzdGVtX2luZm8uaCAgICAgICAgIHwgMTk0ICsrKysrKysrKwogYXJj aC9hcm02NC9pbmNsdWRlL2FzbS90eXBlcy5oICAgICAgICAgICAgICAgfCAgNTQgKysrCiBhcmNo L2FybTY0L2luY2x1ZGUvYXNtL3VuYWxpZ25lZC5oICAgICAgICAgICB8ICAxOSArCiBhcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL3VuaWZpZWQuaCAgICAgICAgICAgICB8IDEyNyArKysrKysKIGFyY2gv YXJtNjQvaW5jbHVkZS9hc20vdW53aW5kLmggICAgICAgICAgICAgIHwgIDUxICsrKwogYXJjaC9h cm02NC9saWIvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgfCAgMTYgKwogYXJjaC9hcm02 NC9saWIvYXJtbGludXguYyAgICAgICAgICAgICAgICAgICAgfCAyNzUgKysrKysrKysrKysrKwog YXJjaC9hcm02NC9saWIvYXNtLW9mZnNldHMuYyAgICAgICAgICAgICAgICAgfCAgMTYgKwogYXJj aC9hcm02NC9saWIvYmFyZWJveC5sZHMgICAgICAgICAgICAgICAgICAgfCAxMjUgKysrKysrCiBh cmNoL2FybTY0L2xpYi9iYXJlYm94Lmxkcy5TICAgICAgICAgICAgICAgICB8IDEyNSArKysrKysK IGFyY2gvYXJtNjQvbGliL2Jvb3RtLmMgICAgICAgICAgICAgICAgICAgICAgIHwgNTcyICsrKysr KysrKysrKysrKysrKysrKysrKysrKwogYXJjaC9hcm02NC9saWIvYm9vdHUuYyAgICAgICAgICAg ICAgICAgICAgICAgfCAgNDQgKysrCiBhcmNoL2FybTY0L2xpYi9ib290ei5jICAgICAgICAgICAg ICAgICAgICAgICB8IDEzNiArKysrKysrCiBhcmNoL2FybTY0L2xpYi9jb3B5X3RlbXBsYXRlLlMg ICAgICAgICAgICAgICB8IDE5MiArKysrKysrKysKIGFyY2gvYXJtNjQvbGliL2RpdjAuYyAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDI3ICsrCiBhcmNoL2FybTY0L2xpYi9tZW1jcHkuUyAgICAg ICAgICAgICAgICAgICAgICB8ICA3NCArKysrCiBhcmNoL2FybTY0L2xpYi9tZW1zZXQuUyAgICAg ICAgICAgICAgICAgICAgICB8IDIxNSArKysrKysrKysrCiBhcmNoL2FybTY0L2xpYi9tb2R1bGUu YyAgICAgICAgICAgICAgICAgICAgICB8ICA5OCArKysrKwogYXJjaC9hcm02NC9saWIvcGJsLmxk cy5TICAgICAgICAgICAgICAgICAgICAgfCAgOTYgKysrKysKIGFyY2gvYXJtNjQvbGliL3J1bnRp bWUtb2Zmc2V0LlMgICAgICAgICAgICAgIHwgIDUyICsrKwogYXJjaC9hcm02NC9saWIvdW53aW5k LmMgICAgICAgICAgICAgICAgICAgICAgfCAzNDkgKysrKysrKysrKysrKysrKwogYXJjaC9hcm02 NC9tYWNoLXZpcnQvS2NvbmZpZyAgICAgICAgICAgICAgICAgfCAgMTUgKwogYXJjaC9hcm02NC9t YWNoLXZpcnQvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDMgKwogYXJjaC9hcm02NC9tYWNo LXZpcnQvZGV2aWNlcy5jICAgICAgICAgICAgICAgfCAgMzAgKysKIGFyY2gvYXJtNjQvbWFjaC12 aXJ0L2luY2x1ZGUvbWFjaC9kZWJ1Z19sbC5oIHwgIDI0ICsrCiBhcmNoL2FybTY0L21hY2gtdmly dC9pbmNsdWRlL21hY2gvZGV2aWNlcy5oICB8ICAxMyArCiBhcmNoL2FybTY0L21hY2gtdmlydC9s b3dsZXZlbC5jICAgICAgICAgICAgICB8ICAxOSArCiBhcmNoL2FybTY0L21hY2gtdmlydC9yZXNl dC5jICAgICAgICAgICAgICAgICB8ICAyNCArKwogYXJjaC9hcm02NC9wYmwvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgICAgfCAgNTggKysrCiBhcmNoL2FybTY0L3BibC9waWdneS5nemlwLlMg ICAgICAgICAgICAgICAgICB8ICAgNiArCiBhcmNoL2FybTY0L3BibC9waWdneS5sejQuUyAgICAg ICAgICAgICAgICAgICB8ICAgNiArCiBhcmNoL2FybTY0L3BibC9waWdneS5sem8uUyAgICAgICAg ICAgICAgICAgICB8ICAgNiArCiBhcmNoL2FybTY0L3BibC9waWdneS5zaGlwcGVkLlMgICAgICAg ICAgICAgICB8ICAgNiArCiBhcmNoL2FybTY0L3BibC9waWdneS54emtlcm4uUyAgICAgICAgICAg ICAgICB8ICAgNiArCiAxMDAgZmlsZXMgY2hhbmdlZCwgNzQzNiBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJj aC9hcm02NC9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvYm9hcmRzL01h a2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9ib2FyZHMvdmlydC9LY29uZmln CiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9ib2FyZHMvdmlydC9NYWtlZmlsZQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvYm9hcmRzL3ZpcnQvZW52L2Jpbi9fdXBkYXRlCiBj cmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9ib2FyZHMvdmlydC9lbnYvYmluL2Jvb3QKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2JvYXJkcy92aXJ0L2Vudi9iaW4vaW5pdAogY3Jl YXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvYm9hcmRzL3ZpcnQvZW52L2Jpbi91cGRhdGVfa2Vy bmVsCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9ib2FyZHMvdmlydC9lbnYvYmluL3Vw ZGF0ZV9yb290CiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9ib2FyZHMvdmlydC9lbnYv Y29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9ib2FyZHMvdmlydC9lbnYvaW5p dC9tdGRwYXJ0cy1ub3IKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2JvYXJkcy92aXJ0 L2luaXQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvY29uZmlncy92aXJ0X2RlZmNv bmZpZwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvY3B1L0tjb25maWcKIGNyZWF0ZSBt b2RlIDEwMDY0NCBhcmNoL2FybTY0L2NwdS9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGFy Y2gvYXJtNjQvY3B1L2NhY2hlLWFybXY4LlMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0 L2NwdS9jYWNoZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9jcHUvY3B1LmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2NwdS9jcHVpbmZvLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBhcmNoL2FybTY0L2NwdS9lbnRyeS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02 NC9jcHUvZW50cnkuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvY3B1L2V4Y2VwdGlv bnMuUwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvY3B1L2ludGVycnVwdHMuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvY3B1L2xvd2xldmVsLlMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBhcmNoL2FybTY0L2NwdS9tbXUtZWFybHkuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gv YXJtNjQvY3B1L21tdS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9jcHUvbW11aW5m by5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9jcHUvc3RhcnQtcGJsLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2NwdS9zdGFydC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg YXJjaC9hcm02NC9jcHUvdW5jb21wcmVzcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02 NC9pbmNsdWRlL2FzbS9hcm1saW51eC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9hc3NlbWJsZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5j bHVkZS9hc20vYmFyZWJveC1hcm0taGVhZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02 NC9pbmNsdWRlL2FzbS9iYXJlYm94LWFybS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02 NC9pbmNsdWRlL2FzbS9iYXJlYm94LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL2JpdG9wcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNsdWRl L2FzbS9iaXRzcGVybG9uZy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNsdWRl L2FzbS9ieXRlb3JkZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9h c20vY2FjaGUtbDJ4MC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS9jYWNoZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9jb21t b24uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vY3B1dHlwZS5o CiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9kZWJ1Z19sbF9wbDAx MS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9kbWEuaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmgKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VycmF0YS5oCiBjcmVhdGUgbW9kZSAxMDA2 NDQgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9naWMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gv YXJtNjQvaW5jbHVkZS9hc20vaGFyZHdhcmUvYXJtX3RpbWVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2hhcmR3YXJlL3NwODEwLmgKIGNyZWF0ZSBtb2RlIDEw MDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2lvLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNo L2FybTY0L2luY2x1ZGUvYXNtL2xpbmthZ2UuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJt NjQvaW5jbHVkZS9hc20vbWVtb3J5LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL21tdS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS9tb2R1bGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0 YWJsZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wb3NpeF90 eXBlcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wcm9jZXNz b3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRyYWNlLmgK IGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3NlY3Rpb25zLmgKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3NlbWlob3N0aW5nLmgKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3NldHVwLmgKIGNyZWF0ZSBt b2RlIDEwMDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N0YWNrdHJhY2UuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3RyaW5nLmgKIGNyZWF0ZSBtb2RlIDEw MDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N3YWIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFy Y2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzdGVtLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL3N5c3RlbV9pbmZvLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL3R5cGVzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL3VuYWxpZ25lZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNs dWRlL2FzbS91bmlmaWVkLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2luY2x1ZGUv YXNtL3Vud2luZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9saWIvTWFrZWZpbGUK IGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2xpYi9hcm1saW51eC5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgYXJjaC9hcm02NC9saWIvYXNtLW9mZnNldHMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGFyY2gvYXJtNjQvbGliL2JhcmVib3gubGRzCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02 NC9saWIvYmFyZWJveC5sZHMuUwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvbGliL2Jv b3RtLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2xpYi9ib290dS5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgYXJjaC9hcm02NC9saWIvYm9vdHouYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFy Y2gvYXJtNjQvbGliL2NvcHlfdGVtcGxhdGUuUwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJt NjQvbGliL2RpdjAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvbGliL21lbWNweS5T CiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9saWIvbWVtc2V0LlMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBhcmNoL2FybTY0L2xpYi9tb2R1bGUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gv YXJtNjQvbGliL3BibC5sZHMuUwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvbGliL3J1 bnRpbWUtb2Zmc2V0LlMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2xpYi91bndpbmQu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvbWFjaC12aXJ0L0tjb25maWcKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L21hY2gtdmlydC9NYWtlZmlsZQogY3JlYXRlIG1vZGUg MTAwNjQ0IGFyY2gvYXJtNjQvbWFjaC12aXJ0L2RldmljZXMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGFyY2gvYXJtNjQvbWFjaC12aXJ0L2luY2x1ZGUvbWFjaC9kZWJ1Z19sbC5oCiBjcmVhdGUgbW9k ZSAxMDA2NDQgYXJjaC9hcm02NC9tYWNoLXZpcnQvaW5jbHVkZS9tYWNoL2RldmljZXMuaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvbWFjaC12aXJ0L2xvd2xldmVsLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBhcmNoL2FybTY0L21hY2gtdmlydC9yZXNldC5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgYXJjaC9hcm02NC9wYmwvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0 L3BibC9waWdneS5nemlwLlMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L3BibC9waWdn eS5sejQuUwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvcGJsL3BpZ2d5Lmx6by5TCiBj cmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9wYmwvcGlnZ3kuc2hpcHBlZC5TCiBjcmVhdGUg bW9kZSAxMDA2NDQgYXJjaC9hcm02NC9wYmwvcGlnZ3kueHprZXJuLlMKCmRpZmYgLS1naXQgYS9h cmNoL2FybTY0L0tjb25maWcgYi9hcmNoL2FybTY0L0tjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uN2QxMDQwNAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQv S2NvbmZpZwpAQCAtMCwwICsxLDE0MCBAQAorY29uZmlnIEFSTQorCWJvb2wKKwlzZWxlY3QgSEFT X0tBTExTWU1TCisJc2VsZWN0IEhBU19NT0RVTEVTCisJc2VsZWN0IEhBU19ETUEKKwlzZWxlY3Qg SEFTX0NBQ0hFCisJc2VsZWN0IEhBVkVfQ09ORklHVVJBQkxFX1RFWFRfQkFTRQorCXNlbGVjdCBI QVZFX1BCTF9JTUFHRQorCXNlbGVjdCBIQVZFX0lNQUdFX0NPTVBSRVNTSU9OCisJZGVmYXVsdCB5 CisKK2NvbmZpZyBBUk1fTElOVVgKKwlib29sCisJZGVmYXVsdCB5CisJZGVwZW5kcyBvbiBDTURf Qk9PVFogfHwgQ01EX0JPT1RVIHx8IEJPT1RNCisKK2NvbmZpZyBIQVZFX01BQ0hfQVJNX0hFQUQK Kwlib29sCisKK2NvbmZpZyBBUk1fVVNFX0NPTVBSRVNTRURfRFRCCisJYm9vbAorCXNlbGVjdCBV TkNPTVBSRVNTCisJc2VsZWN0IExaT19ERUNPTVBSRVNTCisKK21lbnUgIlN5c3RlbSBUeXBlIgor Citjb25maWcgQlVJTFRJTl9EVEIKKwlib29sICJsaW5rIGEgRFRCIGludG8gdGhlIGJhcmVib3gg aW1hZ2UiCisJZGVwZW5kcyBvbiBPRlRSRUUKKwlkZXBlbmRzIG9uICFIQVZFX1BCTF9NVUxUSV9J TUFHRVMKKworY29uZmlnIEJVSUxUSU5fRFRCX05BTUUKKwlzdHJpbmcgIkRUQiB0byBidWlsZCBp bnRvIHRoZSBiYXJlYm94IGltYWdlIgorCWRlcGVuZHMgb24gQlVJTFRJTl9EVEIKKwlkZWZhdWx0 ICJjYW5vbi1hMTEwMCIgaWYgTUFDSF9DQU5PTl9BMTEwMAorCWRlZmF1bHQgImlteDUxLWdlbmVz aS1lZmlrYS1zYiIgaWYgTUFDSF9FRklLQV9NWF9TTUFSVEJPT0sKKwlkZWZhdWx0ICJ2ZXJzYXRp bGUtcGIiIGlmIEFSQ0hfVkVSU0FUSUxFX1BCCisJZGVmYXVsdCAidmlydDJyZWFsIiBpZiBNQUNI X1ZJUlQyUkVBTAorCWRlZmF1bHQgIm1vZHVsZS1tYjc3MDciIGlmIE1BQ0hfTUI3NzA3CisKK2No b2ljZQorCXByb21wdCAiQVJNIHN5c3RlbSB0eXBlIgorCitjb25maWcgQVJDSF9WSVJUCisJYm9v bCAiQVJNIFFFTVUgdmlydCBib2FyZHMiCisJc2VsZWN0IEhBU19ERUJVR19MTAorCXNlbGVjdCBD UFVfVjgKKwlzZWxlY3QgU1lTX1NVUFBPUlRTXzY0QklUX0tFUk5FTAorCXNlbGVjdCBBUk1fQU1C QQorCXNlbGVjdCBIQVZFX0NPTkZJR1VSQUJMRV9NRU1PUllfTEFZT1VUCisKK2VuZGNob2ljZQor Citzb3VyY2UgYXJjaC9hcm02NC9jcHUvS2NvbmZpZworc291cmNlIGFyY2gvYXJtNjQvbWFjaC12 aXJ0L0tjb25maWcKKworY29uZmlnIEFSTV9BU01fVU5JRklFRAorCWJvb2wKKworY29uZmlnIEFF QUJJCisJYm9vbCAiVXNlIHRoZSBBUk0gRUFCSSB0byBjb21waWxlIGJhcmVib3giCisJaGVscAor CSAgVGhpcyBvcHRpb24gYWxsb3dzIGZvciBiYXJlYm94IHRvIGJlIGNvbXBpbGVkIHVzaW5nIHRo ZSBsYXRlc3QKKwkgIEFSTSBBQkkgKGFrYSBFQUJJKS4KKworCSAgVG8gdXNlIHRoaXMgeW91IG5l ZWQgR0NDIHZlcnNpb24gNC4wLjAgb3IgbGF0ZXIuCisKK2NvbmZpZyBBUk1fQk9BUkRfQVBQRU5E X0FUQUcKKwlib29sICJMZXQgYm9hcmQgc3BlY2lmaWMgY29kZSB0byBhZGQgQVRBR3MgdG8gYmUg cGFzc2VkIHRvIHRoZSBrZXJuZWwiCisJZGVwZW5kcyBvbiBBUk1fTElOVVgKKwloZWxwCisJICBU aGlzIG9wdGlvbiBpcyBwdXJlbHkgdG8gc3RhcnQgc29tZSB2ZW5kb3IgcHJvdmlkZWQga2VybmVs cy4KKwkgICoqIERPIE5PVCBVU0UgRk9SIFlPVVIgT1dOIERFU0lHTlMhICoqCisKK2VuZG1lbnUK KworY2hvaWNlCisJcHJvbXB0ICJCYXJlYm94IGNvZGUgbW9kZWwiCisJaGVscAorCSAgWW91IHNo b3VsZCBvbmx5IHNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3UgaGF2ZSBhIHdvcmtsb2FkIHRoYXQK KwkgIGFjdHVhbGx5IGJlbmVmaXRzIGZyb20gNjQtYml0IHByb2Nlc3Npbmcgb3IgaWYgeW91ciBt YWNoaW5lIGhhcworCSAgbGFyZ2UgbWVtb3J5LiBZb3Ugd2lsbCBvbmx5IGJlIHByZXNlbnRlZCBh IHNpbmdsZSBvcHRpb24gaW4gdGhpcworCSAgbWVudSBpZiB5b3VyIHN5c3RlbSBkb2VzIG5vdCBz dXBwb3J0IGJvdGggMzItYml0IGFuZCA2NC1iaXQgbW9kZXMuCisKK2NvbmZpZyAzMkJJVAorCWJv b2wgIjMyLWJpdCBiYXJlYm94IgorCWRlcGVuZHMgb24gQ1BVX1NVUFBPUlRTXzMyQklUX0tFUk5F TCAmJiBTWVNfU1VQUE9SVFNfMzJCSVRfS0VSTkVMCisJaGVscAorCSAgU2VsZWN0IHRoaXMgb3B0 aW9uIGlmIHlvdSB3YW50IHRvIGJ1aWxkIGEgMzItYml0IGJhcmVib3guCisKK2NvbmZpZyA2NEJJ VAorCWJvb2wgIjY0LWJpdCBiYXJlYm94IgorCWRlcGVuZHMgb24gQ1BVX1NVUFBPUlRTXzY0QklU X0tFUk5FTCAmJiBTWVNfU1VQUE9SVFNfNjRCSVRfS0VSTkVMCisJc2VsZWN0IEFSQ0hfRE1BX0FE RFJfVF82NEJJVAorCWhlbHAKKwkgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBi dWlsZCBhIDY0LWJpdCBiYXJlYm94LgorCitlbmRjaG9pY2UKKworbWVudSAiQVJNIHNwZWNpZmlj IHNldHRpbmdzIgorCitjb25maWcgQVJNX09QVElNWkVEX1NUUklOR19GVU5DVElPTlMKKwlib29s ICJ1c2UgYXNzZW1ibGVyIG9wdGltaXplZCBzdHJpbmcgZnVuY3Rpb25zIgorCWhlbHAKKwkgIFNh eSB5ZXMgaGVyZSB0byB1c2UgYXNzZW1ibGVyIG9wdGltaXplZCBtZW1jcHkgLyBtZW1zZXQgZnVu Y3Rpb25zLgorCSAgVGhlc2UgZnVuY3Rpb25zIHdvcmsgbXVjaCBmYXN0ZXIgdGhhbiB0aGUgbm9y bWFsIHZlcnNpb25zIGJ1dAorCSAgaW5jcmVhc2UgeW91ciBiaW5hcnkgc2l6ZS4KKworY29uZmln IEFSTV9FWENFUFRJT05TCisJYm9vbCAiZW5hYmxlIGFybSBleGNlcHRpb24gaGFuZGxpbmcgc3Vw cG9ydCIKKwlkZWZhdWx0IHkKKworY29uZmlnIEFSTV9VTldJTkQKKwlib29sICJlbmFibGUgc3Rh Y2sgdW53aW5kaW5nIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBBRUFCSQorCWhlbHAKKwkgIFRoaXMg b3B0aW9uIGVuYWJsZXMgc3RhY2sgdW53aW5kaW5nIHN1cHBvcnQgaW4gYmFyZWJveAorCSAgdXNp bmcgdGhlIGluZm9ybWF0aW9uIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZQorCSAgY29t cGlsZXIuIFRoZSByZXN1bHRpbmcga2VybmVsIGltYWdlIGlzIHNsaWdodGx5IGJpZ2dlciBidXQK KwkgIHRoZSBwZXJmb3JtYW5jZSBpcyBub3QgYWZmZWN0ZWQuIEN1cnJlbnRseSwgdGhpcyBmZWF0 dXJlCisJICBvbmx5IHdvcmtzIHdpdGggRUFCSSBjb21waWxlcnMuIElmIHVuc3VyZSBzYXkgWS4K KworY29uZmlnIEFSTV9TRU1JSE9TVElORworCWJvb2wgImVuYWJsZSBBUk0gc2VtaWhvc3Rpbmcg c3VwcG9ydCIKKwloZWxwCisJICBUaGlzIG9wdGlvbiBlbmFibGVzIEFSTSBzZW1paG9zdGluZyBz dXBwb3J0IGluIGJhcmVib3guIEFSTQorCSAgc2VtaWhvc3RpbmcgaXMgYSBjb21tdW5pY2F0aW9u IGRpc2NpcGxpbmUgdGhhdCBhbGxvd3MgY29kZQorCSAgcnVubmluZyBvbiB0YXJnZXQgQVJNIGNw dSBwZXJmb3JtIHN5c3RlbSBjYWxscyBhbmQgYWNjZXNzCisJICB0aGUgZGF0YSBvbiB0aGUgaG9z dCBjb21wdXRlciBjb25uZWN0ZWQgdG8gdGhlIHRhcmdldCB2aWEKKwkgIGRlYnVnZ2luZyBjaGFu bmVsIChKVEFHLCBTV0QpLiBJZiB1bnN1cmUgc2F5IE4KKworZW5kbWVudQorCitzb3VyY2UgY29t bW9uL0tjb25maWcKK3NvdXJjZSBjb21tYW5kcy9LY29uZmlnCitzb3VyY2UgbmV0L0tjb25maWcK K3NvdXJjZSBkcml2ZXJzL0tjb25maWcKK3NvdXJjZSBmcy9LY29uZmlnCitzb3VyY2UgbGliL0tj b25maWcKK3NvdXJjZSBjcnlwdG8vS2NvbmZpZwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9NYWtl ZmlsZSBiL2FyY2gvYXJtNjQvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYjVhOTBjNAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvTWFrZWZpbGUKQEAg LTAsMCArMSwxMDkgQEAKKworQ1BQRkxBR1MJKz0gLURfX0FSTV9fIC1mbm8tc3RyaWN0LWFsaWFz aW5nCitDUFBGTEFHUwkrPSQoY2FsbCBjYy1vcHRpb24sLW1hYXJjaDY0LCkKKworaWZlcSAoJChD T05GSUdfQ1BVX0JJR19FTkRJQU4pLHkpCitDUFBGTEFHUwkrPSAtbWJpZy1lbmRpYW4KK0FTCQkr PSAtRUIKK0xECQkrPSAtRUIKK2Vsc2UKK0NQUEZMQUdTCSs9IC1tbGl0dGxlLWVuZGlhbgorQVMJ CSs9IC1FTAorTEQJCSs9IC1FTAorZW5kaWYKKworIyBUaGlzIHNlbGVjdHMgd2hpY2ggaW5zdHJ1 Y3Rpb24gc2V0IGlzIHVzZWQuCisjIE5vdGUgdGhhdCBHQ0MgZG9lcyBub3QgbnVtZXJpY2FsbHkg ZGVmaW5lIGFuIGFyY2hpdGVjdHVyZSB2ZXJzaW9uCisjIG1hY3JvLCBidXQgaW5zdGVhZCBkZWZp bmVzIGEgd2hvbGUgc2VyaWVzIG9mIG1hY3JvcyB3aGljaCBtYWtlcworIyB0ZXN0aW5nIGZvciBh IHNwZWNpZmljIGFyY2hpdGVjdHVyZSBvciBsYXRlciByYXRoZXIgaW1wb3NzaWJsZS4KK2FyY2gt JChDT05GSUdfQ1BVXzY0djgpCQk6PSAtRF9fTElOVVhfQVJNX0FSQ0hfXz04ICQoY2FsbCBjYy1v cHRpb24sLW1hcmNoPWFybXY4LWEpCisKK0NGTEFHU19BQkkJOj0tbWFiaT1scDY0CisKK2lmZXEg KCQoQ09ORklHX0FSTV9VTldJTkQpLHkpCitDRkxBR1NfQUJJCSs9LWZ1bndpbmQtdGFibGVzCitl bmRpZgorCitDUFBGTEFHUyArPSAkKENGTEFHU19BQkkpICQoYXJjaC15KSAkKHR1bmUteSkgCisK K0FGTEFHUyAgICs9IC1pbmNsdWRlIGFzbS91bmlmaWVkLmgKKworIyBNYWNoaW5lIGRpcmVjdG9y eSBuYW1lLiAgVGhpcyBsaXN0IGlzIHNvcnRlZCBhbHBoYW51bWVyaWNhbGx5CisjIGJ5IENPTkZJ R18qIG1hY3JvIG5hbWUuCittYWNoaW5lLSQoQ09ORklHX0FSQ0hfVklSVCkJCTo9IHZpcnQKKwor CittYWNoZGlycyA6PSAkKHBhdHN1YnN0ICUsYXJjaC9hcm02NC9tYWNoLSUvLCQobWFjaGluZS15 KSkKKworaWZlcSAoJChLQlVJTERfU1JDKSwpCitDUFBGTEFHUyArPSAkKHBhdHN1YnN0ICUsLUkl aW5jbHVkZSwkKG1hY2hkaXJzKSkKK2Vsc2UKK0NQUEZMQUdTICs9ICQocGF0c3Vic3QgJSwtSSQo c3JjdHJlZSkvJWluY2x1ZGUsJChtYWNoZGlycykpCitlbmRpZgorCitURVhUX0JBU0UgPSAkKENP TkZJR19URVhUX0JBU0UpCisKK0NQUEZMQUdTICs9IC1EVEVYVF9CQVNFPSQoVEVYVF9CQVNFKQor CisjIEFkZCBjbGVhbnVwIGZsYWdzCitDUFBGTEFHUyArPSAtZmRhdGEtc2VjdGlvbnMgLWZmdW5j dGlvbi1zZWN0aW9ucworTERGTEFHU19iYXJlYm94ICs9IC0tZ2Mtc2VjdGlvbnMKKworaWZkZWYg Q09ORklHX1JFTE9DQVRBQkxFCitMREZMQUdTX2JhcmVib3ggKz0gLXBpZQorZWxzZQorTERGTEFH U19iYXJlYm94ICs9IC1zdGF0aWMKK2VuZGlmCisKK2lmZGVmIENPTkZJR19JTUFHRV9DT01QUkVT U0lPTgorS0JVSUxEX0JJTkFSWSA6PSBhcmNoL2FybTY0L3BibC96YmFyZWJveC5iaW4KK2Vsc2UK K0tCVUlMRF9CSU5BUlkgOj0gYmFyZWJveC5iaW4KK2VuZGlmCisKK2JhcmVib3gubmV0eDogJChL QlVJTERfQklOQVJZKQorCSQoUSlzY3JpcHRzL2dlbl9uZXR4X2ltYWdlIC1pICQ8IC1vIGJhcmVi b3gubmV0eAkJXAorCQktLXNkcmFtY3RybD0kKENPTkZJR19ORVRYX1NEUkFNX0NUUkwpCQkJXAor CQktLXNkcmFtdGltY3RybD0kKENPTkZJR19ORVRYX1NEUkFNX1RJTUlOR19DVFJMKQkJXAorCQkt LW1lbWN0cmw9JChDT05GSUdfTkVUWF9NRU1fQ1RSTCkJCQlcCisJCS0tZW50cnlwb2ludD0kKENP TkZJR19URVhUX0JBU0UpCQkJXAorCQktLWNvb2tpZT0kKENPTkZJR19ORVRYX0NPT0tJRSk7CisK K2lmZXEgKCQobWFjaGluZS15KSxuZXR4KQorS0JVSUxEX0lNQUdFIDo9IGJhcmVib3gubmV0eAor ZW5kaWYKKworYmFyZWJveC5zNXA6ICQoS0JVSUxEX0JJTkFSWSkKKwkkKFEpc2NyaXB0cy9zNXBf Y2tzdW0gJDwgYmFyZWJveC5zNXAKKworYm9hcmRkaXIgPSAkKHNyY3RyZWUpL2FyY2gvYXJtNjQv Ym9hcmRzCisKK3BibCA6PSBhcmNoL2FybTY0L3BibAorJChwYmwpL3piYXJlYm94LlMgJChwYmwp L3piYXJlYm94LmJpbiAkKHBibCkvemJhcmVib3g6IGJhcmVib3guYmluIEZPUkNFCisJJChRKSQo TUFLRSkgJChidWlsZCk9JChwYmwpICRACisKK2FyY2hjbGVhbjoKKwkkKE1BS0UpICQoY2xlYW4p PSQocGJsKQorCitLQlVJTERfSU1BR0UgPz0gJChLQlVJTERfQklOQVJZKQorCitpZm5lcSAoJChi b2FyZC15KSwpCitCT0FSRCA6PSBhcmNoL2FybTY0L2JvYXJkcy8kKGJvYXJkLXkpLworZWxzZQor Qk9BUkQgOj0KK2VuZGlmCisKK2lmbmVxICgkKG1hY2hpbmUteSksKQorTUFDSCA6PSBhcmNoL2Fy bTY0L21hY2gtJChtYWNoaW5lLXkpLworZWxzZQorTUFDSCA6PQorZW5kaWYKKworY29tbW9uLXkg Kz0gJChCT0FSRCkgYXJjaC9hcm02NC9ib2FyZHMvICQoTUFDSCkKK2NvbW1vbi15ICs9IGFyY2gv YXJtNjQvbGliLyBhcmNoL2FybTY0L2NwdS8KKworbGRzLXkJOj0gYXJjaC9hcm02NC9saWIvYmFy ZWJveC5sZHMKKworY29tbW9uLSArPSAkKHBhdHN1YnN0ICUsYXJjaC9hcm02NC9ib2FyZHMvJS8s JChib2FyZC0pKQorCitDTEVBTl9GSUxFUyArPSBpbmNsdWRlL2dlbmVyYXRlZC9tYWNoLXR5cGVz LmggYXJjaC9hcm02NC9saWIvYmFyZWJveC5sZHMgYmFyZWJveC1mbGFzaC1pbWFnZQpkaWZmIC0t Z2l0IGEvYXJjaC9hcm02NC9ib2FyZHMvTWFrZWZpbGUgYi9hcmNoL2FybTY0L2JvYXJkcy9NYWtl ZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjA3YzA1Ci0tLSAvZGV2 L251bGwKKysrIGIvYXJjaC9hcm02NC9ib2FyZHMvTWFrZWZpbGUKQEAgLTAsMCArMSwyIEBACisj IGtlZXAgc29ydGVkIGJ5IENPTkZJR18qIG1hY3JvIG5hbWUuCitvYmotJChDT05GSUdfTUFDSF9W SVJUKQkJCSs9IHZpcnQvCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2JvYXJkcy92aXJ0L0tjb25m aWcgYi9hcmNoL2FybTY0L2JvYXJkcy92aXJ0L0tjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uYjIzOTEyNwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvYm9h cmRzL3ZpcnQvS2NvbmZpZwpAQCAtMCwwICsxLDggQEAKKworaWYgTUFDSF9WSVJUCisKK2NvbmZp ZyBBUkNIX1RFWFRfQkFTRQorCWhleAorCWRlZmF1bHQgMHg0MDAwMDAwMAorCitlbmRpZgpkaWZm IC0tZ2l0IGEvYXJjaC9hcm02NC9ib2FyZHMvdmlydC9NYWtlZmlsZSBiL2FyY2gvYXJtNjQvYm9h cmRzL3ZpcnQvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIw NzJjMAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvYm9hcmRzL3ZpcnQvTWFrZWZpbGUK QEAgLTAsMCArMSBAQAorb2JqLXkgKz0gaW5pdC5vCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jv YXJkcy92aXJ0L2Vudi9iaW4vX3VwZGF0ZSBiL2FyY2gvYXJtNjQvYm9hcmRzL3ZpcnQvZW52L2Jp bi9fdXBkYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNGJjZTMKLS0t IC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2JvYXJkcy92aXJ0L2Vudi9iaW4vX3VwZGF0ZQpA QCAtMCwwICsxLDM2IEBACisjIS9iaW4vc2gKKworaWYgWyAteiAiJHBhcnQiIC1vIC16ICIkaW1h Z2UiIF07IHRoZW4KKwllY2hvICJkZWZpbmUgXCRwYXJ0IGFuZCBcJGltYWdlIgorCWV4aXQgMQor ZmkKKworaWYgWyAhIC1lICIkcGFydCIgXTsgdGhlbgorCWVjaG8gIlBhcnRpdGlvbiAkcGFydCBk b2VzIG5vdCBleGlzdCIKKwlleGl0IDEKK2ZpCisKK2lmIFsgJCMgPSAxIF07IHRoZW4KKwlpbWFn ZT0kMQorZmkKKworaWYgWyB4JGlwID0geGRoY3AgXTsgdGhlbgorCWRoY3AKK2ZpCisKK3Bpbmcg JGV0aDAuc2VydmVyaXAKK2lmIFsgJD8gLW5lIDAgXSA7IHRoZW4KKwllY2hvICJ1cGRhdGUgYWJv cnRlZCIKKwlleGl0IDEKK2ZpCisKK3VucHJvdGVjdCAkcGFydAorCitlY2hvCitlY2hvICJlcmFz aW5nIHBhcnRpdGlvbiAkcGFydCIKK2VyYXNlICRwYXJ0CisKK2VjaG8KK2VjaG8gImZsYXNoaW5n ICRpbWFnZSB0byAkcGFydCIKK2VjaG8KK3RmdHAgJGltYWdlICRwYXJ0CmRpZmYgLS1naXQgYS9h cmNoL2FybTY0L2JvYXJkcy92aXJ0L2Vudi9iaW4vYm9vdCBiL2FyY2gvYXJtNjQvYm9hcmRzL3Zp cnQvZW52L2Jpbi9ib290Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4NTlk YzEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2JvYXJkcy92aXJ0L2Vudi9iaW4vYm9v dApAQCAtMCwwICsxLDM4IEBACisjIS9iaW4vc2gKKworLiAvZW52L2NvbmZpZworCitpZiBbIHgk MSA9IHhmbGFzaCBdOyB0aGVuCisJcm9vdD1mbGFzaAorCWtlcm5lbD1mbGFzaAorZmkKKworaWYg WyB4JDEgPSB4bmV0IF07IHRoZW4KKwlyb290PW5ldAorCWtlcm5lbD1uZXQKK2ZpCisKK2lmIFsg eCRpcCA9IHhkaGNwIF07IHRoZW4KKwlib290YXJncz0iJGJvb3RhcmdzIGlwPWRoY3AiCitlbHNl CisJYm9vdGFyZ3M9IiRib290YXJncyBpcD0kZXRoMC5pcGFkZHI6JGV0aDAuc2VydmVyaXA6JGV0 aDAuZ2F0ZXdheTokZXRoMC5uZXRtYXNrOjo6IgorZmkKKworaWYgWyB4JHJvb3QgPSB4Zmxhc2gg XTsgdGhlbgorCWJvb3RhcmdzPSIkYm9vdGFyZ3Mgcm9vdD0kcm9vdHBhcnQgcm9vdGZzdHlwZT1q ZmZzMiIKK2Vsc2UKKwlib290YXJncz0iJGJvb3RhcmdzIHJvb3Q9L2Rldi9uZnMgbmZzcm9vdD0k ZXRoMC5zZXJ2ZXJpcDokbmZzcm9vdCx2Myx0Y3AiCitmaQorCitib290YXJncz0iJGJvb3Rhcmdz IG10ZHBhcnRzPXBoeXNtYXAtZmxhc2guMDokbXRkcGFydHMiCisKK2lmIFsgJGtlcm5lbCA9IG5l dCBdOyB0aGVuCisJaWYgWyB4JGlwID0geGRoY3AgXTsgdGhlbgorCQlkaGNwCisJZmkKKwl0ZnRw ICR1aW1hZ2UgdUltYWdlIHx8IGV4aXQgMQorCWJvb3RtIHVJbWFnZQorZWxzZQorCWJvb3RtIC9k ZXYvbm9yMC5rZXJuZWwKK2ZpCisKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9hcmRzL3ZpcnQv ZW52L2Jpbi9pbml0IGIvYXJjaC9hcm02NC9ib2FyZHMvdmlydC9lbnYvYmluL2luaXQKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhlMjEzOQotLS0gL2Rldi9udWxsCisrKyBi L2FyY2gvYXJtNjQvYm9hcmRzL3ZpcnQvZW52L2Jpbi9pbml0CkBAIC0wLDAgKzEsMjAgQEAKKyMh L2Jpbi9zaAorCitQQVRIPS9lbnYvYmluCitleHBvcnQgUEFUSAorCisuIC9lbnYvY29uZmlnCith ZGRwYXJ0IC9kZXYvbm9yMCAkbXRkcGFydHMKKworZWNobworZWNobyAtbiAiSGl0IGFueSBrZXkg dG8gc3RvcCBhdXRvYm9vdDogIgordGltZW91dCAtYSAkYXV0b2Jvb3RfdGltZW91dAoraWYgWyAk PyAhPSAwIF07IHRoZW4KKwllY2hvCisJZWNobyAidHlwZSB1cGRhdGVfa2VybmVsIFs8aW1hZ2Vu YW1lPl0gdG8gdXBkYXRlIGtlcm5lbCBpbnRvIGZsYXNoIgorCWVjaG8gInR5cGUgdWRhdGVfcm9v dCBbPGltYWdlbmFtZT5dIHRvIHVwZGF0ZSByb290ZnMgaW50byBmbGFzaCIKKwllY2hvCisJZXhp dAorZmkKKworYm9vdApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2Fy Y2gvYXJtNjQvYm9hcmRzL3ZpcnQvZW52L2Jpbi91cGRhdGVfa2VybmVsIGIvYXJjaC9hcm02NC9i b2FyZHMvdmlydC9lbnYvYmluL3VwZGF0ZV9rZXJuZWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMWFkOTVmYwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvYm9hcmRz L3ZpcnQvZW52L2Jpbi91cGRhdGVfa2VybmVsCkBAIC0wLDAgKzEsOCBAQAorIyEvYmluL3NoCisK Ky4gL2Vudi9jb25maWcKKworaW1hZ2U9JHVpbWFnZQorcGFydD0vZGV2L25vcjAua2VybmVsCisK Ky4gL2Vudi9iaW4vX3VwZGF0ZSAkMQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib2FyZHMvdmly dC9lbnYvYmluL3VwZGF0ZV9yb290IGIvYXJjaC9hcm02NC9ib2FyZHMvdmlydC9lbnYvYmluL3Vw ZGF0ZV9yb290Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NTdhNWIKLS0t IC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2JvYXJkcy92aXJ0L2Vudi9iaW4vdXBkYXRlX3Jv b3QKQEAgLTAsMCArMSw4IEBACisjIS9iaW4vc2gKKworLiAvZW52L2NvbmZpZworCitpbWFnZT0k amZmczIKK3BhcnQ9L2Rldi9ub3IwLnJvb3QKKworLiAvZW52L2Jpbi9fdXBkYXRlICQxCmRpZmYg LS1naXQgYS9hcmNoL2FybTY0L2JvYXJkcy92aXJ0L2Vudi9jb25maWcgYi9hcmNoL2FybTY0L2Jv YXJkcy92aXJ0L2Vudi9jb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NmMwYWJkYQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvYm9hcmRzL3ZpcnQvZW52L2Nv bmZpZwpAQCAtMCwwICsxLDM4IEBACisjIS9iaW4vc2gKKworIyB1c2UgJ2RoY3AnIHRvIGRvIGRo Y3AgaW4gYmFyZWJveCBhbmQgaW4ga2VybmVsCisjIHVzZSAnbm9uZScgaWYgeW91IHdhbnQgdG8g c2tpcCBrZXJuZWwgaXAgYXV0b2NvbmZpZ3VyYXRpb24KK2lwPWRoY3AKK2dsb2JhbC5kaGNwLnZl bmRvcl9pZD1iYXJlYm94LSR7Z2xvYmFsLmhvc3RuYW1lfQorCisjIG9yIHNldCB5b3VyIG5ldHdv cmtpbmcgcGFyYW1ldGVycyBoZXJlCisjZXRoMC5pcGFkZHI9YS5iLmMuZAorI2V0aDAubmV0bWFz az1hLmIuYy5kCisjZXRoMC5nYXRld2F5PWEuYi5jLmQKKyNldGgwLnNlcnZlcmlwPWEuYi5jLmQK KworIyBjYW4gYmUgZWl0aGVyICduZnMnLCAndGZ0cCcgb3IgJ25vcicKK2tlcm5lbF9sb2M9dGZ0 cAorIyBjYW4gYmUgZWl0aGVyICduZXQnLCAnbm9yJyBvciAnaW5pdHJkJworcm9vdGZzX2xvYz1p bml0cmQKKworIyBjYW4gYmUgZWl0aGVyICdqZmZzMicgb3IgJ3ViaWZzJworcm9vdGZzX3R5cGU9 dWJpZnMKK3Jvb3Rmc2ltYWdlPXJvb3QuJHJvb3Rmc190eXBlCisKK2tlcm5lbGltYWdlPXpJbWFn ZQorI2tlcm5lbGltYWdlPXVJbWFnZQorI2tlcm5lbGltYWdlPUltYWdlCisja2VybmVsaW1hZ2U9 SW1hZ2UubHpvCisKK25mc3Jvb3Q9IiRldGgwLnNlcnZlcmlwOi9vcHQvd29yay9idXN5Ym94L2Fy bTkvcm9vdGZzX2FybSIKKworbm9yX3BhcnRzPSIyNTZrKGJhcmVib3gpcm8sNjRrKGJhcmVib3hl bnYpLDE1MzZrKGtlcm5lbCksLShyb290KSIKK3Jvb3Rmc19tdGRibG9ja19ub3I9MworCithdXRv Ym9vdF90aW1lb3V0PTMKKworYm9vdGFyZ3M9ImNvbnNvbGU9dHR5QU1BMCwxMTUyMDBuOCBDT05T T0xFPS9kZXYvdHR5QU1BMCIKKworIyBzZXQgYSBmYW5jeSBwcm9tcHQgKGlmIHN1cHBvcnQgaXMg Y29tcGlsZWQgaW4pCitQUzE9IlxlWzE7MzFtW2JhcmVib3hAXGhdOlx3XGVbMG1cbiMgIgpkaWZm IC0tZ2l0IGEvYXJjaC9hcm02NC9ib2FyZHMvdmlydC9lbnYvaW5pdC9tdGRwYXJ0cy1ub3IgYi9h cmNoL2FybTY0L2JvYXJkcy92aXJ0L2Vudi9pbml0L210ZHBhcnRzLW5vcgpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzA3NTk2Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9h cm02NC9ib2FyZHMvdmlydC9lbnYvaW5pdC9tdGRwYXJ0cy1ub3IKQEAgLTAsMCArMSwxMSBAQAor IyEvYmluL3NoCisKK2lmIFsgIiQxIiA9IG1lbnUgXTsgdGhlbgorICAgICAgICBpbml0LW1lbnUt YWRkLWVudHJ5ICIkMCIgIk5PUiBwYXJ0aXRpb25zIgorICAgICAgICBleGl0CitmaQorCittdGRw YXJ0cz0iMjA0OGtAMChub3IwLmJhcmVib3gpcm8sMjU2ayhub3IwLmJhcmVib3gtZW52KSwyNTZr KG5vcjAuYmFyZWJveC1sb2dvKSwyNTZrKG5vcjAuYmFyZWJveC1sb2dvMiksNTEyMGsobm9yMC5r ZXJuZWwpLC0obm9yMC5yb290KSIKK2tlcm5lbG5hbWU9ImFwcGxpY2F0aW9uLWZsYXNoIgorCitt dGRwYXJ0cy1hZGQgLWQgbm9yMCAtayAke2tlcm5lbG5hbWV9IC1wICR7bXRkcGFydHN9CmRpZmYg LS1naXQgYS9hcmNoL2FybTY0L2JvYXJkcy92aXJ0L2luaXQuYyBiL2FyY2gvYXJtNjQvYm9hcmRz L3ZpcnQvaW5pdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZTc0MmQK LS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2JvYXJkcy92aXJ0L2luaXQuYwpAQCAtMCww ICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFJhcGhhw6tsIFBvZ2dpIDxwb2dn aS5yYXBoQGdtYWlsLmNvbT4KKyAqCisgKiBHUEx2MiBvbmx5CisgKi8KKworI2luY2x1ZGUgPGNv bW1vbi5oPgorI2luY2x1ZGUgPGluaXQuaD4KKyNpbmNsdWRlIDxhc20vYXJtbGludXguaD4KKyNp bmNsdWRlIDxhc20vc3lzdGVtX2luZm8uaD4KKyNpbmNsdWRlIDxtYWNoL2RldmljZXMuaD4KKyNp bmNsdWRlIDxlbnZpcm9ubWVudC5oPgorI2luY2x1ZGUgPGxpbnV4L3NpemVzLmg+CisjaW5jbHVk ZSA8aW8uaD4KKyNpbmNsdWRlIDxnbG9iYWx2YXIuaD4KKworc3RhdGljIGludCB2aXJ0X21lbV9p bml0KHZvaWQpCit7CisJdmlydF9hZGRfZGRyYW0oU1pfNTEyTSk7CisKKwlhZGRfY2ZpX2ZsYXNo X2RldmljZSgwLCAweDAwMDAwMDAwLCBTWl80TSwgMCk7CisKKwlkZXZmc19hZGRfcGFydGl0aW9u KCJub3IwIiwgMHgwMDAwMCwgMHg0MDAwMCwgREVWRlNfUEFSVElUSU9OX0ZJWEVELCAic2VsZjAi KTsKKwlkZXZmc19hZGRfcGFydGl0aW9uKCJub3IwIiwgMHg0MDAwMCwgMHgyMDAwMCwgREVWRlNf UEFSVElUSU9OX0ZJWEVELCAiZW52MCIpOworCisJcmV0dXJuIDA7Cit9CittZW1faW5pdGNhbGwo dmlydF9tZW1faW5pdCk7CisKK3N0YXRpYyBpbnQgdmlydF9jb25zb2xlX2luaXQodm9pZCkKK3sK Kwl2aXJ0X3JlZ2lzdGVyX3VhcnQoMCk7CisKKwlyZXR1cm4gMDsKK30KK2NvbnNvbGVfaW5pdGNh bGwodmlydF9jb25zb2xlX2luaXQpOworCitzdGF0aWMgaW50IHZpcnRfY29yZV9pbml0KHZvaWQp Cit7CisJY2hhciAqaG9zdG5hbWUgPSAidmlydCI7CisKKwlpZiAoY3B1X2lzX2NvcnRleF9hNTMo KSkKKwkJaG9zdG5hbWUgPSAidmlydC1hNTMiOworCWVsc2UgaWYgKGNwdV9pc19jb3J0ZXhfYTU3 KCkpCisJCWhvc3RuYW1lID0gInZpcnQtYTU3IjsKKworCWJhcmVib3hfc2V0X21vZGVsKCJBUk0g UUVNVSB2aXJ0Iik7CisJYmFyZWJveF9zZXRfaG9zdG5hbWUoaG9zdG5hbWUpOworCisJcmV0dXJu IDA7Cit9Citwb3N0Y29yZV9pbml0Y2FsbCh2aXJ0X2NvcmVfaW5pdCk7CmRpZmYgLS1naXQgYS9h cmNoL2FybTY0L2NvbmZpZ3MvdmlydF9kZWZjb25maWcgYi9hcmNoL2FybTY0L2NvbmZpZ3Mvdmly dF9kZWZjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBkNzhiZgot LS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvY29uZmlncy92aXJ0X2RlZmNvbmZpZwpAQCAt MCwwICsxLDUzIEBACitDT05GSUdfQUVBQkk9eQorQ09ORklHX0FSTV9PUFRJTVpFRF9TVFJJTkdf RlVOQ1RJT05TPXkKK0NPTkZJR19CQVJFQk9YX01BWF9JTUFHRV9TSVpFPTB4MDUwMDAwMDAKK0NP TkZJR19CQVJFQk9YX01BWF9CQVJFX0lOSVRfU0laRT0weDAxMDAwMDAwCitDT05GSUdfTUVNT1JZ X0xBWU9VVF9GSVhFRD15CitDT05GSUdfU1RBQ0tfQkFTRT0weDYwMDAwMDAwCitDT05GSUdfTUFM TE9DX0JBU0U9MHg1MDAwMDAwMAorQ09ORklHX1BST01QVD0idmlydDogIgorQ09ORklHX0hVU0hf RkFOQ1lfUFJPTVBUPXkKK0NPTkZJR19DTURMSU5FX0VESVRJTkc9eQorQ09ORklHX0FVVE9fQ09N UExFVEU9eQorQ09ORklHX01FTlU9eQorQ09ORklHX1BBU1NXT1JEPXkKK0NPTkZJR19QQVJUSVRJ T049eQorQ09ORklHX0RFRkFVTFRfRU5WSVJPTk1FTlRfR0VORVJJQ19ORVc9eQorQ09ORklHX0RF RkFVTFRfRU5WSVJPTk1FTlRfUEFUSD0iYXJjaC9hcm02NC9ib2FyZHMvdmlydC9lbnYiCitDT05G SUdfREVCVUdfSU5GTz15CisjIENPTkZJR19DTURfQVJNX0NQVUlORk8gaXMgbm90IHNldAorQ09O RklHX0xPTkdIRUxQPXkKKyMgQ09ORklHX0NNRF9CT09UTSBpcyBub3Qgc2V0CisjIENPTkZJR19D TURfQk9PVFUgaXMgbm90IHNldAorIyBDT05GSUdfQ01EX01PVU5UIGlzIG5vdCBzZXQKKyMgQ09O RklHX0NNRF9VTU9VTlQgaXMgbm90IHNldAorIyBDT05GSUdfQ01EX0NBVCBpcyBub3Qgc2V0Cisj IENPTkZJR19DTURfQ0QgaXMgbm90IHNldAorIyBDT05GSUdfQ01EX0NQIGlzIG5vdCBzZXQKKyMg Q09ORklHX0NNRF9MUyBpcyBub3Qgc2V0CisjIENPTkZJR19DTURfTUtESVIgaXMgbm90IHNldAor IyBDT05GSUdfQ01EX1BXRCBpcyBub3Qgc2V0CisjIENPTkZJR19DTURfUk0gaXMgbm90IHNldAor IyBDT05GSUdfQ01EX1JNRElSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NNRF9GQUxTRSBpcyBub3Qg c2V0CisjIENPTkZJR19DTURfVEVTVCBpcyBub3Qgc2V0CisjIENPTkZJR19DTURfVFJVRSBpcyBu b3Qgc2V0CisjIENPTkZJR19DTURfQ0xFQVIgaXMgbm90IHNldAorIyBDT05GSUdfQ01EX0VDSE8g aXMgbm90IHNldAorQ09ORklHX0NNRF9DUkM9eQorQ09ORklHX0NNRF9DUkNfQ01QPXkKKyMgQ09O RklHX0NNRF9NRCBpcyBub3Qgc2V0CisjIENPTkZJR19DTURfTUVNQ01QIGlzIG5vdCBzZXQKKyMg Q09ORklHX0NNRF9NRU1DUFkgaXMgbm90IHNldAorIyBDT05GSUdfQ01EX01FTVNFVCBpcyBub3Qg c2V0CisjIENPTkZJR19DTURfTVcgaXMgbm90IHNldAorQ09ORklHX1NFUklBTF9BTUJBX1BMMDEx PXkKKyMgQ09ORklHX1NQSSBpcyBub3Qgc2V0CitDT05GSUdfTVREPXkKK0NPTkZJR19EUklWRVJf Q0ZJPXkKK0NPTkZJR19EUklWRVJfQ0ZJX0JBTktfV0lEVEhfOD15CitDT05GSUdfQ0ZJX0JVRkZF Ul9XUklURT15CitDT05GSUdfTkFORD15CisjIENPTkZJR19GU19SQU1GUyBpcyBub3Qgc2V0CitD T05GSUdfRElHRVNUX1NIQTFfR0VORVJJQz15CitDT05GSUdfRElHRVNUX1NIQTI1Nl9HRU5FUklD PXkKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvY3B1L0tjb25maWcgYi9hcmNoL2FybTY0L2NwdS9L Y29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ZDY0YTQKLS0tIC9k ZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2NwdS9LY29uZmlnCkBAIC0wLDAgKzEsNTQgQEAKK2Nv bW1lbnQgIlByb2Nlc3NvciBUeXBlIgorCitjb25maWcgQ1BVXzY0CisJYm9vbAorCWRlZmF1bHQg eQorCisjIFNlbGVjdCBDUFUgdHlwZXMgZGVwZW5kaW5nIG9uIHRoZSBhcmNoaXRlY3R1cmUgc2Vs ZWN0ZWQuIFRoaXMgc2VsZWN0cworIyB3aGljaCBDUFVzIHdlIHN1cHBvcnQgaW4gdGhlIGtlcm5l bCBpbWFnZSwgYW5kIHRoZSBjb21waWxlciBpbnN0cnVjdGlvbgorIyBvcHRpbWlzZXIgYmVoYXZp b3VyLgorCisjIEFSTXY4Citjb25maWcgQ1BVX1Y4CisJYm9vbAorCXNlbGVjdCBDUFVfNjR2OAor CXNlbGVjdCBDUFVfU1VQUE9SVFNfNjRCSVRfS0VSTkVMCisKK2NvbmZpZyBDUFVfNjR2OAorCWJv b2wKKworY29tbWVudCAicHJvY2Vzc29yIGZlYXR1cmVzIgorCitjb25maWcgQVJDSF9TVVBQT1JU U19CSUdfRU5ESUFOCisJYm9vbAorCitjb25maWcgQ1BVX0JJR19FTkRJQU4KKwlib29sICJCdWls ZCBiaWctZW5kaWFuIGtlcm5lbCIKKwlkZXBlbmRzIG9uIEFSQ0hfU1VQUE9SVFNfQklHX0VORElB TgorCWhlbHAKKwkgIFNheSBZIGlmIHlvdSBwbGFuIG9uIHJ1bm5pbmcgYSBrZXJuZWwgaW4gYmln LWVuZGlhbiBtb2RlLgorCSAgTm90ZSB0aGF0IHlvdXIgYm9hcmQgbXVzdCBiZSBwcm9wZXJseSBi dWlsdCBhbmQgeW91ciBib2FyZAorCSAgcG9ydCBtdXN0IHByb3Blcmx5IGVuYWJsZSBhbnkgYmln LWVuZGlhbiByZWxhdGVkIGZlYXR1cmVzCisJICBvZiB5b3VyIGNoaXBzZXQvYm9hcmQvcHJvY2Vz c29yLgorCitjb25maWcgQk9PVF9FTkRJQU5ORVNTX1NXSVRDSAorCWJvb2wgIlN1cHBvcnQgc3dp dGNoaW5nIG9mIExpbnV4IGtlcm5lbCBlbmRpYW5uZXNzIgorCWhlbHAKKwkgIFNheSBZIGhlcmUg aWYgeW91IG5lZWQgdG8gc3dpdGNoIENQVSBlbmRpYW5uZXNzIGJlZm9yZSBydW5uaW5nCisJICBM aW51eCBrZXJuZWwsIGUuZy4gaWYgeW91IHdhbnQgYmlnLWVuZGlhbiBCYXJlYm94IHRvIHJ1bgor CSAgbGl0dGxlLWVuZGlhbiBMaW51eC4KKworCSAgQ3VycmVudGx5IGltcGxlbWVudGVkIG9ubHkg YnkgImJvb3R6IiBjb21tYW5kLgorCitjb25maWcgU1lTX1NVUFBPUlRTXzMyQklUX0tFUk5FTAor CWJvb2wKKworY29uZmlnIFNZU19TVVBQT1JUU182NEJJVF9LRVJORUwKKwlib29sCisKK2NvbmZp ZyBDUFVfU1VQUE9SVFNfMzJCSVRfS0VSTkVMCisJYm9vbAorCitjb25maWcgQ1BVX1NVUFBPUlRT XzY0QklUX0tFUk5FTAorCWJvb2wKKwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9jcHUvTWFrZWZp bGUgYi9hcmNoL2FybTY0L2NwdS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4xODgwYzMyCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9jcHUvTWFrZWZp bGUKQEAgLTAsMCArMSwyNSBAQAorb2JqLXkgKz0gY3B1Lm8KK29iai0kKENPTkZJR19BUk1fRVhD RVBUSU9OUykgKz0gZXhjZXB0aW9ucy5vCitvYmotJChDT05GSUdfQVJNX0VYQ0VQVElPTlMpICs9 IGludGVycnVwdHMubworb2JqLXkgKz0gc3RhcnQubyBlbnRyeS5vCisKKyMKKyMgQW55IHZhcmlh bnRzIGNhbiBiZSBjYWxsZWQgYXMgc3RhcnQtYXJteHl6LlMKKyMKK29iai0kKENPTkZJR19DTURf QVJNX0NQVUlORk8pICs9IGNwdWluZm8ubworb2JqLSQoQ09ORklHX0NNRF9BUk1fTU1VSU5GTykg Kz0gbW11aW5mby5vCitvYmotJChDT05GSUdfTU1VKSArPSBjYWNoZS5vCisKK0FGTEFHU19jYWNo ZS1hcm12OC5vICAgICAgIDo9LVdhLC1tYXJjaD1hcm12OC1hCitvYmotJChDT05GSUdfQ1BVXzY0 djgpICs9IGNhY2hlLWFybXY4Lm8KK0FGTEFHU19wYmwtY2FjaGUtYXJtdjgubyAgICAgICA6PS1X YSwtbWFyY2g9YXJtdjgtYQorcGJsLSQoQ09ORklHX0NQVV82NHY4KSArPSBjYWNoZS1hcm12OC5v CisKK3BibC15ICs9IHNldHVwYy5vIGVudHJ5Lm8KK3BibC0kKENPTkZJR19QQkxfU0lOR0xFX0lN QUdFKSArPSBzdGFydC1wYmwubworcGJsLSQoQ09ORklHX1BCTF9NVUxUSV9JTUFHRVMpICs9IHVu Y29tcHJlc3MubworCitvYmoteSArPSBjYWNoZS5vCitwYmwteSArPSBjYWNoZS5vCisKK2x3bC15 ICs9IGxvd2xldmVsLm8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvY3B1L2NhY2hlLWFybXY4LlMg Yi9hcmNoL2FybTY0L2NwdS9jYWNoZS1hcm12OC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjgyYjJmODEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2NwdS9jYWNo ZS1hcm12OC5TCkBAIC0wLDAgKzEsMTY4IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDEzCisg KiBEYXZpZCBGZW5nIDxmZW5naHVhQHBoeXRpdW0uY29tLmNuPgorICoKKyAqIFRoaXMgZmlsZSBp cyBiYXNlZCBvbiBzYW1wbGUgY29kZSBmcm9tIEFSTXY4IEFSTS4KKyAqCisgKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjoJR1BMLTIuMCsKKyAqLworCisjaW5jbHVkZSA8Y29uZmlnLmg+CisjaW5j bHVkZSA8bGludXgvbGlua2FnZS5oPgorI2luY2x1ZGUgPGluaXQuaD4KKworLyoKKyAqIHZvaWQg djhfZmx1c2hfZGNhY2hlX2xldmVsKGxldmVsKQorICoKKyAqIGNsZWFuIGFuZCBpbnZhbGlkYXRl IG9uZSBsZXZlbCBjYWNoZS4KKyAqCisgKiB4MDogY2FjaGUgbGV2ZWwKKyAqIHgxOiAwIGZsdXNo ICYgaW52YWxpZGF0ZSwgMSBpbnZhbGlkYXRlIG9ubHkKKyAqIHgyfng5OiBjbG9iYmVyZWQKKyAq LworLnNlY3Rpb24gLnRleHQudjhfZmx1c2hfZGNhY2hlX2xldmVsCitFTlRSWSh2OF9mbHVzaF9k Y2FjaGVfbGV2ZWwpCisJbHNsCXgxMiwgeDAsICMxCisJbXNyCWNzc2Vscl9lbDEsIHgxMgkJLyog c2VsZWN0IGNhY2hlIGxldmVsICovCisJaXNiCQkJCS8qIHN5bmMgY2hhbmdlIG9mIGNzc2lkcl9l bDEgKi8KKwltcnMJeDYsIGNjc2lkcl9lbDEJCS8qIHJlYWQgdGhlIG5ldyBjc3NpZHJfZWwxICov CisJYW5kCXgyLCB4NiwgIzcJCS8qIHgyIDwtIGxvZzIoY2FjaGUgbGluZSBzaXplKS00ICovCisJ YWRkCXgyLCB4MiwgIzQJCS8qIHgyIDwtIGxvZzIoY2FjaGUgbGluZSBzaXplKSAqLworCW1vdgl4 MywgIzB4M2ZmCisJYW5kCXgzLCB4MywgeDYsIGxzciAjMwkvKiB4MyA8LSBtYXggbnVtYmVyIG9m ICN3YXlzICovCisJY2x6CXc1LCB3MwkJCS8qIGJpdCBwb3NpdGlvbiBvZiAjd2F5cyAqLworCW1v dgl4NCwgIzB4N2ZmZgorCWFuZAl4NCwgeDQsIHg2LCBsc3IgIzEzCS8qIHg0IDwtIG1heCBudW1i ZXIgb2YgI3NldHMgKi8KKwkvKiB4MTIgPC0gY2FjaGUgbGV2ZWwgPDwgMSAqLworCS8qIHgyIDwt IGxpbmUgbGVuZ3RoIG9mZnNldCAqLworCS8qIHgzIDwtIG51bWJlciBvZiBjYWNoZSB3YXlzIC0g MSAqLworCS8qIHg0IDwtIG51bWJlciBvZiBjYWNoZSBzZXRzIC0gMSAqLworCS8qIHg1IDwtIGJp dCBwb3NpdGlvbiBvZiAjd2F5cyAqLworCitsb29wX3NldDoKKwltb3YJeDYsIHgzCQkJLyogeDYg PC0gd29ya2luZyBjb3B5IG9mICN3YXlzICovCitsb29wX3dheToKKwlsc2wJeDcsIHg2LCB4NQor CW9ycgl4OSwgeDEyLCB4NwkJLyogbWFwIHdheSBhbmQgbGV2ZWwgdG8gY2lzdyB2YWx1ZSAqLwor CWxzbAl4NywgeDQsIHgyCisJb3JyCXg5LCB4OSwgeDcJCS8qIG1hcCBzZXQgbnVtYmVyIHRvIGNp c3cgdmFsdWUgKi8KKwl0YnoJdzEsICMwLCAxZgorCWRjCWlzdywgeDkKKwliCTJmCisxOglkYwlj aXN3LCB4OQkJLyogY2xlYW4gJiBpbnZhbGlkYXRlIGJ5IHNldC93YXkgKi8KKzI6CXN1YnMJeDYs IHg2LCAjMQkJLyogZGVjcmVtZW50IHRoZSB3YXkgKi8KKwliLmdlCWxvb3Bfd2F5CisJc3Vicwl4 NCwgeDQsICMxCQkvKiBkZWNyZW1lbnQgdGhlIHNldCAqLworCWIuZ2UJbG9vcF9zZXQKKworCXJl dAorRU5EUFJPQyh2OF9mbHVzaF9kY2FjaGVfbGV2ZWwpCisKKy8qCisgKiB2b2lkIHY4X2ZsdXNo X2RjYWNoZV9hbGwoaW50IGludmFsaWRhdGVfb25seSkKKyAqCisgKiB4MDogMCBmbHVzaCAmIGlu dmFsaWRhdGUsIDEgaW52YWxpZGF0ZSBvbmx5CisgKgorICogY2xlYW4gYW5kIGludmFsaWRhdGUg YWxsIGRhdGEgY2FjaGUgYnkgU0VUL1dBWS4KKyAqLworLnNlY3Rpb24gLnRleHQudjhfZGNhY2hl X2FsbAorRU5UUlkodjhfZGNhY2hlX2FsbCkKKwltb3YJeDEsIHgwCisJZHNiCXN5CisJbXJzCXgx MCwgY2xpZHJfZWwxCQkvKiByZWFkIGNsaWRyX2VsMSAqLworCWxzcgl4MTEsIHgxMCwgIzI0CisJ YW5kCXgxMSwgeDExLCAjMHg3CQkvKiB4MTEgPC0gbG9jICovCisJY2J6CXgxMSwgZmluaXNoZWQJ CS8qIGlmIGxvYyBpcyAwLCBleGl0ICovCisJbW92CXgxNSwgeDMwCisJbW92CXgwLCAjMAkJCS8q IHN0YXJ0IGZsdXNoIGF0IGNhY2hlIGxldmVsIDAgKi8KKwkvKiB4MCAgPC0gY2FjaGUgbGV2ZWwg Ki8KKwkvKiB4MTAgPC0gY2xpZHJfZWwxICovCisJLyogeDExIDwtIGxvYyAqLworCS8qIHgxNSA8 LSByZXR1cm4gYWRkcmVzcyAqLworCitsb29wX2xldmVsOgorCWxzbAl4MTIsIHgwLCAjMQorCWFk ZAl4MTIsIHgxMiwgeDAJCS8qIHgwIDwtIHRyaXBsZWQgY2FjaGUgbGV2ZWwgKi8KKwlsc3IJeDEy LCB4MTAsIHgxMgorCWFuZAl4MTIsIHgxMiwgIzcJCS8qIHgxMiA8LSBjYWNoZSB0eXBlICovCisJ Y21wCXgxMiwgIzIKKwliLmx0CXNraXAJCQkvKiBza2lwIGlmIG5vIGNhY2hlIG9yIGljYWNoZSAq LworCWJsCXY4X2ZsdXNoX2RjYWNoZV9sZXZlbAkvKiB4MSA9IDAgZmx1c2gsIDEgaW52YWxpZGF0 ZSAqLworc2tpcDoKKwlhZGQJeDAsIHgwLCAjMQkJLyogaW5jcmVtZW50IGNhY2hlIGxldmVsICov CisJY21wCXgxMSwgeDAKKwliLmd0CWxvb3BfbGV2ZWwKKworCW1vdgl4MCwgIzAKKwltc3IJY3Nz ZWxyX2VsMSwgeDAJCS8qIHJlc3RvcmUgY3NzZWxyX2VsMSAqLworCWRzYglzeQorCWlzYgorCW1v dgl4MzAsIHgxNQorCitmaW5pc2hlZDoKKwlyZXQKK0VORFBST0ModjhfZGNhY2hlX2FsbCkKKwor LnNlY3Rpb24gLnRleHQudjhfZmx1c2hfZGNhY2hlX2FsbAorRU5UUlkodjhfZmx1c2hfZGNhY2hl X2FsbCkKKwltb3YJeDE2LCB4MzAKKwltb3YJeDAsICMwCisJYmwJdjhfZGNhY2hlX2FsbAorCW1v dgl4MzAsIHgxNgorCXJldAorRU5EUFJPQyh2OF9mbHVzaF9kY2FjaGVfYWxsKQorCisuc2VjdGlv biAudGV4dC52OF9pbnZhbGlkYXRlX2RjYWNoZV9hbGwKK0VOVFJZKHY4X2ludmFsaWRhdGVfZGNh Y2hlX2FsbCkKKwltb3YJeDE2LCB4MzAKKwltb3YJeDAsICMweDEKKwlibAl2OF9kY2FjaGVfYWxs CisJbW92CXgzMCwgeDE2CisJcmV0CitFTkRQUk9DKHY4X2ludmFsaWRhdGVfZGNhY2hlX2FsbCkK KworLyoKKyAqIHZvaWQgdjhfZmx1c2hfZGNhY2hlX3JhbmdlKHN0YXJ0LCBlbmQpCisgKgorICog Y2xlYW4gJiBpbnZhbGlkYXRlIGRhdGEgY2FjaGUgaW4gdGhlIHJhbmdlCisgKgorICogeDA6IHN0 YXJ0IGFkZHJlc3MKKyAqIHgxOiBlbmQgYWRkcmVzcworICovCisuc2VjdGlvbiAudGV4dC52OF9m bHVzaF9kY2FjaGVfcmFuZ2UKK0VOVFJZKHY4X2ZsdXNoX2RjYWNoZV9yYW5nZSkKKwltcnMJeDMs IGN0cl9lbDAKKwlsc3IJeDMsIHgzLCAjMTYKKwlhbmQJeDMsIHgzLCAjMHhmCisJbW92CXgyLCAj NAorCWxzbAl4MiwgeDIsIHgzCQkvKiBjYWNoZSBsaW5lIHNpemUgKi8KKworCS8qIHgyIDwtIG1p bmltYWwgY2FjaGUgbGluZSBzaXplIGluIGNhY2hlIHN5c3RlbSAqLworCXN1Ygl4MywgeDIsICMx CisJYmljCXgwLCB4MCwgeDMKKzE6CWRjCWNpdmFjLCB4MAkvKiBjbGVhbiAmIGludmFsaWRhdGUg ZGF0YSBvciB1bmlmaWVkIGNhY2hlICovCisJYWRkCXgwLCB4MCwgeDIKKwljbXAJeDAsIHgxCisJ Yi5sbwkxYgorCWRzYglzeQorCXJldAorRU5EUFJPQyh2OF9mbHVzaF9kY2FjaGVfcmFuZ2UpCisK Ky8qCisgKiB2b2lkIHY4X2ludmFsaWRhdGVfaWNhY2hlX2FsbCh2b2lkKQorICoKKyAqIGludmFs aWRhdGUgYWxsIHRsYiBlbnRyaWVzLgorICovCisuc2VjdGlvbiAudGV4dC52OF9pbnZhbGlkYXRl X2ljYWNoZV9hbGwKK0VOVFJZKHY4X2ludmFsaWRhdGVfaWNhY2hlX2FsbCkKKwlpYwlpYWxsdWlz CisJaXNiCXN5CisJcmV0CitFTkRQUk9DKHY4X2ludmFsaWRhdGVfaWNhY2hlX2FsbCkKKworLnNl Y3Rpb24gLnRleHQudjhfZmx1c2hfbDNfY2FjaGUKK0VOVFJZKHY4X2ZsdXNoX2wzX2NhY2hlKQor CW1vdgl4MCwgIzAJCQkvKiByZXR1cm4gc3RhdHVzIGFzIHN1Y2Nlc3MgKi8KKwlyZXQKK0VORFBS T0ModjhfZmx1c2hfbDNfY2FjaGUpCisJLndlYWsJdjhfZmx1c2hfbDNfY2FjaGUKZGlmZiAtLWdp dCBhL2FyY2gvYXJtNjQvY3B1L2NhY2hlLmMgYi9hcmNoL2FybTY0L2NwdS9jYWNoZS5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NjVjZjkKLS0tIC9kZXYvbnVsbAorKysg Yi9hcmNoL2FybTY0L2NwdS9jYWNoZS5jCkBAIC0wLDAgKzEsMTEwIEBACisjaW5jbHVkZSA8Y29t bW9uLmg+CisjaW5jbHVkZSA8aW5pdC5oPgorI2luY2x1ZGUgPGFzbS9tbXUuaD4KKyNpbmNsdWRl IDxhc20vY2FjaGUuaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtX2luZm8uaD4KKworc3RydWN0IGNh Y2hlX2ZucyB7CisJdm9pZCAoKmRtYV9jbGVhbl9yYW5nZSkodW5zaWduZWQgbG9uZyBzdGFydCwg dW5zaWduZWQgbG9uZyBlbmQpOworCXZvaWQgKCpkbWFfZmx1c2hfcmFuZ2UpKHVuc2lnbmVkIGxv bmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKKwl2b2lkICgqZG1hX2ludl9yYW5nZSkodW5z aWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpOworCXZvaWQgKCptbXVfY2FjaGVf b24pKHZvaWQpOworCXZvaWQgKCptbXVfY2FjaGVfb2ZmKSh2b2lkKTsKKwl2b2lkICgqbW11X2Nh Y2hlX2ZsdXNoKSh2b2lkKTsKK307CisKK3N0cnVjdCBjYWNoZV9mbnMgKmNhY2hlX2ZuczsKKwor I2RlZmluZSBERUZJTkVfQ1BVX0ZOUyhhcmNoKSBcCisJdm9pZCBhcmNoIyNfZG1hX2NsZWFuX3Jh bmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsJXAorCXZvaWQgYXJj aCMjX2RtYV9mbHVzaF9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVu ZCk7CVwKKwl2b2lkIGFyY2gjI19kbWFfaW52X3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVu c2lnbmVkIGxvbmcgZW5kKTsJXAorCXZvaWQgYXJjaCMjX21tdV9jYWNoZV9vbih2b2lkKTsJCQkJ CQlcCisJdm9pZCBhcmNoIyNfbW11X2NhY2hlX29mZih2b2lkKTsJCQkJCVwKKwl2b2lkIGFyY2gj I19tbXVfY2FjaGVfZmx1c2godm9pZCk7CQkJCQlcCisJCQkJCQkJCQkJXAorCXN0YXRpYyBzdHJ1 Y3QgY2FjaGVfZm5zIF9fbWF5YmVfdW51c2VkIGNhY2hlX2Zuc19hcm0jI2FyY2ggPSB7CQlcCisJ CS5kbWFfY2xlYW5fcmFuZ2UgPSBhcmNoIyNfZG1hX2NsZWFuX3JhbmdlLAkJCVwKKwkJLmRtYV9m bHVzaF9yYW5nZSA9IGFyY2gjI19kbWFfZmx1c2hfcmFuZ2UsCQkJXAorCQkuZG1hX2ludl9yYW5n ZSA9IGFyY2gjI19kbWFfaW52X3JhbmdlLAkJCQlcCisJCS5tbXVfY2FjaGVfb24gPSBhcmNoIyNf bW11X2NhY2hlX29uLAkJCQlcCisJCS5tbXVfY2FjaGVfb2ZmID0gYXJjaCMjX21tdV9jYWNoZV9v ZmYsCQkJCVwKKwkJLm1tdV9jYWNoZV9mbHVzaCA9IGFyY2gjI19tbXVfY2FjaGVfZmx1c2gsCQkJ XAorCX07CisKK0RFRklORV9DUFVfRk5TKHY4KQorCit2b2lkIF9fZG1hX2NsZWFuX3JhbmdlKHVu c2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQoreworCWlmIChjYWNoZV9mbnMp CisJCWNhY2hlX2Zucy0+ZG1hX2NsZWFuX3JhbmdlKHN0YXJ0LCBlbmQpOworfQorCit2b2lkIF9f ZG1hX2ZsdXNoX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQor eworCWlmIChjYWNoZV9mbnMpCisJCWNhY2hlX2Zucy0+ZG1hX2ZsdXNoX3JhbmdlKHN0YXJ0LCBl bmQpOworfQorCit2b2lkIF9fZG1hX2ludl9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNp Z25lZCBsb25nIGVuZCkKK3sKKwlpZiAoY2FjaGVfZm5zKQorCQljYWNoZV9mbnMtPmRtYV9pbnZf cmFuZ2Uoc3RhcnQsIGVuZCk7Cit9CisKK3ZvaWQgX19tbXVfY2FjaGVfb24odm9pZCkKK3sKKwlp ZiAoY2FjaGVfZm5zKQorCQljYWNoZV9mbnMtPm1tdV9jYWNoZV9vbigpOworfQorCit2b2lkIF9f bW11X2NhY2hlX29mZih2b2lkKQoreworCWlmIChjYWNoZV9mbnMpCisJCWNhY2hlX2Zucy0+bW11 X2NhY2hlX29mZigpOworfQorCit2b2lkIF9fbW11X2NhY2hlX2ZsdXNoKHZvaWQpCit7CisJaWYg KGNhY2hlX2ZucykKKwkJY2FjaGVfZm5zLT5tbXVfY2FjaGVfZmx1c2goKTsKKwlpZiAob3V0ZXJf Y2FjaGUuZmx1c2hfYWxsKQorCQlvdXRlcl9jYWNoZS5mbHVzaF9hbGwoKTsKK30KKworaW50IGFy bV9zZXRfY2FjaGVfZnVuY3Rpb25zKHZvaWQpCit7CisJc3dpdGNoIChjcHVfYXJjaGl0ZWN0dXJl KCkpIHsKKwljYXNlIENQVV9BUkNIX0FSTXY4OgorCQljYWNoZV9mbnMgPSAmY2FjaGVfZm5zX2Fy bXY4OworCQlicmVhazsKKwlkZWZhdWx0OgorCQl3aGlsZSgxKTsKKwl9CisKKwlyZXR1cm4gMDsK K30KKworLyoKKyAqIEVhcmx5IGZ1bmN0aW9uIHRvIGZsdXNoIHRoZSBjYWNoZXMuIFRoaXMgaXMg Zm9yIHVzZSB3aGVuIHRoZQorICogQyBlbnZpcm9ubWVudCBpcyBub3QgeWV0IGZ1bGx5IGluaXRp YWxpemVkLgorICovCit2b2lkIGFybV9lYXJseV9tbXVfY2FjaGVfZmx1c2godm9pZCkKK3sKKwlz d2l0Y2ggKGFybV9lYXJseV9nZXRfY3B1X2FyY2hpdGVjdHVyZSgpKSB7CisJY2FzZSBDUFVfQVJD SF9BUk12ODoKKy8vCQl2N19tbXVfY2FjaGVfZmx1c2goKTsKKwkJcmV0dXJuOworCX0KK30KKwor Ly92b2lkIHY3X21tdV9jYWNoZV9pbnZhbGlkYXRlKHZvaWQpOworCit2b2lkIGFybV9lYXJseV9t bXVfY2FjaGVfaW52YWxpZGF0ZSh2b2lkKQoreworCXN3aXRjaCAoYXJtX2Vhcmx5X2dldF9jcHVf YXJjaGl0ZWN0dXJlKCkpIHsKKwljYXNlIENQVV9BUkNIX0FSTXY4OgorLy8JCXY3X21tdV9jYWNo ZV9pbnZhbGlkYXRlKCk7CisJCXJldHVybjsKKwl9Cit9CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0 L2NwdS9jcHUuYyBiL2FyY2gvYXJtNjQvY3B1L2NwdS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjJhMjdlNzIKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2NwdS9j cHUuYwpAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIGNwdS5jIC0gQSBmZXcgaGVscGVyIGZ1bmN0 aW9ucyBmb3IgQVJNCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA3IFNhc2NoYSBIYXVlciA8cy5o YXVlckBwZW5ndXRyb25peC5kZT4sIFBlbmd1dHJvbml4CisgKgorICogU2VlIGZpbGUgQ1JFRElU UyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3Qu CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisK Ky8qKgorICogQGZpbGUKKyAqIEBicmllZiBBIGZldyBoZWxwZXIgZnVuY3Rpb25zIGZvciBBUk0K KyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8aW5pdC5oPgorI2luY2x1ZGUg PGNvbW1hbmQuaD4KKyNpbmNsdWRlIDxjYWNoZS5oPgorI2luY2x1ZGUgPGFzbS9tbXUuaD4KKyNp bmNsdWRlIDxhc20vc3lzdGVtLmg+CisjaW5jbHVkZSA8YXNtL21lbW9yeS5oPgorI2luY2x1ZGUg PGFzbS1nZW5lcmljL21lbW9yeV9sYXlvdXQuaD4KKyNpbmNsdWRlIDxhc20vY3B1dHlwZS5oPgor I2luY2x1ZGUgPGFzbS9jYWNoZS5oPgorI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKworI2luY2x1 ZGUgIm1tdS5oIgorCisvKioKKyAqIEVuYWJsZSBwcm9jZXNzb3IncyBpbnN0cnVjdGlvbiBjYWNo ZQorICovCit2b2lkIGljYWNoZV9lbmFibGUodm9pZCkKK3sKKwl2OF9pbnZhbGlkYXRlX2ljYWNo ZV9hbGwoKTsKKwlzZXRfc2N0bHIoZ2V0X3NjdGxyKCkgfCBDUl9JKTsKK30KKworLyoqCisgKiBE aXNhYmxlIHByb2Nlc3NvcidzIGluc3RydWN0aW9uIGNhY2hlCisgKi8KK3ZvaWQgaWNhY2hlX2Rp c2FibGUodm9pZCkKK3sKKwlzZXRfc2N0bHIoZ2V0X3NjdGxyKCkgJiB+Q1JfSSk7Cit9CisKKy8q KgorICogRGV0ZWN0IHByb2Nlc3NvcidzIGN1cnJlbnQgaW5zdHJ1Y3Rpb24gY2FjaGUgc3RhdHVz CisgKiBAcmV0dXJuIDA9ZGlzYWJsZWQsIDE9ZW5hYmxlZAorICovCitpbnQgaWNhY2hlX3N0YXR1 cyh2b2lkKQoreworCXJldHVybiAoZ2V0X3NjdGxyKCkgJiBDUl9JKSAhPSAwOworfQorCisvKgor ICogU29DIGxpa2UgdGhlIHV4NTAwIGhhdmUgdGhlIGwyeDAgYWx3YXlzIGVuYWJsZQorICogd2l0 aCBvciB3aXRob3V0IE1NVSBlbmFibGUKKyAqLworc3RydWN0IG91dGVyX2NhY2hlX2ZucyBvdXRl cl9jYWNoZTsKKworLyoKKyAqIENsZWFuIGFuZCBpbnZhbGlkZSBjYWNoZXMsIGRpc2FibGUgTU1V CisgKi8KK3ZvaWQgbW11X2Rpc2FibGUodm9pZCkKK3sKKwlfX21tdV9jYWNoZV9mbHVzaCgpOwor CWlmIChvdXRlcl9jYWNoZS5kaXNhYmxlKSB7CisJCW91dGVyX2NhY2hlLmZsdXNoX2FsbCgpOwor CQlvdXRlcl9jYWNoZS5kaXNhYmxlKCk7CisJfQorCV9fbW11X2NhY2hlX29mZigpOworfQorCisv KioKKyAqIERpc2FibGUgTU1VIGFuZCBELWNhY2hlLCBmbHVzaCBjYWNoZXMKKyAqIEByZXR1cm4g MCAoYWx3YXlzKQorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHNodXRkb3duX2Jh cmVib3ggdG8gZ2V0IGEgY2xlYW4KKyAqIG1lbW9yeS9jYWNoZSBzdGF0ZS4KKyAqLworc3RhdGlj IHZvaWQgYXJjaF9zaHV0ZG93bih2b2lkKQoreworCW1tdV9kaXNhYmxlKCk7CisJZmx1c2hfaWNh Y2hlKCk7Cit9CithcmNoc2h1dGRvd25fZXhpdGNhbGwoYXJjaF9zaHV0ZG93bik7CisKK2V4dGVy biB1bnNpZ25lZCBsb25nIGFybV9zdGFja190b3A7CisKK3N0YXRpYyBpbnQgYXJtX3JlcXVlc3Rf c3RhY2sodm9pZCkKK3sKKwlpZiAoIXJlcXVlc3Rfc2RyYW1fcmVnaW9uKCJzdGFjayIsIGFybV9z dGFja190b3AgLSBTVEFDS19TSVpFLCBTVEFDS19TSVpFKSkKKwkJcHJfZXJyKCJFcnJvcjogQ2Fu bm90IHJlcXVlc3QgU0RSQU0gcmVnaW9uIGZvciBzdGFja1xuIik7CisKKwlyZXR1cm4gMDsKK30K K2NvcmVkZXZpY2VfaW5pdGNhbGwoYXJtX3JlcXVlc3Rfc3RhY2spOwpkaWZmIC0tZ2l0IGEvYXJj aC9hcm02NC9jcHUvY3B1aW5mby5jIGIvYXJjaC9hcm02NC9jcHUvY3B1aW5mby5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMDYxMDEKLS0tIC9kZXYvbnVsbAorKysgYi9h cmNoL2FybTY0L2NwdS9jcHVpbmZvLmMKQEAgLTAsMCArMSwyMTEgQEAKKy8qCisgKiBjcHVpbmZv LmMgLSBTaG93IGluZm9ybWF0aW9uIGFib3V0IGNwMTUgcmVnaXN0ZXJzCisgKgorICogQ29weXJp Z2h0IChjKSAyMDA5IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4sIFBlbmd1 dHJvbml4CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNv bnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lv biAyCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAq CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNs dWRlIDxjb21tYW5kLmg+CisjaW5jbHVkZSA8Y29tcGxldGUuaD4KKworI2RlZmluZSBDUFVfQVJD SF9VTktOT1dOCTAKKyNkZWZpbmUgQ1BVX0FSQ0hfQVJNdjgJCTEwCisKKyNkZWZpbmUgQVJNX0NQ VV9QQVJUX0NPUlRFWF9BNTMJICAgIDB4RDAzNAorI2RlZmluZSBBUk1fQ1BVX1BBUlRfQ09SVEVY X0E1NwkgICAgMHhEMDcwCisKK3N0YXRpYyB2b2lkIGRlY29kZV9jYWNoZSh1bnNpZ25lZCBsb25n IHNpemUpCit7CisJaW50IGxpbmVsZW4gPSAxIDw8ICgoc2l6ZSAmIDB4MykgKyAzKTsKKwlpbnQg bXVsdCA9IDIgKyAoKHNpemUgPj4gMikgJiAxKTsKKwlpbnQgY2FjaGVfc2l6ZSA9IG11bHQgPDwg KCgoc2l6ZSA+PiA2KSAmIDB4NykgKyA4KTsKKworCWlmICgoKHNpemUgPj4gMikgJiAweGYpID09 IDEpCisJCXByaW50Zigibm8gY2FjaGVcbiIpOworCWVsc2UKKwkJcHJpbnRmKCIlZCBieXRlcyAo bGluZWxlbiA9ICVkKVxuIiwgY2FjaGVfc2l6ZSwgbGluZWxlbik7Cit9CisKK3N0YXRpYyBjaGFy ICpjcmJpdHNbXSA9IHsiTSIsICJBIiwgIkMiLCAiVyIsICJQIiwgIkQiLCAiTCIsICJCIiwgIlMi LCAiUiIsCisJIkYiLCAiWiIsICJJIiwgIlYiLCAiUlIiLCAiTDQiLCAiRFQiLCAiIiwgIklUIiwg IlNUIiwgIiIsICJGSSIsICJVIiwgIlhQIiwKKwkiVkUiLCAiRUUiLCAiTDIiLCAiIiwgIlRSRSIs ICJBRkUiLCAiVEUifTsKKworc3RhdGljIGludCBkb19jcHVpbmZvKGludCBhcmdjLCBjaGFyICph cmd2W10pCit7CisJdW5zaWduZWQgbG9uZyBtYWluaWQsIGNhY2hlLCBjcjsKKwljaGFyICphcmNo aXRlY3R1cmUsICppbXBsZW1lbnRlcjsKKwlpbnQgaTsKKwlpbnQgY3B1X2FyY2g7CisKKwlfX2Fz bV9fIF9fdm9sYXRpbGVfXygKKwkJIm1ycwklMCwgbWlkcl9lbDFcbiIKKwkJOiAiPXIiIChtYWlu aWQpCisJCToKKwkJOiAibWVtb3J5Iik7CisKKy8vCV9fYXNtX18gX192b2xhdGlsZV9fKAorLy8J CSJtcmMgICAgcDE1LCAwLCAlMCwgYzAsIGMwLCAxICAgQCByZWFkIGNvbnRyb2wgcmVnXG4iCisv LwkJOiAiPXIiIChjYWNoZSkKKy8vCQk6CisvLwkJOiAibWVtb3J5Iik7CisvLworLy8JX19hc21f XyBfX3ZvbGF0aWxlX18oCisvLwkJIm1yYyAgICBwMTUsIDAsICUwLCBjMSwgYzAsIDAgICBAIHJl YWQgY29udHJvbCByZWdcbiIKKy8vCQkJOiAiPXIiIChjcikKKy8vCQkJOgorLy8JCQk6ICJtZW1v cnkiKTsKKworCXN3aXRjaCAobWFpbmlkID4+IDI0KSB7CisJY2FzZSAweDQxOgorCQlpbXBsZW1l bnRlciA9ICJBUk0iOworCQlicmVhazsKKwljYXNlIDB4NDQ6CisJCWltcGxlbWVudGVyID0gIkRp Z2l0YWwgRXF1aXBtZW50IENvcnAuIjsKKwkJYnJlYWs7CisJY2FzZSAweDQwOgorCQlpbXBsZW1l bnRlciA9ICJNb3Rvcm9sYSAtIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yIEluYy4iOworCQlicmVh azsKKwljYXNlIDB4NTY6CisJCWltcGxlbWVudGVyID0gIk1hcnZlbGwgU2VtaWNvbmR1Y3RvciBJ bmMuIjsKKwkJYnJlYWs7CisJY2FzZSAweDY5OgorCQlpbXBsZW1lbnRlciA9ICJJbnRlbCBDb3Jw LiI7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWltcGxlbWVudGVyID0gIlVua25vd24iOworCX0K KworCWlmICgobWFpbmlkICYgMHgwMDA4ZjAwMCkgPT0gMCkgeworCQljcHVfYXJjaCA9IENQVV9B UkNIX1VOS05PV047CisJfSBlbHNlIGlmICgobWFpbmlkICYgMHgwMDA4ZjAwMCkgPT0gMHgwMDAw NzAwMCkgeworCQljcHVfYXJjaCA9IChtYWluaWQgJiAoMSA8PCAyMykpID8gQ1BVX0FSQ0hfQVJN djRUIDogQ1BVX0FSQ0hfQVJNdjM7CisJfSBlbHNlIGlmICgobWFpbmlkICYgMHgwMDA4MDAwMCkg PT0gMHgwMDAwMDAwMCkgeworCQljcHVfYXJjaCA9IChtYWluaWQgPj4gMTYpICYgNzsKKwkJaWYg KGNwdV9hcmNoKQorCQkJY3B1X2FyY2ggKz0gQ1BVX0FSQ0hfQVJNdjM7CisJfSBlbHNlIGlmICgo bWFpbmlkICYgMHgwMDBmMDAwMCkgPT0gMHgwMDBmMDAwMCkgeworCQl1bnNpZ25lZCBpbnQgbW1m cjA7CisKKwkJLyogUmV2aXNlZCBDUFVJRCBmb3JtYXQuIFJlYWQgdGhlIE1lbW9yeSBNb2RlbCBG ZWF0dXJlCisJCSAqIFJlZ2lzdGVyIDAgYW5kIGNoZWNrIGZvciBWTVNBdjcgb3IgUE1TQXY3ICov CisvLwkJYXNtKCJtcmMJcDE1LCAwLCAlMCwgYzAsIGMxLCA0IgorLy8JCSAgICA6ICI9ciIgKG1t ZnIwKSk7CisJCWlmICgobW1mcjAgJiAweDAwMDAwMDBmKSA+PSAweDAwMDAwMDAzIHx8CisJCSAg ICAobW1mcjAgJiAweDAwMDAwMGYwKSA+PSAweDAwMDAwMDMwKQorCQkJY3B1X2FyY2ggPSBDUFVf QVJDSF9BUk12NzsKKwkJZWxzZSBpZiAoKG1tZnIwICYgMHgwMDAwMDAwZikgPT0gMHgwMDAwMDAw MiB8fAorCQkJIChtbWZyMCAmIDB4MDAwMDAwZjApID09IDB4MDAwMDAwMjApCisJCQljcHVfYXJj aCA9IENQVV9BUkNIX0FSTXY2OworCQllbHNlCisJCQljcHVfYXJjaCA9IENQVV9BUkNIX1VOS05P V047CisJfSBlbHNlCisJCWNwdV9hcmNoID0gQ1BVX0FSQ0hfVU5LTk9XTjsKKworCXN3aXRjaCAo Y3B1X2FyY2gpIHsKKwljYXNlIENQVV9BUkNIX0FSTXYzOgorCQlhcmNoaXRlY3R1cmUgPSAidjMi OworCQlicmVhazsKKwljYXNlIENQVV9BUkNIX0FSTXY0OgorCQlhcmNoaXRlY3R1cmUgPSAidjQi OworCQlicmVhazsKKwljYXNlIENQVV9BUkNIX0FSTXY0VDoKKwkJYXJjaGl0ZWN0dXJlID0gInY0 VCI7CisJCWJyZWFrOworCWNhc2UgQ1BVX0FSQ0hfQVJNdjU6CisJCWFyY2hpdGVjdHVyZSA9ICJ2 NSI7CisJCWJyZWFrOworCWNhc2UgQ1BVX0FSQ0hfQVJNdjVUOgorCQlhcmNoaXRlY3R1cmUgPSAi djVUIjsKKwkJYnJlYWs7CisJY2FzZSBDUFVfQVJDSF9BUk12NVRFOgorCQlhcmNoaXRlY3R1cmUg PSAidjVURSI7CisJCWJyZWFrOworCWNhc2UgQ1BVX0FSQ0hfQVJNdjVURUo6CisJCWFyY2hpdGVj dHVyZSA9ICJ2NVRFSiI7CisJCWJyZWFrOworCWNhc2UgQ1BVX0FSQ0hfQVJNdjY6CisJCWFyY2hp dGVjdHVyZSA9ICJ2NiI7CisJCWJyZWFrOworCWNhc2UgQ1BVX0FSQ0hfQVJNdjc6CisJCWFyY2hp dGVjdHVyZSA9ICJ2NyI7CisJCWJyZWFrOworCWNhc2UgQ1BVX0FSQ0hfQVJNdjg6CisJCWFyY2hp dGVjdHVyZSA9ICJ2OCI7CisJCWJyZWFrOworCWNhc2UgQ1BVX0FSQ0hfVU5LTk9XTjoKKwlkZWZh dWx0OgorCQlhcmNoaXRlY3R1cmUgPSAiVW5rbm93biI7CisJfQorCisJcHJpbnRmKCJpbXBsZW1l bnRlcjogJXNcbmFyY2hpdGVjdHVyZTogJXNcbiIsCisJCQlpbXBsZW1lbnRlciwgYXJjaGl0ZWN0 dXJlKTsKKworCWlmIChjcHVfYXJjaCA9PSBDUFVfQVJDSF9BUk12NykgeworCQl1bnNpZ25lZCBp bnQgbWFqb3IsIG1pbm9yOworCQljaGFyICpwYXJ0OworCQltYWpvciA9IChtYWluaWQgPj4gMjAp ICYgMHhmOworCQltaW5vciA9IG1haW5pZCAmIDB4ZjsKKwkJc3dpdGNoIChtYWluaWQgJiAweGZm ZjApIHsKKwkJY2FzZSBBUk1fQ1BVX1BBUlRfQ09SVEVYX0E1OgorCQkJcGFydCA9ICJDb3J0ZXgt QTUiOworCQkJYnJlYWs7CisJCWNhc2UgQVJNX0NQVV9QQVJUX0NPUlRFWF9BNzoKKwkJCXBhcnQg PSAiQ29ydGV4LUE3IjsKKwkJCWJyZWFrOworCQljYXNlIEFSTV9DUFVfUEFSVF9DT1JURVhfQTg6 CisJCQlwYXJ0ID0gIkNvcnRleC1BOCI7CisJCQlicmVhazsKKwkJY2FzZSBBUk1fQ1BVX1BBUlRf Q09SVEVYX0E5OgorCQkJcGFydCA9ICJDb3J0ZXgtQTkiOworCQkJYnJlYWs7CisJCWNhc2UgQVJN X0NQVV9QQVJUX0NPUlRFWF9BMTU6CisJCQlwYXJ0ID0gIkNvcnRleC1BMTUiOworCQkJYnJlYWs7 CisJCWNhc2UgQVJNX0NQVV9QQVJUX0NPUlRFWF9BNTM6CisJCQlwYXJ0ID0gIkNvcnRleC1BNTMi OworCQlkZWZhdWx0OgorCQkJcGFydCA9ICJ1bmtub3duIjsKKwkJfQorCQlwcmludGYoImNvcmU6 ICVzIHIldXAldVxuIiwgcGFydCwgbWFqb3IsIG1pbm9yKTsKKwl9CisKKy8vCWlmIChjYWNoZSAm ICgxIDw8IDI0KSkgeworLy8JCS8qIHNlcGFyYXRlIEkvRCBjYWNoZSAqLworLy8JCXByaW50Zigi SS1jYWNoZTogIik7CisvLwkJZGVjb2RlX2NhY2hlKGNhY2hlICYgMHhmZmYpOworLy8JCXByaW50 ZigiRC1jYWNoZTogIik7CisvLwkJZGVjb2RlX2NhY2hlKChjYWNoZSA+PiAxMikgJiAweGZmZik7 CisvLwl9IGVsc2UgeworLy8JCS8qIHVuaWZpZWQgSS9EIGNhY2hlICovCisvLwkJcHJpbnRmKCJj YWNoZTogIik7CisvLwkJZGVjb2RlX2NhY2hlKGNhY2hlICYgMHhmZmYpOworLy8JfQorCisvLwlw cmludGYoIkNvbnRyb2wgcmVnaXN0ZXI6ICIpOworLy8JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUoY3JiaXRzKTsgaSsrKQorLy8JCWlmIChjciAmICgxIDw8IGkpKQorLy8JCQlwcmludGYoIiVz ICIsIGNyYml0c1tpXSk7CisvLwlwcmludGYoIlxuIik7CisKKwlyZXR1cm4gMDsKK30KKworQkFS RUJPWF9DTURfU1RBUlQoY3B1aW5mbykKKwkuY21kICAgICAgICAgICAgPSBkb19jcHVpbmZvLAor CUJBUkVCT1hfQ01EX0RFU0MoInNob3cgaW5mbyBhYm91dCBDUFUiKQorCUJBUkVCT1hfQ01EX0dS T1VQKENNRF9HUlBfSU5GTykKKwlCQVJFQk9YX0NNRF9DT01QTEVURShlbXB0eV9jb21wbGV0ZSkK K0JBUkVCT1hfQ01EX0VORAorCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2NwdS9lbnRyeS5jIGIv YXJjaC9hcm02NC9jcHUvZW50cnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5hMDI5ZjA5Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9jcHUvZW50cnkuYwpAQCAt MCwwICsxLDM4IEBACisjaW5jbHVkZSA8dHlwZXMuaD4KKworI2luY2x1ZGUgPGFzbS9jYWNoZS5o PgorCisjaW5jbHVkZSAiZW50cnkuaCIKKworLyoKKyAqIE1haW4gQVJNIGVudHJ5IHBvaW50LiBD YWxsIHRoaXMgd2l0aCB0aGUgbWVtb3J5IHJlZ2lvbiB5b3UgY2FuCisgKiBzcGFyZSBmb3IgYmFy ZWJveC4gVGhpcyBkb2Vzbid0IG5lY2Vzc2FyaWx5IGhhdmUgdG8gYmUgdGhlIGZ1bGwKKyAqIFNE UkFNLiBUaGUgY3VycmVudGx5IHJ1bm5pbmcgYmluYXJ5IGNhbiBiZSBpbnNpZGUgb3Igb3V0c2lk ZSBvZgorICogdGhpcyByZWdpb24uIFRFWFRfQkFTRSBjYW4gYmUgaW5zaWRlIG9yIG91dHNpZGUg b2YgdGhpcworICogcmVnaW9uLiBib2FyZGRhdGEgd2lsbCBiZSBwcmVzZXJ2ZWQgYW5kIGNhbiBi ZSBhY2Nlc3NlZCBsYXRlciB3aXRoCisgKiBiYXJlYm94X2FybV9ib2FyZGRhdGEoKS4KKyAqCisg KiAtPiBtZW1iYXNlICsgbWVtc2l6ZQorICogICBTVEFDS19TSVpFICAgICAgICAgICAgICAtIHN0 YWNrCisgKiAgIDE2S2lCLCBhbGlnbmVkIHRvIDE2S2lCIC0gRmlyc3QgbGV2ZWwgcGFnZSB0YWJs ZSBpZiBlYXJseSBNTVUgc3VwcG9ydAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlz IGVuYWJsZWQKKyAqICAgMTI4S2lCICAgICAgICAgICAgICAgICAgLSBlYXJseSBtZW1vcnkgc3Bh Y2UKKyAqIC0+IG1heGltdW0gZW5kIG9mIGJhcmVib3ggYmluYXJ5CisgKgorICogVXN1YWxseSBh IFRFWFRfQkFTRSBvZiAxTWlCIGJlbG93IHlvdXIgbG93ZXN0IHBvc3NpYmxlIGVuZCBvZiBtZW1v cnkgc2hvdWxkCisgKiBiZSBmaW5lLgorICovCisKK3ZvaWQgX19ub3JldHVybiBiYXJlYm94X2Fy bV9lbnRyeSh1bnNpZ25lZCBsb25nIG1lbWJhc2UsCisJCQkJCSAgdW5zaWduZWQgbG9uZyBtZW1z aXplLCB2b2lkICpib2FyZGRhdGEpCit7CisJYXJtX3NldHVwX3N0YWNrKG1lbWJhc2UgKyBtZW1z aXplIC0gMTYpOworCWFybV9lYXJseV9tbXVfY2FjaGVfaW52YWxpZGF0ZSgpOworCisJaWYgKElT X0VOQUJMRUQoQ09ORklHX1BCTF9NVUxUSV9JTUFHRVMpKQorCQliYXJlYm94X211bHRpX3BibF9z dGFydChtZW1iYXNlLCBtZW1zaXplLCBib2FyZGRhdGEpOworCWVsc2UgaWYgKElTX0VOQUJMRUQo Q09ORklHX1BCTF9TSU5HTEVfSU1BR0UpKQorCQliYXJlYm94X3NpbmdsZV9wYmxfc3RhcnQobWVt YmFzZSwgbWVtc2l6ZSwgYm9hcmRkYXRhKTsKKwllbHNlCisJCWJhcmVib3hfbm9uX3BibF9zdGFy dChtZW1iYXNlLCBtZW1zaXplLCBib2FyZGRhdGEpOworfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02 NC9jcHUvZW50cnkuaCBiL2FyY2gvYXJtNjQvY3B1L2VudHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uZjAxNjNhMwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQv Y3B1L2VudHJ5LmgKQEAgLTAsMCArMSwxOCBAQAorI2lmbmRlZiBfX0VOVFJZX0hfXworI2RlZmlu ZSBfX0VOVFJZX0hfXworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisKK3ZvaWQgX19ub3JldHVybiBi YXJlYm94X25vbl9wYmxfc3RhcnQodW5zaWduZWQgbG9uZyBtZW1iYXNlLAorCQkJCSAgICAgIHVu c2lnbmVkIGxvbmcgbWVtc2l6ZSwKKwkJCQkgICAgICB2b2lkICpib2FyZGRhdGEpOworCit2b2lk IF9fbm9yZXR1cm4gYmFyZWJveF9tdWx0aV9wYmxfc3RhcnQodW5zaWduZWQgbG9uZyBtZW1iYXNl LAorCQkJCQl1bnNpZ25lZCBsb25nIG1lbXNpemUsCisJCQkJCXZvaWQgKmJvYXJkZGF0YSk7CisK K3ZvaWQgX19ub3JldHVybiBiYXJlYm94X3NpbmdsZV9wYmxfc3RhcnQodW5zaWduZWQgbG9uZyBt ZW1iYXNlLAorCQkJCQkgdW5zaWduZWQgbG9uZyBtZW1zaXplLAorCQkJCQkgdm9pZCAqYm9hcmRk YXRhKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2NwdS9leGNlcHRpb25zLlMg Yi9hcmNoL2FybTY0L2NwdS9leGNlcHRpb25zLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNTgxMjAyNQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvY3B1L2V4Y2Vw dGlvbnMuUwpAQCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAxMworICog RGF2aWQgRmVuZyA8ZmVuZ2h1YUBwaHl0aXVtLmNvbS5jbj4KKyAqCisgKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjoJR1BMLTIuMCsKKyAqLworCisjaW5jbHVkZSA8Y29uZmlnLmg+CisjaW5jbHVk ZSA8YXNtL3B0cmFjZS5oPgorI2luY2x1ZGUgPGxpbnV4L2xpbmthZ2UuaD4KKworLyoKKyAqIEVu dGVyIEV4Y2VwdGlvbi4KKyAqIFRoaXMgd2lsbCBzYXZlIHRoZSBwcm9jZXNzb3Igc3RhdGUgdGhh dCBpcyBFTFIvWDB+WDMwCisgKiB0byB0aGUgc3RhY2sgZnJhbWUuCisgKi8KKy5tYWNybwlleGNl cHRpb25fZW50cnkKKwlzdHAJeDI5LCB4MzAsIFtzcCwgIy0xNl0hCisJc3RwCXgyNywgeDI4LCBb c3AsICMtMTZdIQorCXN0cAl4MjUsIHgyNiwgW3NwLCAjLTE2XSEKKwlzdHAJeDIzLCB4MjQsIFtz cCwgIy0xNl0hCisJc3RwCXgyMSwgeDIyLCBbc3AsICMtMTZdIQorCXN0cAl4MTksIHgyMCwgW3Nw LCAjLTE2XSEKKwlzdHAJeDE3LCB4MTgsIFtzcCwgIy0xNl0hCisJc3RwCXgxNSwgeDE2LCBbc3As ICMtMTZdIQorCXN0cAl4MTMsIHgxNCwgW3NwLCAjLTE2XSEKKwlzdHAJeDExLCB4MTIsIFtzcCwg Iy0xNl0hCisJc3RwCXg5LCB4MTAsIFtzcCwgIy0xNl0hCisJc3RwCXg3LCB4OCwgW3NwLCAjLTE2 XSEKKwlzdHAJeDUsIHg2LCBbc3AsICMtMTZdIQorCXN0cAl4MywgeDQsIFtzcCwgIy0xNl0hCisJ c3RwCXgxLCB4MiwgW3NwLCAjLTE2XSEKKworCS8qIENvdWxkIGJlIHJ1bm5pbmcgYXQgRUwzL0VM Mi9FTDEgKi8KKwltcnMJeDExLCBDdXJyZW50RUwKKwljbXAJeDExLCAjMHhDCQkvKiBDaGVjayBF TDMgc3RhdGUgKi8KKwliLmVxCTFmCisJY21wCXgxMSwgIzB4OAkJLyogQ2hlY2sgRUwyIHN0YXRl ICovCisJYi5lcQkyZgorCWNtcAl4MTEsICMweDQJCS8qIENoZWNrIEVMMSBzdGF0ZSAqLworCWIu ZXEJM2YKKzM6CW1ycwl4MSwgZXNyX2VsMworCW1ycwl4MiwgZWxyX2VsMworCWIJMGYKKzI6CW1y cwl4MSwgZXNyX2VsMgorCW1ycwl4MiwgZWxyX2VsMgorCWIJMGYKKzE6CW1ycwl4MSwgZXNyX2Vs MQorCW1ycwl4MiwgZWxyX2VsMQorMDoKKwlzdHAJeDIsIHgwLCBbc3AsICMtMTZdIQorCW1vdgl4 MCwgc3AKKy5lbmRtCisKKy8qCisgKiBFeGNlcHRpb24gdmVjdG9ycy4KKyAqLworCS5hbGlnbgkx MQorCS5nbG9ibAl2ZWN0b3JzCit2ZWN0b3JzOgorCS5hbGlnbgk3CisJYglfZG9fYmFkX3N5bmMJ LyogQ3VycmVudCBFTCBTeW5jaHJvbm91cyBUaHJlYWQgKi8KKworCS5hbGlnbgk3CisJYglfZG9f YmFkX2lycQkvKiBDdXJyZW50IEVMIElSUSBUaHJlYWQgKi8KKworCS5hbGlnbgk3CisJYglfZG9f YmFkX2ZpcQkvKiBDdXJyZW50IEVMIEZJUSBUaHJlYWQgKi8KKworCS5hbGlnbgk3CisJYglfZG9f YmFkX2Vycm9yCS8qIEN1cnJlbnQgRUwgRXJyb3IgVGhyZWFkICovCisKKwkuYWxpZ24JNworCWIJ X2RvX3N5bmMJLyogQ3VycmVudCBFTCBTeW5jaHJvbm91cyBIYW5kbGVyICovCisKKwkuYWxpZ24J NworCWIJX2RvX2lycQkJLyogQ3VycmVudCBFTCBJUlEgSGFuZGxlciAqLworCisJLmFsaWduCTcK KwliCV9kb19maXEJCS8qIEN1cnJlbnQgRUwgRklRIEhhbmRsZXIgKi8KKworCS5hbGlnbgk3CisJ YglfZG9fZXJyb3IJLyogQ3VycmVudCBFTCBFcnJvciBIYW5kbGVyICovCisKKworX2RvX2JhZF9z eW5jOgorCWV4Y2VwdGlvbl9lbnRyeQorCWJsCWRvX2JhZF9zeW5jCisKK19kb19iYWRfaXJxOgor CWV4Y2VwdGlvbl9lbnRyeQorCWJsCWRvX2JhZF9pcnEKKworX2RvX2JhZF9maXE6CisJZXhjZXB0 aW9uX2VudHJ5CisJYmwJZG9fYmFkX2ZpcQorCitfZG9fYmFkX2Vycm9yOgorCWV4Y2VwdGlvbl9l bnRyeQorCWJsCWRvX2JhZF9lcnJvcgorCitfZG9fc3luYzoKKwlleGNlcHRpb25fZW50cnkKKwli bAlkb19zeW5jCisKK19kb19pcnE6CisJZXhjZXB0aW9uX2VudHJ5CisJYmwJZG9faXJxCisKK19k b19maXE6CisJZXhjZXB0aW9uX2VudHJ5CisJYmwJZG9fZmlxCisKK19kb19lcnJvcjoKKwlleGNl cHRpb25fZW50cnkKKwlibAlkb19lcnJvcgorCisuc2VjdGlvbiAuZGF0YQorLmFsaWduIDQKKy5n bG9iYWwgYXJtX2lnbm9yZV9kYXRhX2Fib3J0Cithcm1faWdub3JlX2RhdGFfYWJvcnQ6Cisud29y ZCAwIC8qIFdoZW4gIT0gMCBkYXRhIGFib3J0cyBhcmUgaWdub3JlZCAqLworLmdsb2JhbCBhcm1f ZGF0YV9hYm9ydF9vY2N1cnJlZAorYXJtX2RhdGFfYWJvcnRfb2NjdXJyZWQ6Cisud29yZCAwIC8q IHNldCAhPSAwIGJ5IHRoZSBkYXRhIGFib3J0IGhhbmRsZXIgKi8KK2Fib3J0X3N0YWNrOgorLnNw YWNlIDgKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvY3B1L2ludGVycnVwdHMuYyBiL2FyY2gvYXJt NjQvY3B1L2ludGVycnVwdHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z MmY1YjRiCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9jcHUvaW50ZXJydXB0cy5jCkBA IC0wLDAgKzEsMTYyIEBACisvKgorICogaW50ZXJydXB0cy5jIC0gSW50ZXJydXB0IFN1cHBvcnQg Um91dGluZXMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDcgU2FzY2hhIEhhdWVyIDxzLmhhdWVy QHBlbmd1dHJvbml4LmRlPiwgUGVuZ3V0cm9uaXgKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZv ciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAq CisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAq IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICovCisK Ky8qKgorICogQGZpbGUKKyAqIEBicmllZiBJbnRlcnJ1cHQgU3VwcG9ydCBSb3V0aW5lcworICov CisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxhYm9ydC5oPgorI2luY2x1ZGUgPGFz bS9wdHJhY2UuaD4KKyNpbmNsdWRlIDxhc20vdW53aW5kLmg+CisKK3N0YXRpYyB2b2lkIF9fbm9y ZXR1cm4gZG9fZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpwdF9yZWdzKQoreworCXBhbmljKCIi KTsKK30KKworLyoqCisgKiBUaGUgQ1BVIHJ1bnMgaW50byBhbiB1bmRlZmluZWQgaW5zdHJ1Y3Rp b24uIFRoYXQgcmVhbGx5IHNob3VsZCBub3QgaGFwcGVuIQorICogQHBhcmFtW2luXSBwdF9yZWdz IFJlZ2lzdGVyIHNldCBjb250ZW50IHdoZW4gdGhlIGFjY2lkZW50IGhhcHBlbnMKKyAqLwordm9p ZCBkb191bmRlZmluZWRfaW5zdHJ1Y3Rpb24gKHN0cnVjdCBwdF9yZWdzICpwdF9yZWdzKQorewor CXByaW50ZiAoInVuZGVmaW5lZCBpbnN0cnVjdGlvblxuIik7CisJZG9fZXhjZXB0aW9uKHB0X3Jl Z3MpOworfQorCisvKioKKyAqIFRoZSBDUFUgY2F0Y2hlcyBhIHNvZnR3YXJlIGludGVycnVwdAor ICogQHBhcmFtW2luXSBwdF9yZWdzIFJlZ2lzdGVyIHNldCBjb250ZW50IHdoZW4gdGhlIGludGVy cnVwdCBoYXBwZW5zCisgKgorICogVGhlcmUgaXMgbm8gZnVuY3Rpb24gYmVoaW5kIHRoaXMgZmVh dHVyZS4gU28gd2hhdCB0byBkbyBlbHNlIHRoYW4KKyAqIGEgcmVzZXQ/CisgKi8KK3ZvaWQgZG9f c29mdHdhcmVfaW50ZXJydXB0IChzdHJ1Y3QgcHRfcmVncyAqcHRfcmVncykKK3sKKwlwcmludGYg KCJzb2Z0d2FyZSBpbnRlcnJ1cHRcbiIpOworCWRvX2V4Y2VwdGlvbihwdF9yZWdzKTsKK30KKwor LyoqCisgKiBUaGUgQ1BVIGNhdGNoZXMgYSBwcmVmZXRjaCBhYm9ydC4gVGhhdCByZWFsbHkgc2hv dWxkIG5vdCBoYXBwZW4hCisgKiBAcGFyYW1baW5dIHB0X3JlZ3MgUmVnaXN0ZXIgc2V0IGNvbnRl bnQgd2hlbiB0aGUgYWNjaWRlbnQgaGFwcGVucworICoKKyAqIGluc3RydWN0aW9uIGZldGNoIGZy b20gYW4gdW5tYXBwZWQgYXJlYQorICovCit2b2lkIGRvX3ByZWZldGNoX2Fib3J0IChzdHJ1Y3Qg cHRfcmVncyAqcHRfcmVncykKK3sKKwlwcmludGYgKCJwcmVmZXRjaCBhYm9ydFxuIik7CisJZG9f ZXhjZXB0aW9uKHB0X3JlZ3MpOworfQorCisvKioKKyAqIFRoZSBDUFUgY2F0Y2hlcyBhIGRhdGEg YWJvcnQuIFRoYXQgcmVhbGx5IHNob3VsZCBub3QgaGFwcGVuIQorICogQHBhcmFtW2luXSBwdF9y ZWdzIFJlZ2lzdGVyIHNldCBjb250ZW50IHdoZW4gdGhlIGFjY2lkZW50IGhhcHBlbnMKKyAqCisg KiBkYXRhIGZldGNoIGZyb20gYW4gdW5tYXBwZWQgYXJlYQorICovCit2b2lkIGRvX2RhdGFfYWJv cnQgKHN0cnVjdCBwdF9yZWdzICpwdF9yZWdzKQoreworCXUzMiBmYXI7CisKKwlwcmludGYoInVu YWJsZSB0byBoYW5kbGUgJXMgYXQgYWRkcmVzcyAweCUwOHhcbiIsCisJCQlmYXIgPCBQQUdFX1NJ WkUgPyAiTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIiA6CisJCQkicGFnaW5nIHJlcXVlc3QiLCBm YXIpOworCisJZG9fZXhjZXB0aW9uKHB0X3JlZ3MpOworfQorCisvKioKKyAqIFRoZSBDUFUgY2F0 Y2hlcyBhIGZhc3QgaW50ZXJydXB0IHJlcXVlc3QuCisgKiBAcGFyYW1baW5dIHB0X3JlZ3MgUmVn aXN0ZXIgc2V0IGNvbnRlbnQgd2hlbiB0aGUgaW50ZXJydXB0IGhhcHBlbnMKKyAqCisgKiBXZSBu ZXZlciBlbmFibGUgRklRcywgc28gdGhpcyBzaG91bGQgbm90IGhhcHBlbgorICovCit2b2lkIGRv X2ZpcSAoc3RydWN0IHB0X3JlZ3MgKnB0X3JlZ3MpCit7CisJcHJpbnRmICgiZmFzdCBpbnRlcnJ1 cHQgcmVxdWVzdFxuIik7CisJZG9fZXhjZXB0aW9uKHB0X3JlZ3MpOworfQorCisvKioKKyAqIFRo ZSBDUFUgY2F0Y2hlcyBhIHJlZ3VsYXIgaW50ZXJydXB0LgorICogQHBhcmFtW2luXSBwdF9yZWdz IFJlZ2lzdGVyIHNldCBjb250ZW50IHdoZW4gdGhlIGludGVycnVwdCBoYXBwZW5zCisgKgorICog V2UgbmV2ZXIgZW5hYmxlIGludGVycnVwdHMsIHNvIHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4KKyAq Lwordm9pZCBkb19pcnEgKHN0cnVjdCBwdF9yZWdzICpwdF9yZWdzKQoreworCXByaW50ZiAoImlu dGVycnVwdCByZXF1ZXN0XG4iKTsKKwlkb19leGNlcHRpb24ocHRfcmVncyk7Cit9CisKK3ZvaWQg ZG9fYmFkX3N5bmMoc3RydWN0IHB0X3JlZ3MgKnB0X3JlZ3MpCit7CisJcHJpbnRmKCJiYWQgc3lu Y1xuIik7CisJZG9fZXhjZXB0aW9uKHB0X3JlZ3MpOworfQorCit2b2lkIGRvX2JhZF9pcnEoc3Ry dWN0IHB0X3JlZ3MgKnB0X3JlZ3MpCit7CisJcHJpbnRmKCJiYWQgaXJxXG4iKTsKKwlkb19leGNl cHRpb24ocHRfcmVncyk7Cit9CisKK3ZvaWQgZG9fYmFkX2ZpcShzdHJ1Y3QgcHRfcmVncyAqcHRf cmVncykKK3sKKwlwcmludGYoImJhZCBmaXFcbiIpOworCWRvX2V4Y2VwdGlvbihwdF9yZWdzKTsK K30KKwordm9pZCBkb19iYWRfZXJyb3Ioc3RydWN0IHB0X3JlZ3MgKnB0X3JlZ3MpCit7CisJcHJp bnRmKCJiYWQgZXJyb3JcbiIpOworCWRvX2V4Y2VwdGlvbihwdF9yZWdzKTsKK30KKwordm9pZCBk b19zeW5jKHN0cnVjdCBwdF9yZWdzICpwdF9yZWdzKQoreworCXByaW50Zigic3luYyBleGNlcHRp b25cbiIpOworCWRvX2V4Y2VwdGlvbihwdF9yZWdzKTsKK30KKworCit2b2lkIGRvX2Vycm9yKHN0 cnVjdCBwdF9yZWdzICpwdF9yZWdzKQoreworCXByaW50ZigiZXJyb3IgZXhjZXB0aW9uXG4iKTsK Kwlkb19leGNlcHRpb24ocHRfcmVncyk7Cit9CisKK2V4dGVybiB2b2xhdGlsZSBpbnQgYXJtX2ln bm9yZV9kYXRhX2Fib3J0OworZXh0ZXJuIHZvbGF0aWxlIGludCBhcm1fZGF0YV9hYm9ydF9vY2N1 cnJlZDsKKwordm9pZCBkYXRhX2Fib3J0X21hc2sodm9pZCkKK3sKKwlhcm1fZGF0YV9hYm9ydF9v Y2N1cnJlZCA9IDA7CisJYXJtX2lnbm9yZV9kYXRhX2Fib3J0ID0gMTsKK30KKworaW50IGRhdGFf YWJvcnRfdW5tYXNrKHZvaWQpCit7CisJYXJtX2lnbm9yZV9kYXRhX2Fib3J0ID0gMDsKKworCXJl dHVybiBhcm1fZGF0YV9hYm9ydF9vY2N1cnJlZCAhPSAwOworfQpkaWZmIC0tZ2l0IGEvYXJjaC9h cm02NC9jcHUvbG93bGV2ZWwuUyBiL2FyY2gvYXJtNjQvY3B1L2xvd2xldmVsLlMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdkZjEzNgotLS0gL2Rldi9udWxsCisrKyBiL2Fy Y2gvYXJtNjQvY3B1L2xvd2xldmVsLlMKQEAgLTAsMCArMSw0MyBAQAorI2luY2x1ZGUgPGxpbnV4 L2xpbmthZ2UuaD4KKyNpbmNsdWRlIDxpbml0Lmg+CisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgor I2luY2x1ZGUgPGFzbS9naWMuaD4KKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9tZW1vcnlfbGF5b3V0 Lmg+CisKKy5zZWN0aW9uICIudGV4dF9iYXJlX2luaXRfIiwiYXgiCisKK0VOVFJZKGFybV9jcHVf bG93bGV2ZWxfaW5pdCkKKwlhZHIJeDAsIHZlY3RvcnMKKwltcnMJeDEsIEN1cnJlbnRFTAorCWNt cAl4MSwgIzB4QwkJLyogQ2hlY2sgRUwzIHN0YXRlICovCisJYi5lcQkxZgorCWNtcAl4MSwgIzB4 OAkJLyogQ2hlY2sgRUwyIHN0YXRlICovCisJYi5lcQkyZgorCWNtcAl4MSwgIzB4NAkJLyogQ2hl Y2sgRUwxIHN0YXRlICovCisJYi5lcQkzZgorCisxOgorCW1zcgl2YmFyX2VsMywgeDAKKwltb3YJ eDAsICMxCQkJLyogTm9uLVNlY3VyZSBFTDAvMSAqLworCW9ycgl4MCwgeDAsICMoMSA8PCAxMCkJ LyogNjQtYml0IEVMMiAqLworCW1zcglzY3JfZWwzLCB4MAorCW1zcgljcHRyX2VsMywgeHpyCisJ Yglkb25lCisKKzI6CisJbXNyCXZiYXJfZWwyLCB4MAorCW1vdgl4MCwgIzB4MzNmZgkJLyogRW5h YmxlIEZQL1NJTUQgKi8KKwltc3IJY3B0cl9lbDIsIHgwCisJYglkb25lCisJCisKKzM6CisJbXNy CXZiYXJfZWwxLCB4MAorCW1vdgl4MCwgIygzIDw8IDIwKQkJLyogRW5hYmxlIEZQL1NJTUQgKi8K Kwltc3IJY3BhY3JfZWwxLCB4MAorCWIJZG9uZQorCitkb25lOgorCXJldAorCitFTkRQUk9DKGFy bV9jcHVfbG93bGV2ZWxfaW5pdCkKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvY3B1L21tdS1lYXJs eS5oIGIvYXJjaC9hcm02NC9jcHUvbW11LWVhcmx5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uYWYyMWY1MgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvY3B1L21t dS1lYXJseS5oCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfX0FSTV9DUFVfTU1VX0VBUkxZX0gK KyNkZWZpbmUgX19BUk1fQ1BVX01NVV9FQVJMWV9ICisKK3ZvaWQgbW11X2Vhcmx5X2VuYWJsZSh1 aW50MzJfdCBtZW1iYXNlLCB1aW50MzJfdCBtZW1zaXplLCB1aW50MzJfdCB0dGIpOworCisjZW5k aWYgLyogX19BUk1fQ1BVX01NVV9FQVJMWV9IICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Nw dS9tbXUuaCBiL2FyY2gvYXJtNjQvY3B1L21tdS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjc5ZWJjODAKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2NwdS9tbXUu aApAQCAtMCwwICsxLDE0IEBACisjaWZuZGVmIF9fQVJNX01NVV9ICisjZGVmaW5lIF9fQVJNX01N VV9ICisKKyNpZmRlZiBDT05GSUdfTU1VCit2b2lkIF9fbW11X2NhY2hlX29uKHZvaWQpOwordm9p ZCBfX21tdV9jYWNoZV9vZmYodm9pZCk7Cit2b2lkIF9fbW11X2NhY2hlX2ZsdXNoKHZvaWQpOwor I2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX21tdV9jYWNoZV9vbih2b2lkKSB7fQorc3RhdGlj IGlubGluZSB2b2lkIF9fbW11X2NhY2hlX29mZih2b2lkKSB7fQorc3RhdGljIGlubGluZSB2b2lk IF9fbW11X2NhY2hlX2ZsdXNoKHZvaWQpIHt9CisjZW5kaWYKKworI2VuZGlmIC8qIF9fQVJNX01N VV9IICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2NwdS9tbXVpbmZvLmMgYi9hcmNoL2FybTY0 L2NwdS9tbXVpbmZvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdlYzc2 YwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvY3B1L21tdWluZm8uYwpAQCAtMCwwICsx LDEwNCBAQAorLyoKKyAqIG1tdWluZm8uYyAtIFNob3cgTU1VL2NhY2hlIGluZm9ybWF0aW9uIGZy b20gY3AxNSByZWdpc3RlcnMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIEphbiBMdWViYmUgPGoubHVl YmJlQHBlbmd1dHJvbml4LmRlPiwgUGVuZ3V0cm9uaXgKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRT IGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4K KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICov CisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxjb21tYW5kLmg+CisKK3N0YXRpYyBj aGFyICppbm5lcl9hdHRyW10gPSB7CisJIjBiMDAwIE5vbi1jYWNoZWFibGUiLAorCSIwYjAwMSBT dHJvbmdseS1vcmRlcmVkIiwKKwkiMGIwMTAgKHJlc2VydmVkKSIsCisJIjBiMDExIERldmljZSIs CisJIjBiMTAwIChyZXNlcnZlZCkiLAorCSIwYjEwMSBXcml0ZS1CYWNrLCBXcml0ZS1BbGxvY2F0 ZSIsCisJIjBiMTEwIFdyaXRlLVRocm91Z2giLAorCSIwYjExMSBXcml0ZS1CYWNrLCBubyBXcml0 ZS1BbGxvY2F0ZSIsCit9OworCitzdGF0aWMgY2hhciAqb3V0ZXJfYXR0cltdID0geworCSIwYjAw IE5vbi1jYWNoZWFibGUiLAorCSIwYjAxIFdyaXRlLUJhY2ssIFdyaXRlLUFsbG9jYXRlIiwKKwki MGIxMCBXcml0ZS1UaHJvdWdoLCBubyBXcml0ZS1BbGxvY2F0ZSIsCisJIjBiMTEgV3JpdGUtQmFj aywgbm8gV3JpdGUtQWxsb2NhdGUiLAorfTsKKworc3RhdGljIHZvaWQgZGVjb2RlX3Bhcih1bnNp Z25lZCBsb25nIHBhcikKK3sKKwlwcmludGYoIiAgUGh5c2ljYWwgQWRkcmVzcyBbMzE6MTJdOiAw eCUwOGx4XG4iLCBwYXIgJiAweEZGRkZGMDAwKTsKKwlwcmludGYoIiAgUmVzZXJ2ZWQgWzExXTog ICAgICAgICAgICAweCVseFxuIiwgKHBhciA+PiAxMSkgJiAweDEpOworCXByaW50ZigiICBOb3Qg T3V0ZXIgU2hhcmVhYmxlIFsxMF06IDB4JWx4XG4iLCAocGFyID4+IDEwKSAmIDB4MSk7CisJcHJp bnRmKCIgIE5vbi1TZWN1cmUgWzldOiAgICAgICAgICAgMHglbHhcbiIsIChwYXIgPj4gOSkgJiAw eDEpOworCXByaW50ZigiICBJbXBsLiBkZWYuIFs4XTogICAgICAgICAgIDB4JWx4XG4iLCAocGFy ID4+IDgpICYgMHgxKTsKKwlwcmludGYoIiAgU2hhcmVhYmxlIFs3XTogICAgICAgICAgICAweCVs eFxuIiwgKHBhciA+PiA3KSAmIDB4MSk7CisJcHJpbnRmKCIgIElubmVyIG1lbS4gYXR0ci4gWzY6 NF06ICAgMHglbHggKCVzKVxuIiwgKHBhciA+PiA0KSAmIDB4NywKKwkJaW5uZXJfYXR0clsocGFy ID4+IDQpICYgMHg3XSk7CisJcHJpbnRmKCIgIE91dGVyIG1lbS4gYXR0ci4gWzM6Ml06ICAgMHgl bHggKCVzKVxuIiwgKHBhciA+PiAyKSAmIDB4MywKKwkJb3V0ZXJfYXR0clsocGFyID4+IDIpICYg MHgzXSk7CisJcHJpbnRmKCIgIFN1cGVyU2VjdGlvbiBbMV06ICAgICAgICAgMHglbHhcbiIsIChw YXIgPj4gMSkgJiAweDEpOworCXByaW50ZigiICBGYWlsdXJlIFswXTogICAgICAgICAgICAgIDB4 JWx4XG4iLCAocGFyID4+IDApICYgMHgxKTsKK30KKworc3RhdGljIGludCBkb19tbXVpbmZvKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJdW5zaWduZWQgbG9uZyBhZGRyID0gMCwgcHJpdl9y ZWFkLCBwcml2X3dyaXRlOworCisJaWYgKGFyZ2MgPCAyKQorCQlyZXR1cm4gQ09NTUFORF9FUlJP Ul9VU0FHRTsKKworCWFkZHIgPSBzdHJ0b3VsX3N1ZmZpeChhcmd2WzFdLCBOVUxMLCAwKTsKKwor CV9fYXNtX18gX192b2xhdGlsZV9fKAorCQkibWNyICAgIHAxNSwgMCwgJTAsIGM3LCBjOCwgMCAg IEAgd3JpdGUgVkEgdG8gUEEgdHJhbnNsYXRpb24gKHByaXYgcmVhZClcbiIKKwkJOgorCQk6ICJy IiAoYWRkcikKKwkJOiAibWVtb3J5Iik7CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKwkJIm1y YyAgICBwMTUsIDAsICUwLCBjNywgYzQsIDAgICBAIHJlYWQgUEFSXG4iCisJCTogIj1yIiAocHJp dl9yZWFkKQorCQk6CisJCTogIm1lbW9yeSIpOworCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCisJ CSJtY3IgICAgcDE1LCAwLCAlMCwgYzcsIGM4LCAxICAgQCB3cml0ZSBWQSB0byBQQSB0cmFuc2xh dGlvbiAocHJpdiB3cml0ZSlcbiIKKwkJOgorCQk6ICJyIiAoYWRkcikKKwkJOiAibWVtb3J5Iik7 CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKwkJIm1yYyAgICBwMTUsIDAsICUwLCBjNywgYzQs IDAgICBAIHJlYWQgUEFSXG4iCisJCTogIj1yIiAocHJpdl93cml0ZSkKKwkJOgorCQk6ICJtZW1v cnkiKTsKKworCXByaW50ZigiUEFSIHJlc3VsdCBmb3IgMHglMDhseDogXG4iLCBhZGRyKTsKKwlw cmludGYoIiBwcml2aWxlZ2VkIHJlYWQ6IDB4JTA4bHhcbiIsIHByaXZfcmVhZCk7CisJZGVjb2Rl X3Bhcihwcml2X3JlYWQpOworCXByaW50ZigiIHByaXZpbGVnZWQgd3JpdGU6IDB4JTA4bHhcbiIs IHByaXZfd3JpdGUpOworCWRlY29kZV9wYXIocHJpdl93cml0ZSk7CisKKwlyZXR1cm4gMDsKK30K KworQkFSRUJPWF9DTURfU1RBUlQobW11aW5mbykKKwkuY21kICAgICAgICAgICAgPSBkb19tbXVp bmZvLAorCUJBUkVCT1hfQ01EX0RFU0MoInNob3cgTU1VL2NhY2hlIGluZm9ybWF0aW9uIG9mIGFu IGFkZHJlc3MiKQorCUJBUkVCT1hfQ01EX09QVFMoIkFERFJFU1MiKQorCUJBUkVCT1hfQ01EX0dS T1VQKENNRF9HUlBfSU5GTykKK0JBUkVCT1hfQ01EX0VORApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02 NC9jcHUvc3RhcnQtcGJsLmMgYi9hcmNoL2FybTY0L2NwdS9zdGFydC1wYmwuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzIzZWRjCi0tLSAvZGV2L251bGwKKysrIGIvYXJj aC9hcm02NC9jcHUvc3RhcnQtcGJsLmMKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBzdGFydC1w YmwuYworICoKKyAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEyIFNhc2NoYSBIYXVlciA8cy5oYXVl ckBwZW5ndXRyb25peC5kZT4sIFBlbmd1dHJvbml4CisgKiBDb3B5cmlnaHQgKGMpIDIwMTIgSmVh bi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KKyAq CisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQg dG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAqIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgKgorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxp bml0Lmg+CisjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4KKyNpbmNsdWRlIDxwYmwuaD4KKyNpbmNs dWRlIDxhc20vYmFyZWJveC1hcm0uaD4KKyNpbmNsdWRlIDxhc20vYmFyZWJveC1hcm0taGVhZC5o PgorI2luY2x1ZGUgPGFzbS1nZW5lcmljL21lbW9yeV9sYXlvdXQuaD4KKyNpbmNsdWRlIDxhc20v c2VjdGlvbnMuaD4KKyNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgorI2luY2x1ZGUgPGFzbS9jYWNo ZS5oPgorCisjaW5jbHVkZSAibW11LWVhcmx5LmgiCisKK3Vuc2lnbmVkIGxvbmcgZnJlZV9tZW1f cHRyOwordW5zaWduZWQgbG9uZyBmcmVlX21lbV9lbmRfcHRyOworCisvKgorICogRmlyc3QgaW5z dHJ1Y3Rpb25zIGluIHRoZSBwYmwgaW1hZ2UKKyAqLwordm9pZCBfX25ha2VkIF9fc2VjdGlvbigu dGV4dF9oZWFkX2VudHJ5KSBwYmxfc3RhcnQodm9pZCkKK3sKKwliYXJlYm94X2FybV9oZWFkKCk7 Cit9CisKK2V4dGVybiB2b2lkICppbnB1dF9kYXRhOworZXh0ZXJuIHZvaWQgKmlucHV0X2RhdGFf ZW5kOworCitfX25vcmV0dXJuIHZvaWQgYmFyZWJveF9zaW5nbGVfcGJsX3N0YXJ0KHVuc2lnbmVk IGxvbmcgbWVtYmFzZSwKKwkJdW5zaWduZWQgbG9uZyBtZW1zaXplLCB2b2lkICpib2FyZGRhdGEp Cit7CisJdWludDMyX3Qgb2Zmc2V0OworCXVpbnQzMl90IHBnX3N0YXJ0LCBwZ19lbmQsIHBnX2xl bjsKKwl2b2lkIF9fbm9yZXR1cm4gKCpiYXJlYm94KSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs b25nLCB2b2lkICopOworCXVpbnQzMl90IGVuZG1lbSA9IG1lbWJhc2UgKyBtZW1zaXplOworCXVu c2lnbmVkIGxvbmcgYmFyZWJveF9iYXNlOworCisJaWYgKElTX0VOQUJMRUQoQ09ORklHX1BCTF9S RUxPQ0FUQUJMRSkpCisJCXJlbG9jYXRlX3RvX2N1cnJlbnRfYWRyKCk7CisKKwkvKiBHZXQgb2Zm c2V0IGJldHdlZW4gbGlua2VkIGFkZHJlc3MgYW5kIHJ1bnRpbWUgYWRkcmVzcyAqLworCW9mZnNl dCA9IGdldF9ydW50aW1lX29mZnNldCgpOworCisJcGdfc3RhcnQgPSAodWludDMyX3QpJmlucHV0 X2RhdGEgLSBvZmZzZXQ7CisJcGdfZW5kID0gKHVpbnQzMl90KSZpbnB1dF9kYXRhX2VuZCAtIG9m ZnNldDsKKwlwZ19sZW4gPSBwZ19lbmQgLSBwZ19zdGFydDsKKworCWlmIChJU19FTkFCTEVEKENP TkZJR19SRUxPQ0FUQUJMRSkpCisJCWJhcmVib3hfYmFzZSA9IGFybV9tZW1fYmFyZWJveF9pbWFn ZShtZW1iYXNlLCBlbmRtZW0sIHBnX2xlbik7CisJZWxzZQorCQliYXJlYm94X2Jhc2UgPSBURVhU X0JBU0U7CisKKwlpZiAob2Zmc2V0ICYmIChJU19FTkFCTEVEKENPTkZJR19QQkxfRk9SQ0VfUElH R1lEQVRBX0NPUFkpIHx8CisJCQkJcmVnaW9uX292ZXJsYXAocGdfc3RhcnQsIHBnX2xlbiwgYmFy ZWJveF9iYXNlLCBwZ19sZW4gKiA0KSkpIHsKKwkJLyoKKwkJICogY29weSBwaWdneWRhdGEgYmlu YXJ5IHRvIGl0cyBsaW5rIGFkZHJlc3MKKwkJICovCisJCW1lbWNweSgmaW5wdXRfZGF0YSwgKHZv aWQgKilwZ19zdGFydCwgcGdfbGVuKTsKKwkJcGdfc3RhcnQgPSAodWludDMyX3QpJmlucHV0X2Rh dGE7CisJfQorCisJc2V0dXBfYygpOworCisJaWYgKElTX0VOQUJMRUQoQ09ORklHX01NVV9FQVJM WSkpIHsKKwkJdW5zaWduZWQgbG9uZyB0dGIgPSBhcm1fbWVtX3R0YihtZW1iYXNlLCBlbmRtZW0p OworCQltbXVfZWFybHlfZW5hYmxlKG1lbWJhc2UsIG1lbXNpemUsIHR0Yik7CisJfQorCisJZnJl ZV9tZW1fcHRyID0gYXJtX21lbV9lYXJseV9tYWxsb2MobWVtYmFzZSwgZW5kbWVtKTsKKwlmcmVl X21lbV9lbmRfcHRyID0gYXJtX21lbV9lYXJseV9tYWxsb2NfZW5kKG1lbWJhc2UsIGVuZG1lbSk7 CisKKwlwYmxfYmFyZWJveF91bmNvbXByZXNzKCh2b2lkKiliYXJlYm94X2Jhc2UsICh2b2lkICop cGdfc3RhcnQsIHBnX2xlbik7CisKKwlhcm1fZWFybHlfbW11X2NhY2hlX2ZsdXNoKCk7CisJZmx1 c2hfaWNhY2hlKCk7CisKKwlpZiAoSVNfRU5BQkxFRChDT05GSUdfVEhVTUIyX0JBUkVCT1gpKQor CQliYXJlYm94ID0gKHZvaWQgKikoYmFyZWJveF9iYXNlICsgMSk7CisJZWxzZQorCQliYXJlYm94 ID0gKHZvaWQgKiliYXJlYm94X2Jhc2U7CisKKwliYXJlYm94KG1lbWJhc2UsIG1lbXNpemUsIGJv YXJkZGF0YSk7Cit9CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2NwdS9zdGFydC5jIGIvYXJjaC9h cm02NC9jcHUvc3RhcnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGE0 OGUzCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9jcHUvc3RhcnQuYwpAQCAtMCwwICsx LDI0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJA cGVuZ3V0cm9uaXguZGU+LCBQZW5ndXRyb25peAorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9y IGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoK KyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICog R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKi8KKyNk ZWZpbmUgcHJfZm10KGZtdCkgInN0YXJ0LmM6ICIgZm10CisKKyNpbmNsdWRlIDxjb21tb24uaD4K KyNpbmNsdWRlIDxpbml0Lmg+CisjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4KKyNpbmNsdWRlIDxv Zi5oPgorI2luY2x1ZGUgPGFzbS9iYXJlYm94LWFybS5oPgorI2luY2x1ZGUgPGFzbS9iYXJlYm94 LWFybS1oZWFkLmg+CisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvbWVtb3J5X2xheW91dC5oPgorI2lu Y2x1ZGUgPGFzbS9zZWN0aW9ucy5oPgorI2luY2x1ZGUgPGFzbS91bmFsaWduZWQuaD4KKyNpbmNs dWRlIDxhc20vY2FjaGUuaD4KKyNpbmNsdWRlIDxtZW1vcnkuaD4KKyNpbmNsdWRlIDx1bmNvbXBy ZXNzLmg+CisjaW5jbHVkZSA8bWFsbG9jLmg+CisKKyNpbmNsdWRlIDxkZWJ1Z19sbC5oPgorI2lu Y2x1ZGUgIm1tdS1lYXJseS5oIgorCit1bnNpZ25lZCBsb25nIGFybV9zdGFja190b3A7CitzdGF0 aWMgdW5zaWduZWQgbG9uZyBhcm1faGVhZF9ib3R0b207CitzdGF0aWMgdW5zaWduZWQgbG9uZyBh cm1fYmFyZWJveF9zaXplOworc3RhdGljIHZvaWQgKmJhcmVib3hfYm9hcmRkYXRhOworCitzdGF0 aWMgYm9vbCBibG9iX2lzX2ZkdChjb25zdCB2b2lkICpibG9iKQoreworCXJldHVybiBnZXRfdW5h bGlnbmVkX2JlMzIoYmxvYikgPT0gRkRUX01BR0lDOworfQorCitzdGF0aWMgYm9vbCBibG9iX2lz X2NvbXByZXNzZWRfZmR0KGNvbnN0IHZvaWQgKmJsb2IpCit7CisJY29uc3Qgc3RydWN0IGJhcmVi b3hfYXJtX2JvYXJkZGF0YV9jb21wcmVzc2VkX2R0YiAqZHRiID0gYmxvYjsKKworCXJldHVybiBk dGItPm1hZ2ljID09IEJBUkVCT1hfQVJNX0JPQVJEREFUQV9DT01QUkVTU0VEX0RUQl9NQUdJQzsK K30KKworc3RhdGljIGJvb2wgYmxvYl9pc19hcm1fYm9hcmRkYXRhKGNvbnN0IHZvaWQgKmJsb2Ip Cit7CisJY29uc3Qgc3RydWN0IGJhcmVib3hfYXJtX2JvYXJkZGF0YSAqYmQgPSBibG9iOworCisJ cmV0dXJuIGJkLT5tYWdpYyA9PSBCQVJFQk9YX0FSTV9CT0FSRERBVEFfTUFHSUM7Cit9CisKK3Uz MiBiYXJlYm94X2FybV9tYWNoaW5lKHZvaWQpCit7CisJaWYgKGJhcmVib3hfYm9hcmRkYXRhICYm IGJsb2JfaXNfYXJtX2JvYXJkZGF0YShiYXJlYm94X2JvYXJkZGF0YSkpIHsKKwkJY29uc3Qgc3Ry dWN0IGJhcmVib3hfYXJtX2JvYXJkZGF0YSAqYmQgPSBiYXJlYm94X2JvYXJkZGF0YTsKKwkJcmV0 dXJuIGJkLT5tYWNoaW5lOworCX0gZWxzZSB7CisJCXJldHVybiAwOworCX0KK30KKwordm9pZCAq YmFyZWJveF9hcm1fYm9vdF9kdGIodm9pZCkKK3sKKwl2b2lkICpkdGI7CisJdm9pZCAqZGF0YTsK KwlpbnQgcmV0OworCXN0cnVjdCBiYXJlYm94X2FybV9ib2FyZGRhdGFfY29tcHJlc3NlZF9kdGIg KmNvbXByZXNzZWRfZHRiOworCisJaWYgKGJhcmVib3hfYm9hcmRkYXRhICYmIGJsb2JfaXNfZmR0 KGJhcmVib3hfYm9hcmRkYXRhKSkgeworCQlwcl9kZWJ1ZygiJXM6IHVzaW5nIGJhcmVib3hfYm9h cmRkYXRhXG4iLCBfX2Z1bmNfXyk7CisJCXJldHVybiBiYXJlYm94X2JvYXJkZGF0YTsKKwl9CisK KwlpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0FSTV9VU0VfQ09NUFJFU1NFRF9EVEIpIHx8ICFiYXJl Ym94X2JvYXJkZGF0YQorCQkJfHwgIWJsb2JfaXNfY29tcHJlc3NlZF9mZHQoYmFyZWJveF9ib2Fy ZGRhdGEpKQorCQlyZXR1cm4gTlVMTDsKKworCWNvbXByZXNzZWRfZHRiID0gYmFyZWJveF9ib2Fy ZGRhdGE7CisKKwlwcl9kZWJ1ZygiJXM6IHVzaW5nIGNvbXByZXNzZWRfZHRiXG4iLCBfX2Z1bmNf Xyk7CisKKwlkdGIgPSBtYWxsb2MoY29tcHJlc3NlZF9kdGItPmRhdGFsZW5fdW5jb21wcmVzc2Vk KTsKKwlpZiAoIWR0YikKKwkJcmV0dXJuIE5VTEw7CisKKwlkYXRhID0gY29tcHJlc3NlZF9kdGIg KyAxOworCisJcmV0ID0gdW5jb21wcmVzcyhkYXRhLCBjb21wcmVzc2VkX2R0Yi0+ZGF0YWxlbiwg TlVMTCwgTlVMTCwKKwkJCWR0YiwgTlVMTCwgTlVMTCk7CisJaWYgKHJldCkgeworCQlwcl9lcnIo InVuY29tcHJlc3NpbmcgZHRiIGZhaWxlZFxuIik7CisJCWZyZWUoZHRiKTsKKwkJcmV0dXJuIE5V TEw7CisJfQorCisJYmFyZWJveF9ib2FyZGRhdGEgPSBkdGI7CisKKwlyZXR1cm4gYmFyZWJveF9i b2FyZGRhdGE7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBhcm1fbWVtX2JvYXJk ZGF0YSh1bnNpZ25lZCBsb25nIG1lbWJhc2UsCisJCQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgZW5k bWVtLAorCQkJCQkgICAgICB1bnNpZ25lZCBsb25nIHNpemUpCit7CisJdW5zaWduZWQgbG9uZyBt ZW07CisKKwltZW0gPSBhcm1fbWVtX2JhcmVib3hfaW1hZ2UobWVtYmFzZSwgZW5kbWVtLCBiYXJl Ym94X2ltYWdlX3NpemUpOworCW1lbSAtPSBBTElHTihzaXplLCA2NCk7CisKKwlyZXR1cm4gbWVt OworfQorCit1bnNpZ25lZCBsb25nIGFybV9tZW1fcmFtb29wc19nZXQodm9pZCkKK3sKKwlyZXR1 cm4gYXJtX21lbV9yYW1vb3BzKDAsIGFybV9zdGFja190b3ApOworfQorRVhQT1JUX1NZTUJPTF9H UEwoYXJtX21lbV9yYW1vb3BzX2dldCk7CisKK3N0YXRpYyBpbnQgYmFyZWJveF9tZW1vcnlfYXJl YXNfaW5pdCh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSBhcm1faGVhZF9ib3R0b207 CisJdW5zaWduZWQgbG9uZyBzaXplID0gYXJtX21lbV9iYXJlYm94X2ltYWdlKDAsIGFybV9zdGFj a190b3AsCisJCQkJCQkgICBhcm1fYmFyZWJveF9zaXplKSAtCisJCQkgICAgIGFybV9oZWFkX2Jv dHRvbTsKKwlyZXF1ZXN0X3NkcmFtX3JlZ2lvbigiYm9hcmQgZGF0YSIsIHN0YXJ0LCBzaXplKTsK KworCXJldHVybiAwOworfQorZGV2aWNlX2luaXRjYWxsKGJhcmVib3hfbWVtb3J5X2FyZWFzX2lu aXQpOworCitfX25vcmV0dXJuIHZvaWQgYmFyZWJveF9ub25fcGJsX3N0YXJ0KHVuc2lnbmVkIGxv bmcgbWVtYmFzZSwKKwkJdW5zaWduZWQgbG9uZyBtZW1zaXplLCB2b2lkICpib2FyZGRhdGEpCit7 CisJdW5zaWduZWQgbG9uZyBlbmRtZW0gPSBtZW1iYXNlICsgbWVtc2l6ZTsKKwl1bnNpZ25lZCBs b25nIG1hbGxvY19zdGFydCwgbWFsbG9jX2VuZDsKKwl1bnNpZ25lZCBsb25nIGJhcmVib3hfc2l6 ZSA9IGJhcmVib3hfaW1hZ2Vfc2l6ZSArCisJCSgodW5zaWduZWQgbG9uZykmX19ic3Nfc3RvcCAt ICh1bnNpZ25lZCBsb25nKSZfX2Jzc19zdGFydCk7CisKKwlpZiAoSVNfRU5BQkxFRChDT05GSUdf UkVMT0NBVEFCTEUpKSB7CisJCXVuc2lnbmVkIGxvbmcgYmFyZWJveF9iYXNlID0gYXJtX21lbV9i YXJlYm94X2ltYWdlKG1lbWJhc2UsCisJCQkJCQkJCSAgIGVuZG1lbSwKKwkJCQkJCQkJICAgYmFy ZWJveF9zaXplKTsKKwkJcmVsb2NhdGVfdG9fYWRyKGJhcmVib3hfYmFzZSk7CisJfQorCisvLwlz ZXR1cF9jKCk7CisKKwliYXJyaWVyKCk7CisKKwlwcl9kZWJ1ZygibWVtb3J5IGF0IDB4JTA4bHgs IHNpemUgMHglMDhseFxuIiwgbWVtYmFzZSwgbWVtc2l6ZSk7CisKKwlhcm1fc3RhY2tfdG9wID0g ZW5kbWVtOworCWFybV9iYXJlYm94X3NpemUgPSBiYXJlYm94X3NpemU7CisJYXJtX2hlYWRfYm90 dG9tID0gYXJtX21lbV9iYXJlYm94X2ltYWdlKG1lbWJhc2UsIGVuZG1lbSwKKwkJCQkJCWFybV9i YXJlYm94X3NpemUpOworCisJaWYgKElTX0VOQUJMRUQoQ09ORklHX01NVV9FQVJMWSkpIHsKKwkJ dW5zaWduZWQgbG9uZyB0dGIgPSBhcm1fbWVtX3R0YihtZW1iYXNlLCBlbmRtZW0pOworCisJCWlm IChJU19FTkFCTEVEKENPTkZJR19QQkxfSU1BR0UpKSB7CisJCQlhcm1fc2V0X2NhY2hlX2Z1bmN0 aW9ucygpOworCQl9IGVsc2UgeworCQkJcHJfZGVidWcoImVuYWJsaW5nIE1NVSwgdHRiIEAgMHgl MDhseFxuIiwgdHRiKTsKKwkJCWFybV9lYXJseV9tbXVfY2FjaGVfaW52YWxpZGF0ZSgpOworCQkJ bW11X2Vhcmx5X2VuYWJsZShtZW1iYXNlLCBtZW1zaXplLCB0dGIpOworCQl9CisJfQorCisJaWYg KGJvYXJkZGF0YSkgeworCQl1aW50MzJfdCB0b3RhbHNpemUgPSAwOworCQljb25zdCBjaGFyICpu YW1lOworCisJCWlmIChibG9iX2lzX2ZkdChib2FyZGRhdGEpKSB7CisJCQl0b3RhbHNpemUgPSBn ZXRfdW5hbGlnbmVkX2JlMzIoYm9hcmRkYXRhICsgNCk7CisJCQluYW1lID0gIkRUQiI7CisJCX0g ZWxzZSBpZiAoYmxvYl9pc19jb21wcmVzc2VkX2ZkdChib2FyZGRhdGEpKSB7CisJCQlzdHJ1Y3Qg YmFyZWJveF9hcm1fYm9hcmRkYXRhX2NvbXByZXNzZWRfZHRiICpiZCA9IGJvYXJkZGF0YTsKKwkJ CXRvdGFsc2l6ZSA9IGJkLT5kYXRhbGVuICsgc2l6ZW9mKCpiZCk7CisJCQluYW1lID0gIkNvbXBy ZXNzZWQgRFRCIjsKKwkJfSBlbHNlIGlmIChibG9iX2lzX2FybV9ib2FyZGRhdGEoYm9hcmRkYXRh KSkgeworCQkJdG90YWxzaXplID0gc2l6ZW9mKHN0cnVjdCBiYXJlYm94X2FybV9ib2FyZGRhdGEp OworCQkJbmFtZSA9ICJtYWNoaW5lIHR5cGUiOworCQl9CisKKwkJaWYgKHRvdGFsc2l6ZSkgewor CQkJdW5zaWduZWQgbG9uZyBtZW0gPSBhcm1fbWVtX2JvYXJkZGF0YShtZW1iYXNlLCBlbmRtZW0s CisJCQkJCQkJICAgICAgdG90YWxzaXplKTsKKwkJCXByX2RlYnVnKCJmb3VuZCAlcyBpbiBib2Fy ZGRhdGEsIGNvcHlpbmcgdG8gMHglbHVcbiIsCisJCQkJIG5hbWUsIG1lbSk7CisJCQliYXJlYm94 X2JvYXJkZGF0YSA9IG1lbWNweSgodm9pZCAqKW1lbSwgYm9hcmRkYXRhLAorCQkJCQkJICAgdG90 YWxzaXplKTsKKwkJCWFybV9oZWFkX2JvdHRvbSA9IG1lbTsKKwkJfQorCX0KKworCW1hbGxvY19l bmQgPSBhcm1faGVhZF9ib3R0b207CisKKwkvKgorCSAqIE1heGltdW0gbWFsbG9jIHNwYWNlIGlz IHRoZSBLY29uZmlnIHZhbHVlIGlmIGdpdmVuCisJICogb3IgMUdCLgorCSAqLworCWlmIChNQUxM T0NfU0laRSA+IDApIHsKKwkJbWFsbG9jX3N0YXJ0ID0gbWFsbG9jX2VuZCAtIE1BTExPQ19TSVpF OworCQlpZiAobWFsbG9jX3N0YXJ0IDwgbWVtYmFzZSkKKwkJCW1hbGxvY19zdGFydCA9IG1lbWJh c2U7CisJfSBlbHNlIHsKKwkJbWFsbG9jX3N0YXJ0ID0gbWFsbG9jX2VuZCAtIChtYWxsb2NfZW5k IC0gbWVtYmFzZSkgLyAyOworCQlpZiAobWFsbG9jX2VuZCAtIG1hbGxvY19zdGFydCA+IFNaXzFH KQorCQkJbWFsbG9jX3N0YXJ0ID0gbWFsbG9jX2VuZCAtIFNaXzFHOworCX0KKworCXByX2RlYnVn KCJpbml0aWFsaXppbmcgbWFsbG9jIHBvb2wgYXQgMHglMDhseCAoc2l6ZSAweCUwOGx4KVxuIiwK KwkJCW1hbGxvY19zdGFydCwgbWFsbG9jX2VuZCAtIG1hbGxvY19zdGFydCk7CisKKwltZW1fbWFs bG9jX2luaXQoKHZvaWQgKiltYWxsb2Nfc3RhcnQsICh2b2lkICopbWFsbG9jX2VuZCAtIDEpOwor CisJcHJfZGVidWcoInN0YXJ0aW5nIGJhcmVib3guLi5cbiIpOworCisJc3RhcnRfYmFyZWJveCgp OworfQorCisjaWZuZGVmIENPTkZJR19QQkxfSU1BR0UKKwordm9pZCBfX3NlY3Rpb24oLnRleHRf ZW50cnkpIHN0YXJ0KHZvaWQpCit7CisJYmFyZWJveF9hcm1faGVhZCgpOworfQorCisjZWxzZQor LyoKKyAqIEZpcnN0IGZ1bmN0aW9uIGluIHRoZSB1bmNvbXByZXNzZWQgaW1hZ2UuIFdlIGdldCBo ZXJlIGZyb20KKyAqIHRoZSBwYmwuIFRoZSBzdGFjayBhbHJlYWR5IGhhcyBiZWVuIHNldCB1cCBi eSB0aGUgcGJsLgorICovCit2b2lkIF9fc2VjdGlvbigudGV4dF9lbnRyeSkgc3RhcnQodW5zaWdu ZWQgbG9uZyBtZW1iYXNlLAorCQl1bnNpZ25lZCBsb25nIG1lbXNpemUsIHZvaWQgKmJvYXJkZGF0 YSkKK3sKKwliYXJlYm94X25vbl9wYmxfc3RhcnQobWVtYmFzZSwgbWVtc2l6ZSwgYm9hcmRkYXRh KTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9jcHUvdW5jb21wcmVzcy5jIGIv YXJjaC9hcm02NC9jcHUvdW5jb21wcmVzcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjViY2NlNmIKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2NwdS91bmNvbXBy ZXNzLmMKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiB1bmNvbXByZXNzLmMgLSB1bmNvbXByZXNz b3IgY29kZSBmb3Igc2VsZiBleHRyYWNpbmcgcGJsIGltYWdlCisgKgorICogQ29weXJpZ2h0IChj KSAyMDEwLTIwMTMgU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPiwgUGVuZ3V0 cm9uaXgKKyAqIENvcHlyaWdodCAoYykgMjAxMiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklM TEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9y IGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoK KyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICog R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKi8KKyNk ZWZpbmUgcHJfZm10KGZtdCkgInVuY29tcHJlc3MuYzogIiBmbXQKKworI2luY2x1ZGUgPGNvbW1v bi5oPgorI2luY2x1ZGUgPGluaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9zaXplcy5oPgorI2luY2x1 ZGUgPHBibC5oPgorI2luY2x1ZGUgPGFzbS9iYXJlYm94LWFybS5oPgorI2luY2x1ZGUgPGFzbS9i YXJlYm94LWFybS1oZWFkLmg+CisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvbWVtb3J5X2xheW91dC5o PgorI2luY2x1ZGUgPGFzbS9zZWN0aW9ucy5oPgorI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLmg+Cisj aW5jbHVkZSA8YXNtL2NhY2hlLmg+CisKKyNpbmNsdWRlIDxkZWJ1Z19sbC5oPgorCisjaW5jbHVk ZSAibW11LWVhcmx5LmgiCisKK3Vuc2lnbmVkIGxvbmcgZnJlZV9tZW1fcHRyOwordW5zaWduZWQg bG9uZyBmcmVlX21lbV9lbmRfcHRyOworCitzdGF0aWMgaW50IF9fYXR0cmlidXRlX18oKF9fdXNl ZF9fKSkKKwlfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmltYWdlX2VuZCIpKSkKKwlfX2lt YWdlX2VuZF9kdW1teSA9IDB4ZGVhZGJlZWY7CisKK3ZvaWQgX19ub3JldHVybiBiYXJlYm94X211 bHRpX3BibF9zdGFydCh1bnNpZ25lZCBsb25nIG1lbWJhc2UsCisJCXVuc2lnbmVkIGxvbmcgbWVt c2l6ZSwgdm9pZCAqYm9hcmRkYXRhKQoreworCXVpbnQzMl90IHBnX2xlbjsKKwl2b2lkIF9fbm9y ZXR1cm4gKCpiYXJlYm94KSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwor CXVpbnQzMl90IGVuZG1lbSA9IG1lbWJhc2UgKyBtZW1zaXplOworCXVuc2lnbmVkIGxvbmcgYmFy ZWJveF9iYXNlOworCXVpbnQzMl90ICppbWFnZV9lbmQ7CisJdm9pZCAqcGdfc3RhcnQ7CisJdW5z aWduZWQgbG9uZyBwYyA9IGdldF9wYygpOworCisJaW1hZ2VfZW5kID0gKHZvaWQgKilsZF92YXIo X19pbWFnZV9lbmQpIC0gZ2V0X3J1bnRpbWVfb2Zmc2V0KCk7CisKKwlpZiAoSVNfRU5BQkxFRChD T05GSUdfUEJMX1JFTE9DQVRBQkxFKSkgeworCQkvKgorCQkgKiBJZiB3ZSBydW4gZnJvbSBpbnNp ZGUgdGhlIG1lbW9yeSBqdXN0IHJlbG9jYXRlIHRoZSBiaW5hcnkKKwkJICogdG8gdGhlIGN1cnJl bnQgYWRkcmVzcy4gT3RoZXJ3aXNlIGl0IG1heSBiZSBhIHJlYWRvbmx5IGxvY2F0aW9uLgorCQkg KiBDb3B5IGFuZCByZWxvY2F0ZSB0byB0aGUgc3RhcnQgb2YgdGhlIG1lbW9yeSBpbiB0aGlzIGNh c2UuCisJCSAqLworCQlpZiAocGMgPiBtZW1iYXNlICYmIHBjIDwgbWVtYmFzZSArIG1lbXNpemUp CisJCQlyZWxvY2F0ZV90b19jdXJyZW50X2FkcigpOworCQllbHNlCisJCQlyZWxvY2F0ZV90b19h ZHIobWVtYmFzZSk7CisJfQorCisJLyoKKwkgKiBpbWFnZV9lbmQgaXMgdGhlIGZpcnN0IGxvY2F0 aW9uIGFmdGVyIHRoZSBleGVjdXRhYmxlLiBJdCBjb250YWlucworCSAqIHRoZSBzaXplIG9mIHRo ZSBhcHBlbmRlZCBjb21wcmVzc2VkIGJpbmFyeSBmb2xsb3dlZCBieSB0aGUgYmluYXJ5LgorCSAq LworCXBnX3N0YXJ0ID0gaW1hZ2VfZW5kICsgMTsKKwlwZ19sZW4gPSAqKGltYWdlX2VuZCk7CisK KwlpZiAoSVNfRU5BQkxFRChDT05GSUdfUkVMT0NBVEFCTEUpKQorCQliYXJlYm94X2Jhc2UgPSBh cm1fbWVtX2JhcmVib3hfaW1hZ2UobWVtYmFzZSwgZW5kbWVtLAorCQkJCQkJICAgICBwZ19sZW4p OworCWVsc2UKKwkJYmFyZWJveF9iYXNlID0gVEVYVF9CQVNFOworCisJc2V0dXBfYygpOworCisJ cHJfZGVidWcoIm1lbW9yeSBhdCAweCUwOGx4LCBzaXplIDB4JTA4bHhcbiIsIG1lbWJhc2UsIG1l bXNpemUpOworCisJaWYgKElTX0VOQUJMRUQoQ09ORklHX01NVV9FQVJMWSkpIHsKKwkJdW5zaWdu ZWQgbG9uZyB0dGIgPSBhcm1fbWVtX3R0YihtZW1iYXNlLCBlbmRtZW0pOworCQlwcl9kZWJ1Zygi ZW5hYmxpbmcgTU1VLCB0dGIgQCAweCUwOGx4XG4iLCB0dGIpOworCQltbXVfZWFybHlfZW5hYmxl KG1lbWJhc2UsIG1lbXNpemUsIHR0Yik7CisJfQorCisJZnJlZV9tZW1fcHRyID0gYXJtX21lbV9l YXJseV9tYWxsb2MobWVtYmFzZSwgZW5kbWVtKTsKKwlmcmVlX21lbV9lbmRfcHRyID0gYXJtX21l bV9lYXJseV9tYWxsb2NfZW5kKG1lbWJhc2UsIGVuZG1lbSk7CisKKwlwcl9kZWJ1ZygidW5jb21w cmVzc2luZyBiYXJlYm94IGJpbmFyeSBhdCAweCVwIChzaXplIDB4JTA4eCkgdG8gMHglMDhseFxu IiwKKwkJCXBnX3N0YXJ0LCBwZ19sZW4sIGJhcmVib3hfYmFzZSk7CisKKwlwYmxfYmFyZWJveF91 bmNvbXByZXNzKCh2b2lkKiliYXJlYm94X2Jhc2UsIHBnX3N0YXJ0LCBwZ19sZW4pOworCisJYXJt X2Vhcmx5X21tdV9jYWNoZV9mbHVzaCgpOworCWZsdXNoX2ljYWNoZSgpOworCisJaWYgKElTX0VO QUJMRUQoQ09ORklHX1RIVU1CMl9CQVJFQk9YKSkKKwkJYmFyZWJveCA9ICh2b2lkICopKGJhcmVi b3hfYmFzZSArIDEpOworCWVsc2UKKwkJYmFyZWJveCA9ICh2b2lkICopYmFyZWJveF9iYXNlOwor CisJcHJfZGVidWcoImp1bXBpbmcgdG8gdW5jb21wcmVzc2VkIGltYWdlIGF0IDB4JXBcbiIsIGJh cmVib3gpOworCisJYmFyZWJveChtZW1iYXNlLCBtZW1zaXplLCBib2FyZGRhdGEpOworfQpkaWZm IC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9hcm1saW51eC5oIGIvYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9hcm1saW51eC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjA3NDc5ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2FybWxp bnV4LmgKQEAgLTAsMCArMSw0MyBAQAorI2lmbmRlZiBfX0FSQ0hfQVJNTElOVVhfSAorI2RlZmlu ZSBfX0FSQ0hfQVJNTElOVVhfSAorCisjaW5jbHVkZSA8YXNtL21lbW9yeS5oPgorI2luY2x1ZGUg PGFzbS9zZXR1cC5oPgorCisjaWYgZGVmaW5lZCBDT05GSUdfQVJNX0xJTlVYCit2b2lkIGFybWxp bnV4X3NldF9ib290cGFyYW1zKHZvaWQgKnBhcmFtcyk7Cit2b2lkIGFybWxpbnV4X3NldF9hcmNo aXRlY3R1cmUoaW50IGFyY2hpdGVjdHVyZSk7Cit2b2lkIGFybWxpbnV4X3NldF9yZXZpc2lvbih1 bnNpZ25lZCBpbnQpOwordm9pZCBhcm1saW51eF9zZXRfc2VyaWFsKHU2NCk7CisjZWxzZQorc3Rh dGljIGlubGluZSB2b2lkIGFybWxpbnV4X3NldF9ib290cGFyYW1zKHZvaWQgKnBhcmFtcykKK3sK K30KKworc3RhdGljIGlubGluZSB2b2lkIGFybWxpbnV4X3NldF9hcmNoaXRlY3R1cmUoaW50IGFy Y2hpdGVjdHVyZSkKK3sKK30KKworc3RhdGljIGlubGluZSB2b2lkIGFybWxpbnV4X3NldF9yZXZp c2lvbih1bnNpZ25lZCBpbnQgcmV2KQoreworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJtbGlu dXhfc2V0X3NlcmlhbCh1NjQgc2VyaWFsKQoreworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkIENP TkZJR19BUk1fQk9BUkRfQVBQRU5EX0FUQUcKK3ZvaWQgYXJtbGludXhfc2V0X2F0YWdfYXBwZW5k ZXIoc3RydWN0IHRhZyAqKCopKHN0cnVjdCB0YWcgKikpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUg dm9pZCBhcm1saW51eF9zZXRfYXRhZ19hcHBlbmRlcihzdHJ1Y3QgdGFnICooKmZ1bmMpKHN0cnVj dCB0YWcgKikpCit7Cit9CisjZW5kaWYKKworc3RydWN0IGltYWdlX2RhdGE7CisKK3ZvaWQgc3Rh cnRfbGludXgodm9pZCAqYWRyLCBpbnQgc3dhcCwgdW5zaWduZWQgbG9uZyBpbml0cmRfYWRkcmVz cywKKwkJdW5zaWduZWQgbG9uZyBpbml0cmRfc2l6ZSwgdm9pZCAqb2Z0cmVlKTsKKworI2VuZGlm IC8qIF9fQVJDSF9BUk1MSU5VWF9IICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUv YXNtL2Fzc2VtYmxlci5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9hc3NlbWJsZXIuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTE2ZTQ4Ci0tLSAvZGV2L251bGwKKysr IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9hc3NlbWJsZXIuaApAQCAtMCwwICsxLDExNiBAQAor LyoKKyAqICBhcmNoL2FybS9pbmNsdWRlL2FzbS9hc3NlbWJsZXIuaAorICoKKyAqICBDb3B5cmln aHQgKEMpIDE5OTYtMjAwMCBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9u IDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoK KyAqICBUaGlzIGZpbGUgY29udGFpbnMgYXJtIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBkZWZpbmVz CisgKiAgZm9yIHRoZSBkaWZmZXJlbnQgcHJvY2Vzc29ycy4KKyAqCisgKiAgRG8gbm90IGluY2x1 ZGUgYW55IEMgZGVjbGFyYXRpb25zIGluIHRoaXMgZmlsZSAtIGl0IGlzIGluY2x1ZGVkIGJ5Cisg KiAgYXNzZW1ibGVyIHNvdXJjZS4KKyAqLworI2lmbmRlZiBfX0FTU0VNQkxZX18KKyNlcnJvciAi T25seSBpbmNsdWRlIHRoaXMgZnJvbSBhc3NlbWJseSBjb2RlIgorI2VuZGlmCisKKyNpbmNsdWRl IDxhc20vcHRyYWNlLmg+CisKKy8qCisgKiBFbmRpYW4gaW5kZXBlbmRlbnQgbWFjcm9zIGZvciBz aGlmdGluZyBieXRlcyB3aXRoaW4gcmVnaXN0ZXJzLgorICovCisjaWZuZGVmIF9fQVJNRUJfXwor I2RlZmluZSBwdWxsICAgICAgICAgICAgbHNyCisjZGVmaW5lIHB1c2ggICAgICAgICAgICBsc2wK KyNkZWZpbmUgZ2V0X2J5dGVfMCAgICAgIGxzbCAjMAorI2RlZmluZSBnZXRfYnl0ZV8xCWxzciAj OAorI2RlZmluZSBnZXRfYnl0ZV8yCWxzciAjMTYKKyNkZWZpbmUgZ2V0X2J5dGVfMwlsc3IgIzI0 CisjZGVmaW5lIHB1dF9ieXRlXzAgICAgICBsc2wgIzAKKyNkZWZpbmUgcHV0X2J5dGVfMQlsc2wg IzgKKyNkZWZpbmUgcHV0X2J5dGVfMglsc2wgIzE2CisjZGVmaW5lIHB1dF9ieXRlXzMJbHNsICMy NAorI2Vsc2UKKyNkZWZpbmUgcHVsbCAgICAgICAgICAgIGxzbAorI2RlZmluZSBwdXNoICAgICAg ICAgICAgbHNyCisjZGVmaW5lIGdldF9ieXRlXzAJbHNyICMyNAorI2RlZmluZSBnZXRfYnl0ZV8x CWxzciAjMTYKKyNkZWZpbmUgZ2V0X2J5dGVfMglsc3IgIzgKKyNkZWZpbmUgZ2V0X2J5dGVfMyAg ICAgIGxzbCAjMAorI2RlZmluZSBwdXRfYnl0ZV8wCWxzbCAjMjQKKyNkZWZpbmUgcHV0X2J5dGVf MQlsc2wgIzE2CisjZGVmaW5lIHB1dF9ieXRlXzIJbHNsICM4CisjZGVmaW5lIHB1dF9ieXRlXzMg ICAgICBsc2wgIzAKKyNlbmRpZgorCisvKgorICogRGF0YSBwcmVsb2FkIGZvciBhcmNoaXRlY3R1 cmVzIHRoYXQgc3VwcG9ydCBpdAorICovCisjaWYgX19MSU5VWF9BUk1fQVJDSF9fID49IDUKKyNk ZWZpbmUgUExEKGNvZGUuLi4pCWNvZGUKKyNlbHNlCisjZGVmaW5lIFBMRChjb2RlLi4uKQorI2Vu ZGlmCisKKy8qCisgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSBjb2RlIHRvIGNhY2hlbGlu ZSBhbGlnbiB0aGUgZGVzdGluYXRpb24KKyAqIHBvaW50ZXIgd2hlbiBidWxrIHdyaXRpbmcgdG8g bWVtb3J5LiAgRXhwZXJpbWVudHMgb24gU3Ryb25nQVJNIGFuZAorICogWFNjYWxlIGRpZG4ndCBz aG93IHRoaXMgYSB3b3J0aHdoaWxlIHRoaW5nIHRvIGRvIHdoZW4gdGhlIGNhY2hlIGlzIG5vdAor ICogc2V0IHRvIHdyaXRlLWFsbG9jYXRlICh0aGlzIHdvdWxkIG5lZWQgZnVydGhlciB0ZXN0aW5n IG9uIFhTY2FsZSB3aGVuIFdBCisgKiBpcyB1c2VkKS4KKyAqCisgKiBPbiBGZXJvY2VvbiB0aGVy ZSBpcyBtdWNoIHRvIGdhaW4gaG93ZXZlciwgcmVnYXJkbGVzcyBvZiBjYWNoZSBtb2RlLgorICov CisjaWZkZWYgQ09ORklHX0NQVV9GRVJPQ0VPTgorI2RlZmluZSBDQUxHTihjb2RlLi4uKSBjb2Rl CisjZWxzZQorI2RlZmluZSBDQUxHTihjb2RlLi4uKQorI2VuZGlmCisKKy8qCisgKiBFbmFibGUg YW5kIGRpc2FibGUgaW50ZXJydXB0cworICovCisjaWYgX19MSU5VWF9BUk1fQVJDSF9fID49IDYK KwkubWFjcm8JZGlzYWJsZV9pcnEKKwljcHNpZAlpCisJLmVuZG0KKworCS5tYWNybwllbmFibGVf aXJxCisJY3BzaWUJaQorCS5lbmRtCisjZWxzZQorCS5tYWNybwlkaXNhYmxlX2lycQorCW1zcglj cHNyX2MsICNQU1JfSV9CSVQgfCBTVkNfTU9ERQorCS5lbmRtCisKKwkubWFjcm8JZW5hYmxlX2ly cQorCW1zcgljcHNyX2MsICNTVkNfTU9ERQorCS5lbmRtCisjZW5kaWYKKworLyoKKyAqIFNhdmUg dGhlIGN1cnJlbnQgSVJRIHN0YXRlIGFuZCBkaXNhYmxlIElSUXMuICBOb3RlIHRoYXQgdGhpcyBt YWNybworICogYXNzdW1lcyBGSVFzIGFyZSBlbmFibGVkLCBhbmQgdGhhdCB0aGUgcHJvY2Vzc29y IGlzIGluIFNWQyBtb2RlLgorICovCisJLm1hY3JvCXNhdmVfYW5kX2Rpc2FibGVfaXJxcywgb2xk Y3BzcgorCW1ycwlcb2xkY3BzciwgY3BzcgorCWRpc2FibGVfaXJxCisJLmVuZG0KKworLyoKKyAq IFJlc3RvcmUgaW50ZXJydXB0IHN0YXRlIHByZXZpb3VzbHkgc3RvcmVkIGluIGEgcmVnaXN0ZXIu ICBXZSBkb24ndAorICogZ3VhcmFudGVlIHRoYXQgdGhpcyB3aWxsIHByZXNlcnZlIHRoZSBmbGFn cy4KKyAqLworCS5tYWNybwlyZXN0b3JlX2lycXMsIG9sZGNwc3IKKwltc3IJY3Bzcl9jLCBcb2xk Y3BzcgorCS5lbmRtCisKKyNkZWZpbmUgVVNFUih4Li4uKQkJCQlcCis5OTk5Ogl4OwkJCQkJXAor CS5zZWN0aW9uIF9fZXhfdGFibGUsImEiOwkJXAorCS5hbGlnbgkzOwkJCQlcCisJLmxvbmcJOTk5 OWIsOTAwMWY7CQkJXAorCS5wcmV2aW91cwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRl L2FzbS9iYXJlYm94LWFybS1oZWFkLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2JhcmVib3gt YXJtLWhlYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTJlYjZiCi0t LSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9iYXJlYm94LWFybS1oZWFk LmgKQEAgLTAsMCArMSw2NSBAQAorI2lmbmRlZiBfX0FTTV9BUk1fSEVBRF9ICisjZGVmaW5lIF9f QVNNX0FSTV9IRUFEX0gKKworI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KKworI2lmbmRlZiBfX0FT U0VNQkxZX18KKwordm9pZCBhcm1fY3B1X2xvd2xldmVsX2luaXQodm9pZCk7CisKKy8qCisgKiAz MiBieXRlcyBhdCB0aGlzIG9mZnNldCBpcyByZXNlcnZlZCBpbiB0aGUgYmFyZWJveCBoZWFkIGZv ciBib2FyZC9Tb0MKKyAqIHVzYWdlCisgKi8KKyNkZWZpbmUgQVJNX0hFQURfU1BBUkVfT0ZTCTB4 MzAKKyNkZWZpbmUgQVJNX0hFQURfU1BBUkVfTUFSS0VSCTB4NTU1NTU1NTUKKworI2lmZGVmIENP TkZJR19IQVZFX01BQ0hfQVJNX0hFQUQKKyNpbmNsdWRlIDxtYWNoL2JhcmVib3gtYXJtLWhlYWQu aD4KKyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQgX19iYXJlYm94X2FybV9oZWFkKHZvaWQpCit7 CisJX19hc21fXyBfX3ZvbGF0aWxlX18gKAorI2lmZGVmIENPTkZJR19USFVNQjJfQkFSRUJPWAor CQkiLmFybVxuIgorCQkiYWRyIHI5LCAxZiArIDFcbiIKKwkJImJ4IHI5XG4iCisJCSIudGh1bWJc biIKKwkJIjE6XG4iCisJCSJibCAyZlxuIgorCQkiLnJlcHQgMTBcbiIKKwkJIjE6IGIgMWJcbiIK KwkJIi5lbmRyXG4iCisjZWxzZQorCQkiYiAyZlxuIgorCQkiMTogYiAxYlxuIgorCQkiMTogYiAx YlxuIgorCQkiMTogYiAxYlxuIgorCQkiMTogYiAxYlxuIgorCQkiMTogYiAxYlxuIgorCQkiMTog YiAxYlxuIgorCQkiMTogYiAxYlxuIgorI2VuZGlmCisJCSIuYXNjaXogXCJiYXJlYm94XCJcbiIK KwkJIi53b3JkIF90ZXh0XG4iCQkJCS8qIHRleHQgYmFzZS4gSWYgY29waWVkIHRoZXJlLAorCQkJ CQkJCSAqIGJhcmVib3ggY2FuIHNraXAgcmVsb2NhdGlvbgorCQkJCQkJCSAqLworCQkiLndvcmQg X2JhcmVib3hfaW1hZ2Vfc2l6ZVxuIgkJLyogaW1hZ2Ugc2l6ZSB0byBjb3B5ICovCisJCSIucmVw dCA4XG4iCisJCSIud29yZCAweDU1NTU1NTU1XG4iCisJCSIuZW5kclxuIgorCQkiMjpcbiIKKwkp OworfQorc3RhdGljIGlubGluZSB2b2lkIGJhcmVib3hfYXJtX2hlYWQodm9pZCkKK3sKKwlfX2Jh cmVib3hfYXJtX2hlYWQoKTsKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCisJCSJiIGJhcmVib3hf YXJtX3Jlc2V0X3ZlY3RvclxuIgorCSk7Cit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9fQVNTRU1C TFlfXyAqLworCisjZW5kaWYgLyogX19BU01fQVJNX0hFQURfSCAqLwpkaWZmIC0tZ2l0IGEvYXJj aC9hcm02NC9pbmNsdWRlL2FzbS9iYXJlYm94LWFybS5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS9iYXJlYm94LWFybS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MTMz MjYKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2JhcmVib3gtYXJt LmgKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDIKKyAqIFN5c2dv IFJlYWwtVGltZSBTb2x1dGlvbnMsIEdtYkggPHd3dy5lbGlub3MuY29tPgorICogTWFyaXVzIEdy b2VnZXIgPG1ncm9lZ2VyQHN5c2dvLmRlPgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICog U3lzZ28gUmVhbC1UaW1lIFNvbHV0aW9ucywgR21iSCA8d3d3LmVsaW5vcy5jb20+CisgKiBBbGV4 IFp1ZXBrZSA8YXp1QHN5c2dvLmRlPgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qg b2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor ICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKi8K KworI2lmbmRlZiBfQkFSRUJPWF9BUk1fSF8KKyNkZWZpbmUgX0JBUkVCT1hfQVJNX0hfCisKKyNp bmNsdWRlIDxsaW51eC9zaXplcy5oPgorI2luY2x1ZGUgPGFzbS1nZW5lcmljL21lbW9yeV9sYXlv dXQuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5o PgorI2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVyLmg+CisjaW5jbHVkZSA8YXNtL2JhcmVib3gtYXJt LWhlYWQuaD4KKworLyogY3B1Ly4uLi9jcHUuYyAqLworaW50CWNsZWFudXBfYmVmb3JlX2xpbnV4 KHZvaWQpOworCisvKiBhcmNoLzxhcmNoPmJvYXJkKHMpLy4uLi8uLi4gKi8KK2ludAlib2FyZF9p bml0KHZvaWQpOworaW50CWRyYW1faW5pdCAodm9pZCk7CisKK2V4dGVybiBjaGFyIF9fZXhjZXB0 aW9uc19zdGFydFtdLCBfX2V4Y2VwdGlvbnNfc3RvcFtdOworCit2b2lkIGJvYXJkX2luaXRfbG93 bGV2ZWwodm9pZCk7Cit1aW50MzJfdCBnZXRfcnVudGltZV9vZmZzZXQodm9pZCk7CisKK3ZvaWQg c2V0dXBfYyh2b2lkKTsKK3ZvaWQgcmVsb2NhdGVfdG9fY3VycmVudF9hZHIodm9pZCk7Cit2b2lk IHJlbG9jYXRlX3RvX2Fkcih1bnNpZ25lZCBsb25nIHRhcmdldCk7Cit2b2lkIF9fbm9yZXR1cm4g YmFyZWJveF9hcm1fZW50cnkodW5zaWduZWQgbG9uZyBtZW1iYXNlLCB1bnNpZ25lZCBsb25nIG1l bXNpemUsIHZvaWQgKmJvYXJkZGF0YSk7CisKK3N0cnVjdCBiYXJlYm94X2FybV9ib2FyZGRhdGEg eworI2RlZmluZSBCQVJFQk9YX0FSTV9CT0FSRERBVEFfTUFHSUMJMHhhYmU3NDJjMworCXUzMiBt YWdpYzsKKwl1MzIgbWFjaGluZTsgLyogbWFjaGluZSBudW1iZXIgdG8gcGFzcyB0byBiYXJlYm94 LiBUaGlzIG1heSBvciBtYXkKKwkJICAgICAgKiBub3QgYmUgYSBBUk0gbWFjaGluZSBudW1iZXIg cmVnaXN0ZXJlZCBvbiBhcm0ubGludXgub3JnLnVrLgorCQkgICAgICAqIEl0IG11c3Qgb25seSBi ZSB1bmlxdWUgYWNyb3NzIGJhcmVib3guIFBsZWFzZSB1c2UgYSBudW1iZXIKKwkJICAgICAgKiB0 aGF0IGRvIG5vdCBwb3RpZW50aWFsbHkgY2xhc2hlcyB3aXRoIHJlZ2lzdGVyZWQgbWFjaGluZXMs CisJCSAgICAgICogaS5lLiB1c2UgYSBudW1iZXIgPiAweDEwMDAwLgorCQkgICAgICAqLworfTsK KworLyoKKyAqIENyZWF0ZSBhIGJvYXJkZGF0YSBzdHJ1Y3QgYXQgZ2l2ZW4gYWRkcmVzcy4gU3Vp dGFibGUgdG8gYmUgcGFzc2VkCisgKiBhcyBib2FyZGRhdGEgdG8gYmFyZWJveF9hcm1fZW50cnko KS4gVGhlIG1hY2hpbmUgY2FuIGJlIHJldHJpZXZlZAorICogbGF0ZXIgd2l0aCBiYXJlYm94X2Fy bV9tYWNoaW5lKCkuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBib2FyZGRhdGFfY3JlYXRlKHZv aWQgKmFkciwgdTMyIG1hY2hpbmUpCit7CisJc3RydWN0IGJhcmVib3hfYXJtX2JvYXJkZGF0YSAq YmQgPSBhZHI7CisKKwliZC0+bWFnaWMgPSBCQVJFQk9YX0FSTV9CT0FSRERBVEFfTUFHSUM7CisJ YmQtPm1hY2hpbmUgPSBtYWNoaW5lOworfQorCit1MzIgYmFyZWJveF9hcm1fbWFjaGluZSh2b2lk KTsKKworc3RydWN0IGJhcmVib3hfYXJtX2JvYXJkZGF0YV9jb21wcmVzc2VkX2R0YiB7CisjZGVm aW5lIEJBUkVCT1hfQVJNX0JPQVJEREFUQV9DT01QUkVTU0VEX0RUQl9NQUdJQyAweDdiNjZiY2Jk CisJdTMyIG1hZ2ljOworCXUzMiBkYXRhbGVuOworCXUzMiBkYXRhbGVuX3VuY29tcHJlc3NlZDsK K307CisKK3N0cnVjdCBiYXJlYm94X2FybV9ib2FyZGRhdGEgKmJhcmVib3hfYXJtX2dldF9ib2Fy ZGRhdGEodm9pZCk7CisKKyNpZiBkZWZpbmVkKENPTkZJR19SRUxPQ0FUQUJMRSkgJiYgZGVmaW5l ZChDT05GSUdfQVJNX0VYQ0VQVElPTlMpCit2b2lkIGFybV9maXh1cF92ZWN0b3JzKHZvaWQpOwor I2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcm1fZml4dXBfdmVjdG9ycyh2b2lkKQoreworfQor I2VuZGlmCisKK3ZvaWQgKmJhcmVib3hfYXJtX2Jvb3RfZHRiKHZvaWQpOworCitzdGF0aWMgaW5s aW5lIHVuc2lnbmVkIGxvbmcgYXJtX21lbV9zdGFjayh1bnNpZ25lZCBsb25nIG1lbWJhc2UsCisJ CQkJCSAgdW5zaWduZWQgbG9uZyBlbmRtZW0pCit7CisJcmV0dXJuIGVuZG1lbSAtIFNUQUNLX1NJ WkU7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBhcm1fbWVtX3R0Yih1bnNpZ25l ZCBsb25nIG1lbWJhc2UsCisJCQkJCXVuc2lnbmVkIGxvbmcgZW5kbWVtKQoreworCWVuZG1lbSA9 IGFybV9tZW1fc3RhY2sobWVtYmFzZSwgZW5kbWVtKTsKKwllbmRtZW0gJj0gfihTWl8xNksgLSAx KTsKKwllbmRtZW0gLT0gU1pfMTZLOworCisJcmV0dXJuIGVuZG1lbTsKK30KKworc3RhdGljIGlu bGluZSB1bnNpZ25lZCBsb25nIGFybV9tZW1fZWFybHlfbWFsbG9jKHVuc2lnbmVkIGxvbmcgbWVt YmFzZSwKKwkJCQkJCSB1bnNpZ25lZCBsb25nIGVuZG1lbSkKK3sKKwlyZXR1cm4gYXJtX21lbV90 dGIobWVtYmFzZSwgZW5kbWVtKSAtIFNaXzEyOEs7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWdu ZWQgbG9uZyBhcm1fbWVtX2Vhcmx5X21hbGxvY19lbmQodW5zaWduZWQgbG9uZyBtZW1iYXNlLAor CQkJCQkJICAgICB1bnNpZ25lZCBsb25nIGVuZG1lbSkKK3sKKwlyZXR1cm4gYXJtX21lbV90dGIo bWVtYmFzZSwgZW5kbWVtKTsKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGFybV9t ZW1fcmFtb29wcyh1bnNpZ25lZCBsb25nIG1lbWJhc2UsCisJCQkJCSAgICB1bnNpZ25lZCBsb25n IGVuZG1lbSkKK3sKKwllbmRtZW0gPSBhcm1fbWVtX3R0YihtZW1iYXNlLCBlbmRtZW0pOworI2lm ZGVmIENPTkZJR19GU19QU1RPUkVfUkFNT09QUworCWVuZG1lbSAtPSBDT05GSUdfRlNfUFNUT1JF X1JBTU9PUFNfU0laRTsKKwllbmRtZW0gJj0gfihTWl80SyAtIDEpOyAvKiBBbGlnbiB0byA0SyAq LworI2VuZGlmCisKKwlyZXR1cm4gZW5kbWVtOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGxvbmcgYXJtX21lbV9iYXJlYm94X2ltYWdlKHVuc2lnbmVkIGxvbmcgbWVtYmFzZSwKKwkJCQkJ CSAgdW5zaWduZWQgbG9uZyBlbmRtZW0sCisJCQkJCQkgIHVuc2lnbmVkIGxvbmcgc2l6ZSkKK3sK KwllbmRtZW0gPSBhcm1fbWVtX3JhbW9vcHMobWVtYmFzZSwgZW5kbWVtKTsKKworCWlmIChJU19F TkFCTEVEKENPTkZJR19SRUxPQ0FUQUJMRSkpIHsKKwkJZW5kbWVtIC09IHNpemU7CisJCWVuZG1l bSAmPSB+KFNaXzFNIC0gMSk7CisJfQorCisJcmV0dXJuIGVuZG1lbTsKK30KKworI2RlZmluZSBF TlRSWV9GVU5DVElPTihuYW1lLCBhcmcwLCBhcmcxLCBhcmcyKQkJCQlcCisJc3RhdGljIHZvaWQg X18jI25hbWUodWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCk7CQlcCisJCQkJCQkJCQlcCisJ dm9pZCBfX25ha2VkIF9fc2VjdGlvbigudGV4dF9oZWFkX2VudHJ5XyMjbmFtZSkJbmFtZQkJXAor CQkJCSh1aW50MzJfdCByMCwgdWludDMyX3QgcjEsIHVpbnQzMl90IHIyKQlcCisJCXsJCQkJCQkJ XAorCQkJX19iYXJlYm94X2FybV9oZWFkKCk7CQkJCVwKKwkJCV9fIyNuYW1lKHIwLCByMSwgcjIp OwkJCQlcCisJCX0JCQkJCQkJXAorCQlzdGF0aWMgdm9pZCBfX25ha2VkIG5vaW5saW5lIF9fIyNu YW1lCQkJXAorCQkJKHVpbnQzMl90IGFyZzAsIHVpbnQzMl90IGFyZzEsIHVpbnQzMl90IGFyZzIp CisKKworCisjZW5kaWYJLyogX0JBUkVCT1hfQVJNX0hfICovCmRpZmYgLS1naXQgYS9hcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL2JhcmVib3guaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vYmFyZWJv eC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYThlMTUKLS0tIC9kZXYv bnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2JhcmVib3guaApAQCAtMCwwICsxLDEy IEBACisjaWZuZGVmIF9CQVJFQk9YX0hfCisjZGVmaW5lIF9CQVJFQk9YX0hfCTEKKworI2lmZGVm IENPTkZJR19BUk1fVU5XSU5ECisjZGVmaW5lIEFSQ0hfSEFTX1NUQUNLX0RVTVAKKyNlbmRpZgor CisjaWZkZWYgQ09ORklHX0FSTV9FWENFUFRJT05TCisjZGVmaW5lIEFSQ0hfSEFTX0RBVEFfQUJP UlRfTUFTSworI2VuZGlmCisKKyNlbmRpZgkvKiBfQkFSRUJPWF9IXyAqLwpkaWZmIC0tZ2l0IGEv YXJjaC9hcm02NC9pbmNsdWRlL2FzbS9iaXRvcHMuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20v Yml0b3BzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4NWEwYQotLS0g L2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vYml0b3BzLmgKQEAgLTAsMCAr MSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBUk0gTHRkLgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisgKi8KKyNpZm5kZWYgX19BU01fQklUT1BTX0gKKyNkZWZpbmUgX19BU01f QklUT1BTX0gKKworI2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVyLmg+CisKKyNpZm5kZWYgX0xJTlVY X0JJVE9QU19ICisjZXJyb3Igb25seSA8bGludXgvYml0b3BzLmg+IGNhbiBiZSBpbmNsdWRlZCBk aXJlY3RseQorI2VuZGlmCisKKy8qCisgKiBMaXR0bGUgZW5kaWFuIGFzc2VtYmx5IGF0b21pYyBi aXRvcHMuCisgKi8KK2V4dGVybiB2b2lkIHNldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB1bnNpZ25l ZCBsb25nICpwKTsKK2V4dGVybiB2b2lkIGNsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHVuc2ln bmVkIGxvbmcgKnApOworZXh0ZXJuIHZvaWQgY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHVu c2lnbmVkIGxvbmcgKnApOworZXh0ZXJuIGludCB0ZXN0X2FuZF9zZXRfYml0KGludCBuciwgdm9s YXRpbGUgdW5zaWduZWQgbG9uZyAqcCk7CitleHRlcm4gaW50IHRlc3RfYW5kX2NsZWFyX2JpdChp bnQgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKnApOworZXh0ZXJuIGludCB0ZXN0X2FuZF9j aGFuZ2VfYml0KGludCBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqcCk7CisKKyNpbmNsdWRl IDxhc20tZ2VuZXJpYy9iaXRvcHMvX19mZnMuaD4KKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9iaXRv cHMvZmZzLmg+CisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvYml0b3BzL19fZmxzLmg+CisjaW5jbHVk ZSA8YXNtLWdlbmVyaWMvYml0b3BzL2Zscy5oPgorCisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvYml0 b3BzL2Zmei5oPgorI2luY2x1ZGUgPGFzbS1nZW5lcmljL2JpdG9wcy9mbHM2NC5oPgorI2luY2x1 ZGUgPGFzbS1nZW5lcmljL2JpdG9wcy9maW5kLmg+CisKKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9i aXRvcHMvaHdlaWdodC5oPgorCisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvYml0b3BzL29wcy5oPgor CisjZW5kaWYgLyogX19BU01fQklUT1BTX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5j bHVkZS9hc20vYml0c3BlcmxvbmcuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vYml0c3Blcmxv bmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGMwYmIwCi0tLSAvZGV2 L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9iaXRzcGVybG9uZy5oCkBAIC0wLDAg KzEgQEAKKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9iaXRzcGVybG9uZy5oPgpkaWZmIC0tZ2l0IGEv YXJjaC9hcm02NC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9h c20vYnl0ZW9yZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM0ODlm MQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgK QEAgLTAsMCArMSwzMiBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYnl0ZW9yZGVy LmgKKyAqCisgKiBBUk0gRW5kaWFuLW5lc3MuICBJbiBsaXR0bGUgZW5kaWFuIG1vZGUsIHRoZSBk YXRhIGJ1cyBpcyBjb25uZWN0ZWQgc3VjaAorICogdGhhdCBieXRlIGFjY2Vzc2VzIGFwcGVhciBh czoKKyAqICAwID0gZDAuLi5kNywgMSA9IGQ4Li4uZDE1LCAyID0gZDE2Li4uZDIzLCAzID0gZDI0 Li4uZDMxCisgKiBhbmQgd29yZCBhY2Nlc3NlcyAoZGF0YSBvciBpbnN0cnVjdGlvbikgYXBwZWFy IGFzOgorICogIGQwLi4uZDMxCisgKgorICogV2hlbiBpbiBiaWcgZW5kaWFuIG1vZGUsIGJ5dGUg YWNjZXNzZXMgYXBwZWFyIGFzOgorICogIDAgPSBkMjQuLi5kMzEsIDEgPSBkMTYuLi5kMjMsIDIg PSBkOC4uLmQxNSwgMyA9IGQwLi4uZDcKKyAqIGFuZCB3b3JkIGFjY2Vzc2VzIChkYXRhIG9yIGlu c3RydWN0aW9uKSBhcHBlYXIgYXM6CisgKiAgZDAuLi5kMzEKKyAqLworI2lmbmRlZiBfX0FTTV9B Uk1fQllURU9SREVSX0gKKyNkZWZpbmUgX19BU01fQVJNX0JZVEVPUkRFUl9ICisKKworI2luY2x1 ZGUgPGFzbS90eXBlcy5oPgorCisjaWYgIWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKSB8fCBkZWZp bmVkKF9fS0VSTkVMX18pCisjICBkZWZpbmUgX19CWVRFT1JERVJfSEFTX1U2NF9fCisjICBkZWZp bmUgX19TV0FCXzY0X1RIUlVfMzJfXworI2VuZGlmCisKKyNpZmRlZiBfX0FSTUVCX18KKyNpbmNs dWRlIDxsaW51eC9ieXRlb3JkZXIvYmlnX2VuZGlhbi5oPgorI2Vsc2UKKyNpbmNsdWRlIDxsaW51 eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oPgorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0 IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9jYWNoZS1sMngwLmggYi9hcmNoL2FybTY0L2luY2x1 ZGUvYXNtL2NhY2hlLWwyeDAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45 NjNkZDk5Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9jYWNoZS1s MngwLmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBhcmNoL2FybS9pbmNsdWRlL2FzbS9oYXJk d2FyZS9jYWNoZS1sMngwLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQVJNIExpbWl0ZWQK KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICov CisKKyNpZm5kZWYgX19BU01fQVJNX0hBUkRXQVJFX0wyWDBfSAorI2RlZmluZSBfX0FTTV9BUk1f SEFSRFdBUkVfTDJYMF9ICisKKyNkZWZpbmUgTDJYMF9DQUNIRV9JRAkJCTB4MDAwCisjZGVmaW5l IEwyWDBfQ0FDSEVfVFlQRQkJCTB4MDA0CisjZGVmaW5lIEwyWDBfQ1RSTAkJCTB4MTAwCisjZGVm aW5lIEwyWDBfQVVYX0NUUkwJCQkweDEwNAorI2RlZmluZSBMMlgwX1RBR19MQVRFTkNZX0NUUkwJ CTB4MTA4CisjZGVmaW5lIEwyWDBfREFUQV9MQVRFTkNZX0NUUkwJCTB4MTBDCisjZGVmaW5lIEwy WDBfRVZFTlRfQ05UX0NUUkwJCTB4MjAwCisjZGVmaW5lIEwyWDBfRVZFTlRfQ05UMV9DRkcJCTB4 MjA0CisjZGVmaW5lIEwyWDBfRVZFTlRfQ05UMF9DRkcJCTB4MjA4CisjZGVmaW5lIEwyWDBfRVZF TlRfQ05UMV9WQUwJCTB4MjBDCisjZGVmaW5lIEwyWDBfRVZFTlRfQ05UMF9WQUwJCTB4MjEwCisj ZGVmaW5lIEwyWDBfSU5UUl9NQVNLCQkJMHgyMTQKKyNkZWZpbmUgTDJYMF9NQVNLRURfSU5UUl9T VEFUCQkweDIxOAorI2RlZmluZSBMMlgwX1JBV19JTlRSX1NUQVQJCTB4MjFDCisjZGVmaW5lIEwy WDBfSU5UUl9DTEVBUgkJCTB4MjIwCisjZGVmaW5lIEwyWDBfQ0FDSEVfU1lOQwkJCTB4NzMwCisj ZGVmaW5lIEwyWDBfRFVNTVlfUkVHCQkJMHg3NDAKKyNkZWZpbmUgTDJYMF9JTlZfTElORV9QQQkJ MHg3NzAKKyNkZWZpbmUgTDJYMF9JTlZfV0FZCQkJMHg3N0MKKyNkZWZpbmUgTDJYMF9DTEVBTl9M SU5FX1BBCQkweDdCMAorI2RlZmluZSBMMlgwX0NMRUFOX0xJTkVfSURYCQkweDdCOAorI2RlZmlu ZSBMMlgwX0NMRUFOX1dBWQkJCTB4N0JDCisjZGVmaW5lIEwyWDBfQ0xFQU5fSU5WX0xJTkVfUEEJ CTB4N0YwCisjZGVmaW5lIEwyWDBfQ0xFQU5fSU5WX0xJTkVfSURYCQkweDdGOAorI2RlZmluZSBM MlgwX0NMRUFOX0lOVl9XQVkJCTB4N0ZDCisvKgorICogVGhlIGxvY2tkb3duIHJlZ2lzdGVycyBy ZXBlYXQgOCB0aW1lcyBmb3IgTDMxMCwgdGhlIEwyMTAgaGFzIG9ubHkgb25lCisgKiBEIGFuZCBv bmUgSSBsb2NrZG93biByZWdpc3RlciBhdCAweDA5MDAgYW5kIDB4MDkwNC4KKyAqLworI2RlZmlu ZSBMMlgwX0xPQ0tET1dOX1dBWV9EX0JBU0UJMHg5MDAKKyNkZWZpbmUgTDJYMF9MT0NLRE9XTl9X QVlfSV9CQVNFCTB4OTA0CisjZGVmaW5lIEwyWDBfTE9DS0RPV05fU1RSSURFCQkweDA4CisjZGVm aW5lIEwyWDBfQUREUl9GSUxURVJfU1RBUlQJCTB4QzAwCisjZGVmaW5lIEwyWDBfQUREUl9GSUxU RVJfRU5ECQkweEMwNAorI2RlZmluZSBMMlgwX1RFU1RfT1BFUkFUSU9OCQkweEYwMAorI2RlZmlu ZSBMMlgwX0xJTkVfREFUQQkJCTB4RjEwCisjZGVmaW5lIEwyWDBfTElORV9UQUcJCQkweEYzMAor I2RlZmluZSBMMlgwX0RFQlVHX0NUUkwJCQkweEY0MAorI2RlZmluZSBMMlgwX1BSRUZFVENIX0NU UkwJCTB4RjYwCisjZGVmaW5lIEwyWDBfUE9XRVJfQ1RSTAkJCTB4RjgwCisjZGVmaW5lICAgTDJY MF9EWU5BTUlDX0NMS19HQVRJTkdfRU4JKDEgPDwgMSkKKyNkZWZpbmUgICBMMlgwX1NUTkRCWV9N T0RFX0VOCQkoMSA8PCAwKQorCisvKiBSZWdpc3RlcnMgc2hpZnRzIGFuZCBtYXNrcyAqLworI2Rl ZmluZSBMMlgwX0NBQ0hFX0lEX1BBUlRfTUFTSwkJKDB4ZiA8PCA2KQorI2RlZmluZSBMMlgwX0NB Q0hFX0lEX1BBUlRfTDIxMAkJKDEgPDwgNikKKyNkZWZpbmUgTDJYMF9DQUNIRV9JRF9QQVJUX0wz MTAJCSgzIDw8IDYpCisjZGVmaW5lIEwyWDBfQ0FDSEVfSURfUlRMX01BU0sgICAgICAgICAgMHgz ZgorI2RlZmluZSBMMlgwX0NBQ0hFX0lEX1JUTF9SMFAwICAgICAgICAgIDB4MAorI2RlZmluZSBM MlgwX0NBQ0hFX0lEX1JUTF9SMVAwICAgICAgICAgIDB4MgorI2RlZmluZSBMMlgwX0NBQ0hFX0lE X1JUTF9SMlAwICAgICAgICAgIDB4NAorI2RlZmluZSBMMlgwX0NBQ0hFX0lEX1JUTF9SM1AwICAg ICAgICAgIDB4NQorI2RlZmluZSBMMlgwX0NBQ0hFX0lEX1JUTF9SM1AxICAgICAgICAgIDB4Ngor I2RlZmluZSBMMlgwX0NBQ0hFX0lEX1JUTF9SM1AyICAgICAgICAgIDB4OAorCisjZGVmaW5lIEwy WDBfQVVYX0NUUkxfTUFTSwkJCTB4YzAwMDBmZmYKKyNkZWZpbmUgTDJYMF9BVVhfQ1RSTF9EQVRB X1JEX0xBVEVOQ1lfU0hJRlQJMAorI2RlZmluZSBMMlgwX0FVWF9DVFJMX0RBVEFfUkRfTEFURU5D WV9NQVNLCTB4NworI2RlZmluZSBMMlgwX0FVWF9DVFJMX0RBVEFfV1JfTEFURU5DWV9TSElGVAkz CisjZGVmaW5lIEwyWDBfQVVYX0NUUkxfREFUQV9XUl9MQVRFTkNZX01BU0sJKDB4NyA8PCAzKQor I2RlZmluZSBMMlgwX0FVWF9DVFJMX1RBR19MQVRFTkNZX1NISUZUCQk2CisjZGVmaW5lIEwyWDBf QVVYX0NUUkxfVEFHX0xBVEVOQ1lfTUFTSwkJKDB4NyA8PCA2KQorI2RlZmluZSBMMlgwX0FVWF9D VFJMX0RJUlRZX0xBVEVOQ1lfU0hJRlQJOQorI2RlZmluZSBMMlgwX0FVWF9DVFJMX0RJUlRZX0xB VEVOQ1lfTUFTSwkoMHg3IDw8IDkpCisjZGVmaW5lIEwyWDBfQVVYX0NUUkxfQVNTT0NJQVRJVklU WV9TSElGVAkxNgorI2RlZmluZSBMMlgwX0FVWF9DVFJMX1dBWV9TSVpFX1NISUZUCQkxNworI2Rl ZmluZSBMMlgwX0FVWF9DVFJMX1dBWV9TSVpFX01BU0sJCSgweDcgPDwgMTcpCisjZGVmaW5lIEwy WDBfQVVYX0NUUkxfU0hBUkVfT1ZFUlJJREVfU0hJRlQJMjIKKyNkZWZpbmUgTDJYMF9BVVhfQ1RS TF9OU19MT0NLRE9XTl9TSElGVAkJMjYKKyNkZWZpbmUgTDJYMF9BVVhfQ1RSTF9OU19JTlRfQ1RS TF9TSElGVAkJMjcKKyNkZWZpbmUgTDJYMF9BVVhfQ1RSTF9EQVRBX1BSRUZFVENIX1NISUZUCTI4 CisjZGVmaW5lIEwyWDBfQVVYX0NUUkxfSU5TVFJfUFJFRkVUQ0hfU0hJRlQJMjkKKyNkZWZpbmUg TDJYMF9BVVhfQ1RSTF9FQVJMWV9CUkVTUF9TSElGVAkJMzAKKworI2RlZmluZSBMMlgwX0xBVEVO Q1lfQ1RSTF9TRVRVUF9TSElGVAkwCisjZGVmaW5lIEwyWDBfTEFURU5DWV9DVFJMX1JEX1NISUZU CTQKKyNkZWZpbmUgTDJYMF9MQVRFTkNZX0NUUkxfV1JfU0hJRlQJOAorCisjZGVmaW5lIEwyWDBf QUREUl9GSUxURVJfRU4JCTEKKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5j bHVkZS9hc20vY2FjaGUuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vY2FjaGUuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTUyNGYzCi0tLSAvZGV2L251bGwKKysrIGIv YXJjaC9hcm02NC9pbmNsdWRlL2FzbS9jYWNoZS5oCkBAIC0wLDAgKzEsMTYgQEAKKyNpZm5kZWYg X19BU01fQ0FDSEVfSAorI2RlZmluZSBfX0FTTV9DQUNIRV9ICisKK2V4dGVybiB2b2lkIHY4X2lu dmFsaWRhdGVfaWNhY2hlX2FsbCh2b2lkKTsKKworc3RhdGljIGlubGluZSB2b2lkIGZsdXNoX2lj YWNoZSh2b2lkKQoreworCXY4X2ludmFsaWRhdGVfaWNhY2hlX2FsbCgpOworfQorCitpbnQgYXJt X3NldF9jYWNoZV9mdW5jdGlvbnModm9pZCk7CisKK3ZvaWQgYXJtX2Vhcmx5X21tdV9jYWNoZV9m bHVzaCh2b2lkKTsKK3ZvaWQgYXJtX2Vhcmx5X21tdV9jYWNoZV9pbnZhbGlkYXRlKHZvaWQpOwor CisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vY29tbW9uLmggYi9h cmNoL2FybTY0L2luY2x1ZGUvYXNtL2NvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjA3YWU2MTkKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUv YXNtL2NvbW1vbi5oCkBAIC0wLDAgKzEsNDggQEAKKyNpZm5kZWYgX19BU01fQVJNX0NPTU1PTl9I CisjZGVmaW5lIF9fQVNNX0FSTV9DT01NT05fSAorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxv bmcgZ2V0X3BjKHZvaWQpCit7CisJdW5zaWduZWQgbG9uZyBwYzsKKworCV9fYXNtX18gX192b2xh dGlsZV9fKAorICAgICAgICAgICAgICAgICJtb3YgICAgJTAsIHBjXG4iCisgICAgICAgICAgICAg ICAgOiAiPXIiIChwYykKKyAgICAgICAgICAgICAgICA6CisgICAgICAgICAgICAgICAgOiAibWVt b3J5Iik7CisKKwlyZXR1cm4gcGM7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBn ZXRfbHIodm9pZCkKK3sKKwl1bnNpZ25lZCBsb25nIGxyOworCisJX19hc21fXyBfX3ZvbGF0aWxl X18oCisgICAgICAgICAgICAgICAgIm1vdiAgICAlMCwgbHJcbiIKKyAgICAgICAgICAgICAgICA6 ICI9ciIgKGxyKQorICAgICAgICAgICAgICAgIDoKKyAgICAgICAgICAgICAgICA6ICJtZW1vcnki KTsKKworCXJldHVybiBscjsKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGdldF9z cCh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgc3A7CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygK KyAgICAgICAgICAgICAgICAibW92ICAgICUwLCBzcFxuIgorICAgICAgICAgICAgICAgIDogIj1y IiAoc3ApCisgICAgICAgICAgICAgICAgOgorICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOwor CisJcmV0dXJuIHNwOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJtX3NldHVwX3N0YWNrKHVu c2lnbmVkIGxvbmcgdG9wKQoreworCV9fYXNtX18gX192b2xhdGlsZV9fKCJtb3Ygc3AsICUwIiA6 IDogInIiKHRvcCkpOworfQorCisjZW5kaWYgLyogX19BU01fQVJNX0NPTU1PTl9IICovCmRpZmYg LS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2NwdXR5cGUuaCBiL2FyY2gvYXJtNjQvaW5j bHVkZS9hc20vY3B1dHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYz OTkzOWIKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2NwdXR5cGUu aApAQCAtMCwwICsxLDEwMCBAQAorI2lmbmRlZiBfX0FTTV9BUk1fQ1BVVFlQRV9ICisjZGVmaW5l IF9fQVNNX0FSTV9DUFVUWVBFX0gKKworI2luY2x1ZGUgPGxpbnV4L3N0cmluZ2lmeS5oPgorI2lu Y2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorCisjZGVmaW5lIENQVUlEX0lECTAKKyNkZWZpbmUgQ1BV SURfQ0FDSEVUWVBFCTEKKyNkZWZpbmUgQ1BVSURfVENNCTIKKyNkZWZpbmUgQ1BVSURfVExCVFlQ RQkzCisjZGVmaW5lIENQVUlEX01QSURSCTUKKworI2RlZmluZSBDUFVJRF9FWFRfUEZSMAkiYzEs IDAiCisjZGVmaW5lIENQVUlEX0VYVF9QRlIxCSJjMSwgMSIKKyNkZWZpbmUgQ1BVSURfRVhUX0RG UjAJImMxLCAyIgorI2RlZmluZSBDUFVJRF9FWFRfQUZSMAkiYzEsIDMiCisjZGVmaW5lIENQVUlE X0VYVF9NTUZSMAkiYzEsIDQiCisjZGVmaW5lIENQVUlEX0VYVF9NTUZSMQkiYzEsIDUiCisjZGVm aW5lIENQVUlEX0VYVF9NTUZSMgkiYzEsIDYiCisjZGVmaW5lIENQVUlEX0VYVF9NTUZSMwkiYzEs IDciCisjZGVmaW5lIENQVUlEX0VYVF9JU0FSMAkiYzIsIDAiCisjZGVmaW5lIENQVUlEX0VYVF9J U0FSMQkiYzIsIDEiCisjZGVmaW5lIENQVUlEX0VYVF9JU0FSMgkiYzIsIDIiCisjZGVmaW5lIENQ VUlEX0VYVF9JU0FSMwkiYzIsIDMiCisjZGVmaW5lIENQVUlEX0VYVF9JU0FSNAkiYzIsIDQiCisj ZGVmaW5lIENQVUlEX0VYVF9JU0FSNQkiYzIsIDUiCisKK2V4dGVybiB1bnNpZ25lZCBpbnQgcHJv Y2Vzc29yX2lkOworCisjZGVmaW5lIHJlYWRfY3B1aWQocmVnKQkJCQkJCQlcCisJKHsJCQkJCQkJ CVwKKwkJdW5zaWduZWQgaW50IF9fdmFsOwkJCQkJXAorCQlhc20oIm1yYwlwMTUsIDAsICUwLCBj MCwgYzAsICIgX19zdHJpbmdpZnkocmVnKQlcCisJCSAgICA6ICI9ciIgKF9fdmFsKQkJCQkJXAor CQkgICAgOgkJCQkJCQlcCisJCSAgICA6ICJjYyIpOwkJCQkJCVwKKwkJX192YWw7CQkJCQkJCVwK Kwl9KQorI2RlZmluZSByZWFkX2NwdWlkX2V4dChleHRfcmVnKQkJCQkJCVwKKwkoewkJCQkJCQkJ XAorCQl1bnNpZ25lZCBpbnQgX192YWw7CQkJCQlcCisJCWFzbSgibXJjCXAxNSwgMCwgJTAsIGMw LCAiIGV4dF9yZWcJCVwKKwkJICAgIDogIj1yIiAoX192YWwpCQkJCQlcCisJCSAgICA6CQkJCQkJ CVwKKwkJICAgIDogImNjIik7CQkJCQkJXAorCQlfX3ZhbDsJCQkJCQkJXAorCX0pCisKKy8qCisg KiBUaGUgQ1BVIElEIG5ldmVyIGNoYW5nZXMgYXQgcnVuIHRpbWUsIHNvIHdlIG1pZ2h0IGFzIHdl bGwgdGVsbCB0aGUKKyAqIGNvbXBpbGVyIHRoYXQgaXQncyBjb25zdGFudC4gIFVzZSB0aGlzIGZ1 bmN0aW9uIHRvIHJlYWQgdGhlIENQVSBJRAorICogcmF0aGVyIHRoYW4gZGlyZWN0bHkgcmVhZGlu ZyBwcm9jZXNzb3JfaWQgb3IgcmVhZF9jcHVpZCgpIGRpcmVjdGx5LgorICovCitzdGF0aWMgaW5s aW5lIHVuc2lnbmVkIGludCBfX2F0dHJpYnV0ZV9jb25zdF9fIHJlYWRfY3B1aWRfaWQodm9pZCkK K3sKKwlyZXR1cm4gcmVhZF9jcHVpZChDUFVJRF9JRCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5z aWduZWQgaW50IF9fYXR0cmlidXRlX2NvbnN0X18gcmVhZF9jcHVpZF9jYWNoZXR5cGUodm9pZCkK K3sKKwlyZXR1cm4gcmVhZF9jcHVpZChDUFVJRF9DQUNIRVRZUEUpOworfQorCitzdGF0aWMgaW5s aW5lIHVuc2lnbmVkIGludCBfX2F0dHJpYnV0ZV9jb25zdF9fIHJlYWRfY3B1aWRfdGNtc3RhdHVz KHZvaWQpCit7CisJcmV0dXJuIHJlYWRfY3B1aWQoQ1BVSURfVENNKTsKK30KKworc3RhdGljIGlu bGluZSB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfY29uc3RfXyByZWFkX2NwdWlkX21waWRyKHZv aWQpCit7CisJcmV0dXJuIHJlYWRfY3B1aWQoQ1BVSURfTVBJRFIpOworfQorCisvKgorICogSW50 ZWwncyBYU2NhbGUzIGNvcmUgc3VwcG9ydHMgc29tZSB2NiBmZWF0dXJlcyAoc3VwZXJzZWN0aW9u cywgTDIpCisgKiBidXQgYWR2ZXJ0aXNlcyBpdHNlbGYgYXMgdjUgYXMgaXQgZG9lcyBub3Qgc3Vw cG9ydCB0aGUgdjYgSVNBLiAgRm9yCisgKiB0aGlzIHJlYXNvbiwgd2UgbmVlZCBhIHdheSB0byBl eHBsaWNpdGx5IHRlc3QgZm9yIHRoaXMgdHlwZSBvZiBDUFUuCisgKi8KKyNpZm5kZWYgQ09ORklH X0NQVV9YU0MzCisjZGVmaW5lIGNwdV9pc194c2MzKCkJMAorI2Vsc2UKK3N0YXRpYyBpbmxpbmUg aW50IGNwdV9pc194c2MzKHZvaWQpCit7CisJdW5zaWduZWQgaW50IGlkOworCWlkID0gcmVhZF9j cHVpZF9pZCgpICYgMHhmZmZmZTAwMDsKKwkvKiBJdCBjb3ZlcnMgYm90aCBJbnRlbCBJRCBhbmQg TWFydmVsbCBJRCAqLworCWlmICgoaWQgPT0gMHg2OTA1NjAwMCkgfHwgKGlkID09IDB4NTYwNTYw MDApKQorCQlyZXR1cm4gMTsKKworCXJldHVybiAwOworfQorI2VuZGlmCisKKyNpZiAhZGVmaW5l ZChDT05GSUdfQ1BVX1hTQ0FMRSkgJiYgIWRlZmluZWQoQ09ORklHX0NQVV9YU0MzKQorI2RlZmlu ZQljcHVfaXNfeHNjYWxlKCkJMAorI2Vsc2UKKyNkZWZpbmUJY3B1X2lzX3hzY2FsZSgpCTEKKyNl bmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZGVidWdf bGxfcGwwMTEuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZGVidWdfbGxfcGwwMTEuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjAxNWEzCi0tLSAvZGV2L251bGwKKysr IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9kZWJ1Z19sbF9wbDAxMS5oCkBAIC0wLDAgKzEsMjUg QEAKKyNpZm5kZWYgX19JTkNMVURFX0FSTV9BU01fREVCVUdfTExfUEwwMTFfSF9fCisjZGVmaW5l IF9fSU5DTFVERV9BUk1fQVNNX0RFQlVHX0xMX1BMMDExX0hfXworCisjaWZuZGVmIERFQlVHX0xM X1VBUlRfQUREUgorI2Vycm9yIERFQlVHX0xMX1VBUlRfQUREUiBpcyB1bmRlZmluZWQhCisjZW5k aWYKKworI2luY2x1ZGUgPGlvLmg+CisjaW5jbHVkZSA8bGludXgvYW1iYS9zZXJpYWwuaD4KKwor c3RhdGljIGlubGluZSB2b2lkIFBVVENfTEwoY2hhciBjKQoreworCS8qIFdhaXQgdW50aWwgdGhl cmUgaXMgc3BhY2UgaW4gdGhlIEZJRk8gKi8KKwl3aGlsZSAocmVhZGwoREVCVUdfTExfVUFSVF9B RERSICsgVUFSVDAxeF9GUikgJiBVQVJUMDF4X0ZSX1RYRkYpCisJCTsKKworCS8qIFNlbmQgdGhl IGNoYXJhY3RlciAqLworCXdyaXRlbChjLCBERUJVR19MTF9VQVJUX0FERFIgKyBVQVJUMDF4X0RS KTsKKworCS8qIFdhaXQgdG8gbWFrZSBzdXJlIGl0IGhpdHMgdGhlIGxpbmUsIGluIGNhc2Ugd2Ug ZGllIHRvbyBzb29uLiAqLworCXdoaWxlIChyZWFkbChERUJVR19MTF9VQVJUX0FERFIgKyBVQVJU MDF4X0ZSKSAmIFVBUlQwMXhfRlJfVFhGRikKKwkJOworfQorCisjZW5kaWYgLyogX19JTkNMVURF X0FSTV9BU01fREVCVUdfTExfUEwwMTFfSF9fICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL2RtYS5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9kbWEuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmEyZWRmCi0tLSAvZGV2L251bGwKKysrIGIvYXJj aC9hcm02NC9pbmNsdWRlL2FzbS9kbWEuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJp Z2h0IChDKSAyMDEyIGJ5IE1hcmMgS2xlaW5lLUJ1ZGRlIDxta2xAcGVuZ3V0cm9uaXguZGU+Cisg KgorICogVGhpcyBmaWxlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBHUEx2MgorICoKKyAqLworCisj aW5jbHVkZSA8Y29tbW9uLmg+CisKKyNkZWZpbmUgZG1hX2FsbG9jIGRtYV9hbGxvYworc3RhdGlj IGlubGluZSB2b2lkICpkbWFfYWxsb2Moc2l6ZV90IHNpemUpCit7CisJcmV0dXJuIHhtZW1hbGln big2NCwgQUxJR04oc2l6ZSwgNjQpKTsKK30KKworI2lmbmRlZiBDT05GSUdfTU1VCitzdGF0aWMg aW5saW5lIHZvaWQgKmRtYV9hbGxvY19jb2hlcmVudChzaXplX3Qgc2l6ZSwgZG1hX2FkZHJfdCAq ZG1hX2hhbmRsZSkKK3sKKwl2b2lkICpyZXQgPSB4bWVtYWxpZ24oNDA5Niwgc2l6ZSk7CisJaWYg KGRtYV9oYW5kbGUpCisJCSpkbWFfaGFuZGxlID0gKGRtYV9hZGRyX3QpcmV0OworCisJcmV0dXJu IHJldDsKK30KKworc3RhdGljIGlubGluZSB2b2lkICpkbWFfYWxsb2Nfd3JpdGVjb21iaW5lKHNp emVfdCBzaXplLCBkbWFfYWRkcl90ICpkbWFfaGFuZGxlKQoreworCXJldHVybiBkbWFfYWxsb2Nf Y29oZXJlbnQoc2l6ZSwgZG1hX2hhbmRsZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkbWFf ZnJlZV9jb2hlcmVudCh2b2lkICptZW0sIGRtYV9hZGRyX3QgZG1hX2hhbmRsZSwKKwkJCQkgICAg IHNpemVfdCBzaXplKQoreworCWZyZWUobWVtKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGRt YV9zeW5jX3NpbmdsZV9mb3JfY3B1KHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgc2l6ZV90IHNpemUs CisJCQkJCSAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKK3sKK30KKworc3RhdGljIGlu bGluZSB2b2lkIGRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKHVuc2lnbmVkIGxvbmcgYWRkcmVz cywgc2l6ZV90IHNpemUsCisJCQkJCSAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikK K3sKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbGYuaCBi L2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNzI0ZWJiMAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9h c20vZWxmLmgKQEAgLTAsMCArMSwxMTkgQEAKKyNpZm5kZWYgX19BU01BUk1fRUxGX0gKKyNkZWZp bmUgX19BU01BUk1fRUxGX0gKKworLy8jaW5jbHVkZSA8YXNtL2h3Y2FwLmg+CisKKyNpZm5kZWYg X19BU1NFTUJMWV9fCisvKgorICogRUxGIHJlZ2lzdGVyIGRlZmluaXRpb25zLi4KKyAqLworI2lu Y2x1ZGUgPGFzbS9wdHJhY2UuaD4KKy8vI2luY2x1ZGUgPGFzbS91c2VyLmg+CisKK3R5cGVkZWYg dW5zaWduZWQgbG9uZyBlbGZfZ3JlZ190OwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGVsZl9mcmVn X3RbM107CisKKyNkZWZpbmUgRUxGX05HUkVHIChzaXplb2YgKHN0cnVjdCBwdF9yZWdzKSAvIHNp emVvZihlbGZfZ3JlZ190KSkKK3R5cGVkZWYgZWxmX2dyZWdfdCBlbGZfZ3JlZ3NldF90W0VMRl9O R1JFR107CisKK3R5cGVkZWYgc3RydWN0IHVzZXJfZnAgZWxmX2ZwcmVnc2V0X3Q7CisjZW5kaWYK KworI2RlZmluZSBFTV9BUk0JNDAKKyNkZWZpbmUgRUZfQVJNX0FQQ1MyNiAweDA4CisjZGVmaW5l IEVGX0FSTV9TT0ZUX0ZMT0FUIDB4MjAwCisjZGVmaW5lIEVGX0FSTV9FQUJJX01BU0sgMHhGRjAw MDAwMAorCisjZGVmaW5lIFJfQVJNX05PTkUJMAorI2RlZmluZSBSX0FSTV9QQzI0CTEKKyNkZWZp bmUgUl9BUk1fQUJTMzIJMgorI2RlZmluZSBSX0FSTV9DQUxMCTI4CisjZGVmaW5lIFJfQVJNX0pV TVAyNAkyOQorCisvKgorICogVGhlc2UgYXJlIHVzZWQgdG8gc2V0IHBhcmFtZXRlcnMgaW4gdGhl IGNvcmUgZHVtcHMuCisgKi8KKyNkZWZpbmUgRUxGX0NMQVNTCUVMRkNMQVNTMzIKKyNpZmRlZiBf X0FSTUVCX18KKyNkZWZpbmUgRUxGX0RBVEEJRUxGREFUQTJNU0IKKyNlbHNlCisjZGVmaW5lIEVM Rl9EQVRBCUVMRkRBVEEyTFNCCisjZW5kaWYKKyNkZWZpbmUgRUxGX0FSQ0gJRU1fQVJNCisKKyNp ZmRlZiBfX0tFUk5FTF9fCisjaWZuZGVmIF9fQVNTRU1CTFlfXworLyoKKyAqIFRoaXMgeWllbGRz IGEgc3RyaW5nIHRoYXQgbGQuc28gd2lsbCB1c2UgdG8gbG9hZCBpbXBsZW1lbnRhdGlvbgorICog c3BlY2lmaWMgbGlicmFyaWVzIGZvciBvcHRpbWl6YXRpb24uICBUaGlzIGlzIG1vcmUgc3BlY2lm aWMgaW4KKyAqIGludGVudCB0aGFuIHBva2luZyBhdCB1bmFtZSBvciAvcHJvYy9jcHVpbmZvLgor ICoKKyAqIEZvciBub3cgd2UganVzdCBwcm92aWRlIGEgZmFpcmx5IGdlbmVyYWwgc3RyaW5nIHRo YXQgZGVzY3JpYmVzIHRoZQorICogcHJvY2Vzc29yIGZhbWlseS4gIFRoaXMgY291bGQgYmUgbWFk ZSBtb3JlIHNwZWNpZmljIGxhdGVyIGlmIHNvbWVvbmUKKyAqIGltcGxlbWVudGVkIG9wdGltaXNh dGlvbnMgdGhhdCByZXF1aXJlIGl0LiAgMjYtYml0IENQVXMgZ2l2ZSB5b3UKKyAqICJ2MWwiIGZv ciBBUk0yIChubyBTV1ApIGFuZCAidjJsIiBmb3IgYW55dGhpbmcgZWxzZSAoQVJNMSBpc24ndAor ICogc3VwcG9ydGVkKS4gIDMyLWJpdCBDUFVzIGdpdmUgeW91ICJ2M1tsYl0iIGZvciBhbnl0aGlu ZyBiYXNlZCBvbiBhbgorICogQVJNNiBvciBBUk03IGNvcmUgYW5kICJhcm12NFtsYl0iIGZvciBh bnl0aGluZyBiYXNlZCBvbiBhIFN0cm9uZ0FSTS0xCisgKiBjb3JlLgorICovCisjZGVmaW5lIEVM Rl9QTEFURk9STV9TSVpFIDgKKyNkZWZpbmUgRUxGX1BMQVRGT1JNCShlbGZfcGxhdGZvcm0pCisK K2V4dGVybiBjaGFyIGVsZl9wbGF0Zm9ybVtdOworI2VuZGlmCisKKy8qCisgKiBUaGlzIGlzIHVz ZWQgdG8gZW5zdXJlIHdlIGRvbid0IGxvYWQgc29tZXRoaW5nIGZvciB0aGUgd3JvbmcgYXJjaGl0 ZWN0dXJlLgorICovCisjZGVmaW5lIGVsZl9jaGVja19hcmNoKHgpICgoeCktPmVfbWFjaGluZSA9 PSBFTV9BUk0gJiYgRUxGX1BST0NfT0soeCkpCisKKy8qCisgKiAzMi1iaXQgY29kZSBpcyBhbHdh eXMgT0suICBTb21lIGNwdXMgY2FuIGRvIDI2LWJpdCwgc29tZSBjYW4ndC4KKyAqLworI2RlZmlu ZSBFTEZfUFJPQ19PSyh4KQkoRUxGX1RIVU1CX09LKHgpICYmIEVMRl8yNkJJVF9PSyh4KSkKKwor I2RlZmluZSBFTEZfVEhVTUJfT0soeCkgXAorCSgoZWxmX2h3Y2FwICYgSFdDQVBfVEhVTUIgJiYg KCh4KS0+ZV9lbnRyeSAmIDEpID09IDEpIHx8IFwKKwkgKCh4KS0+ZV9lbnRyeSAmIDMpID09IDAp CisKKyNkZWZpbmUgRUxGXzI2QklUX09LKHgpIFwKKwkoKGVsZl9od2NhcCAmIEhXQ0FQXzI2QklU ICYmICh4KS0+ZV9mbGFncyAmIEVGX0FSTV9BUENTMjYpIHx8IFwKKwkgICgoeCktPmVfZmxhZ3Mg JiBFRl9BUk1fQVBDUzI2KSA9PSAwKQorCisjZGVmaW5lIFVTRV9FTEZfQ09SRV9EVU1QCisjZGVm aW5lIEVMRl9FWEVDX1BBR0VTSVpFCTQwOTYKKworLyogVGhpcyBpcyB0aGUgbG9jYXRpb24gdGhh dCBhbiBFVF9EWU4gcHJvZ3JhbSBpcyBsb2FkZWQgaWYgZXhlYydlZC4gIFR5cGljYWwKKyAgIHVz ZSBvZiB0aGlzIGlzIHRvIGludm9rZSAiLi9sZC5zbyBzb21lcHJvZyIgdG8gdGVzdCBvdXQgYSBu ZXcgdmVyc2lvbiBvZgorICAgdGhlIGxvYWRlci4gIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQg aXQgaXMgb3V0IG9mIHRoZSB3YXkgb2YgdGhlIHByb2dyYW0KKyAgIHRoYXQgaXQgd2lsbCAiZXhl YyIsIGFuZCB0aGF0IHRoZXJlIGlzIHN1ZmZpY2llbnQgcm9vbSBmb3IgdGhlIGJyay4gICovCisK KyNkZWZpbmUgRUxGX0VUX0RZTl9CQVNFCSgyICogVEFTS19TSVpFIC8gMykKKworLyogV2hlbiB0 aGUgcHJvZ3JhbSBzdGFydHMsIGExIGNvbnRhaW5zIGEgcG9pbnRlciB0byBhIGZ1bmN0aW9uIHRv IGJlIAorICAgcmVnaXN0ZXJlZCB3aXRoIGF0ZXhpdCwgYXMgcGVyIHRoZSBTVlI0IEFCSS4gIEEg dmFsdWUgb2YgMCBtZWFucyB3ZSAKKyAgIGhhdmUgbm8gc3VjaCBoYW5kbGVyLiAgKi8KKyNkZWZp bmUgRUxGX1BMQVRfSU5JVChfciwgbG9hZF9hZGRyKQkoX3IpLT5BUk1fcjAgPSAwCisKKy8qCisg KiBTaW5jZSB0aGUgRlBBIGNvcHJvY2Vzc29yIHVzZXMgQ1AxIGFuZCBDUDIsIGFuZCBpV01NWHQg dXNlcyBDUDAKKyAqIGFuZCBDUDEsIHdlIG9ubHkgZW5hYmxlIGFjY2VzcyB0byB0aGUgaVdNTVh0 IGNvcHJvY2Vzc29yIGlmIHRoZQorICogYmluYXJ5IGlzIEVBQkkgb3Igc29mdGZsb2F0IChhbmQg dGh1cywgZ3VhcmFudGVlZCBub3QgdG8gdXNlCisgKiBGUEEgaW5zdHJ1Y3Rpb25zLikKKyAqLwor I2RlZmluZSBTRVRfUEVSU09OQUxJVFkoZXgsIGliY3MyKQkJCQkJXAorCWRvIHsJCQkJCQkJCVwK KwkJaWYgKChleCkuZV9mbGFncyAmIEVGX0FSTV9BUENTMjYpIHsJCQlcCisJCQlzZXRfcGVyc29u YWxpdHkoUEVSX0xJTlVYKTsJCQlcCisJCX0gZWxzZSB7CQkJCQkJXAorCQkJc2V0X3BlcnNvbmFs aXR5KFBFUl9MSU5VWF8zMkJJVCk7CQlcCisJCQlpZiAoZWxmX2h3Y2FwICYgSFdDQVBfSVdNTVhU ICYmIChleCkuZV9mbGFncyAmIChFRl9BUk1fRUFCSV9NQVNLIHwgRUZfQVJNX1NPRlRfRkxPQVQp KSBcCisJCQkJc2V0X3RocmVhZF9mbGFnKFRJRl9VU0lOR19JV01NWFQpOwlcCisJCQllbHNlCQkJ CQkJXAorCQkJCWNsZWFyX3RocmVhZF9mbGFnKFRJRl9VU0lOR19JV01NWFQpOwlcCisJCX0JCQkJ CQkJXAorCX0gd2hpbGUgKDApCisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gv YXJtNjQvaW5jbHVkZS9hc20vZXJyYXRhLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VycmF0 YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1MjU4MjMKLS0tIC9kZXYv bnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VycmF0YS5oCkBAIC0wLDAgKzEsNzkg QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgTHVjYXMgU3RhY2gsIFBlbmd1dHJvbml4Cisg KgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor ICovCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBlbmFibGVfYXJtX2VycmF0YV83MDk3MThfd2FyKHZv aWQpCit7CisJX19hc21fXyBfX3ZvbGF0aWxlX18gKAorCQkibXJjCXAxNSwgMCwgcjAsIGMxMCwg YzIsIDBcbiIKKwkJImJpYwlyMCwgIzMgPDwgMTZcbiIKKwkJIm1jcglwMTUsIDAsIHIwLCBjMTAs IGMyLCAwXG4iCisJCSJtcmMJcDE1LCAwLCByMCwgYzEsIGMwLCAwXG4iCisJCSJvcnIJcjAsIHIw LCAjMSA8PCAyOFxuIgorCQkibWNyCXAxNSwgMCwgcjAsIGMxLCBjMCwgMFxuIgorCSk7Cit9CisK K3N0YXRpYyBpbmxpbmUgdm9pZCBlbmFibGVfYXJtX2VycmF0YV83MTYwNDRfd2FyKHZvaWQpCit7 CisJX19hc21fXyBfX3ZvbGF0aWxlX18gKAorCQkibXJjCXAxNSwgMCwgcjAsIGMxLCBjMCwgMFxu IgorCQkib3JyCXIwLCByMCwgIzEgPDwgMTFcbiIKKwkJIm1jcglwMTUsIDAsIHIwLCBjMSwgYzAs IDBcbiIKKwkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZW5hYmxlX2FybV9lcnJhdGFfNzQy MjMwX3dhcih2b2lkKQoreworCV9fYXNtX18gX192b2xhdGlsZV9fICgKKwkJIm1yYwlwMTUsIDAs IHIwLCBjMTUsIGMwLCAxXG4iCisJCSJvcnIJcjAsIHIwLCAjMSA8PCA0XG4iCisJCSJtY3IJcDE1 LCAwLCByMCwgYzE1LCBjMCwgMVxuIgorCSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBlbmFi bGVfYXJtX2VycmF0YV83NDM2MjJfd2FyKHZvaWQpCit7CisJX19hc21fXyBfX3ZvbGF0aWxlX18g KAorCQkibXJjCXAxNSwgMCwgcjAsIGMxNSwgYzAsIDFcbiIKKwkJIm9ycglyMCwgcjAsICMxIDw8 IDZcbiIKKwkJIm1jcglwMTUsIDAsIHIwLCBjMTUsIGMwLCAxXG4iCisJKTsKK30KKworc3RhdGlj IGlubGluZSB2b2lkIGVuYWJsZV9hcm1fZXJyYXRhXzc1MTQ3Ml93YXIodm9pZCkKK3sKKwlfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoCisJCSJtcmMJcDE1LCAwLCByMCwgYzE1LCBjMCwgMVxuIgorCQki b3JyCXIwLCByMCwgIzEgPDwgMTFcbiIKKwkJIm1jcglwMTUsIDAsIHIwLCBjMTUsIGMwLCAxXG4i CisJKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGVuYWJsZV9hcm1fZXJyYXRhXzc2MTMyMF93 YXIodm9pZCkKK3sKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCisJCSJtcmMJcDE1LCAwLCByMCwg YzE1LCBjMCwgMVxuIgorCQkib3JyCXIwLCByMCwgIzEgPDwgMjFcbiIKKwkJIm1jcglwMTUsIDAs IHIwLCBjMTUsIGMwLCAxXG4iCisJKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGVuYWJsZV9h cm1fZXJyYXRhXzc5NDA3Ml93YXIodm9pZCkKK3sKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCisJ CSJtcmMJcDE1LCAwLCByMCwgYzE1LCBjMCwgMVxuIgorCQkib3JyCXIwLCByMCwgIzEgPDwgNFxu IgorCQkibWNyCXAxNSwgMCwgcjAsIGMxNSwgYzAsIDFcbiIKKwkpOworfQpkaWZmIC0tZ2l0IGEv YXJjaC9hcm02NC9pbmNsdWRlL2FzbS9naWMuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZ2lj LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdjMTdlMwotLS0gL2Rldi9u dWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZ2ljLmgKQEAgLTAsMCArMSwxMjggQEAK KyNpZm5kZWYgX19HSUNfSF9fCisjZGVmaW5lIF9fR0lDX0hfXworCisvKiBHZW5lcmljIEludGVy cnVwdCBDb250cm9sbGVyIERlZmluaXRpb25zICovCisvLyNpZmRlZiBDT05GSUdfR0lDVjMKKy8v I2RlZmluZSBHSUNEX0JBU0UgICAgICAgICAgICAgICAgICAgICAgICgweDJmMDAwMDAwKQorLy8j ZGVmaW5lIEdJQ1JfQkFTRSAgICAgICAgICAgICAgICAgICAgICAgKDB4MmYxMDAwMDApCisvLyNl bHNlCisKKy8vI2lmIGRlZmluZWQoQ09ORklHX1RBUkdFVF9WRVhQUkVTUzY0X0JBU0VfRlZQKSB8 fCBcCisgICAgICAgIGRlZmluZWQoQ09ORklHX1RBUkdFVF9WRVhQUkVTUzY0X0JBU0VfRlZQX0RS QU0pCisvLyNkZWZpbmUgR0lDRF9CQVNFICAgICAgICAgICAgICAgICAgICAgICAoMHgyZjAwMDAw MCkKKy8vI2RlZmluZSBHSUNDX0JBU0UgICAgICAgICAgICAgICAgICAgICAgICgweDJjMDAwMDAw KQorLy8jZWxpZiBDT05GSUdfVEFSR0VUX1ZFWFBSRVNTNjRfSlVOTworI2RlZmluZSBHSUNfRElT VF9CQVNFICAgICAgICAgICAgICAgICAgICAgICAoMHgyQzAxMDAwMCkKKyNkZWZpbmUgR0lDX0NQ VV9CQVNFICAgICAgICAgICAgICAgICAgICAgICAoMHgyQzAyZjAwMCkKKy8vI2Vsc2UKKy8vI2Vy cm9yICJVbmtub3duIGJvYXJkIHZhcmlhbnQiCisvLyNlbmRpZgorLy8jZW5kaWYgLyogIUNPTkZJ R19HSUNWMyAqLworCisvKiBSZWdpc3RlciBvZmZzZXRzIGZvciB0aGUgQVJNIGdlbmVyaWMgaW50 ZXJydXB0IGNvbnRyb2xsZXIgKEdJQykgKi8KKworI2RlZmluZSBHSUNfRElTVF9PRkZTRVQJCTB4 MTAwMAorI2RlZmluZSBHSUNfQ1BVX09GRlNFVF9BOQkweDAxMDAKKyNkZWZpbmUgR0lDX0NQVV9P RkZTRVRfQTE1CTB4MjAwMAorCisvKiBEaXN0cmlidXRvciBSZWdpc3RlcnMgKi8KKyNkZWZpbmUg R0lDRF9DVExSCQkweDAwMDAKKyNkZWZpbmUgR0lDRF9UWVBFUgkJMHgwMDA0CisjZGVmaW5lIEdJ Q0RfSUlEUgkJMHgwMDA4CisjZGVmaW5lIEdJQ0RfU1RBVFVTUgkJMHgwMDEwCisjZGVmaW5lIEdJ Q0RfU0VUU1BJX05TUgkJMHgwMDQwCisjZGVmaW5lIEdJQ0RfQ0xSU1BJX05TUgkJMHgwMDQ4Cisj ZGVmaW5lIEdJQ0RfU0VUU1BJX1NSCQkweDAwNTAKKyNkZWZpbmUgR0lDRF9DTFJTUElfU1IJCTB4 MDA1OAorI2RlZmluZSBHSUNEX1NFSVIJCTB4MDA2OAorI2RlZmluZSBHSUNEX0lHUk9VUFJuCQkw eDAwODAKKyNkZWZpbmUgR0lDRF9JU0VOQUJMRVJuCQkweDAxMDAKKyNkZWZpbmUgR0lDRF9JQ0VO QUJMRVJuCQkweDAxODAKKyNkZWZpbmUgR0lDRF9JU1BFTkRSbgkJMHgwMjAwCisjZGVmaW5lIEdJ Q0RfSUNQRU5EUm4JCTB4MDI4MAorI2RlZmluZSBHSUNEX0lTQUNUSVZFUm4JCTB4MDMwMAorI2Rl ZmluZSBHSUNEX0lDQUNUSVZFUm4JCTB4MDM4MAorI2RlZmluZSBHSUNEX0lQUklPUklUWVJuCTB4 MDQwMAorI2RlZmluZSBHSUNEX0lUQVJHRVRTUm4JCTB4MDgwMAorI2RlZmluZSBHSUNEX0lDRkdS CQkweDBjMDAKKyNkZWZpbmUgR0lDRF9JR1JPVVBNT0RSbgkweDBkMDAKKyNkZWZpbmUgR0lDRF9O U0FDUm4JCTB4MGUwMAorI2RlZmluZSBHSUNEX1NHSVIJCTB4MGYwMAorI2RlZmluZSBHSUNEX0NQ RU5EU0dJUm4JCTB4MGYxMAorI2RlZmluZSBHSUNEX1NQRU5EU0dJUm4JCTB4MGYyMAorI2RlZmlu ZSBHSUNEX0lST1VURVJuCQkweDYwMDAKKworLyogQ3B1IEludGVyZmFjZSBNZW1vcnkgTWFwcGVk IFJlZ2lzdGVycyAqLworI2RlZmluZSBHSUNDX0NUTFIJCTB4MDAwMAorI2RlZmluZSBHSUNDX1BN UgkJMHgwMDA0CisjZGVmaW5lIEdJQ0NfQlBSCQkweDAwMDgKKyNkZWZpbmUgR0lDQ19JQVIJCTB4 MDAwQworI2RlZmluZSBHSUNDX0VPSVIJCTB4MDAxMAorI2RlZmluZSBHSUNDX1JQUgkJMHgwMDE0 CisjZGVmaW5lIEdJQ0NfSFBQSVIJCTB4MDAxOAorI2RlZmluZSBHSUNDX0FCUFIJCTB4MDAxYwor I2RlZmluZSBHSUNDX0FJQVIJCTB4MDAyMAorI2RlZmluZSBHSUNDX0FFT0lSCQkweDAwMjQKKyNk ZWZpbmUgR0lDQ19BSFBQSVIJCTB4MDAyOAorI2RlZmluZSBHSUNDX0FQUm4JCTB4MDBkMAorI2Rl ZmluZSBHSUNDX05TQVBSbgkJMHgwMGUwCisjZGVmaW5lIEdJQ0NfSUlEUgkJMHgwMGZjCisjZGVm aW5lIEdJQ0NfRElSCQkweDEwMDAKKworLyogUmVEaXN0cmlidXRvciBSZWdpc3RlcnMgZm9yIENv bnRyb2wgYW5kIFBoeXNpY2FsIExQSXMgKi8KKyNkZWZpbmUgR0lDUl9DVExSCQkweDAwMDAKKyNk ZWZpbmUgR0lDUl9JSURSCQkweDAwMDQKKyNkZWZpbmUgR0lDUl9UWVBFUgkJMHgwMDA4CisjZGVm aW5lIEdJQ1JfU1RBVFVTUgkJMHgwMDEwCisjZGVmaW5lIEdJQ1JfV0FLRVIJCTB4MDAxNAorI2Rl ZmluZSBHSUNSX1NFVExQSVIJCTB4MDA0MAorI2RlZmluZSBHSUNSX0NMUkxQSVIJCTB4MDA0OAor I2RlZmluZSBHSUNSX1NFSVIJCTB4MDA2OAorI2RlZmluZSBHSUNSX1BST1BCQVNFUgkJMHgwMDcw CisjZGVmaW5lIEdJQ1JfUEVOREJBU0VSCQkweDAwNzgKKyNkZWZpbmUgR0lDUl9JTlZMUElSCQkw eDAwYTAKKyNkZWZpbmUgR0lDUl9JTlZBTExSCQkweDAwYjAKKyNkZWZpbmUgR0lDUl9TWU5DUgkJ MHgwMGMwCisjZGVmaW5lIEdJQ1JfTU9WTFBJUgkJMHgwMTAwCisjZGVmaW5lIEdJQ1JfTU9WQUxM UgkJMHgwMTEwCisKKy8qIFJlRGlzdHJpYnV0b3IgUmVnaXN0ZXJzIGZvciBTR0lzIGFuZCBQUElz ICovCisjZGVmaW5lIEdJQ1JfSUdST1VQUm4JCTB4MDA4MAorI2RlZmluZSBHSUNSX0lTRU5BQkxF Um4JCTB4MDEwMAorI2RlZmluZSBHSUNSX0lDRU5BQkxFUm4JCTB4MDE4MAorI2RlZmluZSBHSUNS X0lTUEVORFJuCQkweDAyMDAKKyNkZWZpbmUgR0lDUl9JQ1BFTkRSbgkJMHgwMjgwCisjZGVmaW5l IEdJQ1JfSVNBQ1RJVkVSbgkJMHgwMzAwCisjZGVmaW5lIEdJQ1JfSUNBQ1RJVkVSbgkJMHgwMzgw CisjZGVmaW5lIEdJQ1JfSVBSSU9SSVRZUm4JMHgwNDAwCisjZGVmaW5lIEdJQ1JfSUNGR1IwCQkw eDBjMDAKKyNkZWZpbmUgR0lDUl9JQ0ZHUjEJCTB4MGMwNAorI2RlZmluZSBHSUNSX0lHUk9VUE1P RFJuCTB4MGQwMAorI2RlZmluZSBHSUNSX05TQUNSbgkJMHgwZTAwCisKKy8qIENwdSBJbnRlcmZh Y2UgU3lzdGVtIFJlZ2lzdGVycyAqLworI2RlZmluZSBJQ0NfSUFSMF9FTDEJCVMzXzBfQzEyX0M4 XzAKKyNkZWZpbmUgSUNDX0lBUjFfRUwxCQlTM18wX0MxMl9DMTJfMAorI2RlZmluZSBJQ0NfRU9J UjBfRUwxCQlTM18wX0MxMl9DOF8xCisjZGVmaW5lIElDQ19FT0lSMV9FTDEJCVMzXzBfQzEyX0Mx Ml8xCisjZGVmaW5lIElDQ19IUFBJUjBfRUwxCQlTM18wX0MxMl9DOF8yCisjZGVmaW5lIElDQ19I UFBJUjFfRUwxCQlTM18wX0MxMl9DMTJfMgorI2RlZmluZSBJQ0NfQlBSMF9FTDEJCVMzXzBfQzEy X0M4XzMKKyNkZWZpbmUgSUNDX0JQUjFfRUwxCQlTM18wX0MxMl9DMTJfMworI2RlZmluZSBJQ0Nf RElSX0VMMQkJUzNfMF9DMTJfQzExXzEKKyNkZWZpbmUgSUNDX1BNUl9FTDEJCVMzXzBfQzRfQzZf MAorI2RlZmluZSBJQ0NfUlBSX0VMMQkJUzNfMF9DMTJfQzExXzMKKyNkZWZpbmUgSUNDX0NUTFJf RUwxCQlTM18wX0MxMl9DMTJfNAorI2RlZmluZSBJQ0NfQ1RMUl9FTDMJCVMzXzZfQzEyX0MxMl80 CisjZGVmaW5lIElDQ19TUkVfRUwxCQlTM18wX0MxMl9DMTJfNQorI2RlZmluZSBJQ0NfU1JFX0VM MgkJUzNfNF9DMTJfQzlfNQorI2RlZmluZSBJQ0NfU1JFX0VMMwkJUzNfNl9DMTJfQzEyXzUKKyNk ZWZpbmUgSUNDX0lHUlBFTjBfRUwxCQlTM18wX0MxMl9DMTJfNgorI2RlZmluZSBJQ0NfSUdSUEVO MV9FTDEJCVMzXzBfQzEyX0MxMl83CisjZGVmaW5lIElDQ19JR1JQRU4xX0VMMwkJUzNfNl9DMTJf QzEyXzcKKyNkZWZpbmUgSUNDX1NFSUVOX0VMMQkJUzNfMF9DMTJfQzEzXzAKKyNkZWZpbmUgSUND X1NHSTBSX0VMMQkJUzNfMF9DMTJfQzExXzcKKyNkZWZpbmUgSUNDX1NHSTFSX0VMMQkJUzNfMF9D MTJfQzExXzUKKyNkZWZpbmUgSUNDX0FTR0kxUl9FTDEJCVMzXzBfQzEyX0MxMV82CisKKyNlbmRp ZiAvKiBfX0dJQ19IX18gKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vaGFy ZHdhcmUvYXJtX3RpbWVyLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2hhcmR3YXJlL2FybV90 aW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhNTgzOTAKLS0tIC9k ZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2hhcmR3YXJlL2FybV90aW1lci5o CkBAIC0wLDAgKzEsMzggQEAKKyNpZm5kZWYgX19BU01fQVJNX0hBUkRXQVJFX0FSTV9USU1FUl9I CisjZGVmaW5lIF9fQVNNX0FSTV9IQVJEV0FSRV9BUk1fVElNRVJfSAorCisvKgorICogRnJvbSBM aW51eCB2Mi42LjM1CisgKiBhcmNoL2FybS9pbmNsdWRlL2FzbS9oYXJkd2FyZS9hcm1fdGltZXIu aAorICoKKyAqIEFSTSB0aW1lciBpbXBsZW1lbnRhdGlvbiwgZm91bmQgaW4gSW50ZWdyYXRvciwg VmVyc2F0aWxlIGFuZCBSZWFsdmlldworICogcGxhdGZvcm1zLiAgTm90IGFsbCBwbGF0Zm9ybXMg c3VwcG9ydCBhbGwgcmVnaXN0ZXJzIGFuZCBiaXRzIGluIHRoZXNlCisgKiByZWdpc3RlcnMsIHNv IHdlIG1hcmsgdGhlbSB3aXRoIEEgZm9yIEludGVncmF0b3IgQVAsIEMgZm9yIEludGVncmF0b3IK KyAqIENQLCBWIGZvciBWZXJzYXRpbGUgYW5kIFIgZm9yIFJlYWx2aWV3LgorICoKKyAqIEludGVn cmF0b3IgQVAgaGFzIDE2LWJpdCB0aW1lcnMsIEludGVncmF0b3IgQ1AsIFZlcnNhdGlsZSBhbmQg UmVhbHZpZXcKKyAqIGNhbiBoYXZlIDE2LWJpdCBvciAzMi1iaXQgc2VsZWN0YWJsZSB2aWEgYSBi aXQgaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXIuCisgKgorICogRXZlcnkgU1A4MDQgY29udGFpbnMg dHdvIGlkZW50aWNhbCB0aW1lcnMuCisgKi8KKyNkZWZpbmUgVElNRVJfMV9CQVNFCTB4MDAKKyNk ZWZpbmUgVElNRVJfMl9CQVNFCTB4MjAKKworI2RlZmluZSBUSU1FUl9MT0FECTB4MDAJCQkvKiBB Q1ZSIHJ3ICovCisjZGVmaW5lIFRJTUVSX1ZBTFVFCTB4MDQJCQkvKiBBQ1ZSIHJvICovCisjZGVm aW5lIFRJTUVSX0NUUkwJMHgwOAkJCS8qIEFDVlIgcncgKi8KKyNkZWZpbmUgVElNRVJfQ1RSTF9P TkVTSE9UCSgxIDw8IDApCS8qICBDVlIgKi8KKyNkZWZpbmUgVElNRVJfQ1RSTF8zMkJJVAkoMSA8 PCAxKQkvKiAgQ1ZSICovCisjZGVmaW5lIFRJTUVSX0NUUkxfRElWMQkJKDAgPDwgMikJLyogQUNW UiAqLworI2RlZmluZSBUSU1FUl9DVFJMX0RJVjE2CSgxIDw8IDIpCS8qIEFDVlIgKi8KKyNkZWZp bmUgVElNRVJfQ1RSTF9ESVYyNTYJKDIgPDwgMikJLyogQUNWUiAqLworI2RlZmluZSBUSU1FUl9D VFJMX0lFCQkoMSA8PCA1KQkvKiAgIFZSICovCisjZGVmaW5lIFRJTUVSX0NUUkxfUEVSSU9ESUMJ KDEgPDwgNikJLyogQUNWUiAqLworI2RlZmluZSBUSU1FUl9DVFJMX0VOQUJMRQkoMSA8PCA3KQkv KiBBQ1ZSICovCisKKyNkZWZpbmUgVElNRVJfSU5UQ0xSCTB4MGMJCQkvKiBBQ1ZSIHdvICovCisj ZGVmaW5lIFRJTUVSX1JJUwkweDEwCQkJLyogIENWUiBybyAqLworI2RlZmluZSBUSU1FUl9NSVMJ MHgxNAkJCS8qICBDVlIgcm8gKi8KKyNkZWZpbmUgVElNRVJfQkdMT0FECTB4MTgJCQkvKiAgQ1ZS IHJ3ICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9oYXJk d2FyZS9zcDgxMC5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9oYXJkd2FyZS9zcDgxMC5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMzk5NmEKLS0tIC9kZXYvbnVsbAor KysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2hhcmR3YXJlL3NwODEwLmgKQEAgLTAsMCArMSw2 OCBAQAorLyoKKyAqIGFyY2gvYXJtL2luY2x1ZGUvYXNtL2hhcmR3YXJlL3NwODEwLmgKKyAqCisg KiBBUk0gUHJpbWVYc3lzIFN5c3RlbSBDb250cm9sbGVyIFNQODEwIGhlYWRlciBmaWxlCisgKgor ICogQ29weXJpZ2h0IChDKSAyMDA5IFNUIE1pY3JvZWxlY3Ryb25pY3MKKyAqIFZpcmVzaCBLdW1h ciA8dmlyZXNoLmxpbnV4QGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgdmVy c2lvbiAyLiBUaGlzIHByb2dyYW0gaXMgbGljZW5zZWQgImFzIGlzIiB3aXRob3V0IGFueQorICog d2FycmFudHkgb2YgYW55IGtpbmQsIHdoZXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICovCisK KyNpZm5kZWYgX19BU01fQVJNX1NQODEwX0gKKyNkZWZpbmUgX19BU01fQVJNX1NQODEwX0gKKwor I2luY2x1ZGUgPGlvLmg+CisKKy8qIHN5c2N0bCByZWdpc3RlcnMgb2Zmc2V0ICovCisjZGVmaW5l IFNDQ1RSTAkJCTB4MDAwCisjZGVmaW5lIFNDU1lTU1RBVAkJMHgwMDQKKyNkZWZpbmUgU0NJTUNU UkwJCTB4MDA4CisjZGVmaW5lIFNDSU1TVEFUCQkweDAwQworI2RlZmluZSBTQ1hUQUxDVFJMCQkw eDAxMAorI2RlZmluZSBTQ1BMTENUUkwJCTB4MDE0CisjZGVmaW5lIFNDUExMRkNUUkwJCTB4MDE4 CisjZGVmaW5lIFNDUEVSQ1RSTDAJCTB4MDFDCisjZGVmaW5lIFNDUEVSQ1RSTDEJCTB4MDIwCisj ZGVmaW5lIFNDUEVSRU4JCQkweDAyNAorI2RlZmluZSBTQ1BFUkRJUwkJMHgwMjgKKyNkZWZpbmUg U0NQRVJDTEtFTgkJMHgwMkMKKyNkZWZpbmUgU0NQRVJTVEFUCQkweDAzMAorI2RlZmluZSBTQ1NZ U0lEMAkJMHhFRTAKKyNkZWZpbmUgU0NTWVNJRDEJCTB4RUU0CisjZGVmaW5lIFNDU1lTSUQyCQkw eEVFOAorI2RlZmluZSBTQ1NZU0lEMwkJMHhFRUMKKyNkZWZpbmUgU0NJVENSCQkJMHhGMDAKKyNk ZWZpbmUgU0NJVElSMAkJCTB4RjA0CisjZGVmaW5lIFNDSVRJUjEJCQkweEYwOAorI2RlZmluZSBT Q0lUT1IJCQkweEYwQworI2RlZmluZSBTQ0NOVENUUkwJCTB4RjEwCisjZGVmaW5lIFNDQ05UREFU QQkJMHhGMTQKKyNkZWZpbmUgU0NDTlRTVEVQCQkweEYxOAorI2RlZmluZSBTQ1BFUklQSElEMAkJ MHhGRTAKKyNkZWZpbmUgU0NQRVJJUEhJRDEJCTB4RkU0CisjZGVmaW5lIFNDUEVSSVBISUQyCQkw eEZFOAorI2RlZmluZSBTQ1BFUklQSElEMwkJMHhGRUMKKyNkZWZpbmUgU0NQQ0VMTElEMAkJMHhG RjAKKyNkZWZpbmUgU0NQQ0VMTElEMQkJMHhGRjQKKyNkZWZpbmUgU0NQQ0VMTElEMgkJMHhGRjgK KyNkZWZpbmUgU0NQQ0VMTElEMwkJMHhGRkMKKworI2RlZmluZSBTQ0NUUkxfVElNRVJFTjBTRUxf UkVGQ0xLCSgwIDw8IDE1KQorI2RlZmluZSBTQ0NUUkxfVElNRVJFTjBTRUxfVElNQ0xLCSgxIDw8 IDE1KQorCisjZGVmaW5lIFNDQ1RSTF9USU1FUkVOMVNFTF9SRUZDTEsJKDAgPDwgMTcpCisjZGVm aW5lIFNDQ1RSTF9USU1FUkVOMVNFTF9USU1DTEsJKDEgPDwgMTcpCisKK3N0YXRpYyBpbmxpbmUg dm9pZCBzeXNjdGxfc29mdF9yZXNldCh2b2lkIF9faW9tZW0gKmJhc2UpCit7CisJLyogc3dpdGNo IHRvIHNsb3cgbW9kZSAqLworCXdyaXRlbCgweDIsIGJhc2UgKyBTQ0NUUkwpOworCisJLyogd3Jp dGluZyBhbnkgdmFsdWUgdG8gU0NTWVNTVEFUIHJlZyB3aWxsIHJlc2V0IHN5c3RlbSAqLworCXdy aXRlbCgwLCBiYXNlICsgU0NTWVNTVEFUKTsKK30KKworI2VuZGlmCS8qIF9fQVNNX0FSTV9TUDgx MF9IICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2lvLmggYi9hcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL2lvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZWViZjA5MwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vaW8uaApA QCAtMCwwICsxLDg3IEBACisjaWZuZGVmIF9fQVNNX0FSTV9JT19ICisjZGVmaW5lIF9fQVNNX0FS TV9JT19ICisKKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9pby5oPgorCisjZGVmaW5lCUlPX1NQQUNF X0xJTUlUCTAKKworLyoKKyAqIFN0cmluZyB2ZXJzaW9uIG9mIElPIG1lbW9yeSBhY2Nlc3Mgb3Bz OgorICovCitleHRlcm4gdm9pZCBtZW1jcHlfZnJvbWlvKHZvaWQgKiwgY29uc3Qgdm9sYXRpbGUg dm9pZCBfX2lvbWVtICosIHNpemVfdCk7CitleHRlcm4gdm9pZCBtZW1jcHlfdG9pbyh2b2xhdGls ZSB2b2lkIF9faW9tZW0gKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOworZXh0ZXJuIHZvaWQgbWVt c2V0X2lvKHZvbGF0aWxlIHZvaWQgX19pb21lbSAqLCBpbnQsIHNpemVfdCk7CisKKy8qCisgKiBD bGVhciBhbmQgc2V0IGJpdHMgaW4gb25lIHNob3QuIFRoZXNlIG1hY3JvcyBjYW4gYmUgdXNlZCB0 byBjbGVhciBhbmQKKyAqIHNldCBtdWx0aXBsZSBiaXRzIGluIGEgcmVnaXN0ZXIgdXNpbmcgYSBz aW5nbGUgY2FsbC4gVGhlc2UgbWFjcm9zIGNhbgorICogYWxzbyBiZSB1c2VkIHRvIHNldCBhIG11 bHRpcGxlLWJpdCBiaXQgcGF0dGVybiB1c2luZyBhIG1hc2ssIGJ5CisgKiBzcGVjaWZ5aW5nIHRo ZSBtYXNrIGluIHRoZSAnY2xlYXInIHBhcmFtZXRlciBhbmQgdGhlIG5ldyBiaXQgcGF0dGVybgor ICogaW4gdGhlICdzZXQnIHBhcmFtZXRlci4KKyAqLworCisjZGVmaW5lIG91dF9hcmNoKHR5cGUs ZW5kaWFuLGEsdikJX19yYXdfd3JpdGUjI3R5cGUoY3B1X3RvXyMjZW5kaWFuKHYpLGEpCisjZGVm aW5lIGluX2FyY2godHlwZSxlbmRpYW4sYSkJCWVuZGlhbiMjX3RvX2NwdShfX3Jhd19yZWFkIyN0 eXBlKGEpKQorCisjZGVmaW5lIG91dF9sZTY0KGEsdikJb3V0X2FyY2gocSxsZTY0LGEsdikKKyNk ZWZpbmUgb3V0X2xlMzIoYSx2KQlvdXRfYXJjaChsLGxlMzIsYSx2KQorI2RlZmluZSBvdXRfbGUx NihhLHYpCW91dF9hcmNoKHcsbGUxNixhLHYpCisKKyNkZWZpbmUgaW5fbGU2NChhKQlpbl9hcmNo KHEsbGU2NCxhKQorI2RlZmluZSBpbl9sZTMyKGEpCWluX2FyY2gobCxsZTMyLGEpCisjZGVmaW5l IGluX2xlMTYoYSkJaW5fYXJjaCh3LGxlMTYsYSkKKworI2RlZmluZSBvdXRfYmUzMihhLHYpCW91 dF9hcmNoKGwsYmUzMixhLHYpCisjZGVmaW5lIG91dF9iZTE2KGEsdikJb3V0X2FyY2godyxiZTE2 LGEsdikKKworI2RlZmluZSBpbl9iZTMyKGEpCWluX2FyY2gobCxiZTMyLGEpCisjZGVmaW5lIGlu X2JlMTYoYSkJaW5fYXJjaCh3LGJlMTYsYSkKKworI2RlZmluZSBvdXRfOChhLHYpCV9fcmF3X3dy aXRlYih2LGEpCisjZGVmaW5lIGluXzgoYSkJCV9fcmF3X3JlYWRiKGEpCisKKyNkZWZpbmUgY2xy Yml0cyh0eXBlLCBhZGRyLCBjbGVhcikgXAorCW91dF8jI3R5cGUoKGFkZHIpLCBpbl8jI3R5cGUo YWRkcikgJiB+KGNsZWFyKSkKKworI2RlZmluZSBzZXRiaXRzKHR5cGUsIGFkZHIsIHNldCkgXAor CW91dF8jI3R5cGUoKGFkZHIpLCBpbl8jI3R5cGUoYWRkcikgfCAoc2V0KSkKKworI2RlZmluZSBj bHJzZXRiaXRzKHR5cGUsIGFkZHIsIGNsZWFyLCBzZXQpIFwKKwlvdXRfIyN0eXBlKChhZGRyKSwg KGluXyMjdHlwZShhZGRyKSAmIH4oY2xlYXIpKSB8IChzZXQpKQorCisjZGVmaW5lIGNscmJpdHNf YmUzMihhZGRyLCBjbGVhcikgY2xyYml0cyhiZTMyLCBhZGRyLCBjbGVhcikKKyNkZWZpbmUgc2V0 Yml0c19iZTMyKGFkZHIsIHNldCkgc2V0Yml0cyhiZTMyLCBhZGRyLCBzZXQpCisjZGVmaW5lIGNs cnNldGJpdHNfYmUzMihhZGRyLCBjbGVhciwgc2V0KSBjbHJzZXRiaXRzKGJlMzIsIGFkZHIsIGNs ZWFyLCBzZXQpCisKKyNkZWZpbmUgY2xyYml0c19sZTMyKGFkZHIsIGNsZWFyKSBjbHJiaXRzKGxl MzIsIGFkZHIsIGNsZWFyKQorI2RlZmluZSBzZXRiaXRzX2xlMzIoYWRkciwgc2V0KSBzZXRiaXRz KGxlMzIsIGFkZHIsIHNldCkKKyNkZWZpbmUgY2xyc2V0Yml0c19sZTMyKGFkZHIsIGNsZWFyLCBz ZXQpIGNscnNldGJpdHMobGUzMiwgYWRkciwgY2xlYXIsIHNldCkKKworI2RlZmluZSBjbHJiaXRz X2JlMTYoYWRkciwgY2xlYXIpIGNscmJpdHMoYmUxNiwgYWRkciwgY2xlYXIpCisjZGVmaW5lIHNl dGJpdHNfYmUxNihhZGRyLCBzZXQpIHNldGJpdHMoYmUxNiwgYWRkciwgc2V0KQorI2RlZmluZSBj bHJzZXRiaXRzX2JlMTYoYWRkciwgY2xlYXIsIHNldCkgY2xyc2V0Yml0cyhiZTE2LCBhZGRyLCBj bGVhciwgc2V0KQorCisjZGVmaW5lIGNscmJpdHNfbGUxNihhZGRyLCBjbGVhcikgY2xyYml0cyhs ZTE2LCBhZGRyLCBjbGVhcikKKyNkZWZpbmUgc2V0Yml0c19sZTE2KGFkZHIsIHNldCkgc2V0Yml0 cyhsZTE2LCBhZGRyLCBzZXQpCisjZGVmaW5lIGNscnNldGJpdHNfbGUxNihhZGRyLCBjbGVhciwg c2V0KSBjbHJzZXRiaXRzKGxlMTYsIGFkZHIsIGNsZWFyLCBzZXQpCisKKyNkZWZpbmUgY2xyYml0 c184KGFkZHIsIGNsZWFyKSBjbHJiaXRzKDgsIGFkZHIsIGNsZWFyKQorI2RlZmluZSBzZXRiaXRz XzgoYWRkciwgc2V0KSBzZXRiaXRzKDgsIGFkZHIsIHNldCkKKyNkZWZpbmUgY2xyc2V0Yml0c184 KGFkZHIsIGNsZWFyLCBzZXQpIGNscnNldGJpdHMoOCwgYWRkciwgY2xlYXIsIHNldCkKKworI2lm ZGVmIENPTkZJR19NTVUKK3ZvaWQgKnBoeXNfdG9fdmlydCh1bnNpZ25lZCBsb25nIHBoeXMpOwor dW5zaWduZWQgbG9uZyB2aXJ0X3RvX3BoeXModm9sYXRpbGUgdm9pZCAqdmlydCk7CisjZWxzZQor c3RhdGljIGlubGluZSB2b2lkICpwaHlzX3RvX3ZpcnQodW5zaWduZWQgbG9uZyBwaHlzKQorewor CXJldHVybiAodm9pZCAqKXBoeXM7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB2 aXJ0X3RvX3BoeXModm9sYXRpbGUgdm9pZCAqbWVtKQoreworCXJldHVybiAodW5zaWduZWQgbG9u ZyltZW07Cit9CisjZW5kaWYKKworI2VuZGlmCS8qIF9fQVNNX0FSTV9JT19IICovCmRpZmYgLS1n aXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2xpbmthZ2UuaCBiL2FyY2gvYXJtNjQvaW5jbHVk ZS9hc20vbGlua2FnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMjU2 MzIKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2xpbmthZ2UuaApA QCAtMCwwICsxLDExIEBACisjaWZuZGVmIF9fQVNNX0xJTktBR0VfSAorI2RlZmluZSBfX0FTTV9M SU5LQUdFX0gKKworI2RlZmluZSBfX0FMSUdOIC5hbGlnbiAwCisjZGVmaW5lIF9fQUxJR05fU1RS ICIuYWxpZ24gMCIKKworI2RlZmluZSBFTkRQUk9DKG5hbWUpIFwKKyAgLnR5cGUgbmFtZSwgJWZ1 bmN0aW9uOyBcCisgIEVORChuYW1lKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQv aW5jbHVkZS9hc20vbWVtb3J5LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21lbW9yeS5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMTE0ZDAKLS0tIC9kZXYvbnVsbAor KysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21lbW9yeS5oCkBAIC0wLDAgKzEsMTkgQEAKKyNp Zm5kZWYgX19BU01fQVJNX01FTU9SWV9ICisjZGVmaW5lIF9fQVNNX0FSTV9NRU1PUllfSAorCisj aW5jbHVkZSA8bWVtb3J5Lmg+CisKKyNpbmNsdWRlIDxsaW51eC9jb25zdC5oPgorLyoKKyAqIEFs bG93IGZvciBjb25zdGFudHMgZGVmaW5lZCBoZXJlIHRvIGJlIHVzZWQgZnJvbSBhc3NlbWJseSBj b2RlCisgKiBieSBwcmVwZW5kaW5nIHRoZSBVTCBzdWZmaXggb25seSB3aXRoIGFjdHVhbCBDIGNv ZGUgY29tcGlsYXRpb24uCisgKi8KKyNkZWZpbmUgVUwoeCkgX0FDKHgsIFVMKQorCitzdGF0aWMg aW5saW5lIHZvaWQgYXJtX2FkZF9tZW1fZGV2aWNlKGNvbnN0IGNoYXIqIG5hbWUsIHJlc291cmNl X3NpemVfdCBzdGFydCwKKwkJCQkgICAgcmVzb3VyY2Vfc2l6ZV90IHNpemUpCit7CisJYmFyZWJv eF9hZGRfbWVtb3J5X2JhbmsobmFtZSwgc3RhcnQsIHNpemUpOworfQorCisjZW5kaWYJLyogX19B U01fQVJNX01FTU9SWV9IICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21t dS5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tbXUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi44ZGU2NTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9tbXUuaApAQCAtMCwwICsxLDY1IEBACisjaWZuZGVmIF9fQVNNX01NVV9ICisjZGVm aW5lIF9fQVNNX01NVV9ICisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxlcnJuby5o PgorI2luY2x1ZGUgPG1hbGxvYy5oPgorI2luY2x1ZGUgPHhmdW5jcy5oPgorCisjaW5jbHVkZSA8 YXNtL3BndGFibGUuaD4KKworI2RlZmluZSBQTURfU0VDVF9ERUZfVU5DQUNIRUQgKFBNRF9TRUNU X0FQX1dSSVRFIHwgUE1EX1NFQ1RfQVBfUkVBRCB8IFBNRF9UWVBFX1NFQ1QpCisjZGVmaW5lIFBN RF9TRUNUX0RFRl9DQUNIRUQgKFBNRF9TRUNUX1dCIHwgUE1EX1NFQ1RfREVGX1VOQ0FDSEVEKQor CitzdHJ1Y3QgYXJtX21lbW9yeTsKKworc3RhdGljIGlubGluZSB2b2lkIG1tdV9lbmFibGUodm9p ZCkKK3sKK30KK3ZvaWQgbW11X2Rpc2FibGUodm9pZCk7CitzdGF0aWMgaW5saW5lIHZvaWQgYXJt X2NyZWF0ZV9zZWN0aW9uKHVuc2lnbmVkIGxvbmcgdmlydCwgdW5zaWduZWQgbG9uZyBwaHlzLCBp bnQgc2l6ZV9tLAorCQl1bnNpZ25lZCBpbnQgZmxhZ3MpCit7Cit9CisKK3N0YXRpYyBpbmxpbmUg dm9pZCBzZXR1cF9kbWFfY29oZXJlbnQodW5zaWduZWQgbG9uZyBvZmZzZXQpCit7Cit9CisKKyNp ZmRlZiBDT05GSUdfTU1VCisjZGVmaW5lIEFSQ0hfSEFTX1JFTUFQCisjZGVmaW5lIE1BUF9BUkNI X0RFRkFVTFQgTUFQX0NBQ0hFRAoraW50IGFyY2hfcmVtYXBfcmFuZ2Uodm9pZCAqX3N0YXJ0LCBz aXplX3Qgc2l6ZSwgdW5zaWduZWQgZmxhZ3MpOwordm9pZCAqbWFwX2lvX3NlY3Rpb25zKHVuc2ln bmVkIGxvbmcgcGh5c2FkZHIsIHZvaWQgKnN0YXJ0LCBzaXplX3Qgc2l6ZSk7CisjZWxzZQorI2Rl ZmluZSBNQVBfQVJDSF9ERUZBVUxUIE1BUF9VTkNBQ0hFRAorc3RhdGljIGlubGluZSB2b2lkICpt YXBfaW9fc2VjdGlvbnModW5zaWduZWQgbG9uZyBwaHlzLCB2b2lkICpzdGFydCwgc2l6ZV90IHNp emUpCit7CisJcmV0dXJuICh2b2lkICopcGh5czsKK30KKworI2VuZGlmCisKKyNpZmRlZiBDT05G SUdfQ0FDSEVfTDJYMAordm9pZCBfX2luaXQgbDJ4MF9pbml0KHZvaWQgX19pb21lbSAqYmFzZSwg X191MzIgYXV4X3ZhbCwgX191MzIgYXV4X21hc2spOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9p ZCBfX2luaXQgbDJ4MF9pbml0KHZvaWQgX19pb21lbSAqYmFzZSwgX191MzIgYXV4X3ZhbCwgX191 MzIgYXV4X21hc2spCit7Cit9CisjZW5kaWYKKworc3RydWN0IG91dGVyX2NhY2hlX2ZucyB7CisJ dm9pZCAoKmludl9yYW5nZSkodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CisJdm9pZCAo KmNsZWFuX3JhbmdlKSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKKwl2b2lkICgqZmx1 c2hfcmFuZ2UpKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOworCXZvaWQgKCpmbHVzaF9h bGwpKHZvaWQpOworCXZvaWQgKCpkaXNhYmxlKSh2b2lkKTsKK307CisKK2V4dGVybiBzdHJ1Y3Qg b3V0ZXJfY2FjaGVfZm5zIG91dGVyX2NhY2hlOworCit2b2lkIF9fZG1hX2NsZWFuX3JhbmdlKHVu c2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwordm9pZCBfX2RtYV9mbHVzaF9yYW5nZSh1bnNp Z25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKK3ZvaWQgX19kbWFfaW52X3JhbmdlKHVuc2lnbmVk IGxvbmcsIHVuc2lnbmVkIGxvbmcpOworCisjZW5kaWYgLyogX19BU01fTU1VX0ggKi8KZGlmZiAt LWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW9kdWxlLmggYi9hcmNoL2FybTY0L2luY2x1 ZGUvYXNtL21vZHVsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNGQx YTMKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21vZHVsZS5oCkBA IC0wLDAgKzEsMTMgQEAKKyNpZm5kZWYgX0FTTV9BUk1fTU9EVUxFX0gKKyNkZWZpbmUgX0FTTV9B Uk1fTU9EVUxFX0gKKworc3RydWN0IG1vZF9hcmNoX3NwZWNpZmljCit7CisJaW50IGZvbzsKK307 CisKKyNkZWZpbmUgRWxmX1NoZHIJRWxmMzJfU2hkcgorI2RlZmluZSBFbGZfU3ltCQlFbGYzMl9T eW0KKyNkZWZpbmUgRWxmX0VoZHIJRWxmMzJfRWhkcgorCisjZW5kaWYgLyogX0FTTV9BUk1fTU9E VUxFX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oIGIv YXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZmQxNTIxZAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVk ZS9hc20vcGd0YWJsZS5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiAgYXJjaC9hcm0vaW5jbHVk ZS9hc20vcGd0YWJsZS1od2RlZi5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NS0yMDAyIFJ1 c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKyNpZm5kZWYgX0FTTUFSTV9Q R1RBQkxFX0hXREVGX0gKKyNkZWZpbmUgX0FTTUFSTV9QR1RBQkxFX0hXREVGX0gKKworLyoKKyAq IEhhcmR3YXJlIHBhZ2UgdGFibGUgZGVmaW5pdGlvbnMuCisgKgorICogKyBMZXZlbCAxIGRlc2Ny aXB0b3IgKFBNRCkKKyAqICAgLSBjb21tb24KKyAqLworI2RlZmluZSBQTURfVFlQRV9NQVNLCQko MyA8PCAwKQorI2RlZmluZSBQTURfVFlQRV9GQVVMVAkJKDAgPDwgMCkKKyNkZWZpbmUgUE1EX1RZ UEVfVEFCTEUJCSgxIDw8IDApCisjZGVmaW5lIFBNRF9UWVBFX1NFQ1QJCSgyIDw8IDApCisjZGVm aW5lIFBNRF9CSVQ0CQkoMSA8PCA0KQorI2RlZmluZSBQTURfRE9NQUlOKHgpCQkoKHgpIDw8IDUp CisjZGVmaW5lIFBNRF9QUk9URUNUSU9OCQkoMSA8PCA5KQkvKiB2NSAqLworLyoKKyAqICAgLSBz ZWN0aW9uCisgKi8KKyNkZWZpbmUgUE1EX1NFQ1RfQlVGRkVSQUJMRQkoMSA8PCAyKQorI2RlZmlu ZSBQTURfU0VDVF9DQUNIRUFCTEUJKDEgPDwgMykKKyNkZWZpbmUgUE1EX1NFQ1RfWE4JCSgxIDw8 IDQpCS8qIHY2ICovCisjZGVmaW5lIFBNRF9TRUNUX0FQX1dSSVRFCSgxIDw8IDEwKQorI2RlZmlu ZSBQTURfU0VDVF9BUF9SRUFECSgxIDw8IDExKQorI2RlZmluZSBQTURfU0VDVF9URVgoeCkJCSgo eCkgPDwgMTIpCS8qIHY1ICovCisjZGVmaW5lIFBNRF9TRUNUX0FQWAkJKDEgPDwgMTUpCS8qIHY2 ICovCisjZGVmaW5lIFBNRF9TRUNUX1MJCSgxIDw8IDE2KQkvKiB2NiAqLworI2RlZmluZSBQTURf U0VDVF9uRwkJKDEgPDwgMTcpCS8qIHY2ICovCisjZGVmaW5lIFBNRF9TRUNUX1NVUEVSCQkoMSA8 PCAxOCkJLyogdjYgKi8KKworI2RlZmluZSBQTURfU0VDVF9VTkNBQ0hFRAkoMCkKKyNkZWZpbmUg UE1EX1NFQ1RfQlVGRkVSRUQJKFBNRF9TRUNUX0JVRkZFUkFCTEUpCisjZGVmaW5lIFBNRF9TRUNU X1dUCQkoUE1EX1NFQ1RfQ0FDSEVBQkxFKQorI2RlZmluZSBQTURfU0VDVF9XQgkJKFBNRF9TRUNU X0NBQ0hFQUJMRSB8IFBNRF9TRUNUX0JVRkZFUkFCTEUpCisjZGVmaW5lIFBNRF9TRUNUX01JTklD QUNIRQkoUE1EX1NFQ1RfVEVYKDEpIHwgUE1EX1NFQ1RfQ0FDSEVBQkxFKQorI2RlZmluZSBQTURf U0VDVF9XQldBCQkoUE1EX1NFQ1RfVEVYKDEpIHwgUE1EX1NFQ1RfQ0FDSEVBQkxFIHwgUE1EX1NF Q1RfQlVGRkVSQUJMRSkKKyNkZWZpbmUgUE1EX1NFQ1RfTk9OU0hBUkVEX0RFVgkoUE1EX1NFQ1Rf VEVYKDIpKQorCisvKgorICogICAtIGNvYXJzZSB0YWJsZSAobm90IHVzZWQpCisgKi8KKworLyoK KyAqICsgTGV2ZWwgMiBkZXNjcmlwdG9yIChQVEUpCisgKiAgIC0gY29tbW9uCisgKi8KKyNkZWZp bmUgUFRFX1RZUEVfTUFTSwkJKDMgPDwgMCkKKyNkZWZpbmUgUFRFX1RZUEVfRkFVTFQJCSgwIDw8 IDApCisjZGVmaW5lIFBURV9UWVBFX0xBUkdFCQkoMSA8PCAwKQorI2RlZmluZSBQVEVfVFlQRV9T TUFMTAkJKDIgPDwgMCkKKyNkZWZpbmUgUFRFX1RZUEVfRVhUCQkoMyA8PCAwKQkvKiB2NSAqLwor I2RlZmluZSBQVEVfQlVGRkVSQUJMRQkJKDEgPDwgMikKKyNkZWZpbmUgUFRFX0NBQ0hFQUJMRQkJ KDEgPDwgMykKKworLyoKKyAqICAgLSBleHRlbmRlZCBzbWFsbCBwYWdlL3RpbnkgcGFnZQorICov CisjZGVmaW5lIFBURV9FWFRfWE4JCSgxIDw8IDApCS8qIHY2ICovCisjZGVmaW5lIFBURV9FWFRf QVBfTUFTSwkJKDMgPDwgNCkKKyNkZWZpbmUgUFRFX0VYVF9BUDAJCSgxIDw8IDQpCisjZGVmaW5l IFBURV9FWFRfQVAxCQkoMiA8PCA0KQorI2RlZmluZSBQVEVfRVhUX0FQX1VOT19TUk8JKDAgPDwg NCkKKyNkZWZpbmUgUFRFX0VYVF9BUF9VTk9fU1JXCShQVEVfRVhUX0FQMCkKKyNkZWZpbmUgUFRF X0VYVF9BUF9VUk9fU1JXCShQVEVfRVhUX0FQMSkKKyNkZWZpbmUgUFRFX0VYVF9BUF9VUldfU1JX CShQVEVfRVhUX0FQMXxQVEVfRVhUX0FQMCkKKyNkZWZpbmUgUFRFX0VYVF9URVgoeCkJCSgoeCkg PDwgNikJLyogdjUgKi8KKyNkZWZpbmUgUFRFX0VYVF9BUFgJCSgxIDw8IDkpCS8qIHY2ICovCisj ZGVmaW5lIFBURV9FWFRfQ09IRVJFTlQJKDEgPDwgOSkJLyogWFNjYWxlMyAqLworI2RlZmluZSBQ VEVfRVhUX1NIQVJFRAkJKDEgPDwgMTApCS8qIHY2ICovCisjZGVmaW5lIFBURV9FWFRfTkcJCSgx IDw8IDExKQkvKiB2NiAqLworCisvKgorICogICAtIHNtYWxsIHBhZ2UKKyAqLworI2RlZmluZSBQ VEVfU01BTExfQVBfTUFTSwkoMHhmZiA8PCA0KQorI2RlZmluZSBQVEVfU01BTExfQVBfVU5PX1NS TwkoMHgwMCA8PCA0KQorI2RlZmluZSBQVEVfU01BTExfQVBfVU5PX1NSVwkoMHg1NSA8PCA0KQor I2RlZmluZSBQVEVfU01BTExfQVBfVVJPX1NSVwkoMHhhYSA8PCA0KQorI2RlZmluZSBQVEVfU01B TExfQVBfVVJXX1NSVwkoMHhmZiA8PCA0KQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJt NjQvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcG9z aXhfdHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmNhZTYyCi0t LSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oCkBA IC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9wb3NpeF90eXBlcy5oPgpkaWZmIC0t Z2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCBiL2FyY2gvYXJtNjQvaW5j bHVkZS9hc20vcHJvY2Vzc29yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZDVkYmFiMAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHJvY2Vz c29yLmgKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL3By b2Nlc3Nvci5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NS0yMDAyIFJ1c3NlbGwgS2luZwor ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUk1fUFJPQ0VTU09S X0gKKyNkZWZpbmUgX19BU01fQVJNX1BST0NFU1NPUl9ICisKKy8qCisgKiBEZWZhdWx0IGltcGxl bWVudGF0aW9uIG9mIG1hY3JvIHRoYXQgcmV0dXJucyBjdXJyZW50CisgKiBpbnN0cnVjdGlvbiBw b2ludGVyICgicHJvZ3JhbSBjb3VudGVyIikuCisgKi8KKyNkZWZpbmUgY3VycmVudF90ZXh0X2Fk ZHIoKSAoeyBfX2xhYmVsX18gX2w7IF9sOiAmJl9sO30pCisKKyNkZWZpbmUgRlBfU0laRSAzNQor CitzdHJ1Y3QgZnBfaGFyZF9zdHJ1Y3QgeworCXVuc2lnbmVkIGludCBzYXZlW0ZQX1NJWkVdOwkJ LyogYXMgeWV0IHVuZGVmaW5lZCAqLworfTsKKworc3RydWN0IGZwX3NvZnRfc3RydWN0IHsKKwl1 bnNpZ25lZCBpbnQgc2F2ZVtGUF9TSVpFXTsJCS8qIHVuZGVmaW5lZCBpbmZvcm1hdGlvbiAqLwor fTsKKwordW5pb24gZnBfc3RhdGUgeworCXN0cnVjdCBmcF9oYXJkX3N0cnVjdAloYXJkOworCXN0 cnVjdCBmcF9zb2Z0X3N0cnVjdAlzb2Z0OworfTsKKwordHlwZWRlZiB1bnNpZ25lZCBsb25nIG1t X3NlZ21lbnRfdDsJCS8qIGRvbWFpbiByZWdpc3RlcgkqLworCisjaWZkZWYgX19LRVJORUxfXwor CisjZGVmaW5lIEVJU0FfYnVzIDAKKyNkZWZpbmUgTUNBX2J1cyAwCisjZGVmaW5lIE1DQV9idXNf X2lzX2FfbWFjcm8KKworI2luY2x1ZGUgPGFzbS9hdG9taWMuaD4KKyNpbmNsdWRlIDxhc20vcHRy YWNlLmg+CisjaW5jbHVkZSA8YXNtL3Byb2MvcHJvY2Vzc29yLmg+CisjaW5jbHVkZSA8YXNtL3R5 cGVzLmg+CisKK3VuaW9uIGRlYnVnX2luc24geworCXUzMglhcm07CisJdTE2CXRodW1iOworfTsK Kworc3RydWN0IGRlYnVnX2VudHJ5IHsKKwl1MzIJCQlhZGRyZXNzOworCXVuaW9uIGRlYnVnX2lu c24JaW5zbjsKK307CisKK3N0cnVjdCBkZWJ1Z19pbmZvIHsKKwlpbnQJCQluc2F2ZWQ7CisJc3Ry dWN0IGRlYnVnX2VudHJ5CWJwWzJdOworfTsKKworc3RydWN0IHRocmVhZF9zdHJ1Y3QgeworCWF0 b21pY190CQkJcmVmY291bnQ7CisJCQkJCQkJLyogZmF1bHQgaW5mbwkgICovCisJdW5zaWduZWQg bG9uZwkJCWFkZHJlc3M7CisJdW5zaWduZWQgbG9uZwkJCXRyYXBfbm87CisJdW5zaWduZWQgbG9u ZwkJCWVycm9yX2NvZGU7CisJCQkJCQkJLyogZmxvYXRpbmcgcG9pbnQgKi8KKwl1bmlvbiBmcF9z dGF0ZQkJCWZwc3RhdGU7CisJCQkJCQkJLyogZGVidWdnaW5nCSAgKi8KKwlzdHJ1Y3QgZGVidWdf aW5mbwkJZGVidWc7CisJCQkJCQkJLyogY29udGV4dCBpbmZvCSAgKi8KKwlzdHJ1Y3QgY29udGV4 dF9zYXZlX3N0cnVjdAkqc2F2ZTsKKwlFWFRSQV9USFJFQURfU1RSVUNUCit9OworCisjZGVmaW5l IElOSVRfVEhSRUFEICB7CQkJCQlcCisJcmVmY291bnQ6CUFUT01JQ19JTklUKDEpLAkJCVwKKwlF WFRSQV9USFJFQURfU1RSVUNUX0lOSVQJCQlcCit9CisKKy8qCisgKiBSZXR1cm4gc2F2ZWQgUEMg b2YgYSBibG9ja2VkIHRocmVhZC4KKyAqLworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRo cmVhZF9zYXZlZF9wYyhzdHJ1Y3QgdGhyZWFkX3N0cnVjdCAqdCkKK3sKKwlyZXR1cm4gdC0+c2F2 ZSA/IHBjX3BvaW50ZXIodC0+c2F2ZS0+cGMpIDogMDsKK30KKworc3RhdGljIGlubGluZSB1bnNp Z25lZCBsb25nIHRocmVhZF9zYXZlZF9mcChzdHJ1Y3QgdGhyZWFkX3N0cnVjdCAqdCkKK3sKKwly ZXR1cm4gdC0+c2F2ZSA/IHQtPnNhdmUtPmZwIDogMDsKK30KKworLyogRm9yd2FyZCBkZWNsYXJh dGlvbiwgYSBzdHJhbmdlIEMgdGhpbmcgKi8KK3N0cnVjdCB0YXNrX3N0cnVjdDsKKworLyogRnJl ZSBhbGwgcmVzb3VyY2VzIGhlbGQgYnkgYSB0aHJlYWQuICovCitleHRlcm4gdm9pZCByZWxlYXNl X3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CisKKy8qIENvcHkgYW5kIHJlbGVhc2UgYWxs IHNlZ21lbnQgaW5mbyBhc3NvY2lhdGVkIHdpdGggYSBWTSAqLworI2RlZmluZSBjb3B5X3NlZ21l bnRzKHRzaywgbW0pCQlkbyB7IH0gd2hpbGUgKDApCisjZGVmaW5lIHJlbGVhc2Vfc2VnbWVudHMo bW0pCQlkbyB7IH0gd2hpbGUgKDApCisKK3Vuc2lnbmVkIGxvbmcgZ2V0X3djaGFuKHN0cnVjdCB0 YXNrX3N0cnVjdCAqcCk7CisKKyNkZWZpbmUgVEhSRUFEX1NJWkUJKDgxOTIpCisKK2V4dGVybiBz dHJ1Y3QgdGFza19zdHJ1Y3QgKmFsbG9jX3Rhc2tfc3RydWN0KHZvaWQpOworZXh0ZXJuIHZvaWQg X19mcmVlX3Rhc2tfc3RydWN0KHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKKyNkZWZpbmUgZ2V0X3Rh c2tfc3RydWN0KHApCWF0b21pY19pbmMoJihwKS0+dGhyZWFkLnJlZmNvdW50KQorI2RlZmluZSBm cmVlX3Rhc2tfc3RydWN0KHApCQkJCQlcCisgZG8gewkJCQkJCQkJXAorCWlmIChhdG9taWNfZGVj X2FuZF90ZXN0KCYocCktPnRocmVhZC5yZWZjb3VudCkpCQlcCisJCV9fZnJlZV90YXNrX3N0cnVj dCgocCkpOwkJCVwKKyB9IHdoaWxlICgwKQorCisjZGVmaW5lIGluaXRfdGFzawkoaW5pdF90YXNr X3VuaW9uLnRhc2spCisjZGVmaW5lIGluaXRfc3RhY2sJKGluaXRfdGFza191bmlvbi5zdGFjaykK KworI2RlZmluZSBjcHVfcmVsYXgoKQliYXJyaWVyKCkKKworLyoKKyAqIENyZWF0ZSBhIG5ldyBr ZXJuZWwgdGhyZWFkCisgKi8KK2V4dGVybiBpbnQgYXJjaF9rZXJuZWxfdGhyZWFkKGludCAoKmZu KSh2b2lkICopLCB2b2lkICphcmcsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOworCisjZW5kaWYKKwor I2VuZGlmIC8qIF9fQVNNX0FSTV9QUk9DRVNTT1JfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02 NC9pbmNsdWRlL2FzbS9wdHJhY2UuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRyYWNlLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUwYjYzYQotLS0gL2Rldi9udWxs CisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRyYWNlLmgKQEAgLTAsMCArMSwzNCBAQAor LyoKKyAqICBhcmNoL2FybS9pbmNsdWRlL2FzbS9wdHJhY2UuaAorICoKKyAqICBDb3B5cmlnaHQg KEMpIDE5OTYtMjAwMyBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIg YXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisj aWZuZGVmIF9fQVNNX0FSTV9QVFJBQ0VfSAorI2RlZmluZSBfX0FTTV9BUk1fUFRSQUNFX0gKKwor I2RlZmluZSBQVFJBQ0VfR0VUUkVHUwkJMTIKKyNkZWZpbmUgUFRSQUNFX1NFVFJFR1MJCTEzCisj ZGVmaW5lIFBUUkFDRV9HRVRGUFJFR1MJMTQKKyNkZWZpbmUgUFRSQUNFX1NFVEZQUkVHUwkxNQor CisjZGVmaW5lIFBUUkFDRV9TRVRPUFRJT05TCTIxCisKKy8qIG9wdGlvbnMgc2V0IHVzaW5nIFBU UkFDRV9TRVRPUFRJT05TICovCisjZGVmaW5lIFBUUkFDRV9PX1RSQUNFU1lTR09PRAkweDAwMDAw MDAxCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKKy8qIHRoaXMgc3RydWN0IGRlZmluZXMgdGhl IHdheSB0aGUgcmVnaXN0ZXJzIGFyZSBzdG9yZWQgb24gdGhlCisgICBzdGFjayBkdXJpbmcgYSBz eXN0ZW0gY2FsbC4gKi8KKworc3RydWN0IHB0X3JlZ3MgeworCWxvbmcgdXJlZ3NbMzFdOworfTsK KworI2VuZGlmCS8qIF9fQVNTRU1CTFlfXyAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gv YXJtNjQvaW5jbHVkZS9hc20vc2VjdGlvbnMuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc2Vj dGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzdiYzhjCi0tLSAv ZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zZWN0aW9ucy5oCkBAIC0wLDAg KzEsMzQgQEAKKyNpZm5kZWYgX19BU01fU0VDVElPTlNfSAorI2RlZmluZSBfX0FTTV9TRUNUSU9O U19ICisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvc2VjdGlv bnMuaD4KKworLyoKKyAqIEFjY2VzcyBhIGxpbmtlciBzdXBwbGllZCB2YXJpYWJsZS4gVXNlIHRo aXMgaWYgeW91ciBjb2RlIG1pZ2h0IG5vdCBiZSBydW5uaW5nCisgKiBhdCB0aGUgYWRkcmVzcyBp dCBpcyBsaW5rZWQgYXQuCisgKi8KKyNkZWZpbmUgbGRfdmFyKG5hbWUpICh7IFwKKwl1bnNpZ25l ZCBsb25nIF9fbGRfdmFyXyMjbmFtZSh2b2lkKTsgXAorCV9fbGRfdmFyXyMjbmFtZSgpOyBcCit9 KQorCisjZWxzZQorCisvKgorICogQWNjZXNzIGEgbGlua2VyIHN1cHBsaWVkIHZhcmlhYmxlLCBh c3NlbWJsZXIgbWFjcm8gdmVyc2lvbgorICovCisubWFjcm8gbGRfdmFyIG5hbWUsIHJlZywgc2Ny YXRjaAorCTEwMDA6CisJCWxkciBccmVnLCAxMDAxZgorCQlsZHIgXHNjcmF0Y2gsID0xMDAwYgor CQlhZGQgXHJlZywgXHJlZywgXHNjcmF0Y2gKKwkJYiAxMDAyZgorCTEwMDE6CisJCS53b3JkIFxu YW1lIC0gMTAwMGIKKwkxMDAyOgorLmVuZG0KKworI2VuZGlmCisKKyNlbmRpZiAvKiBfX0FTTV9T RUNUSU9OU19IICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3NlbWlob3N0 aW5nLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3NlbWlob3N0aW5nLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ3OGRhZAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gv YXJtNjQvaW5jbHVkZS9hc20vc2VtaWhvc3RpbmcuaApAQCAtMCwwICsxLDE5IEBACisjaWZuZGVm IF9fQVNNX0FSTV9TRU1JSE9TVElOR19ICisjZGVmaW5lIF9fQVNNX0FSTV9TRU1JSE9TVElOR19I CisKK2ludCBzZW1paG9zdGluZ19vcGVuKGNvbnN0IGNoYXIgKmZuYW1lLCBpbnQgZmxhZ3MpOwor aW50IHNlbWlob3N0aW5nX2Nsb3NlKGludCBmZCk7CitpbnQgc2VtaWhvc3Rpbmdfd3JpdGVjKGNo YXIgYyk7CitpbnQgc2VtaWhvc3Rpbmdfd3JpdGUwKGNvbnN0IGNoYXIgKnN0cik7Citzc2l6ZV90 IHNlbWlob3N0aW5nX3dyaXRlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQp Oworc3NpemVfdCBzZW1paG9zdGluZ19yZWFkKGludCBmZCwgdm9pZCAqYnVmLCBzaXplX3QgY291 bnQpOworaW50IHNlbWlob3N0aW5nX3JlYWRjKHZvaWQpOworaW50IHNlbWlob3N0aW5nX2lzYXR0 eShpbnQgZmQpOworaW50IHNlbWlob3N0aW5nX3NlZWsoaW50IGZkLCBsb2ZmX3QgcG9zKTsKK2lu dCBzZW1paG9zdGluZ19mbGVuKGludCBmZCk7CitpbnQgc2VtaWhvc3RpbmdfcmVtb3ZlKGNvbnN0 IGNoYXIgKmZuYW1lKTsKK2ludCBzZW1paG9zdGluZ19yZW5hbWUoY29uc3QgY2hhciAqZm5hbWUx LCBjb25zdCBjaGFyICpmbmFtZTIpOworaW50IHNlbWlob3N0aW5nX2Vycm5vKHZvaWQpOworaW50 IHNlbWlob3N0aW5nX3N5c3RlbShjb25zdCBjaGFyICpjb21tYW5kKTsKKworI2VuZGlmCmRpZmYg LS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3NldHVwLmggYi9hcmNoL2FybTY0L2luY2x1 ZGUvYXNtL3NldHVwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNlMzVm YgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc2V0dXAuaApAQCAt MCwwICsxLDIxNiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTctMTk5OSBSdXNzZWxsIEtp bmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBTdHJ1Y3R1cmUgcGFzc2VkIHRvIGtl cm5lbCB0byB0ZWxsIGl0IGFib3V0IHRoZQorICogIGhhcmR3YXJlIGl0J3MgcnVubmluZyBvbi4g IFNlZSBsaW51eC9Eb2N1bWVudGF0aW9uL2FybS9TZXR1cAorICogIGZvciBtb3JlIGluZm8uCisg Ki8KKyNpZm5kZWYgX19BU01BUk1fU0VUVVBfSAorI2RlZmluZSBfX0FTTUFSTV9TRVRVUF9ICisK Ky8qCisgKiBVc2FnZToKKyAqICAtIGRvIG5vdCBnbyBibGluZGx5IGFkZGluZyBmaWVsZHMsIGFk ZCB0aGVtIGF0IHRoZSBlbmQKKyAqICAtIHdoZW4gYWRkaW5nIGZpZWxkcywgZG9uJ3QgcmVseSBv biB0aGUgYWRkcmVzcyB1bnRpbAorICogICAgYSBwYXRjaCBmcm9tIG1lIGhhcyBiZWVuIHJlbGVh c2VkCisgKiAgLSB1bnVzZWQgZmllbGRzIHNob3VsZCBiZSB6ZXJvIChmb3IgZnV0dXJlIGV4cGFu c2lvbikKKyAqICAtIHRoaXMgc3RydWN0dXJlIGlzIHJlbGF0aXZlbHkgc2hvcnQtbGl2ZWQgLSBv bmx5CisgKiAgICBndWFyYW50ZWVkIHRvIGNvbnRhaW4gdXNlZnVsIGRhdGEgaW4gc2V0dXBfYXJj aCgpCisgKi8KKyNkZWZpbmUgQ09NTUFORF9MSU5FX1NJWkUgMTAyNAorCisvKgorICogVGhlIG5l dyB3YXkgb2YgcGFzc2luZyBpbmZvcm1hdGlvbjogYSBsaXN0IG9mIHRhZ2dlZCBlbnRyaWVzCisg Ki8KKworLyogVGhlIGxpc3QgZW5kcyB3aXRoIGFuIEFUQUdfTk9ORSBub2RlLiAqLworI2RlZmlu ZSBBVEFHX05PTkUJMHgwMDAwMDAwMAorCitzdHJ1Y3QgdGFnX2hlYWRlciB7CisJdTMyIHNpemU7 CisJdTMyIHRhZzsKK307CisKKy8qIFRoZSBsaXN0IG11c3Qgc3RhcnQgd2l0aCBhbiBBVEFHX0NP UkUgbm9kZSAqLworI2RlZmluZSBBVEFHX0NPUkUJMHg1NDQxMDAwMQorCitzdHJ1Y3QgdGFnX2Nv cmUgeworCXUzMiBmbGFnczsJCS8qIGJpdCAwID0gcmVhZC1vbmx5ICovCisJdTMyIHBhZ2VzaXpl OworCXUzMiByb290ZGV2OworfTsKKworLyogaXQgaXMgYWxsb3dlZCB0byBoYXZlIG11bHRpcGxl IEFUQUdfTUVNIG5vZGVzICovCisjZGVmaW5lIEFUQUdfTUVNCTB4NTQ0MTAwMDIKKworc3RydWN0 IHRhZ19tZW0zMiB7CisJdTMyCXNpemU7CisJdTMyCXN0YXJ0OwkvKiBwaHlzaWNhbCBzdGFydCBh ZGRyZXNzICovCit9OworCisvKiBWR0EgdGV4dCB0eXBlIGRpc3BsYXlzICovCisjZGVmaW5lIEFU QUdfVklERU9URVhUCTB4NTQ0MTAwMDMKKworc3RydWN0IHRhZ192aWRlb3RleHQgeworCXU4CQl4 OworCXU4CQl5OworCXUxNgkJdmlkZW9fcGFnZTsKKwl1OAkJdmlkZW9fbW9kZTsKKwl1OAkJdmlk ZW9fY29sczsKKwl1MTYJCXZpZGVvX2VnYV9ieDsKKwl1OAkJdmlkZW9fbGluZXM7CisJdTgJCXZp ZGVvX2lzdmdhOworCXUxNgkJdmlkZW9fcG9pbnRzOworfTsKKworLyogZGVzY3JpYmVzIGhvdyB0 aGUgcmFtZGlzayB3aWxsIGJlIHVzZWQgaW4ga2VybmVsICovCisjZGVmaW5lIEFUQUdfUkFNRElT SwkweDU0NDEwMDA0CisKK3N0cnVjdCB0YWdfcmFtZGlzayB7CisJdTMyIGZsYWdzOwkvKiBiaXQg MCA9IGxvYWQsIGJpdCAxID0gcHJvbXB0ICovCisJdTMyIHNpemU7CS8qIGRlY29tcHJlc3NlZCBy YW1kaXNrIHNpemUgaW4gX2tpbG9fIGJ5dGVzICovCisJdTMyIHN0YXJ0OwkvKiBzdGFydGluZyBi bG9jayBvZiBmbG9wcHktYmFzZWQgUkFNIGRpc2sgaW1hZ2UgKi8KK307CisKKy8qIGRlc2NyaWJl cyB3aGVyZSB0aGUgY29tcHJlc3NlZCByYW1kaXNrIGltYWdlIGxpdmVzICh2aXJ0dWFsIGFkZHJl c3MpICovCisvKgorICogdGhpcyBvbmUgYWNjaWRlbnRhbGx5IHVzZWQgdmlydHVhbCBhZGRyZXNz ZXMgLSBhcyBzdWNoLAorICogaXRzIGRlcHJlY2lhdGVkLgorICovCisjZGVmaW5lIEFUQUdfSU5J VFJECTB4NTQ0MTAwMDUKKworLyogZGVzY3JpYmVzIHdoZXJlIHRoZSBjb21wcmVzc2VkIHJhbWRp c2sgaW1hZ2UgbGl2ZXMgKHBoeXNpY2FsIGFkZHJlc3MpICovCisjZGVmaW5lIEFUQUdfSU5JVFJE MgkweDU0NDIwMDA1CisKK3N0cnVjdCB0YWdfaW5pdHJkIHsKKwl1MzIgc3RhcnQ7CS8qIHBoeXNp Y2FsIHN0YXJ0IGFkZHJlc3MgKi8KKwl1MzIgc2l6ZTsJLyogc2l6ZSBvZiBjb21wcmVzc2VkIHJh bWRpc2sgaW1hZ2UgaW4gYnl0ZXMgKi8KK307CisKKy8qIGJvYXJkIHNlcmlhbCBudW1iZXIuICI2 NCBiaXRzIHNob3VsZCBiZSBlbm91Z2ggZm9yIGV2ZXJ5Ym9keSIgKi8KKyNkZWZpbmUgQVRBR19T RVJJQUwJMHg1NDQxMDAwNgorCitzdHJ1Y3QgdGFnX3NlcmlhbG5yIHsKKwl1MzIgbG93OworCXUz MiBoaWdoOworfTsKKworLyogYm9hcmQgcmV2aXNpb24gKi8KKyNkZWZpbmUgQVRBR19SRVZJU0lP TgkweDU0NDEwMDA3CisKK3N0cnVjdCB0YWdfcmV2aXNpb24geworCXUzMiByZXY7Cit9OworCisv KiBpbml0aWFsIHZhbHVlcyBmb3IgdmVzYWZiLXR5cGUgZnJhbWVidWZmZXJzLiBzZWUgc3RydWN0 IHNjcmVlbl9pbmZvCisgKiBpbiBpbmNsdWRlL2xpbnV4L3R0eS5oCisgKi8KKyNkZWZpbmUgQVRB R19WSURFT0xGQgkweDU0NDEwMDA4CisKK3N0cnVjdCB0YWdfdmlkZW9sZmIgeworCXUxNgkJbGZi X3dpZHRoOworCXUxNgkJbGZiX2hlaWdodDsKKwl1MTYJCWxmYl9kZXB0aDsKKwl1MTYJCWxmYl9s aW5lbGVuZ3RoOworCXUzMgkJbGZiX2Jhc2U7CisJdTMyCQlsZmJfc2l6ZTsKKwl1OAkJcmVkX3Np emU7CisJdTgJCXJlZF9wb3M7CisJdTgJCWdyZWVuX3NpemU7CisJdTgJCWdyZWVuX3BvczsKKwl1 OAkJYmx1ZV9zaXplOworCXU4CQlibHVlX3BvczsKKwl1OAkJcnN2ZF9zaXplOworCXU4CQlyc3Zk X3BvczsKK307CisKKy8qIGNvbW1hbmQgbGluZTogXDAgdGVybWluYXRlZCBzdHJpbmcgKi8KKyNk ZWZpbmUgQVRBR19DTURMSU5FCTB4NTQ0MTAwMDkKKworc3RydWN0IHRhZ19jbWRsaW5lIHsKKwlj aGFyCWNtZGxpbmVbMV07CS8qIHRoaXMgaXMgdGhlIG1pbmltdW0gc2l6ZSAqLworfTsKKworLyog YWNvcm4gUmlzY1BDIHNwZWNpZmljIGluZm9ybWF0aW9uICovCisjZGVmaW5lIEFUQUdfQUNPUk4J MHg0MTAwMDEwMQorCitzdHJ1Y3QgdGFnX2Fjb3JuIHsKKwl1MzIgbWVtY19jb250cm9sX3JlZzsK Kwl1MzIgdnJhbV9wYWdlczsKKwl1OCBzb3VuZGRlZmF1bHQ7CisJdTggYWRmc2RyaXZlczsKK307 CisKKy8qIGZvb3RicmlkZ2UgbWVtb3J5IGNsb2NrLCBzZWUgYXJjaC9hcm0vbWFjaC1mb290YnJp ZGdlL2FyY2guYyAqLworI2RlZmluZSBBVEFHX01FTUNMSwkweDQxMDAwNDAyCisKK3N0cnVjdCB0 YWdfbWVtY2xrIHsKKwl1MzIgZm1lbWNsazsKK307CisKK3N0cnVjdCB0YWcgeworCXN0cnVjdCB0 YWdfaGVhZGVyIGhkcjsKKwl1bmlvbiB7CisJCXN0cnVjdCB0YWdfY29yZQkJY29yZTsKKwkJc3Ry dWN0IHRhZ19tZW0zMgltZW07CisJCXN0cnVjdCB0YWdfdmlkZW90ZXh0CXZpZGVvdGV4dDsKKwkJ c3RydWN0IHRhZ19yYW1kaXNrCXJhbWRpc2s7CisJCXN0cnVjdCB0YWdfaW5pdHJkCWluaXRyZDsK KwkJc3RydWN0IHRhZ19zZXJpYWxucglzZXJpYWxucjsKKwkJc3RydWN0IHRhZ19yZXZpc2lvbgly ZXZpc2lvbjsKKwkJc3RydWN0IHRhZ192aWRlb2xmYgl2aWRlb2xmYjsKKwkJc3RydWN0IHRhZ19j bWRsaW5lCWNtZGxpbmU7CisKKwkJLyoKKwkJICogQWNvcm4gc3BlY2lmaWMKKwkJICovCisJCXN0 cnVjdCB0YWdfYWNvcm4JYWNvcm47CisKKwkJLyoKKwkJICogREMyMTI4NSBzcGVjaWZpYworCQkg Ki8KKwkJc3RydWN0IHRhZ19tZW1jbGsJbWVtY2xrOworCX0gdTsKK307CisKK3N0cnVjdCB0YWd0 YWJsZSB7CisJdTMyIHRhZzsKKwlpbnQgKCpwYXJzZSkoY29uc3Qgc3RydWN0IHRhZyAqKTsKK307 CisKKyNkZWZpbmUgX190YWcgX19hdHRyaWJ1dGVfXygodW51c2VkLCBfX3NlY3Rpb25fXygiLnRh Z2xpc3QiKSkpCisjZGVmaW5lIF9fdGFndGFibGUodGFnLCBmbikgXAorc3RhdGljIHN0cnVjdCB0 YWd0YWJsZSBfX3RhZ3RhYmxlXyMjZm4gX190YWcgPSB7IHRhZywgZm4gfQorCisjZGVmaW5lIHRh Z19tZW1iZXJfcHJlc2VudCh0YWcsbWVtYmVyKQkJCQlcCisJKCh1bnNpZ25lZCBsb25nKSgmKChz dHJ1Y3QgdGFnICopMEwpLT5tZW1iZXIgKyAxKQlcCisJCTw9ICh0YWcpLT5oZHIuc2l6ZSAqIDQp CisKKyNkZWZpbmUgdGFnX25leHQodCkJKChzdHJ1Y3QgdGFnICopKCh1MzIgKikodCkgKyAodCkt Pmhkci5zaXplKSkKKyNkZWZpbmUgdGFnX3NpemUodHlwZSkJKChzaXplb2Yoc3RydWN0IHRhZ19o ZWFkZXIpICsgc2l6ZW9mKHN0cnVjdCB0eXBlKSkgPj4gMikKKworI2RlZmluZSBmb3JfZWFjaF90 YWcodCxiYXNlKQkJXAorCWZvciAodCA9IGJhc2U7IHQtPmhkci5zaXplOyB0ID0gdGFnX25leHQo dCkpCisKKy8qCisgKiBNZW1vcnkgbWFwIGRlc2NyaXB0aW9uCisgKi8KKyNkZWZpbmUgTlJfQkFO S1MgOAorCitzdHJ1Y3QgbWVtaW5mbyB7CisJaW50IG5yX2JhbmtzOworCXVuc2lnbmVkIGxvbmcg ZW5kOworCXN0cnVjdCB7CisJCXVuc2lnbmVkIGxvbmcgc3RhcnQ7CisJCXVuc2lnbmVkIGxvbmcg c2l6ZTsKKwkJaW50ICAgICAgICAgICBub2RlOworCX0gYmFua1tOUl9CQU5LU107Cit9OworCitl eHRlcm4gc3RydWN0IG1lbWluZm8gbWVtaW5mbzsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNo L2FybTY0L2luY2x1ZGUvYXNtL3N0YWNrdHJhY2UuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20v c3RhY2t0cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwZjcwZTEK LS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N0YWNrdHJhY2UuaApA QCAtMCwwICsxLDE2IEBACisjaWZuZGVmIF9fQVNNX1NUQUNLVFJBQ0VfSAorI2RlZmluZSBfX0FT TV9TVEFDS1RSQUNFX0gKKworc3RydWN0IHN0YWNrZnJhbWUgeworCXVuc2lnbmVkIGxvbmcgZnA7 CisJdW5zaWduZWQgbG9uZyBzcDsKKwl1bnNpZ25lZCBsb25nIGxyOworCXVuc2lnbmVkIGxvbmcg cGM7Cit9OworCitleHRlcm4gaW50IHVud2luZF9mcmFtZShzdHJ1Y3Qgc3RhY2tmcmFtZSAqZnJh bWUpOworZXh0ZXJuIHZvaWQgd2Fsa19zdGFja2ZyYW1lKHN0cnVjdCBzdGFja2ZyYW1lICpmcmFt ZSwKKwkJCSAgICBpbnQgKCpmbikoc3RydWN0IHN0YWNrZnJhbWUgKiwgdm9pZCAqKSwgdm9pZCAq ZGF0YSk7CisKKyNlbmRpZgkvKiBfX0FTTV9TVEFDS1RSQUNFX0ggKi8KKwpkaWZmIC0tZ2l0IGEv YXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdHJpbmcuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20v c3RyaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM1NjQ3YQotLS0g L2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3RyaW5nLmgKQEAgLTAsMCAr MSwxMyBAQAorI2lmbmRlZiBfX0FTTV9BUk1fU1RSSU5HX0gKKyNkZWZpbmUgX19BU01fQVJNX1NU UklOR19ICisKKyNpZmRlZiBDT05GSUdfQVJNX09QVElNWkVEX1NUUklOR19GVU5DVElPTlMKKwor I2RlZmluZSBfX0hBVkVfQVJDSF9NRU1DUFkKK2V4dGVybiB2b2lkICptZW1jcHkodm9pZCAqLCBj b25zdCB2b2lkICosIF9fa2VybmVsX3NpemVfdCk7CisjZGVmaW5lIF9fSEFWRV9BUkNIX01FTVNF VAorZXh0ZXJuIHZvaWQgKm1lbXNldCh2b2lkICosIGludCwgX19rZXJuZWxfc2l6ZV90KTsKKwor I2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zd2Fi LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N3YWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi45OTk3YWQyCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9zd2FiLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqICBhcmNoL2FybS9pbmNsdWRl L2FzbS9ieXRlb3JkZXIuaAorICoKKyAqIEFSTSBFbmRpYW4tbmVzcy4gIEluIGxpdHRsZSBlbmRp YW4gbW9kZSwgdGhlIGRhdGEgYnVzIGlzIGNvbm5lY3RlZCBzdWNoCisgKiB0aGF0IGJ5dGUgYWNj ZXNzZXMgYXBwZWFyIGFzOgorICogIDAgPSBkMC4uLmQ3LCAxID0gZDguLi5kMTUsIDIgPSBkMTYu Li5kMjMsIDMgPSBkMjQuLi5kMzEKKyAqIGFuZCB3b3JkIGFjY2Vzc2VzIChkYXRhIG9yIGluc3Ry dWN0aW9uKSBhcHBlYXIgYXM6CisgKiAgZDAuLi5kMzEKKyAqCisgKiBXaGVuIGluIGJpZyBlbmRp YW4gbW9kZSwgYnl0ZSBhY2Nlc3NlcyBhcHBlYXIgYXM6CisgKiAgMCA9IGQyNC4uLmQzMSwgMSA9 IGQxNi4uLmQyMywgMiA9IGQ4Li4uZDE1LCAzID0gZDAuLi5kNworICogYW5kIHdvcmQgYWNjZXNz ZXMgKGRhdGEgb3IgaW5zdHJ1Y3Rpb24pIGFwcGVhciBhczoKKyAqICBkMC4uLmQzMQorICovCisj aWZuZGVmIF9fQVNNX0FSTV9TV0FCX0gKKyNkZWZpbmUgX19BU01fQVJNX1NXQUJfSAorCisjaW5j bHVkZSA8bGludXgvY29tcGlsZXIuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCisjaWYg IWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKSB8fCBkZWZpbmVkKF9fS0VSTkVMX18pCisjICBkZWZp bmUgX19TV0FCXzY0X1RIUlVfMzJfXworI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fS0VSTkVMX18p ICYmIF9fTElOVVhfQVJNX0FSQ0hfXyA+PSA2CisKK3N0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf Y29uc3RfXyBfX3UxNiBfX2FyY2hfc3dhYjE2KF9fdTE2IHgpCit7CisJX19hc21fXyAoInJldjE2 ICUwLCAlMSIgOiAiPXIiICh4KSA6ICJyIiAoeCkpOworCXJldHVybiB4OworfQorI2RlZmluZSBf X2FyY2hfc3dhYjE2IF9fYXJjaF9zd2FiMTYKKworc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9j b25zdF9fIF9fdTMyIF9fYXJjaF9zd2FiMzIoX191MzIgeCkKK3sKKwlfX2FzbV9fICgicmV2ICUw LCAlMSIgOiAiPXIiICh4KSA6ICJyIiAoeCkpOworCXJldHVybiB4OworfQorI2RlZmluZSBfX2Fy Y2hfc3dhYjMyIF9fYXJjaF9zd2FiMzIKKworI2Vsc2UKKworc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9jb25zdF9fIF9fdTMyIF9fYXJjaF9zd2FiMzIoX191MzIgeCkKK3sKKwlfX3UzMiB0Owor CisjaWZuZGVmIF9fdGh1bWJfXworCWlmICghX19idWlsdGluX2NvbnN0YW50X3AoeCkpIHsKKwkJ LyoKKwkJICogVGhlIGNvbXBpbGVyIG5lZWRzIGEgYml0IG9mIGEgaGludCBoZXJlIHRvIGFsd2F5 cyBkbyB0aGUKKwkJICogcmlnaHQgdGhpbmcgYW5kIG5vdCBzY3JldyBpdCB1cCB0byBkaWZmZXJl bnQgZGVncmVlcworCQkgKiBkZXBlbmRpbmcgb24gdGhlIGdjYyB2ZXJzaW9uLgorCQkgKi8KKwkJ YXNtICgiZW9yXHQlMCwgJTEsICUxLCByb3IgIzE2IiA6ICI9ciIgKHQpIDogInIiICh4KSk7CisJ fSBlbHNlCisjZW5kaWYKKwkJdCA9IHggXiAoKHggPDwgMTYpIHwgKHggPj4gMTYpKTsgLyogZW9y IHIxLHIwLHIwLHJvciAjMTYgKi8KKworCXggPSAoeCA8PCAyNCkgfCAoeCA+PiA4KTsJCS8qIG1v diByMCxyMCxyb3IgIzggICAgICAqLworCXQgJj0gfjB4MDBGRjAwMDA7CQkJLyogYmljIHIxLHIx LCMweDAwRkYwMDAwICovCisJeCBePSAodCA+PiA4KTsJCQkJLyogZW9yIHIwLHIwLHIxLGxzciAj OCAgICovCisKKwlyZXR1cm4geDsKK30KKyNkZWZpbmUgX19hcmNoX3N3YWIzMiBfX2FyY2hfc3dh YjMyCisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9h c20vc3lzdGVtLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c3RlbS5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0YTc5YzQKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNo L2FybTY0L2luY2x1ZGUvYXNtL3N5c3RlbS5oCkBAIC0wLDAgKzEsMTI1IEBACisjaWZuZGVmIF9f QVNNX0FSTV9TWVNURU1fSAorI2RlZmluZSBfX0FTTV9BUk1fU1lTVEVNX0gKKworI2RlZmluZSBp c2IoKSBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImlzYiIgOiA6IDogIm1lbW9yeSIpCisjZGVmaW5l IGRzYigpIF9fYXNtX18gX192b2xhdGlsZV9fICgiZHNiIHN5IiA6IDogOiAibWVtb3J5IikKKyNk ZWZpbmUgZG1iKCkgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJkbWIiIDogOiA6ICJtZW1vcnkiKQor CisvKgorICogU0NUTFJfRUwxL1NDVExSX0VMMi9TQ1RMUl9FTDMgYml0cyBkZWZpbml0aW9ucwor ICovCisjZGVmaW5lIENSX00JCSgxIDw8IDApCS8qIE1NVSBlbmFibGUJCQkqLworI2RlZmluZSBD Ul9BCQkoMSA8PCAxKQkvKiBBbGlnbm1lbnQgYWJvcnQgZW5hYmxlCSovCisjZGVmaW5lIENSX0MJ CSgxIDw8IDIpCS8qIERjYWNoZSBlbmFibGUJCSovCisjZGVmaW5lIENSX1NBCQkoMSA8PCAzKQkv KiBTdGFjayBBbGlnbm1lbnQgQ2hlY2sgRW5hYmxlCSovCisjZGVmaW5lIENSX0kJCSgxIDw8IDEy KQkvKiBJY2FjaGUgZW5hYmxlCQkqLworI2RlZmluZSBDUl9XWE4JCSgxIDw8IDE5KQkvKiBXcml0 ZSBQZXJtaXNpb24gSW1wbHkgWE4JKi8KKyNkZWZpbmUgQ1JfRUUJCSgxIDw8IDI1KQkvKiBFeGNl cHRpb24gKEJpZykgRW5kaWFuCSovCisKKyNpZm5kZWYgQ09ORklHX1NZU19GVUxMX1ZBCisjZGVm aW5lIFBHVEFCTEVfU0laRQkoMHgxMDAwMCkKKyNlbHNlCisjZGVmaW5lIFBHVEFCTEVfU0laRQlD T05GSUdfU1lTX1BHVEFCTEVfU0laRQorI2VuZGlmCisKKy8qIDJNQiBncmFudWxhcml0eSAqLwor I2RlZmluZSBNTVVfU0VDVElPTl9TSElGVAkyMQorI2RlZmluZSBNTVVfU0VDVElPTl9TSVpFCSgx IDw8IE1NVV9TRUNUSU9OX1NISUZUKQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCitlbnVtIGRj YWNoZV9vcHRpb24geworCURDQUNIRV9PRkYgPSAweDMsCit9OworCisjZGVmaW5lIHdmaSgpCQkJ CVwKKwkoe2FzbSB2b2xhdGlsZSgJCQlcCisJIndmaSIgOiA6IDogIm1lbW9yeSIpOwkJXAorCX0p CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGN1cnJlbnRfZWwodm9pZCkKK3sKKwl1bnNp Z25lZCBpbnQgZWw7CisJYXNtIHZvbGF0aWxlKCJtcnMgJTAsIEN1cnJlbnRFTCIgOiAiPXIiIChl bCkgOiA6ICJjYyIpOworCXJldHVybiBlbCA+PiAyOworfQorCitzdGF0aWMgaW5saW5lIHVuc2ln bmVkIGludCBnZXRfc2N0bHIodm9pZCkKK3sKKwl1bnNpZ25lZCBpbnQgZWwsIHZhbDsKKworCWVs ID0gY3VycmVudF9lbCgpOworCWlmIChlbCA9PSAxKQorCQlhc20gdm9sYXRpbGUoIm1ycyAlMCwg c2N0bHJfZWwxIiA6ICI9ciIgKHZhbCkgOiA6ICJjYyIpOworCWVsc2UgaWYgKGVsID09IDIpCisJ CWFzbSB2b2xhdGlsZSgibXJzICUwLCBzY3Rscl9lbDIiIDogIj1yIiAodmFsKSA6IDogImNjIik7 CisJZWxzZQorCQlhc20gdm9sYXRpbGUoIm1ycyAlMCwgc2N0bHJfZWwzIiA6ICI9ciIgKHZhbCkg OiA6ICJjYyIpOworCisJcmV0dXJuIHZhbDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHNldF9z Y3Rscih1bnNpZ25lZCBpbnQgdmFsKQoreworCXVuc2lnbmVkIGludCBlbDsKKworCWVsID0gY3Vy cmVudF9lbCgpOworCWlmIChlbCA9PSAxKQorCQlhc20gdm9sYXRpbGUoIm1zciBzY3Rscl9lbDEs ICUwIiA6IDogInIiICh2YWwpIDogImNjIik7CisJZWxzZSBpZiAoZWwgPT0gMikKKwkJYXNtIHZv bGF0aWxlKCJtc3Igc2N0bHJfZWwyLCAlMCIgOiA6ICJyIiAodmFsKSA6ICJjYyIpOworCWVsc2UK KwkJYXNtIHZvbGF0aWxlKCJtc3Igc2N0bHJfZWwzLCAlMCIgOiA6ICJyIiAodmFsKSA6ICJjYyIp OworCisJYXNtIHZvbGF0aWxlKCJpc2IiKTsKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBs b25nIHJlYWRfbXBpZHIodm9pZCkKK3sKKwl1bnNpZ25lZCBsb25nIHZhbDsKKworCWFzbSB2b2xh dGlsZSgibXJzICUwLCBtcGlkcl9lbDEiIDogIj1yIiAodmFsKSk7CisKKwlyZXR1cm4gdmFsOwor fQorCisjZGVmaW5lIEJTUF9DT1JFSUQJMAorCit2b2lkIF9fYXNtX2ZsdXNoX2RjYWNoZV9hbGwo dm9pZCk7Cit2b2lkIF9fYXNtX2ludmFsaWRhdGVfZGNhY2hlX2FsbCh2b2lkKTsKK3ZvaWQgX19h c21fZmx1c2hfZGNhY2hlX3JhbmdlKHU2NCBzdGFydCwgdTY0IGVuZCk7Cit2b2lkIF9fYXNtX2lu dmFsaWRhdGVfdGxiX2FsbCh2b2lkKTsKK3ZvaWQgX19hc21faW52YWxpZGF0ZV9pY2FjaGVfYWxs KHZvaWQpOworaW50IF9fYXNtX2ZsdXNoX2wzX2NhY2hlKHZvaWQpOworCit2b2lkIGFybXY4X3N3 aXRjaF90b19lbDIodm9pZCk7Cit2b2lkIGFybXY4X3N3aXRjaF90b19lbDEodm9pZCk7Cit2b2lk IGdpY19pbml0KHZvaWQpOwordm9pZCBnaWNfc2VuZF9zZ2kodW5zaWduZWQgbG9uZyBzZ2lubyk7 Cit2b2lkIHdhaXRfZm9yX3dha2V1cCh2b2lkKTsKK3ZvaWQgcHJvdGVjdF9zZWN1cmVfcmVnaW9u KHZvaWQpOwordm9pZCBzbXBfa2lja19hbGxfY3B1cyh2b2lkKTsKKwordm9pZCBmbHVzaF9sM19j YWNoZSh2b2lkKTsKKworLyoKKyAqSXNzdWUgYSBoeXBlcnZpc29yIGNhbGwgaW4gYWNjb3JkYW5j ZSB3aXRoIEFSTSAiU01DIENhbGxpbmcgY29udmVudGlvbiIsCisgKiBERU4wMDI4QQorICoKKyAq IEBhcmdzOiBpbnB1dCBhbmQgb3V0cHV0IGFyZ3VtZW50cworICoKKyAqLwordm9pZCBodmNfY2Fs bChzdHJ1Y3QgcHRfcmVncyAqYXJncyk7CisKKy8qCisgKklzc3VlIGEgc2VjdXJlIG1vbml0b3Ig Y2FsbCBpbiBhY2NvcmRhbmNlIHdpdGggQVJNICJTTUMgQ2FsbGluZyBjb252ZW50aW9uIiwKKyAq IERFTjAwMjhBCisgKgorICogQGFyZ3M6IGlucHV0IGFuZCBvdXRwdXQgYXJndW1lbnRzCisgKgor ICovCit2b2lkIHNtY19jYWxsKHN0cnVjdCBwdF9yZWdzICphcmdzKTsKKworI2VuZGlmCS8qIF9f QVNTRU1CTFlfXyAqLworCisjZW5kaWYgLyogX19BU01fQVJNX1NZU1RFTV9IICovCmRpZmYgLS1n aXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c3RlbV9pbmZvLmggYi9hcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL3N5c3RlbV9pbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZjU5NWFhZQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lz dGVtX2luZm8uaApAQCAtMCwwICsxLDE5NCBAQAorI2lmbmRlZiBfX0FTTV9BUk1fU1lTVEVNX0lO Rk9fSAorI2RlZmluZSBfX0FTTV9BUk1fU1lTVEVNX0lORk9fSAorCisjaW5jbHVkZSA8YXNtL2Nw dXR5cGUuaD4KKworI2RlZmluZSBDUFVfQVJDSF9VTktOT1dOCTAKKyNkZWZpbmUgQ1BVX0FSQ0hf QVJNdjMJCTEKKyNkZWZpbmUgQ1BVX0FSQ0hfQVJNdjQJCTIKKyNkZWZpbmUgQ1BVX0FSQ0hfQVJN djRUCQkzCisjZGVmaW5lIENQVV9BUkNIX0FSTXY1CQk0CisjZGVmaW5lIENQVV9BUkNIX0FSTXY1 VAkJNQorI2RlZmluZSBDUFVfQVJDSF9BUk12NVRFCTYKKyNkZWZpbmUgQ1BVX0FSQ0hfQVJNdjVU RUoJNworI2RlZmluZSBDUFVfQVJDSF9BUk12NgkJOAorI2RlZmluZSBDUFVfQVJDSF9BUk12NwkJ OQorI2RlZmluZSBDUFVfQVJDSF9BUk12OAkJMTAKKworI2RlZmluZSBDUFVfSVNfQVJNNzIwCQkw eDQxMDA3MjAwCisjZGVmaW5lIENQVV9JU19BUk03MjBfTUFTSwkweGZmMDBmZmYwCisKKyNkZWZp bmUgQ1BVX0lTX0FSTTkyMAkJMHg0MTAwOTIwMAorI2RlZmluZSBDUFVfSVNfQVJNOTIwX01BU0sJ MHhmZjAwZmZmMAorCisjZGVmaW5lIENQVV9JU19BUk05MjYJCTB4NDEwNjkyNjAKKyNkZWZpbmUg Q1BVX0lTX0FSTTkyNl9NQVNLCTB4ZmYwZmZmZjAKKworI2RlZmluZSBDUFVfSVNfQVJNMTE3NgkJ MHg0MTBmYjc2MAorI2RlZmluZSBDUFVfSVNfQVJNMTE3Nl9NQVNLCTB4ZmYwZmZmZjAKKworI2Rl ZmluZSBDUFVfSVNfQ09SVEVYX0E4CTB4NDEwZmMwODAKKyNkZWZpbmUgQ1BVX0lTX0NPUlRFWF9B OF9NQVNLCTB4ZmYwZmZmZjAKKworI2RlZmluZSBDUFVfSVNfQ09SVEVYX0E1CTB4NDEwZmMwNTAK KyNkZWZpbmUgQ1BVX0lTX0NPUlRFWF9BNV9NQVNLCTB4ZmYwZmZmZjAKKworI2RlZmluZSBDUFVf SVNfQ09SVEVYX0E5CTB4NDEwZmMwOTAKKyNkZWZpbmUgQ1BVX0lTX0NPUlRFWF9BOV9NQVNLCTB4 ZmYwZmZmZjAKKworI2RlZmluZSBDUFVfSVNfQ09SVEVYX0E3CTB4NDEwZmMwNzAKKyNkZWZpbmUg Q1BVX0lTX0NPUlRFWF9BN19NQVNLCTB4ZmYwZmZmZjAKKworI2RlZmluZSBDUFVfSVNfQ09SVEVY X0ExNQkweDQxMGZjMGYwCisjZGVmaW5lIENQVV9JU19DT1JURVhfQTE1X01BU0sJMHhmZjBmZmZm MAorCisjZGVmaW5lIENQVV9JU19DT1JURVhfQTUzCTB4NDEwZmQwMzQKKyNkZWZpbmUgQ1BVX0lT X0NPUlRFWF9BNTNfTUFTSwkweGZmMGZmZmYwCisKKyNkZWZpbmUgQ1BVX0lTX0NPUlRFWF9BNTcJ MHg0MTFmZDA3MAorI2RlZmluZSBDUFVfSVNfQ09SVEVYX0E1N19NQVNLCTB4ZmYwZmZmZjAKKwor I2RlZmluZSBDUFVfSVNfUFhBMjUwCQkweDY5MDUyMTAwCisjZGVmaW5lIENQVV9JU19QWEEyNTBf TUFTSwkweGZmZmZmN2YwCisKKyNkZWZpbmUgQ1BVX0lTX1BYQTI1NQkJMHg2OTA1MmQwMAorI2Rl ZmluZSBDUFVfSVNfUFhBMjU1X01BU0sJMHhmZmZmZmZmMAorCisjZGVmaW5lIENQVV9JU19QWEEy NzAJCTB4NjkwNTQxMTAKKyNkZWZpbmUgQ1BVX0lTX1BYQTI3MF9NQVNLCTB4ZmZmZmY3ZjAKKwor I2RlZmluZSBjcHVfaXNfYXJtKGNvcmUpICgocmVhZF9jcHVpZF9pZCgpICYgQ1BVX0lTXyMjY29y ZSMjX01BU0spID09IENQVV9JU18jI2NvcmUpCisKKyNpZmRlZiBDT05GSUdfQ1BVXzMydjRUCisj aWZkZWYgQVJNX0FSQ0gKKyNkZWZpbmUgQVJNX01VTFRJQVJDSAorI2Vsc2UKKyNkZWZpbmUgQVJN X0FSQ0ggQ1BVX0FSQ0hfQVJNdjRUCisjZW5kaWYKKyNkZWZpbmUgY3B1X2lzX2FybTcyMCgpCWNw dV9pc19hcm0oQVJNNzIwKQorI2RlZmluZSBjcHVfaXNfYXJtOTIwKCkJY3B1X2lzX2FybShBUk05 MjApCisjZGVmaW5lIGNwdV9pc19weGEyNTAoKSBjcHVfaXNfYXJtKFBYQTI1MCkKKyNkZWZpbmUg Y3B1X2lzX3B4YTI1NSgpIGNwdV9pc19hcm0oUFhBMjU1KQorI2RlZmluZSBjcHVfaXNfcHhhMjcw KCkgY3B1X2lzX2FybShQWEEyNzApCisjZWxzZQorI2RlZmluZSBjcHVfaXNfYXJtNzIwKCkgKDAp CisjZGVmaW5lIGNwdV9pc19hcm05MjAoKSAoMCkKKyNkZWZpbmUgY3B1X2lzX3B4YTI1MCgpICgw KQorI2RlZmluZSBjcHVfaXNfcHhhMjU1KCkgKDApCisjZGVmaW5lIGNwdV9pc19weGEyNzAoKSAo MCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0NQVV8zMnY1CisjaWZkZWYgQVJNX0FSQ0gKKyNk ZWZpbmUgQVJNX01VTFRJQVJDSAorI2Vsc2UKKyNkZWZpbmUgQVJNX0FSQ0ggQ1BVX0FSQ0hfQVJN djUKKyNlbmRpZgorI2RlZmluZSBjcHVfaXNfYXJtOTI2KCkgY3B1X2lzX2FybShBUk05MjYpCisj ZWxzZQorI2RlZmluZSBjcHVfaXNfYXJtOTI2KCkgKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJ R19DUFVfMzJ2NgorI2lmZGVmIEFSTV9BUkNICisjZGVmaW5lIEFSTV9NVUxUSUFSQ0gKKyNlbHNl CisjZGVmaW5lIEFSTV9BUkNIIENQVV9BUkNIX0FSTXY2CisjZW5kaWYKKyNkZWZpbmUgY3B1X2lz X2FybTExNzYoKQljcHVfaXNfYXJtKEFSTTExNzYpCisjZWxzZQorI2RlZmluZSBjcHVfaXNfYXJt MTE3NigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQ1BVXzMydjcKKyNpZmRlZiBBUk1f QVJDSAorI2RlZmluZSBBUk1fTVVMVElBUkNICisjZWxzZQorI2RlZmluZSBBUk1fQVJDSCBDUFVf QVJDSF9BUk12NworI2VuZGlmCisjZGVmaW5lIGNwdV9pc19jb3J0ZXhfYTgoKSBjcHVfaXNfYXJt KENPUlRFWF9BOCkKKyNkZWZpbmUgY3B1X2lzX2NvcnRleF9hNSgpIGNwdV9pc19hcm0oQ09SVEVY X0E1KQorI2RlZmluZSBjcHVfaXNfY29ydGV4X2E5KCkgY3B1X2lzX2FybShDT1JURVhfQTkpCisj ZGVmaW5lIGNwdV9pc19jb3J0ZXhfYTcoKSBjcHVfaXNfYXJtKENPUlRFWF9BNykKKyNkZWZpbmUg Y3B1X2lzX2NvcnRleF9hMTUoKSBjcHVfaXNfYXJtKENPUlRFWF9BMTUpCisjZWxzZQorI2RlZmlu ZSBjcHVfaXNfY29ydGV4X2E4KCkgKDApCisjZGVmaW5lIGNwdV9pc19jb3J0ZXhfYTUoKSAoMCkK KyNkZWZpbmUgY3B1X2lzX2NvcnRleF9hOSgpICgwKQorI2RlZmluZSBjcHVfaXNfY29ydGV4X2E3 KCkgKDApCisjZGVmaW5lIGNwdV9pc19jb3J0ZXhfYTE1KCkgKDApCisjZW5kaWYKKworCisjaWZk ZWYgQ09ORklHX0NQVV82NHY4CisjaWZkZWYgQVJNX0FSQ0gKKyNkZWZpbmUgQVJNX01VTFRJQVJD SAorI2Vsc2UKKyNkZWZpbmUgQVJNX0FSQ0ggQ1BVX0FSQ0hfQVJNdjgKKyNlbmRpZgorI2RlZmlu ZSBjcHVfaXNfY29ydGV4X2E1MygpIGNwdV9pc19hcm0oQ09SVEVYX0E1MykKKyNkZWZpbmUgY3B1 X2lzX2NvcnRleF9hNTcoKSBjcHVfaXNfYXJtKENPUlRFWF9BNTcpCisjZWxzZQorI2RlZmluZSBj cHVfaXNfY29ydGV4X2E1MygpICgwKQorI2RlZmluZSBjcHVfaXNfY29ydGV4X2E1NygpICgwKQor I2VuZGlmCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKKyNpZmRlZiBBUk1fTVVMVElBUkNICisv KgorICogRWFybHkgdmVyc2lvbiB0byBnZXQgdGhlIEFSTSBjcHUgYXJjaGl0ZWN0dXJlLiBPbmx5 IG5lZWRlZCBkdXJpbmcKKyAqIGVhcmx5IHN0YXJ0dXAgd2hlbiB0aGUgQyBlbnZpcm9ubWVudCBp cyBub3QgeWV0IGZ1bGx5IGluaXRpYWxpemVkLgorICogTm9ybWFsbHkgeW91IHNob3VsZCB1c2Ug Y3B1X2FyY2hpdGVjdHVyZSgpIGluc3RlYWQuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IGFybV9l YXJseV9nZXRfY3B1X2FyY2hpdGVjdHVyZSh2b2lkKQoreworCWludCBjcHVfYXJjaDsKKworLy8J aWYgKChyZWFkX2NwdWlkX2lkKCkgJiAweDAwMDhmMDAwKSA9PSAwKSB7CisvLwkJY3B1X2FyY2gg PSBDUFVfQVJDSF9VTktOT1dOOworLy8JfSBlbHNlIGlmICgocmVhZF9jcHVpZF9pZCgpICYgMHgw MDA4ZjAwMCkgPT0gMHgwMDAwNzAwMCkgeworLy8JCWNwdV9hcmNoID0gKHJlYWRfY3B1aWRfaWQo KSAmICgxIDw8IDIzKSkgPyBDUFVfQVJDSF9BUk12NFQgOiBDUFVfQVJDSF9BUk12MzsKKy8vCX0g ZWxzZSBpZiAoKHJlYWRfY3B1aWRfaWQoKSAmIDB4MDAwODAwMDApID09IDB4MDAwMDAwMDApIHsK Ky8vCQljcHVfYXJjaCA9IChyZWFkX2NwdWlkX2lkKCkgPj4gMTYpICYgNzsKKy8vCQlpZiAoY3B1 X2FyY2gpCisvLwkJCWNwdV9hcmNoICs9IENQVV9BUkNIX0FSTXYzOworLy8JfSBlbHNlIGlmICgo cmVhZF9jcHVpZF9pZCgpICYgMHgwMDBmMDAwMCkgPT0gMHgwMDBmMDAwMCkgeworLy8JCXVuc2ln bmVkIGludCBtbWZyMDsKKy8vCisvLwkJLyogUmV2aXNlZCBDUFVJRCBmb3JtYXQuIFJlYWQgdGhl IE1lbW9yeSBNb2RlbCBGZWF0dXJlCisvLwkJICogUmVnaXN0ZXIgMCBhbmQgY2hlY2sgZm9yIFZN U0F2NyBvciBQTVNBdjcgKi8KKy8vCQlhc20oIm1yYwlwMTUsIDAsICUwLCBjMCwgYzEsIDQiCisv LwkJICAgIDogIj1yIiAobW1mcjApKTsKKy8vCQlpZiAoKG1tZnIwICYgMHgwMDAwMDAwZikgPj0g MHgwMDAwMDAwMyB8fAorLy8JCSAgICAobW1mcjAgJiAweDAwMDAwMGYwKSA+PSAweDAwMDAwMDMw KQorLy8JCQljcHVfYXJjaCA9IENQVV9BUkNIX0FSTXY3OworLy8JCWVsc2UgaWYgKChtbWZyMCAm IDB4MDAwMDAwMGYpID09IDB4MDAwMDAwMDIgfHwKKy8vCQkJIChtbWZyMCAmIDB4MDAwMDAwZjAp ID09IDB4MDAwMDAwMjApCisvLwkJCWNwdV9hcmNoID0gQ1BVX0FSQ0hfQVJNdjY7CisvLwkJZWxz ZQorLy8JCQljcHVfYXJjaCA9IENQVV9BUkNIX1VOS05PV047CisvLwl9IGVsc2UKKy8vCQljcHVf YXJjaCA9IENQVV9BUkNIX1VOS05PV047CisKKwljcHVfYXJjaCA9IENQVV9BUkNIX0FSTXY4Owor CisJcmV0dXJuIGNwdV9hcmNoOworfQorCitleHRlcm4gaW50IF9fcHVyZSBjcHVfYXJjaGl0ZWN0 dXJlKHZvaWQpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgaW50IF9fcHVyZSBhcm1fZWFybHlfZ2V0 X2NwdV9hcmNoaXRlY3R1cmUodm9pZCkKK3sKKwlyZXR1cm4gQVJNX0FSQ0g7Cit9CisKK3N0YXRp YyBpbmxpbmUgaW50IF9fcHVyZSBjcHVfYXJjaGl0ZWN0dXJlKHZvaWQpCit7CisJcmV0dXJuIEFS TV9BUkNIOworfQorI2VuZGlmCisKKyNlbmRpZiAvKiAhX19BU1NFTUJMWV9fICovCisKKyNlbmRp ZiAvKiBfX0FTTV9BUk1fU1lTVEVNX0lORk9fSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9p bmNsdWRlL2FzbS90eXBlcy5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90eXBlcy5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhN2Y0N2EKLS0tIC9kZXYvbnVsbAorKysg Yi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3R5cGVzLmgKQEAgLTAsMCArMSw1NCBAQAorI2lmbmRl ZiBfX0FTTV9BUk1fVFlQRVNfSAorI2RlZmluZSBfX0FTTV9BUk1fVFlQRVNfSAorCisjaWZuZGVm IF9fQVNTRU1CTFlfXworCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVtb2RlX3Q7CisKKy8qCisg KiBfX3h4IGlzIG9rOiBpdCBkb2Vzbid0IHBvbGx1dGUgdGhlIFBPU0lYIG5hbWVzcGFjZS4gVXNl IHRoZXNlIGluIHRoZQorICogaGVhZGVyIGZpbGVzIGV4cG9ydGVkIHRvIHVzZXIgc3BhY2UKKyAq LworCit0eXBlZGVmIF9fc2lnbmVkX18gY2hhciBfX3M4OwordHlwZWRlZiB1bnNpZ25lZCBjaGFy IF9fdTg7CisKK3R5cGVkZWYgX19zaWduZWRfXyBzaG9ydCBfX3MxNjsKK3R5cGVkZWYgdW5zaWdu ZWQgc2hvcnQgX191MTY7CisKK3R5cGVkZWYgX19zaWduZWRfXyBpbnQgX19zMzI7Cit0eXBlZGVm IHVuc2lnbmVkIGludCBfX3UzMjsKKworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVk KF9fU1RSSUNUX0FOU0lfXykKK3R5cGVkZWYgX19zaWduZWRfXyBsb25nIGxvbmcgX19zNjQ7Cit0 eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3U2NDsKKyNlbmRpZgorCisjZW5kaWYgLyogX19B U1NFTUJMWV9fICovCisKKy8qCisgKiBUaGVzZSBhcmVuJ3QgZXhwb3J0ZWQgb3V0c2lkZSB0aGUg a2VybmVsIHRvIGF2b2lkIG5hbWUgc3BhY2UgY2xhc2hlcworICovCisjaWZkZWYgX19LRVJORUxf XworCisjaW5jbHVkZSA8YXNtL2JpdHNwZXJsb25nLmg+CisKKyNpZm5kZWYgX19BU1NFTUJMWV9f CisKK3R5cGVkZWYgc2lnbmVkIGNoYXIgczg7Cit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdTg7CisK K3R5cGVkZWYgc2lnbmVkIHNob3J0IHMxNjsKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgdTE2Owor Cit0eXBlZGVmIHNpZ25lZCBpbnQgczMyOwordHlwZWRlZiB1bnNpZ25lZCBpbnQgdTMyOworCit0 eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgczY0OwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcg dTY0OworCisjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCisKKyNlbmRpZiAvKiBfX0tFUk5FTF9f ICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS91bmFsaWdu ZWQuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdW5hbGlnbmVkLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ1OTNhOAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJt NjQvaW5jbHVkZS9hc20vdW5hbGlnbmVkLmgKQEAgLTAsMCArMSwxOSBAQAorI2lmbmRlZiBfQVNN X0FSTV9VTkFMSUdORURfSAorI2RlZmluZSBfQVNNX0FSTV9VTkFMSUdORURfSAorCisjaW5jbHVk ZSA8bGludXgvdW5hbGlnbmVkL2xlX2J5dGVzaGlmdC5oPgorI2luY2x1ZGUgPGxpbnV4L3VuYWxp Z25lZC9iZV9ieXRlc2hpZnQuaD4KKyNpbmNsdWRlIDxsaW51eC91bmFsaWduZWQvZ2VuZXJpYy5o PgorCisvKgorICogU2VsZWN0IGVuZGlhbm5lc3MKKyAqLworI2lmbmRlZiBfX0FSTUVCX18KKyNk ZWZpbmUgZ2V0X3VuYWxpZ25lZAlfX2dldF91bmFsaWduZWRfbGUKKyNkZWZpbmUgcHV0X3VuYWxp Z25lZAlfX3B1dF91bmFsaWduZWRfbGUKKyNlbHNlCisjZGVmaW5lIGdldF91bmFsaWduZWQJX19n ZXRfdW5hbGlnbmVkX2JlCisjZGVmaW5lIHB1dF91bmFsaWduZWQJX19wdXRfdW5hbGlnbmVkX2Jl CisjZW5kaWYKKworI2VuZGlmIC8qIF9BU01fQVJNX1VOQUxJR05FRF9IICovCmRpZmYgLS1naXQg YS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3VuaWZpZWQuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9h c20vdW5pZmllZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzYTJiZmYK LS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3VuaWZpZWQuaApAQCAt MCwwICsxLDEyNyBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS91bmlmaWVkLmggLSBVbmlmaWVk IEFzc2VtYmxlciBTeW50YXggaGVscGVyIG1hY3JvcworICoKKyAqIENvcHlyaWdodCAoQykgMjAw OCBBUk0gTGltaXRlZAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKyAqCisgKi8KKworI2lmbmRlZiBfX0FTTV9VTklGSUVEX0gKKyNkZWZpbmUgX19BU01f VU5JRklFRF9ICisKKyNpZiBkZWZpbmVkKF9fQVNTRU1CTFlfXykgJiYgZGVmaW5lZChDT05GSUdf QVJNX0FTTV9VTklGSUVEKQorCS5zeW50YXggdW5pZmllZAorI2VuZGlmCisKKyNpZmRlZiBDT05G SUdfVEhVTUIyX0JBUkVCT1gKKworI2lmIF9fR05VQ19fIDwgNAorI2Vycm9yIFRodW1iLTIgYmFy ZWJveCByZXF1aXJlcyBnY2MgPj0gNAorI2VuZGlmCisKKy8qIFRoZSBDUFNSIGJpdCBkZXNjcmli aW5nIHRoZSBpbnN0cnVjdGlvbiBzZXQgKFRodW1iKSAqLworI2RlZmluZSBQU1JfSVNFVFNUQVRF CVBTUl9UX0JJVAorCisjZGVmaW5lIEFSTSh4Li4uKQorI2RlZmluZSBUSFVNQih4Li4uKQl4Cisj aWZkZWYgX19BU1NFTUJMWV9fCisjZGVmaW5lIFcoaW5zdHIpCWluc3RyLncKKyNlbmRpZgorI2Rl ZmluZSBCU1lNKHN5bSkJc3ltICsgMQorCisjZWxzZQkvKiAhQ09ORklHX1RIVU1CMl9CQVJFQk9Y ICovCisKKy8qIFRoZSBDUFNSIGJpdCBkZXNjcmliaW5nIHRoZSBpbnN0cnVjdGlvbiBzZXQgKEFS TSkgKi8KKyNkZWZpbmUgUFNSX0lTRVRTVEFURQkwCisKKyNkZWZpbmUgQVJNKHguLi4pCXgKKyNk ZWZpbmUgVEhVTUIoeC4uLikKKyNpZmRlZiBfX0FTU0VNQkxZX18KKyNkZWZpbmUgVyhpbnN0cikJ aW5zdHIKKyNlbmRpZgorI2RlZmluZSBCU1lNKHN5bSkJc3ltCisKKyNlbmRpZgkvKiBDT05GSUdf VEhVTUIyX0JBUkVCT1ggKi8KKworI2lmbmRlZiBDT05GSUdfQVJNX0FTTV9VTklGSUVECisKKy8q CisgKiBJZiB0aGUgdW5pZmllZCBhc3NlbWJseSBzeW50YXggaXNuJ3QgdXNlZCAoaW4gQVJNIG1v ZGUpLCB0aGVzZQorICogbWFjcm9zIGV4cGFuZCB0byBhbiBlbXB0eSBzdHJpbmcKKyAqLworI2lm ZGVmIF9fQVNTRU1CTFlfXworCS5tYWNybwlpdCwgY29uZAorCS5lbmRtCisJLm1hY3JvCWl0dCwg Y29uZAorCS5lbmRtCisJLm1hY3JvCWl0ZSwgY29uZAorCS5lbmRtCisJLm1hY3JvCWl0dHQsIGNv bmQKKwkuZW5kbQorCS5tYWNybwlpdHRlLCBjb25kCisJLmVuZG0KKwkubWFjcm8JaXRldCwgY29u ZAorCS5lbmRtCisJLm1hY3JvCWl0ZWUsIGNvbmQKKwkuZW5kbQorCS5tYWNybwlpdHR0dCwgY29u ZAorCS5lbmRtCisJLm1hY3JvCWl0dHRlLCBjb25kCisJLmVuZG0KKwkubWFjcm8JaXR0ZXQsIGNv bmQKKwkuZW5kbQorCS5tYWNybwlpdHRlZSwgY29uZAorCS5lbmRtCisJLm1hY3JvCWl0ZXR0LCBj b25kCisJLmVuZG0KKwkubWFjcm8JaXRldGUsIGNvbmQKKwkuZW5kbQorCS5tYWNybwlpdGVldCwg Y29uZAorCS5lbmRtCisJLm1hY3JvCWl0ZWVlLCBjb25kCisJLmVuZG0KKyNlbHNlCS8qICFfX0FT U0VNQkxZX18gKi8KK19fYXNtX18oCisiCS5tYWNybwlpdCwgY29uZFxuIgorIgkuZW5kbVxuIgor IgkubWFjcm8JaXR0LCBjb25kXG4iCisiCS5lbmRtXG4iCisiCS5tYWNybwlpdGUsIGNvbmRcbiIK KyIJLmVuZG1cbiIKKyIJLm1hY3JvCWl0dHQsIGNvbmRcbiIKKyIJLmVuZG1cbiIKKyIJLm1hY3Jv CWl0dGUsIGNvbmRcbiIKKyIJLmVuZG1cbiIKKyIJLm1hY3JvCWl0ZXQsIGNvbmRcbiIKKyIJLmVu ZG1cbiIKKyIJLm1hY3JvCWl0ZWUsIGNvbmRcbiIKKyIJLmVuZG1cbiIKKyIJLm1hY3JvCWl0dHR0 LCBjb25kXG4iCisiCS5lbmRtXG4iCisiCS5tYWNybwlpdHR0ZSwgY29uZFxuIgorIgkuZW5kbVxu IgorIgkubWFjcm8JaXR0ZXQsIGNvbmRcbiIKKyIJLmVuZG1cbiIKKyIJLm1hY3JvCWl0dGVlLCBj b25kXG4iCisiCS5lbmRtXG4iCisiCS5tYWNybwlpdGV0dCwgY29uZFxuIgorIgkuZW5kbVxuIgor IgkubWFjcm8JaXRldGUsIGNvbmRcbiIKKyIJLmVuZG1cbiIKKyIJLm1hY3JvCWl0ZWV0LCBjb25k XG4iCisiCS5lbmRtXG4iCisiCS5tYWNybwlpdGVlZSwgY29uZFxuIgorIgkuZW5kbVxuIik7Cisj ZW5kaWYJLyogX19BU1NFTUJMWV9fICovCisKKyNlbmRpZgkvKiBDT05GSUdfQVJNX0FTTV9VTklG SUVEICovCisKKyNlbmRpZgkvKiAhX19BU01fVU5JRklFRF9IICovCmRpZmYgLS1naXQgYS9hcmNo L2FybTY0L2luY2x1ZGUvYXNtL3Vud2luZC5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS91bndp bmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTFhZDNkCi0tLSAvZGV2 L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS91bndpbmQuaApAQCAtMCwwICsxLDUx IEBACisvKgorICogYXJjaC9hcm0vaW5jbHVkZS9hc20vdW53aW5kLmgKKyAqCisgKiBDb3B5cmln aHQgKEMpIDIwMDggQVJNIExpbWl0ZWQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMK KyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisgKgorICovCisKKyNpZm5kZWYgX19BU01fVU5XSU5EX0gKKyNkZWZp bmUgX19BU01fVU5XSU5EX0gKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworLyogVW53aW5kIHJl YXNvbiBjb2RlIGFjY29yZGluZyB0aGUgdGhlIEFSTSBFQUJJIGRvY3VtZW50cyAqLworZW51bSB1 bndpbmRfcmVhc29uX2NvZGUgeworCVVSQ19PSyA9IDAsCQkJLyogb3BlcmF0aW9uIGNvbXBsZXRl ZCBzdWNjZXNzZnVsbHkgKi8KKwlVUkNfQ09OVElOVUVfVU5XSU5EID0gOCwKKwlVUkNfRkFJTFVS RSA9IDkJCQkvKiB1bnNwZWNpZmllZCBmYWlsdXJlIG9mIHNvbWUga2luZCAqLworfTsKKworc3Ry dWN0IHVud2luZF9pZHggeworCXVuc2lnbmVkIGxvbmcgYWRkcjsKKwl1bnNpZ25lZCBsb25nIGlu c247Cit9OworCitzdHJ1Y3QgdW53aW5kX3RhYmxlIHsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7 CisJc3RydWN0IHVud2luZF9pZHggKnN0YXJ0OworCXN0cnVjdCB1bndpbmRfaWR4ICpzdG9wOwor CXVuc2lnbmVkIGxvbmcgYmVnaW5fYWRkcjsKKwl1bnNpZ25lZCBsb25nIGVuZF9hZGRyOworfTsK KworZXh0ZXJuIHN0cnVjdCB1bndpbmRfdGFibGUgKnVud2luZF90YWJsZV9hZGQodW5zaWduZWQg bG9uZyBzdGFydCwKKwkJCQkJICAgICB1bnNpZ25lZCBsb25nIHNpemUsCisJCQkJCSAgICAgdW5z aWduZWQgbG9uZyB0ZXh0X2FkZHIsCisJCQkJCSAgICAgdW5zaWduZWQgbG9uZyB0ZXh0X3NpemUp OworZXh0ZXJuIHZvaWQgdW53aW5kX3RhYmxlX2RlbChzdHJ1Y3QgdW53aW5kX3RhYmxlICp0YWIp OworZXh0ZXJuIHZvaWQgdW53aW5kX2JhY2t0cmFjZShzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CisK KyNlbmRpZgkvKiAhX19BU1NFTUJMWV9fICovCisKKyNlbmRpZgkvKiBfX0FTTV9VTldJTkRfSCAq LwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9saWIvTWFrZWZpbGUgYi9hcmNoL2FybTY0L2xpYi9N YWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjlkNGE1Ci0tLSAv ZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9saWIvTWFrZWZpbGUKQEAgLTAsMCArMSwxNiBAQAor b2JqLSQoQ09ORklHX0FSTV9MSU5VWCkJKz0gYXJtbGludXgubworb2JqLSQoQ09ORklHX0JPT1RN KQkrPSBib290bS5vCitvYmotJChDT05GSUdfQ01EX0JPT1RaKQkrPSBib290ei5vCitvYmotJChD T05GSUdfQ01EX0JPT1RVKQkrPSBib290dS5vCitvYmoteQkrPSBkaXYwLm8KK29iai15CSs9IHJ1 bnRpbWUtb2Zmc2V0Lm8KK3BibC15CSs9IHJ1bnRpbWUtb2Zmc2V0Lm8KK29iai0kKENPTkZJR19B Uk1fT1BUSU1aRURfU1RSSU5HX0ZVTkNUSU9OUykJKz0gbWVtY3B5Lm8KK29iai0kKENPTkZJR19B Uk1fT1BUSU1aRURfU1RSSU5HX0ZVTkNUSU9OUykJKz0gbWVtc2V0Lm8KK29iai0kKENPTkZJR19B Uk1fVU5XSU5EKSArPSB1bndpbmQubworb2JqLSQoQ09ORklHX01PRFVMRVMpICs9IG1vZHVsZS5v CitleHRyYS15ICs9IGJhcmVib3gubGRzCisKK3BibC15CSs9IGxpYjFmdW5jcy5vCitwYmwteQkr PSBhc2hsZGkzLm8KK3BibC15CSs9IGRpdjAubwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9saWIv YXJtbGludXguYyBiL2FyY2gvYXJtNjQvbGliL2FybWxpbnV4LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMjFhMjI5MgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQv bGliL2FybWxpbnV4LmMKQEAgLTAsMCArMSwyNzUgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIw MDIKKyAqIFN5c2dvIFJlYWwtVGltZSBTb2x1dGlvbnMsIEdtYkggPHd3dy5lbGlub3MuY29tPgor ICogTWFyaXVzIEdyb2VnZXIgPG1ncm9lZ2VyQHN5c2dvLmRlPgorICoKKyAqIENvcHlyaWdodCAo QykgMjAwMSAgRXJpayBNb3V3IChKLkEuSy5Nb3V3QGl0cy50dWRlbGZ0Lm5sKQorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRoZQor ICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLworCisj aW5jbHVkZSA8Ym9vdC5oPgorI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGNvbW1hbmQu aD4KKyNpbmNsdWRlIDxkcml2ZXIuaD4KKyNpbmNsdWRlIDxlbnZpcm9ubWVudC5oPgorI2luY2x1 ZGUgPGltYWdlLmg+CisjaW5jbHVkZSA8aW5pdC5oPgorI2luY2x1ZGUgPGZzLmg+CisjaW5jbHVk ZSA8bGludXgvbGlzdC5oPgorI2luY2x1ZGUgPHhmdW5jcy5oPgorI2luY2x1ZGUgPG1hbGxvYy5o PgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxtZW1v cnkuaD4KKyNpbmNsdWRlIDxvZi5oPgorI2luY2x1ZGUgPG1hZ2ljdmFyLmg+CisKKyNpbmNsdWRl IDxhc20vYnl0ZW9yZGVyLmg+CisjaW5jbHVkZSA8YXNtL3NldHVwLmg+CisjaW5jbHVkZSA8YXNt L2JhcmVib3gtYXJtLmg+CisjaW5jbHVkZSA8YXNtL2FybWxpbnV4Lmg+CisjaW5jbHVkZSA8YXNt L3N5c3RlbS5oPgorCitzdGF0aWMgc3RydWN0IHRhZyAqcGFyYW1zOworc3RhdGljIHZvaWQgKmFy bWxpbnV4X2Jvb3RwYXJhbXMgPSBOVUxMOworCitzdGF0aWMgaW50IGFybWxpbnV4X2FyY2hpdGVj dHVyZTsKK3N0YXRpYyB1MzIgYXJtbGludXhfc3lzdGVtX3JldjsKK3N0YXRpYyB1NjQgYXJtbGlu dXhfc3lzdGVtX3NlcmlhbDsKKworQkFSRUJPWF9NQUdJQ1ZBUihhcm1saW51eF9hcmNoaXRlY3R1 cmUsICJBUk0gbWFjaGluZSBJRCIpOworQkFSRUJPWF9NQUdJQ1ZBUihhcm1saW51eF9zeXN0ZW1f cmV2LCAiQVJNIHN5c3RlbSByZXZpc2lvbiIpOworQkFSRUJPWF9NQUdJQ1ZBUihhcm1saW51eF9z eXN0ZW1fc2VyaWFsLCAiQVJNIHN5c3RlbSBzZXJpYWwiKTsKKwordm9pZCBhcm1saW51eF9zZXRf YXJjaGl0ZWN0dXJlKGludCBhcmNoaXRlY3R1cmUpCit7CisJZXhwb3J0X2Vudl91bGwoImFybWxp bnV4X2FyY2hpdGVjdHVyZSIsIGFyY2hpdGVjdHVyZSk7CisJYXJtbGludXhfYXJjaGl0ZWN0dXJl ID0gYXJjaGl0ZWN0dXJlOworfQorCitpbnQgYXJtbGludXhfZ2V0X2FyY2hpdGVjdHVyZSh2b2lk KQoreworCWdldGVudl91aW50KCJhcm1saW51eF9hcmNoaXRlY3R1cmUiLCAmYXJtbGludXhfYXJj aGl0ZWN0dXJlKTsKKworCXJldHVybiBhcm1saW51eF9hcmNoaXRlY3R1cmU7Cit9CisKK3ZvaWQg YXJtbGludXhfc2V0X3JldmlzaW9uKHVuc2lnbmVkIGludCByZXYpCit7CisJZXhwb3J0X2Vudl91 bGwoImFybWxpbnV4X3N5c3RlbV9yZXYiLCByZXYpOworCWFybWxpbnV4X3N5c3RlbV9yZXYgPSBy ZXY7Cit9CisKK3Vuc2lnbmVkIGludCBhcm1saW51eF9nZXRfcmV2aXNpb24odm9pZCkKK3sKKwln ZXRlbnZfdWludCgiYXJtbGludXhfc3lzdGVtX3JldiIsICZhcm1saW51eF9zeXN0ZW1fcmV2KTsK KworCXJldHVybiBhcm1saW51eF9zeXN0ZW1fcmV2OworfQorCit2b2lkIGFybWxpbnV4X3NldF9z ZXJpYWwodTY0IHNlcmlhbCkKK3sKKwlleHBvcnRfZW52X3VsbCgiYXJtbGludXhfc3lzdGVtX3Nl cmlhbCIsIHNlcmlhbCk7CisJYXJtbGludXhfc3lzdGVtX3NlcmlhbCA9IHNlcmlhbDsKK30KKwor dTY0IGFybWxpbnV4X2dldF9zZXJpYWwodm9pZCkKK3sKKwlnZXRlbnZfdWxsKCJhcm1saW51eF9z eXN0ZW1fc2VyaWFsIiwgJmFybWxpbnV4X3N5c3RlbV9zZXJpYWwpOworCisJcmV0dXJuIGFybWxp bnV4X3N5c3RlbV9zZXJpYWw7Cit9CisKK3ZvaWQgYXJtbGludXhfc2V0X2Jvb3RwYXJhbXModm9p ZCAqcGFyYW1zKQoreworCWFybWxpbnV4X2Jvb3RwYXJhbXMgPSBwYXJhbXM7Cit9CisKK3N0YXRp YyBzdHJ1Y3QgdGFnICphcm1saW51eF9nZXRfYm9vdHBhcmFtcyh2b2lkKQoreworCXN0cnVjdCBt ZW1vcnlfYmFuayAqbWVtOworCisJaWYgKGFybWxpbnV4X2Jvb3RwYXJhbXMpCisJCXJldHVybiBh cm1saW51eF9ib290cGFyYW1zOworCisJZm9yX2VhY2hfbWVtb3J5X2JhbmsobWVtKQorCQlyZXR1 cm4gKHZvaWQgKiltZW0tPnN0YXJ0ICsgMHgxMDA7CisKKwlCVUcoKTsKK30KKworI2lmZGVmIENP TkZJR19BUk1fQk9BUkRfQVBQRU5EX0FUQUcKK3N0YXRpYyBzdHJ1Y3QgdGFnICooKmF0YWdfYXBw ZW5kZXIpKHN0cnVjdCB0YWcgKik7Cit2b2lkIGFybWxpbnV4X3NldF9hdGFnX2FwcGVuZGVyKHN0 cnVjdCB0YWcgKigqZnVuYykoc3RydWN0IHRhZyAqKSkKK3sKKwlhdGFnX2FwcGVuZGVyID0gZnVu YzsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCBzZXR1cF9zdGFydF90YWcodm9pZCkKK3sKKwlw YXJhbXMgPSBhcm1saW51eF9nZXRfYm9vdHBhcmFtcygpOworCisJcGFyYW1zLT5oZHIudGFnID0g QVRBR19DT1JFOworCXBhcmFtcy0+aGRyLnNpemUgPSB0YWdfc2l6ZSh0YWdfY29yZSk7CisKKwlw YXJhbXMtPnUuY29yZS5mbGFncyA9IDA7CisJcGFyYW1zLT51LmNvcmUucGFnZXNpemUgPSAwOwor CXBhcmFtcy0+dS5jb3JlLnJvb3RkZXYgPSAwOworCisJcGFyYW1zID0gdGFnX25leHQocGFyYW1z KTsKK30KKworc3RhdGljIHZvaWQgc2V0dXBfbWVtb3J5X3RhZ3Modm9pZCkKK3sKKwlzdHJ1Y3Qg bWVtb3J5X2JhbmsgKmJhbms7CisKKwlmb3JfZWFjaF9tZW1vcnlfYmFuayhiYW5rKSB7CisJCXBh cmFtcy0+aGRyLnRhZyA9IEFUQUdfTUVNOworCQlwYXJhbXMtPmhkci5zaXplID0gdGFnX3NpemUo dGFnX21lbTMyKTsKKworCQlwYXJhbXMtPnUubWVtLnN0YXJ0ID0gYmFuay0+c3RhcnQ7CisJCXBh cmFtcy0+dS5tZW0uc2l6ZSA9IGJhbmstPnNpemU7CisKKwkJcGFyYW1zID0gdGFnX25leHQocGFy YW1zKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHNldHVwX2NvbW1hbmRsaW5lX3RhZyhjb25zdCBj aGFyICpjb21tYW5kbGluZSwgaW50IHN3YXApCit7CisJY29uc3QgY2hhciAqcDsKKwlzaXplX3Qg d29yZHM7CisKKwlpZiAoIWNvbW1hbmRsaW5lKQorCQlyZXR1cm47CisKKwkvKiBlYXQgbGVhZGlu ZyB3aGl0ZSBzcGFjZSAqLworCWZvciAocCA9IGNvbW1hbmRsaW5lOyAqcCA9PSAnICc7IHArKykg OworCisJLyoKKwkgKiBza2lwIG5vbi1leGlzdGVudCBjb21tYW5kIGxpbmVzIHNvIHRoZSBrZXJu ZWwgd2lsbCBzdGlsbAorCSAqIHVzZSBpdHMgZGVmYXVsdCBjb21tYW5kIGxpbmUuCisJICovCisJ aWYgKCpwID09ICdcMCcpCisJCXJldHVybjsKKworCXdvcmRzID0gKHN0cmxlbihwKSArIDEgLyog TlVMICovICsgMyAvKiByb3VuZCB1cCAqLykgPj4gMjsKKwlwYXJhbXMtPmhkci50YWcgPSBBVEFH X0NNRExJTkU7CisJcGFyYW1zLT5oZHIuc2l6ZSA9IChzaXplb2Yoc3RydWN0IHRhZ19oZWFkZXIp ID4+IDIpICsgd29yZHM7CisKKwlzdHJjcHkocGFyYW1zLT51LmNtZGxpbmUuY21kbGluZSwgcCk7 CisKKyNpZmRlZiBDT05GSUdfQk9PVF9FTkRJQU5ORVNTX1NXSVRDSAorCWlmIChzd2FwKSB7CisJ CXUzMiAqY21kID0gKHUzMiAqKXBhcmFtcy0+dS5jbWRsaW5lLmNtZGxpbmU7CisJCXdoaWxlICh3 b3Jkcy0tKQorCQkJY21kW3dvcmRzXSA9IHN3YWIzMihjbWRbd29yZHNdKTsKKwl9CisjZW5kaWYK KworCXBhcmFtcyA9IHRhZ19uZXh0KHBhcmFtcyk7Cit9CisKK3N0YXRpYyB2b2lkIHNldHVwX3Jl dmlzaW9uX3RhZyh2b2lkKQoreworCXUzMiBzeXN0ZW1fcmV2ID0gYXJtbGludXhfZ2V0X3Jldmlz aW9uKCk7CisKKwlpZiAoc3lzdGVtX3JldikgeworCQlwYXJhbXMtPmhkci50YWcgPSBBVEFHX1JF VklTSU9OOworCQlwYXJhbXMtPmhkci5zaXplID0gdGFnX3NpemUodGFnX3JldmlzaW9uKTsKKwor CQlwYXJhbXMtPnUucmV2aXNpb24ucmV2ID0gc3lzdGVtX3JldjsKKworCQlwYXJhbXMgPSB0YWdf bmV4dChwYXJhbXMpOworCX0KK30KKworc3RhdGljIHZvaWQgc2V0dXBfc2VyaWFsX3RhZyh2b2lk KQoreworCXU2NCBzeXN0ZW1fc2VyaWFsID0gYXJtbGludXhfZ2V0X3NlcmlhbCgpOworCisJaWYg KHN5c3RlbV9zZXJpYWwpIHsKKwkJcGFyYW1zLT5oZHIudGFnID0gQVRBR19TRVJJQUw7CisJCXBh cmFtcy0+aGRyLnNpemUgPSB0YWdfc2l6ZSh0YWdfc2VyaWFsbnIpOworCisJCXBhcmFtcy0+dS5z ZXJpYWxuci5sb3cgID0gc3lzdGVtX3NlcmlhbCAmIDB4ZmZmZmZmZmY7CisJCXBhcmFtcy0+dS5z ZXJpYWxuci5oaWdoID0gc3lzdGVtX3NlcmlhbCA+PiAzMjsKKworCQlwYXJhbXMgPSB0YWdfbmV4 dChwYXJhbXMpOworCX0KK30KKworc3RhdGljIHZvaWQgc2V0dXBfaW5pdHJkX3RhZyh1bnNpZ25l ZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUpCit7CisJLyogYW4gQVRBR19JTklUUkQg bm9kZSB0ZWxscyB0aGUga2VybmVsIHdoZXJlIHRoZSBjb21wcmVzc2VkCisJICogcmFtZGlzayBj YW4gYmUgZm91bmQuIEFUQUdfUkRJTUcgaXMgYSBiZXR0ZXIgbmFtZSwgYWN0dWFsbHkuCisJICov CisJcGFyYW1zLT5oZHIudGFnID0gQVRBR19JTklUUkQyOworCXBhcmFtcy0+aGRyLnNpemUgPSB0 YWdfc2l6ZSh0YWdfaW5pdHJkKTsKKworCXBhcmFtcy0+dS5pbml0cmQuc3RhcnQgPSBzdGFydDsK KwlwYXJhbXMtPnUuaW5pdHJkLnNpemUgPSBzaXplOworCisJcGFyYW1zID0gdGFnX25leHQocGFy YW1zKTsKK30KKworc3RhdGljIHZvaWQgc2V0dXBfZW5kX3RhZyAodm9pZCkKK3sKKwlwYXJhbXMt Pmhkci50YWcgPSBBVEFHX05PTkU7CisJcGFyYW1zLT5oZHIuc2l6ZSA9IDA7Cit9CisKK3N0YXRp YyB2b2lkIHNldHVwX3RhZ3ModW5zaWduZWQgbG9uZyBpbml0cmRfYWRkcmVzcywKKwkJdW5zaWdu ZWQgbG9uZyBpbml0cmRfc2l6ZSwgaW50IHN3YXApCit7CisJY29uc3QgY2hhciAqY29tbWFuZGxp bmUgPSBsaW51eF9ib290YXJnc19nZXQoKTsKKworCXNldHVwX3N0YXJ0X3RhZygpOworCXNldHVw X21lbW9yeV90YWdzKCk7CisJc2V0dXBfY29tbWFuZGxpbmVfdGFnKGNvbW1hbmRsaW5lLCBzd2Fw KTsKKworCWlmIChpbml0cmRfc2l6ZSkKKwkJc2V0dXBfaW5pdHJkX3RhZyhpbml0cmRfYWRkcmVz cywgaW5pdHJkX3NpemUpOworCisJc2V0dXBfcmV2aXNpb25fdGFnKCk7CisJc2V0dXBfc2VyaWFs X3RhZygpOworI2lmZGVmIENPTkZJR19BUk1fQk9BUkRfQVBQRU5EX0FUQUcKKwlpZiAoYXRhZ19h cHBlbmRlciAhPSBOVUxMKQorCQlwYXJhbXMgPSBhdGFnX2FwcGVuZGVyKHBhcmFtcyk7CisjZW5k aWYKKwlzZXR1cF9lbmRfdGFnKCk7CisKKwlwcmludGYoImNvbW1hbmRsaW5lOiAlc1xuIgorCSAg ICAgICAiYXJjaF9udW1iZXI6ICVkXG4iLCBjb21tYW5kbGluZSwgYXJtbGludXhfZ2V0X2FyY2hp dGVjdHVyZSgpKTsKKworfQorCit2b2lkIHN0YXJ0X2xpbnV4KHZvaWQgKmFkciwgaW50IHN3YXAs IHVuc2lnbmVkIGxvbmcgaW5pdHJkX2FkZHJlc3MsCisJCXVuc2lnbmVkIGxvbmcgaW5pdHJkX3Np emUsIHZvaWQgKm9mdHJlZSkKK3sKKwl2b2lkICgqa2VybmVsKShpbnQgemVybywgaW50IGFyY2gs IHZvaWQgKnBhcmFtcykgPSBhZHI7CisJdm9pZCAqcGFyYW1zID0gTlVMTDsKKwlpbnQgYXJjaGl0 ZWN0dXJlOworCisJaWYgKG9mdHJlZSkgeworCQlwcl9kZWJ1ZygiYm9vdGluZyBrZXJuZWwgd2l0 aCBkZXZpY2V0cmVlXG4iKTsKKwkJcGFyYW1zID0gb2Z0cmVlOworCX0gZWxzZSB7CisJCXNldHVw X3RhZ3MoaW5pdHJkX2FkZHJlc3MsIGluaXRyZF9zaXplLCBzd2FwKTsKKwkJcGFyYW1zID0gYXJt bGludXhfZ2V0X2Jvb3RwYXJhbXMoKTsKKwl9CisJYXJjaGl0ZWN0dXJlID0gYXJtbGludXhfZ2V0 X2FyY2hpdGVjdHVyZSgpOworCisJc2h1dGRvd25fYmFyZWJveCgpOworCisJa2VybmVsKDAsIGFy Y2hpdGVjdHVyZSwgcGFyYW1zKTsKK30KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbGliL2FzbS1v ZmZzZXRzLmMgYi9hcmNoL2FybTY0L2xpYi9hc20tb2Zmc2V0cy5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjdiZjZkMTIKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0 L2xpYi9hc20tb2Zmc2V0cy5jCkBAIC0wLDAgKzEsMTYgQEAKKy8qCisgKiBHZW5lcmF0ZSBkZWZp bml0aW9ucyBuZWVkZWQgYnkgYXNzZW1ibHkgbGFuZ3VhZ2UgbW9kdWxlcy4KKyAqIFRoaXMgY29k ZSBnZW5lcmF0ZXMgcmF3IGFzbSBvdXRwdXQgd2hpY2ggaXMgcG9zdC1wcm9jZXNzZWQgdG8gZXh0 cmFjdAorICogYW5kIGZvcm1hdCB0aGUgcmVxdWlyZWQgZGF0YS4KKyAqCisgKiBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9rYnVpbGQuaD4KKworaW50IG1haW4odm9pZCkK K3sKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbGliL2JhcmVib3gubGRz IGIvYXJjaC9hcm02NC9saWIvYmFyZWJveC5sZHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uYTYyNmZmOQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvbGliL2JhcmVi b3gubGRzCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICoKKyAqIEF1dG9tYXRpY2FsbHkgZ2VuZXJh dGVkIGZpbGU7IERPIE5PVCBFRElULgorICogQmFyZWJveC9hcm02NCAyMDE2LjAyLjAgQ29uZmln dXJhdGlvbgorICoKKyAqLworLyoKKyAqIEhlbHBlciBtYWNyb3MgdG8gdXNlIENPTkZJR18gb3B0 aW9ucyBpbiBDIGV4cHJlc3Npb25zLiBOb3RlIHRoYXQKKyAqIHRoZXNlIG9ubHkgd29yayB3aXRo IGJvb2xlYW4gYW5kIHRyaXN0YXRlIG9wdGlvbnMuCisgKi8KKy8qCisgKiBHZXR0aW5nIHNvbWV0 aGluZyB0aGF0IHdvcmtzIGluIEMgYW5kIENQUCBmb3IgYW4gYXJnIHRoYXQgbWF5IG9yIG1heQor ICogbm90IGJlIGRlZmluZWQgaXMgdHJpY2t5LiAgSGVyZSwgaWYgd2UgaGF2ZSAiI2RlZmluZSBD T05GSUdfQk9PR0VSIDEiCisgKiB3ZSBtYXRjaCBvbiB0aGUgcGxhY2Vob2xkZXIgZGVmaW5lLCBp bnNlcnQgdGhlICIwLCIgZm9yIGFyZzEgYW5kIGdlbmVyYXRlCisgKiB0aGUgdHJpcGxldCAoMCwg MSwgMCkuICBUaGVuIHRoZSBsYXN0IHN0ZXAgY2hlcnJ5IHBpY2tzIHRoZSAybmQgYXJnIChhIG9u ZSkuCisgKiBXaGVuIENPTkZJR19CT09HRVIgaXMgbm90IGRlZmluZWQsIHdlIGdlbmVyYXRlIGEg KC4uLiAxLCAwKSBwYWlyLCBhbmQgd2hlbgorICogdGhlIGxhc3Qgc3RlcCBjaGVycnkgcGlja3Mg dGhlIDJuZCBhcmcsIHdlIGdldCBhIHplcm8uCisgKi8KKy8qCisgKiBJU19FTkFCTEVEKENPTkZJ R19GT08pIGV2YWx1YXRlcyB0byAxIGlmIENPTkZJR19GT08gaXMgc2V0IHRvICd5JyBvciAnbScs CisgKiAwIG90aGVyd2lzZS4KKyAqCisgKi8KKy8qCisgKiBJU19CVUlMVElOKENPTkZJR19GT08p IGV2YWx1YXRlcyB0byAxIGlmIENPTkZJR19GT08gaXMgc2V0IHRvICd5JywgMAorICogb3RoZXJ3 aXNlLiBGb3IgYm9vbGVhbiBvcHRpb25zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAqIElTX0VO QUJMRUQoQ09ORklHX0ZPTykuCisgKi8KKy8qCisgKiBJU19NT0RVTEUoQ09ORklHX0ZPTykgZXZh bHVhdGVzIHRvIDEgaWYgQ09ORklHX0ZPTyBpcyBzZXQgdG8gJ20nLCAwCisgKiBvdGhlcndpc2Uu CisgKi8KKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNAorICogV29sZmdhbmcgRGVuaywg REVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyAqCisgKiBTZWUgZmlsZSBD UkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJv amVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisgKgorICoKKyAqLworLyoKKyAqIEFsaWduIHRvIGEgMzIgYnl0ZSBib3VuZGFyeSBl cXVhbCB0byB0aGUKKyAqIGFsaWdubWVudCBnY2MgNC41IHVzZXMgZm9yIGEgc3RydWN0CisgKi8K Ky8qIEluZGlyZWN0IHN0cmluZ2lmaWNhdGlvbi4gIERvaW5nIHR3byBsZXZlbHMgYWxsb3dzIHRo ZSBwYXJhbWV0ZXIgdG8gYmUgYQorICogbWFjcm8gaXRzZWxmLiAgRm9yIGV4YW1wbGUsIGNvbXBp bGUgd2l0aCAtREZPTz1iYXIsIF9fc3RyaW5naWZ5KEZPTykKKyAqIGNvbnZlcnRzIHRvICJiYXIi LgorICovCisvKiB1c2UgMiBBU1NFUlQgYmVjYXVzZSBsZCBjYW4gbm90IGFjY2VwdCAnInNpemUi ICIxMCInIGZvcm1hdCAqLworT1VUUFVUX0ZPUk1BVCgiZWxmNjQtbGl0dGxlYWFyY2g2NCIsICJl bGY2NC1saXR0bGVhYXJjaDY0IiwgImVsZjY0LWxpdHRsZWFhcmNoNjQiKQorT1VUUFVUX0FSQ0go YWFyY2g2NCkKK0VOVFJZKHN0YXJ0KQorU0VDVElPTlMKK3sKKyAuID0gMHg0MDAwMDAwMDsKKwor IC4gPSBBTElHTig0KTsKKyAudGV4dCA6CisgeworICBfc3RleHQgPSAuOworICBfdGV4dCA9IC47 CisgICooLnRleHRfZW50cnkqKQorICBfX2JhcmVfaW5pdF9zdGFydCA9IC47CisgICooLnRleHRf YmFyZV9pbml0KikKKyAgX19iYXJlX2luaXRfZW5kID0gLjsKKyAgX19leGNlcHRpb25zX3N0YXJ0 ID0gLjsKKyAgS0VFUCgqKC50ZXh0X2V4Y2VwdGlvbnMqKSkKKyAgX19leGNlcHRpb25zX3N0b3Ag PSAuOworICAqKC50ZXh0KikKKyB9CisgX2JhcmVib3hfYmFyZV9pbml0X3NpemUgPSBfX2JhcmVf aW5pdF9lbmQgLSBfdGV4dDsgQVNTRVJUKF9iYXJlYm94X2JhcmVfaW5pdF9zaXplIDwgMHgwMTAw MDAwMCwgIkJhcmVib3ggYmFyZV9pbml0IHNpemUgPiAiKSBBU1NFUlQoX2JhcmVib3hfYmFyZV9p bml0X3NpemUgPCAweDAxMDAwMDAwLCAiMHgwMTAwMDAwMCIpCisgLiA9IEFMSUdOKDQpOworIC5y b2RhdGEgOiB7ICooLnJvZGF0YSopIH0KKyBfZXRleHQgPSAuOyAvKiBFbmQgb2YgdGV4dCBhbmQg cm9kYXRhIHNlY3Rpb24gKi8KKyBfc2RhdGEgPSAuOworIC4gPSBBTElHTig0KTsKKyAuZGF0YSA6 IHsgKiguZGF0YSopIH0KKyAuYmFyZWJveF9pbWQgOiB7IEtFRVAoKiguYmFyZWJveF9pbWRfc3Rh cnQpKSBLRUVQKCooLmJhcmVib3hfaW1kXzEqKSkgKiguYmFyZWJveF9pbWRfMCopIEtFRVAoKigu YmFyZWJveF9pbWRfZW5kKSkgfQorIC4gPSAuOworIF9fYmFyZWJveF9jbWRfc3RhcnQgPSAuOwor IC5iYXJlYm94X2NtZCA6IHsgS0VFUCgqKFNPUlRfQllfTkFNRSguYmFyZWJveF9jbWQqKSkpIH0K KyBfX2JhcmVib3hfY21kX2VuZCA9IC47CisgX19iYXJlYm94X21hZ2ljdmFyX3N0YXJ0ID0gLjsK KyAuYmFyZWJveF9tYWdpY3ZhciA6IHsgS0VFUCgqKFNPUlRfQllfTkFNRSguYmFyZWJveF9tYWdp Y3ZhciopKSkgfQorIF9fYmFyZWJveF9tYWdpY3Zhcl9lbmQgPSAuOworIF9fYmFyZWJveF9pbml0 Y2FsbHNfc3RhcnQgPSAuOworIC5iYXJlYm94X2luaXRjYWxscyA6IHsgS0VFUCgqKC5pbml0Y2Fs bC4wKSkgS0VFUCgqKC5pbml0Y2FsbC4xKSkgS0VFUCgqKC5pbml0Y2FsbC4yKSkgS0VFUCgqKC5p bml0Y2FsbC4zKSkgS0VFUCgqKC5pbml0Y2FsbC40KSkgS0VFUCgqKC5pbml0Y2FsbC41KSkgS0VF UCgqKC5pbml0Y2FsbC42KSkgS0VFUCgqKC5pbml0Y2FsbC43KSkgS0VFUCgqKC5pbml0Y2FsbC44 KSkgS0VFUCgqKC5pbml0Y2FsbC45KSkgS0VFUCgqKC5pbml0Y2FsbC4xMCkpIEtFRVAoKiguaW5p dGNhbGwuMTEpKSBLRUVQKCooLmluaXRjYWxsLjEyKSkgS0VFUCgqKC5pbml0Y2FsbC4xMykpIEtF RVAoKiguaW5pdGNhbGwuMTQpKSB9CisgX19iYXJlYm94X2luaXRjYWxsc19lbmQgPSAuOworIF9f YmFyZWJveF9leGl0Y2FsbHNfc3RhcnQgPSAuOworIC5iYXJlYm94X2V4aXRjYWxscyA6IHsgS0VF UCgqKC5leGl0Y2FsbC4wKSkgS0VFUCgqKC5leGl0Y2FsbC4xKSkgS0VFUCgqKC5leGl0Y2FsbC4y KSkgS0VFUCgqKC5leGl0Y2FsbC4zKSkgS0VFUCgqKC5leGl0Y2FsbC40KSkgS0VFUCgqKC5leGl0 Y2FsbC41KSkgS0VFUCgqKC5leGl0Y2FsbC42KSkgfQorIF9fYmFyZWJveF9leGl0Y2FsbHNfZW5k ID0gLjsKKyBfX3VzeW10YWJfc3RhcnQgPSAuOworIF9fdXN5bXRhYiA6IHsgS0VFUCgqKF9fdXN5 bXRhYikpIH0KKyBfX3VzeW10YWJfZW5kID0gLjsKKyAub2Z0YWJsZXMgOiB7IC4gPSBBTElHTig4 KTsgX19jbGtfb2ZfdGFibGVfc3RhcnQgPSAuOyBLRUVQKCooLl9fY2xrX29mX3RhYmxlKSk7IEtF RVAoKiguX19jbGtfb2ZfdGFibGVfZW5kKSk7IF9fY2xrX29mX3RhYmxlX2VuZCA9IC47IH0KKyAu ZHRiIDogeyAuID0gQUxJR04oOCk7IF9fZHRiX3N0YXJ0ID0gLjsgS0VFUCgqKC5kdGIucm9kYXRh LiopKTsgX19kdGJfZW5kID0gLjsgfQorIC5yZWwuZHluIDogeworICBfX3JlbF9keW5fc3RhcnQg PSAuOworICAqKC5yZWwqKQorICBfX3JlbF9keW5fZW5kID0gLjsKKyB9CisgLmR5bnN5bSA6IHsK KyAgX19keW5zeW1fc3RhcnQgPSAuOworICAqKC5keW5zeW0pCisgIF9fZHluc3ltX2VuZCA9IC47 CisgfQorIF9lZGF0YSA9IC47CisgLiA9IEFMSUdOKDQpOworIF9fYnNzX3N0YXJ0ID0gLjsKKyAu YnNzIDogeyAqKC5ic3MqKSB9CisgX19ic3Nfc3RvcCA9IC47CisgX2VuZCA9IC47CisgX2JhcmVi b3hfaW1hZ2Vfc2l6ZSA9IF9fYnNzX3N0YXJ0IC0gMHg0MDAwMDAwMDsKK30KZGlmZiAtLWdpdCBh L2FyY2gvYXJtNjQvbGliL2JhcmVib3gubGRzLlMgYi9hcmNoL2FybTY0L2xpYi9iYXJlYm94Lmxk cy5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MDY5OWYKLS0tIC9kZXYv bnVsbAorKysgYi9hcmNoL2FybTY0L2xpYi9iYXJlYm94Lmxkcy5TCkBAIC0wLDAgKzEsMTI1IEBA CisvKgorICogKEMpIENvcHlyaWdodCAyMDAwLTIwMDQKKyAqIFdvbGZnYW5nIERlbmssIERFTlgg U29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElU UyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3Qu CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorICoKKyAqCisgKi8KKworI2luY2x1ZGUgPGFzbS1nZW5lcmljL2JhcmVib3gubGRzLmg+CisK K09VVFBVVF9GT1JNQVQoImVsZjY0LWxpdHRsZWFhcmNoNjQiLCAiZWxmNjQtbGl0dGxlYWFyY2g2 NCIsICJlbGY2NC1saXR0bGVhYXJjaDY0IikKK09VVFBVVF9BUkNIKGFhcmNoNjQpCitFTlRSWShz dGFydCkKK1NFQ1RJT05TCit7CisjaWZkZWYgQ09ORklHX1JFTE9DQVRBQkxFCisJLiA9IDB4MDsK KyNlbHNlCisJLiA9IFRFWFRfQkFTRTsKKyNlbmRpZgorCisjaWZuZGVmIENPTkZJR19QQkxfSU1B R0UKKwlQUkVfSU1BR0UKKyNlbmRpZgorCS4gPSBBTElHTig0KTsKKwkudGV4dCAgICAgIDoKKwl7 CisJCV9zdGV4dCA9IC47CisJCV90ZXh0ID0gLjsKKwkJKigudGV4dF9lbnRyeSopCisJCV9fYmFy ZV9pbml0X3N0YXJ0ID0gLjsKKwkJKigudGV4dF9iYXJlX2luaXQqKQorCQlfX2JhcmVfaW5pdF9l bmQgPSAuOworCQlfX2V4Y2VwdGlvbnNfc3RhcnQgPSAuOworCQlLRUVQKCooLnRleHRfZXhjZXB0 aW9ucyopKQorCQlfX2V4Y2VwdGlvbnNfc3RvcCA9IC47CisJCSooLnRleHQqKQorCX0KKwlCQVJF Qk9YX0JBUkVfSU5JVF9TSVpFCisKKwkuID0gQUxJR04oNCk7CisJLnJvZGF0YSA6IHsgKigucm9k YXRhKikgfQorCisjaWZkZWYgQ09ORklHX0FSTV9VTldJTkQKKwkvKgorCSAqIFN0YWNrIHVud2lu ZGluZyB0YWJsZXMKKwkgKi8KKwkuID0gQUxJR04oOCk7CisJLkFSTS51bndpbmRfaWR4IDogewor CQlfX3N0YXJ0X3Vud2luZF9pZHggPSAuOworCQkqKC5BUk0uZXhpZHgqKQorCQlfX3N0b3BfdW53 aW5kX2lkeCA9IC47CisJfQorCS5BUk0udW53aW5kX3RhYiA6IHsKKwkJX19zdGFydF91bndpbmRf dGFiID0gLjsKKwkJKiguQVJNLmV4dGFiKikKKwkJX19zdG9wX3Vud2luZF90YWIgPSAuOworCX0K KyNlbmRpZgorCV9ldGV4dCA9IC47CQkJLyogRW5kIG9mIHRleHQgYW5kIHJvZGF0YSBzZWN0aW9u ICovCisJX3NkYXRhID0gLjsKKworCS4gPSBBTElHTig0KTsKKwkuZGF0YSA6IHsgKiguZGF0YSop IH0KKworCS5iYXJlYm94X2ltZCA6IHsgQkFSRUJPWF9JTUQgfQorCisJLiA9IC47CisJX19iYXJl Ym94X2NtZF9zdGFydCA9IC47CisJLmJhcmVib3hfY21kIDogeyBCQVJFQk9YX0NNRFMgfQorCV9f YmFyZWJveF9jbWRfZW5kID0gLjsKKworCV9fYmFyZWJveF9tYWdpY3Zhcl9zdGFydCA9IC47CisJ LmJhcmVib3hfbWFnaWN2YXIgOiB7IEJBUkVCT1hfTUFHSUNWQVJTIH0KKwlfX2JhcmVib3hfbWFn aWN2YXJfZW5kID0gLjsKKworCV9fYmFyZWJveF9pbml0Y2FsbHNfc3RhcnQgPSAuOworCS5iYXJl Ym94X2luaXRjYWxscyA6IHsgSU5JVENBTExTIH0KKwlfX2JhcmVib3hfaW5pdGNhbGxzX2VuZCA9 IC47CisKKwlfX2JhcmVib3hfZXhpdGNhbGxzX3N0YXJ0ID0gLjsKKwkuYmFyZWJveF9leGl0Y2Fs bHMgOiB7IEVYSVRDQUxMUyB9CisJX19iYXJlYm94X2V4aXRjYWxsc19lbmQgPSAuOworCisJX191 c3ltdGFiX3N0YXJ0ID0gLjsKKwlfX3VzeW10YWIgOiB7IEJBUkVCT1hfU1lNUyB9CisJX191c3lt dGFiX2VuZCA9IC47CisKKwkub2Z0YWJsZXMgOiB7IEJBUkVCT1hfQ0xLX1RBQkxFKCkgfQorCisJ LmR0YiA6IHsgQkFSRUJPWF9EVEIoKSB9CisKKwkucmVsLmR5biA6IHsKKwkJX19yZWxfZHluX3N0 YXJ0ID0gLjsKKwkJKigucmVsKikKKwkJX19yZWxfZHluX2VuZCA9IC47CisJfQorCisJLmR5bnN5 bSA6IHsKKwkJX19keW5zeW1fc3RhcnQgPSAuOworCQkqKC5keW5zeW0pCisJCV9fZHluc3ltX2Vu ZCA9IC47CisJfQorCisJX2VkYXRhID0gLjsKKworCS4gPSBBTElHTig0KTsKKwlfX2Jzc19zdGFy dCA9IC47CisJLmJzcyA6IHsgKiguYnNzKikgfQorCV9fYnNzX3N0b3AgPSAuOworCV9lbmQgPSAu OworCV9iYXJlYm94X2ltYWdlX3NpemUgPSBfX2Jzc19zdGFydCAtIFRFWFRfQkFTRTsKK30KZGlm ZiAtLWdpdCBhL2FyY2gvYXJtNjQvbGliL2Jvb3RtLmMgYi9hcmNoL2FybTY0L2xpYi9ib290bS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5MTNkNWYKLS0tIC9kZXYvbnVs bAorKysgYi9hcmNoL2FybTY0L2xpYi9ib290bS5jCkBAIC0wLDAgKzEsNTcyIEBACisjaW5jbHVk ZSA8Ym9vdC5oPgorI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGNvbW1hbmQuaD4KKyNp bmNsdWRlIDxkcml2ZXIuaD4KKyNpbmNsdWRlIDxlbnZpcm9ubWVudC5oPgorI2luY2x1ZGUgPGlt YWdlLmg+CisjaW5jbHVkZSA8aW5pdC5oPgorI2luY2x1ZGUgPGZzLmg+CisjaW5jbHVkZSA8bGli ZmlsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlIDx4ZnVuY3MuaD4KKyNp bmNsdWRlIDxtYWxsb2MuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGVycm5vLmg+ CisjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4KKyNpbmNsdWRlIDxsaWJiYi5oPgorI2luY2x1ZGUg PG1hZ2ljdmFyLmg+CisjaW5jbHVkZSA8YmluZm10Lmg+CisjaW5jbHVkZSA8cmVzdGFydC5oPgor CisjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgorI2luY2x1ZGUgPGFzbS9zZXR1cC5oPgorI2lu Y2x1ZGUgPGFzbS9iYXJlYm94LWFybS5oPgorI2luY2x1ZGUgPGFzbS9hcm1saW51eC5oPgorI2lu Y2x1ZGUgPGFzbS9zeXN0ZW0uaD4KKworLyoKKyAqIHNkcmFtX3N0YXJ0X2FuZF9zaXplKCkgLSBk ZXRlcm1pbmUgcGxhY2UgZm9yIHB1dHRpbmcgdGhlIGtlcm5lbC9vZnRyZWUvaW5pdHJkCisgKgor ICogQHN0YXJ0OglyZXR1cm5zIHRoZSBzdGFydCBhZGRyZXNzIG9mIHRoZSBmaXJzdCBSQU0gYmFu aworICogQHNpemU6CXJldHVybnMgdGhlIHVzYWJsZSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIG9m IHRoZSBmaXJzdCBSQU0gYmFuaworICoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYmFz ZSBhZGRyZXNzIG9mIHRoZSBmaXJzdCBSQU0gYmFuayBhbmQgdGhlIGZyZWUKKyAqIHNwYWNlIGZv dW5kIHRoZXJlLgorICoKKyAqIHJldHVybjogMCBmb3Igc3VjY2VzcywgbmVnYXRpdmUgZXJyb3Ig Y29kZSBvdGhlcndpc2UKKyAqLworc3RhdGljIGludCBzZHJhbV9zdGFydF9hbmRfc2l6ZSh1bnNp Z25lZCBsb25nICpzdGFydCwgdW5zaWduZWQgbG9uZyAqc2l6ZSkKK3sKKwlzdHJ1Y3QgbWVtb3J5 X2JhbmsgKmJhbms7CisJc3RydWN0IHJlc291cmNlICpyZXM7CisKKwkvKgorCSAqIFdlIHVzZSB0 aGUgZmlyc3QgbWVtb3J5IGJhbmsgZm9yIHRoZSBrZXJuZWwgYW5kIG90aGVyIHJlc291cmNlcwor CSAqLworCWJhbmsgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJm1lbW9yeV9iYW5rcywgc3Ry dWN0IG1lbW9yeV9iYW5rLAorCQkJbGlzdCk7CisJaWYgKCFiYW5rKSB7CisJCXByaW50ZigiY2Fu bm90IGZpbmQgZmlyc3QgbWVtb3J5IGJhbmtcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisK KwkvKgorCSAqIElmIHRoZSBmaXJzdCBtZW1vcnkgYmFuayBoYXMgY2hpbGQgcmVzb3VyY2VzIHdl IGNhbiB1c2UgdGhlIGJhbmsgdXAKKwkgKiB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBj aGlsZCByZXNvdXJjZSwgb3RoZXJ3aXNlIHdlIGNhbiB1c2UKKwkgKiB0aGUgd2hvbGUgYmFuay4K KwkgKi8KKwlyZXMgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmJhbmstPnJlcy0+Y2hpbGRy ZW4sIHN0cnVjdCByZXNvdXJjZSwKKwkJCXNpYmxpbmcpOworCWlmIChyZXMpCisJCSpzaXplID0g cmVzLT5zdGFydCAtIGJhbmstPnN0YXJ0OworCWVsc2UKKwkJKnNpemUgPSBiYW5rLT5zaXplOwor CisJKnN0YXJ0ID0gYmFuay0+c3RhcnQ7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBf X2RvX2Jvb3RtX2xpbnV4KHN0cnVjdCBpbWFnZV9kYXRhICpkYXRhLCB1bnNpZ25lZCBsb25nIGZy ZWVfbWVtLCBpbnQgc3dhcCkKK3sKKwl1bnNpZ25lZCBsb25nIGtlcm5lbDsKKwl1bnNpZ25lZCBs b25nIGluaXRyZF9zdGFydCA9IDAsIGluaXRyZF9zaXplID0gMCwgaW5pdHJkX2VuZCA9IDA7CisJ aW50IHJldDsKKworCWtlcm5lbCA9IGRhdGEtPm9zX3Jlcy0+c3RhcnQgKyBkYXRhLT5vc19lbnRy eTsKKworCWluaXRyZF9zdGFydCA9IGRhdGEtPmluaXRyZF9hZGRyZXNzOworCisJaWYgKGluaXRy ZF9zdGFydCA9PSBVSU1BR0VfSU5WQUxJRF9BRERSRVNTKSB7CisJCWluaXRyZF9zdGFydCA9IFBB R0VfQUxJR04oZnJlZV9tZW0pOworCisJCWlmIChib290bV92ZXJib3NlKGRhdGEpKSB7CisJCQlw cmludGYoIm5vIGluaXRyZCBsb2FkIGFkZHJlc3MsIGRlZmF1bHRpbmcgdG8gMHglMDhseFxuIiwK KwkJCQlpbml0cmRfc3RhcnQpOworCQl9CisJfQorCisJaWYgKGJvb3RtX2hhc19pbml0cmQoZGF0 YSkpIHsKKwkJcmV0ID0gYm9vdG1fbG9hZF9pbml0cmQoZGF0YSwgaW5pdHJkX3N0YXJ0KTsKKwkJ aWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJaWYgKGRhdGEtPmluaXRyZF9yZXMpIHsK KwkJaW5pdHJkX3N0YXJ0ID0gZGF0YS0+aW5pdHJkX3Jlcy0+c3RhcnQ7CisJCWluaXRyZF9lbmQg PSBkYXRhLT5pbml0cmRfcmVzLT5lbmQ7CisJCWluaXRyZF9zaXplID0gcmVzb3VyY2Vfc2l6ZShk YXRhLT5pbml0cmRfcmVzKTsKKwkJZnJlZV9tZW0gPSBQQUdFX0FMSUdOKGluaXRyZF9lbmQpOwor CX0KKworCXJldCA9IGJvb3RtX2xvYWRfZGV2aWNldHJlZShkYXRhLCBmcmVlX21lbSk7CisJaWYg KHJldCkKKwkJcmV0dXJuIHJldDsKKworCWlmIChib290bV92ZXJib3NlKGRhdGEpKSB7CisJCXBy aW50ZigiXG5TdGFydGluZyBrZXJuZWwgYXQgMHglMDhseCIsIGtlcm5lbCk7CisJCWlmIChpbml0 cmRfc2l6ZSkKKwkJCXByaW50ZigiLCBpbml0cmQgYXQgMHglMDhseCIsIGluaXRyZF9zdGFydCk7 CisJCWlmIChkYXRhLT5vZnRyZWUpCisJCQlwcmludGYoIiwgb2Z0cmVlIGF0IDB4JXAiLCBkYXRh LT5vZnRyZWUpOworCQlwcmludGYoIi4uLlxuIik7CisJfQorCisJaWYgKGRhdGEtPmRyeXJ1bikK KwkJcmV0dXJuIDA7CisKKwlzdGFydF9saW51eCgodm9pZCAqKWtlcm5lbCwgc3dhcCwgaW5pdHJk X3N0YXJ0LCBpbml0cmRfc2l6ZSwgZGF0YS0+b2Z0cmVlKTsKKworCXJlc3RhcnRfbWFjaGluZSgp OworCisJcmV0dXJuIC1FUkVTVEFSVFNZUzsKK30KKworc3RhdGljIGludCBkb19ib290bV9saW51 eChzdHJ1Y3QgaW1hZ2VfZGF0YSAqZGF0YSkKK3sKKwl1bnNpZ25lZCBsb25nIGxvYWRfYWRkcmVz cywgbWVtX3N0YXJ0LCBtZW1fc2l6ZSwgbWVtX2ZyZWU7CisJaW50IHJldDsKKworCXJldCA9IHNk cmFtX3N0YXJ0X2FuZF9zaXplKCZtZW1fc3RhcnQsICZtZW1fc2l6ZSk7CisJaWYgKHJldCkKKwkJ cmV0dXJuIHJldDsKKworCWxvYWRfYWRkcmVzcyA9IGRhdGEtPm9zX2FkZHJlc3M7CisKKwlpZiAo bG9hZF9hZGRyZXNzID09IFVJTUFHRV9JTlZBTElEX0FERFJFU1MpIHsKKwkJLyoKKwkJICogSnVz dCB1c2UgYSBjb25zZXJ2YXRpdmUgZGVmYXVsdCBvZiA0IHRpbWVzIHRoZSBzaXplIG9mIHRoZQor CQkgKiBjb21wcmVzc2VkIGltYWdlLCB0byBhdm9pZCB0aGUgbmVlZCBmb3IgdGhlIGtlcm5lbCB0 bworCQkgKiByZWxvY2F0ZSBpdHNlbGYgYmVmb3JlIGRlY29tcHJlc3Npb24uCisJCSAqLworCQls b2FkX2FkZHJlc3MgPSBtZW1fc3RhcnQgKyBQQUdFX0FMSUdOKAorCQkgICAgICAgICAgICAgICBi b290bV9nZXRfb3Nfc2l6ZShkYXRhKSAqIDQpOworCQlpZiAoYm9vdG1fdmVyYm9zZShkYXRhKSkK KwkJCXByaW50Zigibm8gT1MgbG9hZCBhZGRyZXNzLCBkZWZhdWx0aW5nIHRvIDB4JTA4bHhcbiIs CisJCQkJbG9hZF9hZGRyZXNzKTsKKwl9CisKKwlyZXQgPSBib290bV9sb2FkX29zKGRhdGEsIGxv YWRfYWRkcmVzcyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qCisJICogcHV0IG9m dHJlZS9pbml0cmQgY2xvc2UgYmVoaW5kIGNvbXByZXNzZWQga2VybmVsIGltYWdlIHRvIGF2b2lk CisJICogcGxhY2luZyBpdCBvdXRzaWRlIG9mIHRoZSBrZXJuZWxzIGxvd21lbS4KKwkgKi8KKwlt ZW1fZnJlZSA9IFBBR0VfQUxJR04oZGF0YS0+b3NfcmVzLT5lbmQgKyBTWl8xTSk7CisKKwlyZXR1 cm4gX19kb19ib290bV9saW51eChkYXRhLCBtZW1fZnJlZSwgMCk7Cit9CisKK3N0YXRpYyBzdHJ1 Y3QgaW1hZ2VfaGFuZGxlciB1aW1hZ2VfaGFuZGxlciA9IHsKKwkubmFtZSA9ICJBUk0gTGludXgg dUltYWdlIiwKKwkuYm9vdG0gPSBkb19ib290bV9saW51eCwKKwkuZmlsZXR5cGUgPSBmaWxldHlw ZV91aW1hZ2UsCisJLmloX29zID0gSUhfT1NfTElOVVgsCit9OworCitzdGF0aWMgc3RydWN0IGlt YWdlX2hhbmRsZXIgcmF3aW1hZ2VfaGFuZGxlciA9IHsKKwkubmFtZSA9ICJBUk0gcmF3IGltYWdl IiwKKwkuYm9vdG0gPSBkb19ib290bV9saW51eCwKKwkuZmlsZXR5cGUgPSBmaWxldHlwZV91bmtu b3duLAorfTsKKworc3RydWN0IHppbWFnZV9oZWFkZXIgeworCXUzMgl1bnVzZWRbOV07CisJdTMy CW1hZ2ljOworCXUzMglzdGFydDsKKwl1MzIJZW5kOworfTsKKworI2RlZmluZSBaSU1BR0VfTUFH SUMgMHgwMTZGMjgxOAorCitzdGF0aWMgaW50IGRvX2Jvb3R6X2xpbnV4X2ZkdChpbnQgZmQsIHN0 cnVjdCBpbWFnZV9kYXRhICpkYXRhKQoreworCXN0cnVjdCBmZHRfaGVhZGVyIF9faGVhZGVyLCAq aGVhZGVyOworCXZvaWQgKm9mdHJlZTsKKwlpbnQgcmV0OworCisJdTMyIGVuZDsKKworCWlmIChk YXRhLT5vZnRyZWUpCisJCXJldHVybiAtRU5YSU87CisKKwloZWFkZXIgPSAmX19oZWFkZXI7CisJ cmV0ID0gcmVhZChmZCwgaGVhZGVyLCBzaXplb2YoKmhlYWRlcikpOworCWlmIChyZXQgPCBzaXpl b2YoKmhlYWRlcikpCisJCXJldHVybiByZXQ7CisKKwlpZiAoZmlsZV9kZXRlY3RfdHlwZShoZWFk ZXIsIHNpemVvZigqaGVhZGVyKSkgIT0gZmlsZXR5cGVfb2Z0cmVlKQorCQlyZXR1cm4gLUVOWElP OworCisJZW5kID0gYmUzMl90b19jcHUoaGVhZGVyLT50b3RhbHNpemUpOworCisJb2Z0cmVlID0g bWFsbG9jKGVuZCArIDB4ODAwMCk7CisJaWYgKCFvZnRyZWUpIHsKKwkJcGVycm9yKCJ6SW1hZ2U6 IG9mdHJlZSBtYWxsb2MiKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJbWVtY3B5KG9mdHJl ZSwgaGVhZGVyLCBzaXplb2YoKmhlYWRlcikpOworCisJZW5kIC09IHNpemVvZigqaGVhZGVyKTsK KworCXJldCA9IHJlYWRfZnVsbChmZCwgb2Z0cmVlICsgc2l6ZW9mKCpoZWFkZXIpLCBlbmQpOwor CWlmIChyZXQgPCAwKQorCQlnb3RvIGVycl9mcmVlOworCWlmIChyZXQgPCBlbmQpIHsKKwkJcHJp bnRmKCJwcmVtYXR1cmUgZW5kIG9mIGltYWdlXG4iKTsKKwkJcmV0ID0gLUVJTzsKKwkJZ290byBl cnJfZnJlZTsKKwl9CisKKwlpZiAoSVNfQlVJTFRJTihDT05GSUdfT0ZUUkVFKSkgeworCQlkYXRh LT5vZl9yb290X25vZGUgPSBvZl91bmZsYXR0ZW5fZHRiKG9mdHJlZSk7CisJCWlmICghZGF0YS0+ b2Zfcm9vdF9ub2RlKSB7CisJCQlwcl9lcnIoInVuYWJsZSB0byB1bmZsYXR0ZW4gZGV2aWNldHJl ZVxuIik7CisJCQlyZXQgPSAtRUlOVkFMOworCQkJZ290byBlcnJfZnJlZTsKKwkJfQorCQlmcmVl KG9mdHJlZSk7CisJfSBlbHNlIHsKKwkJZGF0YS0+b2Z0cmVlID0gb2Z0cmVlOworCX0KKworCXBy X2luZm8oInpJbWFnZTogY29uY2F0ZW5hdGVkIG9mdHJlZSBkZXRlY3RlZFxuIik7CisKKwlyZXR1 cm4gMDsKKworZXJyX2ZyZWU6CisJZnJlZShvZnRyZWUpOworCisJcmV0dXJuIHJldDsKK30KKwor c3RhdGljIGludCBkb19ib290el9saW51eChzdHJ1Y3QgaW1hZ2VfZGF0YSAqZGF0YSkKK3sKKwlp bnQgZmQsIHJldCwgc3dhcCA9IDA7CisJc3RydWN0IHppbWFnZV9oZWFkZXIgX19oZWFkZXIsICpo ZWFkZXI7CisJdm9pZCAqemltYWdlOworCXUzMiBlbmQsIHN0YXJ0OworCXNpemVfdCBpbWFnZV9z aXplOworCXVuc2lnbmVkIGxvbmcgbG9hZF9hZGRyZXNzID0gZGF0YS0+b3NfYWRkcmVzczsKKwl1 bnNpZ25lZCBsb25nIG1lbV9zdGFydCwgbWVtX3NpemUsIG1lbV9mcmVlOworCisJcmV0ID0gc2Ry YW1fc3RhcnRfYW5kX3NpemUoJm1lbV9zdGFydCwgJm1lbV9zaXplKTsKKwlpZiAocmV0KQorCQly ZXR1cm4gcmV0OworCisJZmQgPSBvcGVuKGRhdGEtPm9zX2ZpbGUsIE9fUkRPTkxZKTsKKwlpZiAo ZmQgPCAwKSB7CisJCXBlcnJvcigib3BlbiIpOworCQlyZXR1cm4gMTsKKwl9CisKKwloZWFkZXIg PSAmX19oZWFkZXI7CisJcmV0ID0gcmVhZChmZCwgaGVhZGVyLCBzaXplb2YoKmhlYWRlcikpOwor CWlmIChyZXQgPCBzaXplb2YoKmhlYWRlcikpIHsKKwkJcHJpbnRmKCJjb3VsZCBub3QgcmVhZCAl c1xuIiwgZGF0YS0+b3NfZmlsZSk7CisJCWdvdG8gZXJyX291dDsKKwl9CisKKwlzd2l0Y2ggKGhl YWRlci0+bWFnaWMpIHsKKwljYXNlIHN3YWIzMihaSU1BR0VfTUFHSUMpOgorCQlzd2FwID0gMTsK KwkJLyogZmFsbCB0aHJvdWdoICovCisJY2FzZSBaSU1BR0VfTUFHSUM6CisJCWJyZWFrOworCWRl ZmF1bHQ6CisJCXByaW50ZigiaW52YWxpZCBtYWdpYyAweCUwOHhcbiIsIGhlYWRlci0+bWFnaWMp OworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIGVycl9vdXQ7CisJfQorCisJZW5kID0gaGVhZGVy LT5lbmQ7CisJc3RhcnQgPSBoZWFkZXItPnN0YXJ0OworCisJaWYgKHN3YXApIHsKKwkJZW5kID0g c3dhYjMyKGVuZCk7CisJCXN0YXJ0ID0gc3dhYjMyKHN0YXJ0KTsKKwl9CisKKwlpbWFnZV9zaXpl ID0gZW5kIC0gc3RhcnQ7CisKKwlpZiAobG9hZF9hZGRyZXNzID09IFVJTUFHRV9JTlZBTElEX0FE RFJFU1MpIHsKKwkJLyoKKwkJICogSnVzdCB1c2UgYSBjb25zZXJ2YXRpdmUgZGVmYXVsdCBvZiA0 IHRpbWVzIHRoZSBzaXplIG9mIHRoZQorCQkgKiBjb21wcmVzc2VkIGltYWdlLCB0byBhdm9pZCB0 aGUgbmVlZCBmb3IgdGhlIGtlcm5lbCB0bworCQkgKiByZWxvY2F0ZSBpdHNlbGYgYmVmb3JlIGRl Y29tcHJlc3Npb24uCisJCSAqLworCQlkYXRhLT5vc19hZGRyZXNzID0gbWVtX3N0YXJ0ICsgUEFH RV9BTElHTihpbWFnZV9zaXplICogNCk7CisKKwkJbG9hZF9hZGRyZXNzID0gZGF0YS0+b3NfYWRk cmVzczsKKwkJaWYgKGJvb3RtX3ZlcmJvc2UoZGF0YSkpCisJCQlwcmludGYoIm5vIE9TIGxvYWQg YWRkcmVzcywgZGVmYXVsdGluZyB0byAweCUwOGx4XG4iLAorCQkJCWxvYWRfYWRkcmVzcyk7CisJ fQorCisJZGF0YS0+b3NfcmVzID0gcmVxdWVzdF9zZHJhbV9yZWdpb24oInppbWFnZSIsIGxvYWRf YWRkcmVzcywgaW1hZ2Vfc2l6ZSk7CisJaWYgKCFkYXRhLT5vc19yZXMpIHsKKwkJcHJfZXJyKCJi b290bS96SW1hZ2U6IGZhaWxlZCB0byByZXF1ZXN0IG1lbW9yeSBhdCAweCVseCB0byAweCVseCAo JWQpLlxuIiwKKwkJICAgICAgIGxvYWRfYWRkcmVzcywgbG9hZF9hZGRyZXNzICsgaW1hZ2Vfc2l6 ZSwgaW1hZ2Vfc2l6ZSk7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gZXJyX291dDsKKwl9CisK Kwl6aW1hZ2UgPSAodm9pZCAqKWRhdGEtPm9zX3Jlcy0+c3RhcnQ7CisKKwltZW1jcHkoemltYWdl LCBoZWFkZXIsIHNpemVvZigqaGVhZGVyKSk7CisKKwlyZXQgPSByZWFkX2Z1bGwoZmQsIHppbWFn ZSArIHNpemVvZigqaGVhZGVyKSwKKwkJCWltYWdlX3NpemUgLSBzaXplb2YoKmhlYWRlcikpOwor CWlmIChyZXQgPCAwKQorCQlnb3RvIGVycl9vdXQ7CisJaWYgKHJldCA8IGltYWdlX3NpemUgLSBz aXplb2YoKmhlYWRlcikpIHsKKwkJcHJpbnRmKCJwcmVtYXR1cmUgZW5kIG9mIGltYWdlXG4iKTsK KwkJcmV0ID0gLUVJTzsKKwkJZ290byBlcnJfb3V0OworCX0KKworCWlmIChzd2FwKSB7CisJCXZv aWQgKnB0cjsKKwkJZm9yIChwdHIgPSB6aW1hZ2U7IHB0ciA8IHppbWFnZSArIGVuZDsgcHRyICs9 IDQpCisJCQkqKHUzMiAqKXB0ciA9IHN3YWIzMigqKHUzMiAqKXB0cik7CisJfQorCisJcmV0ID0g ZG9fYm9vdHpfbGludXhfZmR0KGZkLCBkYXRhKTsKKwlpZiAocmV0ICYmIHJldCAhPSAtRU5YSU8p CisJCWdvdG8gZXJyX291dDsKKworCWNsb3NlKGZkKTsKKworCS8qCisJICogcHV0IG9mdHJlZS9p bml0cmQgY2xvc2UgYmVoaW5kIGNvbXByZXNzZWQga2VybmVsIGltYWdlIHRvIGF2b2lkCisJICog cGxhY2luZyBpdCBvdXRzaWRlIG9mIHRoZSBrZXJuZWxzIGxvd21lbS4KKwkgKi8KKwltZW1fZnJl ZSA9IFBBR0VfQUxJR04oZGF0YS0+b3NfcmVzLT5lbmQgKyBTWl8xTSk7CisKKwlyZXR1cm4gX19k b19ib290bV9saW51eChkYXRhLCBtZW1fZnJlZSwgc3dhcCk7CisKK2Vycl9vdXQ6CisJY2xvc2Uo ZmQpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHN0cnVjdCBpbWFnZV9oYW5kbGVyIHpp bWFnZV9oYW5kbGVyID0geworCS5uYW1lID0gIkFSTSB6SW1hZ2UiLAorCS5ib290bSA9IGRvX2Jv b3R6X2xpbnV4LAorCS5maWxldHlwZSA9IGZpbGV0eXBlX2FybV96aW1hZ2UsCit9OworCitzdGF0 aWMgc3RydWN0IGltYWdlX2hhbmRsZXIgYmFyZWJveF9oYW5kbGVyID0geworCS5uYW1lID0gIkFS TSBiYXJlYm94IiwKKwkuYm9vdG0gPSBkb19ib290bV9saW51eCwKKwkuZmlsZXR5cGUgPSBmaWxl dHlwZV9hcm1fYmFyZWJveCwKK307CisKKyNpbmNsdWRlIDxhaW1hZ2UuaD4KKworc3RhdGljIGlu dCBhaW1hZ2VfbG9hZF9yZXNvdXJjZShpbnQgZmQsIHN0cnVjdCByZXNvdXJjZSAqciwgdm9pZCog YnVmLCBpbnQgcHMpCit7CisJaW50IHJldDsKKwl2b2lkICppbWFnZSA9ICh2b2lkICopci0+c3Rh cnQ7CisJdW5zaWduZWQgdG9fcmVhZCA9IHBzIC0gcmVzb3VyY2Vfc2l6ZShyKSAlIHBzOworCisJ cmV0ID0gcmVhZF9mdWxsKGZkLCBpbWFnZSwgcmVzb3VyY2Vfc2l6ZShyKSk7CisJaWYgKHJldCA8 IDApCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSByZWFkX2Z1bGwoZmQsIGJ1ZiwgdG9fcmVhZCk7 CisJaWYgKHJldCA8IDApCisJCXByaW50ZigiY291bGQgbm90IHJlYWQgZHVtbXkgJXVcbiIsIHRv X3JlYWQpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBkb19ib290bV9haW1hZ2Uo c3RydWN0IGltYWdlX2RhdGEgKmRhdGEpCit7CisJc3RydWN0IHJlc291cmNlICpzbmRfc3RhZ2Vf cmVzOworCWludCBmZCwgcmV0OworCXN0cnVjdCBhbmRyb2lkX2hlYWRlciBfX2hlYWRlciwgKmhl YWRlcjsKKwl2b2lkICpidWY7CisJaW50IHRvX3JlYWQ7CisJc3RydWN0IGFuZHJvaWRfaGVhZGVy X2NvbXAgKmNtcDsKKwl1bnNpZ25lZCBsb25nIG1lbV9mcmVlOworCXVuc2lnbmVkIGxvbmcgbWVt X3N0YXJ0LCBtZW1fc2l6ZTsKKworCXJldCA9IHNkcmFtX3N0YXJ0X2FuZF9zaXplKCZtZW1fc3Rh cnQsICZtZW1fc2l6ZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWZkID0gb3Blbihk YXRhLT5vc19maWxlLCBPX1JET05MWSk7CisJaWYgKGZkIDwgMCkgeworCQlwZXJyb3IoIm9wZW4i KTsKKwkJcmV0dXJuIDE7CisJfQorCisJaGVhZGVyID0gJl9faGVhZGVyOworCXJldCA9IHJlYWQo ZmQsIGhlYWRlciwgc2l6ZW9mKCpoZWFkZXIpKTsKKwlpZiAocmV0IDwgc2l6ZW9mKCpoZWFkZXIp KSB7CisJCXByaW50ZigiY291bGQgbm90IHJlYWQgJXNcbiIsIGRhdGEtPm9zX2ZpbGUpOworCQln b3RvIGVycl9vdXQ7CisJfQorCisJcHJpbnRmKCJBbmRyb2lkIEltYWdlIGZvciAnJXMnXG4iLCBo ZWFkZXItPm5hbWUpOworCisJLyoKKwkgKiBBcyBvbiB0ZnRwIHdlIGRvIG5vdCBzdXBwb3J0IGxz ZWVrIGFuZCB3ZSB3aWxsIGp1c3QgaGF2ZSB0byBzZWVrCisJICogZm9yIHRoZSBzaXplIG9mIGEg cGFnZSAtIDEgbWF4IGp1c3QgYnVmZmVyIGluc3RlYWQgdG8gcmVhZCB0byBkdW1teQorCSAqIGRh dGEKKwkgKi8KKwlidWYgPSB4bWFsbG9jKGhlYWRlci0+cGFnZV9zaXplKTsKKworCXRvX3JlYWQg PSBoZWFkZXItPnBhZ2Vfc2l6ZSAtIHNpemVvZigqaGVhZGVyKTsKKwlyZXQgPSByZWFkX2Z1bGwo ZmQsIGJ1ZiwgdG9fcmVhZCk7CisJaWYgKHJldCA8IDApIHsKKwkJcHJpbnRmKCJjb3VsZCBub3Qg cmVhZCBkdW1teSAlZCBmcm9tICVzXG4iLCB0b19yZWFkLCBkYXRhLT5vc19maWxlKTsKKwkJZ290 byBlcnJfb3V0OworCX0KKworCWNtcCA9ICZoZWFkZXItPmtlcm5lbDsKKwlkYXRhLT5vc19yZXMg PSByZXF1ZXN0X3NkcmFtX3JlZ2lvbigiYWtlcm5lbCIsIGNtcC0+bG9hZF9hZGRyLCBjbXAtPnNp emUpOworCWlmICghZGF0YS0+b3NfcmVzKSB7CisJCXByX2VycigiQ2Fubm90IHJlcXVlc3QgcmVn aW9uIDB4JTA4eCAtIDB4JTA4eCwgdXNpbmcgZGVmYXVsdCBsb2FkIGFkZHJlc3NcbiIsCisJCQkJ Y21wLT5sb2FkX2FkZHIsIGNtcC0+c2l6ZSk7CisKKwkJZGF0YS0+b3NfYWRkcmVzcyA9IG1lbV9z dGFydCArIFBBR0VfQUxJR04oY21wLT5zaXplICogNCk7CisJCWRhdGEtPm9zX3JlcyA9IHJlcXVl c3Rfc2RyYW1fcmVnaW9uKCJha2VybmVsIiwgZGF0YS0+b3NfYWRkcmVzcywgY21wLT5zaXplKTsK KwkJaWYgKCFkYXRhLT5vc19yZXMpIHsKKwkJCXByX2VycigiQ2Fubm90IHJlcXVlc3QgcmVnaW9u IDB4JTA4eCAtIDB4JTA4eFxuIiwKKwkJCQkJY21wLT5sb2FkX2FkZHIsIGNtcC0+c2l6ZSk7CisJ CQlyZXQgPSAtRU5PTUVNOworCQkJZ290byBlcnJfb3V0OworCQl9CisJfQorCisJcmV0ID0gYWlt YWdlX2xvYWRfcmVzb3VyY2UoZmQsIGRhdGEtPm9zX3JlcywgYnVmLCBoZWFkZXItPnBhZ2Vfc2l6 ZSk7CisJaWYgKHJldCA8IDApIHsKKwkJcGVycm9yKCJjb3VsZCBub3QgcmVhZCBrZXJuZWwiKTsK KwkJZ290byBlcnJfb3V0OworCX0KKworCS8qCisJICogZmFzdGJvb3QgYWx3YXlzIGV4cGVjdCBh IHJhbWRpc2sKKwkgKiBpbiBiYXJlYm94IHdlIGNhbiBiZSBsZXNzIHJlc3RyaWN0aXZlCisJICov CisJY21wID0gJmhlYWRlci0+cmFtZGlzazsKKwlpZiAoY21wLT5zaXplKSB7CisJCWRhdGEtPmlu aXRyZF9yZXMgPSByZXF1ZXN0X3NkcmFtX3JlZ2lvbigiYWluaXRyZCIsIGNtcC0+bG9hZF9hZGRy LCBjbXAtPnNpemUpOworCQlpZiAoIWRhdGEtPmluaXRyZF9yZXMpIHsKKwkJCXJldCA9IC1FTk9N RU07CisJCQlnb3RvIGVycl9vdXQ7CisJCX0KKworCQlyZXQgPSBhaW1hZ2VfbG9hZF9yZXNvdXJj ZShmZCwgZGF0YS0+aW5pdHJkX3JlcywgYnVmLCBoZWFkZXItPnBhZ2Vfc2l6ZSk7CisJCWlmIChy ZXQgPCAwKSB7CisJCQlwZXJyb3IoImNvdWxkIG5vdCByZWFkIGluaXRyZCIpOworCQkJZ290byBl cnJfb3V0OworCQl9CisJfQorCisJaWYgKCFnZXRlbnYoImFpbWFnZV9ub3ZlcndyaXRlX2Jvb3Rh cmdzIikpCisJCWxpbnV4X2Jvb3RhcmdzX292ZXJ3cml0ZShoZWFkZXItPmNtZGxpbmUpOworCisJ aWYgKCFnZXRlbnYoImFpbWFnZV9ub3ZlcndyaXRlX3RhZ3MiKSkKKwkJYXJtbGludXhfc2V0X2Jv b3RwYXJhbXMoKHZvaWQqKWhlYWRlci0+dGFnc19hZGRyKTsKKworCWNtcCA9ICZoZWFkZXItPnNl Y29uZF9zdGFnZTsKKwlpZiAoY21wLT5zaXplKSB7CisJCXZvaWQgKCpzZWNvbmQpKHZvaWQpOwor CisJCXNuZF9zdGFnZV9yZXMgPSByZXF1ZXN0X3NkcmFtX3JlZ2lvbigiYXNlY29uZCIsIGNtcC0+ bG9hZF9hZGRyLCBjbXAtPnNpemUpOworCQlpZiAoIXNuZF9zdGFnZV9yZXMpIHsKKwkJCXJldCA9 IC1FTk9NRU07CisJCQlnb3RvIGVycl9vdXQ7CisJCX0KKworCQlyZXQgPSBhaW1hZ2VfbG9hZF9y ZXNvdXJjZShmZCwgc25kX3N0YWdlX3JlcywgYnVmLCBoZWFkZXItPnBhZ2Vfc2l6ZSk7CisJCWlm IChyZXQgPCAwKSB7CisJCQlwZXJyb3IoImNvdWxkIG5vdCByZWFkIGluaXRyZCIpOworCQkJZ290 byBlcnJfb3V0OworCQl9CisKKwkJc2Vjb25kID0gKHZvaWQqKXNuZF9zdGFnZV9yZXMtPnN0YXJ0 OworCQlzaHV0ZG93bl9iYXJlYm94KCk7CisKKwkJc2Vjb25kKCk7CisKKwkJcmVzdGFydF9tYWNo aW5lKCk7CisJfQorCisJY2xvc2UoZmQpOworCisJLyoKKwkgKiBQdXQgZGV2aWNldHJlZSByaWdo dCBhZnRlciBpbml0cmQgaWYgcHJlc2VudCBvciBhZnRlciB0aGUga2VybmVsCisJICogaWYgbm90 LgorCSAqLworCWlmIChkYXRhLT5pbml0cmRfcmVzKQorCQltZW1fZnJlZSA9IFBBR0VfQUxJR04o ZGF0YS0+aW5pdHJkX3Jlcy0+ZW5kKTsKKwllbHNlCisJCW1lbV9mcmVlID0gUEFHRV9BTElHTihk YXRhLT5vc19yZXMtPmVuZCArIFNaXzFNKTsKKworCXJldHVybiBfX2RvX2Jvb3RtX2xpbnV4KGRh dGEsIG1lbV9mcmVlLCAwKTsKKworZXJyX291dDoKKwlsaW51eF9ib290YXJnc19vdmVyd3JpdGUo TlVMTCk7CisJY2xvc2UoZmQpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHN0cnVjdCBp bWFnZV9oYW5kbGVyIGFpbWFnZV9oYW5kbGVyID0geworCS5uYW1lID0gIkFSTSBBbmRyb2lkIElt YWdlIiwKKwkuYm9vdG0gPSBkb19ib290bV9haW1hZ2UsCisJLmZpbGV0eXBlID0gZmlsZXR5cGVf YWltYWdlLAorfTsKKworI2lmZGVmIENPTkZJR19DTURfQk9PVE1fQUlNQUdFCitCQVJFQk9YX01B R0lDVkFSKGFpbWFnZV9ub3ZlcndyaXRlX2Jvb3RhcmdzLCAiRGlzYWJsZSBvdmVyd3JpdGUgb2Yg dGhlIGJvb3RhcmdzIHdpdGggdGhlIG9uZSBwcmVzZW50IGluIGFpbWFnZSIpOworQkFSRUJPWF9N QUdJQ1ZBUihhaW1hZ2Vfbm92ZXJ3cml0ZV90YWdzLCAiRGlzYWJsZSBvdmVyd3JpdGUgb2YgdGhl IHRhZ3MgYWRkciB3aXRoIHRoZSBvbmUgcHJlc2VudCBpbiBhaW1hZ2UiKTsKKyNlbmRpZgorCitz dGF0aWMgc3RydWN0IGltYWdlX2hhbmRsZXIgYXJtX2ZpdF9oYW5kbGVyID0geworICAgICAgICAu bmFtZSA9ICJGSVQgaW1hZ2UiLAorICAgICAgICAuYm9vdG0gPSBkb19ib290bV9saW51eCwKKyAg ICAgICAgLmZpbGV0eXBlID0gZmlsZXR5cGVfb2Z0cmVlLAorfTsKKworc3RhdGljIHN0cnVjdCBi aW5mbXRfaG9vayBiaW5mbXRfYWltYWdlX2hvb2sgPSB7CisJLnR5cGUgPSBmaWxldHlwZV9haW1h Z2UsCisJLmV4ZWMgPSAiYm9vdG0iLAorfTsKKworc3RhdGljIHN0cnVjdCBiaW5mbXRfaG9vayBi aW5mbXRfYXJtX3ppbWFnZV9ob29rID0geworCS50eXBlID0gZmlsZXR5cGVfYXJtX3ppbWFnZSwK KwkuZXhlYyA9ICJib290bSIsCit9OworCitzdGF0aWMgc3RydWN0IGJpbmZtdF9ob29rIGJpbmZt dF9iYXJlYm94X2hvb2sgPSB7CisJLnR5cGUgPSBmaWxldHlwZV9hcm1fYmFyZWJveCwKKwkuZXhl YyA9ICJib290bSIsCit9OworCitzdGF0aWMgaW50IGFybWxpbnV4X3JlZ2lzdGVyX2ltYWdlX2hh bmRsZXIodm9pZCkKK3sKKwlyZWdpc3Rlcl9pbWFnZV9oYW5kbGVyKCZiYXJlYm94X2hhbmRsZXIp OworCXJlZ2lzdGVyX2ltYWdlX2hhbmRsZXIoJnVpbWFnZV9oYW5kbGVyKTsKKwlyZWdpc3Rlcl9p bWFnZV9oYW5kbGVyKCZyYXdpbWFnZV9oYW5kbGVyKTsKKwlyZWdpc3Rlcl9pbWFnZV9oYW5kbGVy KCZ6aW1hZ2VfaGFuZGxlcik7CisJaWYgKElTX0JVSUxUSU4oQ09ORklHX0NNRF9CT09UTV9BSU1B R0UpKSB7CisJCXJlZ2lzdGVyX2ltYWdlX2hhbmRsZXIoJmFpbWFnZV9oYW5kbGVyKTsKKwkJYmlu Zm10X3JlZ2lzdGVyKCZiaW5mbXRfYWltYWdlX2hvb2spOworCX0KKwlpZiAoSVNfQlVJTFRJTihD T05GSUdfQ01EX0JPT1RNX0ZJVElNQUdFKSkKKwkgICAgICAgIHJlZ2lzdGVyX2ltYWdlX2hhbmRs ZXIoJmFybV9maXRfaGFuZGxlcik7CisJYmluZm10X3JlZ2lzdGVyKCZiaW5mbXRfYXJtX3ppbWFn ZV9ob29rKTsKKwliaW5mbXRfcmVnaXN0ZXIoJmJpbmZtdF9iYXJlYm94X2hvb2spOworCisJcmV0 dXJuIDA7Cit9CitsYXRlX2luaXRjYWxsKGFybWxpbnV4X3JlZ2lzdGVyX2ltYWdlX2hhbmRsZXIp OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9saWIvYm9vdHUuYyBiL2FyY2gvYXJtNjQvbGliL2Jv b3R1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkwMDljOAotLS0gL2Rl di9udWxsCisrKyBiL2FyY2gvYXJtNjQvbGliL2Jvb3R1LmMKQEAgLTAsMCArMSw0NCBAQAorI2lu Y2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGNvbW1hbmQuaD4KKyNpbmNsdWRlIDxmcy5oPgor I2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxvZi5oPgor I2luY2x1ZGUgPGFzbS9hcm1saW51eC5oPgorCitzdGF0aWMgaW50IGRvX2Jvb3R1KGludCBhcmdj LCBjaGFyICphcmd2W10pCit7CisJaW50IGZkOworCXZvaWQgKmtlcm5lbCA9IE5VTEw7CisJdm9p ZCAqb2Z0cmVlID0gTlVMTDsKKworCWlmIChhcmdjICE9IDIpCisJCXJldHVybiBDT01NQU5EX0VS Uk9SX1VTQUdFOworCisJZmQgPSBvcGVuKGFyZ3ZbMV0sIE9fUkRPTkxZKTsKKwlpZiAoZmQgPiAw KQorCQlrZXJuZWwgPSAodm9pZCAqKW1lbW1hcChmZCwgUFJPVF9SRUFEKTsKKworCWlmICgha2Vy bmVsKQorCQlrZXJuZWwgPSAodm9pZCAqKXNpbXBsZV9zdHJ0b3VsKGFyZ3ZbMV0sIE5VTEwsIDAp OworCisjaWZkZWYgQ09ORklHX09GVFJFRQorCW9mdHJlZSA9IG9mX2dldF9maXhlZF90cmVlKE5V TEwpOworI2VuZGlmCisKKwlzdGFydF9saW51eChrZXJuZWwsIDAsIDAsIDAsIG9mdHJlZSk7CisK KwlyZXR1cm4gMTsKK30KKworc3RhdGljIGNvbnN0IF9fbWF5YmVfdW51c2VkIGNoYXIgY21kX2Jv b3R1X2hlbHBbXSA9CisiVXNhZ2U6IGJvb3R1IDxhZGRyZXNzPlxuIjsKKworQkFSRUJPWF9DTURf U1RBUlQoYm9vdHUpCisJLmNtZCAgICAgICAgICAgID0gZG9fYm9vdHUsCisJQkFSRUJPWF9DTURf REVTQygiYm9vdCBpbnRvIGFscmVhZHkgbG9hZGVkIExpbnV4IGtlcm5lbCIpCisJQkFSRUJPWF9D TURfT1BUUygiQUREUkVTUyIpCisJQkFSRUJPWF9DTURfR1JPVVAoQ01EX0dSUF9CT09UKQorCUJB UkVCT1hfQ01EX0hFTFAoY21kX2Jvb3R1X2hlbHApCitCQVJFQk9YX0NNRF9FTkQKKwpkaWZmIC0t Z2l0IGEvYXJjaC9hcm02NC9saWIvYm9vdHouYyBiL2FyY2gvYXJtNjQvbGliL2Jvb3R6LmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE2N2M5ZAotLS0gL2Rldi9udWxsCisr KyBiL2FyY2gvYXJtNjQvbGliL2Jvb3R6LmMKQEAgLTAsMCArMSwxMzYgQEAKKyNpbmNsdWRlIDxj b21tb24uaD4KKyNpbmNsdWRlIDxjb21tYW5kLmg+CisjaW5jbHVkZSA8ZnMuaD4KKyNpbmNsdWRl IDxvZi5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRl IDxtYWxsb2MuaD4KKyNpbmNsdWRlIDxsaW51eC9zaXplcy5oPgorI2luY2x1ZGUgPGFzbS9ieXRl b3JkZXIuaD4KKyNpbmNsdWRlIDxhc20vYXJtbGludXguaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVt Lmg+CisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvbWVtb3J5X2xheW91dC5oPgorI2luY2x1ZGUgPG1l bW9yeS5oPgorCitzdHJ1Y3QgemltYWdlX2hlYWRlciB7CisJdTMyCXVudXNlZFs5XTsKKwl1MzIJ bWFnaWM7CisJdTMyCXN0YXJ0OworCXUzMgllbmQ7Cit9OworCisjZGVmaW5lIFpJTUFHRV9NQUdJ QyAweDAxNkYyODE4CisKK3N0YXRpYyBpbnQgZG9fYm9vdHooaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKK3sKKwlpbnQgZmQsIHJldCwgc3dhcCA9IDA7CisJc3RydWN0IHppbWFnZV9oZWFkZXIgX19o ZWFkZXIsICpoZWFkZXI7CisJdm9pZCAqemltYWdlOworCXZvaWQgKm9mdHJlZSA9IE5VTEw7CisJ dTMyIGVuZDsKKwlpbnQgdXNlbWFwID0gMDsKKwlzdHJ1Y3QgbWVtb3J5X2JhbmsgKmJhbmsgPSBs aXN0X2ZpcnN0X2VudHJ5KCZtZW1vcnlfYmFua3MsIHN0cnVjdCBtZW1vcnlfYmFuaywgbGlzdCk7 CisJc3RydWN0IHJlc291cmNlICpyZXMgPSBOVUxMOworCisJaWYgKGFyZ2MgIT0gMikKKwkJcmV0 dXJuIENPTU1BTkRfRVJST1JfVVNBR0U7CisKKwlmZCA9IG9wZW4oYXJndlsxXSwgT19SRE9OTFkp OworCWlmIChmZCA8IDApIHsKKwkJcGVycm9yKCJvcGVuIik7CisJCXJldHVybiAxOworCX0KKwor CS8qCisJICogV2UgY2FuIHNhdmUgdGhlIG1lbWNweSBvZiB0aGUgekltYWdlIGlmIGl0IGFscmVh ZHkgaXMgaW4KKwkgKiB0aGUgZmlyc3QgMTI4TUIgb2YgU0RSQU0uCisJICovCisJemltYWdlID0g bWVtbWFwKGZkLCBQUk9UX1JFQUQpOworCWlmICh6aW1hZ2UgJiYgKHVuc2lnbmVkIGxvbmcpemlt YWdlICA+PSBiYW5rLT5zdGFydCAmJgorCQkJKHVuc2lnbmVkIGxvbmcpemltYWdlIDwgYmFuay0+ c3RhcnQgKyBTWl8xMjhNKSB7CisJCXVzZW1hcCA9IDE7CisJCWhlYWRlciA9IHppbWFnZTsKKwl9 CisKKwlpZiAoIXVzZW1hcCkgeworCQloZWFkZXIgPSAmX19oZWFkZXI7CisJCXJldCA9IHJlYWQo ZmQsIGhlYWRlciwgc2l6ZW9mKCpoZWFkZXIpKTsKKwkJaWYgKHJldCA8IHNpemVvZigqaGVhZGVy KSkgeworCQkJcHJpbnRmKCJjb3VsZCBub3QgcmVhZCAlc1xuIiwgYXJndlsxXSk7CisJCQlnb3Rv IGVycl9vdXQ7CisJCX0KKwl9CisKKwlzd2l0Y2ggKGhlYWRlci0+bWFnaWMpIHsKKyNpZmRlZiBD T05GSUdfQk9PVF9FTkRJQU5ORVNTX1NXSVRDSAorCWNhc2Ugc3dhYjMyKFpJTUFHRV9NQUdJQyk6 CisJCXN3YXAgPSAxOworCQkvKiBmYWxsIHRocm91Z2ggKi8KKyNlbmRpZgorCWNhc2UgWklNQUdF X01BR0lDOgorCQlicmVhazsKKwlkZWZhdWx0OgorCQlwcmludGYoImludmFsaWQgbWFnaWMgMHgl MDh4XG4iLCBoZWFkZXItPm1hZ2ljKTsKKwkJZ290byBlcnJfb3V0OworCX0KKworCWVuZCA9IGhl YWRlci0+ZW5kOworCisJaWYgKHN3YXApCisJCWVuZCA9IHN3YWIzMihlbmQpOworCisJaWYgKCF1 c2VtYXApIHsKKwkJaWYgKGJhbmstPnNpemUgPD0gU1pfMTI4TSkgeworCQkJemltYWdlID0geG1h bGxvYyhlbmQpOworCQl9IGVsc2UgeworCQkJemltYWdlID0gKHZvaWQgKiliYW5rLT5zdGFydCAr IFNaXzhNOworCQkJcmVzID0gcmVxdWVzdF9zZHJhbV9yZWdpb24oInppbWFnZSIsCisJCQkJCWJh bmstPnN0YXJ0ICsgU1pfOE0sIGVuZCk7CisJCQlpZiAoIXJlcykgeworCQkJCXByaW50ZigiY2Fu J3QgcmVxdWVzdCByZWdpb24gZm9yIGtlcm5lbFxuIik7CisJCQkJZ290byBlcnJfb3V0MTsKKwkJ CX0KKwkJfQorCisJCW1lbWNweSh6aW1hZ2UsIGhlYWRlciwgc2l6ZW9mKCpoZWFkZXIpKTsKKwor CQlyZXQgPSByZWFkKGZkLCB6aW1hZ2UgKyBzaXplb2YoKmhlYWRlciksIGVuZCAtIHNpemVvZigq aGVhZGVyKSk7CisJCWlmIChyZXQgPCBlbmQgLSBzaXplb2YoKmhlYWRlcikpIHsKKwkJCXByaW50 ZigiY291bGQgbm90IHJlYWQgJXNcbiIsIGFyZ3ZbMV0pOworCQkJZ290byBlcnJfb3V0MjsKKwkJ fQorCX0KKworCWlmIChzd2FwKSB7CisJCXZvaWQgKnB0cjsKKwkJZm9yIChwdHIgPSB6aW1hZ2U7 IHB0ciA8IHppbWFnZSArIGVuZDsgcHRyICs9IDQpCisJCQkqKHUzMiAqKXB0ciA9IHN3YWIzMigq KHUzMiAqKXB0cik7CisJfQorCisJcHJpbnRmKCJsb2FkZWQgekltYWdlIGZyb20gJXMgd2l0aCBz aXplICVkXG4iLCBhcmd2WzFdLCBlbmQpOworI2lmZGVmIENPTkZJR19PRlRSRUUKKwlvZnRyZWUg PSBvZl9nZXRfZml4ZWRfdHJlZShOVUxMKTsKKyNlbmRpZgorCisJc3RhcnRfbGludXgoemltYWdl LCBzd2FwLCAwLCAwLCBvZnRyZWUpOworCisJcmV0dXJuIDA7CisKK2Vycl9vdXQyOgorCWlmIChy ZXMpCisJCXJlbGVhc2Vfc2RyYW1fcmVnaW9uKHJlcyk7CitlcnJfb3V0MToKKwlmcmVlKHppbWFn ZSk7CitlcnJfb3V0OgorCWNsb3NlKGZkKTsKKworCXJldHVybiAxOworfQorCitCQVJFQk9YX0NN RF9TVEFSVChib290eikKKwkuY21kICAgICAgICAgICAgPSBkb19ib290eiwKKwlCQVJFQk9YX0NN RF9ERVNDKCJib290IExpbnV4IHpJbWFnZSIpCisJQkFSRUJPWF9DTURfT1BUUygiRklMRSIpCisJ QkFSRUJPWF9DTURfR1JPVVAoQ01EX0dSUF9CT09UKQorQkFSRUJPWF9DTURfRU5ECisKZGlmZiAt LWdpdCBhL2FyY2gvYXJtNjQvbGliL2NvcHlfdGVtcGxhdGUuUyBiL2FyY2gvYXJtNjQvbGliL2Nv cHlfdGVtcGxhdGUuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzlhODQy Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9saWIvY29weV90ZW1wbGF0ZS5TCkBAIC0w LDAgKzEsMTkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFSTSBMdGQuCisgKiBDb3B5 cmlnaHQgKEMpIDIwMTMgTGluYXJvLgorICoKKyAqIFRoaXMgY29kZSBpcyBiYXNlZCBvbiBnbGli YyBjb3J0ZXggc3RyaW5ncyB3b3JrIG9yaWdpbmFsbHkgYXV0aG9yZWQgYnkgTGluYXJvCisgKiBh bmQgcmUtbGljZW5zZWQgdW5kZXIgR1BMdjIgZm9yIHRoZSBMaW51eCBrZXJuZWwuIFRoZSBvcmln aW5hbCBjb2RlIGNhbgorICogYmUgZm91bmQgQAorICoKKyAqIGh0dHA6Ly9iYXphYXIubGF1bmNo cGFkLm5ldC9+bGluYXJvLXRvb2xjaGFpbi1kZXYvY29ydGV4LXN0cmluZ3MvdHJ1bmsvCisgKiBm aWxlcy9oZWFkOi9zcmMvYWFyY2g2NC8KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMK KyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisK KworLyoKKyAqIENvcHkgYSBidWZmZXIgZnJvbSBzcmMgdG8gZGVzdCAoYWxpZ25tZW50IGhhbmRs ZWQgYnkgdGhlIGhhcmR3YXJlKQorICoKKyAqIFBhcmFtZXRlcnM6CisgKgl4MCAtIGRlc3QKKyAq CXgxIC0gc3JjCisgKgl4MiAtIG4KKyAqIFJldHVybnM6CisgKgl4MCAtIGRlc3QKKyAqLworZHN0 aW4JLnJlcQl4MAorc3JjCS5yZXEJeDEKK2NvdW50CS5yZXEJeDIKK3RtcDEJLnJlcQl4MwordG1w MXcJLnJlcQl3MwordG1wMgkucmVxCXg0Cit0bXAydwkucmVxCXc0Citkc3QJLnJlcQl4NgorCitB X2wJLnJlcQl4NworQV9oCS5yZXEJeDgKK0JfbAkucmVxCXg5CitCX2gJLnJlcQl4MTAKK0NfbAku cmVxCXgxMQorQ19oCS5yZXEJeDEyCitEX2wJLnJlcQl4MTMKK0RfaAkucmVxCXgxNAorCisJbW92 CWRzdCwgZHN0aW4KKwljbXAJY291bnQsICMxNgorCS8qV2hlbiBtZW1vcnkgbGVuZ3RoIGlzIGxl c3MgdGhhbiAxNiwgdGhlIGFjY2Vzc2VkIGFyZSBub3QgYWxpZ25lZC4qLworCWIubG8JLkx0aW55 MTUKKworCW5lZwl0bXAyLCBzcmMKKwlhbmRzCXRtcDIsIHRtcDIsICMxNS8qIEJ5dGVzIHRvIHJl YWNoIGFsaWdubWVudC4gKi8KKwliLmVxCS5MU3JjQWxpZ25lZAorCXN1Ygljb3VudCwgY291bnQs IHRtcDIKKwkvKgorCSogQ29weSB0aGUgbGVhZGluZyBtZW1vcnkgZGF0YSBmcm9tIHNyYyB0byBk c3QgaW4gYW4gaW5jcmVhc2luZworCSogYWRkcmVzcyBvcmRlci5CeSB0aGlzIHdheSx0aGUgcmlz ayBvZiBvdmVyd3JpdHRpbmcgdGhlIHNvdXJjZQorCSogbWVtb3J5IGRhdGEgaXMgZWxpbWluYXRl ZCB3aGVuIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHNyYyBhbmQKKwkqIGRzdCBpcyBsZXNzIHRoYW4g MTYuIFRoZSBtZW1vcnkgYWNjZXNzZXMgaGVyZSBhcmUgYWxpZ25tZW50LgorCSovCisJdGJ6CXRt cDIsICMwLCAxZgorCWxkcmIxCXRtcDF3LCBzcmMsICMxCisJc3RyYjEJdG1wMXcsIGRzdCwgIzEK KzE6CisJdGJ6CXRtcDIsICMxLCAyZgorCWxkcmgxCXRtcDF3LCBzcmMsICMyCisJc3RyaDEJdG1w MXcsIGRzdCwgIzIKKzI6CisJdGJ6CXRtcDIsICMyLCAzZgorCWxkcjEJdG1wMXcsIHNyYywgIzQK KwlzdHIxCXRtcDF3LCBkc3QsICM0CiszOgorCXRiegl0bXAyLCAjMywgLkxTcmNBbGlnbmVkCisJ bGRyMQl0bXAxLCBzcmMsICM4CisJc3RyMQl0bXAxLCBkc3QsICM4CisKKy5MU3JjQWxpZ25lZDoK KwljbXAJY291bnQsICM2NAorCWIuZ2UJLkxjcHlfb3ZlcjY0CisJLyoKKwkqIERlYWwgd2l0aCBz bWFsbCBjb3BpZXMgcXVpY2tseSBieSBkcm9wcGluZyBzdHJhaWdodCBpbnRvIHRoZQorCSogZXhp dCBibG9jay4KKwkqLworLkx0YWlsNjM6CisJLyoKKwkqIENvcHkgdXAgdG8gNDggYnl0ZXMgb2Yg ZGF0YS4gQXQgdGhpcyBwb2ludCB3ZSBvbmx5IG5lZWQgdGhlCisJKiBib3R0b20gNiBiaXRzIG9m IGNvdW50IHRvIGJlIGFjY3VyYXRlLgorCSovCisJYW5kcwl0bXAxLCBjb3VudCwgIzB4MzAKKwli LmVxCS5MdGlueTE1CisJY21wCXRtcDF3LCAjMHgyMAorCWIuZXEJMWYKKwliLmx0CTJmCisJbGRw MQlBX2wsIEFfaCwgc3JjLCAjMTYKKwlzdHAxCUFfbCwgQV9oLCBkc3QsICMxNgorMToKKwlsZHAx CUFfbCwgQV9oLCBzcmMsICMxNgorCXN0cDEJQV9sLCBBX2gsIGRzdCwgIzE2CisyOgorCWxkcDEJ QV9sLCBBX2gsIHNyYywgIzE2CisJc3RwMQlBX2wsIEFfaCwgZHN0LCAjMTYKKy5MdGlueTE1Ogor CS8qCisJKiBQcmVmZXIgdG8gYnJlYWsgb25lIGxkcC9zdHAgaW50byBzZXZlcmFsIGxvYWQvc3Rv cmUgdG8gYWNjZXNzCisJKiBtZW1vcnkgaW4gYW4gaW5jcmVhc2luZyBhZGRyZXNzIG9yZGVyLHJh dGhlciB0aGFuIHRvIGxvYWQvc3RvcmUgMTYKKwkqIGJ5dGVzIGZyb20gKHNyYy0xNikgdG8gKGRz dC0xNikgYW5kIHRvIGJhY2t3YXJkIHRoZSBzcmMgdG8gYWxpZ25lZAorCSogYWRkcmVzcyx3aGlj aCB3YXkgaXMgdXNlZCBpbiBvcmlnaW5hbCBjb3J0ZXggbWVtY3B5LiBJZiBrZWVwaW5nCisJKiB0 aGUgb3JpZ2luYWwgbWVtY3B5IHByb2Nlc3MgaGVyZSwgbWVtbW92ZSBuZWVkIHRvIHNhdGlzZnkg dGhlCisJKiBwcmVjb25kaXRpb24gdGhhdCBzcmMgYWRkcmVzcyBpcyBhdCBsZWFzdCAxNiBieXRl cyBiaWdnZXIgdGhhbiBkc3QKKwkqIGFkZHJlc3Msb3RoZXJ3aXNlIHNvbWUgc291cmNlIGRhdGEg d2lsbCBiZSBvdmVyd3JpdHRlbiB3aGVuIG1lbW92ZQorCSogY2FsbCBtZW1jcHkgZGlyZWN0bHku IFRvIG1ha2UgbWVtbW92ZSBzaW1wbGVyIGFuZCBkZWNvdXBsZSB0aGUKKwkqIG1lbWNweSdzIGRl cGVuZGVuY3kgb24gbWVtbW92ZSwgd2l0aGRyZXcgdGhlIG9yaWdpbmFsIHByb2Nlc3MuCisJKi8K Kwl0YnoJY291bnQsICMzLCAxZgorCWxkcjEJdG1wMSwgc3JjLCAjOAorCXN0cjEJdG1wMSwgZHN0 LCAjOAorMToKKwl0YnoJY291bnQsICMyLCAyZgorCWxkcjEJdG1wMXcsIHNyYywgIzQKKwlzdHIx CXRtcDF3LCBkc3QsICM0CisyOgorCXRiegljb3VudCwgIzEsIDNmCisJbGRyaDEJdG1wMXcsIHNy YywgIzIKKwlzdHJoMQl0bXAxdywgZHN0LCAjMgorMzoKKwl0YnoJY291bnQsICMwLCAuTGV4aXRm dW5jCisJbGRyYjEJdG1wMXcsIHNyYywgIzEKKwlzdHJiMQl0bXAxdywgZHN0LCAjMQorCisJYgku TGV4aXRmdW5jCisKKy5MY3B5X292ZXI2NDoKKwlzdWJzCWNvdW50LCBjb3VudCwgIzEyOAorCWIu Z2UJLkxjcHlfYm9keV9sYXJnZQorCS8qCisJKiBMZXNzIHRoYW4gMTI4IGJ5dGVzIHRvIGNvcHks IHNvIGhhbmRsZSA2NCBoZXJlIGFuZCB0aGVuIGp1bXAKKwkqIHRvIHRoZSB0YWlsLgorCSovCisJ bGRwMQlBX2wsIEFfaCwgc3JjLCAjMTYKKwlzdHAxCUFfbCwgQV9oLCBkc3QsICMxNgorCWxkcDEJ Ql9sLCBCX2gsIHNyYywgIzE2CisJbGRwMQlDX2wsIENfaCwgc3JjLCAjMTYKKwlzdHAxCUJfbCwg Ql9oLCBkc3QsICMxNgorCXN0cDEJQ19sLCBDX2gsIGRzdCwgIzE2CisJbGRwMQlEX2wsIERfaCwg c3JjLCAjMTYKKwlzdHAxCURfbCwgRF9oLCBkc3QsICMxNgorCisJdHN0CWNvdW50LCAjMHgzZgor CWIubmUJLkx0YWlsNjMKKwliCS5MZXhpdGZ1bmMKKworCS8qCisJKiBDcml0aWNhbCBsb29wLiAg U3RhcnQgYXQgYSBuZXcgY2FjaGUgbGluZSBib3VuZGFyeS4gIEFzc3VtaW5nCisJKiA2NCBieXRl cyBwZXIgbGluZSB0aGlzIGVuc3VyZXMgdGhlIGVudGlyZSBsb29wIGlzIGluIG9uZSBsaW5lLgor CSovCisuTGNweV9ib2R5X2xhcmdlOgorCS8qIHByZS1nZXQgNjQgYnl0ZXMgZGF0YS4gKi8KKwls ZHAxCUFfbCwgQV9oLCBzcmMsICMxNgorCWxkcDEJQl9sLCBCX2gsIHNyYywgIzE2CisJbGRwMQlD X2wsIENfaCwgc3JjLCAjMTYKKwlsZHAxCURfbCwgRF9oLCBzcmMsICMxNgorMToKKwkvKgorCSog aW50ZXJsYWNlIHRoZSBsb2FkIG9mIG5leHQgNjQgYnl0ZXMgZGF0YSBibG9jayB3aXRoIHN0b3Jl IG9mIHRoZSBsYXN0CisJKiBsb2FkZWQgNjQgYnl0ZXMgZGF0YS4KKwkqLworCXN0cDEJQV9sLCBB X2gsIGRzdCwgIzE2CisJbGRwMQlBX2wsIEFfaCwgc3JjLCAjMTYKKwlzdHAxCUJfbCwgQl9oLCBk c3QsICMxNgorCWxkcDEJQl9sLCBCX2gsIHNyYywgIzE2CisJc3RwMQlDX2wsIENfaCwgZHN0LCAj MTYKKwlsZHAxCUNfbCwgQ19oLCBzcmMsICMxNgorCXN0cDEJRF9sLCBEX2gsIGRzdCwgIzE2CisJ bGRwMQlEX2wsIERfaCwgc3JjLCAjMTYKKwlzdWJzCWNvdW50LCBjb3VudCwgIzY0CisJYi5nZQkx YgorCXN0cDEJQV9sLCBBX2gsIGRzdCwgIzE2CisJc3RwMQlCX2wsIEJfaCwgZHN0LCAjMTYKKwlz dHAxCUNfbCwgQ19oLCBkc3QsICMxNgorCXN0cDEJRF9sLCBEX2gsIGRzdCwgIzE2CisKKwl0c3QJ Y291bnQsICMweDNmCisJYi5uZQkuTHRhaWw2MworLkxleGl0ZnVuYzoKZGlmZiAtLWdpdCBhL2Fy Y2gvYXJtNjQvbGliL2RpdjAuYyBiL2FyY2gvYXJtNjQvbGliL2RpdjAuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTJjYjcyCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9h cm02NC9saWIvZGl2MC5jCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIw MDIKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbngu ZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRy aWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqLworI2luY2x1ZGUgPGNvbW1vbi5o PgorCitleHRlcm4gdm9pZCBfX2RpdjAodm9pZCk7CisKKy8qIFJlcGxhY2VtZW50ICg9ZHVtbXkp IGZvciBHTlUvTGludXggZGl2aXNpb24tYnkgemVybyBoYW5kbGVyICovCit2b2lkIF9fZGl2MCAo dm9pZCkKK3sKKwlwYW5pYygiZGl2aXNpb24gYnkgemVyb1xuIik7Cit9CmRpZmYgLS1naXQgYS9h cmNoL2FybTY0L2xpYi9tZW1jcHkuUyBiL2FyY2gvYXJtNjQvbGliL21lbWNweS5TCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmZWQzMTkKLS0tIC9kZXYvbnVsbAorKysgYi9h cmNoL2FybTY0L2xpYi9tZW1jcHkuUwpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0 IChDKSAyMDEzIEFSTSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTGluYXJvLgorICoKKyAq IFRoaXMgY29kZSBpcyBiYXNlZCBvbiBnbGliYyBjb3J0ZXggc3RyaW5ncyB3b3JrIG9yaWdpbmFs bHkgYXV0aG9yZWQgYnkgTGluYXJvCisgKiBhbmQgcmUtbGljZW5zZWQgdW5kZXIgR1BMdjIgZm9y IHRoZSBMaW51eCBrZXJuZWwuIFRoZSBvcmlnaW5hbCBjb2RlIGNhbgorICogYmUgZm91bmQgQAor ICoKKyAqIGh0dHA6Ly9iYXphYXIubGF1bmNocGFkLm5ldC9+bGluYXJvLXRvb2xjaGFpbi1kZXYv Y29ydGV4LXN0cmluZ3MvdHJ1bmsvCisgKiBmaWxlcy9oZWFkOi9zcmMvYWFyY2g2NC8KKyAqCisg KiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+Cisj aW5jbHVkZSA8YXNtL2Fzc2VtYmxlci5oPgorCisvKgorICogQ29weSBhIGJ1ZmZlciBmcm9tIHNy YyB0byBkZXN0IChhbGlnbm1lbnQgaGFuZGxlZCBieSB0aGUgaGFyZHdhcmUpCisgKgorICogUGFy YW1ldGVyczoKKyAqCXgwIC0gZGVzdAorICoJeDEgLSBzcmMKKyAqCXgyIC0gbgorICogUmV0dXJu czoKKyAqCXgwIC0gZGVzdAorICovCisJLm1hY3JvIGxkcmIxIHB0ciwgcmVnQiwgdmFsCisJbGRy YiAgXHB0ciwgW1xyZWdCXSwgXHZhbAorCS5lbmRtCisKKwkubWFjcm8gc3RyYjEgcHRyLCByZWdC LCB2YWwKKwlzdHJiIFxwdHIsIFtccmVnQl0sIFx2YWwKKwkuZW5kbQorCisJLm1hY3JvIGxkcmgx IHB0ciwgcmVnQiwgdmFsCisJbGRyaCAgXHB0ciwgW1xyZWdCXSwgXHZhbAorCS5lbmRtCisKKwku bWFjcm8gc3RyaDEgcHRyLCByZWdCLCB2YWwKKwlzdHJoIFxwdHIsIFtccmVnQl0sIFx2YWwKKwku ZW5kbQorCisJLm1hY3JvIGxkcjEgcHRyLCByZWdCLCB2YWwKKwlsZHIgXHB0ciwgW1xyZWdCXSwg XHZhbAorCS5lbmRtCisKKwkubWFjcm8gc3RyMSBwdHIsIHJlZ0IsIHZhbAorCXN0ciBccHRyLCBb XHJlZ0JdLCBcdmFsCisJLmVuZG0KKworCS5tYWNybyBsZHAxIHB0ciwgcmVnQiwgcmVnQywgdmFs CisJbGRwIFxwdHIsIFxyZWdCLCBbXHJlZ0NdLCBcdmFsCisJLmVuZG0KKworCS5tYWNybyBzdHAx IHB0ciwgcmVnQiwgcmVnQywgdmFsCisJc3RwIFxwdHIsIFxyZWdCLCBbXHJlZ0NdLCBcdmFsCisJ LmVuZG0KKworCS53ZWFrIG1lbWNweQorRU5UUlkobWVtY3B5KQorI2luY2x1ZGUgImNvcHlfdGVt cGxhdGUuUyIKKwlyZXQKK0VORFBST0MobWVtY3B5KQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9s aWIvbWVtc2V0LlMgYi9hcmNoL2FybTY0L2xpYi9tZW1zZXQuUwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4zODBhNTQwCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9s aWIvbWVtc2V0LlMKQEAgLTAsMCArMSwyMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg QVJNIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBMaW5hcm8uCisgKgorICogVGhpcyBjb2Rl IGlzIGJhc2VkIG9uIGdsaWJjIGNvcnRleCBzdHJpbmdzIHdvcmsgb3JpZ2luYWxseSBhdXRob3Jl ZCBieSBMaW5hcm8KKyAqIGFuZCByZS1saWNlbnNlZCB1bmRlciBHUEx2MiBmb3IgdGhlIExpbnV4 IGtlcm5lbC4gVGhlIG9yaWdpbmFsIGNvZGUgY2FuCisgKiBiZSBmb3VuZCBACisgKgorICogaHR0 cDovL2JhemFhci5sYXVuY2hwYWQubmV0L35saW5hcm8tdG9vbGNoYWluLWRldi9jb3J0ZXgtc3Ry aW5ncy90cnVuay8KKyAqIGZpbGVzL2hlYWQ6L3NyYy9hYXJjaDY0LworICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2xpbmthZ2UuaD4KKyNpbmNsdWRlIDxh c20vYXNzZW1ibGVyLmg+CisKKy8qCisgKiBGaWxsIGluIHRoZSBidWZmZXIgd2l0aCBjaGFyYWN0 ZXIgYyAoYWxpZ25tZW50IGhhbmRsZWQgYnkgdGhlIGhhcmR3YXJlKQorICoKKyAqIFBhcmFtZXRl cnM6CisgKgl4MCAtIGJ1ZgorICoJeDEgLSBjCisgKgl4MiAtIG4KKyAqIFJldHVybnM6CisgKgl4 MCAtIGJ1ZgorICovCisKK2RzdGluCQkucmVxCXgwCit2YWwJCS5yZXEJdzEKK2NvdW50CQkucmVx CXgyCit0bXAxCQkucmVxCXgzCit0bXAxdwkJLnJlcQl3MwordG1wMgkJLnJlcQl4NAordG1wMncJ CS5yZXEJdzQKK3p2YV9sZW5feAkucmVxCXg1Cit6dmFfbGVuCQkucmVxCXc1Cit6dmFfYml0c194 CS5yZXEJeDYKKworQV9sCQkucmVxCXg3CitBX2x3CQkucmVxCXc3Citkc3QJCS5yZXEJeDgKK3Rt cDN3CQkucmVxCXc5Cit0bXAzCQkucmVxCXg5CisKKwkud2VhayBtZW1zZXQKK0VOVFJZKG1lbXNl dCkKKwltb3YJZHN0LCBkc3RpbgkvKiBQcmVzZXJ2ZSByZXR1cm4gdmFsdWUuICAqLworCWFuZAlB X2x3LCB2YWwsICMyNTUKKwlvcnIJQV9sdywgQV9sdywgQV9sdywgbHNsICM4CisJb3JyCUFfbHcs IEFfbHcsIEFfbHcsIGxzbCAjMTYKKwlvcnIJQV9sLCBBX2wsIEFfbCwgbHNsICMzMgorCisJY21w CWNvdW50LCAjMTUKKwliLmhpCS5Mb3ZlcjE2X3Byb2MKKwkvKkFsbCBzdG9yZSBtYXliZSBhcmUg bm9uLWFsaWduZWQuLiovCisJdGJ6CWNvdW50LCAjMywgMWYKKwlzdHIJQV9sLCBbZHN0XSwgIzgK KzE6CisJdGJ6CWNvdW50LCAjMiwgMmYKKwlzdHIJQV9sdywgW2RzdF0sICM0CisyOgorCXRieglj b3VudCwgIzEsIDNmCisJc3RyaAlBX2x3LCBbZHN0XSwgIzIKKzM6CisJdGJ6CWNvdW50LCAjMCwg NGYKKwlzdHJiCUFfbHcsIFtkc3RdCis0OgorCXJldAorCisuTG92ZXIxNl9wcm9jOgorCS8qV2hl dGhlciAgdGhlIHN0YXJ0IGFkZHJlc3MgaXMgYWxpZ25lZCB3aXRoIDE2LiovCisJbmVnCXRtcDIs IGRzdAorCWFuZHMJdG1wMiwgdG1wMiwgIzE1CisJYi5lcQkuTGFsaWduZWQKKy8qCisqIFRoZSBj b3VudCBpcyBub3QgbGVzcyB0aGFuIDE2LCB3ZSBjYW4gdXNlIHN0cCB0byBzdG9yZSB0aGUgc3Rh cnQgMTYgYnl0ZXMsCisqIHRoZW4gYWRqdXN0IHRoZSBkc3QgYWxpZ25lZCB3aXRoIDE2LlRoaXMg cHJvY2VzcyB3aWxsIG1ha2UgdGhlIGN1cnJlbnQKKyogbWVtb3J5IGFkZHJlc3MgYXQgYWxpZ25t ZW50IGJvdW5kYXJ5LgorKi8KKwlzdHAJQV9sLCBBX2wsIFtkc3RdIC8qbm9uLWFsaWduZWQgc3Rv cmUuLiovCisJLyptYWtlIHRoZSBkc3QgYWxpZ25lZC4uKi8KKwlzdWIJY291bnQsIGNvdW50LCB0 bXAyCisJYWRkCWRzdCwgZHN0LCB0bXAyCisKKy5MYWxpZ25lZDoKKwljYnoJQV9sLCAuTHplcm9f bWVtCisKKy5MdGFpbF9tYXliZV9sb25nOgorCWNtcAljb3VudCwgIzY0CisJYi5nZQkuTG5vdF9z aG9ydAorLkx0YWlsNjM6CisJYW5kcwl0bXAxLCBjb3VudCwgIzB4MzAKKwliLmVxCTNmCisJY21w CXRtcDF3LCAjMHgyMAorCWIuZXEJMWYKKwliLmx0CTJmCisJc3RwCUFfbCwgQV9sLCBbZHN0XSwg IzE2CisxOgorCXN0cAlBX2wsIEFfbCwgW2RzdF0sICMxNgorMjoKKwlzdHAJQV9sLCBBX2wsIFtk c3RdLCAjMTYKKy8qCisqIFRoZSBsYXN0IHN0b3JlIGxlbmd0aCBpcyBsZXNzIHRoYW4gMTYsdXNl IHN0cCB0byB3cml0ZSBsYXN0IDE2IGJ5dGVzLgorKiBJdCB3aWxsIGxlYWQgc29tZSBieXRlcyB3 cml0dGVuIHR3aWNlIGFuZCB0aGUgYWNjZXNzIGlzIG5vbi1hbGlnbmVkLgorKi8KKzM6CisJYW5k cwljb3VudCwgY291bnQsICMxNQorCWNiegljb3VudCwgNGYKKwlhZGQJZHN0LCBkc3QsIGNvdW50 CisJc3RwCUFfbCwgQV9sLCBbZHN0LCAjLTE2XQkvKiBSZXBlYXQgc29tZS9hbGwgb2YgbGFzdCBz dG9yZS4gKi8KKzQ6CisJcmV0CisKKwkvKgorCSogQ3JpdGljYWwgbG9vcC4gU3RhcnQgYXQgYSBu ZXcgY2FjaGUgbGluZSBib3VuZGFyeS4gQXNzdW1pbmcKKwkqIDY0IGJ5dGVzIHBlciBsaW5lLCB0 aGlzIGVuc3VyZXMgdGhlIGVudGlyZSBsb29wIGlzIGluIG9uZSBsaW5lLgorCSovCisuTG5vdF9z aG9ydDoKKwlzdWIJZHN0LCBkc3QsICMxNi8qIFByZS1iaWFzLiAgKi8KKwlzdWIJY291bnQsIGNv dW50LCAjNjQKKzE6CisJc3RwCUFfbCwgQV9sLCBbZHN0LCAjMTZdCisJc3RwCUFfbCwgQV9sLCBb ZHN0LCAjMzJdCisJc3RwCUFfbCwgQV9sLCBbZHN0LCAjNDhdCisJc3RwCUFfbCwgQV9sLCBbZHN0 LCAjNjRdIQorCXN1YnMJY291bnQsIGNvdW50LCAjNjQKKwliLmdlCTFiCisJdHN0CWNvdW50LCAj MHgzZgorCWFkZAlkc3QsIGRzdCwgIzE2CisJYi5uZQkuTHRhaWw2MworLkxleGl0ZnVuYzoKKwly ZXQKKworCS8qCisJKiBGb3IgemVyb2luZyBtZW1vcnksIGNoZWNrIHRvIHNlZSBpZiB3ZSBjYW4g dXNlIHRoZSBaVkEgZmVhdHVyZSB0bworCSogemVybyBlbnRpcmUgJ2NhY2hlJyBsaW5lcy4KKwkq LworLkx6ZXJvX21lbToKKwljbXAJY291bnQsICM2MworCWIubGUJLkx0YWlsNjMKKwkvKgorCSog Rm9yIHplcm9pbmcgc21hbGwgYW1vdW50cyBvZiBtZW1vcnksIGl0J3Mgbm90IHdvcnRoIHNldHRp bmcgdXAKKwkqIHRoZSBsaW5lLWNsZWFyIGNvZGUuCisJKi8KKwljbXAJY291bnQsICMxMjgKKwli Lmx0CS5Mbm90X3Nob3J0IC8qY291bnQgaXMgYXQgbGVhc3QgIDEyOCBieXRlcyovCisKKwltcnMJ dG1wMSwgZGN6aWRfZWwwCisJdGJuegl0bXAxLCAjNCwgLkxub3Rfc2hvcnQKKwltb3YJdG1wM3cs ICM0CisJYW5kCXp2YV9sZW4sIHRtcDF3LCAjMTUJLyogU2FmZXR5OiBvdGhlciBiaXRzIHJlc2Vy dmVkLiAgKi8KKwlsc2wJenZhX2xlbiwgdG1wM3csIHp2YV9sZW4KKworCWFuZHMJdG1wM3csIHp2 YV9sZW4sICM2MworCS8qCisJKiBlbnN1cmUgdGhlIHp2YV9sZW4gaXMgbm90IGxlc3MgdGhhbiA2 NC4KKwkqIEl0IGlzIG5vdCBtZWFuaW5nZnVsIHRvIHVzZSBaVkEgaWYgdGhlIGJsb2NrIHNpemUg aXMgbGVzcyB0aGFuIDY0LgorCSovCisJYi5uZQkuTG5vdF9zaG9ydAorLkx6ZXJvX2J5X2xpbmU6 CisJLyoKKwkqIENvbXB1dGUgaG93IGZhciB3ZSBuZWVkIHRvIGdvIHRvIGJlY29tZSBzdWl0YWJs eSBhbGlnbmVkLiBXZSdyZQorCSogYWxyZWFkeSBhdCBxdWFkLXdvcmQgYWxpZ25tZW50LgorCSov CisJY21wCWNvdW50LCB6dmFfbGVuX3gKKwliLmx0CS5Mbm90X3Nob3J0CQkvKiBOb3QgZW5vdWdo IHRvIHJlYWNoIGFsaWdubWVudC4gICovCisJc3ViCXp2YV9iaXRzX3gsIHp2YV9sZW5feCwgIzEK KwluZWcJdG1wMiwgZHN0CisJYW5kcwl0bXAyLCB0bXAyLCB6dmFfYml0c194CisJYi5lcQkyZgkJ CS8qIEFscmVhZHkgYWxpZ25lZC4gICovCisJLyogTm90IGFsaWduZWQsIGNoZWNrIHRoYXQgdGhl cmUncyBlbm91Z2ggdG8gY29weSBhZnRlciBhbGlnbm1lbnQuKi8KKwlzdWIJdG1wMSwgY291bnQs IHRtcDIKKwkvKgorCSogZ3JhbnRlZSB0aGUgcmVtYWluIGxlbmd0aCB0byBiZSBaVkEgaXMgYmln Z2VyIHRoYW4gNjQsCisJKiBhdm9pZCB0byBtYWtlIHRoZSAyZidzIHByb2Nlc3Mgb3ZlciBtZW0g cmFuZ2UuKi8KKwljbXAJdG1wMSwgIzY0CisJY2NtcAl0bXAxLCB6dmFfbGVuX3gsICM4LCBnZQkv KiBOWkNWPTBiMTAwMCAqLworCWIubHQJLkxub3Rfc2hvcnQKKwkvKgorCSogV2Uga25vdyB0aGF0 IHRoZXJlJ3MgYXQgbGVhc3QgNjQgYnl0ZXMgdG8gemVybyBhbmQgdGhhdCBpdCdzIHNhZmUKKwkq IHRvIG92ZXJydW4gYnkgNjQgYnl0ZXMuCisJKi8KKwltb3YJY291bnQsIHRtcDEKKzE6CisJc3Rw CUFfbCwgQV9sLCBbZHN0XQorCXN0cAlBX2wsIEFfbCwgW2RzdCwgIzE2XQorCXN0cAlBX2wsIEFf bCwgW2RzdCwgIzMyXQorCXN1YnMJdG1wMiwgdG1wMiwgIzY0CisJc3RwCUFfbCwgQV9sLCBbZHN0 LCAjNDhdCisJYWRkCWRzdCwgZHN0LCAjNjQKKwliLmdlCTFiCisJLyogV2UndmUgb3ZlcnJ1biBh IGJpdCwgc28gYWRqdXN0IGRzdCBkb3dud2FyZHMuKi8KKwlhZGQJZHN0LCBkc3QsIHRtcDIKKzI6 CisJc3ViCWNvdW50LCBjb3VudCwgenZhX2xlbl94CiszOgorCWRjCXp2YSwgZHN0CisJYWRkCWRz dCwgZHN0LCB6dmFfbGVuX3gKKwlzdWJzCWNvdW50LCBjb3VudCwgenZhX2xlbl94CisJYi5nZQkz YgorCWFuZHMJY291bnQsIGNvdW50LCB6dmFfYml0c194CisJYi5uZQkuTHRhaWxfbWF5YmVfbG9u ZworCXJldAorRU5EUFJPQyhtZW1zZXQpCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2xpYi9tb2R1 bGUuYyBiL2FyY2gvYXJtNjQvbGliL21vZHVsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmJlNzk2NWQKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2xpYi9tb2R1 bGUuYwpAQCAtMCwwICsxLDk4IEBACisvKgorICogIGxpbnV4L2FyY2gvYXJtL2tlcm5lbC9tb2R1 bGUuYworICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDIgUnVzc2VsbCBLaW5nLgorICogIE1vZGlm aWVkIGZvciBub21tdSBieSBIeW9rIFMuIENob2kKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9u IDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoK KyAqIE1vZHVsZSBhbGxvY2F0aW9uIG1ldGhvZCBzdWdnZXN0ZWQgYnkgQW5kaSBLbGVlbi4KKyAq LworCisvLyNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgorI2luY2x1ZGUgPGNvbW1vbi5oPgorI2lu Y2x1ZGUgPGVsZi5oPgorI2luY2x1ZGUgPG1vZHVsZS5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisK K2ludAorYXBwbHlfcmVsb2NhdGUoRWxmMzJfU2hkciAqc2VjaGRycywgY29uc3QgY2hhciAqc3Ry dGFiLCB1bnNpZ25lZCBpbnQgc3ltaW5kZXgsCisJICAgICAgIHVuc2lnbmVkIGludCByZWxpbmRl eCwgc3RydWN0IG1vZHVsZSAqbW9kdWxlKQoreworCUVsZjMyX1NoZHIgKnN5bXNlYyA9IHNlY2hk cnMgKyBzeW1pbmRleDsKKwlFbGYzMl9TaGRyICpyZWxzZWMgPSBzZWNoZHJzICsgcmVsaW5kZXg7 CisJRWxmMzJfU2hkciAqZHN0c2VjID0gc2VjaGRycyArIHJlbHNlYy0+c2hfaW5mbzsKKwlFbGYz Ml9SZWwgKnJlbCA9ICh2b2lkICopcmVsc2VjLT5zaF9hZGRyOworCXVuc2lnbmVkIGludCBpOwor CisJZm9yIChpID0gMDsgaSA8IHJlbHNlYy0+c2hfc2l6ZSAvIHNpemVvZihFbGYzMl9SZWwpOyBp KyssIHJlbCsrKSB7CisJCXVuc2lnbmVkIGxvbmcgbG9jOworCQlFbGYzMl9TeW0gKnN5bTsKKwkJ czMyIG9mZnNldDsKKworCQlvZmZzZXQgPSBFTEYzMl9SX1NZTShyZWwtPnJfaW5mbyk7CisJCWlm IChvZmZzZXQgPCAwIHx8IG9mZnNldCA+IChzeW1zZWMtPnNoX3NpemUgLyBzaXplb2YoRWxmMzJf U3ltKSkpIHsKKwkJCXByaW50ZigiJXM6IGJhZCByZWxvY2F0aW9uLCBzZWN0aW9uICV1IHJlbG9j ICV1XG4iLAorCQkJCW1vZHVsZS0+bmFtZSwgcmVsaW5kZXgsIGkpOworCQkJcmV0dXJuIC1FTk9F WEVDOworCQl9CisKKwkJc3ltID0gKChFbGYzMl9TeW0gKilzeW1zZWMtPnNoX2FkZHIpICsgb2Zm c2V0OworCisJCWlmIChyZWwtPnJfb2Zmc2V0IDwgMCB8fCByZWwtPnJfb2Zmc2V0ID4gZHN0c2Vj LT5zaF9zaXplIC0gc2l6ZW9mKHUzMikpIHsKKwkJCXByaW50ZigiJXM6IG91dCBvZiBib3VuZHMg cmVsb2NhdGlvbiwgIgorCQkJCSJzZWN0aW9uICV1IHJlbG9jICV1IG9mZnNldCAlZCBzaXplICVk XG4iLAorCQkJCW1vZHVsZS0+bmFtZSwgcmVsaW5kZXgsIGksIHJlbC0+cl9vZmZzZXQsCisJCQkJ ZHN0c2VjLT5zaF9zaXplKTsKKwkJCXJldHVybiAtRU5PRVhFQzsKKwkJfQorCisJCWxvYyA9IGRz dHNlYy0+c2hfYWRkciArIHJlbC0+cl9vZmZzZXQ7CisKKwkJc3dpdGNoIChFTEYzMl9SX1RZUEUo cmVsLT5yX2luZm8pKSB7CisJCWNhc2UgUl9BUk1fQUJTMzI6CisJCQkqKHUzMiAqKWxvYyArPSBz eW0tPnN0X3ZhbHVlOworCQkJYnJlYWs7CisKKwkJY2FzZSBSX0FSTV9QQzI0OgorCQljYXNlIFJf QVJNX0NBTEw6CisJCWNhc2UgUl9BUk1fSlVNUDI0OgorCQkJb2Zmc2V0ID0gKCoodTMyICopbG9j ICYgMHgwMGZmZmZmZikgPDwgMjsKKwkJCWlmIChvZmZzZXQgJiAweDAyMDAwMDAwKQorCQkJCW9m ZnNldCAtPSAweDA0MDAwMDAwOworCisJCQlvZmZzZXQgKz0gc3ltLT5zdF92YWx1ZSAtIGxvYzsK KwkJCWlmIChvZmZzZXQgJiAzIHx8CisJCQkgICAgb2Zmc2V0IDw9IChzMzIpMHhmZTAwMDAwMCB8 fAorCQkJICAgIG9mZnNldCA+PSAoczMyKTB4MDIwMDAwMDApIHsKKwkJCQlwcmludGYoIiVzOiBy ZWxvY2F0aW9uIG91dCBvZiByYW5nZSwgc2VjdGlvbiAiCisJCQkJICAgICAgICIldSByZWxvYyAl dSBzeW0gJyVzJ1xuIiwgbW9kdWxlLT5uYW1lLAorCQkJCSAgICAgICByZWxpbmRleCwgaSwgc3Ry dGFiICsgc3ltLT5zdF9uYW1lKTsKKwkJCQlyZXR1cm4gLUVOT0VYRUM7CisJCQl9CisKKwkJCW9m ZnNldCA+Pj0gMjsKKworCQkJKih1MzIgKilsb2MgJj0gMHhmZjAwMDAwMDsKKwkJCSoodTMyICop bG9jIHw9IG9mZnNldCAmIDB4MDBmZmZmZmY7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJ cHJpbnRmKCIlczogdW5rbm93biByZWxvY2F0aW9uOiAldVxuIiwKKwkJCSAgICAgICBtb2R1bGUt Pm5hbWUsIEVMRjMyX1JfVFlQRShyZWwtPnJfaW5mbykpOworCQkJcmV0dXJuIC1FTk9FWEVDOwor CQl9CisJfQorCXJldHVybiAwOworfQorCitpbnQKK2FwcGx5X3JlbG9jYXRlX2FkZChFbGYzMl9T aGRyICpzZWNoZHJzLCBjb25zdCBjaGFyICpzdHJ0YWIsCisJCSAgIHVuc2lnbmVkIGludCBzeW1p bmRleCwgdW5zaWduZWQgaW50IHJlbHNlYywgc3RydWN0IG1vZHVsZSAqbW9kdWxlKQoreworCXBy aW50ZigibW9kdWxlICVzOiBBREQgUkVMT0NBVElPTiB1bnN1cHBvcnRlZFxuIiwKKwkgICAgICAg bW9kdWxlLT5uYW1lKTsKKwlyZXR1cm4gLUVOT0VYRUM7Cit9CmRpZmYgLS1naXQgYS9hcmNoL2Fy bTY0L2xpYi9wYmwubGRzLlMgYi9hcmNoL2FybTY0L2xpYi9wYmwubGRzLlMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNiYWZmMAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gv YXJtNjQvbGliL3BibC5sZHMuUwpAQCAtMCwwICsxLDk2IEBACisvKgorICogKEMpIENvcHlyaWdo dCAyMDEyIFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4sIFBlbmd1dHJvbml4 CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1 dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m CisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqLworI2luY2x1ZGUgPGxpbnV4L3NpemVz Lmg+CisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvYmFyZWJveC5sZHMuaD4KKyNpbmNsdWRlIDxhc20t Z2VuZXJpYy9tZW1vcnlfbGF5b3V0Lmg+CisKKyNpZmRlZiBDT05GSUdfUEJMX1JFTE9DQVRBQkxF CisjZGVmaW5lIEJBU0UJMHgwCisjZWxzZQorI2RlZmluZSBCQVNFCShURVhUX0JBU0UgLSBTWl8y TSkKKyNlbmRpZgorCitPVVRQVVRfRk9STUFUKCJlbGYzMi1saXR0bGVhcm0iLCAiZWxmMzItbGl0 dGxlYXJtIiwgImVsZjMyLWxpdHRsZWFybSIpCitPVVRQVVRfQVJDSChhcm0pCitTRUNUSU9OUwor eworCS4gPSBCQVNFOworCisJUFJFX0lNQUdFCisKKwkuID0gQUxJR04oNCk7CisJLnRleHQgICAg ICA6CisJeworCQlfc3RleHQgPSAuOworCQlfdGV4dCA9IC47CisJCSooLnRleHRfaGVhZF9lbnRy eSopCisJCV9fYmFyZV9pbml0X3N0YXJ0ID0gLjsKKwkJKigudGV4dF9iYXJlX2luaXQqKQorCQlf X2JhcmVfaW5pdF9lbmQgPSAuOworCQkqKC50ZXh0KikKKwl9CisKKwkvKiBEaXNjYXJkIHVud2lu ZCBpZiBlbmFibGUgaW4gYmFyZWJveCAqLworCS9ESVNDQVJELyA6IHsgKiguQVJNLmV4KikgfQor CisJQkFSRUJPWF9CQVJFX0lOSVRfU0laRQorCUJBUkVCT1hfUEJMX1NJWkUKKworCS4gPSBBTElH Tig0KTsKKwkucm9kYXRhIDogeyAqKC5yb2RhdGEqKSB9CisKKwkuYmFyZWJveF9pbWQgOiB7IEJB UkVCT1hfSU1EIH0KKworCV9ldGV4dCA9IC47CQkJLyogRW5kIG9mIHRleHQgYW5kIHJvZGF0YSBz ZWN0aW9uICovCisKKwkuID0gQUxJR04oNCk7CisJLmRhdGEgOiB7ICooLmRhdGEqKSB9CisKKwku cmVsLmR5biA6IHsKKwkJX19yZWxfZHluX3N0YXJ0ID0gLjsKKwkJKigucmVsKikKKwkJX19yZWxf ZHluX2VuZCA9IC47CisJfQorCisJLmR5bnN5bSA6IHsKKwkJX19keW5zeW1fc3RhcnQgPSAuOwor CQkqKC5keW5zeW0pCisJCV9fZHluc3ltX2VuZCA9IC47CisJfQorCisJLiA9IEFMSUdOKDQpOwor CV9fYnNzX3N0YXJ0ID0gLjsKKwkuYnNzIDogeyAqKC5ic3MqKSB9CisJX19ic3Nfc3RvcCA9IC47 CisJX2VuZCA9IC47CisKKwkuID0gQUxJR04oNCk7CisJX19waWdneWRhdGFfc3RhcnQgPSAuOwor CS5waWdneWRhdGEgOiB7CisJCSooLnBpZ2d5ZGF0YSkKKwl9CisJX19waWdneWRhdGFfZW5kID0g LjsKKworCS4gPSBBTElHTig0KTsKKwkuaW1hZ2VfZW5kIDogeworCQlLRUVQKCooLmltYWdlX2Vu ZCkpCisJfQorCV9faW1hZ2VfZW5kID0gLjsKKwlfYmFyZWJveF9pbWFnZV9zaXplID0gX19pbWFn ZV9lbmQgLSBCQVNFOworCV9iYXJlYm94X3BibF9zaXplID0gX19ic3Nfc3RhcnQgLSBCQVNFOwor fQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9saWIvcnVudGltZS1vZmZzZXQuUyBiL2FyY2gvYXJt NjQvbGliL3J1bnRpbWUtb2Zmc2V0LlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZTM2OGJhYQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvbGliL3J1bnRpbWUtb2Zm c2V0LlMKQEAgLTAsMCArMSw1MiBAQAorI2luY2x1ZGUgPGxpbnV4L2xpbmthZ2UuaD4KKyNpbmNs dWRlIDxhc20vYXNzZW1ibGVyLmg+CisKKy5zZWN0aW9uICIudGV4dF9iYXJlX2luaXQiLCJheCIK KworLyoKKyAqIEdldCB0aGUgb2Zmc2V0IGJldHdlZW4gdGhlIGxpbmsgYWRkcmVzcyBhbmQgdGhl IGFkZHJlc3MKKyAqIHdlIGFyZSBjdXJyZW50bHkgcnVubmluZyBhdC4KKyAqLworRU5UUlkoZ2V0 X3J1bnRpbWVfb2Zmc2V0KQorMToJYWRyIHgwLCAxYgorCWFkciB4MSwgZ2V0X3J1bnRpbWVfb2Zm c2V0CisJc3VicyB4MCwgeDEsIHgwCisJc3VicyB4MCwgeDAsICMxCisJcmV0CisKK2xpbmthZHI6 Cisud29yZCBnZXRfcnVudGltZV9vZmZzZXQKK0VORFBST0MoZ2V0X3J1bnRpbWVfb2Zmc2V0KQor CisuZ2xvYmwgX19sZF92YXJfYmFzZQorX19sZF92YXJfYmFzZToKKworLyoKKyAqIEZ1bmN0aW9u cyB0byBjYWxjdWxhdGUgc2VsZWN0ZWQgbGlua2VyIHN1cHBsaWVkIHZhcmlhYmxlcyBkdXJpbmcg cnVudGltZS4KKyAqIFRoaXMgaXMgbmVlZGVkIGZvciByZWxvY2F0YWJsZSBiaW5hcmllcyB3aGVu IHRoZSBsaW5rZXIgdmFyaWFibGVzIGFyZQorICogbmVlZGVkIGJlZm9yZSBmaW54aW5nIHVwIHRo ZSByZWxvY2F0aW9ucy4KKyAqLworLm1hY3JvIGxkX3Zhcl9lbnRyeSBuYW1lCisJRU5UUlkoX19s ZF92YXJfXG5hbWUpCisJCWxkciB4MCwgX19cbmFtZQorCQliIDFmCisJX19cbmFtZTogLndvcmQg XG5hbWUgLSBfX2xkX3Zhcl9iYXNlCisJRU5EUFJPQyhfX2xkX3Zhcl9cbmFtZSkKKy5lbmRtCisK K2xkX3Zhcl9lbnRyeSBfdGV4dAorbGRfdmFyX2VudHJ5IF9fcmVsX2R5bl9zdGFydAorbGRfdmFy X2VudHJ5IF9fcmVsX2R5bl9lbmQKK2xkX3Zhcl9lbnRyeSBfX2R5bnN5bV9zdGFydAorbGRfdmFy X2VudHJ5IF9fZHluc3ltX2VuZAorbGRfdmFyX2VudHJ5IF9iYXJlYm94X2ltYWdlX3NpemUKK2xk X3Zhcl9lbnRyeSBfX2Jzc19zdGFydAorbGRfdmFyX2VudHJ5IF9fYnNzX3N0b3AKKyNpZmRlZiBf X1BCTF9fCitsZF92YXJfZW50cnkgX19pbWFnZV9lbmQKKyNlbmRpZgorCisxOgorCWxkciB4MSwg PV9fbGRfdmFyX2Jhc2UKKwlhZGRzIHgwLCB4MCwgeDEKKwlyZXQKZGlmZiAtLWdpdCBhL2FyY2gv YXJtNjQvbGliL3Vud2luZC5jIGIvYXJjaC9hcm02NC9saWIvdW53aW5kLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNkY2E1YgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gv YXJtNjQvbGliL3Vud2luZC5jCkBAIC0wLDAgKzEsMzQ5IEBACisjaW5jbHVkZSA8Y29tbW9uLmg+ CisjaW5jbHVkZSA8aW5pdC5oPgorI2luY2x1ZGUgPGFzbS9zdGFja3RyYWNlLmg+CisjaW5jbHVk ZSA8YXNtL3Vud2luZC5oPgorI2luY2x1ZGUgPGFzbS9zZWN0aW9ucy5oPgorCisvKiBEdW1teSBm dW5jdGlvbnMgdG8gYXZvaWQgbGlua2VyIGNvbXBsYWludHMgKi8KK3ZvaWQgX19hZWFiaV91bndp bmRfY3BwX3ByMCh2b2lkKQoreworfTsKK0VYUE9SVF9TWU1CT0woX19hZWFiaV91bndpbmRfY3Bw X3ByMCk7CisKK3ZvaWQgX19hZWFiaV91bndpbmRfY3BwX3ByMSh2b2lkKQoreworfTsKK0VYUE9S VF9TWU1CT0woX19hZWFiaV91bndpbmRfY3BwX3ByMSk7CisKK3ZvaWQgX19hZWFiaV91bndpbmRf Y3BwX3ByMih2b2lkKQoreworfTsKK0VYUE9SVF9TWU1CT0woX19hZWFiaV91bndpbmRfY3BwX3By Mik7CisKK3N0cnVjdCB1bndpbmRfY3RybF9ibG9jayB7CisJdW5zaWduZWQgbG9uZyB2cnNbMTZd OwkJLyogdmlydHVhbCByZWdpc3RlciBzZXQgKi8KKwl1bnNpZ25lZCBsb25nICppbnNuOwkJLyog cG9pbnRlciB0byB0aGUgY3VycmVudCBpbnN0cnVjdGlvbnMgd29yZCAqLworCWludCBlbnRyaWVz OwkJCS8qIG51bWJlciBvZiBlbnRyaWVzIGxlZnQgdG8gaW50ZXJwcmV0ICovCisJaW50IGJ5dGU7 CQkJLyogY3VycmVudCBieXRlIG51bWJlciBpbiB0aGUgaW5zdHJ1Y3Rpb25zIHdvcmQgKi8KK307 CisKK2VudW0gcmVncyB7CisJRlAgPSAxMSwKKwlTUCA9IDEzLAorCUxSID0gMTQsCisJUEMgPSAx NQorfTsKKworI2RlZmluZSBUSFJFQURfU0laRSAgICAgICAgICAgICAgIDgxOTIKKworZXh0ZXJu IHN0cnVjdCB1bndpbmRfaWR4IF9fc3RhcnRfdW53aW5kX2lkeFtdOworZXh0ZXJuIHN0cnVjdCB1 bndpbmRfaWR4IF9fc3RvcF91bndpbmRfaWR4W107CisKKy8qIENvbnZlcnQgYSBwcmVsMzEgc3lt Ym9sIHRvIGFuIGFic29sdXRlIGFkZHJlc3MgKi8KKyNkZWZpbmUgcHJlbDMxX3RvX2FkZHIocHRy KQkJCQlcCisoewkJCQkJCQlcCisJLyogc2lnbi1leHRlbmQgdG8gMzIgYml0cyAqLwkJCVwKKwls b25nIG9mZnNldCA9ICgoKGxvbmcpKihwdHIpKSA8PCAxKSA+PiAxOwlcCisJKHVuc2lnbmVkIGxv bmcpKHB0cikgKyBvZmZzZXQ7CQkJXAorfSkKKworc3RhdGljIGlubGluZSBpbnQgaXNfa2VybmVs X3RleHQodW5zaWduZWQgbG9uZyBhZGRyKQoreworCWlmICgoYWRkciA+PSAodW5zaWduZWQgbG9u Zylfc3RleHQgJiYgYWRkciA8PSAodW5zaWduZWQgbG9uZylfZXRleHQpKQorCQlyZXR1cm4gMTsK KwlyZXR1cm4gMDsKK30KKwordm9pZCBkdW1wX2JhY2t0cmFjZV9lbnRyeSh1bnNpZ25lZCBsb25n IHdoZXJlLCB1bnNpZ25lZCBsb25nIGZyb20sIHVuc2lnbmVkIGxvbmcgZnJhbWUpCit7CisjaWZk ZWYgQ09ORklHX0tBTExTWU1TCisJcHJpbnRrKCJbPCUwOGx4Pl0gKCVwUykgZnJvbSBbPCUwOGx4 Pl0gKCVwUylcbiIsIHdoZXJlLCAodm9pZCAqKXdoZXJlLCBmcm9tLCAodm9pZCAqKWZyb20pOwor I2Vsc2UKKwlwcmludGsoIkZ1bmN0aW9uIGVudGVyZWQgYXQgWzwlMDhseD5dIGZyb20gWzwlMDhs eD5dXG4iLCB3aGVyZSwgZnJvbSk7CisjZW5kaWYKK30KKworLyoKKyAqIEJpbmFyeSBzZWFyY2gg aW4gdGhlIHVud2luZCBpbmRleC4gVGhlIGVudHJpZXMgZW50cmllcyBhcmUKKyAqIGd1YXJhbnRl ZWQgdG8gYmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBieSB0aGUgbGlua2VyLgorICovCitz dGF0aWMgc3RydWN0IHVud2luZF9pZHggKnNlYXJjaF9pbmRleCh1bnNpZ25lZCBsb25nIGFkZHIs CisJCQkJICAgICAgIHN0cnVjdCB1bndpbmRfaWR4ICpmaXJzdCwKKwkJCQkgICAgICAgc3RydWN0 IHVud2luZF9pZHggKmxhc3QpCit7CisJcHJfZGVidWcoIiVzKCUwOGx4LCAlcCwgJXApXG4iLCBf X2Z1bmNfXywgYWRkciwgZmlyc3QsIGxhc3QpOworCisJaWYgKGFkZHIgPCBmaXJzdC0+YWRkcikg eworCQlwcl93YXJuaW5nKCJ1bndpbmQ6IFVua25vd24gc3ltYm9sIGFkZHJlc3MgJTA4bHhcbiIs IGFkZHIpOworCQlyZXR1cm4gTlVMTDsKKwl9IGVsc2UgaWYgKGFkZHIgPj0gbGFzdC0+YWRkcikK KwkJcmV0dXJuIGxhc3Q7CisKKwl3aGlsZSAoZmlyc3QgPCBsYXN0IC0gMSkgeworCQlzdHJ1Y3Qg dW53aW5kX2lkeCAqbWlkID0gZmlyc3QgKyAoKGxhc3QgLSBmaXJzdCArIDEpID4+IDEpOworCisJ CWlmIChhZGRyIDwgbWlkLT5hZGRyKQorCQkJbGFzdCA9IG1pZDsKKwkJZWxzZQorCQkJZmlyc3Qg PSBtaWQ7CisJfQorCisJcmV0dXJuIGZpcnN0OworfQorCitzdGF0aWMgc3RydWN0IHVud2luZF9p ZHggKnVud2luZF9maW5kX2lkeCh1bnNpZ25lZCBsb25nIGFkZHIpCit7CisJc3RydWN0IHVud2lu ZF9pZHggKmlkeCA9IE5VTEw7CisKKwlwcl9kZWJ1ZygiJXMoJTA4bHgpXG4iLCBfX2Z1bmNfXywg YWRkcik7CisKKwlpZiAoaXNfa2VybmVsX3RleHQoYWRkcikpCisJCS8qIG1haW4gdW53aW5kIHRh YmxlICovCisJCWlkeCA9IHNlYXJjaF9pbmRleChhZGRyLCBfX3N0YXJ0X3Vud2luZF9pZHgsCisJ CQkJICAgX19zdG9wX3Vud2luZF9pZHggLSAxKTsKKwllbHNlIHsKKwkJLyogbW9kdWxlIHVud2lu ZGluZyBub3Qgc3VwcG9ydGVkICovCisJfQorCisJcHJfZGVidWcoIiVzOiBpZHggPSAlcFxuIiwg X19mdW5jX18sIGlkeCk7CisJcmV0dXJuIGlkeDsKK30KKworc3RhdGljIHVuc2lnbmVkIGxvbmcg dW53aW5kX2dldF9ieXRlKHN0cnVjdCB1bndpbmRfY3RybF9ibG9jayAqY3RybCkKK3sKKwl1bnNp Z25lZCBsb25nIHJldDsKKworCWlmIChjdHJsLT5lbnRyaWVzIDw9IDApIHsKKwkJcHJfd2Fybmlu ZygidW53aW5kOiBDb3JydXB0IHVud2luZCB0YWJsZVxuIik7CisJCXJldHVybiAwOworCX0KKwor CXJldCA9ICgqY3RybC0+aW5zbiA+PiAoY3RybC0+Ynl0ZSAqIDgpKSAmIDB4ZmY7CisKKwlpZiAo Y3RybC0+Ynl0ZSA9PSAwKSB7CisJCWN0cmwtPmluc24rKzsKKwkJY3RybC0+ZW50cmllcy0tOwor CQljdHJsLT5ieXRlID0gMzsKKwl9IGVsc2UKKwkJY3RybC0+Ynl0ZS0tOworCisJcmV0dXJuIHJl dDsKK30KKworLyoKKyAqIEV4ZWN1dGUgdGhlIGN1cnJlbnQgdW53aW5kIGluc3RydWN0aW9uLgor ICovCitzdGF0aWMgaW50IHVud2luZF9leGVjX2luc24oc3RydWN0IHVud2luZF9jdHJsX2Jsb2Nr ICpjdHJsKQoreworCXVuc2lnbmVkIGxvbmcgaW5zbiA9IHVud2luZF9nZXRfYnl0ZShjdHJsKTsK KworCXByX2RlYnVnKCIlczogaW5zbiA9ICUwOGx4XG4iLCBfX2Z1bmNfXywgaW5zbik7CisKKwlp ZiAoKGluc24gJiAweGMwKSA9PSAweDAwKQorCQljdHJsLT52cnNbU1BdICs9ICgoaW5zbiAmIDB4 M2YpIDw8IDIpICsgNDsKKwllbHNlIGlmICgoaW5zbiAmIDB4YzApID09IDB4NDApCisJCWN0cmwt PnZyc1tTUF0gLT0gKChpbnNuICYgMHgzZikgPDwgMikgKyA0OworCWVsc2UgaWYgKChpbnNuICYg MHhmMCkgPT0gMHg4MCkgeworCQl1bnNpZ25lZCBsb25nIG1hc2s7CisJCXVuc2lnbmVkIGxvbmcg KnZzcCA9ICh1bnNpZ25lZCBsb25nICopY3RybC0+dnJzW1NQXTsKKwkJaW50IGxvYWRfc3AsIHJl ZyA9IDQ7CisKKwkJaW5zbiA9IChpbnNuIDw8IDgpIHwgdW53aW5kX2dldF9ieXRlKGN0cmwpOwor CQltYXNrID0gaW5zbiAmIDB4MGZmZjsKKwkJaWYgKG1hc2sgPT0gMCkgeworCQkJcHJfd2Fybmlu ZygidW53aW5kOiAnUmVmdXNlIHRvIHVud2luZCcgaW5zdHJ1Y3Rpb24gJTA0bHhcbiIsCisJCQkJ ICAgaW5zbik7CisJCQlyZXR1cm4gLVVSQ19GQUlMVVJFOworCQl9CisKKwkJLyogcG9wIFI0LVIx NSBhY2NvcmRpbmcgdG8gbWFzayAqLworCQlsb2FkX3NwID0gbWFzayAmICgxIDw8ICgxMyAtIDQp KTsKKwkJd2hpbGUgKG1hc2spIHsKKwkJCWlmIChtYXNrICYgMSkKKwkJCQljdHJsLT52cnNbcmVn XSA9ICp2c3ArKzsKKwkJCW1hc2sgPj49IDE7CisJCQlyZWcrKzsKKwkJfQorCQlpZiAoIWxvYWRf c3ApCisJCQljdHJsLT52cnNbU1BdID0gKHVuc2lnbmVkIGxvbmcpdnNwOworCX0gZWxzZSBpZiAo KGluc24gJiAweGYwKSA9PSAweDkwICYmCisJCSAgIChpbnNuICYgMHgwZCkgIT0gMHgwZCkKKwkJ Y3RybC0+dnJzW1NQXSA9IGN0cmwtPnZyc1tpbnNuICYgMHgwZl07CisJZWxzZSBpZiAoKGluc24g JiAweGYwKSA9PSAweGEwKSB7CisJCXVuc2lnbmVkIGxvbmcgKnZzcCA9ICh1bnNpZ25lZCBsb25n ICopY3RybC0+dnJzW1NQXTsKKwkJaW50IHJlZzsKKworCQkvKiBwb3AgUjQtUls0K2JiYl0gKi8K KwkJZm9yIChyZWcgPSA0OyByZWcgPD0gNCArIChpbnNuICYgNyk7IHJlZysrKQorCQkJY3RybC0+ dnJzW3JlZ10gPSAqdnNwKys7CisJCWlmIChpbnNuICYgMHg4MCkKKwkJCWN0cmwtPnZyc1sxNF0g PSAqdnNwKys7CisJCWN0cmwtPnZyc1tTUF0gPSAodW5zaWduZWQgbG9uZyl2c3A7CisJfSBlbHNl IGlmIChpbnNuID09IDB4YjApIHsKKwkJaWYgKGN0cmwtPnZyc1tQQ10gPT0gMCkKKwkJCWN0cmwt PnZyc1tQQ10gPSBjdHJsLT52cnNbTFJdOworCQkvKiBubyBmdXJ0aGVyIHByb2Nlc3NpbmcgKi8K KwkJY3RybC0+ZW50cmllcyA9IDA7CisJfSBlbHNlIGlmIChpbnNuID09IDB4YjEpIHsKKwkJdW5z aWduZWQgbG9uZyBtYXNrID0gdW53aW5kX2dldF9ieXRlKGN0cmwpOworCQl1bnNpZ25lZCBsb25n ICp2c3AgPSAodW5zaWduZWQgbG9uZyAqKWN0cmwtPnZyc1tTUF07CisJCWludCByZWcgPSAwOwor CisJCWlmIChtYXNrID09IDAgfHwgbWFzayAmIDB4ZjApIHsKKwkJCXByX3dhcm5pbmcoInVud2lu ZDogU3BhcmUgZW5jb2RpbmcgJTA0bHhcbiIsCisJCQkgICAgICAgKGluc24gPDwgOCkgfCBtYXNr KTsKKwkJCXJldHVybiAtVVJDX0ZBSUxVUkU7CisJCX0KKworCQkvKiBwb3AgUjAtUjMgYWNjb3Jk aW5nIHRvIG1hc2sgKi8KKwkJd2hpbGUgKG1hc2spIHsKKwkJCWlmIChtYXNrICYgMSkKKwkJCQlj dHJsLT52cnNbcmVnXSA9ICp2c3ArKzsKKwkJCW1hc2sgPj49IDE7CisJCQlyZWcrKzsKKwkJfQor CQljdHJsLT52cnNbU1BdID0gKHVuc2lnbmVkIGxvbmcpdnNwOworCX0gZWxzZSBpZiAoaW5zbiA9 PSAweGIyKSB7CisJCXVuc2lnbmVkIGxvbmcgdWxlYjEyOCA9IHVud2luZF9nZXRfYnl0ZShjdHJs KTsKKworCQljdHJsLT52cnNbU1BdICs9IDB4MjA0ICsgKHVsZWIxMjggPDwgMik7CisJfSBlbHNl IHsKKwkJcHJfd2FybmluZygidW53aW5kOiBVbmhhbmRsZWQgaW5zdHJ1Y3Rpb24gJTAybHhcbiIs IGluc24pOworCQlyZXR1cm4gLVVSQ19GQUlMVVJFOworCX0KKworCXByX2RlYnVnKCIlczogZnAg PSAlMDhseCBzcCA9ICUwOGx4IGxyID0gJTA4bHggcGMgPSAlMDhseFxuIiwgX19mdW5jX18sCisJ CSBjdHJsLT52cnNbRlBdLCBjdHJsLT52cnNbU1BdLCBjdHJsLT52cnNbTFJdLCBjdHJsLT52cnNb UENdKTsKKworCXJldHVybiBVUkNfT0s7Cit9CisKKy8qCisgKiBVbndpbmQgYSBzaW5nbGUgZnJh bWUgc3RhcnRpbmcgd2l0aCAqc3AgZm9yIHRoZSBzeW1ib2wgYXQgKnBjLiBJdAorICogdXBkYXRl cyB0aGUgKnBjIGFuZCAqc3Agd2l0aCB0aGUgbmV3IHZhbHVlcy4KKyAqLworaW50IHVud2luZF9m cmFtZShzdHJ1Y3Qgc3RhY2tmcmFtZSAqZnJhbWUpCit7CisJdW5zaWduZWQgbG9uZyBoaWdoLCBs b3c7CisJc3RydWN0IHVud2luZF9pZHggKmlkeDsKKwlzdHJ1Y3QgdW53aW5kX2N0cmxfYmxvY2sg Y3RybDsKKworCS8qIG9ubHkgZ28gdG8gYSBoaWdoZXIgYWRkcmVzcyBvbiB0aGUgc3RhY2sgKi8K Kwlsb3cgPSBmcmFtZS0+c3A7CisJaGlnaCA9IEFMSUdOKGxvdywgVEhSRUFEX1NJWkUpOworCisJ cHJfZGVidWcoIiVzKHBjID0gJTA4bHggbHIgPSAlMDhseCBzcCA9ICUwOGx4KVxuIiwgX19mdW5j X18sCisJCSBmcmFtZS0+cGMsIGZyYW1lLT5sciwgZnJhbWUtPnNwKTsKKworCWlmICghaXNfa2Vy bmVsX3RleHQoZnJhbWUtPnBjKSkKKwkJcmV0dXJuIC1VUkNfRkFJTFVSRTsKKworCWlkeCA9IHVu d2luZF9maW5kX2lkeChmcmFtZS0+cGMpOworCWlmICghaWR4KSB7CisJCXByX3dhcm5pbmcoInVu d2luZDogSW5kZXggbm90IGZvdW5kICUwOGx4XG4iLCBmcmFtZS0+cGMpOworCQlyZXR1cm4gLVVS Q19GQUlMVVJFOworCX0KKworCWN0cmwudnJzW0ZQXSA9IGZyYW1lLT5mcDsKKwljdHJsLnZyc1tT UF0gPSBmcmFtZS0+c3A7CisJY3RybC52cnNbTFJdID0gZnJhbWUtPmxyOworCWN0cmwudnJzW1BD XSA9IDA7CisKKwlpZiAoaWR4LT5pbnNuID09IDEpCisJCS8qIGNhbid0IHVud2luZCAqLworCQly ZXR1cm4gLVVSQ19GQUlMVVJFOworCWVsc2UgaWYgKChpZHgtPmluc24gJiAweDgwMDAwMDAwKSA9 PSAwKQorCQkvKiBwcmVsMzEgdG8gdGhlIHVud2luZCB0YWJsZSAqLworCQljdHJsLmluc24gPSAo dW5zaWduZWQgbG9uZyAqKXByZWwzMV90b19hZGRyKCZpZHgtPmluc24pOworCWVsc2UgaWYgKChp ZHgtPmluc24gJiAweGZmMDAwMDAwKSA9PSAweDgwMDAwMDAwKQorCQkvKiBvbmx5IHBlcnNvbmFs aXR5IHJvdXRpbmUgMCBzdXBwb3J0ZWQgaW4gdGhlIGluZGV4ICovCisJCWN0cmwuaW5zbiA9ICZp ZHgtPmluc247CisJZWxzZSB7CisJCXByX3dhcm5pbmcoInVud2luZDogVW5zdXBwb3J0ZWQgcGVy c29uYWxpdHkgcm91dGluZSAlMDhseCBpbiB0aGUgaW5kZXggYXQgJXBcbiIsCisJCQkgICBpZHgt Pmluc24sIGlkeCk7CisJCXJldHVybiAtVVJDX0ZBSUxVUkU7CisJfQorCisJLyogY2hlY2sgdGhl IHBlcnNvbmFsaXR5IHJvdXRpbmUgKi8KKwlpZiAoKCpjdHJsLmluc24gJiAweGZmMDAwMDAwKSA9 PSAweDgwMDAwMDAwKSB7CisJCWN0cmwuYnl0ZSA9IDI7CisJCWN0cmwuZW50cmllcyA9IDE7CisJ fSBlbHNlIGlmICgoKmN0cmwuaW5zbiAmIDB4ZmYwMDAwMDApID09IDB4ODEwMDAwMDApIHsKKwkJ Y3RybC5ieXRlID0gMTsKKwkJY3RybC5lbnRyaWVzID0gMSArICgoKmN0cmwuaW5zbiAmIDB4MDBm ZjAwMDApID4+IDE2KTsKKwl9IGVsc2UgeworCQlwcl93YXJuaW5nKCJ1bndpbmQ6IFVuc3VwcG9y dGVkIHBlcnNvbmFsaXR5IHJvdXRpbmUgJTA4bHggYXQgJXBcbiIsCisJCQkgICAqY3RybC5pbnNu LCBjdHJsLmluc24pOworCQlyZXR1cm4gLVVSQ19GQUlMVVJFOworCX0KKworCXdoaWxlIChjdHJs LmVudHJpZXMgPiAwKSB7CisJCWludCB1cmMgPSB1bndpbmRfZXhlY19pbnNuKCZjdHJsKTsKKwkJ aWYgKHVyYyA8IDApCisJCQlyZXR1cm4gdXJjOworCQlpZiAoY3RybC52cnNbU1BdIDwgbG93IHx8 IGN0cmwudnJzW1NQXSA+PSBoaWdoKQorCQkJcmV0dXJuIC1VUkNfRkFJTFVSRTsKKwl9CisKKwlp ZiAoY3RybC52cnNbUENdID09IDApCisJCWN0cmwudnJzW1BDXSA9IGN0cmwudnJzW0xSXTsKKwor CS8qIGNoZWNrIGZvciBpbmZpbml0ZSBsb29wICovCisJaWYgKGZyYW1lLT5wYyA9PSBjdHJsLnZy c1tQQ10pCisJCXJldHVybiAtVVJDX0ZBSUxVUkU7CisKKwlmcmFtZS0+ZnAgPSBjdHJsLnZyc1tG UF07CisJZnJhbWUtPnNwID0gY3RybC52cnNbU1BdOworCWZyYW1lLT5sciA9IGN0cmwudnJzW0xS XTsKKwlmcmFtZS0+cGMgPSBjdHJsLnZyc1tQQ107CisKKwlyZXR1cm4gVVJDX09LOworfQorCit2 b2lkIHVud2luZF9iYWNrdHJhY2Uoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJc3RydWN0IHN0 YWNrZnJhbWUgZnJhbWU7CisJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBjdXJyZW50X3NwIGFzbSAo InNwIik7CisKKwlwcl9kZWJ1ZygiJXNcbiIsIF9fZnVuY19fKTsKKworCWlmIChyZWdzKSB7CisJ CWZyYW1lLmZwID0gcmVncy0+QVJNX2ZwOworCQlmcmFtZS5zcCA9IHJlZ3MtPkFSTV9zcDsKKwkJ ZnJhbWUubHIgPSByZWdzLT5BUk1fbHI7CisJCS8qIFBDIG1pZ2h0IGJlIGNvcnJ1cHRlZCwgdXNl IExSIGluIHRoYXQgY2FzZS4gKi8KKwkJZnJhbWUucGMgPSBpc19rZXJuZWxfdGV4dChyZWdzLT5B Uk1fcGMpCisJCQkgPyByZWdzLT5BUk1fcGMgOiByZWdzLT5BUk1fbHI7CisJfSBlbHNlIHsKKwkJ ZnJhbWUuc3AgPSBjdXJyZW50X3NwOworCQlmcmFtZS5sciA9ICh1bnNpZ25lZCBsb25nKV9fYnVp bHRpbl9yZXR1cm5fYWRkcmVzcygwKTsKKwkJZnJhbWUucGMgPSAodW5zaWduZWQgbG9uZyl1bndp bmRfYmFja3RyYWNlOworCX0KKworCXdoaWxlICgxKSB7CisJCWludCB1cmM7CisJCXVuc2lnbmVk IGxvbmcgd2hlcmUgPSBmcmFtZS5wYzsKKworCQl1cmMgPSB1bndpbmRfZnJhbWUoJmZyYW1lKTsK KwkJaWYgKHVyYyA8IDApCisJCQlicmVhazsKKwkJZHVtcF9iYWNrdHJhY2VfZW50cnkod2hlcmUs IGZyYW1lLnBjLCBmcmFtZS5zcCAtIDQpOworCX0KK30KKwordm9pZCBkdW1wX3N0YWNrKHZvaWQp Cit7CisJdW53aW5kX2JhY2t0cmFjZShOVUxMKTsKK30KKworc3RhdGljIGludCB1bndpbmRfaW5p dCh2b2lkKQoreworCXN0cnVjdCB1bndpbmRfaWR4ICppZHg7CisKKwkvKiBDb252ZXJ0IHRoZSBz eW1ib2wgYWRkcmVzc2VzIHRvIGFic29sdXRlIHZhbHVlcyAqLworCWZvciAoaWR4ID0gX19zdGFy dF91bndpbmRfaWR4OyBpZHggPCBfX3N0b3BfdW53aW5kX2lkeDsgaWR4KyspCisJCWlkeC0+YWRk ciA9IHByZWwzMV90b19hZGRyKCZpZHgtPmFkZHIpOworCisJcmV0dXJuIDA7Cit9Citjb3JlX2lu aXRjYWxsKHVud2luZF9pbml0KTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbWFjaC12aXJ0L0tj b25maWcgYi9hcmNoL2FybTY0L21hY2gtdmlydC9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjFmNDM2MDYKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L21h Y2gtdmlydC9LY29uZmlnCkBAIC0wLDAgKzEsMTUgQEAKK2lmIEFSQ0hfVklSVAorCitjb25maWcg QVJDSF9URVhUX0JBU0UKKwloZXgKKwlkZWZhdWx0IDB4NDAwMDAwMDAKKworY2hvaWNlCisJcHJv bXB0ICJBUk0gQm9hcmQgdHlwZSIKKworY29uZmlnIE1BQ0hfVklSVAorCWJvb2wgIkFSTSBRRU1V IHZpcnQiCisKK2VuZGNob2ljZQorCitlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9tYWNo LXZpcnQvTWFrZWZpbGUgYi9hcmNoL2FybTY0L21hY2gtdmlydC9NYWtlZmlsZQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTI0YTEwCi0tLSAvZGV2L251bGwKKysrIGIvYXJj aC9hcm02NC9tYWNoLXZpcnQvTWFrZWZpbGUKQEAgLTAsMCArMSwzIEBACitvYmoteSArPSBkZXZp Y2VzLm8gcmVzZXQubworCitsd2wteSArPSBsb3dsZXZlbC5vCmRpZmYgLS1naXQgYS9hcmNoL2Fy bTY0L21hY2gtdmlydC9kZXZpY2VzLmMgYi9hcmNoL2FybTY0L21hY2gtdmlydC9kZXZpY2VzLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk5ZjQ2MwotLS0gL2Rldi9udWxs CisrKyBiL2FyY2gvYXJtNjQvbWFjaC12aXJ0L2RldmljZXMuYwpAQCAtMCwwICsxLDMwIEBACisv KgorICogQ29weXJpZ2h0IChDKSAyMDE2IFJhcGhhw6tsIFBvZ2dpIDxwb2dnaS5yYXBoQGdtYWls LmNvbT4KKyAqCisgKiBHUEx2MiBvbmx5CisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2lu Y2x1ZGUgPGxpbnV4L2FtYmEvYnVzLmg+CisjaW5jbHVkZSA8YXNtL21lbW9yeS5oPgorI2luY2x1 ZGUgPG1hY2gvZGV2aWNlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2lvcG9ydC5oPgorCit2b2lkIHZp cnRfYWRkX2RkcmFtKHUzMiBzaXplKQoreworCWFybV9hZGRfbWVtX2RldmljZSgicmFtMCIsIDB4 NDAwMDAwMDAsIHNpemUpOworfQorCit2b2lkIHZpcnRfcmVnaXN0ZXJfdWFydCh1bnNpZ25lZCBp ZCkKK3sKKwlyZXNvdXJjZV9zaXplX3Qgc3RhcnQ7CisKKwlzd2l0Y2ggKGlkKSB7CisJY2FzZSAw OgorCQlzdGFydCA9IDB4MDkwMDAwMDA7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybjsK Kwl9CisJYW1iYV9hcGJfZGV2aWNlX2FkZChOVUxMLCAidWFydC1wbDAxMSIsIGlkLCBzdGFydCwg NDA5NiwgTlVMTCwgMCk7Cit9CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L21hY2gtdmlydC9pbmNs dWRlL21hY2gvZGVidWdfbGwuaCBiL2FyY2gvYXJtNjQvbWFjaC12aXJ0L2luY2x1ZGUvbWFjaC9k ZWJ1Z19sbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5YjA2OTIKLS0t IC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L21hY2gtdmlydC9pbmNsdWRlL21hY2gvZGVidWdf bGwuaApAQCAtMCwwICsxLDI0IEBACisvKgorICogQ29weXJpZ2h0IDIwMTMgSmVhbi1DaHJpc3Rv cGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9sQGpjcm9zb2Z0LmNvbT4KKyAqCisgKiBHUEx2 MiBvbmx5CisgKi8KKworI2lmbmRlZiBfX01BQ0hfREVCVUdfTExfSF9fCisjZGVmaW5lICAgX19N QUNIX0RFQlVHX0xMX0hfXworCisjaW5jbHVkZSA8bGludXgvYW1iYS9zZXJpYWwuaD4KKyNpbmNs dWRlIDxpby5oPgorCisjZGVmaW5lIERFQlVHX0xMX1BIWVNfQkFTRQkJMHgxMDAwMDAwMAorI2Rl ZmluZSBERUJVR19MTF9QSFlTX0JBU0VfUlMxCQkweDFjMDAwMDAwCisKKyNpZmRlZiBNUAorI2Rl ZmluZSBERUJVR19MTF9VQVJUX0FERFIgREVCVUdfTExfUEhZU19CQVNFCisjZWxzZQorI2RlZmlu ZSBERUJVR19MTF9VQVJUX0FERFIgREVCVUdfTExfUEhZU19CQVNFX1JTMQorI2VuZGlmCisKKyNp bmNsdWRlIDxhc20vZGVidWdfbGxfcGwwMTEuaD4KKworI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNo L2FybTY0L21hY2gtdmlydC9pbmNsdWRlL21hY2gvZGV2aWNlcy5oIGIvYXJjaC9hcm02NC9tYWNo LXZpcnQvaW5jbHVkZS9tYWNoL2RldmljZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi45ODcyYzYxCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9tYWNoLXZpcnQv aW5jbHVkZS9tYWNoL2RldmljZXMuaApAQCAtMCwwICsxLDEzIEBACisvKgorICogQ29weXJpZ2h0 IChDKSAyMDE2IFJhcGhhw6tsIFBvZ2dpIDxwb2dnaS5yYXBoQGdtYWlsLmNvbT4KKyAqCisgKiBH UEx2MiBvbmx5CisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0RFVklDRVNfSF9fCisjZGVmaW5l IF9fQVNNX0FSQ0hfREVWSUNFU19IX18KKwordm9pZCB2aXJ0X2FkZF9kZHJhbSh1MzIgc2l6ZSk7 Cit2b2lkIHZpcnRfcmVnaXN0ZXJfdWFydCh1bnNpZ25lZCBpZCk7CisKKyNlbmRpZiAvKiBfX0FT TV9BUkNIX0RFVklDRVNfSF9fICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L21hY2gtdmlydC9s b3dsZXZlbC5jIGIvYXJjaC9hcm02NC9tYWNoLXZpcnQvbG93bGV2ZWwuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjY5NWE1Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9h cm02NC9tYWNoLXZpcnQvbG93bGV2ZWwuYwpAQCAtMCwwICsxLDE5IEBACisvKgorICogQ29weXJp Z2h0IChDKSAyMDEzIEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvQGpj cm9zb2Z0LmNvbT4KKyAqCisgKiBHUEx2MiBvbmx5CisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5o PgorI2luY2x1ZGUgPGxpbnV4L3NpemVzLmg+CisjaW5jbHVkZSA8YXNtL2JhcmVib3gtYXJtLWhl YWQuaD4KKyNpbmNsdWRlIDxhc20vYmFyZWJveC1hcm0uaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVt X2luZm8uaD4KKwordm9pZCBiYXJlYm94X2FybV9yZXNldF92ZWN0b3Iodm9pZCkKK3sKKwlhcm1f Y3B1X2xvd2xldmVsX2luaXQoKTsKKwlhcm1fc2V0dXBfc3RhY2soU1RBQ0tfQkFTRSk7CisKKwli YXJlYm94X2FybV9lbnRyeSgweDQwMDAwMDAwLCBTWl81MTJNLCBOVUxMKTsKK30KZGlmZiAtLWdp dCBhL2FyY2gvYXJtNjQvbWFjaC12aXJ0L3Jlc2V0LmMgYi9hcmNoL2FybTY0L21hY2gtdmlydC9y ZXNldC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiODk1ZWIKLS0tIC9k ZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L21hY2gtdmlydC9yZXNldC5jCkBAIC0wLDAgKzEsMjQg QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgUmFwaGHDq2wgUG9nZ2kgPHBvZ2dpLnJhcGhA Z21haWwuY29tPgorICoKKyAqIEdQTHYyIG9ubHkKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+ CisjaW5jbHVkZSA8aW8uaD4KKyNpbmNsdWRlIDxpbml0Lmg+CisjaW5jbHVkZSA8cmVzdGFydC5o PgorI2luY2x1ZGUgPG1hY2gvZGV2aWNlcy5oPgorCitzdGF0aWMgdm9pZCB2aXJ0X3Jlc2V0X3Nv YyhzdHJ1Y3QgcmVzdGFydF9oYW5kbGVyICpyc3QpCit7CisJaGFuZygpOworfQorCitzdGF0aWMg aW50IHJlc3RhcnRfcmVnaXN0ZXJfZmVhdHVyZSh2b2lkKQoreworCXJlc3RhcnRfaGFuZGxlcl9y ZWdpc3Rlcl9mbih2aXJ0X3Jlc2V0X3NvYyk7CisKKwlyZXR1cm4gMDsKK30KK2NvcmVkZXZpY2Vf aW5pdGNhbGwocmVzdGFydF9yZWdpc3Rlcl9mZWF0dXJlKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJt NjQvcGJsL01ha2VmaWxlIGIvYXJjaC9hcm02NC9wYmwvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMWZmMzlkYgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJt NjQvcGJsL01ha2VmaWxlCkBAIC0wLDAgKzEsNTggQEAKKworc3VmZml4XyQoQ09ORklHX0lNQUdF X0NPTVBSRVNTSU9OX0daSVApID0gZ3ppcAorc3VmZml4XyQoQ09ORklHX0lNQUdFX0NPTVBSRVNT SU9OX0xaTykJPSBsem8KK3N1ZmZpeF8kKENPTkZJR19JTUFHRV9DT01QUkVTU0lPTl9MWjQpCT0g bHo0CitzdWZmaXhfJChDT05GSUdfSU1BR0VfQ09NUFJFU1NJT05fWFpLRVJOKQk9IHh6a2Vybgor c3VmZml4XyQoQ09ORklHX0lNQUdFX0NPTVBSRVNTSU9OX05PTkUpCT0gc2hpcHBlZAorCitPQkpD T1BZRkxBR1NfemJhcmVib3guYmluID0gLU8gYmluYXJ5CitwaWdneV9vIDo9IHBpZ2d5LiQoc3Vm Zml4X3kpLm8KKwordGFyZ2V0cyA6PSB6YmFyZWJveC5sZHMgemJhcmVib3ggemJhcmVib3guYmlu IHpiYXJlYm94LlMgXAorCSAgICQocGlnZ3lfbykgcGlnZ3kuJChzdWZmaXhfeSkKKworIyBNYWtl IHN1cmUgZmlsZXMgYXJlIHJlbW92ZWQgZHVyaW5nIGNsZWFuCitleHRyYS15ICAgICAgICs9IHBp Z2d5Lmd6aXAgcGlnZ3kubHo0IHBpZ2d5Lmx6byBwaWdneS5sem1hIHBpZ2d5Lnh6a2VybiBwaWdn eS5zaGlwcGVkIHpiYXJlYm94Lm1hcAorCitpZmVxICgkKENPTkZJR19DUFVfQklHX0VORElBTiks eSkKK0ZJWF9TSVpFPS1iCitlbHNlCitGSVhfU0laRT0KK2VuZGlmCisKKyQob2JqKS96YmFyZWJv eC5iaW46CSQob2JqKS96YmFyZWJveCBGT1JDRQorCSQoY2FsbCBpZl9jaGFuZ2VkLG9iamNvcHkp CisJJChjYWxsIGNtZCxjaGVja19maWxlX3NpemUsJEAsJChDT05GSUdfQkFSRUJPWF9NQVhfSU1B R0VfU0laRSkpCisJJChRKSQoa2VjaG8pICcgIEJhcmVib3g6IGZpeCBzaXplJworCSQoUSkkKG9i anRyZWUpL3NjcmlwdHMvZml4X3NpemUgLWkgLWYgJChvYmp0cmVlKS8kQCAkKEZJWF9TSVpFKQor CSQoUSkkKGtlY2hvKSAnICBCYXJlYm94OiAkQCBpcyByZWFkeScKKworJChvYmopL3piYXJlYm94 LlM6ICQob2JqKS96YmFyZWJveCBGT1JDRQorCSQoY2FsbCBpZl9jaGFuZ2VkLGRpc2FzbSkKKwor UEJMX0NQUEZMQUdTCQkrPSAtZmRhdGEtc2VjdGlvbnMgLWZmdW5jdGlvbi1zZWN0aW9ucworTERG TEFHU196YmFyZWJveAk6PSAtTWFwICQob2JqKS96YmFyZWJveC5tYXAgLS1nYy1zZWN0aW9ucwor aWZkZWYgQ09ORklHX1BCTF9SRUxPQ0FUQUJMRQorTERGTEFHU196YmFyZWJveCArPSAtcGllCitl bHNlCitMREZMQUdTX3piYXJlYm94ICs9IC1zdGF0aWMKK2VuZGlmCit6YmFyZWJveC1jb21tb24g Oj0gJChiYXJlYm94LXBibC1jb21tb24pICQob2JqKS8kKHBpZ2d5X28pCit6YmFyZWJveC1sZHMg Oj0gJChvYmopL3piYXJlYm94LmxkcworCiskKHpiYXJlYm94LWxkcyk6ICQob2JqKS8uLi9saWIv cGJsLmxkcy5TIEZPUkNFCisJJChjYWxsIGlmX2NoYW5nZWRfZGVwLGNwcF9sZHNfUykKKworcXVp ZXRfY21kX3piYXJlYm94X18gPz0gTEQgICAgICAkQAorICAgICAgY21kX3piYXJlYm94X18gPz0g JChMRCkgJChMREZMQUdTKSAkKExERkxBR1NfemJhcmVib3gpIC1vICRAIFwKKyAgICAgIC1lIHBi bF9zdGFydCAtVCAkKHpiYXJlYm94LWxkcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICAgICAtLXN0YXJ0LWdyb3VwICQoemJhcmVib3gtY29tbW9uKSAtLWVuZC1ncm91cCAgICAg ICAgICAgICAgICAgXAorICAgICAgJChmaWx0ZXItb3V0ICQoemJhcmVib3gtbGRzKSAkKHpiYXJl Ym94LWNvbW1vbikgRk9SQ0UgLCReKQorCiskKG9iaikvemJhcmVib3g6ICQoemJhcmVib3gtbGRz KSAkKHpiYXJlYm94LWNvbW1vbikgRk9SQ0UKKwkkKGNhbGwgaWZfY2hhbmdlZCx6YmFyZWJveF9f KQorCiskKG9iaikvcGlnZ3kuJChzdWZmaXhfeSk6ICQob2JqKS8uLi8uLi8uLi9iYXJlYm94LmJp biBGT1JDRQorCSQoY2FsbCBpZl9jaGFuZ2VkLCQoc3VmZml4X3kpKQorCiskKG9iaikvJChwaWdn eV9vKTogJChvYmopL3BpZ2d5LiQoc3VmZml4X3kpIEZPUkNFCmRpZmYgLS1naXQgYS9hcmNoL2Fy bTY0L3BibC9waWdneS5nemlwLlMgYi9hcmNoL2FybTY0L3BibC9waWdneS5nemlwLlMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg0NGM3NwotLS0gL2Rldi9udWxsCisrKyBi L2FyY2gvYXJtNjQvcGJsL3BpZ2d5Lmd6aXAuUwpAQCAtMCwwICsxLDYgQEAKKwkuc2VjdGlvbiAu cGlnZ3lkYXRhLCNhbGxvYworCS5nbG9ibCAgaW5wdXRfZGF0YQoraW5wdXRfZGF0YToKKwkuaW5j YmluICJhcmNoL2FybTY0L3BibC9waWdneS5nemlwIgorCS5nbG9ibCAgaW5wdXRfZGF0YV9lbmQK K2lucHV0X2RhdGFfZW5kOgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9wYmwvcGlnZ3kubHo0LlMg Yi9hcmNoL2FybTY0L3BibC9waWdneS5sejQuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5kYjJhMDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9wYmwvcGlnZ3ku bHo0LlMKQEAgLTAsMCArMSw2IEBACisJLnNlY3Rpb24gLnBpZ2d5ZGF0YSwjYWxsb2MKKwkuZ2xv YmwJaW5wdXRfZGF0YQoraW5wdXRfZGF0YToKKwkuaW5jYmluCSJhcmNoL2FybTY0L3BibC9waWdn eS5sejQiCisJLmdsb2JsCWlucHV0X2RhdGFfZW5kCitpbnB1dF9kYXRhX2VuZDoKZGlmZiAtLWdp dCBhL2FyY2gvYXJtNjQvcGJsL3BpZ2d5Lmx6by5TIGIvYXJjaC9hcm02NC9wYmwvcGlnZ3kubHpv LlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE2YzI4OQotLS0gL2Rldi9u dWxsCisrKyBiL2FyY2gvYXJtNjQvcGJsL3BpZ2d5Lmx6by5TCkBAIC0wLDAgKzEsNiBAQAorCS5z ZWN0aW9uIC5waWdneWRhdGEsI2FsbG9jCisJLmdsb2JsCWlucHV0X2RhdGEKK2lucHV0X2RhdGE6 CisJLmluY2JpbgkiYXJjaC9hcm02NC9wYmwvcGlnZ3kubHpvIgorCS5nbG9ibAlpbnB1dF9kYXRh X2VuZAoraW5wdXRfZGF0YV9lbmQ6CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L3BibC9waWdneS5z aGlwcGVkLlMgYi9hcmNoL2FybTY0L3BibC9waWdneS5zaGlwcGVkLlMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ2MTI1OQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJt NjQvcGJsL3BpZ2d5LnNoaXBwZWQuUwpAQCAtMCwwICsxLDYgQEAKKwkuc2VjdGlvbiAucGlnZ3lk YXRhLCNhbGxvYworCS5nbG9ibCAgaW5wdXRfZGF0YQoraW5wdXRfZGF0YToKKwkuaW5jYmluICJh cmNoL2FybTY0L3BibC9waWdneS5zaGlwcGVkIgorCS5nbG9ibCAgaW5wdXRfZGF0YV9lbmQKK2lu cHV0X2RhdGFfZW5kOgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9wYmwvcGlnZ3kueHprZXJuLlMg Yi9hcmNoL2FybTY0L3BibC9waWdneS54emtlcm4uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5kNGYyYmZiCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9wYmwvcGln Z3kueHprZXJuLlMKQEAgLTAsMCArMSw2IEBACisJLnNlY3Rpb24gLnBpZ2d5ZGF0YSwjYWxsb2MK KwkuZ2xvYmwJaW5wdXRfZGF0YQoraW5wdXRfZGF0YToKKwkuaW5jYmluCSJhcmNoL2FybTY0L3Bi bC9waWdneS54emtlcm4iCisJLmdsb2JsCWlucHV0X2RhdGFfZW5kCitpbnB1dF9kYXRhX2VuZDoK LS0gCjIuMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KYmFyZWJveCBtYWlsaW5nIGxpc3QKYmFyZWJveEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vYmFyZWJveAo=