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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5611DC369D5 for ; Mon, 28 Apr 2025 17:04:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=XsQLj8kxm9KdiMkYZpKhQcZwGkvTcbrOvsgrfOzunjk=; b=w21XNt/GCH29OV y4ABv9eOWDH08qOMcslO9tGNbA9uG5ZUwc1Skxx2gG11iMpSUlLVhNjq4p/bTMipB20VDlbY8tZMz JjdW8NupLCJ2rkGt0n59k+0HsF9/Lx38i7RTevcrEU3JWh+71JV5lRdXXDZ/IqUS2Sjhqs9Rlo8lU Uv6FcMi+on4AgkR4Ry20k0gmM2MC0z1xTKP9Dk+SQ7keyxj1DQdVOpaACpogJWZ21RQBZGkESAcJD 3IVVFdvCJGDaFnaZ1jRmfEu7B1eldc5iK2fSeKLLOWEQ8e8SKL/WeY++CWwh+IbF7B0ImzRkVJr/b wghCEftOhSVAl+u0NM2w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u9Rtl-000000071dv-1qUJ; Mon, 28 Apr 2025 17:04:05 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u9Rrl-000000070sJ-07rg; Mon, 28 Apr 2025 17:02:02 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 55ED64AAB5; Mon, 28 Apr 2025 17:01:58 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E4594C4CEEE; Mon, 28 Apr 2025 17:01:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1745859720; bh=2wQ4dKPjbt6322fqCkwvI5D9WmXKkv+pG1xO3VUUEeI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FZzXEvxz5tD8v1n/+f1V+oDu1OqH4R+p5z6fc9M0BUliz9y4cLZUD9bAFio9d3MJ1 WDrrl+wgy+UFq65ebkcpTuQLq/6Z8rxW+7P9zJWFCLLFSgcDhD28dOo1WEgq8l+jIU mADpeVlYNxzw3KqvzrxRjJjoM9C8495Q8dRud2ybKpriXA03vButU5fEI2o/l7upkq mcU8AC0FCQlBpwUY+vRIO4OlaGmpjNLPBaGOeT8uItB/9GkMS0vjbTZB2KNo/wA3T2 WBHtLh3DgzvSw6oGZFSRCq5OgLYDeYkzQwmBq92qau2gSjrwuBzjj7aOCFVxson+QV HUrAg6HiMHjTA== From: Eric Biggers To: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, sparclinux@vger.kernel.org, linux-s390@vger.kernel.org, x86@kernel.org, Ard Biesheuvel , "Jason A . Donenfeld" , Linus Torvalds Subject: [PATCH v4 02/13] crypto: arm/sha256 - implement library instead of shash Date: Mon, 28 Apr 2025 10:00:27 -0700 Message-ID: <20250428170040.423825-3-ebiggers@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250428170040.423825-1-ebiggers@kernel.org> References: <20250428170040.423825-1-ebiggers@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250428_100201_140585_0465B348 X-CRM114-Status: GOOD ( 19.25 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org RnJvbTogRXJpYyBCaWdnZXJzIDxlYmlnZ2Vyc0Bnb29nbGUuY29tPgoKSW5zdGVhZCBvZiBwcm92 aWRpbmcgY3J5cHRvX3NoYXNoIGFsZ29yaXRobXMgZm9yIHRoZSBhcmNoLW9wdGltaXplZApTSEEt MjU2IGNvZGUsIGluc3RlYWQgaW1wbGVtZW50IHRoZSBTSEEtMjU2IGxpYnJhcnkuICBUaGlzIGlz IG11Y2gKc2ltcGxlciwgaXQgbWFrZXMgdGhlIFNIQS0yNTYgbGlicmFyeSBmdW5jdGlvbnMgYmUg YXJjaC1vcHRpbWl6ZWQsIGFuZAppdCBmaXhlcyB0aGUgbG9uZ3N0YW5kaW5nIGlzc3VlIHdoZXJl IHRoZSBhcmNoLW9wdGltaXplZCBTSEEtMjU2IHdhcwpkaXNhYmxlZCBieSBkZWZhdWx0LiAgU0hB LTI1NiBzdGlsbCByZW1haW5zIGF2YWlsYWJsZSB0aHJvdWdoCmNyeXB0b19zaGFzaCwgYnV0IGlu ZGl2aWR1YWwgYXJjaGl0ZWN0dXJlcyBubyBsb25nZXIgbmVlZCB0byBoYW5kbGUgaXQuCgpUbyBt ZXJnZSB0aGUgc2NhbGFyLCBORU9OLCBhbmQgQ0UgY29kZSBhbGwgaW50byBvbmUgbW9kdWxlIGNs ZWFubHksIGFkZAohQ1BVX1Y3TSBhcyBhIGRpcmVjdCBkZXBlbmRlbmN5IG9mIHRoZSBDRSBjb2Rl LiAgUHJldmlvdXNseSwgIUNQVV9WN00Kd2FzIG9ubHkgYSBkaXJlY3QgZGVwZW5kZW5jeSBvZiB0 aGUgc2NhbGFyIGFuZCBORU9OIGNvZGUuICBUaGUgcmVzdWx0IGlzCnN0aWxsIHRoZSBzYW1lIGJl Y2F1c2UgQ1BVX1Y3TSBpbXBsaWVzICFLRVJORUxfTU9ERV9ORU9OLCBzbyAhQ1BVX1Y3TQp3YXMg YWxyZWFkeSBhbiBpbmRpcmVjdCBkZXBlbmRlbmN5IG9mIHRoZSBDRSBjb2RlLgoKVG8gbWF0Y2gg c2hhMjU2X2Jsb2Nrc19hcmNoKCksIGNoYW5nZSB0aGUgdHlwZSBvZiB0aGUgbmJsb2NrcyBwYXJh bWV0ZXIKb2YgdGhlIGFzc2VtYmx5IGZ1bmN0aW9ucyBmcm9tIGludCB0byBzaXplX3QuICBUaGUg YXNzZW1ibHkgZnVuY3Rpb25zCmFjdHVhbGx5IGFscmVhZHkgdHJlYXRlZCBpdCBhcyBzaXplX3Qu CgpXaGlsZSByZW5hbWluZyB0aGUgYXNzZW1ibHkgZmlsZXMsIGFsc28gZml4IHRoZSBuYW1pbmcg cXVpcmsgd2hlcmUKInNoYTIiIG1lYW50IHNoYTI1Ni4gIChTSEEtNTEyIGlzIGFsc28gcGFydCBv ZiBTSEEtMi4pCgpSZXZpZXdlZC1ieTogQXJkIEJpZXNoZXV2ZWwgPGFyZGJAa2VybmVsLm9yZz4K U2lnbmVkLW9mZi1ieTogRXJpYyBCaWdnZXJzIDxlYmlnZ2Vyc0Bnb29nbGUuY29tPgotLS0KIGFy Y2gvYXJtL2NvbmZpZ3MvZXh5bm9zX2RlZmNvbmZpZyAgICAgICAgICAgICB8ICAgMSAtCiBhcmNo L2FybS9jb25maWdzL21pbGJlYXV0X20xMHZfZGVmY29uZmlnICAgICAgfCAgIDEgLQogYXJjaC9h cm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWcgICAgICAgICAgIHwgICAxIC0KIGFyY2gvYXJt L2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZyAgICAgICAgICB8ICAgMSAtCiBhcmNoL2FybS9j b25maWdzL3B4YV9kZWZjb25maWcgICAgICAgICAgICAgICAgfCAgIDEgLQogYXJjaC9hcm0vY3J5 cHRvL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgIHwgIDIxIC0tLS0KIGFyY2gvYXJtL2Ny eXB0by9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogYXJjaC9hcm0vY3J5 cHRvL3NoYTItY2UtZ2x1ZS5jICAgICAgICAgICAgICAgIHwgIDg3IC0tLS0tLS0tLS0tLS0tCiBh cmNoL2FybS9jcnlwdG8vc2hhMjU2X2dsdWUuYyAgICAgICAgICAgICAgICAgfCAxMDcgLS0tLS0t LS0tLS0tLS0tLS0tCiBhcmNoL2FybS9jcnlwdG8vc2hhMjU2X2dsdWUuaCAgICAgICAgICAgICAg ICAgfCAgIDkgLS0KIGFyY2gvYXJtL2NyeXB0by9zaGEyNTZfbmVvbl9nbHVlLmMgICAgICAgICAg ICB8ICA3NSAtLS0tLS0tLS0tLS0KIGFyY2gvYXJtL2xpYi9jcnlwdG8vLmdpdGlnbm9yZSAgICAg ICAgICAgICAgICB8ICAgMSArCiBhcmNoL2FybS9saWIvY3J5cHRvL0tjb25maWcgICAgICAgICAg ICAgICAgICAgfCAgIDYgKwogYXJjaC9hcm0vbGliL2NyeXB0by9NYWtlZmlsZSAgICAgICAgICAg ICAgICAgIHwgICA4ICstCiBhcmNoL2FybS97ID0+IGxpYn0vY3J5cHRvL3NoYTI1Ni1hcm12NC5w bCAgICAgfCAgIDAKIC4uLi9zaGEyLWNlLWNvcmUuUyA9PiBsaWIvY3J5cHRvL3NoYTI1Ni1jZS5T fSB8ICAxMCArLQogYXJjaC9hcm0vbGliL2NyeXB0by9zaGEyNTYuYyAgICAgICAgICAgICAgICAg IHwgIDY0ICsrKysrKysrKysrCiAxNyBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCAz MTcgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vY3J5cHRvL3NoYTIt Y2UtZ2x1ZS5jCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vY3J5cHRvL3NoYTI1Nl9nbHVl LmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9jcnlwdG8vc2hhMjU2X2dsdWUuaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL2NyeXB0by9zaGEyNTZfbmVvbl9nbHVlLmMKIHJlbmFt ZSBhcmNoL2FybS97ID0+IGxpYn0vY3J5cHRvL3NoYTI1Ni1hcm12NC5wbCAoMTAwJSkKIHJlbmFt ZSBhcmNoL2FybS97Y3J5cHRvL3NoYTItY2UtY29yZS5TID0+IGxpYi9jcnlwdG8vc2hhMjU2LWNl LlN9ICg5MSUpCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbGliL2NyeXB0by9zaGEyNTYu YwoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NvbmZpZ3MvZXh5bm9zX2RlZmNvbmZpZyBiL2FyY2gv YXJtL2NvbmZpZ3MvZXh5bm9zX2RlZmNvbmZpZwppbmRleCA3YWQ0OGZkZGExZGFjLi4yNDRkZDVk ZWM5OGJkIDEwMDY0NAotLS0gYS9hcmNoL2FybS9jb25maWdzL2V4eW5vc19kZWZjb25maWcKKysr IGIvYXJjaC9hcm0vY29uZmlncy9leHlub3NfZGVmY29uZmlnCkBAIC0zNjIsMTEgKzM2MiwxMCBA QCBDT05GSUdfQ1JZUFRPX0xaND1tCiBDT05GSUdfQ1JZUFRPX1VTRVJfQVBJX0hBU0g9bQogQ09O RklHX0NSWVBUT19VU0VSX0FQSV9TS0NJUEhFUj1tCiBDT05GSUdfQ1JZUFRPX1VTRVJfQVBJX1JO Rz1tCiBDT05GSUdfQ1JZUFRPX1VTRVJfQVBJX0FFQUQ9bQogQ09ORklHX0NSWVBUT19TSEExX0FS TV9ORU9OPW0KLUNPTkZJR19DUllQVE9fU0hBMjU2X0FSTT1tCiBDT05GSUdfQ1JZUFRPX1NIQTUx Ml9BUk09bQogQ09ORklHX0NSWVBUT19BRVNfQVJNX0JTPW0KIENPTkZJR19DUllQVE9fQ0hBQ0hB MjBfTkVPTj1tCiBDT05GSUdfQ1JZUFRPX0RFVl9FWFlOT1NfUk5HPXkKIENPTkZJR19DUllQVE9f REVWX1M1UD15CmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb25maWdzL21pbGJlYXV0X20xMHZfZGVm Y29uZmlnIGIvYXJjaC9hcm0vY29uZmlncy9taWxiZWF1dF9tMTB2X2RlZmNvbmZpZwppbmRleCBh Y2QxNjIwNGY4ZDdmLi5mY2UzM2MxZWI2NWJmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9jb25maWdz L21pbGJlYXV0X20xMHZfZGVmY29uZmlnCisrKyBiL2FyY2gvYXJtL2NvbmZpZ3MvbWlsYmVhdXRf bTEwdl9kZWZjb25maWcKQEAgLTk5LDExICs5OSwxMCBAQCBDT05GSUdfQ1JZUFRPX01BTkFHRVI9 eQogQ09ORklHX0NSWVBUT19BRVM9eQogQ09ORklHX0NSWVBUT19TRVFJVj1tCiBDT05GSUdfQ1JZ UFRPX0dIQVNIX0FSTV9DRT1tCiBDT05GSUdfQ1JZUFRPX1NIQTFfQVJNX05FT049bQogQ09ORklH X0NSWVBUT19TSEExX0FSTV9DRT1tCi1DT05GSUdfQ1JZUFRPX1NIQTJfQVJNX0NFPW0KIENPTkZJ R19DUllQVE9fU0hBNTEyX0FSTT1tCiBDT05GSUdfQ1JZUFRPX0FFU19BUk09bQogQ09ORklHX0NS WVBUT19BRVNfQVJNX0JTPW0KIENPTkZJR19DUllQVE9fQUVTX0FSTV9DRT1tCiBDT05GSUdfQ1JZ UFRPX0NIQUNIQTIwX05FT049bQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY29uZmlncy9tdWx0aV92 N19kZWZjb25maWcgYi9hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZwppbmRleCBh ZDAzN2MxNzVmZGIwLi45NjE3OGFjZWRhZDBiIDEwMDY0NAotLS0gYS9hcmNoL2FybS9jb25maWdz L211bHRpX3Y3X2RlZmNvbmZpZworKysgYi9hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNv bmZpZwpAQCAtMTI5OSwxMSArMTI5OSwxMCBAQCBDT05GSUdfQ1JZUFRPX1VTRVJfQVBJX1NLQ0lQ SEVSPW0KIENPTkZJR19DUllQVE9fVVNFUl9BUElfUk5HPW0KIENPTkZJR19DUllQVE9fVVNFUl9B UElfQUVBRD1tCiBDT05GSUdfQ1JZUFRPX0dIQVNIX0FSTV9DRT1tCiBDT05GSUdfQ1JZUFRPX1NI QTFfQVJNX05FT049bQogQ09ORklHX0NSWVBUT19TSEExX0FSTV9DRT1tCi1DT05GSUdfQ1JZUFRP X1NIQTJfQVJNX0NFPW0KIENPTkZJR19DUllQVE9fU0hBNTEyX0FSTT1tCiBDT05GSUdfQ1JZUFRP X0FFU19BUk09bQogQ09ORklHX0NSWVBUT19BRVNfQVJNX0JTPW0KIENPTkZJR19DUllQVE9fQUVT X0FSTV9DRT1tCiBDT05GSUdfQ1JZUFRPX0NIQUNIQTIwX05FT049bQpkaWZmIC0tZ2l0IGEvYXJj aC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnIGIvYXJjaC9hcm0vY29uZmlncy9vbWFw MnBsdXNfZGVmY29uZmlnCmluZGV4IDExM2Q2ZGZlNTI0MzUuLjU3ZDllNGRiYTI5ZTMgMTAwNjQ0 Ci0tLSBhL2FyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZworKysgYi9hcmNoL2Fy bS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWcKQEAgLTY5NSwxMSArNjk1LDEwIEBAIENPTkZJ R19OTFNfQ09ERVBBR0VfNDM3PXkKIENPTkZJR19OTFNfSVNPODg1OV8xPXkKIENPTkZJR19TRUNV UklUWT15CiBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDPXkKIENPTkZJR19DUllQVE9fR0hBU0hf QVJNX0NFPW0KIENPTkZJR19DUllQVE9fU0hBMV9BUk1fTkVPTj1tCi1DT05GSUdfQ1JZUFRPX1NI QTI1Nl9BUk09bQogQ09ORklHX0NSWVBUT19TSEE1MTJfQVJNPW0KIENPTkZJR19DUllQVE9fQUVT X0FSTT1tCiBDT05GSUdfQ1JZUFRPX0FFU19BUk1fQlM9bQogQ09ORklHX0NSWVBUT19DSEFDSEEy MF9ORU9OPW0KIENPTkZJR19DUllQVE9fREVWX09NQVA9bQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0v Y29uZmlncy9weGFfZGVmY29uZmlnIGIvYXJjaC9hcm0vY29uZmlncy9weGFfZGVmY29uZmlnCmlu ZGV4IGRlMGFjOGY1MjFkNzYuLmZhNjMxNTIzNjE2ZjggMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2Nv bmZpZ3MvcHhhX2RlZmNvbmZpZworKysgYi9hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWcK QEAgLTY1OCwxMSArNjU4LDEwIEBAIENPTkZJR19DUllQVE9fV1A1MTI9bQogQ09ORklHX0NSWVBU T19BTlVCSVM9bQogQ09ORklHX0NSWVBUT19YQ0JDPW0KIENPTkZJR19DUllQVE9fREVGTEFURT15 CiBDT05GSUdfQ1JZUFRPX0xaTz15CiBDT05GSUdfQ1JZUFRPX1NIQTFfQVJNPW0KLUNPTkZJR19D UllQVE9fU0hBMjU2X0FSTT1tCiBDT05GSUdfQ1JZUFRPX1NIQTUxMl9BUk09bQogQ09ORklHX0NS WVBUT19BRVNfQVJNPW0KIENPTkZJR19DUkNfQ0NJVFQ9eQogQ09ORklHX0NSQ19UMTBESUY9bQog Q09ORklHX0ZPTlRTPXkKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NyeXB0by9LY29uZmlnIGIvYXJj aC9hcm0vY3J5cHRvL0tjb25maWcKaW5kZXggMWY4ODlkNmJhYjc3ZC4uN2VmYjlhODU5NmU0ZSAx MDA2NDQKLS0tIGEvYXJjaC9hcm0vY3J5cHRvL0tjb25maWcKKysrIGIvYXJjaC9hcm0vY3J5cHRv L0tjb25maWcKQEAgLTkxLDMxICs5MSwxMCBAQCBjb25maWcgQ1JZUFRPX1NIQTFfQVJNX0NFCiAJ aGVscAogCSAgU0hBLTEgc2VjdXJlIGhhc2ggYWxnb3JpdGhtIChGSVBTIDE4MCkKIAogCSAgQXJj aGl0ZWN0dXJlOiBhcm0gdXNpbmcgQVJNdjggQ3J5cHRvIEV4dGVuc2lvbnMKIAotY29uZmlnIENS WVBUT19TSEEyX0FSTV9DRQotCXRyaXN0YXRlICJIYXNoIGZ1bmN0aW9uczogU0hBLTIyNCBhbmQg U0hBLTI1NiAoQVJNdjggQ3J5cHRvIEV4dGVuc2lvbnMpIgotCWRlcGVuZHMgb24gS0VSTkVMX01P REVfTkVPTgotCXNlbGVjdCBDUllQVE9fU0hBMjU2X0FSTQotCXNlbGVjdCBDUllQVE9fSEFTSAot CWhlbHAKLQkgIFNIQS0yMjQgYW5kIFNIQS0yNTYgc2VjdXJlIGhhc2ggYWxnb3JpdGhtcyAoRklQ UyAxODApCi0KLQkgIEFyY2hpdGVjdHVyZTogYXJtIHVzaW5nCi0JICAtIEFSTXY4IENyeXB0byBF eHRlbnNpb25zCi0KLWNvbmZpZyBDUllQVE9fU0hBMjU2X0FSTQotCXRyaXN0YXRlICJIYXNoIGZ1 bmN0aW9uczogU0hBLTIyNCBhbmQgU0hBLTI1NiAoTkVPTikiCi0Jc2VsZWN0IENSWVBUT19IQVNI Ci0JZGVwZW5kcyBvbiAhQ1BVX1Y3TQotCWhlbHAKLQkgIFNIQS0yMjQgYW5kIFNIQS0yNTYgc2Vj dXJlIGhhc2ggYWxnb3JpdGhtcyAoRklQUyAxODApCi0KLQkgIEFyY2hpdGVjdHVyZTogYXJtIHVz aW5nCi0JICAtIE5FT04gKEFkdmFuY2VkIFNJTUQpIGV4dGVuc2lvbnMKLQogY29uZmlnIENSWVBU T19TSEE1MTJfQVJNCiAJdHJpc3RhdGUgIkhhc2ggZnVuY3Rpb25zOiBTSEEtMzg0IGFuZCBTSEEt NTEyIChORU9OKSIKIAlzZWxlY3QgQ1JZUFRPX0hBU0gKIAlkZXBlbmRzIG9uICFDUFVfVjdNCiAJ aGVscApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY3J5cHRvL01ha2VmaWxlIGIvYXJjaC9hcm0vY3J5 cHRvL01ha2VmaWxlCmluZGV4IGVjYWJlNjYwM2UwODAuLjg0NzkxMzdjNmU4MDAgMTAwNjQ0Ci0t LSBhL2FyY2gvYXJtL2NyeXB0by9NYWtlZmlsZQorKysgYi9hcmNoL2FybS9jcnlwdG8vTWFrZWZp bGUKQEAgLTUsMzIgKzUsMjcgQEAKIAogb2JqLSQoQ09ORklHX0NSWVBUT19BRVNfQVJNKSArPSBh ZXMtYXJtLm8KIG9iai0kKENPTkZJR19DUllQVE9fQUVTX0FSTV9CUykgKz0gYWVzLWFybS1icy5v CiBvYmotJChDT05GSUdfQ1JZUFRPX1NIQTFfQVJNKSArPSBzaGExLWFybS5vCiBvYmotJChDT05G SUdfQ1JZUFRPX1NIQTFfQVJNX05FT04pICs9IHNoYTEtYXJtLW5lb24ubwotb2JqLSQoQ09ORklH X0NSWVBUT19TSEEyNTZfQVJNKSArPSBzaGEyNTYtYXJtLm8KIG9iai0kKENPTkZJR19DUllQVE9f U0hBNTEyX0FSTSkgKz0gc2hhNTEyLWFybS5vCiBvYmotJChDT05GSUdfQ1JZUFRPX0JMQUtFMkJf TkVPTikgKz0gYmxha2UyYi1uZW9uLm8KIG9iai0kKENPTkZJR19DUllQVE9fTkhQT0xZMTMwNV9O RU9OKSArPSBuaHBvbHkxMzA1LW5lb24ubwogb2JqLSQoQ09ORklHX0NSWVBUT19DVVJWRTI1NTE5 X05FT04pICs9IGN1cnZlMjU1MTktbmVvbi5vCiAKIG9iai0kKENPTkZJR19DUllQVE9fQUVTX0FS TV9DRSkgKz0gYWVzLWFybS1jZS5vCiBvYmotJChDT05GSUdfQ1JZUFRPX1NIQTFfQVJNX0NFKSAr PSBzaGExLWFybS1jZS5vCi1vYmotJChDT05GSUdfQ1JZUFRPX1NIQTJfQVJNX0NFKSArPSBzaGEy LWFybS1jZS5vCiBvYmotJChDT05GSUdfQ1JZUFRPX0dIQVNIX0FSTV9DRSkgKz0gZ2hhc2gtYXJt LWNlLm8KIAogYWVzLWFybS15CTo9IGFlcy1jaXBoZXItY29yZS5vIGFlcy1jaXBoZXItZ2x1ZS5v CiBhZXMtYXJtLWJzLXkJOj0gYWVzLW5lb25icy1jb3JlLm8gYWVzLW5lb25icy1nbHVlLm8KIHNo YTEtYXJtLXkJOj0gc2hhMS1hcm12NC1sYXJnZS5vIHNoYTFfZ2x1ZS5vCiBzaGExLWFybS1uZW9u LXkJOj0gc2hhMS1hcm12Ny1uZW9uLm8gc2hhMV9uZW9uX2dsdWUubwotc2hhMjU2LWFybS1uZW9u LSQoQ09ORklHX0tFUk5FTF9NT0RFX05FT04pIDo9IHNoYTI1Nl9uZW9uX2dsdWUubwotc2hhMjU2 LWFybS15CTo9IHNoYTI1Ni1jb3JlLm8gc2hhMjU2X2dsdWUubyAkKHNoYTI1Ni1hcm0tbmVvbi15 KQogc2hhNTEyLWFybS1uZW9uLSQoQ09ORklHX0tFUk5FTF9NT0RFX05FT04pIDo9IHNoYTUxMi1u ZW9uLWdsdWUubwogc2hhNTEyLWFybS15CTo9IHNoYTUxMi1jb3JlLm8gc2hhNTEyLWdsdWUubyAk KHNoYTUxMi1hcm0tbmVvbi15KQogYmxha2UyYi1uZW9uLXkgIDo9IGJsYWtlMmItbmVvbi1jb3Jl Lm8gYmxha2UyYi1uZW9uLWdsdWUubwogc2hhMS1hcm0tY2UteQk6PSBzaGExLWNlLWNvcmUubyBz aGExLWNlLWdsdWUubwotc2hhMi1hcm0tY2UteQk6PSBzaGEyLWNlLWNvcmUubyBzaGEyLWNlLWds dWUubwogYWVzLWFybS1jZS15CTo9IGFlcy1jZS1jb3JlLm8gYWVzLWNlLWdsdWUubwogZ2hhc2gt YXJtLWNlLXkJOj0gZ2hhc2gtY2UtY29yZS5vIGdoYXNoLWNlLWdsdWUubwogbmhwb2x5MTMwNS1u ZW9uLXkgOj0gbmgtbmVvbi1jb3JlLm8gbmhwb2x5MTMwNS1uZW9uLWdsdWUubwogY3VydmUyNTUx OS1uZW9uLXkgOj0gY3VydmUyNTUxOS1jb3JlLm8gY3VydmUyNTUxOS1nbHVlLm8KIApAQCAtMzgs MTEgKzMzLDEwIEBAIHF1aWV0X2NtZF9wZXJsID0gUEVSTCAgICAkQAogICAgICAgY21kX3Blcmwg PSAkKFBFUkwpICQoPCkgPiAkKEApCiAKICQob2JqKS8lLWNvcmUuUzogJChzcmMpLyUtYXJtdjQu cGwKIAkkKGNhbGwgY21kLHBlcmwpCiAKLWNsZWFuLWZpbGVzICs9IHNoYTI1Ni1jb3JlLlMgc2hh NTEyLWNvcmUuUworY2xlYW4tZmlsZXMgKz0gc2hhNTEyLWNvcmUuUwogCiBhZmxhZ3MtdGh1bWIy LSQoQ09ORklHX1RIVU1CMl9LRVJORUwpICA6PSAtVV9fdGh1bWIyX18gLURfX3RodW1iMl9fPTEK IAotQUZMQUdTX3NoYTI1Ni1jb3JlLm8gKz0gJChhZmxhZ3MtdGh1bWIyLXkpCiBBRkxBR1Nfc2hh NTEyLWNvcmUubyArPSAkKGFmbGFncy10aHVtYjIteSkKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Ny eXB0by9zaGEyLWNlLWdsdWUuYyBiL2FyY2gvYXJtL2NyeXB0by9zaGEyLWNlLWdsdWUuYwpkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU5ZDE2Zjc5Njc4Ny4uMDAwMDAwMDAwMDAwMAot LS0gYS9hcmNoL2FybS9jcnlwdG8vc2hhMi1jZS1nbHVlLmMKKysrIC9kZXYvbnVsbApAQCAtMSw4 NyArMCwwIEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Ci0vKgot ICogc2hhMi1jZS1nbHVlLmMgLSBTSEEtMjI0L1NIQS0yNTYgdXNpbmcgQVJNdjggQ3J5cHRvIEV4 dGVuc2lvbnMKLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgTGluYXJvIEx0ZCA8YXJkLmJpZXNo ZXV2ZWxAbGluYXJvLm9yZz4KLSAqLwotCi0jaW5jbHVkZSA8YXNtL25lb24uaD4KLSNpbmNsdWRl IDxjcnlwdG8vaW50ZXJuYWwvaGFzaC5oPgotI2luY2x1ZGUgPGNyeXB0by9zaGEyLmg+Ci0jaW5j bHVkZSA8Y3J5cHRvL3NoYTI1Nl9iYXNlLmg+Ci0jaW5jbHVkZSA8bGludXgvY3B1ZmVhdHVyZS5o PgotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgot Ci1NT0RVTEVfREVTQ1JJUFRJT04oIlNIQS0yMjQvU0hBLTI1NiBzZWN1cmUgaGFzaCB1c2luZyBB Uk12OCBDcnlwdG8gRXh0ZW5zaW9ucyIpOwotTU9EVUxFX0FVVEhPUigiQXJkIEJpZXNoZXV2ZWwg PGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+Iik7Ci1NT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7 Ci0KLWFzbWxpbmthZ2Ugdm9pZCBzaGEyX2NlX3RyYW5zZm9ybShzdHJ1Y3QgY3J5cHRvX3NoYTI1 Nl9zdGF0ZSAqc3N0LAotCQkJCSAgdTggY29uc3QgKnNyYywgaW50IGJsb2Nrcyk7Ci0KLXN0YXRp YyBpbnQgc2hhMl9jZV91cGRhdGUoc3RydWN0IHNoYXNoX2Rlc2MgKmRlc2MsIGNvbnN0IHU4ICpk YXRhLAotCQkJICB1bnNpZ25lZCBpbnQgbGVuKQotewotCWludCByZW1haW47Ci0KLQlrZXJuZWxf bmVvbl9iZWdpbigpOwotCXJlbWFpbiA9IHNoYTI1Nl9iYXNlX2RvX3VwZGF0ZV9ibG9ja3MoZGVz YywgZGF0YSwgbGVuLAotCQkJCQkgICAgICBzaGEyX2NlX3RyYW5zZm9ybSk7Ci0Ja2VybmVsX25l b25fZW5kKCk7Ci0JcmV0dXJuIHJlbWFpbjsKLX0KLQotc3RhdGljIGludCBzaGEyX2NlX2ZpbnVw KHN0cnVjdCBzaGFzaF9kZXNjICpkZXNjLCBjb25zdCB1OCAqZGF0YSwKLQkJCSB1bnNpZ25lZCBp bnQgbGVuLCB1OCAqb3V0KQotewotCWtlcm5lbF9uZW9uX2JlZ2luKCk7Ci0Jc2hhMjU2X2Jhc2Vf ZG9fZmludXAoZGVzYywgZGF0YSwgbGVuLCBzaGEyX2NlX3RyYW5zZm9ybSk7Ci0Ja2VybmVsX25l b25fZW5kKCk7Ci0JcmV0dXJuIHNoYTI1Nl9iYXNlX2ZpbmlzaChkZXNjLCBvdXQpOwotfQotCi1z dGF0aWMgc3RydWN0IHNoYXNoX2FsZyBhbGdzW10gPSB7IHsKLQkuaW5pdAkJCT0gc2hhMjI0X2Jh c2VfaW5pdCwKLQkudXBkYXRlCQkJPSBzaGEyX2NlX3VwZGF0ZSwKLQkuZmludXAJCQk9IHNoYTJf Y2VfZmludXAsCi0JLmRlc2NzaXplCQk9IHNpemVvZihzdHJ1Y3QgY3J5cHRvX3NoYTI1Nl9zdGF0 ZSksCi0JLmRpZ2VzdHNpemUJCT0gU0hBMjI0X0RJR0VTVF9TSVpFLAotCS5iYXNlCQkJPSB7Ci0J CS5jcmFfbmFtZQkJPSAic2hhMjI0IiwKLQkJLmNyYV9kcml2ZXJfbmFtZQk9ICJzaGEyMjQtY2Ui LAotCQkuY3JhX3ByaW9yaXR5CQk9IDMwMCwKLQkJLmNyYV9mbGFncwkJPSBDUllQVE9fQUhBU0hf QUxHX0JMT0NLX09OTFkgfAotCQkJCQkgIENSWVBUT19BSEFTSF9BTEdfRklOVVBfTUFYLAotCQku Y3JhX2Jsb2Nrc2l6ZQkJPSBTSEEyNTZfQkxPQ0tfU0laRSwKLQkJLmNyYV9tb2R1bGUJCT0gVEhJ U19NT0RVTEUsCi0JfQotfSwgewotCS5pbml0CQkJPSBzaGEyNTZfYmFzZV9pbml0LAotCS51cGRh dGUJCQk9IHNoYTJfY2VfdXBkYXRlLAotCS5maW51cAkJCT0gc2hhMl9jZV9maW51cCwKLQkuZGVz Y3NpemUJCT0gc2l6ZW9mKHN0cnVjdCBjcnlwdG9fc2hhMjU2X3N0YXRlKSwKLQkuZGlnZXN0c2l6 ZQkJPSBTSEEyNTZfRElHRVNUX1NJWkUsCi0JLmJhc2UJCQk9IHsKLQkJLmNyYV9uYW1lCQk9ICJz aGEyNTYiLAotCQkuY3JhX2RyaXZlcl9uYW1lCT0gInNoYTI1Ni1jZSIsCi0JCS5jcmFfcHJpb3Jp dHkJCT0gMzAwLAotCQkuY3JhX2ZsYWdzCQk9IENSWVBUT19BSEFTSF9BTEdfQkxPQ0tfT05MWSB8 Ci0JCQkJCSAgQ1JZUFRPX0FIQVNIX0FMR19GSU5VUF9NQVgsCi0JCS5jcmFfYmxvY2tzaXplCQk9 IFNIQTI1Nl9CTE9DS19TSVpFLAotCQkuY3JhX21vZHVsZQkJPSBUSElTX01PRFVMRSwKLQl9Ci19 IH07Ci0KLXN0YXRpYyBpbnQgX19pbml0IHNoYTJfY2VfbW9kX2luaXQodm9pZCkKLXsKLQlyZXR1 cm4gY3J5cHRvX3JlZ2lzdGVyX3NoYXNoZXMoYWxncywgQVJSQVlfU0laRShhbGdzKSk7Ci19Ci0K LXN0YXRpYyB2b2lkIF9fZXhpdCBzaGEyX2NlX21vZF9maW5pKHZvaWQpCi17Ci0JY3J5cHRvX3Vu cmVnaXN0ZXJfc2hhc2hlcyhhbGdzLCBBUlJBWV9TSVpFKGFsZ3MpKTsKLX0KLQotbW9kdWxlX2Nw dV9mZWF0dXJlX21hdGNoKFNIQTIsIHNoYTJfY2VfbW9kX2luaXQpOwotbW9kdWxlX2V4aXQoc2hh Ml9jZV9tb2RfZmluaSk7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9jcnlwdG8vc2hhMjU2X2dsdWUu YyBiL2FyY2gvYXJtL2NyeXB0by9zaGEyNTZfZ2x1ZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBkMDRjNGU2YmFlNmQzLi4wMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL2NyeXB0 by9zaGEyNTZfZ2x1ZS5jCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLS8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyCi0vKgotICogR2x1ZSBjb2RlIGZv ciB0aGUgU0hBMjU2IFNlY3VyZSBIYXNoIEFsZ29yaXRobSBhc3NlbWJseSBpbXBsZW1lbnRhdGlv bgotICogdXNpbmcgb3B0aW1pemVkIEFSTSBhc3NlbWJsZXIgYW5kIE5FT04gaW5zdHJ1Y3Rpb25z LgotICoKLSAqIENvcHlyaWdodCDCqSAyMDE1IEdvb2dsZSBJbmMuCi0gKgotICogVGhpcyBmaWxl IGlzIGJhc2VkIG9uIHNoYTI1Nl9zc3NlM19nbHVlLmM6Ci0gKiAgIENvcHlyaWdodCAoQykgMjAx MyBJbnRlbCBDb3Jwb3JhdGlvbgotICogICBBdXRob3I6IFRpbSBDaGVuIDx0aW0uYy5jaGVuQGxp bnV4LmludGVsLmNvbT4KLSAqLwotCi0jaW5jbHVkZSA8YXNtL25lb24uaD4KLSNpbmNsdWRlIDxj cnlwdG8vaW50ZXJuYWwvaGFzaC5oPgotI2luY2x1ZGUgPGNyeXB0by9zaGEyLmg+Ci0jaW5jbHVk ZSA8Y3J5cHRvL3NoYTI1Nl9iYXNlLmg+Ci0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+Ci0KLSNpbmNsdWRlICJzaGEyNTZfZ2x1ZS5oIgotCi1hc21s aW5rYWdlIHZvaWQgc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIoc3RydWN0IGNyeXB0b19zaGEyNTZf c3RhdGUgKnN0YXRlLAotCQkJCQljb25zdCB1OCAqZGF0YSwgaW50IG51bV9ibGtzKTsKLQotc3Rh dGljIGludCBjcnlwdG9fc2hhMjU2X2FybV91cGRhdGUoc3RydWN0IHNoYXNoX2Rlc2MgKmRlc2Ms IGNvbnN0IHU4ICpkYXRhLAotCQkJCSAgICB1bnNpZ25lZCBpbnQgbGVuKQotewotCS8qIG1ha2Ug c3VyZSBjYXN0aW5nIHRvIHNoYTI1Nl9ibG9ja19mbigpIGlzIHNhZmUgKi8KLQlCVUlMRF9CVUdf T04ob2Zmc2V0b2Yoc3RydWN0IGNyeXB0b19zaGEyNTZfc3RhdGUsIHN0YXRlKSAhPSAwKTsKLQot CXJldHVybiBzaGEyNTZfYmFzZV9kb191cGRhdGVfYmxvY2tzKGRlc2MsIGRhdGEsIGxlbiwKLQkJ CQkJICAgIHNoYTI1Nl9ibG9ja19kYXRhX29yZGVyKTsKLX0KLQotc3RhdGljIGludCBjcnlwdG9f c2hhMjU2X2FybV9maW51cChzdHJ1Y3Qgc2hhc2hfZGVzYyAqZGVzYywgY29uc3QgdTggKmRhdGEs Ci0JCQkJICAgdW5zaWduZWQgaW50IGxlbiwgdTggKm91dCkKLXsKLQlzaGEyNTZfYmFzZV9kb19m aW51cChkZXNjLCBkYXRhLCBsZW4sIHNoYTI1Nl9ibG9ja19kYXRhX29yZGVyKTsKLQlyZXR1cm4g c2hhMjU2X2Jhc2VfZmluaXNoKGRlc2MsIG91dCk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3Qgc2hhc2hf YWxnIGFsZ3NbXSA9IHsgewotCS5kaWdlc3RzaXplCT0JU0hBMjU2X0RJR0VTVF9TSVpFLAotCS5p bml0CQk9CXNoYTI1Nl9iYXNlX2luaXQsCi0JLnVwZGF0ZQkJPQljcnlwdG9fc2hhMjU2X2FybV91 cGRhdGUsCi0JLmZpbnVwCQk9CWNyeXB0b19zaGEyNTZfYXJtX2ZpbnVwLAotCS5kZXNjc2l6ZQk9 CXNpemVvZihzdHJ1Y3QgY3J5cHRvX3NoYTI1Nl9zdGF0ZSksCi0JLmJhc2UJCT0JewotCQkuY3Jh X25hbWUJPQkic2hhMjU2IiwKLQkJLmNyYV9kcml2ZXJfbmFtZSA9CSJzaGEyNTYtYXNtIiwKLQkJ LmNyYV9wcmlvcml0eQk9CTE1MCwKLQkJLmNyYV9mbGFncwk9CUNSWVBUT19BSEFTSF9BTEdfQkxP Q0tfT05MWSB8Ci0JCQkJCUNSWVBUT19BSEFTSF9BTEdfRklOVVBfTUFYLAotCQkuY3JhX2Jsb2Nr c2l6ZQk9CVNIQTI1Nl9CTE9DS19TSVpFLAotCQkuY3JhX21vZHVsZQk9CVRISVNfTU9EVUxFLAot CX0KLX0sIHsKLQkuZGlnZXN0c2l6ZQk9CVNIQTIyNF9ESUdFU1RfU0laRSwKLQkuaW5pdAkJPQlz aGEyMjRfYmFzZV9pbml0LAotCS51cGRhdGUJCT0JY3J5cHRvX3NoYTI1Nl9hcm1fdXBkYXRlLAot CS5maW51cAkJPQljcnlwdG9fc2hhMjU2X2FybV9maW51cCwKLQkuZGVzY3NpemUJPQlzaXplb2Yo c3RydWN0IGNyeXB0b19zaGEyNTZfc3RhdGUpLAotCS5iYXNlCQk9CXsKLQkJLmNyYV9uYW1lCT0J InNoYTIyNCIsCi0JCS5jcmFfZHJpdmVyX25hbWUgPQkic2hhMjI0LWFzbSIsCi0JCS5jcmFfcHJp b3JpdHkJPQkxNTAsCi0JCS5jcmFfZmxhZ3MJPQlDUllQVE9fQUhBU0hfQUxHX0JMT0NLX09OTFkg fAotCQkJCQlDUllQVE9fQUhBU0hfQUxHX0ZJTlVQX01BWCwKLQkJLmNyYV9ibG9ja3NpemUJPQlT SEEyMjRfQkxPQ0tfU0laRSwKLQkJLmNyYV9tb2R1bGUJPQlUSElTX01PRFVMRSwKLQl9Ci19IH07 Ci0KLXN0YXRpYyBpbnQgX19pbml0IHNoYTI1Nl9tb2RfaW5pdCh2b2lkKQotewotCWludCByZXMg PSBjcnlwdG9fcmVnaXN0ZXJfc2hhc2hlcyhhbGdzLCBBUlJBWV9TSVpFKGFsZ3MpKTsKLQotCWlm IChyZXMgPCAwKQotCQlyZXR1cm4gcmVzOwotCi0JaWYgKElTX0VOQUJMRUQoQ09ORklHX0tFUk5F TF9NT0RFX05FT04pICYmIGNwdV9oYXNfbmVvbigpKSB7Ci0JCXJlcyA9IGNyeXB0b19yZWdpc3Rl cl9zaGFzaGVzKHNoYTI1Nl9uZW9uX2FsZ3MsCi0JCQkJCSAgICAgIEFSUkFZX1NJWkUoc2hhMjU2 X25lb25fYWxncykpOwotCi0JCWlmIChyZXMgPCAwKQotCQkJY3J5cHRvX3VucmVnaXN0ZXJfc2hh c2hlcyhhbGdzLCBBUlJBWV9TSVpFKGFsZ3MpKTsKLQl9Ci0KLQlyZXR1cm4gcmVzOwotfQotCi1z dGF0aWMgdm9pZCBfX2V4aXQgc2hhMjU2X21vZF9maW5pKHZvaWQpCi17Ci0JY3J5cHRvX3VucmVn aXN0ZXJfc2hhc2hlcyhhbGdzLCBBUlJBWV9TSVpFKGFsZ3MpKTsKLQotCWlmIChJU19FTkFCTEVE KENPTkZJR19LRVJORUxfTU9ERV9ORU9OKSAmJiBjcHVfaGFzX25lb24oKSkKLQkJY3J5cHRvX3Vu cmVnaXN0ZXJfc2hhc2hlcyhzaGEyNTZfbmVvbl9hbGdzLAotCQkJCQkgIEFSUkFZX1NJWkUoc2hh MjU2X25lb25fYWxncykpOwotfQotCi1tb2R1bGVfaW5pdChzaGEyNTZfbW9kX2luaXQpOwotbW9k dWxlX2V4aXQoc2hhMjU2X21vZF9maW5pKTsKLQotTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotTU9E VUxFX0RFU0NSSVBUSU9OKCJTSEEyNTYgU2VjdXJlIEhhc2ggQWxnb3JpdGhtIChBUk0pLCBpbmNs dWRpbmcgTkVPTiIpOwotCi1NT0RVTEVfQUxJQVNfQ1JZUFRPKCJzaGEyNTYiKTsKZGlmZiAtLWdp dCBhL2FyY2gvYXJtL2NyeXB0by9zaGEyNTZfZ2x1ZS5oIGIvYXJjaC9hcm0vY3J5cHRvL3NoYTI1 Nl9nbHVlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ODFjOWExMTVkMWYuLjAw MDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vY3J5cHRvL3NoYTI1Nl9nbHVlLmgKKysrIC9kZXYv bnVsbApAQCAtMSw5ICswLDAgQEAKLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w ICovCi0jaWZuZGVmIF9DUllQVE9fU0hBMjU2X0dMVUVfSAotI2RlZmluZSBfQ1JZUFRPX1NIQTI1 Nl9HTFVFX0gKLQotI2luY2x1ZGUgPGNyeXB0by9oYXNoLmg+Ci0KLWV4dGVybiBzdHJ1Y3Qgc2hh c2hfYWxnIHNoYTI1Nl9uZW9uX2FsZ3NbMl07Ci0KLSNlbmRpZiAvKiBfQ1JZUFRPX1NIQTI1Nl9H TFVFX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NyeXB0by9zaGEyNTZfbmVvbl9nbHVlLmMg Yi9hcmNoL2FybS9jcnlwdG8vc2hhMjU2X25lb25fZ2x1ZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA3NmViM2NkYzIxYzk2Li4wMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL2Ny eXB0by9zaGEyNTZfbmVvbl9nbHVlLmMKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0v LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgotLyoKLSAqIEdsdWUg Y29kZSBmb3IgdGhlIFNIQTI1NiBTZWN1cmUgSGFzaCBBbGdvcml0aG0gYXNzZW1ibHkgaW1wbGVt ZW50YXRpb24KLSAqIHVzaW5nIE5FT04gaW5zdHJ1Y3Rpb25zLgotICoKLSAqIENvcHlyaWdodCDC qSAyMDE1IEdvb2dsZSBJbmMuCi0gKgotICogVGhpcyBmaWxlIGlzIGJhc2VkIG9uIHNoYTUxMl9u ZW9uX2dsdWUuYzoKLSAqICAgQ29weXJpZ2h0IMKpIDIwMTQgSnVzc2kgS2l2aWxpbm5hIDxqdXNz aS5raXZpbGlubmFAaWtpLmZpPgotICovCi0KLSNpbmNsdWRlIDxhc20vbmVvbi5oPgotI2luY2x1 ZGUgPGNyeXB0by9pbnRlcm5hbC9oYXNoLmg+Ci0jaW5jbHVkZSA8Y3J5cHRvL3NoYTIuaD4KLSNp bmNsdWRlIDxjcnlwdG8vc2hhMjU2X2Jhc2UuaD4KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4K LSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLQotI2luY2x1ZGUgInNoYTI1Nl9nbHVlLmgiCi0K LWFzbWxpbmthZ2Ugdm9pZCBzaGEyNTZfYmxvY2tfZGF0YV9vcmRlcl9uZW9uKAotCXN0cnVjdCBj cnlwdG9fc2hhMjU2X3N0YXRlICpkaWdlc3QsIGNvbnN0IHU4ICpkYXRhLCBpbnQgbnVtX2Jsa3Mp OwotCi1zdGF0aWMgaW50IGNyeXB0b19zaGEyNTZfbmVvbl91cGRhdGUoc3RydWN0IHNoYXNoX2Rl c2MgKmRlc2MsIGNvbnN0IHU4ICpkYXRhLAotCQkJCSAgICAgdW5zaWduZWQgaW50IGxlbikKLXsK LQlpbnQgcmVtYWluOwotCi0Ja2VybmVsX25lb25fYmVnaW4oKTsKLQlyZW1haW4gPSBzaGEyNTZf YmFzZV9kb191cGRhdGVfYmxvY2tzKGRlc2MsIGRhdGEsIGxlbiwKLQkJCQkJICAgICAgc2hhMjU2 X2Jsb2NrX2RhdGFfb3JkZXJfbmVvbik7Ci0Ja2VybmVsX25lb25fZW5kKCk7Ci0JcmV0dXJuIHJl bWFpbjsKLX0KLQotc3RhdGljIGludCBjcnlwdG9fc2hhMjU2X25lb25fZmludXAoc3RydWN0IHNo YXNoX2Rlc2MgKmRlc2MsIGNvbnN0IHU4ICpkYXRhLAotCQkJCSAgICB1bnNpZ25lZCBpbnQgbGVu LCB1OCAqb3V0KQotewotCWtlcm5lbF9uZW9uX2JlZ2luKCk7Ci0Jc2hhMjU2X2Jhc2VfZG9fZmlu dXAoZGVzYywgZGF0YSwgbGVuLCBzaGEyNTZfYmxvY2tfZGF0YV9vcmRlcl9uZW9uKTsKLQlrZXJu ZWxfbmVvbl9lbmQoKTsKLQlyZXR1cm4gc2hhMjU2X2Jhc2VfZmluaXNoKGRlc2MsIG91dCk7Ci19 Ci0KLXN0cnVjdCBzaGFzaF9hbGcgc2hhMjU2X25lb25fYWxnc1tdID0geyB7Ci0JLmRpZ2VzdHNp emUJPQlTSEEyNTZfRElHRVNUX1NJWkUsCi0JLmluaXQJCT0Jc2hhMjU2X2Jhc2VfaW5pdCwKLQku dXBkYXRlCQk9CWNyeXB0b19zaGEyNTZfbmVvbl91cGRhdGUsCi0JLmZpbnVwCQk9CWNyeXB0b19z aGEyNTZfbmVvbl9maW51cCwKLQkuZGVzY3NpemUJPQlzaXplb2Yoc3RydWN0IGNyeXB0b19zaGEy NTZfc3RhdGUpLAotCS5iYXNlCQk9CXsKLQkJLmNyYV9uYW1lCT0JInNoYTI1NiIsCi0JCS5jcmFf ZHJpdmVyX25hbWUgPQkic2hhMjU2LW5lb24iLAotCQkuY3JhX3ByaW9yaXR5CT0JMjUwLAotCQku Y3JhX2ZsYWdzCT0JQ1JZUFRPX0FIQVNIX0FMR19CTE9DS19PTkxZIHwKLQkJCQkJQ1JZUFRPX0FI QVNIX0FMR19GSU5VUF9NQVgsCi0JCS5jcmFfYmxvY2tzaXplCT0JU0hBMjU2X0JMT0NLX1NJWkUs Ci0JCS5jcmFfbW9kdWxlCT0JVEhJU19NT0RVTEUsCi0JfQotfSwgewotCS5kaWdlc3RzaXplCT0J U0hBMjI0X0RJR0VTVF9TSVpFLAotCS5pbml0CQk9CXNoYTIyNF9iYXNlX2luaXQsCi0JLnVwZGF0 ZQkJPQljcnlwdG9fc2hhMjU2X25lb25fdXBkYXRlLAotCS5maW51cAkJPQljcnlwdG9fc2hhMjU2 X25lb25fZmludXAsCi0JLmRlc2NzaXplCT0Jc2l6ZW9mKHN0cnVjdCBjcnlwdG9fc2hhMjU2X3N0 YXRlKSwKLQkuYmFzZQkJPQl7Ci0JCS5jcmFfbmFtZQk9CSJzaGEyMjQiLAotCQkuY3JhX2RyaXZl cl9uYW1lID0JInNoYTIyNC1uZW9uIiwKLQkJLmNyYV9wcmlvcml0eQk9CTI1MCwKLQkJLmNyYV9m bGFncwk9CUNSWVBUT19BSEFTSF9BTEdfQkxPQ0tfT05MWSB8Ci0JCQkJCUNSWVBUT19BSEFTSF9B TEdfRklOVVBfTUFYLAotCQkuY3JhX2Jsb2Nrc2l6ZQk9CVNIQTIyNF9CTE9DS19TSVpFLAotCQku Y3JhX21vZHVsZQk9CVRISVNfTU9EVUxFLAotCX0KLX0gfTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJt L2xpYi9jcnlwdG8vLmdpdGlnbm9yZSBiL2FyY2gvYXJtL2xpYi9jcnlwdG8vLmdpdGlnbm9yZQpp bmRleCAwZDQ3ZDRmMjFjNmRlLi4xMmQ3NGQ4YjAzZDBhIDEwMDY0NAotLS0gYS9hcmNoL2FybS9s aWIvY3J5cHRvLy5naXRpZ25vcmUKKysrIGIvYXJjaC9hcm0vbGliL2NyeXB0by8uZ2l0aWdub3Jl CkBAIC0xLDIgKzEsMyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5 CiBwb2x5MTMwNS1jb3JlLlMKK3NoYTI1Ni1jb3JlLlMKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2xp Yi9jcnlwdG8vS2NvbmZpZyBiL2FyY2gvYXJtL2xpYi9jcnlwdG8vS2NvbmZpZwppbmRleCBlODQ0 NGZkMGFhZTMwLi45ZjNmZjMwZjQwMzI4IDEwMDY0NAotLS0gYS9hcmNoL2FybS9saWIvY3J5cHRv L0tjb25maWcKKysrIGIvYXJjaC9hcm0vbGliL2NyeXB0by9LY29uZmlnCkBAIC0yMCw1ICsyMCwx MSBAQCBjb25maWcgQ1JZUFRPX0NIQUNIQTIwX05FT04KIAogY29uZmlnIENSWVBUT19QT0xZMTMw NV9BUk0KIAl0cmlzdGF0ZQogCWRlZmF1bHQgQ1JZUFRPX0xJQl9QT0xZMTMwNQogCXNlbGVjdCBD UllQVE9fQVJDSF9IQVZFX0xJQl9QT0xZMTMwNQorCitjb25maWcgQ1JZUFRPX1NIQTI1Nl9BUk0K Kwl0cmlzdGF0ZQorCWRlcGVuZHMgb24gIUNQVV9WN00KKwlkZWZhdWx0IENSWVBUT19MSUJfU0hB MjU2CisJc2VsZWN0IENSWVBUT19BUkNIX0hBVkVfTElCX1NIQTI1NgpkaWZmIC0tZ2l0IGEvYXJj aC9hcm0vbGliL2NyeXB0by9NYWtlZmlsZSBiL2FyY2gvYXJtL2xpYi9jcnlwdG8vTWFrZWZpbGUK aW5kZXggNGMwNDJhNGM3N2VkNi4uNDMxZjc3YzNmZjZmZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0v bGliL2NyeXB0by9NYWtlZmlsZQorKysgYi9hcmNoL2FybS9saWIvY3J5cHRvL01ha2VmaWxlCkBA IC04LDE5ICs4LDI1IEBAIGNoYWNoYS1uZW9uLXkgOj0gY2hhY2hhLXNjYWxhci1jb3JlLm8gY2hh Y2hhLWdsdWUubwogY2hhY2hhLW5lb24tJChDT05GSUdfS0VSTkVMX01PREVfTkVPTikgKz0gY2hh Y2hhLW5lb24tY29yZS5vCiAKIG9iai0kKENPTkZJR19DUllQVE9fUE9MWTEzMDVfQVJNKSArPSBw b2x5MTMwNS1hcm0ubwogcG9seTEzMDUtYXJtLXkgOj0gcG9seTEzMDUtY29yZS5vIHBvbHkxMzA1 LWdsdWUubwogCitvYmotJChDT05GSUdfQ1JZUFRPX1NIQTI1Nl9BUk0pICs9IHNoYTI1Ni1hcm0u bworc2hhMjU2LWFybS15IDo9IHNoYTI1Ni5vIHNoYTI1Ni1jb3JlLm8KK3NoYTI1Ni1hcm0tJChD T05GSUdfS0VSTkVMX01PREVfTkVPTikgKz0gc2hhMjU2LWNlLm8KKwogcXVpZXRfY21kX3Blcmwg PSBQRVJMICAgICRACiAgICAgICBjbWRfcGVybCA9ICQoUEVSTCkgJCg8KSA+ICQoQCkKIAogJChv YmopLyUtY29yZS5TOiAkKHNyYykvJS1hcm12NC5wbAogCSQoY2FsbCBjbWQscGVybCkKIAotY2xl YW4tZmlsZXMgKz0gcG9seTEzMDUtY29yZS5TCitjbGVhbi1maWxlcyArPSBwb2x5MTMwNS1jb3Jl LlMgc2hhMjU2LWNvcmUuUwogCiBhZmxhZ3MtdGh1bWIyLSQoQ09ORklHX1RIVU1CMl9LRVJORUwp ICA6PSAtVV9fdGh1bWIyX18gLURfX3RodW1iMl9fPTEKIAogIyBtYXNzYWdlIHRoZSBwZXJsYXNt IGNvZGUgYSBiaXQgc28gd2Ugb25seSBnZXQgdGhlIE5FT04gcm91dGluZSBpZiB3ZSBuZWVkIGl0 CiBwb2x5MTMwNS1hZmxhZ3MtJChDT05GSUdfQ1BVX1Y3KSA6PSAtVV9fTElOVVhfQVJNX0FSQ0hf XyAtRF9fTElOVVhfQVJNX0FSQ0hfXz01CiBwb2x5MTMwNS1hZmxhZ3MtJChDT05GSUdfS0VSTkVM X01PREVfTkVPTikgOj0gLVVfX0xJTlVYX0FSTV9BUkNIX18gLURfX0xJTlVYX0FSTV9BUkNIX189 NwogQUZMQUdTX3BvbHkxMzA1LWNvcmUubyArPSAkKHBvbHkxMzA1LWFmbGFncy15KSAkKGFmbGFn cy10aHVtYjIteSkKKworQUZMQUdTX3NoYTI1Ni1jb3JlLm8gKz0gJChhZmxhZ3MtdGh1bWIyLXkp CmRpZmYgLS1naXQgYS9hcmNoL2FybS9jcnlwdG8vc2hhMjU2LWFybXY0LnBsIGIvYXJjaC9hcm0v bGliL2NyeXB0by9zaGEyNTYtYXJtdjQucGwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBm cm9tIGFyY2gvYXJtL2NyeXB0by9zaGEyNTYtYXJtdjQucGwKcmVuYW1lIHRvIGFyY2gvYXJtL2xp Yi9jcnlwdG8vc2hhMjU2LWFybXY0LnBsCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jcnlwdG8vc2hh Mi1jZS1jb3JlLlMgYi9hcmNoL2FybS9saWIvY3J5cHRvL3NoYTI1Ni1jZS5TCnNpbWlsYXJpdHkg aW5kZXggOTElCnJlbmFtZSBmcm9tIGFyY2gvYXJtL2NyeXB0by9zaGEyLWNlLWNvcmUuUwpyZW5h bWUgdG8gYXJjaC9hcm0vbGliL2NyeXB0by9zaGEyNTYtY2UuUwppbmRleCBiNjM2OWQyNDQwYTE5 Li5hYzJjOWIwMWIyMmQyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9jcnlwdG8vc2hhMi1jZS1jb3Jl LlMKKysrIGIvYXJjaC9hcm0vbGliL2NyeXB0by9zaGEyNTYtY2UuUwpAQCAtMSw4ICsxLDggQEAK IC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KIC8qCi0gKiBzaGEy LWNlLWNvcmUuUyAtIFNIQS0yMjQvMjU2IHNlY3VyZSBoYXNoIHVzaW5nIEFSTXY4IENyeXB0byBF eHRlbnNpb25zCisgKiBzaGEyNTYtY2UuUyAtIFNIQS0yMjQvMjU2IHNlY3VyZSBoYXNoIHVzaW5n IEFSTXY4IENyeXB0byBFeHRlbnNpb25zCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDE1IExpbmFy byBMdGQuCiAgKiBBdXRob3I6IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8u b3JnPgogICovCiAKQEAgLTY1LDE0ICs2NSwxNCBAQAogCS53b3JkCQkweDM5MWMwY2IzLCAweDRl ZDhhYTRhLCAweDViOWNjYTRmLCAweDY4MmU2ZmYzCiAJLndvcmQJCTB4NzQ4ZjgyZWUsIDB4Nzhh NTYzNmYsIDB4ODRjODc4MTQsIDB4OGNjNzAyMDgKIAkud29yZAkJMHg5MGJlZmZmYSwgMHhhNDUw NmNlYiwgMHhiZWY5YTNmNywgMHhjNjcxNzhmMgogCiAJLyoKLQkgKiB2b2lkIHNoYTJfY2VfdHJh bnNmb3JtKHN0cnVjdCBzaGEyNTZfc3RhdGUgKnNzdCwgdTggY29uc3QgKnNyYywKLQkJCQkgIGlu dCBibG9ja3MpOworCSAqIHZvaWQgc2hhMjU2X2NlX3RyYW5zZm9ybSh1MzIgc3RhdGVbU0hBMjU2 X1NUQVRFX1dPUkRTXSwKKwkgKgkJCSAgICBjb25zdCB1OCAqZGF0YSwgc2l6ZV90IG5ibG9ja3Mp OwogCSAqLwotRU5UUlkoc2hhMl9jZV90cmFuc2Zvcm0pCitFTlRSWShzaGEyNTZfY2VfdHJhbnNm b3JtKQogCS8qIGxvYWQgc3RhdGUgKi8KIAl2bGQxLjMyCQl7ZGdhLWRnYn0sIFtyMF0KIAogCS8q IGxvYWQgaW5wdXQgKi8KIDA6CXZsZDEuMzIJCXtxMC1xMX0sIFtyMV0hCkBAIC0xMTgsNiArMTE4 LDYgQEAgRU5UUlkoc2hhMl9jZV90cmFuc2Zvcm0pCiAJYm5lCQkwYgogCiAJLyogc3RvcmUgbmV3 IHN0YXRlICovCiAJdnN0MS4zMgkJe2RnYS1kZ2J9LCBbcjBdCiAJYngJCWxyCi1FTkRQUk9DKHNo YTJfY2VfdHJhbnNmb3JtKQorRU5EUFJPQyhzaGEyNTZfY2VfdHJhbnNmb3JtKQpkaWZmIC0tZ2l0 IGEvYXJjaC9hcm0vbGliL2NyeXB0by9zaGEyNTYuYyBiL2FyY2gvYXJtL2xpYi9jcnlwdG8vc2hh MjU2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uM2E4ZGZjMzA0 ODA3YQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL2xpYi9jcnlwdG8vc2hhMjU2LmMKQEAg LTAsMCArMSw2NCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0 ZXIKKy8qCisgKiBTSEEtMjU2IG9wdGltaXplZCBmb3IgQVJNCisgKgorICogQ29weXJpZ2h0IDIw MjUgR29vZ2xlIExMQworICovCisjaW5jbHVkZSA8YXNtL25lb24uaD4KKyNpbmNsdWRlIDxjcnlw dG8vaW50ZXJuYWwvc2hhMi5oPgorI2luY2x1ZGUgPGNyeXB0by9pbnRlcm5hbC9zaW1kLmg+Cisj aW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisKK2Fz bWxpbmthZ2Ugdm9pZCBzaGEyNTZfYmxvY2tfZGF0YV9vcmRlcih1MzIgc3RhdGVbU0hBMjU2X1NU QVRFX1dPUkRTXSwKKwkJCQkJY29uc3QgdTggKmRhdGEsIHNpemVfdCBuYmxvY2tzKTsKK2FzbWxp bmthZ2Ugdm9pZCBzaGEyNTZfYmxvY2tfZGF0YV9vcmRlcl9uZW9uKHUzMiBzdGF0ZVtTSEEyNTZf U1RBVEVfV09SRFNdLAorCQkJCQkgICAgIGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbmJsb2Nrcyk7 Cithc21saW5rYWdlIHZvaWQgc2hhMjU2X2NlX3RyYW5zZm9ybSh1MzIgc3RhdGVbU0hBMjU2X1NU QVRFX1dPUkRTXSwKKwkJCQkgICAgY29uc3QgdTggKmRhdGEsIHNpemVfdCBuYmxvY2tzKTsKKwor c3RhdGljIF9fcm9fYWZ0ZXJfaW5pdCBERUZJTkVfU1RBVElDX0tFWV9GQUxTRShoYXZlX25lb24p Oworc3RhdGljIF9fcm9fYWZ0ZXJfaW5pdCBERUZJTkVfU1RBVElDX0tFWV9GQUxTRShoYXZlX2Nl KTsKKwordm9pZCBzaGEyNTZfYmxvY2tzX2FyY2godTMyIHN0YXRlW1NIQTI1Nl9TVEFURV9XT1JE U10sCisJCQljb25zdCB1OCAqZGF0YSwgc2l6ZV90IG5ibG9ja3MpCit7CisJaWYgKElTX0VOQUJM RUQoQ09ORklHX0tFUk5FTF9NT0RFX05FT04pICYmCisJICAgIHN0YXRpY19icmFuY2hfbGlrZWx5 KCZoYXZlX25lb24pICYmIGNyeXB0b19zaW1kX3VzYWJsZSgpKSB7CisJCWtlcm5lbF9uZW9uX2Jl Z2luKCk7CisJCWlmIChzdGF0aWNfYnJhbmNoX2xpa2VseSgmaGF2ZV9jZSkpCisJCQlzaGEyNTZf Y2VfdHJhbnNmb3JtKHN0YXRlLCBkYXRhLCBuYmxvY2tzKTsKKwkJZWxzZQorCQkJc2hhMjU2X2Js b2NrX2RhdGFfb3JkZXJfbmVvbihzdGF0ZSwgZGF0YSwgbmJsb2Nrcyk7CisJCWtlcm5lbF9uZW9u X2VuZCgpOworCX0gZWxzZSB7CisJCXNoYTI1Nl9ibG9ja19kYXRhX29yZGVyKHN0YXRlLCBkYXRh LCBuYmxvY2tzKTsKKwl9Cit9CitFWFBPUlRfU1lNQk9MKHNoYTI1Nl9ibG9ja3NfYXJjaCk7CisK K2Jvb2wgc2hhMjU2X2lzX2FyY2hfb3B0aW1pemVkKHZvaWQpCit7CisJLyogV2UgYWx3YXlzIGNh biB1c2UgYXQgbGVhc3QgdGhlIEFSTSBzY2FsYXIgaW1wbGVtZW50YXRpb24uICovCisJcmV0dXJu IHRydWU7Cit9CitFWFBPUlRfU1lNQk9MKHNoYTI1Nl9pc19hcmNoX29wdGltaXplZCk7CisKK3N0 YXRpYyBpbnQgX19pbml0IHNoYTI1Nl9hcm1fbW9kX2luaXQodm9pZCkKK3sKKwlpZiAoSVNfRU5B QkxFRChDT05GSUdfS0VSTkVMX01PREVfTkVPTikgJiYgKGVsZl9od2NhcCAmIEhXQ0FQX05FT04p KSB7CisJCXN0YXRpY19icmFuY2hfZW5hYmxlKCZoYXZlX25lb24pOworCQlpZiAoZWxmX2h3Y2Fw MiAmIEhXQ0FQMl9TSEEyKQorCQkJc3RhdGljX2JyYW5jaF9lbmFibGUoJmhhdmVfY2UpOworCX0K KwlyZXR1cm4gMDsKK30KK2FyY2hfaW5pdGNhbGwoc2hhMjU2X2FybV9tb2RfaW5pdCk7CisKK3N0 YXRpYyB2b2lkIF9fZXhpdCBzaGEyNTZfYXJtX21vZF9leGl0KHZvaWQpCit7Cit9Cittb2R1bGVf ZXhpdChzaGEyNTZfYXJtX21vZF9leGl0KTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9E VUxFX0RFU0NSSVBUSU9OKCJTSEEtMjU2IG9wdGltaXplZCBmb3IgQVJNIik7Ci0tIAoyLjQ5LjAK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1y aXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==