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 53CF5C46CD2 for ; Tue, 30 Jan 2024 23:56:35 +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: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=mlgsMw22uf2zGZNwOsf7NOVPq6Xm7uEIC6b8/kAoss4=; b=HC+otRvPVRBnMH /ZLUP9grpfnKHomHaElnE+h/aVsPboLvRm3jZKfT3UmiPamiebhuQNGR1YNRbHleQ3xZeBcx1q7VS Bllgpt9fwcT/r+p0cUMbq5Tihj9CNu5Fx++n/F7bw7J3rljuyQYfd5CTdB8DtyVqi0Ld2IJGXFnDG BaS7Eiakxpun/R+HKONwHSZqjbLDxQoZDHZrywhuA7BTfLH2hNsevT+AtNSX3wclVHMKi5oJ1cX+/ gKZ1L/DfLBYogs0Xg/NBI95qPfIaXuYQUq1GvFt2GVUIkaNljpkrUMGc12Y+tFoLgsq/kZd4E85aR oq31rZ4WzDXNRekt5ovg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rUxxo-00000000xiY-0nW4; Tue, 30 Jan 2024 23:56:24 +0000 Received: from mail-dm3nam02on20600.outbound.protection.outlook.com ([2a01:111:f403:2405::600] helo=NAM02-DM3-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rUxxl-00000000xi6-1VcT for linux-arm-kernel@lists.infradead.org; Tue, 30 Jan 2024 23:56:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XbLbBL2qHLO0wbPjHp6YlfbEfRHI7MU8SROkS5na6FLMgLs9G/Y/eteO7uHDdOfgp33CGBWXfvX1/D5YHRoGB/JS5tGBYSFn/cWkQxaVU6/DBA2wiqbibY0JzY47ZPgyLD/zFDQU9Jqk4gYLNiSTBxQmQ33F0rjohv6YvQevGc2Z8dUKAhR2pbHBIDbpehl6JItlBgVDWZ7HadIpTrVOYf/+AKbr5r8BHhDvwm5shg+6srn8oT3Qa6vun34CdFjwlsUSjejsf3O7iXlRtz0zpIvH7G2amFFLmgKRr1fBdPNds8LomcXLZB1f+X9iGvS6Qs/KHsV27jUIZsaO8RsRsQ== 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=TluoC0fljKvf9ZPCkx0fX2QmMLgdHXtQf4qwLnxi18o=; b=Qffga2FSS0iCwRx4SM9LX5ZXYo1I3GAR18vsATs7peCfW7fWLe78dHeLSbI8ryUM8uwxMQhavJnVfBczekHyOGWe9mePalBuHY4QDJ5w/mgzFkS8llVx1tu0IucN8p2P2RNRltJmrc4QmMQwJUffr8+xE8QZZTE3C9Cewx8Ja7+eQt+OxT9020OgdXmyLfExedvFmQExOCV3lctMsmRGi6M/fvWVSsAHXMoAUBY0Q2XXAnwgxm02ntdKK2rKghF2sXCkjOI/PoSt5ZY2Q/O0lmVD6RkStbzURNaEP3HNIcGUkADDOkB3uSkWegGuzfLDMaxRQvvn+bFHuIa3Asi+XQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TluoC0fljKvf9ZPCkx0fX2QmMLgdHXtQf4qwLnxi18o=; b=gStAQUHDIEDPiei125gxQY/pjMaKepEzwUEqB7z0HVY+t6aOApVtsF22cnil6Wk8ptdTY8N0KbuaOm+Qoq4O9k6iIJsUf+sMVZlComOLkjQ5t4BB4XoBZ0/kjx9N/MyHsllwx/hO6i9qGOTHDj6536TqUXQk2KZd+rcnQSA+36a70rlB/gSI9/bTpWzsAacChdF6a2lzxoBt8l733CkyAgjjYi3YVuL+qr1GZOttnC8BhXESZEYcfwRGfNRKjdVUyVZbxXpKNxKa5BVRxAVdqL7+U8N7oTuOY0t5W8ePKp1UiGwP6ZzrGVMvqzz8lpNLanZ+Vx+09jN1Rxx4sHxF/Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from LV2PR12MB5869.namprd12.prod.outlook.com (2603:10b6:408:176::16) by MW4PR12MB7384.namprd12.prod.outlook.com (2603:10b6:303:22b::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.22; Tue, 30 Jan 2024 23:56:13 +0000 Received: from LV2PR12MB5869.namprd12.prod.outlook.com ([fe80::96dd:1160:6472:9873]) by LV2PR12MB5869.namprd12.prod.outlook.com ([fe80::96dd:1160:6472:9873%6]) with mapi id 15.20.7228.029; Tue, 30 Jan 2024 23:56:12 +0000 Date: Tue, 30 Jan 2024 19:56:11 -0400 From: Jason Gunthorpe To: Mostafa Saleh Cc: iommu@lists.linux.dev, Joerg Roedel , linux-arm-kernel@lists.infradead.org, Robin Murphy , Will Deacon , Moritz Fischer , Moritz Fischer , Michael Shavit , Nicolin Chen , patches@lists.linux.dev, Shameer Kolothum Subject: Re: [PATCH v4 01/16] iommu/arm-smmu-v3: Make STE programming independent of the callers Message-ID: <20240130235611.GF1455070@nvidia.com> References: <0-v4-c93b774edcc4+42d2b-smmuv3_newapi_p1_jgg@nvidia.com> <1-v4-c93b774edcc4+42d2b-smmuv3_newapi_p1_jgg@nvidia.com> Content-Disposition: inline In-Reply-To: X-ClientProxiedBy: BL0PR03CA0007.namprd03.prod.outlook.com (2603:10b6:208:2d::20) To LV2PR12MB5869.namprd12.prod.outlook.com (2603:10b6:408:176::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LV2PR12MB5869:EE_|MW4PR12MB7384:EE_ X-MS-Office365-Filtering-Correlation-Id: 2684414d-8a52-4e99-8ec2-08dc21ef09e7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4qpQQKMdeHp0m4sfuMeqV9Ewg/G3keqFMnC/WZR+zGXZMHSRDxU8QMzdzXJOqZJKjoqYW/s8eqJ6ye/sJXDPSxgpY61A9ejOuQlnzkTa2ACt5UeNvePU2sMqzaz+0ZmsTNCjmUutJWkyY004XlGjYxY3sPprQ9kRUaliZcX+cY17EynLWHBDRXsV46rtq12B1Qz3Cr5dywhaXF0Od3G8ybW1DJG7KpcN4zvV94GIZrlH1SnNA3tqcduh1Zli7bzIoazgrkL/EUoMF5shkEtgMkju7e/5B/eCOzBTZQFW6olQSxFSTeMNzBnVh5PkDfTxTWF5NXA7kOlGQ1QC896b4FeIbkAPQxmxjj65EKYUqBkAYpTEC6RmjsUIC2V5YnsjjZkGvUZF7NDIsbkvdGuIxMscKeirQLjr/OBe0mXxC1l2upPZjF1Q+PSIR9NCel6b2LrKuY0Abynhph/AmSJeHMuKeuHVdJNuaFQFiTdINmWI9hp6TUT1lQ4LUu2iWakd8t0OptBiPycVrCidXlVMQfMgEnC5ckWaCa785vMBKAoCal8RvPkkUmEE781el7OD X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV2PR12MB5869.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(396003)(136003)(366004)(39860400002)(346002)(230922051799003)(186009)(451199024)(64100799003)(1800799012)(478600001)(6486002)(6506007)(6512007)(6916009)(66899024)(8676002)(4326008)(8936002)(66556008)(66476007)(54906003)(66946007)(316002)(41300700001)(86362001)(83380400001)(36756003)(38100700002)(33656002)(5660300002)(7416002)(2616005)(2906002)(26005)(1076003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?elBucXVSUlB6RWMrem1PZGYrQS9VNXFNdFNWVW05M3JLazdFN2xJUnBKc3FF?= =?utf-8?B?YitKc3o4TnpZdFNpS3JvZ3dNOWxnOG5UMDlJQ3h5dVNXZDV2ZWlIMnlES0xv?= =?utf-8?B?czBkWXUvZm9LZCtYZE0xUjNSTFFKMTRpclU4c3gzd3pURXR5aDcySndlNDZz?= =?utf-8?B?L213MkVBOGVlWVE4aVpRLzY2NHgvTWtOVnlscGtQVjQ0QlhOMmtWdjJoOFhR?= =?utf-8?B?bWZiNHliV3NuVHhFWDk0YmVNcUI4SDhVaUxKSlBTaTFXcUJ2c0pnMWFwMFM0?= =?utf-8?B?enhWdmlUcVdNOHVVd3Z2TWJRT1U2bWtqMEdsSXFhSXBNY1A0elF2b296NFBE?= =?utf-8?B?TFBNTjIwb0hscTFnc0cxRUdwZzBTdUpUMi9meDdnWVQwUGtIRDVhSUpTYmRi?= =?utf-8?B?NU5nZlpGZ2NwZGhQR2c3ZkpxOTNPa1F3QUx6UTRuMlVWMUJ0WXBXUzhsQnN4?= =?utf-8?B?T0gzWWp4VGJWc3ltYzNzaTd1TUZ6YnlLbGJaT2ZrUWZMNys5U29OTGJ4WHk2?= =?utf-8?B?YlVXT1lkRDdaNjNBeG1rZ1JWNjBEZUpnWk12SHQydStzMVl6aCtXdHVyNU94?= =?utf-8?B?TVNPTGJGT2tTOFlhSWMzR1oremlmelhZWWRndnNVZU11TjFwU1owTmtaN05a?= =?utf-8?B?UFdXV0prUDMyaDU2a01rZjk0QXRXNzZVanM0bDNldUIyT1lRY3J1NnJwVkho?= =?utf-8?B?VkJaWlJjcXlJdWIrWE5mOTZHd25CODZXRXpNdW5MM2NIN0IrbVZBYUNmWmNG?= =?utf-8?B?VmdEQTRkUGpRWFlTNmtiWFhOa3VTNDFlNVZYWDRYTkh5VU9UMGNvaUk5LzVx?= =?utf-8?B?c25YZXlrTWMzZEhIQ1owZVAxYmVWWnBMTGw5MnpPQ3l1aHd0ZnZ2YTI5SkVx?= =?utf-8?B?L0JUZFV0LzR5MU42T3MydDNEOXUxS0tObGt3VDlCNUNneVUyUG54VVlqWVl3?= =?utf-8?B?NzNhVlBGeEx0Uy8wUUJVUkUwVXVxZENVNWlPbG8rOXk0TG0yb0pyb0YvTU4z?= =?utf-8?B?bHJLVlZ0aElBbGMzd0pKZzZzZno0bVl1blc4bVlqeStocDV5aFJVYUFGdlY4?= =?utf-8?B?QVExNnhCcklNNG42MFBFNFk2Q1gzTE9tNkNqc0ZOenRROEJ4bHNjc3V5cGxq?= =?utf-8?B?ZkM0dStuTS9zdWVGSjVuNGtGK0dSSy81ZVd5MUkzWUxYVjdMTEhqZ3JydjNP?= =?utf-8?B?QTZ4RGd3ckN4TFZHL0dpbFhWS3VsRFlyMEhMTC81azVjSVNwOFJWclhNckh6?= =?utf-8?B?YkcwclgveFZqYUJHdWtaUzFYRGRiUDQwendjZzc1UHpaRGNJdEE5dTJjNE1J?= =?utf-8?B?OUNjT2J2bXc4UGJxekFGVW0xZENES1JPVWs4TWNpclMrRmtuOWk2WlhKbnVp?= =?utf-8?B?ZnkyR1ZFaHc3RVdyL0RPQkpZa2dwUzF0WVd1T2IzbzM1ZDlEQ0tCcWFWeEVy?= =?utf-8?B?cnZvbVpzWHpNU01YYWpPTW5LbEpNNUc5bEMyWFpRaDFtWkhRNWwrM3RyQ3dZ?= =?utf-8?B?ZVRnZDlMVlVlL09xU0E1UW1KWnEyV0dReEk3VGVrQUdjWHBuZDRhR2F2b3ND?= =?utf-8?B?T29STE9hTTlJWVBaRUhiNGcwcWhaZm5Vai9lemxUVEczNm5BL2JNN2hkL3I3?= =?utf-8?B?UFJiL2ZHTVNqbnZPSUVPMmgrb1dhSjZjc1E5YUw1djIrWjk0SE5qNk84TTRE?= =?utf-8?B?SE45YWJ6bDBvaE8zeXZyRDI4VjBJSWhDb1BLVlRHOVVZam9zZVpxOU1QbWhB?= =?utf-8?B?ZFQ1S1h0bXNhWnN1ZEg0akNUQUJLM0RZTmR5ZHRwcGEzYXczTjJaM3dVU2t2?= =?utf-8?B?djBMVE1jeldOWWlPMktYbFNlRk5aZDNFYlBkRkx1SWxlSk93V0NZSzUyNE9K?= =?utf-8?B?ZHh0a1c5SWZFOXdVSUtRVjdobXZmdU9tZ0o0UHMwWDAxN2dmRTJJVFczSHkx?= =?utf-8?B?enliQmdIdmR6dVIzVTgyczJsMlhZVHpNTUxVZlZUM2dpY1NlMEVJeVp3QW5J?= =?utf-8?B?MWdWQnpKRWxWdFdINXcySGI5aXpFcVdjZFlmN1VYUjBZVlRTWVVqYms3ZFAw?= =?utf-8?B?MENmaVhNY1VrUEFKc001ZWFwSm96QVJHV2dxOExrZ3JZM3NNbk1BUElVcjli?= =?utf-8?Q?0kHvKjhXXKOSsfFPSIU2jP1NH?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2684414d-8a52-4e99-8ec2-08dc21ef09e7 X-MS-Exchange-CrossTenant-AuthSource: LV2PR12MB5869.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2024 23:56:12.8848 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: BjwZ4/JiGX19WNB3WG01vmlnPAf5RHTlNHcifDBtRlOVIBisZB9udnidYrTpi5+U X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7384 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240130_155621_500647_7C4278FF X-CRM114-Status: GOOD ( 57.02 ) 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 T24gVHVlLCBKYW4gMzAsIDIwMjQgYXQgMTA6NDI6MTNQTSArMDAwMCwgTW9zdGFmYSBTYWxlaCB3 cm90ZToKCj4gT24gVGh1LCBKYW4gMjUsIDIwMjQgYXQgMDc6NTc6MTFQTSAtMDQwMCwgSmFzb24g R3VudGhvcnBlIHdyb3RlOgo+ID4gQXMgdGhlIGNvbW1lbnQgaW4gYXJtX3NtbXVfd3JpdGVfc3Ry dGFiX2VudCgpIGV4cGxhaW5zLCB0aGlzIHJvdXRpbmUgaGFzCj4gPiBiZWVuIGxpbWl0ZWQgdG8g b25seSB3b3JrIGNvcnJlY3RseSBpbiBjZXJ0YWluIHNjZW5hcmlvcyB0aGF0IHRoZSBjYWxsZXIK PiA+IG11c3QgZW5zdXJlLiBHZW5lcmFsbHkgdGhlIGNhbGxlciBtdXN0IHB1dCB0aGUgU1RFIGlu dG8gQUJPUlQgb3IgQllQQVNTCj4gPiBiZWZvcmUgYXR0ZW1wdGluZyB0byBwcm9ncmFtIGl0IHRv IHNvbWV0aGluZyBlbHNlLgo+ID4gCj4gPiBUaGUgaW9tbXUgY29yZSBBUElzIHdvdWxkIGlkZWFs bHkgZXhwZWN0IHRoZSBkcml2ZXIgdG8gZG8gYSBoaXRsZXNzIGNoYW5nZQo+ID4gb2YgaW9tbXVf ZG9tYWluIGluIGEgbnVtYmVyIG9mIGNhc2VzOgo+ID4gCj4gPiAgLSBSRVNWX0RJUkVDVCBzdXBw b3J0IHdhbnRzIElERU5USVRZIC0+IERNQSAtPiBJREVOVElUWSB0byBiZSBoaXRsZXNzCj4gPiAg ICBmb3IgdGhlIFJFU1YgcmFuZ2VzCj4gPiAKPiA+ICAtIFBBU0lEIHVwZ3JhZGUgaGFzIElERU5U SVkgb24gdGhlIFJJRCB3aXRoIG5vIFBBU0lEIHRoZW4gYSBQQVNJRCBwYWdpbmcKPiA+ICAgIGRv bWFpbiBpbnN0YWxsZWQuIFRoZSBSSUQgc2hvdWxkIG5vdCBiZSBpbXBhY3RlZAo+ID4gCj4gPiAg LSBQQVNJRCBkb3duZ3JhZGUgaGFzIElERU5USVkgb24gdGhlIFJJRCBhbmQgYWxsIFBBU0lEJ3Mg cmVtb3ZlZC4KPiA+ICAgIFRoZSBSSUQgc2hvdWxkIG5vdCBiZSBpbXBhY3RlZAo+ID4gCj4gPiAg LSBSSUQgZG9lcyBQQUdJTkcgLT4gQkxPQ0tJTkcgd2l0aCBhY3RpdmUgUEFTSUQsIFBBU0lEJ3Mg c2hvdWxkIG5vdCBiZQo+ID4gICAgaW1wYWN0ZWQKPiA+IAo+ID4gIC0gTkVTVElORyAtPiBORVNU SU5HIGZvciBjYXJyeWluZyBhbGwgdGhlIGFib3ZlIGhpdGxlc3MgY2FzZXMgaW4gYSBWTQo+ID4g ICAgaW50byB0aGUgaHlwZXJ2aXNvci4gVG8gY29tcHJlaGVuc2l2ZWx5IGVtdWxhdGUgdGhlIEhX IGluIGEgVk0gd2Ugc2hvdWxkCj4gPiAgICBhc3N1bWUgdGhlIFZNIE9TIGlzIHJ1bm5pbmcgbG9n aWMgbGlrZSB0aGlzIGFuZCBleHBlY3RpbmcgaGl0bGVzcyB1cGRhdGVzCj4gPiAgICB0byBiZSBy ZWxheWVkIHRvIHJlYWwgSFcuCj4gCj4gRnJvbSBteSB1bmRlcnN0YW5kaW5nLCBzb21lIG9mIHRo ZXNlIGNhc2VzIGFyZSBub3QgaW1wbGVtZW50ZWQgKGF0IHRoaXMgcG9pbnQpLgo+IEhvd2V2ZXIs IGZyb20gd2hhdCBJIHNlZSwgbW9zdCBvZiB0aGVzZSBjYXNlcyBhcmUgcmVsYXRlZCB0byBzd2l0 Y2hpbmcgZnJvbS90bwo+IGlkZW50aXR5LCB3aGljaCB0aGUgY3VycmVudCBkcml2ZXIgd291bGQg aGF2ZSB0byBibG9jayBpbiBiZXR3ZWVuLCBpcyBteQo+IHVuZGVyc3RhbmRpbmcgY29ycmVjdD8K CkJhc2ljYWxseQoKPiBBcyBmb3IgTkVTVElORyAtPiBORVNUSU5HLCDCoGhvdyBpcyB0aGF0IGFj aGlldmVkPyAoYW5kIHdoeT8pCgpUaHJvdWdoIGlvbW11ZmQgYW5kIGl0IGlzIG5lY2Vzc2FyeSB0 byByZWZsZWN0IGhpdGxlc3MgdHJhbnNpdGlvbiBmcm9tCnRoZSBWTSB0byB0aGUgcmVhbCBIVy4g U2VlIFZGSU9fREVWSUNFX0FUVEFDSF9JT01NVUZEX1BUCgo+IEFGQUlDVCwgVkZJTyB3aWxsIGRv IEJMT0NLSU5HIGluIGJldHdlZW4gYW55IHRyYW5zaXRpb24sIGFuZCB0aGF0IGRvbWFpbgo+IHNo b3VsZCBuZXZlciBjaGFuZ2Ugd2hpbGUgdGhlIGEgZGV2aWNlIGlzIGFzc2lnbmVkIHRvIGEgVk0u CgpJdCB1bHRpbWF0ZWx5IGNhbGxzIGlvbW11ZmRfZGV2aWNlX3JlcGxhY2UoKSB3aGljaCBhdm9p ZHMgdGhhdC4gT2xkCnZmaW8gdHlwZTEgdXNlcnMgd2lsbCBmb3JjZSBhIGJsb2NraW5nLCBidXQg dHlwZTEgd2lsbCBuZXZlciBzdXBwb3J0Cm5lc3Rpbmcgc28gaXQgaXNuJ3QgcmVsZXZhbnQuCgo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYz LmMgYi9kcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS12My9hcm0tc21tdS12My5jCj4gPiBpbmRl eCAwZmZiMWNmMTdlMGIyZS4uNjkwNzQyZThmMTczZWIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2lvbW11L2FybS9hcm0tc21tdS12My9hcm0tc21tdS12My5jCj4gPiArKysgYi9kcml2ZXJzL2lv bW11L2FybS9hcm0tc21tdS12My9hcm0tc21tdS12My5jCj4gPiBAQCAtNDgsNiArNDgsMjIgQEAg ZW51bSBhcm1fc21tdV9tc2lfaW5kZXggewo+ID4gIAlBUk1fU01NVV9NQVhfTVNJUywKPiA+ICB9 Owo+ID4gIAo+ID4gK3N0cnVjdCBhcm1fc21tdV9lbnRyeV93cml0ZXJfb3BzOwo+ID4gK3N0cnVj dCBhcm1fc21tdV9lbnRyeV93cml0ZXIgewo+ID4gKwljb25zdCBzdHJ1Y3QgYXJtX3NtbXVfZW50 cnlfd3JpdGVyX29wcyAqb3BzOwo+ID4gKwlzdHJ1Y3QgYXJtX3NtbXVfbWFzdGVyICptYXN0ZXI7 Cj4gCj4gSSBzZWUgb25seSBtYXN0ZXItPnNtbXUgaXMgdXNlZCwgaXMgdGhlcmUgYSByZWFzb24g d2h5IHdlIGhhdmUgdGhpcwo+IHN0cnVjdCBpbnN0ZWFkPwoKVGhlIENEIHBhdGNoZXMgaW4gcGFy dCAyIHJlcXVpcmVzIHRoZSBtYXN0ZXIgYmVjYXVzZSB0aGUgQ0QgZW50cnkKbWVtb3J5IGlzIHNo YXJlZCBhY3Jvc3MgbXVsdGlwbGUgQ0RzIHNvIHdlIGl0ZXJhdGUgdGhlIFNJRCBsaXN0IGluc2lk ZQp0aGUgdXBkYXRlLiBUaGUgU1RFIGlzIHRoZSBvcHBvc2l0ZSwgZWFjaCBTVEUgaGFzIGl0cyBv d24gbWVtb3J5IHNvIHdlCml0ZXJhdGUgdGhlIFNJRCBsaXN0IG91dHNpZGUgdGhlIHVwZGF0ZS4K Cj4gPiArc3RydWN0IGFybV9zbW11X2VudHJ5X3dyaXRlcl9vcHMgewo+ID4gKwl1bnNpZ25lZCBp bnQgbnVtX2VudHJ5X3F3b3JkczsKPiA+ICsJX19sZTY0IHZfYml0Owo+ID4gKwl2b2lkICgqZ2V0 X3VzZWQpKHN0cnVjdCBhcm1fc21tdV9lbnRyeV93cml0ZXIgKndyaXRlciwgY29uc3QgX19sZTY0 ICplbnRyeSwKPiA+ICsJCQkgX19sZTY0ICp1c2VkKTsKPiAKPiAqd3JpdGVyIGlzIG5vdCB1c2Vk IGluIHRoaXMgc2VyaWVzLCBJIHRoaW5rIGl0IHdvdWxkIG1ha2UgbW9yZSBzZW5zZSBpZgo+IGl0 J3MgYWRkZWQgaW4gdGhlIHBhdGNoIHRoYXQgaW50cm9kdWNlIHVzaW5nIGl0LgoKQWgsIEkgZ3Vl c3MsIEkgdGhpbmsgaXQgaXMgdXNlZCBpbiB0aGUgdGVzdCBiZW5jaC4KIAo+ID4gKwl2b2lkICgq c3luYykoc3RydWN0IGFybV9zbW11X2VudHJ5X3dyaXRlciAqd3JpdGVyKTsKPiA+ICt9Owo+ID4g Kwo+ID4gKyNkZWZpbmUgTlVNX0VOVFJZX1FXT1JEUyAoc2l6ZW9mKHN0cnVjdCBhcm1fc21tdV9z dGUpIC8gc2l6ZW9mKHU2NCkpCj4gPiArCj4gCj4gSXNuJ3QgdGhhdCBqdXN0IFNUUlRBQl9TVEVf RFdPUkRTLCBhbHNvIGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8gbm90IHRpZQo+IHRoaXMgdG8gdGhl IHN0cnVjdCBidXQgd2l0aCB0aGUgYWN0dWFsIGhhcmR3YXJlIGRlc2NyaXB0aW9uIHRoYXQgd291 bGQKPiBuZXZlciBjaGFuZ2UgKGJ1dCB0aGUgc3RydWN0IGNhbiBjaGFuZ2UpCgpUaGUgc3RydWN0 IGFuZCB0aGUgSFcgZGVzY3JpcHRpb24gYXJlIHRoZSBzYW1lLiBUaGUgc3RydWN0IHNpemUgY2Fu bm90CmNoYW5nZS4gQnJvYWRseSBpbiB0aGUgc2VyaWVzIFNUUlRBQl9TVEVfRFdPUkRTIGlzIGJl aW5nIGRpcy1mYXZvdXJlZApmb3Igc2l6ZW9mKHN0cnVjdCBhcm1fc21tdV9zdGUpIG5vdyB0aGF0 IHdlIGhhdmUgdGhlIHN0cnVjdC4KCkFmdGVyIHBhcnQgMyB0aGVyZSBhcmUgb25seSB0d28gcmVm ZXJlbmNlcyBsZWZ0IHRvIHRoYXQgY29uc3RhbnQsIHNvIEkKd2lsbCBsaWtlbHkgY2hhbmdlIHBh cnQgMyB0byByZW1vdmUgaXQuCgo+ID4gKy8qCj4gPiArICogRmlndXJlIG91dCBpZiB3ZSBjYW4g ZG8gYSBoaXRsZXNzIHVwZGF0ZSBvZiBlbnRyeSB0byBiZWNvbWUgdGFyZ2V0LiBSZXR1cm5zIGEK PiA+ICsgKiBiaXQgbWFzayB3aGVyZSAxIGluZGljYXRlcyB0aGF0IHF3b3JkIG5lZWRzIHRvIGJl IHNldCBkaXNydXB0aXZlbHkuCj4gPiArICogdW51c2VkX3VwZGF0ZSBpcyBhbiBpbnRlcm1lZGlh dGUgdmFsdWUgb2YgZW50cnkgdGhhdCBoYXMgdW51c2VkIGJpdHMgc2V0IHRvCj4gPiArICogdGhl aXIgbmV3IHZhbHVlcy4KPiA+ICsgKi8KPiA+ICtzdGF0aWMgdTggYXJtX3NtbXVfZW50cnlfcXdv cmRfZGlmZihzdHJ1Y3QgYXJtX3NtbXVfZW50cnlfd3JpdGVyICp3cml0ZXIsCj4gPiArCQkJCSAg ICBjb25zdCBfX2xlNjQgKmVudHJ5LCBjb25zdCBfX2xlNjQgKnRhcmdldCwKPiA+ICsJCQkJICAg IF9fbGU2NCAqdW51c2VkX3VwZGF0ZSkKPiA+ICt7Cj4gPiArCV9fbGU2NCB0YXJnZXRfdXNlZFtO VU1fRU5UUllfUVdPUkRTXSA9IHt9Owo+ID4gKwlfX2xlNjQgY3VyX3VzZWRbTlVNX0VOVFJZX1FX T1JEU10gPSB7fTsKPiA+ICsJdTggdXNlZF9xd29yZF9kaWZmID0gMDsKPiA+ICsJdW5zaWduZWQg aW50IGk7Cj4gPiArCj4gPiArCXdyaXRlci0+b3BzLT5nZXRfdXNlZCh3cml0ZXIsIGVudHJ5LCBj dXJfdXNlZCk7Cj4gPiArCXdyaXRlci0+b3BzLT5nZXRfdXNlZCh3cml0ZXIsIHRhcmdldCwgdGFy Z2V0X3VzZWQpOwo+ID4gKwo+ID4gKwlmb3IgKGkgPSAwOyBpICE9IHdyaXRlci0+b3BzLT5udW1f ZW50cnlfcXdvcmRzOyBpKyspIHsKPiA+ICsJCS8qCj4gPiArCQkgKiBDaGVjayB0aGF0IG1hc2tz IGFyZSB1cCB0byBkYXRlLCB0aGUgbWFrZSBmdW5jdGlvbnMgYXJlIG5vdAo+ID4gKwkJICogYWxs b3dlZCB0byBzZXQgYSBiaXQgdG8gMSBpZiB0aGUgdXNlZCBmdW5jdGlvbiBkb2Vzbid0IHNheSBp dAo+ID4gKwkJICogaXMgdXNlZC4KPiA+ICsJCSAqLwo+ID4gKwkJV0FSTl9PTl9PTkNFKHRhcmdl dFtpXSAmIH50YXJnZXRfdXNlZFtpXSk7Cj4gPiArCj4gCj4gSSB0aGluayB0aGlzIHNob3VsZCBi ZSBhIEJVRy4gQXMgd2UgZG9uJ3Qga25vdyB0aGUgY29uc2VxdWVuY2UgZm9yIHN1Y2ggY2hhbmdl LAo+IGFuZCB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4gYSBub24tZGV2ZWxvcG1lbnQga2Vy bmVsLgoKR3VpZGFuY2UgZnJvbSBMaW51cyBpcyB0byBuZXZlciB1c2UgQlVHLCBhbHdheXMgdXNl IFdBUk5fT04gYW5kIHRyeSB0bwpyZWNvdmVyLiBJZiBwZW9wbGUgYXJlIHJ1bm5pbmcgaW4gYSBo aWdoLXNlbnNpdGl2aXR5IHByb2R1Y3Rpb24KZW52aXJvbm1lbnQgdGhleSBzaG91bGQgc2V0IHRo ZSB3YXJuIG9uIHBhbmljIGZlYXR1cmUgdG8gZW5zdXJlIGFueQprZXJuZWwgc2VsZi1kZXRlY3Rp b24gb2YgY29ycnVwdGlvbiB0cmlnZ2VycyBhIGhhbHQuCgo+ID4gKy8qCj4gPiArICogVXBkYXRl IHRoZSBTVEUvQ0QgdG8gdGhlIHRhcmdldCBjb25maWd1cmF0aW9uLiBUaGUgdHJhbnNpdGlvbiBm cm9tIHRoZQo+ID4gKyAqIGN1cnJlbnQgZW50cnkgdG8gdGhlIHRhcmdldCBlbnRyeSB0YWtlcyBw bGFjZSBvdmVyIG11bHRpcGxlIHN0ZXBzIHRoYXQKPiA+ICsgKiBhdHRlbXB0cyB0byBtYWtlIHRo ZSB0cmFuc2l0aW9uIGhpdGxlc3MgaWYgcG9zc2libGUuIFRoaXMgZnVuY3Rpb24gdGFrZXMgY2Fy ZQo+ID4gKyAqIG5vdCB0byBjcmVhdGUgYSBzaXR1YXRpb24gd2hlcmUgdGhlIEhXIGNhbiBwZXJj ZWl2ZSBhIGNvcnJ1cHRlZCBlbnRyeS4gSFcgaXMKPiA+ICsgKiBvbmx5IHJlcXVpcmVkIHRvIGhh dmUgYSA2NCBiaXQgYXRvbWljaXR5IHdpdGggc3RvcmVzIGZyb20gdGhlIENQVSwgd2hpbGUKPiA+ ICsgKiBlbnRyaWVzIGFyZSBtYW55IDY0IGJpdCB2YWx1ZXMgYmlnLgo+ID4gKyAqCj4gPiArICog VGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgY3VycmVudCB2YWx1ZSBhbmQgdGhlIHRhcmdldCB2 YWx1ZSBpcyBhbmFseXplZCB0bwo+ID4gKyAqIGRldGVybWluZSB3aGljaCBvZiB0aHJlZSB1cGRh dGVzIGFyZSByZXF1aXJlZCAtIGRpc3J1cHRpdmUsIGhpdGxlc3Mgb3Igbm8KPiA+ICsgKiBjaGFu Z2UuCj4gPiArICoKPiA+ICsgKiBJbiB0aGUgbW9zdCBnZW5lcmFsIGRpc3J1cHRpdmUgY2FzZSB3 ZSBjYW4gbWFrZSBhbnkgdXBkYXRlIGluIHRocmVlIHN0ZXBzOgo+ID4gKyAqICAtIERpc3J1cHRp bmcgdGhlIGVudHJ5IChWPTApCj4gPiArICogIC0gRmlsbCBub3cgdW51c2VkIHF3b3JkcywgZXhl Y3B0IHF3b3JkIDAgd2hpY2ggY29udGFpbnMgVgo+ID4gKyAqICAtIE1ha2UgcXdvcmQgMCBoYXZl IHRoZSBmaW5hbCB2YWx1ZSBhbmQgdmFsaWQgKFY9MSkgd2l0aCBhIHNpbmdsZSA2NAo+ID4gKyAq ICAgIGJpdCBzdG9yZQo+ID4gKyAqCj4gPiArICogSG93ZXZlciB0aGlzIGRpc3J1cHRzIHRoZSBI VyB3aGlsZSBpdCBpcyBoYXBwZW5pbmcuIFRoZXJlIGFyZSBzZXZlcmFsCj4gPiArICogaW50ZXJl c3RpbmcgY2FzZXMgd2hlcmUgYSBTVEUvQ0QgY2FuIGJlIHVwZGF0ZWQgd2l0aG91dCBkaXN0dXJi aW5nIHRoZSBIVwo+ID4gKyAqIGJlY2F1c2Ugb25seSBhIHNtYWxsIG51bWJlciBvZiBiaXRzIGFy ZSBjaGFuZ2luZyAoUzFEU1MsIENPTkZJRywgZXRjKSBvcgo+ID4gKyAqIGJlY2F1c2UgdGhlIHVz ZWQgYml0cyBkb24ndCBpbnRlcnNlY3QuIFdlIGNhbiBkZXRlY3QgdGhpcyBieSBjYWxjdWxhdGlu ZyBob3cKPiA+ICsgKiBtYW55IDY0IGJpdCB2YWx1ZXMgbmVlZCB1cGRhdGUgYWZ0ZXIgYWRqdXN0 aW5nIHRoZSB1bnVzZWQgYml0cyBhbmQgc2tpcCB0aGUKPiA+ICsgKiBWPTAgcHJvY2Vzcy4gVGhp cyByZWxpZXMgb24gdGhlIElHTk9SRUQgYmVoYXZpb3IgZGVzY3JpYmVkIGluIHRoZQo+ID4gKyAq IHNwZWNpZmljYXRpb24uCj4gPiArICovCj4gPiArc3RhdGljIHZvaWQgYXJtX3NtbXVfd3JpdGVf ZW50cnkoc3RydWN0IGFybV9zbW11X2VudHJ5X3dyaXRlciAqd3JpdGVyLAo+ID4gKwkJCQkgX19s ZTY0ICplbnRyeSwgY29uc3QgX19sZTY0ICp0YXJnZXQpCj4gPiArewo+ID4gKwl1bnNpZ25lZCBp bnQgbnVtX2VudHJ5X3F3b3JkcyA9IHdyaXRlci0+b3BzLT5udW1fZW50cnlfcXdvcmRzOwo+ID4g KwlfX2xlNjQgdW51c2VkX3VwZGF0ZVtOVU1fRU5UUllfUVdPUkRTXTsKPiA+ICsJdTggdXNlZF9x d29yZF9kaWZmOwo+ID4gKwo+ID4gKwl1c2VkX3F3b3JkX2RpZmYgPQo+ID4gKwkJYXJtX3NtbXVf ZW50cnlfcXdvcmRfZGlmZih3cml0ZXIsIGVudHJ5LCB0YXJnZXQsIHVudXNlZF91cGRhdGUpOwo+ ID4gKwlpZiAoaHdlaWdodDgodXNlZF9xd29yZF9kaWZmKSA+IDEpIHsKPiA+ICsJCS8qCj4gPiAr CQkgKiBBdCBsZWFzdCB0d28gcXdvcmRzIG5lZWQgdGhlaXIgaW51c2UgYml0cyB0byBiZSBjaGFu Z2VkLiBUaGlzCj4gPiArCQkgKiByZXF1aXJlcyBhIGJyZWFraW5nIHVwZGF0ZSwgemVybyB0aGUg ViBiaXQsIHdyaXRlIGFsbCBxd29yZHMKPiA+ICsJCSAqIGJ1dCAwLCB0aGVuIHNldCBxd29yZCAw Cj4gPiArCQkgKi8KPiA+ICsJCXVudXNlZF91cGRhdGVbMF0gPSBlbnRyeVswXSAmICh+d3JpdGVy LT5vcHMtPnZfYml0KTsKPiA+ICsJCWVudHJ5X3NldCh3cml0ZXIsIGVudHJ5LCB1bnVzZWRfdXBk YXRlLCAwLCAxKTsKPiA+ICsJCWVudHJ5X3NldCh3cml0ZXIsIGVudHJ5LCB0YXJnZXQsIDEsIG51 bV9lbnRyeV9xd29yZHMgLSAxKTsKPiA+ICsJCWVudHJ5X3NldCh3cml0ZXIsIGVudHJ5LCB0YXJn ZXQsIDAsIDEpOwo+ID4gKwl9IGVsc2UgaWYgKGh3ZWlnaHQ4KHVzZWRfcXdvcmRfZGlmZikgPT0g MSkgewo+ID4gKwkJLyoKPiA+ICsJCSAqIE9ubHkgb25lIHF3b3JkIG5lZWRzIGl0cyB1c2VkIGJp dHMgdG8gYmUgY2hhbmdlZC4gVGhpcyBpcyBhCj4gPiArCQkgKiBoaXRsZXNzIHVwZGF0ZSwgdXBk YXRlIGFsbCBiaXRzIHRoZSBjdXJyZW50IFNURSBpcyBpZ25vcmluZwo+ID4gKwkJICogdG8gdGhl aXIgbmV3IHZhbHVlcywgdGhlbiB1cGRhdGUgYSBzaW5nbGUgImNyaXRpY2FsIHF3b3JkIiB0bwo+ ID4gKwkJICogY2hhbmdlIHRoZSBTVEUgYW5kIGZpbmFsbHkgMCBvdXQgYW55IGJpdHMgdGhhdCBh cmUgbm93IHVudXNlZAo+ID4gKwkJICogaW4gdGhlIHRhcmdldCBjb25maWd1cmF0aW9uLgo+ID4g KwkJICovCj4gPiArCQl1bnNpZ25lZCBpbnQgY3JpdGljYWxfcXdvcmRfaW5kZXggPSBmZnModXNl ZF9xd29yZF9kaWZmKSAtIDE7Cj4gPiArCj4gPiArCQkvKgo+ID4gKwkJICogU2tpcCB3cml0aW5n IHVudXNlZCBiaXRzIGluIHRoZSBjcml0aWNhbCBxd29yZCBzaW5jZSB3ZSdsbCBiZQo+ID4gKwkJ ICogd3JpdGluZyBpdCBpbiB0aGUgbmV4dCBzdGVwIGFueXdheXMuIFRoaXMgY2FuIHNhdmUgYSBz eW5jCj4gPiArCQkgKiB3aGVuIHRoZSBvbmx5IGNoYW5nZSBpcyBpbiB0aGF0IHF3b3JkLgo+ID4g KwkJICovCj4gPiArCQl1bnVzZWRfdXBkYXRlW2NyaXRpY2FsX3F3b3JkX2luZGV4XSA9Cj4gPiAr CQkJZW50cnlbY3JpdGljYWxfcXdvcmRfaW5kZXhdOwo+ID4gKwkJZW50cnlfc2V0KHdyaXRlciwg ZW50cnksIHVudXNlZF91cGRhdGUsIDAsIG51bV9lbnRyeV9xd29yZHMpOwo+ID4gKwkJZW50cnlf c2V0KHdyaXRlciwgZW50cnksIHRhcmdldCwgY3JpdGljYWxfcXdvcmRfaW5kZXgsIDEpOwo+ID4g KwkJZW50cnlfc2V0KHdyaXRlciwgZW50cnksIHRhcmdldCwgMCwgbnVtX2VudHJ5X3F3b3Jkcyk7 Cj4gCj4gVGhlIFNURSBpcyB1cGRhdGVkIGluIDMgc3RlcHMuCj4gMSkgVXBkYXRlIGFsbCBiaXRz IGZyb20gdGFyZ2V0IChleGNlcHQgdGhlIGNoYW5nZWQgcXdvcmQpCj4gMikgVXBkYXRlIHRoZSBj aGFuZ2VkIHF3b3JkCj4gMykgUmVtb3ZlIHRoZSBiaXRzIHRoYXQgYXJlIG5vdCB1c2VkIGJ5IHRo ZSB0YXJnZXQgU1RFLgo+IAo+IEluIG1vc3QgY2FzZXMgd2Ugd291bGQgaXNzdWUgYSBzeW5jIGZv ciAxKSBhbmQgMykgYWx0aG91Z2ggdGhlIGhhcmR3YXJlIGlnbm9yZXMKPiB0aGUgdXBkYXRlcywg dGhhdCBzZWVtcyBuZWNlc3NhcnksIGFtIEkgbWlzc2luZyBzb21ldGhpbmc/Cgoic2VlbXMgW3Vu XW5lY2Vzc2FyeSIsIHJpZ2h0PwoKQWxsIHN5bmNzIGFyZSBuZWNlc3NhcnkgYmVjYXVzZSB0aGUg d2F5IHRoZSBTTU1VIEhXIGlzIHBlcm1pdHRlZCB0bwpjYWNoZSBvbiBhIHF3b3JkIGJ5IHF3b3Jk IGJhc2lzLgoKRWcgd2l0aCBubyBzeW5jIGFmdGVyIHN0ZXAgMSB0aGUgSFcgY2FjaGUgY291bGQg aGF2ZToKCiAgUVcwIE5vdCBwcmVzZW50CiAgUVcxIFN0ZXAgMCAoQ3VycmVudCkKCkFuZCB0aGVu IGluc3RhbnRseSBhZnRlciBzdGVwIDIgdXBkYXRlcyBEVzAsIGJ1dCBiZWZvcmUgaXQgZG9lcyB0 aGUKc3luYywgdGhlIEhXIGlzIHBlcm1pdGVkIHRvIHJlYWQuIFRoZW4gaXQgd291bGQgaGF2ZToK CiAgUVcwIFN0ZXAgMgogIFFXMSBTdGVwIDAgKEN1cnJlbnQpCgpXaGljaCBpcyBpbGxlZ2FsLiBU aGUgSFcgaXMgYWxsb3dlZCB0byBvYnNlcnZlIGEgbWl4IG9mIFN0ZXBbbl0gYW5kClN0ZXBbbisx XSBvbmx5LiBOZXZlciBhIG1peCBvZiBTdGVwW24tMV0gYW5kIFN0ZXBbbisxXS4KClRoZSBzeW5j IHByb3ZpZGVzIGEgYmFycmllciB0aGF0IHByZXZlbnRzIHRoaXMuIEhXIGNhbiBuZXZlciBvYnNl cnZlCnRoZSBjcml0aWNhbCBxd29yZCBvZiBzdGVwIDIgd2l0aG91dCBhbHNvIG9ic2VydmluZyBv bmx5IG5ldyB2YWx1ZXMgb2YKc3RlcCAxLgoKVGhlIHNhbWUgYXJndW1lbnQgaXMgZm9yIHN0ZXAg MyAtPiBuZXh0IHN0ZXAgMSBvbiBhIGZ1dHVyZSB1cGRhdGUuCgpSZWdhcmRzLApKYXNvbgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtl cm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5l bAo=