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 EBAF7F531CE for ; Mon, 13 Apr 2026 21:01:53 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8F3FE10E121; Mon, 13 Apr 2026 21:01:53 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="ODZ1ukYT"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.12]) by gabe.freedesktop.org (Postfix) with ESMTPS id E06F410E121 for ; Mon, 13 Apr 2026 21:01:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1776114103; x=1807650103; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=IZGE8l7z8Cs5uMyEse8FcgrkjxxwkYzVOpk4x7YSvYs=; b=ODZ1ukYT4+UTRwb5ropilaIiC8IyQFfD2dIq8mlicwKD59hzplSJKPFY tSe2zFehaBaW4bNUu/1w005s9dlsibTWXfsaqzCOv1fNNXJ8hCc5fzTRB JP4iq8/g+wkxDT/NqGmVU5RRwwV9T4qbqihhrZ/5TzXViWxb5/hMY5Mib aY/j3JnD+rS4aUBxZ7dp/0D11MKUb8Vd8SDd6R2HcXW7SjgSUQNQXkn8i DWahys94YvvzWgKAcfxHaeiRCDJOhsvB5p55Byl2KIY9Nly5eQcwb2NR3 NpbmDbfi3pa+wAC+Yqc8Vq43vED4/Qe1CQKB8lZHGLXCYDI3GDs5gGpIa w==; X-CSE-ConnectionGUID: TktESNWVQjatWnyqchjmYw== X-CSE-MsgGUID: w3RRKyaIS8ehIrLV0ujMaQ== X-IronPort-AV: E=McAfee;i="6800,10657,11758"; a="80945446" X-IronPort-AV: E=Sophos;i="6.23,177,1770624000"; d="scan'208";a="80945446" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Apr 2026 14:00:44 -0700 X-CSE-ConnectionGUID: Q4q8a4FbT8eHwvbvrn/aiQ== X-CSE-MsgGUID: 0f8dj3LrS4KAcGEDo8pBcQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,177,1770624000"; d="scan'208";a="233921441" Received: from fmsmsx903.amr.corp.intel.com ([10.18.126.92]) by orviesa003.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Apr 2026 14:00:38 -0700 Received: from FMSMSX902.amr.corp.intel.com (10.18.126.91) by fmsmsx903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Mon, 13 Apr 2026 14:00:36 -0700 Received: from fmsedg902.ED.cps.intel.com (10.1.192.144) by FMSMSX902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37 via Frontend Transport; Mon, 13 Apr 2026 14:00:36 -0700 Received: from PH7PR06CU001.outbound.protection.outlook.com (52.101.201.12) by edgegateway.intel.com (192.55.55.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Mon, 13 Apr 2026 14:00:31 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nnzgTMu8H7KJ2rxwE3a4PrIWjtZZJVHffXE5/oVruYwn8wFFdxZTLc12r4vGFU2t4LqFJVIvmYbNb1jK7YZUtYXOIxu5n5rbsatpvxy4Z0+z+H/EdPSUdfKc9idpw3w0dKdQE/hN5ZF7ut3lTqGILZmZOCJTvrGuowjGQAbEHnIWREyfYkufe+hqb0KCH6WpHh8Zex+qSkOEYBL6bkaYodrz2wK7ydms7d5OC2phHqSiWeFajzSw4zmK7vVR5WjVemnf5C8x0jRXN8TX8W82Nx5DO2+F4FJYdV56d1rkQSQgr5xDtMeff91zH0ZnVBU8lCyY1HbWONaaedF3KU5wUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=IZGE8l7z8Cs5uMyEse8FcgrkjxxwkYzVOpk4x7YSvYs=; b=WGYdV7FvjAHeA3JJ3/hSKmmxNV/JPovzRhb65ijmOJVFGZfaHB9nS2XzIBy0bFSccGDdmj71ium+sq+Px8bdKzfspy4eigF3r1Wyp2I/C1D6AlfxRBLzKLNZbtbe1KVo4+9ZbbV9hc2IHAVfSjRSOZ4jzQmC8ZBNdGytX0Ic031xC/fMeuztTQqy83vdLdYTF8j/vZ8HnlcnqxvlcMAr5QZtQbeijMKUEiYgBAJRVU/TbinlA3wbr5EN/X6maXhE2svh+yfhb5u/ZiFxoC3AdSNav6c6yqFrenXhKaR+B+Ev6qIpAL/AD0Hm95wHS0xEQp3B5VkfnieENtNTo05sfg== 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 DM8PR11MB5573.namprd11.prod.outlook.com (2603:10b6:8:3b::7) by PH7PR11MB7004.namprd11.prod.outlook.com (2603:10b6:510:20b::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr 2026 21:00:26 +0000 Received: from DM8PR11MB5573.namprd11.prod.outlook.com ([fe80::6a14:6aa3:4339:4415]) by DM8PR11MB5573.namprd11.prod.outlook.com ([fe80::6a14:6aa3:4339:4415%5]) with mapi id 15.20.9818.017; Mon, 13 Apr 2026 21:00:26 +0000 From: "Summers, Stuart" To: "Vishwanathapura, Niranjana" CC: "apoorva.singh@intel.com" , "igt-dev@lists.freedesktop.org" , "Charles, Daniel" , "Yang, Fei" , "Piecielska, Katarzyna" , "Dandamudi, Priyanka" , "kamil.konieczny@linux.intel.com" Subject: Re: [PATCH i-g-t 3/3] tests/intel/xe_exec_reset: Add multi queue subtests Thread-Topic: [PATCH i-g-t 3/3] tests/intel/xe_exec_reset: Add multi queue subtests Thread-Index: AQHcyGCoU/ECifHnYUCqFnpEzTInXrXcSrSAgAE1n4A= Date: Mon, 13 Apr 2026 21:00:26 +0000 Message-ID: References: <20260409203702.4350-1-stuart.summers@intel.com> <20260409203702.4350-4-stuart.summers@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu2 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: DM8PR11MB5573:EE_|PH7PR11MB7004:EE_ x-ms-office365-filtering-correlation-id: d7ca0669-c045-421e-f29a-08de999fb02b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|22082099003|56012099003|18002099003|38070700021; x-microsoft-antispam-message-info: ZaG2AJSRhD2cOWz81JvotoAFcBdTll5I4gVmHY+G2rvEvp41T9t6BnMLNJtGQ98KjFlu2K+RO8Vmbws/liNT0izpyj1b09dd4crKVbCffyBkkGfLRYpfadXoSm7ovnl5TdP48uAnNblW5ykCs4AvRazdBdULp4eu3BXw9dp7TJbIeKtkzMrJoQmQNPwRiUeZrPW5rVplWkvbMLbue3M4T9xHT2QL9LHd5JYNIi9cxsmnS6fYn8R5pbTmh6S1uCUeVPwT4HUKDkTJnP6ow2ExHMVHowlrJOQOcyFPoNQRMfmSKcvn+GUkn9z3oFOvqRAz70De0ecpiAOtRYjeVYxWiT9F97Cc0DWS+KGKzEJ7ZXvJUjgxw9Bhzfsz4fZAPqBLCOmBXip+GQqQ1IrtilsP5RxEGAYFn6YAyksoWraMfNC0unpmzizvAUmyEAncnc849xUwnT+6+dQ7LaizbAGiTKkBVEU682RCUPf4HmP8WIjJ6JLaEyzHopCTy4vlfNCb+1E1qRO0eGdkdmj/JMsstdKUD3abimcRWBUSqPbc0Ww82LdMg4akAiqrnavAb+5RxdKZoIBhHFgcPBfD3AWlL6SQ+yJgloCk9Gkd/SSOfqD4kuLkbleTRdrdf43koDaOXh2Mc0/X60MwApv4YgCVbx53pD1ewk0aBPxKVEr7Aw6E2lRvFg+OwjT0XOao/8YFH4zGwQjm6RjGW56Nwj9lJdwzxVaM2eTJEmhLEgA9IOLV7iGJ7LgSyFTZbFlSo907mEiuNd8jKgf/x9c8vwh0aQ96Lobz3M+7r8jmChyUse8= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR11MB5573.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(22082099003)(56012099003)(18002099003)(38070700021); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ajNrc280TVY5ZFphL3B0ZmFnUFRVbmthcHhJSUtrL3lyOVhQVmFzNkJaZ0w0?= =?utf-8?B?U1FQMUNEOHdPZ3lWVmcrYjhsWkZEWG1BbENTZnU2d00vdjI5OXhwakZ3T3NF?= =?utf-8?B?TXZNUXYxdDNhNWYvSE5vUkU5SUtqbmtCcUZ6NEp0UVpya0JLajh4VnhOS3g2?= =?utf-8?B?TjlUaDcyZ0srVzdtSDNmOFNqNlg5UGwrcHRvS3NrY0NseDJIOXFXVVZTRHVQ?= =?utf-8?B?cEUvc0RPcjlnWFJGcW5DZU55dWo2cTh2OHZ4Z0VoMVJmN2k3VXFXcVA0cFNE?= =?utf-8?B?Z2FZRTVpelEyZnB6MkpEemFKc1lwY0Ezd3U4bmVzT1orSXZGZDlnd09xRXRM?= =?utf-8?B?NTVpdjk0YUZjK2VhRVdURW45SS90R1Vvb1dLaGsraHJJbDB6NjFIVDhIRjdF?= =?utf-8?B?RWFnMm13N1hkVkg1YXF6d0Y0V2ZKUjBBallURGZ6Qlk5Zk8wRFJmZXhQUnZq?= =?utf-8?B?bFF0b09XSnF1Q3ZpeGVRY3VvMjNGKzVLK2R3KzJTa09KSStKME82SldPR1Rw?= =?utf-8?B?dTlYQnIxU05zN3Q0d0JIanpkdGRsZjE4Q29HaG96Vk1TT25YVnNmMkp6cEFF?= =?utf-8?B?dm1WaE9WT3U4M01PUDZFZ3pTZUFHcUQ5RUF1WWVQckpqYW1lRWpld2J0MEJP?= =?utf-8?B?anJwRk5ZbVZ0UTZxRU1UaVg1ZTRlaGNUbHEyRXZQczVLc2lKaURNeERLems2?= =?utf-8?B?MjdKaEM5dWJIM1dIMjhZMUdqQUpVRGoxNG1jV290U3N0bWdGdWtTRHV2R3lP?= =?utf-8?B?dWFJS3Q2UDNOMitremYrZDY4dXBVMnh5NkVoSlJ5VFlXSTlEc0JrbEg5Z1dp?= =?utf-8?B?UCs4c1R5TlFZdWxYWGhvcHcwNVNmNzMzWmRGOGhlTjJMdks3WjJVQmNnaENJ?= =?utf-8?B?cHUrYWMwNUl6bXA2RFpzcVJOaFgzenIzQ21PUE1WSjRTbTdxaFk2T05kSWE3?= =?utf-8?B?U0FZaENObW9mVGxIMHVqVWhlS2dOZ3FnL1BGQldvWlRFcFh4S3F1NUhZdnZr?= =?utf-8?B?S01iUE0yckU4dnBmd054cVZFU2pha2cyUVFoeVZYZitvT0I5ZGZJK0lHbVFl?= =?utf-8?B?UFlKNTBZZHRZOTFndG1kd2hFdFZMa0F2Y05FdTN4S0tEYlJTVXI3dTZhQlhG?= =?utf-8?B?V0M4ZFRNZENFdmpNN1dsZHg4OGN4U0JXWStZK0JJWmgvUnlJbGI4TTVIcFhr?= =?utf-8?B?VGhhK3ExRE82WndpVDdrUHFjVTRyTC9aUUxraE13eXUrdTVOWFAzWkF1S0lH?= =?utf-8?B?ZVVDVzFqNWx0bFNSWnRpT011b2tZWnhNQldJeHRQNUgrTzZITmQyZFlZVEJL?= =?utf-8?B?WXNZdHB3ckpCWWQ0MXdVMlhSWGJQNU1rN1RHdUxHQ1B3T2g2RmFZWWdwSXdw?= =?utf-8?B?dVkyTXBmdUVBd2drMVd5V0tqTU9VNUg5QURqTUpDUWVGRXVDbkVZemJJNFl2?= =?utf-8?B?TjgxbTBpb2liRWV4YVBqb2RjK0RYcHREN0RLd1NDMjVvSU5Tck40bXB4b0VR?= =?utf-8?B?czlPbnViK0JscDY5TXVsR1NqQktzVlcxK3Y3b2xPaXZHZTVrVzQyTnRyUE5u?= =?utf-8?B?Q1BoUDFrbGMwVXZjUDBzZGdKYlpiYThTcHNsMkkzM2pZMmpJWEQvQ1Z0ZVBL?= =?utf-8?B?cURGb0xnaXB3R2ZNVHBLUXV2NHI3dWsrTzZXWlRCbktCNFJDR0dNcTFNVVdu?= =?utf-8?B?dGw3cXdJYVc0Nkg2SGtXbDVicFdRSjBYbERMcGlNL1VaREEvTTdSTGZjZzFB?= =?utf-8?B?YW40eUJFSklpRG8rWThxbHhNRHFMcGFmeWdXbWI4akVLbUJjT2prZ2hRcDdG?= =?utf-8?B?SWZGSkhpcC81dzBOeXpUdUtEdDRIL05RU0VYUHZRSzF4UFBydzE5STdDNW1R?= =?utf-8?B?dWFWTC85bkN1Qko5NHlFU3JIQTRBUUc0cTZadW94OXcwcjlDeUVFamdZVEd0?= =?utf-8?B?WmwrN2dndyt0MEJUWU05QjhsQXFiSlRoa2lqRVNLNmNNSlFSR2lCVllvN05D?= =?utf-8?B?UDUycmcyRnl0SVVLYjBOaUN2Q25lNVBWYkNLY3VHY1dKUEw3RmQ1M0lrTDBl?= =?utf-8?B?OEI2TFN3SHg4YXFwMElBSG1qTWE1c21TQVFvaUN1UGFGSU9udGM4WnlCM1gw?= =?utf-8?B?NmpYWXlxWXZ1OU9SKzZTYldFbi9rTTlqT0NuR0FiU2krU2lYTndZeitETTUx?= =?utf-8?B?SmFqSGFiTlU0bi9jaG9ibWcvOWIwVXhKeXFFNVFRNjZxa1UwZzJlK3FweEF4?= =?utf-8?B?ZXZBZTR0aUU4cTNIUXJ1SDNFNHJQNmRYcUhnVHdMSnR0eUdTemF5S3pyU0ds?= =?utf-8?B?S2tTdDdEV2J4TXc1OFEwVStRZjBFZmJKcEhSTnZ6RzFETU0yWEdmT2xieFhj?= =?utf-8?Q?HeSaFM+CrfB4tcLU=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: oT8DAgD7Ylp0Bg7m640OXO1wlN0JYP+2goutfTW1g66rGaiRDE6N4THEAOYDaDyQj0Ma8nQPbEl/1SncpkNq3W4v2sgn1ZGKsIRRH6vF9VLdhm6HdwkLCujNXUHiJ1Z0CjKkQYiVuInguqwOofAGPjkL04OIDgT7kM96KJQICLoiQqJtTCoCR4NglgR0wR2eZJhAHEyq1Al86GcpCA6qB1kzOePtl0WC7jaXpHo1l+8e/MTK9QQwh0vc2G5ZJ2CWumS5I14bDv1aba6n8MqyEIUQuguBsiFFRik1i14pDZoLzEBQlTBlM7gj7Lb4e0qWyaIefhVwAnhXb6ncaPCSAA== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR11MB5573.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d7ca0669-c045-421e-f29a-08de999fb02b X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Apr 2026 21:00:26.7535 (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: CUZKHwoYXLZvWod6M7K1hMdRoxoS2c1PpFPBLLu5hpBnMl5Q2EnwFKKOG5LXxkmcohLZC9H7D+NjrCvqCONr6an01wjfLoWtGqdENSqoORA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB7004 X-OriginatorOrg: intel.com X-BeenThere: igt-dev@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development mailing list for IGT GPU Tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" T24gU3VuLCAyMDI2LTA0LTEyIGF0IDE5OjMyIC0wNzAwLCBOaXJhbmphbmEgVmlzaHdhbmF0aGFw dXJhIHdyb3RlOgo+IE9uIFRodSwgQXByIDA5LCAyMDI2IGF0IDA4OjM3OjAxUE0gKzAwMDAsIFN0 dWFydCBTdW1tZXJzIHdyb3RlOgo+ID4gRnJvbTogQXBvb3J2YSBTaW5naCA8YXBvb3J2YS5zaW5n aEBpbnRlbC5jb20+Cj4gPiAKPiA+IEV4dGVuZCB0aGUgZXhpc3RpbmcgdGVzdCBjYXNlcyBpbiB0 ZXN0cy9pbnRlbC94ZV9leGVjX3Jlc2V0LmMKPiA+IHRvIGluY2x1ZGUgdGVzdGluZyBvZiByZXNl dCBmbG93cyBmb3IgYm90aCBwcmltYXJ5IHF1ZXVlCj4gPiBhbmQgc2Vjb25kYXJ5IHF1ZXVlcy4K PiA+IAo+ID4gRW5naW5lIHJlc2V0cyB3aXRob3V0IENBVCBmYXVsdHMgYXJlIHRyaWdnZXJlZCB2 aWEgdGhlICotY2FuY2VsCj4gPiBjYXNlcy4gVGhlc2UgZG9uJ3QgaW5jbHVkZSB0aGUgQ0FOQ0VM IGZsYWcgYXMgdGhpcyBjYXVzZXMgYSBzcGlubmVyCj4gPiBvbiBlYWNoIHF1ZXVlIHdoaWNoIGlz bid0IGFkZGluZyBhbnkgZXh0cmEgY292ZXJhZ2UgZm9yIG11bHRpIHF1ZXVlCj4gPiBvdmVyIG5v biBtdWx0aSBxdWV1ZS4KPiA+IAo+ID4gU2luY2UgdGhlICotY2FuY2VsIGNhc2VzIGFyZSBjdXJy ZW50bHkgaW1wbGVtZW50ZWQgb25seSBmb3IgdGhlCj4gPiBsZWdhY3kgY2FzZXMsIGRvIHRoZSBz YW1lIGZvciBtdWx0aSBxdWV1ZS4KPiA+IAo+ID4gTmV3IE1VTFRJX1FVRVVFIGFuZCBTRUNPTkRB UllfUVVFVUUgZmxhZ3MgYXJlIGFkZGVkIHRvIGNvdmVyCj4gPiB0aGUgZ2VuZXJhbCBtdWx0aSBx dWV1ZSBjYXNlcyBhbmQgdGhlIGNhc2VzIHdoZXJlIHdlIGFyZSB0cmlnZ2VyaW5nCj4gPiBlbmdp bmUgcmVzZXRzIGFuZC9vciBjYXQgZmF1bHRzIG9uIHNlY29uZGFyeSBxdWV1ZXMgc3BlY2lmaWNh bGx5Lgo+ID4gCj4gPiBOb3RlIGZvciBtdWx0aSBxdWV1ZSBpdCBpcyBpbnRlcmVzdGluZyB0byB0 ZXN0IHRoZXNlIHNlY29uZGFyeQo+ID4gcXVldWUgcmVzZXQgc2NlbmFyaW9zIHNpbmNlIHRoZXNl IGFyZSBjb21tdW5pY2F0ZWQgdG8gdGhlIGRyaXZlcgo+ID4gZnJvbSBHdUMgdmlhIHRoZSBwcmlt YXJ5IHF1ZXVlIGFuZCBhZnRlciB0aGlzLCB0aGUgZW50aXJlIHF1ZXVlCj4gPiBncm91cCBpcyB0 b3JuIGRvd24uIFRoZSB0ZXN0IGNhc2VzIGhlcmUgYXJlIHRvIGVuc3VyZSBub3RoaW5nCj4gPiBi cmVha3Mgd2hlbiB3ZSBoaXQgYSBzY2VuYXJpbyBsaWtlIHRoaXMuCj4gPiAKPiA+IFNpZ25lZC1v ZmYtYnk6IEFwb29ydmEgU2luZ2ggPGFwb29ydmEuc2luZ2hAaW50ZWwuY29tPgo+ID4gU2lnbmVk LW9mZi1ieTogRmVpIFlhbmcgPGZlaS55YW5nQGludGVsLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6 IEthdGFyenluYSBQaWVjaWVsc2thCj4gPiA8a2F0YXJ6eW5hLnBpZWNpZWxza2FAaW50ZWwuY29t Pgo+ID4gU2lnbmVkLW9mZi1ieTogUHJpeWFua2EgRGFuZGFtdWRpIDxwcml5YW5rYS5kYW5kYW11 ZGlAaW50ZWwuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogRGFuaWVsIENoYXJsZXMgPGRhbmllbC5j aGFybGVzQGludGVsLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IEthbWlsIEtvbmllY3pueSA8a2Ft aWwua29uaWVjem55QGxpbnV4LmludGVsLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IFN0dWFydCBT dW1tZXJzIDxzdHVhcnQuc3VtbWVyc0BpbnRlbC5jb20+Cj4gPiAtLS0KPiA+IGxpYi94ZS94ZV9s ZWdhY3kuY8KgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNzEgKysrKysrKysrKy0tCj4gPiB0ZXN0cy9p bnRlbC94ZV9leGVjX3Jlc2V0LmMgfCAyMjIKPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLQo+ID4gMiBmaWxlcyBjaGFuZ2VkLCAyNzQgaW5zZXJ0aW9ucygrKSwgMTkgZGVs ZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9saWIveGUveGVfbGVnYWN5LmMgYi9saWIv eGUveGVfbGVnYWN5LmMKPiA+IGluZGV4IDMzNzFhOTFhYy4uZjliZDViY2I2IDEwMDY0NAo+ID4g LS0tIGEvbGliL3hlL3hlX2xlZ2FjeS5jCj4gPiArKysgYi9saWIveGUveGVfbGVnYWN5LmMKPiA+ IEBAIC0xMyw2ICsxMyw4IEBACj4gPiAKPiA+IC8qIEJhdGNoIGJ1ZmZlciBlbGVtZW50IGNvdW50 LCBpbiBudW1iZXIgb2YgZHdvcmRzKHUzMikgKi8KPiA+ICNkZWZpbmUgQkFUQ0hfRFdfQ09VTlTC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAxNgo+ID4gKyNkZWZpbmUgU0VDT05E QVJZX1FVRVVFwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg KDB4MSA8PCAxNSkKPiA+ICsjZGVmaW5lIE1VTFRJX1FVRVVFwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCgweDEgPDwgMTQpCj4gPiAjZGVmaW5lIENPTVBSRVNTSU9OwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKDB4MSA8PCAxMykKPiA+ICNk ZWZpbmUgU1lTVEVNwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCgweDEgPDwgMTIpCj4gPiAjZGVmaW5lIExPTkdfU1BJTl9SRVVTRV9RVUVVRcKgwqDC oMKgwqDCoMKgwqDCoMKgwqAoMHgxIDw8IDExKQo+ID4gQEAgLTcwLDEwICs3MiwxNCBAQCB4ZV9s ZWdhY3lfdGVzdF9tb2RlKGludCBmZCwgc3RydWN0Cj4gPiBkcm1feGVfZW5naW5lX2NsYXNzX2lu c3RhbmNlICplY2ksCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB4ZV9zcGluX25zZWNfdG9fdGlja3MoZmQsIDAsIFRIUkVFX1NFQykgOgo+ID4gMCwK PiA+IMKgwqDCoMKgwqDCoMKgwqB9Owo+ID4gwqDCoMKgwqDCoMKgwqDCoGludCBpLCBiOwo+ID4g K8KgwqDCoMKgwqDCoMKgaW50IGhhbmdfcG9zaXRpb24gPSBmbGFncyAmIFNFQ09OREFSWV9RVUVV RSA/IDEgOiAwOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGludCBleHRyYV9leGVjcyA9IChmbGFncyAm IExPTkdfU1BJTl9SRVVTRV9RVUVVRSkgPwo+ID4gbl9leGVjX3F1ZXVlcyA6IDA7Cj4gPiAKPiA+ IMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2x0ZShuX2V4ZWNfcXVldWVzLCBNQVhfTl9FWEVD UVVFVUVTKTsKPiA+IAo+ID4gK8KgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9mKCEoZmxhZ3MgJiBT RUNPTkRBUllfUVVFVUUpIHx8IChmbGFncyAmCj4gPiBNVUxUSV9RVUVVRSksCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIlNFQ09OREFSWV9RVUVVRSByZXF1aXJl cyBNVUxUSV9RVUVVRSB0byBiZQo+ID4gc2V0Iik7Cj4gPiArCj4gPiDCoMKgwqDCoMKgwqDCoMKg aWYgKGZsYWdzICYgQ09NUFJFU1NJT04pCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlndF9yZXF1aXJlKGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSkgPj0KPiA+ IDIwKTsKPiA+IAo+ID4gQEAgLTEwMSw3ICsxMDcsMjAgQEAgeGVfbGVnYWN5X3Rlc3RfbW9kZShp bnQgZmQsIHN0cnVjdAo+ID4gZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqZWNpLAo+ID4g wqDCoMKgwqDCoMKgwqDCoGRhdGEgPSB4ZV9ib19tYXAoZmQsIGJvLCBib19zaXplKTsKPiA+IAo+ ID4gwqDCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBuX2V4ZWNfcXVldWVzOyBpKyspIHsK PiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBleGVjX3F1ZXVlc1tpXSA9IHhlX2V4 ZWNfcXVldWVfY3JlYXRlKGZkLCB2bSwgZWNpLAo+ID4gMCk7Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKGZsYWdzICYgTVVMVElfUVVFVUUpIHsKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRybV94ZV9leHRfc2V0 X3Byb3BlcnR5IG11bHRpX3F1ZXVlCj4gPiA9IHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5iYXNlLm5leHRfZXh0ZW5z aW9uID0gMCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoC5iYXNlLm5hbWUgPQo+ID4gRFJNX1hFX0VYRUNfUVVFVUVfRVhU RU5TSU9OX1NFVF9QUk9QRVJUWSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5wcm9wZXJ0eSA9Cj4gPiBEUk1fWEVfRVhF Q19RVUVVRV9TRVRfUFJPUEVSVFlfTVVMVElfR1JPVVAsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH07Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQ2NF90IGV4dCA9Cj4gPiB0b191c2Vy X3BvaW50ZXIoJm11bHRpX3F1ZXVlKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbXVsdGlfcXVldWUudmFsdWUgPSBpID8gZXhlY19xdWV1 ZXNbMF0gOgo+ID4gRFJNX1hFX01VTFRJX0dST1VQX0NSRUFURTsKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXhlY19xdWV1ZXNbaV0gPSB4ZV9leGVj X3F1ZXVlX2NyZWF0ZShmZCwKPiA+IHZtLCBlY2ksIGV4dCk7Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZXhlY19xdWV1ZXNbaV0gPSB4ZV9leGVjX3F1ZXVlX2NyZWF0ZShm ZCwKPiA+IHZtLCBlY2ksIDApOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0K PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3luY29ianNbaV0gPSBzeW5jb2Jq X2NyZWF0ZShmZCwgMCk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gCj4gPiBAQCAtMTIzLDE3 ICsxNDIsMjIgQEAgeGVfbGVnYWN5X3Rlc3RfbW9kZShpbnQgZmQsIHN0cnVjdAo+ID4gZHJtX3hl X2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqZWNpLAo+ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+IAo+ ID4gwqDCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBuX2V4ZWNzOyBpKyspIHsKPiA+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1NjQgYmFzZV9hZGRyID0gKCF1c2VfY2FwdHVy ZV9tb2RlICYmIChmbGFncyAmCj4gPiBDQVRfRVJST1IpICYmICFpKQo+ID4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA/IChhZGRyICsgYm9fc2l6ZSAqIDEy OCkgOiBhZGRyOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHU2NCBiYXNlX2Fk ZHIgPSAoIXVzZV9jYXB0dXJlX21vZGUgJiYgZmxhZ3MgJgo+ID4gQ0FUX0VSUk9SICYmCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaSA9PSBoYW5nX3Bvc2l0aW9uKSA/Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoYWRkciArIGJvX3NpemUgKiAx MjgpIDogYWRkcjsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTY0IGJhdGNo X29mZnNldCA9IChjaGFyICopJmRhdGFbaV0uYmF0Y2ggLSAoY2hhcgo+ID4gKilkYXRhOwo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1NjQgYmF0Y2hfYWRkciA9IGJhc2VfYWRk ciArIGJhdGNoX29mZnNldDsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTY0 IHNwaW5fb2Zmc2V0ID0gKGNoYXIgKikmZGF0YVtpXS5zcGluIC0gKGNoYXIKPiA+ICopZGF0YTsK PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTY0IHNkaV9vZmZzZXQgPSAoY2hh ciAqKSZkYXRhW2ldLmRhdGEgLSAoY2hhcgo+ID4gKilkYXRhOwo+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB1NjQgc2RpX2FkZHIgPSBiYXNlX2FkZHIgKyBzZGlfb2Zmc2V0Owo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1NjQgZXhlY19hZGRyOwo+ID4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludCBlID0gaSAlIG5fZXhlY19xdWV1ZXM7Cj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50IGVyciwgZSA9IGkgJSBuX2V4ZWNf cXVldWVzOwo+ID4gCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFpIHx8 IGZsYWdzICYgQ0FOQ0VMIHx8Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBGb3IgY2F0IGZhdWx0IG9uIGEg c2Vjb25kYXJ5IHF1ZXVlIHRoZSBmYXVsdAo+ID4gd2lsbAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqIGJlIG9uIHRoZSBzcGlubmVyLgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChp ID09IGhhbmdfcG9zaXRpb24gfHwgZmxhZ3MgJiBDQU5DRUwgfHwKPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChmbGFncyAmIExPTkdfU1BJTiAmJiBpIDwgbl9leGVj X3F1ZXVlcykpIHsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHNwaW5fb3B0cy5hZGRyID0gYmFzZV9hZGRyICsgc3Bpbl9vZmZzZXQ7Cj4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9zcGluX2luaXQo JmRhdGFbaV0uc3BpbiwgJnNwaW5fb3B0cyk7Cj4gPiBAQCAtMTYwLDEwICsxODQsMTcgQEAgeGVf bGVnYWN5X3Rlc3RfbW9kZShpbnQgZmQsIHN0cnVjdAo+ID4gZHJtX3hlX2VuZ2luZV9jbGFzc19p bnN0YW5jZSAqZWNpLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZSAh PSBpKQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg c3luY29ial9yZXNldChmZCwgJnN5bmNvYmpzW2VdLCAxKTsKPiA+IAo+ID4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHhlX2V4ZWMoZmQsICZleGVjKTsKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAvKgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq IFNlY29uZGFyeSBxdWV1ZXMgYXJlIHJlc2V0IHdoZW4gdGhlIHByaW1hcnkKPiA+IHF1ZXVlCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogaXMgcmVzZXQuIFRoZSBzdWJtaXNz aW9uIGNhbiByYWNlIGhlcmUgYW5kIGl0IGlzCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICogZXhwZWN0ZWQgZm9yIHRob3NlIHRvIGZhaWwgc3VibWlzc2lvbiBpZiB0aGUKPiA+ IHByaW1hcnkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiByZXNldCBoYXMg YWxyZWFkeSBoYXBwZW5lZC4KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8K PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSBfX3hlX2V4ZWMoZmQsICZl eGVjKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0KCFlcnIg fHwgKChmbGFncyAmIE1VTFRJX1FVRVVFKSAmJiBlcnIgPT0KPiA+IC1FQ0FOQ0VMRUQpKTsKPiA+ IAo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghaSAmJiAhKGZsYWdzICYg Q0FUX0VSUk9SKSAmJiAhdXNlX2NhcHR1cmVfbW9kZQo+ID4gJiYKPiA+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIShmbGFncyAmIENPTVBSRVNTSU9OKSkKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoaSA9PSBoYW5nX3Bvc2l0aW9uICYmICEoZmxh Z3MgJiBDQVRfRVJST1IpICYmCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICF1c2VfY2FwdHVyZV9tb2RlICYmICEoZmxhZ3MgJiBDT01QUkVTU0lPTikpCj4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9zcGluX3dhaXRf c3RhcnRlZCgmZGF0YVtpXS5zcGluKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiAKPiA+IEBA IC0xODYsNyArMjE3LDIxIEBAIHhlX2xlZ2FjeV90ZXN0X21vZGUoaW50IGZkLCBzdHJ1Y3QKPiA+ IGRybV94ZV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgKmVjaSwKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICogRXhwZWN0YXRpb24gaGVyZSBpcyB0aGF0IG9uIHJlc2V0LCBzdWJt aXNzaW9ucwo+ID4gd2lsbAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBz dGlsbCBzYXRpc2Z5IHRoZSBzeW5jb2JqX3dhaXQuCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqLwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9hc3Nl cnQoc3luY29ial93YWl0KGZkLCAmc3luY29ianNbaV0sIDEsCj4gPiBJTlQ2NF9NQVgsIDAsIE5V TEwpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnQgZXJyID0gc3luY29i al93YWl0X2VycihmZCwgJnN5bmNvYmpzW2ldLCAxLAo+ID4gSU5UNjRfTUFYLCAwKTsKPiA+ICsK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKgo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAqIEN1cnJlbnRseSBhbnkgdGltZSBHdUMgcmVzZXRzIGEgcXVldWUg d2hpY2ggaXMKPiA+IHBhcnQgb2YgYQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqIG11bHRpIHF1ZXVlIHF1ZXVlIGdyb3VwIHN1Ym1pdHRlZCBieSB0aGUgS01ELAo+ID4gdGhl IEtNRAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHdpbGwgdGVhciBkb3du IHRoZSBlbnRpcmUgZ3JvdXAuIFRoaXMgbWVhbnMgd2UKPiA+IGRvbid0IGtub3cKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiB3aGV0aGVyIGEgcGFydGljdWxhciBxdWV1ZSBz dWJtaXR0ZWQgcHJpb3IgdG8KPiA+IHRoZSBoYW5naW5nCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICogcXVldWUgd2lsbCBjb21wbGV0ZSBvciBub3QuIFNvIHdlIGhhdmUgdG8g Y2hlY2sKPiA+IGFsbCBwb3NzaWJsZQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqIHJldHVybiB2YWx1ZXMgaGVyZS4KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIEluIHRoZSBldmVudCB3 ZSBnZXQgYW4gLUVDQU5DRUxFRCBhdCB0aGUgZXhlYwo+ID4gYWJvdmUgYW5kIHRoZQo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHN5bmNvYmogd2FzIG5vdCBpbnN0YWxsZWQs IHdlIGV4cGVjdCB0aGlzIHRvCj4gPiByZXR1cm4gLUVJTlZBTAo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAqIGhlcmUgaW5zdGVhZC4KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKi8KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNz ZXJ0KCFlcnIgfHwgKChmbGFncyAmIE1VTFRJX1FVRVVFKSAmJiBlcnIgPT0KPiA+IC1FSU5WQUwp KTsKPiA+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNz ZXJ0KHN5bmNvYmpfd2FpdChmZCwgJnN5bmNbMF0uaGFuZGxlLCAxLCBJTlQ2NF9NQVgsCj4gPiAw LCBOVUxMKSk7Cj4gPiBAQCAtMjMyLDcgKzI3NywxMyBAQCB4ZV9sZWdhY3lfdGVzdF9tb2RlKGlu dCBmZCwgc3RydWN0Cj4gPiBkcm1feGVfZW5naW5lX2NsYXNzX2luc3RhbmNlICplY2ksCj4gPiDC oMKgwqDCoMKgwqDCoMKgaWYgKCF1c2VfY2FwdHVyZV9tb2RlICYmICEoZmxhZ3MgJiAoR1RfUkVT RVQgfCBDQU5DRUwgfAo+ID4gQ09NUFJFU1NJT04pKSkgewo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBmb3IgKGkgPSBmbGFncyAmIExPTkdfU1BJTiA/IG5fZXhlY19xdWV1ZXMg OiAwOwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpIDwgbl9l eGVjcyArIGV4dHJhX2V4ZWNzOyBpKyspIHsKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFpKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBGb3IgbXVsdGktcXVldWUgdGhlcmUgaXMgbm8gZ3VhcmFu dGVlCj4gPiB3aGljaAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKiBxdWV1ZSB3aWxsIGJlIHNjaGVkdWxlZCBmaXJzdCBhcyB0aGV5Cj4gPiBhcmUg YWxsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq IHN1Ym1pdHRlZCBhdCB0aGUgc2FtZSBwcmlvcml0eSBpbiB0aGlzCj4gPiB0ZXN0Lgo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBTbyB3ZSBjYW4n dCBndWFyYW50ZWUgYW55IGRhdGEgaW50ZWdyaXR5Cj4gPiBoZXJlLgo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGkgPT0gaGFuZ19wb3NpdGlvbiB8 fCBmbGFncyAmCj4gPiBNVUxUSV9RVUVVRSkKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsKPiA+IAo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Fzc2Vy dF9lcShkYXRhW2ldLmRhdGEsIDB4YzBmZmVlKTsKPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9pbnRl bC94ZV9leGVjX3Jlc2V0LmMKPiA+IGIvdGVzdHMvaW50ZWwveGVfZXhlY19yZXNldC5jCj4gPiBp bmRleCA2YjcxZDkxNDQuLmVhNTA1NjdjMCAxMDA2NDQKPiA+IC0tLSBhL3Rlc3RzL2ludGVsL3hl X2V4ZWNfcmVzZXQuYwo+ID4gKysrIGIvdGVzdHMvaW50ZWwveGVfZXhlY19yZXNldC5jCj4gPiBA QCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc3BpbihpbnQgZmQsIHN0cnVjdAo+ ID4gZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqZWNpLAo+ID4gI2RlZmluZSBNQVhfTl9F WEVDUVVFVUVTwqDCoMKgwqDCoMKgwqDCoDE2Cj4gPiAjZGVmaW5lIEdUX1JFU0VUwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKDB4MSA8PCAwKQo+ID4gI2Rl ZmluZSBDTE9TRV9GRMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCgweDEgPDwgMSkKPiA+IC0jZGVmaW5lIENMT1NFX0VYRUNfUVVFVUVTwqDCoMKgwqDCoMKg KDB4MSA8PCAyKQo+ID4gKyNkZWZpbmUgQ0xPU0VfRVhFQ19RVUVVRVPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgKDB4MSA8PCAyKQo+ID4gI2RlZmluZSBWSVJUVUFMwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoMHgxIDw8IDMpCj4gPiAjZGVmaW5l IFBBUkFMTEVMwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg KDB4MSA8PCA0KQo+ID4gI2RlZmluZSBDQVRfRVJST1LCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgKDB4MSA8PCA1KQo+ID4gQEAgLTEyNCw2ICsxMjQsOCBAQCBz dGF0aWMgdm9pZCB0ZXN0X3NwaW4oaW50IGZkLCBzdHJ1Y3QKPiA+IGRybV94ZV9lbmdpbmVfY2xh c3NfaW5zdGFuY2UgKmVjaSwKPiA+ICNkZWZpbmUgTE9OR19TUElOX1JFVVNFX1FVRVVFwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCgweDEgPDwgMTEpCj4gPiAjZGVmaW5lIFNZU1RFTcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoMHgxIDw8IDEyKQo+ID4g I2RlZmluZSBDT01QUkVTU0lPTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCgweDEgPDwgMTMpCj4gPiArI2RlZmluZSBNVUxUSV9RVUVVRcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoMHgxIDw8IDE0KQo+ID4gKyNkZWZpbmUgU0VDT05EQVJZ X1FVRVVFwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKDB4 MSA8PCAxNSkKPiA+IAo+ID4gLyoqCj4gPiDCoCogU1VCVEVTVDogJXMtY2F0LWVycm9yCj4gPiBA QCAtMzUzLDYgKzM1NSw1NyBAQCB0ZXN0X2JhbGFuY2VyKGludCBmZCwgaW50IGd0LCBpbnQgY2xh c3MsIGludAo+ID4gbl9leGVjX3F1ZXVlcywgaW50IG5fZXhlY3MsCj4gPiDCoCoKPiA+IMKgKiBT VUJURVNUOiBjbS1jbG9zZS1leGVjcXVldWVzLWNsb3NlLWZkCj4gPiDCoCogRGVzY3JpcHRpb246 IFRlc3QgY29tcHV0ZSBtb2RlIGNsb3NlIGV4ZWNfcXVldWVzIGNsb3NlIGZkCj4gPiArICoKPiA+ ICsgKiBTVUJURVNUOiBtdWx0aS1xdWV1ZS1jYXQtZXJyb3IKPiA+ICsgKiBTdWItY2F0ZWdvcnk6 IE11bHRpUSB0ZXN0cwo+ID4gKyAqIERlc2NyaXB0aW9uOiBUZXN0IGNhdCBlcnJvciB3aXRoIG11 bHRpX3F1ZXVlCj4gPiArICoKPiA+ICsgKiBTVUJURVNUOiBtdWx0aS1xdWV1ZS1jYXQtZXJyb3It b24tc2Vjb25kYXJ5Cj4gPiArICogU3ViLWNhdGVnb3J5OiBNdWx0aVEgdGVzdHMKPiA+ICsgKiBE ZXNjcmlwdGlvbjogVGVzdCBjYXQgZXJyb3Igd2l0aCBtdWx0aV9xdWV1ZQo+ID4gKyAqwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgb24gYSBzZWNvbmRhcnkgcXVldWUKPiA+ICsgKgo+ID4gKyAq IFNVQlRFU1Q6IG11bHRpLXF1ZXVlLWd0LXJlc2V0Cj4gPiArICogU3ViLWNhdGVnb3J5OiBNdWx0 aVEgdGVzdHMKPiA+ICsgKiBEZXNjcmlwdGlvbjogVGVzdCBHVCByZXNldCB3aXRoIG11bHRpX3F1 ZXVlCj4gPiArICoKPiA+ICsgKiBTVUJURVNUOiBtdWx0aS1xdWV1ZS1jYW5jZWwKPiA+ICsgKiBT dWItY2F0ZWdvcnk6IE11bHRpUSB0ZXN0cwo+ID4gKyAqIERlc2NyaXB0aW9uOiBUZXN0IGVuZ2lu ZSByZXNldCB3aXRoIG11bHRpX3F1ZXVlCj4gPiArICoKPiA+ICsgKiBTVUJURVNUOiBtdWx0aS1x dWV1ZS1jYW5jZWwtb24tc2Vjb25kYXJ5Cj4gPiArICogU3ViLWNhdGVnb3J5OiBNdWx0aVEgdGVz dHMKPiA+ICsgKiBEZXNjcmlwdGlvbjogVGVzdCBlbmdpbmUgcmVzZXQgd2l0aCBtdWx0aV9xdWV1 ZQo+ID4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb24gYSBzZWNvbmRhcnkgcXVldWUK PiA+ICsgKgo+ID4gKyAqIFNVQlRFU1Q6IG11bHRpLXF1ZXVlLWNsb3NlLWZkCj4gPiArICogU3Vi LWNhdGVnb3J5OiBNdWx0aVEgdGVzdHMKPiA+ICsgKiBEZXNjcmlwdGlvbjogVGVzdCBjbG9zZSBm ZCB3aXRoIG11bHRpX3F1ZXVlCj4gPiArICoKPiA+ICsgKiBTVUJURVNUOiBtdWx0aS1xdWV1ZS1j bG9zZS1leGVjcXVldWVzCj4gPiArICogU3ViLWNhdGVnb3J5OiBNdWx0aVEgdGVzdHMKPiA+ICsg KiBEZXNjcmlwdGlvbjogVGVzdCBjbG9zZSBleGVjcXVldWVzIHdpdGggbXVsdGlfcXVldWUKPiA+ ICsgKgo+ID4gKyAqIFNVQlRFU1Q6IGNtLW11bHRpLXF1ZXVlLWNhdC1lcnJvcgo+ID4gKyAqIFN1 Yi1jYXRlZ29yeTogTXVsdGlRIHRlc3RzCj4gPiArICogRGVzY3JpcHRpb246IFRlc3QgY29tcHV0 ZSBtb2RlIGNhdCBlcnJvciB3aXRoIG11bHRpX3F1ZXVlCj4gPiArICoKPiA+ICsgKiBTVUJURVNU OiBjbS1tdWx0aS1xdWV1ZS1jYXQtZXJyb3Itb24tc2Vjb25kYXJ5Cj4gPiArICogU3ViLWNhdGVn b3J5OiBNdWx0aVEgdGVzdHMKPiA+ICsgKiBEZXNjcmlwdGlvbjogVGVzdCBjb21wdXRlIG1vZGUg Y2F0IGVycm9yIHdpdGggbXVsdGlfcXVldWUKPiA+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIG9uIGEgc2Vjb25kYXJ5IHF1ZXVlCj4gPiArICoKPiA+ICsgKiBTVUJURVNUOiBjbS1tdWx0 aS1xdWV1ZS1ndC1yZXNldAo+ID4gKyAqIFN1Yi1jYXRlZ29yeTogTXVsdGlRIHRlc3RzCj4gPiAr ICogRGVzY3JpcHRpb246IFRlc3QgY29tcHV0ZSBtb2RlIEdUIHJlc2V0IHdpdGggbXVsdGlfcXVl dWUKPiA+ICsgKgo+ID4gKyAqIFNVQlRFU1Q6IGNtLW11bHRpLXF1ZXVlLWNsb3NlLWZkCj4gPiAr ICogU3ViLWNhdGVnb3J5OiBNdWx0aVEgdGVzdHMKPiA+ICsgKiBEZXNjcmlwdGlvbjogVGVzdCBj b21wdXRlIG1vZGUgY2xvc2UgZmQgd2l0aCBtdWx0aV9xdWV1ZQo+ID4gKyAqCj4gPiArICogU1VC VEVTVDogY20tbXVsdGktcXVldWUtY2xvc2UtZXhlY3F1ZXVlcwo+ID4gKyAqIFN1Yi1jYXRlZ29y eTogTXVsdGlRIHRlc3RzCj4gPiArICogRGVzY3JpcHRpb246IFRlc3QgY29tcHV0ZSBtb2RlIGNs b3NlIGV4ZWNxdWV1ZXMgd2l0aAo+ID4gbXVsdGlfcXVldWUKPiAKPiBSZW1vdmUgJ1N1Yi1jYXRl Z29yeScgdGFncyBoZXJlIGFzIGl0IGlzIG5vdCBjb25zaXN0ZW50IHdpdGggb3RoZXIKPiBtdWx0 aS1xdWV1ZSB0ZXN0cyAoQmVzaWRlcywgTXVsdGlRIGlzIG5vdCBhIGNvbnNpc3RlbnQgbmFtaW5n IHVzZWQKPiBlaXRoZXIpLgoKVGhhbmtzIHllYWggbWFrZXMgc2Vuc2UuIEknbGwgcmVtb3ZlIGlu IHRoZSByZXBvc3QuCgpUaGFua3MsClN0dWFydAoKPiAKPiBPdGhlciB0aGFuIHRoYXQsIHBhdGNo IExHVE0KPiBSZXZpZXdlZC1ieTogTmlyYW5qYW5hIFZpc2h3YW5hdGhhcHVyYQo+IDxuaXJhbmph bmEudmlzaHdhbmF0aGFwdXJhQGludGVsLmNvbT4KPiAKPiA+IMKgKi8KPiA+IAo+ID4gc3RhdGlj IHZvaWQKPiA+IEBAIC0zODQsOSArNDM3LDE0IEBAIHRlc3RfY29tcHV0ZV9tb2RlKGludCBmZCwg c3RydWN0Cj4gPiBkcm1feGVfZW5naW5lX2NsYXNzX2luc3RhbmNlICplY2ksCj4gPiDCoMKgwqDC oMKgwqDCoMKgfSAqZGF0YTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfc3Bpbl9vcHRz IHNwaW5fb3B0cyA9IHsgLnByZWVtcHQgPSBmbGFncyAmCj4gPiBQUkVFTVBUIH07Cj4gPiDCoMKg wqDCoMKgwqDCoMKgaW50IGksIGI7Cj4gPiArwqDCoMKgwqDCoMKgwqBpbnQgaGFuZ19wb3NpdGlv biA9IGZsYWdzICYgU0VDT05EQVJZX1FVRVVFID8gMSA6IDA7Cj4gPiAKPiA+IMKgwqDCoMKgwqDC oMKgwqBpZ3RfYXNzZXJ0X2x0ZShuX2V4ZWNfcXVldWVzLCBNQVhfTl9FWEVDUVVFVUVTKTsKPiA+ IAo+ID4gK8KgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9mKCEoZmxhZ3MgJiBTRUNPTkRBUllfUVVF VUUpIHx8Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKChmbGFn cyAmIE1VTFRJX1FVRVVFKSAmJiAoZmxhZ3MgJgo+ID4gQ0FUX0VSUk9SKSksCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIlNFQ09OREFSWV9RVUVVRSByZXF1aXJl cyBNVUxUSV9RVUVVRSBhbmQKPiA+IENBVF9FUlJPUiB0byBiZSBzZXQiKTsKPiA+ICsKPiA+IMKg wqDCoMKgwqDCoMKgwqBpZiAoZmxhZ3MgJiBDTE9TRV9GRCkKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX1hFKTsKPiA+IAo+ID4g QEAgLTQwMSw3ICs0NTksMjAgQEAgdGVzdF9jb21wdXRlX21vZGUoaW50IGZkLCBzdHJ1Y3QKPiA+ IGRybV94ZV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgKmVjaSwKPiA+IMKgwqDCoMKgwqDCoMKgwqBt ZW1zZXQoZGF0YSwgMCwgYm9fc2l6ZSk7Cj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgwqBmb3IgKGkg PSAwOyBpIDwgbl9leGVjX3F1ZXVlczsgaSsrKSB7Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZXhlY19xdWV1ZXNbaV0gPSB4ZV9leGVjX3F1ZXVlX2NyZWF0ZShmZCwgdm0sIGVj aSwKPiA+IDApOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChmbGFncyAm IE1VTFRJX1FVRVVFKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCBkcm1feGVfZXh0X3NldF9wcm9wZXJ0eSBtdWx0aV9xdWV1ZQo+ID4g PSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAuYmFzZS5uZXh0X2V4dGVuc2lvbiA9IDAsCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAuYmFzZS5u YW1lID0KPiA+IERSTV9YRV9FWEVDX1FVRVVFX0VYVEVOU0lPTl9TRVRfUFJPUEVSVFksCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAucHJvcGVydHkgPQo+ID4gRFJNX1hFX0VYRUNfUVVFVUVfU0VUX1BST1BFUlRZX01VTFRJ X0dST1VQLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB9Owo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB1aW50NjRfdCBleHQgPQo+ID4gdG9fdXNlcl9wb2ludGVyKCZtdWx0aV9xdWV1ZSk7Cj4g PiArCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG11 bHRpX3F1ZXVlLnZhbHVlID0gaSA/IGV4ZWNfcXVldWVzWzBdIDoKPiA+IERSTV9YRV9NVUxUSV9H Uk9VUF9DUkVBVEU7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGV4ZWNfcXVldWVzW2ldID0geGVfZXhlY19xdWV1ZV9jcmVhdGUoZmQsCj4gPiB2bSwg ZWNpLCBleHQpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7Cj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGV4ZWNfcXVl dWVzW2ldID0geGVfZXhlY19xdWV1ZV9jcmVhdGUoZmQsCj4gPiB2bSwgZWNpLCAwKTsKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiDCoMKgwqDCoMKgwqDCoMKgfTsKPiA+ IAo+ID4gwqDCoMKgwqDCoMKgwqDCoHN5bmNbMF0uYWRkciA9IHRvX3VzZXJfcG9pbnRlcigmZGF0 YVswXS52bV9zeW5jKTsKPiA+IEBAIC00MTEsMTcgKzQ4MiwyMSBAQCB0ZXN0X2NvbXB1dGVfbW9k ZShpbnQgZmQsIHN0cnVjdAo+ID4gZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqZWNpLAo+ ID4gwqDCoMKgwqDCoMKgwqDCoGRhdGFbMF0udm1fc3luYyA9IDA7Cj4gPiAKPiA+IMKgwqDCoMKg wqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgbl9leGVjczsgaSsrKSB7Cj4gPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgdWludDY0X3QgYmFzZV9hZGRyID0gZmxhZ3MgJiBDQVRfRVJST1Ig JiYgIWkgPwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBhZGRyICsgYm9fc2l6ZSAqIDEyOCA6IGFkZHI7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgdWludDY0X3QgYmFzZV9hZGRyID0gKGZsYWdzICYgQ0FUX0VSUk9SICYmIGkgPT0K PiA+IGhhbmdfcG9zaXRpb24pID8KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChhZGRyICsgYm9fc2l6ZSAq IDEyOCkgOiBhZGRyOwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50NjRf dCBiYXRjaF9vZmZzZXQgPSAoY2hhciAqKSZkYXRhW2ldLmJhdGNoIC0KPiA+IChjaGFyICopZGF0 YTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWludDY0X3QgYmF0Y2hfYWRk ciA9IGJhc2VfYWRkciArIGJhdGNoX29mZnNldDsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgdWludDY0X3Qgc3Bpbl9vZmZzZXQgPSAoY2hhciAqKSZkYXRhW2ldLnNwaW4gLQo+ ID4gKGNoYXIgKilkYXRhOwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50 NjRfdCBzZGlfb2Zmc2V0ID0gKGNoYXIgKikmZGF0YVtpXS5kYXRhIC0gKGNoYXIKPiA+ICopZGF0 YTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWludDY0X3Qgc2RpX2FkZHIg PSBiYXNlX2FkZHIgKyBzZGlfb2Zmc2V0Owo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB1aW50NjRfdCBleGVjX2FkZHI7Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaW50IGUgPSBpICUgbl9leGVjX3F1ZXVlczsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpbnQgZXJyLCBlID0gaSAlIG5fZXhlY19xdWV1ZXM7Cj4gPiAKPiA+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIWkgfHwgZmxhZ3MgJiBDQU5DRUwpIHsKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqIEZvciBjYXQgZmF1bHQgb24gYSBzZWNvbmRhcnkgcXVldWUgdGhlIGZhdWx0 Cj4gPiB3aWxsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYmUgb24gdGhl IHNwaW5uZXIuCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGkgPT0gaGFuZ19wb3NpdGlvbiB8fCBmbGFn cyAmIENBTkNFTCkgewo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgc3Bpbl9vcHRzLmFkZHIgPSBiYXNlX2FkZHIgKyBzcGluX29mZnNldDsKPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX3NwaW5faW5p dCgmZGF0YVtpXS5zcGluLCAmc3Bpbl9vcHRzKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGV4ZWNfYWRkciA9IHNwaW5fb3B0cy5hZGRyOwo+ID4g QEAgLTQ0Miw3ICs1MTcsMTggQEAgdGVzdF9jb21wdXRlX21vZGUoaW50IGZkLCBzdHJ1Y3QKPiA+ IGRybV94ZV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgKmVjaSwKPiA+IAo+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBleGVjLmV4ZWNfcXVldWVfaWQgPSBleGVjX3F1ZXVlc1tlXTsK PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXhlYy5hZGRyZXNzID0gZXhlY19h ZGRyOwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2V4ZWMoZmQsICZleGVj KTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKgo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIFNlY29uZGFyeSBxdWV1ZXMgYXJlIHJlc2V0IHdo ZW4gdGhlIHByaW1hcnkKPiA+IHF1ZXVlCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICogaXMgcmVzZXQuIFRoZSBzdWJtaXNzaW9uIGNhbiByYWNlIGhlcmUgYW5kIGl0IGlzCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogZXhwZWN0ZWQgZm9yIHRob3NlIHRv IGZhaWwgc3VibWlzc2lvbiBpZiB0aGUKPiA+IHByaW1hcnkKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKiByZXNldCBoYXMgYWxyZWFkeSBoYXBwZW5lZC4KPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBlcnIgPSBfX3hlX2V4ZWMoZmQsICZleGVjKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZ3RfYXNzZXJ0KCFlcnIgfHwgKChmbGFncyAmIE1VTFRJX1FVRVVFKSAmJiBl cnIgPT0KPiA+IC1FQ0FOQ0VMRUQpKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZiAoaSA9PSBoYW5nX3Bvc2l0aW9uICYmICEoZmxhZ3MgJiBDQVRfRVJST1IpKQo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9zcGlu X3dhaXRfc3RhcnRlZCgmZGF0YVtpXS5zcGluKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiAK PiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoZmxhZ3MgJiBHVF9SRVNFVCkgewo+ID4gQEAgLTQ2Nyw4 ICs1NTMsMTggQEAgdGVzdF9jb21wdXRlX21vZGUoaW50IGZkLCBzdHJ1Y3QKPiA+IGRybV94ZV9l bmdpbmVfY2xhc3NfaW5zdGFuY2UgKmVjaSwKPiA+IAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBlcnIgPSBfX3hlX3dhaXRfdWZlbmNlKGZkLCAmZGF0YVtpXS5leGVjX3N5bmMs Cj4gPiBVU0VSX0ZFTkNFX1ZBTFVFLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBleGVjX3F1ZXVl c1tpICUKPiA+IG5fZXhlY19xdWV1ZXNdLCAmdGltZW91dCk7Cj4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKCFpKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKGkgPT0gaGFuZ19wb3NpdGlvbikgewo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydChlcnIgPT0gLUVUSU1FIHx8IGVyciA9 PSAtRUlPKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgaWYgKGZs YWdzICYgTVVMVElfUVVFVUUpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgLyoKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICogQ3VycmVudGx5IGFueSB0aW1lIEd1QyByZXNldHMgYSBxdWV1ZQo+ID4g c3VibWl0dGVkCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqIGJ5IHRoZSBLTUQsIHRoZSBLTUQgd2lsbCB0ZWFyIGRvd24gdGhlCj4gPiBlbnRpcmUK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogcXVl dWUgZ3JvdXAuIFRoaXMgbWVhbnMgd2UgZG9uJ3Qga25vdwo+ID4gd2hldGhlcgo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBhIHBhcnRpY3VsYXIg cXVldWUgc3VibWl0dGVkIHByaW9yIHRvCj4gPiB0aGUgaGFuZ2luZwo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBxdWV1ZSB3aWxsIGNvbXBsZXRl IG9yIG5vdC4gU28gd2UgaGF2ZQo+ID4gdG8gY2hlY2sKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYWxsIHBvc3NpYmxlIHJldHVybiB2YWx1ZXMg aGVyZS4KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICovCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGln dF9hc3NlcnQoZXJyID09IC1FVElNRSB8fCBlcnIgPT0gLUVJTyB8fAo+ID4gIWVycik7Cj4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSBpZiAoZmxhZ3MgJiBHVF9SRVNF VCB8fCBmbGFncyAmIENBVF9FUlJPUikgewo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZXhlYyByYWNlcyB3aXRoIHJlc2V0OiBtYXkgcmV0dXJu IC1FSU8KPiA+IG9yIGNvbXBsZXRlICovCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0KGVyciA9PSAtRUlPIHx8ICFlcnIpOwo+ID4g QEAgLTQ4Myw3ICs1NzksMTMgQEAgdGVzdF9jb21wdXRlX21vZGUoaW50IGZkLCBzdHJ1Y3QKPiA+ IGRybV94ZV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgKmVjaSwKPiA+IAo+ID4gwqDCoMKgwqDCoMKg wqDCoGlmICghKGZsYWdzICYgKEdUX1JFU0VUIHwgQ0FOQ0VMKSkpIHsKPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IG5fZXhlY3M7IGkrKykgewo+ID4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIWkpCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIEZvciBtdWx0 aS1xdWV1ZSB0aGVyZSBpcyBubyBndWFyYW50ZWUKPiA+IHdoaWNoCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHF1ZXVlIHdpbGwgYmUgc2NoZWR1 bGVkIGZpcnN0IGFzIHRoZXkKPiA+IGFyZSBhbGwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogc3VibWl0dGVkIGF0IHRoZSBzYW1lIHByaW9yaXR5 IGluIHRoaXMKPiA+IHRlc3QuCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqIFNvIHdlIGNhbid0IGd1YXJhbnRlZSBhbnkgZGF0YSBpbnRlZ3JpdHkK PiA+IGhlcmUuCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAoaSA9PSBoYW5nX3Bvc2l0aW9uIHx8IGZsYWdzICYKPiA+IE1VTFRJX1FVRVVFKQo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGNvbnRpbnVlOwo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2VxKGRhdGFbaV0uZGF0YSwgMHhjMGZmZWUpOwo+ ID4gQEAgLTk4Niw2ICsxMDg4LDEwOCBAQCBpbnQgaWd0X21haW4oKQo+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9mb3JfZWFjaF9ndChmZCwgZ3QpCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBndF9tb2NzX3Jlc2V0KGZkLCBn dCk7Cj4gPiAKPiA+ICvCoMKgwqDCoMKgwqDCoGlndF9zdWJ0ZXN0KCJtdWx0aS1xdWV1ZS1jYXQt ZXJyb3IiKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3JlcXVpcmUo aW50ZWxfZ3JhcGhpY3NfdmVyKGludGVsX2dldF9kcm1fZGV2aWQoCj4gPiBmZCkpID49IElQX1ZF UigzNSwgMCkpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2Zvcl9lYWNo X211bHRpX3F1ZXVlX2VuZ2luZShmZCwgaHdlKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9sZWdhY3lfdGVzdF9tb2RlKGZkLCBod2UsIDE2LCAx NiwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ0FUX0VSUk9SIHwKPiA+IE1VTFRJ X1FVRVVFLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBMRUdBQ1lfTU9ERV9BRERS LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYWxzZSk7Cj4gPiArwqDCoMKgwqDC oMKgwqB9Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdCgibXVsdGktcXVldWUt Y2F0LWVycm9yLW9uLXNlY29uZGFyeSIpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZ3RfcmVxdWlyZShpbnRlbF9ncmFwaGljc192ZXIoaW50ZWxfZ2V0X2RybV9kZXZpZCgK PiA+IGZkKSkgPj0gSVBfVkVSKDM1LCAwKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgeGVfZm9yX2VhY2hfbXVsdGlfcXVldWVfZW5naW5lKGZkLCBod2UpCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2xlZ2FjeV90ZXN0X21v ZGUoZmQsIGh3ZSwgMTYsIDE2LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBDQVRf RVJST1IgfCBNVUxUSV9RVUVVRQo+ID4gfAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBTRUNPTkRBUllfUVVFVUUsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIExFR0FD WV9NT0RFX0FERFIsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZhbHNlKTsKPiA+ ICvCoMKgwqDCoMKgwqDCoH0KPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoGlndF9zdWJ0ZXN0KCJt dWx0aS1xdWV1ZS1ndC1yZXNldCIpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZ3RfcmVxdWlyZShpbnRlbF9ncmFwaGljc192ZXIoaW50ZWxfZ2V0X2RybV9kZXZpZCgKPiA+ IGZkKSkgPj0gSVBfVkVSKDM1LCAwKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgeGVfZm9yX2VhY2hfbXVsdGlfcXVldWVfZW5naW5lKGZkLCBod2UpCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2xlZ2FjeV90ZXN0X21vZGUo ZmQsIGh3ZSwgMTYsIDE2LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHVF9SRVNF VCB8IE1VTFRJX1FVRVVFLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBMRUdBQ1lf TU9ERV9BRERSLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYWxzZSk7Cj4gPiAr wqDCoMKgwqDCoMKgwqB9Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdCgibXVs dGktcXVldWUtY2FuY2VsIikgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGln dF9yZXF1aXJlKGludGVsX2dyYXBoaWNzX3ZlcihpbnRlbF9nZXRfZHJtX2RldmlkKAo+ID4gZmQp KSA+PSBJUF9WRVIoMzUsIDApKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4 ZV9mb3JfZWFjaF9tdWx0aV9xdWV1ZV9lbmdpbmUoZmQsIGh3ZSkKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfbGVnYWN5X3Rlc3RfbW9kZShmZCwg aHdlLCAxNiwgMTYsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1VTFRJX1FVRVVF LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBMRUdBQ1lfTU9ERV9BRERSLAo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYWxzZSk7Cj4gPiArwqDCoMKgwqDCoMKgwqB9 Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdCgibXVsdGktcXVldWUtY2FuY2Vs LW9uLXNlY29uZGFyeSIpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3Rf cmVxdWlyZShpbnRlbF9ncmFwaGljc192ZXIoaW50ZWxfZ2V0X2RybV9kZXZpZCgKPiA+IGZkKSkg Pj0gSVBfVkVSKDM1LCAwKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVf Zm9yX2VhY2hfbXVsdGlfcXVldWVfZW5naW5lKGZkLCBod2UpCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2xlZ2FjeV90ZXN0X21vZGUoZmQsIGh3 ZSwgMTYsIDE2LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBNVUxUSV9RVUVVRSB8 Cj4gPiBTRUNPTkRBUllfUVVFVUUsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIExF R0FDWV9NT0RFX0FERFIsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZhbHNlKTsK PiA+ICvCoMKgwqDCoMKgwqDCoH0KPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoGlndF9zdWJ0ZXN0 KCJtdWx0aS1xdWV1ZS1jbG9zZS1mZCIpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZ3RfcmVxdWlyZShpbnRlbF9ncmFwaGljc192ZXIoaW50ZWxfZ2V0X2RybV9kZXZpZCgK PiA+IGZkKSkgPj0gSVBfVkVSKDM1LCAwKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgeGVfZm9yX2VhY2hfbXVsdGlfcXVldWVfZW5naW5lKGZkLCBod2UpCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2xlZ2FjeV90ZXN0X21v ZGUoLTEsIGh3ZSwgMTYsIDI1NiwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ0xP U0VfRkQgfCBNVUxUSV9RVUVVRSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTEVH QUNZX01PREVfQUREUiwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmFsc2UpOwo+ ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgaWd0X3N1YnRlc3Qo Im11bHRpLXF1ZXVlLWNsb3NlLWV4ZWNxdWV1ZXMiKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWd0X3JlcXVpcmUoaW50ZWxfZ3JhcGhpY3NfdmVyKGludGVsX2dldF9kcm1f ZGV2aWQoCj4gPiBmZCkpID49IElQX1ZFUigzNSwgMCkpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHhlX2Zvcl9lYWNoX211bHRpX3F1ZXVlX2VuZ2luZShmZCwgaHdlKQo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9sZWdhY3lf dGVzdF9tb2RlKC0xLCBod2UsIDE2LCAyNTYsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIENMT1NFX0VYRUNfUVVFVUVTIHwKPiA+IENMT1NFX0ZEIHwKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgTVVMVElfUVVFVUUsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIExFR0FDWV9NT0RFX0FERFIsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZh bHNlKTsKPiA+ICvCoMKgwqDCoMKgwqDCoH0KPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoGlndF9z dWJ0ZXN0KCJjbS1tdWx0aS1xdWV1ZS1jYXQtZXJyb3IiKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWd0X3JlcXVpcmUoaW50ZWxfZ3JhcGhpY3NfdmVyKGludGVsX2dldF9k cm1fZGV2aWQoCj4gPiBmZCkpID49IElQX1ZFUigzNSwgMCkpOwo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHhlX2Zvcl9lYWNoX211bHRpX3F1ZXVlX2VuZ2luZShmZCwgaHdlKQo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2Nv bXB1dGVfbW9kZShmZCwgaHdlLCAxNiwgMTYsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Q0FUX0VSUk9SIHwgTVVMVElfUVVFVUUpOwo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gKwo+ID4g K8KgwqDCoMKgwqDCoMKgaWd0X3N1YnRlc3QoImNtLW11bHRpLXF1ZXVlLWNhdC1lcnJvci1vbi1z ZWNvbmRhcnkiKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3JlcXVp cmUoaW50ZWxfZ3JhcGhpY3NfdmVyKGludGVsX2dldF9kcm1fZGV2aWQoCj4gPiBmZCkpID49IElQ X1ZFUigzNSwgMCkpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2Zvcl9l YWNoX211bHRpX3F1ZXVlX2VuZ2luZShmZCwgaHdlKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2NvbXB1dGVfbW9kZShmZCwgaHdlLCAxNiwg MTYsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ0FUX0VSUk9SIHwgTVVMVElfUVVFVUUg fAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNFQ09OREFSWV9RVUVVRSk7Cj4gPiArwqDC oMKgwqDCoMKgwqB9Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdCgiY20tbXVs dGktcXVldWUtZ3QtcmVzZXQiKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWd0X3JlcXVpcmUoaW50ZWxfZ3JhcGhpY3NfdmVyKGludGVsX2dldF9kcm1fZGV2aWQoCj4gPiBm ZCkpID49IElQX1ZFUigzNSwgMCkpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHhlX2Zvcl9lYWNoX211bHRpX3F1ZXVlX2VuZ2luZShmZCwgaHdlKQo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2NvbXB1dGVfbW9kZShmZCwg aHdlLCAxNiwgMTYsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR1RfUkVTRVQgfCBNVUxU SV9RVUVVRSk7Cj4gPiArwqDCoMKgwqDCoMKgwqB9Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBp Z3Rfc3VidGVzdCgiY20tbXVsdGktcXVldWUtY2xvc2UtZmQiKSB7Cj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWd0X3JlcXVpcmUoaW50ZWxfZ3JhcGhpY3NfdmVyKGludGVsX2dl dF9kcm1fZGV2aWQoCj4gPiBmZCkpID49IElQX1ZFUigzNSwgMCkpOwo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHhlX2Zvcl9lYWNoX211bHRpX3F1ZXVlX2VuZ2luZShmZCwgaHdl KQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0 X2NvbXB1dGVfbW9kZSgtMSwgaHdlLCAxNiwgMjU2LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIENMT1NFX0ZEIHwgTVVMVElfUVVFVUUpOwo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gKwo+ ID4gK8KgwqDCoMKgwqDCoMKgaWd0X3N1YnRlc3QoImNtLW11bHRpLXF1ZXVlLWNsb3NlLWV4ZWNx dWV1ZXMiKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3JlcXVpcmUo aW50ZWxfZ3JhcGhpY3NfdmVyKGludGVsX2dldF9kcm1fZGV2aWQoCj4gPiBmZCkpID49IElQX1ZF UigzNSwgMCkpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2Zvcl9lYWNo X211bHRpX3F1ZXVlX2VuZ2luZShmZCwgaHdlKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2NvbXB1dGVfbW9kZSgtMSwgaHdlLCAxNiwgMjU2 LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIENMT1NFX0VYRUNfUVVFVUVTIHwKPiA+IENM T1NFX0ZEIHwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBNVUxUSV9RVUVVRSk7Cj4gPiAr wqDCoMKgwqDCoMKgwqB9Cj4gPiArCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWd0X2ZpeHR1cmUoKQo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkcm1fY2xvc2VfZHJpdmVyKGZkKTsK PiA+IH0KPiA+IC0tIAo+ID4gMi40My4wCj4gPiAKCg==