Received: by 2002:ac0:8c9a:0:0:0:0:0 with SMTP id r26csp594473ima; Fri, 1 Feb 2019 07:58:47 -0800 (PST) X-Google-Smtp-Source: ALg8bN75EjAcfhcQKuDcnBwy9KPzbmTPmx8KYO2cy/H5cd3Oi4HrR9A9VIqNuqyBCla+g0OaOY2B X-Received: by 2002:a62:2781:: with SMTP id n123mr40445177pfn.138.1549036727822; Fri, 01 Feb 2019 07:58:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549036727; cv=none; d=google.com; s=arc-20160816; b=YKK7rJaXxjfNDOy+n88FuNfwgFIhdbra3LkI6e4QzQaZhbuQ5VUcqIu9QVa0VbByit eHx4T+Y7JdsAEXLBaBEwHM39uRGUYQFTMxdgsmhXCaHj7sDFDIYE1QZaug/Q4HgmSMm6 XWB8qPOhRvTKnl3O0fdNbT1POkuDOJctUNSAvbSzacPG+BQIIRGkz8IFiinc1oHibuZY hmckHmpymDzSdwxgS22zXj+ltk7VLdttcS2g6OrublP1Y/9ntMEDVPkWVlNEW/AB9kE1 SzcHPKwZuUiLs4fsrT3wg0cIODbSS6WQ5fMpeXBzTLJrfE5PYEmTLxYLmhe5pSAMiiPF ICBA== 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 :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=gaf1UUQj+jbEATf0TwkofFPgVUa+1JRBDS8yoaBg/Ds=; b=JPgwNzYkCe8e7NSAIH55QJ3eTN3bvLIKAGKTiT6t9VFG2NZC+W8PB5VM2Z4MKAexhb cQlJsW5Q2yrWjPr8pKCkLhHq9X2sQayI/YGV1FSWrfUBkZvalfjCEsLIrOCUujWBrRDq ZCY1FQ8FF5u3aiHUJcUDW20o8hU2A+s+ewf17UZzDFCs5ggzaCCpJOb3ixDfZXW0kV1n Tk2Pm7IzZM2QTABxBFlA985hXImc/SidUoL2sAa/nfxtdVfoQPwDAp4QeHT6I7GgdgDI H5CpNVZZ4b4yWD2jSJkY+L0OzEZH66klRhKfGlba+Hh0DdEqGfWXJl8ajm+WMlhnm8Yi P8fQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@analog.onmicrosoft.com header.s=selector1-analog-com header.b=SfvrpfRb; 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 l185si6573369pgd.253.2019.02.01.07.58.32; Fri, 01 Feb 2019 07:58:47 -0800 (PST) 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=@analog.onmicrosoft.com header.s=selector1-analog-com header.b=SfvrpfRb; 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 S1727042AbfBAP6D (ORCPT + 99 others); Fri, 1 Feb 2019 10:58:03 -0500 Received: from mail-eopbgr690051.outbound.protection.outlook.com ([40.107.69.51]:53792 "EHLO NAM04-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726172AbfBAP6D (ORCPT ); Fri, 1 Feb 2019 10:58:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector1-analog-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gaf1UUQj+jbEATf0TwkofFPgVUa+1JRBDS8yoaBg/Ds=; b=SfvrpfRbSKy/NYzegaCbgQFxhPP9FoGMrc+/IZ0X6sfY59i54hMuWeypkBWdIm7HPn8hq/vp3V/OdzCx34ADXxe5luJfaqHMCjZH91Cvt96QMvL4MtY5XJws6qrJ0HPbrs2RkeD9H85tZsw23gkZKa0zmeEP+E19dvc2cUiitfo= Received: from CY1PR03CA0012.namprd03.prod.outlook.com (2603:10b6:600::22) by SN6PR03MB3519.namprd03.prod.outlook.com (2603:10b6:805:41::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.16; Fri, 1 Feb 2019 15:57:52 +0000 Received: from SN1NAM02FT043.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e44::203) by CY1PR03CA0012.outlook.office365.com (2603:10b6:600::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1580.16 via Frontend Transport; Fri, 1 Feb 2019 15:57:52 +0000 Authentication-Results: spf=pass (sender IP is 137.71.25.55) smtp.mailfrom=analog.com; linuxfoundation.org; dkim=none (message not signed) header.d=none;linuxfoundation.org; dmarc=bestguesspass action=none header.from=analog.com; Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.55 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.55; helo=nwd2mta1.analog.com; Received: from nwd2mta1.analog.com (137.71.25.55) by SN1NAM02FT043.mail.protection.outlook.com (10.152.72.184) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.1580.10 via Frontend Transport; Fri, 1 Feb 2019 15:57:51 +0000 Received: from NWD2HUBCAS9.ad.analog.com (nwd2hubcas9.ad.analog.com [10.64.69.109]) by nwd2mta1.analog.com (8.13.8/8.13.8) with ESMTP id x11FvoRf022505 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Fri, 1 Feb 2019 07:57:50 -0800 Received: from NWD2MBX5.ad.analog.com ([fe80::49e:7a9f:284e:1a49]) by NWD2HUBCAS9.ad.analog.com ([fe80::44a2:871b:49ab:ea47%12]) with mapi id 14.03.0415.000; Fri, 1 Feb 2019 10:57:50 -0500 From: "Popa, Stefan Serban" To: "renatogeh@gmail.com" , "Popa, Stefan Serban" CC: "kernel-usp@googlegroups.com" , "lars@metafoo.de" , "Ardelean, Alexandru" , "knaack.h@gmx.de" , "linux-kernel@vger.kernel.org" , "jic23@kernel.org" , "Hennerich, Michael" , "linux-iio@vger.kernel.org" , "devel@driverdev.osuosl.org" , "giuliano.belinassi@usp.br" , "pmeerw@pmeerw.net" , "gregkh@linuxfoundation.org" Subject: Re: [PATCH v2 1/2] staging: iio: ad7780: add gain & filter gpio support Thread-Topic: [PATCH v2 1/2] staging: iio: ad7780: add gain & filter gpio support Thread-Index: AQHUtn84NWi1lwF/LUKpFfGcZNLjg6XIE+2AgANPGwCAABGLgA== Date: Fri, 1 Feb 2019 15:57:50 +0000 Message-ID: <1549036667.9460.41.camel@analog.com> References: <20190127203044.yytctplecwey4an4@renatolg> <1548850985.9460.23.camel@analog.com> <20190201145459.ukfzo6s4rvg4c5ri@renatolg> In-Reply-To: <20190201145459.ukfzo6s4rvg4c5ri@renatolg> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.50.1.104] x-adiroutedonprem: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.55;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(376002)(346002)(136003)(39860400002)(396003)(2980300002)(189003)(199004)(51914003)(102836004)(26005)(186003)(36756003)(229853002)(426003)(7416002)(436003)(486006)(2501003)(23676004)(106466001)(246002)(356004)(2486003)(14444005)(76176011)(336012)(7696005)(50466002)(7736002)(305945005)(7636002)(54906003)(110136005)(106002)(86362001)(316002)(2616005)(4326008)(6116002)(39060400002)(478600001)(476003)(47776003)(126002)(103116003)(14454004)(2906002)(8936002)(72206003)(6246003)(446003)(8676002)(11346002)(3846002);DIR:OUT;SFP:1101;SCL:1;SRVR:SN6PR03MB3519;H:nwd2mta1.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail10.analog.com;MX:1;A:1; X-Microsoft-Exchange-Diagnostics: 1;SN1NAM02FT043;1:6BinqYMnBik1gudwJ6/ndtBeLhi6wuqSNdm/Xw2luJhV+CB9PytFMFtsK70tjp/BQriD0f2DrfF8H6fVvmHMNP3SsFSyXu9eXk4sN3QHiZXeBpxDoPWixAnryY9NHTr4cf0VtOEl4h8tshAs+lkbJg== X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a2a620a3-6b08-4443-7247-08d6885e05c7 X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4608076)(4709027)(2017052603328)(7153060)(7193020);SRVR:SN6PR03MB3519; X-Microsoft-Exchange-Diagnostics: 1;SN6PR03MB3519;3:BtF8UYbIrZmKX9pAI2BoQz1xecLnVFuzCB4Su421DYo4afHdap7Mhn4CaKkn4w7mW5NsxpsWle8EWoDc7ALVdWdtn6AKjq2Wqpw7lw/wBRPMPlI1CtDZFAulG60LJ9TJOrk5GzlgVFQf3jVqpOby5ME85bCDZ/5LyrcMdeoPYp8n8jhBztpEINMXwhOmTwxpuvX9tQvYev3stPHuS6TXWgPyTt/8tm6FlMrK/6wd0DcLp7iFxmOZi6OiIenhwP/vbcRisBrL689OIYy51kjDrTdfDbBB/9Mo1P1i8zwgN+SU0KrI5s8TgwE1wLNHx/1d6dUAia24/SQi0e5UM0gvPPnq7dpD2MwJLIIoB4j2kwsNPsRYIIvJmxusbj3bROaQ;25:BDpMA6hKCyqrK4PnGKDgl5YJzlmucsiVBisCVCF+xv6alnAonbD69nWIX7FuE2t3R2bQyArNL3b5gAwezMOKFufHwo0ApFOBJ7wVQfnxLBCAXXCxvPeZ+kHF1GPBEF9sqEMWPzivOGP07dpA8nWiILqI6FBhv0nAY8H81NEggEilhSInpZB+vkAC34Ez0Ih3RIW/5vouiPm65GE+0ap6tBh7mvSxqxd6064sTudwom6NwpQkFz1//st6gE0BconZKBZtWyx3Kk/vZEqwjL87lZqzuzW/J956qDbquOo0xSRgKY7IdKO9j4RR4FzuzE9x87IOGMWacgTEbaTHuqplzQ== X-MS-TrafficTypeDiagnostic: SN6PR03MB3519: X-Microsoft-Exchange-Diagnostics: 1;SN6PR03MB3519;31:5eKGkEkES3a56kf+AC5IqeqnpVwUdzeIe9xtZFDiSyNHVl6nYvHKHsALgqQTQJmLJpR8izjMtrA1JAnse3xLWcGwp/nfKWjga8mfCJLivvLFFMRcSN3OI9rlLpUIqJLDwHRJl3f3jP8BkHnip/Hi3plJgGenjKvrE3aaBIXpD4gAPJCwcwJvGHSw/kjAoYWSTpmEh+rHgv4anVTTkII14ICYPGx6INrHPnMZVcx4mDk=;20:aFGiD6oIM2VblGU7OILycGlo42Iw/toL43gUUbN3FowRXl7IrNY68JP8BcSLWhx8XFNNViG2cioeLwqxRlD02MAIJUXOWB+w3PTkNIOldasKbtVe3HHsiGbsS9KgxFw7YuBpmJTkWbDpVBv/74l+exDx2Cxpzr20ta/MQienTEzQgL78lBG7TKhWKRWGE9j5moNJPy7hw/e8ITeYiI1sD0l57OJPqxUlPikQXaV0ShAsuaYbLWLNMBxLJdSOkYGwR6kztDogZF4yyHafzb/gCP01dlQFuyu5j3sg6ibb+z8D0cOmMgCGqNbZA5SsnVhqNshCGxH2kFPJdjVxTH2r78pBo06eY6VUSwVyHzKT9dMrQpOApFFOvf1iS/358x9AH7josLGeEvEfj+4nzu+KiB6H2MBq1RSH+UsFZGMaVkE8AlCIb+Tw3464MdVQyReHOjuBBgXgHiZLshM9fqur6djeqY+kWYLrCMNWmf6bnSvA6aCPN1eId/98pFl8RhJF X-Microsoft-Antispam-PRVS: X-Microsoft-Exchange-Diagnostics: 1;SN6PR03MB3519;4:TqHlVhr9quVw6MASWffDhxIUCfMohJc25XMxy2CvNq5iacG/DK24jIqJbRpbp9tfXqgzRnfDDdAmpxyGAwj2LVlBYVFe5ZgVz/nSCQlvghmUx55BGuTpfSJEWCXRdVEHg77/LDH9TTkV22NcYE6oUw9IAEjJVwac2mlbXWFYdQv4tMgHN4h13JIBmM/jYY9Rrma4n8WZ6JYuObxkYhgsKCEfoLWumGdoY6a+NlNocrrp6wJT+9nHC85Trv/upRLb9sZDScp2+9ajzHmYF4PaooGk5AV9lVzPEmwGD1NG+m4= X-Forefront-PRVS: 09352FD734 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjZQUjAzTUIzNTE5OzIzOjRyZDZsc2Myck1kS1B5em1kNk1obFVzczdY?= =?utf-8?B?SEQ4QmVrY0xQVCtiNGo4WlZZSWxPcWM0R0xRZkxLckdCK2VlaXNNUDNNTzND?= =?utf-8?B?T0R0Rk9QaVBDSXFWSGd6cHUvL244L013T3d3K3JPUmt1WkhBMGI0V1ZrWk1C?= =?utf-8?B?amRYMVZDV25VUSszajUzUHVLbjY5NmpDRmcraC9pUmFGU0tteVZXazl0MUNV?= =?utf-8?B?OCtPbVZvY3IvT3AzK1NlZEZzcUtHdG5LcHlXMWdueStqeXJjdXFoMDhoc00x?= =?utf-8?B?V0NnSW5sL2dIb2xCZVhKUEJZMDhqaGgvODZNeDZvUHBLY2NUVWFMN1E5RGhV?= =?utf-8?B?QkE5bnNLanEycDdoZ3Q2WlNqTFoydUxmSVVRSmx6WlhZYjhTRS84OWRtTU5o?= =?utf-8?B?ZFBuYnZTOVZveWNPaWIrU0NQbjltWVAzN2hKTGhJYm8xTFRKTEJ0NkRoOVBL?= =?utf-8?B?QUt1ZjhGbGwrWDNPN2xnNDVyYlF2Tk5JNmpnWUl4Uyt0V2J4L0J6Q0tqVU1U?= =?utf-8?B?ZjkvcmhIeVBmL3Vsa1A3WFFZcUZ0eHFTR2FhUzBMa3B0TmNBaU84bjdWMFZQ?= =?utf-8?B?UnJKVHlmYW5VTjVFSTkyMWRGNkc0MXdWV3RGMHBEa0tMcVg0UFQ4S21PVEl1?= =?utf-8?B?U3BnS2FhVk5sYTZta2pod2N2akwyZjI2allyYXV6VHhtWFpDWTVDM1JnSnRH?= =?utf-8?B?TG0rMnJQVnVKWVArSE56dGVkR2dwMktjQmxaazdwYU14WW41a0JnNjlFS2pl?= =?utf-8?B?N0ZITWVGdzBRN210TXNzVnA0Vm1tYUt6TnowNW1HZHN1dmJJaFBRcFlVcHBl?= =?utf-8?B?SVRkWkZrQks5dTc2VzhNZ0tkNUgzcE5TYTZJa3AvNy9jeWVsY0FIQ05UM0VQ?= =?utf-8?B?WFVYalRybkNNR1JMRFR3czN6RDdwbHJxcWtBYUhVZGswODlyc2dqR3VheCta?= =?utf-8?B?K0ZrODV2TXp5NTVsMis5aGxqL3VMRHNtQjhXbFNmTDZFY1h4T0dwSUFYQ1FJ?= =?utf-8?B?U2dTKy9ENnF2OUZBWXFyWmpZVDNrREQrQ1VrOE50d3JIUXd1V0J0N2wzNVFj?= =?utf-8?B?Q3B2cDc5aUh4ZExsR3ZaeElhZzhkNnJ3Q3Q4TzVNTlFQSFJoeFViT1MxVCsv?= =?utf-8?B?VGFNK013Z2QvYU5HVnUwWUhNOTFGRWpXVVVrWGhMYytraDJ3UEN2NzR1U3JG?= =?utf-8?B?djdVTGFrSzBSbUZLWm1GUTc1Qk1ZSjVlMjZHNmxhaVNxUTRKN1A0NzZ3OUJs?= =?utf-8?B?RmllSzBMdmdOOEdjc0xOU284aFR6UVAxN3JmOCs3TG1LTUkrb3IxRmtRQ21x?= =?utf-8?B?L1NJd21za21Jc2pxdDlaUmxrelBZd1ErUkVwZjNCcnllNTZFazN5NVVyVU5C?= =?utf-8?B?N2Fwc1pVTjh5MTdzenZGK0s1dUZPUWpWK3NwTTZURGYvcU53aXRsUHlybElm?= =?utf-8?B?MHFqT3duY1JGMGNiVnB2dDFaNlE5TmFtL1RDSHBSdFNabjdxeXIzcmNTR2x4?= =?utf-8?B?M0t4bFgrUUFNTFpzL08xaUJvbmV6Q1Y1N1hFVnh2My9tT0RxZUJ6RGdOYTd1?= =?utf-8?Q?WsuRsaR4b0VqjNtr/iiTtT1wqrBJSbEdKt2MxcMiaoZA=3D?= X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info: 0VGFU/d2glcbe5o5EoRKrd025eFBKbgKurbXS+h+Dr97rL45Gco++/589iyMn4CA8dNw8hpD5/F3sVW5FMiCDE40f6uIhxXWCK9CMoxUvsgyHaDhdsvmRDvobsJUERfQYLz55b10742XaH4r5RB4HUVlb/o2vprSwWKPXKOsEk+szM6fQzVTIEk4LUPtKaf/KbqCc0ZP6delGneXNPe4eAeFu+OaRSyGWCMREGIgPm89KJoGtP7XaiLiBlzGg4VlF3IiR9ZQAD0Pp2F8Io2wYVIQV/ocDyBq3vDKE+AFmW7vhWecBCNlSpcYrCdN1Tx2SkEDzCe85ulWMycoYj6X74fL7CP4xi7LkD6OxDJjbVqqfVNAkhF4Qx71h17A0pGWGIphiEQZao1jKMhOFljWJjxXajOmwtJCWhtu1slAp4w= X-Microsoft-Exchange-Diagnostics: 1;SN6PR03MB3519;6:maQPtvsffbfPQeWV6LJNL/bAPZDahcSB4PFylJrKl9ZmE9G6D0o+yG8/ExtDRhKaI2IVVeNY/1CFInvcyYOe5YdAAvof8/v9D5wGaOPEylOtPncQTD2Mx/dcYdKREP+tKExFsn+DvDhi3Z4smEFkvOCCykWHOlb2Nzp/DbWnH+iSJHTtNXCyjXxd7/1XBLJPE0yfkjDZODFlCjA6HHQ3rJLzG7UOy1MUqE0Xmzuh21mL/ZBBHQZvZ+ihMuG0xhu2Dmw39W4K0FPRvRfV8g1wpEeYKukKNjbvo9+4vVtepBWZtg5Ek5W7YU8PQ9I3NovgnAp2I3lqJF60P3piEf8WCiemd7cIxWetLd1MMHCps5AQMXqxumuaSddW2pt+YSVMIgBCo5VBN3FsU5LMETFi14Mp44f5myEmwE0NkrFKhadTzhPA/F/zVmmdqOcZrKhAiduL2+zRysPowYZwXPam/Q==;5:ydL4W+9j3FjjQERZqLzzIu0AGS6FomxM6FM1dUf3KnLS2/FwsRaxX9lag2aymVXamCD5L2vyx3P9QaexCI1qSm8euiYPFIMVbLbc7In4f+9+shWp2bkqI7cZcNAnMulzaxtohWyRFsSh2U1ZVNh1PKIN7yErKrko1TWgwVf0tsAw66HKullPrMeK8B9/ZWC1TedOl8H9PPRXsa/7KK/G7g==;7:Mn6J/ZSxZYfkJYqKx2UL1y+NWP6fK2KEelKvS6GS+Rw6tEw2FpzRhACQoINp3SSjYJnlBEE7KZoKKCSBVBXmI2U2/gCkqLSv0t6AJeiDhy+epUZj5dzpsi0xH6gMAtxprpykAxvMf1aMwrBW60WCbw== X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Feb 2019 15:57:51.8449 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a2a620a3-6b08-4443-7247-08d6885e05c7 X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.55];Helo=[nwd2mta1.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR03MB3519 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gVmksIDIwMTktMDItMDEgYXQgMTI6NTUgLTAyMDAsIFJlbmF0byBMdWkgR2VoIHdyb3RlOg0K PiBPbiAwMS8zMCwgUG9wYSwgU3RlZmFuIFNlcmJhbiB3cm90ZToNCj4gPiANCj4gPiBPbiBEdSwg MjAxOS0wMS0yNyBhdCAxODozMCAtMDIwMCwgUmVuYXRvIEx1aSBHZWggd3JvdGU6DQo+ID4gPiAN Cj4gPiA+IFByZXZpb3VzbHksIHRoZSBBRDc3ODAgZHJpdmVyIG9ubHkgc3VwcG9ydGVkIGdwaW8g Zm9yIHRoZSAncG93ZXJkb3duJw0KPiA+ID4gcGluLiBUaGlzIGNvbW1pdCBhZGRzIHN1cHBwb3J0 IGZvciB0aGUgJ2dhaW4nIGFuZCAnZmlsdGVyJyBwaW4uDQo+ID4gPiANCj4gPiA+IFNpZ25lZC1v ZmYtYnk6IFJlbmF0byBMdWkgR2VoIDxyZW5hdG9nZWhAZ21haWwuY29tPg0KPiA+ID4gU2lnbmVk LW9mZi1ieTogR2l1bGlhbm8gQmVsaW5hc3NpIDxnaXVsaWFuby5iZWxpbmFzc2lAdXNwLmJyPg0K PiA+ID4gQ28tZGV2ZWxvcGVkLWJ5OiBHaXVsaWFubyBCZWxpbmFzc2kgPGdpdWxpYW5vLmJlbGlu YXNzaUB1c3AuYnI+DQo+ID4gPiAtLS0NCj4gPiA+IENoYW5nZXMgaW4gdjI6DQo+ID4gPiDCoMKg wqDCoMKgwqDCoMKgLSBGaWx0ZXIgcmVhZGluZyBjaGFuZ2VkIHRvIG1Ieg0KPiA+ID4gwqDCoMKg wqDCoMKgwqDCoC0gU3RvcmluZyBmaWx0ZXIsIGdhaW4gYW5kIHZvbHRhZ2UgdG8gY2hpcF9pbmZv SGksDQo+IEhpIFN0ZWZhbiwNCj4gDQo+IFRoYW5rcyBmb3IgdGhlIHJldmlldy4gQ29tbWVudHMg aW5saW5lLg0KPiANCj4gUmVuYXRvDQo+ID4gDQo+ID4gDQo+ID4gQ29tbWVudHMgaW5saW5lLg0K PiA+IA0KPiA+IFJlZ2FyZHMsDQo+ID4gU3RlZmFuDQo+ID4gDQo+ID4gPiANCj4gPiA+IA0KPiA+ ID4gwqBkcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc3ODAuY8KgwqDCoMKgwqDCoMKgfCAxMDMg KysrKysrKysrKysrKysrKysrKysrKy0NCj4gPiA+IC0tDQo+ID4gPiDCoGluY2x1ZGUvbGludXgv aWlvL2FkYy9hZF9zaWdtYV9kZWx0YS5oIHzCoMKgwqA1ICsrDQo+ID4gPiDCoDIgZmlsZXMgY2hh bmdlZCwgOTkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkNCj4gPiA+IA0KPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzc4MC5jDQo+ID4gPiBiL2RyaXZl cnMvc3RhZ2luZy9paW8vYWRjL2FkNzc4MC5jDQo+ID4gPiBpbmRleCBjNGE4NTc4OWMyZGIuLjgy Mzk0ZTMxYjE2OCAxMDA2NDQNCj4gPiA+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2Fk Nzc4MC5jDQo+ID4gPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc3ODAuYw0KPiA+ ID4gQEAgLTM5LDYgKzM5LDE1IEBADQo+ID4gPiDCoCNkZWZpbmUgQUQ3MTcwX1BBVFRFUk7CoMKg wqDCoMKgwqDCoMKgwqAoQUQ3NzgwX1BBVDAgfCBBRDcxNzBfUEFUMikNCj4gPiA+IMKgI2RlZmlu ZSBBRDcxNzBfUEFUVEVSTl9NQVNLwqDCoMKgwqAoQUQ3NzgwX1BBVDAgfCBBRDc3ODBfUEFUMSB8 DQo+ID4gPiBBRDcxNzBfUEFUMikNCj4gPiA+IA0KPiA+ID4gKyNkZWZpbmUgQUQ3NzgwX0dBSU5f R1BJT8KgwqDCoMKgwqDCoMKgMA0KPiA+ID4gKyNkZWZpbmUgQUQ3NzgwX0ZJTFRFUl9HUElPwqDC oMKgwqDCoDENCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIEFENzc4MF9HQUlOX01JRFBPSU5UwqDC oMKgNjQNCj4gPiA+ICsjZGVmaW5lIEFENzc4MF9GSUxURVJfTUlEUE9JTlQgMTMzNTANCj4gPiA+ ICsNCj4gPiA+ICtzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGFkNzc4eF9nYWluWzJdwqDCoMKg wqA9IHsgMSwgMTI4IH07DQo+ID4gPiArc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBhZDc3OHhf ZmlsdGVyWzJdwqDCoD0geyAxMDAwMCwgMTY3MDAgfTsNCj4gPiBJIHdvdWxkIG5hbWUgdGhpcyBh cnJheSBhZDc3OHhfb2RyX2F2YWlsIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuDQo+IFN1cmUNCj4g PiANCj4gPiBXZSBzaG91bGQgYWxzbyBjb25zaWRlciBhZGRpbmcgdGhlIG9wdGlvbiB0byByZWFk IHRoZSBhdmFpbGFibGUNCj4gPiBzYW1wbGluZyBmcmVxdWVuY2llcyBmcm9tIHVzZXIgc3BhY2Us IGJ1dCBsZXQncyBsZWF2ZSB0aGlzIGZvciBhbm90aGVyDQo+ID4gY29tbWl0Lg0KPiBEbyB5b3Ug bWVhbiByZXR1cm5pbmcgMTAgYW5kIDE2LjcgSHo/DQo+IA0KPiBTaG91bGQgdGhpcyBiZSBkb25l IGJlZm9yZSBzZW5kaW5nIHRoZSBkcml2ZXIgdG8gdGhlIG1haW4gdHJlZSwgb3IgaXMgaXQNCj4g b2sgdG8gZG8gc29tZXRoaW5nIGxpa2UgdGhhdCBhZnRlciBpdCBoYXMgbGVmdCBzdGFnaW5nPw0K DQpJIHRoaW5rLCB3ZSBzaG91bGQgbGVhdmUgaXQgZm9yIGEgZnV0dXJlIGNvbW1pdC7CoA0KDQo+ ID4gDQo+ID4gDQo+ID4gPiANCj4gPiA+ICsNCj4gPiA+IMKgc3RydWN0IGFkNzc4MF9jaGlwX2lu Zm8gew0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpaW9fY2hhbl9zcGVjwqDCoMKgwqBj aGFubmVsOw0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHBhdHRlcm5fbWFzazsNCj4gPiA+IEBAIC01MCw3ICs1OSwxMSBAQCBzdHJ1Y3Qg YWQ3NzgwX3N0YXRlIHsNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3QgYWQ3Nzgw X2NoaXBfaW5mb8KgwqDCoCpjaGlwX2luZm87DQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IHJlZ3VsYXRvcsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKnJlZzsNCj4gPiA+IMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZ3Bpb19kZXNjwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAqcG93ZXJkb3duX2dwaW87DQo+ID4gPiAtwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnTC oMKgwqDCoGdhaW47DQo+ID4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZ3Bpb19kZXNjwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqZ2Fpbl9ncGlvOw0KPiA+ID4gK8KgwqDCoMKgwqDC oMKgc3RydWN0IGdwaW9fZGVzY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKmZpbHRl cl9ncGlvOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgaW50wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdhaW47DQo+ID4gPiArwqDCoMKgwqDCoMKgwqB1bnNp Z25lZCBpbnTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZmlsdGVyOw0K PiA+IEFsc28sIHRoaXMgY291bGQgYmUgcmVuYW1lZCBhcyBvZHIuDQo+ID4gDQo+ID4gPiANCj4g PiA+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpbnRfdnJlZl9tdjsNCj4gPiA+IA0KPiA+ID4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCBhZF9zaWdtYV9kZWx0YSBzZDsNCj4gPiA+IMKgfTsNCj4gPiA+IEBAIC0xMDQsMTcg KzExNyw2NSBAQCBzdGF0aWMgaW50IGFkNzc4MF9yZWFkX3JhdyhzdHJ1Y3QgaWlvX2Rldg0KPiA+ ID4gKmluZGlvX2RldiwNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdm9s dGFnZV91diA9IHJlZ3VsYXRvcl9nZXRfdm9sdGFnZShzdC0+cmVnKTsNCj4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHZvbHRhZ2VfdXYgPCAwKQ0KPiA+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHZvbHRhZ2Vf dXY7DQo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKnZhbCA9ICh2b2x0YWdl X3V2IC8gMTAwMCkgKiBzdC0+Z2FpbjsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB2b2x0YWdlX3V2IC89IDEwMDA7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgKnZhbCA9IHZvbHRhZ2VfdXYgKiBzdC0+Z2FpbjsNCj4gPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgKnZhbDIgPSBjaGFuLT5zY2FuX3R5cGUucmVhbGJpdHMgLSAxOw0K PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0LT5pbnRfdnJlZl9tdiA9IHZv bHRhZ2VfdXY7DQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBJ SU9fVkFMX0ZSQUNUSU9OQUxfTE9HMjsNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBjYXNlIElJT19D SEFOX0lORk9fT0ZGU0VUOg0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAq dmFsID0gLSgxIDw8IChjaGFuLT5zY2FuX3R5cGUucmVhbGJpdHMgLSAxKSk7DQo+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBJSU9fVkFMX0lOVDsNCj4gPiA+ICvC oMKgwqDCoMKgwqDCoGNhc2UgSUlPX0NIQU5fSU5GT19TQU1QX0ZSRVE6DQo+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKnZhbCA9IHN0LT5maWx0ZXI7DQo+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIElJT19WQUxfSU5UOw0KPiA+ID4gwqDCoMKg wqDCoMKgwqDCoH0NCj4gPiA+IA0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFM Ow0KPiA+ID4gwqB9DQo+ID4gPiANCj4gPiA+ICtzdGF0aWMgaW50IGFkNzc4MF93cml0ZV9yYXco c3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyBjb25z dCAqY2hhbiwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpbnQgdmFsLA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludCB2YWwyLA0KPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxvbmcgbSkNCj4gPiA+ ICt7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYWQ3NzgwX3N0YXRlICpzdCA9IGlpb19w cml2KGluZGlvX2Rldik7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3QgYWQ3Nzgw X2NoaXBfaW5mbyAqY2hpcF9pbmZvID0gc3QtPmNoaXBfaW5mbzsNCj4gPiA+ICvCoMKgwqDCoMKg wqDCoGludCB2cmVmLCBnYWluOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgaW50IGZ1 bGxfc2NhbGU7DQo+ID4gPiArDQo+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoIWNoaXBfaW5mby0+ aXNfYWQ3Nzh4KQ0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAw Ow0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3dpdGNoIChtKSB7DQo+ID4gPiArwqDC oMKgwqDCoMKgwqBjYXNlIElJT19DSEFOX0lORk9fU0NBTEU6DQo+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKHZhbCAhPSAwKQ0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsNCj4gPiA+ICsNCj4g PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2cmVmID0gc3QtPmludF92cmVmX212 ICogMTAwMDAwMExMOw0KPiA+IEZyb20gdGhlIGRhdGFzaGVldCwgdGhlIFZSRUYgaXMgwrE1IFYs IHRoZXJlZm9yZSB5b3VyIHZyZWYgdmFyaWFibGUgd2lsbA0KPiA+IG92ZXJmbG93LiBZb3UgcHJv YmFibHkgbmVlZCB1bnNpZ25lZCBsb25nIGxvbmcuDQo+IFlvdSdyZSByaWdodCwgSSdsbCBmaXgg dGhpcyBpbiB2My4NCj4gPiANCj4gPiANCj4gPiA+IA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGZ1bGxfc2NhbGUgPSAxIDw8IChjaGlwX2luZm8tDQo+ID4gPiA+Y2hhbm5l bC5zY2FuZV90eXBlLnJlYWxiaXMNCj4gPiA+IC0gMSk7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZ2FpbiA9IERJVl9ST1VORF9DTE9TRVNUKHZyZWYsIGZ1bGxfc2NhbGUp Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdhaW4gPSBESVZfUk9VTkRf Q0xPU0VTVChnYWluLCB2YWwyKTsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzdC0+Z2FpbiA9IGdhaW47DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKGdhaW4gPCBBRDc3ODBfR0FJTl9NSURQT0lOVCkNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ2FpbiA9IDA7DQo+ID4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZWxzZQ0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnYWluID0gMTsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBncGlvZF9zZXRfdmFsdWUoc3QtPmdhaW5fZ3BpbywgZ2Fpbik7DQo+ID4g PiArwqDCoMKgwqDCoMKgwqBicmVhazsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoGNhc2UgSUlPX0NI QU5fSU5GT19TQU1QX0ZSRVE6DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKDEwMDAqdmFsICsgdmFsMi8xMDAwIDwgQUQ3NzgwX0ZJTFRFUl9NSURQT0lOVCkNCj4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmFsID0gMDsN Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlDQo+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZhbCA9IDE7DQo+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3QtPmZpbHRlciA9IGFkNzc4eF9maWx0ZXJb dmFsXTsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBncGlvZF9zZXRfdmFs dWUoc3QtPmZpbHRlcl9ncGlvLCB2YWwpOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgYnJlYWs7DQo+ ID4gPiArwqDCoMKgwqDCoMKgwqB9DQo+ID4gPiArDQo+ID4gPiArwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiDCoHN0YXRpYyBpbnQgYWQ3NzgwX3Bvc3Rw cm9jZXNzX3NhbXBsZShzdHJ1Y3QgYWRfc2lnbWFfZGVsdGENCj4gPiA+ICpzaWdtYV9kZWx0YSwN Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdW5zaWduZWQgaW50IHJhd19zYW1wbGUpDQo+ID4gPiDC oHsNCj4gPiA+IEBAIC0xMjYsMTAgKzE4Nyw4IEBAIHN0YXRpYyBpbnQgYWQ3NzgwX3Bvc3Rwcm9j ZXNzX3NhbXBsZShzdHJ1Y3QNCj4gPiA+IGFkX3NpZ21hX2RlbHRhICpzaWdtYV9kZWx0YSwNCj4g PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU87DQo+ID4gPiAN Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoY2hpcF9pbmZvLT5pc19hZDc3OHgpIHsNCj4gPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocmF3X3NhbXBsZSAmIEFENzc4MF9H QUlOKQ0KPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzdC0+Z2FpbiA9IDE7DQo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZWxz ZQ0KPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBz dC0+Z2FpbiA9IDEyODsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdC0+ Z2FpbiA9IGFkNzc4eF9nYWluW3Jhd19zYW1wbGUgJiBBRDc3ODBfR0FJTl07DQo+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3QtPmZpbHRlciA9IGFkNzc4eF9maWx0ZXJbcmF3 X3NhbXBsZSAmDQo+ID4gPiBBRDc3ODBfRklMVEVSXTsNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqB9 DQo+ID4gPiANCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsNCj4gPiA+IEBAIC0xNDEs MTggKzIwMCwyMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFkX3NpZ21hX2RlbHRhX2luZm8NCj4g PiA+IGFkNzc4MF9zaWdtYV9kZWx0YV9pbmZvID0gew0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoC5o YXNfcmVnaXN0ZXJzID0gZmFsc2UsDQo+ID4gPiDCoH07DQo+ID4gPiANCj4gPiA+IC0jZGVmaW5l IEFENzc4MF9DSEFOTkVMKGJpdHMsIHdvcmRzaXplKSBcDQo+ID4gPiArI2RlZmluZSBBRDcxNzBf Q0hBTk5FTChiaXRzLCB3b3Jkc2l6ZSkgXA0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoEFEX1NEX0NI QU5ORUxfTk9fU0FNUF9GUkVRKDEsIDAsIDAsIGJpdHMsIDMyLCB3b3Jkc2l6ZSAtDQo+ID4gPiBi aXRzKQ0KPiA+ID4gKyNkZWZpbmUgQUQ3NzgwX0NIQU5ORUwoYml0cywgd29yZHNpemUpIFwNCj4g PiA+ICvCoMKgwqDCoMKgwqDCoEFEX1NEX0NIQU5ORUxfR0FJTl9GSUxURVIoMSwgMCwgMCwgYml0 cywgMzIsIHdvcmRzaXplIC0gYml0cykNCj4gPiA+IA0KPiA+ID4gwqBzdGF0aWMgY29uc3Qgc3Ry dWN0IGFkNzc4MF9jaGlwX2luZm8gYWQ3NzgwX2NoaXBfaW5mb190YmxbXSA9IHsNCj4gPiA+IMKg wqDCoMKgwqDCoMKgwqBbSURfQUQ3MTcwXSA9IHsNCj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAuY2hhbm5lbCA9IEFENzc4MF9DSEFOTkVMKDEyLCAyNCksDQo+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLmNoYW5uZWwgPSBBRDcxNzBfQ0hBTk5FTCgxMiwg MjQpLA0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAucGF0dGVybiA9IEFE NzE3MF9QQVRURVJOLA0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAucGF0 dGVybl9tYXNrID0gQUQ3MTcwX1BBVFRFUk5fTUFTSywNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgLmlzX2FkNzc4eCA9IGZhbHNlLA0KPiA+ID4gwqDCoMKgwqDCoMKgwqDC oH0sDQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgW0lEX0FENzE3MV0gPSB7DQo+ID4gPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLmNoYW5uZWwgPSBBRDc3ODBfQ0hBTk5FTCgxNiwgMjQp LA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5jaGFubmVsID0gQUQ3MTcw X0NIQU5ORUwoMTYsIDI0KSwNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg LnBhdHRlcm4gPSBBRDcxNzBfUEFUVEVSTiwNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgLnBhdHRlcm5fbWFzayA9IEFENzE3MF9QQVRURVJOX01BU0ssDQo+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5pc19hZDc3OHggPSBmYWxzZSwNCj4gPiA+IEBA IC0xNzMsNiArMjM0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhZDc3ODBfY2hpcF9pbmZvDQo+ ID4gPiBhZDc3ODBfY2hpcF9pbmZvX3RibFtdID0gew0KPiA+ID4gDQo+ID4gPiDCoHN0YXRpYyBj b25zdCBzdHJ1Y3QgaWlvX2luZm8gYWQ3NzgwX2luZm8gPSB7DQo+ID4gPiDCoMKgwqDCoMKgwqDC oMKgLnJlYWRfcmF3ID0gYWQ3NzgwX3JlYWRfcmF3LA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgLndy aXRlX3JhdyA9IGFkNzc4MF93cml0ZV9yYXcsDQo+ID4gPiDCoH07DQo+ID4gPiANCj4gPiA+IMKg c3RhdGljIGludCBhZDc3ODBfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkNCj4gPiA+IEBA IC0yMjIsNiArMjg0LDI5IEBAIHN0YXRpYyBpbnQgYWQ3NzgwX3Byb2JlKHN0cnVjdCBzcGlfZGV2 aWNlICpzcGkpDQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gZXJy b3JfZGlzYWJsZV9yZWc7DQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+ID4gDQo+ID4gPiAr wqDCoMKgwqDCoMKgwqBpZiAoc3QtPmNoaXBfaW5mby0+aXNfYWQ3Nzh4KSB7DQo+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3QtPmdhaW5fZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0 X29wdGlvbmFsKCZzcGktPmRldiwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJnYWluIiwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEdQSU9EX09VVF9ISUcNCj4gPiA+ IEgpOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChJU19FUlIoc3Qt PmdhaW5fZ3BpbykpIHsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcmV0ID0gUFRSX0VSUihzdC0+Z2Fpbl9ncGlvKTsNCj4gPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X2Vycigmc3BpLT5kZXYs ICJGYWlsZWQgdG8gcmVxdWVzdCBnYWluDQo+ID4gPiBHUElPOg0KPiA+ID4gJWRcbiIsDQo+ID4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXQpOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBnb3RvIGVycm9yX2Rpc2FibGVfcmVnOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoH0NCj4gPiA+ICsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBzdC0+ZmlsdGVyX2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbCgmc3BpLT5k ZXYsDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgImZpbHRlciIsDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgR1BJT0RfT1VUX0gNCj4gPiA+IElHSCkNCj4g PiA+IDsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoSVNfRVJSKHN0 LT5maWx0ZXJfZ3BpbykpIHsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcmV0ID0gUFRSX0VSUihzdC0+ZmlsdGVyX2dwaW8pOw0KPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZfZXJyKCZzcGkt PmRldiwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCJGYWlsZWQgdG8gcmVxdWVzdCBmaWx0ZXIgR1BJTzoNCj4gPiA+ ICVkXG4iLA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0KTsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBlcnJvcl9kaXNhYmxlX3JlZzsNCj4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+ID4gPiArwqDCoMKgwqDCoMKgwqB9DQo+ ID4gPiArDQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gYWRfc2Rfc2V0dXBfYnVmZmVyX2Fu ZF90cmlnZ2VyKGluZGlvX2Rldik7DQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCkNCj4g PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBlcnJvcl9kaXNhYmxlX3Jl ZzsNCj4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lpby9hZGMvYWRfc2lnbWFfZGVs dGEuaA0KPiA+ID4gYi9pbmNsdWRlL2xpbnV4L2lpby9hZGMvYWRfc2lnbWFfZGVsdGEuaA0KPiA+ ID4gaW5kZXggN2U4NDM1MWZhMmMwLi5jMDFkYTg2OWRlODMgMTAwNjQ0DQo+ID4gPiAtLS0gYS9p bmNsdWRlL2xpbnV4L2lpby9hZGMvYWRfc2lnbWFfZGVsdGEuaA0KPiA+ID4gKysrIGIvaW5jbHVk ZS9saW51eC9paW8vYWRjL2FkX3NpZ21hX2RlbHRhLmgNCj4gPiA+IEBAIC0xNzYsNiArMTc2LDEx IEBAIGludCBhZF9zZF92YWxpZGF0ZV90cmlnZ2VyKHN0cnVjdCBpaW9fZGV2DQo+ID4gPiAqaW5k aW9fZGV2LCBzdHJ1Y3QgaWlvX3RyaWdnZXIgKnRyaWcpOw0KPiA+ID4gwqDCoMKgwqDCoMKgwqDC oF9fQURfU0RfQ0hBTk5FTChfc2ksIF9jaGFubmVsLCAtMSwgX2FkZHJlc3MsIF9iaXRzLCBcDQo+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoF9zdG9yYWdlYml0cywgX3NoaWZ0 LCBOVUxMLCBJSU9fVk9MVEFHRSwgMCkNCj4gPiA+IA0KPiA+ID4gKyNkZWZpbmUgQURfU0RfQ0hB Tk5FTF9HQUlOX0ZJTFRFUihfc2ksIF9jaGFubmVsLCBfYWRkcmVzcywgX2JpdHMsIFwNCj4gPiA+ ICvCoMKgwqDCoMKgwqDCoF9zdG9yYWdlYml0cywgX3NoaWZ0KSBcDQo+ID4gPiArwqDCoMKgwqDC oMKgwqBfX0FEX1NEX0NIQU5ORUwoX3NpLCBfY2hhbm5lbCwgLTEsIF9hZGRyZXNzLCBfYml0cywg XA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoF9zdG9yYWdlYml0cywgX3No aWZ0LCBOVUxMLCBJSU9fVk9MVEFHRSwNCj4gPiA+IEJJVChJSU9fQ0hBTl9JTkZPX1JBVykpDQo+ ID4gPiArDQo+ID4gRG8geW91IG5lZWQgdG8gZGVmaW5lIGEgbmV3IG1hY3JvPw0KPiBPaCB5ZWFo LCB0aGF0IG1hY3JvIGlzIHVzZWxlc3MuIEknbGwgcmVtb3ZlIHRoaXMgYmxvY2suIFRoYXQgd2Fz DQo+IGRlZmluaXRlbHkgYW4gb3ZlcnNpZ2h0LiBXZSB0aG91Z2h0IHdlIGhhZCB0byBjcmVhdGUg YSBuZXcgbWFjcm8gZm9yDQo+IGFkZGluZyBzdXBwb3J0IGZvciBnYWluIGFuZCBmaWx0ZXIgR1BJ T3MgKHdoaWNoIHRoaXMgbWFjcm8gZGVmaW5pdGVseQ0KPiBkb2Vzbid0LCBhcyBpdCBpcyBpZGVu dGljYWwgdG8gdGhlIGRlZmF1bHQgb25lKSBvbiB0aGUgZHJpdmVyJ3MgY2hhbm5lbCwNCj4gYnV0 IHJlYWRpbmcgb3RoZXIgZHJpdmVycyBpdCBzZWVtcyB5b3UgZG9uJ3QgYWN0dWFsbHkgbmVlZCB0 bz8gSXMgdGhpcw0KPiByaWdodD8NCg0KQWRkaW5nIHN1cHBvcnQgZm9yIGdwaW9zLCBub3JtYWxs eSBkb2Vzbid0IGhhdmUgYW55dGhpbmcgdG8gZG8gd2l0aA0KdGhlwqBpbmZvcm1hdGlvbiBzdG9y ZWQgaW4gdGhlIGlpb19jaGFuX3NwZWMgc3RydWN0Lg0KQWxzbywgd2UgbmVlZCB0byB0cnkgdG8g d29yayB3aXRoIHRoZSBhbHJlYWR5IGRlZmluZWQgYXR0cmlidXRlcy4gSW4geW91cg0KY2FzZSwg c2V0dGluZyB0aGUgZ2FpbiBHUElPIGlzIGVxdWl2YWxlbnQgdG8gbW9kaWZ5aW5nIHRoZSBzY2Fs ZSwgd2hpbGUNCnNldHRpbmcgdGhlIGZpbHRlciBHUElPIHJlc3VsdHMgaW4gYSBjaGFuZ2UgaW4g c2FtcGxpbmcgZnJlcXVlbmN5Lg0KVGhlcmVmb3JlLCB3ZSBuZWVkIHVzZSBhIG1hY3JvIHdoaWNo IGhhcyB0aGUgSUlPX0NIQU5fSU5GT19TQ0FMRSBhbmQNCklJT19DSEFOX0lORk9fRlJFUVVFTkNZ IGZsYWdzIHNldC4gSSB0aGluayBBRF9TRF9DSEFOTkVMIHNob3VsZCBkbyBqdXN0DQpmaW5lLg0K SSBob3BlIHRoaXMgYW5zd2VycyB5b3VyIHF1ZXN0aW9uLg0KLVN0ZWZhbg0KPiA+IA0KPiA+IA0K PiA+ID4gDQo+ID4gPiDCoCNkZWZpbmUgQURfU0RfVEVNUF9DSEFOTkVMKF9zaSwgX2FkZHJlc3Ms IF9iaXRzLCBfc3RvcmFnZWJpdHMsDQo+ID4gPiBfc2hpZnQpIFwNCj4gPiA+IMKgwqDCoMKgwqDC oMKgwqBfX0FEX1NEX0NIQU5ORUwoX3NpLCAwLCAtMSwgX2FkZHJlc3MsIF9iaXRzLCBcDQo+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoF9zdG9yYWdlYml0cywgX3NoaWZ0LCBO VUxMLCBJSU9fVEVNUCwgXA0KPiA+ID4gLS0NCj4gPiA+IDIuMjAuMQ0KPiA+ID4g