From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BD408C761A6 for ; Tue, 28 Mar 2023 20:27:38 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9221E10E297; Tue, 28 Mar 2023 20:27:38 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id E7D2010E4A6 for ; Tue, 28 Mar 2023 20:27:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1680035257; x=1711571257; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=H3VyqWyQdniEWsoev2EC6H1dHHYlNvB4OEMtZoMp19Q=; b=eLZPk4QsQwjLp4bYEclXOXiJiQ9V1FgEe9vFbz83H0BFH6f5Kb8Ajq0L /88EVIE0c1SvNK/nkP5C08OTysQbCTvnepPeMnfnFCT1WIDFklYc/yVjH hosoug56CMxQnRtIp9JV9/+sud9Hm9NHjwplYXkUkcGEx8+KLMgjEw6Sf tKYWDZoEjaVSQodzgZiI73JZ8VmAhZLsLndfuzaJBQVEAr6PgjRcagYx6 wkWCMUucjpRYQ1Dw+kcauF8wLUE95itnszLpO38tqCKi2ddKxAf7K6qVE cg9omz7eAf8fK4Sjpravf3JPpFcD+3N226JBGTTMEvLfy0EosSMQPUVxu g==; X-IronPort-AV: E=McAfee;i="6600,9927,10663"; a="426956037" X-IronPort-AV: E=Sophos;i="5.98,297,1673942400"; d="scan'208";a="426956037" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2023 13:27:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10663"; a="686549707" X-IronPort-AV: E=Sophos;i="5.98,297,1673942400"; d="scan'208";a="686549707" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmsmga007.fm.intel.com with ESMTP; 28 Mar 2023 13:27:35 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 28 Mar 2023 13:27:34 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 28 Mar 2023 13:27:34 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Tue, 28 Mar 2023 13:27:34 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.174) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Tue, 28 Mar 2023 13:27:33 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WSB58rfpfc0P0bQEWNnegVEJxbKDyyDStTRoYIzxb4ovJKiOHpIbD6wirfkd8EAwHyfV+kV1zu8qB87y+jHuxRYiuljr3TyB57OiizNX7H+PIlIwYd1kc7Y3wcWHSIi0SLkHw03e85/hvi6HA2/2LcXKwPJvbPwnod9XFWW2j2CCGmqasR352kmUW4VOdddiIzIfWrdwL68fyZR3M+F4xhCMWQRqWpSxDfHG/DU7cpgGLDun516m9tQHfdxpVZghSuxu/g/4gOmV34e/W88HzQLxRV/gqBwDneRwPq4Skw6ZcsDvab850j6Pc5LcXmxTKpKpTuMjYveOWZ3kFt9+Vw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=H3VyqWyQdniEWsoev2EC6H1dHHYlNvB4OEMtZoMp19Q=; b=BCNku157EKvgX77jSfh7xY43NT3TQ5/QeLHJWZkI3EJU/jO2z2j39zSHa2UHA8TV/dcojgPK8ldy4zvwbTe7UCouh7m+aO0sO2Gju+x9zzG7N3U/wzQRK8wZQP3XYXqg3bRRyjrpaeIcdj8ZVTZV4GXPOfdhGApnr0wLxywo06Ytj0Ut9NzOrfwMovI1SnFm2Qi62jTE/xyqKSNudSWwl4ZKl8wwvfN60QFzJIyyxQQK91SGFYartGkFXmp5MXJT4uFVP76BfuVDIkHH9ZW/dU+3PAp0L9z0Hg/JMpXv5tyXXEHA/354JgVMvOEDEBRTy0GdJJZgw49O1SJIrLVw5A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) by CY5PR11MB6487.namprd11.prod.outlook.com (2603:10b6:930:31::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.33; Tue, 28 Mar 2023 20:27:25 +0000 Received: from MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::2b57:646c:1b01:cd18]) by MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::2b57:646c:1b01:cd18%6]) with mapi id 15.20.6222.032; Tue, 28 Mar 2023 20:27:25 +0000 From: "Vivi, Rodrigo" To: "Roper, Matthew D" Thread-Topic: [Intel-xe] [RFC 4/5] drm/xe: Remove useless XE_BUG_ON. Thread-Index: AQHZYY/ZGGX6tmzyMEWv5/VDW7gk1q8Qo40AgAAAuIA= Date: Tue, 28 Mar 2023 20:27:24 +0000 Message-ID: References: <20230328161021.669017-1-rodrigo.vivi@intel.com> <20230328161021.669017-5-rodrigo.vivi@intel.com> <20230328202446.GL4085390@mdroper-desk1.amr.corp.intel.com> In-Reply-To: <20230328202446.GL4085390@mdroper-desk1.amr.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.46.4 (3.46.4-1.fc37) authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN0PR11MB6059:EE_|CY5PR11MB6487:EE_ x-ms-office365-filtering-correlation-id: 49c64f90-3417-446d-cc95-08db2fcad79f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Aix3QczIq2wneI4nxRZW8Z3rDEnw69bxgfe32VLJC7PpvO32Mb/EH+xhKan37Y+RzJLunaaY3xjAwnZ7yTbbeFuJymiuWrxvOyvRB9LBKYLVmtAWILX+X2R4XKlRc5jVk4gfAqvy4M0meTt6V+i8l8+dTvp0jf0KTmgN1njQVcN+oaIHYpk4CC5iDvhzYbVv60LTkVAKweiswCmyldEkJUHVAgilH6Aqbw+TgmG5SKeJ1aRg+Ng3gaReHceAYoR77zR9RkTjq8AqfbEgnZigfgQ4zIxr/naF8aQw6K8f5oHAPwCiKAsWMz4vviVvmU4J/gA9m2uwgWUirzL5IBcLmgTSI3bcc48sLBV+n0spPinKMj9FWHFWi2T9/5QYbdpUC5sQMu3ur/bGQw0katI7vrqMYjOWYZztIRQfn5TICBcAuJoovMvsphcq+3Jb5r+9d5QA43DKKNy/55ODeqsiizSFD/rKRL425d3uxu5nuoV0ZE0kAQJYjaLXIQjjio+oiUZM01vYs9Sg0GX+UVj2zsUNAZLTmTf5MQOSC/vTDCuJURP/pkGsx/HOwqMm1v47q3izQMQjCKvhcE1x33rcBAu9Z7vKhbMVm0eSu+M7q8mUP7AfjO19YwBPCeM096/X+UrLulmRVk+vIXJmV/hCMg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR11MB6059.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(39860400002)(366004)(346002)(396003)(136003)(376002)(451199021)(38070700005)(6512007)(6506007)(26005)(5660300002)(36756003)(71200400001)(8936002)(478600001)(6862004)(122000001)(30864003)(91956017)(6486002)(6636002)(66476007)(66556008)(66946007)(86362001)(4326008)(66446008)(8676002)(76116006)(64756008)(82960400001)(37006003)(41300700001)(316002)(38100700002)(83380400001)(2906002)(2616005)(186003)(66899021)(21314003)(579004)(559001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ck5tVzMvQ3EwT2liWEJ3aEhFRGxLbDJRaDB4bXJYRUx6enBUVjNpdzRtYTNv?= =?utf-8?B?NEtHRFhwRHNYdE9iOGVLdGpodU1WRzlwOXBXSDNoMVFUUzJYVmFlVXFFOG56?= =?utf-8?B?c2tReEw0bmFLS3RrY2IvcWdSaWxnU1pCZm8zaWF1UmIwLzlyYTJ1Y2FGdzBQ?= =?utf-8?B?NjFzM2JTdkZ4aGI5MHVUOG1CUE5pYjZwZG14aWVESEhFZHMzL0NPTnROdElw?= =?utf-8?B?ZldQb1ZGcXdtc2h1WmQ0a3E1R1JMV1BKSmgxcXdMM1hlMnpReDNQTTRWc0kx?= =?utf-8?B?bWpGbFZPS25rcGJXZGRINHdZbU5CMVhEQldsOVF5T0VNUEVDVm8vMVJOLysw?= =?utf-8?B?WG00Sm9DSURtbWRYOWUyTGlVei8wVUdsRERMQ21PdmdrY0tLTmcraVVyekdO?= =?utf-8?B?Q04yKzhYaUdoemtJUXQwVnZrOGpjQ0M5UmgxSGVOVzc3Y2h4WFdpYnhsVUx0?= =?utf-8?B?eGgvYUdRUW92RmYydnh4V1NwbGx1WlYxZDVaRUc3cFlxWkl6OUJjOEdYeG5V?= =?utf-8?B?UDJyMDlTMFlZWUNSdVdvczJQUTRrNzI0WGZtbGxjMFNaYU84SFBkS2hWK21m?= =?utf-8?B?YzE5ckl4VlF4TjI4dWZOQTBQZ0NTMEUrWWNZaFB2NGRMVEZ2ZzJ1dUZzUzdT?= =?utf-8?B?cVZOUjFNSkFobjZRVDdDSzcwamwvL0dpZk5SYThEaUpFVXFjN2UyZ0FZMDhV?= =?utf-8?B?NzQvU29udGhKUnJnSzhISmtja3Uxcm9HYnZmTjZWZk4yMUZCYmg1THpPdmVP?= =?utf-8?B?aXpwU1pXQjFvS0JpZlZDNzQ1SW1Eby90RThPNFlkY0JYem04QjQ5UTcxc0t1?= =?utf-8?B?Z1pqWnNMdUQ5eTNYSVFMb05nQTl0T1ZTVXRYRnRqaWc0N1NrenlRTVRoQWNW?= =?utf-8?B?MlAxa2djL3RmbEF0TzMwTFFpeVBsU3gwWTJINTZqWFVuRzgvbGRCR085dlVQ?= =?utf-8?B?Q3dEMHdHU2NLREVJZW5yQmdQK3dEOURJUTRMa0k3ZmVhT2l0T1VCMVhuRmUx?= =?utf-8?B?bHlhOHZna0xaOWFSWVlwRDZycWNNdy9wYkpvYlA4Q1p1OFd2bjhkRGE1YUph?= =?utf-8?B?dW95Z0ZoTUg5eE9lYURKU3NpdDJ6TXZXZWdzQkpuZ1FtZkR6ZHhzeUc2aE42?= =?utf-8?B?Mm9wUjU1UThFK0JhMW1wbXJnYkFlZUFyUGR0bTZUdmtMamxqV0ttSkorYm1W?= =?utf-8?B?LytmeWpTYnI2RXRhYzhHd2Fyam5yVXkwdnM3dHU5RSthWVc0QlJ4MzRoU2NN?= =?utf-8?B?Y2xjVEc5NlhKdk44VXRsN2ZkQlBTalhqcHVLV0dkdXg3R3FOdFBEYWk3WHcz?= =?utf-8?B?SGpOVjZlbGVQZGJRRWh1NHJOTDZ6UE1tUkRzcVZTMzJ3YTAwZFNzUFpnRms0?= =?utf-8?B?ZmpPUlF5amdnWkFQZXJMb3lSdk5ibFdQWVp3RTVCZEQrcGFzTVZudmE1V1k5?= =?utf-8?B?OFIrL2xZUDV5UzhEbnA4V2tFQ3F2OW1IMEZZTlIvTm84V3RlQVRkVlF3Zkpr?= =?utf-8?B?ZXdsVkFBWFVFbEhtYlRTcjRQZ3NFTVg1TjhzWWVmaHlRZzgyL2svR0ZmYzY0?= =?utf-8?B?Zm5wL042MXoxbnhhcWFpcDljTGZtVDl4bWU3aEhwdllSMkZKQjdwT25kelE2?= =?utf-8?B?Uk9tbWlQNDRhaGhCSFR3dmtzcDdUQXh4ckRabUNBSUVBSlVCeHIvbGplSTEw?= =?utf-8?B?ZXlHS1NmMWpvNENObmJlZGQ3cUdVblVucUc1WDRaNmp6NlRCMWJvK29BbUUr?= =?utf-8?B?L1ZyNXpGbkd2YUJTK2w5cXdoVWRVSGlTRU1MMUphalM5b25kam4zeEd2NEx6?= =?utf-8?B?NXMwN0dTUFQ2STZKb1ZGLzBFenhaYi9UR21vNE5sZS9CRk8ydGdzb0o4bUlO?= =?utf-8?B?WWFZNklvendRNUxHa3ZFSHFLNzYxQnAwMVBwVXNBRjJaaENrMFVieHY0OVV2?= =?utf-8?B?OUVyUHp2aVFiNmdvcm5ZUVhneXdUaVhEdFR0cmtaNUFoUTJxcHFsN2MvakFm?= =?utf-8?B?Rys5TW9Lb082U0xEM3NtbnRWMEgrNmF6MXJEemdmdjUwU08rTmFuV0VuQmVP?= =?utf-8?B?TVZJTUZXZ2tKTlBvNVlIZU5oN2MxbGZqTmRyeEFVUUNiU1Q0SGIxQ3g1NGxm?= =?utf-8?B?S1FWZlVuMU1qVCtTTVhGbjNralN6U2dPaTlYV3JHczRLWktVVVlGVldVcW91?= =?utf-8?B?TUE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <3E120EA04E30DF4EAC96EC470E3ECA8E@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6059.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 49c64f90-3417-446d-cc95-08db2fcad79f X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Mar 2023 20:27:24.9982 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: g/Eq23DT+hGUkA38tBKG9wSJcdcOG4MVuq3KEanLxI98vdZGkVzPUe+j0SrJ+AAZPb6gCWNr41ZZBvHkj78X3w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6487 X-OriginatorOrg: intel.com Subject: Re: [Intel-xe] [RFC 4/5] drm/xe: Remove useless XE_BUG_ON. X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "intel-xe@lists.freedesktop.org" Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" T24gVHVlLCAyMDIzLTAzLTI4IGF0IDEzOjI0IC0wNzAwLCBNYXR0IFJvcGVyIHdyb3RlOgo+IE9u IFR1ZSwgTWFyIDI4LCAyMDIzIGF0IDEyOjEwOjIwUE0gLTA0MDAsIFJvZHJpZ28gVml2aSB3cm90 ZToKPiA+IElmIHRoYXQgYmVjb21lcyBuZWVkZWQgZm9yIHNvbWUgcmVhc29uIHdlIGJyaW5nIGl0 Cj4gPiBiYWNrIHdpdGggc29tZSB3cml0dGVuIHJlYXNvbmluZy4KPiAKPiBGcm9tIGEgcXVpY2sg c2tpbSB0aHJvdWdoIHRoaXMgcGF0Y2gsIG1vc3QvYWxsIG9mIHRoZXNlIHNob3VsZG4ndCBiZQo+ IEJVR19PTiBlaXRoZXIuwqAgVGhlc2UgYXJlIGFzc2VydGlvbnMgdGhhdCB3ZSBkb24ndCBleHBl Y3QgdG8gZ2V0Cj4gdHJpZ2dlcmVkLCBidXQgaWYgd2UgZG8gc2NyZXcgdXAgc29tZXdoZXJlIHdl IHNob3VsZG4ndCBiZSBicmluZ2luZwo+IGRvd24KPiB0aGUgZW50aXJlIG1hY2hpbmU7IGEgV0FS TiAoYW5kIHBvc3NpYmx5IGFuIGVhcmx5IGV4aXQpIHdvdWxkIGJlIG1vcmUKPiBhcHByb3ByaWF0 ZSBmb3IgbW9zdCBvZiB0aGVzZS4KCnllYXAhIEkgZnVsbHkgYWdyZWUgb24gdGhhdC4gSSBnZXQg ZnJ1c3RyYXRlZCB3aGVuIEkgaGl0IG9uZSBvZiB0aGVzZQpCVUdfT05zIHRoYXQgc2hvdWxkIGJl IGEgZ3JhY2VmdWwgZXhpdCB3aXRoIGEgd2FybiB3aXRob3V0IGEgcGFuaWMuLi4KCgo+IAo+IAo+ IE1hdHQKPiAKPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZp dmlAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiDCoGRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hl X2RlLmjCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDIgKy0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL3hl L3hlX2JiLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA0ICstCj4gPiDC oGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9iby5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8IDUyICsrKysrKysrKy0tLS0tLS0tCj4gPiAtCj4gPiDCoGRyaXZlcnMvZ3B1L2RybS94 ZS94ZV9iby5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgOCArLS0KPiA+ IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2JvX2V2aWN0LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHzCoCA0ICstCj4gPiDCoGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuaMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHzCoCA2ICstLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfZXhl Y2xpc3QuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxNCArKy0tLQo+ID4gwqBkcml2ZXJzL2dw dS9kcm0veGUveGVfZm9yY2Vfd2FrZS5jwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA0ICstCj4gPiDC oGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9mb3JjZV93YWtlLmjCoMKgwqDCoMKgwqDCoMKgwqAgfMKg IDQgKy0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2dndHQuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8IDEwICsrLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0LmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA2ICstLQo+ID4gwqBkcml2ZXJz L2dwdS9kcm0veGUveGVfZ3RfY2xvY2suY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQgKy0K PiA+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X2RlYnVnZnMuY8KgwqDCoMKgwqDCoMKgwqDC oCB8wqAgMiArLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfdGxiX2ludmFsaWRhdGlv bi5jIHwgMTIgKystLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAyMiArKysrLS0tLQo+ID4gwqBkcml2ZXJzL2dwdS9k cm0veGUveGVfZ3VjX2Fkcy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTQgKystLS0KPiA+ IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCAyMiArKysrLS0tLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2h3Y29uZmln LmPCoMKgwqDCoMKgwqDCoCB8wqAgMiArLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfZ3Vj X2xvZy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA0ICstCj4gPiDCoGRyaXZlcnMvZ3B1 L2RybS94ZS94ZV9ndWNfc3VibWl0LmPCoMKgwqDCoMKgwqDCoMKgwqAgfCA0NCArKysrKysrLS0t LS0tLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2h1Yy5jwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgIDIgKy0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2h3X2Vu Z2luZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxMCArKy0tCj4gPiDCoGRyaXZlcnMvZ3B1L2Ry bS94ZS94ZV9od19mZW5jZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMiArLQo+ID4gwqBk cml2ZXJzL2dwdS9kcm0veGUveGVfbHJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8wqAgOCArLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX21hY3Jvcy5owqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgIDEgLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfbWln cmF0ZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMzIgKysrKystLS0tLS0KPiA+IMKgZHJp dmVycy9ncHUvZHJtL3hlL3hlX21taW8uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 wqAgMiArLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfcHQuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCAzMiArKysrKy0tLS0tLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0v eGUveGVfcmVzX2N1cnNvci5owqDCoMKgwqDCoMKgwqDCoMKgIHwgMTAgKystLQo+ID4gwqBkcml2 ZXJzL2dwdS9kcm0veGUveGVfcmluZ19vcHMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDgg Ky0tCj4gPiDCoGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9zY2hlZF9qb2IuY8KgwqDCoMKgwqDCoMKg wqDCoMKgIHzCoCAyICstCj4gPiDCoGRyaXZlcnMvZ3B1L2RybS94ZS94ZV90dG1fZ3R0X21nci5j wqDCoMKgwqDCoMKgwqDCoCB8wqAgMiArLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfdHRt X3N0b2xlbl9tZ3IuY8KgwqDCoMKgwqAgfMKgIDQgKy0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL3hl L3hlX3R0bV92cmFtX21nci5jwqDCoMKgwqDCoMKgwqAgfMKgIDIgKy0KPiA+IMKgZHJpdmVycy9n cHUvZHJtL3hlL3hlX3VjX2Z3LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTYgKysr LS0tCj4gPiDCoGRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Y19mdy5owqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8wqAgMiArLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfdm0uY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA2MCArKysrKysrKysrLS0tLS0tLQo+ID4g LS0tLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfd2FpdF91c2VyX2ZlbmNlLmPCoMKgwqDC oCB8wqAgMiArLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfd29wY20uY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCAxOCArKystLS0tCj4gPiDCoDM5IGZpbGVzIGNoYW5nZWQsIDIy NyBpbnNlcnRpb25zKCspLCAyMjggZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kZS5oCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS94 ZS9kaXNwbGF5L3hlX2RlLmgKPiA+IGluZGV4IDlmOTJmZGI0MTU5YS4uYzRlZDBlN2Q5OTk3IDEw MDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGUuaAo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGUuaAo+ID4gQEAgLTExNSw3ICsxMTUs NyBAQCBpbnRlbF9kZV93cml0ZV9zYW1ldmFsdWUoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRl ICppOTE1LCBpOTE1X3JlZ190IHJlZykKPiA+IMKgwqDCoMKgwqDCoMKgwqAgKiBOb3QgaW1wbGVt ZW50ZWQsIHJlcXVpcmVzIGxvY2sgb24gYWxsIHJlYWRzL3dyaXRlcy4KPiA+IMKgwqDCoMKgwqDC oMKgwqAgKiBvbmx5IHJlcXVpcmVkIGZvciByZWFsbHkgb2xkIEZCQy4gTm90IGV2ZXIgZ29pbmcg dG8gYmUKPiA+IG5lZWRlZC4KPiA+IMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+IC3CoMKgwqDCoMKg wqDCoFhFX0JVR19PTigxKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTigxKTsKPiA+IMKgfQo+ ID4gwqAKPiA+IMKgc3RhdGljIGlubGluZSB1MzIKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0veGUveGVfYmIuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfYmIuYwo+ID4gaW5k ZXggNWIyNDAxOGUyYTgwLi41Y2FlZmMwM2E0MzEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0veGUveGVfYmIuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2JiLmMKPiA+ IEBAIC00Miw3ICs0Miw3IEBAIF9feGVfYmJfY3JlYXRlX2pvYihzdHJ1Y3QgeGVfZW5naW5lICpr ZXJuZWxfZW5nLAo+ID4gc3RydWN0IHhlX2JiICpiYiwgdTY0ICphZGRyKQo+ID4gwqB7Cj4gPiDC oMKgwqDCoMKgwqDCoMKgdTMyIHNpemUgPSBkcm1fc3ViYWxsb2Nfc2l6ZShiYi0+Ym8pOwo+ID4g wqAKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTigoYmItPmxlbiAqIDQgKyAxKSA+IHNpemUp Owo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKChiYi0+bGVuICogNCArIDEpID4gc2l6ZSk7Cj4g PiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGJiLT5jc1tiYi0+bGVuKytdID0gTUlfQkFUQ0hfQlVG RkVSX0VORDsKPiA+IMKgCj4gPiBAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgeGVfc2NoZWRfam9i ICp4ZV9iYl9jcmVhdGVfd2Ffam9iKHN0cnVjdAo+ID4geGVfZW5naW5lICp3YV9lbmcsCj4gPiDC oHsKPiA+IMKgwqDCoMKgwqDCoMKgwqB1NjQgYWRkciA9IGJhdGNoX2Jhc2Vfb2ZzICsgZHJtX3N1 YmFsbG9jX3NvZmZzZXQoYmItPmJvKTsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdf T04oISh3YV9lbmctPnZtLT5mbGFncyAmIFhFX1ZNX0ZMQUdfTUlHUkFUSU9OKSk7Cj4gPiArwqDC oMKgwqDCoMKgwqBCVUdfT04oISh3YV9lbmctPnZtLT5mbGFncyAmIFhFX1ZNX0ZMQUdfTUlHUkFU SU9OKSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBfX3hlX2JiX2NyZWF0ZV9q b2Iod2FfZW5nLCBiYiwgJmFkZHIpOwo+ID4gwqB9Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3hlL3hlX2JvLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2JvLmMKPiA+IGlu ZGV4IGViMDBiMGE2N2FiZS4uZGIzNjBjNGUwMzgyIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL3hlL3hlX2JvLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9iby5jCj4g PiBAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgYm9vbCB4ZV9ib19pc191c2VyKHN0cnVjdCB4ZV9i byAqYm8pCj4gPiDCoHN0YXRpYyBzdHJ1Y3QgeGVfZ3QgKgo+ID4gwqBtZW1fdHlwZV90b19ndChz dHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTMyIG1lbV90eXBlKQo+ID4gwqB7Cj4gPiAtwqDCoMKgwqDC oMKgwqBYRV9CVUdfT04obWVtX3R5cGUgIT0gWEVfUExfU1RPTEVOICYmCj4gPiAhbWVtX3R5cGVf aXNfdnJhbShtZW1fdHlwZSkpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKG1lbV90eXBlICE9 IFhFX1BMX1NUT0xFTiAmJgo+ID4gIW1lbV90eXBlX2lzX3ZyYW0obWVtX3R5cGUpKTsKPiA+IMKg Cj4gPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHhlX2RldmljZV9nZXRfZ3QoeGUsIG1lbV90eXBl ID09IFhFX1BMX1NUT0xFTiA/IDAgOgo+ID4gKG1lbV90eXBlIC0gWEVfUExfVlJBTTApKTsKPiA+ IMKgfQo+ID4gQEAgLTExMSw3ICsxMTEsNyBAQCBzdGF0aWMgdm9pZCBhZGRfdnJhbShzdHJ1Y3Qg eGVfZGV2aWNlICp4ZSwKPiA+IHN0cnVjdCB4ZV9ibyAqYm8sCj4gPiDCoHsKPiA+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgeGVfZ3QgKmd0ID0gbWVtX3R5cGVfdG9fZ3QoeGUsIG1lbV90eXBlKTsK PiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIWd0LT5tZW0udnJhbS5zaXplKTsK PiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTighZ3QtPm1lbS52cmFtLnNpemUpOwo+ID4gwqAKPiA+ IMKgwqDCoMKgwqDCoMKgwqBwbGFjZXNbKmNdID0gKHN0cnVjdCB0dG1fcGxhY2UpIHsKPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLm1lbV90eXBlID0gbWVtX3R5cGUsCj4gPiBA QCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyBpbnQgeGVfdHRfbWFwX3NnKHN0cnVjdCB0dG1fdHQg KnR0KQo+ID4gwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgbnVtX3BhZ2VzID0gdHQtPm51 bV9wYWdlczsKPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+ID4gwqAKPiA+IC3CoMKgwqDC oMKgwqDCoFhFX0JVR19PTih0dC0+cGFnZV9mbGFncyAmIFRUTV9UVF9GTEFHX0VYVEVSTkFMKTsK PiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTih0dC0+cGFnZV9mbGFncyAmIFRUTV9UVF9GTEFHX0VY VEVSTkFMKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKHhlX3R0LT5zZykKPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gPiBAQCAtNDgxLDggKzQ4 MSw4IEBAIHN0YXRpYyBpbnQgeGVfYm9fbW92ZV9kbWFidWYoc3RydWN0Cj4gPiB0dG1fYnVmZmVy X29iamVjdCAqdHRtX2JvLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dHRtKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgc2dfdGFibGUgKnNnOwo+ID4gwqAKPiA+ IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTighYXR0YWNoKTsKPiA+IC3CoMKgwqDCoMKgwqDCoFhF X0JVR19PTighdHRtX2JvLT50dG0pOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKCFhdHRhY2gp Owo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKCF0dG1fYm8tPnR0bSk7Cj4gPiDCoAo+ID4gwqDC oMKgwqDCoMKgwqDCoGlmIChuZXdfcmVzLT5tZW1fdHlwZSA9PSBYRV9QTF9TWVNURU0pCj4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0Owo+ID4gQEAgLTYzNiw4ICs2 MzYsOCBAQCBzdGF0aWMgaW50IHhlX2JvX21vdmUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0Cj4g PiAqdHRtX2JvLCBib29sIGV2aWN0LAo+ID4gwqDCoMKgwqDCoMKgwqDCoGVsc2UgaWYgKHJlc291 cmNlX2lzX3ZyYW0ob2xkX21lbSkpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGd0ID0gbWVtX3R5cGVfdG9fZ3QoeGUsIG9sZF9tZW0tPm1lbV90eXBlKTsKPiA+IMKgCj4gPiAt wqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIWd0KTsKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19P TighZ3QtPm1pZ3JhdGUpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKCFndCk7Cj4gPiArwqDC oMKgwqDCoMKgwqBCVUdfT04oIWd0LT5taWdyYXRlKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDC oMKgdHJhY2VfeGVfYm9fbW92ZShibyk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgeGVfZGV2aWNlX21l bV9hY2Nlc3NfZ2V0KHhlKTsKPiA+IEBAIC02NjcsNyArNjY3LDcgQEAgc3RhdGljIGludCB4ZV9i b19tb3ZlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdAo+ID4gKnR0bV9ibywgYm9vbCBldmljdCwK PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBvdXQ7Cj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gwqAK PiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoFhFX0JVR19PTihuZXdfbWVtLT5zdGFydCAhPQo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQlVHX09OKG5l d19tZW0tPnN0YXJ0ICE9Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvLT5wbGFjZW1l bnRzLT5mcGZuKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW9zeXNfbWFwX3NldF92YWRkcl9pb21lbSgm Ym8tCj4gPiA+dm1hcCwgbmV3X2FkZHIpOwo+ID4gQEAgLTk2NCw3ICs5NjQsNyBAQCBzdHJ1Y3Qg eGVfYm8gKl9feGVfYm9fY3JlYXRlX2xvY2tlZChzdHJ1Y3QKPiA+IHhlX2RldmljZSAqeGUsIHN0 cnVjdCB4ZV9ibyAqYm8sCj4gPiDCoMKgwqDCoMKgwqDCoMKgaW50IGVycjsKPiA+IMKgCj4gPiDC oMKgwqDCoMKgwqDCoMKgLyogT25seSBrZXJuZWwgb2JqZWN0cyBzaG91bGQgc2V0IEdUICovCj4g PiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oZ3QgJiYgdHlwZSAhPSB0dG1fYm9fdHlwZV9rZXJu ZWwpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKGd0ICYmIHR5cGUgIT0gdHRtX2JvX3R5cGVf a2VybmVsKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKFdBUk5fT04oIXNpemUpKQo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gRVJSX1BUUigtRUlOVkFM KTsKPiA+IEBAIC0xMTA0LDcgKzExMDQsNyBAQCB4ZV9ib19jcmVhdGVfbG9ja2VkX3JhbmdlKHN0 cnVjdCB4ZV9kZXZpY2UKPiA+ICp4ZSwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKCFndCAmJiBmbGFncyAmIFhFX0JPX0NSRUFURV9TVE9MRU5fQklUKQo+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ3QgPSB4ZV9kZXZpY2Vf Z2V0X2d0KHhlLCAwKTsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg WEVfQlVHX09OKCFndCk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQlVHX09O KCFndCk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZmxh Z3MgJiBYRV9CT19GSVhFRF9QTEFDRU1FTlRfQklUKSB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSB4ZV9nZ3R0X2luc2VydF9ib19hdChn dC0+bWVtLmdndHQsCj4gPiBibywKPiA+IEBAIC0xMjMzLDggKzEyMzMsOCBAQCBpbnQgeGVfYm9f cGluX2V4dGVybmFsKHN0cnVjdCB4ZV9ibyAqYm8pCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IHhlX2RldmljZSAqeGUgPSB4ZV9ib19kZXZpY2UoYm8pOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGlu dCBlcnI7Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKGJvLT52bSk7Cj4gPiAt wqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIXhlX2JvX2lzX3VzZXIoYm8pKTsKPiA+ICvCoMKgwqDC oMKgwqDCoEJVR19PTihiby0+dm0pOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKCF4ZV9ib19p c191c2VyKGJvKSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmICgheGVfYm9faXNfcGlu bmVkKGJvKSkgewo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSB4ZV9i b192YWxpZGF0ZShibywgTlVMTCwgZmFsc2UpOwo+ID4gQEAgLTEyNjYsMjAgKzEyNjYsMjAgQEAg aW50IHhlX2JvX3BpbihzdHJ1Y3QgeGVfYm8gKmJvKQo+ID4gwqDCoMKgwqDCoMKgwqDCoGludCBl cnI7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIFdlIGN1cnJlbnRseSBkb24ndCBleHBl Y3QgdXNlciBCTyB0byBiZSBwaW5uZWQgKi8KPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTih4 ZV9ib19pc191c2VyKGJvKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oeGVfYm9faXNfdXNl cihibykpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqAvKiBQaW5uZWQgb2JqZWN0IG11c3Qg YmUgaW4gR0dUVCBvciBoYXZlIHBpbm5lZCBmbGFnICovCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9C VUdfT04oIShiby0+ZmxhZ3MgJiAoWEVfQk9fQ1JFQVRFX1BJTk5FRF9CSVQgfAo+ID4gK8KgwqDC oMKgwqDCoMKgQlVHX09OKCEoYm8tPmZsYWdzICYgKFhFX0JPX0NSRUFURV9QSU5ORURfQklUIHwK PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgWEVfQk9fQ1JFQVRFX0dHVFRfQklUKSkpOwo+ID4gwqAKPiA+IMKgwqDCoMKg wqDCoMKgwqAvKgo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIE5vIHJlYXNvbiB3ZSBjYW4ndCBzdXBw b3J0IHBpbm5pbmcgaW1wb3J0ZWQgZG1hLWJ1ZnMgd2UKPiA+IGp1c3QgZG9uJ3QKPiA+IMKgwqDC oMKgwqDCoMKgwqAgKiBleHBlY3QgdG8gcGluIGFuIGltcG9ydGVkIGRtYS1idWYuCj4gPiDCoMKg wqDCoMKgwqDCoMKgICovCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oYm8tPnR0bS5iYXNl LmltcG9ydF9hdHRhY2gpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKGJvLT50dG0uYmFzZS5p bXBvcnRfYXR0YWNoKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgLyogV2Ugb25seSBleHBl Y3QgYXQgbW9zdCAxIHBpbiAqLwo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKHhlX2JvX2lz X3Bpbm5lZChibykpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKHhlX2JvX2lzX3Bpbm5lZChi bykpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBlcnIgPSB4ZV9ib192YWxpZGF0ZShibywg TlVMTCwgZmFsc2UpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChlcnIpCj4gPiBAQCAtMTI5Niw3 ICsxMjk2LDcgQEAgaW50IHhlX2JvX3BpbihzdHJ1Y3QgeGVfYm8gKmJvKQo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBib29sIHZyYW07Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAobWVtX3R5cGVfaXNfdnJhbShwbGFjZS0+bWVtX3R5cGUp KSB7Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFhF X0JVR19PTighKHBsYWNlLT5mbGFncyAmCj4gPiBUVE1fUExfRkxBR19DT05USUdVT1VTKSk7Cj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJVR19PTigh KHBsYWNlLT5mbGFncyAmCj4gPiBUVE1fUExfRkxBR19DT05USUdVT1VTKSk7Cj4gPiDCoAo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGxhY2UtPmZw Zm4gPSAoeGVfYm9fYWRkcihibywgMCwgUEFHRV9TSVpFLAo+ID4gJnZyYW0pIC0KPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdnJhbV9yZWdpb25faW9fb2Zmc2V0KGJvKSkKPiA+ID4+IFBBR0VfU0hJ RlQ7Cj4gPiBAQCAtMTMzMyw5ICsxMzMzLDkgQEAgdm9pZCB4ZV9ib191bnBpbl9leHRlcm5hbChz dHJ1Y3QgeGVfYm8gKmJvKQo+ID4gwqB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2Rl dmljZSAqeGUgPSB4ZV9ib19kZXZpY2UoYm8pOwo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoFhF X0JVR19PTihiby0+dm0pOwo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKCF4ZV9ib19pc19w aW5uZWQoYm8pKTsKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTigheGVfYm9faXNfdXNlcihi bykpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKGJvLT52bSk7Cj4gPiArwqDCoMKgwqDCoMKg wqBCVUdfT04oIXhlX2JvX2lzX3Bpbm5lZChibykpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09O KCF4ZV9ib19pc191c2VyKGJvKSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChiby0+ dHRtLnBpbl9jb3VudCA9PSAxICYmICFsaXN0X2VtcHR5KCZiby0KPiA+ID5waW5uZWRfbGluaykp IHsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3Bpbl9sb2NrKCZ4ZS0+cGlu bmVkLmxvY2spOwo+ID4gQEAgLTEzNTYsMTUgKzEzNTYsMTUgQEAgdm9pZCB4ZV9ib191bnBpbihz dHJ1Y3QgeGVfYm8gKmJvKQo+ID4gwqB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2Rl dmljZSAqeGUgPSB4ZV9ib19kZXZpY2UoYm8pOwo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoFhF X0JVR19PTihiby0+dHRtLmJhc2UuaW1wb3J0X2F0dGFjaCk7Cj4gPiAtwqDCoMKgwqDCoMKgwqBY RV9CVUdfT04oIXhlX2JvX2lzX3Bpbm5lZChibykpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09O KGJvLT50dG0uYmFzZS5pbXBvcnRfYXR0YWNoKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTigh eGVfYm9faXNfcGlubmVkKGJvKSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChJU19E R0ZYKHhlKSAmJiAhKElTX0VOQUJMRUQoQ09ORklHX0RSTV9YRV9ERUJVRykgJiYKPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgYm8tPmZsYWdzICYgWEVfQk9fSU5URVJOQUxfVEVTVCkpIHsKPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHR0bV9wbGFjZSAqcGxhY2Ug PSAmKGJvLT5wbGFjZW1lbnRzWzBdKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmIChtZW1fdHlwZV9pc192cmFtKHBsYWNlLT5tZW1fdHlwZSkpIHsKPiA+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKGxp c3RfZW1wdHkoJmJvLT5waW5uZWRfbGluaykpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCVUdfT04obGlzdF9lbXB0eSgmYm8tPnBpbm5lZF9saW5r KSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgc3Bpbl9sb2NrKCZ4ZS0+cGlubmVkLmxvY2spOwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGlzdF9kZWxfaW5pdCgmYm8tPnBpbm5lZF9s aW5rKTsKPiA+IEBAIC0xNDI2LDE0ICsxNDI2LDE0IEBAIGRtYV9hZGRyX3QgeGVfYm9fYWRkcihz dHJ1Y3QgeGVfYm8gKmJvLCB1NjQKPiA+IG9mZnNldCwKPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAo IVJFQURfT05DRShiby0+dHRtLnBpbl9jb3VudCkpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHhlX2JvX2Fzc2VydF9oZWxkKGJvKTsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKg wqBYRV9CVUdfT04ocGFnZV9zaXplID4gUEFHRV9TSVpFKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJV R19PTihwYWdlX3NpemUgPiBQQUdFX1NJWkUpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoHBhZ2UgPSBv ZmZzZXQgPj4gUEFHRV9TSElGVDsKPiA+IMKgwqDCoMKgwqDCoMKgwqBvZmZzZXQgJj0gKFBBR0Vf U0laRSAtIDEpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqAqaXNfdnJhbSA9IHhlX2JvX2lz X3ZyYW0oYm8pOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoISppc192cmFtICYmICF4 ZV9ib19pc19zdG9sZW4oYm8pKSB7Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg WEVfQlVHX09OKCFiby0+dHRtLnR0bSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgQlVHX09OKCFiby0+dHRtLnR0bSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB4ZV9yZXNfZmlyc3Rfc2coeGVfYm9fZ2V0X3NnKGJvKSwgcGFnZSA8PAo+ID4g UEFHRV9TSElGVCwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwYWdlX3NpemUsICZjdXIpOwo+ID4gQEAgLTE1OTksNyAr MTU5OSw3IEBAIGludCB4ZV9ib19sb2NrKHN0cnVjdCB4ZV9ibyAqYm8sIHN0cnVjdAo+ID4gd3df YWNxdWlyZV9jdHggKnd3LAo+ID4gwqDCoMKgwqDCoMKgwqDCoExJU1RfSEVBRChvYmpzKTsKPiA+ IMKgwqDCoMKgwqDCoMKgwqBMSVNUX0hFQUQoZHVwcyk7Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDC oMKgWEVfQlVHX09OKCF3dyk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oIXd3KTsKPiA+IMKg Cj4gPiDCoMKgwqDCoMKgwqDCoMKgdHZfYm8ubnVtX3NoYXJlZCA9IG51bV9yZXN2Owo+ID4gwqDC oMKgwqDCoMKgwqDCoHR2X2JvLmJvID0gJmJvLT50dG07Owo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS94ZS94ZV9iby5oCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9iby5oCj4g PiBpbmRleCA5YjI2MDQ5NTIxZGUuLjE2OWM4MDk5NmIyNiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS94ZS94ZV9iby5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfYm8u aAo+ID4gQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIHhlX2JvX3VubG9jayhzdHJ1Y3QgeGVfYm8g KmJvLCBzdHJ1Y3QKPiA+IHd3X2FjcXVpcmVfY3R4ICp3dyk7Cj4gPiDCoHN0YXRpYyBpbmxpbmUg dm9pZCB4ZV9ib191bmxvY2tfdm1faGVsZChzdHJ1Y3QgeGVfYm8gKmJvKQo+ID4gwqB7Cj4gPiDC oMKgwqDCoMKgwqDCoMKgaWYgKGJvKSB7Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgWEVfQlVHX09OKGJvLT52bSAmJiBiby0+dHRtLmJhc2UucmVzdiAhPSAmYm8tPnZtLQo+ID4g PnJlc3YpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJVR19PTihiby0+dm0g JiYgYm8tPnR0bS5iYXNlLnJlc3YgIT0gJmJvLT52bS0KPiA+ID5yZXN2KTsKPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGJvLT52bSkKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX3ZtX2Fzc2VydF9oZWxkKGJvLT52bSk7 Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVsc2UKPiA+IEBAIC0xNjEsNyAr MTYxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHhlX2JvX2xvY2tfbm9fdm0oc3RydWN0Cj4gPiB4 ZV9ibyAqYm8sCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB3d19hY3F1aXJlX2N0eCAqY3R4KQo+ ID4gwqB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGJvKSB7Cj4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKGJvLT52bSB8fCAoYm8tPnR0bS50eXBlICE9IHR0bV9i b190eXBlX3NnCj4gPiAmJgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJVR19P Tihiby0+dm0gfHwgKGJvLT50dG0udHlwZSAhPSB0dG1fYm9fdHlwZV9zZyAmJgo+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGJvLT50dG0uYmFzZS5yZXN2ICE9ICZiby0KPiA+ID50dG0uYmFzZS5fcmVzdikp Owo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkbWFfcmVzdl9sb2NrKGJvLT50 dG0uYmFzZS5yZXN2LCBjdHgpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+IEBAIC0xNzAsNyAr MTcwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHhlX2JvX2xvY2tfbm9fdm0oc3RydWN0Cj4gPiB4 ZV9ibyAqYm8sCj4gPiDCoHN0YXRpYyBpbmxpbmUgdm9pZCB4ZV9ib191bmxvY2tfbm9fdm0oc3Ry dWN0IHhlX2JvICpibykKPiA+IMKgewo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChibykgewo+ID4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFhFX0JVR19PTihiby0+dm0gfHwgKGJvLT50 dG0udHlwZSAhPSB0dG1fYm9fdHlwZV9zZwo+ID4gJiYKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBCVUdfT04oYm8tPnZtIHx8IChiby0+dHRtLnR5cGUgIT0gdHRtX2JvX3R5cGVf c2cgJiYKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiby0+dHRtLmJhc2UucmVzdiAhPSAmYm8tCj4gPiA+ dHRtLmJhc2UuX3Jlc3YpKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZG1h X3Jlc3ZfdW5sb2NrKGJvLT50dG0uYmFzZS5yZXN2KTsKPiA+IMKgwqDCoMKgwqDCoMKgwqB9Cj4g PiBAQCAtMjEzLDcgKzIxMyw3IEBAIHhlX2JvX21haW5fYWRkcihzdHJ1Y3QgeGVfYm8gKmJvLCBz aXplX3QKPiA+IHBhZ2Vfc2l6ZSkKPiA+IMKgc3RhdGljIGlubGluZSB1MzIKPiA+IMKgeGVfYm9f Z2d0dF9hZGRyKHN0cnVjdCB4ZV9ibyAqYm8pCj4gPiDCoHsKPiA+IC3CoMKgwqDCoMKgwqDCoFhF X0JVR19PTihiby0+Z2d0dF9ub2RlLnN0YXJ0ICsgYm8tPmdndHRfbm9kZS5zaXplID4gKDF1bGwK PiA+IDw8IDMyKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oYm8tPmdndHRfbm9kZS5zdGFy dCArIGJvLT5nZ3R0X25vZGUuc2l6ZSA+ICgxdWxsIDw8Cj4gPiAzMikpOwo+ID4gwqDCoMKgwqDC oMKgwqDCoHJldHVybiBiby0+Z2d0dF9ub2RlLnN0YXJ0Owo+ID4gwqB9Cj4gPiDCoAo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ib19ldmljdC5jCj4gPiBiL2RyaXZlcnMv Z3B1L2RybS94ZS94ZV9ib19ldmljdC5jCj4gPiBpbmRleCBiYmY4OWE1OGNkZjUuLmIzMDVkMTZh NjdhYyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ib19ldmljdC5jCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfYm9fZXZpY3QuYwo+ID4gQEAgLTE1OCw4ICsx NTgsOCBAQCBpbnQgeGVfYm9fcmVzdG9yZV9rZXJuZWwoc3RydWN0IHhlX2RldmljZSAqeGUpCj4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIFdlIGV4cGVjdCB2YWxpZGF0ZSB0 byB0cmlnZ2VyIGEgbW92ZSBWUkFNIGFuZAo+ID4gb3VyIG1vdmUgY29kZQo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBzaG91bGQgc2V0dXAgdGhlIGlvc3lzIG1hcC4KPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKGlvc3lzX21hcF9pc19udWxsKCZiby0+dm1hcCkpOwo+ ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFhFX0JVR19PTigheGVfYm9faXNfdnJh bShibykpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJVR19PTihpb3N5c19t YXBfaXNfbnVsbCgmYm8tPnZtYXApKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBCVUdfT04oIXhlX2JvX2lzX3ZyYW0oYm8pKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHhlX2JvX3B1dChibyk7Cj4gPiDCoAo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuaAo+ID4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVf ZGV2aWNlLmgKPiA+IGluZGV4IDVmNzI1ZWQyY2E2Yi4uNTE4Y2UzZjBiYzM2IDEwMDY0NAo+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5oCj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0veGUveGVfZGV2aWNlLmgKPiA+IEBAIC01MiwxMCArNTIsMTAgQEAgc3RhdGljIGlubGlu ZSBzdHJ1Y3QgeGVfZ3QKPiA+ICp4ZV9kZXZpY2VfZ2V0X2d0KHN0cnVjdCB4ZV9kZXZpY2UgKnhl LCB1OCBndF9pZCkKPiA+IMKgewo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9ndCAqZ3Q7 Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKGd0X2lkID4gWEVfTUFYX0dUKTsK PiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTihndF9pZCA+IFhFX01BWF9HVCk7Cj4gPiDCoMKgwqDC oMKgwqDCoMKgZ3QgPSB4ZS0+Z3QgKyBndF9pZDsKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19P TihndC0+aW5mby5pZCAhPSBndF9pZCk7Cj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oZ3Qt PmluZm8udHlwZSA9PSBYRV9HVF9UWVBFX1VOSU5JVElBTElaRUQpOwo+ID4gK8KgwqDCoMKgwqDC oMKgQlVHX09OKGd0LT5pbmZvLmlkICE9IGd0X2lkKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19P TihndC0+aW5mby50eXBlID09IFhFX0dUX1RZUEVfVU5JTklUSUFMSVpFRCk7Cj4gPiDCoAo+ID4g wqDCoMKgwqDCoMKgwqDCoHJldHVybiBndDsKPiA+IMKgfQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS94ZS94ZV9leGVjbGlzdC5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9l eGVjbGlzdC5jCj4gPiBpbmRleCAxMjdjYThjNmUyNzkuLmExZTQ5ZTg1ODUzMSAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9leGVjbGlzdC5jCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0veGUveGVfZXhlY2xpc3QuYwo+ID4gQEAgLTUyLDEwICs1MiwxMCBAQCBzdGF0aWMg dm9pZCBfX3N0YXJ0X2xyYyhzdHJ1Y3QgeGVfaHdfZW5naW5lCj4gPiAqaHdlLCBzdHJ1Y3QgeGVf bHJjICpscmMsCj4gPiDCoMKgwqDCoMKgwqDCoMKgbHJjX2Rlc2MgPSB4ZV9scmNfZGVzY3JpcHRv cihscmMpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoR1JBUEhJQ1NfVkVSeDEwMCh4 ZSkgPj0gMTI1MCkgewo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFhFX0JVR19P TighRklFTERfRklUKFhFSFBfU1dfQ1RYX0lELCBjdHhfaWQpKTsKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBCVUdfT04oIUZJRUxEX0ZJVChYRUhQX1NXX0NUWF9JRCwgY3R4X2lk KSk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxyY19kZXNjIHw9IEZJRUxE X1BSRVAoWEVIUF9TV19DVFhfSUQsIGN0eF9pZCk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgfSBlbHNl IHsKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIUZJRUxEX0ZJ VChHRU4xMV9TV19DVFhfSUQsIGN0eF9pZCkpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoEJVR19PTighRklFTERfRklUKEdFTjExX1NXX0NUWF9JRCwgY3R4X2lkKSk7Cj4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxyY19kZXNjIHw9IEZJRUxEX1BSRVAoR0VO MTFfU1dfQ1RYX0lELCBjdHhfaWQpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+IMKgCj4gPiBA QCAtMjIxLDkgKzIyMSw5IEBAIHN0YXRpYyB2b2lkIHhlX2V4ZWNsaXN0X21ha2VfYWN0aXZlKHN0 cnVjdAo+ID4geGVfZXhlY2xpc3RfZW5naW5lICpleGwpCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IHhlX2V4ZWNsaXN0X3BvcnQgKnBvcnQgPSBleGwtPnBvcnQ7Cj4gPiDCoMKgwqDCoMKgwqDC oMKgZW51bSBkcm1fc2NoZWRfcHJpb3JpdHkgcHJpb3JpdHkgPSBleGwtPmVudGl0eS5wcmlvcml0 eTsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04ocHJpb3JpdHkgPT0gRFJNX1ND SEVEX1BSSU9SSVRZX1VOU0VUKTsKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTihwcmlvcml0 eSA8IDApOwo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKHByaW9yaXR5ID49IEFSUkFZX1NJ WkUoZXhsLT5wb3J0LT5hY3RpdmUpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTihwcmlvcml0 eSA9PSBEUk1fU0NIRURfUFJJT1JJVFlfVU5TRVQpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09O KHByaW9yaXR5IDwgMCk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04ocHJpb3JpdHkgPj0gQVJS QVlfU0laRShleGwtPnBvcnQtPmFjdGl2ZSkpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBz cGluX2xvY2tfaXJxKCZwb3J0LT5sb2NrKTsKPiA+IMKgCj4gPiBAQCAtMzI4LDcgKzMyOCw3IEBA IHN0YXRpYyBpbnQgZXhlY2xpc3RfZW5naW5lX2luaXQoc3RydWN0Cj4gPiB4ZV9lbmdpbmUgKmUp Cj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2V4ZWNsaXN0X2VuZ2luZSAqZXhsOwo+ID4g wqDCoMKgwqDCoMKgwqDCoGludCBlcnI7Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVH X09OKHhlX2RldmljZV9ndWNfc3VibWlzc2lvbl9lbmFibGVkKGd0X3RvX3hlKGUtCj4gPiA+Z3Qp KSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oeGVfZGV2aWNlX2d1Y19zdWJtaXNzaW9uX2Vu YWJsZWQoZ3RfdG9feGUoZS0+Z3QpKSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGV4bCA9 IGt6YWxsb2Moc2l6ZW9mKCpleGwpLCBHRlBfS0VSTkVMKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBp ZiAoIWV4bCkKPiA+IEBAIC0zOTMsNyArMzkzLDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RfZW5n aW5lX2ZpbmlfYXN5bmMoc3RydWN0Cj4gPiB3b3JrX3N0cnVjdCAqdykKPiA+IMKgwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgeGVfZXhlY2xpc3RfZW5naW5lICpleGwgPSBlLT5leGVjbGlzdDsKPiA+IMKg wqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBsb25nIGZsYWdzOwo+ID4gwqAKPiA+IC3CoMKgwqDCoMKg wqDCoFhFX0JVR19PTih4ZV9kZXZpY2VfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlZChndF90b194ZShl LQo+ID4gPmd0KSkpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKHhlX2RldmljZV9ndWNfc3Vi bWlzc2lvbl9lbmFibGVkKGd0X3RvX3hlKGUtPmd0KSkpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDC oMKgwqBzcGluX2xvY2tfaXJxc2F2ZSgmZXhsLT5wb3J0LT5sb2NrLCBmbGFncyk7Cj4gPiDCoMKg wqDCoMKgwqDCoMKgaWYgKFdBUk5fT04oZXhsLT5hY3RpdmVfcHJpb3JpdHkgIT0KPiA+IERSTV9T Q0hFRF9QUklPUklUWV9VTlNFVCkpCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hl L3hlX2ZvcmNlX3dha2UuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZm9yY2Vfd2FrZS5j Cj4gPiBpbmRleCA3N2EyMTBhY2ZhYzMuLjdhM2Y0NzdiZDlhMCAxMDA2NDQKPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS94ZS94ZV9mb3JjZV93YWtlLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS94ZS94ZV9mb3JjZV93YWtlLmMKPiA+IEBAIC00NCw3ICs0NCw3IEBAIHZvaWQgeGVfZm9yY2Vf d2FrZV9pbml0X2d0KHN0cnVjdCB4ZV9ndCAqZ3QsCj4gPiBzdHJ1Y3QgeGVfZm9yY2Vfd2FrZSAq ZncpCj4gPiDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhfaW5pdCgmZnctPmxvY2spOwo+ID4gwqAKPiA+ IMKgwqDCoMKgwqDCoMKgwqAvKiBBc3N1bWluZyBnZW4xMSsgc28gYXNzZXJ0IHRoaXMgYXNzdW1w dGlvbiBpcyBjb3JyZWN0ICovCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oR1JBUEhJQ1Nf VkVSKGd0X3RvX3hlKGd0KSkgPCAxMSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oR1JBUEhJ Q1NfVkVSKGd0X3RvX3hlKGd0KSkgPCAxMSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGlm ICh4ZS0+aW5mby5ncmFwaGljc192ZXJ4MTAwID49IDEyNzApIHsKPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZG9tYWluX2luaXQoJmZ3LT5kb21haW5zW1hFX0ZXX0RPTUFJTl9J RF9HVF0sCj4gPiBAQCAtNjYsNyArNjYsNyBAQCB2b2lkIHhlX2ZvcmNlX3dha2VfaW5pdF9lbmdp bmVzKHN0cnVjdCB4ZV9ndCAqZ3QsCj4gPiBzdHJ1Y3QgeGVfZm9yY2Vfd2FrZSAqZncpCj4gPiDC oMKgwqDCoMKgwqDCoMKgaW50IGksIGo7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIEFz c3VtaW5nIGdlbjExKyBzbyBhc3NlcnQgdGhpcyBhc3N1bXB0aW9uIGlzIGNvcnJlY3QgKi8KPiA+ IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTihHUkFQSElDU19WRVIoZ3RfdG9feGUoZ3QpKSA8IDEx KTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTihHUkFQSElDU19WRVIoZ3RfdG9feGUoZ3QpKSA8 IDExKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCF4ZV9ndF9pc19tZWRpYV90eXBl KGd0KSkKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZG9tYWluX2luaXQoJmZ3 LT5kb21haW5zW1hFX0ZXX0RPTUFJTl9JRF9SRU5ERVJdLAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS94ZS94ZV9mb3JjZV93YWtlLmgKPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hl X2ZvcmNlX3dha2UuaAo+ID4gaW5kZXggN2M1MzRjZGQ1ZmU5Li4yZjE3NmU0OTFkYWYgMTAwNjQ0 Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZm9yY2Vfd2FrZS5oCj4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0veGUveGVfZm9yY2Vfd2FrZS5oCj4gPiBAQCAtMjQsNyArMjQsNyBAQCBz dGF0aWMgaW5saW5lIGludAo+ID4gwqB4ZV9mb3JjZV93YWtlX3JlZihzdHJ1Y3QgeGVfZm9yY2Vf d2FrZSAqZncsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudW0geGVf Zm9yY2Vfd2FrZV9kb21haW5zIGRvbWFpbikKPiA+IMKgewo+ID4gLcKgwqDCoMKgwqDCoMKgWEVf QlVHX09OKCFkb21haW4pOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKCFkb21haW4pOwo+ID4g wqDCoMKgwqDCoMKgwqDCoHJldHVybiBmdy0+ZG9tYWluc1tmZnMoZG9tYWluKSAtIDFdLnJlZjsK PiA+IMKgfQo+ID4gwqAKPiA+IEBAIC0zMiw3ICszMiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZAo+ ID4gwqB4ZV9mb3JjZV93YWtlX2Fzc2VydF9oZWxkKHN0cnVjdCB4ZV9mb3JjZV93YWtlICpmdywK PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVu dW0geGVfZm9yY2Vfd2FrZV9kb21haW5zIGRvbWFpbikKPiA+IMKgewo+ID4gLcKgwqDCoMKgwqDC oMKgWEVfQlVHX09OKCEoZnctPmF3YWtlX2RvbWFpbnMgJiBkb21haW4pKTsKPiA+ICvCoMKgwqDC oMKgwqDCoEJVR19PTighKGZ3LT5hd2FrZV9kb21haW5zICYgZG9tYWluKSk7Cj4gPiDCoH0KPiA+ IMKgCj4gPiDCoCNlbmRpZgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9n Z3R0LmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2dndHQuYwo+ID4gaW5kZXggYmQwNzll ODIzNjYxLi5iNTJhZDAwOWM3NGUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUv eGVfZ2d0dC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ2d0dC5jCj4gPiBAQCAt NTYsOCArNTYsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHByb2JlX2dzbV9zaXplKHN0cnVjdCBw Y2lfZGV2Cj4gPiAqcGRldikKPiA+IMKgCj4gPiDCoHZvaWQgeGVfZ2d0dF9zZXRfcHRlKHN0cnVj dCB4ZV9nZ3R0ICpnZ3R0LCB1NjQgYWRkciwgdTY0IHB0ZSkKPiA+IMKgewo+ID4gLcKgwqDCoMKg wqDCoMKgWEVfQlVHX09OKGFkZHIgJiBHRU44X1BURV9NQVNLKTsKPiA+IC3CoMKgwqDCoMKgwqDC oFhFX0JVR19PTihhZGRyID49IGdndHQtPnNpemUpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09O KGFkZHIgJiBHRU44X1BURV9NQVNLKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTihhZGRyID49 IGdndHQtPnNpemUpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqB3cml0ZXEocHRlLCAmZ2d0 dC0+Z3NtW2FkZHIgPj4gR0VOOF9QVEVfU0hJRlRdKTsKPiA+IMKgfQo+ID4gQEAgLTY3LDcgKzY3 LDcgQEAgc3RhdGljIHZvaWQgeGVfZ2d0dF9jbGVhcihzdHJ1Y3QgeGVfZ2d0dCAqZ2d0dCwKPiA+ IHU2NCBzdGFydCwgdTY0IHNpemUpCj4gPiDCoMKgwqDCoMKgwqDCoMKgdTY0IGVuZCA9IHN0YXJ0 ICsgc2l6ZSAtIDE7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgdTY0IHNjcmF0Y2hfcHRlOwo+ID4gwqAK PiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTihzdGFydCA+PSBlbmQpOwo+ID4gK8KgwqDCoMKg wqDCoMKgQlVHX09OKHN0YXJ0ID49IGVuZCk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGlm IChnZ3R0LT5zY3JhdGNoKQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzY3Jh dGNoX3B0ZSA9IHhlX2dndHRfcHRlX2VuY29kZShnZ3R0LT5zY3JhdGNoLCAwKTsKPiA+IEBAIC05 Niw3ICs5Niw3IEBAIGludCB4ZV9nZ3R0X2luaXRfbm9hbGxvYyhzdHJ1Y3QgeGVfZ3QgKmd0LCBz dHJ1Y3QKPiA+IHhlX2dndHQgKmdndHQpCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHBjaV9k ZXYgKnBkZXYgPSB0b19wY2lfZGV2KHhlLT5kcm0uZGV2KTsKPiA+IMKgwqDCoMKgwqDCoMKgwqB1 bnNpZ25lZCBpbnQgZ3NtX3NpemU7Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09O KHhlX2d0X2lzX21lZGlhX3R5cGUoZ3QpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTih4ZV9n dF9pc19tZWRpYV90eXBlKGd0KSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGdndHQtPmd0 ID0gZ3Q7Cj4gPiDCoAo+ID4gQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIHhlX2dndHRfcHJpbnRr KHN0cnVjdCB4ZV9nZ3R0ICpnZ3R0LCBjb25zdAo+ID4gY2hhciAqcHJlZml4KQo+ID4gwqDCoMKg wqDCoMKgwqDCoGZvciAoYWRkciA9IDA7IGFkZHIgPCBnZ3R0LT5zaXplOyBhZGRyICs9IEdFTjhf UEFHRV9TSVpFKSB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVk IGludCBpID0gYWRkciAvIEdFTjhfUEFHRV9TSVpFOwo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oYWRkciA+IFUzMl9NQVgpOwo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJVR19PTihhZGRyID4gVTMyX01BWCk7Cj4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChnZ3R0LT5nc21baV0gPT0gc2NyYXRjaF9wdGUp Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250 aW51ZTsKPiA+IMKgCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0LmMK PiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0LmMKPiA+IGluZGV4IDdkOGI0Y2ZmY2MyZC4u Nzc3MTAwOGI0ZmVlIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0LmMK PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndC5jCj4gPiBAQCAtNDgsMTQgKzQ4LDE0 IEBAIHN0cnVjdCB4ZV9ndCAqeGVfZmluZF9mdWxsX2d0KHN0cnVjdCB4ZV9ndCAqZ3QpCj4gPiDC oMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2d0ICpzZWFyY2g7Cj4gPiDCoMKgwqDCoMKgwqDCoMKg dTggaWQ7Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKCF4ZV9ndF9pc19tZWRp YV90eXBlKGd0KSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oIXhlX2d0X2lzX21lZGlhX3R5 cGUoZ3QpKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgZm9yX2VhY2hfZ3Qoc2VhcmNoLCBn dF90b194ZShndCksIGlkKSB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlm IChzZWFyY2gtPmluZm8udnJhbV9pZCA9PSBndC0+aW5mby52cmFtX2lkKQo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHNlYXJjaDsKPiA+ IMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKCJO T1QgUE9TU0lCTEUiKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTigiTk9UIFBPU1NJQkxFIik7 Cj4gPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIE5VTEw7Cj4gPiDCoH0KPiA+IMKgCj4gPiBAQCAt NjMsNyArNjMsNyBAQCBpbnQgeGVfZ3RfYWxsb2Moc3RydWN0IHhlX2RldmljZSAqeGUsIHN0cnVj dAo+ID4geGVfZ3QgKmd0KQo+ID4gwqB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9k ZXZpY2UgKmRybSA9ICZ4ZS0+ZHJtOwo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19P TihndC0+aW5mby50eXBlID09IFhFX0dUX1RZUEVfVU5JTklUSUFMSVpFRCk7Cj4gPiArwqDCoMKg wqDCoMKgwqBCVUdfT04oZ3QtPmluZm8udHlwZSA9PSBYRV9HVF9UWVBFX1VOSU5JVElBTElaRUQp Owo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoIXhlX2d0X2lzX21lZGlhX3R5cGUoZ3Qp KSB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGd0LT5tZW0uZ2d0dCA9IGRy bW1fa3phbGxvYyhkcm0sIHNpemVvZigqZ3QtCj4gPiA+bWVtLmdndHQpLAo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9jbG9jay5jCj4gPiBiL2RyaXZlcnMvZ3B1L2Ry bS94ZS94ZV9ndF9jbG9jay5jCj4gPiBpbmRleCA2MGEyOTY2YmMxZmQuLjkyNjg2MzU5YjMxNSAx MDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9jbG9jay5jCj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfY2xvY2suYwo+ID4gQEAgLTQ5LDcgKzQ5LDcgQEAg c3RhdGljIHUzMiBnZXRfY3J5c3RhbF9jbG9ja19mcmVxKHUzMgo+ID4gcnBtX2NvbmZpZ19yZWcp Cj4gPiDCoMKgwqDCoMKgwqDCoMKgY2FzZSBHRU4xMV9SUE1fQ09ORklHMF9DUllTVEFMX0NMT0NL X0ZSRVFfMjVfTUhaOgo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4g ZjI1X21oejsKPiA+IMKgwqDCoMKgwqDCoMKgwqBkZWZhdWx0Ogo+ID4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoFhFX0JVR19PTigiTk9UX1BPU1NJQkxFIik7Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgQlVHX09OKCJOT1RfUE9TU0lCTEUiKTsKPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgfQo+ ID4gwqB9Cj4gPiBAQCAtNjAsNyArNjAsNyBAQCBpbnQgeGVfZ3RfY2xvY2tfaW5pdChzdHJ1Y3Qg eGVfZ3QgKmd0KQo+ID4gwqDCoMKgwqDCoMKgwqDCoHUzMiBmcmVxID0gMDsKPiA+IMKgCj4gPiDC oMKgwqDCoMKgwqDCoMKgLyogQXNzdW1pbmcgZ2VuMTErIHNvIGFzc2VydCB0aGlzIGFzc3VtcHRp b24gaXMgY29ycmVjdCAqLwo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKEdSQVBISUNTX1ZF UihndF90b194ZShndCkpIDwgMTEpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKEdSQVBISUNT X1ZFUihndF90b194ZShndCkpIDwgMTEpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAo KGN0Y19yZWcgJiBDVENfU09VUkNFX1BBUkFNRVRFUl9NQVNLKSA9PQo+ID4gQ1RDX1NPVVJDRV9E SVZJREVfTE9HSUMpIHsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnJlcSA9 IHJlYWRfcmVmZXJlbmNlX3RzX2ZyZXEoZ3QpOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS94ZS94ZV9ndF9kZWJ1Z2ZzLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X2Rl YnVnZnMuYwo+ID4gaW5kZXggNjM5YjI0ODY4MDNiLi5hZWQ0OTU0NzYyMmMgMTAwNjQ0Cj4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfZGVidWdmcy5jCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0veGUveGVfZ3RfZGVidWdmcy5jCj4gPiBAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQg eGVfZ3RfZGVidWdmc19yZWdpc3RlcihzdHJ1Y3QgeGVfZ3QgKmd0KQo+ID4gwqDCoMKgwqDCoMKg wqDCoGNoYXIgbmFtZVs4XTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgaTsKPiA+IMKgCj4gPiAt wqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIW1pbm9yLT5kZWJ1Z2ZzX3Jvb3QpOwo+ID4gK8KgwqDC oMKgwqDCoMKgQlVHX09OKCFtaW5vci0+ZGVidWdmc19yb290KTsKPiA+IMKgCj4gPiDCoMKgwqDC oMKgwqDCoMKgc3ByaW50ZihuYW1lLCAiZ3QlZCIsIGd0LT5pbmZvLmlkKTsKPiA+IMKgwqDCoMKg wqDCoMKgwqByb290ID0gZGVidWdmc19jcmVhdGVfZGlyKG5hbWUsIG1pbm9yLT5kZWJ1Z2ZzX3Jv b3QpOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF90bGJfaW52YWxp ZGF0aW9uLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3RsYl9pbnZhbGlkYXRpb24u Ywo+ID4gaW5kZXggNmM5YTk2Y2YzZDVmLi5lZjRhNWZjNjY3OTMgMTAwNjQ0Cj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfdGxiX2ludmFsaWRhdGlvbi5jCj4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0veGUveGVfZ3RfdGxiX2ludmFsaWRhdGlvbi5jCj4gPiBAQCAtMTk0LDcgKzE5 NCw3IEBAIGludCB4ZV9ndF90bGJfaW52YWxpZGF0aW9uX3ZtYShzdHJ1Y3QgeGVfZ3QKPiA+ICpn dCwKPiA+IMKgwqDCoMKgwqDCoMKgwqB1MzIgYWN0aW9uW01BWF9UTEJfSU5WQUxJREFUSU9OX0xF Tl07Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaW50IGxlbiA9IDA7Cj4gPiDCoAo+ID4gLcKgwqDCoMKg wqDCoMKgWEVfQlVHX09OKCF2bWEpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKCF2bWEpOwo+ ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBhY3Rpb25bbGVuKytdID0gWEVfR1VDX0FDVElPTl9U TEJfSU5WQUxJREFUSU9OOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGFjdGlvbltsZW4rK10gPSAwOyAv KiBzZXFubywgcmVwbGFjZWQgaW4KPiA+IHNlbmRfdGxiX2ludmFsaWRhdGlvbiAqLwo+ID4gQEAg LTIzMiwxMCArMjMyLDEwIEBAIGludCB4ZV9ndF90bGJfaW52YWxpZGF0aW9uX3ZtYShzdHJ1Y3Qg eGVfZ3QKPiA+ICpndCwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHN0YXJ0ID0gQUxJR05fRE9XTih2bWEtPnN0YXJ0LCBsZW5ndGgpOwo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoFhFX0JVR19PTihsZW5ndGggPCBTWl80Syk7Cj4gPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKCFpc19wb3dlcl9vZl8yKGxlbmd0aCkpOwo+ ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFhFX0JVR19PTihsZW5ndGggJiBHRU5N QVNLKGlsb2cyKFNaXzE2TSkgLSAxLAo+ID4gaWxvZzIoU1pfMk0pICsgMSkpOwo+ID4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFhFX0JVR19PTighSVNfQUxJR05FRChzdGFydCwgbGVu Z3RoKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQlVHX09OKGxlbmd0aCA8 IFNaXzRLKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCVUdfT04oIWlzX3Bv d2VyX29mXzIobGVuZ3RoKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQlVH X09OKGxlbmd0aCAmIEdFTk1BU0soaWxvZzIoU1pfMTZNKSAtIDEsCj4gPiBpbG9nMihTWl8yTSkg KyAxKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQlVHX09OKCFJU19BTElH TkVEKHN0YXJ0LCBsZW5ndGgpKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGFjdGlvbltsZW4rK10gPQo+ID4gTUFLRV9JTlZBTF9PUChYRV9HVUNfVExCX0lOVkFM X1BBR0VfU0VMRUNUSVZFKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYWN0 aW9uW2xlbisrXSA9IHZtYS0+dm0tPnVzbS5hc2lkOwo+ID4gQEAgLTI0NCw3ICsyNDQsNyBAQCBp bnQgeGVfZ3RfdGxiX2ludmFsaWRhdGlvbl92bWEoc3RydWN0IHhlX2d0Cj4gPiAqZ3QsCj4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFjdGlvbltsZW4rK10gPSBpbG9nMihsZW5n dGgpIC0gaWxvZzIoU1pfNEspOwo+ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+IMKgCj4gPiAtwqDC oMKgwqDCoMKgwqBYRV9CVUdfT04obGVuID4gTUFYX1RMQl9JTlZBTElEQVRJT05fTEVOKTsKPiA+ ICvCoMKgwqDCoMKgwqDCoEJVR19PTihsZW4gPiBNQVhfVExCX0lOVkFMSURBVElPTl9MRU4pOwo+ ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gc2VuZF90bGJfaW52YWxpZGF0aW9uKCZn dC0+dWMuZ3VjLCBmZW5jZSwgYWN0aW9uLAo+ID4gbGVuKTsKPiA+IMKgfQo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0veGUv eGVfZ3VjLmMKPiA+IGluZGV4IGJjY2RmYjkxNGYwOC4uNWMyOWUxYzJkZTkxIDEwMDY0NAo+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0veGUveGVfZ3VjLmMKPiA+IEBAIC00MSw5ICs0MSw5IEBAIHN0YXRpYyB1MzIgZ3VjX2JvX2dn dHRfYWRkcihzdHJ1Y3QgeGVfZ3VjICpndWMsCj4gPiDCoHsKPiA+IMKgwqDCoMKgwqDCoMKgwqB1 MzIgYWRkciA9IHhlX2JvX2dndHRfYWRkcihibyk7Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKg WEVfQlVHX09OKGFkZHIgPCB4ZV93b3BjbV9zaXplKGd1Y190b194ZShndWMpKSk7Cj4gPiAtwqDC oMKgwqDCoMKgwqBYRV9CVUdfT04oYWRkciA+PSBHVUNfR0dUVF9UT1ApOwo+ID4gLcKgwqDCoMKg wqDCoMKgWEVfQlVHX09OKGJvLT5zaXplID4gR1VDX0dHVFRfVE9QIC0gYWRkcik7Cj4gPiArwqDC oMKgwqDCoMKgwqBCVUdfT04oYWRkciA8IHhlX3dvcGNtX3NpemUoZ3VjX3RvX3hlKGd1YykpKTsK PiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTihhZGRyID49IEdVQ19HR1RUX1RPUCk7Cj4gPiArwqDC oMKgwqDCoMKgwqBCVUdfT04oYm8tPnNpemUgPiBHVUNfR0dUVF9UT1AgLSBhZGRyKTsKPiA+IMKg Cj4gPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGFkZHI7Cj4gPiDCoH0KPiA+IEBAIC02MzcsMTMg KzYzNywxMyBAQCBpbnQgeGVfZ3VjX21taW9fc2VuZF9yZWN2KHN0cnVjdCB4ZV9ndWMgKmd1YywK PiA+IGNvbnN0IHUzMiAqcmVxdWVzdCwKPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgaTsKPiA+IMKg Cj4gPiDCoMKgwqDCoMKgwqDCoMKgQlVJTERfQlVHX09OKEdFTjExX1NPRlRfU0NSQVRDSF9DT1VO VCAhPQo+ID4gTUVESUFfU09GVF9TQ1JBVENIX0NPVU5UKTsKPiA+IC3CoMKgwqDCoMKgwqDCoFhF X0JVR19PTihndWMtPmN0LmVuYWJsZWQpOwo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKCFs ZW4pOwo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKGxlbiA+IEdFTjExX1NPRlRfU0NSQVRD SF9DT1VOVCk7Cj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04obGVuID4gTUVESUFfU09GVF9T Q1JBVENIX0NPVU5UKTsKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTihGSUVMRF9HRVQoR1VD X0hYR19NU0dfMF9PUklHSU4sIHJlcXVlc3RbMF0pICE9Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdf T04oZ3VjLT5jdC5lbmFibGVkKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTighbGVuKTsKPiA+ ICvCoMKgwqDCoMKgwqDCoEJVR19PTihsZW4gPiBHRU4xMV9TT0ZUX1NDUkFUQ0hfQ09VTlQpOwo+ ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKGxlbiA+IE1FRElBX1NPRlRfU0NSQVRDSF9DT1VOVCk7 Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oRklFTERfR0VUKEdVQ19IWEdfTVNHXzBfT1JJR0lO LCByZXF1ZXN0WzBdKSAhPQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBH VUNfSFhHX09SSUdJTl9IT1NUKTsKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTihGSUVMRF9H RVQoR1VDX0hYR19NU0dfMF9UWVBFLCByZXF1ZXN0WzBdKSAhPQo+ID4gK8KgwqDCoMKgwqDCoMKg QlVHX09OKEZJRUxEX0dFVChHVUNfSFhHX01TR18wX1RZUEUsIHJlcXVlc3RbMF0pICE9Cj4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdVQ19IWEdfVFlQRV9SRVFVRVNUKTsK PiA+IMKgCj4gPiDCoHJldHJ5Ogo+ID4gQEAgLTc1NCw4ICs3NTQsOCBAQCBzdGF0aWMgaW50IGd1 Y19zZWxmX2NmZyhzdHJ1Y3QgeGVfZ3VjICpndWMsIHUxNgo+ID4ga2V5LCB1MTYgbGVuLCB1NjQg dmFsKQo+ID4gwqDCoMKgwqDCoMKgwqDCoH07Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaW50IHJldDsK PiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04obGVuID4gMik7Cj4gPiAtwqDCoMKg wqDCoMKgwqBYRV9CVUdfT04obGVuID09IDEgJiYgdXBwZXJfMzJfYml0cyh2YWwpKTsKPiA+ICvC oMKgwqDCoMKgwqDCoEJVR19PTihsZW4gPiAyKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTihs ZW4gPT0gMSAmJiB1cHBlcl8zMl9iaXRzKHZhbCkpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKg wqAvKiBTZWxmIGNvbmZpZyBtdXN0IGdvIG92ZXIgTU1JTyAqLwo+ID4gwqDCoMKgwqDCoMKgwqDC oHJldCA9IHhlX2d1Y19tbWlvX3NlbmQoZ3VjLCByZXF1ZXN0LCBBUlJBWV9TSVpFKHJlcXVlc3Qp KTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2Fkcy5jCj4gPiBi L2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfYWRzLmMKPiA+IGluZGV4IGQ1YTA4OTY5NGY4MC4u Y2Q4ZGU3NTJlNjYwIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19h ZHMuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19hZHMuYwo+ID4gQEAgLTEx OCw3ICsxMTgsNyBAQCBzdHJ1Y3QgX19ndWNfYWRzX2Jsb2Igewo+ID4gwqAKPiA+IMKgc3RhdGlj IHNpemVfdCBndWNfYWRzX3JlZ3NldF9zaXplKHN0cnVjdCB4ZV9ndWNfYWRzICphZHMpCj4gPiDC oHsKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTighYWRzLT5yZWdzZXRfc2l6ZSk7Cj4gPiAr wqDCoMKgwqDCoMKgwqBCVUdfT04oIWFkcy0+cmVnc2V0X3NpemUpOwo+ID4gwqAKPiA+IMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gYWRzLT5yZWdzZXRfc2l6ZTsKPiA+IMKgfQo+ID4gQEAgLTMwOCw3 ICszMDgsNyBAQCBpbnQgeGVfZ3VjX2Fkc19pbml0X3Bvc3RfaHdjb25maWcoc3RydWN0Cj4gPiB4 ZV9ndWNfYWRzICphZHMpCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2d0ICpndCA9IGFk c190b19ndChhZHMpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoHUzMiBwcmV2X3JlZ3NldF9zaXplID0g YWRzLT5yZWdzZXRfc2l6ZTsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIWFk cy0+Ym8pOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKCFhZHMtPmJvKTsKPiA+IMKgCj4gPiDC oMKgwqDCoMKgwqDCoMKgYWRzLT5nb2xkZW5fbHJjX3NpemUgPSBjYWxjdWxhdGVfZ29sZGVuX2xy Y19zaXplKGFkcyk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgYWRzLT5yZWdzZXRfc2l6ZSA9IGNhbGN1 bGF0ZV9yZWdzZXRfc2l6ZShndCk7Cj4gPiBAQCAtNTIxLDcgKzUyMSw3IEBAIHN0YXRpYyB2b2lk IGd1Y19tbWlvX3JlZ19zdGF0ZV9pbml0KHN0cnVjdAo+ID4geGVfZ3VjX2FkcyAqYWRzKQo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZWdzZXRfdXNlZCArPSBjb3VudCAqIHNp emVvZihzdHJ1Y3QgZ3VjX21taW9fcmVnKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiDCoAo+ ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKHJlZ3NldF91c2VkID4gYWRzLT5yZWdzZXRfc2l6 ZSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04ocmVnc2V0X3VzZWQgPiBhZHMtPnJlZ3NldF9z aXplKTsKPiA+IMKgfQo+ID4gwqAKPiA+IMKgc3RhdGljIHZvaWQgZ3VjX3VtX2luaXRfcGFyYW1z KHN0cnVjdCB4ZV9ndWNfYWRzICphZHMpCj4gPiBAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgeGVf Z3VjX2Fkc19wb3B1bGF0ZV9taW5pbWFsKHN0cnVjdAo+ID4geGVfZ3VjX2FkcyAqYWRzKQo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgb2Zmc2V0b2Yo c3RydWN0IF9fZ3VjX2Fkc19ibG9iLAo+ID4gc3lzdGVtX2luZm8pKTsKPiA+IMKgwqDCoMKgwqDC oMKgwqB1MzIgYmFzZSA9IHhlX2JvX2dndHRfYWRkcihhZHMtPmJvKTsKPiA+IMKgCj4gPiAtwqDC oMKgwqDCoMKgwqBYRV9CVUdfT04oIWFkcy0+Ym8pOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09O KCFhZHMtPmJvKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgeGVfbWFwX21lbXNldChhZHNf dG9feGUoYWRzKSwgYWRzX3RvX21hcChhZHMpLCAwLCAwLCBhZHMtCj4gPiA+Ym8tPnNpemUpOwo+ ID4gwqDCoMKgwqDCoMKgwqDCoGd1Y19wb2xpY2llc19pbml0KGFkcyk7Cj4gPiBAQCAtNjAxLDcg KzYwMSw3IEBAIHZvaWQgeGVfZ3VjX2Fkc19wb3B1bGF0ZShzdHJ1Y3QgeGVfZ3VjX2Fkcwo+ID4g KmFkcykKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oG9mZnNldG9mKHN0cnVjdCBfX2d1Y19hZHNfYmxvYiwKPiA+IHN5c3RlbV9pbmZvKSk7Cj4gPiDC oMKgwqDCoMKgwqDCoMKgdTMyIGJhc2UgPSB4ZV9ib19nZ3R0X2FkZHIoYWRzLT5ibyk7Cj4gPiDC oAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKCFhZHMtPmJvKTsKPiA+ICvCoMKgwqDCoMKg wqDCoEJVR19PTighYWRzLT5ibyk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoHhlX21hcF9t ZW1zZXQoYWRzX3RvX3hlKGFkcyksIGFkc190b19tYXAoYWRzKSwgMCwgMCwgYWRzLQo+ID4gPmJv LT5zaXplKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBndWNfcG9saWNpZXNfaW5pdChhZHMpOwo+ID4g QEAgLTY1MSw3ICs2NTEsNyBAQCBzdGF0aWMgdm9pZCBndWNfcG9wdWxhdGVfZ29sZGVuX2xyYyhz dHJ1Y3QKPiA+IHhlX2d1Y19hZHMgKmFkcykKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiBlbmdpbmVfZW5h YmxlZF9tYXNrc1tndWNfY2xhc3NdKSkKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVlOwo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIWd0LT5kZWZhdWx0X2xyY1tjbGFzc10pOwo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJVR19PTighZ3QtPmRlZmF1bHRfbHJjW2NsYXNz XSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZWFsX3NpemUg PSB4ZV9scmNfc2l6ZSh4ZSwgY2xhc3MpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBhbGxvY19zaXplID0gUEFHRV9BTElHTihyZWFsX3NpemUpOwo+ID4gQEAgLTY4MCw3ICs2 ODAsNyBAQCBzdGF0aWMgdm9pZCBndWNfcG9wdWxhdGVfZ29sZGVuX2xyYyhzdHJ1Y3QKPiA+IHhl X2d1Y19hZHMgKmFkcykKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgb2Zmc2V0 ICs9IGFsbG9jX3NpemU7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gwqAKPiA+IC3CoMKgwqDC oMKgwqDCoFhFX0JVR19PTih0b3RhbF9zaXplICE9IGFkcy0+Z29sZGVuX2xyY19zaXplKTsKPiA+ ICvCoMKgwqDCoMKgwqDCoEJVR19PTih0b3RhbF9zaXplICE9IGFkcy0+Z29sZGVuX2xyY19zaXpl KTsKPiA+IMKgfQo+ID4gwqAKPiA+IMKgdm9pZCB4ZV9ndWNfYWRzX3BvcHVsYXRlX3Bvc3RfbG9h ZChzdHJ1Y3QgeGVfZ3VjX2FkcyAqYWRzKQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS94ZS94ZV9ndWNfY3QuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2N0LmMKPiA+ IGluZGV4IGZlYzA5YmE0MTJhOC4uNzBlZGZmZTFlMzc3IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVf Z3VjX2N0LmMKPiA+IEBAIC0xMzQsNyArMTM0LDcgQEAgaW50IHhlX2d1Y19jdF9pbml0KHN0cnVj dCB4ZV9ndWNfY3QgKmN0KQo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9ibyAqYm87Cj4g PiDCoMKgwqDCoMKgwqDCoMKgaW50IGVycjsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9C VUdfT04oZ3VjX2N0X3NpemUoKSAlIFBBR0VfU0laRSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdf T04oZ3VjX2N0X3NpemUoKSAlIFBBR0VfU0laRSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDC oG11dGV4X2luaXQoJmN0LT5sb2NrKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBzcGluX2xvY2tfaW5p dCgmY3QtPmZhc3RfbG9jayk7Cj4gPiBAQCAtMjgwLDcgKzI4MCw3IEBAIGludCB4ZV9ndWNfY3Rf ZW5hYmxlKHN0cnVjdCB4ZV9ndWNfY3QgKmN0KQo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4 ZV9kZXZpY2UgKnhlID0gY3RfdG9feGUoY3QpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGludCBlcnI7 Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKGN0LT5lbmFibGVkKTsKPiA+ICvC oMKgwqDCoMKgwqDCoEJVR19PTihjdC0+ZW5hYmxlZCk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKg wqDCoGd1Y19jdF9jdGJfaDJnX2luaXQoeGUsICZjdC0+Y3Ricy5oMmcsICZjdC0+Ym8tPnZtYXAp Owo+ID4gwqDCoMKgwqDCoMKgwqDCoGd1Y19jdF9jdGJfZzJoX2luaXQoeGUsICZjdC0+Y3Ricy5n MmgsICZjdC0+Ym8tPnZtYXApOwo+ID4gQEAgLTM2NSw3ICszNjUsNyBAQCBzdGF0aWMgdm9pZCBo MmdfcmVzZXJ2ZV9zcGFjZShzdHJ1Y3QgeGVfZ3VjX2N0Cj4gPiAqY3QsIHUzMiBjbWRfbGVuKQo+ ID4gwqAKPiA+IMKgc3RhdGljIHZvaWQgZzJoX3Jlc2VydmVfc3BhY2Uoc3RydWN0IHhlX2d1Y19j dCAqY3QsIHUzMiBnMmhfbGVuLAo+ID4gdTMyIG51bV9nMmgpCj4gPiDCoHsKPiA+IC3CoMKgwqDC oMKgwqDCoFhFX0JVR19PTihnMmhfbGVuID4gY3QtPmN0YnMuZzJoLnNwYWNlKTsKPiA+ICvCoMKg wqDCoMKgwqDCoEJVR19PTihnMmhfbGVuID4gY3QtPmN0YnMuZzJoLnNwYWNlKTsKPiA+IMKgCj4g PiDCoMKgwqDCoMKgwqDCoMKgaWYgKGcyaF9sZW4pIHsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgc3Bpbl9sb2NrX2lycSgmY3QtPmZhc3RfbG9jayk7Cj4gPiBAQCAtNDA1LDgg KzQwNSw4IEBAIHN0YXRpYyBpbnQgaDJnX3dyaXRlKHN0cnVjdCB4ZV9ndWNfY3QgKmN0LAo+ID4g Y29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4sCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRhaWwgKgo+ID4gc2l6ZW9mKHUzMikpOwo+ ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBsb2NrZGVwX2Fzc2VydF9oZWxkKCZjdC0+bG9jayk7 Cj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04obGVuICogc2l6ZW9mKHUzMikgPiBHVUNfQ1RC X01TR19NQVhfTEVOKTsKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTih0YWlsID4gaDJnLT5z aXplKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTihsZW4gKiBzaXplb2YodTMyKSA+IEdVQ19D VEJfTVNHX01BWF9MRU4pOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKHRhaWwgPiBoMmctPnNp emUpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqAvKiBDb21tYW5kIHdpbGwgd3JhcCwgemVy byBmaWxsIChOT1BzKSwgcmV0dXJuIGFuZCBjaGVjawo+ID4gY3JlZGl0cyBhZ2FpbiAqLwo+ID4g wqDCoMKgwqDCoMKgwqDCoGlmICh0YWlsICsgY21kX2xlbiA+IGgyZy0+c2l6ZSkgewo+ID4gQEAg LTQ2MCwxMCArNDYwLDEwIEBAIHN0YXRpYyBpbnQgX19ndWNfY3Rfc2VuZF9sb2NrZWQoc3RydWN0 Cj4gPiB4ZV9ndWNfY3QgKmN0LCBjb25zdCB1MzIgKmFjdGlvbiwKPiA+IMKgewo+ID4gwqDCoMKg wqDCoMKgwqDCoGludCByZXQ7Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKGcy aF9sZW4gJiYgZzJoX2ZlbmNlKTsKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTihudW1fZzJo ICYmIGcyaF9mZW5jZSk7Cj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oZzJoX2xlbiAmJiAh bnVtX2cyaCk7Cj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIWcyaF9sZW4gJiYgbnVtX2cy aCk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oZzJoX2xlbiAmJiBnMmhfZmVuY2UpOwo+ID4g K8KgwqDCoMKgwqDCoMKgQlVHX09OKG51bV9nMmggJiYgZzJoX2ZlbmNlKTsKPiA+ICvCoMKgwqDC oMKgwqDCoEJVR19PTihnMmhfbGVuICYmICFudW1fZzJoKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJV R19PTighZzJoX2xlbiAmJiBudW1fZzJoKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBsb2NrZGVwX2Fz c2VydF9oZWxkKCZjdC0+bG9jayk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmICh1bmxp a2VseShjdC0+Y3Ricy5oMmcuYnJva2VuKSkgewo+ID4gQEAgLTUzNCw3ICs1MzQsNyBAQCBzdGF0 aWMgaW50IGd1Y19jdF9zZW5kX2xvY2tlZChzdHJ1Y3QgeGVfZ3VjX2N0Cj4gPiAqY3QsIGNvbnN0 IHUzMiAqYWN0aW9uLCB1MzIgbGVuLAo+ID4gwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludCBz bGVlcF9wZXJpb2RfbXMgPSAxOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gPiDCoAo+ ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKGcyaF9sZW4gJiYgZzJoX2ZlbmNlKTsKPiA+ICvC oMKgwqDCoMKgwqDCoEJVR19PTihnMmhfbGVuICYmIGcyaF9mZW5jZSk7Cj4gPiDCoMKgwqDCoMKg wqDCoMKgbG9ja2RlcF9hc3NlcnRfaGVsZCgmY3QtPmxvY2spOwo+ID4gwqAKPiA+IMKgdHJ5X2Fn YWluOgo+ID4gQEAgLTYwMSw3ICs2MDEsNyBAQCBzdGF0aWMgaW50IGd1Y19jdF9zZW5kKHN0cnVj dCB4ZV9ndWNfY3QgKmN0LAo+ID4gY29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4sCj4gPiDCoHsK PiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoFhF X0JVR19PTihnMmhfbGVuICYmIGcyaF9mZW5jZSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04o ZzJoX2xlbiAmJiBnMmhfZmVuY2UpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF9s b2NrKCZjdC0+bG9jayk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gZ3VjX2N0X3NlbmRfbG9j a2VkKGN0LCBhY3Rpb24sIGxlbiwgZzJoX2xlbiwgbnVtX2cyaCwKPiA+IGcyaF9mZW5jZSk7Cj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19od2NvbmZpZy5jCj4gPiBi L2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfaHdjb25maWcuYwo+ID4gaW5kZXggYTY5ODJmMzIz ZWQxLi5iY2Q4ZjRlOWUzOTMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVf Z3VjX2h3Y29uZmlnLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfaHdjb25m aWcuYwo+ID4gQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIHhlX2d1Y19od2NvbmZpZ19jb3B5KHN0 cnVjdCB4ZV9ndWMgKmd1YywKPiA+IHZvaWQgKmRzdCkKPiA+IMKgewo+ID4gwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCB4ZV9kZXZpY2UgKnhlID0gZ3VjX3RvX3hlKGd1Yyk7Cj4gPiDCoAo+ID4gLcKg wqDCoMKgwqDCoMKgWEVfQlVHX09OKCFndWMtPmh3Y29uZmlnLmJvKTsKPiA+ICvCoMKgwqDCoMKg wqDCoEJVR19PTighZ3VjLT5od2NvbmZpZy5ibyk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDC oHhlX21hcF9tZW1jcHlfZnJvbSh4ZSwgZHN0LCAmZ3VjLT5od2NvbmZpZy5iby0+dm1hcCwgMCwK PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Z3VjLT5od2NvbmZpZy5zaXplKTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUv eGVfZ3VjX2xvZy5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfbG9nLmMKPiA+IGlu ZGV4IDlhN2I1ZDU5MDZjMS4uZmJkNzRjMjdmMzUyIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL3hlL3hlX2d1Y19sb2cuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1 Y19sb2cuYwo+ID4gQEAgLTU1LDEyICs1NSwxMiBAQCB2b2lkIHhlX2d1Y19sb2dfcHJpbnQoc3Ry dWN0IHhlX2d1Y19sb2cgKmxvZywKPiA+IHN0cnVjdCBkcm1fcHJpbnRlciAqcCkKPiA+IMKgwqDC oMKgwqDCoMKgwqBzaXplX3Qgc2l6ZTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgaSwgajsKPiA+ IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIWxvZy0+Ym8pOwo+ID4gK8KgwqDCoMKg wqDCoMKgQlVHX09OKCFsb2ctPmJvKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgc2l6ZSA9 IGxvZy0+Ym8tPnNpemU7Cj4gPiDCoAo+ID4gwqAjZGVmaW5lIERXX1BFUl9SRUFEwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgMTI4Cj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oc2l6ZSAlIChE V19QRVJfUkVBRCAqIHNpemVvZih1MzIpKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oc2l6 ZSAlIChEV19QRVJfUkVBRCAqIHNpemVvZih1MzIpKSk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgZm9y IChpID0gMDsgaSA8IHNpemUgLyBzaXplb2YodTMyKTsgaSArPSBEV19QRVJfUkVBRCkgewo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1MzIgcmVhZFtEV19QRVJfUkVBRF07Cj4g PiDCoAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMK PiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYwo+ID4gaW5kZXggOGRmNTUx Mzc5NmYxLi41YTg2NTllOTljOGUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUv eGVfZ3VjX3N1Ym1pdC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1p dC5jCj4gPiBAQCAtMzI2LDcgKzMyNiw3IEBAIHN0YXRpYyB2b2lkCj4gPiBfX2d1Y19lbmdpbmVf cG9saWN5X3N0YXJ0X2tsdihzdHJ1Y3QgZW5naW5lX3BvbGljeSAqcG9saWN5LAo+ID4gwqBzdGF0 aWMgdm9pZCBfX2d1Y19lbmdpbmVfcG9saWN5X2FkZF8jI2Z1bmMoc3RydWN0IGVuZ2luZV9wb2xp Y3kKPiA+ICpwb2xpY3ksIFwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZGF0 YSkgXAo+ID4gwqB7IFwKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTihwb2xpY3ktPmNvdW50 ID49Cj4gPiBHVUNfQ09OVEVYVF9QT0xJQ0lFU19LTFZfTlVNX0lEUyk7IFwKPiA+ICvCoMKgwqDC oMKgwqDCoEJVR19PTihwb2xpY3ktPmNvdW50ID49IEdVQ19DT05URVhUX1BPTElDSUVTX0tMVl9O VU1fSURTKTsKPiA+IFwKPiA+IMKgIFwKPiA+IMKgwqDCoMKgwqDCoMKgwqBwb2xpY3ktPmgyZy5r bHZbcG9saWN5LT5jb3VudF0ua2wgPSBcCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoEZJRUxEX1BSRVAoR1VDX0tMVl8wX0tFWSwgXAo+ID4gQEAgLTM1NSw3ICszNTUsNyBAQCBz dGF0aWMgdm9pZCBpbml0X3BvbGljaWVzKHN0cnVjdCB4ZV9ndWMgKmd1YywKPiA+IHN0cnVjdCB4 ZV9lbmdpbmUgKmUpCj4gPiDCoMKgwqDCoMKgwqDCoMKgdTMyIHRpbWVzbGljZV91cyA9IGUtPnNj aGVkX3Byb3BzLnRpbWVzbGljZV91czsKPiA+IMKgwqDCoMKgwqDCoMKgwqB1MzIgcHJlZW1wdF90 aW1lb3V0X3VzID0gZS0+c2NoZWRfcHJvcHMucHJlZW1wdF90aW1lb3V0X3VzOwo+ID4gwqAKPiA+ IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTighZW5naW5lX3JlZ2lzdGVyZWQoZSkpOwo+ID4gK8Kg wqDCoMKgwqDCoMKgQlVHX09OKCFlbmdpbmVfcmVnaXN0ZXJlZChlKSk7Cj4gPiDCoAo+ID4gwqDC oMKgwqDCoMKgwqDCoCBfX2d1Y19lbmdpbmVfcG9saWN5X3N0YXJ0X2tsdigmcG9saWN5LCBlLT5n dWMtPmlkKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqAgX19ndWNfZW5naW5lX3BvbGljeV9hZGRfcHJp b3JpdHkoJnBvbGljeSwKPiA+IGRybV9zY2hlZF9wcmlvX3RvX2d1Y1twcmlvXSk7Cj4gPiBAQCAt NDEzLDcgKzQxMyw3IEBAIHN0YXRpYyB2b2lkIF9fcmVnaXN0ZXJfbWxyY19lbmdpbmUoc3RydWN0 Cj4gPiB4ZV9ndWMgKmd1YywKPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgbGVuID0gMDsKPiA+IMKg wqDCoMKgwqDCoMKgwqBpbnQgaTsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04o IXhlX2VuZ2luZV9pc19wYXJhbGxlbChlKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oIXhl X2VuZ2luZV9pc19wYXJhbGxlbChlKSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGFjdGlv bltsZW4rK10gPSBYRV9HVUNfQUNUSU9OX1JFR0lTVEVSX0NPTlRFWFRfTVVMVElfTFJDOwo+ID4g wqDCoMKgwqDCoMKgwqDCoGFjdGlvbltsZW4rK10gPSBpbmZvLT5mbGFnczsKPiA+IEBAIC00MzYs NyArNDM2LDcgQEAgc3RhdGljIHZvaWQgX19yZWdpc3Rlcl9tbHJjX2VuZ2luZShzdHJ1Y3QKPiA+ IHhlX2d1YyAqZ3VjLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhY3Rpb25b bGVuKytdID0KPiA+IHVwcGVyXzMyX2JpdHMoeGVfbHJjX2Rlc2NyaXB0b3IobHJjKSk7Cj4gPiDC oMKgwqDCoMKgwqDCoMKgfQo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTihsZW4g PiBNQVhfTUxSQ19SRUdfU0laRSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04obGVuID4gTUFY X01MUkNfUkVHX1NJWkUpOwo+ID4gwqAjdW5kZWYgTUFYX01MUkNfUkVHX1NJWkUKPiA+IMKgCj4g PiDCoMKgwqDCoMKgwqDCoMKgeGVfZ3VjX2N0X3NlbmQoJmd1Yy0+Y3QsIGFjdGlvbiwgbGVuLCAw LCAwKTsKPiA+IEBAIC00NzAsNyArNDcwLDcgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJfZW5naW5l KHN0cnVjdCB4ZV9lbmdpbmUKPiA+ICplKQo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9s cmMgKmxyYyA9IGUtPmxyYzsKPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZ3VjX2N0eHRfcmVn aXN0cmF0aW9uX2luZm8gaW5mbzsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04o ZW5naW5lX3JlZ2lzdGVyZWQoZSkpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKGVuZ2luZV9y ZWdpc3RlcmVkKGUpKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgbWVtc2V0KCZpbmZvLCAw LCBzaXplb2YoaW5mbykpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGluZm8uY29udGV4dF9pZHggPSBl LT5ndWMtPmlkOwo+ID4gQEAgLTU1Miw3ICs1NTIsNyBAQCBzdGF0aWMgaW50IHdxX25vb3BfYXBw ZW5kKHN0cnVjdCB4ZV9lbmdpbmUgKmUpCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKHdxX3dhaXRf Zm9yX3NwYWNlKGUsIHdxX3NwYWNlX3VudGlsX3dyYXAoZSkpKQo+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVOT0RFVjsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKg wqBYRV9CVUdfT04oIUZJRUxEX0ZJVChXUV9MRU5fTUFTSywgbGVuX2R3KSk7Cj4gPiArwqDCoMKg wqDCoMKgwqBCVUdfT04oIUZJRUxEX0ZJVChXUV9MRU5fTUFTSywgbGVuX2R3KSk7Cj4gPiDCoAo+ ID4gwqDCoMKgwqDCoMKgwqDCoHBhcmFsbGVsX3dyaXRlKHhlLCBtYXAsIHdxW2UtPmd1Yy0+d3Fp X3RhaWwgLyBzaXplb2YodTMyKV0sCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKFdRX1RZUEVfTUFTSywgV1FfVFlQRV9OT09QKSB8Cj4g PiBAQCAtNTkxLDEzICs1OTEsMTMgQEAgc3RhdGljIHZvaWQgd3FfaXRlbV9hcHBlbmQoc3RydWN0 IHhlX2VuZ2luZQo+ID4gKmUpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdx aVtpKytdID0gbHJjLT5yaW5nLnRhaWwgLyBzaXplb2YodTY0KTsKPiA+IMKgwqDCoMKgwqDCoMKg wqB9Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKGkgIT0gd3FpX3NpemUgLyBz aXplb2YodTMyKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oaSAhPSB3cWlfc2l6ZSAvIHNp emVvZih1MzIpKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgaW9zeXNfbWFwX2luY3IoJm1h cCwgb2Zmc2V0b2Yoc3RydWN0IHBhcmFsbGVsX3NjcmF0Y2gsCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHdxW2UtPmd1Yy0+d3FpX3RhaWwgLwo+ID4gc2l6ZW9mKHUzMildKSk7Cj4gPiDCoMKg wqDCoMKgwqDCoMKgeGVfbWFwX21lbWNweV90byh4ZSwgJm1hcCwgMCwgd3FpLCB3cWlfc2l6ZSk7 Cj4gPiDCoMKgwqDCoMKgwqDCoMKgZS0+Z3VjLT53cWlfdGFpbCArPSB3cWlfc2l6ZTsKPiA+IC3C oMKgwqDCoMKgwqDCoFhFX0JVR19PTihlLT5ndWMtPndxaV90YWlsID4gV1FfU0laRSk7Cj4gPiAr wqDCoMKgwqDCoMKgwqBCVUdfT04oZS0+Z3VjLT53cWlfdGFpbCA+IFdRX1NJWkUpOwo+ID4gwqAK PiA+IMKgwqDCoMKgwqDCoMKgwqB4ZV9kZXZpY2Vfd21iKHhlKTsKPiA+IMKgCj4gPiBAQCAtNjE2 LDcgKzYxNiw3IEBAIHN0YXRpYyB2b2lkIHN1Ym1pdF9lbmdpbmUoc3RydWN0IHhlX2VuZ2luZSAq ZSkKPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgbGVuID0gMDsKPiA+IMKgwqDCoMKgwqDCoMKgwqBi b29sIGV4dHJhX3N1Ym1pdCA9IGZhbHNlOwo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JV R19PTighZW5naW5lX3JlZ2lzdGVyZWQoZSkpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKCFl bmdpbmVfcmVnaXN0ZXJlZChlKSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmICh4ZV9l bmdpbmVfaXNfcGFyYWxsZWwoZSkpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHdxX2l0ZW1fYXBwZW5kKGUpOwo+ID4gQEAgLTY2Myw3ICs2NjMsNyBAQCBndWNfZW5naW5lX3J1 bl9qb2Ioc3RydWN0IGRybV9zY2hlZF9qb2IKPiA+ICpkcm1fam9iKQo+ID4gwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCB4ZV9zY2hlZF9qb2IgKmpvYiA9IHRvX3hlX3NjaGVkX2pvYihkcm1fam9iKTsK PiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZW5naW5lICplID0gam9iLT5lbmdpbmU7Cj4g PiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKChlbmdpbmVfZGVzdHJveWVkKGUpIHx8 Cj4gPiBlbmdpbmVfcGVuZGluZ19kaXNhYmxlKGUpKSAmJgo+ID4gK8KgwqDCoMKgwqDCoMKgQlVH X09OKChlbmdpbmVfZGVzdHJveWVkKGUpIHx8IGVuZ2luZV9wZW5kaW5nX2Rpc2FibGUoZSkpCj4g PiAmJgo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAhZW5naW5lX2Jhbm5l ZChlKSAmJiAhZW5naW5lX3N1c3BlbmRlZChlKSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDC oHRyYWNlX3hlX3NjaGVkX2pvYl9ydW4oam9iKTsKPiA+IEBAIC05MzUsNyArOTM1LDcgQEAgc3Rh dGljIHZvaWQKPiA+IF9fZ3VjX2VuZ2luZV9wcm9jZXNzX21zZ19jbGVhbnVwKHN0cnVjdCBkcm1f c2NoZWRfbXNnICptc2cpCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2VuZ2luZSAqZSA9 IG1zZy0+cHJpdmF0ZV9kYXRhOwo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9ndWMgKmd1 YyA9IGVuZ2luZV90b19ndWMoZSk7Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09O KGUtPmZsYWdzICYgRU5HSU5FX0ZMQUdfS0VSTkVMKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19P TihlLT5mbGFncyAmIEVOR0lORV9GTEFHX0tFUk5FTCk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgdHJh Y2VfeGVfZW5naW5lX2NsZWFudXBfZW50aXR5KGUpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKg wqBpZiAoZW5naW5lX3JlZ2lzdGVyZWQoZSkpCj4gPiBAQCAtOTYzLDkgKzk2Myw5IEBAIHN0YXRp YyB2b2lkIHN1c3BlbmRfZmVuY2Vfc2lnbmFsKHN0cnVjdAo+ID4geGVfZW5naW5lICplKQo+ID4g wqB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2d1YyAqZ3VjID0gZW5naW5lX3RvX2d1 YyhlKTsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIWVuZ2luZV9zdXNwZW5k ZWQoZSkgJiYgIWVuZ2luZV9raWxsZWQoZSkgJiYKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTigh ZW5naW5lX3N1c3BlbmRlZChlKSAmJiAhZW5naW5lX2tpbGxlZChlKSAmJgo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAhZ3VjX3JlYWRfc3RvcHBlZChndWMpKTsKPiA+IC3C oMKgwqDCoMKgwqDCoFhFX0JVR19PTighZS0+Z3VjLT5zdXNwZW5kX3BlbmRpbmcpOwo+ID4gK8Kg wqDCoMKgwqDCoMKgQlVHX09OKCFlLT5ndWMtPnN1c3BlbmRfcGVuZGluZyk7Cj4gPiDCoAo+ID4g wqDCoMKgwqDCoMKgwqDCoGUtPmd1Yy0+c3VzcGVuZF9wZW5kaW5nID0gZmFsc2U7Cj4gPiDCoMKg wqDCoMKgwqDCoMKgc21wX3dtYigpOwo+ID4gQEAgLTEwNTEsNyArMTA1MSw3IEBAIHN0YXRpYyB2 b2lkIGd1Y19lbmdpbmVfcHJvY2Vzc19tc2coc3RydWN0Cj4gPiBkcm1fc2NoZWRfbXNnICptc2cp Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoF9fZ3VjX2VuZ2luZV9wcm9jZXNz X21zZ19yZXN1bWUobXNnKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJl YWs7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgZGVmYXVsdDoKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBYRV9CVUdfT04oIlVua25vd24gbWVzc2FnZSB0eXBlIik7Cj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQlVHX09OKCJVbmtub3duIG1lc3NhZ2UgdHlwZSIpOwo+ ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+IMKgfQo+ID4gwqAKPiA+IEBAIC0xMDcwLDcgKzEwNzAs NyBAQCBzdGF0aWMgaW50IGd1Y19lbmdpbmVfaW5pdChzdHJ1Y3QgeGVfZW5naW5lCj4gPiAqZSkK PiA+IMKgwqDCoMKgwqDCoMKgwqBsb25nIHRpbWVvdXQ7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaW50 IGVycjsKPiA+IMKgCj4gPiAtCj4gPiDCoMKgwqDCoMKgwqDCoFhFX0JVR19PTigheGVfZGV2aWNl X2d1Y19zdWJtaXNzaW9uX2VuYWJsZWQoZ3VjX3RvX3hlKGd1YykpKTsKPiA+ICvCoMKgwqDCoMKg wqDCoEJVR19PTigheGVfZGV2aWNlX2d1Y19zdWJtaXNzaW9uX2VuYWJsZWQoZ3VjX3RvX3hlKGd1 YykpKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgZ2UgPSBremFsbG9jKHNpemVvZigqZ2Up LCBHRlBfS0VSTkVMKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoIWdlKQo+ID4gQEAgLTEyMzEs OSArMTIzMSw5IEBAIHN0YXRpYyBpbnQgZ3VjX2VuZ2luZV9zZXRfam9iX3RpbWVvdXQoc3RydWN0 Cj4gPiB4ZV9lbmdpbmUgKmUsIHUzMiBqb2JfdGltZW91dF9tcykKPiA+IMKgewo+ID4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQgPSAmZS0+Z3VjLT5zY2hl ZDsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oZW5naW5lX3JlZ2lzdGVyZWQo ZSkpOwo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKGVuZ2luZV9iYW5uZWQoZSkpOwo+ID4g LcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKGVuZ2luZV9raWxsZWQoZSkpOwo+ID4gK8KgwqDCoMKg wqDCoMKgQlVHX09OKGVuZ2luZV9yZWdpc3RlcmVkKGUpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJV R19PTihlbmdpbmVfYmFubmVkKGUpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTihlbmdpbmVf a2lsbGVkKGUpKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgc2NoZWQtPnRpbWVvdXQgPSBq b2JfdGltZW91dF9tczsKPiA+IMKgCj4gPiBAQCAtMTI2NSw3ICsxMjY1LDcgQEAgc3RhdGljIHZv aWQgZ3VjX2VuZ2luZV9yZXN1bWUoc3RydWN0Cj4gPiB4ZV9lbmdpbmUgKmUpCj4gPiDCoHsKPiA+ IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX3NjaGVkX21zZyAqbXNnID0gZS0+Z3VjLT5zdGF0 aWNfbXNncyArCj4gPiBTVEFUSUNfTVNHX1JFU1VNRTsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKg wqBYRV9CVUdfT04oZS0+Z3VjLT5zdXNwZW5kX3BlbmRpbmcpOwo+ID4gK8KgwqDCoMKgwqDCoMKg QlVHX09OKGUtPmd1Yy0+c3VzcGVuZF9wZW5kaW5nKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDC oMKgZ3VjX2VuZ2luZV9hZGRfbXNnKGUsIG1zZywgUkVTVU1FKTsKPiA+IMKgfQo+ID4gQEAgLTEz NjQsNyArMTM2NCw3IEBAIGludCB4ZV9ndWNfc3VibWl0X3N0b3Aoc3RydWN0IHhlX2d1YyAqZ3Vj KQo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9lbmdpbmUgKmU7Cj4gPiDCoMKgwqDCoMKg wqDCoMKgdW5zaWduZWQgbG9uZyBpbmRleDsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9C VUdfT04oZ3VjX3JlYWRfc3RvcHBlZChndWMpICE9IDEpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVH X09OKGd1Y19yZWFkX3N0b3BwZWQoZ3VjKSAhPSAxKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDC oMKgbXV0ZXhfbG9jaygmZ3VjLT5zdWJtaXNzaW9uX3N0YXRlLmxvY2spOwo+ID4gwqAKPiA+IEBA IC0xNDAzLDcgKzE0MDMsNyBAQCBpbnQgeGVfZ3VjX3N1Ym1pdF9zdGFydChzdHJ1Y3QgeGVfZ3Vj ICpndWMpCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2VuZ2luZSAqZTsKPiA+IMKgwqDC oMKgwqDCoMKgwqB1bnNpZ25lZCBsb25nIGluZGV4Owo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDC oFhFX0JVR19PTihndWNfcmVhZF9zdG9wcGVkKGd1YykgIT0gMSk7Cj4gPiArwqDCoMKgwqDCoMKg wqBCVUdfT04oZ3VjX3JlYWRfc3RvcHBlZChndWMpICE9IDEpOwo+ID4gwqAKPiA+IMKgwqDCoMKg wqDCoMKgwqBtdXRleF9sb2NrKCZndWMtPnN1Ym1pc3Npb25fc3RhdGUubG9jayk7Cj4gPiDCoMKg wqDCoMKgwqDCoMKgYXRvbWljX2RlYygmZ3VjLT5zdWJtaXNzaW9uX3N0YXRlLnN0b3BwZWQpOwo+ ID4gQEAgLTE0MzMsNyArMTQzMyw3IEBAIGcyaF9lbmdpbmVfbG9va3VwKHN0cnVjdCB4ZV9ndWMg Kmd1YywgdTMyCj4gPiBndWNfaWQpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJldHVybiBOVUxMOwo+ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+IMKgCj4gPiAtwqDCoMKgwqDC oMKgwqBYRV9CVUdfT04oZS0+Z3VjLT5pZCAhPSBndWNfaWQpOwo+ID4gK8KgwqDCoMKgwqDCoMKg QlVHX09OKGUtPmd1Yy0+aWQgIT0gZ3VjX2lkKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIGU7Cj4gPiDCoH0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVf aHVjLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2h1Yy5jCj4gPiBpbmRleCBhOTQ0OGM2 ZjY0MTguLjZiNzQyZmUwMWUxYiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94 ZV9odWMuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2h1Yy5jCj4gPiBAQCAtNzEs NyArNzEsNyBAQCBpbnQgeGVfaHVjX2F1dGgoc3RydWN0IHhlX2h1YyAqaHVjKQo+ID4gwqDCoMKg wqDCoMKgwqDCoGlmICh4ZV91Y19md19pc19kaXNhYmxlZCgmaHVjLT5mdykpCj4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ID4gwqAKPiA+IC3CoMKgwqDCoMKg wqDCoFhFX0JVR19PTih4ZV91Y19md19pc19ydW5uaW5nKCZodWMtPmZ3KSk7Cj4gPiArwqDCoMKg wqDCoMKgwqBCVUdfT04oeGVfdWNfZndfaXNfcnVubmluZygmaHVjLT5mdykpOwo+ID4gwqAKPiA+ IMKgwqDCoMKgwqDCoMKgwqBpZiAoIXhlX3VjX2Z3X2lzX2xvYWRlZCgmaHVjLT5mdykpCj4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRU5PRVhFQzsKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfaHdfZW5naW5lLmMKPiA+IGIvZHJpdmVycy9n cHUvZHJtL3hlL3hlX2h3X2VuZ2luZS5jCj4gPiBpbmRleCA2M2E0ZWZkNWVkY2MuLmUzZjk2N2I4 NTc5ZiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9od19lbmdpbmUuYwo+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2h3X2VuZ2luZS5jCj4gPiBAQCAtMjM0LDcg KzIzNCw3IEBAIHN0YXRpYyB2b2lkIGh3X2VuZ2luZV9maW5pKHN0cnVjdCBkcm1fZGV2aWNlCj4g PiAqZHJtLCB2b2lkICphcmcpCj4gPiDCoAo+ID4gwqBzdGF0aWMgdm9pZCBod19lbmdpbmVfbW1p b193cml0ZTMyKHN0cnVjdCB4ZV9od19lbmdpbmUgKmh3ZSwgdTMyCj4gPiByZWcsIHUzMiB2YWwp Cj4gPiDCoHsKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTihyZWcgJiBod2UtPm1taW9fYmFz ZSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04ocmVnICYgaHdlLT5tbWlvX2Jhc2UpOwo+ID4g wqDCoMKgwqDCoMKgwqDCoHhlX2ZvcmNlX3dha2VfYXNzZXJ0X2hlbGQoZ3RfdG9fZncoaHdlLT5n dCksIGh3ZS0+ZG9tYWluKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgeGVfbW1pb193cml0 ZTMyKGh3ZS0+Z3QsIHJlZyArIGh3ZS0+bW1pb19iYXNlLCB2YWwpOwo+ID4gQEAgLTI0Miw3ICsy NDIsNyBAQCBzdGF0aWMgdm9pZCBod19lbmdpbmVfbW1pb193cml0ZTMyKHN0cnVjdAo+ID4geGVf aHdfZW5naW5lICpod2UsIHUzMiByZWcsIHUzMiB2YWwpCj4gPiDCoAo+ID4gwqBzdGF0aWMgdTMy IGh3X2VuZ2luZV9tbWlvX3JlYWQzMihzdHJ1Y3QgeGVfaHdfZW5naW5lICpod2UsIHUzMgo+ID4g cmVnKQo+ID4gwqB7Cj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04ocmVnICYgaHdlLT5tbWlv X2Jhc2UpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKHJlZyAmIGh3ZS0+bW1pb19iYXNlKTsK PiA+IMKgwqDCoMKgwqDCoMKgwqB4ZV9mb3JjZV93YWtlX2Fzc2VydF9oZWxkKGd0X3RvX2Z3KGh3 ZS0+Z3QpLCBod2UtPmRvbWFpbik7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiB4 ZV9tbWlvX3JlYWQzMihod2UtPmd0LCByZWcgKyBod2UtPm1taW9fYmFzZSk7Cj4gPiBAQCAtMjgw LDcgKzI4MCw3IEBAIHN0YXRpYyB2b2lkIGh3X2VuZ2luZV9pbml0X2Vhcmx5KHN0cnVjdCB4ZV9n dAo+ID4gKmd0LCBzdHJ1Y3QgeGVfaHdfZW5naW5lICpod2UsCj4gPiDCoAo+ID4gwqDCoMKgwqDC oMKgwqDCoGluZm8gPSAmZW5naW5lX2luZm9zW2lkXTsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKg wqBYRV9CVUdfT04oaHdlLT5ndCk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oaHdlLT5ndCk7 Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGh3ZS0+Z3QgPSBndDsKPiA+IMKgwqDCoMKgwqDC oMKgwqBod2UtPmNsYXNzID0gaW5mby0+Y2xhc3M7Cj4gPiBAQCAtMzA0LDggKzMwNCw4IEBAIHN0 YXRpYyBpbnQgaHdfZW5naW5lX2luaXQoc3RydWN0IHhlX2d0ICpndCwKPiA+IHN0cnVjdCB4ZV9o d19lbmdpbmUgKmh3ZSwKPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZGV2aWNlICp4ZSA9 IGd0X3RvX3hlKGd0KTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgZXJyOwo+ID4gwqAKPiA+IC3C oMKgwqDCoMKgwqDCoFhFX0JVR19PTihpZCA+PSBBUlJBWV9TSVpFKGVuZ2luZV9pbmZvcykgfHwK PiA+ICFlbmdpbmVfaW5mb3NbaWRdLm5hbWUpOwo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09O KCEoZ3QtPmluZm8uZW5naW5lX21hc2sgJiBCSVQoaWQpKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBC VUdfT04oaWQgPj0gQVJSQVlfU0laRShlbmdpbmVfaW5mb3MpIHx8Cj4gPiAhZW5naW5lX2luZm9z W2lkXS5uYW1lKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTighKGd0LT5pbmZvLmVuZ2luZV9t YXNrICYgQklUKGlkKSkpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqB4ZV9yZWdfc3JfYXBw bHlfbW1pbygmaHdlLT5yZWdfc3IsIGd0KTsKPiA+IMKgwqDCoMKgwqDCoMKgwqB4ZV9yZWdfc3Jf YXBwbHlfd2hpdGVsaXN0KCZod2UtPnJlZ193aGl0ZWxpc3QsIGh3ZS0KPiA+ID5tbWlvX2Jhc2Us IGd0KTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfaHdfZmVuY2UuYwo+ ID4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfaHdfZmVuY2UuYwo+ID4gaW5kZXggYmJmY2U5ZjU4 Y2Q2Li4yYTA4MjEwNDEzN2QgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVf aHdfZmVuY2UuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2h3X2ZlbmNlLmMKPiA+ IEBAIC0xODgsNyArMTg4LDcgQEAgc3RhdGljIHZvaWQgeGVfaHdfZmVuY2VfcmVsZWFzZShzdHJ1 Y3QKPiA+IGRtYV9mZW5jZSAqZG1hX2ZlbmNlKQo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4 ZV9od19mZW5jZSAqZmVuY2UgPSB0b194ZV9od19mZW5jZShkbWFfZmVuY2UpOwo+ID4gwqAKPiA+ IMKgwqDCoMKgwqDCoMKgwqB0cmFjZV94ZV9od19mZW5jZV9mcmVlKGZlbmNlKTsKPiA+IC3CoMKg wqDCoMKgwqDCoFhFX0JVR19PTighbGlzdF9lbXB0eSgmZmVuY2UtPmlycV9saW5rKSk7Cj4gPiAr wqDCoMKgwqDCoMKgwqBCVUdfT04oIWxpc3RfZW1wdHkoJmZlbmNlLT5pcnFfbGluaykpOwo+ID4g wqDCoMKgwqDCoMKgwqDCoGNhbGxfcmN1KCZkbWFfZmVuY2UtPnJjdSwgZmVuY2VfZnJlZSk7Cj4g PiDCoH0KPiA+IMKgCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2xyYy5j Cj4gPiBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9scmMuYwo+ID4gaW5kZXggZmI4YzZmN2Q2NTI4 Li43YWU0YTBiOTMyNDkgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfbHJj LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9scmMuYwo+ID4gQEAgLTEwOCw3ICsx MDgsNyBAQCBzdGF0aWMgdm9pZCBzZXRfb2Zmc2V0cyh1MzIgKnJlZ3MsCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCpyZWdzIHw9IE1JX0xSSV9MUk1fQ1NfTU1JTzsKPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVncysrOwo+ID4gwqAKPiA+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIWNvdW50KTsKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBCVUdfT04oIWNvdW50KTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZG8gewo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdTMyIG9mZnNldCA9IDA7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1OCB2Owo+ID4gQEAgLTUyOCw3ICs1MjgsNyBAQCBz dGF0aWMgaW5saW5lIHN0cnVjdCBpb3N5c19tYXAKPiA+IF9feGVfbHJjXyMjZWxlbSMjX21hcChz dHJ1Y3QgeGVfbHJjICpscmMpIFwKPiA+IMKgeyBcCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IGlvc3lzX21hcCBtYXAgPSBscmMtPmJvLT52bWFwOyBcCj4gPiDCoFwKPiA+IC3CoMKgwqDCoMKg wqDCoFhFX0JVR19PTihpb3N5c19tYXBfaXNfbnVsbCgmbWFwKSk7IFwKPiA+ICvCoMKgwqDCoMKg wqDCoEJVR19PTihpb3N5c19tYXBfaXNfbnVsbCgmbWFwKSk7IFwKPiA+IMKgwqDCoMKgwqDCoMKg wqBpb3N5c19tYXBfaW5jcigmbWFwLCBfX3hlX2xyY18jI2VsZW0jI19vZmZzZXQobHJjKSk7IFwK PiA+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gbWFwOyBcCj4gPiDCoH0gXAo+ID4gQEAgLTc1OSwx MiArNzU5LDEyIEBAIHZvaWQgeGVfbHJjX3dyaXRlX3Jpbmcoc3RydWN0IHhlX2xyYyAqbHJjLAo+ ID4gY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpCj4gPiDCoMKgwqDCoMKgwqDCoMKgdTMy IHJoczsKPiA+IMKgwqDCoMKgwqDCoMKgwqBzaXplX3QgYWxpZ25lZF9zaXplOwo+ID4gwqAKPiA+ IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTighSVNfQUxJR05FRChzaXplLCA0KSk7Cj4gPiArwqDC oMKgwqDCoMKgwqBCVUdfT04oIUlTX0FMSUdORUQoc2l6ZSwgNCkpOwo+ID4gwqDCoMKgwqDCoMKg wqDCoGFsaWduZWRfc2l6ZSA9IEFMSUdOKHNpemUsIDgpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDC oMKgwqByaW5nID0gX194ZV9scmNfcmluZ19tYXAobHJjKTsKPiA+IMKgCj4gPiAtwqDCoMKgwqDC oMKgwqBYRV9CVUdfT04obHJjLT5yaW5nLnRhaWwgPj0gbHJjLT5yaW5nLnNpemUpOwo+ID4gK8Kg wqDCoMKgwqDCoMKgQlVHX09OKGxyYy0+cmluZy50YWlsID49IGxyYy0+cmluZy5zaXplKTsKPiA+ IMKgwqDCoMKgwqDCoMKgwqByaHMgPSBscmMtPnJpbmcuc2l6ZSAtIGxyYy0+cmluZy50YWlsOwo+ ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChzaXplID4gcmhzKSB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoF9feGVfbHJjX3dyaXRlX3JpbmcobHJjLCByaW5nLCBkYXRhLCByaHMp Owo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9tYWNyb3MuaAo+ID4gYi9k cml2ZXJzL2dwdS9kcm0veGUveGVfbWFjcm9zLmgKPiA+IGluZGV4IDBhNDIxMTJlYjI0Ny4uODI2 NzU5ZDBmY2FiIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX21hY3Jvcy5o Cj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfbWFjcm9zLmgKPiA+IEBAIC05LDcgKzks NiBAQAo+ID4gwqAjaW5jbHVkZSA8bGludXgvYnVnLmg+Cj4gPiDCoAo+ID4gwqAjZGVmaW5lIFhF X0VYVFJBX0RFQlVHIDEKPiA+IC0jZGVmaW5lIFhFX0JVR19PTiBCVUdfT04KPiA+IMKgCj4gPiDC oCNkZWZpbmUgWEVfSU9DVExfRVJSKHhlLCBjb25kKSBcCj4gPiDCoMKgwqDCoMKgwqDCoMKgKChj b25kKSAmJiAoZHJtX2luZm8oJih4ZSktPmRybSwgXAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS94ZS94ZV9taWdyYXRlLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX21pZ3Jh dGUuYwo+ID4gaW5kZXggYTk4ZTRiYWQzOWJmLi44MzAxNDk5MWZkZGUgMTAwNjQ0Cj4gPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0veGUveGVfbWlncmF0ZS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0veGUveGVfbWlncmF0ZS5jCj4gPiBAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIHhl X21pZ3JhdGVfZmluaShzdHJ1Y3QgZHJtX2RldmljZQo+ID4gKmRldiwgdm9pZCAqYXJnKQo+ID4g wqAKPiA+IMKgc3RhdGljIHU2NCB4ZV9taWdyYXRlX3ZtX2FkZHIodTY0IHNsb3QsIHUzMiBsZXZl bCkKPiA+IMKgewo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKHNsb3QgPj0gTlVNX1BUX1NM T1RTKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTihzbG90ID49IE5VTV9QVF9TTE9UUyk7Cj4g PiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIEZpcnN0IHNsb3QgaXMgcmVzZXJ2ZWQgZm9yIG1h cHBpbmcgb2YgUFQgYm8gYW5kIGJiLAo+ID4gc3RhcnQgZnJvbSAxICovCj4gPiDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIChzbG90ICsgMVVMTCkgPDwgeGVfcHRfc2hpZnQobGV2ZWwgKyAxKTsKPiA+ IEBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIGludCB4ZV9taWdyYXRlX2NyZWF0ZV9jbGVhcmVk X2JvKHN0cnVjdAo+ID4geGVfbWlncmF0ZSAqbSwgc3RydWN0IHhlX3ZtICp2bSkKPiA+IMKgCj4g PiDCoMKgwqDCoMKgwqDCoMKgeGVfbWFwX21lbXNldCh4ZSwgJm0tPmNsZWFyZWRfYm8tPnZtYXAs IDAsIDB4MDAsCj4gPiBjbGVhcmVkX3NpemUpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoHZyYW1fYWRk ciA9IHhlX2JvX2FkZHIobS0+Y2xlYXJlZF9ibywgMCwgR0VOOF9QQUdFX1NJWkUsCj4gPiAmaXNf dnJhbSk7Cj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIWlzX3ZyYW0pOwo+ID4gK8KgwqDC oMKgwqDCoMKgQlVHX09OKCFpc192cmFtKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBtLT5jbGVhcmVk X3ZyYW1fb2ZzID0geGVfbWlncmF0ZV92cmFtX29mcyh2cmFtX2FkZHIpOwo+ID4gwqAKPiA+IMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiA+IEBAIC0xNzMsNyArMTczLDcgQEAgc3RhdGljIGlu dCB4ZV9taWdyYXRlX3ByZXBhcmVfdm0oc3RydWN0IHhlX2d0Cj4gPiAqZ3QsIHN0cnVjdCB4ZV9t aWdyYXRlICptLAo+ID4gwqDCoMKgwqDCoMKgwqDCoEJVSUxEX0JVR19PTighKE5VTV9LRVJORUxf UERFICYgMSkpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqAvKiBOZWVkIHRvIGJlIHN1cmUg ZXZlcnl0aGluZyBmaXRzIGluIHRoZSBmaXJzdCBQVCwgb3IKPiA+IGNyZWF0ZSBtb3JlICovCj4g PiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04obS0+YmF0Y2hfYmFzZV9vZnMgKyBiYXRjaC0+c2l6 ZSA+PSBTWl8yTSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04obS0+YmF0Y2hfYmFzZV9vZnMg KyBiYXRjaC0+c2l6ZSA+PSBTWl8yTSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGJvID0g eGVfYm9fY3JlYXRlX3Bpbl9tYXAodm0tPnhlLCBtLT5ndCwgdm0sCj4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbnVt X2VudHJpZXMgKiBHRU44X1BBR0VfU0laRSwKPiA+IEBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGlj IGludCB4ZV9taWdyYXRlX3ByZXBhcmVfdm0oc3RydWN0IHhlX2d0Cj4gPiAqZ3QsIHN0cnVjdCB4 ZV9taWdyYXRlICptLAo+ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+IMKgCj4gPiDCoMKgwqDCoMKg wqDCoMKgaWYgKCFJU19ER0ZYKHhlKSkgewo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoFhFX0JVR19PTih4ZS0+aW5mby5zdXBwb3J0c191c20pOwo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoEJVR19PTih4ZS0+aW5mby5zdXBwb3J0c191c20pOwo+ID4gwqAKPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogV3JpdGUgb3V0IGJhdGNoIHRvbyAq Lwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtLT5iYXRjaF9iYXNlX29mcyA9 IE5VTV9QVF9TTE9UUyAqIEdFTjhfUEFHRV9TSVpFOwo+ID4gQEAgLTMxOCw3ICszMTgsNyBAQCBz dHJ1Y3QgeGVfbWlncmF0ZSAqeGVfbWlncmF0ZV9pbml0KHN0cnVjdCB4ZV9ndAo+ID4gKmd0KQo+ ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB3d19hY3F1aXJlX2N0eCB3dzsKPiA+IMKgwqDCoMKg wqDCoMKgwqBpbnQgZXJyOwo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTih4ZV9n dF9pc19tZWRpYV90eXBlKGd0KSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oeGVfZ3RfaXNf bWVkaWFfdHlwZShndCkpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBtID0gZHJtbV9remFs bG9jKCZ4ZS0+ZHJtLCBzaXplb2YoKm0pLCBHRlBfS0VSTkVMKTsKPiA+IMKgwqDCoMKgwqDCoMKg wqBpZiAoIW0pCj4gPiBAQCAtNDkxLDcgKzQ5MSw3IEBAIHN0YXRpYyB2b2lkIGVtaXRfY29weV9j Y3Moc3RydWN0IHhlX2d0ICpndCwKPiA+IHN0cnVjdCB4ZV9iYiAqYmIsCj4gPiDCoAo+ID4gwqDC oMKgwqDCoMKgwqDCoG51bV9jY3NfYmxrcyA9Cj4gPiBESVZfUk9VTkRfVVAoeGVfZGV2aWNlX2Nj c19ieXRlcyhndF90b194ZShndCksIHNpemUpLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBOVU1fQ0NTX0JZ VEVTX1BFUl9CTE9DSyk7Cj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04obnVtX2Njc19ibGtz ID4gTlVNX0NDU19CTEtTX1BFUl9YRkVSKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTihudW1f Y2NzX2Jsa3MgPiBOVU1fQ0NTX0JMS1NfUEVSX1hGRVIpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoCpj cysrID0gWFlfQ1RSTF9TVVJGX0NPUFlfQkxUIHwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgKHNyY19pc19pbmRpcmVjdCA/IDB4MCA6IDB4MSkgPDwKPiA+IFNSQ19BQ0NFU1Nf VFlQRV9TSElGVCB8Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoChkc3RfaXNf aW5kaXJlY3QgPyAweDAgOiAweDEpIDw8Cj4gPiBEU1RfQUNDRVNTX1RZUEVfU0hJRlQgfAo+ID4g QEAgLTUxMSw5ICs1MTEsOSBAQCBzdGF0aWMgdm9pZCBlbWl0X2NvcHkoc3RydWN0IHhlX2d0ICpn dCwgc3RydWN0Cj4gPiB4ZV9iYiAqYmIsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdTY0IHNyY19vZnMsIHU2NCBkc3Rfb2ZzLCB1bnNpZ25lZCBpbnQgc2l6 ZSwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25l ZCBwaXRjaCkKPiA+IMKgewo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKHNpemUgLyBwaXRj aCA+IFMxNl9NQVgpOwo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKHBpdGNoIC8gNCA+IFMx Nl9NQVgpOwo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKHBpdGNoID4gVTE2X01BWCk7Cj4g PiArwqDCoMKgwqDCoMKgwqBCVUdfT04oc2l6ZSAvIHBpdGNoID4gUzE2X01BWCk7Cj4gPiArwqDC oMKgwqDCoMKgwqBCVUdfT04ocGl0Y2ggLyA0ID4gUzE2X01BWCk7Cj4gPiArwqDCoMKgwqDCoMKg wqBCVUdfT04ocGl0Y2ggPiBVMTZfTUFYKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgYmIt PmNzW2JiLT5sZW4rK10gPSBHRU45X1hZX0ZBU1RfQ09QWV9CTFRfQ01EIHwgKDEwIC0gMik7Cj4g PiDCoMKgwqDCoMKgwqDCoMKgYmItPmNzW2JiLT5sZW4rK10gPSBCTFRfREVQVEhfMzIgfCBwaXRj aDsKPiA+IEBAIC01NjUsNyArNTY1LDcgQEAgc3RhdGljIHUzMiB4ZV9taWdyYXRlX2Njc19jb3B5 KHN0cnVjdAo+ID4geGVfbWlncmF0ZSAqbSwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICogQXQgdGhlIG1vbWVudCwgd2UgZG9uJ3Qgc3VwcG9ydCBjb3B5aW5nIENDUwo+ID4g bWV0YWRhdGEgZnJvbQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBzeXN0 ZW0gdG8gc3lzdGVtLgo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIXNyY19pc192cmFtICYm ICFkc3RfaXNfdnJhbSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQlVHX09O KCFzcmNfaXNfdnJhbSAmJiAhZHN0X2lzX3ZyYW0pOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZW1pdF9jb3B5X2NjcyhndCwgYmIsIGRzdF9vZnMsIGRzdF9pc192 cmFtLAo+ID4gc3JjX29mcywKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3JjX2lzX3ZyYW0sIGRzdF9zaXplKTsKPiA+IEBAIC03 NjQsNyArNzY0LDcgQEAgc3RhdGljIHZvaWQgZW1pdF9jbGVhcl9saW5rX2NvcHkoc3RydWN0IHhl X2d0Cj4gPiAqZ3QsIHN0cnVjdCB4ZV9iYiAqYmIsIHU2NCBzcmNfb2ZzCj4gPiDCoMKgwqDCoMKg wqDCoMKgKmNzKysgPSB1cHBlcl8zMl9iaXRzKHNyY19vZnMpOwo+ID4gwqDCoMKgwqDCoMKgwqDC oCpjcysrID0gRklFTERfUFJFUChQVkNfTVNfTU9DU19JTkRFWF9NQVNLLCBtb2NzKTsKPiA+IMKg Cj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oY3MgLSBiYi0+Y3MgIT0gbGVuICsgYmItPmxl bik7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oY3MgLSBiYi0+Y3MgIT0gbGVuICsgYmItPmxl bik7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGJiLT5sZW4gKz0gbGVuOwo+ID4gwqB9Cj4g PiBAQCAtODAyLDcgKzgwMiw3IEBAIHN0YXRpYyB2b2lkIGVtaXRfY2xlYXJfbWFpbl9jb3B5KHN0 cnVjdCB4ZV9ndAo+ID4gKmd0LCBzdHJ1Y3QgeGVfYmIgKmJiLAo+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAqY3MrKyA9IDA7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gwqAK PiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTihjcyAtIGJiLT5jcyAhPSBsZW4gKyBiYi0+bGVu KTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTihjcyAtIGJiLT5jcyAhPSBsZW4gKyBiYi0+bGVu KTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgYmItPmxlbiArPSBsZW47Cj4gPiDCoH0KPiA+ IEBAIC05NzcsMTQgKzk3NywxNCBAQCBzdGF0aWMgdm9pZCB3cml0ZV9wZ3RhYmxlKHN0cnVjdCB4 ZV9ndCAqZ3QsCj4gPiBzdHJ1Y3QgeGVfYmIgKmJiLCB1NjQgcHBndHRfb2ZzLAo+ID4gwqDCoMKg wqDCoMKgwqDCoCAqIFRoaXMgc2hvdWxkbid0IGJlIHBvc3NpYmxlIGluIHByYWN0aWNlLi4gbWln aHQgY2hhbmdlCj4gPiB3aGVuIDE2Swo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIHBhZ2VzIGFyZSB1 c2VkLiBIZW5jZSB0aGUgQlVHX09OLgo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqLwo+ID4gLcKgwqDC oMKgwqDCoMKgWEVfQlVHX09OKHVwZGF0ZS0+cXdvcmRzID4gMHgxZmYpOwo+ID4gK8KgwqDCoMKg wqDCoMKgQlVHX09OKHVwZGF0ZS0+cXdvcmRzID4gMHgxZmYpOwo+ID4gwqDCoMKgwqDCoMKgwqDC oGlmICghcHBndHRfb2ZzKSB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJv b2wgaXNfdnJhbTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBw Z3R0X29mcyA9IHhlX21pZ3JhdGVfdnJhbV9vZnMoeGVfYm9fYWRkcih1cGRhdGUtCj4gPiA+cHRf Ym8sIDAsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoAo+ID4gR0VOOF9QQUdFX1NJWkUsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gJmlzX3ZyYW0pKTsK PiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIWlzX3ZyYW0pOwo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJVR19PTighaXNfdnJhbSk7Cj4gPiDC oMKgwqDCoMKgwqDCoMKgfQo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBkbyB7Cj4gPiBAQCAt MTE2Niw3ICsxMTY2LDcgQEAgeGVfbWlncmF0ZV91cGRhdGVfcGd0YWJsZXMoc3RydWN0IHhlX21p Z3JhdGUKPiA+ICptLAo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIFdvcnN0IGNhc2U6IFN1bSgyICog KGVhY2ggbG93ZXIgbGV2ZWwgcGFnZSBzaXplKSArICh0b3AKPiA+IGxldmVsIHBhZ2Ugc2l6ZSkp Cj4gPiDCoMKgwqDCoMKgwqDCoMKgICogU2hvdWxkIGJlIHJlYXNvbmFibHkgYm91bmQuLgo+ID4g wqDCoMKgwqDCoMKgwqDCoCAqLwo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKGJhdGNoX3Np emUgPj0gU1pfMTI4Syk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oYmF0Y2hfc2l6ZSA+PSBT Wl8xMjhLKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgYmIgPSB4ZV9iYl9uZXcoZ3QsIGJh dGNoX3NpemUsICFlbmcgJiYgeGUtCj4gPiA+aW5mby5zdXBwb3J0c191c20pOwo+ID4gwqDCoMKg wqDCoMKgwqDCoGlmIChJU19FUlIoYmIpKQo+ID4gQEAgLTExNzYsNyArMTE3Niw3IEBAIHhlX21p Z3JhdGVfdXBkYXRlX3BndGFibGVzKHN0cnVjdCB4ZV9taWdyYXRlCj4gPiAqbSwKPiA+IMKgwqDC oMKgwqDCoMKgwqBpZiAoIUlTX0RHRlgoeGUpKSB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHBwZ3R0X29mcyA9IE5VTV9LRVJORUxfUERFIC0gMTsKPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVuZykgewo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04obnVtX3VwZGF0ZXMgPgo+ID4gTlVN X1ZNVVNBX1dSSVRFU19QRVJfVU5JVCk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoEJVR19PTihudW1fdXBkYXRlcyA+Cj4gPiBOVU1fVk1VU0FfV1JJ VEVTX1BFUl9VTklUKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBzYV9ibyA9IGRybV9zdWJhbGxvY19uZXcoJm0tPnZtX3VwZGF0ZV9z YSwKPiA+IDEsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0ZQ X0tFUk5FTCwgdHJ1ZSk7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX21t aW8uYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfbW1pby5jCj4gPiBpbmRleCA1Y2FjYWEw NTc1OWEuLmVmM2RkMGZmYjAwMSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94 ZV9tbWlvLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9tbWlvLmMKPiA+IEBAIC0y NDYsNyArMjQ2LDcgQEAgaW50IHhlX21taW9fcHJvYmVfdnJhbShzdHJ1Y3QgeGVfZGV2aWNlICp4 ZSkKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlm ICh4ZV9ndF9pc19tZWRpYV90eXBlKGd0KSkKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAtLWFkal90aWxlX2NvdW50Owo+ ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIWFkal90 aWxlX2NvdW50KTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCVUdfT04oIWFk al90aWxlX2NvdW50KTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHNpemUgPSB4ZS0+bWVtLnZyYW0uc2l6ZSAvIGFkal90aWxlX2NvdW50Owo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpb19zdGFydCA9IHhlLT5tZW0udnJhbS5pb19zdGFydDsK PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfcHQuYwo+ID4gYi9kcml2ZXJz L2dwdS9kcm0veGUveGVfcHQuYwo+ID4gaW5kZXggZmZiMGU2ZDhmOWY3Li40YmRlMzY4NGZlODIg MTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfcHQuYwo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL3hlL3hlX3B0LmMKPiA+IEBAIC0xMjYsNyArMTI2LDcgQEAgc3RhdGljIHU2 NCBfX2dlbjhfcHRlX2VuY29kZSh1NjQgcHRlLCBlbnVtCj4gPiB4ZV9jYWNoZV9sZXZlbCBjYWNo ZSwgdTMyIGZsYWdzLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwdGUgfD0g R0VOOF9QRFBFX1BTXzFHOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqAvKiBYWFg6IERvZXMg aHcgc3VwcG9ydCAxIEdpQiBwYWdlcz8gKi8KPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTihw dF9sZXZlbCA+IDIpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKHB0X2xldmVsID4gMik7Cj4g PiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBwdGU7Cj4gPiDCoH0KPiA+IEBAIC0xNzEs NyArMTcxLDcgQEAgc3RhdGljIHU2NCBfX3hlX3B0X2VtcHR5X3B0ZShzdHJ1Y3QgeGVfZ3QgKmd0 LAo+ID4gc3RydWN0IHhlX3ZtICp2bSwKPiA+IMKgewo+ID4gwqDCoMKgwqDCoMKgwqDCoHU4IGlk ID0gZ3QtPmluZm8uaWQ7Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKHhlX2d0 X2lzX21lZGlhX3R5cGUoZ3QpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTih4ZV9ndF9pc19t ZWRpYV90eXBlKGd0KSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmICghdm0tPnNjcmF0 Y2hfYm9baWRdKQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiA+IEBAIC0yMjksNyArMjI5LDcgQEAgc3RydWN0IHhlX3B0ICp4ZV9wdF9jcmVhdGUoc3RydWN0 IHhlX3ZtICp2bSwKPiA+IHN0cnVjdCB4ZV9ndCAqZ3QsCj4gPiDCoMKgwqDCoMKgwqDCoMKgcHQt PmxldmVsID0gbGV2ZWw7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgcHQtPmRybS5kaXIgPSBsZXZlbCA/ ICZhc194ZV9wdF9kaXIocHQpLT5kaXIgOiBOVUxMOwo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDC oFhFX0JVR19PTihsZXZlbCA+IFhFX1ZNX01BWF9MRVZFTCk7Cj4gPiArwqDCoMKgwqDCoMKgwqBC VUdfT04obGV2ZWwgPiBYRV9WTV9NQVhfTEVWRUwpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gcHQ7Cj4gPiDCoAo+ID4gQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIHhlX3B0X3Bv cHVsYXRlX2VtcHR5KHN0cnVjdCB4ZV9ndCAqZ3QsCj4gPiBzdHJ1Y3QgeGVfdm0gKnZtLAo+ID4g wqDCoMKgwqDCoMKgwqDCoHU2NCBlbXB0eTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgaTsKPiA+ IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oeGVfZ3RfaXNfbWVkaWFfdHlwZShndCkp Owo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKHhlX2d0X2lzX21lZGlhX3R5cGUoZ3QpKTsKPiA+ IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCF2bS0+c2NyYXRjaF9ib1tndC0+aW5mby5pZF0p IHsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoKPiA+IEBAIC0zMDAsNyAr MzAwLDcgQEAgdm9pZCB4ZV9wdF9kZXN0cm95KHN0cnVjdCB4ZV9wdCAqcHQsIHUzMiBmbGFncywK PiA+IHN0cnVjdCBsbGlzdF9oZWFkICpkZWZlcnJlZCkKPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAo IXB0KQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gPiDCoAo+ ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKCFsaXN0X2VtcHR5KCZwdC0+Ym8tPnZtYXMpKTsK PiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTighbGlzdF9lbXB0eSgmcHQtPmJvLT52bWFzKSk7Cj4g PiDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5waW4ocHQtPmJvKTsKPiA+IMKgwqDCoMKgwqDCoMKg wqB4ZV9ib19wdXRfZGVmZXJyZWQocHQtPmJvLCBkZWZlcnJlZCk7Cj4gPiDCoAo+ID4gQEAgLTg3 NCw4ICs4NzQsOCBAQCBzdGF0aWMgaW50IHhlX3B0X3phcF9wdGVzX2VudHJ5KHN0cnVjdCBkcm1f cHQKPiA+ICpwYXJlbnQsIHBnb2ZmX3Qgb2Zmc2V0LAo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVj dCB4ZV9wdCAqeGVfY2hpbGQgPSBjb250YWluZXJfb2YoKmNoaWxkLAo+ID4gdHlwZW9mKCp4ZV9j aGlsZCksIGRybSk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgcGdvZmZfdCBlbmRfb2Zmc2V0Owo+ID4g wqAKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTighKmNoaWxkKTsKPiA+IC3CoMKgwqDCoMKg wqDCoFhFX0JVR19PTighbGV2ZWwgJiYgeGVfY2hpbGQtPmlzX2NvbXBhY3QpOwo+ID4gK8KgwqDC oMKgwqDCoMKgQlVHX09OKCEqY2hpbGQpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKCFsZXZl bCAmJiB4ZV9jaGlsZC0+aXNfY29tcGFjdCk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoC8q Cj4gPiDCoMKgwqDCoMKgwqDCoMKgICogTm90ZSB0aGF0IHdlJ3JlIGNhbGxlZCBmcm9tIGFuIGVu dHJ5IGNhbGxiYWNrLCBhbmQgd2UncmUKPiA+IGRlYWxpbmcKPiA+IEBAIC05NDQsNyArOTQ0LDcg QEAgeGVfdm1fcG9wdWxhdGVfcGd0YWJsZShzdHJ1Y3QKPiA+IHhlX21pZ3JhdGVfcHRfdXBkYXRl ICpwdF91cGRhdGUsIHN0cnVjdCB4ZV9ndCAqZ3QsCj4gPiDCoMKgwqDCoMKgwqDCoMKgdTY0ICpw dHIgPSBkYXRhOwo+ID4gwqDCoMKgwqDCoMKgwqDCoHUzMiBpOwo+ID4gwqAKPiA+IC3CoMKgwqDC oMKgwqDCoFhFX0JVR19PTih4ZV9ndF9pc19tZWRpYV90eXBlKGd0KSk7Cj4gPiArwqDCoMKgwqDC oMKgwqBCVUdfT04oeGVfZ3RfaXNfbWVkaWFfdHlwZShndCkpOwo+ID4gwqAKPiA+IMKgwqDCoMKg wqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgbnVtX3F3b3JkczsgaSsrKSB7Cj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChtYXApCj4gPiBAQCAtMTA1Myw3ICsxMDUzLDcgQEAg c3RhdGljIHZvaWQgeGVfdm1fZGJnX3ByaW50X2VudHJpZXMoc3RydWN0Cj4gPiB4ZV9kZXZpY2Ug KnhlLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1NjQgZW5kOwo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1NjQgc3RhcnQ7Cj4gPiDCoAo+ID4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFhFX0JVR19PTihlbnRyeS0+cHQtPmlzX2NvbXBhY3Qp Owo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJVR19PTihlbnRyeS0+cHQtPmlz X2NvbXBhY3QpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdGFydCA9IGVu dHJ5LT5vZnMgKiBwYWdlX3NpemU7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGVuZCA9IHN0YXJ0ICsgcGFnZV9zaXplICogZW50cnktPnF3b3JkczsKPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgdm1fZGJnKCZ4ZS0+ZHJtLAo+ID4gQEAgLTEyOTcsNyArMTI5 Nyw3IEBAIF9feGVfcHRfYmluZF92bWEoc3RydWN0IHhlX2d0ICpndCwgc3RydWN0Cj4gPiB4ZV92 bWEgKnZtYSwgc3RydWN0IHhlX2VuZ2luZSAqZSwKPiA+IMKgwqDCoMKgwqDCoMKgwqBiaW5kX3B0 X3VwZGF0ZS5sb2NrZWQgPSBmYWxzZTsKPiA+IMKgwqDCoMKgwqDCoMKgwqB4ZV9ib19hc3NlcnRf aGVsZCh2bWEtPmJvKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqB4ZV92bV9hc3NlcnRfaGVsZCh2bSk7 Cj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oeGVfZ3RfaXNfbWVkaWFfdHlwZShndCkpOwo+ ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKHhlX2d0X2lzX21lZGlhX3R5cGUoZ3QpKTsKPiA+IMKg Cj4gPiDCoMKgwqDCoMKgwqDCoMKgdm1fZGJnKCZ2bWEtPnZtLT54ZS0+ZHJtLAo+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiUHJlcGFyaW5nIGJpbmQsIHdpdGggcmFuZ2UgWyVsbHgu Li4lbGx4KSBlbmdpbmUKPiA+ICVwLlxuIiwKPiA+IEBAIC0xMzA2LDcgKzEzMDYsNyBAQCBfX3hl X3B0X2JpbmRfdm1hKHN0cnVjdCB4ZV9ndCAqZ3QsIHN0cnVjdAo+ID4geGVfdm1hICp2bWEsIHN0 cnVjdCB4ZV9lbmdpbmUgKmUsCj4gPiDCoMKgwqDCoMKgwqDCoMKgZXJyID0geGVfcHRfcHJlcGFy ZV9iaW5kKGd0LCB2bWEsIGVudHJpZXMsICZudW1fZW50cmllcywKPiA+IHJlYmluZCk7Cj4gPiDC oMKgwqDCoMKgwqDCoMKgaWYgKGVycikKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZ290byBlcnI7Cj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04obnVtX2VudHJpZXMgPiBB UlJBWV9TSVpFKGVudHJpZXMpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTihudW1fZW50cmll cyA+IEFSUkFZX1NJWkUoZW50cmllcykpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqB4ZV92 bV9kYmdfcHJpbnRfZW50cmllcyhndF90b194ZShndCksIGVudHJpZXMsCj4gPiBudW1fZW50cmll cyk7Cj4gPiDCoAo+ID4gQEAgLTE0MzYsOCArMTQzNiw4IEBAIHN0YXRpYyBpbnQgeGVfcHRfc3Rh Z2VfdW5iaW5kX2VudHJ5KHN0cnVjdAo+ID4gZHJtX3B0ICpwYXJlbnQsIHBnb2ZmX3Qgb2Zmc2V0 LAo+ID4gwqB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX3B0ICp4ZV9jaGlsZCA9IGNv bnRhaW5lcl9vZigqY2hpbGQsCj4gPiB0eXBlb2YoKnhlX2NoaWxkKSwgZHJtKTsKPiA+IMKgCj4g PiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oISpjaGlsZCk7Cj4gPiAtwqDCoMKgwqDCoMKgwqBY RV9CVUdfT04oIWxldmVsICYmIHhlX2NoaWxkLT5pc19jb21wYWN0KTsKPiA+ICvCoMKgwqDCoMKg wqDCoEJVR19PTighKmNoaWxkKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTighbGV2ZWwgJiYg eGVfY2hpbGQtPmlzX2NvbXBhY3QpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqB4ZV9wdF9j aGVja19raWxsKGFkZHIsIG5leHQsIGxldmVsIC0gMSwgeGVfY2hpbGQsIGFjdGlvbiwKPiA+IHdh bGspOwo+ID4gwqAKPiA+IEBAIC0xNTI4LDcgKzE1MjgsNyBAQCB4ZV9taWdyYXRlX2NsZWFyX3Bn dGFibGVfY2FsbGJhY2soc3RydWN0Cj4gPiB4ZV9taWdyYXRlX3B0X3VwZGF0ZSAqcHRfdXBkYXRl LAo+ID4gwqDCoMKgwqDCoMKgwqDCoHU2NCBlbXB0eSA9IF9feGVfcHRfZW1wdHlfcHRlKGd0LCB2 bWEtPnZtLCB1cGRhdGUtPnB0LQo+ID4gPmxldmVsKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQg aTsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oeGVfZ3RfaXNfbWVkaWFfdHlw ZShndCkpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKHhlX2d0X2lzX21lZGlhX3R5cGUoZ3Qp KTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKG1hcCAmJiBtYXAtPmlzX2lvbWVtKQo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgbnVtX3F3 b3JkczsgKytpKQo+ID4gQEAgLTE2MjAsMTQgKzE2MjAsMTQgQEAgX194ZV9wdF91bmJpbmRfdm1h KHN0cnVjdCB4ZV9ndCAqZ3QsIHN0cnVjdAo+ID4geGVfdm1hICp2bWEsIHN0cnVjdCB4ZV9lbmdp bmUgKmUsCj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoHhlX2JvX2Fzc2VydF9oZWxkKHZtYS0+ Ym8pOwo+ID4gwqDCoMKgwqDCoMKgwqDCoHhlX3ZtX2Fzc2VydF9oZWxkKHZtKTsKPiA+IC3CoMKg wqDCoMKgwqDCoFhFX0JVR19PTih4ZV9ndF9pc19tZWRpYV90eXBlKGd0KSk7Cj4gPiArwqDCoMKg wqDCoMKgwqBCVUdfT04oeGVfZ3RfaXNfbWVkaWFfdHlwZShndCkpOwo+ID4gwqAKPiA+IMKgwqDC oMKgwqDCoMKgwqB2bV9kYmcoJnZtYS0+dm0tPnhlLT5kcm0sCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICJQcmVwYXJpbmcgdW5iaW5kLCB3aXRoIHJhbmdlIFslbGx4Li4uJWxseCkg ZW5naW5lCj4gPiAlcC5cbiIsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZtYS0+ c3RhcnQsIHZtYS0+ZW5kLCBlKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgbnVtX2VudHJp ZXMgPSB4ZV9wdF9zdGFnZV91bmJpbmQoZ3QsIHZtYSwgZW50cmllcyk7Cj4gPiAtwqDCoMKgwqDC oMKgwqBYRV9CVUdfT04obnVtX2VudHJpZXMgPiBBUlJBWV9TSVpFKGVudHJpZXMpKTsKPiA+ICvC oMKgwqDCoMKgwqDCoEJVR19PTihudW1fZW50cmllcyA+IEFSUkFZX1NJWkUoZW50cmllcykpOwo+ ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqB4ZV92bV9kYmdfcHJpbnRfZW50cmllcyhndF90b194 ZShndCksIGVudHJpZXMsCj4gPiBudW1fZW50cmllcyk7Cj4gPiDCoAo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yZXNfY3Vyc29yLmgKPiA+IGIvZHJpdmVycy9ncHUvZHJt L3hlL3hlX3Jlc19jdXJzb3IuaAo+ID4gaW5kZXggYjM0ZWI5MDZkYmIwLi4zYjViZjkwZmY2NTUg MTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmVzX2N1cnNvci5oCj4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmVzX2N1cnNvci5oCj4gPiBAQCAtODAsNyArODAs NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgeGVfcmVzX2ZpcnN0KHN0cnVjdAo+ID4gdHRtX3Jlc291 cmNlICpyZXMsCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCFyZXMpCj4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gZmFsbGJhY2s7Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDC oMKgWEVfQlVHX09OKHN0YXJ0ICsgc2l6ZSA+IHJlcy0+c2l6ZSk7Cj4gPiArwqDCoMKgwqDCoMKg wqBCVUdfT04oc3RhcnQgKyBzaXplID4gcmVzLT5zaXplKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKg wqDCoMKgY3VyLT5tZW1fdHlwZSA9IHJlcy0+bWVtX3R5cGU7Cj4gPiDCoAo+ID4gQEAgLTE0MSw3 ICsxNDEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX194ZV9yZXNfc2dfbmV4dChzdHJ1Y3QKPiA+ IHhlX3Jlc19jdXJzb3IgKmN1cikKPiA+IMKgwqDCoMKgwqDCoMKgwqB3aGlsZSAoc3RhcnQgPj0g c2dfZG1hX2xlbihzZ2wpKSB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0 YXJ0IC09IHNnX2RtYV9sZW4oc2dsKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgc2dsID0gc2dfbmV4dChzZ2wpOwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oFhFX0JVR19PTighc2dsKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCVUdf T04oIXNnbCk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKg wqBjdXItPnN0YXJ0ID0gc3RhcnQ7Cj4gPiBAQCAtMTYzLDggKzE2Myw4IEBAIHN0YXRpYyBpbmxp bmUgdm9pZCB4ZV9yZXNfZmlyc3Rfc2coY29uc3Qgc3RydWN0Cj4gPiBzZ190YWJsZSAqc2csCj4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1NjQgc3RhcnQsIHU2NCBzaXplLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IHhlX3Jlc19jdXJzb3IgKmN1cikKPiA+IMKgewo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09O KCFzZyk7Cj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIUlTX0FMSUdORUQoc3RhcnQsIFBB R0VfU0laRSkgfHwKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTighc2cpOwo+ID4gK8KgwqDCoMKg wqDCoMKgQlVHX09OKCFJU19BTElHTkVEKHN0YXJ0LCBQQUdFX1NJWkUpIHx8Cj4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICFJU19BTElHTkVEKHNpemUsIFBBR0VfU0laRSkp Owo+ID4gwqDCoMKgwqDCoMKgwqDCoGN1ci0+bm9kZSA9IE5VTEw7Cj4gPiDCoMKgwqDCoMKgwqDC oMKgY3VyLT5zdGFydCA9IHN0YXJ0Owo+ID4gQEAgLTE4OSw3ICsxODksNyBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgeGVfcmVzX25leHQoc3RydWN0Cj4gPiB4ZV9yZXNfY3Vyc29yICpjdXIsIHU2NCBz aXplKQo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBsaXN0X2hlYWQgKm5leHQ7Cj4gPiDCoMKg wqDCoMKgwqDCoMKgdTY0IHN0YXJ0Owo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19P TihzaXplID4gY3VyLT5yZW1haW5pbmcpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKHNpemUg PiBjdXItPnJlbWFpbmluZyk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGN1ci0+cmVtYWlu aW5nIC09IHNpemU7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCFjdXItPnJlbWFpbmluZykKPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmluZ19vcHMuYwo+ID4gYi9kcml2 ZXJzL2dwdS9kcm0veGUveGVfcmluZ19vcHMuYwo+ID4gaW5kZXggOTE4ZTgxOWU3YzkxLi5iNjEw YTRmMGRmYTQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmluZ19vcHMu Ywo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3Jpbmdfb3BzLmMKPiA+IEBAIC0xODQs NyArMTg0LDcgQEAgc3RhdGljIHZvaWQgX19lbWl0X2pvYl9nZW4xMl9jb3B5KHN0cnVjdAo+ID4g eGVfc2NoZWRfam9iICpqb2IsIHN0cnVjdCB4ZV9scmMgKmxyYywKPiA+IMKgCj4gPiDCoMKgwqDC oMKgwqDCoMKgaSA9IGVtaXRfdXNlcl9pbnRlcnJ1cHQoZHcsIGkpOwo+ID4gwqAKPiA+IC3CoMKg wqDCoMKgwqDCoFhFX0JVR19PTihpID4gTUFYX0pPQl9TSVpFX0RXKTsKPiA+ICvCoMKgwqDCoMKg wqDCoEJVR19PTihpID4gTUFYX0pPQl9TSVpFX0RXKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDC oMKgeGVfbHJjX3dyaXRlX3JpbmcobHJjLCBkdywgaSAqIHNpemVvZigqZHcpKTsKPiA+IMKgfQo+ ID4gQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgdm9pZCBfX2VtaXRfam9iX2dlbjEyX3ZpZGVv KHN0cnVjdAo+ID4geGVfc2NoZWRfam9iICpqb2IsIHN0cnVjdCB4ZV9scmMgKmxyYywKPiA+IMKg Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaSA9IGVtaXRfdXNlcl9pbnRlcnJ1cHQoZHcsIGkpOwo+ID4g wqAKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTihpID4gTUFYX0pPQl9TSVpFX0RXKTsKPiA+ ICvCoMKgwqDCoMKgwqDCoEJVR19PTihpID4gTUFYX0pPQl9TSVpFX0RXKTsKPiA+IMKgCj4gPiDC oMKgwqDCoMKgwqDCoMKgeGVfbHJjX3dyaXRlX3JpbmcobHJjLCBkdywgaSAqIHNpemVvZigqZHcp KTsKPiA+IMKgfQo+ID4gQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgdm9pZAo+ID4gX19lbWl0 X2pvYl9nZW4xMl9yZW5kZXJfY29tcHV0ZShzdHJ1Y3QgeGVfc2NoZWRfam9iICpqb2IsCj4gPiDC oAo+ID4gwqDCoMKgwqDCoMKgwqDCoGkgPSBlbWl0X3VzZXJfaW50ZXJydXB0KGR3LCBpKTsKPiA+ IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oaSA+IE1BWF9KT0JfU0laRV9EVyk7Cj4g PiArwqDCoMKgwqDCoMKgwqBCVUdfT04oaSA+IE1BWF9KT0JfU0laRV9EVyk7Cj4gPiDCoAo+ID4g wqDCoMKgwqDCoMKgwqDCoHhlX2xyY193cml0ZV9yaW5nKGxyYywgZHcsIGkgKiBzaXplb2YoKmR3 KSk7Cj4gPiDCoH0KPiA+IEBAIC0yOTMsNyArMjkzLDcgQEAgc3RhdGljIHZvaWQgZW1pdF9taWdy YXRpb25fam9iX2dlbjEyKHN0cnVjdAo+ID4geGVfc2NoZWRfam9iICpqb2IsCj4gPiDCoAo+ID4g wqDCoMKgwqDCoMKgwqDCoGkgPSBlbWl0X3VzZXJfaW50ZXJydXB0KGR3LCBpKTsKPiA+IMKgCj4g PiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oaSA+IE1BWF9KT0JfU0laRV9EVyk7Cj4gPiArwqDC oMKgwqDCoMKgwqBCVUdfT04oaSA+IE1BWF9KT0JfU0laRV9EVyk7Cj4gPiDCoAo+ID4gwqDCoMKg wqDCoMKgwqDCoHhlX2xyY193cml0ZV9yaW5nKGxyYywgZHcsIGkgKiBzaXplb2YoKmR3KSk7Cj4g PiDCoH0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfc2NoZWRfam9iLmMK PiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3NjaGVkX2pvYi5jCj4gPiBpbmRleCAyOTg1Y2Fh NjA5N2IuLjg3ODU0ZjM0NzNkYiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94 ZV9zY2hlZF9qb2IuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3NjaGVkX2pvYi5j Cj4gPiBAQCAtMTQyLDcgKzE0Miw3IEBAIHN0cnVjdCB4ZV9zY2hlZF9qb2IgKnhlX3NjaGVkX2pv Yl9jcmVhdGUoc3RydWN0Cj4gPiB4ZV9lbmdpbmUgKmUsCj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBTYW5pdHkgY2hlY2sgKi8KPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZm9yIChqID0gMDsgaiA8IGUtPndpZHRoOyArK2opCj4gPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFhFX0JVR19PTihjZi0+ YmFzZS5zZXFubyAhPSBmZW5jZXNbal0tCj4gPiA+c2Vxbm8pOwo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCVUdfT04oY2YtPmJhc2Uuc2Vxbm8gIT0g ZmVuY2VzW2pdLT5zZXFubyk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBqb2ItPmZlbmNlID0gJmNmLT5iYXNlOwo+ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfdHRtX2d0dF9tZ3IuYwo+ID4gYi9kcml2 ZXJzL2dwdS9kcm0veGUveGVfdHRtX2d0dF9tZ3IuYwo+ID4gaW5kZXggODA3NTc4MTA3MGYyLi5j NjFkMmZhNjU4YjUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfdHRtX2d0 dF9tZ3IuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3R0bV9ndHRfbWdyLmMKPiA+ IEBAIC0xMTEsNyArMTExLDcgQEAgaW50IHhlX3R0bV9ndHRfbWdyX2luaXQoc3RydWN0IHhlX2d0 ICpndCwKPiA+IHN0cnVjdCB4ZV90dG1fZ3R0X21nciAqbWdyLAo+ID4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuID0gJm1nci0+bWFuYWdlcjsKPiA+IMKg wqDCoMKgwqDCoMKgwqBpbnQgZXJyOwo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19P Tih4ZV9ndF9pc19tZWRpYV90eXBlKGd0KSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oeGVf Z3RfaXNfbWVkaWFfdHlwZShndCkpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBtZ3ItPmd0 ID0gZ3Q7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgbWFuLT51c2VfdHQgPSB0cnVlOwo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV90dG1fc3RvbGVuX21nci5jCj4gPiBiL2RyaXZl cnMvZ3B1L2RybS94ZS94ZV90dG1fc3RvbGVuX21nci5jCj4gPiBpbmRleCAzMTg4N2ZlYzEwNzMu LjEzNDNiM2E4NjJjZSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV90dG1f c3RvbGVuX21nci5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfdHRtX3N0b2xlbl9t Z3IuYwo+ID4gQEAgLTE4NCw3ICsxODQsNyBAQCB1NjQgeGVfdHRtX3N0b2xlbl9pb19vZmZzZXQo c3RydWN0IHhlX2JvICpibywKPiA+IHUzMiBvZmZzZXQpCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IHhlX3R0bV9zdG9sZW5fbWdyICptZ3IgPSB0b19zdG9sZW5fbWdyKHR0bV9tZ3IpOwo+ID4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9yZXNfY3Vyc29yIGN1cjsKPiA+IMKgCj4gPiAtwqDC oMKgwqDCoMKgwqBYRV9CVUdfT04oIW1nci0+aW9fYmFzZSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBC VUdfT04oIW1nci0+aW9fYmFzZSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmICh4ZV90 dG1fc3RvbGVuX2NwdV9hY2Nlc3NfbmVlZHNfZ2d0dCh4ZSkpCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJldHVybiBtZ3ItPmlvX2Jhc2UgKyB4ZV9ib19nZ3R0X2FkZHIoYm8p ICsgb2Zmc2V0Owo+ID4gQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgaW50Cj4gPiBfX3hlX3R0 bV9zdG9sZW5faW9fbWVtX3Jlc2VydmVfc3RvbGVuKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLAo+ID4g wqAjaWZkZWYgQ09ORklHX1g4Ngo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9ibyAqYm8g PSB0dG1fdG9feGVfYm8obWVtLT5ibyk7Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVH X09OKElTX0RHRlgoeGUpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTihJU19ER0ZYKHhlKSk7 Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIFhYWDogUmVxdWlyZSBCTyB0byBiZSBtYXBw ZWQgdG8gR0dUVD8gKi8KPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoZHJtX1dBUk5fT04oJnhlLT5k cm0sICEoYm8tPmZsYWdzICYKPiA+IFhFX0JPX0NSRUFURV9HR1RUX0JJVCkpKQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV90dG1fdnJhbV9tZ3IuYwo+ID4gYi9kcml2ZXJz L2dwdS9kcm0veGUveGVfdHRtX3ZyYW1fbWdyLmMKPiA+IGluZGV4IDczODM2YjliN2ZlZC4uYWE1 MDk2NDIxNGY4IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3R0bV92cmFt X21nci5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfdHRtX3ZyYW1fbWdyLmMKPiA+ IEBAIC0zNTcsNyArMzU3LDcgQEAgaW50IHhlX3R0bV92cmFtX21ncl9pbml0KHN0cnVjdCB4ZV9n dCAqZ3QsCj4gPiBzdHJ1Y3QgeGVfdHRtX3ZyYW1fbWdyICptZ3IpCj4gPiDCoHsKPiA+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZGV2aWNlICp4ZSA9IGd0X3RvX3hlKGd0KTsKPiA+IMKgCj4g PiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oeGVfZ3RfaXNfbWVkaWFfdHlwZShndCkpOwo+ID4g K8KgwqDCoMKgwqDCoMKgQlVHX09OKHhlX2d0X2lzX21lZGlhX3R5cGUoZ3QpKTsKPiA+IMKgCj4g PiDCoMKgwqDCoMKgwqDCoMKgbWdyLT5ndCA9IGd0Owo+ID4gwqAKPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0veGUveGVfdWNfZncuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVf dWNfZncuYwo+ID4gaW5kZXggM2ViZTY1MWI5YTFiLi5iYmU5MjM5ZTgxNDUgMTAwNjQ0Cj4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfdWNfZncuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL3hlL3hlX3VjX2Z3LmMKPiA+IEBAIC0yMyw3ICsyMyw3IEBAIF9fdWNfZndfdG9fZ3Qoc3Ry dWN0IHhlX3VjX2Z3ICp1Y19mdywgZW51bQo+ID4geGVfdWNfZndfdHlwZSB0eXBlKQo+ID4gwqDC oMKgwqDCoMKgwqDCoGlmICh0eXBlID09IFhFX1VDX0ZXX1RZUEVfR1VDKQo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gY29udGFpbmVyX29mKHVjX2Z3LCBzdHJ1Y3Qg eGVfZ3QsCj4gPiB1Yy5ndWMuZncpOwo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19P Tih0eXBlICE9IFhFX1VDX0ZXX1RZUEVfSFVDKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTih0 eXBlICE9IFhFX1VDX0ZXX1RZUEVfSFVDKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gY29u dGFpbmVyX29mKHVjX2Z3LCBzdHJ1Y3QgeGVfZ3QsIHVjLmh1Yy5mdyk7Cj4gPiDCoH0KPiA+IMKg Cj4gPiBAQCAtMTQ2LDcgKzE0Niw3IEBAIHVjX2Z3X2F1dG9fc2VsZWN0KHN0cnVjdCB4ZV9kZXZp Y2UgKnhlLCBzdHJ1Y3QKPiA+IHhlX3VjX2Z3ICp1Y19mdykKPiA+IMKgwqDCoMKgwqDCoMKgwqB1 OCByZXYgPSB4ZS0+aW5mby5yZXZpZDsKPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgaTsKPiA+IMKg Cj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04odWNfZnctPnR5cGUgPj0gQVJSQVlfU0laRShi bG9ic19hbGwpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTih1Y19mdy0+dHlwZSA+PSBBUlJB WV9TSVpFKGJsb2JzX2FsbCkpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGZ3X2Jsb2JzID0gYmxvYnNf YWxsW3VjX2Z3LT50eXBlXS5ibG9iczsKPiA+IMKgwqDCoMKgwqDCoMKgwqBmd19jb3VudCA9IGJs b2JzX2FsbFt1Y19mdy0+dHlwZV0uY291bnQ7Cj4gPiDCoAo+ID4gQEAgLTE3Niw4ICsxNzYsOCBA QCBzaXplX3QgeGVfdWNfZndfY29weV9yc2Eoc3RydWN0IHhlX3VjX2Z3Cj4gPiAqdWNfZncsIHZv aWQgKmRzdCwgdTMyIG1heF9sZW4pCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2Rldmlj ZSAqeGUgPSB1Y19md190b194ZSh1Y19mdyk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgdTMyIHNpemUg PSBtaW5fdCh1MzIsIHVjX2Z3LT5yc2Ffc2l6ZSwgbWF4X2xlbik7Cj4gPiDCoAo+ID4gLcKgwqDC oMKgwqDCoMKgWEVfQlVHX09OKHNpemUgJSA0KTsKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19P TigheGVfdWNfZndfaXNfYXZhaWxhYmxlKHVjX2Z3KSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdf T04oc2l6ZSAlIDQpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKCF4ZV91Y19md19pc19hdmFp bGFibGUodWNfZncpKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgeGVfbWFwX21lbWNweV9m cm9tKHhlLCBkc3QsICZ1Y19mdy0+Ym8tPnZtYXAsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhlX3VjX2Z3X3JzYV9vZmZzZXQodWNfZncp LCBzaXplKTsKPiA+IEBAIC0yMDEsNyArMjAxLDcgQEAgc3RhdGljIHZvaWQgZ3VjX3JlYWRfY3Nz X2luZm8oc3RydWN0IHhlX3VjX2Z3Cj4gPiAqdWNfZncsIHN0cnVjdCB1Y19jc3NfaGVhZGVyICpj c3MpCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2d0ICpndCA9IHVjX2Z3X3RvX2d0KHVj X2Z3KTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZ3VjICpndWMgPSAmZ3QtPnVjLmd1 YzsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04odWNfZnctPnR5cGUgIT0gWEVf VUNfRldfVFlQRV9HVUMpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKHVjX2Z3LT50eXBlICE9 IFhFX1VDX0ZXX1RZUEVfR1VDKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBXQVJOX09OKHVjX2Z3LT5t YWpvcl92ZXJfZm91bmQgPCA3MCk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmICh1Y19m dy0+bWlub3JfdmVyX2ZvdW5kID49IDYpIHsKPiA+IEBAIC0yNDYsOCArMjQ2LDggQEAgaW50IHhl X3VjX2Z3X2luaXQoc3RydWN0IHhlX3VjX2Z3ICp1Y19mdykKPiA+IMKgwqDCoMKgwqDCoMKgwqAg KiBiZWZvcmUgd2UncmUgbG9va2VkIGF0IHRoZSBIVyBjYXBzIHRvIHNlZSBpZiB3ZSBoYXZlIHVj Cj4gPiBzdXBwb3J0Cj4gPiDCoMKgwqDCoMKgwqDCoMKgICovCj4gPiDCoMKgwqDCoMKgwqDCoMKg QlVJTERfQlVHX09OKFhFX1VDX0ZJUk1XQVJFX1VOSU5JVElBTElaRUQpOwo+ID4gLcKgwqDCoMKg wqDCoMKgWEVfQlVHX09OKHVjX2Z3LT5zdGF0dXMpOwo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVH X09OKHVjX2Z3LT5wYXRoKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTih1Y19mdy0+c3RhdHVz KTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTih1Y19mdy0+cGF0aCk7Cj4gPiDCoAo+ID4gwqDC oMKgwqDCoMKgwqDCoHVjX2Z3X2F1dG9fc2VsZWN0KHhlLCB1Y19mdyk7Cj4gPiDCoMKgwqDCoMKg wqDCoMKgeGVfdWNfZndfY2hhbmdlX3N0YXR1cyh1Y19mdywgdWNfZnctPnBhdGggPyAqdWNfZnct PnBhdGggPwo+ID4gQEAgLTQxOCw3ICs0MTgsNyBAQCBpbnQgeGVfdWNfZndfdXBsb2FkKHN0cnVj dCB4ZV91Y19mdyAqdWNfZncsIHUzMgo+ID4gb2Zmc2V0LCB1MzIgZG1hX2ZsYWdzKQo+ID4gwqDC oMKgwqDCoMKgwqDCoGludCBlcnI7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIG1ha2Ug c3VyZSB0aGUgc3RhdHVzIHdhcyBjbGVhcmVkIHRoZSBsYXN0IHRpbWUgd2UgcmVzZXQKPiA+IHRo ZSB1YyAqLwo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKHhlX3VjX2Z3X2lzX2xvYWRlZCh1 Y19mdykpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKHhlX3VjX2Z3X2lzX2xvYWRlZCh1Y19m dykpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoIXhlX3VjX2Z3X2lzX2xvYWRhYmxl KHVjX2Z3KSkKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FTk9F WEVDOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV91Y19mdy5oCj4gPiBi L2RyaXZlcnMvZ3B1L2RybS94ZS94ZV91Y19mdy5oCj4gPiBpbmRleCBiZjMxYzNiYjBlMGYuLjIy MjFmNWZkM2Y1NCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV91Y19mdy5o Cj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfdWNfZncuaAo+ID4gQEAgLTEwNCw3ICsx MDQsNyBAQCBzdGF0aWMgaW5saW5lIGVudW0geGVfdWNfZndfc3RhdHVzCj4gPiDCoF9feGVfdWNf Zndfc3RhdHVzKHN0cnVjdCB4ZV91Y19mdyAqdWNfZncpCj4gPiDCoHsKPiA+IMKgwqDCoMKgwqDC oMKgwqAvKiBzaG91bGRuJ3QgY2FsbCB0aGlzIGJlZm9yZSBjaGVja2luZyBody9ibG9iIGF2YWls YWJpbGl0eQo+ID4gKi8KPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTih1Y19mdy0+c3RhdHVz ID09IFhFX1VDX0ZJUk1XQVJFX1VOSU5JVElBTElaRUQpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVH X09OKHVjX2Z3LT5zdGF0dXMgPT0gWEVfVUNfRklSTVdBUkVfVU5JTklUSUFMSVpFRCk7Cj4gPiDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIHVjX2Z3LT5zdGF0dXM7Cj4gPiDCoH0KPiA+IMKgCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3ZtLmMKPiA+IGIvZHJpdmVycy9ncHUv ZHJtL3hlL3hlX3ZtLmMKPiA+IGluZGV4IGZiNmI1NjMzNzhlYS4uYzcyNDczNDhiNWQ2IDEwMDY0 NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3ZtLmMKPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS94ZS94ZV92bS5jCj4gPiBAQCAtNjIsNyArNjIsNyBAQCBpbnQgeGVfdm1hX3VzZXJw dHJfcGluX3BhZ2VzKHN0cnVjdCB4ZV92bWEgKnZtYSkKPiA+IMKgwqDCoMKgwqDCoMKgwqBib29s IHJlYWRfb25seSA9IHZtYS0+cHRlX2ZsYWdzICYgUFRFX1JFQURfT05MWTsKPiA+IMKgCj4gPiDC oMKgwqDCoMKgwqDCoMKgbG9ja2RlcF9hc3NlcnRfaGVsZCgmdm0tPmxvY2spOwo+ID4gLcKgwqDC oMKgwqDCoMKgWEVfQlVHX09OKCF4ZV92bWFfaXNfdXNlcnB0cih2bWEpKTsKPiA+ICvCoMKgwqDC oMKgwqDCoEJVR19PTigheGVfdm1hX2lzX3VzZXJwdHIodm1hKSk7Cj4gPiDCoHJldHJ5Ogo+ID4g wqDCoMKgwqDCoMKgwqDCoGlmICh2bWEtPmRlc3Ryb3llZCkKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gPiBAQCAtMjQ4LDcgKzI0OCw3IEBAIHN0YXRpYyB2 b2lkIGFybV9wcmVlbXB0X2ZlbmNlcyhzdHJ1Y3QgeGVfdm0KPiA+ICp2bSwgc3RydWN0IGxpc3Rf aGVhZCAqbGlzdCkKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRt YV9mZW5jZSAqZmVuY2U7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBsaW5rID0gbGlzdC0+bmV4dDsKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBY RV9CVUdfT04obGluayA9PSBsaXN0KTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBCVUdfT04obGluayA9PSBsaXN0KTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGZlbmNlID0KPiA+IHhlX3ByZWVtcHRfZmVuY2VfYXJtKHRvX3ByZWVtcHRfZmVu Y2VfZnJvbV9saW5rKGxpbmspLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBl LCBlLT5jb21wdXRlLmNvbnRleHQsCj4gPiBAQCAtMzI1LDcgKzMyNSw3IEBAIGludCB4ZV92bV9h ZGRfY29tcHV0ZV9lbmdpbmUoc3RydWN0IHhlX3ZtICp2bSwKPiA+IHN0cnVjdCB4ZV9lbmdpbmUg KmUpCj4gPiDCoMKgwqDCoMKgwqDCoMKgaW50IGVycjsKPiA+IMKgwqDCoMKgwqDCoMKgwqBib29s IHdhaXQ7Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKCF4ZV92bV9pbl9jb21w dXRlX21vZGUodm0pKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTigheGVfdm1faW5fY29tcHV0 ZV9tb2RlKHZtKSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGRvd25fd3JpdGUoJnZtLT5s b2NrKTsKPiA+IMKgCj4gPiBAQCAtNTIzLDcgKzUyMyw3IEBAIHN0YXRpYyB2b2lkIHByZWVtcHRf cmViaW5kX3dvcmtfZnVuYyhzdHJ1Y3QKPiA+IHdvcmtfc3RydWN0ICp3KQo+ID4gwqDCoMKgwqDC oMKgwqDCoGxvbmcgd2FpdDsKPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgX19tYXliZV91bnVzZWQg dHJpZXMgPSAwOwo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTigheGVfdm1faW5f Y29tcHV0ZV9tb2RlKHZtKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oIXhlX3ZtX2luX2Nv bXB1dGVfbW9kZSh2bSkpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoHRyYWNlX3hlX3ZtX3JlYmluZF93 b3JrZXJfZW50ZXIodm0pOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoeGVfdm1faXNf Y2xvc2VkKHZtKSkgewo+ID4gQEAgLTY2MCw3ICs2NjAsNyBAQCBzdGF0aWMgYm9vbCB2bWFfdXNl cnB0cl9pbnZhbGlkYXRlKHN0cnVjdAo+ID4gbW11X2ludGVydmFsX25vdGlmaWVyICptbmksCj4g PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7Cj4gPiDCoMKgwqDCoMKg wqDCoMKgbG9uZyBlcnI7Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKCF4ZV92 bWFfaXNfdXNlcnB0cih2bWEpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTigheGVfdm1hX2lz X3VzZXJwdHIodm1hKSk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgdHJhY2VfeGVfdm1hX3VzZXJwdHJf aW52YWxpZGF0ZSh2bWEpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoIW1tdV9ub3Rp Zmllcl9yYW5nZV9ibG9ja2FibGUocmFuZ2UpKQo+ID4gQEAgLTgyNCw4ICs4MjQsOCBAQCBzdGF0 aWMgc3RydWN0IHhlX3ZtYSAqeGVfdm1hX2NyZWF0ZShzdHJ1Y3QKPiA+IHhlX3ZtICp2bSwKPiA+ IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZ3QgKmd0Owo+ID4gwqDCoMKgwqDCoMKgwqDCoHU4 IGlkOwo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTihzdGFydCA+PSBlbmQpOwo+ ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKGVuZCA+PSB2bS0+c2l6ZSk7Cj4gPiArwqDCoMKg wqDCoMKgwqBCVUdfT04oc3RhcnQgPj0gZW5kKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTihl bmQgPj0gdm0tPnNpemUpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqB2bWEgPSBremFsbG9j KHNpemVvZigqdm1hKSwgR0ZQX0tFUk5FTCk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCF2bWEp IHsKPiA+IEBAIC05NDUsNyArOTQ1LDcgQEAgc3RhdGljIHZvaWQgeGVfdm1hX2Rlc3Ryb3koc3Ry dWN0IHhlX3ZtYSAqdm1hLAo+ID4gc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4gPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IHhlX3ZtICp2bSA9IHZtYS0+dm07Cj4gPiDCoAo+ID4gwqDCoMKgwqDC oMKgwqDCoGxvY2tkZXBfYXNzZXJ0X2hlbGRfd3JpdGUoJnZtLT5sb2NrKTsKPiA+IC3CoMKgwqDC oMKgwqDCoFhFX0JVR19PTighbGlzdF9lbXB0eSgmdm1hLT51bmJpbmRfbGluaykpOwo+ID4gK8Kg wqDCoMKgwqDCoMKgQlVHX09OKCFsaXN0X2VtcHR5KCZ2bWEtPnVuYmluZF9saW5rKSk7Cj4gPiDC oAo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmICh4ZV92bWFfaXNfdXNlcnB0cih2bWEpKSB7Cj4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFdBUk5fT04oIXZtYS0+ZGVzdHJveWVkKTsK PiA+IEBAIC0xMDQ4LDcgKzEwNDgsNyBAQCB4ZV92bV9maW5kX292ZXJsYXBwaW5nX3ZtYShzdHJ1 Y3QgeGVfdm0gKnZtLAo+ID4gY29uc3Qgc3RydWN0IHhlX3ZtYSAqdm1hKQo+ID4gwqDCoMKgwqDC oMKgwqDCoGlmICh4ZV92bV9pc19jbG9zZWQodm0pKQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gTlVMTDsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdf T04odm1hLT5lbmQgPj0gdm0tPnNpemUpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKHZtYS0+ ZW5kID49IHZtLT5zaXplKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBsb2NrZGVwX2Fzc2VydF9oZWxk KCZ2bS0+bG9jayk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoG5vZGUgPSByYl9maW5kKHZt YSwgJnZtLT52bWFzLCB4ZV92bWFfY21wX3ZtYV9jYik7Cj4gPiBAQCAtMTA1OCw3ICsxMDU4LDcg QEAgeGVfdm1fZmluZF9vdmVybGFwcGluZ192bWEoc3RydWN0IHhlX3ZtICp2bSwKPiA+IGNvbnN0 IHN0cnVjdCB4ZV92bWEgKnZtYSkKPiA+IMKgCj4gPiDCoHN0YXRpYyB2b2lkIHhlX3ZtX2luc2Vy dF92bWEoc3RydWN0IHhlX3ZtICp2bSwgc3RydWN0IHhlX3ZtYSAqdm1hKQo+ID4gwqB7Cj4gPiAt wqDCoMKgwqDCoMKgwqBYRV9CVUdfT04odm1hLT52bSAhPSB2bSk7Cj4gPiArwqDCoMKgwqDCoMKg wqBCVUdfT04odm1hLT52bSAhPSB2bSk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgbG9ja2RlcF9hc3Nl cnRfaGVsZCgmdm0tPmxvY2spOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqByYl9hZGQoJnZt YS0+dm1fbm9kZSwgJnZtLT52bWFzLCB4ZV92bWFfbGVzc19jYik7Cj4gPiBAQCAtMTA2Niw3ICsx MDY2LDcgQEAgc3RhdGljIHZvaWQgeGVfdm1faW5zZXJ0X3ZtYShzdHJ1Y3QgeGVfdm0KPiA+ICp2 bSwgc3RydWN0IHhlX3ZtYSAqdm1hKQo+ID4gwqAKPiA+IMKgc3RhdGljIHZvaWQgeGVfdm1fcmVt b3ZlX3ZtYShzdHJ1Y3QgeGVfdm0gKnZtLCBzdHJ1Y3QgeGVfdm1hICp2bWEpCj4gPiDCoHsKPiA+ IC3CoMKgwqDCoMKgwqDCoFhFX0JVR19PTih2bWEtPnZtICE9IHZtKTsKPiA+ICvCoMKgwqDCoMKg wqDCoEJVR19PTih2bWEtPnZtICE9IHZtKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBsb2NrZGVwX2Fz c2VydF9oZWxkKCZ2bS0+bG9jayk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoHJiX2VyYXNl KCZ2bWEtPnZtX25vZGUsICZ2bS0+dm1hcyk7Cj4gPiBAQCAtMTI5MCw3ICsxMjkwLDcgQEAgdm9p ZCB4ZV92bV9jbG9zZV9hbmRfcHV0KHN0cnVjdCB4ZV92bSAqdm0pCj4gPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IHhlX2d0ICpndDsKPiA+IMKgwqDCoMKgwqDCoMKgwqB1OCBpZDsKPiA+IMKgCj4g PiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04odm0tPnByZWVtcHQubnVtX2VuZ2luZXMpOwo+ID4g K8KgwqDCoMKgwqDCoMKgQlVHX09OKHZtLT5wcmVlbXB0Lm51bV9lbmdpbmVzKTsKPiA+IMKgCj4g PiDCoMKgwqDCoMKgwqDCoMKgdm0tPnNpemUgPSAwOwo+ID4gwqDCoMKgwqDCoMKgwqDCoHNtcF9t YigpOwo+ID4gQEAgLTE0NDgsNyArMTQ0OCw3IEBAIHN0cnVjdCB4ZV92bSAqeGVfdm1fbG9va3Vw KHN0cnVjdCB4ZV9maWxlCj4gPiAqeGVmLCB1MzIgaWQpCj4gPiDCoAo+ID4gwqB1NjQgeGVfdm1f cGRwNF9kZXNjcmlwdG9yKHN0cnVjdCB4ZV92bSAqdm0sIHN0cnVjdCB4ZV9ndCAqZnVsbF9ndCkK PiA+IMKgewo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKHhlX2d0X2lzX21lZGlhX3R5cGUo ZnVsbF9ndCkpOwo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKHhlX2d0X2lzX21lZGlhX3R5cGUo ZnVsbF9ndCkpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZ2VuOF9wZGVfZW5j b2RlKHZtLT5wdF9yb290W2Z1bGxfZ3QtPmluZm8uaWRdLT5ibywKPiA+IDAsCj4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgWEVf Q0FDSEVfV0IpOwo+ID4gQEAgLTE0ODEsNyArMTQ4MSw3IEBAIHhlX3ZtX3VuYmluZF92bWEoc3Ry dWN0IHhlX3ZtYSAqdm1hLCBzdHJ1Y3QKPiA+IHhlX2VuZ2luZSAqZSwKPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCEodm1hLT5ndF9wcmVzZW50ICYgQklUKGlkKSkpCj4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG5l eHQ7Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFhFX0JVR19PTih4 ZV9ndF9pc19tZWRpYV90eXBlKGd0KSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgQlVHX09OKHhlX2d0X2lzX21lZGlhX3R5cGUoZ3QpKTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZlbmNlID0gX194ZV9wdF91bmJpbmRfdm1hKGd0LCB2bWEs IGUsIHN5bmNzLAo+ID4gbnVtX3N5bmNzKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKElTX0VSUihmZW5jZSkpIHsKPiA+IEBAIC0xNTUzLDcgKzE1NTMsNyBAQCB4ZV92 bV9iaW5kX3ZtYShzdHJ1Y3QgeGVfdm1hICp2bWEsIHN0cnVjdAo+ID4geGVfZW5naW5lICplLAo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoISh2bWEtPmd0X21hc2sgJiBC SVQoaWQpKSkKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGdvdG8gbmV4dDsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg WEVfQlVHX09OKHhlX2d0X2lzX21lZGlhX3R5cGUoZ3QpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBCVUdfT04oeGVfZ3RfaXNfbWVkaWFfdHlwZShndCkpOwo+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmZW5jZSA9IF9feGVfcHRfYmluZF92bWEoZ3QsIHZt YSwgZSwgc3luY3MsCj4gPiBudW1fc3luY3MsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2 bWEtPmd0X3ByZXNlbnQgJgo+ID4gQklUKGlkKSk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmIChJU19FUlIoZmVuY2UpKSB7Cj4gPiBAQCAtMTY2OSw3ICsxNjY5LDcgQEAg aW50IHhlX3ZtX2FzeW5jX2ZlbmNlX3dhaXRfc3RhcnQoc3RydWN0Cj4gPiBkbWFfZmVuY2UgKmZl bmNlKQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYXN5bmNfb3Bf ZmVuY2UgKmFmZW5jZSA9Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBjb250YWluZXJfb2YoZmVuY2UsIHN0cnVjdCBhc3luY19vcF9mZW5jZSwKPiA+ IGZlbmNlKTsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgWEVfQlVH X09OKHhlX3ZtX25vX2RtYV9mZW5jZXMoYWZlbmNlLT52bSkpOwo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoEJVR19PTih4ZV92bV9ub19kbWFfZmVuY2VzKGFmZW5jZS0+dm0pKTsK PiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNtcF9ybWIoKTsKPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHdhaXRfZXZlbnRfaW50ZXJy dXB0aWJsZShhZmVuY2UtPndxLCBhZmVuY2UtCj4gPiA+c3RhcnRlZCk7Cj4gPiBAQCAtMTk1MCw3 ICsxOTUwLDcgQEAgc3RhdGljIGludCB4ZV92bV9wcmVmZXRjaChzdHJ1Y3QgeGVfdm0gKnZtLAo+ ID4gc3RydWN0IHhlX3ZtYSAqdm1hLAo+ID4gwqB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaW50IGVy cjsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04ocmVnaW9uID4gQVJSQVlfU0la RShyZWdpb25fdG9fbWVtX3R5cGUpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTihyZWdpb24g PiBBUlJBWV9TSVpFKHJlZ2lvbl90b19tZW1fdHlwZSkpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDC oMKgwqBpZiAoIXhlX3ZtYV9pc191c2VycHRyKHZtYSkpIHsKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZXJyID0geGVfYm9fbWlncmF0ZSh2bWEtPmJvLAo+ID4gcmVnaW9uX3Rv X21lbV90eXBlW3JlZ2lvbl0pOwo+ID4gQEAgLTE5OTQsNyArMTk5NCw3IEBAIHN0YXRpYyBpbnQg X192bV9iaW5kX2lvY3RsKHN0cnVjdCB4ZV92bSAqdm0sCj4gPiBzdHJ1Y3QgeGVfdm1hICp2bWEs Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhZmVuY2UpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBicmVhazsKPiA+IMKgwqDCoMKgwqDCoMKgwqBkZWZhdWx0Ogo+ID4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFhFX0JVR19PTigiTk9UIFBPU1NJQkxFIik7Cj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQlVHX09OKCJOT1QgUE9TU0lCTEUiKTsKPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gPiDCoMKg wqDCoMKgwqDCoMKgfQo+ID4gwqB9Cj4gPiBAQCAtMjA0MCw3ICsyMDQwLDcgQEAgc3RhdGljIGlu dCB2bV9iaW5kX2lvY3RsKHN0cnVjdCB4ZV92bSAqdm0sCj4gPiBzdHJ1Y3QgeGVfdm1hICp2bWEs Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaW50IGVyciwgaTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDC oMKgbG9ja2RlcF9hc3NlcnRfaGVsZCgmdm0tPmxvY2spOwo+ID4gLcKgwqDCoMKgwqDCoMKgWEVf QlVHX09OKCFsaXN0X2VtcHR5KCZ2bWEtPnVuYmluZF9saW5rKSk7Cj4gPiArwqDCoMKgwqDCoMKg wqBCVUdfT04oIWxpc3RfZW1wdHkoJnZtYS0+dW5iaW5kX2xpbmspKTsKPiA+IMKgCj4gPiDCoMKg wqDCoMKgwqDCoMKgLyogQmluZHMgZGVmZXJyZWQgdG8gZmF1bHRzLCBzaWduYWwgZmVuY2VzIG5v dyAqLwo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmICh4ZV92bV9pbl9mYXVsdF9tb2RlKHZtKSAmJiBp c19tYXBfb3AoYmluZF9vcC0+b3ApICYmCj4gPiBAQCAtMjE5MCw3ICsyMTkwLDcgQEAgc3RhdGlj IHZvaWQgYXN5bmNfb3Bfd29ya19mdW5jKHN0cnVjdAo+ID4gd29ya19zdHJ1Y3QgKncpCj4gPiDC oAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzcGluX2xvY2tfaXJxKCZ2bS0KPiA+ID5hc3lu Y19vcHMubG9jayk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG9wID0gbmV4dF9hc3luY19v cCh2bSk7Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKCFvcCk7Cj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgQlVHX09OKCFvcCk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGxpc3RfZGVsX2luaXQoJm9wLT5saW5rKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3Bp bl91bmxvY2tfaXJxKCZ2bS0KPiA+ID5hc3luY19vcHMubG9jayk7Cj4gPiDCoAo+ID4gQEAgLTIz MzIsNyArMjMzMiw3IEBAIHN0YXRpYyBpbnQgdm1fYmluZF9pb2N0bF9hc3luYyhzdHJ1Y3QgeGVf dm0KPiA+ICp2bSwgc3RydWN0IHhlX3ZtYSAqdm1hLAo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIHJl ZiBjb3VudCBvbiBlYWNoIHJlYmluZC4KPiA+IMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+IMKgCj4g PiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oVk1fQklORF9PUChiaW5kX29wLT5vcCkgIT0gWEVf Vk1fQklORF9PUF9VTk1BUCAmJgo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKFZNX0JJTkRfT1Ao YmluZF9vcC0+b3ApICE9IFhFX1ZNX0JJTkRfT1BfVU5NQVAgJiYKPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgVk1fQklORF9PUChiaW5kX29wLT5vcCkgIT0KPiA+IFhFX1ZN X0JJTkRfT1BfVU5NQVBfQUxMICYmCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIFZNX0JJTkRfT1AoYmluZF9vcC0+b3ApICE9Cj4gPiBYRV9WTV9CSU5EX09QX1BSRUZFVENI KTsKPiA+IMKgCj4gPiBAQCAtMjUxMSw3ICsyNTExLDcgQEAgc3RhdGljIGludCBfX3ZtX2JpbmRf aW9jdGxfbG9va3VwX3ZtYShzdHJ1Y3QKPiA+IHhlX3ZtICp2bSwgc3RydWN0IHhlX2JvICpibywK PiA+IMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhFX1ZNX0JJTkRfT1BfVU5NQVBfQUxMOgo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+IMKgwqDCoMKgwqDCoMKgwqBk ZWZhdWx0Ogo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFhFX0JVR19PTigiTk9U IFBPU1NJQkxFIik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQlVHX09OKCJO T1QgUE9TU0lCTEUiKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IC1FSU5WQUw7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gwqAKPiA+IEBAIC0yNTU3LDcgKzI1 NTcsNyBAQCBzdGF0aWMgc3RydWN0IHhlX3ZtYQo+ID4gKnZtX3VuYmluZF9sb29rdXBfdm1hcyhz dHJ1Y3QgeGVfdm0gKnZtLAo+ID4gwqDCoMKgwqDCoMKgwqDCoGJvb2wgZmlyc3RfbXVubWFwX3Jl YmluZCA9IGZhbHNlOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBsb2NrZGVwX2Fzc2VydF9o ZWxkKCZ2bS0+bG9jayk7Cj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIXZtYSk7Cj4gPiAr wqDCoMKgwqDCoMKgwqBCVUdfT04oIXZtYSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoG5v ZGUgPSAmdm1hLT52bV9ub2RlOwo+ID4gwqDCoMKgwqDCoMKgwqDCoHdoaWxlICgobm9kZSA9IHJi X25leHQobm9kZSkpKSB7Cj4gPiBAQCAtMjc3NCw3ICsyNzc0LDcgQEAgc3RhdGljIHN0cnVjdCB4 ZV92bWEKPiA+ICp2bV9iaW5kX2lvY3RsX2xvb2t1cF92bWEoc3RydWN0IHhlX3ZtICp2bSwKPiA+ IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3dpdGNoIChWTV9CSU5EX09QKG9wKSkgewo+ID4gwqDC oMKgwqDCoMKgwqDCoGNhc2UgWEVfVk1fQklORF9PUF9NQVA6Cj4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKCFibyk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgQlVHX09OKCFibyk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBlcnIgPSB4ZV9ib19sb2NrKGJvLCAmd3csIDAsIHRydWUpOwo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZXJyKQo+ID4gQEAgLTI4MDYsNyArMjgwNiw3IEBA IHN0YXRpYyBzdHJ1Y3QgeGVfdm1hCj4gPiAqdm1fYmluZF9pb2N0bF9sb29rdXBfdm1hKHN0cnVj dCB4ZV92bSAqdm0sCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZtYSA9IHZt X3ByZWZldGNoX2xvb2t1cF92bWFzKHZtLCAmbG9va3VwLCByZWdpb24pOwo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+IMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhF X1ZNX0JJTkRfT1BfVU5NQVBfQUxMOgo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oFhFX0JVR19PTighYm8pOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJVR19P TighYm8pOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0g eGVfYm9fbG9jayhibywgJnd3LCAwLCB0cnVlKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKGVycikKPiA+IEBAIC0yODE3LDcgKzI4MTcsNyBAQCBzdGF0aWMgc3RydWN0 IHhlX3ZtYQo+ID4gKnZtX2JpbmRfaW9jdGxfbG9va3VwX3ZtYShzdHJ1Y3QgeGVfdm0gKnZtLAo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2soYm8sICZ3dyk7 Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gwqDCoMKgwqDC oMKgwqDCoGNhc2UgWEVfVk1fQklORF9PUF9NQVBfVVNFUlBUUjoKPiA+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oYm8pOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoEJVR19PTihibyk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB2bWEgPSB4ZV92bWFfY3JlYXRlKHZtLCBOVUxMLCBib19vZmZzZXRfb3JfdXNlcnB0 ciwKPiA+IGFkZHIsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFkZHIgKyByYW5nZSAtIDEsCj4gPiBAQCAt MjgzNyw3ICsyODM3LDcgQEAgc3RhdGljIHN0cnVjdCB4ZV92bWEKPiA+ICp2bV9iaW5kX2lvY3Rs X2xvb2t1cF92bWEoc3RydWN0IHhlX3ZtICp2bSwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ IMKgwqDCoMKgwqDCoMKgwqBkZWZhdWx0Ogo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoFhFX0JVR19PTigiTk9UIFBPU1NJQkxFIik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgQlVHX09OKCJOT1QgUE9TU0lCTEUiKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgdm1hID0gRVJSX1BUUigtRUlOVkFMKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqB9 Cj4gPiDCoAo+ID4gQEAgLTMyMTMsNyArMzIxMyw3IEBAIGludCB4ZV92bV9iaW5kX2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAoZXJyKQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB9IGVsc2Ugewo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBYRV9CVUdfT04oaiAhPSAwKTvCoMKgwqDCoMKgwqAvKiBOb3Qgc3VwcG9ydGVkICov Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJVR19P TihqICE9IDApO8KgLyogTm90IHN1cHBvcnRlZCAqLwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0gdm1fYmluZF9pb2N0bCh2bSwgdm1hc1tq XSwgZSwgYm9zW2pdLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYmluZF9vcHMg KyBqLCBfX3N5bmNzLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19udW1fc3lu Y3MsIE5VTEwpOwo+ID4gQEAgLTMyOTUsNyArMzI5NSw3IEBAIGludCB4ZV92bV9sb2NrKHN0cnVj dCB4ZV92bSAqdm0sIHN0cnVjdAo+ID4gd3dfYWNxdWlyZV9jdHggKnd3LAo+ID4gwqDCoMKgwqDC oMKgwqDCoExJU1RfSEVBRChvYmpzKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBMSVNUX0hFQUQoZHVw cyk7Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKCF3dyk7Cj4gPiArwqDCoMKg wqDCoMKgwqBCVUdfT04oIXd3KTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgdHZfdm0ubnVt X3NoYXJlZCA9IG51bV9yZXN2Owo+ID4gwqDCoMKgwqDCoMKgwqDCoHR2X3ZtLmJvID0geGVfdm1f dHRtX2JvKHZtKTs7Cj4gPiBAQCAtMzMyOSw3ICszMzI5LDcgQEAgaW50IHhlX3ZtX2ludmFsaWRh dGVfdm1hKHN0cnVjdCB4ZV92bWEgKnZtYSkKPiA+IMKgwqDCoMKgwqDCoMKgwqB1OCBpZDsKPiA+ IMKgwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoFhFX0JV R19PTigheGVfdm1faW5fZmF1bHRfbW9kZSh2bWEtPnZtKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBC VUdfT04oIXhlX3ZtX2luX2ZhdWx0X21vZGUodm1hLT52bSkpOwo+ID4gwqDCoMKgwqDCoMKgwqDC oHRyYWNlX3hlX3ZtYV91c21faW52YWxpZGF0ZSh2bWEpOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDC oMKgwqAvKiBDaGVjayB0aGF0IHdlIGRvbid0IHJhY2Ugd2l0aCBwYWdlLXRhYmxlIHVwZGF0ZXMg Ki8KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfd2FpdF91c2VyX2ZlbmNl LmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3dhaXRfdXNlcl9mZW5jZS5jCj4gPiBpbmRl eCAxNWMyZTVhYTA4ZDIuLmY4NWRlYmU1OTlkZiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS94ZS94ZV93YWl0X3VzZXJfZmVuY2UuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hl L3hlX3dhaXRfdXNlcl9mZW5jZS5jCj4gPiBAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgaW50IGRv X2NvbXBhcmUodTY0IGFkZHIsIHU2NCB2YWx1ZSwgdTY0Cj4gPiBtYXNrLCB1MTYgb3ApCj4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBhc3NlZCA9IChydmFsdWUgJiBtYXNrKSA8 PSAodmFsdWUgJiBtYXNrKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJl YWs7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgZGVmYXVsdDoKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBYRV9CVUdfT04oIk5vdCBwb3NzaWJsZSIpOwo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoEJVR19PTigiTm90IHBvc3NpYmxlIik7Cj4gPiDCoMKgwqDCoMKgwqDC oMKgfQo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcGFzc2VkID8gMCA6IDE7Cj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3dvcGNtLmMKPiA+IGIvZHJpdmVy cy9ncHUvZHJtL3hlL3hlX3dvcGNtLmMKPiA+IGluZGV4IGM4Y2MzZjVlNjE1NC4uNTNiZTBjOWZj Mzc0IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3dvcGNtLmMKPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV93b3BjbS5jCj4gPiBAQCAtMTQ2LDEwICsxNDYsMTAg QEAgc3RhdGljIGludCBfX3dvcGNtX2luaXRfcmVncyhzdHJ1Y3QgeGVfZGV2aWNlCj4gPiAqeGUs IHN0cnVjdCB4ZV9ndCAqZ3QsCj4gPiDCoMKgwqDCoMKgwqDCoMKgdTMyIG1hc2s7Cj4gPiDCoMKg wqDCoMKgwqDCoMKgaW50IGVycjsKPiA+IMKgCj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04o IShiYXNlICYgR1VDX1dPUENNX09GRlNFVF9NQVNLKSk7Cj4gPiAtwqDCoMKgwqDCoMKgwqBYRV9C VUdfT04oYmFzZSAmIH5HVUNfV09QQ01fT0ZGU0VUX01BU0spOwo+ID4gLcKgwqDCoMKgwqDCoMKg WEVfQlVHX09OKCEoc2l6ZSAmIEdVQ19XT1BDTV9TSVpFX01BU0spKTsKPiA+IC3CoMKgwqDCoMKg wqDCoFhFX0JVR19PTihzaXplICYgfkdVQ19XT1BDTV9TSVpFX01BU0spOwo+ID4gK8KgwqDCoMKg wqDCoMKgQlVHX09OKCEoYmFzZSAmIEdVQ19XT1BDTV9PRkZTRVRfTUFTSykpOwo+ID4gK8KgwqDC oMKgwqDCoMKgQlVHX09OKGJhc2UgJiB+R1VDX1dPUENNX09GRlNFVF9NQVNLKTsKPiA+ICvCoMKg wqDCoMKgwqDCoEJVR19PTighKHNpemUgJiBHVUNfV09QQ01fU0laRV9NQVNLKSk7Cj4gPiArwqDC oMKgwqDCoMKgwqBCVUdfT04oc2l6ZSAmIH5HVUNfV09QQ01fU0laRV9NQVNLKTsKPiA+IMKgCj4g PiDCoMKgwqDCoMKgwqDCoMKgbWFzayA9IEdVQ19XT1BDTV9TSVpFX01BU0sgfCBHVUNfV09QQ01f U0laRV9MT0NLRUQ7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgZXJyID0geGVfbW1pb193cml0ZTMyX2Fu ZF92ZXJpZnkoZ3QsIEdVQ19XT1BDTV9TSVpFLnJlZywKPiA+IHNpemUsIG1hc2ssCj4gPiBAQCAt MjE1LDkgKzIxNSw5IEBAIGludCB4ZV93b3BjbV9pbml0KHN0cnVjdCB4ZV93b3BjbSAqd29wY20p Cj4gPiDCoMKgwqDCoMKgwqDCoMKgZHJtX2RiZygmeGUtPmRybSwgIldPUENNOiAldUtcbiIsIHdv cGNtLT5zaXplIC8gU1pfMUspOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqB4ZV9mb3JjZV93 YWtlX2Fzc2VydF9oZWxkKGd0X3RvX2Z3KGd0KSwgWEVfRldfR1QpOwo+ID4gLcKgwqDCoMKgwqDC oMKgWEVfQlVHX09OKGd1Y19md19zaXplID49IHdvcGNtLT5zaXplKTsKPiA+IC3CoMKgwqDCoMKg wqDCoFhFX0JVR19PTihodWNfZndfc2l6ZSA+PSB3b3BjbS0+c2l6ZSk7Cj4gPiAtwqDCoMKgwqDC oMKgwqBYRV9CVUdfT04oY3R4X3JzdmQgKyBXT1BDTV9SRVNFUlZFRF9TSVpFID49IHdvcGNtLT5z aXplKTsKPiA+ICvCoMKgwqDCoMKgwqDCoEJVR19PTihndWNfZndfc2l6ZSA+PSB3b3BjbS0+c2l6 ZSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBCVUdfT04oaHVjX2Z3X3NpemUgPj0gd29wY20tPnNpemUp Owo+ID4gK8KgwqDCoMKgwqDCoMKgQlVHX09OKGN0eF9yc3ZkICsgV09QQ01fUkVTRVJWRURfU0la RSA+PSB3b3BjbS0+c2l6ZSk7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGxvY2tlZCA9IF9f d29wY21fcmVnc19sb2NrZWQoZ3QsICZndWNfd29wY21fYmFzZSwKPiA+ICZndWNfd29wY21fc2l6 ZSk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGxvY2tlZCkgewo+ID4gQEAgLTI1OCw4ICsyNTgs OCBAQCBpbnQgeGVfd29wY21faW5pdChzdHJ1Y3QgeGVfd29wY20gKndvcGNtKQo+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBndWNfZndfc2l6 ZSwgaHVjX2Z3X3NpemUpKSB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdv cGNtLT5ndWMuYmFzZSA9IGd1Y193b3BjbV9iYXNlOwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB3b3BjbS0+Z3VjLnNpemUgPSBndWNfd29wY21fc2l6ZTsKPiA+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBYRV9CVUdfT04oIXdvcGNtLT5ndWMuYmFzZSk7Cj4gPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgWEVfQlVHX09OKCF3b3BjbS0+Z3VjLnNpemUp Owo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJVR19PTighd29wY20tPmd1Yy5i YXNlKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCVUdfT04oIXdvcGNtLT5n dWMuc2l6ZSk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsKPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZHJtX25vdGljZSgmeGUtPmRybSwgIlVuc3VjY2Vzc2Z1bCBXT1BD TQo+ID4gcGFydGl0aW9uaW5nXG4iKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIC1FMkJJRzsKPiA+IC0tIAo+ID4gMi4zOS4yCj4gPiAKPiAKCg==