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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E8F6BC433F5 for ; Wed, 4 May 2022 08:40:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240868AbiEDIoY (ORCPT ); Wed, 4 May 2022 04:44:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41802 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346551AbiEDIoG (ORCPT ); Wed, 4 May 2022 04:44:06 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3304717E35; Wed, 4 May 2022 01:40:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1651653631; x=1683189631; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=qziebw3aMQVUJCxDi09wZhHU5h5/+qZQE5XAwXHwOWY=; b=UWerm8Q17+oxbQdp5xxHYkSw7s2LPqu+zRiYMEapYm9BVo5g1+4B8ZeO gOa+9+qxyu/nrRsriZfeauGYmfpsyFSswRTbYUYe2IcpDdpSGzz3ybiZV hM2lRP+mQAlIGnNPbpd4RdeFRQgGApnrQIAWt1E+sd4B9sSxrPvhWE4aR 0CPHway6C3B51UKHkor4A+TITZCv1HiIWF63IyUuC/WCnR/FjiKsRUxIv OponH04cq1P2R+lLCQNx2QhpdZeT9XJ7vAVsmKEZ0RU2FB2mQMGtM4Nsb oyXo53c9nRB3p/9m218faTo6DXX1OLY80IS6i7I+LN/QwB4JeOLRtiam2 A==; X-IronPort-AV: E=Sophos;i="5.91,197,1647327600"; d="scan'208";a="162269399" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa5.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 04 May 2022 01:40:30 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.87.72) by chn-vm-ex02.mchp-main.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Wed, 4 May 2022 01:40:28 -0700 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17 via Frontend Transport; Wed, 4 May 2022 01:40:28 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a+mUVPvAbs8m2PG4Mq3jFlqYUk6PRmw9rQVjwYaadG2WutouRYdI5KE4MUtJLCkTTO3pyO9RgOPJv/ewUivoDLxvGXSzscAJxoE6xIaNPTJdhgqFh4TGW4UNti/en9HGgNJkdpwmvWP6gjMOmdBoKmdNV5ibwrFM020X3Ff3Cfvj6N4R04tFe70sQl+Iu6JOlKqExVYYM8Qh2JzlrNPInxuRCVs7xnEtCJuyqxY2ABzsPwVORxIZ0asXnoolRgAuhnjWnlqX/DcahuUS4+7cM94sbHK4f7xiic/3NSBZFC9wlcC1FJ1PQ5CAHH7N0YlT5JHwF6uksItH4A75xf+s1Q== 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=qziebw3aMQVUJCxDi09wZhHU5h5/+qZQE5XAwXHwOWY=; b=EZH/HdE2GUTjKVZuBKYvO9J9IIimonBSI2a0/4w+3NVVGMAtglkrI5m00VgMLwwuksmOW40O2XHpDBF/NvfdSo7FVzbmDwoFtp4eJo1yJ7CMoMA7DPx5T7URMRY0q6SrmvO+mJv6uIGAdjIH8/EdXQqVE6CJFL0R39SoBc1scmao+7g0Nsgd7FJq2LapFWqvxQBNB+2KXAR5HYdFeK8J97sHwWgeIkj7pbGY3MN3+Lq1PUzWUg3gSEjOwSi3KYl4byOrp8CHid1EFuYNNCAi5VsSXszik0qxgzMueq9clpHTP1e6jZNN7BPUc6YpDIoDZnCu1FTiIKFW/FKBTLDYqg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qziebw3aMQVUJCxDi09wZhHU5h5/+qZQE5XAwXHwOWY=; b=FuZQ5RZBl+t34AqBjGD3wb1BLVn7YufAbUgik6nOvTBCGkrdL2P+0J8EQ6Fev3boJrtfelpWcEgGuUzgzf1c6ak+bqdllO/flWPlPcrwlsKh9gA/ylknlfatKDVe5kzO9mfBbt9etAwanCx3pS1wxkDBEGUVKsBLccJzwXq0yjc= Received: from CO1PR11MB5154.namprd11.prod.outlook.com (2603:10b6:303:95::7) by MWHPR11MB0016.namprd11.prod.outlook.com (2603:10b6:301:63::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.24; Wed, 4 May 2022 08:40:16 +0000 Received: from CO1PR11MB5154.namprd11.prod.outlook.com ([fe80::fcd4:8f8a:f0e9:8b18]) by CO1PR11MB5154.namprd11.prod.outlook.com ([fe80::fcd4:8f8a:f0e9:8b18%9]) with mapi id 15.20.5206.025; Wed, 4 May 2022 08:40:16 +0000 From: To: , CC: , , , , Subject: Re: [PATCH v2] i2c: add support for microchip fpga i2c controllers Thread-Topic: [PATCH v2] i2c: add support for microchip fpga i2c controllers Thread-Index: AQHYPSMB0fElgzWzO0GEtW3rBppjp60OqsoA Date: Wed, 4 May 2022 08:40:16 +0000 Message-ID: References: <20220321125855.3227057-1-conor.dooley@microchip.com> In-Reply-To: <20220321125855.3227057-1-conor.dooley@microchip.com> Accept-Language: en-IE, en-US Content-Language: en-IE X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ee6e99c7-11a6-4311-3c8a-08da2da9b6e1 x-ms-traffictypediagnostic: MWHPR11MB0016:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: HGBG1eNH+Tq/im2BqxwcomSUE+hACMpZiDxR4L6eMP6kF9JKzBW9DOSmez8VmYPTpILHhbOmNgqSynWkce525HXPYgC/abcoIQFEgilYuTPkSOFfsXq4ZZ87yhrfA+O/QqxNu16IGuDWVZgI1NGqX5m6vwNNdrMmeDWsjUe/6rMo7/GQ6Mj7wbiBjj+jdGW4Gh6FWFeYK3/7cjxk4ltzyzP5dE/ezhgpFjr9Ossyzmy5RwicOZeTvfj2U91g++5UEB9fBRD/xwBCMh8gbH9/TWlMeEiVSYp5PjF6w3TOujaTtGUW4WTV+TUxhwnWnDL3CV5+qZlpHnaRYjHfLt8lCOuu8+6XiiN/Tqdz6BiFSgqoGvaVLbNYhFybnc6f33x8v26QeT1v7bQGJA/M9I+sTqilx/pwfaEkjgz7Vkf6qxCOSTMkonTdGzwsA4FNBN0ick7PaLra/tvb9TGBs9c/XuYYxGkRsc4wL2gpuFJEGBO2aj8WZyBWGlGVRdbddAtezCzfl7fNXWXKYVTxTInpqfyuHyXn4Y85m09SwobzIv9Bo9Ma7yCOijkOCLbVdzJu6jB8jArppn7EJza25+G2HkCHB/O881CdqkDh0UvcrqQcI2tdOhkEZy3UiytHow25fec0ePuSy1LL4gqlWK14PD16lQH5c4rVVKJ3rMGSUAzmhOCrUw/ftB7DZMnpuep+Py2FvvA59Jb9Duh8cpCCf7gKiuKnpLEMetELzI4WVUoz7/IgGVJBTbzter3reooFT+06HU4718HfMetcyL69pSeWx9pdy8yCVsDe9Yv8htvozKegzw5U4uHyxot6VVjJPVctOanZSGJYs9fdd18CxJPz6NGBnawmGh3BNbxoK/k= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB5154.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(508600001)(54906003)(36756003)(71200400001)(6486002)(966005)(38070700005)(38100700002)(2906002)(6506007)(53546011)(122000001)(316002)(31686004)(30864003)(6512007)(26005)(2616005)(4326008)(8676002)(186003)(5660300002)(8936002)(91956017)(83380400001)(66946007)(66556008)(76116006)(31696002)(110136005)(86362001)(64756008)(66476007)(66446008)(45980500001)(43740500002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OTdhUlVYTVdiRzZQSE8wdmFyTm9ReHhBUmtVd3FCWEJPdzFmY1p0STRnb0gv?= =?utf-8?B?cXV6TUpCR2RiaDRyTmRTcE9YN3Z4Z0lEYWlUQlpzbjJnQjRaY0dSRHltNFRS?= =?utf-8?B?N05aVFlqNDIvMkk2YSs4Yisrczg2KzhIUG16aWE0ZmZLRXIxQitxNE0zVVUz?= =?utf-8?B?emtqcVpDOXNGcENxYTBZbktGQ2s5Z0ZWR0JjOCtkQmlpNDNGQ2hPcHRXS05z?= =?utf-8?B?QUZhb3p1MjlqV29pUkc5NldWQ1FMaHduUnFmVVZkdzkrZ3RYaEtmVkd6OHkr?= =?utf-8?B?ZEsxTFl5TUZ2OU4yZHdLbWhMMThXcnFCcEFNWHZMeG9OVEV0TWlZYWo4K1hK?= =?utf-8?B?Yzd0OEgxenVOc1R2YTZ3MU8zUENaMTVEQVBkMG10RHBFdzUrZWxsQmpSbldi?= =?utf-8?B?RTdGUU9QRmxadkNNQ0lHSFZlM3g4N1B0bm9UeUtLZk9sYnd4RERXRTZuM25T?= =?utf-8?B?b3VvN3lFeU9OL24yTTdpL21RTC82UnNXQnY5NDNJM2EwVUVMclVDU2Nicm5o?= =?utf-8?B?UkdhTDA3ejhxM0JhUnU1djFkU0xsdDFJQThWSUhMM01FT1JkdnVXY1B2WnBZ?= =?utf-8?B?cnUxeFl3bVlDckxwSkowdUV6TzJkVjNIL2RJdlVaTE9IQzJaMTYwSkJxaHU0?= =?utf-8?B?WWxBQmVjSnpSdkptL3p3MnIrTjA5ak9BekoyRXBXa0lnZ3prSGVpTEx5UXJ4?= =?utf-8?B?RXIweEZqT2pjQUF2ZjVyMlluQWliZCtiT3o1NXZUOUVESjJOL05UWEN2dFRP?= =?utf-8?B?Yk9LckczSnc1S21TNmc1ZVg4RVR5a1BsQ0dVa0tjZG5MTmdkR3ZNTTlyd2hh?= =?utf-8?B?QVk0QmYyU1RPdnl4TUluTnNlcjVZRkllOXh1WFB3MVU2RDhjTTYrOG1xSVlh?= =?utf-8?B?UWNKVnJQV2RueTdnZGxkMXNlaXZ4ZCs1bzlGV0NGUUNuVWtvSG5vcG9haTRs?= =?utf-8?B?em5Ec2xhTDJzR3NXeCtVemxZaTREMFlVUkVWSzRpeFBzVzd4Sk91YU5tQ2Vr?= =?utf-8?B?UW5KUCtuWVB3N2tvR3l2YWw3QW1zYUlHaGxzTThTM2JoNDBPR2s1eFlWVHJn?= =?utf-8?B?UHV6MVF4NHl3eTdtUHVyOGxnK3cxdEZuUVhkT0wwSkQ0YWpENURvaU4zNXor?= =?utf-8?B?T1lzQ2JyUC84SFBtLzVrSmwzcEJOQ2d2cUYrck9vUVpCNWZUQlBIL3Ixekhq?= =?utf-8?B?UU1XZ3M3c1VIM3RSM203aThzMVRjSjdvMUUvVzk0RG42UVNkQ3RmVTZhdDNS?= =?utf-8?B?TGs1OWtaaHFaWTJXWlhhSWpLUFVlTlgwU2c0TVlCVkw0WllHNG80Rm8xdms4?= =?utf-8?B?YjhDRFQ5N1V1WXhPNEVobUIxL3JqSzllamhOWXRzS3VwakNHa1lCRzBqNzdT?= =?utf-8?B?RDRiNlVJdHJZSWRVT2ZnQ2VFTG1nMTdnakN4QlF3NGRmTnJIeHJwSnVZQXVK?= =?utf-8?B?NDNiL1ZOZG96VHB0Z1JPdCtveGpwK3F5THY3dDV6RWpJWFpHU2s0elRuNTlp?= =?utf-8?B?RmxuM0RxelRCUnpmU043TnFzd1RxWXNPU3BNbklpekpQeVpqaHhnaWFXRjBk?= =?utf-8?B?QVUwamdiK1ZhdUtJU1IveVlBWUhTanIvUDFaODBlTURSQ1kySkFnNitmNXM4?= =?utf-8?B?ckFWdkIyOVhmM2wxRDRYZlloN1RvODVUVlpzRFdlYWJyV2t1bStzei9Gd1V5?= =?utf-8?B?cC9KRFpOWVZpU0dka3QwYWNNMmlIb1FXdUVEVzRNRHhHS0w4OWdNSEZWUUxQ?= =?utf-8?B?VE0vSTNQRDNzdUJnazd1SzAyRDhDNmdTdE9SQVpnRnUyY3FRK28za2Q4YTVp?= =?utf-8?B?SlhmM0R5UDQwRjNUQnhBell4MlpSQ3NkNDEvdzE0ZmVSMERETGc5VWREMVFt?= =?utf-8?B?cm8vNE9XZ0ZEY1ZKYjFwczU2UUVtaWpuWEY2emNra1hkbHNvdkZJU0VMa0R6?= =?utf-8?B?R0U4Ty9tOGlmMTBMUmZ1VFFoWTA0b0tMbWM2SFRsZklLbmRkYmpjOHFqZU5N?= =?utf-8?B?aEs1WmlyejhUbFFudys2WW1sN1llMWtyZmFZNHQyU0hoSGdzSjdDdWpuR1lD?= =?utf-8?B?WXNQd0dpUmFiLzR2NkRteC9qaDhCVFE4a0QwdiswYUpCeHNLZ2NQVkhRQ0FP?= =?utf-8?B?cy9PWGFpYW9hc043UDRiWG11Nno0RTZyTmoxdVpmVGI5MGtLMGU5Q0VPVDR1?= =?utf-8?B?QmR0YlhIL1h2MFp2c1pOS3J5WG56a3o3aHp6c1JPMmFyMzg5Z0ZoN3ZqYTVJ?= =?utf-8?B?Y1RHRko5NUZPYUVpRVROUlcza2hDQkVEMS90VnM3cHFOaUZVMWhNU0sxRFdQ?= =?utf-8?B?bHF0N3BSRTFnRmJRVWpRMkVyZFY5VnhLRGQ4RU9vTTNkYjJMSU52YVRHNUNa?= =?utf-8?Q?VnHJtlr/1jTsfftI=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB5154.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee6e99c7-11a6-4311-3c8a-08da2da9b6e1 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 May 2022 08:40:16.6970 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: NoSzKfvRZMq7VG/6RNgyD3xONf00I9KrONHu262l6PhTABFd2Ok9V7a0DjE1r9JZIvxYsZaJEr0XT68IkSdTreV8Vv/kM+zrGHUoE4X6l9Q= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB0016 Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org T24gMjEvMDMvMjAyMiAxMjo1OCwgQ29ub3IgRG9vbGV5IHdyb3RlOg0KPiBFWFRFUk5BTCBFTUFJ TDogRG8gbm90IGNsaWNrIGxpbmtzIG9yIG9wZW4gYXR0YWNobWVudHMgdW5sZXNzIHlvdSBrbm93 IHRoZSBjb250ZW50IGlzIHNhZmUNCj4gDQo+IEFkZCBNaWNyb2NoaXAgQ29yZUkyQyBpMmMgY29u dHJvbGxlciBzdXBwb3J0LiBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUNCj4gImhhcmQiIGkyYyBj b250cm9sbGVyIG9uIHRoZSBNaWNyb2NoaXAgUG9sYXJGaXJlIFNvQyAmIHRoZSBiYXNpYyBmZWF0 dXJlDQo+IHNldCBmb3IgInNvZnQiIGkyYyBjb250cm9sbGVyIGltcGxlbXRhdGlvbnMgaW4gdGhl IEZQR0EgZmFicmljLg0KPiANCj4gQ28tZGV2ZWxvcGVkLWJ5OiBEYWlyZSBNY05hbWFyYSA8ZGFp cmUubWNuYW1hcmFAbWljcm9jaGlwLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogRGFpcmUgTWNOYW1h cmEgPGRhaXJlLm1jbmFtYXJhQG1pY3JvY2hpcC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IENvbm9y IERvb2xleSA8Y29ub3IuZG9vbGV5QG1pY3JvY2hpcC5jb20+DQo+IC0tLQ0KPiBDaGFuZ2VzIGZy b20gdjE6DQo+IC0gVXNlIGJ5dGUgd3JpdGUgYW5kIHJlYWQgZnVuY3Rpb25zDQoNClNvIGl0IHR1 cm5zIG91dCB0aGF0IGhvdyBJIG1hZGUgdGhpcyBjaGFuZ2UsIHdoaWNoIHdvcmtlZCBpbiBteQ0K dGVzdCBhcHAsIGhhcyBpc3N1ZXMuDQpJIHdpbGwgcmV3b3JrIGFuZCBzZW5kIGEgdjMuDQoNClRo YW5rcywNCkNvbm9yLg0KDQo+IC0gUmV0dXJuIElSUV9OT05FIGFuZCBkb24ndCB3YXJuIGlmIG5v dCB0aGlzIGRyaXZlcnMgaW50ZXJydXB0DQo+IC0gQWRkIGEgY2xrX2Rpc2FibGVfdW5wcmVwYXJl IHRvIGF2b2lkIGxlYWtpbmcgYSBjbG9jayBpbiB0aGUgcHJvYmUNCj4gLS0tDQo+ICAgZHJpdmVy cy9pMmMvYnVzc2VzL0tjb25maWcgICAgICAgICAgICAgIHwgIDExICsNCj4gICBkcml2ZXJzL2ky Yy9idXNzZXMvTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDEgKw0KPiAgIGRyaXZlcnMvaTJjL2J1 c3Nlcy9pMmMtbWljcm9jaGlwLWNvcmUuYyB8IDQ4NiArKysrKysrKysrKysrKysrKysrKysrKysN Cj4gICAzIGZpbGVzIGNoYW5nZWQsIDQ5OCBpbnNlcnRpb25zKCspDQo+ICAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbWljcm9jaGlwLWNvcmUuYw0KPiANCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnIGIvZHJpdmVycy9pMmMvYnVzc2Vz L0tjb25maWcNCj4gaW5kZXggYTFiYWU1OTIwOGUzLi4zZDRkOGUwZTlkZTcgMTAwNjQ0DQo+IC0t LSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnDQo+ICsrKyBiL2RyaXZlcnMvaTJjL2J1c3Nl cy9LY29uZmlnDQo+IEBAIC03ODEsNiArNzgxLDE3IEBAIGNvbmZpZyBJMkNfTUVTT04NCj4gICAg ICAgICAgICBJZiB5b3Ugc2F5IHllcyB0byB0aGlzIG9wdGlvbiwgc3VwcG9ydCB3aWxsIGJlIGlu Y2x1ZGVkIGZvciB0aGUNCj4gICAgICAgICAgICBJMkMgaW50ZXJmYWNlIG9uIHRoZSBBbWxvZ2lj IE1lc29uIGZhbWlseSBvZiBTb0NzLg0KPiANCj4gK2NvbmZpZyBJMkNfTUlDUk9DSElQX0NPUkUN Cj4gKyAgICAgICB0cmlzdGF0ZSAiTWljcm9jaGlwIEZQR0EgSTJDIGNvbnRyb2xsZXIiDQo+ICsg ICAgICAgZGVwZW5kcyBvbiBTT0NfTUlDUk9DSElQX1BPTEFSRklSRSB8fCBDT01QSUxFX1RFU1QN Cj4gKyAgICAgICBkZXBlbmRzIG9uIE9GDQo+ICsgICAgICAgaGVscA0KPiArICAgICAgICAgSWYg eW91IHNheSB5ZXMgdG8gdGhpcyBvcHRpb24sIHN1cHBvcnQgd2lsbCBiZSBpbmNsdWRlZCBmb3Ig dGhlDQo+ICsgICAgICAgICBJMkMgaW50ZXJmYWNlIG9uIE1pY3JvY2hpcCBGUEdBcy4NCj4gKw0K PiArICAgICAgICAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIElm IHNvLCB0aGUgbW9kdWxlIHdpbGwgYmUNCj4gKyAgICAgICAgIGNhbGxlZCBpMmMtbWljcm9jaGlw LWNvcmUuDQo+ICsNCj4gICBjb25maWcgSTJDX01QQw0KPiAgICAgICAgICB0cmlzdGF0ZSAiTVBD MTA3LzgyNHgvODV4eC81MTJ4LzUyeHgvODN4eC84Nnh4Ig0KPiAgICAgICAgICBkZXBlbmRzIG9u IFBQQw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL01ha2VmaWxlIGIvZHJpdmVy cy9pMmMvYnVzc2VzL01ha2VmaWxlDQo+IGluZGV4IDQ3OWY2MGU0ZWUzZC4uNzU4NjliMTg5ZTQz IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvTWFrZWZpbGUNCj4gKysrIGIvZHJp dmVycy9pMmMvYnVzc2VzL01ha2VmaWxlDQo+IEBAIC03OCw2ICs3OCw3IEBAIG9iai0kKENPTkZJ R19JMkNfSlo0NzgwKSAgICAgICs9IGkyYy1qejQ3ODAubw0KPiAgIG9iai0kKENPTkZJR19JMkNf S0VNUExEKSAgICAgICArPSBpMmMta2VtcGxkLm8NCj4gICBvYmotJChDT05GSUdfSTJDX0xQQzJL KSAgICAgICAgICAgICAgICArPSBpMmMtbHBjMmsubw0KPiAgIG9iai0kKENPTkZJR19JMkNfTUVT T04pICAgICAgICAgICAgICAgICs9IGkyYy1tZXNvbi5vDQo+ICtvYmotJChDT05GSUdfSTJDX01J Q1JPQ0hJUF9DT1JFKSAgICAgICArPSBpMmMtbWljcm9jaGlwLWNvcmUubw0KPiAgIG9iai0kKENP TkZJR19JMkNfTVBDKSAgICAgICAgICArPSBpMmMtbXBjLm8NCj4gICBvYmotJChDT05GSUdfSTJD X01UNjVYWCkgICAgICAgKz0gaTJjLW10NjV4eC5vDQo+ICAgb2JqLSQoQ09ORklHX0kyQ19NVDc2 MjEpICAgICAgICs9IGkyYy1tdDc2MjEubw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVz c2VzL2kyYy1taWNyb2NoaXAtY29yZS5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1taWNyb2No aXAtY29yZS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4u ZWE0MzRmMzllMGNkDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9pMmMvYnVzc2Vz L2kyYy1taWNyb2NoaXAtY29yZS5jDQo+IEBAIC0wLDAgKzEsNDg2IEBADQo+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiArLyoNCj4gKyAqIE1pY3JvY2hpcCBDb3JlSTJD IEkyQyBjb250cm9sbGVyIGRyaXZlcg0KPiArICoNCj4gKyAqIENvcHlyaWdodCAoYykgMjAxOCAt IDIwMjIgTWljcm9jaGlwIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICoN Cj4gKyAqIEF1dGhvcjogRGFpcmUgTWNOYW1hcmEgPGRhaXJlLm1jbmFtYXJhQG1pY3JvY2hpcC5j b20+DQo+ICsgKiBBdXRob3I6IENvbm9yIERvb2xleSA8Y29ub3IuZG9vbGV5QG1pY3JvY2hpcC5j b20+DQo+ICsgKi8NCj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCj4gKyNpbmNsdWRlIDxsaW51 eC9jbGtkZXYuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4NCj4gKyNpbmNsdWRlIDxsaW51 eC9pMmMuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4NCj4gKyNpbmNsdWRlIDxsaW51 eC9pbnRlcnJ1cHQuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gKyNpbmNsdWRl IDxsaW51eC9pby5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiArI2luY2x1ZGUg PGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPiArDQo+ICsjZGVmaW5lIE1JQ1JPQ0hJUF9JMkNf VElNRU9VVCAobXNlY3NfdG9famlmZmllcygxMDAwKSkNCj4gKw0KPiArI2RlZmluZSBDT1JFX0ky Q19DVFJMICgweDAwKQ0KPiArI2RlZmluZSBDVFJMX0NSMCBCSVQoMCkNCj4gKyNkZWZpbmUgQ1RS TF9DUjEgQklUKDEpDQo+ICsjZGVmaW5lIENUUkxfQUEgQklUKDIpDQo+ICsjZGVmaW5lIENUUkxf U0kgQklUKDMpDQo+ICsjZGVmaW5lIENUUkxfU1RPIEJJVCg0KQ0KPiArI2RlZmluZSBDVFJMX1NU QSBCSVQoNSkNCj4gKyNkZWZpbmUgQ1RSTF9FTlMxIEJJVCg2KQ0KPiArI2RlZmluZSBDVFJMX0NS MiBCSVQoNykNCj4gKyNkZWZpbmUgQ09SRV9JMkNfU1RBVFVTICgweDA0KQ0KPiArI2RlZmluZSBT VEFUVVNfQlVTX0VSUk9SICgweDAwKQ0KPiArI2RlZmluZSBTVEFUVVNfTV9TVEFSVF9TRU5UICgw eDA4KQ0KPiArI2RlZmluZSBTVEFUVVNfTV9SRVBFQVRFRF9TVEFSVF9TRU5UICgweDEwKQ0KPiAr I2RlZmluZSBTVEFUVVNfTV9TTEFXX0FDSyAoMHgxOCkNCj4gKyNkZWZpbmUgU1RBVFVTX01fU0xB V19OQUNLICgweDIwKQ0KPiArI2RlZmluZSBTVEFUVVNfTV9UWF9EQVRBX0FDSyAoMHgyOCkNCj4g KyNkZWZpbmUgU1RBVFVTX01fVFhfREFUQV9OQUNLICgweDMwKQ0KPiArI2RlZmluZSBTVEFUVVNf TV9BUkJfTE9TVCAoMHgzOCkNCj4gKyNkZWZpbmUgU1RBVFVTX01fU0xBUl9BQ0sgKDB4NDApDQo+ ICsjZGVmaW5lIFNUQVRVU19NX1NMQVJfTkFDSyAoMHg0OCkNCj4gKyNkZWZpbmUgU1RBVFVTX01f UlhfREFUQV9BQ0tFRCAoMHg1MCkNCj4gKyNkZWZpbmUgU1RBVFVTX01fUlhfREFUQV9OQUNLRUQg KDB4NTgpDQo+ICsjZGVmaW5lIFNUQVRVU19TX1NMQVdfQUNLRUQgKDB4NjApDQo+ICsjZGVmaW5l IFNUQVRVU19TX0FSQl9MT1NUX1NMQVdfQUNLRUQgKDB4NjgpDQo+ICsjZGVmaW5lIFNUQVRVU19T X0dFTkVSQUxfQ0FMTF9BQ0tFRCAoMHg3MCkNCj4gKyNkZWZpbmUgU1RBVFVTX1NfQVJCX0xPU1Rf R0VORVJBTF9DQUxMX0FDS0VEICgweDc4KQ0KPiArI2RlZmluZSBTVEFUVVNfU19SWF9EQVRBX0FD S0VEICgweDgwKQ0KPiArI2RlZmluZSBTVEFUVVNfU19SWF9EQVRBX05BQ0tFRCAoMHg4OCkNCj4g KyNkZWZpbmUgU1RBVFVTX1NfR0VORVJBTF9DQUxMX1JYX0RBVEFfQUNLRUQgKDB4OTApDQo+ICsj ZGVmaW5lIFNUQVRVU19TX0dFTkVSQUxfQ0FMTF9SWF9EQVRBX05BQ0tFRCAoMHg5OCkNCj4gKyNk ZWZpbmUgU1RBVFVTX1NfUlhfU1RPUCAoMHhBMCkNCj4gKyNkZWZpbmUgU1RBVFVTX1NfU0xBUl9B Q0tFRCAoMHhBOCkNCj4gKyNkZWZpbmUgU1RBVFVTX1NfQVJCX0xPU1RfU0xBUl9BQ0tFRCAoMHhC MCkNCj4gKyNkZWZpbmUgU1RBVFVTX1NfVFhfREFUQV9BQ0sgKDB4QjgpDQo+ICsjZGVmaW5lIFNU QVRVU19TX1RYX0RBVEFfTkFDSyAoMHhDMCkNCj4gKyNkZWZpbmUgU1RBVFVTX0xBU1RfREFUQV9B Q0sgKDB4QzgpDQo+ICsjZGVmaW5lIFNUQVRVU19NX1NNQl9NQVNURVJfUkVTRVQgKDB4RDApDQo+ ICsjZGVmaW5lIFNUQVRVU19TX1NDTF9MT1dfVElNRU9VVCAoMHhEOCkgLyogMjUgbXMgKi8NCj4g KyNkZWZpbmUgU1RBVFVTX05PX1NUQVRFX0lORk8gKDB4RjgpDQo+ICsjZGVmaW5lIENPUkVfSTJD X0RBVEEgKDB4MDgpDQo+ICsjZGVmaW5lIFdSSVRFX0JJVCAoMHgwKQ0KPiArI2RlZmluZSBSRUFE X0JJVCAoMHgxKQ0KPiArI2RlZmluZSBTTEFWRV9BRERSX1NISUZUICgxKQ0KPiArI2RlZmluZSBD T1JFX0kyQ19TTEFWRTBfQUREUiAoMHgwYykNCj4gKyNkZWZpbmUgR0VORVJBTF9DQUxMX0JJVCAo MHgwKQ0KPiArI2RlZmluZSBDT1JFX0kyQ19TTUJVUyAoMHgxMCkNCj4gKyNkZWZpbmUgU01CQUxF UlRfSU5UX0VOQiAoMHgwKQ0KPiArI2RlZmluZSBTTUJTVVNfSU5UX0VOQiAoMHgxKQ0KPiArI2Rl ZmluZSBTTUJVU19FTkIgKDB4MikNCj4gKyNkZWZpbmUgU01CQUxFUlRfTklfU1RBVFVTICgweDMp DQo+ICsjZGVmaW5lIFNNQkFMRVJUX05PX0NUUkwgKDB4NCkNCj4gKyNkZWZpbmUgU01CU1VTX05J X1NUQVRVUyAoMHg1KQ0KPiArI2RlZmluZSBTTUJTVVNfTk9fQ1RSTCAoMHg2KQ0KPiArI2RlZmlu ZSBTTUJVU19SRVNFVCAoMHg3KQ0KPiArI2RlZmluZSBDT1JFX0kyQ19GUkVRICgweDE0KQ0KPiAr I2RlZmluZSBDT1JFX0kyQ19HTElUQ0hSRUcgKDB4MTgpDQo+ICsjZGVmaW5lIENPUkVfSTJDX1NM QVZFMV9BRERSICgweDFjKQ0KPiArDQo+ICsjZGVmaW5lIFBDTEtfRElWXzk2MCAoQ1RSTF9DUjIp DQo+ICsjZGVmaW5lIFBDTEtfRElWXzI1NiAoMCkNCj4gKyNkZWZpbmUgUENMS19ESVZfMjI0IChD VFJMX0NSMCkNCj4gKyNkZWZpbmUgUENMS19ESVZfMTkyIChDVFJMX0NSMSkNCj4gKyNkZWZpbmUg UENMS19ESVZfMTYwIChDVFJMX0NSMCB8IENUUkxfQ1IxKQ0KPiArI2RlZmluZSBQQ0xLX0RJVl8x MjAgKENUUkxfQ1IwIHwgQ1RSTF9DUjIpDQo+ICsjZGVmaW5lIFBDTEtfRElWXzYwIChDVFJMX0NS MSB8IENUUkxfQ1IyKQ0KPiArI2RlZmluZSBCQ0xLX0RJVl84IChDVFJMX0NSMCB8IENUUkxfQ1Ix IHwgQ1RSTF9DUjIpDQo+ICsjZGVmaW5lIENMS19NQVNLIChDVFJMX0NSMCB8IENUUkxfQ1IxIHwg Q1RSTF9DUjIpDQo+ICsNCj4gKy8qDQo+ICsgKiBtY2hwX2NvcmVpMmNfZGV2IC0gSTJDIGRldmlj ZSBjb250ZXh0DQo+ICsgKiBAYmFzZTogcG9pbnRlciB0byByZWdpc3RlciBzdHJ1Y3QNCj4gKyAq IEBtc2c6IHBvaW50ZXIgdG8gY3VycmVudCBtZXNzYWdlDQo+ICsgKiBAbXNnX2xlbjogbnVtYmVy IG9mIGJ5dGVzIHRyYW5zZmVycmVkIGluIG1zZw0KPiArICogQG1zZ19lcnI6IGVycm9yIGNvZGUg Zm9yIGNvbXBsZXRlZCBtZXNzYWdlDQo+ICsgKiBAbXNnX2NvbXBsZXRlOiB4ZmVyIGNvbXBsZXRp b24gb2JqZWN0DQo+ICsgKiBAZGV2OiBkZXZpY2UgcmVmZXJlbmNlDQo+ICsgKiBAYWRhcHRlcjog Y29yZSBpMmMgYWJzdHJhY3Rpb24NCj4gKyAqIEBpMmNfY2xrOiBjbG9jayByZWZlcmVuY2UgZm9y IGkyYyBpbnB1dCBjbG9jaw0KPiArICogQGJ1c19jbGtfcmF0ZTogY3VycmVudCBpMmMgYnVzIGNs b2NrIHJhdGUNCj4gKyAqIEBidWY6IHB0ciB0byBtc2cgYnVmZmVyIGZvciBlYXNpZXIgdXNlLg0K PiArICogQGlzcl9zdGF0dXM6IGNhY2hlZCBjb3B5IG9mIGxvY2FsIElTUiBzdGF0dXMuDQo+ICsg KiBAbG9jazogc3BpbmxvY2sgZm9yIElSUSBzeW5jaHJvbml6YXRpb24uDQo+ICsgKi8NCj4gK3N0 cnVjdCBtY2hwX2NvcmVpMmNfZGV2IHsNCj4gKyAgICAgICB2b2lkIF9faW9tZW0gKmJhc2U7DQo+ ICsgICAgICAgc2l6ZV90IG1zZ19sZW47DQo+ICsgICAgICAgaW50IG1zZ19lcnI7DQo+ICsgICAg ICAgc3RydWN0IGNvbXBsZXRpb24gbXNnX2NvbXBsZXRlOw0KPiArICAgICAgIHN0cnVjdCBkZXZp Y2UgKmRldjsNCj4gKyAgICAgICBzdHJ1Y3QgaTJjX2FkYXB0ZXIgYWRhcHRlcjsNCj4gKyAgICAg ICBzdHJ1Y3QgY2xrICppMmNfY2xrOw0KPiArICAgICAgIHNwaW5sb2NrX3QgbG9jazsgLyogSVJR IHN5bmNocm9uaXphdGlvbiAqLw0KPiArICAgICAgIHUzMiBidXNfY2xrX3JhdGU7DQo+ICsgICAg ICAgdTMyIG1zZ19yZWFkOw0KPiArICAgICAgIHUzMiBpc3Jfc3RhdHVzOw0KPiArICAgICAgIHU4 ICpidWY7DQo+ICsgICAgICAgdTggYWRkcjsNCj4gK307DQo+ICsNCj4gK3N0YXRpYyB2b2lkIG1j aHBfY29yZWkyY19jb3JlX2Rpc2FibGUoc3RydWN0IG1jaHBfY29yZWkyY19kZXYgKmlkZXYpDQo+ ICt7DQo+ICsgICAgICAgdTggY3RybCA9IHJlYWRiKGlkZXYtPmJhc2UgKyBDT1JFX0kyQ19DVFJM KTsNCj4gKw0KPiArICAgICAgIGN0cmwgJj0gfkNUUkxfRU5TMTsNCj4gKyAgICAgICB3cml0ZWIo Y3RybCwgaWRldi0+YmFzZSArIENPUkVfSTJDX0NUUkwpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg dm9pZCBtY2hwX2NvcmVpMmNfY29yZV9lbmFibGUoc3RydWN0IG1jaHBfY29yZWkyY19kZXYgKmlk ZXYpDQo+ICt7DQo+ICsgICAgICAgdTggY3RybCA9IHJlYWRiKGlkZXYtPmJhc2UgKyBDT1JFX0ky Q19DVFJMKTsNCj4gKw0KPiArICAgICAgIGN0cmwgfD0gQ1RSTF9FTlMxOw0KPiArICAgICAgIHdy aXRlYihjdHJsLCBpZGV2LT5iYXNlICsgQ09SRV9JMkNfQ1RSTCk7DQo+ICt9DQo+ICsNCj4gK3N0 YXRpYyB2b2lkIG1jaHBfY29yZWkyY19yZXNldChzdHJ1Y3QgbWNocF9jb3JlaTJjX2RldiAqaWRl dikNCj4gK3sNCj4gKyAgICAgICBtY2hwX2NvcmVpMmNfY29yZV9kaXNhYmxlKGlkZXYpOw0KPiAr ICAgICAgIG1jaHBfY29yZWkyY19jb3JlX2VuYWJsZShpZGV2KTsNCj4gK30NCj4gKw0KPiArc3Rh dGljIGlubGluZSB2b2lkIG1jaHBfY29yZWkyY19zdG9wKHN0cnVjdCBtY2hwX2NvcmVpMmNfZGV2 ICppZGV2KQ0KPiArew0KPiArICAgICAgIHU4IGN0cmwgPSByZWFkYihpZGV2LT5iYXNlICsgQ09S RV9JMkNfQ1RSTCk7DQo+ICsNCj4gKyAgICAgICBjdHJsIHw9IENUUkxfU1RPOw0KPiArICAgICAg IHdyaXRlYihjdHJsLCBpZGV2LT5iYXNlICsgQ09SRV9JMkNfQ1RSTCk7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyBpbmxpbmUgaW50IG1jaHBfY29yZWkyY19zZXRfZGl2aXNvcih1MzIgcmF0ZSwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtY2hwX2Nv cmVpMmNfZGV2ICppZGV2KQ0KPiArew0KPiArICAgICAgIHU4IGNsa3ZhbCwgY3RybDsNCj4gKw0K PiArICAgICAgIGlmIChyYXRlID49IDk2MCkNCj4gKyAgICAgICAgICAgICAgIGNsa3ZhbCA9IFBD TEtfRElWXzk2MDsNCj4gKyAgICAgICBlbHNlIGlmIChyYXRlID49IDI1NikNCj4gKyAgICAgICAg ICAgICAgIGNsa3ZhbCA9IFBDTEtfRElWXzI1NjsNCj4gKyAgICAgICBlbHNlIGlmIChyYXRlID49 IDIyNCkNCj4gKyAgICAgICAgICAgICAgIGNsa3ZhbCA9IFBDTEtfRElWXzIyNDsNCj4gKyAgICAg ICBlbHNlIGlmIChyYXRlID49IDE5MikNCj4gKyAgICAgICAgICAgICAgIGNsa3ZhbCA9IFBDTEtf RElWXzE5MjsNCj4gKyAgICAgICBlbHNlIGlmIChyYXRlID49IDE2MCkNCj4gKyAgICAgICAgICAg ICAgIGNsa3ZhbCA9IFBDTEtfRElWXzE2MDsNCj4gKyAgICAgICBlbHNlIGlmIChyYXRlID49IDEy MCkNCj4gKyAgICAgICAgICAgICAgIGNsa3ZhbCA9IFBDTEtfRElWXzEyMDsNCj4gKyAgICAgICBl bHNlIGlmIChyYXRlID49IDYwKQ0KPiArICAgICAgICAgICAgICAgY2xrdmFsID0gUENMS19ESVZf NjA7DQo+ICsgICAgICAgZWxzZSBpZiAocmF0ZSA+PSA4KQ0KPiArICAgICAgICAgICAgICAgY2xr dmFsID0gQkNMS19ESVZfODsNCj4gKyAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsNCj4gKw0KPiArICAgICAgIGN0cmwgPSByZWFkYihpZGV2LT5iYXNlICsgQ09S RV9JMkNfQ1RSTCk7DQo+ICsgICAgICAgY3RybCAmPSB+Q0xLX01BU0s7DQo+ICsgICAgICAgY3Ry bCB8PSBjbGt2YWw7DQo+ICsgICAgICAgd3JpdGViKGN0cmwsIGlkZXYtPmJhc2UgKyBDT1JFX0ky Q19DVFJMKTsNCj4gKw0KPiArICAgICAgIGN0cmwgPSByZWFkYihpZGV2LT5iYXNlICsgQ09SRV9J MkNfQ1RSTCk7DQo+ICsgICAgICAgaWYgKChjdHJsICYgQ0xLX01BU0spICE9IGNsa3ZhbCkNCj4g KyAgICAgICAgICAgICAgIHJldHVybiAtRUlPOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIDA7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgbWNocF9jb3JlaTJjX2luaXQoc3RydWN0IG1jaHBfY29y ZWkyY19kZXYgKmlkZXYpDQo+ICt7DQo+ICsgICAgICAgdTMyIGNsa19yYXRlID0gY2xrX2dldF9y YXRlKGlkZXYtPmkyY19jbGspOw0KPiArICAgICAgIHUzMiBkaXZpc29yID0gY2xrX3JhdGUgLyBp ZGV2LT5idXNfY2xrX3JhdGU7DQo+ICsgICAgICAgaW50IHJldDsNCj4gKw0KPiArICAgICAgIHJl dCA9IG1jaHBfY29yZWkyY19zZXRfZGl2aXNvcihkaXZpc29yLCBpZGV2KTsNCj4gKyAgICAgICBp ZiAocmV0KQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKw0KPiArICAgICAgIG1j aHBfY29yZWkyY19yZXNldChpZGV2KTsNCj4gKw0KPiArICAgICAgIHJldHVybiAwOw0KPiArfQ0K PiArDQo+ICtzdGF0aWMgdm9pZCBtY2hwX2NvcmVpMmNfdHJhbnNmZXIoc3RydWN0IG1jaHBfY29y ZWkyY19kZXYgKmlkZXYsIHUzMiBkYXRhKQ0KPiArew0KPiArICAgICAgIGlmIChpZGV2LT5tc2df bGVuID4gMCkNCj4gKyAgICAgICAgICAgICAgIHdyaXRlYihkYXRhLCBpZGV2LT5iYXNlICsgQ09S RV9JMkNfREFUQSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIG1jaHBfY29yZWkyY19lbXB0 eV9yeChzdHJ1Y3QgbWNocF9jb3JlaTJjX2RldiAqaWRldikNCj4gK3sNCj4gKyAgICAgICB1OCBj dHJsOw0KPiArDQo+ICsgICAgICAgaWYgKGlkZXYtPm1zZ19sZW4gPiAwKSB7DQo+ICsgICAgICAg ICAgICAgICAqaWRldi0+YnVmKysgPSByZWFkYihpZGV2LT5iYXNlICsgQ09SRV9JMkNfREFUQSk7 DQo+ICsgICAgICAgICAgICAgICBpZGV2LT5tc2dfbGVuLS07DQo+ICsgICAgICAgfQ0KPiArDQo+ ICsgICAgICAgaWYgKGlkZXYtPm1zZ19sZW4gPT0gMCkgew0KPiArICAgICAgICAgICAgICAgY3Ry bCA9IHJlYWRiKGlkZXYtPmJhc2UgKyBDT1JFX0kyQ19DVFJMKTsNCj4gKyAgICAgICAgICAgICAg IGN0cmwgJj0gfkNUUkxfQUE7DQo+ICsgICAgICAgICAgICAgICB3cml0ZWIoY3RybCwgaWRldi0+ YmFzZSArIENPUkVfSTJDX0NUUkwpOw0KPiArICAgICAgIH0NCj4gK30NCj4gKw0KPiArc3RhdGlj IGludCBtY2hwX2NvcmVpMmNfZmlsbF90eChzdHJ1Y3QgbWNocF9jb3JlaTJjX2RldiAqaWRldikN Cj4gK3sNCj4gKyAgICAgICBtY2hwX2NvcmVpMmNfdHJhbnNmZXIoaWRldiwgKmlkZXYtPmJ1Zisr KTsNCj4gKyAgICAgICBpZGV2LT5tc2dfbGVuLS07DQo+ICsNCj4gKyAgICAgICByZXR1cm4gMDsN Cj4gK30NCj4gKw0KPiArc3RhdGljIGlycXJldHVybl90IG1jaHBfY29yZWkyY19oYW5kbGVfaXNy KHN0cnVjdCBtY2hwX2NvcmVpMmNfZGV2ICppZGV2KQ0KPiArew0KPiArICAgICAgIHUzMiBzdGF0 dXMgPSBpZGV2LT5pc3Jfc3RhdHVzOw0KPiArICAgICAgIHU4IGN0cmw7DQo+ICsNCj4gKyAgICAg ICBpZiAoIWlkZXYtPmJ1ZikNCj4gKyAgICAgICAgICAgICAgIHJldHVybiBJUlFfTk9ORTsNCj4g Kw0KPiArICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7DQo+ICsgICAgICAgY2FzZSBTVEFUVVNfTV9T VEFSVF9TRU5UOg0KPiArICAgICAgIGNhc2UgU1RBVFVTX01fUkVQRUFURURfU1RBUlRfU0VOVDoN Cj4gKyAgICAgICAgICAgICAgIGN0cmwgPSByZWFkYihpZGV2LT5iYXNlICsgQ09SRV9JMkNfQ1RS TCk7DQo+ICsgICAgICAgICAgICAgICBjdHJsICY9IH5DVFJMX1NUQTsNCj4gKyAgICAgICAgICAg ICAgIHdyaXRlYihpZGV2LT5hZGRyLCBpZGV2LT5iYXNlICsgQ09SRV9JMkNfREFUQSk7DQo+ICsg ICAgICAgICAgICAgICB3cml0ZWIoY3RybCwgaWRldi0+YmFzZSArIENPUkVfSTJDX0NUUkwpOw0K PiArICAgICAgICAgICAgICAgaWYgKGlkZXYtPm1zZ19sZW4gPD0gMCkNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgZ290byBmaW5pc2hlZDsNCj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiAr ICAgICAgIGNhc2UgU1RBVFVTX01fQVJCX0xPU1Q6DQo+ICsgICAgICAgICAgICAgICBpZGV2LT5t c2dfZXJyID0gLUVBR0FJTjsNCj4gKyAgICAgICAgICAgICAgIGdvdG8gZmluaXNoZWQ7DQo+ICsg ICAgICAgY2FzZSBTVEFUVVNfTV9TTEFXX0FDSzoNCj4gKyAgICAgICBjYXNlIFNUQVRVU19NX1RY X0RBVEFfQUNLOg0KPiArICAgICAgICAgICAgICAgaWYgKGlkZXYtPm1zZ19sZW4gPiAwKQ0KPiAr ICAgICAgICAgICAgICAgICAgICAgICBtY2hwX2NvcmVpMmNfZmlsbF90eChpZGV2KTsNCj4gKyAg ICAgICAgICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBsYXN0X2J5 dGU7DQo+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICBjYXNlIFNUQVRVU19NX1RY X0RBVEFfTkFDSzoNCj4gKyAgICAgICBjYXNlIFNUQVRVU19NX1NMQVJfTkFDSzoNCj4gKyAgICAg ICBjYXNlIFNUQVRVU19NX1NMQVdfTkFDSzoNCj4gKyAgICAgICAgICAgICAgIGlkZXYtPm1zZ19l cnIgPSAtRU5YSU87DQo+ICsgICAgICAgICAgICAgICBnb3RvIGxhc3RfYnl0ZTsNCj4gKyAgICAg ICBjYXNlIFNUQVRVU19NX1NMQVJfQUNLOg0KPiArICAgICAgICAgICAgICAgY3RybCA9IHJlYWRi KGlkZXYtPmJhc2UgKyBDT1JFX0kyQ19DVFJMKTsNCj4gKyAgICAgICAgICAgICAgIGlmIChpZGV2 LT5tc2dfbGVuID09IDF1KSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGN0cmwgJj0gfkNU UkxfQUE7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlYihjdHJsLCBpZGV2LT5iYXNl ICsgQ09SRV9JMkNfQ1RSTCk7DQo+ICsgICAgICAgICAgICAgICB9IGVsc2Ugew0KPiArICAgICAg ICAgICAgICAgICAgICAgICBjdHJsIHw9IENUUkxfQUE7DQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIHdyaXRlYihjdHJsLCBpZGV2LT5iYXNlICsgQ09SRV9JMkNfQ1RSTCk7DQo+ICsgICAgICAg ICAgICAgICB9DQo+ICsgICAgICAgICAgICAgICBpZiAoaWRldi0+bXNnX2xlbiA8IDF1KQ0KPiAr ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGxhc3RfYnl0ZTsNCj4gKyAgICAgICAgICAgICAg IGJyZWFrOw0KPiArICAgICAgIGNhc2UgU1RBVFVTX01fUlhfREFUQV9BQ0tFRDoNCj4gKyAgICAg ICAgICAgICAgIG1jaHBfY29yZWkyY19lbXB0eV9yeChpZGV2KTsNCj4gKyAgICAgICAgICAgICAg IGJyZWFrOw0KPiArICAgICAgIGNhc2UgU1RBVFVTX01fUlhfREFUQV9OQUNLRUQ6DQo+ICsgICAg ICAgICAgICAgICBtY2hwX2NvcmVpMmNfZW1wdHlfcngoaWRldik7DQo+ICsgICAgICAgICAgICAg ICBpZiAoaWRldi0+bXNnX2xlbiA9PSAwKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBnb3Rv IGxhc3RfYnl0ZTsNCj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgIGRlZmF1bHQ6 DQo+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICBy ZXR1cm4gSVJRX0hBTkRMRUQ7DQo+ICsNCj4gK2xhc3RfYnl0ZToNCj4gKyAgICAgICAvKiBPbiB0 aGUgbGFzdCBieXRlIHRvIGJlIHRyYW5zbWl0dGVkLCBzZW5kIFNUT1AgKi8NCj4gKyAgICAgICBt Y2hwX2NvcmVpMmNfc3RvcChpZGV2KTsNCj4gK2ZpbmlzaGVkOg0KPiArICAgICAgIGNvbXBsZXRl KCZpZGV2LT5tc2dfY29tcGxldGUpOw0KPiArICAgICAgIHJldHVybiBJUlFfSEFORExFRDsNCj4g K30NCj4gKw0KPiArc3RhdGljIGlycXJldHVybl90IG1jaHBfY29yZWkyY19pc3IoaW50IGlycSwg dm9pZCAqX2RldikNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgbWNocF9jb3JlaTJjX2RldiAqaWRl diA9IF9kZXY7DQo+ICsgICAgICAgaXJxcmV0dXJuX3QgcmV0ID0gSVJRX05PTkU7DQo+ICsgICAg ICAgdTggY3RybDsNCj4gKw0KPiArICAgICAgIGN0cmwgPSByZWFkYihpZGV2LT5iYXNlICsgQ09S RV9JMkNfQ1RSTCk7DQo+ICsgICAgICAgaWYgKGN0cmwgJiBDVFJMX1NJKSB7DQo+ICsgICAgICAg ICAgICAgICBpZGV2LT5pc3Jfc3RhdHVzID0gcmVhZGIoaWRldi0+YmFzZSArIENPUkVfSTJDX1NU QVRVUyk7DQo+ICsgICAgICAgICAgICAgICByZXQgPSBtY2hwX2NvcmVpMmNfaGFuZGxlX2lzcihp ZGV2KTsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICAvKiBDbGVhciB0aGUgc2kgZmxhZyAq Lw0KPiArICAgICAgIGN0cmwgPSByZWFkYihpZGV2LT5iYXNlICsgQ09SRV9JMkNfQ1RSTCk7DQo+ ICsgICAgICAgY3RybCAmPSB+Q1RSTF9TSTsNCj4gKyAgICAgICB3cml0ZWIoY3RybCwgaWRldi0+ YmFzZSArIENPUkVfSTJDX0NUUkwpOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIHJldDsNCj4gK30N Cj4gKw0KPiArc3RhdGljIGludCBtY2hwX2NvcmVpMmNfeGZlcl9tc2coc3RydWN0IG1jaHBfY29y ZWkyY19kZXYgKmlkZXYsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBpMmNfbXNnICptc2cpDQo+ICt7DQo+ICsgICAgICAgdTggY3RybDsNCj4gKyAgICAgICB1bnNp Z25lZCBsb25nIHRpbWVfbGVmdDsNCj4gKw0KPiArICAgICAgIGlmIChtc2ctPmxlbiA9PSAwKQ0K PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKyAgICAgICBpZGV2LT5h ZGRyID0gaTJjXzhiaXRfYWRkcl9mcm9tX21zZyhtc2cpOw0KPiArICAgICAgIGlkZXYtPm1zZ19s ZW4gPSBtc2ctPmxlbjsNCj4gKyAgICAgICBpZGV2LT5idWYgPSBtc2ctPmJ1ZjsNCj4gKyAgICAg ICBpZGV2LT5tc2dfZXJyID0gMDsNCj4gKyAgICAgICBpZGV2LT5tc2dfcmVhZCA9IChtc2ctPmZs YWdzICYgSTJDX01fUkQpOw0KPiArDQo+ICsgICAgICAgcmVpbml0X2NvbXBsZXRpb24oJmlkZXYt Pm1zZ19jb21wbGV0ZSk7DQo+ICsNCj4gKyAgICAgICBtY2hwX2NvcmVpMmNfY29yZV9lbmFibGUo aWRldik7DQo+ICsNCj4gKyAgICAgICBjdHJsID0gcmVhZGIoaWRldi0+YmFzZSArIENPUkVfSTJD X0NUUkwpOw0KPiArICAgICAgIGN0cmwgfD0gQ1RSTF9TVEE7DQo+ICsgICAgICAgd3JpdGViKGN0 cmwsIGlkZXYtPmJhc2UgKyBDT1JFX0kyQ19DVFJMKTsNCj4gKw0KPiArICAgICAgIHRpbWVfbGVm dCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmaWRldi0+bXNnX2NvbXBsZXRlLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSUNST0NISVBf STJDX1RJTUVPVVQpOw0KPiArICAgICAgIGlmICghdGltZV9sZWZ0KQ0KPiArICAgICAgICAgICAg ICAgcmV0dXJuIC1FVElNRURPVVQ7DQo+ICsNCj4gKyAgICAgICByZXR1cm4gaWRldi0+bXNnX2Vy cjsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBtY2hwX2NvcmVpMmNfeGZlcihzdHJ1Y3QgaTJj X2FkYXB0ZXIgKmFkYXAsIHN0cnVjdCBpMmNfbXNnICptc2dzLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBudW0pDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IG1jaHBfY29yZWky Y19kZXYgKmlkZXYgPSBpMmNfZ2V0X2FkYXBkYXRhKGFkYXApOw0KPiArICAgICAgIGludCBpLCBy ZXQ7DQo+ICsNCj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspIHsNCj4gKyAgICAg ICAgICAgICAgIHJldCA9IG1jaHBfY29yZWkyY194ZmVyX21zZyhpZGV2LCBtc2dzKyspOw0KPiAr ICAgICAgICAgICAgICAgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICByZXR1cm4gbnVtOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgdTMyIG1jaHBfY29yZWkyY19mdW5jKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRh cCkNCj4gK3sNCj4gKyAgICAgICByZXR1cm4gSTJDX0ZVTkNfSTJDIHwgSTJDX0ZVTkNfU01CVVNf RU1VTDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfYWxnb3JpdGhtIG1j aHBfY29yZWkyY19hbGdvID0gew0KPiArICAgICAgIC5tYXN0ZXJfeGZlciA9IG1jaHBfY29yZWky Y194ZmVyLA0KPiArICAgICAgIC5mdW5jdGlvbmFsaXR5ID0gbWNocF9jb3JlaTJjX2Z1bmMsDQo+ ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50IG1jaHBfY29yZWkyY19wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBtY2hwX2NvcmVpMmNfZGV2 ICppZGV2ID0gTlVMTDsNCj4gKyAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnJlczsNCj4gKyAgICAg ICBpbnQgaXJxLCByZXQ7DQo+ICsgICAgICAgdTMyIHZhbDsNCj4gKw0KPiArICAgICAgIGlkZXYg PSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCppZGV2KSwgR0ZQX0tFUk5FTCk7DQo+ ICsgICAgICAgaWYgKCFpZGV2KQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ ICsNCj4gKyAgICAgICBpZGV2LT5iYXNlID0gZGV2bV9wbGF0Zm9ybV9nZXRfYW5kX2lvcmVtYXBf cmVzb3VyY2UocGRldiwgMCwgJnJlcyk7DQo+ICsgICAgICAgaWYgKElTX0VSUihpZGV2LT5iYXNl KSkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGlkZXYtPmJhc2UpOw0KPiArDQo+ ICsgICAgICAgaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsNCj4gKyAgICAgICBpZiAo aXJxIDwgMCkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2JlKCZwZGV2LT5k ZXYsIGlycSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaXNzaW5n IGludGVycnVwdCByZXNvdXJjZVxuIik7DQo+ICsNCj4gKyAgICAgICBpZGV2LT5pMmNfY2xrID0g ZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsIE5VTEwpOw0KPiArICAgICAgIGlmIChJU19FUlIoaWRl di0+aTJjX2NsaykpDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gZGV2X2Vycl9wcm9iZSgmcGRl di0+ZGV2LCBQVFJfRVJSKGlkZXYtPmkyY19jbGspLA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIm1pc3NpbmcgY2xvY2tcbiIpOw0KPiArDQo+ICsgICAgICAgaWRldi0+ ZGV2ID0gJnBkZXYtPmRldjsNCj4gKyAgICAgICBpbml0X2NvbXBsZXRpb24oJmlkZXYtPm1zZ19j b21wbGV0ZSk7DQo+ICsgICAgICAgc3Bpbl9sb2NrX2luaXQoJmlkZXYtPmxvY2spOw0KPiArDQo+ ICsgICAgICAgdmFsID0gZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyKGlkZXYtPmRldiwgImNsb2Nr LWZyZXF1ZW5jeSIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZp ZGV2LT5idXNfY2xrX3JhdGUpOw0KPiArICAgICAgIGlmICh2YWwpIHsNCj4gKyAgICAgICAgICAg ICAgIGRldl9pbmZvKCZwZGV2LT5kZXYsICJkZWZhdWx0IHRvIDEwMGtIelxuIik7DQo+ICsgICAg ICAgICAgICAgICBpZGV2LT5idXNfY2xrX3JhdGUgPSAxMDAwMDA7DQo+ICsgICAgICAgfQ0KPiAr DQo+ICsgICAgICAgaWYgKGlkZXYtPmJ1c19jbGtfcmF0ZSA+IDQwMDAwMCkNCj4gKyAgICAgICAg ICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2JlKCZwZGV2LT5kZXYsIC1FSU5WQUwsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2xvY2stZnJlcXVlbmN5IHRvbyBoaWdo OiAlZFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZXYtPmJ1 c19jbGtfcmF0ZSk7DQo+ICsNCj4gKyAgICAgICByZXQgPSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2 LT5kZXYsIGlycSwgbWNocF9jb3JlaTJjX2lzciwgSVJRRl9TSEFSRUQsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwZGV2LT5uYW1lLCBpZGV2KTsNCj4gKyAgICAgICBpZiAocmV0 KQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIGRldl9lcnJfcHJvYmUoJnBkZXYtPmRldiwgcmV0 LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBjbGFp bSBpcnEgJWRcbiIsIGlycSk7DQo+ICsNCj4gKyAgICAgICByZXQgPSBjbGtfcHJlcGFyZV9lbmFi bGUoaWRldi0+aTJjX2Nsayk7DQo+ICsgICAgICAgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAg IHJldHVybiBkZXZfZXJyX3Byb2JlKCZwZGV2LT5kZXYsIHJldCwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZW5hYmxlIGNsb2NrXG4iKTsNCj4gKw0K PiArICAgICAgIHJldCA9IG1jaHBfY29yZWkyY19pbml0KGlkZXYpOw0KPiArICAgICAgIGlmIChy ZXQpIHsNCj4gKyAgICAgICAgICAgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShpZGV2LT5pMmNf Y2xrKTsNCj4gKyAgICAgICAgICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2JlKCZwZGV2LT5kZXYs IHJldCwgImZhaWxlZCB0byBwcm9ncmFtIGNsb2NrIGRpdmlkZXJcbiIpOw0KPiArICAgICAgIH0N Cj4gKw0KPiArICAgICAgIGkyY19zZXRfYWRhcGRhdGEoJmlkZXYtPmFkYXB0ZXIsIGlkZXYpOw0K PiArICAgICAgIHNucHJpbnRmKGlkZXYtPmFkYXB0ZXIubmFtZSwgc2l6ZW9mKGlkZXYtPmFkYXB0 ZXIubmFtZSksDQo+ICsgICAgICAgICAgICAgICAgIk1pY3JvY2hpcCBJMkMgaHcgYnVzIik7DQo+ ICsgICAgICAgaWRldi0+YWRhcHRlci5vd25lciA9IFRISVNfTU9EVUxFOw0KPiArICAgICAgIGlk ZXYtPmFkYXB0ZXIuYWxnbyA9ICZtY2hwX2NvcmVpMmNfYWxnbzsNCj4gKyAgICAgICBpZGV2LT5h ZGFwdGVyLmRldi5wYXJlbnQgPSAmcGRldi0+ZGV2Ow0KPiArICAgICAgIGlkZXYtPmFkYXB0ZXIu ZGV2Lm9mX25vZGUgPSBwZGV2LT5kZXYub2Zfbm9kZTsNCj4gKw0KPiArICAgICAgIHBsYXRmb3Jt X3NldF9kcnZkYXRhKHBkZXYsIGlkZXYpOw0KPiArDQo+ICsgICAgICAgcmV0ID0gaTJjX2FkZF9h ZGFwdGVyKCZpZGV2LT5hZGFwdGVyKTsNCj4gKyAgICAgICBpZiAocmV0KSB7DQo+ICsgICAgICAg ICAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUoaWRldi0+aTJjX2Nsayk7DQo+ICsgICAgICAg ICAgICAgICByZXR1cm4gcmV0Ow0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIGRldl9pbmZv KCZwZGV2LT5kZXYsICJNaWNyb2NoaXAgSTJDIFByb2JlIENvbXBsZXRlXG4iKTsNCj4gKw0KPiAr ICAgICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IG1jaHBfY29yZWkyY19y ZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gK3sNCj4gKyAgICAgICBzdHJ1 Y3QgbWNocF9jb3JlaTJjX2RldiAqaWRldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOw0K PiArDQo+ICsgICAgICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGlkZXYtPmkyY19jbGspOw0KPiAr ICAgICAgIGkyY19kZWxfYWRhcHRlcigmaWRldi0+YWRhcHRlcik7DQo+ICsNCj4gKyAgICAgICBy ZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQg bWNocF9jb3JlaTJjX29mX21hdGNoW10gPSB7DQo+ICsgICAgICAgeyAuY29tcGF0aWJsZSA9ICJt aWNyb2NoaXAsbXBmcy1pMmMiIH0sDQo+ICsgICAgICAgeyAuY29tcGF0aWJsZSA9ICJtaWNyb2No aXAsY29yZWkyYy1ydGwtdjciIH0sDQo+ICsgICAgICAge30sDQo+ICt9Ow0KPiArTU9EVUxFX0RF VklDRV9UQUJMRShvZiwgbWNocF9jb3JlaTJjX29mX21hdGNoKTsNCj4gKw0KPiArc3RhdGljIHN0 cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWNocF9jb3JlaTJjX2RyaXZlciA9IHsNCj4gKyAgICAgICAu cHJvYmUgPSBtY2hwX2NvcmVpMmNfcHJvYmUsDQo+ICsgICAgICAgLnJlbW92ZSA9IG1jaHBfY29y ZWkyY19yZW1vdmUsDQo+ICsgICAgICAgLmRyaXZlciA9IHsNCj4gKyAgICAgICAgICAgICAgIC5u YW1lID0gIm1pY3JvY2hpcC1jb3JlaTJjIiwNCj4gKyAgICAgICAgICAgICAgIC5vZl9tYXRjaF90 YWJsZSA9IG1jaHBfY29yZWkyY19vZl9tYXRjaCwNCj4gKyAgICAgICB9LA0KPiArfTsNCj4gKw0K PiArbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtY2hwX2NvcmVpMmNfZHJpdmVyKTsNCj4gKw0KPiAr TU9EVUxFX0RFU0NSSVBUSU9OKCJNaWNyb2NoaXAgQ29yZUkyQyBidXMgZHJpdmVyIik7DQo+ICtN T0RVTEVfQVVUSE9SKCJEYWlyZSBNY05hbWFyYSA8ZGFpcmUubWNuYW1hcmFAbWljcm9jaGlwLmNv bT4iKTsNCj4gK01PRFVMRV9BVVRIT1IoIkNvbm9yIERvb2xleSA8Y29ub3IuZG9vbGV5QG1pY3Jv Y2hpcC5jb20+Iik7DQo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7DQo+IC0tDQo+IDIuMzUu MQ0KPiANCj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fDQo+IGxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdA0KPiBsaW51eC1yaXNjdkBsaXN0cy5pbmZy YWRlYWQub3JnDQo+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v bGludXgtcmlzY3YNCg0K