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 49C92C761A6 for ; Thu, 30 Mar 2023 14:06:48 +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:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=mvnU+hyz+CfZPi6P1KDcXMz8POcw0zfjTntCvNPe5l0=; b=Y8mTJiCA8wpurV CKlBrvEJUE0kzNc0R7tHp7HBjobskcI2PVdhVRpDxB92rLsL1ITJh9ZT9IFHoTe1oPp5EFN71I1zp H9IEvE03y6lRK9Nx9ArH0aYo81to/RGSH2wrT1cNvbWwZpAOXdDav1YajC5bYQ/1jJ2/PUphR9Gc3 eGRg23hxDM8WiQnb3c/sUr2dTreWL6upUAmUXO1FrnhVBWe5MpZ/dW93uwX8shIB6O5yW5J6S6NIA CbQzWNQQUCp3/K7TzrWDeOfbHwrr4lV608SF1F/bxMK1kY6tJbB3nFxG4v6P9vqb/ZFb2OPwOQcD6 ISIdNl//KVXG4hDVbuig==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1phsvM-003xrI-2L; Thu, 30 Mar 2023 14:06:44 +0000 Received: from mail-io1-xd36.google.com ([2607:f8b0:4864:20::d36]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1phsvH-003xpV-0d; Thu, 30 Mar 2023 14:06:43 +0000 Received: by mail-io1-xd36.google.com with SMTP id d14so8316259ion.9; Thu, 30 Mar 2023 07:06:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680185197; x=1682777197; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=c/E4K44ZeZZYqRKZWo/54gNqfFdiOexAGD/vcXLfhbk=; b=J1/GIeaRA29zVYnImkt+EeaOnfAnGjjhfRddDv28kn32VLilbTz+WyBZWgF5XELFr1 rCMN1DvhhBQoyRvpOwbG8FJN61vjK/sZath5piRSAGgrBJNjBHhSHTlrg8IKEBDntpV3 IbW3iSWuZR7NQ9RxgOBf6NL/S6A6wnLQcpmsTH/FKdkqyMsQv44M2NsdgWheaMNCtlNq oF8mOZRu6lfTLf3gyZwAyfTplxO1xDaSgdz3ewMQmsS0Q8ZqIv6GHlK8qjB0eS8pRV9R Sbpw9c/kO0JtyQ5Crw7Ma68ztwEyfbrdpMe3Lq2EX7u4KuVA90JHOXsCQ6WIJMvNw0e3 wxeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680185197; x=1682777197; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=c/E4K44ZeZZYqRKZWo/54gNqfFdiOexAGD/vcXLfhbk=; b=kuiETd0RD5dgTZVFBrJWE7fciZGsQm1CaTfED3fbIzNpTAWLne+yRO2d6nWuLRFybv a+FpXVBxqrUhwiL3iFVpMqGvG51r1bZttny9rca/TF2H5DXY0r2QOTLYgupULpP91f/L imArgxYTohkBd6NCtWflaUmAfu0raNjCD4SzCKhtlHZB5fRItEQ0Z0yAPecA3x6umjqJ KoWnx5i7xd/iy2iG17b7QcNPhgfNzPNLqdKKKVRbntdCc07Ap5JU8LYRqRZrifDYYQdc gAxAVMff0Qa0hf+n6GzUxxfRmrTkInlSpipt5nXAmGUksvs47k3oH+UTpFL0/7iz1VdU b1UQ== X-Gm-Message-State: AO0yUKVjUezfeswFZ3/rB3juj01g7wDvu+5KsXXaSpad9jSPunu/NzPN ISO38N//8CHLECiqfQIDDSEBfS/cKxpPfaNYdUo= X-Google-Smtp-Source: AK7set/OUR1Lt5wIsEHMVmR/f7VtAT0a4WWdtAvjg+3tOkSu/WxdcLyTVziBmP4/UpP3f6cEpr4GXK0W1km07vkZYco= X-Received: by 2002:a02:2208:0:b0:3ad:65e:e489 with SMTP id o8-20020a022208000000b003ad065ee489mr9762921jao.1.1680185196784; Thu, 30 Mar 2023 07:06:36 -0700 (PDT) MIME-Version: 1.0 References: <20230327121317.4081816-1-arnd@kernel.org> <20230327121317.4081816-22-arnd@kernel.org> In-Reply-To: <20230327121317.4081816-22-arnd@kernel.org> From: "Lad, Prabhakar" Date: Thu, 30 Mar 2023 15:06:10 +0100 Message-ID: Subject: Re: [PATCH 21/21] dma-mapping: replace custom code with generic implementation To: Arnd Bergmann Cc: linux-kernel@vger.kernel.org, Arnd Bergmann , Vineet Gupta , Russell King , Neil Armstrong , Linus Walleij , Catalin Marinas , Will Deacon , Guo Ren , Brian Cain , Geert Uytterhoeven , Michal Simek , Thomas Bogendoerfer , Dinh Nguyen , Stafford Horne , Helge Deller , Michael Ellerman , Christophe Leroy , Paul Walmsley , Palmer Dabbelt , Rich Felker , John Paul Adrian Glaubitz , "David S. Miller" , Max Filippov , Christoph Hellwig , Robin Murphy , Lad Prabhakar , Conor Dooley , linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-oxnas@groups.io, linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-xtensa@linux-xtensa.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230330_070639_248032_1AD99E61 X-CRM114-Status: GOOD ( 41.76 ) X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+linux-snps-arc=archiver.kernel.org@lists.infradead.org T24gTW9uLCBNYXIgMjcsIDIwMjMgYXQgMToyMOKAr1BNIEFybmQgQmVyZ21hbm4gPGFybmRAa2Vy bmVsLm9yZz4gd3JvdGU6Cj4KPiBGcm9tOiBBcm5kIEJlcmdtYW5uIDxhcm5kQGFybmRiLmRlPgo+ Cj4gTm93IHRoYXQgYWxsIG9mIHRoZXNlIGhhdmUgY29uc2lzdGVudCBiZWhhdmlvciwgcmVwbGFj ZSB0aGVtIHdpdGgKPiBhIHNpbmdsZSBzaGFyZWQgaW1wbGVtZW50YXRpb24gb2YgYXJjaF9zeW5j X2RtYV9mb3JfZGV2aWNlKCkgYW5kCj4gYXJjaF9zeW5jX2RtYV9mb3JfY3B1KCkgYW5kIHRocmVl IHBhcmFtZXRlcnMgdG8gcGljayBob3cgdGhleSBzaG91bGQKPiBvcGVyYXRlOgo+Cj4gIC0gSWYg dGhlIENQVSBoYXMgc3BlY3VsYXRpdmUgcHJlZmV0Y2hpbmcsIHRoZW4gdGhlIGNhY2hlCj4gICAg aGFzIHRvIGJlIGludmFsaWRhdGVkIGFmdGVyIGEgdHJhbnNmZXIgZnJvbSB0aGUgZGV2aWNlLgo+ ICAgIE9uIHRoZSByYXJlciBDUFVzIHdpdGhvdXQgcHJlZmV0Y2hpbmcsIHRoaXMgY2FuIGJlIHNr aXBwZWQsCj4gICAgd2l0aCBhbGwgY2FjaGUgbWFuYWdlbWVudCBoYXBwZW5pbmcgYmVmb3JlIHRo ZSB0cmFuc2Zlci4KPiAgICBUaGlzIGZsYWcgY2FuIGJlIHJ1bnRpbWUgZGV0ZWN0ZWQsIGJ1dCBp cyB1c3VhbGx5IGZpeGVkCj4gICAgcGVyIGFyY2hpdGVjdHVyZS4KPgo+ICAtIFNvbWUgYXJjaGl0 ZWN0dXJlcyBjdXJyZW50bHkgY2xlYW4gdGhlIGNhY2hlcyBiZWZvcmUgRE1BCj4gICAgZnJvbSBh IGRldmljZSwgd2hpbGUgb3RoZXJzIGludmFsaWRhdGUgaXQuIFRoZXJlIGhhcyBub3QKPiAgICBi ZWVuIGEgY29uY2x1c2lvbiByZWdhcmRpbmcgd2hldGhlciB3ZSBzaG91bGQgY2hhbmdlIGFsbAo+ ICAgIGFyY2hpdGVjdHVyZXMgdG8gdXNlIGNsZWFuIGluc3RlYWQsIHNvIHRoaXMgYWRkcyBhbgo+ ICAgIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBmbGFnIHRoYXQgd2UgY2FuIGNoYW5nZSBsYXRlciBv bi4KPgo+ICAtIE9uIDMyLWJpdCBBcm0sIHRoZSBhcmNoX3N5bmNfZG1hX2Zvcl9jcHUoKSBmdW5j dGlvbiBrZWVwcwo+ICAgIHRyYWNrIHBhZ2VzIHRoYXQgYXJlIG1hcmtlZCBjbGVhbiBpbiB0aGUg cGFnZSBjYWNoZSwgdG8KPiAgICBhdm9pZCBmbHVzaGluZyB0aGVtIGFnYWluLiBUaGUgaW1wbGVt ZW50YXRpb24gZm9yIHRoaXMgaXMKPiAgICBnZW5lcmljIGVub3VnaCB0byB3b3JrIG9uIGFsbCBh cmNoaXRlY3R1cmVzIHRoYXQgdXNlIHRoZQo+ICAgIFBHX2RjYWNoZV9jbGVhbiBwYWdlIGZsYWcs IGJ1dCBhIEtjb25maWcgc3ltYm9sIGlzIHVzZWQKPiAgICB0byBvbmx5IGVuYWJsZSBpdCBvbiBB cm0gdG8gcHJlc2VydmUgdGhlIGV4aXN0aW5nIGJlaGF2aW9yLgo+Cj4gRm9yIHRoZSBmdW5jdGlv biBuYW1pbmcsIEkgcGlja2VkICd3YmFjaycgb3ZlciAnY2xlYW4nLCBhbmQgJ3diYWNrX2ludicK PiBvdmVyICdmbHVzaCcsIHRvIGF2b2lkIGFueSBhbWJpZ3VpdHkgb2Ygd2hhdCB0aGUgaGVscGVy IGZ1bmN0aW9ucyBhcmUKPiBzdXBwb3NlZCB0byBkby4KPgo+IE1vdmluZyB0aGUgZ2xvYmFsIGZ1 bmN0aW9ucyBpbnRvIGEgaGVhZGVyIGZpbGUgaXMgdXN1YWxseSBhIGJhZCBpZGVhCj4gYXMgaXQg cHJldmVudHMgdGhlIGhlYWRlciBmcm9tIGJlaW5nIGluY2x1ZGVkIG1vcmUgdGhhbiBvbmNlLCBi dXQgaXQKPiBoZWxwcyBrZWVwIHRoZSBiZWhhdmlvciBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB0 aGUgcHJldmlvdXMgc3RhdGUsCj4gaW5jbHVkaW5nIHRoZSBwb3NzaWJpbGl0eSBvZiBpbmxpbmlu ZyBtb3N0IG9mIGl0IGludG8gdGhlc2UgZnVuY3Rpb25zCj4gd2hlcmUgdGhhdCB3YXMgZG9uZSBi ZWZvcmUuIFRoaXMgYWxzbyBoZWxwcyBrZWVwIHRoZSBnbG9iYWwgbmFtZXNwYWNlCj4gY2xlYW4s IGJ5IGhpZGluZyB0aGUgbmV3IGFyY2hfZG1hX2NhY2hle193YmFjayxfaW52LF93YmFja19pbnZ9 IGZyb20KPiBkZXZpY2UgZHJpdmVycyB0aGF0IG1pZ2h0IHVzZSB0aGVtIGluY29ycmVjdGx5Lgo+ Cj4gSXQgd291bGQgYmUgcG9zc2libGUgdG8gZG8gdGhpcyBvbmUgYXJjaGl0ZWN0dXJlIGF0IGEg dGltZSwgYnV0Cj4gYXMgdGhlIGNoYW5nZSBpcyB0aGUgc2FtZSBldmVyeXdoZXJlLCB0aGUgY29t YmluZWQgcGF0Y2ggaGVscHMKPiBleHBsYWluIGl0IGJldHRlciBvbmNlLgo+Cj4gU2lnbmVkLW9m Zi1ieTogQXJuZCBCZXJnbWFubiA8YXJuZEBhcm5kYi5kZT4KPiAtLS0KPiAgYXJjaC9hcmMvbW0v ZG1hLmMgICAgICAgICAgICAgICAgIHwgIDY2ICsrKysrLS0tLS0tLS0tLS0tLQo+ICBhcmNoL2Fy bS9LY29uZmlnICAgICAgICAgICAgICAgICAgfCAgIDMgKwo+ICBhcmNoL2FybS9tbS9kbWEtbWFw cGluZy1ub21tdS5jICAgfCAgMzkgKysrKysrLS0tLS0KPiAgYXJjaC9hcm0vbW0vZG1hLW1hcHBp bmcuYyAgICAgICAgIHwgIDY0ICsrKysrKystLS0tLS0tLS0tLQo+ICBhcmNoL2FybTY0L21tL2Rt YS1tYXBwaW5nLmMgICAgICAgfCAgMjggKysrKystLS0KPiAgYXJjaC9jc2t5L21tL2RtYS1tYXBw aW5nLmMgICAgICAgIHwgIDQ0ICsrKysrKy0tLS0tLQo+ICBhcmNoL2hleGFnb24va2VybmVsL2Rt YS5jICAgICAgICAgfCAgNDQgKysrKysrLS0tLS0tCj4gIGFyY2gvbTY4ay9rZXJuZWwvZG1hLmMg ICAgICAgICAgICB8ICA0MyArKysrKysrLS0tLS0KPiAgYXJjaC9taWNyb2JsYXplL2tlcm5lbC9k bWEuYyAgICAgIHwgIDQ4ICsrKysrKystLS0tLS0tCj4gIGFyY2gvbWlwcy9tbS9kbWEtbm9uY29o ZXJlbnQuYyAgICB8ICA2MCArKysrKysrLS0tLS0tLS0tLQo+ICBhcmNoL25pb3MyL21tL2RtYS1t YXBwaW5nLmMgICAgICAgfCAgNTcgKysrKysrKy0tLS0tLS0tLQo+ICBhcmNoL29wZW5yaXNjL2tl cm5lbC9kbWEuYyAgICAgICAgfCAgNjMgKysrKysrKysrKystLS0tLS0tCj4gIGFyY2gvcGFyaXNj L2tlcm5lbC9wY2ktZG1hLmMgICAgICB8ICA0NiArKysrKystLS0tLS0tCj4gIGFyY2gvcG93ZXJw Yy9tbS9kbWEtbm9uY29oZXJlbnQuYyB8ICAzNCArKysrKystLS0tCj4gIGFyY2gvcmlzY3YvbW0v ZG1hLW5vbmNvaGVyZW50LmMgICB8ICA1MSArKysrKysrLS0tLS0tLQo+ICBhcmNoL3NoL2tlcm5l bC9kbWEtY29oZXJlbnQuYyAgICAgfCAgNDMgKysrKysrKy0tLS0tCj4gIGFyY2gvc3BhcmMva2Vy bmVsL2lvcG9ydC5jICAgICAgICB8ICAzOCArKysrKysrKy0tLQo+ICBhcmNoL3h0ZW5zYS9rZXJu ZWwvcGNpLWRtYS5jICAgICAgfCAgNDAgKysrKysrLS0tLS0KPiAgaW5jbHVkZS9saW51eC9kbWEt c3luYy5oICAgICAgICAgIHwgMTA3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAx OSBmaWxlcyBjaGFuZ2VkLCA1MjcgaW5zZXJ0aW9ucygrKSwgMzkxIGRlbGV0aW9ucygtKQo+ICBj cmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC9kbWEtc3luYy5oCj4KSSB0ZXN0ZWQgdGhp cyBvbiBSWi9GaXZlICh3aXRoIG15IHY2IFswXSArIGFkZGl0aW9uYWwgY2hhbmdlcykgc28gZm9y IFJJU0MtViwKClJldmlld2VkLWJ5OiBMYWQgUHJhYmhha2FyIDxwcmFiaGFrYXIubWFoYWRldi1s YWQucmpAYnAucmVuZXNhcy5jb20+ClRlc3RlZC1ieTogTGFkIFByYWJoYWthciA8cHJhYmhha2Fy Lm1haGFkZXYtbGFkLnJqQGJwLnJlbmVzYXMuY29tPgoKWzBdIGh0dHBzOi8vcGF0Y2h3b3JrLmtl cm5lbC5vcmcvcHJvamVjdC9saW51eC1yZW5lc2FzLXNvYy9jb3Zlci8yMDIzMDEwNjE4NTUyNi4y NjAxNjMtMS1wcmFiaGFrYXIubWFoYWRldi1sYWQucmpAYnAucmVuZXNhcy5jb20vCgpDaGVlcnMs ClByYWJoYWthcgoKPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcmMvbW0vZG1hLmMgYi9hcmNoL2FyYy9t bS9kbWEuYwo+IGluZGV4IGRkYjk2Nzg2Zjc2NS4uNjFjZDAxNjQ2MjIyIDEwMDY0NAo+IC0tLSBh L2FyY2gvYXJjL21tL2RtYS5jCj4gKysrIGIvYXJjaC9hcmMvbW0vZG1hLmMKPiBAQCAtMzAsNjMg KzMwLDMzIEBAIHZvaWQgYXJjaF9kbWFfcHJlcF9jb2hlcmVudChzdHJ1Y3QgcGFnZSAqcGFnZSwg c2l6ZV90IHNpemUpCj4gICAgICAgICBkbWFfY2FjaGVfd2JhY2tfaW52KHBhZ2VfdG9fcGh5cyhw YWdlKSwgc2l6ZSk7Cj4gIH0KPgo+IC0vKgo+IC0gKiBDYWNoZSBvcGVyYXRpb25zIGRlcGVuZGlu ZyBvbiBmdW5jdGlvbiBhbmQgZGlyZWN0aW9uIGFyZ3VtZW50LCBpbnNwaXJlZCBieQo+IC0gKiBo dHRwczovL2xvcmUua2VybmVsLm9yZy9sa21sLzIwMTgwNTE4MTc1MDA0LkdGMTc2NzFAbjIxMDAu YXJtbGludXgub3JnLnVrCj4gLSAqICJkbWFfc3luY18qX2Zvcl9jcHUgYW5kIGRpcmVjdGlvbj1U T19ERVZJQ0UgKHdhcyBSZTogW1BBVENIIDAyLzIwXQo+IC0gKiBkbWEtbWFwcGluZzogcHJvdmlk ZSBhIGdlbmVyaWMgZG1hLW5vbmNvaGVyZW50IGltcGxlbWVudGF0aW9uKSIKPiAtICoKPiAtICog ICAgICAgICAgfCAgIG1hcCAgICAgICAgICA9PSAgZm9yX2RldmljZSAgICAgfCAgIHVubWFwICAg ICA9PSAgZm9yX2NwdQo+IC0gKiAgICAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0gKiBUT19ERVYgICB8ICAg d3JpdGViYWNrICAgICAgICB3cml0ZWJhY2sgICAgICB8ICAgbm9uZSAgICAgICAgICBub25lCj4g LSAqIEZST01fREVWIHwgICBpbnZhbGlkYXRlICAgICAgIGludmFsaWRhdGUgICAgIHwgICBpbnZh bGlkYXRlKiAgIGludmFsaWRhdGUqCj4gLSAqIEJJRElSICAgIHwgICB3cml0ZWJhY2sgICAgICAg IHdyaXRlYmFjayAgICAgIHwgICBpbnZhbGlkYXRlICAgIGludmFsaWRhdGUKPiAtICoKPiAtICog ICAgIFsqXSBuZWVkZWQgZm9yIENQVSBzcGVjdWxhdGl2ZSBwcmVmZXRjaGVzCj4gLSAqCj4gLSAq IE5PVEU6IHdlIGRvbid0IGNoZWNrIHRoZSB2YWxpZGl0eSBvZiBkaXJlY3Rpb24gYXJndW1lbnQg YXMgaXQgaXMgZG9uZSBpbgo+IC0gKiB1cHBlciBsYXllciBmdW5jdGlvbnMgKGluIGluY2x1ZGUv bGludXgvZG1hLW1hcHBpbmcuaCkKPiAtICovCj4gLQo+IC12b2lkIGFyY2hfc3luY19kbWFfZm9y X2RldmljZShwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUsCj4gLSAgICAgICAgICAgICAg IGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKPiArc3RhdGljIGlubGluZSB2b2lkIGFyY2hf ZG1hX2NhY2hlX3diYWNrKHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSkKPiAgewo+IC0g ICAgICAgc3dpdGNoIChkaXIpIHsKPiAtICAgICAgIGNhc2UgRE1BX1RPX0RFVklDRToKPiAtICAg ICAgICAgICAgICAgZG1hX2NhY2hlX3diYWNrKHBhZGRyLCBzaXplKTsKPiAtICAgICAgICAgICAg ICAgYnJlYWs7Cj4gLQo+IC0gICAgICAgY2FzZSBETUFfRlJPTV9ERVZJQ0U6Cj4gLSAgICAgICAg ICAgICAgIGRtYV9jYWNoZV9pbnYocGFkZHIsIHNpemUpOwo+IC0gICAgICAgICAgICAgICBicmVh azsKPiAtCj4gLSAgICAgICBjYXNlIERNQV9CSURJUkVDVElPTkFMOgo+IC0gICAgICAgICAgICAg ICBkbWFfY2FjaGVfd2JhY2socGFkZHIsIHNpemUpOwo+IC0gICAgICAgICAgICAgICBicmVhazsK PiArICAgICAgIGRtYV9jYWNoZV93YmFjayhwYWRkciwgc2l6ZSk7Cj4gK30KPgo+IC0gICAgICAg ZGVmYXVsdDoKPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICB9Cj4gK3N0YXRpYyBp bmxpbmUgdm9pZCBhcmNoX2RtYV9jYWNoZV9pbnYocGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBz aXplKQo+ICt7Cj4gKyAgICAgICBkbWFfY2FjaGVfaW52KHBhZGRyLCBzaXplKTsKPiAgfQo+Cj4g LXZvaWQgYXJjaF9zeW5jX2RtYV9mb3JfY3B1KHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6 ZSwKPiAtICAgICAgICAgICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQo+ICtzdGF0 aWMgaW5saW5lIHZvaWQgYXJjaF9kbWFfY2FjaGVfd2JhY2tfaW52KHBoeXNfYWRkcl90IHBhZGRy LCBzaXplX3Qgc2l6ZSkKPiAgewo+IC0gICAgICAgc3dpdGNoIChkaXIpIHsKPiAtICAgICAgIGNh c2UgRE1BX1RPX0RFVklDRToKPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBkbWFf Y2FjaGVfd2JhY2tfaW52KHBhZGRyLCBzaXplKTsKPiArfQo+Cj4gLSAgICAgICAvKiBGUk9NX0RF VklDRSBpbnZhbGlkYXRlIG5lZWRlZCBpZiBzcGVjdWxhdGl2ZSBDUFUgcHJlZmV0Y2ggb25seSAq Lwo+IC0gICAgICAgY2FzZSBETUFfRlJPTV9ERVZJQ0U6Cj4gLSAgICAgICBjYXNlIERNQV9CSURJ UkVDVElPTkFMOgo+IC0gICAgICAgICAgICAgICBkbWFfY2FjaGVfaW52KHBhZGRyLCBzaXplKTsK PiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX3N5bmNf ZG1hX2NsZWFuX2JlZm9yZV9mcm9tZGV2aWNlKHZvaWQpCj4gK3sKPiArICAgICAgIHJldHVybiBm YWxzZTsKPiArfQo+Cj4gLSAgICAgICBkZWZhdWx0Ogo+IC0gICAgICAgICAgICAgICBicmVhazsK PiAtICAgICAgIH0KPiArc3RhdGljIGlubGluZSBib29sIGFyY2hfc3luY19kbWFfY3B1X25lZWRz X3Bvc3RfZG1hX2ZsdXNoKHZvaWQpCj4gK3sKPiArICAgICAgIHJldHVybiB0cnVlOwo+ICB9Cj4K PiArI2luY2x1ZGUgPGxpbnV4L2RtYS1zeW5jLmg+Cj4gKwo+ICAvKgo+ICAgKiBQbHVnIGluIGRp cmVjdCBkbWEgbWFwIG9wcy4KPiAgICovCj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL0tjb25maWcg Yi9hcmNoL2FybS9LY29uZmlnCj4gaW5kZXggMTI1ZDU4YzU0YWIxLi4wZGU4NGU4NjEwMjcgMTAw NjQ0Cj4gLS0tIGEvYXJjaC9hcm0vS2NvbmZpZwo+ICsrKyBiL2FyY2gvYXJtL0tjb25maWcKPiBA QCAtMjEyLDYgKzIxMiw5IEBAIGNvbmZpZyBMT0NLREVQX1NVUFBPUlQKPiAgICAgICAgIGJvb2wK PiAgICAgICAgIGRlZmF1bHQgeQo+Cj4gK2NvbmZpZyBBUkNIX0RNQV9NQVJLX0RDQUNIRV9DTEVB Tgo+ICsgICAgICAgZGVmX2Jvb2wgeQo+ICsKPiAgY29uZmlnIEFSQ0hfSEFTX0lMT0cyX1UzMgo+ ICAgICAgICAgYm9vbAo+Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL2RtYS1tYXBwaW5nLW5v bW11LmMgYi9hcmNoL2FybS9tbS9kbWEtbWFwcGluZy1ub21tdS5jCj4gaW5kZXggMTJiNWM2YWU5 M2ZjLi4wODE3Mjc0YWVkMTUgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmct bm9tbXUuYwo+ICsrKyBiL2FyY2gvYXJtL21tL2RtYS1tYXBwaW5nLW5vbW11LmMKPiBAQCAtMTMs MjcgKzEzLDM2IEBACj4KPiAgI2luY2x1ZGUgImRtYS5oIgo+Cj4gLXZvaWQgYXJjaF9zeW5jX2Rt YV9mb3JfZGV2aWNlKHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSwKPiAtICAgICAgICAg ICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQg YXJjaF9kbWFfY2FjaGVfd2JhY2socGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplKQo+ICB7 Cj4gLSAgICAgICBpZiAoZGlyID09IERNQV9GUk9NX0RFVklDRSkgewo+IC0gICAgICAgICAgICAg ICBkbWFjX2ludl9yYW5nZShfX3ZhKHBhZGRyKSwgX192YShwYWRkciArIHNpemUpKTsKPiAtICAg ICAgICAgICAgICAgb3V0ZXJfaW52X3JhbmdlKHBhZGRyLCBwYWRkciArIHNpemUpOwo+IC0gICAg ICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAgICAgZG1hY19jbGVhbl9yYW5nZShfX3ZhKHBhZGRy KSwgX192YShwYWRkciArIHNpemUpKTsKPiAtICAgICAgICAgICAgICAgb3V0ZXJfY2xlYW5fcmFu Z2UocGFkZHIsIHBhZGRyICsgc2l6ZSk7Cj4gLSAgICAgICB9Cj4gKyAgICAgICBkbWFjX2NsZWFu X3JhbmdlKF9fdmEocGFkZHIpLCBfX3ZhKHBhZGRyICsgc2l6ZSkpOwo+ICsgICAgICAgb3V0ZXJf Y2xlYW5fcmFuZ2UocGFkZHIsIHBhZGRyICsgc2l6ZSk7Cj4gIH0KPgo+IC12b2lkIGFyY2hfc3lu Y19kbWFfZm9yX2NwdShwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUsCj4gLSAgICAgICAg ICAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKPiArc3RhdGljIGlubGluZSB2b2lk IGFyY2hfZG1hX2NhY2hlX2ludihwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUpCj4gIHsK PiAtICAgICAgIGlmIChkaXIgIT0gRE1BX1RPX0RFVklDRSkgewo+IC0gICAgICAgICAgICAgICBv dXRlcl9pbnZfcmFuZ2UocGFkZHIsIHBhZGRyICsgc2l6ZSk7Cj4gLSAgICAgICAgICAgICAgIGRt YWNfaW52X3JhbmdlKF9fdmEocGFkZHIpLCBfX3ZhKHBhZGRyKSk7Cj4gLSAgICAgICB9Cj4gKyAg ICAgICBkbWFjX2ludl9yYW5nZShfX3ZhKHBhZGRyKSwgX192YShwYWRkciArIHNpemUpKTsKPiAr ICAgICAgIG91dGVyX2ludl9yYW5nZShwYWRkciwgcGFkZHIgKyBzaXplKTsKPiAgfQo+Cj4gK3N0 YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2RtYV9jYWNoZV93YmFja19pbnYocGh5c19hZGRyX3QgcGFk ZHIsIHNpemVfdCBzaXplKQo+ICt7Cj4gKyAgICAgICBkbWFjX2ZsdXNoX3JhbmdlKF9fdmEocGFk ZHIpLCBfX3ZhKHBhZGRyICsgc2l6ZSkpOwo+ICsgICAgICAgb3V0ZXJfZmx1c2hfcmFuZ2UocGFk ZHIsIHBhZGRyICsgc2l6ZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX3N5 bmNfZG1hX2NsZWFuX2JlZm9yZV9mcm9tZGV2aWNlKHZvaWQpCj4gK3sKPiArICAgICAgIHJldHVy biBmYWxzZTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBib29sIGFyY2hfc3luY19kbWFfY3B1 X25lZWRzX3Bvc3RfZG1hX2ZsdXNoKHZvaWQpCj4gK3sKPiArICAgICAgIHJldHVybiB0cnVlOwo+ ICt9Cj4gKwo+ICsjaW5jbHVkZSA8bGludXgvZG1hLXN5bmMuaD4KPiArCj4gIHZvaWQgYXJjaF9z ZXR1cF9kbWFfb3BzKHN0cnVjdCBkZXZpY2UgKmRldiwgdTY0IGRtYV9iYXNlLCB1NjQgc2l6ZSwK PiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaW9tbXVfb3BzICppb21tdSwg Ym9vbCBjb2hlcmVudCkKPiAgewo+IGRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9kbWEtbWFwcGlu Zy5jIGIvYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYwo+IGluZGV4IGI3MDNjYjgzZDI3ZS4uYWE2 ZWU4MjBhMGFiIDEwMDY0NAo+IC0tLSBhL2FyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMKPiArKysg Yi9hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jCj4gQEAgLTY4Nyw2ICs2ODcsMzAgQEAgdm9pZCBh cmNoX2RtYV9tYXJrX2NsZWFuKHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSkKPiAgICAg ICAgIH0KPiAgfQo+Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2RtYV9jYWNoZV93YmFjayhw aHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUpCj4gK3sKPiArICAgICAgIGRtYV9jYWNoZV9t YWludChwYWRkciwgc2l6ZSwgZG1hY19jbGVhbl9yYW5nZSk7Cj4gKyAgICAgICBvdXRlcl9jbGVh bl9yYW5nZShwYWRkciwgcGFkZHIgKyBzaXplKTsKPiArfQo+ICsKPiArCj4gK3N0YXRpYyBpbmxp bmUgdm9pZCBhcmNoX2RtYV9jYWNoZV9pbnYocGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXpl KQo+ICt7Cj4gKyAgICAgICBkbWFfY2FjaGVfbWFpbnQocGFkZHIsIHNpemUsIGRtYWNfaW52X3Jh bmdlKTsKPiArICAgICAgIG91dGVyX2ludl9yYW5nZShwYWRkciwgcGFkZHIgKyBzaXplKTsKPiAr fQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIGFyY2hfZG1hX2NhY2hlX3diYWNrX2ludihwaHlz X2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUpCj4gK3sKPiArICAgICAgIGRtYV9jYWNoZV9tYWlu dChwYWRkciwgc2l6ZSwgZG1hY19mbHVzaF9yYW5nZSk7Cj4gKyAgICAgICBvdXRlcl9mbHVzaF9y YW5nZShwYWRkciwgcGFkZHIgKyBzaXplKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBib29s IGFyY2hfc3luY19kbWFfY2xlYW5fYmVmb3JlX2Zyb21kZXZpY2Uodm9pZCkKPiArewo+ICsgICAg ICAgcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICBzdGF0aWMgYm9vbCBhcmNoX3N5bmNfZG1hX2Nw dV9uZWVkc19wb3N0X2RtYV9mbHVzaCh2b2lkKQo+ICB7Cj4gICAgICAgICBpZiAoSVNfRU5BQkxF RChDT05GSUdfQ1BVX1Y2KSB8fAo+IEBAIC02OTksNDUgKzcyMyw3IEBAIHN0YXRpYyBib29sIGFy Y2hfc3luY19kbWFfY3B1X25lZWRzX3Bvc3RfZG1hX2ZsdXNoKHZvaWQpCj4gICAgICAgICByZXR1 cm4gZmFsc2U7Cj4gIH0KPgo+IC0vKgo+IC0gKiBNYWtlIGFuIGFyZWEgY29uc2lzdGVudCBmb3Ig ZGV2aWNlcy4KPiAtICogTm90ZTogRHJpdmVycyBzaG91bGQgTk9UIHVzZSB0aGlzIGZ1bmN0aW9u IGRpcmVjdGx5Lgo+IC0gKiBVc2UgdGhlIGRyaXZlciBETUEgc3VwcG9ydCAtIHNlZSBkbWEtbWFw cGluZy5oIChkbWFfc3luY18qKQo+IC0gKi8KPiAtdm9pZCBhcmNoX3N5bmNfZG1hX2Zvcl9kZXZp Y2UocGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplLAo+IC0gICAgICAgICAgICAgICBlbnVt IGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCj4gLXsKPiAtICAgICAgIHN3aXRjaCAoZGlyKSB7Cj4g LSAgICAgICBjYXNlIERNQV9UT19ERVZJQ0U6Cj4gLSAgICAgICAgICAgICAgIGRtYV9jYWNoZV9t YWludChwYWRkciwgc2l6ZSwgZG1hY19jbGVhbl9yYW5nZSk7Cj4gLSAgICAgICAgICAgICAgIG91 dGVyX2NsZWFuX3JhbmdlKHBhZGRyLCBwYWRkciArIHNpemUpOwo+IC0gICAgICAgICAgICAgICBi cmVhazsKPiAtICAgICAgIGNhc2UgRE1BX0ZST01fREVWSUNFOgo+IC0gICAgICAgICAgICAgICBk bWFfY2FjaGVfbWFpbnQocGFkZHIsIHNpemUsIGRtYWNfaW52X3JhbmdlKTsKPiAtICAgICAgICAg ICAgICAgb3V0ZXJfaW52X3JhbmdlKHBhZGRyLCBwYWRkciArIHNpemUpOwo+IC0gICAgICAgICAg ICAgICBicmVhazsKPiAtICAgICAgIGNhc2UgRE1BX0JJRElSRUNUSU9OQUw6Cj4gLSAgICAgICAg ICAgICAgIGlmIChhcmNoX3N5bmNfZG1hX2NwdV9uZWVkc19wb3N0X2RtYV9mbHVzaCgpKSB7Cj4g LSAgICAgICAgICAgICAgICAgICAgICAgZG1hX2NhY2hlX21haW50KHBhZGRyLCBzaXplLCBkbWFj X2NsZWFuX3JhbmdlKTsKPiAtICAgICAgICAgICAgICAgICAgICAgICBvdXRlcl9jbGVhbl9yYW5n ZShwYWRkciwgcGFkZHIgKyBzaXplKTsKPiAtICAgICAgICAgICAgICAgfSBlbHNlIHsKPiAtICAg ICAgICAgICAgICAgICAgICAgICBkbWFfY2FjaGVfbWFpbnQocGFkZHIsIHNpemUsIGRtYWNfZmx1 c2hfcmFuZ2UpOwo+IC0gICAgICAgICAgICAgICAgICAgICAgIG91dGVyX2ZsdXNoX3JhbmdlKHBh ZGRyLCBwYWRkciArIHNpemUpOwo+IC0gICAgICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgICAg IGJyZWFrOwo+IC0gICAgICAgZGVmYXVsdDoKPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAg ICAgICB9Cj4gLX0KPiAtCj4gLXZvaWQgYXJjaF9zeW5jX2RtYV9mb3JfY3B1KHBoeXNfYWRkcl90 IHBhZGRyLCBzaXplX3Qgc2l6ZSwKPiAtICAgICAgICAgICAgICAgZW51bSBkbWFfZGF0YV9kaXJl Y3Rpb24gZGlyKQo+IC17Cj4gLSAgICAgICBpZiAoZGlyICE9IERNQV9UT19ERVZJQ0UgJiYgYXJj aF9zeW5jX2RtYV9jcHVfbmVlZHNfcG9zdF9kbWFfZmx1c2goKSkgewo+IC0gICAgICAgICAgICAg ICBvdXRlcl9pbnZfcmFuZ2UocGFkZHIsIHBhZGRyICsgc2l6ZSk7Cj4gLSAgICAgICAgICAgICAg IGRtYV9jYWNoZV9tYWludChwYWRkciwgc2l6ZSwgZG1hY19pbnZfcmFuZ2UpOwo+IC0gICAgICAg fQo+IC19Cj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtc3luYy5oPgo+Cj4gICNpZmRlZiBDT05GSUdf QVJNX0RNQV9VU0VfSU9NTVUKPgo+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L21tL2RtYS1tYXBw aW5nLmMgYi9hcmNoL2FybTY0L21tL2RtYS1tYXBwaW5nLmMKPiBpbmRleCA1MjQwZjZhY2FkNjQu LmJhZTc0MWFhNjVlOSAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybTY0L21tL2RtYS1tYXBwaW5nLmMK PiArKysgYi9hcmNoL2FybTY0L21tL2RtYS1tYXBwaW5nLmMKPiBAQCAtMTMsMjUgKzEzLDMzIEBA Cj4gICNpbmNsdWRlIDxhc20vY2FjaGVmbHVzaC5oPgo+ICAjaW5jbHVkZSA8YXNtL3hlbi94ZW4t b3BzLmg+Cj4KPiAtdm9pZCBhcmNoX3N5bmNfZG1hX2Zvcl9kZXZpY2UocGh5c19hZGRyX3QgcGFk ZHIsIHNpemVfdCBzaXplLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gZG1h X2RhdGFfZGlyZWN0aW9uIGRpcikKPiArc3RhdGljIGlubGluZSB2b2lkIGFyY2hfZG1hX2NhY2hl X3diYWNrKHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSkKPiAgewo+IC0gICAgICAgdW5z aWduZWQgbG9uZyBzdGFydCA9ICh1bnNpZ25lZCBsb25nKXBoeXNfdG9fdmlydChwYWRkcik7Cj4g KyAgICAgICBkY2FjaGVfY2xlYW5fcG9jKHBhZGRyLCBwYWRkciArIHNpemUpOwo+ICt9Cj4KPiAt ICAgICAgIGRjYWNoZV9jbGVhbl9wb2Moc3RhcnQsIHN0YXJ0ICsgc2l6ZSk7Cj4gK3N0YXRpYyBp bmxpbmUgdm9pZCBhcmNoX2RtYV9jYWNoZV9pbnYocGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBz aXplKQo+ICt7Cj4gKyAgICAgICBkY2FjaGVfaW52YWxfcG9jKHBhZGRyLCBwYWRkciArIHNpemUp Owo+ICB9Cj4KPiAtdm9pZCBhcmNoX3N5bmNfZG1hX2Zvcl9jcHUocGh5c19hZGRyX3QgcGFkZHIs IHNpemVfdCBzaXplLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gZG1hX2RhdGFf ZGlyZWN0aW9uIGRpcikKPiArc3RhdGljIGlubGluZSB2b2lkIGFyY2hfZG1hX2NhY2hlX3diYWNr X2ludihwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUpCj4gIHsKPiAtICAgICAgIHVuc2ln bmVkIGxvbmcgc3RhcnQgPSAodW5zaWduZWQgbG9uZylwaHlzX3RvX3ZpcnQocGFkZHIpOwo+ICsg ICAgICAgZGNhY2hlX2NsZWFuX2ludmFsX3BvYyhwYWRkciwgcGFkZHIgKyBzaXplKTsKPiArfQo+ Cj4gLSAgICAgICBpZiAoZGlyID09IERNQV9UT19ERVZJQ0UpCj4gLSAgICAgICAgICAgICAgIHJl dHVybjsKPiArc3RhdGljIGlubGluZSBib29sIGFyY2hfc3luY19kbWFfY2xlYW5fYmVmb3JlX2Zy b21kZXZpY2Uodm9pZCkKPiArewo+ICsgICAgICAgcmV0dXJuIHRydWU7Cj4gK30KPgo+IC0gICAg ICAgZGNhY2hlX2ludmFsX3BvYyhzdGFydCwgc3RhcnQgKyBzaXplKTsKPiArc3RhdGljIGlubGlu ZSBib29sIGFyY2hfc3luY19kbWFfY3B1X25lZWRzX3Bvc3RfZG1hX2ZsdXNoKHZvaWQpCj4gK3sK PiArICAgICAgIHJldHVybiB0cnVlOwo+ICB9Cj4KPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1zeW5j Lmg+Cj4gKwo+ICB2b2lkIGFyY2hfZG1hX3ByZXBfY29oZXJlbnQoc3RydWN0IHBhZ2UgKnBhZ2Us IHNpemVfdCBzaXplKQo+ICB7Cj4gICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0ID0gKHVuc2ln bmVkIGxvbmcpcGFnZV9hZGRyZXNzKHBhZ2UpOwo+IGRpZmYgLS1naXQgYS9hcmNoL2Nza3kvbW0v ZG1hLW1hcHBpbmcuYyBiL2FyY2gvY3NreS9tbS9kbWEtbWFwcGluZy5jCj4gaW5kZXggYzkwZjkx MmUyODIyLi45NDAyZTEwMWIzNjMgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9jc2t5L21tL2RtYS1tYXBw aW5nLmMKPiArKysgYi9hcmNoL2Nza3kvbW0vZG1hLW1hcHBpbmcuYwo+IEBAIC01NSwzMSArNTUs MjkgQEAgdm9pZCBhcmNoX2RtYV9wcmVwX2NvaGVyZW50KHN0cnVjdCBwYWdlICpwYWdlLCBzaXpl X3Qgc2l6ZSkKPiAgICAgICAgIGNhY2hlX29wKHBhZ2VfdG9fcGh5cyhwYWdlKSwgc2l6ZSwgZG1h X3diaW52X3NldF96ZXJvX3JhbmdlKTsKPiAgfQo+Cj4gLXZvaWQgYXJjaF9zeW5jX2RtYV9mb3Jf ZGV2aWNlKHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSwKPiAtICAgICAgICAgICAgICAg ZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9k bWFfY2FjaGVfd2JhY2socGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplKQo+ICB7Cj4gLSAg ICAgICBzd2l0Y2ggKGRpcikgewo+IC0gICAgICAgY2FzZSBETUFfVE9fREVWSUNFOgo+IC0gICAg ICAgY2FzZSBETUFfRlJPTV9ERVZJQ0U6Cj4gLSAgICAgICBjYXNlIERNQV9CSURJUkVDVElPTkFM Ogo+IC0gICAgICAgICAgICAgICBjYWNoZV9vcChwYWRkciwgc2l6ZSwgZG1hX3diX3JhbmdlKTsK PiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICBkZWZhdWx0Ogo+IC0gICAgICAgICAg ICAgICBCVUcoKTsKPiAtICAgICAgIH0KPiArICAgICAgIGNhY2hlX29wKHBhZGRyLCBzaXplLCBk bWFfd2JfcmFuZ2UpOwo+ICB9Cj4KPiAtdm9pZCBhcmNoX3N5bmNfZG1hX2Zvcl9jcHUocGh5c19h ZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplLAo+IC0gICAgICAgICAgICAgICBlbnVtIGRtYV9kYXRh X2RpcmVjdGlvbiBkaXIpCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2RtYV9jYWNoZV9pbnYo cGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplKQo+ICB7Cj4gLSAgICAgICBzd2l0Y2ggKGRp cikgewo+IC0gICAgICAgY2FzZSBETUFfVE9fREVWSUNFOgo+IC0gICAgICAgICAgICAgICByZXR1 cm47Cj4gLSAgICAgICBjYXNlIERNQV9GUk9NX0RFVklDRToKPiAtICAgICAgIGNhc2UgRE1BX0JJ RElSRUNUSU9OQUw6Cj4gLSAgICAgICAgICAgICAgIGNhY2hlX29wKHBhZGRyLCBzaXplLCBkbWFf aW52X3JhbmdlKTsKPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICBkZWZhdWx0Ogo+ IC0gICAgICAgICAgICAgICBCVUcoKTsKPiAtICAgICAgIH0KPiArICAgICAgIGNhY2hlX29wKHBh ZGRyLCBzaXplLCBkbWFfaW52X3JhbmdlKTsKPiAgfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lk IGFyY2hfZG1hX2NhY2hlX3diYWNrX2ludihwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUp Cj4gK3sKPiArICAgICAgIGNhY2hlX29wKHBhZGRyLCBzaXplLCBkbWFfd2JpbnZfcmFuZ2UpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgYXJjaF9zeW5jX2RtYV9jbGVhbl9iZWZvcmVf ZnJvbWRldmljZSh2b2lkKQo+ICt7Cj4gKyAgICAgICByZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiAr c3RhdGljIGlubGluZSBib29sIGFyY2hfc3luY19kbWFfY3B1X25lZWRzX3Bvc3RfZG1hX2ZsdXNo KHZvaWQpCj4gK3sKPiArICAgICAgIHJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICsjaW5jbHVkZSA8 bGludXgvZG1hLXN5bmMuaD4KPiBkaWZmIC0tZ2l0IGEvYXJjaC9oZXhhZ29uL2tlcm5lbC9kbWEu YyBiL2FyY2gvaGV4YWdvbi9rZXJuZWwvZG1hLmMKPiBpbmRleCA4ODI2ODBlODFhMzAuLmU2NTM4 MTI4YTc1YiAxMDA2NDQKPiAtLS0gYS9hcmNoL2hleGFnb24va2VybmVsL2RtYS5jCj4gKysrIGIv YXJjaC9oZXhhZ29uL2tlcm5lbC9kbWEuYwo+IEBAIC05LDI5ICs5LDMzIEBACj4gICNpbmNsdWRl IDxsaW51eC9tZW1ibG9jay5oPgo+ICAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KPgo+IC12b2lkIGFy Y2hfc3luY19kbWFfZm9yX2RldmljZShwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUsCj4g LSAgICAgICAgICAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKPiArc3RhdGljIGlu bGluZSB2b2lkIGFyY2hfZG1hX2NhY2hlX3diYWNrKHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qg c2l6ZSkKPiAgewo+IC0gICAgICAgdm9pZCAqYWRkciA9IHBoeXNfdG9fdmlydChwYWRkcik7Cj4g LQo+IC0gICAgICAgc3dpdGNoIChkaXIpIHsKPiAtICAgICAgIGNhc2UgRE1BX1RPX0RFVklDRToK PiAtICAgICAgICAgICAgICAgaGV4YWdvbl9jbGVhbl9kY2FjaGVfcmFuZ2UoKHVuc2lnbmVkIGxv bmcpIGFkZHIsCj4gLSAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSBhZGRyICsgc2l6ZSk7 Cj4gLSAgICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAgY2FzZSBETUFfRlJPTV9ERVZJQ0U6 Cj4gLSAgICAgICAgICAgICAgIGhleGFnb25faW52X2RjYWNoZV9yYW5nZSgodW5zaWduZWQgbG9u ZykgYWRkciwKPiAtICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpIGFkZHIgKyBzaXplKTsK PiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICBjYXNlIERNQV9CSURJUkVDVElPTkFM Ogo+IC0gICAgICAgICAgICAgICBmbHVzaF9kY2FjaGVfcmFuZ2UoKHVuc2lnbmVkIGxvbmcpIGFk ZHIsCj4gLSAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSBhZGRyICsgc2l6ZSk7Cj4gLSAg ICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAgZGVmYXVsdDoKPiAtICAgICAgICAgICAgICAg QlVHKCk7Cj4gLSAgICAgICB9Cj4gKyAgICAgICBoZXhhZ29uX2NsZWFuX2RjYWNoZV9yYW5nZShw YWRkciwgcGFkZHIgKyBzaXplKTsKPiAgfQo+Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2Rt YV9jYWNoZV9pbnYocGh5c19hZGRyX3Qgc3RhcnQsIHNpemVfdCBzaXplKQo+ICt7Cj4gKyAgICAg ICBoZXhhZ29uX2ludl9kY2FjaGVfcmFuZ2UocGFkZHIsIHBhZGRyICsgc2l6ZSk7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2RtYV9jYWNoZV93YmFja19pbnYocGh5c19hZGRy X3Qgc3RhcnQsIHNpemVfdCBzaXplKQo+ICt7Cj4gKyAgICAgICBoZXhhZ29uX2ZsdXNoX2RjYWNo ZV9yYW5nZShwYWRkciwgcGFkZHIgKyBzaXplKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBi b29sIGFyY2hfc3luY19kbWFfY2xlYW5fYmVmb3JlX2Zyb21kZXZpY2Uodm9pZCkKPiArewo+ICsg ICAgICAgcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgYXJjaF9z eW5jX2RtYV9jcHVfbmVlZHNfcG9zdF9kbWFfZmx1c2godm9pZCkKPiArewo+ICsgICAgICAgcmV0 dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICsjaW5jbHVkZSA8bGludXgvZG1hLXN5bmMuaD4KPiArCj4g IC8qCj4gICAqIE91ciBtYXhfbG93X3BmbiBzaG91bGQgaGF2ZSBiZWVuIGJhY2tlZCBvZmYgYnkg MTZNQiBpbiBtbS9pbml0LmMgdG8gY3JlYXRlCj4gICAqIERNQSBjb2hlcmVudCBzcGFjZS4gIFVz ZSB0aGF0IGZvciB0aGUgcG9vbC4KPiBkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2tlcm5lbC9kbWEu YyBiL2FyY2gvbTY4ay9rZXJuZWwvZG1hLmMKPiBpbmRleCAyZTE5MmE1ZGY5NDkuLmFhOWI0MzRl NmRmOCAxMDA2NDQKPiAtLS0gYS9hcmNoL202OGsva2VybmVsL2RtYS5jCj4gKysrIGIvYXJjaC9t NjhrL2tlcm5lbC9kbWEuYwo+IEBAIC01OCwyMCArNTgsMzMgQEAgdm9pZCBhcmNoX2RtYV9mcmVl KHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsIHZvaWQgKnZhZGRyLAo+Cj4gICNlbmRp ZiAvKiBDT05GSUdfTU1VICYmICFDT05GSUdfQ09MREZJUkUgKi8KPgo+IC12b2lkIGFyY2hfc3lu Y19kbWFfZm9yX2RldmljZShwaHlzX2FkZHJfdCBoYW5kbGUsIHNpemVfdCBzaXplLAo+IC0gICAg ICAgICAgICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCj4gK3N0YXRpYyBpbmxpbmUg dm9pZCBhcmNoX2RtYV9jYWNoZV93YmFjayhwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUp Cj4gIHsKPiAtICAgICAgIHN3aXRjaCAoZGlyKSB7Cj4gLSAgICAgICBjYXNlIERNQV9CSURJUkVD VElPTkFMOgo+IC0gICAgICAgY2FzZSBETUFfVE9fREVWSUNFOgo+IC0gICAgICAgICAgICAgICBj YWNoZV9wdXNoKGhhbmRsZSwgc2l6ZSk7Cj4gLSAgICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAg ICAgY2FzZSBETUFfRlJPTV9ERVZJQ0U6Cj4gLSAgICAgICAgICAgICAgIGNhY2hlX2NsZWFyKGhh bmRsZSwgc2l6ZSk7Cj4gLSAgICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAgZGVmYXVsdDoK PiAtICAgICAgICAgICAgICAgcHJfZXJyX3JhdGVsaW1pdGVkKCJkbWFfc3luY19zaW5nbGVfZm9y X2RldmljZTogdW5zdXBwb3J0ZWQgZGlyICV1XG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGlyKTsKPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICB9Cj4g KyAgICAgICAvKgo+ICsgICAgICAgICogY2FjaGVfcHVzaCgpIGFsd2F5cyBpbnZhbGlkYXRlcyBp biBhZGRpdGlvbiB0byBjbGVhbmluZwo+ICsgICAgICAgICogd3JpdGUtYmFjayBjYWNoZXMuCj4g KyAgICAgICAgKi8KPiArICAgICAgIGNhY2hlX3B1c2gocGFkZHIsIHNpemUpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9kbWFfY2FjaGVfaW52KHBoeXNfYWRkcl90IHBhZGRy LCBzaXplX3Qgc2l6ZSkKPiArewo+ICsgICAgICAgY2FjaGVfY2xlYXIocGFkZHIsIHNpemUpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9kbWFfY2FjaGVfd2JhY2tfaW52KHBo eXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSkKPiArewo+ICsgICAgICAgY2FjaGVfcHVzaChw YWRkciwgc2l6ZSk7Cj4gIH0KPiArCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX3N5bmNfZG1h X2NsZWFuX2JlZm9yZV9mcm9tZGV2aWNlKHZvaWQpCj4gK3sKPiArICAgICAgIHJldHVybiBmYWxz ZTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBib29sIGFyY2hfc3luY19kbWFfY3B1X25lZWRz X3Bvc3RfZG1hX2ZsdXNoKHZvaWQpCj4gK3sKPiArICAgICAgIHJldHVybiBmYWxzZTsKPiArfQo+ ICsKPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1zeW5jLmg+Cj4gZGlmZiAtLWdpdCBhL2FyY2gvbWlj cm9ibGF6ZS9rZXJuZWwvZG1hLmMgYi9hcmNoL21pY3JvYmxhemUva2VybmVsL2RtYS5jCj4gaW5k ZXggYjRjNGU0NWZkNDVlLi4wMTExMGQ0YWE1YjAgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9taWNyb2Js YXplL2tlcm5lbC9kbWEuYwo+ICsrKyBiL2FyY2gvbWljcm9ibGF6ZS9rZXJuZWwvZG1hLmMKPiBA QCAtMTQsMzIgKzE0LDMwIEBACj4gICNpbmNsdWRlIDxsaW51eC9idWcuaD4KPiAgI2luY2x1ZGUg PGFzbS9jYWNoZWZsdXNoLmg+Cj4KPiAtdm9pZCBhcmNoX3N5bmNfZG1hX2Zvcl9kZXZpY2UocGh5 c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplLAo+IC0gICAgICAgICAgICAgICBlbnVtIGRtYV9k YXRhX2RpcmVjdGlvbiBkaXIpCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2RtYV9jYWNoZV93 YmFjayhwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUpCj4gIHsKPiAtICAgICAgIHN3aXRj aCAoZGlyZWN0aW9uKSB7Cj4gLSAgICAgICBjYXNlIERNQV9UT19ERVZJQ0U6Cj4gLSAgICAgICBj YXNlIERNQV9CSURJUkVDVElPTkFMOgo+IC0gICAgICAgICAgICAgICBmbHVzaF9kY2FjaGVfcmFu Z2UocGFkZHIsIHBhZGRyICsgc2l6ZSk7Cj4gLSAgICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAg ICAgY2FzZSBETUFfRlJPTV9ERVZJQ0U6Cj4gLSAgICAgICAgICAgICAgIGludmFsaWRhdGVfZGNh Y2hlX3JhbmdlKHBhZGRyLCBwYWRkciArIHNpemUpOwo+IC0gICAgICAgICAgICAgICBicmVhazsK PiAtICAgICAgIGRlZmF1bHQ6Cj4gLSAgICAgICAgICAgICAgIEJVRygpOwo+IC0gICAgICAgfQo+ ICsgICAgICAgLyogd3JpdGViYWNrIHBsdXMgaW52YWxpZGF0ZSwgY291bGQgYmUgYSBub3Agb24g V1QgY2FjaGVzICovCj4gKyAgICAgICBmbHVzaF9kY2FjaGVfcmFuZ2UocGFkZHIsIHBhZGRyICsg c2l6ZSk7Cj4gIH0KPgo+IC12b2lkIGFyY2hfc3luY19kbWFfZm9yX2NwdShwaHlzX2FkZHJfdCBw YWRkciwgc2l6ZV90IHNpemUsCj4gLSAgICAgICAgICAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0 aW9uIGRpcikKPiArc3RhdGljIGlubGluZSB2b2lkIGFyY2hfZG1hX2NhY2hlX2ludihwaHlzX2Fk ZHJfdCBwYWRkciwgc2l6ZV90IHNpemUpCj4gIHsKPiAtICAgICAgIHN3aXRjaCAoZGlyZWN0aW9u KSB7Cj4gLSAgICAgICBjYXNlIERNQV9UT19ERVZJQ0U6Cj4gLSAgICAgICAgICAgICAgIGJyZWFr Owo+IC0gICAgICAgY2FzZSBETUFfQklESVJFQ1RJT05BTDoKPiAtICAgICAgIGNhc2UgRE1BX0ZS T01fREVWSUNFOgo+IC0gICAgICAgICAgICAgICBpbnZhbGlkYXRlX2RjYWNoZV9yYW5nZShwYWRk ciwgcGFkZHIgKyBzaXplKTsKPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICBkZWZh dWx0Ogo+IC0gICAgICAgICAgICAgICBCVUcoKTsKPiAtICAgICAgIH19Cj4gKyAgICAgICBpbnZh bGlkYXRlX2RjYWNoZV9yYW5nZShwYWRkciwgcGFkZHIgKyBzaXplKTsKPiArfQo+ICsKPiArc3Rh dGljIGlubGluZSB2b2lkIGFyY2hfZG1hX2NhY2hlX3diYWNrX2ludihwaHlzX2FkZHJfdCBwYWRk ciwgc2l6ZV90IHNpemUpCj4gK3sKPiArICAgICAgIGZsdXNoX2RjYWNoZV9yYW5nZShwYWRkciwg cGFkZHIgKyBzaXplKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBib29sIGFyY2hfc3luY19k bWFfY2xlYW5fYmVmb3JlX2Zyb21kZXZpY2Uodm9pZCkKPiArewo+ICsgICAgICAgcmV0dXJuIGZh bHNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgYXJjaF9zeW5jX2RtYV9jcHVfbmVl ZHNfcG9zdF9kbWFfZmx1c2godm9pZCkKPiArewo+ICsgICAgICAgcmV0dXJuIHRydWU7Cj4gK30K PiArCj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtc3luYy5oPgo+IGRpZmYgLS1naXQgYS9hcmNoL21p cHMvbW0vZG1hLW5vbmNvaGVyZW50LmMgYi9hcmNoL21pcHMvbW0vZG1hLW5vbmNvaGVyZW50LmMK PiBpbmRleCBiOWQ2OGJjYzVkNTMuLjkwMmQ0YjdjMWY4NSAxMDA2NDQKPiAtLS0gYS9hcmNoL21p cHMvbW0vZG1hLW5vbmNvaGVyZW50LmMKPiArKysgYi9hcmNoL21pcHMvbW0vZG1hLW5vbmNvaGVy ZW50LmMKPiBAQCAtODUsNTAgKzg1LDM4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkbWFfc3luY19w aHlzKHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSwKPiAgICAgICAgIH0gd2hpbGUgKGxl ZnQpOwo+ICB9Cj4KPiAtdm9pZCBhcmNoX3N5bmNfZG1hX2Zvcl9kZXZpY2UocGh5c19hZGRyX3Qg cGFkZHIsIHNpemVfdCBzaXplLAo+IC0gICAgICAgICAgICAgICBlbnVtIGRtYV9kYXRhX2RpcmVj dGlvbiBkaXIpCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2RtYV9jYWNoZV93YmFjayhwaHlz X2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUpCj4gIHsKPiAtICAgICAgIHN3aXRjaCAoZGlyKSB7 Cj4gLSAgICAgICBjYXNlIERNQV9UT19ERVZJQ0U6Cj4gLSAgICAgICAgICAgICAgIGRtYV9zeW5j X3BoeXMocGFkZHIsIHNpemUsIF9kbWFfY2FjaGVfd2JhY2spOwo+IC0gICAgICAgICAgICAgICBi cmVhazsKPiAtICAgICAgIGNhc2UgRE1BX0ZST01fREVWSUNFOgo+IC0gICAgICAgICAgICAgICBk bWFfc3luY19waHlzKHBhZGRyLCBzaXplLCBfZG1hX2NhY2hlX2ludik7Cj4gLSAgICAgICAgICAg ICAgIGJyZWFrOwo+IC0gICAgICAgY2FzZSBETUFfQklESVJFQ1RJT05BTDoKPiAtICAgICAgICAg ICAgICAgaWYgKElTX0VOQUJMRUQoQ09ORklHX0FSQ0hfSEFTX1NZTkNfRE1BX0ZPUl9DUFUpICYm Cj4gLSAgICAgICAgICAgICAgICAgICBjcHVfbmVlZHNfcG9zdF9kbWFfZmx1c2goKSkKPiAtICAg ICAgICAgICAgICAgICAgICAgICBkbWFfc3luY19waHlzKHBhZGRyLCBzaXplLCBfZG1hX2NhY2hl X3diYWNrKTsKPiAtICAgICAgICAgICAgICAgZWxzZQo+IC0gICAgICAgICAgICAgICAgICAgICAg IGRtYV9zeW5jX3BoeXMocGFkZHIsIHNpemUsIF9kbWFfY2FjaGVfd2JhY2tfaW52KTsKPiAtICAg ICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICBkZWZhdWx0Ogo+IC0gICAgICAgICAgICAgICBi cmVhazsKPiAtICAgICAgIH0KPiArICAgICAgIGRtYV9zeW5jX3BoeXMocGFkZHIsIHNpemUsIF9k bWFfY2FjaGVfd2JhY2spOwo+ICB9Cj4KPiAtI2lmZGVmIENPTkZJR19BUkNIX0hBU19TWU5DX0RN QV9GT1JfQ1BVCj4gLXZvaWQgYXJjaF9zeW5jX2RtYV9mb3JfY3B1KHBoeXNfYWRkcl90IHBhZGRy LCBzaXplX3Qgc2l6ZSwKPiAtICAgICAgICAgICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24g ZGlyKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9kbWFfY2FjaGVfaW52KHBoeXNfYWRkcl90 IHBhZGRyLCBzaXplX3Qgc2l6ZSkKPiAgewo+IC0gICAgICAgc3dpdGNoIChkaXIpIHsKPiAtICAg ICAgIGNhc2UgRE1BX1RPX0RFVklDRToKPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAg ICBjYXNlIERNQV9GUk9NX0RFVklDRToKPiAtICAgICAgIGNhc2UgRE1BX0JJRElSRUNUSU9OQUw6 Cj4gLSAgICAgICAgICAgICAgIGlmIChjcHVfbmVlZHNfcG9zdF9kbWFfZmx1c2goKSkKPiAtICAg ICAgICAgICAgICAgICAgICAgICBkbWFfc3luY19waHlzKHBhZGRyLCBzaXplLCBfZG1hX2NhY2hl X2ludik7Cj4gLSAgICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAgZGVmYXVsdDoKPiAtICAg ICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICB9Cj4gKyAgICAgICBkbWFfc3luY19waHlzKHBh ZGRyLCBzaXplLCBfZG1hX2NhY2hlX2ludik7Cj4gIH0KPiAtI2VuZGlmCj4gKwo+ICtzdGF0aWMg aW5saW5lIHZvaWQgYXJjaF9kbWFfY2FjaGVfd2JhY2tfaW52KHBoeXNfYWRkcl90IHBhZGRyLCBz aXplX3Qgc2l6ZSkKPiArewo+ICsgICAgICAgZG1hX3N5bmNfcGh5cyhwYWRkciwgc2l6ZSwgX2Rt YV9jYWNoZV93YmFja19pbnYpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgYXJjaF9z eW5jX2RtYV9jbGVhbl9iZWZvcmVfZnJvbWRldmljZSh2b2lkKQo+ICt7Cj4gKyAgICAgICByZXR1 cm4gZmFsc2U7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX3N5bmNfZG1hX2Nw dV9uZWVkc19wb3N0X2RtYV9mbHVzaCh2b2lkKQo+ICt7Cj4gKyAgICAgICByZXR1cm4gSVNfRU5B QkxFRChDT05GSUdfQVJDSF9IQVNfU1lOQ19ETUFfRk9SX0NQVSkgJiYKPiArICAgICAgICAgICAg ICAgICAgICBjcHVfbmVlZHNfcG9zdF9kbWFfZmx1c2goKTsKPiArfQo+ICsKPiArI2luY2x1ZGUg PGxpbnV4L2RtYS1zeW5jLmg+Cj4KPiAgI2lmZGVmIENPTkZJR19BUkNIX0hBU19TRVRVUF9ETUFf T1BTCj4gIHZvaWQgYXJjaF9zZXR1cF9kbWFfb3BzKHN0cnVjdCBkZXZpY2UgKmRldiwgdTY0IGRt YV9iYXNlLCB1NjQgc2l6ZSwKPiAtICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGlvbW11X29w cyAqaW9tbXUsIGJvb2wgY29oZXJlbnQpCj4gKyAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBp b21tdV9vcHMgKmlvbW11LCBib29sIGNvaGVyZW50KQo+ICB7Cj4gLSAgICAgICBkZXYtPmRtYV9j b2hlcmVudCA9IGNvaGVyZW50Owo+ICsgICAgICAgZGV2LT5kbWFfY29oZXJlbnQgPSBjb2hlcmVu dDsKPiAgfQo+ICAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvYXJjaC9uaW9zMi9tbS9kbWEtbWFwcGlu Zy5jIGIvYXJjaC9uaW9zMi9tbS9kbWEtbWFwcGluZy5jCj4gaW5kZXggZmQ4ODdkNWYzZjlhLi4y OTk3ODk3MDk1NWUgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9uaW9zMi9tbS9kbWEtbWFwcGluZy5jCj4g KysrIGIvYXJjaC9uaW9zMi9tbS9kbWEtbWFwcGluZy5jCj4gQEAgLTEzLDUzICsxMyw0NiBAQAo+ ICAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L21tLmg+Cj4gICNp bmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXAtb3BzLmg+ Cj4gICNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgo+ICAjaW5jbHVkZSA8bGludXgvaW8u aD4KPiAgI2luY2x1ZGUgPGxpbnV4L2NhY2hlLmg+Cj4gICNpbmNsdWRlIDxhc20vY2FjaGVmbHVz aC5oPgo+Cj4gLXZvaWQgYXJjaF9zeW5jX2RtYV9mb3JfZGV2aWNlKHBoeXNfYWRkcl90IHBhZGRy LCBzaXplX3Qgc2l6ZSwKPiAtICAgICAgICAgICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24g ZGlyKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9kbWFfY2FjaGVfd2JhY2socGh5c19hZGRy X3QgcGFkZHIsIHNpemVfdCBzaXplKQo+ICB7Cj4gKyAgICAgICAvKgo+ICsgICAgICAgICogV2Ug anVzdCBuZWVkIHRvIHdyaXRlIGJhY2sgdGhlIGNhY2hlcyBoZXJlLCBidXQgTmlvczIgZmx1c2gK PiArICAgICAgICAqIGluc3RydWN0aW9uIHdpbGwgZG8gYm90aCB3cml0ZWJhY2sgYW5kIGludmFs aWRhdGUuCj4gKyAgICAgICAgKi8KPiAgICAgICAgIHZvaWQgKnZhZGRyID0gcGh5c190b192aXJ0 KHBhZGRyKTsKPiArICAgICAgIGZsdXNoX2RjYWNoZV9yYW5nZSgodW5zaWduZWQgbG9uZyl2YWRk ciwgKHVuc2lnbmVkIGxvbmcpKHZhZGRyICsgc2l6ZSkpOwo+ICt9Cj4KPiAtICAgICAgIHN3aXRj aCAoZGlyKSB7Cj4gLSAgICAgICBjYXNlIERNQV9GUk9NX0RFVklDRToKPiAtICAgICAgICAgICAg ICAgaW52YWxpZGF0ZV9kY2FjaGVfcmFuZ2UoKHVuc2lnbmVkIGxvbmcpdmFkZHIsCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKHZhZGRyICsgc2l6ZSkpOwo+IC0gICAg ICAgICAgICAgICBicmVhazsKPiAtICAgICAgIGNhc2UgRE1BX1RPX0RFVklDRToKPiAtICAgICAg ICAgICAgICAgLyoKPiAtICAgICAgICAgICAgICAgICogV2UganVzdCBuZWVkIHRvIGZsdXNoIHRo ZSBjYWNoZXMgaGVyZSAsIGJ1dCBOaW9zMiBmbHVzaAo+IC0gICAgICAgICAgICAgICAgKiBpbnN0 cnVjdGlvbiB3aWxsIGRvIGJvdGggd3JpdGViYWNrIGFuZCBpbnZhbGlkYXRlLgo+IC0gICAgICAg ICAgICAgICAgKi8KPiAtICAgICAgIGNhc2UgRE1BX0JJRElSRUNUSU9OQUw6IC8qIGZsdXNoIGFu ZCBpbnZhbGlkYXRlICovCj4gLSAgICAgICAgICAgICAgIGZsdXNoX2RjYWNoZV9yYW5nZSgodW5z aWduZWQgbG9uZyl2YWRkciwKPiAtICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9u ZykodmFkZHIgKyBzaXplKSk7Cj4gLSAgICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAgZGVm YXVsdDoKPiAtICAgICAgICAgICAgICAgQlVHKCk7Cj4gLSAgICAgICB9Cj4gK3N0YXRpYyBpbmxp bmUgdm9pZCBhcmNoX2RtYV9jYWNoZV9pbnYocGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXpl KQo+ICt7Cj4gKyAgICAgICB1bnNpZ25lZCBsb25nIHZhZGRyID0gKHVuc2lnbmVkIGxvbmcpcGh5 c190b192aXJ0KHBhZGRyKTsKPiArICAgICAgIGludmFsaWRhdGVfZGNhY2hlX3JhbmdlKHZhZGRy LCAodW5zaWduZWQgbG9uZykodmFkZHIgKyBzaXplKSk7Cj4gIH0KPgo+IC12b2lkIGFyY2hfc3lu Y19kbWFfZm9yX2NwdShwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUsCj4gLSAgICAgICAg ICAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKPiArc3RhdGljIGlubGluZSB2b2lk IGFyY2hfZG1hX2NhY2hlX3diYWNrX2ludihwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUp Cj4gIHsKPiAgICAgICAgIHZvaWQgKnZhZGRyID0gcGh5c190b192aXJ0KHBhZGRyKTsKPiArICAg ICAgIGZsdXNoX2RjYWNoZV9yYW5nZSgodW5zaWduZWQgbG9uZyl2YWRkciwgKHVuc2lnbmVkIGxv bmcpKHZhZGRyICsgc2l6ZSkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgYXJjaF9z eW5jX2RtYV9jbGVhbl9iZWZvcmVfZnJvbWRldmljZSh2b2lkKQo+ICt7Cj4gKyAgICAgICByZXR1 cm4gZmFsc2U7Cj4gK30KPgo+IC0gICAgICAgc3dpdGNoIChkaXIpIHsKPiAtICAgICAgIGNhc2Ug RE1BX0JJRElSRUNUSU9OQUw6Cj4gLSAgICAgICBjYXNlIERNQV9GUk9NX0RFVklDRToKPiAtICAg ICAgICAgICAgICAgaW52YWxpZGF0ZV9kY2FjaGVfcmFuZ2UoKHVuc2lnbmVkIGxvbmcpdmFkZHIs Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKHZhZGRyICsgc2l6ZSkp Owo+IC0gICAgICAgICAgICAgICBicmVhazsKPiAtICAgICAgIGNhc2UgRE1BX1RPX0RFVklDRToK PiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICBkZWZhdWx0Ogo+IC0gICAgICAgICAg ICAgICBCVUcoKTsKPiAtICAgICAgIH0KPiArc3RhdGljIGlubGluZSBib29sIGFyY2hfc3luY19k bWFfY3B1X25lZWRzX3Bvc3RfZG1hX2ZsdXNoKHZvaWQpCj4gK3sKPiArICAgICAgIHJldHVybiB0 cnVlOwo+ICB9Cj4KPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1zeW5jLmg+Cj4gKwo+ICB2b2lkIGFy Y2hfZG1hX3ByZXBfY29oZXJlbnQoc3RydWN0IHBhZ2UgKnBhZ2UsIHNpemVfdCBzaXplKQo+ICB7 Cj4gICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpcGFnZV9hZGRy ZXNzKHBhZ2UpOwo+IGRpZmYgLS1naXQgYS9hcmNoL29wZW5yaXNjL2tlcm5lbC9kbWEuYyBiL2Fy Y2gvb3BlbnJpc2Mva2VybmVsL2RtYS5jCj4gaW5kZXggOTFhMDBkMDlmZmFkLi5hYmEyMjU4ZTYy ZWIgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9vcGVucmlzYy9rZXJuZWwvZG1hLmMKPiArKysgYi9hcmNo L29wZW5yaXNjL2tlcm5lbC9kbWEuYwo+IEBAIC05NSwzMiArOTUsNDcgQEAgdm9pZCBhcmNoX2Rt YV9jbGVhcl91bmNhY2hlZCh2b2lkICpjcHVfYWRkciwgc2l6ZV90IHNpemUpCj4gICAgICAgICBt bWFwX3dyaXRlX3VubG9jaygmaW5pdF9tbSk7Cj4gIH0KPgo+IC12b2lkIGFyY2hfc3luY19kbWFf Zm9yX2RldmljZShwaHlzX2FkZHJfdCBhZGRyLCBzaXplX3Qgc2l6ZSwKPiAtICAgICAgICAgICAg ICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXJj aF9kbWFfY2FjaGVfd2JhY2socGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplKQo+ICB7Cj4g ICAgICAgICB1bnNpZ25lZCBsb25nIGNsOwo+ICAgICAgICAgc3RydWN0IGNwdWluZm9fb3IxayAq Y3B1aW5mbyA9ICZjcHVpbmZvX29yMWtbc21wX3Byb2Nlc3Nvcl9pZCgpXTsKPgo+IC0gICAgICAg c3dpdGNoIChkaXIpIHsKPiAtICAgICAgIGNhc2UgRE1BX1RPX0RFVklDRToKPiAtICAgICAgICAg ICAgICAgLyogV3JpdGUgYmFjayB0aGUgZGNhY2hlIGZvciB0aGUgcmVxdWVzdGVkIHJhbmdlICov Cj4gLSAgICAgICAgICAgICAgIGZvciAoY2wgPSBhZGRyOyBjbCA8IGFkZHIgKyBzaXplOwo+IC0g ICAgICAgICAgICAgICAgICAgIGNsICs9IGNwdWluZm8tPmRjYWNoZV9ibG9ja19zaXplKQo+IC0g ICAgICAgICAgICAgICAgICAgICAgIG10c3ByKFNQUl9EQ0JXUiwgY2wpOwo+IC0gICAgICAgICAg ICAgICBicmVhazsKPiAtICAgICAgIGNhc2UgRE1BX0ZST01fREVWSUNFOgo+IC0gICAgICAgICAg ICAgICAvKiBJbnZhbGlkYXRlIHRoZSBkY2FjaGUgZm9yIHRoZSByZXF1ZXN0ZWQgcmFuZ2UgKi8K PiAtICAgICAgICAgICAgICAgZm9yIChjbCA9IGFkZHI7IGNsIDwgYWRkciArIHNpemU7Cj4gLSAg ICAgICAgICAgICAgICAgICAgY2wgKz0gY3B1aW5mby0+ZGNhY2hlX2Jsb2NrX3NpemUpCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgbXRzcHIoU1BSX0RDQklSLCBjbCk7Cj4gLSAgICAgICAgICAg ICAgIGJyZWFrOwo+IC0gICAgICAgY2FzZSBETUFfQklESVJFQ1RJT05BTDoKPiAtICAgICAgICAg ICAgICAgLyogRmx1c2ggdGhlIGRjYWNoZSBmb3IgdGhlIHJlcXVlc3RlZCByYW5nZSAqLwo+IC0g ICAgICAgICAgICAgICBmb3IgKGNsID0gYWRkcjsgY2wgPCBhZGRyICsgc2l6ZTsKPiAtICAgICAg ICAgICAgICAgICAgICBjbCArPSBjcHVpbmZvLT5kY2FjaGVfYmxvY2tfc2l6ZSkKPiAtICAgICAg ICAgICAgICAgICAgICAgICBtdHNwcihTUFJfRENCRlIsIGNsKTsKPiAtICAgICAgICAgICAgICAg YnJlYWs7Cj4gLSAgICAgICBkZWZhdWx0Ogo+IC0gICAgICAgICAgICAgICBicmVhazsKPiAtICAg ICAgIH0KPiArICAgICAgIC8qIFdyaXRlIGJhY2sgdGhlIGRjYWNoZSBmb3IgdGhlIHJlcXVlc3Rl ZCByYW5nZSAqLwo+ICsgICAgICAgZm9yIChjbCA9IHBhZGRyOyBjbCA8IHBhZGRyICsgc2l6ZTsK PiArICAgICAgICAgICAgY2wgKz0gY3B1aW5mby0+ZGNhY2hlX2Jsb2NrX3NpemUpCj4gKyAgICAg ICAgICAgICAgIG10c3ByKFNQUl9EQ0JXUiwgY2wpOwo+ICB9Cj4gKwo+ICtzdGF0aWMgaW5saW5l IHZvaWQgYXJjaF9kbWFfY2FjaGVfaW52KHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSkK PiArewo+ICsgICAgICAgdW5zaWduZWQgbG9uZyBjbDsKPiArICAgICAgIHN0cnVjdCBjcHVpbmZv X29yMWsgKmNwdWluZm8gPSAmY3B1aW5mb19vcjFrW3NtcF9wcm9jZXNzb3JfaWQoKV07Cj4gKwo+ ICsgICAgICAgLyogSW52YWxpZGF0ZSB0aGUgZGNhY2hlIGZvciB0aGUgcmVxdWVzdGVkIHJhbmdl ICovCj4gKyAgICAgICBmb3IgKGNsID0gcGFkZHI7IGNsIDwgcGFkZHIgKyBzaXplOwo+ICsgICAg ICAgICAgICBjbCArPSBjcHVpbmZvLT5kY2FjaGVfYmxvY2tfc2l6ZSkKPiArICAgICAgICAgICAg ICAgbXRzcHIoU1BSX0RDQklSLCBjbCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBh cmNoX2RtYV9jYWNoZV93YmFja19pbnYocGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplKQo+ ICt7Cj4gKyAgICAgICB1bnNpZ25lZCBsb25nIGNsOwo+ICsgICAgICAgc3RydWN0IGNwdWluZm9f b3IxayAqY3B1aW5mbyA9ICZjcHVpbmZvX29yMWtbc21wX3Byb2Nlc3Nvcl9pZCgpXTsKPiArCj4g KyAgICAgICAvKiBGbHVzaCB0aGUgZGNhY2hlIGZvciB0aGUgcmVxdWVzdGVkIHJhbmdlICovCj4g KyAgICAgICBmb3IgKGNsID0gcGFkZHI7IGNsIDwgcGFkZHIgKyBzaXplOwo+ICsgICAgICAgICAg ICBjbCArPSBjcHVpbmZvLT5kY2FjaGVfYmxvY2tfc2l6ZSkKPiArICAgICAgICAgICAgICAgbXRz cHIoU1BSX0RDQkZSLCBjbCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX3N5 bmNfZG1hX2NsZWFuX2JlZm9yZV9mcm9tZGV2aWNlKHZvaWQpCj4gK3sKPiArICAgICAgIHJldHVy biBmYWxzZTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBib29sIGFyY2hfc3luY19kbWFfY3B1 X25lZWRzX3Bvc3RfZG1hX2ZsdXNoKHZvaWQpCj4gK3sKPiArICAgICAgIHJldHVybiBmYWxzZTsK PiArfQo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1zeW5jLmg+Cj4gZGlmZiAtLWdpdCBhL2Fy Y2gvcGFyaXNjL2tlcm5lbC9wY2ktZG1hLmMgYi9hcmNoL3BhcmlzYy9rZXJuZWwvcGNpLWRtYS5j Cj4gaW5kZXggNmQzZDNjZmZiMzE2Li5hNzk1NWFhYjhjZTIgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9w YXJpc2Mva2VybmVsL3BjaS1kbWEuYwo+ICsrKyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9wY2ktZG1h LmMKPiBAQCAtNDQzLDM1ICs0NDMsMzUgQEAgdm9pZCBhcmNoX2RtYV9mcmVlKHN0cnVjdCBkZXZp Y2UgKmRldiwgc2l6ZV90IHNpemUsIHZvaWQgKnZhZGRyLAo+ICAgICAgICAgZnJlZV9wYWdlcygo dW5zaWduZWQgbG9uZylfX3ZhKGRtYV9oYW5kbGUpLCBvcmRlcik7Cj4gIH0KPgo+IC12b2lkIGFy Y2hfc3luY19kbWFfZm9yX2RldmljZShwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUsCj4g LSAgICAgICAgICAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKPiArc3RhdGljIGlu bGluZSB2b2lkIGFyY2hfZG1hX2NhY2hlX3diYWNrKHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qg c2l6ZSkKPiAgewo+ICAgICAgICAgdW5zaWduZWQgbG9uZyB2aXJ0ID0gKHVuc2lnbmVkIGxvbmcp cGh5c190b192aXJ0KHBhZGRyKTsKPgo+IC0gICAgICAgc3dpdGNoIChkaXIpIHsKPiAtICAgICAg IGNhc2UgRE1BX1RPX0RFVklDRToKPiAtICAgICAgICAgICAgICAgY2xlYW5fa2VybmVsX2RjYWNo ZV9yYW5nZSh2aXJ0LCBzaXplKTsKPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICBj YXNlIERNQV9GUk9NX0RFVklDRToKPiAtICAgICAgICAgICAgICAgY2xlYW5fa2VybmVsX2RjYWNo ZV9yYW5nZSh2aXJ0LCBzaXplKTsKPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICBj YXNlIERNQV9CSURJUkVDVElPTkFMOgo+IC0gICAgICAgICAgICAgICBmbHVzaF9rZXJuZWxfZGNh Y2hlX3JhbmdlKHZpcnQsIHNpemUpOwo+IC0gICAgICAgICAgICAgICBicmVhazsKPiAtICAgICAg IH0KPiArICAgICAgIGNsZWFuX2tlcm5lbF9kY2FjaGVfcmFuZ2UodmlydCwgc2l6ZSk7Cj4gIH0K Pgo+IC12b2lkIGFyY2hfc3luY19kbWFfZm9yX2NwdShwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90 IHNpemUsCj4gLSAgICAgICAgICAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKPiAr c3RhdGljIGlubGluZSB2b2lkIGFyY2hfZG1hX2NhY2hlX2ludihwaHlzX2FkZHJfdCBwYWRkciwg c2l6ZV90IHNpemUpCj4gIHsKPiAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmlydCA9ICh1bnNpZ25l ZCBsb25nKXBoeXNfdG9fdmlydChwYWRkcik7Cj4KPiAtICAgICAgIHN3aXRjaCAoZGlyKSB7Cj4g LSAgICAgICBjYXNlIERNQV9UT19ERVZJQ0U6Cj4gLSAgICAgICAgICAgICAgIGJyZWFrOwo+IC0g ICAgICAgY2FzZSBETUFfRlJPTV9ERVZJQ0U6Cj4gLSAgICAgICBjYXNlIERNQV9CSURJUkVDVElP TkFMOgo+IC0gICAgICAgICAgICAgICBwdXJnZV9rZXJuZWxfZGNhY2hlX3JhbmdlKHZpcnQsIHNp emUpOwo+IC0gICAgICAgICAgICAgICBicmVhazsKPiAtICAgICAgIH0KPiArICAgICAgIHB1cmdl X2tlcm5lbF9kY2FjaGVfcmFuZ2UodmlydCwgc2l6ZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxp bmUgdm9pZCBhcmNoX2RtYV9jYWNoZV93YmFja19pbnYocGh5c19hZGRyX3QgcGFkZHIsIHNpemVf dCBzaXplKQo+ICt7Cj4gKyAgICAgICB1bnNpZ25lZCBsb25nIHZpcnQgPSAodW5zaWduZWQgbG9u ZylwaHlzX3RvX3ZpcnQocGFkZHIpOwo+ICsKPiArICAgICAgIGZsdXNoX2tlcm5lbF9kY2FjaGVf cmFuZ2UodmlydCwgc2l6ZSk7Cj4gIH0KPiArCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX3N5 bmNfZG1hX2NsZWFuX2JlZm9yZV9mcm9tZGV2aWNlKHZvaWQpCj4gK3sKPiArICAgICAgIHJldHVy biB0cnVlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgYXJjaF9zeW5jX2RtYV9jcHVf bmVlZHNfcG9zdF9kbWFfZmx1c2godm9pZCkKPiArewo+ICsgICAgICAgcmV0dXJuIHRydWU7Cj4g K30KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtc3luYy5oPgo+IGRpZmYgLS1naXQgYS9hcmNo L3Bvd2VycGMvbW0vZG1hLW5vbmNvaGVyZW50LmMgYi9hcmNoL3Bvd2VycGMvbW0vZG1hLW5vbmNv aGVyZW50LmMKPiBpbmRleCAwMGU1OWE0ZmFhMmIuLjI2ODUxMGM3MTE1NiAxMDA2NDQKPiAtLS0g YS9hcmNoL3Bvd2VycGMvbW0vZG1hLW5vbmNvaGVyZW50LmMKPiArKysgYi9hcmNoL3Bvd2VycGMv bW0vZG1hLW5vbmNvaGVyZW50LmMKPiBAQCAtMTAxLDI3ICsxMDEsMzMgQEAgc3RhdGljIHZvaWQg X19kbWFfcGh5c19vcChwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUsIGVudW0gZG1hX2Nh Y2hlX29wIG9wKQo+ICAjZW5kaWYKPiAgfQo+Cj4gLXZvaWQgYXJjaF9zeW5jX2RtYV9mb3JfZGV2 aWNlKHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSwKPiAtICAgICAgICAgICAgICAgZW51 bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9kbWFf Y2FjaGVfd2JhY2socGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplKQo+ICB7Cj4gICAgICAg ICBfX2RtYV9waHlzX29wKHN0YXJ0LCBlbmQsIERNQV9DQUNIRV9DTEVBTik7Cj4gIH0KPgo+IC12 b2lkIGFyY2hfc3luY19kbWFfZm9yX2NwdShwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUs Cj4gLSAgICAgICAgICAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKPiArc3RhdGlj IGlubGluZSB2b2lkIGFyY2hfZG1hX2NhY2hlX2ludihwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90 IHNpemUpCj4gIHsKPiAtICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Cj4gLSAgICAgICBjYXNl IERNQV9OT05FOgo+IC0gICAgICAgICAgICAgICBCVUcoKTsKPiAtICAgICAgIGNhc2UgRE1BX1RP X0RFVklDRToKPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICBjYXNlIERNQV9GUk9N X0RFVklDRToKPiAtICAgICAgIGNhc2UgRE1BX0JJRElSRUNUSU9OQUw6Cj4gLSAgICAgICAgICAg ICAgIF9fZG1hX3BoeXNfb3Aoc3RhcnQsIGVuZCwgRE1BX0NBQ0hFX0lOVkFMKTsKPiAtICAgICAg ICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICB9Cj4gKyAgICAgICBfX2RtYV9waHlzX29wKHN0YXJ0 LCBlbmQsIERNQV9DQUNIRV9JTlZBTCk7Cj4gIH0KPgo+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXJj aF9kbWFfY2FjaGVfd2JhY2tfaW52KHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSkKPiAr ewo+ICsgICAgICAgX19kbWFfcGh5c19vcChzdGFydCwgZW5kLCBETUFfQ0FDSEVfRkxVU0gpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgYXJjaF9zeW5jX2RtYV9jbGVhbl9iZWZvcmVf ZnJvbWRldmljZSh2b2lkKQo+ICt7Cj4gKyAgICAgICByZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiAr c3RhdGljIGlubGluZSBib29sIGFyY2hfc3luY19kbWFfY3B1X25lZWRzX3Bvc3RfZG1hX2ZsdXNo KHZvaWQpCj4gK3sKPiArICAgICAgIHJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICsjaW5jbHVkZSA8 bGludXgvZG1hLXN5bmMuaD4KPiArCj4gIHZvaWQgYXJjaF9kbWFfcHJlcF9jb2hlcmVudChzdHJ1 Y3QgcGFnZSAqcGFnZSwgc2l6ZV90IHNpemUpCj4gIHsKPiAgICAgICAgIHVuc2lnbmVkIGxvbmcg a2FkZHIgPSAodW5zaWduZWQgbG9uZylwYWdlX2FkZHJlc3MocGFnZSk7Cj4gZGlmZiAtLWdpdCBh L2FyY2gvcmlzY3YvbW0vZG1hLW5vbmNvaGVyZW50LmMgYi9hcmNoL3Jpc2N2L21tL2RtYS1ub25j b2hlcmVudC5jCj4gaW5kZXggNjljODBiMjE1NWExLi5iOWE5ZjU3ZTAyYmUgMTAwNjQ0Cj4gLS0t IGEvYXJjaC9yaXNjdi9tbS9kbWEtbm9uY29oZXJlbnQuYwo+ICsrKyBiL2FyY2gvcmlzY3YvbW0v ZG1hLW5vbmNvaGVyZW50LmMKPiBAQCAtMTIsNDMgKzEyLDQwIEBACj4KPiAgc3RhdGljIGJvb2wg bm9uY29oZXJlbnRfc3VwcG9ydGVkOwo+Cj4gLXZvaWQgYXJjaF9zeW5jX2RtYV9mb3JfZGV2aWNl KHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSwKPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCj4gK3N0YXRpYyBpbmxpbmUgdm9p ZCBhcmNoX2RtYV9jYWNoZV93YmFjayhwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUpCj4g IHsKPiAgICAgICAgIHZvaWQgKnZhZGRyID0gcGh5c190b192aXJ0KHBhZGRyKTsKPgo+IC0gICAg ICAgc3dpdGNoIChkaXIpIHsKPiAtICAgICAgIGNhc2UgRE1BX1RPX0RFVklDRToKPiAtICAgICAg ICAgICAgICAgQUxUX0NNT19PUChjbGVhbiwgdmFkZHIsIHNpemUsIHJpc2N2X2Nib21fYmxvY2tf c2l6ZSk7Cj4gLSAgICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAgY2FzZSBETUFfRlJPTV9E RVZJQ0U6Cj4gLSAgICAgICAgICAgICAgIEFMVF9DTU9fT1AoY2xlYW4sIHZhZGRyLCBzaXplLCBy aXNjdl9jYm9tX2Jsb2NrX3NpemUpOwo+IC0gICAgICAgICAgICAgICBicmVhazsKPiAtICAgICAg IGNhc2UgRE1BX0JJRElSRUNUSU9OQUw6Cj4gLSAgICAgICAgICAgICAgIEFMVF9DTU9fT1AoY2xl YW4sIHZhZGRyLCBzaXplLCByaXNjdl9jYm9tX2Jsb2NrX3NpemUpOwo+IC0gICAgICAgICAgICAg ICBicmVhazsKPiAtICAgICAgIGRlZmF1bHQ6Cj4gLSAgICAgICAgICAgICAgIGJyZWFrOwo+IC0g ICAgICAgfQo+ICsgICAgICAgQUxUX0NNT19PUChjbGVhbiwgdmFkZHIsIHNpemUsIHJpc2N2X2Ni b21fYmxvY2tfc2l6ZSk7Cj4gIH0KPgo+IC12b2lkIGFyY2hfc3luY19kbWFfZm9yX2NwdShwaHlz X2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9k bWFfY2FjaGVfaW52KHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSkKPiAgewo+ICAgICAg ICAgdm9pZCAqdmFkZHIgPSBwaHlzX3RvX3ZpcnQocGFkZHIpOwo+Cj4gLSAgICAgICBzd2l0Y2gg KGRpcikgewo+IC0gICAgICAgY2FzZSBETUFfVE9fREVWSUNFOgo+IC0gICAgICAgICAgICAgICBi cmVhazsKPiAtICAgICAgIGNhc2UgRE1BX0ZST01fREVWSUNFOgo+IC0gICAgICAgY2FzZSBETUFf QklESVJFQ1RJT05BTDoKPiAtICAgICAgICAgICAgICAgQUxUX0NNT19PUChpbnZhbCwgdmFkZHIs IHNpemUsIHJpc2N2X2Nib21fYmxvY2tfc2l6ZSk7Cj4gLSAgICAgICAgICAgICAgIGJyZWFrOwo+ IC0gICAgICAgZGVmYXVsdDoKPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICB9Cj4g KyAgICAgICBBTFRfQ01PX09QKGludmFsLCB2YWRkciwgc2l6ZSwgcmlzY3ZfY2JvbV9ibG9ja19z aXplKTsKPiAgfQo+Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2RtYV9jYWNoZV93YmFja19p bnYocGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplKQo+ICt7Cj4gKyAgICAgICB2b2lkICp2 YWRkciA9IHBoeXNfdG9fdmlydChwYWRkcik7Cj4gKwo+ICsgICAgICAgQUxUX0NNT19PUChmbHVz aCwgdmFkZHIsIHNpemUsIHJpc2N2X2Nib21fYmxvY2tfc2l6ZSk7Cj4gK30KPiArCj4gK3N0YXRp YyBpbmxpbmUgYm9vbCBhcmNoX3N5bmNfZG1hX2NsZWFuX2JlZm9yZV9mcm9tZGV2aWNlKHZvaWQp Cj4gK3sKPiArICAgICAgIHJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJv b2wgYXJjaF9zeW5jX2RtYV9jcHVfbmVlZHNfcG9zdF9kbWFfZmx1c2godm9pZCkKPiArewo+ICsg ICAgICAgcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtc3luYy5o Pgo+ICsKPiArCj4gIHZvaWQgYXJjaF9kbWFfcHJlcF9jb2hlcmVudChzdHJ1Y3QgcGFnZSAqcGFn ZSwgc2l6ZV90IHNpemUpCj4gIHsKPiAgICAgICAgIHZvaWQgKmZsdXNoX2FkZHIgPSBwYWdlX2Fk ZHJlc3MocGFnZSk7Cj4gZGlmZiAtLWdpdCBhL2FyY2gvc2gva2VybmVsL2RtYS1jb2hlcmVudC5j IGIvYXJjaC9zaC9rZXJuZWwvZG1hLWNvaGVyZW50LmMKPiBpbmRleCA2YTQ0YzBlN2JhNDAuLjQx ZjAzMWFlNzYwOSAxMDA2NDQKPiAtLS0gYS9hcmNoL3NoL2tlcm5lbC9kbWEtY29oZXJlbnQuYwo+ ICsrKyBiL2FyY2gvc2gva2VybmVsL2RtYS1jb2hlcmVudC5jCj4gQEAgLTEyLDIyICsxMiwzNSBA QCB2b2lkIGFyY2hfZG1hX3ByZXBfY29oZXJlbnQoc3RydWN0IHBhZ2UgKnBhZ2UsIHNpemVfdCBz aXplKQo+ICAgICAgICAgX19mbHVzaF9wdXJnZV9yZWdpb24ocGFnZV9hZGRyZXNzKHBhZ2UpLCBz aXplKTsKPiAgfQo+Cj4gLXZvaWQgYXJjaF9zeW5jX2RtYV9mb3JfZGV2aWNlKHBoeXNfYWRkcl90 IHBhZGRyLCBzaXplX3Qgc2l6ZSwKPiAtICAgICAgICAgICAgICAgZW51bSBkbWFfZGF0YV9kaXJl Y3Rpb24gZGlyKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9kbWFfY2FjaGVfd2JhY2socGh5 c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplKQo+ICB7Cj4gICAgICAgICB2b2lkICphZGRyID0g c2hfY2FjaGVvcF92YWRkcihwaHlzX3RvX3ZpcnQocGFkZHIpKTsKPgo+IC0gICAgICAgc3dpdGNo IChkaXIpIHsKPiAtICAgICAgIGNhc2UgRE1BX0ZST01fREVWSUNFOiAgICAgICAgICAgLyogaW52 YWxpZGF0ZSBvbmx5ICovCj4gLSAgICAgICAgICAgICAgIF9fZmx1c2hfaW52YWxpZGF0ZV9yZWdp b24oYWRkciwgc2l6ZSk7Cj4gLSAgICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAgY2FzZSBE TUFfVE9fREVWSUNFOiAgICAgICAgICAgICAvKiB3cml0ZWJhY2sgb25seSAqLwo+IC0gICAgICAg ICAgICAgICBfX2ZsdXNoX3diYWNrX3JlZ2lvbihhZGRyLCBzaXplKTsKPiAtICAgICAgICAgICAg ICAgYnJlYWs7Cj4gLSAgICAgICBjYXNlIERNQV9CSURJUkVDVElPTkFMOiAgICAgICAgIC8qIHdy aXRlYmFjayBhbmQgaW52YWxpZGF0ZSAqLwo+IC0gICAgICAgICAgICAgICBfX2ZsdXNoX3B1cmdl X3JlZ2lvbihhZGRyLCBzaXplKTsKPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICBk ZWZhdWx0Ogo+IC0gICAgICAgICAgICAgICBCVUcoKTsKPiAtICAgICAgIH0KPiArICAgICAgIF9f Zmx1c2hfd2JhY2tfcmVnaW9uKGFkZHIsIHNpemUpOwo+ICB9Cj4gKwo+ICtzdGF0aWMgaW5saW5l IHZvaWQgYXJjaF9kbWFfY2FjaGVfaW52KHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSkK PiArewo+ICsgICAgICAgdm9pZCAqYWRkciA9IHNoX2NhY2hlb3BfdmFkZHIocGh5c190b192aXJ0 KHBhZGRyKSk7Cj4gKwo+ICsgICAgICAgX19mbHVzaF9pbnZhbGlkYXRlX3JlZ2lvbihhZGRyLCBz aXplKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIGFyY2hfZG1hX2NhY2hlX3diYWNr X2ludihwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUpCj4gK3sKPiArICAgICAgIHZvaWQg KmFkZHIgPSBzaF9jYWNoZW9wX3ZhZGRyKHBoeXNfdG9fdmlydChwYWRkcikpOwo+ICsKPiArICAg ICAgIF9fZmx1c2hfcHVyZ2VfcmVnaW9uKGFkZHIsIHNpemUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW5saW5lIGJvb2wgYXJjaF9zeW5jX2RtYV9jbGVhbl9iZWZvcmVfZnJvbWRldmljZSh2b2lkKQo+ ICt7Cj4gKyAgICAgICByZXR1cm4gZmFsc2U7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgYm9v bCBhcmNoX3N5bmNfZG1hX2NwdV9uZWVkc19wb3N0X2RtYV9mbHVzaCh2b2lkKQo+ICt7Cj4gKyAg ICAgICByZXR1cm4gZmFsc2U7Cj4gK30KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtc3luYy5o Pgo+IGRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2tlcm5lbC9pb3BvcnQuYyBiL2FyY2gvc3BhcmMv a2VybmVsL2lvcG9ydC5jCj4gaW5kZXggNGYzZDI2MDY2ZWMyLi42OTI2ZWFkMmYyMDggMTAwNjQ0 Cj4gLS0tIGEvYXJjaC9zcGFyYy9rZXJuZWwvaW9wb3J0LmMKPiArKysgYi9hcmNoL3NwYXJjL2tl cm5lbC9pb3BvcnQuYwo+IEBAIC0zMDAsMjEgKzMwMCwzOSBAQCBhcmNoX2luaXRjYWxsKHNwYXJj X3JlZ2lzdGVyX2lvcG9ydCk7Cj4KPiAgI2VuZGlmIC8qIENPTkZJR19TQlVTICovCj4KPiAtLyoK PiAtICogSUllcCBpcyB3cml0ZS10aHJvdWdoLCBub3QgZmx1c2hpbmcgb24gY3B1IHRvIGRldmlj ZSB0cmFuc2Zlci4KPiAtICoKPiAtICogT24gTEVPTiBzeXN0ZW1zIHdpdGhvdXQgY2FjaGUgc25v b3BpbmcsIHRoZSBlbnRpcmUgRC1DQUNIRSBtdXN0IGJlIGZsdXNoZWQgdG8KPiAtICogbWFrZSBE TUEgdG8gY2FjaGVhYmxlIG1lbW9yeSBjb2hlcmVudC4KPiAtICovCj4gLXZvaWQgYXJjaF9zeW5j X2RtYV9mb3JfZGV2aWNlKHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSwKPiAtICAgICAg ICAgICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQo+ICtzdGF0aWMgaW5saW5lIHZv aWQgYXJjaF9kbWFfY2FjaGVfd2JhY2socGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplKQo+ ICB7Cj4gLSAgICAgICBpZiAoZGlyICE9IERNQV9UT19ERVZJQ0UgJiYKPiAtICAgICAgICAgICBz cGFyY19jcHVfbW9kZWwgPT0gc3BhcmNfbGVvbiAmJgo+ICsgICAgICAgLyogSUllcCBpcyB3cml0 ZS10aHJvdWdoLCBub3QgZmx1c2hpbmcgb24gY3B1IHRvIGRldmljZSB0cmFuc2Zlci4gKi8KPiAr fQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIGFyY2hfZG1hX2NhY2hlX2ludihwaHlzX2FkZHJf dCBwYWRkciwgc2l6ZV90IHNpemUpCj4gK3sKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBPbiBM RU9OIHN5c3RlbXMgd2l0aG91dCBjYWNoZSBzbm9vcGluZywgdGhlIGVudGlyZSBELUNBQ0hFIG11 c3QgYmUKPiArICAgICAgICAqIGZsdXNoZWQgdG8gbWFrZSBETUEgdG8gY2FjaGVhYmxlIG1lbW9y eSBjb2hlcmVudC4KPiArICAgICAgICAqLwo+ICsgICAgICAgaWYgKHNwYXJjX2NwdV9tb2RlbCA9 PSBzcGFyY19sZW9uICYmCj4gICAgICAgICAgICAgIXNwYXJjX2xlb24zX3Nub29waW5nX2VuYWJs ZWQoKSkKPiAgICAgICAgICAgICAgICAgbGVvbl9mbHVzaF9kY2FjaGVfYWxsKCk7Cj4gIH0KPgo+ ICtzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9kbWFfY2FjaGVfd2JhY2tfaW52KHBoeXNfYWRkcl90 IHBhZGRyLCBzaXplX3Qgc2l6ZSkKPiArewo+ICsgICAgICAgYXJjaF9kbWFfY2FjaGVfaW52KHBh ZGRyLCBzaXplKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBib29sIGFyY2hfc3luY19kbWFf Y2xlYW5fYmVmb3JlX2Zyb21kZXZpY2Uodm9pZCkKPiArewo+ICsgICAgICAgcmV0dXJuIHRydWU7 Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX3N5bmNfZG1hX2NwdV9uZWVkc19w b3N0X2RtYV9mbHVzaCh2b2lkKQo+ICt7Cj4gKyAgICAgICByZXR1cm4gZmFsc2U7Cj4gK30KPiAr Cj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtc3luYy5oPgo+ICsKPiAgI2lmZGVmIENPTkZJR19QUk9D X0ZTCj4KPiAgc3RhdGljIGludCBzcGFyY19pb19wcm9jX3Nob3coc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICp2KQo+IGRpZmYgLS1naXQgYS9hcmNoL3h0ZW5zYS9rZXJuZWwvcGNpLWRtYS5jIGIv YXJjaC94dGVuc2Eva2VybmVsL3BjaS1kbWEuYwo+IGluZGV4IGZmM2JmMDE1ZWNhNC4uZDRmZjk2 NTg1NTQ1IDEwMDY0NAo+IC0tLSBhL2FyY2gveHRlbnNhL2tlcm5lbC9wY2ktZG1hLmMKPiArKysg Yi9hcmNoL3h0ZW5zYS9rZXJuZWwvcGNpLWRtYS5jCj4gQEAgLTQzLDI0ICs0MywzNCBAQCBzdGF0 aWMgdm9pZCBkb19jYWNoZV9vcChwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUsCj4gICAg ICAgICAgICAgICAgIH0KPiAgfQo+Cj4gLXZvaWQgYXJjaF9zeW5jX2RtYV9mb3JfZGV2aWNlKHBo eXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSwKPiAtICAgICAgICAgICAgICAgZW51bSBkbWFf ZGF0YV9kaXJlY3Rpb24gZGlyKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9kbWFfY2FjaGVf d2JhY2socGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplKQo+ICB7Cj4gLSAgICAgICBzd2l0 Y2ggKGRpcikgewo+IC0gICAgICAgY2FzZSBETUFfVE9fREVWSUNFOgo+IC0gICAgICAgICAgICAg ICBkb19jYWNoZV9vcChwYWRkciwgc2l6ZSwgX19mbHVzaF9kY2FjaGVfcmFuZ2UpOwo+IC0gICAg ICAgICAgICAgICBicmVhazsKPiAtICAgICAgIGNhc2UgRE1BX0ZST01fREVWSUNFOgo+IC0gICAg ICAgICAgICAgICBkb19jYWNoZV9vcChwYWRkciwgc2l6ZSwgX19pbnZhbGlkYXRlX2RjYWNoZV9y YW5nZSk7Cj4gLSAgICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAgY2FzZSBETUFfQklESVJF Q1RJT05BTDoKPiAtICAgICAgICAgICAgICAgZG9fY2FjaGVfb3AocGFkZHIsIHNpemUsIF9fZmx1 c2hfaW52YWxpZGF0ZV9kY2FjaGVfcmFuZ2UpOwo+IC0gICAgICAgICAgICAgICBicmVhazsKPiAt ICAgICAgIGRlZmF1bHQ6Cj4gLSAgICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAgfQo+ICsg ICAgICAgZG9fY2FjaGVfb3AocGFkZHIsIHNpemUsIF9fZmx1c2hfZGNhY2hlX3JhbmdlKTsKPiAg fQo+Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2RtYV9jYWNoZV9pbnYocGh5c19hZGRyX3Qg cGFkZHIsIHNpemVfdCBzaXplKQo+ICt7Cj4gKyAgICAgICBkb19jYWNoZV9vcChwYWRkciwgc2l6 ZSwgX19pbnZhbGlkYXRlX2RjYWNoZV9yYW5nZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUg dm9pZCBhcmNoX2RtYV9jYWNoZV93YmFja19pbnYocGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBz aXplKQo+ICt7Cj4gKyAgICAgICBkb19jYWNoZV9vcChwYWRkciwgc2l6ZSwgX19mbHVzaF9pbnZh bGlkYXRlX2RjYWNoZV9yYW5nZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmNo X3N5bmNfZG1hX2NsZWFuX2JlZm9yZV9mcm9tZGV2aWNlKHZvaWQpCj4gK3sKPiArICAgICAgIHJl dHVybiBmYWxzZTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBib29sIGFyY2hfc3luY19kbWFf Y3B1X25lZWRzX3Bvc3RfZG1hX2ZsdXNoKHZvaWQpCj4gK3sKPiArICAgICAgIHJldHVybiBmYWxz ZTsKPiArfQo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1zeW5jLmg+Cj4gKwo+ICsKPiAgdm9p ZCBhcmNoX2RtYV9wcmVwX2NvaGVyZW50KHN0cnVjdCBwYWdlICpwYWdlLCBzaXplX3Qgc2l6ZSkK PiAgewo+ICAgICAgICAgX19pbnZhbGlkYXRlX2RjYWNoZV9yYW5nZSgodW5zaWduZWQgbG9uZylw YWdlX2FkZHJlc3MocGFnZSksIHNpemUpOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Rt YS1zeW5jLmggYi9pbmNsdWRlL2xpbnV4L2RtYS1zeW5jLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMThlMzNkNWU4ZWFmCj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2luY2x1ZGUvbGludXgvZG1hLXN5bmMuaAo+IEBAIC0wLDAgKzEsMTA3IEBACj4gKy8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKy8qCj4gKyAqIENhY2hlIG9wZXJhdGlv bnMgZGVwZW5kaW5nIG9uIGZ1bmN0aW9uIGFuZCBkaXJlY3Rpb24gYXJndW1lbnQsIGluc3BpcmVk IGJ5Cj4gKyAqIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAxODA1MTgxNzUwMDQuR0Yx NzY3MUBuMjEwMC5hcm1saW51eC5vcmcudWsKPiArICogImRtYV9zeW5jXypfZm9yX2NwdSBhbmQg ZGlyZWN0aW9uPVRPX0RFVklDRSAod2FzIFJlOiBbUEFUQ0ggMDIvMjBdCj4gKyAqIGRtYS1tYXBw aW5nOiBwcm92aWRlIGEgZ2VuZXJpYyBkbWEtbm9uY29oZXJlbnQgaW1wbGVtZW50YXRpb24pIgo+ ICsgKgo+ICsgKiAgICAgICAgICB8ICAgbWFwICAgICAgICAgID09ICBmb3JfZGV2aWNlICAgICB8 ICAgdW5tYXAgICAgID09ICBmb3JfY3B1Cj4gKyAqICAgICAgICAgIHwtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyAqIFRP X0RFViAgIHwgICB3cml0ZWJhY2sgICAgICAgIHdyaXRlYmFjayAgICAgIHwgICBub25lICAgICAg ICAgIG5vbmUKPiArICogRlJPTV9ERVYgfCAgIGludmFsaWRhdGUgICAgICAgaW52YWxpZGF0ZSAg ICAgfCAgIGludmFsaWRhdGUqICAgaW52YWxpZGF0ZSoKPiArICogQklESVIgICAgfCAgIHdyaXRl YmFjayAgICAgICAgd3JpdGViYWNrICAgICAgfCAgIGludmFsaWRhdGUgICAgaW52YWxpZGF0ZQo+ ICsgKgo+ICsgKiAgICAgWypdIG5lZWRlZCBmb3IgQ1BVIHNwZWN1bGF0aXZlIHByZWZldGNoZXMK PiArICoKPiArICogTk9URTogd2UgZG9uJ3QgY2hlY2sgdGhlIHZhbGlkaXR5IG9mIGRpcmVjdGlv biBhcmd1bWVudCBhcyBpdCBpcyBkb25lIGluCj4gKyAqIHVwcGVyIGxheWVyIGZ1bmN0aW9ucyAo aW4gaW5jbHVkZS9saW51eC9kbWEtbWFwcGluZy5oKQo+ICsgKgo+ICsgKiBUaGlzIGZpbGUgY2Fu IGJlIGluY2x1ZGVkIGJ5IGFyY2gvLi4uL2tlcm5lbC9kbWEtbm9uY29oZXJlbnQuYyB0byBwcm92 aWRlCj4gKyAqIHRoZSByZXNwZWN0aXZlIGhpZ2gtbGV2ZWwgb3BlcmF0aW9ucyB3aXRob3V0IGhh dmluZyB0byBleHBvc2UgdGhlCj4gKyAqIGNhY2hlIG1hbmFnZW1lbnQgb3BzIHRvIGRyaXZlcnMu Cj4gKyAqLwo+ICsKPiArdm9pZCBhcmNoX3N5bmNfZG1hX2Zvcl9kZXZpY2UocGh5c19hZGRyX3Qg cGFkZHIsIHNpemVfdCBzaXplLAo+ICsgICAgICAgICAgICAgICBlbnVtIGRtYV9kYXRhX2RpcmVj dGlvbiBkaXIpCj4gK3sKPiArICAgICAgIHN3aXRjaCAoZGlyKSB7Cj4gKyAgICAgICBjYXNlIERN QV9UT19ERVZJQ0U6Cj4gKyAgICAgICAgICAgICAgIC8qCj4gKyAgICAgICAgICAgICAgICAqIFRo aXMgbWF5IGJlIGFuIGVtcHR5IGZ1bmN0aW9uIG9uIHdyaXRlLXRocm91Z2ggY2FjaGVzLAo+ICsg ICAgICAgICAgICAgICAgKiBhbmQgaXQgbWlnaHQgaW52YWxpZGF0ZSB0aGUgY2FjaGUgaWYgYW4g YXJjaGl0ZWN0dXJlIGhhcwo+ICsgICAgICAgICAgICAgICAgKiBhIHdyaXRlLWJhY2sgY2FjaGUg YnV0IG5vIHdheSB0byB3cml0ZSBpdCBiYWNrIHdpdGhvdXQKPiArICAgICAgICAgICAgICAgICog aW52YWxpZGF0aW5nCj4gKyAgICAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICAgICBhcmNo X2RtYV9jYWNoZV93YmFjayhwYWRkciwgc2l6ZSk7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ ICsKPiArICAgICAgIGNhc2UgRE1BX0ZST01fREVWSUNFOgo+ICsgICAgICAgICAgICAgICAvKgo+ ICsgICAgICAgICAgICAgICAgKiBGSVhNRTogdGhpcyBzaG91bGQgYmUgaGFuZGxlZCB0aGUgc2Ft ZSBhY3Jvc3MgYWxsCj4gKyAgICAgICAgICAgICAgICAqIGFyY2hpdGVjdHVyZXMsIHNlZQo+ICsg ICAgICAgICAgICAgICAgKiBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvMjAyMjA2MDYxNTIx NTAuR0EzMTU2OEB3aWxsaWUtdGhlLXRydWNrLwo+ICsgICAgICAgICAgICAgICAgKi8KPiArICAg ICAgICAgICAgICAgaWYgKCFhcmNoX3N5bmNfZG1hX2NsZWFuX2JlZm9yZV9mcm9tZGV2aWNlKCkp IHsKPiArICAgICAgICAgICAgICAgICAgICAgICBhcmNoX2RtYV9jYWNoZV9pbnYocGFkZHIsIHNp emUpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICB9 Cj4gKyAgICAgICAgICAgICAgIGZhbGx0aHJvdWdoOwo+ICsKPiArICAgICAgIGNhc2UgRE1BX0JJ RElSRUNUSU9OQUw6Cj4gKyAgICAgICAgICAgICAgIC8qIFNraXAgdGhlIGludmFsaWRhdGUgaGVy ZSBpZiBpdCdzIGRvbmUgbGF0ZXIgKi8KPiArICAgICAgICAgICAgICAgaWYgKElTX0VOQUJMRUQo Q09ORklHX0FSQ0hfSEFTX1NZTkNfRE1BX0ZPUl9DUFUpICYmCj4gKyAgICAgICAgICAgICAgICAg ICBhcmNoX3N5bmNfZG1hX2NwdV9uZWVkc19wb3N0X2RtYV9mbHVzaCgpKQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIGFyY2hfZG1hX2NhY2hlX3diYWNrKHBhZGRyLCBzaXplKTsKPiArICAgICAg ICAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGFyY2hfZG1hX2NhY2hlX3di YWNrX2ludihwYWRkciwgc2l6ZSk7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsKPiArICAg ICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgfQo+ICt9Cj4g Kwo+ICsjaWZkZWYgQ09ORklHX0FSQ0hfSEFTX1NZTkNfRE1BX0ZPUl9DUFUKPiArLyoKPiArICog TWFyayB0aGUgRC1jYWNoZSBjbGVhbiBmb3IgdGhlc2UgcGFnZXMgdG8gYXZvaWQgZXh0cmEgZmx1 c2hpbmcuCj4gKyAqLwo+ICtzdGF0aWMgdm9pZCBhcmNoX2RtYV9tYXJrX2RjYWNoZV9jbGVhbihw aHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUpCj4gK3sKPiArI2lmZGVmIENPTkZJR19BUkNI X0RNQV9NQVJLX0RDQUNIRV9DTEVBTgo+ICsgICAgICAgdW5zaWduZWQgbG9uZyBwZm4gPSBQRk5f VVAocGFkZHIpOwo+ICsgICAgICAgdW5zaWduZWQgbG9uZyBvZmYgPSBwYWRkciAmIChQQUdFX1NJ WkUgLSAxKTsKPiArICAgICAgIHNpemVfdCBsZWZ0ID0gc2l6ZTsKPiArCj4gKyAgICAgICBpZiAo b2ZmKQo+ICsgICAgICAgICAgICAgICBsZWZ0IC09IFBBR0VfU0laRSAtIG9mZjsKPiArCj4gKyAg ICAgICB3aGlsZSAobGVmdCA+PSBQQUdFX1NJWkUpIHsKPiArICAgICAgICAgICAgICAgc3RydWN0 IHBhZ2UgKnBhZ2UgPSBwZm5fdG9fcGFnZShwZm4rKyk7Cj4gKyAgICAgICAgICAgICAgIHNldF9i aXQoUEdfZGNhY2hlX2NsZWFuLCAmcGFnZS0+ZmxhZ3MpOwo+ICsgICAgICAgICAgICAgICBsZWZ0 IC09IFBBR0VfU0laRTsKPiArICAgICAgIH0KPiArI2VuZGlmCj4gK30KPiArCj4gK3ZvaWQgYXJj aF9zeW5jX2RtYV9mb3JfY3B1KHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSwKPiArICAg ICAgICAgICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQo+ICt7Cj4gKyAgICAgICBz d2l0Y2ggKGRpcikgewo+ICsgICAgICAgY2FzZSBETUFfVE9fREVWSUNFOgo+ICsgICAgICAgICAg ICAgICBicmVhazsKPiArCj4gKyAgICAgICBjYXNlIERNQV9GUk9NX0RFVklDRToKPiArICAgICAg IGNhc2UgRE1BX0JJRElSRUNUSU9OQUw6Cj4gKyAgICAgICAgICAgICAgIC8qIEZST01fREVWSUNF IGludmFsaWRhdGUgbmVlZGVkIGlmIHNwZWN1bGF0aXZlIENQVSBwcmVmZXRjaCBvbmx5ICovCj4g KyAgICAgICAgICAgICAgIGlmIChhcmNoX3N5bmNfZG1hX2NwdV9uZWVkc19wb3N0X2RtYV9mbHVz aCgpKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGFyY2hfZG1hX2NhY2hlX2ludihwYWRkciwg c2l6ZSk7Cj4gKwo+ICsgICAgICAgICAgICAgICBpZiAoc2l6ZSA+IFBBR0VfU0laRSkKPiArICAg ICAgICAgICAgICAgICAgICAgICBhcmNoX2RtYV9tYXJrX2RjYWNoZV9jbGVhbihwYWRkciwgc2l6 ZSk7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsKPiArICAgICAgIGRlZmF1bHQ6Cj4gKyAg ICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgfQo+ICt9Cj4gKyNlbmRpZgo+IC0tCj4gMi4z OS4yCj4KPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gbGludXgtcmlzY3YgbWFpbGluZyBsaXN0Cj4gbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFk Lm9yZwo+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt cmlzY3YKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LXNucHMtYXJjIG1haWxpbmcgbGlzdApsaW51eC1zbnBzLWFyY0BsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtc25w cy1hcmMK