From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B242CC433C1 for ; Mon, 22 Mar 2021 09:26:57 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B1F1C61974 for ; Mon, 22 Mar 2021 09:26:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B1F1C61974 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:44182 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOGpr-00079j-Nl for qemu-devel@archiver.kernel.org; Mon, 22 Mar 2021 05:26:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45154) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOGmt-0005c2-EG for qemu-devel@nongnu.org; Mon, 22 Mar 2021 05:23:51 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:23371) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOGml-0000mm-QK for qemu-devel@nongnu.org; Mon, 22 Mar 2021 05:23:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1616405022; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=q7wzhKntCVWLNhu4ySL/uRAzqsYHHbT+VkCpL5MSgeI=; b=VG0JOw8aa1Y5qpbxnGgMGy3bORPlDG8AnXxeOIcPAfFsV0CBj7Ch9YYnvBrHqA5syEdCbB 6FrrCS64mG6mgo4IWkYaJGCKDPNdlqL6VqNDELpmd16C7oEL4niL7XoEDa/nXay5QHv2Ry Ei3cITaYqBhbdMGo41x3v++EhOasFls= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-199-ZNG24sqnNOKTUVv3himJBw-1; Mon, 22 Mar 2021 05:23:39 -0400 X-MC-Unique: ZNG24sqnNOKTUVv3himJBw-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 562A71922961; Mon, 22 Mar 2021 09:23:38 +0000 (UTC) Received: from localhost (ovpn-114-89.ams2.redhat.com [10.36.114.89]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6B83C2B3B9; Mon, 22 Mar 2021 09:23:34 +0000 (UTC) From: Stefan Hajnoczi To: qemu-devel@nongnu.org Subject: [PATCH 1/3] test: new qTest case to test the vhost-user-blk-server Date: Mon, 22 Mar 2021 09:23:25 +0000 Message-Id: <20210322092327.150720-2-stefanha@redhat.com> In-Reply-To: <20210322092327.150720-1-stefanha@redhat.com> References: <20210322092327.150720-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=stefanha@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=216.205.24.124; envelope-from=stefanha@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Laurent Vivier , Thomas Huth , qemu-block@nongnu.org, Coiby Xu , Stefan Hajnoczi , Paolo Bonzini Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" RnJvbTogQ29pYnkgWHUgPGNvaWJ5Lnh1QGdtYWlsLmNvbT4KClRoaXMgdGVzdCBjYXNlIGhhcyB0 aGUgc2FtZSB0ZXN0cyBhcyB0ZXN0cy92aXJ0aW8tYmxrLXRlc3QuYyBleGNlcHQgZm9yCnRlc3Rz IGhhdmUgYmxvY2tfcmVzaXplLiBTaW5jZSB0aGUgdmhvc3QtdXNlci1ibGsgZXhwb3J0IG9ubHkg c2VydmVzIG9uZQpjbGllbnQgb25lIHRpbWUsIHR3byBleHBvcnRzIGFyZSBzdGFydGVkIGJ5IHFl bXUtc3RvcmFnZS1kYWVtb24gZm9yIHRoZQpob3RwbHVnIHRlc3QuCgpTdWdnZXN0ZWQtYnk6IFRo b21hcyBIdXRoIDx0aHV0aEByZWRoYXQuY29tPgpTaWduZWQtb2ZmLWJ5OiBDb2lieSBYdSA8Y29p YnkueHVAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gSGFqbm9jemkgPHN0ZWZhbmhh QHJlZGhhdC5jb20+Ck1lc3NhZ2UtSWQ6IDwyMDIxMDMwOTA5NDEwNi4xOTY5MTEtMy1zdGVmYW5o YUByZWRoYXQuY29tPgpTaWduZWQtb2ZmLWJ5OiBLZXZpbiBXb2xmIDxrd29sZkByZWRoYXQuY29t PgotLS0KIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHRlc3Rz L3F0ZXN0L2xpYnFvcy92aG9zdC11c2VyLWJsay5oIHwgIDQ4ICsrCiB0ZXN0cy9xdGVzdC9saWJx b3Mvdmhvc3QtdXNlci1ibGsuYyB8IDEzMCArKysrKwogdGVzdHMvcXRlc3Qvdmhvc3QtdXNlci1i bGstdGVzdC5jICAgfCA3OTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdGVzdHMvcXRl c3QvbGlicW9zL21lc29uLmJ1aWxkICAgICAgfCAgIDEgKwogdGVzdHMvcXRlc3QvbWVzb24uYnVp bGQgICAgICAgICAgICAgfCAgIDQgKwogNiBmaWxlcyBjaGFuZ2VkLCA5NzkgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3F0ZXN0L2xpYnFvcy92aG9zdC11c2VyLWJsay5o CiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvcXRlc3QvbGlicW9zL3Zob3N0LXVzZXItYmxrLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9xdGVzdC92aG9zdC11c2VyLWJsay10ZXN0LmMKCmRp ZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDI1ZmM0OWQxZGMuLjM0 Y2ZlNDY4ZjEgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC0z MjUxLDYgKzMyNTEsOCBAQCBGOiBibG9jay9leHBvcnQvdmhvc3QtdXNlci1ibGstc2VydmVyLmMK IEY6IGJsb2NrL2V4cG9ydC92aG9zdC11c2VyLWJsay1zZXJ2ZXIuaAogRjogaW5jbHVkZS9xZW11 L3Zob3N0LXVzZXItc2VydmVyLmgKIEY6IHRlc3RzL3F0ZXN0L2xpYnFvcy92aG9zdC11c2VyLWJs ay5jCitGOiB0ZXN0cy9xdGVzdC9saWJxb3Mvdmhvc3QtdXNlci1ibGsuaAorRjogdGVzdHMvcXRl c3Qvdmhvc3QtdXNlci1ibGstdGVzdC5jCiBGOiB1dGlsL3Zob3N0LXVzZXItc2VydmVyLmMKIAog RlVTRSBibG9jayBkZXZpY2UgZXhwb3J0cwpkaWZmIC0tZ2l0IGEvdGVzdHMvcXRlc3QvbGlicW9z L3Zob3N0LXVzZXItYmxrLmggYi90ZXN0cy9xdGVzdC9saWJxb3Mvdmhvc3QtdXNlci1ibGsuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yYTAzNDU2YTQ1Ci0tLSAvZGV2 L251bGwKKysrIGIvdGVzdHMvcXRlc3QvbGlicW9zL3Zob3N0LXVzZXItYmxrLmgKQEAgLTAsMCAr MSw0OCBAQAorLyoKKyAqIGxpYnFvcyBkcml2ZXIgZnJhbWV3b3JrCisgKgorICogQmFzZWQgb24g dGVzdHMvcXRlc3QvbGlicW9zL3ZpcnRpby1ibGsuYworICoKKyAqIENvcHlyaWdodCAoYykgMjAy MCBDb2lieSBYdSA8Y29pYnkueHVAZ21haWwuY29tPgorICoKKyAqIENvcHlyaWdodCAoYykgMjAx OCBFbWFudWVsZSBHaXVzZXBwZSBFc3Bvc2l0byA8ZS5lbWFudWVsZWdpdXNlcHBlQGdtYWlsLmNv bT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy YXJ5OyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4KKyAqLworCisj aWZuZGVmIFRFU1RTX0xJQlFPU19WSE9TVF9VU0VSX0JMS19ICisjZGVmaW5lIFRFU1RTX0xJQlFP U19WSE9TVF9VU0VSX0JMS19ICisKKyNpbmNsdWRlICJxZ3JhcGguaCIKKyNpbmNsdWRlICJ2aXJ0 aW8uaCIKKyNpbmNsdWRlICJ2aXJ0aW8tcGNpLmgiCisKK3R5cGVkZWYgc3RydWN0IFFWaG9zdFVz ZXJCbGsgUVZob3N0VXNlckJsazsKK3R5cGVkZWYgc3RydWN0IFFWaG9zdFVzZXJCbGtQQ0kgUVZo b3N0VXNlckJsa1BDSTsKK3R5cGVkZWYgc3RydWN0IFFWaG9zdFVzZXJCbGtEZXZpY2UgUVZob3N0 VXNlckJsa0RldmljZTsKKworc3RydWN0IFFWaG9zdFVzZXJCbGsgeworICAgIFFWaXJ0aW9EZXZp Y2UgKnZkZXY7Cit9OworCitzdHJ1Y3QgUVZob3N0VXNlckJsa1BDSSB7CisgICAgUVZpcnRpb1BD SURldmljZSBwY2lfdmRldjsKKyAgICBRVmhvc3RVc2VyQmxrIGJsazsKK307CisKK3N0cnVjdCBR Vmhvc3RVc2VyQmxrRGV2aWNlIHsKKyAgICBRT1NHcmFwaE9iamVjdCBvYmo7CisgICAgUVZob3N0 VXNlckJsayBibGs7Cit9OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL3Rlc3RzL3F0ZXN0L2xpYnFv cy92aG9zdC11c2VyLWJsay5jIGIvdGVzdHMvcXRlc3QvbGlicW9zL3Zob3N0LXVzZXItYmxrLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNTY4YzM0MjZlZAotLS0gL2Rl di9udWxsCisrKyBiL3Rlc3RzL3F0ZXN0L2xpYnFvcy92aG9zdC11c2VyLWJsay5jCkBAIC0wLDAg KzEsMTMwIEBACisvKgorICogbGlicW9zIGRyaXZlciBmcmFtZXdvcmsKKyAqCisgKiBCYXNlZCBv biB0ZXN0cy9xdGVzdC9saWJxb3MvdmlydGlvLWJsay5jCisgKgorICogQ29weXJpZ2h0IChjKSAy MDIwIENvaWJ5IFh1IDxjb2lieS54dUBnbWFpbC5jb20+CisgKgorICogQ29weXJpZ2h0IChjKSAy MDE4IEVtYW51ZWxlIEdpdXNlcHBlIEVzcG9zaXRvIDxlLmVtYW51ZWxlZ2l1c2VwcGVAZ21haWwu Y29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgdmVyc2lvbiAyLjEgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg bGlicmFyeTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+CisgKi8K KworI2luY2x1ZGUgInFlbXUvb3NkZXAuaCIKKyNpbmNsdWRlICJsaWJxdGVzdC5oIgorI2luY2x1 ZGUgInFlbXUvbW9kdWxlLmgiCisjaW5jbHVkZSAic3RhbmRhcmQtaGVhZGVycy9saW51eC92aXJ0 aW9fYmxrLmgiCisjaW5jbHVkZSAidmhvc3QtdXNlci1ibGsuaCIKKworI2RlZmluZSBQQ0lfU0xP VCAgICAgICAgICAgICAgICAweDA0CisjZGVmaW5lIFBDSV9GTiAgICAgICAgICAgICAgICAgIDB4 MDAKKworLyogdmlydGlvLWJsay1kZXZpY2UgKi8KK3N0YXRpYyB2b2lkICpxdmhvc3RfdXNlcl9i bGtfZ2V0X2RyaXZlcihRVmhvc3RVc2VyQmxrICp2X2JsaywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmludGVyZmFjZSkKK3sKKyAgICBpZiAoIWdfc3Ry Y21wMChpbnRlcmZhY2UsICJ2aG9zdC11c2VyLWJsayIpKSB7CisgICAgICAgIHJldHVybiB2X2Js azsKKyAgICB9CisgICAgaWYgKCFnX3N0cmNtcDAoaW50ZXJmYWNlLCAidmlydGlvIikpIHsKKyAg ICAgICAgcmV0dXJuIHZfYmxrLT52ZGV2OworICAgIH0KKworICAgIGZwcmludGYoc3RkZXJyLCAi JXMgbm90IHByZXNlbnQgaW4gdmhvc3QtdXNlci1ibGstZGV2aWNlXG4iLCBpbnRlcmZhY2UpOwor ICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7Cit9CisKK3N0YXRpYyB2b2lkICpxdmhvc3RfdXNl cl9ibGtfZGV2aWNlX2dldF9kcml2ZXIodm9pZCAqb2JqZWN0LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmludGVyZmFjZSkKK3sKKyAgICBR Vmhvc3RVc2VyQmxrRGV2aWNlICp2X2JsayA9IG9iamVjdDsKKyAgICByZXR1cm4gcXZob3N0X3Vz ZXJfYmxrX2dldF9kcml2ZXIoJnZfYmxrLT5ibGssIGludGVyZmFjZSk7Cit9CisKK3N0YXRpYyB2 b2lkICp2aG9zdF91c2VyX2Jsa19kZXZpY2VfY3JlYXRlKHZvaWQgKnZpcnRpb19kZXYsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHdWVzdEFsbG9jYXRvciAqdF9hbGxv YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYWRkcikKK3sK KyAgICBRVmhvc3RVc2VyQmxrRGV2aWNlICp2aG9zdF91c2VyX2JsayA9IGdfbmV3MChRVmhvc3RV c2VyQmxrRGV2aWNlLCAxKTsKKyAgICBRVmhvc3RVc2VyQmxrICppbnRlcmZhY2UgPSAmdmhvc3Rf dXNlcl9ibGstPmJsazsKKworICAgIGludGVyZmFjZS0+dmRldiA9IHZpcnRpb19kZXY7CisKKyAg ICB2aG9zdF91c2VyX2Jsay0+b2JqLmdldF9kcml2ZXIgPSBxdmhvc3RfdXNlcl9ibGtfZGV2aWNl X2dldF9kcml2ZXI7CisKKyAgICByZXR1cm4gJnZob3N0X3VzZXJfYmxrLT5vYmo7Cit9CisKKy8q IHZpcnRpby1ibGstcGNpICovCitzdGF0aWMgdm9pZCAqcXZob3N0X3VzZXJfYmxrX3BjaV9nZXRf ZHJpdmVyKHZvaWQgKm9iamVjdCwgY29uc3QgY2hhciAqaW50ZXJmYWNlKQoreworICAgIFFWaG9z dFVzZXJCbGtQQ0kgKnZfYmxrID0gb2JqZWN0OworICAgIGlmICghZ19zdHJjbXAwKGludGVyZmFj ZSwgInBjaS1kZXZpY2UiKSkgeworICAgICAgICByZXR1cm4gdl9ibGstPnBjaV92ZGV2LnBkZXY7 CisgICAgfQorICAgIHJldHVybiBxdmhvc3RfdXNlcl9ibGtfZ2V0X2RyaXZlcigmdl9ibGstPmJs aywgaW50ZXJmYWNlKTsKK30KKworc3RhdGljIHZvaWQgKnZob3N0X3VzZXJfYmxrX3BjaV9jcmVh dGUodm9pZCAqcGNpX2J1cywgUUd1ZXN0QWxsb2NhdG9yICp0X2FsbG9jLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphZGRyKQoreworICAgIFFWaG9zdFVzZXJC bGtQQ0kgKnZob3N0X3VzZXJfYmxrID0gZ19uZXcwKFFWaG9zdFVzZXJCbGtQQ0ksIDEpOworICAg IFFWaG9zdFVzZXJCbGsgKmludGVyZmFjZSA9ICZ2aG9zdF91c2VyX2Jsay0+YmxrOworICAgIFFP U0dyYXBoT2JqZWN0ICpvYmogPSAmdmhvc3RfdXNlcl9ibGstPnBjaV92ZGV2Lm9iajsKKworICAg IHZpcnRpb19wY2lfaW5pdCgmdmhvc3RfdXNlcl9ibGstPnBjaV92ZGV2LCBwY2lfYnVzLCBhZGRy KTsKKyAgICBpbnRlcmZhY2UtPnZkZXYgPSAmdmhvc3RfdXNlcl9ibGstPnBjaV92ZGV2LnZkZXY7 CisKKyAgICBnX2Fzc2VydF9jbXBoZXgoaW50ZXJmYWNlLT52ZGV2LT5kZXZpY2VfdHlwZSwgPT0s IFZJUlRJT19JRF9CTE9DSyk7CisKKyAgICBvYmotPmdldF9kcml2ZXIgPSBxdmhvc3RfdXNlcl9i bGtfcGNpX2dldF9kcml2ZXI7CisKKyAgICByZXR1cm4gb2JqOworfQorCitzdGF0aWMgdm9pZCB2 aG9zdF91c2VyX2Jsa19yZWdpc3Rlcl9ub2Rlcyh2b2lkKQoreworICAgIC8qCisgICAgICogRklY TUU6IGV2ZXJ5IHRlc3QgdXNpbmcgdGhlc2UgdHdvIG5vZGVzIG5lZWRzIHRvIHNldHVwIGEKKyAg ICAgKiAtZHJpdmUsaWQ9ZHJpdmUwIG90aGVyd2lzZSBRRU1VIGlzIG5vdCBnb2luZyB0byBzdGFy dC4KKyAgICAgKiBUaGVyZWZvcmUsIHdlIGRvIG5vdCBpbmNsdWRlICJwcm9kdWNlcyIgZWRnZSBm b3IgdmlydGlvCisgICAgICogYW5kIHBjaS1kZXZpY2UgeWV0LgorICAgICAqLworCisgICAgY2hh ciAqYXJnID0gZ19zdHJkdXBfcHJpbnRmKCJpZD1kcnYwLGNoYXJkZXY9Y2hhcjEsYWRkcj0leC4l eCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9TTE9ULCBQQ0lfRk4pOwor CisgICAgUVBDSUFkZHJlc3MgYWRkciA9IHsKKyAgICAgICAgLmRldmZuID0gUVBDSV9ERVZGTihQ Q0lfU0xPVCwgUENJX0ZOKSwKKyAgICB9OworCisgICAgUU9TR3JhcGhFZGdlT3B0aW9ucyBvcHRz ID0geyB9OworCisgICAgLyogdmlydGlvLWJsay1kZXZpY2UgKi8KKyAgICAvKiogb3B0cy5leHRy YV9kZXZpY2Vfb3B0cyA9ICJkcml2ZT1kcml2ZTAiOyAqLworICAgIHFvc19ub2RlX2NyZWF0ZV9k cml2ZXIoInZob3N0LXVzZXItYmxrLWRldmljZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICB2aG9zdF91c2VyX2Jsa19kZXZpY2VfY3JlYXRlKTsKKyAgICBxb3Nfbm9kZV9jb25zdW1lcygi dmhvc3QtdXNlci1ibGstZGV2aWNlIiwgInZpcnRpby1idXMiLCAmb3B0cyk7CisgICAgcW9zX25v ZGVfcHJvZHVjZXMoInZob3N0LXVzZXItYmxrLWRldmljZSIsICJ2aG9zdC11c2VyLWJsayIpOwor CisgICAgLyogdmlydGlvLWJsay1wY2kgKi8KKyAgICBvcHRzLmV4dHJhX2RldmljZV9vcHRzID0g YXJnOworICAgIGFkZF9xcGNpX2FkZHJlc3MoJm9wdHMsICZhZGRyKTsKKyAgICBxb3Nfbm9kZV9j cmVhdGVfZHJpdmVyKCJ2aG9zdC11c2VyLWJsay1wY2kiLCB2aG9zdF91c2VyX2Jsa19wY2lfY3Jl YXRlKTsKKyAgICBxb3Nfbm9kZV9jb25zdW1lcygidmhvc3QtdXNlci1ibGstcGNpIiwgInBjaS1i dXMiLCAmb3B0cyk7CisgICAgcW9zX25vZGVfcHJvZHVjZXMoInZob3N0LXVzZXItYmxrLXBjaSIs ICJ2aG9zdC11c2VyLWJsayIpOworCisgICAgZ19mcmVlKGFyZyk7Cit9CisKK2xpYnFvc19pbml0 KHZob3N0X3VzZXJfYmxrX3JlZ2lzdGVyX25vZGVzKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL3F0ZXN0 L3Zob3N0LXVzZXItYmxrLXRlc3QuYyBiL3Rlc3RzL3F0ZXN0L3Zob3N0LXVzZXItYmxrLXRlc3Qu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zZTc5NTQ5ODk5Ci0tLSAv ZGV2L251bGwKKysrIGIvdGVzdHMvcXRlc3Qvdmhvc3QtdXNlci1ibGstdGVzdC5jCkBAIC0wLDAg KzEsNzk0IEBACisvKgorICogUVRlc3QgdGVzdGNhc2UgZm9yIFZob3N0LXVzZXIgQmxvY2sgRGV2 aWNlCisgKgorICogQmFzZWQgb24gdGVzdHMvcXRlc3QvL3ZpcnRpby1ibGstdGVzdC5jCisKKyAq IENvcHlyaWdodCAoYykgMjAxNCBTVVNFIExJTlVYIFByb2R1Y3RzIEdtYkgKKyAqIENvcHlyaWdo dCAoYykgMjAxNCBNYXJjIE1hcsOtCisgKiBDb3B5cmlnaHQgKGMpIDIwMjAgQ29pYnkgWHUKKyAq CisgKiBUaGlzIHdvcmsgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR1BM LCB2ZXJzaW9uIDIgb3IgbGF0ZXIuCisgKiBTZWUgdGhlIENPUFlJTkcgZmlsZSBpbiB0aGUgdG9w LWxldmVsIGRpcmVjdG9yeS4KKyAqLworCisjaW5jbHVkZSAicWVtdS9vc2RlcC5oIgorI2luY2x1 ZGUgImxpYnF0ZXN0LXNpbmdsZS5oIgorI2luY2x1ZGUgInFlbXUvYnN3YXAuaCIKKyNpbmNsdWRl ICJxZW11L21vZHVsZS5oIgorI2luY2x1ZGUgInN0YW5kYXJkLWhlYWRlcnMvbGludXgvdmlydGlv X2Jsay5oIgorI2luY2x1ZGUgInN0YW5kYXJkLWhlYWRlcnMvbGludXgvdmlydGlvX3BjaS5oIgor I2luY2x1ZGUgImxpYnFvcy9xZ3JhcGguaCIKKyNpbmNsdWRlICJsaWJxb3Mvdmhvc3QtdXNlci1i bGsuaCIKKyNpbmNsdWRlICJsaWJxb3MvbGlicW9zLXBjLmgiCisKKyNkZWZpbmUgVEVTVF9JTUFH RV9TSVpFICAgICAgICAgKDY0ICogMTAyNCAqIDEwMjQpCisjZGVmaW5lIFFWSVJUSU9fQkxLX1RJ TUVPVVRfVVMgICgzMCAqIDEwMDAgKiAxMDAwKQorI2RlZmluZSBQQ0lfU0xPVF9IUCAgICAgICAg ICAgICAweDA2CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBwaWRfdCBwaWQ7Cit9IFFlbXVTdG9y YWdlRGFlbW9uU3RhdGU7CisKK3R5cGVkZWYgc3RydWN0IFFWaXJ0aW9CbGtSZXEgeworICAgIHVp bnQzMl90IHR5cGU7CisgICAgdWludDMyX3QgaW9wcmlvOworICAgIHVpbnQ2NF90IHNlY3RvcjsK KyAgICBjaGFyICpkYXRhOworICAgIHVpbnQ4X3Qgc3RhdHVzOworfSBRVmlydGlvQmxrUmVxOwor CisjaWZkZWYgSE9TVF9XT1JEU19CSUdFTkRJQU4KK3N0YXRpYyBjb25zdCBib29sIGhvc3RfaXNf YmlnX2VuZGlhbiA9IHRydWU7CisjZWxzZQorc3RhdGljIGNvbnN0IGJvb2wgaG9zdF9pc19iaWdf ZW5kaWFuOyAvKiBmYWxzZSAqLworI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgdm9pZCB2aXJ0aW9f YmxrX2ZpeF9yZXF1ZXN0KFFWaXJ0aW9EZXZpY2UgKmQsIFFWaXJ0aW9CbGtSZXEgKnJlcSkKK3sK KyAgICBpZiAocXZpcnRpb19pc19iaWdfZW5kaWFuKGQpICE9IGhvc3RfaXNfYmlnX2VuZGlhbikg eworICAgICAgICByZXEtPnR5cGUgPSBic3dhcDMyKHJlcS0+dHlwZSk7CisgICAgICAgIHJlcS0+ aW9wcmlvID0gYnN3YXAzMihyZXEtPmlvcHJpbyk7CisgICAgICAgIHJlcS0+c2VjdG9yID0gYnN3 YXA2NChyZXEtPnNlY3Rvcik7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgdmlydGlv X2Jsa19maXhfZHd6X2hkcihRVmlydGlvRGV2aWNlICpkLAorICAgIHN0cnVjdCB2aXJ0aW9fYmxr X2Rpc2NhcmRfd3JpdGVfemVyb2VzICpkd3pfaGRyKQoreworICAgIGlmIChxdmlydGlvX2lzX2Jp Z19lbmRpYW4oZCkgIT0gaG9zdF9pc19iaWdfZW5kaWFuKSB7CisgICAgICAgIGR3el9oZHItPnNl Y3RvciA9IGJzd2FwNjQoZHd6X2hkci0+c2VjdG9yKTsKKyAgICAgICAgZHd6X2hkci0+bnVtX3Nl Y3RvcnMgPSBic3dhcDMyKGR3el9oZHItPm51bV9zZWN0b3JzKTsKKyAgICAgICAgZHd6X2hkci0+ ZmxhZ3MgPSBic3dhcDMyKGR3el9oZHItPmZsYWdzKTsKKyAgICB9Cit9CisKK3N0YXRpYyB1aW50 NjRfdCB2aXJ0aW9fYmxrX3JlcXVlc3QoUUd1ZXN0QWxsb2NhdG9yICphbGxvYywgUVZpcnRpb0Rl dmljZSAqZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVZpcnRpb0Jsa1Jl cSAqcmVxLCB1aW50NjRfdCBkYXRhX3NpemUpCit7CisgICAgdWludDY0X3QgYWRkcjsKKyAgICB1 aW50OF90IHN0YXR1cyA9IDB4RkY7CisgICAgUVRlc3RTdGF0ZSAqcXRzID0gZ2xvYmFsX3F0ZXN0 OworCisgICAgc3dpdGNoIChyZXEtPnR5cGUpIHsKKyAgICBjYXNlIFZJUlRJT19CTEtfVF9JTjoK KyAgICBjYXNlIFZJUlRJT19CTEtfVF9PVVQ6CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoZGF0 YV9zaXplICUgNTEyLCA9PSwgMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVklSVElPX0JM S19UX0RJU0NBUkQ6CisgICAgY2FzZSBWSVJUSU9fQkxLX1RfV1JJVEVfWkVST0VTOgorICAgICAg ICBnX2Fzc2VydF9jbXB1aW50KGRhdGFfc2l6ZSAlCisgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZW9mKHN0cnVjdCB2aXJ0aW9fYmxrX2Rpc2NhcmRfd3JpdGVfemVyb2VzKSwgPT0sIDApOwor ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGRh dGFfc2l6ZSwgPT0sIDApOworICAgIH0KKworICAgIGFkZHIgPSBndWVzdF9hbGxvYyhhbGxvYywg c2l6ZW9mKCpyZXEpICsgZGF0YV9zaXplKTsKKworICAgIHZpcnRpb19ibGtfZml4X3JlcXVlc3Qo ZCwgcmVxKTsKKworICAgIHF0ZXN0X21lbXdyaXRlKHF0cywgYWRkciwgcmVxLCAxNik7CisgICAg cXRlc3RfbWVtd3JpdGUocXRzLCBhZGRyICsgMTYsIHJlcS0+ZGF0YSwgZGF0YV9zaXplKTsKKyAg ICBxdGVzdF9tZW13cml0ZShxdHMsIGFkZHIgKyAxNiArIGRhdGFfc2l6ZSwgJnN0YXR1cywgc2l6 ZW9mKHN0YXR1cykpOworCisgICAgcmV0dXJuIGFkZHI7Cit9CisKKy8qIFJldHVybnMgdGhlIHJl cXVlc3QgdmlydHF1ZXVlIHNvIHRoZSBjYWxsZXIgY2FuIHBlcmZvcm0gZnVydGhlciB0ZXN0cyAq Lworc3RhdGljIFFWaXJ0UXVldWUgKnRlc3RfYmFzaWMoUVZpcnRpb0RldmljZSAqZGV2LCBRR3Vl c3RBbGxvY2F0b3IgKmFsbG9jKQoreworICAgIFFWaXJ0aW9CbGtSZXEgcmVxOworICAgIHVpbnQ2 NF90IHJlcV9hZGRyOworICAgIHVpbnQ2NF90IGNhcGFjaXR5OworICAgIHVpbnQ2NF90IGZlYXR1 cmVzOworICAgIHVpbnQzMl90IGZyZWVfaGVhZDsKKyAgICB1aW50OF90IHN0YXR1czsKKyAgICBj aGFyICpkYXRhOworICAgIFFUZXN0U3RhdGUgKnF0cyA9IGdsb2JhbF9xdGVzdDsKKyAgICBRVmly dFF1ZXVlICp2cTsKKworICAgIGZlYXR1cmVzID0gcXZpcnRpb19nZXRfZmVhdHVyZXMoZGV2KTsK KyAgICBmZWF0dXJlcyA9IGZlYXR1cmVzICYgfihRVklSVElPX0ZfQkFEX0ZFQVRVUkUgfAorICAg ICAgICAgICAgICAgICAgICAoMXUgPDwgVklSVElPX1JJTkdfRl9JTkRJUkVDVF9ERVNDKSB8Cisg ICAgICAgICAgICAgICAgICAgICgxdSA8PCBWSVJUSU9fUklOR19GX0VWRU5UX0lEWCkgfAorICAg ICAgICAgICAgICAgICAgICAoMXUgPDwgVklSVElPX0JMS19GX1NDU0kpKTsKKyAgICBxdmlydGlv X3NldF9mZWF0dXJlcyhkZXYsIGZlYXR1cmVzKTsKKworICAgIGNhcGFjaXR5ID0gcXZpcnRpb19j b25maWdfcmVhZHEoZGV2LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoY2FwYWNpdHksID09LCBU RVNUX0lNQUdFX1NJWkUgLyA1MTIpOworCisgICAgdnEgPSBxdmlydHF1ZXVlX3NldHVwKGRldiwg YWxsb2MsIDApOworCisgICAgcXZpcnRpb19zZXRfZHJpdmVyX29rKGRldik7CisKKyAgICAvKiBX cml0ZSBhbmQgcmVhZCB3aXRoIDMgZGVzY3JpcHRvciBsYXlvdXQgKi8KKyAgICAvKiBXcml0ZSBy ZXF1ZXN0ICovCisgICAgcmVxLnR5cGUgPSBWSVJUSU9fQkxLX1RfT1VUOworICAgIHJlcS5pb3By aW8gPSAxOworICAgIHJlcS5zZWN0b3IgPSAwOworICAgIHJlcS5kYXRhID0gZ19tYWxsb2MwKDUx Mik7CisgICAgc3RyY3B5KHJlcS5kYXRhLCAiVEVTVCIpOworCisgICAgcmVxX2FkZHIgPSB2aXJ0 aW9fYmxrX3JlcXVlc3QoYWxsb2MsIGRldiwgJnJlcSwgNTEyKTsKKworICAgIGdfZnJlZShyZXEu ZGF0YSk7CisKKyAgICBmcmVlX2hlYWQgPSBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRk ciwgMTYsIGZhbHNlLCB0cnVlKTsKKyAgICBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRk ciArIDE2LCA1MTIsIGZhbHNlLCB0cnVlKTsKKyAgICBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCBy ZXFfYWRkciArIDUyOCwgMSwgdHJ1ZSwgZmFsc2UpOworCisgICAgcXZpcnRxdWV1ZV9raWNrKHF0 cywgZGV2LCB2cSwgZnJlZV9oZWFkKTsKKworICAgIHF2aXJ0aW9fd2FpdF91c2VkX2VsZW0ocXRz LCBkZXYsIHZxLCBmcmVlX2hlYWQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBR VklSVElPX0JMS19USU1FT1VUX1VTKTsKKyAgICBzdGF0dXMgPSByZWFkYihyZXFfYWRkciArIDUy OCk7CisgICAgZ19hc3NlcnRfY21waW50KHN0YXR1cywgPT0sIDApOworCisgICAgZ3Vlc3RfZnJl ZShhbGxvYywgcmVxX2FkZHIpOworCisgICAgLyogUmVhZCByZXF1ZXN0ICovCisgICAgcmVxLnR5 cGUgPSBWSVJUSU9fQkxLX1RfSU47CisgICAgcmVxLmlvcHJpbyA9IDE7CisgICAgcmVxLnNlY3Rv ciA9IDA7CisgICAgcmVxLmRhdGEgPSBnX21hbGxvYzAoNTEyKTsKKworICAgIHJlcV9hZGRyID0g dmlydGlvX2Jsa19yZXF1ZXN0KGFsbG9jLCBkZXYsICZyZXEsIDUxMik7CisKKyAgICBnX2ZyZWUo cmVxLmRhdGEpOworCisgICAgZnJlZV9oZWFkID0gcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVx X2FkZHIsIDE2LCBmYWxzZSwgdHJ1ZSk7CisgICAgcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVx X2FkZHIgKyAxNiwgNTEyLCB0cnVlLCB0cnVlKTsKKyAgICBxdmlydHF1ZXVlX2FkZChxdHMsIHZx LCByZXFfYWRkciArIDUyOCwgMSwgdHJ1ZSwgZmFsc2UpOworCisgICAgcXZpcnRxdWV1ZV9raWNr KHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkKTsKKworICAgIHF2aXJ0aW9fd2FpdF91c2VkX2VsZW0o cXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVklSVElPX0JMS19USU1FT1VUX1VTKTsKKyAgICBzdGF0dXMgPSByZWFkYihyZXFfYWRkciAr IDUyOCk7CisgICAgZ19hc3NlcnRfY21waW50KHN0YXR1cywgPT0sIDApOworCisgICAgZGF0YSA9 IGdfbWFsbG9jMCg1MTIpOworICAgIHF0ZXN0X21lbXJlYWQocXRzLCByZXFfYWRkciArIDE2LCBk YXRhLCA1MTIpOworICAgIGdfYXNzZXJ0X2NtcHN0cihkYXRhLCA9PSwgIlRFU1QiKTsKKyAgICBn X2ZyZWUoZGF0YSk7CisKKyAgICBndWVzdF9mcmVlKGFsbG9jLCByZXFfYWRkcik7CisKKyAgICBp ZiAoZmVhdHVyZXMgJiAoMXUgPDwgVklSVElPX0JMS19GX1dSSVRFX1pFUk9FUykpIHsKKyAgICAg ICAgc3RydWN0IHZpcnRpb19ibGtfZGlzY2FyZF93cml0ZV96ZXJvZXMgZHd6X2hkcjsKKyAgICAg ICAgdm9pZCAqZXhwZWN0ZWQ7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogV1JJVEVfWkVST0VT IHJlcXVlc3Qgb24gdGhlIHNhbWUgc2VjdG9yIG9mIHByZXZpb3VzIHRlc3Qgd2hlcmUKKyAgICAg ICAgICogd2Ugd3JvdGUgIlRFU1QiLgorICAgICAgICAgKi8KKyAgICAgICAgcmVxLnR5cGUgPSBW SVJUSU9fQkxLX1RfV1JJVEVfWkVST0VTOworICAgICAgICByZXEuZGF0YSA9IChjaGFyICopICZk d3pfaGRyOworICAgICAgICBkd3pfaGRyLnNlY3RvciA9IDA7CisgICAgICAgIGR3el9oZHIubnVt X3NlY3RvcnMgPSAxOworICAgICAgICBkd3pfaGRyLmZsYWdzID0gMDsKKworICAgICAgICB2aXJ0 aW9fYmxrX2ZpeF9kd3pfaGRyKGRldiwgJmR3el9oZHIpOworCisgICAgICAgIHJlcV9hZGRyID0g dmlydGlvX2Jsa19yZXF1ZXN0KGFsbG9jLCBkZXYsICZyZXEsIHNpemVvZihkd3pfaGRyKSk7CisK KyAgICAgICAgZnJlZV9oZWFkID0gcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIsIDE2 LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRy ICsgMTYsIHNpemVvZihkd3pfaGRyKSwgZmFsc2UsIHRydWUpOworICAgICAgICBxdmlydHF1ZXVl X2FkZChxdHMsIHZxLCByZXFfYWRkciArIDE2ICsgc2l6ZW9mKGR3el9oZHIpLCAxLCB0cnVlLAor ICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CisKKyAgICAgICAgcXZpcnRxdWV1ZV9raWNr KHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkKTsKKworICAgICAgICBxdmlydGlvX3dhaXRfdXNlZF9l bGVtKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFWSVJUSU9fQkxLX1RJTUVPVVRfVVMpOworICAgICAgICBzdGF0dXMgPSByZWFk YihyZXFfYWRkciArIDE2ICsgc2l6ZW9mKGR3el9oZHIpKTsKKyAgICAgICAgZ19hc3NlcnRfY21w aW50KHN0YXR1cywgPT0sIDApOworCisgICAgICAgIGd1ZXN0X2ZyZWUoYWxsb2MsIHJlcV9hZGRy KTsKKworICAgICAgICAvKiBSZWFkIHJlcXVlc3QgdG8gY2hlY2sgaWYgdGhlIHNlY3RvciBjb250 YWlucyBhbGwgemVyb2VzICovCisgICAgICAgIHJlcS50eXBlID0gVklSVElPX0JMS19UX0lOOwor ICAgICAgICByZXEuaW9wcmlvID0gMTsKKyAgICAgICAgcmVxLnNlY3RvciA9IDA7CisgICAgICAg IHJlcS5kYXRhID0gZ19tYWxsb2MwKDUxMik7CisKKyAgICAgICAgcmVxX2FkZHIgPSB2aXJ0aW9f YmxrX3JlcXVlc3QoYWxsb2MsIGRldiwgJnJlcSwgNTEyKTsKKworICAgICAgICBnX2ZyZWUocmVx LmRhdGEpOworCisgICAgICAgIGZyZWVfaGVhZCA9IHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJl cV9hZGRyLCAxNiwgZmFsc2UsIHRydWUpOworICAgICAgICBxdmlydHF1ZXVlX2FkZChxdHMsIHZx LCByZXFfYWRkciArIDE2LCA1MTIsIHRydWUsIHRydWUpOworICAgICAgICBxdmlydHF1ZXVlX2Fk ZChxdHMsIHZxLCByZXFfYWRkciArIDUyOCwgMSwgdHJ1ZSwgZmFsc2UpOworCisgICAgICAgIHF2 aXJ0cXVldWVfa2ljayhxdHMsIGRldiwgdnEsIGZyZWVfaGVhZCk7CisKKyAgICAgICAgcXZpcnRp b193YWl0X3VzZWRfZWxlbShxdHMsIGRldiwgdnEsIGZyZWVfaGVhZCwgTlVMTCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVklSVElPX0JMS19USU1FT1VUX1VTKTsKKyAgICAgICAg c3RhdHVzID0gcmVhZGIocmVxX2FkZHIgKyA1MjgpOworICAgICAgICBnX2Fzc2VydF9jbXBpbnQo c3RhdHVzLCA9PSwgMCk7CisKKyAgICAgICAgZGF0YSA9IGdfbWFsbG9jKDUxMik7CisgICAgICAg IGV4cGVjdGVkID0gZ19tYWxsb2MwKDUxMik7CisgICAgICAgIHF0ZXN0X21lbXJlYWQocXRzLCBy ZXFfYWRkciArIDE2LCBkYXRhLCA1MTIpOworICAgICAgICBnX2Fzc2VydF9jbXBtZW0oZGF0YSwg NTEyLCBleHBlY3RlZCwgNTEyKTsKKyAgICAgICAgZ19mcmVlKGV4cGVjdGVkKTsKKyAgICAgICAg Z19mcmVlKGRhdGEpOworCisgICAgICAgIGd1ZXN0X2ZyZWUoYWxsb2MsIHJlcV9hZGRyKTsKKyAg ICB9CisKKyAgICBpZiAoZmVhdHVyZXMgJiAoMXUgPDwgVklSVElPX0JMS19GX0RJU0NBUkQpKSB7 CisgICAgICAgIHN0cnVjdCB2aXJ0aW9fYmxrX2Rpc2NhcmRfd3JpdGVfemVyb2VzIGR3el9oZHI7 CisKKyAgICAgICAgcmVxLnR5cGUgPSBWSVJUSU9fQkxLX1RfRElTQ0FSRDsKKyAgICAgICAgcmVx LmRhdGEgPSAoY2hhciAqKSAmZHd6X2hkcjsKKyAgICAgICAgZHd6X2hkci5zZWN0b3IgPSAwOwor ICAgICAgICBkd3pfaGRyLm51bV9zZWN0b3JzID0gMTsKKyAgICAgICAgZHd6X2hkci5mbGFncyA9 IDA7CisKKyAgICAgICAgdmlydGlvX2Jsa19maXhfZHd6X2hkcihkZXYsICZkd3pfaGRyKTsKKwor ICAgICAgICByZXFfYWRkciA9IHZpcnRpb19ibGtfcmVxdWVzdChhbGxvYywgZGV2LCAmcmVxLCBz aXplb2YoZHd6X2hkcikpOworCisgICAgICAgIGZyZWVfaGVhZCA9IHF2aXJ0cXVldWVfYWRkKHF0 cywgdnEsIHJlcV9hZGRyLCAxNiwgZmFsc2UsIHRydWUpOworICAgICAgICBxdmlydHF1ZXVlX2Fk ZChxdHMsIHZxLCByZXFfYWRkciArIDE2LCBzaXplb2YoZHd6X2hkciksIGZhbHNlLCB0cnVlKTsK KyAgICAgICAgcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIgKyAxNiArIHNpemVvZihk d3pfaGRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgMSwgdHJ1ZSwgZmFsc2UpOworCisgICAg ICAgIHF2aXJ0cXVldWVfa2ljayhxdHMsIGRldiwgdnEsIGZyZWVfaGVhZCk7CisKKyAgICAgICAg cXZpcnRpb193YWl0X3VzZWRfZWxlbShxdHMsIGRldiwgdnEsIGZyZWVfaGVhZCwgTlVMTCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVklSVElPX0JMS19USU1FT1VUX1VTKTsKKyAg ICAgICAgc3RhdHVzID0gcmVhZGIocmVxX2FkZHIgKyAxNiArIHNpemVvZihkd3pfaGRyKSk7Cisg ICAgICAgIGdfYXNzZXJ0X2NtcGludChzdGF0dXMsID09LCAwKTsKKworICAgICAgICBndWVzdF9m cmVlKGFsbG9jLCByZXFfYWRkcik7CisgICAgfQorCisgICAgaWYgKGZlYXR1cmVzICYgKDF1IDw8 IFZJUlRJT19GX0FOWV9MQVlPVVQpKSB7CisgICAgICAgIC8qIFdyaXRlIGFuZCByZWFkIHdpdGgg MiBkZXNjcmlwdG9yIGxheW91dCAqLworICAgICAgICAvKiBXcml0ZSByZXF1ZXN0ICovCisgICAg ICAgIHJlcS50eXBlID0gVklSVElPX0JMS19UX09VVDsKKyAgICAgICAgcmVxLmlvcHJpbyA9IDE7 CisgICAgICAgIHJlcS5zZWN0b3IgPSAxOworICAgICAgICByZXEuZGF0YSA9IGdfbWFsbG9jMCg1 MTIpOworICAgICAgICBzdHJjcHkocmVxLmRhdGEsICJURVNUIik7CisKKyAgICAgICAgcmVxX2Fk ZHIgPSB2aXJ0aW9fYmxrX3JlcXVlc3QoYWxsb2MsIGRldiwgJnJlcSwgNTEyKTsKKworICAgICAg ICBnX2ZyZWUocmVxLmRhdGEpOworCisgICAgICAgIGZyZWVfaGVhZCA9IHF2aXJ0cXVldWVfYWRk KHF0cywgdnEsIHJlcV9hZGRyLCA1MjgsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgcXZpcnRxdWV1 ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIgKyA1MjgsIDEsIHRydWUsIGZhbHNlKTsKKyAgICAgICAg cXZpcnRxdWV1ZV9raWNrKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkKTsKKworICAgICAgICBxdmly dGlvX3dhaXRfdXNlZF9lbGVtKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkLCBOVUxMLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFWSVJUSU9fQkxLX1RJTUVPVVRfVVMpOworICAgICAg ICBzdGF0dXMgPSByZWFkYihyZXFfYWRkciArIDUyOCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGlu dChzdGF0dXMsID09LCAwKTsKKworICAgICAgICBndWVzdF9mcmVlKGFsbG9jLCByZXFfYWRkcik7 CisKKyAgICAgICAgLyogUmVhZCByZXF1ZXN0ICovCisgICAgICAgIHJlcS50eXBlID0gVklSVElP X0JMS19UX0lOOworICAgICAgICByZXEuaW9wcmlvID0gMTsKKyAgICAgICAgcmVxLnNlY3RvciA9 IDE7CisgICAgICAgIHJlcS5kYXRhID0gZ19tYWxsb2MwKDUxMik7CisKKyAgICAgICAgcmVxX2Fk ZHIgPSB2aXJ0aW9fYmxrX3JlcXVlc3QoYWxsb2MsIGRldiwgJnJlcSwgNTEyKTsKKworICAgICAg ICBnX2ZyZWUocmVxLmRhdGEpOworCisgICAgICAgIGZyZWVfaGVhZCA9IHF2aXJ0cXVldWVfYWRk KHF0cywgdnEsIHJlcV9hZGRyLCAxNiwgZmFsc2UsIHRydWUpOworICAgICAgICBxdmlydHF1ZXVl X2FkZChxdHMsIHZxLCByZXFfYWRkciArIDE2LCA1MTMsIHRydWUsIGZhbHNlKTsKKworICAgICAg ICBxdmlydHF1ZXVlX2tpY2socXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQpOworCisgICAgICAgIHF2 aXJ0aW9fd2FpdF91c2VkX2VsZW0ocXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQsIE5VTEwsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVZJUlRJT19CTEtfVElNRU9VVF9VUyk7CisgICAg ICAgIHN0YXR1cyA9IHJlYWRiKHJlcV9hZGRyICsgNTI4KTsKKyAgICAgICAgZ19hc3NlcnRfY21w aW50KHN0YXR1cywgPT0sIDApOworCisgICAgICAgIGRhdGEgPSBnX21hbGxvYzAoNTEyKTsKKyAg ICAgICAgcXRlc3RfbWVtcmVhZChxdHMsIHJlcV9hZGRyICsgMTYsIGRhdGEsIDUxMik7CisgICAg ICAgIGdfYXNzZXJ0X2NtcHN0cihkYXRhLCA9PSwgIlRFU1QiKTsKKyAgICAgICAgZ19mcmVlKGRh dGEpOworCisgICAgICAgIGd1ZXN0X2ZyZWUoYWxsb2MsIHJlcV9hZGRyKTsKKyAgICB9CisKKyAg ICByZXR1cm4gdnE7Cit9CisKK3N0YXRpYyB2b2lkIGJhc2ljKHZvaWQgKm9iaiwgdm9pZCAqZGF0 YSwgUUd1ZXN0QWxsb2NhdG9yICp0X2FsbG9jKQoreworICAgIFFWaG9zdFVzZXJCbGsgKmJsa19p ZiA9IG9iajsKKyAgICBRVmlydFF1ZXVlICp2cTsKKworICAgIHZxID0gdGVzdF9iYXNpYyhibGtf aWYtPnZkZXYsIHRfYWxsb2MpOworICAgIHF2aXJ0cXVldWVfY2xlYW51cChibGtfaWYtPnZkZXYt PmJ1cywgdnEsIHRfYWxsb2MpOworCit9CisKK3N0YXRpYyB2b2lkIGluZGlyZWN0KHZvaWQgKm9i aiwgdm9pZCAqdV9kYXRhLCBRR3Vlc3RBbGxvY2F0b3IgKnRfYWxsb2MpCit7CisgICAgUVZpcnRR dWV1ZSAqdnE7CisgICAgUVZob3N0VXNlckJsayAqYmxrX2lmID0gb2JqOworICAgIFFWaXJ0aW9E ZXZpY2UgKmRldiA9IGJsa19pZi0+dmRldjsKKyAgICBRVmlydGlvQmxrUmVxIHJlcTsKKyAgICBR VlJpbmdJbmRpcmVjdERlc2MgKmluZGlyZWN0OworICAgIHVpbnQ2NF90IHJlcV9hZGRyOworICAg IHVpbnQ2NF90IGNhcGFjaXR5OworICAgIHVpbnQ2NF90IGZlYXR1cmVzOworICAgIHVpbnQzMl90 IGZyZWVfaGVhZDsKKyAgICB1aW50OF90IHN0YXR1czsKKyAgICBjaGFyICpkYXRhOworICAgIFFU ZXN0U3RhdGUgKnF0cyA9IGdsb2JhbF9xdGVzdDsKKworICAgIGZlYXR1cmVzID0gcXZpcnRpb19n ZXRfZmVhdHVyZXMoZGV2KTsKKyAgICBnX2Fzc2VydF9jbXBoZXgoZmVhdHVyZXMgJiAoMXUgPDwg VklSVElPX1JJTkdfRl9JTkRJUkVDVF9ERVNDKSwgIT0sIDApOworICAgIGZlYXR1cmVzID0gZmVh dHVyZXMgJiB+KFFWSVJUSU9fRl9CQURfRkVBVFVSRSB8CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKDF1IDw8IFZJUlRJT19SSU5HX0ZfRVZFTlRfSURYKSB8CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKDF1IDw8IFZJUlRJT19CTEtfRl9TQ1NJKSk7CisgICAgcXZpcnRpb19zZXRf ZmVhdHVyZXMoZGV2LCBmZWF0dXJlcyk7CisKKyAgICBjYXBhY2l0eSA9IHF2aXJ0aW9fY29uZmln X3JlYWRxKGRldiwgMCk7CisgICAgZ19hc3NlcnRfY21waW50KGNhcGFjaXR5LCA9PSwgVEVTVF9J TUFHRV9TSVpFIC8gNTEyKTsKKworICAgIHZxID0gcXZpcnRxdWV1ZV9zZXR1cChkZXYsIHRfYWxs b2MsIDApOworICAgIHF2aXJ0aW9fc2V0X2RyaXZlcl9vayhkZXYpOworCisgICAgLyogV3JpdGUg cmVxdWVzdCAqLworICAgIHJlcS50eXBlID0gVklSVElPX0JMS19UX09VVDsKKyAgICByZXEuaW9w cmlvID0gMTsKKyAgICByZXEuc2VjdG9yID0gMDsKKyAgICByZXEuZGF0YSA9IGdfbWFsbG9jMCg1 MTIpOworICAgIHN0cmNweShyZXEuZGF0YSwgIlRFU1QiKTsKKworICAgIHJlcV9hZGRyID0gdmly dGlvX2Jsa19yZXF1ZXN0KHRfYWxsb2MsIGRldiwgJnJlcSwgNTEyKTsKKworICAgIGdfZnJlZShy ZXEuZGF0YSk7CisKKyAgICBpbmRpcmVjdCA9IHF2cmluZ19pbmRpcmVjdF9kZXNjX3NldHVwKHF0 cywgZGV2LCB0X2FsbG9jLCAyKTsKKyAgICBxdnJpbmdfaW5kaXJlY3RfZGVzY19hZGQoZGV2LCBx dHMsIGluZGlyZWN0LCByZXFfYWRkciwgNTI4LCBmYWxzZSk7CisgICAgcXZyaW5nX2luZGlyZWN0 X2Rlc2NfYWRkKGRldiwgcXRzLCBpbmRpcmVjdCwgcmVxX2FkZHIgKyA1MjgsIDEsIHRydWUpOwor ICAgIGZyZWVfaGVhZCA9IHF2aXJ0cXVldWVfYWRkX2luZGlyZWN0KHF0cywgdnEsIGluZGlyZWN0 KTsKKyAgICBxdmlydHF1ZXVlX2tpY2socXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQpOworCisgICAg cXZpcnRpb193YWl0X3VzZWRfZWxlbShxdHMsIGRldiwgdnEsIGZyZWVfaGVhZCwgTlVMTCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFWSVJUSU9fQkxLX1RJTUVPVVRfVVMpOworICAgIHN0 YXR1cyA9IHJlYWRiKHJlcV9hZGRyICsgNTI4KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoc3RhdHVz LCA9PSwgMCk7CisKKyAgICBnX2ZyZWUoaW5kaXJlY3QpOworICAgIGd1ZXN0X2ZyZWUodF9hbGxv YywgcmVxX2FkZHIpOworCisgICAgLyogUmVhZCByZXF1ZXN0ICovCisgICAgcmVxLnR5cGUgPSBW SVJUSU9fQkxLX1RfSU47CisgICAgcmVxLmlvcHJpbyA9IDE7CisgICAgcmVxLnNlY3RvciA9IDA7 CisgICAgcmVxLmRhdGEgPSBnX21hbGxvYzAoNTEyKTsKKyAgICBzdHJjcHkocmVxLmRhdGEsICJU RVNUIik7CisKKyAgICByZXFfYWRkciA9IHZpcnRpb19ibGtfcmVxdWVzdCh0X2FsbG9jLCBkZXYs ICZyZXEsIDUxMik7CisKKyAgICBnX2ZyZWUocmVxLmRhdGEpOworCisgICAgaW5kaXJlY3QgPSBx dnJpbmdfaW5kaXJlY3RfZGVzY19zZXR1cChxdHMsIGRldiwgdF9hbGxvYywgMik7CisgICAgcXZy aW5nX2luZGlyZWN0X2Rlc2NfYWRkKGRldiwgcXRzLCBpbmRpcmVjdCwgcmVxX2FkZHIsIDE2LCBm YWxzZSk7CisgICAgcXZyaW5nX2luZGlyZWN0X2Rlc2NfYWRkKGRldiwgcXRzLCBpbmRpcmVjdCwg cmVxX2FkZHIgKyAxNiwgNTEzLCB0cnVlKTsKKyAgICBmcmVlX2hlYWQgPSBxdmlydHF1ZXVlX2Fk ZF9pbmRpcmVjdChxdHMsIHZxLCBpbmRpcmVjdCk7CisgICAgcXZpcnRxdWV1ZV9raWNrKHF0cywg ZGV2LCB2cSwgZnJlZV9oZWFkKTsKKworICAgIHF2aXJ0aW9fd2FpdF91c2VkX2VsZW0ocXRzLCBk ZXYsIHZxLCBmcmVlX2hlYWQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVklS VElPX0JMS19USU1FT1VUX1VTKTsKKyAgICBzdGF0dXMgPSByZWFkYihyZXFfYWRkciArIDUyOCk7 CisgICAgZ19hc3NlcnRfY21waW50KHN0YXR1cywgPT0sIDApOworCisgICAgZGF0YSA9IGdfbWFs bG9jMCg1MTIpOworICAgIHF0ZXN0X21lbXJlYWQocXRzLCByZXFfYWRkciArIDE2LCBkYXRhLCA1 MTIpOworICAgIGdfYXNzZXJ0X2NtcHN0cihkYXRhLCA9PSwgIlRFU1QiKTsKKyAgICBnX2ZyZWUo ZGF0YSk7CisKKyAgICBnX2ZyZWUoaW5kaXJlY3QpOworICAgIGd1ZXN0X2ZyZWUodF9hbGxvYywg cmVxX2FkZHIpOworICAgIHF2aXJ0cXVldWVfY2xlYW51cChkZXYtPmJ1cywgdnEsIHRfYWxsb2Mp OworfQorCitzdGF0aWMgdm9pZCBpZHgodm9pZCAqb2JqLCB2b2lkICp1X2RhdGEsIFFHdWVzdEFs bG9jYXRvciAqdF9hbGxvYykKK3sKKyAgICBRVmlydFF1ZXVlICp2cTsKKyAgICBRVmhvc3RVc2Vy QmxrUENJICpibGsgPSBvYmo7CisgICAgUVZpcnRpb1BDSURldmljZSAqcGRldiA9ICZibGstPnBj aV92ZGV2OworICAgIFFWaXJ0aW9EZXZpY2UgKmRldiA9ICZwZGV2LT52ZGV2OworICAgIFFWaXJ0 aW9CbGtSZXEgcmVxOworICAgIHVpbnQ2NF90IHJlcV9hZGRyOworICAgIHVpbnQ2NF90IGNhcGFj aXR5OworICAgIHVpbnQ2NF90IGZlYXR1cmVzOworICAgIHVpbnQzMl90IGZyZWVfaGVhZDsKKyAg ICB1aW50MzJfdCB3cml0ZV9oZWFkOworICAgIHVpbnQzMl90IGRlc2NfaWR4OworICAgIHVpbnQ4 X3Qgc3RhdHVzOworICAgIGNoYXIgKmRhdGE7CisgICAgUU9TR3JhcGhPYmplY3QgKmJsa19vYmpl Y3QgPSBvYmo7CisgICAgUVBDSURldmljZSAqcGNpX2RldiA9IGJsa19vYmplY3QtPmdldF9kcml2 ZXIoYmxrX29iamVjdCwgInBjaS1kZXZpY2UiKTsKKyAgICBRVGVzdFN0YXRlICpxdHMgPSBnbG9i YWxfcXRlc3Q7CisKKyAgICBpZiAocXBjaV9jaGVja19idWdneV9tc2kocGNpX2RldikpIHsKKyAg ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHFwY2lfbXNpeF9lbmFibGUocGRldi0+cGRldik7 CisgICAgcXZpcnRpb19wY2lfc2V0X21zaXhfY29uZmlndXJhdGlvbl92ZWN0b3IocGRldiwgdF9h bGxvYywgMCk7CisKKyAgICBmZWF0dXJlcyA9IHF2aXJ0aW9fZ2V0X2ZlYXR1cmVzKGRldik7Cisg ICAgZmVhdHVyZXMgPSBmZWF0dXJlcyAmIH4oUVZJUlRJT19GX0JBRF9GRUFUVVJFIHwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoMXUgPDwgVklSVElPX1JJTkdfRl9JTkRJUkVDVF9ERVND KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDF1IDw8IFZJUlRJT19GX05PVElGWV9P Tl9FTVBUWSkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxdSA8PCBWSVJUSU9fQkxL X0ZfU0NTSSkpOworICAgIHF2aXJ0aW9fc2V0X2ZlYXR1cmVzKGRldiwgZmVhdHVyZXMpOworCisg ICAgY2FwYWNpdHkgPSBxdmlydGlvX2NvbmZpZ19yZWFkcShkZXYsIDApOworICAgIGdfYXNzZXJ0 X2NtcGludChjYXBhY2l0eSwgPT0sIFRFU1RfSU1BR0VfU0laRSAvIDUxMik7CisKKyAgICB2cSA9 IHF2aXJ0cXVldWVfc2V0dXAoZGV2LCB0X2FsbG9jLCAwKTsKKyAgICBxdmlydHF1ZXVlX3BjaV9t c2l4X3NldHVwKHBkZXYsIChRVmlydFF1ZXVlUENJICopdnEsIHRfYWxsb2MsIDEpOworCisgICAg cXZpcnRpb19zZXRfZHJpdmVyX29rKGRldik7CisKKyAgICAvKgorICAgICAqIGxpYnZob3N0LXVz ZXIgc2lnbmFscyB0aGUgY2FsbCBmZCBpbiBWSE9TVF9VU0VSX1NFVF9WUklOR19DQUxMLCBtYWtl CisgICAgICogc3VyZSB0byB3YWl0IGZvciB0aGUgaXNyIGhlcmUgc28gd2UgZG9uJ3QgcmFjZSBh bmQgY29uZnVzZSBpdCBsYXRlciBvbi4KKyAgICAgKi8KKyAgICBxdmlydGlvX3dhaXRfcXVldWVf aXNyKHF0cywgZGV2LCB2cSwgUVZJUlRJT19CTEtfVElNRU9VVF9VUyk7CisKKyAgICAvKiBXcml0 ZSByZXF1ZXN0ICovCisgICAgcmVxLnR5cGUgPSBWSVJUSU9fQkxLX1RfT1VUOworICAgIHJlcS5p b3ByaW8gPSAxOworICAgIHJlcS5zZWN0b3IgPSAwOworICAgIHJlcS5kYXRhID0gZ19tYWxsb2Mw KDUxMik7CisgICAgc3RyY3B5KHJlcS5kYXRhLCAiVEVTVCIpOworCisgICAgcmVxX2FkZHIgPSB2 aXJ0aW9fYmxrX3JlcXVlc3QodF9hbGxvYywgZGV2LCAmcmVxLCA1MTIpOworCisgICAgZ19mcmVl KHJlcS5kYXRhKTsKKworICAgIGZyZWVfaGVhZCA9IHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJl cV9hZGRyLCAxNiwgZmFsc2UsIHRydWUpOworICAgIHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJl cV9hZGRyICsgMTYsIDUxMiwgZmFsc2UsIHRydWUpOworICAgIHF2aXJ0cXVldWVfYWRkKHF0cywg dnEsIHJlcV9hZGRyICsgNTI4LCAxLCB0cnVlLCBmYWxzZSk7CisgICAgcXZpcnRxdWV1ZV9raWNr KHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkKTsKKworICAgIHF2aXJ0aW9fd2FpdF91c2VkX2VsZW0o cXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVklSVElPX0JMS19USU1FT1VUX1VTKTsKKworICAgIC8qIFdyaXRlIHJlcXVlc3QgKi8KKyAg ICByZXEudHlwZSA9IFZJUlRJT19CTEtfVF9PVVQ7CisgICAgcmVxLmlvcHJpbyA9IDE7CisgICAg cmVxLnNlY3RvciA9IDE7CisgICAgcmVxLmRhdGEgPSBnX21hbGxvYzAoNTEyKTsKKyAgICBzdHJj cHkocmVxLmRhdGEsICJURVNUIik7CisKKyAgICByZXFfYWRkciA9IHZpcnRpb19ibGtfcmVxdWVz dCh0X2FsbG9jLCBkZXYsICZyZXEsIDUxMik7CisKKyAgICBnX2ZyZWUocmVxLmRhdGEpOworCisg ICAgLyogTm90aWZ5IGFmdGVyIHByb2Nlc3NpbmcgdGhlIHRoaXJkIHJlcXVlc3QgKi8KKyAgICBx dmlydHF1ZXVlX3NldF91c2VkX2V2ZW50KHF0cywgdnEsIDIpOworICAgIGZyZWVfaGVhZCA9IHF2 aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyLCAxNiwgZmFsc2UsIHRydWUpOworICAgIHF2 aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsgMTYsIDUxMiwgZmFsc2UsIHRydWUpOwor ICAgIHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsgNTI4LCAxLCB0cnVlLCBmYWxz ZSk7CisgICAgcXZpcnRxdWV1ZV9raWNrKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkKTsKKyAgICB3 cml0ZV9oZWFkID0gZnJlZV9oZWFkOworCisgICAgLyogTm8gbm90aWZpY2F0aW9uIGV4cGVjdGVk ICovCisgICAgc3RhdHVzID0gcXZpcnRpb193YWl0X3N0YXR1c19ieXRlX25vX2lzcihxdHMsIGRl diwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZxLCByZXFf YWRkciArIDUyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFWSVJUSU9fQkxLX1RJTUVPVVRfVVMpOworICAgIGdfYXNzZXJ0X2NtcGludChzdGF0dXMsID09 LCAwKTsKKworICAgIGd1ZXN0X2ZyZWUodF9hbGxvYywgcmVxX2FkZHIpOworCisgICAgLyogUmVh ZCByZXF1ZXN0ICovCisgICAgcmVxLnR5cGUgPSBWSVJUSU9fQkxLX1RfSU47CisgICAgcmVxLmlv cHJpbyA9IDE7CisgICAgcmVxLnNlY3RvciA9IDE7CisgICAgcmVxLmRhdGEgPSBnX21hbGxvYzAo NTEyKTsKKworICAgIHJlcV9hZGRyID0gdmlydGlvX2Jsa19yZXF1ZXN0KHRfYWxsb2MsIGRldiwg JnJlcSwgNTEyKTsKKworICAgIGdfZnJlZShyZXEuZGF0YSk7CisKKyAgICBmcmVlX2hlYWQgPSBx dmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciwgMTYsIGZhbHNlLCB0cnVlKTsKKyAgICBx dmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciArIDE2LCA1MTIsIHRydWUsIHRydWUpOwor ICAgIHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsgNTI4LCAxLCB0cnVlLCBmYWxz ZSk7CisKKyAgICBxdmlydHF1ZXVlX2tpY2socXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQpOworCisg ICAgLyogV2UgZ2V0IGp1c3Qgb25lIG5vdGlmaWNhdGlvbiBmb3IgYm90aCByZXF1ZXN0cyAqLwor ICAgIHF2aXJ0aW9fd2FpdF91c2VkX2VsZW0ocXRzLCBkZXYsIHZxLCB3cml0ZV9oZWFkLCBOVUxM LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUVZJUlRJT19CTEtfVElNRU9VVF9VUyk7Cisg ICAgZ19hc3NlcnQocXZpcnRxdWV1ZV9nZXRfYnVmKHF0cywgdnEsICZkZXNjX2lkeCwgTlVMTCkp OworICAgIGdfYXNzZXJ0X2NtcGludChkZXNjX2lkeCwgPT0sIGZyZWVfaGVhZCk7CisKKyAgICBz dGF0dXMgPSByZWFkYihyZXFfYWRkciArIDUyOCk7CisgICAgZ19hc3NlcnRfY21waW50KHN0YXR1 cywgPT0sIDApOworCisgICAgZGF0YSA9IGdfbWFsbG9jMCg1MTIpOworICAgIHF0ZXN0X21lbXJl YWQocXRzLCByZXFfYWRkciArIDE2LCBkYXRhLCA1MTIpOworICAgIGdfYXNzZXJ0X2NtcHN0cihk YXRhLCA9PSwgIlRFU1QiKTsKKyAgICBnX2ZyZWUoZGF0YSk7CisKKyAgICBndWVzdF9mcmVlKHRf YWxsb2MsIHJlcV9hZGRyKTsKKworICAgIC8qIEVuZCB0ZXN0ICovCisgICAgcXBjaV9tc2l4X2Rp c2FibGUocGRldi0+cGRldik7CisKKyAgICBxdmlydHF1ZXVlX2NsZWFudXAoZGV2LT5idXMsIHZx LCB0X2FsbG9jKTsKK30KKworc3RhdGljIHZvaWQgcGNpX2hvdHBsdWcodm9pZCAqb2JqLCB2b2lk ICpkYXRhLCBRR3Vlc3RBbGxvY2F0b3IgKnRfYWxsb2MpCit7CisgICAgUVZpcnRpb1BDSURldmlj ZSAqZGV2MSA9IG9iajsKKyAgICBRVmlydGlvUENJRGV2aWNlICpkZXY7CisgICAgUVRlc3RTdGF0 ZSAqcXRzID0gZGV2MS0+cGRldi0+YnVzLT5xdHM7CisKKyAgICAvKiBwbHVnIHNlY29uZGFyeSBk aXNrICovCisgICAgcXRlc3RfcW1wX2RldmljZV9hZGQocXRzLCAidmhvc3QtdXNlci1ibGstcGNp IiwgImRydjEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ7J2FkZHInOiAlcywgJ2NoYXJk ZXYnOiAnY2hhcjInfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5naWZ5KFBDSV9T TE9UX0hQKSAiLjAiKTsKKworICAgIGRldiA9IHZpcnRpb19wY2lfbmV3KGRldjEtPnBkZXYtPmJ1 cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAmKFFQQ0lBZGRyZXNzKSB7IC5kZXZmbiA9IFFQ Q0lfREVWRk4oUENJX1NMT1RfSFAsIDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkZXYpOworICAgIGdfYXNzZXJ0X2Nt cGludChkZXYtPnZkZXYuZGV2aWNlX3R5cGUsID09LCBWSVJUSU9fSURfQkxPQ0spOworICAgIHF2 aXJ0aW9fcGNpX2RldmljZV9kaXNhYmxlKGRldik7CisgICAgcW9zX29iamVjdF9kZXN0cm95KChR T1NHcmFwaE9iamVjdCAqKWRldik7CisKKyAgICAvKiB1bnBsdWcgc2Vjb25kYXJ5IGRpc2sgKi8K KyAgICBxcGNpX3VucGx1Z19hY3BpX2RldmljZV90ZXN0KHF0cywgImRydjEiLCBQQ0lfU0xPVF9I UCk7Cit9CisKKy8qCisgKiBDaGVjayB0aGF0IHNldHRpbmcgdGhlIHZyaW5nIGFkZHIgb24gYSBu b24tZXhpc3RlbnQgdmlydHF1ZXVlIGRvZXMKKyAqIG5vdCBjcmFzaC4KKyAqLworc3RhdGljIHZv aWQgdGVzdF9ub25leGlzdGVudF92aXJ0cXVldWUodm9pZCAqb2JqLCB2b2lkICpkYXRhLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUd1ZXN0QWxsb2NhdG9yICp0X2Fs bG9jKQoreworICAgIFFWaG9zdFVzZXJCbGtQQ0kgKmJsayA9IG9iajsKKyAgICBRVmlydGlvUENJ RGV2aWNlICpwZGV2ID0gJmJsay0+cGNpX3ZkZXY7CisgICAgUVBDSUJhciBiYXIwOworICAgIFFQ Q0lEZXZpY2UgKmRldjsKKworICAgIGRldiA9IHFwY2lfZGV2aWNlX2ZpbmQocGRldi0+cGRldi0+ YnVzLCBRUENJX0RFVkZOKDQsIDApKTsKKyAgICBnX2Fzc2VydChkZXYgIT0gTlVMTCk7CisgICAg cXBjaV9kZXZpY2VfZW5hYmxlKGRldik7CisKKyAgICBiYXIwID0gcXBjaV9pb21hcChkZXYsIDAs IE5VTEwpOworCisgICAgcXBjaV9pb193cml0ZWIoZGV2LCBiYXIwLCBWSVJUSU9fUENJX1FVRVVF X1NFTCwgMik7CisgICAgcXBjaV9pb193cml0ZWwoZGV2LCBiYXIwLCBWSVJUSU9fUENJX1FVRVVF X1BGTiwgMSk7CisKKyAgICBnX2ZyZWUoZGV2KTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKnF0 ZXN0X3FlbXVfc3RvcmFnZV9kYWVtb25fYmluYXJ5KHZvaWQpCit7CisgICAgY29uc3QgY2hhciAq cWVtdV9zdG9yYWdlX2RhZW1vbl9iaW47CisKKyAgICBxZW11X3N0b3JhZ2VfZGFlbW9uX2JpbiA9 IGdldGVudigiUVRFU1RfUUVNVV9TVE9SQUdFX0RBRU1PTl9CSU5BUlkiKTsKKyAgICBpZiAoIXFl bXVfc3RvcmFnZV9kYWVtb25fYmluKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRW52aXJv bm1lbnQgdmFyaWFibGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgIlFURVNUX1FFTVVfU1RP UkFHRV9EQUVNT05fQklOQVJZIHJlcXVpcmVkXG4iKTsKKyAgICAgICAgZXhpdCgwKTsKKyAgICB9 CisKKyAgICByZXR1cm4gcWVtdV9zdG9yYWdlX2RhZW1vbl9iaW47Cit9CisKKy8qIGdfdGVzdF9x dWV1ZV9kZXN0cm95KCkgY2xlYW51cCBmdW5jdGlvbiBmb3IgZmlsZXMgKi8KK3N0YXRpYyB2b2lk IGRlc3Ryb3lfZmlsZSh2b2lkICpwYXRoKQoreworICAgIHVubGluayhwYXRoKTsKKyAgICBnX2Zy ZWUocGF0aCk7CisgICAgcW9zX2ludmFsaWRhdGVfY29tbWFuZF9saW5lKCk7Cit9CisKK3N0YXRp YyBjaGFyICpkcml2ZV9jcmVhdGUodm9pZCkKK3sKKyAgICBpbnQgZmQsIHJldDsKKyAgICAvKiog dmhvc3QtdXNlci1ibGsgd29uJ3QgcmVjb2duaXplIGRyaXZlIGxvY2F0ZWQgaW4gL3RtcCAqLwor ICAgIGNoYXIgKnRfcGF0aCA9IGdfc3RyZHVwKCJxdGVzdC5YWFhYWFgiKTsKKworICAgIC8qKiBD cmVhdGUgYSB0ZW1wb3JhcnkgcmF3IGltYWdlICovCisgICAgZmQgPSBta3N0ZW1wKHRfcGF0aCk7 CisgICAgZ19hc3NlcnRfY21waW50KGZkLCA+PSwgMCk7CisgICAgcmV0ID0gZnRydW5jYXRlKGZk LCBURVNUX0lNQUdFX1NJWkUpOworICAgIGdfYXNzZXJ0X2NtcGludChyZXQsID09LCAwKTsKKyAg ICBjbG9zZShmZCk7CisKKyAgICBnX3Rlc3RfcXVldWVfZGVzdHJveShkZXN0cm95X2ZpbGUsIHRf cGF0aCk7CisgICAgcmV0dXJuIHRfcGF0aDsKK30KKworc3RhdGljIGNoYXIgKmNyZWF0ZV9saXN0 ZW5fc29ja2V0KGludCAqZmQpCit7CisgICAgaW50IHRtcF9mZDsKKyAgICBjaGFyICpwYXRoOwor CisgICAgLyogTm8gcmFjZSBiZWNhdXNlIG91ciBwaWQgbWFrZXMgdGhlIHBhdGggdW5pcXVlICov CisgICAgcGF0aCA9IGdfc3RyZHVwX3ByaW50ZigiL3RtcC9xdGVzdC0lZC1zb2NrLlhYWFhYWCIs IGdldHBpZCgpKTsKKyAgICB0bXBfZmQgPSBta3N0ZW1wKHBhdGgpOworICAgIGdfYXNzZXJ0X2Nt cGludCh0bXBfZmQsID49LCAwKTsKKyAgICBjbG9zZSh0bXBfZmQpOworICAgIHVubGluayhwYXRo KTsKKworICAgICpmZCA9IHF0ZXN0X3NvY2tldF9zZXJ2ZXIocGF0aCk7CisgICAgZ190ZXN0X3F1 ZXVlX2Rlc3Ryb3koZGVzdHJveV9maWxlLCBwYXRoKTsKKyAgICByZXR1cm4gcGF0aDsKK30KKwor LyoKKyAqIGdfdGVzdF9xdWV1ZV9kZXN0cm95KCkgYW5kIHF0ZXN0X2FkZF9hYnJ0X2hhbmRsZXIo KSBjbGVhbnVwIGZ1bmN0aW9uIGZvcgorICogcWVtdS1zdG9yYWdlLWRhZW1vbi4KKyAqLworc3Rh dGljIHZvaWQgcXVpdF9zdG9yYWdlX2RhZW1vbih2b2lkICpkYXRhKQoreworICAgIFFlbXVTdG9y YWdlRGFlbW9uU3RhdGUgKnFzZCA9IGRhdGE7CisgICAgaW50IHdzdGF0dXM7CisgICAgcGlkX3Qg cGlkOworCisgICAgLyoKKyAgICAgKiBJZiB3ZSB3ZXJlIGludm9rZWQgYXMgYSBnX3Rlc3RfcXVl dWVfZGVzdHJveSgpIGNsZWFudXAgZnVuY3Rpb24gd2UgbmVlZAorICAgICAqIHRvIHJlbW92ZSB0 aGUgYWJydCBoYW5kbGVyIHRvIGF2b2lkIGJlaW5nIGNhbGxlZCBhZ2FpbiBpZiB0aGUgY29kZSBi ZWxvdworICAgICAqIGFib3J0cy4gQWxzbywgd2UgbXVzdCBub3QgbGVhdmUgdGhlIGFicnQgaGFu ZGxlciBpbnN0YWxsZWQgYWZ0ZXIKKyAgICAgKiBjbGVhbnVwLgorICAgICAqLworICAgIHF0ZXN0 X3JlbW92ZV9hYnJ0X2hhbmRsZXIoZGF0YSk7CisKKyAgICAvKiBCZWZvcmUgcXVpdHRpbmcgc3Rv cmFnZS1kYWVtb24sIHF1aXQgcWVtdSB0byBhdm9pZCBkdWJpb3VzIG1lc3NhZ2VzICovCisgICAg cXRlc3Rfa2lsbF9xZW11KGdsb2JhbF9xdGVzdCk7CisKKyAgICBraWxsKHFzZC0+cGlkLCBTSUdU RVJNKTsKKyAgICBwaWQgPSB3YWl0cGlkKHFzZC0+cGlkLCAmd3N0YXR1cywgMCk7CisgICAgZ19h c3NlcnRfY21waW50KHBpZCwgPT0sIHFzZC0+cGlkKTsKKyAgICBpZiAoIVdJRkVYSVRFRCh3c3Rh dHVzKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBleHBlY3RlZCBxZW11LXN0b3Jh Z2UtZGFlbW9uIHRvIGV4aXRcbiIsCisgICAgICAgICAgICAgICAgX19mdW5jX18pOworICAgICAg ICBhYm9ydCgpOworICAgIH0KKyAgICBpZiAoV0VYSVRTVEFUVVMod3N0YXR1cykgIT0gMCkgewor ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBleHBlY3RlZCBxZW11LXN0b3JhZ2UtZGFlbW9u IHRvIGV4aXQgIgorICAgICAgICAgICAgICAgICJzdWNjZXNzZnVsbHksIGdvdCAlZFxuIiwKKyAg ICAgICAgICAgICAgICBfX2Z1bmNfXywgV0VYSVRTVEFUVVMod3N0YXR1cykpOworICAgICAgICBh Ym9ydCgpOworICAgIH0KKworICAgIGdfZnJlZShkYXRhKTsKK30KKworc3RhdGljIHZvaWQgc3Rh cnRfdmhvc3RfdXNlcl9ibGsoR1N0cmluZyAqY21kX2xpbmUsIGludCB2dXNfaW5zdGFuY2VzKQor eworICAgIGNvbnN0IGNoYXIgKnZob3N0X3VzZXJfYmxrX2JpbiA9IHF0ZXN0X3FlbXVfc3RvcmFn ZV9kYWVtb25fYmluYXJ5KCk7CisgICAgaW50IGk7CisgICAgZ2NoYXIgKmltZ19wYXRoOworICAg IEdTdHJpbmcgKnN0b3JhZ2VfZGFlbW9uX2NvbW1hbmQgPSBnX3N0cmluZ19uZXcoTlVMTCk7Cisg ICAgUWVtdVN0b3JhZ2VEYWVtb25TdGF0ZSAqcXNkOworCisgICAgZ19zdHJpbmdfYXBwZW5kX3By aW50ZihzdG9yYWdlX2RhZW1vbl9jb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ImV4ZWMgJXMgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZob3N0X3VzZXJfYmxrX2Jp bik7CisKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGNtZF9saW5lLAorICAgICAgICAgICAg IiAtb2JqZWN0IG1lbW9yeS1iYWNrZW5kLW1lbWZkLGlkPW1lbSxzaXplPTI1Nk0sc2hhcmU9b24g IgorICAgICAgICAgICAgIiAtTSBtZW1vcnktYmFja2VuZD1tZW0gLW0gMjU2TSAiKTsKKworICAg IGZvciAoaSA9IDA7IGkgPCB2dXNfaW5zdGFuY2VzOyBpKyspIHsKKyAgICAgICAgaW50IGZkOwor ICAgICAgICBjaGFyICpzb2NrX3BhdGggPSBjcmVhdGVfbGlzdGVuX3NvY2tldCgmZmQpOworCisg ICAgICAgIC8qIGNyZWF0ZSBpbWFnZSBmaWxlICovCisgICAgICAgIGltZ19wYXRoID0gZHJpdmVf Y3JlYXRlKCk7CisgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYoc3RvcmFnZV9kYWVtb25f Y29tbWFuZCwKKyAgICAgICAgICAgICItLWJsb2NrZGV2IGRyaXZlcj1maWxlLG5vZGUtbmFtZT1k aXNrJWQsZmlsZW5hbWU9JXMgIgorICAgICAgICAgICAgIi0tZXhwb3J0IHR5cGU9dmhvc3QtdXNl ci1ibGssaWQ9ZGlzayVkLGFkZHIudHlwZT11bml4LGFkZHIucGF0aD0lcywiCisgICAgICAgICAg ICAibm9kZS1uYW1lPWRpc2slaSx3cml0YWJsZT1vbiAiLAorICAgICAgICAgICAgaSwgaW1nX3Bh dGgsIGksIHNvY2tfcGF0aCwgaSk7CisKKyAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50Zihj bWRfbGluZSwgIi1jaGFyZGV2IHNvY2tldCxpZD1jaGFyJWQscGF0aD0lcyAiLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGkgKyAxLCBzb2NrX3BhdGgpOworICAgIH0KKworICAgIGdf dGVzdF9tZXNzYWdlKCJzdGFydGluZyB2aG9zdC11c2VyIGJhY2tlbmQ6ICVzIiwKKyAgICAgICAg ICAgICAgICAgICBzdG9yYWdlX2RhZW1vbl9jb21tYW5kLT5zdHIpOworICAgIHBpZF90IHBpZCA9 IGZvcmsoKTsKKyAgICBpZiAocGlkID09IDApIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogQ2xv c2Ugc3RhbmRhcmQgZmlsZSBkZXNjcmlwdG9ycyBzbyB0YXAtZHJpdmVyLnBsIHBpcGUgZGV0ZWN0 cyB3aGVuCisgICAgICAgICAqIG91ciBwYXJlbnQgdGVybWluYXRlcy4KKyAgICAgICAgICovCisg ICAgICAgIGNsb3NlKDApOworICAgICAgICBjbG9zZSgxKTsKKyAgICAgICAgb3BlbigiL2Rldi9u dWxsIiwgT19SRE9OTFkpOworICAgICAgICBvcGVuKCIvZGV2L251bGwiLCBPX1dST05MWSk7CisK KyAgICAgICAgZXhlY2xwKCIvYmluL3NoIiwgInNoIiwgIi1jIiwgc3RvcmFnZV9kYWVtb25fY29t bWFuZC0+c3RyLCBOVUxMKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisgICAgZ19zdHJpbmdf ZnJlZShzdG9yYWdlX2RhZW1vbl9jb21tYW5kLCB0cnVlKTsKKworICAgIHFzZCA9IGdfbmV3KFFl bXVTdG9yYWdlRGFlbW9uU3RhdGUsIDEpOworICAgIHFzZC0+cGlkID0gcGlkOworCisgICAgLyog TWFrZSBzdXJlIHFlbXUtc3RvcmFnZS1kYWVtb24gaXMgc3RvcHBlZCAqLworICAgIHF0ZXN0X2Fk ZF9hYnJ0X2hhbmRsZXIocXVpdF9zdG9yYWdlX2RhZW1vbiwgcXNkKTsKKyAgICBnX3Rlc3RfcXVl dWVfZGVzdHJveShxdWl0X3N0b3JhZ2VfZGFlbW9uLCBxc2QpOworfQorCitzdGF0aWMgdm9pZCAq dmhvc3RfdXNlcl9ibGtfdGVzdF9zZXR1cChHU3RyaW5nICpjbWRfbGluZSwgdm9pZCAqYXJnKQor eworICAgIHN0YXJ0X3Zob3N0X3VzZXJfYmxrKGNtZF9saW5lLCAxKTsKKyAgICByZXR1cm4gYXJn OworfQorCisvKgorICogU2V0dXAgZm9yIGhvdHBsdWcuCisgKgorICogU2luY2Ugdmhvc3QtdXNl ciBzZXJ2ZXIgb25seSBzZXJ2ZXMgb25lIHZob3N0LXVzZXIgY2xpZW50IG9uZSB0aW1lLAorICog YW5vdGhlciBleHByb3QKKyAqCisgKi8KK3N0YXRpYyB2b2lkICp2aG9zdF91c2VyX2Jsa19ob3Rw bHVnX3Rlc3Rfc2V0dXAoR1N0cmluZyAqY21kX2xpbmUsIHZvaWQgKmFyZykKK3sKKyAgICAvKiAi LWNoYXJkZXYgc29ja2V0LGlkPWNoYXIyIiBpcyB1c2VkIGZvciBwY2lfaG90cGx1ZyovCisgICAg c3RhcnRfdmhvc3RfdXNlcl9ibGsoY21kX2xpbmUsIDIpOworICAgIHJldHVybiBhcmc7Cit9CisK K3N0YXRpYyB2b2lkIHJlZ2lzdGVyX3Zob3N0X3VzZXJfYmxrX3Rlc3Qodm9pZCkKK3sKKyAgICBR T1NHcmFwaFRlc3RPcHRpb25zIG9wdHMgPSB7CisgICAgICAgIC5iZWZvcmUgPSB2aG9zdF91c2Vy X2Jsa190ZXN0X3NldHVwLAorICAgIH07CisKKyAgICAvKgorICAgICAqIHRlc3RzIGZvciB2aG9z dC11c2VyLWJsayBhbmQgdmhvc3QtdXNlci1ibGstcGNpCisgICAgICogVGhlIHRlc3RzIGFyZSBi b3Jyb3dlZCBmcm9tIHRlc3RzL3ZpcnRpby1ibGstdGVzdC5jLiBCdXQgc29tZSB0ZXN0cworICAg ICAqIHJlZ2FyZGluZyBibG9ja19yZXNpemUgZG9uJ3Qgd29yayBmb3Igdmhvc3QtdXNlci1ibGsu CisgICAgICogdmhvc3QtdXNlci1ibGsgZGV2aWNlIGRvZXNuJ3QgaGF2ZSAtZHJpdmUsIHNvIHRl c3RzIGNvbnRhaW5pbmcKKyAgICAgKiBibG9ja19yZXNpemUgYXJlIGFsc28gYWJhbmRvbmVkLAor ICAgICAqICAtIGNvbmZpZworICAgICAqICAtIHJlc2l6ZQorICAgICAqLworICAgIHFvc19hZGRf dGVzdCgiYmFzaWMiLCAidmhvc3QtdXNlci1ibGsiLCBiYXNpYywgJm9wdHMpOworICAgIHFvc19h ZGRfdGVzdCgiaW5kaXJlY3QiLCAidmhvc3QtdXNlci1ibGsiLCBpbmRpcmVjdCwgJm9wdHMpOwor ICAgIHFvc19hZGRfdGVzdCgiaWR4IiwgInZob3N0LXVzZXItYmxrLXBjaSIsIGlkeCwgJm9wdHMp OworICAgIHFvc19hZGRfdGVzdCgibnh2aXJ0cSIsICJ2aG9zdC11c2VyLWJsay1wY2kiLAorICAg ICAgICAgICAgICAgICB0ZXN0X25vbmV4aXN0ZW50X3ZpcnRxdWV1ZSwgJm9wdHMpOworCisgICAg b3B0cy5iZWZvcmUgPSB2aG9zdF91c2VyX2Jsa19ob3RwbHVnX3Rlc3Rfc2V0dXA7CisgICAgcW9z X2FkZF90ZXN0KCJob3RwbHVnIiwgInZob3N0LXVzZXItYmxrLXBjaSIsIHBjaV9ob3RwbHVnLCAm b3B0cyk7Cit9CisKK2xpYnFvc19pbml0KHJlZ2lzdGVyX3Zob3N0X3VzZXJfYmxrX3Rlc3QpOwpk aWZmIC0tZ2l0IGEvdGVzdHMvcXRlc3QvbGlicW9zL21lc29uLmJ1aWxkIGIvdGVzdHMvcXRlc3Qv bGlicW9zL21lc29uLmJ1aWxkCmluZGV4IDFjZGRmNWJkYWEuLjFmNWM4ZjEwNTMgMTAwNjQ0Ci0t LSBhL3Rlc3RzL3F0ZXN0L2xpYnFvcy9tZXNvbi5idWlsZAorKysgYi90ZXN0cy9xdGVzdC9saWJx b3MvbWVzb24uYnVpbGQKQEAgLTMyLDYgKzMyLDcgQEAgbGlicW9zX3NyY3MgPSBmaWxlcygnLi4v bGlicXRlc3QuYycsCiAgICAgICAgICd2aXJ0aW8tOXAuYycsCiAgICAgICAgICd2aXJ0aW8tYmFs bG9vbi5jJywKICAgICAgICAgJ3ZpcnRpby1ibGsuYycsCisgICAgICAgICd2aG9zdC11c2VyLWJs ay5jJywKICAgICAgICAgJ3ZpcnRpby1tbWlvLmMnLAogICAgICAgICAndmlydGlvLW5ldC5jJywK ICAgICAgICAgJ3ZpcnRpby1wY2kuYycsCmRpZmYgLS1naXQgYS90ZXN0cy9xdGVzdC9tZXNvbi5i dWlsZCBiL3Rlc3RzL3F0ZXN0L21lc29uLmJ1aWxkCmluZGV4IDk3MzE2MDZjMzEuLjE5MDM5OWQ3 YjYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3F0ZXN0L21lc29uLmJ1aWxkCisrKyBiL3Rlc3RzL3F0ZXN0 L21lc29uLmJ1aWxkCkBAIC0yMzEsNiArMjMxLDkgQEAgaWYgaGF2ZV92aXJ0ZnMKICAgcW9zX3Rl c3Rfc3MuYWRkKGZpbGVzKCd2aXJ0aW8tOXAtdGVzdC5jJykpCiBlbmRpZgogcW9zX3Rlc3Rfc3Mu YWRkKHdoZW46ICdDT05GSUdfVkhPU1RfVVNFUicsIGlmX3RydWU6IGZpbGVzKCd2aG9zdC11c2Vy LXRlc3QuYycpKQoraWYgaGF2ZV92aG9zdF91c2VyX2Jsa19zZXJ2ZXIKKyAgcW9zX3Rlc3Rfc3Mu YWRkKGZpbGVzKCd2aG9zdC11c2VyLWJsay10ZXN0LmMnKSkKK2VuZGlmCiAKIHRwbWVtdV9maWxl cyA9IFsndHBtLWVtdS5jJywgJ3RwbS11dGlsLmMnLCAndHBtLXRlc3RzLmMnXQogCkBAIC0yNjks NiArMjcyLDcgQEAgZm9yZWFjaCBkaXIgOiB0YXJnZXRfZGlycwogICBlbmRpZgogICBxdGVzdF9l bnYuc2V0KCdHX1RFU1RfREJVU19EQUVNT04nLCBtZXNvbi5zb3VyY2Vfcm9vdCgpIC8gJ3Rlc3Rz L2RidXMtdm1zdGF0ZS1kYWVtb24uc2gnKQogICBxdGVzdF9lbnYuc2V0KCdRVEVTVF9RRU1VX0JJ TkFSWScsICcuL3FlbXUtc3lzdGVtLScgKyB0YXJnZXRfYmFzZSkKKyAgcXRlc3RfZW52LnNldCgn UVRFU1RfUUVNVV9TVE9SQUdFX0RBRU1PTl9CSU5BUlknLCAnLi9zdG9yYWdlLWRhZW1vbi9xZW11 LXN0b3JhZ2UtZGFlbW9uJykKICAgCiAgIGZvcmVhY2ggdGVzdCA6IHRhcmdldF9xdGVzdHMKICAg ICAjIEV4ZWN1dGFibGVzIGFyZSBzaGFyZWQgYWNyb3NzIHRhcmdldHMsIGRlY2xhcmUgdGhlbSBv bmx5IHRoZSBmaXJzdCB0aW1lIHdlCi0tIAoyLjMwLjIKCg==