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 A24E2A04F3; Thu, 9 Jan 2020 07:17:24 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A49641DB7E; Thu, 9 Jan 2020 07:17:23 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 2F2D61DB7C for ; Thu, 9 Jan 2020 07:17:22 +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 0096DLrY005504; Wed, 8 Jan 2020 22:17:21 -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=IBIxACaH4v4Z1btmhLQyjrxIoSVP0oE2Uh46IPwhLdw=; b=KXsT8uNKMVXn3jg+F0nruRuR5QsMHgm/PvWYgbtdHLMMfMncTmu9US5SdH7BFFF3W0kQ q+BVUpCpQ/eh9QPoxmfUiB1MjKG7RtQv2xnWOqPgR/DlPssMhk/2iQWBe/CkocEH4nJ7 aHMOupNwSnY4nPLYynPNZoiNbgCIF1j7Onb+wzL2fIPX/TbdTaqGN4WsvJUkGIA6cymn bxPhRQnXeKv4nY3WpUZeuGhkaB2aUpIJ4A08bvLcI2catPVngxQ1fzPm1UvJ809jR7ui PQ5TqKbAJhxtkVHh2YxTx5nlfcEG/JJt4LpeMTS3FrKoAQvVU0QnS2vjnLfB1FCvJKIq iQ== Received: from sc-exch02.marvell.com ([199.233.58.182]) by mx0b-0016f401.pphosted.com with ESMTP id 2xdu320r9u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 08 Jan 2020 22:17:21 -0800 Received: from SC-EXCH04.marvell.com (10.93.176.84) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 8 Jan 2020 22:17:19 -0800 Received: from NAM04-SN1-obe.outbound.protection.outlook.com (104.47.44.52) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 8 Jan 2020 22:17:19 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T1Ji/U+hGnDrg7CWdmEprJEd52vIv9Khgb2D3kGEj+R+Bp1oS64Os++213ZaJKGKhg/AJzTZPRF2vPIiBELZ/qLcbC6tmJcv7dizQUnYL4O7AMSW+nM2pdvv7T+e5/Qh+qsB6MS6+s1BiGmRN9Gb4GiaCivtQqKXzmY8hAnbdsxrIr8s5XHP6tqsfpSMV0TLuv7k3XlGiLu2sWQycExVxPJLkgle/oQvHJTfxZcn1ZkYiyr9VvqJ9KHmp7Q1yWkW1fbW8YdlBThnqNz5XTChQEXEg3VS1nY3ihJqRBj0LarSMkEyUS2HjdsCOri/bzDc+F/YoQnpi/kJKTtSjn4KPQ== 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=IBIxACaH4v4Z1btmhLQyjrxIoSVP0oE2Uh46IPwhLdw=; b=lT9F0DB4FzMMyIhkLEntllXUfVOziJ0yp13xsQ6DCK0HjURgPwp0X0t1du2cRDhWp6Yv4VDgwXET5kqSZtrnISwRXDGk0TjgpkeQvnVYCUEKad/e8L7khCtjBJjQ0FiNgCwpEAqYmNdsBJe2BCx92AUdtThEVlu18UzXKbt3nrSdqOS/EDYLHcOdI4uy1S9FPTtEkffge+/Ekvc++Tajbykp5yd2XNIKSziwHFwoCKiutRlt3cwxNoSVn6jh/iCYKgcbR7f8Af6h4GKkzLAFDxVCxnFHMiy9FaUB14TMbrMsxDE1EuM08Sz94j4N/iLIpAt4X5m+1bO8sNo0ovTIAA== 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=IBIxACaH4v4Z1btmhLQyjrxIoSVP0oE2Uh46IPwhLdw=; b=u58pUpju5sPREgd2VY5mwmwAHk6yGNjDiVE0gh4Sz8Goe4XMSg3wyKh+i0olXvwzSP1Pk/XX/qxwbQFXEwAy0BiNLzpiDyGPuUQNuFX8Mlb+HRXq4NlJigfgltncqrb8vc6kZK5nsnz4ewtMgFjAQOZf1pQKms77gZSK3q4lg80= Received: from MN2PR18MB2877.namprd18.prod.outlook.com (20.179.20.218) by MN2PR18MB2942.namprd18.prod.outlook.com (20.179.21.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2602.10; Thu, 9 Jan 2020 06:17:16 +0000 Received: from MN2PR18MB2877.namprd18.prod.outlook.com ([fe80::5db5:d179:8a01:4636]) by MN2PR18MB2877.namprd18.prod.outlook.com ([fe80::5db5:d179:8a01:4636%7]) with mapi id 15.20.2623.008; Thu, 9 Jan 2020 06:17:16 +0000 From: Anoob Joseph To: "Ananyev, Konstantin" , Akhil Goyal , "Nicolau, Radu" , "Thomas Monjalon" CC: Lukas Bartosik , Jerin Jacob Kollanukkaran , Narayana Prasad Raju Athreya , Ankur Dwivedi , Archana Muniganti , Tejasree Kondoj , "Vamsi Krishna Attunuru" , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH 09/14] examples/ipsec-secgw: add eventmode to ipsec-secgw Thread-Index: AQHVxKhknB+CZ+s5mUSMdvuns3vQq6fh3WWQ Date: Thu, 9 Jan 2020 06:17:15 +0000 Message-ID: References: <1575808249-31135-1-git-send-email-anoobj@marvell.com> <1575808249-31135-10-git-send-email-anoobj@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: [14.140.231.66] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: be588755-4cc4-41b2-40f9-08d794cb9306 x-ms-traffictypediagnostic: MN2PR18MB2942: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1360; x-forefront-prvs: 02778BF158 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(39850400004)(376002)(366004)(136003)(396003)(199004)(189003)(13464003)(86362001)(6506007)(186003)(53546011)(2906002)(71200400001)(26005)(55016002)(9686003)(52536014)(316002)(55236004)(478600001)(54906003)(81166006)(81156014)(76116006)(110136005)(8936002)(64756008)(33656002)(66946007)(30864003)(4326008)(7696005)(66556008)(5660300002)(66446008)(66476007)(579004)(559001); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB2942; 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: iqRiDi9vjXqWQognJfjzf4Nh5ZWgdd8Ybq5Yvbj0rois2XgC74bMgUMSEnThpRbTSEg3HHP0shsACEzIqbHA1uxuqlmOxzYGTmVu+PZJjXjRx+HX/GCGv6cX+T1tD5FckkXTslcZa5qM1r/IiSPoZwpmumliLou8XCsmAc3s5kz7ArEn4Y/1a3p7aK/M4WJx5RiCQ8Lm8/rvHk3ZBtxbRanRgZD06Yz89gQkWdQUU5Xmpey+rL0Z5r1s+M/9BsCrEZEQ1oM7ijj9Jvg44oKMiBO7eL2G2y5wxZwjvH+28tUeREQjM2Z4rXqvwllxE+DXn1dCVzGQxBvELRyiZFJh0cKeQO2h/1EamM7AMyfUuDyYJFMy9fmJT6xDQYp2atvPB3VNPCUooqQsOSY9tuj52aSXgImH/fTz9itnVpw3iam6h9/xsPPW0e/StdHHhI4UjAwiFrHUnoTzfyR6AbhGfbhd3eKVmCNAJ2CImFKRKfBcfp6LONKj/DBVKTNt+nJB Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: be588755-4cc4-41b2-40f9-08d794cb9306 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jan 2020 06:17:16.0108 (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: zvuoIt6AwOWoo3sNU2wG9sczGCpVsadP+xD1M9J/NOS2JRJo+JCJ9HjX5eFAZdhMoNul+z4ZEdC2idaJYvuCfQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR18MB2942 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.572 definitions=2020-01-09_01:2020-01-08, 2020-01-09 signatures=0 Subject: Re: [dpdk-dev] [PATCH 09/14] examples/ipsec-secgw: add eventmode to ipsec-secgw 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" SGkgS29uc3RhbnRpbiwNCg0KUGxlYXNlIHNlZSBpbmxpbmUuDQoNClRoYW5rcywNCkFub29iDQoN Cj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2IDxkZXYtYm91bmNlc0Bk cGRrLm9yZz4gT24gQmVoYWxmIE9mIEFuYW55ZXYsIEtvbnN0YW50aW4NCj4gU2VudDogTW9uZGF5 LCBKYW51YXJ5IDYsIDIwMjAgOToxNSBQTQ0KPiBUbzogQW5vb2IgSm9zZXBoIDxhbm9vYmpAbWFy dmVsbC5jb20+OyBBa2hpbCBHb3lhbA0KPiA8YWtoaWwuZ295YWxAbnhwLmNvbT47IE5pY29sYXUs IFJhZHUgPHJhZHUubmljb2xhdUBpbnRlbC5jb20+OyBUaG9tYXMNCj4gTW9uamFsb24gPHRob21h c0Btb25qYWxvbi5uZXQ+DQo+IENjOiBMdWthcyBCYXJ0b3NpayA8bGJhcnRvc2lrQG1hcnZlbGwu Y29tPjsgSmVyaW4gSmFjb2IgS29sbGFudWtrYXJhbg0KPiA8amVyaW5qQG1hcnZlbGwuY29tPjsg TmFyYXlhbmEgUHJhc2FkIFJhanUgQXRocmV5YQ0KPiA8cGF0aHJleWFAbWFydmVsbC5jb20+OyBB bmt1ciBEd2l2ZWRpIDxhZHdpdmVkaUBtYXJ2ZWxsLmNvbT47DQo+IEFyY2hhbmEgTXVuaWdhbnRp IDxtYXJjaGFuYUBtYXJ2ZWxsLmNvbT47IFRlamFzcmVlIEtvbmRvag0KPiA8a3RlamFzcmVlQG1h cnZlbGwuY29tPjsgVmFtc2kgS3Jpc2huYSBBdHR1bnVydQ0KPiA8dmF0dHVudXJ1QG1hcnZlbGwu Y29tPjsgZGV2QGRwZGsub3JnDQo+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCAwOS8x NF0gZXhhbXBsZXMvaXBzZWMtc2VjZ3c6IGFkZA0KPiBldmVudG1vZGUgdG8gaXBzZWMtc2VjZ3cN Cj4gDQo+IA0KPiA+ID4gPiBBZGQgZXZlbnRtb2RlIHN1cHBvcnQgdG8gaXBzZWMtc2VjZ3cuIFRo aXMgdXNlcyBldmVudCBoZWxwZXIgdG8NCj4gPiA+ID4gc2V0dXAgYW5kIHVzZSB0aGUgZXZlbnRt b2RlIGNhcGFiaWxpdGllcy4gQWRkIGRyaXZlciBpbmJvdW5kIHdvcmtlci4NCj4gPiA+ID4NCj4g PiA+ID4gRXhhbXBsZSBjb21tYW5kOg0KPiA+ID4gPiAuL2lwc2VjLXNlY2d3IC1jIDB4MSAtdyAw MDAyOjAyOjAwLjAsaXBzZWNfaW5fbWF4X3NwaT0xMDAgLXcNCj4gPiA+ID4gMDAwMjowNzowMC4w ICAtdyAwMDAyOjBlOjAwLjAgLXcgMDAwMjoxMDowMC4xIC0tIC1QIC1wIDB4MyAtdSAweDENCj4g PiA+ID4gLS1jb25maWcgIigwLDAsMCksKDEsMCwwKSIgLWYgYS1hZXMtZ2NtLW1zYS5jZmcgLS10 cmFuc2Zlci1tb2RlIDENCj4gPiA+ID4gLS1zY2hlZHVsZS10eXBlIDIgLS1wcm9jZXNzLW1vZGUg ZHJ2IC0tcHJvY2Vzcy1kaXIgaW4NCj4gPiA+ID4NCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogQW5v b2IgSm9zZXBoIDxhbm9vYmpAbWFydmVsbC5jb20+DQo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEx1 a2FzeiBCYXJ0b3NpayA8bGJhcnRvc2lrQG1hcnZlbGwuY29tPg0KPiA+ID4gPiAtLS0NCj4gPiA+ ID4gIGV4YW1wbGVzL2lwc2VjLXNlY2d3L01ha2VmaWxlICAgICAgIHwgICAxICsNCj4gPiA+ID4g IGV4YW1wbGVzL2lwc2VjLXNlY2d3L2V2ZW50X2hlbHBlci5jIHwgICAzICsNCj4gPiA+ID4gIGV4 YW1wbGVzL2lwc2VjLXNlY2d3L2V2ZW50X2hlbHBlci5oIHwgIDI2ICsrKw0KPiA+ID4gPiBleGFt cGxlcy9pcHNlYy1zZWNndy9pcHNlYy1zZWNndy5jICB8IDM0NA0KPiA+ID4gKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystDQo+ID4gPiA+ICBleGFtcGxlcy9pcHNlYy1zZWNndy9p cHNlYy5oICAgICAgICB8ICAgNyArDQo+ID4gPiA+ICBleGFtcGxlcy9pcHNlYy1zZWNndy9pcHNl Y193b3JrZXIuYyB8IDE4MCArKysrKysrKysrKysrKysrKysrDQo+ID4gPiA+ICBleGFtcGxlcy9p cHNlYy1zZWNndy9tZXNvbi5idWlsZCAgICB8ICAgMiArLQ0KPiA+ID4gPiAgNyBmaWxlcyBjaGFu Z2VkLCA1NTUgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkgIGNyZWF0ZSBtb2RlDQo+ID4g PiA+IDEwMDY0NCBleGFtcGxlcy9pcHNlYy1zZWNndy9pcHNlY193b3JrZXIuYw0KPiA+ID4gPg0K PiA+ID4gPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvTWFrZWZpbGUNCj4gPiA+ ID4gYi9leGFtcGxlcy9pcHNlYy1zZWNndy9NYWtlZmlsZSBpbmRleCAwOWUzYzVhLi5mNmZkOTRj IDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9leGFtcGxlcy9pcHNlYy1zZWNndy9NYWtlZmlsZQ0KPiA+ ID4gPiArKysgYi9leGFtcGxlcy9pcHNlYy1zZWNndy9NYWtlZmlsZQ0KPiA+ID4gPiBAQCAtMTUs NiArMTUsNyBAQCBTUkNTLXkgKz0gc2EuYw0KPiA+ID4gPiAgU1JDUy15ICs9IHJ0LmMNCj4gPiA+ ID4gIFNSQ1MteSArPSBpcHNlY19wcm9jZXNzLmMNCj4gPiA+ID4gIFNSQ1MteSArPSBpcHNlYy1z ZWNndy5jDQo+ID4gPiA+ICtTUkNTLXkgKz0gaXBzZWNfd29ya2VyLmMNCj4gPiA+ID4gIFNSQ1Mt eSArPSBldmVudF9oZWxwZXIuYw0KPiA+ID4gPg0KPiA+ID4gPiAgQ0ZMQUdTICs9IC1nZHdhcmYt Mg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvZXZlbnRfaGVscGVy LmMNCj4gPiA+ID4gYi9leGFtcGxlcy9pcHNlYy1zZWNndy9ldmVudF9oZWxwZXIuYw0KPiA+ID4g PiBpbmRleCA2NTQ5ODc1Li40NGY5OTdkIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9leGFtcGxlcy9p cHNlYy1zZWNndy9ldmVudF9oZWxwZXIuYw0KPiA+ID4gPiArKysgYi9leGFtcGxlcy9pcHNlYy1z ZWNndy9ldmVudF9oZWxwZXIuYw0KPiA+ID4gPiBAQCAtOTg0LDYgKzk4NCw5IEBAIGVoX2ZpbmRf d29ya2VyKHVpbnQzMl90IGxjb3JlX2lkLCBzdHJ1Y3QNCj4gPiA+ID4gZWhfY29uZg0KPiA+ID4g KmNvbmYsDQo+ID4gPiA+ICAJZWxzZQ0KPiA+ID4gPiAgCQljdXJyX2NvbmYuY2FwLmJ1cnN0ID0g RUhfUlhfVFlQRV9OT05fQlVSU1Q7DQo+ID4gPiA+DQo+ID4gPiA+ICsJY3Vycl9jb25mLmNhcC5p cHNlY19tb2RlID0gY29uZi0+aXBzZWNfbW9kZTsNCj4gPiA+ID4gKwljdXJyX2NvbmYuY2FwLmlw c2VjX2RpciA9IGNvbmYtPmlwc2VjX2RpcjsNCj4gPiA+ID4gKw0KPiA+ID4gPiAgCS8qIFBhcnNl IHRoZSBwYXNzZWQgbGlzdCBhbmQgc2VlIGlmIHdlIGhhdmUgbWF0Y2hpbmcNCj4gPiA+ID4gY2Fw YWJpbGl0aWVzICovDQo+ID4gPiA+DQo+ID4gPiA+ICAJLyogSW5pdGlhbGl6ZSB0aGUgcG9pbnRl ciB1c2VkIHRvIHRyYXZlcnNlIHRoZSBsaXN0ICovIGRpZmYNCj4gPiA+ID4gLS1naXQgYS9leGFt cGxlcy9pcHNlYy1zZWNndy9ldmVudF9oZWxwZXIuaA0KPiA+ID4gPiBiL2V4YW1wbGVzL2lwc2Vj LXNlY2d3L2V2ZW50X2hlbHBlci5oDQo+ID4gPiA+IGluZGV4IDI4OTVkZmEuLjA3ODQ5YjAgMTAw NjQ0DQo+ID4gPiA+IC0tLSBhL2V4YW1wbGVzL2lwc2VjLXNlY2d3L2V2ZW50X2hlbHBlci5oDQo+ ID4gPiA+ICsrKyBiL2V4YW1wbGVzL2lwc2VjLXNlY2d3L2V2ZW50X2hlbHBlci5oDQo+ID4gPiA+ IEBAIC03NCw2ICs3NCwyMiBAQCBlbnVtIGVoX3R4X3R5cGVzIHsNCj4gPiA+ID4gIAlFSF9UWF9U WVBFX05PX0lOVEVSTkFMX1BPUlQNCj4gPiA+ID4gIH07DQo+ID4gPiA+DQo+ID4gPiA+ICsvKioN Cj4gPiA+ID4gKyAqIEV2ZW50IG1vZGUgaXBzZWMgbW9kZSB0eXBlcw0KPiA+ID4gPiArICovDQo+ ID4gPiA+ICtlbnVtIGVoX2lwc2VjX21vZGVfdHlwZXMgew0KPiA+ID4gPiArCUVIX0lQU0VDX01P REVfVFlQRV9BUFAgPSAwLA0KPiA+ID4gPiArCUVIX0lQU0VDX01PREVfVFlQRV9EUklWRVINCj4g PiA+ID4gK307DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICogRXZlbnQgbW9k ZSBpcHNlYyBkaXJlY3Rpb24gdHlwZXMgICovIGVudW0gZWhfaXBzZWNfZGlyX3R5cGVzIHsNCj4g PiA+ID4gKwlFSF9JUFNFQ19ESVJfVFlQRV9PVVRCT1VORCA9IDAsDQo+ID4gPiA+ICsJRUhfSVBT RUNfRElSX1RZUEVfSU5CT1VORCwNCj4gPiA+ID4gK307DQo+ID4gPiA+ICsNCj4gPiA+ID4gIC8q IEV2ZW50IGRldiBwYXJhbXMgKi8NCj4gPiA+ID4gIHN0cnVjdCBldmVudGRldl9wYXJhbXMgew0K PiA+ID4gPiAgCXVpbnQ4X3QgZXZlbnRkZXZfaWQ7DQo+ID4gPiA+IEBAIC0xODMsNiArMTk5LDEy IEBAIHN0cnVjdCBlaF9jb25mIHsNCj4gPiA+ID4gIAkJICovDQo+ID4gPiA+ICAJdm9pZCAqbW9k ZV9wYXJhbXM7DQo+ID4gPiA+ICAJCS8qKjwgTW9kZSBzcGVjaWZpYyBwYXJhbWV0ZXJzICovDQo+ ID4gPiA+ICsNCj4gPiA+ID4gKwkJLyoqIEFwcGxpY2F0aW9uIHNwZWNpZmljIHBhcmFtcyAqLw0K PiA+ID4gPiArCWVudW0gZWhfaXBzZWNfbW9kZV90eXBlcyBpcHNlY19tb2RlOw0KPiA+ID4gPiAr CQkvKio8IE1vZGUgb2YgaXBzZWMgcnVuICovDQo+ID4gPiA+ICsJZW51bSBlaF9pcHNlY19kaXJf dHlwZXMgaXBzZWNfZGlyOw0KPiA+ID4gPiArCQkvKio8IERpcmVjdGlvbiBvZiBpcHNlYyBwcm9j ZXNzaW5nICovDQo+ID4gPiA+ICB9Ow0KPiA+ID4gPg0KPiA+ID4gPiAgLyogV29ya2VycyByZWdp c3RlcmVkIGJ5IHRoZSBhcHBsaWNhdGlvbiAqLyBAQCAtMTk0LDYgKzIxNiwxMCBAQA0KPiA+ID4g PiBzdHJ1Y3QgZWhfYXBwX3dvcmtlcl9wYXJhbXMgew0KPiA+ID4gPiAgCQkJLyoqPCBTcGVjaWZ5 IHN0YXR1cyBvZiByeCB0eXBlIGJ1cnN0ICovDQo+ID4gPiA+ICAJCQl1aW50NjRfdCB0eF9pbnRl cm5hbF9wb3J0IDogMTsNCj4gPiA+ID4gIAkJCS8qKjwgU3BlY2lmeSB3aGV0aGVyIHR4IGludGVy bmFsIHBvcnQgaXMgYXZhaWxhYmxlICovDQo+ID4gPiA+ICsJCQl1aW50NjRfdCBpcHNlY19tb2Rl IDogMTsNCj4gPiA+ID4gKwkJCS8qKjwgU3BlY2lmeSBpcHNlYyBwcm9jZXNzaW5nIGxldmVsICov DQo+ID4gPiA+ICsJCQl1aW50NjRfdCBpcHNlY19kaXIgOiAxOw0KPiA+ID4gPiArCQkJLyoqPCBT cGVjaWZ5IGRpcmVjdGlvbiBvZiBpcHNlYyAqLw0KPiA+ID4gPiAgCQl9Ow0KPiA+ID4gPiAgCQl1 aW50NjRfdCB1NjQ7DQo+ID4gPiA+ICAJfSBjYXA7DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9leGFt cGxlcy9pcHNlYy1zZWNndy9pcHNlYy1zZWNndy5jDQo+ID4gPiA+IGIvZXhhbXBsZXMvaXBzZWMt c2VjZ3cvaXBzZWMtc2VjZ3cuYw0KPiA+ID4gPiBpbmRleCA3NTA2OTIyLi5jNWQ5NWI5IDEwMDY0 NA0KPiA+ID4gPiAtLS0gYS9leGFtcGxlcy9pcHNlYy1zZWNndy9pcHNlYy1zZWNndy5jDQo+ID4g PiA+ICsrKyBiL2V4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2VjLXNlY2d3LmMNCj4gPiA+ID4gQEAg LTIsNiArMiw3IEBADQo+ID4gPiA+ICAgKiBDb3B5cmlnaHQoYykgMjAxNiBJbnRlbCBDb3Jwb3Jh dGlvbg0KPiA+ID4gPiAgICovDQo+ID4gPiA+DQo+ID4gPiA+ICsjaW5jbHVkZSA8c3RkYm9vbC5o Pg0KPiA+ID4gPiAgI2luY2x1ZGUgPHN0ZGlvLmg+DQo+ID4gPiA+ICAjaW5jbHVkZSA8c3RkbGli Lmg+DQo+ID4gPiA+ICAjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ID4gPiA+IEBAIC0xNCw2ICsxNSw3 IEBADQo+ID4gPiA+ICAjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+DQo+ID4gPiA+ICAjaW5jbHVkZSA8 c3RkYXJnLmg+DQo+ID4gPiA+ICAjaW5jbHVkZSA8ZXJybm8uaD4NCj4gPiA+ID4gKyNpbmNsdWRl IDxzaWduYWwuaD4NCj4gPiA+ID4gICNpbmNsdWRlIDxnZXRvcHQuaD4NCj4gPiA+ID4NCj4gPiA+ ID4gICNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+ID4gPiA+IEBAIC00MSwxMiArNDMsMTcgQEAN Cj4gPiA+ID4gICNpbmNsdWRlIDxydGVfamhhc2guaD4NCj4gPiA+ID4gICNpbmNsdWRlIDxydGVf Y3J5cHRvZGV2Lmg+DQo+ID4gPiA+ICAjaW5jbHVkZSA8cnRlX3NlY3VyaXR5Lmg+DQo+ID4gPiA+ ICsjaW5jbHVkZSA8cnRlX2JpdG1hcC5oPg0KPiA+ID4gPiArI2luY2x1ZGUgPHJ0ZV9ldmVudGRl di5oPg0KPiA+ID4gPiAgI2luY2x1ZGUgPHJ0ZV9pcC5oPg0KPiA+ID4gPiAgI2luY2x1ZGUgPHJ0 ZV9pcF9mcmFnLmg+DQo+ID4gPiA+DQo+ID4gPiA+ICsjaW5jbHVkZSAiZXZlbnRfaGVscGVyLmgi DQo+ID4gPiA+ICAjaW5jbHVkZSAiaXBzZWMuaCINCj4gPiA+ID4gICNpbmNsdWRlICJwYXJzZXIu aCINCj4gPiA+ID4NCj4gPiA+ID4gK3ZvbGF0aWxlIGJvb2wgZm9yY2VfcXVpdDsNCj4gPiA+ID4g Kw0KPiA+ID4gPiAgI2RlZmluZSBSVEVfTE9HVFlQRV9JUFNFQyBSVEVfTE9HVFlQRV9VU0VSMQ0K PiA+ID4gPg0KPiA+ID4gPiAgI2RlZmluZSBNQVhfSlVNQk9fUEtUX0xFTiAgOTYwMA0KPiA+ID4g PiBAQCAtMTMzLDEyICsxNDAsMjEgQEAgc3RydWN0IGZsb3dfaW5mbw0KPiA+ID4gZmxvd19pbmZv X3RibFtSVEVfTUFYX0VUSFBPUlRTXTsNCj4gPiA+ID4gICNkZWZpbmUgQ01EX0xJTkVfT1BUX0NP TkZJRwkJImNvbmZpZyINCj4gPiA+ID4gICNkZWZpbmUgQ01EX0xJTkVfT1BUX1NJTkdMRV9TQQkJ InNpbmdsZS1zYSINCj4gPiA+ID4gICNkZWZpbmUgQ01EX0xJTkVfT1BUX0NSWVBUT0RFVl9NQVNL CSJjcnlwdG9kZXZfbWFzayINCj4gPiA+ID4gKyNkZWZpbmUgQ01EX0xJTkVfT1BUX1RSQU5TRkVS X01PREUJInRyYW5zZmVyLW1vZGUiDQo+ID4gPiA+ICsjZGVmaW5lIENNRF9MSU5FX09QVF9TQ0hF RFVMRV9UWVBFCSJzY2hlZHVsZS10eXBlIg0KPiA+ID4gPiArI2RlZmluZSBDTURfTElORV9PUFRf SVBTRUNfTU9ERQkJInByb2Nlc3MtbW9kZSINCj4gPiA+ID4gKyNkZWZpbmUgQ01EX0xJTkVfT1BU X0lQU0VDX0RJUgkJInByb2Nlc3MtZGlyIg0KPiA+ID4gPiAgI2RlZmluZSBDTURfTElORV9PUFRf UlhfT0ZGTE9BRAkJInJ4b2ZmbG9hZCINCj4gPiA+ID4gICNkZWZpbmUgQ01EX0xJTkVfT1BUX1RY X09GRkxPQUQJCSJ0eG9mZmxvYWQiDQo+ID4gPiA+ICAjZGVmaW5lIENNRF9MSU5FX09QVF9SRUFT U0VNQkxFCQkicmVhc3NlbWJsZSINCj4gPiA+ID4gICNkZWZpbmUgQ01EX0xJTkVfT1BUX01UVQkJ Im10dSINCj4gPiA+ID4gICNkZWZpbmUgQ01EX0xJTkVfT1BUX0ZSQUdfVFRMCQkiZnJhZy10dGwi DQo+ID4gPiA+DQo+ID4gPiA+ICsjZGVmaW5lIENNRF9MSU5FX0FSR19BUFAgImFwcCINCj4gPiA+ ID4gKyNkZWZpbmUgQ01EX0xJTkVfQVJHX0RSViAiZHJ2Ig0KPiA+ID4gPiArI2RlZmluZSBDTURf TElORV9BUkdfSU5CICJpbiINCj4gPiA+ID4gKyNkZWZpbmUgQ01EX0xJTkVfQVJHX09VVCAib3V0 Ig0KPiA+ID4gPiArDQo+ID4gPiA+ICBlbnVtIHsNCj4gPiA+ID4gIAkvKiBsb25nIG9wdGlvbnMg bWFwcGVkIHRvIGEgc2hvcnQgb3B0aW9uICovDQo+ID4gPiA+DQo+ID4gPiA+IEBAIC0xNDksNyAr MTY1LDExIEBAIGVudW0gew0KPiA+ID4gPiAgCUNNRF9MSU5FX09QVF9DT05GSUdfTlVNLA0KPiA+ ID4gPiAgCUNNRF9MSU5FX09QVF9TSU5HTEVfU0FfTlVNLA0KPiA+ID4gPiAgCUNNRF9MSU5FX09Q VF9DUllQVE9ERVZfTUFTS19OVU0sDQo+ID4gPiA+ICsJQ01EX0xJTkVfT1BUX1RSQU5TRkVSX01P REVfTlVNLA0KPiA+ID4gPiArCUNNRF9MSU5FX09QVF9TQ0hFRFVMRV9UWVBFX05VTSwNCj4gPiA+ ID4gIAlDTURfTElORV9PUFRfUlhfT0ZGTE9BRF9OVU0sDQo+ID4gPiA+ICsJQ01EX0xJTkVfT1BU X0lQU0VDX01PREVfTlVNLA0KPiA+ID4gPiArCUNNRF9MSU5FX09QVF9JUFNFQ19ESVJfTlVNLA0K PiA+ID4gPiAgCUNNRF9MSU5FX09QVF9UWF9PRkZMT0FEX05VTSwNCj4gPiA+ID4gIAlDTURfTElO RV9PUFRfUkVBU1NFTUJMRV9OVU0sDQo+ID4gPiA+ICAJQ01EX0xJTkVfT1BUX01UVV9OVU0sDQo+ ID4gPiA+IEBAIC0xNjAsNiArMTgwLDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0aW9uIGxn b3B0c1tdID0gew0KPiA+ID4gPiAgCXtDTURfTElORV9PUFRfQ09ORklHLCAxLCAwLCBDTURfTElO RV9PUFRfQ09ORklHX05VTX0sDQo+ID4gPiA+ICAJe0NNRF9MSU5FX09QVF9TSU5HTEVfU0EsIDEs IDAsDQo+ID4gPiBDTURfTElORV9PUFRfU0lOR0xFX1NBX05VTX0sDQo+ID4gPiA+ICAJe0NNRF9M SU5FX09QVF9DUllQVE9ERVZfTUFTSywgMSwgMCwNCj4gPiA+ID4gQ01EX0xJTkVfT1BUX0NSWVBU T0RFVl9NQVNLX05VTX0sDQo+ID4gPiA+ICsJe0NNRF9MSU5FX09QVF9UUkFOU0ZFUl9NT0RFLCAx LCAwLA0KPiA+ID4gQ01EX0xJTkVfT1BUX1RSQU5TRkVSX01PREVfTlVNfSwNCj4gPiA+ID4gKwl7 Q01EX0xJTkVfT1BUX1NDSEVEVUxFX1RZUEUsIDEsIDAsDQo+ID4gPiBDTURfTElORV9PUFRfU0NI RURVTEVfVFlQRV9OVU19LA0KPiA+ID4gPiArCXtDTURfTElORV9PUFRfSVBTRUNfTU9ERSwgMSwg MCwNCj4gPiA+IENNRF9MSU5FX09QVF9JUFNFQ19NT0RFX05VTX0sDQo+ID4gPiA+ICsJe0NNRF9M SU5FX09QVF9JUFNFQ19ESVIsIDEsIDAsDQo+ID4gPiBDTURfTElORV9PUFRfSVBTRUNfRElSX05V TX0sDQo+ID4gPiA+ICAJe0NNRF9MSU5FX09QVF9SWF9PRkZMT0FELCAxLCAwLA0KPiA+ID4gQ01E X0xJTkVfT1BUX1JYX09GRkxPQURfTlVNfSwNCj4gPiA+ID4gIAl7Q01EX0xJTkVfT1BUX1RYX09G RkxPQUQsIDEsIDAsDQo+ID4gPiBDTURfTElORV9PUFRfVFhfT0ZGTE9BRF9OVU19LA0KPiA+ID4g PiAgCXtDTURfTElORV9PUFRfUkVBU1NFTUJMRSwgMSwgMCwNCj4gPiA+IENNRF9MSU5FX09QVF9S RUFTU0VNQkxFX05VTX0sIEBADQo+ID4gPiA+IC0xMDk0LDggKzExMTgsOCBAQCBkcmFpbl9vdXRi b3VuZF9jcnlwdG9fcXVldWVzKGNvbnN0IHN0cnVjdA0KPiA+ID4gPiBsY29yZV9jb25mICpxY29u ZiwgIH0NCj4gPiA+ID4NCj4gPiA+ID4gIC8qIG1haW4gcHJvY2Vzc2luZyBsb29wICovDQo+ID4g PiA+IC1zdGF0aWMgaW50MzJfdA0KPiA+ID4gPiAtbWFpbl9sb29wKF9fYXR0cmlidXRlX18oKHVu dXNlZCkpIHZvaWQgKmR1bW15KQ0KPiA+ID4gPiArdm9pZA0KPiA+ID4gPiAraXBzZWNfcG9sbF9t b2RlX3dvcmtlcih2b2lkKQ0KPiA+ID4gPiAgew0KPiA+ID4gPiAgCXN0cnVjdCBydGVfbWJ1ZiAq cGt0c1tNQVhfUEtUX0JVUlNUXTsNCj4gPiA+ID4gIAl1aW50MzJfdCBsY29yZV9pZDsNCj4gPiA+ ID4gQEAgLTExMzcsNyArMTE2MSw3IEBAIG1haW5fbG9vcChfX2F0dHJpYnV0ZV9fKCh1bnVzZWQp KSB2b2lkDQo+ID4gPiAqZHVtbXkpDQo+ID4gPiA+ICAJaWYgKHFjb25mLT5uYl9yeF9xdWV1ZSA9 PSAwKSB7DQo+ID4gPiA+ICAJCVJURV9MT0coREVCVUcsIElQU0VDLCAibGNvcmUgJXUgaGFzIG5v dGhpbmcgdG8gZG9cbiIsDQo+ID4gPiA+ICAJCQlsY29yZV9pZCk7DQo+ID4gPiA+IC0JCXJldHVy biAwOw0KPiA+ID4gPiArCQlyZXR1cm47DQo+ID4gPiA+ICAJfQ0KPiA+ID4gPg0KPiA+ID4gPiAg CVJURV9MT0coSU5GTywgSVBTRUMsICJlbnRlcmluZyBtYWluIGxvb3Agb24gbGNvcmUgJXVcbiIs DQo+ID4gPiA+IGxjb3JlX2lkKTsgQEAgLTExNTAsNyArMTE3NCw3IEBADQo+IG1haW5fbG9vcChf X2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQ0KPiA+ID4gPiB2b2lkDQo+ID4gPiAqZHVtbXkpDQo+ID4g PiA+ICAJCQlsY29yZV9pZCwgcG9ydGlkLCBxdWV1ZWlkKTsNCj4gPiA+ID4gIAl9DQo+ID4gPiA+ DQo+ID4gPiA+IC0Jd2hpbGUgKDEpIHsNCj4gPiA+ID4gKwl3aGlsZSAoIWZvcmNlX3F1aXQpIHsN Cj4gPiA+ID4gIAkJY3VyX3RzYyA9IHJ0ZV9yZHRzYygpOw0KPiA+ID4gPg0KPiA+ID4gPiAgCQkv KiBUWCBxdWV1ZSBidWZmZXIgZHJhaW4gKi8NCj4gPiA+ID4gQEAgLTEyNzcsNiArMTMwMSwxMCBA QCBwcmludF91c2FnZShjb25zdCBjaGFyICpwcmduYW1lKQ0KPiA+ID4gPiAgCQkiIC0tY29uZmln IChwb3J0LHF1ZXVlLGxjb3JlKVssKHBvcnQscXVldWUsbGNvcmUpXSINCj4gPiA+ID4gIAkJIiBb LS1zaW5nbGUtc2EgU0FJRFhdIg0KPiA+ID4gPiAgCQkiIFstLWNyeXB0b2Rldl9tYXNrIE1BU0td Ig0KPiA+ID4gPiArCQkiIFstLXRyYW5zZmVyLW1vZGUgTU9ERV0iDQo+ID4gPiA+ICsJCSIgWy0t c2NoZWR1bGUtdHlwZSBUWVBFXSINCj4gPiA+ID4gKwkJIiBbLS1wcm9jZXNzLW1vZGUgTU9ERV0i DQo+ID4gPiA+ICsJCSIgWy0tcHJvY2Vzcy1kaXIgRElSXSINCj4gPiA+ID4gIAkJIiBbLS0iIENN RF9MSU5FX09QVF9SWF9PRkZMT0FEICIgUlhfT0ZGTE9BRF9NQVNLXSINCj4gPiA+ID4gIAkJIiBb LS0iIENNRF9MSU5FX09QVF9UWF9PRkZMT0FEICIgVFhfT0ZGTE9BRF9NQVNLXSINCj4gPiA+ID4g IAkJIiBbLS0iIENNRF9MSU5FX09QVF9SRUFTU0VNQkxFICINCj4gPiA+IFJFQVNTRU1CTEVfVEFC TEVfU0laRV0iDQo+ID4gPiA+IEBAIC0xMjk4LDYgKzEzMjYsMjIgQEAgcHJpbnRfdXNhZ2UoY29u c3QgY2hhciAqcHJnbmFtZSkNCj4gPiA+ID4gIAkJIiAgICAgICAgICAgICAgICAgICAgIGJ5cGFz c2luZyB0aGUgU1BcbiINCj4gPiA+ID4gIAkJIiAgLS1jcnlwdG9kZXZfbWFzayBNQVNLOiBIZXhh ZGVjaW1hbCBiaXRtYXNrIG9mIHRoZQ0KPiA+ID4gY3J5cHRvXG4iDQo+ID4gPiA+ICAJCSIgICAg ICAgICAgICAgICAgICAgICAgICAgZGV2aWNlcyB0byBjb25maWd1cmVcbiINCj4gPiA+ID4gKwkJ IiAgLS10cmFuc2Zlci1tb2RlIE1PREVcbiINCj4gPiA+ID4gKwkJIiAgICAgICAgICAgICAgIDA6 IFBhY2tldCB0cmFuc2ZlciB2aWEgcG9sbGluZyAoZGVmYXVsdClcbiINCj4gPiA+ID4gKwkJIiAg ICAgICAgICAgICAgIDE6IFBhY2tldCB0cmFuc2ZlciB2aWEgZXZlbnRkZXZcbiINCj4gPiA+ID4g KwkJIiAgLS1zY2hlZHVsZS10eXBlIFRZUEUgcXVldWUgc2NoZWR1bGUgdHlwZSwgdXNlZCBvbmx5 DQo+ID4gPiB3aGVuXG4iDQo+ID4gPiA+ICsJCSIgICAgICAgICAgICAgICAgICAgICAgIHRyYW5z ZmVyIG1vZGUgaXMgc2V0IHRvIGV2ZW50ZGV2XG4iDQo+ID4gPiA+ICsJCSIgICAgICAgICAgICAg ICAwOiBPcmRlcmVkIChkZWZhdWx0KVxuIg0KPiA+ID4gPiArCQkiICAgICAgICAgICAgICAgMTog QXRvbWljXG4iDQo+ID4gPiA+ICsJCSIgICAgICAgICAgICAgICAyOiBQYXJhbGxlbFxuIg0KPiA+ ID4NCj4gPiA+IEZvciBsYXN0IHR3bywgd2h5IG5vdCBzb21ldGhpbmcgaHVtYS1yZWFkYWJsZT8N Cj4gPiA+IEkuRS4gPT0gLS10cmFuZmVyLW1vZGU9KHBvbGx8ZXZlbnQpIG9yIHNvLg0KPiA+ID4g U2FtZSBmb3Igc2NoZWR1bGUtdHlwZS4NCj4gPg0KPiA+IFtBbm9vYl0gV2lsbCBkbyBzbyBpbiB2 Mi4NCj4gPg0KPiA+ID4NCj4gPiA+ID4gKwkJIiAgLS1wcm9jZXNzLW1vZGUgTU9ERSBwcm9jZXNz aW5nIG1vZGUsIHVzZWQgb25seQ0KPiA+ID4gd2hlblxuIg0KPiA+ID4gPiArCQkiICAgICAgICAg ICAgICAgICAgICAgIHRyYW5zZmVyIG1vZGUgaXMgc2V0IHRvIGV2ZW50ZGV2XG4iDQo+ID4gPiA+ ICsJCSIgICAgICAgICAgICAgICBcImFwcFwiIDogYXBwbGljYXRpb24gbW9kZSAoZGVmYXVsdClc biINCj4gPiA+ID4gKwkJIiAgICAgICAgICAgICAgIFwiZHJ2XCIgOiBkcml2ZXIgbW9kZVxuIg0K PiA+ID4gPiArCQkiICAtLXByb2Nlc3MtZGlyIERJUiBwcm9jZXNzaW5nIGRpcmVjdGlvbiwgdXNl ZCBvbmx5IHdoZW5cbiINCj4gPiA+ID4gKwkJIiAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXIg bW9kZSBpcyBzZXQgdG8gZXZlbnRkZXZcbiINCj4gPiA+ID4gKwkJIiAgICAgICAgICAgICAgIFwi b3V0XCIgOiBvdXRib3VuZCAoZGVmYXVsdClcbiINCj4gPiA+ID4gKwkJIiAgICAgICAgICAgICAg IFwiaW5cIiAgOiBpbmJvdW5kXG4iDQo+ID4gPg0KPiA+ID4gSG1tIGFuZCB3aHkgaW4gZXZlbnRk ZXYgbW9kZSBpdCBpcyBub3QgcG9zc2libGUgdG8gaGFuZGxlIGJvdGgNCj4gPiA+IGluYm91bmQg YW5kIG91dGJvdW5kIHRyYWZmaWM/DQo+ID4gPiBXaGVyZSBpcyB0aGUgbGltaXRhdGlvbjogZXZl bnRkZXYgZnJhbWV3b3JrL1BNRC9pcHNlYy1zZWNndz8NCj4gPg0KPiA+IFtBbm9vYl0gSXQncyBu b3QgYSBsaW1pdGF0aW9uIG9mIGFueSBvZiB0aGUgbm9kZXMuIFRoZSBjdXJyZW50DQo+ID4gaXBz ZWMtc2VnY3cgaGFzIGEgZGF0YSBwYXRoIGNoZWNrIG9mIHBvcnQgdG8gZGV0ZXJtaW5lIHdoZXRo ZXIgaW5ib3VuZA0KPiBvciBvdXRib3VuZCBwcm9jZXNzaW5nIG5lZWQgdG8gYmUgZG9uZS4NCj4g PiBJbiBjYXNlIG9mIHBvbGwtbW9kZSwgd2UgaGF2ZSBzcGVjaWZpYyBjb3JlcyBwb2xsaW5nIGZp eGVkIGV0aCBwb3J0ICYNCj4gPiBxdWV1ZS4gU28gdGhlIGV4dHJhIGNoZWNrIGludm9sdmVkIGRv ZXNuJ3QgY29zdCBtdWNoLg0KPiANCj4gDQo+ID4gQnV0IGluIGNhc2Ugb2YgZXZlbnQtbW9kZSwg d2Ugd2lsbCBoYXZlIGJvdGggaW5ib3VuZCAmIG91dGJvdW5kIHBhY2tldHMNCj4gZW5kaW5nIHVw IG9uIHNhbWUgY29yZS4NCj4gDQo+IEZvciBwb2xsIG1vZGUgd2UgY2FuIGhhdmUgb25lIGNvcmUg aGFuZGxpbmcgc2V2ZXJhbCBwb3J0cy4NCj4gU29tZSBvZiB0aGVtIGNvdWxkIGJlIGluYm91bmQs IG90aGVyIG91dGJvdW5kLCBzbyBpdCBpcyBhIHN3aXRjaCBiYXNlZCBvbg0KPiBwb3J0IHZhbHVl Lg0KPiBNeSB0aG91Z2h0IHdhcyB0aGF0IHRoZSBzYW1lIHN3aXRjaCBiYXNlZCBvbiBwb3J0X2lk IGNhbiBiZSBkb25lIGluDQo+IGV2ZW50LW1vZGUgdG9vLg0KPiBCdXQgbWlnaHQgYmUgSSBhbSBt aXNzaW5nIHNvbWV0aGluZyBoZXJlLg0KDQpbQW5vb2JdIFllcy4gWW91IGFyZSByaWdodC4gRXZl biBpbiBwb2xsIG1vZGUgdGhlIHNhbWUgYmlkaXJlY3Rpb25hbCBwcm9jZXNzaW5nIG9uIHNhbWUg Y29yZSBpcyBwb3NzaWJsZS4NCiANCj4gDQo+ID4gU28gdGhlIHBlbmFsdHkgb2YgcnVubmluZyBp bmJvdW5kICYNCj4gPiBvdXRib3VuZCBhdCB0aGUgc2FtZSB0aW1lIChhbmQgcmVseWluZyBvbiBk YXRhIHBhdGggY2hlY2spIGlzIG1vcmUgaW4NCj4gPiBjYXNlIG9mIGV2ZW50IG1vZGUuIEZvciBp bmxpbmUgaXBzZWMgaW1wbGVtZW50YXRpb24sIHRoaXMgaW1wYWN0IGlzbid0IHRoYXQNCj4gbXVj aCBhbmQgd2Ugd2VyZSBhYmxlIHRvIG1pbmltaXplIHRoZSBwZXJmIGRlZ3JhZGF0aW9uIHRvIDEl LiBJIHdvdWxkDQo+IGV4cGVjdCBsb29rYXNpZGUgY3J5cHRvL3Byb3RvY29sIHRvIGhhdmUgaGln aGVyIGltcGFjdHMuDQo+ID4NCj4gPiBTYWlkIHRoYXQsIEknbSBva2F5IHdpdGggcmVtb3Zpbmcg dGhlIGV4dHJhIG9wdGlvbiBhbmQgcmV0YWluaW5nIHRoZQ0KPiA+IGN1cnJlbnQgYmVoYXZpb3Iu IElmIHlvdSB0aGluayBzaW5nbGUgaW5zdGFuY2Ugb2YgaXBzZWMtc2VjZ3cgc2hvdWxkIHdvcmsN Cj4gYmlkaXJlY3Rpb25hbCwgSSBjYW4gbWFrZSB0aGUgcmVxdWlyZWQgY2hhbmdlcyBhbmQgc2Vl IHRoZSBwZXJmIGltcGFjdC4NCj4gDQo+IEkgdGhpbmsgaXQgd291bGQgYmUgZ29vZCBpZiBldmVu dC1tb2RlIGNvdWxkIHdvcmsgaW4gYmktZGlyZWN0aW9uYWwgd2F5IChhcw0KPiBwb2xsIG1vZGUg ZG9lcyksIGJ1dCB3aWxsIGxlYXZlIGZpbmFsIGRlY2lzaW9uIHRvIHlvdSBhbmQgb3RoZXIgZ3V5 cyBtb3JlDQo+IGZhbWlsaWFyIHdpdGggZXZlbnQtZGV2IGRldGFpbHMuDQoNCltBbm9vYl0gQWdy ZWVkLiBJJ2xsIGhhdmUgdGhpcyByZXdvcmtlZCB0byBoYXZlIG9uZSB0aHJlYWQuDQogDQo+IA0K PiA+DQo+ID4gPg0KPiA+ID4gPiAgCQkiICAtLSIgQ01EX0xJTkVfT1BUX1JYX09GRkxPQUQNCj4g PiA+ID4gIAkJIjogYml0bWFzayBvZiB0aGUgUlggSFcgb2ZmbG9hZCBjYXBhYmlsaXRpZXMgdG8g ZW5hYmxlL3VzZVxuIg0KPiA+ID4gPiAgCQkiICAgICAgICAgICAgICAgICAgICAgICAgIChERVZf UlhfT0ZGTE9BRF8qKVxuIg0KPiA+ID4gPiBAQCAtMTQzMyw3ICsxNDc3LDg5IEBAIHByaW50X2Fw cF9zYV9wcm0oY29uc3Qgc3RydWN0IGFwcF9zYV9wcm0NCj4gPiA+ICpwcm0pDQo+ID4gPiA+IH0N Cj4gPiA+ID4NCj4gPiA+ID4gIHN0YXRpYyBpbnQzMl90DQo+ID4gPiA+IC1wYXJzZV9hcmdzKGlu dDMyX3QgYXJnYywgY2hhciAqKmFyZ3YpDQo+ID4gPiA+ICtlaF9wYXJzZV9kZWNpbWFsKGNvbnN0 IGNoYXIgKnN0cikgew0KPiA+ID4gPiArCXVuc2lnbmVkIGxvbmcgbnVtOw0KPiA+ID4gPiArCWNo YXIgKmVuZCA9IE5VTEw7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwludW0gPSBzdHJ0b3VsKHN0ciwg JmVuZCwgMTApOw0KPiA+ID4gPiArCWlmICgoc3RyWzBdID09ICdcMCcpIHx8IChlbmQgPT0gTlVM TCkgfHwgKCplbmQgIT0gJ1wwJykpDQo+ID4gPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ID4g PiArDQo+ID4gPiA+ICsJcmV0dXJuIG51bTsNCj4gPiA+ID4gK30NCj4gPiA+DQo+ID4gPiBUaGVy ZSBhbHJlYWR5IGV4aXN0cyBwYXJzZV9kZWNpbWFsKCksIHdoeSB0byBjcmVhdGUgYSBkdXA/DQo+ ID4NCj4gPiBbQW5vb2JdIFdpbGwgdGhpcyBpbiB2Mi4NCj4gPg0KPiA+ID4NCj4gPiA+ID4gKw0K PiA+ID4gPiArc3RhdGljIGludA0KPiA+ID4gPiArcGFyc2VfdHJhbnNmZXJfbW9kZShzdHJ1Y3Qg ZWhfY29uZiAqY29uZiwgY29uc3QgY2hhciAqb3B0YXJnKSB7DQo+ID4gPiA+ICsJaW50MzJfdCBw YXJzZWRfZGVjOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJcGFyc2VkX2RlYyA9IGVoX3BhcnNlX2Rl Y2ltYWwob3B0YXJnKTsNCj4gPiA+ID4gKwlpZiAocGFyc2VkX2RlYyAhPSBFSF9QS1RfVFJBTlNG RVJfTU9ERV9QT0xMICYmDQo+ID4gPiA+ICsJICAgIHBhcnNlZF9kZWMgIT0gRUhfUEtUX1RSQU5T RkVSX01PREVfRVZFTlQpIHsNCj4gPiA+ID4gKwkJcHJpbnRmKCJVbnN1cHBvcnRlZCBwYWNrZXQg dHJhbnNmZXIgbW9kZSIpOw0KPiA+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiA+ID4gKwl9 DQo+ID4gPiA+ICsJY29uZi0+bW9kZSA9IHBhcnNlZF9kZWM7DQo+ID4gPiA+ICsJcmV0dXJuIDA7 DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBpbnQNCj4gPiA+ID4gK3Bh cnNlX3NjaGVkdWxlX3R5cGUoc3RydWN0IGVoX2NvbmYgKmNvbmYsIGNvbnN0IGNoYXIgKm9wdGFy Zykgew0KPiA+ID4gPiArCXN0cnVjdCBldmVudG1vZGVfY29uZiAqZW1fY29uZiA9IE5VTEw7DQo+ ID4gPiA+ICsJaW50MzJfdCBwYXJzZWRfZGVjOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJcGFyc2Vk X2RlYyA9IGVoX3BhcnNlX2RlY2ltYWwob3B0YXJnKTsNCj4gPiA+ID4gKwlpZiAocGFyc2VkX2Rl YyAhPSBSVEVfU0NIRURfVFlQRV9PUkRFUkVEICYmDQo+ID4gPiA+ICsJICAgIHBhcnNlZF9kZWMg IT0gUlRFX1NDSEVEX1RZUEVfQVRPTUlDICYmDQo+ID4gPiA+ICsJICAgIHBhcnNlZF9kZWMgIT0g UlRFX1NDSEVEX1RZUEVfUEFSQUxMRUwpDQo+ID4gPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICsJLyogR2V0IGV2ZW50bW9kZSBjb25mICovDQo+ID4gPiA+ICsJZW1f Y29uZiA9IChzdHJ1Y3QgZXZlbnRtb2RlX2NvbmYgKikoY29uZi0+bW9kZV9wYXJhbXMpOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICsJZW1fY29uZi0+ZXh0X3BhcmFtcy5zY2hlZF90eXBlID0gcGFyc2Vk X2RlYzsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJldHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4g PiArDQo+ID4gPiA+ICtzdGF0aWMgaW50DQo+ID4gPiA+ICtwYXJzZV9pcHNlY19tb2RlKHN0cnVj dCBlaF9jb25mICpjb25mLCBjb25zdCBjaGFyICpvcHRhcmcpIHsNCj4gPiA+ID4gKwlpZiAoIXN0 cm5jbXAoQ01EX0xJTkVfQVJHX0FQUCwgb3B0YXJnLA0KPiA+ID4gc3RybGVuKENNRF9MSU5FX0FS R19BUFApKSAmJg0KPiA+ID4gPiArCSAgICBzdHJsZW4ob3B0YXJnKSA9PSBzdHJsZW4oQ01EX0xJ TkVfQVJHX0FQUCkpDQo+ID4gPg0KPiA+ID4gVWdoLCB0aGF0J3MgYW4gdWdseSBjb25zdHJ1Y3Rp b24sIHdoeSBub3QganVzdDoNCj4gPiA+IGlmIChzdHJjbXAoQ01EX0xJTkVfQVJHX0FQUCwgb3B0 YXJnKSA9PSAwKSA/DQo+ID4NCj4gPiBbQW5vb2JdIFdpbGwgZml4IHRoaXMgaW4gdjIuDQo+ID4N Cj4gPiA+DQo+ID4gPiA+ICsJCWNvbmYtPmlwc2VjX21vZGUgPSBFSF9JUFNFQ19NT0RFX1RZUEVf QVBQOw0KPiA+ID4gPiArCWVsc2UgaWYgKCFzdHJuY21wKENNRF9MSU5FX0FSR19EUlYsIG9wdGFy ZywNCj4gPiA+IHN0cmxlbihDTURfTElORV9BUkdfRFJWKSkgJiYNCj4gPiA+ID4gKwkJIHN0cmxl bihvcHRhcmcpID09IHN0cmxlbihDTURfTElORV9BUkdfRFJWKSkNCj4gPiA+ID4gKwkJY29uZi0+ aXBzZWNfbW9kZSA9IEVIX0lQU0VDX01PREVfVFlQRV9EUklWRVI7DQo+ID4gPiA+ICsJZWxzZSB7 DQo+ID4gPiA+ICsJCXByaW50ZigiVW5zdXBwb3J0ZWQgaXBzZWMgbW9kZVxuIik7DQo+ID4gPiA+ ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ID4gPiArCX0NCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJl dHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgaW50DQo+ID4g PiA+ICtwYXJzZV9pcHNlY19kaXIoc3RydWN0IGVoX2NvbmYgKmNvbmYsIGNvbnN0IGNoYXIgKm9w dGFyZykgew0KPiA+ID4gPiArCWlmICghc3RybmNtcChDTURfTElORV9BUkdfSU5CLCBvcHRhcmcs DQo+ID4gPiBzdHJsZW4oQ01EX0xJTkVfQVJHX0lOQikpICYmDQo+ID4gPiA+ICsJICAgIHN0cmxl bihvcHRhcmcpID09IHN0cmxlbihDTURfTElORV9BUkdfSU5CKSkNCj4gPiA+ID4gKwkJY29uZi0+ aXBzZWNfZGlyID0gRUhfSVBTRUNfRElSX1RZUEVfSU5CT1VORDsNCj4gPiA+ID4gKwllbHNlIGlm ICghc3RybmNtcChDTURfTElORV9BUkdfT1VULCBvcHRhcmcsDQo+ID4gPiBzdHJsZW4oQ01EX0xJ TkVfQVJHX09VVCkpICYmDQo+ID4gPiA+ICsJCSBzdHJsZW4ob3B0YXJnKSA9PSBzdHJsZW4oQ01E X0xJTkVfQVJHX09VVCkpDQo+ID4gPiA+ICsJCWNvbmYtPmlwc2VjX2RpciA9IEVIX0lQU0VDX0RJ Ul9UWVBFX09VVEJPVU5EOw0KPiA+ID4gPiArCWVsc2Ugew0KPiA+ID4gPiArCQlwcmludGYoIlVu c3VwcG9ydGVkIGlwc2VjIGRpcmVjdGlvblxuIik7DQo+ID4gPiA+ICsJCXJldHVybiAtRUlOVkFM Ow0KPiA+ID4gPiArCX0NCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJldHVybiAwOw0KPiA+ID4gPiAr fQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgaW50MzJfdA0KPiA+ID4gPiArcGFyc2VfYXJn cyhpbnQzMl90IGFyZ2MsIGNoYXIgKiphcmd2LCBzdHJ1Y3QgZWhfY29uZiAqZWhfY29uZikNCj4g PiA+ID4gIHsNCj4gPiA+ID4gIAlpbnQgb3B0Ow0KPiA+ID4gPiAgCWludDY0X3QgcmV0Ow0KPiA+ ID4gPiBAQCAtMTUzNiw2ICsxNjYyLDQzIEBAIHBhcnNlX2FyZ3MoaW50MzJfdCBhcmdjLCBjaGFy ICoqYXJndikNCj4gPiA+ID4gIAkJCS8qIGVsc2UgKi8NCj4gPiA+ID4gIAkJCWVuYWJsZWRfY3J5 cHRvZGV2X21hc2sgPSByZXQ7DQo+ID4gPiA+ICAJCQlicmVhazsNCj4gPiA+ID4gKw0KPiA+ID4g PiArCQljYXNlIENNRF9MSU5FX09QVF9UUkFOU0ZFUl9NT0RFX05VTToNCj4gPiA+ID4gKwkJCXJl dCA9IHBhcnNlX3RyYW5zZmVyX21vZGUoZWhfY29uZiwgb3B0YXJnKTsNCj4gPiA+ID4gKwkJCWlm IChyZXQgPCAwKSB7DQo+ID4gPiA+ICsJCQkJcHJpbnRmKCJJbnZhbGlkIHBhY2tldCB0cmFuc2Zl ciBtb2RlXG4iKTsNCj4gPiA+ID4gKwkJCQlwcmludF91c2FnZShwcmduYW1lKTsNCj4gPiA+ID4g KwkJCQlyZXR1cm4gLTE7DQo+ID4gPiA+ICsJCQl9DQo+ID4gPiA+ICsJCQlicmVhazsNCj4gPiA+ ID4gKw0KPiA+ID4gPiArCQljYXNlIENNRF9MSU5FX09QVF9TQ0hFRFVMRV9UWVBFX05VTToNCj4g PiA+ID4gKwkJCXJldCA9IHBhcnNlX3NjaGVkdWxlX3R5cGUoZWhfY29uZiwgb3B0YXJnKTsNCj4g PiA+ID4gKwkJCWlmIChyZXQgPCAwKSB7DQo+ID4gPiA+ICsJCQkJcHJpbnRmKCJJbnZhbGlkIHF1 ZXVlIHNjaGVkdWxlIHR5cGVcbiIpOw0KPiA+ID4gPiArCQkJCXByaW50X3VzYWdlKHByZ25hbWUp Ow0KPiA+ID4gPiArCQkJCXJldHVybiAtMTsNCj4gPiA+ID4gKwkJCX0NCj4gPiA+ID4gKwkJCWJy ZWFrOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJCWNhc2UgQ01EX0xJTkVfT1BUX0lQU0VDX01PREVf TlVNOg0KPiA+ID4gPiArCQkJcmV0ID0gcGFyc2VfaXBzZWNfbW9kZShlaF9jb25mLCBvcHRhcmcp Ow0KPiA+ID4gPiArCQkJaWYgKHJldCA8IDApIHsNCj4gPiA+ID4gKwkJCQlwcmludGYoIkludmFs aWQgaXBzZWMgbW9kZVxuIik7DQo+ID4gPiA+ICsJCQkJcHJpbnRfdXNhZ2UocHJnbmFtZSk7DQo+ ID4gPiA+ICsJCQkJcmV0dXJuIC0xOw0KPiA+ID4gPiArCQkJfQ0KPiA+ID4gPiArCQkJYnJlYWs7 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwkJY2FzZSBDTURfTElORV9PUFRfSVBTRUNfRElSX05VTToN Cj4gPiA+ID4gKwkJCXJldCA9IHBhcnNlX2lwc2VjX2RpcihlaF9jb25mLCBvcHRhcmcpOw0KPiA+ ID4gPiArCQkJaWYgKHJldCA8IDApIHsNCj4gPiA+ID4gKwkJCQlwcmludGYoIkludmFsaWQgaXBz ZWMgZGlyZWN0aW9uXG4iKTsNCj4gPiA+ID4gKwkJCQlwcmludF91c2FnZShwcmduYW1lKTsNCj4g PiA+ID4gKwkJCQlyZXR1cm4gLTE7DQo+ID4gPiA+ICsJCQl9DQo+ID4gPiA+ICsJCQlicmVhazsN Cj4gPiA+ID4gKw0KPiA+ID4gPiAgCQljYXNlIENNRF9MSU5FX09QVF9SWF9PRkZMT0FEX05VTToN Cj4gPiA+ID4gIAkJCXJldCA9IHBhcnNlX21hc2sob3B0YXJnLCAmZGV2X3J4X29mZmxvYWQpOw0K PiA+ID4gPiAgCQkJaWYgKHJldCAhPSAwKSB7DQo+ID4gPiA+IEBAIC0yNDU3LDYgKzI2MjAsMTMy IEBAIGNyZWF0ZV9kZWZhdWx0X2lwc2VjX2Zsb3codWludDE2X3QNCj4gPiA+ID4gcG9ydF9pZCwN Cj4gPiA+IHVpbnQ2NF90IHJ4X29mZmxvYWRzKQ0KPiA+ID4gPiAgCXJldHVybiByZXQ7DQo+ID4g PiA+ICB9DQo+ID4gPiA+DQo+ID4gPiA+ICtzdGF0aWMgc3RydWN0IGVoX2NvbmYgKg0KPiA+ID4g PiArZWhfY29uZl9pbml0KHZvaWQpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsJc3RydWN0IGV2ZW50 bW9kZV9jb25mICplbV9jb25mID0gTlVMTDsNCj4gPiA+ID4gKwlzdHJ1Y3QgZWhfY29uZiAqY29u ZiA9IE5VTEw7DQo+ID4gPiA+ICsJdW5zaWduZWQgaW50IGV0aF9jb3JlX2lkOw0KPiA+ID4gPiAr CXVpbnQzMl90IG5iX2J5dGVzOw0KPiA+ID4gPiArCXZvaWQgKm1lbSA9IE5VTEw7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKwkvKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIGNvbmZpZyAqLw0KPiA+ID4gPiAr CWNvbmYgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBlaF9jb25mKSk7DQo+ID4gPiA+ICsJaWYg KGNvbmYgPT0gTlVMTCkgew0KPiA+ID4gPiArCQlwcmludGYoIkZhaWxlZCB0byBhbGxvY2F0ZSBt ZW1vcnkgZm9yIGV2ZW50bW9kZSBoZWxwZXINCj4gPiA+IGNvbmYiKTsNCj4gPiA+ID4gKwkJZ290 byBlcnI7DQo+ID4gPiA+ICsJfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsJLyogU2V0IGRlZmF1bHQg Y29uZiAqLw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJLyogUGFja2V0IHRyYW5zZmVyIG1vZGU6IHBv bGwgKi8NCj4gPiA+ID4gKwljb25mLT5tb2RlID0gRUhfUEtUX1RSQU5TRkVSX01PREVfUE9MTDsN Cj4gPiA+ID4gKwljb25mLT5pcHNlY19tb2RlID0gRUhfSVBTRUNfTU9ERV9UWVBFX0FQUDsNCj4g PiA+ID4gKwljb25mLT5pcHNlY19kaXIgPSBFSF9JUFNFQ19ESVJfVFlQRV9PVVRCT1VORDsNCj4g PiA+ID4gKw0KPiA+ID4gPiArCS8qIEtlZXAgYWxsIGV0aGVybmV0IHBvcnRzIGVuYWJsZWQgYnkg ZGVmYXVsdCAqLw0KPiA+ID4gPiArCWNvbmYtPmV0aF9wb3J0bWFzayA9IC0xOw0KPiA+ID4gPiAr DQo+ID4gPiA+ICsJLyogQWxsb2NhdGUgbWVtb3J5IGZvciBldmVudCBtb2RlIHBhcmFtcyAqLw0K PiA+ID4gPiArCWNvbmYtPm1vZGVfcGFyYW1zID0NCj4gPiA+ID4gKwkJY2FsbG9jKDEsIHNpemVv ZihzdHJ1Y3QgZXZlbnRtb2RlX2NvbmYpKTsNCj4gPiA+ID4gKwlpZiAoY29uZi0+bW9kZV9wYXJh bXMgPT0gTlVMTCkgew0KPiA+ID4gPiArCQlwcmludGYoIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1v cnkgZm9yIGV2ZW50IG1vZGUgcGFyYW1zIik7DQo+ID4gPiA+ICsJCWdvdG8gZXJyOw0KPiA+ID4g PiArCX0NCj4gPiA+ID4gKw0KPiA+ID4gPiArCS8qIEdldCBldmVudG1vZGUgY29uZiAqLw0KPiA+ ID4gPiArCWVtX2NvbmYgPSAoc3RydWN0IGV2ZW50bW9kZV9jb25mICopKGNvbmYtPm1vZGVfcGFy YW1zKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCS8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGJp dG1hcCBmb3IgZXRoIGNvcmVzICovDQo+ID4gPiA+ICsJbmJfYnl0ZXMgPSBydGVfYml0bWFwX2dl dF9tZW1vcnlfZm9vdHByaW50KFJURV9NQVhfTENPUkUpOw0KPiA+ID4gPiArCWlmICghbmJfYnl0 ZXMpIHsNCj4gPiA+ID4gKwkJcHJpbnRmKCJGYWlsZWQgdG8gZ2V0IGJpdG1hcCBmb290cHJpbnQi KTsNCj4gPiA+ID4gKwkJZ290byBlcnI7DQo+ID4gPiA+ICsJfQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICsJbWVtID0gcnRlX3ptYWxsb2MoImV2ZW50LWhlbHBlci1ldGhjb3JlLWJpdG1hcCIsIG5iX2J5 dGVzLA0KPiA+ID4gPiArCQkJICBSVEVfQ0FDSEVfTElORV9TSVpFKTsNCj4gPiA+ID4gKwlpZiAo IW1lbSkgew0KPiA+ID4gPiArCQlwcmludGYoIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9y IGV0aCBjb3JlcyBiaXRtYXBcbiIpOw0KPiA+ID4gPiArCQlnb3RvIGVycjsNCj4gPiA+ID4gKwl9 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwllbV9jb25mLT5ldGhfY29yZV9tYXNrID0gcnRlX2JpdG1h cF9pbml0KFJURV9NQVhfTENPUkUsDQo+ID4gPiBtZW0sIG5iX2J5dGVzKTsNCj4gPiA+ID4gKwlp ZiAoIWVtX2NvbmYtPmV0aF9jb3JlX21hc2spIHsNCj4gPiA+ID4gKwkJcHJpbnRmKCJGYWlsZWQg dG8gaW5pdGlhbGl6ZSBiaXRtYXAiKTsNCj4gPiA+ID4gKwkJZ290byBlcnI7DQo+ID4gPiA+ICsJ fQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsJLyogU2NoZWR1bGUgdHlwZTogb3JkZXJlZCAqLw0KPiA+ ID4gPiArCWVtX2NvbmYtPmV4dF9wYXJhbXMuc2NoZWRfdHlwZSA9IFJURV9TQ0hFRF9UWVBFX09S REVSRUQ7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwkvKiBTZXQgdHdvIGNvcmVzIGFzIGV0aCBjb3Jl cyBmb3IgUnggJiBUeCAqLw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJLyogVXNlIGZpcnN0IGNvcmUg b3RoZXIgdGhhbiBtYXN0ZXIgY29yZSBhcyBSeCBjb3JlICovDQo+ID4gPiA+ICsJZXRoX2NvcmVf aWQgPSBydGVfZ2V0X25leHRfbGNvcmUoMCwJLyogY3VyciBjb3JlICovDQo+ID4gPiA+ICsJCQkJ CSAxLAkvKiBza2lwIG1hc3RlciBjb3JlICovDQo+ID4gPiA+ICsJCQkJCSAwCS8qIHdyYXAgKi8p Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsJcnRlX2JpdG1hcF9zZXQoZW1fY29uZi0+ZXRoX2NvcmVf bWFzaywgZXRoX2NvcmVfaWQpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJLyogVXNlIG5leHQgY29y ZSBhcyBUeCBjb3JlICovDQo+ID4gPiA+ICsJZXRoX2NvcmVfaWQgPSBydGVfZ2V0X25leHRfbGNv cmUoZXRoX2NvcmVfaWQsCS8qIGN1cnIgY29yZQ0KPiA+ID4gKi8NCj4gPiA+ID4gKwkJCQkJIDEs CQkvKiBza2lwIG1hc3RlciBjb3JlICovDQo+ID4gPiA+ICsJCQkJCSAwCQkvKiB3cmFwICovKTsN Cj4gPiA+ID4gKw0KPiA+ID4gPiArCXJ0ZV9iaXRtYXBfc2V0KGVtX2NvbmYtPmV0aF9jb3JlX21h c2ssIGV0aF9jb3JlX2lkKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJldHVybiBjb25mOw0KPiA+ ID4gPiArZXJyOg0KPiA+ID4gPiArCXJ0ZV9mcmVlKG1lbSk7DQo+ID4gPiA+ICsJZnJlZShlbV9j b25mKTsNCj4gPiA+ID4gKwlmcmVlKGNvbmYpOw0KPiA+ID4gPiArCXJldHVybiBOVUxMOw0KPiA+ ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgdm9pZA0KPiA+ID4gPiArZWhfY29u Zl91bmluaXQoc3RydWN0IGVoX2NvbmYgKmNvbmYpIHsNCj4gPiA+ID4gKwlzdHJ1Y3QgZXZlbnRt b2RlX2NvbmYgKmVtX2NvbmYgPSBOVUxMOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJLyogR2V0IGV2 ZW50bW9kZSBjb25mICovDQo+ID4gPiA+ICsJZW1fY29uZiA9IChzdHJ1Y3QgZXZlbnRtb2RlX2Nv bmYgKikoY29uZi0+bW9kZV9wYXJhbXMpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJLyogRnJlZSBl dmVubW9kZSBjb25maWd1cmF0aW9uIG1lbW9yeSAqLw0KPiA+ID4gPiArCXJ0ZV9mcmVlKGVtX2Nv bmYtPmV0aF9jb3JlX21hc2spOw0KPiA+ID4gPiArCWZyZWUoZW1fY29uZik7DQo+ID4gPiA+ICsJ ZnJlZShjb25mKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIHZvaWQN Cj4gPiA+ID4gK3NpZ25hbF9oYW5kbGVyKGludCBzaWdudW0pDQo+ID4gPiA+ICt7DQo+ID4gPiA+ ICsJaWYgKHNpZ251bSA9PSBTSUdJTlQgfHwgc2lnbnVtID09IFNJR1RFUk0pIHsNCj4gPiA+ID4g KwkJdWludDE2X3QgcG9ydF9pZDsNCj4gPiA+ID4gKwkJcHJpbnRmKCJcblxuU2lnbmFsICVkIHJl Y2VpdmVkLCBwcmVwYXJpbmcgdG8gZXhpdC4uLlxuIiwNCj4gPiA+ID4gKwkJCQlzaWdudW0pOw0K PiA+ID4gPiArCQlmb3JjZV9xdWl0ID0gdHJ1ZTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCQkvKiBE ZXN0cm95IHRoZSBkZWZhdWx0IGlwc2VjIGZsb3cgKi8NCj4gPiA+ID4gKwkJUlRFX0VUSF9GT1JF QUNIX0RFVihwb3J0X2lkKSB7DQo+ID4gPiA+ICsJCQlpZiAoKGVuYWJsZWRfcG9ydF9tYXNrICYg KDEgPDwgcG9ydF9pZCkpID09IDApDQo+ID4gPiA+ICsJCQkJY29udGludWU7DQo+ID4gPiA+ICsJ CQlpZiAoZmxvd19pbmZvX3RibFtwb3J0X2lkXS5yeF9kZWZfZmxvdykgew0KPiA+ID4gPiArCQkJ CXN0cnVjdCBydGVfZmxvd19lcnJvciBlcnI7DQo+ID4gPiA+ICsJCQkJaW50IHJldDsNCj4gPiA+ DQo+ID4gPiBBcyB3ZSBhcmUgZ29pbmcgdG8gY2FsbCBkZXZfc3RvcCgpLCBldGMuIGF0IGZvcmNl X3F1aXQgYmVsb3csIGlzDQo+ID4gPiB0aGVyZSBhbnkgcmVhc29uIHRvIGNhbGwgcnRlX2Zsb3df ZGVzdHJveSgpIGhlcmU/DQo+ID4gPiBKdXN0IGN1cmlvdXMuDQo+ID4NCj4gPiBbQW5vb2JdIGRl dl9zdG9wKCkgc2hvdWxkIGNsZWFyIGFsbCB0aGUgcnRlX2Zsb3cgZW50cmllcy4gQnV0IGRvaW5n IGl0DQo+ID4gZnJvbSB0aGUgYXBwIGFzIGEgZ29vZCBjaXRpemVuLiDwn5iKDQo+ID4NCj4gPiBJ IGNhbiByZW1vdmUgaXQgc2luY2UgdGhlIHNhbWUgaXMgbm90IGRvbmUgZm9yIFNBIHNwZWNpZmlj IHJ0ZV9mbG93cyBjcmVhdGVkDQo+IGZvciBpbmxpbmUgY3J5cHRvLg0KPiANCj4gTm8gbmVlZCB0 byByZW1vdmUuDQo+IE15IHF1ZXN0aW9uIHdhcyBqdXN0IHN0eWxpc2ggb25lOg0KPiB3aHkgbm90 IHRvIGRvIGl0IGF0IHRoZSBzYW1lIHBsYWNlIHdoZXJlIGRldl9zdG9wKCkvZGV2X2Nsb3NlKCkg aXMgZG9uZSwgdG8NCj4gaGF2ZSBldmVyeXRoaW5nIGluIG9uZSBwbGFjZS4NCg0KW0Fub29iXSBJ IG1pc3VuZGVyc3Rvb2QgeW91ciBxdWVyeS4gV2lsbCBoYXZlIGl0IG1vdmVkIGNsb3NlIHRvIGRl dl9zdG9wKCkgZXRjLg0KIA0KPiANCj4gPg0KPiA+ID4NCj4gPiA+ID4gKwkJCQlyZXQgPSBydGVf Zmxvd19kZXN0cm95KHBvcnRfaWQsDQo+ID4gPiA+ICsJCQkJCWZsb3dfaW5mb190YmxbcG9ydF9p ZF0ucnhfZGVmX2Zsb3csDQo+ID4gPiA+ICsJCQkJCSZlcnIpOw0KPiA+ID4gPiArCQkJCWlmIChy ZXQpDQo+ID4gPiA+ICsJCQkJCVJURV9MT0coRVJSLCBJUFNFQywNCj4gPiA+ID4gKwkJCQkJIkZh aWxlZCB0byBkZXN0cm95IGZsb3cgZm9yIHBvcnQgJXUsICINCj4gPiA+ID4gKwkJCQkJImVyciBt c2c6ICVzXG4iLCBwb3J0X2lkLA0KPiA+ID4gZXJyLm1lc3NhZ2UpOw0KPiA+ID4gPiArCQkJfQ0K PiA+ID4gPiArCQl9DQo+ID4gPiA+ICsJfQ0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICBpbnQzMl90DQo+ID4gPiA+ICBtYWluKGludDMyX3QgYXJnYywgY2hhciAqKmFyZ3YpDQo+ID4g PiA+ICB7DQo+ID4gPiA+IEBAIC0yNDY2LDYgKzI3NTUsNyBAQCBtYWluKGludDMyX3QgYXJnYywg Y2hhciAqKmFyZ3YpDQo+ID4gPiA+ICAJdWludDhfdCBzb2NrZXRfaWQ7DQo+ID4gPiA+ICAJdWlu dDE2X3QgcG9ydGlkOw0KPiA+ID4gPiAgCXVpbnQ2NF90IHJlcV9yeF9vZmZsb2FkcywgcmVxX3R4 X29mZmxvYWRzOw0KPiA+ID4gPiArCXN0cnVjdCBlaF9jb25mICplaF9jb25mID0gTlVMTDsNCj4g PiA+ID4gIAlzaXplX3Qgc2Vzc19zejsNCj4gPiA+ID4NCj4gPiA+ID4gIAkvKiBpbml0IEVBTCAq Lw0KPiA+ID4gPiBAQCAtMjQ3NSw4ICsyNzY1LDE3IEBAIG1haW4oaW50MzJfdCBhcmdjLCBjaGFy ICoqYXJndikNCj4gPiA+ID4gIAlhcmdjIC09IHJldDsNCj4gPiA+ID4gIAlhcmd2ICs9IHJldDsN Cj4gPiA+ID4NCj4gPiA+ID4gKwlmb3JjZV9xdWl0ID0gZmFsc2U7DQo+ID4gPiA+ICsJc2lnbmFs KFNJR0lOVCwgc2lnbmFsX2hhbmRsZXIpOw0KPiA+ID4gPiArCXNpZ25hbChTSUdURVJNLCBzaWdu YWxfaGFuZGxlcik7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwkvKiBpbml0aWFsaXplIGV2ZW50IGhl bHBlciBjb25maWd1cmF0aW9uICovDQo+ID4gPiA+ICsJZWhfY29uZiA9IGVoX2NvbmZfaW5pdCgp Ow0KPiA+ID4gPiArCWlmIChlaF9jb25mID09IE5VTEwpDQo+ID4gPiA+ICsJCXJ0ZV9leGl0KEVY SVRfRkFJTFVSRSwgIkZhaWxlZCB0byBpbml0IGV2ZW50IGhlbHBlciBjb25maWciKTsNCj4gPiA+ ID4gKw0KPiA+ID4gPiAgCS8qIHBhcnNlIGFwcGxpY2F0aW9uIGFyZ3VtZW50cyAoYWZ0ZXIgdGhl IEVBTCBvbmVzKSAqLw0KPiA+ID4gPiAtCXJldCA9IHBhcnNlX2FyZ3MoYXJnYywgYXJndik7DQo+ ID4gPiA+ICsJcmV0ID0gcGFyc2VfYXJncyhhcmdjLCBhcmd2LCBlaF9jb25mKTsNCj4gPiA+ID4g IAlpZiAocmV0IDwgMCkNCj4gPiA+ID4gIAkJcnRlX2V4aXQoRVhJVF9GQUlMVVJFLCAiSW52YWxp ZCBwYXJhbWV0ZXJzXG4iKTsNCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTI1OTIsMTIgKzI4OTEsNDMg QEAgbWFpbihpbnQzMl90IGFyZ2MsIGNoYXIgKiphcmd2KQ0KPiA+ID4gPg0KPiA+ID4gPiAgCWNo ZWNrX2FsbF9wb3J0c19saW5rX3N0YXR1cyhlbmFibGVkX3BvcnRfbWFzayk7DQo+ID4gPiA+DQo+ ID4gPiA+ICsJLyoNCj4gPiA+ID4gKwkgKiBTZXQgdGhlIGVuYWJsZWQgcG9ydCBtYXNrIGluIGhl bHBlciBjb25maWcgZm9yIHVzZSBieSBoZWxwZXINCj4gPiA+ID4gKwkgKiBzdWItc3lzdGVtLiBU aGlzIHdpbGwgYmUgdXNlZCB3aGlsZSBpbnRpYWxpemluZyBkZXZpY2VzIHVzaW5nDQo+ID4gPiA+ ICsJICogaGVscGVyIHN1Yi1zeXN0ZW0uDQo+ID4gPiA+ICsJICovDQo+ID4gPiA+ICsJZWhfY29u Zi0+ZXRoX3BvcnRtYXNrID0gZW5hYmxlZF9wb3J0X21hc2s7DQo+ID4gPiA+ICsNCj4gPiA+ID4g KwkvKiBJbml0aWFsaXplIGV2ZW50bW9kZSBjb21wb25lbnRzICovDQo+ID4gPiA+ICsJcmV0ID0g ZWhfZGV2c19pbml0KGVoX2NvbmYpOw0KPiA+ID4gPiArCWlmIChyZXQgPCAwKQ0KPiA+ID4gPiAr CQlydGVfZXhpdChFWElUX0ZBSUxVUkUsICJlaF9kZXZzX2luaXQgZmFpbGVkLCBlcnI9JWRcbiIs DQo+ID4gPiByZXQpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICAJLyogbGF1bmNoIHBlci1sY29yZSBp bml0IG9uIGV2ZXJ5IGxjb3JlICovDQo+ID4gPiA+IC0JcnRlX2VhbF9tcF9yZW1vdGVfbGF1bmNo KG1haW5fbG9vcCwgTlVMTCwgQ0FMTF9NQVNURVIpOw0KPiA+ID4gPiArCXJ0ZV9lYWxfbXBfcmVt b3RlX2xhdW5jaChpcHNlY19sYXVuY2hfb25lX2xjb3JlLCBlaF9jb25mLA0KPiA+ID4gPiArQ0FM TF9NQVNURVIpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICAJUlRFX0xDT1JFX0ZPUkVBQ0hfU0xBVkUo bGNvcmVfaWQpIHsNCj4gPiA+ID4gIAkJaWYgKHJ0ZV9lYWxfd2FpdF9sY29yZShsY29yZV9pZCkg PCAwKQ0KPiA+ID4gPiAgCQkJcmV0dXJuIC0xOw0KPiA+ID4gPiAgCX0NCj4gPiA+ID4NCj4gPiA+ ID4gKwkvKiBVbmluaXRpYWxpemUgZXZlbnRtb2RlIGNvbXBvbmVudHMgKi8NCj4gPiA+ID4gKwly ZXQgPSBlaF9kZXZzX3VuaW5pdChlaF9jb25mKTsNCj4gPiA+ID4gKwlpZiAocmV0IDwgMCkNCj4g PiA+ID4gKwkJcnRlX2V4aXQoRVhJVF9GQUlMVVJFLCAiZWhfZGV2c191bmluaXQgZmFpbGVkLCBl cnI9JWRcbiIsDQo+ID4gPiByZXQpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJLyogRnJlZSBldmVu dG1vZGUgY29uZmlndXJhdGlvbiBtZW1vcnkgKi8NCj4gPiA+ID4gKwllaF9jb25mX3VuaW5pdChl aF9jb25mKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCVJURV9FVEhfRk9SRUFDSF9ERVYocG9ydGlk KSB7DQo+ID4gPiA+ICsJCWlmICgoZW5hYmxlZF9wb3J0X21hc2sgJiAoMSA8PCBwb3J0aWQpKSA9 PSAwKQ0KPiA+ID4gPiArCQkJY29udGludWU7DQo+ID4gPiA+ICsJCXByaW50ZigiQ2xvc2luZyBw b3J0ICVkLi4uIiwgcG9ydGlkKTsNCj4gPiA+ID4gKwkJcnRlX2V0aF9kZXZfc3RvcChwb3J0aWQp Ow0KPiA+ID4gPiArCQlydGVfZXRoX2Rldl9jbG9zZShwb3J0aWQpOw0KPiA+ID4gPiArCQlwcmlu dGYoIiBEb25lXG4iKTsNCj4gPiA+ID4gKwl9DQo+ID4gPiA+ICsJcHJpbnRmKCJCeWUuLi5cbiIp Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICAJcmV0dXJuIDA7DQo+ID4gPiA+ICB9DQo=