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 E7035A055A; Tue, 25 Feb 2020 12:50:56 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3BF001BC24; Tue, 25 Feb 2020 12:50:56 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id 296DF1F1C for ; Tue, 25 Feb 2020 12:50:53 +0100 (CET) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 01PBjIBc008370; Tue, 25 Feb 2020 03:50:53 -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-id : content-transfer-encoding : mime-version; s=pfpt0818; bh=TnlCx5tgqkON2pSyLKwK5TSkSTy1tPvxRpgZfbhYDxs=; b=QLBoq6j4MRnA6aAysTQj7WPE0KOnGtZk86SCV5s/86+iKQhBK1P+1ONs/3qXHIk7qgAH HsGuy8d6ya0oFbu3a9yiu1+OLIjIix+cGIxDSrDcVRJRHjywNHP1UevOdFNlTukdoiQD FSmUQ86KmlDZxImuGqd14AsSsSCIne/qJljwxeiyT24/MClwdrUX89f0Kr/MeDi1eYh3 3gpJwvFRtFQkV94Cd5mq4PrsHbX76blEZ1qZdI++a9xHL42DqexB13V26NjY3vu/xGMx V6LGS3fkLlOSsaUdZd6OSV+PVRW0350u7v62rv/lJCo6KWZgXDB6S2v5fkrIiHH/1FfQ 7A== Received: from sc-exch01.marvell.com ([199.233.58.181]) by mx0a-0016f401.pphosted.com with ESMTP id 2yb2hvbvv3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 25 Feb 2020 03:50:53 -0800 Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 25 Feb 2020 03:50:51 -0800 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.42) 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 03:50:51 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YIgkdS5QwJ6OZJpEz71niZFP2MUMgCCOEkQR1FXYmvp67PiZ0OftoIKqKpgoKZzSMj+T/94gJyI8QOmvVrvJUwGAec2s2+BR8fAnr+R9ImttyKXM7FiPKZwMvnhSQEswm/vUA1e7/c2CcXj3P982NQWh90IUPUkkJp58jYxeVYI/mYCj9OD4+KEMMjXVZetO14b8jc5wcROPrWl6M2m6Wzh4QZyArceh8aY3sRHJapKApI91PLhSY3kEIWjxiGUIZvnLOl1SECcNfr8DvbBmsyoVDLELyEPyUBuzwDqaMKD2ny6G3RX4hL8vFKkZ75Nukmg4VTYxODkgnb25XB9sQg== 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=TnlCx5tgqkON2pSyLKwK5TSkSTy1tPvxRpgZfbhYDxs=; b=fo3uwYXm+ztR95Q5cjF+3oBENsKFcQt1qp0+AtC62yjS1upelehdvqdNPf1NX2HLKl/jmKHxX4ODLTlC4RlWCo0Ru2ahHmfP+mn6kSD2IsMKQCN2yg738R6ka9Byi0vjillaQ5ApkL9mvvp5BvEXdlmbTxZTAwCab2YDCHPV+XM213Em9IKKMNjewlHJrqdglcP/x8JejEFzq1ojQ8lBfVJ8fKwK4EOi9XFFMYpyO3hdmUoAH0YYRV5cPBulybgiWyeEnKtg6kYgeGjFY0H9UtbFgEW+tkjlawBH369uwmxYKqKuJ2oSWEo+272eB8o9nFfIHwxd9Tq4DYA6Zl2SDw== 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=TnlCx5tgqkON2pSyLKwK5TSkSTy1tPvxRpgZfbhYDxs=; b=O2/ia19m/AMMxAb65FYtdTsS/ljIEPUgSkDVk21WBnQKeWHnZCAP4mEzEYB8ce6vzEi/AfFcG3SMhSuxDalY0H2u8xQCGotf8aptsH8VLM4C0CVKPSf54wiAZEfSNYSEgY4WAY+fM16KbIDEBnI3UQHeelk8XYtknKbHH+aBDec= Received: from BYAPR18MB2599.namprd18.prod.outlook.com (2603:10b6:a03:132::16) by BYAPR18MB2935.namprd18.prod.outlook.com (2603:10b6:a03:10a::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2750.21; Tue, 25 Feb 2020 11:50:50 +0000 Received: from BYAPR18MB2599.namprd18.prod.outlook.com ([fe80::916:15a2:7674:9d19]) by BYAPR18MB2599.namprd18.prod.outlook.com ([fe80::916:15a2:7674:9d19%7]) with mapi id 15.20.2750.021; Tue, 25 Feb 2020 11:50:49 +0000 From: Lukas Bartosik To: Akhil Goyal , Anoob Joseph CC: Jerin Jacob Kollanukkaran , "Narayana Prasad Raju Athreya" , Ankur Dwivedi , "Archana Muniganti" , Tejasree Kondoj , Vamsi Krishna Attunuru , Konstantin Ananyev , "dev@dpdk.org" , "Thomas Monjalon" , Radu Nicolau Thread-Topic: [EXT] RE: [PATCH v4 12/15] examples/ipsec-secgw: add app mode worker Thread-Index: AQHV6xyOARNOpVHgQUO2sDqqEARPnqgrzWmA Date: Tue, 25 Feb 2020 11:50:49 +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-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [199.233.58.37] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5a83b77f-884b-4192-0075-08d7b9e8f57d x-ms-traffictypediagnostic: BYAPR18MB2935: 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)(39850400004)(346002)(366004)(376002)(136003)(396003)(189003)(199004)(31686004)(6636002)(186003)(76116006)(66476007)(8936002)(66556008)(6512007)(66446008)(66946007)(86362001)(64756008)(36756003)(31696002)(4326008)(5660300002)(478600001)(2616005)(54906003)(26005)(71200400001)(8676002)(110136005)(316002)(6486002)(81166006)(6506007)(30864003)(53546011)(2906002)(81156014); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR18MB2935; H:BYAPR18MB2599.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A: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: JcsQV7vGCeERYxLwKgp1h/x2euObxgGzAjhSCbdMWfWXCC2t+Y802gN8rGqxM/VgheW4YtIrrVOSkv+Ks4Z3A+pLMVM6mSCYrJCVI1h4CX6RlDgswH97zjau/YQc7YJIA3bsEWSa6B1LxGMuc+7/Gd/dsLfEHxDDOWvESE0djcjb0+cALiXDJW80NqUNRK4BSaLow5QzcDOowPL1yjjkiLogUrvXbmaPN6DfItw0DFdEIN6UeUEqXy80eL84QnN14V6ZXocJkjolPdpM+BRCPkwhKpjeJeEVHRe36iX3VuGrHhoH5xCGnBpiL2b7MVAr8GnmPYrUTKs5riwezoxv1OaNpbe97+9W09N75iyaYm8+jwr4O6sSz1xT7tRGfX91C5lYtZ8ojIoG62jES3gDG4bZLtxhZpyjvrKwXDq9vcTCFEQ3ZQhXr076lC5iu/vB x-ms-exchange-antispam-messagedata: UjLtUW9NmBEvvrCqrVa1tOpkQTIei6BxjNEU7+Y/Xv2gyEGiyFnXziddASv+WCXSWAze95CSzfxCnW9a2h5kG1aCq+pXAOKQ/Uc5KxG1824LVOyvqKNSksePGLXfjE8MZ7RmMpaFYtW5DQHAOR7A4g== Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 5a83b77f-884b-4192-0075-08d7b9e8f57d X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Feb 2020 11:50:49.5917 (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: DdpSbAzQK+jrktM0Tiq2yydiA9xwbP2M3IybTzN8bfoEYA/rMMKL4yA7A23ef957W8Uet+z1uqYOjymSBBVvxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB2935 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" SGkgQWtoaWwsDQoNClBsZWFzZSBzZWUgbXkgYW5zd2VycyBiZWxvdy4NCg0KVGhhbmtzLA0KTHVr YXN6DQoNCk9uIDI0LjAyLjIwMjAgMTU6MTMsIEFraGlsIEdveWFsIHdyb3RlOg0KPiBFeHRlcm5h bCBFbWFpbA0KPiANCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBIaSBMdWthc3ovQW5vb2IsDQo+IA0KPj4N Cj4+IEFkZCBhcHBsaWNhdGlvbiBpbmJvdW5kL291dGJvdW5kIHdvcmtlciB0aHJlYWQgYW5kDQo+ PiBJUHNlYyBhcHBsaWNhdGlvbiBwcm9jZXNzaW5nIGNvZGUgZm9yIGV2ZW50IG1vZGUuDQo+Pg0K Pj4gRXhhbXBsZSBpcHNlYy1zZWNndyBjb21tYW5kIGluIGFwcCBtb2RlOg0KPj4gaXBzZWMtc2Vj Z3cgLXcgMDAwMjowMjowMC4wLGlwc2VjX2luX21heF9zcGk9MTI4DQo+PiAtdyAwMDAyOjAzOjAw LjAsaXBzZWNfaW5fbWF4X3NwaT0xMjggLXcgMDAwMjowZTowMC4wIC13IDAwMDI6MTA6MDAuMQ0K Pj4gLS1sb2ctbGV2ZWw9OCAtYyAweDEgLS0gLVAgLXAgMHgzIC11IDB4MSAtLWNvbmZpZyAiKDEs MCwwKSwoMCwwLDApIg0KPj4gLWYgYWVzLWdjbS5jZmcgLS10cmFuc2Zlci1tb2RlIGV2ZW50IC0t ZXZlbnQtc2NoZWR1bGUtdHlwZSBwYXJhbGxlbA0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6IEFub29i IEpvc2VwaCA8YW5vb2JqQG1hcnZlbGwuY29tPg0KPj4gU2lnbmVkLW9mZi1ieTogQW5rdXIgRHdp dmVkaSA8YWR3aXZlZGlAbWFydmVsbC5jb20+DQo+PiBTaWduZWQtb2ZmLWJ5OiBMdWthc3ogQmFy dG9zaWsgPGxiYXJ0b3Npa0BtYXJ2ZWxsLmNvbT4NCj4+IC0tLQ0KPiANCj4gLi4uDQo+IA0KPj4g K3N0YXRpYyBpbmxpbmUgZW51bSBwa3RfdHlwZQ0KPj4gK3Byb2Nlc3NfaXBzZWNfZ2V0X3BrdF90 eXBlKHN0cnVjdCBydGVfbWJ1ZiAqcGt0LCB1aW50OF90ICoqbmxwKQ0KPj4gK3sNCj4+ICsJc3Ry dWN0IHJ0ZV9ldGhlcl9oZHIgKmV0aDsNCj4+ICsNCj4+ICsJZXRoID0gcnRlX3BrdG1idWZfbXRv ZChwa3QsIHN0cnVjdCBydGVfZXRoZXJfaGRyICopOw0KPj4gKwlpZiAoZXRoLT5ldGhlcl90eXBl ID09IHJ0ZV9jcHVfdG9fYmVfMTYoUlRFX0VUSEVSX1RZUEVfSVBWNCkpIHsNCj4+ICsJCSpubHAg PSBSVEVfUFRSX0FERChldGgsIFJURV9FVEhFUl9IRFJfTEVOICsNCj4+ICsJCQkJb2Zmc2V0b2Yo c3RydWN0IGlwLCBpcF9wKSk7DQo+PiArCQlpZiAoKipubHAgPT0gSVBQUk9UT19FU1ApDQo+PiAr CQkJcmV0dXJuIFBLVF9UWVBFX0lQU0VDX0lQVjQ7DQo+PiArCQllbHNlDQo+PiArCQkJcmV0dXJu IFBLVF9UWVBFX1BMQUlOX0lQVjQ7DQo+PiArCX0gZWxzZSBpZiAoZXRoLT5ldGhlcl90eXBlID09 IHJ0ZV9jcHVfdG9fYmVfMTYoUlRFX0VUSEVSX1RZUEVfSVBWNikpDQo+PiB7DQo+PiArCQkqbmxw ID0gUlRFX1BUUl9BREQoZXRoLCBSVEVfRVRIRVJfSERSX0xFTiArDQo+PiArCQkJCW9mZnNldG9m KHN0cnVjdCBpcDZfaGRyLCBpcDZfbnh0KSk7DQo+PiArCQlpZiAoKipubHAgPT0gSVBQUk9UT19F U1ApDQo+PiArCQkJcmV0dXJuIFBLVF9UWVBFX0lQU0VDX0lQVjY7DQo+PiArCQllbHNlDQo+PiAr CQkJcmV0dXJuIFBLVF9UWVBFX1BMQUlOX0lQVjY7DQo+PiArCX0NCj4+ICsNCj4+ICsJLyogVW5r bm93bi9VbnN1cHBvcnRlZCB0eXBlICovDQo+PiArCXJldHVybiBQS1RfVFlQRV9JTlZBTElEOw0K Pj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4+ICt1cGRhdGVfbWFjX2FkZHJz KHN0cnVjdCBydGVfbWJ1ZiAqcGt0LCB1aW50MTZfdCBwb3J0aWQpDQo+PiArew0KPj4gKwlzdHJ1 Y3QgcnRlX2V0aGVyX2hkciAqZXRoaGRyOw0KPj4gKw0KPj4gKwlldGhoZHIgPSBydGVfcGt0bWJ1 Zl9tdG9kKHBrdCwgc3RydWN0IHJ0ZV9ldGhlcl9oZHIgKik7DQo+PiArCW1lbWNweSgmZXRoaGRy LT5zX2FkZHIsICZldGhhZGRyX3RibFtwb3J0aWRdLnNyYywNCj4+IFJURV9FVEhFUl9BRERSX0xF Tik7DQo+PiArCW1lbWNweSgmZXRoaGRyLT5kX2FkZHIsICZldGhhZGRyX3RibFtwb3J0aWRdLmRz dCwNCj4+IFJURV9FVEhFUl9BRERSX0xFTik7DQo+PiArfQ0KPj4NCj4+ICBzdGF0aWMgaW5saW5l IHZvaWQNCj4+ICBpcHNlY19ldmVudF9wcmVfZm9yd2FyZChzdHJ1Y3QgcnRlX21idWYgKm0sIHVu c2lnbmVkIGludCBwb3J0X2lkKQ0KPj4gQEAgLTYxLDYgKzEwMSwyOTAgQEAgcHJlcGFyZV9vdXRf c2Vzc2lvbnNfdGJsKHN0cnVjdCBzYV9jdHggKnNhX291dCwNCj4+ICAJfQ0KPj4gIH0NCj4+DQo+ PiArc3RhdGljIGlubGluZSBpbnQNCj4+ICtjaGVja19zcChzdHJ1Y3Qgc3BfY3R4ICpzcCwgY29u c3QgdWludDhfdCAqbmxwLCB1aW50MzJfdCAqc2FfaWR4KQ0KPj4gK3sNCj4+ICsJdWludDMyX3Qg cmVzOw0KPj4gKw0KPj4gKwlpZiAodW5saWtlbHkoc3AgPT0gTlVMTCkpDQo+PiArCQlyZXR1cm4g MDsNCj4+ICsNCj4+ICsJcnRlX2FjbF9jbGFzc2lmeSgoc3RydWN0IHJ0ZV9hY2xfY3R4ICopc3As ICZubHAsICZyZXMsIDEsDQo+PiArCQkJREVGQVVMVF9NQVhfQ0FURUdPUklFUyk7DQo+PiArDQo+ PiArCWlmICh1bmxpa2VseShyZXMgPT0gMCkpIHsNCj4+ICsJCS8qIE5vIG1hdGNoICovDQo+PiAr CQlyZXR1cm4gMDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAocmVzID09IERJU0NBUkQpDQo+PiAr CQlyZXR1cm4gMDsNCj4+ICsJZWxzZSBpZiAocmVzID09IEJZUEFTUykgew0KPj4gKwkJKnNhX2lk eCA9IC0xOw0KPj4gKwkJcmV0dXJuIDE7DQo+PiArCX0NCj4+ICsNCj4+ICsJKnNhX2lkeCA9IHJl cyAtIDE7DQo+PiArCXJldHVybiAxOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIHVp bnQxNl90DQo+PiArcm91dGU0X3BrdChzdHJ1Y3QgcnRlX21idWYgKnBrdCwgc3RydWN0IHJ0X2N0 eCAqcnRfY3R4KQ0KPj4gK3sNCj4+ICsJdWludDMyX3QgZHN0X2lwOw0KPj4gKwl1aW50MTZfdCBv ZmZzZXQ7DQo+PiArCXVpbnQzMl90IGhvcDsNCj4+ICsJaW50IHJldDsNCj4+ICsNCj4+ICsJb2Zm c2V0ID0gUlRFX0VUSEVSX0hEUl9MRU4gKyBvZmZzZXRvZihzdHJ1Y3QgaXAsIGlwX2RzdCk7DQo+ PiArCWRzdF9pcCA9ICpydGVfcGt0bWJ1Zl9tdG9kX29mZnNldChwa3QsIHVpbnQzMl90ICosIG9m ZnNldCk7DQo+PiArCWRzdF9pcCA9IHJ0ZV9iZV90b19jcHVfMzIoZHN0X2lwKTsNCj4+ICsNCj4+ ICsJcmV0ID0gcnRlX2xwbV9sb29rdXAoKHN0cnVjdCBydGVfbHBtICopcnRfY3R4LCBkc3RfaXAs ICZob3ApOw0KPj4gKw0KPj4gKwlpZiAocmV0ID09IDApIHsNCj4+ICsJCS8qIFdlIGhhdmUgYSBo aXQgKi8NCj4+ICsJCXJldHVybiBob3A7DQo+PiArCX0NCj4+ICsNCj4+ICsJLyogZWxzZSAqLw0K Pj4gKwlyZXR1cm4gUlRFX01BWF9FVEhQT1JUUzsNCj4+ICt9DQo+PiArDQo+PiArLyogVE9ETzog VG8gYmUgdGVzdGVkICovDQo+PiArc3RhdGljIGlubGluZSB1aW50MTZfdA0KPj4gK3JvdXRlNl9w a3Qoc3RydWN0IHJ0ZV9tYnVmICpwa3QsIHN0cnVjdCBydF9jdHggKnJ0X2N0eCkNCj4+ICt7DQo+ PiArCXVpbnQ4X3QgZHN0X2lwWzE2XTsNCj4+ICsJdWludDhfdCAqaXA2X2RzdDsNCj4+ICsJdWlu dDE2X3Qgb2Zmc2V0Ow0KPj4gKwl1aW50MzJfdCBob3A7DQo+PiArCWludCByZXQ7DQo+PiArDQo+ PiArCW9mZnNldCA9IFJURV9FVEhFUl9IRFJfTEVOICsgb2Zmc2V0b2Yoc3RydWN0IGlwNl9oZHIs IGlwNl9kc3QpOw0KPj4gKwlpcDZfZHN0ID0gcnRlX3BrdG1idWZfbXRvZF9vZmZzZXQocGt0LCB1 aW50OF90ICosIG9mZnNldCk7DQo+PiArCW1lbWNweSgmZHN0X2lwWzBdLCBpcDZfZHN0LCAxNik7 DQo+PiArDQo+PiArCXJldCA9IHJ0ZV9scG02X2xvb2t1cCgoc3RydWN0IHJ0ZV9scG02ICopcnRf Y3R4LCBkc3RfaXAsICZob3ApOw0KPj4gKw0KPj4gKwlpZiAocmV0ID09IDApIHsNCj4+ICsJCS8q IFdlIGhhdmUgYSBoaXQgKi8NCj4+ICsJCXJldHVybiBob3A7DQo+PiArCX0NCj4+ICsNCj4+ICsJ LyogZWxzZSAqLw0KPj4gKwlyZXR1cm4gUlRFX01BWF9FVEhQT1JUUzsNCj4+ICt9DQo+PiArDQo+ PiArc3RhdGljIGlubGluZSB1aW50MTZfdA0KPj4gK2dldF9yb3V0ZShzdHJ1Y3QgcnRlX21idWYg KnBrdCwgc3RydWN0IHJvdXRlX3RhYmxlICpydCwgZW51bSBwa3RfdHlwZSB0eXBlKQ0KPj4gK3sN Cj4+ICsJaWYgKHR5cGUgPT0gUEtUX1RZUEVfUExBSU5fSVBWNCB8fCB0eXBlID09IFBLVF9UWVBF X0lQU0VDX0lQVjQpDQo+PiArCQlyZXR1cm4gcm91dGU0X3BrdChwa3QsIHJ0LT5ydDRfY3R4KTsN Cj4+ICsJZWxzZSBpZiAodHlwZSA9PSBQS1RfVFlQRV9QTEFJTl9JUFY2IHx8IHR5cGUgPT0gUEtU X1RZUEVfSVBTRUNfSVBWNikNCj4+ICsJCXJldHVybiByb3V0ZTZfcGt0KHBrdCwgcnQtPnJ0Nl9j dHgpOw0KPj4gKw0KPj4gKwlyZXR1cm4gUlRFX01BWF9FVEhQT1JUUzsNCj4+ICt9DQo+IA0KPiBJ cyBpdCBub3QgcG9zc2libGUgdG8gdXNlIHRoZSBleGlzdGluZyBmdW5jdGlvbnMgZm9yIGZpbmRp bmcgcm91dGVzLCBjaGVja2luZyBwYWNrZXQgdHlwZXMgYW5kIGNoZWNraW5nIHNlY3VyaXR5IHBv bGljaWVzLg0KPiBJdCB3aWxsIGJlIHZlcnkgZGlmZmljdWx0IHRvIG1hbmFnZSB0d28gc2VwYXJh dGUgZnVuY3Rpb25zIGZvciBzYW1lIHdvcmsuIEkgY2FuIHNlZSB0aGF0IHRoZSBwa3QtPmRhdGFf b2ZmcyANCj4gQXJlIG5vdCByZXF1aXJlZCB0byBiZSB1cGRhdGVkIGluIHRoZSBpbmxpbmUgY2Fz ZSwgYnV0IGNhbiB3ZSBzcGxpdCB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zIGluIHR3byBzbyB0aGF0 IHRoZXkgY2FuIGJlIA0KPiBDYWxsZWQgaW4gdGhlIGFwcHJvcHJpYXRlIGNhc2VzLg0KPiANCj4g QXMgeW91IGhhdmUgc2FpZCBpbiB0aGUgY292ZXIgbm90ZSBhcyB3ZWxsIHRvIGFkZCBsb29rYXNp ZGUgcHJvdG9jb2wgc3VwcG9ydC4gSSBhbHNvIHRyaWVkIGFkZGluZyBpdCwgYW5kIGl0IHdpbGwg Z2V0IHZlcnkNCj4gRGlmZmljdWx0IHRvIG1hbmFnZSBzZXBhcmF0ZSBmdW5jdGlvbnMgZm9yIHNl cGFyYXRlIGNvZGUgcGF0aHMuDQo+IA0KDQpbTHVrYXN6XSBUaGlzIHdhcyBhbHNvIEtvbnN0YW50 aW4ncyBjb21tZW50IGR1cmluZyByZXZpZXcgb2Ygb25lIG9mIHByZXZpb3VzIHJldmlzaW9ucy4g DQpUaGUgcHJlcGFyZV9vbmVfcGFja2V0KCkgYW5kIHByZXBhcmVfdHhfcGt0KCkgZG8gbXVjaCBt b3JlIHRoYW4gd2UgbmVlZCBhbmQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMNCndlIGNyYWZ0ZWQg bmV3IGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGUsIHByb2Nlc3NfaXBzZWNfZ2V0X3BrdF90eXBlIGZ1 bmN0aW9uIHJldHVybnMgbmxwIGFuZCB3aGV0aGVyDQpwYWNrZXQgdHlwZSBpcyBwbGFpbiBvciBJ UHNlYy4gVGhhdCdzIGFsbC4gUHJlcGFyZV9vbmVfcGFja2V0KCkgcHJvY2VzcyBwYWNrZXRzIGlu IGNodW5rcyBhbmQgZG9lcyBtdWNoIG1vcmUgLQ0KaXQgYWRqdXN0cyBtYnVmIGFuZCBwYWNrZXQg bGVuZ3RoIHRoZW4gaXQgZGVtdWx0aXBsZXggcGFja2V0cyBpbnRvIHBsYWluIGFuZCBJUHNlYyBm bG93cyBhbmQgZmluYWxseSBkb2VzIA0KaW5saW5lIGNoZWNrcy4gVGhpcyBpcyBzaW1pbGFyIGZv ciB1cGRhdGVfbWFjX2FkZHJzKCkgdnMgcHJlcGFyZV90eF9wa3QoKSBhbmQgY2hlY2tfc3AoKSB2 cyBpbmJvdW5kX3NwX3NhKCkNCnRoYXQgcHJlcGFyZV90eF9wa3QoKSBhbmQgaW5ib3VuZF9zcF9z YSgpIGRvIG1vcmUgdGhhdCB3ZSBuZWVkIGluIGV2ZW50IG1vZGUuDQogDQpJIHVuZGVyc3RhbmQg eW91ciBjb25jZXJuIGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIGNvZGUgbWFpbnRlbmFuY2UgYnV0 IG9uIHRoZSBvdGhlciBoYW5kIHdlIGFyZSBjb25jZXJuZWQgd2l0aCBwZXJmb3JtYW5jZS4gDQpU aGUgY3VycmVudCBjb2RlIGlzIG5vdCBvcHRpbWl6ZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSBtb2Rl IHByb2Nlc3NpbmcgaW50cm9kdWNlZCB3aXRoIHJ0ZV9zZWN1cml0eS4gV2UgY2FuIHdvcmsgb24g YSBjb21tb24gDQpyb3V0aW5lcyBvbmNlIHdlIGhhdmUgb3RoZXIgbW9kZXMgYWxzbyBhZGRlZCwg c28gdGhhdCB3ZSBjYW4gY29tZSB1cCB3aXRoIGEgYmV0dGVyIHNvbHV0aW9uIHRoYW4gd2hhdCB3 ZSBoYXZlIHRvZGF5Lg0KDQo+PiArDQo+PiArc3RhdGljIGlubGluZSBpbnQNCj4+ICtwcm9jZXNz X2lwc2VjX2V2X2luYm91bmQoc3RydWN0IGlwc2VjX2N0eCAqY3R4LCBzdHJ1Y3Qgcm91dGVfdGFi bGUgKnJ0LA0KPj4gKwkJc3RydWN0IHJ0ZV9ldmVudCAqZXYpDQo+PiArew0KPj4gKwlzdHJ1Y3Qg aXBzZWNfc2EgKnNhID0gTlVMTDsNCj4+ICsJc3RydWN0IHJ0ZV9tYnVmICpwa3Q7DQo+PiArCXVp bnQxNl90IHBvcnRfaWQgPSAwOw0KPj4gKwllbnVtIHBrdF90eXBlIHR5cGU7DQo+PiArCXVpbnQz Ml90IHNhX2lkeDsNCj4+ICsJdWludDhfdCAqbmxwOw0KPj4gKw0KPj4gKwkvKiBHZXQgcGt0IGZy b20gZXZlbnQgKi8NCj4+ICsJcGt0ID0gZXYtPm1idWY7DQo+PiArDQo+PiArCS8qIENoZWNrIHRo ZSBwYWNrZXQgdHlwZSAqLw0KPj4gKwl0eXBlID0gcHJvY2Vzc19pcHNlY19nZXRfcGt0X3R5cGUo cGt0LCAmbmxwKTsNCj4+ICsNCj4+ICsJc3dpdGNoICh0eXBlKSB7DQo+PiArCWNhc2UgUEtUX1RZ UEVfUExBSU5fSVBWNDoNCj4+ICsJCWlmIChwa3QtPm9sX2ZsYWdzICYgUEtUX1JYX1NFQ19PRkZM T0FEKSB7DQo+PiArCQkJaWYgKHVubGlrZWx5KHBrdC0+b2xfZmxhZ3MgJg0KPj4gKwkJCQkgICAg IFBLVF9SWF9TRUNfT0ZGTE9BRF9GQUlMRUQpKSB7DQo+PiArCQkJCVJURV9MT0coRVJSLCBJUFNF QywNCj4+ICsJCQkJCSJJbmJvdW5kIHNlY3VyaXR5IG9mZmxvYWQgZmFpbGVkXG4iKTsNCj4+ICsJ CQkJZ290byBkcm9wX3BrdF9hbmRfZXhpdDsNCj4+ICsJCQl9DQo+PiArCQkJc2EgPSBwa3QtPnVz ZXJkYXRhOw0KPj4gKwkJfQ0KPj4gKw0KPj4gKwkJLyogQ2hlY2sgaWYgd2UgaGF2ZSBhIG1hdGNo ICovDQo+PiArCQlpZiAoY2hlY2tfc3AoY3R4LT5zcDRfY3R4LCBubHAsICZzYV9pZHgpID09IDAp IHsNCj4+ICsJCQkvKiBObyB2YWxpZCBtYXRjaCAqLw0KPj4gKwkJCWdvdG8gZHJvcF9wa3RfYW5k X2V4aXQ7DQo+PiArCQl9DQo+PiArCQlicmVhazsNCj4+ICsNCj4+ICsJY2FzZSBQS1RfVFlQRV9Q TEFJTl9JUFY2Og0KPj4gKwkJaWYgKHBrdC0+b2xfZmxhZ3MgJiBQS1RfUlhfU0VDX09GRkxPQUQp IHsNCj4+ICsJCQlpZiAodW5saWtlbHkocGt0LT5vbF9mbGFncyAmDQo+PiArCQkJCSAgICAgUEtU X1JYX1NFQ19PRkZMT0FEX0ZBSUxFRCkpIHsNCj4+ICsJCQkJUlRFX0xPRyhFUlIsIElQU0VDLA0K Pj4gKwkJCQkJIkluYm91bmQgc2VjdXJpdHkgb2ZmbG9hZCBmYWlsZWRcbiIpOw0KPj4gKwkJCQln b3RvIGRyb3BfcGt0X2FuZF9leGl0Ow0KPj4gKwkJCX0NCj4+ICsJCQlzYSA9IHBrdC0+dXNlcmRh dGE7DQo+PiArCQl9DQo+PiArDQo+PiArCQkvKiBDaGVjayBpZiB3ZSBoYXZlIGEgbWF0Y2ggKi8N Cj4+ICsJCWlmIChjaGVja19zcChjdHgtPnNwNl9jdHgsIG5scCwgJnNhX2lkeCkgPT0gMCkgew0K Pj4gKwkJCS8qIE5vIHZhbGlkIG1hdGNoICovDQo+PiArCQkJZ290byBkcm9wX3BrdF9hbmRfZXhp dDsNCj4+ICsJCX0NCj4+ICsJCWJyZWFrOw0KPj4gKw0KPj4gKwlkZWZhdWx0Og0KPj4gKwkJUlRF X0xPRyhFUlIsIElQU0VDLCAiVW5zdXBwb3J0ZWQgcGFja2V0IHR5cGUgPSAlZFxuIiwgdHlwZSk7 DQo+PiArCQlnb3RvIGRyb3BfcGt0X2FuZF9leGl0Ow0KPj4gKwl9DQo+PiArDQo+PiArCS8qIENo ZWNrIGlmIHRoZSBwYWNrZXQgaGFzIHRvIGJlIGJ5cGFzc2VkICovDQo+PiArCWlmIChzYV9pZHgg PT0gQllQQVNTKQ0KPj4gKwkJZ290byByb3V0ZV9hbmRfc2VuZF9wa3Q7DQo+PiArDQo+PiArCS8q IFZhbGlkYXRlIHNhX2lkeCAqLw0KPj4gKwlpZiAoc2FfaWR4ID49IGN0eC0+c2FfY3R4LT5uYl9z YSkNCj4+ICsJCWdvdG8gZHJvcF9wa3RfYW5kX2V4aXQ7DQo+PiArDQo+PiArCS8qIEVsc2UgdGhl IHBhY2tldCBoYXMgdG8gYmUgcHJvdGVjdGVkIHdpdGggU0EgKi8NCj4+ICsNCj4+ICsJLyogSWYg dGhlIHBhY2tldCB3YXMgSVBzZWMgcHJvY2Vzc2VkLCB0aGVuIFNBIHBvaW50ZXIgc2hvdWxkIGJl IHNldCAqLw0KPj4gKwlpZiAoc2EgPT0gTlVMTCkNCj4+ICsJCWdvdG8gZHJvcF9wa3RfYW5kX2V4 aXQ7DQo+PiArDQo+PiArCS8qIFNQSSBvbiB0aGUgcGFja2V0IHNob3VsZCBtYXRjaCB3aXRoIHRo ZSBvbmUgaW4gU0EgKi8NCj4+ICsJaWYgKHVubGlrZWx5KHNhLT5zcGkgIT0gY3R4LT5zYV9jdHgt PnNhW3NhX2lkeF0uc3BpKSkNCj4+ICsJCWdvdG8gZHJvcF9wa3RfYW5kX2V4aXQ7DQo+PiArDQo+ PiArcm91dGVfYW5kX3NlbmRfcGt0Og0KPj4gKwlwb3J0X2lkID0gZ2V0X3JvdXRlKHBrdCwgcnQs IHR5cGUpOw0KPj4gKwlpZiAodW5saWtlbHkocG9ydF9pZCA9PSBSVEVfTUFYX0VUSFBPUlRTKSkg ew0KPj4gKwkJLyogbm8gbWF0Y2ggKi8NCj4+ICsJCWdvdG8gZHJvcF9wa3RfYW5kX2V4aXQ7DQo+ PiArCX0NCj4+ICsJLyogZWxzZSwgd2UgaGF2ZSBhIG1hdGNoaW5nIHJvdXRlICovDQo+PiArDQo+ PiArCS8qIFVwZGF0ZSBtYWMgYWRkcmVzc2VzICovDQo+PiArCXVwZGF0ZV9tYWNfYWRkcnMocGt0 LCBwb3J0X2lkKTsNCj4+ICsNCj4+ICsJLyogVXBkYXRlIHRoZSBldmVudCB3aXRoIHRoZSBkZXN0 IHBvcnQgKi8NCj4+ICsJaXBzZWNfZXZlbnRfcHJlX2ZvcndhcmQocGt0LCBwb3J0X2lkKTsNCj4+ ICsJcmV0dXJuIDE7DQo+PiArDQo+PiArZHJvcF9wa3RfYW5kX2V4aXQ6DQo+PiArCVJURV9MT0co RVJSLCBJUFNFQywgIkluYm91bmQgcGFja2V0IGRyb3BwZWRcbiIpOw0KPj4gKwlydGVfcGt0bWJ1 Zl9mcmVlKHBrdCk7DQo+PiArCWV2LT5tYnVmID0gTlVMTDsNCj4+ICsJcmV0dXJuIDA7DQo+PiAr fQ0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgaW50DQo+PiArcHJvY2Vzc19pcHNlY19ldl9vdXRi b3VuZChzdHJ1Y3QgaXBzZWNfY3R4ICpjdHgsIHN0cnVjdCByb3V0ZV90YWJsZSAqcnQsDQo+PiAr CQlzdHJ1Y3QgcnRlX2V2ZW50ICpldikNCj4+ICt7DQo+PiArCXN0cnVjdCBydGVfaXBzZWNfc2Vz c2lvbiAqc2VzczsNCj4+ICsJc3RydWN0IHNhX2N0eCAqc2FfY3R4Ow0KPj4gKwlzdHJ1Y3QgcnRl X21idWYgKnBrdDsNCj4+ICsJdWludDE2X3QgcG9ydF9pZCA9IDA7DQo+PiArCXN0cnVjdCBpcHNl Y19zYSAqc2E7DQo+PiArCWVudW0gcGt0X3R5cGUgdHlwZTsNCj4+ICsJdWludDMyX3Qgc2FfaWR4 Ow0KPj4gKwl1aW50OF90ICpubHA7DQo+PiArDQo+PiArCS8qIEdldCBwa3QgZnJvbSBldmVudCAq Lw0KPj4gKwlwa3QgPSBldi0+bWJ1ZjsNCj4+ICsNCj4+ICsJLyogQ2hlY2sgdGhlIHBhY2tldCB0 eXBlICovDQo+PiArCXR5cGUgPSBwcm9jZXNzX2lwc2VjX2dldF9wa3RfdHlwZShwa3QsICZubHAp Ow0KPj4gKw0KPj4gKwlzd2l0Y2ggKHR5cGUpIHsNCj4+ICsJY2FzZSBQS1RfVFlQRV9QTEFJTl9J UFY0Og0KPj4gKwkJLyogQ2hlY2sgaWYgd2UgaGF2ZSBhIG1hdGNoICovDQo+PiArCQlpZiAoY2hl Y2tfc3AoY3R4LT5zcDRfY3R4LCBubHAsICZzYV9pZHgpID09IDApIHsNCj4+ICsJCQkvKiBObyB2 YWxpZCBtYXRjaCAqLw0KPj4gKwkJCWdvdG8gZHJvcF9wa3RfYW5kX2V4aXQ7DQo+PiArCQl9DQo+ PiArCQlicmVhazsNCj4+ICsJY2FzZSBQS1RfVFlQRV9QTEFJTl9JUFY2Og0KPj4gKwkJLyogQ2hl Y2sgaWYgd2UgaGF2ZSBhIG1hdGNoICovDQo+PiArCQlpZiAoY2hlY2tfc3AoY3R4LT5zcDZfY3R4 LCBubHAsICZzYV9pZHgpID09IDApIHsNCj4+ICsJCQkvKiBObyB2YWxpZCBtYXRjaCAqLw0KPj4g KwkJCWdvdG8gZHJvcF9wa3RfYW5kX2V4aXQ7DQo+PiArCQl9DQo+PiArCQlicmVhazsNCj4+ICsJ ZGVmYXVsdDoNCj4+ICsJCS8qDQo+PiArCQkgKiBPbmx5IHBsYWluIElQdjQgJiBJUHY2IHBhY2tl dHMgYXJlIGFsbG93ZWQNCj4+ICsJCSAqIG9uIHByb3RlY3RlZCBwb3J0LiBEcm9wIHRoZSByZXN0 Lg0KPj4gKwkJICovDQo+PiArCQlSVEVfTE9HKEVSUiwgSVBTRUMsICJVbnN1cHBvcnRlZCBwYWNr ZXQgdHlwZSA9ICVkXG4iLCB0eXBlKTsNCj4+ICsJCWdvdG8gZHJvcF9wa3RfYW5kX2V4aXQ7DQo+ PiArCX0NCj4+ICsNCj4+ICsJLyogQ2hlY2sgaWYgdGhlIHBhY2tldCBoYXMgdG8gYmUgYnlwYXNz ZWQgKi8NCj4+ICsJaWYgKHNhX2lkeCA9PSBCWVBBU1MpIHsNCj4+ICsJCXBvcnRfaWQgPSBnZXRf cm91dGUocGt0LCBydCwgdHlwZSk7DQo+PiArCQlpZiAodW5saWtlbHkocG9ydF9pZCA9PSBSVEVf TUFYX0VUSFBPUlRTKSkgew0KPj4gKwkJCS8qIG5vIG1hdGNoICovDQo+PiArCQkJZ290byBkcm9w X3BrdF9hbmRfZXhpdDsNCj4+ICsJCX0NCj4+ICsJCS8qIGVsc2UsIHdlIGhhdmUgYSBtYXRjaGlu ZyByb3V0ZSAqLw0KPj4gKwkJZ290byBzZW5kX3BrdDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwkvKiBW YWxpZGF0ZSBzYV9pZHggKi8NCj4+ICsJaWYgKHNhX2lkeCA+PSBjdHgtPnNhX2N0eC0+bmJfc2Ep DQo+PiArCQlnb3RvIGRyb3BfcGt0X2FuZF9leGl0Ow0KPj4gKw0KPj4gKwkvKiBFbHNlIHRoZSBw YWNrZXQgaGFzIHRvIGJlIHByb3RlY3RlZCAqLw0KPj4gKw0KPj4gKwkvKiBHZXQgU0EgY3R4Ki8N Cj4+ICsJc2FfY3R4ID0gY3R4LT5zYV9jdHg7DQo+PiArDQo+PiArCS8qIEdldCBTQSAqLw0KPj4g KwlzYSA9ICYoc2FfY3R4LT5zYVtzYV9pZHhdKTsNCj4+ICsNCj4+ICsJLyogR2V0IElQc2VjIHNl c3Npb24gKi8NCj4+ICsJc2VzcyA9IGlwc2VjX2dldF9wcmltYXJ5X3Nlc3Npb24oc2EpOw0KPj4g Kw0KPj4gKwkvKiBBbGxvdyBvbmx5IGlubGluZSBwcm90b2NvbCBmb3Igbm93ICovDQo+PiArCWlm IChzZXNzLT50eXBlICE9IFJURV9TRUNVUklUWV9BQ1RJT05fVFlQRV9JTkxJTkVfUFJPVE9DT0wp IHsNCj4+ICsJCVJURV9MT0coRVJSLCBJUFNFQywgIlNBIHR5cGUgbm90IHN1cHBvcnRlZFxuIik7 DQo+PiArCQlnb3RvIGRyb3BfcGt0X2FuZF9leGl0Ow0KPj4gKwl9DQo+PiArDQo+PiArCWlmIChz ZXNzLT5zZWN1cml0eS5vbF9mbGFncyAmIFJURV9TRUNVUklUWV9UWF9PTE9BRF9ORUVEX01EQVRB KQ0KPj4gKwkJcGt0LT51c2VyZGF0YSA9IHNlc3MtPnNlY3VyaXR5LnNlczsNCj4+ICsNCj4+ICsJ LyogTWFyayB0aGUgcGFja2V0IGZvciBUeCBzZWN1cml0eSBvZmZsb2FkICovDQo+PiArCXBrdC0+ b2xfZmxhZ3MgfD0gUEtUX1RYX1NFQ19PRkZMT0FEOw0KPj4gKw0KPj4gKwkvKiBHZXQgdGhlIHBv cnQgdG8gd2hpY2ggdGhpcyBwa3QgbmVlZCB0byBiZSBzdWJtaXR0ZWQgKi8NCj4+ICsJcG9ydF9p ZCA9IHNhLT5wb3J0aWQ7DQo+PiArDQo+PiArc2VuZF9wa3Q6DQo+PiArCS8qIFVwZGF0ZSBtYWMg YWRkcmVzc2VzICovDQo+PiArCXVwZGF0ZV9tYWNfYWRkcnMocGt0LCBwb3J0X2lkKTsNCj4+ICsN Cj4+ICsJLyogVXBkYXRlIHRoZSBldmVudCB3aXRoIHRoZSBkZXN0IHBvcnQgKi8NCj4+ICsJaXBz ZWNfZXZlbnRfcHJlX2ZvcndhcmQocGt0LCBwb3J0X2lkKTsNCj4gDQo+IEhvdyBpcyBJUCBjaGVj a3N1bSBnZXR0aW5nIHVwZGF0ZWQgZm9yIHRoZSBwcm9jZXNzZWQgcGFja2V0Lg0KPiBJZiB0aGUg aGFyZHdhcmUgaXMgbm90IHVwZGF0aW5nIGl0LCBzaG91bGQgd2UgYWRkIGEgZmFsbGJhY2sgbWVj aGFuaXNtIGZvciBTVyBiYXNlZA0KPiBDaGVja3N1bSB1cGRhdGUuDQo+IA0KDQpbTHVrYXN6XSBJ biBjYXNlIG9mIG91dGJvdW5kIGlubGluZSBwcm90b2NvbCBjaGVja3N1bSBoYXMgdG8gYmUgY2Fs Y3VsYXRlZCBieSBIVyBhcyBmaW5hbCANCnBhY2tldCBpcyBmb3JtZWQgYnkgY3J5cHRvIGRldmlj ZS4gVGhlcmUgaXMgbm8gbmVlZCB0byBjYWxjdWxhdGUgaXQgaW4gU1cuIA0KDQo+PiArCXJldHVy biAxOw0KPiANCj4gSXQgd2lsbCBiZSBiZXR0ZXIgdG8gdXNlIHNvbWUgTUFDUk9TIHdoaWxlIHJl dHVybmluZw0KPiBMaWtlDQo+ICNkZWZpbmUgUEtUX0ZPUldBUkQgICAxDQo+ICNkZWZpbmUgUEtU X0RST1BQRUQgICAgIDANCj4gI2RlZmluZSBQS1RfUE9TVEVEICAgICAgIDIgIC8qbWF5IGJlIGZv ciBsb29rYXNpZGUgY2FzZXMgKi8NCj4gDQo+PiArDQo+PiArZHJvcF9wa3RfYW5kX2V4aXQ6DQo+ PiArCVJURV9MT0coRVJSLCBJUFNFQywgIk91dGJvdW5kIHBhY2tldCBkcm9wcGVkXG4iKTsNCj4+ ICsJcnRlX3BrdG1idWZfZnJlZShwa3QpOw0KPj4gKwlldi0+bWJ1ZiA9IE5VTEw7DQo+PiArCXJl dHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICAvKg0KPj4gICAqIEV2ZW50IG1vZGUgZXhwb3NlcyB2 YXJpb3VzIG9wZXJhdGluZyBtb2RlcyBkZXBlbmRpbmcgb24gdGhlDQo+PiAgICogY2FwYWJpbGl0 aWVzIG9mIHRoZSBldmVudCBkZXZpY2UgYW5kIHRoZSBvcGVyYXRpbmcgbW9kZQ0KPj4gQEAgLTY4 LDcgKzM5Miw3IEBAIHByZXBhcmVfb3V0X3Nlc3Npb25zX3RibChzdHJ1Y3Qgc2FfY3R4ICpzYV9v dXQsDQo+PiAgICovDQo+Pg0KPj4gIC8qIFdvcmtlcnMgcmVnaXN0ZXJlZCAqLw0KPj4gLSNkZWZp bmUgSVBTRUNfRVZFTlRNT0RFX1dPUktFUlMJCTENCj4+ICsjZGVmaW5lIElQU0VDX0VWRU5UTU9E RV9XT1JLRVJTCQkyDQo+Pg0KPj4gIC8qDQo+PiAgICogRXZlbnQgbW9kZSB3b3JrZXINCj4+IEBA IC0xNDYsNyArNDcwLDcgQEAgaXBzZWNfd3Jrcl9ub25fYnVyc3RfaW50X3BvcnRfZHJ2X21vZGUo c3RydWN0DQo+PiBlaF9ldmVudF9saW5rX2luZm8gKmxpbmtzLA0KPj4gIAkJCX0NCj4+DQo+PiAg CQkJLyogU2F2ZSBzZWN1cml0eSBzZXNzaW9uICovDQo+PiAtCQkJcGt0LT51ZGF0YTY0ID0gKHVp bnQ2NF90KSBzZXNzX3RibFtwb3J0X2lkXTsNCj4+ICsJCQlwa3QtPnVzZXJkYXRhID0gc2Vzc190 YmxbcG9ydF9pZF07DQo+Pg0KPj4gIAkJCS8qIE1hcmsgdGhlIHBhY2tldCBmb3IgVHggc2VjdXJp dHkgb2ZmbG9hZCAqLw0KPj4gIAkJCXBrdC0+b2xfZmxhZ3MgfD0gUEtUX1RYX1NFQ19PRkZMT0FE Ow0KPj4gQEAgLTE2NSw2ICs0ODksOTQgQEAgaXBzZWNfd3Jrcl9ub25fYnVyc3RfaW50X3BvcnRf ZHJ2X21vZGUoc3RydWN0DQo+PiBlaF9ldmVudF9saW5rX2luZm8gKmxpbmtzLA0KPj4gIAl9DQo+ PiAgfQ0KPj4NCj4+ICsvKg0KPj4gKyAqIEV2ZW50IG1vZGUgd29ya2VyDQo+PiArICogT3BlcmF0 aW5nIHBhcmFtZXRlcnMgOiBub24tYnVyc3QgLSBUeCBpbnRlcm5hbCBwb3J0IC0gYXBwIG1vZGUN Cj4+ICsgKi8NCj4+ICtzdGF0aWMgdm9pZA0KPj4gK2lwc2VjX3dya3Jfbm9uX2J1cnN0X2ludF9w b3J0X2FwcF9tb2RlKHN0cnVjdCBlaF9ldmVudF9saW5rX2luZm8gKmxpbmtzLA0KPj4gKwkJdWlu dDhfdCBuYl9saW5rcykNCj4+ICt7DQo+PiArCXN0cnVjdCBsY29yZV9jb25mX2V2X3R4X2ludF9w b3J0X3dya3IgbGNvbmY7DQo+PiArCXVuc2lnbmVkIGludCBuYl9yeCA9IDA7DQo+PiArCXN0cnVj dCBydGVfZXZlbnQgZXY7DQo+PiArCXVpbnQzMl90IGxjb3JlX2lkOw0KPj4gKwlpbnQzMl90IHNv Y2tldF9pZDsNCj4+ICsJaW50IHJldDsNCj4+ICsNCj4+ICsJLyogQ2hlY2sgaWYgd2UgaGF2ZSBs aW5rcyByZWdpc3RlcmVkIGZvciB0aGlzIGxjb3JlICovDQo+PiArCWlmIChuYl9saW5rcyA9PSAw KSB7DQo+PiArCQkvKiBObyBsaW5rcyByZWdpc3RlcmVkIC0gZXhpdCAqLw0KPj4gKwkJcmV0dXJu Ow0KPj4gKwl9DQo+PiArDQo+PiArCS8qIFdlIGhhdmUgdmFsaWQgbGlua3MgKi8NCj4+ICsNCj4+ ICsJLyogR2V0IGNvcmUgSUQgKi8NCj4+ICsJbGNvcmVfaWQgPSBydGVfbGNvcmVfaWQoKTsNCj4+ ICsNCj4+ICsJLyogR2V0IHNvY2tldCBJRCAqLw0KPj4gKwlzb2NrZXRfaWQgPSBydGVfbGNvcmVf dG9fc29ja2V0X2lkKGxjb3JlX2lkKTsNCj4+ICsNCj4+ICsJLyogU2F2ZSByb3V0aW5nIHRhYmxl ICovDQo+PiArCWxjb25mLnJ0LnJ0NF9jdHggPSBzb2NrZXRfY3R4W3NvY2tldF9pZF0ucnRfaXA0 Ow0KPj4gKwlsY29uZi5ydC5ydDZfY3R4ID0gc29ja2V0X2N0eFtzb2NrZXRfaWRdLnJ0X2lwNjsN Cj4+ICsJbGNvbmYuaW5ib3VuZC5zcDRfY3R4ID0gc29ja2V0X2N0eFtzb2NrZXRfaWRdLnNwX2lw NF9pbjsNCj4+ICsJbGNvbmYuaW5ib3VuZC5zcDZfY3R4ID0gc29ja2V0X2N0eFtzb2NrZXRfaWRd LnNwX2lwNl9pbjsNCj4+ICsJbGNvbmYuaW5ib3VuZC5zYV9jdHggPSBzb2NrZXRfY3R4W3NvY2tl dF9pZF0uc2FfaW47DQo+PiArCWxjb25mLmluYm91bmQuc2Vzc2lvbl9wb29sID0gc29ja2V0X2N0 eFtzb2NrZXRfaWRdLnNlc3Npb25fcG9vbDsNCj4gDQo+IFNlc3Npb25fcHJpdl9wb29sIHNob3Vs ZCBhbHNvIGJlIGFkZGVkIGZvciBib3RoIGluYm91bmQgYW5kIG91dGJvdW5kDQo+IA0KDQpbTHVr YXN6XSBJIHdpbGwgYWRkIGl0IGluIFY1Lg0KDQo+PiArCWxjb25mLm91dGJvdW5kLnNwNF9jdHgg PSBzb2NrZXRfY3R4W3NvY2tldF9pZF0uc3BfaXA0X291dDsNCj4+ICsJbGNvbmYub3V0Ym91bmQu c3A2X2N0eCA9IHNvY2tldF9jdHhbc29ja2V0X2lkXS5zcF9pcDZfb3V0Ow0KPj4gKwlsY29uZi5v dXRib3VuZC5zYV9jdHggPSBzb2NrZXRfY3R4W3NvY2tldF9pZF0uc2Ffb3V0Ow0KPj4gKwlsY29u Zi5vdXRib3VuZC5zZXNzaW9uX3Bvb2wgPSBzb2NrZXRfY3R4W3NvY2tldF9pZF0uc2Vzc2lvbl9w b29sOw0KPj4gKw0KPj4gKwlSVEVfTE9HKElORk8sIElQU0VDLA0KPj4gKwkJIkxhdW5jaGluZyBl dmVudCBtb2RlIHdvcmtlciAobm9uLWJ1cnN0IC0gVHggaW50ZXJuYWwgcG9ydCAtICINCj4+ICsJ CSJhcHAgbW9kZSkgb24gbGNvcmUgJWRcbiIsIGxjb3JlX2lkKTsNCj4+ICsNCj4+ICsJLyogQ2hl Y2sgaWYgaXQncyBzaW5nbGUgbGluayAqLw0KPj4gKwlpZiAobmJfbGlua3MgIT0gMSkgew0KPj4g KwkJUlRFX0xPRyhJTkZPLCBJUFNFQywNCj4+ICsJCQkiTXVsdGlwbGUgbGlua3Mgbm90IHN1cHBv cnRlZC4gVXNpbmcgZmlyc3QgbGlua1xuIik7DQo+PiArCX0NCj4+ICsNCj4+ICsJUlRFX0xPRyhJ TkZPLCBJUFNFQywgIiAtLSBsY29yZWlkPSV1IGV2ZW50X3BvcnRfaWQ9JXVcbiIsIGxjb3JlX2lk LA0KPj4gKwkJbGlua3NbMF0uZXZlbnRfcG9ydF9pZCk7DQo+PiArDQo+PiArCXdoaWxlICghZm9y Y2VfcXVpdCkgew0KPj4gKwkJLyogUmVhZCBwYWNrZXQgZnJvbSBldmVudCBxdWV1ZXMgKi8NCj4+ ICsJCW5iX3J4ID0gcnRlX2V2ZW50X2RlcXVldWVfYnVyc3QobGlua3NbMF0uZXZlbnRkZXZfaWQs DQo+PiArCQkJCWxpbmtzWzBdLmV2ZW50X3BvcnRfaWQsDQo+PiArCQkJCSZldiwgICAgIC8qIGV2 ZW50cyAqLw0KPj4gKwkJCQkxLCAgICAgICAvKiBuYl9ldmVudHMgKi8NCj4+ICsJCQkJMCAgICAg ICAgLyogdGltZW91dF90aWNrcyAqLyk7DQo+PiArDQo+PiArCQlpZiAobmJfcnggPT0gMCkNCj4+ ICsJCQljb250aW51ZTsNCj4+ICsNCj4gDQo+IEV2ZW50IHR5cGUgc2hvdWxkIGJlIGNoZWNrZWQg aGVyZSBiZWZvcmUgZGVyZWZlcmVuY2luZyBpdC4NCj4gDQoNCltMdWthc3pdIEkgd2lsbCBhZGQg ZXZlbnQgdHlwZSBjaGVjayBpbiBWNS4NCg0KPj4gKwkJaWYgKGlzX3VucHJvdGVjdGVkX3BvcnQo ZXYubWJ1Zi0+cG9ydCkpDQo+PiArCQkJcmV0ID0gcHJvY2Vzc19pcHNlY19ldl9pbmJvdW5kKCZs Y29uZi5pbmJvdW5kLA0KPj4gKwkJCQkJCQkmbGNvbmYucnQsICZldik7DQo+PiArCQllbHNlDQo+ PiArCQkJcmV0ID0gcHJvY2Vzc19pcHNlY19ldl9vdXRib3VuZCgmbGNvbmYub3V0Ym91bmQsDQo+ PiArCQkJCQkJCSZsY29uZi5ydCwgJmV2KTsNCj4+ICsJCWlmIChyZXQgIT0gMSkNCj4+ICsJCQkv KiBUaGUgcGt0IGhhcyBiZWVuIGRyb3BwZWQgKi8NCj4+ICsJCQljb250aW51ZTsNCj4+ICsNCj4+ ICsJCS8qDQo+PiArCQkgKiBTaW5jZSB0eCBpbnRlcm5hbCBwb3J0IGlzIGF2YWlsYWJsZSwgZXZl bnRzIGNhbiBiZQ0KPj4gKwkJICogZGlyZWN0bHkgZW5xdWV1ZWQgdG8gdGhlIGFkYXB0ZXIgYW5k IGl0IHdvdWxkIGJlDQo+PiArCQkgKiBpbnRlcm5hbGx5IHN1Ym1pdHRlZCB0byB0aGUgZXRoIGRl dmljZS4NCj4+ICsJCSAqLw0KPj4gKwkJcnRlX2V2ZW50X2V0aF90eF9hZGFwdGVyX2VucXVldWUo bGlua3NbMF0uZXZlbnRkZXZfaWQsDQo+PiArCQkJCWxpbmtzWzBdLmV2ZW50X3BvcnRfaWQsDQo+ PiArCQkJCSZldiwJLyogZXZlbnRzICovDQo+PiArCQkJCTEsCS8qIG5iX2V2ZW50cyAqLw0KPj4g KwkJCQkwCS8qIGZsYWdzICovKTsNCj4+ICsJfQ0KPj4gK30NCj4+ICsNCj4+ICBzdGF0aWMgdWlu dDhfdA0KPj4gIGlwc2VjX2V2ZW50bW9kZV9wb3B1bGF0ZV93cmtyX3BhcmFtcyhzdHJ1Y3QgZWhf YXBwX3dvcmtlcl9wYXJhbXMNCj4+ICp3cmtycykNCj4+ICB7DQo+PiBAQCAtMTgwLDYgKzU5Miwx NCBAQCBpcHNlY19ldmVudG1vZGVfcG9wdWxhdGVfd3Jrcl9wYXJhbXMoc3RydWN0DQo+PiBlaF9h cHBfd29ya2VyX3BhcmFtcyAqd3JrcnMpDQo+PiAgCXdya3ItPmNhcC5pcHNlY19tb2RlID0gRUhf SVBTRUNfTU9ERV9UWVBFX0RSSVZFUjsNCj4+ICAJd3Jrci0+d29ya2VyX3RocmVhZCA9IGlwc2Vj X3dya3Jfbm9uX2J1cnN0X2ludF9wb3J0X2Rydl9tb2RlOw0KPj4gIAl3cmtyKys7DQo+PiArCW5i X3dya3JfcGFyYW0rKzsNCj4+ICsNCj4+ICsJLyogTm9uLWJ1cnN0IC0gVHggaW50ZXJuYWwgcG9y dCAtIGFwcCBtb2RlICovDQo+PiArCXdya3ItPmNhcC5idXJzdCA9IEVIX1JYX1RZUEVfTk9OX0JV UlNUOw0KPj4gKwl3cmtyLT5jYXAudHhfaW50ZXJuYWxfcG9ydCA9IEVIX1RYX1RZUEVfSU5URVJO QUxfUE9SVDsNCj4+ICsJd3Jrci0+Y2FwLmlwc2VjX21vZGUgPSBFSF9JUFNFQ19NT0RFX1RZUEVf QVBQOw0KPj4gKwl3cmtyLT53b3JrZXJfdGhyZWFkID0gaXBzZWNfd3Jrcl9ub25fYnVyc3RfaW50 X3BvcnRfYXBwX21vZGU7DQo+PiArCW5iX3dya3JfcGFyYW0rKzsNCj4+DQo+PiAgCXJldHVybiBu Yl93cmtyX3BhcmFtOw0KPj4gIH0NCj4+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9pcHNlYy1zZWNn dy9pcHNlY193b3JrZXIuaCBiL2V4YW1wbGVzL2lwc2VjLQ0KPj4gc2VjZ3cvaXBzZWNfd29ya2Vy LmgNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwLi44N2I0ZjIyDQo+ PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9leGFtcGxlcy9pcHNlYy1zZWNndy9pcHNlY193b3Jr ZXIuaA0KPj4gQEAgLTAsMCArMSwzNSBAQA0KPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMy1DbGF1c2UNCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjAgTWFydmVsbCBJbnRlcm5h dGlvbmFsIEx0ZC4NCj4+ICsgKi8NCj4+ICsjaWZuZGVmIF9JUFNFQ19XT1JLRVJfSF8NCj4+ICsj ZGVmaW5lIF9JUFNFQ19XT1JLRVJfSF8NCj4+ICsNCj4+ICsjaW5jbHVkZSAiaXBzZWMuaCINCj4+ ICsNCj4+ICtlbnVtIHBrdF90eXBlIHsNCj4+ICsJUEtUX1RZUEVfUExBSU5fSVBWNCA9IDEsDQo+ PiArCVBLVF9UWVBFX0lQU0VDX0lQVjQsDQo+PiArCVBLVF9UWVBFX1BMQUlOX0lQVjYsDQo+PiAr CVBLVF9UWVBFX0lQU0VDX0lQVjYsDQo+PiArCVBLVF9UWVBFX0lOVkFMSUQNCj4+ICt9Ow0KPj4g Kw0KPj4gK3N0cnVjdCByb3V0ZV90YWJsZSB7DQo+PiArCXN0cnVjdCBydF9jdHggKnJ0NF9jdHg7 DQo+PiArCXN0cnVjdCBydF9jdHggKnJ0Nl9jdHg7DQo+PiArfTsNCj4+ICsNCj4+ICsvKg0KPj4g KyAqIENvbmYgcmVxdWlyZWQgYnkgZXZlbnQgbW9kZSB3b3JrZXIgd2l0aCB0eCBpbnRlcm5hbCBw b3J0DQo+PiArICovDQo+PiArc3RydWN0IGxjb3JlX2NvbmZfZXZfdHhfaW50X3BvcnRfd3JrciB7 DQo+PiArCXN0cnVjdCBpcHNlY19jdHggaW5ib3VuZDsNCj4+ICsJc3RydWN0IGlwc2VjX2N0eCBv dXRib3VuZDsNCj4+ICsJc3RydWN0IHJvdXRlX3RhYmxlIHJ0Ow0KPj4gK30gX19ydGVfY2FjaGVf YWxpZ25lZDsNCj4+ICsNCj4+ICt2b2lkIGlwc2VjX3BvbGxfbW9kZV93b3JrZXIodm9pZCk7DQo+ PiArDQo+PiAraW50IGlwc2VjX2xhdW5jaF9vbmVfbGNvcmUodm9pZCAqYXJncyk7DQo+PiArDQo+ PiArI2VuZGlmIC8qIF9JUFNFQ19XT1JLRVJfSF8gKi8NCj4+IC0tDQo+PiAyLjcuNA0KPiA=