From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 46D872DCBE3 for ; Mon, 13 Jul 2026 03:13:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=210.61.82.184 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783912403; cv=fail; b=GeAX7UFixKOUHfJxDo3cud+l3X3U8CC0CJ62REhxU68hDO9mp0hII8OrEupLZiGp5zANqIIWTyfDZ7DEQCNxhS02N06j0fAdRKGk09IWsa0U+SlXvH/sjjmUsz4Fzh2sMd41MNt7tAd+wlN2WTvoWrZyv9XSD7EIxLc8ObpqlUg= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783912403; c=relaxed/simple; bh=vX9XJkUsr+TyAver21f0OESEP7kXGJOzK6Mg0Ze2l7M=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=LnRW1SBOPpno4U453lHBuHcId9LeCdgRXAs5pyitGqPjohLr0onWWskSATMBn6lWh0dqSGC00mwYrdwBhI/G5ugCjvv+HkapN853m7PO7VDzOqpo+G2WodL/f6G3IDYZeu9w5ViLI+447eHFdam+ZG4zQEI+D5dYBJ/XZT32W3M= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=mediatek.com; spf=pass smtp.mailfrom=mediatek.com; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b=Kyjlt7t6; dkim=pass (1024-bit key) header.d=mediateko365.onmicrosoft.com header.i=@mediateko365.onmicrosoft.com header.b=PQuV8qbT; arc=fail smtp.client-ip=210.61.82.184 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=mediatek.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=mediatek.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="Kyjlt7t6"; dkim=pass (1024-bit key) header.d=mediateko365.onmicrosoft.com header.i=@mediateko365.onmicrosoft.com header.b="PQuV8qbT" X-UUID: c63047ec7e6811f18dc8c9802ae25ab1-20260713 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=MIME-Version:Content-Transfer-Encoding:Content-ID:Content-Type:In-Reply-To:References:Message-ID:Date:Subject:CC:To:From; bh=vX9XJkUsr+TyAver21f0OESEP7kXGJOzK6Mg0Ze2l7M=; b=Kyjlt7t6W0cSyMEPza47Awsu2VtwpvNP69Tvopv6UsqgtCvq0Ofgs0w0st/NMN8s54cBu79FHqDjxSUBlt+gef4XWsQnyEACy8/kW6QnX2bHVLo4GkMRq1tgc5wOVeM333nc2SlB0+zo6+Py/NmwqdAe3tJBHaohNIqHIcTB6sE=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.17,REQID:b241ab36-e987-4969-aff0-710e49cdbd6f,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:0 X-CID-META: VersionHash:d497b38,CLOUDID:0f7e0c19-ab14-4403-9336-76696324c5a8,B ulkID:nil,BulkQuantity:0,SF:80|81|82|83|102|110|111|136|836|865|888|898,TC :-5,Content:0|15|50|99,EDM:-3|-100,IP:nil,URL:0,File:130,RT:0,Bulk:nil,QS: nil,BEC:-1,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC :0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: c63047ec7e6811f18dc8c9802ae25ab1-20260713 Received: from mtkmbs14n1.mediatek.inc [(172.21.101.75)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 437925320; Mon, 13 Jul 2026 11:13:09 +0800 Received: from mtkmbs10n2.mediatek.inc (172.21.101.183) by MTKMBS09N1.mediatek.inc (172.21.101.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Mon, 13 Jul 2026 11:13:07 +0800 Received: from SG2PR04CU009.outbound.protection.outlook.com (172.21.101.237) by mtkmbs10n2.mediatek.inc (172.21.101.183) with Microsoft SMTP Server id 15.2.2562.29 via Frontend Transport; Mon, 13 Jul 2026 11:13:07 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CUuW/c8Z4zQ4dPbUJZqM/mc3fFlndsppCXtRU+rmS6yqFzl/vp9wL360Q4J7ZL2ikLyYtB7lq1okev+lTAClY9a/+NHuz/2vSjbtAacK6mFOgtTjAMYC2qWBo+fv9r1F+NyRH/BbOSTYDId6k2NRebFg/WiUFBxg7p+7dl5+dq/eBuzI0l0lpPLAaRZvKLpxEi7UT/2wttUSep0VLJyj8tHcEt08e7RXLg6CvEOypGIeChQUISAbGJ1HEXLgsy1lQVWPCg5InzUZU8Bo3QdE6apHnsWw8wrVeaLEnJy2mt2fekTXKP1AD6no3VJXtFFgB6vmUrNWTlbUG1G6JEJjjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=vX9XJkUsr+TyAver21f0OESEP7kXGJOzK6Mg0Ze2l7M=; b=Hl6UF5aov/lrsqsc61qVYPV6IzaPUeFcXfvH/jqdmltKXUzMEhciGEk2WiPYEql8YCccnLtr0IjVI8pyoJaRCUYtR1pktt88mtmEeqy52MC/IICNfU/44BgpcE5seHhxtnBUWMjFg1icpynR+x/bkm2Q5xMIl7bZX7u5lNGt0Vz0ido5Fa232EAcYquST9uQK6SZxEJupFe3Yw0iKFsLpgqF+QjTpFuRtdijfLJMFq5d+rttXjYztRwh98Vvu0GVoa80zJqwVETPeadxGrcg7e5Vp7R0lLHw+G5XHw8Ogr7uE2ckpngKxyx7kiHc+YVEYaySdNa2Lt9U9idDGxCe8g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mediatek.com; dmarc=pass action=none header.from=mediatek.com; dkim=pass header.d=mediatek.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mediateko365.onmicrosoft.com; s=selector2-mediateko365-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vX9XJkUsr+TyAver21f0OESEP7kXGJOzK6Mg0Ze2l7M=; b=PQuV8qbTzAmCLS8XjgERoSTCKcEhzFNSoaQdTh5ZuadIL/k77CJsYy+tLu5QqDGPHMFnde7oQJwXSdBmEYplPbSZSJLDh9ISOm0YrnYER9lkZw1l4piXLq9wx1ZBdfuf4KsP8lT4F3lzIbToCnh2GuPqBF4dfmdcioOkVBv/iSE= Received: from KL1PR03MB7079.apcprd03.prod.outlook.com (2603:1096:820:d5::5) by OSNPR03MB10352.apcprd03.prod.outlook.com (2603:1096:604:49f::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.202.18; Mon, 13 Jul 2026 03:13:05 +0000 Received: from KL1PR03MB7079.apcprd03.prod.outlook.com ([fe80::9bd3:f66a:efd4:f6af]) by KL1PR03MB7079.apcprd03.prod.outlook.com ([fe80::9bd3:f66a:efd4:f6af%4]) with mapi id 15.21.0181.019; Mon, 13 Jul 2026 03:13:05 +0000 From: =?utf-8?B?RWFzb24gTGFpICjos7TmmJPogZYp?= To: "lorenzo@kernel.org" CC: =?utf-8?B?WWYgTHVvICjnvoXlhYPlr4wp?= , "nbd@nbd.name" , =?utf-8?B?S3VuIFd1ICjlkLPorLnoh7Mp?= , =?utf-8?B?UXVhbiBaaG91ICjlkajlhagp?= , =?utf-8?B?RGVyZW4gV3UgKOatpuW+t+S7gSk=?= , Ryder Lee , "linux-wireless@vger.kernel.org" , Sean Wang , =?utf-8?B?TGVvbiBZZW4gKOmhj+iJr+WEkik=?= , "linux-mediatek@lists.infradead.org" , =?utf-8?B?TGl0aWVuIENoYW5nICjlvLXnq4vlhbgp?= , =?utf-8?B?SkIgVHNhaSAo6JSh5b+X5b2sKQ==?= Subject: Re: [PATCH 2/3] wifi: mt76: mt792x: Add TX page pool support for IOMMU-enabled systems Thread-Topic: [PATCH 2/3] wifi: mt76: mt792x: Add TX page pool support for IOMMU-enabled systems Thread-Index: AQHdD3hv7/OxpxytM0ioOOUPQysXCrZk2oAAgAXxlgA= Date: Mon, 13 Jul 2026 03:13:05 +0000 Message-ID: References: <20260709075558.1654164-1-eason.lai@mediatek.com> <20260709075558.1654164-3-eason.lai@mediatek.com> In-Reply-To: Accept-Language: zh-TW, 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=mediatek.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: KL1PR03MB7079:EE_|OSNPR03MB10352:EE_ x-ms-office365-filtering-correlation-id: 6925b0ca-f253-4751-0b42-08dee08ca826 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|23010399003|376014|6133799003|38070700021|18002099003|22082099003|56012099006|4143699003|11063799006; x-microsoft-antispam-message-info: 71yG3oTNXaaX1TILVliWI1fsqNqhjsgCj0nFml2jHLGyduuOmKoSi4WIB0PBmRke/aFlO0//bJ8bOiBbh/E1UkCre7Tkf+SVHr3WjqPDGlVIU235tsgT1JORuVpX8ssno62Unfua8Ec4e40TzutT41IITsA8CVvrwZBXGowbRNPV9lr3YLEQieJOg5zyApRll6oGYYmEx20r8lK9GTbhOn2i9SAeTXkqcOcCNs0wY2uapuAvEi7nvv6ovLinY/A91DYu5Mwoxho/VZfnmhJy0lkhsq2pBBZQ7yGYUCRwyZWTr/GXfUhzcSAiaPkuZHEsCf5MfnBswMxpAWwcl1rrjeBBZY1BKisKBai7OWfvhSk6CjXfh1dZWlxCcnFFDp53jD47qCnIZwXy38zgRPKhhPGhB5SY/G+DrwfSb+Cw1LQmOfgOC4S0TEBgkDHYio0ImM5ib0eEmGxOffezIM4MHZTPstDcifhaZArAbFIywM/4upmY2JAtTQSj1uL4qudXMBvxkb6KOF1StWr+z0BAmCwDaG/yk5Qlnw3BbtTXZE9EcddxWPMzMCWAc+hyYAGxsU9tVQAy72sFgqmI91VsHVB8B6KmsQxdZ3BwVzXkt6SMzuRJjnOzyx9hZ956hY353TmqTYfQuLmkCaCxS9TDQvdHdsCqRQJH1oAl8Y3Qq4r3uXDGFIi8TfWiLe3nqyHs3JIQmmF6nZLsaqHe1BnsVFsQ2HUrsNeCJ+fPnbV/mrA= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:KL1PR03MB7079.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(376014)(6133799003)(38070700021)(18002099003)(22082099003)(56012099006)(4143699003)(11063799006);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YVpVVURzSTZzaDNSdFZlM1dqTWljdHU4MEUrQUdxVGkzckNQMjBQbHVkbTRi?= =?utf-8?B?VlhNZ1dteTByajhYSXdCTVlnRm15aUZPQXcvd3UrRFh3bnpJYmRnSzlTUWNX?= =?utf-8?B?RXpnaWdreWV2ZG5rWVN0UmlJRTNpOGhqZ0FobDBsc0ZvYk05S1piWEI1YjQx?= =?utf-8?B?UE9vVEpjYUNlTkFuVmxmcFpoS2xYaVhKRzlDS0RPcVROd05VbGFWeWE3ejFY?= =?utf-8?B?VmE0c01zeEpyeUpOYlNOcDZwY0ppVnZoaFplRTdoMDNnUkRKbk0zWnU4Vm9F?= =?utf-8?B?Zzk1WXZJVC9JRldSK3gvZU9rdEEya0VHMGd4akZFUGpQL2dmVkVXTmhSNFlt?= =?utf-8?B?SytqUnJ0RXRJcGg4aVRPQVIrS2czUmJwWHBGSjFMVERxbTVwTktnVWd0U2tT?= =?utf-8?B?d2VGSk5MWWppZ20wemRnQmxJa3AzTDdUOEhxNGg1a0VIQnB0eWxoMmZTaGY5?= =?utf-8?B?WDNiM09aRURjMFNBZ0ZNOTF3eWdaV2hBaVR1WGlLUm5qS0d4bDNtQ01TWS9p?= =?utf-8?B?N2IvOTRBR0YrcXhXTW1lQVVEQjRQcEFSSmFRVTBJREk4cDE3OUZBTkJ6aXl5?= =?utf-8?B?bmdPSm5iR1k3a1ZZS2NGK0FrZWJlVitzUUdCWnZOTGdoWlFQbzlVT012cGZU?= =?utf-8?B?WGRDU24xbG5mRHlwU3hpSUF3czlpWkthRTVPV0UwUXFCZGhWWTg0UFlSSzR3?= =?utf-8?B?OUxOaTk2a0xYem9CaWVvb0VaUUJJN0JMYXlFVDVvNTNaY0hIT1FxN0VVaU04?= =?utf-8?B?UkRNQS92TnQ4a09SZXNreGN5Q1R4M1VXTkVRYTJXS2FoUHBmV2tLUVRqWDg1?= =?utf-8?B?NHI0QitqWFROdWs5WWNCMWNQT0JwR1pYNUs4RENuTHJscFZmUmZYaFFBRk1l?= =?utf-8?B?dzJJdU5vWEF3dHF1ckFKUHhMaWdQNDRYN2VHUFIzZWgyeDYvRnZCUGpzb1B4?= =?utf-8?B?dWNmVTRYOTRxbE1Xd3c5bXdVY0I3c2lJb1l4d2xaenRpWW0yWGZEcGxQd1E2?= =?utf-8?B?TUhiVmJWZGJ0ZTlXdDFhWm1XSUhqNXpUT0VtV1VPS0ZyazI3VHU5TTFibnBz?= =?utf-8?B?WldyQTQ0S0dEakI4YzVRT2VVckhlVVc3ZkFPL1pMSHdKMHVIWUgvM042OTNy?= =?utf-8?B?dFdoZDJTOXRheWtRTTZPQXRpTmczZEFVbitEUjlmd0RrK3EvMDZRSVg3NEdn?= =?utf-8?B?YWZQTnVtT2FZRHhKa1JWMG5hNk04RDYwc1l6U1plbDRxQm5yNXRsenQwV1Va?= =?utf-8?B?aFpuM0JXc2RXbHNjU3NWUmpQNlNXeThBbzJidnN1SFFYYUEyUCtVb3NkR0ZM?= =?utf-8?B?c2RUY0RPanRBVVNyV2tsZk1PNm1FR0IyeElxSjE4WElyVC84QmVWUWJodEoz?= =?utf-8?B?L3VTSWprWGdtTlpNWWtMdGxTUFlhblNyUENSZGpBbFMvZEVQd1lzNnc2MjRi?= =?utf-8?B?QlNGRUJmZ3ZkS0svY1FDRXNQQ2YxakZvS2pSSmg4ZktnUU43ejBNMWJTcGFt?= =?utf-8?B?SUk5RXFwTjNLOHJESjVhdkJub0R3dmpTUksyZXJRMVhqZmQ3S3FjcFNZVWN1?= =?utf-8?B?L2psWGpDZG9BT1c0bGRKWVhoMzMzT1FUaVJzNHNqRTN2VFl1eUVPY0xJUUZW?= =?utf-8?B?OXFCMGRXbm1wQ1k0T1VrQWxoODNCWThNRm1mMmVKZjdVYUZLMk00UU4vVnIv?= =?utf-8?B?WTB0bUxndnFtWUVpRlFhdjZuRXRFZ3pjeCs4c1VxN3EzU2ZQS1oreWZBT1lP?= =?utf-8?B?a1JjNk9jVFBkNi9SZXoxWUpvOEl5eVJiT1NhZEpENHE5ZG5lTGV6NU9ScU40?= =?utf-8?B?NEptWExuQzBzbVdCSVhCaVI4ZXNHbFRzeXozSVd4UU82cVRpV1VjQnEvdzdG?= =?utf-8?B?ZnBmejd3d1J1eFdicUVaMVB3R2l1Y3hDVDBPeW9JTW9KT1VIWDJPOVFZUUFk?= =?utf-8?B?Tk1EeDFTckROeVU3VWhzVWRubllBODBzTGhKN3FwSkorQW9WVlBZVm1uS2lx?= =?utf-8?B?ZTdvWU5TbDJnTkQwZE5JaE80cC9JK0IvajhCWUlRZGlwZ2RMMk9BTzVwci9h?= =?utf-8?B?OHZPLzVXVnkvSjhGb0JYSzh3T0g3ZmtVdkpVbFhlTmdqdDEwNVp3K1gzcWZ1?= =?utf-8?B?SEpyUldhaEJFZHpoRTAxcTBtRmR5aVc5MXFrTVVjdmNZQW5jSmdEKy9TS0Nv?= =?utf-8?B?R2NUMGtmTFFWMXFQR3RLdHkzb09ZWFVOQkFPWXFUZkd6eURRQU8yb1U3RnNE?= =?utf-8?B?dUFtUkhON25EY3RLMFFKQzBHY1JoektFdjcwR2Q3bnN2eWNMbVo2ZFBZTFZn?= =?utf-8?B?REluZFI1WHF1ZFdtN2xZOE9ORFJzenhSc3lrWXNEWVVzUEtRSGFrb25PS2VF?= =?utf-8?Q?nUmQ2VgaXAyfE87E=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <1DB41423AC216840B03D5F2326CC0D32@apcprd03.prod.outlook.com> Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: b7/1vx/E41Ul6G8rshZB5sIRoc5gfcBlCYQvpaAfZ/pU4b+jDIljhOqAkxQpUBghLFMuXhP/9huAxzdnTbqYDqfC/AqLDEmrDi7kiRZc/MNsr51gKd8h7xUQeRHvVxui/ygfP4xqJUWf6s5JNM/wUu4cYYNaD4Ccs9P2cKYehbf/62QotvFN9eebj4OiQ+EP0rz7CRaxTwmmllppzSGeNOBOBTcCdX88RGASQKoT9JHBAMjuG/uoIjytHfJd+xkV+QqRXzZaP7nxiOxzW+skdWLNmH3GqvEeYBxP7Mnn3elzX6e8Hyyfs0lCEAaBlZUtdHcJP7v3o1G44vlETluB3g== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: KL1PR03MB7079.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6925b0ca-f253-4751-0b42-08dee08ca826 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jul 2026 03:13:05.3395 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a7687ede-7a6b-4ef6-bace-642f677fbe31 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Jqz+FZmYsaArlPbsTSRW+8+NTgrEDZQucu+otRfGrNgZ/gfFNtymZZcaiew7Emeb2bX6Kc3KyrpqaxxKtxk1gQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSNPR03MB10352 T24gVGh1LCAyMDI2LTA3LTA5IGF0IDEwOjI3ICswMjAwLCBMb3JlbnpvIEJpYW5jb25pIHdyb3Rl Og0KPiBPbiBKdWwgMDksIEVhc29uIExhaSB3cm90ZToNCj4gPiBGcm9tOiBFYXNvbiBMYWkgPEVh c29uLkxhaUBtZWRpYXRlay5jb20+DQo+ID4gDQo+ID4gQWRkIHN1cHBvcnQgZm9yIFRYIHBhZ2Ug cG9vbCBhbGxvY2F0aW9uIGluIG10NzkyeCBkZXZpY2VzIHdoZW4NCj4gPiBJT01NVSBpcw0KPiA+ IGVuYWJsZWQuIFRoaXMgb3B0aW1pemF0aW9uIHJlZHVjZXMgRE1BIG1hcHBpbmcgb3ZlcmhlYWQg YnkNCj4gPiBwcmUtYWxsb2NhdGluZyBhbmQgcmV1c2luZyBwYWdlIHBvb2wgYnVmZmVycyBmb3Ig VFggb3BlcmF0aW9ucy4NCj4gDQo+IENhbiB5b3UgcGxlYXNlIHByb3ZpZGUgc29tZSB0ZXN0IHJl c3VsdHMgaGVyZT8gSW4gcGFydGljdWxhcg0KPiByZWdhcmRpbmcgdGhlDQo+IHJlc3VsdGluZyB0 aHJvdWdocHV0Lg0KPiANCg0KT24gTVQ4MTk2LCB0aGUgSEUxNjAgVENQIFVMIHBlYWsgdGhyb3Vo Z3B1dCBjb3VsZCBkcm9wIGJlbG93IDEuNEdicHMNCndoZW4gSU9NTVUgaXMgZW5hYmxlZC4gV2l0 aCB0aGlzIHNlcmllcywgdGhlIHRocm91Z2hwdXQgcmVhY2hlcyB0aGUNCmV4cGVjdGVkIHBlcmZv cm1hbmNlICg+MS44RyBicHMpLg0KDQo+ID4gDQo+ID4gS2V5IGNoYW5nZXM6DQo+ID4gLSBFeHBv cnQgRE1BIGhlbHBlciBmdW5jdGlvbnMgYW5kIG9wcyBmb3IgbXQ3OTJ4IHVzYWdlDQo+ID4gwqAg LSBBZGQgdHhfcHJlYWxsb2NfZW5hYmxlZCBmbGFnIHRvIHRyYWNrIHBhZ2UgcG9vbCBzdGF0ZQ0K PiA+IMKgwqDCoCAtIEltcGxlbWVudCBtdDc5Mngtc3BlY2lmaWMgRE1BIHF1ZXVlIG9wZXJhdGlv bnMgd2l0aCBUWCBwYWdlDQo+ID4gcG9vbA0KPiA+IMKgwqDCoMKgwqAgLSBDcmVhdGUgcGFnZSBw b29scyBwZXIgVFggcXVldWUgd2hlbiBJT01NVSBpcyBkZXRlY3RlZA0KPiA+IMKgwqDCoMKgwqDC oMKgIC0gSGFuZGxlIHBhZ2UgcG9vbCBidWZmZXIgY2xlYW51cCBpbiBib3RoIHN1Y2Nlc3MgYW5k IGVycm9yDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgIHBhdGhzDQo+ID4gLSBBZGQgcHJvcGVyIHNr aXBfdW5tYXAgZmxhZyBoYW5kbGluZyBmb3IgcGFnZSBwb29sIGJ1ZmZlcnMNCj4gPiANCj4gPiBU aGUgcGFnZSBwb29sIHBhdGggaXMgdXNlZCBmb3IgbGluZWFyIHNrYnMgd2l0aG91dCBmcmFnbWVu dHMsDQo+ID4gZmFsbGluZw0KPiA+IGJhY2sgdG8gc3RhbmRhcmQgRE1BIG1hcHBpbmcgZm9yIGNv bXBsZXggc2tiIHN0cnVjdHVyZXMuDQo+ID4gDQo+ID4gU2lnbmVkLW9mZi1ieTogRWFzb24gTGFp IDxFYXNvbi5MYWlAbWVkaWF0ZWsuY29tPg0KPiA+IC0tLQ0KPiANCj4gWy4uLl0NCj4gDQo+ID4g wqANCj4gPiAtc3RhdGljIHZvaWQNCj4gPiArdm9pZA0KPiA+IMKgbXQ3Nl9kbWFfa2lja19xdWV1 ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEpDQo+ID4gwqB7DQo+ ID4gwqAJd21iKCk7DQo+ID4gQEAgLTQwOSw2ICs0MTcsNyBAQCBtdDc2X2RtYV9raWNrX3F1ZXVl KHN0cnVjdCBtdDc2X2RldiAqZGV2LA0KPiA+IHN0cnVjdCBtdDc2X3F1ZXVlICpxKQ0KPiA+IMKg CWVsc2UNCj4gPiDCoAkJUV9XUklURShxLCBjcHVfaWR4LCBxLT5oZWFkKTsNCj4gPiDCoH0NCj4g PiArRVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9kbWFfa2lja19xdWV1ZSk7DQo+IA0KPiB0aGlzIGlz IGFscmVhZHkgYXZhaWxhYmxlIGluIG10NzZfcXVldWVfb3BzIHN0cnVjdC4NCj4gDQoNClRoYW5r cy4gSSdsbCB1c2UgbXQ3Nl9xdWV1ZV9raWNrKCkgaW4gdjIuDQoNCj4gPiDCoA0KPiA+IMKgc3Rh dGljIHZvaWQNCj4gPiDCoG10NzZfZG1hX3R4X2NsZWFudXAoc3RydWN0IG10NzZfZGV2ICpkZXYs IHN0cnVjdCBtdDc2X3F1ZXVlICpxLA0KPiA+IGJvb2wgZmx1c2gpDQo+ID4gQEAgLTExNTIsNyAr MTE2MSw3IEBAIG10NzZfZG1hX2luaXQoc3RydWN0IG10NzZfZGV2ICpkZXYsDQo+ID4gwqAJcmV0 dXJuIDA7DQo+ID4gwqB9DQo+ID4gwqANCj4gPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X3F1 ZXVlX29wcyBtdDc2X2RtYV9vcHMgPSB7DQo+ID4gK2NvbnN0IHN0cnVjdCBtdDc2X3F1ZXVlX29w cyBtdDc2X2RtYV9vcHMgPSB7DQo+ID4gwqAJLmluaXQgPSBtdDc2X2RtYV9pbml0LA0KPiA+IMKg CS5hbGxvYyA9IG10NzZfZG1hX2FsbG9jX3F1ZXVlLA0KPiA+IMKgCS5yZXNldF9xID0gbXQ3Nl9k bWFfcXVldWVfcmVzZXQsDQo+ID4gQEAgLTExNjQsNiArMTE3Myw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMNCj4gPiBtdDc2X2RtYV9vcHMgPSB7DQo+ID4gwqAJLnJ4X3Jl c2V0ID0gbXQ3Nl9kbWFfcnhfcmVzZXQsDQo+ID4gwqAJLmtpY2sgPSBtdDc2X2RtYV9raWNrX3F1 ZXVlLA0KPiA+IMKgfTsNCj4gPiArRVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9kbWFfb3BzKTsNCj4g PiDCoA0KPiA+IMKgdm9pZCBtdDc2X2RtYV9hdHRhY2goc3RydWN0IG10NzZfZGV2ICpkZXYpDQo+ ID4gwqB7DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210 NzYvbXQ3Ni5oDQo+ID4gYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYu aA0KPiA+IGluZGV4IDkyN2MyMTUzNmY0ZS4uMjVlMjRmYTM2ZWNhIDEwMDY0NA0KPiA+IC0tLSBh L2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oDQo+ID4gKysrIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgNCj4gPiBAQCAtOTU3LDYgKzk1 Nyw4IEBAIHN0cnVjdCBtdDc2X2RldiB7DQo+ID4gwqAJaW50IHR4X2RtYV9pZHhbNF07DQo+ID4g wqAJZW51bSBtdDc2X2h3cnJvX21vZGUgaHdycm9fbW9kZTsNCj4gPiDCoA0KPiA+ICsJYm9vbCB0 eF9wcmVhbGxvY19lbmFibGVkOw0KPiA+ICsNCj4gPiDCoAlzdHJ1Y3QgbXQ3Nl93b3JrZXIgdHhf d29ya2VyOw0KPiA+IMKgCXN0cnVjdCBuYXBpX3N0cnVjdCB0eF9uYXBpOw0KPiA+IMKgDQo+ID4g QEAgLTE3ODUsNyArMTc4NywxNiBAQCBtdDc2X3R4X3N0YXR1c19nZXRfaHcoc3RydWN0IG10NzZf ZGV2ICpkZXYsDQo+ID4gc3RydWN0IHNrX2J1ZmYgKnNrYikNCj4gPiDCoA0KPiA+IMKgdm9pZCBt dDc2X3B1dF90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl90eHdpX2NhY2hl DQo+ID4gKnQpOw0KPiA+IMKgdm9pZCBtdDc2X3B1dF9yeHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2 LCBzdHJ1Y3QgbXQ3Nl90eHdpX2NhY2hlDQo+ID4gKnQpOw0KPiA+ICtzdHJ1Y3QgbXQ3Nl90eHdp X2NhY2hlICptdDc2X2dldF90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2KTsNCj4gPiDCoHN0cnVj dCBtdDc2X3R4d2lfY2FjaGUgKm10NzZfZ2V0X3J4d2koc3RydWN0IG10NzZfZGV2ICpkZXYpOw0K PiA+ICtpbnQgbXQ3Nl9kbWFfYWRkX2J1ZihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10 NzZfcXVldWUgKnEsDQo+ID4gKwkJwqDCoMKgwqAgc3RydWN0IG10NzZfcXVldWVfYnVmICpidWYs IGludCBuYnVmcywgdTMyDQo+ID4gaW5mbywNCj4gPiArCQnCoMKgwqDCoCBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCB2b2lkICp0eHdpKTsNCj4gPiArdm9pZCBtdDc2X2RtYV90eF9jbGVhbnVwX2lkeChz dHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0DQo+ID4gbXQ3Nl9xdWV1ZSAqcSwgaW50IGlkeCwN Cj4gPiArCQkJwqDCoMKgwqAgc3RydWN0IG10NzZfcXVldWVfZW50cnkgKnByZXZfZSk7DQo+ID4g K3ZvaWQgbXQ3Nl9kbWFfa2lja19xdWV1ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10 NzZfcXVldWUNCj4gPiAqcSk7DQo+ID4gK3ZvaWQgbXQ3Nl9kbWFfc3luY19pZHgoc3RydWN0IG10 NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlDQo+ID4gKnEpOw0KPiA+ICtleHRlcm4gY29u c3Qgc3RydWN0IG10NzZfcXVldWVfb3BzIG10NzZfZG1hX29wczsNCj4gPiDCoHZvaWQgbXQ3Nl9m cmVlX3BlbmRpbmdfcnh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7DQo+ID4gwqB2b2lkIG10NzZf cnhfY29tcGxldGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmX2hlYWQNCj4g PiAqZnJhbWVzLA0KPiA+IMKgCQnCoMKgwqDCoMKgIHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSk7 DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3 Nl9jb25uYWNfbWFjLmMNCj4gPiBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYv bXQ3Nl9jb25uYWNfbWFjLmMNCj4gPiBpbmRleCAwMzM5ZTJlN2FiNjAuLmQ0YjM2YjA4MzJiOCAx MDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZf Y29ubmFjX21hYy5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3 Ni9tdDc2X2Nvbm5hY19tYWMuYw0KPiA+IEBAIC0yNTAsNiArMjUwLDEyIEBAIHZvaWQgbXQ3Nl9j b25uYWNfdHhwX3NrYl91bm1hcChzdHJ1Y3QgbXQ3Nl9kZXYNCj4gPiAqZGV2LA0KPiA+IMKgew0K PiA+IMKgCXN0cnVjdCBtdDc2X2Nvbm5hY190eHBfY29tbW9uICp0eHA7DQo+ID4gwqANCj4gPiAr CWlmICh0LT5wYWdlX3Bvb2xfYnVmKSB7DQo+ID4gKwkJbXQ3Nl9wdXRfcGFnZV9wb29sX2J1Zih0 LT5wYWdlX3Bvb2xfYnVmLCBmYWxzZSk7DQo+ID4gKwkJdC0+cGFnZV9wb29sX2J1ZiA9IE5VTEw7 DQo+ID4gKwkJcmV0dXJuOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiDCoAl0eHAgPSBtdDc2X2Nvbm5h Y190eHdpX3RvX3R4cChkZXYsIHQpOw0KPiA+IMKgCWlmIChpc19tdDc2X2Z3X3R4cChkZXYpKQ0K PiA+IMKgCQltdDc2X2Nvbm5hY190eHBfc2tiX3VubWFwX2Z3KGRldiwgJnR4cC0+ZncpOw0KPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9w Y2kuYw0KPiA+IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNp LmMNCj4gPiBpbmRleCBjNDE2MTc1NGMwMWQuLjNkNjlkOGM2N2RlYSAxMDA2NDQNCj4gPiAtLS0g YS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYw0KPiA+ICsr KyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jDQo+ID4g QEAgLTIxNCw3ICsyMTQsNyBAQCBzdGF0aWMgaW50IG10NzkyNV9kbWFfaW5pdChzdHJ1Y3QgbXQ3 OTJ4X2Rldg0KPiA+ICpkZXYpDQo+ID4gwqB7DQo+ID4gwqAJaW50IHJldDsNCj4gPiDCoA0KPiA+ IC0JbXQ3Nl9kbWFfYXR0YWNoKCZkZXYtPm10NzYpOw0KPiA+ICsJbXQ3OTJ4X2RtYV9hdHRhY2go JmRldi0+bXQ3Nik7DQo+ID4gwqANCj4gPiDCoAlyZXQgPSBtdDc5MnhfZG1hX2Rpc2FibGUoZGV2 LCB0cnVlKTsNCj4gPiDCoAlpZiAocmV0KQ0KPiA+IEBAIC0yNjMsNiArMjYzLDggQEAgc3RhdGlj IGludCBtdDc5MjVfZG1hX2luaXQoc3RydWN0IG10NzkyeF9kZXYNCj4gPiAqZGV2KQ0KPiA+IMKg CQkJwqAgbXQ3OTJ4X3BvbGxfdHgpOw0KPiA+IMKgCW5hcGlfZW5hYmxlKCZkZXYtPm10NzYudHhf bmFwaSk7DQo+ID4gwqANCj4gPiArCW10NzkyeF9kbWFfdHhfcGFnZV9wb29sX2luaXQoZGV2KTsN Cj4gPiArDQo+ID4gwqAJcmV0dXJuIG10NzkyeF9kbWFfZW5hYmxlKGRldik7DQo+ID4gwqB9DQo+ ID4gwqANCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3 Ni9tdDc5MnguaA0KPiA+IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5 MnguaA0KPiA+IGluZGV4IDRmZjkzZjJjZDYyNC4uN2FjMDMxOGRjMjQ5IDEwMDY0NA0KPiA+IC0t LSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgNCj4gPiArKysg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oDQo+ID4gQEAgLTQx OCw4ICs0MTgsMTAgQEAgdm9pZCBtdDc5Mnhfc3RhX3N0YXRpc3RpY3Moc3RydWN0IGllZWU4MDIx MV9odw0KPiA+ICpodywNCj4gPiDCoAkJCcKgwqAgc3RydWN0IHN0YXRpb25faW5mbyAqc2luZm8p Ow0KPiA+IMKgdm9pZCBtdDc5Mnhfc2V0X2NvdmVyYWdlX2NsYXNzKHN0cnVjdCBpZWVlODAyMTFf aHcgKmh3LCBpbnQNCj4gPiByYWRpb19pZHgsDQo+ID4gwqAJCQnCoMKgwqDCoMKgwqAgczE2IGNv dmVyYWdlX2NsYXNzKTsNCj4gPiArdm9pZCBtdDc5MnhfZG1hX2F0dGFjaChzdHJ1Y3QgbXQ3Nl9k ZXYgKmRldik7DQo+ID4gwqB2b2lkIG10NzkyeF9kbWFfY2xlYW51cChzdHJ1Y3QgbXQ3OTJ4X2Rl diAqZGV2KTsNCj4gPiDCoGludCBtdDc5MnhfZG1hX2VuYWJsZShzdHJ1Y3QgbXQ3OTJ4X2RldiAq ZGV2KTsNCj4gPiAraW50IG10NzkyeF9kbWFfdHhfcGFnZV9wb29sX2luaXQoc3RydWN0IG10Nzky eF9kZXYgKmRldik7DQo+ID4gwqBpbnQgbXQ3OTJ4X3dwZG1hX3Jlc2V0KHN0cnVjdCBtdDc5Mnhf ZGV2ICpkZXYsIGJvb2wgZm9yY2UpOw0KPiA+IMKgaW50IG10NzkyeF93cGRtYV9yZWluaXRfY29u ZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTsNCj4gPiDCoGludCBtdDc5MnhfZG1hX2Rpc2FibGUo c3RydWN0IG10NzkyeF9kZXYgKmRldiwgYm9vbCBmb3JjZSk7DQo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2RtYS5jDQo+ID4gYi9kcml2 ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9kbWEuYw0KPiA+IGluZGV4IDAw MmFlY2U4NTdiMi4uYjM0MWYxY2IzY2UwIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L3dp cmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2RtYS5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQv d2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfZG1hLmMNCj4gPiBAQCAtMyw2ICszLDkgQEAN Cj4gPiDCoA0KPiA+IMKgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+IMKgI2luY2x1ZGUg PGxpbnV4L2Zpcm13YXJlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9pb21tdS5oPg0KPiA+ICsj aW5jbHVkZSA8bmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9v Zi5oPg0KPiA+IMKgDQo+ID4gwqAjaW5jbHVkZSAibXQ3OTJ4LmgiDQo+ID4gwqAjaW5jbHVkZSAi ZG1hLmgiDQo+ID4gQEAgLTI2Niw2ICsyNjksMzIzIEBAIGludCBtdDc5Mnhfd3BkbWFfcmVpbml0 X2NvbmQoc3RydWN0DQo+ID4gbXQ3OTJ4X2RldiAqZGV2KQ0KPiA+IMKgfQ0KPiA+IMKgRVhQT1JU X1NZTUJPTF9HUEwobXQ3OTJ4X3dwZG1hX3JlaW5pdF9jb25kKTsNCj4gPiDCoA0KPiA+ICtzdGF0 aWMgaW50IG10NzkyeF9jcmVhdGVfdHhfcGFnZV9wb29sKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBz dHJ1Y3QNCj4gPiBtdDc2X3F1ZXVlICpxKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgcGFnZV9wb29s X3BhcmFtcyBwcF9wYXJhbXMgPSB7DQo+ID4gKwkJLm9yZGVyID0gMCwNCj4gPiArCQkuZmxhZ3Mg PSAwLA0KPiA+ICsJCS5uaWQgPSBOVU1BX05PX05PREUsDQo+ID4gKwkJLmRldiA9IGRldi0+ZG1h X2RldiwNCj4gPiArCX07DQo+ID4gKw0KPiA+ICsJaWYgKCFxIHx8ICFkZXYtPnR4X3ByZWFsbG9j X2VuYWJsZWQpDQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICsJaWYgKCFtdDc2X2lzX21t aW8oZGV2KSkNCj4gPiArCQlyZXR1cm4gMDsNCj4gDQo+IGRvIHlvdSByZWFsbHkgbmVlZCB0aGlz IGNoZWNrPyB5b3UgYWxyZWFkeSBjaGVjayBpdCBpbg0KPiBtdDc5MnhfZG1hX3R4X3BhZ2VfcG9v bF9pbml0KCkuDQo+IA0KDQpPSywgSSB3aWxsIHJlbW92ZSBpdCBpbiB2Mi4NCg0KPiA+ICsNCj4g PiArCXBwX3BhcmFtcy5wb29sX3NpemUgPSAyNTY7DQo+ID4gKwlwcF9wYXJhbXMuZmxhZ3MgfD0g UFBfRkxBR19ETUFfTUFQOw0KPiA+ICsJcHBfcGFyYW1zLmRtYV9kaXIgPSBETUFfQklESVJFQ1RJ T05BTDsNCj4gPiArCXBwX3BhcmFtcy5tYXhfbGVuID0gUEFHRV9TSVpFOw0KPiA+ICsJcHBfcGFy YW1zLm9mZnNldCA9IDA7DQo+ID4gKw0KPiA+ICsJcS0+cGFnZV9wb29sID0gcGFnZV9wb29sX2Ny ZWF0ZSgmcHBfcGFyYW1zKTsNCj4gPiArCWlmIChJU19FUlIocS0+cGFnZV9wb29sKSkgew0KPiA+ ICsJCWludCBlcnIgPSBQVFJfRVJSKHEtPnBhZ2VfcG9vbCk7DQo+ID4gKw0KPiA+ICsJCXEtPnBh Z2VfcG9vbCA9IE5VTEw7DQo+ID4gKwkJZGV2X3dhcm4oZGV2LT5kZXYsICJGYWlsZWQgdG8gY3Jl YXRlIFRYIHBhZ2UgcG9vbA0KPiA+IGZvciBxdWV1ZSAlZCAoZXJyPSVkKVxuIiwNCj4gPiArCQkJ IHEtPmh3X2lkeCwgZXJyKTsNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4gPiArDQo+ID4g KwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAraW50IG10NzkyeF9kbWFfdHhfcGFnZV9w b29sX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldikNCj4gPiArew0KPiA+ICsJc3RydWN0IG10 NzZfZGV2ICptZGV2ID0gJmRldi0+bXQ3NjsNCj4gPiArCWludCBpLCByZXQsIHBvb2xfY291bnQg PSAwOw0KPiA+ICsNCj4gPiArCWlmICghaW9tbXVfZ2V0X2RvbWFpbl9mb3JfZGV2KG1kZXYtPmRt YV9kZXYpKQ0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsNCj4gPiArCWlmICghbXQ3Nl9pc19tbWlv KG1kZXYpKQ0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsNCj4gPiArCW1kZXYtPnR4X3ByZWFsbG9j X2VuYWJsZWQgPSB0cnVlOw0KPiA+ICsNCj4gPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KG1kZXYtPnBoeS5xX3R4KTsgaSsrKSB7DQo+ID4gKwkJc3RydWN0IG10NzZfcXVldWUgKnEgPSBt ZGV2LT5waHkucV90eFtpXTsNCj4gPiArDQo+ID4gKwkJaWYgKCFxKQ0KPiA+ICsJCQljb250aW51 ZTsNCj4gPiArDQo+ID4gKwkJcmV0ID0gbXQ3OTJ4X2NyZWF0ZV90eF9wYWdlX3Bvb2wobWRldiwg cSk7DQo+ID4gKwkJaWYgKHJldCkNCj4gPiArCQkJcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKwkJ aWYgKHEtPnBhZ2VfcG9vbCkNCj4gPiArCQkJcG9vbF9jb3VudCsrOw0KPiA+ICsJfQ0KPiA+ICsN Cj4gPiArCWlmIChwb29sX2NvdW50ID4gMCkNCj4gPiArCQlkZXZfaW5mbyhtZGV2LT5kZXYsDQo+ ID4gKwkJCSAiSU9NTVUgZW5hYmxlZCwgY3JlYXRlZCAlZCBUWCBwYWdlDQo+ID4gcG9vbHNcbiIs IHBvb2xfY291bnQpOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gK0VYUE9S VF9TWU1CT0xfR1BMKG10NzkyeF9kbWFfdHhfcGFnZV9wb29sX2luaXQpOw0KPiA+ICsNCj4gPiAr c3RhdGljIHZvaWQgbXQ3OTJ4X2RtYV90eF9wYWdlX3Bvb2xfY2xlYW51cChzdHJ1Y3QgbXQ3OTJ4 X2Rldg0KPiA+ICpkZXYpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBtdDc2X2RldiAqbWRldiA9ICZk ZXYtPm10NzY7DQo+ID4gKwlpbnQgaTsNCj4gPiArDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRShtZGV2LT5waHkucV90eCk7IGkrKykgew0KPiA+ICsJCXN0cnVjdCBtdDc2X3F1ZXVl ICpxID0gbWRldi0+cGh5LnFfdHhbaV07DQo+ID4gKw0KPiA+ICsJCWlmICghcSB8fCAhcS0+cGFn ZV9wb29sKQ0KPiA+ICsJCQljb250aW51ZTsNCj4gPiArDQo+ID4gKwkJcGFnZV9wb29sX2Rlc3Ry b3kocS0+cGFnZV9wb29sKTsNCj4gPiArCQlxLT5wYWdlX3Bvb2wgPSBOVUxMOw0KPiA+ICsJfQ0K PiA+ICsNCj4gPiArCW1kZXYtPnR4X3ByZWFsbG9jX2VuYWJsZWQgPSBmYWxzZTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIHZvaWQgKg0KPiA+ICttdDc5MnhfZG1hX3R4X2FsbG9jX3BhZ2Vf cG9vbF9idWYoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdA0KPiA+IG10NzZfcXVldWUgKnEs DQo+ID4gKwkJCQnCoCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBkbWFfYWRkcl90DQo+ID4gKmRtYV9h ZGRyLA0KPiA+ICsJCQkJwqAgaW50ICpidWZfbGVuKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgcGFn ZSAqcGFnZTsNCj4gPiArCXZvaWQgKmJ1ZjsNCj4gPiArCWludCBsZW47DQo+ID4gKwl1MzIgb2Zm c2V0Ow0KPiA+ICsNCj4gPiArCWlmICghcS0+cGFnZV9wb29sIHx8ICFkZXYtPnR4X3ByZWFsbG9j X2VuYWJsZWQpDQo+ID4gKwkJcmV0dXJuIE5VTEw7DQo+ID4gKw0KPiA+ICsJbGVuID0gc2tiX2hl YWRsZW4oc2tiKTsNCj4gPiArCWlmIChsZW4gPiBQQUdFX1NJWkUpDQo+ID4gKwkJcmV0dXJuIE5V TEw7DQo+ID4gKw0KPiA+ICsJYnVmID0gbXQ3Nl9nZXRfcGFnZV9wb29sX2J1ZihxLCAmb2Zmc2V0 LCBsZW4pOw0KPiA+ICsJaWYgKCFidWYpDQo+ID4gKwkJcmV0dXJuIE5VTEw7DQo+ID4gKw0KPiA+ ICsJcGFnZSA9IHZpcnRfdG9faGVhZF9wYWdlKGJ1Zik7DQo+ID4gKwkqZG1hX2FkZHIgPSBwYWdl X3Bvb2xfZ2V0X2RtYV9hZGRyKHBhZ2UpICsgb2Zmc2V0Ow0KPiA+ICsJaWYgKHVubGlrZWx5KCEq ZG1hX2FkZHIpKSB7DQo+ID4gKwkJZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoZGV2LT5kZXYsICJQYWdl IHBvb2wgcmV0dXJuZWQNCj4gPiBOVUxMIERNQSBhZGRyZXNzXG4iKTsNCj4gPiArCQltdDc2X3B1 dF9wYWdlX3Bvb2xfYnVmKGJ1ZiwgZmFsc2UpOw0KPiA+ICsJCXJldHVybiBOVUxMOw0KPiA+ICsJ fQ0KPiA+ICsNCj4gPiArCSpidWZfbGVuID0gbGVuOw0KPiA+ICsNCj4gPiArCWRtYV9zeW5jX3Np bmdsZV9mb3JfY3B1KGRldi0+ZG1hX2RldiwgKmRtYV9hZGRyLCBsZW4sDQo+ID4gRE1BX1RPX0RF VklDRSk7DQo+ID4gKwlza2JfY29weV9mcm9tX2xpbmVhcl9kYXRhKHNrYiwgYnVmLCBsZW4pOw0K PiANCj4gSSB3b3VsZCBsaWtlIHRvIHNlZSBzb21lIHJlc3VsdHMgaGVyZSBzaW5jZSB1c3VhbGx5 IGl0IGlzIG5vdCBhIGdvb2QNCj4gaWRlYSB0bw0KPiBjb3B5IGFsbCB0aGUgcGFja2V0cyAoZXZl biBpZiBpdCBpcyBqdXN0IHRoZSBsaW5lYXIgcGFydCkuDQo+IA0KDQpUaGUgcmVzdWx0cyBhcmUg c2hvd24gYWJvdmUuDQoNCj4gPiArCWRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKGRldi0+ZG1h X2RldiwgKmRtYV9hZGRyLCBsZW4sDQo+ID4gRE1BX1RPX0RFVklDRSk7DQo+ID4gKw0KPiA+ICsJ cmV0dXJuIGJ1ZjsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludA0KPiA+ICttdDc5Mnhf ZG1hX3R4X3F1ZXVlX3NrYihzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgc3RydWN0IG10NzZfcXVldWUN Cj4gPiAqcSwNCj4gPiArCQkJZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBza19idWZmICpz a2IsDQo+ID4gKwkJCXN0cnVjdCBtdDc2X3djaWQgKndjaWQsIHN0cnVjdA0KPiA+IGllZWU4MDIx MV9zdGEgKnN0YSkNCj4gPiArew0KPiA+ICsJc3RydWN0IGllZWU4MDIxMV90eF9zdGF0dXMgc3Rh dHVzID0gew0KPiA+ICsJCS5zdGEgPSBzdGEsDQo+ID4gKwl9Ow0KPiA+ICsJc3RydWN0IG10NzZf dHhfaW5mbyB0eF9pbmZvID0gew0KPiA+ICsJCS5za2IgPSBza2IsDQo+ID4gKwl9Ow0KPiA+ICsJ c3RydWN0IG10NzZfZGV2ICpkZXYgPSBwaHktPmRldjsNCj4gPiArCXN0cnVjdCBpZWVlODAyMTFf aHcgKmh3Ow0KPiA+ICsJaW50IGxlbiwgbiA9IDAsIHJldCA9IC1FTk9NRU07DQo+ID4gKwlzdHJ1 Y3QgbXQ3Nl90eHdpX2NhY2hlICp0Ow0KPiA+ICsJc3RydWN0IHNrX2J1ZmYgKml0ZXI7DQo+ID4g KwlkbWFfYWRkcl90IGFkZHI7DQo+ID4gKwl1OCAqdHh3aTsNCj4gPiArDQo+ID4gKwlpZiAodGVz dF9iaXQoTVQ3Nl9SRVNFVCwgJnBoeS0+c3RhdGUpKQ0KPiA+ICsJCWdvdG8gZnJlZV9za2I7DQo+ ID4gKw0KPiA+ICsJdCA9IG10NzZfZ2V0X3R4d2koZGV2KTsNCj4gPiArCWlmICghdCkNCj4gPiAr CQlnb3RvIGZyZWVfc2tiOw0KPiA+ICsNCj4gPiArCXR4d2kgPSBtdDc2X2dldF90eHdpX3B0cihk ZXYsIHQpOw0KPiA+ICsNCj4gPiArCXNrYi0+cHJldiA9IE5VTEw7DQo+ID4gKwlza2ItPm5leHQg PSBOVUxMOw0KPiA+ICsJaWYgKGRldi0+ZHJ2LT5kcnZfZmxhZ3MgJiBNVF9EUlZfVFhfQUxJR05F RDRfU0tCUykNCj4gPiArCQltdDc2X2luc2VydF9oZHJfcGFkKHNrYik7DQo+ID4gKw0KPiA+ICsJ bGVuID0gc2tiX2hlYWRsZW4oc2tiKTsNCj4gPiArDQo+ID4gKwlpZiAoZGV2LT50eF9wcmVhbGxv Y19lbmFibGVkICYmIHEtPnBhZ2VfcG9vbCAmJg0KPiA+ICsJwqDCoMKgICFza2JfaGFzX2ZyYWdf bGlzdChza2IpICYmICFza2Jfc2hpbmZvKHNrYiktPm5yX2ZyYWdzKQ0KPiA+IHsNCj4gPiArCQl2 b2lkICpidWY7DQo+ID4gKwkJaW50IHBwX2xlbjsNCj4gPiArDQo+ID4gKwkJYnVmID0gbXQ3OTJ4 X2RtYV90eF9hbGxvY19wYWdlX3Bvb2xfYnVmKGRldiwgcSwNCj4gPiBza2IsICZhZGRyLCAmcHBf bGVuKTsNCj4gPiArCQlpZiAoYnVmKSB7DQo+ID4gKwkJCXQtPnBhZ2VfcG9vbF9idWYgPSBidWY7 DQo+ID4gKwkJCWxlbiA9IHBwX2xlbjsNCj4gPiArDQo+ID4gKwkJCXR4X2luZm8uYnVmW25dLmFk ZHIgPSB0LT5kbWFfYWRkcjsNCj4gPiArCQkJdHhfaW5mby5idWZbbisrXS5sZW4gPSBkZXYtPmRy di0NCj4gPiA+dHh3aV9zaXplOw0KPiA+ICsJCQl0eF9pbmZvLmJ1ZltuXS5hZGRyID0gYWRkcjsN Cj4gPiArCQkJdHhfaW5mby5idWZbbl0ubGVuID0gbGVuOw0KPiA+ICsJCQl0eF9pbmZvLmJ1Zltu XS5za2lwX3VubWFwID0gdHJ1ZTsNCj4gPiArCQkJbisrOw0KPiA+ICsNCj4gPiArCQkJZ290byBz a2lwX2RtYV9tYXA7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWFkZHIgPSBkbWFf bWFwX3NpbmdsZShkZXYtPmRtYV9kZXYsIHNrYi0+ZGF0YSwgbGVuLA0KPiA+IERNQV9UT19ERVZJ Q0UpOw0KPiA+ICsJaWYgKHVubGlrZWx5KGRtYV9tYXBwaW5nX2Vycm9yKGRldi0+ZG1hX2Rldiwg YWRkcikpKQ0KPiA+ICsJCWdvdG8gZnJlZTsNCj4gPiArDQo+ID4gKwl0LT5wYWdlX3Bvb2xfYnVm ID0gTlVMTDsNCj4gPiArDQo+ID4gKwl0eF9pbmZvLmJ1ZltuXS5hZGRyID0gdC0+ZG1hX2FkZHI7 DQo+ID4gKwl0eF9pbmZvLmJ1ZltuKytdLmxlbiA9IGRldi0+ZHJ2LT50eHdpX3NpemU7DQo+ID4g Kwl0eF9pbmZvLmJ1ZltuXS5hZGRyID0gYWRkcjsNCj4gPiArCXR4X2luZm8uYnVmW24rK10ubGVu ID0gbGVuOw0KPiA+ICsNCj4gPiArc2tpcF9kbWFfbWFwOg0KPiA+ICsJc2tiX3dhbGtfZnJhZ3Mo c2tiLCBpdGVyKSB7DQo+ID4gKwkJaWYgKG4gPT0gQVJSQVlfU0laRSh0eF9pbmZvLmJ1ZikpDQo+ ID4gKwkJCWdvdG8gdW5tYXA7DQo+ID4gKw0KPiA+ICsJCWFkZHIgPSBkbWFfbWFwX3NpbmdsZShk ZXYtPmRtYV9kZXYsIGl0ZXItPmRhdGEsDQo+ID4gaXRlci0+bGVuLA0KPiA+ICsJCQkJwqDCoMKg wqDCoCBETUFfVE9fREVWSUNFKTsNCj4gPiArCQlpZiAodW5saWtlbHkoZG1hX21hcHBpbmdfZXJy b3IoZGV2LT5kbWFfZGV2LA0KPiA+IGFkZHIpKSkNCj4gPiArCQkJZ290byB1bm1hcDsNCj4gPiAr DQo+ID4gKwkJdHhfaW5mby5idWZbbl0uYWRkciA9IGFkZHI7DQo+ID4gKwkJdHhfaW5mby5idWZb bl0uc2tpcF91bm1hcCA9IGZhbHNlOw0KPiA+ICsJCXR4X2luZm8uYnVmW24rK10ubGVuID0gaXRl ci0+bGVuOw0KPiA+ICsJfQ0KPiA+ICsJdHhfaW5mby5uYnVmID0gbjsNCj4gPiArDQo+ID4gKwlp ZiAocS0+cXVldWVkICsgKHR4X2luZm8ubmJ1ZiArIDEpIC8gMiA+PSBxLT5uZGVzYyAtIDEpIHsN Cj4gPiArCQlyZXQgPSAtRU5PTUVNOw0KPiA+ICsJCWdvdG8gdW5tYXA7DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUoZGV2LT5kbWFfZGV2LCB0LT5kbWFfYWRk ciwgZGV2LQ0KPiA+ID5kcnYtPnR4d2lfc2l6ZSwNCj4gPiArCQkJCURNQV9UT19ERVZJQ0UpOw0K PiA+ICsJcmV0ID0gZGV2LT5kcnYtPnR4X3ByZXBhcmVfc2tiKGRldiwgdHh3aSwgcWlkLCB3Y2lk LCBzdGEsDQo+ID4gJnR4X2luZm8pOw0KPiA+ICsJZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2Uo ZGV2LT5kbWFfZGV2LCB0LT5kbWFfYWRkciwgZGV2LQ0KPiA+ID5kcnYtPnR4d2lfc2l6ZSwNCj4g PiArCQkJCcKgwqAgRE1BX1RPX0RFVklDRSk7DQo+ID4gKwlpZiAocmV0IDwgMCkNCj4gPiArCQln b3RvIHVubWFwOw0KPiA+ICsNCj4gPiArCXJldHVybiBtdDc2X2RtYV9hZGRfYnVmKGRldiwgcSwg dHhfaW5mby5idWYsIHR4X2luZm8ubmJ1ZiwNCj4gPiArCQkJCXR4X2luZm8uaW5mbywgdHhfaW5m by5za2IsIHQpOw0KPiA+ICsNCj4gPiArdW5tYXA6DQo+ID4gKwlmb3IgKG4tLTsgbiA+IDA7IG4t LSkgew0KPiA+ICsJCWlmICghdHhfaW5mby5idWZbbl0uc2tpcF91bm1hcCkNCj4gPiArCQkJZG1h X3VubWFwX3NpbmdsZShkZXYtPmRtYV9kZXYsDQo+ID4gdHhfaW5mby5idWZbbl0uYWRkciwNCj4g PiArCQkJCQkgdHhfaW5mby5idWZbbl0ubGVuLA0KPiA+IERNQV9UT19ERVZJQ0UpOw0KPiA+ICsJ fQ0KPiA+ICsNCj4gPiArCWlmICh0LT5wYWdlX3Bvb2xfYnVmKSB7DQo+ID4gKwkJbXQ3Nl9wdXRf cGFnZV9wb29sX2J1Zih0LT5wYWdlX3Bvb2xfYnVmLCBmYWxzZSk7DQo+ID4gKwkJdC0+cGFnZV9w b29sX2J1ZiA9IE5VTEw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICtmcmVlOg0KPiA+ICsjaWZkZWYg Q09ORklHX05MODAyMTFfVEVTVE1PREUNCj4gPiArCWlmIChtdDc2X2lzX3Rlc3Rtb2RlX3NrYihk ZXYsIHNrYiwgJmh3KSkgew0KPiA+ICsJCXN0cnVjdCBtdDc2X3BoeSAqcGh5ID0gaHctPnByaXY7 DQo+ID4gKw0KPiA+ICsJCWlmICh0eF9pbmZvLnNrYiA9PSBwaHktPnRlc3QudHhfc2tiKQ0KPiA+ ICsJCQlwaHktPnRlc3QudHhfZG9uZS0tOw0KPiA+ICsJfQ0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ ID4gKwltdDc2X3B1dF90eHdpKGRldiwgdCk7DQo+ID4gKw0KPiA+ICtmcmVlX3NrYjoNCj4gPiAr CXN0YXR1cy5za2IgPSB0eF9pbmZvLnNrYjsNCj4gPiArCWh3ID0gbXQ3Nl90eF9zdGF0dXNfZ2V0 X2h3KGRldiwgdHhfaW5mby5za2IpOw0KPiA+ICsJc3Bpbl9sb2NrX2JoKCZkZXYtPnJ4X2xvY2sp Ow0KPiA+ICsJaWVlZTgwMjExX3R4X3N0YXR1c19leHQoaHcsICZzdGF0dXMpOw0KPiA+ICsJc3Bp bl91bmxvY2tfYmgoJmRldi0+cnhfbG9jayk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQNCj4gPiArbXQ3OTJ4X2RtYV90eF9jbGVhbnVw KHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSwNCj4gPiBib29sIGZs dXNoKQ0KPiANCj4gdGhpcyBpcyBhbG1vc3QgYSBjb3B5IG9mIG10NzZfZG1hX3R4X2NsZWFudXAo KS4gQ2FuIHdlIGRvIHNvbWV0aGluZw0KPiBiZXR0ZXINCj4gaGVyZT8NCj4gDQoNClllcywgaXQn cyBtaW5vciBlbm91Z2ggdGhhdCB0aGVyZSdzIG5vIG5lZWQgdG8gc3BsaXQgdGhlIGxvZ2ljIGlu dG8gYQ0Kc2VwYXJhdGUgbXQ3OTJ4X2RtYV90eF9jbGVhbnVwKCkgZnVuY3Rpb24uIEkgd2lsbCBt YWtlIHRoZSBjaGFuZ2UgaW4NCm10NzZfZG1hX3R4X2NsZWFudXAoKSBpbiB2Mi4gDQogDQo+ID4g K3sNCj4gPiArCXN0cnVjdCBtdDc2X3F1ZXVlX2VudHJ5IGVudHJ5Ow0KPiA+ICsJaW50IGxhc3Q7 DQo+ID4gKw0KPiA+ICsJaWYgKCFxIHx8ICFxLT5uZGVzYykNCj4gPiArCQlyZXR1cm47DQo+ID4g Kw0KPiA+ICsJc3Bpbl9sb2NrX2JoKCZxLT5jbGVhbnVwX2xvY2spOw0KPiA+ICsJaWYgKGZsdXNo KQ0KPiA+ICsJCWxhc3QgPSAtMTsNCj4gPiArCWVsc2UNCj4gPiArCQlsYXN0ID0gUV9SRUFEKHEs IGRtYV9pZHgpOw0KPiA+ICsNCj4gPiArCXdoaWxlIChxLT5xdWV1ZWQgPiAwICYmIHEtPnRhaWwg IT0gbGFzdCkgew0KPiA+ICsJCW10NzZfZG1hX3R4X2NsZWFudXBfaWR4KGRldiwgcSwgcS0+dGFp bCwgJmVudHJ5KTsNCj4gPiArCQltdDc2X25wdV90eGRlc2NfY2xlYW51cChxLCBxLT50YWlsKTsN Cj4gPiArCQltdDc2X3F1ZXVlX3R4X2NvbXBsZXRlKGRldiwgcSwgJmVudHJ5KTsNCj4gPiArDQo+ ID4gKwkJaWYgKGVudHJ5LnR4d2kpIHsNCj4gPiArCQkJaWYgKGVudHJ5LnNrYiAmJiBlbnRyeS50 eHdpLQ0KPiA+ID5wYWdlX3Bvb2xfYnVmKSB7DQo+ID4gKwkJCQltdDc2X3B1dF9wYWdlX3Bvb2xf YnVmKGVudHJ5LnR4d2ktDQo+ID4gPnBhZ2VfcG9vbF9idWYsIGZhbHNlKTsNCj4gPiArCQkJCWVu dHJ5LnR4d2ktPnBhZ2VfcG9vbF9idWYgPSBOVUxMOw0KPiA+ICsJCQl9DQo+ID4gKw0KPiA+ICsJ CQlpZiAoIShkZXYtPmRydi0+ZHJ2X2ZsYWdzICYNCj4gPiBNVF9EUlZfVFhXSV9OT19GUkVFKSkN Cj4gPiArCQkJCW10NzZfcHV0X3R4d2koZGV2LCBlbnRyeS50eHdpKTsNCj4gPiArCQl9DQo+ID4g Kw0KPiA+ICsJCWlmICghZmx1c2ggJiYgcS0+dGFpbCA9PSBsYXN0KQ0KPiA+ICsJCQlsYXN0ID0g UV9SRUFEKHEsIGRtYV9pZHgpOw0KPiA+ICsJfQ0KPiA+ICsJc3Bpbl91bmxvY2tfYmgoJnEtPmNs ZWFudXBfbG9jayk7DQo+ID4gKw0KPiA+ICsJaWYgKGZsdXNoKSB7DQo+ID4gKwkJc3Bpbl9sb2Nr X2JoKCZxLT5sb2NrKTsNCj4gPiArCQltdDc2X2RtYV9zeW5jX2lkeChkZXYsIHEpOw0KPiA+ICsJ CW10NzZfZG1hX2tpY2tfcXVldWUoZGV2LCBxKTsNCj4gPiArCQlzcGluX3VubG9ja19iaCgmcS0+ bG9jayk7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKCFxLT5xdWV1ZWQpDQo+ID4gKwkJd2Fr ZV91cCgmZGV2LT50eF93YWl0KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBt dDc2X3F1ZXVlX29wcyBtdDc5MnhfcXVldWVfb3BzOw0KPiA+ICsNCj4gPiArdm9pZCBtdDc5Mnhf ZG1hX2F0dGFjaChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldikNCj4gPiArew0KPiA+ICsJbXQ3OTJ4X3F1 ZXVlX29wcyA9IG10NzZfZG1hX29wczsNCj4gDQo+IGNhbiB5b3UgcGxlYXNlIHRha2UgYSBsb29r IHRvIG10NzYxNV9tbWlvX3Byb2JlKCk/DQo+IA0KPiBSZWdhcmRzLA0KPiBMb3JlbnpvDQo+IA0K DQpZZXMsIEkndmUgcmVmZXJlbmNlZCBpdCBhbmQgd2lsbCBtYWtlIHRoaXMgY2hhbmdlIGluIHYy IGlmIHlvdSdyZSBPSw0Kd2l0aCBpdC4NCg0KICAgIHZvaWQgbXQ3OTJ4X2RtYV9hdHRhY2goc3Ry dWN0IG10NzZfZGV2ICpkZXYpDQogICAgew0KICAgIC0gICAgbXQ3MDJ4X3F1ZXVlX29wcyA9IG10 NzZfZG1hX29wczsNCiAgICArICAgIG10NzZfZG1hX2F0dGFjaChkZXYpOw0KICAgICsgICAgbXQ3 OTJ4X3F1ZXVlX29wcyA9ICpkZXYtPnF1ZXVlX29wczsNCiAgICArICAgIG10NzkyeF9xdWV1ZV9v cHMudHhfcXVldWVfc2tiID0gbXQ3OTJ4X2RtYV90eF9xdWV1ZV9za2I7DQogICAgLSAgICBtdDc5 MnhfcXVldWVfb3BzLnR4X2NsZWFudXAgPSBtdDc5MnhfZG1hX3R4X2NsZWFudXA7DQogICAgICAg ICBkZXYtPnF1ZXVlX29wcyA9ICZtdDc5MnhfcXVldWVfb3BzOw0KICAgIH0NCg0KVGhhbmtzLA0K RWFzb24NCg0KPiA+ICsNCj4gPiArCW10NzkyeF9xdWV1ZV9vcHMudHhfcXVldWVfc2tiID0gbXQ3 OTJ4X2RtYV90eF9xdWV1ZV9za2I7DQo+ID4gKwltdDc5MnhfcXVldWVfb3BzLnR4X2NsZWFudXAg PSBtdDc5MnhfZG1hX3R4X2NsZWFudXA7DQo+ID4gKw0KPiA+ICsJZGV2LT5xdWV1ZV9vcHMgPSAm bXQ3OTJ4X3F1ZXVlX29wczsNCj4gPiArfQ0KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChtdDc5Mnhf ZG1hX2F0dGFjaCk7DQo+ID4gKw0KPiA+IMKgaW50IG10NzkyeF9kbWFfZGlzYWJsZShzdHJ1Y3Qg bXQ3OTJ4X2RldiAqZGV2LCBib29sIGZvcmNlKQ0KPiA+IMKgew0KPiA+IMKgCS8qIGRpc2FibGUg V0ZETUEwICovDQo+ID4gQEAgLTMyNiw2ICs2NDYsOCBAQCB2b2lkIG10NzkyeF9kbWFfY2xlYW51 cChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQ0KPiA+IMKgCQkgTVRfV0ZETUEwX1JTVF9MT0dJQ19S U1QpOw0KPiA+IMKgDQo+ID4gwqAJbXQ3Nl9kbWFfY2xlYW51cCgmZGV2LT5tdDc2KTsNCj4gPiAr DQo+ID4gKwltdDc5MnhfZG1hX3R4X3BhZ2VfcG9vbF9jbGVhbnVwKGRldik7DQo+ID4gwqB9DQo+ ID4gwqBFWFBPUlRfU1lNQk9MX0dQTChtdDc5MnhfZG1hX2NsZWFudXApOw0KPiA+IMKgDQo+ID4g LS0gDQo+ID4gMi40NS4yDQo+ID4gDQoNCg==