From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 01F7CC433EF for ; Thu, 3 Feb 2022 21:57:21 +0000 (UTC) Received: from localhost ([::1]:43662 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nFk6Q-0006rB-6F for qemu-devel@archiver.kernel.org; Thu, 03 Feb 2022 16:57:18 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36080) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nFk3E-0004bN-5d for qemu-devel@nongnu.org; Thu, 03 Feb 2022 16:54:00 -0500 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]:49836) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nFk34-0000T2-Tw for qemu-devel@nongnu.org; Thu, 03 Feb 2022 16:53:53 -0500 Received: from pps.filterd (m0127839.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 213HmoVZ011597; Thu, 3 Feb 2022 13:53:45 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h=from : to : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=proofpoint20171006; bh=ETh0pyg5Z9oehzlhcTxZKzGafbogVY4IzqOZuM1jTFM=; b=j4uYFFTQOS4eHSZKdxLTRYbGTSkAJeg1AnysanuISpEodVPJ+Mb+YLR2+sip/nHKrrYW RwtZtETQCSzSu6yh2W0o5nKPV4k7g47OhYH0rkpz78WsOA+83B6RcCtwGcMvChQwPyyL 8evJxIZRe74BOkm/oJgw/gbtsu8PyIbA0j3/JgUUkmYlOGWlKYzgE3lJJ8f2vVOzNGnM P3dME3UM69fxtNp7A2a0sYml85C7p6d/julqz8/Tose4ZVRxM8z+jcO/A/2CtMiQbax4 ne9Zu8rrBpIMK3G/v883mvgIfqCSia48QxjfckPJIc/D9FAXbXe/eMwAOZ6VtZArqKa6 /w== Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1anam02lp2044.outbound.protection.outlook.com [104.47.57.44]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 3e0ksd8gad-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 03 Feb 2022 13:53:45 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HZyM+DVl3Q+v09PDo3z4bXZ1W3kck2+9JVcggOu5ZGB9F+AuG+IDbk6ZzHJh1T+mhdo5SYukZjbrxdszdikyirJBnQRQs7XiRI97l2edQtfwxX7xoN16QNXstetg6dNtfHAJcsgDbXe6A3WLEtU9efgk1chBJCKER5LxI/vJ5hkvI8miuqbJYnaZtozypuySZv5lg1lJ+8r26Zpa7Z65rmb2rUmT1/f7ViQT6vuwRYwUU/CBQ+EY9VTP0FLhx0JEyFRUVD2G1sHWT9mliV0BekgN3ZvMWVnKWljovwS9BKPSnPw0jXPr3YTSN6g2DfsRDhsQRBG6YvqAEfYrYzPifQ== 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=ETh0pyg5Z9oehzlhcTxZKzGafbogVY4IzqOZuM1jTFM=; b=gMGx/mqeiZDRrTFzpk45RzuwzTORdDYfBTjItUqeXUrxkkXHHA46HIL407u5hzAQm0iMfnAKy3OFklrPf9aAQYOSi2W7NguJbLR2V/7Ajybh7w93y7NmTHXu3+DuhUbT9TyVx1xLtM2gaJfp6xnQxVwYznCmLtuU1qI4sKeobRrSATCqDpM71NH7J0dEE+tsswkBqfojuVfKG4SJOp5lPDNgpfEZ5OQQYXA3UZrbKqU6QM2B1X5+wUR8ebzV8CPHeAuVjkzZi5ls5hSbAzHtQeJJDicVrsdsCtgErB0e/BRU5xNH9zGsxc/pOJF5esDEn1NMcnnifTkwYjEyTTCgEQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from DM8PR02MB8005.namprd02.prod.outlook.com (2603:10b6:8:16::16) by MW4PR02MB7154.namprd02.prod.outlook.com (2603:10b6:303:7a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.12; Thu, 3 Feb 2022 21:53:43 +0000 Received: from DM8PR02MB8005.namprd02.prod.outlook.com ([fe80::b94a:5302:b5e4:441]) by DM8PR02MB8005.namprd02.prod.outlook.com ([fe80::b94a:5302:b5e4:441%6]) with mapi id 15.20.4930.021; Thu, 3 Feb 2022 21:53:43 +0000 From: Thanos Makatos To: John Johnson , "qemu-devel@nongnu.org" Subject: RE: [RFC v4 08/21] vfio-user: define socket receive functions Thread-Topic: [RFC v4 08/21] vfio-user: define socket receive functions Thread-Index: AQHYB1D6K8ghW7qhUU+7F4HUyUpkaayCf7Bg Date: Thu, 3 Feb 2022 21:53:43 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9e90cc53-3f4c-439c-0970-08d9e75fa57b x-ms-traffictypediagnostic: MW4PR02MB7154:EE_ x-microsoft-antispam-prvs: x-proofpoint-crosstenant: true x-ms-oob-tlc-oobclassifiers: OLM:3968; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BuiC78a0gWiAfv+XBu/A85R6bi7LW9xwMPziU8LC7tS2EjVVQvGZ1HsA6WQf5ZpaU3W+JR1RkP2SvMRja98ONINNNZ5puUOykKAL9o7dMchlkgTXX57i1JoWfUskxXkDIcBeH3pYOIotDh7G06nfFd/ng+slvypUs7IgpXHTl5Cjg5cWzHFld532CYy5wtd6X7MwLzSha6VQtD2F2tANJfAfB16Jv3f6WhDUjdOSjfmECnUp1E7nV7kdSWbhOvPzWI1JMe12na97OctB0M8bHsHZsKTj3u1kRZcEndXRamkGKB9JbRxRDRdX0QT/mOUz5zTJIkRjfUTQu2FkRVMDn+OjDTGrcVElNsYm7pZnRjDq7ZRp0wzJTK5lWiPnhXVNV3vOVeaMLwWFJWAwCtSjR6DEeDFIvQuTLfWD0+KOfISKC47tN5yD9BfMKe5+fEX55kFuKqI3ZjEXP8EXKu/gkqtQdIB9LDssx4L93MVXBxE68dNk+NflFcawKiucWHMMImmgE80zE4KSOYFykhqvaKtSVu97cUmonEQqDd8JjyQY7Z8iSVcGB1e8S7Vz8KvignOAO9p3uw7JY38OgsNKVHLxHPzUPjeIfozmpbA1gpB8lhVFVtZLJQiqUBR4/+e84ppRcWbeVCXb4QzgidmuVwDuYfS6Ro7axI1/wcCgW382qFa1sk2L+/vnxUjXJfIhkk1K0QATPtuJy8zQ75MzNA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR02MB8005.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(6506007)(83380400001)(2906002)(7696005)(55016003)(53546011)(86362001)(44832011)(38100700002)(8676002)(508600001)(186003)(9686003)(26005)(316002)(33656002)(110136005)(66556008)(38070700005)(66946007)(8936002)(66476007)(64756008)(66446008)(76116006)(52536014)(71200400001)(5660300002)(122000001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ejFPcmdXMjFWTyt5NmdLUnM2MXhIeUNrb0dMODY0M2ZiOVE3a3VQMk1yeHJq?= =?utf-8?B?YUZ2N1VXd0ZPWHlyRzdwMWxmaGtvV2pERm9NV1dWbGFHdytYSU9RQVFCNmdO?= =?utf-8?B?MkJmc2UxOUV1K2JQekR3SmszaVVnVU4vR1M5YVhYclZucklVM21Fclcxa3h2?= =?utf-8?B?SlgrTm9PajZSdWpLZnl0OFQySWQ5OEtxb00ydUlRU3R3ZG55bTlIaTk5VWRI?= =?utf-8?B?TFYzKzRpbUZFeWh6akVsYlUvMUZnTjR6NGsvK0EzdGZTWEFyTjhueHBQUklQ?= =?utf-8?B?K2RQZ0ZSKzhYTVBKN1NjTDlSUm85VFdIR29ZYkxlL1dMN0UvY25HRG5BT0ZF?= =?utf-8?B?YmxBdktMaEVPK0h0b3dTcU9pRnpKOWhjSExxZ29HbERDekp5eEdZSk1VYVFo?= =?utf-8?B?L2o2TTRmR2c0TUpTTjF3VzVFdHpvVlpDSlU1WUtqWlVXREVQWDRYcHF4S0FO?= =?utf-8?B?d2ZIL2N5NmRIVldxcWNXRXB6bU9Ub2ZWRDkwMjVaTVpqZ3hDRzNWQ1Z6KzMx?= =?utf-8?B?NWFjamQ2SWwvRlJlWUZQYUhLYVBTTkxiaUptK0Z3NTZXclVDT3RNcThkcjRa?= =?utf-8?B?cW1uL3g0R2xLSm0vU1huRVdSa0s0TFlLQkU0R2ZZK0QzTFh3dUZkZkRKV1hS?= =?utf-8?B?U0dWS3U4L1d1My9WL1hxVCs5Zmx2Mm5IUk9yTmwxSERrREVOMG0vWkd4TFIy?= =?utf-8?B?U3JMaVJYNU1uMW1uMFVvNXYrcXd1cFZaUUY1R3JwSUlCR215VllURHIzN2ZC?= =?utf-8?B?bEtHcVhsQkdyS05jekVtQUtxcUZDYlNxZmR0ekpyb1ZCdERFL0gwMWVnNFpa?= =?utf-8?B?RnNWdmphUWRoL1BucG9mT2paL0hzV1lVazJsVzl5NC82MUJKMlhMMFdDUUNH?= =?utf-8?B?VGs2K2tsaGZZTTErZU02ZzlFNWkxYTVPWExBSEdyK3k2VEhVMkxFczNUWkxp?= =?utf-8?B?NkpYV0NDZzJIYVVaQ04vSFl5enBrUjdBQU9LQVMvSENLdFJjcHZVOEdiWTNQ?= =?utf-8?B?YUtHSnJiandGc09QcldCamdwTGhOMHAxRVREL2t6OGpTSUd6RzdvZXRjdnZK?= =?utf-8?B?d2VQcW42b0dXN3M0NWVKQmZJaWR6NlJyMnVLZk51TWs1dlY4cE14azhaa0to?= =?utf-8?B?RUVUREdabnNvS3pUNTNLZVBmVC8vR1lxVVI0d3NUUnlTYmNXSlFQMXZROS9i?= =?utf-8?B?SHRRcDY5T2UxZkhqb29Mck9CalFqR1BwSURIRG9saWk0TEhsWThmVTdQYWZI?= =?utf-8?B?SmJEYk9BTkFkR0J5ODVuMDk1UzZsTlJEdVNqdnIxOGtUWWNITExvVmg4U24v?= =?utf-8?B?NXVGNlFqRXVIeHJRMXVneU5vZnhyZ3hVMFdoTGNHejBSOFlCM0FCeXhXSmFS?= =?utf-8?B?dWNGaFQ3Qk94aG15NnRZa3ZIYXNWazFCaE1yTTZoQW1leHBKckxzZ0w5blg4?= =?utf-8?B?Z2tDeFczQmNzcHE5cG1lR0VYT1VrQ1ZRNXRDcGdkSkhWNTBnTlJadXpaY3pk?= =?utf-8?B?amxpYlNXclRFMktIRmZmRXFxdlk2WTcyM1RVZDgrUHdiRUFFdFJxbm1rNWlk?= =?utf-8?B?N2x0STF0aGlHUkxaOVJRSWUrWmhzQWtoeVpGVDlKK29ucW9SN29BaGRsOXZX?= =?utf-8?B?L2FWdHovN2RtbXJVbW9YTHVYOUpSV2l3TEF0cDNYNUQ0VzByS29XZVplRWVv?= =?utf-8?B?UmVCOUp2WUZKSm1SWndVa2IxK2cvUGpWWGx5VG1OaGJpR0pwVUkzek1jM002?= =?utf-8?B?bklsZ2RTWkp1QWdUdFZSOTZyc1ZBWVJseUFWQXcyL2EzQ0huODQyQmV6QnBa?= =?utf-8?B?d2E0V3I2S2lkaFNVVWxPQ1M0bFVEMnNjcjcwMWJTd0FrK3BJZEZoL3BKVzVW?= =?utf-8?B?Z3dNTVRVY0U3V3NCeTBBbUVOSWswQk9BekgzSk9FUTlzeDlTWkxPc2MrYTAr?= =?utf-8?B?NGM1ZWFoVkRaa1k2cmpmRUZIUHRTMVBBRWIxT3VYNmM2bXUyZjRtanNRREI4?= =?utf-8?B?RUxITGpyb2tzb0Qxald0aE42azhJSWhhYXBhUERvWGsrcW45ZUxpZ2h0ZDho?= =?utf-8?B?djJWa2tqVjZ6Z3BVVVdscm16UlRnb1ZDVXJkNklxdVdXVDRqcENHcDNrZ0VR?= =?utf-8?B?b3l6OWpuRzA1TWkzOUJEL3pESEd4VzNpVVFPcTZaTksvRXRiZ1NTWGt4VENM?= =?utf-8?B?V1NsWlFQWXJSWkdMOWlHbEhURW4vZy9LUnA3VVZkZ1RLYWE4UnljTTF2eURx?= =?utf-8?B?YzRmNVRSWlFqdXQwZHk2WjZ2ZzBRPT0=?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR02MB8005.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e90cc53-3f4c-439c-0970-08d9e75fa57b X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Feb 2022 21:53:43.2911 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 6AHbR8xqd1Muwtv7fImxr5toy6pcODmg/fIWf4iDwQIXFst1l110zphWCn9Jqw5i9PRrHOwHWzS9SZFTDEokDwfmAFm6BOnqRMMyPs5UZV8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR02MB7154 X-Proofpoint-GUID: xEWZEdnVtZLxmgoG-o_0T_BvKAG2jB5y X-Proofpoint-ORIG-GUID: xEWZEdnVtZLxmgoG-o_0T_BvKAG2jB5y X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2022-02-03_07,2022-02-03_01,2021-12-02_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass client-ip=148.163.151.68; envelope-from=thanos.makatos@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -21 X-Spam_score: -2.2 X-Spam_bar: -- X-Spam_report: (-2.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.086, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUWVtdS1kZXZlbCA8cWVt dS1kZXZlbC0NCj4gYm91bmNlcyt0aGFub3MubWFrYXRvcz1udXRhbml4LmNvbUBub25nbnUub3Jn PiBPbiBCZWhhbGYgT2YgSm9obg0KPiBKb2huc29uDQo+IFNlbnQ6IDEyIEphbnVhcnkgMjAyMiAw MDo0NA0KPiBUbzogcWVtdS1kZXZlbEBub25nbnUub3JnDQo+IFN1YmplY3Q6IFtSRkMgdjQgMDgv MjFdIHZmaW8tdXNlcjogZGVmaW5lIHNvY2tldCByZWNlaXZlIGZ1bmN0aW9ucw0KPiANCj4gQWRk IGluZnJhc3RydWN0dXJlIG5lZWRlZCB0byByZWNlaXZlIGluY29taW5nIG1lc3NhZ2VzDQo+IA0K PiBTaWduZWQtb2ZmLWJ5OiBKb2huIEcgSm9obnNvbiA8am9obi5nLmpvaG5zb25Ab3JhY2xlLmNv bT4NCj4gU2lnbmVkLW9mZi1ieTogRWxlbmEgVWZpbXRzZXZhIDxlbGVuYS51ZmltdHNldmFAb3Jh Y2xlLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogSmFnYW5uYXRoYW4gUmFtYW4gPGphZy5yYW1hbkBv cmFjbGUuY29tPg0KPiAtLS0NCj4gIGh3L3ZmaW8vdXNlci1wcm90b2NvbC5oIHwgIDU0ICsrKysr KysrDQo+ICBody92ZmlvL3VzZXIuaCAgICAgICAgICB8ICAgNiArDQo+ICBody92ZmlvL3BjaS5j ICAgICAgICAgICB8ICAgNiArDQo+ICBody92ZmlvL3VzZXIuYyAgICAgICAgICB8IDMyNw0KPiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gIE1BSU5U QUlORVJTICAgICAgICAgICAgIHwgICAxICsNCj4gIDUgZmlsZXMgY2hhbmdlZCwgMzk0IGluc2Vy dGlvbnMoKykNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBody92ZmlvL3VzZXItcHJvdG9jb2wuaA0K PiANCj4gZGlmZiAtLWdpdCBhL2h3L3ZmaW8vdXNlci1wcm90b2NvbC5oIGIvaHcvdmZpby91c2Vy LXByb3RvY29sLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uZDIz ODc3Yw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2h3L3ZmaW8vdXNlci1wcm90b2NvbC5oDQo+ IEBAIC0wLDAgKzEsNTQgQEANCj4gKyNpZm5kZWYgVkZJT19VU0VSX1BST1RPQ09MX0gNCj4gKyNk ZWZpbmUgVkZJT19VU0VSX1BST1RPQ09MX0gNCj4gKw0KPiArLyoNCj4gKyAqIHZmaW8gcHJvdG9j b2wgb3ZlciBhIFVOSVggc29ja2V0Lg0KPiArICoNCj4gKyAqIENvcHlyaWdodCDCqSAyMDE4LCAy MDIxIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuDQo+ICsgKg0KPiArICogVGhpcyB3b3Jr IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCwgdmVyc2lvbiAyLiAg U2VlDQo+ICsgKiB0aGUgQ09QWUlORyBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5Lg0K PiArICoNCj4gKyAqIEVhY2ggbWVzc2FnZSBoYXMgYSBzdGFuZGFyZCBoZWFkZXIgdGhhdCBkZXNj cmliZXMgdGhlIGNvbW1hbmQNCj4gKyAqIGJlaW5nIHNlbnQsIHdoaWNoIGlzIGFsbW9zdCBhbHdh eXMgYSBWRklPIGlvY3RsKCkuDQo+ICsgKg0KPiArICogVGhlIGhlYWRlciBtYXkgYmUgZm9sbG93 ZWQgYnkgY29tbWFuZC1zcGVjaWZpYyBkYXRhLCBzdWNoIGFzIHRoZQ0KPiArICogcmVnaW9uIGFu ZCBvZmZzZXQgaW5mbyBmb3IgcmVhZCBhbmQgd3JpdGUgY29tbWFuZHMuDQo+ICsgKi8NCj4gKw0K PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICAgIHVpbnQxNl90IGlkOw0KPiArICAgIHVpbnQxNl90 IGNvbW1hbmQ7DQo+ICsgICAgdWludDMyX3Qgc2l6ZTsNCj4gKyAgICB1aW50MzJfdCBmbGFnczsN Cj4gKyAgICB1aW50MzJfdCBlcnJvcl9yZXBseTsNCj4gK30gVkZJT1VzZXJIZHI7DQo+ICsNCj4g Ky8qIFZGSU9Vc2VySGRyIGNvbW1hbmRzICovDQo+ICtlbnVtIHZmaW9fdXNlcl9jb21tYW5kIHsN Cj4gKyAgICBWRklPX1VTRVJfVkVSU0lPTiAgICAgICAgICAgICAgICAgICA9IDEsDQo+ICsgICAg VkZJT19VU0VSX0RNQV9NQVAgICAgICAgICAgICAgICAgICAgPSAyLA0KPiArICAgIFZGSU9fVVNF Ul9ETUFfVU5NQVAgICAgICAgICAgICAgICAgID0gMywNCj4gKyAgICBWRklPX1VTRVJfREVWSUNF X0dFVF9JTkZPICAgICAgICAgICA9IDQsDQo+ICsgICAgVkZJT19VU0VSX0RFVklDRV9HRVRfUkVH SU9OX0lORk8gICAgPSA1LA0KPiArICAgIFZGSU9fVVNFUl9ERVZJQ0VfR0VUX1JFR0lPTl9JT19G RFMgID0gNiwNCj4gKyAgICBWRklPX1VTRVJfREVWSUNFX0dFVF9JUlFfSU5GTyAgICAgICA9IDcs DQo+ICsgICAgVkZJT19VU0VSX0RFVklDRV9TRVRfSVJRUyAgICAgICAgICAgPSA4LA0KPiArICAg IFZGSU9fVVNFUl9SRUdJT05fUkVBRCAgICAgICAgICAgICAgID0gOSwNCj4gKyAgICBWRklPX1VT RVJfUkVHSU9OX1dSSVRFICAgICAgICAgICAgICA9IDEwLA0KPiArICAgIFZGSU9fVVNFUl9ETUFf UkVBRCAgICAgICAgICAgICAgICAgID0gMTEsDQo+ICsgICAgVkZJT19VU0VSX0RNQV9XUklURSAg ICAgICAgICAgICAgICAgPSAxMiwNCj4gKyAgICBWRklPX1VTRVJfREVWSUNFX1JFU0VUICAgICAg ICAgICAgICA9IDEzLA0KPiArICAgIFZGSU9fVVNFUl9ESVJUWV9QQUdFUyAgICAgICAgICAgICAg ID0gMTQsDQo+ICsgICAgVkZJT19VU0VSX01BWCwNCj4gK307DQo+ICsNCj4gKy8qIFZGSU9Vc2Vy SGRyIGZsYWdzICovDQo+ICsjZGVmaW5lIFZGSU9fVVNFUl9SRVFVRVNUICAgICAgIDB4MA0KPiAr I2RlZmluZSBWRklPX1VTRVJfUkVQTFkgICAgICAgICAweDENCj4gKyNkZWZpbmUgVkZJT19VU0VS X1RZUEUgICAgICAgICAgMHhGDQo+ICsNCj4gKyNkZWZpbmUgVkZJT19VU0VSX05PX1JFUExZICAg ICAgMHgxMA0KPiArI2RlZmluZSBWRklPX1VTRVJfRVJST1IgICAgICAgICAweDIwDQo+ICsNCj4g KyNlbmRpZiAvKiBWRklPX1VTRVJfUFJPVE9DT0xfSCAqLw0KPiBkaWZmIC0tZ2l0IGEvaHcvdmZp by91c2VyLmggYi9ody92ZmlvL3VzZXIuaA0KPiBpbmRleCBkYTkyODYyLi43MmVlZmE3IDEwMDY0 NA0KPiAtLS0gYS9ody92ZmlvL3VzZXIuaA0KPiArKysgYi9ody92ZmlvL3VzZXIuaA0KPiBAQCAt MTEsNiArMTEsOCBAQA0KPiAgICoNCj4gICAqLw0KPiANCj4gKyNpbmNsdWRlICJ1c2VyLXByb3Rv Y29sLmgiDQo+ICsNCj4gIHR5cGVkZWYgc3RydWN0IHsNCj4gICAgICBpbnQgc2VuZF9mZHM7DQo+ ICAgICAgaW50IHJlY3ZfZmRzOw0KPiBAQCAtMjcsNiArMjksNyBAQCBlbnVtIG1zZ190eXBlIHsN Cj4gDQo+ICB0eXBlZGVmIHN0cnVjdCBWRklPVXNlck1zZyB7DQo+ICAgICAgUVRBSUxRX0VOVFJZ KFZGSU9Vc2VyTXNnKSBuZXh0Ow0KPiArICAgIFZGSU9Vc2VySGRyICpoZHI7DQo+ICAgICAgVkZJ T1VzZXJGRHMgKmZkczsNCj4gICAgICB1aW50MzJfdCByc2l6ZTsNCj4gICAgICB1aW50MzJfdCBp ZDsNCj4gQEAgLTc0LDUgKzc3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgVkZJT1Byb3h5IHsNCj4gDQo+ ICBWRklPUHJveHkgKnZmaW9fdXNlcl9jb25uZWN0X2RldihTb2NrZXRBZGRyZXNzICphZGRyLCBF cnJvciAqKmVycnApOw0KPiAgdm9pZCB2ZmlvX3VzZXJfZGlzY29ubmVjdChWRklPUHJveHkgKnBy b3h5KTsNCj4gK3ZvaWQgdmZpb191c2VyX3NldF9oYW5kbGVyKFZGSU9EZXZpY2UgKnZiYXNlZGV2 LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmhhbmRsZXIpKHZvaWQgKm9w YXF1ZSwgVkZJT1VzZXJNc2cgKm1zZyksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB2 b2lkICpyZXFhcmcpOw0KPiANCj4gICNlbmRpZiAvKiBWRklPX1VTRVJfSCAqLw0KPiBkaWZmIC0t Z2l0IGEvaHcvdmZpby9wY2kuYyBiL2h3L3ZmaW8vcGNpLmMNCj4gaW5kZXggOWZkN2MwNy4uMGRl OTE1ZCAxMDA2NDQNCj4gLS0tIGEvaHcvdmZpby9wY2kuYw0KPiArKysgYi9ody92ZmlvL3BjaS5j DQo+IEBAIC0zMzg2LDYgKzMzODYsMTEgQEAgdHlwZV9pbml0KHJlZ2lzdGVyX3ZmaW9fcGNpX2Rl dl90eXBlKQ0KPiAgICogdmZpby11c2VyIHJvdXRpbmVzLg0KPiAgICovDQo+IA0KPiArc3RhdGlj IHZvaWQgdmZpb191c2VyX3BjaV9wcm9jZXNzX3JlcSh2b2lkICpvcGFxdWUsIFZGSU9Vc2VyTXNn ICptc2cpDQo+ICt7DQo+ICsNCj4gK30NCj4gKw0KPiAgLyoNCj4gICAqIEVtdWxhdGVkIGRldmlj ZXMgZG9uJ3QgdXNlIGhvc3QgaG90IHJlc2V0DQo+ICAgKi8NCj4gQEAgLTM0MzIsNiArMzQzNyw3 IEBAIHN0YXRpYyB2b2lkIHZmaW9fdXNlcl9wY2lfcmVhbGl6ZShQQ0lEZXZpY2UgKnBkZXYsDQo+ IEVycm9yICoqZXJycCkNCj4gICAgICAgICAgcmV0dXJuOw0KPiAgICAgIH0NCj4gICAgICB2YmFz ZWRldi0+cHJveHkgPSBwcm94eTsNCj4gKyAgICB2ZmlvX3VzZXJfc2V0X2hhbmRsZXIodmJhc2Vk ZXYsIHZmaW9fdXNlcl9wY2lfcHJvY2Vzc19yZXEsIHZkZXYpOw0KPiANCj4gICAgICB2YmFzZWRl di0+bmFtZSA9IGdfc3RyZHVwX3ByaW50ZigiVkZJTyB1c2VyIDwlcz4iLCB1ZGV2LT5zb2NrX25h bWUpOw0KPiAgICAgIHZiYXNlZGV2LT5kZXYgPSBERVZJQ0UodmRldik7DQo+IGRpZmYgLS1naXQg YS9ody92ZmlvL3VzZXIuYyBiL2h3L3ZmaW8vdXNlci5jDQo+IGluZGV4IGM4NDNmOTAuLmUxZGZk NWQgMTAwNjQ0DQo+IC0tLSBhL2h3L3ZmaW8vdXNlci5jDQo+ICsrKyBiL2h3L3ZmaW8vdXNlci5j DQo+IEBAIC0yNSwxMCArMjUsMjYgQEANCj4gICNpbmNsdWRlICJzeXNlbXUvaW90aHJlYWQuaCIN Cj4gICNpbmNsdWRlICJ1c2VyLmgiDQo+IA0KPiArc3RhdGljIHVpbnQ2NF90IG1heF94ZmVyX3Np emU7DQo+ICBzdGF0aWMgSU9UaHJlYWQgKnZmaW9fdXNlcl9pb3RocmVhZDsNCj4gDQo+ICBzdGF0 aWMgdm9pZCB2ZmlvX3VzZXJfc2h1dGRvd24oVkZJT1Byb3h5ICpwcm94eSk7DQo+ICtzdGF0aWMg VkZJT1VzZXJNc2cgKnZmaW9fdXNlcl9nZXRtc2coVkZJT1Byb3h5ICpwcm94eSwgVkZJT1VzZXJI ZHIgKmhkciwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWRklPVXNl ckZEcyAqZmRzKTsNCj4gK3N0YXRpYyBWRklPVXNlckZEcyAqdmZpb191c2VyX2dldGZkcyhpbnQg bnVtZmRzKTsNCj4gK3N0YXRpYyB2b2lkIHZmaW9fdXNlcl9yZWN5Y2xlKFZGSU9Qcm94eSAqcHJv eHksIFZGSU9Vc2VyTXNnICptc2cpOw0KPiANCj4gK3N0YXRpYyB2b2lkIHZmaW9fdXNlcl9yZWN2 KHZvaWQgKm9wYXF1ZSk7DQo+ICtzdGF0aWMgaW50IHZmaW9fdXNlcl9yZWN2X29uZShWRklPUHJv eHkgKnByb3h5KTsNCj4gK3N0YXRpYyB2b2lkIHZmaW9fdXNlcl9jYih2b2lkICpvcGFxdWUpOw0K PiArDQo+ICtzdGF0aWMgdm9pZCB2ZmlvX3VzZXJfcmVxdWVzdCh2b2lkICpvcGFxdWUpOw0KPiAr DQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgdmZpb191c2VyX3NldF9lcnJvcihWRklPVXNlckhkciAq aGRyLCB1aW50MzJfdCBlcnIpDQo+ICt7DQo+ICsgICAgaGRyLT5mbGFncyB8PSBWRklPX1VTRVJf RVJST1I7DQo+ICsgICAgaGRyLT5lcnJvcl9yZXBseSA9IGVycjsNCj4gK30NCj4gDQo+ICAvKg0K PiAgICogRnVuY3Rpb25zIGNhbGxlZCBieSBtYWluLCBDUFUsIG9yIGlvdGhyZWFkIHRocmVhZHMN Cj4gQEAgLTQwLDEwICs1NiwyNjEgQEAgc3RhdGljIHZvaWQgdmZpb191c2VyX3NodXRkb3duKFZG SU9Qcm94eSAqcHJveHkpDQo+ICAgICAgcWlvX2NoYW5uZWxfc2V0X2Fpb19mZF9oYW5kbGVyKHBy b3h5LT5pb2MsIHByb3h5LT5jdHgsIE5VTEwsIE5VTEwsIE5VTEwpOw0KPiAgfQ0KPiANCj4gK3N0 YXRpYyBWRklPVXNlck1zZyAqdmZpb191c2VyX2dldG1zZyhWRklPUHJveHkgKnByb3h5LCBWRklP VXNlckhkciAqaGRyLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZG SU9Vc2VyRkRzICpmZHMpDQo+ICt7DQo+ICsgICAgVkZJT1VzZXJNc2cgKm1zZzsNCj4gKw0KPiAr ICAgIG1zZyA9IFFUQUlMUV9GSVJTVCgmcHJveHktPmZyZWUpOw0KPiArICAgIGlmIChtc2cgIT0g TlVMTCkgew0KPiArICAgICAgICBRVEFJTFFfUkVNT1ZFKCZwcm94eS0+ZnJlZSwgbXNnLCBuZXh0 KTsNCj4gKyAgICB9IGVsc2Ugew0KPiArICAgICAgICBtc2cgPSBnX21hbGxvYzAoc2l6ZW9mKCpt c2cpKTsNCj4gKyAgICAgICAgcWVtdV9jb25kX2luaXQoJm1zZy0+Y3YpOw0KPiArICAgIH0NCj4g Kw0KPiArICAgIG1zZy0+aGRyID0gaGRyOw0KPiArICAgIG1zZy0+ZmRzID0gZmRzOw0KPiArICAg IHJldHVybiBtc2c7DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsgKiBSZWN5Y2xlIGEgbWVzc2FnZSBs aXN0IGVudHJ5IHRvIHRoZSBmcmVlIGxpc3QuDQo+ICsgKi8NCj4gK3N0YXRpYyB2b2lkIHZmaW9f dXNlcl9yZWN5Y2xlKFZGSU9Qcm94eSAqcHJveHksIFZGSU9Vc2VyTXNnICptc2cpDQo+ICt7DQo+ ICsgICAgaWYgKG1zZy0+dHlwZSA9PSBWRklPX01TR19OT05FKSB7DQo+ICsgICAgICAgIGVycm9y X3ByaW50ZigidmZpb191c2VyX3JlY3ljbGUgLSBmcmVlaW5nIGZyZWUgbXNnXG4iKTsNCj4gKyAg ICAgICAgcmV0dXJuOw0KPiArICAgIH0NCj4gKw0KPiArICAgIC8qIGZyZWUgbXNnIGJ1ZmZlciBp ZiBubyBvbmUgaXMgd2FpdGluZyB0byBjb25zdW1lIHRoZSByZXBseSAqLw0KPiArICAgIGlmICht c2ctPnR5cGUgPT0gVkZJT19NU0dfTk9XQUlUIHx8IG1zZy0+dHlwZSA9PSBWRklPX01TR19BU1lO Qykgew0KPiArICAgICAgICBnX2ZyZWUobXNnLT5oZHIpOw0KPiArICAgICAgICBpZiAobXNnLT5m ZHMgIT0gTlVMTCkgew0KPiArICAgICAgICAgICAgZ19mcmVlKG1zZy0+ZmRzKTsNCj4gKyAgICAg ICAgfQ0KPiArICAgIH0NCj4gKw0KPiArICAgIG1zZy0+dHlwZSA9IFZGSU9fTVNHX05PTkU7DQo+ ICsgICAgbXNnLT5oZHIgPSBOVUxMOw0KPiArICAgIG1zZy0+ZmRzID0gTlVMTDsNCj4gKyAgICBt c2ctPmNvbXBsZXRlID0gZmFsc2U7DQo+ICsgICAgUVRBSUxRX0lOU0VSVF9IRUFEKCZwcm94eS0+ ZnJlZSwgbXNnLCBuZXh0KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIFZGSU9Vc2VyRkRzICp2Zmlv X3VzZXJfZ2V0ZmRzKGludCBudW1mZHMpDQo+ICt7DQo+ICsgICAgVkZJT1VzZXJGRHMgKmZkcyA9 IGdfbWFsbG9jMChzaXplb2YoKmZkcykgKyAobnVtZmRzICogc2l6ZW9mKGludCkpKTsNCj4gKw0K PiArICAgIGZkcy0+ZmRzID0gKGludCAqKSgoY2hhciAqKWZkcyArIHNpemVvZigqZmRzKSk7DQo+ ICsNCj4gKyAgICByZXR1cm4gZmRzOw0KPiArfQ0KPiArDQo+ICAvKg0KPiAgICogRnVuY3Rpb25z IG9ubHkgY2FsbGVkIGJ5IGlvdGhyZWFkDQo+ICAgKi8NCj4gDQo+ICtzdGF0aWMgdm9pZCB2Zmlv X3VzZXJfcmVjdih2b2lkICpvcGFxdWUpDQo+ICt7DQo+ICsgICAgVkZJT1Byb3h5ICpwcm94eSA9 IG9wYXF1ZTsNCj4gKw0KPiArICAgIFFFTVVfTE9DS19HVUFSRCgmcHJveHktPmxvY2spOw0KPiAr DQo+ICsgICAgaWYgKHByb3h5LT5zdGF0ZSA9PSBWRklPX1BST1hZX0NPTk5FQ1RFRCkgew0KPiAr ICAgICAgICB3aGlsZSAodmZpb191c2VyX3JlY3Zfb25lKHByb3h5KSA9PSAwKSB7DQo+ICsgICAg ICAgICAgICA7DQo+ICsgICAgICAgIH0NCj4gKyAgICB9DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsg KiBSZWNlaXZlIGFuZCBwcm9jZXNzIG9uZSBpbmNvbWluZyBtZXNzYWdlLg0KPiArICoNCj4gKyAq IEZvciByZXBsaWVzLCBmaW5kIG1hdGNoaW5nIG91dGdvaW5nIHJlcXVlc3QgYW5kIHdha2UgYW55 IHdhaXRlcnMuDQo+ICsgKiBGb3IgcmVxdWVzdHMsIHF1ZXVlIGluIGluY29taW5nIGxpc3QgYW5k IHJ1biByZXF1ZXN0IEJILg0KPiArICovDQo+ICtzdGF0aWMgaW50IHZmaW9fdXNlcl9yZWN2X29u ZShWRklPUHJveHkgKnByb3h5KQ0KPiArew0KPiArICAgIFZGSU9Vc2VyTXNnICptc2cgPSBOVUxM Ow0KPiArICAgIGdfYXV0b2ZyZWUgaW50ICpmZHAgPSBOVUxMOw0KPiArICAgIFZGSU9Vc2VyRkRz ICpyZXFmZHM7DQo+ICsgICAgVkZJT1VzZXJIZHIgaGRyOw0KPiArICAgIHN0cnVjdCBpb3ZlYyBp b3YgPSB7DQo+ICsgICAgICAgIC5pb3ZfYmFzZSA9ICZoZHIsDQo+ICsgICAgICAgIC5pb3ZfbGVu ID0gc2l6ZW9mKGhkciksDQo+ICsgICAgfTsNCj4gKyAgICBib29sIGlzcmVwbHkgPSBmYWxzZTsN Cj4gKyAgICBpbnQgaSwgcmV0Ow0KPiArICAgIHNpemVfdCBtc2dsZWZ0LCBudW1mZHMgPSAwOw0K PiArICAgIGNoYXIgKmRhdGEgPSBOVUxMOw0KPiArICAgIGNoYXIgKmJ1ZiA9IE5VTEw7DQo+ICsg ICAgRXJyb3IgKmxvY2FsX2VyciA9IE5VTEw7DQo+ICsNCj4gKyAgICAvKg0KPiArICAgICAqIFJl YWQgaGVhZGVyDQo+ICsgICAgICovDQo+ICsgICAgcmV0ID0gcWlvX2NoYW5uZWxfcmVhZHZfZnVs bChwcm94eS0+aW9jLCAmaW92LCAxLCAmZmRwLCAmbnVtZmRzLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmxvY2FsX2Vycik7DQo+ICsgICAgaWYgKHJldCA9PSBRSU9fQ0hB Tk5FTF9FUlJfQkxPQ0spIHsNCj4gKyAgICAgICAgcmV0dXJuIHJldDsNCj4gKyAgICB9DQo+ICsg ICAgaWYgKHJldCA8PSAwKSB7DQo+ICsgICAgICAgIC8qIHJlYWQgZXJyb3Igb3Igb3RoZXIgc2lk ZSBjbG9zZWQgY29ubmVjdGlvbiAqLw0KPiArICAgICAgICBpZiAocmV0ID09IDApIHsNCj4gKyAg ICAgICAgICAgIGVycm9yX3NldGcoJmxvY2FsX2VyciwgInZmaW9fdXNlcl9yZWN2IHNlcnZlciBj bG9zZWQgc29ja2V0Iik7DQo+ICsgICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICBlcnJv cl9wcmVwZW5kKCZsb2NhbF9lcnIsICJ2ZmlvX3VzZXJfcmVjdiIpOw0KPiArICAgICAgICB9DQo+ ICsgICAgICAgIGdvdG8gZmF0YWw7DQo+ICsgICAgfQ0KPiArICAgIGlmIChyZXQgPCBzaXplb2Yo bXNnKSkgew0KPiArICAgICAgICBlcnJvcl9zZXRnKCZsb2NhbF9lcnIsICJ2ZmlvX3VzZXJfcmVj diBzaG9ydCByZWFkIG9mIGhlYWRlciIpOw0KPiArICAgICAgICBnb3RvIGZhdGFsOw0KPiArICAg IH0NCj4gKw0KPiArICAgIC8qDQo+ICsgICAgICogVmFsaWRhdGUgaGVhZGVyDQo+ICsgICAgICov DQo+ICsgICAgaWYgKGhkci5zaXplIDwgc2l6ZW9mKFZGSU9Vc2VySGRyKSkgew0KPiArICAgICAg ICBlcnJvcl9zZXRnKCZsb2NhbF9lcnIsICJ2ZmlvX3VzZXJfcmVjdiBiYWQgaGVhZGVyIHNpemUi KTsNCj4gKyAgICAgICAgZ290byBmYXRhbDsNCj4gKyAgICB9DQo+ICsgICAgc3dpdGNoIChoZHIu ZmxhZ3MgJiBWRklPX1VTRVJfVFlQRSkgew0KPiArICAgIGNhc2UgVkZJT19VU0VSX1JFUVVFU1Q6 DQo+ICsgICAgICAgIGlzcmVwbHkgPSBmYWxzZTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAg Y2FzZSBWRklPX1VTRVJfUkVQTFk6DQo+ICsgICAgICAgIGlzcmVwbHkgPSB0cnVlOw0KPiArICAg ICAgICBicmVhazsNCj4gKyAgICBkZWZhdWx0Og0KPiArICAgICAgICBlcnJvcl9zZXRnKCZsb2Nh bF9lcnIsICJ2ZmlvX3VzZXJfcmVjdiB1bmtub3duIG1lc3NhZ2UgdHlwZSIpOw0KPiArICAgICAg ICBnb3RvIGZhdGFsOw0KPiArICAgIH0NCj4gKw0KPiArICAgIC8qDQo+ICsgICAgICogRm9yIHJl cGxpZXMsIGZpbmQgdGhlIG1hdGNoaW5nIHBlbmRpbmcgcmVxdWVzdC4NCj4gKyAgICAgKiBGb3Ig cmVxdWVzdHMsIHJlYXAgaW5jb21pbmcgRkRzLg0KPiArICAgICAqLw0KPiArICAgIGlmIChpc3Jl cGx5KSB7DQo+ICsgICAgICAgIFFUQUlMUV9GT1JFQUNIKG1zZywgJnByb3h5LT5wZW5kaW5nLCBu ZXh0KSB7DQo+ICsgICAgICAgICAgICBpZiAoaGRyLmlkID09IG1zZy0+aWQpIHsNCj4gKyAgICAg ICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICAgIH0NCj4gKyAgICAgICAgfQ0KPiArICAg ICAgICBpZiAobXNnID09IE5VTEwpIHsNCj4gKyAgICAgICAgICAgIGVycm9yX3NldGcoJmxvY2Fs X2VyciwgInZmaW9fdXNlcl9yZWN2IHVuZXhwZWN0ZWQgcmVwbHkiKTsNCj4gKyAgICAgICAgICAg IGdvdG8gZXJyOw0KPiArICAgICAgICB9DQo+ICsgICAgICAgIFFUQUlMUV9SRU1PVkUoJnByb3h5 LT5wZW5kaW5nLCBtc2csIG5leHQpOw0KPiArDQo+ICsgICAgICAgIC8qDQo+ICsgICAgICAgICAq IFByb2Nlc3MgYW55IHJlY2VpdmVkIEZEcw0KPiArICAgICAgICAgKi8NCj4gKyAgICAgICAgaWYg KG51bWZkcyAhPSAwKSB7DQo+ICsgICAgICAgICAgICBpZiAobXNnLT5mZHMgPT0gTlVMTCB8fCBt c2ctPmZkcy0+cmVjdl9mZHMgPCBudW1mZHMpIHsNCj4gKyAgICAgICAgICAgICAgICBlcnJvcl9z ZXRnKCZsb2NhbF9lcnIsICJ2ZmlvX3VzZXJfcmVjdiB1bmV4cGVjdGVkIEZEcyIpOw0KPiArICAg ICAgICAgICAgICAgIGdvdG8gZXJyOw0KPiArICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAg bXNnLT5mZHMtPnJlY3ZfZmRzID0gbnVtZmRzOw0KPiArICAgICAgICAgICAgbWVtY3B5KG1zZy0+ ZmRzLT5mZHMsIGZkcCwgbnVtZmRzICogc2l6ZW9mKGludCkpOw0KPiArICAgICAgICB9DQo+ICsg ICAgfSBlbHNlIHsNCj4gKyAgICAgICAgaWYgKG51bWZkcyAhPSAwKSB7DQo+ICsgICAgICAgICAg ICByZXFmZHMgPSB2ZmlvX3VzZXJfZ2V0ZmRzKG51bWZkcyk7DQo+ICsgICAgICAgICAgICBtZW1j cHkocmVxZmRzLT5mZHMsIGZkcCwgbnVtZmRzICogc2l6ZW9mKGludCkpOw0KPiArICAgICAgICB9 IGVsc2Ugew0KPiArICAgICAgICAgICAgcmVxZmRzID0gTlVMTDsNCj4gKyAgICAgICAgfQ0KPiAr ICAgIH0NCj4gKw0KPiArICAgIC8qDQo+ICsgICAgICogUHV0IHRoZSB3aG9sZSBtZXNzYWdlIGlu dG8gYSBzaW5nbGUgYnVmZmVyLg0KPiArICAgICAqLw0KPiArICAgIGlmIChpc3JlcGx5KSB7DQo+ ICsgICAgICAgIGlmIChoZHIuc2l6ZSA+IG1zZy0+cnNpemUpIHsNCj4gKyAgICAgICAgICAgIGVy cm9yX3NldGcoJmxvY2FsX2VyciwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgInZmaW9fdXNl cl9yZWN2IHJlcGx5IGxhcmdlciB0aGFuIHJlY3YgYnVmZmVyIik7DQo+ICsgICAgICAgICAgICBn b3RvIGVycjsNCj4gKyAgICAgICAgfQ0KPiArICAgICAgICAqbXNnLT5oZHIgPSBoZHI7DQo+ICsg ICAgICAgIGRhdGEgPSAoY2hhciAqKW1zZy0+aGRyICsgc2l6ZW9mKGhkcik7DQo+ICsgICAgfSBl bHNlIHsNCj4gKyAgICAgICAgaWYgKGhkci5zaXplID4gbWF4X3hmZXJfc2l6ZSkgew0KPiArICAg ICAgICAgICAgZXJyb3Jfc2V0ZygmbG9jYWxfZXJyLCAidmZpb191c2VyX3JlY3YgcmVxdWVzdCBs YXJnZXIgdGhhbiBtYXgiKTsNCj4gKyAgICAgICAgICAgIGdvdG8gZXJyOw0KPiArICAgICAgICB9 DQo+ICsgICAgICAgIGJ1ZiA9IGdfbWFsbG9jMChoZHIuc2l6ZSk7DQo+ICsgICAgICAgIG1lbWNw eShidWYsICZoZHIsIHNpemVvZihoZHIpKTsNCj4gKyAgICAgICAgZGF0YSA9IGJ1ZiArIHNpemVv ZihoZHIpOw0KPiArICAgICAgICBtc2cgPSB2ZmlvX3VzZXJfZ2V0bXNnKHByb3h5LCAoVkZJT1Vz ZXJIZHIgKilidWYsIHJlcWZkcyk7DQo+ICsgICAgICAgIG1zZy0+dHlwZSA9IFZGSU9fTVNHX1JF UTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBtc2dsZWZ0ID0gaGRyLnNpemUgLSBzaXplb2YoaGRy KTsNCj4gKyAgICB3aGlsZSAobXNnbGVmdCA+IDApIHsNCj4gKyAgICAgICAgcmV0ID0gcWlvX2No YW5uZWxfcmVhZChwcm94eS0+aW9jLCBkYXRhLCBtc2dsZWZ0LCAmbG9jYWxfZXJyKTsNCj4gKw0K PiArICAgICAgICAvKiBlcnJvciBvciB3b3VsZCBibG9jayAqLw0KPiArICAgICAgICBpZiAocmV0 IDwgMCkgew0KPiArICAgICAgICAgICAgZ290byBmYXRhbDsNCj4gKyAgICAgICAgfQ0KDQpJSVVD IHFpb19jaGFubmVsX3JlYWQoKSBlbmRzIHVwIGNhbGxpbmcgcWlvX2NoYW5uZWxfc29ja2V0X3Jl YWR2KCkgd2hpY2ggY2FuIHJldHVybiBRSU9fQ0hBTk5FTF9FUlJfQkxPQ0sgKC0yKS4gVGhlIGlm IHdpbGwgYmUgdGFrZW4gc28gbG9jYWxfZXJyIGlzIE5VTEwgYW5kIHRoYXQgY2F1c2VzIGEgc2Vn ZmF1bHQgd2hlbiBlcnJvcl9yZXBvcnRfZXJyKGxvY2FsX2VycikgaXMgY2FsbGVkIGJlZm9yZSBy ZXR1cm5pbmcgZnJvbSB0aGlzIGZ1bmN0aW9uLg0KDQo+ICsNCj4gKyAgICAgICAgbXNnbGVmdCAt PSByZXQ7DQo+ICsgICAgICAgIGRhdGEgKz0gcmV0Ow0KPiArICAgIH0NCj4gKw0KPiArICAgIC8q DQo+ICsgICAgICogUmVwbGllcyBzaWduYWwgYSB3YWl0ZXIsIGlmIG5vbmUganVzdCBjaGVjayBm b3IgZXJyb3JzDQo+ICsgICAgICogYW5kIGZyZWUgdGhlIG1lc3NhZ2UgYnVmZmVyLg0KPiArICAg ICAqDQo+ICsgICAgICogUmVxdWVzdHMgZ2V0IHF1ZXVlZCBmb3IgdGhlIEJILg0KPiArICAgICAq Lw0KPiArICAgIGlmIChpc3JlcGx5KSB7DQo+ICsgICAgICAgIG1zZy0+Y29tcGxldGUgPSB0cnVl Ow0KPiArICAgICAgICBpZiAobXNnLT50eXBlID09IFZGSU9fTVNHX1dBSVQpIHsNCj4gKyAgICAg ICAgICAgIHFlbXVfY29uZF9zaWduYWwoJm1zZy0+Y3YpOw0KPiArICAgICAgICB9IGVsc2Ugew0K PiArICAgICAgICAgICAgaWYgKGhkci5mbGFncyAmIFZGSU9fVVNFUl9FUlJPUikgew0KPiArICAg ICAgICAgICAgICAgIGVycm9yX3ByaW50ZigidmZpb191c2VyX3JjdiBlcnJvciByZXBseSBvbiBh c3luYyByZXF1ZXN0ICIpOw0KPiArICAgICAgICAgICAgICAgIGVycm9yX3ByaW50ZigiY29tbWFu ZCAleCBlcnJvciAlc1xuIiwgaGRyLmNvbW1hbmQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cmVycm9yKGhkci5lcnJvcl9yZXBseSkpOw0KPiArICAgICAgICAgICAgfQ0KPiAr ICAgICAgICAgICAgLyogeW91bmdlc3Qgbm93YWl0IG1zZyBoYXMgYmVlbiBhY2snZCAqLw0KPiAr ICAgICAgICAgICAgaWYgKHByb3h5LT5sYXN0X25vd2FpdCA9PSBtc2cpIHsNCj4gKyAgICAgICAg ICAgICAgICBwcm94eS0+bGFzdF9ub3dhaXQgPSBOVUxMOw0KPiArICAgICAgICAgICAgfQ0KPiAr ICAgICAgICAgICAgdmZpb191c2VyX3JlY3ljbGUocHJveHksIG1zZyk7DQo+ICsgICAgICAgIH0N Cj4gKyAgICB9IGVsc2Ugew0KPiArICAgICAgICBRVEFJTFFfSU5TRVJUX1RBSUwoJnByb3h5LT5p bmNvbWluZywgbXNnLCBuZXh0KTsNCj4gKyAgICAgICAgcWVtdV9iaF9zY2hlZHVsZShwcm94eS0+ cmVxX2JoKTsNCj4gKyAgICB9DQo+ICsgICAgcmV0dXJuIDA7DQo+ICsNCj4gKyAgICAvKg0KPiAr ICAgICAqIGZhdGFsIG1lYW5zIHRoZSBvdGhlciBzaWRlIGNsb3NlZCBvciB3ZSBkb24ndCB0cnVz dCB0aGUgc3RyZWFtDQo+ICsgICAgICogZXJyIG1lYW5zIHRoaXMgbWVzc2FnZSBpcyBjb3JydXB0 DQo+ICsgICAgICovDQo+ICtmYXRhbDoNCj4gKyAgICB2ZmlvX3VzZXJfc2h1dGRvd24ocHJveHkp Ow0KPiArICAgIHByb3h5LT5zdGF0ZSA9IFZGSU9fUFJPWFlfRVJST1I7DQo+ICsNCj4gK2VycjoN Cj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtZmRzOyBpKyspIHsNCj4gKyAgICAgICAgY2xvc2Uo ZmRwW2ldKTsNCj4gKyAgICB9DQo+ICsgICAgaWYgKGlzcmVwbHkgJiYgbXNnICE9IE5VTEwpIHsN Cj4gKyAgICAgICAgLyogZm9yY2UgYW4gZXJyb3IgdG8ga2VlcCBzZW5kaW5nIHRocmVhZCBmcm9t IGhhbmdpbmcgKi8NCj4gKyAgICAgICAgdmZpb191c2VyX3NldF9lcnJvcihtc2ctPmhkciwgRUlO VkFMKTsNCj4gKyAgICAgICAgbXNnLT5jb21wbGV0ZSA9IHRydWU7DQo+ICsgICAgICAgIHFlbXVf Y29uZF9zaWduYWwoJm1zZy0+Y3YpOw0KPiArICAgIH0NCj4gKyAgICBlcnJvcl9yZXBvcnRfZXJy KGxvY2FsX2Vycik7DQo+ICsgICAgcmV0dXJuIC0xOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgdm9p ZCB2ZmlvX3VzZXJfY2Iodm9pZCAqb3BhcXVlKQ0KPiAgew0KPiAgICAgIFZGSU9Qcm94eSAqcHJv eHkgPSBvcGFxdWU7DQo+IEBAIC01OSw2ICszMjYsNTEgQEAgc3RhdGljIHZvaWQgdmZpb191c2Vy X2NiKHZvaWQgKm9wYXF1ZSkNCj4gICAqIEZ1bmN0aW9ucyBjYWxsZWQgYnkgbWFpbiBvciBDUFUg dGhyZWFkcw0KPiAgICovDQo+IA0KPiArLyoNCj4gKyAqIFByb2Nlc3MgaW5jb21pbmcgcmVxdWVz dHMuDQo+ICsgKg0KPiArICogVGhlIGJ1cy1zcGVjaWZpYyBjYWxsYmFjayBoYXMgdGhlIGZvcm06 DQo+ICsgKiAgICByZXF1ZXN0KG9wYXF1ZSwgbXNnKQ0KPiArICogd2hlcmUgJ29wYXF1ZScgd2Fz IHNwZWNpZmllZCBpbiB2ZmlvX3VzZXJfc2V0X2hhbmRsZXINCj4gKyAqIGFuZCAnbXNnJyBpcyB0 aGUgaW5ib3VuZCBtZXNzYWdlLg0KPiArICoNCj4gKyAqIFRoZSBjYWxsYmFjayBpcyByZXNwb25z aWJsZSBmb3IgZGlzcG9zaW5nIG9mIHRoZSBtZXNzYWdlIGJ1ZmZlciwNCj4gKyAqIHVzdWFsbHkg YnkgcmUtdXNpbmcgaXQgd2hlbiBjYWxsaW5nIHZmaW9fc2VuZF9yZXBseSBvciB2ZmlvX3NlbmRf ZXJyb3IsDQo+ICsgKiBib3RoIG9mIHdoaWNoIGZyZWUgdGhlaXIgbWVzc2FnZSBidWZmZXIgd2hl biB0aGUgcmVwbHkgaXMgc2VudC4NCj4gKyAqDQo+ICsgKiBJZiB0aGUgY2FsbGJhY2sgdXNlcyBh IG5ldyBidWZmZXIsIGl0IG5lZWRzIHRvIGZyZWUgdGhlIG9sZCBvbmUuDQo+ICsgKi8NCj4gK3N0 YXRpYyB2b2lkIHZmaW9fdXNlcl9yZXF1ZXN0KHZvaWQgKm9wYXF1ZSkNCj4gK3sNCj4gKyAgICBW RklPUHJveHkgKnByb3h5ID0gb3BhcXVlOw0KPiArICAgIFZGSU9Vc2VyTXNnUSBuZXcsIGZyZWU7 DQo+ICsgICAgVkZJT1VzZXJNc2cgKm1zZywgKm0xOw0KPiArDQo+ICsgICAgLyogcmVhcCBhbGwg aW5jb21pbmcgKi8NCj4gKyAgICBRVEFJTFFfSU5JVCgmbmV3KTsNCj4gKyAgICBXSVRIX1FFTVVf TE9DS19HVUFSRCgmcHJveHktPmxvY2spIHsNCj4gKyAgICAgICAgUVRBSUxRX0ZPUkVBQ0hfU0FG RShtc2csICZwcm94eS0+aW5jb21pbmcsIG5leHQsIG0xKSB7DQo+ICsgICAgICAgICAgICBRVEFJ TFFfUkVNT1ZFKCZwcm94eS0+cGVuZGluZywgbXNnLCBuZXh0KTsNCj4gKyAgICAgICAgICAgIFFU QUlMUV9JTlNFUlRfVEFJTCgmbmV3LCBtc2csIG5leHQpOw0KPiArICAgICAgICB9DQo+ICsgICAg fQ0KPiArDQo+ICsgICAgLyogcHJvY2VzcyBsaXN0ICovDQo+ICsgICAgUVRBSUxRX0lOSVQoJmZy ZWUpOw0KPiArICAgIFFUQUlMUV9GT1JFQUNIX1NBRkUobXNnLCAmbmV3LCBuZXh0LCBtMSkgew0K PiArICAgICAgICBRVEFJTFFfUkVNT1ZFKCZuZXcsIG1zZywgbmV4dCk7DQo+ICsgICAgICAgIHBy b3h5LT5yZXF1ZXN0KHByb3h5LT5yZXFfYXJnLCBtc2cpOw0KPiArICAgICAgICBRVEFJTFFfSU5T RVJUX0hFQUQoJmZyZWUsIG1zZywgbmV4dCk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgLyogZnJl ZSBsaXN0ICovDQo+ICsgICAgV0lUSF9RRU1VX0xPQ0tfR1VBUkQoJnByb3h5LT5sb2NrKSB7DQo+ ICsgICAgICAgIFFUQUlMUV9GT1JFQUNIX1NBRkUobXNnLCAmZnJlZSwgbmV4dCwgbTEpIHsNCj4g KyAgICAgICAgICAgIHZmaW9fdXNlcl9yZWN5Y2xlKHByb3h5LCBtc2cpOw0KPiArICAgICAgICB9 DQo+ICsgICAgfQ0KPiArfQ0KPiArDQo+ICBzdGF0aWMgUUxJU1RfSEVBRCgsIFZGSU9Qcm94eSkg dmZpb191c2VyX3NvY2tldHMgPQ0KPiAgICAgIFFMSVNUX0hFQURfSU5JVElBTElaRVIodmZpb191 c2VyX3NvY2tldHMpOw0KPiANCj4gQEAgLTk3LDYgKzQwOSw3IEBAIFZGSU9Qcm94eSAqdmZpb191 c2VyX2Nvbm5lY3RfZGV2KFNvY2tldEFkZHJlc3MNCj4gKmFkZHIsIEVycm9yICoqZXJycCkNCj4g ICAgICB9DQo+IA0KPiAgICAgIHByb3h5LT5jdHggPSBpb3RocmVhZF9nZXRfYWlvX2NvbnRleHQo dmZpb191c2VyX2lvdGhyZWFkKTsNCj4gKyAgICBwcm94eS0+cmVxX2JoID0gcWVtdV9iaF9uZXco dmZpb191c2VyX3JlcXVlc3QsIHByb3h5KTsNCj4gDQo+ICAgICAgUVRBSUxRX0lOSVQoJnByb3h5 LT5vdXRnb2luZyk7DQo+ICAgICAgUVRBSUxRX0lOSVQoJnByb3h5LT5pbmNvbWluZyk7DQo+IEBA IC0xMDcsNiArNDIwLDE4IEBAIFZGSU9Qcm94eSAqdmZpb191c2VyX2Nvbm5lY3RfZGV2KFNvY2tl dEFkZHJlc3MNCj4gKmFkZHIsIEVycm9yICoqZXJycCkNCj4gICAgICByZXR1cm4gcHJveHk7DQo+ ICB9DQo+IA0KPiArdm9pZCB2ZmlvX3VzZXJfc2V0X2hhbmRsZXIoVkZJT0RldmljZSAqdmJhc2Vk ZXYsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqaGFuZGxlcikodm9pZCAq b3BhcXVlLCBWRklPVXNlck1zZyAqbXNnKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHZvaWQgKnJlcV9hcmcpDQo+ICt7DQo+ICsgICAgVkZJT1Byb3h5ICpwcm94eSA9IHZiYXNlZGV2 LT5wcm94eTsNCj4gKw0KPiArICAgIHByb3h5LT5yZXF1ZXN0ID0gaGFuZGxlcjsNCj4gKyAgICBw cm94eS0+cmVxX2FyZyA9IHJlcV9hcmc7DQo+ICsgICAgcWlvX2NoYW5uZWxfc2V0X2Fpb19mZF9o YW5kbGVyKHByb3h5LT5pb2MsIHByb3h5LT5jdHgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZmaW9fdXNlcl9yZWN2LCBOVUxMLCBwcm94eSk7DQo+ICt9DQo+ICsNCj4g IHZvaWQgdmZpb191c2VyX2Rpc2Nvbm5lY3QoVkZJT1Byb3h5ICpwcm94eSkNCj4gIHsNCj4gICAg ICBWRklPVXNlck1zZyAqcjEsICpyMjsNCj4gQEAgLTEyMiw2ICs0NDcsOCBAQCB2b2lkIHZmaW9f dXNlcl9kaXNjb25uZWN0KFZGSU9Qcm94eSAqcHJveHkpDQo+ICAgICAgfQ0KPiAgICAgIG9iamVj dF91bnJlZihPQkpFQ1QocHJveHktPmlvYykpOw0KPiAgICAgIHByb3h5LT5pb2MgPSBOVUxMOw0K PiArICAgIHFlbXVfYmhfZGVsZXRlKHByb3h5LT5yZXFfYmgpOw0KPiArICAgIHByb3h5LT5yZXFf YmggPSBOVUxMOw0KPiANCj4gICAgICBwcm94eS0+c3RhdGUgPSBWRklPX1BST1hZX0NMT1NJTkc7 DQo+ICAgICAgUVRBSUxRX0ZPUkVBQ0hfU0FGRShyMSwgJnByb3h5LT5vdXRnb2luZywgbmV4dCwg cjIpIHsNCj4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMNCj4gaW5kZXgg Y2ZhY2NiZi4uYmMwYmE4OCAxMDA2NDQNCj4gLS0tIGEvTUFJTlRBSU5FUlMNCj4gKysrIGIvTUFJ TlRBSU5FUlMNCj4gQEAgLTE5MDksNiArMTkwOSw3IEBAIFM6IFN1cHBvcnRlZA0KPiAgRjogZG9j cy9kZXZlbC92ZmlvLXVzZXIucnN0DQo+ICBGOiBody92ZmlvL3VzZXIuYw0KPiAgRjogaHcvdmZp by91c2VyLmgNCj4gK0Y6IGh3L3ZmaW8vdXNlci1wcm90b2NvbC5oDQo+IA0KPiAgdmhvc3QNCj4g IE06IE1pY2hhZWwgUy4gVHNpcmtpbiA8bXN0QHJlZGhhdC5jb20+DQo+IC0tDQo+IDEuOC4zLjEN Cj4gDQoNCg==