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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6AD18C4167B for ; Fri, 1 Dec 2023 02:37:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C71376B04A8; Thu, 30 Nov 2023 21:37:31 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C21796B04A9; Thu, 30 Nov 2023 21:37:31 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A9ACF6B04AA; Thu, 30 Nov 2023 21:37:31 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 961D16B04A8 for ; Thu, 30 Nov 2023 21:37:31 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 66F42801CC for ; Fri, 1 Dec 2023 02:37:31 +0000 (UTC) X-FDA: 81516688302.11.A5E261D Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by imf30.hostedemail.com (Postfix) with ESMTP id 683D980012 for ; Fri, 1 Dec 2023 02:37:27 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=none; spf=pass (imf30.hostedemail.com: domain of weixi.zhu@huawei.com designates 45.249.212.189 as permitted sender) smtp.mailfrom=weixi.zhu@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701398249; a=rsa-sha256; cv=none; b=ZiRRzpk694dlBtJzJCgF3kahV/BE7QEYCCv4QObY96KmjjFzUtxf0ePSO4M9gzbFbU/L1q PadhFi9yKPsYX6FEF9AmtOJyTI5RDI0mfTiK94M0Wg9CVtXzezyuKCg9vWvX5T2M3m28rJ aEUEzK0ypmLmy1VkGIaFyBMDtw2Gh6Y= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=none; spf=pass (imf30.hostedemail.com: domain of weixi.zhu@huawei.com designates 45.249.212.189 as permitted sender) smtp.mailfrom=weixi.zhu@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701398249; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=B/hOxjmxjAYao7EXUxe/PkLA/RAenpeHHRd4yQQcZyc=; b=D8SOxch62eYCj4UN9Dsp7fFWr1g0xzw0xEvOxCtEMSK0jJYh0LcXkRPyy+g5/+S5PiPlXh 8YIWKcKBQoSfGNpa2izOwV6SHnNjEn/QjTixQyVi84WC55E9PUi2PBVSrOO5nyYnKIuCo0 nWXRlwEawMxENd74bFDP6SiOuzr7Mag= Received: from kwepemm600020.china.huawei.com (unknown [172.30.72.55]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4ShHCK3glFzMnQV; Fri, 1 Dec 2023 10:32:29 +0800 (CST) Received: from kwepemm000018.china.huawei.com (7.193.23.4) by kwepemm600020.china.huawei.com (7.193.23.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Fri, 1 Dec 2023 10:37:22 +0800 Received: from kwepemm000018.china.huawei.com ([7.193.23.4]) by kwepemm000018.china.huawei.com ([7.193.23.4]) with mapi id 15.01.2507.035; Fri, 1 Dec 2023 10:37:22 +0800 From: zhuweixi To: =?utf-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?= , "Dave Airlie" CC: "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , "akpm@linux-foundation.org" , "weixi.zhu@openeuler.sh" , "mgorman@suse.de" , "jglisse@redhat.com" , "rcampbell@nvidia.com" , "jhubbard@nvidia.com" , "apopple@nvidia.com" , "mhairgrove@nvidia.com" , "ziy@nvidia.com" , "alexander.deucher@amd.com" , "Xinhui.Pan@amd.com" , "amd-gfx@lists.freedesktop.org" , "Felix.Kuehling@amd.com" , "ogabbay@kernel.org" , "dri-devel@lists.freedesktop.org" , "jgg@nvidia.com" , "leonro@nvidia.com" , "zhenyuw@linux.intel.com" , "zhi.a.wang@intel.com" , "intel-gvt-dev@lists.freedesktop.org" , "intel-gfx@lists.freedesktop.org" , "jani.nikula@linux.intel.com" , "joonas.lahtinen@linux.intel.com" , "rodrigo.vivi@intel.com" , "tvrtko.ursulin@linux.intel.com" , Danilo Krummrich , "Daniel Vetter" , "Zeng, Oak" Subject: RE: [RFC PATCH 0/6] Supporting GMEM (generalized memory management) for external memory devices Thread-Topic: [RFC PATCH 0/6] Supporting GMEM (generalized memory management) for external memory devices Thread-Index: AQHaIfl9wrtrX0lryUy6fTQuS5BXZrCPLVeAgAEOlwCAALjigP//8NSAgAE4ctCAADOcgIABXNcQ Date: Fri, 1 Dec 2023 02:37:21 +0000 Message-ID: <4a7eb924297341708400949a8a62b277@huawei.com> References: <20231128125025.4449-1-weixi.zhu@huawei.com> <9308a79d-e312-4e6d-98fe-75dc6d0fbeda@amd.com> <8b3673c7-d0b9-4509-938f-eb8d4f158367@amd.com> <6f5d849a16084f68a2e24a7810eac433@huawei.com> <0973526a-ea8e-4a1d-8684-2d49a772c04a@amd.com> In-Reply-To: <0973526a-ea8e-4a1d-8684-2d49a772c04a@amd.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.174.179.172] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 683D980012 X-Stat-Signature: qkaa1pzybdq9iqfhi841syynueap6tf4 X-HE-Tag: 1701398247-391615 X-HE-Meta: U2FsdGVkX1/GTSeGRJ8ZMooa1tQF+FGQRxhrGx4keLOivgtPddIrhLVEEUuJMX3MNqsqTfUbtp7WhDCaVYiydteadeDGXLvFzFwpRi3k2tELdQv7bGPF0LPGg2c4aZGcatrHiOdOTRziqd1QfgcsgzQ1b/GBrBHWoNX/ecFP955kOh4S599rj09SInDsrRBPfqRSqHHc2jvRI2AMeRRuBIBfc/s2N9BLDugwW7sLIVThRTaTPCnEgCWkS+bXPmyh1ncOgg5Q6BhkUV8+83jPvu3iJUqHWQrMK3MX01De8SI9q0cAASjKPEfh7iD5P7XM1HQr4WwfL6cIZLuShC1x+08Oatvzah/LUXOjwsQ6UoNzfNurMKoSYIScXGEESy4sYIorZOmV+1r3WnAXaPYOOXJid3R6DJuDg2fw+4j04t2Qruw7gbRax09OUlqkZBzzpaDWjDlCvUYzHlKtSzTbtByem/z6aC5BTCMYHjdtL7qJRUILzkZuSOMVSzOdkNod0LUOAFInUXW9owSnEc2jwBwMaCirUGtaKF7S9UP5L9z5xClgw0nbNuVXwnsNBU2Rfp+EaBBWqiRfbePWRFEEwb5+1dkvoAlmRXP5Ze9h2IMNGxrzCOBH6XAoyHcNnrymzxwMLc4BBLX1JOytv519GOeAEAtkWeTrPM2AkV3+7wEmEd6nD5akppzKlRebQROVglE5reSYd+Wa4w6fj4RHIKAggPEiRApPIsrMLAR2SIcrixrI+8wennPpL1mqwcopU35fNJST5d9D48CX938I2g9ICoIZZUZaN5+qi8123qT7V2lxm7ZMn2msbfTi00sx6ki6oJvrIIcqIQ8A6YQBLWzj2wtTUVoE8vUcf+kJ3j7sbLLTP4UW3GBfulimt8f4idQZQW6x7z8IYIVSoo6H3Pa1OQP/1Bi8g7ElA0zPmazG9MA3TrQbwhUgtzHx1Hkz6cUepKJsdulftPHsyNK vOHa6xN0 cyUGrpAWA+GeQ4sfmwEuBeshwCcnV7Vv66PcPXmXwUWdvSAH1I1xl2VsNNMq53nk2oBAkUJjrZ8yVzoXOfbXxkRDJMqSH28NwQeNoNq1wSdbJZSuZn4CFxyDA0MVnG+3WK+4ku1LCW/kEwXpKsNuSP5IEtpY58Uz6eLore5uYy8J9vp9tBywIy9C4MmMSZCQZ3w4P5j20VsG9rvov8NfHpcMED2mPB6XimkLx7IF52oZHhnoQGpmQM7agE6rXzVl4UckkqF67JTEYzBeLi5YxWmDEOACJx+XbtSlzwdZBEorazYEk+sbay65fEjFfKEMFvecJX3UHKuNJz9Lnh/aQ8Ty8O9AYt9xfzXqFySCyy1RaYqwFyyjvbQLsdrlkmlkbYbWkAytKevjnqZurn7vuqam1o90QlAyyTkxD5FtWygzI1kXCzSb44l2goanZPHhHx/r3b8AwBxt1oZeyyFoyHiJZGGWFPIZlLD1cydF+DcIICKHL/vqL8n+VsDbwQtLo9yP8Mvle5vAgsQR7TMJABuaeXXKTVHqCxaC8GhnlQmcKvwKeBlZR5MdAJ7mdloMWqslQnPc+rar2oaXIN0nl3rwlt0lFGYDuJecnxgXdqrocrdgt6OwxEGNEaHhwftE4BSawrzdwbiGaRN1/W61eHjbLp0A0EuKkHQLeqDVTEk9tZq/CPKMSy+PLxGtC33VlhEwG1oxPJwHc4emJNmILor70DyLXU1CSjGUa X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: RnJvbSB5b3VyIGFyZ3VtZW50IG9uIEtWTSBJIGNhbiBzZWUgdGhhdCB0aGUgYmlnZ2VzdCBtaXNj b21tdW5pY2F0aW9uIGJldHdlZW4gdXMgaXMgdGhhdCB5b3UgYmVsaWV2ZWQgdGhhdCBHTUVNIHdh bnRlZCB0byBzaGFyZSB0aGUgd2hvbGUgYWRkcmVzcyBzcGFjZS4gTm8sIGl0IGlzIG5vdCB0aGUg Y2FzZS4gR01FTSBpcyBvbmx5IHByb3ZpZGluZyBjb29yZGluYXRpb24gdmlhIGNlcnRhaW4gbW1h cCgpIGNhbGxzLiBTbyB5b3UgYXJlIHJhaXNpbmcgYSBjYXNlIHN1cHBvcnRpbmcgR01FTSBhZ2Fp biAtLSBwYXNzdGhyb3VnaCBwYXJ0IG9mIHRoZSBDUFUgYWRkcmVzc2VzIHNwYWNlIGluc3RlYWQg b2YgcGFzc3Rocm91Z2ggdGhlIHdob2xlIENQVSBhZGRyZXNzIHNwYWNlLCBpcyBleGFjdGx5IHdo YXQgR01FTSBjYW4gZG8uIE9uIHRoZSBvdGhlciBzaWRlLCB0aGUgSU9NTVUgU1ZBIGZlYXR1cmUg d2lsZGx5IGJpbmRzIHRoZSB3aG9sZSBhZGRyZXNzIHNwYWNlIC0tIHNpbmNlIHRoZSBoYXJkd2Fy ZSBmZWF0dXJlIGlzIHRvIGRpcmVjdGx5IHNoYXJlIHRoZSB3aG9sZSBDUFUgcGFnZSB0YWJsZS4N Cg0KIldlIHJlYWxseSBzaG91bGQgbmV2ZXIgZXZlciBlbmNvdXJhZ2UgcGVvcGxlIHRvIGJpbmQg dGhlaXIgZGV2aWNlIGFkZHJlc3Mgc3BhY2UgdG8gdGhlIENQVSBhZGRyZXNzIHNwYWNlLiBUaGlz IGlzIGEgdmVyeSBzcGVjaWFsIHVzZSBjYXNlIGFuZCBsaW1pdHMgdGhlIGRyaXZlciBkZXNpZ24g dG8gb25seSB0aGlzIHVzZSBjYXNlLg0KV2UgaGF2ZSBleGVyY2lzZWQgdGhpcyBhcHByb2FjaCB0 byBhIHJhdGhlciBleHRyZW1lIGRlZ3JlZSB3aXRoIEtGRCBhbmQgSSBjYW4gY2xlYXJseSBzYXkg dGhhdCBkb2luZyB0aGlzIHdhcyBhIHJlYWxseSBiaWcgbWlzdGFrZS4NCkFzIGZhciBhcyBJIGNh biBzZWUgeW91IGFyZSBhYm91dCB0byByZXBlYXQgdGhhdCBtaXN0YWtlIGFuZCBldmVuIGVuY291 cmFnZSBvdGhlcnMgdG8gZG8gc28gYXMgd2VsbC4iDQoNCi0tIFRoZSBiZWhhdmlvciBvZiBpbnRl cm5hbGx5ICJhdHRhY2ggZGV2aWNlIGNvbnRleHQgdG8gbW1fc3RydWN0IiBpbiBHTUVNIGlzIHVs dGltYXRlbHkgYSBkaWZmZXJlbnQgYXBwcm9hY2ggdG8gY29vcmRpbmF0ZSBDUFUgYW5kIGRldmlj ZXMuIEkgd2FudCB0byByZXBsYWNlIE1NVSBub3RpZmllcnMgd2l0aCB0aGlzIGFwcHJvYWNoIGJl Y2F1c2UgSSB3YW50IHRvIHByb3RlY3QgY29yZSBNTSBmcm9tIHJhbmRvbSBpbnRlcmFjdGlvbnMg d2l0aCBleHRlcm5hbCBkcml2ZXIgTU1zLiBCb3RoIEdNRU0gYW5kIE1NVSBub3RpZmllcnMgYXJl IGJpbmRpbmcgZGV2aWNlIGNvbnRleHRzIHRvIHRoZSBDUFUgY29udGV4dCwgbm90IHB1dHRpbmcg dGhlbSBpbiB0aGUgc2FtZSBhZGRyZXNzIHNwYWNlLiBJZiBzb21lb25lIGlzIGFnYWluc3QgR01F TSdzIGFwcHJvYWNoIGZvciBiaW5kaW5nIENQVSBhbmQgZGV2aWNlIGNvbnRleHQsIHRoZW4gc29t ZW9uZSBzaG91bGQgYmUgYWdhaW5zdCBNTVUgbm90aWZpZXJzIGFzIHdlbGwuDQoNCkN1cnJlbnRs eSwgZnJvbSBvdXIgZGlzY3Vzc2lvbiBJIHRoaW5rIEkgcmVjZWl2ZWQgdHdvIG1lc3NhZ2VzOg0K CTEuIFRoZSBvcmlnaW5hbCBBTURLRkQgZGVzaWduIHdhcyByZWplY3RlZCBiZWNhdXNlIG9mIGlu c2VydGluZyB2ZW5kb3Itc3BlY2lmaWMgc3R1ZmYgdG8gdGhlIGdlbmVyaWMgY29yZSBNTS4NCgky LiBUaGUgcmVqZWN0aW9uIGZyb20gIzEgbGVkIHRvIHlvdXIgb3BpbmlvbiB0aGF0IGFueW9uZSBj YW5ub3QgbWl4IGRldmljZSBhbmQgY29yZSBNTSB0b2dldGhlci4NCg0KSSB0aGluayAjMSByZWFs bHkgZW5jb3VyYWdlZCBtZSB0aGF0IEdNRU0gY291bGQgaGVscCB0aGUgQU1ES0ZEIGRyaXZlci4g SG93ZXZlciBJIGFtIGFsc28gY29uZnVzZWQgdGhhdCB3aHkgR01FTSBtdXN0IGJlIGNvbXBhcmVk IHdpdGggYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyLiBBTURLRkQgd2FzIG9ubHkgY29uc2lkZXJp bmcgYSB2ZXJ5IHNwZWNpYWwgdXNlIGNhc2U6IEFNRCBHUFVzIHVzaW5nIEFNRCBJT01NVS4gDQpI b3dldmVyLCBHTUVNIGlzIHRyeWluZyB0byBjb25zaWRlciBhbGwgZ2VuZXJhbGl6ZWQgY2FzZXMg b2YgbWVtb3J5IGRldmljZXMuIFRoZSBkZXZpY2UgY2FuIGJlIE52aWRpYSdzIEdQVSBhbmQgSHVh d2VpJ3MgTlBVIHRoYXQgdXNlIHRoZWlyIG93biBNTVVzLCBvciBBTUQvSW50ZWwgR1BVcyB0aGF0 IHVzZSBJT01NVXMsIG9yIG90aGVyIGh1bmRyZWRzIG9mIG5ldyBhY2NlbGVyYXRvciB2ZW5kb3Jz Lg0KDQotV2VpeGkNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IENocmlzdGlh biBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4gDQpTZW50OiBUaHVyc2RheSwgTm92 ZW1iZXIgMzAsIDIwMjMgOTowNSBQTQ0KVG86IHpodXdlaXhpIDx3ZWl4aS56aHVAaHVhd2VpLmNv bT47IERhdmUgQWlybGllIDxhaXJsaWVkQGdtYWlsLmNvbT4NCkNjOiBsaW51eC1tbUBrdmFjay5v cmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGFrcG1AbGludXgtZm91bmRhdGlvbi5v cmc7IHdlaXhpLnpodUBvcGVuZXVsZXIuc2g7IG1nb3JtYW5Ac3VzZS5kZTsgamdsaXNzZUByZWRo YXQuY29tOyByY2FtcGJlbGxAbnZpZGlhLmNvbTsgamh1YmJhcmRAbnZpZGlhLmNvbTsgYXBvcHBs ZUBudmlkaWEuY29tOyBtaGFpcmdyb3ZlQG52aWRpYS5jb207IHppeUBudmlkaWEuY29tOyBhbGV4 YW5kZXIuZGV1Y2hlckBhbWQuY29tOyBYaW5odWkuUGFuQGFtZC5jb207IGFtZC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnOyBGZWxpeC5LdWVobGluZ0BhbWQuY29tOyBvZ2FiYmF5QGtlcm5lbC5v cmc7IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGpnZ0BudmlkaWEuY29tOyBsZW9u cm9AbnZpZGlhLmNvbTsgemhlbnl1d0BsaW51eC5pbnRlbC5jb207IHpoaS5hLndhbmdAaW50ZWwu Y29tOyBpbnRlbC1ndnQtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgaW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZzsgamFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tOyBqb29uYXMubGFo dGluZW5AbGludXguaW50ZWwuY29tOyByb2RyaWdvLnZpdmlAaW50ZWwuY29tOyB0dnJ0a28udXJz dWxpbkBsaW51eC5pbnRlbC5jb207IERhbmlsbyBLcnVtbXJpY2ggPGRha3JAcmVkaGF0LmNvbT47 IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD47IFplbmcsIE9hayA8b2FrLnplbmdAaW50 ZWwuY29tPg0KU3ViamVjdDogUmU6IFtSRkMgUEFUQ0ggMC82XSBTdXBwb3J0aW5nIEdNRU0gKGdl bmVyYWxpemVkIG1lbW9yeSBtYW5hZ2VtZW50KSBmb3IgZXh0ZXJuYWwgbWVtb3J5IGRldmljZXMN Cg0KQW0gMzAuMTEuMjMgdW0gMDg6MjIgc2NocmllYiB6aHV3ZWl4aToNCj4gQWRkIEBPYWsgdG8g dGhlIEtGRCBkaXNjdXNzaW9uLiBJIHdpbGwgcmVwbHkgc2VwYXJhdGVseSBlbGFib3JhdGluZyB5 b3VyIHF1ZXN0aW9ucyBvbiBHTUVNJ3MgZGlmZmVyZW5jZSBmcm9tIEhNTS9NTVUgbm90aWZpZXJz Lg0KPg0KPiBDaHJpc3RpYW4sIHRoYW5rcyBmb3IgcG9pbnRpbmcgbWUgdG8gdGhhdCBBTURLRkQg ZGlzY3Vzc2lvbi4gSSBoYXZlIHJlYWQgdGhlIGRpc2N1c3Npb24gYXJvdW5kIHRoZSBBTURLRkQg c2tlbGV0b24gcGF0Y2ggYW5kIGZvdW5kIHRoZSBwcmV2aW91cyBkaXNjdXNzaW9uIGluIHRoZSBm b2xsb3dpbmcgVVJMczoNCj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzE0MDUw Mjg4NDgtNTY2MC0xLWdpdC1zZW5kLWVtYWlsLW9kZQ0KPiBkLmdhYmJheUBhbWQuY29tLyNyIA0K PiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvMjAxNDA3MTExNTQyMzEuR0IxODcw QGdtYWlsLmNvbS8NCj4NCj4gSSBiZWxpZXZlIEFNREtGRCdzIG9yaWdpbmFsIHBhdGNoIHdhcyBy ZWplY3RlZCBtb3N0bHkgYmVjYXVzZSBvZiBpbnNlcnRpbmcgdmVuZG9yLXNwZWNpZmljIHN0dWZm IHRvIHRoZSBnZW5lcmljIGNvcmUgTU0uICBKw6lyw7RtZSBoYXMgY2xlYXJseSBzdGF0ZWQgdGhp cyBpc3N1ZSBpbiB0aGUgc2Vjb25kIFVSTC4gSWYgdGhlIGNvZGUgaXMgdmVuZG9yLXNwZWNpZmlj IHRoZW4gaXQgaGFzIG5vIHBsYWNlIGluIGNvcmUgTU0sIHBlcmlvZC4NCj4NCj4gQnV0IHdoeSBk b2VzIHRoYXQgdmVuZG9yLXNwZWNpZmljIHNvbHV0aW9uIHJlbGF0ZSB0byBhIGdlbmVyYWxpemVk IHNvbHV0aW9uIGxpa2UgR01FTT8gVGhlIGluaXRpYWwgQU1ES0ZEIHBhdGNoIGRvZXNuJ3Qgd29y ayBmb3IgTnZpZGlhIG9yIEludGVsLg0KDQpLRkQgd2FzIG1lYW50IHRvIGJlIGEgdmVuZG9yIGFn bm9zdGljIGZyYW1ld29yaywgdmVyeSBzaW1pbGFyIHRvIHdoYXQgeW91IHByb3Bvc2UgaGVyZS4N Cg0KSXQncyBqdXN0IHRoYXQgaXQgd2FzIHNlZW4gYXMgdmVuZG9yIHNwZWNpZmljIGJlY2F1c2Ug bm9ib2R5IGVsc2UgYWN0dWFsbHkgd2FudGVkIHRvIGRlc2lnbiB0aGUgdGhlaXIgZHJpdmVycyB0 aGlzIHdheS4NCg0KPg0KPiBJbiBmYWN0IEkgdGhpbmsgdGhlIHJlamVjdGlvbiBvZiB0aGUgaW5p dGlhbCBBTURLRkQgcGF0Y2ggc3VwcG9ydHMgR01FTSdzIGlkZWEgLS0gdGhlcmUgY291bGQgaGF2 ZSBiZWVuIGEgc2ltcGxlciBBTURLRkQgaW1wbGVtZW50YXRpb24gaWYgdGhlIGNvcmUgTU0gd2Fz IGV4dGVuZGVkIGJ5IEdNRU0uIEFsc28sIGFmdGVyIDkgeWVhcnMsIHRoZXJlIGFyZSBzbyBtYW55 IG90aGVyIGNvbXBhbmllcyBidWlsZGluZyB0aGVpciBhY2NlbGVyYXRvcnMgb3ZlciB0aGUgcGFz dCBmZXcgeWVhcnMsIGVzcGVjaWFsbHkgbm93IHRoZSBHUFQtZmFtaWx5IGhhcyBtYWRlIGEgbXVj aCBiaWdnZXIgc3VjY2Vzcy4gRG9uJ3Qgd2Ugd2FudCB0byBhZHZhbmNlIExpbnV4J3MgY29yZSBN TSBmb3IgbW9yZSBmcmllbmRseSBhbmQgZ2VuZXJhbGl6ZWQgc3VwcG9ydCBmb3IgdGhlIHVwY29t aW5nIG5ldyB2ZW5kb3JzPw0KDQpXZWxsIGV4YWN0bHkgdGhhdCdzIHRoZSBiaWcgcG9pbnQ6IEFi c29sdXRlbHkgbm90IQ0KDQpXZSByZWFsbHkgc2hvdWxkIG5ldmVyIGV2ZXIgZW5jb3VyYWdlIHBl b3BsZSB0byBiaW5kIHRoZWlyIGRldmljZSBhZGRyZXNzIHNwYWNlIHRvIHRoZSBDUFUgYWRkcmVz cyBzcGFjZS4gVGhpcyBpcyBhIHZlcnkgc3BlY2lhbCB1c2UgY2FzZSBhbmQgbGltaXRzIHRoZSBk cml2ZXIgZGVzaWduIHRvIG9ubHkgdGhpcyB1c2UgY2FzZS4NCg0KV2UgaGF2ZSBleGVyY2lzZWQg dGhpcyBhcHByb2FjaCB0byBhIHJhdGhlciBleHRyZW1lIGRlZ3JlZSB3aXRoIEtGRCBhbmQgSSBj YW4gY2xlYXJseSBzYXkgdGhhdCBkb2luZyB0aGlzIHdhcyBhIHJlYWxseSBiaWcgbWlzdGFrZS4N Cg0KQXMgZmFyIGFzIEkgY2FuIHNlZSB5b3UgYXJlIGFib3V0IHRvIHJlcGVhdCB0aGF0IG1pc3Rh a2UgYW5kIGV2ZW4gZW5jb3VyYWdlIG90aGVycyB0byBkbyBzbyBhcyB3ZWxsLg0KDQo+IE5vdyBh bnN3ZXJpbmcgQ2hyaXN0aWFuJ3MgZGVzaWduIGNvbmNlcm5zOg0KPg0KPiAxLiAiVGhlcmUgYXJl IGNhc2VzIHRoYXQgZG8gbm90IHdhbnQgdG8gc2hhcmUgQ1BVIGFkZHJlc3Mgc3BhY2UiDQo+IE1h eWJlLCBidXQgSSBhbSBub3QgZnVsbHkgY29udmluY2VkLiBUaGUgY3VycmVudCBjYXNlIHdlIGNh biBmaW5kIGlzIHdoZW4gYSBOSUMgdXRpbGl6ZXMgSU9NTVUgZm9yIHNlY3VyaXR5LiBGb3IgdGhp cyBjYXNlLCBHTUVNIGltcGxlbWVudGVkIGEgZ2VuZXJhbGl6ZWQgVk1BIHN1cHBvcnQgYW5kIHRl c3RlZCBpdCB3aXRoIE5JQ3MgdXNpbmcgYm90aCBJbnRlbC1JT01NVS9Bcm0tU01NVS4gVGhpcyBj dXQgNjAwIExvQyBvZiBJT1ZBIG1hbmFnZW1lbnQgY29kZSBmcm9tIHRoZSBJT01NVSBkcml2ZXIs IGJ1dCBpdCBpcyBzdGlsbCBub3QgaW5jbHVkZWQgaW4gdGhpcyBSRkMgcGF0Y2ggLS0gSSBjYW5u b3QgZmluZCBvdGhlciBjYXNlcyBkZW1hbmRpbmcgdGhpcyBpc29sYXRpb24uIFRoZSBpc29sYXRp b24gaXMgYWxzbyB1bm5lY2Vzc2FyeSAtLSB0aGUgTklDIGNhbiBlbmFibGUgdGhlIElPTU1VIFNW TSBmZWF0dXJlIHRvIHNoYXJlIHRoZSBDUFUgYWRkcmVzcyBzcGFjZS4gQXMgb2YgS1ZNLCBpdCBp cyBlc3NlbnRpYWxseSBhIGhvc3QgcHJvY2VzcyB0aGF0IHV0aWxpemVzIHR3byBkaWZmZXJlbnQg TU1VcyB3aXRoaW4gdGhlIHNhbWUgYWRkcmVzcyBzcGFjZSwgc28gaXQgZml0cyBHTUVNJ3MgZGVz aWduLi4uDQoNCk1heWJlIEkgZG9uJ3QgY29tcGxldGVseSBmb2xsb3cgaGVyZSBob3cgeW91IHdh bnQgdG8gc2F2ZSBMb0MgZm9yIHRoZSBJT01NVSBpbXBsZW1lbnRhdGlvbiBvZiBOSUNzLCBidXQg YXQgbGVhc3QgZm9yIHRoZSBQQVNJRC9QUkkgc3VwcG9ydCBBTUQganVzdCByZWNlbnRseSBnb25l IGV4YWN0bHkgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbjoNCg0KY29tbWl0IDVhMGIxMWExODBhOWI4 MmI0NDM3YTRiZTFjZjczNTMwMDUzZjEzOWINCkF1dGhvcjogVmFzYW50IEhlZ2RlIDx2YXNhbnQu aGVnZGVAYW1kLmNvbT4NCkRhdGU6wqDCoCBGcmkgT2N0IDYgMDk6NTc6MDIgMjAyMyArMDAwMA0K DQogwqDCoMKgIGlvbW11L2FtZDogUmVtb3ZlIGlvbW11X3YyIG1vZHVsZQ0KDQogwqDCoMKgIEFN RCBHUFUgZHJpdmVyIHdoaWNoIHdhcyB0aGUgb25seSBpbi1rZXJuZWwgdXNlciBvZiBpb21tdV92 MiBtb2R1bGUNCiDCoMKgwqAgcmVtb3ZlZCBkZXBlbmRlbmN5IG9uIGlvbW11X3YyIG1vZHVsZS4N Cg0KIMKgwqDCoCBBbHNvIHdlIGFyZSB3b3JraW5nIG9uIGFkZGluZyBTVkEgc3VwcG9ydCBpbiBB TUQgSU9NTVUgZHJpdmVyLiBEZXZpY2UNCiDCoMKgwqAgZHJpdmVycyBhcmUgZXhwZWN0ZWQgdG8g dXNlIGNvbW1vbiBTVkEgZnJhbWV3b3JrIHRvIGVuYWJsZSBkZXZpY2UNCiDCoMKgwqAgUEFTSUQv UFJJIGZlYXR1cmVzLg0KDQogwqDCoMKgIFJlbW92aW5nIGlvbW11X3YyIG1vZHVsZSBhbmQgdGhl biBhZGRpbmcgU1ZBIHNpbXBsaWZpZXMgdGhlIGRldmVsb3BtZW50Lg0KIMKgwqDCoCBIZW5jZSBy ZW1vdmUgaW9tbXVfdjIgbW9kdWxlLg0KDQpBcyBJIHdyb3RlIGJlZm9yZSB0aGlzIElPTU1VIFYy IGRyaXZlciB3YXMgYmFzaWNhbGx5IGJpbmRpbmcgdGhlIENQVSBhZGRyZXNzIHNwYWNlIHRvIElP TU1VIGRldmljZXMgdXNpbmcgdGhlIFBBU0lELiBGb3IgYW4gZXhhbXBsZSBzZWUgZnVuY3Rpb24g YW1kX2lvbW11X2JpbmRfcGFzaWQoKS4NCg0KVGhpcyB0dXJuZWQgb3V0IHRvIGJlIG5vdCBhcyB1 c2VmdWwgYXMgd2UgaG9wZWQgaXQgd291bGQgYmUuIEVzc2VudGlhbGx5IHRoZSB1c2UgY2FzZSB3 aGVyZSB5b3Ugd2FudCB0byBnaXZlIGEgZGV2aWNlIGFjY2VzcyB0byB0aGUgd2hvbGUgYWRkcmVz cyBzcGFjZSBvZiBhIHByb2Nlc3MgYXJlIGV4dHJlbWVseSBsaW1pdGVkLiBUaGF0J3Mgd2h5IHdl IGFyZSByZW1vdmluZyBpdCBhbmQgc3dpdGNoaW5nIG92ZXIgdG8gYSBzZXBhcmF0ZSBTVkEgaW1w bGVtZW50YXRpb24gd2hpY2ggZG9lc24ndCBkZXBlbmQgb24gdGhlIENQVSBhZGRyZXNzIHNwYWNl Lg0KDQoNCkJ1dCB0aGUgdmlydHVhbGl6YXRpb24gdXNlIGNhc2UgSSBtZW50aW9uZWQgaXMgY29t cGxldGVseSBpbmRlcGVuZGVudCBvZiBJT01NVS4gSW4gS1ZNL1hFTi9ldGMuLiB0aGVyZSBpcyBh IGZ1bmN0aW9uYWxpdHkgY2FsbGVkIG5hdGl2ZSBjb250ZXh0LCBiYXNpY2FsbHkgd2hhdCB0aGlz IG1lYW5zIGlzIHRoYXQgaW5zdGVhZCBvZiBwYXNzaW5nIHRocm91Z2ggY29tcGxldGUgZGV2aWNl IGlzb2xhdGVkIGJ5IElPTU1VIG9ubHkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9uYWxpdGllcyBh cmUgZXhwb3NlZCB0byB0aGUgZ3Vlc3Qgb3BlcmF0aW5nIHN5c3RlbSB0aHJvdWdoIFFFTVUuDQoN ClNlZSBoZXJlIGZvciBhbiBleGFtcGxlIGhvdyBPcGVuR0wgaXMgaW1wbGVtZW50ZWQgb24gdG9w IG9mIHRoaXM6IA0KaHR0cHM6Ly9kb2NzLm1lc2EzZC5vcmcvZHJpdmVycy92aXJnbC5odG1sDQoN ClRoaXMgaXMgYWN0dWFsbHkgdXNpbmcgdGhlIHNlcGFyYXRpb24gYmV0d2VlbiBkZXZpY2UgbWVt b3J5IG1hbmFnZW1lbnQgYW5kIENQVSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgaXMgYmFzaWNhbGx5 IGEga2lsbGVyIGFyZ3VtZW50IHdoeSB0aG9zZSB0d28gdG9waWNzIHNob3VsZCBiZSBzZXBhcmF0 ZWQuIE90aGVyd2lzZSBpdCdzIGltcG9zc2libGUgZm9yIFFFTVUgdG8gYWN0dWFsbHkgaGFuZGxl IG11bHRpcGxlIGluZGVwZW5kZW50IGRldmljZSBtZW1vcnkgYWRkcmVzcyBzcGFjZXMgaW5zaWRl IGEgc2luZ2xlIENQVSBtZW1vcnkgYWRkcmVzcyBzcGFjZS4NCg0KPiAyLiAiVGhpcyBkb2VzIG5v dCBpbnRlZ3JhdGUgd2VsbCB3aXRoIHRoZSBmaWxlc3lzdGVtIGxheWVyIGluIExpbnV4Li4uIg0K PiBUbyBiZSBob25lc3QsIG5vdCB1c2luZyBhIGxvZ2ljYWwgcGFnZSB0YWJsZSBmb3IgYW5vbnlt b3VzIG1lbW9yeSBpcyB3aHkgTGludXggVEhQIGZhaWxzIGNvbXBhcmVkIHdpdGggRnJlZUJTRCdz IHN1cGVycGFnZSwgYnV0IEkgYW0gbm90IGdvaW5nIHRvIGVsYWJvcmF0ZSBpdCBoZXJlLiBCdXQg eWVzLCBhbmQgSSBhbSBsb29raW5nIGZvciBtZXJnaW5nIHN0cnVjdCB2bV9vYmplY3QtPmxvZ2lj YWxfcGFnZV90YWJsZSB3aXRoIHN0cnVjdCBhZGRyZXNzX3NwYWNlLT5pX3BhZ2VzLiBUaGlzIHdp bGwgbWFrZSBhIG5hdHVyYWwgc3VwcG9ydCBmb3IgZGV2aWNlcyBvdmVyc3Vic2NyaWJpbmcgYm90 aCBob3N0IERSQU0gYW5kIGRpc2tzLiBBcyBleHBsYWluZWQgaW4gbXkgY292ZXIgbGV0dGVyLCBz dHJ1Y3Qgdm1fb2JqZWN0IGJvcnJvd3MgRnJlZUJTRCdzIFZNIGRlc2lnbiAtLSBpdCBwcm92aWRl cyBhIHVuaWZpZWQgYWJzdHJhY3Rpb24gbGF5ZXIgZm9yIGFub255bW91cywgZmlsZS1iYWNrZWQg bWVtb3J5IGFuZCBldGMuDQoNCkknbSBub3QgdGhhdCBkZWVwIGludG8gdGhpcyBzdHVmZiwgc28g bGVhdmluZyB0aGlzIHRvIHRoZSBleHBlcnRzIG9uIEZyZWVCU0QuDQoNCj4gMy4gIlJlcXVpcmVt ZW50cyB0byBDUFUgYWRkcmVzcyBzcGFjZSBtYW5hZ2VtZW50IGFuZCBkZXZpY2UgYWRkcmVzcyBz cGFjZSBtYW5hZ2VtZW50IGFyZSBqdXN0IG1hc3NpdmVseSBkaWZmZXJlbnQuIEZvciBleGFtcGxl IGh1Z2UgYW5kIGdpYW50IHBhZ2VzIGFyZSBhIG11c3QgaGF2ZSBmb3IgbW9kZXJuIGRldmljZXMu Li4iDQo+IEkgdGhpbmsgeW91IGFyZSBhc2tpbmcgdHdvIHF1ZXN0aW9ucy4gRmlyc3QsIGlzIFZB IHNwYWNlIGEgcHJvYmxlbT8NCg0KTm8sIHRoaXMgaXMgYWJvdXQgc29tZXRoaW5nIGNvbXBsZXRl bHkgZGlmZmVyZW50Lg0KDQo+IEdNRU0gYXNzdW1lcyB0aGF0IGRldmljZSBWQSBzcGFjZSBzaG91 bGQgYmUgY292ZXJlZCBieSBDUFUgVkEgc3BhY2UgKHNvcnJ5IGkzODYpLCAuLi4NCltTTklQXQ0K DQpJJ20gcmVtb3ZpbmcgdGhpcyBiZWNhdXNlIHlvdSB3ZXJlIHRhbGtpbmcgYWJvdXQgc29tZXRo aW5nIGRpZmZlcmVudCB0aGFuIHdoYXQgSSBtZWFudC4NCg0KSSB3aWxsIHRyeSB0byBleHBsYWlu IHRoZSBiYWNrZ3JvdW5kIG9uIGFuIGV4YW1wbGUgb3V0c2lkZSBvZiBtYWNoaW5lIGxlYXJuaW5n IGFuZCBjb21wdXRlIHNpbmNlIHRoaXMgZnJhbWV3b3JrIHNob3VsZCBiZSBhcHBsaWNhYmxlIHRv IGV2ZXJ5IHVzZSBjYXNlIGFuZCBub3QgYmUgbGltaXRlZCB0byB0aG9zZS4gT3RoZXJ3aXNlIExp bnV4IHdvdWxkIHNvb25lciBvciBsYXRlciBqdXN0IGJlIGFwcGxpY2FibGUgdG8gb25seSB0aG9z ZSB1c2UgY2FzZXMuDQoNClNvIGxldCdzIHRha2UgYSBsb29rIGF0IGhvdyBtb2Rlcm4gZ2FtZXMg dXNlIGEgR1BVIGZvciBleGFtcGxlLiBPbiBzdGFydHVwIGEgcmF0aGVyIGxhcmdlIHBhcnQgb2Yg dGhlIEdQVSBhZGRyZXNzIHNwYWNlIGlzIGFsbG9jYXRlZCwgZm9yIGV4YW1wbGUgNjRHaUIuIFRo ZW4gdGhlIG5lY2Vzc2FyeSByZXNvdXJjZXMgKGltYWdlcywgdGV4dHVyZSwgdmVydGljZXMsIHNo YWRlcnMgZXRjLi4pIGFyZSBsb2FkZWQgaW50byBzZXBhcmF0ZSBidWZmZXIgb2JqZWN0cy4NCg0K VGhvc2UgcmVzb3VyY2VzIGFyZSB0aGVuIG1hcHBlZCBpbnRvIHRoZSBhbGxvY2F0ZWQgYWRkcmVz cyBvbiBhIHBhZ2UgYnkgcGFnZSBiYXNpcy4gU28geW91IGJhc2ljYWxseSBkb24ndCBoYXZlIGxh cmdlIFZNQXMgd2hpY2ggY292ZXIgb25lIHJlc291cmNlLCBidXQgcmF0aGVyIHRoZSBwYWdlIHRh YmxlcyBhcmUgdXNlZCBhcyBhIHJlbWFwcGluZyB0YWJsZQ0KIMKgaW50byB0aGUgYXZhaWxhYmxl IHJlc291cmNlcy4gVGhpcyBpbmNyZWFzZXMgdGhlIG51bWJlciBvZiB2aXJ0dWFsIG1hcHBpbmdz IGRyYXN0aWNhbGx5LCBpdCdzIGtpbmQgb2YgY29tcGFyYWJsZSBob3cgYW4gYW5vbl92bWEgd29y a3MgaW5zaWRlIGEgVk1BIG9uIExpbnV4Lg0KDQpUaG9zZSBtYXBwaW5ncyBhbHNvIGFyZSBub3Qg c2V0dXAgYXQgc3RhcnQgYW5kIHRoZW4gdXNlZCB0aHJvdWdob3V0IHRoZSB3aG9sZSBsaWZldGlt ZSBvZiB0aGUgcHJvY2VzcywgYnV0IHJhdGhlciBkb25lIHZlcnkgZHluYW1pY2FsbHkgc29tZXRp bWVzIHJlc3VsdGluZyBpbiB0aG91c2FuZHMgb2YgbWFwcGluZyBvcGVyYXRpb25zIHBlciBzZWNv bmQuDQoNCkFkZGl0aW9uYWwgdG8gdGhhdCBkZXZpY2VzIGhhdmUgcGFnZSB0YWJsZSBmZWF0dXJl IHdoaWNoIENQVXMgZG9uJ3QgaGF2ZS4gVGhpcyByYW5nZXMgZnJvbSBzdXBwb3J0IGZvciBwYXJ0 aWFsIHJlc2lkZW50IHRleHR1cmUgb3ZlciBmbGFncyBob3cgY2FjaGluZyBhbmQgZHluYW1pYyBj b2xvciBzcGFjZSBjb21wcmVzc2lvbiBpcyBtYWRlLg0KDQpTbyB0aGUgbWFwcGluZ3MgY29udGFp biB0b25zIG9mIGRldmljZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhbmQgaXQncyBtb3N0IGxpa2Vs eSBub3QgZXZlbiBwb3NzaWJsZSB0byBoYW5kbGUgYWxsIG9mIHRoaXMgd2l0aCBhIGRldmljZSBp bmRlcGVuZGVudCBtbWFwKCkgY2FsbC4NCg0KPiA0LiAiVGhlIGFyZ3VtZW50IHRoYXQgYSBzaGFy ZWQgbWVtb3J5IG1hbmFnZW1lbnQgbGVhZHMgdG8gbGVzcyBidWdzIGhhcyBhbHNvIGFic29sdXRl bHkgbm90IGJlIHByb3ZlbiB0cnVlLiBJbnN0ZWFkIHdlIGxpdGVyYWxseSBzcGVuZCBtb250aCBp ZiBub3QgeWVhcnMgaHVudGluZyBkb3duIGJ1Z3Mgd2hpY2ggcmVzdWx0ZWQgZnJvbSBpbnRlcmFj dGlvbiBiZXR3ZWVuIENQVSBhbmQgZGV2aWNlcy4iDQo+IFRoaXMgaXMgYW5vdGhlciBjYXNlIHN1 cHBvcnRpbmcgR01FTS4gRG9uJ3QgZGV2ZWxvcGVycyB3YW50IHRvIGxldCBHTUVNIGhhbmRsZSB0 aGUgQ1BVLWRldmljZSBpbnRlcmFjdGlvbiBzbyB0aGF0IHRoZXkgY2FuIHdhaXZlIG1vbnRocyBv ZiBkZWJ1Z2dpbmcgY29zdD8NCg0KTm8sIHdlIGFscmVhZHkgaGF2ZSBITU0gZm9yIHRoYXQuDQoN ClJlZ2FyZHMsDQpDaHJpc3RpYW4uDQoNCj4NCj4gUFMsIGhtYWR2aXNlKCkgaXMgYmFzZWQgb24g dGhlIGlkZWEgb2YgTnZpZGlhJ3MgY3VkYU1lbUFkdmlzZSgpIHdoaWNoIHByb3ZpZGVzIGFidW5k YW50IGFuZCB1c2VmdWwgbWVtb3J5IHBvbGljaWVzLiBITU0gZXh0ZW5kZWQgbWJpbmQoKSBpbnN0 ZWFkLg0KPg0KPiAtV2VpeGkNCj4NCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJv bTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPg0KPiBTZW50OiBX ZWRuZXNkYXksIE5vdmVtYmVyIDI5LCAyMDIzIDExOjIyIFBNDQo+IFRvOiB6aHV3ZWl4aSA8d2Vp eGkuemh1QGh1YXdlaS5jb20+OyBEYXZlIEFpcmxpZSA8YWlybGllZEBnbWFpbC5jb20+DQo+IENj OiBsaW51eC1tbUBrdmFjay5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IA0KPiBh a3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnOyB3ZWl4aS56aHVAb3BlbmV1bGVyLnNoOyBtZ29ybWFu QHN1c2UuZGU7IA0KPiBqZ2xpc3NlQHJlZGhhdC5jb207IHJjYW1wYmVsbEBudmlkaWEuY29tOyBq aHViYmFyZEBudmlkaWEuY29tOyANCj4gYXBvcHBsZUBudmlkaWEuY29tOyBtaGFpcmdyb3ZlQG52 aWRpYS5jb207IHppeUBudmlkaWEuY29tOyANCj4gYWxleGFuZGVyLmRldWNoZXJAYW1kLmNvbTsg WGluaHVpLlBhbkBhbWQuY29tOyANCj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IEZl bGl4Lkt1ZWhsaW5nQGFtZC5jb207IA0KPiBvZ2FiYmF5QGtlcm5lbC5vcmc7IGRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmc7IGpnZ0BudmlkaWEuY29tOyANCj4gbGVvbnJvQG52aWRpYS5j b207IHpoZW55dXdAbGludXguaW50ZWwuY29tOyB6aGkuYS53YW5nQGludGVsLmNvbTsgDQo+IGlu dGVsLWd2dC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBpbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnOyANCj4gamFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tOyBqb29uYXMubGFodGlu ZW5AbGludXguaW50ZWwuY29tOyANCj4gcm9kcmlnby52aXZpQGludGVsLmNvbTsgdHZydGtvLnVy c3VsaW5AbGludXguaW50ZWwuY29tDQo+IFN1YmplY3Q6IFJlOiBbUkZDIFBBVENIIDAvNl0gU3Vw cG9ydGluZyBHTUVNIChnZW5lcmFsaXplZCBtZW1vcnkgDQo+IG1hbmFnZW1lbnQpIGZvciBleHRl cm5hbCBtZW1vcnkgZGV2aWNlcw0KPg0KPiBBbSAyOS4xMS4yMyB1bSAwOToyNyBzY2hyaWViIHpo dXdlaXhpOg0KPj4gR2xhZCB0byBoZWFyIHRoYXQgbW9yZSBzaGFyYWJsZSBjb2RlIGlzIGRlc2ly YWJsZS4NCj4+IElNSE8sIGZvciBhIGNvbW1vbiBNTSBzdWJzeXN0ZW0sIGl0IGlzIG1vcmUgYmVu ZWZpY2lhbCBmb3IgR01FTSB0byANCj4+IGV4dGVuZCBjb3JlIE1NIGluc3RlYWQgb2YgYnVpbGRp bmcgYSBzZXBhcmF0ZSBvbmUuDQo+Pg0KPj4gQXMgc3RhdGVkIGluIHRoZSBiZWdpbm5pbmcgb2Yg bXkgUkZDIGxldHRlciwgTU0gc3lzdGVtcyBhcmUgbGFyZ2UgYW5kIA0KPj4gc2ltaWxhci4gRXZl biBhIHNvcGhpc3RpY2F0ZWQgb25lIGxpa2UgTGludXggTU0gdGhhdCBoYXMgZXZvbHZlZCBvdmVy IA0KPj4gZGVjYWRlcyBzdGlsbCBzdWZmZXJzIGZyb20gYW4gaW5jcmVhc2luZyBudW1iZXIgb2Yg YnVnc1sxXS4gU28sIA0KPj4gZGlyZWN0bHkgZXh0ZW5kaW5nIGNvcmUgTU0gdG8gc3VwcG9ydCBk ZXZpY2VzIG5vdCBvbmx5IGF2b2lkcyBvcGVuaW5nIA0KPj4gYSBuZXcgYm94IG9mIGJ1Z3MsIGJ1 dCBhbHNvIGFsbG93cyB0aGUgY29tbXVuaXR5IHRvIGNvbmNlbnRyYXRlIG9uIA0KPj4gbWFpbnRh aW5pbmcgb25lIHNpbmdsZSBNTSBzeXN0ZW0uIE9uIHRoZSBvdGhlciBzaWRlLCBHTUVNIGRvZXMg bm8gDQo+PiBodXJ0IHRvIGNvcmUgTU0gSWYgYSBDUFUgcHJvY2VzcyBpcyBub3QgYXR0YWNoZWQg d2l0aCBkZXZpY2UgY29udGV4dHMuDQo+Pg0KPj4gQENocmlzdGlhbiwgY291bGQgeW91IHByb3Zp ZGUgbW9yZSBpbmZvcm1hdGlvbiBvbiB3aGF0IEFNRCBwcm9wb3NlZCANCj4+IHdpdGggS0ZEIGFu ZCB3aHkgaXQgd2FzIHJlamVjdGVkPw0KPiBXZWxsLCB0aGlzIGlzIGdvaW5nIHRvIGJlIGEgbG9u Z2VyIGV4cGxhbmF0aW9uLg0KPg0KPiBUaGUgY29tYmluYXRpb24gb2YgS0ZEIGFuZCBITU0gaXMg YmFzZWQgb24gZXNzZW50aWFsbHkgb24gdGhlIHNhbWUgaWRlYSBhcyB0aGlzIGNvZGUgaGVyZS4g RXZlbiB0aGUgaW5pdGlhbCBLRkQgaW1wbGVtZW50YXRpb24gd2FzIHZlcnkgc2ltaWxhciBpbiB0 aGUgc2Vuc2UgdGhhdCBpdCBhZGRlZCBkZXZpY2UgY29udGV4dHMgdG8gbW1fc3RydWN0IGFuZCB0 cmllZCB0byBtYW5hZ2UgR1BVL2FjY2VsZXJhdGlvbiBNTSB0aGUgc2FtZSB3YXkgYXMgQ1BVIE1N LiBPbiBvdGhlciB3b3JkcyBpdCB3YXMgYmFzaWNhbGx5IGlkZW50aWNhbCB0byB5b3VyIGdtX2Rl dl9jcmVhdGUoKSBhbmQgZ21fbW11IGFwcHJvYWNoLg0KPg0KPiBBcyBtZW50aW9uZWQgYmVmb3Jl IHRoaXMgaW5pdGlhbCBwcm9wb3NhbCB3YXMgcmVqZWN0ZWQsIGZvciBtb3JlIGJhY2tncm91bmQg c2VlIHRoZSBkaXNjdXNzaW9uIGFyb3VuZCAiYW1ka2ZkOiBBZGQgYW1ka2ZkIHNrZWxldG9uIGRy aXZlciIgb24gdGhlIGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QgYmV0d2VlbiAyMDEzIGFuZCAyMDE0 LiBZb3UgbmVlZCB0byBkaWcgdXAgdGhlIHdob2xlIGRpc2N1c3Npb24gZnJvbSB0aGUgbWFpbGlu ZyBsaXN0LCBidXQgc3VtbWFyaXppbmcgaXQgdGhlIGdlbmVyYWwgZmVlbGluZyB3YXMgdGhhdCBp dCB3b3VsZCBiZSBhIG1pc3Rha2UgdG8gdGllIGRldmljZSBkcml2ZXJzIHRvIGNsb3NlIHRvIENQ VSBtZW1vcnkgbWFuYWdlbWVudCAoYW5kIHN0YWJsZSBVQVBJKSB3aXRob3V0IHZhbGlkYXRpbmcg dGhhdCB0aGlzIGlzIHJlYWxseSB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uDQo+DQo+IFNvIGluc3Rl YWQgb2YgdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIEtGRCBoYXMgZ29uZSB1cHN0cmVhbSB3 aXRoIGEgbXVjaCBsZXNzIGludmFzaXZlIGFwcHJvYWNoIHdoZXJlIGEgZGV2aWNlIGNvbnRleHRz IGFyZSBqdXN0IG9uIGRlbWFuZCBsb29rZWQgdXAgZm9yIGVhY2ggbW1fc3RydWN0LiBGZWxpeCBj YW4gcHJvYmFibHkgcHJvdmlkZSBzb21lIHBvaW50ZXJzIHRvIHRoZSBpbXBsZW1lbnRhdGlvbi4N Cj4NCj4gT24gdGhlIGluaXRpYWxseSBzdXBwb3J0ZWQgaGFyZHdhcmUgdGhlIEtGRCB1c2VkIHRo ZSBQQ0llIEFUQyBmZWF0dXJlIHRvIGFsbG93IHJvdXRpbmcgb2YgbWVtb3J5IGFjY2Vzc2VzIGRp cmVjdGx5IGludG8gdGhlIGFzc29jaWF0ZWQgQ1BVIHByb2Nlc3MgYWRkcmVzcyBzcGFjZSwgbGF0 ZXIgb24gd2Ugc3dpdGNoZWQgdG8gYW4gTU1VIG5vdGlmaWVyL0hNTSBiYXNlZCBhcHByb2FjaCB0 byBnaXZlIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSB0byB0aGUgdXNlcnNwYWNlIHN0YWNrIG9uIHRv cCBvZiBpdCBmb3IgZGV2aWNlcyB3aGljaCBkb2Vzbid0IHN1cHBvcnQgdGhlIEFUQyBwYXRoIHdh cyBqdXN0IHJlY2VudGx5IGNvbXBsZXRlbHkgcmVtb3ZlZCBhbmQgd2UgYXJlIG5vdyBvbmx5IHVz aW5nIE1NVSBub3RpZmllcnMvSE1NLg0KPg0KPiBITU0gdHJpZWQgdG8gYWRkIHNpbWlsYXIgZnVu Y3Rpb25hbGl0eSBsaWtlIHlvdSBwcm9wb3NlIHdpdGggdGhlIG1tYXAoKSBmbGFnIGFuZCBobWFk dmlzZSgpIGNhbGwuIFRoZSBobWFkdmlzZSgpIGV4dGVuc2lvbiBhY3R1YWxseSBsb29rcyBzbyBm YW1pbGlhciB0byB0aGUgSE1NIHByb3Bvc2FsIHRoYXQgSSB3b3VsZCBleHBlY3QgdGhhdCB0aGlz IGlzIGFjdHVhbGx5IGJhc2VkIG9uIHRoYXQgY29kZS4NCj4NCj4gQWxsIHRoaXMgdHVybmVkIG91 dCB0byBoYXZlIHNvbWUgbWFqb3IgZGVzaWduIGlzc3Vlcy4NCj4NCj4gRmlyc3Qgb2YgYWxsIHlv dSBoYXZlIGEgcmF0aGVyIGxhcmdlIGdyb3VwIG9mIHVzZSBjYXNlcyB3aGVyZSB5b3UgZG9uJ3Qg d2FudCB5b3VyIGRldmljZSB0byBtaXJyb3IgdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgeW91ciBwcm9j ZXNzLiBKdXN0IHRoaW5rIG9mIHRoaW5rcyBsaWtlIFFFTVUsIEtWTSwgWEVOLCBpbiBnZW5lcmFs IHZpcnR1YWxpemF0aW9uIGFuZCBjb250YWluZXIgaGFuZGxpbmcuIExpbnV4IGhhcyB0aGUgbWFu dHJhIHRoYXQgZXZlcnl0aGluZyBpcyBhIGZpbGUgYW5kIGlmIGl0J3Mgbm90IGEgZmlsZSBpdCBz aG91bGQgYmUgYSBmaWxlIGFuZCB3aGVuIHlvdSB0aWUgZGV2aWNlIG1lbW9yeSBtYW5hZ2VtZW50 IGludG8gQ1BVIG1lbW9yeSBtYW5hZ2VtZW50IHlvdSBhcmUgcHJldHR5IG11Y2ggdmlvbGF0aW5n IGV4YWN0bHkgdGhhdC4NCj4NCj4gU2Vjb25kIHRoaXMgZG9lc24ndCBpbnRlZ3JhdGUgd2VsbCB3 aXRoIHRoZSBmaWxlc3lzdGVtIGxheWVyIGluIExpbnV4Lg0KPiBGb3IgZXhhbXBsZSB3ZSBkbyBo YXZlIHN0cnVjdCBwYWdlcyBmb3IgSE1NIGV4cG9zZWQgZGV2aWNlIG1lbW9yeSwgYnV0IA0KPiBm b3IgSS9PIHdlIHN0aWxsIG1pZ3JhdGUgdGhpcyBiYWNrIHRvIHN5c3RlbSBtZW1vcnkgYmVjYXVz ZSBvZiAoZm9yDQo+IGV4YW1wbGUpIHRoZSBwYWdlIGxvY2sgcmVxdWlyZW1lbnRzIGFyb3VuZCB3 cml0ZWJhY2suDQo+DQo+IFRoZW4gdGhpcmQgaXQgdHVybmVkIG91dCB0aGF0IHRoZSByZXF1aXJl bWVudHMgdG8gQ1BVIGFkZHJlc3Mgc3BhY2UgbWFuYWdlbWVudCBhbmQgZGV2aWNlIGFkZHJlc3Mg c3BhY2UgbWFuYWdlbWVudCBhcmUganVzdCBtYXNzaXZlbHkgZGlmZmVyZW50LiBGb3IgZXhhbXBs ZSBodWdlIGFuZCBnaWFudCBwYWdlcyBhcmUgYSBtdXN0IGhhdmUgZm9yIG1vZGVybiBkZXZpY2Vz LCBvbiB0aGUgQ1BVIHNpZGUgd2UgYXJlIGJhcmVseSBzd2l0Y2hpbmcgb3ZlciB0byBmb2xpb3Mg bm93IHRvIGFkZCBzaW1pbGFyIGZ1bmN0aW9uYWxpdHkuDQo+DQo+IFRoZSBhcmd1bWVudCB0aGF0 IGEgc2hhcmVkIG1lbW9yeSBtYW5hZ2VtZW50IGxlYWRzIHRvIGxlc3MgYnVncyBoYXMgYWxzbyBh YnNvbHV0ZWx5IG5vdCBiZSBwcm92ZW4gdHJ1ZS4gSW5zdGVhZCB3ZSBsaXRlcmFsbHkgc3BlbmQg bW9udGggaWYgbm90IHllYXJzIGh1bnRpbmcgZG93biBidWdzIHdoaWNoIHJlc3VsdGVkIGZyb20g aW50ZXJhY3Rpb24gYmV0d2VlbiBDUFUgYW5kIGRldmljZXMuDQo+IC4uLg0KPg0KPiBUaGVyZSBh cmUgYSBjb3VwbGUgb2YgbW9yZSB0aGluZ3Mgb24gdGhpcyBjb250cmEgc2lkZSB0byB0aGF0IGFw cHJvYWNoLCBidXQgSSB0aGluayB0aGF0IHdvdWxkIGp1c3QgbWFrZSB0aGlzIG1haWwgdW5uZWNl c3NhcnkgbG9uZy4NCj4NCj4gVG8gc3VtIGl0IHVwIGZyb20gb3ZlciBhIGRlY2FkZSBvZiBleHBl cmllbmNlIHdvcmtpbmcgaW4gdGhpcyBhcmVhIEkgY2FuIGp1c3Qgc2F5IHRoYXQgQ1BVIGFuZCBk ZXZpY2UgbWVtb3J5IG1hbmFnZW1lbnQgc2hvdWxkIGFic29sdXRlbHkgKk5PVCogYmUgbWl4ZWQu IFdlIGhhZCB0aG9zZSBpZGVhcyBtdWx0aXBsZSB0aW1lcyBiZWZvcmUsIGJ1dCB0aGV5IGVpdGhl ciBmYWlsZWQgYmVjYXVzZSB0aGV5IGRpZG4ndCBpbnRlZ3JhdGVkIHdlbGwgd2l0aCB0aGUgY29y ZSBPUyBvciB0aGUgaGFyZHdhcmUgc3VwcG9ydCBpcyBqdXN0IGxhZ2dpbmcgYmVoaW5kIHRoZSBh Y3R1YWwgcmVxdWlyZW1lbnRzLg0KPg0KPiBXaGF0IGNhbiBiZSBkb25lIGFuZCB3aGVyZSBJIGNv bXBsZXRlbHkgYWdyZWUgd2l0aCBEYXZlIGlzIHRoYXQgaGF2aW5nIGNvbW1vbiBjb21wb25lbnRz IHdoaWNoIHByb3ZpZGVzIGRldmljZSBkcml2ZXJzIHdpdGggdGhlIG5lY2Vzc2FyeSBmdW5jdGlv bmFsaXR5IHRvIG1hbmFnZSB0aGVpciBkZXZpY2UgYWRkcmVzcyBzcGFjZSBpcyByZWFsbHkgZ29v ZCBpZGVhLg0KPiBEYW5pbG8gaXMgZm9yIGV4YW1wbGUgd29ya2luZyBvbiBhIEdQVVZNIGNvbXBv bmVudCB0byBoYXZlIGNvbW1vbiB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UgbWFuYWdlbWVudCBhbmQg SSdtIGF0IGxlYXN0IHNvbWV0aW1lcyB3b3JraW5nIG9uIE1NVSBub3RpZmllci9ITU0gaW1wcm92 ZW1lbnRzLg0KPg0KPiBQcm92aWRpbmcgU1ZNIGZ1bmN0aW9uYWxpdHkgdG8geW91ciB1c2Vyc3Bh Y2Ugc3RhY2sgaXMgc3RpbGwgYSByZWFsbHkgZ29vZCBpZGVhLCBidXQgaXQgc2hvdWxkIGJlIGRv bmUgd2l0aCBNTVUgbm90aWZpZXJzIGFuZCBjb21wb25lbnRzIHdoaWNoIGFyZSBzZXBhcmF0ZSB0 byB5b3VyIENQVSBtZW1vcnkgbWFuYWdlbWVudCBpbnN0ZWFkIG9mIHR5aW5nIGl0IGRpcmVjdGx5 IHRvIHRoZSBDUFUgYWRkcmVzcyBzcGFjZS4NCj4NCj4gUmVnYXJkcywNCj4gQ2hyaXN0aWFuLg0K Pg0KPj4gWzFdIEh1YW5nLCBKaWFuLCBNb2ludWRkaW4gSy4gUXVyZXNoaSwgYW5kIEthcnN0ZW4g U2Nod2FuLiAiQW4gZXZvbHV0aW9uYXJ5IHN0dWR5IG9mIGxpbnV4IG1lbW9yeSBtYW5hZ2VtZW50 IGZvciBmdW4gYW5kIHByb2ZpdC4iIDIwMTYgVVNFTklYIEFubnVhbCBUZWNobmljYWwgQ29uZmVy ZW5jZSAoVVNFTklYIEFUQyAxNikuIDIwMTYuDQo+Pg0KPj4gVGhhbmtzLA0KPj4gV2VpeGkNCj4+ DQo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4gRnJvbTogRGF2ZSBBaXJsaWUgPGFp cmxpZWRAZ21haWwuY29tPg0KPj4gU2VudDogV2VkbmVzZGF5LCBOb3ZlbWJlciAyOSwgMjAyMyAx OjE1IFBNDQo+PiBUbzogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29t Pg0KPj4gQ2M6IHpodXdlaXhpIDx3ZWl4aS56aHVAaHVhd2VpLmNvbT47IGxpbnV4LW1tQGt2YWNr Lm9yZzsgDQo+PiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBha3BtQGxpbnV4LWZvdW5k YXRpb24ub3JnOyANCj4+IHdlaXhpLnpodUBvcGVuZXVsZXIuc2g7IG1nb3JtYW5Ac3VzZS5kZTsg amdsaXNzZUByZWRoYXQuY29tOyANCj4+IHJjYW1wYmVsbEBudmlkaWEuY29tOyBqaHViYmFyZEBu dmlkaWEuY29tOyBhcG9wcGxlQG52aWRpYS5jb207IA0KPj4gbWhhaXJncm92ZUBudmlkaWEuY29t OyB6aXlAbnZpZGlhLmNvbTsgYWxleGFuZGVyLmRldWNoZXJAYW1kLmNvbTsgDQo+PiBYaW5odWku UGFuQGFtZC5jb207IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyANCj4+IEZlbGl4Lkt1 ZWhsaW5nQGFtZC5jb207IG9nYWJiYXlAa2VybmVsLm9yZzsgDQo+PiBkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnOyBqZ2dAbnZpZGlhLmNvbTsgbGVvbnJvQG52aWRpYS5jb207IA0KPj4g emhlbnl1d0BsaW51eC5pbnRlbC5jb207IHpoaS5hLndhbmdAaW50ZWwuY29tOyANCj4+IGludGVs LWd2dC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnOyANCj4+IGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbTsgam9vbmFzLmxhaHRpbmVu QGxpbnV4LmludGVsLmNvbTsgDQo+PiByb2RyaWdvLnZpdmlAaW50ZWwuY29tOyB0dnJ0a28udXJz dWxpbkBsaW51eC5pbnRlbC5jb20NCj4+IFN1YmplY3Q6IFJlOiBbUkZDIFBBVENIIDAvNl0gU3Vw cG9ydGluZyBHTUVNIChnZW5lcmFsaXplZCBtZW1vcnkNCj4+IG1hbmFnZW1lbnQpIGZvciBleHRl cm5hbCBtZW1vcnkgZGV2aWNlcw0KPj4NCj4+IE9uIFR1ZSwgMjggTm92IDIwMjMgYXQgMjM6MDcs IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4gd3JvdGU6DQo+Pj4g QW0gMjguMTEuMjMgdW0gMTM6NTAgc2NocmllYiBXZWl4aSBaaHU6DQo+Pj4+IFRoZSBwcm9ibGVt Og0KPj4+Pg0KPj4+PiBBY2NlbGVyYXRvciBkcml2ZXIgZGV2ZWxvcGVycyBhcmUgZm9yY2VkIHRv IHJlaW52ZW50IGV4dGVybmFsIE1NIA0KPj4+PiBzdWJzeXN0ZW1zIGNhc2UgYnkgY2FzZSwgYmVj YXVzZSBMaW51eCBjb3JlIE1NIG9ubHkgY29uc2lkZXJzIGhvc3QgbWVtb3J5IHJlc291cmNlcy4N Cj4+Pj4gVGhlc2UgcmVpbnZlbnRlZCBNTSBzdWJzeXN0ZW1zIGhhdmUgc2ltaWxhciBvcmRlcnMg b2YgbWFnbml0dWRlIG9mIA0KPj4+PiBMb0MgYXMgTGludXggTU0gKDgwSyksIGUuZy4gTnZpZGlh LVVWTSBoYXMgNzBLLCBBTUQgR1BVIGhhcyAxNEsgYW5kIA0KPj4+PiBIdWF3ZWkgTlBVIGhhcyAz MEsuIE1lYW53aGlsZSwgbW9yZSBhbmQgbW9yZSB2ZW5kb3JzIGFyZSANCj4+Pj4gaW1wbGVtZW50 aW5nIHRoZWlyIG93biBhY2NlbGVyYXRvcnMsIGUuZy4gTWljcm9zb2Z0J3MgTWFpYSAxMDAuIEF0 IA0KPj4+PiB0aGUgc2FtZSB0aW1lLCBhcHBsaWNhdGlvbi1sZXZlbCBkZXZlbG9wZXJzIHN1ZmZl ciBmcm9tIHBvb3IgDQo+Pj4+IHByb2dyYW1tYWJpbGl0eSAtLSB0aGV5IG11c3QgY29uc2lkZXIg cGFyYWxsZWwgYWRkcmVzcyBzcGFjZXMgYW5kIA0KPj4+PiBiZSBjYXJlZnVsIGFib3V0IHRoZSBs aW1pdGVkIGRldmljZSBEUkFNIGNhcGFjaXR5LiBUaGlzIGNhbiBiZSANCj4+Pj4gYWxsZXZpYXRl ZCBpZiBhIG1hbGxvYygpLWVkIHZpcnR1YWwgYWRkcmVzcyBjYW4gYmUgc2hhcmVkIGJ5IHRoZSAN Cj4+Pj4gYWNjZWxlcmF0b3IsIG9yIHRoZSBhYnVuZGFudCBob3N0IERSQU0gY2FuIGZ1cnRoZXIg dHJhbnNwYXJlbnRseSBiYWNrdXAgdGhlIGRldmljZSBsb2NhbCBtZW1vcnkuDQo+Pj4+DQo+Pj4+ IFRoZXNlIGV4dGVybmFsIE1NIHN5c3RlbXMgc2hhcmUgc2ltaWxhciBtZWNoYW5pc21zIGV4Y2Vw dCBmb3IgdGhlIA0KPj4+PiBoYXJkd2FyZS1kZXBlbmRlbnQgcGFydCwgc28gcmVpbnZlbnRpbmcg dGhlbSBpcyBlZmZlY3RpdmVseSANCj4+Pj4gaW50cm9kdWNpbmcgcmVkdW5kYW50IGNvZGUgKDE0 S343MEsgZm9yIGVhY2ggY2FzZSkuIFN1Y2ggDQo+Pj4+IGRldmVsb3BpbmcvbWFpbnRhaW5pbmcg aXMgbm90IGNoZWFwLiBGdXJ0aGVybW9yZSwgdG8gc2hhcmUgYSANCj4+Pj4gbWFsbG9jKCktZWQg dmlydHVhbCBhZGRyZXNzLCBkZXZpY2UgZHJpdmVycyBuZWVkIHRvIGRlZXBseSBpbnRlcmFjdCAN Cj4+Pj4gd2l0aCBMaW51eCBNTSB2aWEgbG93LWxldmVsIE1NIEFQSXMsIGUuZy4gTU1VIG5vdGlm aWVycy9ITU0uIFRoaXMgDQo+Pj4+IHJhaXNlcyB0aGUgYmFyIGZvciBkcml2ZXIgZGV2ZWxvcG1l bnQsIHNpbmNlIGRldmVsb3BlcnMgbXVzdCANCj4+Pj4gdW5kZXJzdGFuZCBob3cgTGludXggTU0g d29ya3MuIEZ1cnRoZXIsIGl0IGNyZWF0ZXMgY29kZSBtYWludGVuYW5jZSANCj4+Pj4gcHJvYmxl bXMgLS0gYW55IGNoYW5nZXMgdG8gTGludXggTU0gcG90ZW50aWFsbHkgcmVxdWlyZSBjb29yZGlu YXRlZCBjaGFuZ2VzIHRvIGFjY2VsZXJhdG9yIGRyaXZlcnMgdXNpbmcgbG93LWxldmVsIE1NIEFQ SXMuDQo+Pj4+DQo+Pj4+IFB1dHRpbmcgYSBjYWNoZS1jb2hlcmVudCBidXMgYmV0d2VlbiBob3N0 IGFuZCBkZXZpY2Ugd2lsbCBub3QgbWFrZSANCj4+Pj4gdGhlc2UgZXh0ZXJuYWwgTU0gc3Vic3lz dGVtcyBkaXNhcHBlYXIuIEZvciBleGFtcGxlLCBhIA0KPj4+PiB0aHJvdWdocHV0LW9yaWVudGVk IGFjY2VsZXJhdG9yIHdpbGwgbm90IHRvbGVyYXRlIGV4ZWN1dGluZyBoZWF2eSANCj4+Pj4gbWVt b3J5IGFjY2VzcyB3b3JrbG9hZCB3aXRoIGEgaG9zdCBNTVUvSU9NTVUgdmlhIGEgcmVtb3RlIGJ1 cy4NCj4+Pj4gVGhlcmVmb3JlLCBkZXZpY2VzIHdpbGwgc3RpbGwgaGF2ZSB0aGVpciBvd24gTU1V IGFuZCBwaWNrIGEgc2ltcGxlciANCj4+Pj4gcGFnZSB0YWJsZSBmb3JtYXQgZm9yIGxvd2VyIGFk ZHJlc3MgdHJhbnNsYXRpb24gb3ZlcmhlYWQsIHJlcXVpcmluZyBleHRlcm5hbCBNTSBzdWJzeXN0 ZW1zLg0KPj4+Pg0KPj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4+Pg0KPj4+PiBXaGF0IEdN RU0gKEdlbmVyYWxpemVkIE1lbW9yeSBNYW5hZ2VtZW50IFsxXSkgZG9lczoNCj4+Pj4NCj4+Pj4g R01FTSBleHRlbmRzIExpbnV4IE1NIHRvIHNoYXJlIGl0cyBtYWNoaW5lLWluZGVwZW5kZW50IE1N IGNvZGUuIA0KPj4+PiBPbmx5IGhpZ2gtbGV2ZWwgaW50ZXJmYWNlIGlzIHByb3ZpZGVkIGZvciBk ZXZpY2UgZHJpdmVycy4gVGhpcyANCj4+Pj4gcHJldmVudHMgYWNjZWxlcmF0b3IgZHJpdmVycyBm cm9tIHJlaW52ZW50aW5nIHRoZSB3aGVlbCwgYnV0IHJlbGllcyANCj4+Pj4gb24gZHJpdmVycyB0 byBpbXBsZW1lbnQgdGhlaXIgaGFyZHdhcmUtZGVwZW5kZW50IGZ1bmN0aW9ucyBkZWNsYXJlZCAN Cj4+Pj4gYnkgR01FTS4gR01FTSdzIGtleSBpbnRlcmZhY2UgaW5jbHVkZSBnbV9kZXZfY3JlYXRl KCksIA0KPj4+PiBnbV9hc19jcmVhdGUoKSwNCj4+Pj4gZ21fYXNfYXR0YWNoKCkgYW5kIGdtX2Rl dl9yZWdpc3Rlcl9waHlzbWVtKCkuIEhlcmUgYnJpZWZseSBkZXNjcmliZSANCj4+Pj4gaG93IGEg ZGV2aWNlIGRyaXZlciB1dGlsaXplcyB0aGVtOg0KPj4+PiAxLiBBdCBib290IHRpbWUsIGNhbGwg Z21fZGV2X2NyZWF0ZSgpIGFuZCByZWdpc3RlcnMgdGhlIGltcGxlbWVudGF0aW9uIG9mDQo+Pj4+ ICAgICAgIGhhcmR3YXJlLWRlcGVuZGVudCBmdW5jdGlvbnMgYXMgZGVjbGFyZWQgaW4gc3RydWN0 IGdtX21tdS4NCj4+Pj4gICAgICAgICAtIElmIHRoZSBkZXZpY2UgaGFzIGxvY2FsIERSQU0sIGNh bGwgZ21fZGV2X3JlZ2lzdGVyX3BoeXNtZW0oKSB0bw0KPj4+PiAgICAgICAgICAgcmVnaXN0ZXIg YXZhaWxhYmxlIHBoeXNpY2FsIGFkZHJlc3Nlcy4NCj4+Pj4gMi4gV2hlbiBhIGRldmljZSBjb250 ZXh0IGlzIGluaXRpYWxpemVkIChlLmcuIHRyaWdnZXJlZCBieSBpb2N0bCksIGNoZWNrIGlmDQo+ Pj4+ICAgICAgIHRoZSBjdXJyZW50IENQVSBwcm9jZXNzIGhhcyBiZWVuIGF0dGFjaGVkIHRvIGEg Z21lbSBhZGRyZXNzIHNwYWNlDQo+Pj4+ICAgICAgIChzdHJ1Y3QgZ21fYXMpLiBJZiBub3QsIGNh bGwgZ21fYXNfY3JlYXRlKCkgYW5kIHBvaW50IGN1cnJlbnQtPm1tLT5nbV9hcw0KPj4+PiAgICAg ICB0byBpdC4NCj4+Pj4gMy4gQ2FsbCBnbV9hc19hdHRhY2goKSB0byBhdHRhY2ggdGhlIGRldmlj ZSBjb250ZXh0IHRvIGEgZ21lbSBhZGRyZXNzIHNwYWNlLg0KPj4+PiA0LiBJbnZva2UgZ21fZGV2 X2ZhdWx0KCkgdG8gcmVzb2x2ZSBhIHBhZ2UgZmF1bHQgb3IgcHJlcGFyZSBkYXRhIGJlZm9yZQ0K Pj4+PiAgICAgICBkZXZpY2UgY29tcHV0YXRpb24gaGFwcGVucy4NCj4+Pj4NCj4+Pj4gR01FTSBo YXMgY2hhbmdlZCB0aGUgZm9sbG93aW5nIGFzc3VtcHRpb25zIGluIExpbnV4IE1NOg0KPj4+PiAg ICAgIDEuIEFuIG1tX3N0cnVjdCBub3Qgb25seSBoYW5kbGUgYSBzaW5nbGUgQ1BVIGNvbnRleHQs IGJ1dCBtYXkgYWxzbyBoYW5kbGUNCj4+Pj4gICAgICAgICBleHRlcm5hbCBtZW1vcnkgY29udGV4 dHMgZW5jYXBzdWxhdGVkIGFzIGdtX2NvbnRleHQgbGlzdGVkIGluDQo+Pj4+ICAgICAgICAgbW0t PmdtX2FzLiBBbiBleHRlcm5hbCBtZW1vcnkgY29udGV4dCBjYW4gaW5jbHVkZSBhIGZldyBvciBh bGwgb2YgdGhlDQo+Pj4+ICAgICAgICAgZm9sbG93aW5nIHBhcnRzOiBhbiBleHRlcm5hbCBNTVUg KHRoYXQgcmVxdWlyZXMgVExCIGludmFsaWRhdGlvbiksIGFuDQo+Pj4+ICAgICAgICAgZXh0ZXJu YWwgcGFnZSB0YWJsZSAodGhhdCByZXF1aXJlcyBQVEUgbWFuaXB1bGF0aW9uKSBhbmQgZXh0ZXJu YWwgRFJBTQ0KPj4+PiAgICAgICAgICh0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIG1lbW9yeSBtYW5h Z2VtZW50KS4NCj4+PiBXZWxsIHRoYXQgaXMgcHJldHR5IG11Y2ggZXhhY3RseSB3aGF0IEFNRCBo YXMgYWxyZWFkeSBwcm9wb3NlZCB3aXRoIA0KPj4+IEtGRCBhbmQgd2FzIHJlamVjdGVkIGZvciBy YXRoZXIgZ29vZCByZWFzb25zLg0KPj4+PiBNTVUgZnVuY3Rpb25zDQo+Pj4+IFRoZSBNTVUgZnVu Y3Rpb25zIHBlZXJfbWFwKCkgYW5kIHBlZXJfdW5tYXAoKSBvdmVybGFwIG90aGVyIA0KPj4+PiBm dW5jdGlvbnMsIGxlYXZpbmcgYSBxdWVzdGlvbiBpZiB0aGUgTU1VIGZ1bmN0aW9ucyBzaG91bGQg YmUgDQo+Pj4+IGRlY291cGxlZCBhcyBtb3JlIGJhc2ljIG9wZXJhdGlvbnMuIERlY291cGxpbmcg dGhlbSBjb3VsZCANCj4+Pj4gcG90ZW50aWFsbHkgcHJldmVudCBkZXZpY2UgZHJpdmVycyBjb2Fs ZXNjaW5nIHRoZXNlIGJhc2ljIHN0ZXBzIA0KPj4+PiB3aXRoaW4gYSBzaW5nbGUgaG9zdC1kZXZp Y2UgY29tbXVuaWNhdGlvbiBvcGVyYXRpb24sIHdoaWxlIGNvdXBsaW5nIA0KPj4+PiB0aGVtIG1h a2VzIGl0IG1vcmUgZGlmZmljdWx0IGZvciBkZXZpY2UgZHJpdmVycyB0byB1dGlsaXplIEdNRU0g aW50ZXJmYWNlLg0KPj4+IFdlbGwgdG8gYmUgaG9uZXN0IGFsbCBvZiB0aGlzIHNvdW5kcyBsaWtl IGhpc3RvcnkgdG8gbWUuIFdlIGhhdmUgDQo+Pj4gYWxyZWFkeSBzZWVuIHRoZSBzYW1lIGJhc2lj IGFwcHJvYWNoIGluIEtGRCwgSE1NIGFuZCB0byBzb21lIGV4dGVuZCBpbiBUVE0gYXMgd2VsbC4N Cj4+Pg0KPj4+IEFuZCBhbGwgb2YgdGhlbSBtb3JlIG9yIGxlc3MgZmFpbGVkLiBXaHkgc2hvdWxk IHRoaXMgaGVyZSBiZSBkaWZmZXJlbnQ/DQo+PiBBbnkgaW5mbyB3ZSBoYXZlIG9uIHdoeSB0aGlz IGhhcyBmYWlsZWQgdG8gd29yayBpbiB0aGUgcGFzdCB3b3VsZCBiZSANCj4+IHVzZWZ1bCB0byBw cm92aWRlLiBUaGlzIGlzIG9uZSBvZiB0aG9zZSBjYXNlcyB3aGVyZSB3ZSBtYXkgbm90IGhhdmUg DQo+PiBkb2N1bWVudGVkIHRoZSBiYWQgaWRlYXMgdG8gc3RvcCBmdXR1cmUgZGV2ZWxvcGVycyBm cm9tIHRoaW5raW5nIHRoZXkgDQo+PiBhcmUgYmFkLg0KPj4NCj4+IEkgZG8gdGhpbmsgd2Ugd291 bGQgd2FudCBtb3JlIGNvbW1vbiBjb2RlIGluIHRoaXMgYXJlYSwgYnV0IEkgd291bGQgDQo+PiB0 aGluayB3ZSdkIGhhdmUgaXQgbW9yZSBvbiB0aGUgZHJpdmVyIGluZnJhc3RydWN0dXJlIHNpZGUs IHRoYW4gaW4gDQo+PiB0aGUgY29yZSBtbS4NCj4+DQo+PiBEYXZlLg0KDQo=