From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1cuzeN-0007YO-JO for barebox@lists.infradead.org; Mon, 03 Apr 2017 10:56:39 +0000 From: Steffen Trumtrar Date: Mon, 3 Apr 2017 12:55:20 +0200 Message-Id: <20170403105523.16797-5-s.trumtrar@pengutronix.de> In-Reply-To: <20170403105523.16797-1-s.trumtrar@pengutronix.de> References: <20170403105523.16797-1-s.trumtrar@pengutronix.de> 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 4/7] ARM: socfpga: add arria10 support To: barebox@lists.infradead.org Cc: Steffen Trumtrar U2lnbmVkLW9mZi1ieTogU3RlZmZlbiBUcnVtdHJhciA8cy50cnVtdHJhckBwZW5ndXRyb25peC5k ZT4KLS0tCiBhcmNoL2FybS9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgNiArLQogYXJjaC9hcm0vbWFjaC1zb2NmcGdhL0tjb25maWcgICAgICAgICAgICAgICAg ICAgICAgfCAgMTggKwogYXJjaC9hcm0vbWFjaC1zb2NmcGdhL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICAgfCAgMTAgKy0KIGFyY2gvYXJtL21hY2gtc29jZnBnYS9hcnJpYTEwLWJvb3Rzb3Vy Y2UuYyAgICAgICAgIHwgIDUzICsrCiBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJyaWExMC1jbG9j ay1tYW5hZ2VyLmMgICAgICB8IDgwNyArKysrKysrKysrKysrKysrKysrKysKIGFyY2gvYXJtL21h Y2gtc29jZnBnYS9hcnJpYTEwLWdlbmVyaWMuYyAgICAgICAgICAgIHwgIDg1ICsrKwogYXJjaC9h cm0vbWFjaC1zb2NmcGdhL2FycmlhMTAtaW5pdC5jICAgICAgICAgICAgICAgfCAyNzUgKysrKysr KwogYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2FycmlhMTAtcmVzZXQtbWFuYWdlci5jICAgICAgfCA0 MjIgKysrKysrKysrKysKIGFyY2gvYXJtL21hY2gtc29jZnBnYS9hcnJpYTEwLXNkcmFtLmMgICAg ICAgICAgICAgIHwgNTU3ICsrKysrKysrKysrKysrCiBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvY3lj bG9uZTUtYm9vdHNvdXJjZS5jICAgICAgICB8ICA0NSArLQogYXJjaC9hcm0vbWFjaC1zb2NmcGdh L2dlbmVyaWMuYyAgICAgICAgICAgICAgICAgICAgfCAxMDQgLS0tCiAuLi4vaW5jbHVkZS9tYWNo L2FycmlhMTAtY2xvY2stbWFuYWdlci5oICAgICAgICAgICB8IDI0OSArKysrKysrCiAuLi4vYXJt L21hY2gtc29jZnBnYS9pbmNsdWRlL21hY2gvYXJyaWExMC1waW5tdXguaCB8IDEyOCArKysrCiBh cmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtcmVncy5oICB8IDExNCAr KysKIC4uLi9pbmNsdWRlL21hY2gvYXJyaWExMC1yZXNldC1tYW5hZ2VyLmggICAgICAgICAgIHwg MTE5ICsrKwogYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9hcnJpYTEwLXNkcmFt LmggfCAzNTMgKysrKysrKysrCiAuLi4vaW5jbHVkZS9tYWNoL2FycmlhMTAtc3lzdGVtLW1hbmFn ZXIuaCAgICAgICAgICB8ICA5NyArKysKIGFyY2gvYXJtL21hY2gtc29jZnBnYS9pbmNsdWRlL21h Y2gvZ2VuZXJpYy5oICAgICAgIHwgIDM1ICsKIGFyY2gvYXJtL21hY2gtc29jZnBnYS94bG9hZC5j ICAgICAgICAgICAgICAgICAgICAgIHwgIDkyICstLQogaW1hZ2VzL01ha2VmaWxlLnNvY2ZwZ2Eg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKwogc2NyaXB0cy9zb2NmcGdhX21raW1h Z2UuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc2NyaXB0cy9zb2NmcGdhX3ht bF90b19jb25maWcuc2ggICAgICAgICAgICAgICAgICAgfCAgODYgKysrCiAyMiBmaWxlcyBjaGFu Z2VkLCAzNDY1IGluc2VydGlvbnMoKyksIDE5OSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJyaWExMC1ib290c291cmNlLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJyaWExMC1jbG9jay1tYW5hZ2VyLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJyaWExMC1nZW5lcmlj LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJyaWExMC1pbml0 LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJyaWExMC1yZXNl dC1tYW5hZ2VyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJy aWExMC1zZHJhbS5jCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2dl bmVyaWMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtc29jZnBnYS9pbmNsdWRl L21hY2gvYXJyaWExMC1jbG9jay1tYW5hZ2VyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2Fy bS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtcGlubXV4LmgKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtcmVncy5o CiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9h cnJpYTEwLXJlc2V0LW1hbmFnZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gt c29jZnBnYS9pbmNsdWRlL21hY2gvYXJyaWExMC1zZHJhbS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg YXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9hcnJpYTEwLXN5c3RlbS1tYW5hZ2Vy LmgKIGNyZWF0ZSBtb2RlIDEwMDc1NSBzY3JpcHRzL3NvY2ZwZ2FfeG1sX3RvX2NvbmZpZy5zaAoK ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL0tjb25maWcgYi9hcmNoL2FybS9LY29uZmlnCmluZGV4IGU0 NjYzZWEyNjg3Mi4uNjFjN2Q2YzI3NWY4IDEwMDY0NAotLS0gYS9hcmNoL2FybS9LY29uZmlnCisr KyBiL2FyY2gvYXJtL0tjb25maWcKQEAgLTE3Niw3ICsxNzYsNyBAQCBjb25maWcgQVJDSF9ST0NL Q0hJUAogCXNlbGVjdCBBUkNIX0hBU19MMlgwCiAKIGNvbmZpZyBBUkNIX1NPQ0ZQR0EKLQlib29s ICJBbHRlcmEgU09DRlBHQSBjeWNsb25lNSIKKwlib29sICJBbHRlcmEgU09DRlBHQSIKIAlzZWxl Y3QgSEFTX0RFQlVHX0xMCiAJc2VsZWN0IEFSTV9TTVBfVFdECiAJc2VsZWN0IENQVV9WNwpAQCAt MTg0LDggKzE4NCw4IEBAIGNvbmZpZyBBUkNIX1NPQ0ZQR0EKIAlzZWxlY3QgQ0xLREVWX0xPT0tV UAogCXNlbGVjdCBHUElPTElCCiAJc2VsZWN0IEhBVkVfUEJMX01VTFRJX0lNQUdFUwotCXNlbGVj dCBPRkRFVklDRSBpZiAhQVJDSF9TT0NGUEdBX1hMT0FECi0Jc2VsZWN0IE9GVFJFRSBpZiAhQVJD SF9TT0NGUEdBX1hMT0FECisJc2VsZWN0IE9GREVWSUNFIGlmICEoQVJDSF9TT0NGUEdBX1hMT0FE ICYmIEFSQ0hfU09DRlBHQV9DWUNMT05FNSkKKwlzZWxlY3QgT0ZUUkVFIGlmICEoQVJDSF9TT0NG UEdBX1hMT0FEICYmIEFSQ0hfU09DRlBHQV9DWUNMT05FNSkKIAogY29uZmlnIEFSQ0hfUzNDMjR4 eAogCWJvb2wgIlNhbXN1bmcgUzNDMjQxMCwgUzNDMjQ0MCIKZGlmZiAtLWdpdCBhL2FyY2gvYXJt L21hY2gtc29jZnBnYS9LY29uZmlnIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL0tjb25maWcKaW5k ZXggMDRiNTQxNmI2NDUyLi4wMDM1NzRiYThkNjUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gt c29jZnBnYS9LY29uZmlnCisrKyBiL2FyY2gvYXJtL21hY2gtc29jZnBnYS9LY29uZmlnCkBAIC0x MiwxNiArMTIsMzQgQEAgY29uZmlnIEFSQ0hfVEVYVF9CQVNFCiAJaGV4CiAJZGVmYXVsdCAweDAw MTAwMDAwIGlmIE1BQ0hfU09DRlBHQV9DWUNMT05FNQogCitjb21tZW50ICJBbHRlcmEgU29DRlBH QSBTeXN0ZW0tb24tQ2hpcCIKKworY29uZmlnIEFSQ0hfU09DRlBHQV9DWUNMT05FNQorCWJvb2wK KwlzZWxlY3QgQ1BVX1Y3CisKK2NvbmZpZyBBUkNIX1NPQ0ZQR0FfQVJSSUExMAorCWJvb2wKKwlz ZWxlY3QgQ1BVX1Y3CisKIGNvbmZpZyBNQUNIX1NPQ0ZQR0FfQUxURVJBX1NPQ0RLCisJc2VsZWN0 IEhBVkVfREVGQVVMVF9FTlZJUk9OTUVOVF9ORVcKKwlzZWxlY3QgQVJDSF9TT0NGUEdBX0NZQ0xP TkU1CiAJYm9vbCAiQWx0ZXJhIFNvQ0ZQR0EgRGV2ZWxvcG1lbnQgS2l0IgogCiBjb25maWcgTUFD SF9TT0NGUEdBX0VCVl9TT0NSQVRFUworCXNlbGVjdCBIQVZFX0RFRkFVTFRfRU5WSVJPTk1FTlRf TkVXCisJc2VsZWN0IEFSQ0hfU09DRlBHQV9DWUNMT05FNQogCWJvb2wgIkVCViBTb2NyYXRlcyIK IAogY29uZmlnIE1BQ0hfU09DRlBHQV9URVJBU0lDX0RFMF9OQU5PX1NPQworCXNlbGVjdCBIQVZF X0RFRkFVTFRfRU5WSVJPTk1FTlRfTkVXCisJc2VsZWN0IEFSQ0hfU09DRlBHQV9DWUNMT05FNQog CWJvb2wgIlRlcmFzaWMgREUwLU5BTk8tU29DIGFrYSBBdGxhcyIKIAogY29uZmlnIE1BQ0hfU09D RlBHQV9URVJBU0lDX1NPQ0tJVAorCXNlbGVjdCBIQVZFX0RFRkFVTFRfRU5WSVJPTk1FTlRfTkVX CisJc2VsZWN0IEFSQ0hfU09DRlBHQV9DWUNMT05FNQogCWJvb2wgIlRlcmFzaWMgU29DS2l0Igog CiBlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL01ha2VmaWxlIGIvYXJj aC9hcm0vbWFjaC1zb2NmcGdhL01ha2VmaWxlCmluZGV4IDMwYjc5NmRkM2I0Zi4uY2JiNDdmYTIw NmYyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvTWFrZWZpbGUKKysrIGIvYXJj aC9hcm0vbWFjaC1zb2NmcGdhL01ha2VmaWxlCkBAIC0xLDQgKzEsOCBAQAotcGJsLXkgKz0gY3lj bG9uZTUtaW5pdC5vIGN5Y2xvbmU1LWZyZWV6ZS1jb250cm9sbGVyLm8gY3ljbG9uZTUtc2Nhbi1t YW5hZ2VyLm8gY3ljbG9uZTUtc3lzdGVtLW1hbmFnZXIubwotcGJsLXkgKz0gY3ljbG9uZTUtY2xv Y2stbWFuYWdlci5vCi1vYmoteSArPSBjeWNsb25lNS1nZW5lcmljLm8gbmljMzAxLm8gY3ljbG9u ZTUtYm9vdHNvdXJjZS5vIGN5Y2xvbmU1LXJlc2V0LW1hbmFnZXIubworcGJsLSQoQ09ORklHX0FS Q0hfU09DRlBHQV9DWUNMT05FNSkgKz0gY3ljbG9uZTUtaW5pdC5vIGN5Y2xvbmU1LWZyZWV6ZS1j b250cm9sbGVyLm8gY3ljbG9uZTUtc2Nhbi1tYW5hZ2VyLm8gY3ljbG9uZTUtc3lzdGVtLW1hbmFn ZXIubworcGJsLSQoQ09ORklHX0FSQ0hfU09DRlBHQV9DWUNMT05FNSkgKz0gY3ljbG9uZTUtY2xv Y2stbWFuYWdlci5vCitvYmotJChDT05GSUdfQVJDSF9TT0NGUEdBX0NZQ0xPTkU1KSArPSBjeWNs b25lNS1nZW5lcmljLm8gbmljMzAxLm8gY3ljbG9uZTUtYm9vdHNvdXJjZS5vIGN5Y2xvbmU1LXJl c2V0LW1hbmFnZXIubworCitwYmwtJChDT05GSUdfQVJDSF9TT0NGUEdBX0FSUklBMTApICs9IGFy cmlhMTAtaW5pdC5vIGFycmlhMTAtY2xvY2stbWFuYWdlci5vIGFycmlhMTAtc2RyYW0ubyBhcnJp YTEwLXJlc2V0LW1hbmFnZXIubyBhcnJpYTEwLWJvb3Rzb3VyY2Uubworb2JqLSQoQ09ORklHX0FS Q0hfU09DRlBHQV9BUlJJQTEwKSArPSBhcnJpYTEwLWJvb3Rzb3VyY2UubyBhcnJpYTEwLWdlbmVy aWMubyBhcnJpYTEwLXJlc2V0LW1hbmFnZXIubworCiBvYmotJChDT05GSUdfQVJDSF9TT0NGUEdB X1hMT0FEKSArPSB4bG9hZC5vCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJy aWExMC1ib290c291cmNlLmMgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJyaWExMC1ib290c291 cmNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yNmFmNjRhMWE0 MDgKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJyaWExMC1ib290 c291cmNlLmMKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBv ZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5o PgorI2luY2x1ZGUgPGJvb3Rzb3VyY2UuaD4KKyNpbmNsdWRlIDxpbml0Lmg+CisjaW5jbHVkZSA8 aW8uaD4KKyNpbmNsdWRlIDxtYWNoL2FycmlhMTAtc3lzdGVtLW1hbmFnZXIuaD4KKworc3RhdGlj IGludCBhcnJpYTEwX2Jvb3Rfc2F2ZV9sb2Modm9pZCkKK3sKKwllbnVtIGJvb3Rzb3VyY2Ugc3Jj ID0gQk9PVFNPVVJDRV9VTktOT1dOOworCXVpbnQzMl90IHZhbDsKKworCXZhbCA9IHJlYWRsKEFS UklBMTBfU1lTTUdSX0JPT1RJTkZPKTsKKworCXN3aXRjaCAoKHZhbCAmIDB4NzAwMCkgPj4gMTIp IHsKKwljYXNlIDA6CisJCS8qIHJlc2VydmVkICovCisJCWJyZWFrOworCWNhc2UgMToKKwkJLyog RlBHQSwgY3VycmVudGx5IG5vdCBkZWNvZGVkICovCisJCWJyZWFrOworCWNhc2UgMjoKKwljYXNl IDM6CisJCXNyYyA9IEJPT1RTT1VSQ0VfTkFORDsKKwkJYnJlYWs7CisJY2FzZSA0OgorCWNhc2Ug NToKKwkJc3JjID0gQk9PVFNPVVJDRV9NTUM7CisJCWJyZWFrOworCWNhc2UgNjoKKwljYXNlIDc6 CisJCXNyYyA9IEJPT1RTT1VSQ0VfU1BJOworCQlicmVhazsKKwl9CisKKwlib290c291cmNlX3Nl dChzcmMpOworCWJvb3Rzb3VyY2Vfc2V0X2luc3RhbmNlKDApOworCisJcmV0dXJuIDA7Cit9Citj b3JlX2luaXRjYWxsKGFycmlhMTBfYm9vdF9zYXZlX2xvYyk7CmRpZmYgLS1naXQgYS9hcmNoL2Fy bS9tYWNoLXNvY2ZwZ2EvYXJyaWExMC1jbG9jay1tYW5hZ2VyLmMgYi9hcmNoL2FybS9tYWNoLXNv Y2ZwZ2EvYXJyaWExMC1jbG9jay1tYW5hZ2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi5kMGM0NDJhZDFiZjUKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9t YWNoLXNvY2ZwZ2EvYXJyaWExMC1jbG9jay1tYW5hZ2VyLmMKQEAgLTAsMCArMSw4MDcgQEAKKy8q CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWx0ZXJhIENvcnBvcmF0aW9uIDx3d3cuYWx0ZXJhLmNv bT4KKyAqCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjoJR1BMLTIuMCsKKyAqLworCisjaW5j bHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8bWFjaC9hcnJp YTEwLXJlZ3MuaD4KKyNpbmNsdWRlIDxtYWNoL2FycmlhMTAtY2xvY2stbWFuYWdlci5oPgorCitz dGF0aWMgY29uc3Qgc3RydWN0IGFycmlhMTBfY2xvY2tfbWFuYWdlciAqYXJyaWExMF9jbGttZ3Jf YmFzZSA9CisJKHZvaWQgKilBUlJJQTEwX0NMS01HUl9BRERSOworCitzdGF0aWMgdWludDMyX3Qg ZW9zYzFfaHo7CitzdGF0aWMgdWludDMyX3QgY2JfaW50b3NjX2h6Oworc3RhdGljIHVpbnQzMl90 IGYyc19mcmVlX2h6OworI2RlZmluZSBMT0NLRURfTUFTSwkoQVJSSUExMF9DTEtNR1JfQ0xLTUdS X1NUQVRfTUFJTlBMTExPQ0tFRF9TRVRfTVNLIHwgXAorCQkJIEFSUklBMTBfQ0xLTUdSX0NMS01H Ul9TVEFUX1BFUlBMTExPQ0tFRF9TRVRfTVNLKQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJyaWEx MF9jbV93YWl0X2Zvcl9sb2NrKHVpbnQzMl90IG1hc2spCit7CisJcmVnaXN0ZXIgdWludDMyX3Qg aW50ZXJfdmFsOworCisJZG8geworCQlpbnRlcl92YWwgPSByZWFkbCgmYXJyaWExMF9jbGttZ3Jf YmFzZS0+c3RhdCkgJiBtYXNrOworCX0gd2hpbGUgKGludGVyX3ZhbCAhPSBtYXNrKTsKK30KKwor LyogZnVuY3Rpb24gdG8gcG9sbCBpbiB0aGUgZnNtIGJ1c3kgYml0ICovCitzdGF0aWMgaW5saW5l IHZvaWQgYXJyaWExMF9jbV93YWl0NGZzbSh2b2lkKQoreworCXJlZ2lzdGVyIHVpbnQzMl90IGlu dGVyX3ZhbDsKKworCWRvIHsKKwkJaW50ZXJfdmFsID0gcmVhZGwoJmFycmlhMTBfY2xrbWdyX2Jh c2UtPnN0YXQpICYKKwkJCUFSUklBMTBfQ0xLTUdSX0NMS01HUl9TVEFUX0JVU1lfU0VUX01TSzsK Kwl9IHdoaWxlIChpbnRlcl92YWwpOworfQorCitzdGF0aWMgdWludDMyX3QgYXJyaWExMF9jbV9n ZXRfbWFpbl92Y28odm9pZCkKK3sKKwl1aW50MzJfdCB2Y28xLCBzcmNfaHosIG51bWVyLCBkZW5v bSwgdmNvOworCXVpbnQzMl90IGNsa19zcmMgPSByZWFkbCgmYXJyaWExMF9jbGttZ3JfYmFzZS0+ bWFpbl9wbGxfdmNvMCk7CisKKwljbGtfc3JjID0gKGNsa19zcmMgPj4gQVJSSUExMF9DTEtNR1Jf TUFJTlBMTF9WQ08wX1BTUkNfTFNCKSAmCisJCUFSUklBMTBfQ0xLTUdSX01BSU5QTExfVkNPMF9Q U1JDX01TSzsKKworCWlmIChjbGtfc3JjID09IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfVkNPMF9Q U1JDX0VPU0MpIHsKKwkJc3JjX2h6ID0gZW9zYzFfaHo7CisJfSBlbHNlIGlmIChjbGtfc3JjID09 IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfVkNPMF9QU1JDX0VfSU5UT1NDKSB7CisJCXNyY19oeiA9 IGNiX2ludG9zY19oejsKKwl9IGVsc2UgaWYgKGNsa19zcmMgPT0gQVJSSUExMF9DTEtNR1JfTUFJ TlBMTF9WQ08wX1BTUkNfRjJTKSB7CisJCXNyY19oeiA9IGYyc19mcmVlX2h6OworCX0gZWxzZSB7 CisJCXByX2VycigiYXJyaWExMF9jbV9nZXRfbWFpbl92Y28gaW52YWxpZCBjbGtfc3JjICVkXG4i LCBjbGtfc3JjKTsKKwkJcmV0dXJuIDA7CisJfQorCisJdmNvMSA9IHJlYWRsKCZhcnJpYTEwX2Ns a21ncl9iYXNlLT5tYWluX3BsbF92Y28xKTsKKwludW1lciA9IHZjbzEgJiBBUlJJQTEwX0NMS01H Ul9NQUlOUExMX1ZDTzFfTlVNRVJfTVNLOworCWRlbm9tID0gKHZjbzEgPj4gQVJSSUExMF9DTEtN R1JfTUFJTlBMTF9WQ08xX0RFTk9NX0xTQikgJgorCQkgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9W Q08xX0RFTk9NX01TSzsKKwl2Y28gPSBzcmNfaHo7CisJdmNvIC89ICgxICsgZGVub20pOworCXZj byAqPSAoMSArIG51bWVyKTsKKworCXJldHVybiB2Y287Cit9CisKK3N0YXRpYyB1aW50MzJfdCBh cnJpYTEwX2NtX2dldF9wZXJpX3Zjbyh2b2lkKQoreworCXVpbnQzMl90IHZjbzEsIHNyY19oeiwg bnVtZXIsIGRlbm9tLCB2Y287CisJdWludDMyX3QgY2xrX3NyYyA9IHJlYWRsKCZhcnJpYTEwX2Ns a21ncl9iYXNlLT5wZXJfcGxsX3ZjbzApOworCisJY2xrX3NyYyA9IChjbGtfc3JjID4+IEFSUklB MTBfQ0xLTUdSX1BFUlBMTF9WQ08wX1BTUkNfTFNCKSAmCisJCUFSUklBMTBfQ0xLTUdSX1BFUlBM TF9WQ08wX1BTUkNfTVNLOworCisJaWYgKGNsa19zcmMgPT0gQVJSSUExMF9DTEtNR1JfUEVSUExM X1ZDTzBfUFNSQ19FT1NDKSB7CisJCXNyY19oeiA9IGVvc2MxX2h6OworCX0gZWxzZSBpZiAoY2xr X3NyYyA9PSBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMF9QU1JDX0VfSU5UT1NDKSB7CisJCXNy Y19oeiA9IGNiX2ludG9zY19oejsKKwl9IGVsc2UgaWYgKGNsa19zcmMgPT0gQVJSSUExMF9DTEtN R1JfUEVSUExMX1ZDTzBfUFNSQ19GMlMpIHsKKwkJc3JjX2h6ID0gZjJzX2ZyZWVfaHo7CisJfSBl bHNlIGlmIChjbGtfc3JjID09IEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9WQ08wX1BTUkNfTUFJTikg eworCQlzcmNfaHogPSBhcnJpYTEwX2NtX2dldF9tYWluX3ZjbygpOworCQlzcmNfaHogLz0gKHJl YWRsKCZhcnJpYTEwX2Nsa21ncl9iYXNlLT5tYWluX3BsbF9jbnRyMTVjbGspICYKKwkJCSAgIEFS UklBMTBfQ0xLTUdSX01BSU5QTExfQ05UUkNMS19NU0spICsgMTsKKwl9IGVsc2UgeworCQlwcl9l cnIoImFycmlhMTBfY21fZ2V0X3BlcmlfdmNvIGludmFsaWQgY2xrX3NyYyAlZFxuIiwgY2xrX3Ny Yyk7CisJCXJldHVybiAwOworCX0KKworCXZjbzEgPSByZWFkbCgmYXJyaWExMF9jbGttZ3JfYmFz ZS0+cGVyX3BsbF92Y28xKTsKKwludW1lciA9IHZjbzEgJiBBUlJJQTEwX0NMS01HUl9QRVJQTExf VkNPMV9OVU1FUl9NU0s7CisJZGVub20gPSAodmNvMSA+PiBBUlJJQTEwX0NMS01HUl9QRVJQTExf VkNPMV9ERU5PTV9MU0IpICYKKwkJQVJSSUExMF9DTEtNR1JfUEVSUExMX1ZDTzFfREVOT01fTVNL OworCXZjbyA9IHNyY19oejsKKwl2Y28gLz0gKDEgKyBkZW5vbSk7CisJdmNvICo9ICgxICsgbnVt ZXIpOworCisJcmV0dXJuIHZjbzsKK30KKwordW5zaWduZWQgaW50IGFycmlhMTBfY21fZ2V0X21t Y19jb250cm9sbGVyX2Nsa19oeih2b2lkKQoreworCXVpbnQzMl90IGNsa19oeiA9IDA7CisJdWlu dDMyX3QgY2xrX2lucHV0ID0gcmVhZGwoJmFycmlhMTBfY2xrbWdyX2Jhc2UtPnBlcl9wbGxfY250 cjZjbGspOworCWNsa19pbnB1dCA9IChjbGtfaW5wdXQgPj4gQVJSSUExMF9DTEtNR1JfUEVSUExM X0NOVFI2Q0xLX1NSQ19MU0IpICYKKwkJQVJSSUExMF9DTEtNR1JfUEVSUExMR1JQX1NSQ19NU0s7 CisKKwlzd2l0Y2ggKGNsa19pbnB1dCkgeworCWNhc2UgQVJSSUExMF9DTEtNR1JfUEVSUExMR1JQ X1NSQ19NQUlOOgorCQljbGtfaHogPSBhcnJpYTEwX2NtX2dldF9tYWluX3ZjbygpOworCQljbGtf aHogLz0gMSArIChyZWFkbCgmYXJyaWExMF9jbGttZ3JfYmFzZS0+bWFpbl9wbGxfY250cjZjbGsp ICYKKwkJCSAgICAgICBBUlJJQTEwX0NMS01HUl9NQUlOUExMX0NOVFJDTEtfTVNLKTsKKwkJYnJl YWs7CisKKwljYXNlIEFSUklBMTBfQ0xLTUdSX1BFUlBMTEdSUF9TUkNfUEVSSToKKwkJY2xrX2h6 ID0gYXJyaWExMF9jbV9nZXRfcGVyaV92Y28oKTsKKwkJY2xrX2h6IC89IDEgKyAocmVhZGwoJmFy cmlhMTBfY2xrbWdyX2Jhc2UtPnBlcl9wbGxfY250cjZjbGspICYKKwkJCSAgICAgICBBUlJJQTEw X0NMS01HUl9QRVJQTExfQ05UUkNMS19NU0spOworCQlicmVhazsKKworCWNhc2UgQVJSSUExMF9D TEtNR1JfUEVSUExMR1JQX1NSQ19PU0MxOgorCQljbGtfaHogPSBlb3NjMV9oejsKKwkJYnJlYWs7 CisKKwljYXNlIEFSUklBMTBfQ0xLTUdSX1BFUlBMTEdSUF9TUkNfSU5UT1NDOgorCQljbGtfaHog PSBjYl9pbnRvc2NfaHo7CisJCWJyZWFrOworCisJY2FzZSBBUlJJQTEwX0NMS01HUl9QRVJQTExH UlBfU1JDX0ZQR0E6CisJCWNsa19oeiA9IGYyc19mcmVlX2h6OworCQlicmVhazsKKwl9CisKKwly ZXR1cm4gY2xrX2h6LzQ7Cit9CisKKy8qIGNhbGN1bGF0ZSB0aGUgaW50ZW5kZWQgbWFpbiBWQ08g ZnJlcXVlbmN5IGJhc2VkIG9uIGhhbmRvZmYgKi8KK3N0YXRpYyB1aW50MzJfdCBhcnJpYTEwX2Nt X2NhbGNfaGFuZG9mZl9tYWluX3Zjb19jbGtfaHooc3RydWN0IGFycmlhMTBfbWFpbnBsbF9jZmcg Km1haW5fY2ZnKQoreworCXVpbnQzMl90IGNsa19oejsKKworCS8qIENoZWNrIG1haW4gVkNPIGNs b2NrIHNvdXJjZTogZW9zYywgaW50b3NjIG9yIGYycz8gKi8KKwlzd2l0Y2ggKG1haW5fY2ZnLT52 Y28wX3BzcmMpIHsKKwljYXNlIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfVkNPMF9QU1JDX0VPU0M6 CisJCWNsa19oeiA9IGVvc2MxX2h6OworCQlicmVhazsKKwljYXNlIEFSUklBMTBfQ0xLTUdSX01B SU5QTExfVkNPMF9QU1JDX0VfSU5UT1NDOgorCQljbGtfaHogPSBjYl9pbnRvc2NfaHo7CisJCWJy ZWFrOworCWNhc2UgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08wX1BTUkNfRjJTOgorCQljbGtf aHogPSBmMnNfZnJlZV9oejsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIDA7CisJfQor CisJLyogY2FsY3VsYXRlIHRoZSBWQ08gZnJlcXVlbmN5ICovCisJY2xrX2h6IC89ICgxICsgbWFp bl9jZmctPnZjbzFfZGVub20pOworCWNsa19oeiAqPSAoMSArIG1haW5fY2ZnLT52Y28xX251bWVy KTsKKworCXJldHVybiBjbGtfaHo7Cit9CisKKy8qIGNhbGN1bGF0ZSB0aGUgaW50ZW5kZWQgcGVy aXBoIFZDTyBmcmVxdWVuY3kgYmFzZWQgb24gaGFuZG9mZiAqLworc3RhdGljIHVpbnQzMl90IGFy cmlhMTBfY21fY2FsY19oYW5kb2ZmX3BlcmlwaF92Y29fY2xrX2h6KHN0cnVjdCBhcnJpYTEwX21h aW5wbGxfY2ZnICptYWluX2NmZywKKwkJCQkJCQkgIHN0cnVjdCBhcnJpYTEwX3BlcnBsbF9jZmcg KnBlcl9jZmcpCit7CisJdWludDMyX3QgY2xrX2h6OworCisJLyogQ2hlY2sgcGVyaXBoIFZDTyBj bG9jayBzb3VyY2U6IGVvc2MsIGludG9zYywgZjJzIG9yIG1haW5wbGw/ICovCisJc3dpdGNoIChw ZXJfY2ZnLT52Y28wX3BzcmMpIHsKKwljYXNlIEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9WQ08wX1BT UkNfRU9TQzoKKwkJY2xrX2h6ID0gZW9zYzFfaHo7CisJCWJyZWFrOworCWNhc2UgQVJSSUExMF9D TEtNR1JfUEVSUExMX1ZDTzBfUFNSQ19FX0lOVE9TQzoKKwkJY2xrX2h6ID0gY2JfaW50b3NjX2h6 OworCQlicmVhazsKKwljYXNlIEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9WQ08wX1BTUkNfRjJTOgor CQljbGtfaHogPSBmMnNfZnJlZV9oejsKKwkJYnJlYWs7CisJY2FzZSBBUlJJQTEwX0NMS01HUl9Q RVJQTExfVkNPMF9QU1JDX01BSU46CisJCWNsa19oeiA9IGFycmlhMTBfY21fY2FsY19oYW5kb2Zm X21haW5fdmNvX2Nsa19oeihtYWluX2NmZyk7CisJCWNsa19oeiAvPSBtYWluX2NmZy0+Y250cjE1 Y2xrX2NudDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIDA7CisJfQorCisJLyogY2Fs Y3VsYXRlIHRoZSBWQ08gZnJlcXVlbmN5ICovCisJY2xrX2h6IC89ICgxICsgcGVyX2NmZy0+dmNv MV9kZW5vbSk7CisJY2xrX2h6ICo9ICgxICsgcGVyX2NmZy0+dmNvMV9udW1lcik7CisKKwlyZXR1 cm4gY2xrX2h6OworfQorCisvKiBjYWxjdWxhdGUgdGhlIGludGVuZGVkIE1QVSBjbG9jayBmcmVx dWVuY3kgYmFzZWQgb24gaGFuZG9mZiAqLworc3RhdGljIHVpbnQzMl90IGFycmlhMTBfY21fY2Fs Y19oYW5kb2ZmX21wdV9jbGtfaHooc3RydWN0IGFycmlhMTBfbWFpbnBsbF9jZmcgKm1haW5fY2Zn LAorCQkJCQkJICAgc3RydWN0IGFycmlhMTBfcGVycGxsX2NmZyAqcGVyX2NmZykKK3sKKwl1aW50 MzJfdCBjbGtfaHo7CisKKwkvKiBDaGVjayBNUFUgY2xvY2sgc291cmNlOiBtYWluLCBwZXJpcGgs IG9zYzEsIGludG9zYyBvciBmMnM/ICovCisJc3dpdGNoIChtYWluX2NmZy0+bXB1Y2xrX3NyYykg eworCWNhc2UgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9NUFVDTEtfU1JDX01BSU46CisJCWNsa19o eiA9IGFycmlhMTBfY21fY2FsY19oYW5kb2ZmX21haW5fdmNvX2Nsa19oeihtYWluX2NmZyk7CisJ CWNsa19oeiAvPSAoKG1haW5fY2ZnLT5tcHVjbGsgJiBBUlJJQTEwX0NMS01HUl9NQUlOUExMX01Q VUNMS19DTlRfTVNLKQorCQkJICAgKyAxKTsKKwkJYnJlYWs7CisJY2FzZSBBUlJJQTEwX0NMS01H Ul9NQUlOUExMX01QVUNMS19TUkNfUEVSSToKKwkJY2xrX2h6ID0gYXJyaWExMF9jbV9jYWxjX2hh bmRvZmZfcGVyaXBoX3Zjb19jbGtfaHoobWFpbl9jZmcsIHBlcl9jZmcpOworCQljbGtfaHogLz0g KCgobWFpbl9jZmctPm1wdWNsayA+PgorCQkJICAgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9NUFVD TEtfUEVSSUNOVF9MU0IpICYKKwkJCSAgIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTVBVQ0xLX0NO VF9NU0spICsgMSk7CisJCWJyZWFrOworCWNhc2UgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9NUFVD TEtfU1JDX09TQzE6CisJCWNsa19oeiA9IGVvc2MxX2h6OworCQlicmVhazsKKwljYXNlIEFSUklB MTBfQ0xLTUdSX01BSU5QTExfTVBVQ0xLX1NSQ19JTlRPU0M6CisJCWNsa19oeiA9IGNiX2ludG9z Y19oejsKKwkJYnJlYWs7CisJY2FzZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX01QVUNMS19TUkNf RlBHQToKKwkJY2xrX2h6ID0gZjJzX2ZyZWVfaHo7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJl dHVybiAwOworCX0KKworCWNsa19oeiAvPSAobWFpbl9jZmctPm1wdWNsa19jbnQgKyAxKTsKKwor CXJldHVybiBjbGtfaHo7Cit9CisKKy8qIGNhbGN1bGF0ZSB0aGUgaW50ZW5kZWQgTk9DIGNsb2Nr IGZyZXF1ZW5jeSBiYXNlZCBvbiBoYW5kb2ZmICovCitzdGF0aWMgdWludDMyX3QgYXJyaWExMF9j bV9jYWxjX2hhbmRvZmZfbm9jX2Nsa19oeihzdHJ1Y3QgYXJyaWExMF9tYWlucGxsX2NmZyAqbWFp bl9jZmcsCisJCQkJCQkgICBzdHJ1Y3QgYXJyaWExMF9wZXJwbGxfY2ZnICpwZXJfY2ZnKQorewor CXVpbnQzMl90IGNsa19oejsKKworCS8qIENoZWNrIE1QVSBjbG9jayBzb3VyY2U6IG1haW4sIHBl cmlwaCwgb3NjMSwgaW50b3NjIG9yIGYycz8gKi8KKwlzd2l0Y2ggKG1haW5fY2ZnLT5ub2NjbGtf c3JjKSB7CisJY2FzZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0NMS19TUkNfTUFJTjoKKwkJ Y2xrX2h6ID0gYXJyaWExMF9jbV9jYWxjX2hhbmRvZmZfbWFpbl92Y29fY2xrX2h6KG1haW5fY2Zn KTsKKwkJY2xrX2h6IC89ICgobWFpbl9jZmctPm5vY2NsayAmIEFSUklBMTBfQ0xLTUdSX01BSU5Q TExfTk9DQ0xLX0NOVF9NU0spCisJCQkgICArIDEpOworCQlicmVhazsKKwljYXNlIEFSUklBMTBf Q0xLTUdSX01BSU5QTExfTk9DQ0xLX1NSQ19QRVJJOgorCQljbGtfaHogPSBhcnJpYTEwX2NtX2Nh bGNfaGFuZG9mZl9wZXJpcGhfdmNvX2Nsa19oeihtYWluX2NmZywgcGVyX2NmZyk7CisJCWNsa19o eiAvPSAoKChtYWluX2NmZy0+bm9jY2xrID4+CisJCQkgICBBUlJJQTEwX0NMS01HUl9NQUlOUExM X05PQ0NMS19QRVJJQ05UX0xTQikgJgorCQkJICAgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0ND TEtfQ05UX01TSykgKyAxKTsKKwkJYnJlYWs7CisJY2FzZSBBUlJJQTEwX0NMS01HUl9NQUlOUExM X05PQ0NMS19TUkNfT1NDMToKKwkJY2xrX2h6ID0gZW9zYzFfaHo7CisJCWJyZWFrOworCWNhc2Ug QVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NDTEtfU1JDX0lOVE9TQzoKKwkJY2xrX2h6ID0gY2Jf aW50b3NjX2h6OworCQlicmVhazsKKwljYXNlIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTk9DQ0xL X1NSQ19GUEdBOgorCQljbGtfaHogPSBmMnNfZnJlZV9oejsKKwkJYnJlYWs7CisJZGVmYXVsdDoK KwkJcmV0dXJuIDA7CisJfQorCisJY2xrX2h6IC89IChtYWluX2NmZy0+bm9jY2xrX2NudCArIDEp OworCisJcmV0dXJuIGNsa19oejsKK30KKworLyogcmV0dXJuIDEgaWYgUExMIHJhbXAgaXMgcmVx dWlyZWQgKi8KK3N0YXRpYyBpbnQgYXJyaWExMF9jbV9pc19wbGxfcmFtcF9yZXF1aXJlZChpbnQg bWFpbjBwZXJpcGgxLAorCQkJCQkgICBzdHJ1Y3QgYXJyaWExMF9tYWlucGxsX2NmZyAqbWFpbl9j ZmcsCisJCQkJCSAgIHN0cnVjdCBhcnJpYTEwX3BlcnBsbF9jZmcgKnBlcl9jZmcpCit7CisKKwkv KiBDaGVjayBmb3IgbWFpbiBQTEwgKi8KKwlpZiAobWFpbjBwZXJpcGgxID09IDApIHsKKwkJLyoK KwkJICogUExMIHJhbXAgaXMgbm90IHJlcXVpcmVkIGlmIGJvdGggTVBVIGNsb2NrIGFuZCBOT0Mg Y2xvY2sgYXJlCisJCSAqIG5vdCBzb3VyY2VkIGZyb20gbWFpbiBQTEwKKwkJICovCisJCWlmICht YWluX2NmZy0+bXB1Y2xrX3NyYyAhPSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX01QVUNMS19TUkNf TUFJTiAmJgorCQkgICAgbWFpbl9jZmctPm5vY2Nsa19zcmMgIT0gQVJSSUExMF9DTEtNR1JfTUFJ TlBMTF9OT0NDTEtfU1JDX01BSU4pCisJCQlyZXR1cm4gMDsKKworCQkvKgorCQkgKiBQTEwgcmFt cCBpcyByZXF1aXJlZCBpZiBNUFUgY2xvY2sgaXMgc291cmNlZCBmcm9tIG1haW4gUExMCisJCSAq IGFuZCBNUFUgY2xvY2sgaXMgb3ZlciA5MDBNSHogKGFzIGFkdmlzZWQgYnkgSFcgdGVhbSkKKwkJ ICovCisJCWlmIChtYWluX2NmZy0+bXB1Y2xrX3NyYyA9PSBBUlJJQTEwX0NMS01HUl9NQUlOUExM X01QVUNMS19TUkNfTUFJTiAmJgorCQkgICAgKGFycmlhMTBfY21fY2FsY19oYW5kb2ZmX21wdV9j bGtfaHoobWFpbl9jZmcsIHBlcl9jZmcpID4KKwkJICAgICBBUlJJQTEwX0NMS01HUl9QTExfUkFN UF9NUFVDTEtfVEhSRVNIT0xEX0haKSkKKwkJCXJldHVybiAxOworCisJCS8qCisJCSAqIFBMTCBy YW1wIGlzIHJlcXVpcmVkIGlmIE5PQyBjbG9jayBpcyBzb3VyY2VkIGZyb20gbWFpbiBQTEwKKwkJ ICogYW5kIE5PQyBjbG9jayBpcyBvdmVyIDMwME1IeiAoYXMgYWR2aXNlZCBieSBIVyB0ZWFtKQor CQkgKi8KKwkJaWYgKG1haW5fY2ZnLT5ub2NjbGtfc3JjID09IEFSUklBMTBfQ0xLTUdSX01BSU5Q TExfTk9DQ0xLX1NSQ19NQUlOICYmCisJCSAgICAoYXJyaWExMF9jbV9jYWxjX2hhbmRvZmZfbm9j X2Nsa19oeihtYWluX2NmZywgcGVyX2NmZykgPgorCQkgICAgIEFSUklBMTBfQ0xLTUdSX1BMTF9S QU1QX05PQ0NMS19USFJFU0hPTERfSFopKQorCQkJcmV0dXJuIDE7CisKKwl9IGVsc2UgaWYgKG1h aW4wcGVyaXBoMSA9PSAxKSB7CisJCS8qCisJCSAqIFBMTCByYW1wIGlzIG5vdCByZXF1aXJlZCBp ZiBib3RoIE1QVSBjbG9jayBhbmQgTk9DIGNsb2NrIGFyZQorCQkgKiBub3Qgc291cmNlZCBmcm9t IHBlcmlwaCBQTEwKKwkJICovCisJCWlmIChtYWluX2NmZy0+bXB1Y2xrX3NyYyAhPSBBUlJJQTEw X0NMS01HUl9NQUlOUExMX01QVUNMS19TUkNfUEVSSSAmJgorCQkgICAgbWFpbl9jZmctPm5vY2Ns a19zcmMgIT0gQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NDTEtfU1JDX1BFUkkpCisJCQlyZXR1 cm4gMDsKKworCQkvKgorCQkgKiBQTEwgcmFtcCBpcyByZXF1aXJlZCBpZiBNUFUgY2xvY2sgYXJl IHNvdXJjZSBmcm9tIHBlcmlwaCBQTEwKKwkJICogYW5kIE1QVSBjbG9jayBpcyBvdmVyIDkwME1I eiAoYXMgYWR2aXNlZCBieSBIVyB0ZWFtKQorCQkgKi8KKwkJaWYgKG1haW5fY2ZnLT5tcHVjbGtf c3JjID09IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTVBVQ0xLX1NSQ19QRVJJICYmCisJCSAgICAo YXJyaWExMF9jbV9jYWxjX2hhbmRvZmZfbXB1X2Nsa19oeihtYWluX2NmZywgcGVyX2NmZykgPgor CQkgICAgIEFSUklBMTBfQ0xLTUdSX1BMTF9SQU1QX01QVUNMS19USFJFU0hPTERfSFopKQorCQkJ cmV0dXJuIDE7CisKKwkJLyoKKwkJICogUExMIHJhbXAgaXMgcmVxdWlyZWQgaWYgTk9DIGNsb2Nr IGFyZSBzb3VyY2UgZnJvbSBwZXJpcGggUExMCisJCSAqIGFuZCBOT0MgY2xvY2sgaXMgb3ZlciAz MDBNSHogKGFzIGFkdmlzZWQgYnkgSFcgdGVhbSkKKwkJICovCisJCWlmIChtYWluX2NmZy0+bm9j Y2xrX3NyYyA9PSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0NMS19TUkNfUEVSSSAmJgorCQkg ICAgKGFycmlhMTBfY21fY2FsY19oYW5kb2ZmX25vY19jbGtfaHoobWFpbl9jZmcsIHBlcl9jZmcp ID4KKwkJICAgICBBUlJJQTEwX0NMS01HUl9QTExfUkFNUF9OT0NDTEtfVEhSRVNIT0xEX0haKSkK KwkJCXJldHVybiAxOworCX0KKworCXJldHVybiAwOworfQorCisvKgorICogQ2FsY3VsYXRlIHRo ZSBuZXcgUExMIG51bWVyYXRvciB3aGljaCBpcyBiYXNlZCBvbiBleGlzdGluZyBEVFMgaGFuZCBv ZmYgYW5kCisgKiBpbnRlbmRlZCBzYWZlIGZyZXF1ZW5jeSAoc2FmZV9oeikuIE5vdGUgdGhhdCBQ TEwgcmFtcCBpcyBvbmx5IG1vZGlmeWluZyB0aGUKKyAqIG51bWVyYXRvciB3aGlsZSBtYWludGFp bmluZyBkZW5vbWluYXRvciBhcyBkZW5vbWluYXRvciB3aWxsIGluZmx1ZW5jZSB0aGUKKyAqIGpp dHRlciBjb25kaXRpb24uIFBsZWFzZSByZWZlciBBMTAgSFBTIFRSTSBmb3IgdGhlIGppdHRlciBn dWlkZS4gTm90ZSBmaW5hbAorICogdmFsdWUgZm9yIG51bWVyYXRvciBpcyBtaW51cyB3aXRoIDEg dG8gY2F0ZXIgb3VyIHJlZ2lzdGVyIHZhbHVlCisgKiByZXByZXNlbnRhdGlvbi4KKyAqLworc3Rh dGljIHVpbnQzMl90IGFycmlhMTBfY21fY2FsY19zYWZlX3BsbF9udW1lcihpbnQgbWFpbjBwZXJp cGgxLAorCQkJCQkgICAgICAgc3RydWN0IGFycmlhMTBfbWFpbnBsbF9jZmcgKm1haW5fY2ZnLAor CQkJCQkgICAgICAgc3RydWN0IGFycmlhMTBfcGVycGxsX2NmZyAqcGVyX2NmZywKKwkJCQkJICAg ICAgIHVpbnQzMl90IHNhZmVfaHopCit7CisJdWludDMyX3QgY2xrX2h6ID0gMDsKKworCS8qIENo ZWNrIGZvciBtYWluIFBMTCAqLworCWlmIChtYWluMHBlcmlwaDEgPT0gMCkgeworCQkvKiBDaGVj ayBtYWluIFZDTyBjbG9jayBzb3VyY2U6IGVvc2MsIGludG9zYyBvciBmMnM/ICovCisJCXN3aXRj aCAobWFpbl9jZmctPnZjbzBfcHNyYykgeworCQljYXNlIEFSUklBMTBfQ0xLTUdSX01BSU5QTExf VkNPMF9QU1JDX0VPU0M6CisJCQljbGtfaHogPSBlb3NjMV9oejsKKwkJCWJyZWFrOworCQljYXNl IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfVkNPMF9QU1JDX0VfSU5UT1NDOgorCQkJY2xrX2h6ID0g Y2JfaW50b3NjX2h6OworCQkJYnJlYWs7CisJCWNhc2UgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9W Q08wX1BTUkNfRjJTOgorCQkJY2xrX2h6ID0gZjJzX2ZyZWVfaHo7CisJCQlicmVhazsKKwkJZGVm YXVsdDoKKwkJCXJldHVybiAwOworCQl9CisKKwkJLyogQXBwbGljYWJsZSBpZiBNUFUgY2xvY2sg aXMgZnJvbSBtYWluIFBMTCAqLworCQlpZiAobWFpbl9jZmctPm1wdWNsa19zcmMgPT0gQVJSSUEx MF9DTEtNR1JfTUFJTlBMTF9NUFVDTEtfU1JDX01BSU4pIHsKKwkJCS8qIGNhbGN1bGF0ZSB0aGUg c2FmZSBudW1lciB2YWx1ZSAqLworCQkJY2xrX2h6ID0gKHNhZmVfaHogLyBjbGtfaHopICoKKwkJ CQkobWFpbl9jZmctPm1wdWNsa19jbnQgKyAxKSAqCisJCQkJKChtYWluX2NmZy0+bXB1Y2xrICYK KwkJCQkgIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTVBVQ0xLX0NOVF9NU0spICsgMSkgKgorCQkJ CSgxICsgbWFpbl9jZmctPnZjbzFfZGVub20pIC0gMTsKKwkJfQorCQkvKiBSZWFjaCBoZXJlIGlm IE1QVSBjbGsgbm90IGZyb20gbWFpbiBQTEwgYnV0IE5PQyBjbGsgaXMgKi8KKwkJZWxzZSBpZiAo bWFpbl9jZmctPm5vY2Nsa19zcmMgPT0KKwkJCSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0NM S19TUkNfTUFJTikgeworCQkJLyogY2FsY3VsYXRlIHRoZSBzYWZlIG51bWVyIHZhbHVlICovCisJ CQljbGtfaHogPSAoc2FmZV9oeiAvIGNsa19oeikgKgorCQkJCShtYWluX2NmZy0+bm9jY2xrX2Nu dCArIDEpICoKKwkJCQkoKG1haW5fY2ZnLT5ub2NjbGsgJgorCQkJCSAgQVJSSUExMF9DTEtNR1Jf TUFJTlBMTF9OT0NDTEtfQ05UX01TSykgKyAxKSAqCisJCQkJKDEgKyBtYWluX2NmZy0+dmNvMV9k ZW5vbSkgLSAxOworCQl9IGVsc2UgeworCQkJY2xrX2h6ID0gMDsKKwkJfQorCisJfSBlbHNlIGlm IChtYWluMHBlcmlwaDEgPT0gMSkgeworCQkvKiBDaGVjayBwZXJpcGggVkNPIGNsb2NrIHNvdXJj ZTogZW9zYywgaW50b3NjLCBmMnMsIG1haW5wbGwgKi8KKwkJc3dpdGNoIChwZXJfY2ZnLT52Y28w X3BzcmMpIHsKKwkJY2FzZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMF9QU1JDX0VPU0M6CisJ CQljbGtfaHogPSBlb3NjMV9oejsKKwkJCWJyZWFrOworCQljYXNlIEFSUklBMTBfQ0xLTUdSX1BF UlBMTF9WQ08wX1BTUkNfRV9JTlRPU0M6CisJCQljbGtfaHogPSBjYl9pbnRvc2NfaHo7CisJCQli cmVhazsKKwkJY2FzZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMF9QU1JDX0YyUzoKKwkJCWNs a19oeiA9IGYyc19mcmVlX2h6OworCQkJYnJlYWs7CisJCWNhc2UgQVJSSUExMF9DTEtNR1JfUEVS UExMX1ZDTzBfUFNSQ19NQUlOOgorCQkJY2xrX2h6ID0gYXJyaWExMF9jbV9jYWxjX2hhbmRvZmZf bWFpbl92Y29fY2xrX2h6KAorCQkJCSBtYWluX2NmZyk7CisJCQljbGtfaHogLz0gbWFpbl9jZmct PmNudHIxNWNsa19jbnQ7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXJldHVybiAwOworCQl9 CisJCS8qIEFwcGxpY2FibGUgaWYgTVBVIGNsb2NrIGlzIGZyb20gcGVyaXBoIFBMTCAqLworCQlp ZiAobWFpbl9jZmctPm1wdWNsa19zcmMgPT0gQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9NUFVDTEtf U1JDX1BFUkkpIHsKKwkJCS8qIGNhbGN1bGF0ZSB0aGUgc2FmZSBudW1lciB2YWx1ZSAqLworCQkJ Y2xrX2h6ID0gKHNhZmVfaHogLyBjbGtfaHopICoKKwkJCQkobWFpbl9jZmctPm1wdWNsa19jbnQg KyAxKSAqCisJCQkJKCgobWFpbl9jZmctPm1wdWNsayA+PgorCQkJCSAgQVJSSUExMF9DTEtNR1Jf TUFJTlBMTF9NUFVDTEtfUEVSSUNOVF9MU0IpICYKKwkJCQkgIEFSUklBMTBfQ0xLTUdSX01BSU5Q TExfTVBVQ0xLX0NOVF9NU0spICsgMSkgKgorCQkJCSgxICsgcGVyX2NmZy0+dmNvMV9kZW5vbSkg LSAxOworCQl9CisJCS8qIFJlYWNoIGhlcmUgaWYgTVBVIGNsayBub3QgZnJvbSBwZXJpcGggUExM IGJ1dCBOT0MgY2xrIGlzICovCisJCWVsc2UgaWYgKG1haW5fY2ZnLT5ub2NjbGtfc3JjID09CisJ CQkgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NDTEtfU1JDX1BFUkkpIHsKKwkJCS8qIGNhbGN1 bGF0ZSB0aGUgc2FmZSBudW1lciB2YWx1ZSAqLworCQkJY2xrX2h6ID0gKHNhZmVfaHogLyBjbGtf aHopICoKKwkJCQkobWFpbl9jZmctPm5vY2Nsa19jbnQgKyAxKSAqCisJCQkJKCgobWFpbl9jZmct Pm5vY2NsayA+PgorCQkJCSAgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NDTEtfUEVSSUNOVF9M U0IpICYKKwkJCQkgIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTk9DQ0xLX0NOVF9NU0spICsgMSkg KgorCQkJCSgxICsgcGVyX2NmZy0+dmNvMV9kZW5vbSkgLSAxOworCQl9IGVsc2UgeworCQkJY2xr X2h6ID0gMDsKKwkJfQorCX0KKworCXJldHVybiBjbGtfaHo7Cit9CisKKy8qIHJhbXBpbmcgdGhl IG1haW4gUExMIHRvIGZpbmFsIHZhbHVlICovCitzdGF0aWMgdm9pZCBhcnJpYTEwX2NtX3BsbF9y YW1wX21haW4oc3RydWN0IGFycmlhMTBfbWFpbnBsbF9jZmcgKm1haW5fY2ZnLAorCQkJCSAgICAg c3RydWN0IGFycmlhMTBfcGVycGxsX2NmZyAqcGVyX2NmZywKKwkJCQkgICAgIHVpbnQzMl90IHBs bF9yYW1wX21haW5faHopCit7CisJdWludDMyX3QgY2xrX2h6ID0gMDsKKwl1aW50MzJfdCBjbGtf aW5jcl9oeiA9IDA7CisJdWludDMyX3QgY2xrX2ZpbmFsX2h6ID0gMDsKKworCS8qIGZpbmQgb3V0 IHRoZSBpbmNyZW1lbnQgdmFsdWUgKi8KKwlpZiAobWFpbl9jZmctPm1wdWNsa19zcmMgPT0gQVJS SUExMF9DTEtNR1JfTUFJTlBMTF9NUFVDTEtfU1JDX01BSU4pIHsKKwkJY2xrX2luY3JfaHogPSBB UlJJQTEwX0NMS01HUl9QTExfUkFNUF9NUFVDTEtfSU5DUkVNRU5UX0haOworCQljbGtfZmluYWxf aHogPSBhcnJpYTEwX2NtX2NhbGNfaGFuZG9mZl9tcHVfY2xrX2h6KG1haW5fY2ZnLCBwZXJfY2Zn KTsKKwl9IGVsc2UgaWYgKG1haW5fY2ZnLT5ub2NjbGtfc3JjID09IEFSUklBMTBfQ0xLTUdSX01B SU5QTExfTk9DQ0xLX1NSQ19NQUlOKSB7CisJCWNsa19pbmNyX2h6ID0gQVJSSUExMF9DTEtNR1Jf UExMX1JBTVBfTk9DQ0xLX0lOQ1JFTUVOVF9IWjsKKwkJY2xrX2ZpbmFsX2h6ID0gYXJyaWExMF9j bV9jYWxjX2hhbmRvZmZfbm9jX2Nsa19oeihtYWluX2NmZywgcGVyX2NmZyk7CisJfQorCisJLyog ZXhlY3V0ZSB0aGUgcmFtcGluZyBoZXJlICovCisJZm9yIChjbGtfaHogPSBwbGxfcmFtcF9tYWlu X2h6ICsgY2xrX2luY3JfaHo7CisJICAgICBjbGtfaHogPCBjbGtfZmluYWxfaHo7IGNsa19oeiAr PSBjbGtfaW5jcl9oeikgeworCQl3cml0ZWwoKG1haW5fY2ZnLT52Y28xX2Rlbm9tIDw8IEFSUklB MTBfQ0xLTUdSX01BSU5QTExfVkNPMV9ERU5PTV9MU0IpIHwKKwkJICAgICAgIGFycmlhMTBfY21f Y2FsY19zYWZlX3BsbF9udW1lcigwLCBtYWluX2NmZywgcGVyX2NmZywgY2xrX2h6KSwKKwkJICAg ICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5tYWluX3BsbF92Y28xKTsKKwkJdWRlbGF5KDEwMDAp OworCQlhcnJpYTEwX2NtX3dhaXRfZm9yX2xvY2soTE9DS0VEX01BU0spOworCX0KKworCXdyaXRl bCgobWFpbl9jZmctPnZjbzFfZGVub20gPDwgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08xX0RF Tk9NX0xTQikgfAorCSAgICAgICBtYWluX2NmZy0+dmNvMV9udW1lciwgJmFycmlhMTBfY2xrbWdy X2Jhc2UtPm1haW5fcGxsX3ZjbzEpOworCisJdWRlbGF5KDEwMDApOworCWFycmlhMTBfY21fd2Fp dF9mb3JfbG9jayhMT0NLRURfTUFTSyk7Cit9CisKKy8qIHJhbXBpbmcgdGhlIHBlcmlwaCBQTEwg dG8gZmluYWwgdmFsdWUgKi8KK3N0YXRpYyB2b2lkIGFycmlhMTBfY21fcGxsX3JhbXBfcGVyaXBo KHN0cnVjdCBhcnJpYTEwX21haW5wbGxfY2ZnICptYWluX2NmZywKKwkJCQkgICAgICAgc3RydWN0 IGFycmlhMTBfcGVycGxsX2NmZyAqcGVyX2NmZywKKwkJCQkgICAgICAgdWludDMyX3QgcGxsX3Jh bXBfcGVyaXBoX2h6KQoreworCXVpbnQzMl90IGNsa19oeiA9IDA7CisJdWludDMyX3QgY2xrX2lu Y3JfaHogPSAwOworCXVpbnQzMl90IGNsa19maW5hbF9oeiA9IDA7CisKKwkvKiBmaW5kIG91dCB0 aGUgaW5jcmVtZW50IHZhbHVlICovCisJaWYgKG1haW5fY2ZnLT5tcHVjbGtfc3JjID09IEFSUklB MTBfQ0xLTUdSX01BSU5QTExfTVBVQ0xLX1NSQ19QRVJJKSB7CisJCWNsa19pbmNyX2h6ID0gQVJS SUExMF9DTEtNR1JfUExMX1JBTVBfTVBVQ0xLX0lOQ1JFTUVOVF9IWjsKKwkJY2xrX2ZpbmFsX2h6 ID0gYXJyaWExMF9jbV9jYWxjX2hhbmRvZmZfbXB1X2Nsa19oeihtYWluX2NmZywgcGVyX2NmZyk7 CisJfSBlbHNlIGlmIChtYWluX2NmZy0+bm9jY2xrX3NyYyA9PSBBUlJJQTEwX0NMS01HUl9NQUlO UExMX05PQ0NMS19TUkNfUEVSSSkgeworCQljbGtfaW5jcl9oeiA9IEFSUklBMTBfQ0xLTUdSX1BM TF9SQU1QX05PQ0NMS19JTkNSRU1FTlRfSFo7CisJCWNsa19maW5hbF9oeiA9IGFycmlhMTBfY21f Y2FsY19oYW5kb2ZmX25vY19jbGtfaHoobWFpbl9jZmcsIHBlcl9jZmcpOworCX0KKworCS8qIGV4 ZWN1dGUgdGhlIHJhbXBpbmcgaGVyZSAqLworCWZvciAoY2xrX2h6ID0gcGxsX3JhbXBfcGVyaXBo X2h6ICsgY2xrX2luY3JfaHo7CisJICAgICBjbGtfaHogPCBjbGtfZmluYWxfaHo7IGNsa19oeiAr PSBjbGtfaW5jcl9oeikgeworCQl3cml0ZWwoKHBlcl9jZmctPnZjbzFfZGVub20gPDwgQVJSSUEx MF9DTEtNR1JfUEVSUExMX1ZDTzFfREVOT01fTFNCKSB8CisJCSAgICAgICBhcnJpYTEwX2NtX2Nh bGNfc2FmZV9wbGxfbnVtZXIoMSwgbWFpbl9jZmcsIHBlcl9jZmcsIGNsa19oeiksCisJCSAgICAg ICAmYXJyaWExMF9jbGttZ3JfYmFzZS0+cGVyX3BsbF92Y28xKTsKKwkJdWRlbGF5KDEwMDApOwor CQlhcnJpYTEwX2NtX3dhaXRfZm9yX2xvY2soTE9DS0VEX01BU0spOworCX0KKworCXdyaXRlbCgo cGVyX2NmZy0+dmNvMV9kZW5vbSA8PCBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMV9ERU5PTV9M U0IpIHwKKwkgICAgICAgcGVyX2NmZy0+dmNvMV9udW1lciwgJmFycmlhMTBfY2xrbWdyX2Jhc2Ut PnBlcl9wbGxfdmNvMSk7CisJdWRlbGF5KDEwMDApOworCWFycmlhMTBfY21fd2FpdF9mb3JfbG9j ayhMT0NLRURfTUFTSyk7Cit9CisKKy8qCisgKiBTZXR1cCBjbG9ja3Mgd2hpbGUgbWFraW5nIG5v IGFzc3VtcHRpb25zIG9mIHRoZQorICogcHJldmlvdXMgc3RhdGUgb2YgdGhlIGNsb2Nrcy4KKyAq CisgKiAtIFN0YXJ0IGJ5IGJlaW5nIHBhcmFub2lkIGFuZCBnYXRlIGFsbCBzdyBtYW5hZ2VkIGNs b2NrcworICogLSBQdXQgYWxsIHBsbHMgaW4gYnlwYXNzCisgKiAtIFB1dCBhbGwgcGxscyBWQ08g cmVnaXN0ZXJzIGJhY2sgdG8gcmVzZXQgdmFsdWUgKGJncHdyIGR3bikuCisgKiAtIFB1dCBwZXJp cGhlcmFsIGFuZCBtYWluIHBsbCBzcmMgdG8gcmVzZXQgdmFsdWUgdG8gYXZvaWQgZ2xpdGNoLgor ICogLSBEZWxheSA1IHVzLgorICogLSBEZWFzc2VydCBiZyBwd3IgZG4gYW5kIHNldCBudW1lcmF0 b3IgYW5kIGRlbm9taW5hdG9yCisgKiAtIFN0YXJ0IDcgdXMgdGltZXIuCisgKiAtIHNldCBpbnRl cm5hbCBkaXZpZGVycworICogLSBXYWl0IGZvciA3IHVzIHRpbWVyLgorICogLSBFbmFibGUgcGxs cworICogLSBTZXQgZXh0ZXJuYWwgZGl2aWRlcnMgd2hpbGUgcGxscyBhcmUgbG9ja2luZworICog LSBXYWl0IGZvciBwbGwgbG9jaworICogLSBBc3NlcnQvZGVhc3NlcnQgb3V0cmVzZXQgYWxsLgor ICogLSBUYWtlIGFsbCBwbGwncyBvdXQgb2YgYnlwYXNzCisgKiAtIENsZWFyIHNhZmUgbW9kZQor ICogLSBzZXQgc291cmNlIG1haW4gYW5kIHBlcmlwaGVyYWwgY2xvY2tzCisgKiAtIFVuZ2F0ZSBj bG9ja3MKKyAqLworc3RhdGljIGludCBhcnJpYTEwX2NtX2Z1bGxfY2ZnKHN0cnVjdCBhcnJpYTEw X21haW5wbGxfY2ZnICptYWluX2NmZywKKwkJCSAgICAgICBzdHJ1Y3QgYXJyaWExMF9wZXJwbGxf Y2ZnICpwZXJfY2ZnKQoreworCXVpbnQzMl90IHBsbF9yYW1wX21haW5faHogPSAwOworCXVpbnQz Ml90IHBsbF9yYW1wX3BlcmlwaF9oeiA9IDA7CisKKwkvKiBnYXRlIG9mZiBhbGwgbWFpbnBsbCBj bG9jayBleGNwZXQgSFcgbWFuYWdlZCBjbG9jayAqLworCXdyaXRlbChBUlJJQTEwX0NMS01HUl9N QUlOUExMX0VOX1MyRlVTRVIwQ0xLRU5fU0VUX01TSyB8CisJICAgICAgIEFSUklBMTBfQ0xLTUdS X01BSU5QTExfRU5fSE1DUExMUkVGQ0xLRU5fU0VUX01TSywKKwkgICAgICAgJmFycmlhMTBfY2xr bWdyX2Jhc2UtPm1haW5fcGxsX2Vucik7CisKKwkvKiBub3cgd2UgY2FuIGdhdGUgb2ZmIHRoZSBy ZXN0IG9mIHRoZSBwZXJpcGhlcmFsIGNsb2NrcyAqLworCXdyaXRlbCgwLCAmYXJyaWExMF9jbGtt Z3JfYmFzZS0+cGVyX3BsbF9lbik7CisKKwkvKiBQdXQgYWxsIHBsbHMgaW4gZXh0ZXJuYWwgYnlw YXNzICovCisJd3JpdGVsKEFSUklBMTBfQ0xLTUdSX01BSU5QTExfQllQQVNTX1JFU0VULAorCSAg ICAgICAmYXJyaWExMF9jbGttZ3JfYmFzZS0+bWFpbl9wbGxfYnlwYXNzcyk7CisJd3JpdGVsKEFS UklBMTBfQ0xLTUdSX1BFUlBMTF9CWVBBU1NfUkVTRVQsCisJICAgICAgICZhcnJpYTEwX2Nsa21n cl9iYXNlLT5wZXJfcGxsX2J5cGFzc3MpOworCisJLyoKKwkgKiBQdXQgYWxsIHBsbHMgVkNPIHJl Z2lzdGVycyBiYWNrIHRvIHJlc2V0IHZhbHVlLgorCSAqIFNvbWUgY29kZSBtaWdodCBoYXZlIG1l c3NlZCB3aXRoIHRoZW0uIEF0IHNhbWUgdGltZSBzZXQgdGhlCisJICogZGVzaXJlZCBjbG9jayBz b3VyY2UKKwkgKi8KKwl3cml0ZWwoQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08wX1JFU0VUIHwK KwkgICAgICAgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08wX1JFR0VYVFNFTF9TRVRfTVNLIHwK KwkgICAgICAgKG1haW5fY2ZnLT52Y28wX3BzcmMgPDwgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9W Q08wX1BTUkNfTFNCKSwKKwkgICAgICAgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPm1haW5fcGxsX3Zj bzApOworCisJd3JpdGVsKEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9WQ08wX1JFU0VUIHwKKwkgICAg ICAgQVJSSUExMF9DTEtNR1JfUEVSUExMX1ZDTzBfUkVHRVhUU0VMX1NFVF9NU0sgfAorCSAgICAg ICAocGVyX2NmZy0+dmNvMF9wc3JjIDw8IEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9WQ08wX1BTUkNf TFNCKSwKKwkgICAgICAgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPnBlcl9wbGxfdmNvMCk7CisKKwl3 cml0ZWwoQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08xX1JFU0VULAorCSAgICAgICAmYXJyaWEx MF9jbGttZ3JfYmFzZS0+bWFpbl9wbGxfdmNvMSk7CisJd3JpdGVsKEFSUklBMTBfQ0xLTUdSX1BF UlBMTF9WQ08xX1JFU0VULAorCSAgICAgICAmYXJyaWExMF9jbGttZ3JfYmFzZS0+cGVyX3BsbF92 Y28xKTsKKworCS8qIGNsZWFyIHRoZSBpbnRlcnJ1cHQgcmVnaXN0ZXIgc3RhdHVzIHJlZ2lzdGVy ICovCisJd3JpdGVsKEFSUklBMTBfQ0xLTUdSX0NMS01HUl9JTlRSX01BSU5QTExMT1NUX1NFVF9N U0sgfAorCSAgICAgICBBUlJJQTEwX0NMS01HUl9DTEtNR1JfSU5UUl9QRVJQTExMT1NUX1NFVF9N U0sgfAorCSAgICAgICBBUlJJQTEwX0NMS01HUl9DTEtNR1JfSU5UUl9NQUlOUExMUkZTTElQX1NF VF9NU0sgfAorCSAgICAgICBBUlJJQTEwX0NMS01HUl9DTEtNR1JfSU5UUl9QRVJQTExSRlNMSVBf U0VUX01TSyB8CisJICAgICAgIEFSUklBMTBfQ0xLTUdSX0NMS01HUl9JTlRSX01BSU5QTExGQlNM SVBfU0VUX01TSyB8CisJICAgICAgIEFSUklBMTBfQ0xLTUdSX0NMS01HUl9JTlRSX1BFUlBMTEZC U0xJUF9TRVRfTVNLIHwKKwkgICAgICAgQVJSSUExMF9DTEtNR1JfQ0xLTUdSX0lOVFJfTUFJTlBM TEFDSElFVkVEX1NFVF9NU0sgfAorCSAgICAgICBBUlJJQTEwX0NMS01HUl9DTEtNR1JfSU5UUl9Q RVJQTExBQ0hJRVZFRF9TRVRfTVNLLAorCSAgICAgICAmYXJyaWExMF9jbGttZ3JfYmFzZS0+aW50 cik7CisKKwkvKiBQcm9ncmFtIFZDTyDigJxOdW1lcmF0b3LigJ0gYW5kIOKAnERlbm9taW5hdG9y 4oCdIGZvciBtYWluIFBMTCAqLworCWlmIChhcnJpYTEwX2NtX2lzX3BsbF9yYW1wX3JlcXVpcmVk KDAsIG1haW5fY2ZnLCBwZXJfY2ZnKSkgeworCQkvKiBzZXQgbWFpbiBQTEwgdG8gc2FmZSBzdGFy dGluZyB0aHJlc2hvbGQgZnJlcXVlbmN5ICovCisJCWlmIChtYWluX2NmZy0+bXB1Y2xrX3NyYyA9 PSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX01QVUNMS19TUkNfTUFJTikKKwkJCXBsbF9yYW1wX21h aW5faHogPSBBUlJJQTEwX0NMS01HUl9QTExfUkFNUF9NUFVDTEtfVEhSRVNIT0xEX0haOworCQll bHNlIGlmIChtYWluX2NmZy0+bm9jY2xrX3NyYyA9PSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05P Q0NMS19TUkNfTUFJTikKKwkJCXBsbF9yYW1wX21haW5faHogPSBBUlJJQTEwX0NMS01HUl9QTExf UkFNUF9OT0NDTEtfVEhSRVNIT0xEX0haOworCisJCXdyaXRlbCgobWFpbl9jZmctPnZjbzFfZGVu b20gPDwgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08xX0RFTk9NX0xTQikgfAorCQkgICAgICAg YXJyaWExMF9jbV9jYWxjX3NhZmVfcGxsX251bWVyKDAsIG1haW5fY2ZnLCBwZXJfY2ZnLAorCQkJ CQkJICAgICAgcGxsX3JhbXBfbWFpbl9oeiksCisJCSAgICAgICAmYXJyaWExMF9jbGttZ3JfYmFz ZS0+bWFpbl9wbGxfdmNvMSk7CisJfSBlbHNlIHsKKwkJd3JpdGVsKChtYWluX2NmZy0+dmNvMV9k ZW5vbSA8PCBBUlJJQTEwX0NMS01HUl9NQUlOUExMX1ZDTzFfREVOT01fTFNCKSB8CisJCSAgICAg ICBtYWluX2NmZy0+dmNvMV9udW1lciwKKwkJICAgICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5t YWluX3BsbF92Y28xKTsKKwl9CisKKwkvKiBQcm9ncmFtIFZDTyDigJxOdW1lcmF0b3LigJ0gYW5k IOKAnERlbm9taW5hdG9y4oCdIGZvciBwZXJpcGggUExMICovCisJaWYgKGFycmlhMTBfY21faXNf cGxsX3JhbXBfcmVxdWlyZWQoMSwgbWFpbl9jZmcsIHBlcl9jZmcpKSB7CisJCS8qIHNldCBwZXJp cGggUExMIHRvIHNhZmUgc3RhcnRpbmcgdGhyZXNob2xkIGZyZXF1ZW5jeSAqLworCQlpZiAobWFp bl9jZmctPm1wdWNsa19zcmMgPT0gQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9NUFVDTEtfU1JDX1BF UkkpCisJCQlwbGxfcmFtcF9wZXJpcGhfaHogPSBBUlJJQTEwX0NMS01HUl9QTExfUkFNUF9NUFVD TEtfVEhSRVNIT0xEX0haOworCQllbHNlIGlmIChtYWluX2NmZy0+bm9jY2xrX3NyYyA9PSBBUlJJ QTEwX0NMS01HUl9NQUlOUExMX05PQ0NMS19TUkNfUEVSSSkKKwkJCXBsbF9yYW1wX3BlcmlwaF9o eiA9IEFSUklBMTBfQ0xLTUdSX1BMTF9SQU1QX05PQ0NMS19USFJFU0hPTERfSFo7CisKKwkJd3Jp dGVsKChwZXJfY2ZnLT52Y28xX2Rlbm9tIDw8IEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9WQ08xX0RF Tk9NX0xTQikgfAorCQkgICAgICAgYXJyaWExMF9jbV9jYWxjX3NhZmVfcGxsX251bWVyKDEsIG1h aW5fY2ZnLCBwZXJfY2ZnLAorCQkJCQkJICAgICAgcGxsX3JhbXBfcGVyaXBoX2h6KSwKKwkJICAg ICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5wZXJfcGxsX3ZjbzEpOworCX0gZWxzZSB7CisJCXdy aXRlbCgocGVyX2NmZy0+dmNvMV9kZW5vbSA8PCBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMV9E RU5PTV9MU0IpIHwKKwkJICAgICAgIHBlcl9jZmctPnZjbzFfbnVtZXIsICZhcnJpYTEwX2Nsa21n cl9iYXNlLT5wZXJfcGxsX3ZjbzEpOworCX0KKworCS8qIFdhaXQgZm9yIGF0IGxlYXN0IDUgdXMg Ki8KKwl1ZGVsYXkoNSk7CisKKwkvKiBOb3cgZGVhc3NlcnQgQkdQV1JETiBhbmQgUFdSRE4gKi8K KwljbHJiaXRzX2xlMzIoJmFycmlhMTBfY2xrbWdyX2Jhc2UtPm1haW5fcGxsX3ZjbzAsCisJCSAg ICAgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08wX0JHUFdSRE5fU0VUX01TSyB8CisJCSAgICAg QVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08wX1BXUkROX1NFVF9NU0spOworCWNscmJpdHNfbGUz MigmYXJyaWExMF9jbGttZ3JfYmFzZS0+cGVyX3BsbF92Y28wLAorCQkgICAgIEFSUklBMTBfQ0xL TUdSX1BFUlBMTF9WQ08wX0JHUFdSRE5fU0VUX01TSyB8CisJCSAgICAgQVJSSUExMF9DTEtNR1Jf UEVSUExMX1ZDTzBfUFdSRE5fU0VUX01TSyk7CisKKwkvKiBXYWl0IGZvciBhdCBsZWFzdCA3IHVz ICovCisJdWRlbGF5KDcpOworCisJLyogZW5hYmxlIHRoZSBWQ08gYW5kIGRpc2FibGUgdGhlIGV4 dGVybmFsIHJlZ3VsYXRvciB0byBQTEwgKi8KKwl3cml0ZWwoKHJlYWRsKCZhcnJpYTEwX2Nsa21n cl9iYXNlLT5tYWluX3BsbF92Y28wKSAmCisJCX5BUlJJQTEwX0NMS01HUl9NQUlOUExMX1ZDTzBf UkVHRVhUU0VMX1NFVF9NU0spIHwKKwkgICAgICAgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08w X0VOX1NFVF9NU0ssCisJICAgICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5tYWluX3BsbF92Y28w KTsKKwl3cml0ZWwoKHJlYWRsKCZhcnJpYTEwX2Nsa21ncl9iYXNlLT5wZXJfcGxsX3ZjbzApICYK KwkJfkFSUklBMTBfQ0xLTUdSX1BFUlBMTF9WQ08wX1JFR0VYVFNFTF9TRVRfTVNLKSB8CisJICAg ICAgIEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9WQ08wX0VOX1NFVF9NU0ssCisJICAgICAgICZhcnJp YTEwX2Nsa21ncl9iYXNlLT5wZXJfcGxsX3ZjbzApOworCisJLyogc2V0dXAgYWxsIHRoZSBtYWlu IFBMTCBjb3VudGVyIGFuZCBjbG9jayBzb3VyY2UgKi8KKwl3cml0ZWwobWFpbl9jZmctPm5vY2Ns aywKKwkgICAgICAgQVJSSUExMF9DTEtNR1JfQUREUiArIEFSUklBMTBfQ0xLTUdSX01BSU5QTExf Tk9DX0NMS19PRkZTRVQpOworCXdyaXRlbChtYWluX2NmZy0+bXB1Y2xrLAorCSAgICAgICBBUlJJ QTEwX0NMS01HUl9BRERSICsgQVJSSUExMF9DTEtNR1JfQUxURVJBR1JQX01QVV9DTEtfT0ZGU0VU KTsKKworCS8qIG1haW5fZW1hY2FfY2xrIGRpdmlkZXIgKi8KKwl3cml0ZWwobWFpbl9jZmctPmNu dHIyY2xrX2NudCwgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPm1haW5fcGxsX2NudHIyY2xrKTsKKwkv KiBtYWluX2VtYWNiX2NsayBkaXZpZGVyICovCisJd3JpdGVsKG1haW5fY2ZnLT5jbnRyM2Nsa19j bnQsICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5tYWluX3BsbF9jbnRyM2Nsayk7CisJLyogbWFpbl9l bWFjX3B0cF9jbGsgZGl2aWRlciAqLworCXdyaXRlbChtYWluX2NmZy0+Y250cjRjbGtfY250LCAm YXJyaWExMF9jbGttZ3JfYmFzZS0+bWFpbl9wbGxfY250cjRjbGspOworCS8qIG1haW5fZ3Bpb19k Yl9jbGsgZGl2aWRlciAqLworCXdyaXRlbChtYWluX2NmZy0+Y250cjVjbGtfY250LCAmYXJyaWEx MF9jbGttZ3JfYmFzZS0+bWFpbl9wbGxfY250cjVjbGspOworCS8qIG1haW5fc2RtbWNfY2xrIGRp dmlkZXIgKi8KKwl3cml0ZWwobWFpbl9jZmctPmNudHI2Y2xrX2NudCwgJmFycmlhMTBfY2xrbWdy X2Jhc2UtPm1haW5fcGxsX2NudHI2Y2xrKTsKKwkvKiBtYWluX3MyZl91c2VyMF9jbGsgZGl2aWRl ciAqLworCXdyaXRlbChtYWluX2NmZy0+Y250cjdjbGtfY250IHwKKwkgICAgICAgKG1haW5fY2Zn LT5jbnRyN2Nsa19zcmMgPDwgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9DTlRSN0NMS19TUkNfTFNC KSwKKwkgICAgICAgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPm1haW5fcGxsX2NudHI3Y2xrKTsKKwkv KiBtYWluX3MyZl91c2VyMV9jbGsgZGl2aWRlciAqLworCXdyaXRlbChtYWluX2NmZy0+Y250cjhj bGtfY250LCAmYXJyaWExMF9jbGttZ3JfYmFzZS0+bWFpbl9wbGxfY250cjhjbGspOworCS8qIG1h aW5faG1jX3BsbF9jbGsgZGl2aWRlciAqLworCXdyaXRlbChtYWluX2NmZy0+Y250cjljbGtfY250 IHwKKwkgICAgICAgKG1haW5fY2ZnLT5jbnRyOWNsa19zcmMgPDwgQVJSSUExMF9DTEtNR1JfTUFJ TlBMTF9DTlRSOUNMS19TUkNfTFNCKSwKKwkgICAgICAgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPm1h aW5fcGxsX2NudHI5Y2xrKTsKKwkvKiBtYWluX3BlcmlwaF9yZWZfY2xrIGRpdmlkZXIgKi8KKwl3 cml0ZWwobWFpbl9jZmctPmNudHIxNWNsa19jbnQsCSZhcnJpYTEwX2Nsa21ncl9iYXNlLT5tYWlu X3BsbF9jbnRyMTVjbGspOworCisJLyogc2V0dXAgYWxsIHRoZSBwZXJpcGhlcmFsIFBMTCBjb3Vu dGVyIGFuZCBjbG9jayBzb3VyY2UgKi8KKwkvKiBwZXJpX2VtYWNhX2NsayBkaXZpZGVyICovCisJ d3JpdGVsKHBlcl9jZmctPmNudHIyY2xrX2NudCB8CisJICAgICAgIChwZXJfY2ZnLT5jbnRyMmNs a19zcmMgPDwgQVJSSUExMF9DTEtNR1JfUEVSUExMX0NOVFIyQ0xLX1NSQ19MU0IpLAorCSAgICAg ICAmYXJyaWExMF9jbGttZ3JfYmFzZS0+cGVyX3BsbF9jbnRyMmNsayk7CisJLyogcGVyaV9lbWFj Yl9jbGsgZGl2aWRlciAqLworCXdyaXRlbChwZXJfY2ZnLT5jbnRyM2Nsa19jbnQgfAorCSAgICAg ICAocGVyX2NmZy0+Y250cjNjbGtfc3JjIDw8IEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9DTlRSM0NM S19TUkNfTFNCKSwKKwkgICAgICAgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPnBlcl9wbGxfY250cjNj bGspOworCS8qIHBlcmlfZW1hY19wdHBfY2xrIGRpdmlkZXIgKi8KKwl3cml0ZWwocGVyX2NmZy0+ Y250cjRjbGtfY250IHwKKwkgICAgICAgKHBlcl9jZmctPmNudHI0Y2xrX3NyYyA8PCBBUlJJQTEw X0NMS01HUl9QRVJQTExfQ05UUjRDTEtfU1JDX0xTQiksCisJICAgICAgICZhcnJpYTEwX2Nsa21n cl9iYXNlLT5wZXJfcGxsX2NudHI0Y2xrKTsKKwkvKiBwZXJpX2dwaW9fZGJfY2xrIGRpdmlkZXIg Ki8KKwl3cml0ZWwocGVyX2NmZy0+Y250cjVjbGtfY250IHwKKwkgICAgICAgKHBlcl9jZmctPmNu dHI1Y2xrX3NyYyA8PCBBUlJJQTEwX0NMS01HUl9QRVJQTExfQ05UUjVDTEtfU1JDX0xTQiksCisJ ICAgICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5wZXJfcGxsX2NudHI1Y2xrKTsKKwkvKiBwZXJp X3NkbW1jX2NsayBkaXZpZGVyICovCisJd3JpdGVsKHBlcl9jZmctPmNudHI2Y2xrX2NudCB8CisJ ICAgICAgIChwZXJfY2ZnLT5jbnRyNmNsa19zcmMgPDwgQVJSSUExMF9DTEtNR1JfUEVSUExMX0NO VFI2Q0xLX1NSQ19MU0IpLAorCSAgICAgICAmYXJyaWExMF9jbGttZ3JfYmFzZS0+cGVyX3BsbF9j bnRyNmNsayk7CisJLyogcGVyaV9zMmZfdXNlcjBfY2xrIGRpdmlkZXIgKi8KKwl3cml0ZWwocGVy X2NmZy0+Y250cjdjbGtfY250LCAmYXJyaWExMF9jbGttZ3JfYmFzZS0+cGVyX3BsbF9jbnRyN2Ns ayk7CisJLyogcGVyaV9zMmZfdXNlcjFfY2xrIGRpdmlkZXIgKi8KKwl3cml0ZWwocGVyX2NmZy0+ Y250cjhjbGtfY250IHwKKwkgICAgICAgKHBlcl9jZmctPmNudHI4Y2xrX3NyYyA8PCBBUlJJQTEw X0NMS01HUl9QRVJQTExfQ05UUjhDTEtfU1JDX0xTQiksCisJICAgICAgICZhcnJpYTEwX2Nsa21n cl9iYXNlLT5wZXJfcGxsX2NudHI4Y2xrKTsKKwkvKiBwZXJpX2htY19wbGxfY2xrIGRpdmlkZXIg Ki8KKwl3cml0ZWwocGVyX2NmZy0+Y250cjljbGtfY250LCAmYXJyaWExMF9jbGttZ3JfYmFzZS0+ cGVyX3BsbF9jbnRyOWNsayk7CisKKwkvKiBzZXR1cCBhbGwgdGhlIGV4dGVybmFsIFBMTCBjb3Vu dGVyICovCisJLyogbXB1IHdyYXBwZXIgLyBleHRlcm5hbCBkaXZpZGVyICovCisJd3JpdGVsKG1h aW5fY2ZnLT5tcHVjbGtfY250IHwKKwkgICAgICAgKG1haW5fY2ZnLT5tcHVjbGtfc3JjIDw8IEFS UklBMTBfQ0xLTUdSX01BSU5QTExfTVBVQ0xLX1NSQ19MU0IpLAorCSAgICAgICAmYXJyaWExMF9j bGttZ3JfYmFzZS0+bWFpbl9wbGxfbXB1Y2xrKTsKKwkvKiBOT0Mgd3JhcHBlciAvIGV4dGVybmFs IGRpdmlkZXIgKi8KKwl3cml0ZWwobWFpbl9jZmctPm5vY2Nsa19jbnQgfAorCSAgICAgICAobWFp bl9jZmctPm5vY2Nsa19zcmMgPDwgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NDTEtfU1JDX0xT QiksCisJICAgICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5tYWluX3BsbF9ub2NjbGspOworCS8q IE5PQyBzdWJjbG9jayBkaXZpZGVyIHN1Y2ggYXMgbDQgKi8KKwl3cml0ZWwobWFpbl9jZmctPm5v Y2Rpdl9sNG1haW5jbGsgfAorCSAgICAgICAobWFpbl9jZmctPm5vY2Rpdl9sNG1wY2xrIDw8IEFS UklBMTBfQ0xLTUdSX01BSU5QTExfTk9DRElWX0w0TVBDTEtfTFNCKSB8CisJICAgICAgIChtYWlu X2NmZy0+bm9jZGl2X2w0c3BjbGsgPDwgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NESVZfTDRT UENMS19MU0IpIHwKKwkgICAgICAgKG1haW5fY2ZnLT5ub2NkaXZfY3NhdGNsayA8PCBBUlJJQTEw X0NMS01HUl9NQUlOUExMX05PQ0RJVl9DU0FUQ0xLX0xTQikgfAorCSAgICAgICAobWFpbl9jZmct Pm5vY2Rpdl9jc3RyYWNlY2xrIDw8IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTk9DRElWX0NTVFJB Q0VDTEtfTFNCKSB8CisJICAgICAgIChtYWluX2NmZy0+bm9jZGl2X2NzcGRiZ2NsayA8PCBBUlJJ QTEwX0NMS01HUl9NQUlOUExMX05PQ0RJVl9DU1BEQkdDTEtfTFNCKSwKKwkgICAgICAgJmFycmlh MTBfY2xrbWdyX2Jhc2UtPm1haW5fcGxsX25vY2Rpdik7CisJLyogZ3Bpb19kYiBleHRlcm5hbCBk aXZpZGVyICovCisJd3JpdGVsKHBlcl9jZmctPmdwaW9kaXZfZ3Bpb2RiY2xrLCAmYXJyaWExMF9j bGttZ3JfYmFzZS0+cGVyX3BsbF9ncGlvZGl2KTsKKworCS8qIHNldHVwIHRoZSBFTUFDIGNsb2Nr IG11eCBzZWxlY3QgKi8KKwl3cml0ZWwoKHBlcl9jZmctPmVtYWNjdGxfZW1hYzBzZWwgPCBBUlJJ QTEwX0NMS01HUl9QRVJQTExfRU1BQ0NUTF9FTUFDMFNFTF9MU0IpIHwKKwkgICAgICAgKHBlcl9j ZmctPmVtYWNjdGxfZW1hYzFzZWwgPDwgQVJSSUExMF9DTEtNR1JfUEVSUExMX0VNQUNDVExfRU1B QzFTRUxfTFNCKSB8CisJICAgICAgIChwZXJfY2ZnLT5lbWFjY3RsX2VtYWMyc2VsIDw8IEFSUklB MTBfQ0xLTUdSX1BFUlBMTF9FTUFDQ1RMX0VNQUMyU0VMX0xTQiksCisJICAgICAgICZhcnJpYTEw X2Nsa21ncl9iYXNlLT5wZXJfcGxsX2VtYWNjdGwpOworCisJLyogYXQgdGhpcyBzdGFnZSwgY2hl Y2sgZm9yIFBMTCBsb2NrIHN0YXR1cyAqLworCWFycmlhMTBfY21fd2FpdF9mb3JfbG9jayhMT0NL RURfTUFTSyk7CisKKwkvKgorCSAqIGFmdGVyIGxvY2tpbmcsIGJ1dCBiZWZvcmUgdGFraW5nIG91 dCBvZiBieXBhc3MsCisJICogYXNzZXJ0L2RlYXNzZXJ0IG91dHJlc2V0YWxsCisJICovCisKKwkv KiBhc3NlcnQgbWFpbnBsbCBvdXRyZXNldGFsbCAqLworCXNldGJpdHNfbGUzMigmYXJyaWExMF9j bGttZ3JfYmFzZS0+bWFpbl9wbGxfdmNvMCwKKwkJICAgICBBUlJJQTEwX0NMS01HUl9NQUlOUExM X1ZDTzBfT1VUUlNUQUxMX1NFVF9NU0spOworCS8qIGFzc2VydCBwZXJwbGwgb3V0cmVzZXRhbGwg Ki8KKwlzZXRiaXRzX2xlMzIoJmFycmlhMTBfY2xrbWdyX2Jhc2UtPnBlcl9wbGxfdmNvMCwKKwkJ ICAgICBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMF9PVVRSU1RBTExfU0VUX01TSyk7CisJLyog ZGUtYXNzZXJ0IG1haW5wbGwgb3V0cmVzZXRhbGwgKi8KKwljbHJiaXRzX2xlMzIoJmFycmlhMTBf Y2xrbWdyX2Jhc2UtPm1haW5fcGxsX3ZjbzAsCisJCSAgICAgQVJSSUExMF9DTEtNR1JfTUFJTlBM TF9WQ08wX09VVFJTVEFMTF9TRVRfTVNLKTsKKwkvKiBkZS1hc3NlcnQgcGVycGxsIG91dHJlc2V0 YWxsICovCisJY2xyYml0c19sZTMyKCZhcnJpYTEwX2Nsa21ncl9iYXNlLT5wZXJfcGxsX3ZjbzAs CisJCSAgICAgQVJSSUExMF9DTEtNR1JfUEVSUExMX1ZDTzBfT1VUUlNUQUxMX1NFVF9NU0spOwor CisJLyoKKwkgKiBUYWtlIGFsbCBQTExzIG91dCBvZiBieXBhc3Mgd2hlbiBib290IG1vZGUgaXMg Y2xlYXJlZC4KKwkgKiByZWxlYXNlIG1haW5wbGwgZnJvbSBieXBhc3MKKwkgKi8KKwl3cml0ZWwo QVJSSUExMF9DTEtNR1JfTUFJTlBMTF9CWVBBU1NfUkVTRVQsCisJICAgICAgICZhcnJpYTEwX2Ns a21ncl9iYXNlLT5tYWluX3BsbF9ieXBhc3NyKTsKKwkvKiB3YWl0IHRpbGwgQ2xvY2sgTWFuYWdl ciBpcyBub3QgYnVzeSAqLworCWFycmlhMTBfY21fd2FpdDRmc20oKTsKKworCS8qIHJlbGVhc2Ug cGVycGxsIGZyb20gYnlwYXNzICovCisJd3JpdGVsKEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9CWVBB U1NfUkVTRVQsCisJICAgICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5wZXJfcGxsX2J5cGFzc3Ip OworCS8qIHdhaXQgdGlsbCBDbG9jayBNYW5hZ2VyIGlzIG5vdCBidXN5ICovCisJYXJyaWExMF9j bV93YWl0NGZzbSgpOworCisJLyogY2xlYXIgYm9vdCBtb2RlICovCisJY2xyYml0c19sZTMyKCZh cnJpYTEwX2Nsa21ncl9iYXNlLT5jdHJsLAorCQkgICAgIEFSUklBMTBfQ0xLTUdSX0NMS01HUl9D VExfQk9PVE1PRF9TRVRfTVNLKTsKKwkvKiB3YWl0IHRpbGwgQ2xvY2sgTWFuYWdlciBpcyBub3Qg YnVzeSAqLworCWFycmlhMTBfY21fd2FpdDRmc20oKTsKKworCS8qIEF0IGhlcmUsIHdlIG5lZWQg dG8gcmFtcCB0byBmaW5hbCB2YWx1ZSBpZiBuZWVkZWQgKi8KKwlpZiAocGxsX3JhbXBfbWFpbl9o eiAhPSAwKQorCQlhcnJpYTEwX2NtX3BsbF9yYW1wX21haW4obWFpbl9jZmcsIHBlcl9jZmcsIHBs bF9yYW1wX21haW5faHopOworCWlmIChwbGxfcmFtcF9wZXJpcGhfaHogIT0gMCkKKwkJYXJyaWEx MF9jbV9wbGxfcmFtcF9wZXJpcGgobWFpbl9jZmcsIHBlcl9jZmcsIHBsbF9yYW1wX3BlcmlwaF9o eik7CisKKwkvKiBOb3cgdW5nYXRlIG5vbi1ody1tYW5hZ2VkIGNsb2NrcyAqLworCXdyaXRlbChB UlJJQTEwX0NMS01HUl9NQUlOUExMX0VOX1MyRlVTRVIwQ0xLRU5fU0VUX01TSyB8CisJICAgICAg IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfRU5fSE1DUExMUkVGQ0xLRU5fU0VUX01TSywKKwkgICAg ICAgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPm1haW5fcGxsX2Vucyk7CisJd3JpdGVsKEFSUklBMTBf Q0xLTUdSX1BFUlBMTF9FTl9SRVNFVCwKKwkgICAgICAgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPnBl cl9wbGxfZW5zKTsKKworCS8qCisJICogQ2xlYXIgdGhlIGxvc3MgbG9jayBhbmQgc2xpcCBiaXRz IGFzIHRoZXkgbWlnaHQgc2V0IGR1cmluZworCSAqIGNsb2NrIHJlY29uZmlndXJhdGlvbgorCSAq LworCXdyaXRlbChBUlJJQTEwX0NMS01HUl9DTEtNR1JfSU5UUl9NQUlOUExMTE9TVF9TRVRfTVNL IHwKKwkgICAgICAgQVJSSUExMF9DTEtNR1JfQ0xLTUdSX0lOVFJfUEVSUExMTE9TVF9TRVRfTVNL IHwKKwkgICAgICAgQVJSSUExMF9DTEtNR1JfQ0xLTUdSX0lOVFJfTUFJTlBMTFJGU0xJUF9TRVRf TVNLIHwKKwkgICAgICAgQVJSSUExMF9DTEtNR1JfQ0xLTUdSX0lOVFJfUEVSUExMUkZTTElQX1NF VF9NU0sgfAorCSAgICAgICBBUlJJQTEwX0NMS01HUl9DTEtNR1JfSU5UUl9NQUlOUExMRkJTTElQ X1NFVF9NU0sgfAorCSAgICAgICBBUlJJQTEwX0NMS01HUl9DTEtNR1JfSU5UUl9QRVJQTExGQlNM SVBfU0VUX01TSywKKwkgICAgICAgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPmludHIpOworCisJcmV0 dXJuIDA7Cit9CisKK2ludCBhcnJpYTEwX2NtX2Jhc2ljX2luaXQoc3RydWN0IGFycmlhMTBfbWFp bnBsbF9jZmcgKm1haW5wbGwsCisJCQkgIHN0cnVjdCBhcnJpYTEwX3BlcnBsbF9jZmcgKnBlcnBs bCkKK3sKKwlyZXR1cm4gYXJyaWExMF9jbV9mdWxsX2NmZyhtYWlucGxsLCBwZXJwbGwpOworfQor Cit2b2lkIGFycmlhMTBfY21fdXNlX2ludG9zYyh2b2lkKQoreworCXNldGJpdHNfbGUzMigmYXJy aWExMF9jbGttZ3JfYmFzZS0+Y3RybCwKKwkJICAgICBBUlJJQTEwX0NMS01HUl9DTEtNR1JfQ1RM X0JPT1RDTEtfSU5UT1NDX1NFVF9NU0spOworfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1z b2NmcGdhL2FycmlhMTAtZ2VuZXJpYy5jIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2FycmlhMTAt Z2VuZXJpYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjgxMjll YWYyM2ZmCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2FycmlhMTAt Z2VuZXJpYy5jCkBAIC0wLDAgKzEsODUgQEAKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRl IDxpby5oPgorI2luY2x1ZGUgPGluaXQuaD4KKyNpbmNsdWRlIDxyZXN0YXJ0Lmg+CisjaW5jbHVk ZSA8bWFjaC9nZW5lcmljLmg+CisjaW5jbHVkZSA8bWFjaC9hcnJpYTEwLXJlc2V0LW1hbmFnZXIu aD4KKyNpbmNsdWRlIDxtYWNoL2FycmlhMTAtc3lzdGVtLW1hbmFnZXIuaD4KKyNpbmNsdWRlIDxt YWNoL2FycmlhMTAtcmVncy5oPgorCisvKiBTb21lIGluaXRpYWxpemF0aW9uIGZvciB0aGUgRU1B QyAqLworc3RhdGljIHZvaWQgYXJyaWExMF9pbml0X2VtYWModm9pZCkKK3sKKwl1aW50MzJfdCBy c3QsIHZhbDsKKworCS8qIE5vIG5lZWQgZm9yIHRoaXMgd2l0aG91dCBuZXR3b3JrIHN1cHBvcnQs IGUuZy4geGxvYWRlciBidWlsZCAqLworCWlmICghSVNfRU5BQkxFRChDT05GSUdfTkVUKSkKKwkJ cmV0dXJuOworCisJcnN0ID0gcmVhZGwoQVJSSUExMF9SU1RNR1JfQUREUiArIEFSUklBMTBfUlNU TUdSX1BFUjBNT0RSU1QpOworCXJzdCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUMw IHwKKwkgICAgICAgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDMSB8CisJICAgICAgIEFS UklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQzI7CisKKwl3cml0ZWwocnN0LCBBUlJJQTEwX1JT VE1HUl9BRERSICsgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVCk7CisJdmFsID0gcmVhZGwoQVJS SUExMF9TWVNNR1JfRU1BQzApOworCXZhbCAmPSB+KEFSUklBMTBfU1lTTUdSX0VNQUNHUlBfQ1RS TF9QSFlTRUxfTUFTSyk7CisJdmFsIHw9IEFSUklBMTBfU1lTTUdSX0VNQUNHUlBfQ1RSTF9QSFlT RUxfRU5VTV9SR01JSTsKKwl3cml0ZWwodmFsLCBBUlJJQTEwX1NZU01HUl9FTUFDMCk7CisKKwl2 YWwgPSByZWFkbChBUlJJQTEwX1NZU01HUl9FTUFDMSk7CisJdmFsICY9IH4oQVJSSUExMF9TWVNN R1JfRU1BQ0dSUF9DVFJMX1BIWVNFTF9NQVNLKTsKKwl2YWwgfD0gQVJSSUExMF9TWVNNR1JfRU1B Q0dSUF9DVFJMX1BIWVNFTF9FTlVNX1JHTUlJOworCXdyaXRlbCh2YWwsIEFSUklBMTBfU1lTTUdS X0VNQUMxKTsKKworCXZhbCA9IHJlYWRsKEFSUklBMTBfU1lTTUdSX0VNQUMyKTsKKwl2YWwgJj0g fihBUlJJQTEwX1NZU01HUl9FTUFDR1JQX0NUUkxfUEhZU0VMX01BU0spOworCXZhbCB8PSBBUlJJ QTEwX1NZU01HUl9FTUFDR1JQX0NUUkxfUEhZU0VMX0VOVU1fUkdNSUk7CisJd3JpdGVsKHZhbCwg QVJSSUExMF9TWVNNR1JfRU1BQzIpOworCisJdmFsID0gcmVhZGwoQVJSSUExMF9TWVNNR1JfRlBH QUlOVEZfRU5fMyk7CisJdmFsICY9IH4oQVJSSUExMF9TWVNNR1JfRlBHQUlOVEZfRU4zX0VNQUMw IHwKKwkJIEFSUklBMTBfU1lTTUdSX0ZQR0FJTlRGX0VOM19FTUFDMF9TVyB8CisJCSBBUlJJQTEw X1NZU01HUl9GUEdBSU5URl9FTjNfRU1BQzEgfAorCQkgQVJSSUExMF9TWVNNR1JfRlBHQUlOVEZf RU4zX0VNQUMxX1NXIHwKKwkJIEFSUklBMTBfU1lTTUdSX0ZQR0FJTlRGX0VOM19FTUFDMiB8CisJ CSBBUlJJQTEwX1NZU01HUl9GUEdBSU5URl9FTjNfRU1BQzJfU1cpOworCisJcnN0ID0gcmVhZGwo QVJSSUExMF9SU1RNR1JfQUREUiArIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1QpOworCXJzdCAm PSB+KEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQzAgfAorCQkgQVJSSUExMF9SU1RNR1Jf UEVSME1PRFJTVF9FTUFDMSB8CisJCSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUMyKTsK Kwl3cml0ZWwocnN0LCBBUlJJQTEwX1JTVE1HUl9BRERSICsgQVJSSUExMF9SU1RNR1JfUEVSME1P RFJTVCk7Cit9CisKKy8qIFdyaXRlIHRoZSByZXNldCBtYW5hZ2VyIHJlZ2lzdGVyIHRvIGNhdXNl IHJlc2V0ICovCitzdGF0aWMgdm9pZCBfX25vcmV0dXJuIGFycmlhMTBfcmVzdGFydF9zb2Moc3Ry dWN0IHJlc3RhcnRfaGFuZGxlciAqcnN0KQoreworCS8qIHJlcXVlc3QgYSB3YXJtIHJlc2V0ICov CisJd3JpdGVsKEFSUklBMTBfUlNUTUdSX0NUTF9TV1dBUk1SU1RSRVEsCisJICAgICAgIEFSUklB MTBfUlNUTUdSX0FERFIgKyBBUlJJQTEwX1JTVE1HUl9DVFJMKTsKKwkvKgorCSAqIGluZmluaXRl IGxvb3AgaGVyZSBhcyB3YXRjaGRvZyB3aWxsIHRyaWdnZXIgYW5kIHJlc2V0CisJICogdGhlIHBy b2Nlc3NvcgorCSAqLworCWhhbmcoKTsKK30KKworc3RhdGljIGludCBhcnJpYTEwX2dlbmVyaWNf aW5pdCh2b2lkKQoreworCWJhcmVib3hfc2V0X21vZGVsKCJTb0NGUEdBIEFycmlhMTAiKTsKKwor CXByX2RlYnVnKCJTZXR0aW5nIFNETU1DIHBoYXNlIHNoaWZ0cyBmb3IgQXJyaWExMFxuIik7CisJ d3JpdGVsKEFSUklBMTBfU1lTTUdSX1NETU1DX0RSVlNFTCgzKSB8CisJICAgICAgIEFSUklBMTBf U1lTTUdSX1NETU1DX1NNUExTRUwoMCksCisJICAgICAgIEFSUklBMTBfU1lTTUdSX1NETU1DKTsK KworCXByX2RlYnVnKCJJbml0aWFsaXplIEVNQUNzXG4iKTsKKwlhcnJpYTEwX2luaXRfZW1hYygp OworCisJcHJfZGVidWcoIlJlZ2lzdGVyIHJlc3RhcnQgaGFuZGxlclxuIik7CisJcmVzdGFydF9o YW5kbGVyX3JlZ2lzdGVyX2ZuKGFycmlhMTBfcmVzdGFydF9zb2MpOworCisJcmV0dXJuIDA7Cit9 Citwb3N0Y29yZV9pbml0Y2FsbChhcnJpYTEwX2dlbmVyaWNfaW5pdCk7CmRpZmYgLS1naXQgYS9h cmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJyaWExMC1pbml0LmMgYi9hcmNoL2FybS9tYWNoLXNvY2Zw Z2EvYXJyaWExMC1pbml0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li45YmY5ODZmMzk4ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2Ev YXJyaWExMC1pbml0LmMKQEAgLTAsMCArMSwyNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw MTQgQWx0ZXJhIENvcnBvcmF0aW9uIDx3d3cuYWx0ZXJhLmNvbT4KKyAqCisgKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjoJR1BMLTIuMAorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNs dWRlIDxkZWJ1Z19sbC5oPgorI2luY2x1ZGUgPG1hY2gvYXJyaWExMC1yZWdzLmg+CisjaW5jbHVk ZSA8bWFjaC9hcnJpYTEwLWNsb2NrLW1hbmFnZXIuaD4KKyNpbmNsdWRlIDxtYWNoL2FycmlhMTAt cGlubXV4Lmg+CisjaW5jbHVkZSA8bWFjaC9hcnJpYTEwLXJlc2V0LW1hbmFnZXIuaD4KKyNpbmNs dWRlIDxtYWNoL2FycmlhMTAtc3lzdGVtLW1hbmFnZXIuaD4KKyNpbmNsdWRlIDxtYWNoL2dlbmVy aWMuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vY2FjaGUtbDJ4MC5oPgor I2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KKworI2RlZmluZSBMMzEwX0FVWF9DVFJMX0VBUkxZX0JS RVNQCQlCSVQoMzApCS8qIFIyUDArICovCisjZGVmaW5lIEwzMTBfQVVYX0NUUkxfTlNfTE9DS0RP V04JCUJJVCgyNikKKyNkZWZpbmUgTDMxMF9BVVhfQ1RSTF9GVUxMX0xJTkVfWkVSTwkJQklUKDAp CS8qIFIyUDArICovCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfYXV4Y3IodW5zaWduZWQgaW50 IHZhbCkKK3sKKwlhc20gdm9sYXRpbGUoIm1jciBwMTUsIDAsICUwLCBjMSwgYzAsIDEJQCBzZXQg QVVYQ1IiCisJCSAgICAgOiA6ICJyIiAodmFsKSk7CisJaXNiKCk7Cit9CisKK3N0YXRpYyBpbmxp bmUgdW5zaWduZWQgaW50IGdldF9hdXhjcih2b2lkKQoreworCXVuc2lnbmVkIGludCB2YWw7CisK Kwlhc20oIm1yYyBwMTUsIDAsICUwLCBjMSwgYzAsIDEJQCBnZXQgQVVYQ1IiIDogIj1yIiAodmFs KSk7CisJcmV0dXJuIHZhbDsKK30KKworc3RhdGljIHZvaWQgbDJjMzEwX2Rpc2FibGUodm9pZCBf X2lvbWVtICpiYXNlKQoreworCXUzMiBhdXg7CisJaW50IHdheXMgPSA4OworCisJYXV4ID0gcmVh ZGwoYmFzZSArIEwyWDBfQVVYX0NUUkwpOworCisJLyoKKwkgKiBJZiBmdWxsLWxpbmUtb2YtemVy b3MgaXMgZW5hYmxlZCwgd2UgbXVzdCBmaXJzdCBkaXNhYmxlIGl0IGluIHRoZQorCSAqIENvcnRl eC1BOSBhdXhpbGlhcnkgY29udHJvbCByZWdpc3RlciBiZWZvcmUgZGlzYWJsaW5nIHRoZSBMMiBj YWNoZS4KKwkgKi8KKwlpZiAoYXV4ICYgTDMxMF9BVVhfQ1RSTF9GVUxMX0xJTkVfWkVSTykKKwkJ c2V0X2F1eGNyKGdldF9hdXhjcigpICYgfihCSVQoMykgfCBCSVQoMikgfCBCSVQoMSkpKTsKKwor CS8qIGZsdXNoIGFsbCB3YXlzICovCisJd3JpdGVsKCgxIDw8IHdheXMpIC0gMSwgYmFzZSArIEwy WDBfSU5WX1dBWSk7CisKKwl3aGlsZSAocmVhZGwoYmFzZSArIEwyWDBfSU5WX1dBWSkgJiB3YXlz KQorCQk7CisKKwkvKiBzeW5jICovCisJd3JpdGVsKDAsIGJhc2UgKyBMMlgwX0NBQ0hFX1NZTkMp OworCisJLyogZGlzYWJsZSAqLworCXdyaXRlbCgwLCBiYXNlICsgTDJYMF9DVFJMKTsKKwlkc2Io KTsKK30KKworc3RhdGljIHZvaWQgYXJyaWExMF9pbml0aWFsaXplX3NlY3VyaXR5X3BvbGljaWVz KHZvaWQpCit7CisJdm9pZCBfX2lvbWVtICpsMngwX2Jhc2UgPSAodm9pZCBfX2lvbWVtICopIDB4 ZmZmZmYwMDA7CisKKwkvKiBCb290Uk9NIGxlYXZlcyB0aGUgTDJYMCBpbiBhIHdlaXJkIHN0YXRl LiBBbHdheXMgZGlzYWJsZSBMMlgwIGZvciBub3cuICovCisJbDJjMzEwX2Rpc2FibGUobDJ4MF9i YXNlKTsKKworCS8qIFB1dCBPQ1JBTSBpbiBub24tc2VjdXJlICovCisJd3JpdGVsKDB4MDAzZjAw MDAsIEFSUklBMTBfTk9DX0ZXX09DUkFNX09DUkFNX1NDUl9SRUdJT04wKTsKKwl3cml0ZWwoMHgx LCBBUlJJQTEwX05PQ19GV19PQ1JBTV9PQ1JBTV9TQ1JfRU4pOworCisJLyogUHV0IEREUiBpbiBu b24tc2VjdXJlICovCisJd3JpdGVsKDB4ZmZmZjAwMDAsIEFSUklBMTBfTk9DX0ZXX0REUl9MM19E RFJfU0NSX1JFR0lPTjApOworCXdyaXRlbCgweDEsIEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJf U0NSX0VOKTsKKworCS8qIEVuYWJsZSBwcml2aWxlZGdlIGFuZCBub24gcHJpdmlsZWRnZSBhY2Nl c3MgdG8gTDQgcGVyaXBoZXJhbHMgKi8KKwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0Nf TDRfUFJJVl9MNF9QUklWX0w0X1BSSVYpOworCisJLyogRW5hYmxlIHNlY3VyZSBhbmQgbm9uIHNl Y3VyZSB0cmFuc2FjdGlvbiB0byBicmlkZ2VzICovCisJd3JpdGVsKDB4ZmZmZmZmZmYsIEFSUklB MTBfTk9DX0ZXX1NPQzJGUEdBX1NPQzJGUEdBX1NDUl9MV1NPQzJGUEdBKTsKKwl3cml0ZWwoMHhm ZmZmZmZmZiwgQVJSSUExMF9OT0NfRldfU09DMkZQR0FfU09DMkZQR0FfU0NSX1NPQzJGUEdBKTsK KworCS8qIGFsbG93IG5vbi1zZWN1cmUgYW5kIHNlY3VyZSB0cmFuc2FjdGlvbiBmcm9tL3RvIGFs bCBwZXJpcGhlcmFscyAqLworCXdyaXRlbCgweGZmZmZmZmZmLCBBUlJJQTEwX05PQ19GV19MNF9Q RVJfU0NSX05BTkRfUkVHKTsKKwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0NfRldfTDRf UEVSX1NDUl9OQU5EX0RBVEEpOworCXdyaXRlbCgweGZmZmZmZmZmLCBBUlJJQTEwX05PQ19GV19M NF9QRVJfU0NSX1FTUElfREFUQSk7CisJd3JpdGVsKDB4ZmZmZmZmZmYsIEFSUklBMTBfTk9DX0ZX X0w0X1BFUl9TQ1JfVVNCMF9SRUcpOworCXdyaXRlbCgweGZmZmZmZmZmLCBBUlJJQTEwX05PQ19G V19MNF9QRVJfU0NSX1VTQjFfUkVHKTsKKwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0Nf RldfTDRfUEVSX1NDUl9TUElNMCk7CisJd3JpdGVsKDB4ZmZmZmZmZmYsIEFSUklBMTBfTk9DX0ZX X0w0X1BFUl9TQ1JfU1BJTTEpOworCXdyaXRlbCgweGZmZmZmZmZmLCBBUlJJQTEwX05PQ19GV19M NF9QRVJfU0NSX1NQSVMwKTsKKwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0NfRldfTDRf UEVSX1NDUl9TUElTMSk7CisJd3JpdGVsKDB4ZmZmZmZmZmYsIEFSUklBMTBfTk9DX0ZXX0w0X1BF Ul9TQ1JfRU1BQzApOworCXdyaXRlbCgweGZmZmZmZmZmLCBBUlJJQTEwX05PQ19GV19MNF9QRVJf U0NSX0VNQUMxKTsKKwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0NfRldfTDRfUEVSX1ND Ul9FTUFDMik7CisJd3JpdGVsKDB4ZmZmZmZmZmYsIEFSUklBMTBfTk9DX0ZXX0w0X1BFUl9TQ1Jf RU1BQzMpOworCXdyaXRlbCgweGZmZmZmZmZmLCBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX1FT UEkpOworCXdyaXRlbCgweGZmZmZmZmZmLCBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX1NETU1D KTsKKwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9HUElPMCk7 CisJd3JpdGVsKDB4ZmZmZmZmZmYsIEFSUklBMTBfTk9DX0ZXX0w0X1BFUl9TQ1JfR1BJTzEpOwor CXdyaXRlbCgweGZmZmZmZmZmLCBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX0dQSU8yKTsKKwl3 cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9JMkMwKTsKKwl3cml0 ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9JMkMxKTsKKwl3cml0ZWwo MHhmZmZmZmZmZiwgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9JMkMyKTsKKwl3cml0ZWwoMHhm ZmZmZmZmZiwgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9JMkMzKTsKKwl3cml0ZWwoMHhmZmZm ZmZmZiwgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9JMkM0KTsKKwl3cml0ZWwoMHhmZmZmZmZm ZiwgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9TUFRJTUVSMCk7CisJd3JpdGVsKDB4ZmZmZmZm ZmYsIEFSUklBMTBfTk9DX0ZXX0w0X1BFUl9TQ1JfU1BUSU1FUjEpOworCXdyaXRlbCgweGZmZmZm ZmZmLCBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX1VBUlQwKTsKKwl3cml0ZWwoMHhmZmZmZmZm ZiwgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9VQVJUMSk7CisKKwkvKiBSZXR1cm4gZXJyb3Ig aW5zdGVhZCBvZiByYW5kb20gZGF0YSAqLworCXdyaXRlbCgweDEsIEFSUklBMTBfTk9DX0ZXX0RE Ul9MM19ERFJfU0NSX0dMT0JBTCk7Cit9CisKK3N0YXRpYyB2b2lkIGFycmlhMTBfbWFza19lY2Nf ZXJyb3JzKHZvaWQpCit7CisJd3JpdGVsKDB4MDAwN0ZGRkYsIEFSUklBMTBfU1lTTUdSX0FERFIg KyAweDk0KTsKK30KKworLyoKKyAqIEZpcnN0IEMgZnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSB0aGUg Y3JpdGljYWwgaGFyZHdhcmUgZWFybHkKKyAqLwordm9pZCBhcnJpYTEwX2luaXQoc3RydWN0IGFy cmlhMTBfbWFpbnBsbF9jZmcgKm1haW5wbGwsCisJCSAgc3RydWN0IGFycmlhMTBfcGVycGxsX2Nm ZyAqcGVycGxsLAorCQkgIHN0cnVjdCBhcnJpYTEwX3Bpbm11eF9jZmcgKnBpbm11eCkKK3sKKwlh cnJpYTEwX2NtX3VzZV9pbnRvc2MoKTsKKworCWFycmlhMTBfaW5pdGlhbGl6ZV9zZWN1cml0eV9w b2xpY2llcygpOworCisJYXJyaWExMF9tYXNrX2VjY19lcnJvcnMoKTsKKworCS8qCisJICogQ29u ZmlndXJlIHRoZSBMMiBjb250cm9sbGVyIHRvIG1ha2UgU0RSQU0gc3RhcnQgYXQgMC4KKwkgKiBT ZXQgYWRkcmVzcyBmaWx0ZXJpbmcgc3RhcnQgdG8gMHgwIChCaXRzIFszMToyMF0pLAorCSAqIEVu YWJsZSBhZGRyZXNzIGZpbHRlcmluZyAoQml0WzBdKQorCSAqLworCXdyaXRlbCgweDAwMDAwMDAx LCBBUlJJQTEwX01QVUwyX0FEUkZMVFJfU1RBUlQpOworCXdyaXRlbCgweDAwMDAwMDAyLCBBUlJJ QTEwX1NZU01HUl9OT0NfQUREUl9SRU1BUF9WQUxVRSk7CisKKwlhcnJpYTEwX3Jlc2V0X3Blcmlw aGVyYWxzKCk7CisKKwkvKiB0aW1lciBpbml0ICovCisJd3JpdGVsKDB4ZmZmZmZmZmYsIEFSUklB MTBfT1NDMVRJTUVSMF9BRERSKTsKKwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9PU0MxVElN RVIwX0FERFIgKyAweDQpOworCXdyaXRlbCgweDAwMDAwMDAzLCBBUlJJQTEwX09TQzFUSU1FUjBf QUREUiArIDB4OCk7CisKKwkvKiBjb25maWd1cmluZyB0aGUgY2xvY2sgYmFzZWQgb24gaGFuZG9m ZiAqLworCWFycmlhMTBfY21fYmFzaWNfaW5pdChtYWlucGxsLCBwZXJwbGwpOworCisJLyogZGVk aWNhdGVkIHBpbnMgKi8KKwl3cml0ZWwocGlubXV4LT5kZWRpY2F0ZWRfaW9fNCwgQVJSSUExMF9Q SU5NVVhfREVESUNBVEVEX0lPX0FERFIgKyAweDBjKTsKKwl3cml0ZWwocGlubXV4LT5kZWRpY2F0 ZWRfaW9fNSwgQVJSSUExMF9QSU5NVVhfREVESUNBVEVEX0lPX0FERFIgKyAweDEwKTsKKwl3cml0 ZWwocGlubXV4LT5kZWRpY2F0ZWRfaW9fNiwgQVJSSUExMF9QSU5NVVhfREVESUNBVEVEX0lPX0FE RFIgKyAweDE0KTsKKwl3cml0ZWwocGlubXV4LT5kZWRpY2F0ZWRfaW9fNywgQVJSSUExMF9QSU5N VVhfREVESUNBVEVEX0lPX0FERFIgKyAweDE4KTsKKwl3cml0ZWwocGlubXV4LT5kZWRpY2F0ZWRf aW9fOCwgQVJSSUExMF9QSU5NVVhfREVESUNBVEVEX0lPX0FERFIgKyAweDFjKTsKKwl3cml0ZWwo cGlubXV4LT5kZWRpY2F0ZWRfaW9fOSwgQVJSSUExMF9QSU5NVVhfREVESUNBVEVEX0lPX0FERFIg KyAweDIwKTsKKwl3cml0ZWwocGlubXV4LT5kZWRpY2F0ZWRfaW9fMTAsIEFSUklBMTBfUElOTVVY X0RFRElDQVRFRF9JT19BRERSICsgMHgyNCk7CisJd3JpdGVsKHBpbm11eC0+ZGVkaWNhdGVkX2lv XzExLCBBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9fQUREUiArIDB4MjgpOworCXdyaXRlbChw aW5tdXgtPmRlZGljYXRlZF9pb18xMiwgQVJSSUExMF9QSU5NVVhfREVESUNBVEVEX0lPX0FERFIg KyAweDJjKTsKKwl3cml0ZWwocGlubXV4LT5kZWRpY2F0ZWRfaW9fMTMsIEFSUklBMTBfUElOTVVY X0RFRElDQVRFRF9JT19BRERSICsgMHgzMCk7CisJd3JpdGVsKHBpbm11eC0+ZGVkaWNhdGVkX2lv XzE0LCBBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9fQUREUiArIDB4MzQpOworCXdyaXRlbChw aW5tdXgtPmRlZGljYXRlZF9pb18xNSwgQVJSSUExMF9QSU5NVVhfREVESUNBVEVEX0lPX0FERFIg KyAweDM4KTsKKwl3cml0ZWwocGlubXV4LT5kZWRpY2F0ZWRfaW9fMTYsIEFSUklBMTBfUElOTVVY X0RFRElDQVRFRF9JT19BRERSICsgMHgzYyk7CisJd3JpdGVsKHBpbm11eC0+ZGVkaWNhdGVkX2lv XzE3LCBBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9fQUREUiArIDB4NDApOworCisJd3JpdGVs KHBpbm11eC0+Y2ZnX2RlZGljYXRlZF9pb19iYW5rLCBBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURf SU9fQ0ZHX0FERFIgKyAweDAwKTsKKwl3cml0ZWwocGlubXV4LT5jZmdfZGVkaWNhdGVkX2lvXzEs IEFSUklBMTBfUElOTVVYX0RFRElDQVRFRF9JT19DRkdfQUREUiArIDB4MDQpOworCXdyaXRlbChw aW5tdXgtPmNmZ19kZWRpY2F0ZWRfaW9fMiwgQVJSSUExMF9QSU5NVVhfREVESUNBVEVEX0lPX0NG R19BRERSICsgMHgwOCk7CisJd3JpdGVsKHBpbm11eC0+Y2ZnX2RlZGljYXRlZF9pb18zLCBBUlJJ QTEwX1BJTk1VWF9ERURJQ0FURURfSU9fQ0ZHX0FERFIgKyAweDBjKTsKKwl3cml0ZWwocGlubXV4 LT5jZmdfZGVkaWNhdGVkX2lvXzQsIEFSUklBMTBfUElOTVVYX0RFRElDQVRFRF9JT19DRkdfQURE UiArIDB4MTApOworCXdyaXRlbChwaW5tdXgtPmNmZ19kZWRpY2F0ZWRfaW9fNSwgQVJSSUExMF9Q SU5NVVhfREVESUNBVEVEX0lPX0NGR19BRERSICsgMHgxNCk7CisJd3JpdGVsKHBpbm11eC0+Y2Zn X2RlZGljYXRlZF9pb182LCBBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9fQ0ZHX0FERFIgKyAw eDE4KTsKKwl3cml0ZWwocGlubXV4LT5jZmdfZGVkaWNhdGVkX2lvXzcsIEFSUklBMTBfUElOTVVY X0RFRElDQVRFRF9JT19DRkdfQUREUiArIDB4MWMpOworCXdyaXRlbChwaW5tdXgtPmNmZ19kZWRp Y2F0ZWRfaW9fOCwgQVJSSUExMF9QSU5NVVhfREVESUNBVEVEX0lPX0NGR19BRERSICsgMHgyMCk7 CisJd3JpdGVsKHBpbm11eC0+Y2ZnX2RlZGljYXRlZF9pb185LCBBUlJJQTEwX1BJTk1VWF9ERURJ Q0FURURfSU9fQ0ZHX0FERFIgKyAweDI0KTsKKwl3cml0ZWwocGlubXV4LT5jZmdfZGVkaWNhdGVk X2lvXzEwLCBBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9fQ0ZHX0FERFIgKyAweDI4KTsKKwl3 cml0ZWwocGlubXV4LT5jZmdfZGVkaWNhdGVkX2lvXzExLCBBUlJJQTEwX1BJTk1VWF9ERURJQ0FU RURfSU9fQ0ZHX0FERFIgKyAweDJjKTsKKwl3cml0ZWwocGlubXV4LT5jZmdfZGVkaWNhdGVkX2lv XzEyLCBBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9fQ0ZHX0FERFIgKyAweDMwKTsKKwl3cml0 ZWwocGlubXV4LT5jZmdfZGVkaWNhdGVkX2lvXzEzLCBBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURf SU9fQ0ZHX0FERFIgKyAweDNjKTsKKwl3cml0ZWwocGlubXV4LT5jZmdfZGVkaWNhdGVkX2lvXzE0 LCBBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9fQ0ZHX0FERFIgKyAweDM4KTsKKwl3cml0ZWwo cGlubXV4LT5jZmdfZGVkaWNhdGVkX2lvXzE1LCBBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9f Q0ZHX0FERFIgKyAweDNjKTsKKwl3cml0ZWwocGlubXV4LT5jZmdfZGVkaWNhdGVkX2lvXzE2LCBB UlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9fQ0ZHX0FERFIgKyAweDQwKTsKKwl3cml0ZWwocGlu bXV4LT5jZmdfZGVkaWNhdGVkX2lvXzE3LCBBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9fQ0ZH X0FERFIgKyAweDQ0KTsKKworCS8qIGRlYXNzZXJ0IHBlcmlwaGVyYWwgcmVzZXRzICovCisJYXJy aWExMF9yZXNldF9kZWFzc2VydF9kZWRpY2F0ZWRfcGVyaXBoZXJhbHMoKTsKKworCS8qIHdhaXQg Zm9yIGZwZ2FfdXNlcm1vZGUgKi8KKwl3aGlsZSAoKHJlYWRsKDB4ZmZkMDMwODApICYgMHg2KSA9 PSAwKTsKKworCS8qIHNoYXJlZCBwaW5zICovCisJd3JpdGVsKHBpbm11eC0+c2hhcmVkX2lvX3Ex XzEsIEFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19BRERSICsgMHgwMCk7CisJd3JpdGVsKHBp bm11eC0+c2hhcmVkX2lvX3ExXzIsIEFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19BRERSICsg MHgwNCk7CisJd3JpdGVsKHBpbm11eC0+c2hhcmVkX2lvX3ExXzMsIEFSUklBMTBfUElOTVVYX1NI QVJFRF8zVl9JT19BRERSICsgMHgwOCk7CisJd3JpdGVsKHBpbm11eC0+c2hhcmVkX2lvX3ExXzQs IEFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19BRERSICsgMHgwYyk7CisJd3JpdGVsKHBpbm11 eC0+c2hhcmVkX2lvX3ExXzUsIEFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19BRERSICsgMHgx MCk7CisJd3JpdGVsKHBpbm11eC0+c2hhcmVkX2lvX3ExXzYsIEFSUklBMTBfUElOTVVYX1NIQVJF RF8zVl9JT19BRERSICsgMHgxNCk7CisJd3JpdGVsKHBpbm11eC0+c2hhcmVkX2lvX3ExXzcsIEFS UklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19BRERSICsgMHgxOCk7CisJd3JpdGVsKHBpbm11eC0+ c2hhcmVkX2lvX3ExXzgsIEFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19BRERSICsgMHgxYyk7 CisJd3JpdGVsKHBpbm11eC0+c2hhcmVkX2lvX3ExXzksIEFSUklBMTBfUElOTVVYX1NIQVJFRF8z Vl9JT19BRERSICsgMHgyMCk7CisJd3JpdGVsKHBpbm11eC0+c2hhcmVkX2lvX3ExXzEwLCBBUlJJ QTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fQUREUiArIDB4MjQpOworCXdyaXRlbChwaW5tdXgtPnNo YXJlZF9pb19xMV8xMSwgQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0FERFIgKyAweDI4KTsK Kwl3cml0ZWwocGlubXV4LT5zaGFyZWRfaW9fcTFfMTIsIEFSUklBMTBfUElOTVVYX1NIQVJFRF8z Vl9JT19BRERSICsgMHgyYyk7CisKKwl3cml0ZWwocGlubXV4LT5zaGFyZWRfaW9fcTJfMSwgQVJS SUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0FERFIgKyAweDMwKTsKKwl3cml0ZWwocGlubXV4LT5z aGFyZWRfaW9fcTJfMiwgQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0FERFIgKyAweDM0KTsK Kwl3cml0ZWwocGlubXV4LT5zaGFyZWRfaW9fcTJfMywgQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNW X0lPX0FERFIgKyAweDM4KTsKKwl3cml0ZWwocGlubXV4LT5zaGFyZWRfaW9fcTJfNCwgQVJSSUEx MF9QSU5NVVhfU0hBUkVEXzNWX0lPX0FERFIgKyAweDNjKTsKKwl3cml0ZWwocGlubXV4LT5zaGFy ZWRfaW9fcTJfNSwgQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0FERFIgKyAweDQwKTsKKwl3 cml0ZWwocGlubXV4LT5zaGFyZWRfaW9fcTJfNiwgQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lP X0FERFIgKyAweDQ0KTsKKwl3cml0ZWwocGlubXV4LT5zaGFyZWRfaW9fcTJfNywgQVJSSUExMF9Q SU5NVVhfU0hBUkVEXzNWX0lPX0FERFIgKyAweDQ4KTsKKwl3cml0ZWwocGlubXV4LT5zaGFyZWRf aW9fcTJfOCwgQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0FERFIgKyAweDRjKTsKKwl3cml0 ZWwocGlubXV4LT5zaGFyZWRfaW9fcTJfOSwgQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0FE RFIgKyAweDUwKTsKKwl3cml0ZWwocGlubXV4LT5zaGFyZWRfaW9fcTJfMTAsIEFSUklBMTBfUElO TVVYX1NIQVJFRF8zVl9JT19BRERSICsgMHg1NCk7CisJd3JpdGVsKHBpbm11eC0+c2hhcmVkX2lv X3EyXzExLCBBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fQUREUiArIDB4NTgpOworCXdyaXRl bChwaW5tdXgtPnNoYXJlZF9pb19xMl8xMiwgQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0FE RFIgKyAweDVjKTsKKworCXdyaXRlbChwaW5tdXgtPnNoYXJlZF9pb19xM18xLCBBUlJJQTEwX1BJ Tk1VWF9TSEFSRURfM1ZfSU9fQUREUiArIDB4NjApOworCXdyaXRlbChwaW5tdXgtPnNoYXJlZF9p b19xM18yLCBBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fQUREUiArIDB4NjQpOworCXdyaXRl bChwaW5tdXgtPnNoYXJlZF9pb19xM18zLCBBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fQURE UiArIDB4NjgpOworCXdyaXRlbChwaW5tdXgtPnNoYXJlZF9pb19xM180LCBBUlJJQTEwX1BJTk1V WF9TSEFSRURfM1ZfSU9fQUREUiArIDB4NmMpOworCXdyaXRlbChwaW5tdXgtPnNoYXJlZF9pb19x M181LCBBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fQUREUiArIDB4NzApOworCXdyaXRlbChw aW5tdXgtPnNoYXJlZF9pb19xM182LCBBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fQUREUiAr IDB4NzQpOworCXdyaXRlbChwaW5tdXgtPnNoYXJlZF9pb19xM183LCBBUlJJQTEwX1BJTk1VWF9T SEFSRURfM1ZfSU9fQUREUiArIDB4NzgpOworCXdyaXRlbChwaW5tdXgtPnNoYXJlZF9pb19xM184 LCBBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fQUREUiArIDB4N2MpOworCXdyaXRlbChwaW5t dXgtPnNoYXJlZF9pb19xM185LCBBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fQUREUiArIDB4 ODApOworCXdyaXRlbChwaW5tdXgtPnNoYXJlZF9pb19xM18xMCwgQVJSSUExMF9QSU5NVVhfU0hB UkVEXzNWX0lPX0FERFIgKyAweDg0KTsKKwl3cml0ZWwocGlubXV4LT5zaGFyZWRfaW9fcTNfMTEs IEFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19BRERSICsgMHg4OCk7CisJd3JpdGVsKHBpbm11 eC0+c2hhcmVkX2lvX3EzXzEyLCBBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fQUREUiArIDB4 OGMpOworCisJd3JpdGVsKHBpbm11eC0+c2hhcmVkX2lvX3E0XzEsIEFSUklBMTBfUElOTVVYX1NI QVJFRF8zVl9JT19BRERSICsgMHg5MCk7CisJd3JpdGVsKHBpbm11eC0+c2hhcmVkX2lvX3E0XzIs IEFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19BRERSICsgMHg5NCk7CisJd3JpdGVsKHBpbm11 eC0+c2hhcmVkX2lvX3E0XzMsIEFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19BRERSICsgMHg5 OCk7CisJd3JpdGVsKHBpbm11eC0+c2hhcmVkX2lvX3E0XzQsIEFSUklBMTBfUElOTVVYX1NIQVJF RF8zVl9JT19BRERSICsgMHg5Yyk7CisJd3JpdGVsKHBpbm11eC0+c2hhcmVkX2lvX3E0XzUsIEFS UklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19BRERSICsgMHhhMCk7CisJd3JpdGVsKHBpbm11eC0+ c2hhcmVkX2lvX3E0XzYsIEFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19BRERSICsgMHhhNCk7 CisJd3JpdGVsKHBpbm11eC0+c2hhcmVkX2lvX3E0XzcsIEFSUklBMTBfUElOTVVYX1NIQVJFRF8z Vl9JT19BRERSICsgMHhhOCk7CisJd3JpdGVsKHBpbm11eC0+c2hhcmVkX2lvX3E0XzgsIEFSUklB MTBfUElOTVVYX1NIQVJFRF8zVl9JT19BRERSICsgMHhhYyk7CisJd3JpdGVsKHBpbm11eC0+c2hh cmVkX2lvX3E0XzksIEFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19BRERSICsgMHhiMCk7CisJ d3JpdGVsKHBpbm11eC0+c2hhcmVkX2lvX3E0XzEwLCBBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1Zf SU9fQUREUiArIDB4YjQpOworCXdyaXRlbChwaW5tdXgtPnNoYXJlZF9pb19xNF8xMSwgQVJSSUEx MF9QSU5NVVhfU0hBUkVEXzNWX0lPX0FERFIgKyAweGI4KTsKKwl3cml0ZWwocGlubXV4LT5zaGFy ZWRfaW9fcTRfMTIsIEFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19BRERSICsgMHhiYyk7CisK KwlhcnJpYTEwX3Jlc2V0X2RlYXNzZXJ0X3NoYXJlZF9wZXJpcGhlcmFscygpOworCisJLyogdXNl ZnBnYTogc2VsZWN0IHNvdXJjZSBmb3Igc2lnbmFsczogaHBzIG9yIGZwZ2EgKi8KKwl3cml0ZWwo cGlubXV4LT5yZ21paTBfdXNlZnBnYSwgQVJSSUExMF9QSU5NVVhfRlBHQV9JTlRFUkZBQ0VfQURE UiArIDB4MDApOworCXdyaXRlbChwaW5tdXgtPnJnbWlpMV91c2VmcGdhLCBBUlJJQTEwX1BJTk1V WF9GUEdBX0lOVEVSRkFDRV9BRERSICsgMHgwNCk7CisJd3JpdGVsKHBpbm11eC0+cmdtaWkyX3Vz ZWZwZ2EsIEFSUklBMTBfUElOTVVYX0ZQR0FfSU5URVJGQUNFX0FERFIgKyAweDA4KTsKKwl3cml0 ZWwocGlubXV4LT5pMmMwX3VzZWZwZ2EsIEFSUklBMTBfUElOTVVYX0ZQR0FfSU5URVJGQUNFX0FE RFIgKyAweDBjKTsKKwl3cml0ZWwocGlubXV4LT5pMmMxX3VzZWZwZ2EsIEFSUklBMTBfUElOTVVY X0ZQR0FfSU5URVJGQUNFX0FERFIgKyAweDEwKTsKKwl3cml0ZWwocGlubXV4LT5pMmNlbWFjMF91 c2VmcGdhLCBBUlJJQTEwX1BJTk1VWF9GUEdBX0lOVEVSRkFDRV9BRERSICsgMHgxNCk7CisJd3Jp dGVsKHBpbm11eC0+aTJjZW1hYzFfdXNlZnBnYSwgQVJSSUExMF9QSU5NVVhfRlBHQV9JTlRFUkZB Q0VfQUREUiArIDB4MTgpOworCXdyaXRlbChwaW5tdXgtPmkyY2VtYWMyX3VzZWZwZ2EsIEFSUklB MTBfUElOTVVYX0ZQR0FfSU5URVJGQUNFX0FERFIgKyAweDFjKTsKKwl3cml0ZWwocGlubXV4LT5u YW5kX3VzZWZwZ2EsIEFSUklBMTBfUElOTVVYX0ZQR0FfSU5URVJGQUNFX0FERFIgKyAweDIwKTsK Kwl3cml0ZWwocGlubXV4LT5xc3BpX3VzZWZwZ2EsIEFSUklBMTBfUElOTVVYX0ZQR0FfSU5URVJG QUNFX0FERFIgKyAweDI0KTsKKwl3cml0ZWwocGlubXV4LT5zZG1tY191c2VmcGdhLCBBUlJJQTEw X1BJTk1VWF9GUEdBX0lOVEVSRkFDRV9BRERSICsgMHgyOCk7CisJd3JpdGVsKHBpbm11eC0+c3Bp bTBfdXNlZnBnYSwgQVJSSUExMF9QSU5NVVhfRlBHQV9JTlRFUkZBQ0VfQUREUiArIDB4MmMpOwor CXdyaXRlbChwaW5tdXgtPnNwaW0xX3VzZWZwZ2EsIEFSUklBMTBfUElOTVVYX0ZQR0FfSU5URVJG QUNFX0FERFIgKyAweDMwKTsKKwl3cml0ZWwocGlubXV4LT5zcGlzMF91c2VmcGdhLCBBUlJJQTEw X1BJTk1VWF9GUEdBX0lOVEVSRkFDRV9BRERSICsgMHgzNCk7CisJd3JpdGVsKHBpbm11eC0+c3Bp czFfdXNlZnBnYSwgQVJSSUExMF9QSU5NVVhfRlBHQV9JTlRFUkZBQ0VfQUREUiArIDB4MzgpOwor CXdyaXRlbChwaW5tdXgtPnVhcnQwX3VzZWZwZ2EsIEFSUklBMTBfUElOTVVYX0ZQR0FfSU5URVJG QUNFX0FERFIgKyAweDNjKTsKKwl3cml0ZWwocGlubXV4LT51YXJ0MV91c2VmcGdhLCBBUlJJQTEw X1BJTk1VWF9GUEdBX0lOVEVSRkFDRV9BRERSICsgMHg0MCk7CisKKwlhcnJpYTEwX3Jlc2V0X2Rl YXNzZXJ0X2ZwZ2FfcGVyaXBoZXJhbHMoKTsKKworCUlOSVRfTEwoKTsKK30KZGlmZiAtLWdpdCBh L2FyY2gvYXJtL21hY2gtc29jZnBnYS9hcnJpYTEwLXJlc2V0LW1hbmFnZXIuYyBiL2FyY2gvYXJt L21hY2gtc29jZnBnYS9hcnJpYTEwLXJlc2V0LW1hbmFnZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjdhN2MyMjRlOTk4OQotLS0gL2Rldi9udWxsCisrKyBiL2Fy Y2gvYXJtL21hY2gtc29jZnBnYS9hcnJpYTEwLXJlc2V0LW1hbmFnZXIuYwpAQCAtMCwwICsxLDQy MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFsdGVyYSBDb3Jwb3JhdGlvbiA8 d3d3LmFsdGVyYS5jb20+CisgKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6CUdQTC0yLjAK KyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRl IDxpby5oPgorI2luY2x1ZGUgPG1hY2gvYXJyaWExMC1yZWdzLmg+CisjaW5jbHVkZSA8bWFjaC9h cnJpYTEwLXJlc2V0LW1hbmFnZXIuaD4KKyNpbmNsdWRlIDxtYWNoL2FycmlhMTAtc3lzdGVtLW1h bmFnZXIuaD4KKwordm9pZCBhcnJpYTEwX3Jlc2V0X3BlcmlwaGVyYWxzKHZvaWQpCit7CisJdW5z aWduZWQgbWFza19lY2Nfb2NwID0gQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDRUNDMCB8 CisJCUFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQ0VDQzEgfAorCQlBUlJJQTEwX1JTVE1H Ul9QRVIwTU9EUlNUX0VNQUNFQ0MyIHwKKwkJQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9VU0JF Q0MwIHwKKwkJQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9VU0JFQ0MxIHwKKwkJQVJSSUExMF9S U1RNR1JfUEVSME1PRFJTVF9OQU5ERUNDIHwKKwkJQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9R U1BJRUNDIHwKKwkJQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9TRE1NQ0VDQzsKKworCS8qIGRp c2FibGUgYWxsIGNvbXBvbmVudHMgZXhjZXB0IEVDQ19PQ1AsIEw0IFRpbWVyMCBhbmQgTDQgV0Qw ICovCisJd3JpdGVsKDB4ZmZmZmZmZmYsIEFSUklBMTBfUlNUTUdSX0FERFIgKyBBUlJJQTEwX1JT VE1HUl9QRVIxTU9EUlNUKTsKKwlzZXRiaXRzX2xlMzIoQVJSSUExMF9SU1RNR1JfQUREUiArIEFS UklBMTBfUlNUTUdSX1BFUjBNT0RSU1QsCisJCSAgICAgfm1hc2tfZWNjX29jcCk7CisKKwkvKiBG aW5hbGx5IGRpc2FibGUgdGhlIEVDQ19PQ1AgKi8KKwlzZXRiaXRzX2xlMzIoQVJSSUExMF9SU1RN R1JfQUREUiArIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1QsCisJCSAgICAgbWFza19lY2Nfb2Nw KTsKK30KKwordm9pZCBhcnJpYTEwX3Jlc2V0X2RlYXNzZXJ0X2RlZGljYXRlZF9wZXJpcGhlcmFs cyh2b2lkKQoreworCXVpbnQzMl90IG1hc2swID0gMDsKKwl1aW50MzJfdCBtYXNrMSA9IDA7CisJ dWludDMyX3QgbWFzayA9IDA7CisKKwltYXNrIHw9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1Rf U0RNTUNFQ0M7CisJbWFzayB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1FTUElFQ0M7CisJ bWFzayB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX05BTkRFQ0M7CisJbWFzayB8PSBBUlJJ QTEwX1JTVE1HUl9QRVIwTU9EUlNUX0RNQUVDQzsKKworCS8qIGVuYWJsZSBFQ0MgT0NQIGZpcnN0 ICovCisJY2xyYml0c19sZTMyKEFSUklBMTBfUlNUTUdSX0FERFIgKyBBUlJJQTEwX1JTVE1HUl9Q RVIwTU9EUlNULCBtYXNrKTsKKworCW1hc2sgPSAwOworCW1hc2sgfD0gQVJSSUExMF9SU1RNR1Jf UEVSME1PRFJTVF9TRE1NQzsKKwltYXNrIHw9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfUVNQ STsKKwltYXNrIHw9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfTkFORDsKKwltYXNrIHw9IEFS UklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRE1BOworCisJY2xyYml0c19sZTMyKEFSUklBMTBfUlNU TUdSX0FERFIgKyBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNULCBtYXNrKTsKKworCW1hc2sgPSBB UlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX0w0U1lTVE1SMDsKKworCW1hc2sgfD0gQVJSSUExMF9S U1RNR1JfUEVSMU1PRFJTVF9VQVJUMTsKKwltYXNrIHw9IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RS U1RfVUFSVDA7CisKKwljbHJiaXRzX2xlMzIoQVJSSUExMF9SU1RNR1JfQUREUiArIEFSUklBMTBf UlNUTUdSX1BFUjFNT0RSU1QsIG1hc2spOworCisJbWFzazEgfD0gQVJSSUExMF9SU1RNR1JfUEVS MU1PRFJTVF9JMkMzOworCW1hc2sxIHw9IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfSTJDNDsK KwltYXNrMSB8PSBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX0kyQzI7CisJbWFzazAgfD0gQVJS SUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDRUNDMSB8CisJCSBBUlJJQTEwX1JTVE1HUl9QRVIw TU9EUlNUX0VNQUMxOworCW1hc2swIHw9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQ0VD QzIgfAorCQkgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDMjsKKwltYXNrMCB8PSBBUlJJ QTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUNFQ0MwIHwKKwkJIEFSUklBMTBfUlNUTUdSX1BFUjBN T0RSU1RfRU1BQzA7CisJbWFzazAgfD0gQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9TUElTMDsK KwltYXNrMCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1NQSU0wOworCW1hc2sxIHw9IEFS UklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfVUFSVDE7CisJbWFzazEgfD0gQVJSSUExMF9SU1RNR1Jf UEVSMU1PRFJTVF9HUElPMjsKKworCWNscmJpdHNfbGUzMihBUlJJQTEwX1JTVE1HUl9BRERSICsg QVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVCwKKwkJICAgICBtYXNrICYgRUNDX01BU0spOworCWNs cmJpdHNfbGUzMihBUlJJQTEwX1JTVE1HUl9BRERSICsgQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJT VCwgbWFzazEpOworCWNscmJpdHNfbGUzMihBUlJJQTEwX1JTVE1HUl9BRERSICsgQVJSSUExMF9S U1RNR1JfUEVSME1PRFJTVCwgbWFzazApOworfQorCitzdGF0aWMgY29uc3QgdWludDMyX3QgcGVy MGZwZ2FtYXNrc1tdID0geworCUFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQ0VDQzAgfAor CUFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQzAsCisJQVJSSUExMF9SU1RNR1JfUEVSME1P RFJTVF9FTUFDRUNDMSB8CisJQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDMSwKKwlBUlJJ QTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUNFQ0MyIHwKKwlBUlJJQTEwX1JTVE1HUl9QRVIwTU9E UlNUX0VNQUMyLAorCTAsIC8qIGkyYzAgcGVyMW1vZCAqLworCTAsIC8qIGkyYzEgcGVyMW1vZCAq LworCTAsIC8qIGkyYzBfZW1hYyAqLworCTAsIC8qIGkyYzFfZW1hYyAqLworCTAsIC8qIGkyYzJf ZW1hYyAqLworCUFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfTkFOREVDQyB8CisJQVJSSUExMF9S U1RNR1JfUEVSME1PRFJTVF9OQU5ELAorCUFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfUVNQSUVD QyB8CisJQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9RU1BJLAorCUFSUklBMTBfUlNUTUdSX1BF UjBNT0RSU1RfU0RNTUNFQ0MgfAorCUFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfU0RNTUMsCisJ QVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9TUElNMCwKKwlBUlJJQTEwX1JTVE1HUl9QRVIwTU9E UlNUX1NQSU0xLAorCUFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfU1BJUzAsCisJQVJSSUExMF9S U1RNR1JfUEVSME1PRFJTVF9TUElTMSwKKwkwLCAvKiB1YXJ0MCBwZXIxbW9kICovCisJMCwgLyog dWFydDEgcGVyMW1vZCAqLworfTsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IHBlcjFmcGdhbWFz a3NbXSA9IHsKKwkwLCAvKiBlbWFjMCBwZXIwbW9kICovCisJMCwgLyogZW1hYzEgcGVyMG1vZCAq LworCTAsIC8qIGVtYWMyIHBlcjBtb2QgKi8KKwlBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX0ky QzAsCisJQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9JMkMxLAorCUFSUklBMTBfUlNUTUdSX1BF UjFNT0RSU1RfSTJDMiwgLyogaTJjMF9lbWFjICovCisJQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJT VF9JMkMzLCAvKiBpMmMxX2VtYWMgKi8KKwlBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX0kyQzQs IC8qIGkyYzJfZW1hYyAqLworCTAsIC8qIG5hbmQgcGVyMG1vZCAqLworCTAsIC8qIHFzcGkgcGVy MG1vZCAqLworCTAsIC8qIHNkbW1jIHBlcjBtb2QgKi8KKwkwLCAvKiBzcGltMCBwZXIwbW9kICov CisJMCwgLyogc3BpbTEgcGVyMG1vZCAqLworCTAsIC8qIHNwaXMwIHBlcjBtb2QgKi8KKwkwLCAv KiBzcGlzMSBwZXIwbW9kICovCisJQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9VQVJUMCwKKwlB UlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX1VBUlQxLAorfTsKKwordm9pZCBhcnJpYTEwX3Jlc2V0 X2RlYXNzZXJ0X2ZwZ2FfcGVyaXBoZXJhbHModm9pZCkKK3sKKwl1aW50MzJfdCBtYXNrMCA9IDA7 CisJdWludDMyX3QgbWFzazEgPSAwOworCXVpbnQzMl90IGZwZ2FfcGludXhfYWRkciA9IEFSUklB MTBfUElOTVVYX0ZQR0FfSU5URVJGQUNFX0FERFI7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShwZXIxZnBnYW1hc2tzKTsgaSsrKSB7CisJCWlmIChyZWFkbChmcGdhX3Bp bnV4X2FkZHIpKSB7CisJCQltYXNrMCB8PSBwZXIwZnBnYW1hc2tzW2ldOworCQkJbWFzazEgfD0g cGVyMWZwZ2FtYXNrc1tpXTsKKwkJfQorCQlmcGdhX3BpbnV4X2FkZHIgKz0gc2l6ZW9mKHVpbnQz Ml90KTsKKwl9CisKKwljbHJiaXRzX2xlMzIoQVJSSUExMF9SU1RNR1JfQUREUiArIEFSUklBMTBf UlNUTUdSX1BFUjBNT0RSU1QsCisJCSAgICAgbWFzazAgJiBFQ0NfTUFTSyk7CisJY2xyYml0c19s ZTMyKEFSUklBMTBfUlNUTUdSX0FERFIgKyBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNULCBtYXNr MSk7CisJY2xyYml0c19sZTMyKEFSUklBMTBfUlNUTUdSX0FERFIgKyBBUlJJQTEwX1JTVE1HUl9Q RVIwTU9EUlNULCBtYXNrMCk7Cit9CisKK3ZvaWQgYXJyaWExMF9yZXNldF9kZWFzc2VydF9zaGFy ZWRfcGVyaXBoZXJhbHNfcTEodWludDMyX3QgKm1hc2swLAorCQkJCQkJICB1aW50MzJfdCAqbWFz azEsCisJCQkJCQkgIHVpbnQzMl90ICpwaW5tdXhfYWRkcikKK3sKKwlpbnQgaTsKKworCWZvciAo aSA9IDE7IGkgPD0gMTI7IGkrKywgKnBpbm11eF9hZGRyICs9IHNpemVvZih1aW50MzJfdCkpIHsK KwkJc3dpdGNoIChyZWFkbCgqcGlubXV4X2FkZHIpKSB7CisJCWNhc2UgMTU6CisJCQkqbWFzazEg fD0gQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9HUElPMDsKKwkJCWJyZWFrOworCQljYXNlIDE0 OgorCQkJKm1hc2swIHw9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfTkFOREVDQ3wKKwkJCQlB UlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX05BTkQ7CisJCQlicmVhazsKKwkJY2FzZSAxMzoKKwkJ CWlmICgoaSA+PSAxKSAmJiAoaSA8PSA0KSkKKwkJCQkqbWFzazEgfD0gQVJSSUExMF9SU1RNR1Jf UEVSMU1PRFJTVF9VQVJUMDsKKwkJCWVsc2UgaWYgKChpID49IDUpICYmIChpIDw9IDgpKQorCQkJ CSptYXNrMSB8PSBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX1VBUlQxOworCQkJYnJlYWs7CisJ CWNhc2UgMTI6CisJCQlpZiAoKGkgPj0gNSkgJiYgKGkgPD0gNikpCisJCQkJKm1hc2swIHw9CisJ CQkJICAgIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfUVNQSUVDQyB8CisJCQkJICAgIEFSUklB MTBfUlNUTUdSX1BFUjBNT0RSU1RfUVNQSTsKKwkJCWJyZWFrOworCQljYXNlIDg6CisJCQkqbWFz azAgfD0gQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9VU0JFQ0MwIHwKKwkJCSAgICBBUlJJQTEw X1JTVE1HUl9QRVIwTU9EUlNUX1VTQjA7CisJCQlicmVhazsKKwkJY2FzZSA0OgorCQkJaWYgKChp ID49IDEpICYmIChpIDw9IDEwKSkKKwkJCQkqbWFzazAgfD0KKwkJCQkgICAgQVJSSUExMF9SU1RN R1JfUEVSME1PRFJTVF9TRE1NQ0VDQyB8CisJCQkJICAgIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RS U1RfU0RNTUM7CisJCQlicmVhazsKKwkJY2FzZSAzOgorCQkJaWYgKChpID09IDEpIHx8ICgoaSA+ PSA1KSAmJiAoaSA8PSA4KSkpCisJCQkJKm1hc2swIHw9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RS U1RfU1BJTTA7CisJCQllbHNlIGlmICgoaSA9PSAyKSB8fCAoKGkgPj0gOSkgJiYgKGkgPD0gMTIp KSkKKwkJCQkqbWFzazAgfD0gQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9TUElNMTsKKwkJCWJy ZWFrOworCQljYXNlIDI6CisJCQlpZiAoKGkgPj0gMSkgJiYgKGkgPD0gNCkpCisJCQkJKm1hc2sw IHw9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfU1BJUzA7CisJCQllbHNlIGlmICgoaSA+PSA5 KSAmJiAoaSA8PSAxMikpCisJCQkJKm1hc2swIHw9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1Rf U1BJUzE7CisJCQlicmVhazsKKwkJY2FzZSAxOgorCQkJaWYgKChpID09IDcpIHx8IChpID09IDgp KQorCQkJCSptYXNrMCB8PQorCQkJCSAgICBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUNF Q0MyIHwKKwkJCQkgICAgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDMjsKKwkJCWVsc2Ug aWYgKChpID09IDkpIHx8IChpID09IDEwKSkKKwkJCQkqbWFzazAgfD0KKwkJCQkgICAgQVJSSUEx MF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDRUNDMSB8CisJCQkJICAgIEFSUklBMTBfUlNUTUdSX1BF UjBNT0RSU1RfRU1BQzE7CisJCQllbHNlIGlmICgoaSA9PSAxMSkgfHwgKDEgPT0gMTIpKQorCQkJ CSptYXNrMCB8PQorCQkJCSAgICBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUNFQ0MwIHwK KwkJCQkgICAgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDMDsKKwkJCWJyZWFrOworCQlj YXNlIDA6CisJCQlpZiAoKGkgPT0gMykgfHwgKGkgPT0gNCkpCisJCQkJKm1hc2sxIHw9IEFSUklB MTBfUlNUTUdSX1BFUjFNT0RSU1RfSTJDMTsKKwkJCWVsc2UgaWYgKChpID09IDUpIHx8IChpID09 IDYpKQorCQkJCSptYXNrMSB8PSBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX0kyQzA7CisJCQll bHNlIGlmICgoaSA9PSA3KSB8fCAoaSA9PSA4KSkKKwkJCQkqbWFzazEgfD0gQVJSSUExMF9SU1RN R1JfUEVSMU1PRFJTVF9JMkM0OworCQkJZWxzZSBpZiAoKGkgPT0gOSkgfHwgKGkgPT0gMTApKQor CQkJCSptYXNrMSB8PSBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX0kyQzM7CisJCQllbHNlIGlm ICgoaSA9PSAxMSkgfHwgKGkgPT0gMTIpKQorCQkJCSptYXNrMSB8PSBBUlJJQTEwX1JTVE1HUl9Q RVIxTU9EUlNUX0kyQzI7CisJCQlicmVhazsKKwkJfQorCX0KK30KKwordm9pZCBhcnJpYTEwX3Jl c2V0X2RlYXNzZXJ0X3NoYXJlZF9wZXJpcGhlcmFsc19xMih1aW50MzJfdCAqbWFzazAsCisJCQkJ CQkgIHVpbnQzMl90ICptYXNrMSwKKwkJCQkJCSAgdWludDMyX3QgKnBpbm11eF9hZGRyKQorewor CWludCBpOworCisJZm9yIChpID0gMTsgaSA8PSAxMjsgaSsrLCAqcGlubXV4X2FkZHIgKz0gc2l6 ZW9mKHVpbnQzMl90KSkgeworCQlzd2l0Y2ggKHJlYWRsKCpwaW5tdXhfYWRkcikpIHsKKwkJY2Fz ZSAxNToKKwkJCSptYXNrMSB8PSBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX0dQSU8wOworCQkJ YnJlYWs7CisJCWNhc2UgMTQ6CisJCQlpZiAoKGkgIT0gNCkgJiYgKGkgIT0gNSkpCisJCQkJKm1h c2swIHw9CisJCQkJICAgIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfTkFOREVDQyB8CisJCQkJ ICAgIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfTkFORDsKKwkJCWJyZWFrOworCQljYXNlIDEz OgorCQkJaWYgKChpID49IDkpICYmIChpIDw9IDEyKSkKKwkJCQkqbWFzazEgfD0gQVJSSUExMF9S U1RNR1JfUEVSMU1PRFJTVF9VQVJUMDsKKwkJCWJyZWFrOworCQljYXNlIDg6CisJCQkqbWFzazAg fD0gQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9VU0JFQ0MxIHwKKwkJCSAgICBBUlJJQTEwX1JT VE1HUl9QRVIwTU9EUlNUX1VTQjE7CisJCQlicmVhazsKKwkJY2FzZSA0OgorCQkJKm1hc2swIHw9 IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQ0VDQzAgfAorCQkJICAgIEFSUklBMTBfUlNU TUdSX1BFUjBNT0RSU1RfRU1BQzA7CisJCQlicmVhazsKKwkJY2FzZSAzOgorCQkJaWYgKChpID49 IDgpICYmIChpIDw9IDEyKSkKKwkJCQkqbWFzazAgfD0gQVJSSUExMF9SU1RNR1JfUEVSME1PRFJT VF9TUElNMTsKKwkJCWJyZWFrOworCQljYXNlIDI6CisJCQlpZiAoKGkgPj0gOSkgJiYgKGkgPD0g MTIpKQorCQkJCSptYXNrMCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1NQSVMwOworCQkJ YnJlYWs7CisJCWNhc2UgMDoKKwkJCWlmICgoaSA9PSA5KSB8fCAoaSA9PSAxMCkpCisJCQkJKm1h c2sxIHw9IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfSTJDMTsKKwkJCWVsc2UgaWYgKChpID09 IDExKSB8fCAoaSA9PSAxMikpCisJCQkJKm1hc2sxIHw9IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RS U1RfSTJDMDsKKwkJCWJyZWFrOworCQl9CisJfQorfQorCit2b2lkIGFycmlhMTBfcmVzZXRfZGVh c3NlcnRfc2hhcmVkX3BlcmlwaGVyYWxzX3EzKHVpbnQzMl90ICptYXNrMCwKKwkJCQkJCSAgdWlu dDMyX3QgKm1hc2sxLAorCQkJCQkJICB1aW50MzJfdCAqcGlubXV4X2FkZHIpCit7CisJaW50IGk7 CisKKwlmb3IgKGkgPSAxOyBpIDw9IDEyOyBpKyssICpwaW5tdXhfYWRkciArPSBzaXplb2YodWlu dDMyX3QpKSB7CisJCXN3aXRjaCAocmVhZGwoKnBpbm11eF9hZGRyKSkgeworCQljYXNlIDE1Ogor CQkJKm1hc2sxIHw9IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfR1BJTzE7CisJCQlicmVhazsK KwkJY2FzZSAxNDoKKwkJCSptYXNrMCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX05BTkRF Q0MgfAorCQkJCSAgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9OQU5EOworCQkJYnJlYWs7CisJ CWNhc2UgMTM6CisJCQlpZiAoKGkgPj0gMSkgJiYgKGkgPD0gNCkpCisJCQkJKm1hc2sxIHw9IEFS UklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfVUFSVDA7CisJCQllbHNlIGlmICgoaSA+PSA1KSAmJiAo aSA8PSA4KSkKKwkJCQkqbWFzazEgfD0gQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9VQVJUMTsK KwkJCWJyZWFrOworCQljYXNlIDg6CisJCQkqbWFzazAgfD0gQVJSSUExMF9SU1RNR1JfUEVSME1P RFJTVF9FTUFDRUNDMSB8CisJCQkJICBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUMxOwor CQkJYnJlYWs7CisJCWNhc2UgMzoKKwkJCWlmICgoaSA+PSAxKSAmJiAoaSA8PSA1KSkKKwkJCQkq bWFzazAgfD0gQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9TUElNMTsKKwkJCWJyZWFrOworCQlj YXNlIDI6CisJCQlpZiAoKGkgPj0gNSkgJiYgKGkgPD0gOCkpCisJCQkJKm1hc2swIHw9IEFSUklB MTBfUlNUTUdSX1BFUjBNT0RSU1RfU1BJUzE7CisJCQllbHNlIGlmICgoaSA+PSA5KSAmJiAoaSA8 PSAxMikpCisJCQkJKm1hc2swIHw9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfU1BJUzA7CisJ CQlicmVhazsKKwkJY2FzZSAxOgorCQkJaWYgKChpID09IDkpIHx8IChpID09IDEwKSkKKwkJCQkq bWFzazAgfD0KKwkJCQkJQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDRUNDMiB8CisJCQkJ CUFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQzI7CisJCQllbHNlIGlmICgoaSA9PSAxMSkg fHwgKGkgPT0gMTIpKQorCQkJCSptYXNrMCB8PQorCQkJCQlBUlJJQTEwX1JTVE1HUl9QRVIwTU9E UlNUX0VNQUNFQ0MwIHwKKwkJCQkJQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDMDsKKwkJ CWJyZWFrOworCQljYXNlIDA6CisJCQlpZiAoKGkgPT0gNykgfHwgKGkgPT0gOCkpCisJCQkJKm1h c2sxIHw9IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfSTJDMTsKKwkJCWVsc2UgaWYgKChpID09 IDMpIHx8IChpID09IDQpKQorCQkJCSptYXNrMSB8PSBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNU X0kyQzA7CisJCQllbHNlIGlmICgoaSA9PSA5KSB8fCAoaSA9PSAxMCkpCisJCQkJKm1hc2sxIHw9 IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfSTJDNDsKKwkJCWVsc2UgaWYgKChpID09IDExKSB8 fCAoaSA9PSAxMikpCisJCQkJKm1hc2sxIHw9IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfSTJD MjsKKwkJCWJyZWFrOworCQl9CisJfQorfQorCit2b2lkIGFycmlhMTBfcmVzZXRfZGVhc3NlcnRf c2hhcmVkX3BlcmlwaGVyYWxzX3E0KHVpbnQzMl90ICptYXNrMCwgdWludDMyX3QgKm1hc2sxLAor CQkJCQkJICB1aW50MzJfdCAqcGlubXV4X2FkZHIpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAx OyBpIDw9IDEyOyBpKyssICpwaW5tdXhfYWRkciArPSBzaXplb2YodWludDMyX3QpKSB7CisJCXN3 aXRjaCAocmVhZGwoKnBpbm11eF9hZGRyKSkgeworCQljYXNlIDE1OgorCQkJKm1hc2sxIHw9IEFS UklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfR1BJTzE7CisJCQlicmVhazsKKwkJY2FzZSAxNDoKKwkJ CWlmIChpICE9IDQpCisJCQkJKm1hc2swIHw9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfTkFO REVDQyB8CisJCQkJCUFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfTkFORDsKKwkJCWJyZWFrOwor CQljYXNlIDEzOgorCQkJaWYgKChpID49IDMpICYmIChpIDw9IDYpKQorCQkJCSptYXNrMSB8PSBB UlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX1VBUlQxOworCQkJYnJlYWs7CisJCWNhc2UgMTI6CisJ CQlpZiAoKGkgPT0gNSkgfHwgKGkgPT0gNikpCisJCQkJKm1hc2swIHw9IEFSUklBMTBfUlNUTUdS X1BFUjBNT0RSU1RfUVNQSUVDQyB8CisJCQkJCSAgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9R U1BJOworCQkJYnJlYWs7CisJCWNhc2UgODoKKwkJCSptYXNrMCB8PSBBUlJJQTEwX1JTVE1HUl9Q RVIwTU9EUlNUX0VNQUNFQ0MyIHwKKwkJCQkgIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1B QzI7CisJCQlicmVhazsKKwkJY2FzZSA0OgorCQkJaWYgKChpID49IDEpICYmIChpIDw9IDYpKQor CQkJCSptYXNrMCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1NETU1DRUNDIHwKKwkJCQkJ ICBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1NETU1DOworCQkJYnJlYWs7CisJCWNhc2UgMzoK KwkJCWlmICgoaSA+PSA2KSAmJiAoaSA8PSAxMikpCisJCQkJKm1hc2swIHw9IEFSUklBMTBfUlNU TUdSX1BFUjBNT0RSU1RfU1BJTTA7CisJCQlicmVhazsKKwkJY2FzZSAyOgorCQkJaWYgKChpID49 IDkpICYmIChpIDw9IDEyKSkKKwkJCQkqbWFzazAgfD0gQVJSSUExMF9SU1RNR1JfUEVSME1PRFJT VF9TUElTMTsKKwkJCWJyZWFrOworCQljYXNlIDE6CisJCQlpZiAoKGkgPT0gNykgfHwgKGkgPT0g OCkpCisJCQkJKm1hc2swIHw9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQ0VDQzEgfAor CQkJCQkgIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQzE7CisJCQllbHNlIGlmICgoaSA9 PSAxMSkgfHwgKGkgPT0gMTIpKQorCQkJCSptYXNrMCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9E UlNUX0VNQUNFQ0MwIHwKKwkJCQkJICBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUMwOwor CQkJYnJlYWs7CisJCWNhc2UgMDoKKwkJCWlmICgoaSA9PSAxKSB8fCAoaSA9PSAyKSkKKwkJCQkq bWFzazEgfD0gQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9JMkMxOworCQkJZWxzZSBpZiAoKGkg PT0gNykgfHwgKGkgPT0gOCkpCisJCQkJKm1hc2sxIHw9IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RS U1RfSTJDMzsKKwkJCWVsc2UgaWYgKChpID09IDkpIHx8IChpID09IDEwKSkKKwkJCQkqbWFzazEg fD0gQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9JMkM0OworCQkJZWxzZSBpZiAoKGkgPT0gMTEp IHx8IChpID09IDEyKSkKKwkJCQkqbWFzazEgfD0gQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9J MkMyOworCQkJYnJlYWs7CisJCX0KKwl9Cit9CisKK3ZvaWQgYXJyaWExMF9yZXNldF9kZWFzc2Vy dF9zaGFyZWRfcGVyaXBoZXJhbHModm9pZCkKK3sKKwl1aW50MzJfdCBtYXNrMCA9IDA7CisJdWlu dDMyX3QgbWFzazEgPSAwOworCXVpbnQzMl90IHBpbm11eF9hZGRyID0gQVJSSUExMF9QSU5NVVhf U0hBUkVEXzNWX0lPX0FERFI7CisKKwlhcnJpYTEwX3Jlc2V0X2RlYXNzZXJ0X3NoYXJlZF9wZXJp cGhlcmFsc19xMSgmbWFzazAsICZtYXNrMSwKKwkJCQkJCSAgICAgJnBpbm11eF9hZGRyKTsKKwlh cnJpYTEwX3Jlc2V0X2RlYXNzZXJ0X3NoYXJlZF9wZXJpcGhlcmFsc19xMigmbWFzazAsICZtYXNr MSwKKwkJCQkJCSAgICAgJnBpbm11eF9hZGRyKTsKKwlhcnJpYTEwX3Jlc2V0X2RlYXNzZXJ0X3No YXJlZF9wZXJpcGhlcmFsc19xMygmbWFzazAsICZtYXNrMSwKKwkJCQkJCSAgICAgJnBpbm11eF9h ZGRyKTsKKwlhcnJpYTEwX3Jlc2V0X2RlYXNzZXJ0X3NoYXJlZF9wZXJpcGhlcmFsc19xNCgmbWFz azAsICZtYXNrMSwKKwkJCQkJCSAgICAgJnBpbm11eF9hZGRyKTsKKwltYXNrMSB8PSBBUlJJQTEw X1JTVE1HUl9QRVIxTU9EUlNUX0w0V0QxIHwKKwkJIEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1Rf TDRTWVNUTVIxIHwKKwkJIEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfU1BUTVIwIHwKKwkJIEFS UklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfU1BUTVIxOworCisJY2xyYml0c19sZTMyKEFSUklBMTBf UlNUTUdSX0FERFIgKyBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNULAorCQkgICAgIG1hc2swICYg RUNDX01BU0spOworCWNscmJpdHNfbGUzMihBUlJJQTEwX1JTVE1HUl9BRERSICsgQVJSSUExMF9S U1RNR1JfUEVSMU1PRFJTVCwgbWFzazEpOworCWNscmJpdHNfbGUzMihBUlJJQTEwX1JTVE1HUl9B RERSICsgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVCwgbWFzazApOworfQpkaWZmIC0tZ2l0IGEv YXJjaC9hcm0vbWFjaC1zb2NmcGdhL2FycmlhMTAtc2RyYW0uYyBiL2FyY2gvYXJtL21hY2gtc29j ZnBnYS9hcnJpYTEwLXNkcmFtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi5hMThhMGFiZjE0YmYKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLXNvY2Zw Z2EvYXJyaWExMC1zZHJhbS5jCkBAIC0wLDAgKzEsNTU3IEBACisvKgorICogQ29weXJpZ2h0IChD KSAyMDE0LTIwMTYgQWx0ZXJhIENvcnBvcmF0aW9uIDx3d3cuYWx0ZXJhLmNvbT4KKyAqCisgKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjoJR1BMLTIuMAorICovCisKKyNpbmNsdWRlIDxjb21tb24u aD4KKyNpbmNsdWRlIDxpby5oPgorI2luY2x1ZGUgPGRlYnVnX2xsLmg+CisjaW5jbHVkZSA8bWFj aC9hcnJpYTEwLXNkcmFtLmg+CisjaW5jbHVkZSA8bWFjaC9hcnJpYTEwLXJlZ3MuaD4KKyNpbmNs dWRlIDxtYWNoL2FycmlhMTAtcmVzZXQtbWFuYWdlci5oPgorCisKKy8qIEZBV0JBTksgLSBOdW1i ZXIgb2YgQmFuayBvZiBhIGdpdmVuIGRldmljZSBpbnZvbHZlZCBpbiB0aGUgRkFXIHBlcmlvZC4g Ki8KKyNkZWZpbmUgQVJSSUExMF9TRFJfQUNUSVZBVEVfRkFXQkFOSwkoMHgxKQorCisjZGVmaW5l IEFSUklBMTBfRU1JRl9SU1QJMzEKKyNkZWZpbmUgQVJSSUExMF9PQ1RfQ0FMX1JFUQkzMAorI2Rl ZmluZSBBUlJJQTEwX09DVF9DQUxfQUNLCTMxCisKKyNkZWZpbmUgQVJSSUExMF9OSU9TX09DVF9E T05FCTcKKyNkZWZpbmUgQVJSSUExMF9OSU9TX09DVF9BQ0sJNworCisvKiBFbmdpbmVlcmluZyBz YW1wbGUgc2lsaWNvbiAqLworI2RlZmluZSBBUlJJQTEwX0VTX1NJTElDT05fVkVSCTB4MDAwMTAw MDEKKworI2RlZmluZSBERFJfUkVHX1NFUTJDT1JFICAgICAgICAweEZGRDA1MDdDCisjZGVmaW5l IEREUl9SRUdfQ09SRTJTRVEgICAgICAgIDB4RkZEMDUwNzgKKyNkZWZpbmUgRERSX1JFR19HUE9V VCAgICAgICAgICAgMHhGRkQwMzAxMAorI2RlZmluZSBERFJfUkVHX0dQSU4gICAgICAgICAgICAw eEZGRDAzMDE0CisjZGVmaW5lIEREUl9NQVhfVFJJRVMJCTB4MDAxMDAwMDAKKyNkZWZpbmUgSU80 OF9NTVJfRFJBTVNUUwkweEZGQ0ZBMEVDCisjZGVmaW5lIElPNDhfTU1SX05JT1MyX1JFU0VSVkUw CTB4RkZDRkExMTAKKyNkZWZpbmUgSU80OF9NTVJfTklPUzJfUkVTRVJWRTEJMHhGRkNGQTExNAor I2RlZmluZSBJTzQ4X01NUl9OSU9TMl9SRVNFUlZFMgkweEZGQ0ZBMTE4CisKKyNkZWZpbmUgU0VR MkNPUkVfTUFTSwkJMHhGCisjZGVmaW5lIENPUkUyU0VRX0lOVF9SRVEJMHhGCisjZGVmaW5lIFNF UTJDT1JFX0lOVF9SRVNQX0JJVAkzCisKKyNkZWZpbmUgRERSX0VDQ19ETUFfU0laRQkxNTAwCisj ZGVmaW5lIEREUl9SRUFEX0xBVEVOQ1lfREVMQVkJNDAKKworI2RlZmluZSBBUlJJQV9ERFJfQ09O RklHKEEsIEIsIEMsIFIpCSgoQTw8MjQpfChCPDwxNil8KEM8PDgpfFIpCisvKiBUaGUgZm9sbG93 cmluZyBhcmUgdGhlIHN1cHBvcnRlZCBjb25maWd1cmF0aW9ucyAqLwordWludDMyX3QgZGRyX2Nv bmZpZ1tdID0geworCS8qIENoaXAgLSBSb3cgLSBCYW5rIC0gQ29sdW1uIFN0eWxlICovCisJLyog QWxsIFR5cGVzICovCisJQVJSSUFfRERSX0NPTkZJRygwLCAzLCAxMCwgMTIpLAorCUFSUklBX0RE Ul9DT05GSUcoMCwgMywgMTAsIDEzKSwKKwlBUlJJQV9ERFJfQ09ORklHKDAsIDMsIDEwLCAxNCks CisJQVJSSUFfRERSX0NPTkZJRygwLCAzLCAxMCwgMTUpLAorCUFSUklBX0REUl9DT05GSUcoMCwg MywgMTAsIDE2KSwKKwlBUlJJQV9ERFJfQ09ORklHKDAsIDMsIDEwLCAxNyksCisJLyogTFBERFIg eDE2ICovCisJQVJSSUFfRERSX0NPTkZJRygwLCAzLCAxMSwgMTQpLAorCUFSUklBX0REUl9DT05G SUcoMCwgMywgMTEsIDE1KSwKKwlBUlJJQV9ERFJfQ09ORklHKDAsIDMsIDExLCAxNiksCisJQVJS SUFfRERSX0NPTkZJRygwLCAzLCAxMiwgMTUpLAorCS8qIEREUjQgT25seSAqLworCUFSUklBX0RE Ul9DT05GSUcoMCwgNCwgMTAsIDE0KSwKKwlBUlJJQV9ERFJfQ09ORklHKDAsIDQsIDEwLCAxNSks CisJQVJSSUFfRERSX0NPTkZJRygwLCA0LCAxMCwgMTYpLAorCUFSUklBX0REUl9DT05GSUcoMCwg NCwgMTAsIDE3KSwJLyogMTQgKi8KKwkvKiBDaGlwIC0gQmFuayAtIFJvdyAtIENvbHVtbiBTdHls ZSAqLworCUFSUklBX0REUl9DT05GSUcoMSwgMywgMTAsIDEyKSwKKwlBUlJJQV9ERFJfQ09ORklH KDEsIDMsIDEwLCAxMyksCisJQVJSSUFfRERSX0NPTkZJRygxLCAzLCAxMCwgMTQpLAorCUFSUklB X0REUl9DT05GSUcoMSwgMywgMTAsIDE1KSwKKwlBUlJJQV9ERFJfQ09ORklHKDEsIDMsIDEwLCAx NiksCisJQVJSSUFfRERSX0NPTkZJRygxLCAzLCAxMCwgMTcpLAorCUFSUklBX0REUl9DT05GSUco MSwgMywgMTEsIDE0KSwKKwlBUlJJQV9ERFJfQ09ORklHKDEsIDMsIDExLCAxNSksCisJQVJSSUFf RERSX0NPTkZJRygxLCAzLCAxMSwgMTYpLAorCUFSUklBX0REUl9DT05GSUcoMSwgMywgMTIsIDE1 KSwKKwkvKiBERFI0IE9ubHkgKi8KKwlBUlJJQV9ERFJfQ09ORklHKDEsIDQsIDEwLCAxNCksCisJ QVJSSUFfRERSX0NPTkZJRygxLCA0LCAxMCwgMTUpLAorCUFSUklBX0REUl9DT05GSUcoMSwgNCwg MTAsIDE2KSwKKwlBUlJJQV9ERFJfQ09ORklHKDEsIDQsIDEwLCAxNyksCit9OworI2RlZmluZSBE RFJfQ09ORklHX0VMRU1FTlRTCShzaXplb2YoZGRyX2NvbmZpZykvc2l6ZW9mKHVpbnQzMl90KSkK Kwordm9pZCB1ZGVsYXkodW5zaWduZWQgbG9uZyB0aW1lKQoreworCXVuc2lnbmVkIGxvbmcgaSA9 IDEwMDAgKiB0aW1lOworCisJd2hpbGUgKGktLSkKKwkJOworfQorCitzdGF0aWMgaW50IG1hdGNo X2Rkcl9jb25mKHVpbnQzMl90IGRkcl9jb25mKQoreworCWludCBpOworCisJZm9yIChpID0gMDsg aSA8IEREUl9DT05GSUdfRUxFTUVOVFM7IGkrKykgeworCQlpZiAoZGRyX2NvbmYgPT0gZGRyX2Nv bmZpZ1tpXSkKKwkJCXJldHVybiBpOworCX0KKwlyZXR1cm4gMDsKK30KKworLyogQ2hlY2sgd2hl dGhlciBTRFJBTSBpcyBzdWNjZXNzZnVsbHkgQ2FsaWJyYXRlZCAqLworc3RhdGljIGludCBpc19z ZHJhbV9jYWxfc3VjY2Vzcyh2b2lkKQoreworCXJldHVybiByZWFkbChBUlJJQTEwX0VDQ19ITUNf T0NQX0REUkNBTFNUQVQpOworfQorCitzdGF0aWMgdW5zaWduZWQgY2hhciBkZHJfZ2V0X2JpdCh1 aW50MzJfdCBlcmVnLCB1bnNpZ25lZCBjaGFyIGJpdCkKK3sKKwl1bnNpZ25lZCBpbnQgcmVnID0g cmVhZGwoZXJlZyk7CisKKwlyZXR1cm4gKHJlZyAmICgxIDw8IGJpdCkpID8gMSA6IDA7Cit9CisK K3N0YXRpYyB1bnNpZ25lZCBjaGFyIGRkcl93YWl0X2JpdCh1aW50MzJfdCBlcmVnLCB1aW50MzJf dCBiaXQsCisJCQkJICB1aW50MzJfdCBleHBlY3RlZCwgdWludDMyX3QgdGltZW91dF91c2VjKQor eworCXVuc2lnbmVkIGludCB0bXI7CisKKwlmb3IgKHRtciA9IDA7IHRtciA8IHRpbWVvdXRfdXNl YzsgdG1yICs9IDEwMCkgeworCQl1ZGVsYXkoMTAwKTsKKwkJaWYgKGRkcl9nZXRfYml0KGVyZWcs IGJpdCkgPT0gZXhwZWN0ZWQpCisJCQlyZXR1cm4gMDsKKwl9CisKKwlyZXR1cm4gMTsKK30KKwor c3RhdGljIHZvaWQgZGRyX3NldF9iaXQodWludDMyX3QgZXJlZywgdWludDMyX3QgYml0KQorewor CXVuc2lnbmVkIGludCB0bXAgPSByZWFkbChlcmVnKTsKKworCXRtcCB8PSAoMSA8PCBiaXQpOwor CXdyaXRlbCh0bXAsIGVyZWcpOworfQorCitzdGF0aWMgdm9pZCBkZHJfY2xyX2JpdCh1aW50MzJf dCBlcmVnLCB1aW50MzJfdCBiaXQpCit7CisJdW5zaWduZWQgaW50IHRtcCA9IHJlYWRsKGVyZWcp OworCisJdG1wICY9IH4oMSA8PCBiaXQpOworCXdyaXRlbCh0bXAsIGVyZWcpOworfQorCitzdGF0 aWMgdm9pZCBkZHJfZGVsYXkodWludDMyX3QgZGVsYXkpCit7CisJaW50IHRtcjsKKworCWZvciAo dG1yID0gMDsgdG1yIDwgZGVsYXk7IHRtcisrKQorCQl1ZGVsYXkoMTAwMCk7Cit9CisKKy8qCisg KiBEaWFncmFtIG9mIE9DVCBXb3JrYXJvdW5kOgorICoKKyAqIEVNSUYgQ29yZSAgICAgICAgICAg ICAgICAgICAgIEhQUyBQcm9jZXNzb3IgICAgICAgICAgICAgIE9DVCBGU00KKyAqID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CisgKgorICogc2VxMmNvcmUgICAgICA9PT09PT09PT09PT09PT4KKyAqIFsweD8/Pz8/Pz8/P10g ICBPQ1QgUmVxdWVzdCAgIFsweEZGRDA1MDdDXQorICoKKyAqIGNvcmUyc2VxCisgKiBbMHg/Pz8/ Pz8/Pz9dIDw9PT09PT09PT09PT09PQorICogICAgICAgICAgICAgICAgIE9DVCBSZWFkeSAgICAg WzB4RkZEMDUwNzhdCisgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzB4RkZE MDMwMTBdID09PT09PT09PT09PT4gUmVxdWVzdAorICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPQ1QgUmVxdWVzdAorICoKKyAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFsweEZGRDAzMDE0XSA8PT09PT09PT09PT09IFJlYWR5CisgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ1QgUmVhZHkKKyAqIFNpZ25h bCBkZWZpbml0aW9uczoKKyAqCisgKiBzZXEyY29yZVs3XSAtIE9DVCBjYWxpYnJhdGlvbiByZXF1 ZXN0IChhY3QtaGlnaCkKKyAqIGNvcmUyc2VxWzddIC0gU2lnbmFscyBPQ1QgRlNNIGlzIHJlYWR5 IChhY3RpdmUgaGlnaCkKKyAqIGdwb3V0WzMxXSAgIC0gRU1JRiBSZXNldCBvdmVycmlkZSAoYWN0 aXZlIGxvdykKKyAqIGdwb3V0WzMwXSAgIC0gT0NUIGNhbGlicmF0aW9uIHJlcXVlc3QgKGFjdC1o aWdoKQorICogZ3BpblszMV0gICAgLSBPQ1QgY2FsaWJyYXRpb24gcmVhZHkgKGFjdC1oaWdoKQor ICovCisKK3N0YXRpYyBpbnQgZGRyX2NhbGlicmF0aW9uX2VzX3dvcmthcm91bmQodm9pZCkKK3sK KwlkZHJfZGVsYXkoNTAwKTsKKwkvKiBTdGVwIDEgLSBJbml0aWF0aW5nIFJlc2V0IFNlcXVlbmNl ICovCisJZGRyX2Nscl9iaXQoRERSX1JFR19HUE9VVCwgQVJSSUExMF9FTUlGX1JTVCk7CS8qIFJl c2V0IEVNSUYgKi8KKwlkZHJfZGVsYXkoMTApOworCisJLyogU3RlcCAyIC0gQ2xlYXJpbmcgcmVn aXN0ZXJzIHRvIEVNSUYgY29yZSAqLworCXdyaXRlbCgwLCBERFJfUkVHX0NPUkUyU0VRKTsJLypD bGVhciB0aGUgSFBTLT5OSU9TIENPTSByZWcuKi8KKworCS8qIFN0ZXAgMyAtIENsZWFyaW5nIHJl Z2lzdGVycyB0byBPQ1QgY29yZSAqLworCWRkcl9jbHJfYml0KEREUl9SRUdfR1BPVVQsIEFSUklB MTBfT0NUX0NBTF9SRVEpOyAvKiBPQ1QgQ2FsIFJlcXVlc3QgKi8KKwlkZHJfZGVsYXkoNSk7CisK KwkvKiBTdGVwIDQgLSBUYWtpbmcgRU1JRiBvdXQgb2YgcmVzZXQgKi8KKwlkZHJfc2V0X2JpdChE RFJfUkVHX0dQT1VULCBBUlJJQTEwX0VNSUZfUlNUKTsKKwlkZHJfZGVsYXkoMTApOworCisJLyog U3RlcCA1IC0gV2FpdGluZyBmb3IgT0NUIGNpcmN1aXRyeSB0byBjb21lIG91dCBvZiByZXNldCAq LworCWlmIChkZHJfd2FpdF9iaXQoRERSX1JFR19HUElOLCBBUlJJQTEwX09DVF9DQUxfQUNLLCAx LCAxMDAwMDAwKSkKKwkJcmV0dXJuIC0xOworCisJLyogU3RlcCA2IC0gQWxsb3dpbmcgRU1JRiB0 byBwcm9jZWVkIHdpdGggT0NUIGNhbGlicmF0aW9uICovCisJZGRyX3NldF9iaXQoRERSX1JFR19D T1JFMlNFUSwgQVJSSUExMF9OSU9TX09DVF9ET05FKTsKKworCS8qIFN0ZXAgNyAtIFdhaXRpbmcg Zm9yIEVNSUYgcmVxdWVzdCAqLworCWlmIChkZHJfd2FpdF9iaXQoRERSX1JFR19TRVEyQ09SRSwg QVJSSUExMF9OSU9TX09DVF9BQ0ssIDEsIDIwMDAwMDApKQorCQlyZXR1cm4gLTI7CisKKwkvKiBT dGVwIDggLSBBY2tub3dsZWRnaW5nIEVNSUYgT0NUIHJlcXVlc3QgKi8KKwlkZHJfY2xyX2JpdChE RFJfUkVHX0NPUkUyU0VRLCBBUlJJQTEwX05JT1NfT0NUX0RPTkUpOworCisJLyogU3RlcCA5IC0g V2FpdGluZyBmb3IgRU1JRiByZXNwb25zZSAqLworCWlmIChkZHJfd2FpdF9iaXQoRERSX1JFR19T RVEyQ09SRSwgQVJSSUExMF9OSU9TX09DVF9BQ0ssIDAsIDIwMDAwMDApKQorCQlyZXR1cm4gLTM7 CisKKwkvKiBTdGVwIDEwIC0gVHJpZ2dlcmluZyBPQ1QgQ2FsaWJyYXRpb24gKi8KKwlkZHJfc2V0 X2JpdChERFJfUkVHX0dQT1VULCBBUlJJQTEwX09DVF9DQUxfUkVRKTsKKworCS8qIFN0ZXAgMTEg LSBXYWl0aW5nIGZvciBPQ1QgcmVzcG9uc2UgKi8KKwlpZiAoZGRyX3dhaXRfYml0KEREUl9SRUdf R1BJTiwgQVJSSUExMF9PQ1RfQ0FMX0FDSywgMCwgMTAwMCkpCisJCXJldHVybiAtNDsKKworCS8q IFN0ZXAgMTIgLSBDbGVhcmluZyBPQ1QgUmVxdWVzdCBiaXQgKi8KKwlkZHJfY2xyX2JpdChERFJf UkVHX0dQT1VULCBBUlJJQTEwX09DVF9DQUxfUkVRKTsKKworCS8qIFN0ZXAgMTMgLSBXYWl0aW5n IGZvciBPQ1QgRW5naW5lICovCisJaWYgKGRkcl93YWl0X2JpdChERFJfUkVHX0dQSU4sIEFSUklB MTBfT0NUX0NBTF9BQ0ssIDEsIDIwMDAwMCkpCisJCXJldHVybiAtNTsKKworCS8qIFN0ZXAgMTQg LSBQcm9jZWVkaW5nIHdpdGggRU1JRiBjYWxpYnJhdGlvbiAqLworCWRkcl9zZXRfYml0KEREUl9S RUdfQ09SRTJTRVEsIEFSUklBMTBfTklPU19PQ1RfRE9ORSk7CisKKwlkZHJfZGVsYXkoMTAwKTsK KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGVtaWZfY2xlYXIodm9pZCkKK3sKKwl1aW50 MzJfdCBzMmM7CisJdWludDMyX3QgaSA9IEREUl9NQVhfVFJJRVM7CisKKwl3cml0ZWwoMCwgRERS X1JFR19DT1JFMlNFUSk7CisJZG8geworCQlkZHJfZGVsYXkoNTApOworCQlzMmMgPSByZWFkbChE RFJfUkVHX1NFUTJDT1JFKTsKKwl9IHdoaWxlICgoczJjICYgU0VRMkNPUkVfTUFTSykgJiYgKC0t aSA+IDApKTsKKworCXJldHVybiAhaTsKK30KK3N0YXRpYyBpbnQgZW1pZl9yZXNldCh2b2lkKQor eworCXVpbnQzMl90IGMycywgczJjOworCisJYzJzID0gcmVhZGwoRERSX1JFR19DT1JFMlNFUSk7 CisJczJjID0gcmVhZGwoRERSX1JFR19TRVEyQ09SRSk7CisKKwlwcl9kZWJ1ZygiYzJzPSUwOHgg czJjPSUwOHggbnIwPSUwOHggbnIxPSUwOHggbnIyPSUwOHggZHN0PSUwOHhcbiIsCisJCWMycywg czJjLCByZWFkbChJTzQ4X01NUl9OSU9TMl9SRVNFUlZFMCksCisJCXJlYWRsKElPNDhfTU1SX05J T1MyX1JFU0VSVkUxKSwKKwkJcmVhZGwoSU80OF9NTVJfTklPUzJfUkVTRVJWRTIpLAorCQlyZWFk bChJTzQ4X01NUl9EUkFNU1RTKSk7CisKKwlpZiAoKHMyYyAmIFNFUTJDT1JFX01BU0spICYmIGVt aWZfY2xlYXIoKSkgeworCQlwcmludGYoImZhaWxlZCBlbWlmX2NsZWFyKClcbiIpOworCQlyZXR1 cm4gLTE7CisJfQorCisJd3JpdGVsKENPUkUyU0VRX0lOVF9SRVEsIEREUl9SRUdfQ09SRTJTRVEp OworCisJaWYgKGRkcl93YWl0X2JpdChERFJfUkVHX1NFUTJDT1JFLCBTRVEyQ09SRV9JTlRfUkVT UF9CSVQsIDAsIDEwMDAwMDApKSB7CisJCXByaW50ZigiZW1pZl9yZXNldCBmYWlsZWQgdG8gc2Vl IGludGVycnVwdCBhY2tub3dsZWRnZVxuIik7CisJCXJldHVybiAtMjsKKwl9IGVsc2UgeworCQlw cmludGYoImVtaWZfcmVzZXQgaW50ZXJydXB0IGFja25vd2xlZGdlZFxuIik7CisJfQorCisJaWYg KGVtaWZfY2xlYXIoKSkgeworCQlwcmludGYoImVtaWZfY2xlYXIoKSBmYWlsZWRcbiIpOworCQly ZXR1cm4gLTM7CisJfQorCXByX2RlYnVnKCJlbWlmX3Jlc2V0IGludGVycnVwdCBjbGVhcmVkXG4i KTsKKworCXByX2RlYnVnKCJucjA9JTA4eCBucjE9JTA4eCBucjI9JTA4eFxuIiwKKwkJcmVhZGwo SU80OF9NTVJfTklPUzJfUkVTRVJWRTApLAorCQlyZWFkbChJTzQ4X01NUl9OSU9TMl9SRVNFUlZF MSksCisJCXJlYWRsKElPNDhfTU1SX05JT1MyX1JFU0VSVkUyKSk7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBhcnJpYTEwX2Rkcl9zZXR1cCh2b2lkKQoreworCWludCBpLCBqLCByZXRj b2RlLCBkZHJfc2V0dXBfY29tcGxldGUgPSAwOworCWludCBjaGlwX3ZlcnNpb24gPSByZWFkbChB UlJJQTEwX1NZU01HUl9TSUxJQ09OSUQxKTsKKworCS8qIFRyeSAzIHRpbWVzIHRvIGRvIGEgY2Fs aWJyYXRpb24gKi8KKwlmb3IgKGkgPSAwOyAoaSA8IDMpICYmICFkZHJfc2V0dXBfY29tcGxldGU7 IGkrKykgeworCQkvKiBPbmx5IGVuZ2luZWVyaW5nIHNhbXBsZSBuZWVkcyBjYWxpYnJhdGlvbiB3 b3JrYXJvdW5kICovCisJCWlmIChBUlJJQTEwX0VTX1NJTElDT05fVkVSID09IGNoaXBfdmVyc2lv bikgeworCQkJcmV0Y29kZSA9IGRkcl9jYWxpYnJhdGlvbl9lc193b3JrYXJvdW5kKCk7CisJCQlp ZiAocmV0Y29kZSkgeworCQkJCXByaW50ZigiRERSQ0FMOiBGYWlsdXJlOiAlZFxuIiwgcmV0Y29k ZSk7CisJCQkJY29udGludWU7CisJCQl9CisJCX0KKworCQkvKiBBIGRlbGF5IHRvIHdhaXQgZm9y IGNhbGlicmF0aW9uIGJpdCB0byBzZXQgKi8KKwkJZm9yIChqID0gMDsgKGogPCAxMCkgJiYgIWRk cl9zZXR1cF9jb21wbGV0ZTsgaisrKSB7CisJCQlkZHJfZGVsYXkoNTAwKTsKKwkJCWRkcl9zZXR1 cF9jb21wbGV0ZSA9IGlzX3NkcmFtX2NhbF9zdWNjZXNzKCk7CisJCX0KKworCQlpZiAoIWRkcl9z ZXR1cF9jb21wbGV0ZSAmJgorCQkJKEFSUklBMTBfRVNfU0lMSUNPTl9WRVIgIT0gY2hpcF92ZXJz aW9uKSkgeworCQkJZW1pZl9yZXNldCgpOworCQl9CisJfQorCisJaWYgKCFkZHJfc2V0dXBfY29t cGxldGUpIHsKKwkJcHV0c19sbCgiRXJyb3I6IENvdWxkIE5vdCBDYWxpYnJhdGUgU0RSQU1cbiIp OworCQlyZXR1cm4gLTE7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKy8qIEZ1bmN0aW9uIHRvIHN0 YXJ0dXAgdGhlIFNEUkFNKi8KK3N0YXRpYyBpbnQgYXJyaWExMF9zZHJhbV9zdGFydHVwKHZvaWQp Cit7CisJdWludDMyX3QgdmFsOworCS8qIFJlbGVhc2UgTk9DIGRkciBzY2hlZHVsZXIgZnJvbSBy ZXNldCAqLworCXZhbCA9IHJlYWRsKEFSUklBMTBfUlNUTUdSX0FERFIgKyBBUlJJQTEwX1JTVE1H Ul9CUkdNT0RSU1QpOworCXZhbCAmPSB+QVJSSUExMF9SU1RNR1JfQlJHTU9EUlNUX0REUlNDSDsK Kwl3cml0ZWwodmFsLCBBUlJJQTEwX1JTVE1HUl9BRERSICsgQVJSSUExMF9SU1RNR1JfQlJHTU9E UlNUKTsKKworCS8qIEJyaW5ndXAgdGhlIEREUiAoY2FsaWJyYXRpb24gYW5kIGNvbmZpZ3VyYXRp b24pICovCisJcmV0dXJuIGFycmlhMTBfZGRyX3NldHVwKCk7Cit9CisKKy8qIEZ1bmN0aW9uIHRv IGluaXRpYWxpemUgU0RSQU0gTU1SIGFuZCBOT0MgRERSIHNjaGVkdWxlciovCitzdGF0aWMgdm9p ZCBhcnJpYTEwX3NkcmFtX21tcl9pbml0KHZvaWQpCit7CisJdWludDMyX3QgdXBkYXRlX3ZhbHVl LCBpbzQ4X3ZhbHVlOworCXVuaW9uIGN0cmxjZmcwX3JlZyBjdHJsY2ZnMCA9CisJCSh1bmlvbiBj dHJsY2ZnMF9yZWcpcmVhZGwoQVJSSUExMF9JTzQ4X0hNQ19NTVJfQ1RSTENGRzApOworCXVuaW9u IGN0cmxjZmcxX3JlZyBjdHJsY2ZnMSA9CisJCSh1bmlvbiBjdHJsY2ZnMV9yZWcpcmVhZGwoQVJS SUExMF9JTzQ4X0hNQ19NTVJfQ1RSTENGRzEpOworCXVuaW9uIGRyYW1hZGRyd19yZWcgZHJhbWFk ZHJ3ID0KKwkJKHVuaW9uIGRyYW1hZGRyd19yZWcpcmVhZGwoQVJSSUExMF9JTzQ4X0hNQ19NTVJf RFJBTUFERFJXKTsKKwl1bmlvbiBjYWx0aW1pbmcwX3JlZyBjYWx0aW0wID0KKwkJKHVuaW9uIGNh bHRpbWluZzBfcmVnKXJlYWRsKEFSUklBMTBfSU80OF9ITUNfTU1SX0NBTFRJTUlORzApOworCXVu aW9uIGNhbHRpbWluZzFfcmVnIGNhbHRpbTEgPQorCQkodW5pb24gY2FsdGltaW5nMV9yZWcpcmVh ZGwoQVJSSUExMF9JTzQ4X0hNQ19NTVJfQ0FMVElNSU5HMSk7CisJdW5pb24gY2FsdGltaW5nMl9y ZWcgY2FsdGltMiA9CisJCSh1bmlvbiBjYWx0aW1pbmcyX3JlZylyZWFkbChBUlJJQTEwX0lPNDhf SE1DX01NUl9DQUxUSU1JTkcyKTsKKwl1bmlvbiBjYWx0aW1pbmczX3JlZyBjYWx0aW0zID0KKwkJ KHVuaW9uIGNhbHRpbWluZzNfcmVnKXJlYWRsKEFSUklBMTBfSU80OF9ITUNfTU1SX0NBTFRJTUlO RzMpOworCXVuaW9uIGNhbHRpbWluZzRfcmVnIGNhbHRpbTQgPQorCQkodW5pb24gY2FsdGltaW5n NF9yZWcpcmVhZGwoQVJSSUExMF9JTzQ4X0hNQ19NTVJfQ0FMVElNSU5HNCk7CisJdW5pb24gY2Fs dGltaW5nOV9yZWcgY2FsdGltOSA9CisJCSh1bmlvbiBjYWx0aW1pbmc5X3JlZylyZWFkbChBUlJJ QTEwX0lPNDhfSE1DX01NUl9DQUxUSU1JTkc5KTsKKwl1aW50MzJfdCBkZHJpb2N0bDsKKworCS8q CisJICogQ29uZmlndXJlIHRoZSBERFIgSU8gc2l6ZSBbMHhGRkNGQjAwOF0KKwkgKiBuaW9zcmVz ZXJ2ZTA6IFVzZWQgdG8gaW5kaWNhdGUgRERSIHdpZHRoICYKKwkgKgliaXRbNzowXSA9IE51bWJl ciBvZiBkYXRhIGJpdHMgKDB4MjAgZm9yIDMyYml0KQorCSAqCWJpdFs4XSAgID0gMSBpZiB1c2Vy LW1vZGUgT0NUIGlzIHByZXNlbnQKKwkgKgliaXRbOV0gICA9IDEgaWYgd2FybSByZXNldCBjb21w aWxlZCBpbnRvIEVNSUYgQ2FsIENvZGUKKwkgKgliaXRbMTBdICA9IDEgaWYgd2FybSByZXNldCBp cyBvbiBkdXJpbmcgZ2VuZXJhdGlvbiBpbiBFTUlGIENhbAorCSAqIG5pb3NyZXNlcnZlMTogSVAg QURDRFMgdmVyc2lvbiBlbmNvZGVkIGFzIDE2IGJpdCB2YWx1ZQorCSAqCWJpdFsyOjBdID0gVmFy aWFudCAoMD1ub3Qgc3BlY2lhbCwxPUZBRSBiZXRhLCAyPUN1c3RvbWVyIGJldGEsCisJICoJCQkg ICAgMz1FQVAsIDQtNiBhcmUgcmVzZXJ2ZWQpCisJICoJYml0WzU6M10gPSBTZXJ2aWNlIFBhY2sg IyAoZS5nLiAxKQorCSAqCWJpdFs5OjZdID0gTWlub3IgUmVsZWFzZSAjCisJICoJYml0WzE0OjEw XSA9IE1ham9yIFJlbGVhc2UgIworCSAqLworCWlmICgocmVhZGwoQVJSSUExMF9JTzQ4X0hNQ19N TVJfTklPU1JFU0VSVkUxKSA+PiA2KSAmIDB4MUZGKSB7CisJCXVwZGF0ZV92YWx1ZSA9IHJlYWRs KEFSUklBMTBfSU80OF9ITUNfTU1SX05JT1NSRVNFUlZFMCk7CisJCXdyaXRlbCgoKHVwZGF0ZV92 YWx1ZSAmIDB4RkYpID4+IDUpLAorCQkgICAgICAgQVJSSUExMF9FQ0NfSE1DX09DUF9ERFJJT0NU UkwpOworCX0KKworCWRkcmlvY3RsID0gcmVhZGwoQVJSSUExMF9FQ0NfSE1DX09DUF9ERFJJT0NU UkwpOworCisJLyogU2V0IHRoZSBERFIgQ29uZmlndXJhdGlvbiBbMHhGRkQxMjQwMF0gKi8KKwlp bzQ4X3ZhbHVlID0gQVJSSUFfRERSX0NPTkZJRyhjdHJsY2ZnMS5jZmdfYWRkcl9vcmRlciwKKwkJ CQkgICAgICAoZHJhbWFkZHJ3LmNmZ19iYW5rX2FkZHJfd2lkdGggKworCQkJCSAgICAgICBkcmFt YWRkcncuY2ZnX2JhbmtfZ3JvdXBfYWRkcl93aWR0aCksCisJCQkJICAgICAgZHJhbWFkZHJ3LmNm Z19jb2xfYWRkcl93aWR0aCwKKwkJCQkgICAgICBkcmFtYWRkcncuY2ZnX3Jvd19hZGRyX3dpZHRo KTsKKworCXVwZGF0ZV92YWx1ZSA9IG1hdGNoX2Rkcl9jb25mKGlvNDhfdmFsdWUpOworCWlmICh1 cGRhdGVfdmFsdWUpCisJCXdyaXRlbCh1cGRhdGVfdmFsdWUsIEFSUklBMTBfTk9DX0REUl9UX01B SU5fU0NIRURVTEVSX0REUkNPTkYpOworCisJLyoKKwkgKiBDb25maWd1cmUgRERSIHRpbWluZyBb MHhGRkQxMjQwQ10KKwkgKiAgUkRUT01JU1MgPSB0UlRQICsgdFJQICsgdFJDRCAtIEJMLzIKKwkg KiAgV1JUT01JU1MgPSBXTCArIHRXUiArIHRSUCArIHRSQ0QgYW5kCisJICogICAgV0wgPSBSTCAr IEJMLzIgKyAyIC0gcmQtdG8td3IgOyB0V1IgPSAxNW5zICBzby4uLgorCSAqICBGaXJzdCBwYXJ0 IG9mIGVxdWF0aW9uIGlzIGluIG1lbW9yeSBjbG9jayB1bml0cyBzbyBkaXZpZGUgYnkgMgorCSAq ICBmb3IgSE1DIGNsb2NrIHVuaXRzLiAxMDY2TUh6IGlzIGNsb3NlIHRvIDFucyBzbyB1c2UgMTUg ZGlyZWN0bHkuCisJICogIFdSVE9NSVNTID0gKChSTCArIEJMLzIgKyAyICsgdFdSKSA+PiAxKS0g cmQtdG8td3IgKyB0UlAgKyB0UkNECisJICovCisJdXBkYXRlX3ZhbHVlID0gKGNhbHRpbTIuY2Zn X3JkX3RvX3BjaCArICBjYWx0aW00LmNmZ19wY2hfdG9fdmFsaWQgKworCQkJY2FsdGltMC5jZmdf YWN0X3RvX3Jkd3IgLQorCQkJKGN0cmxjZmcwLmNmZ19jdHJsX2J1cnN0X2xlbiA+PiAyKSk7CisJ aW80OF92YWx1ZSA9ICgoKChyZWFkbChBUlJJQTEwX0lPNDhfSE1DX01NUl9EUkFNVElNSU5HMCkg JgorCQkJIEFSUklBMTBfSU80OF9EUkFNVElNRV9NRU1fUkVBRF9MQVRFTkNZKSArIDIgKyAxNSAr CisJCQkoY3RybGNmZzAuY2ZnX2N0cmxfYnVyc3RfbGVuID4+IDEpKSA+PiAxKSAtCisJCSAgICAg IC8qIFVwIHRvIGhlcmUgd2FzIGluIG1lbW9yeSBjeWNsZXMgc28gZGl2aWRlIGJ5IDIgKi8KKwkJ ICAgICAgY2FsdGltMS5jZmdfcmRfdG9fd3IgKyBjYWx0aW0wLmNmZ19hY3RfdG9fcmR3ciArCisJ CSAgICAgIGNhbHRpbTQuY2ZnX3BjaF90b192YWxpZCk7CisKKwl3cml0ZWwoKChjYWx0aW0wLmNm Z19hY3RfdG9fYWN0IDw8CisJCSBBUlJJQTEwX05PQ19NUFVfRERSX1RfU0NIRURfRERSVElNSU5H X0FDVFRPQUNUX0xTQikgfAorCQkodXBkYXRlX3ZhbHVlIDw8CisJCSBBUlJJQTEwX05PQ19NUFVf RERSX1RfU0NIRURfRERSVElNSU5HX1JEVE9NSVNTX0xTQikgfAorCQkoaW80OF92YWx1ZSA8PAor CQkgQVJSSUExMF9OT0NfTVBVX0REUl9UX1NDSEVEX0REUlRJTUlOR19XUlRPTUlTU19MU0IpIHwK KwkJKChjdHJsY2ZnMC5jZmdfY3RybF9idXJzdF9sZW4gPj4gMikgPDwKKwkJIEFSUklBMTBfTk9D X01QVV9ERFJfVF9TQ0hFRF9ERFJUSU1JTkdfQlVSU1RMRU5fTFNCKSB8CisJCShjYWx0aW0xLmNm Z19yZF90b193ciA8PAorCQkgQVJSSUExMF9OT0NfTVBVX0REUl9UX1NDSEVEX0REUlRJTUlOR19S RFRPV1JfTFNCKSB8CisJCShjYWx0aW0zLmNmZ193cl90b19yZCA8PAorCQkgQVJSSUExMF9OT0Nf TVBVX0REUl9UX1NDSEVEX0REUlRJTUlOR19XUlRPUkRfTFNCKSB8CisJCSgoKGRkcmlvY3RsID09 IDEpID8gMSA6IDApIDw8CisJCSBBUlJJQTEwX05PQ19NUFVfRERSX1RfU0NIRURfRERSVElNSU5H X0JXUkFUSU9fTFNCKSksCisJICAgICAgIEFSUklBMTBfTk9DX0REUl9UX01BSU5fU0NIRURVTEVS X0REUlRJTUlORyk7CisKKwkvKiBDb25maWd1cmUgRERSIG1vZGUgWzB4RkZEMTI0MTBdIFtwcmVj aGFyZ2UgPSAwXSAqLworCXdyaXRlbCgoKGRkcmlvY3RsID8gMCA6IDEpIDw8CisJCUFSUklBMTBf Tk9DX01QVV9ERFJfVF9TQ0hFRF9ERFJNT0RfQldSQVRJT0VYVEVOREVEX0xTQiksCisJICAgICAg IEFSUklBMTBfTk9DX0REUl9UX01BSU5fU0NIRURVTEVSX0REUk1PREUpOworCisJLyogQ29uZmln dXJlIHRoZSByZWFkIGxhdGVuY3kgWzB4RkZEMTI0MTRdICovCisJd3JpdGVsKCgocmVhZGwoQVJS SUExMF9JTzQ4X0hNQ19NTVJfRFJBTVRJTUlORzApICYKKwkJIEFSUklBMTBfSU80OF9EUkFNVElN RV9NRU1fUkVBRF9MQVRFTkNZKSA+PiAxKSArCisJICAgICAgIEREUl9SRUFEX0xBVEVOQ1lfREVM QVksCisJICAgICAgIEFSUklBMTBfTk9DX0REUl9UX01BSU5fU0NIRURVTEVSX1JFQURMQVRFTkNZ KTsKKworCS8qCisJICogQ29uZmlndXJpbmcgdGltaW5nIHZhbHVlcyBjb25jZXJuaW5nIGFjdGl2 YXRlIGNvbW1hbmRzCisJICogWzB4RkZEMTI0MzhdIFtGQVdCQU5LIGFsd2F5IDEgYmVjYXVzZSBh bHdheXMgNCBiYW5rIEREUl0KKwkgKi8KKwl3cml0ZWwoKChjYWx0aW0wLmNmZ19hY3RfdG9fYWN0 X2RiIDw8CisJCSBBUlJJQTEwX05PQ19NUFVfRERSX1RfU0NIRURfQUNUSVZBVEVfUlJEX0xTQikg fAorCQkoY2FsdGltOS5jZmdfNF9hY3RfdG9fYWN0IDw8CisJCSBBUlJJQTEwX05PQ19NUFVfRERS X1RfU0NIRURfQUNUSVZBVEVfRkFXX0xTQikgfAorCQkoQVJSSUExMF9TRFJfQUNUSVZBVEVfRkFX QkFOSyA8PAorCQkgQVJSSUExMF9OT0NfTVBVX0REUl9UX1NDSEVEX0FDVElWQVRFX0ZBV0JBTktf TFNCKSksCisJICAgICAgIEFSUklBMTBfTk9DX0REUl9UX01BSU5fU0NIRURVTEVSX0FDVElWQVRF KTsKKworCS8qCisJICogQ29uZmlndXJpbmcgdGltaW5nIHZhbHVlcyBjb25jZXJuaW5nIGRldmlj ZSB0byBkZXZpY2UgZGF0YSBidXMKKwkgKiBvd25lcnNoaXAgY2hhbmdlIFsweEZGRDEyNDNDXQor CSAqLworCXdyaXRlbCgoKGNhbHRpbTEuY2ZnX3JkX3RvX3JkX2RjIDw8CisJCSBBUlJJQTEwX05P Q19NUFVfRERSX1RfU0NIRURfREVWVE9ERVZfQlVTUkRUT1JEX0xTQikgfAorCQkoY2FsdGltMS5j ZmdfcmRfdG9fd3JfZGMgPDwKKwkJIEFSUklBMTBfTk9DX01QVV9ERFJfVF9TQ0hFRF9ERVZUT0RF Vl9CVVNSRFRPV1JfTFNCKSB8CisJCShjYWx0aW0zLmNmZ193cl90b19yZF9kYyA8PAorCQkgQVJS SUExMF9OT0NfTVBVX0REUl9UX1NDSEVEX0RFVlRPREVWX0JVU1dSVE9SRF9MU0IpKSwKKwkgICAg ICAgQVJSSUExMF9OT0NfRERSX1RfTUFJTl9TQ0hFRFVMRVJfREVWVE9ERVYpOworCisJLyogRW5h YmxlIG9yIGRpc2FibGUgdGhlIFNEUkFNIEVDQyAqLworCWlmIChjdHJsY2ZnMS5jZmdfY3RybF9l bmFibGVfZWNjKSB7CisJCXNldGJpdHNfbGUzMihBUlJJQTEwX0VDQ19ITUNfT0NQX01QUl9FQ0ND VFJMMSwKKwkJCSAgICAgKEFSUklBMTBfRUNDX0hNQ19PQ1BfRUNDQ1RMX0FXQl9DTlRfUlNUIHwK KwkJCSAgICAgIEFSUklBMTBfRUNDX0hNQ19PQ1BfRUNDQ1RMX0NOVF9SU1QgfAorCQkJICAgICAg QVJSSUExMF9FQ0NfSE1DX09DUF9FQ0NDVExfRUNDX0VOKSk7CisJCWNscmJpdHNfbGUzMihBUlJJ QTEwX0VDQ19ITUNfT0NQX01QUl9FQ0NDVFJMMSwKKwkJCSAgICAgKEFSUklBMTBfRUNDX0hNQ19P Q1BfRUNDQ1RMX0FXQl9DTlRfUlNUIHwKKwkJCSAgICAgIEFSUklBMTBfRUNDX0hNQ19PQ1BfRUND Q1RMX0NOVF9SU1QpKTsKKwkJc2V0Yml0c19sZTMyKEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX0VD Q0NUUkwyLAorCQkJICAgICAoQVJSSUExMF9FQ0NfSE1DX09DUF9FQ0NDVEwyX1JNV19FTiB8CisJ CQkgICAgICBBUlJJQTEwX0VDQ19ITUNfT0NQX0VDQ0NUTDJfQVdCX0VOKSk7CisJfSBlbHNlIHsK KwkJY2xyYml0c19sZTMyKEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX0VDQ0NUUkwxLAorCQkJICAg ICAoQVJSSUExMF9FQ0NfSE1DX09DUF9FQ0NDVExfQVdCX0NOVF9SU1QgfAorCQkJICAgICAgQVJS SUExMF9FQ0NfSE1DX09DUF9FQ0NDVExfQ05UX1JTVCB8CisJCQkgICAgICBBUlJJQTEwX0VDQ19I TUNfT0NQX0VDQ0NUTF9FQ0NfRU4pKTsKKwkJY2xyYml0c19sZTMyKEFSUklBMTBfRUNDX0hNQ19P Q1BfTVBSX0VDQ0NUUkwyLAorCQkJICAgICAoQVJSSUExMF9FQ0NfSE1DX09DUF9FQ0NDVEwyX1JN V19FTiB8CisJCQkgICAgICBBUlJJQTEwX0VDQ19ITUNfT0NQX0VDQ0NUTDJfQVdCX0VOKSk7CisJ fQorfQorCitzdGF0aWMgaW50IGFycmlhMTBfc2RyYW1fZmlyZXdhbGxfc2V0dXAodm9pZCkKK3sK Kwl1aW50MzJfdCBtcHVfZW4gPSAwOworCisJLyogc2V0IHRvIGRlZmF1bHQgc3RhdGUgKi8KKwl3 cml0ZWwoMHgwMDAwMDAwMCwgQVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfRU4pOworCXdyaXRlbCgw eDAwMDAwMDAwLCBBUlJJQTEwX05PQ19GV19ERFJfTDNfRERSX1NDUl9BRERSICsgMHgwMCk7CisK Kwl3cml0ZWwoMHhmZmZmMDAwMCwgQVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfTVBVUkVHSU9OMEFE RFIpOworCisJbXB1X2VuIHw9IEFSUklBMTBfTk9DX0ZXX0REUl9NUFVfTVBVUkVHMEVOOworCisJ d3JpdGVsKG1wdV9lbiwgQVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfRU4pOworCXdyaXRlbCgweDAw MDAwMDAwLCBBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9NUFVSRUdJT04xQUREUik7CisJd3JpdGVs KDB4MDAwMDAwMDAsIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX01QVVJFR0lPTjJBRERSKTsKKwl3 cml0ZWwoMHgwMDAwMDAwMCwgQVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfTVBVUkVHSU9OM0FERFIp OworCXdyaXRlbCgweGZmZmYwMDAwLCBBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9GUEdBMlNEUkFN MFJFR0lPTjBBRERSKTsKKworCW1wdV9lbiB8PSBBUlJJQTEwX05PQ19GV19ERFJfTVBVX01QVVJF RzFFTjsKKwl3cml0ZWwobXB1X2VuLCBBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9FTik7CisKKwl3 cml0ZWwoMHgwMDAwMDAwMCwgQVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfRlBHQTJTRFJBTTBSRUdJ T04xQUREUik7CisJd3JpdGVsKDB4MDAwMDAwMDAsIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0ZQ R0EyU0RSQU0wUkVHSU9OMkFERFIpOworCXdyaXRlbCgweDAwMDAwMDAwLCBBUlJJQTEwX1NEUl9G V19NUFVfRlBHQV9GUEdBMlNEUkFNMFJFR0lPTjNBRERSKTsKKwl3cml0ZWwoMHhmZmZmMDAwMCwg QVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfRlBHQTJTRFJBTTFSRUdJT04wQUREUik7CisKKwltcHVf ZW4gfD0gQVJSSUExMF9OT0NfRldfRERSX01QVV9NUFVSRUcyRU47CisJd3JpdGVsKG1wdV9lbiwg QVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfRU4pOworCisJd3JpdGVsKDB4MDAwMDAwMDAsIEFSUklB MTBfU0RSX0ZXX01QVV9GUEdBX0ZQR0EyU0RSQU0xUkVHSU9OMUFERFIpOworCXdyaXRlbCgweDAw MDAwMDAwLCBBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9GUEdBMlNEUkFNMVJFR0lPTjJBRERSKTsK Kwl3cml0ZWwoMHgwMDAwMDAwMCwgQVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfRlBHQTJTRFJBTTFS RUdJT04zQUREUik7CisJd3JpdGVsKDB4ZmZmZjAwMDAsIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdB X0ZQR0EyU0RSQU0yUkVHSU9OMEFERFIpOworCisJbXB1X2VuIHw9IEFSUklBMTBfTk9DX0ZXX0RE Ul9NUFVfTVBVUkVHM0VOOworCXdyaXRlbChtcHVfZW4sIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdB X0VOKTsKKworCXdyaXRlbCgweDAwMDAwMDAwLCBBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9GUEdB MlNEUkFNMlJFR0lPTjFBRERSKTsKKwl3cml0ZWwoMHgwMDAwMDAwMCwgQVJSSUExMF9TRFJfRldf TVBVX0ZQR0FfRlBHQTJTRFJBTTJSRUdJT04yQUREUik7CisJd3JpdGVsKDB4MDAwMDAwMDAsIEFS UklBMTBfU0RSX0ZXX01QVV9GUEdBX0ZQR0EyU0RSQU0yUkVHSU9OM0FERFIpOworCisJd3JpdGVs KDB4ZmZmZjAwMDAsIEFSUklBMTBfTk9DX0ZXX0REUl9MM19IUFNSRUdJT04wQUREUik7CisJd3Jp dGVsKEFSUklBMTBfTk9DX0ZXX0REUl9MM19IUFNSRUcwRU4sIEFSUklBMTBfTk9DX0ZXX0REUl9M M19FTik7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGFycmlhMTBfZGRyX2NhbGlicmF0aW9uX3Nl cXVlbmNlKHZvaWQpCit7CisJLyogQ2hlY2sgdG8gc2VlIGlmIFNEUkFNIGNhbCB3YXMgc3VjY2Vz cyAqLworCWlmIChhcnJpYTEwX3NkcmFtX3N0YXJ0dXAoKSkgeworCQlwdXRzX2xsKCJERFJDQUw6 IEZhaWxlZFxuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwlwdXRzX2xsKCJERFJDQUw6IFN1Y2Nl c3NcbiIpOworCisJLyogaW5pdGlhbGl6ZSB0aGUgTU1SIHJlZ2lzdGVyICovCisJYXJyaWExMF9z ZHJhbV9tbXJfaW5pdCgpOworCisJaWYgKGFycmlhMTBfc2RyYW1fZmlyZXdhbGxfc2V0dXAoKSkK KwkJcHV0c19sbCgiRlc6IEVycm9yIENvbmZpZ3VyaW5nIEZpcmV3YWxsXG4iKTsKKworCXJldHVy biAwOworfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2N5Y2xvbmU1LWJvb3Rz b3VyY2UuYyBiL2FyY2gvYXJtL21hY2gtc29jZnBnYS9jeWNsb25lNS1ib290c291cmNlLmMKaW5k ZXggZGE0MTAyYzRmNTMxLi43MTdhMDAzNDI1MDYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gt c29jZnBnYS9jeWNsb25lNS1ib290c291cmNlLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdh L2N5Y2xvbmU1LWJvb3Rzb3VyY2UuYwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgPGlvLmg+ CiAjaW5jbHVkZSA8bWFjaC9jeWNsb25lNS1zeXN0ZW0tbWFuYWdlci5oPgogI2luY2x1ZGUgPG1h Y2gvY3ljbG9uZTUtcmVncy5oPgorI2luY2x1ZGUgPG1hY2gvYXJyaWExMC1zeXN0ZW0tbWFuYWdl ci5oPgogCiAjZGVmaW5lIENZQ0xPTkU1X1NZU01HUl9CT09USU5GTwkweDE0CiAKQEAgLTU0LDQg KzU1LDQ2IEBAIHN0YXRpYyBpbnQgY3ljbG9uZTVfYm9vdF9zYXZlX2xvYyh2b2lkKQogCiAJcmV0 dXJuIDA7CiB9Ci1jb3JlX2luaXRjYWxsKGN5Y2xvbmU1X2Jvb3Rfc2F2ZV9sb2MpOworCitzdGF0 aWMgaW50IGFycmlhMTBfYm9vdF9zYXZlX2xvYyh2b2lkKQoreworCWVudW0gYm9vdHNvdXJjZSBz cmMgPSBCT09UU09VUkNFX1VOS05PV047CisJdWludDMyX3QgdmFsOworCisJdmFsID0gcmVhZGwo QVJSSUExMF9TWVNNR1JfQk9PVElORk8pOworCisJc3dpdGNoICgodmFsICYgMHg3MDAwKSA+PiAx MikgeworCWNhc2UgMDoKKwkJLyogcmVzZXJ2ZWQgKi8KKwkJYnJlYWs7CisJY2FzZSAxOgorCQkv KiBGUEdBLCBjdXJyZW50bHkgbm90IGRlY29kZWQgKi8KKwkJYnJlYWs7CisJY2FzZSAyOgorCWNh c2UgMzoKKwkJc3JjID0gQk9PVFNPVVJDRV9OQU5EOworCQlicmVhazsKKwljYXNlIDQ6CisJY2Fz ZSA1OgorCQlzcmMgPSBCT09UU09VUkNFX01NQzsKKwkJYnJlYWs7CisJY2FzZSA2OgorCWNhc2Ug NzoKKwkJc3JjID0gQk9PVFNPVVJDRV9TUEk7CisJCWJyZWFrOworCX0KKworCWJvb3Rzb3VyY2Vf c2V0KHNyYyk7CisJYm9vdHNvdXJjZV9zZXRfaW5zdGFuY2UoMCk7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBzb2NmcGdhX2Jvb3Rfc2F2ZV9sb2Modm9pZCkKK3sKKwlpZiAoSVNfRU5B QkxFRChDT05GSUdfQVJDSF9TT0NGUEdBX0FSUklBMTApKQorCQlyZXR1cm4gYXJyaWExMF9ib290 X3NhdmVfbG9jKCk7CisJZWxzZQorCQlyZXR1cm4gY3ljbG9uZTVfYm9vdF9zYXZlX2xvYygpOwor fQorY29yZV9pbml0Y2FsbChzb2NmcGdhX2Jvb3Rfc2F2ZV9sb2MpOwpkaWZmIC0tZ2l0IGEvYXJj aC9hcm0vbWFjaC1zb2NmcGdhL2dlbmVyaWMuYyBiL2FyY2gvYXJtL21hY2gtc29jZnBnYS9nZW5l cmljLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5MjBiZDY1OGZkNy4uMDAwMDAw MDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtc29jZnBnYS9nZW5lcmljLmMKKysrIC9kZXYvbnVs bApAQCAtMSwxMDQgKzAsMCBAQAotI2luY2x1ZGUgPGNvbW1vbi5oPgotI2luY2x1ZGUgPG1hbGxv Yy5oPgotI2luY2x1ZGUgPGVudmZzLmg+Ci0jaW5jbHVkZSA8aW5pdC5oPgotI2luY2x1ZGUgPGlv Lmg+Ci0jaW5jbHVkZSA8ZnMuaD4KLSNpbmNsdWRlIDxsaW51eC9jbGtkZXYuaD4KLSNpbmNsdWRl IDxsaW51eC9jbGsuaD4KLSNpbmNsdWRlIDxsaW51eC9zdGF0Lmg+Ci0jaW5jbHVkZSA8YXNtL21l bW9yeS5oPgotI2luY2x1ZGUgPG1hY2gvc3lzdGVtLW1hbmFnZXIuaD4KLSNpbmNsdWRlIDxtYWNo L3Jlc2V0LW1hbmFnZXIuaD4KLSNpbmNsdWRlIDxtYWNoL3NvY2ZwZ2EtcmVncy5oPgotI2luY2x1 ZGUgPG1hY2gvbmljMzAxLmg+Ci0KLSNkZWZpbmUgU1lTTUdSX1NETU1DR1JQX0NUUkxfUkVHCShD WUNMT05FNV9TWVNNR1JfQUREUkVTUyArIDB4MTA4KQotI2RlZmluZSBTWVNNR1JfU0RNTUNfQ1RS TF9TTVBMU0VMKHNtcGxzZWwpCSgoKHNtcGxzZWwpICYgMHg3KSA8PCAzKQotI2RlZmluZSBTWVNN R1JfU0RNTUNfQ1RSTF9EUlZTRUwoZHJ2c2VsKQkoKGRydnNlbCkgJiAweDcpCi0KLXN0YXRpYyBp bnQgc29jZnBnYV9kZXRlY3Rfc2RyYW0odm9pZCkKLXsKLQl2b2lkIF9faW9tZW0gKmJhc2UgPSAo dm9pZCAqKUNZQ0xPTkU1X1NEUl9BRERSRVNTOwotCXVpbnQzMl90IGRyYW1hZGRydywgY3RybHdp ZHRoLCBtZW1zaXplOwotCWludCBjb2xiaXRzLCByb3diaXRzLCBiYW5rYml0czsKLQlpbnQgd2lk dGhfYnl0ZXM7Ci0KLQlkcmFtYWRkcncgPSByZWFkbChiYXNlICsgMHg1MDAwICsgMHgyYyk7Ci0K LQljb2xiaXRzID0gZHJhbWFkZHJ3ICYgMHgxZjsKLQlyb3diaXRzID0gKGRyYW1hZGRydyA+PiA1 KSAmIDB4MWY7Ci0JYmFua2JpdHMgPSAoZHJhbWFkZHJ3ID4+IDEwKSAmIDB4NzsKLQotCWN0cmx3 aWR0aCA9IHJlYWRsKGJhc2UgKyAweDUwMDAgKyAweDYwKTsKLQotCXN3aXRjaCAoY3RybHdpZHRo ICYgMHgzKSB7Ci0JZGVmYXVsdDoKLQljYXNlIDA6Ci0JCXdpZHRoX2J5dGVzID0gMTsKLQkJYnJl YWs7Ci0JY2FzZSAxOgotCQl3aWR0aF9ieXRlcyA9IDI7Ci0JCWJyZWFrOwotCWNhc2UgMjoKLQkJ d2lkdGhfYnl0ZXMgPSA0OwotCQlicmVhazsKLQl9Ci0KLQltZW1zaXplID0gKDEgPDwgY29sYml0 cykgKiAoMSA8PCByb3diaXRzKSAqICgxIDw8IGJhbmtiaXRzKSAqIHdpZHRoX2J5dGVzOwotCi0J cHJfZGVidWcoIiVzOiBjb2xiaXRzOiAlZCByb3diaXRzOiAlZCBiYW5rYml0czogJWQgd2lkdGg6 ICVkID0+IG1lbXNpemU6IDB4JTA4eFxuIiwKLQkJCV9fZnVuY19fLCBjb2xiaXRzLCByb3diaXRz LCBiYW5rYml0cywgd2lkdGhfYnl0ZXMsIG1lbXNpemUpOwotCi0JYXJtX2FkZF9tZW1fZGV2aWNl KCJyYW0wIiwgMHgwLCBtZW1zaXplKTsKLQotCXJldHVybiAwOwotfQotCi0vKiBTb21lIGluaXRp YWxpemF0aW9uIGZvciB0aGUgRU1BQyAqLwotc3RhdGljIHZvaWQgc29jZnBnYV9pbml0X2VtYWMo dm9pZCkKLXsKLQl1aW50MzJfdCByc3QsIHZhbDsKLQotCS8qIE5vIG5lZWQgZm9yIHRoaXMgd2l0 aG91dCBuZXR3b3JrIHN1cHBvcnQsIGUuZy4geGxvYWRlciBidWlsZCAqLwotCWlmICghSVNfRU5B QkxFRChDT05GSUdfTkVUKSkKLQkJcmV0dXJuOwotCi0JLyogQWNjb3JkaW5nIHRvIEN5Y2xvbmUg ViBkYXRhc2hlZXQsIDE3LTYwICJFTUFDIEhQUyBJbnRlcmZhY2UKLQkgKiBJbml0aWFsaXphdGlv biIsIGNoYW5naW5nIFBIWVNFTCBzaG91bGQgYmUgZG9uZSB3aXRoIEVNQUMgaW4gcmVzZXQKLQkg KiB2aWEgcGVybW9kcnN0LiAgKi8KLQotCS8qIEV2ZXJ5dGhpbmcsIGV4Y2VwdCBMNFdEMC8xLCBp cyBvdXQgb2YgcmVzZXQgdmlhIHNvY2ZwZ2FfbG93bGV2ZWxfaW5pdCgpICovCi0JcnN0ID0gcmVh ZGwoQ1lDTE9ORTVfUlNUTUdSX0FERFJFU1MgKyBSRVNFVF9NR1JfUEVSX01PRF9SRVNFVF9PRlMp OwotCXJzdCB8PSBSU1RNR1JfUEVSTU9EUlNUX0VNQUMwIHwgUlNUTUdSX1BFUk1PRFJTVF9FTUFD MTsKLQl3cml0ZWwocnN0LCBDWUNMT05FNV9SU1RNR1JfQUREUkVTUyArIFJFU0VUX01HUl9QRVJf TU9EX1JFU0VUX09GUyk7Ci0KLQkvKiBTZXQgZW1hYzAvMSBQSFkgaW50ZXJmYWNlIHNlbGVjdCB0 byBSR01JSS4gIFdlIGNvdWxkIHJlYWQgcGh5LW1vZGUKLQkgKiBmcm9tIHRoZSBkZXZpY2UgdHJl ZSwgaWYgaXQgd2FzIGRlc2lyZWQgdG8gc3VwcG9ydCBpbnRlcmZhY2VzIG90aGVyCi0JICogdGhh biBSR01JSS4gKi8KLQl2YWwgPSByZWFkbChDT05GSUdfU1lTTUdSX0VNQUNfQ1RSTCk7Ci0JdmFs ICY9IH4oU1lTTUdSX0VNQUNHUlBfQ1RSTF9QSFlTRUxfTUFTSyA8PCBTWVNNR1JfRU1BQ0dSUF9D VFJMX1BIWVNFTDBfTFNCKTsKLQl2YWwgJj0gfihTWVNNR1JfRU1BQ0dSUF9DVFJMX1BIWVNFTF9N QVNLIDw8IFNZU01HUl9FTUFDR1JQX0NUUkxfUEhZU0VMMV9MU0IpOwotCXZhbCB8PSBTWVNNR1Jf RU1BQ0dSUF9DVFJMX1BIWVNFTF9FTlVNX1JHTUlJIDw8IFNZU01HUl9FTUFDR1JQX0NUUkxfUEhZ U0VMMF9MU0I7Ci0JdmFsIHw9IFNZU01HUl9FTUFDR1JQX0NUUkxfUEhZU0VMX0VOVU1fUkdNSUkg PDwgU1lTTUdSX0VNQUNHUlBfQ1RSTF9QSFlTRUwxX0xTQjsKLQl3cml0ZWwodmFsLCBDT05GSUdf U1lTTUdSX0VNQUNfQ1RSTCk7Ci0KLQkvKiBUYWtlIGVtYWMwIGFuZCBlbWFjMSBvdXQgb2YgcmVz ZXQgKi8KLQlyc3QgJj0gfihSU1RNR1JfUEVSTU9EUlNUX0VNQUMwIHwgUlNUTUdSX1BFUk1PRFJT VF9FTUFDMSk7Ci0Jd3JpdGVsKHJzdCwgQ1lDTE9ORTVfUlNUTUdSX0FERFJFU1MgKyBSRVNFVF9N R1JfUEVSX01PRF9SRVNFVF9PRlMpOwotfQotCi1zdGF0aWMgaW50IHNvY2ZwZ2FfaW5pdCh2b2lk KQotewotCXNvY2ZwZ2FfaW5pdF9lbWFjKCk7Ci0KLQl3cml0ZWwoU1lTTUdSX1NETU1DX0NUUkxf RFJWU0VMKDMpIHwgU1lTTUdSX1NETU1DX0NUUkxfU01QTFNFTCgwKSwKLQkJU1lTTUdSX1NETU1D R1JQX0NUUkxfUkVHKTsKLQotCW5pYzMwMV9zbGF2ZV9ucygpOwotCi0Jc29jZnBnYV9kZXRlY3Rf c2RyYW0oKTsKLQotCXJldHVybiAwOwotfQotY29yZV9pbml0Y2FsbChzb2NmcGdhX2luaXQpOwpk aWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9hcnJpYTEwLWNs b2NrLW1hbmFnZXIuaCBiL2FyY2gvYXJtL21hY2gtc29jZnBnYS9pbmNsdWRlL21hY2gvYXJyaWEx MC1jbG9jay1tYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li5lZTJiOWIzYzVlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2Ev aW5jbHVkZS9tYWNoL2FycmlhMTAtY2xvY2stbWFuYWdlci5oCkBAIC0wLDAgKzEsMjQ5IEBACisv KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFsdGVyYSBDb3Jwb3JhdGlvbiA8d3d3LmFsdGVyYS5j b20+CisgKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6CUdQTC0yLjArCisgKi8KKworI2lm bmRlZglfQVJSSUExMF9DTE9DS19NQU5BR0VSX0hfCisjZGVmaW5lCV9BUlJJQTEwX0NMT0NLX01B TkFHRVJfSF8KKworc3RydWN0IGFycmlhMTBfY2xvY2tfbWFuYWdlciB7CisJLyogY2xrbWdyICov CisJdm9sYXRpbGUgdWludDMyX3QgIGN0cmw7CisJdm9sYXRpbGUgdWludDMyX3QgIGludHI7CisJ dm9sYXRpbGUgdWludDMyX3QgIGludHJzOworCXZvbGF0aWxlIHVpbnQzMl90ICBpbnRycjsKKwl2 b2xhdGlsZSB1aW50MzJfdCAgaW50cmVuOworCXZvbGF0aWxlIHVpbnQzMl90ICBpbnRyZW5zOwor CXZvbGF0aWxlIHVpbnQzMl90ICBpbnRyZW5yOworCXZvbGF0aWxlIHVpbnQzMl90ICBzdGF0Owor CXZvbGF0aWxlIHVpbnQzMl90ICB0ZXN0aW9jdHJsOworCXZvbGF0aWxlIHVpbnQzMl90ICBfcGFk XzB4MjRfMHg0MFs3XTsKKworCS8qIG1haW5wbGxncnAqLworCXZvbGF0aWxlIHVpbnQzMl90ICBt YWluX3BsbF92Y28wOworCXZvbGF0aWxlIHVpbnQzMl90ICBtYWluX3BsbF92Y28xOworCXZvbGF0 aWxlIHVpbnQzMl90ICBtYWluX3BsbF9lbjsKKwl2b2xhdGlsZSB1aW50MzJfdCAgbWFpbl9wbGxf ZW5zOworCXZvbGF0aWxlIHVpbnQzMl90ICBtYWluX3BsbF9lbnI7CisJdm9sYXRpbGUgdWludDMy X3QgIG1haW5fcGxsX2J5cGFzczsKKwl2b2xhdGlsZSB1aW50MzJfdCAgbWFpbl9wbGxfYnlwYXNz czsKKwl2b2xhdGlsZSB1aW50MzJfdCAgbWFpbl9wbGxfYnlwYXNzcjsKKwl2b2xhdGlsZSB1aW50 MzJfdCAgbWFpbl9wbGxfbXB1Y2xrOworCXZvbGF0aWxlIHVpbnQzMl90ICBtYWluX3BsbF9ub2Nj bGs7CisJdm9sYXRpbGUgdWludDMyX3QgIG1haW5fcGxsX2NudHIyY2xrOworCXZvbGF0aWxlIHVp bnQzMl90ICBtYWluX3BsbF9jbnRyM2NsazsKKwl2b2xhdGlsZSB1aW50MzJfdCAgbWFpbl9wbGxf Y250cjRjbGs7CisJdm9sYXRpbGUgdWludDMyX3QgIG1haW5fcGxsX2NudHI1Y2xrOworCXZvbGF0 aWxlIHVpbnQzMl90ICBtYWluX3BsbF9jbnRyNmNsazsKKwl2b2xhdGlsZSB1aW50MzJfdCAgbWFp bl9wbGxfY250cjdjbGs7CisJdm9sYXRpbGUgdWludDMyX3QgIG1haW5fcGxsX2NudHI4Y2xrOwor CXZvbGF0aWxlIHVpbnQzMl90ICBtYWluX3BsbF9jbnRyOWNsazsKKwl2b2xhdGlsZSB1aW50MzJf dCAgbWFpbl9wbGxfX3BhZF8weDQ4XzB4NWJbNV07CisJdm9sYXRpbGUgdWludDMyX3QgIG1haW5f cGxsX2NudHIxNWNsazsKKwl2b2xhdGlsZSB1aW50MzJfdCAgbWFpbl9wbGxfb3V0cnN0OworCXZv bGF0aWxlIHVpbnQzMl90ICBtYWluX3BsbF9vdXRyc3RzdGF0OworCXZvbGF0aWxlIHVpbnQzMl90 ICBtYWluX3BsbF9ub2NkaXY7CisJdm9sYXRpbGUgdWludDMyX3QgIG1haW5fcGxsX19wYWRfMHg2 Y18weDgwWzVdOworCisJLyogcGVycGxsZ3JwKi8KKwl2b2xhdGlsZSB1aW50MzJfdCAgcGVyX3Bs bF92Y28wOworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxsX3ZjbzE7CisJdm9sYXRpbGUgdWlu dDMyX3QgIHBlcl9wbGxfZW47CisJdm9sYXRpbGUgdWludDMyX3QgIHBlcl9wbGxfZW5zOworCXZv bGF0aWxlIHVpbnQzMl90ICBwZXJfcGxsX2VucjsKKwl2b2xhdGlsZSB1aW50MzJfdCAgcGVyX3Bs bF9ieXBhc3M7CisJdm9sYXRpbGUgdWludDMyX3QgIHBlcl9wbGxfYnlwYXNzczsKKwl2b2xhdGls ZSB1aW50MzJfdCAgcGVyX3BsbF9ieXBhc3NyOworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxs X19wYWRfMHgyMF8weDI3WzJdOworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxsX2NudHIyY2xr OworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxsX2NudHIzY2xrOworCXZvbGF0aWxlIHVpbnQz Ml90ICBwZXJfcGxsX2NudHI0Y2xrOworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxsX2NudHI1 Y2xrOworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxsX2NudHI2Y2xrOworCXZvbGF0aWxlIHVp bnQzMl90ICBwZXJfcGxsX2NudHI3Y2xrOworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxsX2Nu dHI4Y2xrOworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxsX2NudHI5Y2xrOworCXZvbGF0aWxl IHVpbnQzMl90ICBwZXJfcGxsX19wYWRfMHg0OF8weDVmWzZdOworCXZvbGF0aWxlIHVpbnQzMl90 ICBwZXJfcGxsX291dHJzdDsKKwl2b2xhdGlsZSB1aW50MzJfdCAgcGVyX3BsbF9vdXRyc3RzdGF0 OworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxsX2VtYWNjdGw7CisJdm9sYXRpbGUgdWludDMy X3QgIHBlcl9wbGxfZ3Bpb2RpdjsKKwl2b2xhdGlsZSB1aW50MzJfdCAgcGVyX3BsbF9fcGFkXzB4 NzBfMHg4MFs0XTsKK307CisKK3N0cnVjdCBhcnJpYTEwX21haW5wbGxfY2ZnIHsKKwl1aW50MzJf dCB2Y28wX3BzcmM7CisJdWludDMyX3QgdmNvMV9kZW5vbTsKKwl1aW50MzJfdCB2Y28xX251bWVy OworCXVpbnQzMl90IG1wdWNsazsKKwl1aW50MzJfdCBtcHVjbGtfY250OworCXVpbnQzMl90IG1w dWNsa19zcmM7CisJdWludDMyX3Qgbm9jY2xrOworCXVpbnQzMl90IG5vY2Nsa19jbnQ7CisJdWlu dDMyX3Qgbm9jY2xrX3NyYzsKKwl1aW50MzJfdCBjbnRyMmNsa19jbnQ7CisJdWludDMyX3QgY250 cjNjbGtfY250OworCXVpbnQzMl90IGNudHI0Y2xrX2NudDsKKwl1aW50MzJfdCBjbnRyNWNsa19j bnQ7CisJdWludDMyX3QgY250cjZjbGtfY250OworCXVpbnQzMl90IGNudHI3Y2xrX2NudDsKKwl1 aW50MzJfdCBjbnRyN2Nsa19zcmM7CisJdWludDMyX3QgY250cjhjbGtfY250OworCXVpbnQzMl90 IGNudHI5Y2xrX2NudDsKKwl1aW50MzJfdCBjbnRyOWNsa19zcmM7CisJdWludDMyX3QgY250cjE1 Y2xrX2NudDsKKwl1aW50MzJfdCBub2NkaXZfbDRtYWluY2xrOworCXVpbnQzMl90IG5vY2Rpdl9s NG1wY2xrOworCXVpbnQzMl90IG5vY2Rpdl9sNHNwY2xrOworCXVpbnQzMl90IG5vY2Rpdl9jc2F0 Y2xrOworCXVpbnQzMl90IG5vY2Rpdl9jc3RyYWNlY2xrOworCXVpbnQzMl90IG5vY2Rpdl9jc3Bk YmdjbGs7Cit9OworCitzdHJ1Y3QgYXJyaWExMF9wZXJwbGxfY2ZnIHsKKwl1aW50MzJfdCB2Y28w X3BzcmM7CisJdWludDMyX3QgdmNvMV9kZW5vbTsKKwl1aW50MzJfdCB2Y28xX251bWVyOworCXVp bnQzMl90IGNudHIyY2xrX2NudDsKKwl1aW50MzJfdCBjbnRyMmNsa19zcmM7CisJdWludDMyX3Qg Y250cjNjbGtfY250OworCXVpbnQzMl90IGNudHIzY2xrX3NyYzsKKwl1aW50MzJfdCBjbnRyNGNs a19jbnQ7CisJdWludDMyX3QgY250cjRjbGtfc3JjOworCXVpbnQzMl90IGNudHI1Y2xrX2NudDsK Kwl1aW50MzJfdCBjbnRyNWNsa19zcmM7CisJdWludDMyX3QgY250cjZjbGtfY250OworCXVpbnQz Ml90IGNudHI2Y2xrX3NyYzsKKwl1aW50MzJfdCBjbnRyN2Nsa19jbnQ7CisJdWludDMyX3QgY250 cjhjbGtfY250OworCXVpbnQzMl90IGNudHI4Y2xrX3NyYzsKKwl1aW50MzJfdCBjbnRyOWNsa19j bnQ7CisJdWludDMyX3QgY250cjljbGtfc3JjOworCXVpbnQzMl90IGVtYWNjdGxfZW1hYzBzZWw7 CisJdWludDMyX3QgZW1hY2N0bF9lbWFjMXNlbDsKKwl1aW50MzJfdCBlbWFjY3RsX2VtYWMyc2Vs OworCXVpbnQzMl90IGdwaW9kaXZfZ3Bpb2RiY2xrOworfTsKKworZXh0ZXJuIGludCBhcnJpYTEw X2NtX2Jhc2ljX2luaXQoc3RydWN0IGFycmlhMTBfbWFpbnBsbF9jZmcgKm1haW5wbGxfY2ZnLAor CQkJCSBzdHJ1Y3QgYXJyaWExMF9wZXJwbGxfY2ZnICpwZXJwbGxfY2ZnKTsKK2V4dGVybiB1bnNp Z25lZCBpbnQgY21fZ2V0X21tY19jb250cm9sbGVyX2Nsa19oeih2b2lkKTsKK2V4dGVybiB2b2lk IGFycmlhMTBfY21fdXNlX2ludG9zYyh2b2lkKTsKK2V4dGVybiB1aW50MzJfdCBjbV9sNF9tYWlu X2Nsa19oejsKK2V4dGVybiB1aW50MzJfdCBjbV9sNF9zcF9jbGtfaHo7CitleHRlcm4gdWludDMy X3QgY21fbDRfbXBfY2xrX2h6OworZXh0ZXJuIHVpbnQzMl90IGNtX2w0X3N5c19mcmVlX2Nsa19o ejsKKworI2RlZmluZSBBUlJJQTEwX0NMS01HUl9BTFRFUkFHUlBfTVBVX0NMS19PRkZTRVQJCQkw eDE0MAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ19DTEtfT0ZGU0VUCQkJMHgx NDQKKworLyogdmFsdWUgKi8KKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9CWVBBU1Nf UkVTRVQJCQkweDAwMDAwMDNmCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfVkNPMF9S RVNFVAkJCTB4MDAwMTAwNTMKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08xX1JF U0VUCQkJMHgwMDAxMDAwMQorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX1ZDTzBfUFNS Q19FT1NDCQkJMHgwCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfVkNPMF9QU1JDX0Vf SU5UT1NDCQkweDEKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08wX1BTUkNfRjJT CQkJMHgyCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9CWVBBU1NfUkVTRVQJCQkweDAw MDAwMGZmCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9WQ08wX1JFU0VUCQkJMHgwMDAx MDA1MworI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMV9SRVNFVAkJCTB4MDAwMTAw MDEKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfUEVSUExMX1ZDTzBfUFNSQ19FT1NDCQkJMHgwCisj ZGVmaW5lIEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9WQ08wX1BTUkNfRV9JTlRPU0MJCTB4MQorI2Rl ZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMF9QU1JDX0YyUwkJCTB4MgorI2RlZmluZSBB UlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMF9QU1JDX01BSU4JCQkweDMKKworLyogbWFzayAqLwor I2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX0VOX1MyRlVTRVIwQ0xLRU5fU0VUX01TSwkJ MHgwMDAwMDA0MAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX0VOX0hNQ1BMTFJFRkNM S0VOX1NFVF9NU0sJMHgwMDAwMDA4MAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX1ZD TzBfQkdQV1JETl9TRVRfTVNLCQkweDAwMDAwMDAxCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01B SU5QTExfVkNPMF9QV1JETl9TRVRfTVNLCQkweDAwMDAwMDAyCisjZGVmaW5lIEFSUklBMTBfQ0xL TUdSX01BSU5QTExfVkNPMF9FTl9TRVRfTVNLCQkJMHgwMDAwMDAwNAorI2RlZmluZSBBUlJJQTEw X0NMS01HUl9NQUlOUExMX1ZDTzBfT1VUUlNUQUxMX1NFVF9NU0sJCTB4MDAwMDAwMDgKKyNkZWZp bmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08wX1JFR0VYVFNFTF9TRVRfTVNLCQkweDAwMDAw MDEwCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfVkNPMF9QU1JDX01TSwkJCTB4MDAw MDAwMDMKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08xX05VTUVSX01TSwkJCTB4 MDAwMDFmZmYKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08xX0RFTk9NX01TSwkJ CTB4MDAwMDAwM2YKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9DTlRSQ0xLX01TSwkJ CTB4MDAwMDAzZmYKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9NUFVDTEtfQ05UX01T SwkJCTB4MDAwMDAzZmYKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9NUFVDTEtfU1JD X01BSU4JCQkwCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTVBVQ0xLX1NSQ19QRVJJ CQkJMQorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX01QVUNMS19TUkNfT1NDMQkJCTIK KyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9NUFVDTEtfU1JDX0lOVE9TQwkJMworI2Rl ZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX01QVUNMS19TUkNfRlBHQQkJCTQKKyNkZWZpbmUg QVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NESVZfTVNLCQkJMHgwMDAwMDAwMworI2RlZmluZSBB UlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0NMS19DTlRfTVNLCQkJMHgwMDAwMDNmZgorI2RlZmlu ZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0NMS19TUkNfTVNLCQkJMHgwMDAwMDAwNworI2Rl ZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0NMS19TUkNfTUFJTgkJCTAKKyNkZWZpbmUg QVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NDTEtfU1JDX1BFUkkJCQkxCisjZGVmaW5lIEFSUklB MTBfQ0xLTUdSX01BSU5QTExfTk9DQ0xLX1NSQ19PU0MxCQkJMgorI2RlZmluZSBBUlJJQTEwX0NM S01HUl9NQUlOUExMX05PQ0NMS19TUkNfSU5UT1NDCQkzCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdS X01BSU5QTExfTk9DQ0xLX1NSQ19GUEdBCQkJNAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9DTEtN R1JfU1RBVF9CVVNZX1NFVF9NU0sJCQkweDAwMDAwMDAxCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdS X0NMS01HUl9TVEFUX01BSU5QTExMT0NLRURfU0VUX01TSwkweDAwMDAwMTAwCisjZGVmaW5lIEFS UklBMTBfQ0xLTUdSX0NMS01HUl9TVEFUX1BFUlBMTExPQ0tFRF9TRVRfTVNLCQkweDAwMDAwMjAw CisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX0NMS01HUl9TVEFUX0JPT1RDTEtTUkNfU0VUX01TSwkJ MHgwMDAyMDAwMAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9DTEtNR1JfSU5UUl9QRVJQTExGQlNM SVBfU0VUX01TSwkJMHgwMDAwMDgwMAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9DTEtNR1JfSU5U Ul9NQUlOUExMRkJTTElQX1NFVF9NU0sJMHgwMDAwMDQwMAorI2RlZmluZSBBUlJJQTEwX0NMS01H Ul9DTEtNR1JfSU5UUl9QRVJQTExSRlNMSVBfU0VUX01TSwkJMHgwMDAwMDIwMAorI2RlZmluZSBB UlJJQTEwX0NMS01HUl9DTEtNR1JfSU5UUl9NQUlOUExMUkZTTElQX1NFVF9NU0sJMHgwMDAwMDEw MAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9DTEtNR1JfSU5UUl9QRVJQTExMT1NUX1NFVF9NU0sJ CTB4MDAwMDAwMDgKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfQ0xLTUdSX0lOVFJfTUFJTlBMTExP U1RfU0VUX01TSwkJMHgwMDAwMDAwNAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9DTEtNR1JfSU5U Ul9NQUlOUExMQUNISUVWRURfU0VUX01TSwkweDAwMDAwMDAxCisjZGVmaW5lIEFSUklBMTBfQ0xL TUdSX0NMS01HUl9JTlRSX1BFUlBMTEFDSElFVkVEX1NFVF9NU0sJMHgwMDAwMDAwMgorI2RlZmlu ZSBBUlJJQTEwX0NMS01HUl9DTEtNR1JfQ1RMX0JPT1RNT0RfU0VUX01TSwkJMHgwMDAwMDAwMQor I2RlZmluZSBBUlJJQTEwX0NMS01HUl9DTEtNR1JfQ1RMX0JPT1RDTEtfSU5UT1NDX1NFVF9NU0sJ MHgwMDAwMDMwMAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMF9CR1BXUkROX1NF VF9NU0sJCTB4MDAwMDAwMDEKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfUEVSUExMX1ZDTzBfUFdS RE5fU0VUX01TSwkJMHgwMDAwMDAwMgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNP MF9FTl9TRVRfTVNLCQkJMHgwMDAwMDAwNAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExf VkNPMF9PVVRSU1RBTExfU0VUX01TSwkJMHgwMDAwMDAwOAorI2RlZmluZSBBUlJJQTEwX0NMS01H Ul9QRVJQTExfVkNPMF9SRUdFWFRTRUxfU0VUX01TSwkJMHgwMDAwMDAxMAorI2RlZmluZSBBUlJJ QTEwX0NMS01HUl9QRVJQTExfRU5fUkVTRVQJCQkJMHgwMDAwMGY3ZgorI2RlZmluZSBBUlJJQTEw X0NMS01HUl9QRVJQTExfVkNPMF9QU1JDX01TSwkJCTB4MDAwMDAwMDMKKyNkZWZpbmUgQVJSSUEx MF9DTEtNR1JfUEVSUExMX1ZDTzFfTlVNRVJfTVNLCQkJMHgwMDAwMWZmZgorI2RlZmluZSBBUlJJ QTEwX0NMS01HUl9QRVJQTExfVkNPMV9ERU5PTV9NU0sJCQkweDAwMDAwMDNmCisjZGVmaW5lIEFS UklBMTBfQ0xLTUdSX1BFUlBMTF9DTlRSQ0xLX01TSwkJCTB4MDAwMDAzZmYKKworI2RlZmluZSBB UlJJQTEwX0NMS01HUl9QRVJQTExHUlBfRU5fU0RNTUNDTEtfTUFTSwkJMHgwMDAwMDAyMAorI2Rl ZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExHUlBfU1JDX01TSwkJCTB4MDAwMDAwMDcKKyNkZWZp bmUgQVJSSUExMF9DTEtNR1JfUEVSUExMR1JQX1NSQ19NQUlOCQkJMAorI2RlZmluZSBBUlJJQTEw X0NMS01HUl9QRVJQTExHUlBfU1JDX1BFUkkJCQkxCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX1BF UlBMTEdSUF9TUkNfT1NDMQkJCTIKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfUEVSUExMR1JQX1NS Q19JTlRPU0MJCQkzCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX1BFUlBMTEdSUF9TUkNfRlBHQQkJ CTQKKworLyogYml0IHNoaWZ0aW5nIG1hY3JvICovCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01B SU5QTExfVkNPMF9QU1JDX0xTQgkJCTgKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9W Q08xX0RFTk9NX0xTQgkJCTE2CisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTk9DQ0xL X1BFUklDTlRfTFNCCQkxNgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0NMS19T UkNfTFNCCQkJMTYKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NESVZfTDRNQUlO Q0xLX0xTQgkJMAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0RJVl9MNE1QQ0xL X0xTQgkJOAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0RJVl9MNFNQQ0xLX0xT QgkJMTYKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NESVZfQ1NBVENMS19MU0IJ CTI0CisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTk9DRElWX0NTVFJBQ0VDTEtfTFNC CQkyNgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0RJVl9DU1BEQkdDTEtfTFNC CQkyOAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX01QVUNMS19TUkNfTFNCCQkJMTYK KyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9NUFVDTEtfUEVSSUNOVF9MU0IJCTE2Cisj ZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTk9DQ0xLX1NSQ19MU0IJCQkxNgorI2RlZmlu ZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX0NOVFI3Q0xLX1NSQ19MU0IJCQkxNgorI2RlZmluZSBB UlJJQTEwX0NMS01HUl9NQUlOUExMX0NOVFI5Q0xLX1NSQ19MU0IJCQkxNgorI2RlZmluZSBBUlJJ QTEwX0NMS01HUl9QRVJQTExfVkNPMV9ERU5PTV9MU0IJCQkxNgorI2RlZmluZSBBUlJJQTEwX0NM S01HUl9QRVJQTExfVkNPMF9QU1JDX0xTQgkJCTgKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfUEVS UExMX0NOVFIyQ0xLX1NSQ19MU0IJCQkxNgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExf Q05UUjNDTEtfU1JDX0xTQgkJCTE2CisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9DTlRS NENMS19TUkNfTFNCCQkJMTYKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfUEVSUExMX0NOVFI1Q0xL X1NSQ19MU0IJCQkxNgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfQ05UUjZDTEtfU1JD X0xTQgkJCTE2CisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9DTlRSOENMS19TUkNfTFNC CQkJMTYKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfUEVSUExMX0VNQUNDVExfRU1BQzBTRUxfTFNC CQkyNgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfRU1BQ0NUTF9FTUFDMVNFTF9MU0IJ CTI3CisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9FTUFDQ1RMX0VNQUMyU0VMX0xTQgkJ MjgKKworLyogUExMIHJhbXBpbmcgd29yayBhcm91bmQgKi8KKyNkZWZpbmUgQVJSSUExMF9DTEtN R1JfUExMX1JBTVBfTVBVQ0xLX1RIUkVTSE9MRF9IWgkJOTAwMDAwMDAwCisjZGVmaW5lIEFSUklB MTBfQ0xLTUdSX1BMTF9SQU1QX05PQ0NMS19USFJFU0hPTERfSFoJCTMwMDAwMDAwMAorI2RlZmlu ZSBBUlJJQTEwX0NMS01HUl9QTExfUkFNUF9NUFVDTEtfSU5DUkVNRU5UX0haCQkxMDAwMDAwMDAK KyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfUExMX1JBTVBfTk9DQ0xLX0lOQ1JFTUVOVF9IWgkJIDMz MDAwMDAwCisKKyNlbmRpZiAvKiBfQVJSSUExMF9DTE9DS19NQU5BR0VSX0hfICovCmRpZmYgLS1n aXQgYS9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtcGlubXV4Lmgg Yi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtcGlubXV4LmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44MDRmYWUwMzA5YmUKLS0tIC9k ZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2FycmlhMTAt cGlubXV4LmgKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE3IFBl bmd1dHJvbml4LCBTdGVmZmVuIFRydW10cmFyIDxrZXJuZWxAcGVuZ3V0cm9uaXguZGU+CisgKgor ICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK KyAqLworCisjaWZuZGVmIF9BUlJJQTEwX1BJTk1VWF9IXworI2RlZmluZSBfQVJSSUExMF9QSU5N VVhfSF8KKworc3RydWN0IGFycmlhMTBfcGlubXV4X2NmZyB7CisJdWludDMyX3Qgc2hhcmVkX2lv X3ExXzE7CisJdWludDMyX3Qgc2hhcmVkX2lvX3ExXzI7CisJdWludDMyX3Qgc2hhcmVkX2lvX3Ex XzM7CisJdWludDMyX3Qgc2hhcmVkX2lvX3ExXzQ7CisJdWludDMyX3Qgc2hhcmVkX2lvX3ExXzU7 CisJdWludDMyX3Qgc2hhcmVkX2lvX3ExXzY7CisJdWludDMyX3Qgc2hhcmVkX2lvX3ExXzc7CisJ dWludDMyX3Qgc2hhcmVkX2lvX3ExXzg7CisJdWludDMyX3Qgc2hhcmVkX2lvX3ExXzk7CisJdWlu dDMyX3Qgc2hhcmVkX2lvX3ExXzEwOworCXVpbnQzMl90IHNoYXJlZF9pb19xMV8xMTsKKwl1aW50 MzJfdCBzaGFyZWRfaW9fcTFfMTI7CisKKwl1aW50MzJfdCBzaGFyZWRfaW9fcTJfMTsKKwl1aW50 MzJfdCBzaGFyZWRfaW9fcTJfMjsKKwl1aW50MzJfdCBzaGFyZWRfaW9fcTJfMzsKKwl1aW50MzJf dCBzaGFyZWRfaW9fcTJfNDsKKwl1aW50MzJfdCBzaGFyZWRfaW9fcTJfNTsKKwl1aW50MzJfdCBz aGFyZWRfaW9fcTJfNjsKKwl1aW50MzJfdCBzaGFyZWRfaW9fcTJfNzsKKwl1aW50MzJfdCBzaGFy ZWRfaW9fcTJfODsKKwl1aW50MzJfdCBzaGFyZWRfaW9fcTJfOTsKKwl1aW50MzJfdCBzaGFyZWRf aW9fcTJfMTA7CisJdWludDMyX3Qgc2hhcmVkX2lvX3EyXzExOworCXVpbnQzMl90IHNoYXJlZF9p b19xMl8xMjsKKworCXVpbnQzMl90IHNoYXJlZF9pb19xM18xOworCXVpbnQzMl90IHNoYXJlZF9p b19xM18yOworCXVpbnQzMl90IHNoYXJlZF9pb19xM18zOworCXVpbnQzMl90IHNoYXJlZF9pb19x M180OworCXVpbnQzMl90IHNoYXJlZF9pb19xM181OworCXVpbnQzMl90IHNoYXJlZF9pb19xM182 OworCXVpbnQzMl90IHNoYXJlZF9pb19xM183OworCXVpbnQzMl90IHNoYXJlZF9pb19xM184Owor CXVpbnQzMl90IHNoYXJlZF9pb19xM185OworCXVpbnQzMl90IHNoYXJlZF9pb19xM18xMDsKKwl1 aW50MzJfdCBzaGFyZWRfaW9fcTNfMTE7CisJdWludDMyX3Qgc2hhcmVkX2lvX3EzXzEyOworCisJ dWludDMyX3Qgc2hhcmVkX2lvX3E0XzE7CisJdWludDMyX3Qgc2hhcmVkX2lvX3E0XzI7CisJdWlu dDMyX3Qgc2hhcmVkX2lvX3E0XzM7CisJdWludDMyX3Qgc2hhcmVkX2lvX3E0XzQ7CisJdWludDMy X3Qgc2hhcmVkX2lvX3E0XzU7CisJdWludDMyX3Qgc2hhcmVkX2lvX3E0XzY7CisJdWludDMyX3Qg c2hhcmVkX2lvX3E0Xzc7CisJdWludDMyX3Qgc2hhcmVkX2lvX3E0Xzg7CisJdWludDMyX3Qgc2hh cmVkX2lvX3E0Xzk7CisJdWludDMyX3Qgc2hhcmVkX2lvX3E0XzEwOworCXVpbnQzMl90IHNoYXJl ZF9pb19xNF8xMTsKKwl1aW50MzJfdCBzaGFyZWRfaW9fcTRfMTI7CisKKwl1aW50MzJfdCBkZWRp Y2F0ZWRfaW9fNDsKKwl1aW50MzJfdCBkZWRpY2F0ZWRfaW9fNTsKKwl1aW50MzJfdCBkZWRpY2F0 ZWRfaW9fNjsKKwl1aW50MzJfdCBkZWRpY2F0ZWRfaW9fNzsKKwl1aW50MzJfdCBkZWRpY2F0ZWRf aW9fODsKKwl1aW50MzJfdCBkZWRpY2F0ZWRfaW9fOTsKKwl1aW50MzJfdCBkZWRpY2F0ZWRfaW9f MTA7CisJdWludDMyX3QgZGVkaWNhdGVkX2lvXzExOworCXVpbnQzMl90IGRlZGljYXRlZF9pb18x MjsKKwl1aW50MzJfdCBkZWRpY2F0ZWRfaW9fMTM7CisJdWludDMyX3QgZGVkaWNhdGVkX2lvXzE0 OworCXVpbnQzMl90IGRlZGljYXRlZF9pb18xNTsKKwl1aW50MzJfdCBkZWRpY2F0ZWRfaW9fMTY7 CisJdWludDMyX3QgZGVkaWNhdGVkX2lvXzE3OworCisJdWludDMyX3QgY2ZnX2RlZGljYXRlZF9p b19iYW5rOworCXVpbnQzMl90IGNmZ19kZWRpY2F0ZWRfaW9fMTsKKwl1aW50MzJfdCBjZmdfZGVk aWNhdGVkX2lvXzI7CisJdWludDMyX3QgY2ZnX2RlZGljYXRlZF9pb18zOworCXVpbnQzMl90IGNm Z19kZWRpY2F0ZWRfaW9fNDsKKwl1aW50MzJfdCBjZmdfZGVkaWNhdGVkX2lvXzU7CisJdWludDMy X3QgY2ZnX2RlZGljYXRlZF9pb182OworCXVpbnQzMl90IGNmZ19kZWRpY2F0ZWRfaW9fNzsKKwl1 aW50MzJfdCBjZmdfZGVkaWNhdGVkX2lvXzg7CisJdWludDMyX3QgY2ZnX2RlZGljYXRlZF9pb185 OworCXVpbnQzMl90IGNmZ19kZWRpY2F0ZWRfaW9fMTA7CisJdWludDMyX3QgY2ZnX2RlZGljYXRl ZF9pb18xMTsKKwl1aW50MzJfdCBjZmdfZGVkaWNhdGVkX2lvXzEyOworCXVpbnQzMl90IGNmZ19k ZWRpY2F0ZWRfaW9fMTM7CisJdWludDMyX3QgY2ZnX2RlZGljYXRlZF9pb18xNDsKKwl1aW50MzJf dCBjZmdfZGVkaWNhdGVkX2lvXzE1OworCXVpbnQzMl90IGNmZ19kZWRpY2F0ZWRfaW9fMTY7CisJ dWludDMyX3QgY2ZnX2RlZGljYXRlZF9pb18xNzsKKworCWJvb2wgcmdtaWkwX3VzZWZwZ2E7CisJ Ym9vbCByZ21paTFfdXNlZnBnYTsKKwlib29sIHJnbWlpMl91c2VmcGdhOworCWJvb2wgbmFuZF91 c2VmcGdhOworCWJvb2wgcXNwaV91c2VmcGdhOworCWJvb2wgc2RtbWNfdXNlZnBnYTsKKwlib29s IHVzYjBfdXNlZnBnYTsKKwlib29sIHVzYjFfdXNlZnBnYTsKKwlib29sIHNwaW0wX3VzZWZwZ2E7 CisJYm9vbCBzcGltMV91c2VmcGdhOworCWJvb2wgc3BpczBfdXNlZnBnYTsKKwlib29sIHNwaXMx X3VzZWZwZ2E7CisJYm9vbCB1YXJ0MF91c2VmcGdhOworCWJvb2wgdWFydDFfdXNlZnBnYTsKKwli b29sIGkyYzBfdXNlZnBnYTsKKwlib29sIGkyYzFfdXNlZnBnYTsKKwlib29sIGkyY2VtYWMwX3Vz ZWZwZ2E7CisJYm9vbCBpMmNlbWFjMV91c2VmcGdhOworCWJvb2wgaTJjZW1hYzJfdXNlZnBnYTsK Kwlib29sIHBsbF9jbG9ja19vdXRfdXNlZnBnYTsKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv YXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9hcnJpYTEwLXJlZ3MuaCBiL2FyY2gv YXJtL21hY2gtc29jZnBnYS9pbmNsdWRlL21hY2gvYXJyaWExMC1yZWdzLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NGEzZjY5YzI0YzkKLS0tIC9kZXYvbnVsbAor KysgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtcmVncy5oCkBA IC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFsdGVyYSBDb3Jwb3Jh dGlvbiA8d3d3LmFsdGVyYS5jb20+CisgKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6CUdQ TC0yLjArCisgKi8KKworI2lmbmRlZiBfQVJSSUExMF9IQVJEV0FSRV9IXworI2RlZmluZSBfQVJS SUExMF9IQVJEV0FSRV9IXworCisjZGVmaW5lIEFSUklBMTBfRU1BQzBfQUREUgkJCQkoMHhmZjgw MDAwMCkKKyNkZWZpbmUgQVJSSUExMF9FTUFDMV9BRERSCQkJCSgweGZmODAyMDAwKQorI2RlZmlu ZSBBUlJJQTEwX0VNQUMyX0FERFIJCQkJKDB4ZmY4MDQwMDApCisjZGVmaW5lIEFSUklBMTBfU0RN TUNfQUREUgkJCQkoMHhmZjgwODAwMCkKKyNkZWZpbmUgQVJSSUExMF9RU1BJUkVHU19BRERSCQkJ CSgweGZmODA5MDAwKQorI2RlZmluZSBBUlJJQTEwX0VDQ19PQ1JBTV9BRERSCQkJCSgweGZmOGMz MDAwKQorI2RlZmluZSBBUlJJQTEwX1FTUElEQVRBX0FERFIJCQkJKDB4ZmZhMDAwMDApCisjZGVm aW5lIEFSUklBMTBfVUFSVDBfQUREUgkJCQkoMHhmZmMwMjAwMCkKKyNkZWZpbmUgQVJSSUExMF9V QVJUMV9BRERSCQkJCSgweGZmYzAyMTAwKQorI2RlZmluZSBBUlJJQTEwX0kyQzBfQUREUgkJCQko MHhmZmMwMjIwMCkKKyNkZWZpbmUgQVJSSUExMF9JMkMxX0FERFIJCQkJKDB4ZmZjMDIzMDApCisj ZGVmaW5lIEFSUklBMTBfR1BJTzBfQUREUgkJCQkoMHhmZmMwMjkwMCkKKyNkZWZpbmUgQVJSSUEx MF9HUElPMV9BRERSCQkJCSgweGZmYzAyYTAwKQorI2RlZmluZSBBUlJJQTEwX0dQSU8yX0FERFIJ CQkJKDB4ZmZjMDJiMDApCisjZGVmaW5lIEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIJCQkoMHhm ZmNmYTAwMCkKKyNkZWZpbmUgQVJSSUExMF9TRFJfQUREUgkJCQkoMHhmZmNmYjAwMCkKKyNkZWZp bmUgQVJSSUExMF9GUEdBTUdSREFUQV9BRERSCQkJKDB4ZmZjZmU0MDApCisjZGVmaW5lIEFSUklB MTBfT1NDMVRJTUVSMF9BRERSCQkJCSgweGZmZDAwMDAwKQorI2RlZmluZSBBUlJJQTEwX0w0V0Qw X0FERFIJCQkJKDB4ZmZkMDAyMDApCisjZGVmaW5lIEFSUklBMTBfRlBHQU1HUlJFR1NfQUREUgkJ CSgweGZmZDAzMDAwKQorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9BRERSCQkJCSgweGZmZDA0MDAw KQorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9BRERSCQkJCSgweGZmZDA1MDAwKQorI2RlZmluZSBB UlJJQTEwX1NZU01HUl9BRERSCQkJCSgweGZmZDA2MDAwKQorI2RlZmluZSBBUlJJQTEwX1BJTk1V WF9TSEFSRURfM1ZfSU9fQUREUgkJKDB4ZmZkMDcwMDApCisjZGVmaW5lIEFSUklBMTBfUElOTVVY X0RFRElDQVRFRF9JT19BRERSCQkoMHhmZmQwNzIwMCkKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhf REVESUNBVEVEX0lPX0NGR19BRERSCQkoMHhmZmQwNzMwMCkKKyNkZWZpbmUgQVJSSUExMF9QSU5N VVhfRlBHQV9JTlRFUkZBQ0VfQUREUgkJKDB4ZmZkMDc0MDApCisjZGVmaW5lIEFSUklBMTBfTk9D X0w0X1BSSVZfTDRfUFJJVl9GSUxURVJfQUREUgkJKDB4ZmZkMTEwMDApCisjZGVmaW5lIEFSUklB MTBfU0RSX1NDSEVEVUxFUl9BRERSCQkJKDB4ZmZkMTI0MDApCisjZGVmaW5lIEFSUklBMTBfTk9D X0w0X1BFUl9MNF9QRVJfU0NSX0FERFIJCSgweGZmZDEzMDAwKQorI2RlZmluZSBBUlJJQTEwX05P Q19GV19PQ1JBTV9PQ1JBTV9TQ1JfQUREUgkJKDB4ZmZkMTMyMDApCisjZGVmaW5lIEFSUklBMTBf U0RSX0ZXX01QVV9GUEdBX0FERFIJCQkoMHhmZmQxMzMwMCkKKyNkZWZpbmUgQVJSSUExMF9OT0Nf RldfRERSX0wzX0REUl9TQ1JfQUREUgkJKDB4ZmZkMTM0MDApCisjZGVmaW5lIEFSUklBMTBfTk9D X0ZXX1NPQzJGUEdBX1NPQzJGUEdBX1NDUl9BRERSCSgweGZmZDEzNTAwKQorI2RlZmluZSBBUlJJ QTEwX0RNQU5PTlNFQ1VSRV9BRERSCQkJKDB4ZmZkYTAwMDApCisjZGVmaW5lIEFSUklBMTBfRE1B U0VDVVJFX0FERFIJCQkJKDB4ZmZkYTEwMDApCisjZGVmaW5lIEFSUklBMTBfTVBVU0NVX0FERFIJ CQkJKDB4ZmZmZmMwMDApCisjZGVmaW5lIEFSUklBMTBfTVBVTDJfQUREUgkJCQkoMHhmZmZmZjAw MCkKKworLyogTDIgY2FjaGUgY29udHJvbGxlciAqLworI2RlZmluZSBBUlJJQTEwX01QVUwyX0FE UkZMVFJfU1RBUlQJCQkoQVJSSUExMF9NUFVMMl9BRERSICsgMHhDMDApCisKKy8qIE5PQyBMNCBQ cml2ICovCisjZGVmaW5lIEFSUklBMTBfTk9DX0w0X1BSSVZfTDRfUFJJVl9MNF9QUklWCQkoQVJS SUExMF9OT0NfTDRfUFJJVl9MNF9QUklWX0ZJTFRFUl9BRERSICsgMHgwMCkKKyNkZWZpbmUgQVJS SUExMF9OT0NfTDRfUFJJVl9MNF9QUklWX0w0X1BSSVZfU0VUCQkoQVJSSUExMF9OT0NfTDRfUFJJ Vl9MNF9QUklWX0ZJTFRFUl9BRERSICsgMHgwNCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfTDRfUFJJ Vl9MNF9QUklWX0w0X1BSSVZfQ0xSCQkoQVJSSUExMF9OT0NfTDRfUFJJVl9MNF9QUklWX0ZJTFRF Ul9BRERSICsgMHgwOCkKKworLyogTk9DIEw0IFBlcm1pc3Npb25zICovCisjZGVmaW5lIEFSUklB MTBfTk9DX0ZXX0w0X1BFUl9TQ1JfTkFORF9SRUcJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVS X1NDUl9BRERSICsgMHgwMCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9OQU5E X0RBVEEJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVSX1NDUl9BRERSICsgMHgwNCkKKyNkZWZp bmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9RU1BJX0RBVEEJCShBUlJJQTEwX05PQ19MNF9Q RVJfTDRfUEVSX1NDUl9BRERSICsgMHgwOCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfTDRfUEVS X1NDUl9VU0IwX1JFRwkJKEFSUklBMTBfTk9DX0w0X1BFUl9MNF9QRVJfU0NSX0FERFIgKyAweDBj KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX1VTQjFfUkVHCQkoQVJSSUExMF9O T0NfTDRfUEVSX0w0X1BFUl9TQ1JfQUREUiArIDB4MTApCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZX X0w0X1BFUl9TQ1JfRE1BX05PTlNFQ1VSRQkJKEFSUklBMTBfTk9DX0w0X1BFUl9MNF9QRVJfU0NS X0FERFIgKyAweDE0KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX0RNQV9TRUNV UkUJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVSX1NDUl9BRERSICsgMHgxOCkKKyNkZWZpbmUg QVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9TUElNMAkJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRf UEVSX1NDUl9BRERSICsgMHgxYykKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9T UElNMQkJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVSX1NDUl9BRERSICsgMHgyMCkKKyNkZWZp bmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9TUElTMAkJCShBUlJJQTEwX05PQ19MNF9QRVJf TDRfUEVSX1NDUl9BRERSICsgMHgyNCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1ND Ul9TUElTMQkJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVSX1NDUl9BRERSICsgMHgyOCkKKyNk ZWZpbmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9FTUFDMAkJCShBUlJJQTEwX05PQ19MNF9Q RVJfTDRfUEVSX1NDUl9BRERSICsgMHgyYykKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfTDRfUEVS X1NDUl9FTUFDMQkJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVSX1NDUl9BRERSICsgMHgzMCkK KyNkZWZpbmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9FTUFDMgkJCShBUlJJQTEwX05PQ19M NF9QRVJfTDRfUEVSX1NDUl9BRERSICsgMHgzNCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfTDRf UEVSX1NDUl9FTUFDMwkJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVSX1NDUl9BRERSICsgMHgz OCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9RU1BJCQkJKEFSUklBMTBfTk9D X0w0X1BFUl9MNF9QRVJfU0NSX0FERFIgKyAweDNjKQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19M NF9QRVJfU0NSX1NETU1DCQkJKEFSUklBMTBfTk9DX0w0X1BFUl9MNF9QRVJfU0NSX0FERFIgKyAw eDQwKQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX0dQSU8wCQkJKEFSUklBMTBf Tk9DX0w0X1BFUl9MNF9QRVJfU0NSX0FERFIgKyAweDQ0KQorI2RlZmluZSBBUlJJQTEwX05PQ19G V19MNF9QRVJfU0NSX0dQSU8xCQkJKEFSUklBMTBfTk9DX0w0X1BFUl9MNF9QRVJfU0NSX0FERFIg KyAweDQ4KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX0dQSU8yCQkJKEFSUklB MTBfTk9DX0w0X1BFUl9MNF9QRVJfU0NSX0FERFIgKyAweDRjKQorI2RlZmluZSBBUlJJQTEwX05P Q19GV19MNF9QRVJfU0NSX0kyQzAJCQkoQVJSSUExMF9OT0NfTDRfUEVSX0w0X1BFUl9TQ1JfQURE UiArIDB4NTApCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0w0X1BFUl9TQ1JfSTJDMQkJCShBUlJJ QTEwX05PQ19MNF9QRVJfTDRfUEVSX1NDUl9BRERSICsgMHg1NCkKKyNkZWZpbmUgQVJSSUExMF9O T0NfRldfTDRfUEVSX1NDUl9JMkMyCQkJKEFSUklBMTBfTk9DX0w0X1BFUl9MNF9QRVJfU0NSX0FE RFIgKyAweDU4KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX0kyQzMJCQkoQVJS SUExMF9OT0NfTDRfUEVSX0w0X1BFUl9TQ1JfQUREUiArIDB4NWMpCisjZGVmaW5lIEFSUklBMTBf Tk9DX0ZXX0w0X1BFUl9TQ1JfSTJDNAkJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVSX1NDUl9B RERSICsgMHg2MCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9TUFRJTUVSMAkJ KEFSUklBMTBfTk9DX0w0X1BFUl9MNF9QRVJfU0NSX0FERFIgKyAweDY0KQorI2RlZmluZSBBUlJJ QTEwX05PQ19GV19MNF9QRVJfU0NSX1NQVElNRVIxCQkoQVJSSUExMF9OT0NfTDRfUEVSX0w0X1BF Ul9TQ1JfQUREUiArIDB4NjgpCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0w0X1BFUl9TQ1JfVUFS VDAJCQkoQVJSSUExMF9OT0NfTDRfUEVSX0w0X1BFUl9TQ1JfQUREUiArIDB4NmMpCisjZGVmaW5l IEFSUklBMTBfTk9DX0ZXX0w0X1BFUl9TQ1JfVUFSVDEJCQkoQVJSSUExMF9OT0NfTDRfUEVSX0w0 X1BFUl9TQ1JfQUREUiArIDB4NzApCisKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfT0NSQU1fT0NS QU1fU0NSX0VOCQkoQVJSSUExMF9OT0NfRldfT0NSQU1fT0NSQU1fU0NSX0FERFIgKyAweDAwKQor I2RlZmluZSBBUlJJQTEwX05PQ19GV19PQ1JBTV9PQ1JBTV9TQ1JfRU5fU0VUCQkoQVJSSUExMF9O T0NfRldfT0NSQU1fT0NSQU1fU0NSX0FERFIgKyAweDA0KQorI2RlZmluZSBBUlJJQTEwX05PQ19G V19PQ1JBTV9PQ1JBTV9TQ1JfRU5fQ0xSCQkoQVJSSUExMF9OT0NfRldfT0NSQU1fT0NSQU1fU0NS X0FERFIgKyAweDA4KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19PQ1JBTV9PQ1JBTV9TQ1JfUkVH SU9OMAkJKEFSUklBMTBfTk9DX0ZXX09DUkFNX09DUkFNX1NDUl9BRERSICsgMHgwYykKKyNkZWZp bmUgQVJSSUExMF9OT0NfRldfT0NSQU1fT0NSQU1fU0NSX1JFR0lPTjEJCShBUlJJQTEwX05PQ19G V19PQ1JBTV9PQ1JBTV9TQ1JfQUREUiArIDB4MTApCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX09D UkFNX09DUkFNX1NDUl9SRUdJT04yCQkoQVJSSUExMF9OT0NfRldfT0NSQU1fT0NSQU1fU0NSX0FE RFIgKyAweDE0KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19PQ1JBTV9PQ1JBTV9TQ1JfUkVHSU9O MwkJKEFSUklBMTBfTk9DX0ZXX09DUkFNX09DUkFNX1NDUl9BRERSICsgMHgxOCkKKyNkZWZpbmUg QVJSSUExMF9OT0NfRldfT0NSQU1fT0NSQU1fU0NSX1JFR0lPTjQJCShBUlJJQTEwX05PQ19GV19P Q1JBTV9PQ1JBTV9TQ1JfQUREUiArIDB4MWMpCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX09DUkFN X09DUkFNX1NDUl9SRUdJT041CQkoQVJSSUExMF9OT0NfRldfT0NSQU1fT0NSQU1fU0NSX0FERFIg KyAweDIwKQorCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX0VOCQkoQVJS SUExMF9OT0NfRldfRERSX0wzX0REUl9TQ1JfQUREUiArIDB4MDApCisjZGVmaW5lIEFSUklBMTBf Tk9DX0ZXX0REUl9MM19ERFJfU0NSX0VOX1NFVAkJKEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJf U0NSX0FERFIgKyAweDA0KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTDNfRERSX1NDUl9F Tl9DTFIJCShBUlJJQTEwX05PQ19GV19ERFJfTDNfRERSX1NDUl9BRERSICsgMHgwOCkKKyNkZWZp bmUgQVJSSUExMF9OT0NfRldfRERSX0wzX0REUl9TQ1JfUkVHSU9OMAkJKEFSUklBMTBfTk9DX0ZX X0REUl9MM19ERFJfU0NSX0FERFIgKyAweDBjKQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJf TDNfRERSX1NDUl9SRUdJT04xCQkoQVJSSUExMF9OT0NfRldfRERSX0wzX0REUl9TQ1JfQUREUiAr IDB4MTApCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX1JFR0lPTjIJCShB UlJJQTEwX05PQ19GV19ERFJfTDNfRERSX1NDUl9BRERSICsgMHgxNCkKKyNkZWZpbmUgQVJSSUEx MF9OT0NfRldfRERSX0wzX0REUl9TQ1JfUkVHSU9OMwkJKEFSUklBMTBfTk9DX0ZXX0REUl9MM19E RFJfU0NSX0FERFIgKyAweDE4KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTDNfRERSX1ND Ul9SRUdJT040CQkoQVJSSUExMF9OT0NfRldfRERSX0wzX0REUl9TQ1JfQUREUiArIDB4MWMpCisj ZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX1JFR0lPTjUJCShBUlJJQTEwX05P Q19GV19ERFJfTDNfRERSX1NDUl9BRERSICsgMHgyMCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldf RERSX0wzX0REUl9TQ1JfUkVHSU9ONgkJKEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX0FE RFIgKyAweDI0KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTDNfRERSX1NDUl9SRUdJT043 CQkoQVJSSUExMF9OT0NfRldfRERSX0wzX0REUl9TQ1JfQUREUiArIDB4MjgpCisjZGVmaW5lIEFS UklBMTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX0dMT0JBTAkJKEFSUklBMTBfTk9DX0ZXX0REUl9M M19ERFJfU0NSX0FERFIgKyAweDJjKQorCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX1NPQzJGUEdB X1NPQzJGUEdBX1NDUl9MV1NPQzJGUEdBCShBUlJJQTEwX05PQ19GV19TT0MyRlBHQV9TT0MyRlBH QV9TQ1JfQUREUiArIDB4MDApCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX1NPQzJGUEdBX1NPQzJG UEdBX1NDUl9TT0MyRlBHQQkoQVJSSUExMF9OT0NfRldfU09DMkZQR0FfU09DMkZQR0FfU0NSX0FE RFIgKyAweDA0KQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtc29jZnBnYS9p bmNsdWRlL21hY2gvYXJyaWExMC1yZXNldC1tYW5hZ2VyLmggYi9hcmNoL2FybS9tYWNoLXNvY2Zw Z2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtcmVzZXQtbWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTgxNGQxOGQ1NTQ3Ci0tLSAvZGV2L251bGwKKysrIGIv YXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9hcnJpYTEwLXJlc2V0LW1hbmFnZXIu aApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFsdGVy YSBDb3Jwb3JhdGlvbiA8d3d3LmFsdGVyYS5jb20+CisgKgorICogU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6CUdQTC0yLjAKKyAqLworCisjaWZuZGVmCV9BUlJJQTEwX1JFU0VUX01BTkFHRVJfSF8K KyNkZWZpbmUJX0FSUklBMTBfUkVTRVRfTUFOQUdFUl9IXworCisjZGVmaW5lIEFSUklBMTBfUlNU TUdSX1NUQVRVUwkJMHgwCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1JBTVNUQVQJCTB4NAorI2Rl ZmluZSBBUlJJQTEwX1JTVE1HUl9NSVNDU1RBVAkJMHg4CisjZGVmaW5lIEFSUklBMTBfUlNUTUdS X0NUUkwJCTB4YworI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9IRFNLRU4JCTB4MTAKKyNkZWZpbmUg QVJSSUExMF9SU1RNR1JfSERTS1JFUQkJMHgxNAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9IRFNL QUNLCQkweDE4CisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX0NPVU5UUwkJMHgxYworI2RlZmluZSBB UlJJQTEwX1JTVE1HUl9NUFVNT0RSU1QJMHgyMAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIw TU9EUlNUCTB4MjQKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVAkweDI4CisjZGVm aW5lIEFSUklBMTBfUlNUTUdSX0JSR01PRFJTVAkweDJjCisjZGVmaW5lIEFSUklBMTBfUlNUTUdS X1NZU01PRFJTVAkweDMwCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX0NPTERNT0RSU1QJMHgzNAor I2RlZmluZSBBUlJJQTEwX1JTVE1HUl9OUlNUTU9EUlNUCTB4MzgKKyNkZWZpbmUgQVJSSUExMF9S U1RNR1JfREJHTU9EUlNUCTB4M2MKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfTVBVV0FSTU1BU0sJ MHg0MAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIwV0FSTU1BU0sJMHg0NAorI2RlZmluZSBB UlJJQTEwX1JTVE1HUl9QRVIxV0FSTU1BU0sJMHg0OAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9C UkdXQVJNTUFTSwkweDRjCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1NZU1dBUk1NQVNLCTB4NTAK KyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfTlJTVFdBUk1NQVNLCTB4NTQKKyNkZWZpbmUgQVJSSUEx MF9SU1RNR1JfTDNXQVJNTUFTSwkweDU4CisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1RTVFNUQQkJ MHg1YworI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9UU1RTQ1JBVENICTB4NjAKKyNkZWZpbmUgQVJS SUExMF9SU1RNR1JfSERTS1RJTUVPVVQJMHg2NAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9ITUNJ TlRSCQkweDY4CisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX0hNQ0lOVFJFTgkweDZjCisjZGVmaW5l IEFSUklBMTBfUlNUTUdSX0hNQ0lOVFJFTlMJMHg3MAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9I TUNJTlRSRU5SCTB4NzQKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfSE1DR1BPVVQJCTB4NzgKKyNk ZWZpbmUgQVJSSUExMF9SU1RNR1JfSE1DR1BJTgkJMHg3YworCisjZGVmaW5lIEFSUklBMTBfUlNU TUdSX0NUTF9TV1dBUk1SU1RSRVEJCTB4MDAwMDAwMDIKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1Jf UEVSME1PRFJTVF9FTUFDMAkJMHgwMDAwMDAwMQorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIw TU9EUlNUX0VNQUMxCQkweDAwMDAwMDAyCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RS U1RfRU1BQzIJCTB4MDAwMDAwMDQKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9V U0IwCQkweDAwMDAwMDA4CisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfVVNCMQkJ MHgwMDAwMDAxMAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX05BTkQJCTB4MDAw MDAwMjAKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9RU1BJCQkweDAwMDAwMDQw CisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfU0RNTUMJCTB4MDAwMDAwODAKKyNk ZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDRUNDMAkweDAwMDAwMTAwCisjZGVm aW5lIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQ0VDQzEJMHgwMDAwMDIwMAorI2RlZmlu ZSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUNFQ0MyCTB4MDAwMDA0MDAKKyNkZWZpbmUg QVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9VU0JFQ0MwCTB4MDAwMDA4MDAKKyNkZWZpbmUgQVJS SUExMF9SU1RNR1JfUEVSME1PRFJTVF9VU0JFQ0MxCTB4MDAwMDEwMDAKKyNkZWZpbmUgQVJSSUEx MF9SU1RNR1JfUEVSME1PRFJTVF9OQU5ERUNDCTB4MDAwMDIwMDAKKyNkZWZpbmUgQVJSSUExMF9S U1RNR1JfUEVSME1PRFJTVF9RU1BJRUNDCTB4MDAwMDQwMDAKKyNkZWZpbmUgQVJSSUExMF9SU1RN R1JfUEVSME1PRFJTVF9TRE1NQ0VDQwkweDAwMDA4MDAwCisjZGVmaW5lIEFSUklBMTBfUlNUTUdS X1BFUjBNT0RSU1RfRE1BCQkweDAwMDEwMDAwCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjBN T0RSU1RfU1BJTTAJCTB4MDAwMjAwMDAKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJT VF9TUElNMQkJMHgwMDA0MDAwMAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1NQ SVMwCQkweDAwMDgwMDAwCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfU1BJUzEJ CTB4MDAxMDAwMDAKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9ETUFFQ0MJMHgw MDIwMDAwMAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUNQVFAJMHgwMDQw MDAwMAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0RNQUlGMAkweDAxMDAwMDAw CisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRE1BSUYxCTB4MDIwMDAwMDAKKyNk ZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9ETUFJRjIJMHgwNDAwMDAwMAorI2RlZmlu ZSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0RNQUlGMwkweDA4MDAwMDAwCisjZGVmaW5lIEFS UklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRE1BSUY0CTB4MTAwMDAwMDAKKyNkZWZpbmUgQVJSSUEx MF9SU1RNR1JfUEVSME1PRFJTVF9ETUFJRjUJMHgyMDAwMDAwMAorI2RlZmluZSBBUlJJQTEwX1JT VE1HUl9QRVIwTU9EUlNUX0RNQUlGNgkweDQwMDAwMDAwCisjZGVmaW5lIEFSUklBMTBfUlNUTUdS X1BFUjBNT0RSU1RfRE1BSUY3CTB4ODAwMDAwMDAKKworI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9Q RVIxTU9EUlNUX0w0V0QwCQkweDAwMDAwMDAxCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjFN T0RSU1RfTDRXRDEJCTB4MDAwMDAwMDIKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJT VF9MNFNZU1RNUjAJMHgwMDAwMDAwNAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNU X0w0U1lTVE1SMQkweDAwMDAwMDA4CisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1Rf U1BUTVIwCTB4MDAwMDAwMTAKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9TUFRN UjEJMHgwMDAwMDAyMAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX0kyQzAJCTB4 MDAwMDAxMDAKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9JMkMxCQkweDAwMDAw MjAwCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfSTJDMgkJMHgwMDAwMDQwMAor I2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX0kyQzMJCTB4MDAwMDA4MDAKKyNkZWZp bmUgQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9JMkM0CQkweDAwMDAxMDAwCisjZGVmaW5lIEFS UklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfVUFSVDAJCTB4MDAwMTAwMDAKKyNkZWZpbmUgQVJSSUEx MF9SU1RNR1JfUEVSMU1PRFJTVF9VQVJUMQkJMHgwMDAyMDAwMAorI2RlZmluZSBBUlJJQTEwX1JT VE1HUl9QRVIxTU9EUlNUX0dQSU8wCQkweDAxMDAwMDAwCisjZGVmaW5lIEFSUklBMTBfUlNUTUdS X1BFUjFNT0RSU1RfR1BJTzEJCTB4MDIwMDAwMDAKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVS MU1PRFJTVF9HUElPMgkJMHgwNDAwMDAwMAorCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX0JSR01P RFJTVF9IMkYJCTB4MDAwMDAwMDEKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfQlJHTU9EUlNUX0xX SDJGCQkweDAwMDAwMDAyCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX0JSR01PRFJTVF9GMkgJCTB4 MDAwMDAwMDQKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfQlJHTU9EUlNUX0YyU1NEUkFNMAkweDAw MDAwMDA4CisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX0JSR01PRFJTVF9GMlNTRFJBTTEJMHgwMDAw MDAxMAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9CUkdNT0RSU1RfRjJTU0RSQU0yCTB4MDAwMDAw MjAKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfQlJHTU9EUlNUX0REUlNDSAkJMHgwMDAwMDA0MAor CisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX0hEU0tFTl9TRFJTRUxGUkVGRU4JMHgwMDAwMDAwMQor I2RlZmluZSBBUlJJQTEwX1JTVE1HUl9IRFNLRU5fRlBHQU1HUkhTRU4JMHgwMDAwMDAwMgorI2Rl ZmluZSBBUlJJQTEwX1JTVE1HUl9IRFNLRU5fRlBHQUhTRU4JCTB4MDAwMDAwMDQKKyNkZWZpbmUg QVJSSUExMF9SU1RNR1JfSERTS0VOX0VUUlNUQUxMRU4JMHgwMDAwMDAwOAorCisjZGVmaW5lIEVD Q19NQVNLIChBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUNFQ0MwIHwJXAorCQkgIEFSUklB MTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQ0VDQzEgfAlcCisJCSAgQVJSSUExMF9SU1RNR1JfUEVS ME1PRFJTVF9FTUFDRUNDMiB8CVwKKwkJICBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX05BTkRF Q0MgIHwJXAorCQkgIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfUVNQSUVDQyAgfAlcCisJCSAg QVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9TRE1NQ0VDQykKKwordm9pZCBhcnJpYTEwX3Jlc2V0 X3BlcmlwaGVyYWxzKHZvaWQpOwordm9pZCBhcnJpYTEwX3Jlc2V0X2RlYXNzZXJ0X2RlZGljYXRl ZF9wZXJpcGhlcmFscyh2b2lkKTsKK3ZvaWQgYXJyaWExMF9yZXNldF9kZWFzc2VydF9zaGFyZWRf cGVyaXBoZXJhbHModm9pZCk7Cit2b2lkIGFycmlhMTBfcmVzZXRfZGVhc3NlcnRfZnBnYV9wZXJp cGhlcmFscyh2b2lkKTsKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtc29j ZnBnYS9pbmNsdWRlL21hY2gvYXJyaWExMC1zZHJhbS5oIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdh L2luY2x1ZGUvbWFjaC9hcnJpYTEwLXNkcmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi4wN2U0ZGQwMTMwODkKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9t YWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtc2RyYW0uaApAQCAtMCwwICsxLDM1MyBA QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBbHRlcmEgQ29ycG9yYXRpb24gPHd3dy5hbHRl cmEuY29tPgorICoKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOglHUEwtMi4wCisgKi8KKwor I2luY2x1ZGUgPG1hY2gvYXJyaWExMC1zeXN0ZW0tbWFuYWdlci5oPgorCisjaWZuZGVmCV9BUlJJ QTEwX1NEUkFNX0hfCisjZGVmaW5lCV9BUlJJQTEwX1NEUkFNX0hfCisKKyNkZWZpbmUgQVJSSUEx MF9FQ0NfSE1DX09DUF9JUF9SRVZfSUQJCQkoQVJSSUExMF9TRFJfQUREUiArIDB4MDApCisjZGVm aW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfRERSSU9DVFJMCQkJKEFSUklBMTBfU0RSX0FERFIgKyAw eDA4KQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX0REUkNBTFNUQVQJCQkoQVJSSUExMF9T RFJfQUREUiArIDB4MGMpCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX09CRUFUMQkJ CShBUlJJQTEwX1NEUl9BRERSICsgMHgxMCkKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9N UFJfMUJFQVQxCQkJKEFSUklBMTBfU0RSX0FERFIgKyAweDE0KQorI2RlZmluZSBBUlJJQTEwX0VD Q19ITUNfT0NQX01QUl8yQkVBVDEJCQkoQVJSSUExMF9TRFJfQUREUiArIDB4MTgpCisjZGVmaW5l IEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSXzNCRUFUMQkJCShBUlJJQTEwX1NEUl9BRERSICsgMHgx YykKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfNEJFQVQxCQkJKEFSUklBMTBfU0RS X0FERFIgKyAweDIwKQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX01QUl81QkVBVDEJCQko QVJSSUExMF9TRFJfQUREUiArIDB4MjQpCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBS XzZCRUFUMQkJCShBUlJJQTEwX1NEUl9BRERSICsgMHgyOCkKKyNkZWZpbmUgQVJSSUExMF9FQ0Nf SE1DX09DUF9NUFJfN0JFQVQxCQkJKEFSUklBMTBfU0RSX0FERFIgKyAweDJjKQorI2RlZmluZSBB UlJJQTEwX0VDQ19ITUNfT0NQX01QUl84QkVBVDEJCQkoQVJSSUExMF9TRFJfQUREUiArIDB4MzAp CisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX09CRUFUMgkJCShBUlJJQTEwX1NEUl9B RERSICsgMHgzNCkKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfMUJFQVQyCQkJKEFS UklBMTBfU0RSX0FERFIgKyAweDM4KQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX01QUl8y QkVBVDIJCQkoQVJSSUExMF9TRFJfQUREUiArIDB4M2MpCisjZGVmaW5lIEFSUklBMTBfRUNDX0hN Q19PQ1BfTVBSXzNCRUFUMgkJCShBUlJJQTEwX1NEUl9BRERSICsgMHg0MCkKKyNkZWZpbmUgQVJS SUExMF9FQ0NfSE1DX09DUF9NUFJfNEJFQVQyCQkJKEFSUklBMTBfU0RSX0FERFIgKyAweDQ0KQor I2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX01QUl81QkVBVDIJCQkoQVJSSUExMF9TRFJfQURE UiArIDB4NDgpCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSXzZCRUFUMgkJCShBUlJJ QTEwX1NEUl9BRERSICsgMHg0YykKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfN0JF QVQyCQkJKEFSUklBMTBfU0RSX0FERFIgKyAweDUwKQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNf T0NQX01QUl84QkVBVDIJCQkoQVJSSUExMF9TRFJfQUREUiArIDB4NTQpCisjZGVmaW5lIEFSUklB MTBfRUNDX0hNQ19PQ1BfTVBSX0FVVE9fUFJFQ0hBUkdFCQkoQVJSSUExMF9TRFJfQUREUiArIDB4 NjApCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX0VDQ0NUUkwxCQkoQVJSSUExMF9T RFJfQUREUiArIDB4MTAwKQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX01QUl9FQ0NDVFJM MgkJKEFSUklBMTBfU0RSX0FERFIgKyAweDEwNCkKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09D UF9NUFJfRVJSSU5URU4JCShBUlJJQTEwX1NEUl9BRERSICsgMHgxMTApCisjZGVmaW5lIEFSUklB MTBfRUNDX0hNQ19PQ1BfTVBSX0VSUklOVEVOUwkJKEFSUklBMTBfU0RSX0FERFIgKyAweDExNCkK KyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfRVJSSU5URU5SCQkoQVJSSUExMF9TRFJf QUREUiArIDB4MTE4KQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX01QUl9JTlRNT0RFCQkJ KEFSUklBMTBfU0RSX0FERFIgKyAweDExYykKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9N UFJfSU5UU1RBVAkJCShBUlJJQTEwX1NEUl9BRERSICsgMHgxMjApCisjZGVmaW5lIEFSUklBMTBf RUNDX0hNQ19PQ1BfTVBSX0RJQUdJTlRURVNUCQkoQVJSSUExMF9TRFJfQUREUiArIDB4MTI0KQor I2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX01QUl9NT0RTVEFUCQkJKEFSUklBMTBfU0RSX0FE RFIgKyAweDEyOCkKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfREVSUkFERFJBCQko QVJSSUExMF9TRFJfQUREUiArIDB4MTJjKQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX01Q Ul9TRVJSQUREUkEJCShBUlJJQTEwX1NEUl9BRERSICsgMHgxMzApCisjZGVmaW5lIEFSUklBMTBf RUNDX0hNQ19PQ1BfTVBSX0FVVE9XQl9DT1JSQUREUgkJKEFSUklBMTBfU0RSX0FERFIgKyAweDEz OCkKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfU0VSUkNOVFJFRwkJKEFSUklBMTBf U0RSX0FERFIgKyAweDEzYykKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfQVVUT1dC X0RST1BfQ05UUkVHCShBUlJJQTEwX1NEUl9BRERSICsgMHgxNDApCisjZGVmaW5lIEFSUklBMTBf RUNDX0hNQ19PQ1BfTVBSX0VDQ19SRUcyV1JFQ0NEQVRBQlVTCShBUlJJQTEwX1NEUl9BRERSICsg MHgxNDQpCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX0VDQ19SREVDQ0RBVEEyUkVH QlVTCShBUlJJQTEwX1NEUl9BRERSICsgMHgxNDgpCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19P Q1BfTVBSX0VDQ19SRUcyUkRFQ0NEQVRBQlVTCShBUlJJQTEwX1NEUl9BRERSICsgMHgxNGMpCisj ZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX0VDQ19ESUFHT04JCShBUlJJQTEwX1NEUl9B RERSICsgMHgxNTApCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX0VDQ19ERUNTVEFU CQkoQVJSSUExMF9TRFJfQUREUiArIDB4MTU0KQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQ X01QUl9FQ0NfRVJSR0VOQUREUl8wCShBUlJJQTEwX1NEUl9BRERSICsgMHgxNjApCisjZGVmaW5l IEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX0VDQ19FUlJHRU5BRERSXzEJKEFSUklBMTBfU0RSX0FE RFIgKyAweDE2NCkKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfRUNDX0VSUkdFTkFE RFJfMgkoQVJSSUExMF9TRFJfQUREUiArIDB4MTY4KQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNf T0NQX01QUl9FQ0NfRVJSR0VOQUREUl8zCShBUlJJQTEwX1NEUl9BRERSICsgMHgxNmMpCisjZGVm aW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX0VDQ19SRUcyUkREQVRBQlVTX0JFQVQwCShBUlJJ QTEwX1NEUl9BRERSICsgMHgxNzApCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX0VD Q19SRUcyUkREQVRBQlVTX0JFQVQxCShBUlJJQTEwX1NEUl9BRERSICsgMHgxNzQpCisjZGVmaW5l IEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX0VDQ19SRUcyUkREQVRBQlVTX0JFQVQyCShBUlJJQTEw X1NEUl9BRERSICsgMHgxNzgpCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX0VDQ19S RUcyUkREQVRBQlVTX0JFQVQzCShBUlJJQTEwX1NEUl9BRERSICsgMHgxN2MpCisKKyNkZWZpbmUg QVJSSUExMF9OT0NfRERSX1RfTUFJTl9TQ0hFRFVMRVJfSURfQ09SRUlECQkoQVJSSUExMF9TRFJf U0NIRURVTEVSX0FERFIgKyAweDAwKQorI2RlZmluZSBBUlJJQTEwX05PQ19ERFJfVF9NQUlOX1ND SEVEVUxFUl9JRF9SRVZJU0lPTklECQkoQVJSSUExMF9TRFJfU0NIRURVTEVSX0FERFIgKyAweDA0 KQorI2RlZmluZSBBUlJJQTEwX05PQ19ERFJfVF9NQUlOX1NDSEVEVUxFUl9ERFJDT05GCQkoQVJS SUExMF9TRFJfU0NIRURVTEVSX0FERFIgKyAweDA4KQorI2RlZmluZSBBUlJJQTEwX05PQ19ERFJf VF9NQUlOX1NDSEVEVUxFUl9ERFJUSU1JTkcJCShBUlJJQTEwX1NEUl9TQ0hFRFVMRVJfQUREUiAr IDB4MGMpCisjZGVmaW5lIEFSUklBMTBfTk9DX0REUl9UX01BSU5fU0NIRURVTEVSX0REUk1PREUJ CShBUlJJQTEwX1NEUl9TQ0hFRFVMRVJfQUREUiArIDB4MTApCisjZGVmaW5lIEFSUklBMTBfTk9D X0REUl9UX01BSU5fU0NIRURVTEVSX1JFQURMQVRFTkNZCQkoQVJSSUExMF9TRFJfU0NIRURVTEVS X0FERFIgKyAweDE0KQorI2RlZmluZSBBUlJJQTEwX05PQ19ERFJfVF9NQUlOX1NDSEVEVUxFUl9B Q1RJVkFURQkJKEFSUklBMTBfU0RSX1NDSEVEVUxFUl9BRERSICsgMHgzOCkKKyNkZWZpbmUgQVJS SUExMF9OT0NfRERSX1RfTUFJTl9TQ0hFRFVMRVJfREVWVE9ERVYJCShBUlJJQTEwX1NEUl9TQ0hF RFVMRVJfQUREUiArIDB4M2MpCisKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfREJHQ0ZH MAkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDAwKQorI2RlZmluZSBBUlJJQTEwX0lP NDhfSE1DX01NUl9EQkdDRkcxCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4MDQpCisj ZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0RCR0NGRzIJCShBUlJJQTEwX0hNQ19NTVJfSU80 OF9BRERSICsgMHgwOCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfREJHQ0ZHMwkJKEFS UklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDBjKQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1D X01NUl9EQkdDRkc0CQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4MTApCisjZGVmaW5l IEFSUklBMTBfSU80OF9ITUNfTU1SX0RCR0NGRzUJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERS ICsgMHgxNCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfREJHQ0ZHNgkJKEFSUklBMTBf SE1DX01NUl9JTzQ4X0FERFIgKyAweDE4KQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9S RVNFUlZFMAkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDFjKQorI2RlZmluZSBBUlJJ QTEwX0lPNDhfSE1DX01NUl9SRVNFUlZFMQkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAw eDIwKQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9SRVNFUlZFMgkJKEFSUklBMTBfSE1D X01NUl9JTzQ4X0FERFIgKyAweDI0KQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9DVFJM Q0ZHMAkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDI4KQorI2RlZmluZSBBUlJJQTEw X0lPNDhfSE1DX01NUl9DVFJMQ0ZHMQkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDJj KQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9DVFJMQ0ZHMgkJKEFSUklBMTBfSE1DX01N Ul9JTzQ4X0FERFIgKyAweDMwKQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9DVFJMQ0ZH MwkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDM0KQorI2RlZmluZSBBUlJJQTEwX0lP NDhfSE1DX01NUl9DVFJMQ0ZHNAkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDM4KQor I2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9DVFJMQ0ZHNQkJKEFSUklBMTBfSE1DX01NUl9J TzQ4X0FERFIgKyAweDNjKQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9DVFJMQ0ZHNgkJ KEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDQwKQorI2RlZmluZSBBUlJJQTEwX0lPNDhf SE1DX01NUl9DVFJMQ0ZHNwkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDQ0KQorI2Rl ZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9DVFJMQ0ZHOAkJKEFSUklBMTBfSE1DX01NUl9JTzQ4 X0FERFIgKyAweDQ4KQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9DVFJMQ0ZHOQkJKEFS UklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDRjKQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1D X01NUl9EUkFNVElNSU5HMAkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4NTApCisjZGVm aW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0RSQU1PRFQwCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhf QUREUiArIDB4NTQpCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0RSQU1PRFQxCQkoQVJS SUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4NTgpCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNf TU1SX1NCQ0ZHMAkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDVjKQorI2RlZmluZSBB UlJJQTEwX0lPNDhfSE1DX01NUl9TQkNGRzEJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsg MHg2MCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfU0JDRkcyCQkoQVJSSUExMF9ITUNf TU1SX0lPNDhfQUREUiArIDB4NjQpCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX1NCQ0ZH MwkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDY4KQorI2RlZmluZSBBUlJJQTEwX0lP NDhfSE1DX01NUl9TQkNGRzQJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHg2YykKKyNk ZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfU0JDRkc1CQkoQVJSSUExMF9ITUNfTU1SX0lPNDhf QUREUiArIDB4NzApCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX1NCQ0ZHNgkJKEFSUklB MTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDc0KQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01N Ul9TQkNGRzcJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHg3OCkKKyNkZWZpbmUgQVJS SUExMF9JTzQ4X0hNQ19NTVJfQ0FMVElNSU5HMAkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIg KyAweDdjKQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9DQUxUSU1JTkcxCQkoQVJSSUEx MF9ITUNfTU1SX0lPNDhfQUREUiArIDB4ODApCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1S X0NBTFRJTUlORzIJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHg4NCkKKyNkZWZpbmUg QVJSSUExMF9JTzQ4X0hNQ19NTVJfQ0FMVElNSU5HMwkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FE RFIgKyAweDg4KQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9DQUxUSU1JTkc0CQkoQVJS SUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4OGMpCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNf TU1SX0NBTFRJTUlORzUJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHg5MCkKKyNkZWZp bmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfQ0FMVElNSU5HNgkJKEFSUklBMTBfSE1DX01NUl9JTzQ4 X0FERFIgKyAweDk0KQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9DQUxUSU1JTkc3CQko QVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4OTgpCisjZGVmaW5lIEFSUklBMTBfSU80OF9I TUNfTU1SX0NBTFRJTUlORzgJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHg5YykKKyNk ZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfQ0FMVElNSU5HOQkJKEFSUklBMTBfSE1DX01NUl9J TzQ4X0FERFIgKyAweGEwKQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9DQUxUSU1JTkcx MAkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4YTQpCisjZGVmaW5lIEFSUklBMTBfSU80 OF9ITUNfTU1SX0RSQU1BRERSVwkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweGE4KQor I2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9TSURFQkFORDAJCShBUlJJQTEwX0hNQ19NTVJf SU80OF9BRERSICsgMHhhYykKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfU0lERUJBTkQx CQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4YjApCisjZGVmaW5lIEFSUklBMTBfSU80 OF9ITUNfTU1SX1NJREVCQU5EMgkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweGI0KQor I2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9TSURFQkFORDMJCShBUlJJQTEwX0hNQ19NTVJf SU80OF9BRERSICsgMHhiOCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfU0lERUJBTkQ0 CQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4YmMpCisjZGVmaW5lIEFSUklBMTBfSU80 OF9ITUNfTU1SX1NJREVCQU5ENQkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweGMwKQor I2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9TSURFQkFORDYJCShBUlJJQTEwX0hNQ19NTVJf SU80OF9BRERSICsgMHhjNCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfU0lERUJBTkQ3 CQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4YzgpCisjZGVmaW5lIEFSUklBMTBfSU80 OF9ITUNfTU1SX1NJREVCQU5EOAkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweGNjKQor I2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9TSURFQkFORDkJCShBUlJJQTEwX0hNQ19NTVJf SU80OF9BRERSICsgMHhkMCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfU0lERUJBTkQx MAkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweGQ0KQorI2RlZmluZSBBUlJJQTEwX0lP NDhfSE1DX01NUl9TSURFQkFORDExCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4ZDgp CisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX1NJREVCQU5EMTIJCShBUlJJQTEwX0hNQ19N TVJfSU80OF9BRERSICsgMHhkYykKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfU0lERUJB TkIxMwkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweGUwKQorI2RlZmluZSBBUlJJQTEw X0lPNDhfSE1DX01NUl9TSURFQkFORDE0CQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4 ZTQpCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX1NJREVCQU5EMTUJCShBUlJJQTEwX0hN Q19NTVJfSU80OF9BRERSICsgMHhlOCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfRFJB TVNUUwkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweGVjKQorI2RlZmluZSBBUlJJQTEw X0lPNDhfSE1DX01NUl9EQkdET05FCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4ZjAp CisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0RCR1NJR05BTFMJCShBUlJJQTEwX0hNQ19N TVJfSU80OF9BRERSICsgMHhmNCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfREJHUkVT RVQJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHhmOCkKKyNkZWZpbmUgQVJSSUExMF9J TzQ4X0hNQ19NTVJfREJHTUFUQ0gJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHhmYykK KyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfQ09VTlRFUjBNQVNLCShBUlJJQTEwX0hNQ19N TVJfSU80OF9BRERSICsgMHgxMDApCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0NPVU5U RVIxTUFTSwkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4MTA0KQorI2RlZmluZSBBUlJJ QTEwX0lPNDhfSE1DX01NUl9DT1VOVEVSME1BVENICShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERS ICsgMHgxMDgpCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0NPVU5URVIxTUFUQ0gJKEFS UklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDEwYykKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hN Q19NTVJfTklPU1JFU0VSVkUwCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHgxMTApCisj ZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX05JT1NSRVNFUlZFMQkoQVJSSUExMF9ITUNfTU1S X0lPNDhfQUREUiArIDB4MTE0KQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9OSU9TUkVT RVJWRTIJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDExOCkKKwordW5pb24gZHJhbWFk ZHJ3X3JlZyB7CisJc3RydWN0IHsKKwkJdTMyIGNmZ19jb2xfYWRkcl93aWR0aDo1OworCQl1MzIg Y2ZnX3Jvd19hZGRyX3dpZHRoOjU7CisJCXUzMiBjZmdfYmFua19hZGRyX3dpZHRoOjQ7CisJCXUz MiBjZmdfYmFua19ncm91cF9hZGRyX3dpZHRoOjI7CisJCXUzMiBjZmdfY3NfYWRkcl93aWR0aDoz OworCQl1MzIgcmVzZXJ2ZWQ6MTM7CisJfTsKKwl1MzIgd29yZDsKK307CisKK3VuaW9uIGN0cmxj ZmcwX3JlZyB7CisJc3RydWN0IHsKKwkJdTMyIGNmZ19tZW1fdHlwZTo0OworCQl1MzIgY2ZnX2Rp bW1fdHlwZTozOworCQl1MzIgY2ZnX2FjX3BvczoyOworCQl1MzIgY2ZnX2N0cmxfYnVyc3RfbGVu OjU7CisJCXUzMiByZXNlcnZlZDoxODsgIC8qIE90aGVyIGZpZWxkcyB1bnVzZWQgKi8KKwl9Owor CXUzMiB3b3JkOworfTsKKwordW5pb24gY3RybGNmZzFfcmVnIHsKKwlzdHJ1Y3QgeworCQl1MzIg Y2ZnX2RiYzNfYnVyc3RfbGVuOjU7CisJCXUzMiBjZmdfYWRkcl9vcmRlcjoyOworCQl1MzIgY2Zn X2N0cmxfZW5hYmxlX2VjYzoxOworCQl1MzIgcmVzZXJ2ZWQ6MjQ7ICAvKiBPdGhlciBmaWVsZHMg dW51c2VkICovCisJfTsKKwl1MzIgd29yZDsKK307CisKK3VuaW9uIGNhbHRpbWluZzBfcmVnIHsK KwlzdHJ1Y3QgeworCQl1MzIgY2ZnX2FjdF90b19yZHdyOjY7CisJCXUzMiBjZmdfYWN0X3RvX3Bj aDo2OworCQl1MzIgY2ZnX2FjdF90b19hY3Q6NjsKKwkJdTMyIGNmZ19hY3RfdG9fYWN0X2RiOjY7 CisJCXUzMiByZXNlcnZlZDo4OyAgLyogT3RoZXIgZmllbGRzIHVudXNlZCAqLworCX07CisJdTMy IHdvcmQ7Cit9OworCit1bmlvbiBjYWx0aW1pbmcxX3JlZyB7CisJc3RydWN0IHsKKwkJdTMyIGNm Z19yZF90b19yZDo2OworCQl1MzIgY2ZnX3JkX3RvX3JkX2RjOjY7CisJCXUzMiBjZmdfcmRfdG9f cmRfZGI6NjsKKwkJdTMyIGNmZ19yZF90b193cjo2OworCQl1MzIgY2ZnX3JkX3RvX3dyX2RjOjY7 CisJCXUzMiByZXNlcnZlZDoyOworCX07CisJdTMyIHdvcmQ7Cit9OworCit1bmlvbiBjYWx0aW1p bmcyX3JlZyB7CisJc3RydWN0IHsKKwkJdTMyIGNmZ19yZF90b193cl9kYjo2OworCQl1MzIgY2Zn X3JkX3RvX3BjaDo2OworCQl1MzIgY2ZnX3JkX2FwX3RvX3ZhbGlkOjY7CisJCXUzMiBjZmdfd3Jf dG9fd3I6NjsKKwkJdTMyIGNmZ193cl90b193cl9kYzo2OworCQl1MzIgcmVzZXJ2ZWQ6MjsKKwl9 OworCXUzMiB3b3JkOworfTsKKwordW5pb24gY2FsdGltaW5nM19yZWcgeworCXN0cnVjdCB7CisJ CXUzMiBjZmdfd3JfdG9fd3JfZGI6NjsKKwkJdTMyIGNmZ193cl90b19yZDo2OworCQl1MzIgY2Zn X3dyX3RvX3JkX2RjOjY7CisJCXUzMiBjZmdfd3JfdG9fcmRfZGI6NjsKKwkJdTMyIGNmZ193cl90 b19wY2g6NjsKKwkJdTMyIHJlc2VydmVkOjI7CisJfTsKKwl1MzIgd29yZDsKK307CisKK3VuaW9u IGNhbHRpbWluZzRfcmVnIHsKKwlzdHJ1Y3QgeworCQl1MzIgY2ZnX3dyX2FwX3RvX3ZhbGlkOjY7 CisJCXUzMiBjZmdfcGNoX3RvX3ZhbGlkOjY7CisJCXUzMiBjZmdfcGNoX2FsbF90b192YWxpZDo2 OworCQl1MzIgY2ZnX2FyZl90b192YWxpZDo4OworCQl1MzIgY2ZnX3Bkbl90b192YWxpZDo2Owor CX07CisJdTMyIHdvcmQ7Cit9OworCit1bmlvbiBjYWx0aW1pbmc5X3JlZyB7CisJc3RydWN0IHsK KwkJdTMyIGNmZ180X2FjdF90b19hY3Q6ODsKKwkJdTMyIHJlc2VydmVkOjI0OworCX07CisJdTMy IHdvcmQ7Cit9OworCisjZGVmaW5lIElSUV9FQ0NfU0VSUgkJCQkJCTM0CisjZGVmaW5lIElSUV9F Q0NfREVSUgkJCQkJCTMyCisKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9ERFJJT0NUUkxf SU9fU0laRQkJCTB4MDAwMDAwMDEKKworI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX0lOVFNU QVRfU0VSUlBFTkEJCQkweDAwMDAwMDAxCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfSU5U U1RBVF9ERVJSUEVOQQkJCTB4MDAwMDAwMDIKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9F UlJJTlRFTl9TRVJSSU5URU4JCQkweDAwMDAwMDAxCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19P Q1BfRVJSSU5URU5fREVSUklOVEVOCQkJMHgwMDAwMDAwMgorI2RlZmluZSBBUlJJQTEwX0VDQ19I TUNfT0NQX0lOVE1PRF9JTlRPTkNNUAkJCTB4MDAwMTAwMDAKKyNkZWZpbmUgQVJSSUExMF9FQ0Nf SE1DX09DUF9JTlRNT0RfU0VSUgkJCQkweDAwMDAwMDAxCisjZGVmaW5lIEFSUklBMTBfRUNDX0hN Q19PQ1BfSU5UTU9EX0VYVF9BRERSUEFSSVRZCQkweDAwMDAwMTAwCisjZGVmaW5lIEFSUklBMTBf RUNDX0hNQ19PQ1BfRUNDQ1RMX0FXQl9DTlRfUlNUCQkJMHgwMDAxMDAwMAorI2RlZmluZSBBUlJJ QTEwX0VDQ19ITUNfT0NQX0VDQ0NUTF9DTlRfUlNUCQkJMHgwMDAwMDEwMAorI2RlZmluZSBBUlJJ QTEwX0VDQ19ITUNfT0NQX0VDQ0NUTF9FQ0NfRU4JCQkweDAwMDAwMDAwCisjZGVmaW5lIEFSUklB MTBfRUNDX0hNQ19PQ1BfRUNDQ1RMMl9STVdfRU4JCQkweDAwMDAwMTAwCisjZGVmaW5lIEFSUklB MTBfRUNDX0hNQ19PQ1BfRUNDQ1RMMl9BV0JfRU4JCQkweDAwMDAwMDAxCisjZGVmaW5lIEFSUklB MTBfRUNDX0hNQ19PQ1BfRVJSSU5URU5fU0VSUgkJCTB4MDAwMDAwMDEKKyNkZWZpbmUgQVJSSUEx MF9FQ0NfSE1DX09DUF9FUlJJTlRFTl9ERVJSCQkJMHgwMDAwMDAwMgorI2RlZmluZSBBUlJJQTEw X0VDQ19ITUNfT0NQX0VSUklOVEVOX0hNSQkJCTB4MDAwMDAwMDQKKyNkZWZpbmUgQVJSSUExMF9F Q0NfSE1DX09DUF9JTlRTVEFUX1NFUlIJCQkweDAwMDAwMDAxCisjZGVmaW5lIEFSUklBMTBfRUND X0hNQ19PQ1BfSU5UU1RBVF9ERVJSCQkJMHgwMDAwMDAwMgorI2RlZmluZSBBUlJJQTEwX0VDQ19I TUNfT0NQX0lOVFNUQVRfSE1JCQkJCTB4MDAwMDAwMDQKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1D X09DUF9JTlRTVEFUX0FERFJNVENGTEcJCQkweDAwMDEwMDAwCisjZGVmaW5lIEFSUklBMTBfRUND X0hNQ19PQ1BfSU5UU1RBVF9BRERSUEFSRkxHCQkJMHgwMDAyMDAwMAorI2RlZmluZSBBUlJJQTEw X0VDQ19ITUNfT0NQX0lOVFNUQVRfREVSUkJVU0ZMRwkJCTB4MDAwNDAwMDAKKworI2RlZmluZSBB UlJJQTEwX0VDQ19ITUNfT0NQX1NFUlJDTlRSRUdfVkFMVUUJCQk4CisKKyNkZWZpbmUgQVJSSUEx MF9OT0NfTVBVX0REUl9UX1NDSEVEX0REUlRJTUlOR19BQ1RUT0FDVF9MU0IJMjIKKyNkZWZpbmUg QVJSSUExMF9OT0NfTVBVX0REUl9UX1NDSEVEX0REUlRJTUlOR19SRFRPTUlTU19MU0IJMAorI2Rl ZmluZSBBUlJJQTEwX05PQ19NUFVfRERSX1RfU0NIRURfRERSVElNSU5HX1dSVE9NSVNTX0xTQgkw CisjZGVmaW5lIEFSUklBMTBfTk9DX01QVV9ERFJfVF9TQ0hFRF9ERFJUSU1JTkdfQlVSU1RMRU5f TFNCCTIKKyNkZWZpbmUgQVJSSUExMF9OT0NfTVBVX0REUl9UX1NDSEVEX0REUlRJTUlOR19SRFRP V1JfTFNCCTYKKyNkZWZpbmUgQVJSSUExMF9OT0NfTVBVX0REUl9UX1NDSEVEX0REUlRJTUlOR19X UlRPUkRfTFNCCTE1CisjZGVmaW5lIEFSUklBMTBfTk9DX01QVV9ERFJfVF9TQ0hFRF9ERFJUSU1J TkdfQldSQVRJT19MU0IJMAorCisjZGVmaW5lIEFSUklBMTBfTk9DX01QVV9ERFJfVF9TQ0hFRF9E RFJNT0RfQVVUT1BSRUNIQVJHRV9MU0IJMAorI2RlZmluZSBBUlJJQTEwX05PQ19NUFVfRERSX1Rf U0NIRURfRERSTU9EX0JXUkFUSU9FWFRFTkRFRF9MU0IJMAorCisjZGVmaW5lIEFSUklBMTBfTk9D X01QVV9ERFJfVF9TQ0hFRF9BQ1RJVkFURV9SUkRfTFNCCQk0CisjZGVmaW5lIEFSUklBMTBfTk9D X01QVV9ERFJfVF9TQ0hFRF9BQ1RJVkFURV9GQVdfTFNCCQkxMworI2RlZmluZSBBUlJJQTEwX05P Q19NUFVfRERSX1RfU0NIRURfQUNUSVZBVEVfRkFXQkFOS19MU0IJNAorCisjZGVmaW5lIEFSUklB MTBfTk9DX01QVV9ERFJfVF9TQ0hFRF9ERVZUT0RFVl9CVVNSRFRPUkRfTFNCCTQKKyNkZWZpbmUg QVJSSUExMF9OT0NfTVBVX0REUl9UX1NDSEVEX0RFVlRPREVWX0JVU1JEVE9XUl9MU0IJNgorI2Rl ZmluZSBBUlJJQTEwX05PQ19NUFVfRERSX1RfU0NIRURfREVWVE9ERVZfQlVTV1JUT1JEX0xTQgk2 CisKKyNkZWZpbmUgQVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfRU4JCQkoQVJSSUExMF9TRFJfRldf TVBVX0ZQR0FfQUREUiArIDB4MDApCisjZGVmaW5lIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0VO X1NFVAkJCShBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9BRERSICsgMHgwNCkKKyNkZWZpbmUgQVJS SUExMF9TRFJfRldfTVBVX0ZQR0FfRU5fQ0xSCQkJKEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0FE RFIgKyAweDA4KQorI2RlZmluZSBBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9NUFVSRUdJT04wQURE UgkJKEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0FERFIgKyAweDEwKQorI2RlZmluZSBBUlJJQTEw X1NEUl9GV19NUFVfRlBHQV9NUFVSRUdJT04xQUREUgkJKEFSUklBMTBfU0RSX0ZXX01QVV9GUEdB X0FERFIgKyAweDE0KQorI2RlZmluZSBBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9NUFVSRUdJT04y QUREUgkJKEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0FERFIgKyAweDE4KQorI2RlZmluZSBBUlJJ QTEwX1NEUl9GV19NUFVfRlBHQV9NUFVSRUdJT04zQUREUgkJKEFSUklBMTBfU0RSX0ZXX01QVV9G UEdBX0FERFIgKyAweDFjKQorI2RlZmluZSBBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9GUEdBMlNE UkFNMFJFR0lPTjBBRERSCShBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9BRERSICsgMHgyMCkKKyNk ZWZpbmUgQVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfRlBHQTJTRFJBTTBSRUdJT04xQUREUgkoQVJS SUExMF9TRFJfRldfTVBVX0ZQR0FfQUREUiArIDB4MjQpCisjZGVmaW5lIEFSUklBMTBfU0RSX0ZX X01QVV9GUEdBX0ZQR0EyU0RSQU0wUkVHSU9OMkFERFIJKEFSUklBMTBfU0RSX0ZXX01QVV9GUEdB X0FERFIgKyAweDI4KQorI2RlZmluZSBBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9GUEdBMlNEUkFN MFJFR0lPTjNBRERSCShBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9BRERSICsgMHgyYykKKyNkZWZp bmUgQVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfRlBHQTJTRFJBTTFSRUdJT04wQUREUgkoQVJSSUEx MF9TRFJfRldfTVBVX0ZQR0FfQUREUiArIDB4MzApCisjZGVmaW5lIEFSUklBMTBfU0RSX0ZXX01Q VV9GUEdBX0ZQR0EyU0RSQU0xUkVHSU9OMUFERFIJKEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0FE RFIgKyAweDM0KQorI2RlZmluZSBBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9GUEdBMlNEUkFNMVJF R0lPTjJBRERSCShBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9BRERSICsgMHgzOCkKKyNkZWZpbmUg QVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfRlBHQTJTRFJBTTFSRUdJT04zQUREUgkoQVJSSUExMF9T RFJfRldfTVBVX0ZQR0FfQUREUiArIDB4M2MpCisjZGVmaW5lIEFSUklBMTBfU0RSX0ZXX01QVV9G UEdBX0ZQR0EyU0RSQU0yUkVHSU9OMEFERFIJKEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0FERFIg KyAweDQwKQorI2RlZmluZSBBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9GUEdBMlNEUkFNMlJFR0lP TjFBRERSCShBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9BRERSICsgMHg0NCkKKyNkZWZpbmUgQVJS SUExMF9TRFJfRldfTVBVX0ZQR0FfRlBHQTJTRFJBTTJSRUdJT04yQUREUgkoQVJSSUExMF9TRFJf RldfTVBVX0ZQR0FfQUREUiArIDB4NDgpCisjZGVmaW5lIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdB X0ZQR0EyU0RSQU0yUkVHSU9OM0FERFIJKEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0FERFIgKyAw eDRjKQorCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9NUFVfTVBVUkVHMEVOCQlCSVQoMCkK KyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX01QVV9NUFVSRUcxRU4JCUJJVCgxKQorI2RlZmlu ZSBBUlJJQTEwX05PQ19GV19ERFJfTVBVX01QVVJFRzJFTgkJQklUKDIpCisjZGVmaW5lIEFSUklB MTBfTk9DX0ZXX0REUl9NUFVfTVBVUkVHM0VOCQlCSVQoMykKKyNkZWZpbmUgQVJSSUExMF9OT0Nf RldfRERSX01QVV9GMlNEUjBSRUcwRU4JCUJJVCg0KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19E RFJfTVBVX0YyU0RSMFJFRzFFTgkJQklUKDUpCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9N UFVfRjJTRFIwUkVHMkVOCQlCSVQoNikKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX01QVV9G MlNEUjBSRUczRU4JCUJJVCg3KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTVBVX0YyU0RS MVJFRzBFTgkJQklUKDgpCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9NUFVfRjJTRFIxUkVH MUVOCQlCSVQoOSkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX01QVV9GMlNEUjFSRUcyRU4J CUJJVCgxMCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX01QVV9GMlNEUjFSRUczRU4JCUJJ VCgxMSkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX01QVV9GMlNEUjJSRUcwRU4JCUJJVCgx MikKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX01QVV9GMlNEUjJSRUcxRU4JCUJJVCgxMykK KyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX01QVV9GMlNEUjJSRUcyRU4JCUJJVCgxNCkKKyNk ZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX01QVV9GMlNEUjJSRUczRU4JCUJJVCgxNSkKKworI2Rl ZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTDNfRU4JCQkoQVJSSUExMF9OT0NfRldfRERSX0wzX0RE Ul9TQ1JfQUREUiArIDB4MDApCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9MM19FTl9TRVQJ CQkoQVJSSUExMF9OT0NfRldfRERSX0wzX0REUl9TQ1JfQUREUiArIDB4MDQpCisjZGVmaW5lIEFS UklBMTBfTk9DX0ZXX0REUl9MM19FTl9DTFIJCQkoQVJSSUExMF9OT0NfRldfRERSX0wzX0REUl9T Q1JfQUREUiArIDB4MDgpCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9MM19IUFNSRUdJT04w QUREUgkJKEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX0FERFIgKyAweDBjKQorI2RlZmlu ZSBBUlJJQTEwX05PQ19GV19ERFJfTDNfSFBTUkVHSU9OMUFERFIJCShBUlJJQTEwX05PQ19GV19E RFJfTDNfRERSX1NDUl9BRERSICsgMHgxMCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX0wz X0hQU1JFR0lPTjJBRERSCQkoQVJSSUExMF9OT0NfRldfRERSX0wzX0REUl9TQ1JfQUREUiArIDB4 MTQpCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9MM19IUFNSRUdJT04zQUREUgkJKEFSUklB MTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX0FERFIgKyAweDE4KQorI2RlZmluZSBBUlJJQTEwX05P Q19GV19ERFJfTDNfSFBTUkVHSU9ONEFERFIJCShBUlJJQTEwX05PQ19GV19ERFJfTDNfRERSX1ND Ul9BRERSICsgMHgxYykKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX0wzX0hQU1JFR0lPTjVB RERSCQkoQVJSSUExMF9OT0NfRldfRERSX0wzX0REUl9TQ1JfQUREUiArIDB4MjApCisjZGVmaW5l IEFSUklBMTBfTk9DX0ZXX0REUl9MM19IUFNSRUdJT042QUREUgkJKEFSUklBMTBfTk9DX0ZXX0RE Ul9MM19ERFJfU0NSX0FERFIgKyAweDI0KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTDNf SFBTUkVHSU9ON0FERFIJCShBUlJJQTEwX05PQ19GV19ERFJfTDNfRERSX1NDUl9BRERSICsgMHgy OCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX0wzX0dMT0JBTAkJCShBUlJJQTEwX05PQ19G V19ERFJfTDNfRERSX1NDUl9BRERSICsgMHgyYykKKworI2RlZmluZSBBUlJJQTEwX05PQ19GV19E RFJfTDNfSFBTUkVHMEVOCQkJQklUKDApCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9MM19I UFNSRUcxRU4JCQlCSVQoMSkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX0wzX0hQU1JFRzJF TgkJCUJJVCgyKQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTDNfSFBTUkVHM0VOCQkJQklU KDMpCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9MM19IUFNSRUc0RU4JCQlCSVQoNCkKKyNk ZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX0wzX0hQU1JFRzVFTgkJCUJJVCg1KQorI2RlZmluZSBB UlJJQTEwX05PQ19GV19ERFJfTDNfSFBTUkVHNkVOCQkJQklUKDYpCisjZGVmaW5lIEFSUklBMTBf Tk9DX0ZXX0REUl9MM19IUFNSRUc3RU4JCQlCSVQoNykKKworI2RlZmluZSBBUlJJQTEwX0lPNDhf RFJBTVRJTUVfTUVNX1JFQURfTEFURU5DWQkJMHgwMDAwMDAzZgorCitpbnQgYXJyaWExMF9kZHJf Y2FsaWJyYXRpb25fc2VxdWVuY2Uodm9pZCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9h cm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9hcnJpYTEwLXN5c3RlbS1tYW5hZ2VyLmggYi9h cmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtc3lzdGVtLW1hbmFnZXIu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY5OGNjMzZjNzY2NAot LS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtc29jZnBnYS9pbmNsdWRlL21hY2gvYXJy aWExMC1zeXN0ZW0tbWFuYWdlci5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg KEMpIDIwMTQtMjAxNiBBbHRlcmEgQ29ycG9yYXRpb24gPHd3dy5hbHRlcmEuY29tPgorICoKKyAq IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOglHUEwtMi4wCisgKi8KKworI2lmbmRlZglfQVJSSUEx MF9TWVNURU1fTUFOQUdFUl9IXworI2RlZmluZQlfQVJSSUExMF9TWVNURU1fTUFOQUdFUl9IXwor CisjaW5jbHVkZSA8bWFjaC9hcnJpYTEwLXJlZ3MuaD4KKworI2RlZmluZSBBUlJJQTEwX1NZU01H Ul9TSUxJQ09OSUQxCQkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4MDApCisjZGVmaW5lIEFSUklB MTBfU1lTTUdSX1NJTElDT05JRDIJCShBUlJJQTEwX1NZU01HUl9BRERSICsgMHgwNCkKKyNkZWZp bmUgQVJSSUExMF9TWVNNR1JfV0REQkcJCQkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4MDgpCisj ZGVmaW5lIEFSUklBMTBfU1lTTUdSX0JPT1RJTkZPCQkJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAw eDBjKQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9NUFVfQ1RSTF9MMl9FQ0MJCShBUlJJQTEwX1NZ U01HUl9BRERSICsgMHgxMCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfRE1BCQkJKEFSUklBMTBf U1lTTUdSX0FERFIgKyAweDIwKQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9ETUFfUEVSSVBICQko QVJSSUExMF9TWVNNR1JfQUREUiArIDB4MjQpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX1NETU1D CQkJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweDI4KQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9T RE1NQ19MM01BU1RFUgkJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweDJjKQorI2RlZmluZSBBUlJJ QTEwX1NZU01HUl9OQU5EX0JPT1RTVFJBUAkJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweDMwKQor I2RlZmluZSBBUlJJQTEwX1NZU01HUl9OQU5EX0wzTUFTVEVSCQkoQVJSSUExMF9TWVNNR1JfQURE UiArIDB4MzQpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX1VTQjBfTDNNQVNURVIJCShBUlJJQTEw X1NZU01HUl9BRERSICsgMHgzOCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfVVNCMV9MM01BU1RF UgkJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweDNjKQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9F TUFDX0dMT0JBTAkJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweDQwKQorI2RlZmluZSBBUlJJQTEw X1NZU01HUl9FTUFDMAkJCShBUlJJQTEwX1NZU01HUl9BRERSICsgMHg0NCkKKyNkZWZpbmUgQVJS SUExMF9TWVNNR1JfRU1BQzEJCQkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4NDgpCisjZGVmaW5l IEFSUklBMTBfU1lTTUdSX0VNQUMyCQkJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweDRjKQorI2Rl ZmluZSBBUlJJQTEwX1NZU01HUl9GUEdBSU5URl9HTE9CQUwJCShBUlJJQTEwX1NZU01HUl9BRERS ICsgMHg2MCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfRlBHQUlOVEZfRU5fMAkJKEFSUklBMTBf U1lTTUdSX0FERFIgKyAweDY0KQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9GUEdBSU5URl9FTl8x CQkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4NjgpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX0ZQ R0FJTlRGX0VOXzIJCShBUlJJQTEwX1NZU01HUl9BRERSICsgMHg2YykKKyNkZWZpbmUgQVJSSUEx MF9TWVNNR1JfRlBHQUlOVEZfRU5fMwkJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweDcwKQorI2Rl ZmluZSBBUlJJQTEwX1NZU01HUl9OT0NfQUREUl9SRU1BUF9WQUxVRSAJKEFSUklBMTBfU1lTTUdS X0FERFIgKyAweDgwKQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9OT0NfQUREUl9SRU1BUF9TRVQg CShBUlJJQTEwX1NZU01HUl9BRERSICsgMHg4NCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfTk9D X0FERFJfUkVNQVBfQ0xFQVIgCShBUlJJQTEwX1NZU01HUl9BRERSICsgMHg4OCkKKyNkZWZpbmUg QVJSSUExMF9TWVNNR1JfRUNDX0lOVE1BU0tfVkFMVUUgCShBUlJJQTEwX1NZU01HUl9BRERSICsg MHg5MCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfRUNDX0lOVE1BU0tfU0VUIAkJKEFSUklBMTBf U1lTTUdSX0FERFIgKyAweDk0KQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9FQ0NfSU5UTUFTS19D TFIgCQkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4OTgpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdS X0VDQ19JTlRTVEFUVVNfU0VSUiAJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweDljKQorI2RlZmlu ZSBBUlJJQTEwX1NZU01HUl9FQ0NfSU5UU1RBVFVTX0RFUlIgCShBUlJJQTEwX1NZU01HUl9BRERS ICsgMHhhMCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfTVBVX1NUQVRVU19MMl9FQ0MgCShBUlJJ QTEwX1NZU01HUl9BRERSICsgMHhhNCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfTVBVX0NMRUFS X0wyX0VDQyAJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweGE4KQorI2RlZmluZSBBUlJJQTEwX1NZ U01HUl9NUFVfU1RBVFVTX0wxX1BBUklUWSAJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweGFjKQor I2RlZmluZSBBUlJJQTEwX1NZU01HUl9NUFVfQ0xFQVJfTDFfUEFSSVRZIAkoQVJSSUExMF9TWVNN R1JfQUREUiArIDB4YjApCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX01QVV9TRVRfTDFfUEFSSVRZ IAkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4YjQpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX05P Q19USU1FT1VUIAkJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweGMwKQorI2RlZmluZSBBUlJJQTEw X1NZU01HUl9OT0NfSURMRVJFUV9TRVQJCShBUlJJQTEwX1NZU01HUl9BRERSICsgMHhjNCkKKyNk ZWZpbmUgQVJSSUExMF9TWVNNR1JfTk9DX0lETEVSRVFfQ0xSCQkoQVJSSUExMF9TWVNNR1JfQURE UiArIDB4YzgpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX05PQ19JRExFUkVRX1ZBTFVFCShBUlJJ QTEwX1NZU01HUl9BRERSICsgMHhjYykKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfTk9DX0lETEVB Q0sJCShBUlJJQTEwX1NZU01HUl9BRERSICsgMHhkMCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1Jf Tk9DX0lETEVTVEFUVVMJCShBUlJJQTEwX1NZU01HUl9BRERSICsgMHhkNCkKKyNkZWZpbmUgQVJS SUExMF9TWVNNR1JfRlBHQTJTT0NfQ1RSTAkJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweGQ4KQor CisvKiBwaW4gbXV4ICovCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX1BJTk1VWEdSUAkJKEFSUklB MTBfU1lTTUdSX0FERFIgKyAweDQwMCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfUElOTVVYR1JQ X05BTkRVU0VGUEdBCShBUlJJQTEwX1NZU01HUl9QSU5NVVhHUlAgKyAweDJGMCkKKyNkZWZpbmUg QVJSSUExMF9TWVNNR1JfUElOTVVYR1JQX0VNQUMxVVNFRlBHQQkoQVJSSUExMF9TWVNNR1JfUElO TVVYR1JQICsgMHgyRjgpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX1BJTk1VWEdSUF9TRE1NQ1VT RUZQR0EJKEFSUklBMTBfU1lTTUdSX1BJTk1VWEdSUCArIDB4MzA4KQorI2RlZmluZSBBUlJJQTEw X1NZU01HUl9QSU5NVVhHUlBfRU1BQzBVU0VGUEdBCShBUlJJQTEwX1NZU01HUl9QSU5NVVhHUlAg KyAweDMxNCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfUElOTVVYR1JQX1NQSU0xVVNFRlBHQQko QVJSSUExMF9TWVNNR1JfUElOTVVYR1JQICsgMHgzMzApCisjZGVmaW5lIEFSUklBMTBfU1lTTUdS X1BJTk1VWEdSUF9TUElNMFVTRUZQR0EJKEFSUklBMTBfU1lTTUdSX1BJTk1VWEdSUCArIDB4MzM4 KQorCisvKiBiaXQgZmllbGRzICovCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX1JPTUNPREVHUlBf Q1RSTF9XQVJNUlNUQ0ZHUElOTVVYCQlCSVQoMCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfUk9N Q09ERUdSUF9DVFJMX1dBUk1SU1RDRkdJTwkJQklUKDEpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdS X0VDQ19PQ1JBTV9FTgkJCQlCSVQoMCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfRUNDX09DUkFN X1NFUlIJCQkJQklUKDMpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX0VDQ19PQ1JBTV9ERVJSCQkJ CUJJVCg0KQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9GUEdBSU5URl9VU0VGUEdBCQkJCUJJVCgx KQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9GUEdBSU5URl9TUElNMAkJCQlCSVQoMCkKKyNkZWZp bmUgQVJSSUExMF9TWVNNR1JfRlBHQUlOVEZfU1BJTTEJCQkJQklUKDEpCisjZGVmaW5lIEFSUklB MTBfU1lTTUdSX0ZQR0FJTlRGX0VNQUMwCQkJCUJJVCgyKQorI2RlZmluZSBBUlJJQTEwX1NZU01H Ul9GUEdBSU5URl9FTUFDMQkJCQlCSVQoMykKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfRlBHQUlO VEZfTkFORAkJCQlCSVQoNCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfRlBHQUlOVEZfU0RNTUMJ CQkJQklUKDUpCisKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfRU1BQ0dSUF9DVFJMX1BIWVNFTF9F TlVNX0dNSUlfTUlJCTB4MAorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9FTUFDR1JQX0NUUkxfUEhZ U0VMX0VOVU1fUkdNSUkJCTB4MQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9FTUFDR1JQX0NUUkxf UEhZU0VMX0VOVU1fUk1JSQkJMHgyCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX0VNQUNHUlBfQ1RS TF9QSFlTRUxfTFNCCQkJMAorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9FTUFDR1JQX0NUUkxfUEhZ U0VMX01BU0sJCQkweDAwMDAwMDAzCisKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfRlBHQUlOVEZf RU4zX0VNQUMwCUJJVCgwKQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9GUEdBSU5URl9FTjNfRU1B QzBfU1cJQklUKDQpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX0ZQR0FJTlRGX0VOM19FTUFDMQlC SVQoOCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfRlBHQUlOVEZfRU4zX0VNQUMxX1NXCUJJVCgx MikKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfRlBHQUlOVEZfRU4zX0VNQUMyCUJJVCgxNikKKyNk ZWZpbmUgQVJSSUExMF9TWVNNR1JfRlBHQUlOVEZfRU4zX0VNQUMyX1NXCUJJVCgyMCkKKworI2Rl ZmluZSBBUlJJQTEwX1NZU01HUl9TRE1NQ19TTVBMU0VMKHNtcGxzZWwpCSgoKHNtcGxzZWwpICYg MHg3KSA8PCA0KQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9TRE1NQ19EUlZTRUwoZHJ2c2VsKQko KGRydnNlbCkgJiAweDcpCisKKyNkZWZpbmUgU1lTTUdSX1NETU1DX0NUUkxfU0VUKHNtcGxzZWws IGRydnNlbCkJXAorCSgoZHJ2c2VsIDw8IDApICYgMHg3KSB8ICgoc21wbHNlbCA8PCA0KSAmIDB4 NzApCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUv bWFjaC9nZW5lcmljLmggYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2dlbmVy aWMuaAppbmRleCAyYTdlMGVhNDk5YWYuLjRhNWIxYmJjMjg0MyAxMDA2NDQKLS0tIGEvYXJjaC9h cm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9nZW5lcmljLmgKKysrIGIvYXJjaC9hcm0vbWFj aC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9nZW5lcmljLmgKQEAgLTUsOSArNSw0NCBAQCBzdHJ1Y3Qg c29jZnBnYV9jbV9jb25maWc7CiAKIHN0cnVjdCBzb2NmcGdhX2lvX2NvbmZpZzsKIAorc3RydWN0 IGFycmlhMTBfbWFpbnBsbF9jZmc7CitzdHJ1Y3QgYXJyaWExMF9wZXJwbGxfY2ZnOworc3RydWN0 IGFycmlhMTBfcGlubXV4X2NmZzsKKwordm9pZCBhcnJpYTEwX2luaXQoc3RydWN0IGFycmlhMTBf bWFpbnBsbF9jZmcgKm1haW5wbGwsCisJCSAgc3RydWN0IGFycmlhMTBfcGVycGxsX2NmZyAqcGVy cGxsLAorCQkgIHN0cnVjdCBhcnJpYTEwX3Bpbm11eF9jZmcgKnBpbm11eCk7CisKIHZvaWQgc29j ZnBnYV9sb3dsZXZlbF9pbml0KHN0cnVjdCBzb2NmcGdhX2NtX2NvbmZpZyAqY21fY29uZmlnLAog CQkJICAgc3RydWN0IHNvY2ZwZ2FfaW9fY29uZmlnICppb19jb25maWcpOwogCisjaWYgZGVmaW5l ZChDT05GSUdfQVJDSF9TT0NGUEdBX0NZQ0xPTkU1KQordm9pZCBzb2NmcGdhX2N5Y2xvbmU1X21t Y19pbml0KHZvaWQpOwordm9pZCBzb2NmcGdhX2N5Y2xvbmU1X3VhcnRfaW5pdCh2b2lkKTsKK3Zv aWQgc29jZnBnYV9jeWNsb25lNV90aW1lcl9pbml0KHZvaWQpOwordm9pZCBzb2NmcGdhX2N5Y2xv bmU1X3FzcGlfaW5pdCh2b2lkKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQgc29jZnBnYV9j eWNsb25lNV9tbWNfaW5pdCh2b2lkKQoreworCXJldHVybjsKK30KKworc3RhdGljIGlubGluZSB2 b2lkIHNvY2ZwZ2FfY3ljbG9uZTVfdWFydF9pbml0KHZvaWQpCit7CisJcmV0dXJuOworfQorCitz dGF0aWMgaW5saW5lIHZvaWQgc29jZnBnYV9jeWNsb25lNV90aW1lcl9pbml0KHZvaWQpCit7CisJ cmV0dXJuOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgc29jZnBnYV9jeWNsb25lNV9xc3BpX2lu aXQodm9pZCkKK3sKKwlyZXR1cm47Cit9CisjZW5kaWYKKwogc3RhdGljIGlubGluZSB2b2lkIF9f dWRlbGF5KHVuc2lnbmVkIHVzKQogewogCXZvbGF0aWxlIHVuc2lnbmVkIGludCBpOwpkaWZmIC0t Z2l0IGEvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL3hsb2FkLmMgYi9hcmNoL2FybS9tYWNoLXNvY2Zw Z2EveGxvYWQuYwppbmRleCA1ZDQ3YmI5ZDNlYTIuLmVlN2QxOTQ0MjdlYyAxMDA2NDQKLS0tIGEv YXJjaC9hcm0vbWFjaC1zb2NmcGdhL3hsb2FkLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdh L3hsb2FkLmMKQEAgLTEsOCArMSw1IEBACi0jaW5jbHVkZSA8cGxhdGZvcm1fZGF0YS9jYWRlbmNl X3FzcGkuaD4KLSNpbmNsdWRlIDxwbGF0Zm9ybV9kYXRhL2R3X21tYy5oPgogI2luY2x1ZGUgPGJv b3Rzb3VyY2UuaD4KICNpbmNsdWRlIDxib290c3RyYXAuaD4KLSNpbmNsdWRlIDxwbGF0Zm9ybV9k YXRhL3NlcmlhbC1uczE2NTUwLmg+CiAjaW5jbHVkZSA8Y29tbW9uLmg+CiAjaW5jbHVkZSA8bWFs bG9jLmg+CiAjaW5jbHVkZSA8aW5pdC5oPgpAQCAtMTAsNyArNyw2IEBACiAjaW5jbHVkZSA8bGlu dXgvc2l6ZXMuaD4KICNpbmNsdWRlIDxmcy5oPgogI2luY2x1ZGUgPGlvLmg+Ci0jaW5jbHVkZSA8 bWNpLmg+CiAKICNpbmNsdWRlIDxsaW51eC9jbGtkZXYuaD4KICNpbmNsdWRlIDxsaW51eC9zdGF0 Lmg+CkBAIC0zMCw4NCArMjYsNiBAQCBzdGF0aWMgc3RydWN0IHNvY2ZwZ2FfYmFyZWJveF9wYXJ0 IGRlZmF1bHRfcGFydHNbXSA9IHsKIH07CiBjb25zdCBzdHJ1Y3Qgc29jZnBnYV9iYXJlYm94X3Bh cnQgKmJhcmVib3hfcGFydHMgPSBkZWZhdWx0X3BhcnRzOwogCi1lbnVtIHNvY2ZwZ2FfY2xrcyB7 Ci0JdGltZXIsIG1tYywgcXNwaV9jbGssIHVhcnQsIGNsa19tYXgKLX07Ci0KLXN0YXRpYyBzdHJ1 Y3QgY2xrICpjbGtzW2Nsa19tYXhdOwotCi1zdGF0aWMgc3RydWN0IGR3X21tY19wbGF0Zm9ybV9k YXRhIG1tY19wZGF0YSA9IHsKLQkuYnVzX3dpZHRoX2NhcHMgPSBNTUNfQ0FQXzRfQklUX0RBVEEs Ci0JLmNpdV9kaXYgPSAzLAotfTsKLQotc3RhdGljIHZvaWQgc29jZnBnYV9tbWNfaW5pdCh2b2lk KQotewotCWNsa3NbbW1jXSA9IGNsa19maXhlZCgibW1jIiwgNDAwMDAwMDAwKTsKLQljbGtkZXZf YWRkX3BoeXNiYXNlKGNsa3NbbW1jXSwgQ1lDTE9ORTVfU0RNTUNfQUREUkVTUywgTlVMTCk7Ci0J YWRkX2dlbmVyaWNfZGV2aWNlKCJkd19tbWMiLCAwLCBOVUxMLCBDWUNMT05FNV9TRE1NQ19BRERS RVNTLCBTWl80SywKLQkJCUlPUkVTT1VSQ0VfTUVNLCAmbW1jX3BkYXRhKTsKLX0KLQotI2lmIGRl ZmluZWQoQ09ORklHX1NQSV9DQURFTkNFX1FVQURTUEkpCi1zdGF0aWMgc3RydWN0IGNhZGVuY2Vf cXNwaV9wbGF0Zm9ybV9kYXRhIHFzcGlfcGRhdGEgPSB7Ci0JLmV4dF9kZWNvZGVyID0gMCwKLQku Zmlmb19kZXB0aCA9IDEyOCwKLX07Ci0KLXN0YXRpYyBfX21heWJlX3VudXNlZCB2b2lkIGFkZF9j YWRlbmNlX3FzcGlfZGV2aWNlKGludCBpZCwgcmVzb3VyY2Vfc2l6ZV90IGN0cmwsCi0JCQkJICAg IHJlc291cmNlX3NpemVfdCBkYXRhLCB2b2lkICpwZGF0YSkKLXsKLQlzdHJ1Y3QgcmVzb3VyY2Ug KnJlczsKLQotCXJlcyA9IHh6YWxsb2Moc2l6ZW9mKHN0cnVjdCByZXNvdXJjZSkgKiAyKTsKLQly ZXNbMF0uc3RhcnQgPSBjdHJsOwotCXJlc1swXS5lbmQgPSBjdHJsICsgMHgxMDAgLSAxOwotCXJl c1swXS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNOwotCXJlc1sxXS5zdGFydCA9IGRhdGE7Ci0JcmVz WzFdLmVuZCA9IGRhdGEgKyAweDEwMCAtIDE7Ci0JcmVzWzFdLmZsYWdzID0gSU9SRVNPVVJDRV9N RU07Ci0KLQlhZGRfZ2VuZXJpY19kZXZpY2VfcmVzKCJjYWRlbmNlX3FzcGkiLCBpZCwgcmVzLCAy LCBwZGF0YSk7Ci19Ci0KLXN0YXRpYyBfX21heWJlX3VudXNlZCB2b2lkIHNvY2ZwZ2FfcXNwaV9p bml0KHZvaWQpCi17Ci0JY2xrc1txc3BpX2Nsa10gPSBjbGtfZml4ZWQoInFzcGlfY2xrIiwgMzcw MDAwMDAwKTsKLQljbGtkZXZfYWRkX3BoeXNiYXNlKGNsa3NbcXNwaV9jbGtdLCBDWUNMT05FNV9R U1BJX0NUUkxfQUREUkVTUywgTlVMTCk7Ci0JY2xrZGV2X2FkZF9waHlzYmFzZShjbGtzW3FzcGlf Y2xrXSwgQ1lDTE9ORTVfUVNQSV9EQVRBX0FERFJFU1MsIE5VTEwpOwotCWFkZF9jYWRlbmNlX3Fz cGlfZGV2aWNlKDAsIENZQ0xPTkU1X1FTUElfQ1RSTF9BRERSRVNTLAotCQkJCUNZQ0xPTkU1X1FT UElfREFUQV9BRERSRVNTLCAmcXNwaV9wZGF0YSk7Ci19Ci0jZWxzZQotc3RhdGljIHZvaWQgc29j ZnBnYV9xc3BpX2luaXQodm9pZCkKLXsKLQlyZXR1cm47Ci19Ci0jZW5kaWYKLQotc3RhdGljIHN0 cnVjdCBOUzE2NTUwX3BsYXQgdWFydF9wZGF0YSA9IHsKLQkuY2xvY2sgPSAxMDAwMDAwMDAsCi0J LnNoaWZ0ID0gMiwKLX07Ci0KLXN0YXRpYyB2b2lkIHNvY2ZwZ2FfdWFydF9pbml0KHZvaWQpCi17 Ci0JY2xrc1t1YXJ0XSA9IGNsa19maXhlZCgidWFydCIsIDEwMDAwMDAwMCk7Ci0JY2xrZGV2X2Fk ZF9waHlzYmFzZShjbGtzW3VhcnRdLCBDWUNMT05FNV9VQVJUMF9BRERSRVNTLCBOVUxMKTsKLQlj bGtkZXZfYWRkX3BoeXNiYXNlKGNsa3NbdWFydF0sIENZQ0xPTkU1X1VBUlQxX0FERFJFU1MsIE5V TEwpOwotCWFkZF9uczE2NTUwX2RldmljZSgwLCAweGZmYzAyMDAwLCAxMDI0LCBJT1JFU09VUkNF X01FTSB8Ci0JCQlJT1JFU09VUkNFX01FTV84QklULCAmdWFydF9wZGF0YSk7Ci19Ci0KLXN0YXRp YyB2b2lkIHNvY2ZwZ2FfdGltZXJfaW5pdCh2b2lkKQotewotCWNsa3NbdGltZXJdID0gY2xrX2Zp eGVkKCJ0aW1lciIsIDIwMDAwMDAwMCk7Ci0JY2xrZGV2X2FkZF9waHlzYmFzZShjbGtzW3RpbWVy XSwgQ1lDTE9ORTVfU01QX1RXRF9BRERSRVNTLCBOVUxMKTsKLQlhZGRfZ2VuZXJpY19kZXZpY2Uo InNtcF90d2QiLCAwLCBOVUxMLCBDWUNMT05FNV9TTVBfVFdEX0FERFJFU1MsIDB4MTAwLAotCQkJ SU9SRVNPVVJDRV9NRU0sIE5VTEwpOwotfQotCiBzdGF0aWMgX19ub3JldHVybiBpbnQgc29jZnBn YV94bG9hZCh2b2lkKQogewogCWVudW0gYm9vdHNvdXJjZSBib290c291cmNlID0gYm9vdHNvdXJj ZV9nZXQoKTsKQEAgLTExNiw3ICszNCw3IEBAIHN0YXRpYyBfX25vcmV0dXJuIGludCBzb2NmcGdh X3hsb2FkKHZvaWQpCiAKIAlzd2l0Y2ggKGJvb3Rzb3VyY2UpIHsKIAljYXNlIEJPT1RTT1VSQ0Vf TU1DOgotCQlzb2NmcGdhX21tY19pbml0KCk7CisJCXNvY2ZwZ2FfY3ljbG9uZTVfbW1jX2luaXQo KTsKIAogCQlmb3IgKHBhcnQgPSBiYXJlYm94X3BhcnRzOyBwYXJ0LT5tbWNfZGlzazsgcGFydCsr KSB7CiAJCQlidWYgPSBib290c3RyYXBfcmVhZF9kaXNrKGJhcmVib3hfcGFydHMtPm1tY19kaXNr LCAiZmF0Iik7CkBAIC0xMzIsOCArNTAsNyBAQCBzdGF0aWMgX19ub3JldHVybiBpbnQgc29jZnBn YV94bG9hZCh2b2lkKQogCQl9CiAJCWJyZWFrOwogCWNhc2UgQk9PVFNPVVJDRV9TUEk6Ci0JCXNv Y2ZwZ2FfcXNwaV9pbml0KCk7Ci0KKwkJc29jZnBnYV9jeWNsb25lNV9xc3BpX2luaXQoKTsKIAkJ Zm9yIChwYXJ0ID0gYmFyZWJveF9wYXJ0czsgcGFydC0+bm9yX3NpemU7IHBhcnQrKykgewogCQkJ YnVmID0gYm9vdHN0cmFwX3JlYWRfZGV2ZnMoIm10ZDAiLCBmYWxzZSwKIAkJCQkJcGFydC0+bm9y X29mZnNldCwgcGFydC0+bm9yX3NpemUsIFNaXzFNKTsKQEAgLTE0Miw3ICs1OSw2IEBAIHN0YXRp YyBfX25vcmV0dXJuIGludCBzb2NmcGdhX3hsb2FkKHZvaWQpCiAJCQkJCXBhcnQtPm5vcl9vZmZz ZXQpOwogCQkJCWNvbnRpbnVlOwogCQkJfQotCiAJCQlicmVhazsKIAkJfQogCkBAIC0xNjcsOCAr ODMsOCBAQCBzdGF0aWMgX19ub3JldHVybiBpbnQgc29jZnBnYV94bG9hZCh2b2lkKQogc3RhdGlj IGludCBzb2NmcGdhX2RldmljZXNfaW5pdCh2b2lkKQogewogCWJhcmVib3hfc2V0X21vZGVsKCJT b0NGUEdBIik7Ci0Jc29jZnBnYV90aW1lcl9pbml0KCk7Ci0Jc29jZnBnYV91YXJ0X2luaXQoKTsK Kwlzb2NmcGdhX2N5Y2xvbmU1X3RpbWVyX2luaXQoKTsKKwlzb2NmcGdhX2N5Y2xvbmU1X3VhcnRf aW5pdCgpOwogCiAJYmFyZWJveF9tYWluID0gc29jZnBnYV94bG9hZDsKIApkaWZmIC0tZ2l0IGEv aW1hZ2VzL01ha2VmaWxlLnNvY2ZwZ2EgYi9pbWFnZXMvTWFrZWZpbGUuc29jZnBnYQppbmRleCAy MTgwNGQ5M2RmNzIuLmQyMTBhNmNjMjMxOCAxMDA2NDQKLS0tIGEvaW1hZ2VzL01ha2VmaWxlLnNv Y2ZwZ2EKKysrIGIvaW1hZ2VzL01ha2VmaWxlLnNvY2ZwZ2EKQEAgLTQsMTEgKzQsMTkgQEAKIAog IyAlLnNvY2ZwZ2FpbWcgLSBjb252ZXJ0IGludG8gc29jZnBnYSBpbWFnZQogIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitp ZmRlZiBDT05GSUdfQVJDSF9TT0NGUEdBX0FSUklBMTAKK3F1aWV0X2NtZF9zb2NmcGdhX2ltYWdl ID0gU09DRlBHQS1JTUcgJEAKKyAgICAgIGNtZF9zb2NmcGdhX2ltYWdlID0gc2NyaXB0cy9zb2Nm cGdhX21raW1hZ2UgLW8gJEAgLWIgLXYxICQ8CisKKyQob2JqKS8lLnNvY2ZwZ2FpbWc6ICQob2Jq KS8lIEZPUkNFCisJJChjYWxsIGlmX2NoYW5nZWQsc29jZnBnYV9pbWFnZSkKK2Vsc2UKIHF1aWV0 X2NtZF9zb2NmcGdhX2ltYWdlID0gU09DRlBHQS1JTUcgJEAKICAgICAgIGNtZF9zb2NmcGdhX2lt YWdlID0gc2NyaXB0cy9zb2NmcGdhX21raW1hZ2UgLW8gJEAgJDwKIAogJChvYmopLyUuc29jZnBn YWltZzogJChvYmopLyUgRk9SQ0UKIAkkKGNhbGwgaWZfY2hhbmdlZCxzb2NmcGdhX2ltYWdlKQor ZW5kaWYKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDeWNsb25lNSBiYXNlZCBib2FyZHMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBwYmx4LSQoQ09ORklHX01BQ0hfU09DRlBHQV9B TFRFUkFfU09DREspICs9IHN0YXJ0X3NvY2ZwZ2Ffc29jZGtfeGxvYWQKZGlmZiAtLWdpdCBhL3Nj cmlwdHMvc29jZnBnYV9ta2ltYWdlLmMgYi9zY3JpcHRzL3NvY2ZwZ2FfbWtpbWFnZS5jCmluZGV4 IGQ3ZmUxYjFiNjlmNy4uMzc2MzA0NGFhY2FiIDEwMDY0NAotLS0gYS9zY3JpcHRzL3NvY2ZwZ2Ff bWtpbWFnZS5jCisrKyBiL3NjcmlwdHMvc29jZnBnYV9ta2ltYWdlLmMKQEAgLTYyLDYgKzYyLDcg QEAgc3RhdGljIHVpbnQzMl90IGJiX2hlYWRlcltdID0gewogCTB4MDAwMDAwMDAsCS8qIHNvY2Zw Z2EgaGVhZGVyICovCiAJMHgwMDAwMDAwMCwJLyogc29jZnBnYSBoZWFkZXIgKi8KIAkweDAwMDAw MDAwLAkvKiBzb2NmcGdhIGhlYWRlciAqLworCTB4MDAwMDAwMDAsCS8qIHNvY2ZwZ2EgaGVhZGVy ICovCiAJMHhlYTAwMDA2YiwJLyogZW50cnkuIGIgMHgyMDAgKG9mZnNldCBtYXkgYmUgYWRqdXN0 ZWQpICovCiB9OwogCmRpZmYgLS1naXQgYS9zY3JpcHRzL3NvY2ZwZ2FfeG1sX3RvX2NvbmZpZy5z aCBiL3NjcmlwdHMvc29jZnBnYV94bWxfdG9fY29uZmlnLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1 CmluZGV4IDAwMDAwMDAwMDAwMC4uMTU0ZGRkYTcyMGY5Ci0tLSAvZGV2L251bGwKKysrIGIvc2Ny aXB0cy9zb2NmcGdhX3htbF90b19jb25maWcuc2gKQEAgLTAsMCArMSw4NiBAQAorIyEvYmluL2Jh c2gKKworIyMgVE9ETzoKKyMjIC0gcmVhZCBpbiBtcHVjbGsgYW5kIG5vY2NsaywgbXVzdCBiZSBj YWxjdWxhdGVkIGJ5IGhhbmQgYXQgdGhlIG1vbWVudAorIyMgLSByZWFkIGluIGNmZ19kZWRpY2F0 ZWRfaW9fKiwgbXVzdCBiZSBjYWxjdWxhdGVkIGJ5IGhhbmQgYXQgdGhlIG1vbWVudAorCitpZiBb ICIkIyIgLWx0ICIyIiBdCit0aGVuCisgICAgZWNobyAiVVNBR0U6ICQwIDxib2FyZGRpcj4gPEhQ Uy54bWw+IgorICAgIGV4aXQgMQorZmkKKworZGlyPSQxCit4bWw9JDIKKworcGxsX2NvbmZpZygp IHsKKyAgICBsb2NhbCBzcmMKKyAgICBsb2NhbCB0Z3QKKyAgICBzcmM9JDEKKyAgICB0Z3Q9JDIK KworICAgIE1BSU5QTEw9YGdyZXAgbWFpbnBsbCAiJHNyYyIgfCBcCisgICAgICAgICBzZWQgLWUg J3MvXi4qbWFpbnBsbGdycFwuLy9nJyB8IFwKKyAgICAgICAgIHNlZCAtZSAncy9cLi9fL2cnIHwg XAorICAgICAgICAgc2VkIC1lICJzLycgdmFsdWUvIC9nIiB8IFwKKyAgICAgICAgIHNlZCAtZSAi cy8nLyAvZyIgfCBcCisgICAgICAgICBzZWQgLWUgInMjICAvPiMsI2ciIHwgXAorICAgICAgICAg c2VkIC1lICJzL14vLi9nImAKKworICAgIFBFUlBMTD1gZ3JlcCBwZXJwbGwgIiRzcmMiIHwgXAor ICAgICAgICBzZWQgLWUgJ3MvXi4qcGVycGxsZ3JwXC4vL2cnIHwgXAorICAgICAgICBzZWQgLWUg J3MvXC4vXy9nJyB8IFwKKyAgICAgICAgc2VkIC1lICJzLycgdmFsdWUvIC9nIiB8IFwKKyAgICAg ICAgc2VkIC1lICJzLycvIC9nIiB8IFwKKyAgICAgICAgc2VkIC1lICJzIyAgLz4jLCNnIiB8IFwK KyAgICAgICAgc2VkIC1lICJzL14vLi9nImAKKworICAgIGVjaG8gIiNpbmNsdWRlIDxtYWNoL2Ns b2NrLW1hbmFnZXItYXJyaWExMC5oPiIgPiAkdGd0CisgICAgZWNobyA+PiAkdGd0CisgICAgZWNo byAic3RhdGljIHN0cnVjdCBhcnJpYTEwX21haW5wbGxfY2ZnIG1haW5wbGxfY2ZnID0geyIgPj4g JHRndAorICAgIGVjaG8gIiRNQUlOUExMIiA+PiAkdGd0CisgICAgZWNobyAifTsiID4+ICR0Z3QK KyAgICBlY2hvID4+ICR0Z3QKKyAgICBlY2hvICJzdGF0aWMgc3RydWN0IGFycmlhMTBfcGVycGxs X2NmZyBwZXJwbGxfY2ZnID0geyIgPj4gJHRndAorICAgIGVjaG8gIiRQRVJQTEwiID4+ICR0Z3QK KyAgICBlY2hvICJ9OyIgPj4gJHRndAorCisgICAgZG9zMnVuaXggJHRndAorfQorCitwaW5tdXhf Y29uZmlnKCkgeworICAgIGxvY2FsIHNyYworICAgIGxvY2FsIHRndAorICAgIHNyYz0kMQorICAg IHRndD0kMgorCisgICAgU0hBUkVEPWBncmVwIHBpbm11eF9zaGFyZWQgIiRzcmMiIHwgXAorICAg ICAgICAgICAgc2VkIC1lICdzL14uKnBpbm11eF8vXC4vZycgfCBcCisgICAgICAgICAgICBzZWQg LWUgInMvXC5zZWwnIHZhbHVlPScvPS9nIiB8IFwKKyAgICAgICAgICAgIHNlZCAtZSAicy8nIFwv Pi8sL2ciYAorCisgICAgREVESUNBVEVEPWBncmVwIHBpbm11eF9kZWRpY2F0ZWQgIiRzcmMiIHwg XAorICAgICAgICAgICAgc2VkIC1lICdzL14uKnBpbm11eF8vXC4vZycgfCBcCisgICAgICAgICAg ICBzZWQgLWUgInMvXC5zZWwnIHZhbHVlPScvPS9nIiB8IFwKKyAgICAgICAgICAgIHNlZCAtZSAi cy8nIFwvPi8sL2ciYAorCisgICAgRlBHQT1gZ3JlcCBfZnBnYV9pbnRlcmZhY2VfICIkc3JjIiB8 IFwKKyAgICAgICAgICAgIHNlZCAtZSAncy9eLipwaW5tdXhfL1wuL2cnIHwgXAorICAgICAgICAg ICAgc2VkIC1lICJzL1wuc2VsJyB2YWx1ZT0nLz0vZyIgfCBcCisgICAgICAgICAgICBzZWQgLWUg InMvJyBcLz4vLC9nImAKKworICAgIGVjaG8gIiNpbmNsdWRlIDxtYWNoL2FycmlhMTAtcGlubXV4 Lmg+IiA+ICR0Z3QKKyAgICBlY2hvID4+ICR0Z3QKKyAgICBlY2hvICJzdGF0aWMgc3RydWN0IGFy cmlhMTBfcGlubXV4X2NmZyBwaW5tdXggPSB7IiA+PiAkdGd0CisgICAgZWNobyAiJFNIQVJFRCIg Pj4gJHRndAorICAgIGVjaG8gIiRERURJQ0FURUQiID4+ICR0Z3QKKyAgICBlY2hvICIkRlBHQSIg Pj4gJHRndAorICAgIGVjaG8gIn07IiA+PiAkdGd0CisgICAgZWNobyA+PiAkdGd0CisKKyAgICBk b3MydW5peCAkdGd0Cit9CisKK3BsbF9jb25maWcgJHhtbCAkZGlyL3BsbC1jb25maWctYXJyaWEx MC5jCisKK3Bpbm11eF9jb25maWcgJHhtbCAkZGlyL3Bpbm11eC1jb25maWctYXJyaWExMC5jCi0t IAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpiYXJlYm94IG1haWxpbmcgbGlzdApiYXJlYm94QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9iYXJlYm94Cg==