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 lists.sourceforge.net (lists.sourceforge.net [216.105.38.7]) (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 04B51C61DBD for ; Thu, 27 Aug 2026 02:27:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.sourceforge.net; s=beta; h=Content-Transfer-Encoding:Content-Type:Cc: Reply-To:From:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Subject:In-Reply-To:References:To:MIME-Version:Date: Message-ID:Sender:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=e7bVPJXUnMS8cIo8V1m+H39S9OR3PW0koOBST+1wHY0=; b=Xr90agR5Dc/IU2qn3g/af257a3 /q87XBfD3Wf6t/UZKOPQGL2zXp72WscuPZ+Nv9vpDm6rYiZyyxNPG1JCdjvKZ02Qf3+BUJ1IqJ7As sIFk8nLvkw2wm/1rBReXCS6jQUU6eeX7/PuUGprT2Hwyl4IPILMNoO2E12Ep+kEdXzQk=; Received: from [127.0.0.1] (helo=sfs-ml-2.v29.lw.sourceforge.com) by sfs-ml-2.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1wzPpe-0001qu-PP; Thu, 27 Aug 2026 02:27:11 +0000 Received: from [172.30.29.66] (helo=mx.sourceforge.net) by sfs-ml-2.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1wzPp4-0001oU-O9 for linux-f2fs-devel@lists.sourceforge.net; Thu, 27 Aug 2026 02:26:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:Content-Type:In-Reply-To: From:References:To:Subject:Cc:MIME-Version:Date:Message-ID:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=KMa2+NJFxmYnWkAJy0R32bhqD+Et034Q2UPKTJnIrUI=; b=jK5mk1EP5ojOTIJWig2KZvIEIj 0fXY8IAv0RQldLPPfj2ffJKPlU9HxS4QiDL/dBoABcJ3wqouzXBpiP2+2vrnAh2P5cCicJw2B9Ium y3GuPgd9C0rMgAI5rJJ99cetKwEXzz1RrUBZGo3HTz9V0v9z6g7CUamxqih4MkAndKVk=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:References:To: Subject:Cc:MIME-Version:Date:Message-ID:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=KMa2+NJFxmYnWkAJy0R32bhqD+Et034Q2UPKTJnIrUI=; b=UI+JuLwT5T6nFj1ry1JSl/AtVx wJGQNK4d7c9JrZ55LAUItubnynq3ujBfRMl/hDDLeOdmOOU4OKVnqygy+YBiNgz5IZIsaWaFkSXJ5 yuBOyLhEkVWoZspWEuPH6JhlZ1BSTlrKdoQGKbU7IefP4GqIJiieseFIHOsSbWDi4K/c=; Received: from tor.source.kernel.org ([172.105.4.254]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1wzPp2-0005SN-TN for linux-f2fs-devel@lists.sourceforge.net; Thu, 27 Aug 2026 02:26:35 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id B5A8E60A5C; Thu, 27 Aug 2026 02:26:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 346221F000E9; Thu, 27 Aug 2026 02:26:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787797586; bh=KMa2+NJFxmYnWkAJy0R32bhqD+Et034Q2UPKTJnIrUI=; h=Date:Cc:Subject:To:References:From:In-Reply-To; b=U6vlMP/BimrengmT1jwFCPJplA+bS65vh2emK1WFW2q9DjPMIgvbuILqmHgl6TZ/w PzizrpM9yeWW7boc7poy3TPEfEp7eSuDS0DShqzXPBkl8skEOuSu3z4+OzdaJpan40 XBOBaZWlxbuqhTd3+jwhad3v4yQDIpn0F1DvoHbqOzZ2b0u/Fc3VJO6VcfD7q7n7Gm xdA6zxy0Qjki4I6zZacAoBv/cDgesRc+/Q+2IbuFuU4h3/8HEYAQXxQRqmBepmGZpl HysEGW+JGGvRqoXpZ2Q3jtl7UbzdHPaomidt3Yh2Cg1Xsc/nM0BbJ//CDk92lKGAAj rvqs/HcDk95Dg== Message-ID: Date: Thu, 27 Aug 2026 10:26:23 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Daeho Jeong References: <20260825130126.2078627-1-chao@kernel.org> <20260825130126.2078627-6-chao@kernel.org> Content-Language: en-US In-Reply-To: X-Headers-End: 1wzPp2-0005SN-TN Subject: Re: [f2fs-dev] [PATCH v3 05/12] f2fs: cache: use meta cache X-BeenThere: linux-f2fs-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Chao Yu via Linux-f2fs-devel Reply-To: Chao Yu Cc: jaegeuk@kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net T24gOC8yNy8yNiAwNDoyMiwgRGFlaG8gSmVvbmcgd3JvdGU6Cj4gT24gVHVlLCBBdWcgMjUsIDIw MjYgYXQgNjowNOKAr0FNIENoYW8gWXUgdmlhIExpbnV4LWYyZnMtZGV2ZWwKPiA8bGludXgtZjJm cy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+IHdyb3RlOgo+Pgo+PiBUaGlzIHBhdGNoIG1p Z3JhdGVzIEYyRlMgbWV0YSBibG9jayBjYWNoaW5nIGZyb20gdGhlIGZha2UgVkZTIGlub2RlCj4+ IHBhZ2UgY2FjaGUgKHNiaS0+bWV0YV9pbm9kZSkgdG8gbWV0YSBjYWNoZSAoc2JpLT5tZXRhX2Js b2NrcykuCj4+Cj4+IEl0IGNvbnZlcnRzIENQLCBTSVQsIE5BVCwgU1NBLCByZWNvdmVyeSwgYW5k IEdDIG1ldGFkYXRhIEkvTyBwYXRocyB0bwo+PiBvcGVyYXRlIG9uIHN0cnVjdCBmMmZzX2NhY2hl ZF9ibG9jayBpbnN0ZWFkIG9mIGZvbGlvLCBhbmQgcmVtb3Zlcwo+PiBzYmktPm1ldGFfaW5vZGUu Cj4+Cj4+IFNpZ25lZC1vZmYtYnk6IENoYW8gWXUgPGNoYW9Aa2VybmVsLm9yZz4KPj4gLS0tCj4+ ICBmcy9mMmZzL2NhY2hlLmMgICAgICAgICB8ICAgMiArCj4+ICBmcy9mMmZzL2NoZWNrcG9pbnQu YyAgICB8IDM5MCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICBm cy9mMmZzL2NvbXByZXNzLmMgICAgICB8ICAgNCArLQo+PiAgZnMvZjJmcy9kYXRhLmMgICAgICAg ICAgfCAgMjkgKystCj4+ICBmcy9mMmZzL2RlYnVnLmMgICAgICAgICB8ICAxMiArLQo+PiAgZnMv ZjJmcy9mMmZzLmggICAgICAgICAgfCAgODEgKysrLS0tLS0tCj4+ICBmcy9mMmZzL2ZpbGUuYyAg ICAgICAgICB8ICAgNCArLQo+PiAgZnMvZjJmcy9nYy5jICAgICAgICAgICAgfCAxMzQgKysrKysr Ky0tLS0tLS0KPj4gIGZzL2YyZnMvaW5saW5lLmMgICAgICAgIHwgICA5ICstCj4+ICBmcy9mMmZz L2lub2RlLmMgICAgICAgICB8ICAgOSArLQo+PiAgZnMvZjJmcy9ub2RlLmMgICAgICAgICAgfCAx MjUgKysrKysrKy0tLS0tLQo+PiAgZnMvZjJmcy9ub2RlLmggICAgICAgICAgfCAgIDQgKy0KPj4g IGZzL2YyZnMvcmVjb3ZlcnkuYyAgICAgIHwgMTk4ICsrKysrKysrKystLS0tLS0tLS0tCj4+ICBm cy9mMmZzL3NlZ21lbnQuYyAgICAgICB8IDIwMSArKysrKysrKysrKy0tLS0tLS0tLS0KPj4gIGZz L2YyZnMvc2VnbWVudC5oICAgICAgIHwgIDMxICsrKy0KPj4gIGZzL2YyZnMvc3VwZXIuYyAgICAg ICAgIHwgIDMxICstLS0KPj4gIGluY2x1ZGUvbGludXgvZjJmc19mcy5oIHwgICAxIC0KPj4gIDE3 IGZpbGVzIGNoYW5nZWQsIDYwMiBpbnNlcnRpb25zKCspLCA2NjMgZGVsZXRpb25zKC0pCj4+Cj4+ IGRpZmYgLS1naXQgYS9mcy9mMmZzL2NhY2hlLmMgYi9mcy9mMmZzL2NhY2hlLmMKPj4gaW5kZXgg ZGNmZWE2YzJlMWJiLi4xNmM2ZGFiMmU0OTggMTAwNjQ0Cj4+IC0tLSBhL2ZzL2YyZnMvY2FjaGUu Ywo+PiArKysgYi9mcy9mMmZzL2NhY2hlLmMKPj4gQEAgLTYzNSw2ICs2MzUsOCBAQCBzdGF0aWMg aW50IGYyZnNfY2FjaGVfd3JpdGViYWNrX2t0aHJlYWQodm9pZCAqZGF0YSkKPj4gICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICAgICAgICAgICAgICAgICBpZiAoZjJmc19jcF9lcnJv cihzYmkpKQo+PiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4gKwo+PiArICAg ICAgICAgICAgICAgZjJmc193cml0ZV9tZXRhX2NhY2hlcyhzYmkpOwo+PiAgICAgICAgIH0KPj4g ICAgICAgICByZXR1cm4gMDsKPj4gIH0KPj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvY2hlY2twb2lu dC5jIGIvZnMvZjJmcy9jaGVja3BvaW50LmMKPj4gaW5kZXggNGI1OWYzMGVmNDVkLi5mMjdjMmJh NGVhYTcgMTAwNjQ0Cj4+IC0tLSBhL2ZzL2YyZnMvY2hlY2twb2ludC5jCj4+ICsrKyBiL2ZzL2Yy ZnMvY2hlY2twb2ludC5jCj4+IEBAIC0xNyw2ICsxNyw3IEBACj4+ICAjaW5jbHVkZSA8bGludXgv ZGVsYXlhY2N0Lmg+Cj4+ICAjaW5jbHVkZSA8bGludXgvaW9wcmlvLmg+Cj4+ICAjaW5jbHVkZSA8 bGludXgvbWF0aDY0Lmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvZnJlZXplci5oPgo+Pgo+PiAgI2lu Y2x1ZGUgImYyZnMuaCIKPj4gICNpbmNsdWRlICJub2RlLmgiCj4+IEBAIC0yMzYsMjcgKzIzNywy NyBAQCBzdHJ1Y3Qga21lbV9jYWNoZSAqZjJmc19pbm9kZV9lbnRyeV9zbGFiOwo+PiAgLyoKPj4g ICAqIFdlIGd1YXJhbnRlZSBubyBmYWlsdXJlIG9uIHRoZSByZXR1cm5lZCBwYWdlLgo+PiAgICov Cj4+IC1zdHJ1Y3QgZm9saW8gKmYyZnNfZ3JhYl9tZXRhX2ZvbGlvKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSwgcGdvZmZfdCBpbmRleCkKPj4gK3N0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZjJm c19ncmFiX21ldGFfY2FjaGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnb2ZmX3QgaW5k ZXgpCj4+ICB7Cj4+IC0gICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBNRVRB X01BUFBJTkcoc2JpKTsKPj4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlvOwo+PiArICAgICAg IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnk7Cj4+ICByZXBlYXQ6Cj4+IC0gICAgICAg Zm9saW8gPSBmMmZzX2dyYWJfY2FjaGVfZm9saW8obWFwcGluZywgaW5kZXgsIGZhbHNlKTsKPj4g LSAgICAgICBpZiAoSVNfRVJSKGZvbGlvKSkgewo+PiArICAgICAgIGVudHJ5ID0gZjJmc19ncmFi X2NhY2hlKE1FVEFfQ0FDSEUoc2JpKSwgaW5kZXgsCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBGMkZTX0NBQ0hFX0xPQ0tfQ1JFQVRFKTsKPj4gKyAgICAgICBpZiAo SVNfRVJSKGVudHJ5KSkgewo+PiAgICAgICAgICAgICAgICAgY29uZF9yZXNjaGVkKCk7Cj4+ICAg ICAgICAgICAgICAgICBnb3RvIHJlcGVhdDsKPj4gICAgICAgICB9Cj4+IC0gICAgICAgZjJmc19m b2xpb193YWl0X3dyaXRlYmFjayhmb2xpbywgTUVUQSwgdHJ1ZSwgdHJ1ZSk7Cj4+IC0gICAgICAg aWYgKCFmb2xpb190ZXN0X3VwdG9kYXRlKGZvbGlvKSkKPj4gLSAgICAgICAgICAgICAgIGZvbGlv X21hcmtfdXB0b2RhdGUoZm9saW8pOwo+PiAtICAgICAgIHJldHVybiBmb2xpbzsKPj4gKyAgICAg ICBmMmZzX2NhY2hlX3dhaXRfd3JpdGViYWNrKGVudHJ5KTsKPj4gKyAgICAgICBpZiAoIWYyZnNf Y2FjaGVfdGVzdF91cHRvZGF0ZShlbnRyeSkpCj4+ICsgICAgICAgICAgICAgICBmMmZzX2NhY2hl X3NldF91cHRvZGF0ZShlbnRyeSk7Cj4+ICsgICAgICAgcmV0dXJuIGVudHJ5Owo+PiAgfQo+Pgo+ PiAtc3RhdGljIHN0cnVjdCBmb2xpbyAqX19nZXRfbWV0YV9mb2xpbyhzdHJ1Y3QgZjJmc19zYl9p bmZvICpzYmksIHBnb2ZmX3QgaW5kZXgsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19tZXRhKQo+PiArc3RhdGljIHN0cnVj dCBmMmZzX2NhY2hlZF9ibG9jayAqX19nZXRfbWV0YV9jYWNoZShzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmksCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ29mZl90 IGluZGV4LCBib29sIGlzX21ldGEpCj4+ICB7Cj4+IC0gICAgICAgc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgKm1hcHBpbmcgPSBNRVRBX01BUFBJTkcoc2JpKTsKPj4gLSAgICAgICBzdHJ1Y3QgZm9saW8g KmZvbGlvOwo+PiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnk7Cj4+ICAg ICAgICAgc3RydWN0IGYyZnNfaW9faW5mbyBmaW8gPSB7Cj4+ICAgICAgICAgICAgICAgICAuc2Jp ID0gc2JpLAo+PiAgICAgICAgICAgICAgICAgLnR5cGUgPSBNRVRBLAo+PiBAQCAtMjY2LDcwICsy NjcsNzUgQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqX19nZXRfbWV0YV9mb2xpbyhzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmksIHBnb2ZmX3QgaW5kZXgsCj4+ICAgICAgICAgICAgICAgICAubmV3X2Js a2FkZHIgPSBpbmRleCwKPj4gICAgICAgICAgICAgICAgIC5lbmNyeXB0ZWRfcGFnZSA9IE5VTEws Cj4+ICAgICAgICAgICAgICAgICAuaXNfcG9yID0gIWlzX21ldGEgPyAxIDogMCwKPj4gKyAgICAg ICAgICAgICAgIC5pc19jYWNoZSA9IDEsCj4+ICAgICAgICAgfTsKPj4gICAgICAgICBpbnQgZXJy Owo+Pgo+PiAgICAgICAgIGlmICh1bmxpa2VseSghaXNfbWV0YSkpCj4+ICAgICAgICAgICAgICAg ICBmaW8ub3BfZmxhZ3MgJj0gflJFUV9NRVRBOwo+PiAgcmVwZWF0Ogo+PiAtICAgICAgIGZvbGlv ID0gZjJmc19ncmFiX2NhY2hlX2ZvbGlvKG1hcHBpbmcsIGluZGV4LCBmYWxzZSk7Cj4+IC0gICAg ICAgaWYgKElTX0VSUihmb2xpbykpIHsKPj4gKyAgICAgICBlbnRyeSA9IGYyZnNfZ3JhYl9jYWNo ZShNRVRBX0NBQ0hFKHNiaSksIGluZGV4LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRjJGU19DQUNIRV9MT0NLX0NSRUFURSk7Cj4+ICsgICAgICAgaWYgKElTX0VS UihlbnRyeSkpIHsKPj4gICAgICAgICAgICAgICAgIGNvbmRfcmVzY2hlZCgpOwo+PiAgICAgICAg ICAgICAgICAgZ290byByZXBlYXQ7Cj4+ICAgICAgICAgfQo+PiAtICAgICAgIGlmIChmb2xpb190 ZXN0X3VwdG9kYXRlKGZvbGlvKSkKPj4gKyAgICAgICBpZiAoZjJmc19jYWNoZV90ZXN0X3VwdG9k YXRlKGVudHJ5KSkKPj4gICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+Pgo+PiAtICAgICAgIGZp by5mb2xpbyA9IGZvbGlvOwo+PiArICAgICAgIGZpby5jYWNoZV9lbnRyeSA9IGVudHJ5Owo+Pgo+ PiAtICAgICAgIGVyciA9IGYyZnNfc3VibWl0X3BhZ2VfYmlvKCZmaW8pOwo+PiArICAgICAgIGVy ciA9IGYyZnNfc3VibWl0X2NhY2hlX3JlYWQoJmZpbyk7Cj4+ICAgICAgICAgaWYgKGVycikgewo+ PiAtICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoZm9saW8sIHRydWUpOwo+PiArICAgICAg ICAgICAgICAgZjJmc19wdXRfY2FjaGUoZW50cnksIHRydWUpOwo+PiAgICAgICAgICAgICAgICAg cmV0dXJuIEVSUl9QVFIoZXJyKTsKPj4gICAgICAgICB9Cj4+Cj4+ICAgICAgICAgZjJmc191cGRh dGVfaW9zdGF0KHNiaSwgTlVMTCwgRlNfTUVUQV9SRUFEX0lPLCBGMkZTX0JMS1NJWkUpOwo+Pgo+ PiAtICAgICAgIGZvbGlvX2xvY2soZm9saW8pOwo+PiAtICAgICAgIGlmICh1bmxpa2VseSghaXNf bWV0YV9mb2xpbyhmb2xpbykpKSB7Cj4+IC0gICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChm b2xpbywgdHJ1ZSk7Cj4+ICsgICAgICAgZjJmc19sb2NrX2NhY2hlKGVudHJ5KTsKPj4gKyAgICAg ICBpZiAodW5saWtlbHkoIWYyZnNfaXNfbWV0YV9jYWNoZShlbnRyeSkpKSB7Cj4+ICsgICAgICAg ICAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRyeSwgdHJ1ZSk7Cj4+ICAgICAgICAgICAgICAgICBn b3RvIHJlcGVhdDsKPj4gICAgICAgICB9Cj4+Cj4+IC0gICAgICAgaWYgKHVubGlrZWx5KCFmb2xp b190ZXN0X3VwdG9kYXRlKGZvbGlvKSkpIHsKPj4gLSAgICAgICAgICAgICAgIGYyZnNfaGFuZGxl X3BhZ2VfZWlvKHNiaSwgZm9saW8sIE1FVEEpOwo+PiAtICAgICAgICAgICAgICAgZjJmc19mb2xp b19wdXQoZm9saW8sIHRydWUpOwo+PiArICAgICAgIGlmICh1bmxpa2VseSghZjJmc19jYWNoZV90 ZXN0X3VwdG9kYXRlKGVudHJ5KSkpIHsKPj4gKyAgICAgICAgICAgICAgIGYyZnNfaGFuZGxlX3Bh Z2VfZWlvKHNiaSwgZW50cnktPmluZGV4LCBNRVRBKTsKPj4gKyAgICAgICAgICAgICAgIGYyZnNf cHV0X2NhY2hlKGVudHJ5LCB0cnVlKTsKPj4gICAgICAgICAgICAgICAgIHJldHVybiBFUlJfUFRS KC1FSU8pOwo+PiAgICAgICAgIH0KPj4gIG91dDoKPj4gLSAgICAgICByZXR1cm4gZm9saW87Cj4+ ICsgICAgICAgcmV0dXJuIGVudHJ5Owo+PiAgfQo+Pgo+PiAtc3RydWN0IGZvbGlvICpmMmZzX2dl dF9tZXRhX2ZvbGlvKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgcGdvZmZfdCBpbmRleCkKPj4g K3N0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZjJmc19nZXRfbWV0YV9jYWNoZShzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmksCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGdvZmZfdCBpbmRleCkKPj4gIHsKPj4gLSAgICAgICByZXR1cm4g X19nZXRfbWV0YV9mb2xpbyhzYmksIGluZGV4LCB0cnVlKTsKPj4gKyAgICAgICByZXR1cm4gX19n ZXRfbWV0YV9jYWNoZShzYmksIGluZGV4LCB0cnVlKTsKPj4gIH0KPj4KPj4gLXN0cnVjdCBmb2xp byAqZjJmc19nZXRfbWV0YV9mb2xpb19yZXRyeShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHBn b2ZmX3QgaW5kZXgpCj4+ICtzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmYyZnNfZ2V0X21ldGFf Y2FjaGVfcmV0cnkoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnb2ZmX3QgaW5kZXgpCj4+ ICB7Cj4+IC0gICAgICAgc3RydWN0IGZvbGlvICpmb2xpbzsKPj4gKyAgICAgICBzdHJ1Y3QgZjJm c19jYWNoZWRfYmxvY2sgKmVudHJ5Owo+PiAgICAgICAgIGludCBjb3VudCA9IDA7Cj4+Cj4+ICBy ZXRyeToKPj4gLSAgICAgICBmb2xpbyA9IF9fZ2V0X21ldGFfZm9saW8oc2JpLCBpbmRleCwgdHJ1 ZSk7Cj4+IC0gICAgICAgaWYgKElTX0VSUihmb2xpbykpIHsKPj4gLSAgICAgICAgICAgICAgIGlm IChQVFJfRVJSKGZvbGlvKSA9PSAtRUlPICYmCj4+ICsgICAgICAgZW50cnkgPSBfX2dldF9tZXRh X2NhY2hlKHNiaSwgaW5kZXgsIHRydWUpOwo+PiArICAgICAgIGlmIChJU19FUlIoZW50cnkpKSB7 Cj4+ICsgICAgICAgICAgICAgICBpZiAoUFRSX0VSUihlbnRyeSkgPT0gLUVJTyAmJgo+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrY291bnQgPD0gREVGQVVMVF9SRVRSWV9JT19D T1VOVCkKPj4gICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXRyeTsKPj4gICAgICAgICAg ICAgICAgIGYyZnNfc3RvcF9jaGVja3BvaW50KHNiaSwgZmFsc2UsIFNUT1BfQ1BfUkVBU09OX01F VEFfUEFHRSk7Cj4+ICAgICAgICAgfQo+PiAtICAgICAgIHJldHVybiBmb2xpbzsKPj4gKyAgICAg ICByZXR1cm4gZW50cnk7Cj4+ICB9Cj4+Cj4+ICAvKiBmb3IgUE9SIG9ubHkgKi8KPj4gLXN0cnVj dCBmb2xpbyAqZjJmc19nZXRfdG1wX2ZvbGlvKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgcGdv ZmZfdCBpbmRleCkKPj4gK3N0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZjJmc19nZXRfdG1wX2Nh Y2hlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ29mZl90IGluZGV4KQo+PiAgewo+PiAt ICAgICAgIHJldHVybiBfX2dldF9tZXRhX2ZvbGlvKHNiaSwgaW5kZXgsIGZhbHNlKTsKPj4gKyAg ICAgICByZXR1cm4gX19nZXRfbWV0YV9jYWNoZShzYmksIGluZGV4LCBmYWxzZSk7Cj4+ICB9Cj4+ Cj4+ICBzdGF0aWMgYm9vbCBfX2lzX2JpdG1hcF92YWxpZChzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmksIGJsb2NrX3QgYmxrYWRkciwKPj4gQEAgLTQ0Nyw5ICs0NTMsMTAgQEAgYm9vbCBmMmZzX2lz X3ZhbGlkX2Jsa2FkZHJfcmF3KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4gIC8qCj4+ICAg KiBSZWFkYWhlYWQgQ1AvTkFUL1NJVC9TU0EvUE9SIHBhZ2VzCj4+ICAgKi8KPj4gLWludCBmMmZz X3JhX21ldGFfcGFnZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IHN0YXJ0LCBp bnQgbnJwYWdlcywKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgdHlwZSwgYm9vbCBzeW5jKQo+PiAraW50IGYyZnNfcmFfbWV0YV9j YWNoZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IHN0YXJ0LAo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBucnBhZ2VzLCBpbnQgdHlwZSwgYm9vbCBzeW5j KQo+PiAgewo+PiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9ja19saXN0ICpjYWNoZSA9 IE1FVEFfQ0FDSEUoc2JpKTsKPj4gICAgICAgICBibG9ja190IGJsa25vID0gc3RhcnQ7Cj4+ICAg ICAgICAgc3RydWN0IGYyZnNfaW9faW5mbyBmaW8gPSB7Cj4+ICAgICAgICAgICAgICAgICAuc2Jp ID0gc2JpLAo+PiBAQCAtNDU5LDYgKzQ2Niw3IEBAIGludCBmMmZzX3JhX21ldGFfcGFnZXMoc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IHN0YXJ0LCBpbnQgbnJwYWdlcywKPj4gICAg ICAgICAgICAgICAgIC5lbmNyeXB0ZWRfcGFnZSA9IE5VTEwsCj4+ICAgICAgICAgICAgICAgICAu aW5fbGlzdCA9IDAsCj4+ICAgICAgICAgICAgICAgICAuaXNfcG9yID0gKHR5cGUgPT0gTUVUQV9Q T1IpID8gMSA6IDAsCj4+ICsgICAgICAgICAgICAgICAuaXNfY2FjaGUgPSAxLAo+PiAgICAgICAg IH07Cj4+ICAgICAgICAgc3RydWN0IGJsa19wbHVnIHBsdWc7Cj4+ICAgICAgICAgaW50IGVycjsK Pj4gQEAgLTQ2OCw3ICs0NzYsNyBAQCBpbnQgZjJmc19yYV9tZXRhX3BhZ2VzKHN0cnVjdCBmMmZz X3NiX2luZm8gKnNiaSwgYmxvY2tfdCBzdGFydCwgaW50IG5ycGFnZXMsCj4+Cj4+ICAgICAgICAg YmxrX3N0YXJ0X3BsdWcoJnBsdWcpOwo+PiAgICAgICAgIGZvciAoOyBucnBhZ2VzLS0gPiAwOyBi bGtubysrKSB7Cj4+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlvOwo+PiArICAg ICAgICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeTsKPj4KPj4gICAgICAg ICAgICAgICAgIGlmICghZjJmc19pc192YWxpZF9ibGthZGRyKHNiaSwgYmxrbm8sIHR5cGUpKQo+ PiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKPj4gQEAgLTQ5NSw2MiArNTAzLDU4 IEBAIGludCBmMmZzX3JhX21ldGFfcGFnZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9j a190IHN0YXJ0LCBpbnQgbnJwYWdlcywKPj4gICAgICAgICAgICAgICAgICAgICAgICAgZmlvLm5l d19ibGthZGRyID0gYmxrbm87Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+PiAg ICAgICAgICAgICAgICAgZGVmYXVsdDoKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgQlVHKCk7 Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfYnVnX29uKHNiaSwgMSk7Cj4+ICAgICAg ICAgICAgICAgICB9Cj4+Cj4+IC0gICAgICAgICAgICAgICBmb2xpbyA9IGYyZnNfZ3JhYl9jYWNo ZV9mb2xpbyhNRVRBX01BUFBJTkcoc2JpKSwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZmlvLm5ld19ibGthZGRyLCBmYWxzZSk7Cj4+IC0gICAgICAg ICAgICAgICBpZiAoSVNfRVJSKGZvbGlvKSkKPj4gKyAgICAgICAgICAgICAgIGVudHJ5ID0gZjJm c19ncmFiX2NhY2hlKGNhY2hlLCBmaW8ubmV3X2Jsa2FkZHIsCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEYyRlNfQ0FDSEVfTE9DS19DUkVBVEUpOwo+ PiArICAgICAgICAgICAgICAgaWYgKElTX0VSUihlbnRyeSkpCj4+ICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnRpbnVlOwo+PiAtICAgICAgICAgICAgICAgaWYgKGZvbGlvX3Rlc3RfdXB0b2Rh dGUoZm9saW8pKSB7Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGZv bGlvLCB0cnVlKTsKPj4gKyAgICAgICAgICAgICAgIGlmIChmMmZzX2NhY2hlX3Rlc3RfdXB0b2Rh dGUoZW50cnkpKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGVu dHJ5LCB0cnVlKTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4+ICAgICAg ICAgICAgICAgICB9Cj4+Cj4+IC0gICAgICAgICAgICAgICBmaW8uZm9saW8gPSBmb2xpbzsKPj4g LSAgICAgICAgICAgICAgIGVyciA9IGYyZnNfc3VibWl0X3BhZ2VfYmlvKCZmaW8pOwo+PiAtICAg ICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoZm9saW8sIGVyciA/IHRydWUgOiBmYWxzZSk7Cj4+ ICsgICAgICAgICAgICAgICBmaW8uY2FjaGVfZW50cnkgPSBlbnRyeTsKPj4gKyAgICAgICAgICAg ICAgIGVyciA9IGYyZnNfc3VibWl0X2NhY2hlX3JlYWQoJmZpbyk7Cj4+ICsgICAgICAgICAgICAg ICBmMmZzX3B1dF9jYWNoZShlbnRyeSwgZXJyID8gdHJ1ZSA6IGZhbHNlKTsKPj4KPj4gICAgICAg ICAgICAgICAgIGlmICghZXJyKQo+PiAgICAgICAgICAgICAgICAgICAgICAgICBmMmZzX3VwZGF0 ZV9pb3N0YXQoc2JpLCBOVUxMLCBGU19NRVRBX1JFQURfSU8sCj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjJGU19CTEtTSVpFKTsKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz YmktPmJsb2Nrc2l6ZSk7Cj4+ICAgICAgICAgfQo+PiAgb3V0Ogo+PiAgICAgICAgIGJsa19maW5p c2hfcGx1ZygmcGx1Zyk7Cj4+ICAgICAgICAgcmV0dXJuIGJsa25vIC0gc3RhcnQ7Cj4+ICB9Cj4+ Cj4+IC12b2lkIGYyZnNfcmFfbWV0YV9wYWdlc19jb25kKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwgcGdvZmZfdCBpbmRleCwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmFfYmxvY2tzKQo+PiArdm9pZCBmMmZz X3JhX21ldGFfY2FjaGVzX2NvbmQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBwZ29mZl90IGlu ZGV4LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgcmFfYmxvY2tzKQo+PiAgewo+PiAtICAgICAgIHN0cnVjdCBmb2xpbyAqZm9s aW87Cj4+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeTsKPj4gICAgICAg ICBib29sIHJlYWRhaGVhZCA9IGZhbHNlOwo+Pgo+PiAgICAgICAgIGlmIChyYV9ibG9ja3MgPT0g UkVDT1ZFUllfTUlOX1JBX0JMT0NLUykKPj4gICAgICAgICAgICAgICAgIHJldHVybjsKPj4KPj4g LSAgICAgICBmb2xpbyA9IGZpbGVtYXBfZ2V0X2ZvbGlvKE1FVEFfTUFQUElORyhzYmkpLCBpbmRl eCk7Cj4+IC0gICAgICAgaWYgKElTX0VSUihmb2xpbykgfHwgIWZvbGlvX3Rlc3RfdXB0b2RhdGUo Zm9saW8pKQo+PiArICAgICAgIGVudHJ5ID0gZjJmc19maW5kX2NhY2hlKE1FVEFfQ0FDSEUoc2Jp KSwgaW5kZXgpOwo+PiArICAgICAgIGlmIChJU19FUlIoZW50cnkpIHx8ICFmMmZzX2NhY2hlX3Rl c3RfdXB0b2RhdGUoZW50cnkpKQo+PiAgICAgICAgICAgICAgICAgcmVhZGFoZWFkID0gdHJ1ZTsK Pj4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xpbywgZmFsc2UpOwo+PiArICAgICAgIGYyZnNf cHV0X2NhY2hlKGVudHJ5LCBmYWxzZSk7Cj4+Cj4+ICAgICAgICAgaWYgKHJlYWRhaGVhZCkKPj4g LSAgICAgICAgICAgICAgIGYyZnNfcmFfbWV0YV9wYWdlcyhzYmksIGluZGV4LCByYV9ibG9ja3Ms IE1FVEFfUE9SLCB0cnVlKTsKPj4gKyAgICAgICAgICAgICAgIGYyZnNfcmFfbWV0YV9jYWNoZXMo c2JpLCBpbmRleCwgcmFfYmxvY2tzLCBNRVRBX1BPUiwgdHJ1ZSk7Cj4+ICB9Cj4+Cj4+IC1zdGF0 aWMgYm9vbCBfX2YyZnNfd3JpdGVfbWV0YV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLAo+PiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAq d2JjLAo+PiArc3RhdGljIGJvb2wgX19mMmZzX3dyaXRlX21ldGFfY2FjaGUoc3RydWN0IGYyZnNf Y2FjaGVkX2Jsb2NrICplbnRyeSwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bnVtIGlvc3RhdF90eXBlIGlvX3R5cGUpCj4+ICB7Cj4+IC0gICAgICAgc3RydWN0IGYyZnNfc2Jf aW5mbyAqc2JpID0gRjJGU19GX1NCKGZvbGlvKTsKPj4gLQo+PiAtICAgICAgIHRyYWNlX2YyZnNf d3JpdGVwYWdlKGZvbGlvLCBNRVRBKTsKPj4gKyAgICAgICBzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmkgPSBlbnRyeS0+Y2FjaGUtPnNiaTsKPj4KPj4gICAgICAgICBpZiAodW5saWtlbHkoZjJmc19j cF9lcnJvcihzYmkpKSkgewo+PiAgICAgICAgICAgICAgICAgaWYgKGlzX3NiaV9mbGFnX3NldChz YmksIFNCSV9JU19DTE9TRSkpIHsKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgZm9saW9fY2xl YXJfdXB0b2RhdGUoZm9saW8pOwo+PiAtICAgICAgICAgICAgICAgICAgICAgICBkZWNfcGFnZV9j b3VudChzYmksIEYyRlNfRElSVFlfTUVUQSk7Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGZv bGlvX3VubG9jayhmb2xpbyk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZm9yY2Vf Y2xlYXJfY2FjaGVfZGlydHkoZW50cnkpOwo+PiArICAgICAgICAgICAgICAgICAgICAgICBmMmZz X3VubG9ja19jYWNoZShlbnRyeSk7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0 cnVlOwo+PiAgICAgICAgICAgICAgICAgfQo+PiAgICAgICAgICAgICAgICAgZ290byByZWRpcnR5 X291dDsKPj4gQEAgLTU1OCwxMCArNTYyLDEwIEBAIHN0YXRpYyBib29sIF9fZjJmc193cml0ZV9t ZXRhX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sCj4+ICAgICAgICAgaWYgKHVubGlrZWx5KGlz X3NiaV9mbGFnX3NldChzYmksIFNCSV9QT1JfRE9JTkcpKSkKPj4gICAgICAgICAgICAgICAgIGdv dG8gcmVkaXJ0eV9vdXQ7Cj4+Cj4+IC0gICAgICAgZjJmc19kb193cml0ZV9tZXRhX3BhZ2Uoc2Jp LCBmb2xpbywgaW9fdHlwZSk7Cj4+ICsgICAgICAgZjJmc19kb193cml0ZV9tZXRhX2NhY2hlKHNi aSwgZW50cnksIGlvX3R5cGUpOwo+PiAgICAgICAgIGRlY19wYWdlX2NvdW50KHNiaSwgRjJGU19E SVJUWV9NRVRBKTsKPj4KPj4gLSAgICAgICBmb2xpb191bmxvY2soZm9saW8pOwo+PiArICAgICAg IGYyZnNfdW5sb2NrX2NhY2hlKGVudHJ5KTsKPj4KPj4gICAgICAgICBpZiAodW5saWtlbHkoZjJm c19jcF9lcnJvcihzYmkpKSkKPj4gICAgICAgICAgICAgICAgIGYyZnNfc3VibWl0X21lcmdlZF93 cml0ZShzYmksIE1FVEEpOwo+PiBAQCAtNTY5LDEwMSArNTczLDg5IEBAIHN0YXRpYyBib29sIF9f ZjJmc193cml0ZV9tZXRhX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sCj4+ICAgICAgICAgcmV0 dXJuIHRydWU7Cj4+Cj4+ICByZWRpcnR5X291dDoKPj4gLSAgICAgICBmb2xpb19yZWRpcnR5X2Zv cl93cml0ZXBhZ2Uod2JjLCBmb2xpbyk7Cj4+ICsgICAgICAgZjJmc19jYWNoZV9zZXRfZGlydHko ZW50cnkpOwo+PiAgICAgICAgIHJldHVybiBmYWxzZTsKPj4gIH0KPj4KPj4gLXN0YXRpYyBpbnQg ZjJmc193cml0ZV9tZXRhX3BhZ2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAo+PiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAq d2JjKQo+PiArdm9pZCBmMmZzX3dyaXRlX21ldGFfY2FjaGVzKHN0cnVjdCBmMmZzX3NiX2luZm8g KnNiaSkKPj4gIHsKPj4gLSAgICAgICBzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkgPSBGMkZTX01f U0IobWFwcGluZyk7Cj4+ICAgICAgICAgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0IGxjOwo+PiAt ICAgICAgIGxvbmcgZGlmZiwgd3JpdHRlbjsKPj4gKyAgICAgICBsb25nIG5yX3RvX3dyaXRlID0g TE9OR19NQVg7Cj4+Cj4+ICAgICAgICAgaWYgKHVubGlrZWx5KGlzX3NiaV9mbGFnX3NldChzYmks IFNCSV9QT1JfRE9JTkcpKSkKPj4gLSAgICAgICAgICAgICAgIGdvdG8gc2tpcF93cml0ZTsKPj4g KyAgICAgICAgICAgICAgIHJldHVybjsKPj4KPj4gLSAgICAgICAvKiBjb2xsZWN0IGEgbnVtYmVy IG9mIGRpcnR5IG1ldGEgcGFnZXMgYW5kIHdyaXRlIHRvZ2V0aGVyICovCj4+IC0gICAgICAgaWYg KHdiYy0+c3luY19tb2RlICE9IFdCX1NZTkNfQUxMICYmCj4+IC0gICAgICAgICAgICAgICAgICAg ICAgIGdldF9wYWdlcyhzYmksIEYyRlNfRElSVFlfTUVUQSkgPAo+PiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbnJfcGFnZXNfdG9fc2tpcChzYmksIE1FVEEpKQo+PiAt ICAgICAgICAgICAgICAgZ290byBza2lwX3dyaXRlOwo+PiArICAgICAgIC8qIGNvbGxlY3QgYSBu dW1iZXIgb2YgZGlydHkgbWV0YSBjYWNoZXMgYW5kIHdyaXRlIHRvZ2V0aGVyICovCj4+ICsgICAg ICAgaWYgKGdldF9wYWdlcyhzYmksIEYyRlNfRElSVFlfTUVUQSkgPAo+PiArICAgICAgICAgICAg ICAgICAgICAgICBucl9wYWdlc190b19za2lwKHNiaSwgTUVUQSkpCj4+ICsgICAgICAgICAgICAg ICByZXR1cm47Cj4+Cj4+IC0gICAgICAgLyogaWYgbG9ja2VkIGZhaWxlZCwgY3Agd2lsbCBmbHVz aCBkaXJ0eSBwYWdlcyBpbnN0ZWFkICovCj4+ICsgICAgICAgLyogaWYgbG9ja2VkIGZhaWxlZCwg Y3Agd2lsbCBmbHVzaCBkaXJ0eSBjYWNoZXMgaW5zdGVhZCAqLwo+PiAgICAgICAgIGlmICghZjJm c19kb3duX3dyaXRlX3RyeWxvY2tfdHJhY2UoJnNiaS0+Y3BfZ2xvYmFsX3NlbSwgJmxjKSkKPj4g LSAgICAgICAgICAgICAgIGdvdG8gc2tpcF93cml0ZTsKPj4gKyAgICAgICAgICAgICAgIHJldHVy bjsKPj4KPj4gLSAgICAgICB0cmFjZV9mMmZzX3dyaXRlcGFnZXMobWFwcGluZy0+aG9zdCwgd2Jj LCBNRVRBKTsKPj4gLSAgICAgICBkaWZmID0gbnJfcGFnZXNfdG9fd3JpdGUoc2JpLCBNRVRBLCB3 YmMpOwo+PiAtICAgICAgIHdyaXR0ZW4gPSBmMmZzX3N5bmNfbWV0YV9wYWdlcyhzYmksIHdiYy0+ bnJfdG9fd3JpdGUsIEZTX01FVEFfSU8pOwo+PiArICAgICAgIG5yX3RvX3dyaXRlID0gYWRqdXN0 X2ZsdXNoX2NhY2hlX251bWJlcihzYmksIE1FVEEpOwo+PiArICAgICAgIGYyZnNfc3luY19tZXRh X2NhY2hlcyhzYmksIG5yX3RvX3dyaXRlLCBmYWxzZSwgRlNfTUVUQV9JTyk7Cj4+ICAgICAgICAg ZjJmc191cF93cml0ZV90cmFjZSgmc2JpLT5jcF9nbG9iYWxfc2VtLCAmbGMpOwo+PiAtICAgICAg IHdiYy0+bnJfdG9fd3JpdGUgPSBtYXgoKGxvbmcpMCwgd2JjLT5ucl90b193cml0ZSAtIHdyaXR0 ZW4gLSBkaWZmKTsKPj4gLSAgICAgICByZXR1cm4gMDsKPj4gLQo+PiAtc2tpcF93cml0ZToKPj4g LSAgICAgICB3YmMtPnBhZ2VzX3NraXBwZWQgKz0gZ2V0X3BhZ2VzKHNiaSwgRjJGU19ESVJUWV9N RVRBKTsKPj4gLSAgICAgICB0cmFjZV9mMmZzX3dyaXRlcGFnZXMobWFwcGluZy0+aG9zdCwgd2Jj LCBNRVRBKTsKPj4gLSAgICAgICByZXR1cm4gMDsKPj4gIH0KPj4KPj4gLWxvbmcgZjJmc19zeW5j X21ldGFfcGFnZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBsb25nIG5yX3RvX3dyaXRlLAo+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaW9zdGF0X3R5cGUgaW9fdHlw ZSkKPj4gK2xvbmcgZjJmc19zeW5jX21ldGFfY2FjaGVzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwgbG9uZyBucl90b193cml0ZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi b29sIHN5bmMsIGVudW0gaW9zdGF0X3R5cGUgaW9fdHlwZSkKPj4gIHsKPj4gLSAgICAgICBzdHJ1 Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IE1FVEFfTUFQUElORyhzYmkpOwo+PiAgICAgICAg IHBnb2ZmX3QgaW5kZXggPSAwLCBwcmV2ID0gVUxPTkdfTUFYOwo+PiAtICAgICAgIHN0cnVjdCBm b2xpb19iYXRjaCBmYmF0Y2g7Cj4+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpl bnRyaWVzW0YyRlNfT05TVEFDS19DQUNIRVNdOwo+PiAgICAgICAgIGxvbmcgbndyaXR0ZW4gPSAw Owo+PiAtICAgICAgIGludCBucl9mb2xpb3M7Cj4+IC0gICAgICAgc3RydWN0IHdyaXRlYmFja19j b250cm9sIHdiYyA9IHt9Owo+PiArICAgICAgIGludCBucjsKPj4gICAgICAgICBzdHJ1Y3QgYmxr X3BsdWcgcGx1ZzsKPj4gLQo+PiAtICAgICAgIGZvbGlvX2JhdGNoX2luaXQoJmZiYXRjaCk7Cj4+ ICsgICAgICAgYm9vbCBiYWNrZ3JvdW5kID0gbnJfdG9fd3JpdGUgIT0gTE9OR19NQVg7Cj4+Cj4+ ICAgICAgICAgYmxrX3N0YXJ0X3BsdWcoJnBsdWcpOwo+Pgo+PiAtICAgICAgIHdoaWxlICgobnJf Zm9saW9zID0gZmlsZW1hcF9nZXRfZm9saW9zX3RhZyhtYXBwaW5nLCAmaW5kZXgsCj4+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGdvZmZfdCktMSwKPj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VDQUNIRV9UQUdfRElSVFksICZm YmF0Y2gpKSkgewo+PiArICAgICAgIHdoaWxlICgobnIgPSBmMmZzX2NhY2hlX2dhbmdfbG9va3Vw X3RhZyhNRVRBX0NBQ0hFKHNiaSksIGVudHJpZXMsCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICZpbmRleCwgRjJGU19PTlNUQUNLX0NBQ0hFUywgRjJGU19DQUNIRV9UQUdfRElSVFkpKSkgewo+ PiAgICAgICAgICAgICAgICAgaW50IGk7Cj4+Cj4+IC0gICAgICAgICAgICAgICBmb3IgKGkgPSAw OyBpIDwgbnJfZm9saW9zOyBpKyspIHsKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGZvbGlvICpmb2xpbyA9IGZiYXRjaC5mb2xpb3NbaV07Cj4+ICsgICAgICAgICAgICAgICBmb3Ig KGkgPSAwOyBpIDwgbnI7IGkrKykgewo+PiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5ID0gZW50cmllc1tpXTsKPj4gKwo+PiArICAgICAgICAg ICAgICAgICAgICAgICBpZiAoYmFja2dyb3VuZCAmJiB1bmxpa2VseShmcmVlemluZyhjdXJyZW50 KSkpIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2NhY2hlX2dhbmdf cmVsZWFzZShlbnRyaWVzLCBucik7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z290byBzdG9wOwo+PiArICAgICAgICAgICAgICAgICAgICAgICB9Cj4+Cj4+IC0gICAgICAgICAg ICAgICAgICAgICAgIGlmIChucl90b193cml0ZSAhPSBMT05HX01BWCAmJiBpICE9IDAgJiYKPj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGlvLT5pbmRleCAhPSBw cmV2ICsKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGlvX25y X3BhZ2VzKGZiYXRjaC5mb2xpb3NbaS0xXSkpIHsKPj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmb2xpb19iYXRjaF9yZWxlYXNlKCZmYmF0Y2gpOwo+PiArICAgICAgICAgICAgICAg ICAgICAgICBpZiAoYmFja2dyb3VuZCAmJiBpICE9IDAgJiYKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5pbmRleCAhPSBwcmV2ICsgMSkgewo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfY2FjaGVfZ2FuZ19yZWxlYXNlKGVudHJp ZXMsIG5yKTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHN0b3A7Cj4+ ICAgICAgICAgICAgICAgICAgICAgICAgIH0KPj4KPj4gLSAgICAgICAgICAgICAgICAgICAgICAg Zm9saW9fbG9jayhmb2xpbyk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfbG9ja19j YWNoZShlbnRyeSk7Cj4+Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmxpa2VseSgh aXNfbWV0YV9mb2xpbyhmb2xpbykpKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICh1 bmxpa2VseSghZjJmc19pc19tZXRhX2NhY2hlKGVudHJ5KSkpIHsKPj4gIGNvbnRpbnVlX3VubG9j azoKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xpb191bmxvY2soZm9saW8p Owo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfdW5sb2NrX2NhY2hlKGVu dHJ5KTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4gICAg ICAgICAgICAgICAgICAgICAgICAgfQo+PiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZv bGlvX3Rlc3RfZGlydHkoZm9saW8pKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICgh ZjJmc19jYWNoZV90ZXN0X2RpcnR5KGVudHJ5KSkgewo+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIHNvbWVvbmUgd3JvdGUgaXQgZm9yIHVzICovCj4+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ290byBjb250aW51ZV91bmxvY2s7Cj4+ICAgICAgICAgICAgICAg ICAgICAgICAgIH0KPj4KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgZjJmc19mb2xpb193YWl0 X3dyaXRlYmFjayhmb2xpbywgTUVUQSwgdHJ1ZSwgdHJ1ZSk7Cj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIGYyZnNfY2FjaGVfd2FpdF93cml0ZWJhY2soZW50cnkpOwo+Pgo+PiAtICAgICAgICAg ICAgICAgICAgICAgICBpZiAoIWZvbGlvX2NsZWFyX2RpcnR5X2Zvcl9pbyhmb2xpbykpCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIGlmICghZjJmc19jbGVhcl9jYWNoZV9kaXJ0eShlbnRyeSkp Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBjb250aW51ZV91bmxvY2s7 Cj4+Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGlmICghX19mMmZzX3dyaXRlX21ldGFfZm9s aW8oZm9saW8sICZ3YmMsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlvX3R5cGUpKSB7Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Zm9saW9fdW5sb2NrKGZvbGlvKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFfX2Yy ZnNfd3JpdGVfbWV0YV9jYWNoZShlbnRyeSwgaW9fdHlwZSkpIHsKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmMmZzX3VubG9ja19jYWNoZShlbnRyeSk7Cj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIH0K Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgbndyaXR0ZW4gKz0gZm9saW9fbnJfcGFnZXMoZm9s aW8pOwo+PiAtICAgICAgICAgICAgICAgICAgICAgICBwcmV2ID0gZm9saW8tPmluZGV4Owo+PiAr ICAgICAgICAgICAgICAgICAgICAgICBud3JpdHRlbisrOwo+PiArICAgICAgICAgICAgICAgICAg ICAgICBwcmV2ID0gZW50cnktPmluZGV4Owo+PiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo dW5saWtlbHkobndyaXR0ZW4gPj0gbnJfdG9fd3JpdGUpKQo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwo+PiAgICAgICAgICAgICAgICAgfQo+PiAtICAgICAgICAgICAg ICAgZm9saW9fYmF0Y2hfcmVsZWFzZSgmZmJhdGNoKTsKPj4gKyAgICAgICAgICAgICAgIGYyZnNf Y2FjaGVfZ2FuZ19yZWxlYXNlKGVudHJpZXMsIG5yKTsKPj4gICAgICAgICAgICAgICAgIGNvbmRf cmVzY2hlZCgpOwo+PiAgICAgICAgIH0KPj4gIHN0b3A6Cj4+IEBAIC02NzUsMjkgKzY2Nyw2IEBA IGxvbmcgZjJmc19zeW5jX21ldGFfcGFnZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBsb25n IG5yX3RvX3dyaXRlLAo+PiAgICAgICAgIHJldHVybiBud3JpdHRlbjsKPj4gIH0KPj4KPj4gLXN0 YXRpYyBib29sIGYyZnNfZGlydHlfbWV0YV9mb2xpbyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFw cGluZywKPj4gLSAgICAgICAgICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW8pCj4+IC17Cj4+IC0g ICAgICAgdHJhY2VfZjJmc19zZXRfcGFnZV9kaXJ0eShmb2xpbywgTUVUQSk7Cj4+IC0KPj4gLSAg ICAgICBpZiAoIWZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pKQo+PiAtICAgICAgICAgICAgICAg Zm9saW9fbWFya191cHRvZGF0ZShmb2xpbyk7Cj4+IC0gICAgICAgaWYgKGZpbGVtYXBfZGlydHlf Zm9saW8obWFwcGluZywgZm9saW8pKSB7Cj4+IC0gICAgICAgICAgICAgICBpbmNfcGFnZV9jb3Vu dChGMkZTX01fU0IobWFwcGluZyksIEYyRlNfRElSVFlfTUVUQSk7Cj4+IC0gICAgICAgICAgICAg ICBmb2xpb19zZXRfZjJmc19yZWZlcmVuY2UoZm9saW8pOwo+PiAtICAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7Cj4+IC0gICAgICAgfQo+PiAtICAgICAgIHJldHVybiBmYWxzZTsKPj4gLX0KPj4g LQo+PiAtY29uc3Qgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyBmMmZzX21ldGFfYW9w cyA9IHsKPj4gLSAgICAgICAud3JpdGVwYWdlcyAgICAgPSBmMmZzX3dyaXRlX21ldGFfcGFnZXMs Cj4+IC0gICAgICAgLmRpcnR5X2ZvbGlvICAgID0gZjJmc19kaXJ0eV9tZXRhX2ZvbGlvLAo+PiAt ICAgICAgIC5pbnZhbGlkYXRlX2ZvbGlvID0gZjJmc19pbnZhbGlkYXRlX2ZvbGlvLAo+PiAtICAg ICAgIC5yZWxlYXNlX2ZvbGlvICA9IGYyZnNfcmVsZWFzZV9mb2xpbywKPj4gLSAgICAgICAubWln cmF0ZV9mb2xpbyAgPSBmaWxlbWFwX21pZ3JhdGVfZm9saW8sCj4+IC19Owo+PiAtCj4+ICBzdGF0 aWMgdm9pZCBfX2FkZF9pbm9fZW50cnkoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBuaWRfdCBp bm8sCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBkZXZpZHgsIGludCB0eXBlKQo+PiAgewo+PiBAQCAtMTAzNywyMCArMTAwNiwy MCBAQCBpbnQgZjJmc19yZWNvdmVyX29ycGhhbl9pbm9kZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpKQo+PiAgICAgICAgIHN0YXJ0X2JsayA9IF9fc3RhcnRfY3BfYWRkcihzYmkpICsgMSArIF9f Y3BfcGF5bG9hZChzYmkpOwo+PiAgICAgICAgIG9ycGhhbl9ibG9ja3MgPSBfX3N0YXJ0X3N1bV9h ZGRyKHNiaSkgLSAxIC0gX19jcF9wYXlsb2FkKHNiaSk7Cj4+Cj4+IC0gICAgICAgZjJmc19yYV9t ZXRhX3BhZ2VzKHNiaSwgc3RhcnRfYmxrLCBvcnBoYW5fYmxvY2tzLCBNRVRBX0NQLCB0cnVlKTsK Pj4gKyAgICAgICBmMmZzX3JhX21ldGFfY2FjaGVzKHNiaSwgc3RhcnRfYmxrLCBvcnBoYW5fYmxv Y2tzLCBNRVRBX0NQLCB0cnVlKTsKPj4KPj4gICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb3JwaGFu X2Jsb2NrczsgaSsrKSB7Cj4+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlvOwo+ PiArICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeTsKPj4gICAg ICAgICAgICAgICAgIHN0cnVjdCBmMmZzX29ycGhhbl9ibG9jayAqb3JwaGFuX2JsazsKPj4gICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBlbnRyeV9jb3VudDsKPj4KPj4gLSAgICAgICAgICAg ICAgIGZvbGlvID0gZjJmc19nZXRfbWV0YV9mb2xpbyhzYmksIHN0YXJ0X2JsayArIGkpOwo+PiAt ICAgICAgICAgICAgICAgaWYgKElTX0VSUihmb2xpbykpIHsKPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgZXJyID0gUFRSX0VSUihmb2xpbyk7Cj4+ICsgICAgICAgICAgICAgICBlbnRyeSA9IGYy ZnNfZ2V0X21ldGFfY2FjaGUoc2JpLCBzdGFydF9ibGsgKyBpKTsKPj4gKyAgICAgICAgICAgICAg IGlmIChJU19FUlIoZW50cnkpKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFBU Ul9FUlIoZW50cnkpOwo+PiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKPj4gICAg ICAgICAgICAgICAgIH0KPj4KPj4gLSAgICAgICAgICAgICAgIG9ycGhhbl9ibGsgPSBmb2xpb19h ZGRyZXNzKGZvbGlvKTsKPj4gKyAgICAgICAgICAgICAgIG9ycGhhbl9ibGsgPSBjYWNoZV9hZGRy ZXNzKGVudHJ5KTsKPj4gICAgICAgICAgICAgICAgIGVudHJ5X2NvdW50ID0gbGUzMl90b19jcHUo b3JwaGFuX2Jsay0+ZW50cnlfY291bnQpOwo+PiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5X2Nv dW50ID4gRjJGU19PUlBIQU5TX1BFUl9CTE9DSykgewo+PiAgICAgICAgICAgICAgICAgICAgICAg ICBmMmZzX2VycihzYmksICJpbnZhbGlkIG9ycGhhbiBpbm9kZSBlbnRyeSBjb3VudCAldSIsCj4+ IEBAIC0xMDU4LDcgKzEwMjcsNyBAQCBpbnQgZjJmc19yZWNvdmVyX29ycGhhbl9pbm9kZXMoc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+PiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfc2Jp X2ZsYWcoc2JpLCBTQklfTkVFRF9GU0NLKTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgZjJm c19oYW5kbGVfZXJyb3Ioc2JpLCBFUlJPUl9JTkNPTlNJU1RFTlRfT1JQSEFOKTsKPj4gICAgICAg ICAgICAgICAgICAgICAgICAgZXJyID0gLUVGU0NPUlJVUFRFRDsKPj4gLSAgICAgICAgICAgICAg ICAgICAgICAgZjJmc19mb2xpb19wdXQoZm9saW8sIHRydWUpOwo+PiArICAgICAgICAgICAgICAg ICAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRyeSwgdHJ1ZSk7Cj4+ICAgICAgICAgICAgICAgICAg ICAgICAgIGdvdG8gb3V0Owo+PiAgICAgICAgICAgICAgICAgfQo+Pgo+PiBAQCAtMTA2NywxMSAr MTAzNiwxMSBAQCBpbnQgZjJmc19yZWNvdmVyX29ycGhhbl9pbm9kZXMoc3RydWN0IGYyZnNfc2Jf aW5mbyAqc2JpKQo+Pgo+PiAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSByZWNvdmVyX29y cGhhbl9pbm9kZShzYmksIGlubyk7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIp IHsKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xp bywgdHJ1ZSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19wdXRfY2Fj aGUoZW50cnksIHRydWUpOwo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g b3V0Owo+PiAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4+ICAgICAgICAgICAgICAgICB9Cj4+ IC0gICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xpbywgdHJ1ZSk7Cj4+ICsgICAgICAg ICAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRyeSwgdHJ1ZSk7Cj4+ICAgICAgICAgfQo+PiAgICAg ICAgIC8qIGNsZWFyIE9ycGhhbiBGbGFnICovCj4+ICAgICAgICAgY2xlYXJfY2twdF9mbGFncyhz YmksIENQX09SUEhBTl9QUkVTRU5UX0ZMQUcpOwo+PiBAQCAtMTA4OCw5ICsxMDU3LDkgQEAgc3Rh dGljIHZvaWQgd3JpdGVfb3JwaGFuX2lub2RlcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGJs b2NrX3Qgc3RhcnRfYmxrKQo+PiAgICAgICAgIHVuc2lnbmVkIGludCBuZW50cmllcyA9IDA7Cj4+ ICAgICAgICAgdW5zaWduZWQgc2hvcnQgaW5kZXggPSAxOwo+PiAgICAgICAgIHVuc2lnbmVkIHNo b3J0IG9ycGhhbl9ibG9ja3M7Cj4+IC0gICAgICAgc3RydWN0IGZvbGlvICpmb2xpbyA9IE5VTEw7 Cj4+ICAgICAgICAgc3RydWN0IGlub19lbnRyeSAqb3JwaGFuID0gTlVMTDsKPj4gICAgICAgICBz dHJ1Y3QgaW5vZGVfbWFuYWdlbWVudCAqaW0gPSAmc2JpLT5pbVtPUlBIQU5fSU5PXTsKPj4gKyAg ICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5ID0gTlVMTDsKPj4KPj4gICAgICAg ICBvcnBoYW5fYmxvY2tzID0gR0VUX09SUEhBTl9CTE9DS1MoaW0tPmlub19udW0pOwo+Pgo+PiBA QCAtMTEwMyw5ICsxMDcyLDkgQEAgc3RhdGljIHZvaWQgd3JpdGVfb3JwaGFuX2lub2RlcyhzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmksIGJsb2NrX3Qgc3RhcnRfYmxrKQo+Pgo+PiAgICAgICAgIC8q IGxvb3AgZm9yIGVhY2ggb3JwaGFuIGlub2RlIGVudHJ5IGFuZCB3cml0ZSB0aGVtIGluIGpvdXJu YWwgYmxvY2sgKi8KPj4gICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KG9ycGhhbiwgaGVhZCwg bGlzdCkgewo+PiAtICAgICAgICAgICAgICAgaWYgKCFmb2xpbykgewo+PiAtICAgICAgICAgICAg ICAgICAgICAgICBmb2xpbyA9IGYyZnNfZ3JhYl9tZXRhX2ZvbGlvKHNiaSwgc3RhcnRfYmxrKysp Owo+PiAtICAgICAgICAgICAgICAgICAgICAgICBvcnBoYW5fYmxrID0gZm9saW9fYWRkcmVzcyhm b2xpbyk7Cj4+ICsgICAgICAgICAgICAgICBpZiAoIWVudHJ5KSB7Cj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIGVudHJ5ID0gZjJmc19ncmFiX21ldGFfY2FjaGUoc2JpLCBzdGFydF9ibGsrKyk7 Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIG9ycGhhbl9ibGsgPSAoc3RydWN0IGYyZnNfb3Jw aGFuX2Jsb2NrICopY2FjaGVfYWRkcmVzcyhlbnRyeSk7Cj4+ICAgICAgICAgICAgICAgICAgICAg ICAgIG1lbXNldChvcnBoYW5fYmxrLCAwLCBzaXplb2YoKm9ycGhhbl9ibGspKTsKPj4gICAgICAg ICAgICAgICAgIH0KPj4KPj4gQEAgLTExMjAsMjAgKzEwODksMjAgQEAgc3RhdGljIHZvaWQgd3Jp dGVfb3JwaGFuX2lub2RlcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGJsb2NrX3Qgc3RhcnRf YmxrKQo+PiAgICAgICAgICAgICAgICAgICAgICAgICBvcnBoYW5fYmxrLT5ibGtfYWRkciA9IGNw dV90b19sZTE2KGluZGV4KTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgb3JwaGFuX2Jsay0+ YmxrX2NvdW50ID0gY3B1X3RvX2xlMTYob3JwaGFuX2Jsb2Nrcyk7Cj4+ICAgICAgICAgICAgICAg ICAgICAgICAgIG9ycGhhbl9ibGstPmVudHJ5X2NvdW50ID0gY3B1X3RvX2xlMzIobmVudHJpZXMp Owo+PiAtICAgICAgICAgICAgICAgICAgICAgICBmb2xpb19tYXJrX2RpcnR5KGZvbGlvKTsKPj4g LSAgICAgICAgICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoZm9saW8sIHRydWUpOwo+PiAr ICAgICAgICAgICAgICAgICAgICAgICBmMmZzX21hcmtfY2FjaGVfZGlydHkoZW50cnkpOwo+PiAr ICAgICAgICAgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRyeSwgdHJ1ZSk7Cj4+ICAg ICAgICAgICAgICAgICAgICAgICAgIGluZGV4Kys7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAg IG5lbnRyaWVzID0gMDsKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgZm9saW8gPSBOVUxMOwo+ PiArICAgICAgICAgICAgICAgICAgICAgICBlbnRyeSA9IE5VTEw7Cj4+ICAgICAgICAgICAgICAg ICB9Cj4+ICAgICAgICAgfQo+Pgo+PiAtICAgICAgIGlmIChmb2xpbykgewo+PiArICAgICAgIGlm IChlbnRyeSkgewo+PiAgICAgICAgICAgICAgICAgb3JwaGFuX2Jsay0+YmxrX2FkZHIgPSBjcHVf dG9fbGUxNihpbmRleCk7Cj4+ICAgICAgICAgICAgICAgICBvcnBoYW5fYmxrLT5ibGtfY291bnQg PSBjcHVfdG9fbGUxNihvcnBoYW5fYmxvY2tzKTsKPj4gICAgICAgICAgICAgICAgIG9ycGhhbl9i bGstPmVudHJ5X2NvdW50ID0gY3B1X3RvX2xlMzIobmVudHJpZXMpOwo+PiAtICAgICAgICAgICAg ICAgZm9saW9fbWFya19kaXJ0eShmb2xpbyk7Cj4+IC0gICAgICAgICAgICAgICBmMmZzX2ZvbGlv X3B1dChmb2xpbywgdHJ1ZSk7Cj4+ICsgICAgICAgICAgICAgICBmMmZzX21hcmtfY2FjaGVfZGly dHkoZW50cnkpOwo+PiArICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoZW50cnksIHRydWUp Owo+PiAgICAgICAgIH0KPj4gIH0KPj4KPj4gQEAgLTExNTIsMjkgKzExMjEsMjkgQEAgc3RhdGlj IF9fdTMyIGYyZnNfY2hlY2twb2ludF9jaGtzdW0oc3RydWN0IGYyZnNfY2hlY2twb2ludCAqY2tw dCkKPj4gIH0KPj4KPj4gIHN0YXRpYyBpbnQgZ2V0X2NoZWNrcG9pbnRfdmVyc2lvbihzdHJ1Y3Qg ZjJmc19zYl9pbmZvICpzYmksIGJsb2NrX3QgY3BfYWRkciwKPj4gLSAgICAgICAgICAgICAgIHN0 cnVjdCBmMmZzX2NoZWNrcG9pbnQgKipjcF9ibG9jaywgc3RydWN0IGZvbGlvICoqY3BfZm9saW8s Cj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jaGVja3BvaW50ICoqY3BfYmxvY2ssIHN0 cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqKmNwX2VudHJ5LAo+PiAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBsb25nICp2ZXJzaW9uKQo+PiAgewo+PiAgICAgICAgIHNpemVfdCBjcmNfb2Zm c2V0ID0gMDsKPj4gICAgICAgICBfX3UzMiBjcmM7Cj4+Cj4+IC0gICAgICAgKmNwX2ZvbGlvID0g ZjJmc19nZXRfbWV0YV9mb2xpbyhzYmksIGNwX2FkZHIpOwo+PiAtICAgICAgIGlmIChJU19FUlIo KmNwX2ZvbGlvKSkKPj4gLSAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKCpjcF9mb2xpbyk7 Cj4+ICsgICAgICAgKmNwX2VudHJ5ID0gZjJmc19nZXRfbWV0YV9jYWNoZShzYmksIGNwX2FkZHIp Owo+PiArICAgICAgIGlmIChJU19FUlIoKmNwX2VudHJ5KSkKPj4gKyAgICAgICAgICAgICAgIHJl dHVybiBQVFJfRVJSKCpjcF9lbnRyeSk7Cj4+Cj4+IC0gICAgICAgKmNwX2Jsb2NrID0gZm9saW9f YWRkcmVzcygqY3BfZm9saW8pOwo+PiArICAgICAgICpjcF9ibG9jayA9IChzdHJ1Y3QgZjJmc19j aGVja3BvaW50ICopY2FjaGVfYWRkcmVzcygqY3BfZW50cnkpOwo+Pgo+PiAgICAgICAgIGNyY19v ZmZzZXQgPSBsZTMyX3RvX2NwdSgoKmNwX2Jsb2NrKS0+Y2hlY2tzdW1fb2Zmc2V0KTsKPj4gICAg ICAgICBpZiAoY3JjX29mZnNldCA8IENQX01JTl9DSEtTVU1fT0ZGU0VUIHx8Cj4+ICAgICAgICAg ICAgICAgICAgICAgICAgIGNyY19vZmZzZXQgPiBDUF9DSEtTVU1fT0ZGU0VUKSB7Cj4+IC0gICAg ICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dCgqY3BfZm9saW8sIHRydWUpOwo+PiArICAgICAgICAg ICAgICAgZjJmc19wdXRfY2FjaGUoKmNwX2VudHJ5LCB0cnVlKTsKPj4gICAgICAgICAgICAgICAg IGYyZnNfd2FybihzYmksICJpbnZhbGlkIGNyY19vZmZzZXQ6ICV6dSIsIGNyY19vZmZzZXQpOwo+ PiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICAgICAgICAgfQo+Pgo+PiAgICAg ICAgIGNyYyA9IGYyZnNfY2hlY2twb2ludF9jaGtzdW0oKmNwX2Jsb2NrKTsKPj4gICAgICAgICBp ZiAoY3JjICE9IGN1cl9jcF9jcmMoKmNwX2Jsb2NrKSkgewo+PiAtICAgICAgICAgICAgICAgZjJm c19mb2xpb19wdXQoKmNwX2ZvbGlvLCB0cnVlKTsKPj4gKyAgICAgICAgICAgICAgIGYyZnNfcHV0 X2NhY2hlKCpjcF9lbnRyeSwgdHJ1ZSk7Cj4+ICAgICAgICAgICAgICAgICBmMmZzX3dhcm4oc2Jp LCAiaW52YWxpZCBjcmMgdmFsdWUiKTsKPj4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Owo+PiAgICAgICAgIH0KPj4gQEAgLTExODMsMTcgKzExNTIsMTcgQEAgc3RhdGljIGludCBnZXRf Y2hlY2twb2ludF92ZXJzaW9uKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBjcF9h ZGRyLAo+PiAgICAgICAgIHJldHVybiAwOwo+PiAgfQo+Pgo+PiAtc3RhdGljIHN0cnVjdCBmb2xp byAqdmFsaWRhdGVfY2hlY2twb2ludChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+ICtzdGF0 aWMgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICp2YWxpZGF0ZV9jaGVja3BvaW50KHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9j a190IGNwX2FkZHIsIHVuc2lnbmVkIGxvbmcgbG9uZyAqdmVyc2lvbikKPj4gIHsKPj4gLSAgICAg ICBzdHJ1Y3QgZm9saW8gKmNwX2ZvbGlvXzEgPSBOVUxMLCAqY3BfZm9saW9fMiA9IE5VTEw7Cj4+ ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpjcF9lbnRyeV8xID0gTlVMTCwgKmNw X2VudHJ5XzIgPSBOVUxMOwo+PiAgICAgICAgIHN0cnVjdCBmMmZzX2NoZWNrcG9pbnQgKmNwX2Js b2NrID0gTlVMTDsKPj4gICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgY3VyX3ZlcnNpb24gPSAw LCBwcmVfdmVyc2lvbiA9IDA7Cj4+ICAgICAgICAgdW5zaWduZWQgaW50IGNwX2Jsb2NrczsKPj4g ICAgICAgICBpbnQgZXJyOwo+Pgo+PiAgICAgICAgIGVyciA9IGdldF9jaGVja3BvaW50X3ZlcnNp b24oc2JpLCBjcF9hZGRyLCAmY3BfYmxvY2ssCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmY3BfZm9saW9fMSwgdmVyc2lvbik7Cj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmY3BfZW50cnlfMSwgdmVyc2lvbik7Cj4+ICAgICAgICAg aWYgKGVycikKPj4gICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+Pgo+PiBAQCAtMTIwOCwx OSArMTE3NywyMCBAQCBzdGF0aWMgc3RydWN0IGZvbGlvICp2YWxpZGF0ZV9jaGVja3BvaW50KHN0 cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4KPj4gICAgICAgICBjcF9hZGRyICs9IGNwX2Jsb2Nr cyAtIDE7Cj4+ICAgICAgICAgZXJyID0gZ2V0X2NoZWNrcG9pbnRfdmVyc2lvbihzYmksIGNwX2Fk ZHIsICZjcF9ibG9jaywKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZjcF9mb2xpb18yLCB2ZXJzaW9uKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZjcF9lbnRyeV8yLCB2ZXJzaW9uKTsKPj4gICAgICAgICBpZiAoZXJyKQo+PiAg ICAgICAgICAgICAgICAgZ290byBpbnZhbGlkX2NwOwo+PiAgICAgICAgIGN1cl92ZXJzaW9uID0g KnZlcnNpb247Cj4+Cj4+ICAgICAgICAgaWYgKGN1cl92ZXJzaW9uID09IHByZV92ZXJzaW9uKSB7 Cj4+ICAgICAgICAgICAgICAgICAqdmVyc2lvbiA9IGN1cl92ZXJzaW9uOwo+PiAtICAgICAgICAg ICAgICAgZjJmc19mb2xpb19wdXQoY3BfZm9saW9fMiwgdHJ1ZSk7Cj4+IC0gICAgICAgICAgICAg ICByZXR1cm4gY3BfZm9saW9fMTsKPj4gKyAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGNw X2VudHJ5XzIsIHRydWUpOwo+PiArICAgICAgICAgICAgICAgcmV0dXJuIGNwX2VudHJ5XzE7Cj4+ ICAgICAgICAgfQo+PiAtICAgICAgIGYyZnNfZm9saW9fcHV0KGNwX2ZvbGlvXzIsIHRydWUpOwo+ PiArICAgICAgIGYyZnNfcHV0X2NhY2hlKGNwX2VudHJ5XzIsIHRydWUpOwo+PiAgaW52YWxpZF9j cDoKPj4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChjcF9mb2xpb18xLCB0cnVlKTsKPj4gKyAgICAg ICBpZiAoY3BfZW50cnlfMSkKPj4gKyAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGNwX2Vu dHJ5XzEsIHRydWUpOwo+PiAgICAgICAgIHJldHVybiBOVUxMOwo+PiAgfQo+Pgo+PiBAQCAtMTIy OCw3ICsxMTk4LDcgQEAgaW50IGYyZnNfZ2V0X3ZhbGlkX2NoZWNrcG9pbnQoc3RydWN0IGYyZnNf c2JfaW5mbyAqc2JpKQo+PiAgewo+PiAgICAgICAgIHN0cnVjdCBmMmZzX2NoZWNrcG9pbnQgKmNw X2Jsb2NrOwo+PiAgICAgICAgIHN0cnVjdCBmMmZzX3N1cGVyX2Jsb2NrICpmc2IgPSBzYmktPnJh d19zdXBlcjsKPj4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKmNwMSwgKmNwMiwgKmN1cl9mb2xpbzsK Pj4gKyAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmNwMSA9IE5VTEwsICpjcDIgPSBO VUxMLCAqY3VyX2VudHJ5Owo+PiAgICAgICAgIHVuc2lnbmVkIGxvbmcgYmxrX3NpemUgPSBzYmkt PmJsb2Nrc2l6ZTsKPj4gICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgY3AxX3ZlcnNpb24gPSAw LCBjcDJfdmVyc2lvbiA9IDA7Cj4+ICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGNwX3N0YXJ0 X2Jsa19ubzsKPj4gQEAgLTEyNTUsMjIgKzEyMjUsMjIgQEAgaW50IGYyZnNfZ2V0X3ZhbGlkX2No ZWNrcG9pbnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+Pgo+PiAgICAgICAgIGlmIChjcDEg JiYgY3AyKSB7Cj4+ICAgICAgICAgICAgICAgICBpZiAodmVyX2FmdGVyKGNwMl92ZXJzaW9uLCBj cDFfdmVyc2lvbikpCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGN1cl9mb2xpbyA9IGNwMjsK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgY3VyX2VudHJ5ID0gY3AyOwo+PiAgICAgICAgICAg ICAgICAgZWxzZQo+PiAtICAgICAgICAgICAgICAgICAgICAgICBjdXJfZm9saW8gPSBjcDE7Cj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIGN1cl9lbnRyeSA9IGNwMTsKPj4gICAgICAgICB9IGVs c2UgaWYgKGNwMSkgewo+PiAtICAgICAgICAgICAgICAgY3VyX2ZvbGlvID0gY3AxOwo+PiArICAg ICAgICAgICAgICAgY3VyX2VudHJ5ID0gY3AxOwo+PiAgICAgICAgIH0gZWxzZSBpZiAoY3AyKSB7 Cj4+IC0gICAgICAgICAgICAgICBjdXJfZm9saW8gPSBjcDI7Cj4+ICsgICAgICAgICAgICAgICBj dXJfZW50cnkgPSBjcDI7Cj4+ICAgICAgICAgfSBlbHNlIHsKPj4gICAgICAgICAgICAgICAgIGVy ciA9IC1FRlNDT1JSVVBURUQ7Cj4+ICAgICAgICAgICAgICAgICBnb3RvIGZhaWxfbm9fY3A7Cj4+ ICAgICAgICAgfQo+Pgo+PiAtICAgICAgIGNwX2Jsb2NrID0gZm9saW9fYWRkcmVzcyhjdXJfZm9s aW8pOwo+PiArICAgICAgIGNwX2Jsb2NrID0gKHN0cnVjdCBmMmZzX2NoZWNrcG9pbnQgKiljYWNo ZV9hZGRyZXNzKGN1cl9lbnRyeSk7Cj4+ICAgICAgICAgbWVtY3B5KHNiaS0+Y2twdCwgY3BfYmxv Y2ssIGJsa19zaXplKTsKPj4KPj4gLSAgICAgICBpZiAoY3VyX2ZvbGlvID09IGNwMSkKPj4gKyAg ICAgICBpZiAoY3VyX2VudHJ5ID09IGNwMSkKPj4gICAgICAgICAgICAgICAgIHNiaS0+Y3VyX2Nw X3BhY2sgPSAxOwo+PiAgICAgICAgIGVsc2UKPj4gICAgICAgICAgICAgICAgIHNiaS0+Y3VyX2Nw X3BhY2sgPSAyOwo+PiBAQCAtMTI4NSwzMCArMTI1NSwzMSBAQCBpbnQgZjJmc19nZXRfdmFsaWRf Y2hlY2twb2ludChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4+ICAgICAgICAgICAgICAgICBn b3RvIGRvbmU7Cj4+Cj4+ICAgICAgICAgY3BfYmxrX25vID0gbGUzMl90b19jcHUoZnNiLT5jcF9i bGthZGRyKTsKPj4gLSAgICAgICBpZiAoY3VyX2ZvbGlvID09IGNwMikKPj4gKyAgICAgICBpZiAo Y3VyX2VudHJ5ID09IGNwMikKPj4gICAgICAgICAgICAgICAgIGNwX2Jsa19ubyArPSBCSVQobGUz Ml90b19jcHUoZnNiLT5sb2dfYmxvY2tzX3Blcl9zZWcpKTsKPj4KPj4gICAgICAgICBmb3IgKGkg PSAxOyBpIDwgY3BfYmxrczsgaSsrKSB7Cj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19j YWNoZWRfYmxvY2sgKmN1cl9lbnRyeV9wYXlsb2FkOwo+PiAgICAgICAgICAgICAgICAgdm9pZCAq c2l0X2JpdG1hcF9wdHI7Cj4+ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpja3B0ID0g KHVuc2lnbmVkIGNoYXIgKilzYmktPmNrcHQ7Cj4+Cj4+IC0gICAgICAgICAgICAgICBjdXJfZm9s aW8gPSBmMmZzX2dldF9tZXRhX2ZvbGlvKHNiaSwgY3BfYmxrX25vICsgaSk7Cj4+IC0gICAgICAg ICAgICAgICBpZiAoSVNfRVJSKGN1cl9mb2xpbykpIHsKPj4gLSAgICAgICAgICAgICAgICAgICAg ICAgZXJyID0gUFRSX0VSUihjdXJfZm9saW8pOwo+PiArICAgICAgICAgICAgICAgY3VyX2VudHJ5 X3BheWxvYWQgPSBmMmZzX2dldF9tZXRhX2NhY2hlKHNiaSwgY3BfYmxrX25vICsgaSk7Cj4+ICsg ICAgICAgICAgICAgICBpZiAoSVNfRVJSKGN1cl9lbnRyeV9wYXlsb2FkKSkgewo+PiArICAgICAg ICAgICAgICAgICAgICAgICBlcnIgPSBQVFJfRVJSKGN1cl9lbnRyeV9wYXlsb2FkKTsKPj4gICAg ICAgICAgICAgICAgICAgICAgICAgZ290byBmcmVlX2ZhaWxfbm9fY3A7Cj4+ICAgICAgICAgICAg ICAgICB9Cj4+IC0gICAgICAgICAgICAgICBzaXRfYml0bWFwX3B0ciA9IGZvbGlvX2FkZHJlc3Mo Y3VyX2ZvbGlvKTsKPj4gKyAgICAgICAgICAgICAgIHNpdF9iaXRtYXBfcHRyID0gY2FjaGVfYWRk cmVzcyhjdXJfZW50cnlfcGF5bG9hZCk7Cj4+ICAgICAgICAgICAgICAgICBtZW1jcHkoY2twdCAr IGkgKiBibGtfc2l6ZSwgc2l0X2JpdG1hcF9wdHIsIGJsa19zaXplKTsKPj4gLSAgICAgICAgICAg ICAgIGYyZnNfZm9saW9fcHV0KGN1cl9mb2xpbywgdHJ1ZSk7Cj4+ICsgICAgICAgICAgICAgICBm MmZzX3B1dF9jYWNoZShjdXJfZW50cnlfcGF5bG9hZCwgdHJ1ZSk7Cj4+ICAgICAgICAgfQo+PiAg ZG9uZToKPj4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChjcDEsIHRydWUpOwo+PiAtICAgICAgIGYy ZnNfZm9saW9fcHV0KGNwMiwgdHJ1ZSk7Cj4+ICsgICAgICAgZjJmc19wdXRfY2FjaGUoY3AxLCB0 cnVlKTsKPj4gKyAgICAgICBmMmZzX3B1dF9jYWNoZShjcDIsIHRydWUpOwo+PiAgICAgICAgIHJl dHVybiAwOwo+Pgo+PiAgZnJlZV9mYWlsX25vX2NwOgo+PiAtICAgICAgIGYyZnNfZm9saW9fcHV0 KGNwMSwgdHJ1ZSk7Cj4+IC0gICAgICAgZjJmc19mb2xpb19wdXQoY3AyLCB0cnVlKTsKPj4gKyAg ICAgICBmMmZzX3B1dF9jYWNoZShjcDEsIHRydWUpOwo+PiArICAgICAgIGYyZnNfcHV0X2NhY2hl KGNwMiwgdHJ1ZSk7Cj4+ICBmYWlsX25vX2NwOgo+PiAgICAgICAgIGt2ZnJlZShzYmktPmNrcHQp Owo+PiAgICAgICAgIHJldHVybiBlcnI7Cj4+IEBAIC0xNjIxLDcgKzE1OTIsNyBAQCB2b2lkIGYy ZnNfd2FpdF9vbl9hbGxfcGFnZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBpbnQgdHlwZSkK Pj4gICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+Cj4+ICAgICAgICAgICAgICAgICBp ZiAodHlwZSA9PSBGMkZTX0RJUlRZX01FVEEpCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGYy ZnNfc3luY19tZXRhX3BhZ2VzKHNiaSwgTE9OR19NQVgsIEZTX0NQX01FVEFfSU8pOwo+PiArICAg ICAgICAgICAgICAgICAgICAgICBmMmZzX3N5bmNfbWV0YV9jYWNoZXMoc2JpLCBMT05HX01BWCwg dHJ1ZSwgRlNfTUVUQV9JTyk7Cj4+ICAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IEYy RlNfV0JfQ1BfREFUQSkKPj4gICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19zdWJtaXRfbWVy Z2VkX3dyaXRlKHNiaSwgREFUQSk7Cj4+Cj4+IEBAIC0xNzAwLDMxICsxNjcxLDI0IEBAIHN0YXRp YyB2b2lkIHVwZGF0ZV9ja3B0X2ZsYWdzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0 IGNwX2NvbnRyb2wgKmNwYykKPj4gIHN0YXRpYyB2b2lkIGNvbW1pdF9jaGVja3BvaW50KHN0cnVj dCBmMmZzX3NiX2luZm8gKnNiaSwKPj4gICAgICAgICB2b2lkICpzcmMsIGJsb2NrX3QgYmxrX2Fk ZHIpCj4+ICB7Cj4+IC0gICAgICAgc3RydWN0IHdyaXRlYmFja19jb250cm9sIHdiYyA9IHt9Owo+ PiAtCj4+IC0gICAgICAgLyoKPj4gLSAgICAgICAgKiBmaWxlbWFwX2dldF9mb2xpb3NfdGFnIGFu ZCBmb2xpb19sb2NrIGFnYWluIHdpbGwgdGFrZQo+PiAtICAgICAgICAqIHNvbWUgZXh0cmEgdGlt ZS4gVGhlcmVmb3JlLCBmMmZzX3VwZGF0ZV9tZXRhX3BhZ2VzIGFuZAo+PiAtICAgICAgICAqIGYy ZnNfc3luY19tZXRhX3BhZ2VzIGFyZSBjb21iaW5lZCBpbiB0aGlzIGZ1bmN0aW9uLgo+PiAtICAg ICAgICAqLwo+PiAtICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW8gPSBmMmZzX2dyYWJfbWV0YV9m b2xpbyhzYmksIGJsa19hZGRyKTsKPj4gKyAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sg KmVudHJ5ID0gZjJmc19ncmFiX21ldGFfY2FjaGUoc2JpLCBibGtfYWRkcik7Cj4+Cj4+IC0gICAg ICAgbWVtY3B5KGZvbGlvX2FkZHJlc3MoZm9saW8pLCBzcmMsIFBBR0VfU0laRSk7Cj4+ICsgICAg ICAgbWVtY3B5KGNhY2hlX2FkZHJlc3MoZW50cnkpLCBzcmMsIEYyRlNfQkxLU0laRSk7Cj4+Cj4+ IC0gICAgICAgZm9saW9fbWFya19kaXJ0eShmb2xpbyk7Cj4+IC0gICAgICAgaWYgKHVubGlrZWx5 KCFmb2xpb19jbGVhcl9kaXJ0eV9mb3JfaW8oZm9saW8pKSkKPj4gKyAgICAgICBmMmZzX21hcmtf Y2FjaGVfZGlydHkoZW50cnkpOwo+PiArICAgICAgIGlmICh1bmxpa2VseSghZjJmc19jbGVhcl9j YWNoZV9kaXJ0eShlbnRyeSkpKQo+PiAgICAgICAgICAgICAgICAgZjJmc19idWdfb24oc2JpLCAx KTsKPj4KPj4gICAgICAgICAvKiB3cml0ZW91dCBjcCBwYWNrIDIgcGFnZSAqLwo+PiAtICAgICAg IGlmICh1bmxpa2VseSghX19mMmZzX3dyaXRlX21ldGFfZm9saW8oZm9saW8sICZ3YmMsIEZTX0NQ X01FVEFfSU8pKSkgewo+PiArICAgICAgIGlmICh1bmxpa2VseSghX19mMmZzX3dyaXRlX21ldGFf Y2FjaGUoZW50cnksIEZTX0NQX01FVEFfSU8pKSkgewo+PiAgICAgICAgICAgICAgICAgaWYgKGYy ZnNfY3BfZXJyb3Ioc2JpKSkgewo+PiAtICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2ZvbGlv X3B1dChmb2xpbywgdHJ1ZSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfcHV0X2Nh Y2hlKGVudHJ5LCB0cnVlKTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwo+PiAg ICAgICAgICAgICAgICAgfQo+PiAgICAgICAgICAgICAgICAgZjJmc19idWdfb24oc2JpLCB0cnVl KTsKPj4gICAgICAgICB9Cj4+Cj4+IC0gICAgICAgZjJmc19mb2xpb19wdXQoZm9saW8sIGZhbHNl KTsKPj4gKyAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRyeSwgZmFsc2UpOwo+Pgo+PiAgICAgICAg IC8qIHN1Ym1pdCBjaGVja3BvaW50ICh3aXRoIGJhcnJpZXIgaWYgTk9CQVJSSUVSIGlzIG5vdCBz ZXQpICovCj4+ICAgICAgICAgZjJmc19zdWJtaXRfbWVyZ2VkX3dyaXRlKHNiaSwgTUVUQV9GTFVT SCk7Cj4+IEBAIC0xNzkzLDcgKzE3NTcsNyBAQCBzdGF0aWMgaW50IGRvX2NoZWNrcG9pbnQoc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgY3BfY29udHJvbCAqY3BjKQo+PiAgICAgICAg IGludCBlcnI7Cj4+Cj4+ICAgICAgICAgLyogRmx1c2ggYWxsIHRoZSBOQVQvU0lUIHBhZ2VzICov Cj4+IC0gICAgICAgZjJmc19zeW5jX21ldGFfcGFnZXMoc2JpLCBMT05HX01BWCwgRlNfQ1BfTUVU QV9JTyk7Cj4+ICsgICAgICAgZjJmc19zeW5jX21ldGFfY2FjaGVzKHNiaSwgTE9OR19NQVgsIHRy dWUsIEZTX0NQX01FVEFfSU8pOwo+Pgo+PiAgICAgICAgIHN0YXRfY3BfdGltZShjcGMsIENQX1RJ TUVfU1lOQ19NRVRBKTsKPj4KPj4gQEAgLTE4OTIsNyArMTg1Niw3IEBAIHN0YXRpYyBpbnQgZG9f Y2hlY2twb2ludChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBjcF9jb250cm9sICpj cGMpCj4+ICAgICAgICAgfQo+Pgo+PiAgICAgICAgIC8qIEhlcmUsIHdlIGhhdmUgb25lIGJpbyBo YXZpbmcgQ1AgcGFjayBleGNlcHQgY3AgcGFjayAyIHBhZ2UgKi8KPj4gLSAgICAgICBmMmZzX3N5 bmNfbWV0YV9wYWdlcyhzYmksIExPTkdfTUFYLCBGU19DUF9NRVRBX0lPKTsKPj4gKyAgICAgICBm MmZzX3N5bmNfbWV0YV9jYWNoZXMoc2JpLCBMT05HX01BWCwgdHJ1ZSwgRlNfQ1BfTUVUQV9JTyk7 Cj4+ICAgICAgICAgc3RhdF9jcF90aW1lKGNwYywgQ1BfVElNRV9TWU5DX0NQX01FVEEpOwo+Pgo+ PiAgICAgICAgIC8qIFdhaXQgZm9yIGFsbCBkaXJ0eSBtZXRhIHBhZ2VzIHRvIGJlIHN1Ym1pdHRl ZCBmb3IgSU8gKi8KPj4gQEAgLTE5MTksMTAgKzE4ODMsMTAgQEAgc3RhdGljIGludCBkb19jaGVj a3BvaW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGNwX2NvbnRyb2wgKmNwYykK Pj4gICAgICAgICAgKiB1c2VkIGZvciBtaWdyYXRpb24gb2YgZW5jcnlwdGVkLCB2ZXJpdHkgb3Ig Y29tcHJlc3NlZCBpbm9kZSdzIGJsb2Nrcy4KPj4gICAgICAgICAgKi8KPj4gICAgICAgICBpZiAo ZjJmc19zYl9oYXNfZW5jcnlwdChzYmkpIHx8IGYyZnNfc2JfaGFzX3Zlcml0eShzYmkpIHx8Cj4+ IC0gICAgICAgICAgICAgICBmMmZzX3NiX2hhc19jb21wcmVzc2lvbihzYmkpKQo+PiAtICAgICAg ICAgICAgICAgZjJmc19idWdfb24oc2JpLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICBpbnZh bGlkYXRlX2lub2RlX3BhZ2VzMl9yYW5nZShNRVRBX01BUFBJTkcoc2JpKSwKPj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBNQUlOX0JMS0FERFIoc2JpKSwgTUFYX0JMS0FERFIoc2Jp KSAtIDEpKTsKPj4gKyAgICAgICAgICAgICAgIGYyZnNfc2JfaGFzX2NvbXByZXNzaW9uKHNiaSkp IHsKPj4gKyAgICAgICAgICAgICAgIGYyZnNfdHJ1bmNhdGVfbWV0YV9jYWNoZXMoc2JpLCBNQUlO X0JMS0FERFIoc2JpKSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfQkxL QUREUihzYmkpIC0gTUFJTl9CTEtBRERSKHNiaSkpOwo+PiArICAgICAgIH0KPj4KPj4gICAgICAg ICBmMmZzX3JlbGVhc2VfaW5vX2VudHJ5KHNiaSwgZmFsc2UpOwo+Pgo+PiBkaWZmIC0tZ2l0IGEv ZnMvZjJmcy9jb21wcmVzcy5jIGIvZnMvZjJmcy9jb21wcmVzcy5jCj4+IGluZGV4IDkxODU1ZDkx YmJkZC4uYmI3NDlmNjI1N2ExIDEwMDY0NAo+PiAtLS0gYS9mcy9mMmZzL2NvbXByZXNzLmMKPj4g KysrIGIvZnMvZjJmcy9jb21wcmVzcy5jCj4+IEBAIC0xMTUwLDcgKzExNTAsNyBAQCBzdGF0aWMg aW50IHByZXBhcmVfY29tcHJlc3Nfb3ZlcndyaXRlKHN0cnVjdCBjb21wcmVzc19jdHggKmNjLAo+ PiAgICAgICAgICAgICAgICAgZjJmc19jb21wcmVzc19jdHhfYWRkX3BhZ2UoY2MsIGZvbGlvKTsK Pj4KPj4gICAgICAgICAgICAgICAgIGlmICghZm9saW9fdGVzdF91cHRvZGF0ZShmb2xpbykpIHsK Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgZjJmc19oYW5kbGVfcGFnZV9laW8oc2JpLCBmb2xp bywgREFUQSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfaGFuZGxlX3BhZ2VfZWlv KHNiaSwgZm9saW8tPmluZGV4LCBEQVRBKTsKPj4gIHJlbGVhc2VfYW5kX3JldHJ5Ogo+PiAgICAg ICAgICAgICAgICAgICAgICAgICBmMmZzX3B1dF9ycGFnZXMoY2MpOwo+PiAgICAgICAgICAgICAg ICAgICAgICAgICBmMmZzX3VubG9ja19ycGFnZXMoY2MsIGkgKyAxKTsKPj4gQEAgLTEzNTksNyAr MTM1OSw3IEBAIHN0YXRpYyBpbnQgZjJmc193cml0ZV9jb21wcmVzc2VkX3BhZ2VzKHN0cnVjdCBj b21wcmVzc19jdHggKmNjLAo+PiAgICAgICAgICAgICAgICAgZmlvLm9sZF9ibGthZGRyID0gZGF0 YV9ibGthZGRyKGRuLmlub2RlLCBkbi5ub2RlX2ZvbGlvLAo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbi5vZnNfaW5fbm9kZSArIGkgKyAxKTsKPj4K Pj4gLSAgICAgICAgICAgICAgIC8qIHdhaXQgZm9yIEdDZWQgcGFnZSB3cml0ZWJhY2sgdmlhIE1F VEFfTUFQUElORyAqLwo+PiArICAgICAgICAgICAgICAgLyogd2FpdCBmb3IgR0NlZCBwYWdlIHdy aXRlYmFjayB2aWEgZ2VuZXJpYyBjYWNoZSAqLwo+PiAgICAgICAgICAgICAgICAgZjJmc193YWl0 X29uX2Jsb2NrX3dyaXRlYmFjayhpbm9kZSwgZmlvLm9sZF9ibGthZGRyKTsKPj4KPj4gICAgICAg ICAgICAgICAgIGlmIChmaW8uZW5jcnlwdGVkKSB7Cj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2Rh dGEuYyBiL2ZzL2YyZnMvZGF0YS5jCj4+IGluZGV4IDJjOTEzODJmZmMzYy4uMGRkNTU4Mzk4MTg5 IDEwMDY0NAo+PiAtLS0gYS9mcy9mMmZzL2RhdGEuYwo+PiArKysgYi9mcy9mMmZzL2RhdGEuYwo+ PiBAQCAtNjUsOCArNjUsNyBAQCBib29sIGYyZnNfaXNfY3BfZ3VhcmFudGVlZChjb25zdCBzdHJ1 Y3QgZm9saW8gKmZvbGlvKQo+Pgo+PiAgICAgICAgIGlub2RlID0gbWFwcGluZy0+aG9zdDsKPj4K Pj4gLSAgICAgICBpZiAoaW5vZGUtPmlfaW5vID09IEYyRlNfTUVUQV9JTk8oc2JpKSB8fAo+PiAt ICAgICAgICAgICAgICAgICAgICAgICBpbm9kZS0+aV9pbm8gPT0gRjJGU19OT0RFX0lOTyhzYmkp IHx8Cj4+ICsgICAgICAgaWYgKGlub2RlLT5pX2lubyA9PSBGMkZTX05PREVfSU5PKHNiaSkgfHwK Pj4gICAgICAgICAgICAgICAgICAgICAgICAgU19JU0RJUihpbm9kZS0+aV9tb2RlKSkKPj4gICAg ICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+Pgo+PiBAQCAtODQsOSArODMsNiBAQCBzdGF0aWMg ZW51bSBjb3VudF90eXBlIF9fcmVhZF9pb190eXBlKHN0cnVjdCBmb2xpbyAqZm9saW8pCj4+ICAg ICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gbWFwcGluZy0+aG9zdDsKPj4gICAg ICAgICAgICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfSV9TQihpbm9kZSk7 Cj4+Cj4+IC0gICAgICAgICAgICAgICBpZiAoaW5vZGUtPmlfaW5vID09IEYyRlNfTUVUQV9JTk8o c2JpKSkKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEYyRlNfUkRfTUVUQTsKPj4g LQo+PiAgICAgICAgICAgICAgICAgaWYgKGlub2RlLT5pX2lubyA9PSBGMkZTX05PREVfSU5PKHNi aSkpCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGMkZTX1JEX05PREU7Cj4+ICAg ICAgICAgfQo+PiBAQCAtMTQ1MSw3ICsxNDQ3LDcgQEAgc3RhdGljIHZvaWQgZjJmc19zdWJtaXRf cGFnZV9yZWFkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmc3Zlcml0eV9pbmZvICp2aSwK Pj4gICAgICAgICBiaW8gPSBmMmZzX2dyYWJfcmVhZF9iaW8oaW5vZGUsIHZpLCBibGthZGRyLCAx LCBvcF9mbGFncywgZm9saW8tPmluZGV4LAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmb3Jfd3JpdGUpOwo+Pgo+PiAtICAgICAgIC8qIHdhaXQgZm9yIEdDZWQgcGFnZSB3cml0 ZWJhY2sgdmlhIE1FVEFfTUFQUElORyAqLwo+PiArICAgICAgIC8qIHdhaXQgZm9yIEdDZWQgcGFn ZSB3cml0ZWJhY2sgdmlhIGdlbmVyaWMgY2FjaGUgKi8KPj4gICAgICAgICBmMmZzX3dhaXRfb25f YmxvY2tfd3JpdGViYWNrKGlub2RlLCBibGthZGRyKTsKPj4KPj4gICAgICAgICBpZiAoIWJpb19h ZGRfZm9saW8oYmlvLCBmb2xpbywgUEFHRV9TSVpFLCAwKSkKPj4gQEAgLTMxMDksNyArMzEwNSw3 IEBAIHN0YXRpYyB2b2lkIGYyZnNfcmVhZGFoZWFkKHN0cnVjdCByZWFkYWhlYWRfY29udHJvbCAq cmFjKQo+PiAgaW50IGYyZnNfZW5jcnlwdF9vbmVfcGFnZShzdHJ1Y3QgZjJmc19pb19pbmZvICpm aW8pCj4+ICB7Cj4+ICAgICAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpb19pbm9kZShmaW8p Owo+PiAtICAgICAgIHN0cnVjdCBmb2xpbyAqbWZvbGlvOwo+PiArICAgICAgIHN0cnVjdCBmMmZz X2NhY2hlZF9ibG9jayAqZW50cnk7Cj4+ICAgICAgICAgc3RydWN0IHBhZ2UgKnBhZ2U7Cj4+Cj4+ ICAgICAgICAgaWYgKCFmMmZzX2VuY3J5cHRlZF9maWxlKGlub2RlKSkKPj4gQEAgLTMxMjUsMTIg KzMxMjEsMTMgQEAgaW50IGYyZnNfZW5jcnlwdF9vbmVfcGFnZShzdHJ1Y3QgZjJmc19pb19pbmZv ICpmaW8pCj4+ICAgICAgICAgaWYgKElTX0VSUihmaW8tPmVuY3J5cHRlZF9wYWdlKSkKPj4gICAg ICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGZpby0+ZW5jcnlwdGVkX3BhZ2UpOwo+Pgo+PiAt ICAgICAgIG1mb2xpbyA9IGZpbGVtYXBfbG9ja19mb2xpbyhNRVRBX01BUFBJTkcoZmlvLT5zYmkp LCBmaW8tPm9sZF9ibGthZGRyKTsKPj4gLSAgICAgICBpZiAoIUlTX0VSUihtZm9saW8pKSB7Cj4+ IC0gICAgICAgICAgICAgICBpZiAoZm9saW9fdGVzdF91cHRvZGF0ZShtZm9saW8pKQo+PiAtICAg ICAgICAgICAgICAgICAgICAgICBtZW1jcHkoZm9saW9fYWRkcmVzcyhtZm9saW8pLAo+PiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VfYWRkcmVzcyhmaW8tPmVuY3J5cHRlZF9w YWdlKSwgUEFHRV9TSVpFKTsKPj4gLSAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KG1mb2xp bywgdHJ1ZSk7Cj4+ICsgICAgICAgZW50cnkgPSBmMmZzX2ZpbmRfY2FjaGUoTUVUQV9DQUNIRShm aW8tPnNiaSksIGZpby0+b2xkX2Jsa2FkZHIpOwo+PiArICAgICAgIGlmICghSVNfRVJSKGVudHJ5 KSkgewo+PiArICAgICAgICAgICAgICAgZjJmc19sb2NrX2NhY2hlKGVudHJ5KTsKPj4gKyAgICAg ICAgICAgICAgIGlmIChmMmZzX2NhY2hlX3Rlc3RfdXB0b2RhdGUoZW50cnkpKQo+PiArICAgICAg ICAgICAgICAgICAgICAgICBtZW1jcHkoY2FjaGVfYWRkcmVzcyhlbnRyeSksIHBhZ2VfYWRkcmVz cyhmaW8tPmVuY3J5cHRlZF9wYWdlKSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRjJGU19CTEtTSVpFKTsKPj4gKyAgICAgICAgICAgICAgIGYyZnNf cHV0X2NhY2hlKGVudHJ5LCB0cnVlKTsKPj4gICAgICAgICB9Cj4+ICAgICAgICAgcmV0dXJuIDA7 Cj4+ICB9Cj4+IEBAIC0zMjk2LDcgKzMyOTMsNyBAQCBpbnQgZjJmc19kb193cml0ZV9kYXRhX3Bh Z2Uoc3RydWN0IGYyZnNfaW9faW5mbyAqZmlvKQo+PiAgICAgICAgICAgICAgICAgZ290byBvdXRf d3JpdGVwYWdlOwo+PiAgICAgICAgIH0KPj4KPj4gLSAgICAgICAvKiB3YWl0IGZvciBHQ2VkIHBh Z2Ugd3JpdGViYWNrIHZpYSBNRVRBX01BUFBJTkcgKi8KPj4gKyAgICAgICAvKiB3YWl0IGZvciBH Q2VkIHBhZ2Ugd3JpdGViYWNrIHZpYSBnZW5lcmljIGNhY2hlICovCj4+ICAgICAgICAgaWYgKGZp by0+bWV0YV9nYykKPj4gICAgICAgICAgICAgICAgIGYyZnNfd2FpdF9vbl9ibG9ja193cml0ZWJh Y2soaW5vZGUsIGZpby0+b2xkX2Jsa2FkZHIpOwo+Pgo+PiBAQCAtNDM3OSw5ICs0Mzc2LDcgQEAg dm9pZCBmMmZzX2ludmFsaWRhdGVfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgc2l6ZV90IG9m ZnNldCwgc2l6ZV90IGxlbmd0aCkKPj4gICAgICAgICAgICAgICAgIHJldHVybjsKPj4KPj4gICAg ICAgICBpZiAoZm9saW9fdGVzdF9kaXJ0eShmb2xpbykpIHsKPj4gLSAgICAgICAgICAgICAgIGlm IChpbm9kZS0+aV9pbm8gPT0gRjJGU19NRVRBX0lOTyhzYmkpKSB7Cj4+IC0gICAgICAgICAgICAg ICAgICAgICAgIGRlY19wYWdlX2NvdW50KHNiaSwgRjJGU19ESVJUWV9NRVRBKTsKPj4gLSAgICAg ICAgICAgICAgIH0gZWxzZSBpZiAoaW5vZGUtPmlfaW5vID09IEYyRlNfTk9ERV9JTk8oc2JpKSkg ewo+PiArICAgICAgICAgICAgICAgaWYgKGlub2RlLT5pX2lubyA9PSBGMkZTX05PREVfSU5PKHNi aSkpIHsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgZGVjX3BhZ2VfY291bnQoc2JpLCBGMkZT X0RJUlRZX05PREVTKTsKPj4gICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4+ICAgICAgICAgICAg ICAgICAgICAgICAgIGlub2RlX2RlY19kaXJ0eV9wYWdlcyhpbm9kZSk7Cj4+IGRpZmYgLS1naXQg YS9mcy9mMmZzL2RlYnVnLmMgYi9mcy9mMmZzL2RlYnVnLmMKPj4gaW5kZXggZmYzNzlhZmY0NDcy Li4xNDA1OWE1MDczOWMgMTAwNjQ0Cj4+IC0tLSBhL2ZzL2YyZnMvZGVidWcuYwo+PiArKysgYi9m cy9mMmZzL2RlYnVnLmMKPj4gQEAgLTIyNCw4ICsyMjQsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVf Z2VuZXJhbF9zdGF0dXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+PiAgICAgICAgIHNpLT5k aXJ0eV9jb3VudCA9IGRpcnR5X3NlZ21lbnRzKHNiaSk7Cj4+ICAgICAgICAgaWYgKHNiaS0+bm9k ZV9pbm9kZSkKPj4gICAgICAgICAgICAgICAgIHNpLT5ub2RlX3BhZ2VzID0gTk9ERV9NQVBQSU5H KHNiaSktPm5ycGFnZXM7Cj4+IC0gICAgICAgaWYgKHNiaS0+bWV0YV9pbm9kZSkKPj4gLSAgICAg ICAgICAgICAgIHNpLT5tZXRhX3BhZ2VzID0gTUVUQV9NQVBQSU5HKHNiaSktPm5ycGFnZXM7Cj4+ ICsgICAgICAgc2ktPm1ldGFfY2FjaGVzID0gTUVUQV9DQUNIRShzYmkpLT5udW1fZW50cmllczsK Pj4gICNpZmRlZiBDT05GSUdfRjJGU19GU19DT01QUkVTU0lPTgo+PiAgICAgICAgIGlmIChzYmkt PmNvbXByZXNzX2lub2RlKSB7Cj4+ICAgICAgICAgICAgICAgICBzaS0+Y29tcHJlc3NfcGFnZXMg PSBDT01QUkVTU19NQVBQSU5HKHNiaSktPm5ycGFnZXM7Cj4+IEBAIC0zODgsMTEgKzM4Nyw4IEBA IHN0YXRpYyB2b2lkIHVwZGF0ZV9tZW1faW5mbyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4+ Cj4+ICAgICAgICAgICAgICAgICBzaS0+cGFnZV9tZW0gKz0gKHVuc2lnbmVkIGxvbmcgbG9uZylu cGFnZXMgPDwgUEFHRV9TSElGVDsKPj4gICAgICAgICB9Cj4+IC0gICAgICAgaWYgKHNiaS0+bWV0 YV9pbm9kZSkgewo+PiAtICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBucGFnZXMgPSBNRVRB X01BUFBJTkcoc2JpKS0+bnJwYWdlczsKPj4gLQo+PiAtICAgICAgICAgICAgICAgc2ktPnBhZ2Vf bWVtICs9ICh1bnNpZ25lZCBsb25nIGxvbmcpbnBhZ2VzIDw8IFBBR0VfU0hJRlQ7Cj4+IC0gICAg ICAgfQo+PiArICAgICAgIHNpLT5wYWdlX21lbSArPSAodW5zaWduZWQgbG9uZyBsb25nKU1FVEFf Q0FDSEUoc2JpKS0+bnVtX2VudHJpZXMgPDwgUEFHRV9TSElGVDsKPj4gKyAgICAgICBzaS0+Y2Fj aGVfbWVtICs9IE1FVEFfQ0FDSEUoc2JpKS0+bnVtX2VudHJpZXMgKiBzaXplb2Yoc3RydWN0IGYy ZnNfY2FjaGVkX2Jsb2NrKTsKPj4gICNpZmRlZiBDT05GSUdfRjJGU19GU19DT01QUkVTU0lPTgo+ PiAgICAgICAgIGlmIChzYmktPmNvbXByZXNzX2lub2RlKSB7Cj4+ICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIG5wYWdlcyA9IENPTVBSRVNTX01BUFBJTkcoc2JpKS0+bnJwYWdlczsKPj4g QEAgLTcwOCw3ICs3MDQsNyBAQCBzdGF0aWMgaW50IHN0YXRfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUg KnMsIHZvaWQgKnYpCj4+ICAgICAgICAgICAgICAgICBzZXFfcHJpbnRmKHMsICIgIC0gcXVvdGEg ZGF0YTogJTRkIGluIHF1b3RhIGZpbGVzOiU0ZFxuIiwKPj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2ktPm5kaXJ0eV9xZGF0YSwgc2ktPm5xdW90YV9maWxlcyk7Cj4+ICAgICAgICAgICAg ICAgICBzZXFfcHJpbnRmKHMsICIgIC0gbWV0YTogJTRkIGluICU0ZFxuIiwKPj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgc2ktPm5kaXJ0eV9tZXRhLCBzaS0+bWV0YV9wYWdlcyk7Cj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpLT5uZGlydHlfbWV0YSwgc2ktPm1ldGFfY2FjaGVz KTsKPj4gICAgICAgICAgICAgICAgIHNlcV9wcmludGYocywgIiAgLSBpbWV0YTogJTRkXG4iLAo+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaS0+bmRpcnR5X2ltZXRhKTsKPj4gICAgICAg ICAgICAgICAgIHNlcV9wcmludGYocywgIiAgLSBmc3luYyBtYXJrOiAlNGxsZFxuIiwKPj4gZGlm ZiAtLWdpdCBhL2ZzL2YyZnMvZjJmcy5oIGIvZnMvZjJmcy9mMmZzLmgKPj4gaW5kZXggOWZlOWZh ZGJiODEwLi41MTE1YzBjMGI0N2QgMTAwNjQ0Cj4+IC0tLSBhL2ZzL2YyZnMvZjJmcy5oCj4+ICsr KyBiL2ZzL2YyZnMvZjJmcy5oCj4+IEBAIC0xODMwLDcgKzE4MzAsNiBAQCBzdHJ1Y3QgZjJmc19z Yl9pbmZvIHsKPj4gICAgICAgICBzdHJ1Y3QgZjJmc19jaGVja3BvaW50ICpja3B0OyAgICAgICAg ICAgLyogcmF3IGNoZWNrcG9pbnQgcG9pbnRlciAqLwo+PiAgICAgICAgIGludCBjdXJfY3BfcGFj azsgICAgICAgICAgICAgICAgICAgICAgICAvKiByZW1haW4gY3VycmVudCBjcCBwYWNrICovCj4+ ICAgICAgICAgc3BpbmxvY2tfdCBjcF9sb2NrOyAgICAgICAgICAgICAgICAgICAgIC8qIGZvciBm bGFnIGluIGNrcHQgKi8KPj4gLSAgICAgICBzdHJ1Y3QgaW5vZGUgKm1ldGFfaW5vZGU7ICAgICAg ICAgICAgICAgLyogY2FjaGUgbWV0YSBibG9ja3MgKi8KPj4gICAgICAgICBzdHJ1Y3QgZjJmc19y d3NlbSBjcF9nbG9iYWxfc2VtOyAgICAgICAgLyogY2hlY2twb2ludCBwcm9jZWR1cmUgbG9jayAq Lwo+PiAgICAgICAgIHN0cnVjdCBmMmZzX3J3c2VtIGNwX3J3c2VtOyAgICAgICAgICAgICAvKiBi bG9ja2luZyBGUyBvcGVyYXRpb25zICovCj4+ICAgICAgICAgc3RydWN0IGYyZnNfcndzZW0gbm9k ZV93cml0ZTsgICAgICAgICAgIC8qIGxvY2tpbmcgbm9kZSB3cml0ZXMgKi8KPj4gQEAgLTE4NzUs NyArMTg3NCw2IEBAIHN0cnVjdCBmMmZzX3NiX2luZm8gewo+PiAgICAgICAgIHVuc2lnbmVkIGlu dCBibG9ja3NpemU7ICAgICAgICAgICAgICAgICAvKiBibG9jayBzaXplICovCj4+ICAgICAgICAg dW5zaWduZWQgaW50IHJvb3RfaW5vX251bTsgICAgICAgICAgICAgIC8qIHJvb3QgaW5vZGUgbnVt YmVyKi8KPj4gICAgICAgICB1bnNpZ25lZCBpbnQgbm9kZV9pbm9fbnVtOyAgICAgICAgICAgICAg Lyogbm9kZSBpbm9kZSBudW1iZXIqLwo+PiAtICAgICAgIHVuc2lnbmVkIGludCBtZXRhX2lub19u dW07ICAgICAgICAgICAgICAvKiBtZXRhIGlub2RlIG51bWJlciovCj4+ICAgICAgICAgdW5zaWdu ZWQgaW50IGxvZ19ibG9ja3NfcGVyX3NlZzsgICAgICAgIC8qIGxvZzIgYmxvY2tzIHBlciBzZWdt ZW50ICovCj4+ICAgICAgICAgdW5zaWduZWQgaW50IGJsb2Nrc19wZXJfc2VnOyAgICAgICAgICAg IC8qIGJsb2NrcyBwZXIgc2VnbWVudCAqLwo+PiAgICAgICAgIHVuc2lnbmVkIGludCBzZWdzX3Bl cl9zZWM7ICAgICAgICAgICAgICAvKiBzZWdtZW50cyBwZXIgc2VjdGlvbiAqLwo+PiBAQCAtMjMy Miw5ICsyMzIwLDkgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZGlydHlfc2VnbGlzdF9pbmZvICpE SVJUWV9JKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKPj4gICAgICAgICByZXR1cm4gKHN0cnVj dCBkaXJ0eV9zZWdsaXN0X2luZm8gKikoU01fSShzYmkpLT5kaXJ0eV9pbmZvKTsKPj4gIH0KPj4K Pj4gLXN0YXRpYyBpbmxpbmUgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKk1FVEFfTUFQUElORyhzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgZjJmc19pc19tZXRh X2NhY2hlKHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpCj4+ICB7Cj4+IC0gICAgICAg cmV0dXJuIHNiaS0+bWV0YV9pbm9kZS0+aV9tYXBwaW5nOwo+PiArICAgICAgIHJldHVybiBlbnRy eS0+Y2FjaGUgJiYgZW50cnktPmNhY2hlID09IE1FVEFfQ0FDSEUoZW50cnktPmNhY2hlLT5zYmkp Owo+PiAgfQo+Pgo+PiAgc3RhdGljIGlubGluZSBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqTk9ERV9N QVBQSU5HKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKPj4gQEAgLTIzMzIsMTEgKzIzMzAsNiBA QCBzdGF0aWMgaW5saW5lIHN0cnVjdCBhZGRyZXNzX3NwYWNlICpOT0RFX01BUFBJTkcoc3RydWN0 IGYyZnNfc2JfaW5mbyAqc2JpKQo+PiAgICAgICAgIHJldHVybiBzYmktPm5vZGVfaW5vZGUtPmlf bWFwcGluZzsKPj4gIH0KPj4KPj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tZXRhX2ZvbGlvKHN0 cnVjdCBmb2xpbyAqZm9saW8pCj4+IC17Cj4+IC0gICAgICAgcmV0dXJuIGZvbGlvLT5tYXBwaW5n ID09IE1FVEFfTUFQUElORyhGMkZTX0ZfU0IoZm9saW8pKTsKPj4gLX0KPj4gLQo+PiAgc3RhdGlj IGlubGluZSBib29sIGlzX25vZGVfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbykKPj4gIHsKPj4g ICAgICAgICByZXR1cm4gZm9saW8tPm1hcHBpbmcgPT0gTk9ERV9NQVBQSU5HKEYyRlNfRl9TQihm b2xpbykpOwo+PiBAQCAtNDA2MSw5ICs0MDU0LDkgQEAgYm9vbCBmMmZzX2FsbG9jX25pZChzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmksIG5pZF90ICpuaWQpOwo+PiAgdm9pZCBmMmZzX2FsbG9jX25p ZF9kb25lKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgbmlkX3QgbmlkKTsKPj4gIHZvaWQgZjJm c19hbGxvY19uaWRfZmFpbGVkKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgbmlkX3QgbmlkKTsK Pj4gIGludCBmMmZzX3RyeV90b19mcmVlX25pZHMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBp bnQgbnJfc2hyaW5rKTsKPj4gLWludCBmMmZzX3JlY292ZXJfaW5saW5lX3hhdHRyKHN0cnVjdCBp bm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pOwo+PiAtaW50IGYyZnNfcmVjb3Zlcl94 YXR0cl9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pOwo+PiAt aW50IGYyZnNfcmVjb3Zlcl9pbm9kZV9wYWdlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3Ry dWN0IGZvbGlvICpmb2xpbyk7Cj4+ICtpbnQgZjJmc19yZWNvdmVyX2lubGluZV94YXR0cihzdHJ1 Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KTsKPj4gK2lu dCBmMmZzX3JlY292ZXJfeGF0dHJfZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZjJm c19jYWNoZWRfYmxvY2sgKmVudHJ5KTsKPj4gK2ludCBmMmZzX3JlY292ZXJfaW5vZGVfcGFnZShz dHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkp Owo+PiAgaW50IGYyZnNfcmVzdG9yZV9ub2RlX3N1bW1hcnkoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2Vnbm8sIHN0cnVj dCBmMmZzX3N1bW1hcnlfYmxvY2sgKnN1bSk7Cj4+ICBpbnQgZjJmc19mbHVzaF9uYXRfZW50cmll cyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBjcF9jb250cm9sICpjcGMpOwo+PiBA QCAtNDExMywxMSArNDEwNiwxMyBAQCBpbnQgZjJmc19hbGxvY2F0ZV9uZXdfc2VnbWVudHMoc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPj4gIGludCBmMmZzX3RyaW1fZnMoc3RydWN0IGYyZnNf c2JfaW5mbyAqc2JpLCBzdHJ1Y3QgZnN0cmltX3JhbmdlICpyYW5nZSk7Cj4+ICBib29sIGYyZnNf ZXhpc3RfdHJpbV9jYW5kaWRhdGVzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjcF9jb250cm9sICpjcGMp Owo+PiAtc3RydWN0IGZvbGlvICpmMmZzX2dldF9zdW1fZm9saW8oc3RydWN0IGYyZnNfc2JfaW5m byAqc2JpLCB1bnNpZ25lZCBpbnQgc2Vnbm8pOwo+PiArc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2Nr ICpmMmZzX2dldF9zdW1fY2FjaGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+PiArICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IHNlZ25vKTsKPj4gIHZvaWQgZjJmc191cGRhdGVfbWV0YV9w YWdlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgdm9pZCAqc3JjLAo+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdCBibGtfYWRkcik7Cj4+IC12b2lkIGYy ZnNfZG9fd3JpdGVfbWV0YV9wYWdlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGZv bGlvICpmb2xpbywKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZW51bSBpb3N0YXRfdHlwZSBpb190eXBlKTsKPj4gK3ZvaWQgZjJmc19kb193cml0ZV9t ZXRhX2NhY2hlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgZW51bSBpb3N0YXRfdHlwZSBpb190eXBlKTsKPj4gIHZvaWQgZjJmc19kb193cml0 ZV9ub2RlX3BhZ2UodW5zaWduZWQgaW50IG5pZCwgc3RydWN0IGYyZnNfaW9faW5mbyAqZmlvKTsK Pj4gIHZvaWQgZjJmc19vdXRwbGFjZV93cml0ZV9kYXRhKHN0cnVjdCBkbm9kZV9vZl9kYXRhICpk biwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfaW9faW5mbyAqZmlvKTsK Pj4gQEAgLTQxNDAsOCArNDEzNSw2IEBAIHZvaWQgZjJmc191cGRhdGVfZGV2aWNlX3N0YXRlKHN0 cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgbmlkX3QgaW5vLAo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdCBibGthZGRyLCB1bnNpZ25lZCBpbnQgYmxrY250 KTsKPj4gIHZvaWQgZjJmc19mb2xpb193YWl0X3dyaXRlYmFjayhzdHJ1Y3QgZm9saW8gKmZvbGlv LCBlbnVtIHBhZ2VfdHlwZSB0eXBlLAo+PiAgICAgICAgICAgICAgICAgYm9vbCBvcmRlcmVkLCBi b29sIGxvY2tlZCk7Cj4+IC0jZGVmaW5lIGYyZnNfd2FpdF9vbl9wYWdlX3dyaXRlYmFjayhwYWdl LCB0eXBlLCBvcmRlcmVkLCBsb2NrZWQpICAgICAgIFwKPj4gLSAgICAgICAgICAgICAgIGYyZnNf Zm9saW9fd2FpdF93cml0ZWJhY2socGFnZV9mb2xpbyhwYWdlKSwgdHlwZSwgb3JkZXJlZCwgbG9j a2VkKQo+PiAgdm9pZCBmMmZzX3dhaXRfb25fYmxvY2tfd3JpdGViYWNrKHN0cnVjdCBpbm9kZSAq aW5vZGUsIGJsb2NrX3QgYmxrYWRkcik7Cj4+ICB2b2lkIGYyZnNfd2FpdF9vbl9ibG9ja193cml0 ZWJhY2tfcmFuZ2Uoc3RydWN0IGlub2RlICppbm9kZSwgYmxvY2tfdCBibGthZGRyLAo+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYmxvY2tfdCBsZW4pOwo+PiBAQCAtNDIwNywyMCArNDIwMCwyMSBAQCB2b2lkIGYyZnNfdW5s b2NrX29wKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0 ICpsYyk7Cj4+ICB2b2lkIGYyZnNfc3RvcF9jaGVja3BvaW50KHN0cnVjdCBmMmZzX3NiX2luZm8g KnNiaSwgYm9vbCBlbmRfaW8sCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciByZWFzb24pOwo+PiAgdm9pZCBmMmZz X2ZsdXNoX2NrcHRfdGhyZWFkKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSk7Cj4+IC1zdHJ1Y3Qg Zm9saW8gKmYyZnNfZ3JhYl9tZXRhX2ZvbGlvKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgcGdv ZmZfdCBpbmRleCk7Cj4+IC1zdHJ1Y3QgZm9saW8gKmYyZnNfZ2V0X21ldGFfZm9saW8oc3RydWN0 IGYyZnNfc2JfaW5mbyAqc2JpLCBwZ29mZl90IGluZGV4KTsKPj4gLXN0cnVjdCBmb2xpbyAqZjJm c19nZXRfbWV0YV9mb2xpb19yZXRyeShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHBnb2ZmX3Qg aW5kZXgpOwo+PiAtc3RydWN0IGZvbGlvICpmMmZzX2dldF90bXBfZm9saW8oc3RydWN0IGYyZnNf c2JfaW5mbyAqc2JpLCBwZ29mZl90IGluZGV4KTsKPj4gK3N0cnVjdCBmMmZzX2NhY2hlZF9ibG9j ayAqZjJmc19ncmFiX21ldGFfY2FjaGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBwZ29mZl90 IGluZGV4KTsKPj4gK3N0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZjJmc19nZXRfbWV0YV9jYWNo ZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHBnb2ZmX3QgaW5kZXgpOwo+PiArc3RydWN0IGYy ZnNfY2FjaGVkX2Jsb2NrICpmMmZzX2dldF9tZXRhX2NhY2hlX3JldHJ5KHN0cnVjdCBmMmZzX3Ni X2luZm8gKnNiaSwgcGdvZmZfdCBpbmRleCk7Cj4+ICtzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sg KmYyZnNfZ2V0X3RtcF9jYWNoZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHBnb2ZmX3QgaW5k ZXgpOwo+PiAgYm9vbCBmMmZzX2lzX3ZhbGlkX2Jsa2FkZHIoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdCBi bGthZGRyLCBpbnQgdHlwZSk7Cj4+ICBib29sIGYyZnNfaXNfdmFsaWRfYmxrYWRkcl9yYXcoc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYmxvY2tfdCBibGthZGRyLCBpbnQgdHlwZSk7Cj4+IC1pbnQgZjJmc19yYV9tZXRh X3BhZ2VzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBzdGFydCwgaW50IG5ycGFn ZXMsCj4+ICtpbnQgZjJmc19yYV9tZXRhX2NhY2hlcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmks IGJsb2NrX3Qgc3RhcnQsIGludCBucnBhZ2VzLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgdHlwZSwgYm9vbCBzeW5jKTsKPj4gLXZvaWQgZjJmc19yYV9tZXRhX3BhZ2VzX2NvbmQoc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBwZ29mZl90IGluZGV4LAo+PiArdm9pZCBmMmZzX3JhX21l dGFfY2FjaGVzX2NvbmQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBwZ29mZl90IGluZGV4LAo+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCByYV9ibG9ja3MpOwo+PiAtbG9uZyBmMmZzX3N5bmNfbWV0YV9wYWdlcyhz dHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGxvbmcgbnJfdG9fd3JpdGUsCj4+IC0gICAgICAgICAg ICAgICAgICAgICAgIGVudW0gaW9zdGF0X3R5cGUgaW9fdHlwZSk7Cj4+ICt2b2lkIGYyZnNfd3Jp dGVfbWV0YV9jYWNoZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPj4gK2xvbmcgZjJmc19z eW5jX21ldGFfY2FjaGVzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgbG9uZyBucl90b193cml0 ZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHN5bmMsIGVudW0gaW9z dGF0X3R5cGUgaW9fdHlwZSk7Cj4+ICB2b2lkIGYyZnNfYWRkX2lub19lbnRyeShzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmksIG5pZF90IGlubywgaW50IHR5cGUpOwo+PiAgdm9pZCBmMmZzX3JlbW92 ZV9pbm9fZW50cnkoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBuaWRfdCBpbm8sIGludCB0eXBl KTsKPj4gIHZvaWQgZjJmc19yZWxlYXNlX2lub19lbnRyeShzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmksIGJvb2wgYWxsKTsKPj4gQEAgLTQ0MDcsNyArNDQwMSw3IEBAIHN0cnVjdCBmMmZzX3N0YXRf aW5mbyB7Cj4+ICAgICAgICAgdW5zaWduZWQgaW50IGJpbW9kYWwsIGF2Z192YmxvY2tzOwo+PiAg ICAgICAgIGludCB1dGlsX2ZyZWUsIHV0aWxfdmFsaWQsIHV0aWxfaW52YWxpZDsKPj4gICAgICAg ICBpbnQgcnN2ZF9zZWdzLCBvdmVycF9zZWdzOwo+PiAtICAgICAgIGludCBkaXJ0eV9jb3VudCwg bm9kZV9wYWdlcywgbWV0YV9wYWdlcywgY29tcHJlc3NfcGFnZXM7Cj4+ICsgICAgICAgaW50IGRp cnR5X2NvdW50LCBub2RlX3BhZ2VzLCBtZXRhX2NhY2hlcywgY29tcHJlc3NfcGFnZXM7Cj4+ICAg ICAgICAgaW50IGNvbXByZXNzX3BhZ2VfaGl0Owo+PiAgICAgICAgIGludCBwcmVmcmVlX2NvdW50 LCBmcmVlX3NlZ3MsIGZyZWVfc2VjczsKPj4gICAgICAgICBpbnQgY3BfY2FsbF9jb3VudFtNQVhf Q0FMTF9UWVBFXSwgY3BfY291bnQ7Cj4+IEBAIC00NjA5LDcgKzQ2MDMsNiBAQCBleHRlcm4gY29u c3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmMmZzX2ZpbGVfb3BlcmF0aW9uczsKPj4gIGV4dGVy biBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBmMmZzX2ZpbGVfaW5vZGVfb3BlcmF0aW9u czsKPj4gIGV4dGVybiBjb25zdCBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIGYyZnNf ZGJsb2NrX2FvcHM7Cj4+ICBleHRlcm4gY29uc3Qgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0 aW9ucyBmMmZzX25vZGVfYW9wczsKPj4gLWV4dGVybiBjb25zdCBzdHJ1Y3QgYWRkcmVzc19zcGFj ZV9vcGVyYXRpb25zIGYyZnNfbWV0YV9hb3BzOwo+PiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbm9k ZV9vcGVyYXRpb25zIGYyZnNfZGlyX2lub2RlX29wZXJhdGlvbnM7Cj4+ICBleHRlcm4gY29uc3Qg c3RydWN0IGlub2RlX29wZXJhdGlvbnMgZjJmc19zeW1saW5rX2lub2RlX29wZXJhdGlvbnM7Cj4+ ICBleHRlcm4gY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgZjJmc19lbmNyeXB0ZWRfc3lt bGlua19pbm9kZV9vcGVyYXRpb25zOwo+PiBAQCAtNDYzMCw3ICs0NjIzLDcgQEAgaW50IGYyZnNf Y29udmVydF9pbmxpbmVfZm9saW8oc3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCBzdHJ1Y3QgZm9s aW8gKmZvbGlvKTsKPj4gIGludCBmMmZzX2NvbnZlcnRfaW5saW5lX2lub2RlKHN0cnVjdCBpbm9k ZSAqaW5vZGUpOwo+PiAgaW50IGYyZnNfdHJ5X2NvbnZlcnRfaW5saW5lX2RpcihzdHJ1Y3QgaW5v ZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKPj4gIGludCBmMmZzX3dyaXRlX2lubGlu ZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pOwo+PiAtaW50 IGYyZnNfcmVjb3Zlcl9pbmxpbmVfZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZm9s aW8gKm5mb2xpbyk7Cj4+ICtpbnQgZjJmc19yZWNvdmVyX2lubGluZV9kYXRhKHN0cnVjdCBpbm9k ZSAqaW5vZGUsIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpOwo+PiAgc3RydWN0IGYy ZnNfZGlyX2VudHJ5ICpmMmZzX2ZpbmRfaW5faW5saW5lX2RpcihzdHJ1Y3QgaW5vZGUgKmRpciwK Pj4gICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmMmZzX2ZpbGVuYW1lICpmbmFtZSwgc3Ry dWN0IGZvbGlvICoqcmVzX2ZvbGlvLAo+PiAgICAgICAgICAgICAgICAgYm9vbCB1c2VfaGFzaCk7 Cj4+IEBAIC01MTkwLDEwICs1MTgzLDggQEAgc3RhdGljIGlubGluZSB2b2lkIGYyZnNfc2NoZWR1 bGVfdGltZW91dF9raWxsYWJsZShsb25nIHRpbWVvdXQsIGJvb2wgaW8pCj4+ICB9Cj4+Cj4+ICBz dGF0aWMgaW5saW5lIHZvaWQgZjJmc19oYW5kbGVfcGFnZV9laW8oc3RydWN0IGYyZnNfc2JfaW5m byAqc2JpLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmb2xpbyAq Zm9saW8sIGVudW0gcGFnZV90eXBlIHR5cGUpCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGdvZmZfdCBvZnMsIGVudW0gcGFnZV90eXBlIHR5cGUpCj4+ICB7Cj4+IC0gICAgICAg cGdvZmZfdCBvZnMgPSBmb2xpby0+aW5kZXg7Cj4+IC0KPj4gICAgICAgICBpZiAodW5saWtlbHko ZjJmc19jcF9lcnJvcihzYmkpKSkKPj4gICAgICAgICAgICAgICAgIHJldHVybjsKPj4KPj4gQEAg LTUyMjgsMzYgKzUyMTksMTAgQEAgc3RhdGljIGlubGluZSBib29sIGYyZnNfaXNfcmVhZG9ubHko c3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+PiAgICAgICAgIHJldHVybiBmMmZzX3NiX2hhc19y ZWFkb25seShzYmkpIHx8IGYyZnNfcmVhZG9ubHkoc2JpLT5zYik7Cj4+ICB9Cj4+Cj4+IC1zdGF0 aWMgaW5saW5lIHZvaWQgZjJmc190cnVuY2F0ZV9tZXRhX2lub2RlX3BhZ2VzKHN0cnVjdCBmMmZz X3NiX2luZm8gKnNiaSwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJsb2NrX3QgYmxrYWRkciwgdW5zaWduZWQgaW50IGNudCkKPj4gLXsKPj4gLSAgICAgICBib29s IG5lZWRfc3VibWl0ID0gZmFsc2U7Cj4+IC0gICAgICAgaW50IGkgPSAwOwo+PiAtCj4+IC0gICAg ICAgZG8gewo+PiAtICAgICAgICAgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbzsKPj4gLQo+PiAt ICAgICAgICAgICAgICAgZm9saW8gPSBmaWxlbWFwX2dldF9mb2xpbyhNRVRBX01BUFBJTkcoc2Jp KSwgYmxrYWRkciArIGkpOwo+PiAtICAgICAgICAgICAgICAgaWYgKCFJU19FUlIoZm9saW8pKSB7 Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGlmIChmb2xpb190ZXN0X3dyaXRlYmFjayhmb2xp bykpCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZF9zdWJtaXQgPSB0cnVl Owo+PiAtICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xpbywgZmFsc2Up Owo+PiAtICAgICAgICAgICAgICAgfQo+PiAtICAgICAgIH0gd2hpbGUgKCsraSA8IGNudCAmJiAh bmVlZF9zdWJtaXQpOwo+PiAtCj4+IC0gICAgICAgaWYgKG5lZWRfc3VibWl0KQo+PiAtICAgICAg ICAgICAgICAgZjJmc19zdWJtaXRfbWVyZ2VkX3dyaXRlX2NvbmQoc2JpLCBzYmktPm1ldGFfaW5v ZGUsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTlVMTCwgMCwgREFUQSk7Cj4+IC0KPj4gLSAgICAgICB0cnVuY2F0ZV9pbm9kZV9wYWdl c19yYW5nZShNRVRBX01BUFBJTkcoc2JpKSwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgRjJG U19CTEtfVE9fQllURVMoKGxvZmZfdClibGthZGRyKSwKPj4gLSAgICAgICAgICAgICAgICAgICAg ICAgRjJGU19CTEtfRU5EX0JZVEVTKChsb2ZmX3QpKGJsa2FkZHIgKyBjbnQgLSAxKSkpOwo+PiAt fQo+PiAtCj4+ICBzdGF0aWMgaW5saW5lIHZvaWQgZjJmc19pbnZhbGlkYXRlX2ludGVybmFsX2Nh Y2hlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdCBibGthZGRyLCB1bnNpZ25lZCBpbnQgbGVu KQo+PiAgewo+PiAtICAgICAgIGYyZnNfdHJ1bmNhdGVfbWV0YV9pbm9kZV9wYWdlcyhzYmksIGJs a2FkZHIsIGxlbik7Cj4+ICsgICAgICAgZjJmc190cnVuY2F0ZV9tZXRhX2NhY2hlcyhzYmksIGJs a2FkZHIsIGxlbik7Cj4+ICAgICAgICAgZjJmc19pbnZhbGlkYXRlX2NvbXByZXNzX3BhZ2VzX3Jh bmdlKHNiaSwgYmxrYWRkciwgbGVuKTsKPj4gIH0KPj4KPj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMv ZmlsZS5jIGIvZnMvZjJmcy9maWxlLmMKPj4gaW5kZXggZDQ0MDIzMWI4Y2I5Li5kZmZkZjBlZDAy MTYgMTAwNjQ0Cj4+IC0tLSBhL2ZzL2YyZnMvZmlsZS5jCj4+ICsrKyBiL2ZzL2YyZnMvZmlsZS5j Cj4+IEBAIC0yMTQsNyArMjE0LDcgQEAgc3RhdGljIHZtX2ZhdWx0X3QgZjJmc192bV9wYWdlX21r d3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCj4+Cj4+ICAgICAgICAgZjJmc19mb2xpb193YWl0 X3dyaXRlYmFjayhmb2xpbywgREFUQSwgZmFsc2UsIHRydWUpOwo+Pgo+PiAtICAgICAgIC8qIHdh aXQgZm9yIEdDZWQgcGFnZSB3cml0ZWJhY2sgdmlhIE1FVEFfTUFQUElORyAqLwo+PiArICAgICAg IC8qIHdhaXQgZm9yIEdDZWQgcGFnZSB3cml0ZWJhY2sgdmlhIGdlbmVyaWMgY2FjaGUgKi8KPj4g ICAgICAgICBmMmZzX3dhaXRfb25fYmxvY2tfd3JpdGViYWNrKGlub2RlLCBkbi5kYXRhX2Jsa2Fk ZHIpOwo+Pgo+PiAgICAgICAgIC8qCj4+IEBAIC0yNTY0LDcgKzI1NjQsNyBAQCBpbnQgZjJmc19k b19zaHV0ZG93bihzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHVuc2lnbmVkIGludCBmbGFnLAo+ PiAgICAgICAgICAgICAgICAgZjJmc19zdG9wX2NoZWNrcG9pbnQoc2JpLCBmYWxzZSwgU1RPUF9D UF9SRUFTT05fU0hVVERPV04pOwo+PiAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICAgICAgICAg Y2FzZSBGMkZTX0dPSU5HX0RPV05fTUVUQUZMVVNIOgo+PiAtICAgICAgICAgICAgICAgZjJmc19z eW5jX21ldGFfcGFnZXMoc2JpLCBMT05HX01BWCwgRlNfTUVUQV9JTyk7Cj4+ICsgICAgICAgICAg ICAgICBmMmZzX3N5bmNfbWV0YV9jYWNoZXMoc2JpLCBMT05HX01BWCwgdHJ1ZSwgRlNfTUVUQV9J Tyk7Cj4+ICAgICAgICAgICAgICAgICBmMmZzX3N0b3BfY2hlY2twb2ludChzYmksIGZhbHNlLCBT VE9QX0NQX1JFQVNPTl9TSFVURE9XTik7Cj4+ICAgICAgICAgICAgICAgICBicmVhazsKPj4gICAg ICAgICBjYXNlIEYyRlNfR09JTkdfRE9XTl9ORUVEX0ZTQ0s6Cj4+IGRpZmYgLS1naXQgYS9mcy9m MmZzL2djLmMgYi9mcy9mMmZzL2djLmMKPj4gaW5kZXggMGMxNzAzOGZjZmQ3Li5jZDRhNzg1ZDBj YWMgMTAwNjQ0Cj4+IC0tLSBhL2ZzL2YyZnMvZ2MuYwo+PiArKysgYi9mcy9mMmZzL2djLmMKPj4g QEAgLTEwNjYsNyArMTA2Niw3IEBAIHN0YXRpYyBpbnQgZ2Nfbm9kZV9zZWdtZW50KHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4+ Cj4+ICAgICAgICAgICAgICAgICBpZiAocGhhc2UgPT0gMCkgewo+PiAtICAgICAgICAgICAgICAg ICAgICAgICBmMmZzX3JhX21ldGFfcGFnZXMoc2JpLCBOQVRfQkxPQ0tfT0ZGU0VUKG5pZCksIDEs Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfcmFfbWV0YV9jYWNoZXMoc2JpLCBOQVRf QkxPQ0tfT0ZGU0VUKG5pZCksIDEsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTUVUQV9OQVQsIHRydWUpOwo+PiAgICAgICAgICAgICAg ICAgICAgICAgICBjb250aW51ZTsKPj4gICAgICAgICAgICAgICAgIH0KPj4gQEAgLTEyMTcsNyAr MTIxNyw4IEBAIHN0YXRpYyBpbnQgcmFfZGF0YV9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBw Z29mZl90IGluZGV4KQo+PiAgICAgICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0g aW5vZGUtPmlfbWFwcGluZzsKPj4gICAgICAgICBzdHJ1Y3QgaW5vZGUgKmF0b21pY19pbm9kZSA9 IE5VTEw7Cj4+ICAgICAgICAgc3RydWN0IGRub2RlX29mX2RhdGEgZG47Cj4+IC0gICAgICAgc3Ry dWN0IGZvbGlvICpmb2xpbywgKmVmb2xpbzsKPj4gKyAgICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlv Owo+PiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnk7Cj4+ICAgICAgICAg c3RydWN0IGYyZnNfaW9faW5mbyBmaW8gPSB7Cj4+ICAgICAgICAgICAgICAgICAuc2JpID0gc2Jp LAo+PiAgICAgICAgICAgICAgICAgLmlubyA9IGlub2RlLT5pX2lubywKPj4gQEAgLTEyMjcsNiAr MTIyOCw3IEBAIHN0YXRpYyBpbnQgcmFfZGF0YV9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBw Z29mZl90IGluZGV4KQo+PiAgICAgICAgICAgICAgICAgLm9wX2ZsYWdzID0gMCwKPj4gICAgICAg ICAgICAgICAgIC5lbmNyeXB0ZWRfcGFnZSA9IE5VTEwsCj4+ICAgICAgICAgICAgICAgICAuaW5f bGlzdCA9IDAsCj4+ICsgICAgICAgICAgICAgICAuaXNfY2FjaGUgPSAxLAo+PiAgICAgICAgIH07 Cj4+ICAgICAgICAgaW50IGVyciA9IDA7Cj4+Cj4+IEBAIC0xMjg1LDIyICsxMjg3LDIxIEBAIHN0 YXRpYyBpbnQgcmFfZGF0YV9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBwZ29mZl90IGluZGV4 KQo+Pgo+PiAgICAgICAgIGYyZnNfd2FpdF9vbl9ibG9ja193cml0ZWJhY2soaW5vZGUsIGRuLmRh dGFfYmxrYWRkcik7Cj4+Cj4+IC0gICAgICAgZWZvbGlvID0gZjJmc19maWxlbWFwX2dldF9mb2xp byhNRVRBX01BUFBJTkcoc2JpKSwgZG4uZGF0YV9ibGthZGRyLAo+PiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRkdQX0xPQ0sgfCBGR1BfQ1JFQVQsIEdGUF9OT0ZTKTsK Pj4gLSAgICAgICBpZiAoSVNfRVJSKGVmb2xpbykpIHsKPj4gLSAgICAgICAgICAgICAgIGVyciA9 IFBUUl9FUlIoZWZvbGlvKTsKPj4gKyAgICAgICBlbnRyeSA9IGYyZnNfZ3JhYl9jYWNoZShNRVRB X0NBQ0hFKHNiaSksIGRuLmRhdGFfYmxrYWRkciwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRjJGU19DQUNIRV9MT0NLX0NSRUFURSk7Cj4+ICsgICAg ICAgaWYgKElTX0VSUihlbnRyeSkpIHsKPj4gKyAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIo ZW50cnkpOwo+PiAgICAgICAgICAgICAgICAgZ290byBwdXRfZm9saW87Cj4+ICAgICAgICAgfQo+ Pgo+PiAtICAgICAgIGZpby5lbmNyeXB0ZWRfcGFnZSA9ICZlZm9saW8tPnBhZ2U7Cj4+IC0KPj4g LSAgICAgICBpZiAoZm9saW9fdGVzdF91cHRvZGF0ZShlZm9saW8pKQo+PiAtICAgICAgICAgICAg ICAgZ290byBwdXRfZW5jcnlwdGVkX3BhZ2U7Cj4+ICsgICAgICAgaWYgKGYyZnNfY2FjaGVfdGVz dF91cHRvZGF0ZShlbnRyeSkpCj4+ICsgICAgICAgICAgICAgICBnb3RvIHB1dF9jYWNoZTsKPj4K Pj4gLSAgICAgICBlcnIgPSBmMmZzX3N1Ym1pdF9wYWdlX2JpbygmZmlvKTsKPj4gKyAgICAgICBm aW8uY2FjaGVfZW50cnkgPSBlbnRyeTsKPj4gKyAgICAgICBlcnIgPSBmMmZzX3N1Ym1pdF9jYWNo ZV9yZWFkKCZmaW8pOwo+PiAgICAgICAgIGlmIChlcnIpCj4+IC0gICAgICAgICAgICAgICBnb3Rv IHB1dF9lbmNyeXB0ZWRfcGFnZTsKPj4gLSAgICAgICBmMmZzX3B1dF9wYWdlKGZpby5lbmNyeXB0 ZWRfcGFnZSwgZmFsc2UpOwo+PiArICAgICAgICAgICAgICAgZ290byBwdXRfY2FjaGU7Cj4+ICsg ICAgICAgZjJmc19wdXRfY2FjaGUoZW50cnksIGZhbHNlKTsKPj4gICAgICAgICBmMmZzX2ZvbGlv X3B1dChmb2xpbywgdHJ1ZSk7Cj4+Cj4+ICAgICAgICAgZjJmc191cGRhdGVfaW9zdGF0KHNiaSwg aW5vZGUsIEZTX0RBVEFfUkVBRF9JTywgRjJGU19CTEtTSVpFKTsKPj4gQEAgLTEzMDksOCArMTMx MCw4IEBAIHN0YXRpYyBpbnQgcmFfZGF0YV9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBwZ29m Zl90IGluZGV4KQo+PiAgICAgICAgIGlmIChhdG9taWNfaW5vZGUpCj4+ICAgICAgICAgICAgICAg ICBpcHV0KGF0b21pY19pbm9kZSk7Cj4+ICAgICAgICAgcmV0dXJuIDA7Cj4+IC1wdXRfZW5jcnlw dGVkX3BhZ2U6Cj4+IC0gICAgICAgZjJmc19wdXRfcGFnZShmaW8uZW5jcnlwdGVkX3BhZ2UsIHRy dWUpOwo+PiArcHV0X2NhY2hlOgo+PiArICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0cnVl KTsKPj4gIHB1dF9mb2xpbzoKPj4gICAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xpbywgdHJ1ZSk7 Cj4+ICBvdXRfaXB1dDoKPj4gQEAgLTEzMjAsNyArMTMyMSw3IEBAIHN0YXRpYyBpbnQgcmFfZGF0 YV9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBwZ29mZl90IGluZGV4KQo+PiAgfQo+Pgo+PiAg LyoKPj4gLSAqIE1vdmUgZGF0YSBibG9jayB2aWEgTUVUQV9NQVBQSU5HIHdoaWxlIGtlZXBpbmcg bG9ja2VkIGRhdGEgcGFnZS4KPj4gKyAqIE1vdmUgZGF0YSBibG9jayB2aWEgbWV0YSBjYWNoZSB3 aGlsZSBrZWVwaW5nIGxvY2tlZCBkYXRhIHBhZ2UuCj4+ICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRv IG1vdmUgYmxvY2tzLCBha2EgTEJBcywgZGlyZWN0bHkgb24gZGlzay4KPj4gICAqLwo+PiAgc3Rh dGljIGludCBtb3ZlX2RhdGFfYmxvY2soc3RydWN0IGlub2RlICppbm9kZSwgYmxvY2tfdCBiaWR4 LAo+PiBAQCAtMTMzNywxMSArMTMzOCwxMyBAQCBzdGF0aWMgaW50IG1vdmVfZGF0YV9ibG9jayhz dHJ1Y3QgaW5vZGUgKmlub2RlLCBibG9ja190IGJpZHgsCj4+ICAgICAgICAgICAgICAgICAub3Bf ZmxhZ3MgPSAwLAo+PiAgICAgICAgICAgICAgICAgLmVuY3J5cHRlZF9wYWdlID0gTlVMTCwKPj4g ICAgICAgICAgICAgICAgIC5pbl9saXN0ID0gMCwKPj4gKyAgICAgICAgICAgICAgIC5pc19jYWNo ZSA9IDEsCj4+ICAgICAgICAgfTsKPj4gICAgICAgICBzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSBkbjsK Pj4gICAgICAgICBzdHJ1Y3QgZjJmc19zdW1tYXJ5IHN1bTsKPj4gICAgICAgICBzdHJ1Y3Qgbm9k ZV9pbmZvIG5pOwo+PiAtICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW8sICptZm9saW8sICplZm9s aW87Cj4+ICsgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbzsKPj4gKyAgICAgICBzdHJ1Y3QgZjJm c19jYWNoZWRfYmxvY2sgKnNlbnRyeSwgKnRlbnRyeTsKPj4gICAgICAgICBibG9ja190IG5ld2Fk ZHI7Cj4+ICAgICAgICAgaW50IGVyciA9IDA7Cj4+ICAgICAgICAgYm9vbCBsZnNfbW9kZSA9IGYy ZnNfbGZzX21vZGUoZmlvLnNiaSk7Cj4+IEBAIC0xNDA2LDIwICsxNDA5LDIwIEBAIHN0YXRpYyBp bnQgbW92ZV9kYXRhX2Jsb2NrKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGJsb2NrX3QgYmlkeCwKPj4g ICAgICAgICBpZiAobGZzX21vZGUpCj4+ICAgICAgICAgICAgICAgICBmMmZzX2Rvd25fd3JpdGUo JmZpby5zYmktPmlvX29yZGVyX2xvY2spOwo+Pgo+PiAtICAgICAgIG1mb2xpbyA9IGYyZnNfZ3Jh Yl9jYWNoZV9mb2xpbyhNRVRBX01BUFBJTkcoZmlvLnNiaSksCj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmaW8ub2xkX2Jsa2FkZHIsIGZhbHNlKTsKPj4gLSAgICAg ICBpZiAoSVNfRVJSKG1mb2xpbykpIHsKPj4gLSAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIo bWZvbGlvKTsKPj4gKyAgICAgICBzZW50cnkgPSBmMmZzX2dyYWJfY2FjaGUoTUVUQV9DQUNIRShm aW8uc2JpKSwgZmlvLm9sZF9ibGthZGRyLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBGMkZTX0NBQ0hFX0xPQ0tfQ1JFQVRFKTsKPj4gKyAgICAgICBp ZiAoSVNfRVJSKHNlbnRyeSkpIHsKPj4gKyAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIoc2Vu dHJ5KTsKPj4gICAgICAgICAgICAgICAgIGdvdG8gdXBfb3V0Owo+PiAgICAgICAgIH0KPj4KPj4g LSAgICAgICBmaW8uZW5jcnlwdGVkX3BhZ2UgPSBmb2xpb19maWxlX3BhZ2UobWZvbGlvLCBmaW8u b2xkX2Jsa2FkZHIpOwo+PiArICAgICAgIGZpby5jYWNoZV9lbnRyeSA9IHNlbnRyeTsKPj4KPj4g LSAgICAgICAvKiByZWFkIHNvdXJjZSBibG9jayBpbiBtZm9saW8gKi8KPj4gLSAgICAgICBpZiAo IWZvbGlvX3Rlc3RfdXB0b2RhdGUobWZvbGlvKSkgewo+PiAtICAgICAgICAgICAgICAgZXJyID0g ZjJmc19zdWJtaXRfcGFnZV9iaW8oJmZpbyk7Cj4+ICsgICAgICAgLyogcmVhZCBzb3VyY2UgYmxv Y2sgaW4gY2FjaGUgKi8KPj4gKyAgICAgICBpZiAoIWYyZnNfY2FjaGVfdGVzdF91cHRvZGF0ZShz ZW50cnkpKSB7Cj4+ICsgICAgICAgICAgICAgICBlcnIgPSBmMmZzX3N1Ym1pdF9jYWNoZV9yZWFk KCZmaW8pOwo+PiAgICAgICAgICAgICAgICAgaWYgKGVycikgewo+PiAtICAgICAgICAgICAgICAg ICAgICAgICBmMmZzX2ZvbGlvX3B1dChtZm9saW8sIHRydWUpOwo+PiArICAgICAgICAgICAgICAg ICAgICAgICBmMmZzX3B1dF9jYWNoZShzZW50cnksIHRydWUpOwo+PiAgICAgICAgICAgICAgICAg ICAgICAgICBnb3RvIHVwX291dDsKPj4gICAgICAgICAgICAgICAgIH0KPj4KPj4gQEAgLTE0Mjgs MTEgKzE0MzEsMTEgQEAgc3RhdGljIGludCBtb3ZlX2RhdGFfYmxvY2soc3RydWN0IGlub2RlICpp bm9kZSwgYmxvY2tfdCBiaWR4LAo+PiAgICAgICAgICAgICAgICAgZjJmc191cGRhdGVfaW9zdGF0 KGZpby5zYmksIE5VTEwsIEZTX0dEQVRBX1JFQURfSU8sCj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjJGU19CTEtTSVpFKTsKPj4KPj4g LSAgICAgICAgICAgICAgIGZvbGlvX2xvY2sobWZvbGlvKTsKPj4gLSAgICAgICAgICAgICAgIGlm ICh1bmxpa2VseSghaXNfbWV0YV9mb2xpbyhtZm9saW8pIHx8Cj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIWZvbGlvX3Rlc3RfdXB0b2RhdGUobWZvbGlvKSkpIHsKPj4gKyAgICAgICAg ICAgICAgIGYyZnNfbG9ja19jYWNoZShzZW50cnkpOwo+PiArICAgICAgICAgICAgICAgaWYgKHVu bGlrZWx5KCFmMmZzX2lzX21ldGFfY2FjaGUoc2VudHJ5KSB8fAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICFmMmZzX2NhY2hlX3Rlc3RfdXB0b2RhdGUoc2VudHJ5KSkpIHsKPj4g ICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gLUVJTzsKPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgZjJmc19mb2xpb19wdXQobWZvbGlvLCB0cnVlKTsKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgZjJmc19wdXRfY2FjaGUoc2VudHJ5LCB0cnVlKTsKPj4gICAgICAgICAgICAgICAgICAg ICAgICAgZ290byB1cF9vdXQ7Cj4+ICAgICAgICAgICAgICAgICB9Cj4+ICAgICAgICAgfQo+PiBA QCAtMTQ0Myw0NiArMTQ0Niw0NSBAQCBzdGF0aWMgaW50IG1vdmVfZGF0YV9ibG9jayhzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBibG9ja190IGJpZHgsCj4+ICAgICAgICAgZXJyID0gZjJmc19hbGxvY2F0 ZV9kYXRhX2Jsb2NrKGZpby5zYmksIE5VTEwsIGZpby5vbGRfYmxrYWRkciwgJm5ld2FkZHIsCj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1bSwgdHlwZSwgTlVMTCk7Cj4+ICAg ICAgICAgaWYgKGVycikgewo+PiAtICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQobWZvbGlv LCB0cnVlKTsKPj4gKyAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKHNlbnRyeSwgdHJ1ZSk7 Cj4+ICAgICAgICAgICAgICAgICAvKiBmaWxlc3lzdGVtIHNob3VsZCBzaHV0ZG93biwgbm8gbmVl ZCB0byByZWNvdmVyeSBibG9jayAqLwo+PiAgICAgICAgICAgICAgICAgZ290byB1cF9vdXQ7Cj4+ ICAgICAgICAgfQo+Pgo+PiAtICAgICAgIGVmb2xpbyA9IGYyZnNfZmlsZW1hcF9nZXRfZm9saW8o TUVUQV9NQVBQSU5HKGZpby5zYmkpLCBuZXdhZGRyLAo+PiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRkdQX0xPQ0sgfCBGR1BfQ1JFQVQsIEdGUF9OT0ZTKTsKPj4gLSAg ICAgICBpZiAoSVNfRVJSKGVmb2xpbykpIHsKPj4gLSAgICAgICAgICAgICAgIGVyciA9IFBUUl9F UlIoZWZvbGlvKTsKPj4gLSAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KG1mb2xpbywgdHJ1 ZSk7Cj4+ICsgICAgICAgdGVudHJ5ID0gZjJmc19ncmFiX2NhY2hlKE1FVEFfQ0FDSEUoZmlvLnNi aSksIG5ld2FkZHIsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG MkZTX0NBQ0hFX0xPQ0tfQ1JFQVRFKTsKPj4gKyAgICAgICBpZiAoSVNfRVJSKHRlbnRyeSkpIHsK Pj4gKyAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIodGVudHJ5KTsKPj4gKyAgICAgICAgICAg ICAgIGYyZnNfcHV0X2NhY2hlKHNlbnRyeSwgdHJ1ZSk7Cj4+ICAgICAgICAgICAgICAgICBnb3Rv IHJlY292ZXJfYmxvY2s7Cj4+ICAgICAgICAgfQo+Pgo+PiAtICAgICAgIGZpby5lbmNyeXB0ZWRf cGFnZSA9ICZlZm9saW8tPnBhZ2U7Cj4+ICsgICAgICAgZmlvLmNhY2hlX2VudHJ5ID0gdGVudHJ5 Owo+Pgo+PiAgICAgICAgIC8qIHdyaXRlIHRhcmdldCBibG9jayAqLwo+PiAtICAgICAgIGYyZnNf d2FpdF9vbl9wYWdlX3dyaXRlYmFjayhmaW8uZW5jcnlwdGVkX3BhZ2UsIERBVEEsIHRydWUsIHRy dWUpOwo+PiAtICAgICAgIG1lbWNweShwYWdlX2FkZHJlc3MoZmlvLmVuY3J5cHRlZF9wYWdlKSwK Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xpb19hZGRyZXNzKG1mb2xpbyks IFBBR0VfU0laRSk7Cj4+IC0gICAgICAgZjJmc19mb2xpb19wdXQobWZvbGlvLCB0cnVlKTsKPj4g KyAgICAgICBmMmZzX2NhY2hlX3dhaXRfd3JpdGViYWNrX2NvbmQodGVudHJ5LCBEQVRBKTsKPj4g KyAgICAgICBtZW1jcHkoY2FjaGVfYWRkcmVzcyh0ZW50cnkpLCBjYWNoZV9hZGRyZXNzKHNlbnRy eSksIFBBR0VfU0laRSk7Cj4gCj4gVXNlIHNiaS0+YmxvY2tzaXplIG9yIEYyRlNfQkxLU0laRSBp bnN0ZWFkPwoKU3VyZSwgSSB0aG91Z2h0IGFib3V0IHRoYXQgYmVmb3JlLCBidXQgY29uc2lkZXJp bmcgd2UgaGF2ZSBzdXBwb3J0ZWQKUEFHRV9TSVpFICE9IHNiaS0+YmxvY2tzaXplIHlldCwgSSBk aWRuJ3QgdG91Y2ggdGhhdC4KCklmIHlvdSB3YW50LCBsZXQgbWUgY2hhbmdlIGhlcmUuCgpUaGFu a3MsCgo+IAo+IFRoYW5rcywKPiAKPj4gKyAgICAgICBmMmZzX3B1dF9jYWNoZShzZW50cnksIHRy dWUpOwo+Pgo+PiAgICAgICAgIGYyZnNfaW52YWxpZGF0ZV9pbnRlcm5hbF9jYWNoZShmaW8uc2Jp LCBmaW8ub2xkX2Jsa2FkZHIsIDEpOwo+Pgo+PiAtICAgICAgIHNldF9wYWdlX2RpcnR5KGZpby5l bmNyeXB0ZWRfcGFnZSk7Cj4+IC0gICAgICAgaWYgKGNsZWFyX3BhZ2VfZGlydHlfZm9yX2lvKGZp by5lbmNyeXB0ZWRfcGFnZSkpCj4+ICsgICAgICAgZjJmc19tYXJrX2NhY2hlX2RpcnR5KHRlbnRy eSk7Cj4+ICsgICAgICAgaWYgKGYyZnNfY2xlYXJfY2FjaGVfZGlydHkodGVudHJ5KSkKPj4gICAg ICAgICAgICAgICAgIGRlY19wYWdlX2NvdW50KGZpby5zYmksIEYyRlNfRElSVFlfTUVUQSk7Cj4+ Cj4+IC0gICAgICAgc2V0X3BhZ2Vfd3JpdGViYWNrKGZpby5lbmNyeXB0ZWRfcGFnZSk7Cj4+ICsg ICAgICAgZjJmc19zdGFydF9jYWNoZV93cml0ZWJhY2sodGVudHJ5KTsKPj4KPj4gICAgICAgICBm aW8ub3AgPSBSRVFfT1BfV1JJVEU7Cj4+ICAgICAgICAgZmlvLm9wX2ZsYWdzID0gUkVRX1NZTkM7 Cj4+ICAgICAgICAgZmlvLm5ld19ibGthZGRyID0gbmV3YWRkcjsKPj4gLSAgICAgICBmMmZzX3N1 Ym1pdF9wYWdlX3dyaXRlKCZmaW8pOwo+PiArICAgICAgIGYyZnNfc3VibWl0X2NhY2hlX3dyaXRl KCZmaW8pOwo+Pgo+PiAgICAgICAgIGYyZnNfdXBkYXRlX2lvc3RhdChmaW8uc2JpLCBOVUxMLCBG U19HQ19EQVRBX0lPLCBGMkZTX0JMS1NJWkUpOwo+Pgo+PiAgICAgICAgIGYyZnNfdXBkYXRlX2Rh dGFfYmxrYWRkcigmZG4sIG5ld2FkZHIpOwo+PiAgICAgICAgIHNldF9pbm9kZV9mbGFnKGlub2Rl LCBGSV9BUFBFTkRfV1JJVEUpOwo+Pgo+PiAtICAgICAgIGYyZnNfcHV0X3BhZ2UoZmlvLmVuY3J5 cHRlZF9wYWdlLCB0cnVlKTsKPj4gKyAgICAgICBmMmZzX3B1dF9jYWNoZSh0ZW50cnksIHRydWUp Owo+PiAgcmVjb3Zlcl9ibG9jazoKPj4gICAgICAgICBpZiAoZXJyKQo+PiAgICAgICAgICAgICAg ICAgZjJmc19kb19yZXBsYWNlX2Jsb2NrKGZpby5zYmksICZzdW0sIG5ld2FkZHIsIGZpby5vbGRf YmxrYWRkciwKPj4gQEAgLTE2MTQsNyArMTYxNiw3IEBAIHN0YXRpYyBpbnQgZ2NfZGF0YV9zZWdt ZW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGYyZnNfc3VtbWFyeSAqc3VtLAo+ PiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4KPj4gICAgICAgICAgICAgICAg IGlmIChwaGFzZSA9PSAwKSB7Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGYyZnNfcmFfbWV0 YV9wYWdlcyhzYmksIE5BVF9CTE9DS19PRkZTRVQobmlkKSwgMSwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgZjJmc19yYV9tZXRhX2NhY2hlcyhzYmksIE5BVF9CTE9DS19PRkZTRVQobmlkKSwg MSwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBNRVRBX05BVCwgdHJ1ZSk7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl Owo+PiAgICAgICAgICAgICAgICAgfQo+PiBAQCAtMTgxOCwyOCArMTgyMCwzMSBAQCBzdGF0aWMg aW50IGRvX2dhcmJhZ2VfY29sbGVjdChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+ICAgICAg ICAgc3VtX2Jsa19jbnQgPSBESVZfUk9VTkRfVVAoZW5kX3NlZ25vIC0gc2Vnbm8sIHNiaS0+c3Vt c19wZXJfYmxvY2spOwo+PiAgICAgICAgIC8qIHJlYWRhaGVhZCBtdWx0aSBzc2EgYmxvY2tzIHRo b3NlIGhhdmUgY29udGlndW91cyBhZGRyZXNzICovCj4+ICAgICAgICAgaWYgKF9faXNfbGFyZ2Vf c2VjdGlvbihzYmkpKQo+PiAtICAgICAgICAgICAgICAgZjJmc19yYV9tZXRhX3BhZ2VzKHNiaSwg R0VUX1NVTV9CTE9DSyhzYmksIHNlZ25vKSwKPj4gKyAgICAgICAgICAgICAgIGYyZnNfcmFfbWV0 YV9jYWNoZXMoc2JpLCBHRVRfU1VNX0JMT0NLKHNiaSwgc2Vnbm8pLAo+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtX2Jsa19jbnQsIE1FVEFfU1NBLCB0cnVlKTsK Pj4KPj4gICAgICAgICAvKiByZWZlcmVuY2UgYWxsIHN1bW1hcnkgcGFnZSAqLwo+PiAgICAgICAg IHdoaWxlIChzZWdubyA8IGVuZF9zZWdubykgewo+PiAtICAgICAgICAgICAgICAgc3RydWN0IGZv bGlvICpzdW1fZm9saW8gPSBmMmZzX2dldF9zdW1fZm9saW8oc2JpLCBzZWdubyk7Cj4+ICsgICAg ICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKnN1bV9lbnRyeSA9Cj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19nZXRfc3VtX2NhY2hlKHNiaSwgc2Vnbm8p Owo+Pgo+PiAgICAgICAgICAgICAgICAgc2Vnbm8gKz0gc2JpLT5zdW1zX3Blcl9ibG9jazsKPj4g LSAgICAgICAgICAgICAgIGlmIChJU19FUlIoc3VtX2ZvbGlvKSkgewo+PiAtICAgICAgICAgICAg ICAgICAgICAgICBpbnQgZXJyID0gUFRSX0VSUihzdW1fZm9saW8pOwo+PiArICAgICAgICAgICAg ICAgaWYgKElTX0VSUihzdW1fZW50cnkpKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlu dCBlcnIgPSBQVFJfRVJSKHN1bV9lbnRyeSk7Cj4+Cj4+ICAgICAgICAgICAgICAgICAgICAgICAg IGVuZF9zZWdubyA9IHNlZ25vIC0gc2JpLT5zdW1zX3Blcl9ibG9jazsKPj4gICAgICAgICAgICAg ICAgICAgICAgICAgc2Vnbm8gPSByb3VuZGRvd24oc3RhcnRfc2Vnbm8sIHNiaS0+c3Vtc19wZXJf YmxvY2spOwo+PiAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoc2Vnbm8gPCBlbmRfc2Vn bm8pIHsKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1fZm9saW8gPSBmaWxl bWFwX2dldF9mb2xpbyhNRVRBX01BUFBJTkcoc2JpKSwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdW1fZW50cnkgPSBmMmZzX2ZpbmRfbWV0YV9jYWNoZShzYmksCj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9TVU1fQkxPQ0so c2JpLCBzZWdubykpOwo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGlvX3B1 dF9yZWZzKHN1bV9mb2xpbywgMik7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZjJmc19wdXRfY2FjaGUoc3VtX2VudHJ5LCBmYWxzZSk7Cj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoc3VtX2VudHJ5LCBmYWxzZSk7Cj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2Vnbm8gKz0gc2JpLT5zdW1zX3Blcl9ibG9jazsKPj4g ICAgICAgICAgICAgICAgICAgICAgICAgfQo+PiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gZXJyOwo+PiAgICAgICAgICAgICAgICAgfQo+PiAtICAgICAgICAgICAgICAgZm9saW9fdW5s b2NrKHN1bV9mb2xpbyk7Cj4+ICsgICAgICAgICAgICAgICBmMmZzX3VubG9ja19jYWNoZShzdW1f ZW50cnkpOwo+PiArCj4+ICAgICAgICAgfQo+Pgo+PiAgICAgICAgIGJsa19zdGFydF9wbHVnKCZw bHVnKTsKPj4gQEAgLTE4NDcsMTEgKzE4NTIsMTYgQEAgc3RhdGljIGludCBkb19nYXJiYWdlX2Nv bGxlY3Qoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+PiAgICAgICAgIHNlZ25vID0gc3RhcnRf c2Vnbm87Cj4+ICAgICAgICAgd2hpbGUgKHNlZ25vIDwgZW5kX3NlZ25vKSB7Cj4+ICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgY3VyX3NlZ25vOwo+PiArICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IGJsb2NrX2VuZF9zZWdubzsKPj4KPj4gICAgICAgICAgICAgICAgIC8qIGZpbmQgc2Vn bWVudCBzdW1tYXJ5IG9mIHZpY3RpbSAqLwo+PiAtICAgICAgICAgICAgICAgc3RydWN0IGZvbGlv ICpzdW1fZm9saW8gPSBmaWxlbWFwX2dldF9mb2xpbyhNRVRBX01BUFBJTkcoc2JpKSwKPj4gKyAg ICAgICAgICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqc3VtX2VudHJ5ID0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2ZpbmRfbWV0YV9jYWNoZShzYmksCj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfU1VNX0JMT0NLKHNi aSwgc2Vnbm8pKTsKPj4gLSAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBibG9ja19lbmRfc2Vn bm8gPSByb3VuZGRvd24oc2Vnbm8sIHNiaS0+c3Vtc19wZXJfYmxvY2spCj4+ICsKPj4gKyAgICAg ICAgICAgICAgIGYyZnNfYnVnX29uKHNiaSwgSVNfRVJSKHN1bV9lbnRyeSkpOwo+PiArCj4+ICsg ICAgICAgICAgICAgICBibG9ja19lbmRfc2Vnbm8gPSByb3VuZGRvd24oc2Vnbm8sIHNiaS0+c3Vt c19wZXJfYmxvY2spCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr IHNiaS0+c3Vtc19wZXJfYmxvY2s7Cj4+Cj4+ICAgICAgICAgICAgICAgICBpZiAoYmxvY2tfZW5k X3NlZ25vID4gZW5kX3NlZ25vKQo+PiBAQCAtMTg2NCw4ICsxODc0LDggQEAgc3RhdGljIGludCBk b19nYXJiYWdlX2NvbGxlY3Qoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+PiAgICAgICAgICAg ICAgICAgICAgICAgICBnb3RvIG5leHRfYmxvY2s7Cj4+ICAgICAgICAgICAgICAgICB9Cj4+Cj4+ IC0gICAgICAgICAgICAgICBpZiAoIWZvbGlvX3Rlc3RfdXB0b2RhdGUoc3VtX2ZvbGlvKSB8fAo+ PiAtICAgICAgICAgICAgICAgICAgIHVubGlrZWx5KGYyZnNfY3BfZXJyb3Ioc2JpKSkpCj4+ICsg ICAgICAgICAgICAgICBpZiAoIWYyZnNfY2FjaGVfdGVzdF91cHRvZGF0ZShzdW1fZW50cnkpIHx8 Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHVubGlrZWx5KGYyZnNfY3BfZXJyb3Ioc2JpKSkp Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dF9ibG9jazsKPj4KPj4gICAgICAg ICAgICAgICAgIGZvciAoY3VyX3NlZ25vID0gc2Vnbm87IGN1cl9zZWdubyA8IGJsb2NrX2VuZF9z ZWdubzsKPj4gQEAgLTE4ODQsNyArMTg5NCw3IEBAIHN0YXRpYyBpbnQgZG9fZ2FyYmFnZV9jb2xs ZWN0KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhX3R5cGUgPSAodHlwZSA9PSBTVU1fVFlQRV9EQVRBKSA/IERBVEEgOiBOT0RF Owo+PiAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4+Cj4+IC0gICAgICAgICAgICAgICAgICAg ICAgIHN1bSA9IFNVTV9CTEtfUEFHRV9BRERSKHNiaSwgc3VtX2ZvbGlvLCBjdXJfc2Vnbm8pOwo+ PiArICAgICAgICAgICAgICAgICAgICAgICBzdW0gPSBTVU1fQkxLX0VOVFJZX0FERFIoc2JpLCBz dW1fZW50cnksIGN1cl9zZWdubyk7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBl ICE9IEdFVF9TVU1fVFlQRShzdW1fZm9vdGVyKHNiaSwgc3VtKSkpIHsKPj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmMmZzX2VycihzYmksICJJbmNvbnNpc3RlbnQgc2VnbWVudCAo JXUpIHR5cGUgIgo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiWyVkLCAlZF0gaW4gU0lUIGFuZCBTU0EiLAo+PiBAQCAtMTkyNiwxMiArMTkzNiwxNCBA QCBzdGF0aWMgaW50IGRvX2dhcmJhZ2VfY29sbGVjdChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmks Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJfc2Vnbm8gKyAx IDogTlVMTF9TRUdOTzsKPj4KPj4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5 KGZyZWV6aW5nKGN1cnJlbnQpKSkgewo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZvbGlvX3B1dF9yZWZzKHN1bV9mb2xpbywgMik7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZjJmc19wdXRfY2FjaGUoc3VtX2VudHJ5LCBmYWxzZSk7Cj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoc3VtX2VudHJ5LCBmYWxzZSk7Cj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBzdG9wOwo+PiAgICAgICAgICAg ICAgICAgICAgICAgICB9Cj4+ICAgICAgICAgICAgICAgICB9Cj4+ICBuZXh0X2Jsb2NrOgo+PiAt ICAgICAgICAgICAgICAgZm9saW9fcHV0X3JlZnMoc3VtX2ZvbGlvLCAyKTsKPj4gKyAgICAgICAg ICAgICAgIGYyZnNfcHV0X2NhY2hlKHN1bV9lbnRyeSwgZmFsc2UpOwo+PiArICAgICAgICAgICAg ICAgZjJmc19wdXRfY2FjaGUoc3VtX2VudHJ5LCBmYWxzZSk7Cj4+ICAgICAgICAgICAgICAgICBz ZWdubyA9IGJsb2NrX2VuZF9zZWdubzsKPj4gICAgICAgICB9Cj4+Cj4+IGRpZmYgLS1naXQgYS9m cy9mMmZzL2lubGluZS5jIGIvZnMvZjJmcy9pbmxpbmUuYwo+PiBpbmRleCBhZWMwNmZiNGZkNzYu LjIxNTZmYjFmYzU3ZCAxMDA2NDQKPj4gLS0tIGEvZnMvZjJmcy9pbmxpbmUuYwo+PiArKysgYi9m cy9mMmZzL2lubGluZS5jCj4+IEBAIC0yOTQsNyArMjk0LDcgQEAgaW50IGYyZnNfd3JpdGVfaW5s aW5lX2RhdGEoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZvbGlvICpmb2xpbykKPj4gICAg ICAgICByZXR1cm4gMDsKPj4gIH0KPj4KPj4gLWludCBmMmZzX3JlY292ZXJfaW5saW5lX2RhdGEo c3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZvbGlvICpuZm9saW8pCj4+ICtpbnQgZjJmc19y ZWNvdmVyX2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmMmZzX2NhY2hl ZF9ibG9jayAqZW50cnkpCj4+ICB7Cj4+ICAgICAgICAgc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp ID0gRjJGU19JX1NCKGlub2RlKTsKPj4gICAgICAgICBzdHJ1Y3QgZjJmc19pbm9kZSAqcmkgPSBO VUxMOwo+PiBAQCAtMzA4LDEyICszMDgsMTMgQEAgaW50IGYyZnNfcmVjb3Zlcl9pbmxpbmVfZGF0 YShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZm9saW8gKm5mb2xpbykKPj4gICAgICAgICAg KiAgICB4ICAgICAgIG8gIC0+IHJlbW92ZSBkYXRhIGJsb2NrcywgYW5kIHRoZW4gcmVjb3ZlciBp bmxpbmVfZGF0YQo+PiAgICAgICAgICAqICAgIHggICAgICAgeCAgLT4gcmVjb3ZlciBkYXRhIGJs b2Nrcwo+PiAgICAgICAgICAqLwo+PiAtICAgICAgIGlmIChJU19JTk9ERShuZm9saW8pKQo+PiAt ICAgICAgICAgICAgICAgcmkgPSBGMkZTX0lOT0RFKG5mb2xpbyk7Cj4+ICsgICAgICAgaWYgKElT X0lOT0RFKGNhY2hlX2ZvbGlvKGVudHJ5KSkpCj4+ICsgICAgICAgICAgICAgICByaSA9ICZDQUNI RURfTk9ERShlbnRyeSktPmk7Cj4+Cj4+ICAgICAgICAgaWYgKGYyZnNfaGFzX2lubGluZV9kYXRh KGlub2RlKSAmJgo+PiAgICAgICAgICAgICAgICAgICAgICAgICByaSAmJiAocmktPmlfaW5saW5l ICYgRjJGU19JTkxJTkVfREFUQSkpIHsKPj4gICAgICAgICAgICAgICAgIHN0cnVjdCBmb2xpbyAq aWZvbGlvOwo+PiArCj4+ICBwcm9jZXNzX2lubGluZToKPj4gICAgICAgICAgICAgICAgIGlmb2xp byA9IGYyZnNfZ2V0X2lub2RlX2ZvbGlvKHNiaSwgaW5vZGUtPmlfaW5vKTsKPj4gICAgICAgICAg ICAgICAgIGlmIChJU19FUlIoaWZvbGlvKSkKPj4gQEAgLTMyMSw3ICszMjIsNyBAQCBpbnQgZjJm c19yZWNvdmVyX2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAq bmZvbGlvKQo+Pgo+PiAgICAgICAgICAgICAgICAgZjJmc19mb2xpb193YWl0X3dyaXRlYmFjayhp Zm9saW8sIE5PREUsIHRydWUsIHRydWUpOwo+Pgo+PiAtICAgICAgICAgICAgICAgc3JjX2FkZHIg PSBpbmxpbmVfZGF0YV9hZGRyKGlub2RlLCBuZm9saW8pOwo+PiArICAgICAgICAgICAgICAgc3Jj X2FkZHIgPSBpbmxpbmVfZGF0YV9hZGRyKGlub2RlLCBjYWNoZV9mb2xpbyhlbnRyeSkpOwo+PiAg ICAgICAgICAgICAgICAgZHN0X2FkZHIgPSBpbmxpbmVfZGF0YV9hZGRyKGlub2RlLCBpZm9saW8p Owo+PiAgICAgICAgICAgICAgICAgbWVtY3B5KGRzdF9hZGRyLCBzcmNfYWRkciwgTUFYX0lOTElO RV9EQVRBKGlub2RlKSk7Cj4+Cj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2lub2RlLmMgYi9mcy9m MmZzL2lub2RlLmMKPj4gaW5kZXggOTZjYzBlNzc3NTY3Li45ZjkyOTZiZGIxMzggMTAwNjQ0Cj4+ IC0tLSBhL2ZzL2YyZnMvaW5vZGUuYwo+PiArKysgYi9mcy9mMmZzL2lub2RlLmMKPj4gQEAgLTU3 Nyw3ICs1NzcsNyBAQCBzdGF0aWMgaW50IGRvX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9k ZSkKPj4KPj4gIHN0YXRpYyBib29sIGlzX21ldGFfaW5vKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwgdW5zaWduZWQgaW50IGlubykKPj4gIHsKPj4gLSAgICAgICBpZiAoaW5vID09IEYyRlNfTk9E RV9JTk8oc2JpKSB8fCBpbm8gPT0gRjJGU19NRVRBX0lOTyhzYmkpKQo+PiArICAgICAgIGlmIChp bm8gPT0gRjJGU19OT0RFX0lOTyhzYmkpKQo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7 Cj4+ICAjaWZkZWYgQ09ORklHX0YyRlNfRlNfQ09NUFJFU1NJT04KPj4gICAgICAgICBpZiAodGVz dF9vcHQoc2JpLCBDT01QUkVTU19DQUNIRSkgJiYgaW5vID09IEYyRlNfQ09NUFJFU1NfSU5PKHNi aSkpCj4+IEBAIC02MjQsOSArNjI0LDYgQEAgc3RydWN0IGlub2RlICpmMmZzX2lnZXQoc3RydWN0 IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8pCj4+ICAgICAgICAgaWYgKGlubyA9 PSBGMkZTX05PREVfSU5PKHNiaSkpIHsKPj4gICAgICAgICAgICAgICAgIGlub2RlLT5pX21hcHBp bmctPmFfb3BzID0gJmYyZnNfbm9kZV9hb3BzOwo+PiAgICAgICAgICAgICAgICAgbWFwcGluZ19z ZXRfZ2ZwX21hc2soaW5vZGUtPmlfbWFwcGluZywgR0ZQX05PRlMpOwo+PiAtICAgICAgIH0gZWxz ZSBpZiAoaW5vID09IEYyRlNfTUVUQV9JTk8oc2JpKSkgewo+PiAtICAgICAgICAgICAgICAgaW5v ZGUtPmlfbWFwcGluZy0+YV9vcHMgPSAmZjJmc19tZXRhX2FvcHM7Cj4+IC0gICAgICAgICAgICAg ICBtYXBwaW5nX3NldF9nZnBfbWFzayhpbm9kZS0+aV9tYXBwaW5nLCBHRlBfTk9GUyk7Cj4+ICAg ICAgICAgfSBlbHNlIGlmIChpbm8gPT0gRjJGU19DT01QUkVTU19JTk8oc2JpKSkgewo+PiAgI2lm ZGVmIENPTkZJR19GMkZTX0ZTX0NPTVBSRVNTSU9OCj4+ICAgICAgICAgICAgICAgICBpbm9kZS0+ aV9tYXBwaW5nLT5hX29wcyA9ICZmMmZzX2NvbXByZXNzX2FvcHM7Cj4+IEBAIC04MjQsOCArODIx LDcgQEAgaW50IGYyZnNfd3JpdGVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IHdy aXRlYmFja19jb250cm9sICp3YmMpCj4+ICB7Cj4+ICAgICAgICAgc3RydWN0IGYyZnNfc2JfaW5m byAqc2JpID0gRjJGU19JX1NCKGlub2RlKTsKPj4KPj4gLSAgICAgICBpZiAoaW5vZGUtPmlfaW5v ID09IEYyRlNfTk9ERV9JTk8oc2JpKSB8fAo+PiAtICAgICAgICAgICAgICAgICAgICAgICBpbm9k ZS0+aV9pbm8gPT0gRjJGU19NRVRBX0lOTyhzYmkpKQo+PiArICAgICAgIGlmIChpbm9kZS0+aV9p bm8gPT0gRjJGU19OT0RFX0lOTyhzYmkpKQo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ Cj4+ICAgICAgICAgLyoKPj4gQEAgLTkxOSw3ICs5MTUsNiBAQCBzdGF0aWMgYm9vbCBmMmZzX3By ZV9ldmljdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQo+PiAgICAgICAgICAgICAgICAgZjJm c19pbnZhbGlkYXRlX2NvbXByZXNzX3BhZ2VzKHNiaSwgaW5vZGUtPmlfaW5vKTsKPj4KPj4gICAg ICAgICBpZiAoaW5vZGUtPmlfaW5vID09IEYyRlNfTk9ERV9JTk8oc2JpKSB8fAo+PiAtICAgICAg ICAgICBpbm9kZS0+aV9pbm8gPT0gRjJGU19NRVRBX0lOTyhzYmkpIHx8Cj4+ICAgICAgICAgICAg IGlub2RlLT5pX2lubyA9PSBGMkZTX0NPTVBSRVNTX0lOTyhzYmkpKQo+PiAgICAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7Cj4+Cj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL25vZGUuYyBiL2ZzL2Yy ZnMvbm9kZS5jCj4+IGluZGV4IDg2YzJlNjdlNDNiNi4uODk1MmQzMzIyMzMwIDEwMDY0NAo+PiAt LS0gYS9mcy9mMmZzL25vZGUuYwo+PiArKysgYi9mcy9mMmZzL25vZGUuYwo+PiBAQCAtMTQwLDM4 ICsxNDAsMzYgQEAgc3RhdGljIHZvaWQgY2xlYXJfbm9kZV9mb2xpb19kaXJ0eShzdHJ1Y3QgZm9s aW8gKmZvbGlvKQo+PiAgICAgICAgIGZvbGlvX2NsZWFyX3VwdG9kYXRlKGZvbGlvKTsKPj4gIH0K Pj4KPj4gLXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmdldF9jdXJyZW50X25hdF9mb2xpbyhzdHJ1Y3Qg ZjJmc19zYl9pbmZvICpzYmksIG5pZF90IG5pZCkKPj4gK3N0YXRpYyBzdHJ1Y3QgZjJmc19jYWNo ZWRfYmxvY2sgKmdldF9jdXJyZW50X25hdF9jYWNoZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmks Cj4+ICsgICAgICAgICAgICAgICBuaWRfdCBuaWQpCj4+ICB7Cj4+IC0gICAgICAgcmV0dXJuIGYy ZnNfZ2V0X21ldGFfZm9saW9fcmV0cnkoc2JpLCBjdXJyZW50X25hdF9hZGRyKHNiaSwgbmlkKSk7 Cj4+ICsgICAgICAgcmV0dXJuIGYyZnNfZ2V0X21ldGFfY2FjaGVfcmV0cnkoc2JpLCBjdXJyZW50 X25hdF9hZGRyKHNiaSwgbmlkKSk7Cj4+ICB9Cj4+Cj4+IC1zdGF0aWMgc3RydWN0IGZvbGlvICpn ZXRfbmV4dF9uYXRfZm9saW8oc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBuaWRfdCBuaWQpCj4+ ICtzdGF0aWMgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpnZXRfbmV4dF9uYXRfY2FjaGUoc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+PiArICAgICAgICAgICAgICAgbmlkX3QgbmlkKQo+PiAg ewo+PiAtICAgICAgIHN0cnVjdCBmb2xpbyAqc3JjX2ZvbGlvOwo+PiAtICAgICAgIHN0cnVjdCBm b2xpbyAqZHN0X2ZvbGlvOwo+PiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqc3Jj X2VudHJ5Owo+PiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZHN0X2VudHJ5Owo+ PiAgICAgICAgIHBnb2ZmX3QgZHN0X29mZjsKPj4gLSAgICAgICB2b2lkICpzcmNfYWRkcjsKPj4g LSAgICAgICB2b2lkICpkc3RfYWRkcjsKPj4gICAgICAgICBzdHJ1Y3QgZjJmc19ubV9pbmZvICpu bV9pID0gTk1fSShzYmkpOwo+Pgo+PiAgICAgICAgIGRzdF9vZmYgPSBuZXh0X25hdF9hZGRyKHNi aSwgY3VycmVudF9uYXRfYWRkcihzYmksIG5pZCkpOwo+Pgo+PiAgICAgICAgIC8qIGdldCBjdXJy ZW50IG5hdCBibG9jayBwYWdlIHdpdGggbG9jayAqLwo+PiAtICAgICAgIHNyY19mb2xpbyA9IGdl dF9jdXJyZW50X25hdF9mb2xpbyhzYmksIG5pZCk7Cj4+IC0gICAgICAgaWYgKElTX0VSUihzcmNf Zm9saW8pKQo+PiAtICAgICAgICAgICAgICAgcmV0dXJuIHNyY19mb2xpbzsKPj4gLSAgICAgICBk c3RfZm9saW8gPSBmMmZzX2dyYWJfbWV0YV9mb2xpbyhzYmksIGRzdF9vZmYpOwo+PiAtICAgICAg IGYyZnNfYnVnX29uKHNiaSwgZm9saW9fdGVzdF9kaXJ0eShzcmNfZm9saW8pKTsKPj4gLQo+PiAt ICAgICAgIHNyY19hZGRyID0gZm9saW9fYWRkcmVzcyhzcmNfZm9saW8pOwo+PiAtICAgICAgIGRz dF9hZGRyID0gZm9saW9fYWRkcmVzcyhkc3RfZm9saW8pOwo+PiAtICAgICAgIG1lbWNweShkc3Rf YWRkciwgc3JjX2FkZHIsIFBBR0VfU0laRSk7Cj4+IC0gICAgICAgZm9saW9fbWFya19kaXJ0eShk c3RfZm9saW8pOwo+PiAtICAgICAgIGYyZnNfZm9saW9fcHV0KHNyY19mb2xpbywgdHJ1ZSk7Cj4+ ICsgICAgICAgc3JjX2VudHJ5ID0gZ2V0X2N1cnJlbnRfbmF0X2NhY2hlKHNiaSwgbmlkKTsKPj4g KyAgICAgICBpZiAoSVNfRVJSKHNyY19lbnRyeSkpCj4+ICsgICAgICAgICAgICAgICByZXR1cm4g c3JjX2VudHJ5Owo+PiArICAgICAgIGRzdF9lbnRyeSA9IGYyZnNfZ3JhYl9tZXRhX2NhY2hlKHNi aSwgZHN0X29mZik7Cj4+ICsgICAgICAgZjJmc19idWdfb24oc2JpLCBmMmZzX2NhY2hlX3Rlc3Rf ZGlydHkoc3JjX2VudHJ5KSk7Cj4+ICsKPj4gKyAgICAgICBtZW1jcHkoY2FjaGVfYWRkcmVzcyhk c3RfZW50cnkpLCBjYWNoZV9hZGRyZXNzKHNyY19lbnRyeSksIHNiaS0+YmxvY2tzaXplKTsKPj4g KyAgICAgICBmMmZzX21hcmtfY2FjaGVfZGlydHkoZHN0X2VudHJ5KTsKPj4gKyAgICAgICBmMmZz X3B1dF9jYWNoZShzcmNfZW50cnksIHRydWUpOwo+Pgo+PiAgICAgICAgIHNldF90b19uZXh0X25h dChubV9pLCBuaWQpOwo+Pgo+PiAtICAgICAgIHJldHVybiBkc3RfZm9saW87Cj4+ICsgICAgICAg cmV0dXJuIGRzdF9lbnRyeTsKPj4gIH0KPj4KPj4gIHN0YXRpYyBzdHJ1Y3QgbmF0X2VudHJ5ICpf X2FsbG9jX25hdF9lbnRyeShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+IEBAIC01ODAsNyAr NTc4LDcgQEAgaW50IGYyZnNfZ2V0X25vZGVfaW5mbyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmks IG5pZF90IG5pZCwKPj4gICAgICAgICBzdHJ1Y3QgZjJmc19qb3VybmFsICpqb3VybmFsID0gY3Vy c2VnLT5qb3VybmFsOwo+PiAgICAgICAgIG5pZF90IHN0YXJ0X25pZCA9IFNUQVJUX05JRChuaWQp Owo+PiAgICAgICAgIHN0cnVjdCBmMmZzX25hdF9ibG9jayAqbmF0X2JsazsKPj4gLSAgICAgICBz dHJ1Y3QgZm9saW8gKmZvbGlvID0gTlVMTDsKPj4gKyAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRf YmxvY2sgKmVudHJ5ID0gTlVMTDsKPj4gICAgICAgICBzdHJ1Y3QgZjJmc19uYXRfZW50cnkgbmU7 Cj4+ICAgICAgICAgc3RydWN0IG5hdF9lbnRyeSAqZTsKPj4gICAgICAgICBwZ29mZl90IGluZGV4 Owo+PiBAQCAtNjM1LDE0ICs2MzMsMTQgQEAgaW50IGYyZnNfZ2V0X25vZGVfaW5mbyhzdHJ1Y3Qg ZjJmc19zYl9pbmZvICpzYmksIG5pZF90IG5pZCwKPj4gICAgICAgICBpbmRleCA9IGN1cnJlbnRf bmF0X2FkZHIoc2JpLCBuaWQpOwo+PiAgICAgICAgIGYyZnNfdXBfcmVhZF90cmFjZSgmbm1faS0+ bmF0X3RyZWVfbG9jaywgJmxjKTsKPj4KPj4gLSAgICAgICBmb2xpbyA9IGYyZnNfZ2V0X21ldGFf Zm9saW8oc2JpLCBpbmRleCk7Cj4+IC0gICAgICAgaWYgKElTX0VSUihmb2xpbykpCj4+IC0gICAg ICAgICAgICAgICByZXR1cm4gUFRSX0VSUihmb2xpbyk7Cj4+ICsgICAgICAgZW50cnkgPSBmMmZz X2dldF9tZXRhX2NhY2hlKHNiaSwgaW5kZXgpOwo+PiArICAgICAgIGlmIChJU19FUlIoZW50cnkp KQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoZW50cnkpOwo+Pgo+PiAtICAgICAg IG5hdF9ibGsgPSBmb2xpb19hZGRyZXNzKGZvbGlvKTsKPj4gKyAgICAgICBuYXRfYmxrID0gY2Fj aGVfYWRkcmVzcyhlbnRyeSk7Cj4+ICAgICAgICAgbmUgPSBuYXRfYmxrLT5lbnRyaWVzW25pZCAt IHN0YXJ0X25pZF07Cj4+ICAgICAgICAgbm9kZV9pbmZvX2Zyb21fcmF3X25hdChuaSwgJm5lKTsK Pj4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xpbywgdHJ1ZSk7Cj4+ICsgICAgICAgZjJmc19w dXRfY2FjaGUoZW50cnksIHRydWUpOwo+PiAgc2FuaXR5X2NoZWNrOgo+PiAgICAgICAgIGlmIChf X2lzX3ZhbGlkX2RhdGFfYmxrYWRkcihuaS0+YmxrX2FkZHIpICYmCj4+ICAgICAgICAgICAgICAg ICAhZjJmc19pc192YWxpZF9ibGthZGRyKHNiaSwgbmktPmJsa19hZGRyLAo+PiBAQCAtMTYyOCw3 ICsxNjI2LDcgQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqX19nZXRfbm9kZV9mb2xpbyhzdHJ1Y3Qg ZjJmc19zYl9pbmZvICpzYmksIHBnb2ZmX3QgbmlkLAo+PiAgb3V0X3B1dF9lcnI6Cj4+ICAgICAg ICAgLyogRU5PRU5UIGNvbWVzIGZyb20gcmVhZF9ub2RlX2ZvbGlvIHdoaWNoIGlzIG5vdCBhbiBl cnJvci4gKi8KPj4gICAgICAgICBpZiAoZXJyICE9IC1FTk9FTlQpCj4+IC0gICAgICAgICAgICAg ICBmMmZzX2hhbmRsZV9wYWdlX2VpbyhzYmksIGZvbGlvLCBOT0RFKTsKPj4gKyAgICAgICAgICAg ICAgIGYyZnNfaGFuZGxlX3BhZ2VfZWlvKHNiaSwgZm9saW8tPmluZGV4LCBOT0RFKTsKPj4gICAg ICAgICBmMmZzX2ZvbGlvX3B1dChmb2xpbywgdHJ1ZSk7Cj4+ICAgICAgICAgcmV0dXJuIEVSUl9Q VFIoZXJyKTsKPj4gIH0KPj4gQEAgLTI2MTAsNiArMjYwOCw3IEBAIHN0YXRpYyBpbnQgX19mMmZz X2J1aWxkX2ZyZWVfbmlkcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3luYywgYm9vbCBtb3Vu dCkKPj4gIHsKPj4gICAgICAgICBzdHJ1Y3QgZjJmc19ubV9pbmZvICpubV9pID0gTk1fSShzYmkp Owo+PiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkgPSBOVUxMOwo+PiAg ICAgICAgIGludCBpID0gMCwgcmV0Owo+PiAgICAgICAgIG5pZF90IG5pZCA9IG5tX2ktPm5leHRf c2Nhbl9uaWQ7Cj4+ICAgICAgICAgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0IGxjOwo+PiBAQCAt MjYzNiw3ICsyNjM1LDcgQEAgc3RhdGljIGludCBfX2YyZnNfYnVpbGRfZnJlZV9uaWRzKHN0cnVj dCBmMmZzX3NiX2luZm8gKnNiaSwKPj4gICAgICAgICB9Cj4+Cj4+ICAgICAgICAgLyogcmVhZGFo ZWFkIG5hdCBwYWdlcyB0byBiZSBzY2FubmVkICovCj4+IC0gICAgICAgZjJmc19yYV9tZXRhX3Bh Z2VzKHNiaSwgTkFUX0JMT0NLX09GRlNFVChuaWQpLCBGUkVFX05JRF9QQUdFUywKPj4gKyAgICAg ICBmMmZzX3JhX21ldGFfY2FjaGVzKHNiaSwgTkFUX0JMT0NLX09GRlNFVChuaWQpLCBGUkVFX05J RF9QQUdFUywKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNRVRBX05BVCwgdHJ1ZSk7Cj4+Cj4+ICAgICAgICAgZjJmc19kb3duX3JlYWRf dHJhY2UoJm5tX2ktPm5hdF90cmVlX2xvY2ssICZsYyk7Cj4+IEBAIC0yNjQ0LDE0ICsyNjQzLDE0 IEBAIHN0YXRpYyBpbnQgX19mMmZzX2J1aWxkX2ZyZWVfbmlkcyhzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmksCj4+ICAgICAgICAgd2hpbGUgKDEpIHsKPj4gICAgICAgICAgICAgICAgIGlmICghdGVz dF9iaXRfbGUoTkFUX0JMT0NLX09GRlNFVChuaWQpLAo+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBubV9pLT5uYXRfYmxvY2tfYml0bWFwKSkgewo+PiAt ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlvID0gZ2V0X2N1cnJlbnRf bmF0X2ZvbGlvKHNiaSwgbmlkKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZW50cnkgPSBn ZXRfY3VycmVudF9uYXRfY2FjaGUoc2JpLCBuaWQpOwo+Pgo+PiAtICAgICAgICAgICAgICAgICAg ICAgICBpZiAoSVNfRVJSKGZvbGlvKSkgewo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldCA9IFBUUl9FUlIoZm9saW8pOwo+PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAo SVNfRVJSKGVudHJ5KSkgewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9 IFBUUl9FUlIoZW50cnkpOwo+PiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewo+PiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHNjYW5fbmF0X3BhZ2Uoc2JpLCBm b2xpb19hZGRyZXNzKGZvbGlvKSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXQgPSBzY2FuX25hdF9wYWdlKHNiaSwgY2FjaGVfYWRkcmVzcyhlbnRyeSksCj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pZCk7Cj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoZm9saW8sIHRydWUpOwo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0cnVl KTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgfQo+Pgo+PiAgICAgICAgICAgICAgICAgICAg ICAgICBpZiAocmV0KSB7Cj4+IEBAIC0yNjg0LDcgKzI2ODMsNyBAQCBzdGF0aWMgaW50IF9fZjJm c19idWlsZF9mcmVlX25pZHMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pgo+PiAgICAgICAg IGYyZnNfdXBfcmVhZF90cmFjZSgmbm1faS0+bmF0X3RyZWVfbG9jaywgJmxjKTsKPj4KPj4gLSAg ICAgICBmMmZzX3JhX21ldGFfcGFnZXMoc2JpLCBOQVRfQkxPQ0tfT0ZGU0VUKG5tX2ktPm5leHRf c2Nhbl9uaWQpLAo+PiArICAgICAgIGYyZnNfcmFfbWV0YV9jYWNoZXMoc2JpLCBOQVRfQkxPQ0tf T0ZGU0VUKG5tX2ktPm5leHRfc2Nhbl9uaWQpLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbm1faS0+cmFfbmlkX3BhZ2VzLCBNRVRBX05BVCwgZmFsc2UpOwo+Pgo+ PiAgICAgICAgIHJldHVybiAwOwo+PiBAQCAtMjgzOSw3ICsyODM4LDcgQEAgaW50IGYyZnNfdHJ5 X3RvX2ZyZWVfbmlkcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGludCBucl9zaHJpbmspCj4+ ICAgICAgICAgcmV0dXJuIG5yIC0gbnJfc2hyaW5rOwo+PiAgfQo+Pgo+PiAtaW50IGYyZnNfcmVj b3Zlcl9pbmxpbmVfeGF0dHIoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZvbGlvICpmb2xp bykKPj4gK2ludCBmMmZzX3JlY292ZXJfaW5saW5lX3hhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpCj4+ICB7Cj4+ICAgICAgICAgdm9pZCAq c3JjX2FkZHIsICpkc3RfYWRkcjsKPj4gICAgICAgICBzaXplX3QgaW5saW5lX3NpemU7Cj4+IEBA IC0yODUwLDcgKzI4NDksNyBAQCBpbnQgZjJmc19yZWNvdmVyX2lubGluZV94YXR0cihzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKQo+PiAgICAgICAgIGlmIChJU19FUlIo aWZvbGlvKSkKPj4gICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGlmb2xpbyk7Cj4+Cj4+ IC0gICAgICAgcmkgPSBGMkZTX0lOT0RFKGZvbGlvKTsKPj4gKyAgICAgICByaSA9ICZDQUNIRURf Tk9ERShlbnRyeSktPmk7Cj4+ICAgICAgICAgaWYgKHJpLT5pX2lubGluZSAmIEYyRlNfSU5MSU5F X1hBVFRSKSB7Cj4+ICAgICAgICAgICAgICAgICBpZiAoIWYyZnNfaGFzX2lubGluZV94YXR0cihp bm9kZSkpIHsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2lub2RlX2ZsYWcoaW5vZGUs IEZJX0lOTElORV9YQVRUUik7Cj4+IEBAIC0yODY1LDcgKzI4NjQsNyBAQCBpbnQgZjJmc19yZWNv dmVyX2lubGluZV94YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZm9saW8gKmZvbGlv KQo+PiAgICAgICAgIH0KPj4KPj4gICAgICAgICBkc3RfYWRkciA9IGlubGluZV94YXR0cl9hZGRy KGlub2RlLCBpZm9saW8pOwo+PiAtICAgICAgIHNyY19hZGRyID0gaW5saW5lX3hhdHRyX2FkZHIo aW5vZGUsIGZvbGlvKTsKPj4gKyAgICAgICBzcmNfYWRkciA9IGlubGluZV94YXR0cl9hZGRyKGlu b2RlLCBjYWNoZV9mb2xpbyhlbnRyeSkpOwo+PiAgICAgICAgIGlubGluZV9zaXplID0gaW5saW5l X3hhdHRyX3NpemUoaW5vZGUpOwo+Pgo+PiAgICAgICAgIGYyZnNfZm9saW9fd2FpdF93cml0ZWJh Y2soaWZvbGlvLCBOT0RFLCB0cnVlLCB0cnVlKTsKPj4gQEAgLTI4NzYsNyArMjg3NSw3IEBAIGlu dCBmMmZzX3JlY292ZXJfaW5saW5lX3hhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBm b2xpbyAqZm9saW8pCj4+ICAgICAgICAgcmV0dXJuIDA7Cj4+ICB9Cj4+Cj4+IC1pbnQgZjJmc19y ZWNvdmVyX3hhdHRyX2RhdGEoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZvbGlvICpmb2xp bykKPj4gK2ludCBmMmZzX3JlY292ZXJfeGF0dHJfZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBz dHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KQo+PiAgewo+PiAgICAgICAgIHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfSV9TQihpbm9kZSk7Cj4+ICAgICAgICAgbmlkX3QgcHJl dl94bmlkID0gRjJGU19JKGlub2RlKS0+aV94YXR0cl9uaWQ7Cj4+IEBAIC0yOTE0LDggKzI5MTMs OCBAQCBpbnQgZjJmc19yZWNvdmVyX3hhdHRyX2RhdGEoc3RydWN0IGlub2RlICppbm9kZSwgc3Ry dWN0IGZvbGlvICpmb2xpbykKPj4gICAgICAgICBmMmZzX3VwZGF0ZV9pbm9kZV9wYWdlKGlub2Rl KTsKPj4KPj4gICAgICAgICAvKiAzOiB1cGRhdGUgYW5kIHNldCB4YXR0ciBub2RlIHBhZ2UgZGly dHkgKi8KPj4gLSAgICAgICBpZiAoZm9saW8pIHsKPj4gLSAgICAgICAgICAgICAgIG1lbWNweShG MkZTX05PREUoeGZvbGlvKSwgRjJGU19OT0RFKGZvbGlvKSwKPj4gKyAgICAgICBpZiAoZW50cnkp IHsKPj4gKyAgICAgICAgICAgICAgIG1lbWNweShGMkZTX05PREUoeGZvbGlvKSwgQ0FDSEVEX05P REUoZW50cnkpLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEX1hBVFRS X0JMT0NLX1NJWkUpOwo+PiAgICAgICAgICAgICAgICAgZm9saW9fbWFya19kaXJ0eSh4Zm9saW8p Owo+PiAgICAgICAgIH0KPj4gQEAgLTI5MjQsMTAgKzI5MjMsMTAgQEAgaW50IGYyZnNfcmVjb3Zl cl94YXR0cl9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pCj4+ ICAgICAgICAgcmV0dXJuIDA7Cj4+ICB9Cj4+Cj4+IC1pbnQgZjJmc19yZWNvdmVyX2lub2RlX3Bh Z2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKQo+PiAraW50 IGYyZnNfcmVjb3Zlcl9pbm9kZV9wYWdlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0 IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSkKPj4gIHsKPj4gICAgICAgICBzdHJ1Y3QgZjJmc19p bm9kZSAqc3JjLCAqZHN0Owo+PiAtICAgICAgIG5pZF90IGlubyA9IGlub19vZl9ub2RlKGZvbGlv KTsKPj4gKyAgICAgICBuaWRfdCBpbm8gPSBpbm9fb2Zfbm9kZShjYWNoZV9mb2xpbyhlbnRyeSkp Owo+PiAgICAgICAgIHN0cnVjdCBub2RlX2luZm8gb2xkX25pLCBuZXdfbmk7Cj4+ICAgICAgICAg c3RydWN0IGZvbGlvICppZm9saW87Cj4+ICAgICAgICAgaW50IGVycjsKPj4gQEAgLTI5NTMsNyAr Mjk1Miw3IEBAIGludCBmMmZzX3JlY292ZXJfaW5vZGVfcGFnZShzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmksIHN0cnVjdCBmb2xpbyAqZm9saW8pCj4+ICAgICAgICAgZmlsbF9ub2RlX2Zvb3Rlcihp Zm9saW8sIGlubywgaW5vLCAwLCB0cnVlKTsKPj4gICAgICAgICBzZXRfY29sZF9ub2RlKGlmb2xp bywgZmFsc2UpOwo+Pgo+PiAtICAgICAgIHNyYyA9IEYyRlNfSU5PREUoZm9saW8pOwo+PiArICAg ICAgIHNyYyA9ICZDQUNIRURfTk9ERShlbnRyeSktPmk7Cj4+ICAgICAgICAgZHN0ID0gRjJGU19J Tk9ERShpZm9saW8pOwo+Pgo+PiAgICAgICAgIG1lbWNweShkc3QsIHNyYywgb2Zmc2V0b2Yoc3Ry dWN0IGYyZnNfaW5vZGUsIGlfZXh0KSk7Cj4+IEBAIC0zMDEyLDI0ICszMDExLDI0IEBAIGludCBm MmZzX3Jlc3RvcmVfbm9kZV9zdW1tYXJ5KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4gICAg ICAgICAgICAgICAgIG5ycGFnZXMgPSBiaW9fbWF4X3NlZ3MobGFzdF9vZmZzZXQgLSBpKTsKPj4K Pj4gICAgICAgICAgICAgICAgIC8qIHJlYWRhaGVhZCBub2RlIHBhZ2VzICovCj4+IC0gICAgICAg ICAgICAgICBmMmZzX3JhX21ldGFfcGFnZXMoc2JpLCBhZGRyLCBucnBhZ2VzLCBNRVRBX1BPUiwg dHJ1ZSk7Cj4+ICsgICAgICAgICAgICAgICBmMmZzX3JhX21ldGFfY2FjaGVzKHNiaSwgYWRkciwg bnJwYWdlcywgTUVUQV9QT1IsIHRydWUpOwo+Pgo+PiAgICAgICAgICAgICAgICAgZm9yIChpZHgg PSBhZGRyOyBpZHggPCBhZGRyICsgbnJwYWdlczsgaWR4KyspIHsKPj4gLSAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbyA9IGYyZnNfZ2V0X3RtcF9mb2xpbyhzYmksIGlk eCk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAq ZW50cnkgPQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZ2V0X3RtcF9j YWNoZShzYmksIGlkeCk7Cj4+Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGlmIChJU19FUlIo Zm9saW8pKQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJS KGZvbGlvKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKElTX0VSUihlbnRyeSkpCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoZW50cnkpOwo+ Pgo+PiAtICAgICAgICAgICAgICAgICAgICAgICBybiA9IEYyRlNfTk9ERShmb2xpbyk7Cj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIHJuID0gQ0FDSEVEX05PREUoZW50cnkpOwo+PiAgICAgICAg ICAgICAgICAgICAgICAgICBzdW1fZW50cnktPm5pZCA9IHJuLT5mb290ZXIubmlkOwo+PiAgICAg ICAgICAgICAgICAgICAgICAgICBzdW1fZW50cnktPnZlcnNpb24gPSAwOwo+PiAgICAgICAgICAg ICAgICAgICAgICAgICBzdW1fZW50cnktPm9mc19pbl9ub2RlID0gMDsKPj4gICAgICAgICAgICAg ICAgICAgICAgICAgc3VtX2VudHJ5Kys7Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGYyZnNf Zm9saW9fcHV0KGZvbGlvLCB0cnVlKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZjJmc19w dXRfY2FjaGUoZW50cnksIHRydWUpOwo+PiAgICAgICAgICAgICAgICAgfQo+Pgo+PiAtICAgICAg ICAgICAgICAgaW52YWxpZGF0ZV9tYXBwaW5nX3BhZ2VzKE1FVEFfTUFQUElORyhzYmkpLCBhZGRy LAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFkZHIgKyBucnBhZ2VzKTsKPj4gKyAgICAgICAgICAgICAgIGYyZnNfdHJ1bmNhdGVfbWV0 YV9jYWNoZXMoc2JpLCBhZGRyLCBucnBhZ2VzKTsKPj4gICAgICAgICB9Cj4+ICAgICAgICAgcmV0 dXJuIDA7Cj4+ICB9Cj4+IEBAIC0zMTM5LDcgKzMxMzgsNyBAQCBzdGF0aWMgaW50IF9fZmx1c2hf bmF0X2VudHJ5X3NldChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+ICAgICAgICAgYm9vbCB0 b19qb3VybmFsID0gdHJ1ZTsKPj4gICAgICAgICBzdHJ1Y3QgZjJmc19uYXRfYmxvY2sgKm5hdF9i bGs7Cj4+ICAgICAgICAgc3RydWN0IG5hdF9lbnRyeSAqbmUsICpjdXI7Cj4+IC0gICAgICAgc3Ry dWN0IGZvbGlvICpmb2xpbyA9IE5VTEw7Cj4+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Js b2NrICplbnRyeSA9IE5VTEw7Cj4+Cj4+ICAgICAgICAgLyoKPj4gICAgICAgICAgKiB0aGVyZSBh cmUgdHdvIHN0ZXBzIHRvIGZsdXNoIG5hdCBlbnRyaWVzOgo+PiBAQCAtMzE1MywxMSArMzE1Miwx MSBAQCBzdGF0aWMgaW50IF9fZmx1c2hfbmF0X2VudHJ5X3NldChzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmksCj4+ICAgICAgICAgaWYgKHRvX2pvdXJuYWwpIHsKPj4gICAgICAgICAgICAgICAgIGRv d25fd3JpdGUoJmN1cnNlZy0+am91cm5hbF9yd3NlbSk7Cj4+ICAgICAgICAgfSBlbHNlIHsKPj4g LSAgICAgICAgICAgICAgIGZvbGlvID0gZ2V0X25leHRfbmF0X2ZvbGlvKHNiaSwgc3RhcnRfbmlk KTsKPj4gLSAgICAgICAgICAgICAgIGlmIChJU19FUlIoZm9saW8pKQo+PiAtICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gUFRSX0VSUihmb2xpbyk7Cj4+ICsgICAgICAgICAgICAgICBlbnRy eSA9IGdldF9uZXh0X25hdF9jYWNoZShzYmksIHN0YXJ0X25pZCk7Cj4+ICsgICAgICAgICAgICAg ICBpZiAoSVNfRVJSKGVudHJ5KSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBU Ul9FUlIoZW50cnkpOwo+Pgo+PiAtICAgICAgICAgICAgICAgbmF0X2JsayA9IGZvbGlvX2FkZHJl c3MoZm9saW8pOwo+PiArICAgICAgICAgICAgICAgbmF0X2JsayA9IGNhY2hlX2FkZHJlc3MoZW50 cnkpOwo+PiAgICAgICAgICAgICAgICAgZjJmc19idWdfb24oc2JpLCAhbmF0X2Jsayk7Cj4+ICAg ICAgICAgfQo+Pgo+PiBAQCAtMzE5NCw3ICszMTkzLDcgQEAgc3RhdGljIGludCBfX2ZsdXNoX25h dF9lbnRyeV9zZXQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+PiAgICAgICAgICAgICAgICAg dXBfd3JpdGUoJmN1cnNlZy0+am91cm5hbF9yd3NlbSk7Cj4+ICAgICAgICAgfSBlbHNlIHsKPj4g ICAgICAgICAgICAgICAgIF9fdXBkYXRlX25hdF9iaXRzKHNiaSwgc3RhcnRfbmlkLCBuYXRfYmxr KTsKPj4gLSAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGZvbGlvLCB0cnVlKTsKPj4gKyAg ICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0cnVlKTsKPj4gICAgICAgICB9Cj4+ Cj4+ICAgICAgICAgLyogQWxsb3cgZGlydHkgbmF0cyBieSBub2RlIGJsb2NrIGFsbG9jYXRpb24g aW4gd3JpdGVfYmVnaW4gKi8KPj4gQEAgLTMyNjYsNyArMzI2NSw3IEBAIGludCBmMmZzX2ZsdXNo X25hdF9lbnRyaWVzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGNwX2NvbnRyb2wg KmNwYykKPj4gICAgICAgICAgICAgICAgICAgICAgICAgX19oYXNfY3Vyc3VtX3NwYWNlKHNiaSwg am91cm5hbCwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5 X2NvdW50LCBOQVRfSk9VUk5BTCkpCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl Owo+PiAtICAgICAgICAgICAgICAgZjJmc19yYV9tZXRhX3BhZ2VzKHNiaSwgc2V0LT5zZXQsIDEs IE1FVEFfTkFULCB0cnVlKTsKPj4gKyAgICAgICAgICAgICAgIGYyZnNfcmFfbWV0YV9jYWNoZXMo c2JpLCBzZXQtPnNldCwgMSwgTUVUQV9OQVQsIHRydWUpOwo+PiAgICAgICAgIH0KPj4gICAgICAg ICAvKiBmbHVzaCBkaXJ0eSBuYXRzIGluIG5hdCBlbnRyeSBzZXQgKi8KPj4gICAgICAgICBsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCB0bXAsICZzZXRzLCBzZXRfbGlzdCkgewo+PiBAQCAt MzMwMiwxNSArMzMwMSwxNSBAQCBzdGF0aWMgaW50IF9fZ2V0X25hdF9iaXRtYXBzKHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSkKPj4gICAgICAgICBuYXRfYml0c19hZGRyID0gX19zdGFydF9jcF9h ZGRyKHNiaSkgKyBCTEtTX1BFUl9TRUcoc2JpKSAtCj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5tX2ktPm5hdF9iaXRzX2Jsb2NrczsKPj4gICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgbm1faS0+bmF0X2JpdHNfYmxvY2tzOyBpKyspIHsKPj4gLSAgICAg ICAgICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW87Cj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3Qg ZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5Owo+Pgo+PiAtICAgICAgICAgICAgICAgZm9saW8gPSBm MmZzX2dldF9tZXRhX2ZvbGlvKHNiaSwgbmF0X2JpdHNfYWRkcisrKTsKPj4gLSAgICAgICAgICAg ICAgIGlmIChJU19FUlIoZm9saW8pKQo+PiAtICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g UFRSX0VSUihmb2xpbyk7Cj4+ICsgICAgICAgICAgICAgICBlbnRyeSA9IGYyZnNfZ2V0X21ldGFf Y2FjaGUoc2JpLCBuYXRfYml0c19hZGRyKyspOwo+PiArICAgICAgICAgICAgICAgaWYgKElTX0VS UihlbnRyeSkpCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGVudHJ5 KTsKPj4KPj4gICAgICAgICAgICAgICAgIG1lbWNweShubV9pLT5uYXRfYml0cyArIEYyRlNfQkxL X1RPX0JZVEVTKGkpLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Zm9saW9fYWRkcmVzcyhmb2xpbyksIEYyRlNfQkxLU0laRSk7Cj4+IC0gICAgICAgICAgICAgICBm MmZzX2ZvbGlvX3B1dChmb2xpbywgdHJ1ZSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjYWNoZV9hZGRyZXNzKGVudHJ5KSwgRjJGU19CTEtTSVpFKTsKPj4gKyAg ICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0cnVlKTsKPj4gICAgICAgICB9Cj4+ Cj4+ICAgICAgICAgY3BfdmVyIHw9IChjdXJfY3BfY3JjKGNrcHQpIDw8IDMyKTsKPj4gZGlmZiAt LWdpdCBhL2ZzL2YyZnMvbm9kZS5oIGIvZnMvZjJmcy9ub2RlLmgKPj4gaW5kZXggNWUxMTRmMzUy MDk5Li5kZThkY2Q1ZDQzOTIgMTAwNjQ0Cj4+IC0tLSBhL2ZzL2YyZnMvbm9kZS5oCj4+ICsrKyBi L2ZzL2YyZnMvbm9kZS5oCj4+IEBAIC0zMTEsOSArMzExLDkgQEAgc3RhdGljIGlubGluZSB2b2lk IGZpbGxfbm9kZV9mb290ZXJfYmxrYWRkcihzdHJ1Y3QgZm9saW8gKmZvbGlvLCBibG9ja190IGJs a2FkZHIKPj4gICAgICAgICBybi0+Zm9vdGVyLm5leHRfYmxrYWRkciA9IGNwdV90b19sZTMyKGJs a2FkZHIpOwo+PiAgfQo+Pgo+PiAtc3RhdGljIGlubGluZSBib29sIGlzX3JlY292ZXJhYmxlX2Ru b2RlKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pCj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgaXNf cmVjb3ZlcmFibGVfZG5vZGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBjb25zdCBzdHJ1Y3Qg Zm9saW8gKmZvbGlvKQo+PiAgewo+PiAtICAgICAgIHN0cnVjdCBmMmZzX2NoZWNrcG9pbnQgKmNr cHQgPSBGMkZTX0NLUFQoRjJGU19GX1NCKGZvbGlvKSk7Cj4+ICsgICAgICAgc3RydWN0IGYyZnNf Y2hlY2twb2ludCAqY2twdCA9IEYyRlNfQ0tQVChzYmkpOwo+PiAgICAgICAgIF9fdTY0IGNwX3Zl ciA9IGN1cl9jcF92ZXJzaW9uKGNrcHQpOwo+Pgo+PiAgICAgICAgIC8qIERvbid0IGNhcmUgY3Jj IHBhcnQsIGlmIGZzY2suZjJmcyBzZXRzIGl0LiAqLwo+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9y ZWNvdmVyeS5jIGIvZnMvZjJmcy9yZWNvdmVyeS5jCj4+IGluZGV4IGFhYTUyMjc3MzljOC4uNWNi NTZiNGMxODc5IDEwMDY0NAo+PiAtLS0gYS9mcy9mMmZzL3JlY292ZXJ5LmMKPj4gKysrIGIvZnMv ZjJmcy9yZWNvdmVyeS5jCj4+IEBAIC0xODIsMzMgKzE4MiwzMyBAQCBzdGF0aWMgY29uc3QgY2hh ciAqcmVjb3Zlcl9wcmludGFibGVfbmFtZShzdHJ1Y3QgaW5vZGUgKmlub2RlLAo+PiAgICAgICAg IHJldHVybiByYXctPmlfbmFtZTsKPj4gIH0KPj4KPj4gLXN0YXRpYyBpbnQgcmVjb3Zlcl9kZW50 cnkoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZvbGlvICppZm9saW8sCj4+ICtzdGF0aWMg aW50IHJlY292ZXJfZGVudHJ5KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmMmZzX2NhY2hl ZF9ibG9jayAqZW50cnksCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmRpcl9saXN0KQo+PiAgewo+PiAtICAgICAgIHN0 cnVjdCBmMmZzX2lub2RlICpyYXdfaW5vZGUgPSBGMkZTX0lOT0RFKGlmb2xpbyk7Cj4+ICsgICAg ICAgc3RydWN0IGYyZnNfaW5vZGUgKnJhd19pbm9kZSA9ICZDQUNIRURfTk9ERShlbnRyeSktPmk7 Cj4+ICAgICAgICAgbmlkX3QgcGlubyA9IGxlMzJfdG9fY3B1KHJhd19pbm9kZS0+aV9waW5vKTsK Pj4gICAgICAgICBzdHJ1Y3QgZjJmc19kaXJfZW50cnkgKmRlOwo+PiAgICAgICAgIHN0cnVjdCBm MmZzX2ZpbGVuYW1lIGZuYW1lOwo+PiAgICAgICAgIHN0cnVjdCBxc3RyIHVzcl9mbmFtZTsKPj4g ICAgICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlvOwo+PiAgICAgICAgIHN0cnVjdCBpbm9kZSAqZGly LCAqZWlub2RlOwo+PiAtICAgICAgIHN0cnVjdCBmc3luY19pbm9kZV9lbnRyeSAqZW50cnk7Cj4+ ICsgICAgICAgc3RydWN0IGZzeW5jX2lub2RlX2VudHJ5ICpmc3luY19lbnRyeTsKPj4gICAgICAg ICBpbnQgZXJyID0gMDsKPj4gICAgICAgICBjb25zdCBjaGFyICpuYW1lOwo+PiAgICAgICAgIGlu dCBuYW1lX2xlbjsKPj4KPj4gLSAgICAgICBlbnRyeSA9IGdldF9mc3luY19pbm9kZShkaXJfbGlz dCwgcGlubyk7Cj4+IC0gICAgICAgaWYgKCFlbnRyeSkgewo+PiAtICAgICAgICAgICAgICAgZW50 cnkgPSBhZGRfZnN5bmNfaW5vZGUoRjJGU19JX1NCKGlub2RlKSwgZGlyX2xpc3QsCj4+ICsgICAg ICAgZnN5bmNfZW50cnkgPSBnZXRfZnN5bmNfaW5vZGUoZGlyX2xpc3QsIHBpbm8pOwo+PiArICAg ICAgIGlmICghZnN5bmNfZW50cnkpIHsKPj4gKyAgICAgICAgICAgICAgIGZzeW5jX2VudHJ5ID0g YWRkX2ZzeW5jX2lub2RlKEYyRlNfSV9TQihpbm9kZSksIGRpcl9saXN0LAo+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm8sIGZhbHNl KTsKPj4gLSAgICAgICAgICAgICAgIGlmIChJU19FUlIoZW50cnkpKSB7Cj4+IC0gICAgICAgICAg ICAgICAgICAgICAgIGRpciA9IEVSUl9DQVNUKGVudHJ5KTsKPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgZXJyID0gUFRSX0VSUihlbnRyeSk7Cj4+ICsgICAgICAgICAgICAgICBpZiAoSVNfRVJS KGZzeW5jX2VudHJ5KSkgewo+PiArICAgICAgICAgICAgICAgICAgICAgICBkaXIgPSBFUlJfQ0FT VChmc3luY19lbnRyeSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIo ZnN5bmNfZW50cnkpOwo+PiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKPj4gICAg ICAgICAgICAgICAgIH0KPj4gICAgICAgICB9Cj4+Cj4+IC0gICAgICAgZGlyID0gZW50cnktPmlu b2RlOwo+PiArICAgICAgIGRpciA9IGZzeW5jX2VudHJ5LT5pbm9kZTsKPj4gICAgICAgICBlcnIg PSBpbml0X3JlY292ZXJlZF9maWxlbmFtZShkaXIsIGlub2RlLCByYXdfaW5vZGUsICZmbmFtZSwg JnVzcl9mbmFtZSk7Cj4+ICAgICAgICAgaWYgKGVycikKPj4gICAgICAgICAgICAgICAgIGdvdG8g b3V0Owo+PiBAQCAtMjU2LDE0ICsyNTYsMTQgQEAgc3RhdGljIGludCByZWNvdmVyX2RlbnRyeShz dHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZm9saW8gKmlmb2xpbywKPj4gIG91dDoKPj4gICAg ICAgICBuYW1lID0gcmVjb3Zlcl9wcmludGFibGVfbmFtZShpbm9kZSwgcmF3X2lub2RlLCAmbmFt ZV9sZW4pOwo+PiAgICAgICAgIGYyZnNfbm90aWNlKEYyRlNfSV9TQihpbm9kZSksICIlczogaW5v ID0gJXgsIG5hbWUgPSAlLipzLCBkaXIgPSAlbGx1LCBlcnIgPSAlZCIsCj4+IC0gICAgICAgICAg ICAgICAgICAgX19mdW5jX18sIGlub19vZl9ub2RlKGlmb2xpbyksIG5hbWVfbGVuLCBuYW1lLAo+ PiArICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBpbm9fb2Zfbm9kZShjYWNoZV9mb2xpbyhl bnRyeSkpLCBuYW1lX2xlbiwgbmFtZSwKPj4gICAgICAgICAgICAgICAgICAgICBJU19FUlIoZGly KSA/IDAgOiBkaXItPmlfaW5vLCBlcnIpOwo+PiAgICAgICAgIHJldHVybiBlcnI7Cj4+ICB9Cj4+ Cj4+IC1zdGF0aWMgaW50IHJlY292ZXJfcXVvdGFfZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBz dHJ1Y3QgZm9saW8gKmZvbGlvKQo+PiArc3RhdGljIGludCByZWNvdmVyX3F1b3RhX2RhdGEoc3Ry dWN0IGlub2RlICppbm9kZSwgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSkKPj4gIHsK Pj4gLSAgICAgICBzdHJ1Y3QgZjJmc19pbm9kZSAqcmF3ID0gRjJGU19JTk9ERShmb2xpbyk7Cj4+ ICsgICAgICAgc3RydWN0IGYyZnNfaW5vZGUgKnJhdyA9ICZDQUNIRURfTk9ERShlbnRyeSktPmk7 Cj4+ICAgICAgICAgc3RydWN0IGlhdHRyIGF0dHI7Cj4+ICAgICAgICAgdWlkX3QgaV91aWQgPSBs ZTMyX3RvX2NwdShyYXctPmlfdWlkKTsKPj4gICAgICAgICBnaWRfdCBpX2dpZCA9IGxlMzJfdG9f Y3B1KHJhdy0+aV9naWQpOwo+PiBAQCAtMzAwLDkgKzMwMCw5IEBAIHN0YXRpYyB2b2lkIHJlY292 ZXJfaW5saW5lX2ZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmMmZzX2lub2RlICpy aSkKPj4gICAgICAgICAgICAgICAgIGNsZWFyX2lub2RlX2ZsYWcoaW5vZGUsIEZJX0RBVEFfRVhJ U1QpOwo+PiAgfQo+Pgo+PiAtc3RhdGljIGludCByZWNvdmVyX2lub2RlKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pCj4+ICtzdGF0aWMgaW50IHJlY292ZXJfaW5vZGUo c3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSkKPj4g IHsKPj4gLSAgICAgICBzdHJ1Y3QgZjJmc19pbm9kZSAqcmF3ID0gRjJGU19JTk9ERShmb2xpbyk7 Cj4+ICsgICAgICAgc3RydWN0IGYyZnNfaW5vZGUgKnJhdyA9ICZDQUNIRURfTk9ERShlbnRyeSkt Pmk7Cj4+ICAgICAgICAgc3RydWN0IGYyZnNfaW5vZGVfaW5mbyAqZmkgPSBGMkZTX0koaW5vZGUp Owo+PiAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Cj4+ICAgICAgICAgaW50IG5hbWVfbGVuOwo+ PiBAQCAtMzEwLDcgKzMxMCw3IEBAIHN0YXRpYyBpbnQgcmVjb3Zlcl9pbm9kZShzdHJ1Y3QgaW5v ZGUgKmlub2RlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKQo+Pgo+PiAgICAgICAgIGlub2RlLT5pX21v ZGUgPSBsZTE2X3RvX2NwdShyYXctPmlfbW9kZSk7Cj4+Cj4+IC0gICAgICAgZXJyID0gcmVjb3Zl cl9xdW90YV9kYXRhKGlub2RlLCBmb2xpbyk7Cj4+ICsgICAgICAgZXJyID0gcmVjb3Zlcl9xdW90 YV9kYXRhKGlub2RlLCBlbnRyeSk7Cj4+ICAgICAgICAgaWYgKGVycikKPj4gICAgICAgICAgICAg ICAgIHJldHVybiBlcnI7Cj4+Cj4+IEBAIC0zNTcsNyArMzU3LDcgQEAgc3RhdGljIGludCByZWNv dmVyX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pCj4+ICAg ICAgICAgbmFtZSA9IHJlY292ZXJfcHJpbnRhYmxlX25hbWUoaW5vZGUsIHJhdywgJm5hbWVfbGVu KTsKPj4KPj4gICAgICAgICBmMmZzX25vdGljZShGMkZTX0lfU0IoaW5vZGUpLCAiJXM6IGlubyA9 ICV4LCBuYW1lID0gJS4qcywgaW5saW5lID0gJXgiLAo+PiAtICAgICAgICAgICAgICAgICAgIF9f ZnVuY19fLCBpbm9fb2Zfbm9kZShmb2xpbyksIG5hbWVfbGVuLCBuYW1lLAo+PiArICAgICAgICAg ICAgICAgICAgIF9fZnVuY19fLCBpbm9fb2Zfbm9kZShjYWNoZV9mb2xpbyhlbnRyeSkpLCBuYW1l X2xlbiwgbmFtZSwKPj4gICAgICAgICAgICAgICAgICAgICByYXctPmlfaW5saW5lKTsKPj4gICAg ICAgICByZXR1cm4gMDsKPj4gIH0KPj4gQEAgLTM4NiwzMCArMzg2LDMwIEBAIHN0YXRpYyBpbnQg c2FuaXR5X2NoZWNrX25vZGVfY2hhaW4oc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190 IGJsa2FkZHIsCj4+ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPj4KPj4gICAgICAgICBmb3Ig KGkgPSAwOyBpIDwgMjsgaSsrKSB7Cj4+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgZm9saW8gKmZv bGlvOwo+PiArICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeTsK Pj4KPj4gICAgICAgICAgICAgICAgIGlmICghZjJmc19pc192YWxpZF9ibGthZGRyKHNiaSwgKmJs a2FkZHJfZmFzdCwgTUVUQV9QT1IpKSB7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICppc19k ZXRlY3RpbmcgPSBmYWxzZTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ ICAgICAgICAgICAgICAgICB9Cj4+Cj4+IC0gICAgICAgICAgICAgICBmb2xpbyA9IGYyZnNfZ2V0 X3RtcF9mb2xpbyhzYmksICpibGthZGRyX2Zhc3QpOwo+PiAtICAgICAgICAgICAgICAgaWYgKElT X0VSUihmb2xpbykpCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGZv bGlvKTsKPj4gKyAgICAgICAgICAgICAgIGVudHJ5ID0gZjJmc19nZXRfdG1wX2NhY2hlKHNiaSwg KmJsa2FkZHJfZmFzdCk7Cj4+ICsgICAgICAgICAgICAgICBpZiAoSVNfRVJSKGVudHJ5KSkKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoZW50cnkpOwo+Pgo+PiAtICAg ICAgICAgICAgICAgaWYgKCFpc19yZWNvdmVyYWJsZV9kbm9kZShmb2xpbykpIHsKPj4gLSAgICAg ICAgICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoZm9saW8sIHRydWUpOwo+PiArICAgICAg ICAgICAgICAgaWYgKCFpc19yZWNvdmVyYWJsZV9kbm9kZShzYmksIGNhY2hlX2ZvbGlvKGVudHJ5 KSkpIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoZW50cnksIHRy dWUpOwo+PiAgICAgICAgICAgICAgICAgICAgICAgICAqaXNfZGV0ZWN0aW5nID0gZmFsc2U7Cj4+ ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwo+PiAgICAgICAgICAgICAgICAgfQo+ Pgo+PiAgICAgICAgICAgICAgICAgcmFfYmxvY2tzID0gYWRqdXN0X3Bvcl9yYV9ibG9ja3Moc2Jp LCByYV9ibG9ja3MsICpibGthZGRyX2Zhc3QsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuZXh0X2Jsa2FkZHJfb2Zfbm9kZShmb2xpbykpOwo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9ibGthZGRyX29mX25vZGUoY2FjaGVf Zm9saW8oZW50cnkpKSk7Cj4+Cj4+IC0gICAgICAgICAgICAgICAqYmxrYWRkcl9mYXN0ID0gbmV4 dF9ibGthZGRyX29mX25vZGUoZm9saW8pOwo+PiAtICAgICAgICAgICAgICAgZjJmc19mb2xpb19w dXQoZm9saW8sIHRydWUpOwo+PiArICAgICAgICAgICAgICAgKmJsa2FkZHJfZmFzdCA9IG5leHRf YmxrYWRkcl9vZl9ub2RlKGNhY2hlX2ZvbGlvKGVudHJ5KSk7Cj4+ICsgICAgICAgICAgICAgICBm MmZzX3B1dF9jYWNoZShlbnRyeSwgdHJ1ZSk7Cj4+Cj4+IC0gICAgICAgICAgICAgICBmMmZzX3Jh X21ldGFfcGFnZXNfY29uZChzYmksICpibGthZGRyX2Zhc3QsIHJhX2Jsb2Nrcyk7Cj4+ICsgICAg ICAgICAgICAgICBmMmZzX3JhX21ldGFfY2FjaGVzX2NvbmQoc2JpLCAqYmxrYWRkcl9mYXN0LCBy YV9ibG9ja3MpOwo+PiAgICAgICAgIH0KPj4KPj4gICAgICAgICBpZiAoKmJsa2FkZHJfZmFzdCA9 PSBibGthZGRyKSB7Cj4+IEBAIC00MzQsNDUgKzQzNCw0NyBAQCBzdGF0aWMgaW50IGZpbmRfZnN5 bmNfZG5vZGVzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGxpc3RfaGVhZCAqaGVh ZCwKPj4gICAgICAgICBibGthZGRyX2Zhc3QgPSBibGthZGRyOwo+Pgo+PiAgICAgICAgIHdoaWxl ICgxKSB7Cj4+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgZnN5bmNfaW5vZGVfZW50cnkgKmVudHJ5 Owo+PiAtICAgICAgICAgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbzsKPj4gKyAgICAgICAgICAg ICAgIHN0cnVjdCBmc3luY19pbm9kZV9lbnRyeSAqZnN5bmNfZW50cnk7Cj4+ICsgICAgICAgICAg ICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5Owo+PiArICAgICAgICAgICAgICAg c3RydWN0IGYyZnNfbm9kZSAqcm47Cj4+Cj4+ICAgICAgICAgICAgICAgICBpZiAoIWYyZnNfaXNf dmFsaWRfYmxrYWRkcihzYmksIGJsa2FkZHIsIE1FVEFfUE9SKSkKPj4gICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIDA7Cj4+Cj4+IC0gICAgICAgICAgICAgICBmb2xpbyA9IGYyZnNfZ2V0 X3RtcF9mb2xpbyhzYmksIGJsa2FkZHIpOwo+PiAtICAgICAgICAgICAgICAgaWYgKElTX0VSUihm b2xpbykpIHsKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gUFRSX0VSUihmb2xpbyk7 Cj4+ICsgICAgICAgICAgICAgICBlbnRyeSA9IGYyZnNfZ2V0X3RtcF9jYWNoZShzYmksIGJsa2Fk ZHIpOwo+PiArICAgICAgICAgICAgICAgaWYgKElTX0VSUihlbnRyeSkpIHsKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgZXJyID0gUFRSX0VSUihlbnRyeSk7Cj4+ICAgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOwo+PiAgICAgICAgICAgICAgICAgfQo+PiArICAgICAgICAgICAgICAgcm4g PSBDQUNIRURfTk9ERShlbnRyeSk7Cj4+Cj4+IC0gICAgICAgICAgICAgICBpZiAoIWlzX3JlY292 ZXJhYmxlX2Rub2RlKGZvbGlvKSkgewo+PiAtICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2Zv bGlvX3B1dChmb2xpbywgdHJ1ZSk7Cj4+ICsgICAgICAgICAgICAgICBpZiAoIWlzX3JlY292ZXJh YmxlX2Rub2RlKHNiaSwgY2FjaGVfZm9saW8oZW50cnkpKSkgewo+PiArICAgICAgICAgICAgICAg ICAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRyeSwgdHJ1ZSk7Cj4+ICAgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOwo+PiAgICAgICAgICAgICAgICAgfQo+Pgo+PiAtICAgICAgICAgICAgICAg aWYgKCFpc19mc3luY19kbm9kZShmb2xpbykpCj4+ICsgICAgICAgICAgICAgICBpZiAoIWlzX2Zz eW5jX2Rub2RlKGNhY2hlX2ZvbGlvKGVudHJ5KSkpCj4+ICAgICAgICAgICAgICAgICAgICAgICAg IGdvdG8gbmV4dDsKPj4KPj4gLSAgICAgICAgICAgICAgIGVudHJ5ID0gZ2V0X2ZzeW5jX2lub2Rl KGhlYWQsIGlub19vZl9ub2RlKGZvbGlvKSk7Cj4+IC0gICAgICAgICAgICAgICBpZiAoIWVudHJ5 KSB7Cj4+ICsgICAgICAgICAgICAgICBmc3luY19lbnRyeSA9IGdldF9mc3luY19pbm9kZShoZWFk LCBpbm9fb2Zfbm9kZShjYWNoZV9mb2xpbyhlbnRyeSkpKTsKPj4gKyAgICAgICAgICAgICAgIGlm ICghZnN5bmNfZW50cnkpIHsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBxdW90YV9p bm9kZSA9IGZhbHNlOwo+Pgo+PiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNoZWNrX29u bHkgJiYKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTX0lOT0RF KGZvbGlvKSAmJgo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNf ZGVudF9kbm9kZShmb2xpbykpIHsKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl cnIgPSBmMmZzX3JlY292ZXJfaW5vZGVfcGFnZShzYmksIGZvbGlvKTsKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTX0lOT0RFKGNhY2hlX2ZvbGlvKGVudHJ5KSkg JiYKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlbnRfZG5v ZGUoY2FjaGVfZm9saW8oZW50cnkpKSkgewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVyciA9IGYyZnNfcmVjb3Zlcl9pbm9kZV9wYWdlKHNiaSwgZW50cnkpOwo+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHsKPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGZvbGlvLCB0cnVlKTsKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5 LCB0cnVlKTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr Owo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KPj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBxdW90YV9pbm9kZSA9IHRydWU7Cj4+ICAgICAgICAgICAgICAgICAg ICAgICAgIH0KPj4KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgZW50cnkgPSBhZGRfZnN5bmNf aW5vZGUoc2JpLCBoZWFkLCBpbm9fb2Zfbm9kZShmb2xpbyksCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIGZzeW5jX2VudHJ5ID0gYWRkX2ZzeW5jX2lub2RlKHNiaSwgaGVhZCwgaW5vX29mX25v ZGUoY2FjaGVfZm9saW8oZW50cnkpKSwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RhX2lub2RlKTsKPj4gLSAgICAg ICAgICAgICAgICAgICAgICAgaWYgKElTX0VSUihlbnRyeSkpIHsKPj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlcnIgPSBQVFJfRVJSKGVudHJ5KTsKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgaWYgKElTX0VSUihmc3luY19lbnRyeSkpIHsKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlcnIgPSBQVFJfRVJSKGZzeW5jX2VudHJ5KTsKPj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvKgo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqIENQIHwgZG5vZGUoRikgfCBpbm9kZShERikKPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKiBGb3IgdGhpcyBjYXNlLCB3ZSBzaG91bGQgbm90IGdpdmUgdXAgbm93Lgo+PiBA QCAtNDgyLDE4ICs0ODQsMTggQEAgc3RhdGljIGludCBmaW5kX2ZzeW5jX2Rub2RlcyhzdHJ1Y3Qg ZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZXdfaW5vZGUgPSB0cnVlOwo+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0Owo+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KPj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xpbywgdHJ1ZSk7Cj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoZW50cnksIHRydWUpOwo+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+PiAgICAgICAgICAgICAgICAgICAgICAg ICB9Cj4+ICAgICAgICAgICAgICAgICB9Cj4+IC0gICAgICAgICAgICAgICBlbnRyeS0+YmxrYWRk ciA9IGJsa2FkZHI7Cj4+ICsgICAgICAgICAgICAgICBmc3luY19lbnRyeS0+YmxrYWRkciA9IGJs a2FkZHI7Cj4+Cj4+IC0gICAgICAgICAgICAgICBpZiAoSVNfSU5PREUoZm9saW8pICYmIGlzX2Rl bnRfZG5vZGUoZm9saW8pKQo+PiAtICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+bGFzdF9k ZW50cnkgPSBibGthZGRyOwo+PiArICAgICAgICAgICAgICAgaWYgKElTX0lOT0RFKGNhY2hlX2Zv bGlvKGVudHJ5KSkgJiYgaXNfZGVudF9kbm9kZShjYWNoZV9mb2xpbyhlbnRyeSkpKQo+PiArICAg ICAgICAgICAgICAgICAgICAgICBmc3luY19lbnRyeS0+bGFzdF9kZW50cnkgPSBibGthZGRyOwo+ PiAgbmV4dDoKPj4gICAgICAgICAgICAgICAgIC8qIGNoZWNrIG5leHQgc2VnbWVudCAqLwo+PiAt ICAgICAgICAgICAgICAgYmxrYWRkciA9IG5leHRfYmxrYWRkcl9vZl9ub2RlKGZvbGlvKTsKPj4g LSAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGZvbGlvLCB0cnVlKTsKPj4gKyAgICAgICAg ICAgICAgIGJsa2FkZHIgPSBuZXh0X2Jsa2FkZHJfb2Zfbm9kZShjYWNoZV9mb2xpbyhlbnRyeSkp Owo+PiArICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoZW50cnksIHRydWUpOwo+Pgo+PiAg ICAgICAgICAgICAgICAgZXJyID0gc2FuaXR5X2NoZWNrX25vZGVfY2hhaW4oc2JpLCBibGthZGRy LCAmYmxrYWRkcl9mYXN0LAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpc19k ZXRlY3RpbmcpOwo+PiBAQCAtNTE5LDcgKzUyMSw4IEBAIHN0YXRpYyBpbnQgY2hlY2tfaW5kZXhf aW5fcHJldl9ub2RlcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+ICAgICAgICAgdW5zaWdu ZWQgc2hvcnQgYmxrb2ZmID0gR0VUX0JMS09GRl9GUk9NX1NFRzAoc2JpLCBibGthZGRyKTsKPj4g ICAgICAgICBzdHJ1Y3QgZjJmc19zdW1tYXJ5X2Jsb2NrICpzdW1fbm9kZTsKPj4gICAgICAgICBz dHJ1Y3QgZjJmc19zdW1tYXJ5IHN1bTsKPj4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKnN1bV9mb2xp bywgKm5vZGVfZm9saW87Cj4+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRy eSA9IE5VTEw7Cj4+ICsgICAgICAgc3RydWN0IGZvbGlvICpub2RlX2ZvbGlvOwo+PiAgICAgICAg IHN0cnVjdCBkbm9kZV9vZl9kYXRhIHRkbiA9ICpkbjsKPj4gICAgICAgICBuaWRfdCBpbm8sIG5p ZDsKPj4gICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlOwo+PiBAQCAtNTQxLDEyICs1NDQsMTIg QEAgc3RhdGljIGludCBjaGVja19pbmRleF9pbl9wcmV2X25vZGVzKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSwKPj4gICAgICAgICAgICAgICAgIH0KPj4gICAgICAgICB9Cj4+Cj4+IC0gICAgICAg c3VtX2ZvbGlvID0gZjJmc19nZXRfc3VtX2ZvbGlvKHNiaSwgc2Vnbm8pOwo+PiAtICAgICAgIGlm IChJU19FUlIoc3VtX2ZvbGlvKSkKPj4gLSAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHN1 bV9mb2xpbyk7Cj4+IC0gICAgICAgc3VtX25vZGUgPSBTVU1fQkxLX1BBR0VfQUREUihzYmksIHN1 bV9mb2xpbywgc2Vnbm8pOwo+PiArICAgICAgIGVudHJ5ID0gZjJmc19nZXRfc3VtX2NhY2hlKHNi aSwgc2Vnbm8pOwo+PiArICAgICAgIGlmIChJU19FUlIoZW50cnkpKQo+PiArICAgICAgICAgICAg ICAgcmV0dXJuIFBUUl9FUlIoZW50cnkpOwo+PiArICAgICAgIHN1bV9ub2RlID0gU1VNX0JMS19F TlRSWV9BRERSKHNiaSwgZW50cnksIHNlZ25vKTsKPj4gICAgICAgICBzdW0gPSBzdW1fZW50cmll cyhzdW1fbm9kZSlbYmxrb2ZmXTsKPj4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChzdW1fZm9saW8s IHRydWUpOwo+PiArICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0cnVlKTsKPj4gIGdvdF9p dDoKPj4gICAgICAgICAvKiBVc2UgdGhlIGxvY2tlZCBkbm9kZSBwYWdlIGFuZCBpbm9kZSAqLwo+ PiAgICAgICAgIG5pZCA9IGxlMzJfdG9fY3B1KHN1bS5uaWQpOwo+PiBAQCAtNjQ1LDcgKzY0OCw3 IEBAIHN0YXRpYyBpbnQgZjJmc19yZXNlcnZlX25ld19ibG9ja19yZXRyeShzdHJ1Y3QgZG5vZGVf b2ZfZGF0YSAqZG4pCj4+ICB9Cj4+Cj4+ICBzdGF0aWMgaW50IGRvX3JlY292ZXJfZGF0YShzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlvKQo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Js b2NrICplbnRyeSkKPj4gIHsKPj4gICAgICAgICBzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSBkbjsKPj4g ICAgICAgICBzdHJ1Y3Qgbm9kZV9pbmZvIG5pOwo+PiBAQCAtNjUzLDE5ICs2NTYsMTkgQEAgc3Rh dGljIGludCBkb19yZWNvdmVyX2RhdGEoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3Qg aW5vZGUgKmlub2RlLAo+PiAgICAgICAgIGludCBlcnIgPSAwLCByZWNvdmVyZWQgPSAwOwo+Pgo+ PiAgICAgICAgIC8qIHN0ZXAgMTogcmVjb3ZlciB4YXR0ciAqLwo+PiAtICAgICAgIGlmIChJU19J Tk9ERShmb2xpbykpIHsKPj4gLSAgICAgICAgICAgICAgIGVyciA9IGYyZnNfcmVjb3Zlcl9pbmxp bmVfeGF0dHIoaW5vZGUsIGZvbGlvKTsKPj4gKyAgICAgICBpZiAoSVNfSU5PREUoY2FjaGVfZm9s aW8oZW50cnkpKSkgewo+PiArICAgICAgICAgICAgICAgZXJyID0gZjJmc19yZWNvdmVyX2lubGlu ZV94YXR0cihpbm9kZSwgZW50cnkpOwo+PiAgICAgICAgICAgICAgICAgaWYgKGVycikKPj4gICAg ICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4+IC0gICAgICAgfSBlbHNlIGlmIChmMmZz X2hhc194YXR0cl9ibG9jayhvZnNfb2Zfbm9kZShmb2xpbykpKSB7Cj4+IC0gICAgICAgICAgICAg ICBlcnIgPSBmMmZzX3JlY292ZXJfeGF0dHJfZGF0YShpbm9kZSwgZm9saW8pOwo+PiArICAgICAg IH0gZWxzZSBpZiAoZjJmc19oYXNfeGF0dHJfYmxvY2sob2ZzX29mX25vZGUoY2FjaGVfZm9saW8o ZW50cnkpKSkpIHsKPj4gKyAgICAgICAgICAgICAgIGVyciA9IGYyZnNfcmVjb3Zlcl94YXR0cl9k YXRhKGlub2RlLCBlbnRyeSk7Cj4+ICAgICAgICAgICAgICAgICBpZiAoIWVycikKPj4gICAgICAg ICAgICAgICAgICAgICAgICAgcmVjb3ZlcmVkKys7Cj4+ICAgICAgICAgICAgICAgICBnb3RvIG91 dDsKPj4gICAgICAgICB9Cj4+Cj4+ICAgICAgICAgLyogc3RlcCAyOiByZWNvdmVyIGlubGluZSBk YXRhICovCj4+IC0gICAgICAgZXJyID0gZjJmc19yZWNvdmVyX2lubGluZV9kYXRhKGlub2RlLCBm b2xpbyk7Cj4+ICsgICAgICAgZXJyID0gZjJmc19yZWNvdmVyX2lubGluZV9kYXRhKGlub2RlLCBl bnRyeSk7Cj4+ICAgICAgICAgaWYgKGVycikgewo+PiAgICAgICAgICAgICAgICAgaWYgKGVyciA9 PSAxKQo+PiAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSAwOwo+PiBAQCAtNjczLDggKzY3 Niw4IEBAIHN0YXRpYyBpbnQgZG9fcmVjb3Zlcl9kYXRhKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwgc3RydWN0IGlub2RlICppbm9kZSwKPj4gICAgICAgICB9Cj4+Cj4+ICAgICAgICAgLyogc3Rl cCAzOiByZWNvdmVyIGRhdGEgaW5kaWNlcyAqLwo+PiAtICAgICAgIHN0YXJ0ID0gZjJmc19zdGFy dF9iaWR4X29mX25vZGUob2ZzX29mX25vZGUoZm9saW8pLCBpbm9kZSk7Cj4+IC0gICAgICAgZW5k ID0gc3RhcnQgKyBBRERSU19QRVJfUEFHRShmb2xpbywgaW5vZGUpOwo+PiArICAgICAgIHN0YXJ0 ID0gZjJmc19zdGFydF9iaWR4X29mX25vZGUob2ZzX29mX25vZGUoY2FjaGVfZm9saW8oZW50cnkp KSwgaW5vZGUpOwo+PiArICAgICAgIGVuZCA9IHN0YXJ0ICsgYWRkcnNfcGVyX3BhZ2UoaW5vZGUs IElTX0lOT0RFKGNhY2hlX2ZvbGlvKGVudHJ5KSkpOwo+Pgo+PiAgICAgICAgIHNldF9uZXdfZG5v ZGUoJmRuLCBpbm9kZSwgTlVMTCwgTlVMTCwgMCk7Cj4+ICByZXRyeV9kbjoKPj4gQEAgLTY5Mywx MiArNjk2LDEyIEBAIHN0YXRpYyBpbnQgZG9fcmVjb3Zlcl9kYXRhKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSwgc3RydWN0IGlub2RlICppbm9kZSwKPj4gICAgICAgICBpZiAoZXJyKQo+PiAgICAg ICAgICAgICAgICAgZ290byBlcnI7Cj4+Cj4+IC0gICAgICAgZjJmc19idWdfb24oc2JpLCBuaS5p bm8gIT0gaW5vX29mX25vZGUoZm9saW8pKTsKPj4gKyAgICAgICBmMmZzX2J1Z19vbihzYmksIG5p LmlubyAhPSBpbm9fb2Zfbm9kZShjYWNoZV9mb2xpbyhlbnRyeSkpKTsKPj4KPj4gLSAgICAgICBp ZiAob2ZzX29mX25vZGUoZG4ubm9kZV9mb2xpbykgIT0gb2ZzX29mX25vZGUoZm9saW8pKSB7Cj4+ ICsgICAgICAgaWYgKG9mc19vZl9ub2RlKGRuLm5vZGVfZm9saW8pICE9IG9mc19vZl9ub2RlKGNh Y2hlX2ZvbGlvKGVudHJ5KSkpIHsKPj4gICAgICAgICAgICAgICAgIGYyZnNfd2FybihzYmksICJJ bmNvbnNpc3RlbnQgb2ZzX29mX25vZGUsIGlubzolbGx1LCBvZnM6JXUsICV1IiwKPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICBpbm9kZS0+aV9pbm8sIG9mc19vZl9ub2RlKGRuLm5vZGVfZm9s aW8pLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgIG9mc19vZl9ub2RlKGZvbGlvKSk7Cj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgb2ZzX29mX25vZGUoY2FjaGVfZm9saW8oZW50cnkp KSk7Cj4+ICAgICAgICAgICAgICAgICBlcnIgPSAtRUZTQ09SUlVQVEVEOwo+PiAgICAgICAgICAg ICAgICAgZjJmc19oYW5kbGVfZXJyb3Ioc2JpLCBFUlJPUl9JTkNPTlNJU1RFTlRfRk9PVEVSKTsK Pj4gICAgICAgICAgICAgICAgIGZzZXJyb3JfcmVwb3J0X2ZpbGVfbWV0YWRhdGEoZG4uaW5vZGUs IGVyciwgR0ZQX05PRlMpOwo+PiBAQCAtNzA5LDcgKzcxMiw3IEBAIHN0YXRpYyBpbnQgZG9fcmVj b3Zlcl9kYXRhKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGlub2RlICppbm9kZSwK Pj4gICAgICAgICAgICAgICAgIGJsb2NrX3Qgc3JjLCBkZXN0Owo+Pgo+PiAgICAgICAgICAgICAg ICAgc3JjID0gZjJmc19kYXRhX2Jsa2FkZHIoJmRuKTsKPj4gLSAgICAgICAgICAgICAgIGRlc3Qg PSBkYXRhX2Jsa2FkZHIoZG4uaW5vZGUsIGZvbGlvLCBkbi5vZnNfaW5fbm9kZSk7Cj4+ICsgICAg ICAgICAgICAgICBkZXN0ID0gZGF0YV9ibGthZGRyKGRuLmlub2RlLCBjYWNoZV9mb2xpbyhlbnRy eSksIGRuLm9mc19pbl9ub2RlKTsKPj4KPj4gICAgICAgICAgICAgICAgIGlmIChfX2lzX3ZhbGlk X2RhdGFfYmxrYWRkcihzcmMpICYmCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICFmMmZzX2lz X3ZhbGlkX2Jsa2FkZHIoc2JpLCBzcmMsIE1FVEFfUE9SKSkgewo+PiBAQCAtNzg0LDE2ICs3ODcs MTYgQEAgc3RhdGljIGludCBkb19yZWNvdmVyX2RhdGEoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAo+PiAgICAgICAgICAgICAgICAgfQo+PiAgICAgICAgIH0K Pj4KPj4gLSAgICAgICBjb3B5X25vZGVfZm9vdGVyKGRuLm5vZGVfZm9saW8sIGZvbGlvKTsKPj4g KyAgICAgICBjb3B5X25vZGVfZm9vdGVyKGRuLm5vZGVfZm9saW8sIGNhY2hlX2ZvbGlvKGVudHJ5 KSk7Cj4+ICAgICAgICAgZmlsbF9ub2RlX2Zvb3Rlcihkbi5ub2RlX2ZvbGlvLCBkbi5uaWQsIG5p LmlubywKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mc19vZl9u b2RlKGZvbGlvKSwgZmFsc2UpOwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2ZzX29mX25vZGUoY2FjaGVfZm9saW8oZW50cnkpKSwgZmFsc2UpOwo+PiAgICAgICAg IGZvbGlvX21hcmtfZGlydHkoZG4ubm9kZV9mb2xpbyk7Cj4+ICBlcnI6Cj4+ICAgICAgICAgZjJm c19wdXRfZG5vZGUoJmRuKTsKPj4gIG91dDoKPj4gICAgICAgICBmMmZzX25vdGljZShzYmksICJy ZWNvdmVyX2RhdGE6IGlubyA9ICVsbHgsIG5pZCA9ICV4IChpX3NpemU6ICVzKSwgIgo+PiAgICAg ICAgICAgICAgICAgICAgICJyYW5nZSAoJXUsICV1KSwgcmVjb3ZlcmVkID0gJWQsIGVyciA9ICVk IiwKPj4gLSAgICAgICAgICAgICAgICAgICBpbm9kZS0+aV9pbm8sIG5pZF9vZl9ub2RlKGZvbGlv KSwKPj4gKyAgICAgICAgICAgICAgICAgICBpbm9kZS0+aV9pbm8sIG5pZF9vZl9ub2RlKGNhY2hl X2ZvbGlvKGVudHJ5KSksCj4+ICAgICAgICAgICAgICAgICAgICAgZmlsZV9rZWVwX2lzaXplKGlu b2RlKSA/ICJrZWVwIiA6ICJyZWNvdmVyIiwKPj4gICAgICAgICAgICAgICAgICAgICBzdGFydCwg ZW5kLCByZWNvdmVyZWQsIGVycik7Cj4+ICAgICAgICAgcmV0dXJuIGVycjsKPj4gQEAgLTgyMCwy NiArODIzLDI2IEBAIHN0YXRpYyBpbnQgcmVjb3Zlcl9kYXRhKHN0cnVjdCBmMmZzX3NiX2luZm8g KnNiaSwgc3RydWN0IGxpc3RfaGVhZCAqaW5vZGVfbGlzdCwKPj4gICAgICAgICBibGthZGRyID0g TkVYVF9GUkVFX0JMS0FERFIoc2JpLCBjdXJzZWcpOwo+Pgo+PiAgICAgICAgIHdoaWxlICgxKSB7 Cj4+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgZnN5bmNfaW5vZGVfZW50cnkgKmVudHJ5Owo+PiAt ICAgICAgICAgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbzsKPj4gKyAgICAgICAgICAgICAgIHN0 cnVjdCBmc3luY19pbm9kZV9lbnRyeSAqZnN5bmNfZW50cnk7Cj4+ICsgICAgICAgICAgICAgICBz dHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5Owo+Pgo+PiAgICAgICAgICAgICAgICAgaWYg KCFmMmZzX2lzX3ZhbGlkX2Jsa2FkZHIoc2JpLCBibGthZGRyLCBNRVRBX1BPUikpCj4+ICAgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+Pgo+PiAtICAgICAgICAgICAgICAgZm9saW8gPSBm MmZzX2dldF90bXBfZm9saW8oc2JpLCBibGthZGRyKTsKPj4gLSAgICAgICAgICAgICAgIGlmIChJ U19FUlIoZm9saW8pKSB7Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIo Zm9saW8pOwo+PiArICAgICAgICAgICAgICAgZW50cnkgPSBmMmZzX2dldF90bXBfY2FjaGUoc2Jp LCBibGthZGRyKTsKPj4gKyAgICAgICAgICAgICAgIGlmIChJU19FUlIoZW50cnkpKSB7Cj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIoZW50cnkpOwo+PiAgICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsKPj4gICAgICAgICAgICAgICAgIH0KPj4KPj4gLSAgICAgICAg ICAgICAgIGlmICghaXNfcmVjb3ZlcmFibGVfZG5vZGUoZm9saW8pKSB7Cj4+IC0gICAgICAgICAg ICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGZvbGlvLCB0cnVlKTsKPj4gKyAgICAgICAgICAg ICAgIGlmICghaXNfcmVjb3ZlcmFibGVfZG5vZGUoc2JpLCBjYWNoZV9mb2xpbyhlbnRyeSkpKSB7 Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0cnVlKTsK Pj4gICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICAgICAgICAgICAgICAgICB9Cj4+ ICAgICAgICAgICAgICAgICByZWNvdmVyYWJsZV9kbm9kZSsrOwo+Pgo+PiAtICAgICAgICAgICAg ICAgZW50cnkgPSBnZXRfZnN5bmNfaW5vZGUoaW5vZGVfbGlzdCwgaW5vX29mX25vZGUoZm9saW8p KTsKPj4gLSAgICAgICAgICAgICAgIGlmICghZW50cnkpCj4+ICsgICAgICAgICAgICAgICBmc3lu Y19lbnRyeSA9IGdldF9mc3luY19pbm9kZShpbm9kZV9saXN0LCBpbm9fb2Zfbm9kZShjYWNoZV9m b2xpbyhlbnRyeSkpKTsKPj4gKyAgICAgICAgICAgICAgIGlmICghZnN5bmNfZW50cnkpCj4+ICAg ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dDsKPj4gICAgICAgICAgICAgICAgIGZzeW5j ZWRfZG5vZGUrKzsKPj4gICAgICAgICAgICAgICAgIC8qCj4+IEBAIC04NDcsNDAgKzg1MCw0MCBA QCBzdGF0aWMgaW50IHJlY292ZXJfZGF0YShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVj dCBsaXN0X2hlYWQgKmlub2RlX2xpc3QsCj4+ICAgICAgICAgICAgICAgICAgKiBJbiB0aGlzIGNh c2UsIHdlIGNhbiBsb3NlIHRoZSBsYXRlc3QgaW5vZGUoeCkuCj4+ICAgICAgICAgICAgICAgICAg KiBTbywgY2FsbCByZWNvdmVyX2lub2RlIGZvciB0aGUgaW5vZGUgdXBkYXRlLgo+PiAgICAgICAg ICAgICAgICAgICovCj4+IC0gICAgICAgICAgICAgICBpZiAoSVNfSU5PREUoZm9saW8pKSB7Cj4+ IC0gICAgICAgICAgICAgICAgICAgICAgIGVyciA9IHJlY292ZXJfaW5vZGUoZW50cnktPmlub2Rl LCBmb2xpbyk7Cj4+ICsgICAgICAgICAgICAgICBpZiAoSVNfSU5PREUoY2FjaGVfZm9saW8oZW50 cnkpKSkgewo+PiArICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSByZWNvdmVyX2lub2RlKGZz eW5jX2VudHJ5LT5pbm9kZSwgZW50cnkpOwo+PiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo ZXJyKSB7Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQo Zm9saW8sIHRydWUpOwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfcHV0 X2NhY2hlKGVudHJ5LCB0cnVlKTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgfQo+PiAgICAgICAgICAgICAgICAgICAg ICAgICByZWNvdmVyZWRfaW5vZGUrKzsKPj4gICAgICAgICAgICAgICAgIH0KPj4gLSAgICAgICAg ICAgICAgIGlmIChlbnRyeS0+bGFzdF9kZW50cnkgPT0gYmxrYWRkcikgewo+PiAtICAgICAgICAg ICAgICAgICAgICAgICBlcnIgPSByZWNvdmVyX2RlbnRyeShlbnRyeS0+aW5vZGUsIGZvbGlvLCBk aXJfbGlzdCk7Cj4+ICsgICAgICAgICAgICAgICBpZiAoZnN5bmNfZW50cnktPmxhc3RfZGVudHJ5 ID09IGJsa2FkZHIpIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gcmVjb3Zlcl9k ZW50cnkoZnN5bmNfZW50cnktPmlub2RlLCBlbnRyeSwgZGlyX2xpc3QpOwo+PiAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoZXJyKSB7Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZjJmc19mb2xpb19wdXQoZm9saW8sIHRydWUpOwo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0cnVlKTsKPj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgfQo+PiAg ICAgICAgICAgICAgICAgICAgICAgICByZWNvdmVyZWRfZGVudHJ5Kys7Cj4+ICAgICAgICAgICAg ICAgICB9Cj4+IC0gICAgICAgICAgICAgICBlcnIgPSBkb19yZWNvdmVyX2RhdGEoc2JpLCBlbnRy eS0+aW5vZGUsIGZvbGlvKTsKPj4gKyAgICAgICAgICAgICAgIGVyciA9IGRvX3JlY292ZXJfZGF0 YShzYmksIGZzeW5jX2VudHJ5LT5pbm9kZSwgZW50cnkpOwo+PiAgICAgICAgICAgICAgICAgaWYg KGVycikgewo+PiAtICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xpbywg dHJ1ZSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0 cnVlKTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICAgICAgICAgICAgICAg ICB9Cj4+ICAgICAgICAgICAgICAgICByZWNvdmVyZWRfZG5vZGUrKzsKPj4KPj4gLSAgICAgICAg ICAgICAgIGlmIChlbnRyeS0+YmxrYWRkciA9PSBibGthZGRyKQo+PiAtICAgICAgICAgICAgICAg ICAgICAgICBsaXN0X21vdmVfdGFpbCgmZW50cnktPmxpc3QsIHRtcF9pbm9kZV9saXN0KTsKPj4g KyAgICAgICAgICAgICAgIGlmIChmc3luY19lbnRyeS0+YmxrYWRkciA9PSBibGthZGRyKQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICBsaXN0X21vdmVfdGFpbCgmZnN5bmNfZW50cnktPmxpc3Qs IHRtcF9pbm9kZV9saXN0KTsKPj4gIG5leHQ6Cj4+ICAgICAgICAgICAgICAgICByYV9ibG9ja3Mg PSBhZGp1c3RfcG9yX3JhX2Jsb2NrcyhzYmksIHJhX2Jsb2NrcywgYmxrYWRkciwKPj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfYmxrYWRkcl9vZl9ub2RlKGZv bGlvKSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0X2Js a2FkZHJfb2Zfbm9kZShjYWNoZV9mb2xpbyhlbnRyeSkpKTsKPj4KPj4gICAgICAgICAgICAgICAg IC8qIGNoZWNrIG5leHQgc2VnbWVudCAqLwo+PiAtICAgICAgICAgICAgICAgYmxrYWRkciA9IG5l eHRfYmxrYWRkcl9vZl9ub2RlKGZvbGlvKTsKPj4gLSAgICAgICAgICAgICAgIGYyZnNfZm9saW9f cHV0KGZvbGlvLCB0cnVlKTsKPj4gKyAgICAgICAgICAgICAgIGJsa2FkZHIgPSBuZXh0X2Jsa2Fk ZHJfb2Zfbm9kZShjYWNoZV9mb2xpbyhlbnRyeSkpOwo+PiArICAgICAgICAgICAgICAgZjJmc19w dXRfY2FjaGUoZW50cnksIHRydWUpOwo+Pgo+PiAtICAgICAgICAgICAgICAgZjJmc19yYV9tZXRh X3BhZ2VzX2NvbmQoc2JpLCBibGthZGRyLCByYV9ibG9ja3MpOwo+PiArICAgICAgICAgICAgICAg ZjJmc19yYV9tZXRhX2NhY2hlc19jb25kKHNiaSwgYmxrYWRkciwgcmFfYmxvY2tzKTsKPj4gICAg ICAgICAgICAgICAgIHRvdGFsX2Rub2RlKys7Cj4+ICAgICAgICAgfQo+PiAgICAgICAgIGlmICgh ZXJyKQo+PiBAQCAtOTM3LDEyICs5NDAsMTEgQEAgaW50IGYyZnNfcmVjb3Zlcl9mc3luY19kYXRh KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYm9vbCBjaGVja19vbmx5KQo+PiAgICAgICAgIGRl c3Ryb3lfZnN5bmNfZG5vZGVzKCZ0bXBfaW5vZGVfbGlzdCwgZXJyKTsKPj4KPj4gICAgICAgICAv KiB0cnVuY2F0ZSBtZXRhIHBhZ2VzIHRvIGJlIHVzZWQgYnkgdGhlIHJlY292ZXJ5ICovCj4+IC0g ICAgICAgdHJ1bmNhdGVfaW5vZGVfcGFnZXNfcmFuZ2UoTUVUQV9NQVBQSU5HKHNiaSksCj4+IC0g ICAgICAgICAgICAgICAgICAgICAgIChsb2ZmX3QpTUFJTl9CTEtBRERSKHNiaSkgPDwgUEFHRV9T SElGVCwgLTEpOwo+PiAtCj4+ICsgICAgICAgZjJmc190cnVuY2F0ZV9tZXRhX2NhY2hlcyhzYmks IE1BSU5fQkxLQUREUihzYmkpLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1B WF9CTEtBRERSKHNiaSkgLSBNQUlOX0JMS0FERFIoc2JpKSk7Cj4+ICAgICAgICAgaWYgKGVycikg ewo+PiAgICAgICAgICAgICAgICAgdHJ1bmNhdGVfaW5vZGVfcGFnZXNfZmluYWwoTk9ERV9NQVBQ SU5HKHNiaSkpOwo+PiAtICAgICAgICAgICAgICAgdHJ1bmNhdGVfaW5vZGVfcGFnZXNfZmluYWwo TUVUQV9NQVBQSU5HKHNiaSkpOwo+PiArICAgICAgICAgICAgICAgZjJmc190cnVuY2F0ZV9tZXRh X2NhY2hlcyhzYmksIDAsIFVMT05HX01BWCk7Cj4+ICAgICAgICAgfQo+Pgo+PiAgICAgICAgIC8q Cj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL3NlZ21lbnQuYyBiL2ZzL2YyZnMvc2VnbWVudC5jCj4+ IGluZGV4IGVkNmYyOTQ3MjEwYi4uZTZmZTNkZmE4ZmE2IDEwMDY0NAo+PiAtLS0gYS9mcy9mMmZz L3NlZ21lbnQuYwo+PiArKysgYi9mcy9mMmZzL3NlZ21lbnQuYwo+PiBAQCAtMjc3NCw2MyArMjc3 NCw2MiBAQCBpbnQgZjJmc19ucGFnZXNfZm9yX3N1bW1hcnlfZmx1c2goc3RydWN0IGYyZnNfc2Jf aW5mbyAqc2JpLCBib29sIGZvcl9yYSkKPj4gICAgICAgICByZXR1cm4gMzsKPj4gIH0KPj4KPj4g LS8qCj4+IC0gKiBDYWxsZXIgc2hvdWxkIHB1dCB0aGlzIHN1bW1hcnkgZm9saW8KPj4gLSAqLwo+ PiAtc3RydWN0IGZvbGlvICpmMmZzX2dldF9zdW1fZm9saW8oc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpLCB1bnNpZ25lZCBpbnQgc2Vnbm8pCj4+ICsKPj4gK3N0cnVjdCBmMmZzX2NhY2hlZF9ibG9j ayAqZjJmc19nZXRfc3VtX2NhY2hlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4gKyAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBzZWdubykKPj4gIHsKPj4gICAgICAgICBpZiAodW5saWtl bHkoZjJmc19jcF9lcnJvcihzYmkpKSkKPj4gICAgICAgICAgICAgICAgIHJldHVybiBFUlJfUFRS KC1FSU8pOwo+PiAtICAgICAgIHJldHVybiBmMmZzX2dldF9tZXRhX2ZvbGlvX3JldHJ5KHNiaSwg R0VUX1NVTV9CTE9DSyhzYmksIHNlZ25vKSk7Cj4+ICsgICAgICAgcmV0dXJuIGYyZnNfZ2V0X21l dGFfY2FjaGVfcmV0cnkoc2JpLCBHRVRfU1VNX0JMT0NLKHNiaSwgc2Vnbm8pKTsKPj4gIH0KPj4K Pj4gIHZvaWQgZjJmc191cGRhdGVfbWV0YV9wYWdlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwK Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNyYywgYmxv Y2tfdCBibGtfYWRkcikKPj4gIHsKPj4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlvOwo+PiAr ICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnk7Cj4+Cj4+ICAgICAgICAgaWYg KCFmMmZzX3NiX2hhc19wYWNrZWRfc3NhKHNiaSkpCj4+IC0gICAgICAgICAgICAgICBmb2xpbyA9 IGYyZnNfZ3JhYl9tZXRhX2ZvbGlvKHNiaSwgYmxrX2FkZHIpOwo+PiArICAgICAgICAgICAgICAg ZW50cnkgPSBmMmZzX2dyYWJfbWV0YV9jYWNoZShzYmksIGJsa19hZGRyKTsKPj4gICAgICAgICBl bHNlCj4+IC0gICAgICAgICAgICAgICBmb2xpbyA9IGYyZnNfZ2V0X21ldGFfZm9saW9fcmV0cnko c2JpLCBibGtfYWRkcik7Cj4+ICsgICAgICAgICAgICAgICBlbnRyeSA9IGYyZnNfZ2V0X21ldGFf Y2FjaGVfcmV0cnkoc2JpLCBibGtfYWRkcik7Cj4+Cj4+IC0gICAgICAgaWYgKElTX0VSUihmb2xp bykpCj4+ICsgICAgICAgaWYgKElTX0VSUihlbnRyeSkpCj4+ICAgICAgICAgICAgICAgICByZXR1 cm47Cj4+Cj4+IC0gICAgICAgbWVtY3B5KGZvbGlvX2FkZHJlc3MoZm9saW8pLCBzcmMsIFBBR0Vf U0laRSk7Cj4+IC0gICAgICAgZm9saW9fbWFya19kaXJ0eShmb2xpbyk7Cj4+IC0gICAgICAgZjJm c19mb2xpb19wdXQoZm9saW8sIHRydWUpOwo+PiArICAgICAgIG1lbWNweShjYWNoZV9hZGRyZXNz KGVudHJ5KSwgc3JjLCBzYmktPmJsb2Nrc2l6ZSk7Cj4+ICsgICAgICAgZjJmc19tYXJrX2NhY2hl X2RpcnR5KGVudHJ5KTsKPj4gKyAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRyeSwgdHJ1ZSk7Cj4+ ICB9Cj4+Cj4+ICBzdGF0aWMgdm9pZCB3cml0ZV9zdW1fcGFnZShzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmksCj4+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19zdW1tYXJ5X2Jsb2NrICpzdW1f YmxrLCB1bnNpZ25lZCBpbnQgc2Vnbm8pCj4+ICB7Cj4+IC0gICAgICAgc3RydWN0IGZvbGlvICpm b2xpbzsKPj4gKyAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5Owo+Pgo+PiAg ICAgICAgIGlmICghZjJmc19zYl9oYXNfcGFja2VkX3NzYShzYmkpKQo+PiAgICAgICAgICAgICAg ICAgcmV0dXJuIGYyZnNfdXBkYXRlX21ldGFfcGFnZShzYmksICh2b2lkICopc3VtX2JsaywKPj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfU1VNX0JMT0NLKHNiaSwgc2Vnbm8p KTsKPj4KPj4gLSAgICAgICBmb2xpbyA9IGYyZnNfZ2V0X3N1bV9mb2xpbyhzYmksIHNlZ25vKTsK Pj4gLSAgICAgICBpZiAoSVNfRVJSKGZvbGlvKSkKPj4gKyAgICAgICBlbnRyeSA9IGYyZnNfZ2V0 X3N1bV9jYWNoZShzYmksIHNlZ25vKTsKPj4gKyAgICAgICBpZiAoSVNfRVJSKGVudHJ5KSkKPj4g ICAgICAgICAgICAgICAgIHJldHVybjsKPj4KPj4gLSAgICAgICBtZW1jcHkoU1VNX0JMS19QQUdF X0FERFIoc2JpLCBmb2xpbywgc2Vnbm8pLCBzdW1fYmxrLAo+PiArICAgICAgIG1lbWNweShTVU1f QkxLX0VOVFJZX0FERFIoc2JpLCBlbnRyeSwgc2Vnbm8pLCBzdW1fYmxrLAo+PiAgICAgICAgICAg ICAgICAgICAgICAgICBzYmktPnN1bV9ibG9ja3NpemUpOwo+PiAtICAgICAgIGZvbGlvX21hcmtf ZGlydHkoZm9saW8pOwo+PiAtICAgICAgIGYyZnNfZm9saW9fcHV0KGZvbGlvLCB0cnVlKTsKPj4g KyAgICAgICBmMmZzX21hcmtfY2FjaGVfZGlydHkoZW50cnkpOwo+PiArICAgICAgIGYyZnNfcHV0 X2NhY2hlKGVudHJ5LCB0cnVlKTsKPj4gIH0KPj4KPj4gIHN0YXRpYyB2b2lkIHdyaXRlX2N1cnJl bnRfc3VtX3BhZ2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZSwgYmxvY2tfdCBibGtfYWRk cikKPj4gIHsKPj4gICAgICAgICBzdHJ1Y3QgY3Vyc2VnX2luZm8gKmN1cnNlZyA9IENVUlNFR19J KHNiaSwgdHlwZSk7Cj4+IC0gICAgICAgc3RydWN0IGZvbGlvICpmb2xpbyA9IGYyZnNfZ3JhYl9t ZXRhX2ZvbGlvKHNiaSwgYmxrX2FkZHIpOwo+PiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9i bG9jayAqZW50cnkgPSBmMmZzX2dyYWJfbWV0YV9jYWNoZShzYmksIGJsa19hZGRyKTsKPj4gICAg ICAgICBzdHJ1Y3QgZjJmc19zdW1tYXJ5X2Jsb2NrICpzcmMgPSBjdXJzZWctPnN1bV9ibGs7Cj4+ ICAgICAgICAgc3RydWN0IGYyZnNfc3VtbWFyeV9ibG9jayAqZHN0Owo+Pgo+PiAtICAgICAgIGRz dCA9IGZvbGlvX2FkZHJlc3MoZm9saW8pOwo+PiAtICAgICAgIG1lbXNldChkc3QsIDAsIFBBR0Vf U0laRSk7Cj4+ICsgICAgICAgZHN0ID0gY2FjaGVfYWRkcmVzcyhlbnRyeSk7Cj4+ICsgICAgICAg bWVtc2V0KGRzdCwgMCwgc2JpLT5ibG9ja3NpemUpOwo+Pgo+PiAgICAgICAgIG11dGV4X2xvY2so JmN1cnNlZy0+Y3Vyc2VnX211dGV4KTsKPj4KPj4gQEAgLTI4NDMsOCArMjg0Miw4IEBAIHN0YXRp YyB2b2lkIHdyaXRlX2N1cnJlbnRfc3VtX3BhZ2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ Pgo+PiAgICAgICAgIG11dGV4X3VubG9jaygmY3Vyc2VnLT5jdXJzZWdfbXV0ZXgpOwo+Pgo+PiAt ICAgICAgIGZvbGlvX21hcmtfZGlydHkoZm9saW8pOwo+PiAtICAgICAgIGYyZnNfZm9saW9fcHV0 KGZvbGlvLCB0cnVlKTsKPj4gKyAgICAgICBmMmZzX21hcmtfY2FjaGVfZGlydHkoZW50cnkpOwo+ PiArICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0cnVlKTsKPj4gIH0KPj4KPj4gIHN0YXRp YyBpbnQgaXNfbmV4dF9zZWdtZW50X2ZyZWUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+PiBA QCAtMzE2MCw3ICszMTU5LDcgQEAgc3RhdGljIGludCBjaGFuZ2VfY3Vyc2VnKHN0cnVjdCBmMmZz X3NiX2luZm8gKnNiaSwgaW50IHR5cGUpCj4+ICAgICAgICAgc3RydWN0IGN1cnNlZ19pbmZvICpj dXJzZWcgPSBDVVJTRUdfSShzYmksIHR5cGUpOwo+PiAgICAgICAgIHVuc2lnbmVkIGludCBuZXdf c2Vnbm8gPSBjdXJzZWctPm5leHRfc2Vnbm87Cj4+ICAgICAgICAgc3RydWN0IGYyZnNfc3VtbWFy eV9ibG9jayAqc3VtX25vZGU7Cj4+IC0gICAgICAgc3RydWN0IGZvbGlvICpzdW1fZm9saW87Cj4+ ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSA9IE5VTEw7Cj4+Cj4+ICAg ICAgICAgaWYgKGN1cnNlZy0+aW5pdGVkKQo+PiAgICAgICAgICAgICAgICAgd3JpdGVfc3VtX3Bh Z2Uoc2JpLCBjdXJzZWctPnN1bV9ibGssIGN1cnNlZy0+c2Vnbm8pOwo+PiBAQCAtMzE3NiwxNSAr MzE3NSwxNSBAQCBzdGF0aWMgaW50IGNoYW5nZV9jdXJzZWcoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpLCBpbnQgdHlwZSkKPj4gICAgICAgICBjdXJzZWctPmFsbG9jX3R5cGUgPSBTU1I7Cj4+ICAg ICAgICAgY3Vyc2VnLT5uZXh0X2Jsa29mZiA9IF9fbmV4dF9mcmVlX2Jsa29mZihzYmksIGN1cnNl Zy0+c2Vnbm8sIDApOwo+Pgo+PiAtICAgICAgIHN1bV9mb2xpbyA9IGYyZnNfZ2V0X3N1bV9mb2xp byhzYmksIG5ld19zZWdubyk7Cj4+IC0gICAgICAgaWYgKElTX0VSUihzdW1fZm9saW8pKSB7Cj4+ ICsgICAgICAgZW50cnkgPSBmMmZzX2dldF9zdW1fY2FjaGUoc2JpLCBuZXdfc2Vnbm8pOwo+PiAr ICAgICAgIGlmIChJU19FUlIoZW50cnkpKSB7Cj4+ICAgICAgICAgICAgICAgICAvKiBHQyB3b24n dCBiZSBhYmxlIHRvIHVzZSBzdGFsZSBzdW1tYXJ5IHBhZ2VzIGJ5IGNwX2Vycm9yICovCj4+ICAg ICAgICAgICAgICAgICBtZW1zZXQoY3Vyc2VnLT5zdW1fYmxrLCAwLCBzYmktPnN1bV9lbnRyeV9z aXplKTsKPj4gLSAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHN1bV9mb2xpbyk7Cj4+ICsg ICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihlbnRyeSk7Cj4+ICAgICAgICAgfQo+PiAtICAg ICAgIHN1bV9ub2RlID0gU1VNX0JMS19QQUdFX0FERFIoc2JpLCBzdW1fZm9saW8sIG5ld19zZWdu byk7Cj4+ICsgICAgICAgc3VtX25vZGUgPSBTVU1fQkxLX0VOVFJZX0FERFIoc2JpLCBlbnRyeSwg bmV3X3NlZ25vKTsKPj4gICAgICAgICBtZW1jcHkoY3Vyc2VnLT5zdW1fYmxrLCBzdW1fbm9kZSwg c2JpLT5zdW1fZW50cnlfc2l6ZSk7Cj4+IC0gICAgICAgZjJmc19mb2xpb19wdXQoc3VtX2ZvbGlv LCB0cnVlKTsKPj4gKyAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRyeSwgdHJ1ZSk7Cj4+ICAgICAg ICAgcmV0dXJuIDA7Cj4+ICB9Cj4+Cj4+IEBAIC00MTI4LDggKzQxMjcsOSBAQCBzdGF0aWMgdm9p ZCBkb193cml0ZV9wYWdlKHN0cnVjdCBmMmZzX3N1bW1hcnkgKnN1bSwgc3RydWN0IGYyZnNfaW9f aW5mbyAqZmlvKQo+PiAgICAgICAgICAgICAgICAgZjJmc191cF9yZWFkKCZmaW8tPnNiaS0+aW9f b3JkZXJfbG9jayk7Cj4+ICB9Cj4+Cj4+IC12b2lkIGYyZnNfZG9fd3JpdGVfbWV0YV9wYWdlKHN0 cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGZvbGlvICpmb2xpbywKPj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaW9zdGF0X3R5cGUgaW9fdHlwZSkK Pj4gK3ZvaWQgZjJmc19kb193cml0ZV9tZXRhX2NhY2hlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpl bnRyeSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZW51bSBpb3N0YXRfdHlwZSBpb190eXBl KQo+PiAgewo+PiAgICAgICAgIHN0cnVjdCBmMmZzX2lvX2luZm8gZmlvID0gewo+PiAgICAgICAg ICAgICAgICAgLnNiaSA9IHNiaSwKPj4gQEAgLTQxMzcsMjAgKzQxMzcsMjEgQEAgdm9pZCBmMmZz X2RvX3dyaXRlX21ldGFfcGFnZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBmb2xp byAqZm9saW8sCj4+ICAgICAgICAgICAgICAgICAudGVtcCA9IEhPVCwKPj4gICAgICAgICAgICAg ICAgIC5vcCA9IFJFUV9PUF9XUklURSwKPj4gICAgICAgICAgICAgICAgIC5vcF9mbGFncyA9IFJF UV9TWU5DIHwgUkVRX01FVEEgfCBSRVFfUFJJTywKPj4gLSAgICAgICAgICAgICAgIC5vbGRfYmxr YWRkciA9IGZvbGlvLT5pbmRleCwKPj4gLSAgICAgICAgICAgICAgIC5uZXdfYmxrYWRkciA9IGZv bGlvLT5pbmRleCwKPj4gLSAgICAgICAgICAgICAgIC5mb2xpbyA9IGZvbGlvLAo+PiArICAgICAg ICAgICAgICAgLm9sZF9ibGthZGRyID0gZW50cnktPmluZGV4LAo+PiArICAgICAgICAgICAgICAg Lm5ld19ibGthZGRyID0gZW50cnktPmluZGV4LAo+PiAgICAgICAgICAgICAgICAgLmVuY3J5cHRl ZF9wYWdlID0gTlVMTCwKPj4gICAgICAgICAgICAgICAgIC5pbl9saXN0ID0gMCwKPj4gKyAgICAg ICAgICAgICAgIC5jYWNoZV9lbnRyeSA9IGVudHJ5LAo+PiArICAgICAgICAgICAgICAgLmlzX2Nh Y2hlID0gMSwKPj4gICAgICAgICB9Owo+Pgo+PiAtICAgICAgIGlmICh1bmxpa2VseShmb2xpby0+ aW5kZXggPj0gTUFJTl9CTEtBRERSKHNiaSkpKQo+PiArICAgICAgIGlmICh1bmxpa2VseShlbnRy eS0+aW5kZXggPj0gTUFJTl9CTEtBRERSKHNiaSkpKQo+PiAgICAgICAgICAgICAgICAgZmlvLm9w X2ZsYWdzICY9IH5SRVFfTUVUQTsKPj4KPj4gLSAgICAgICBmb2xpb19zdGFydF93cml0ZWJhY2so Zm9saW8pOwo+PiAtICAgICAgIGYyZnNfc3VibWl0X3BhZ2Vfd3JpdGUoJmZpbyk7Cj4+ICsgICAg ICAgZjJmc19zdGFydF9jYWNoZV93cml0ZWJhY2soZW50cnkpOwo+PiArICAgICAgIGYyZnNfc3Vi bWl0X2NhY2hlX3dyaXRlKCZmaW8pOwo+Pgo+PiAtICAgICAgIHN0YXRfaW5jX21ldGFfY291bnQo c2JpLCBmb2xpby0+aW5kZXgpOwo+PiArICAgICAgIHN0YXRfaW5jX21ldGFfY291bnQoc2JpLCBl bnRyeS0+aW5kZXgpOwo+PiAgICAgICAgIGYyZnNfdXBkYXRlX2lvc3RhdChzYmksIE5VTEwsIGlv X3R5cGUsIEYyRlNfQkxLU0laRSk7Cj4+ICB9Cj4+Cj4+IEBAIC00MjA3LDcgKzQyMDgsNyBAQCBp bnQgZjJmc19pbnBsYWNlX3dyaXRlX2RhdGEoc3RydWN0IGYyZnNfaW9faW5mbyAqZmlvKQo+PiAg ICAgICAgIH0KPj4KPj4gICAgICAgICBpZiAoZmlvLT5tZXRhX2djKQo+PiAtICAgICAgICAgICAg ICAgZjJmc190cnVuY2F0ZV9tZXRhX2lub2RlX3BhZ2VzKHNiaSwgZmlvLT5uZXdfYmxrYWRkciwg MSk7Cj4+ICsgICAgICAgICAgICAgICBmMmZzX3RydW5jYXRlX21ldGFfY2FjaGVzKHNiaSwgZmlv LT5uZXdfYmxrYWRkciwgMSk7Cj4+Cj4+ICAgICAgICAgc3RhdF9pbmNfaW5wbGFjZV9ibG9ja3Mo ZmlvLT5zYmkpOwo+Pgo+PiBAQCAtNDM3Myw3ICs0Mzc0LDcgQEAgdm9pZCBmMmZzX2ZvbGlvX3dh aXRfd3JpdGViYWNrKHN0cnVjdCBmb2xpbyAqZm9saW8sIGVudW0gcGFnZV90eXBlIHR5cGUsCj4+ ICB2b2lkIGYyZnNfd2FpdF9vbl9ibG9ja193cml0ZWJhY2soc3RydWN0IGlub2RlICppbm9kZSwg YmxvY2tfdCBibGthZGRyKQo+PiAgewo+PiAgICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSA9IEYyRlNfSV9TQihpbm9kZSk7Cj4+IC0gICAgICAgc3RydWN0IGZvbGlvICpjZm9saW87Cj4+ ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeTsKPj4KPj4gICAgICAgICBp ZiAoIWYyZnNfbWV0YV9pbm9kZV9nY19yZXF1aXJlZChpbm9kZSkpCj4+ICAgICAgICAgICAgICAg ICByZXR1cm47Cj4+IEBAIC00MzgxLDExICs0MzgyLDEyIEBAIHZvaWQgZjJmc193YWl0X29uX2Js b2NrX3dyaXRlYmFjayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBibG9ja190IGJsa2FkZHIpCj4+ICAg ICAgICAgaWYgKCFfX2lzX3ZhbGlkX2RhdGFfYmxrYWRkcihibGthZGRyKSkKPj4gICAgICAgICAg ICAgICAgIHJldHVybjsKPj4KPj4gLSAgICAgICBjZm9saW8gPSBmaWxlbWFwX2xvY2tfZm9saW8o TUVUQV9NQVBQSU5HKHNiaSksIGJsa2FkZHIpOwo+PiAtICAgICAgIGlmICghSVNfRVJSKGNmb2xp bykpIHsKPj4gLSAgICAgICAgICAgICAgIGYyZnNfZm9saW9fd2FpdF93cml0ZWJhY2soY2ZvbGlv LCBEQVRBLCB0cnVlLCB0cnVlKTsKPj4gLSAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGNm b2xpbywgdHJ1ZSk7Cj4+IC0gICAgICAgfQo+PiArICAgICAgIGVudHJ5ID0gZjJmc19maW5kX2Nh Y2hlKE1FVEFfQ0FDSEUoc2JpKSwgYmxrYWRkcik7Cj4+ICsgICAgICAgaWYgKElTX0VSUihlbnRy eSkpCj4+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4+ICsgICAgICAgZjJmc19sb2NrX2NhY2hl KGVudHJ5KTsKPj4gKyAgICAgICBmMmZzX2NhY2hlX3dhaXRfd3JpdGViYWNrX2NvbmQoZW50cnks IERBVEEpOwo+PiArICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0cnVlKTsKPj4gIH0KPj4K Pj4gIHZvaWQgZjJmc193YWl0X29uX2Jsb2NrX3dyaXRlYmFja19yYW5nZShzdHJ1Y3QgaW5vZGUg Kmlub2RlLCBibG9ja190IGJsa2FkZHIsCj4+IEBAIC00NDAwLDcgKzQ0MDIsNyBAQCB2b2lkIGYy ZnNfd2FpdF9vbl9ibG9ja193cml0ZWJhY2tfcmFuZ2Uoc3RydWN0IGlub2RlICppbm9kZSwgYmxv Y2tfdCBibGthZGRyLAo+PiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKPj4gICAg ICAgICAgICAgICAgIGYyZnNfd2FpdF9vbl9ibG9ja193cml0ZWJhY2soaW5vZGUsIGJsa2FkZHIg KyBpKTsKPj4KPj4gLSAgICAgICBmMmZzX3RydW5jYXRlX21ldGFfaW5vZGVfcGFnZXMoc2JpLCBi bGthZGRyLCBsZW4pOwo+PiArICAgICAgIGYyZnNfdHJ1bmNhdGVfbWV0YV9jYWNoZXMoc2JpLCBi bGthZGRyLCBsZW4pOwo+PiAgfQo+Pgo+PiAgc3RhdGljIGludCByZWFkX2NvbXBhY3RlZF9zdW1t YXJpZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+PiBAQCAtNDQwOCwxNiArNDQxMCwxNiBA QCBzdGF0aWMgaW50IHJlYWRfY29tcGFjdGVkX3N1bW1hcmllcyhzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmkpCj4+ICAgICAgICAgc3RydWN0IGYyZnNfY2hlY2twb2ludCAqY2twdCA9IEYyRlNfQ0tQ VChzYmkpOwo+PiAgICAgICAgIHN0cnVjdCBjdXJzZWdfaW5mbyAqc2VnX2k7Cj4+ICAgICAgICAg dW5zaWduZWQgY2hhciAqa2FkZHI7Cj4+IC0gICAgICAgc3RydWN0IGZvbGlvICpmb2xpbzsKPj4g KyAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5Owo+PiAgICAgICAgIGJsb2Nr X3Qgc3RhcnQ7Cj4+ICAgICAgICAgaW50IGksIGosIG9mZnNldDsKPj4KPj4gICAgICAgICBzdGFy dCA9IHN0YXJ0X3N1bV9ibG9jayhzYmkpOwo+Pgo+PiAtICAgICAgIGZvbGlvID0gZjJmc19nZXRf bWV0YV9mb2xpbyhzYmksIHN0YXJ0KyspOwo+PiAtICAgICAgIGlmIChJU19FUlIoZm9saW8pKQo+ PiAtICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoZm9saW8pOwo+PiAtICAgICAgIGthZGRy ID0gZm9saW9fYWRkcmVzcyhmb2xpbyk7Cj4+ICsgICAgICAgZW50cnkgPSBmMmZzX2dldF9tZXRh X2NhY2hlKHNiaSwgc3RhcnQrKyk7Cj4+ICsgICAgICAgaWYgKElTX0VSUihlbnRyeSkpCj4+ICsg ICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihlbnRyeSk7Cj4+ICsgICAgICAga2FkZHIgPSBj YWNoZV9hZGRyZXNzKGVudHJ5KTsKPj4KPj4gICAgICAgICAvKiBTdGVwIDE6IHJlc3RvcmUgbmF0 IGNhY2hlICovCj4+ICAgICAgICAgc2VnX2kgPSBDVVJTRUdfSShzYmksIENVUlNFR19IT1RfREFU QSk7Cj4+IEBAIC00NDU0LDE2ICs0NDU2LDE2IEBAIHN0YXRpYyBpbnQgcmVhZF9jb21wYWN0ZWRf c3VtbWFyaWVzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKPj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VNX0ZPT1RFUl9TSVpFKQo+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+Pgo+PiAtICAgICAgICAgICAgICAg ICAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xpbywgdHJ1ZSk7Cj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0cnVlKTsKPj4KPj4gLSAgICAgICAgICAgICAg ICAgICAgICAgZm9saW8gPSBmMmZzX2dldF9tZXRhX2ZvbGlvKHNiaSwgc3RhcnQrKyk7Cj4+IC0g ICAgICAgICAgICAgICAgICAgICAgIGlmIChJU19FUlIoZm9saW8pKQo+PiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGZvbGlvKTsKPj4gLSAgICAgICAgICAg ICAgICAgICAgICAga2FkZHIgPSBmb2xpb19hZGRyZXNzKGZvbGlvKTsKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgZW50cnkgPSBmMmZzX2dldF9tZXRhX2NhY2hlKHNiaSwgc3RhcnQrKyk7Cj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChJU19FUlIoZW50cnkpKQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGVudHJ5KTsKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAga2FkZHIgPSBjYWNoZV9hZGRyZXNzKGVudHJ5KTsKPj4gICAgICAgICAg ICAgICAgICAgICAgICAgb2Zmc2V0ID0gMDsKPj4gICAgICAgICAgICAgICAgIH0KPj4gICAgICAg ICB9Cj4+IC0gICAgICAgZjJmc19mb2xpb19wdXQoZm9saW8sIHRydWUpOwo+PiArICAgICAgIGYy ZnNfcHV0X2NhY2hlKGVudHJ5LCB0cnVlKTsKPj4gICAgICAgICByZXR1cm4gMDsKPj4gIH0KPj4K Pj4gQEAgLTQ0NzIsNyArNDQ3NCw3IEBAIHN0YXRpYyBpbnQgcmVhZF9ub3JtYWxfc3VtbWFyaWVz KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgaW50IHR5cGUpCj4+ICAgICAgICAgc3RydWN0IGYy ZnNfY2hlY2twb2ludCAqY2twdCA9IEYyRlNfQ0tQVChzYmkpOwo+PiAgICAgICAgIHN0cnVjdCBm MmZzX3N1bW1hcnlfYmxvY2sgKnN1bTsKPj4gICAgICAgICBzdHJ1Y3QgY3Vyc2VnX2luZm8gKmN1 cnNlZzsKPj4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKm5ldzsKPj4gKyAgICAgICBzdHJ1Y3QgZjJm c19jYWNoZWRfYmxvY2sgKmVudHJ5Owo+PiAgICAgICAgIHVuc2lnbmVkIHNob3J0IGJsa19vZmY7 Cj4+ICAgICAgICAgdW5zaWduZWQgaW50IHNlZ25vID0gMDsKPj4gICAgICAgICBibG9ja190IGJs a19hZGRyID0gMDsKPj4gQEAgLTQ0OTksMTAgKzQ1MDEsMTAgQEAgc3RhdGljIGludCByZWFkX25v cm1hbF9zdW1tYXJpZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBpbnQgdHlwZSkKPj4gICAg ICAgICAgICAgICAgICAgICAgICAgYmxrX2FkZHIgPSBHRVRfU1VNX0JMT0NLKHNiaSwgc2Vnbm8p Owo+PiAgICAgICAgIH0KPj4KPj4gLSAgICAgICBuZXcgPSBmMmZzX2dldF9tZXRhX2ZvbGlvKHNi aSwgYmxrX2FkZHIpOwo+PiAtICAgICAgIGlmIChJU19FUlIobmV3KSkKPj4gLSAgICAgICAgICAg ICAgIHJldHVybiBQVFJfRVJSKG5ldyk7Cj4+IC0gICAgICAgc3VtID0gZm9saW9fYWRkcmVzcyhu ZXcpOwo+PiArICAgICAgIGVudHJ5ID0gZjJmc19nZXRfbWV0YV9jYWNoZShzYmksIGJsa19hZGRy KTsKPj4gKyAgICAgICBpZiAoSVNfRVJSKGVudHJ5KSkKPj4gKyAgICAgICAgICAgICAgIHJldHVy biBQVFJfRVJSKGVudHJ5KTsKPj4gKyAgICAgICBzdW0gPSBjYWNoZV9hZGRyZXNzKGVudHJ5KTsK Pj4KPj4gICAgICAgICBpZiAoSVNfTk9ERVNFRyh0eXBlKSkgewo+PiAgICAgICAgICAgICAgICAg aWYgKF9fZXhpc3Rfbm9kZV9zdW1tYXJpZXMoc2JpKSkgewo+PiBAQCAtNDUzOSw3ICs0NTQxLDcg QEAgc3RhdGljIGludCByZWFkX25vcm1hbF9zdW1tYXJpZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpLCBpbnQgdHlwZSkKPj4gICAgICAgICBjdXJzZWctPm5leHRfYmxrb2ZmID0gYmxrX29mZjsK Pj4gICAgICAgICBtdXRleF91bmxvY2soJmN1cnNlZy0+Y3Vyc2VnX211dGV4KTsKPj4gIG91dDoK Pj4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChuZXcsIHRydWUpOwo+PiArICAgICAgIGYyZnNfcHV0 X2NhY2hlKGVudHJ5LCB0cnVlKTsKPj4gICAgICAgICByZXR1cm4gZXJyOwo+PiAgfQo+Pgo+PiBA QCAtNDU1NCw4ICs0NTU2LDggQEAgc3RhdGljIGludCByZXN0b3JlX2N1cnNlZ19zdW1tYXJpZXMo c3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+PiAgICAgICAgICAgICAgICAgaW50IG5wYWdlcyA9 IGYyZnNfbnBhZ2VzX2Zvcl9zdW1tYXJ5X2ZsdXNoKHNiaSwgdHJ1ZSk7Cj4+Cj4+ICAgICAgICAg ICAgICAgICBpZiAobnBhZ2VzID49IDIpCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGYyZnNf cmFfbWV0YV9wYWdlcyhzYmksIHN0YXJ0X3N1bV9ibG9jayhzYmkpLCBucGFnZXMsCj4+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUQV9D UCwgdHJ1ZSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfcmFfbWV0YV9jYWNoZXMo c2JpLCBzdGFydF9zdW1fYmxvY2soc2JpKSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5wYWdlcywgTUVUQV9DUCwgdHJ1ZSk7Cj4+Cj4+ICAgICAgICAgICAgICAg ICAvKiByZXN0b3JlIGZvciBjb21wYWN0ZWQgZGF0YSBzdW1tYXJ5ICovCj4+ICAgICAgICAgICAg ICAgICBlcnIgPSByZWFkX2NvbXBhY3RlZF9zdW1tYXJpZXMoc2JpKTsKPj4gQEAgLTQ1NjUsNyAr NDU2Nyw3IEBAIHN0YXRpYyBpbnQgcmVzdG9yZV9jdXJzZWdfc3VtbWFyaWVzKHN0cnVjdCBmMmZz X3NiX2luZm8gKnNiaSkKPj4gICAgICAgICB9Cj4+Cj4+ICAgICAgICAgaWYgKF9fZXhpc3Rfbm9k ZV9zdW1tYXJpZXMoc2JpKSkKPj4gLSAgICAgICAgICAgICAgIGYyZnNfcmFfbWV0YV9wYWdlcyhz YmksCj4+ICsgICAgICAgICAgICAgICBmMmZzX3JhX21ldGFfY2FjaGVzKHNiaSwKPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1fYmxrX2FkZHIoc2JpLCBOUl9DVVJTRUdfUEVS U0lTVF9UWVBFLCB0eXBlKSwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOUl9D VVJTRUdfUEVSU0lTVF9UWVBFIC0gdHlwZSwgTUVUQV9DUCwgdHJ1ZSk7Cj4+Cj4+IEBAIC00NTg4 LDE2ICs0NTkwLDE2IEBAIHN0YXRpYyBpbnQgcmVzdG9yZV9jdXJzZWdfc3VtbWFyaWVzKHN0cnVj dCBmMmZzX3NiX2luZm8gKnNiaSkKPj4KPj4gIHN0YXRpYyB2b2lkIHdyaXRlX2NvbXBhY3RlZF9z dW1tYXJpZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGJsa2FkZHIpCj4+ICB7 Cj4+IC0gICAgICAgc3RydWN0IGZvbGlvICpmb2xpbzsKPj4gKyAgICAgICBzdHJ1Y3QgZjJmc19j YWNoZWRfYmxvY2sgKmVudHJ5ID0gTlVMTDsKPj4gICAgICAgICB1bnNpZ25lZCBjaGFyICprYWRk cjsKPj4gICAgICAgICBzdHJ1Y3QgZjJmc19zdW1tYXJ5ICpzdW1tYXJ5Owo+PiAgICAgICAgIHN0 cnVjdCBjdXJzZWdfaW5mbyAqc2VnX2k7Cj4+ICAgICAgICAgaW50IHdyaXR0ZW5fc2l6ZSA9IDA7 Cj4+ICAgICAgICAgaW50IGksIGo7Cj4+Cj4+IC0gICAgICAgZm9saW8gPSBmMmZzX2dyYWJfbWV0 YV9mb2xpbyhzYmksIGJsa2FkZHIrKyk7Cj4+IC0gICAgICAga2FkZHIgPSBmb2xpb19hZGRyZXNz KGZvbGlvKTsKPj4gLSAgICAgICBtZW1zZXQoa2FkZHIsIDAsIFBBR0VfU0laRSk7Cj4+ICsgICAg ICAgZW50cnkgPSBmMmZzX2dyYWJfbWV0YV9jYWNoZShzYmksIGJsa2FkZHIrKyk7Cj4+ICsgICAg ICAga2FkZHIgPSBjYWNoZV9hZGRyZXNzKGVudHJ5KTsKPj4gKyAgICAgICBtZW1zZXQoa2FkZHIs IDAsIHNiaS0+YmxvY2tzaXplKTsKPj4KPj4gICAgICAgICAvKiBTdGVwIDE6IHdyaXRlIG5hdCBj YWNoZSAqLwo+PiAgICAgICAgIHNlZ19pID0gQ1VSU0VHX0koc2JpLCBDVVJTRUdfSE9UX0RBVEEp Owo+PiBAQCAtNDYxMywxMCArNDYxNSwxMCBAQCBzdGF0aWMgdm9pZCB3cml0ZV9jb21wYWN0ZWRf c3VtbWFyaWVzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBibGthZGRyKQo+PiAg ICAgICAgIGZvciAoaSA9IENVUlNFR19IT1RfREFUQTsgaSA8PSBDVVJTRUdfQ09MRF9EQVRBOyBp KyspIHsKPj4gICAgICAgICAgICAgICAgIHNlZ19pID0gQ1VSU0VHX0koc2JpLCBpKTsKPj4gICAg ICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBmMmZzX2N1cnNlZ192YWxpZF9ibG9ja3Moc2Jp LCBpKTsgaisrKSB7Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGlmICghZm9saW8pIHsKPj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xpbyA9IGYyZnNfZ3JhYl9tZXRhX2Zv bGlvKHNiaSwgYmxrYWRkcisrKTsKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr YWRkciA9IGZvbGlvX2FkZHJlc3MoZm9saW8pOwo+PiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1lbXNldChrYWRkciwgMCwgUEFHRV9TSVpFKTsKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgaWYgKCFlbnRyeSkgewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu dHJ5ID0gZjJmc19ncmFiX21ldGFfY2FjaGUoc2JpLCBibGthZGRyKyspOwo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGthZGRyID0gY2FjaGVfYWRkcmVzcyhlbnRyeSk7Cj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGthZGRyLCAwLCBzYmktPmJsb2Nr c2l6ZSk7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdHRlbl9zaXplID0g MDsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgfQo+PiAgICAgICAgICAgICAgICAgICAgICAg ICBzdW1tYXJ5ID0gKHN0cnVjdCBmMmZzX3N1bW1hcnkgKikoa2FkZHIgKyB3cml0dGVuX3NpemUp Owo+PiBAQCAtNDYyNywxNCArNDYyOSwxNCBAQCBzdGF0aWMgdm9pZCB3cml0ZV9jb21wYWN0ZWRf c3VtbWFyaWVzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBibGthZGRyKQo+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNV TV9GT09URVJfU0laRSkKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51 ZTsKPj4KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgZm9saW9fbWFya19kaXJ0eShmb2xpbyk7 Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGZvbGlvLCB0cnVlKTsK Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgZm9saW8gPSBOVUxMOwo+PiArICAgICAgICAgICAg ICAgICAgICAgICBmMmZzX21hcmtfY2FjaGVfZGlydHkoZW50cnkpOwo+PiArICAgICAgICAgICAg ICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRyeSwgdHJ1ZSk7Cj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIGVudHJ5ID0gTlVMTDsKPj4gICAgICAgICAgICAgICAgIH0KPj4gICAgICAgICB9 Cj4+IC0gICAgICAgaWYgKGZvbGlvKSB7Cj4+IC0gICAgICAgICAgICAgICBmb2xpb19tYXJrX2Rp cnR5KGZvbGlvKTsKPj4gLSAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGZvbGlvLCB0cnVl KTsKPj4gKyAgICAgICBpZiAoZW50cnkpIHsKPj4gKyAgICAgICAgICAgICAgIGYyZnNfbWFya19j YWNoZV9kaXJ0eShlbnRyeSk7Cj4+ICsgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRy eSwgdHJ1ZSk7Cj4+ICAgICAgICAgfQo+PiAgfQo+Pgo+PiBAQCAtNDY4OCwyOSArNDY5MCwyOSBA QCBpbnQgZjJmc19sb29rdXBfam91cm5hbF9pbl9jdXJzdW0oc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpLAo+PiAgICAgICAgIHJldHVybiAtMTsKPj4gIH0KPj4KPj4gLXN0YXRpYyBzdHJ1Y3QgZm9s aW8gKmdldF9jdXJyZW50X3NpdF9mb2xpbyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+ICtz dGF0aWMgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpnZXRfY3VycmVudF9zaXRfY2FjaGUoc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IHNlZ25vKQo+PiAgewo+PiAtICAgICAgIHJldHVybiBmMmZz X2dldF9tZXRhX2ZvbGlvKHNiaSwgY3VycmVudF9zaXRfYWRkcihzYmksIHNlZ25vKSk7Cj4+ICsg ICAgICAgcmV0dXJuIGYyZnNfZ2V0X21ldGFfY2FjaGUoc2JpLCBjdXJyZW50X3NpdF9hZGRyKHNi aSwgc2Vnbm8pKTsKPj4gIH0KPj4KPj4gLXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmdldF9uZXh0X3Np dF9mb2xpbyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+ICtzdGF0aWMgc3RydWN0IGYyZnNf Y2FjaGVkX2Jsb2NrICpnZXRfbmV4dF9zaXRfY2FjaGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp LAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50 IHN0YXJ0KQo+PiAgewo+PiAgICAgICAgIHN0cnVjdCBzaXRfaW5mbyAqc2l0X2kgPSBTSVRfSShz YmkpOwo+PiAtICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW87Cj4+ICsgICAgICAgc3RydWN0IGYy ZnNfY2FjaGVkX2Jsb2NrICplbnRyeTsKPj4gICAgICAgICBwZ29mZl90IHNyY19vZmYsIGRzdF9v ZmY7Cj4+Cj4+ICAgICAgICAgc3JjX29mZiA9IGN1cnJlbnRfc2l0X2FkZHIoc2JpLCBzdGFydCk7 Cj4+ICAgICAgICAgZHN0X29mZiA9IG5leHRfc2l0X2FkZHIoc2JpLCBzcmNfb2ZmKTsKPj4KPj4g LSAgICAgICBmb2xpbyA9IGYyZnNfZ3JhYl9tZXRhX2ZvbGlvKHNiaSwgZHN0X29mZik7Cj4+IC0g ICAgICAgc2VnX2luZm9fdG9fc2l0X2ZvbGlvKHNiaSwgZm9saW8sIHN0YXJ0KTsKPj4gKyAgICAg ICBlbnRyeSA9IGYyZnNfZ3JhYl9tZXRhX2NhY2hlKHNiaSwgZHN0X29mZik7Cj4+ICsgICAgICAg c2VnX2luZm9fdG9fc2l0X2Jsb2NrKHNiaSwgZW50cnksIHN0YXJ0KTsKPj4KPj4gLSAgICAgICBm b2xpb19tYXJrX2RpcnR5KGZvbGlvKTsKPj4gKyAgICAgICBmMmZzX21hcmtfY2FjaGVfZGlydHko ZW50cnkpOwo+PiAgICAgICAgIHNldF90b19uZXh0X3NpdChzaXRfaSwgc3RhcnQpOwo+Pgo+PiAt ICAgICAgIHJldHVybiBmb2xpbzsKPj4gKyAgICAgICByZXR1cm4gZW50cnk7Cj4+ICB9Cj4+Cj4+ ICBzdGF0aWMgc3RydWN0IHNpdF9lbnRyeV9zZXQgKmdyYWJfc2l0X2VudHJ5X3NldCh2b2lkKQo+ PiBAQCAtNDg0MCw4ICs0ODQyLDkgQEAgdm9pZCBmMmZzX2ZsdXNoX3NpdF9lbnRyaWVzKHN0cnVj dCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGNwX2NvbnRyb2wgKmNwYykKPj4gICAgICAgICAg KiAjMiwgZmx1c2ggc2l0IGVudHJpZXMgdG8gc2l0IHBhZ2UuCj4+ICAgICAgICAgICovCj4+ICAg ICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNlcywgdG1wLCBoZWFkLCBzZXRfbGlzdCkg ewo+PiAtICAgICAgICAgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbyA9IE5VTEw7Cj4+ICsgICAg ICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5ID0gTlVMTDsKPj4gICAg ICAgICAgICAgICAgIHN0cnVjdCBmMmZzX3NpdF9ibG9jayAqcmF3X3NpdCA9IE5VTEw7Cj4+ICsK Pj4gICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdGFydF9zZWdubyA9IHNlcy0+c3RhcnRf c2Vnbm87Cj4+ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZW5kID0gbWluKHN0YXJ0X3Nl Z25vICsgU0lUX0VOVFJZX1BFUl9CTE9DSywKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpTUFJTl9TRUdTKHNiaSkpOwo+PiBA QCAtNDg1NSw4ICs0ODU4LDggQEAgdm9pZCBmMmZzX2ZsdXNoX3NpdF9lbnRyaWVzKHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGNwX2NvbnRyb2wgKmNwYykKPj4gICAgICAgICAgICAg ICAgIGlmICh0b19qb3VybmFsKSB7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25fd3Jp dGUoJmN1cnNlZy0+am91cm5hbF9yd3NlbSk7Cj4+ICAgICAgICAgICAgICAgICB9IGVsc2Ugewo+ PiAtICAgICAgICAgICAgICAgICAgICAgICBmb2xpbyA9IGdldF9uZXh0X3NpdF9mb2xpbyhzYmks IHN0YXJ0X3NlZ25vKTsKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgcmF3X3NpdCA9IGZvbGlv X2FkZHJlc3MoZm9saW8pOwo+PiArICAgICAgICAgICAgICAgICAgICAgICBlbnRyeSA9IGdldF9u ZXh0X3NpdF9jYWNoZShzYmksIHN0YXJ0X3NlZ25vKTsKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgcmF3X3NpdCA9IGNhY2hlX2FkZHJlc3MoZW50cnkpOwo+PiAgICAgICAgICAgICAgICAgfQo+ Pgo+PiAgICAgICAgICAgICAgICAgLyogZmx1c2ggZGlydHkgc2l0IGVudHJpZXMgaW4gcmVnaW9u IG9mIGN1cnJlbnQgc2l0IHNldCAqLwo+PiBAQCAtNDkwMSw3ICs0OTA0LDcgQEAgdm9pZCBmMmZz X2ZsdXNoX3NpdF9lbnRyaWVzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGNwX2Nv bnRyb2wgKmNwYykKPj4gICAgICAgICAgICAgICAgIGlmICh0b19qb3VybmFsKQo+PiAgICAgICAg ICAgICAgICAgICAgICAgICB1cF93cml0ZSgmY3Vyc2VnLT5qb3VybmFsX3J3c2VtKTsKPj4gICAg ICAgICAgICAgICAgIGVsc2UKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgZjJmc19mb2xpb19w dXQoZm9saW8sIHRydWUpOwo+PiArICAgICAgICAgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNo ZShlbnRyeSwgdHJ1ZSk7Cj4+Cj4+ICAgICAgICAgICAgICAgICBmMmZzX2J1Z19vbihzYmksIHNl cy0+ZW50cnlfY250KTsKPj4gICAgICAgICAgICAgICAgIHJlbGVhc2Vfc2l0X2VudHJ5X3NldChz ZXMpOwo+PiBAQCAtNTA5Miw3ICs1MDk1LDcgQEAgc3RhdGljIGludCBidWlsZF9zaXRfZW50cmll cyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4+ICAgICAgICAgYmxvY2tfdCBzaXRfdmFsaWRf YmxvY2tzWzJdID0gezAsIDB9Owo+Pgo+PiAgICAgICAgIGRvIHsKPj4gLSAgICAgICAgICAgICAg IHJlYWRlZCA9IGYyZnNfcmFfbWV0YV9wYWdlcyhzYmksIHN0YXJ0X2JsaywgQklPX01BWF9WRUNT LAo+PiArICAgICAgICAgICAgICAgcmVhZGVkID0gZjJmc19yYV9tZXRhX2NhY2hlcyhzYmksIHN0 YXJ0X2JsaywgQklPX01BWF9WRUNTLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEFfU0lULCB0cnVlKTsKPj4KPj4gICAgICAgICAg ICAgICAgIHN0YXJ0ID0gc3RhcnRfYmxrICogc2l0X2ktPnNlbnRzX3Blcl9ibG9jazsKPj4gQEAg LTUxMDAsMTUgKzUxMDMsMTUgQEAgc3RhdGljIGludCBidWlsZF9zaXRfZW50cmllcyhzdHJ1Y3Qg ZjJmc19zYl9pbmZvICpzYmkpCj4+Cj4+ICAgICAgICAgICAgICAgICBmb3IgKDsgc3RhcnQgPCBl bmQgJiYgc3RhcnQgPCBNQUlOX1NFR1Moc2JpKTsgc3RhcnQrKykgewo+PiAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgZjJmc19zaXRfYmxvY2sgKnNpdF9ibGs7Cj4+IC0gICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW87Cj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnk7Cj4+Cj4+ICAgICAgICAgICAgICAg ICAgICAgICAgIHNlID0gJnNpdF9pLT5zZW50cmllc1tzdGFydF07Cj4+IC0gICAgICAgICAgICAg ICAgICAgICAgIGZvbGlvID0gZ2V0X2N1cnJlbnRfc2l0X2ZvbGlvKHNiaSwgc3RhcnQpOwo+PiAt ICAgICAgICAgICAgICAgICAgICAgICBpZiAoSVNfRVJSKGZvbGlvKSkKPj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihmb2xpbyk7Cj4+IC0gICAgICAgICAg ICAgICAgICAgICAgIHNpdF9ibGsgPSBmb2xpb19hZGRyZXNzKGZvbGlvKTsKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgZW50cnkgPSBnZXRfY3VycmVudF9zaXRfY2FjaGUoc2JpLCBzdGFydCk7 Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChJU19FUlIoZW50cnkpKQo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGVudHJ5KTsKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgc2l0X2JsayA9IGNhY2hlX2FkZHJlc3MoZW50cnkpOwo+PiAgICAg ICAgICAgICAgICAgICAgICAgICBzaXQgPSBzaXRfYmxrLT5lbnRyaWVzW1NJVF9FTlRSWV9PRkZT RVQoc2l0X2ksIHN0YXJ0KV07Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZm9saW9f cHV0KGZvbGlvLCB0cnVlKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZjJmc19wdXRfY2Fj aGUoZW50cnksIHRydWUpOwo+Pgo+PiAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBjaGVj a19ibG9ja19jb3VudChzYmksIHN0YXJ0LCAmc2l0KTsKPj4gICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKGVycikKPj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvc2VnbWVudC5oIGIvZnMvZjJmcy9z ZWdtZW50LmgKPj4gaW5kZXggMWRkOGEyZmE5MjlkLi4yMmRlNjc2N2ZjNjQgMTAwNjQ0Cj4+IC0t LSBhL2ZzL2YyZnMvc2VnbWVudC5oCj4+ICsrKyBiL2ZzL2YyZnMvc2VnbWVudC5oCj4+IEBAIC05 Niw2ICs5Niw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzYW5pdHlfY2hlY2tfc2VnX3R5cGUoc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+PiAgI2RlZmluZSBHRVRfU1VNX0JMS09GRihzYmksIHNl Z25vKSAoc2Vnbm8gJSAoc2JpKS0+c3Vtc19wZXJfYmxvY2spCj4+ICAjZGVmaW5lIFNVTV9CTEtf UEFHRV9BRERSKHNiaSwgZm9saW8sIHNlZ25vKSAgIFwKPj4gICAgICAgICAoZm9saW9fYWRkcmVz cyhmb2xpbykgKyBHRVRfU1VNX0JMS09GRihzYmksIHNlZ25vKSAqIChzYmkpLT5zdW1fYmxvY2tz aXplKQo+PiArI2RlZmluZSBTVU1fQkxLX0VOVFJZX0FERFIoc2JpLCBlbnRyeSwgc2Vnbm8pICBc Cj4+ICsgICAgICAgKGNhY2hlX2FkZHJlc3MoZW50cnkpICsgR0VUX1NVTV9CTEtPRkYoc2JpLCBz ZWdubykgKiAoc2JpKS0+c3VtX2Jsb2Nrc2l6ZSkKPj4KPj4gICNkZWZpbmUgR0VUX1NVTV9UWVBF KGZvb3RlcikgKChmb290ZXIpLT5lbnRyeV90eXBlKQo+PiAgI2RlZmluZSBTRVRfU1VNX1RZUEUo Zm9vdGVyLCB0eXBlKSAoKGZvb3RlciktPmVudHJ5X3R5cGUgPSAodHlwZSkpCj4+IEBAIC00MTgs OCArNDIwLDggQEAgc3RhdGljIGlubGluZSB2b2lkIF9fc2VnX2luZm9fdG9fcmF3X3NpdChzdHJ1 Y3Qgc2VnX2VudHJ5ICpzZSwKPj4gICAgICAgICBycy0+bXRpbWUgPSBjcHVfdG9fbGU2NChzZS0+ bXRpbWUpOwo+PiAgfQo+Pgo+PiAtc3RhdGljIGlubGluZSB2b2lkIHNlZ19pbmZvX3RvX3NpdF9m b2xpbyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IHN0YXJ0KQo+PiArc3Rh dGljIGlubGluZSB2b2lkIHNlZ19pbmZvX3RvX3NpdF9ibG9jayhzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmksCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9j ayAqZW50cnksIHVuc2lnbmVkIGludCBzdGFydCkKPj4gIHsKPj4gICAgICAgICBzdHJ1Y3QgZjJm c19zaXRfYmxvY2sgKnJhd19zaXQ7Cj4+ICAgICAgICAgc3RydWN0IHNlZ19lbnRyeSAqc2U7Cj4+ IEBAIC00MjgsOCArNDMwLDggQEAgc3RhdGljIGlubGluZSB2b2lkIHNlZ19pbmZvX3RvX3NpdF9m b2xpbyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylNQUlOX1NFR1Moc2JpKSk7Cj4+ICAgICAg ICAgaW50IGk7Cj4+Cj4+IC0gICAgICAgcmF3X3NpdCA9IGZvbGlvX2FkZHJlc3MoZm9saW8pOwo+ PiAtICAgICAgIG1lbXNldChyYXdfc2l0LCAwLCBQQUdFX1NJWkUpOwo+PiArICAgICAgIHJhd19z aXQgPSBjYWNoZV9hZGRyZXNzKGVudHJ5KTsKPj4gKyAgICAgICBtZW1zZXQocmF3X3NpdCwgMCwg c2JpLT5ibG9ja3NpemUpOwo+PiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBlbmQgLSBzdGFydDsg aSsrKSB7Cj4+ICAgICAgICAgICAgICAgICBycyA9ICZyYXdfc2l0LT5lbnRyaWVzW2ldOwo+PiAg ICAgICAgICAgICAgICAgc2UgPSBnZXRfc2VnX2VudHJ5KHNiaSwgc3RhcnQgKyBpKTsKPj4gQEAg LTk5Miw2ICs5OTQsMjcgQEAgc3RhdGljIGlubGluZSBpbnQgbnJfcGFnZXNfdG9fc2tpcChzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmksIGludCB0eXBlKQo+PiAgICAgICAgICAgICAgICAgcmV0dXJu IDA7Cj4+ICB9Cj4+Cj4+ICsvKgo+PiArICogV2hlbiB3cml0aW5nIGNhY2hlIGFzeW5jaHJvbm91 c2x5LCBhbGlnbiBucl90b193cml0ZSB0byBCSU9fTUFYX1ZFQ1MuCj4+ICsgKi8KPj4gK3N0YXRp YyBpbmxpbmUgbG9uZyBhZGp1c3RfZmx1c2hfY2FjaGVfbnVtYmVyKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSwgaW50IHR5cGUpCj4+ICt7Cj4+ICsgICAgICAgbG9uZyBucl90b193cml0ZTsKPj4g Kwo+PiArICAgICAgIHN3aXRjaCAodHlwZSkgewo+PiArICAgICAgIGNhc2UgTUVUQToKPj4gKyAg ICAgICAgICAgICAgIG5yX3RvX3dyaXRlID0gQklPX01BWF9WRUNTOwo+PiArICAgICAgICAgICAg ICAgYnJlYWs7Cj4+ICsgICAgICAgY2FzZSBOT0RFOgo+PiArICAgICAgICAgICAgICAgbnJfdG9f d3JpdGUgPSBCSU9fTUFYX1ZFQ1MgPDwgMTsKPj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+PiAr ICAgICAgIGRlZmF1bHQ6Cj4+ICsgICAgICAgICAgICAgICBmMmZzX2J1Z19vbihzYmksIDEpOwo+ PiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ICsgICAgICAgfQo+PiArICAgICAgIHJldHVy biBucl90b193cml0ZTsKPj4gK30KPj4gKwo+PiAgLyoKPj4gICAqIFdoZW4gd3JpdGluZyBwYWdl cywgaXQnZCBiZXR0ZXIgYWxpZ24gbnJfdG9fd3JpdGUgZm9yIHNlZ21lbnQgc2l6ZS4KPj4gICAq Lwo+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9zdXBlci5jIGIvZnMvZjJmcy9zdXBlci5jCj4+IGlu ZGV4IDliYjE5ZjRjNWZkMi4uMzZmNzNmZjMzNDNjIDEwMDY0NAo+PiAtLS0gYS9mcy9mMmZzL3N1 cGVyLmMKPj4gKysrIGIvZnMvZjJmcy9zdXBlci5jCj4+IEBAIC0xODYxLDggKzE4NjEsNyBAQCBz dGF0aWMgaW50IGYyZnNfZHJvcF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQo+PiAgICAgICAg ICAqIGRyb3AgdXNlbGVzcyBtZXRhL25vZGUgZGlydHkgcGFnZXMuCj4+ICAgICAgICAgICovCj4+ ICAgICAgICAgaWYgKHVubGlrZWx5KGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxF RCkpKSB7Cj4+IC0gICAgICAgICAgICAgICBpZiAoaW5vZGUtPmlfaW5vID09IEYyRlNfTk9ERV9J Tk8oc2JpKSB8fAo+PiAtICAgICAgICAgICAgICAgICAgICAgICBpbm9kZS0+aV9pbm8gPT0gRjJG U19NRVRBX0lOTyhzYmkpKSB7Cj4+ICsgICAgICAgICAgICAgICBpZiAoaW5vZGUtPmlfaW5vID09 IEYyRlNfTk9ERV9JTk8oc2JpKSkgewo+PiAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZV9m MmZzX2Ryb3BfaW5vZGUoaW5vZGUsIDEpOwo+PiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gMTsKPj4gICAgICAgICAgICAgICAgIH0KPj4gQEAgLTE5NjQsOCArMTk2Myw3IEBAIHN0YXRp YyB2b2lkIGYyZnNfZGlydHlfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgaW50IGZsYWdzKQo+ PiAgewo+PiAgICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfSV9TQihpbm9k ZSk7Cj4+Cj4+IC0gICAgICAgaWYgKGlub2RlLT5pX2lubyA9PSBGMkZTX05PREVfSU5PKHNiaSkg fHwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgaW5vZGUtPmlfaW5vID09IEYyRlNfTUVUQV9J Tk8oc2JpKSkKPj4gKyAgICAgICBpZiAoaW5vZGUtPmlfaW5vID09IEYyRlNfTk9ERV9JTk8oc2Jp KSkKPj4gICAgICAgICAgICAgICAgIHJldHVybjsKPj4KPj4gICAgICAgICBpZiAoaXNfaW5vZGVf ZmxhZ19zZXQoaW5vZGUsIEZJX0FVVE9fUkVDT1ZFUikpCj4+IEBAIC0yMDYxLDkgKzIwNTksMTAg QEAgc3RhdGljIHZvaWQgZjJmc19wdXRfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKPj4K Pj4gICAgICAgICBmMmZzX3dhaXRfb25fYWxsX3BhZ2VzKHNiaSwgRjJGU19XQl9DUF9EQVRBKTsK Pj4KPj4gLSAgICAgICBpZiAoZXJyIHx8IGYyZnNfY3BfZXJyb3Ioc2JpKSkgewo+PiArICAgICAg IGlmIChlcnIgfHwgZjJmc19jcF9lcnJvcihzYmkpIHx8Cj4+ICsgICAgICAgICAgICAgICB1bmxp a2VseShpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElTQUJMRUQpKSkgewo+PiAgICAgICAg ICAgICAgICAgdHJ1bmNhdGVfaW5vZGVfcGFnZXNfZmluYWwoTk9ERV9NQVBQSU5HKHNiaSkpOwo+ PiAtICAgICAgICAgICAgICAgdHJ1bmNhdGVfaW5vZGVfcGFnZXNfZmluYWwoTUVUQV9NQVBQSU5H KHNiaSkpOwo+PiArICAgICAgICAgICAgICAgZjJmc190cnVuY2F0ZV9tZXRhX2NhY2hlcyhzYmks IDAsIFVMT05HX01BWCk7Cj4+ICAgICAgICAgfQo+Pgo+PiAgICAgICAgIGYyZnNfYnVnX29uKHNi aSwgc2JpLT5mc3luY19ub2RlX251bSk7Cj4+IEBAIC0yMDczLDkgKzIwNzIsNiBAQCBzdGF0aWMg dm9pZCBmMmZzX3B1dF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQo+PiAgICAgICAgIGlw dXQoc2JpLT5ub2RlX2lub2RlKTsKPj4gICAgICAgICBzYmktPm5vZGVfaW5vZGUgPSBOVUxMOwo+ Pgo+PiAtICAgICAgIGlwdXQoc2JpLT5tZXRhX2lub2RlKTsKPj4gLSAgICAgICBzYmktPm1ldGFf aW5vZGUgPSBOVUxMOwo+PiAtCj4+ICAgICAgICAgZjJmc19kZXN0cm95X2NhY2hlKE1FVEFfQ0FD SEUoc2JpKSk7Cj4+Cj4+ICAgICAgICAgLyogU2hvdWxkIGNoZWNrIHRoZSBwYWdlIGNvdW50cyBh ZnRlciBkcm9wcGluZyBhbGwgbm9kZS9tZXRhIHBhZ2VzICovCj4+IEBAIC00NDExLDcgKzQ0MDcs NiBAQCBzdGF0aWMgdm9pZCBpbml0X3NiX2luZm8oc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+ PiAgICAgICAgIHNiaS0+YWxsb2NhdGVfc2VjdGlvbl9wb2xpY3kgPSBBTExPQ0FURV9GT1JXQVJE X05PSElOVDsKPj4gICAgICAgICBGMkZTX1JPT1RfSU5PKHNiaSkgPSBsZTMyX3RvX2NwdShyYXdf c3VwZXItPnJvb3RfaW5vKTsKPj4gICAgICAgICBGMkZTX05PREVfSU5PKHNiaSkgPSBsZTMyX3Rv X2NwdShyYXdfc3VwZXItPm5vZGVfaW5vKTsKPj4gLSAgICAgICBGMkZTX01FVEFfSU5PKHNiaSkg PSBsZTMyX3RvX2NwdShyYXdfc3VwZXItPm1ldGFfaW5vKTsKPj4gICAgICAgICBzYmktPmN1cl92 aWN0aW1fc2VjID0gTlVMTF9TRUNOTzsKPj4gICAgICAgICBzYmktPmdjX21vZGUgPSBHQ19OT1JN QUw7Cj4+ICAgICAgICAgc2JpLT5uZXh0X3ZpY3RpbV9zZWdbQkdfR0NdID0gTlVMTF9TRUdOTzsK Pj4gQEAgLTUyNTIsMTggKzUyNDcsMTAgQEAgc3RhdGljIGludCBmMmZzX2ZpbGxfc3VwZXIoc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQo+PiAgICAgICAgIGlm IChlcnIpCj4+ICAgICAgICAgICAgICAgICBnb3RvIGZyZWVfcGFnZV9hcnJheV9jYWNoZTsKPj4K Pj4gLSAgICAgICAvKiBnZXQgYW4gaW5vZGUgZm9yIG1ldGEgc3BhY2UgKi8KPj4gLSAgICAgICBz YmktPm1ldGFfaW5vZGUgPSBmMmZzX2lnZXQoc2IsIEYyRlNfTUVUQV9JTk8oc2JpKSk7Cj4+IC0g ICAgICAgaWYgKElTX0VSUihzYmktPm1ldGFfaW5vZGUpKSB7Cj4+IC0gICAgICAgICAgICAgICBm MmZzX2VycihzYmksICJGYWlsZWQgdG8gcmVhZCBGMkZTIG1ldGEgZGF0YSBpbm9kZSIpOwo+PiAt ICAgICAgICAgICAgICAgZXJyID0gUFRSX0VSUihzYmktPm1ldGFfaW5vZGUpOwo+PiAtICAgICAg ICAgICAgICAgZ290byBmcmVlX21ldGFfY2FjaGU7Cj4+IC0gICAgICAgfQo+PiAtCj4+ICAgICAg ICAgZXJyID0gZjJmc19nZXRfdmFsaWRfY2hlY2twb2ludChzYmkpOwo+PiAgICAgICAgIGlmIChl cnIpIHsKPj4gICAgICAgICAgICAgICAgIGYyZnNfZXJyKHNiaSwgIkZhaWxlZCB0byBnZXQgdmFs aWQgRjJGUyBjaGVja3BvaW50Iik7Cj4+IC0gICAgICAgICAgICAgICBnb3RvIGZyZWVfbWV0YV9p bm9kZTsKPj4gKyAgICAgICAgICAgICAgIGdvdG8gZnJlZV9tZXRhX2NhY2hlOwo+PiAgICAgICAg IH0KPj4KPj4gICAgICAgICBpZiAoX19pc19zZXRfY2twdF9mbGFncyhGMkZTX0NLUFQoc2JpKSwg Q1BfUVVPVEFfTkVFRF9GU0NLX0ZMQUcpKQo+PiBAQCAtNTU2NSw3ICs1NTUyLDcgQEAgc3RhdGlj IGludCBmMmZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2Nv bnRleHQgKmZjKQo+PiAgICAgICAgICAqIGZvbGxvd2VkIGJ5IGYyZnNfd3JpdGVfY2hlY2twb2lu dCgpIHRocm91Z2ggZjJmc193cml0ZV9ub2RlX3BhZ2VzKCksIHdoaWNoCj4+ICAgICAgICAgICog ZmFsbHMgaW50byBhbiBpbmZpbml0ZSBsb29wIGluIGYyZnNfc3luY19tZXRhX3BhZ2VzKCkuCj4+ ICAgICAgICAgICovCj4+IC0gICAgICAgdHJ1bmNhdGVfaW5vZGVfcGFnZXNfZmluYWwoTUVUQV9N QVBQSU5HKHNiaSkpOwo+PiArICAgICAgIGYyZnNfdHJ1bmNhdGVfbWV0YV9jYWNoZXMoc2JpLCAw LCBVTE9OR19NQVgpOwo+PiAgICAgICAgIC8qIGV2aWN0IHNvbWUgaW5vZGVzIGJlaW5nIGNhY2hl ZCBieSBHQyAqLwo+PiAgICAgICAgIGV2aWN0X2lub2RlcyhzYik7Cj4+ICAgICAgICAgZjJmc191 bnJlZ2lzdGVyX3N5c2ZzKHNiaSk7Cj4+IEBAIC01NTk1LDEwICs1NTgyLDYgQEAgc3RhdGljIGlu dCBmMmZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRl eHQgKmZjKQo+PiAgZnJlZV9kZXZpY2VzOgo+PiAgICAgICAgIGRlc3Ryb3lfZGV2aWNlX2xpc3Qo c2JpKTsKPj4gICAgICAgICBrdmZyZWUoc2JpLT5ja3B0KTsKPj4gLWZyZWVfbWV0YV9pbm9kZToK Pj4gLSAgICAgICBtYWtlX2JhZF9pbm9kZShzYmktPm1ldGFfaW5vZGUpOwo+PiAtICAgICAgIGlw dXQoc2JpLT5tZXRhX2lub2RlKTsKPj4gLSAgICAgICBzYmktPm1ldGFfaW5vZGUgPSBOVUxMOwo+ PiAgZnJlZV9tZXRhX2NhY2hlOgo+PiAgICAgICAgIGYyZnNfZGVzdHJveV9jYWNoZShNRVRBX0NB Q0hFKHNiaSkpOwo+PiAgZnJlZV9wYWdlX2FycmF5X2NhY2hlOgo+PiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9mMmZzX2ZzLmggYi9pbmNsdWRlL2xpbnV4L2YyZnNfZnMuaAo+PiBpbmRleCBi YjJiNmNkNWQ1MDcuLjBjMDI3ZDAwYTFlYSAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS9saW51eC9m MmZzX2ZzLmgKPj4gKysrIGIvaW5jbHVkZS9saW51eC9mMmZzX2ZzLmgKPj4gQEAgLTM1LDcgKzM1 LDYgQEAKPj4KPj4gICNkZWZpbmUgRjJGU19ST09UX0lOTyhzYmkpICAgICAoKHNiaSktPnJvb3Rf aW5vX251bSkKPj4gICNkZWZpbmUgRjJGU19OT0RFX0lOTyhzYmkpICAgICAoKHNiaSktPm5vZGVf aW5vX251bSkKPj4gLSNkZWZpbmUgRjJGU19NRVRBX0lOTyhzYmkpICAgICAoKHNiaSktPm1ldGFf aW5vX251bSkKPj4gICNkZWZpbmUgRjJGU19DT01QUkVTU19JTk8oc2JpKSAoTk1fSShzYmkpLT5t YXhfbmlkKQo+Pgo+PiAgI2RlZmluZSBGMkZTX01BWF9RVU9UQVMgICAgICAgICAgICAgICAgMwo+ PiAtLQo+PiAyLjQ5LjAKPj4KPj4KPj4KPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPj4gTGludXgtZjJmcy1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gTGlu dXgtZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKPj4gaHR0cHM6Ly9saXN0cy5zb3Vy Y2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbGludXgtZjJmcy1kZXZlbAoKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1mMmZzLWRldmVsIG1h aWxpbmcgbGlzdApMaW51eC1mMmZzLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldApodHRwczov L2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9saW51eC1mMmZzLWRldmVsCg==