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 CF183C61DA4 for ; Wed, 15 Mar 2023 04:23:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To: Subject:MIME-Version: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=mLJUIlbnpQn8pqcQGfHQSum5Fi5sWmBmCnEVu02VNAQ=; b=HQBmyyhHF+MB79 9iNHyZd4PtKM7wIVS6lJ7VJCV50i6a8nCL2Zc0tt4E9RkPvbe3qEXYhK0EBVGR0Wi+FZG4CVA48MS 3Dkx8FFyTIUEqcIW2Yw4EBLTxYKkhJJood+yPRNVOEHavhfX+Fuw2x+4M1t1NQDsbH2GYiBo1Gyxw N9LsaNjDeq+4wfP599uUlpMy6wHNPuZOU0kqi9NrCtaldC29z7edYt0WhYIajdbIjUxuDoMfH8Uat ELtUyBwmQeBx98NuHOXL6Roc2YLljgD2p9sdE4TijaPbicRc84XtPpW6VRksuUi4Ul0wGuZ18tU4T 9KIjS5XDBt9L5PYVCd8A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pcIed-00CGWZ-1b; Wed, 15 Mar 2023 04:22:23 +0000 Received: from mga06b.intel.com ([134.134.136.31] helo=mga06.intel.com) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pcIeZ-00CGVi-2v for linux-arm-kernel@lists.infradead.org; Wed, 15 Mar 2023 04:22:21 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1678854139; x=1710390139; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=O1b/vZwXDv9P3fE6hz6f8P7YAE0JUZNpzgRhOi7jUrs=; b=FIWg/qHdkhCnQgNvPTyo8NRfTIpcbgbt8tOnktR6xbUsDhpcgyhfyPJ8 ++8tVJhQr6zokLKDFJgAC3bJvyBN3W9GaKTnw4tUa/J+tPz6VO6PLUqQI pWMrFYvOFy8ZeNjUkfdLR0YvVOHYmRANTbTT/iEgyqA0I7bupAruJzxeT wKZb6nRWouWnaZiOxEOLFAIAQvA5I2kv8GRuUcxYdLhkOdQiHE+/3v9By KA2EY87vgO4VivMB3bzz14pcmx6a7VHjqXfOYCpP5wsjr2rf3gCiOeV6J F6nM0xueKJbzrO7ShcW0e6H6nIWaVYpId+innDrbs9ny4tBdEHtevWNbm A==; X-IronPort-AV: E=McAfee;i="6500,9779,10649"; a="400192931" X-IronPort-AV: E=Sophos;i="5.98,261,1673942400"; d="scan'208";a="400192931" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Mar 2023 21:22:09 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10649"; a="672593121" X-IronPort-AV: E=Sophos;i="5.98,261,1673942400"; d="scan'208";a="672593121" Received: from cfwielan-mobl.amr.corp.intel.com (HELO [10.209.88.145]) ([10.209.88.145]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Mar 2023 21:22:08 -0700 Message-ID: Date: Tue, 14 Mar 2023 21:22:08 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0 Thunderbird/102.8.0 Subject: Re: [PATCH v2 1/2] PCI/ATS: Add a helper function to configure ATS STU of a PF Content-Language: en-US To: Bjorn Helgaas Cc: Ganapatrao Kulkarni , linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, joro@8bytes.org, bhelgaas@google.com, robin.murphy@arm.com, will@kernel.org, jean-philippe@linaro.org, darren@os.amperecomputing.com, scott@os.amperecomputing.com References: <20230314211739.GA1679724@bhelgaas> From: Sathyanarayanan Kuppuswamy In-Reply-To: <20230314211739.GA1679724@bhelgaas> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230314_212220_007787_CE4E74BC X-CRM114-Status: GOOD ( 32.20 ) 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 CgpPbiAzLzE0LzIzIDI6MTcgUE0sIEJqb3JuIEhlbGdhYXMgd3JvdGU6Cj4gT24gVHVlLCBNYXIg MTQsIDIwMjMgYXQgMTE6MTI6MTFBTSAtMDcwMCwgU2F0aHlhbmFyYXlhbmFuIEt1cHB1c3dhbXkg d3JvdGU6Cj4+IE9uIDMvMTQvMjMgMTA6MTAgQU0sIEJqb3JuIEhlbGdhYXMgd3JvdGU6Cj4+PiBP biBUdWUsIE1hciAxNCwgMjAyMyBhdCAwOTo1MDowNkFNIC0wNzAwLCBTYXRoeWFuYXJheWFuYW4g S3VwcHVzd2FteSB3cm90ZToKPj4+PiBPbiAzLzE0LzIzIDk6MDIgQU0sIEJqb3JuIEhlbGdhYXMg d3JvdGU6Cj4+Pj4+IE9uIFR1ZSwgTWFyIDE0LCAyMDIzIGF0IDA4OjA2OjA3UE0gKzA1MzAsIEdh bmFwYXRyYW8gS3Vsa2Fybmkgd3JvdGU6Cj4+Pj4+PiBPbiAxNC0wMy0yMDIzIDA2OjIyIHBtLCBT YXRoeWFuYXJheWFuYW4gS3VwcHVzd2FteSB3cm90ZToKPj4+Pj4+PiBPbiAzLzE0LzIzIDM6MDgg QU0sIEdhbmFwYXRyYW8gS3Vsa2Fybmkgd3JvdGU6Cj4+Pj4+Pj4+IE9uIDE0LTAzLTIwMjMgMDQ6 MDAgYW0sIFNhdGh5YW5hcmF5YW5hbiBLdXBwdXN3YW15IHdyb3RlOgo+Pj4+Pj4+Pj4gT24gMy8x My8yMyAyOjEyIFBNLCBCam9ybiBIZWxnYWFzIHdyb3RlOgo+Pj4+Pj4+Pj4+IE9uIE1vbiwgRmVi IDI3LCAyMDIzIGF0IDA4OjIxOjM2UE0gLTA4MDAsIEdhbmFwYXRyYW8gS3Vsa2Fybmkgd3JvdGU6 Cj4+Pj4+Pj4+Pj4+IEFzIHBlciBQQ0kgc3BlY2lmaWNhdGlvbiAoUENJIEV4cHJlc3MgQmFzZSBT cGVjaWZpY2F0aW9uCj4+Pj4+Pj4+Pj4+IFJldmlzaW9uIDYuMCwgU2VjdGlvbiAxMC41KSBib3Ro IFBGIGFuZCBWRnMgb2YgYSBQQ0kgRVAKPj4+Pj4+Pj4+Pj4gYXJlIHBlcm1pdHRlZCB0byBiZSBl bmFibGVkIGluZGVwZW5kZW50bHkgZm9yIEFUUwo+Pj4+Pj4+Pj4+PiBjYXBhYmlsaXR5LCBob3dl dmVyIHRoZSBTVFUoU21hbGxlc3QgVHJhbnNsYXRpb24gVW5pdCkgaXMKPj4+Pj4+Pj4+Pj4gc2hh cmVkIGJldHdlZW4gUEYgYW5kIFZGcy4gRm9yIFZGcywgaXQgaXMgaGFyZHdpcmVkIHRvCj4+Pj4+ Pj4+Pj4+IFplcm8gYW5kIHRoZSBhc3NvY2lhdGVkIFBGJ3MgdmFsdWUgYXBwbGllcyB0byBWRnMu Cj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+IEluIHRoZSBjdXJyZW50IGNvZGUsIHRoZSBTVFUgaXMg YmVpbmcgY29uZmlndXJlZCB3aGlsZQo+Pj4+Pj4+Pj4+PiBlbmFibGluZyB0aGUgUEYgQVRTLiAg SGVuY2UsIGl0IGlzIG5vdCBhYmxlIHRvIGVuYWJsZSBBVFMKPj4+Pj4+Pj4+Pj4gZm9yIFZGcywg aWYgaXQgaXMgbm90IGVuYWJsZWQgb24gdGhlIGFzc29jaWF0ZWQgUEYKPj4+Pj4+Pj4+Pj4gYWxy ZWFkeS4KPj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4gQWRkaW5nIGEgZnVuY3Rpb24gcGNpX2F0c19z dHVfY29uZmlndXJlKCksIHdoaWNoIGNhbiBiZQo+Pj4+Pj4+Pj4+PiBjYWxsZWQgdG8gY29uZmln dXJlIHRoZSBTVFUgZHVyaW5nIFBGIGVudW1lcmF0aW9uLiAgTGF0dGVyCj4+Pj4+Pj4+Pj4+IGVu dW1lcmF0aW9ucyBvZiBWRnMgY2FuIHN1Y2Nlc3NmdWxseSBlbmFibGUgQVRTCj4+Pj4+Pj4+Pj4+ IGluZGVwZW5kZW50bHkuCj4+Pj4+Cj4+Pj4+Pj4+Pj4+IEBAIC00Niw2ICs0NiwzNSBAQCBib29s IHBjaV9hdHNfc3VwcG9ydGVkKHN0cnVjdCBwY2lfZGV2ICpkZXYpCj4+Pj4+Pj4+Pj4+ICDCoCB9 Cj4+Pj4+Pj4+Pj4+ICDCoCBFWFBPUlRfU1lNQk9MX0dQTChwY2lfYXRzX3N1cHBvcnRlZCk7Cj4+ Pj4+Pj4+Pj4+ICDCoCArLyoqCj4+Pj4+Pj4+Pj4+ICsgKiBwY2lfYXRzX3N0dV9jb25maWd1cmUg LSBDb25maWd1cmUgU1RVIG9mIGEgUEYuCj4+Pj4+Pj4+Pj4+ICsgKiBAZGV2OiB0aGUgUENJIGRl dmljZQo+Pj4+Pj4+Pj4+PiArICogQHBzOiB0aGUgSU9NTVUgcGFnZSBzaGlmdAo+Pj4+Pj4+Pj4+ PiArICoKPj4+Pj4+Pj4+Pj4gKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBv biBmYWlsdXJlLgo+Pj4+Pj4+Pj4+PiArICovCj4+Pj4+Pj4+Pj4+ICtpbnQgcGNpX2F0c19zdHVf Y29uZmlndXJlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBwcykKPj4+Pj4+Pj4+Pj4gK3sKPj4+ Pj4+Pj4+Pj4gK8KgwqDCoCB1MTYgY3RybDsKPj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+PiArwqDC oMKgIGlmIChkZXYtPmF0c19lbmFibGVkIHx8IGRldi0+aXNfdmlydGZuKQo+Pj4+Pj4+Pj4+PiAr wqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBJIG1pZ2h0IHJl dHVybiBhbiBlcnJvciBmb3IgdGhlIFZGIGNhc2Ugb24gdGhlIGFzc3VtcHRpb24KPj4+Pj4+Pj4+ PiB0aGF0IGl0J3MgbGlrZWx5IGFuIGVycm9yIGluIHRoZSBjYWxsZXIuwqAgSSBndWVzcyBvbmUg Y291bGQKPj4+Pj4+Pj4+PiBhcmd1ZSB0aGF0IGl0IHNpbXBsaWZpZXMgdGhlIGNhbGxlciBpZiBp dCBkb2Vzbid0IGhhdmUgdG8KPj4+Pj4+Pj4+PiBjaGVjayBmb3IgUEYgdnMgVkYuwqAgQnV0IHRo ZSBmYWN0IHRoYXQgU1RVIGlzIHNoYXJlZCBiZXR3ZWVuCj4+Pj4+Pj4+Pj4gUEYgYW5kIFZGcyBp cyBhbiBpbXBvcnRhbnQgcGFydCBvZiB1bmRlcnN0YW5kaW5nIGhvdyBBVFMKPj4+Pj4+Pj4+PiB3 b3Jrcywgc28gdGhlIGNhbGxlciBzaG91bGQgYmUgYXdhcmUgb2YgdGhlIGRpc3RpbmN0aW9uCj4+ Pj4+Pj4+Pj4gYW55d2F5Lgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IEkgaGF2ZSBhbHJlYWR5IGFza2Vk IHRoaXMgcXVlc3Rpb24uIEJ1dCBsZXQgbWUgcmVwZWF0IGl0Lgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ IFdlIGRvbid0IGhhdmUgYW55IGNoZWNrcyBmb3IgdGhlIFBGIGNhc2UgaGVyZS4gVGhhdCBtZWFu cyB5b3UKPj4+Pj4+Pj4+IGNhbiByZS1jb25maWd1cmUgdGhlIFNUVSBhcyBtYW55IHRpbWVzIGFz IHlvdSB3YW50IHVudGlsIEFUUwo+Pj4+Pj4+Pj4gaXMgZW5hYmxlZCBpbiBQRi4gU28sIGlmIHRo ZXJlIGFyZSBhY3RpdmUgVkZzIHdoaWNoIHVzZXMgdGhpcwo+Pj4+Pj4+Pj4gU1RVLCBjYW4gUEYg cmUtY29uZmlndXJlIHRoZSBTVFUgYXQgd2lsbD8KPj4+Pj4+Pj4KPj4+Pj4+Pj4gSU1PLCBTaW5j ZSBTVFUgaXMgc2hhcmVkLCBwcm9ncmFtbWluZyBpdCBtdWx0aXBsZSB0aW1lcyBpcyBub3QgZXhw ZWN0ZWQgZnJvbSBjYWxsZXJzIGNvZGUgZG8gaXQsIGhvd2V2ZXIgd2UgY2FuIGFkZCBiZWxvdyBj aGVjayB0byBhbGxvdyB0byBwcm9ncmFtIFNUVSBvbmNlIGZyb20gYSBQRi4KPj4+Pj4+Pj4KPj4+ Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2F0cy5jIGIvZHJpdmVycy9wY2kvYXRzLmMK Pj4+Pj4+Pj4gaW5kZXggMTYxMWJmYTFkNWRhLi5mN2JiMDEwNjhlMTggMTAwNjQ0Cj4+Pj4+Pj4+ IC0tLSBhL2RyaXZlcnMvcGNpL2F0cy5jCj4+Pj4+Pj4+ICsrKyBiL2RyaXZlcnMvcGNpL2F0cy5j Cj4+Pj4+Pj4+IEBAIC02MCw2ICs2MCwxMCBAQCBpbnQgcGNpX2F0c19zdHVfY29uZmlndXJlKHN0 cnVjdCBwY2lfZGV2ICpkZXYsIGludCBwcykKPj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgIGlmIChk ZXYtPmF0c19lbmFibGVkIHx8IGRldi0+aXNfdmlydGZuKQo+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+Pj4+Pj4+Pgo+Pj4+Pj4+PiArwqDCoMKgwqDC oMKgIC8qIENvbmZpZ3VyZWQgYWxyZWFkeSAqLwo+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgIGlmIChk ZXYtPmF0c19zdHUpCj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biAwOwo+Pj4+Pj4+Cj4+Pj4+Pj4gVGhlb3JldGljYWxseSwgeW91IGNhbiByZS1jb25maWd1cmUg U1RVIGFzIGxvbmcgYXMgbm8gb25lIGlzIHVzaW5nCj4+Pj4+Pj4gaXQuIEluc3RlYWQgb2YgdGhp cyBjaGVjaywgaXMgdGhlcmUgYSB3YXkgdG8gY2hlY2sgd2hldGhlciB0aGVyZQo+Pj4+Pj4+IGFy ZSBhY3RpdmUgVk1zIHdoaWNoIGVuYWJsZXMgQVRTPwo+Pj4+Pj4KPj4+Pj4+IFllcyBJIGFncmVl LCB0aGVyZSBpcyBubyBsaW1pdGF0aW9uIG9uIGhvdyBtYW55IHRpbWVzIHlvdSB3cml0ZSBTVFUK Pj4+Pj4+IGJpdHMsIGJ1dCBwcmFjdGljYWxseSBpdCBpcyBoYXBwZW5pbmcgd2hpbGUgUEYgaXMg ZW51bWVyYXRlZC4KPj4+Pj4+Cj4+Pj4+PiBUaGUgdXNhZ2Ugb2YgZnVuY3Rpb24gcGNpX2F0c19z dHVfY29uZmlndXJlIGlzIGFsbW9zdAo+Pj4+Pj4gc2ltaWxhcihzdWJzZXQpIHRvIHBjaV9lbmFi bGVfYXRzIGFuZCBvbmx5IGRpZmZlcmVuY2UgaXMgb25lIGRvZXMKPj4+Pj4+IEFUUyBlbmFibGUg KyBTVFUgcHJvZ3JhbSBhbmQgYW5vdGhlciBkb2VzIG9ubHkgU1RVIHByb2dyYW0uCj4+Pj4+Cj4+ Pj4+IFdoYXQgd291bGQgeW91IHRoaW5rIG9mIHJlbW92aW5nIHRoZSBTVFUgdXBkYXRlIGZlYXR1 cmUgZnJvbQo+Pj4+PiBwY2lfZW5hYmxlX2F0cygpIHNvIGl0IGFsd2F5cyBmYWlscyBpZiBwY2lf YXRzX3N0dV9jb25maWd1cmUoKSBoYXMgbm90Cj4+Pj4+IGJlZW4gY2FsbGVkLCBldmVuIHdoZW4g Y2FsbGVkIG9uIHRoZSBQRiwgZS5nLiwKPj4+Pj4KPj4+Pj4gICBpZiAocHMgIT0gcGNpX3BoeXNm bihkZXYpLT5hdHNfc3R1KQo+Pj4+PiAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+Pj4KPj4+PiBJZiB3 ZSBhcmUgcmVtb3ZpbmcgdGhlIFNUVSB1cGRhdGUgZnJvbSBwY2lfZW5hYmxlX2F0cygpLCB3aHkK Pj4+PiBldmVuIGFsbG93IHBhc3NpbmcgInBzIChwYWdlIHNoaWZ0KSIgcGFyYW1ldGVyPyBJTU8s IHdlIGNhbiBhc3N1bWUgdGhhdAo+Pj4+IGZvciBTVFUgcmVjb25maWd1cmUsIHVzZXJzIHdpbGwg Y2FsbCBwY2lfYXRzX3N0dV9jb25maWd1cmUoKS4KPj4+Cj4+PiBUaGUgcmVhc29uIHRvIHBhc3Mg InBzIiB3b3VsZCBiZSB0byB2ZXJpZnkgdGhhdCB0aGUgU1RVIHRoZSBjYWxsZXIKPj4+IHBsYW5z IHRvIHVzZSBtYXRjaGVzIHRoZSBhY3R1YWwgU1RVLgo+Pgo+PiBEbyB3ZSByZWFsbHkgbmVlZCB0 byB2ZXJpZnkgaXQ/IE15IHRoaW5raW5nIGlzLCBieSBpbnRyb2R1Y2luZwo+PiBwY2lfYXRzX3N0 dV9jb25maWd1cmUoKSB3ZSBhcmUgYWxyZWFkeSB0cnlpbmcgdG8gZGVjb3VwbGUgdGhlIFNUVSBj b25maWcKPj4gZnJvbSBwY2lfZW5hYmxlX2F0cygpLiBTbyB3aHkgYWdhaW4gY2hlY2sgZm9yIGl0 IHdoZW4gZW5hYmxpbmcgQVRTPwo+IAo+IFllYWgsIG1heWJlIHdlIGRvbid0IG5lZWQgdG8uICBJ IHdhcyB0aGlua2luZyB0aGF0IFNUVSB3b3VsZCBiZQo+IGNvbmZpZ3VyZWQgYnkgdGhlIGhvc3Qs IHdoaWxlIHRoZSBjYWxsZXIgb2YgcGNpX2VuYWJsZV9hdHMoKSBmb3IgYSBWRgo+IG1pZ2h0IGJl IGluIGEgZ3Vlc3QsIGJ1dCBJIGd1ZXNzIHRoYXQncyBub3QgdGhlIGNhc2UsIHJpZ2h0PwoKSSB0 aGluayB0aGUgaWRlYSBpcyB0byBjb25maWd1cmUgdGhlIFNUVSBkdXJpbmcgUEYgZW51bWVyYXRp b24gaW4gdGhlCmhvc3QuIFNvLCB3aGVuIFZGIGVuYWJsZXMgQVRTIGluIHRoZSBWTSwgaXQgZG9l cyBub3QgbmVlZCB0byB3b3JyeSBhYm91dAp0aGUgU1RVIGNvbmZpZ3VyYXRpb24uIFNvIEkgZG9u J3QgdGhpbmsgd2UgbmVlZCB0byByZS1jaGVjayB0aGUgU1RVIGluCnRoZSBWRiBjYXNlLgoKPiAK PiBCam9ybgoKLS0gClNhdGh5YW5hcmF5YW5hbiBLdXBwdXN3YW15CkxpbnV4IEtlcm5lbCBEZXZl bG9wZXIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LWFybS1rZXJuZWwK