From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 200F7A055A; Tue, 25 Feb 2020 13:13:31 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id DB8BA1BC24; Tue, 25 Feb 2020 13:13:29 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 09B3F3B5 for ; Tue, 25 Feb 2020 13:13:27 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 01PCC56Y008127; Tue, 25 Feb 2020 04:13:27 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=nHRXyEbxmUH4MaEVmPnFRf9q6gNf9iNxR3GFAYT3OEQ=; b=azSUMDXv2A948QpUXYQ5XBGNkVnLRGScDtoWDrZB1Aoz1+6lesPVVveKCyw1/aim6jWR 6nUU2QsNAFEZkIkkyH08Us/3qHfIVdq7hLigcOFbJiNv3iRVkYQUVqf6xCzCUFCMbHEZ j8xyR9iZZlKlezJkan+mIVY94BhEKooac4nATiK3Y98PD/2sRjIkXmgdGMo76JqHeaH+ ZfbVnO/y1CeWbXdVF3qtxcBL+Ccy9fj9gWxwJMQFUDcsczpekpukuvEAgQ2XtaztGXSj zPe1mLbPmLQqfsthNTFzSRwsKHGJuwVuxl0UXM5tj9t6a2lQUSzSWXUTf+y1eesl7w60 tQ== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0b-0016f401.pphosted.com with ESMTP id 2yb4ptbcec-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 25 Feb 2020 04:13:27 -0800 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 25 Feb 2020 04:13:22 -0800 Received: from SC-EXCH01.marvell.com (10.93.176.81) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 25 Feb 2020 04:13:22 -0800 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.101) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Tue, 25 Feb 2020 04:13:21 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B3ZljqH9DJE+EaPf2Cx23iXtMdsYRMUqJ8/EZ1CL3Nn3b6fPXIUkkb6ju0RhFqzQR1IZBT+DGjNJCY0e123v9xXLsd3oqytPOz/3E/HG/WCh4TTs+qxnGU+TwUbkMIVXNHE0/I1TNmhRQdfDzXv8wqWAeuseQxUq51QV9BrJgv7HE78KNT0SvBX+qL0ou3H7Qdead5skKux0Z8M+aNf9HZUIkxeyyq4GdQZRA9BstAj1hWMwoyLtsboATje3TlJfLU01AkZIqNBImP/pQpyiYTStYxCKbSZVFBd96qJ6gRZ7mCqfXfQYAHg9x1DdmEvcRApw0Z3AmyAt4XBybf0UqQ== 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-SenderADCheck; bh=nHRXyEbxmUH4MaEVmPnFRf9q6gNf9iNxR3GFAYT3OEQ=; b=aXal9nWNY5ONuWR+FmwSsm8M5QXKZqEmFLtY5u+BV6opJhXd2PyK3NvVo/t31CuZ3ei81Aj/dD7qzYy5BtVxGLr0NQ8ejWg0ZTiNxlp89EfF1Di9+zUPrwk4BvnPooe4BdOz4sVjcd3FIQPyKVhPLN2Tr4ZM3AQC2t+M7OOZb2refszqSfsNrlZqh/8XxIDSMFDySfXVYnHGJ76cBPwRRc/VkPM53XONiMgW60ZqDmB5VbMWNMV39IMtbsLljlR5QRb8sE9CqrL4G4PBBR5MTzla0jhdtXIuqyZCE3IPLMaJJadyHoMSdF7X+RscGpwIabyIVgh7To3RQtcqlEq3VA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nHRXyEbxmUH4MaEVmPnFRf9q6gNf9iNxR3GFAYT3OEQ=; b=Xx1eKYpXKakTK1i+t9TaU7dDKUKaQFuCl51usxjR5kPfZN4nsxMrJTaz7mk8WzwkdcGeXa7rP8xADdj9VDJXwG7LqioRVuPVK6RXQ4Qhz5qDzt9cZSwmZnmjM5ceDcMD9n5Nv+A/HQKCcs7LTX5YVYEU2rwk/2oxxAtjidIH16I= Received: from MN2PR18MB2877.namprd18.prod.outlook.com (2603:10b6:208:3b::26) by MN2PR18MB2878.namprd18.prod.outlook.com (2603:10b6:208:a0::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2750.17; Tue, 25 Feb 2020 12:13:20 +0000 Received: from MN2PR18MB2877.namprd18.prod.outlook.com ([fe80::648f:e7fa:f95e:191b]) by MN2PR18MB2877.namprd18.prod.outlook.com ([fe80::648f:e7fa:f95e:191b%2]) with mapi id 15.20.2750.021; Tue, 25 Feb 2020 12:13:20 +0000 From: Anoob Joseph To: Akhil Goyal , Konstantin Ananyev CC: Jerin Jacob Kollanukkaran , "Narayana Prasad Raju Athreya" , Ankur Dwivedi , Archana Muniganti , Tejasree Kondoj , Vamsi Krishna Attunuru , "dev@dpdk.org" , Thomas Monjalon , "Radu Nicolau" , Lukas Bartosik Thread-Topic: [EXT] RE: [PATCH v4 12/15] examples/ipsec-secgw: add app mode worker Thread-Index: AQHV58QqHR3Wk9MZ0kGI/mrxSoMWmKgqaYWAgAFql4CAAAR/IA== Date: Tue, 25 Feb 2020 12:13:20 +0000 Message-ID: References: <1580824721-21527-1-git-send-email-lbartosik@marvell.com> <1582185727-6749-1-git-send-email-lbartosik@marvell.com> <1582185727-6749-13-git-send-email-lbartosik@marvell.com> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [111.125.206.218] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a3a45f00-02ec-4d9e-60db-08d7b9ec1a7d x-ms-traffictypediagnostic: MN2PR18MB2878: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7219; x-forefront-prvs: 0324C2C0E2 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(396003)(39850400004)(366004)(376002)(136003)(199004)(189003)(26005)(86362001)(55236004)(55016002)(186003)(66476007)(6506007)(76116006)(66556008)(52536014)(9686003)(7696005)(64756008)(66446008)(53546011)(66946007)(316002)(81156014)(8936002)(478600001)(2906002)(110136005)(30864003)(33656002)(107886003)(4326008)(54906003)(71200400001)(81166006)(8676002)(5660300002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB2878; H:MN2PR18MB2877.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: LLg1VvxDjC49LGEk6h/aT1C/I4FDdfCHdcFaE5iqzkhMD3HzDHs1G0Iq3qVlLiDz1852vNi6+kEG8niE2LBLRGEM6Wsu+98/709cMAJJSsz2V5RbEa5Fmk/sKBwsjEdzxBH6Q6nFevKq5ah39InDeSM8JVDqiGTfOFp5YRNj/FFexNvzysBAo1Sfg6xDn/5WXt+75RzmOhU9FeFjNvlcNPiisDnX5zLGoKgZ3erIEtIXq5crNolEodMrOwG6IEc8sfzq3KZQ/7dZJEmqJYuxTjO4mrrOT0oUnwjv7qSDInrtkhMDWMuR6IsPpaTCUYpHb1qVvPQgtWOnZXqdJqi97cmAua3eXSZ/eggkrIwZk8cYJ/GSyrzd1/hTozAblXwDQt5Ry34qNkDJOEpTXGE+Wd9vLlkedle7lG/wJqR0rcstcaYclpXXt83OqfpcRsxO x-ms-exchange-antispam-messagedata: UykOk+xnTVrF7YOIKsKzMblsB63t2IdS3ZN9+0WFvtpnXKfzggyyKTtahbtZD3zjoHkdCqUikDcCWLN+hyU187tti9L18Ef6debFsTJbvj1vKCIYxk8+hs0TUr4mx4yzTOCwr4H+aNW/NvSpTFjMYA== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: a3a45f00-02ec-4d9e-60db-08d7b9ec1a7d X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Feb 2020 12:13:20.2440 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: bVLawfqrB+VIZcKf4mjCxJrSNY5AP9WGbrD7PNDUnNAuXfonjE8rDvkud7vXEpg/1J1pdwOh0y0O6S4dtynOHA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR18MB2878 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.572 definitions=2020-02-25_03:2020-02-21, 2020-02-25 signatures=0 Subject: Re: [dpdk-dev] [EXT] RE: [PATCH v4 12/15] examples/ipsec-secgw: add app mode worker X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgQWtoaWwsIEtvbnN0YW50aW4sDQoNCk9uZSBxdWVzdGlvbiBiZWxvdy4NCg0KVGhhbmtzLA0K QW5vb2INCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMdWthcyBCYXJ0 b3NpayA8bGJhcnRvc2lrQG1hcnZlbGwuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBGZWJydWFyeSAy NSwgMjAyMCA1OjIxIFBNDQo+IFRvOiBBa2hpbCBHb3lhbCA8YWtoaWwuZ295YWxAbnhwLmNvbT47 IEFub29iIEpvc2VwaCA8YW5vb2JqQG1hcnZlbGwuY29tPg0KPiBDYzogSmVyaW4gSmFjb2IgS29s bGFudWtrYXJhbiA8amVyaW5qQG1hcnZlbGwuY29tPjsgTmFyYXlhbmEgUHJhc2FkIFJhanUNCj4g QXRocmV5YSA8cGF0aHJleWFAbWFydmVsbC5jb20+OyBBbmt1ciBEd2l2ZWRpIDxhZHdpdmVkaUBt YXJ2ZWxsLmNvbT47DQo+IEFyY2hhbmEgTXVuaWdhbnRpIDxtYXJjaGFuYUBtYXJ2ZWxsLmNvbT47 IFRlamFzcmVlIEtvbmRvag0KPiA8a3RlamFzcmVlQG1hcnZlbGwuY29tPjsgVmFtc2kgS3Jpc2hu YSBBdHR1bnVydSA8dmF0dHVudXJ1QG1hcnZlbGwuY29tPjsNCj4gS29uc3RhbnRpbiBBbmFueWV2 IDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnOyBUaG9tYXMNCj4g TW9uamFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ+OyBSYWR1IE5pY29sYXUgPHJhZHUubmljb2xh dUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbRVhUXSBSRTogW1BBVENIIHY0IDEyLzE1XSBl eGFtcGxlcy9pcHNlYy1zZWNndzogYWRkIGFwcCBtb2RlDQo+IHdvcmtlcg0KPiANCj4gSGkgQWto aWwsDQo+IA0KPiBQbGVhc2Ugc2VlIG15IGFuc3dlcnMgYmVsb3cuDQo+IA0KPiBUaGFua3MsDQo+ IEx1a2Fzeg0KPiANCj4gT24gMjQuMDIuMjAyMCAxNToxMywgQWtoaWwgR295YWwgd3JvdGU6DQo+ ID4gRXh0ZXJuYWwgRW1haWwNCj4gPg0KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiBIaSBMdWthc3ov QW5vb2IsDQo+ID4NCj4gPj4NCj4gPj4gQWRkIGFwcGxpY2F0aW9uIGluYm91bmQvb3V0Ym91bmQg d29ya2VyIHRocmVhZCBhbmQgSVBzZWMgYXBwbGljYXRpb24NCj4gPj4gcHJvY2Vzc2luZyBjb2Rl IGZvciBldmVudCBtb2RlLg0KPiA+Pg0KPiA+PiBFeGFtcGxlIGlwc2VjLXNlY2d3IGNvbW1hbmQg aW4gYXBwIG1vZGU6DQo+ID4+IGlwc2VjLXNlY2d3IC13IDAwMDI6MDI6MDAuMCxpcHNlY19pbl9t YXhfc3BpPTEyOCAtdw0KPiA+PiAwMDAyOjAzOjAwLjAsaXBzZWNfaW5fbWF4X3NwaT0xMjggLXcg MDAwMjowZTowMC4wIC13IDAwMDI6MTA6MDAuMQ0KPiA+PiAtLWxvZy1sZXZlbD04IC1jIDB4MSAt LSAtUCAtcCAweDMgLXUgMHgxIC0tY29uZmlnICIoMSwwLDApLCgwLDAsMCkiDQo+ID4+IC1mIGFl cy1nY20uY2ZnIC0tdHJhbnNmZXItbW9kZSBldmVudCAtLWV2ZW50LXNjaGVkdWxlLXR5cGUgcGFy YWxsZWwNCj4gPj4NCj4gPj4gU2lnbmVkLW9mZi1ieTogQW5vb2IgSm9zZXBoIDxhbm9vYmpAbWFy dmVsbC5jb20+DQo+ID4+IFNpZ25lZC1vZmYtYnk6IEFua3VyIER3aXZlZGkgPGFkd2l2ZWRpQG1h cnZlbGwuY29tPg0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBMdWthc3ogQmFydG9zaWsgPGxiYXJ0b3Np a0BtYXJ2ZWxsLmNvbT4NCj4gPj4gLS0tDQo+ID4NCj4gPiAuLi4NCj4gPg0KPiA+PiArc3RhdGlj IGlubGluZSBlbnVtIHBrdF90eXBlDQo+ID4+ICtwcm9jZXNzX2lwc2VjX2dldF9wa3RfdHlwZShz dHJ1Y3QgcnRlX21idWYgKnBrdCwgdWludDhfdCAqKm5scCkgew0KPiA+PiArCXN0cnVjdCBydGVf ZXRoZXJfaGRyICpldGg7DQo+ID4+ICsNCj4gPj4gKwlldGggPSBydGVfcGt0bWJ1Zl9tdG9kKHBr dCwgc3RydWN0IHJ0ZV9ldGhlcl9oZHIgKik7DQo+ID4+ICsJaWYgKGV0aC0+ZXRoZXJfdHlwZSA9 PSBydGVfY3B1X3RvX2JlXzE2KFJURV9FVEhFUl9UWVBFX0lQVjQpKSB7DQo+ID4+ICsJCSpubHAg PSBSVEVfUFRSX0FERChldGgsIFJURV9FVEhFUl9IRFJfTEVOICsNCj4gPj4gKwkJCQlvZmZzZXRv ZihzdHJ1Y3QgaXAsIGlwX3ApKTsNCj4gPj4gKwkJaWYgKCoqbmxwID09IElQUFJPVE9fRVNQKQ0K PiA+PiArCQkJcmV0dXJuIFBLVF9UWVBFX0lQU0VDX0lQVjQ7DQo+ID4+ICsJCWVsc2UNCj4gPj4g KwkJCXJldHVybiBQS1RfVFlQRV9QTEFJTl9JUFY0Ow0KPiA+PiArCX0gZWxzZSBpZiAoZXRoLT5l dGhlcl90eXBlID09DQo+ID4+ICtydGVfY3B1X3RvX2JlXzE2KFJURV9FVEhFUl9UWVBFX0lQVjYp KQ0KPiA+PiB7DQo+ID4+ICsJCSpubHAgPSBSVEVfUFRSX0FERChldGgsIFJURV9FVEhFUl9IRFJf TEVOICsNCj4gPj4gKwkJCQlvZmZzZXRvZihzdHJ1Y3QgaXA2X2hkciwgaXA2X254dCkpOw0KPiA+ PiArCQlpZiAoKipubHAgPT0gSVBQUk9UT19FU1ApDQo+ID4+ICsJCQlyZXR1cm4gUEtUX1RZUEVf SVBTRUNfSVBWNjsNCj4gPj4gKwkJZWxzZQ0KPiA+PiArCQkJcmV0dXJuIFBLVF9UWVBFX1BMQUlO X0lQVjY7DQo+ID4+ICsJfQ0KPiA+PiArDQo+ID4+ICsJLyogVW5rbm93bi9VbnN1cHBvcnRlZCB0 eXBlICovDQo+ID4+ICsJcmV0dXJuIFBLVF9UWVBFX0lOVkFMSUQ7DQo+ID4+ICt9DQo+ID4+ICsN Cj4gPj4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiA+PiArdXBkYXRlX21hY19hZGRycyhzdHJ1Y3Qg cnRlX21idWYgKnBrdCwgdWludDE2X3QgcG9ydGlkKSB7DQo+ID4+ICsJc3RydWN0IHJ0ZV9ldGhl cl9oZHIgKmV0aGhkcjsNCj4gPj4gKw0KPiA+PiArCWV0aGhkciA9IHJ0ZV9wa3RtYnVmX210b2Qo cGt0LCBzdHJ1Y3QgcnRlX2V0aGVyX2hkciAqKTsNCj4gPj4gKwltZW1jcHkoJmV0aGhkci0+c19h ZGRyLCAmZXRoYWRkcl90YmxbcG9ydGlkXS5zcmMsDQo+ID4+IFJURV9FVEhFUl9BRERSX0xFTik7 DQo+ID4+ICsJbWVtY3B5KCZldGhoZHItPmRfYWRkciwgJmV0aGFkZHJfdGJsW3BvcnRpZF0uZHN0 LA0KPiA+PiBSVEVfRVRIRVJfQUREUl9MRU4pOw0KPiA+PiArfQ0KPiA+Pg0KPiA+PiAgc3RhdGlj IGlubGluZSB2b2lkDQo+ID4+ICBpcHNlY19ldmVudF9wcmVfZm9yd2FyZChzdHJ1Y3QgcnRlX21i dWYgKm0sIHVuc2lnbmVkIGludCBwb3J0X2lkKSBAQA0KPiA+PiAtNjEsNiArMTAxLDI5MCBAQCBw cmVwYXJlX291dF9zZXNzaW9uc190Ymwoc3RydWN0IHNhX2N0eCAqc2Ffb3V0LA0KPiA+PiAgCX0N Cj4gPj4gIH0NCj4gPj4NCj4gPj4gK3N0YXRpYyBpbmxpbmUgaW50DQo+ID4+ICtjaGVja19zcChz dHJ1Y3Qgc3BfY3R4ICpzcCwgY29uc3QgdWludDhfdCAqbmxwLCB1aW50MzJfdCAqc2FfaWR4KSB7 DQo+ID4+ICsJdWludDMyX3QgcmVzOw0KPiA+PiArDQo+ID4+ICsJaWYgKHVubGlrZWx5KHNwID09 IE5VTEwpKQ0KPiA+PiArCQlyZXR1cm4gMDsNCj4gPj4gKw0KPiA+PiArCXJ0ZV9hY2xfY2xhc3Np ZnkoKHN0cnVjdCBydGVfYWNsX2N0eCAqKXNwLCAmbmxwLCAmcmVzLCAxLA0KPiA+PiArCQkJREVG QVVMVF9NQVhfQ0FURUdPUklFUyk7DQo+ID4+ICsNCj4gPj4gKwlpZiAodW5saWtlbHkocmVzID09 IDApKSB7DQo+ID4+ICsJCS8qIE5vIG1hdGNoICovDQo+ID4+ICsJCXJldHVybiAwOw0KPiA+PiAr CX0NCj4gPj4gKw0KPiA+PiArCWlmIChyZXMgPT0gRElTQ0FSRCkNCj4gPj4gKwkJcmV0dXJuIDA7 DQo+ID4+ICsJZWxzZSBpZiAocmVzID09IEJZUEFTUykgew0KPiA+PiArCQkqc2FfaWR4ID0gLTE7 DQo+ID4+ICsJCXJldHVybiAxOw0KPiA+PiArCX0NCj4gPj4gKw0KPiA+PiArCSpzYV9pZHggPSBy ZXMgLSAxOw0KPiA+PiArCXJldHVybiAxOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICtzdGF0aWMg aW5saW5lIHVpbnQxNl90DQo+ID4+ICtyb3V0ZTRfcGt0KHN0cnVjdCBydGVfbWJ1ZiAqcGt0LCBz dHJ1Y3QgcnRfY3R4ICpydF9jdHgpIHsNCj4gPj4gKwl1aW50MzJfdCBkc3RfaXA7DQo+ID4+ICsJ dWludDE2X3Qgb2Zmc2V0Ow0KPiA+PiArCXVpbnQzMl90IGhvcDsNCj4gPj4gKwlpbnQgcmV0Ow0K PiA+PiArDQo+ID4+ICsJb2Zmc2V0ID0gUlRFX0VUSEVSX0hEUl9MRU4gKyBvZmZzZXRvZihzdHJ1 Y3QgaXAsIGlwX2RzdCk7DQo+ID4+ICsJZHN0X2lwID0gKnJ0ZV9wa3RtYnVmX210b2Rfb2Zmc2V0 KHBrdCwgdWludDMyX3QgKiwgb2Zmc2V0KTsNCj4gPj4gKwlkc3RfaXAgPSBydGVfYmVfdG9fY3B1 XzMyKGRzdF9pcCk7DQo+ID4+ICsNCj4gPj4gKwlyZXQgPSBydGVfbHBtX2xvb2t1cCgoc3RydWN0 IHJ0ZV9scG0gKilydF9jdHgsIGRzdF9pcCwgJmhvcCk7DQo+ID4+ICsNCj4gPj4gKwlpZiAocmV0 ID09IDApIHsNCj4gPj4gKwkJLyogV2UgaGF2ZSBhIGhpdCAqLw0KPiA+PiArCQlyZXR1cm4gaG9w Ow0KPiA+PiArCX0NCj4gPj4gKw0KPiA+PiArCS8qIGVsc2UgKi8NCj4gPj4gKwlyZXR1cm4gUlRF X01BWF9FVEhQT1JUUzsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyogVE9ETzogVG8gYmUgdGVz dGVkICovDQo+ID4+ICtzdGF0aWMgaW5saW5lIHVpbnQxNl90DQo+ID4+ICtyb3V0ZTZfcGt0KHN0 cnVjdCBydGVfbWJ1ZiAqcGt0LCBzdHJ1Y3QgcnRfY3R4ICpydF9jdHgpIHsNCj4gPj4gKwl1aW50 OF90IGRzdF9pcFsxNl07DQo+ID4+ICsJdWludDhfdCAqaXA2X2RzdDsNCj4gPj4gKwl1aW50MTZf dCBvZmZzZXQ7DQo+ID4+ICsJdWludDMyX3QgaG9wOw0KPiA+PiArCWludCByZXQ7DQo+ID4+ICsN Cj4gPj4gKwlvZmZzZXQgPSBSVEVfRVRIRVJfSERSX0xFTiArIG9mZnNldG9mKHN0cnVjdCBpcDZf aGRyLCBpcDZfZHN0KTsNCj4gPj4gKwlpcDZfZHN0ID0gcnRlX3BrdG1idWZfbXRvZF9vZmZzZXQo cGt0LCB1aW50OF90ICosIG9mZnNldCk7DQo+ID4+ICsJbWVtY3B5KCZkc3RfaXBbMF0sIGlwNl9k c3QsIDE2KTsNCj4gPj4gKw0KPiA+PiArCXJldCA9IHJ0ZV9scG02X2xvb2t1cCgoc3RydWN0IHJ0 ZV9scG02ICopcnRfY3R4LCBkc3RfaXAsICZob3ApOw0KPiA+PiArDQo+ID4+ICsJaWYgKHJldCA9 PSAwKSB7DQo+ID4+ICsJCS8qIFdlIGhhdmUgYSBoaXQgKi8NCj4gPj4gKwkJcmV0dXJuIGhvcDsN Cj4gPj4gKwl9DQo+ID4+ICsNCj4gPj4gKwkvKiBlbHNlICovDQo+ID4+ICsJcmV0dXJuIFJURV9N QVhfRVRIUE9SVFM7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gK3N0YXRpYyBpbmxpbmUgdWludDE2 X3QNCj4gPj4gK2dldF9yb3V0ZShzdHJ1Y3QgcnRlX21idWYgKnBrdCwgc3RydWN0IHJvdXRlX3Rh YmxlICpydCwgZW51bQ0KPiA+PiArcGt0X3R5cGUgdHlwZSkgew0KPiA+PiArCWlmICh0eXBlID09 IFBLVF9UWVBFX1BMQUlOX0lQVjQgfHwgdHlwZSA9PSBQS1RfVFlQRV9JUFNFQ19JUFY0KQ0KPiA+ PiArCQlyZXR1cm4gcm91dGU0X3BrdChwa3QsIHJ0LT5ydDRfY3R4KTsNCj4gPj4gKwllbHNlIGlm ICh0eXBlID09IFBLVF9UWVBFX1BMQUlOX0lQVjYgfHwgdHlwZSA9PSBQS1RfVFlQRV9JUFNFQ19J UFY2KQ0KPiA+PiArCQlyZXR1cm4gcm91dGU2X3BrdChwa3QsIHJ0LT5ydDZfY3R4KTsNCj4gPj4g Kw0KPiA+PiArCXJldHVybiBSVEVfTUFYX0VUSFBPUlRTOw0KPiA+PiArfQ0KPiA+DQo+ID4gSXMg aXQgbm90IHBvc3NpYmxlIHRvIHVzZSB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zIGZvciBmaW5kaW5n IHJvdXRlcywgY2hlY2tpbmcNCj4gcGFja2V0IHR5cGVzIGFuZCBjaGVja2luZyBzZWN1cml0eSBw b2xpY2llcy4NCj4gPiBJdCB3aWxsIGJlIHZlcnkgZGlmZmljdWx0IHRvIG1hbmFnZSB0d28gc2Vw YXJhdGUgZnVuY3Rpb25zIGZvciBzYW1lDQo+ID4gd29yay4gSSBjYW4gc2VlIHRoYXQgdGhlIHBr dC0+ZGF0YV9vZmZzIEFyZSBub3QgcmVxdWlyZWQgdG8gYmUgdXBkYXRlZA0KPiA+IGluIHRoZSBp bmxpbmUgY2FzZSwgYnV0IGNhbiB3ZSBzcGxpdCB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zIGluIHR3 byBzbyB0aGF0IHRoZXkgY2FuDQo+IGJlIENhbGxlZCBpbiB0aGUgYXBwcm9wcmlhdGUgY2FzZXMu DQo+ID4NCj4gPiBBcyB5b3UgaGF2ZSBzYWlkIGluIHRoZSBjb3ZlciBub3RlIGFzIHdlbGwgdG8g YWRkIGxvb2thc2lkZSBwcm90b2NvbA0KPiA+IHN1cHBvcnQuIEkgYWxzbyB0cmllZCBhZGRpbmcg aXQsIGFuZCBpdCB3aWxsIGdldCB2ZXJ5IERpZmZpY3VsdCB0byBtYW5hZ2Ugc2VwYXJhdGUNCj4g ZnVuY3Rpb25zIGZvciBzZXBhcmF0ZSBjb2RlIHBhdGhzLg0KPiA+DQo+IA0KPiBbTHVrYXN6XSBU aGlzIHdhcyBhbHNvIEtvbnN0YW50aW4ncyBjb21tZW50IGR1cmluZyByZXZpZXcgb2Ygb25lIG9m IHByZXZpb3VzDQo+IHJldmlzaW9ucy4NCj4gVGhlIHByZXBhcmVfb25lX3BhY2tldCgpIGFuZCBw cmVwYXJlX3R4X3BrdCgpIGRvIG11Y2ggbW9yZSB0aGFuIHdlIG5lZWQNCj4gYW5kIGZvciBwZXJm b3JtYW5jZSByZWFzb25zIHdlIGNyYWZ0ZWQgbmV3IGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGUsDQo+ IHByb2Nlc3NfaXBzZWNfZ2V0X3BrdF90eXBlIGZ1bmN0aW9uIHJldHVybnMgbmxwIGFuZCB3aGV0 aGVyIHBhY2tldCB0eXBlIGlzDQo+IHBsYWluIG9yIElQc2VjLiBUaGF0J3MgYWxsLiBQcmVwYXJl X29uZV9wYWNrZXQoKSBwcm9jZXNzIHBhY2tldHMgaW4gY2h1bmtzIGFuZA0KPiBkb2VzIG11Y2gg bW9yZSAtIGl0IGFkanVzdHMgbWJ1ZiBhbmQgcGFja2V0IGxlbmd0aCB0aGVuIGl0IGRlbXVsdGlw bGV4IHBhY2tldHMNCj4gaW50byBwbGFpbiBhbmQgSVBzZWMgZmxvd3MgYW5kIGZpbmFsbHkgZG9l cyBpbmxpbmUgY2hlY2tzLiBUaGlzIGlzIHNpbWlsYXIgZm9yDQo+IHVwZGF0ZV9tYWNfYWRkcnMo KSB2cyBwcmVwYXJlX3R4X3BrdCgpIGFuZCBjaGVja19zcCgpIHZzIGluYm91bmRfc3Bfc2EoKSB0 aGF0DQo+IHByZXBhcmVfdHhfcGt0KCkgYW5kIGluYm91bmRfc3Bfc2EoKSBkbyBtb3JlIHRoYXQg d2UgbmVlZCBpbiBldmVudCBtb2RlLg0KPiANCj4gSSB1bmRlcnN0YW5kIHlvdXIgY29uY2VybiBm cm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiBjb2RlIG1haW50ZW5hbmNlIGJ1dCBvbiB0aGUNCj4gb3Ro ZXIgaGFuZCB3ZSBhcmUgY29uY2VybmVkIHdpdGggcGVyZm9ybWFuY2UuDQo+IFRoZSBjdXJyZW50 IGNvZGUgaXMgbm90IG9wdGltaXplZCB0byBzdXBwb3J0IG11bHRpcGxlIG1vZGUgcHJvY2Vzc2lu Zw0KPiBpbnRyb2R1Y2VkIHdpdGggcnRlX3NlY3VyaXR5LiBXZSBjYW4gd29yayBvbiBhIGNvbW1v biByb3V0aW5lcyBvbmNlIHdlIGhhdmUNCj4gb3RoZXIgbW9kZXMgYWxzbyBhZGRlZCwgc28gdGhh dCB3ZSBjYW4gY29tZSB1cCB3aXRoIGEgYmV0dGVyIHNvbHV0aW9uIHRoYW4NCj4gd2hhdCB3ZSBo YXZlIHRvZGF5Lg0KPiANCj4gPj4gKw0KPiA+PiArc3RhdGljIGlubGluZSBpbnQNCj4gPj4gK3By b2Nlc3NfaXBzZWNfZXZfaW5ib3VuZChzdHJ1Y3QgaXBzZWNfY3R4ICpjdHgsIHN0cnVjdCByb3V0 ZV90YWJsZSAqcnQsDQo+ID4+ICsJCXN0cnVjdCBydGVfZXZlbnQgKmV2KQ0KPiA+PiArew0KPiA+ PiArCXN0cnVjdCBpcHNlY19zYSAqc2EgPSBOVUxMOw0KPiA+PiArCXN0cnVjdCBydGVfbWJ1ZiAq cGt0Ow0KPiA+PiArCXVpbnQxNl90IHBvcnRfaWQgPSAwOw0KPiA+PiArCWVudW0gcGt0X3R5cGUg dHlwZTsNCj4gPj4gKwl1aW50MzJfdCBzYV9pZHg7DQo+ID4+ICsJdWludDhfdCAqbmxwOw0KPiA+ PiArDQo+ID4+ICsJLyogR2V0IHBrdCBmcm9tIGV2ZW50ICovDQo+ID4+ICsJcGt0ID0gZXYtPm1i dWY7DQo+ID4+ICsNCj4gPj4gKwkvKiBDaGVjayB0aGUgcGFja2V0IHR5cGUgKi8NCj4gPj4gKwl0 eXBlID0gcHJvY2Vzc19pcHNlY19nZXRfcGt0X3R5cGUocGt0LCAmbmxwKTsNCj4gPj4gKw0KPiA+ PiArCXN3aXRjaCAodHlwZSkgew0KPiA+PiArCWNhc2UgUEtUX1RZUEVfUExBSU5fSVBWNDoNCj4g Pj4gKwkJaWYgKHBrdC0+b2xfZmxhZ3MgJiBQS1RfUlhfU0VDX09GRkxPQUQpIHsNCj4gPj4gKwkJ CWlmICh1bmxpa2VseShwa3QtPm9sX2ZsYWdzICYNCj4gPj4gKwkJCQkgICAgIFBLVF9SWF9TRUNf T0ZGTE9BRF9GQUlMRUQpKSB7DQo+ID4+ICsJCQkJUlRFX0xPRyhFUlIsIElQU0VDLA0KPiA+PiAr CQkJCQkiSW5ib3VuZCBzZWN1cml0eSBvZmZsb2FkIGZhaWxlZFxuIik7DQo+ID4+ICsJCQkJZ290 byBkcm9wX3BrdF9hbmRfZXhpdDsNCj4gPj4gKwkJCX0NCj4gPj4gKwkJCXNhID0gcGt0LT51c2Vy ZGF0YTsNCj4gPj4gKwkJfQ0KPiA+PiArDQo+ID4+ICsJCS8qIENoZWNrIGlmIHdlIGhhdmUgYSBt YXRjaCAqLw0KPiA+PiArCQlpZiAoY2hlY2tfc3AoY3R4LT5zcDRfY3R4LCBubHAsICZzYV9pZHgp ID09IDApIHsNCj4gPj4gKwkJCS8qIE5vIHZhbGlkIG1hdGNoICovDQo+ID4+ICsJCQlnb3RvIGRy b3BfcGt0X2FuZF9leGl0Ow0KPiA+PiArCQl9DQo+ID4+ICsJCWJyZWFrOw0KPiA+PiArDQo+ID4+ ICsJY2FzZSBQS1RfVFlQRV9QTEFJTl9JUFY2Og0KPiA+PiArCQlpZiAocGt0LT5vbF9mbGFncyAm IFBLVF9SWF9TRUNfT0ZGTE9BRCkgew0KPiA+PiArCQkJaWYgKHVubGlrZWx5KHBrdC0+b2xfZmxh Z3MgJg0KPiA+PiArCQkJCSAgICAgUEtUX1JYX1NFQ19PRkZMT0FEX0ZBSUxFRCkpIHsNCj4gPj4g KwkJCQlSVEVfTE9HKEVSUiwgSVBTRUMsDQo+ID4+ICsJCQkJCSJJbmJvdW5kIHNlY3VyaXR5IG9m ZmxvYWQgZmFpbGVkXG4iKTsNCj4gPj4gKwkJCQlnb3RvIGRyb3BfcGt0X2FuZF9leGl0Ow0KPiA+ PiArCQkJfQ0KPiA+PiArCQkJc2EgPSBwa3QtPnVzZXJkYXRhOw0KPiA+PiArCQl9DQo+ID4+ICsN Cj4gPj4gKwkJLyogQ2hlY2sgaWYgd2UgaGF2ZSBhIG1hdGNoICovDQo+ID4+ICsJCWlmIChjaGVj a19zcChjdHgtPnNwNl9jdHgsIG5scCwgJnNhX2lkeCkgPT0gMCkgew0KPiA+PiArCQkJLyogTm8g dmFsaWQgbWF0Y2ggKi8NCj4gPj4gKwkJCWdvdG8gZHJvcF9wa3RfYW5kX2V4aXQ7DQo+ID4+ICsJ CX0NCj4gPj4gKwkJYnJlYWs7DQo+ID4+ICsNCj4gPj4gKwlkZWZhdWx0Og0KPiA+PiArCQlSVEVf TE9HKEVSUiwgSVBTRUMsICJVbnN1cHBvcnRlZCBwYWNrZXQgdHlwZSA9ICVkXG4iLCB0eXBlKTsN Cj4gPj4gKwkJZ290byBkcm9wX3BrdF9hbmRfZXhpdDsNCj4gPj4gKwl9DQo+ID4+ICsNCj4gPj4g KwkvKiBDaGVjayBpZiB0aGUgcGFja2V0IGhhcyB0byBiZSBieXBhc3NlZCAqLw0KPiA+PiArCWlm IChzYV9pZHggPT0gQllQQVNTKQ0KPiA+PiArCQlnb3RvIHJvdXRlX2FuZF9zZW5kX3BrdDsNCj4g Pj4gKw0KPiA+PiArCS8qIFZhbGlkYXRlIHNhX2lkeCAqLw0KPiA+PiArCWlmIChzYV9pZHggPj0g Y3R4LT5zYV9jdHgtPm5iX3NhKQ0KPiA+PiArCQlnb3RvIGRyb3BfcGt0X2FuZF9leGl0Ow0KPiA+ PiArDQo+ID4+ICsJLyogRWxzZSB0aGUgcGFja2V0IGhhcyB0byBiZSBwcm90ZWN0ZWQgd2l0aCBT QSAqLw0KPiA+PiArDQo+ID4+ICsJLyogSWYgdGhlIHBhY2tldCB3YXMgSVBzZWMgcHJvY2Vzc2Vk LCB0aGVuIFNBIHBvaW50ZXIgc2hvdWxkIGJlIHNldCAqLw0KPiA+PiArCWlmIChzYSA9PSBOVUxM KQ0KPiA+PiArCQlnb3RvIGRyb3BfcGt0X2FuZF9leGl0Ow0KPiA+PiArDQo+ID4+ICsJLyogU1BJ IG9uIHRoZSBwYWNrZXQgc2hvdWxkIG1hdGNoIHdpdGggdGhlIG9uZSBpbiBTQSAqLw0KPiA+PiAr CWlmICh1bmxpa2VseShzYS0+c3BpICE9IGN0eC0+c2FfY3R4LT5zYVtzYV9pZHhdLnNwaSkpDQo+ ID4+ICsJCWdvdG8gZHJvcF9wa3RfYW5kX2V4aXQ7DQo+ID4+ICsNCj4gPj4gK3JvdXRlX2FuZF9z ZW5kX3BrdDoNCj4gPj4gKwlwb3J0X2lkID0gZ2V0X3JvdXRlKHBrdCwgcnQsIHR5cGUpOw0KPiA+ PiArCWlmICh1bmxpa2VseShwb3J0X2lkID09IFJURV9NQVhfRVRIUE9SVFMpKSB7DQo+ID4+ICsJ CS8qIG5vIG1hdGNoICovDQo+ID4+ICsJCWdvdG8gZHJvcF9wa3RfYW5kX2V4aXQ7DQo+ID4+ICsJ fQ0KPiA+PiArCS8qIGVsc2UsIHdlIGhhdmUgYSBtYXRjaGluZyByb3V0ZSAqLw0KPiA+PiArDQo+ ID4+ICsJLyogVXBkYXRlIG1hYyBhZGRyZXNzZXMgKi8NCj4gPj4gKwl1cGRhdGVfbWFjX2FkZHJz KHBrdCwgcG9ydF9pZCk7DQo+ID4+ICsNCj4gPj4gKwkvKiBVcGRhdGUgdGhlIGV2ZW50IHdpdGgg dGhlIGRlc3QgcG9ydCAqLw0KPiA+PiArCWlwc2VjX2V2ZW50X3ByZV9mb3J3YXJkKHBrdCwgcG9y dF9pZCk7DQo+ID4+ICsJcmV0dXJuIDE7DQo+ID4+ICsNCj4gPj4gK2Ryb3BfcGt0X2FuZF9leGl0 Og0KPiA+PiArCVJURV9MT0coRVJSLCBJUFNFQywgIkluYm91bmQgcGFja2V0IGRyb3BwZWRcbiIp Ow0KPiA+PiArCXJ0ZV9wa3RtYnVmX2ZyZWUocGt0KTsNCj4gPj4gKwlldi0+bWJ1ZiA9IE5VTEw7 DQo+ID4+ICsJcmV0dXJuIDA7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gK3N0YXRpYyBpbmxpbmUg aW50DQo+ID4+ICtwcm9jZXNzX2lwc2VjX2V2X291dGJvdW5kKHN0cnVjdCBpcHNlY19jdHggKmN0 eCwgc3RydWN0IHJvdXRlX3RhYmxlICpydCwNCj4gPj4gKwkJc3RydWN0IHJ0ZV9ldmVudCAqZXYp DQo+ID4+ICt7DQo+ID4+ICsJc3RydWN0IHJ0ZV9pcHNlY19zZXNzaW9uICpzZXNzOw0KPiA+PiAr CXN0cnVjdCBzYV9jdHggKnNhX2N0eDsNCj4gPj4gKwlzdHJ1Y3QgcnRlX21idWYgKnBrdDsNCj4g Pj4gKwl1aW50MTZfdCBwb3J0X2lkID0gMDsNCj4gPj4gKwlzdHJ1Y3QgaXBzZWNfc2EgKnNhOw0K PiA+PiArCWVudW0gcGt0X3R5cGUgdHlwZTsNCj4gPj4gKwl1aW50MzJfdCBzYV9pZHg7DQo+ID4+ ICsJdWludDhfdCAqbmxwOw0KPiA+PiArDQo+ID4+ICsJLyogR2V0IHBrdCBmcm9tIGV2ZW50ICov DQo+ID4+ICsJcGt0ID0gZXYtPm1idWY7DQo+ID4+ICsNCj4gPj4gKwkvKiBDaGVjayB0aGUgcGFj a2V0IHR5cGUgKi8NCj4gPj4gKwl0eXBlID0gcHJvY2Vzc19pcHNlY19nZXRfcGt0X3R5cGUocGt0 LCAmbmxwKTsNCj4gPj4gKw0KPiA+PiArCXN3aXRjaCAodHlwZSkgew0KPiA+PiArCWNhc2UgUEtU X1RZUEVfUExBSU5fSVBWNDoNCj4gPj4gKwkJLyogQ2hlY2sgaWYgd2UgaGF2ZSBhIG1hdGNoICov DQo+ID4+ICsJCWlmIChjaGVja19zcChjdHgtPnNwNF9jdHgsIG5scCwgJnNhX2lkeCkgPT0gMCkg ew0KPiA+PiArCQkJLyogTm8gdmFsaWQgbWF0Y2ggKi8NCj4gPj4gKwkJCWdvdG8gZHJvcF9wa3Rf YW5kX2V4aXQ7DQo+ID4+ICsJCX0NCj4gPj4gKwkJYnJlYWs7DQo+ID4+ICsJY2FzZSBQS1RfVFlQ RV9QTEFJTl9JUFY2Og0KPiA+PiArCQkvKiBDaGVjayBpZiB3ZSBoYXZlIGEgbWF0Y2ggKi8NCj4g Pj4gKwkJaWYgKGNoZWNrX3NwKGN0eC0+c3A2X2N0eCwgbmxwLCAmc2FfaWR4KSA9PSAwKSB7DQo+ ID4+ICsJCQkvKiBObyB2YWxpZCBtYXRjaCAqLw0KPiA+PiArCQkJZ290byBkcm9wX3BrdF9hbmRf ZXhpdDsNCj4gPj4gKwkJfQ0KPiA+PiArCQlicmVhazsNCj4gPj4gKwlkZWZhdWx0Og0KPiA+PiAr CQkvKg0KPiA+PiArCQkgKiBPbmx5IHBsYWluIElQdjQgJiBJUHY2IHBhY2tldHMgYXJlIGFsbG93 ZWQNCj4gPj4gKwkJICogb24gcHJvdGVjdGVkIHBvcnQuIERyb3AgdGhlIHJlc3QuDQo+ID4+ICsJ CSAqLw0KPiA+PiArCQlSVEVfTE9HKEVSUiwgSVBTRUMsICJVbnN1cHBvcnRlZCBwYWNrZXQgdHlw ZSA9ICVkXG4iLCB0eXBlKTsNCj4gPj4gKwkJZ290byBkcm9wX3BrdF9hbmRfZXhpdDsNCj4gPj4g Kwl9DQo+ID4+ICsNCj4gPj4gKwkvKiBDaGVjayBpZiB0aGUgcGFja2V0IGhhcyB0byBiZSBieXBh c3NlZCAqLw0KPiA+PiArCWlmIChzYV9pZHggPT0gQllQQVNTKSB7DQo+ID4+ICsJCXBvcnRfaWQg PSBnZXRfcm91dGUocGt0LCBydCwgdHlwZSk7DQo+ID4+ICsJCWlmICh1bmxpa2VseShwb3J0X2lk ID09IFJURV9NQVhfRVRIUE9SVFMpKSB7DQo+ID4+ICsJCQkvKiBubyBtYXRjaCAqLw0KPiA+PiAr CQkJZ290byBkcm9wX3BrdF9hbmRfZXhpdDsNCj4gPj4gKwkJfQ0KPiA+PiArCQkvKiBlbHNlLCB3 ZSBoYXZlIGEgbWF0Y2hpbmcgcm91dGUgKi8NCj4gPj4gKwkJZ290byBzZW5kX3BrdDsNCj4gPj4g Kwl9DQo+ID4+ICsNCj4gPj4gKwkvKiBWYWxpZGF0ZSBzYV9pZHggKi8NCj4gPj4gKwlpZiAoc2Ff aWR4ID49IGN0eC0+c2FfY3R4LT5uYl9zYSkNCj4gPj4gKwkJZ290byBkcm9wX3BrdF9hbmRfZXhp dDsNCj4gPj4gKw0KPiA+PiArCS8qIEVsc2UgdGhlIHBhY2tldCBoYXMgdG8gYmUgcHJvdGVjdGVk ICovDQo+ID4+ICsNCj4gPj4gKwkvKiBHZXQgU0EgY3R4Ki8NCj4gPj4gKwlzYV9jdHggPSBjdHgt PnNhX2N0eDsNCj4gPj4gKw0KPiA+PiArCS8qIEdldCBTQSAqLw0KPiA+PiArCXNhID0gJihzYV9j dHgtPnNhW3NhX2lkeF0pOw0KPiA+PiArDQo+ID4+ICsJLyogR2V0IElQc2VjIHNlc3Npb24gKi8N Cj4gPj4gKwlzZXNzID0gaXBzZWNfZ2V0X3ByaW1hcnlfc2Vzc2lvbihzYSk7DQo+ID4+ICsNCj4g Pj4gKwkvKiBBbGxvdyBvbmx5IGlubGluZSBwcm90b2NvbCBmb3Igbm93ICovDQo+ID4+ICsJaWYg KHNlc3MtPnR5cGUgIT0gUlRFX1NFQ1VSSVRZX0FDVElPTl9UWVBFX0lOTElORV9QUk9UT0NPTCkg ew0KPiA+PiArCQlSVEVfTE9HKEVSUiwgSVBTRUMsICJTQSB0eXBlIG5vdCBzdXBwb3J0ZWRcbiIp Ow0KPiA+PiArCQlnb3RvIGRyb3BfcGt0X2FuZF9leGl0Ow0KPiA+PiArCX0NCj4gPj4gKw0KPiA+ PiArCWlmIChzZXNzLT5zZWN1cml0eS5vbF9mbGFncyAmIFJURV9TRUNVUklUWV9UWF9PTE9BRF9O RUVEX01EQVRBKQ0KPiA+PiArCQlwa3QtPnVzZXJkYXRhID0gc2Vzcy0+c2VjdXJpdHkuc2VzOw0K PiA+PiArDQo+ID4+ICsJLyogTWFyayB0aGUgcGFja2V0IGZvciBUeCBzZWN1cml0eSBvZmZsb2Fk ICovDQo+ID4+ICsJcGt0LT5vbF9mbGFncyB8PSBQS1RfVFhfU0VDX09GRkxPQUQ7DQo+ID4+ICsN Cj4gPj4gKwkvKiBHZXQgdGhlIHBvcnQgdG8gd2hpY2ggdGhpcyBwa3QgbmVlZCB0byBiZSBzdWJt aXR0ZWQgKi8NCj4gPj4gKwlwb3J0X2lkID0gc2EtPnBvcnRpZDsNCj4gPj4gKw0KPiA+PiArc2Vu ZF9wa3Q6DQo+ID4+ICsJLyogVXBkYXRlIG1hYyBhZGRyZXNzZXMgKi8NCj4gPj4gKwl1cGRhdGVf bWFjX2FkZHJzKHBrdCwgcG9ydF9pZCk7DQo+ID4+ICsNCj4gPj4gKwkvKiBVcGRhdGUgdGhlIGV2 ZW50IHdpdGggdGhlIGRlc3QgcG9ydCAqLw0KPiA+PiArCWlwc2VjX2V2ZW50X3ByZV9mb3J3YXJk KHBrdCwgcG9ydF9pZCk7DQo+ID4NCj4gPiBIb3cgaXMgSVAgY2hlY2tzdW0gZ2V0dGluZyB1cGRh dGVkIGZvciB0aGUgcHJvY2Vzc2VkIHBhY2tldC4NCj4gPiBJZiB0aGUgaGFyZHdhcmUgaXMgbm90 IHVwZGF0aW5nIGl0LCBzaG91bGQgd2UgYWRkIGEgZmFsbGJhY2sgbWVjaGFuaXNtDQo+ID4gZm9y IFNXIGJhc2VkIENoZWNrc3VtIHVwZGF0ZS4NCj4gPg0KPiANCj4gW0x1a2Fzel0gSW4gY2FzZSBv ZiBvdXRib3VuZCBpbmxpbmUgcHJvdG9jb2wgY2hlY2tzdW0gaGFzIHRvIGJlIGNhbGN1bGF0ZWQg YnkNCj4gSFcgYXMgZmluYWwgcGFja2V0IGlzIGZvcm1lZCBieSBjcnlwdG8gZGV2aWNlLiBUaGVy ZSBpcyBubyBuZWVkIHRvIGNhbGN1bGF0ZSBpdCBpbg0KPiBTVy4NCj4gDQo+ID4+ICsJcmV0dXJu IDE7DQo+ID4NCj4gPiBJdCB3aWxsIGJlIGJldHRlciB0byB1c2Ugc29tZSBNQUNST1Mgd2hpbGUg cmV0dXJuaW5nIExpa2UNCj4gPiAjZGVmaW5lIFBLVF9GT1JXQVJEICAgMQ0KPiA+ICNkZWZpbmUg UEtUX0RST1BQRUQgICAgIDANCj4gPiAjZGVmaW5lIFBLVF9QT1NURUQgICAgICAgMiAgLyptYXkg YmUgZm9yIGxvb2thc2lkZSBjYXNlcyAqLw0KPiA+DQo+ID4+ICsNCj4gPj4gK2Ryb3BfcGt0X2Fu ZF9leGl0Og0KPiA+PiArCVJURV9MT0coRVJSLCBJUFNFQywgIk91dGJvdW5kIHBhY2tldCBkcm9w cGVkXG4iKTsNCj4gPj4gKwlydGVfcGt0bWJ1Zl9mcmVlKHBrdCk7DQo+ID4+ICsJZXYtPm1idWYg PSBOVUxMOw0KPiA+PiArCXJldHVybiAwOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICAvKg0KPiA+ PiAgICogRXZlbnQgbW9kZSBleHBvc2VzIHZhcmlvdXMgb3BlcmF0aW5nIG1vZGVzIGRlcGVuZGlu ZyBvbiB0aGUNCj4gPj4gICAqIGNhcGFiaWxpdGllcyBvZiB0aGUgZXZlbnQgZGV2aWNlIGFuZCB0 aGUgb3BlcmF0aW5nIG1vZGUgQEAgLTY4LDcNCj4gPj4gKzM5Miw3IEBAIHByZXBhcmVfb3V0X3Nl c3Npb25zX3RibChzdHJ1Y3Qgc2FfY3R4ICpzYV9vdXQsDQo+ID4+ICAgKi8NCj4gPj4NCj4gPj4g IC8qIFdvcmtlcnMgcmVnaXN0ZXJlZCAqLw0KPiA+PiAtI2RlZmluZSBJUFNFQ19FVkVOVE1PREVf V09SS0VSUwkJMQ0KPiA+PiArI2RlZmluZSBJUFNFQ19FVkVOVE1PREVfV09SS0VSUwkJMg0KPiA+ Pg0KPiA+PiAgLyoNCj4gPj4gICAqIEV2ZW50IG1vZGUgd29ya2VyDQo+ID4+IEBAIC0xNDYsNyAr NDcwLDcgQEAgaXBzZWNfd3Jrcl9ub25fYnVyc3RfaW50X3BvcnRfZHJ2X21vZGUoc3RydWN0DQo+ ID4+IGVoX2V2ZW50X2xpbmtfaW5mbyAqbGlua3MsDQo+ID4+ICAJCQl9DQo+ID4+DQo+ID4+ICAJ CQkvKiBTYXZlIHNlY3VyaXR5IHNlc3Npb24gKi8NCj4gPj4gLQkJCXBrdC0+dWRhdGE2NCA9ICh1 aW50NjRfdCkgc2Vzc190YmxbcG9ydF9pZF07DQo+ID4+ICsJCQlwa3QtPnVzZXJkYXRhID0gc2Vz c190YmxbcG9ydF9pZF07DQo+ID4+DQo+ID4+ICAJCQkvKiBNYXJrIHRoZSBwYWNrZXQgZm9yIFR4 IHNlY3VyaXR5IG9mZmxvYWQgKi8NCj4gPj4gIAkJCXBrdC0+b2xfZmxhZ3MgfD0gUEtUX1RYX1NF Q19PRkZMT0FEOyBAQCAtMTY1LDYNCj4gKzQ4OSw5NCBAQA0KPiA+PiBpcHNlY193cmtyX25vbl9i dXJzdF9pbnRfcG9ydF9kcnZfbW9kZShzdHJ1Y3QNCj4gPj4gZWhfZXZlbnRfbGlua19pbmZvICps aW5rcywNCj4gPj4gIAl9DQo+ID4+ICB9DQo+ID4+DQo+ID4+ICsvKg0KPiA+PiArICogRXZlbnQg bW9kZSB3b3JrZXINCj4gPj4gKyAqIE9wZXJhdGluZyBwYXJhbWV0ZXJzIDogbm9uLWJ1cnN0IC0g VHggaW50ZXJuYWwgcG9ydCAtIGFwcCBtb2RlDQo+ID4+ICsqLyBzdGF0aWMgdm9pZCBpcHNlY193 cmtyX25vbl9idXJzdF9pbnRfcG9ydF9hcHBfbW9kZShzdHJ1Y3QNCj4gPj4gK2VoX2V2ZW50X2xp bmtfaW5mbyAqbGlua3MsDQo+ID4+ICsJCXVpbnQ4X3QgbmJfbGlua3MpDQo+ID4+ICt7DQo+ID4+ ICsJc3RydWN0IGxjb3JlX2NvbmZfZXZfdHhfaW50X3BvcnRfd3JrciBsY29uZjsNCj4gPj4gKwl1 bnNpZ25lZCBpbnQgbmJfcnggPSAwOw0KPiA+PiArCXN0cnVjdCBydGVfZXZlbnQgZXY7DQo+ID4+ ICsJdWludDMyX3QgbGNvcmVfaWQ7DQo+ID4+ICsJaW50MzJfdCBzb2NrZXRfaWQ7DQo+ID4+ICsJ aW50IHJldDsNCj4gPj4gKw0KPiA+PiArCS8qIENoZWNrIGlmIHdlIGhhdmUgbGlua3MgcmVnaXN0 ZXJlZCBmb3IgdGhpcyBsY29yZSAqLw0KPiA+PiArCWlmIChuYl9saW5rcyA9PSAwKSB7DQo+ID4+ ICsJCS8qIE5vIGxpbmtzIHJlZ2lzdGVyZWQgLSBleGl0ICovDQo+ID4+ICsJCXJldHVybjsNCj4g Pj4gKwl9DQo+ID4+ICsNCj4gPj4gKwkvKiBXZSBoYXZlIHZhbGlkIGxpbmtzICovDQo+ID4+ICsN Cj4gPj4gKwkvKiBHZXQgY29yZSBJRCAqLw0KPiA+PiArCWxjb3JlX2lkID0gcnRlX2xjb3JlX2lk KCk7DQo+ID4+ICsNCj4gPj4gKwkvKiBHZXQgc29ja2V0IElEICovDQo+ID4+ICsJc29ja2V0X2lk ID0gcnRlX2xjb3JlX3RvX3NvY2tldF9pZChsY29yZV9pZCk7DQo+ID4+ICsNCj4gPj4gKwkvKiBT YXZlIHJvdXRpbmcgdGFibGUgKi8NCj4gPj4gKwlsY29uZi5ydC5ydDRfY3R4ID0gc29ja2V0X2N0 eFtzb2NrZXRfaWRdLnJ0X2lwNDsNCj4gPj4gKwlsY29uZi5ydC5ydDZfY3R4ID0gc29ja2V0X2N0 eFtzb2NrZXRfaWRdLnJ0X2lwNjsNCj4gPj4gKwlsY29uZi5pbmJvdW5kLnNwNF9jdHggPSBzb2Nr ZXRfY3R4W3NvY2tldF9pZF0uc3BfaXA0X2luOw0KPiA+PiArCWxjb25mLmluYm91bmQuc3A2X2N0 eCA9IHNvY2tldF9jdHhbc29ja2V0X2lkXS5zcF9pcDZfaW47DQo+ID4+ICsJbGNvbmYuaW5ib3Vu ZC5zYV9jdHggPSBzb2NrZXRfY3R4W3NvY2tldF9pZF0uc2FfaW47DQo+ID4+ICsJbGNvbmYuaW5i b3VuZC5zZXNzaW9uX3Bvb2wgPSBzb2NrZXRfY3R4W3NvY2tldF9pZF0uc2Vzc2lvbl9wb29sOw0K PiA+DQo+ID4gU2Vzc2lvbl9wcml2X3Bvb2wgc2hvdWxkIGFsc28gYmUgYWRkZWQgZm9yIGJvdGgg aW5ib3VuZCBhbmQgb3V0Ym91bmQNCj4gPg0KPiANCj4gW0x1a2Fzel0gSSB3aWxsIGFkZCBpdCBp biBWNS4NCg0KW0Fub29iXSBBY3R1YWxseSwgd2h5IGRvIG5lZWQgYm90aCBzZXNzaW9uX3Bvb2wg YW5kIHByaXZhdGVfcG9vbD8gSSB0aGluayBpdCdzIGEgcmVtbmFudCBmcm9tIHRoZSB0aW1lIHdl IGhhZCBzZXNzaW9uIGJlaW5nIGNyZWF0ZWQgd2hlbiB0aGUgZmlyc3QgcGFja2V0IGFycml2ZXMu IA0KDQpAS29uc3RhbnRpbiwgdGhvdWdodHM/DQogDQo+IA0KPiA+PiArCWxjb25mLm91dGJvdW5k LnNwNF9jdHggPSBzb2NrZXRfY3R4W3NvY2tldF9pZF0uc3BfaXA0X291dDsNCj4gPj4gKwlsY29u Zi5vdXRib3VuZC5zcDZfY3R4ID0gc29ja2V0X2N0eFtzb2NrZXRfaWRdLnNwX2lwNl9vdXQ7DQo+ ID4+ICsJbGNvbmYub3V0Ym91bmQuc2FfY3R4ID0gc29ja2V0X2N0eFtzb2NrZXRfaWRdLnNhX291 dDsNCj4gPj4gKwlsY29uZi5vdXRib3VuZC5zZXNzaW9uX3Bvb2wgPSBzb2NrZXRfY3R4W3NvY2tl dF9pZF0uc2Vzc2lvbl9wb29sOw0KPiA+PiArDQo+ID4+ICsJUlRFX0xPRyhJTkZPLCBJUFNFQywN Cj4gPj4gKwkJIkxhdW5jaGluZyBldmVudCBtb2RlIHdvcmtlciAobm9uLWJ1cnN0IC0gVHggaW50 ZXJuYWwgcG9ydCAtICINCj4gPj4gKwkJImFwcCBtb2RlKSBvbiBsY29yZSAlZFxuIiwgbGNvcmVf aWQpOw0KPiA+PiArDQo+ID4+ICsJLyogQ2hlY2sgaWYgaXQncyBzaW5nbGUgbGluayAqLw0KPiA+ PiArCWlmIChuYl9saW5rcyAhPSAxKSB7DQo+ID4+ICsJCVJURV9MT0coSU5GTywgSVBTRUMsDQo+ ID4+ICsJCQkiTXVsdGlwbGUgbGlua3Mgbm90IHN1cHBvcnRlZC4gVXNpbmcgZmlyc3QgbGlua1xu Iik7DQo+ID4+ICsJfQ0KPiA+PiArDQo+ID4+ICsJUlRFX0xPRyhJTkZPLCBJUFNFQywgIiAtLSBs Y29yZWlkPSV1IGV2ZW50X3BvcnRfaWQ9JXVcbiIsIGxjb3JlX2lkLA0KPiA+PiArCQlsaW5rc1sw XS5ldmVudF9wb3J0X2lkKTsNCj4gPj4gKw0KPiA+PiArCXdoaWxlICghZm9yY2VfcXVpdCkgew0K PiA+PiArCQkvKiBSZWFkIHBhY2tldCBmcm9tIGV2ZW50IHF1ZXVlcyAqLw0KPiA+PiArCQluYl9y eCA9IHJ0ZV9ldmVudF9kZXF1ZXVlX2J1cnN0KGxpbmtzWzBdLmV2ZW50ZGV2X2lkLA0KPiA+PiAr CQkJCWxpbmtzWzBdLmV2ZW50X3BvcnRfaWQsDQo+ID4+ICsJCQkJJmV2LCAgICAgLyogZXZlbnRz ICovDQo+ID4+ICsJCQkJMSwgICAgICAgLyogbmJfZXZlbnRzICovDQo+ID4+ICsJCQkJMCAgICAg ICAgLyogdGltZW91dF90aWNrcyAqLyk7DQo+ID4+ICsNCj4gPj4gKwkJaWYgKG5iX3J4ID09IDAp DQo+ID4+ICsJCQljb250aW51ZTsNCj4gPj4gKw0KPiA+DQo+ID4gRXZlbnQgdHlwZSBzaG91bGQg YmUgY2hlY2tlZCBoZXJlIGJlZm9yZSBkZXJlZmVyZW5jaW5nIGl0Lg0KPiA+DQo+IA0KPiBbTHVr YXN6XSBJIHdpbGwgYWRkIGV2ZW50IHR5cGUgY2hlY2sgaW4gVjUuDQo+IA0KPiA+PiArCQlpZiAo aXNfdW5wcm90ZWN0ZWRfcG9ydChldi5tYnVmLT5wb3J0KSkNCj4gPj4gKwkJCXJldCA9IHByb2Nl c3NfaXBzZWNfZXZfaW5ib3VuZCgmbGNvbmYuaW5ib3VuZCwNCj4gPj4gKwkJCQkJCQkmbGNvbmYu cnQsICZldik7DQo+ID4+ICsJCWVsc2UNCj4gPj4gKwkJCXJldCA9IHByb2Nlc3NfaXBzZWNfZXZf b3V0Ym91bmQoJmxjb25mLm91dGJvdW5kLA0KPiA+PiArCQkJCQkJCSZsY29uZi5ydCwgJmV2KTsN Cj4gPj4gKwkJaWYgKHJldCAhPSAxKQ0KPiA+PiArCQkJLyogVGhlIHBrdCBoYXMgYmVlbiBkcm9w cGVkICovDQo+ID4+ICsJCQljb250aW51ZTsNCj4gPj4gKw0KPiA+PiArCQkvKg0KPiA+PiArCQkg KiBTaW5jZSB0eCBpbnRlcm5hbCBwb3J0IGlzIGF2YWlsYWJsZSwgZXZlbnRzIGNhbiBiZQ0KPiA+ PiArCQkgKiBkaXJlY3RseSBlbnF1ZXVlZCB0byB0aGUgYWRhcHRlciBhbmQgaXQgd291bGQgYmUN Cj4gPj4gKwkJICogaW50ZXJuYWxseSBzdWJtaXR0ZWQgdG8gdGhlIGV0aCBkZXZpY2UuDQo+ID4+ ICsJCSAqLw0KPiA+PiArCQlydGVfZXZlbnRfZXRoX3R4X2FkYXB0ZXJfZW5xdWV1ZShsaW5rc1sw XS5ldmVudGRldl9pZCwNCj4gPj4gKwkJCQlsaW5rc1swXS5ldmVudF9wb3J0X2lkLA0KPiA+PiAr CQkJCSZldiwJLyogZXZlbnRzICovDQo+ID4+ICsJCQkJMSwJLyogbmJfZXZlbnRzICovDQo+ID4+ ICsJCQkJMAkvKiBmbGFncyAqLyk7DQo+ID4+ICsJfQ0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICBz dGF0aWMgdWludDhfdA0KPiA+PiAgaXBzZWNfZXZlbnRtb2RlX3BvcHVsYXRlX3dya3JfcGFyYW1z KHN0cnVjdCBlaF9hcHBfd29ya2VyX3BhcmFtcw0KPiA+PiAqd3JrcnMpDQo+ID4+ICB7DQo+ID4+ IEBAIC0xODAsNiArNTkyLDE0IEBAIGlwc2VjX2V2ZW50bW9kZV9wb3B1bGF0ZV93cmtyX3BhcmFt cyhzdHJ1Y3QNCj4gPj4gZWhfYXBwX3dvcmtlcl9wYXJhbXMgKndya3JzKQ0KPiA+PiAgCXdya3It PmNhcC5pcHNlY19tb2RlID0gRUhfSVBTRUNfTU9ERV9UWVBFX0RSSVZFUjsNCj4gPj4gIAl3cmty LT53b3JrZXJfdGhyZWFkID0gaXBzZWNfd3Jrcl9ub25fYnVyc3RfaW50X3BvcnRfZHJ2X21vZGU7 DQo+ID4+ICAJd3JrcisrOw0KPiA+PiArCW5iX3dya3JfcGFyYW0rKzsNCj4gPj4gKw0KPiA+PiAr CS8qIE5vbi1idXJzdCAtIFR4IGludGVybmFsIHBvcnQgLSBhcHAgbW9kZSAqLw0KPiA+PiArCXdy a3ItPmNhcC5idXJzdCA9IEVIX1JYX1RZUEVfTk9OX0JVUlNUOw0KPiA+PiArCXdya3ItPmNhcC50 eF9pbnRlcm5hbF9wb3J0ID0gRUhfVFhfVFlQRV9JTlRFUk5BTF9QT1JUOw0KPiA+PiArCXdya3It PmNhcC5pcHNlY19tb2RlID0gRUhfSVBTRUNfTU9ERV9UWVBFX0FQUDsNCj4gPj4gKwl3cmtyLT53 b3JrZXJfdGhyZWFkID0gaXBzZWNfd3Jrcl9ub25fYnVyc3RfaW50X3BvcnRfYXBwX21vZGU7DQo+ ID4+ICsJbmJfd3Jrcl9wYXJhbSsrOw0KPiA+Pg0KPiA+PiAgCXJldHVybiBuYl93cmtyX3BhcmFt Ow0KPiA+PiAgfQ0KPiA+PiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvaXBzZWNf d29ya2VyLmggYi9leGFtcGxlcy9pcHNlYy0NCj4gPj4gc2VjZ3cvaXBzZWNfd29ya2VyLmggbmV3 IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXggMDAwMDAwMC4uODdiNGYyMg0KPiA+PiAtLS0gL2Rldi9u dWxsDQo+ID4+ICsrKyBiL2V4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2VjX3dvcmtlci5oDQo+ID4+ IEBAIC0wLDAgKzEsMzUgQEANCj4gPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt My1DbGF1c2UNCj4gPj4gKyAqIENvcHlyaWdodCAoQykgMjAyMCBNYXJ2ZWxsIEludGVybmF0aW9u YWwgTHRkLg0KPiA+PiArICovDQo+ID4+ICsjaWZuZGVmIF9JUFNFQ19XT1JLRVJfSF8NCj4gPj4g KyNkZWZpbmUgX0lQU0VDX1dPUktFUl9IXw0KPiA+PiArDQo+ID4+ICsjaW5jbHVkZSAiaXBzZWMu aCINCj4gPj4gKw0KPiA+PiArZW51bSBwa3RfdHlwZSB7DQo+ID4+ICsJUEtUX1RZUEVfUExBSU5f SVBWNCA9IDEsDQo+ID4+ICsJUEtUX1RZUEVfSVBTRUNfSVBWNCwNCj4gPj4gKwlQS1RfVFlQRV9Q TEFJTl9JUFY2LA0KPiA+PiArCVBLVF9UWVBFX0lQU0VDX0lQVjYsDQo+ID4+ICsJUEtUX1RZUEVf SU5WQUxJRA0KPiA+PiArfTsNCj4gPj4gKw0KPiA+PiArc3RydWN0IHJvdXRlX3RhYmxlIHsNCj4g Pj4gKwlzdHJ1Y3QgcnRfY3R4ICpydDRfY3R4Ow0KPiA+PiArCXN0cnVjdCBydF9jdHggKnJ0Nl9j dHg7DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKg0KPiA+PiArICogQ29uZiByZXF1aXJlZCBi eSBldmVudCBtb2RlIHdvcmtlciB3aXRoIHR4IGludGVybmFsIHBvcnQgICovDQo+ID4+ICtzdHJ1 Y3QgbGNvcmVfY29uZl9ldl90eF9pbnRfcG9ydF93cmtyIHsNCj4gPj4gKwlzdHJ1Y3QgaXBzZWNf Y3R4IGluYm91bmQ7DQo+ID4+ICsJc3RydWN0IGlwc2VjX2N0eCBvdXRib3VuZDsNCj4gPj4gKwlz dHJ1Y3Qgcm91dGVfdGFibGUgcnQ7DQo+ID4+ICt9IF9fcnRlX2NhY2hlX2FsaWduZWQ7DQo+ID4+ ICsNCj4gPj4gK3ZvaWQgaXBzZWNfcG9sbF9tb2RlX3dvcmtlcih2b2lkKTsNCj4gPj4gKw0KPiA+ PiAraW50IGlwc2VjX2xhdW5jaF9vbmVfbGNvcmUodm9pZCAqYXJncyk7DQo+ID4+ICsNCj4gPj4g KyNlbmRpZiAvKiBfSVBTRUNfV09SS0VSX0hfICovDQo+ID4+IC0tDQo+ID4+IDIuNy40DQo+ID4N Cg==