From mboxrd@z Thu Jan 1 00:00:00 1970 From: robert.foss@collabora.com Subject: [PACTH i-g-t v5 08/13] lib/stubs: Add stubs for intel_bufmgr Date: Wed, 27 Jul 2016 13:17:42 -0400 Message-ID: <1469639867-14929-9-git-send-email-robert.foss@collabora.com> References: <1469639867-14929-1-git-send-email-robert.foss@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by gabe.freedesktop.org (Postfix) with ESMTPS id 548426E70C for ; Wed, 27 Jul 2016 17:18:02 +0000 (UTC) In-Reply-To: <1469639867-14929-1-git-send-email-robert.foss@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: daniel.vetter@ffwll.ch, daniel.stone@collabora.com, marius.c.vlad@intel.com, tomeu.vizoso@collabora.com, emil.l.velikov@gmail.com, chris@chris-wilson.co.uk, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogUm9iZXJ0IEZvc3MgPHJvYmVydC5mb3NzQGNvbGxhYm9yYS5jb20+CgpUaGlzIHBhdGNo IHByb3ZpZGVzIHN0dWJzIGZvciBmdW5jdGlvbmFsaXR5IG90aGVyd2lzZSBwcm92aWRlZCBieSBp bnRlbF9idWZtZ3IuCgpUaGUgc3R1YmJlZCBmdW5jdGlvbnMgYWxsIGZhaWwgd2l0aCBhIGNhbGwg dG8gaWd0X3JlcXVpcmVfZihmYWxzZSwiIikuCkRlZmluZXMgYW5kIGVudW1zIGhhdmUgYmVlbiBj b3BpZWQgZnJvbSBsaWJkcm1faW50ZWwuCgpEdWUgdG8gdGhlIHN0dWJiZWQgdGVzdHMgZmFpbGlu ZyB3aXRoIGFuIGlndF9yZXF1aXJlX2YoKSBjYWxsLCB0aGVzZSBzdHVicyBhcmUKbm90IHdlbGwg c3VpdGVkIGZvciBub24tdGVzdHMsIHNpbmNlIHRvb2xzL2JlbmNobWFya3MvZXRjICdza2lwcGlu ZycKZXhlY3V0aW9uIGlzIHVuaGVscGZ1bC4KClNpZ25lZC1vZmYtYnk6IFJvYmVydCBGb3NzIDxy b2JlcnQuZm9zc0Bjb2xsYWJvcmEuY29tPgpSZXZpZXdlZC1ieTogRW1pbCBWZWxpa292IDxlbWls LnZlbGlrb3ZAY29sbGFib3JhLmNvbT4KLS0tCiBsaWIvTWFrZWZpbGUuYW0gICAgICAgICAgICAg IHwgICA2ICsKIGxpYi9zdHVicy9kcm0vUkVBRE1FICAgICAgICAgfCAgIDQgKwogbGliL3N0dWJz L2RybS9pbnRlbF9idWZtZ3IuYyB8IDI2OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIGxpYi9zdHVicy9kcm0vaW50ZWxfYnVmbWdyLmggfCAzMjEgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA2MDAgaW5zZXJ0 aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9zdHVicy9kcm0vUkVBRE1FCiBjcmVhdGUg bW9kZSAxMDA2NDQgbGliL3N0dWJzL2RybS9pbnRlbF9idWZtZ3IuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGxpYi9zdHVicy9kcm0vaW50ZWxfYnVmbWdyLmgKCmRpZmYgLS1naXQgYS9saWIvTWFrZWZp bGUuYW0gYi9saWIvTWFrZWZpbGUuYW0KaW5kZXggZDJhZTk4ZC4uMzY1ZDdkOSAxMDA2NDQKLS0t IGEvbGliL01ha2VmaWxlLmFtCisrKyBiL2xpYi9NYWtlZmlsZS5hbQpAQCAtMTQsNiArMTQsMTIg QEAgaWYgSEFWRV9MSUJEUk1fVkM0CiAgICAgICAgIGlndF92YzQuaAogZW5kaWYKIAoraWYgIUhB VkVfTElCRFJNX0lOVEVMCisgICAgbGliaW50ZWxfdG9vbHNfbGFfU09VUkNFUyArPSAJXAorICAg ICAgICBzdHVicy9kcm0vaW50ZWxfYnVmbWdyLmMJXAorICAgICAgICBzdHVicy9kcm0vaW50ZWxf YnVmbWdyLmgKK2VuZGlmCisKIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpCiBBTV9DRkxB R1MgPSAkKENXQVJORkxBR1MpICQoRFJNX0NGTEFHUykgJChQQ0lBQ0NFU1NfQ0ZMQUdTKSAkKExJ QlVOV0lORF9DRkxBR1MpICQoREVCVUdfQ0ZMQUdTKSBcCiAJICAgIC1ESUdUX1NSQ0RJUj1cIiIk KGFic190b3Bfc3JjZGlyKS90ZXN0cyJcIiBcCmRpZmYgLS1naXQgYS9saWIvc3R1YnMvZHJtL1JF QURNRSBiL2xpYi9zdHVicy9kcm0vUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjc5ZjJiNWYKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvc3R1YnMvZHJtL1JFQURNRQpA QCAtMCwwICsxLDQgQEAKK2ludGVsX2J1Zm1nci5oIGlzIGEgbG9jYWwgY29weSBvZiB0aGUgZmls ZSBwcm92aWRlZCBieSBsaWJkcm0gKGludGVsL2ludGVsX2J1Zm1nci5oKS4KKworQmVmb3JlIHJl bGVhc2luZyBpLWctdCBhIGN1cnJlbnQgY29weSBvZiBpbnRlbF9idWZtZ3IuaCBzaG91bGQgYmUg Y29waWVkIGludG8KK3RoaXMgZGlyZWN0b3J5IG9mIGktZy10LgpkaWZmIC0tZ2l0IGEvbGliL3N0 dWJzL2RybS9pbnRlbF9idWZtZ3IuYyBiL2xpYi9zdHVicy9kcm0vaW50ZWxfYnVmbWdyLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMxYzE5NgotLS0gL2Rldi9udWxsCisr KyBiL2xpYi9zdHVicy9kcm0vaW50ZWxfYnVmbWdyLmMKQEAgLTAsMCArMSwyNjkgQEAKKyNpbmNs dWRlIDxzdGRib29sLmg+CisKKyNpbmNsdWRlICJpZ3RfY29yZS5oIgorI2luY2x1ZGUgImludGVs X2J1Zm1nci5oIgorCitjb25zdCBjaGFyICogY29uc3QgbWlzc2luZ19zdXBwb3J0X3N0ciA9ICJO b3QgY29tcGlsZWQgd2l0aCBsaWJkcm1faW50ZWwgc3VwcG9ydFxuIjsKKworZHJtX2ludGVsX2J1 Zm1nciAqZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChpbnQgZmQsIGludCBiYXRjaF9zaXplKQor eworCWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworCXJldHVybiAo ZHJtX2ludGVsX2J1Zm1nciAqKSBOVUxMOworfQorCit2b2lkIGRybV9pbnRlbF9ib191bnJlZmVy ZW5jZShkcm1faW50ZWxfYm8gKmJvKQoreworCWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdf c3VwcG9ydF9zdHIpOworfQorCitkcm1faW50ZWxfYm8gKmRybV9pbnRlbF9ib19hbGxvYyhkcm1f aW50ZWxfYnVmbWdyICpidWZtZ3IsIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJIHVuc2lnbmVkIGxv bmcgc2l6ZSwgdW5zaWduZWQgaW50IGFsaWdubWVudCkKK3sKKwlpZ3RfcmVxdWlyZV9mKGZhbHNl LCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4gKGRybV9pbnRlbF9ibyAqKSBOVUxMOwor fQorCitpbnQgZHJtX2ludGVsX2JvX3N1YmRhdGEoZHJtX2ludGVsX2JvICpibywgdW5zaWduZWQg bG9uZyBvZmZzZXQsCisJCQkgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCB2b2lkICpkYXRhKQor eworCWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworCXJldHVybiAw OworfQorCitpbnQgZHJtX2ludGVsX2dlbV9ib19jb250ZXh0X2V4ZWMoZHJtX2ludGVsX2JvICpi bywgZHJtX2ludGVsX2NvbnRleHQgKmN0eCwKKwkJCQkgIGludCB1c2VkLCB1bnNpZ25lZCBpbnQg ZmxhZ3MpCit7CisJaWd0X3JlcXVpcmVfZihmYWxzZSwgbWlzc2luZ19zdXBwb3J0X3N0cik7CisJ cmV0dXJuIDA7Cit9CisKK2ludCBkcm1faW50ZWxfYm9fZW1pdF9yZWxvYyhkcm1faW50ZWxfYm8g KmJvLCB1aW50MzJfdCBvZmZzZXQsCisJCQkJZHJtX2ludGVsX2JvICp0YXJnZXRfYm8sIHVpbnQz Ml90IHRhcmdldF9vZmZzZXQsCisJCQkJdWludDMyX3QgcmVhZF9kb21haW5zLCB1aW50MzJfdCB3 cml0ZV9kb21haW4pCit7CisJaWd0X3JlcXVpcmVfZihmYWxzZSwgbWlzc2luZ19zdXBwb3J0X3N0 cik7CisJcmV0dXJuIDA7Cit9CisKK2ludCBkcm1faW50ZWxfYm9fZW1pdF9yZWxvY19mZW5jZShk cm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCBvZmZzZXQsCisJCQkJICBkcm1faW50ZWxfYm8gKnRh cmdldF9ibywKKwkJCQkgIHVpbnQzMl90IHRhcmdldF9vZmZzZXQsCisJCQkJICB1aW50MzJfdCBy ZWFkX2RvbWFpbnMsIHVpbnQzMl90IHdyaXRlX2RvbWFpbikKK3sKKwlpZ3RfcmVxdWlyZV9mKGZh bHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4gMDsKK30KKworaW50IGRybV9pbnRl bF9ib19nZXRfdGlsaW5nKGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90ICogdGlsaW5nX21vZGUs CisJCQkgICAgdWludDMyX3QgKiBzd2l6emxlX21vZGUpCit7CisJaWd0X3JlcXVpcmVfZihmYWxz ZSwgbWlzc2luZ19zdXBwb3J0X3N0cik7CisJcmV0dXJuIDA7Cit9CisKK2ludCBkcm1faW50ZWxf Ym9fbXJiX2V4ZWMoZHJtX2ludGVsX2JvICpibywgaW50IHVzZWQsCisJCQkgIHN0cnVjdCBkcm1f Y2xpcF9yZWN0ICpjbGlwcmVjdHMsIGludCBudW1fY2xpcHJlY3RzLAorCQkJICBpbnQgRFI0LCB1 bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisJaWd0X3JlcXVpcmVfZihmYWxzZSwgbWlzc2luZ19zdXBw b3J0X3N0cik7CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgZHJtX2ludGVsX2J1Zm1ncl9nZW1fc2V0 X2F1Yl9hbm5vdGF0aW9ucyhkcm1faW50ZWxfYm8gKmJvLAorCQkJCQkgICAgICBkcm1faW50ZWxf YXViX2Fubm90YXRpb24gKmFubm90YXRpb25zLAorCQkJCQkgICAgICB1bnNpZ25lZCBjb3VudCkK K3sKKwlpZ3RfcmVxdWlyZV9mKGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKK30KKwordm9p ZCBkcm1faW50ZWxfYnVmbWdyX2dlbV9lbmFibGVfcmV1c2UoZHJtX2ludGVsX2J1Zm1nciAqYnVm bWdyKQoreworCWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworfQor CitpbnQgZHJtX2ludGVsX2JvX2V4ZWMoZHJtX2ludGVsX2JvICpibywgaW50IHVzZWQsCisJCSAg ICAgIHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwcmVjdHMsIGludCBudW1fY2xpcHJlY3RzLCBp bnQgRFI0KQoreworCWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOwor CXJldHVybiAwOworfQorCit2b2lkIGRybV9pbnRlbF9idWZtZ3JfZGVzdHJveShkcm1faW50ZWxf YnVmbWdyICpidWZtZ3IpCit7CisJaWd0X3JlcXVpcmVfZihmYWxzZSwgbWlzc2luZ19zdXBwb3J0 X3N0cik7Cit9CisKK3ZvaWQgZHJtX2ludGVsX2JvX3dhaXRfcmVuZGVyaW5nKGRybV9pbnRlbF9i byAqYm8pCit7CisJaWd0X3JlcXVpcmVfZihmYWxzZSwgbWlzc2luZ19zdXBwb3J0X3N0cik7Cit9 CisKK2ludCBkcm1faW50ZWxfYm9fZ2V0X3N1YmRhdGEoZHJtX2ludGVsX2JvICpibywgdW5zaWdu ZWQgbG9uZyBvZmZzZXQsCisJCQkgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdm9pZCAqZGF0YSkK K3sKKwlpZ3RfcmVxdWlyZV9mKGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4g MDsKK30KKworaW50IGRybV9pbnRlbF9ib19tYXAoZHJtX2ludGVsX2JvICpibywgaW50IHdyaXRl X2VuYWJsZSkKK3sKKwlpZ3RfcmVxdWlyZV9mKGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsK KwlyZXR1cm4gMDsKK30KKworaW50IGRybV9pbnRlbF9nZW1fYm9fbWFwX2d0dChkcm1faW50ZWxf Ym8gKmJvKQoreworCWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOwor CXJldHVybiAwOworfQorCit2b2lkIGRybV9pbnRlbF9idWZtZ3JfZ2VtX2VuYWJsZV9mZW5jZWRf cmVsb2NzKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncikKK3sKKwlpZ3RfcmVxdWlyZV9mKGZhbHNl LCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKK30KKworaW50IGRybV9pbnRlbF9ib191bm1hcChkcm1f aW50ZWxfYm8gKmJvKQoreworCWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9z dHIpOworCXJldHVybiAwOworfQorCitpbnQgZHJtX2ludGVsX2JvX2ZsaW5rKGRybV9pbnRlbF9i byAqYm8sIHVpbnQzMl90ICogbmFtZSkKK3sKKwlpZ3RfcmVxdWlyZV9mKGZhbHNlLCBtaXNzaW5n X3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4gMDsKK30KKworZHJtX2ludGVsX2JvICpkcm1faW50ZWxf Ym9fZ2VtX2NyZWF0ZV9mcm9tX25hbWUoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJCQkJ Y29uc3QgY2hhciAqbmFtZSwKKwkJCQkJCXVuc2lnbmVkIGludCBoYW5kbGUpCit7CisJaWd0X3Jl cXVpcmVfZihmYWxzZSwgbWlzc2luZ19zdXBwb3J0X3N0cik7CisJcmV0dXJuIChkcm1faW50ZWxf Ym8gKikgTlVMTDsKK30KKworaW50IGRybV9pbnRlbF9ib19nZW1fZXhwb3J0X3RvX3ByaW1lKGRy bV9pbnRlbF9ibyAqYm8sIGludCAqcHJpbWVfZmQpCit7CisJaWd0X3JlcXVpcmVfZihmYWxzZSwg bWlzc2luZ19zdXBwb3J0X3N0cik7CisJcmV0dXJuIDA7Cit9CisKK2RybV9pbnRlbF9ibyAqZHJt X2ludGVsX2JvX2dlbV9jcmVhdGVfZnJvbV9wcmltZShkcm1faW50ZWxfYnVmbWdyICpidWZtZ3Is CisJCQkJCQkgaW50IHByaW1lX2ZkLCBpbnQgc2l6ZSkKK3sKKwlpZ3RfcmVxdWlyZV9mKGZhbHNl LCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4gKGRybV9pbnRlbF9ibyAqKSBOVUxMOwor fQorCit2b2lkIGRybV9pbnRlbF9idWZtZ3JfZ2VtX3NldF92bWFfY2FjaGVfc2l6ZShkcm1faW50 ZWxfYnVmbWdyICpidWZtZ3IsCisJCQkJCSAgICAgaW50IGxpbWl0KQoreworCWlndF9yZXF1aXJl X2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworfQorCitpbnQgZHJtX2ludGVsX2dlbV9i b191bm1hcF9ndHQoZHJtX2ludGVsX2JvICpibykKK3sKKwlpZ3RfcmVxdWlyZV9mKGZhbHNlLCBt aXNzaW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4gMDsKK30KKworZHJtX2ludGVsX2NvbnRleHQg KmRybV9pbnRlbF9nZW1fY29udGV4dF9jcmVhdGUoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyKQor eworCWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworCXJldHVybiAo ZHJtX2ludGVsX2JvICopIE5VTEw7Cit9CisKK3ZvaWQgZHJtX2ludGVsX2dlbV9jb250ZXh0X2Rl c3Ryb3koZHJtX2ludGVsX2NvbnRleHQgKmN0eCkKK3sKKwlpZ3RfcmVxdWlyZV9mKGZhbHNlLCBt aXNzaW5nX3N1cHBvcnRfc3RyKTsKK30KKworZHJtX2ludGVsX2JvICpkcm1faW50ZWxfYm9fYWxs b2NfdGlsZWQoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJCSAgICAgICBjb25zdCBjaGFy ICpuYW1lLAorCQkJCSAgICAgICBpbnQgeCwgaW50IHksIGludCBjcHAsCisJCQkJICAgICAgIHVp bnQzMl90ICp0aWxpbmdfbW9kZSwKKwkJCQkgICAgICAgdW5zaWduZWQgbG9uZyAqcGl0Y2gsCisJ CQkJICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCit7CisJaWd0X3JlcXVpcmVfZihmYWxzZSwg bWlzc2luZ19zdXBwb3J0X3N0cik7CisJcmV0dXJuIChkcm1faW50ZWxfYm8gKikgTlVMTDsKK30K Kwordm9pZCBkcm1faW50ZWxfYnVmbWdyX2dlbV9zZXRfYXViX2ZpbGVuYW1lKGRybV9pbnRlbF9i dWZtZ3IgKmJ1Zm1nciwKKwkJCQkJICBjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKwlpZ3RfcmVx dWlyZV9mKGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKK30KKwordm9pZCBkcm1faW50ZWxf YnVmbWdyX2dlbV9zZXRfYXViX2R1bXAoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLCBpbnQgZW5h YmxlKQoreworCWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworfQor Cit2b2lkIGRybV9pbnRlbF9nZW1fYm9fYXViX2R1bXBfYm1wKGRybV9pbnRlbF9ibyAqYm8sCisJ CQkJICAgaW50IHgxLCBpbnQgeTEsIGludCB3aWR0aCwgaW50IGhlaWdodCwKKwkJCQkgICBlbnVt IGF1Yl9kdW1wX2JtcF9mb3JtYXQgZm9ybWF0LAorCQkJCSAgIGludCBwaXRjaCwgaW50IG9mZnNl dCkKK3sKKwlpZ3RfcmVxdWlyZV9mKGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKK30KKwor dm9pZCBkcm1faW50ZWxfZ2VtX2JvX3N0YXJ0X2d0dF9hY2Nlc3MoZHJtX2ludGVsX2JvICpibywg aW50IHdyaXRlX2VuYWJsZSkKK3sKKwlpZ3RfcmVxdWlyZV9mKGZhbHNlLCBtaXNzaW5nX3N1cHBv cnRfc3RyKTsKK30KKworaW50IGRybV9pbnRlbF9ib19zZXRfdGlsaW5nKGRybV9pbnRlbF9ibyAq Ym8sIHVpbnQzMl90ICogdGlsaW5nX21vZGUsCisJCQkJdWludDMyX3Qgc3RyaWRlKQoreworCWln dF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworCXJldHVybiAwOworfQor CitpbnQgZHJtX2ludGVsX2JvX2Rpc2FibGVfcmV1c2UoZHJtX2ludGVsX2JvICpibykKK3sKKwlp Z3RfcmVxdWlyZV9mKGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4gMDsKK30K Kwordm9pZCBkcm1faW50ZWxfYm9fcmVmZXJlbmNlKGRybV9pbnRlbF9ibyAqYm8pCit7CisJaWd0 X3JlcXVpcmVfZihmYWxzZSwgbWlzc2luZ19zdXBwb3J0X3N0cik7Cit9CisKK2ludCBkcm1faW50 ZWxfYnVmbWdyX2dlbV9nZXRfZGV2aWQoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyKQoreworCWln dF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworCXJldHVybiAwOworfQor Citkcm1faW50ZWxfYm8gKmRybV9pbnRlbF9ib19hbGxvY19mb3JfcmVuZGVyKGRybV9pbnRlbF9i dWZtZ3IgKmJ1Zm1nciwKKwkJCQkJICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJCSAgICB1bnNp Z25lZCBsb25nIHNpemUsCisJCQkJCSAgICB1bnNpZ25lZCBpbnQgYWxpZ25tZW50KQoreworCWln dF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworCXJldHVybiAoZHJtX2lu dGVsX2JvICopIE5VTEw7Cit9CisKK2ludCBkcm1faW50ZWxfYm9fcmVmZXJlbmNlcyhkcm1faW50 ZWxfYm8gKmJvLCBkcm1faW50ZWxfYm8gKnRhcmdldF9ibykKK3sKKwlpZ3RfcmVxdWlyZV9mKGZh bHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4gMDsKK30KKworaW50IGRybV9pbnRl bF9nZW1fYm9fd2FpdChkcm1faW50ZWxfYm8gKmJvLCBpbnQ2NF90IHRpbWVvdXRfbnMpCit7CisJ aWd0X3JlcXVpcmVfZihmYWxzZSwgbWlzc2luZ19zdXBwb3J0X3N0cik7CisJcmV0dXJuIDA7Cit9 CisKK2RybV9pbnRlbF9ibyAqZHJtX2ludGVsX2JvX2FsbG9jX3VzZXJwdHIoZHJtX2ludGVsX2J1 Zm1nciAqYnVmbWdyLAorCQkJCQkgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJIHZvaWQgKmFkZHIs IHVpbnQzMl90IHRpbGluZ19tb2RlLAorCQkJCQkgdWludDMyX3Qgc3RyaWRlLCB1bnNpZ25lZCBs b25nIHNpemUsCisJCQkJCSB1bnNpZ25lZCBsb25nIGZsYWdzKQoreworCWlndF9yZXF1aXJlX2Yo ZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworCXJldHVybiBOVUxMOworfQpkaWZmIC0tZ2l0 IGEvbGliL3N0dWJzL2RybS9pbnRlbF9idWZtZ3IuaCBiL2xpYi9zdHVicy9kcm0vaW50ZWxfYnVm bWdyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFhYmJjZAotLS0gL2Rl di9udWxsCisrKyBiL2xpYi9zdHVicy9kcm0vaW50ZWxfYnVmbWdyLmgKQEAgLTAsMCArMSwzMjEg QEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAwOC0yMDEyIEludGVsIENvcnBvcmF0aW9uCisgKgor ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0 aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMg ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK KyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVk IGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2Fy ZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8g RVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICog RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT RSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6 CisgKiAgICBFcmljIEFuaG9sdCA8ZXJpY0BhbmhvbHQubmV0PgorICoKKyAqLworCisvKioKKyAq IEBmaWxlIGludGVsX2J1Zm1nci5oCisgKgorICogUHVibGljIGRlZmluaXRpb25zIG9mIEludGVs LXNwZWNpZmljIGJ1Zm1nciBmdW5jdGlvbnMuCisgKi8KKworI2lmbmRlZiBJTlRFTF9CVUZNR1Jf SAorI2RlZmluZSBJTlRFTF9CVUZNR1JfSAorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRl IDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1 cykKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3N0cnVjdCBkcm1fY2xpcF9yZWN0OworCit0eXBl ZGVmIHN0cnVjdCBfZHJtX2ludGVsX2J1Zm1nciBkcm1faW50ZWxfYnVmbWdyOwordHlwZWRlZiBz dHJ1Y3QgX2RybV9pbnRlbF9jb250ZXh0IGRybV9pbnRlbF9jb250ZXh0OwordHlwZWRlZiBzdHJ1 Y3QgX2RybV9pbnRlbF9ibyBkcm1faW50ZWxfYm87CisKK3N0cnVjdCBfZHJtX2ludGVsX2JvIHsK KwkvKioKKwkgKiBTaXplIGluIGJ5dGVzIG9mIHRoZSBidWZmZXIgb2JqZWN0LgorCSAqCisJICog VGhlIHNpemUgbWF5IGJlIGxhcmdlciB0aGFuIHRoZSBzaXplIG9yaWdpbmFsbHkgcmVxdWVzdGVk IGZvciB0aGUKKwkgKiBhbGxvY2F0aW9uLCBzdWNoIGFzIGJlaW5nIGFsaWduZWQgdG8gcGFnZSBz aXplLgorCSAqLworCXVuc2lnbmVkIGxvbmcgc2l6ZTsKKworCS8qKgorCSAqIEFsaWdubWVudCBy ZXF1aXJlbWVudCBmb3Igb2JqZWN0CisJICoKKwkgKiBVc2VkIGZvciBHVFQgbWFwcGluZyAmIHBp bm5pbmcgdGhlIG9iamVjdC4KKwkgKi8KKwl1bnNpZ25lZCBsb25nIGFsaWduOworCisJLyoqCisJ ICogRGVwcmVjYXRlZCBmaWVsZCBjb250YWluaW5nIChwb3NzaWJseSB0aGUgbG93IDMyLWJpdHMg b2YpIHRoZSBsYXN0CisJICogc2VlbiB2aXJ0dWFsIGNhcmQgYWRkcmVzcy4gIFVzZSBvZmZzZXQ2 NCBpbnN0ZWFkLgorCSAqLworCXVuc2lnbmVkIGxvbmcgb2Zmc2V0OworCisJLyoqCisJICogVmly dHVhbCBhZGRyZXNzIGZvciBhY2Nlc3NpbmcgdGhlIGJ1ZmZlciBkYXRhLiAgT25seSB2YWxpZCB3 aGlsZQorCSAqIG1hcHBlZC4KKwkgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworCXZvaWQgKnZpcnQ7 CisjZWxzZQorCXZvaWQgKnZpcnR1YWw7CisjZW5kaWYKKworCS8qKiBCdWZmZXIgbWFuYWdlciBj b250ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGJ1ZmZlciBvYmplY3QgKi8KKwlkcm1faW50ZWxf YnVmbWdyICpidWZtZ3I7CisKKwkvKioKKwkgKiBNTS1zcGVjaWZpYyBoYW5kbGUgZm9yIGFjY2Vz c2luZyBvYmplY3QKKwkgKi8KKwlpbnQgaGFuZGxlOworCisJLyoqCisJICogTGFzdCBzZWVuIGNh cmQgdmlydHVhbCBhZGRyZXNzIChvZmZzZXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZQorCSAq IGFwZXJ0dXJlKSBmb3IgdGhlIG9iamVjdC4gIFRoaXMgc2hvdWxkIGJlIHVzZWQgdG8gZmlsbCBy ZWxvY2F0aW9uCisJICogZW50cmllcyB3aGVuIGNhbGxpbmcgZHJtX2ludGVsX2JvX2VtaXRfcmVs b2MoKQorCSAqLworCXVpbnQ2NF90IG9mZnNldDY0OworfTsKKworZW51bSBhdWJfZHVtcF9ibXBf Zm9ybWF0IHsKKwlBVUJfRFVNUF9CTVBfRk9STUFUXzhCSVQgPSAxLAorCUFVQl9EVU1QX0JNUF9G T1JNQVRfQVJHQl80NDQ0ID0gNCwKKwlBVUJfRFVNUF9CTVBfRk9STUFUX0FSR0JfMDg4OCA9IDYs CisJQVVCX0RVTVBfQk1QX0ZPUk1BVF9BUkdCXzg4ODggPSA3LAorfTsKKwordHlwZWRlZiBzdHJ1 Y3QgX2RybV9pbnRlbF9hdWJfYW5ub3RhdGlvbiB7CisJdWludDMyX3QgdHlwZTsKKwl1aW50MzJf dCBzdWJ0eXBlOworCXVpbnQzMl90IGVuZGluZ19vZmZzZXQ7Cit9IGRybV9pbnRlbF9hdWJfYW5u b3RhdGlvbjsKKworI2RlZmluZSBCT19BTExPQ19GT1JfUkVOREVSICgxPDwwKQorCitkcm1faW50 ZWxfYm8gKmRybV9pbnRlbF9ib19hbGxvYyhkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsIGNvbnN0 IGNoYXIgKm5hbWUsCisJCQkJIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgaW50IGFsaWdu bWVudCk7Citkcm1faW50ZWxfYm8gKmRybV9pbnRlbF9ib19hbGxvY19mb3JfcmVuZGVyKGRybV9p bnRlbF9idWZtZ3IgKmJ1Zm1nciwKKwkJCQkJICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJCSAg ICB1bnNpZ25lZCBsb25nIHNpemUsCisJCQkJCSAgICB1bnNpZ25lZCBpbnQgYWxpZ25tZW50KTsK K2RybV9pbnRlbF9ibyAqZHJtX2ludGVsX2JvX2FsbG9jX3VzZXJwdHIoZHJtX2ludGVsX2J1Zm1n ciAqYnVmbWdyLAorCQkJCQljb25zdCBjaGFyICpuYW1lLAorCQkJCQl2b2lkICphZGRyLCB1aW50 MzJfdCB0aWxpbmdfbW9kZSwKKwkJCQkJdWludDMyX3Qgc3RyaWRlLCB1bnNpZ25lZCBsb25nIHNp emUsCisJCQkJCXVuc2lnbmVkIGxvbmcgZmxhZ3MpOworZHJtX2ludGVsX2JvICpkcm1faW50ZWxf Ym9fYWxsb2NfdGlsZWQoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJCSAgICAgICBjb25z dCBjaGFyICpuYW1lLAorCQkJCSAgICAgICBpbnQgeCwgaW50IHksIGludCBjcHAsCisJCQkJICAg ICAgIHVpbnQzMl90ICp0aWxpbmdfbW9kZSwKKwkJCQkgICAgICAgdW5zaWduZWQgbG9uZyAqcGl0 Y2gsCisJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwordm9pZCBkcm1faW50ZWxfYm9f cmVmZXJlbmNlKGRybV9pbnRlbF9ibyAqYm8pOwordm9pZCBkcm1faW50ZWxfYm9fdW5yZWZlcmVu Y2UoZHJtX2ludGVsX2JvICpibyk7CitpbnQgZHJtX2ludGVsX2JvX21hcChkcm1faW50ZWxfYm8g KmJvLCBpbnQgd3JpdGVfZW5hYmxlKTsKK2ludCBkcm1faW50ZWxfYm9fdW5tYXAoZHJtX2ludGVs X2JvICpibyk7CisKK2ludCBkcm1faW50ZWxfYm9fc3ViZGF0YShkcm1faW50ZWxfYm8gKmJvLCB1 bnNpZ25lZCBsb25nIG9mZnNldCwKKwkJCSB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IHZvaWQg KmRhdGEpOworaW50IGRybV9pbnRlbF9ib19nZXRfc3ViZGF0YShkcm1faW50ZWxfYm8gKmJvLCB1 bnNpZ25lZCBsb25nIG9mZnNldCwKKwkJCSAgICAgdW5zaWduZWQgbG9uZyBzaXplLCB2b2lkICpk YXRhKTsKK3ZvaWQgZHJtX2ludGVsX2JvX3dhaXRfcmVuZGVyaW5nKGRybV9pbnRlbF9ibyAqYm8p OworCit2b2lkIGRybV9pbnRlbF9idWZtZ3Jfc2V0X2RlYnVnKGRybV9pbnRlbF9idWZtZ3IgKmJ1 Zm1nciwgaW50IGVuYWJsZV9kZWJ1Zyk7Cit2b2lkIGRybV9pbnRlbF9idWZtZ3JfZGVzdHJveShk cm1faW50ZWxfYnVmbWdyICpidWZtZ3IpOworaW50IGRybV9pbnRlbF9ib19leGVjKGRybV9pbnRl bF9ibyAqYm8sIGludCB1c2VkLAorCQkgICAgICBzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAqY2xpcHJl Y3RzLCBpbnQgbnVtX2NsaXByZWN0cywgaW50IERSNCk7CitpbnQgZHJtX2ludGVsX2JvX21yYl9l eGVjKGRybV9pbnRlbF9ibyAqYm8sIGludCB1c2VkLAorCQkJc3RydWN0IGRybV9jbGlwX3JlY3Qg KmNsaXByZWN0cywgaW50IG51bV9jbGlwcmVjdHMsIGludCBEUjQsCisJCQl1bnNpZ25lZCBpbnQg ZmxhZ3MpOworaW50IGRybV9pbnRlbF9idWZtZ3JfY2hlY2tfYXBlcnR1cmVfc3BhY2UoZHJtX2lu dGVsX2JvICoqIGJvX2FycmF5LCBpbnQgY291bnQpOworCitpbnQgZHJtX2ludGVsX2JvX2VtaXRf cmVsb2MoZHJtX2ludGVsX2JvICpibywgdWludDMyX3Qgb2Zmc2V0LAorCQkJICAgIGRybV9pbnRl bF9ibyAqdGFyZ2V0X2JvLCB1aW50MzJfdCB0YXJnZXRfb2Zmc2V0LAorCQkJICAgIHVpbnQzMl90 IHJlYWRfZG9tYWlucywgdWludDMyX3Qgd3JpdGVfZG9tYWluKTsKK2ludCBkcm1faW50ZWxfYm9f ZW1pdF9yZWxvY19mZW5jZShkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCBvZmZzZXQsCisJCQkJ ICBkcm1faW50ZWxfYm8gKnRhcmdldF9ibywKKwkJCQkgIHVpbnQzMl90IHRhcmdldF9vZmZzZXQs CisJCQkJICB1aW50MzJfdCByZWFkX2RvbWFpbnMsIHVpbnQzMl90IHdyaXRlX2RvbWFpbik7Citp bnQgZHJtX2ludGVsX2JvX3Bpbihkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCBhbGlnbm1lbnQp OworaW50IGRybV9pbnRlbF9ib191bnBpbihkcm1faW50ZWxfYm8gKmJvKTsKK2ludCBkcm1faW50 ZWxfYm9fc2V0X3RpbGluZyhkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCAqIHRpbGluZ19tb2Rl LAorCQkJICAgIHVpbnQzMl90IHN0cmlkZSk7CitpbnQgZHJtX2ludGVsX2JvX2dldF90aWxpbmco ZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgKiB0aWxpbmdfbW9kZSwKKwkJCSAgICB1aW50MzJf dCAqIHN3aXp6bGVfbW9kZSk7CitpbnQgZHJtX2ludGVsX2JvX2ZsaW5rKGRybV9pbnRlbF9ibyAq Ym8sIHVpbnQzMl90ICogbmFtZSk7CitpbnQgZHJtX2ludGVsX2JvX2J1c3koZHJtX2ludGVsX2Jv ICpibyk7CitpbnQgZHJtX2ludGVsX2JvX21hZHZpc2UoZHJtX2ludGVsX2JvICpibywgaW50IG1h ZHYpOworaW50IGRybV9pbnRlbF9ib191c2VfNDhiX2FkZHJlc3NfcmFuZ2UoZHJtX2ludGVsX2Jv ICpibywgdWludDMyX3QgZW5hYmxlKTsKK2ludCBkcm1faW50ZWxfYm9fc2V0X3NvZnRwaW5fb2Zm c2V0KGRybV9pbnRlbF9ibyAqYm8sIHVpbnQ2NF90IG9mZnNldCk7CisKK2ludCBkcm1faW50ZWxf Ym9fZGlzYWJsZV9yZXVzZShkcm1faW50ZWxfYm8gKmJvKTsKK2ludCBkcm1faW50ZWxfYm9faXNf cmV1c2FibGUoZHJtX2ludGVsX2JvICpibyk7CitpbnQgZHJtX2ludGVsX2JvX3JlZmVyZW5jZXMo ZHJtX2ludGVsX2JvICpibywgZHJtX2ludGVsX2JvICp0YXJnZXRfYm8pOworCisvKiBkcm1faW50 ZWxfYnVmbWdyX2dlbS5jICovCitkcm1faW50ZWxfYnVmbWdyICpkcm1faW50ZWxfYnVmbWdyX2dl bV9pbml0KGludCBmZCwgaW50IGJhdGNoX3NpemUpOworZHJtX2ludGVsX2JvICpkcm1faW50ZWxf Ym9fZ2VtX2NyZWF0ZV9mcm9tX25hbWUoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJCQkJ Y29uc3QgY2hhciAqbmFtZSwKKwkJCQkJCXVuc2lnbmVkIGludCBoYW5kbGUpOwordm9pZCBkcm1f aW50ZWxfYnVmbWdyX2dlbV9lbmFibGVfcmV1c2UoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyKTsK K3ZvaWQgZHJtX2ludGVsX2J1Zm1ncl9nZW1fZW5hYmxlX2ZlbmNlZF9yZWxvY3MoZHJtX2ludGVs X2J1Zm1nciAqYnVmbWdyKTsKK3ZvaWQgZHJtX2ludGVsX2J1Zm1ncl9nZW1fc2V0X3ZtYV9jYWNo ZV9zaXplKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKKwkJCQkJICAgICBpbnQgbGltaXQpOwor aW50IGRybV9pbnRlbF9nZW1fYm9fbWFwX3Vuc3luY2hyb25pemVkKGRybV9pbnRlbF9ibyAqYm8p OworaW50IGRybV9pbnRlbF9nZW1fYm9fbWFwX2d0dChkcm1faW50ZWxfYm8gKmJvKTsKK2ludCBk cm1faW50ZWxfZ2VtX2JvX3VubWFwX2d0dChkcm1faW50ZWxfYm8gKmJvKTsKKworaW50IGRybV9p bnRlbF9nZW1fYm9fZ2V0X3JlbG9jX2NvdW50KGRybV9pbnRlbF9ibyAqYm8pOwordm9pZCBkcm1f aW50ZWxfZ2VtX2JvX2NsZWFyX3JlbG9jcyhkcm1faW50ZWxfYm8gKmJvLCBpbnQgc3RhcnQpOwor dm9pZCBkcm1faW50ZWxfZ2VtX2JvX3N0YXJ0X2d0dF9hY2Nlc3MoZHJtX2ludGVsX2JvICpibywg aW50IHdyaXRlX2VuYWJsZSk7CisKK3ZvaWQKK2RybV9pbnRlbF9idWZtZ3JfZ2VtX3NldF9hdWJf ZmlsZW5hbWUoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJCSAgICAgIGNvbnN0IGNoYXIg KmZpbGVuYW1lKTsKK3ZvaWQgZHJtX2ludGVsX2J1Zm1ncl9nZW1fc2V0X2F1Yl9kdW1wKGRybV9p bnRlbF9idWZtZ3IgKmJ1Zm1nciwgaW50IGVuYWJsZSk7Cit2b2lkIGRybV9pbnRlbF9nZW1fYm9f YXViX2R1bXBfYm1wKGRybV9pbnRlbF9ibyAqYm8sCisJCQkJICAgaW50IHgxLCBpbnQgeTEsIGlu dCB3aWR0aCwgaW50IGhlaWdodCwKKwkJCQkgICBlbnVtIGF1Yl9kdW1wX2JtcF9mb3JtYXQgZm9y bWF0LAorCQkJCSAgIGludCBwaXRjaCwgaW50IG9mZnNldCk7Cit2b2lkCitkcm1faW50ZWxfYnVm bWdyX2dlbV9zZXRfYXViX2Fubm90YXRpb25zKGRybV9pbnRlbF9ibyAqYm8sCisJCQkJCSBkcm1f aW50ZWxfYXViX2Fubm90YXRpb24gKmFubm90YXRpb25zLAorCQkJCQkgdW5zaWduZWQgY291bnQp OworCitpbnQgZHJtX2ludGVsX2dldF9waXBlX2Zyb21fY3J0Y19pZChkcm1faW50ZWxfYnVmbWdy ICpidWZtZ3IsIGludCBjcnRjX2lkKTsKKworaW50IGRybV9pbnRlbF9nZXRfYXBlcnR1cmVfc2l6 ZXMoaW50IGZkLCBzaXplX3QgKm1hcHBhYmxlLCBzaXplX3QgKnRvdGFsKTsKK2ludCBkcm1faW50 ZWxfYnVmbWdyX2dlbV9nZXRfZGV2aWQoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyKTsKK2ludCBk cm1faW50ZWxfZ2VtX2JvX3dhaXQoZHJtX2ludGVsX2JvICpibywgaW50NjRfdCB0aW1lb3V0X25z KTsKKworZHJtX2ludGVsX2NvbnRleHQgKmRybV9pbnRlbF9nZW1fY29udGV4dF9jcmVhdGUoZHJt X2ludGVsX2J1Zm1nciAqYnVmbWdyKTsKK3ZvaWQgZHJtX2ludGVsX2dlbV9jb250ZXh0X2Rlc3Ry b3koZHJtX2ludGVsX2NvbnRleHQgKmN0eCk7CitpbnQgZHJtX2ludGVsX2dlbV9ib19jb250ZXh0 X2V4ZWMoZHJtX2ludGVsX2JvICpibywgZHJtX2ludGVsX2NvbnRleHQgKmN0eCwKKwkJCQkgIGlu dCB1c2VkLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOworCitpbnQgZHJtX2ludGVsX2JvX2dlbV9leHBv cnRfdG9fcHJpbWUoZHJtX2ludGVsX2JvICpibywgaW50ICpwcmltZV9mZCk7Citkcm1faW50ZWxf Ym8gKmRybV9pbnRlbF9ib19nZW1fY3JlYXRlX2Zyb21fcHJpbWUoZHJtX2ludGVsX2J1Zm1nciAq YnVmbWdyLAorCQkJCQkJaW50IHByaW1lX2ZkLCBpbnQgc2l6ZSk7CisKKy8qIGRybV9pbnRlbF9i dWZtZ3JfZmFrZS5jICovCitkcm1faW50ZWxfYnVmbWdyICpkcm1faW50ZWxfYnVmbWdyX2Zha2Vf aW5pdChpbnQgZmQsCisJCQkJCSAgICAgdW5zaWduZWQgbG9uZyBsb3dfb2Zmc2V0LAorCQkJCQkg ICAgIHZvaWQgKmxvd192aXJ0dWFsLAorCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwKKwkJ CQkJICAgICB2b2xhdGlsZSB1bnNpZ25lZCBpbnQKKwkJCQkJICAgICAqbGFzdF9kaXNwYXRjaCk7 Cit2b2lkIGRybV9pbnRlbF9idWZtZ3JfZmFrZV9zZXRfbGFzdF9kaXNwYXRjaChkcm1faW50ZWxf YnVmbWdyICpidWZtZ3IsCisJCQkJCSAgICAgdm9sYXRpbGUgdW5zaWduZWQgaW50CisJCQkJCSAg ICAgKmxhc3RfZGlzcGF0Y2gpOwordm9pZCBkcm1faW50ZWxfYnVmbWdyX2Zha2Vfc2V0X2V4ZWNf Y2FsbGJhY2soZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJCQkgICAgIGludCAoKmV4ZWMp IChkcm1faW50ZWxfYm8gKmJvLAorCQkJCQkJCSAgdW5zaWduZWQgaW50IHVzZWQsCisJCQkJCQkJ ICB2b2lkICpwcml2KSwKKwkJCQkJICAgICB2b2lkICpwcml2KTsKK3ZvaWQgZHJtX2ludGVsX2J1 Zm1ncl9mYWtlX3NldF9mZW5jZV9jYWxsYmFjayhkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCisJ CQkJCSAgICAgIHVuc2lnbmVkIGludCAoKmVtaXQpICh2b2lkICpwcml2KSwKKwkJCQkJICAgICAg dm9pZCAoKndhaXQpICh1bnNpZ25lZCBpbnQgZmVuY2UsCisJCQkJCQkJICAgIHZvaWQgKnByaXYp LAorCQkJCQkgICAgICB2b2lkICpwcml2KTsKK2RybV9pbnRlbF9ibyAqZHJtX2ludGVsX2JvX2Zh a2VfYWxsb2Nfc3RhdGljKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKKwkJCQkJICAgICBjb25z dCBjaGFyICpuYW1lLAorCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LAorCQkJCQkgICAg IHVuc2lnbmVkIGxvbmcgc2l6ZSwgdm9pZCAqdmlydCk7Cit2b2lkIGRybV9pbnRlbF9ib19mYWtl X2Rpc2FibGVfYmFja2luZ19zdG9yZShkcm1faW50ZWxfYm8gKmJvLAorCQkJCQkgICAgIHZvaWQg KCppbnZhbGlkYXRlX2NiKSAoZHJtX2ludGVsX2JvCisJCQkJCQkJCSAgICAqIGJvLAorCQkJCQkJ CQkgICAgdm9pZCAqcHRyKSwKKwkJCQkJICAgICB2b2lkICpwdHIpOworCit2b2lkIGRybV9pbnRl bF9idWZtZ3JfZmFrZV9jb250ZW5kZWRfbG9ja190YWtlKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1n cik7Cit2b2lkIGRybV9pbnRlbF9idWZtZ3JfZmFrZV9ldmljdF9hbGwoZHJtX2ludGVsX2J1Zm1n ciAqYnVmbWdyKTsKKworc3RydWN0IGRybV9pbnRlbF9kZWNvZGUgKmRybV9pbnRlbF9kZWNvZGVf Y29udGV4dF9hbGxvYyh1aW50MzJfdCBkZXZpZCk7Cit2b2lkIGRybV9pbnRlbF9kZWNvZGVfY29u dGV4dF9mcmVlKHN0cnVjdCBkcm1faW50ZWxfZGVjb2RlICpjdHgpOwordm9pZCBkcm1faW50ZWxf ZGVjb2RlX3NldF9iYXRjaF9wb2ludGVyKHN0cnVjdCBkcm1faW50ZWxfZGVjb2RlICpjdHgsCisJ CQkJCXZvaWQgKmRhdGEsIHVpbnQzMl90IGh3X29mZnNldCwKKwkJCQkJaW50IGNvdW50KTsKK3Zv aWQgZHJtX2ludGVsX2RlY29kZV9zZXRfZHVtcF9wYXN0X2VuZChzdHJ1Y3QgZHJtX2ludGVsX2Rl Y29kZSAqY3R4LAorCQkJCQlpbnQgZHVtcF9wYXN0X2VuZCk7Cit2b2lkIGRybV9pbnRlbF9kZWNv ZGVfc2V0X2hlYWRfdGFpbChzdHJ1Y3QgZHJtX2ludGVsX2RlY29kZSAqY3R4LAorCQkJCSAgICB1 aW50MzJfdCBoZWFkLCB1aW50MzJfdCB0YWlsKTsKK3ZvaWQgZHJtX2ludGVsX2RlY29kZV9zZXRf b3V0cHV0X2ZpbGUoc3RydWN0IGRybV9pbnRlbF9kZWNvZGUgKmN0eCwgRklMRSAqb3V0KTsKK3Zv aWQgZHJtX2ludGVsX2RlY29kZShzdHJ1Y3QgZHJtX2ludGVsX2RlY29kZSAqY3R4KTsKKworaW50 IGRybV9pbnRlbF9yZWdfcmVhZChkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCisJCSAgICAgICB1 aW50MzJfdCBvZmZzZXQsCisJCSAgICAgICB1aW50NjRfdCAqcmVzdWx0KTsKKworaW50IGRybV9p bnRlbF9nZXRfcmVzZXRfc3RhdHMoZHJtX2ludGVsX2NvbnRleHQgKmN0eCwKKwkJCSAgICAgIHVp bnQzMl90ICpyZXNldF9jb3VudCwKKwkJCSAgICAgIHVpbnQzMl90ICphY3RpdmUsCisJCQkgICAg ICB1aW50MzJfdCAqcGVuZGluZyk7CisKK2ludCBkcm1faW50ZWxfZ2V0X3N1YnNsaWNlX3RvdGFs KGludCBmZCwgdW5zaWduZWQgaW50ICpzdWJzbGljZV90b3RhbCk7CitpbnQgZHJtX2ludGVsX2dl dF9ldV90b3RhbChpbnQgZmQsIHVuc2lnbmVkIGludCAqZXVfdG90YWwpOworCisvKiogQHsgQ29t cGF0aWJpbGl0eSBkZWZpbmVzIHRvIGtlZXAgb2xkIGNvZGUgYnVpbGRpbmcgZGVzcGl0ZSB0aGUg c3ltYm9sIHJlbmFtZQorICogZnJvbSBkcmlfKiB0byBkcm1faW50ZWxfKgorICovCisjZGVmaW5l IGRyaV9ibyBkcm1faW50ZWxfYm8KKyNkZWZpbmUgZHJpX2J1Zm1nciBkcm1faW50ZWxfYnVmbWdy CisjZGVmaW5lIGRyaV9ib19hbGxvYyBkcm1faW50ZWxfYm9fYWxsb2MKKyNkZWZpbmUgZHJpX2Jv X3JlZmVyZW5jZSBkcm1faW50ZWxfYm9fcmVmZXJlbmNlCisjZGVmaW5lIGRyaV9ib191bnJlZmVy ZW5jZSBkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2UKKyNkZWZpbmUgZHJpX2JvX21hcCBkcm1faW50 ZWxfYm9fbWFwCisjZGVmaW5lIGRyaV9ib191bm1hcCBkcm1faW50ZWxfYm9fdW5tYXAKKyNkZWZp bmUgZHJpX2JvX3N1YmRhdGEgZHJtX2ludGVsX2JvX3N1YmRhdGEKKyNkZWZpbmUgZHJpX2JvX2dl dF9zdWJkYXRhIGRybV9pbnRlbF9ib19nZXRfc3ViZGF0YQorI2RlZmluZSBkcmlfYm9fd2FpdF9y ZW5kZXJpbmcgZHJtX2ludGVsX2JvX3dhaXRfcmVuZGVyaW5nCisjZGVmaW5lIGRyaV9idWZtZ3Jf c2V0X2RlYnVnIGRybV9pbnRlbF9idWZtZ3Jfc2V0X2RlYnVnCisjZGVmaW5lIGRyaV9idWZtZ3Jf ZGVzdHJveSBkcm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3kKKyNkZWZpbmUgZHJpX2JvX2V4ZWMgZHJt X2ludGVsX2JvX2V4ZWMKKyNkZWZpbmUgZHJpX2J1Zm1ncl9jaGVja19hcGVydHVyZV9zcGFjZSBk cm1faW50ZWxfYnVmbWdyX2NoZWNrX2FwZXJ0dXJlX3NwYWNlCisjZGVmaW5lIGRyaV9ib19lbWl0 X3JlbG9jKHJlbG9jX2JvLCByZWFkLCB3cml0ZSwgdGFyZ2V0X29mZnNldCwJCVwKKwkJCSAgcmVs b2Nfb2Zmc2V0LCB0YXJnZXRfYm8pCQkJXAorCWRybV9pbnRlbF9ib19lbWl0X3JlbG9jKHJlbG9j X2JvLCByZWxvY19vZmZzZXQsCQkJXAorCQkJCXRhcmdldF9ibywgdGFyZ2V0X29mZnNldCwJCVwK KwkJCQlyZWFkLCB3cml0ZSk7CisjZGVmaW5lIGRyaV9ib19waW4gZHJtX2ludGVsX2JvX3Bpbgor I2RlZmluZSBkcmlfYm9fdW5waW4gZHJtX2ludGVsX2JvX3VucGluCisjZGVmaW5lIGRyaV9ib19n ZXRfdGlsaW5nIGRybV9pbnRlbF9ib19nZXRfdGlsaW5nCisjZGVmaW5lIGRyaV9ib19zZXRfdGls aW5nKGJvLCBtb2RlKSBkcm1faW50ZWxfYm9fc2V0X3RpbGluZyhibywgbW9kZSwgMCkKKyNkZWZp bmUgZHJpX2JvX2ZsaW5rIGRybV9pbnRlbF9ib19mbGluaworI2RlZmluZSBpbnRlbF9idWZtZ3Jf Z2VtX2luaXQgZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdAorI2RlZmluZSBpbnRlbF9ib19nZW1f Y3JlYXRlX2Zyb21fbmFtZSBkcm1faW50ZWxfYm9fZ2VtX2NyZWF0ZV9mcm9tX25hbWUKKyNkZWZp bmUgaW50ZWxfYnVmbWdyX2dlbV9lbmFibGVfcmV1c2UgZHJtX2ludGVsX2J1Zm1ncl9nZW1fZW5h YmxlX3JldXNlCisjZGVmaW5lIGludGVsX2J1Zm1ncl9mYWtlX2luaXQgZHJtX2ludGVsX2J1Zm1n cl9mYWtlX2luaXQKKyNkZWZpbmUgaW50ZWxfYnVmbWdyX2Zha2Vfc2V0X2xhc3RfZGlzcGF0Y2gg ZHJtX2ludGVsX2J1Zm1ncl9mYWtlX3NldF9sYXN0X2Rpc3BhdGNoCisjZGVmaW5lIGludGVsX2J1 Zm1ncl9mYWtlX3NldF9leGVjX2NhbGxiYWNrIGRybV9pbnRlbF9idWZtZ3JfZmFrZV9zZXRfZXhl Y19jYWxsYmFjaworI2RlZmluZSBpbnRlbF9idWZtZ3JfZmFrZV9zZXRfZmVuY2VfY2FsbGJhY2sg ZHJtX2ludGVsX2J1Zm1ncl9mYWtlX3NldF9mZW5jZV9jYWxsYmFjaworI2RlZmluZSBpbnRlbF9i b19mYWtlX2FsbG9jX3N0YXRpYyBkcm1faW50ZWxfYm9fZmFrZV9hbGxvY19zdGF0aWMKKyNkZWZp bmUgaW50ZWxfYm9fZmFrZV9kaXNhYmxlX2JhY2tpbmdfc3RvcmUgZHJtX2ludGVsX2JvX2Zha2Vf ZGlzYWJsZV9iYWNraW5nX3N0b3JlCisjZGVmaW5lIGludGVsX2J1Zm1ncl9mYWtlX2NvbnRlbmRl ZF9sb2NrX3Rha2UgZHJtX2ludGVsX2J1Zm1ncl9mYWtlX2NvbnRlbmRlZF9sb2NrX3Rha2UKKyNk ZWZpbmUgaW50ZWxfYnVmbWdyX2Zha2VfZXZpY3RfYWxsIGRybV9pbnRlbF9idWZtZ3JfZmFrZV9l dmljdF9hbGwKKworLyoqIEB7ICovCisKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorfQorI2Vu ZGlmCisKKyNlbmRpZiAvKiBJTlRFTF9CVUZNR1JfSCAqLwotLSAKMi43LjQKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=