From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 62FE6A034C; Mon, 8 Aug 2022 13:56:30 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 139314067B; Mon, 8 Aug 2022 13:56:30 +0200 (CEST) Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2100.outbound.protection.outlook.com [40.107.95.100]) by mails.dpdk.org (Postfix) with ESMTP id C43F84014F for ; Mon, 8 Aug 2022 13:56:26 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Gc8KvMv6052mrWzqARZ2blNJ4loOdrkVdEMrdnG9Qzoe8SOruzBkIRgvKNHmNRtQzX3CHPoIHGiGopeG3C85IOV1t3xw6DnNcvtVAOMeO8Nx8Th9THCi23NQAf4mKsImQjW/D4cVAzeTt+HyJXpN8qgl6Xs/ZDaYIktTkLe+XKeHeKvl8A7A2zURxJdjh894ydlim5VMRJ3hRIXLpPr1J1O5i5ITVCppCev3vYfsyk2sFKXE34RHVNbL4wVPdTQG5LsuAy/Md4giRSIJz6dtaojNw+8g5XbQ/qgAfPjdSFoJbCadduZIpTB45pcBdrYU32Tct3qWVQZcTG8HX8ltsQ== 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=KMKEbvEBr9eTGoBk//jsjUCgynZ1n3UGpNBCSKFOQww=; b=QqK0DzQdwuk8rIClQxe8vFuNlpJFDjk/mtKfGjTZeNCw1MjhMv9GT3JYK7WGv+3ZLebBRGcb7kk1g7AFQ7EA660D9HQv2sP6ZXRWSkNV05+7J/fK1A4t2EPU07/Jkn3wIjqVtUmZgiAyGWYn4w+7tJOM78XQyqhYw6jYYr/6C/l8k9Z7Jg2BK4Oin4D34r05jMFJk0GrAJyXgA29P2B7zS/eRjYPilEQ8ysAVujK4Xv0ke22e0oBzCZB8WigBl3W6mqpZTIxzhcxdZGBuptC3p8DKL+G6pgX4Kg4CuiDI4fvxZkaM6mCms0NkuaGUBvqYYdJrfzAXD85d9L+EyAoHw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KMKEbvEBr9eTGoBk//jsjUCgynZ1n3UGpNBCSKFOQww=; b=gECOmnuEym+5FB4bwrgP80iNTSjBzBNu2eekqa0QfqIisAP3TdbDuxxKiOqpRhoZbTpANRLLmX8eU0SoSYi7zz6yu+IcIXeM8rMr1ZxqMX+XABjJOpE8/8d5ZS3JaGEHRqGBcU2rnci12MNmsMQcureFgQb8wRbtSoeEmtkvLOI= Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by BY5PR13MB4454.namprd13.prod.outlook.com (2603:10b6:a03:1db::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5525.8; Mon, 8 Aug 2022 11:56:24 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::402d:6abc:83a8:2431]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::402d:6abc:83a8:2431%5]) with mapi id 15.20.5525.009; Mon, 8 Aug 2022 11:56:24 +0000 From: Chaoyong He To: Andrew Rybchenko , "dev@dpdk.org" CC: Niklas Soderlund Subject: RE: [PATCH v5 10/12] net/nfp: add flower representor framework Thread-Topic: [PATCH v5 10/12] net/nfp: add flower representor framework Thread-Index: AQHYqJVBndaiaZazqkeSKnLAQS0fna2gXLqAgASHNKA= Date: Mon, 8 Aug 2022 11:56:24 +0000 Message-ID: References: <1659681155-16525-1-git-send-email-chaoyong.he@corigine.com> <1659681155-16525-11-git-send-email-chaoyong.he@corigine.com> <774388da-8f93-ac8a-60a9-9f4372dcc293@oktetlabs.ru> In-Reply-To: <774388da-8f93-ac8a-60a9-9f4372dcc293@oktetlabs.ru> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0448b03b-885a-45d1-7770-08da7935047d x-ms-traffictypediagnostic: BY5PR13MB4454:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: umwEgsBpE8DoRRc1Wnfb0gBh3zkLbaEz+30rTyDPFkljy5aE++Zh/6iyqVfSjGYjV7NR7dn20InZiQxddGAsqelcre8Jb0dh6gYIODMHih2yn5MsTS88zE3mDdoR3ptgO94PuRunSBQwkp+O3/p9ffrp6KV0YT4h6PDF4qSLCs2R7XSxrhytT5l5aGWy9+nYKK0atq+esLmTHQyxYPvyWoStzhlq4LHnsLatMxnsjVdvq23a2rba/FCzJs3wWiM9YpSd72sRbxbf/Wdth9EMsscq6r7fdCgvVyWXIrxtZRtwpAKqiDtFxQLU8qzG9CO6ZguAGAVjGTe4rOw6t3tHNtGmEGYuBfpggIYo1ANpcRIEIFHGwXf56DgeDyfINS2uAW9sv2Td/9eCQrsGonJ1ervz212BUvyaAzpf+6lNvBD1j/xFcjquIU28G7+qzTjLgHPXXhMW6JpMhQzw0x1RWTePWw/C9D7Kcbda4gBJ8uhRzuqgW1HQL72QtrGk8eIGI/VWsA0vvKdP8XSrzfETBUpahjjbAq39DZAnQiJVI3HoNBU+qiTigDP9kKwQ6NMowz0jdIRICWx3n7z3B9f5551M8SSdE6xBwFsyZfFglmX/vSCobjgPY+oIaNdcKTsYUqqBPaPWK2aS6/ADFArtWulYyGqgjSxdOF6insDgs2TWmd4lq3BTmJndiypdFAxYdPU2rlaKxl7rXnnevPMkUnaHMBFQh4ZHfEVCkLrl/4CkAiDQ5i4sFZy8lLx+IkNLbMeTnGvIugtKEVd2Wwide7uB/8AQnayLD934NMAUqere4YT9eZMMIcXaYAgU1nkFag4OcIa7HufTNcxcz8Ei0tGoS3SfP1BQxoiSf4IpFzg= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(39830400003)(396003)(136003)(366004)(346002)(376002)(66476007)(66446008)(38100700002)(64756008)(66556008)(44832011)(122000001)(71200400001)(30864003)(66946007)(478600001)(8676002)(38070700005)(8936002)(55016003)(52536014)(5660300002)(110136005)(86362001)(4326008)(76116006)(33656002)(316002)(9686003)(26005)(83380400001)(186003)(107886003)(66574015)(6506007)(41300700001)(53546011)(2906002)(7696005)(559001)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WC83V01sYUdBTHZiRWM0d0sxNWc2em1rU1JwVlI0UnptekpnUGRjSkFEbCth?= =?utf-8?B?UWdGSnZrMTNuZkpaa0xKNEExTklEbk45V1NhYmpQRTZRbSsvOHNmbWFhaHpG?= =?utf-8?B?QklVU1JHZGtqOEtCMlNOU01RMStEWFlwamU0QVROa2wxcG5PY3hvR25MYng3?= =?utf-8?B?UDNBNWRDcGpwMGFzcFQzQ1NDSHBtOXFBcXUzOEdVN3MvcmVjUHkvOWVTT28r?= =?utf-8?B?c1Mrc2xWUy9oMHFuZUFFdGV5bUh0L1c3VmxKMStsNFZXcGZta3BxU3RHUE5K?= =?utf-8?B?Vk5qTG8vV1JBazkxbHYrMkZPcnFHdUJ1cThHVmFYUGJ3K3ZValMzTFJGcnV3?= =?utf-8?B?TS9rMWNjZTErS3dLUmVCb2xldlJuSFgvaG9DWFg2OGFrYm0yYUNvQnFUQ2dz?= =?utf-8?B?MnpkMlhwUElXc0xVUUtZbXBSbHhJUkJNN3RrenpLVnhXdjJSaVU1RTRvWTRo?= =?utf-8?B?T0dYUG03YXJmV3F5QzA0cXBSKzl0OG1ud1VIbU9QdnR3Sk1zZDduK0FHQjBo?= =?utf-8?B?RWE5L0tVcGZKaTJ0MUlZZzFLMk4xWlZTVWRDeHR3UERZaDhVbFY4ZERwTTBW?= =?utf-8?B?UGxBY2E4UnE3SlljTStpU1FoeTBzOExGUjhLOXEvVStWK1ZCUDNkNFNpTWxN?= =?utf-8?B?ZmFSdW1kYll5MTRnOVkzRU5BOVY3WDlKOVRMVFUvV0RBUGo5aUFBV0FFTEgr?= =?utf-8?B?dXRZcnl0MG1kOUwveXZnMUlXWVdNUHpKRXVLNkFuMVd1Q0FlTGhtanNkalJi?= =?utf-8?B?VnRSSVBvdzVZc3ExZTBvU0h3eHh4L2JRejFwRmhrUnRvUWdMdVZvVm1WTWRW?= =?utf-8?B?OHgzbWw3aGRVMjdTUU8yNGZkVW5TcXIxNHdLdG8rRGhsaVl6bjdVK0o5WXZy?= =?utf-8?B?UFM0WVhwTDN4NFFUVC8zeGo5TUVESHM1WmJlanY3THFpYkV3dmcrMzF4aHFs?= =?utf-8?B?NGJKZXlFTHF6Vk9uM3JUVFo3VXdRSGZPU3NpTkpKYUhLQmNJOE5MOGtMRWJ4?= =?utf-8?B?QzZSMFRvdWVaYnlWMHZ0S2RNZXRXWVNWRVAwZUZlckFzNmNtbmpoZFExYlRj?= =?utf-8?B?Zkxrc3pBQXkwQ3ErNFIwamMwT0U2MW51RWRyRURWQU94Z2xzeHYrT1ByNmh2?= =?utf-8?B?WHpaT09QMGFYSWRwQy9vV2s2YVdrbkZxVW5lK2NYRWVXT3R6KzFTMmJBaGwx?= =?utf-8?B?RmlmZ0N6V1p6aCtSbSs3RGErRzRRMy9hZHppS0dnNDB6NXlhT3JWRXNtanpm?= =?utf-8?B?cER2Qm5lTzMxamVqayt1KytsUnljai8zMWYwR3VTQ2EvZWpRMG16ZTNKYVF1?= =?utf-8?B?cFVrb09vTGE5a2ZCY0hTejB1L3IyNzFUcVdlb2pXMGhraVlHUXMvRW1GNStj?= =?utf-8?B?WXQvdVVYVzNqa1FFdjBXTG13SjNRQnNuTXpjWVl6SDJLcEJ3OFZIUFltcU1U?= =?utf-8?B?ODU4ZGE1dUMwYVNIVDN5U1BaUGQ4dElCeUNKSDE0M0lNQjRoUVVxdUtRb1Nl?= =?utf-8?B?TzdJMWd4ZC83eWVVTnRvSFdQbytiU0VoNXFSWnJ5SkExRmxDM1JGdWlvZE52?= =?utf-8?B?UWtoZ2JDZTBERkJNUzYyazloa2oxb1dydENtZVRNYTg0SGk2eGMydUdlcXYz?= =?utf-8?B?VnA4TEdkRUlycU5UeDZkdlhiMUJBUGlwWFdMa080R3BiVUpZNHdrcUZtWjR6?= =?utf-8?B?cHlPbnVVWS9mTVY4Qzd4WVdjQ2dOcWwxdThZWkh5VGtUeTdQcFE1T1dpOTJm?= =?utf-8?B?eTM3ekJEYm8xcVdNK211UTZrVXltSTEzNUtIUkg0K0kvc2s3b3l6RkVhU0xZ?= =?utf-8?B?dVRZRHdaeGxBY3NKa2hZRjVtVXM5Ti9RUEZWS1Q2QzMzdDlRL1gzWFE2eVl1?= =?utf-8?B?c1o5cS9lbGpFc3poSTBCK2NkL1RhNEtTdXp3akRWS1pPVW93bm45Q3J5c3lp?= =?utf-8?B?YUV1bEtQRnpLOTVGUWZGTlNrVnM4ZG1YdXdFSDk1ZzhEd3pWdnc5K0pGbVQv?= =?utf-8?B?blhJbzNqck03RG9kK28yVGNZSHVkaXRrME1vMGxTZEFmUlcyOXRuSGNVOS9I?= =?utf-8?B?R0c2QzdQUVNQc1NEY2V3SWhUa0daRFJpczdydVBnTEEwcjVTQnB5R3IvSXJV?= =?utf-8?Q?M00t09oMa5TwfJorKVDD1FbJt?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0448b03b-885a-45d1-7770-08da7935047d X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Aug 2022 11:56:24.1749 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Jcn34zqpxJQcCGUQA+PJNHehQdm/5ffYwMMHlhs1GcelbzD+Xmni91uFSuWRbxQfa8EZ8f49XkP1f/VIL6qI8oc7IsXfExyii0BGpOWJQ8M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR13MB4454 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org PiBPbiA4LzUvMjIgMDk6MzIsIENoYW95b25nIEhlIHdyb3RlOg0KPiA+IFRoaXMgY29tbWl0IGFk ZHMgdGhlIGZyYW1ld29yayB0byBzdXBwb3J0IGZsb3dlciByZXByZXNlbnRvcnMuDQo+IA0KPiAi VGhpcyBjb21taXQgYWRkcyIgLT4gIkFkZCINCj4gDQo+ID4gVGhlIG51bWJlciBvZiBWRiByZXBy ZXNlbnRvcnMgYXJlIHBhcnNlZCBmcm9tIHRoZSBjb21tYW5kIGxpbmUuIEZvcg0KPiA+IHBoeXNp Y2FsIHBvcnQgcmVwcmVzZW50b3JzIHRoZSBjdXJyZW50IGxvZ2ljIGFpbXMgdG8gY3JlYXRlIGEN Cj4gPiByZXByZXNlbnRvciBmb3IgZWFjaCBwaHlzaWNhbCBwb3J0IHByZXNlbnQgb24gdGhlIGhh cmR3YXJlLg0KPiA+DQo+ID4gQSBldGhfZGV2IGlzIGNyZWF0ZWQgZm9yIGVhY2ggcGh5cG9ydCBh bmQgVkYsIGFuZCBmbG93ZXIgZmlybXdhcmUNCj4gDQo+IEEgLT4gQW4sIHBoeXBvcnQgLT4gcGh5 c2ljYWwgcG9ydA0KPiANCj4gPiByZXF1aXJlcyBhIE1BQyByZXByIGNtc2cgdG8gYmUgdHJhbnNt aXR0ZWQgdG8gZmlybXdhcmUgd2l0aCBpbmZvIGFib3V0DQo+ID4gdGhlIG51bWJlciBvZiBwaHlz aWNhbCBwb3J0cyBjb25maWd1cmVkLg0KPiA+DQo+ID4gUmVpZnkgbWVzc2FnZXMgYXJlIHNlbnQg dG8gaGFyZHdhcmUgZm9yIGVhY2ggcGh5cG9ydCByZXByZXNlbnRvci4NCj4gPiBBIHJ0ZV9yaW5n IGlzIGFsc28gY3JlYXRlZCBwZXIgcmVwcmVzZW50b3Igc28gdGhhdCB0cmFmZmljIGNhbiBiZQ0K PiANCj4gQSAtPiBBbg0KPiANCj4gPiBwdXNoZWQgYW5kIHB1bGxlZCB0byB0aGlzIGludGVyZmFj ZS4NCj4gPg0KPiA+IFRvIHVwIGFuZCBkb3duIHRoZSByZWFsIGRldmljZSByZXByZXNlbnRlZCBi eSBhIGZsb3dlciByZXByZXNlbnRvcg0KPiA+IHBvcnQgYSBwb3J0IG1vZCBtZXNzYWdlIGlzIHVz ZWQgdG8gY29udmV5IHRoYXQgaW5mbyB0byB0aGUgZmlybXdhcmUuDQo+ID4gVGhpcyBtZXNzYWdl IHdpbGwgYmUgdXNlZCBpbiB0aGUgZGV2X29wcyBjYWxsYmFja3Mgb2YgZmxvd2VyIHJlcHJlc2Vu dG9ycy4NCj4gPg0KPiA+IEVhY2ggY21zZyBnZW5lcmF0ZWQgYnkgdGhlIGRyaXZlciBpcyBwcmVw ZW5kZWQgd2l0aCBhIGNtc2cgaGVhZGVyLg0KPiA+IFRoaXMgY29tbWl0IGFsc28gYWRkcyB0aGUg bG9naWMgdG8gZmlsbCBpbiB0aGUgaGVhZGVyIG9mIGNtc2dzLg0KPiA+DQo+ID4gVGhpcyBjb21t aXQgYWxzbyBhZGRzIHRoZSBSeCBhbmQgVHggcGF0aCBmb3IgZmxvd2VyIHJlcHJlc2VudG9ycy4g Rm9yDQo+IA0KPiAiVGhpcyBjb21taXQgYWxzbyBhZGRzIiAtPiAiQWxzbyBhZGQiDQo+IA0KPiA+ IFJ4IHBhY2tldHMgYXJlIGRlcXVldWVkIGZyb20gdGhlIHJlcHJlc2VudG9yIHJpbmcgYW5kIHBh c3NlZCB0byB0aGUNCj4gPiBldGhfZGV2LiBGb3IgVHggdGhlIGZpcnN0IHF1ZXVlIG9mIHRoZSBQ RiB2TklDIGlzIHVzZWQuIE1ldGFkYXRhIGFib3V0DQo+ID4gdGhlIHJlcHJlc2VudG9yIGlzIGFk ZGVkIGJlZm9yZSB0aGUgcGFja2V0IGlzIHNlbnQgZG93biB0byBmaXJtd2FyZS4NCj4gPg0KPiA+ IFNpZ25lZC1vZmYtYnk6IENoYW95b25nIEhlIDxjaGFveW9uZy5oZUBjb3JpZ2luZS5jb20+DQo+ ID4gUmV2aWV3ZWQtYnk6IE5pa2xhcyBTw7ZkZXJsdW5kIDxuaWtsYXMuc29kZXJsdW5kQGNvcmln aW5lLmNvbT4NCj4gPiAtLS0NCj4gPiAgIGRyaXZlcnMvbmV0L25mcC9mbG93ZXIvbmZwX2Zsb3dl ci5jICAgICAgICAgICAgIHwgIDU5ICsrKw0KPiA+ICAgZHJpdmVycy9uZXQvbmZwL2Zsb3dlci9u ZnBfZmxvd2VyLmggICAgICAgICAgICAgfCAgMTggKw0KPiA+ICAgZHJpdmVycy9uZXQvbmZwL2Zs b3dlci9uZnBfZmxvd2VyX2Ntc2cuYyAgICAgICAgfCAxODYgKysrKysrKysrDQo+ID4gICBkcml2 ZXJzL25ldC9uZnAvZmxvd2VyL25mcF9mbG93ZXJfY21zZy5oICAgICAgICB8IDE3MyArKysrKysr Kw0KPiA+ICAgZHJpdmVycy9uZXQvbmZwL2Zsb3dlci9uZnBfZmxvd2VyX3JlcHJlc2VudG9yLmMg fCA1MDgNCj4gKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gICBkcml2ZXJzL25ldC9uZnAv Zmxvd2VyL25mcF9mbG93ZXJfcmVwcmVzZW50b3IuaCB8ICAzOSArKw0KPiA+ICAgZHJpdmVycy9u ZXQvbmZwL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKw0KPiA+ICAgZHJp dmVycy9uZXQvbmZwL25mcGNvcmUvbmZwX2NwcF9wY2llX29wcy5jICAgICAgfCAgMzEgKy0NCj4g PiAgIDggZmlsZXMgY2hhbmdlZCwgMTAwNCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkN Cj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9uZnAvZmxvd2VyL25mcF9mbG93 ZXJfY21zZy5jDQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvbmZwL2Zsb3dl ci9uZnBfZmxvd2VyX2Ntc2cuaA0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0 L25mcC9mbG93ZXIvbmZwX2Zsb3dlcl9yZXByZXNlbnRvci5jDQo+ID4gICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9uZXQvbmZwL2Zsb3dlci9uZnBfZmxvd2VyX3JlcHJlc2VudG9yLmgNCj4g Pg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZnAvZmxvd2VyL25mcF9mbG93ZXIuYw0K PiA+IGIvZHJpdmVycy9uZXQvbmZwL2Zsb3dlci9uZnBfZmxvd2VyLmMNCj4gPiBpbmRleCA1ZTlj NGVmLi5kNzc3MmQ2IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L25mcC9mbG93ZXIvbmZw X2Zsb3dlci5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvbmZwL2Zsb3dlci9uZnBfZmxvd2VyLmMN Cj4gPiBAQCAtMjIsNiArMjIsNyBAQA0KPiA+ICAgI2luY2x1ZGUgIm5mcF9mbG93ZXIuaCINCj4g PiAgICNpbmNsdWRlICJuZnBfZmxvd2VyX292c19jb21wYXQuaCINCj4gPiAgICNpbmNsdWRlICJu ZnBfZmxvd2VyX2N0cmwuaCINCj4gPiArI2luY2x1ZGUgIm5mcF9mbG93ZXJfcmVwcmVzZW50b3Iu aCINCj4gPg0KPiA+ICAgI2RlZmluZSBNQVhfUEtUX0JVUlNUIDMyDQo+ID4gICAjZGVmaW5lIE1F TVBPT0xfQ0FDSEVfU0laRSA1MTINCj4gPiBAQCAtOTI3LDggKzkyOCwxMyBAQA0KPiA+ICAgCXVu c2lnbmVkIGludCBudW1hX25vZGU7DQo+ID4gICAJc3RydWN0IG5mcF9uZXRfaHcgKnBmX2h3Ow0K PiA+ICAgCXN0cnVjdCBuZnBfbmV0X2h3ICpjdHJsX2h3Ow0KPiA+ICsJc3RydWN0IHJ0ZV9wY2lf ZGV2aWNlICpwY2lfZGV2Ow0KPiA+ICAgCXN0cnVjdCBuZnBfYXBwX2Zsb3dlciAqYXBwX2Zsb3dl cjsNCj4gPiArCXN0cnVjdCBydGVfZXRoX2RldmFyZ3MgZXRoX2RhID0gew0KPiA+ICsJCS5uYl9y ZXByZXNlbnRvcl9wb3J0cyA9IDANCj4gPiArCX07DQo+ID4NCj4gPiArCXBjaV9kZXYgPSBwZl9k ZXYtPnBjaV9kZXY7DQo+ID4gICAJbnVtYV9ub2RlID0gcnRlX3NvY2tldF9pZCgpOw0KPiA+DQo+ ID4gICAJLyogQWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgRmxvd2VyIGFwcCAqLyBAQCAtMTAyMSw2 ICsxMDI3LDU5IEBADQo+ID4gICAJCWdvdG8gY3RybF92bmljX2NsZWFudXA7DQo+ID4gICAJfQ0K PiA+DQo+ID4gKwkvKiBBbGxvY2F0ZSBhIHN3aXRjaCBkb21haW4gZm9yIHRoZSBmbG93ZXIgYXBw ICovDQo+ID4gKwlpZiAoYXBwX2Zsb3dlci0+c3dpdGNoX2RvbWFpbl9pZCA9PQ0KPiBSVEVfRVRI X0RFVl9TV0lUQ0hfRE9NQUlOX0lEX0lOVkFMSUQgJiYNCj4gPiArCQkJcnRlX2V0aF9zd2l0Y2hf ZG9tYWluX2FsbG9jKCZhcHBfZmxvd2VyLQ0KPiA+c3dpdGNoX2RvbWFpbl9pZCkpIHsNCj4gPiAr CQlQTURfSU5JVF9MT0coV0FSTklORywNCj4gPiArCQkJCSJmYWlsZWQgdG8gYWxsb2NhdGUgc3dp dGNoIGRvbWFpbiBmb3IgZGV2aWNlIik7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyogTm93IHBh cnNlIFBDSSBkZXZpY2UgYXJncyBwYXNzZWQgZm9yIHJlcHJlc2VudG9yIGluZm8gKi8NCj4gPiAr CWlmIChwY2lfZGV2LT5kZXZpY2UuZGV2YXJncykgew0KPiANCj4gQ29tcGFyZSB2cyBOVUxMDQo+ IA0KPiA+ICsJCXJldCA9IHJ0ZV9ldGhfZGV2YXJnc19wYXJzZShwY2lfZGV2LT5kZXZpY2UuZGV2 YXJncy0+YXJncywNCj4gPiArCQkJCSZldGhfZGEpOw0KPiA+ICsJCWlmIChyZXQpIHsNCj4gDQo+ IENvbXBhcmUgdnMgMA0KPiANCj4gPiArCQkJUE1EX0lOSVRfTE9HKEVSUiwgImRldmFyZyBwYXJz ZSBmYWlsZWQiKTsNCj4gPiArCQkJZ290byBjdHJsX3ZuaWNfY2xlYW51cDsNCj4gPiArCQl9DQo+ ID4gKwl9DQo+ID4gKw0KPiANCj4gSSBzZWUgbm8gcmVwcmVzZW50b3JfaW5mb19nZXQgaW1wbGVt ZW50YXRpb24uIEhvdyBpcyBhcHBsaWNhdGlvbiBzdXBwb3JzZWQNCj4gdG8gZmluZCBvdXQgd2hp Y2ggcmVwcmVzZW50b3JzIGNhbiBiZSBpbnN0YW50aWF0ZWQ/DQo+IA0KPiA+ICsJaWYgKGV0aF9k YS5uYl9yZXByZXNlbnRvcl9wb3J0cyA9PSAwKSB7DQo+ID4gKwkJUE1EX0lOSVRfTE9HKERFQlVH LCAiTm8gcmVwcmVzZW50b3IgcG9ydCBuZWVkIHRvDQo+IGNyZWF0ZS4iKTsNCj4gPiArCQlyZXQg PSAwOw0KPiA+ICsJCWdvdG8gZG9uZTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBUaGVyZSBh bHdheXMgZXhpc3QgcGh5IHJlcHIgKi8NCj4gPiArCWlmIChldGhfZGEubmJfcmVwcmVzZW50b3Jf cG9ydHMgPCBhcHBfZmxvd2VyLT5uZnBfZXRoX3RhYmxlLQ0KPiA+Y291bnQpDQo+ID4gK3sNCj4g DQo+IEl0IGlzIHJlYWxseSBzdHJhbmdlIGNoZWNrLiBGaXJzdCBvZiBhbGwgSSdkIHNheSB0aGF0 IGl0IGlzIHZlcnkgaW5jb252aW5pZW50IHRvDQo+IG9ibGlkZ2UgdXNlciB0byBjcmVhdGUgc29t ZSByZXByZXNlbnRvcnMuDQo+IFNlY29uZCwgd2hvIHNhaWQgdGhhdCB0aGVzZSByZXByZXNlbnRv cnMgYXJlIHBoeXNpY2FsIHBvcnQgcmVwcmVzZW50b3JzPw0KPiBNYXkgYmUgbnVtYmVyIG9mIHJl cHJlc2VudG9ycyBpcyBPSywgYnV0IGl0IGlzIGRpZmZlcmVudCByZXByZXNlbnRvcnMuLi4NCj4g DQo+ID4gKwkJUE1EX0lOSVRfTE9HKERFQlVHLCAiU2hvdWxkIGFsc28gY3JlYXRlIHBoeSByZXBy ZXNlbnRvcg0KPiBwb3J0LiIpOw0KPiA+ICsJCXJldCA9IC1FUkFOR0U7DQo+ID4gKwkJZ290byBj dHJsX3ZuaWNfY2xlYW51cDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBPbmx5IHN1cHBvcnQg VkYgcmVwcmVzZW50b3IgY3JlYXRpb24gdmlhIHRoZSBjb21tYW5kIGxpbmUgKi8NCj4gPiArCWlm IChldGhfZGEudHlwZSAhPSBSVEVfRVRIX1JFUFJFU0VOVE9SX1ZGKSB7DQo+IA0KPiBJJ20gY29u ZnVzZWQuIEFib3ZlIHlvdSdyZSB0YWxraW5nIGFib3V0IHBoeSByZXByZXNlbnRvcnMsIGJ1dCBo ZXJlIFZGcy4uLg0KDQpJdCdzIGEgbGl0dGxlIGNvbXBsaWNhdGVkIHRvIGV4cGxhaW4gYWJvdXQg aGVyZSBhbmQgdGhlIHByb2JsZW0gYWJvdmU6DQpPdXIgbmZwIGNhcmQgaGFzIHR3byBwaHlzaWNh bCBwb3J0cywgYnV0IG9ubHkgd2l0aCBvbmUgUEYuIEl0IGFsc28gc3VwcG9ydHMgVkZzLg0KVG8g b2ZmbG9hZCBydGVfZmxvdyB3aXRoIG92cy1kcGRrLCB3aGF0IHdlIHJlYWxseSBuZWVkIGFyZSB0 aGUgcmVwcmVzZW50b3Igb2YNCnBoeXNpY2FsIHBvcnQgYW5kIFZGLg0KDQpCdXQgdGhlIHByb2Js ZW0gaXMsIHRoZSByZXByZXNlbnRvciBvZiBwaHlzaWNhbCBwb3J0IGhhcyBub3Qgc3VwcG9ydGVk IGJ5IERQREsNCmZvciBub3cuDQpTbywgd2UgZG8gYSBsaXR0bGUgdHJpY2sgaGVyZToNCjEuIElm IHRoZSB1c2VyIHdhbnRzIHRvIGNyZWF0ZSBhbnkgcmVwcmVzZW50b3Igb2YgVkYsIHR3byByZXBy ZXNlbnRvcnMgb2YgcGh5c2ljYWwgcG9ydA0Kc2hvdWxkIGJlIGNyZWF0ZWQgYWxzby4NCjIuIFdl IHByZXRlbmQgdGhlIHR5cGUgb2YgdGhlc2UgdHdvIHJlcHJlc2VudG9ycyBvZiBwaHlzaWNhbCBw b3J0IGFyZSAnUlRFX0VUSF9SRVBSRVNFTlRPUl9WRicuDQoNClRoaXMgaXMgdGhlIHJlYXNvbiBm b3IgdGhlc2UgJ3N0cmFuZ2UnIGxvZ2ljcywgYW5kIHdlIHdpbGwgaW1tZWRpYXRlbHkgdXBkYXRl IGl0IG9uY2UgRFBESyBzdXBwb3J0DQp0aGUgcmVwcmVzZW50b3Igb2YgcGh5c2ljYWwgcG9ydC4N Cg0KPiANCj4gPiArCQlQTURfRFJWX0xPRyhFUlIsICJ1bnN1cHBvcnRlZCByZXByZXNlbnRvciB0 eXBlOiAlc1xuIiwNCj4gDQo+IFRoZSBtYWNybyBhbHJlYWR5IGFkZHMgXG4uIFNvLCB5b3UgZG9u J3QgbmVlZCBpdCBoZXJlLg0KPiANCj4gPiArCQkJCXBjaV9kZXYtPmRldmljZS5kZXZhcmdzLT5h cmdzKTsNCj4gPiArCQlyZXQgPSAtRU5PVFNVUDsNCj4gPiArCQlnb3RvIGN0cmxfdm5pY19jbGVh bnVwOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIEZpbGwgaW4gZmxvd2VyIGFwcCB3aXRoIHJl cHIgY291bnRzICovDQo+ID4gKwlhcHBfZmxvd2VyLT5udW1fcGh5cG9ydF9yZXBycyA9ICh1aW50 OF90KWFwcF9mbG93ZXItDQo+ID5uZnBfZXRoX3RhYmxlLT5jb3VudDsNCj4gPiArCWFwcF9mbG93 ZXItPm51bV92Zl9yZXBycyA9IGV0aF9kYS5uYl9yZXByZXNlbnRvcl9wb3J0cyAtDQo+ID4gKwkJ CWFwcF9mbG93ZXItPm5mcF9ldGhfdGFibGUtPmNvdW50Ow0KPiA+ICsNCj4gPiArCVBNRF9JTklU X0xPRyhJTkZPLCAiJWQgbnVtYmVyIG9mIFZGIHJlcHJzIiwgYXBwX2Zsb3dlci0NCj4gPm51bV92 Zl9yZXBycyk7DQo+ID4gKwlQTURfSU5JVF9MT0coSU5GTywgIiVkIG51bWJlciBvZiBwaHlwb3J0 IHJlcHJzIiwNCj4gPiArYXBwX2Zsb3dlci0+bnVtX3BoeXBvcnRfcmVwcnMpOw0KPiA+ICsNCj4g PiArCXJldCA9IG5mcF9mbG93ZXJfcmVwcl9hbGxvYyhhcHBfZmxvd2VyKTsNCj4gPiArCWlmIChy ZXQpIHsNCj4gDQo+IENvbXBhcmUgdnMgMA0KPiANCj4gPiArCQlQTURfSU5JVF9MT0coRVJSLA0K PiA+ICsJCQkicmVwcmVzZW50b3JzIGFsbG9jYXRpb24gZm9yIE5GUF9SRVBSX1RZUEVfVkYNCj4g ZXJyb3IiKTsNCj4gPiArCQlnb3RvIGN0cmxfdm5pY19jbGVhbnVwOw0KPiA+ICsJfQ0KPiA+ICsN Cj4gPiAgIAlyZXR1cm4gMDsNCj4gPg0KPiA+ICAgY3RybF92bmljX2NsZWFudXA6DQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25mcC9mbG93ZXIvbmZwX2Zsb3dlci5oDQo+ID4gYi9kcml2 ZXJzL25ldC9uZnAvZmxvd2VyL25mcF9mbG93ZXIuaA0KPiA+IGluZGV4IGJkYzY0ZTMuLjI0ZmNl ZDMgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvbmZwL2Zsb3dlci9uZnBfZmxvd2VyLmgN Cj4gPiArKysgYi9kcml2ZXJzL25ldC9uZnAvZmxvd2VyL25mcF9mbG93ZXIuaA0KPiA+IEBAIC0x OSw4ICsxOSwyMCBAQCBlbnVtIG5mcF9mbG93ZXJfc2VydmljZSB7DQo+ID4gICAgKi8NCj4gPiAg ICNkZWZpbmUgRkxPV0VSX1BLVF9EQVRBX09GRlNFVCA4DQo+ID4NCj4gPiArI2RlZmluZSBNQVhf RkxPV0VSX1BIWVBPUlRTIDgNCj4gPiArI2RlZmluZSBNQVhfRkxPV0VSX1ZGUyA2NA0KPiA+ICsN Cj4gPiAgIC8qIFRoZSBmbG93ZXIgYXBwbGljYXRpb24ncyBwcml2YXRlIHN0cnVjdHVyZSAqLw0K PiA+ICAgc3RydWN0IG5mcF9hcHBfZmxvd2VyIHsNCj4gPiArCS8qIHN3aXRjaCBkb21haW4gZm9y IHRoaXMgYXBwICovDQo+ID4gKwl1aW50MTZfdCBzd2l0Y2hfZG9tYWluX2lkOw0KPiA+ICsNCj4g PiArCS8qIE51bWJlciBvZiBWRiByZXByZXNlbnRvcnMgKi8NCj4gPiArCXVpbnQ4X3QgbnVtX3Zm X3JlcHJzOw0KPiA+ICsNCj4gPiArCS8qIE51bWJlciBvZiBwaHlwb3J0IHJlcHJlc2VudG9ycyAq Lw0KPiA+ICsJdWludDhfdCBudW1fcGh5cG9ydF9yZXByczsNCj4gPiArDQo+ID4gICAJLyogTGlz dCBvZiBydGVfc2VydmljZSBJRCdzIGZvciB0aGUgZmxvd2VyIGFwcCAqLw0KPiA+ICAgCXVpbnQz Ml90IGZsb3dlcl9zZXJ2aWNlc19pZHNbTkZQX0ZMT1dFUl9TRVJWSUNFX01BWF07DQo+ID4NCj4g PiBAQCAtNDQsNiArNTYsMTIgQEAgc3RydWN0IG5mcF9hcHBfZmxvd2VyIHsNCj4gPg0KPiA+ICAg CS8qIEN0cmwgdk5JQyBUeCBjb3VudGVyICovDQo+ID4gICAJdWludDY0X3QgY3RybF92bmljX3R4 X2NvdW50Ow0KPiA+ICsNCj4gPiArCS8qIEFycmF5IG9mIHBoeXBvcnQgcmVwcmVzZW50b3JzICov DQo+ID4gKwlzdHJ1Y3QgbmZwX2Zsb3dlcl9yZXByZXNlbnRvcg0KPiAqcGh5X3JlcHJzW01BWF9G TE9XRVJfUEhZUE9SVFNdOw0KPiA+ICsNCj4gPiArCS8qIEFycmF5IG9mIFZGIHJlcHJlc2VudG9y cyAqLw0KPiA+ICsJc3RydWN0IG5mcF9mbG93ZXJfcmVwcmVzZW50b3IgKnZmX3JlcHJzW01BWF9G TE9XRVJfVkZTXTsNCj4gPiAgIH07DQo+ID4NCj4gPiAgIGludCBuZnBfaW5pdF9hcHBfZmxvd2Vy KHN0cnVjdCBuZnBfcGZfZGV2ICpwZl9kZXYpOyBkaWZmIC0tZ2l0DQo+ID4gYS9kcml2ZXJzL25l dC9uZnAvZmxvd2VyL25mcF9mbG93ZXJfY21zZy5jDQo+ID4gYi9kcml2ZXJzL25ldC9uZnAvZmxv d2VyL25mcF9mbG93ZXJfY21zZy5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRl eCAwMDAwMDAwLi41Y2U1NDdjDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMv bmV0L25mcC9mbG93ZXIvbmZwX2Zsb3dlcl9jbXNnLmMNCj4gPiBAQCAtMCwwICsxLDE4NiBAQA0K PiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gKyAqIENv cHlyaWdodChjKSAyMDIyIENvcmlnaW5lLCBJbmMuDQo+ID4gKyAqIEFsbCByaWdodHMgcmVzZXJ2 ZWQuDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIi4uL25mcGNvcmUvbmZwX25zcC5o Ig0KPiA+ICsjaW5jbHVkZSAiLi4vbmZwX2xvZ3MuaCINCj4gPiArI2luY2x1ZGUgIi4uL25mcF9j b21tb24uaCINCj4gPiArI2luY2x1ZGUgIm5mcF9mbG93ZXIuaCINCj4gPiArI2luY2x1ZGUgIm5m cF9mbG93ZXJfY21zZy5oIg0KPiA+ICsjaW5jbHVkZSAibmZwX2Zsb3dlcl9jdHJsLmgiDQo+ID4g KyNpbmNsdWRlICJuZnBfZmxvd2VyX3JlcHJlc2VudG9yLmgiDQo+ID4gKw0KPiA+ICtzdGF0aWMg dm9pZCAqDQo+ID4gK25mcF9mbG93ZXJfY21zZ19pbml0KHN0cnVjdCBydGVfbWJ1ZiAqbSwNCj4g PiArCQllbnVtIG5mcF9mbG93ZXJfY21zZ190eXBlIHR5cGUsDQo+ID4gKwkJdWludDMyX3Qgc2l6 ZSkNCj4gPiArew0KPiA+ICsJY2hhciAqcGt0Ow0KPiA+ICsJdWludDMyX3QgZGF0YTsNCj4gPiAr CXVpbnQzMl90IG5ld19zaXplID0gc2l6ZTsNCj4gPiArCXN0cnVjdCBuZnBfZmxvd2VyX2Ntc2df aGRyICpoZHI7DQo+ID4gKw0KPiA+ICsJcGt0ID0gcnRlX3BrdG1idWZfbXRvZChtLCBjaGFyICop Ow0KPiA+ICsJUE1EX0RSVl9MT0coREVCVUcsICJmbG93ZXJfY21zZ19pbml0IHVzaW5nIHBrdCBh dCAlcCIsIHBrdCk7DQo+ID4gKw0KPiA+ICsJZGF0YSA9IHJ0ZV9jcHVfdG9fYmVfMzIoTkZQX05F VF9NRVRBX1BPUlRJRCk7DQo+ID4gKwlydGVfbWVtY3B5KHBrdCwgJmRhdGEsIDQpOw0KPiA+ICsJ cGt0ICs9IDQ7DQo+ID4gKwluZXdfc2l6ZSArPSA0Ow0KPiA+ICsNCj4gPiArCS8qIEZpcnN0IHRo ZSBtZXRhZGF0YSBhcyBmbG93ZXIgcmVxdWlyZXMgaXQgKi8NCj4gPiArCWRhdGEgPSBydGVfY3B1 X3RvX2JlXzMyKE5GUF9NRVRBX1BPUlRfSURfQ1RSTCk7DQo+ID4gKwlydGVfbWVtY3B5KHBrdCwg JmRhdGEsIDQpOw0KPiA+ICsJcGt0ICs9IDQ7DQo+ID4gKwluZXdfc2l6ZSArPSA0Ow0KPiA+ICsN Cj4gPiArCS8qIE5vdyB0aGUgY3RybCBoZWFkZXIgKi8NCj4gPiArCWhkciA9IChzdHJ1Y3QgbmZw X2Zsb3dlcl9jbXNnX2hkciAqKXBrdDsNCj4gPiArCWhkci0+cGFkICAgICA9IDA7DQo+ID4gKwlo ZHItPnR5cGUgICAgPSB0eXBlOw0KPiA+ICsJaGRyLT52ZXJzaW9uID0gTkZQX0ZMT1dFUl9DTVNH X1ZFUjE7DQo+ID4gKw0KPiA+ICsJcGt0ID0gKGNoYXIgKiloZHIgKyBORlBfRkxPV0VSX0NNU0df SExFTjsNCj4gPiArCW5ld19zaXplICs9IE5GUF9GTE9XRVJfQ01TR19ITEVOOw0KPiA+ICsNCj4g PiArCW0tPnBrdF9sZW4gPSBuZXdfc2l6ZTsNCj4gPiArCW0tPmRhdGFfbGVuID0gbS0+cGt0X2xl bjsNCj4gPiArDQo+ID4gKwlyZXR1cm4gcGt0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg dm9pZA0KPiA+ICtuZnBfZmxvd2VyX2Ntc2dfbWFjX3JlcHJfaW5pdChzdHJ1Y3QgcnRlX21idWYg Km0sIGludCBudW1fcG9ydHMpIHsNCj4gPiArCXVpbnQzMl90IHNpemU7DQo+ID4gKwlzdHJ1Y3Qg bmZwX2Zsb3dlcl9jbXNnX21hY19yZXByICptc2c7DQo+ID4gKwllbnVtIG5mcF9mbG93ZXJfY21z Z190eXBlIHR5cGUgPQ0KPiBORlBfRkxPV0VSX0NNU0dfVFlQRV9NQUNfUkVQUjsNCj4gPiArDQo+ ID4gKwlzaXplID0gc2l6ZW9mKCptc2cpICsgKG51bV9wb3J0cyAqIHNpemVvZihtc2ctPnBvcnRz WzBdKSk7DQo+ID4gKwlQTURfRFJWX0xPRyhERUJVRywgIm1hYyByZXByIGNtc2cgaW5pdCB3aXRo IHNpemU6ICV1Iiwgc2l6ZSk7DQo+ID4gKwltc2cgPSAoc3RydWN0IG5mcF9mbG93ZXJfY21zZ19t YWNfcmVwcg0KPiAqKW5mcF9mbG93ZXJfY21zZ19pbml0KG0sDQo+ID4gKwkJCXR5cGUsIHNpemUp Ow0KPiA+ICsNCj4gPiArCW1lbXNldChtc2ctPnJlc2VydmVkLCAwLCBzaXplb2YobXNnLT5yZXNl cnZlZCkpOw0KPiA+ICsJbXNnLT5udW1fcG9ydHMgPSBudW1fcG9ydHM7DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK25mcF9mbG93ZXJfY21zZ19tYWNfcmVwcl9maWxsKHN0 cnVjdCBydGVfbWJ1ZiAqbSwNCj4gPiArCQl1bnNpZ25lZCBpbnQgaWR4LA0KPiA+ICsJCXVuc2ln bmVkIGludCBuYmksDQo+ID4gKwkJdW5zaWduZWQgaW50IG5iaV9wb3J0LA0KPiA+ICsJCXVuc2ln bmVkIGludCBwaHlzX3BvcnQpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBuZnBfZmxvd2VyX2Ntc2df bWFjX3JlcHIgKm1zZzsNCj4gPiArDQo+ID4gKwltc2cgPSAoc3RydWN0IG5mcF9mbG93ZXJfY21z Z19tYWNfcmVwcg0KPiAqKW5mcF9mbG93ZXJfY21zZ19nZXRfZGF0YShtKTsNCj4gPiArCW1zZy0+ cG9ydHNbaWR4XS5pZHggICAgICAgPSBpZHg7DQo+ID4gKwltc2ctPnBvcnRzW2lkeF0uaW5mbyAg ICAgID0gbmJpICYNCj4gTkZQX0ZMT1dFUl9DTVNHX01BQ19SRVBSX05CSTsNCj4gPiArCW1zZy0+ cG9ydHNbaWR4XS5uYmlfcG9ydCAgPSBuYmlfcG9ydDsNCj4gPiArCW1zZy0+cG9ydHNbaWR4XS5w aHlzX3BvcnQgPSBwaHlzX3BvcnQ7IH0NCj4gPiArDQo+ID4gK2ludA0KPiA+ICtuZnBfZmxvd2Vy X2Ntc2dfbWFjX3JlcHIoc3RydWN0IG5mcF9hcHBfZmxvd2VyICphcHBfZmxvd2VyKSB7DQo+ID4g KwlpbnQgaTsNCj4gPiArCXVpbnQxNl90IGNudDsNCj4gPiArCXVuc2lnbmVkIGludCBuYmk7DQo+ ID4gKwl1bnNpZ25lZCBpbnQgbmJpX3BvcnQ7DQo+ID4gKwl1bnNpZ25lZCBpbnQgcGh5c19wb3J0 Ow0KPiA+ICsJc3RydWN0IHJ0ZV9tYnVmICptYnVmOw0KPiA+ICsJc3RydWN0IG5mcF9ldGhfdGFi bGUgKm5mcF9ldGhfdGFibGU7DQo+ID4gKw0KPiA+ICsJbWJ1ZiA9IHJ0ZV9wa3RtYnVmX2FsbG9j KGFwcF9mbG93ZXItPmN0cmxfcGt0bWJ1Zl9wb29sKTsNCj4gPiArCWlmIChtYnVmID09IE5VTEwp IHsNCj4gPiArCQlQTURfRFJWX0xPRyhFUlIsICJDb3VsZCBub3QgYWxsb2NhdGUgbWFjIHJlcHIg Y21zZyIpOw0KPiA+ICsJCXJldHVybiAtRU5PTUVNOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCW5m cF9mbG93ZXJfY21zZ19tYWNfcmVwcl9pbml0KG1idWYsIGFwcF9mbG93ZXItDQo+ID5udW1fcGh5 cG9ydF9yZXBycyk7DQo+ID4gKw0KPiA+ICsJLyogRmlsbCBpbiB0aGUgbWFjIHJlcHIgY21zZyAq Lw0KPiA+ICsJbmZwX2V0aF90YWJsZSA9IGFwcF9mbG93ZXItPm5mcF9ldGhfdGFibGU7DQo+ID4g Kwlmb3IgKGkgPSAwOyBpIDwgYXBwX2Zsb3dlci0+bnVtX3BoeXBvcnRfcmVwcnM7IGkrKykgew0K PiA+ICsJCW5iaSA9IG5mcF9ldGhfdGFibGUtPnBvcnRzW2ldLm5iaTsNCj4gPiArCQluYmlfcG9y dCA9IG5mcF9ldGhfdGFibGUtPnBvcnRzW2ldLmJhc2U7DQo+ID4gKwkJcGh5c19wb3J0ID0gbmZw X2V0aF90YWJsZS0+cG9ydHNbaV0uaW5kZXg7DQo+ID4gKw0KPiA+ICsJCW5mcF9mbG93ZXJfY21z Z19tYWNfcmVwcl9maWxsKG1idWYsIGksIG5iaSwgbmJpX3BvcnQsDQo+IHBoeXNfcG9ydCk7DQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyogU2VuZCB0aGUgY21zZyB2aWEgdGhlIGN0cmwgdk5JQyAq Lw0KPiA+ICsJY250ID0gbmZwX2Zsb3dlcl9jdHJsX3ZuaWNfeG1pdChhcHBfZmxvd2VyLCBtYnVm KTsNCj4gPiArCWlmIChjbnQgPT0gMCkgew0KPiA+ICsJCVBNRF9EUlZfTE9HKEVSUiwgIlNlbmQg Y21zZyB0aHJvdWdoIGN0cmwgdm5pYyBmYWlsZWQuIik7DQo+ID4gKwkJcnRlX3BrdG1idWZfZnJl ZShtYnVmKTsNCj4gPiArCQlyZXR1cm4gLUVJTzsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1 cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAraW50DQo+ID4gK25mcF9mbG93ZXJfY21zZ19yZXBy X3JlaWZ5KHN0cnVjdCBuZnBfYXBwX2Zsb3dlciAqYXBwX2Zsb3dlciwNCj4gPiArCQlzdHJ1Y3Qg bmZwX2Zsb3dlcl9yZXByZXNlbnRvciAqcmVwcikgew0KPiA+ICsJdWludDE2X3QgY250Ow0KPiA+ ICsJc3RydWN0IHJ0ZV9tYnVmICptYnVmOw0KPiA+ICsJc3RydWN0IG5mcF9mbG93ZXJfY21zZ19w b3J0X3JlaWZ5ICptc2c7DQo+ID4gKw0KPiA+ICsJbWJ1ZiA9IHJ0ZV9wa3RtYnVmX2FsbG9jKGFw cF9mbG93ZXItPmN0cmxfcGt0bWJ1Zl9wb29sKTsNCj4gPiArCWlmIChtYnVmID09IE5VTEwpIHsN Cj4gPiArCQlQTURfRFJWX0xPRyhERUJVRywgImFsbG9jIG1idWYgZm9yIHJlcHIgcmVpZnkgZmFp bGVkIik7DQo+ID4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJbXNn ID0gKHN0cnVjdCBuZnBfZmxvd2VyX2Ntc2dfcG9ydF9yZWlmeQ0KPiAqKW5mcF9mbG93ZXJfY21z Z19pbml0KG1idWYsDQo+ID4gKwkJCU5GUF9GTE9XRVJfQ01TR19UWVBFX1BPUlRfUkVJRlksDQo+ IHNpemVvZigqbXNnKSk7DQo+ID4gKw0KPiA+ICsJbXNnLT5wb3J0bnVtICA9IHJ0ZV9jcHVfdG9f YmVfMzIocmVwci0+cG9ydF9pZCk7DQo+ID4gKwltc2ctPnJlc2VydmVkID0gMDsNCj4gPiArCW1z Zy0+aW5mbyAgICAgPSBydGVfY3B1X3RvX2JlXzE2KDEpOw0KPiA+ICsNCj4gPiArCWNudCA9IG5m cF9mbG93ZXJfY3RybF92bmljX3htaXQoYXBwX2Zsb3dlciwgbWJ1Zik7DQo+ID4gKwlpZiAoY250 ID09IDApIHsNCj4gPiArCQlQTURfRFJWX0xPRyhFUlIsICJTZW5kIGNtc2cgdGhyb3VnaCBjdHJs IHZuaWMgZmFpbGVkLiIpOw0KPiA+ICsJCXJ0ZV9wa3RtYnVmX2ZyZWUobWJ1Zik7DQo+ID4gKwkJ cmV0dXJuIC1FSU87DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4g PiArDQo+ID4gK2ludA0KPiA+ICtuZnBfZmxvd2VyX2Ntc2dfcG9ydF9tb2Qoc3RydWN0IG5mcF9h cHBfZmxvd2VyICphcHBfZmxvd2VyLA0KPiA+ICsJCXVpbnQzMl90IHBvcnRfaWQsIGJvb2wgY2Fy cmllcl9vaykNCj4gPiArew0KPiA+ICsJdWludDE2X3QgY250Ow0KPiA+ICsJc3RydWN0IHJ0ZV9t YnVmICptYnVmOw0KPiA+ICsJc3RydWN0IG5mcF9mbG93ZXJfY21zZ19wb3J0X21vZCAqbXNnOw0K PiA+ICsNCj4gPiArCW1idWYgPSBydGVfcGt0bWJ1Zl9hbGxvYyhhcHBfZmxvd2VyLT5jdHJsX3Br dG1idWZfcG9vbCk7DQo+ID4gKwlpZiAobWJ1ZiA9PSBOVUxMKSB7DQo+ID4gKwkJUE1EX0RSVl9M T0coREVCVUcsICJhbGxvYyBtYnVmIGZvciByZXByIHBvcnRtb2QNCj4gZmFpbGVkIik7DQo+ID4g KwkJcmV0dXJuIC1FTk9NRU07DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJbXNnID0gKHN0cnVjdCBu ZnBfZmxvd2VyX2Ntc2dfcG9ydF9tb2QNCj4gKiluZnBfZmxvd2VyX2Ntc2dfaW5pdChtYnVmLA0K PiA+ICsJCQlORlBfRkxPV0VSX0NNU0dfVFlQRV9QT1JUX01PRCwNCj4gc2l6ZW9mKCptc2cpKTsN Cj4gPiArDQo+ID4gKwltc2ctPnBvcnRudW0gID0gcnRlX2NwdV90b19iZV8zMihwb3J0X2lkKTsN Cj4gPiArCW1zZy0+cmVzZXJ2ZWQgPSAwOw0KPiA+ICsJbXNnLT5pbmZvICAgICA9IGNhcnJpZXJf b2s7DQo+ID4gKwltc2ctPm10dSAgICAgID0gOTAwMDsNCj4gPiArDQo+ID4gKwljbnQgPSBuZnBf Zmxvd2VyX2N0cmxfdm5pY194bWl0KGFwcF9mbG93ZXIsIG1idWYpOw0KPiA+ICsJaWYgKGNudCA9 PSAwKSB7DQo+ID4gKwkJUE1EX0RSVl9MT0coRVJSLCAiU2VuZCBjbXNnIHRocm91Z2ggY3RybCB2 bmljIGZhaWxlZC4iKTsNCj4gPiArCQlydGVfcGt0bWJ1Zl9mcmVlKG1idWYpOw0KPiA+ICsJCXJl dHVybiAtRUlPOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25mcC9mbG93ZXIvbmZwX2Zsb3dlcl9jbXNnLmgNCj4g PiBiL2RyaXZlcnMvbmV0L25mcC9mbG93ZXIvbmZwX2Zsb3dlcl9jbXNnLmgNCj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAuLmZjZTUxNjMNCj4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvbmZwL2Zsb3dlci9uZnBfZmxvd2VyX2Ntc2cuaA0K PiA+IEBAIC0wLDAgKzEsMTczIEBADQo+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMy1DbGF1c2UNCj4gPiArICogQ29weXJpZ2h0KGMpIDIwMjIgQ29yaWdpbmUsIEluYy4NCj4g PiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVm IF9ORlBfQ01TR19IXw0KPiA+ICsjZGVmaW5lIF9ORlBfQ01TR19IXw0KPiA+ICsNCj4gPiArI2lu Y2x1ZGUgPHJ0ZV9ieXRlb3JkZXIuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9ldGhlci5oPg0KPiA+ ICsNCj4gPiArc3RydWN0IG5mcF9mbG93ZXJfY21zZ19oZHIgew0KPiA+ICsJcnRlX2JlMTZfdCBw YWQ7DQo+ID4gKwl1aW50OF90IHR5cGU7DQo+ID4gKwl1aW50OF90IHZlcnNpb247DQo+ID4gK307 DQo+ID4gKw0KPiA+ICsvKiBUeXBlcyBkZWZpbmVkIGZvciBjb250cm9sIG1lc3NhZ2VzICovIGVu dW0gbmZwX2Zsb3dlcl9jbXNnX3R5cGUgew0KPiA+ICsJTkZQX0ZMT1dFUl9DTVNHX1RZUEVfRkxP V19BREQgICAgICAgPSAwLA0KPiA+ICsJTkZQX0ZMT1dFUl9DTVNHX1RZUEVfRkxPV19NT0QgICAg ICAgPSAxLA0KPiA+ICsJTkZQX0ZMT1dFUl9DTVNHX1RZUEVfRkxPV19ERUwgICAgICAgPSAyLA0K PiA+ICsJTkZQX0ZMT1dFUl9DTVNHX1RZUEVfTEFHX0NPTkZJRyAgICAgPSA0LA0KPiA+ICsJTkZQ X0ZMT1dFUl9DTVNHX1RZUEVfUE9SVF9SRUlGWSAgICAgPSA2LA0KPiA+ICsJTkZQX0ZMT1dFUl9D TVNHX1RZUEVfTUFDX1JFUFIgICAgICAgPSA3LA0KPiA+ICsJTkZQX0ZMT1dFUl9DTVNHX1RZUEVf UE9SVF9NT0QgICAgICAgPSA4LA0KPiA+ICsJTkZQX0ZMT1dFUl9DTVNHX1RZUEVfTUVSR0VfSElO VCAgICAgPSA5LA0KPiA+ICsJTkZQX0ZMT1dFUl9DTVNHX1RZUEVfTk9fTkVJR0ggICAgICAgPSAx MCwNCj4gPiArCU5GUF9GTE9XRVJfQ01TR19UWVBFX1RVTl9NQUMgICAgICAgID0gMTEsDQo+ID4g KwlORlBfRkxPV0VSX0NNU0dfVFlQRV9BQ1RJVkVfVFVOUyAgICA9IDEyLA0KPiA+ICsJTkZQX0ZM T1dFUl9DTVNHX1RZUEVfVFVOX05FSUdIICAgICAgPSAxMywNCj4gPiArCU5GUF9GTE9XRVJfQ01T R19UWVBFX1RVTl9JUFMgICAgICAgID0gMTQsDQo+ID4gKwlORlBfRkxPV0VSX0NNU0dfVFlQRV9G TE9XX1NUQVRTICAgICA9IDE1LA0KPiA+ICsJTkZQX0ZMT1dFUl9DTVNHX1RZUEVfUE9SVF9FQ0hP ICAgICAgPSAxNiwNCj4gPiArCU5GUF9GTE9XRVJfQ01TR19UWVBFX1FPU19NT0QgICAgICAgID0g MTgsDQo+ID4gKwlORlBfRkxPV0VSX0NNU0dfVFlQRV9RT1NfREVMICAgICAgICA9IDE5LA0KPiA+ ICsJTkZQX0ZMT1dFUl9DTVNHX1RZUEVfUU9TX1NUQVRTICAgICAgPSAyMCwNCj4gPiArCU5GUF9G TE9XRVJfQ01TR19UWVBFX1BSRV9UVU5fUlVMRSAgID0gMjEsDQo+ID4gKwlORlBfRkxPV0VSX0NN U0dfVFlQRV9UVU5fSVBTX1Y2ICAgICA9IDIyLA0KPiA+ICsJTkZQX0ZMT1dFUl9DTVNHX1RZUEVf Tk9fTkVJR0hfVjYgICAgPSAyMywNCj4gPiArCU5GUF9GTE9XRVJfQ01TR19UWVBFX1RVTl9ORUlH SF9WNiAgID0gMjQsDQo+ID4gKwlORlBfRkxPV0VSX0NNU0dfVFlQRV9BQ1RJVkVfVFVOU19WNiA9 IDI1LA0KPiA+ICsJTkZQX0ZMT1dFUl9DTVNHX1RZUEVfTUFYICAgICAgICAgICAgPSAzMiwNCj4g PiArfTsNCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIE5GUF9GTE9XRVJfQ01TR19UWVBFX01BQ19S RVBSDQo+ID4gKyAqICAgIEJpdCAgICAzIDMgMiAyIDIgMiAyIDIgMiAyIDIgMiAxIDEgMSAxIDEg MSAxIDEgMSAxIDAgMCAwIDAgMCAwIDAgMCAwIDANCj4gPiArICogICAgLS0tLS1cIDEgMCA5IDgg NyA2IDUgNCAzIDIgMSAwIDkgOCA3IDYgNSA0IDMgMiAxIDAgOSA4IDcgNiA1IDQgMyAyIDEgMA0K PiA+ICsgKiAgICAgV29yZCArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKw0KPiA+ICsgKiAgICAgICAwICB8ICAgICAgICAgICAg ICAgICAgc3BhcmUgICAgICAgICAgICAgICAgICAgICAgICB8TnVtYmVyIG9mIHBvcnRzfA0KPiA+ ICsgKiAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKw0KPiA+ICsgKiAgICAgICAxICB8ICAgIEluZGV4ICAgICAg fCAgIHNwYXJlICAgfE5CSXwgIFBvcnQgb24gTkJJICB8IENoaXAtd2lkZSBwb3J0fA0KPiA+ICsg KiAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKw0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAuLi4uDQo+ID4gKyAqICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rDQo+ID4gKyAqICAgICBO LTEgIHwgICAgSW5kZXggICAgICB8ICAgc3BhcmUgICB8TkJJfCAgUG9ydCBvbiBOQkkgIHwgQ2hp cC13aWRlIHBvcnR8DQo+ID4gKyAqICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rDQo+ID4gKyAqICAgICBOICAg IHwgICAgSW5kZXggICAgICB8ICAgc3BhcmUgICB8TkJJfCAgUG9ydCBvbiBOQkkgIHwgQ2hpcC13 aWRlIHBvcnR8DQo+ID4gKyAqICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rDQo+ID4gKyAqDQo+ID4gKyAqICAg ICAgICAgIEluZGV4OiBpbmRleCBpbnRvIHRoZSBldGggdGFibGUNCj4gPiArICogICAgICAgICAg TkJJIChiaXRzIDE3LTE2KTogTkJJIG51bWJlciAoMC0zKQ0KPiA+ICsgKiAgICAgICAgICBQb3J0 IG9uIE5CSSAoYml0cyAxNS04KTog4oCcYmFzZeKAnSBpbiB0aGUgZHJpdmVyDQo+ID4gKyAqICAg ICAgICAgICAgdGhpcyBmb3JtcyBOQklYLlBvcnRZIG5vdGF0aW9uIGFzIHRoZSBOU1AgZXRoIHRh YmxlLg0KPiA+ICsgKiAgICAgICAgICAiQ2hpcC13aWRlIiBwb3J0IChiaXRzIDctMCk6DQo+ID4g KyAqLw0KPiA+ICtzdHJ1Y3QgbmZwX2Zsb3dlcl9jbXNnX21hY19yZXByIHsNCj4gPiArCXVpbnQ4 X3QgcmVzZXJ2ZWRbM107DQo+ID4gKwl1aW50OF90IG51bV9wb3J0czsNCj4gPiArCXN0cnVjdCB7 DQo+ID4gKwkJdWludDhfdCBpZHg7DQo+ID4gKwkJdWludDhfdCBpbmZvOw0KPiA+ICsJCXVpbnQ4 X3QgbmJpX3BvcnQ7DQo+ID4gKwkJdWludDhfdCBwaHlzX3BvcnQ7DQo+ID4gKwl9IHBvcnRzWzBd Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogTkZQX0ZMT1dFUl9DTVNHX1RZUEVf UE9SVF9SRUlGWQ0KPiA+ICsgKiAgICBCaXQgICAgMyAzIDIgMiAyIDIgMiAyIDIgMiAyIDIgMSAx IDEgMSAxIDEgMSAxIDEgMSAwIDAgMCAwIDAgMCAwIDAgMCAwDQo+ID4gKyAqICAgIC0tLS0tXCAx IDAgOSA4IDcgNiA1IDQgMyAyIDEgMCA5IDggNyA2IDUgNCAzIDIgMSAwIDkgOCA3IDYgNSA0IDMg MiAxIDANCj4gPiArICogICAgV29yZCAgKy0tLS0tLS0rLS0tLS0tLSstLS0rLS0tKy0tLS0tLS0r LS0tKy0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSsNCj4gPiArICogICAgICAgMCAgfFBvcnQg VHl8U3lzIElEIHxOSUN8UnN2fCBTcGFyZSB8UENJfHR5cHwgICAgdk5JQyAgIHwgIHF1ZXVlICAg IHwNCj4gPiArICogICAgICAgICAgKy0tLS0tLS0rLS0tLS0rLSstLS0rLS0tKy0tLS0tLS0rLS0t Ky0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLSsNCj4gPiArICogICAgICAgMSAgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU3BhcmUgICAgICAgICAgICAgICAgICAgICAgICAgICB8RXwN Cj4gPiArICogICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLSsNCj4gPiArICogICAgICAgICAgRTogMSA9IFJlcHJl c2VudG9yIGV4aXN0cywgMCA9IFJlcHJlc2VudG9yIGRvZXMgbm90IGV4aXN0DQo+ID4gKyAqLw0K PiA+ICtzdHJ1Y3QgbmZwX2Zsb3dlcl9jbXNnX3BvcnRfcmVpZnkgew0KPiA+ICsJcnRlX2JlMzJf dCBwb3J0bnVtOw0KPiA+ICsJcnRlX2JlMTZfdCByZXNlcnZlZDsNCj4gPiArCXJ0ZV9iZTE2X3Qg aW5mbzsNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIE5GUF9GTE9XRVJfQ01TR19U WVBFX1BPUlRfTU9EDQo+ID4gKyAqICAgIEJpdCAgICAzIDMgMiAyIDIgMiAyIDIgMiAyIDIgMiAx IDEgMSAxIDEgMSAxIDEgMSAxIDAgMCAwIDAgMCAwIDAgMCAwIDANCj4gPiArICogICAgLS0tLS1c IDEgMCA5IDggNyA2IDUgNCAzIDIgMSAwIDkgOCA3IDYgNSA0IDMgMiAxIDAgOSA4IDcgNiA1IDQg MyAyIDEgMA0KPiA+ICsgKiAgICBXb3JkICArLS0tLS0tLSstLS0tLS0tKy0tLSstLS0rLS0tLS0t LSstLS0rLS0tKy0tLS0tLS0rLS0tKy0tLS0tLS0tLS0tKw0KPiA+ICsgKiAgICAgICAwICB8UG9y dCBUeXxTeXMgSUQgfE5JQ3xSc3Z8ICAgICAgIFJlc2VydmVkICAgICAgICB8ICAgIFBvcnQgICAg ICAgfA0KPiA+ICsgKiAgICAgICAgICArLS0tLS0tLSstLS0tLS0tKy0tLSstLS0rLS0tLS0rLSst LS0rLS0tKy0tLS0tLS0rLS0tKy0tLS0tLS0tLS0tKw0KPiA+ICsgKiAgICAgICAxICB8ICAgICAg ICAgICAgU3BhcmUgICAgICAgICAgICB8THwgICAgICAgICAgICAgIE1UVSAgICAgICAgICAgICAg fA0KPiA+ICsgKiAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiA+ICsgKiAgICAgICAgTDogTGluayBvciBB ZG1pbiBzdGF0ZSBiaXQuIFdoZW4gbWVzc2FnZSBpcyBnZW5lcmF0ZWQgYnkgaG9zdCwgdGhpcw0K PiA+ICsgKiAgICAgICAgICAgYml0IGluZGljYXRlcyB0aGUgYWRtaW4gc3RhdGUgKDA9ZG93biwg MT11cCkuIFdoZW4gZ2VuZXJhdGVkIGJ5DQo+ID4gKyAqICAgICAgICAgICBORlAsIGl0IGluZGlj YXRlcyB0aGUgbGluayBzdGF0ZSAoMD1kb3duLCAxPXVwKQ0KPiA+ICsgKg0KPiA+ICsgKiAgICAg ICAgUG9ydCBUeXBlICh3b3JkIDEsIGJpdHMgMzEgdG8gMjgpID0gMSAoUGh5c2ljYWwgTmV0d29y aykNCj4gPiArICogICAgICAgIFBvcnQ6IOKAnENoaXAtd2lkZSBudW1iZXLigJ0gYXMgYXNzaWdu ZWQgYnkgQlNQDQo+ID4gKyAqDQo+ID4gKyAqICAgIEJpdCAgICAzIDMgMiAyIDIgMiAyIDIgMiAy IDIgMiAxIDEgMSAxIDEgMSAxIDEgMSAxIDAgMCAwIDAgMCAwIDAgMCAwIDANCj4gPiArICogICAg LS0tLS1cIDEgMCA5IDggNyA2IDUgNCAzIDIgMSAwIDkgOCA3IDYgNSA0IDMgMiAxIDAgOSA4IDcg NiA1IDQgMyAyIDEgMA0KPiA+ICsgKiAgICBXb3JkICArLS0tLS0tLSstLS0tLS0tKy0tLSstLS0r LS0tLS0tLSstLS0rLS0tKy0tLS0tLS0rLS0tKy0tLS0tLS0tLS0tKw0KPiA+ICsgKiAgICAgICAw ICB8UG9ydCBUeXxTeXMgSUQgfE5JQ3xSc3Z8IFNwYXJlIHxQQ0l8dHlwfCAgICB2TklDICAgfCAg cXVldWUgICAgfA0KPiA+ICsgKiAgICAgICAgICArLS0tLS0tLSstLS0tLSstKy0tLSstLS0rLS0t Ky0rLSstLS0rLS0tKy0tLS0tLS0rLS0tKy0tLS0tLS0tLS0tKw0KPiA+ICsgKiAgICAgICAxICB8 ICAgICAgICAgICAgU3BhcmUgICAgICAgICAgICB8THwgICAgICAgICAgICAgIE1UVSAgICAgICAg ICAgICAgfA0KPiA+ICsgKiAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiA+ICsgKiAgICAgICAgTDogTGlu ayBvciBBZG1pbiBzdGF0ZSBiaXQuIFdoZW4gbWVzc2FnZSBpcyBnZW5lcmF0ZWQgYnkgaG9zdCwg dGhpcw0KPiA+ICsgKiAgICAgICAgICAgYml0IGluZGljYXRlcyB0aGUgYWRtaW4gc3RhdGUgKDA9 ZG93biwgMT11cCkuIFdoZW4gZ2VuZXJhdGVkIGJ5DQo+ID4gKyAqICAgICAgICAgICBORlAsIGl0 IGluZGljYXRlcyB0aGUgbGluayBzdGF0ZSAoMD1kb3duLCAxPXVwKQ0KPiA+ICsgKg0KPiA+ICsg KiAgICAgICAgUG9ydCBUeXBlICh3b3JkIDEsIGJpdHMgMzEgdG8gMjgpID0gMiAoUENJRSkNCj4g PiArICovDQo+ID4gK3N0cnVjdCBuZnBfZmxvd2VyX2Ntc2dfcG9ydF9tb2Qgew0KPiA+ICsJcnRl X2JlMzJfdCBwb3J0bnVtOw0KPiA+ICsJdWludDhfdCByZXNlcnZlZDsNCj4gPiArCXVpbnQ4X3Qg aW5mbzsNCj4gPiArCXJ0ZV9iZTE2X3QgbXR1Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArZW51bSBu ZnBfZmxvd2VyX2Ntc2dfcG9ydF90eXBlIHsNCj4gPiArCU5GUF9GTE9XRVJfQ01TR19QT1JUX1RZ UEVfVU5TUEVDLA0KPiA+ICsJTkZQX0ZMT1dFUl9DTVNHX1BPUlRfVFlQRV9QSFlTX1BPUlQsDQo+ ID4gKwlORlBfRkxPV0VSX0NNU0dfUE9SVF9UWVBFX1BDSUVfUE9SVCwNCj4gPiArCU5GUF9GTE9X RVJfQ01TR19QT1JUX1RZUEVfT1RIRVJfUE9SVCwNCj4gPiArfTsNCj4gPiArDQo+ID4gK2VudW0g bmZwX2Zsb3dlcl9jbXNnX3BvcnRfdm5pY190eXBlIHsNCj4gPiArCU5GUF9GTE9XRVJfQ01TR19Q T1JUX1ZOSUNfVFlQRV9WRiwNCj4gPiArCU5GUF9GTE9XRVJfQ01TR19QT1JUX1ZOSUNfVFlQRV9Q RiwNCj4gPiArCU5GUF9GTE9XRVJfQ01TR19QT1JUX1ZOSUNfVFlQRV9DVFJMLA0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArI2RlZmluZSBORlBfRkxPV0VSX0NNU0dfTUFDX1JFUFJfTkJJICAgICAgICAg ICAgKDB4MykNCj4gPiArDQo+ID4gKyNkZWZpbmUgTkZQX0ZMT1dFUl9DTVNHX0hMRU4gICAgICAg ICAgICBzaXplb2Yoc3RydWN0DQo+IG5mcF9mbG93ZXJfY21zZ19oZHIpDQo+ID4gKyNkZWZpbmUg TkZQX0ZMT1dFUl9DTVNHX1ZFUjEgICAgICAgICAgICAxDQo+ID4gKyNkZWZpbmUgTkZQX05FVF9N RVRBX1BPUlRJRCAgICAgICAgICAgICA1DQo+ID4gKyNkZWZpbmUgTkZQX01FVEFfUE9SVF9JRF9D VFJMICAgICAgICAgICB+MFUNCj4gPiArDQo+ID4gKyNkZWZpbmUgTkZQX0ZMT1dFUl9DTVNHX1BP UlRfVFlQRSh4KSAgICAgICAgICAgICgoKHgpID4+IDI4KSAmIDB4ZikgIC8qDQo+IFszMSwyOF0g Ki8NCj4gPiArI2RlZmluZSBORlBfRkxPV0VSX0NNU0dfUE9SVF9TWVNfSUQoeCkgICAgICAgICAg KCgoeCkgPj4gMjQpICYgMHhmKSAgLyoNCj4gWzI0LDI3XSAqLw0KPiA+ICsjZGVmaW5lIE5GUF9G TE9XRVJfQ01TR19QT1JUX05GUF9JRCh4KSAgICAgICAgICAoKCh4KSA+PiAyMikgJiAweDMpDQo+ IC8qIFsyMiwyM10gKi8NCj4gPiArI2RlZmluZSBORlBfRkxPV0VSX0NNU0dfUE9SVF9QQ0koeCkg ICAgICAgICAgICAgKCgoeCkgPj4gMTQpICYgMHgzKSAgLyoNCj4gWzE0LDE1XSAqLw0KPiA+ICsj ZGVmaW5lIE5GUF9GTE9XRVJfQ01TR19QT1JUX1ZOSUNfVFlQRSh4KSAgICAgICAoKCh4KSA+PiAx MikgJiAweDMpDQo+IC8qIFsxMiwxM10gKi8NCj4gPiArI2RlZmluZSBORlBfRkxPV0VSX0NNU0df UE9SVF9WTklDKHgpICAgICAgICAgICAgKCgoeCkgPj4gNikgJiAweDNmKSAgLyoNCj4gWzYsMTFd ICovDQo+ID4gKyNkZWZpbmUgTkZQX0ZMT1dFUl9DTVNHX1BPUlRfUENJRV9RKHgpICAgICAgICAg ICgoeCkgJiAweDNmKSAgICAgICAgIC8qDQo+IFswLDVdICovDQo+ID4gKyNkZWZpbmUgTkZQX0ZM T1dFUl9DTVNHX1BPUlRfUEhZU19QT1JUX05VTSh4KSAgICgoeCkgJiAweGZmKQ0KPiAvKiBbMCw3 XSAqLw0KPiA+ICsNCj4gPiArc3RhdGljIGlubGluZSBjaGFyKg0KPiA+ICtuZnBfZmxvd2VyX2Nt c2dfZ2V0X2RhdGEoc3RydWN0IHJ0ZV9tYnVmICptKSB7DQo+ID4gKwlyZXR1cm4gcnRlX3BrdG1i dWZfbXRvZChtLCBjaGFyICopICsgNCArIDQgKw0KPiBORlBfRkxPV0VSX0NNU0dfSExFTjsgfQ0K PiA+ICsNCj4gPiAraW50IG5mcF9mbG93ZXJfY21zZ19tYWNfcmVwcihzdHJ1Y3QgbmZwX2FwcF9m bG93ZXIgKmFwcF9mbG93ZXIpOyBpbnQNCj4gPiArbmZwX2Zsb3dlcl9jbXNnX3JlcHJfcmVpZnko c3RydWN0IG5mcF9hcHBfZmxvd2VyICphcHBfZmxvd2VyLA0KPiA+ICsJCXN0cnVjdCBuZnBfZmxv d2VyX3JlcHJlc2VudG9yICpyZXByKTsgaW50DQo+ID4gK25mcF9mbG93ZXJfY21zZ19wb3J0X21v ZChzdHJ1Y3QgbmZwX2FwcF9mbG93ZXIgKmFwcF9mbG93ZXIsDQo+ID4gKwkJdWludDMyX3QgcG9y dF9pZCwgYm9vbCBjYXJyaWVyX29rKTsNCj4gPiArDQo+ID4gKyNlbmRpZiAvKiBfTkZQX0NNU0df SF8gKi8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmZwL2Zsb3dlci9uZnBfZmxvd2Vy X3JlcHJlc2VudG9yLmMNCj4gPiBiL2RyaXZlcnMvbmV0L25mcC9mbG93ZXIvbmZwX2Zsb3dlcl9y ZXByZXNlbnRvci5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAw Li45ZjIzYTIzDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L25mcC9m bG93ZXIvbmZwX2Zsb3dlcl9yZXByZXNlbnRvci5jDQo+ID4gQEAgLTAsMCArMSw1MDggQEANCj4g PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiA+ICsgKiBDb3B5 cmlnaHQgKGMpIDIwMjIgQ29yaWdpbmUsIEluYy4NCj4gPiArICogQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8cnRlX2NvbW1vbi5oPg0KPiA+ICsj aW5jbHVkZSA8ZXRoZGV2X3BjaS5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIi4uL25mcF9jb21t b24uaCINCj4gPiArI2luY2x1ZGUgIi4uL25mcF9sb2dzLmgiDQo+ID4gKyNpbmNsdWRlICIuLi9u ZnBfY3RybC5oIg0KPiA+ICsjaW5jbHVkZSAiLi4vbmZwX3J4dHguaCINCj4gPiArI2luY2x1ZGUg Ii4uL25mcGNvcmUvbmZwX21pcC5oIg0KPiA+ICsjaW5jbHVkZSAiLi4vbmZwY29yZS9uZnBfcnRz eW0uaCINCj4gPiArI2luY2x1ZGUgIi4uL25mcGNvcmUvbmZwX25zcC5oIg0KPiA+ICsjaW5jbHVk ZSAibmZwX2Zsb3dlci5oIg0KPiA+ICsjaW5jbHVkZSAibmZwX2Zsb3dlcl9yZXByZXNlbnRvci5o Ig0KPiA+ICsjaW5jbHVkZSAibmZwX2Zsb3dlcl9jdHJsLmgiDQo+ID4gKyNpbmNsdWRlICJuZnBf Zmxvd2VyX2Ntc2cuaCINCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArbmZwX2Zsb3dlcl9y ZXByX2xpbmtfdXBkYXRlKF9fcnRlX3VudXNlZCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aGRldiwN Cj4gPiArCQlfX3J0ZV91bnVzZWQgaW50IHdhaXRfdG9fY29tcGxldGUpDQo+ID4gK3sNCj4gDQo+ IFdoeSBpcyBkdW1teSBpbXBsZW1lbmF0aW9uIE9LPw0KPiANCj4gPiArCXJldHVybiAwOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK25mcF9mbG93ZXJfcmVwcl9kZXZfaW5m b3NfZ2V0KF9fcnRlX3VudXNlZCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiArCQlzdHJ1 Y3QgcnRlX2V0aF9kZXZfaW5mbyAqZGV2X2luZm8pDQo+ID4gK3sNCj4gPiArCS8qIEhhcmRjb2Rl ZCBwa3RsZW4gYW5kIHF1ZXVlcyBmb3Igbm93ICovDQo+ID4gKwlkZXZfaW5mby0+bWF4X3J4X3F1 ZXVlcyA9IDE7DQo+ID4gKwlkZXZfaW5mby0+bWF4X3R4X3F1ZXVlcyA9IDE7DQo+ID4gKwlkZXZf aW5mby0+bWluX3J4X2J1ZnNpemUgPSBSVEVfRVRIRVJfTUlOX01UVTsNCj4gPiArCWRldl9pbmZv LT5tYXhfcnhfcGt0bGVuID0gOTAwMDsNCj4gPiArDQo+ID4gKwlkZXZfaW5mby0+cnhfb2ZmbG9h ZF9jYXBhID0gUlRFX0VUSF9SWF9PRkZMT0FEX1ZMQU5fU1RSSVA7DQo+ID4gKwlkZXZfaW5mby0+ cnhfb2ZmbG9hZF9jYXBhIHw9IFJURV9FVEhfUlhfT0ZGTE9BRF9JUFY0X0NLU1VNDQo+IHwNCj4g PiArCQkJUlRFX0VUSF9SWF9PRkZMT0FEX1VEUF9DS1NVTSB8DQo+ID4gKwkJCVJURV9FVEhfUlhf T0ZGTE9BRF9UQ1BfQ0tTVU07DQo+ID4gKw0KPiA+ICsJZGV2X2luZm8tPnR4X29mZmxvYWRfY2Fw YSA9IFJURV9FVEhfVFhfT0ZGTE9BRF9WTEFOX0lOU0VSVDsNCj4gPiArCWRldl9pbmZvLT50eF9v ZmZsb2FkX2NhcGEgfD0gUlRFX0VUSF9UWF9PRkZMT0FEX0lQVjRfQ0tTVU0NCj4gfA0KPiA+ICsJ CQlSVEVfRVRIX1RYX09GRkxPQURfVURQX0NLU1VNIHwNCj4gPiArCQkJUlRFX0VUSF9UWF9PRkZM T0FEX1RDUF9DS1NVTTsNCj4gPiArCWRldl9pbmZvLT50eF9vZmZsb2FkX2NhcGEgfD0gUlRFX0VU SF9UWF9PRkZMT0FEX1RDUF9UU087DQo+ID4gKwlkZXZfaW5mby0+dHhfb2ZmbG9hZF9jYXBhIHw9 IFJURV9FVEhfVFhfT0ZGTE9BRF9NVUxUSV9TRUdTOw0KPiA+ICsNCj4gPiArCWRldl9pbmZvLT5t YXhfbWFjX2FkZHJzID0gMTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGludA0KPiA+ICtuZnBfZmxvd2VyX3JlcHJfZGV2X2NvbmZpZ3VyZShfX3J0 ZV91bnVzZWQgc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpDQo+IHsNCj4gPiArCXJldHVybiAwOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK25mcF9mbG93ZXJfcmVwcl9kZXZf c3RhcnQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpIHsNCj4gPiArCXN0cnVjdCBuZnBfYXBwX2Zs b3dlciAqYXBwX2Zsb3dlcjsNCj4gPiArCXN0cnVjdCBuZnBfZmxvd2VyX3JlcHJlc2VudG9yICpy ZXByOw0KPiA+ICsNCj4gPiArCXJlcHIgPSAoc3RydWN0IG5mcF9mbG93ZXJfcmVwcmVzZW50b3Ig KilkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiA+ICsJYXBwX2Zsb3dlciA9IHJlcHItPmFwcF9m bG93ZXI7DQo+ID4gKw0KPiA+ICsJaWYgKHJlcHItPnJlcHJfdHlwZSA9PSBORlBfUkVQUl9UWVBF X1BIWVNfUE9SVCkNCj4gPiArCQluZnBfZXRoX3NldF9jb25maWd1cmVkKGFwcF9mbG93ZXItPnBm X2h3LT5wZl9kZXYtPmNwcCwNCj4gPiArCQkJCXJlcHItPm5mcF9pZHgsIDEpOw0KPiA+ICsNCj4g PiArCW5mcF9mbG93ZXJfY21zZ19wb3J0X21vZChhcHBfZmxvd2VyLCByZXByLT5wb3J0X2lkLCB0 cnVlKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IGludA0KPiA+ICtuZnBfZmxvd2VyX3JlcHJfZGV2X3N0b3Aoc3RydWN0IHJ0ZV9ldGhfZGV2ICpk ZXYpIHsNCj4gPiArCXN0cnVjdCBuZnBfYXBwX2Zsb3dlciAqYXBwX2Zsb3dlcjsNCj4gPiArCXN0 cnVjdCBuZnBfZmxvd2VyX3JlcHJlc2VudG9yICpyZXByOw0KPiA+ICsNCj4gPiArCXJlcHIgPSAo c3RydWN0IG5mcF9mbG93ZXJfcmVwcmVzZW50b3IgKilkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0K PiA+ICsJYXBwX2Zsb3dlciA9IHJlcHItPmFwcF9mbG93ZXI7DQo+ID4gKw0KPiA+ICsJbmZwX2Zs b3dlcl9jbXNnX3BvcnRfbW9kKGFwcF9mbG93ZXIsIHJlcHItPnBvcnRfaWQsIGZhbHNlKTsNCj4g PiArDQo+ID4gKwlpZiAocmVwci0+cmVwcl90eXBlID09IE5GUF9SRVBSX1RZUEVfUEhZU19QT1JU KQ0KPiA+ICsJCW5mcF9ldGhfc2V0X2NvbmZpZ3VyZWQoYXBwX2Zsb3dlci0+cGZfaHctPnBmX2Rl di0+Y3BwLA0KPiA+ICsJCQkJcmVwci0+bmZwX2lkeCwgMCk7DQo+ID4gKw0KPiA+ICsJcmV0dXJu IDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArbmZwX2Zsb3dlcl9yZXBy X3J4X3F1ZXVlX3NldHVwKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICsJCXVpbnQxNl90 IHJ4X3F1ZXVlX2lkLA0KPiA+ICsJCV9fcnRlX3VudXNlZCB1aW50MTZfdCBuYl9yeF9kZXNjLA0K PiA+ICsJCXVuc2lnbmVkIGludCBzb2NrZXRfaWQsDQo+ID4gKwkJX19ydGVfdW51c2VkIGNvbnN0 IHN0cnVjdCBydGVfZXRoX3J4Y29uZiAqcnhfY29uZiwNCj4gPiArCQlfX3J0ZV91bnVzZWQgc3Ry dWN0IHJ0ZV9tZW1wb29sICptYl9wb29sKSB7DQo+ID4gKwlzdHJ1Y3QgbmZwX25ldF9yeHEgKnJ4 cTsNCj4gPiArCXN0cnVjdCBuZnBfbmV0X2h3ICpwZl9odzsNCj4gPiArCXN0cnVjdCBuZnBfZmxv d2VyX3JlcHJlc2VudG9yICpyZXByOw0KPiA+ICsNCj4gPiArCXJlcHIgPSAoc3RydWN0IG5mcF9m bG93ZXJfcmVwcmVzZW50b3IgKilkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiA+ICsJcGZfaHcg PSByZXByLT5hcHBfZmxvd2VyLT5wZl9odzsNCj4gPiArDQo+ID4gKwkvKiBBbGxvY2F0aW5nIHJ4 IHF1ZXVlIGRhdGEgc3RydWN0dXJlICovDQo+ID4gKwlyeHEgPSBydGVfem1hbGxvY19zb2NrZXQo ImV0aGRldiBSWCBxdWV1ZSIsIHNpemVvZihzdHJ1Y3QNCj4gbmZwX25ldF9yeHEpLA0KPiA+ICsJ CQlSVEVfQ0FDSEVfTElORV9TSVpFLCBzb2NrZXRfaWQpOw0KPiA+ICsJaWYgKHJ4cSA9PSBOVUxM KQ0KPiA+ICsJCXJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiArCXJ4cS0+aHcgPSBwZl9odzsN Cj4gPiArCXJ4cS0+cWlkeCA9IHJ4X3F1ZXVlX2lkOw0KPiA+ICsJcnhxLT5wb3J0X2lkID0gZGV2 LT5kYXRhLT5wb3J0X2lkOw0KPiA+ICsJZGV2LT5kYXRhLT5yeF9xdWV1ZXNbcnhfcXVldWVfaWRd ID0gcnhxOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgaW50DQo+ID4gK25mcF9mbG93ZXJfcmVwcl90eF9xdWV1ZV9zZXR1cChzdHJ1Y3QgcnRlX2V0 aF9kZXYgKmRldiwNCj4gPiArCQl1aW50MTZfdCB0eF9xdWV1ZV9pZCwNCj4gPiArCQlfX3J0ZV91 bnVzZWQgdWludDE2X3QgbmJfdHhfZGVzYywNCj4gPiArCQl1bnNpZ25lZCBpbnQgc29ja2V0X2lk LA0KPiA+ICsJCV9fcnRlX3VudXNlZCBjb25zdCBzdHJ1Y3QgcnRlX2V0aF90eGNvbmYgKnR4X2Nv bmYpIHsNCj4gPiArCXN0cnVjdCBuZnBfbmV0X3R4cSAqdHhxOw0KPiA+ICsJc3RydWN0IG5mcF9u ZXRfaHcgKnBmX2h3Ow0KPiA+ICsJc3RydWN0IG5mcF9mbG93ZXJfcmVwcmVzZW50b3IgKnJlcHI7 DQo+ID4gKw0KPiA+ICsJcmVwciA9IChzdHJ1Y3QgbmZwX2Zsb3dlcl9yZXByZXNlbnRvciAqKWRl di0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4gKwlwZl9odyA9IHJlcHItPmFwcF9mbG93ZXItPnBm X2h3Ow0KPiA+ICsNCj4gPiArCS8qIEFsbG9jYXRpbmcgdHggcXVldWUgZGF0YSBzdHJ1Y3R1cmUg Ki8NCj4gPiArCXR4cSA9IHJ0ZV96bWFsbG9jX3NvY2tldCgiZXRoZGV2IFRYIHF1ZXVlIiwgc2l6 ZW9mKHN0cnVjdA0KPiBuZnBfbmV0X3R4cSksDQo+ID4gKwkJCVJURV9DQUNIRV9MSU5FX1NJWkUs IHNvY2tldF9pZCk7DQo+ID4gKwlpZiAodHhxID09IE5VTEwpDQo+ID4gKwkJcmV0dXJuIC1FTk9N RU07DQo+ID4gKw0KPiA+ICsJdHhxLT5odyA9IHBmX2h3Ow0KPiA+ICsJdHhxLT5xaWR4ID0gdHhf cXVldWVfaWQ7DQo+ID4gKwl0eHEtPnBvcnRfaWQgPSBkZXYtPmRhdGEtPnBvcnRfaWQ7DQo+ID4g KwlkZXYtPmRhdGEtPnR4X3F1ZXVlc1t0eF9xdWV1ZV9pZF0gPSB0eHE7DQo+ID4gKw0KPiA+ICsJ cmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArbmZwX2Zsb3dl cl9yZXByX3N0YXRzX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aGRldiwNCj4gPiArCQlzdHJ1 Y3QgcnRlX2V0aF9zdGF0cyAqc3RhdHMpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBuZnBfZmxvd2Vy X3JlcHJlc2VudG9yICpyZXByOw0KPiA+ICsNCj4gPiArCXJlcHIgPSAoc3RydWN0IG5mcF9mbG93 ZXJfcmVwcmVzZW50b3IgKilldGhkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiA+ICsJcnRlX21l bWNweShzdGF0cywgJnJlcHItPnJlcHJfc3RhdHMsIHNpemVvZihzdHJ1Y3QgcnRlX2V0aF9zdGF0 cykpOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg aW50DQo+ID4gK25mcF9mbG93ZXJfcmVwcl9zdGF0c19yZXNldChfX3J0ZV91bnVzZWQgc3RydWN0 IHJ0ZV9ldGhfZGV2ICpldGhkZXYpDQo+ID4gK3sNCj4gDQo+IFdoeSBpcyBpdCBPSyB0byBoYXZl IGR1bW15IGltcGxlbWVuYXRpb24gb2YgdGhlIHJlc2V0Pw0KPiANCj4gPiArCXJldHVybiAwOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK25mcF9mbG93ZXJfcmVwcl9wcm9t aXNjdW91c19lbmFibGUoX19ydGVfdW51c2VkIHN0cnVjdCBydGVfZXRoX2Rldg0KPiA+ICsqZXRo ZGV2KSB7DQo+IA0KPiBXaHkgaXMgaXQgT0sgdG8gaGF2ZSBkdW1teSBpbXBsZW1lbnRhdGlvbj8g U2FtZSBxdWVzdGlvbiBmb3IgYWxsIGR1bW15DQo+IGNhbGxiYWNrcyBiZWxvdy4NCj4gDQo+ID4g KwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludA0KPiA+ICtuZnBfZmxv d2VyX3JlcHJfcHJvbWlzY3VvdXNfZGlzYWJsZShfX3J0ZV91bnVzZWQgc3RydWN0DQo+IHJ0ZV9l dGhfZGV2DQo+ID4gKypldGhkZXYpIHsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgdm9pZA0KPiA+ICtuZnBfZmxvd2VyX3JlcHJfbWFjX2FkZHJfcmVtb3ZlKF9f cnRlX3VudXNlZCBzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gKmV0aGRldiwNCj4gPiArCQlfX3J0ZV91 bnVzZWQgdWludDMyX3QgaW5kZXgpDQo+ID4gK3sNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IGludA0KPiA+ICtuZnBfZmxvd2VyX3JlcHJfbWFjX2FkZHJfc2V0KF9fcnRlX3VudXNlZCBzdHJ1 Y3QgcnRlX2V0aF9kZXYNCj4gKmV0aGRldiwNCj4gPiArCQlfX3J0ZV91bnVzZWQgc3RydWN0IHJ0 ZV9ldGhlcl9hZGRyICptYWNfYWRkcikgew0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0YXRpYyB1aW50MTZfdA0KPiA+ICtuZnBfZmxvd2VyX3JlcHJfcnhfYnVyc3Qodm9p ZCAqcnhfcXVldWUsDQo+ID4gKwkJc3RydWN0IHJ0ZV9tYnVmICoqcnhfcGt0cywNCj4gPiArCQl1 aW50MTZfdCBuYl9wa3RzKQ0KPiA+ICt7DQo+ID4gKwl1bnNpZ25lZCBpbnQgYXZhaWxhYmxlID0g MDsNCj4gPiArCXVuc2lnbmVkIGludCB0b3RhbF9kZXF1ZXVlOw0KPiA+ICsJc3RydWN0IG5mcF9u ZXRfcnhxICpyeHE7DQo+ID4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldjsNCj4gPiArCXN0cnVj dCBuZnBfZmxvd2VyX3JlcHJlc2VudG9yICpyZXByOw0KPiA+ICsNCj4gPiArCXJ4cSA9IHJ4X3F1 ZXVlOw0KPiA+ICsJaWYgKHVubGlrZWx5KHJ4cSA9PSBOVUxMKSkgew0KPiA+ICsJCVBNRF9SWF9M T0coRVJSLCAiUlggQmFkIHF1ZXVlIik7DQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1tyeHEtPnBvcnRfaWRdOw0KPiA+ICsJcmVw ciA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4gKwlpZiAodW5saWtlbHkocmVwci0+cmlu ZyA9PSBOVUxMKSkgew0KPiA+ICsJCVBNRF9SWF9MT0coRVJSLCAicmVwcmVzZW50b3IgJXMgaGFz IG5vIHJpbmcgY29uZmlndXJlZCEiLA0KPiA+ICsJCQkJcmVwci0+bmFtZSk7DQo+ID4gKwkJcmV0 dXJuIDA7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJdG90YWxfZGVxdWV1ZSA9IHJ0ZV9yaW5nX2Rl cXVldWVfYnVyc3QocmVwci0+cmluZywgKHZvaWQNCj4gKilyeF9wa3RzLA0KPiA+ICsJCQluYl9w a3RzLCAmYXZhaWxhYmxlKTsNCj4gPiArCWlmICh0b3RhbF9kZXF1ZXVlKSB7DQo+IA0KPiBDb21w YXJlIHZzIDANCj4gDQo+ID4gKwkJUE1EX1JYX0xPRyhERUJVRywgIlJlcHJlc2VudG9yIFJ4IGJ1 cnN0IGZvciAlcywgcG9ydF9pZDoNCj4gMHgleCwgIg0KPiA+ICsJCQkJInJlY2VpdmVkOiAldSwg YXZhaWxhYmxlOiAldSIsIHJlcHItPm5hbWUsDQo+ID4gKwkJCQlyZXByLT5wb3J0X2lkLCB0b3Rh bF9kZXF1ZXVlLCBhdmFpbGFibGUpOw0KPiA+ICsNCj4gPiArCQlyZXByLT5yZXByX3N0YXRzLmlw YWNrZXRzICs9IHRvdGFsX2RlcXVldWU7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHRv dGFsX2RlcXVldWU7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB1aW50MTZfdA0KPiA+ICtu ZnBfZmxvd2VyX3JlcHJfdHhfYnVyc3Qodm9pZCAqdHhfcXVldWUsDQo+ID4gKwkJc3RydWN0IHJ0 ZV9tYnVmICoqdHhfcGt0cywNCj4gPiArCQl1aW50MTZfdCBuYl9wa3RzKQ0KPiA+ICt7DQo+ID4g Kwl1aW50MTZfdCBpOw0KPiA+ICsJdWludDE2X3Qgc2VudDsNCj4gPiArCWNoYXIgKm1ldGFfb2Zm c2V0Ow0KPiA+ICsJc3RydWN0IG5mcF9uZXRfdHhxICp0eHE7DQo+ID4gKwlzdHJ1Y3QgbmZwX25l dF9odyAqcGZfaHc7DQo+ID4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldjsNCj4gPiArCXN0cnVj dCBydGVfZXRoX2RldiAqcmVwcl9kZXY7DQo+ID4gKwlzdHJ1Y3QgbmZwX2Zsb3dlcl9yZXByZXNl bnRvciAqcmVwcjsNCj4gPiArDQo+ID4gKwl0eHEgPSB0eF9xdWV1ZTsNCj4gPiArCWlmICh1bmxp a2VseSh0eHEgPT0gTlVMTCkpIHsNCj4gPiArCQlQTURfUlhfTE9HKEVSUiwgIlRYIEJhZCBxdWV1 ZSIpOw0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIFRoaXMgcG9p bnRzIHRvIHRoZSBQRiB2TklDIHRoYXQgb3ducyB0aGlzIHJlcHJlc2VudG9yICovDQo+ID4gKwlw Zl9odyA9IHR4cS0+aHc7DQo+ID4gKwlkZXYgPSBwZl9ody0+ZXRoX2RldjsNCj4gPiArDQo+ID4g KwkvKiBHcmFiIGEgaGFuZGxlIHRvIHRoZSByZXByZXNlbnRvciBzdHJ1Y3QgKi8NCj4gPiArCXJl cHJfZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1t0eHEtPnBvcnRfaWRdOw0KPiA+ICsJcmVwciA9IHJl cHJfZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4gPiArDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwg bmJfcGt0czsgaSsrKSB7DQo+ID4gKwkJbWV0YV9vZmZzZXQgPSBydGVfcGt0bWJ1Zl9wcmVwZW5k KHR4X3BrdHNbaV0sDQo+IEZMT1dFUl9QS1RfREFUQV9PRkZTRVQpOw0KPiA+ICsJCSoodWludDMy X3QgKiltZXRhX29mZnNldCA9DQo+IHJ0ZV9jcHVfdG9fYmVfMzIoTkZQX05FVF9NRVRBX1BPUlRJ RCk7DQo+ID4gKwkJbWV0YV9vZmZzZXQgKz0gNDsNCj4gPiArCQkqKHVpbnQzMl90ICopbWV0YV9v ZmZzZXQgPSBydGVfY3B1X3RvX2JlXzMyKHJlcHItDQo+ID5wb3J0X2lkKTsNCj4gPiArCX0NCj4g PiArDQo+ID4gKwkvKiBPbmx5IHVzaW5nIFR4IHF1ZXVlIDAgZm9yIG5vdy4gKi8NCj4gPiArCXNl bnQgPSBydGVfZXRoX3R4X2J1cnN0KGRldi0+ZGF0YS0+cG9ydF9pZCwgMCwgdHhfcGt0cywgbmJf cGt0cyk7DQo+ID4gKwlpZiAoc2VudCkgew0KPiANCj4gQ29tcGFyZSB2cyAwDQo+IA0KPiA+ICsJ CVBNRF9UWF9MT0coREVCVUcsICJSZXByZXNlbnRvciBUeCBidXJzdCBmb3IgJXMsIHBvcnRfaWQ6 DQo+IDB4JXggIg0KPiA+ICsJCQkidHJhbnNtaXR0ZWQ6ICV1XG4iLCByZXByLT5uYW1lLCByZXBy LT5wb3J0X2lkLA0KPiBzZW50KTsNCj4gPiArCQlyZXByLT5yZXByX3N0YXRzLm9wYWNrZXRzICs9 IHNlbnQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHNlbnQ7DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZXRoX2Rldl9vcHMgbmZwX2Zsb3dlcl9yZXByX2Rl dl9vcHMgPSB7DQo+ID4gKwkuZGV2X2luZm9zX2dldCAgICAgICAgPSBuZnBfZmxvd2VyX3JlcHJf ZGV2X2luZm9zX2dldCwNCj4gPiArDQo+ID4gKwkuZGV2X3N0YXJ0ICAgICAgICAgICAgPSBuZnBf Zmxvd2VyX3JlcHJfZGV2X3N0YXJ0LA0KPiA+ICsJLmRldl9jb25maWd1cmUgICAgICAgID0gbmZw X2Zsb3dlcl9yZXByX2Rldl9jb25maWd1cmUsDQo+ID4gKwkuZGV2X3N0b3AgICAgICAgICAgICAg PSBuZnBfZmxvd2VyX3JlcHJfZGV2X3N0b3AsDQo+ID4gKw0KPiA+ICsJLnJ4X3F1ZXVlX3NldHVw ICAgICAgID0gbmZwX2Zsb3dlcl9yZXByX3J4X3F1ZXVlX3NldHVwLA0KPiA+ICsJLnR4X3F1ZXVl X3NldHVwICAgICAgID0gbmZwX2Zsb3dlcl9yZXByX3R4X3F1ZXVlX3NldHVwLA0KPiA+ICsNCj4g PiArCS5saW5rX3VwZGF0ZSAgICAgICAgICA9IG5mcF9mbG93ZXJfcmVwcl9saW5rX3VwZGF0ZSwN Cj4gPiArDQo+ID4gKwkuc3RhdHNfZ2V0ICAgICAgICAgICAgPSBuZnBfZmxvd2VyX3JlcHJfc3Rh dHNfZ2V0LA0KPiA+ICsJLnN0YXRzX3Jlc2V0ICAgICAgICAgID0gbmZwX2Zsb3dlcl9yZXByX3N0 YXRzX3Jlc2V0LA0KPiA+ICsNCj4gPiArCS5wcm9taXNjdW91c19lbmFibGUgICA9IG5mcF9mbG93 ZXJfcmVwcl9wcm9taXNjdW91c19lbmFibGUsDQo+ID4gKwkucHJvbWlzY3VvdXNfZGlzYWJsZSAg PSBuZnBfZmxvd2VyX3JlcHJfcHJvbWlzY3VvdXNfZGlzYWJsZSwNCj4gPiArDQo+ID4gKwkubWFj X2FkZHJfcmVtb3ZlICAgICAgPSBuZnBfZmxvd2VyX3JlcHJfbWFjX2FkZHJfcmVtb3ZlLA0KPiA+ ICsJLm1hY19hZGRyX3NldCAgICAgICAgID0gbmZwX2Zsb3dlcl9yZXByX21hY19hZGRyX3NldCwN Cj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyB1aW50MzJfdA0KPiA+ICtuZnBfZmxvd2VyX2dl dF9waHlzX3BvcnRfaWQodWludDhfdCBwb3J0KSB7DQo+ID4gKwlyZXR1cm4gKE5GUF9GTE9XRVJf Q01TR19QT1JUX1RZUEVfUEhZU19QT1JUIDw8IDI4KSB8IHBvcnQ7IH0NCj4gPiArDQo+ID4gK3N0 YXRpYyB1aW50MzJfdA0KPiA+ICtuZnBfZ2V0X3BjaWVfcG9ydF9pZChzdHJ1Y3QgbmZwX2NwcCAq Y3BwLA0KPiA+ICsJCWludCB0eXBlLA0KPiA+ICsJCXVpbnQ4X3Qgdm5pYywNCj4gPiArCQl1aW50 OF90IHF1ZXVlKQ0KPiA+ICt7DQo+ID4gKwl1aW50OF90IG5mcF9wY2llOw0KPiA+ICsJdWludDMy X3QgcG9ydF9pZDsNCj4gPiArDQo+ID4gKwluZnBfcGNpZSA9IE5GUF9DUFBfSU5URVJGQUNFX1VO SVRfb2YobmZwX2NwcF9pbnRlcmZhY2UoY3BwKSk7DQo+ID4gKwlwb3J0X2lkID0gKChuZnBfcGNp ZSAmIDB4MykgPDwgMTQpIHwNCj4gPiArCQkgICgodHlwZSAmIDB4MykgPDwgMTIpIHwNCj4gPiAr CQkgICgodm5pYyAmIDB4M2YpIDw8IDYpIHwNCj4gPiArCQkgIChxdWV1ZSAmIDB4M2YpIHwNCj4g PiArCQkgICgoTkZQX0ZMT1dFUl9DTVNHX1BPUlRfVFlQRV9QQ0lFX1BPUlQgJiAweGYpIDw8DQo+ IDI4KTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gcG9ydF9pZDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIGludA0KPiA+ICtuZnBfZmxvd2VyX3JlcHJfaW5pdChzdHJ1Y3QgcnRlX2V0aF9kZXYg KmV0aF9kZXYsDQo+ID4gKwkJdm9pZCAqaW5pdF9wYXJhbXMpDQo+ID4gK3sNCj4gPiArCWludCBy ZXQ7DQo+ID4gKwl1bnNpZ25lZCBpbnQgbnVtYV9ub2RlOw0KPiA+ICsJY2hhciByaW5nX25hbWVb UlRFX0VUSF9OQU1FX01BWF9MRU5dOw0KPiA+ICsJc3RydWN0IG5mcF9hcHBfZmxvd2VyICphcHBf Zmxvd2VyOw0KPiA+ICsJc3RydWN0IG5mcF9mbG93ZXJfcmVwcmVzZW50b3IgKnJlcHI7DQo+ID4g KwlzdHJ1Y3QgbmZwX2Zsb3dlcl9yZXByZXNlbnRvciAqaW5pdF9yZXByX2RhdGE7DQo+ID4gKw0K PiA+ICsJLyogQ2FzdCB0aGUgaW5wdXQgcmVwcmVzZW50b3IgZGF0YSB0byB0aGUgY29ycmVjdCBz dHJ1Y3QgaGVyZSAqLw0KPiA+ICsJaW5pdF9yZXByX2RhdGEgPSAoc3RydWN0IG5mcF9mbG93ZXJf cmVwcmVzZW50b3IgKilpbml0X3BhcmFtczsNCj4gPiArDQo+ID4gKwlhcHBfZmxvd2VyID0gaW5p dF9yZXByX2RhdGEtPmFwcF9mbG93ZXI7DQo+ID4gKw0KPiA+ICsJLyogTWVtb3J5IGhhcyBiZWVu IGFsbG9jYXRlZCBpbiB0aGUgZXRoX2Rldl9jcmVhdGUoKSBmdW5jdGlvbiAqLw0KPiA+ICsJcmVw ciA9IGV0aF9kZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiA+ICsNCj4gPiArCS8qDQo+ID4gKwkg KiBXZSBuZWVkIG11bHRpcHJvZHVjZSByaW5ncyBhcyB3ZSBjYW4gaGF2ZSBtdWx0aXBsZSBQRiBw b3J0cy4NCj4gPiArCSAqIE9uIHRoZSBvdGhlciBoYW5kLCB3ZSBuZWVkIHNpbmdsZSBjb25zdW1l ciByaW5ncywgYXMganVzdCBvbmUNCj4gPiArCSAqIHJlcHJlc2VudG9yIFBNRCB3aWxsIHRyeSB0 byByZWFkIGZyb20gdGhlIHJpbmcuDQo+ID4gKwkgKi8NCj4gPiArCXNucHJpbnRmKHJpbmdfbmFt ZSwgc2l6ZW9mKHJpbmdfbmFtZSksICIlc18lcyIsDQo+ID4gKwkJaW5pdF9yZXByX2RhdGEtPm5h bWUsICJyaW5nIik7DQo+ID4gKwludW1hX25vZGUgPSBydGVfc29ja2V0X2lkKCk7DQo+ID4gKwly ZXByLT5yaW5nID0gcnRlX3JpbmdfY3JlYXRlKHJpbmdfbmFtZSwgMjU2LCBudW1hX25vZGUsDQo+ IFJJTkdfRl9TQ19ERVEpOw0KPiA+ICsJaWYgKHJlcHItPnJpbmcgPT0gTlVMTCkgew0KPiA+ICsJ CVBNRF9JTklUX0xPRyhFUlIsICJydGVfcmluZ19jcmVhdGUgZmFpbGVkIGZvciAlc1xuIiwNCj4g cmluZ19uYW1lKTsNCj4gPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiArCX0NCj4gPiArDQo+ID4g KwkvKiBDb3B5IGRhdGEgaGVyZSBmcm9tIHRoZSBpbnB1dCByZXByZXNlbnRvciB0ZW1wbGF0ZSov DQo+ID4gKwlyZXByLT52Zl9pZCAgICAgICAgICAgID0gaW5pdF9yZXByX2RhdGEtPnZmX2lkOw0K PiA+ICsJcmVwci0+c3dpdGNoX2RvbWFpbl9pZCA9IGluaXRfcmVwcl9kYXRhLT5zd2l0Y2hfZG9t YWluX2lkOw0KPiA+ICsJcmVwci0+cG9ydF9pZCAgICAgICAgICA9IGluaXRfcmVwcl9kYXRhLT5w b3J0X2lkOw0KPiA+ICsJcmVwci0+bmZwX2lkeCAgICAgICAgICA9IGluaXRfcmVwcl9kYXRhLT5u ZnBfaWR4Ow0KPiA+ICsJcmVwci0+cmVwcl90eXBlICAgICAgICA9IGluaXRfcmVwcl9kYXRhLT5y ZXByX3R5cGU7DQo+ID4gKwlyZXByLT5hcHBfZmxvd2VyICAgICAgID0gaW5pdF9yZXByX2RhdGEt PmFwcF9mbG93ZXI7DQo+ID4gKw0KPiA+ICsJc25wcmludGYocmVwci0+bmFtZSwgc2l6ZW9mKHJl cHItPm5hbWUpLCAiJXMiLA0KPiA+ICtpbml0X3JlcHJfZGF0YS0+bmFtZSk7DQo+ID4gKw0KPiA+ ICsJZXRoX2Rldi0+ZGV2X29wcyA9ICZuZnBfZmxvd2VyX3JlcHJfZGV2X29wczsNCj4gPiArDQo+ ID4gKwlldGhfZGV2LT5yeF9wa3RfYnVyc3QgPSBuZnBfZmxvd2VyX3JlcHJfcnhfYnVyc3Q7DQo+ ID4gKwlldGhfZGV2LT50eF9wa3RfYnVyc3QgPSBuZnBfZmxvd2VyX3JlcHJfdHhfYnVyc3Q7DQo+ ID4gKw0KPiA+ICsJZXRoX2Rldi0+ZGF0YS0+ZGV2X2ZsYWdzIHw9IFJURV9FVEhfREVWX1JFUFJF U0VOVE9SOw0KPiA+ICsNCj4gPiArCWlmIChyZXByLT5yZXByX3R5cGUgPT0gTkZQX1JFUFJfVFlQ RV9QSFlTX1BPUlQpDQo+ID4gKwkJZXRoX2Rldi0+ZGF0YS0+cmVwcmVzZW50b3JfaWQgPSByZXBy LT52Zl9pZDsNCj4gPiArCWVsc2UNCj4gPiArCQlldGhfZGV2LT5kYXRhLT5yZXByZXNlbnRvcl9p ZCA9IHJlcHItPnZmX2lkICsNCj4gPiArCQkJCWFwcF9mbG93ZXItPm51bV9waHlwb3J0X3JlcHJz Ow0KPiA+ICsNCj4gPiArCS8qIFRoaXMgYmFja2VyIHBvcnQgaXMgdGhhdCBvZiB0aGUgZXRoX2Rl dmljZSBjcmVhdGVkIGZvciB0aGUgUEYgdk5JQw0KPiAqLw0KPiA+ICsJZXRoX2Rldi0+ZGF0YS0+ YmFja2VyX3BvcnRfaWQgPQ0KPiA+ICthcHBfZmxvd2VyLT5wZl9ody0+ZXRoX2Rldi0+ZGF0YS0+ cG9ydF9pZDsNCj4gPiArDQo+ID4gKwkvKiBPbmx5IHNpbmdsZSBxdWV1ZXMgZm9yIHJlcHJlc2Vu dG9yIGRldmljZXMgKi8NCj4gPiArCWV0aF9kZXYtPmRhdGEtPm5iX3J4X3F1ZXVlcyA9IDE7DQo+ ID4gKwlldGhfZGV2LT5kYXRhLT5uYl90eF9xdWV1ZXMgPSAxOw0KPiA+ICsNCj4gPiArCS8qIEFs bG9jYXRpbmcgbWVtb3J5IGZvciBtYWMgYWRkciAqLw0KPiA+ICsJZXRoX2Rldi0+ZGF0YS0+bWFj X2FkZHJzID0gcnRlX3ptYWxsb2MoIm1hY19hZGRyIiwNCj4gPiArCQlSVEVfRVRIRVJfQUREUl9M RU4sIDApOw0KPiA+ICsJaWYgKGV0aF9kZXYtPmRhdGEtPm1hY19hZGRycyA9PSBOVUxMKSB7DQo+ ID4gKwkJUE1EX0lOSVRfTE9HKEVSUiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHJl cHINCj4gTUFDIik7DQo+ID4gKwkJcmV0ID0gLUVOT01FTTsNCj4gPiArCQlnb3RvIHJpbmdfY2xl YW51cDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlydGVfZXRoZXJfYWRkcl9jb3B5KCZpbml0X3Jl cHJfZGF0YS0+bWFjX2FkZHIsICZyZXByLQ0KPiA+bWFjX2FkZHIpOw0KPiA+ICsJcnRlX2V0aGVy X2FkZHJfY29weSgmaW5pdF9yZXByX2RhdGEtPm1hY19hZGRyLA0KPiA+ICtldGhfZGV2LT5kYXRh LT5tYWNfYWRkcnMpOw0KPiA+ICsNCj4gPiArCS8qIFNlbmQgcmVpZnkgbWVzc2FnZSB0byBoYXJk d2FyZSB0byBpbmZvcm0gaXQgYWJvdXQgdGhlIG5ldyByZXByDQo+ICovDQo+ID4gKwlyZXQgPSBu ZnBfZmxvd2VyX2Ntc2dfcmVwcl9yZWlmeShhcHBfZmxvd2VyLCByZXByKTsNCj4gPiArCWlmIChy ZXQpIHsNCj4gDQo+IENvbXBhcmUgdnMgMA0KPiANCj4gPiArCQlQTURfSU5JVF9MT0coV0FSTklO RywgIkZhaWxlZCB0byBzZW5kIHJlcHIgcmVpZnkNCj4gbWVzc2FnZSIpOw0KPiA+ICsJCWdvdG8g bWFjX2NsZWFudXA7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyogQWRkIHJlcHIgdG8gY29ycmVj dCBhcnJheSAqLw0KPiA+ICsJaWYgKHJlcHItPnJlcHJfdHlwZSA9PSBORlBfUkVQUl9UWVBFX1BI WVNfUE9SVCkNCj4gPiArCQlhcHBfZmxvd2VyLT5waHlfcmVwcnNbcmVwci0+bmZwX2lkeF0gPSBy ZXByOw0KPiA+ICsJZWxzZQ0KPiA+ICsJCWFwcF9mbG93ZXItPnZmX3JlcHJzW3JlcHItPnZmX2lk XSA9IHJlcHI7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICttYWNfY2xlYW51 cDoNCj4gPiArCXJ0ZV9mcmVlKGV0aF9kZXYtPmRhdGEtPm1hY19hZGRycyk7DQo+ID4gK3Jpbmdf Y2xlYW51cDoNCj4gPiArCXJ0ZV9yaW5nX2ZyZWUocmVwci0+cmluZyk7DQo+ID4gKw0KPiA+ICsJ cmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAraW50DQo+ID4gK25mcF9mbG93ZXJfcmVw cl9hbGxvYyhzdHJ1Y3QgbmZwX2FwcF9mbG93ZXIgKmFwcF9mbG93ZXIpIHsNCj4gPiArCWludCBp Ow0KPiA+ICsJaW50IHJldDsNCj4gPiArCXN0cnVjdCBydGVfZXRoX2RldiAqZXRoX2RldjsNCj4g PiArCXN0cnVjdCBuZnBfZXRoX3RhYmxlICpuZnBfZXRoX3RhYmxlOw0KPiA+ICsJc3RydWN0IG5m cF9ldGhfdGFibGVfcG9ydCAqZXRoX3BvcnQ7DQo+ID4gKwlzdHJ1Y3QgbmZwX2Zsb3dlcl9yZXBy ZXNlbnRvciBmbG93ZXJfcmVwciA9IHsNCj4gPiArCQkuc3dpdGNoX2RvbWFpbl9pZCA9IGFwcF9m bG93ZXItPnN3aXRjaF9kb21haW5faWQsDQo+ID4gKwkJLmFwcF9mbG93ZXIgICAgICAgPSBhcHBf Zmxvd2VyLA0KPiA+ICsJfTsNCj4gPiArDQo+ID4gKwluZnBfZXRoX3RhYmxlID0gYXBwX2Zsb3dl ci0+bmZwX2V0aF90YWJsZTsNCj4gPiArCWV0aF9kZXYgPSBhcHBfZmxvd2VyLT5wZl9ody0+ZXRo X2RldjsNCj4gPiArDQo+ID4gKwkvKiBTZW5kIGEgTkZQX0ZMT1dFUl9DTVNHX1RZUEVfTUFDX1JF UFIgY21zZyB0bw0KPiBoYXJkd2FyZSovDQo+ID4gKwlyZXQgPSBuZnBfZmxvd2VyX2Ntc2dfbWFj X3JlcHIoYXBwX2Zsb3dlcik7DQo+ID4gKwlpZiAocmV0KSB7DQo+IA0KPiBDb21wYXJlIHZzIDAN Cj4gDQo+ID4gKwkJUE1EX0lOSVRfTE9HKEVSUiwgIkNsb3VkIG5vdCBzZW5kIG1hYyByZXByIGNt c2dzIik7DQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBDcmVh dGUgYSBydGVfZXRoX2RldiBmb3IgZXZlcnkgcGh5cG9ydCByZXByZXNlbnRvciAqLw0KPiA+ICsJ Zm9yIChpID0gMDsgaSA8IGFwcF9mbG93ZXItPm51bV9waHlwb3J0X3JlcHJzOyBpKyspIHsNCj4g PiArCQlldGhfcG9ydCA9ICZuZnBfZXRoX3RhYmxlLT5wb3J0c1tpXTsNCj4gPiArCQlmbG93ZXJf cmVwci5yZXByX3R5cGUgPSBORlBfUkVQUl9UWVBFX1BIWVNfUE9SVDsNCj4gPiArCQlmbG93ZXJf cmVwci5wb3J0X2lkID0NCj4gbmZwX2Zsb3dlcl9nZXRfcGh5c19wb3J0X2lkKGV0aF9wb3J0LT5p bmRleCk7DQo+ID4gKwkJZmxvd2VyX3JlcHIubmZwX2lkeCA9IGV0aF9wb3J0LT5ldGhfaW5kZXg7 DQo+ID4gKwkJZmxvd2VyX3JlcHIudmZfaWQgPSBpOw0KPiA+ICsNCj4gPiArCQkvKiBDb3B5IHRo ZSByZWFsIG1hYyBvZiB0aGUgaW50ZXJmYWNlIHRvIHRoZSByZXByZXNlbnRvcg0KPiBzdHJ1Y3Qg Ki8NCj4gPiArCQlydGVfZXRoZXJfYWRkcl9jb3B5KChzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgKill dGhfcG9ydC0NCj4gPm1hY19hZGRyLA0KPiA+ICsJCQkJJmZsb3dlcl9yZXByLm1hY19hZGRyKTsN Cj4gPiArCQlzcHJpbnRmKGZsb3dlcl9yZXByLm5hbWUsICJmbG93ZXJfcmVwcl9wJWQiLCBpKTsN Cj4gPiArDQo+ID4gKwkJLyoNCj4gPiArCQkgKiBDcmVhdGUgYSBldGhfZGV2IGZvciB0aGlzIHJl cHJlc2VudG9yDQo+ID4gKwkJICogVGhpcyB3aWxsIGFsc28gYWxsb2NhdGUgcHJpdmF0ZSBtZW1v cnkgZm9yIHRoZSBkZXZpY2UNCj4gPiArCQkgKi8NCj4gPiArCQlyZXQgPSBydGVfZXRoX2Rldl9j cmVhdGUoZXRoX2Rldi0+ZGV2aWNlLA0KPiBmbG93ZXJfcmVwci5uYW1lLA0KPiA+ICsJCQkJc2l6 ZW9mKHN0cnVjdCBuZnBfZmxvd2VyX3JlcHJlc2VudG9yKSwNCj4gPiArCQkJCU5VTEwsIE5VTEws IG5mcF9mbG93ZXJfcmVwcl9pbml0LA0KPiAmZmxvd2VyX3JlcHIpOw0KPiA+ICsJCWlmIChyZXQp IHsNCj4gDQo+IENvbXBhcmUgdnMgMA0KPiANCj4gPiArCQkJUE1EX0lOSVRfTE9HKEVSUiwgIkNs b3VkIG5vdCBjcmVhdGUgZXRoX2RldiBmb3INCj4gcmVwciIpOw0KPiA+ICsJCQlicmVhazsNCj4g PiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKGkgPCBhcHBfZmxvd2VyLT5udW1fcGh5 cG9ydF9yZXBycykNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArCS8qDQo+ID4gKwkg KiBOb3cgYWxsb2NhdGUgZXRoX2RldidzIGZvciBWRiByZXByZXNlbnRvcnMuDQo+ID4gKwkgKiBB bHNvIHNlbmQgcmVpZnkgbWVzc2FnZXMNCj4gPiArCSAqLw0KPiA+ICsJZm9yIChpID0gMDsgaSA8 IGFwcF9mbG93ZXItPm51bV92Zl9yZXByczsgaSsrKSB7DQo+ID4gKwkJZmxvd2VyX3JlcHIucmVw cl90eXBlID0gTkZQX1JFUFJfVFlQRV9WRjsNCj4gPiArCQlmbG93ZXJfcmVwci5wb3J0X2lkID0g bmZwX2dldF9wY2llX3BvcnRfaWQoYXBwX2Zsb3dlci0NCj4gPnBmX2h3LT5jcHAsDQo+ID4gKwkJ CQlORlBfRkxPV0VSX0NNU0dfUE9SVF9WTklDX1RZUEVfVkYsDQo+IGksIDApOw0KPiA+ICsJCWZs b3dlcl9yZXByLm5mcF9pZHggPSAwOw0KPiA+ICsJCWZsb3dlcl9yZXByLnZmX2lkID0gaTsNCj4g PiArDQo+ID4gKwkJLyogVkYgcmVwcnMgZ2V0IGEgcmFuZG9tIE1BQyBhZGRyZXNzICovDQo+ID4g KwkJcnRlX2V0aF9yYW5kb21fYWRkcihmbG93ZXJfcmVwci5tYWNfYWRkci5hZGRyX2J5dGVzKTsN Cj4gPiArDQo+ID4gKwkJc3ByaW50ZihmbG93ZXJfcmVwci5uYW1lLCAiZmxvd2VyX3JlcHJfdmYl ZCIsIGkpOw0KPiA+ICsNCj4gPiArCQkgLyogVGhpcyB3aWxsIGFsc28gYWxsb2NhdGUgcHJpdmF0 ZSBtZW1vcnkgZm9yIHRoZSBkZXZpY2UqLw0KPiA+ICsJCXJldCA9IHJ0ZV9ldGhfZGV2X2NyZWF0 ZShldGhfZGV2LT5kZXZpY2UsDQo+IGZsb3dlcl9yZXByLm5hbWUsDQo+ID4gKwkJCQlzaXplb2Yo c3RydWN0IG5mcF9mbG93ZXJfcmVwcmVzZW50b3IpLA0KPiA+ICsJCQkJTlVMTCwgTlVMTCwgbmZw X2Zsb3dlcl9yZXByX2luaXQsDQo+ICZmbG93ZXJfcmVwcik7DQo+ID4gKwkJaWYgKHJldCkgew0K PiANCj4gQ29tcGFyZSB2cyAwDQo+IA0KPiA+ICsJCQlQTURfSU5JVF9MT0coRVJSLCAiQ2xvdWQg bm90IGNyZWF0ZSBldGhfZGV2IGZvcg0KPiByZXByIik7DQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsJ CX0NCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAoaSA8IGFwcF9mbG93ZXItPm51bV92Zl9yZXBy cykNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25mcC9mbG93ZXIvbmZwX2Zsb3dlcl9yZXByZXNl bnRvci5oDQo+ID4gYi9kcml2ZXJzL25ldC9uZnAvZmxvd2VyL25mcF9mbG93ZXJfcmVwcmVzZW50 b3IuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uNmVlNTRm MQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL25ldC9uZnAvZmxvd2VyL25m cF9mbG93ZXJfcmVwcmVzZW50b3IuaA0KPiA+IEBAIC0wLDAgKzEsMzkgQEANCj4gPiArLyogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiA+ICsgKiBDb3B5cmlnaHQoYykg MjAyMiBDb3JpZ2luZSwgSW5jLg0KPiA+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICsg Ki8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX05GUF9GTE9XRVJfUkVQUkVTRU5UT1JfSF8NCj4gPiAr I2RlZmluZSBfTkZQX0ZMT1dFUl9SRVBSRVNFTlRPUl9IXw0KPiA+ICsNCj4gPiArLyoNCj4gPiAr ICogZW51bSBuZnBfcmVwcl90eXBlIC0gdHlwZSBvZiByZXByZXNlbnRvcg0KPiA+ICsgKiBATkZQ X1JFUFJfVFlQRV9QSFlTX1BPUlQ6ICAgZXh0ZXJuYWwgTklDIHBvcnQNCj4gPiArICogQE5GUF9S RVBSX1RZUEVfUEY6ICAgICAgICAgIHBoeXNpY2FsIGZ1bmN0aW9uDQo+ID4gKyAqIEBORlBfUkVQ Ul9UWVBFX1ZGOiAgICAgICAgICB2aXJ0dWFsIGZ1bmN0aW9uDQo+ID4gKyAqIEBORlBfUkVQUl9U WVBFX01BWDogICAgICAgICBudW1iZXIgb2YgcmVwcmVzZW50b3IgdHlwZXMNCj4gPiArICovDQo+ ID4gK2VudW0gbmZwX3JlcHJfdHlwZSB7DQo+ID4gKwlORlBfUkVQUl9UWVBFX1BIWVNfUE9SVCA9 IDAsDQo+ID4gKwlORlBfUkVQUl9UWVBFX1BGLA0KPiA+ICsJTkZQX1JFUFJfVFlQRV9WRiwNCj4g PiArCU5GUF9SRVBSX1RZUEVfTUFYLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IG5mcF9m bG93ZXJfcmVwcmVzZW50b3Igew0KPiA+ICsJdWludDE2X3QgdmZfaWQ7DQo+ID4gKwl1aW50MTZf dCBzd2l0Y2hfZG9tYWluX2lkOw0KPiA+ICsJdWludDMyX3QgcmVwcl90eXBlOw0KPiA+ICsJdWlu dDMyX3QgcG9ydF9pZDsNCj4gPiArCXVpbnQzMl90IG5mcF9pZHg7ICAgIC8qIG9ubHkgdmFsaWQg Zm9yIHRoZSByZXByIG9mIHBoeXNpY2FsIHBvcnQgKi8NCj4gPiArCWNoYXIgbmFtZVtSVEVfRVRI X05BTUVfTUFYX0xFTl07DQo+ID4gKwlzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgbWFjX2FkZHI7DQo+ ID4gKwlzdHJ1Y3QgbmZwX2FwcF9mbG93ZXIgKmFwcF9mbG93ZXI7DQo+ID4gKwlzdHJ1Y3QgcnRl X3JpbmcgKnJpbmc7DQo+ID4gKwlzdHJ1Y3QgcnRlX2V0aF9saW5rICpsaW5rOw0KPiA+ICsJc3Ry dWN0IHJ0ZV9ldGhfc3RhdHMgcmVwcl9zdGF0czsNCj4gPiArfTsNCj4gPiArDQo+ID4gK2ludCBu ZnBfZmxvd2VyX3JlcHJfYWxsb2Moc3RydWN0IG5mcF9hcHBfZmxvd2VyICphcHBfZmxvd2VyKTsN Cj4gPiArDQo+ID4gKyNlbmRpZiAvKiBfTkZQX0ZMT1dFUl9SRVBSRVNFTlRPUl9IXyAqLw0KPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZnAvbWVzb24uYnVpbGQgYi9kcml2ZXJzL25ldC9u ZnAvbWVzb24uYnVpbGQNCj4gPiBpbmRleCA4NzEwMjEzLi44YTYzOTc5IDEwMDY0NA0KPiA+IC0t LSBhL2RyaXZlcnMvbmV0L25mcC9tZXNvbi5idWlsZA0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L25m cC9tZXNvbi5idWlsZA0KPiA+IEBAIC03LDcgKzcsOSBAQCBpZiBub3QgaXNfbGludXggb3Igbm90 IGRwZGtfY29uZi5nZXQoJ1JURV9BUkNIXzY0JykNCj4gPiAgIGVuZGlmDQo+ID4gICBzb3VyY2Vz ID0gZmlsZXMoDQo+ID4gICAgICAgICAgICdmbG93ZXIvbmZwX2Zsb3dlci5jJywNCj4gPiArICAg ICAgICAnZmxvd2VyL25mcF9mbG93ZXJfY21zZy5jJywNCj4gPiAgICAgICAgICAgJ2Zsb3dlci9u ZnBfZmxvd2VyX2N0cmwuYycsDQo+ID4gKyAgICAgICAgJ2Zsb3dlci9uZnBfZmxvd2VyX3JlcHJl c2VudG9yLmMnLA0KPiA+ICAgICAgICAgICAnbmZwY29yZS9uZnBfY3BwX3BjaWVfb3BzLmMnLA0K PiA+ICAgICAgICAgICAnbmZwY29yZS9uZnBfbnNwLmMnLA0KPiA+ICAgICAgICAgICAnbmZwY29y ZS9uZnBfY3BwY29yZS5jJywNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmZwL25mcGNv cmUvbmZwX2NwcF9wY2llX29wcy5jDQo+ID4gYi9kcml2ZXJzL25ldC9uZnAvbmZwY29yZS9uZnBf Y3BwX3BjaWVfb3BzLmMNCj4gPiBpbmRleCAwOGJjNGU4Li4yMmM4YmM0IDEwMDY0NA0KPiA+IC0t LSBhL2RyaXZlcnMvbmV0L25mcC9uZnBjb3JlL25mcF9jcHBfcGNpZV9vcHMuYw0KPiA+ICsrKyBi L2RyaXZlcnMvbmV0L25mcC9uZnBjb3JlL25mcF9jcHBfcGNpZV9vcHMuYw0KPiA+IEBAIC05MSw3 ICs5MSwxMCBAQA0KPiA+ICAgICogQHJlZmNudDoJbnVtYmVyIG9mIGN1cnJlbnQgdXNlcnMNCj4g PiAgICAqIEBpb21lbToJbWFwcGVkIElPIG1lbW9yeQ0KPiA+ICAgICovDQo+ID4gKyNkZWZpbmUg TkZQX0JBUl9NSU4gMQ0KPiA+ICsjZGVmaW5lIE5GUF9CQVJfTUlEIDUNCj4gPiAgICNkZWZpbmUg TkZQX0JBUl9NQVggNw0KPiA+ICsNCj4gPiAgIHN0cnVjdCBuZnBfYmFyIHsNCj4gPiAgIAlzdHJ1 Y3QgbmZwX3BjaWVfdXNlciAqbmZwOw0KPiA+ICAgCXVpbnQzMl90IGJhcmNmZzsNCj4gPiBAQCAt MjkyLDYgKzI5NSw3IEBAIHN0cnVjdCBuZnBfcGNpZV91c2VyIHsNCj4gPiAgICAqIEJBUjAuMDog UmVzZXJ2ZWQgZm9yIEdlbmVyYWwgTWFwcGluZyAoZm9yIE1TSS1YIGFjY2VzcyB0byBQQ0llIFNS QU0pDQo+ID4gICAgKg0KPiA+ICAgICogICAgICAgICBIYWx2aW5nIFBDSXRvQ1BQQmFycyBmb3Ig cHJpbWFyeSBhbmQgc2Vjb25kYXJ5IHByb2Nlc3Nlcy4NCj4gPiArICogICAgICAgICBGb3IgQ29y ZU5JQyBmaXJtd2FyZToNCj4gPiAgICAqICAgICAgICAgTkZQIFBNRCBqdXN0IHJlcXVpcmVzIHR3 byBmaXhlZCBzbG90cywgb25lIGZvciBjb25maWd1cmF0aW9uIEJBUiwNCj4gPiAgICAqICAgICAg ICAgYW5kIGFub3RoZXIgZm9yIGFjY2Vzc2luZyB0aGUgaHcgcXVldWVzLiBBbm90aGVyIHNsb3Qg aXMgbmVlZGVkDQo+ID4gICAgKiAgICAgICAgIGZvciBzZXR0aW5nIHRoZSBsaW5rIHVwIG9yIGRv d24uIFNlY29uZGFyeSBwcm9jZXNzZXMgZG8gbm90IG5lZWQNCj4gPiBAQCAtMzAxLDYgKzMwNSw5 IEBAIHN0cnVjdCBuZnBfcGNpZV91c2VyIHsNCj4gPiAgICAqICAgICAgICAgc3VwcG9ydGVkLiBE dWUgdG8gdGhpcyByZXF1aXJlbWVudCBhbmQgZnV0dXJlIGV4dGVuc2lvbnMgcmVxdWlyaW5nDQo+ ID4gICAgKiAgICAgICAgIG5ldyBzbG90cyBwZXIgcHJvY2Vzcywgb25seSBvbmUgc2Vjb25kYXJ5 IHByb2Nlc3MgaXMgc3VwcG9ydGVkIGJ5DQo+ID4gICAgKiAgICAgICAgIG5vdy4NCj4gPiArICog ICAgICAgICBGb3IgRmxvd2VyIGZpcm13YXJlOg0KPiA+ICsgKiAgICAgICAgIE5GUCBQTUQgbmVl ZCBhbm90aGVyIGZpeGVkIHNsb3RzLCB1c2VkIGFzIHRoZSBjb25maWd1cmVhdGlvbiBCQVINCj4g PiArICogICAgICAgICBmb3IgY3RybCB2TklDLg0KPiA+ICAgICovDQo+ID4gICBzdGF0aWMgaW50 DQo+ID4gICBuZnBfZW5hYmxlX2JhcnMoc3RydWN0IG5mcF9wY2llX3VzZXIgKm5mcCkgQEAgLTMw OSwxMSArMzE2LDExIEBADQo+ID4gc3RydWN0IG5mcF9wY2llX3VzZXIgew0KPiA+ICAgCWludCB4 LCBzdGFydCwgZW5kOw0KPiA+DQo+ID4gICAJaWYgKHJ0ZV9lYWxfcHJvY2Vzc190eXBlKCkgPT0g UlRFX1BST0NfUFJJTUFSWSkgew0KPiA+IC0JCXN0YXJ0ID0gNDsNCj4gPiAtCQllbmQgPSAxOw0K PiA+ICsJCXN0YXJ0ID0gTkZQX0JBUl9NSUQ7DQo+ID4gKwkJZW5kID0gTkZQX0JBUl9NSU47DQo+ IA0KPiBUaGVzZSBhbmQgc2ltaWxhciBjaGFuZ2VzIGJlbG93IGxvb2sgdW5yZWxhdGVkIHRvIHRo ZSBwYXRjaC4NCj4gDQo+ID4gICAJfSBlbHNlIHsNCj4gPiAtCQlzdGFydCA9IDc7DQo+ID4gLQkJ ZW5kID0gNDsNCj4gPiArCQlzdGFydCA9IE5GUF9CQVJfTUFYOw0KPiA+ICsJCWVuZCA9IE5GUF9C QVJfTUlEOw0KPiA+ICAgCX0NCj4gPiAgIAlmb3IgKHggPSBzdGFydDsgeCA+IGVuZDsgeC0tKSB7 DQo+ID4gICAJCWJhciA9ICZuZnAtPmJhclt4IC0gMV07DQo+ID4gQEAgLTM0MSwxMSArMzQ4LDEx IEBAIHN0cnVjdCBuZnBfcGNpZV91c2VyIHsNCj4gPiAgIAlpbnQgeCwgc3RhcnQsIGVuZDsNCj4g Pg0KPiA+ICAgCWlmIChydGVfZWFsX3Byb2Nlc3NfdHlwZSgpID09IFJURV9QUk9DX1BSSU1BUlkp IHsNCj4gPiAtCQlzdGFydCA9IDQ7DQo+ID4gLQkJZW5kID0gMTsNCj4gPiArCQlzdGFydCA9IE5G UF9CQVJfTUlEOw0KPiA+ICsJCWVuZCA9IE5GUF9CQVJfTUlOOw0KPiA+ICAgCX0gZWxzZSB7DQo+ ID4gLQkJc3RhcnQgPSA3Ow0KPiA+IC0JCWVuZCA9IDQ7DQo+ID4gKwkJc3RhcnQgPSBORlBfQkFS X01BWDsNCj4gPiArCQllbmQgPSBORlBfQkFSX01JRDsNCj4gPiAgIAl9DQo+ID4gICAJZm9yICh4 ID0gc3RhcnQ7IHggPiBlbmQ7IHgtLSkgew0KPiA+ICAgCQliYXIgPSAmbmZwLT5iYXJbeCAtIDFd Ow0KPiA+IEBAIC0zNjQsMTEgKzM3MSwxMSBAQCBzdHJ1Y3QgbmZwX3BjaWVfdXNlciB7DQo+ID4g ICAJaW50IHgsIHN0YXJ0LCBlbmQ7DQo+ID4NCj4gPiAgIAlpZiAocnRlX2VhbF9wcm9jZXNzX3R5 cGUoKSA9PSBSVEVfUFJPQ19QUklNQVJZKSB7DQo+ID4gLQkJc3RhcnQgPSA0Ow0KPiA+IC0JCWVu ZCA9IDE7DQo+ID4gKwkJc3RhcnQgPSBORlBfQkFSX01JRDsNCj4gPiArCQllbmQgPSBORlBfQkFS X01JTjsNCj4gPiAgIAl9IGVsc2Ugew0KPiA+IC0JCXN0YXJ0ID0gNzsNCj4gPiAtCQllbmQgPSA0 Ow0KPiA+ICsJCXN0YXJ0ID0gTkZQX0JBUl9NQVg7DQo+ID4gKwkJZW5kID0gTkZQX0JBUl9NSUQ7 DQo+ID4gICAJfQ0KPiA+DQo+ID4gICAJZm9yICh4ID0gc3RhcnQ7IHggPiBlbmQ7IHgtLSkgew0K DQo=