From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 13/16] drm/i915: Replace hangcheck by heartbeats Date: Mon, 21 Oct 2019 09:02:23 +0100 Message-ID: <20191021080226.537-13-chris@chris-wilson.co.uk> References: <20191021080226.537-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2BCE889B20 for ; Mon, 21 Oct 2019 08:02:45 +0000 (UTC) In-Reply-To: <20191021080226.537-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UmVwbGFjZSBzYW1wbGluZyB0aGUgZW5naW5lIHN0YXRlIGV2ZXJ5IHNvIG9mdGVuIHdpdGggYSBw ZXJpb2RpYwpoZWFydGJlYXQgcmVxdWVzdCB0byBtZWFzdXJlIHRoZSBoZWFsdGggb2YgYW4gZW5n aW5lLiBUaGlzIGlzIGNvdXBsZWQKd2l0aCB0aGUgZm9yY2VkLXByZWVtcHRpb24gdG8gYWxsb3cg bG9uZyBydW5uaW5nIHJlcXVlc3RzIHRvIHN1cnZpdmUgc28KbG9uZyBhcyB0aGV5IGRvIG5vdCBi bG9jayBvdGhlciB1c2Vycy4KClRoZSBoZWFydGJlYXQgaW50ZXJ2YWwgY2FuIGJlIGFkanVzdGVk IHBlci1lbmdpbmUgdXNpbmcsCgoJL3N5cy9jbGFzcy9kcm0vY2FyZD8vZW5naW5lLyovaGVhcnRi ZWF0X2ludGVydmFsX21zCgp2MjogQ291cGxlIGluIHN5c2ZzIGNvbnRyb2xzCgpTaWduZWQtb2Zm LWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IEpvb25hcyBM YWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KQ2M6IFR2cnRrbyBVcnN1 bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBKb24gQmxvb21maWVsZCA8am9uLmJs b29tZmllbGRAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogSm9uIEJsb29tZmllbGQgPGpvbi5ibG9v bWZpZWxkQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJz dWxpbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy5wcm9maWxl ICAgICAgICAgIHwgIDE0ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAg ICAgICAgICB8ICAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXkuYyAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3Qu aCAgICB8ICAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcG0uYyAgICAg ICAgfCAgIDIgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmggICAgICAg IHwgIDMyIC0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyAgICAg fCAgMTIgKy0KIC4uLi9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jICB8 IDE2MSArKysrKysrKwogLi4uL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0 LmggIHwgICA4ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jICAg ICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3N5c2ZzLmMg IHwgIDM4ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaCAg fCAgMTcgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMgICAgICAgICAgICB8 ICAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5oICAgICAgICAgICAgfCAg IDQgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYyAgICAgICAgIHwgICAx IC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmggICAgICB8ICAgOSAt CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9oYW5nY2hlY2suYyAgICAgfCAzNjEgLS0t LS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jICAg ICAgICAgfCAgIDMgKy0KIC4uLi9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfaGVhcnRiZWF0 LmMgICB8IDE5OCArKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9o YW5nY2hlY2suYyAgfCAgIDQgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMg ICAgICAgICAgIHwgIDg3IC0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAg ICAgICAgICAgICAgfCAgIDMgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAg ICAgICAgICAgIHwgICAxIC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMg ICAgICAgICB8ICAzMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuaCAg ICAgICAgIHwgICAyIC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcHJpb2xpc3RfdHlwZXMu aCAgICB8ICAgNiArCiAuLi4vZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMu aCAgfCAgIDEgKwogMjcgZmlsZXMgY2hhbmdlZCwgNDUyIGluc2VydGlvbnMoKyksIDU1NSBkZWxl dGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9oYW5nY2hlY2suYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3NlbGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L0tjb25maWcucHJvZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcucHJv ZmlsZQppbmRleCAwMGJkMzdhYTg4ZDMuLjFiYjM5NzBhYTNhYyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvS2NvbmZpZy5wcm9maWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L0tjb25maWcucHJvZmlsZQpAQCAtNTgsMyArNTgsMTcgQEAgY29uZmlnIERSTV9JOTE1X1BSRUVN UFRfVElNRU9VVAogCSAgL3N5cy9jbGFzcy9kcm0vY2FyZD8vZW5naW5lLyovcHJlZW1wdF90aW1l b3V0X21zCiAKIAkgIE1heSBiZSAwIHRvIGRpc2FibGUgdGhlIHRpbWVvdXQuCisKK2NvbmZpZyBE Uk1fSTkxNV9IRUFSVEJFQVRfSU5URVJWQUwKKwlpbnQgIkludGVydmFsIGJldHdlZW4gaGVhcnRi ZWF0IHB1bHNlcyAobXMpIgorCWRlZmF1bHQgMjUwMCAjIG1pbGxpc2Vjb25kcworCWhlbHAKKwkg IFRoZSBkcml2ZXIgc2VuZHMgYSBwZXJpb2RpYyBoZWFydGJlYXQgZG93biBhbGwgYWN0aXZlIGVu Z2luZXMgdG8KKwkgIGNoZWNrIHRoZSBoZWFsdGggb2YgdGhlIEdQVSBhbmQgdW5kZXJ0YWtlIHJl Z3VsYXIgaG91c2Uta2VlcGluZyBvZgorCSAgaW50ZXJuYWwgZHJpdmVyIHN0YXRlLgorCisJICBU aGlzIGlzIGFkanVzdGFibGUgdmlhCisJICAvc3lzL2NsYXNzL2RybS9jYXJkPy9lbmdpbmUvKi9o ZWFydGJlYXRfaW50ZXJ2YWxfbXMKKworCSAgTWF5IGJlIDAgdG8gZGlzYWJsZSBoZWFydGJlYXRz IGFuZCB0aGVyZWZvcmUgZGlzYWJsZSBhdXRvbWF0aWMgR1BVCisJICBoYW5nIGRldGVjdGlvbi4K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggOWIzMjY4MDM4NTM1Li5hOTFlMGE0ODdhNzkgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlCkBAIC04OCw3ICs4OCw2IEBAIGd0LXkgKz0gXAogCWd0L2ludGVsX2d0 X3BtLm8gXAogCWd0L2ludGVsX2d0X3BtX2lycS5vIFwKIAlndC9pbnRlbF9ndF9yZXF1ZXN0cy5v IFwKLQlndC9pbnRlbF9oYW5nY2hlY2subyBcCiAJZ3QvaW50ZWxfbGxjLm8gXAogCWd0L2ludGVs X2xyYy5vIFwKIAlndC9pbnRlbF9yYzYubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheS5jCmluZGV4IDI5MTJhYmQ4NTE0OC4uODlhNDdkMWZlMzY0IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTQ4NjMs NyArMTQ4NjMsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wbGFuZV91bnBpbl9mYihzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSkKIHN0YXRpYyB2b2lkIGZiX29ial9idW1w X3JlbmRlcl9wcmlvcml0eShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXN0 cnVjdCBpOTE1X3NjaGVkX2F0dHIgYXR0ciA9IHsKLQkJLnByaW9yaXR5ID0gSTkxNV9QUklPUklU WV9ESVNQTEFZLAorCQkucHJpb3JpdHkgPSBJOTE1X1VTRVJfUFJJT1JJVFkoSTkxNV9QUklPUklU WV9ESVNQTEFZKSwKIAl9OwogCiAJaTkxNV9nZW1fb2JqZWN0X3dhaXRfcHJpb3JpdHkob2JqLCAw LCAmYXR0cik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f b2JqZWN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgKaW5k ZXggODU5MjE3OTY4NTFmLi4xMTdkNTQxY2EwZTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fb2JqZWN0LmgKQEAgLTQ2MSw2ICs0NjEsNSBAQCBpbnQgaTkxNV9nZW1fb2Jq ZWN0X3dhaXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIGludCBpOTE1X2dlbV9v YmplY3Rfd2FpdF9wcmlvcml0eShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJ CSAgdW5zaWduZWQgaW50IGZsYWdzLAogCQkJCSAgY29uc3Qgc3RydWN0IGk5MTVfc2NoZWRfYXR0 ciAqYXR0cik7Ci0jZGVmaW5lIEk5MTVfUFJJT1JJVFlfRElTUExBWSBJOTE1X1VTRVJfUFJJT1JJ VFkoSTkxNV9QUklPUklUWV9NQVgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fcG0uYwppbmRleCA3OTg3YjU0ZmIxZjUuLjBlOTc1MjBjYjFiYiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMKQEAgLTEwMCw4ICsxMDAsNiBAQCB2b2lkIGk5MTVf Z2VtX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJaW50ZWxfZ3Rfc3Vz cGVuZCgmaTkxNS0+Z3QpOwogCWludGVsX3VjX3N1c3BlbmQoJmk5MTUtPmd0LnVjKTsKIAotCWNh bmNlbF9kZWxheWVkX3dvcmtfc3luYygmaTkxNS0+Z3QuaGFuZ2NoZWNrLndvcmspOwotCiAJaTkx NV9nZW1fZHJhaW5fZnJlZWRfb2JqZWN0cyhpOTE1KTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9lbmdpbmUuaAppbmRleCBlZjRiOGZkYzBhMjQuLjg4NDk4NDUyYjA4NiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgKQEAgLTg5LDM4ICs4OSw2IEBAIHN0cnVj dCBkcm1fcHJpbnRlcjsKIC8qIHNlcW5vIHNpemUgaXMgYWN0dWFsbHkgb25seSBhIHVpbnQzMiwg YnV0IHNpbmNlIHdlIHBsYW4gdG8gdXNlIE1JX0ZMVVNIX0RXIHRvCiAgKiBkbyB0aGUgd3JpdGVz LCBhbmQgdGhhdCBtdXN0IGhhdmUgcXcgYWxpZ25lZCBvZmZzZXRzLCBzaW1wbHkgcHJldGVuZCBp dCdzIDhiLgogICovCi1lbnVtIGludGVsX2VuZ2luZV9oYW5nY2hlY2tfYWN0aW9uIHsKLQlFTkdJ TkVfSURMRSA9IDAsCi0JRU5HSU5FX1dBSVQsCi0JRU5HSU5FX0FDVElWRV9TRVFOTywKLQlFTkdJ TkVfQUNUSVZFX0hFQUQsCi0JRU5HSU5FX0FDVElWRV9TVUJVTklUUywKLQlFTkdJTkVfV0FJVF9L SUNLLAotCUVOR0lORV9ERUFELAotfTsKLQotc3RhdGljIGlubGluZSBjb25zdCBjaGFyICoKLWhh bmdjaGVja19hY3Rpb25fdG9fc3RyKGNvbnN0IGVudW0gaW50ZWxfZW5naW5lX2hhbmdjaGVja19h Y3Rpb24gYSkKLXsKLQlzd2l0Y2ggKGEpIHsKLQljYXNlIEVOR0lORV9JRExFOgotCQlyZXR1cm4g ImlkbGUiOwotCWNhc2UgRU5HSU5FX1dBSVQ6Ci0JCXJldHVybiAid2FpdCI7Ci0JY2FzZSBFTkdJ TkVfQUNUSVZFX1NFUU5POgotCQlyZXR1cm4gImFjdGl2ZSBzZXFubyI7Ci0JY2FzZSBFTkdJTkVf QUNUSVZFX0hFQUQ6Ci0JCXJldHVybiAiYWN0aXZlIGhlYWQiOwotCWNhc2UgRU5HSU5FX0FDVElW RV9TVUJVTklUUzoKLQkJcmV0dXJuICJhY3RpdmUgc3VidW5pdHMiOwotCWNhc2UgRU5HSU5FX1dB SVRfS0lDSzoKLQkJcmV0dXJuICJ3YWl0IGtpY2siOwotCWNhc2UgRU5HSU5FX0RFQUQ6Ci0JCXJl dHVybiAiZGVhZCI7Ci0JfQotCi0JcmV0dXJuICJ1bmtub3duIjsKLX0KIAogc3RhdGljIGlubGlu ZSB1bnNpZ25lZCBpbnQKIGV4ZWNsaXN0c19udW1fcG9ydHMoY29uc3Qgc3RydWN0IGludGVsX2Vu Z2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IDdlOGQzY2MyNDU5Yy4uNDgxNzNhZThhZDgzIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwpAQCAtMzEwLDYgKzMxMCw4 IEBAIHN0YXRpYyBpbnQgaW50ZWxfZW5naW5lX3NldHVwKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIGVu dW0gaW50ZWxfZW5naW5lX2lkIGlkKQogCiAJZW5naW5lLT5wcm9wcy5wcmVlbXB0X3RpbWVvdXRf bXMgPQogCQlDT05GSUdfRFJNX0k5MTVfUFJFRU1QVF9USU1FT1VUOworCWVuZ2luZS0+cHJvcHMu aGVhcnRiZWF0X2ludGVydmFsX21zID0KKwkJQ09ORklHX0RSTV9JOTE1X0hFQVJUQkVBVF9JTlRF UlZBTDsKIAllbmdpbmUtPnByb3BzLnRpbWVzbGljZV9kdXJhdGlvbl9tcyA9CiAJCUNPTkZJR19E Uk1fSTkxNV9USU1FU0xJQ0VfRFVSQVRJT047CiAKQEAgLTYwNyw3ICs2MDksNiBAQCBzdGF0aWMg aW50IGludGVsX2VuZ2luZV9zZXR1cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQogCWludGVsX2VuZ2luZV9pbml0X2FjdGl2ZShlbmdpbmUsIEVOR0lORV9QSFlTSUNBTCk7 CiAJaW50ZWxfZW5naW5lX2luaXRfYnJlYWRjcnVtYnMoZW5naW5lKTsKIAlpbnRlbF9lbmdpbmVf aW5pdF9leGVjbGlzdHMoZW5naW5lKTsKLQlpbnRlbF9lbmdpbmVfaW5pdF9oYW5nY2hlY2soZW5n aW5lKTsKIAlpbnRlbF9lbmdpbmVfaW5pdF9jbWRfcGFyc2VyKGVuZ2luZSk7CiAJaW50ZWxfZW5n aW5lX2luaXRfX3BtKGVuZ2luZSk7CiAKQEAgLTE0NTMsOCArMTQ1NCwxMyBAQCB2b2lkIGludGVs X2VuZ2luZV9kdW1wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJZHJtX3ByaW50 ZihtLCAiKioqIFdFREdFRCAqKipcbiIpOwogCiAJZHJtX3ByaW50ZihtLCAiXHRBd2FrZT8gJWRc biIsIGF0b21pY19yZWFkKCZlbmdpbmUtPndha2VyZWYuY291bnQpKTsKLQlkcm1fcHJpbnRmKG0s ICJcdEhhbmdjaGVjazogJWQgbXMgYWdvXG4iLAotCQkgICBqaWZmaWVzX3RvX21zZWNzKGppZmZp ZXMgLSBlbmdpbmUtPmhhbmdjaGVjay5hY3Rpb25fdGltZXN0YW1wKSk7CisKKwlyY3VfcmVhZF9s b2NrKCk7CisJcnEgPSBSRUFEX09OQ0UoZW5naW5lLT5oZWFydGJlYXQuc3lzdG9sZSk7CisJaWYg KHJxKQorCQlkcm1fcHJpbnRmKG0sICJcdEhlYXJ0YmVhdDogJWQgbXMgYWdvXG4iLAorCQkJICAg amlmZmllc190b19tc2VjcyhqaWZmaWVzIC0gcnEtPmVtaXR0ZWRfamlmZmllcykpOworCXJjdV9y ZWFkX3VubG9jaygpOwogCWRybV9wcmludGYobSwgIlx0UmVzZXQgY291bnQ6ICVkIChnbG9iYWwg JWQpXG4iLAogCQkgICBpOTE1X3Jlc2V0X2VuZ2luZV9jb3VudChlcnJvciwgZW5naW5lKSwKIAkJ ICAgaTkxNV9yZXNldF9jb3VudChlcnJvcikpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jCmluZGV4IDJmYzQxM2Y5ZDUwNi4uNWJkNmI4M2Q2 NzlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVh cnRiZWF0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0 YmVhdC5jCkBAIC0xMSw2ICsxMSwzMCBAQAogI2luY2x1ZGUgImludGVsX2VuZ2luZV9wbS5oIgog I2luY2x1ZGUgImludGVsX2VuZ2luZS5oIgogI2luY2x1ZGUgImludGVsX2d0LmgiCisjaW5jbHVk ZSAiaW50ZWxfcmVzZXQuaCIKKworLyoKKyAqIFdoaWxlIHRoZSBlbmdpbmUgaXMgYWN0aXZlLCB3 ZSBzZW5kIGEgcGVyaW9kaWMgcHVsc2UgYWxvbmcgdGhlIGVuZ2luZQorICogdG8gY2hlY2sgb24g aXRzIGhlYWx0aCBhbmQgdG8gZmx1c2ggYW55IGlkbGUtYmFycmllcnMuIElmIHRoYXQgcmVxdWVz dAorICogaXMgc3R1Y2ssIGFuZCB3ZSBmYWlsIHRvIHByZWVtcHQgaXQsIHdlIGRlY2xhcmUgdGhl IGVuZ2luZSBodW5nIGFuZAorICogaXNzdWUgYSByZXNldCAtLSBpbiB0aGUgaG9wZSB0aGF0IHJl c3RvcmVzIHByb2dyZXNzLgorICovCisKK3N0YXRpYyBib29sIG5leHRfaGVhcnRiZWF0KHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlsb25nIGRlbGF5OworCisJZGVsYXkgPSBS RUFEX09OQ0UoZW5naW5lLT5wcm9wcy5oZWFydGJlYXRfaW50ZXJ2YWxfbXMpOworCWlmICghZGVs YXkpCisJCXJldHVybiBmYWxzZTsKKworCWRlbGF5ID0gbXNlY3NfdG9famlmZmllc190aW1lb3V0 KGRlbGF5KTsKKwlpZiAoZGVsYXkgPj0gSFopCisJCWRlbGF5ID0gcm91bmRfamlmZmllc191cF9y ZWxhdGl2ZShkZWxheSk7CisJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZlbmdpbmUtPmhlYXJ0YmVh dC53b3JrLCBkZWxheSk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KIAogc3RhdGljIHZvaWQgaWRsZV9w dWxzZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxKQogewpAQCAtMTgsNiArNDIsMTM5IEBAIHN0YXRpYyB2b2lkIGlkbGVfcHVsc2Uoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAlpOTE1 X3JlcXVlc3RfYWRkX2FjdGl2ZV9iYXJyaWVycyhycSk7CiB9CiAKK3N0YXRpYyB2b2lkIHNob3df aGVhcnRiZWF0KGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAorCQkJICAgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBkcm1fcHJpbnRlciBwID0gZHJtX2Rl YnVnX3ByaW50ZXIoImhlYXJ0YmVhdCIpOworCisJaW50ZWxfZW5naW5lX2R1bXAoZW5naW5lLCAm cCwKKwkJCSAgIiVzIGhlYXJ0YmVhdCB7cHJpbzolZH0gbm90IHRpY2tpbmdcbiIsCisJCQkgIGVu Z2luZS0+bmFtZSwKKwkJCSAgcnEtPnNjaGVkLmF0dHIucHJpb3JpdHkpOworfQorCitzdGF0aWMg dm9pZCBoZWFydGJlYXQoc3RydWN0IHdvcmtfc3RydWN0ICp3cmspCit7CisJc3RydWN0IGk5MTVf c2NoZWRfYXR0ciBhdHRyID0geworCQkucHJpb3JpdHkgPSBJOTE1X1VTRVJfUFJJT1JJVFkoSTkx NV9QUklPUklUWV9NSU4pLAorCX07CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0K KwkJY29udGFpbmVyX29mKHdyaywgdHlwZW9mKCplbmdpbmUpLCBoZWFydGJlYXQud29yay53b3Jr KTsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBlbmdpbmUtPmtlcm5lbF9jb250ZXh0Owor CXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCisJaWYgKCFpbnRlbF9lbmdpbmVfcG1fZ2V0X2lm X2F3YWtlKGVuZ2luZSkpCisJCXJldHVybjsKKworCXJxID0gZW5naW5lLT5oZWFydGJlYXQuc3lz dG9sZTsKKwlpZiAocnEgJiYgaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpIHsKKwkJaTkxNV9y ZXF1ZXN0X3B1dChycSk7CisJCWVuZ2luZS0+aGVhcnRiZWF0LnN5c3RvbGUgPSBOVUxMOworCX0K KworCWlmIChpbnRlbF9ndF9pc193ZWRnZWQoZW5naW5lLT5ndCkpCisJCWdvdG8gb3V0OworCisJ aWYgKGVuZ2luZS0+aGVhcnRiZWF0LnN5c3RvbGUpIHsKKwkJaWYgKGVuZ2luZS0+c2NoZWR1bGUg JiYKKwkJICAgIHJxLT5zY2hlZC5hdHRyLnByaW9yaXR5IDwgSTkxNV9QUklPUklUWV9CQVJSSUVS KSB7CisJCQkvKgorCQkJICogR3JhZHVhbGx5IHJhaXNlIHRoZSBwcmlvcml0eSBvZiB0aGUgaGVh cnRiZWF0IHRvCisJCQkgKiBnaXZlIGhpZ2ggcHJpb3JpdHkgd29yayBbd2hpY2ggcHJlc3VtYWJs eSBkZXNpcmVzCisJCQkgKiBsb3cgbGF0ZW5jeSBhbmQgbm8gaml0dGVyXSB0aGUgY2hhbmNlIHRv IG5hdHVyYWxseQorCQkJICogY29tcGxldGUgYmVmb3JlIGJlaW5nIHByZWVtcHRlZC4KKwkJCSAq LworCQkJYXR0ci5wcmlvcml0eSA9IEk5MTVfUFJJT1JJVFlfTUFTSzsKKwkJCWlmIChycS0+c2No ZWQuYXR0ci5wcmlvcml0eSA+PSBhdHRyLnByaW9yaXR5KQorCQkJCWF0dHIucHJpb3JpdHkgfD0g STkxNV9VU0VSX1BSSU9SSVRZKEk5MTVfUFJJT1JJVFlfSEVBUlRCRUFUKTsKKwkJCWlmIChycS0+ c2NoZWQuYXR0ci5wcmlvcml0eSA+PSBhdHRyLnByaW9yaXR5KQorCQkJCWF0dHIucHJpb3JpdHkg PSBJOTE1X1BSSU9SSVRZX0JBUlJJRVI7CisKKwkJCWxvY2FsX2JoX2Rpc2FibGUoKTsKKwkJCWVu Z2luZS0+c2NoZWR1bGUocnEsICZhdHRyKTsKKwkJCWxvY2FsX2JoX2VuYWJsZSgpOworCQl9IGVs c2UgeworCQkJaWYgKElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkpCisJCQkJ c2hvd19oZWFydGJlYXQocnEsIGVuZ2luZSk7CisKKwkJCWludGVsX2d0X2hhbmRsZV9lcnJvcihl bmdpbmUtPmd0LCBlbmdpbmUtPm1hc2ssCisJCQkJCSAgICAgIEk5MTVfRVJST1JfQ0FQVFVSRSwK KwkJCQkJICAgICAgInN0b3BwZWQgaGVhcnRiZWF0IG9uICVzIiwKKwkJCQkJICAgICAgZW5naW5l LT5uYW1lKTsKKwkJfQorCQlnb3RvIG91dDsKKwl9CisKKwlpZiAoZW5naW5lLT53YWtlcmVmX3Nl cmlhbCA9PSBlbmdpbmUtPnNlcmlhbCkKKwkJZ290byBvdXQ7CisKKwltdXRleF9sb2NrKCZjZS0+ dGltZWxpbmUtPm11dGV4KTsKKworCWludGVsX2NvbnRleHRfZW50ZXIoY2UpOworCXJxID0gX19p OTE1X3JlcXVlc3RfY3JlYXRlKGNlLCBHRlBfTk9XQUlUIHwgX19HRlBfTk9XQVJOKTsKKwlpbnRl bF9jb250ZXh0X2V4aXQoY2UpOworCWlmIChJU19FUlIocnEpKQorCQlnb3RvIHVubG9jazsKKwor CWlkbGVfcHVsc2UoZW5naW5lLCBycSk7CisJaWYgKGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9oYW5n Y2hlY2spCisJCWVuZ2luZS0+aGVhcnRiZWF0LnN5c3RvbGUgPSBpOTE1X3JlcXVlc3RfZ2V0KHJx KTsKKworCV9faTkxNV9yZXF1ZXN0X2NvbW1pdChycSk7CisJX19pOTE1X3JlcXVlc3RfcXVldWUo cnEsICZhdHRyKTsKKwordW5sb2NrOgorCW11dGV4X3VubG9jaygmY2UtPnRpbWVsaW5lLT5tdXRl eCk7CitvdXQ6CisJaWYgKCFuZXh0X2hlYXJ0YmVhdChlbmdpbmUpKQorCQlpOTE1X3JlcXVlc3Rf cHV0KGZldGNoX2FuZF96ZXJvKCZlbmdpbmUtPmhlYXJ0YmVhdC5zeXN0b2xlKSk7CisJaW50ZWxf ZW5naW5lX3BtX3B1dChlbmdpbmUpOworfQorCit2b2lkIGludGVsX2VuZ2luZV91bnBhcmtfaGVh cnRiZWF0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlpZiAoIUNPTkZJR19E Uk1fSTkxNV9IRUFSVEJFQVRfSU5URVJWQUwpCisJCXJldHVybjsKKworCW5leHRfaGVhcnRiZWF0 KGVuZ2luZSk7Cit9CisKK3ZvaWQgaW50ZWxfZW5naW5lX3BhcmtfaGVhcnRiZWF0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwljYW5jZWxfZGVsYXllZF93b3JrKCZlbmdpbmUt PmhlYXJ0YmVhdC53b3JrKTsKKwlpOTE1X3JlcXVlc3RfcHV0KGZldGNoX2FuZF96ZXJvKCZlbmdp bmUtPmhlYXJ0YmVhdC5zeXN0b2xlKSk7Cit9CisKK3ZvaWQgaW50ZWxfZW5naW5lX2luaXRfaGVh cnRiZWF0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlJTklUX0RFTEFZRURf V09SSygmZW5naW5lLT5oZWFydGJlYXQud29yaywgaGVhcnRiZWF0KTsKK30KKworaW50IGludGVs X2VuZ2luZV9zZXRfaGVhcnRiZWF0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJ CSAgICAgICB1bnNpZ25lZCBsb25nIGRlbGF5KQoreworCWludCBlcnI7CisKKwkvKiBTZW5kIG9u ZSBsYXN0IHB1bHNlIGJlZm9yZSB0byBjbGVhbnVwIHBlcnNpc3RlbnQgaG9ncyAqLworCWlmICgh ZGVsYXkgJiYgQ09ORklHX0RSTV9JOTE1X1BSRUVNUFRfVElNRU9VVCkgeworCQllcnIgPSBpbnRl bF9lbmdpbmVfcHVsc2UoZW5naW5lKTsKKwkJaWYgKGVycikKKwkJCXJldHVybiBlcnI7CisJfQor CisJV1JJVEVfT05DRShlbmdpbmUtPnByb3BzLmhlYXJ0YmVhdF9pbnRlcnZhbF9tcywgZGVsYXkp OworCisJaWYgKGludGVsX2VuZ2luZV9wbV9nZXRfaWZfYXdha2UoZW5naW5lKSkgeworCQlpZiAo ZGVsYXkpCisJCQlpbnRlbF9lbmdpbmVfdW5wYXJrX2hlYXJ0YmVhdChlbmdpbmUpOworCQllbHNl CisJCQlpbnRlbF9lbmdpbmVfcGFya19oZWFydGJlYXQoZW5naW5lKTsKKwkJaW50ZWxfZW5naW5l X3BtX3B1dChlbmdpbmUpOworCX0KKworCXJldHVybiAwOworfQorCiBpbnQgaW50ZWxfZW5naW5l X3B1bHNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgaTkxNV9z Y2hlZF9hdHRyIGF0dHIgPSB7IC5wcmlvcml0eSA9IEk5MTVfUFJJT1JJVFlfQkFSUklFUiB9OwpA QCAtNTQsMyArMjExLDcgQEAgaW50IGludGVsX2VuZ2luZV9wdWxzZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCiAJaW50ZWxfZW5naW5lX3BtX3B1dChlbmdpbmUpOwogCXJldHVybiBl cnI7CiB9CisKKyNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKKyNpbmNs dWRlICJzZWxmdGVzdF9lbmdpbmVfaGVhcnRiZWF0LmMiCisjZW5kaWYKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuaAppbmRleCBiOTUwNDUxYjU5 OTguLmJhODViOGMyZDgyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZW5naW5lX2hlYXJ0YmVhdC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2VuZ2luZV9oZWFydGJlYXQuaApAQCAtOSw2ICs5LDE0IEBACiAKIHN0cnVjdCBpbnRlbF9lbmdp bmVfY3M7CiAKK3ZvaWQgaW50ZWxfZW5naW5lX2luaXRfaGVhcnRiZWF0KHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSk7CisKK2ludCBpbnRlbF9lbmdpbmVfc2V0X2hlYXJ0YmVhdChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkgICAgICAgdW5zaWduZWQgbG9uZyBkZWxh eSk7CisKK3ZvaWQgaW50ZWxfZW5naW5lX3BhcmtfaGVhcnRiZWF0KHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSk7Cit2b2lkIGludGVsX2VuZ2luZV91bnBhcmtfaGVhcnRiZWF0KHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CisKIGludCBpbnRlbF9lbmdpbmVfcHVsc2Uoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIAogI2VuZGlmIC8qIElOVEVMX0VOR0lORV9I RUFSVEJFQVRfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYwpp bmRleCA3ZDc2NjExZDlkZjEuLjZmYmZhMjE2MmU1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZW5naW5lX3BtLmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAiaTkxNV9kcnYu aCIKIAogI2luY2x1ZGUgImludGVsX2VuZ2luZS5oIgorI2luY2x1ZGUgImludGVsX2VuZ2luZV9o ZWFydGJlYXQuaCIKICNpbmNsdWRlICJpbnRlbF9lbmdpbmVfcG0uaCIKICNpbmNsdWRlICJpbnRl bF9lbmdpbmVfcG9vbC5oIgogI2luY2x1ZGUgImludGVsX2d0LmgiCkBAIC0zNCw3ICszNSw3IEBA IHN0YXRpYyBpbnQgX19lbmdpbmVfdW5wYXJrKHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikKIAlp ZiAoZW5naW5lLT51bnBhcmspCiAJCWVuZ2luZS0+dW5wYXJrKGVuZ2luZSk7CiAKLQlpbnRlbF9l bmdpbmVfaW5pdF9oYW5nY2hlY2soZW5naW5lKTsKKwlpbnRlbF9lbmdpbmVfdW5wYXJrX2hlYXJ0 YmVhdChlbmdpbmUpOwogCXJldHVybiAwOwogfQogCkBAIC0xNTgsNiArMTU5LDcgQEAgc3RhdGlj IGludCBfX2VuZ2luZV9wYXJrKHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikKIAogCWNhbGxfaWRs ZV9iYXJyaWVycyhlbmdpbmUpOyAvKiBjbGVhbnVwIGFmdGVyIHdlZGdpbmcgKi8KIAorCWludGVs X2VuZ2luZV9wYXJrX2hlYXJ0YmVhdChlbmdpbmUpOwogCWludGVsX2VuZ2luZV9kaXNhcm1fYnJl YWRjcnVtYnMoZW5naW5lKTsKIAlpbnRlbF9lbmdpbmVfcG9vbF9wYXJrKCZlbmdpbmUtPnBvb2wp OwogCkBAIC0xODgsNiArMTkwLDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9fcG0oc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXN0cnVjdCBpbnRlbF9ydW50aW1lX3BtICpycG0g PSBlbmdpbmUtPnVuY29yZS0+cnBtOwogCiAJaW50ZWxfd2FrZXJlZl9pbml0KCZlbmdpbmUtPndh a2VyZWYsIHJwbSwgJndmX29wcyk7CisJaW50ZWxfZW5naW5lX2luaXRfaGVhcnRiZWF0KGVuZ2lu ZSk7CiB9CiAKICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9zeXNmcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3N5c2ZzLmMKaW5kZXggMjdjMTQ0Yjc3 MDIwLi44NGEyOTU2YzczMDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2VuZ2luZV9zeXNmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2Vu Z2luZV9zeXNmcy5jCkBAIC05LDYgKzksOCBAQAogCiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNp bmNsdWRlICJpbnRlbF9lbmdpbmUuaCIKKyNpbmNsdWRlICJpbnRlbF9lbmdpbmVfaGVhcnRiZWF0 LmgiCisjaW5jbHVkZSAiaW50ZWxfZW5naW5lX3BtLmgiCiAjaW5jbHVkZSAiaW50ZWxfZW5naW5l X3N5c2ZzLmgiCiAKIHN0cnVjdCBrb2JqX2VuZ2luZSB7CkBAIC0yMjcsNiArMjI5LDM5IEBAIHBy ZWVtcHRfdGltZW91dF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0 cmlidXRlICphdHRyLAogc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBwcmVlbXB0X3RpbWVv dXRfYXR0ciA9CiBfX0FUVFIocHJlZW1wdF90aW1lb3V0X21zLCAwNjQ0LCBwcmVlbXB0X3RpbWVv dXRfc2hvdywgcHJlZW1wdF90aW1lb3V0X3N0b3JlKTsKIAorc3RhdGljIHNzaXplX3QKK2hlYXJ0 YmVhdF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0 dHIsIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBrb2Jq X3RvX2VuZ2luZShrb2JqKTsKKworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVsdVxuIiwgZW5naW5l LT5wcm9wcy5oZWFydGJlYXRfaW50ZXJ2YWxfbXMpOworfQorCitzdGF0aWMgc3NpemVfdAoraGVh cnRiZWF0X3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUg KmF0dHIsCisJCWNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSA9IGtvYmpfdG9fZW5naW5lKGtvYmopOworCXVuc2lnbmVkIGxv bmcgbG9uZyBkZWxheTsKKwlpbnQgZXJyOworCisJZXJyID0ga3N0cnRvdWxsKGJ1ZiwgMCwgJmRl bGF5KTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJaWYgKGRlbGF5ID49IGppZmZpZXNf dG9fbXNlY3MoTUFYX1NDSEVEVUxFX1RJTUVPVVQpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWVy ciA9IGludGVsX2VuZ2luZV9zZXRfaGVhcnRiZWF0KGVuZ2luZSwgZGVsYXkpOworCWlmIChlcnIp CisJCXJldHVybiBlcnI7CisKKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qga29i al9hdHRyaWJ1dGUgaGVhcnRiZWF0X2ludGVydmFsX2F0dHIgPQorX19BVFRSKGhlYXJ0YmVhdF9p bnRlcnZhbF9tcywgMDY0NCwgaGVhcnRiZWF0X3Nob3csIGhlYXJ0YmVhdF9zdG9yZSk7CisKIHN0 YXRpYyB2b2lkIGtvYmpfZW5naW5lX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopCiB7CiAJ a2ZyZWUoa29iaik7CkBAIC0yNjcsNiArMzAyLDkgQEAgdm9pZCBpbnRlbF9lbmdpbmVzX2FkZF9z eXNmcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJJm1taW9fYXR0ci5hdHRyLAog CQkmY2Fwc19hdHRyLmF0dHIsCiAJCSZhbGxfY2Fwc19hdHRyLmF0dHIsCisjaWYgQ09ORklHX0RS TV9JOTE1X0hFQVJUQkVBVF9JTlRFUlZBTAorCQkmaGVhcnRiZWF0X2ludGVydmFsX2F0dHIuYXR0 ciwKKyNlbmRpZgogCQlOVUxMCiAJfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9lbmdpbmVfdHlwZXMuaAppbmRleCAwMTkyNmE4MjZkNTIuLmI1OTA3MDRmOTgyMiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKQEAgLTE1LDYgKzE1 LDcgQEAKICNpbmNsdWRlIDxsaW51eC9yYnRyZWUuaD4KICNpbmNsdWRlIDxsaW51eC90aW1lci5o PgogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+ CiAKICNpbmNsdWRlICJpOTE1X2dlbS5oIgogI2luY2x1ZGUgImk5MTVfcG11LmgiCkBAIC03Niwx NCArNzcsNiBAQCBzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUgewogCXUzMiByb3dbSTkxNV9NQVhfU0xJ Q0VTXVtJOTE1X01BWF9TVUJTTElDRVNdOwogfTsKIAotc3RydWN0IGludGVsX2VuZ2luZV9oYW5n Y2hlY2sgewotCXU2NCBhY3RoZDsKLQl1MzIgbGFzdF9yaW5nOwotCXUzMiBsYXN0X2hlYWQ7Ci0J dW5zaWduZWQgbG9uZyBhY3Rpb25fdGltZXN0YW1wOwotCXN0cnVjdCBpbnRlbF9pbnN0ZG9uZSBp bnN0ZG9uZTsKLX07Ci0KIHN0cnVjdCBpbnRlbF9yaW5nIHsKIAlzdHJ1Y3Qga3JlZiByZWY7CiAJ c3RydWN0IGk5MTVfdm1hICp2bWE7CkBAIC0zMzEsNiArMzI0LDExIEBAIHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgewogCiAJaW50ZWxfZW5naW5lX21hc2tfdCBzYXR1cmF0ZWQ7IC8qIHN1Ym1pdHRp bmcgc2VtYXBob3JlcyB0b28gbGF0ZT8gKi8KIAorCXN0cnVjdCB7CisJCXN0cnVjdCBkZWxheWVk X3dvcmsgd29yazsKKwkJc3RydWN0IGk5MTVfcmVxdWVzdCAqc3lzdG9sZTsKKwl9IGhlYXJ0YmVh dDsKKwogCXVuc2lnbmVkIGxvbmcgc2VyaWFsOwogCiAJdW5zaWduZWQgbG9uZyB3YWtlcmVmX3Nl cmlhbDsKQEAgLTQ4MSw4ICs0NzksNiBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAkvKiBz dGF0dXNfbm90aWZpZXI6IGxpc3Qgb2YgY2FsbGJhY2tzIGZvciBjb250ZXh0LXN3aXRjaCBjaGFu Z2VzICovCiAJc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIGNvbnRleHRfc3RhdHVzX25vdGlm aWVyOwogCi0Jc3RydWN0IGludGVsX2VuZ2luZV9oYW5nY2hlY2sgaGFuZ2NoZWNrOwotCiAjZGVm aW5lIEk5MTVfRU5HSU5FX05FRURTX0NNRF9QQVJTRVIgQklUKDApCiAjZGVmaW5lIEk5MTVfRU5H SU5FX1NVUFBPUlRTX1NUQVRTICAgQklUKDEpCiAjZGVmaW5lIEk5MTVfRU5HSU5FX0hBU19QUkVF TVBUSU9OICAgQklUKDIpCkBAIC01NDksNiArNTQ1LDcgQEAgc3RydWN0IGludGVsX2VuZ2luZV9j cyB7CiAJfSBzdGF0czsKIAogCXN0cnVjdCB7CisJCXVuc2lnbmVkIGxvbmcgaGVhcnRiZWF0X2lu dGVydmFsX21zOwogCQl1bnNpZ25lZCBsb25nIHByZWVtcHRfdGltZW91dF9tczsKIAkJdW5zaWdu ZWQgbG9uZyB0aW1lc2xpY2VfZHVyYXRpb25fbXM7CiAJfSBwcm9wczsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9ndC5jCmluZGV4IDFjNGI2Yzk2NDJhZC4uMzUxMjc2OTk1OTFkIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2d0LmMKQEAgLTIyLDcgKzIyLDYgQEAgdm9pZCBpbnRlbF9ndF9pbml0 X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQogCUlOSVRfTElTVF9IRUFEKCZndC0+Y2xvc2VkX3ZtYSk7CiAJc3Bpbl9sb2NrX2luaXQoJmd0 LT5jbG9zZWRfbG9jayk7CiAKLQlpbnRlbF9ndF9pbml0X2hhbmdjaGVjayhndCk7CiAJaW50ZWxf Z3RfaW5pdF9yZXNldChndCk7CiAJaW50ZWxfZ3RfaW5pdF9yZXF1ZXN0cyhndCk7CiAJaW50ZWxf Z3RfcG1faW5pdF9lYXJseShndCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9ndC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuaAppbmRleCBl NmFiMGJmZjBlZmIuLjViNmVmZmVkMzcxMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZ3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5o CkBAIC00Niw4ICs0Niw2IEBAIHZvaWQgaW50ZWxfZ3RfY2xlYXJfZXJyb3JfcmVnaXN0ZXJzKHN0 cnVjdCBpbnRlbF9ndCAqZ3QsCiB2b2lkIGludGVsX2d0X2ZsdXNoX2dndHRfd3JpdGVzKHN0cnVj dCBpbnRlbF9ndCAqZ3QpOwogdm9pZCBpbnRlbF9ndF9jaGlwc2V0X2ZsdXNoKHN0cnVjdCBpbnRl bF9ndCAqZ3QpOwogCi12b2lkIGludGVsX2d0X2luaXRfaGFuZ2NoZWNrKHN0cnVjdCBpbnRlbF9n dCAqZ3QpOwotCiBzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF9ndF9zY3JhdGNoX29mZnNldChjb25z dCBzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCQkJCQkgIGVudW0gaW50ZWxfZ3Rfc2NyYXRjaF9maWVs ZCBmaWVsZCkKIHsKQEAgLTU5LDYgKzU3LDQgQEAgc3RhdGljIGlubGluZSBib29sIGludGVsX2d0 X2lzX3dlZGdlZChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCXJldHVybiBfX2ludGVsX3Jlc2V0X2Zh aWxlZCgmZ3QtPnJlc2V0KTsKIH0KIAotdm9pZCBpbnRlbF9ndF9xdWV1ZV9oYW5nY2hlY2soc3Ry dWN0IGludGVsX2d0ICpndCk7Ci0KICNlbmRpZiAvKiBfX0lOVEVMX0dUX0hfXyAqLwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMKaW5kZXggYjg2NmQ1YjFlZWUwLi5kNTc4MzUyMjI4 MWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYwpAQCAtNTIsNyArNTIsNiBA QCBzdGF0aWMgaW50IF9fZ3RfdW5wYXJrKHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikKIAogCWk5 MTVfcG11X2d0X3VucGFya2VkKGk5MTUpOwogCi0JaW50ZWxfZ3RfcXVldWVfaGFuZ2NoZWNrKGd0 KTsKIAlpbnRlbF9ndF91bnBhcmtfcmVxdWVzdHMoZ3QpOwogCiAJcG1fbm90aWZ5KGd0LCBJTlRF TF9HVF9VTlBBUkspOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf Z3RfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmgKaW5k ZXggYWU0YWFmNzVhYzc4Li4xNzg4MzA3Mjc4NmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZ3RfdHlwZXMuaApAQCAtMjcsMTQgKzI3LDYgQEAgc3RydWN0IGk5MTVfZ2d0dDsKIHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3M7CiBzdHJ1Y3QgaW50ZWxfdW5jb3JlOwogCi1zdHJ1Y3QgaW50 ZWxfaGFuZ2NoZWNrIHsKLQkvKiBGb3IgaGFuZ2NoZWNrIHRpbWVyICovCi0jZGVmaW5lIERSTV9J OTE1X0hBTkdDSEVDS19QRVJJT0QgMTUwMCAvKiBpbiBtcyAqLwotI2RlZmluZSBEUk1fSTkxNV9I QU5HQ0hFQ0tfSklGRklFUyBtc2Vjc190b19qaWZmaWVzKERSTV9JOTE1X0hBTkdDSEVDS19QRVJJ T0QpCi0KLQlzdHJ1Y3QgZGVsYXllZF93b3JrIHdvcms7Ci19OwotCiBzdHJ1Y3QgaW50ZWxfZ3Qg ewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1OwogCXN0cnVjdCBpbnRlbF91bmNvcmUg KnVuY29yZTsKQEAgLTY4LDcgKzYwLDYgQEAgc3RydWN0IGludGVsX2d0IHsKIAlzdHJ1Y3QgbGlz dF9oZWFkIGNsb3NlZF92bWE7CiAJc3BpbmxvY2tfdCBjbG9zZWRfbG9jazsgLyogZ3VhcmRzIHRo ZSBsaXN0IG9mIGNsb3NlZF92bWEgKi8KIAotCXN0cnVjdCBpbnRlbF9oYW5nY2hlY2sgaGFuZ2No ZWNrOwogCXN0cnVjdCBpbnRlbF9yZXNldCByZXNldDsKIAogCS8qKgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfaGFuZ2NoZWNrLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9oYW5nY2hlY2suYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MGZkZWYwMGFmOWU0Li4wMDAwMDAwMDAwMDAKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfaGFuZ2NoZWNrLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNjEgKzAsMCBAQAotLyoKLSAq IENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0aW9uCi0gKgotICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCi0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCi0gKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwKLSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQotICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5n IHRoZSBuZXh0Ci0gKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCi0gKiBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKLSAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCi0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwotICogRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM SU5HUwotICogSU4gVEhFIFNPRlRXQVJFLgotICoKLSAqLwotCi0jaW5jbHVkZSAiaTkxNV9kcnYu aCIKLSNpbmNsdWRlICJpbnRlbF9lbmdpbmUuaCIKLSNpbmNsdWRlICJpbnRlbF9ndC5oIgotI2lu Y2x1ZGUgImludGVsX3Jlc2V0LmgiCi0KLXN0cnVjdCBoYW5nY2hlY2sgewotCXU2NCBhY3RoZDsK LQl1MzIgcmluZzsKLQl1MzIgaGVhZDsKLQllbnVtIGludGVsX2VuZ2luZV9oYW5nY2hlY2tfYWN0 aW9uIGFjdGlvbjsKLQl1bnNpZ25lZCBsb25nIGFjdGlvbl90aW1lc3RhbXA7Ci0JaW50IGRlYWRs b2NrOwotCXN0cnVjdCBpbnRlbF9pbnN0ZG9uZSBpbnN0ZG9uZTsKLQlib29sIHdlZGdlZDoxOwot CWJvb2wgc3RhbGxlZDoxOwotfTsKLQotc3RhdGljIGJvb2wgaW5zdGRvbmVfdW5jaGFuZ2VkKHUz MiBjdXJyZW50X2luc3Rkb25lLCB1MzIgKm9sZF9pbnN0ZG9uZSkKLXsKLQl1MzIgdG1wID0gY3Vy cmVudF9pbnN0ZG9uZSB8ICpvbGRfaW5zdGRvbmU7Ci0JYm9vbCB1bmNoYW5nZWQ7Ci0KLQl1bmNo YW5nZWQgPSB0bXAgPT0gKm9sZF9pbnN0ZG9uZTsKLQkqb2xkX2luc3Rkb25lIHw9IHRtcDsKLQot CXJldHVybiB1bmNoYW5nZWQ7Ci19Ci0KLXN0YXRpYyBib29sIHN1YnVuaXRzX3N0dWNrKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Ci0JY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNz ZXUgPSAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldTsKLQlzdHJ1Y3QgaW50ZWxfaW5zdGRv bmUgaW5zdGRvbmU7Ci0Jc3RydWN0IGludGVsX2luc3Rkb25lICphY2N1X2luc3Rkb25lID0gJmVu Z2luZS0+aGFuZ2NoZWNrLmluc3Rkb25lOwotCWJvb2wgc3R1Y2s7Ci0JaW50IHNsaWNlOwotCWlu dCBzdWJzbGljZTsKLQotCWludGVsX2VuZ2luZV9nZXRfaW5zdGRvbmUoZW5naW5lLCAmaW5zdGRv bmUpOwotCi0JLyogVGhlcmUgbWlnaHQgYmUgdW5zdGFibGUgc3VidW5pdCBzdGF0ZXMgZXZlbiB3 aGVuCi0JICogYWN0dWFsIGhlYWQgaXMgbm90IG1vdmluZy4gRmlsdGVyIG91dCB0aGUgdW5zdGFi bGUgb25lcyBieQotCSAqIGFjY3VtdWxhdGluZyB0aGUgdW5kb25lIC0+IGRvbmUgdHJhbnNpdGlv bnMgYW5kIG9ubHkKLQkgKiBjb25zaWRlciB0aG9zZSBhcyBwcm9ncmVzcy4KLQkgKi8KLQlzdHVj ayA9IGluc3Rkb25lX3VuY2hhbmdlZChpbnN0ZG9uZS5pbnN0ZG9uZSwKLQkJCQkgICAmYWNjdV9p bnN0ZG9uZS0+aW5zdGRvbmUpOwotCXN0dWNrICY9IGluc3Rkb25lX3VuY2hhbmdlZChpbnN0ZG9u ZS5zbGljZV9jb21tb24sCi0JCQkJICAgICZhY2N1X2luc3Rkb25lLT5zbGljZV9jb21tb24pOwot Ci0JZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXYsIHNzZXUsIHNsaWNl LCBzdWJzbGljZSkgewotCQlzdHVjayAmPSBpbnN0ZG9uZV91bmNoYW5nZWQoaW5zdGRvbmUuc2Ft cGxlcltzbGljZV1bc3Vic2xpY2VdLAotCQkJCQkgICAgJmFjY3VfaW5zdGRvbmUtPnNhbXBsZXJb c2xpY2VdW3N1YnNsaWNlXSk7Ci0JCXN0dWNrICY9IGluc3Rkb25lX3VuY2hhbmdlZChpbnN0ZG9u ZS5yb3dbc2xpY2VdW3N1YnNsaWNlXSwKLQkJCQkJICAgICZhY2N1X2luc3Rkb25lLT5yb3dbc2xp Y2VdW3N1YnNsaWNlXSk7Ci0JfQotCi0JcmV0dXJuIHN0dWNrOwotfQotCi1zdGF0aWMgZW51bSBp bnRlbF9lbmdpbmVfaGFuZ2NoZWNrX2FjdGlvbgotaGVhZF9zdHVjayhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsIHU2NCBhY3RoZCkKLXsKLQlpZiAoYWN0aGQgIT0gZW5naW5lLT5oYW5n Y2hlY2suYWN0aGQpIHsKLQotCQkvKiBDbGVhciBzdWJ1bml0IHN0YXRlcyBvbiBoZWFkIG1vdmVt ZW50ICovCi0JCW1lbXNldCgmZW5naW5lLT5oYW5nY2hlY2suaW5zdGRvbmUsIDAsCi0JCSAgICAg ICBzaXplb2YoZW5naW5lLT5oYW5nY2hlY2suaW5zdGRvbmUpKTsKLQotCQlyZXR1cm4gRU5HSU5F X0FDVElWRV9IRUFEOwotCX0KLQotCWlmICghc3VidW5pdHNfc3R1Y2soZW5naW5lKSkKLQkJcmV0 dXJuIEVOR0lORV9BQ1RJVkVfU1VCVU5JVFM7Ci0KLQlyZXR1cm4gRU5HSU5FX0RFQUQ7Ci19Ci0K LXN0YXRpYyBlbnVtIGludGVsX2VuZ2luZV9oYW5nY2hlY2tfYWN0aW9uCi1lbmdpbmVfc3R1Y2so c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1NjQgYWN0aGQpCi17Ci0JZW51bSBpbnRl bF9lbmdpbmVfaGFuZ2NoZWNrX2FjdGlvbiBoYTsKLQl1MzIgdG1wOwotCi0JaGEgPSBoZWFkX3N0 dWNrKGVuZ2luZSwgYWN0aGQpOwotCWlmIChoYSAhPSBFTkdJTkVfREVBRCkKLQkJcmV0dXJuIGhh OwotCi0JaWYgKElTX0dFTihlbmdpbmUtPmk5MTUsIDIpKQotCQlyZXR1cm4gRU5HSU5FX0RFQUQ7 Ci0KLQkvKiBJcyB0aGUgY2hpcCBoYW5naW5nIG9uIGEgV0FJVF9GT1JfRVZFTlQ/Ci0JICogSWYg c28gd2UgY2FuIHNpbXBseSBwb2tlIHRoZSBSQl9XQUlUIGJpdAotCSAqIGFuZCBicmVhayB0aGUg aGFuZy4gVGhpcyBzaG91bGQgd29yayBvbgotCSAqIGFsbCBidXQgdGhlIHNlY29uZCBnZW5lcmF0 aW9uIGNoaXBzZXRzLgotCSAqLwotCXRtcCA9IEVOR0lORV9SRUFEKGVuZ2luZSwgUklOR19DVEwp OwotCWlmICh0bXAgJiBSSU5HX1dBSVQpIHsKLQkJaW50ZWxfZ3RfaGFuZGxlX2Vycm9yKGVuZ2lu ZS0+Z3QsIGVuZ2luZS0+bWFzaywgMCwKLQkJCQkgICAgICAic3R1Y2sgd2FpdCBvbiAlcyIsIGVu Z2luZS0+bmFtZSk7Ci0JCUVOR0lORV9XUklURShlbmdpbmUsIFJJTkdfQ1RMLCB0bXApOwotCQly ZXR1cm4gRU5HSU5FX1dBSVRfS0lDSzsKLQl9Ci0KLQlyZXR1cm4gRU5HSU5FX0RFQUQ7Ci19Ci0K LXN0YXRpYyB2b2lkIGhhbmdjaGVja19sb2FkX3NhbXBsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCi0JCQkJICBzdHJ1Y3QgaGFuZ2NoZWNrICpoYykKLXsKLQloYy0+YWN0aGQgPSBp bnRlbF9lbmdpbmVfZ2V0X2FjdGl2ZV9oZWFkKGVuZ2luZSk7Ci0JaGMtPnJpbmcgPSBFTkdJTkVf UkVBRChlbmdpbmUsIFJJTkdfU1RBUlQpOwotCWhjLT5oZWFkID0gRU5HSU5FX1JFQUQoZW5naW5l LCBSSU5HX0hFQUQpOwotfQotCi1zdGF0aWMgdm9pZCBoYW5nY2hlY2tfc3RvcmVfc2FtcGxlKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKLQkJCQkgICBjb25zdCBzdHJ1Y3QgaGFuZ2No ZWNrICpoYykKLXsKLQllbmdpbmUtPmhhbmdjaGVjay5hY3RoZCA9IGhjLT5hY3RoZDsKLQllbmdp bmUtPmhhbmdjaGVjay5sYXN0X3JpbmcgPSBoYy0+cmluZzsKLQllbmdpbmUtPmhhbmdjaGVjay5s YXN0X2hlYWQgPSBoYy0+aGVhZDsKLX0KLQotc3RhdGljIGVudW0gaW50ZWxfZW5naW5lX2hhbmdj aGVja19hY3Rpb24KLWhhbmdjaGVja19nZXRfYWN0aW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwKLQkJICAgICBjb25zdCBzdHJ1Y3QgaGFuZ2NoZWNrICpoYykKLXsKLQlpZiAoaW50 ZWxfZW5naW5lX2lzX2lkbGUoZW5naW5lKSkKLQkJcmV0dXJuIEVOR0lORV9JRExFOwotCi0JaWYg KGVuZ2luZS0+aGFuZ2NoZWNrLmxhc3RfcmluZyAhPSBoYy0+cmluZykKLQkJcmV0dXJuIEVOR0lO RV9BQ1RJVkVfU0VRTk87Ci0KLQlpZiAoZW5naW5lLT5oYW5nY2hlY2subGFzdF9oZWFkICE9IGhj LT5oZWFkKQotCQlyZXR1cm4gRU5HSU5FX0FDVElWRV9TRVFOTzsKLQotCXJldHVybiBlbmdpbmVf c3R1Y2soZW5naW5lLCBoYy0+YWN0aGQpOwotfQotCi1zdGF0aWMgdm9pZCBoYW5nY2hlY2tfYWNj dW11bGF0ZV9zYW1wbGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAotCQkJCQlzdHJ1 Y3QgaGFuZ2NoZWNrICpoYykKLXsKLQl1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBJOTE1X0VOR0lO RV9ERUFEX1RJTUVPVVQ7Ci0KLQloYy0+YWN0aW9uID0gaGFuZ2NoZWNrX2dldF9hY3Rpb24oZW5n aW5lLCBoYyk7Ci0KLQkvKiBXZSBhbHdheXMgaW5jcmVtZW50IHRoZSBwcm9ncmVzcwotCSAqIGlm IHRoZSBlbmdpbmUgaXMgYnVzeSBhbmQgc3RpbGwgcHJvY2Vzc2luZwotCSAqIHRoZSBzYW1lIHJl cXVlc3QsIHNvIHRoYXQgbm8gc2luZ2xlIHJlcXVlc3QKLQkgKiBjYW4gcnVuIGluZGVmaW5pdGVs eSAoc3VjaCBhcyBhIGNoYWluIG9mCi0JICogYmF0Y2hlcykuIFRoZSBvbmx5IHRpbWUgd2UgZG8g bm90IGluY3JlbWVudAotCSAqIHRoZSBoYW5nY2hlY2sgc2NvcmUgb24gdGhpcyByaW5nLCBpZiB0 aGlzCi0JICogZW5naW5lIGlzIGluIGEgbGVnaXRpbWF0ZSB3YWl0IGZvciBhbm90aGVyCi0JICog ZW5naW5lLiBJbiB0aGF0IGNhc2UgdGhlIHdhaXRpbmcgZW5naW5lIGlzIGEKLQkgKiB2aWN0aW0g YW5kIHdlIHdhbnQgdG8gYmUgc3VyZSB3ZSBjYXRjaCB0aGUKLQkgKiByaWdodCBjdWxwcml0LiBU aGVuIGV2ZXJ5IHRpbWUgd2UgZG8ga2ljawotCSAqIHRoZSByaW5nLCBtYWtlIGl0IGFzIGEgcHJv Z3Jlc3MgYXMgdGhlIHNlcW5vCi0JICogYWR2YW5jZW1lbnQgbWlnaHQgZW5zdXJlIGFuZCBpZiBu b3QsIGl0Ci0JICogd2lsbCBjYXRjaCB0aGUgaGFuZ2luZyBlbmdpbmUuCi0JICovCi0KLQlzd2l0 Y2ggKGhjLT5hY3Rpb24pIHsKLQljYXNlIEVOR0lORV9JRExFOgotCWNhc2UgRU5HSU5FX0FDVElW RV9TRVFOTzoKLQkJLyogQ2xlYXIgaGVhZCBhbmQgc3VidW5pdCBzdGF0ZXMgb24gc2Vxbm8gbW92 ZW1lbnQgKi8KLQkJaGMtPmFjdGhkID0gMDsKLQotCQltZW1zZXQoJmVuZ2luZS0+aGFuZ2NoZWNr Lmluc3Rkb25lLCAwLAotCQkgICAgICAgc2l6ZW9mKGVuZ2luZS0+aGFuZ2NoZWNrLmluc3Rkb25l KSk7Ci0KLQkJLyogSW50ZW50aW9uYWwgZmFsbCB0aHJvdWdoICovCi0JY2FzZSBFTkdJTkVfV0FJ VF9LSUNLOgotCWNhc2UgRU5HSU5FX1dBSVQ6Ci0JCWVuZ2luZS0+aGFuZ2NoZWNrLmFjdGlvbl90 aW1lc3RhbXAgPSBqaWZmaWVzOwotCQlicmVhazsKLQotCWNhc2UgRU5HSU5FX0FDVElWRV9IRUFE OgotCWNhc2UgRU5HSU5FX0FDVElWRV9TVUJVTklUUzoKLQkJLyoKLQkJICogU2Vxbm8gc3R1Y2sg d2l0aCBzdGlsbCBhY3RpdmUgZW5naW5lIGdldHMgbGVld2F5LAotCQkgKiBpbiBob3BlcyB0aGF0 IGl0IGlzIGp1c3QgYSBsb25nIHNoYWRlci4KLQkJICovCi0JCXRpbWVvdXQgPSBJOTE1X1NFUU5P X0RFQURfVElNRU9VVDsKLQkJYnJlYWs7Ci0KLQljYXNlIEVOR0lORV9ERUFEOgotCQlicmVhazsK LQotCWRlZmF1bHQ6Ci0JCU1JU1NJTkdfQ0FTRShoYy0+YWN0aW9uKTsKLQl9Ci0KLQloYy0+c3Rh bGxlZCA9IHRpbWVfYWZ0ZXIoamlmZmllcywKLQkJCQkgZW5naW5lLT5oYW5nY2hlY2suYWN0aW9u X3RpbWVzdGFtcCArIHRpbWVvdXQpOwotCWhjLT53ZWRnZWQgPSB0aW1lX2FmdGVyKGppZmZpZXMs Ci0JCQkJIGVuZ2luZS0+aGFuZ2NoZWNrLmFjdGlvbl90aW1lc3RhbXAgKwotCQkJCSBJOTE1X0VO R0lORV9XRURHRURfVElNRU9VVCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGhhbmdjaGVja19kZWNsYXJl X2hhbmcoc3RydWN0IGludGVsX2d0ICpndCwKLQkJCQkgICBpbnRlbF9lbmdpbmVfbWFza190IGh1 bmcsCi0JCQkJICAgaW50ZWxfZW5naW5lX21hc2tfdCBzdHVjaykKLXsKLQlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmU7Ci0JaW50ZWxfZW5naW5lX21hc2tfdCB0bXA7Ci0JY2hhciBtc2db ODBdOwotCWludCBsZW47Ci0KLQkvKiBJZiBzb21lIHJpbmdzIGh1bmcgYnV0IG90aGVycyB3ZXJl IHN0aWxsIGJ1c3ksIG9ubHkKLQkgKiBibGFtZSB0aGUgaGFuZ2luZyByaW5ncyBpbiB0aGUgc3lu b3BzaXMuCi0JICovCi0JaWYgKHN0dWNrICE9IGh1bmcpCi0JCWh1bmcgJj0gfnN0dWNrOwotCWxl biA9IHNjbnByaW50Zihtc2csIHNpemVvZihtc2cpLAotCQkJIiVzIG9uICIsIHN0dWNrID09IGh1 bmcgPyAibm8gcHJvZ3Jlc3MiIDogImhhbmciKTsKLQlmb3JfZWFjaF9lbmdpbmVfbWFza2VkKGVu Z2luZSwgZ3QsIGh1bmcsIHRtcCkKLQkJbGVuICs9IHNjbnByaW50Zihtc2cgKyBsZW4sIHNpemVv Zihtc2cpIC0gbGVuLAotCQkJCSAiJXMsICIsIGVuZ2luZS0+bmFtZSk7Ci0JbXNnW2xlbi0yXSA9 ICdcMCc7Ci0KLQlyZXR1cm4gaW50ZWxfZ3RfaGFuZGxlX2Vycm9yKGd0LCBodW5nLCBJOTE1X0VS Uk9SX0NBUFRVUkUsICIlcyIsIG1zZyk7Ci19Ci0KLS8qCi0gKiBUaGlzIGlzIGNhbGxlZCB3aGVu IHRoZSBjaGlwIGhhc24ndCByZXBvcnRlZCBiYWNrIHdpdGggY29tcGxldGVkCi0gKiBiYXRjaGJ1 ZmZlcnMgaW4gYSBsb25nIHRpbWUuIFdlIGtlZXAgdHJhY2sgcGVyIHJpbmcgc2Vxbm8gcHJvZ3Jl c3MgYW5kCi0gKiBpZiB0aGVyZSBhcmUgbm8gcHJvZ3Jlc3MsIGhhbmdjaGVjayBzY29yZSBmb3Ig dGhhdCByaW5nIGlzIGluY3JlYXNlZC4KLSAqIEZ1cnRoZXIsIGFjdGhkIGlzIGluc3BlY3RlZCB0 byBzZWUgaWYgdGhlIHJpbmcgaXMgc3R1Y2suIE9uIHN0dWNrIGNhc2UKLSAqIHdlIGtpY2sgdGhl IHJpbmcuIElmIHdlIHNlZSBubyBwcm9ncmVzcyBvbiB0aHJlZSBzdWJzZXF1ZW50IGNhbGxzCi0g KiB3ZSBhc3N1bWUgY2hpcCBpcyB3ZWRnZWQgYW5kIHRyeSB0byBmaXggaXQgYnkgcmVzZXR0aW5n IHRoZSBjaGlwLgotICovCi1zdGF0aWMgdm9pZCBoYW5nY2hlY2tfZWxhcHNlZChzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmspCi17Ci0Jc3RydWN0IGludGVsX2d0ICpndCA9Ci0JCWNvbnRhaW5lcl9v Zih3b3JrLCB0eXBlb2YoKmd0KSwgaGFuZ2NoZWNrLndvcmsud29yayk7Ci0JaW50ZWxfZW5naW5l X21hc2tfdCBodW5nID0gMCwgc3R1Y2sgPSAwLCB3ZWRnZWQgPSAwOwotCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZTsKLQllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKLQlpbnRlbF93YWtl cmVmX3Qgd2FrZXJlZjsKLQotCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2hhbmdjaGVjaykK LQkJcmV0dXJuOwotCi0JaWYgKCFSRUFEX09OQ0UoZ3QtPmF3YWtlKSkKLQkJcmV0dXJuOwotCi0J aWYgKGludGVsX2d0X2lzX3dlZGdlZChndCkpCi0JCXJldHVybjsKLQotCXdha2VyZWYgPSBpbnRl bF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UoZ3QtPnVuY29yZS0+cnBtKTsKLQlpZiAoIXdha2Vy ZWYpCi0JCXJldHVybjsKLQotCS8qIEFzIGVuYWJsaW5nIHRoZSBHUFUgcmVxdWlyZXMgZmFpcmx5 IGV4dGVuc2l2ZSBtbWlvIGFjY2VzcywKLQkgKiBwZXJpb2RpY2FsbHkgYXJtIHRoZSBtbWlvIGNo ZWNrZXIgdG8gc2VlIGlmIHdlIGFyZSB0cmlnZ2VyaW5nCi0JICogYW55IGludmFsaWQgYWNjZXNz LgotCSAqLwotCWludGVsX3VuY29yZV9hcm1fdW5jbGFpbWVkX21taW9fZGV0ZWN0aW9uKGd0LT51 bmNvcmUpOwotCi0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZ3QsIGlkKSB7Ci0JCXN0cnVjdCBo YW5nY2hlY2sgaGM7Ci0KLQkJaW50ZWxfZW5naW5lX2JyZWFkY3J1bWJzX2lycShlbmdpbmUpOwot Ci0JCWhhbmdjaGVja19sb2FkX3NhbXBsZShlbmdpbmUsICZoYyk7Ci0JCWhhbmdjaGVja19hY2N1 bXVsYXRlX3NhbXBsZShlbmdpbmUsICZoYyk7Ci0JCWhhbmdjaGVja19zdG9yZV9zYW1wbGUoZW5n aW5lLCAmaGMpOwotCi0JCWlmIChoYy5zdGFsbGVkKSB7Ci0JCQlodW5nIHw9IGVuZ2luZS0+bWFz azsKLQkJCWlmIChoYy5hY3Rpb24gIT0gRU5HSU5FX0RFQUQpCi0JCQkJc3R1Y2sgfD0gZW5naW5l LT5tYXNrOwotCQl9Ci0KLQkJaWYgKGhjLndlZGdlZCkKLQkJCXdlZGdlZCB8PSBlbmdpbmUtPm1h c2s7Ci0JfQotCi0JaWYgKEdFTV9TSE9XX0RFQlVHKCkgJiYgKGh1bmcgfCBzdHVjaykpIHsKLQkJ c3RydWN0IGRybV9wcmludGVyIHAgPSBkcm1fZGVidWdfcHJpbnRlcigiaGFuZ2NoZWNrIik7Ci0K LQkJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZ3QsIGlkKSB7Ci0JCQlpZiAoaW50ZWxfZW5naW5l X2lzX2lkbGUoZW5naW5lKSkKLQkJCQljb250aW51ZTsKLQotCQkJaW50ZWxfZW5naW5lX2R1bXAo ZW5naW5lLCAmcCwgIiVzXG4iLCBlbmdpbmUtPm5hbWUpOwotCQl9Ci0JfQotCi0JaWYgKHdlZGdl ZCkgewotCQlkZXZfZXJyKGd0LT5pOTE1LT5kcm0uZGV2LAotCQkJIkdQVSByZWNvdmVyeSB0aW1l ZCBvdXQsIgotCQkJIiBjYW5jZWxsaW5nIGFsbCBpbi1mbGlnaHQgcmVuZGVyaW5nLlxuIik7Ci0J CUdFTV9UUkFDRV9EVU1QKCk7Ci0JCWludGVsX2d0X3NldF93ZWRnZWQoZ3QpOwotCX0KLQotCWlm IChodW5nKQotCQloYW5nY2hlY2tfZGVjbGFyZV9oYW5nKGd0LCBodW5nLCBzdHVjayk7Ci0KLQlp bnRlbF9ydW50aW1lX3BtX3B1dChndC0+dW5jb3JlLT5ycG0sIHdha2VyZWYpOwotCi0JLyogUmVz ZXQgdGltZXIgaW4gY2FzZSBHUFUgaGFuZ3Mgd2l0aG91dCBhbm90aGVyIHJlcXVlc3QgYmVpbmcg YWRkZWQgKi8KLQlpbnRlbF9ndF9xdWV1ZV9oYW5nY2hlY2soZ3QpOwotfQotCi12b2lkIGludGVs X2d0X3F1ZXVlX2hhbmdjaGVjayhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQotewotCXVuc2lnbmVkIGxv bmcgZGVsYXk7Ci0KLQlpZiAodW5saWtlbHkoIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9oYW5nY2hl Y2spKQotCQlyZXR1cm47Ci0KLQkvKgotCSAqIERvbid0IGNvbnRpbnVhbGx5IGRlZmVyIHRoZSBo YW5nY2hlY2sgc28gdGhhdCBpdCBpcyBhbHdheXMgcnVuIGF0Ci0JICogbGVhc3Qgb25jZSBhZnRl ciB3b3JrIGhhcyBiZWVuIHNjaGVkdWxlZCBvbiBhbnkgcmluZy4gT3RoZXJ3aXNlLAotCSAqIHdl IHdpbGwgaWdub3JlIGEgaHVuZyByaW5nIGlmIGEgc2Vjb25kIHJpbmcgaXMga2VwdCBidXN5Lgot CSAqLwotCi0JZGVsYXkgPSByb3VuZF9qaWZmaWVzX3VwX3JlbGF0aXZlKERSTV9JOTE1X0hBTkdD SEVDS19KSUZGSUVTKTsKLQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZndC0+ aGFuZ2NoZWNrLndvcmssIGRlbGF5KTsKLX0KLQotdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9oYW5n Y2hlY2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQotewotCW1lbXNldCgmZW5naW5l LT5oYW5nY2hlY2ssIDAsIHNpemVvZihlbmdpbmUtPmhhbmdjaGVjaykpOwotCWVuZ2luZS0+aGFu Z2NoZWNrLmFjdGlvbl90aW1lc3RhbXAgPSBqaWZmaWVzOwotfQotCi12b2lkIGludGVsX2d0X2lu aXRfaGFuZ2NoZWNrKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCi17Ci0JSU5JVF9ERUxBWUVEX1dPUkso Jmd0LT5oYW5nY2hlY2sud29yaywgaGFuZ2NoZWNrX2VsYXBzZWQpOwotfQotCi0jaWYgSVNfRU5B QkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpCi0jaW5jbHVkZSAic2VsZnRlc3RfaGFuZ2No ZWNrLmMiCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X3Jlc2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jCmluZGV4IGJm OGQxZWQ0YjFkOC4uZjAzZTAwMDA1MWMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9yZXNldC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jl c2V0LmMKQEAgLTEwMjQsOCArMTAyNCw2IEBAIHZvaWQgaW50ZWxfZ3RfcmVzZXQoc3RydWN0IGlu dGVsX2d0ICpndCwKIAlpZiAocmV0KQogCQlnb3RvIHRhaW50OwogCi0JaW50ZWxfZ3RfcXVldWVf aGFuZ2NoZWNrKGd0KTsKLQogZmluaXNoOgogCXJlc2V0X2ZpbmlzaChndCwgYXdha2UpOwogdW5s b2NrOgpAQCAtMTM1Myw0ICsxMzUxLDUgQEAgdm9pZCBfX2ludGVsX2Zpbmlfd2VkZ2Uoc3RydWN0 IGludGVsX3dlZGdlX21lICp3KQogCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VM RlRFU1QpCiAjaW5jbHVkZSAic2VsZnRlc3RfcmVzZXQuYyIKKyNpbmNsdWRlICJzZWxmdGVzdF9o YW5nY2hlY2suYyIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv c2VsZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2Vs ZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uOTJlYWZhYzhhZjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5jCkBAIC0wLDAgKzEsMTk4IEBACisv KgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorICoKKyAqIENvcHlyaWdodCDCqSAy MDE4IEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L3NvcnQuaD4KKwor I2luY2x1ZGUgImk5MTVfZHJ2LmgiCisKKyNpbmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCisKK3N0 YXRpYyBpbnQgY21wX3UzMihjb25zdCB2b2lkICpfYSwgY29uc3Qgdm9pZCAqX2IpCit7CisJY29u c3QgdTMyICphID0gX2EsICpiID0gX2I7CisKKwlyZXR1cm4gKmEgLSAqYjsKK30KKworc3RhdGlj IGludCBfX2xpdmVfaGVhcnRiZWF0X2Zhc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cTsKKwlrdGltZV90IHQwLCB0MTsKKwl1MzIgdGltZXNbNV07CisJaW50IGVycjsKKwlpbnQgaTsK KworCWNlID0gaW50ZWxfY29udGV4dF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4dC0+Z2Vt X2NvbnRleHQsCisJCQkJICBlbmdpbmUpOworCWlmIChJU19FUlIoY2UpKQorCQlyZXR1cm4gUFRS X0VSUihjZSk7CisKKwlpbnRlbF9lbmdpbmVfcG1fZ2V0KGVuZ2luZSk7CisKKwllcnIgPSBpbnRl bF9lbmdpbmVfc2V0X2hlYXJ0YmVhdChlbmdpbmUsIDEpOworCWlmIChlcnIpCisJCWdvdG8gZXJy X3BtOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodGltZXMpOyBpKyspIHsKKwkJLyog TWFudWZhY3R1cmUgYSB0aWNrICovCisJCWRvIHsKKwkJCXdoaWxlIChSRUFEX09OQ0UoZW5naW5l LT5oZWFydGJlYXQuc3lzdG9sZSkpCisJCQkJZmx1c2hfZGVsYXllZF93b3JrKCZlbmdpbmUtPmhl YXJ0YmVhdC53b3JrKTsKKworCQkJZW5naW5lLT5zZXJpYWwrKzsgLyogcXVpY2ssIHByZXRlbmQg d2UgYXJlIG5vdCBpZGxlISAqLworCQkJZmx1c2hfZGVsYXllZF93b3JrKCZlbmdpbmUtPmhlYXJ0 YmVhdC53b3JrKTsKKwkJCWlmICghZGVsYXllZF93b3JrX3BlbmRpbmcoJmVuZ2luZS0+aGVhcnRi ZWF0LndvcmspKSB7CisJCQkJcHJfZXJyKCIlczogaGVhcnRiZWF0IGRpZCBub3Qgc3RhcnRcbiIs CisJCQkJICAgICAgIGVuZ2luZS0+bmFtZSk7CisJCQkJZXJyID0gLUVJTlZBTDsKKwkJCQlnb3Rv IGVycl9wbTsKKwkJCX0KKworCQkJcmN1X3JlYWRfbG9jaygpOworCQkJcnEgPSBSRUFEX09OQ0Uo ZW5naW5lLT5oZWFydGJlYXQuc3lzdG9sZSk7CisJCQlpZiAocnEpCisJCQkJcnEgPSBpOTE1X3Jl cXVlc3RfZ2V0X3JjdShycSk7CisJCQlyY3VfcmVhZF91bmxvY2soKTsKKwkJfSB3aGlsZSAoIXJx KTsKKworCQl0MCA9IGt0aW1lX2dldCgpOworCQl3aGlsZSAocnEgPT0gUkVBRF9PTkNFKGVuZ2lu ZS0+aGVhcnRiZWF0LnN5c3RvbGUpKQorCQkJeWllbGQoKTsgLyogd29yayBpcyBvbiB0aGUgbG9j YWwgY3B1ISAqLworCQl0MSA9IGt0aW1lX2dldCgpOworCisJCWk5MTVfcmVxdWVzdF9wdXQocnEp OworCQl0aW1lc1tpXSA9IGt0aW1lX3VzX2RlbHRhKHQxLCB0MCk7CisJfQorCisJc29ydCh0aW1l cywgQVJSQVlfU0laRSh0aW1lcyksIHNpemVvZih0aW1lc1swXSksIGNtcF91MzIsIE5VTEwpOwor CisJcHJfaW5mbygiJXM6IEhlYXJ0YmVhdCBkZWxheTogJXV1cyBbJXUsICV1XVxuIiwKKwkJZW5n aW5lLT5uYW1lLAorCQl0aW1lc1tBUlJBWV9TSVpFKHRpbWVzKSAvIDJdLAorCQl0aW1lc1swXSwK KwkJdGltZXNbQVJSQVlfU0laRSh0aW1lcykgLSAxXSk7CisKKwkvKiBNaW4gd29yayBkZWxheSBp cyAyICogMiAod29yc3QpLCArMSBmb3Igc2NoZWR1bGluZywgKzEgZm9yIHNsYWNrICovCisJaWYg KHRpbWVzW0FSUkFZX1NJWkUodGltZXMpIC8gMl0gPiBqaWZmaWVzX3RvX3VzZWNzKDYpKSB7CisJ CXByX2VycigiJXM6IEhlYXJ0YmVhdCBkZWxheSB3YXMgJXV1cywgZXhwZWN0ZWQgbGVzcyB0aGFu ICVkdXNcbiIsCisJCSAgICAgICBlbmdpbmUtPm5hbWUsCisJCSAgICAgICB0aW1lc1tBUlJBWV9T SVpFKHRpbWVzKSAvIDJdLAorCQkgICAgICAgamlmZmllc190b191c2Vjcyg2KSk7CisJCWVyciA9 IC1FSU5WQUw7CisJfQorCisJaW50ZWxfZW5naW5lX3NldF9oZWFydGJlYXQoZW5naW5lLCBDT05G SUdfRFJNX0k5MTVfSEVBUlRCRUFUX0lOVEVSVkFMKTsKK2Vycl9wbToKKwlpbnRlbF9lbmdpbmVf cG1fcHV0KGVuZ2luZSk7CisJaW50ZWxfY29udGV4dF9wdXQoY2UpOworCXJldHVybiBlcnI7Cit9 CisKK3N0YXRpYyBpbnQgbGl2ZV9oZWFydGJlYXRfZmFzdCh2b2lkICphcmcpCit7CisJc3RydWN0 IGludGVsX2d0ICpndCA9IGFyZzsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJ ZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CisJaW50IGVycjsKKworCS8qIENoZWNrIHRoYXQgdGhl IGhlYXJ0YmVhdCB0aWNrcyBhdCB0aGUgZGVzaXJlZCByYXRlLiAqLworCisJZm9yX2VhY2hfZW5n aW5lKGVuZ2luZSwgZ3QsIGlkKSB7CisJCWVyciA9IF9fbGl2ZV9oZWFydGJlYXRfZmFzdChlbmdp bmUpOworCQlpZiAoZXJyKQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIGVycjsKK30KKworc3Rh dGljIGludCBfX2xpdmVfaGVhcnRiZWF0X29mZihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCit7CisJaW50IGVycjsKKworCWludGVsX2VuZ2luZV9wbV9nZXQoZW5naW5lKTsKKworCWVu Z2luZS0+c2VyaWFsKys7CisJZmx1c2hfZGVsYXllZF93b3JrKCZlbmdpbmUtPmhlYXJ0YmVhdC53 b3JrKTsKKwlpZiAoIWRlbGF5ZWRfd29ya19wZW5kaW5nKCZlbmdpbmUtPmhlYXJ0YmVhdC53b3Jr KSkgeworCQlwcl9lcnIoIiVzOiBoZWFydGJlYXQgbm90IHJ1bm5pbmdcbiIsCisJCSAgICAgICBl bmdpbmUtPm5hbWUpOworCQllcnIgPSAtRUlOVkFMOworCQlnb3RvIGVycl9wbTsKKwl9CisKKwll cnIgPSBpbnRlbF9lbmdpbmVfc2V0X2hlYXJ0YmVhdChlbmdpbmUsIDApOworCWlmIChlcnIpCisJ CWdvdG8gZXJyX3BtOworCisJZW5naW5lLT5zZXJpYWwrKzsKKwlmbHVzaF9kZWxheWVkX3dvcmso JmVuZ2luZS0+aGVhcnRiZWF0LndvcmspOworCWlmIChkZWxheWVkX3dvcmtfcGVuZGluZygmZW5n aW5lLT5oZWFydGJlYXQud29yaykpIHsKKwkJcHJfZXJyKCIlczogaGVhcnRiZWF0IHN0aWxsIHJ1 bm5pbmdcbiIsCisJCSAgICAgICBlbmdpbmUtPm5hbWUpOworCQllcnIgPSAtRUlOVkFMOworCQln b3RvIGVycl9iZWF0OworCX0KKworCWlmIChSRUFEX09OQ0UoZW5naW5lLT5oZWFydGJlYXQuc3lz dG9sZSkpIHsKKwkJcHJfZXJyKCIlczogaGVhcnRiZWF0IHN0aWxsIGFsbG9jYXRlZFxuIiwKKwkJ ICAgICAgIGVuZ2luZS0+bmFtZSk7CisJCWVyciA9IC1FSU5WQUw7CisJCWdvdG8gZXJyX2JlYXQ7 CisJfQorCitlcnJfYmVhdDoKKwlpbnRlbF9lbmdpbmVfc2V0X2hlYXJ0YmVhdChlbmdpbmUsIENP TkZJR19EUk1fSTkxNV9IRUFSVEJFQVRfSU5URVJWQUwpOworZXJyX3BtOgorCWludGVsX2VuZ2lu ZV9wbV9wdXQoZW5naW5lKTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IGxpdmVfaGVh cnRiZWF0X29mZih2b2lkICphcmcpCit7CisJc3RydWN0IGludGVsX2d0ICpndCA9IGFyZzsKKwlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7 CisJaW50IGVycjsKKworCS8qIENoZWNrIHRoYXQgd2UgY2FuIHR1cm4gb2ZmIGhlYXJ0YmVhdCBh bmQgbm90IGludGVycnVwdCBWSVAgKi8KKworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGd0LCBp ZCkgeworCQlpZiAoIWludGVsX2VuZ2luZV9oYXNfcHJlZW1wdGlvbihlbmdpbmUpKQorCQkJY29u dGludWU7CisKKwkJZXJyID0gX19saXZlX2hlYXJ0YmVhdF9vZmYoZW5naW5lKTsKKwkJaWYgKGVy cikKKwkJCWJyZWFrOworCX0KKworCXJldHVybiBlcnI7Cit9CisKK2ludCBpbnRlbF9oZWFydGJl YXRfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKKwkJU1VCVEVTVChsaXZl X2hlYXJ0YmVhdF9mYXN0KSwKKwkJU1VCVEVTVChsaXZlX2hlYXJ0YmVhdF9vZmYpLAorCX07CisJ aW50IHNhdmVkX2hhbmdjaGVjazsKKwlpbnQgZXJyOworCisJaWYgKCFDT05GSUdfRFJNX0k5MTVf SEVBUlRCRUFUX0lOVEVSVkFMKQorCQlyZXR1cm4gMDsKKworCWlmIChpbnRlbF9ndF9pc193ZWRn ZWQoJmk5MTUtPmd0KSkKKwkJcmV0dXJuIDA7CisKKwlzYXZlZF9oYW5nY2hlY2sgPSBpOTE1X21v ZHBhcmFtcy5lbmFibGVfaGFuZ2NoZWNrOworCWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9oYW5nY2hl Y2sgPSBJTlRfTUFYOworCisJZXJyID0gIGludGVsX2d0X2xpdmVfc3VidGVzdHModGVzdHMsICZp OTE1LT5ndCk7CisKKwlpOTE1X21vZHBhcmFtcy5lbmFibGVfaGFuZ2NoZWNrID0gc2F2ZWRfaGFu Z2NoZWNrOworCXJldHVybiBlcnI7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0 ZXN0X2hhbmdjaGVjay5jCmluZGV4IDU0ZTRhOTYyYzMzNi4uYjgwOTZmZjFjYmVkIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYwpAQCAtMTY4Niw3ICsx Njg2LDYgQEAgaW50IGludGVsX2hhbmdjaGVja19saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKIAl9OwogCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSAmaTkxNS0+Z3Q7 CiAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Ci0JYm9vbCBzYXZlZF9oYW5nY2hlY2s7CiAJaW50 IGVycjsKIAogCWlmICghaW50ZWxfaGFzX2dwdV9yZXNldChndCkpCkBAIC0xNjk2LDEyICsxNjk1 LDkgQEAgaW50IGludGVsX2hhbmdjaGVja19saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKIAkJcmV0dXJuIC1FSU87IC8qIHdlJ3JlIGxvbmcgcGFzdCBob3BlIG9m IGEgc3VjY2Vzc2Z1bCByZXNldCAqLwogCiAJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0 KGd0LT51bmNvcmUtPnJwbSk7Ci0Jc2F2ZWRfaGFuZ2NoZWNrID0gZmV0Y2hfYW5kX3plcm8oJmk5 MTVfbW9kcGFyYW1zLmVuYWJsZV9oYW5nY2hlY2spOwotCWRyYWluX2RlbGF5ZWRfd29yaygmZ3Qt PmhhbmdjaGVjay53b3JrKTsgLyogZmx1c2ggcGFyYW0gKi8KIAogCWVyciA9IGludGVsX2d0X2xp dmVfc3VidGVzdHModGVzdHMsIGd0KTsKIAotCWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9oYW5nY2hl Y2sgPSBzYXZlZF9oYW5nY2hlY2s7CiAJaW50ZWxfcnVudGltZV9wbV9wdXQoZ3QtPnVuY29yZS0+ cnBtLCB3YWtlcmVmKTsKIAogCXJldHVybiBlcnI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCmluZGV4IGFkYTU3ZWVlOTE0YS4uZjUyOWE2NThiOWNlIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYwpAQCAtMTAxMSw5MiArMTAxMSw2IEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVx dWVuY3lfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAlyZXR1cm4gcmV0 OwogfQogCi1zdGF0aWMgdm9pZCBpOTE1X2luc3Rkb25lX2luZm8oc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAotCQkJICAgICAgIHN0cnVjdCBzZXFfZmlsZSAqbSwKLQkJCSAgICAg ICBzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUgKmluc3Rkb25lKQotewotCWNvbnN0IHN0cnVjdCBzc2V1 X2Rldl9pbmZvICpzc2V1ID0gJlJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXU7Ci0JaW50IHNs aWNlOwotCWludCBzdWJzbGljZTsKLQotCXNlcV9wcmludGYobSwgIlx0XHRJTlNURE9ORTogMHgl MDh4XG4iLAotCQkgICBpbnN0ZG9uZS0+aW5zdGRvbmUpOwotCi0JaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPD0gMykKLQkJcmV0dXJuOwotCi0Jc2VxX3ByaW50ZihtLCAiXHRcdFNDX0lOU1RET05F OiAweCUwOHhcbiIsCi0JCSAgIGluc3Rkb25lLT5zbGljZV9jb21tb24pOwotCi0JaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPD0gNikKLQkJcmV0dXJuOwotCi0JZm9yX2VhY2hfaW5zdGRvbmVfc2xp Y2Vfc3Vic2xpY2UoZGV2X3ByaXYsIHNzZXUsIHNsaWNlLCBzdWJzbGljZSkKLQkJc2VxX3ByaW50 ZihtLCAiXHRcdFNBTVBMRVJfSU5TVERPTkVbJWRdWyVkXTogMHglMDh4XG4iLAotCQkJICAgc2xp Y2UsIHN1YnNsaWNlLCBpbnN0ZG9uZS0+c2FtcGxlcltzbGljZV1bc3Vic2xpY2VdKTsKLQotCWZv cl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2LCBzc2V1LCBzbGljZSwgc3Vi c2xpY2UpCi0JCXNlcV9wcmludGYobSwgIlx0XHRST1dfSU5TVERPTkVbJWRdWyVkXTogMHglMDh4 XG4iLAotCQkJICAgc2xpY2UsIHN1YnNsaWNlLCBpbnN0ZG9uZS0+cm93W3NsaWNlXVtzdWJzbGlj ZV0pOwotfQotCi1zdGF0aWMgaW50IGk5MTVfaGFuZ2NoZWNrX2luZm8oc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICp1bnVzZWQpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBu b2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7Ci0Jc3RydWN0IGludGVsX2d0ICpndCA9ICZpOTE1LT5n dDsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Ci0JaW50ZWxfd2FrZXJlZl90IHdh a2VyZWY7Ci0JZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Ci0KLQlzZXFfcHJpbnRmKG0sICJSZXNl dCBmbGFnczogJWx4XG4iLCBndC0+cmVzZXQuZmxhZ3MpOwotCWlmICh0ZXN0X2JpdChJOTE1X1dF REdFRCwgJmd0LT5yZXNldC5mbGFncykpCi0JCXNlcV9wdXRzKG0sICJcdFdlZGdlZFxuIik7Ci0J aWYgKHRlc3RfYml0KEk5MTVfUkVTRVRfQkFDS09GRiwgJmd0LT5yZXNldC5mbGFncykpCi0JCXNl cV9wdXRzKG0sICJcdERldmljZSAoZ2xvYmFsKSByZXNldCBpbiBwcm9ncmVzc1xuIik7Ci0KLQlp ZiAoIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9oYW5nY2hlY2spIHsKLQkJc2VxX3B1dHMobSwgIkhh bmdjaGVjayBkaXNhYmxlZFxuIik7Ci0JCXJldHVybiAwOwotCX0KLQotCWlmICh0aW1lcl9wZW5k aW5nKCZndC0+aGFuZ2NoZWNrLndvcmsudGltZXIpKQotCQlzZXFfcHJpbnRmKG0sICJIYW5nY2hl Y2sgYWN0aXZlLCB0aW1lciBmaXJlcyBpbiAlZG1zXG4iLAotCQkJICAgamlmZmllc190b19tc2Vj cyhndC0+aGFuZ2NoZWNrLndvcmsudGltZXIuZXhwaXJlcyAtCi0JCQkJCSAgICBqaWZmaWVzKSk7 Ci0JZWxzZSBpZiAoZGVsYXllZF93b3JrX3BlbmRpbmcoJmd0LT5oYW5nY2hlY2sud29yaykpCi0J CXNlcV9wdXRzKG0sICJIYW5nY2hlY2sgYWN0aXZlLCB3b3JrIHBlbmRpbmdcbiIpOwotCWVsc2UK LQkJc2VxX3B1dHMobSwgIkhhbmdjaGVjayBpbmFjdGl2ZVxuIik7Ci0KLQlzZXFfcHJpbnRmKG0s ICJHVCBhY3RpdmU/ICVzXG4iLCB5ZXNubyhndC0+YXdha2UpKTsKLQotCXdpdGhfaW50ZWxfcnVu dGltZV9wbSgmaTkxNS0+cnVudGltZV9wbSwgd2FrZXJlZikgewotCQlmb3JfZWFjaF9lbmdpbmUo ZW5naW5lLCBpOTE1LCBpZCkgewotCQkJc3RydWN0IGludGVsX2luc3Rkb25lIGluc3Rkb25lOwot Ci0JCQlzZXFfcHJpbnRmKG0sICIlczogJWQgbXMgYWdvXG4iLAotCQkJCSAgIGVuZ2luZS0+bmFt ZSwKLQkJCQkgICBqaWZmaWVzX3RvX21zZWNzKGppZmZpZXMgLQotCQkJCQkJICAgIGVuZ2luZS0+ aGFuZ2NoZWNrLmFjdGlvbl90aW1lc3RhbXApKTsKLQotCQkJc2VxX3ByaW50ZihtLCAiXHRBQ1RI RCA9IDB4JTA4bGx4IFtjdXJyZW50IDB4JTA4bGx4XVxuIiwKLQkJCQkgICAobG9uZyBsb25nKWVu Z2luZS0+aGFuZ2NoZWNrLmFjdGhkLAotCQkJCSAgIGludGVsX2VuZ2luZV9nZXRfYWN0aXZlX2hl YWQoZW5naW5lKSk7Ci0KLQkJCWludGVsX2VuZ2luZV9nZXRfaW5zdGRvbmUoZW5naW5lLCAmaW5z dGRvbmUpOwotCi0JCQlzZXFfcHV0cyhtLCAiXHRpbnN0ZG9uZSByZWFkID1cbiIpOwotCQkJaTkx NV9pbnN0ZG9uZV9pbmZvKGk5MTUsIG0sICZpbnN0ZG9uZSk7Ci0KLQkJCXNlcV9wdXRzKG0sICJc dGluc3Rkb25lIGFjY3UgPVxuIik7Ci0JCQlpOTE1X2luc3Rkb25lX2luZm8oaTkxNSwgbSwKLQkJ CQkJICAgJmVuZ2luZS0+aGFuZ2NoZWNrLmluc3Rkb25lKTsKLQkJfQotCX0KLQotCXJldHVybiAw OwotfQotCiBzdGF0aWMgaW50IGlyb25sYWtlX2RycGNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0p CiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBub2RlX3RvX2k5MTUobS0+cHJp dmF0ZSk7CkBAIC00MzM5LDcgKzQyNTMsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pbmZv X2xpc3QgaTkxNV9kZWJ1Z2ZzX2xpc3RbXSA9IHsKIAl7Imk5MTVfZ3VjX3N0YWdlX3Bvb2wiLCBp OTE1X2d1Y19zdGFnZV9wb29sLCAwfSwKIAl7Imk5MTVfaHVjX2xvYWRfc3RhdHVzIiwgaTkxNV9o dWNfbG9hZF9zdGF0dXNfaW5mbywgMH0sCiAJeyJpOTE1X2ZyZXF1ZW5jeV9pbmZvIiwgaTkxNV9m cmVxdWVuY3lfaW5mbywgMH0sCi0JeyJpOTE1X2hhbmdjaGVja19pbmZvIiwgaTkxNV9oYW5nY2hl Y2tfaW5mbywgMH0sCiAJeyJpOTE1X2RycGNfaW5mbyIsIGk5MTVfZHJwY19pbmZvLCAwfSwKIAl7 Imk5MTVfcmluZ19mcmVxX3RhYmxlIiwgaTkxNV9yaW5nX2ZyZXFfdGFibGUsIDB9LAogCXsiaTkx NV9mcm9udGJ1ZmZlcl90cmFja2luZyIsIGk5MTVfZnJvbnRidWZmZXJfdHJhY2tpbmcsIDB9LApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggMjFiMzZhNjE0M2I5Li43NDE4ZjgxYjNjZDUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtMTU0OCwxMCArMTU0OCw3IEBAIHZvaWQgaTkxNV9k cml2ZXJfcmVtb3ZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCiAJaTkxNV9kcml2 ZXJfbW9kZXNldF9yZW1vdmUoaTkxNSk7CiAKLQkvKiBGcmVlIGVycm9yIHN0YXRlIGFmdGVyIGlu dGVycnVwdHMgYXJlIGZ1bGx5IGRpc2FibGVkLiAqLwotCWNhbmNlbF9kZWxheWVkX3dvcmtfc3lu YygmaTkxNS0+Z3QuaGFuZ2NoZWNrLndvcmspOwogCWk5MTVfcmVzZXRfZXJyb3Jfc3RhdGUoaTkx NSk7Ci0KIAlpOTE1X2dlbV9kcml2ZXJfcmVtb3ZlKGk5MTUpOwogCiAJaW50ZWxfcG93ZXJfZG9t YWluc19kcml2ZXJfcmVtb3ZlKGk5MTUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMTZi ODVjN2Y3ZjIxLi5mOWZlZGRmZGRiZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTg0 Niw3ICsxODQ2LDYgQEAgdm9pZCBpOTE1X2RyaXZlcl9yZW1vdmUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpOwogaW50IGk5MTVfcmVzdW1lX3N3aXRjaGVyb28oc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpOwogaW50IGk5MTVfc3VzcGVuZF9zd2l0Y2hlcm9vKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LCBwbV9tZXNzYWdlX3Qgc3RhdGUpOwogCi12b2lkIGludGVsX2Vu Z2luZV9pbml0X2hhbmdjaGVjayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogaW50 IHZsdl9mb3JjZV9nZnhfY2xvY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBi b29sIG9uKTsKIAogc3RhdGljIGlubGluZSBib29sIGludGVsX2d2dF9hY3RpdmUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmMKaW5kZXggNWNmNGVlZDVhZGQ4Li40NzIzOWRmNjUzZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ncHVfZXJyb3IuYwpAQCAtNTM0LDEwICs1MzQsNiBAQCBzdGF0aWMgdm9pZCBlcnJvcl9w cmludF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKIAl9CiAJZXJy X3ByaW50ZihtLCAiICByaW5nLT5oZWFkOiAweCUwOHhcbiIsIGVlLT5jcHVfcmluZ19oZWFkKTsK IAllcnJfcHJpbnRmKG0sICIgIHJpbmctPnRhaWw6IDB4JTA4eFxuIiwgZWUtPmNwdV9yaW5nX3Rh aWwpOwotCWVycl9wcmludGYobSwgIiAgaGFuZ2NoZWNrIHRpbWVzdGFtcDogJWRtcyAoJWx1JXMp XG4iLAotCQkgICBqaWZmaWVzX3RvX21zZWNzKGVlLT5oYW5nY2hlY2tfdGltZXN0YW1wIC0gZXBv Y2gpLAotCQkgICBlZS0+aGFuZ2NoZWNrX3RpbWVzdGFtcCwKLQkJICAgZWUtPmhhbmdjaGVja190 aW1lc3RhbXAgPT0gZXBvY2ggPyAiOyBlcG9jaCIgOiAiIik7CiAJZXJyX3ByaW50ZihtLCAiICBl bmdpbmUgcmVzZXQgY291bnQ6ICV1XG4iLCBlZS0+cmVzZXRfY291bnQpOwogCiAJZm9yIChuID0g MDsgbiA8IGVlLT5udW1fcG9ydHM7IG4rKykgewpAQCAtNjc5LDExICs2NzUsOCBAQCBzdGF0aWMg dm9pZCBfX2Vycl9wcmludF90b19zZ2woc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAq bSwKIAl0cyA9IGt0aW1lX3RvX3RpbWVzcGVjNjQoZXJyb3ItPnVwdGltZSk7CiAJZXJyX3ByaW50 ZihtLCAiVXB0aW1lOiAlbGxkIHMgJWxkIHVzXG4iLAogCQkgICAoczY0KXRzLnR2X3NlYywgdHMu dHZfbnNlYyAvIE5TRUNfUEVSX1VTRUMpOwotCWVycl9wcmludGYobSwgIkVwb2NoOiAlbHUgamlm ZmllcyAoJXUgSFopXG4iLCBlcnJvci0+ZXBvY2gsIEhaKTsKLQllcnJfcHJpbnRmKG0sICJDYXB0 dXJlOiAlbHUgamlmZmllczsgJWQgbXMgYWdvLCAlZCBtcyBhZnRlciBlcG9jaFxuIiwKLQkJICAg ZXJyb3ItPmNhcHR1cmUsCi0JCSAgIGppZmZpZXNfdG9fbXNlY3MoamlmZmllcyAtIGVycm9yLT5j YXB0dXJlKSwKLQkJICAgamlmZmllc190b19tc2VjcyhlcnJvci0+Y2FwdHVyZSAtIGVycm9yLT5l cG9jaCkpOworCWVycl9wcmludGYobSwgIkNhcHR1cmU6ICVsdSBqaWZmaWVzOyAlZCBtcyBhZ29c biIsCisJCSAgIGVycm9yLT5jYXB0dXJlLCBqaWZmaWVzX3RvX21zZWNzKGppZmZpZXMgLSBlcnJv ci0+Y2FwdHVyZSkpOwogCiAJZm9yIChlZSA9IGVycm9yLT5lbmdpbmU7IGVlOyBlZSA9IGVlLT5u ZXh0KQogCQllcnJfcHJpbnRmKG0sICJBY3RpdmUgcHJvY2VzcyAob24gcmluZyAlcyk6ICVzIFsl ZF1cbiIsCkBAIC03NDIsNyArNzM1LDcgQEAgc3RhdGljIHZvaWQgX19lcnJfcHJpbnRfdG9fc2ds KHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCiAJCWVycl9wcmludGYobSwgIkdU VF9DQUNIRV9FTjogMHglMDh4XG4iLCBlcnJvci0+Z3R0X2NhY2hlKTsKIAogCWZvciAoZWUgPSBl cnJvci0+ZW5naW5lOyBlZTsgZWUgPSBlZS0+bmV4dCkKLQkJZXJyb3JfcHJpbnRfZW5naW5lKG0s IGVlLCBlcnJvci0+ZXBvY2gpOworCQllcnJvcl9wcmludF9lbmdpbmUobSwgZWUsIGVycm9yLT5j YXB0dXJlKTsKIAogCWZvciAoZWUgPSBlcnJvci0+ZW5naW5lOyBlZTsgZWUgPSBlZS0+bmV4dCkg ewogCQljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfb2JqZWN0ICpvYmo7CkBAIC03NzAsNyAr NzYzLDcgQEAgc3RhdGljIHZvaWQgX19lcnJfcHJpbnRfdG9fc2dsKHN0cnVjdCBkcm1faTkxNV9l cnJvcl9zdGF0ZV9idWYgKm0sCiAJCQlmb3IgKGogPSAwOyBqIDwgZWUtPm51bV9yZXF1ZXN0czsg aisrKQogCQkJCWVycm9yX3ByaW50X3JlcXVlc3QobSwgIiAiLAogCQkJCQkJICAgICZlZS0+cmVx dWVzdHNbal0sCi0JCQkJCQkgICAgZXJyb3ItPmVwb2NoKTsKKwkJCQkJCSAgICBlcnJvci0+Y2Fw dHVyZSk7CiAJCX0KIAogCQlwcmludF9lcnJvcl9vYmoobSwgZWUtPmVuZ2luZSwgInJpbmdidWZm ZXIiLCBlZS0+cmluZ2J1ZmZlcik7CkBAIC0xMTQ0LDggKzExMzcsNiBAQCBzdGF0aWMgdm9pZCBl cnJvcl9yZWNvcmRfZW5naW5lX3JlZ2lzdGVycyhzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9y LAogCX0KIAogCWVlLT5pZGxlID0gaW50ZWxfZW5naW5lX2lzX2lkbGUoZW5naW5lKTsKLQlpZiAo IWVlLT5pZGxlKQotCQllZS0+aGFuZ2NoZWNrX3RpbWVzdGFtcCA9IGVuZ2luZS0+aGFuZ2NoZWNr LmFjdGlvbl90aW1lc3RhbXA7CiAJZWUtPnJlc2V0X2NvdW50ID0gaTkxNV9yZXNldF9lbmdpbmVf Y291bnQoJmRldl9wcml2LT5ncHVfZXJyb3IsCiAJCQkJCQkgIGVuZ2luZSk7CiAKQEAgLTE2NTcs MjAgKzE2NDgsNiBAQCBzdGF0aWMgdm9pZCBjYXB0dXJlX3BhcmFtcyhzdHJ1Y3QgaTkxNV9ncHVf c3RhdGUgKmVycm9yKQogCWk5MTVfcGFyYW1zX2NvcHkoJmVycm9yLT5wYXJhbXMsICZpOTE1X21v ZHBhcmFtcyk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBsb25nIGNhcHR1cmVfZmluZF9lcG9jaChj b25zdCBzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yKQotewotCWNvbnN0IHN0cnVjdCBkcm1f aTkxNV9lcnJvcl9lbmdpbmUgKmVlOwotCXVuc2lnbmVkIGxvbmcgZXBvY2ggPSBlcnJvci0+Y2Fw dHVyZTsKLQotCWZvciAoZWUgPSBlcnJvci0+ZW5naW5lOyBlZTsgZWUgPSBlZS0+bmV4dCkgewot CQlpZiAoZWUtPmhhbmdjaGVja190aW1lc3RhbXAgJiYKLQkJICAgIHRpbWVfYmVmb3JlKGVlLT5o YW5nY2hlY2tfdGltZXN0YW1wLCBlcG9jaCkpCi0JCQllcG9jaCA9IGVlLT5oYW5nY2hlY2tfdGlt ZXN0YW1wOwotCX0KLQotCXJldHVybiBlcG9jaDsKLX0KLQogc3RhdGljIHZvaWQgY2FwdHVyZV9m aW5pc2goc3RydWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvcikKIHsKIAlzdHJ1Y3QgaTkxNV9nZ3R0 ICpnZ3R0ID0gJmVycm9yLT5pOTE1LT5nZ3R0OwpAQCAtMTcyMiw4ICsxNjk5LDYgQEAgaTkxNV9j YXB0dXJlX2dwdV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAllcnJvci0+ b3ZlcmxheSA9IGludGVsX292ZXJsYXlfY2FwdHVyZV9lcnJvcl9zdGF0ZShpOTE1KTsKIAllcnJv ci0+ZGlzcGxheSA9IGludGVsX2Rpc3BsYXlfY2FwdHVyZV9lcnJvcl9zdGF0ZShpOTE1KTsKIAot CWVycm9yLT5lcG9jaCA9IGNhcHR1cmVfZmluZF9lcG9jaChlcnJvcik7Ci0KIAljYXB0dXJlX2Zp bmlzaChlcnJvcik7CiAJY29tcHJlc3NfZmluaSgmY29tcHJlc3MpOwogCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuaAppbmRleCA3ZjFjZDBiMWZlZjcuLjRkYzM2ZDZlZTNhMiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oCkBAIC0zNCw3ICszNCw2IEBAIHN0cnVj dCBpOTE1X2dwdV9zdGF0ZSB7CiAJa3RpbWVfdCBib290dGltZTsKIAlrdGltZV90IHVwdGltZTsK IAl1bnNpZ25lZCBsb25nIGNhcHR1cmU7Ci0JdW5zaWduZWQgbG9uZyBlcG9jaDsKIAogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1OwogCkBAIC04Niw3ICs4NSw2IEBAIHN0cnVjdCBpOTE1 X2dwdV9zdGF0ZSB7CiAKIAkJLyogU29mdHdhcmUgdHJhY2tlZCBzdGF0ZSAqLwogCQlib29sIGlk bGU7Ci0JCXVuc2lnbmVkIGxvbmcgaGFuZ2NoZWNrX3RpbWVzdGFtcDsKIAkJaW50IG51bV9yZXF1 ZXN0czsKIAkJdTMyIHJlc2V0X2NvdW50OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3ByaW9saXN0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3By aW9saXN0X3R5cGVzLmgKaW5kZXggYWU4YmIzY2I2MjdlLi43MzJhYWQxNDg4ODEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcHJpb2xpc3RfdHlwZXMuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ByaW9saXN0X3R5cGVzLmgKQEAgLTE2LDYgKzE2LDEyIEBA IGVudW0gewogCUk5MTVfUFJJT1JJVFlfTUlOID0gSTkxNV9DT05URVhUX01JTl9VU0VSX1BSSU9S SVRZIC0gMSwKIAlJOTE1X1BSSU9SSVRZX05PUk1BTCA9IEk5MTVfQ09OVEVYVF9ERUZBVUxUX1BS SU9SSVRZLAogCUk5MTVfUFJJT1JJVFlfTUFYID0gSTkxNV9DT05URVhUX01BWF9VU0VSX1BSSU9S SVRZICsgMSwKKworCS8qIEEgcHJlZW1wdGl2ZSBwdWxzZSB1c2VkIHRvIG1vbml0b3IgdGhlIGhl YWx0aCBvZiBlYWNoIGVuZ2luZSAqLworCUk5MTVfUFJJT1JJVFlfSEVBUlRCRUFULAorCisJLyog SW50ZXJhY3RpdmUgd29ya2xvYWQsIHNjaGVkdWxlZCBmb3IgaW1tZWRpYXRlIHBhZ2VmbGlwcGlu ZyAqLworCUk5MTVfUFJJT1JJVFlfRElTUExBWSwKIH07CiAKICNkZWZpbmUgSTkxNV9VU0VSX1BS SU9SSVRZX1NISUZUIDIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aTkxNV9saXZlX3NlbGZ0ZXN0cy5oCmluZGV4IDFhNmFiY2ZmY2U4MS4uYzIzZDA2YmNhMDllIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0 ZXN0cy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2Vs ZnRlc3RzLmgKQEAgLTE4LDYgKzE4LDcgQEAgc2VsZnRlc3QoZ3RfY29udGV4dHMsIGludGVsX2Nv bnRleHRfbGl2ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChndF9scmMsIGludGVsX2xyY19saXZlX3Nl bGZ0ZXN0cykKIHNlbGZ0ZXN0KGd0X21vY3MsIGludGVsX21vY3NfbGl2ZV9zZWxmdGVzdHMpCiBz ZWxmdGVzdChndF9wbSwgaW50ZWxfZ3RfcG1fbGl2ZV9zZWxmdGVzdHMpCitzZWxmdGVzdChndF9o ZWFydGJlYXQsIGludGVsX2hlYXJ0YmVhdF9saXZlX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KHJlcXVl c3RzLCBpOTE1X3JlcXVlc3RfbGl2ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChhY3RpdmUsIGk5MTVf YWN0aXZlX2xpdmVfc2VsZnRlc3RzKQogc2VsZnRlc3Qob2JqZWN0cywgaTkxNV9nZW1fb2JqZWN0 X2xpdmVfc2VsZnRlc3RzKQotLSAKMi4yNC4wLnJjMAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4