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 aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4337AC433EF for ; Thu, 31 Mar 2022 00:24:58 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web10.1400.1648686296728036168 for ; Wed, 30 Mar 2022 17:24:57 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=bllVZuiG; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: anuj.mittal@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1648686296; x=1680222296; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=0ix4RIWAVPAH4EyuQmn77sPPzh/LM2KTBbqepkSGVTU=; b=bllVZuiGNMmkAmnXyG316jza8OYLIoGmU9aJHG7vcOWCph0xzOXxfQnv 6eYX+rZTzMJHRowvTjPqDcxsAa+SGGf91fXAQnXzQO8NFmShYmbTu27LL qNdjQ5yJyom7EXzQGoe2pp13CgwKmzd/CHqc6HJD7KipZKXY6SQiElFXB HIJLOZg9drHSF05RIEKCPwB7yrrHStLa7TpThgx2/nN8K04dxLVJaReFJ bFsDTWsp4rhZoO7C2okrswnahtwozGJpJRTUoYG6hfHujzFAesvTS9X5+ h+N0/dju1ZJxrc98Eyb6Zs3udQp36zb/+n0o1J9UyRtDP9LdhTcoISsnS g==; X-IronPort-AV: E=McAfee;i="6200,9189,10302"; a="259390462" X-IronPort-AV: E=Sophos;i="5.90,223,1643702400"; d="scan'208";a="259390462" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Mar 2022 17:24:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,223,1643702400"; d="scan'208";a="547066439" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by orsmga007.jf.intel.com with ESMTP; 30 Mar 2022 17:24:54 -0700 Received: from fmsmsx606.amr.corp.intel.com (10.18.126.86) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Wed, 30 Mar 2022 17:24:54 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Wed, 30 Mar 2022 17:24:54 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.106) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Wed, 30 Mar 2022 17:24:53 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LzPmqE9GXlNHd1m09SlzqOHrYpV2XnP9tFaEY2a66tGVCGv/X42LPSRJ1a0tN1PiB3z3xVlGkUcrHuDtlXtOyyGG46LF/h+fM50/QdJTImUuqTY1b5EqJXDLUX5mtuJrNCz/9v2t3oMMgwZYJMPOMgIwLAhrLGwN0MT5ZYvDyYq5AVa1iMLmIRkyjHx7TYdiUB1mmQnM6dZL+lZ4GXO8bwYnMgQtYve46wLoaNXG7aOTyXKGoBpdh5jt2Tcr+OoyW/6ySVxVwyzaGBoiEN+LLCAfFfkGEXQCNWN3x6vtyOIxaUDPfsRDVrJaicgKhIWNBlgx96ZiJ/KusvnEN9MvEg== 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=0ix4RIWAVPAH4EyuQmn77sPPzh/LM2KTBbqepkSGVTU=; b=PnxDqCIxtt6qQeUTyTpGVlsYkDOxmiB2yxMdaRXaFqlBbqZauEiTlAzbAZQXBRRXOmFT7OPc9TEMHc7RA/EMEVrgbg7/a2hMtamdVn02KK5kAJ5wATL1MjC6OTi/joFvCL9pR8Nnfjg9wU9e4VQJJBzw6YRNgxlEZ5FZlZ6I11ps+WPfoquPEJGfZE5hDQhlBT6fZQpJBlK/m4UTBbVOPZ8BeJQjEJoElcL03rdzyn2G/oDRQkY/EIaAnmHfHdPxzgH+A7Fv53VUXZ7PAIsSLHXMhrz5JWOZ1jQnORDMYjHIiA9eddNArlqSOD9jwJI8JT6N0RCIDyytj2XW16KVEg== 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 SJ0PR11MB4896.namprd11.prod.outlook.com (2603:10b6:a03:2dd::20) by MN2PR11MB3661.namprd11.prod.outlook.com (2603:10b6:208:f0::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.16; Thu, 31 Mar 2022 00:24:51 +0000 Received: from SJ0PR11MB4896.namprd11.prod.outlook.com ([fe80::74c5:bbca:a53a:7ea5]) by SJ0PR11MB4896.namprd11.prod.outlook.com ([fe80::74c5:bbca:a53a:7ea5%9]) with mapi id 15.20.5123.021; Thu, 31 Mar 2022 00:24:50 +0000 From: "Mittal, Anuj" To: "ross@burtonini.com" , "steve@sakoman.com" CC: "openembedded-core@lists.openembedded.org" Subject: Re: [OE-core] [PATCH][dunfell] zlib: backport the fix for CVE-2018-25032 Thread-Topic: [OE-core] [PATCH][dunfell] zlib: backport the fix for CVE-2018-25032 Thread-Index: AQHYQ24SAg8TrUJjeECxQijMeKjTYKzWxUCAgAGgtQCAAD6lgA== Date: Thu, 31 Mar 2022 00:24:50 +0000 Message-ID: <2ab456c681a296834771e3d6845e23cc75dd59fb.camel@intel.com> References: <20220329130741.2430737-1-ross.burton@arm.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.42.4 (3.42.4-1.fc35) authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fcf008e2-79b5-4fe8-419e-08da12acdec9 x-ms-traffictypediagnostic: MN2PR11MB3661:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: tOKn1CbtIRxrcaO+EZ2ybDcNgvjXQ4ZSduBYegWyI7oEg2jc+ksoCvksTDhWAQKORMeQ762aCn6w9gcTQcZ3C6xFJ09vAvRRNXf3Fh9IeSbgterPmHDFtHjKqQTBnJOrZtSPRct/0EsMa0xPqG/WsioNm1dYIvyMR3sDQeR02yIuJZYLGm7tLuwJrHZmJOv1CSO/9X8nrrfaHG+cNebQqrVTpoXXgFnaCj4eYb4+1gWzBUYmlp3joeAobpgTqGBQDZHxW0AXxK7/JuWfNsZa/DgLndqENCRLenEz6Cj+L5i8o538SrzxGIxD4JgpKHE4kxr37MbqKpxJx9kqifDaat0kFkPv3AAzBz2YI/CewkbFgR9d6RkC7JUvDTeffZ4QV/dtgC4YkHg2btsGAkge6yGAkHKSTP+F3MxG1cuCpkL2T9vbgcPvBb8MZKx5VYE5uFOB73qU+LU8DNiigi5pBlBllVXXew+gPkTmLZY8gKEJNafP7TvRXg8IQ6nfFAL42Mf+KScVFiuIipilnDfNk63s+IeOtRisIhu197wXy7dyQ7lXiZjYRiuwvm5gJeSNhP2MouktQUQ57TLeXbnwpXIGu/MG3NCTaVjYxBZ7T2FsOiDX52ZTr1adkM1qpEOyBmOYT8TSVyJ4iyR8Oyk5NIWrCZH+cI/2T4wEyd4MVw36Y7qB9zYVuiVa0YnjZ6+aLZiXHPdbM4+CmqUV2I40FlsVOLzx7+IwSoTFbMhXQnXtnSlGw4gIa5ucZAIkWiU+iWzDmZ5urPK7j0MMq4STeEUKf6LcLCnLl6CjyuLDaO8CbVnIYUAkauXvvDb1fQFADTZIPimTKf80B+b0sgfMoA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR11MB4896.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(83380400001)(86362001)(71200400001)(316002)(110136005)(6486002)(36756003)(966005)(38070700005)(508600001)(66446008)(2906002)(53546011)(66556008)(91956017)(66476007)(64756008)(4326008)(8676002)(6512007)(6506007)(66946007)(38100700002)(82960400001)(2616005)(76116006)(8936002)(30864003)(122000001)(5660300002)(26005)(186003)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?N2hvWm9EbnFsL2N2TENJNGp4bGFabzZ1Vm1ycHlac1ZjeDlWLzFDNHd3bUY5?= =?utf-8?B?REJOQmZFL1BiWVllMXlYS0RkdVVycUNCMlQyK2tMUnBWQzNtUGpMdzNTNUJa?= =?utf-8?B?ZnRERU85WGc5ekt4UkNZR0dvY0FUc0NXTWt5NzE0Z1l5QmxNZzc4cFBtdHlC?= =?utf-8?B?TnhiNzZiWTFlc0tjanJ1UTVsaWRSbWtIMERmYityYXZHNFNtUVJ1WDJIeHc3?= =?utf-8?B?UWc2QVIzYTJkam1Uak9jZVNpcmZQU3QzeHhnV0NidjVQWmhxNGdxcTMrZ2Iw?= =?utf-8?B?Y2l6Zk9rNEluOWpvTlhEbE41emxyTmRzRi9yWkE5ZUttSlFEVG9lTXU1QklX?= =?utf-8?B?Vzhhdmh3bFREMUdlRE16bFIyK0xUWit6Ymd5ZXoyRXR5cUJydjQ1Zjlod3Qw?= =?utf-8?B?QzgrSFlra3B0b0ROcFpObnlkWm9uQllWRmdkUHpTN2tSSmtQMTZMOUU1NFB0?= =?utf-8?B?TUFCcTR3NTZTVm1EbWhrZFZXRXV2cDVERDlyMmFjVUVZWnJub0x0M2JRN3Zs?= =?utf-8?B?WjVTbUZQNytUN3lGWEw2dkxhelExcnNmdnNaK3R3NlhhQmU5dWlCWVVzSEQr?= =?utf-8?B?U0Z0ekd1NDhuWUI0WXRNbnAwejhqOHpUc3dxNUs2YW9vbnlnTXdiN2ptRkd3?= =?utf-8?B?TytWUTFSNkVsTjR2RzVQOUJBR3BWRDBHdnp0ME85dmJ0QUNqVDZ1RWpaWS9u?= =?utf-8?B?S0Z0MEp5RjMzazVmcUNVM0FxQ2RVVFBORmdyaFRJRFEvcXE1Unh1am01dmY1?= =?utf-8?B?clJGSTZlRmtBbVRNV3hCTEFmMXhWTkFqMUZIeUhpcFlqV2NLMlhjU1JKVmNk?= =?utf-8?B?aXduRnNCc3d6cDU2VzhydERUYzl4UisyYVJLUHlZUGZYcXdMcTVBMnNDTk9h?= =?utf-8?B?ejJIR2R6QUs2OE0xczd2ZHc4c3U4eTVYK080UEFYUXZNWXZESnF6NHYrN3BS?= =?utf-8?B?eTRSMm5QelhiNTBSUitQZFpEakU3TEhYdU1WdEpxWmhTMkE5Q2ttajlwNXpY?= =?utf-8?B?ak5GMjVWWnVPZlNWM0JEejNzc3EzRytFMWZFQWxKTndvYnJyTW9SdTIwMHhm?= =?utf-8?B?V0JILy94Tk1QNGhPSkFVVTRhSWpaMUkwOWN1L0VaSDY5NTZnL0diZjVUNi94?= =?utf-8?B?aitjU2tvTXlrRzExS1FPbisvbW95UHFCVGNiVjBRVlBNa0dOQ3dUQU9iWUJm?= =?utf-8?B?SGpPVFo0SktIUkJvZktuWnJoYWJEMzFKV0JNS1Q2bTNodGZLVnNyb0JJYXlL?= =?utf-8?B?NWJzekM5ekdCelorZUFyeWRFbTZKS0QxL0M3Y0phZWNQemZUVytEVG9mdEd0?= =?utf-8?B?YVBMc1l6b0pwdVFaVnlBREJmaFVkSnJtNTdUZWVaVStNUmRYMkJGT0dTVmNS?= =?utf-8?B?YmoxUlRnNzBzeUdYMG1BQ0x0NGpwQ25seDUvbTZHZE1id3lVbmNhZ0lUZ3hL?= =?utf-8?B?eDkycWZab0E2RmVNVm9IYjNXUlJtZkhFM2VBRzdZNmJKZHYrbU9XT2dqa1pN?= =?utf-8?B?OXZNS3M1alNNQUVmbkRXTkgrUXUrT0Q1b3pFWDlmejF5VUd1NUxGaHNSUk94?= =?utf-8?B?UiswLzZCbFhWR2tSQmVxLzZOSWsvQUNsMElwblR3Z0ZVU2xaaW9SWUF3V1dN?= =?utf-8?B?QWxzSEdTS1Z1N28xNkIwMmMwL2NBaW15YjNiZWxreFUzN09FbWRLemJzdFpx?= =?utf-8?B?S29UdldDVzdHVHhGRVRuc3BxZ3VEbUJ1V21YVGdiWnQ4RytFeFdIdkwxOVJ2?= =?utf-8?B?RWxGUENETUozUjFXQk13akpsclpsQjhueTdEWmlnV00yaU9RZzlENm02Z0Z0?= =?utf-8?B?UHlPVTVobmg2RHBzYXpHTk1xcWxxMkkwNnVDd0hSNTgyUWdJZzVCQ0dNRStI?= =?utf-8?B?Z2F0MmxsVnRlQUV4b1FrUFg3Z2xwaVZYSVpyLzJETmp1MkgyOWFpUWNrOWpC?= =?utf-8?B?K0dXWlZrb2d4SksySHQxVFhudnFlNW4yZjNaNjZoeTM4SmlvZnZhT1daWExV?= =?utf-8?B?TGtlbGZxR01yZFJjWGtaMWdYQWtqVkhSZDlkMXhPUHcwVTFwWElySjV6QUdE?= =?utf-8?B?YWpNY002UkhhSEdHbkgycjh6bXBoai9XTmZIWkxuK29wbDZNOEtHd3dnTS94?= =?utf-8?B?RTZWVzhwV1puTVFPcGZob1RZMnMydXN2NnYwU1BNSGFMZ2F1UFM5M0FMYzBn?= =?utf-8?B?WkZmM0tIM0t4NjRNS1cydDhlQVE1bGY2S2xSaTFpRFNoMGM2aWhvMjRkalll?= =?utf-8?B?YzhsYi9LZVQwWHVTUEJKZDE5TTlHaVZvQnoybUZNenZrWC9SemJkVW9hMzJa?= =?utf-8?B?Rm10NElwczBRbnJ6b1VGaEowMW5XRmFjMnlJSVdmMXllczJoanBENXA1V3pO?= =?utf-8?Q?RgGXlGG1mesWad1A=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <2C32C0897ADB4547BC1175BDEB079636@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB4896.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fcf008e2-79b5-4fe8-419e-08da12acdec9 X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Mar 2022 00:24:50.6815 (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: irUf6ZN47V0rt5x5//q2i6quVq2HEOA68NED5Mtw/xN0IQWSmL0PVYNl85GiIExSlP0K6eaVDiZBW53MWJOefA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3661 X-OriginatorOrg: intel.com List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 31 Mar 2022 00:24:58 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/163799 T24gV2VkLCAyMDIyLTAzLTMwIGF0IDIxOjQwICswMTAwLCBSb3NzIEJ1cnRvbiB3cm90ZToNCj4g SG0sIHR1cm5zIG91dCBJIHdhcyBiZWluZyB0b28gY2xldmVyIGJhY2sgaW4gMjAxOS4NCj4gDQo+ IEFudWo6IHRoZSBxdWljayBmaXggaXMgdG8gbm90IHVzZSA6cHJlcGVuZC86cmVtb3ZlIHRvIG1h bmlwdWxhdGUNCj4gU1JDX1VSSSwgYnV0IGp1c3Qgb3ZlcnJpZGUgaXQgZW50aXJlbHkuwqAgWW91 IHdvbid0IGdldCB0aGUgQ1ZFIGJ1dA0KPiB0aGF0IHdpbGwgYmUgZmxhZ2dlZCBpbiBzY2FucyBh bmQgeW91IChvciBldmVuIGJldHRlcix0aGUgZm9yaw0KPiBtYWludGFpbmVyKSBjYW4gcmViYXNl IHRoZSBDVkUgcGF0Y2guDQo+IA0KPiBBcyB0aGlzIGlzIGEgZmFpcmx5IGltcG9ydGFudCBDVkUg SSdtIHRlbXB0ZWQgdG8gc2F5IHdlIG1lcmdlIHRvDQo+IG9lLWNvcmUgZHVuZmVsbCBub3cgYW5k IGxldCBtZXRhLWludGVsIGNhdGNoIHVwLi4uDQoNClllcywgSSB0aGluayB3ZSBzaG91bGQgbWVy Z2UgdGhpcyBpZiB0aGVyZSBhcmUgbm8gb3RoZXIgaXNzdWVzIGFuZCBJDQp3aWxsIHRha2UgY2Fy ZSBvZiB0aGUgbWV0YS1pbnRlbCBmYWlsdXJlLg0KDQpUaGFua3MsDQoNCkFudWoNCg0KPiANCj4g Um9zcw0KPiANCj4gT24gVHVlLCAyOSBNYXIgMjAyMiBhdCAyMDo0OSwgU3RldmUgU2Frb21hbiA8 c3RldmVAc2Frb21hbi5jb20+DQo+IHdyb3RlOg0KPiA+IA0KPiA+IE9uIFR1ZSwgTWFyIDI5LCAy MDIyIGF0IDM6MDcgQU0gUm9zcyBCdXJ0b24gPHJvc3NAYnVydG9uaW5pLmNvbT4NCj4gPiB3cm90 ZToNCj4gPiA+IA0KPiA+ID4gU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9u QGFybS5jb20+DQo+ID4gPiAtLS0NCj4gPiA+IMKgLi4uL3psaWIvemxpYi9DVkUtMjAxOC0yNTAz Mi5wYXRjaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzNDcNCj4gPiA+ICsrKysrKysrKysrKysr KysrKw0KPiA+IA0KPiA+IFRoaXMgYnJlYWtzIGR1bmZlbGwgbWV0YS1pbnRlbDoNCj4gPiANCj4g PiBFUlJPUjogQXBwbHlpbmcgcGF0Y2ggJ0NWRS0yMDE4LTI1MDMyLnBhdGNoJyBvbiB0YXJnZXQg ZGlyZWN0b3J5DQo+ID4gJ1RPUERJUi90bXAvd29yay9jb3JlaTctNjQtcG9reS1saW51eC96bGli LWludGVsLzEuMi4xMS4xLmp0a3Y2LjMtDQo+ID4gcjAvZ2l0Jw0KPiA+IENvbW1hbmQgRXJyb3I6 ICdxdWlsdCAtLXF1aWx0cmMNCj4gPiBUT1BESVIvdG1wL3dvcmsvY29yZWk3LTY0LXBva3ktbGlu dXgvemxpYi1pbnRlbC8xLjIuMTEuMS5qdGt2Ni4zLQ0KPiA+IHIwL3JlY2lwZS1zeXNyb290LW5h dGl2ZS9ldGMvcXVpbHRyYw0KPiA+IHB1c2gnIGV4aXRlZCB3aXRoIDDCoCBPdXRwdXQ6DQo+ID4g QXBwbHlpbmcgcGF0Y2ggQ1ZFLTIwMTgtMjUwMzIucGF0Y2gNCj4gPiBwYXRjaGluZyBmaWxlIGRl ZmxhdGUuYw0KPiA+IEh1bmsgIzEgc3VjY2VlZGVkIGF0IDIzNyAob2Zmc2V0IC0xOCBsaW5lcyku DQo+ID4gSHVuayAjMiBzdWNjZWVkZWQgYXQgMzE5IChvZmZzZXQgLTUgbGluZXMpLg0KPiA+IEh1 bmsgIzMgc3VjY2VlZGVkIGF0IDM2OCAob2Zmc2V0IC01IGxpbmVzKS4NCj4gPiBIdW5rICM0IHN1 Y2NlZWRlZCBhdCA1OTAgKG9mZnNldCAxIGxpbmUpLg0KPiA+IEh1bmsgIzUgc3VjY2VlZGVkIGF0 IDExNjIgKG9mZnNldCAxMiBsaW5lcykuDQo+ID4gSHVuayAjNiBzdWNjZWVkZWQgYXQgMTE4MSAo b2Zmc2V0IDEyIGxpbmVzKS4NCj4gPiBIdW5rICM3IHN1Y2NlZWRlZCBhdCAxMTk1IChvZmZzZXQg MTIgbGluZXMpLg0KPiA+IEh1bmsgIzggc3VjY2VlZGVkIGF0IDE5NTcgKG9mZnNldCAtMiBsaW5l cykuDQo+ID4gSHVuayAjOSBzdWNjZWVkZWQgYXQgMTk5NiAob2Zmc2V0IC05NCBsaW5lcykuDQo+ ID4gSHVuayAjMTAgRkFJTEVEIGF0IDIxNjUuDQo+ID4gSHVuayAjMTEgRkFJTEVEIGF0IDIyMDQu DQo+ID4gMiBvdXQgb2YgMTEgaHVua3MgRkFJTEVEIC0tIHJlamVjdHMgaW4gZmlsZSBkZWZsYXRl LmMNCj4gPiBwYXRjaGluZyBmaWxlIGRlZmxhdGUuaA0KPiA+IEh1bmsgIzEgc3VjY2VlZGVkIGF0 IDIzMCAob2Zmc2V0IDEzIGxpbmVzKS4NCj4gPiBIdW5rICMyIHN1Y2NlZWRlZCBhdCAyNTIgKG9m ZnNldCAxMyBsaW5lcykuDQo+ID4gSHVuayAjMyBzdWNjZWVkZWQgYXQgMzM5IChvZmZzZXQgMTkg bGluZXMpLg0KPiA+IHBhdGNoaW5nIGZpbGUgdHJlZXMuYw0KPiA+IEh1bmsgIzEgc3VjY2VlZGVk IGF0IDM0MyAob2Zmc2V0IC03MyBsaW5lcykuDQo+ID4gSHVuayAjMiBzdWNjZWVkZWQgYXQgODc1 IChvZmZzZXQgLTczIGxpbmVzKS4NCj4gPiBIdW5rICMzIHN1Y2NlZWRlZCBhdCA5NDQgKG9mZnNl dCAtNzMgbGluZXMpLg0KPiA+IEh1bmsgIzQgc3VjY2VlZGVkIGF0IDk2MSAob2Zmc2V0IC03MyBs aW5lcykuDQo+ID4gSHVuayAjNSBzdWNjZWVkZWQgYXQgOTc0IChvZmZzZXQgLTczIGxpbmVzKS4N Cj4gPiBIdW5rICM2IHN1Y2NlZWRlZCBhdCAxMDA2IChvZmZzZXQgLTczIGxpbmVzKS4NCj4gPiBQ YXRjaCBDVkUtMjAxOC0yNTAzMi5wYXRjaCBkb2VzIG5vdCBhcHBseSAoZW5mb3JjZSB3aXRoIC1m KQ0KPiA+IA0KPiA+IFN0ZXZlDQo+ID4gDQo+ID4gPiDCoG1ldGEvcmVjaXBlcy1jb3JlL3psaWIv emxpYl8xLjIuMTEuYmLCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKw0KPiA+ID4gwqAyIGZpbGVz IGNoYW5nZWQsIDM0OCBpbnNlcnRpb25zKCspDQo+ID4gPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBt ZXRhL3JlY2lwZXMtY29yZS96bGliL3psaWIvQ1ZFLTIwMTgtDQo+ID4gPiAyNTAzMi5wYXRjaA0K PiA+ID4gDQo+ID4gPiBkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWNvcmUvemxpYi96bGliL0NW RS0yMDE4LTI1MDMyLnBhdGNoDQo+ID4gPiBiL21ldGEvcmVjaXBlcy1jb3JlL3psaWIvemxpYi9D VkUtMjAxOC0yNTAzMi5wYXRjaA0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGlu ZGV4IDAwMDAwMDAwMDAwLi41Y2I2MTgzNjQxOQ0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4g KysrIGIvbWV0YS9yZWNpcGVzLWNvcmUvemxpYi96bGliL0NWRS0yMDE4LTI1MDMyLnBhdGNoDQo+ ID4gPiBAQCAtMCwwICsxLDM0NyBAQA0KPiA+ID4gK0NWRTogQ1ZFLTIwMTgtMjUwMzINCj4gPiA+ ICtVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0DQo+ID4gPiArU2lnbmVkLW9mZi1ieTogUm9zcyBC dXJ0b24gPHJvc3MuYnVydG9uQGFybS5jb20+DQo+ID4gPiArDQo+ID4gPiArRnJvbSA1YzQ0NDU5 YzNiMjhhOWJkMzI4M2FhY2VhYjdjNjE1ZjgwMjBjNTMxIE1vbiBTZXAgMTcNCj4gPiA+IDAwOjAw OjAwIDIwMDENCj4gPiA+ICtGcm9tOiBNYXJrIEFkbGVyIDxtYWRsZXJAYWx1bW5pLmNhbHRlY2gu ZWR1Pg0KPiA+ID4gK0RhdGU6IFR1ZSwgMTcgQXByIDIwMTggMjI6MDk6MjIgLTA3MDANCj4gPiA+ ICtTdWJqZWN0OiBbUEFUQ0hdIEZpeCBhIGJ1ZyB0aGF0IGNhbiBjcmFzaCBkZWZsYXRlIG9uIHNv bWUgaW5wdXQNCj4gPiA+IHdoZW4gdXNpbmcNCj4gPiA+ICsgWl9GSVhFRC4NCj4gPiA+ICsNCj4g PiA+ICtUaGlzIGJ1ZyB3YXMgcmVwb3J0ZWQgYnkgRGFuaWxvIFJhbW9zIG9mIEVpZGV0aWNvbSwg SW5jLiBJdCBoYXMNCj4gPiA+ICtsYWluIGluIHdhaXQgMTMgeWVhcnMgYmVmb3JlIGJlaW5nIGZv dW5kISBUaGUgYnVnIHdhcyBpbnRyb2R1Y2VkDQo+ID4gPiAraW4gemxpYiAxLjIuMi4yLCB3aXRo IHRoZSBhZGRpdGlvbiBvZiB0aGUgWl9GSVhFRCBvcHRpb24uIFRoYXQNCj4gPiA+ICtvcHRpb24g Zm9yY2VzIHRoZSB1c2Ugb2YgZml4ZWQgSHVmZm1hbiBjb2Rlcy4gRm9yIHJhcmUgaW5wdXRzDQo+ ID4gPiB3aXRoDQo+ID4gPiArYSBsYXJnZSBudW1iZXIgb2YgZGlzdGFudCBtYXRjaGVzLCB0aGUg cGVuZGluZyBidWZmZXIgaW50byB3aGljaA0KPiA+ID4gK3RoZSBjb21wcmVzc2VkIGRhdGEgaXMg d3JpdHRlbiBjYW4gb3ZlcndyaXRlIHRoZSBkaXN0YW5jZSBzeW1ib2wNCj4gPiA+ICt0YWJsZSB3 aGljaCBpdCBvdmVybGF5cy4gVGhhdCByZXN1bHRzIGluIGNvcnJ1cHRlZCBvdXRwdXQgZHVlIHRv DQo+ID4gPiAraW52YWxpZCBkaXN0YW5jZXMsIGFuZCBjYW4gcmVzdWx0IGluIG91dC1vZi1ib3Vu ZCBhY2Nlc3NlcywNCj4gPiA+ICtjcmFzaGluZyB0aGUgYXBwbGljYXRpb24uDQo+ID4gPiArDQo+ ID4gPiArVGhlIGZpeCBoZXJlIGNvbWJpbmVzIHRoZSBkaXN0YW5jZSBidWZmZXIgYW5kIGxpdGVy YWwvbGVuZ3RoDQo+ID4gPiArYnVmZmVycyBpbnRvIGEgc2luZ2xlIHN5bWJvbCBidWZmZXIuIE5v dyB0aHJlZSBieXRlcyBvZiBwZW5kaW5nDQo+ID4gPiArYnVmZmVyIHNwYWNlIGFyZSBvcGVuZWQg dXAgZm9yIGVhY2ggbGl0ZXJhbCBvciBsZW5ndGgvZGlzdGFuY2UNCj4gPiA+ICtwYWlyIGNvbnN1 bWVkLCBpbnN0ZWFkIG9mIHRoZSBwcmV2aW91cyB0d28gYnl0ZXMuIFRoaXMgYXNzdXJlcw0KPiA+ ID4gK3RoYXQgdGhlIHBlbmRpbmcgYnVmZmVyIGNhbm5vdCBvdmVyd3JpdGUgdGhlIHN5bWJvbCB0 YWJsZSwgc2luY2UNCj4gPiA+ICt0aGUgbWF4aW11bSBmaXhlZCBjb2RlIGNvbXByZXNzZWQgbGVu Z3RoL2Rpc3RhbmNlIGlzIDMxIGJpdHMsDQo+ID4gPiBhbmQNCj4gPiA+ICtzaW5jZSB0aGVyZSBh cmUgZm91ciBieXRlcyBvZiBwZW5kaW5nIHNwYWNlIGZvciBldmVyeSB0aHJlZQ0KPiA+ID4gYnl0 ZXMNCj4gPiA+ICtvZiBzeW1ib2wgc3BhY2UuDQo+ID4gPiArLS0tDQo+ID4gPiArIGRlZmxhdGUu YyB8IDc0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQ0K PiA+ID4gLS0tLS0tLQ0KPiA+ID4gKyBkZWZsYXRlLmggfCAyNSArKysrKysrKystLS0tLS0tLS0t DQo+ID4gPiArIHRyZWVzLmPCoMKgIHwgNTAgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPiA+ID4gKyAzIGZpbGVzIGNoYW5nZWQsIDc5IGluc2VydGlvbnMoKyksIDcwIGRl bGV0aW9ucygtKQ0KPiA+ID4gKw0KPiA+ID4gK2RpZmYgLS1naXQgYS9kZWZsYXRlLmMgYi9kZWZs YXRlLmMNCj4gPiA+ICtpbmRleCA0MjViYWJjMDAuLjE5Y2JhODczYSAxMDA2NDQNCj4gPiA+ICst LS0gYS9kZWZsYXRlLmMNCj4gPiA+ICsrKysgYi9kZWZsYXRlLmMNCj4gPiA+ICtAQCAtMjU1LDEx ICsyNTUsNiBAQCBpbnQgWkVYUE9SVCBkZWZsYXRlSW5pdDJfKHN0cm0sIGxldmVsLA0KPiA+ID4g bWV0aG9kLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3ksDQo+ID4gPiArwqDCoMKgwqAg aW50IHdyYXAgPSAxOw0KPiA+ID4gK8KgwqDCoMKgIHN0YXRpYyBjb25zdCBjaGFyIG15X3ZlcnNp b25bXSA9IFpMSUJfVkVSU0lPTjsNCj4gPiA+ICsNCj4gPiA+ICstwqDCoMKgIHVzaGYgKm92ZXJs YXk7DQo+ID4gPiArLcKgwqDCoCAvKiBXZSBvdmVybGF5IHBlbmRpbmdfYnVmIGFuZCBkX2J1Zits X2J1Zi4gVGhpcyB3b3JrcyBzaW5jZQ0KPiA+ID4gdGhlIGF2ZXJhZ2UNCj4gPiA+ICstwqDCoMKg wqAgKiBvdXRwdXQgc2l6ZSBmb3IgKGxlbmd0aCxkaXN0YW5jZSkgY29kZXMgaXMgPD0gMjQgYml0 cy4NCj4gPiA+ICstwqDCoMKgwqAgKi8NCj4gPiA+ICstDQo+ID4gPiArwqDCoMKgwqAgaWYgKHZl cnNpb24gPT0gWl9OVUxMIHx8IHZlcnNpb25bMF0gIT0gbXlfdmVyc2lvblswXSB8fA0KPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqAgc3RyZWFtX3NpemUgIT0gc2l6ZW9mKHpfc3RyZWFtKSkgew0KPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFpfVkVSU0lPTl9FUlJPUjsNCj4gPiA+ICtAQCAt MzI5LDkgKzMyNCw0NyBAQCBpbnQgWkVYUE9SVCBkZWZsYXRlSW5pdDJfKHN0cm0sIGxldmVsLA0K PiA+ID4gbWV0aG9kLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3ksDQo+ID4gPiArDQo+ ID4gPiArwqDCoMKgwqAgcy0+bGl0X2J1ZnNpemUgPSAxIDw8IChtZW1MZXZlbCArIDYpOyAvKiAx NksgZWxlbWVudHMgYnkNCj4gPiA+IGRlZmF1bHQgKi8NCj4gPiA+ICsNCj4gPiA+ICstwqDCoMKg IG92ZXJsYXkgPSAodXNoZiAqKSBaQUxMT0Moc3RybSwgcy0+bGl0X2J1ZnNpemUsDQo+ID4gPiBz aXplb2YodXNoKSsyKTsNCj4gPiA+ICstwqDCoMKgIHMtPnBlbmRpbmdfYnVmID0gKHVjaGYgKikg b3ZlcmxheTsNCj4gPiA+ICstwqDCoMKgIHMtPnBlbmRpbmdfYnVmX3NpemUgPSAodWxnKXMtPmxp dF9idWZzaXplICoNCj4gPiA+IChzaXplb2YodXNoKSsyTCk7DQo+ID4gPiArK8KgwqDCoCAvKiBX ZSBvdmVybGF5IHBlbmRpbmdfYnVmIGFuZCBzeW1fYnVmLiBUaGlzIHdvcmtzIHNpbmNlIHRoZQ0K PiA+ID4gYXZlcmFnZSBzaXplDQo+ID4gPiArK8KgwqDCoMKgICogZm9yIGxlbmd0aC9kaXN0YW5j ZSBwYWlycyBvdmVyIGFueSBjb21wcmVzc2VkIGJsb2NrIGlzDQo+ID4gPiBhc3N1cmVkIHRvIGJl IDMxDQo+ID4gPiArK8KgwqDCoMKgICogYml0cyBvciBsZXNzLg0KPiA+ID4gKyvCoMKgwqDCoCAq DQo+ID4gPiArK8KgwqDCoMKgICogQW5hbHlzaXM6IFRoZSBsb25nZXN0IGZpeGVkIGNvZGVzIGFy ZSBhIGxlbmd0aCBjb2RlIG9mIDgNCj4gPiA+IGJpdHMgcGx1cyA1DQo+ID4gPiArK8KgwqDCoMKg ICogZXh0cmEgYml0cywgZm9yIGxlbmd0aHMgMTMxIHRvIDI1Ny4gVGhlIGxvbmdlc3QgZml4ZWQN Cj4gPiA+IGRpc3RhbmNlIGNvZGVzIGFyZQ0KPiA+ID4gKyvCoMKgwqDCoCAqIDUgYml0cyBwbHVz IDEzIGV4dHJhIGJpdHMsIGZvciBkaXN0YW5jZXMgMTYzODUgdG8gMzI3NjguDQo+ID4gPiBUaGUg bG9uZ2VzdA0KPiA+ID4gKyvCoMKgwqDCoCAqIHBvc3NpYmxlIGZpeGVkLWNvZGVzIGxlbmd0aC9k aXN0YW5jZSBwYWlyIGlzIHRoZW4gMzENCj4gPiA+IGJpdHMgdG90YWwuDQo+ID4gPiArK8KgwqDC oMKgICoNCj4gPiA+ICsrwqDCoMKgwqAgKiBzeW1fYnVmIHN0YXJ0cyBvbmUtZm91cnRoIG9mIHRo ZSB3YXkgaW50byBwZW5kaW5nX2J1Zi4NCj4gPiA+IFNvIHRoZXJlIGFyZQ0KPiA+ID4gKyvCoMKg wqDCoCAqIHRocmVlIGJ5dGVzIGluIHN5bV9idWYgZm9yIGV2ZXJ5IGZvdXIgYnl0ZXMgaW4NCj4g PiA+IHBlbmRpbmdfYnVmLiBFYWNoIHN5bWJvbA0KPiA+ID4gKyvCoMKgwqDCoCAqIGluIHN5bV9i dWYgaXMgdGhyZWUgYnl0ZXMgLS0gdHdvIGZvciB0aGUgZGlzdGFuY2UgYW5kDQo+ID4gPiBvbmUg Zm9yIHRoZQ0KPiA+ID4gKyvCoMKgwqDCoCAqIGxpdGVyYWwvbGVuZ3RoLiBBcyBlYWNoIHN5bWJv bCBpcyBjb25zdW1lZCwgdGhlIHBvaW50ZXINCj4gPiA+IHRvIHRoZSBuZXh0DQo+ID4gPiArK8Kg wqDCoMKgICogc3ltX2J1ZiB2YWx1ZSB0byByZWFkIG1vdmVzIGZvcndhcmQgdGhyZWUgYnl0ZXMu IEZyb20NCj4gPiA+IHRoYXQgc3ltYm9sLCB1cCB0bw0KPiA+ID4gKyvCoMKgwqDCoCAqIDMxIGJp dHMgYXJlIHdyaXR0ZW4gdG8gcGVuZGluZ19idWYuIFRoZSBjbG9zZXN0IHRoZQ0KPiA+ID4gd3Jp dHRlbiBwZW5kaW5nX2J1Zg0KPiA+ID4gKyvCoMKgwqDCoCAqIGJpdHMgZ2V0cyB0byB0aGUgbmV4 dCBzeW1fYnVmIHN5bWJvbCB0byByZWFkIGlzIGp1c3QNCj4gPiA+IGJlZm9yZSB0aGUgbGFzdA0K PiA+ID4gKyvCoMKgwqDCoCAqIGNvZGUgaXMgd3JpdHRlbi4gQXQgdGhhdCB0aW1lLCAzMSoobi0y KSBiaXRzIGhhdmUgYmVlbg0KPiA+ID4gd3JpdHRlbiwganVzdA0KPiA+ID4gKyvCoMKgwqDCoCAq IGFmdGVyIDI0KihuLTIpIGJpdHMgaGF2ZSBiZWVuIGNvbnN1bWVkIGZyb20gc3ltX2J1Zi4NCj4g PiA+IHN5bV9idWYgc3RhcnRzIGF0DQo+ID4gPiArK8KgwqDCoMKgICogOCpuIGJpdHMgaW50byBw ZW5kaW5nX2J1Zi4gKE5vdGUgdGhhdCB0aGUgc3ltYm9sIGJ1ZmZlcg0KPiA+ID4gZmlsbHMgd2hl biBuLTENCj4gPiA+ICsrwqDCoMKgwqAgKiBzeW1ib2xzIGFyZSB3cml0dGVuLikgVGhlIGNsb3Nl c3QgdGhlIHdyaXRpbmcgZ2V0cyB0bw0KPiA+ID4gd2hhdCBpcyB1bnJlYWQgaXMNCj4gPiA+ICsr wqDCoMKgwqAgKiB0aGVuIG4rMTQgYml0cy4gSGVyZSBuIGlzIGxpdF9idWZzaXplLCB3aGljaCBp cyAxNjM4NCBieQ0KPiA+ID4gZGVmYXVsdCwgYW5kDQo+ID4gPiArK8KgwqDCoMKgICogY2FuIHJh bmdlIGZyb20gMTI4IHRvIDMyNzY4Lg0KPiA+ID4gKyvCoMKgwqDCoCAqDQo+ID4gPiArK8KgwqDC oMKgICogVGhlcmVmb3JlLCBhdCBhIG1pbmltdW0sIHRoZXJlIGFyZSAxNDIgYml0cyBvZiBzcGFj ZQ0KPiA+ID4gYmV0d2VlbiB3aGF0IGlzDQo+ID4gPiArK8KgwqDCoMKgICogd3JpdHRlbiBhbmQg d2hhdCBpcyByZWFkIGluIHRoZSBvdmVybGFpbiBidWZmZXJzLCBzbyB0aGUNCj4gPiA+IHN5bWJv bHMgY2Fubm90DQo+ID4gPiArK8KgwqDCoMKgICogYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIGNvbXBy ZXNzZWQgZGF0YS4gVGhhdCBzcGFjZSBpcw0KPiA+ID4gYWN0dWFsbHkgMTM5IGJpdHMsDQo+ID4g PiArK8KgwqDCoMKgICogZHVlIHRvIHRoZSB0aHJlZS1iaXQgZml4ZWQtY29kZSBibG9jayBoZWFk ZXIuDQo+ID4gPiArK8KgwqDCoMKgICoNCj4gPiA+ICsrwqDCoMKgwqAgKiBUaGF0IGNvdmVycyB0 aGUgY2FzZSB3aGVyZSBlaXRoZXIgWl9GSVhFRCBpcyBzcGVjaWZpZWQsDQo+ID4gPiBmb3JjaW5n IGZpeGVkDQo+ID4gPiArK8KgwqDCoMKgICogY29kZXMsIG9yIHdoZW4gdGhlIHVzZSBvZiBmaXhl ZCBjb2RlcyBpcyBjaG9zZW4sIGJlY2F1c2UNCj4gPiA+IHRoYXQgY2hvaWNlDQo+ID4gPiArK8Kg wqDCoMKgICogcmVzdWx0cyBpbiBhIHNtYWxsZXIgY29tcHJlc3NlZCBibG9jayB0aGFuIGR5bmFt aWMNCj4gPiA+IGNvZGVzLiBUaGF0IGxhdHRlcg0KPiA+ID4gKyvCoMKgwqDCoCAqIGNvbmRpdGlv biB0aGVuIGFzc3VyZXMgdGhhdCB0aGUgYWJvdmUgYW5hbHlzaXMgYWxzbw0KPiA+ID4gY292ZXJz IGFsbCBkeW5hbWljDQo+ID4gPiArK8KgwqDCoMKgICogYmxvY2tzLiBBIGR5bmFtaWMtY29kZSBi bG9jayB3aWxsIG9ubHkgYmUgY2hvc2VuIHRvIGJlDQo+ID4gPiBlbWl0dGVkIGlmIGl0IGhhcw0K PiA+ID4gKyvCoMKgwqDCoCAqIGZld2VyIGJpdHMgdGhhbiBhIGZpeGVkLWNvZGUgYmxvY2sgd291 bGQgZm9yIHRoZSBzYW1lDQo+ID4gPiBzZXQgb2Ygc3ltYm9scy4NCj4gPiA+ICsrwqDCoMKgwqAg KiBUaGVyZWZvcmUgaXRzIGF2ZXJhZ2Ugc3ltYm9sIGxlbmd0aCBpcyBhc3N1cmVkIHRvIGJlDQo+ ID4gPiBsZXNzIHRoYW4gMzEuIFNvDQo+ID4gPiArK8KgwqDCoMKgICogdGhlIGNvbXByZXNzZWQg ZGF0YSBmb3IgYSBkeW5hbWljIGJsb2NrIGFsc28gY2Fubm90DQo+ID4gPiBvdmVyd3JpdGUgdGhl DQo+ID4gPiArK8KgwqDCoMKgICogc3ltYm9scyBmcm9tIHdoaWNoIGl0IGlzIGJlaW5nIGNvbnN0 cnVjdGVkLg0KPiA+ID4gKyvCoMKgwqDCoCAqLw0KPiA+ID4gKysNCj4gPiA+ICsrwqDCoMKgIHMt PnBlbmRpbmdfYnVmID0gKHVjaGYgKikgWkFMTE9DKHN0cm0sIHMtPmxpdF9idWZzaXplLCA0KTsN Cj4gPiA+ICsrwqDCoMKgIHMtPnBlbmRpbmdfYnVmX3NpemUgPSAodWxnKXMtPmxpdF9idWZzaXpl ICogNDsNCj4gPiA+ICsNCj4gPiA+ICvCoMKgwqDCoCBpZiAocy0+d2luZG93ID09IFpfTlVMTCB8 fCBzLT5wcmV2ID09IFpfTlVMTCB8fCBzLT5oZWFkID09DQo+ID4gPiBaX05VTEwgfHwNCj4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgIHMtPnBlbmRpbmdfYnVmID09IFpfTlVMTCkgew0KPiA+ID4gK0BA IC0zNDAsOCArMzczLDEyIEBAIGludCBaRVhQT1JUIGRlZmxhdGVJbml0Ml8oc3RybSwgbGV2ZWws DQo+ID4gPiBtZXRob2QsIHdpbmRvd0JpdHMsIG1lbUxldmVsLCBzdHJhdGVneSwNCj4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgIGRlZmxhdGVFbmQgKHN0cm0pOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIFpfTUVNX0VSUk9SOw0KPiA+ID4gK8KgwqDCoMKgIH0NCj4gPiA+ICstwqDCoMKg IHMtPmRfYnVmID0gb3ZlcmxheSArIHMtPmxpdF9idWZzaXplL3NpemVvZih1c2gpOw0KPiA+ID4g Ky3CoMKgwqAgcy0+bF9idWYgPSBzLT5wZW5kaW5nX2J1ZiArICgxK3NpemVvZih1c2gpKSpzLT5s aXRfYnVmc2l6ZTsNCj4gPiA+ICsrwqDCoMKgIHMtPnN5bV9idWYgPSBzLT5wZW5kaW5nX2J1ZiAr IHMtPmxpdF9idWZzaXplOw0KPiA+ID4gKyvCoMKgwqAgcy0+c3ltX2VuZCA9IChzLT5saXRfYnVm c2l6ZSAtIDEpICogMzsNCj4gPiA+ICsrwqDCoMKgIC8qIFdlIGF2b2lkIGVxdWFsaXR5IHdpdGgg bGl0X2J1ZnNpemUqMyBiZWNhdXNlIG9mDQo+ID4gPiB3cmFwYXJvdW5kIGF0IDY0Sw0KPiA+ID4g KyvCoMKgwqDCoCAqIG9uIDE2IGJpdCBtYWNoaW5lcyBhbmQgYmVjYXVzZSBzdG9yZWQgYmxvY2tz IGFyZQ0KPiA+ID4gcmVzdHJpY3RlZCB0bw0KPiA+ID4gKyvCoMKgwqDCoCAqIDY0Sy0xIGJ5dGVz Lg0KPiA+ID4gKyvCoMKgwqDCoCAqLw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgIHMtPmxldmVs ID0gbGV2ZWw7DQo+ID4gPiArwqDCoMKgwqAgcy0+c3RyYXRlZ3kgPSBzdHJhdGVneTsNCj4gPiA+ ICtAQCAtNTUyLDcgKzU4OSw3IEBAIGludCBaRVhQT1JUIGRlZmxhdGVQcmltZSAoc3RybSwgYml0 cywgdmFsdWUpDQo+ID4gPiArDQo+ID4gPiArwqDCoMKgwqAgaWYgKGRlZmxhdGVTdGF0ZUNoZWNr KHN0cm0pKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7DQo+ID4gPiArwqDCoMKgwqAgcyA9IHN0cm0t PnN0YXRlOw0KPiA+ID4gKy3CoMKgwqAgaWYgKChCeXRlZiAqKShzLT5kX2J1ZikgPCBzLT5wZW5k aW5nX291dCArICgoQnVmX3NpemUgKyA3KQ0KPiA+ID4gPj4gMykpDQo+ID4gPiArK8KgwqDCoCBp ZiAocy0+c3ltX2J1ZiA8IHMtPnBlbmRpbmdfb3V0ICsgKChCdWZfc2l6ZSArIDcpID4+IDMpKQ0K PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFpfQlVGX0VSUk9SOw0KPiA+ID4gK8KgwqDC oMKgIGRvIHsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgIHB1dCA9IEJ1Zl9zaXplIC0gcy0+Ymlf dmFsaWQ7DQo+ID4gPiArQEAgLTExMTMsNyArMTE1MCw2IEBAIGludCBaRVhQT1JUIGRlZmxhdGVD b3B5IChkZXN0LCBzb3VyY2UpDQo+ID4gPiArICNlbHNlDQo+ID4gPiArwqDCoMKgwqAgZGVmbGF0 ZV9zdGF0ZSAqZHM7DQo+ID4gPiArwqDCoMKgwqAgZGVmbGF0ZV9zdGF0ZSAqc3M7DQo+ID4gPiAr LcKgwqDCoCB1c2hmICpvdmVybGF5Ow0KPiA+ID4gKw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKg IGlmIChkZWZsYXRlU3RhdGVDaGVjayhzb3VyY2UpIHx8IGRlc3QgPT0gWl9OVUxMKSB7DQo+ID4g PiArQEAgLTExMzMsOCArMTE2OSw3IEBAIGludCBaRVhQT1JUIGRlZmxhdGVDb3B5IChkZXN0LCBz b3VyY2UpDQo+ID4gPiArwqDCoMKgwqAgZHMtPndpbmRvdyA9IChCeXRlZiAqKSBaQUxMT0MoZGVz dCwgZHMtPndfc2l6ZSwNCj4gPiA+IDIqc2l6ZW9mKEJ5dGUpKTsNCj4gPiA+ICvCoMKgwqDCoCBk cy0+cHJldsKgwqAgPSAoUG9zZiAqKcKgIFpBTExPQyhkZXN0LCBkcy0+d19zaXplLA0KPiA+ID4g c2l6ZW9mKFBvcykpOw0KPiA+ID4gK8KgwqDCoMKgIGRzLT5oZWFkwqDCoCA9IChQb3NmICopwqAg WkFMTE9DKGRlc3QsIGRzLT5oYXNoX3NpemUsDQo+ID4gPiBzaXplb2YoUG9zKSk7DQo+ID4gPiAr LcKgwqDCoCBvdmVybGF5ID0gKHVzaGYgKikgWkFMTE9DKGRlc3QsIGRzLT5saXRfYnVmc2l6ZSwN Cj4gPiA+IHNpemVvZih1c2gpKzIpOw0KPiA+ID4gKy3CoMKgwqAgZHMtPnBlbmRpbmdfYnVmID0g KHVjaGYgKikgb3ZlcmxheTsNCj4gPiA+ICsrwqDCoMKgIGRzLT5wZW5kaW5nX2J1ZiA9ICh1Y2hm ICopIFpBTExPQyhkZXN0LCBkcy0+bGl0X2J1ZnNpemUsDQo+ID4gPiA0KTsNCj4gPiA+ICsNCj4g PiA+ICvCoMKgwqDCoCBpZiAoZHMtPndpbmRvdyA9PSBaX05VTEwgfHwgZHMtPnByZXYgPT0gWl9O VUxMIHx8IGRzLT5oZWFkDQo+ID4gPiA9PSBaX05VTEwgfHwNCj4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgIGRzLT5wZW5kaW5nX2J1ZiA9PSBaX05VTEwpIHsNCj4gPiA+ICtAQCAtMTE0OCw4ICsxMTgz LDcgQEAgaW50IFpFWFBPUlQgZGVmbGF0ZUNvcHkgKGRlc3QsIHNvdXJjZSkNCj4gPiA+ICvCoMKg wqDCoCB6bWVtY3B5KGRzLT5wZW5kaW5nX2J1Ziwgc3MtPnBlbmRpbmdfYnVmLCAodUludClkcy0N Cj4gPiA+ID5wZW5kaW5nX2J1Zl9zaXplKTsNCj4gPiA+ICsNCj4gPiA+ICvCoMKgwqDCoCBkcy0+ cGVuZGluZ19vdXQgPSBkcy0+cGVuZGluZ19idWYgKyAoc3MtPnBlbmRpbmdfb3V0IC0gc3MtDQo+ ID4gPiA+cGVuZGluZ19idWYpOw0KPiA+ID4gKy3CoMKgwqAgZHMtPmRfYnVmID0gb3ZlcmxheSAr IGRzLT5saXRfYnVmc2l6ZS9zaXplb2YodXNoKTsNCj4gPiA+ICstwqDCoMKgIGRzLT5sX2J1ZiA9 IGRzLT5wZW5kaW5nX2J1ZiArICgxK3NpemVvZih1c2gpKSpkcy0NCj4gPiA+ID5saXRfYnVmc2l6 ZTsNCj4gPiA+ICsrwqDCoMKgIGRzLT5zeW1fYnVmID0gZHMtPnBlbmRpbmdfYnVmICsgZHMtPmxp dF9idWZzaXplOw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgIGRzLT5sX2Rlc2MuZHluX3RyZWUg PSBkcy0+ZHluX2x0cmVlOw0KPiA+ID4gK8KgwqDCoMKgIGRzLT5kX2Rlc2MuZHluX3RyZWUgPSBk cy0+ZHluX2R0cmVlOw0KPiA+ID4gK0BAIC0xOTI1LDcgKzE5NTksNyBAQCBsb2NhbCBibG9ja19z dGF0ZSBkZWZsYXRlX2Zhc3QocywgZmx1c2gpDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCBGTFVT SF9CTE9DSyhzLCAxKTsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBmaW5pc2hfZG9u ZTsNCj4gPiA+ICvCoMKgwqDCoCB9DQo+ID4gPiArLcKgwqDCoCBpZiAocy0+bGFzdF9saXQpDQo+ ID4gPiArK8KgwqDCoCBpZiAocy0+c3ltX25leHQpDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCBG TFVTSF9CTE9DSyhzLCAwKTsNCj4gPiA+ICvCoMKgwqDCoCByZXR1cm4gYmxvY2tfZG9uZTsNCj4g PiA+ICsgfQ0KPiA+ID4gK0BAIC0yMDU2LDcgKzIwOTAsNyBAQCBsb2NhbCBibG9ja19zdGF0ZSBk ZWZsYXRlX3Nsb3cocywgZmx1c2gpDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCBGTFVTSF9CTE9D SyhzLCAxKTsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBmaW5pc2hfZG9uZTsNCj4g PiA+ICvCoMKgwqDCoCB9DQo+ID4gPiArLcKgwqDCoCBpZiAocy0+bGFzdF9saXQpDQo+ID4gPiAr K8KgwqDCoCBpZiAocy0+c3ltX25leHQpDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCBGTFVTSF9C TE9DSyhzLCAwKTsNCj4gPiA+ICvCoMKgwqDCoCByZXR1cm4gYmxvY2tfZG9uZTsNCj4gPiA+ICsg fQ0KPiA+ID4gK0BAIC0yMTMxLDcgKzIxNjUsNyBAQCBsb2NhbCBibG9ja19zdGF0ZSBkZWZsYXRl X3JsZShzLCBmbHVzaCkNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgIEZMVVNIX0JMT0NLKHMsIDEp Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZpbmlzaF9kb25lOw0KPiA+ID4gK8Kg wqDCoMKgIH0NCj4gPiA+ICstwqDCoMKgIGlmIChzLT5sYXN0X2xpdCkNCj4gPiA+ICsrwqDCoMKg IGlmIChzLT5zeW1fbmV4dCkNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgIEZMVVNIX0JMT0NLKHMs IDApOw0KPiA+ID4gK8KgwqDCoMKgIHJldHVybiBibG9ja19kb25lOw0KPiA+ID4gKyB9DQo+ID4g PiArQEAgLTIxNzAsNyArMjIwNCw3IEBAIGxvY2FsIGJsb2NrX3N0YXRlIGRlZmxhdGVfaHVmZihz LCBmbHVzaCkNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgIEZMVVNIX0JMT0NLKHMsIDEpOw0KPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZpbmlzaF9kb25lOw0KPiA+ID4gK8KgwqDCoMKg IH0NCj4gPiA+ICstwqDCoMKgIGlmIChzLT5sYXN0X2xpdCkNCj4gPiA+ICsrwqDCoMKgIGlmIChz LT5zeW1fbmV4dCkNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgIEZMVVNIX0JMT0NLKHMsIDApOw0K PiA+ID4gK8KgwqDCoMKgIHJldHVybiBibG9ja19kb25lOw0KPiA+ID4gKyB9DQo+ID4gPiArZGlm ZiAtLWdpdCBhL2RlZmxhdGUuaCBiL2RlZmxhdGUuaA0KPiA+ID4gK2luZGV4IDIzZWNkZDMxMi4u ZDRjZjFhOThiIDEwMDY0NA0KPiA+ID4gKy0tLSBhL2RlZmxhdGUuaA0KPiA+ID4gKysrKyBiL2Rl ZmxhdGUuaA0KPiA+ID4gK0BAIC0yMTcsNyArMjE3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgaW50ZXJu YWxfc3RhdGUgew0KPiA+ID4gK8KgwqDCoMKgIC8qIERlcHRoIG9mIGVhY2ggc3VidHJlZSB1c2Vk IGFzIHRpZSBicmVha2VyIGZvciB0cmVlcyBvZg0KPiA+ID4gZXF1YWwgZnJlcXVlbmN5DQo+ID4g PiArwqDCoMKgwqDCoCAqLw0KPiA+ID4gKw0KPiA+ID4gKy3CoMKgwqAgdWNoZiAqbF9idWY7wqDC oMKgwqDCoMKgwqDCoMKgIC8qIGJ1ZmZlciBmb3IgbGl0ZXJhbHMgb3IgbGVuZ3RocyAqLw0KPiA+ ID4gKyvCoMKgwqAgdWNoZiAqc3ltX2J1ZjvCoMKgwqDCoMKgwqDCoCAvKiBidWZmZXIgZm9yIGRp c3RhbmNlcyBhbmQNCj4gPiA+IGxpdGVyYWxzL2xlbmd0aHMgKi8NCj4gPiA+ICsNCj4gPiA+ICvC oMKgwqDCoCB1SW50wqAgbGl0X2J1ZnNpemU7DQo+ID4gPiArwqDCoMKgwqAgLyogU2l6ZSBvZiBt YXRjaCBidWZmZXIgZm9yIGxpdGVyYWxzL2xlbmd0aHMuwqAgVGhlcmUgYXJlIDQNCj4gPiA+IHJl YXNvbnMgZm9yDQo+ID4gPiArQEAgLTIzOSwxMyArMjM5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgaW50 ZXJuYWxfc3RhdGUgew0KPiA+ID4gK8KgwqDCoMKgwqAgKsKgwqAgLSBJIGNhbid0IGNvdW50IGFi b3ZlIDQNCj4gPiA+ICvCoMKgwqDCoMKgICovDQo+ID4gPiArDQo+ID4gPiArLcKgwqDCoCB1SW50 IGxhc3RfbGl0O8KgwqDCoMKgwqAgLyogcnVubmluZyBpbmRleCBpbiBsX2J1ZiAqLw0KPiA+ID4g Ky0NCj4gPiA+ICstwqDCoMKgIHVzaGYgKmRfYnVmOw0KPiA+ID4gKy3CoMKgwqAgLyogQnVmZmVy IGZvciBkaXN0YW5jZXMuIFRvIHNpbXBsaWZ5IHRoZSBjb2RlLCBkX2J1ZiBhbmQNCj4gPiA+IGxf YnVmIGhhdmUNCj4gPiA+ICstwqDCoMKgwqAgKiB0aGUgc2FtZSBudW1iZXIgb2YgZWxlbWVudHMu IFRvIHVzZSBkaWZmZXJlbnQgbGVuZ3RocywNCj4gPiA+IGFuIGV4dHJhIGZsYWcNCj4gPiA+ICst wqDCoMKgwqAgKiBhcnJheSB3b3VsZCBiZSBuZWNlc3NhcnkuDQo+ID4gPiArLcKgwqDCoMKgICov DQo+ID4gPiArK8KgwqDCoCB1SW50IHN5bV9uZXh0O8KgwqDCoMKgwqAgLyogcnVubmluZyBpbmRl eCBpbiBzeW1fYnVmICovDQo+ID4gPiArK8KgwqDCoCB1SW50IHN5bV9lbmQ7wqDCoMKgwqDCoMKg IC8qIHN5bWJvbCB0YWJsZSBmdWxsIHdoZW4gc3ltX25leHQNCj4gPiA+IHJlYWNoZXMgdGhpcyAq Lw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgIHVsZyBvcHRfbGVuO8KgwqDCoMKgwqDCoMKgIC8q IGJpdCBsZW5ndGggb2YgY3VycmVudCBibG9jayB3aXRoDQo+ID4gPiBvcHRpbWFsIHRyZWVzICov DQo+ID4gPiArwqDCoMKgwqAgdWxnIHN0YXRpY19sZW47wqDCoMKgwqAgLyogYml0IGxlbmd0aCBv ZiBjdXJyZW50IGJsb2NrIHdpdGgNCj4gPiA+IHN0YXRpYyB0cmVlcyAqLw0KPiA+ID4gK0BAIC0z MjUsMjAgKzMyMCwyMiBAQCB2b2lkIFpMSUJfSU5URVJOQUwgX3RyX3N0b3JlZF9ibG9jaw0KPiA+ ID4gT0YoKGRlZmxhdGVfc3RhdGUgKnMsIGNoYXJmICpidWYsDQo+ID4gPiArDQo+ID4gPiArICMg ZGVmaW5lIF90cl90YWxseV9saXQocywgYywgZmx1c2gpIFwNCj4gPiA+ICvCoMKgIHsgdWNoIGNj ID0gKGMpOyBcDQo+ID4gPiArLcKgwqDCoCBzLT5kX2J1ZltzLT5sYXN0X2xpdF0gPSAwOyBcDQo+ ID4gPiArLcKgwqDCoCBzLT5sX2J1ZltzLT5sYXN0X2xpdCsrXSA9IGNjOyBcDQo+ID4gPiArK8Kg wqDCoCBzLT5zeW1fYnVmW3MtPnN5bV9uZXh0KytdID0gMDsgXA0KPiA+ID4gKyvCoMKgwqAgcy0+ c3ltX2J1ZltzLT5zeW1fbmV4dCsrXSA9IDA7IFwNCj4gPiA+ICsrwqDCoMKgIHMtPnN5bV9idWZb cy0+c3ltX25leHQrK10gPSBjYzsgXA0KPiA+ID4gK8KgwqDCoMKgIHMtPmR5bl9sdHJlZVtjY10u RnJlcSsrOyBcDQo+ID4gPiArLcKgwqDCoCBmbHVzaCA9IChzLT5sYXN0X2xpdCA9PSBzLT5saXRf YnVmc2l6ZS0xKTsgXA0KPiA+ID4gKyvCoMKgwqAgZmx1c2ggPSAocy0+c3ltX25leHQgPT0gcy0+ c3ltX2VuZCk7IFwNCj4gPiA+ICvCoMKgwqAgfQ0KPiA+ID4gKyAjIGRlZmluZSBfdHJfdGFsbHlf ZGlzdChzLCBkaXN0YW5jZSwgbGVuZ3RoLCBmbHVzaCkgXA0KPiA+ID4gK8KgwqAgeyB1Y2ggbGVu ID0gKHVjaCkobGVuZ3RoKTsgXA0KPiA+ID4gK8KgwqDCoMKgIHVzaCBkaXN0ID0gKHVzaCkoZGlz dGFuY2UpOyBcDQo+ID4gPiArLcKgwqDCoCBzLT5kX2J1ZltzLT5sYXN0X2xpdF0gPSBkaXN0OyBc DQo+ID4gPiArLcKgwqDCoCBzLT5sX2J1ZltzLT5sYXN0X2xpdCsrXSA9IGxlbjsgXA0KPiA+ID4g KyvCoMKgwqAgcy0+c3ltX2J1ZltzLT5zeW1fbmV4dCsrXSA9IGRpc3Q7IFwNCj4gPiA+ICsrwqDC oMKgIHMtPnN5bV9idWZbcy0+c3ltX25leHQrK10gPSBkaXN0ID4+IDg7IFwNCj4gPiA+ICsrwqDC oMKgIHMtPnN5bV9idWZbcy0+c3ltX25leHQrK10gPSBsZW47IFwNCj4gPiA+ICvCoMKgwqDCoCBk aXN0LS07IFwNCj4gPiA+ICvCoMKgwqDCoCBzLT5keW5fbHRyZWVbX2xlbmd0aF9jb2RlW2xlbl0r TElURVJBTFMrMV0uRnJlcSsrOyBcDQo+ID4gPiArwqDCoMKgwqAgcy0+ZHluX2R0cmVlW2RfY29k ZShkaXN0KV0uRnJlcSsrOyBcDQo+ID4gPiArLcKgwqDCoCBmbHVzaCA9IChzLT5sYXN0X2xpdCA9 PSBzLT5saXRfYnVmc2l6ZS0xKTsgXA0KPiA+ID4gKyvCoMKgwqAgZmx1c2ggPSAocy0+c3ltX25l eHQgPT0gcy0+c3ltX2VuZCk7IFwNCj4gPiA+ICvCoMKgIH0NCj4gPiA+ICsgI2Vsc2UNCj4gPiA+ ICsgIyBkZWZpbmUgX3RyX3RhbGx5X2xpdChzLCBjLCBmbHVzaCkgZmx1c2ggPSBfdHJfdGFsbHko cywgMCwgYykNCj4gPiA+ICtkaWZmIC0tZ2l0IGEvdHJlZXMuYyBiL3RyZWVzLmMNCj4gPiA+ICtp bmRleCA0ZjRhNjUwMTEuLmRlY2FlYjdjMyAxMDA2NDQNCj4gPiA+ICstLS0gYS90cmVlcy5jDQo+ ID4gPiArKysrIGIvdHJlZXMuYw0KPiA+ID4gK0BAIC00MTYsNyArNDE2LDcgQEAgbG9jYWwgdm9p ZCBpbml0X2Jsb2NrKHMpDQo+ID4gPiArDQo+ID4gPiArwqDCoMKgwqAgcy0+ZHluX2x0cmVlW0VO RF9CTE9DS10uRnJlcSA9IDE7DQo+ID4gPiArwqDCoMKgwqAgcy0+b3B0X2xlbiA9IHMtPnN0YXRp Y19sZW4gPSAwTDsNCj4gPiA+ICstwqDCoMKgIHMtPmxhc3RfbGl0ID0gcy0+bWF0Y2hlcyA9IDA7 DQo+ID4gPiArK8KgwqDCoCBzLT5zeW1fbmV4dCA9IHMtPm1hdGNoZXMgPSAwOw0KPiA+ID4gKyB9 DQo+ID4gPiArDQo+ID4gPiArICNkZWZpbmUgU01BTExFU1QgMQ0KPiA+ID4gK0BAIC05NDgsNyAr OTQ4LDcgQEAgdm9pZCBaTElCX0lOVEVSTkFMIF90cl9mbHVzaF9ibG9jayhzLCBidWYsDQo+ID4g PiBzdG9yZWRfbGVuLCBsYXN0KQ0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAgVHJh Y2V2KChzdGRlcnIsICJcbm9wdCAlbHUoJWx1KSBzdGF0ICVsdSglbHUpIHN0b3JlZA0KPiA+ID4g JWx1IGxpdCAldSAiLA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9w dF9sZW5iLCBzLT5vcHRfbGVuLCBzdGF0aWNfbGVuYiwgcy0NCj4gPiA+ID5zdGF0aWNfbGVuLCBz dG9yZWRfbGVuLA0KPiA+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcy0+bGFz dF9saXQpKTsNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHMtPnN5bV9u ZXh0IC8gMykpOw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAgaWYgKHN0YXRpY19s ZW5iIDw9IG9wdF9sZW5iKSBvcHRfbGVuYiA9IHN0YXRpY19sZW5iOw0KPiA+ID4gKw0KPiA+ID4g K0BAIC0xMDE3LDggKzEwMTcsOSBAQCBpbnQgWkxJQl9JTlRFUk5BTCBfdHJfdGFsbHkgKHMsIGRp c3QsIGxjKQ0KPiA+ID4gK8KgwqDCoMKgIHVuc2lnbmVkIGRpc3Q7wqAgLyogZGlzdGFuY2Ugb2Yg bWF0Y2hlZCBzdHJpbmcgKi8NCj4gPiA+ICvCoMKgwqDCoCB1bnNpZ25lZCBsYzvCoMKgwqAgLyog bWF0Y2ggbGVuZ3RoLU1JTl9NQVRDSCBvciB1bm1hdGNoZWQgY2hhcg0KPiA+ID4gKGlmIGRpc3Q9 PTApICovDQo+ID4gPiArIHsNCj4gPiA+ICstwqDCoMKgIHMtPmRfYnVmW3MtPmxhc3RfbGl0XSA9 ICh1c2gpZGlzdDsNCj4gPiA+ICstwqDCoMKgIHMtPmxfYnVmW3MtPmxhc3RfbGl0KytdID0gKHVj aClsYzsNCj4gPiA+ICsrwqDCoMKgIHMtPnN5bV9idWZbcy0+c3ltX25leHQrK10gPSBkaXN0Ow0K PiA+ID4gKyvCoMKgwqAgcy0+c3ltX2J1ZltzLT5zeW1fbmV4dCsrXSA9IGRpc3QgPj4gODsNCj4g PiA+ICsrwqDCoMKgIHMtPnN5bV9idWZbcy0+c3ltX25leHQrK10gPSBsYzsNCj4gPiA+ICvCoMKg wqDCoCBpZiAoZGlzdCA9PSAwKSB7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCAvKiBsYyBpcyB0 aGUgdW5tYXRjaGVkIGNoYXIgKi8NCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgIHMtPmR5bl9sdHJl ZVtsY10uRnJlcSsrOw0KPiA+ID4gK0BAIC0xMDMzLDMwICsxMDM0LDcgQEAgaW50IFpMSUJfSU5U RVJOQUwgX3RyX3RhbGx5IChzLCBkaXN0LCBsYykNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgIHMt PmR5bl9sdHJlZVtfbGVuZ3RoX2NvZGVbbGNdK0xJVEVSQUxTKzFdLkZyZXErKzsNCj4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgIHMtPmR5bl9kdHJlZVtkX2NvZGUoZGlzdCldLkZyZXErKzsNCj4gPiA+ ICvCoMKgwqDCoCB9DQo+ID4gPiArLQ0KPiA+ID4gKy0jaWZkZWYgVFJVTkNBVEVfQkxPQ0sNCj4g PiA+ICstwqDCoMKgIC8qIFRyeSB0byBndWVzcyBpZiBpdCBpcyBwcm9maXRhYmxlIHRvIHN0b3Ag dGhlIGN1cnJlbnQNCj4gPiA+IGJsb2NrIGhlcmUgKi8NCj4gPiA+ICstwqDCoMKgIGlmICgocy0+ bGFzdF9saXQgJiAweDFmZmYpID09IDAgJiYgcy0+bGV2ZWwgPiAyKSB7DQo+ID4gPiArLcKgwqDC oMKgwqDCoMKgIC8qIENvbXB1dGUgYW4gdXBwZXIgYm91bmQgZm9yIHRoZSBjb21wcmVzc2VkIGxl bmd0aCAqLw0KPiA+ID4gKy3CoMKgwqDCoMKgwqDCoCB1bGcgb3V0X2xlbmd0aCA9ICh1bGcpcy0+ bGFzdF9saXQqOEw7DQo+ID4gPiArLcKgwqDCoMKgwqDCoMKgIHVsZyBpbl9sZW5ndGggPSAodWxn KSgobG9uZylzLT5zdHJzdGFydCAtIHMtDQo+ID4gPiA+YmxvY2tfc3RhcnQpOw0KPiA+ID4gKy3C oMKgwqDCoMKgwqDCoCBpbnQgZGNvZGU7DQo+ID4gPiArLcKgwqDCoMKgwqDCoMKgIGZvciAoZGNv ZGUgPSAwOyBkY29kZSA8IERfQ09ERVM7IGRjb2RlKyspIHsNCj4gPiA+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBvdXRfbGVuZ3RoICs9ICh1bGcpcy0+ZHluX2R0cmVlW2Rjb2RlXS5GcmVxICoN Cj4gPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICg1TCtleHRyYV9kYml0c1tk Y29kZV0pOw0KPiA+ID4gKy3CoMKgwqDCoMKgwqDCoCB9DQo+ID4gPiArLcKgwqDCoMKgwqDCoMKg IG91dF9sZW5ndGggPj49IDM7DQo+ID4gPiArLcKgwqDCoMKgwqDCoMKgIFRyYWNldigoc3RkZXJy LCJcbmxhc3RfbGl0ICV1LCBpbiAlbGQsIG91dCB+JWxkKCVsZCUlKQ0KPiA+ID4gIiwNCj4gPiA+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzLT5sYXN0X2xpdCwgaW5fbGVuZ3RoLCBv dXRfbGVuZ3RoLA0KPiA+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDEwMEwgLSBv dXRfbGVuZ3RoKjEwMEwvaW5fbGVuZ3RoKSk7DQo+ID4gPiArLcKgwqDCoMKgwqDCoMKgIGlmIChz LT5tYXRjaGVzIDwgcy0+bGFzdF9saXQvMiAmJiBvdXRfbGVuZ3RoIDwNCj4gPiA+IGluX2xlbmd0 aC8yKSByZXR1cm4gMTsNCj4gPiA+ICstwqDCoMKgIH0NCj4gPiA+ICstI2VuZGlmDQo+ID4gPiAr LcKgwqDCoCByZXR1cm4gKHMtPmxhc3RfbGl0ID09IHMtPmxpdF9idWZzaXplLTEpOw0KPiA+ID4g Ky3CoMKgwqAgLyogV2UgYXZvaWQgZXF1YWxpdHkgd2l0aCBsaXRfYnVmc2l6ZSBiZWNhdXNlIG9m IHdyYXBhcm91bmQNCj4gPiA+IGF0IDY0Sw0KPiA+ID4gKy3CoMKgwqDCoCAqIG9uIDE2IGJpdCBt YWNoaW5lcyBhbmQgYmVjYXVzZSBzdG9yZWQgYmxvY2tzIGFyZQ0KPiA+ID4gcmVzdHJpY3RlZCB0 bw0KPiA+ID4gKy3CoMKgwqDCoCAqIDY0Sy0xIGJ5dGVzLg0KPiA+ID4gKy3CoMKgwqDCoCAqLw0K PiA+ID4gKyvCoMKgwqAgcmV0dXJuIChzLT5zeW1fbmV4dCA9PSBzLT5zeW1fZW5kKTsNCj4gPiA+ ICsgfQ0KPiA+ID4gKw0KPiA+ID4gKyAvKg0KPiA+ID4gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+ID09PT09PT09 PT0NCj4gPiA+ICtAQCAtMTA2OSwxMyArMTA0NywxNCBAQCBsb2NhbCB2b2lkIGNvbXByZXNzX2Js b2NrKHMsIGx0cmVlLA0KPiA+ID4gZHRyZWUpDQo+ID4gPiArIHsNCj4gPiA+ICvCoMKgwqDCoCB1 bnNpZ25lZCBkaXN0O8KgwqDCoMKgwqAgLyogZGlzdGFuY2Ugb2YgbWF0Y2hlZCBzdHJpbmcgKi8N Cj4gPiA+ICvCoMKgwqDCoCBpbnQgbGM7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIG1hdGNo IGxlbmd0aCBvciB1bm1hdGNoZWQgY2hhciAoaWYNCj4gPiA+IGRpc3QgPT0gMCkgKi8NCj4gPiA+ ICstwqDCoMKgIHVuc2lnbmVkIGx4ID0gMDvCoMKgwqAgLyogcnVubmluZyBpbmRleCBpbiBsX2J1 ZiAqLw0KPiA+ID4gKyvCoMKgwqAgdW5zaWduZWQgc3ggPSAwO8KgwqDCoCAvKiBydW5uaW5nIGlu ZGV4IGluIHN5bV9idWYgKi8NCj4gPiA+ICvCoMKgwqDCoCB1bnNpZ25lZCBjb2RlO8KgwqDCoMKg wqAgLyogdGhlIGNvZGUgdG8gc2VuZCAqLw0KPiA+ID4gK8KgwqDCoMKgIGludCBleHRyYTvCoMKg wqDCoMKgwqDCoMKgwqAgLyogbnVtYmVyIG9mIGV4dHJhIGJpdHMgdG8gc2VuZCAqLw0KPiA+ID4g Kw0KPiA+ID4gKy3CoMKgwqAgaWYgKHMtPmxhc3RfbGl0ICE9IDApIGRvIHsNCj4gPiA+ICstwqDC oMKgwqDCoMKgwqAgZGlzdCA9IHMtPmRfYnVmW2x4XTsNCj4gPiA+ICstwqDCoMKgwqDCoMKgwqAg bGMgPSBzLT5sX2J1ZltseCsrXTsNCj4gPiA+ICsrwqDCoMKgIGlmIChzLT5zeW1fbmV4dCAhPSAw KSBkbyB7DQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgIGRpc3QgPSBzLT5zeW1fYnVmW3N4KytdICYg MHhmZjsNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqAgZGlzdCArPSAodW5zaWduZWQpKHMtPnN5bV9i dWZbc3grK10gJiAweGZmKSA8PCA4Ow0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoCBsYyA9IHMtPnN5 bV9idWZbc3grK107DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCBpZiAoZGlzdCA9PSAwKSB7DQo+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNlbmRfY29kZShzLCBsYywgbHRyZWUpOyAv KiBzZW5kIGEgbGl0ZXJhbCBieXRlICovDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFRyYWNlY3YoaXNncmFwaChsYyksIChzdGRlcnIsIiAnJWMnICIsIGxjKSk7DQo+ID4gPiArQEAg LTExMDAsMTEgKzEwNzksMTAgQEAgbG9jYWwgdm9pZCBjb21wcmVzc19ibG9jayhzLCBsdHJlZSwN Cj4gPiA+IGR0cmVlKQ0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoCB9IC8qIGxpdGVyYWwgb3IgbWF0Y2ggcGFpciA/ICovDQo+ID4gPiAr DQo+ID4gPiArLcKgwqDCoMKgwqDCoMKgIC8qIENoZWNrIHRoYXQgdGhlIG92ZXJsYXkgYmV0d2Vl biBwZW5kaW5nX2J1ZiBhbmQNCj4gPiA+IGRfYnVmK2xfYnVmIGlzIG9rOiAqLw0KPiA+ID4gKy3C oMKgwqDCoMKgwqDCoCBBc3NlcnQoKHVJbnQpKHMtPnBlbmRpbmcpIDwgcy0+bGl0X2J1ZnNpemUg KyAyKmx4LA0KPiA+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJwZW5kaW5nQnVm IG92ZXJmbG93Iik7DQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgIC8qIENoZWNrIHRoYXQgdGhlIG92 ZXJsYXkgYmV0d2VlbiBwZW5kaW5nX2J1ZiBhbmQNCj4gPiA+IHN5bV9idWYgaXMgb2s6ICovDQo+ ID4gPiArK8KgwqDCoMKgwqDCoMKgIEFzc2VydChzLT5wZW5kaW5nIDwgcy0+bGl0X2J1ZnNpemUg KyBzeCwgInBlbmRpbmdCdWYNCj4gPiA+IG92ZXJmbG93Iik7DQo+ID4gPiArDQo+ID4gPiArLcKg wqDCoCB9IHdoaWxlIChseCA8IHMtPmxhc3RfbGl0KTsNCj4gPiA+ICsrwqDCoMKgIH0gd2hpbGUg KHN4IDwgcy0+c3ltX25leHQpOw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgIHNlbmRfY29kZShz LCBFTkRfQkxPQ0ssIGx0cmVlKTsNCj4gPiA+ICsgfQ0KPiA+ID4gZGlmZiAtLWdpdCBhL21ldGEv cmVjaXBlcy1jb3JlL3psaWIvemxpYl8xLjIuMTEuYmINCj4gPiA+IGIvbWV0YS9yZWNpcGVzLWNv cmUvemxpYi96bGliXzEuMi4xMS5iYg0KPiA+ID4gaW5kZXggZWY5NDMxYWU0NzUuLmJjNDJjZDY0 ZTlkIDEwMDY0NA0KPiA+ID4gLS0tIGEvbWV0YS9yZWNpcGVzLWNvcmUvemxpYi96bGliXzEuMi4x MS5iYg0KPiA+ID4gKysrIGIvbWV0YS9yZWNpcGVzLWNvcmUvemxpYi96bGliXzEuMi4xMS5iYg0K PiA+ID4gQEAgLTgsNiArOCw3IEBAIExJQ19GSUxFU19DSEtTVU0gPQ0KPiA+ID4gImZpbGU6Ly96 bGliLmg7YmVnaW5saW5lPTY7ZW5kbGluZT0yMzttZDU9NTM3NzIzMjI2OGU5NTJlOWVmNg0KPiA+ ID4gDQo+ID4gPiDCoFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xpYnBuZy8ke0JQ Tn0vJHtQVn0vJHtCUE59LQ0KPiA+ID4gJHtQVn0udGFyLnh6IFwNCj4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZmlsZTovL2xkZmxhZ3MtdGVzdHMucGF0Y2jCoFwNCj4gPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoCBmaWxlOi8vQ1ZFLTIwMTgtMjUwMzIucGF0Y2jCoFwNCj4gPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZmlsZTovL3J1bi1wdGVzdMKgXA0KPiA+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAiDQo+ID4gPiDCoFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vemxpYi5u ZXQvIg0KPiA+ID4gLS0NCj4gPiA+IDIuMjUuMQ0KPiA+ID4gDQo+ID4gPiANCj4gPiA+IA0KPiA+ ID4gDQo+IA0KPiAtPS09LT0tPS09LT0tPS09LT0tPS09LQ0KPiBMaW5rczogWW91IHJlY2VpdmUg YWxsIG1lc3NhZ2VzIHNlbnQgdG8gdGhpcyBncm91cC4NCj4gVmlldy9SZXBseSBPbmxpbmUgKCMx NjM3OTMpOg0KPiBodHRwczovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvZy9vcGVuZW1iZWRkZWQt Y29yZS9tZXNzYWdlLzE2Mzc5Mw0KPiBNdXRlIFRoaXMgVG9waWM6IGh0dHBzOi8vbGlzdHMub3Bl bmVtYmVkZGVkLm9yZy9tdC85MDEwNzUxOC8zNjE2NzAyDQo+IEdyb3VwIE93bmVyOiBvcGVuZW1i ZWRkZWQtY29yZStvd25lckBsaXN0cy5vcGVuZW1iZWRkZWQub3JnDQo+IFVuc3Vic2NyaWJlOg0K PiBodHRwczovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvZy9vcGVuZW1iZWRkZWQtY29yZS91bnN1 YsKgWw0KPiBhbnVqLm1pdHRhbEBpbnRlbC5jb21dDQo+IC09LT0tPS09LT0tPS09LT0tPS09LT0t DQo+IA0KDQo=