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 E61A0EC8742 for ; Thu, 7 Sep 2023 17:24:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References:Cc: To:From:Subject:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=QfJH+395//6TSxTTuw2KoR5Rx1ED9Ft1iEJIPtYZo3o=; b=KGAEtQ+2PrQSIF 7bWrLVoHxFwKxOMh9GfZ735kL5LqcW0T6G+y1Ihvo5QYl1MaODMnjc8aB9doa9UTX8ukkdngsk+Cj ZdFrxb9scf/oVwCA0sFvqxzIiAtO2OJJrQ+0WWt5kmIOiLiosHh7ZXodFv8cT3d2T2K1YGuyjdNo6 eTvWl0yl7rje9pgYyR9jUvwGFoBb6i2cvTjKZpEb/DnZ84RzOcyR4T/buujpcbjtHDCA/8qGjp6V+ RlmujuRSEZKsOavTxp4NQyEgU+m97VqEKkertQ/ijUn5SBRzXhlunxdsqQOrXzX9ToB4/b/uON2tO gv5ezMF3QURW6zN6Cerg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qeIjE-00CTKe-2H; Thu, 07 Sep 2023 17:23:40 +0000 Received: from mail-bn8nam12on20604.outbound.protection.outlook.com ([2a01:111:f400:fe5b::604] helo=NAM12-BN8-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qeIj9-00CTK2-2Z for linux-arm-kernel@lists.infradead.org; Thu, 07 Sep 2023 17:23:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cn1lX2aBSkZpPduk3aTFZzQ2Q/yRLSPvHhcqOi3X3ajAhQGqwnBrS9fkmJAEo3EdzdrqI2ut0d0NgYHNr6Nnn9GcrPB78oGOiUuqFXsP9ywcIkHh9/obAX1fbRnKPJK2IQwsBA5HGDk2H+DD0fFUTk86m15jNVy3pIgH6CALYNj98a2AJbLDU7jr2KpXJGELe6KURrLkAI7zKEzQCCmygL9ychOFye/Bq441UhWy32zud0cNqCYdirzSniH+B9QlAfgFnK2yxoWiUbystIYsYyKx8Uog75VP1+ah32sQItTWAuShtSJOIHsZD4SRWoO8pdp1XuIjfqaIaF+dY8kWEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=L7fM/z4RMsK8eb1gWkmOiNHv0dr7V+SbpHXE4IDRn08=; b=Ar24JwucnzMpJxx24vG0f8DbIgxKBx9GVGHFED55apA7tHr4VHooaAzfkeicgQKkcTmkzy9T1d51RE9D0rjq6zaRYYqSbLHZ5lF5oDSwL/UZYxDbJPWjZiHkj/tULBdKqq6NGh2iT+tTL7eJzVNQDFMQQAlDpfRf9K7XAYvViBdf2kesfhMDjC77+Xcc4FpJAHKTsGQfP6t7mJLXI5/9YPWdlWtFSwTuGcaiN1aiUrIOQFk/rftSbu+wBEqvOZgdqkmBEeLaExXNhW/W3kGzmpgDbBmBuZ+avkBi7pPL+WFnfvyfiOpdPACHyMAr+AxoeZ7E6cmYysjKKLn6xjpb9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=L7fM/z4RMsK8eb1gWkmOiNHv0dr7V+SbpHXE4IDRn08=; b=S3eSvrGjw6dTB624igUe6j/Fw4AghbTBoYQdthpX6KCcadp7Ey7J3FbTy4Z8wTqYtJ8LTcUX6CkvXHxdVIZY7jtQsaLbvHB5s0hrSZ8Th8Zl+F/TxC5HqfK19HpHy/ipSronDdRwfH6qZHV7SVChGRq7nHPRt53jMWMxDrRqTmk= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from BY5PR12MB3683.namprd12.prod.outlook.com (2603:10b6:a03:1a5::16) by PH7PR12MB8794.namprd12.prod.outlook.com (2603:10b6:510:27d::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6745.34; Thu, 7 Sep 2023 17:23:26 +0000 Received: from BY5PR12MB3683.namprd12.prod.outlook.com ([fe80::8304:46bd:5017:3dcb]) by BY5PR12MB3683.namprd12.prod.outlook.com ([fe80::8304:46bd:5017:3dcb%6]) with mapi id 15.20.6745.034; Thu, 7 Sep 2023 17:23:26 +0000 Message-ID: Date: Thu, 7 Sep 2023 12:23:23 -0500 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 3/3] remoteproc: zynqmp: get TCM from device-tree Content-Language: en-US From: Tanmay Shah To: Mathieu Poirier Cc: "linux-remoteproc@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , Bjorn Andersson , Rob Herring , Krzysztof Kozlowski , "Simek, Michal" , Conor Dooley , "Pandey, Radhey Shyam" , "Levinsky, Ben" References: <20230829181900.2561194-1-tanmay.shah@amd.com> <20230829181900.2561194-4-tanmay.shah@amd.com> In-Reply-To: X-ClientProxiedBy: SJ0PR03CA0365.namprd03.prod.outlook.com (2603:10b6:a03:3a1::10) To BY5PR12MB3683.namprd12.prod.outlook.com (2603:10b6:a03:1a5::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR12MB3683:EE_|PH7PR12MB8794:EE_ X-MS-Office365-Filtering-Correlation-Id: b2c17d3b-dacf-483a-2be7-08dbafc72574 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uaa3R67NVfKiLlRqlME3s2vzIjrGY6WLvj8wwfsB4IBtAr7wo1SXk285BkMc4ppTbJcFcx8Fo+JJLHerb60Ev6Cw0KRovrVWUfU94+ve4B0z7hBJ3YV0tc95O2EWiSjA9B7EPPnUP98u1mT5T+ZH+CquQ0SHPNG2l2xgqUep76A0VkGvR/3KtdtVNQhPE18yLt4vZXbbXveknK8mMhbnzPUjmjBTDI6MbNz4v5fShIAjeHtyLKLLXUWWX2zjfxdLI+xXXA2dwBetGwSNL9hog4fdZwj2OzsizKfGp8A/4rTcy346ysel76bfeC9X53alXwWdZ7toWnM3SISYBJirXMIvhflfuBTnTomkntT4I07PQ77gg0nMYotHfcifNrV6n8qAFZkVu3CCSkL8GpVREOjVS3jiGL9Ogn66ePhldwjSN1pAqmXFXICcgp+TVjQfzE9UGiXHtJ0rDHTiupcRYy5/4odtRs8vtOAst87en45jBarD3vXOd3bJ5vRWoY+pfmbD/TJhj8P2rsLLstjGbHg0v/GbRmJWNURA3i1XM1tVGDfHjF2qEIXt0q/Dh6ooosgcrE10PVOPWyQvM0xzMgshrLNgbGpZLGGlqXQEoROE8EPVSUtNe6aXarE3Fulw5nG61MBajfoal1LQr1orOg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR12MB3683.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(366004)(376002)(39860400002)(136003)(346002)(451199024)(1800799009)(186009)(6506007)(478600001)(6486002)(86362001)(53546011)(26005)(31696002)(5660300002)(6512007)(83380400001)(31686004)(6666004)(2906002)(38100700002)(30864003)(66556008)(36756003)(66899024)(2616005)(6916009)(316002)(54906003)(66476007)(44832011)(66946007)(8676002)(4326008)(8936002)(41300700001)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SkhGdDdKWE9ZQTA4NExCUmlYTHJMOEtMUmZpRWZOWTBkdW9CMlZhS2FFSDVs?= =?utf-8?B?K01VeU80UWhEYmxpVmwrWXJyYnRMVnQ2S0NoNWQ3RkFaQmNkQWdwTkhQKzRh?= =?utf-8?B?YTJiVElNNHF1VGZld0tneGNNK1cyTTVpbURVUU5RdEJ4c1doOHlPVHN6T1hI?= =?utf-8?B?VS9PMFFOVy9CTm5lc0hlT3RoL25keHZBalJieGRLZFlYN3lFYTFTaEJERnhm?= =?utf-8?B?UHBCRFc0dzVVOEhqdENqRXJxZzkwSVRYVmd4RlpDTXNPa2tiZ3FBaVdPYTZ1?= =?utf-8?B?NG1vVFVkdWJiMDhyYnBKbXozOURIZjU1UnFZSVB3ZUkzakJDZVJoREp3dUor?= =?utf-8?B?a3NVOE9mc3Q2SmM0MWRLL0FMQWdyU3JKamJJS05Idjg0LzUyWktjVzBYNkRB?= =?utf-8?B?RXcvVVlXNFFvMDdCTDduanZQRHBvR0VOL2NITTlGRGkvWEdELzJ6ZVh2cXRr?= =?utf-8?B?cWMzT002U0hXMDJJMXB5aGxDaDJWN1NFditib1d4NXFSUmpKSzhHTXRTZndk?= =?utf-8?B?VjNMTzBEU1IvUlNXZjBjS2lqZTdzWVFQRFAxZjdKSTQzNzlBaVVWVTkyZURz?= =?utf-8?B?QzVLQk13SE5RbWhGTHFWNWVHR2ptQ09BYk9JYkgwTEpvcGpleWQxcG54ZDRz?= =?utf-8?B?am5ma0RBN0pIQTh2K3M4RmtqM3J6WGNBTGE1U3FMZ0daN2xpMkk2aHpwVTVE?= =?utf-8?B?ejY2dlh4Ni8rNkNvMGdLaFFjZ3BoUGpLdXozTFhCZVZYSmRLb3VHV1dkNnRj?= =?utf-8?B?d0ZTSGFya2JhOFp2WmxNOEVhNFRkN0NzYmpPM1ZnMVd0NWI2eFNkN0dieWVp?= =?utf-8?B?cExPK3dydkhuRnVSS2NUNlhHMTR3L1BXclI5MTRJYmdNcTFkSk9UQ3FENUhZ?= =?utf-8?B?R2pkd0FqWUNIa1R6NzNXWWl2K3BFRFJHTHRZa3Q4Q2JsaTJ2NE9NQm9JaHAz?= =?utf-8?B?eE8xOUk0MVd5QytOS2I5SXlMNjZWUDRXNTdZQmwra1V2cjgyZ1V1QmtCQlZF?= =?utf-8?B?cVRkNTJGN3J6VUNDM0JhVEdnbnAxQlJIcEpaWUFlMU5BeUU3NDJOS0pJQ0tM?= =?utf-8?B?K283UjVPbHVqZWo3ZWJHajBBY1RyYWRPWmk0ZTVUM0YxSEROLzBaOFo2c1pI?= =?utf-8?B?dmVEOENjcnpCVi9QTko3cXQyWmorTDVkMmFBOHRPNUxZbXV3RGR6am9UblJp?= =?utf-8?B?bTlFd2NvM0hoa29ZVmwvU2NQN1JQVEE2YkNOVEpacGtsV0ZmQTU4TW1VZ1VZ?= =?utf-8?B?dXdDb29qOFJDNm4xaWxUN0NndGNqUDNUYjhmNzk2Qy9sNUFjckF0L081bnlS?= =?utf-8?B?QktuNlFJSFFiR3V6NzU2OW4vVDdqTDd5eCthdUZHYms5ZzdLMEZZSWxjL0RC?= =?utf-8?B?WHZXZjBWTXlubjNZR2lzaFpDNTkrdFZtSGRKeXFuK0dDQ05YNkFsVE93dTEx?= =?utf-8?B?YjZvRmh4bVVBV2IyZVFuUitVR3lsWlI4NXc1dGVrRmdtSTMwUXlsb2JVVDRs?= =?utf-8?B?N0pPUnkxc29DMVl4eVIyRXdLQmhoNGU1WEc2OXZ3QjVwUmJFQzdmclZ0ZWF3?= =?utf-8?B?VFh4eVkxbDFGQTFkY3hQeGZWS3N4SC80NG1nd0RRdy9Odmo4VnNBL2tHWmlx?= =?utf-8?B?NzlwdHRXdnVWeTI3VTIzclNjUnViRUg4WWdyN29SbDlmT0Ywam9CQ2ZQMHdo?= =?utf-8?B?R3NkZnlnNm1qenNEUkdSUXA0NTR2VFkvZkFnSXU0Vm9zczFYaStlTXFQYWJY?= =?utf-8?B?MXpObkZuM3NRUTR5R203V2ZXS2NGTmZ2aEhGUEJzLzFLeElMVFVSc0xVbE1j?= =?utf-8?B?aVdYb1hQb25hQmx3U1d1QmtWS1BoQndMdFZxK3F6d25ReUdpK3F4azI2bzRa?= =?utf-8?B?MzNObituZEl2OGNBNnpCbFpudkMzK1lsTE10TUIreC9xQThBMmwvUVZocko2?= =?utf-8?B?NmpkTkZRKzFQU2V5Y2JFbTNnNXlKNENXemcrMTQvODFUczh6V256bXJPZGJt?= =?utf-8?B?bUlSQ0tVRUp0MG5KRWJWeUtKUlVWNU5OTmdhRmxPUlJVd2tXWngzZ2I4T2tO?= =?utf-8?B?OHZzSVN1aVNBcW16cjNRLzNLVzVVYlpSc1FTeUZsa1A0N0dlRzcxd01qT0lu?= =?utf-8?Q?TdRC44Qh+k02snDY0+42FEjOU?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: b2c17d3b-dacf-483a-2be7-08dbafc72574 X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB3683.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2023 17:23:26.7060 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /6hMTtv2SSEC3DHIy0ivGF6RyPHoRSey9Nd0+fcnuCWd51FYONKRllN6ZmBpyWsZ X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB8794 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230907_102336_343206_97CC8C60 X-CRM114-Status: GOOD ( 40.86 ) 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 Ck9uIDkvNi8yMyA1OjAyIFBNLCBUYW5tYXkgU2hhaCB3cm90ZToKPiBISSBNYXRoaWV1LAo+Cj4g VGhhbmtzIGZvciByZXZpZXdzLiBQbGVhc2UgZmluZCBteSBjb21tZW50cyBiZWxvdy4KPgo+Cj4g T24gOS82LzIzIDI6NDcgUE0sIE1hdGhpZXUgUG9pcmllciB3cm90ZToKPiA+IEhpIFRhbm1heSwK PiA+Cj4gPiBPbiBUdWUsIEF1ZyAyOSwgMjAyMyBhdCAxMToxOTowMEFNIC0wNzAwLCBUYW5tYXkg U2hhaCB3cm90ZToKPiA+ID4gVXNlIG5ldyBkdCBiaW5kaW5ncyB0byBnZXQgVENNIGFkZHJlc3Mg YW5kIHNpemUKPiA+ID4gaW5mb3JtYXRpb24uIEFsc28gbWFrZSBzdXJlIHRoYXQgZHJpdmVyIHN0 YXlzCj4gPiA+IGNvbXBhdGlibGUgd2l0aCBwcmV2aW91cyBkZXZpY2UtdHJlZSBiaW5kaW5ncy4K PiA+ID4gU28sIGlmIFRDTSBpbmZvcm1hdGlvbiBpc24ndCBhdmFpbGFibGUgaW4gZGV2aWNlLXRy ZWUKPiA+ID4gZm9yIHp5bnFtcCBwbGF0Zm9ybSwgaGFyZC1jb2RlZCBhZGRyZXNzIG9mIFRDTSB3 aWxsCj4gPiA+IGJlIHVzZWQuCj4gPiA+IAo+ID4gPiBOZXcgcGxhdGZvcm1zIHRoYXQgYXJlIGNv bXBhdGlibGUgd2l0aCB0aGlzCj4gPiA+IGRyaXZlciBtdXN0IGFkZCBUQ00gc3VwcG9ydCBpbiBk ZXZpY2UtdHJlZSBhcyBwZXIgbmV3Cj4gPiA+IGJpbmRpbmdzLgo+ID4gPiAKPiA+ID4gU2lnbmVk LW9mZi1ieTogVGFubWF5IFNoYWggPHRhbm1heS5zaGFoQGFtZC5jb20+Cj4gPiA+IC0tLQo+ID4g PiAgZHJpdmVycy9yZW1vdGVwcm9jL3hsbnhfcjVfcmVtb3RlcHJvYy5jIHwgMjc5ICsrKysrKysr KysrKysrKysrKystLS0tLQo+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDIyMSBpbnNlcnRpb25zKCsp LCA1OCBkZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3JlbW90 ZXByb2MveGxueF9yNV9yZW1vdGVwcm9jLmMgYi9kcml2ZXJzL3JlbW90ZXByb2MveGxueF9yNV9y ZW1vdGVwcm9jLmMKPiA+ID4gaW5kZXggZmVjYTZkZTY4ZGEyLi40ZWI2MmViNTQ1YzIgMTAwNjQ0 Cj4gPiA+IC0tLSBhL2RyaXZlcnMvcmVtb3RlcHJvYy94bG54X3I1X3JlbW90ZXByb2MuYwo+ID4g PiArKysgYi9kcml2ZXJzL3JlbW90ZXByb2MveGxueF9yNV9yZW1vdGVwcm9jLmMKPiA+ID4gQEAg LTM5LDE1ICszOSwxOSBAQCBlbnVtIHp5bnFtcF9yNV9jbHVzdGVyX21vZGUgewo+ID4gPiAgICog c3RydWN0IG1lbV9iYW5rX2RhdGEgLSBNZW1vcnkgQmFuayBkZXNjcmlwdGlvbgo+ID4gPiAgICoK PiA+ID4gICAqIEBhZGRyOiBTdGFydCBhZGRyZXNzIG9mIG1lbW9yeSBiYW5rCj4gPiA+ICsgKiBA ZGE6IGRldmljZSBhZGRyZXNzIGZvciB0aGlzIHRjbSBiYW5rCj4gPiA+ICAgKiBAc2l6ZTogU2l6 ZSBvZiBNZW1vcnkgYmFuawo+ID4gPiAgICogQHBtX2RvbWFpbl9pZDogUG93ZXItZG9tYWlucyBp ZCBvZiBtZW1vcnkgYmFuayBmb3IgZmlybXdhcmUgdG8gdHVybiBvbi9vZmYKPiA+ID4gKyAqIEBw bV9kb21haW5faWQyOiBzZWNvbmQgY29yZSdzIGNvcnJlc3BvbmRpbmcgVENNJ3MgcG1fZG9tYWlu X2lkCj4gPiA+ICAgKiBAYmFua19uYW1lOiBuYW1lIG9mIHRoZSBiYW5rIGZvciByZW1vdGVwcm9j IGZyYW1ld29yawo+ID4gPiAgICovCj4gPiA+ICBzdHJ1Y3QgbWVtX2JhbmtfZGF0YSB7Cj4gPiA+ IC0JcGh5c19hZGRyX3QgYWRkcjsKPiA+ID4gLQlzaXplX3Qgc2l6ZTsKPiA+ID4gKwl1MzIgYWRk cjsKPiA+ID4gKwl1MzIgZGE7Cj4gPiA+ICsJdTMyIHNpemU7Cj4gPgo+ID4gV2h5IGFyZSB0aGUg dHlwZXMgb2YgQGFkZHIgYW5kIEBzaXplIGNoYW5nZWQ/Cj4KPiBTbywgUjUgY2FuIGFjY2VzcyAz Mi1iaXQgYWRkcmVzcyByYW5nZSBvbmx5LiBCZWZvcmUgSSBoYWQgbWlzc2VkIHRoaXMuCj4KPiBJ biBEZXZjZS10cmVlIGJpbmRpbmdzIEkgYW0ga2VlcGluZyBhZGRyZXNzLWNlbGxzIGFuZCBzaXpl LWNlbGxzIGFzIDIuCj4KPiBTbywgb3V0IG9mIDY0LWJpdHMgb25seSAzMi1iaXRzIHdpbGwgYmUg dXNlZCB0byBnZXQgYWRkcmVzcyBvZiBUQ00uIFNhbWUgZm9yIHNpemUuCj4KPiBUaGlzIG1vdGl2 YXRlZCBtZSB0byBjaGFuZ2UgdGhlIHR5cGUgb2YgQGFkZHIgYW5kIEBzaXplIGZpZWxkcy4gSXQg ZG9lc24ndCBoYXZlIGFueSBzaWRlIGVmZmVjdHMuCj4KPgo+ID4KPiA+ID4gIAl1MzIgcG1fZG9t YWluX2lkOwo+ID4gPiAtCWNoYXIgKmJhbmtfbmFtZTsKPiA+ID4gKwl1MzIgcG1fZG9tYWluX2lk MjsKPiA+ID4gKwljaGFyIGJhbmtfbmFtZVszMl07Cj4gPgo+ID4gU2FtZQo+Cj4gTm93IHdlIGhh dmUgInJlZy1uYW1lcyIgcHJvcGVydHkgaW4gZHRzIHNvLCB3aGVuIHRoYXQgaXMgYXZhaWxhYmxl LCBJIHRyeSB0byB1c2UgaXQuCj4KPiBTbywgaW5zdGVhZCBvZiBrZWVwaW5nIHNpbXBsZSBwb2lu dGVyLCBJIGNvcHkgbmFtZSBmcm9tICJzdHJ1Y3QgcmVzb3VyY2VzIi4gU28sIEkgY2hhbmdlZCBi YW5rX25hbWUKPgo+IGZyb20gcG9pbnRlciB0byBhcnJheS4KPgo+Cj4gPgo+ID4gPiAgfTsKPiA+ ID4gIAo+ID4gPiAgLyoqCj4gPiA+IEBAIC03NSwxMSArNzksMTcgQEAgc3RydWN0IG1ib3hfaW5m byB7Cj4gPiA+ICAgKiBIYXJkY29kZWQgVENNIGJhbmsgdmFsdWVzLiBUaGlzIHdpbGwgYmUgcmVt b3ZlZCBvbmNlIFRDTSBiaW5kaW5ncyBhcmUKPiA+ID4gICAqIGFjY2VwdGVkIGZvciBzeXN0ZW0t ZHQgc3BlY2lmaWNhdGlvbnMgYW5kIHVwc3RyZWFtZWQgaW4gbGludXgga2VybmVsCj4gPiA+ICAg Ki8KPiA+ID4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWVtX2JhbmtfZGF0YSB6eW5xbXBfdGNtX2Jh bmtzW10gPSB7Cj4gPiA+IC0JezB4ZmZlMDAwMDBVTCwgMHgxMDAwMFVMLCBQRF9SNV8wX0FUQ00s ICJhdGNtMCJ9LCAvKiBUQ00gNjRLQiBlYWNoICovCj4gPiA+IC0JezB4ZmZlMjAwMDBVTCwgMHgx MDAwMFVMLCBQRF9SNV8wX0JUQ00sICJidGNtMCJ9LAo+ID4gPiAtCXsweGZmZTkwMDAwVUwsIDB4 MTAwMDBVTCwgUERfUjVfMV9BVENNLCAiYXRjbTEifSwKPiA+ID4gLQl7MHhmZmViMDAwMFVMLCAw eDEwMDAwVUwsIFBEX1I1XzFfQlRDTSwgImJ0Y20xIn0sCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IG1lbV9iYW5rX2RhdGEgenlucW1wX3RjbV9iYW5rc19zcGxpdFtdID0gewo+ID4gPiArCXsw eGZmZTAwMDAwLCAweDAsIDB4MTAwMDAsIFBEX1I1XzBfQVRDTSwgMCwgImF0Y20wIn0sIC8qIFRD TSA2NEtCIGVhY2ggKi8KPiA+ID4gKwl7MHhmZmUyMDAwMCwgMHgyMDAwMCwgMHgxMDAwMCwgUERf UjVfMF9CVENNLCAwLCAiYnRjbTAifSwKPiA+Cj4gPiBIZXJlIHRoZSBkZXZpY2UgYWRkcmVzcyBm b3IgYnRjbTAgaXMgMHgyMDAwMCB3aGlsZSBpbiB0aGUgY292ZXIgbGV0dGVyIGl0IGlzCj4gPiAw eDIwMDAuCj4KPiBUaGFua3MgZm9yIGNhdGNoaW5nIHRoaXMuIFRoaXMgaXMgYWN0dWFsbHkgdHlw byBpbiBjb3Zlci1sZXR0ZXIuIEl0IHNob3VsZCBiZSAweDIwMDAwIGluIGNvdmVyLWxldHRlci4K Pgo+ID4KPiA+ID4gKwl7MHhmZmU5MDAwMCwgMHgwLCAweDEwMDAwLCBQRF9SNV8xX0FUQ00sIDAs ICJhdGNtMSJ9LAo+ID4gPiArCXsweGZmZWIwMDAwLCAweDIwMDAwLCAweDEwMDAwLCBQRF9SNV8x X0JUQ00sIDAsICJidGNtMSJ9LAo+ID4KPiA+IFNhbWUKPgo+IFNhbWUgaGVyZTogSXQgc2hvdWxk IGJlIDB4MjAwMDAgaW4gY292ZXItbGV0dGVyLgo+Cj4gPgo+ID4gPiArfTsKPiA+ID4gKwo+ID4g PiArLyogVENNIDEyOEtCIGVhY2ggKi8KPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWVtX2Jh bmtfZGF0YSB6eW5xbXBfdGNtX2JhbmtzX2xvY2tzdGVwW10gPSB7Cj4gPiA+ICsJezB4ZmZlMDAw MDAsIDB4MCwgMHgyMDAwMCwgUERfUjVfMF9BVENNLCBQRF9SNV8xX0FUQ00sICJhdGNtMCJ9LAo+ ID4gPiArCXsweGZmZTIwMDAwLCAweDIwMDAwLCAweDIwMDAwLCBQRF9SNV8wX0JUQ00sIFBEX1I1 XzFfQlRDTSwgImJ0Y20wIn0sCj4gPiA+ICB9Owo+ID4gPiAgCj4gPiA+ICAvKioKPiA+ID4gQEAg LTQyMiw2ICs0MzIsNyBAQCBzdGF0aWMgaW50IHp5bnFtcF9yNV9tZW1fcmVnaW9uX3VubWFwKHN0 cnVjdCBycHJvYyAqcnByb2MsCj4gPiA+ICAJCQkJICAgICAgc3RydWN0IHJwcm9jX21lbV9lbnRy eSAqbWVtKQo+ID4gPiAgewo+ID4gPiAgCWlvdW5tYXAoKHZvaWQgX19pb21lbSAqKW1lbS0+dmEp Owo+ID4gPiArCj4gPgo+ID4gU3B1cmlvdXMgY2hhbmdlCj4gU3VyZSzCoCBJIHdpbGwgcmVtb3Zl IGl0Lgo+ID4KPiA+ID4gIAlyZXR1cm4gMDsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiBAQCAtNTI2 LDMwICs1MzcsNiBAQCBzdGF0aWMgaW50IHRjbV9tZW1fbWFwKHN0cnVjdCBycHJvYyAqcnByb2Ms Cj4gPiA+ICAJLyogY2xlYXIgVENNcyAqLwo+ID4gPiAgCW1lbXNldF9pbyh2YSwgMCwgbWVtLT5s ZW4pOwo+ID4gPiAgCj4gPiA+IC0JLyoKPiA+ID4gLQkgKiBUaGUgUjVzIGV4cGVjdCB0aGVpciBU Q00gYmFua3MgdG8gYmUgYXQgYWRkcmVzcyAweDAgYW5kIDB4MjAwMCwKPiA+ID4gLQkgKiB3aGls ZSBvbiB0aGUgTGludXggc2lkZSB0aGV5IGFyZSBhdCAweGZmZXh4eHh4Lgo+ID4gPiAtCSAqCj4g PiA+IC0JICogWmVybyBvdXQgdGhlIGhpZ2ggMTIgYml0cyBvZiB0aGUgYWRkcmVzcy4gVGhpcyB3 aWxsIGdpdmUKPiA+ID4gLQkgKiBleHBlY3RlZCB2YWx1ZXMgZm9yIFRDTSBCYW5rcyAwQSBhbmQg MEIgKDB4MCBhbmQgMHgyMDAwMCkuCj4gPiA+IC0JICovCj4gPiA+IC0JbWVtLT5kYSAmPSAweDAw MGZmZmZmOwo+ID4gPiAtCj4gPiA+IC0JLyoKPiA+ID4gLQkgKiBUQ00gQmFua3MgMUEgYW5kIDFC IHN0aWxsIGhhdmUgdG8gYmUgdHJhbnNsYXRlZC4KPiA+ID4gLQkgKgo+ID4gPiAtCSAqIEJlbG93 IGhhbmRsZSB0aGVzZSB0d28gYmFua3MnIGFic29sdXRlIGFkZHJlc3NlcyAoMHhmZmU5MDAwMCBh bmQKPiA+ID4gLQkgKiAweGZmZWIwMDAwKSBhbmQgY29udmVydCB0byB0aGUgZXhwZWN0ZWQgcmVs YXRpdmUgYWRkcmVzc2VzCj4gPiA+IC0JICogKDB4MCBhbmQgMHgyMDAwMCkuCj4gPiA+IC0JICov Cj4gPiA+IC0JaWYgKG1lbS0+ZGEgPT0gMHg5MDAwMCB8fCBtZW0tPmRhID09IDB4QjAwMDApCj4g PiA+IC0JCW1lbS0+ZGEgLT0gMHg5MDAwMDsKPiA+ID4gLQo+ID4gPiAtCS8qIGlmIHRyYW5zbGF0 ZWQgVENNIGJhbmsgYWRkcmVzcyBpcyBub3QgdmFsaWQgcmVwb3J0IGVycm9yICovCj4gPiA+IC0J aWYgKG1lbS0+ZGEgIT0gMHgwICYmIG1lbS0+ZGEgIT0gMHgyMDAwMCkgewo+ID4gPiAtCQlkZXZf ZXJyKCZycHJvYy0+ZGV2LCAiaW52YWxpZCBUQ00gYWRkcmVzczogJXhcbiIsIG1lbS0+ZGEpOwo+ ID4gPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gLQl9Cj4gPiA+ICAJcmV0dXJuIDA7Cj4gPiA+ ICB9Cj4gPiA+ICAKPiA+ID4gQEAgLTU3MSw2ICs1NTgsNyBAQCBzdGF0aWMgaW50IGFkZF90Y21f Y2FydmVvdXRfc3BsaXRfbW9kZShzdHJ1Y3QgcnByb2MgKnJwcm9jKQo+ID4gPiAgCXUzMiBwbV9k b21haW5faWQ7Cj4gPiA+ICAJc2l6ZV90IGJhbmtfc2l6ZTsKPiA+ID4gIAljaGFyICpiYW5rX25h bWU7Cj4gPiA+ICsJdTMyIGRhOwo+ID4gPiAgCj4gPiA+ICAJcjVfY29yZSA9IHJwcm9jLT5wcml2 Owo+ID4gPiAgCWRldiA9IHI1X2NvcmUtPmRldjsKPiA+ID4gQEAgLTU4Niw2ICs1NzQsNyBAQCBz dGF0aWMgaW50IGFkZF90Y21fY2FydmVvdXRfc3BsaXRfbW9kZShzdHJ1Y3QgcnByb2MgKnJwcm9j KQo+ID4gPiAgCQliYW5rX25hbWUgPSByNV9jb3JlLT50Y21fYmFua3NbaV0tPmJhbmtfbmFtZTsK PiA+ID4gIAkJYmFua19zaXplID0gcjVfY29yZS0+dGNtX2JhbmtzW2ldLT5zaXplOwo+ID4gPiAg CQlwbV9kb21haW5faWQgPSByNV9jb3JlLT50Y21fYmFua3NbaV0tPnBtX2RvbWFpbl9pZDsKPiA+ ID4gKwkJZGEgPSByNV9jb3JlLT50Y21fYmFua3NbaV0tPmRhOwo+ID4gPiAgCj4gPiA+ICAJCXJl dCA9IHp5bnFtcF9wbV9yZXF1ZXN0X25vZGUocG1fZG9tYWluX2lkLAo+ID4gPiAgCQkJCQkgICAg IFpZTlFNUF9QTV9DQVBBQklMSVRZX0FDQ0VTUywgMCwKPiA+ID4gQEAgLTU5OSw3ICs1ODgsNyBA QCBzdGF0aWMgaW50IGFkZF90Y21fY2FydmVvdXRfc3BsaXRfbW9kZShzdHJ1Y3QgcnByb2MgKnJw cm9jKQo+ID4gPiAgCQkJYmFua19uYW1lLCBiYW5rX2FkZHIsIGJhbmtfc2l6ZSk7Cj4gPiA+ICAK PiA+ID4gIAkJcnByb2NfbWVtID0gcnByb2NfbWVtX2VudHJ5X2luaXQoZGV2LCBOVUxMLCBiYW5r X2FkZHIsCj4gPiA+IC0JCQkJCQkgYmFua19zaXplLCBiYW5rX2FkZHIsCj4gPiA+ICsJCQkJCQkg YmFua19zaXplLCBkYSwKPiA+ID4gIAkJCQkJCSB0Y21fbWVtX21hcCwgdGNtX21lbV91bm1hcCwK PiA+ID4gIAkJCQkJCSBiYW5rX25hbWUpOwo+ID4gPiAgCQlpZiAoIXJwcm9jX21lbSkgewo+ID4g PiBAQCAtNjMyLDE0ICs2MjEsMTQgQEAgc3RhdGljIGludCBhZGRfdGNtX2NhcnZlb3V0X3NwbGl0 X21vZGUoc3RydWN0IHJwcm9jICpycHJvYykKPiA+ID4gICAqLwo+ID4gPiAgc3RhdGljIGludCBh ZGRfdGNtX2NhcnZlb3V0X2xvY2tzdGVwX21vZGUoc3RydWN0IHJwcm9jICpycHJvYykKPiA+ID4g IHsKPiA+ID4gKwl1MzIgcG1fZG9tYWluX2lkLCBkYSwgcG1fZG9tYWluX2lkMjsKPiA+ID4gIAlz dHJ1Y3QgcnByb2NfbWVtX2VudHJ5ICpycHJvY19tZW07Cj4gPiA+ICAJc3RydWN0IHp5bnFtcF9y NV9jb3JlICpyNV9jb3JlOwo+ID4gPiAgCWludCBpLCBudW1fYmFua3MsIHJldDsKPiA+ID4gLQlw aHlzX2FkZHJfdCBiYW5rX2FkZHI7Cj4gPiA+IC0Jc2l6ZV90IGJhbmtfc2l6ZSA9IDA7Cj4gPiA+ ICsJdTMyIGJhbmtfc2l6ZSA9IDA7Cj4gPiA+ICAJc3RydWN0IGRldmljZSAqZGV2Owo+ID4gPiAt CXUzMiBwbV9kb21haW5faWQ7Cj4gPiA+ICAJY2hhciAqYmFua19uYW1lOwo+ID4gPiArCXUzMiBi YW5rX2FkZHI7Cj4gPiA+ICAKPiA+ID4gIAlyNV9jb3JlID0gcnByb2MtPnByaXY7Cj4gPiA+ICAJ ZGV2ID0gcjVfY29yZS0+ZGV2Owo+ID4gPiBAQCAtNjUzLDEyICs2NDIsMTYgQEAgc3RhdGljIGlu dCBhZGRfdGNtX2NhcnZlb3V0X2xvY2tzdGVwX21vZGUoc3RydWN0IHJwcm9jICpycHJvYykKPiA+ ID4gIAkgKiBTbywgRW5hYmxlIGVhY2ggVENNIGJsb2NrIGluZGl2aWR1YWxseSwgYnV0IGFkZCB0 aGVpciBzaXplCj4gPiA+ICAJICogdG8gY3JlYXRlIGNvbnRpZ3VvdXMgbWVtb3J5IHJlZ2lvbi4K PiA+ID4gIAkgKi8KPiA+ID4gLQliYW5rX2FkZHIgPSByNV9jb3JlLT50Y21fYmFua3NbMF0tPmFk ZHI7Cj4gPiA+IC0JYmFua19uYW1lID0gcjVfY29yZS0+dGNtX2JhbmtzWzBdLT5iYW5rX25hbWU7 Cj4gPiA+IC0KPiA+ID4gIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2JhbmtzOyBpKyspIHsKPiA+ID4g LQkJYmFua19zaXplICs9IHI1X2NvcmUtPnRjbV9iYW5rc1tpXS0+c2l6ZTsKPiA+ID4gKwkJYmFu a19hZGRyID0gcjVfY29yZS0+dGNtX2JhbmtzW2ldLT5hZGRyOwo+ID4gPiArCQliYW5rX25hbWUg PSByNV9jb3JlLT50Y21fYmFua3NbaV0tPmJhbmtfbmFtZTsKPiA+ID4gKwkJYmFua19zaXplID0g cjVfY29yZS0+dGNtX2JhbmtzW2ldLT5zaXplOwo+ID4gPiAgCQlwbV9kb21haW5faWQgPSByNV9j b3JlLT50Y21fYmFua3NbaV0tPnBtX2RvbWFpbl9pZDsKPiA+ID4gKwkJcG1fZG9tYWluX2lkMiA9 IHI1X2NvcmUtPnRjbV9iYW5rc1tpXS0+cG1fZG9tYWluX2lkMjsKPiA+ID4gKwkJZGEgPSByNV9j b3JlLT50Y21fYmFua3NbaV0tPmRhOwo+ID4gPiArCj4gPiA+ICsJCWRldl9kYmcoZGV2LCAiVENN ICVzIGFkZHI9MHgleCwgc2l6ZT0weCV4IiwKPiA+ID4gKwkJCWJhbmtfbmFtZSwgYmFua19hZGRy LCBiYW5rX3NpemUpOwo+ID4gPiAgCj4gPiA+ICAJCS8qIFR1cm4gb24gZWFjaCBUQ00gYmFuayBp bmRpdmlkdWFsbHkgKi8KPiA+ID4gIAkJcmV0ID0genlucW1wX3BtX3JlcXVlc3Rfbm9kZShwbV9k b21haW5faWQsCj4gPiA+IEBAIC02NjgsMjMgKzY2MSwyOCBAQCBzdGF0aWMgaW50IGFkZF90Y21f Y2FydmVvdXRfbG9ja3N0ZXBfbW9kZShzdHJ1Y3QgcnByb2MgKnJwcm9jKQo+ID4gPiAgCQkJZGV2 X2VycihkZXYsICJmYWlsZWQgdG8gdHVybiBvbiBUQ00gMHgleCIsIHBtX2RvbWFpbl9pZCk7Cj4g PiA+ICAJCQlnb3RvIHJlbGVhc2VfdGNtX2xvY2tzdGVwOwo+ID4gPiAgCQl9Cj4gPiA+IC0JfQo+ ID4gPiAgCj4gPiA+IC0JZGV2X2RiZyhkZXYsICJUQ00gYWRkIGNhcnZlb3V0IGxvY2tzdGVwIG1v ZGUgJXMgYWRkcj0weCVsbHgsIHNpemU9MHglbHgiLAo+ID4gPiAtCQliYW5rX25hbWUsIGJhbmtf YWRkciwgYmFua19zaXplKTsKPiA+ID4gLQo+ID4gPiAtCS8qIFJlZ2lzdGVyIFRDTSBhZGRyZXNz IHJhbmdlLCBUQ00gbWFwIGFuZCB1bm1hcCBmdW5jdGlvbnMgKi8KPiA+ID4gLQlycHJvY19tZW0g PSBycHJvY19tZW1fZW50cnlfaW5pdChkZXYsIE5VTEwsIGJhbmtfYWRkciwKPiA+ID4gLQkJCQkJ IGJhbmtfc2l6ZSwgYmFua19hZGRyLAo+ID4gPiAtCQkJCQkgdGNtX21lbV9tYXAsIHRjbV9tZW1f dW5tYXAsCj4gPiA+IC0JCQkJCSBiYW5rX25hbWUpOwo+ID4gPiAtCWlmICghcnByb2NfbWVtKSB7 Cj4gPiA+IC0JCXJldCA9IC1FTk9NRU07Cj4gPiA+IC0JCWdvdG8gcmVsZWFzZV90Y21fbG9ja3N0 ZXA7Cj4gPiA+IC0JfQo+ID4gPiArCQkvKiBUdXJuIG9uIGVhY2ggVENNIGJhbmsgaW5kaXZpZHVh bGx5ICovCj4gPiA+ICsJCXJldCA9IHp5bnFtcF9wbV9yZXF1ZXN0X25vZGUocG1fZG9tYWluX2lk MiwKPiA+ID4gKwkJCQkJICAgICBaWU5RTVBfUE1fQ0FQQUJJTElUWV9BQ0NFU1MsIDAsCj4gPiA+ ICsJCQkJCSAgICAgWllOUU1QX1BNX1JFUVVFU1RfQUNLX0JMT0NLSU5HKTsKPiA+ID4gKwkJaWYg KHJldCA8IDApIHsKPiA+ID4gKwkJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIHR1cm4gb24gVENN IDB4JXgiLCBwbV9kb21haW5faWQyKTsKPiA+ID4gKwkJCWdvdG8gcmVsZWFzZV90Y21fbG9ja3N0 ZXA7Cj4gPiA+ICsJCX0KPiA+ID4gIAo+ID4gPiAtCS8qIElmIHJlZ2lzdHJhdGlvbiBpcyBzdWNj ZXNzLCBhZGQgY2FydmVvdXRzICovCj4gPiA+IC0JcnByb2NfYWRkX2NhcnZlb3V0KHJwcm9jLCBy cHJvY19tZW0pOwo+ID4gPiArCQkvKiBSZWdpc3RlciBUQ00gYWRkcmVzcyByYW5nZSwgVENNIG1h cCBhbmQgdW5tYXAgZnVuY3Rpb25zICovCj4gPiA+ICsJCXJwcm9jX21lbSA9IHJwcm9jX21lbV9l bnRyeV9pbml0KGRldiwgTlVMTCwgYmFua19hZGRyLAo+ID4gPiArCQkJCQkJIGJhbmtfc2l6ZSwg ZGEsCj4gPiA+ICsJCQkJCQkgdGNtX21lbV9tYXAsIHRjbV9tZW1fdW5tYXAsCj4gPiA+ICsJCQkJ CQkgYmFua19uYW1lKTsKPiA+ID4gKwkJaWYgKCFycHJvY19tZW0pIHsKPiA+ID4gKwkJCXJldCA9 IC1FTk9NRU07Cj4gPiA+ICsJCQlnb3RvIHJlbGVhc2VfdGNtX2xvY2tzdGVwOwo+ID4gPiArCQl9 Cj4gPiA+ICsKPiA+ID4gKwkJcnByb2NfYWRkX2NhcnZlb3V0KHJwcm9jLCBycHJvY19tZW0pOwo+ ID4gPiArCX0KPiA+ID4gIAo+ID4gPiAgCXJldHVybiAwOwo+ID4gPiAgCj4gPiA+IEBAIC02OTMs NyArNjkxLDEyIEBAIHN0YXRpYyBpbnQgYWRkX3RjbV9jYXJ2ZW91dF9sb2Nrc3RlcF9tb2RlKHN0 cnVjdCBycHJvYyAqcnByb2MpCj4gPiA+ICAJZm9yIChpLS07IGkgPj0gMDsgaS0tKSB7Cj4gPiA+ ICAJCXBtX2RvbWFpbl9pZCA9IHI1X2NvcmUtPnRjbV9iYW5rc1tpXS0+cG1fZG9tYWluX2lkOwo+ ID4gPiAgCQl6eW5xbXBfcG1fcmVsZWFzZV9ub2RlKHBtX2RvbWFpbl9pZCk7Cj4gPiA+ICsJCWlm IChwbV9kb21haW5faWQyKSB7Cj4gPiA+ICsJCQlwbV9kb21haW5faWQyID0gcjVfY29yZS0+dGNt X2JhbmtzW2ldLT5wbV9kb21haW5faWQyOwo+ID4gPiArCQkJenlucW1wX3BtX3JlbGVhc2Vfbm9k ZShwbV9kb21haW5faWQyKTsKPiA+ID4gKwkJfQo+ID4gPiAgCX0KPiA+ID4gKwo+ID4gPiAgCXJl dHVybiByZXQ7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gQEAgLTgwMCwxNyArODAzLDIzIEBAIHN0 YXRpYyBpbnQgenlucW1wX3I1X3Jwcm9jX3ByZXBhcmUoc3RydWN0IHJwcm9jICpycHJvYykKPiA+ ID4gICAqLwo+ID4gPiAgc3RhdGljIGludCB6eW5xbXBfcjVfcnByb2NfdW5wcmVwYXJlKHN0cnVj dCBycHJvYyAqcnByb2MpCj4gPiA+ICB7Cj4gPiA+ICsJdTMyIHBtX2RvbWFpbl9pZCwgcG1fZG9t YWluX2lkMjsKPiA+ID4gIAlzdHJ1Y3QgenlucW1wX3I1X2NvcmUgKnI1X2NvcmU7Cj4gPiA+IC0J dTMyIHBtX2RvbWFpbl9pZDsKPiA+ID4gIAlpbnQgaTsKPiA+ID4gIAo+ID4gPiAgCXI1X2NvcmUg PSBycHJvYy0+cHJpdjsKPiA+ID4gIAo+ID4gPiAgCWZvciAoaSA9IDA7IGkgPCByNV9jb3JlLT50 Y21fYmFua19jb3VudDsgaSsrKSB7Cj4gPiA+ICAJCXBtX2RvbWFpbl9pZCA9IHI1X2NvcmUtPnRj bV9iYW5rc1tpXS0+cG1fZG9tYWluX2lkOwo+ID4gPiArCQlwbV9kb21haW5faWQyID0gcjVfY29y ZS0+dGNtX2JhbmtzW2ldLT5wbV9kb21haW5faWQyOwo+ID4gPiAgCQlpZiAoenlucW1wX3BtX3Jl bGVhc2Vfbm9kZShwbV9kb21haW5faWQpKQo+ID4gPiAgCQkJZGV2X3dhcm4ocjVfY29yZS0+ZGV2 LAo+ID4gPiAgCQkJCSAiY2FuJ3QgdHVybiBvZmYgVENNIGJhbmsgMHgleCIsIHBtX2RvbWFpbl9p ZCk7Cj4gPiA+ICsJCWlmIChwbV9kb21haW5faWQyICYmIHp5bnFtcF9wbV9yZWxlYXNlX25vZGUo cG1fZG9tYWluX2lkMikpCj4gPiA+ICsJCQlkZXZfd2FybihyNV9jb3JlLT5kZXYsCj4gPiA+ICsJ CQkJICJjYW4ndCB0dXJuIG9mZiBUQ00gYmFuayAweCV4IiwgcG1fZG9tYWluX2lkMik7Cj4gPiA+ ICsJCWRldl9kYmcocjVfY29yZS0+ZGV2LCAicG1fZG9tYWluX2lkPSVkLCBwbV9kb21haW5faWQy PSVkXG4iLAo+ID4gPiArCQkJcG1fZG9tYWluX2lkLCBwbV9kb21haW5faWQyKTsKPiA+ID4gIAl9 Cj4gPiA+ICAKPiA+ID4gIAlyZXR1cm4gMDsKPiA+ID4gQEAgLTg4Myw2ICs4OTIsMTM3IEBAIHN0 YXRpYyBzdHJ1Y3QgenlucW1wX3I1X2NvcmUgKnp5bnFtcF9yNV9hZGRfcnByb2NfY29yZShzdHJ1 Y3QgZGV2aWNlICpjZGV2KQo+ID4gPiAgCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gPiA+ICB9Cj4g PiA+ICAKPiA+ID4gK3N0YXRpYyBpbnQgenlucW1wX3I1X2dldF90Y21fbm9kZV9mcm9tX2R0KHN0 cnVjdCB6eW5xbXBfcjVfY2x1c3RlciAqY2x1c3RlcikKPiA+ID4gK3sKPiA+ID4gKwlpbnQgaSwg aiwgdGNtX2JhbmtfY291bnQsIHJldCA9IC1FSU5WQUw7Cj4gPiA+ICsJc3RydWN0IHp5bnFtcF9y NV9jb3JlICpyNV9jb3JlOwo+ID4gPiArCXN0cnVjdCBvZl9waGFuZGxlX2FyZ3Mgb3V0X2FyZzsK PiA+ID4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpjcGRldjsKPiA+ID4gKwlzdHJ1Y3QgcmVz b3VyY2UgKnJlcyA9IE5VTEw7Cj4gPiA+ICsJdTY0IGFic19hZGRyID0gMCwgc2l6ZSA9IDA7Cj4g PiA+ICsJc3RydWN0IG1lbV9iYW5rX2RhdGEgKnRjbTsKPiA+ID4gKwlzdHJ1Y3QgZGV2aWNlX25v ZGUgKm5wLCAqbnAxID0gTlVMTDsKPiA+ID4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gPiA+ICsK PiA+ID4gKwlmb3IgKGkgPSAwOyBpIDwgY2x1c3Rlci0+Y29yZV9jb3VudDsgaSsrKSB7Cj4gPiA+ ICsJCXI1X2NvcmUgPSBjbHVzdGVyLT5yNV9jb3Jlc1tpXTsKPiA+ID4gKwkJZGV2ID0gcjVfY29y ZS0+ZGV2Owo+ID4gPiArCQlucCA9IGRldl9vZl9ub2RlKGRldik7Cj4gPiA+ICsKPiA+ID4gKwkJ Lyogd2UgaGF2ZSBhZGRyZXNzIGNlbGwgMiBhbmQgc2l6ZSBjZWxsIGFzIDIgKi8KPiA+ID4gKwkJ cmV0ID0gb2ZfcHJvcGVydHlfY291bnRfZWxlbXNfb2Zfc2l6ZShucCwgInJlZyIsCj4gPiA+ICsJ CQkJCQkgICAgICA0ICogc2l6ZW9mKHUzMikpOwo+ID4gPiArCQlpZiAocmV0IDw9IDApIHsKPiA+ ID4gKwkJCXJldCA9IC1FSU5WQUw7Cj4gPiA+ICsJCQlnb3RvIGZhaWxfdGNtOwo+ID4gPiArCQl9 Cj4gPiA+ICsKPiA+ID4gKwkJdGNtX2JhbmtfY291bnQgPSByZXQ7Cj4gPiA+ICsKPiA+ID4gKwkJ cjVfY29yZS0+dGNtX2JhbmtzID0gZGV2bV9rY2FsbG9jKGRldiwgdGNtX2JhbmtfY291bnQsCj4g PiA+ICsJCQkJCQkgIHNpemVvZihzdHJ1Y3QgbWVtX2JhbmtfZGF0YSAqKSwKPiA+ID4gKwkJCQkJ CSAgR0ZQX0tFUk5FTCk7Cj4gPiA+ICsJCWlmICghcjVfY29yZS0+dGNtX2JhbmtzKSB7Cj4gPiA+ ICsJCQlyZXQgPSAtRU5PTUVNOwo+ID4gPiArCQkJZ290byBmYWlsX3RjbTsKPiA+ID4gKwkJfQo+ ID4gPiArCj4gPiA+ICsJCXI1X2NvcmUtPnRjbV9iYW5rX2NvdW50ID0gdGNtX2JhbmtfY291bnQ7 Cj4gPiA+ICsJCWZvciAoaiA9IDA7IGogPCB0Y21fYmFua19jb3VudDsgaisrKSB7Cj4gPiA+ICsJ CQl0Y20gPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgbWVtX2JhbmtfZGF0YSAqKSwgR0ZQX0tFUk5F TCk7Cj4gPiA+ICsJCQlpZiAoIXRjbSkgewo+ID4gPiArCQkJCXJldCA9IC1FTk9NRU07Cj4gPiA+ ICsJCQkJZ290byBmYWlsX3RjbTsKPiA+ID4gKwkJCX0KPiA+ID4gKwo+ID4gPiArCQkJcjVfY29y ZS0+dGNtX2JhbmtzW2pdID0gdGNtOwo+ID4gPiArCQkJLyogZ2V0IHRjbSBhZGRyZXNzIHdpdGhv dXQgdHJhbnNsYXRpb24gKi8KPiA+ID4gKwkJCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfcmVnKG5w LCBqLCAmYWJzX2FkZHIsICZzaXplKTsKPiA+ID4gKwkJCWlmIChyZXQpIHsKPiA+ID4gKwkJCQlk ZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgcmVnIHByb3BlcnR5XG4iKTsKPiA+ID4gKwkJCQln b3RvIGZhaWxfdGNtOwo+ID4gPiArCQkJfQo+ID4gPiArCj4gPiA+ICsJCQkvKgo+ID4gPiArCQkJ ICogcmVtb3RlIHByb2Nlc3NvciBjYW4gYWRkcmVzcyBvbmx5IDMyIGJpdHMKPiA+ID4gKwkJCSAq IHNvIGNvbnZlcnQgNjQtYml0cyBpbnRvIDMyLWJpdHMuIFRoaXMgd2lsbCBkaXNjYXJkCj4gPiA+ ICsJCQkgKiBhbnkgdW53YW50ZWQgdXBwZXIgMzItYml0cy4KPiA+ID4gKwkJCSAqLwo+ID4gPiAr CQkJdGNtLT5kYSA9ICh1MzIpYWJzX2FkZHI7Cj4gPiA+ICsJCQl0Y20tPnNpemUgPSAodTMyKXNp emU7Cj4gPiA+ICsKPiA+ID4gKwkJCWNwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7Cj4g PiA+ICsJCQlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UoY3BkZXYsIElPUkVTT1VSQ0VfTUVN LCBqKTsKPiA+ID4gKwkJCWlmICghcmVzKSB7Cj4gPiA+ICsJCQkJZGV2X2VycihkZXYsICJmYWls ZWQgdG8gZ2V0IHRjbSByZXNvdXJjZVxuIik7Cj4gPiA+ICsJCQkJcmV0ID0gLUVJTlZBTDsKPiA+ ID4gKwkJCQlnb3RvIGZhaWxfdGNtOwo+ID4gPiArCQkJfQo+ID4gPiArCj4gPiA+ICsJCQl0Y20t PmFkZHIgPSAodTMyKXJlcy0+c3RhcnQ7Cj4gPiA+ICsJCQlyZXMgPSBkZXZtX3JlcXVlc3RfbWVt X3JlZ2lvbihkZXYsIHRjbS0+YWRkciwgdGNtLT5zaXplLCByZXMtPm5hbWUpOwo+ID4gPiArCQkJ aWYgKCFyZXMpIHsKPiA+ID4gKwkJCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byByZXF1ZXN0IHRj bSByZXNvdXJjZVxuIik7Cj4gPiA+ICsJCQkJcmV0ID0gLUVJTlZBTDsKPiA+ID4gKwkJCQlnb3Rv IGZhaWxfdGNtOwo+ID4gPiArCQkJfQo+ID4gPiArCj4gPiA+ICsJCQltZW1jcHkodGNtLT5iYW5r X25hbWUsIHJlcy0+bmFtZSwgQVJSQVlfU0laRSh0Y20tPmJhbmtfbmFtZSkpOwo+ID4gPiArCQkJ bnAgPSBvZl9ub2RlX2dldChkZXZfb2Zfbm9kZShkZXYpKTsKPiA+ID4gKwkJCS8qCj4gPiA+ICsJ CQkgKiBJbiBkdCBwb3dlci1kb21haW5zIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBvcmRlcjoKPiA+ ID4gKwkJCSAqIDxSUFUgY29yZT4sIDxhdGNtPiwgIDxidGNtPgo+ID4gPiArCQkJICogcGFyc2Ug cG93ZXIgZG9tYWlucyBmb3IgdGNtIGFjY29yZGluZ2x5Cj4gPiA+ICsJCQkgKi8KPiA+ID4gKwkJ CW9mX3BhcnNlX3BoYW5kbGVfd2l0aF9hcmdzKG5wLCAicG93ZXItZG9tYWlucyIsCj4gPiA+ICsJ CQkJCQkgICAiI3Bvd2VyLWRvbWFpbi1jZWxscyIsCj4gPiA+ICsJCQkJCQkgICBqICsgMSwgJm91 dF9hcmcpOwo+ID4gPiArCQkJdGNtLT5wbV9kb21haW5faWQgPSBvdXRfYXJnLmFyZ3NbMF07Cj4g PiA+ICsJCQlvZl9ub2RlX3B1dChvdXRfYXJnLm5wKTsKPiA+ID4gKwo+ID4gPiArCQkJZGV2X2Ri ZyhkZXYsICJUQ006ICVzLCBkbWE9MHgleCwgZGE9MHgleCwgc2l6ZT0weCV4XG4iLAo+ID4gPiAr CQkJCXRjbS0+YmFua19uYW1lLCB0Y20tPmFkZHIsIHRjbS0+ZGEsIHRjbS0+c2l6ZSk7Cj4gPiA+ ICsJCQlkZXZfZGJnKGRldiwgInRjbSBwbSBkb21haW4gaWQgJWRcbiIsIHRjbS0+cG1fZG9tYWlu X2lkKTsKPiA+ID4gKwo+ID4gPiArCQkJaWYgKGNsdXN0ZXItPm1vZGUgPT0gU1BMSVRfTU9ERSkK PiA+ID4gKwkJCQljb250aW51ZTsKPiA+ID4gKwo+ID4gPiArCQkJLyogVHVybiBvbiBjb3JlLTEn cyBUQ00gYXMgd2VsbCAqLwo+ID4gPiArCQkJbnAxID0gb2ZfZ2V0X25leHRfY2hpbGQoZGV2X29m X25vZGUoY2x1c3Rlci0+ZGV2KSwKPiA+ID4gKwkJCQkJCXI1X2NvcmUtPm5wKTsKPiA+ID4gKwkJ CWlmICghbnAxKSB7Cj4gPiA+ICsJCQkJb2Zfbm9kZV9wdXQobnAxKTsKPiA+ID4gKwkJCQlucDEg PSBOVUxMOwo+ID4gPiArCQkJCWdvdG8gZmFpbF90Y207Cj4gPiA+ICsJCQl9Cj4gPiA+ICsKPiA+ ID4gKwkJCW9mX3BhcnNlX3BoYW5kbGVfd2l0aF9hcmdzKG5wMSwgInBvd2VyLWRvbWFpbnMiLAo+ ID4gPiArCQkJCQkJICAgIiNwb3dlci1kb21haW4tY2VsbHMiLAo+ID4gPiArCQkJCQkJICAgaiAr IDEsICZvdXRfYXJnKTsKPiA+ID4gKwkJCXRjbS0+cG1fZG9tYWluX2lkMiA9IG91dF9hcmcuYXJn c1swXTsKPiA+ID4gKwkJCW9mX25vZGVfcHV0KG91dF9hcmcubnApOwo+ID4gPiArCQkJZGV2X2Ri ZyhkZXYsICJ0Y20gcG0gZG9tYWluIGlkICVkXG4iLCB0Y20tPnBtX2RvbWFpbl9pZDIpOwo+ID4g PiArCQl9Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICsKPiA+ID4g K2ZhaWxfdGNtOgo+ID4gPiArCXdoaWxlIChpID49IDApIHsKPiA+ID4gKwkJcjVfY29yZSA9IGNs dXN0ZXItPnI1X2NvcmVzW2ldOwo+ID4gPiArCQlmb3IgKGogPSAwOyBqIDwgcjVfY29yZS0+dGNt X2JhbmtfY291bnQ7IGorKykgewo+ID4gPiArCQkJaWYgKCFyNV9jb3JlLT50Y21fYmFua3MpCj4g PiA+ICsJCQkJY29udGludWU7Cj4gPiA+ICsJCQl0Y20gPSByNV9jb3JlLT50Y21fYmFua3Nbal07 Cj4gPiA+ICsJCQlrZnJlZSh0Y20pOwo+ID4gPiArCQl9Cj4gPiA+ICsJCWtmcmVlKHI1X2NvcmUt PnRjbV9iYW5rcyk7Cj4gPiA+ICsJCWktLTsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlyZXR1 cm4gcmV0Owo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICAvKioKPiA+ID4gICAqIHp5bnFtcF9yNV9n ZXRfdGNtX25vZGUoKQo+ID4gPiAgICogSWRlYWxseSB0aGlzIGZ1bmN0aW9uIHNob3VsZCBwYXJz ZSB0Y20gbm9kZSBhbmQgc3RvcmUgaW5mb3JtYXRpb24KPiA+ID4gQEAgLTg5NSwxMiArMTAzNSwy MCBAQCBzdGF0aWMgc3RydWN0IHp5bnFtcF9yNV9jb3JlICp6eW5xbXBfcjVfYWRkX3Jwcm9jX2Nv cmUoc3RydWN0IGRldmljZSAqY2RldikKPiA+ID4gICAqLwo+ID4gPiAgc3RhdGljIGludCB6eW5x bXBfcjVfZ2V0X3RjbV9ub2RlKHN0cnVjdCB6eW5xbXBfcjVfY2x1c3RlciAqY2x1c3RlcikKPiA+ ID4gIHsKPiA+ID4gKwljb25zdCBzdHJ1Y3QgbWVtX2JhbmtfZGF0YSAqenlucW1wX3RjbV9iYW5r czsKPiA+ID4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBjbHVzdGVyLT5kZXY7Cj4gPiA+ICAJc3Ry dWN0IHp5bnFtcF9yNV9jb3JlICpyNV9jb3JlOwo+ID4gPiAgCWludCB0Y21fYmFua19jb3VudCwg dGNtX25vZGU7Cj4gPiA+ICAJaW50IGksIGo7Cj4gPiA+ICAKPiA+ID4gLQl0Y21fYmFua19jb3Vu dCA9IEFSUkFZX1NJWkUoenlucW1wX3RjbV9iYW5rcyk7Cj4gPiA+ICsJaWYgKGNsdXN0ZXItPm1v ZGUgPT0gU1BMSVRfTU9ERSkgewo+ID4gPiArCQl6eW5xbXBfdGNtX2JhbmtzID0genlucW1wX3Rj bV9iYW5rc19zcGxpdDsKPiA+ID4gKwkJdGNtX2JhbmtfY291bnQgPSBBUlJBWV9TSVpFKHp5bnFt cF90Y21fYmFua3Nfc3BsaXQpOwo+ID4gPiArCX0gZWxzZSB7Cj4gPiA+ICsJCXp5bnFtcF90Y21f YmFua3MgPSB6eW5xbXBfdGNtX2JhbmtzX2xvY2tzdGVwOwo+ID4gPiArCQl0Y21fYmFua19jb3Vu dCA9IEFSUkFZX1NJWkUoenlucW1wX3RjbV9iYW5rc19sb2Nrc3RlcCk7Cj4gPiA+ICsJfQo+ID4K PiA+IFdoeSBhcmUgdGhlIGNoYW5nZXMgdG8gZ2V0IFRDTSBiYW5rIGluZm9ybWF0aW9uIGZyb20g dGhlIERUIGFuZCBlbmhhbmNlbWVudCB0bwo+ID4gc3VwcG9ydCBsb2Nrc3RlcCBtb2RlIGluIHRo ZSBzYW1lIHBhdGNoPwo+Cj4gQWN0dWFsbHkgVENNIGluIGxvY2tzdGVwIG1vZGUgd2FzIHN1cHBv cnRlZCBiZWZvcmUgYXMgd2VsbC4gSXQncyBqdXN0IEkgd2FzIHVzaW5nIHNhbWUgdGFibGUgaW4g bG9ja3N0ZXAgbW9kZSBiZWZvcmUuCj4KPiBIb3dldmVyLCBub3cgSSBhbSBoYXZpbmcgdHdvIHRh YmxlcyBmb3Igc3BsaXQgbW9kZSBhbmQgbG9ja3N0ZXAgbW9kZS4KPgo+IEkgaGFkIHRvIGRvIHRo aXMgYXMgSSBoYXZlIGludHJvZHVjZWQgImRhIiBmaWVsZCBpbiAic3RydWN0IG1lbV9iYW5rX2Rh dGEiIG9iamVjdC7CoCBUaGlzIG1ha2VzIGl0IGVhc3kgdG8gcHJvY2Vzcwo+Cj4gImRldmljZSBh ZGRyZXNzIiBkZXJpdmVkIGZyb20gZGV2aWNlLXRyZWUuCj4KPiBBbmQgYXMgSSBoYXZlIGludHJv ZHVjZWQgInUzMiBkYSIsIEkgaGFkIHRvIG1vZGlmeSB0YWJsZSBhcyB3ZWxsIGFuZCByZW1vdmUg aGFyZGNvZGluZyBvZiAiZGEiIGNhbGN1bGF0aW9uIGluICJ0Y21fbWVtX21hcCIgZnVuY3Rpb24u Cj4KPiBBcyBhbGwgb2YgdGhpcyBpcyBjb25uZWN0ZWQsIEkgaGF2ZSB0aGVtIGluIHNhbWUgcGF0 Y2guIE5vIG5ldyBmdW5jdGlvbmFsaXR5IGlzIGFkZGVkLCBidXQganVzdCBjb2RlIHJlZmFjdG9y aW5nLgo+Cj4gPiA+ICsKPiA+ID4gIAo+ID4gPiAgCS8qIGNvdW50IHBlciBjb3JlIHRjbSBiYW5r cyAqLwo+ID4gPiAgCXRjbV9iYW5rX2NvdW50ID0gdGNtX2JhbmtfY291bnQgLyBjbHVzdGVyLT5j b3JlX2NvdW50Owo+ID4gPiBAQCAtOTUxLDEwICsxMDk5LDI1IEBAIHN0YXRpYyBpbnQgenlucW1w X3I1X2NvcmVfaW5pdChzdHJ1Y3QgenlucW1wX3I1X2NsdXN0ZXIgKmNsdXN0ZXIsCj4gPiA+ICAJ CQkgICAgICAgZW51bSBycHVfdGNtX2NvbWIgdGNtX21vZGUpCj4gPiA+ICB7Cj4gPiA+ICAJc3Ry dWN0IGRldmljZSAqZGV2ID0gY2x1c3Rlci0+ZGV2Owo+ID4gPiArCXN0cnVjdCBkZXZpY2Vfbm9k ZSAqbnA7Cj4gPiA+ICAJc3RydWN0IHp5bnFtcF9yNV9jb3JlICpyNV9jb3JlOwo+ID4gPiAgCWlu dCByZXQsIGk7Cj4gPiA+ICAKPiA+ID4gLQlyZXQgPSB6eW5xbXBfcjVfZ2V0X3RjbV9ub2RlKGNs dXN0ZXIpOwo+ID4gPiArCS8qCj4gPiA+ICsJICogdHJ5IHRvIGdldCB0Y20gbm9kZXMgZnJvbSBk dCBidXQgaWYgZmFpbCwgdXNlIGhhcmRjb2RlIGFkZHJlc3NlcyBvbmx5Cj4gPiA+ICsJICogZm9y IHp5bnFtcCBwbGF0Zm9ybS4gTmV3IHBsYXRmb3JtcyBtdXN0IHVzZSBkdCBiaW5kaW5ncyBmb3Ig VENNLgo+ID4gPiArCSAqLwo+ID4gPiArCXJldCA9IHp5bnFtcF9yNV9nZXRfdGNtX25vZGVfZnJv bV9kdChjbHVzdGVyKTsKPiA+ID4gKwlpZiAocmV0KSB7Cj4gPiA+ICsJCW5wID0gb2ZfZ2V0X2Nv bXBhdGlibGVfY2hpbGQoZGV2X29mX25vZGUoZGV2KSwgInhsbngsenlucW1wLXI1ZiIpOwo+ID4g PiArCQlpZiAobnApIHsKPiA+Cj4gPiBXaHkgd2FzIHRoaXMgY2hlY2sgYWRkZWQ/Cj4KPiBXZSB3 YW50IHRvIG1haW50YWluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBiaW5k aW5ncyBvbmx5IGZvciB6eW5xbXAgcGxhdGZvcm0uCj4KPiBTbywgaGFyZGNvZGUgdGFibGUgaXMg dXNlZCBvbmx5IGZvciAienlucW1wIiBwbGF0Zm9ybSBpZiBnZXR0aW5nICJyZWciIGluZm9ybWF0 aW9uIGZyb20gZGV2aWNlLXRyZWUgZmFpbHMuCj4KPiBJZiBub2RlIGlzIG5vdCBjb21wYXRpYmxl IHdpdGggInhsbngsenlucW1wLXI1ZiIgdGhlbiBpdCBpcyBuZXcgcGxhdGZvcm0gYW5kIHdlIG11 c3Qgbm90IHVzZSBoYXJkY29kZQo+Cj4gdGFibGUgaW5zdGVhZCB3ZSBzaG91bGQgZmFpbC4KPgo+ Cj4gPiBTbyBmYXIgdGhlcmUgYXJlIHRvbyBtYW55IHVuYW5zd2VyZWQgcXVlc3Rpb25zIHdpdGgg dGhpcyBwYXRjaHNldCBhbmQgYXMgc3VjaCBJCj4gPiB3aWxsIHN0b3AgaGVyZS4KPgo+IE5vIHBy b2JsZW0uIFBsZWFzZSBsZXQgbWUga25vdyBpZiB5b3UgaGF2ZSBhbnkgZnVydGhlciBxdWVzdGlv bnMuCgpIaSBNYXRoaWV1LAoKRGlkIHlvdSB3YW50IG1lIHRvIGRvY3VtZW50IGFsbCB0aGUgY29t bWVudHMgSSBtZW50aW9uZWQgaW4gZHJpdmVyIGFuZCBzZW5kIG5ldyBwYXRjaHNldCBvciBjYW4g d2UgY29udGludWUgcmV2aWV3cyA/CgpJIGFtIGZpbmUgZWl0aGVyIHdheS4gTGV0IG1lIGtub3cu CgpUaGFua3MsCgpUYW5tYXkKCj4KPgo+ID4gTWF0aGlldQo+ID4KPiA+ID4gKwkJCXJldCA9IHp5 bnFtcF9yNV9nZXRfdGNtX25vZGUoY2x1c3Rlcik7Cj4gPiA+ICsJCX0gZWxzZSB7Cj4gPiA+ICsJ CQlkZXZfZXJyKGRldiwgInRjbSBub3QgZm91bmRcbiIpOwo+ID4gPiArCQkJcmV0dXJuIC1FSU5W QUw7Cj4gPiA+ICsJCX0KPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gIAlpZiAocmV0IDwgMCkgewo+ ID4gPiAgCQlkZXZfZXJyKGRldiwgImNhbid0IGdldCB0Y20gbm9kZSwgZXJyICVkXG4iLCByZXQp Owo+ID4gPiAgCQlyZXR1cm4gcmV0Owo+ID4gPiAtLSAKPiA+ID4gMi4yNS4xCj4gPiA+IAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtl cm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5l bAo=