From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A3C50C00140 for ; Fri, 12 Aug 2022 09:50:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=DI1M5udHQ7RE40lMzS8wnV03o6bRZyiG89dXGQxCvdo=; b=vY4sCwLsfK+46C 2i9kKReqGe69i9hh/Jq2fWZy1C5WEeSNhfvLHTjl6LHaopCwbUjKZ0BZ2J3XB3ed5PS/lXwAGzW2l j7bqcMYycwPr0yXQdB7SitcOVwwgz4HyPS7j4elEMcv4a2JWQHaomGUP1NtE5tq1NwVoGMx92dIbd OaZDbc9b3FCVaIk06avR6OWWRihc56vD6ngDHMvKPRwJyClj+l0t+GyLFsY6rPYOTs3X0i5+cr9dE Yj4jClHWAIDh7UQnnkLbiDZD+7FWBLCnLNujJ8EVmouFuLpVFqg5FRv5yo561gXSMf/YaQDAUYbnN mW0Pr7RbwFp+m6TBrKBg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oMRI5-003xYQ-0z; Fri, 12 Aug 2022 09:49:17 +0000 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oMRHy-003xTE-V1 for linux-arm-kernel@lists.infradead.org; Fri, 12 Aug 2022 09:49:16 +0000 Received: by mail-wr1-x42d.google.com with SMTP id z17so619918wrq.4 for ; Fri, 12 Aug 2022 02:49:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc; bh=RzEhULFh5C11hulah0FUo3JNUtX07F7nVSL48uHPhdI=; b=iD1bwBmFsXbfpXtoHr1UkxxBls3HDdToems9qYPmIWMLupIY7msNWkpkqHzOgNq4V5 Fo4Ts42lzKMvuKvD66WZbZrc0WNkUuvgrybkZayS0fb1Mzi6TC0QAbZxqOpwiuZIAqeA J+ebN9HDSQL/dBFllqwM3URsCVheiZuHB1UP0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc; bh=RzEhULFh5C11hulah0FUo3JNUtX07F7nVSL48uHPhdI=; b=iSe46Q0cknci9TfaaUdhTlZEG9idO13/xhHN7NI6mS5p4mO/k5JKOYDwoO4cRJNXO/ S2ctMQ+HIP/CKjvD5/7lpCFsIzYJvgIhOvVd4G4hTvEadmiW71Kl+jWN2qQObeU40kIF snnNbGLRn5xp1VPDL7rq6EdbIRTZBpGXn05td+8KWkx+/IkDTF0AFa1mgJtHa1KMXp7t xLjNJOJBAmMQLzpXxj1cuM1Z0MQxDk8xu2XDpWTd1qGIZwCpMIG0nK4pMPcD2hAR2F/G nRyjiUkSGesnZ0iAXuoNMQIXQPDWHBauV5eiQmyUMhXRAkVfzXYbPEU/BWf5mgWlJCPI Lcdw== X-Gm-Message-State: ACgBeo3QHBznZqgCZmHqnREvmkguiFTXnQj5UBprDR8GsC+O37Hbp9PE kyvCeinM8VMcY6OOa1P3j4cHRw== X-Google-Smtp-Source: AA6agR6h+G2uTyNPlu28bdLTRju0nOKd6IKAT3sl46Qss2dbz/+mSnbU0Mm84CzFIKh62q6UFyjeaA== X-Received: by 2002:a5d:6d04:0:b0:21f:877:e2ef with SMTP id e4-20020a5d6d04000000b0021f0877e2efmr1671175wrq.131.1660297746994; Fri, 12 Aug 2022 02:49:06 -0700 (PDT) Received: from tom-ThinkPad-T14s-Gen-2i (net-188-217-51-7.cust.vodafonedsl.it. [188.217.51.7]) by smtp.gmail.com with ESMTPSA id 8-20020a05600c020800b003a52969e89csm9085149wmi.4.2022.08.12.02.49.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Aug 2022 02:49:06 -0700 (PDT) Date: Fri, 12 Aug 2022 11:49:04 +0200 From: Tommaso Merciai To: Ming Qian Cc: "mchehab@kernel.org" , "hverkuil-cisco@xs4all.nl" , "shawnguo@kernel.org" , "robh+dt@kernel.org" , "s.hauer@pengutronix.de" , "kernel@pengutronix.de" , "festevam@gmail.com" , dl-linux-imx , "X.H. Bao" , "linux-media@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" Subject: Re: [EXT] Re: [PATCH v4 2/4] media: amphion: tell and handle contiguous and non contiguous format Message-ID: <20220812094904.GB11185@tom-ThinkPad-T14s-Gen-2i> References: <4af9766eb664a02d1c5884cb48fadef24dec142f.1660027440.git.ming.qian@nxp.com> <20220812071455.GB5705@tom-ThinkPad-T14s-Gen-2i> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220812_024911_090021_6CAF87C8 X-CRM114-Status: GOOD ( 33.87 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gRnJpLCBBdWcgMTIsIDIwMjIgYXQgMDc6MTk6NDlBTSArMDAwMCwgTWluZyBRaWFuIHdyb3Rl Ogo+ID5Gcm9tOiBUb21tYXNvIE1lcmNpYWkgPHRvbW1hc28ubWVyY2lhaUBhbWFydWxhc29sdXRp b25zLmNvbT4KPiA+U2VudDogMjAyMuW5tDjmnIgxMuaXpSAxNToxNQo+ID5UbzogTWluZyBRaWFu IDxtaW5nLnFpYW5AbnhwLmNvbT4KPiA+Q2M6IG1jaGVoYWJAa2VybmVsLm9yZzsgaHZlcmt1aWwt Y2lzY29AeHM0YWxsLm5sOyBzaGF3bmd1b0BrZXJuZWwub3JnOwo+ID5yb2JoK2R0QGtlcm5lbC5v cmc7IHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU7IGtlcm5lbEBwZW5ndXRyb25peC5kZTsKPiA+ZmVz dGV2YW1AZ21haWwuY29tOyBkbC1saW51eC1pbXggPGxpbnV4LWlteEBueHAuY29tPjsgWC5ILiBC YW8KPiA+PHhpYWhvbmcuYmFvQG54cC5jb20+OyBsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmc7 Cj4gPmxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMu aW5mcmFkZWFkLm9yZwo+ID5TdWJqZWN0OiBbRVhUXSBSZTogW1BBVENIIHY0IDIvNF0gbWVkaWE6 IGFtcGhpb246IHRlbGwgYW5kIGhhbmRsZSBjb250aWd1b3VzCj4gPmFuZCBub24gY29udGlndW91 cyBmb3JtYXQKPiA+Cj4gPkNhdXRpb246IEVYVCBFbWFpbAo+ID4KPiA+SGkgTWluZywKPiA+SnVz dCBhbiBpbmZvLiBJJ20gcGxhbm5pbmcgdG8gaGVscCB0byByZXZpZXcgeW91ciBzZXJpZXMuCj4g Pk9uIHdoaWNoIExpbnV4IHRyZWUgYXJlIHlvdSB3b3JraW5nPwo+IAo+IEhpIFRvbW1hc28sCj4g ICAgIFRoYW5rcyBmb3IgeW91ciBoZWxwLCBhbmQgSSdtIHdvcmtpbmcgb24gaHR0cHM6Ly9naXQu bGludXh0di5vcmcvbWVkaWFfdHJlZS5naXQKPiAKPiBNaW5nCgpIaSBNaW5nLApBcmUgeW91IHdv cmtpbmcgb24gdG9wIG9mIG1hc3RlciBicmFuY2g/IEkgaGF2ZSBzb21lIGlzc3VlIG9uIGFwcGx5 CnRoaXMuCgpMZXQgbWUga25vdy4KVGhhbmtzLAoKVG9tbWFzbwoKCj4gCj4gPgo+ID5UaGFua3Mg aW4gYWR2YW5jZSwKPiA+VG9tbWFzbwo+ID4KPiA+T24gVHVlLCBBdWcgMDksIDIwMjIgYXQgMDI6 NTA6MzlQTSArMDgwMCwgTWluZyBRaWFuIHdyb3RlOgo+ID4+IERyaXZlciBzaG91bGQgdGVsbCB0 aGUgbnVtYmVyIG9mIG1lbW9yeSBwbGFuZXMgYW5kIGNvbXBvbmVudCBwbGFuZXMuCj4gPj4gdGhl IGFtcGhpb24gdnB1IHN1cHBvcnQgbm9uIGNvbnRpZ3VvdXMgcGxhbmVzLCBidXQgZm9yIGNvbXBh dGliaWxpdHkKPiA+PiB3aXRoIG90aGVyIGRldmljZSB0aGF0IG9ubHkgc3VwcG9ydCBjb250aWd1 b3VzIHBsYW5lcy4KPiA+PiBkcml2ZXIgY2FuIGFkZCBzdXBwb3J0IGZvciBjb250aWd1b3VzIHBs YW5lcyBpbiB0aGUgc2FtZSB0aW1lLgo+ID4+IFRoZW4gdGhlIG1lbV9wbGFuZXMgY2FuIGJlIGRp ZmZlcmVudCBmcm9tIHRoZSBjb21wX3BsYW5lcy4KPiA+PiBkcml2ZXIgbmVlZCB0byBoYW5kbGUg YnVmZmVyIGFjY29yZGluZyBtZW1fcGxhbmVzIGFuZCBjb21wX3BsYW5lcy4KPiA+Pgo+ID4+IFNv IGRyaXZlciBjYW4gc3VwcG9ydCBOVjEyIGFuZCBOVjEyTS4KPiA+Pgo+ID4+IFNpZ25lZC1vZmYt Ynk6IE1pbmcgUWlhbiA8bWluZy5xaWFuQG54cC5jb20+Cj4gPj4gLS0tCj4gPj4gIGRyaXZlcnMv bWVkaWEvcGxhdGZvcm0vYW1waGlvbi92ZGVjLmMgICAgICAgIHwgMTg3ICsrKysrKysrKystLS0t LS0tLS0KPiA+PiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3ZlbmMuYyAgICAgICAg fCAgMzMgKystLQo+ID4+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1LmggICAg ICAgICB8ICAgNCArLQo+ID4+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1X2Ri Zy5jICAgICB8ICAgOCArLQo+ID4+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1 X2hlbHBlcnMuYyB8ICA0OCArKysrLQo+ID4+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhp b24vdnB1X2hlbHBlcnMuaCB8ICAgMiArCj4gPj4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1w aGlvbi92cHVfbWFsb25lLmMgIHwgICAzICstCj4gPj4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0v YW1waGlvbi92cHVfdjRsMi5jICAgIHwgMTY4ICsrKysrKysrKysrKy0tLS0tCj4gPj4gIGRyaXZl cnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfdjRsMi5oICAgIHwgICAzICstCj4gPj4gIGRy aXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfd2luZHNvci5jIHwgICA4ICstCj4gPj4g IDEwIGZpbGVzIGNoYW5nZWQsIDI5OSBpbnNlcnRpb25zKCspLCAxNjUgZGVsZXRpb25zKC0pCj4g Pj4KPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3ZkZWMu Ywo+ID4+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3ZkZWMuYwo+ID4+IGluZGV4 IGZlYjc1ZGMyMDRkZS4uNDhhYjY2NGZhN2VmIDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vYW1waGlvbi92ZGVjLmMKPiA+PiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL2FtcGhpb24vdmRlYy5jCj4gPj4gQEAgLTY5LDcyICs2OSw4NSBAQCBzdHJ1Y3QgdmRlY190 IHsKPiA+PiAgc3RhdGljIGNvbnN0IHN0cnVjdCB2cHVfZm9ybWF0IHZkZWNfZm9ybWF0c1tdID0g ewo+ID4+ICAgICAgIHsKPiA+PiAgICAgICAgICAgICAgIC5waXhmbXQgPSBWNEwyX1BJWF9GTVRf TlYxMk1fOEwxMjgsCj4gPj4gLSAgICAgICAgICAgICAubnVtX3BsYW5lcyA9IDIsCj4gPj4gKyAg ICAgICAgICAgICAubWVtX3BsYW5lcyA9IDIsCj4gPj4gKyAgICAgICAgICAgICAuY29tcF9wbGFu ZXMgPSAyLAo+ID4+ICAgICAgICAgICAgICAgLnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NB UFRVUkVfTVBMQU5FLAo+ID4+ICAgICAgIH0sCj4gPj4gICAgICAgewo+ID4+ICAgICAgICAgICAg ICAgLnBpeGZtdCA9IFY0TDJfUElYX0ZNVF9OVjEyTV8xMEJFXzhMMTI4LAo+ID4+IC0gICAgICAg ICAgICAgLm51bV9wbGFuZXMgPSAyLAo+ID4+ICsgICAgICAgICAgICAgLm1lbV9wbGFuZXMgPSAy LAo+ID4+ICsgICAgICAgICAgICAgLmNvbXBfcGxhbmVzID0gMiwKPiA+PiAgICAgICAgICAgICAg IC50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFX01QTEFORSwKPiA+PiAgICAgICB9 LAo+ID4+ICAgICAgIHsKPiA+PiAgICAgICAgICAgICAgIC5waXhmbXQgPSBWNEwyX1BJWF9GTVRf SDI2NCwKPiA+PiAtICAgICAgICAgICAgIC5udW1fcGxhbmVzID0gMSwKPiA+PiArICAgICAgICAg ICAgIC5tZW1fcGxhbmVzID0gMSwKPiA+PiArICAgICAgICAgICAgIC5jb21wX3BsYW5lcyA9IDEs Cj4gPj4gICAgICAgICAgICAgICAudHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVUX01Q TEFORSwKPiA+PiAtICAgICAgICAgICAgIC5mbGFncyA9IFY0TDJfRk1UX0ZMQUdfRFlOX1JFU09M VVRJT04KPiA+PiArICAgICAgICAgICAgIC5mbGFncyA9IFY0TDJfRk1UX0ZMQUdfRFlOX1JFU09M VVRJT04gfAo+ID4+ICsgVjRMMl9GTVRfRkxBR19DT01QUkVTU0VECj4gPj4gICAgICAgfSwKPiA+ PiAgICAgICB7Cj4gPj4gICAgICAgICAgICAgICAucGl4Zm10ID0gVjRMMl9QSVhfRk1UX0gyNjRf TVZDLAo+ID4+IC0gICAgICAgICAgICAgLm51bV9wbGFuZXMgPSAxLAo+ID4+ICsgICAgICAgICAg ICAgLm1lbV9wbGFuZXMgPSAxLAo+ID4+ICsgICAgICAgICAgICAgLmNvbXBfcGxhbmVzID0gMSwK PiA+PiAgICAgICAgICAgICAgIC50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVRfTVBM QU5FLAo+ID4+IC0gICAgICAgICAgICAgLmZsYWdzID0gVjRMMl9GTVRfRkxBR19EWU5fUkVTT0xV VElPTgo+ID4+ICsgICAgICAgICAgICAgLmZsYWdzID0gVjRMMl9GTVRfRkxBR19EWU5fUkVTT0xV VElPTiB8Cj4gPj4gKyBWNEwyX0ZNVF9GTEFHX0NPTVBSRVNTRUQKPiA+PiAgICAgICB9LAo+ID4+ ICAgICAgIHsKPiA+PiAgICAgICAgICAgICAgIC5waXhmbXQgPSBWNEwyX1BJWF9GTVRfSEVWQywK PiA+PiAtICAgICAgICAgICAgIC5udW1fcGxhbmVzID0gMSwKPiA+PiArICAgICAgICAgICAgIC5t ZW1fcGxhbmVzID0gMSwKPiA+PiArICAgICAgICAgICAgIC5jb21wX3BsYW5lcyA9IDEsCj4gPj4g ICAgICAgICAgICAgICAudHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVUX01QTEFORSwK PiA+PiAtICAgICAgICAgICAgIC5mbGFncyA9IFY0TDJfRk1UX0ZMQUdfRFlOX1JFU09MVVRJT04K PiA+PiArICAgICAgICAgICAgIC5mbGFncyA9IFY0TDJfRk1UX0ZMQUdfRFlOX1JFU09MVVRJT04g fAo+ID4+ICsgVjRMMl9GTVRfRkxBR19DT01QUkVTU0VECj4gPj4gICAgICAgfSwKPiA+PiAgICAg ICB7Cj4gPj4gICAgICAgICAgICAgICAucGl4Zm10ID0gVjRMMl9QSVhfRk1UX1ZDMV9BTk5FWF9H LAo+ID4+IC0gICAgICAgICAgICAgLm51bV9wbGFuZXMgPSAxLAo+ID4+ICsgICAgICAgICAgICAg Lm1lbV9wbGFuZXMgPSAxLAo+ID4+ICsgICAgICAgICAgICAgLmNvbXBfcGxhbmVzID0gMSwKPiA+ PiAgICAgICAgICAgICAgIC50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVRfTVBMQU5F LAo+ID4+IC0gICAgICAgICAgICAgLmZsYWdzID0gVjRMMl9GTVRfRkxBR19EWU5fUkVTT0xVVElP Tgo+ID4+ICsgICAgICAgICAgICAgLmZsYWdzID0gVjRMMl9GTVRfRkxBR19EWU5fUkVTT0xVVElP TiB8Cj4gPj4gKyBWNEwyX0ZNVF9GTEFHX0NPTVBSRVNTRUQKPiA+PiAgICAgICB9LAo+ID4+ICAg ICAgIHsKPiA+PiAgICAgICAgICAgICAgIC5waXhmbXQgPSBWNEwyX1BJWF9GTVRfVkMxX0FOTkVY X0wsCj4gPj4gLSAgICAgICAgICAgICAubnVtX3BsYW5lcyA9IDEsCj4gPj4gKyAgICAgICAgICAg ICAubWVtX3BsYW5lcyA9IDEsCj4gPj4gKyAgICAgICAgICAgICAuY29tcF9wbGFuZXMgPSAxLAo+ ID4+ICAgICAgICAgICAgICAgLnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExB TkUsCj4gPj4gKyAgICAgICAgICAgICAuZmxhZ3MgPSBWNEwyX0ZNVF9GTEFHX0NPTVBSRVNTRUQK PiA+PiAgICAgICB9LAo+ID4+ICAgICAgIHsKPiA+PiAgICAgICAgICAgICAgIC5waXhmbXQgPSBW NEwyX1BJWF9GTVRfTVBFRzIsCj4gPj4gLSAgICAgICAgICAgICAubnVtX3BsYW5lcyA9IDEsCj4g Pj4gKyAgICAgICAgICAgICAubWVtX3BsYW5lcyA9IDEsCj4gPj4gKyAgICAgICAgICAgICAuY29t cF9wbGFuZXMgPSAxLAo+ID4+ICAgICAgICAgICAgICAgLnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJ REVPX09VVFBVVF9NUExBTkUsCj4gPj4gLSAgICAgICAgICAgICAuZmxhZ3MgPSBWNEwyX0ZNVF9G TEFHX0RZTl9SRVNPTFVUSU9OCj4gPj4gKyAgICAgICAgICAgICAuZmxhZ3MgPSBWNEwyX0ZNVF9G TEFHX0RZTl9SRVNPTFVUSU9OIHwKPiA+PiArIFY0TDJfRk1UX0ZMQUdfQ09NUFJFU1NFRAo+ID4+ ICAgICAgIH0sCj4gPj4gICAgICAgewo+ID4+ICAgICAgICAgICAgICAgLnBpeGZtdCA9IFY0TDJf UElYX0ZNVF9NUEVHNCwKPiA+PiAtICAgICAgICAgICAgIC5udW1fcGxhbmVzID0gMSwKPiA+PiAr ICAgICAgICAgICAgIC5tZW1fcGxhbmVzID0gMSwKPiA+PiArICAgICAgICAgICAgIC5jb21wX3Bs YW5lcyA9IDEsCj4gPj4gICAgICAgICAgICAgICAudHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9f T1VUUFVUX01QTEFORSwKPiA+PiAtICAgICAgICAgICAgIC5mbGFncyA9IFY0TDJfRk1UX0ZMQUdf RFlOX1JFU09MVVRJT04KPiA+PiArICAgICAgICAgICAgIC5mbGFncyA9IFY0TDJfRk1UX0ZMQUdf RFlOX1JFU09MVVRJT04gfAo+ID4+ICsgVjRMMl9GTVRfRkxBR19DT01QUkVTU0VECj4gPj4gICAg ICAgfSwKPiA+PiAgICAgICB7Cj4gPj4gICAgICAgICAgICAgICAucGl4Zm10ID0gVjRMMl9QSVhf Rk1UX1hWSUQsCj4gPj4gLSAgICAgICAgICAgICAubnVtX3BsYW5lcyA9IDEsCj4gPj4gKyAgICAg ICAgICAgICAubWVtX3BsYW5lcyA9IDEsCj4gPj4gKyAgICAgICAgICAgICAuY29tcF9wbGFuZXMg PSAxLAo+ID4+ICAgICAgICAgICAgICAgLnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBV VF9NUExBTkUsCj4gPj4gLSAgICAgICAgICAgICAuZmxhZ3MgPSBWNEwyX0ZNVF9GTEFHX0RZTl9S RVNPTFVUSU9OCj4gPj4gKyAgICAgICAgICAgICAuZmxhZ3MgPSBWNEwyX0ZNVF9GTEFHX0RZTl9S RVNPTFVUSU9OIHwKPiA+PiArIFY0TDJfRk1UX0ZMQUdfQ09NUFJFU1NFRAo+ID4+ICAgICAgIH0s Cj4gPj4gICAgICAgewo+ID4+ICAgICAgICAgICAgICAgLnBpeGZtdCA9IFY0TDJfUElYX0ZNVF9W UDgsCj4gPj4gLSAgICAgICAgICAgICAubnVtX3BsYW5lcyA9IDEsCj4gPj4gKyAgICAgICAgICAg ICAubWVtX3BsYW5lcyA9IDEsCj4gPj4gKyAgICAgICAgICAgICAuY29tcF9wbGFuZXMgPSAxLAo+ ID4+ICAgICAgICAgICAgICAgLnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExB TkUsCj4gPj4gLSAgICAgICAgICAgICAuZmxhZ3MgPSBWNEwyX0ZNVF9GTEFHX0RZTl9SRVNPTFVU SU9OCj4gPj4gKyAgICAgICAgICAgICAuZmxhZ3MgPSBWNEwyX0ZNVF9GTEFHX0RZTl9SRVNPTFVU SU9OIHwKPiA+PiArIFY0TDJfRk1UX0ZMQUdfQ09NUFJFU1NFRAo+ID4+ICAgICAgIH0sCj4gPj4g ICAgICAgewo+ID4+ICAgICAgICAgICAgICAgLnBpeGZtdCA9IFY0TDJfUElYX0ZNVF9IMjYzLAo+ ID4+IC0gICAgICAgICAgICAgLm51bV9wbGFuZXMgPSAxLAo+ID4+ICsgICAgICAgICAgICAgLm1l bV9wbGFuZXMgPSAxLAo+ID4+ICsgICAgICAgICAgICAgLmNvbXBfcGxhbmVzID0gMSwKPiA+PiAg ICAgICAgICAgICAgIC50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVRfTVBMQU5FLAo+ ID4+IC0gICAgICAgICAgICAgLmZsYWdzID0gVjRMMl9GTVRfRkxBR19EWU5fUkVTT0xVVElPTgo+ ID4+ICsgICAgICAgICAgICAgLmZsYWdzID0gVjRMMl9GTVRfRkxBR19EWU5fUkVTT0xVVElPTiB8 Cj4gPj4gKyBWNEwyX0ZNVF9GTEFHX0NPTVBSRVNTRUQKPiA+PiAgICAgICB9LAo+ID4+ICAgICAg IHswLCAwLCAwLCAwfSwKPiA+PiAgfTsKPiA+PiBAQCAtMjU2LDIzICsyNjksMjIgQEAgc3RhdGlj IGludCB2ZGVjX2VudW1fZm10KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwKPiA+c3RydWN0 IHY0bDJfZm10ZGVzYyAqZikKPiA+PiAgICAgICBpbnQgcmV0ID0gLUVJTlZBTDsKPiA+Pgo+ID4+ ICAgICAgIHZwdV9pbnN0X2xvY2soaW5zdCk7Cj4gPj4gLSAgICAgaWYgKCFWNEwyX1RZUEVfSVNf T1VUUFVUKGYtPnR5cGUpICYmIHZkZWMtPmZpeGVkX2ZtdCkgewo+ID4+IC0gICAgICAgICAgICAg aWYgKGYtPmluZGV4ID09IDApIHsKPiA+PiAtICAgICAgICAgICAgICAgICAgICAgZi0+cGl4ZWxm b3JtYXQgPSBpbnN0LT5jYXBfZm9ybWF0LnBpeGZtdDsKPiA+PiAtICAgICAgICAgICAgICAgICAg ICAgZi0+ZmxhZ3MgPSBpbnN0LT5jYXBfZm9ybWF0LmZsYWdzOwo+ID4+IC0gICAgICAgICAgICAg ICAgICAgICByZXQgPSAwOwo+ID4+IC0gICAgICAgICAgICAgfQo+ID4+ICsgICAgIGlmIChWNEwy X1RZUEVfSVNfQ0FQVFVSRShmLT50eXBlKSAmJiB2ZGVjLT5maXhlZF9mbXQpIHsKPiA+PiArICAg ICAgICAgICAgIGZtdCA9IHZwdV9nZXRfZm9ybWF0KGluc3QsIGYtPnR5cGUpOwo+ID4+ICsgICAg ICAgICAgICAgaWYgKGYtPmluZGV4ID09IDEpCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGZt dCA9IHZwdV9oZWxwZXJfZmluZF9zaWJsaW5nKGluc3QsIGYtPnR5cGUsCj4gPmZtdC0+cGl4Zm10 KTsKPiA+PiArICAgICAgICAgICAgIGlmIChmLT5pbmRleCA+IDEpCj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgIGZtdCA9IE5VTEw7Cj4gPj4gICAgICAgfSBlbHNlIHsKPiA+PiAgICAgICAgICAg ICAgIGZtdCA9IHZwdV9oZWxwZXJfZW51bV9mb3JtYXQoaW5zdCwgZi0+dHlwZSwgZi0+aW5kZXgp Owo+ID4+IC0gICAgICAgICAgICAgbWVtc2V0KGYtPnJlc2VydmVkLCAwLCBzaXplb2YoZi0+cmVz ZXJ2ZWQpKTsKPiA+PiAtICAgICAgICAgICAgIGlmICghZm10KQo+ID4+IC0gICAgICAgICAgICAg ICAgICAgICBnb3RvIGV4aXQ7Cj4gPj4gLQo+ID4+IC0gICAgICAgICAgICAgZi0+cGl4ZWxmb3Jt YXQgPSBmbXQtPnBpeGZtdDsKPiA+PiAtICAgICAgICAgICAgIGYtPmZsYWdzID0gZm10LT5mbGFn czsKPiA+PiAtICAgICAgICAgICAgIHJldCA9IDA7Cj4gPj4gICAgICAgfQo+ID4+ICsgICAgIGlm ICghZm10KQo+ID4+ICsgICAgICAgICAgICAgZ290byBleGl0Owo+ID4+Cj4gPj4gKyAgICAgbWVt c2V0KGYtPnJlc2VydmVkLCAwLCBzaXplb2YoZi0+cmVzZXJ2ZWQpKTsKPiA+PiArICAgICBmLT5w aXhlbGZvcm1hdCA9IGZtdC0+cGl4Zm10Owo+ID4+ICsgICAgIGYtPmZsYWdzID0gZm10LT5mbGFn czsKPiA+PiArICAgICByZXQgPSAwOwo+ID4+ICBleGl0Ogo+ID4+ICAgICAgIHZwdV9pbnN0X3Vu bG9jayhpbnN0KTsKPiA+PiAgICAgICByZXR1cm4gcmV0Owo+ID4+IEBAIC0yODksMTQgKzMwMSwx NCBAQCBzdGF0aWMgaW50IHZkZWNfZ19mbXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLAo+ ID5zdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCj4gPj4gICAgICAgY3VyX2ZtdCA9IHZwdV9nZXRfZm9y bWF0KGluc3QsIGYtPnR5cGUpOwo+ID4+Cj4gPj4gICAgICAgcGl4bXAtPnBpeGVsZm9ybWF0ID0g Y3VyX2ZtdC0+cGl4Zm10Owo+ID4+IC0gICAgIHBpeG1wLT5udW1fcGxhbmVzID0gY3VyX2ZtdC0+ bnVtX3BsYW5lczsKPiA+PiArICAgICBwaXhtcC0+bnVtX3BsYW5lcyA9IGN1cl9mbXQtPm1lbV9w bGFuZXM7Cj4gPj4gICAgICAgcGl4bXAtPndpZHRoID0gY3VyX2ZtdC0+d2lkdGg7Cj4gPj4gICAg ICAgcGl4bXAtPmhlaWdodCA9IGN1cl9mbXQtPmhlaWdodDsKPiA+PiAgICAgICBwaXhtcC0+Zmll bGQgPSBjdXJfZm10LT5maWVsZDsKPiA+PiAgICAgICBwaXhtcC0+ZmxhZ3MgPSBjdXJfZm10LT5m bGFnczsKPiA+PiAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGl4bXAtPm51bV9wbGFuZXM7IGkrKykg ewo+ID4+ICAgICAgICAgICAgICAgcGl4bXAtPnBsYW5lX2ZtdFtpXS5ieXRlc3BlcmxpbmUgPSBj dXJfZm10LT5ieXRlc3BlcmxpbmVbaV07Cj4gPj4gLSAgICAgICAgICAgICBwaXhtcC0+cGxhbmVf Zm10W2ldLnNpemVpbWFnZSA9IGN1cl9mbXQtPnNpemVpbWFnZVtpXTsKPiA+PiArICAgICAgICAg ICAgIHBpeG1wLT5wbGFuZV9mbXRbaV0uc2l6ZWltYWdlID0KPiA+PiArIHZwdV9nZXRfZm10X3Bs YW5lX3NpemUoY3VyX2ZtdCwgaSk7Cj4gPj4gICAgICAgfQo+ID4+Cj4gPj4gICAgICAgZi0+Zm10 LnBpeF9tcC5jb2xvcnNwYWNlID0gdmRlYy0+Y29kZWNfaW5mby5jb2xvcl9wcmltYXJpZXM7IEBA Cj4gPj4gLTMxMSwxMCArMzIzLDE5IEBAIHN0YXRpYyBpbnQgdmRlY190cnlfZm10KHN0cnVjdCBm aWxlICpmaWxlLCB2b2lkCj4gPj4gKmZoLCBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpICB7Cj4gPj4g ICAgICAgc3RydWN0IHZwdV9pbnN0ICppbnN0ID0gdG9faW5zdChmaWxlKTsKPiA+PiAgICAgICBz dHJ1Y3QgdmRlY190ICp2ZGVjID0gaW5zdC0+cHJpdjsKPiA+PiAtCj4gPj4gLSAgICAgdnB1X3Ry eV9mbXRfY29tbW9uKGluc3QsIGYpOwo+ID4+ICsgICAgIHN0cnVjdCB2cHVfZm9ybWF0IGZtdDsK PiA+Pgo+ID4+ICAgICAgIHZwdV9pbnN0X2xvY2soaW5zdCk7Cj4gPj4gKyAgICAgaWYgKFY0TDJf VFlQRV9JU19DQVBUVVJFKGYtPnR5cGUpICYmIHZkZWMtPmZpeGVkX2ZtdCkgewo+ID4+ICsgICAg ICAgICAgICAgc3RydWN0IHZwdV9mb3JtYXQgKmNhcF9mbXQgPSB2cHVfZ2V0X2Zvcm1hdChpbnN0 LAo+ID4+ICsgZi0+dHlwZSk7Cj4gPj4gKwo+ID4+ICsgICAgICAgICAgICAgaWYgKCF2cHVfaGVs cGVyX21hdGNoX2Zvcm1hdChpbnN0LCBjYXBfZm10LT50eXBlLAo+ID5jYXBfZm10LT5waXhmbXQs Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZtdC5w aXhfbXAucGl4ZWxmb3JtYXQpKQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICBmLT5mbXQucGl4 X21wLnBpeGVsZm9ybWF0ID0gY2FwX2ZtdC0+cGl4Zm10Owo+ID4+ICsgICAgIH0KPiA+PiArCj4g Pj4gKyAgICAgdnB1X3RyeV9mbXRfY29tbW9uKGluc3QsIGYsICZmbXQpOwo+ID4+ICsKPiA+PiAg ICAgICBpZiAodmRlYy0+Zml4ZWRfZm10KSB7Cj4gPj4gICAgICAgICAgICAgICBmLT5mbXQucGl4 X21wLmNvbG9yc3BhY2UgPQo+ID52ZGVjLT5jb2RlY19pbmZvLmNvbG9yX3ByaW1hcmllczsKPiA+ PiAgICAgICAgICAgICAgIGYtPmZtdC5waXhfbXAueGZlcl9mdW5jID0KPiA+PiB2ZGVjLT5jb2Rl Y19pbmZvLnRyYW5zZmVyX2NoYXJzOyBAQCAtMzM0LDcgKzM1NSw3IEBAIHN0YXRpYyBpbnQKPiA+ PiB2ZGVjX3RyeV9mbXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBzdHJ1Y3QgdjRsMl9m b3JtYXQgKmYpCj4gPj4gc3RhdGljIGludCB2ZGVjX3NfZm10X2NvbW1vbihzdHJ1Y3QgdnB1X2lu c3QgKmluc3QsIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZikgIHsKPiA+PiAgICAgICBzdHJ1Y3QgdjRs Ml9waXhfZm9ybWF0X21wbGFuZSAqcGl4bXAgPSAmZi0+Zm10LnBpeF9tcDsKPiA+PiAtICAgICBj b25zdCBzdHJ1Y3QgdnB1X2Zvcm1hdCAqZm10Owo+ID4+ICsgICAgIHN0cnVjdCB2cHVfZm9ybWF0 IGZtdDsKPiA+PiAgICAgICBzdHJ1Y3QgdnB1X2Zvcm1hdCAqY3VyX2ZtdDsKPiA+PiAgICAgICBz dHJ1Y3QgdmIyX3F1ZXVlICpxOwo+ID4+ICAgICAgIHN0cnVjdCB2ZGVjX3QgKnZkZWMgPSBpbnN0 LT5wcml2OyBAQCAtMzQ5LDM2ICszNzAsMzAgQEAgc3RhdGljCj4gPj4gaW50IHZkZWNfc19mbXRf Y29tbW9uKHN0cnVjdCB2cHVfaW5zdCAqaW5zdCwgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQo+ID4+ ICAgICAgIGlmICh2YjJfaXNfYnVzeShxKSkKPiA+PiAgICAgICAgICAgICAgIHJldHVybiAtRUJV U1k7Cj4gPj4KPiA+PiAtICAgICBmbXQgPSB2cHVfdHJ5X2ZtdF9jb21tb24oaW5zdCwgZik7Cj4g Pj4gLSAgICAgaWYgKCFmbXQpCj4gPj4gKyAgICAgaWYgKHZwdV90cnlfZm10X2NvbW1vbihpbnN0 LCBmLCAmZm10KSkKPiA+PiAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4+Cj4gPj4g ICAgICAgY3VyX2ZtdCA9IHZwdV9nZXRfZm9ybWF0KGluc3QsIGYtPnR5cGUpOwo+ID4+ICAgICAg IGlmIChWNEwyX1RZUEVfSVNfT1VUUFVUKGYtPnR5cGUpICYmIGluc3QtPnN0YXRlICE9Cj4gPlZQ VV9DT0RFQ19TVEFURV9ERUlOSVQpIHsKPiA+PiAtICAgICAgICAgICAgIGlmIChjdXJfZm10LT5w aXhmbXQgIT0gZm10LT5waXhmbXQpIHsKPiA+PiArICAgICAgICAgICAgIGlmIChjdXJfZm10LT5w aXhmbXQgIT0gZm10LnBpeGZtdCkgewo+ID4+ICAgICAgICAgICAgICAgICAgICAgICB2ZGVjLT5y ZXNldF9jb2RlYyA9IHRydWU7Cj4gPj4gICAgICAgICAgICAgICAgICAgICAgIHZkZWMtPmZpeGVk X2ZtdCA9IGZhbHNlOwo+ID4+ICAgICAgICAgICAgICAgfQo+ID4+ICAgICAgIH0KPiA+PiAtICAg ICBjdXJfZm10LT5waXhmbXQgPSBmbXQtPnBpeGZtdDsKPiA+PiAgICAgICBpZiAoVjRMMl9UWVBF X0lTX09VVFBVVChmLT50eXBlKSB8fCAhdmRlYy0+Zml4ZWRfZm10KSB7Cj4gPj4gLSAgICAgICAg ICAgICBjdXJfZm10LT5udW1fcGxhbmVzID0gZm10LT5udW1fcGxhbmVzOwo+ID4+IC0gICAgICAg ICAgICAgY3VyX2ZtdC0+ZmxhZ3MgPSBmbXQtPmZsYWdzOwo+ID4+IC0gICAgICAgICAgICAgY3Vy X2ZtdC0+d2lkdGggPSBwaXhtcC0+d2lkdGg7Cj4gPj4gLSAgICAgICAgICAgICBjdXJfZm10LT5o ZWlnaHQgPSBwaXhtcC0+aGVpZ2h0Owo+ID4+IC0gICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8 IGZtdC0+bnVtX3BsYW5lczsgaSsrKSB7Cj4gPj4gLSAgICAgICAgICAgICAgICAgICAgIGN1cl9m bXQtPnNpemVpbWFnZVtpXSA9Cj4gPnBpeG1wLT5wbGFuZV9mbXRbaV0uc2l6ZWltYWdlOwo+ID4+ IC0gICAgICAgICAgICAgICAgICAgICBjdXJfZm10LT5ieXRlc3BlcmxpbmVbaV0gPQo+ID5waXht cC0+cGxhbmVfZm10W2ldLmJ5dGVzcGVybGluZTsKPiA+PiAtICAgICAgICAgICAgIH0KPiA+PiAt ICAgICAgICAgICAgIGlmIChwaXhtcC0+ZmllbGQgIT0gVjRMMl9GSUVMRF9BTlkpCj4gPj4gLSAg ICAgICAgICAgICAgICAgICAgIGN1cl9mbXQtPmZpZWxkID0gcGl4bXAtPmZpZWxkOwo+ID4+ICsg ICAgICAgICAgICAgbWVtY3B5KGN1cl9mbXQsICZmbXQsIHNpemVvZigqY3VyX2ZtdCkpOwo+ID4+ ICAgICAgIH0gZWxzZSB7Cj4gPj4gLSAgICAgICAgICAgICBwaXhtcC0+bnVtX3BsYW5lcyA9IGN1 cl9mbXQtPm51bV9wbGFuZXM7Cj4gPj4gKyAgICAgICAgICAgICBpZiAodnB1X2hlbHBlcl9tYXRj aF9mb3JtYXQoaW5zdCwgZi0+dHlwZSwgY3VyX2ZtdC0+cGl4Zm10LAo+ID5waXhtcC0+cGl4ZWxm b3JtYXQpKSB7Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGN1cl9mbXQtPnBpeGZtdCA9IGZt dC5waXhmbXQ7Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGN1cl9mbXQtPm1lbV9wbGFuZXMg PSBmbXQubWVtX3BsYW5lczsKPiA+PiArICAgICAgICAgICAgIH0KPiA+PiArICAgICAgICAgICAg IHBpeG1wLT5waXhlbGZvcm1hdCA9IGN1cl9mbXQtPnBpeGZtdDsKPiA+PiArICAgICAgICAgICAg IHBpeG1wLT5udW1fcGxhbmVzID0gY3VyX2ZtdC0+bWVtX3BsYW5lczsKPiA+PiAgICAgICAgICAg ICAgIHBpeG1wLT53aWR0aCA9IGN1cl9mbXQtPndpZHRoOwo+ID4+ICAgICAgICAgICAgICAgcGl4 bXAtPmhlaWdodCA9IGN1cl9mbXQtPmhlaWdodDsKPiA+PiAgICAgICAgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBwaXhtcC0+bnVtX3BsYW5lczsgaSsrKSB7Cj4gPj4gICAgICAgICAgICAgICAgICAg ICAgIHBpeG1wLT5wbGFuZV9mbXRbaV0uYnl0ZXNwZXJsaW5lID0KPiA+Y3VyX2ZtdC0+Ynl0ZXNw ZXJsaW5lW2ldOwo+ID4+IC0gICAgICAgICAgICAgICAgICAgICBwaXhtcC0+cGxhbmVfZm10W2ld LnNpemVpbWFnZSA9Cj4gPmN1cl9mbXQtPnNpemVpbWFnZVtpXTsKPiA+PiArICAgICAgICAgICAg ICAgICAgICAgcGl4bXAtPnBsYW5lX2ZtdFtpXS5zaXplaW1hZ2UgPQo+ID4+ICsgdnB1X2dldF9m bXRfcGxhbmVfc2l6ZShjdXJfZm10LCBpKTsKPiA+PiAgICAgICAgICAgICAgIH0KPiA+PiAgICAg ICAgICAgICAgIHBpeG1wLT5maWVsZCA9IGN1cl9mbXQtPmZpZWxkOwo+ID4+ICAgICAgIH0KPiA+ PiBAQCAtNjc4LDkgKzY5MywxMSBAQCBzdGF0aWMgc3RydWN0IHZwdV92YjJfYnVmZmVyCj4gPj4g KnZkZWNfZmluZF9idWZmZXIoc3RydWN0IHZwdV9pbnN0ICppbnN0LCB1MzIgbHVtYSkgIHN0YXRp YyB2b2lkCj4gPj4gdmRlY19idWZfZG9uZShzdHJ1Y3QgdnB1X2luc3QgKmluc3QsIHN0cnVjdCB2 cHVfZnJhbWVfaW5mbyAqZnJhbWUpICB7Cj4gPj4gICAgICAgc3RydWN0IHZkZWNfdCAqdmRlYyA9 IGluc3QtPnByaXY7Cj4gPj4gKyAgICAgc3RydWN0IHZwdV9mb3JtYXQgKmN1cl9mbXQ7Cj4gPj4g ICAgICAgc3RydWN0IHZwdV92YjJfYnVmZmVyICp2cHVfYnVmOwo+ID4+ICAgICAgIHN0cnVjdCB2 YjJfdjRsMl9idWZmZXIgKnZidWY7Cj4gPj4gICAgICAgdTMyIHNlcXVlbmNlOwo+ID4+ICsgICAg IGludCBpOwo+ID4+Cj4gPj4gICAgICAgaWYgKCFmcmFtZSkKPiA+PiAgICAgICAgICAgICAgIHJl dHVybjsKPiA+PiBAQCAtNjk5LDYgKzcxNiw3IEBAIHN0YXRpYyB2b2lkIHZkZWNfYnVmX2RvbmUo c3RydWN0IHZwdV9pbnN0ICppbnN0LAo+ID5zdHJ1Y3QgdnB1X2ZyYW1lX2luZm8gKmZyYW1lKQo+ ID4+ICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4+ICAgICAgIH0KPiA+Pgo+ID4+ICsgICAgIGN1 cl9mbXQgPSB2cHVfZ2V0X2Zvcm1hdChpbnN0LCBpbnN0LT5jYXBfZm9ybWF0LnR5cGUpOwo+ID4+ ICAgICAgIHZidWYgPSAmdnB1X2J1Zi0+bTJtX2J1Zi52YjsKPiA+PiAgICAgICBpZiAodmJ1Zi0+ dmIyX2J1Zi5pbmRleCAhPSBmcmFtZS0+aWQpCj4gPj4gICAgICAgICAgICAgICBkZXZfZXJyKGlu c3QtPmRldiwgIlslZF0gYnVmZmVyIGlkKCVkLCAlZCkgZGlzbWF0Y2hcbiIsCj4gPj4gQEAgLTcw Nyw5ICs3MjUsOSBAQCBzdGF0aWMgdm9pZCB2ZGVjX2J1Zl9kb25lKHN0cnVjdCB2cHVfaW5zdCAq aW5zdCwKPiA+c3RydWN0IHZwdV9mcmFtZV9pbmZvICpmcmFtZSkKPiA+PiAgICAgICBpZiAodnB1 X2dldF9idWZmZXJfc3RhdGUodmJ1ZikgIT0gVlBVX0JVRl9TVEFURV9ERUNPREVEKQo+ID4+ICAg ICAgICAgICAgICAgZGV2X2VycihpbnN0LT5kZXYsICJbJWRdIGJ1ZmZlciglZCkgcmVhZHkgd2l0 aG91dAo+ID5kZWNvZGVkXG4iLCBpbnN0LT5pZCwgZnJhbWUtPmlkKTsKPiA+PiAgICAgICB2cHVf c2V0X2J1ZmZlcl9zdGF0ZSh2YnVmLCBWUFVfQlVGX1NUQVRFX1JFQURZKTsKPiA+PiAtICAgICB2 YjJfc2V0X3BsYW5lX3BheWxvYWQoJnZidWYtPnZiMl9idWYsIDAsCj4gPmluc3QtPmNhcF9mb3Jt YXQuc2l6ZWltYWdlWzBdKTsKPiA+PiAtICAgICB2YjJfc2V0X3BsYW5lX3BheWxvYWQoJnZidWYt PnZiMl9idWYsIDEsCj4gPmluc3QtPmNhcF9mb3JtYXQuc2l6ZWltYWdlWzFdKTsKPiA+PiAtICAg ICB2YnVmLT5maWVsZCA9IGluc3QtPmNhcF9mb3JtYXQuZmllbGQ7Cj4gPj4gKyAgICAgZm9yIChp ID0gMDsgaSA8IHZidWYtPnZiMl9idWYubnVtX3BsYW5lczsgaSsrKQo+ID4+ICsgICAgICAgICAg ICAgdmIyX3NldF9wbGFuZV9wYXlsb2FkKCZ2YnVmLT52YjJfYnVmLCBpLAo+ID52cHVfZ2V0X2Zt dF9wbGFuZV9zaXplKGN1cl9mbXQsIGkpKTsKPiA+PiArICAgICB2YnVmLT5maWVsZCA9IGN1cl9m bXQtPmZpZWxkOwo+ID4+ICAgICAgIHZidWYtPnNlcXVlbmNlID0gc2VxdWVuY2U7Cj4gPj4gICAg ICAgZGV2X2RiZyhpbnN0LT5kZXYsICJbJWRdW09VVFBVVCBUU10lMzJsbGRcbiIsIGluc3QtPmlk LAo+ID4+IHZidWYtPnZiMl9idWYudGltZXN0YW1wKTsKPiA+Pgo+ID4+IEBAIC03NDcsMTUgKzc2 NSwxNyBAQCBzdGF0aWMgdm9pZCB2ZGVjX3N0b3BfZG9uZShzdHJ1Y3QgdnB1X2luc3QKPiA+PiAq aW5zdCkgIHN0YXRpYyBib29sIHZkZWNfY2hlY2tfc291cmNlX2NoYW5nZShzdHJ1Y3QgdnB1X2lu c3QgKmluc3QpICB7Cj4gPj4gICAgICAgc3RydWN0IHZkZWNfdCAqdmRlYyA9IGluc3QtPnByaXY7 Cj4gPj4gLSAgICAgY29uc3Qgc3RydWN0IHZwdV9mb3JtYXQgKmZtdDsKPiA+PiAtICAgICBpbnQg aTsKPiA+PiArICAgICBjb25zdCBzdHJ1Y3QgdnB1X2Zvcm1hdCAqc2libGluZzsKPiA+Pgo+ID4+ ICAgICAgIGlmICghaW5zdC0+ZmgubTJtX2N0eCkKPiA+PiAgICAgICAgICAgICAgIHJldHVybiBm YWxzZTsKPiA+Pgo+ID4+ICsgICAgIHNpYmxpbmcgPSB2cHVfaGVscGVyX2ZpbmRfc2libGluZyhp bnN0LCBpbnN0LT5jYXBfZm9ybWF0LnR5cGUsCj4gPmluc3QtPmNhcF9mb3JtYXQucGl4Zm10KTsK PiA+PiArICAgICBpZiAoc2libGluZyAmJiB2ZGVjLT5jb2RlY19pbmZvLnBpeGZtdCA9PSBzaWJs aW5nLT5waXhmbXQpCj4gPj4gKyAgICAgICAgICAgICB2ZGVjLT5jb2RlY19pbmZvLnBpeGZtdCA9 IGluc3QtPmNhcF9mb3JtYXQucGl4Zm10Owo+ID4+ICsKPiA+PiAgICAgICBpZiAoIXZiMl9pc19z dHJlYW1pbmcodjRsMl9tMm1fZ2V0X2RzdF92cShpbnN0LT5maC5tMm1fY3R4KSkpCj4gPj4gICAg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPiA+PiAtICAgICBmbXQgPSB2cHVfaGVscGVyX2ZpbmRf Zm9ybWF0KGluc3QsIGluc3QtPmNhcF9mb3JtYXQudHlwZSwKPiA+dmRlYy0+Y29kZWNfaW5mby5w aXhmbXQpOwo+ID4+ICAgICAgIGlmIChpbnN0LT5jYXBfZm9ybWF0LnBpeGZtdCAhPSB2ZGVjLT5j b2RlY19pbmZvLnBpeGZtdCkKPiA+PiAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+ID4+ICAg ICAgIGlmIChpbnN0LT5jYXBfZm9ybWF0LndpZHRoICE9IHZkZWMtPmNvZGVjX2luZm8uZGVjb2Rl ZF93aWR0aCkgQEAKPiA+PiAtNzcyLDE0ICs3OTIsNiBAQCBzdGF0aWMgYm9vbCB2ZGVjX2NoZWNr X3NvdXJjZV9jaGFuZ2Uoc3RydWN0IHZwdV9pbnN0Cj4gPippbnN0KQo+ID4+ICAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7Cj4gPj4gICAgICAgaWYgKGluc3QtPmNyb3AuaGVpZ2h0ICE9IHZkZWMt PmNvZGVjX2luZm8uaGVpZ2h0KQo+ID4+ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPj4g LSAgICAgaWYgKGZtdCAmJiBpbnN0LT5jYXBfZm9ybWF0Lm51bV9wbGFuZXMgIT0gZm10LT5udW1f cGxhbmVzKQo+ID4+IC0gICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPj4gLSAgICAgZm9yIChp ID0gMDsgaSA8IGluc3QtPmNhcF9mb3JtYXQubnVtX3BsYW5lczsgaSsrKSB7Cj4gPj4gLSAgICAg ICAgICAgICBpZiAoaW5zdC0+Y2FwX2Zvcm1hdC5ieXRlc3BlcmxpbmVbaV0gIT0KPiA+dmRlYy0+ Y29kZWNfaW5mby5ieXRlc3BlcmxpbmVbaV0pCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgIHJl dHVybiB0cnVlOwo+ID4+IC0gICAgICAgICAgICAgaWYgKGluc3QtPmNhcF9mb3JtYXQuc2l6ZWlt YWdlW2ldICE9Cj4gPnZkZWMtPmNvZGVjX2luZm8uc2l6ZWltYWdlW2ldKQo+ID4+IC0gICAgICAg ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPiA+PiAtICAgICB9Cj4gPj4KPiA+PiAgICAgICBy ZXR1cm4gZmFsc2U7Cj4gPj4gIH0KPiA+PiBAQCAtNzg3LDI3ICs3OTksMjEgQEAgc3RhdGljIGJv b2wgdmRlY19jaGVja19zb3VyY2VfY2hhbmdlKHN0cnVjdAo+ID4+IHZwdV9pbnN0ICppbnN0KSAg c3RhdGljIHZvaWQgdmRlY19pbml0X2ZtdChzdHJ1Y3QgdnB1X2luc3QgKmluc3QpICB7Cj4gPj4g ICAgICAgc3RydWN0IHZkZWNfdCAqdmRlYyA9IGluc3QtPnByaXY7Cj4gPj4gLSAgICAgY29uc3Qg c3RydWN0IHZwdV9mb3JtYXQgKmZtdDsKPiA+PiAtICAgICBpbnQgaTsKPiA+PiArICAgICBzdHJ1 Y3QgdjRsMl9mb3JtYXQgZjsKPiA+Pgo+ID4+IC0gICAgIGZtdCA9IHZwdV9oZWxwZXJfZmluZF9m b3JtYXQoaW5zdCwgaW5zdC0+Y2FwX2Zvcm1hdC50eXBlLAo+ID52ZGVjLT5jb2RlY19pbmZvLnBp eGZtdCk7Cj4gPj4gLSAgICAgaW5zdC0+b3V0X2Zvcm1hdC53aWR0aCA9IHZkZWMtPmNvZGVjX2lu Zm8ud2lkdGg7Cj4gPj4gLSAgICAgaW5zdC0+b3V0X2Zvcm1hdC5oZWlnaHQgPSB2ZGVjLT5jb2Rl Y19pbmZvLmhlaWdodDsKPiA+PiAtICAgICBpbnN0LT5jYXBfZm9ybWF0LndpZHRoID0gdmRlYy0+ Y29kZWNfaW5mby5kZWNvZGVkX3dpZHRoOwo+ID4+IC0gICAgIGluc3QtPmNhcF9mb3JtYXQuaGVp Z2h0ID0gdmRlYy0+Y29kZWNfaW5mby5kZWNvZGVkX2hlaWdodDsKPiA+PiAtICAgICBpbnN0LT5j YXBfZm9ybWF0LnBpeGZtdCA9IHZkZWMtPmNvZGVjX2luZm8ucGl4Zm10Owo+ID4+IC0gICAgIGlm IChmbXQpIHsKPiA+PiAtICAgICAgICAgICAgIGluc3QtPmNhcF9mb3JtYXQubnVtX3BsYW5lcyA9 IGZtdC0+bnVtX3BsYW5lczsKPiA+PiAtICAgICAgICAgICAgIGluc3QtPmNhcF9mb3JtYXQuZmxh Z3MgPSBmbXQtPmZsYWdzOwo+ID4+IC0gICAgIH0KPiA+PiAtICAgICBmb3IgKGkgPSAwOyBpIDwg aW5zdC0+Y2FwX2Zvcm1hdC5udW1fcGxhbmVzOyBpKyspIHsKPiA+PiAtICAgICAgICAgICAgIGlu c3QtPmNhcF9mb3JtYXQuYnl0ZXNwZXJsaW5lW2ldID0KPiA+dmRlYy0+Y29kZWNfaW5mby5ieXRl c3BlcmxpbmVbaV07Cj4gPj4gLSAgICAgICAgICAgICBpbnN0LT5jYXBfZm9ybWF0LnNpemVpbWFn ZVtpXSA9IHZkZWMtPmNvZGVjX2luZm8uc2l6ZWltYWdlW2ldOwo+ID4+IC0gICAgIH0KPiA+PiAr ICAgICBtZW1zZXQoJmYsIDAsIHNpemVvZihmKSk7Cj4gPj4gKyAgICAgZi50eXBlID0gaW5zdC0+ Y2FwX2Zvcm1hdC50eXBlOwo+ID4+ICsgICAgIGYuZm10LnBpeF9tcC5waXhlbGZvcm1hdCA9IHZk ZWMtPmNvZGVjX2luZm8ucGl4Zm10Owo+ID4+ICsgICAgIGYuZm10LnBpeF9tcC53aWR0aCA9IHZk ZWMtPmNvZGVjX2luZm8uZGVjb2RlZF93aWR0aDsKPiA+PiArICAgICBmLmZtdC5waXhfbXAuaGVp Z2h0ID0gdmRlYy0+Y29kZWNfaW5mby5kZWNvZGVkX2hlaWdodDsKPiA+PiAgICAgICBpZiAodmRl Yy0+Y29kZWNfaW5mby5wcm9ncmVzc2l2ZSkKPiA+PiAtICAgICAgICAgICAgIGluc3QtPmNhcF9m b3JtYXQuZmllbGQgPSBWNEwyX0ZJRUxEX05PTkU7Cj4gPj4gKyAgICAgICAgICAgICBmLmZtdC5w aXhfbXAuZmllbGQgPSBWNEwyX0ZJRUxEX05PTkU7Cj4gPj4gICAgICAgZWxzZQo+ID4+IC0gICAg ICAgICAgICAgaW5zdC0+Y2FwX2Zvcm1hdC5maWVsZCA9IFY0TDJfRklFTERfU0VRX1RCOwo+ID4+ ICsgICAgICAgICAgICAgZi5mbXQucGl4X21wLmZpZWxkID0gVjRMMl9GSUVMRF9TRVFfVEI7Cj4g Pj4gKyAgICAgdnB1X3RyeV9mbXRfY29tbW9uKGluc3QsICZmLCAmaW5zdC0+Y2FwX2Zvcm1hdCk7 Cj4gPj4gKwo+ID4+ICsgICAgIGluc3QtPm91dF9mb3JtYXQud2lkdGggPSB2ZGVjLT5jb2RlY19p bmZvLndpZHRoOwo+ID4+ICsgICAgIGluc3QtPm91dF9mb3JtYXQuaGVpZ2h0ID0gdmRlYy0+Y29k ZWNfaW5mby5oZWlnaHQ7Cj4gPj4gIH0KPiA+Pgo+ID4+ICBzdGF0aWMgdm9pZCB2ZGVjX2luaXRf Y3JvcChzdHJ1Y3QgdnB1X2luc3QgKmluc3QpIEBAIC05NjYsNyArOTcyLDEwCj4gPj4gQEAgc3Rh dGljIGludCB2ZGVjX3Jlc3BvbnNlX2ZyYW1lKHN0cnVjdCB2cHVfaW5zdCAqaW5zdCwgc3RydWN0 Cj4gPnZiMl92NGwyX2J1ZmZlciAqdmIKPiA+PiAgICAgICBpbmZvLnRhZyA9IHZkZWMtPnNlcV90 YWc7Cj4gPj4gICAgICAgaW5mby5sdW1hX2FkZHIgPSB2cHVfZ2V0X3ZiX3BoeV9hZGRyKCZ2YnVm LT52YjJfYnVmLCAwKTsKPiA+PiAgICAgICBpbmZvLmx1bWFfc2l6ZSA9IGluc3QtPmNhcF9mb3Jt YXQuc2l6ZWltYWdlWzBdOwo+ID4+IC0gICAgIGluZm8uY2hyb21hX2FkZHIgPSB2cHVfZ2V0X3Zi X3BoeV9hZGRyKCZ2YnVmLT52YjJfYnVmLCAxKTsKPiA+PiArICAgICBpZiAodmJ1Zi0+dmIyX2J1 Zi5udW1fcGxhbmVzID4gMSkKPiA+PiArICAgICAgICAgICAgIGluZm8uY2hyb21hX2FkZHIgPSB2 cHVfZ2V0X3ZiX3BoeV9hZGRyKCZ2YnVmLT52YjJfYnVmLAo+ID4xKTsKPiA+PiArICAgICBlbHNl Cj4gPj4gKyAgICAgICAgICAgICBpbmZvLmNocm9tYV9hZGRyID0gaW5mby5sdW1hX2FkZHIgKyBp bmZvLmx1bWFfc2l6ZTsKPiA+PiAgICAgICBpbmZvLmNocm9tYXVfc2l6ZSA9IGluc3QtPmNhcF9m b3JtYXQuc2l6ZWltYWdlWzFdOwo+ID4+ICAgICAgIGluZm8uYnl0ZXNwZXJsaW5lID0gaW5zdC0+ Y2FwX2Zvcm1hdC5ieXRlc3BlcmxpbmVbMF07Cj4gPj4gICAgICAgcmV0ID0gdnB1X3Nlc3Npb25f YWxsb2NfZnMoaW5zdCwgJmluZm8pOyBAQCAtOTc1LDcgKzk4NCw3IEBACj4gPj4gc3RhdGljIGlu dCB2ZGVjX3Jlc3BvbnNlX2ZyYW1lKHN0cnVjdCB2cHVfaW5zdCAqaW5zdCwgc3RydWN0Cj4gPj4g dmIyX3Y0bDJfYnVmZmVyICp2Ygo+ID4+Cj4gPj4gICAgICAgdnB1X2J1Zi0+dGFnID0gaW5mby50 YWc7Cj4gPj4gICAgICAgdnB1X2J1Zi0+bHVtYSA9IGluZm8ubHVtYV9hZGRyOwo+ID4+IC0gICAg IHZwdV9idWYtPmNocm9tYV91ID0gaW5mby5jaHJvbWF1X3NpemU7Cj4gPj4gKyAgICAgdnB1X2J1 Zi0+Y2hyb21hX3UgPSBpbmZvLmNocm9tYV9hZGRyOwo+ID4+ICAgICAgIHZwdV9idWYtPmNocm9t YV92ID0gMDsKPiA+PiAgICAgICB2cHVfc2V0X2J1ZmZlcl9zdGF0ZSh2YnVmLCBWUFVfQlVGX1NU QVRFX0lOVVNFKTsKPiA+PiAgICAgICB2ZGVjLT5zbG90c1tpbmZvLmlkXSA9IHZwdV9idWY7Cj4g Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92ZW5jLmMKPiA+ PiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92ZW5jLmMKPiA+PiBpbmRleCAzNzIx MmYwODdmZGQuLjA2MGExZWU3OGIxNyAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL2FtcGhpb24vdmVuYy5jCj4gPj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9h bXBoaW9uL3ZlbmMuYwo+ID4+IEBAIC02OSwxMyArNjksMTYgQEAgc3RydWN0IHZlbmNfZnJhbWVf dCB7ICBzdGF0aWMgY29uc3Qgc3RydWN0Cj4gPj4gdnB1X2Zvcm1hdCB2ZW5jX2Zvcm1hdHNbXSA9 IHsKPiA+PiAgICAgICB7Cj4gPj4gICAgICAgICAgICAgICAucGl4Zm10ID0gVjRMMl9QSVhfRk1U X05WMTJNLAo+ID4+IC0gICAgICAgICAgICAgLm51bV9wbGFuZXMgPSAyLAo+ID4+ICsgICAgICAg ICAgICAgLm1lbV9wbGFuZXMgPSAyLAo+ID4+ICsgICAgICAgICAgICAgLmNvbXBfcGxhbmVzID0g MiwKPiA+PiAgICAgICAgICAgICAgIC50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVRf TVBMQU5FLAo+ID4+ICAgICAgIH0sCj4gPj4gICAgICAgewo+ID4+ICAgICAgICAgICAgICAgLnBp eGZtdCA9IFY0TDJfUElYX0ZNVF9IMjY0LAo+ID4+IC0gICAgICAgICAgICAgLm51bV9wbGFuZXMg PSAxLAo+ID4+ICsgICAgICAgICAgICAgLm1lbV9wbGFuZXMgPSAxLAo+ID4+ICsgICAgICAgICAg ICAgLmNvbXBfcGxhbmVzID0gMSwKPiA+PiAgICAgICAgICAgICAgIC50eXBlID0gVjRMMl9CVUZf VFlQRV9WSURFT19DQVBUVVJFX01QTEFORSwKPiA+PiArICAgICAgICAgICAgIC5mbGFncyA9IFY0 TDJfRk1UX0ZMQUdfQ09NUFJFU1NFRAo+ID4+ICAgICAgIH0sCj4gPj4gICAgICAgezAsIDAsIDAs IDB9LAo+ID4+ICB9Owo+ID4+IEBAIC0xNzMsMTQgKzE3NiwxNCBAQCBzdGF0aWMgaW50IHZlbmNf Z19mbXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLAo+ID5zdHJ1Y3QgdjRsMl9mb3JtYXQg KmYpCj4gPj4gICAgICAgY3VyX2ZtdCA9IHZwdV9nZXRfZm9ybWF0KGluc3QsIGYtPnR5cGUpOwo+ ID4+Cj4gPj4gICAgICAgcGl4bXAtPnBpeGVsZm9ybWF0ID0gY3VyX2ZtdC0+cGl4Zm10Owo+ID4+ IC0gICAgIHBpeG1wLT5udW1fcGxhbmVzID0gY3VyX2ZtdC0+bnVtX3BsYW5lczsKPiA+PiArICAg ICBwaXhtcC0+bnVtX3BsYW5lcyA9IGN1cl9mbXQtPm1lbV9wbGFuZXM7Cj4gPj4gICAgICAgcGl4 bXAtPndpZHRoID0gY3VyX2ZtdC0+d2lkdGg7Cj4gPj4gICAgICAgcGl4bXAtPmhlaWdodCA9IGN1 cl9mbXQtPmhlaWdodDsKPiA+PiAgICAgICBwaXhtcC0+ZmllbGQgPSBjdXJfZm10LT5maWVsZDsK PiA+PiAgICAgICBwaXhtcC0+ZmxhZ3MgPSBjdXJfZm10LT5mbGFnczsKPiA+PiAgICAgICBmb3Ig KGkgPSAwOyBpIDwgcGl4bXAtPm51bV9wbGFuZXM7IGkrKykgewo+ID4+ICAgICAgICAgICAgICAg cGl4bXAtPnBsYW5lX2ZtdFtpXS5ieXRlc3BlcmxpbmUgPSBjdXJfZm10LT5ieXRlc3BlcmxpbmVb aV07Cj4gPj4gLSAgICAgICAgICAgICBwaXhtcC0+cGxhbmVfZm10W2ldLnNpemVpbWFnZSA9IGN1 cl9mbXQtPnNpemVpbWFnZVtpXTsKPiA+PiArICAgICAgICAgICAgIHBpeG1wLT5wbGFuZV9mbXRb aV0uc2l6ZWltYWdlID0KPiA+PiArIHZwdV9nZXRfZm10X3BsYW5lX3NpemUoY3VyX2ZtdCwgaSk7 Cj4gPj4gICAgICAgfQo+ID4+Cj4gPj4gICAgICAgZi0+Zm10LnBpeF9tcC5jb2xvcnNwYWNlID0g dmVuYy0+cGFyYW1zLmNvbG9yLnByaW1hcmllczsgQEAKPiA+PiAtMTk0LDggKzE5Nyw5IEBAIHN0 YXRpYyBpbnQgdmVuY19nX2ZtdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsCj4gPj4gc3Ry dWN0IHY0bDJfZm9ybWF0ICpmKSAgc3RhdGljIGludCB2ZW5jX3RyeV9mbXQoc3RydWN0IGZpbGUg KmZpbGUsCj4gPj4gdm9pZCAqZmgsIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZikgIHsKPiA+PiAgICAg ICBzdHJ1Y3QgdnB1X2luc3QgKmluc3QgPSB0b19pbnN0KGZpbGUpOwo+ID4+ICsgICAgIHN0cnVj dCB2cHVfZm9ybWF0IGZtdDsKPiA+Pgo+ID4+IC0gICAgIHZwdV90cnlfZm10X2NvbW1vbihpbnN0 LCBmKTsKPiA+PiArICAgICB2cHVfdHJ5X2ZtdF9jb21tb24oaW5zdCwgZiwgJmZtdCk7Cj4gPj4K PiA+PiAgICAgICByZXR1cm4gMDsKPiA+PiAgfQo+ID4+IEBAIC0yMDMsMTIgKzIwNywxMSBAQCBz dGF0aWMgaW50IHZlbmNfdHJ5X2ZtdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZAo+ID4+ICpmaCwg c3RydWN0IHY0bDJfZm9ybWF0ICpmKSAgc3RhdGljIGludCB2ZW5jX3NfZm10KHN0cnVjdCBmaWxl ICpmaWxlLAo+ID4+IHZvaWQgKmZoLCBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpICB7Cj4gPj4gICAg ICAgc3RydWN0IHZwdV9pbnN0ICppbnN0ID0gdG9faW5zdChmaWxlKTsKPiA+PiAtICAgICBjb25z dCBzdHJ1Y3QgdnB1X2Zvcm1hdCAqZm10Owo+ID4+ICsgICAgIHN0cnVjdCB2cHVfZm9ybWF0IGZt dDsKPiA+PiAgICAgICBzdHJ1Y3QgdnB1X2Zvcm1hdCAqY3VyX2ZtdDsKPiA+PiAgICAgICBzdHJ1 Y3QgdmIyX3F1ZXVlICpxOwo+ID4+ICAgICAgIHN0cnVjdCB2ZW5jX3QgKnZlbmMgPSBpbnN0LT5w cml2Owo+ID4+ICAgICAgIHN0cnVjdCB2NGwyX3BpeF9mb3JtYXRfbXBsYW5lICpwaXhfbXAgPSAm Zi0+Zm10LnBpeF9tcDsKPiA+PiAtICAgICBpbnQgaTsKPiA+Pgo+ID4+ICAgICAgIHEgPSB2NGwy X20ybV9nZXRfdnEoaW5zdC0+ZmgubTJtX2N0eCwgZi0+dHlwZSk7Cj4gPj4gICAgICAgaWYgKCFx KQo+ID4+IEBAIC0yMTYsMjQgKzIxOSwxMiBAQCBzdGF0aWMgaW50IHZlbmNfc19mbXQoc3RydWN0 IGZpbGUgKmZpbGUsIHZvaWQgKmZoLAo+ID5zdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCj4gPj4gICAg ICAgaWYgKHZiMl9pc19idXN5KHEpKQo+ID4+ICAgICAgICAgICAgICAgcmV0dXJuIC1FQlVTWTsK PiA+Pgo+ID4+IC0gICAgIGZtdCA9IHZwdV90cnlfZm10X2NvbW1vbihpbnN0LCBmKTsKPiA+PiAt ICAgICBpZiAoIWZtdCkKPiA+PiArICAgICBpZiAodnB1X3RyeV9mbXRfY29tbW9uKGluc3QsIGYs ICZmbXQpKQo+ID4+ICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPj4KPiA+PiAgICAg ICBjdXJfZm10ID0gdnB1X2dldF9mb3JtYXQoaW5zdCwgZi0+dHlwZSk7Cj4gPj4KPiA+PiAtICAg ICBjdXJfZm10LT5waXhmbXQgPSBmbXQtPnBpeGZtdDsKPiA+PiAtICAgICBjdXJfZm10LT5udW1f cGxhbmVzID0gZm10LT5udW1fcGxhbmVzOwo+ID4+IC0gICAgIGN1cl9mbXQtPmZsYWdzID0gZm10 LT5mbGFnczsKPiA+PiAtICAgICBjdXJfZm10LT53aWR0aCA9IHBpeF9tcC0+d2lkdGg7Cj4gPj4g LSAgICAgY3VyX2ZtdC0+aGVpZ2h0ID0gcGl4X21wLT5oZWlnaHQ7Cj4gPj4gLSAgICAgZm9yIChp ID0gMDsgaSA8IGZtdC0+bnVtX3BsYW5lczsgaSsrKSB7Cj4gPj4gLSAgICAgICAgICAgICBjdXJf Zm10LT5zaXplaW1hZ2VbaV0gPSBwaXhfbXAtPnBsYW5lX2ZtdFtpXS5zaXplaW1hZ2U7Cj4gPj4g LSAgICAgICAgICAgICBjdXJfZm10LT5ieXRlc3BlcmxpbmVbaV0gPSBwaXhfbXAtPnBsYW5lX2Zt dFtpXS5ieXRlc3BlcmxpbmU7Cj4gPj4gLSAgICAgfQo+ID4+IC0KPiA+PiAtICAgICBpZiAocGl4 X21wLT5maWVsZCAhPSBWNEwyX0ZJRUxEX0FOWSkKPiA+PiAtICAgICAgICAgICAgIGN1cl9mbXQt PmZpZWxkID0gcGl4X21wLT5maWVsZDsKPiA+PiArICAgICBtZW1jcHkoY3VyX2ZtdCwgJmZtdCwg c2l6ZW9mKCpjdXJfZm10KSk7Cj4gPj4KPiA+PiAgICAgICBpZiAoVjRMMl9UWVBFX0lTX09VVFBV VChmLT50eXBlKSkgewo+ID4+ICAgICAgICAgICAgICAgdmVuYy0+cGFyYW1zLmlucHV0X2Zvcm1h dCA9IGN1cl9mbXQtPnBpeGZtdDsgZGlmZiAtLWdpdAo+ID4+IGEvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9hbXBoaW9uL3ZwdS5oCj4gPj4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24v dnB1LmgKPiA+PiBpbmRleCBmOTE0ZGU2ZWQ4MWUuLjk5ODU5MWZhNWI4NSAxMDA2NDQKPiA+PiAt LS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1LmgKPiA+PiArKysgYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1LmgKPiA+PiBAQCAtODQsNyArODQsOCBAQCBz dHJ1Y3QgdnB1X2RldiB7Cj4gPj4KPiA+PiAgc3RydWN0IHZwdV9mb3JtYXQgewo+ID4+ICAgICAg IHUzMiBwaXhmbXQ7Cj4gPj4gLSAgICAgdW5zaWduZWQgaW50IG51bV9wbGFuZXM7Cj4gPj4gKyAg ICAgdTMyIG1lbV9wbGFuZXM7Cj4gPj4gKyAgICAgdTMyIGNvbXBfcGxhbmVzOwo+ID4+ICAgICAg IHUzMiB0eXBlOwo+ID4+ICAgICAgIHUzMiBmbGFnczsKPiA+PiAgICAgICB1MzIgd2lkdGg7Cj4g Pj4gQEAgLTkyLDYgKzkzLDcgQEAgc3RydWN0IHZwdV9mb3JtYXQgewo+ID4+ICAgICAgIHUzMiBz aXplaW1hZ2VbVklERU9fTUFYX1BMQU5FU107Cj4gPj4gICAgICAgdTMyIGJ5dGVzcGVybGluZVtW SURFT19NQVhfUExBTkVTXTsKPiA+PiAgICAgICB1MzIgZmllbGQ7Cj4gPj4gKyAgICAgdTMyIHNp Ymxpbmc7Cj4gPj4gIH07Cj4gPj4KPiA+PiAgc3RydWN0IHZwdV9jb3JlX3Jlc291cmNlcyB7Cj4g Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfZGJnLmMK PiA+PiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfZGJnLmMKPiA+PiBpbmRl eCBmNzJjOGE1MDZiMjIuLmM0MWM5ODk2OTEyYyAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1X2RiZy5jCj4gPj4gKysrIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9hbXBoaW9uL3ZwdV9kYmcuYwo+ID4+IEBAIC04OSw5ICs4OSw5IEBAIHN0YXRpYyBp bnQgdnB1X2RiZ19pbnN0YW5jZShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQKPiA+KmRhdGEpCj4g Pj4gICAgICAgICAgICAgICAgICAgICAgIHZxLT5sYXN0X2J1ZmZlcl9kZXF1ZXVlZCk7Cj4gPj4g ICAgICAgaWYgKHNlcV93cml0ZShzLCBzdHIsIG51bSkpCj4gPj4gICAgICAgICAgICAgICByZXR1 cm4gMDsKPiA+PiAtICAgICBmb3IgKGkgPSAwOyBpIDwgaW5zdC0+b3V0X2Zvcm1hdC5udW1fcGxh bmVzOyBpKyspIHsKPiA+PiArICAgICBmb3IgKGkgPSAwOyBpIDwgaW5zdC0+b3V0X2Zvcm1hdC5t ZW1fcGxhbmVzOyBpKyspIHsKPiA+PiAgICAgICAgICAgICAgIG51bSA9IHNjbnByaW50ZihzdHIs IHNpemVvZihzdHIpLCAiICVkKCVkKSIsCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW5zdC0+b3V0X2Zvcm1hdC5zaXplaW1hZ2VbaV0sCj4gPj4gKwo+ID4+ICsgdnB1X2dldF9m bXRfcGxhbmVfc2l6ZSgmaW5zdC0+b3V0X2Zvcm1hdCwgaSksCj4gPj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5zdC0+b3V0X2Zvcm1hdC5ieXRlc3BlcmxpbmVbaV0pOwo+ID4+ICAg ICAgICAgICAgICAgaWYgKHNlcV93cml0ZShzLCBzdHIsIG51bSkpCj4gPj4gICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAwOwo+ID4+IEBAIC0xMTMsOSArMTEzLDkgQEAgc3RhdGljIGludCB2 cHVfZGJnX2luc3RhbmNlKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZAo+ID4qZGF0YSkKPiA+PiAg ICAgICAgICAgICAgICAgICAgICAgdnEtPmxhc3RfYnVmZmVyX2RlcXVldWVkKTsKPiA+PiAgICAg ICBpZiAoc2VxX3dyaXRlKHMsIHN0ciwgbnVtKSkKPiA+PiAgICAgICAgICAgICAgIHJldHVybiAw Owo+ID4+IC0gICAgIGZvciAoaSA9IDA7IGkgPCBpbnN0LT5jYXBfZm9ybWF0Lm51bV9wbGFuZXM7 IGkrKykgewo+ID4+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBpbnN0LT5jYXBfZm9ybWF0Lm1lbV9w bGFuZXM7IGkrKykgewo+ID4+ICAgICAgICAgICAgICAgbnVtID0gc2NucHJpbnRmKHN0ciwgc2l6 ZW9mKHN0ciksICIgJWQoJWQpIiwKPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnN0LT5jYXBfZm9ybWF0LnNpemVpbWFnZVtpXSwKPiA+PiArCj4gPj4gKyB2cHVfZ2V0X2ZtdF9w bGFuZV9zaXplKCZpbnN0LT5jYXBfZm9ybWF0LCBpKSwKPiA+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnN0LT5jYXBfZm9ybWF0LmJ5dGVzcGVybGluZVtpXSk7Cj4gPj4gICAgICAg ICAgICAgICBpZiAoc2VxX3dyaXRlKHMsIHN0ciwgbnVtKSkKPiA+PiAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIDA7Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v YW1waGlvbi92cHVfaGVscGVycy5jCj4gPj4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhp b24vdnB1X2hlbHBlcnMuYwo+ID4+IGluZGV4IGU5YWViMzQ1M2RmYy4uZGI4ZjQ3MWI5MTg3IDEw MDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfaGVscGVy cy5jCj4gPj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3ZwdV9oZWxwZXJz LmMKPiA+PiBAQCAtNTksNiArNTksMzkgQEAgY29uc3Qgc3RydWN0IHZwdV9mb3JtYXQKPiA+KnZw dV9oZWxwZXJfZmluZF9mb3JtYXQoc3RydWN0IHZwdV9pbnN0ICppbnN0LCB1MzIgdHlwZSwKPiA+ PiAgICAgICByZXR1cm4gTlVMTDsKPiA+PiAgfQo+ID4+Cj4gPj4gK2NvbnN0IHN0cnVjdCB2cHVf Zm9ybWF0ICp2cHVfaGVscGVyX2ZpbmRfc2libGluZyhzdHJ1Y3QgdnB1X2luc3QKPiA+PiArKmlu c3QsIHUzMiB0eXBlLCB1MzIgcGl4ZWxmbXQpIHsKPiA+PiArICAgICBjb25zdCBzdHJ1Y3QgdnB1 X2Zvcm1hdCAqZm10Owo+ID4+ICsgICAgIGNvbnN0IHN0cnVjdCB2cHVfZm9ybWF0ICpzaWJsaW5n Owo+ID4+ICsKPiA+PiArICAgICBmbXQgPSB2cHVfaGVscGVyX2ZpbmRfZm9ybWF0KGluc3QsIHR5 cGUsIHBpeGVsZm10KTsKPiA+PiArICAgICBpZiAoIWZtdCkKPiA+PiArICAgICAgICAgICAgIHJl dHVybiBOVUxMOwo+ID4+ICsgICAgIGlmICghZm10LT5zaWJsaW5nKQo+ID4+ICsgICAgICAgICAg ICAgcmV0dXJuIE5VTEw7Cj4gPj4gKyAgICAgc2libGluZyA9IHZwdV9oZWxwZXJfZmluZF9mb3Jt YXQoaW5zdCwgdHlwZSwgZm10LT5zaWJsaW5nKTsKPiA+PiArICAgICBpZiAoIXNpYmxpbmcpCj4g Pj4gKyAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiA+PiArICAgICBpZiAoc2libGluZy0+c2li bGluZyAhPSBmbXQtPnBpeGZtdCkKPiA+PiArICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ID4+ ICsgICAgIGlmIChzaWJsaW5nLT5jb21wX3BsYW5lcyAhPSBmbXQtPmNvbXBfcGxhbmVzKQo+ID4+ ICsgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gPj4gKyAgICAgcmV0dXJuIHNpYmxpbmc7Cj4g Pj4gK30KPiA+PiArCj4gPj4gK2Jvb2wgdnB1X2hlbHBlcl9tYXRjaF9mb3JtYXQoc3RydWN0IHZw dV9pbnN0ICppbnN0LCB1MzIgdHlwZSwgdTMyCj4gPj4gK2ZtdGEsIHUzMiBmbXRiKSB7Cj4gPj4g KyAgICAgY29uc3Qgc3RydWN0IHZwdV9mb3JtYXQgKnNpYmxpbmc7Cj4gPj4gKwo+ID4+ICsgICAg IGlmIChmbXRhID09IGZtdGIpCj4gPj4gKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPiA+PiAr Cj4gPj4gKyAgICAgc2libGluZyA9IHZwdV9oZWxwZXJfZmluZF9zaWJsaW5nKGluc3QsIHR5cGUs IGZtdGEpOwo+ID4+ICsgICAgIGlmIChzaWJsaW5nICYmIHNpYmxpbmctPnBpeGZtdCA9PSBmbXRi KQo+ID4+ICsgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPj4gKyAgICAgcmV0dXJuIGZhbHNl Owo+ID4+ICt9Cj4gPj4gKwo+ID4+ICBjb25zdCBzdHJ1Y3QgdnB1X2Zvcm1hdCAqdnB1X2hlbHBl cl9lbnVtX2Zvcm1hdChzdHJ1Y3QgdnB1X2luc3QKPiA+PiAqaW5zdCwgdTMyIHR5cGUsIGludCBp bmRleCkgIHsKPiA+PiAgICAgICBjb25zdCBzdHJ1Y3QgdnB1X2Zvcm1hdCAqcGZtdDsKPiA+PiBA QCAtMTIzLDkgKzE1NiwxMCBAQCBzdGF0aWMgdTMyIGdldF9udjEyX3BsYW5lX3NpemUodTMyIHdp ZHRoLCB1MzIKPiA+aGVpZ2h0LCBpbnQgcGxhbmVfbm8sCj4gPj4gICAgICAgdTMyIGJ5dGVzcGVy bGluZTsKPiA+PiAgICAgICB1MzIgc2l6ZSA9IDA7Cj4gPj4KPiA+PiAtICAgICBieXRlc3Blcmxp bmUgPSBBTElHTih3aWR0aCwgc3RyaWRlKTsKPiA+PiArICAgICBieXRlc3BlcmxpbmUgPSB3aWR0 aDsKPiA+PiAgICAgICBpZiAocGJsKQo+ID4+ICAgICAgICAgICAgICAgYnl0ZXNwZXJsaW5lID0g bWF4KGJ5dGVzcGVybGluZSwgKnBibCk7Cj4gPj4gKyAgICAgYnl0ZXNwZXJsaW5lID0gQUxJR04o Ynl0ZXNwZXJsaW5lLCBzdHJpZGUpOwo+ID4+ICAgICAgIGhlaWdodCA9IEFMSUdOKGhlaWdodCwg Mik7Cj4gPj4gICAgICAgaWYgKHBsYW5lX25vID09IDApCj4gPj4gICAgICAgICAgICAgICBzaXpl ID0gYnl0ZXNwZXJsaW5lICogaGVpZ2h0OyBAQCAtMTQ4LDEzICsxODIsMTMgQEAKPiA+PiBzdGF0 aWMgdTMyIGdldF90aWxlZF84bDEyOF9wbGFuZV9zaXplKHUzMiBmbXQsIHUzMiB3aWR0aCwgdTMy IGhlaWdodCwKPiA+PiBpbnQgcGxhbmVfCj4gPj4KPiA+PiAgICAgICBpZiAoaW50ZXJsYWNlZCkK PiA+PiAgICAgICAgICAgICAgIGhzKys7Cj4gPj4gLSAgICAgaWYgKGZtdCA9PSBWNEwyX1BJWF9G TVRfTlYxMk1fMTBCRV84TDEyOCkKPiA+PiArICAgICBpZiAoZm10ID09IFY0TDJfUElYX0ZNVF9O VjEyTV8xMEJFXzhMMTI4IHx8IGZtdCA9PQo+ID4+ICsgVjRMMl9QSVhfRk1UX05WMTJfMTBCRV84 TDEyOCkKPiA+PiAgICAgICAgICAgICAgIGJpdGRlcHRoID0gMTA7Cj4gPj4gICAgICAgYnl0ZXNw ZXJsaW5lID0gRElWX1JPVU5EX1VQKHdpZHRoICogYml0ZGVwdGgsIEJJVFNfUEVSX0JZVEUpOwo+ ID4+IC0gICAgIGJ5dGVzcGVybGluZSA9IEFMSUdOKGJ5dGVzcGVybGluZSwgMSA8PCB3cyk7Cj4g Pj4gLSAgICAgYnl0ZXNwZXJsaW5lID0gQUxJR04oYnl0ZXNwZXJsaW5lLCBzdHJpZGUpOwo+ID4+ ICAgICAgIGlmIChwYmwpCj4gPj4gICAgICAgICAgICAgICBieXRlc3BlcmxpbmUgPSBtYXgoYnl0 ZXNwZXJsaW5lLCAqcGJsKTsKPiA+PiArICAgICBieXRlc3BlcmxpbmUgPSBBTElHTihieXRlc3Bl cmxpbmUsIDEgPDwgd3MpOwo+ID4+ICsgICAgIGJ5dGVzcGVybGluZSA9IEFMSUdOKGJ5dGVzcGVy bGluZSwgc3RyaWRlKTsKPiA+PiAgICAgICBoZWlnaHQgPSBBTElHTihoZWlnaHQsIDEgPDwgaHMp Owo+ID4+ICAgICAgIGlmIChwbGFuZV9ubyA9PSAwKQo+ID4+ICAgICAgICAgICAgICAgc2l6ZSA9 IGJ5dGVzcGVybGluZSAqIGhlaWdodDsgQEAgLTE3Miw5ICsyMDYsMTAgQEAKPiA+PiBzdGF0aWMg dTMyIGdldF9kZWZhdWx0X3BsYW5lX3NpemUodTMyIHdpZHRoLCB1MzIgaGVpZ2h0LCBpbnQgcGxh bmVfbm8sCj4gPj4gICAgICAgdTMyIGJ5dGVzcGVybGluZTsKPiA+PiAgICAgICB1MzIgc2l6ZSA9 IDA7Cj4gPj4KPiA+PiAtICAgICBieXRlc3BlcmxpbmUgPSBBTElHTih3aWR0aCwgc3RyaWRlKTsK PiA+PiArICAgICBieXRlc3BlcmxpbmUgPSB3aWR0aDsKPiA+PiAgICAgICBpZiAocGJsKQo+ID4+ ICAgICAgICAgICAgICAgYnl0ZXNwZXJsaW5lID0gbWF4KGJ5dGVzcGVybGluZSwgKnBibCk7Cj4g Pj4gKyAgICAgYnl0ZXNwZXJsaW5lID0gQUxJR04oYnl0ZXNwZXJsaW5lLCBzdHJpZGUpOwo+ID4+ ICAgICAgIGlmIChwbGFuZV9ubyA9PSAwKQo+ID4+ICAgICAgICAgICAgICAgc2l6ZSA9IGJ5dGVz cGVybGluZSAqIGhlaWdodDsKPiA+PiAgICAgICBpZiAocGJsKQo+ID4+IEBAIC0xODcsOSArMjIy LDEyIEBAIHUzMiB2cHVfaGVscGVyX2dldF9wbGFuZV9zaXplKHUzMiBmbXQsIHUzMiB3LCB1MzIK PiA+aCwgaW50IHBsYW5lX25vLAo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIg c3RyaWRlLCB1MzIgaW50ZXJsYWNlZCwgdTMyICpwYmwpICB7Cj4gPj4gICAgICAgc3dpdGNoIChm bXQpIHsKPiA+PiArICAgICBjYXNlIFY0TDJfUElYX0ZNVF9OVjEyOgo+ID4+ICAgICAgIGNhc2Ug VjRMMl9QSVhfRk1UX05WMTJNOgo+ID4+ICAgICAgICAgICAgICAgcmV0dXJuIGdldF9udjEyX3Bs YW5lX3NpemUodywgaCwgcGxhbmVfbm8sIHN0cmlkZSwKPiA+PiBpbnRlcmxhY2VkLCBwYmwpOwo+ ID4+ICsgICAgIGNhc2UgVjRMMl9QSVhfRk1UX05WMTJfOEwxMjg6Cj4gPj4gICAgICAgY2FzZSBW NEwyX1BJWF9GTVRfTlYxMk1fOEwxMjg6Cj4gPj4gKyAgICAgY2FzZSBWNEwyX1BJWF9GTVRfTlYx Ml8xMEJFXzhMMTI4Ogo+ID4+ICAgICAgIGNhc2UgVjRMMl9QSVhfRk1UX05WMTJNXzEwQkVfOEwx Mjg6Cj4gPj4gICAgICAgICAgICAgICByZXR1cm4gZ2V0X3RpbGVkXzhsMTI4X3BsYW5lX3NpemUo Zm10LCB3LCBoLCBwbGFuZV9ubywgc3RyaWRlLAo+ID5pbnRlcmxhY2VkLCBwYmwpOwo+ID4+ICAg ICAgIGRlZmF1bHQ6Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1w aGlvbi92cHVfaGVscGVycy5oCj4gPj4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24v dnB1X2hlbHBlcnMuaAo+ID4+IGluZGV4IGJjMjgzNTA5NThiZS4uMGVhZGRiMDcxOTBkIDEwMDY0 NAo+ID4+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfaGVscGVycy5o Cj4gPj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3ZwdV9oZWxwZXJzLmgK PiA+PiBAQCAtMTQsNiArMTQsOCBAQCBzdHJ1Y3QgdnB1X3BhaXIgewo+ID4+ICBpbnQgdnB1X2hl bHBlcl9maW5kX2luX2FycmF5X3U4KGNvbnN0IHU4ICphcnJheSwgdTMyIHNpemUsIHUzMiB4KTsK PiA+PiBib29sIHZwdV9oZWxwZXJfY2hlY2tfdHlwZShzdHJ1Y3QgdnB1X2luc3QgKmluc3QsIHUz MiB0eXBlKTsgIGNvbnN0Cj4gPj4gc3RydWN0IHZwdV9mb3JtYXQgKnZwdV9oZWxwZXJfZmluZF9m b3JtYXQoc3RydWN0IHZwdV9pbnN0ICppbnN0LCB1MzIKPiA+PiB0eXBlLCB1MzIgcGl4ZWxmbXQp Owo+ID4+ICtjb25zdCBzdHJ1Y3QgdnB1X2Zvcm1hdCAqdnB1X2hlbHBlcl9maW5kX3NpYmxpbmco c3RydWN0IHZwdV9pbnN0Cj4gPj4gKyppbnN0LCB1MzIgdHlwZSwgdTMyIHBpeGVsZm10KTsgYm9v bCB2cHVfaGVscGVyX21hdGNoX2Zvcm1hdChzdHJ1Y3QKPiA+PiArdnB1X2luc3QgKmluc3QsIHUz MiB0eXBlLCB1MzIgZm10YSwgdTMyIGZtdGIpOwo+ID4+ICBjb25zdCBzdHJ1Y3QgdnB1X2Zvcm1h dCAqdnB1X2hlbHBlcl9lbnVtX2Zvcm1hdChzdHJ1Y3QgdnB1X2luc3QKPiA+PiAqaW5zdCwgdTMy IHR5cGUsIGludCBpbmRleCk7Cj4gPj4gIHUzMiB2cHVfaGVscGVyX3ZhbGlkX2ZyYW1lX3dpZHRo KHN0cnVjdCB2cHVfaW5zdCAqaW5zdCwgdTMyIHdpZHRoKTsKPiA+PiAgdTMyIHZwdV9oZWxwZXJf dmFsaWRfZnJhbWVfaGVpZ2h0KHN0cnVjdCB2cHVfaW5zdCAqaW5zdCwgdTMyIGhlaWdodCk7Cj4g Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfbWFsb25l LmMKPiA+PiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfbWFsb25lLmMKPiA+ PiBpbmRleCA1MWUwNzAyZjlhZTEuLjY5ZDlhMjI2OWZjZSAxMDA2NDQKPiA+PiAtLS0gYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1X21hbG9uZS5jCj4gPj4gKysrIGIvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3ZwdV9tYWxvbmUuYwo+ID4+IEBAIC01ODMsNyArNTgz LDggQEAgYm9vbCB2cHVfbWFsb25lX2NoZWNrX2ZtdChlbnVtIHZwdV9jb3JlX3R5cGUKPiA+dHlw ZSwgdTMyIHBpeGVsZm10KQo+ID4+ICAgICAgIGlmICghdnB1X2lteDhxX2NoZWNrX2ZtdCh0eXBl LCBwaXhlbGZtdCkpCj4gPj4gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gPj4KPiA+PiAt ICAgICBpZiAocGl4ZWxmbXQgPT0gVjRMMl9QSVhfRk1UX05WMTJNXzhMMTI4IHx8IHBpeGVsZm10 ID09Cj4gPlY0TDJfUElYX0ZNVF9OVjEyTV8xMEJFXzhMMTI4KQo+ID4+ICsgICAgIGlmIChwaXhl bGZtdCA9PSBWNEwyX1BJWF9GTVRfTlYxMl84TDEyOCB8fCBwaXhlbGZtdCA9PQo+ID5WNEwyX1BJ WF9GTVRfTlYxMl8xMEJFXzhMMTI4IHx8Cj4gPj4gKyAgICAgICAgIHBpeGVsZm10ID09IFY0TDJf UElYX0ZNVF9OVjEyTV84TDEyOCB8fCBwaXhlbGZtdCA9PQo+ID4+ICsgVjRMMl9QSVhfRk1UX05W MTJNXzEwQkVfOEwxMjgpCj4gPj4gICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPiA+PiAgICAg ICBpZiAodnB1X21hbG9uZV9mb3JtYXRfcmVtYXAocGl4ZWxmbXQpID09IE1BTE9ORV9GTVRfTlVM TCkKPiA+PiAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3ZwdV92NGwyLmMKPiA+PiBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vYW1waGlvbi92cHVfdjRsMi5jCj4gPj4gaW5kZXggOGEzZWVkOTU3YWU2Li44 N2NjZTU1MmU5MDYgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBo aW9uL3ZwdV92NGwyLmMKPiA+PiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24v dnB1X3Y0bDIuYwo+ID4+IEBAIC0xNDAsNTEgKzE0MCwxMzUgQEAgYm9vbCB2cHVfaXNfc291cmNl X2VtcHR5KHN0cnVjdCB2cHVfaW5zdCAqaW5zdCkKPiA+PiAgICAgICByZXR1cm4gdHJ1ZTsKPiA+ PiAgfQo+ID4+Cj4gPj4gLWNvbnN0IHN0cnVjdCB2cHVfZm9ybWF0ICp2cHVfdHJ5X2ZtdF9jb21t b24oc3RydWN0IHZwdV9pbnN0ICppbnN0LAo+ID4+IHN0cnVjdCB2NGwyX2Zvcm1hdCAqZikKPiA+ PiArc3RhdGljIGludCB2cHVfaW5pdF9mb3JtYXQoc3RydWN0IHZwdV9pbnN0ICppbnN0LCBzdHJ1 Y3QgdnB1X2Zvcm1hdAo+ID4+ICsqZm10KSB7Cj4gPj4gKyAgICAgY29uc3Qgc3RydWN0IHZwdV9m b3JtYXQgKmluZm87Cj4gPj4gKwo+ID4+ICsgICAgIGluZm8gPSB2cHVfaGVscGVyX2ZpbmRfZm9y bWF0KGluc3QsIGZtdC0+dHlwZSwgZm10LT5waXhmbXQpOwo+ID4+ICsgICAgIGlmICghaW5mbykg ewo+ID4+ICsgICAgICAgICAgICAgaW5mbyA9IHZwdV9oZWxwZXJfZW51bV9mb3JtYXQoaW5zdCwg Zm10LT50eXBlLCAwKTsKPiA+PiArICAgICAgICAgICAgIGlmICghaW5mbykKPiA+PiArICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPj4gKyAgICAgfQo+ID4+ICsgICAgIG1l bWNweShmbXQsIGluZm8sIHNpemVvZigqZm10KSk7Cj4gPj4gKwo+ID4+ICsgICAgIHJldHVybiAw Owo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgaW50IHZwdV9jYWxjX2ZtdF9ieXRlc3Blcmxp bmUoc3RydWN0IHY0bDJfZm9ybWF0ICpmLCBzdHJ1Y3QKPiA+PiArdnB1X2Zvcm1hdCAqZm10KQo+ ID4+ICB7Cj4gPj4gICAgICAgc3RydWN0IHY0bDJfcGl4X2Zvcm1hdF9tcGxhbmUgKnBpeG1wID0g JmYtPmZtdC5waXhfbXA7Cj4gPj4gLSAgICAgdTMyIHR5cGUgPSBmLT50eXBlOwo+ID4+ICsgICAg IGludCBpOwo+ID4+ICsKPiA+PiArICAgICBpZiAoZm10LT5mbGFncyAmIFY0TDJfRk1UX0ZMQUdf Q09NUFJFU1NFRCkgewo+ID4+ICsgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGZtdC0+Y29t cF9wbGFuZXM7IGkrKykKPiA+PiArICAgICAgICAgICAgICAgICAgICAgZm10LT5ieXRlc3Blcmxp bmVbaV0gPSAwOwo+ID4+ICsgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPj4gKyAgICAgfQo+ID4+ ICsgICAgIGlmIChwaXhtcC0+bnVtX3BsYW5lcyA9PSBmbXQtPmNvbXBfcGxhbmVzKSB7Cj4gPj4g KyAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZm10LT5jb21wX3BsYW5lczsgaSsrKQo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICBmbXQtPmJ5dGVzcGVybGluZVtpXSA9Cj4gPnBpeG1wLT5w bGFuZV9mbXRbaV0uYnl0ZXNwZXJsaW5lOwo+ID4+ICsgICAgICAgICAgICAgcmV0dXJuIDA7Cj4g Pj4gKyAgICAgfQo+ID4+ICsgICAgIGlmIChwaXhtcC0+bnVtX3BsYW5lcyA+IDEpCj4gPj4gKyAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+PiArCj4gPj4gKyAgICAgLyphbXBoaW9uIHZw dSBvbmx5IHN1cHBvcnQgbnYxMiBhbmQgbnYxMiB0aWxlZCwKPiA+PiArICAgICAgKiBzbyB0aGUg Ynl0ZXNwZXJsaW5lIG9mIGx1bWEgYW5kIGNocm9tYSBzaG91bGQgYmUgc2FtZQo+ID4+ICsgICAg ICAqLwo+ID4+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBmbXQtPmNvbXBfcGxhbmVzOyBpKyspCj4g Pj4gKyAgICAgICAgICAgICBmbXQtPmJ5dGVzcGVybGluZVtpXSA9IHBpeG1wLT5wbGFuZV9mbXRb MF0uYnl0ZXNwZXJsaW5lOwo+ID4+ICsKPiA+PiArICAgICByZXR1cm4gMDsKPiA+PiArfQo+ID4+ ICsKPiA+PiArc3RhdGljIGludCB2cHVfY2FsY19mbXRfc2l6ZWltYWdlKHN0cnVjdCB2cHVfaW5z dCAqaW5zdCwgc3RydWN0Cj4gPj4gK3ZwdV9mb3JtYXQgKmZtdCkgewo+ID4+ICAgICAgIHUzMiBz dHJpZGUgPSAxOwo+ID4+IC0gICAgIHUzMiBieXRlc3BlcmxpbmU7Cj4gPj4gLSAgICAgdTMyIHNp emVpbWFnZTsKPiA+PiAtICAgICBjb25zdCBzdHJ1Y3QgdnB1X2Zvcm1hdCAqZm10Owo+ID4+IC0g ICAgIGNvbnN0IHN0cnVjdCB2cHVfY29yZV9yZXNvdXJjZXMgKnJlczsKPiA+PiAgICAgICBpbnQg aTsKPiA+Pgo+ID4+IC0gICAgIGZtdCA9IHZwdV9oZWxwZXJfZmluZF9mb3JtYXQoaW5zdCwgdHlw ZSwgcGl4bXAtPnBpeGVsZm9ybWF0KTsKPiA+PiAtICAgICBpZiAoIWZtdCkgewo+ID4+IC0gICAg ICAgICAgICAgZm10ID0gdnB1X2hlbHBlcl9lbnVtX2Zvcm1hdChpbnN0LCB0eXBlLCAwKTsKPiA+ PiAtICAgICAgICAgICAgIGlmICghZm10KQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICByZXR1 cm4gTlVMTDsKPiA+PiAtICAgICAgICAgICAgIHBpeG1wLT5waXhlbGZvcm1hdCA9IGZtdC0+cGl4 Zm10Owo+ID4+ICsgICAgIGlmICghKGZtdC0+ZmxhZ3MgJiBWNEwyX0ZNVF9GTEFHX0NPTVBSRVNT RUQpKSB7Cj4gPj4gKyAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdnB1X2NvcmVfcmVzb3VyY2Vz ICpyZXMgPQo+ID4+ICsgdnB1X2dldF9yZXNvdXJjZShpbnN0KTsKPiA+PiArCj4gPj4gKyAgICAg ICAgICAgICBpZiAocmVzKQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICBzdHJpZGUgPSByZXMt PnN0cmlkZTsKPiA+PiAgICAgICB9Cj4gPj4KPiA+PiAtICAgICByZXMgPSB2cHVfZ2V0X3Jlc291 cmNlKGluc3QpOwo+ID4+IC0gICAgIGlmIChyZXMpCj4gPj4gLSAgICAgICAgICAgICBzdHJpZGUg PSByZXMtPnN0cmlkZTsKPiA+PiAtICAgICBpZiAocGl4bXAtPndpZHRoKQo+ID4+IC0gICAgICAg ICAgICAgcGl4bXAtPndpZHRoID0gdnB1X2hlbHBlcl92YWxpZF9mcmFtZV93aWR0aChpbnN0LAo+ ID5waXhtcC0+d2lkdGgpOwo+ID4+IC0gICAgIGlmIChwaXhtcC0+aGVpZ2h0KQo+ID4+IC0gICAg ICAgICAgICAgcGl4bXAtPmhlaWdodCA9IHZwdV9oZWxwZXJfdmFsaWRfZnJhbWVfaGVpZ2h0KGlu c3QsCj4gPnBpeG1wLT5oZWlnaHQpOwo+ID4+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBmbXQtPmNv bXBfcGxhbmVzOyBpKyspIHsKPiA+PiArICAgICAgICAgICAgIGZtdC0+c2l6ZWltYWdlW2ldID0g dnB1X2hlbHBlcl9nZXRfcGxhbmVfc2l6ZShmbXQtPnBpeGZtdCwKPiA+PiArCj4gPmZtdC0+d2lk dGgsCj4gPj4gKwo+ID5mbXQtPmhlaWdodCwKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLAo+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZSwKPiA+ PiArCj4gPmZtdC0+ZmllbGQgIT0gVjRMMl9GSUVMRF9OT05FID8gMSA6IDAsCj4gPj4gKwo+ID4m Zm10LT5ieXRlc3BlcmxpbmVbaV0pOwo+ID4+ICsgICAgICAgICAgICAgZm10LT5zaXplaW1hZ2Vb aV0gPSBtYXhfdCh1MzIsIGZtdC0+c2l6ZWltYWdlW2ldLCBQQUdFX1NJWkUpOwo+ID4+ICsgICAg ICAgICAgICAgaWYgKGZtdC0+ZmxhZ3MgJiBWNEwyX0ZNVF9GTEFHX0NPTVBSRVNTRUQpIHsKPiA+ PiArICAgICAgICAgICAgICAgICAgICAgZm10LT5zaXplaW1hZ2VbaV0gPSBjbGFtcF92YWwoZm10 LT5zaXplaW1hZ2VbaV0sCj4gPlNaXzEyOEssIFNaXzhNKTsKPiA+PiArICAgICAgICAgICAgICAg ICAgICAgZm10LT5ieXRlc3BlcmxpbmVbaV0gPSAwOwo+ID4+ICsgICAgICAgICAgICAgfQo+ID4+ ICsgICAgIH0KPiA+PiArCj4gPj4gKyAgICAgcmV0dXJuIDA7Cj4gPj4gK30KPiA+PiArCj4gPj4g K3UzMiB2cHVfZ2V0X2ZtdF9wbGFuZV9zaXplKHN0cnVjdCB2cHVfZm9ybWF0ICpmbXQsIHUzMiBw bGFuZV9ubykgewo+ID4+ICsgICAgIHUzMiBzaXplOwo+ID4+ICsgICAgIGludCBpOwo+ID4+ICsK PiA+PiArICAgICBpZiAocGxhbmVfbm8gPj0gZm10LT5tZW1fcGxhbmVzKQo+ID4+ICsgICAgICAg ICAgICAgcmV0dXJuIDA7Cj4gPj4gKwo+ID4+ICsgICAgIGlmIChmbXQtPmNvbXBfcGxhbmVzID09 IGZtdC0+bWVtX3BsYW5lcykKPiA+PiArICAgICAgICAgICAgIHJldHVybiBmbXQtPnNpemVpbWFn ZVtwbGFuZV9ub107Cj4gPj4gKyAgICAgaWYgKHBsYW5lX25vIDwgZm10LT5tZW1fcGxhbmVzIC0g MSkKPiA+PiArICAgICAgICAgICAgIHJldHVybiBmbXQtPnNpemVpbWFnZVtwbGFuZV9ub107Cj4g Pj4gKyAgICAgc2l6ZSA9IGZtdC0+c2l6ZWltYWdlW3BsYW5lX25vXTsKPiA+PiArICAgICBmb3Ig KGkgPSBmbXQtPm1lbV9wbGFuZXM7IGkgPCBmbXQtPmNvbXBfcGxhbmVzOyBpKyspCj4gPj4gKyAg ICAgICAgICAgICBzaXplICs9IGZtdC0+c2l6ZWltYWdlW2ldOwo+ID4+ICsKPiA+PiArICAgICBy ZXR1cm4gc2l6ZTsKPiA+PiArfQo+ID4+ICsKPiA+PiAraW50IHZwdV90cnlfZm10X2NvbW1vbihz dHJ1Y3QgdnB1X2luc3QgKmluc3QsIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZiwKPiA+PiArc3RydWN0 IHZwdV9mb3JtYXQgKmZtdCkgewo+ID4+ICsgICAgIHN0cnVjdCB2NGwyX3BpeF9mb3JtYXRfbXBs YW5lICpwaXhtcCA9ICZmLT5mbXQucGl4X21wOwo+ID4+ICsgICAgIGludCBpOwo+ID4+ICsgICAg IGludCByZXQ7Cj4gPj4gKwo+ID4+ICsgICAgIGZtdC0+cGl4Zm10ID0gcGl4bXAtPnBpeGVsZm9y bWF0Owo+ID4+ICsgICAgIGZtdC0+dHlwZSA9IGYtPnR5cGU7Cj4gPj4gKyAgICAgcmV0ID0gdnB1 X2luaXRfZm9ybWF0KGluc3QsIGZtdCk7Cj4gPj4gKyAgICAgaWYgKHJldCA8IDApCj4gPj4gKyAg ICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4+ICsKPiA+PiArICAgICBmbXQtPndpZHRoID0gcGl4 bXAtPndpZHRoOwo+ID4+ICsgICAgIGZtdC0+aGVpZ2h0ID0gcGl4bXAtPmhlaWdodDsKPiA+PiAr ICAgICBpZiAoZm10LT53aWR0aCkKPiA+PiArICAgICAgICAgICAgIGZtdC0+d2lkdGggPSB2cHVf aGVscGVyX3ZhbGlkX2ZyYW1lX3dpZHRoKGluc3QsCj4gPmZtdC0+d2lkdGgpOwo+ID4+ICsgICAg IGlmIChmbXQtPmhlaWdodCkKPiA+PiArICAgICAgICAgICAgIGZtdC0+aGVpZ2h0ID0gdnB1X2hl bHBlcl92YWxpZF9mcmFtZV9oZWlnaHQoaW5zdCwKPiA+Zm10LT5oZWlnaHQpOwo+ID4+ICsgICAg IGZtdC0+ZmllbGQgPSBwaXhtcC0+ZmllbGQgPT0gVjRMMl9GSUVMRF9BTlkgPyBWNEwyX0ZJRUxE X05PTkUgOgo+ID5waXhtcC0+ZmllbGQ7Cj4gPj4gKyAgICAgdnB1X2NhbGNfZm10X2J5dGVzcGVy bGluZShmLCBmbXQpOwo+ID4+ICsgICAgIHZwdV9jYWxjX2ZtdF9zaXplaW1hZ2UoaW5zdCwgZm10 KTsKPiA+PiArICAgICBpZiAoKGZtdC0+ZmxhZ3MgJiBWNEwyX0ZNVF9GTEFHX0NPTVBSRVNTRUQp ICYmCj4gPnBpeG1wLT5wbGFuZV9mbXRbMF0uc2l6ZWltYWdlKQo+ID4+ICsgICAgICAgICAgICAg Zm10LT5zaXplaW1hZ2VbMF0gPQo+ID4+ICsgY2xhbXBfdmFsKHBpeG1wLT5wbGFuZV9mbXRbMF0u c2l6ZWltYWdlLCBTWl8xMjhLLCBTWl84TSk7Cj4gPj4gKwo+ID4+ICsgICAgIHBpeG1wLT5waXhl bGZvcm1hdCA9IGZtdC0+cGl4Zm10Owo+ID4+ICsgICAgIHBpeG1wLT53aWR0aCA9IGZtdC0+d2lk dGg7Cj4gPj4gKyAgICAgcGl4bXAtPmhlaWdodCA9IGZtdC0+aGVpZ2h0Owo+ID4+ICAgICAgIHBp eG1wLT5mbGFncyA9IGZtdC0+ZmxhZ3M7Cj4gPj4gLSAgICAgcGl4bXAtPm51bV9wbGFuZXMgPSBm bXQtPm51bV9wbGFuZXM7Cj4gPj4gLSAgICAgaWYgKHBpeG1wLT5maWVsZCA9PSBWNEwyX0ZJRUxE X0FOWSkKPiA+PiAtICAgICAgICAgICAgIHBpeG1wLT5maWVsZCA9IFY0TDJfRklFTERfTk9ORTsK PiA+PiArICAgICBwaXhtcC0+bnVtX3BsYW5lcyA9IGZtdC0+bWVtX3BsYW5lczsKPiA+PiArICAg ICBwaXhtcC0+ZmllbGQgPSBmbXQtPmZpZWxkOwo+ID4+ICsgICAgIG1lbXNldChwaXhtcC0+cmVz ZXJ2ZWQsIDAsIHNpemVvZihwaXhtcC0+cmVzZXJ2ZWQpKTsKPiA+PiAgICAgICBmb3IgKGkgPSAw OyBpIDwgcGl4bXAtPm51bV9wbGFuZXM7IGkrKykgewo+ID4+IC0gICAgICAgICAgICAgYnl0ZXNw ZXJsaW5lID0gbWF4X3QoczMyLCBwaXhtcC0+cGxhbmVfZm10W2ldLmJ5dGVzcGVybGluZSwKPiA+ MCk7Cj4gPj4gLSAgICAgICAgICAgICBzaXplaW1hZ2UgPSB2cHVfaGVscGVyX2dldF9wbGFuZV9z aXplKHBpeG1wLT5waXhlbGZvcm1hdCwKPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGl4bXAtPndpZHRoLAo+ID4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhtcC0+aGVpZ2h0LAo+ID4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLAo+ ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJpZGUsCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBpeG1wLT5maWVsZCA+Cj4gPlY0TDJfRklFTERfTk9ORSA/IDEgOiAwLAo+ID4+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZXNw ZXJsaW5lKTsKPiA+PiAtICAgICAgICAgICAgIHNpemVpbWFnZSA9IG1heF90KHMzMiwgcGl4bXAt PnBsYW5lX2ZtdFtpXS5zaXplaW1hZ2UsCj4gPnNpemVpbWFnZSk7Cj4gPj4gLSAgICAgICAgICAg ICBwaXhtcC0+cGxhbmVfZm10W2ldLmJ5dGVzcGVybGluZSA9IGJ5dGVzcGVybGluZTsKPiA+PiAt ICAgICAgICAgICAgIHBpeG1wLT5wbGFuZV9mbXRbaV0uc2l6ZWltYWdlID0gc2l6ZWltYWdlOwo+ ID4+ICsgICAgICAgICAgICAgcGl4bXAtPnBsYW5lX2ZtdFtpXS5ieXRlc3BlcmxpbmUgPSBmbXQt PmJ5dGVzcGVybGluZVtpXTsKPiA+PiArICAgICAgICAgICAgIHBpeG1wLT5wbGFuZV9mbXRbaV0u c2l6ZWltYWdlID0gdnB1X2dldF9mbXRfcGxhbmVfc2l6ZShmbXQsCj4gPmkpOwo+ID4+ICsgICAg ICAgICAgICAgbWVtc2V0KHBpeG1wLT5wbGFuZV9mbXRbaV0ucmVzZXJ2ZWQsIDAsCj4gPj4gKyBz aXplb2YocGl4bXAtPnBsYW5lX2ZtdFtpXS5yZXNlcnZlZCkpOwo+ID4+ICAgICAgIH0KPiA+Pgo+ ID4+IC0gICAgIHJldHVybiBmbXQ7Cj4gPj4gKyAgICAgcmV0dXJuIDA7Cj4gPj4gIH0KPiA+Pgo+ ID4+ICBzdGF0aWMgYm9vbCB2cHVfY2hlY2tfcmVhZHkoc3RydWN0IHZwdV9pbnN0ICppbnN0LCB1 MzIgdHlwZSkgQEAKPiA+PiAtMzg5LDEwICs0NzMsMTAgQEAgc3RhdGljIGludCB2cHVfdmIyX3F1 ZXVlX3NldHVwKHN0cnVjdCB2YjJfcXVldWUgKnZxLAo+ID4+ICAgICAgIGN1cl9mbXQgPSB2cHVf Z2V0X2Zvcm1hdChpbnN0LCB2cS0+dHlwZSk7Cj4gPj4KPiA+PiAgICAgICBpZiAoKnBsYW5lX2Nv dW50KSB7Cj4gPj4gLSAgICAgICAgICAgICBpZiAoKnBsYW5lX2NvdW50ICE9IGN1cl9mbXQtPm51 bV9wbGFuZXMpCj4gPj4gKyAgICAgICAgICAgICBpZiAoKnBsYW5lX2NvdW50ICE9IGN1cl9mbXQt Pm1lbV9wbGFuZXMpCj4gPj4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ ID4+IC0gICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGN1cl9mbXQtPm51bV9wbGFuZXM7IGkr Kykgewo+ID4+IC0gICAgICAgICAgICAgICAgICAgICBpZiAocHNpemVbaV0gPCBjdXJfZm10LT5z aXplaW1hZ2VbaV0pCj4gPj4gKyAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY3VyX2ZtdC0+ bWVtX3BsYW5lczsgaSsrKSB7Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChwc2l6ZVtp XSA8IHZwdV9nZXRfZm10X3BsYW5lX3NpemUoY3VyX2ZtdCwKPiA+PiArIGkpKQo+ID4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4+ICAgICAgICAgICAg ICAgfQo+ID4+ICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPj4gQEAgLTQwMiw5ICs0ODYsOSBA QCBzdGF0aWMgaW50IHZwdV92YjJfcXVldWVfc2V0dXAoc3RydWN0IHZiMl9xdWV1ZQo+ID4qdnEs Cj4gPj4gICAgICAgICAgICAgICAqYnVmX2NvdW50ID0gbWF4X3QodW5zaWduZWQgaW50LCAqYnVm X2NvdW50LAo+ID5pbnN0LT5taW5fYnVmZmVyX291dCk7Cj4gPj4gICAgICAgZWxzZQo+ID4+ICAg ICAgICAgICAgICAgKmJ1Zl9jb3VudCA9IG1heF90KHVuc2lnbmVkIGludCwgKmJ1Zl9jb3VudCwK PiA+aW5zdC0+bWluX2J1ZmZlcl9jYXApOwo+ID4+IC0gICAgICpwbGFuZV9jb3VudCA9IGN1cl9m bXQtPm51bV9wbGFuZXM7Cj4gPj4gLSAgICAgZm9yIChpID0gMDsgaSA8IGN1cl9mbXQtPm51bV9w bGFuZXM7IGkrKykKPiA+PiAtICAgICAgICAgICAgIHBzaXplW2ldID0gY3VyX2ZtdC0+c2l6ZWlt YWdlW2ldOwo+ID4+ICsgICAgICpwbGFuZV9jb3VudCA9IGN1cl9mbXQtPm1lbV9wbGFuZXM7Cj4g Pj4gKyAgICAgZm9yIChpID0gMDsgaSA8IGN1cl9mbXQtPm1lbV9wbGFuZXM7IGkrKykKPiA+PiAr ICAgICAgICAgICAgIHBzaXplW2ldID0gdnB1X2dldF9mbXRfcGxhbmVfc2l6ZShjdXJfZm10LCBp KTsKPiA+Pgo+ID4+ICAgICAgIHJldHVybiAwOwo+ID4+ICB9Cj4gPj4gQEAgLTQzNCw4ICs1MTgs OCBAQCBzdGF0aWMgaW50IHZwdV92YjJfYnVmX3ByZXBhcmUoc3RydWN0IHZiMl9idWZmZXIKPiA+ KnZiKQo+ID4+ICAgICAgIHUzMiBpOwo+ID4+Cj4gPj4gICAgICAgY3VyX2ZtdCA9IHZwdV9nZXRf Zm9ybWF0KGluc3QsIHZiLT50eXBlKTsKPiA+PiAtICAgICBmb3IgKGkgPSAwOyBpIDwgY3VyX2Zt dC0+bnVtX3BsYW5lczsgaSsrKSB7Cj4gPj4gLSAgICAgICAgICAgICBpZiAodnB1X2dldF92Yl9s ZW5ndGgodmIsIGkpIDwgY3VyX2ZtdC0+c2l6ZWltYWdlW2ldKSB7Cj4gPj4gKyAgICAgZm9yIChp ID0gMDsgaSA8IGN1cl9mbXQtPm1lbV9wbGFuZXM7IGkrKykgewo+ID4+ICsgICAgICAgICAgICAg aWYgKHZwdV9nZXRfdmJfbGVuZ3RoKHZiLCBpKSA8Cj4gPj4gKyB2cHVfZ2V0X2ZtdF9wbGFuZV9z aXplKGN1cl9mbXQsIGkpKSB7Cj4gPj4gICAgICAgICAgICAgICAgICAgICAgIGRldl9kYmcoaW5z dC0+ZGV2LCAiWyVkXSAlcyBidWZbJWRdIGlzIGludmFsaWRcbiIsCj4gPj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW5zdC0+aWQsIHZwdV90eXBlX25hbWUodmItPnR5cGUpLAo+ID52 Yi0+aW5kZXgpOwo+ID4+ICAgICAgICAgICAgICAgICAgICAgICB2cHVfc2V0X2J1ZmZlcl9zdGF0 ZSh2YnVmLAo+ID5WUFVfQlVGX1NUQVRFX0VSUk9SKTsKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3ZwdV92NGwyLmgKPiA+PiBiL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vYW1waGlvbi92cHVfdjRsMi5oCj4gPj4gaW5kZXggNzk1Y2EzM2E2YTUwLi5lZjVk ZTZiNjZlNDcgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9u L3ZwdV92NGwyLmgKPiA+PiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1 X3Y0bDIuaAo+ID4+IEBAIC0xNiw3ICsxNiw4IEBAIHVuc2lnbmVkIGludCB2cHVfZ2V0X2J1ZmZl cl9zdGF0ZShzdHJ1Y3QKPiA+PiB2YjJfdjRsMl9idWZmZXIgKnZidWYpOyAgaW50IHZwdV92NGwy X29wZW4oc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdAo+ID4+IHZwdV9pbnN0ICppbnN0KTsgIGlu dCB2cHVfdjRsMl9jbG9zZShzdHJ1Y3QgZmlsZSAqZmlsZSk7Cj4gPj4KPiA+PiAtY29uc3Qgc3Ry dWN0IHZwdV9mb3JtYXQgKnZwdV90cnlfZm10X2NvbW1vbihzdHJ1Y3QgdnB1X2luc3QgKmluc3Qs Cj4gPj4gc3RydWN0IHY0bDJfZm9ybWF0ICpmKTsKPiA+PiArdTMyIHZwdV9nZXRfZm10X3BsYW5l X3NpemUoc3RydWN0IHZwdV9mb3JtYXQgKmZtdCwgdTMyIHBsYW5lX25vKTsgaW50Cj4gPj4gK3Zw dV90cnlfZm10X2NvbW1vbihzdHJ1Y3QgdnB1X2luc3QgKmluc3QsIHN0cnVjdCB2NGwyX2Zvcm1h dCAqZiwKPiA+PiArc3RydWN0IHZwdV9mb3JtYXQgKmZtdCk7Cj4gPj4gIGludCB2cHVfcHJvY2Vz c19vdXRwdXRfYnVmZmVyKHN0cnVjdCB2cHVfaW5zdCAqaW5zdCk7ICBpbnQKPiA+PiB2cHVfcHJv Y2Vzc19jYXB0dXJlX2J1ZmZlcihzdHJ1Y3QgdnB1X2luc3QgKmluc3QpOyAgc3RydWN0Cj4gPj4g dmIyX3Y0bDJfYnVmZmVyICp2cHVfbmV4dF9zcmNfYnVmKHN0cnVjdCB2cHVfaW5zdCAqaW5zdCk7 IGRpZmYgLS1naXQKPiA+PiBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfd2lu ZHNvci5jCj4gPj4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1X3dpbmRzb3Iu Ywo+ID4+IGluZGV4IDE1MjZhZjJlZjlkYS4uYTQ1NGYxNDJhZTE3IDEwMDY0NAo+ID4+IC0tLSBh L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfd2luZHNvci5jCj4gPj4gKysrIGIv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3ZwdV93aW5kc29yLmMKPiA+PiBAQCAtNzc1 LDYgKzc3NSw4IEBAIHN0YXRpYyBpbnQgdnB1X3dpbmRzb3JfZmlsbF95dXZfZnJhbWUoc3RydWN0 Cj4gPnZwdV9zaGFyZWRfYWRkciAqc2hhcmVkLAo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHUzMiBpbnN0YW5jZSwKPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIpICB7Cj4gPj4gKyAgICAgc3RydWN0IHZw dV9pbnN0ICppbnN0ID0gdmIyX2dldF9kcnZfcHJpdih2Yi0+dmIyX3F1ZXVlKTsKPiA+PiArICAg ICBzdHJ1Y3QgdnB1X2Zvcm1hdCAqb3V0X2ZtdDsKPiA+PiAgICAgICBzdHJ1Y3QgdnB1X2VuY195 dXZfZGVzYyAqZGVzYzsKPiA+PiAgICAgICBzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICp2YnVmOwo+ ID4+Cj4gPj4gQEAgLTc4Miw2ICs3ODQsNyBAQCBzdGF0aWMgaW50IHZwdV93aW5kc29yX2ZpbGxf eXV2X2ZyYW1lKHN0cnVjdAo+ID52cHVfc2hhcmVkX2FkZHIgKnNoYXJlZCwKPiA+PiAgICAgICAg ICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4+Cj4gPj4gICAgICAgZGVzYyA9IGdldF95dXZfZGVz YyhzaGFyZWQsIGluc3RhbmNlKTsKPiA+PiArICAgICBvdXRfZm10ID0gdnB1X2dldF9mb3JtYXQo aW5zdCwgdmItPnR5cGUpOwo+ID4+Cj4gPj4gICAgICAgdmJ1ZiA9IHRvX3ZiMl92NGwyX2J1ZmZl cih2Yik7Cj4gPj4gICAgICAgZGVzYy0+ZnJhbWVfaWQgPSB2YnVmLT5zZXF1ZW5jZTsgQEAgLTc5 MCw3ICs3OTMsMTAgQEAgc3RhdGljIGludAo+ID4+IHZwdV93aW5kc29yX2ZpbGxfeXV2X2ZyYW1l KHN0cnVjdCB2cHVfc2hhcmVkX2FkZHIgKnNoYXJlZCwKPiA+PiAgICAgICBlbHNlCj4gPj4gICAg ICAgICAgICAgICBkZXNjLT5rZXlfZnJhbWUgPSAwOwo+ID4+ICAgICAgIGRlc2MtPmx1bWFfYmFz ZSA9IHZwdV9nZXRfdmJfcGh5X2FkZHIodmIsIDApOwo+ID4+IC0gICAgIGRlc2MtPmNocm9tYV9i YXNlID0gdnB1X2dldF92Yl9waHlfYWRkcih2YiwgMSk7Cj4gPj4gKyAgICAgaWYgKHZiLT5udW1f cGxhbmVzID4gMSkKPiA+PiArICAgICAgICAgICAgIGRlc2MtPmNocm9tYV9iYXNlID0gdnB1X2dl dF92Yl9waHlfYWRkcih2YiwgMSk7Cj4gPj4gKyAgICAgZWxzZQo+ID4+ICsgICAgICAgICAgICAg ZGVzYy0+Y2hyb21hX2Jhc2UgPSBkZXNjLT5sdW1hX2Jhc2UgKwo+ID4+ICsgb3V0X2ZtdC0+c2l6 ZWltYWdlWzBdOwo+ID4+Cj4gPj4gICAgICAgcmV0dXJuIDA7Cj4gPj4gIH0KPiA+PiAtLQo+ID4+ IDIuMzcuMQo+ID4+Cj4gPgo+ID4tLQo+ID5Ub21tYXNvIE1lcmNpYWkKPiA+RW1iZWRkZWQgTGlu dXggRW5naW5lZXIKPiA+dG9tbWFzby5tZXJjaWFpQGFtYXJ1bGFzb2x1dGlvbnMuY29tCj4gPl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+Cj4gPkFtYXJ1bGEgU29sdXRpb25z IFNSTAo+ID5WaWEgTGUgQ2FuZXZhcmUgMzAsIDMxMTAwIFRyZXZpc28sIFZlbmV0bywgSVQgVC4g KzM5IDA0MiAyNDMgNTMxMAo+ID5pbmZvQGFtYXJ1bGFzb2x1dGlvbnMuY29tCj4gPmh0dHBzOi8v ZXVyMDEuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwJTNBJTJGJTJG d3d3LmFtCj4gPmFydWxhc29sdXRpb25zLmNvbSUyRiZhbXA7ZGF0YT0wNSU3QzAxJTdDbWluZy5x aWFuJTQwbnhwLmNvbSU3QzM5Cj4gPjgyYWIyNDdhNTA0M2ZkMWY2NjA4ZGE3YzMyNWUyMSU3QzY4 NmVhMWQzYmMyYjRjNmZhOTJjZDk5YzVjMzAxNjMKPiA+NSU3QzAlN0MwJTdDNjM3OTU4ODUzMDE1 MDAyOTAwJTdDVW5rbm93biU3Q1RXRnBiR1pzYjNkOGV5SlcKPiA+SWpvaU1DNHdMakF3TURBaUxD SlFJam9pVjJsdU16SWlMQ0pCVGlJNklrMWhhV3dpTENKWFZDSTZNbjAlM0QlN0MzMAo+ID4wMCU3 QyU3QyU3QyZhbXA7c2RhdGE9SWcyMGNVQlRzVkFPY1I3Ymx3YlIwbVdyR2hacDdpUVlVTzZaYUg4 Cj4gPkwwMEklM0QmYW1wO3Jlc2VydmVkPTAKCi0tIApUb21tYXNvIE1lcmNpYWkKRW1iZWRkZWQg TGludXggRW5naW5lZXIKdG9tbWFzby5tZXJjaWFpQGFtYXJ1bGFzb2x1dGlvbnMuY29tCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KCkFtYXJ1bGEgU29sdXRpb25zIFNSTApWaWEg TGUgQ2FuZXZhcmUgMzAsIDMxMTAwIFRyZXZpc28sIFZlbmV0bywgSVQKVC4gKzM5IDA0MiAyNDMg NTMxMAppbmZvQGFtYXJ1bGFzb2x1dGlvbnMuY29tCnd3dy5hbWFydWxhc29sdXRpb25zLmNvbQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJt LWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtl cm5lbAo=