Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp7294468imm; Tue, 24 Jul 2018 11:33:10 -0700 (PDT) X-Google-Smtp-Source: AAOMgpf+nhysBdo4AYJZO4aUVBEJcViVq3ZNeiga5iEMentMlicsKNdtIj51tcBHxli/ED9inku+ X-Received: by 2002:a17:902:ab95:: with SMTP id f21-v6mr17669017plr.264.1532457190937; Tue, 24 Jul 2018 11:33:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532457190; cv=none; d=google.com; s=arc-20160816; b=VUFfw8jdr/1ApE7/mCoVj77UB9YWT6CeabnCvfJd06zijstz8YLpMZWwBrqITVWgFg DlGJVf28D7j1oGS6ySoOUymtBRgBYcmbuw76m8vp33q3COXY3Pfzg76LSzDYbtY/3GBO vwsxbx8GaSzySHe6W5MaacIZAB/5HoQQyvuuLsMu4PJ85wly8C0fDqKZ5GzlOAbg/SsE PsGvqN91Di6kMrHl01YGZjNMqDRyJ7LD6DdVaPq0gPcLKhdLTaIV5vXX3tPOym/1II4p G+cJe8hLpM/+3BAhFjA6x3gG0bUnKBEAtMo2JvzIAaSG5gSAk8hVGQ1VWJ1NzA3Qi1X0 eFZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :spamdiagnosticmetadata:spamdiagnosticoutput:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=J5fJAGS1WI49mzR0Kh1sY7ZsRV/n5lqmDbkazblXjcU=; b=e82+pR+qJfAKfA+zZCICYoo2hf5rn27XfEC32wpU/1/OroqXjogA6zTP6JR18ydqZ/ pSSe92WS+7dRDR/Dnl8fBoxG8P+BK9nEhetDZM2vaecp9esFaSfhXAry7olDV6fx1d/V ktVAeXM93zbpKdmmTmxek7IZ5vX0RiP0DyyAqkV3O8mT57wrN/Z1LMUOrY69OtT9ybuq j3LMRRSE4tGqhQl5Mrl9ulOAY8gI2r9OllJc3o7iPRrj3KJVZATL3IHsGRTjoYCJkCBd 1SVakhBWCX9bX1Z34cwIYQNQ7yUqSj4jRLpG9ZzS8h+WDk3J9upVFwtck8hvrUM+Ytvi JVKA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@xilinx.onmicrosoft.com header.s=selector1-xilinx-com header.b=gENwu148; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f23-v6si10464027plr.247.2018.07.24.11.32.56; Tue, 24 Jul 2018 11:33:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@xilinx.onmicrosoft.com header.s=selector1-xilinx-com header.b=gENwu148; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388493AbeGXTjp (ORCPT + 99 others); Tue, 24 Jul 2018 15:39:45 -0400 Received: from mail-cys01nam02on0055.outbound.protection.outlook.com ([104.47.37.55]:23313 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388413AbeGXTjp (ORCPT ); Tue, 24 Jul 2018 15:39:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=J5fJAGS1WI49mzR0Kh1sY7ZsRV/n5lqmDbkazblXjcU=; b=gENwu148gPZif8vujMOPO2FaU6hdJqutkV/Ti300l9UWiAzEwMm26ASXTlXD1/gd1zxfGZyxcPy8SPN8UDMeXWfU/24VDxelKTf58CBXIyoL6QQgCR9g+ylQwcm1xv3Vu4LWWe61J/muEbsYht6GUGJHLgLghqQiKq/9NEnZpxQ= Received: from CY1PR02MB1692.namprd02.prod.outlook.com (10.162.161.26) by CY1PR02MB2089.namprd02.prod.outlook.com (10.166.190.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.22; Tue, 24 Jul 2018 18:31:46 +0000 Received: from CY1PR02MB1692.namprd02.prod.outlook.com ([fe80::9dbd:bd61:c2d3:4b95]) by CY1PR02MB1692.namprd02.prod.outlook.com ([fe80::9dbd:bd61:c2d3:4b95%3]) with mapi id 15.20.0973.022; Tue, 24 Jul 2018 18:31:44 +0000 From: Appana Durga Kedareswara Rao To: Moritz Fischer CC: Alan Tull , Nava kishore Manne , Michal Simek , "linux-fpga@vger.kernel.org" , linux-arm-kernel , Linux Kernel Mailing List Subject: RE: [PATCH v3 2/2] fpga: zynq-fpga: Add support for readback Thread-Topic: [PATCH v3 2/2] fpga: zynq-fpga: Add support for readback Thread-Index: AQHUI1kdQYf467r9ZE6tdqpx/KPVD6SekS4AgAAgjBA= Date: Tue, 24 Jul 2018 18:31:44 +0000 Message-ID: References: <1532441858-13507-1-git-send-email-appana.durga.rao@xilinx.com> <1532441858-13507-2-git-send-email-appana.durga.rao@xilinx.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=appanad@xilinx.com; x-originating-ip: [182.72.145.30] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;CY1PR02MB2089;6:iA2AG52Hy6zEZC7X7+hwNhd5Nyksz8p+1CwPTgG72LSvZmmRPzn5NTZZAkJ0MecbFInLOsOGW1K9c0UTHTViUfpQhODSR6QMNrwXqYi8vRNZYaXu123tXX958+wZnKr7iHvrXDDIMyLzLbBjQFHo2oz8b3Vk2oAMi6WASTyRJrtOkcfE5K7DIEQEaq0zpbhjdiwKhpf1tMHwO3F9/TlIvbtHC4zb8HcxGUCZVS+IJC38vBNcm8JjvMCfpYPYQRQicfiKmG5a4Q4Non7qx/VF4+33pfmK+aBw0f7cPuiXBzCSJmdbKoz6OJptvlO3otKYB6c4wSFjfplCWV92BSA+u1Xs8a3FjcoRcK7sz61CLS3UY4VBU1Z9etYAHnKz9mffnQ0O6mUdIIn0ePf1mCwUgfGryDliwnU3HIWaFOg7ijHZ5jmG2CtURtXGDGlxN5zXnm+ZfSGhWIbDbAv8S8Eg6w==;5:Ii5zCO6yCVCY3eHayicyXGJrfWW/3QsChH//DUjKyTVKiBmOunJhXgvGM5wTbh+2r26mXA1VxkHz3RSnI1z4lsxM6qs3Nz9UxRPsRtt5yhxGKW+/LCwemLX8JzU17Ym9y89YU9MJ9Jx7xT2TH5zsz0jGDwoYX9WXwKD8cYNvCOI=;7:4qIs4TavItSqFDh8Nor6YEXQUdi05boUVkb62uYWfuVW6HsoHtmPUs2MOJWiwGnLBvAO5zSG+8h8K9p5VFeleozDxUpGQKjAPHhqNUsIxG/0VXEwvR+/YPdBK2stceXYR6vSdrOgq0SlfU2Da+/tAyRa79yrTIXOS5ynBCi92yNah90vK8qtiBAlbwIsrjkMTC/n0utRUyOYPlGDdOGYkDx5yj3fGDTLBCVuvQfjwmTlppMpZ+C6fFVbdHMau0l0 x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-ms-office365-filtering-correlation-id: 029ca9de-2f47-4126-2678-08d5f193b56f x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989117)(5600073)(711020)(4618075)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020);SRVR:CY1PR02MB2089; x-ms-traffictypediagnostic: CY1PR02MB2089: x-ld-processed: 657af505-d5df-48d0-8300-c31994686c5c,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(9452136761055); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(3231311)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016);SRVR:CY1PR02MB2089;BCL:0;PCL:0;RULEID:;SRVR:CY1PR02MB2089; x-forefront-prvs: 0743E8D0A6 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(396003)(376002)(136003)(366004)(346002)(199004)(189003)(51914003)(2906002)(6116002)(97736004)(54906003)(478600001)(3846002)(99286004)(486006)(86362001)(446003)(74316002)(11346002)(7736002)(476003)(8676002)(316002)(81166006)(14454004)(81156014)(186003)(966005)(8936002)(305945005)(25786009)(26005)(4326008)(6436002)(106356001)(6306002)(76176011)(229853002)(9686003)(6506007)(6246003)(33656002)(102836004)(105586002)(55016002)(53936002)(66066001)(6916009)(2900100001)(5660300001)(14444005)(55236004)(256004)(7696005)(5250100002)(68736007);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR02MB2089;H:CY1PR02MB1692.namprd02.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: xilinx.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: Nf75zpP6HaiE5OY5XN9h8aWyGWLE7PC591hdaf8EbuDhHRbWuVR/K5d6xjZbf8ciAvOrs4+mUsk55QD25Nz3ZPqjW0irlz4ZG6ljerbSismyDH0lCmFGZBfraKRl6ijHfNw9pB37q+zm60+5LVFFL5JKItdDAHFb2hXTFCoyT8QHApLYycPTgSJZAfLbGEgH5HcT0Bh5J/ORKn4N2naqGGUeq17Hta//HyVvWAD5iFa5FJMcaOcp7A4oVO30Xq38Ed+hD6o3JLI11tKtbchsuE52MlMsXHEVMK+ZgdXhCPqMojbVHoDm53Smmx0IsAijMKUwfOZDQDv9Mc8UnkP6sfAaZj8vXojpJcEYfmRIVXE= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-Network-Message-Id: 029ca9de-2f47-4126-2678-08d5f193b56f X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jul 2018 18:31:44.8615 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR02MB2089 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgTW9yaXR6LA0KDQoJVGhhbmtzIGZvciB0aGUgcmV2aWV3Li4uDQoNCjxTbmlwPiANCj4gQ2Fu IHlvdSBwbGVhc2UgbWFrZSB0aGUgY29tbWl0IG1lc3NhZ2Ugc3VjaCB0aGF0IHlvdSBoYXZlIGZ1 bGwgc2VudGVuY2VzPw0KPiANCj4gIkFkZCBzdXBwb3J0IGZvciByZWFkYmFjayBvZiBGUEdBIGNv bmZpZ3VyYXRpb24gZGF0YSBhbmQgcmVnaXN0ZXJzIiBvZiANCj4gZXhhbXBsZS4NCg0KU3VyZSB3 aWxsIGZpeCBpbiB2NC4NCg0KPiANCj4gPg0KPiA+IFVzYWdlOg0KPiA+IFJlYWRiYWNrIG9mIFBM IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzDQo+ID4gICAgICAgICBjYXQgL3N5cy9rZXJuZWwvZGVi dWcvZnBnYS9mcGdhMC9pbWFnZQ0KPiA+IFJlYWRiYWNrIG9mIFBMIGNvbmZpZ3VyYXRpb24gZGF0 YQ0KPiA+ICAgICAgICAgZWNobyAxID4gL3N5cy9tb2R1bGUvenlucW1wX2ZwZ2EvcGFyYW1ldGVy cy9yZWFkYmFja190eXBlDQo+IA0KPiBUaGUgcGF0Y2ggYmVsb3cgaXMgZm9yIFp5bnEgaWYgSSdt IG5vdCBtaXN0YWtlbiwgbm90IFp5bnFNUD8NCg0KWWVzIGl0IGlzIGZvciBaeW5xIG5vdCBaeW5x TVAgYnkgbWlzdGFrZSBJIGhhdmUga2VwdCB6eW5xbXAgaGVyZSwgdGhhbmtzIGZvciBwb2ludGlu ZyAgd2lsbCBmaXggaW4gdjQuLi4NCg0KPFNuaXA+IA0KPiA+ICtzdGF0aWMgYm9vbCByZWFkYmFj a190eXBlOw0KPiA+ICttb2R1bGVfcGFyYW0ocmVhZGJhY2tfdHlwZSwgYm9vbCwgMDY0NCk7IA0K PiA+ICtNT0RVTEVfUEFSTV9ERVNDKHJlYWRiYWNrX3R5cGUsDQo+ID4gKyAgICAgICAgICAgICAg ICJyZWFkYmFja190eXBlIDAtY29uZmlndXJhdGlvbiByZWdpc3RlciByZWFkICINCj4gPiArICAg ICAgICAgICAgICAgIjEtIGNvbmZpZ3VyYXRpb24gZGF0YSByZWFkIChkZWZhdWx0OiAwKSIpOw0K PiANCj4gTm90IHN1cmUgYSBtb2R1bGUgcGFyYW0gaXMgdGhlIGJlc3Qgc29sdXRpb24gaGVyZS4N Cg0KTmVlZCB0byBwcm92aWRlIGZsZXhpYmlsaXR5IHRvIHRoZSB1c2VyIHRvIHN3aXRjaCBiZXR3 ZWVuIHJlYWRpbmcgb2YgRlBHQSByZWdpc3RlcnMgYW5kIGNvbmZpZ3VyYXRpb24gZGF0YS4NCk9u ZSBvdGhlciBvcHRpb24gaXMgc3lzZnMuIERvIHlvdSB3YW50IG1lIHRvIGltcGxlbWVudCBzeXNm cyBwYXRoPz8/IA0KQW55IG90aGVyIHN1Z2dlc3Rpb25zPz8/IA0KDQo8U25pcD4gDQo+ID4gKy8q IE1hc2tzIGZvciBDb25maWd1cmF0aW9uIHJlZ2lzdGVycyAqLw0KPiA+ICsjZGVmaW5lIEZBUl9B RERSX01BU0sgICAgICAgICAgMHgwMDAwMDAwMA0KPiA+ICsjZGVmaW5lIFJDRkdfQ01EX01BU0sg ICAgICAgICAgMHgwMDAwMDAwNA0KPiA+ICsjZGVmaW5lIFNUQVJUX0NNRF9NQVNLICAgICAgICAg MHgwMDAwMDAwNQ0KPiA+ICsjZGVmaW5lIFJDUkNfQ01EX01BU0sgICAgICAgICAgMHgwMDAwMDAw Nw0KPiANCj4gQklUKCkgYW5kIEdFTk1BU0soKSB3b3VsZCB3b3JrIGhlcmUuDQoNClN1cmUgd2ls bCBmaXggaW4gdjQuLi4gDQoNCj4gDQo+ID4gKyNkZWZpbmUgU0hVVERPV05fQ01EX01BU0sgICAg ICAweDAwMDAwMDBCDQo+ID4gKyNkZWZpbmUgREVTWU5DX1dPUkRfTUFTSyAgICAgICAweDAwMDAw MDBEDQo+ID4gKyNkZWZpbmUgQlVTV0lEVEhfU1lOQ1dPUkRfTUFTSyAweDAwMDAwMEJCDQo+ID4g KyNkZWZpbmUgTk9PUF9XT1JEX01BU0sgICAgICAgICAweDIwMDAwMDAwDQo+ID4gKyNkZWZpbmUg QlVTV0lEVEhfREVURUNUX01BU0sgICAweDExMjIwMDQ0DQo+ID4gKyNkZWZpbmUgU1lOQ19XT1JE X01BU0sgICAgICAgICAweEFBOTk1NTY2DQo+ID4gKyNkZWZpbmUgRFVNTVlfV09SRF9NQVNLICAg ICAgICAgICAgICAgIDB4RkZGRkZGRkYNCj4gDQo+IEdFTk1BU0soKSB3b3VsZCBwcm9iYWJseSB3 b3JrIGZvciBtb3N0IG9mIHRoZSBhYm92ZSBvbmVzDQoNClN1cmUgd2lsbCB1c2UgR0VOTUFLIHdo ZXJldmVyIGFwcGxpY2FibGUgd2lsbCBmaXggaW4gdjQuDQoNCjxTbmlwPiANCj4gPiArICAgICAg ICAqIEdlbmVyYXRpbmcgdGhlIFR5cGUgMSBwYWNrZXQgaGVhZGVyIHdoaWNoIGludm9sdmVzIA0K PiA+ICtzaWZ0aW5nIG9mIFR5cGUxDQo+IFNoaWZ0aW5nPyBNYXliZSB5b3UgY2FuIGp1c3QgcmVm ZXJlbmNlIHRoZSBzZWN0aW9uIHRoYXQgZG9jdW1lbnRzIHRoaXMgDQo+IGluIHRoZSBUUk0/DQoN ClN1cmUgd2lsbCBmaXggaW4gdjQuLi4gDQoNCjxTbmlwPg0KPiAqKioqKioNCj4gPiArKioqKioq KiovIHN0YXRpYyBpbnQgenlucV90eXBlMl9wa3QodTggT3BDb2RlLCB1MzIgU2l6ZSkNCj4gDQo+ IE5vIGNhbWVsIGNhc2UgcGxlYXNlLCBjYW4geW91IG1ha2UgU2l6ZSBhbmQgT3BDb2RlIHNtYWxs IGNhcHMgcGxlYXNlPw0KPiBBbHNvIHBsZWFzZSBtYWtlIHRoZSB0d28gZnVuY3Rpb25zIGNvbnNp c3RlbnQuDQoNClN1cmUgd2lsbCBmaXggaW4gdjQuLi4NCg0KPiA+ICt7DQo+ID4gKyAgICAgICAv Kg0KPiA+ICsgICAgICAgICogVHlwZSAyIFBhY2tldCBIZWFkZXIgRm9ybWF0DQo+ID4gKyAgICAg ICAgKiBUaGUgaGVhZGVyIHNlY3Rpb24gaXMgYWx3YXlzIGEgMzItYml0IHdvcmQuDQo+ID4gKyAg ICAgICAgKg0KPiA+ICsgICAgICAgICogSGVhZGVyVHlwZSB8IE9wY29kZSB8ICBXb3JkIENvdW50 DQo+ID4gKyAgICAgICAgKiBbMzE6MjldICAgICAgWzI4OjI3XSAgICAgICAgIFsyNjowXQ0KPiA+ ICsgICAgICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCj4gPiArICAgICAgICAqICAgMDEwICAgICAgICAgIHh4ICAgICAg eHh4eHh4eHh4eHh4eA0KPiA+ICsgICAgICAgICoNCj4gPiArICAgICAgICAqIEBSOiBtZWFucyB0 aGUgYml0IGlzIG5vdCB1c2VkIGFuZCByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4NCj4gPiArICAg ICAgICAqIFRoZSByZXNlcnZlZCBiaXRzIHNob3VsZCBiZSB3cml0dGVuIGFzIDBzLg0KPiA+ICsg ICAgICAgICoNCj4gPiArICAgICAgICAqIEdlbmVyYXRpbmcgdGhlIFR5cGUgMiBwYWNrZXQgaGVh ZGVyIHdoaWNoIGludm9sdmVzIA0KPiA+ICtzaWZ0aW5nIG9mIFR5cGUgMg0KPiANCj4gcy9zaWZ0 aW5nL3NoaWZ0aW5nLw0KDQpTdXJlIHdpbGwgZml4IGluIHY0Li4uDQoNCj4gPiArICAgICAgICAq IEhlYWRlciBNYXNrLCBPcENvZGUgYW5kIHRoZW4gcGVyZm9ybWluZyBPUg0KPiA+ICsgICAgICAg ICogb3BlcmF0aW9uIHdpdGggdGhlIFdvcmQgTGVuZ3RoLg0KPiA+ICsgICAgICAgICovDQo+ID4g KyAgICAgICByZXR1cm4gKCgoMiA8PCBUWVBFX0hEUl9TSElGVCkgfA0KPiA+ICsgICAgICAgICAg ICAgICAoT3BDb2RlIDw8IFRZUEVfT1BfU0hJRlQpKSB8IFNpemUpOyB9DQo+ID4gKw0KPiA+ICtz dGF0aWMgaW50IHp5bnFfZnBnYV9yZWFkX2NmZ2RhdGEoc3RydWN0IGZwZ2FfbWFuYWdlciAqbWdy LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VxX2ZpbGUg KnMpIHsNCj4gPiArICAgICAgIHN0cnVjdCB6eW5xX2ZwZ2FfcHJpdiAqcHJpdjsNCj4gPiArICAg ICAgIGludCByZXQgPSAwLCBpLCBjbWRpbmRleCwgY2xrX3JhdGU7DQo+ID4gKyAgICAgICB1bnNp Z25lZCBpbnQgKmJ1ZjsNCj4gPiArICAgICAgIGRtYV9hZGRyX3QgZG1hX2FkZHI7DQo+ID4gKyAg ICAgICB1MzIgaW50cl9zdGF0dXMsIHN0YXR1czsNCj4gPiArICAgICAgIHNpemVfdCBzaXplOw0K PiANCj4gUmV2ZXJzZSB4bWFzIHRyZWUgcGxlYXNlDQoNCk9rIHN1cmUgd2lsbCB2NC4uLiANCg0K PiA+ICsNCj4gPiArICAgICAgIHByaXYgPSBtZ3ItPnByaXY7DQo+ID4gKyAgICAgICBzaXplID0g cHJpdi0+c2l6ZSArIFJFQURfRE1BX1NJWkUgKyBEVU1NWV9GUkFNRVNfU0laRTsNCj4gPiArICAg ICAgIGJ1ZiA9IGRtYV96YWxsb2NfY29oZXJlbnQobWdyLT5kZXYucGFyZW50LCBzaXplLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkbWFfYWRkciwgR0ZQX0tFUk5FTCk7 DQo+ID4gKyAgICAgICBpZiAoIWJ1ZikNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9N RU07DQo+ID4gKw0KPiA+ICsgICAgICAgc2VxX3B1dHMocywgInp5bnEgRlBHQSBDb25maWd1cmF0 aW9uIGRhdGEgY29udGVudHMgYXJlXG4iKTsNCj4gPiArDQo+ID4gKyAgICAgICAvKg0KPiA+ICsg ICAgICAgICogVGhlcmUgaXMgbm8gaC93IGZsb3cgY29udHJvbCBmb3IgcGNhcCByZWFkDQo+ID4g KyAgICAgICAgKiB0byBwcmV2ZW50IHRoZSBGSUZPIGZyb20gb3ZlciBmbG93aW5nLCByZWR1Y2UN Cj4gPiArICAgICAgICAqIHRoZSBQQ0FQIG9wZXJhdGluZyBmcmVxdWVuY3kuDQo+ID4gKyAgICAg ICAgKi8NCj4gPiArICAgICAgIGNsa19yYXRlID0gY2xrX2dldF9yYXRlKHByaXYtPmNsayk7DQo+ ID4gKyAgICAgICByZXQgPSBjbGtfc2V0X3JhdGUocHJpdi0+Y2xrLCBTTENSX1BDQVBfRlJFUSk7 DQo+ID4gKyAgICAgICBpZiAocmV0KSB7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9lcnIoJm1n ci0+ZGV2LCAiVW5hYmxlIHRvIHJlZHVjZSB0aGUgUENBUCBmcmVxXG4iKTsNCj4gPiArICAgICAg ICAgICAgICAgZ290byBmcmVlX2RtYWJ1ZjsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAg ICAgICByZXQgPSB6eW5xX2ZwZ2FfcG9sbF90aW1lb3V0KHByaXYsIFNUQVRVU19PRkZTRVQsIHN0 YXR1cywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzICYg U1RBVFVTX1BDRkdfSU5JVF9NQVNLLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJTklUX1BPTExfREVMQVksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElOSVRfUE9MTF9USU1FT1VUKTsNCj4gPiArICAgICAgIGlmIChyZXQpIHsNCj4g PiArICAgICAgICAgICAgICAgZGV2X2VycigmbWdyLT5kZXYsICJUaW1lb3V0IHdhaXRpbmcgZm9y IFBDRkdfSU5JVFxuIik7DQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gcmVzdG9yZV9wY2FwX2Ns azsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBjbWRpbmRleCA9IDA7DQo+ID4g KyAgICAgICBidWZbY21kaW5kZXgrK10gPSBEVU1NWV9XT1JEX01BU0s7DQo+ID4gKyAgICAgICBi dWZbY21kaW5kZXgrK10gPSBCVVNXSURUSF9TWU5DV09SRF9NQVNLOw0KPiA+ICsgICAgICAgYnVm W2NtZGluZGV4KytdID0gQlVTV0lEVEhfREVURUNUX01BU0s7DQo+ID4gKyAgICAgICBidWZbY21k aW5kZXgrK10gPSBEVU1NWV9XT1JEX01BU0s7DQo+ID4gKyAgICAgICBidWZbY21kaW5kZXgrK10g PSBTWU5DX1dPUkRfTUFTSzsNCj4gPiArICAgICAgIGJ1ZltjbWRpbmRleCsrXSA9IE5PT1BfV09S RF9NQVNLOw0KPiA+ICsgICAgICAgYnVmW2NtZGluZGV4KytdID0genlucV90eXBlMV9wa3QoVFlQ RV9DTURfT0ZGU0VULA0KPiBUWVBFX09QQ09ERV9XUklURSwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDEpOw0KPiA+ICsgICAgICAgYnVmW2NtZGluZGV4Kytd ID0gU0hVVERPV05fQ01EX01BU0s7DQo+ID4gKyAgICAgICBidWZbY21kaW5kZXgrK10gPSBOT09Q X1dPUkRfTUFTSzsNCj4gPiArICAgICAgIGJ1ZltjbWRpbmRleCsrXSA9IHp5bnFfdHlwZTFfcGt0 KFRZUEVfQ01EX09GRlNFVCwNCj4gVFlQRV9PUENPREVfV1JJVEUsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsNCj4gPiArICAgICAgIGJ1ZltjbWRpbmRl eCsrXSA9IFJDUkNfQ01EX01BU0s7DQo+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsr KQ0KPiBNYWdpYyBjb25zdGFudD8NCg0KU3VyZSB3aWxsIGZpeCBpbiB2NC4uLi4NCg0KPiA+ICsg ICAgICAgICAgICAgICBidWZbY21kaW5kZXgrK10gPSBOT09QX1dPUkRfTUFTSzsNCj4gPiArICAg ICAgIGJ1ZltjbWRpbmRleCsrXSA9IHp5bnFfdHlwZTFfcGt0KFRZUEVfQ01EX09GRlNFVCwNCj4g VFlQRV9PUENPREVfV1JJVEUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAxKTsNCj4gPiArICAgICAgIGJ1ZltjbWRpbmRleCsrXSA9IFJDRkdfQ01EX01BU0s7 DQo+ID4gKyAgICAgICBidWZbY21kaW5kZXgrK10gPSBOT09QX1dPUkRfTUFTSzsNCj4gPiArICAg ICAgIGJ1ZltjbWRpbmRleCsrXSA9IHp5bnFfdHlwZTFfcGt0KFRZUEVfRkFSX09GRlNFVCwNCj4g VFlQRV9PUENPREVfV1JJVEUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAxKTsNCj4gPiArICAgICAgIGJ1ZltjbWRpbmRleCsrXSA9IEZBUl9BRERSX01BU0s7 DQo+ID4gKyAgICAgICBidWZbY21kaW5kZXgrK10gPSB6eW5xX3R5cGUxX3BrdChUWVBFX0ZEUk9f T0ZGU0VULA0KPiBUWVBFX09QQ09ERV9SRUFELA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMCk7DQo+ID4gKyAgICAgICBidWZbY21kaW5kZXgrK10gPSB6eW5x X3R5cGUyX3BrdChUWVBFX09QQ09ERV9SRUFELCBwcml2LQ0KPiA+c2l6ZS80KTsNCj4gPiArICAg ICAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKQ0KPiBNYWdpYyBjb25zdGFudD8NCg0KU3VyZSB3 aWxsIGZpeCBpbiB2NC4uLi4NCg0KPiA+ICsgICAgICAgICAgICAgICBidWZbY21kaW5kZXgrK10g PSBOT09QX1dPUkRfTUFTSzsNCj4gPiArDQo+ID4gKyAgICAgICBpbnRyX3N0YXR1cyA9IHp5bnFf ZnBnYV9yZWFkKHByaXYsIElOVF9TVFNfT0ZGU0VUKTsNCj4gPiArICAgICAgIHp5bnFfZnBnYV93 cml0ZShwcml2LCBJTlRfU1RTX09GRlNFVCwgaW50cl9zdGF0dXMpOw0KPiA+ICsNCj4gPiArICAg ICAgIC8qIFdyaXRlIHRvIFBDQVAgKi8NCj4gPiArICAgICAgIHp5bnFfZnBnYV9kbWFfeGZlcihw cml2LCBkbWFfYWRkciwgY21kaW5kZXgsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg RE1BX0lOVkFMSURfQUREUkVTUywgMCk7DQo+ID4gKyAgICAgICByZXQgPSB6eW5xX2ZwZ2Ffd2Fp dF9mb3Jkb25lKHByaXYpOw0KPiA+ICsgICAgICAgaWYgKHJldCkgew0KPiA+ICsgICAgICAgICAg ICAgICBkZXZfZXJyKCZtZ3ItPmRldiwgIlNSQ0RNQTogVGltZW91dCB3YWl0aW5nIGZvcg0KPiBE X1BfRE9ORVxuIik7DQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gcmVzdG9yZV9wY2FwX2NsazsN Cj4gPiArICAgICAgIH0NCj4gPiArICAgICAgIGludHJfc3RhdHVzID0genlucV9mcGdhX3JlYWQo cHJpdiwgSU5UX1NUU19PRkZTRVQpOw0KPiA+ICsgICAgICAgenlucV9mcGdhX3dyaXRlKHByaXYs IElOVF9TVFNfT0ZGU0VULCBpbnRyX3N0YXR1cyk7DQo+ID4gKw0KPiA+ICsgICAgICAgLyogUkVB RCBGcm9tIFBBQ1AgKi8NCj4gPiArICAgICAgIHp5bnFfZnBnYV9kbWFfeGZlcihwcml2LCBETUFf SU5WQUxJRF9BRERSRVNTLCAwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGRtYV9h ZGRyICsgUkVBRF9ETUFfU0laRSwgcHJpdi0+c2l6ZS80KTsNCj4gPiArICAgICAgIHJldCA9IHp5 bnFfZnBnYV93YWl0X2ZvcmRvbmUocHJpdik7DQo+ID4gKyAgICAgICBpZiAocmV0KSB7DQo+ID4g KyAgICAgICAgICAgICAgIGRldl9lcnIoJm1nci0+ZGV2LCAiRFNURE1BOiBUaW1lb3V0IHdhaXRp bmcgZm9yDQo+IERfUF9ET05FXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgZ290byByZXN0b3Jl X3BjYXBfY2xrOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAgaW50cl9zdGF0dXMgPSB6eW5x X2ZwZ2FfcmVhZChwcml2LCBJTlRfU1RTX09GRlNFVCk7DQo+ID4gKyAgICAgICB6eW5xX2ZwZ2Ff d3JpdGUocHJpdiwgSU5UX1NUU19PRkZTRVQsIGludHJfc3RhdHVzKTsNCj4gPiArDQo+ID4gKyAg ICAgICAvKiBXcml0ZSB0byBQQ0FQICovDQo+ID4gKyAgICAgICBjbWRpbmRleCA9IDA7DQo+ID4g KyAgICAgICBidWZbY21kaW5kZXgrK10gPSBOT09QX1dPUkRfTUFTSzsNCj4gPiArICAgICAgIGJ1 ZltjbWRpbmRleCsrXSA9IHp5bnFfdHlwZTFfcGt0KFRZUEVfQ01EX09GRlNFVCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEVfT1BDT0RFX1dSSVRFLCAx KTsNCj4gPiArICAgICAgIGJ1ZltjbWRpbmRleCsrXSA9IFNUQVJUX0NNRF9NQVNLOw0KPiA+ICsg ICAgICAgYnVmW2NtZGluZGV4KytdID0gTk9PUF9XT1JEX01BU0s7DQo+ID4gKw0KPiA+ICsgICAg ICAgYnVmW2NtZGluZGV4KytdID0genlucV90eXBlMV9wa3QoVFlQRV9DTURfT0ZGU0VULA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFlQRV9PUENPREVfV1JJ VEUsIDEpOw0KPiA+ICsgICAgICAgYnVmW2NtZGluZGV4KytdID0gUkNSQ19DTURfTUFTSzsNCj4g PiArICAgICAgIGJ1ZltjbWRpbmRleCsrXSA9IE5PT1BfV09SRF9NQVNLOw0KPiA+ICsgICAgICAg YnVmW2NtZGluZGV4KytdID0genlucV90eXBlMV9wa3QoVFlQRV9DTURfT0ZGU0VULA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFlQRV9PUENPREVfV1JJVEUs IDEpOw0KPiA+ICsgICAgICAgYnVmW2NtZGluZGV4KytdID0gREVTWU5DX1dPUkRfTUFTSzsNCj4g PiArICAgICAgIGJ1ZltjbWRpbmRleCsrXSA9IE5PT1BfV09SRF9NQVNLOw0KPiA+ICsgICAgICAg YnVmW2NtZGluZGV4KytdID0gTk9PUF9XT1JEX01BU0s7DQo+ID4gKw0KPiA+ICsgICAgICAgenlu cV9mcGdhX2RtYV94ZmVyKHByaXYsIGRtYV9hZGRyLCBjbWRpbmRleCwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICBETUFfSU5WQUxJRF9BRERSRVNTLCAwKTsNCj4gPiArICAgICAgIHJl dCA9IHp5bnFfZnBnYV93YWl0X2ZvcmRvbmUocHJpdik7DQo+ID4gKyAgICAgICBpZiAocmV0KSB7 DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9lcnIoJm1nci0+ZGV2LCAiU1JDRE1BMTogVGltZW91 dCB3YWl0aW5nIGZvcg0KPiBEX1BfRE9ORVxuIik7DQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8g cmVzdG9yZV9wY2FwX2NsazsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBzZXFf d3JpdGUocywgJmJ1ZltSRUFEX0RNQV9TSVpFLzRdLCBwcml2LT5zaXplKTsNCj4gPiArDQo+ID4g K3Jlc3RvcmVfcGNhcF9jbGs6DQo+ID4gKyAgICAgICBjbGtfc2V0X3JhdGUocHJpdi0+Y2xrLCBj bGtfcmF0ZSk7DQo+ID4gK2ZyZWVfZG1hYnVmOg0KPiA+ICsgICAgICAgZG1hX2ZyZWVfY29oZXJl bnQobWdyLT5kZXYucGFyZW50LCBzaXplLCBidWYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICBkbWFfYWRkcik7DQo+ID4gKyAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgaW50IHp5bnFfZnBnYV9nZXRjb25maWdyZWcoc3RydWN0IGZwZ2FfbWFuYWdl ciAqbWdyLCB1OCByZWcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRt YV9hZGRyX3QgZG1hX2FkZHIsIGludCAqYnVmKQ0KPiB6eW5xX2ZwZ2FfZ2V0X2NvbmZpZ19yZWcg bWF5YmU/DQoNCk9rIHdpbGwgZml4IGluIHY0Li4uDQoNCj4gPiArew0KPiA+ICsgICAgICAgc3Ry dWN0IHp5bnFfZnBnYV9wcml2ICpwcml2Ow0KPiA+ICsgICAgICAgaW50IHJldCA9IDAsIGNtZGlu ZGV4LCBzcmNfZG1hb2Zmc2V0Ow0KPiA+ICsgICAgICAgdTMyIGludHJfc3RhdHVzLCBzdGF0dXM7 DQo+IA0KPiBTYW1lIGhlcmUuDQoNClN1cmUgd2lsbCBmaXggaW4gdjQuLi4uDQoNCj4gPiArDQo+ ID4gKyAgICAgICBwcml2ID0gbWdyLT5wcml2Ow0KPiA+ICsNCj4gPiArICAgICAgIHNyY19kbWFv ZmZzZXQgPSAweDg7DQo+ID4gKyAgICAgICBjbWRpbmRleCA9IDI7DQo+ID4gKyAgICAgICBidWZb Y21kaW5kZXgrK10gPSBEVU1NWV9XT1JEX01BU0s7DQo+ID4gKyAgICAgICBidWZbY21kaW5kZXgr K10gPSBCVVNXSURUSF9TWU5DV09SRF9NQVNLOw0KPiA+ICsgICAgICAgYnVmW2NtZGluZGV4Kytd ID0gQlVTV0lEVEhfREVURUNUX01BU0s7DQo+ID4gKyAgICAgICBidWZbY21kaW5kZXgrK10gPSBE VU1NWV9XT1JEX01BU0s7DQo+ID4gKyAgICAgICBidWZbY21kaW5kZXgrK10gPSBTWU5DX1dPUkRf TUFTSzsNCj4gPiArICAgICAgIGJ1ZltjbWRpbmRleCsrXSA9IE5PT1BfV09SRF9NQVNLOw0KPiA+ ICsgICAgICAgYnVmW2NtZGluZGV4KytdID0genlucV90eXBlMV9wa3QocmVnLCBUWVBFX09QQ09E RV9SRUFELCAxKTsNCj4gPiArICAgICAgIGJ1ZltjbWRpbmRleCsrXSA9IE5PT1BfV09SRF9NQVNL Ow0KPiA+ICsgICAgICAgYnVmW2NtZGluZGV4KytdID0gTk9PUF9XT1JEX01BU0s7DQo+ID4gKw0K PiA+ICsgICAgICAgcmV0ID0genlucV9mcGdhX3BvbGxfdGltZW91dChwcml2LCBTVEFUVVNfT0ZG U0VULCBzdGF0dXMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 YXR1cyAmIFNUQVRVU19QQ0ZHX0lOSVRfTUFTSywNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSU5JVF9QT0xMX0RFTEFZLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJTklUX1BPTExfVElNRU9VVCk7DQo+ID4gKyAgICAgICBpZiAocmV0 KSB7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9lcnIoJm1nci0+ZGV2LCAiVGltZW91dCB3YWl0 aW5nIGZvciBQQ0ZHX0lOSVRcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICBnb3RvIG91dDsNCj4g PiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAvKiBXcml0ZSB0byBQQ0FQICovDQo+ID4g KyAgICAgICBpbnRyX3N0YXR1cyA9IHp5bnFfZnBnYV9yZWFkKHByaXYsIElOVF9TVFNfT0ZGU0VU KTsNCj4gPiArICAgICAgIHp5bnFfZnBnYV93cml0ZShwcml2LCBJTlRfU1RTX09GRlNFVCwgSVhS X0FMTF9NQVNLKTsNCj4gPiArDQo+ID4gKyAgICAgICB6eW5xX2ZwZ2FfZG1hX3hmZXIocHJpdiwg ZG1hX2FkZHIgKyBzcmNfZG1hb2Zmc2V0LCBjbWRpbmRleCwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICBETUFfSU5WQUxJRF9BRERSRVNTLCAwKTsNCj4gPiArICAgICAgIHJldCA9IHp5 bnFfZnBnYV93YWl0X2ZvcmRvbmUocHJpdik7DQo+ID4gKyAgICAgICBpZiAocmV0KSB7DQo+ID4g KyAgICAgICAgICAgICAgIGRldl9lcnIoJm1nci0+ZGV2LCAiU1JDRE1BOiBUaW1lb3V0IHdhaXRp bmcgZm9yDQo+IERfUF9ET05FXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgZ290byBvdXQ7DQo+ ID4gKyAgICAgICB9DQo+ID4gKyAgICAgICB6eW5xX2ZwZ2Ffc2V0X2lycShwcml2LCBpbnRyX3N0 YXR1cyk7DQo+ID4gKw0KPiA+ICsgICAgICAgLyogUkVBRCBGcm9tIFBBQ1AgKi8NCj4gDQo+IFJF QUQgLT4gUmVhZCA/DQoNCk9rIHN1cmUgd2lsbCBmaXggaW4gdjQuLi4uDQoNCj4gPiArICAgICAg IHp5bnFfZnBnYV9kbWFfeGZlcihwcml2LCBETUFfSU5WQUxJRF9BRERSRVNTLCAwLCBkbWFfYWRk ciwgMSk7DQo+ID4gKyAgICAgICByZXQgPSB6eW5xX2ZwZ2Ffd2FpdF9mb3Jkb25lKHByaXYpOw0K PiA+ICsgICAgICAgaWYgKHJldCkgew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKCZtZ3It PmRldiwgIkRTVERNQTogVGltZW91dCB3YWl0aW5nIGZvcg0KPiBEX1BfRE9ORVxuIik7DQo+ID4g KyAgICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAg ICAgIC8qIFdyaXRlIHRvIFBDQVAgKi8NCj4gPiArICAgICAgIGNtZGluZGV4ID0gMjsNCj4gPiAr ICAgICAgIGJ1ZltjbWRpbmRleCsrXSA9IHp5bnFfdHlwZTFfcGt0KFRZUEVfQ01EX09GRlNFVCwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEVfT1BDT0RF X1dSSVRFLCAxKTsNCj4gPiArICAgICAgIGJ1ZltjbWRpbmRleCsrXSA9IERFU1lOQ19XT1JEX01B U0s7DQo+ID4gKyAgICAgICBidWZbY21kaW5kZXgrK10gPSBOT09QX1dPUkRfTUFTSzsNCj4gPiAr ICAgICAgIGJ1ZltjbWRpbmRleCsrXSA9IE5PT1BfV09SRF9NQVNLOw0KPiA+ICsgICAgICAgenlu cV9mcGdhX2RtYV94ZmVyKHByaXYsIGRtYV9hZGRyICsgc3JjX2RtYW9mZnNldCwgY21kaW5kZXgs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgRE1BX0lOVkFMSURfQUREUkVTUywgMCk7 DQo+ID4gKyAgICAgICByZXQgPSB6eW5xX2ZwZ2Ffd2FpdF9mb3Jkb25lKHByaXYpOw0KPiA+ICsg ICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgICAgZGV2X2VycigmbWdyLT5kZXYsICJT UkNETUExOiBUaW1lb3V0IHdhaXRpbmcgZm9yIA0KPiA+ICtEX1BfRE9ORVxuIik7DQo+ID4gK291 dDoNCj4gPiArICAgICAgIHJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQgenlucV9mcGdhX3JlYWRfY2ZncmVnKHN0cnVjdCBmcGdhX21hbmFnZXIgKm1nciwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VxX2ZpbGUgKnMpIHsNCj4g PiArICAgICAgIGludCByZXQgPSAwOw0KPiA+ICsgICAgICAgdW5zaWduZWQgaW50ICpidWY7DQo+ ID4gKyAgICAgICBkbWFfYWRkcl90IGRtYV9hZGRyOw0KPiA+ICsgICAgICAgc3RydWN0IHp5bnFf Y29uZmlncmVnICpwID0gY2ZncmVnOw0KPiANCj4gQW5kIGhlcmUuDQoNClN1cmUgd2lsbCBmaXgg aW4gdjQuLi4uDQoNCj4gPiArDQo+ID4gKyAgICAgICBidWYgPSBkbWFfemFsbG9jX2NvaGVyZW50 KG1nci0+ZGV2LnBhcmVudCwgUkVBRF9ETUFfU0laRSwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmZG1hX2FkZHIsIEdGUF9LRVJORUwpOw0KPiA+ICsgICAgICAgaWYgKCFi dWYpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiArICAg ICAgIHNlcV9wdXRzKHMsICJ6eW5xIEZQR0EgQ29uZmlndXJhdGlvbiByZWdpc3RlciBjb250ZW50 cyANCj4gPiArIGFyZVxuIik7DQo+IA0KPiBaeW5xIEZQR0EsIG1heWJlIGNhcHMgaGVyZS4uLg0K DQpTdXJlIHdpbGwgZml4IGluIHY0Li4uLg0KDQpUaGFua3MgYW5kIFJlZ2FyZHMsDQpLZWRhci4N Cg0KPiA+ICsNCj4gPiArICAgICAgIHdoaWxlIChwLT5yZWcpIHsNCj4gPiArICAgICAgICAgICAg ICAgcmV0ID0genlucV9mcGdhX2dldGNvbmZpZ3JlZyhtZ3IsIHAtPm9mZnNldCwgZG1hX2FkZHIs IGJ1Zik7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChyZXQpDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgZ290byBmcmVlX2RtYWJ1ZjsNCj4gPiArICAgICAgICAgICAgICAgc2VxX3ByaW50 ZihzLCAiJXMgLS0+IFx0ICV4IFx0XHJcbiIsIHAtPnJlZywgYnVmWzBdKTsNCj4gPiArICAgICAg ICAgICAgICAgcCsrOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArZnJlZV9kbWFidWY6DQo+ ID4gKyAgICAgICBkbWFfZnJlZV9jb2hlcmVudChtZ3ItPmRldi5wYXJlbnQsIFJFQURfRE1BX1NJ WkUsIGJ1ZiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIGRtYV9hZGRyKTsNCj4gPiAr ICAgICAgIHJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgenlucV9m cGdhX29wc19yZWFkKHN0cnVjdCBmcGdhX21hbmFnZXIgKm1nciwgc3RydWN0IA0KPiA+ICtzZXFf ZmlsZSAqcykgew0KPiA+ICsgICAgICAgc3RydWN0IHp5bnFfZnBnYV9wcml2ICpwcml2Ow0KPiA+ ICsgICAgICAgaW50IHJldDsNCj4gPiArDQo+ID4gKyAgICAgICBwcml2ID0gbWdyLT5wcml2Ow0K PiA+ICsNCj4gPiArICAgICAgIHJldCA9IGNsa19lbmFibGUocHJpdi0+Y2xrKTsNCj4gPiArICAg ICAgIGlmIChyZXQpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKw0KPiA+ ICsgICAgICAgaWYgKHJlYWRiYWNrX3R5cGUpDQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9IHp5 bnFfZnBnYV9yZWFkX2NmZ2RhdGEobWdyLCBzKTsNCj4gPiArICAgICAgIGVsc2UNCj4gPiArICAg ICAgICAgICAgICAgcmV0ID0genlucV9mcGdhX3JlYWRfY2ZncmVnKG1nciwgcyk7DQo+ID4gKw0K PiA+ICsgICAgICAgY2xrX2Rpc2FibGUocHJpdi0+Y2xrKTsNCj4gPiArDQo+ID4gKyAgICAgICBy ZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGZwZ2Ff bWFuYWdlcl9vcHMgenlucV9mcGdhX29wcyA9IHsNCj4gPiAgICAgICAgIC5pbml0aWFsX2hlYWRl cl9zaXplID0gMTI4LA0KPiA+ICAgICAgICAgLnN0YXRlID0genlucV9mcGdhX29wc19zdGF0ZSwN Cj4gPiAgICAgICAgIC53cml0ZV9pbml0ID0genlucV9mcGdhX29wc193cml0ZV9pbml0LA0KPiA+ ICAgICAgICAgLndyaXRlX3NnID0genlucV9mcGdhX29wc193cml0ZSwNCj4gPiAgICAgICAgIC53 cml0ZV9jb21wbGV0ZSA9IHp5bnFfZnBnYV9vcHNfd3JpdGVfY29tcGxldGUsDQo+ID4gKyAgICAg ICAucmVhZCA9IHp5bnFfZnBnYV9vcHNfcmVhZCwNCj4gPiAgfTsNCj4gPg0KPiA+ICBzdGF0aWMg aW50IHp5bnFfZnBnYV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+IC0t DQo+ID4gMi43LjQNCj4gPg0KPiA+IC0tDQo+ID4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxp c3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LWZwZ2EiDQo+ID4gaW4gdGhlIGJv ZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcgTW9yZQ0KPiBtYWpv cmRvbW8NCj4gPiBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZv Lmh0bWwNCj4gDQo+IFRoYW5rcywNCj4gDQo+IE1vcml0eg0K