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 E7184C4167B for ; Mon, 11 Dec 2023 18:11:22 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AF09B10E114; Mon, 11 Dec 2023 18:11:22 +0000 (UTC) Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5D4B710E114 for ; Mon, 11 Dec 2023 18:11:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1702318281; x=1733854281; h=message-id:subject:from:to:cc:date:in-reply-to: references:content-transfer-encoding:mime-version; bh=ikwZNya6CMekooOVitSQf9txI9Gmwp+LSt16x43w8DM=; b=e5FW5C4XyKrSbRQM45BfdYaiv4gZSxEAVSbqGgkLJHszER3a+H4i7NCo y/tkLFo+tgLK2By3bFXQmSzCksRwS9zy4Wy7uW9GphxPOSpxYcCMTDaW9 xE0fqJQAKqYV7t4+Lvx0gDk+OgjpYJl5BBmTdIqDmAJJ4a1lkdeLiedXQ Ts88R97GHdt0RjJtDIE5CAOnqsTH0CgBblGSnoErzFmjsw+twZSXX945g l7RaCePgU/zy6aqJfPftyknG5xDlkkJpUlSdn1nx5Pibt5kbJ8LNCz8Qd wKgJ4v4l2hj6/gkcJCZYfW0KTXm4R23pff30JACWLMONnAypWwvdVZKIz g==; X-IronPort-AV: E=McAfee;i="6600,9927,10921"; a="397475725" X-IronPort-AV: E=Sophos;i="6.04,268,1695711600"; d="scan'208";a="397475725" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Dec 2023 10:11:20 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10921"; a="766474743" X-IronPort-AV: E=Sophos;i="6.04,268,1695711600"; d="scan'208";a="766474743" Received: from jhpuonti-mobl.ger.corp.intel.com (HELO [10.249.254.237]) ([10.249.254.237]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Dec 2023 10:11:18 -0800 Message-ID: Subject: Re: [RFC PATCH 7/7] drm/xe/uapi: Uniform async vs sync handling From: Thomas =?ISO-8859-1?Q?Hellstr=F6m?= To: Matthew Brost Date: Mon, 11 Dec 2023 19:11:15 +0100 In-Reply-To: References: <20231207055729.438642-1-matthew.brost@intel.com> <20231207055729.438642-8-matthew.brost@intel.com> <4a814fc8-6e05-c5fb-8ff5-492a6e14aebc@linux.intel.com> Organization: Intel Sweden AB, Registration Number: 556189-6027 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.46.4 (3.46.4-1.fc37) MIME-Version: 1.0 X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Francois Dugast , intel-xe@lists.freedesktop.org, Rodrigo Vivi Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" T24gTW9uLCAyMDIzLTEyLTExIGF0IDE2OjQ5ICswMDAwLCBNYXR0aGV3IEJyb3N0IHdyb3RlOgo+ IE9uIE1vbiwgRGVjIDExLCAyMDIzIGF0IDA0OjQzOjA2UE0gKzAxMDAsIFRob21hcyBIZWxsc3Ry w7ZtIHdyb3RlOgo+ID4gCj4gPiBPbiAxMi84LzIzIDEwOjQ1LCBNYXR0aGV3IEJyb3N0IHdyb3Rl Ogo+ID4gPiBPbiBGcmksIERlYyAwOCwgMjAyMyBhdCAwNDowMDozN1BNICswMTAwLCBUaG9tYXMg SGVsbHN0csO2bSB3cm90ZToKPiA+ID4gPiBPbiAxMi83LzIzIDA2OjU3LCBNYXR0aGV3IEJyb3N0 IHdyb3RlOgo+ID4gPiA+ID4gUmVtb3ZlIGNvbmNlcHQgb2YgYXN5bmMgdnMgc3luYyBWTSBiaW5k IHF1ZXVlcywgcmF0aGVyIG1ha2UKPiA+ID4gPiA+IGFzeW5jIHZzCj4gPiA+ID4gPiBzeW5jIGEg cGVyIElPQ1RMIGNob2ljZS4gU2luY2UgdGhpcyBpcyBwZXIgSU9DVEwsIGl0IG1ha2VzCj4gPiA+ ID4gPiBzZW5zZSB0byBoYXZlCj4gPiA+ID4gPiBhIHNpbmd1bGFyIGZsYWcgSU9DVEwgcmF0aGVy IHRoYW4gcGVyIFZNIGJpbmQgb3AgZmxhZyB0b28uCj4gPiA+ID4gPiBBZGQKPiA+ID4gPiA+IERS TV9YRV9TWU5DU19GTEFHX1dBSVRfRk9SX09QIHdoaWNoIGlzIGFuIGlucHV0IHN5bmMgZmxhZyB0 bwo+ID4gPiA+ID4gc3VwcG9ydAo+ID4gPiA+ID4gdGhpcy4gU3VwcG9ydCB0aGlzIG5ldyBmbGFn IGZvciBib3RoIHRoZSBWTSBiaW5kIElPQ1RMIGFuZAo+ID4gPiA+ID4gdGhlIGV4ZWMKPiA+ID4g PiA+IElPQ1RMIHRvIG1hdGNoIGJlaGF2aW9yLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBDYzogUm9k cmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+ID4gPiA+ID4gQ2M6IFRob21hcyBI ZWxsc3Ryw7ZtIDx0aG9tYXMuaGVsbHN0cm9tQGxpbnV4LmludGVsLmNvbT4KPiA+ID4gPiA+IENj OiBGcmFuY29pcyBEdWdhc3QgPGZyYW5jb2lzLmR1Z2FzdEBpbnRlbC5jb20+Cj4gPiA+ID4gPiBT aWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVsLmNvbT4KPiA+ ID4gPiA+IC0tLQo+ID4gPiA+ID4gwqDCoCBkcml2ZXJzL2dwdS9kcm0veGUveGVfZXhlYy5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA1OCArKysrKysrKy0tLQo+ID4gPiA+ID4gLQo+ID4g PiA+ID4gwqDCoCBkcml2ZXJzL2dwdS9kcm0veGUveGVfZXhlY19xdWV1ZS5jwqDCoMKgwqDCoMKg IHzCoMKgIDcgKy0KPiA+ID4gPiA+IMKgwqAgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2V4ZWNfcXVl dWVfdHlwZXMuaCB8wqDCoCAyIC0KPiA+ID4gPiA+IMKgwqAgZHJpdmVycy9ncHUvZHJtL3hlL3hl X3ZtLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTEwICsrKysrKysrKystCj4gPiA+ ID4gPiAtLS0tLS0tLS0tLS0KPiA+ID4gPiA+IMKgwqAgZHJpdmVycy9ncHUvZHJtL3hlL3hlX3Zt X3R5cGVzLmjCoMKgwqDCoMKgwqDCoMKgIHzCoCAxNSArKy0tCj4gPiA+ID4gPiDCoMKgIGluY2x1 ZGUvdWFwaS9kcm0veGVfZHJtLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDU2 ICsrKysrKystLS0tCj4gPiA+ID4gPiAtCj4gPiA+ID4gPiDCoMKgIDYgZmlsZXMgY2hhbmdlZCwg MTI5IGluc2VydGlvbnMoKyksIDExOSBkZWxldGlvbnMoLSkKPiA+ID4gPiA+IAo+ID4gPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9leGVjLmMKPiA+ID4gPiA+IGIvZHJp dmVycy9ncHUvZHJtL3hlL3hlX2V4ZWMuYwo+ID4gPiA+ID4gaW5kZXggOTJiMGRhNjU4MGU4Li5j NjJjYWJmYWExMTIgMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVf ZXhlYy5jCj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZXhlYy5jCj4gPiA+ ID4gPiBAQCAtMTMwLDEyICsxMzAsMTUgQEAgc3RhdGljIGludCB4ZV9leGVjX2JlZ2luKHN0cnVj dAo+ID4gPiA+ID4gZHJtX2V4ZWMgKmV4ZWMsIHN0cnVjdCB4ZV92bSAqdm0pCj4gPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiA+ID4gPiA+IMKgwqAgfQo+ID4gPiA+ID4gKyNk ZWZpbmUgQUxMX0RSTV9YRV9TWU5DU19GTEFHUwo+ID4gPiA+ID4gKERSTV9YRV9TWU5DU19GTEFH X1dBSVRfRk9SX09QKQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gwqDCoCBpbnQgeGVfZXhlY19pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ID4gPiA+ID4gc3RydWN0IGRy bV9maWxlICpmaWxlKQo+ID4gPiA+ID4gwqDCoCB7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKg c3RydWN0IHhlX2RldmljZSAqeGUgPSB0b194ZV9kZXZpY2UoZGV2KTsKPiA+ID4gPiA+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZmlsZSAqeGVmID0gdG9feGVfZmlsZShmaWxlKTsKPiA+ID4g PiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX3hlX2V4ZWMgKmFyZ3MgPSBkYXRhOwo+ID4g PiA+ID4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IGRybV94ZV9zeW5jIF9fdXNlciAqc3luY3NfdXNl ciA9Cj4gPiA+ID4gPiB1NjRfdG9fdXNlcl9wdHIoYXJncy0+c3luY3MpOwo+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgc3RydWN0IGRybV94ZV9zeW5jIF9fdXNlciAqc3luY3NfdXNlciA9Cj4gPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTY0X3RvX3VzZXJfcHRyKGFyZ3Mt PnN5bmNzLnN5bmNzKTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqB1NjQgX191c2VyICphZGRy ZXNzZXNfdXNlciA9IHU2NF90b191c2VyX3B0cihhcmdzLQo+ID4gPiA+ID4gPmFkZHJlc3MpOwo+ ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9leGVjX3F1ZXVlICpxOwo+ID4gPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9zeW5jX2VudHJ5ICpzeW5jcyA9IE5VTEw7Cj4g PiA+ID4gPiBAQCAtMTQzLDE1ICsxNDYsMTggQEAgaW50IHhlX2V4ZWNfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UKPiA+ID4gPiA+ICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmls ZSkKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2V4ZWMgZXhlYzsKPiA+ID4g PiA+IMKgwqDCoMKgwqDCoMKgwqB1MzIgaSwgbnVtX3N5bmNzID0gMDsKPiA+ID4gPiA+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgeGVfc2NoZWRfam9iICpqb2I7Cj4gPiA+ID4gPiAtwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgZG1hX2ZlbmNlICpyZWJpbmRfZmVuY2U7Cj4gPiA+ID4gPiArwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgZG1hX2ZlbmNlICpyZWJpbmRfZmVuY2UsICpqb2JfZmVuY2U7Cj4gPiA+ID4g PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX3ZtICp2bTsKPiA+ID4gPiA+IC3CoMKgwqDCoMKg wqDCoGJvb2wgd3JpdGVfbG9ja2VkOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgYm9vbCB3cml0 ZV9sb2NrZWQsIHNraXBfam9iX3B1dCA9IGZhbHNlOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg Ym9vbCB3YWl0ID0gYXJncy0+c3luY3MuZmxhZ3MgJgo+ID4gPiA+ID4gRFJNX1hFX1NZTkNTX0ZM QUdfV0FJVF9GT1JfT1A7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKga3RpbWVfdCBlbmQgPSAw Owo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGludCBlcnIgPSAwOwo+ID4gPiA+ID4gwqDCoMKg wqDCoMKgwqDCoGlmIChYRV9JT0NUTF9EQkcoeGUsIGFyZ3MtPmV4dGVuc2lvbnMpIHx8Cj4gPiA+ ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqAgWEVfSU9DVExfREJHKHhlLCBhcmdzLT5wYWRbMF0g fHwgYXJncy0+cGFkWzFdIHx8Cj4gPiA+ID4gPiBhcmdzLT5wYWRbMl0pIHx8Cj4gPiA+ID4gPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqAgWEVfSU9DVExfREJHKHhlLCBhcmdzLT5yZXNlcnZlZFswXSB8 fCBhcmdzLQo+ID4gPiA+ID4gPnJlc2VydmVkWzFdKSkKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoCBYRV9JT0NUTF9EQkcoeGUsIGFyZ3MtPnBhZCB8fCBhcmdzLT5wYWQyWzBdIHx8Cj4g PiA+ID4gPiBhcmdzLT5wYWQyWzFdIHx8IGFyZ3MtPnBhZDJbMl0pIHx8Cj4gPiA+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqAgWEVfSU9DVExfREJHKHhlLCBhcmdzLT5yZXNlcnZlZFswXSB8fCBh cmdzLQo+ID4gPiA+ID4gPnJlc2VydmVkWzFdKSB8fAo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgIFhFX0lPQ1RMX0RCRyh4ZSwgYXJncy0+c3luY3MuZmxhZ3MgJgo+ID4gPiA+ID4gfkFM TF9EUk1fWEVfU1lOQ1NfRkxBR1MpIHx8Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg WEVfSU9DVExfREJHKHhlLCB3YWl0ICYmIGFyZ3MtPnN5bmNzLm51bV9zeW5jcykpCj4gPiA+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ID4gPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoHEgPSB4ZV9leGVjX3F1ZXVlX2xvb2t1cCh4ZWYsIGFyZ3MtPmV4 ZWNfcXVldWVfaWQpOwo+ID4gPiA+ID4gQEAgLTE3MCw4ICsxNzYsOSBAQCBpbnQgeGVfZXhlY19p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gPiA+ID4gdm9pZCAqZGF0YSwgc3RydWN0 IGRybV9maWxlICpmaWxlKQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBnb3RvIGVycl9leGVjX3F1ZXVlOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+ID4g PiA+IC3CoMKgwqDCoMKgwqDCoGlmIChhcmdzLT5udW1fc3luY3MpIHsKPiA+ID4gPiA+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW5jcyA9IGtjYWxsb2MoYXJncy0+bnVtX3N5bmNz LAo+ID4gPiA+ID4gc2l6ZW9mKCpzeW5jcyksIEdGUF9LRVJORUwpOwo+ID4gPiA+ID4gK8KgwqDC oMKgwqDCoMKgaWYgKGFyZ3MtPnN5bmNzLm51bV9zeW5jcykgewo+ID4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bmNzID0ga2NhbGxvYyhhcmdzLT5zeW5jcy5udW1fc3lu Y3MsCj4gPiA+ID4gPiBzaXplb2YoKnN5bmNzKSwKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEdGUF9LRVJORUwp Owo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIXN5bmNzKSB7 Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBlcnIgPSAtRU5PTUVNOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZ290byBlcnJfZXhlY19xdWV1ZTsKPiA+ID4gPiA+IEBAIC0xODAs NyArMTg3LDcgQEAgaW50IHhlX2V4ZWNfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ ID4gPiA+IHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiA+ID4gPiA+IMKgwqDC oMKgwqDCoMKgwqB2bSA9IHEtPnZtOwo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgZm9yIChpID0g MDsgaSA8IGFyZ3MtPm51bV9zeW5jczsgaSsrKSB7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBm b3IgKGkgPSAwOyBpIDwgYXJncy0+c3luY3MubnVtX3N5bmNzOyBpKyspIHsKPiA+ID4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0geGVfc3luY19lbnRyeV9wYXJzZSh4 ZSwgeGVmLAo+ID4gPiA+ID4gJnN5bmNzW251bV9zeW5jcysrXSwKPiA+ID4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgJnN5bmNzX3VzZXJbaV0sCj4gPiA+ID4gPiBTWU5DX1BBUlNFX0ZM QUdfRVhFQyB8Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiA+ID4gPiAo eGVfdm1faW5fbHJfbW9kZSh2bSkgPwo+ID4gPiA+ID4gQEAgLTI0NSw5ICsyNTIsMTcgQEAgaW50 IHhlX2V4ZWNfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UKPiA+ID4gPiA+ICpkZXYsIHZvaWQgKmRh dGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSBQVFJfRVJS KGZlbmNlKTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIGVycl9leGVjOwo+ID4gPiA+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Zm9yIChpID0gMDsgaSA8IG51bV9zeW5jczsgaSsrKQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX3N5bmNf ZW50cnlfc2lnbmFsKCZzeW5jc1tpCj4gPiA+ID4gPiBdLCBOVUxMLCBmZW5jZSk7Cj4gPiA+ID4g PiArCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB4ZV9leGVjX3F1ZXVlX2xhc3RfZmVuY2Vfc2V0KHEsIHZtLAo+ID4gPiA+ID4gZmVuY2Up Owo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAod2FpdCkgewo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbG9uZyB0aW1lb3V0ID0KPiA+ID4gPiA+IGRt YV9mZW5jZV93YWl0KGZlbmNlLCB0cnVlKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlm ICh0aW1lb3V0IDwgMCkKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSAtRUlO VFI7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH0KPiA+ID4gPiBIZXJlIGl0IGxvb2tzIGxpa2Ugd2Ugd2lsbCByZXJ1biB0aGUgc2FtZSBJ T0NUTCBhZ2FpbiBpZiB3ZQo+ID4gPiA+IHJldHVybiAtRUlOVFIuCj4gPiA+ID4gVGhlIHVzZXIt c3BhY2UgZXhwZWN0ZWQgYWN0aW9uIG9uIC1FSU5UUiBpcyB0byBqdXN0IHJlc3RhcnQgdGhlCj4g PiA+ID4gSU9DVEwKPiA+ID4gPiB3aXRob3V0IGFueSBhcmd1bWVudCBjaGFuZ2VzLiBTb2x1dGlv biBpcyB0byBhZGQgYW4gaW9jdGwKPiA+ID4gPiBhcmd1bWVudCBjb29raWUKPiA+ID4gPiAob3Ig dG8gc2tpcCBzeW5jIHZtIGJpbmRzIGFuZCBoYXZlIHRoZSB1c2VyIGp1c3QgdXNlIHRoZSAwCj4g PiA+ID4gYmF0Y2ggYnVmZmVycyAvCj4gPiA+ID4gdm1fYmluZHMgY2FsbHMgb3Igd2FpdCBmb3Ig YW4gb3V0LWZlbmNlKS4gSWYgeW91IGdvIGZvciB0aGUKPiA+ID4gPiBjb29raWUgc29sdXRpb24K PiA+ID4gPiB0aGVuIElNTyB3ZSBzaG91bGQga2VlcCB0aGUgLUVSRVNUQVJUU1lTIHJldHVybmVk IGZyb20KPiA+ID4gPiBkbWFfZmVuY2Vfd2FpdCgpCj4gPiA+ID4gc2luY2UgaXQncyBjb252ZXJ0 ZWQgdG8gLUVJTlRSIG9uIHJldHVybi10by11c2VyLXNwYWNlLCBhbmQgdGhlCj4gPiA+ID4ga2Vy bmVsCj4gPiA+ID4gcmVzdGFydHMgdGhlIElPQ1RMIGF1dG9tYXRpY2FsbHkgaWYgdGhlcmUgd2Fz IG5vIHJlcXVlc3RlZC1mb3ItCj4gPiA+ID4gZGVsaXZlcnkKPiA+ID4gPiBzaWduYWwgcGVuZGlu Zy4KPiA+ID4gPiAKPiA+ID4gPiBJIHRoaW5rIHRoZSBzaW1wbGVzdCBzb2x1dGlvbiBhdCB0aGlz IHBvaW50IGlzIHRvIHNraXAgdGhlIHN5bmMKPiA+ID4gPiBiZWhhdmlvdXIsCj4gPiA+ID4gaW4g cGFydGljdWxhciBpZiB3ZSBlbmFibGUgdGhlIDAgYmF0Y2ggLyBiaW5kIHBvc3NpYmlsaXR5Lgo+ ID4gPiA+IAo+ID4gPiA+IElmIHdlIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBpdCwgd2UgY291bGQg YWRkIGEgY29va2llIGFkZHJlc3MKPiA+ID4gPiBhcyBhbgo+ID4gPiA+IGV4dGVuc2lvbiB0byB0 aGUgaW9jdGwgYW5kIGFjdGl2YXRlIHN5bmMgaWYgcHJlc2VudD8gKEp1c3QKPiA+ID4gPiB0aHJv d2luZyB1cCBpZGVhcwo+ID4gPiA+IGhlcmUpLgo+ID4gPiA+IAo+ID4gPiBIbW0sIGZvcmdvdCBh Ym91dCB0aGlzLiBBIGNvb2tpZSBpcyBmYWlybHkgZWFzeSwgd2hhdCBhYm91dAo+ID4gPiBzb21l dGhpbmcgbGlrZSB0aGlzOgo+ID4gPiAKPiA+ID4gwqAgODA3IC8qKgo+ID4gPiDCoCA4MDjCoCAq IHN0cnVjdCBkcm1feGVfc3luY3MgLSBJbiAvIG91dCBzeW5jcyBmb3IgSU9DVExzLgo+ID4gPiDC oCA4MDnCoCAqLwo+ID4gPiDCoCA4MTAgc3RydWN0IGRybV94ZV9zeW5jcyB7Cj4gPiA+IMKgIDgx McKgwqDCoMKgwqDCoMKgwqAgLyoqIEBudW1fc3luY3M6IGFtb3VudCBvZiBzeW5jcyB0byB3YWl0 IG9uICovCj4gPiA+IMKgIDgxMsKgwqDCoMKgwqDCoMKgwqAgX191MzIgbnVtX3N5bmNzOwo+ID4g PiDCoCA4MTMKPiA+ID4gwqAgODE0wqDCoMKgwqDCoMKgwqDCoCAvKgo+ID4gPiDCoCA4MTXCoMKg wqDCoMKgwqDCoMKgwqAgKiBCbG9jayBpbiBJT0NUTCB1bnRpbCBvcGVyYXRpb24gY29tcGxldGUs Cj4gPiA+IG51bV9zeW5jcyBNQlogaWYgc2V0Lgo+ID4gPiDCoCA4MTbCoMKgwqDCoMKgwqDCoMKg wqAgKi8KPiA+ID4gwqAgODE3ICNkZWZpbmUgRFJNX1hFX1NZTkNTX0lOX0ZMQUdfV0FJVF9GT1Jf T1AgKDEgPDwgMCkKPiA+ID4gwqAgODE4wqDCoMKgwqDCoMKgwqDCoCAvKiogQGluX2ZsYWdzOiBJ bnB1dCBTeW5jIGZsYWdzICovCj4gPiA+IMKgIDgxOcKgwqDCoMKgwqDCoMKgwqAgX191MTYgaW5f ZmxhZ3M7Cj4gPiA+IMKgIDgyMAo+ID4gPiDCoCA4MjHCoMKgwqDCoMKgwqDCoMKgIC8qCj4gPiA+ IMKgIDgyMsKgwqDCoMKgwqDCoMKgwqDCoCAqIElPQ1RMIG9wZXJhdGlvbiBoYXMgc3RhcnRlZCAo bm8gbmVlZCBmb3IgdXNlciB0bwo+ID4gPiByZXN1Ym1pdCBvbgo+ID4gPiDCoCA4MjPCoMKgwqDC oMKgwqDCoMKgwqAgKiAtRVJFU1RBUlRTWVMpCj4gPiA+IMKgIDgyNMKgwqDCoMKgwqDCoMKgwqDC oCAqLwo+ID4gPiDCoCA4MjUgI2RlZmluZSBEUk1fWEVfU1lOQ1NfT1VUX0ZMQUdfT1BfQ09NTUlU VEVEICgxIDw8IDApCj4gPiA+IMKgIDgyNsKgwqDCoMKgwqDCoMKgwqAgLyoqIEBvdXRfZmxhZ3M6 IE91dHB1dCBTeW5jIGZsYWdzICovCj4gPiA+IMKgIDgyN8KgwqDCoMKgwqDCoMKgwqAgX191MTYg b3V0X2ZsYWdzOwo+ID4gPiDCoCA4MjgKPiA+ID4gwqAgODI5wqDCoMKgwqDCoMKgwqDCoCAvKiog QHN5bmNzOiBwb2ludGVyIHRvIHN0cnVjdCBkcm1feGVfc3luYyBhcnJheSAqLwo+ID4gPiDCoCA4 MzDCoMKgwqDCoMKgwqDCoMKgIF9fdTY0IHN5bmNzOwo+ID4gPiDCoCA4MzEKPiA+ID4gwqAgODMy wqDCoMKgwqDCoMKgwqDCoCAvKiogQHJlc2VydmVkOiBSZXNlcnZlZCAqLwo+ID4gPiDCoCA4MzPC oMKgwqDCoMKgwqDCoMKgIF9fdTY0IHJlc2VydmVkWzJdOwo+ID4gPiDCoCA4MzQgfTsKPiA+ID4g Cj4gPiA+IERSTV9YRV9TWU5DU19PVVRfRkxBR19PUF9DT01NSVRURUQgZ2V0cyBzZXQgaW4gZXhl YyAvIGJpbmQgSU9DVEwKPiA+ID4gYWZ0ZXIKPiA+ID4gdGhlIGpvYiBpcyBjb21taXR0ZWQgb3Ig aW4gdGhlIG9mIHplcm8gb3BzIGxhc3QtZmVuY2UgdXBkYXRlZCBvbgo+ID4gPiB0aGUKPiA+ID4g cXVldWUuIE5vdGUgdGhhdCBmb3IgYmluZHMgd2UgZG9uJ3QgeWV0IGRvIDEgam9iIHBlciBJT0NU TCBidXQKPiA+ID4gYWZ0ZXIKPiA+ID4gbGFuZGluZyBzb21lIHZlcnNpb24gb2YgWzFdCj4gPiA+ IAo+ID4gPiBBZnRlciBEUk1fWEVfU1lOQ1NfT1VUX0ZMQUdfT1BfQ09NTUlUVEVEIGlzIHNldCB3 ZSByZXR1cm4gLQo+ID4gPiBFUkVTVEFSVFNZUyBpZgo+ID4gPiB0aGUgd2FpdCBpcyBpbnRlcnJ1 cHRlZCBhbmQgLUVJTlRSIGlzIHN0aWxsCj4gPiA+IERSTV9YRV9TWU5DU19PVVRfRkxBR19PUF9D T01NSVRURUQgKGludGVycnVwdGVkIGJlZm9yZSBqb2IgaXMKPiA+ID4gY29tbWl0dGVkKS4KPiA+ ID4gCj4gPiA+IEknZCByYXRoZXIgZ28gd2l0aCBwYXRjaCBhcyB3ZSBoYXZlIHRvIGNoYW5nZSB0 aGUgdUFQSSBoZXJlCj4gPiA+IHJlZ2FyZGxlc3MKPiA+ID4gc28gd2UgbWlnaHQgYXMgd2VsbCBt YWtlIHRoaXMgY29tcGxldGUuCj4gPiA+IAo+ID4gPiBNYXR0Cj4gPiA+IAo+ID4gPiBbMV0gaHR0 cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3Nlcmllcy8xMjU2MDgvCj4gPiAKPiA+IFll YWggYXMgd2UgZGlzY3Vzc2VkIGluIHRoZSBtZWV0aW5nIHRoYXQgbWVhbnMgbWFraW5nIHRoZSBp b2N0bCBSVwo+ID4gaW5zdGVhZAo+ID4gb2YgVyB3aXRoIHNvbWUgY29weWluZyBvdmVyaGVhZC4K PiA+IAo+ID4gSSBhbHNvIHRoaW5rIHdlIHNob3VsZCBsZWF2ZSB0aGUgRVhFQyBpb2N0bCBvdXQg b2YgdGhpcywgbWVhbmluZwo+ID4ganVzdCBoYXZpbmcKPiA+IGEgc2luZ2xlIGZpZWxkIGluIHRo ZSBWTV9CSU5EIGlvY3RsLiBCYXNpY2FsbHkgdGhlIHJlYXNvbiBpcyB0aGF0Cj4gPiB3YWl0aW5n Cj4gPiBsaWtlIHRoaXMgYWZ0ZXIgc3VibWlzc2lvbiBpcyBhIGJpdCB3ZWlyZCBhbmQgZG9lcyBu b3QgYWxpZ24gd2VsbAo+ID4gd2l0aCBob3cKPiA+IC1FSU5UUiBpcyB0eXBpY2FsbHkgdXNlZC4K PiA+IAo+IAo+IEkga2luZGEgbGlrZSB1bmlmb3JtIGJlaGF2aW9yIGJldHdlZW4gZXhlYyBhbmQg YmluZHMgd2l0aCB0aGUKPiBiZWhhdmlvcgo+IGRlZmluZWQgaW4gYSBjb21tb24gc3luYyBzdHJ1 Y3R1cmUuCgpFdmVuIHNvLCBJIHN0cm9uZ2x5IHRoaW5rIHdlIHNob3VsZCAqbm90KiBpbiBhbnkg d2F5IGV4cG9zZSB0aGlzIGZvcgpleGVjLiBJZiBuZWVkZWQgdGhlIHVzZXIgY2FuIGp1c3Qgd2Fp dCBmb3IgYW4gb3V0LWZlbmNlIGFuZCB0aGVuIHdlCmRvbid0IG5lZWQgdG8gaW1wbGVtZW50IGNv ZGUgZm9yIHRoaXMgdGhhdCB3aWxsIHByb2JhYmx5IG5ldmVyIGdldCB1c2VkCmFuZCB3aXRoIGFu IGltcGxlbWVudGF0aW9uIHRoYXQgdmVyeSBmZXcgd2lsbCB1bmRlcnN0YW5kLgoKRnVydGhlcm1v cmUgdGhlIHN5bmMgVk1fQklORCBpb2N0bCBwZXIgdGhlIEFTWU5DIFZNX0JJTkQgZG9jIGRvZXNu J3QKYWxsb3cgbmVpdGhlciBpbi1mZW5jZXMgbm9yIG91dCBmZW5jZXMsIHNvIGdyb3VwaW5nIGxp a2UgdGhpcyBiZWNvbWVzIGEKYml0IG92ZXJraWxsLgoKPiAKPiA+IFNvIGVpdGhlciBhIHBvaW50 ZXIgdG8gYSBjb29raWUgaW4gdGhlIGlvY3RsLAo+ID4gCj4gCj4gV2hhdCBhYm91dDoKPiAKPiAx MTkgPiA+wqDCoCA4MDcgLyoqCj4gMTIwID4gPsKgwqAgODA4wqAgKiBzdHJ1Y3QgZHJtX3hlX3N5 bmNzIC0gSW4gLyBvdXQgc3luY3MgZm9yIElPQ1RMcy4KPiAxMjEgPiA+wqDCoCA4MDnCoCAqLwo+ IDEyMiA+ID7CoMKgIDgxMCBzdHJ1Y3QgZHJtX3hlX3N5bmNzIHsKPiAxMjMgPiA+wqDCoCA4MTHC oMKgwqDCoMKgwqDCoMKgIC8qKiBAbnVtX3N5bmNzOiBhbW91bnQgb2Ygc3luY3MgdG8gd2FpdCBv biAqLwo+IDEyNCA+ID7CoMKgIDgxMsKgwqDCoMKgwqDCoMKgwqAgX191MzIgbnVtX3N5bmNzOwo+ IDEyNSA+ID7CoMKgIDgxMwo+IDEyNiA+ID7CoMKgIDgxNMKgwqDCoMKgwqDCoMKgwqAgLyoKPiAx MjcgPiA+wqDCoCA4MTXCoMKgwqDCoMKgwqDCoMKgwqAgKiBCbG9jayBpbiBJT0NUTCB1bnRpbCBv cGVyYXRpb24gY29tcGxldGUsCj4gbnVtX3N5bmNzIE1CWiBpZiBzZXQuCj4gMTI4ID4gPsKgwqAg ODE2wqDCoMKgwqDCoMKgwqDCoMKgICovCj4gMTI5ID4gPsKgwqAgODE3ICNkZWZpbmUgRFJNX1hF X1NZTkNTX0lOX0ZMQUdfV0FJVF9GT1JfT1AgKDEgPDwgMCkKPiAxMzAgPiA+wqDCoCA4MTjCoMKg wqDCoMKgwqDCoMKgIC8qKiBAZmxhZ3M6IFN5bmMgZmxhZ3MgKi8KPiAxMzEgPiA+wqDCoCA4MTnC oMKgwqDCoMKgwqDCoMKgIF9fdTMyIGluX2ZsYWdzOwo+IDEzMiA+ID7CoMKgIDgyMAo+IDEzOCA+ ID7CoMKgIDgyNsKgwqDCoMKgwqDCoMKgwqAgLyoqIEBjb29raWU6IHVzZXJwdHIgY29va2llIHdy aXR0ZW4gYmFjayB3aXRoCj4gbm9uLXplcm8gdmFsdWUgb25jZSBvcGVyYXRpb24gY29tbWl0dGVk LCBvbmx5IHZhbGlkIHdoZW4gSU9DVEwKPiByZXR1cm5zIC1FSU5UUiAqLwo+IDEzOSA+ID7CoMKg IDgyN8KgwqDCoMKgwqDCoMKgwqAgX191NjQgY29va2llOwo+IDE0MCA+ID7CoMKgIDgyOAo+IDE0 MSA+ID7CoMKgIDgyOcKgwqDCoMKgwqDCoMKgwqAgLyoqIEBzeW5jczogcG9pbnRlciB0byBzdHJ1 Y3QgZHJtX3hlX3N5bmMgYXJyYXkKPiAqLwo+IDE0MiA+ID7CoMKgIDgzMMKgwqDCoMKgwqDCoMKg wqAgX191NjQgc3luY3M7Cj4gMTQzID4gPsKgwqAgODMxCj4gMTQ0ID4gPsKgwqAgODMywqDCoMKg wqDCoMKgwqDCoCAvKiogQHJlc2VydmVkOiBSZXNlcnZlZCAqLwo+IDE0NSA+ID7CoMKgIDgzM8Kg wqDCoMKgwqDCoMKgwqAgX191NjQgcmVzZXJ2ZWRbMl07Cj4gMTQ2ID4gPsKgwqAgODM0IH07Cj4g Cj4gQWxzbyBpZiBjb29raWUgaXMgMCwgd2Ugd2FpdCB1bmludGVycnVwdGFibGUgb25jZSB0aGUg b3AgaXMKPiBjb21taXR0ZWQ/CgpJJ20gYWZyYWlkIEkgZG9uJ3QgZm9sbG93LiBUaGUgKmludGVy cnVwdGlibGUqIHdhaXQgYWZ0ZXIgY29tbWl0IGlzCndoYXQgdHJpZ2dlciB0aGUgbmVlZCBmb3Ig YSBjb29raWUgaW4gdGhlIGZpcnN0IHBsYWNlPyBBbHNvIGhlcmUsCkBjb29raWUgaXMgc3RpbGwg cmVhZC1vbmx5IGZvciB0aGUga2VybmVsIHNpbmNlIHRoZSBzdHJ1Y3QgZHJtX3hlX3N5bmNzCmlz IGVtYmVkZGVkIGluIHRoZSBpb2N0bC4gQWxzbyBJIHRoaW5rIGFueSBjb29raWUgc2hvdWxkIGJl IG9wYXF1ZSB0bwp0aGUgdXNlciwgb3RoZXIgdGhhbiB0aGF0IGl0IG11c3QgbXVzdCBiZSAwIGlm IG5vdCBjYWxsaW5nIGFmdGVyIGFuIC0KRVJFU1RBUlQuCgo+IAo+ID4gb3IgcGVyaGFwcyBkaWcg dXAgYWdhaW4gdGhlIGlkZWEgd2UgaGFkIG9mIG1vc3RseSB3YWl0aW5nIGJlZm9yZQo+ID4gdGhl Cj4gPiBzdWJtaXNzaW9uOgo+ID4gCj4gPiAxKSBQdWxsIG91dCB0aGUgbGFzdF9vcCBmZW5jZSBm b3IgdGhlIHF1ZXVlIGZyb20gdW5kZXIgdGhlIHJlbGV2YW50Cj4gPiBsb2NrLgo+ID4gMikgV2Fp dCBmb3IgYWxsIGRlcGVuZGVuY2llcyB3aXRob3V0IGFueSBsb2Nrcy4KPiA+IDMpIExvY2ssIGFu ZCAob3B0aW9uYWxseSkgaWYgdGhlIGxhc3Rfb3AgZmVuY2UgY2hhbmdlZCwgd2FpdCBmb3IKPiA+ IGl0Lgo+ID4gNCkgU3VibWl0Cj4gPiA1KSBXYWl0IGZvciBjb21wbGV0aW9uIHVuaW50ZXJydXB0 aWJsZS4KPiA+IAo+IAo+IFdlIGNhbiBhbHdheXMgY2hhbmdlIHRoZSBpbnRlcm5hbCBpbXBsZW1l bnRhdGlvbiB0byBzb21ldGhpbmcgbGlrZQo+IHRoaXMKPiBhZnRlciBbMV0uIFRoYXQgc2VyaWVz IG1ha2VzIHJlZmFjdG9ycyBsaWtlIHRoaXMgcXVpdGUgYSBiaXQgZWFzaWVyLgoKV2VsbCB0aGUg aWRlYSBvZiB0aGUgYWJvdmUgMSkgLSA1KSB3YXMgdGhhdCB3ZSB3b3VsZG4ndCBiZSBuZWVkaW5n IGFueQpjb29raWUgYXQgYWxsLCBzaW5jZSB0aGUgd2FpdCBpbiA1KSB3b3VsZCBiZSBzaG9ydCwg YW5kIHdlIHRoZXJlZm9yZQpjb3VsZCBnZXQgYXdheSB3aXRoIGltcGxlbWVudGluZyBpdCB1bmlu dGVycnVwdGlibGUuIElmIHRoYXQgdHVybmVkIG91dAp0byBiZSBiYWQsIFdlIGFkZCB0aGUgY29v a2llIGFzIGFuIGV4dGVuc2lvbi4gSW5pdGlhbCBpbXBsZW1lbnRhdGlvbgpjYW4gZXZlbiB1c2Ug dW5pbnRlcnJ1cHRpYmxlIHdhaXRzIGZvciBzaW1wbGljaXR5LgoKVG8gc3VtbWFyaXplOgoKKiBJ IHN0cm9uZ2x5IGRvbid0IHRoaW5rIHdlIHNob3VsZCBzdXBwb3J0IHN5bmMgZXhlYyBjYWxscy4K KiBObyBpbi1zeW5jcyBvciBvdXQtc3luY3MgaWYgU1lOQy4KKiBBIGZsYWcgdG8gdHJpZ2dlciBz eW5jIGJpbmRzLiBTeW5jcyBjb3VsZCBiZSBpbiBhIHNlcGFyYXRlIHN0cnVjdCwKYnV0IG5vdCBy ZWFsbHkgbmVlZGVkIGlmIHdlIGRvbid0IHN1cHBvcnQgc3luYyBleGVjcy4KKiBJZiB3ZSBnbyBm b3IgdGhlIGludGVycnVwdGlibGUgd2FpdCwgd2UgbmVlZCBhIHdyaXRhYmxlIGNvb2tpZSB0aGF0 CmlzIG5vdCBlbWJlZGRlZCBpbiB0aGUgbWFpbiBzdHJ1Y3QuCgoKL1Rob21hcwoKCgo+IAo+IE1h dHQKPiAKPiBbMV0gaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3Nlcmllcy8xMjU2 MDgvwqAKPiAKPiA+IEkgYWN0dWFsbHkgbGlrZSB0aGlzIGxhc3Qgb25lIGJlc3QsIGJ1dCB3ZSdk IHJlY29tbWVuZCBVTUQgdG8gdXNlcwo+ID4gb3V0LWZlbmNlcyB3aGVuZXZlciBwb3NzaWJsZS4K PiA+IAo+ID4gVGhvdWdodHM/Cj4gPiAKPiA+ID4gCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkbWFfZmVuY2VfcHV0KGZlbmNlKTsKPiA+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gQEAgLTMz MSw0MiArMzQ2LDUxIEBAIGludCB4ZV9leGVjX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlCj4gPiA+ ID4gPiAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgICogdGhlIGpvYiBhbmQgbGV0IHRoZSBEUk0gc2NoZWR1bGVyIC8gYmFj a2VuZCBjbGVhbgo+ID4gPiA+ID4gdXAgdGhlIGpvYi4KPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKg wqAgKi8KPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqB4ZV9zY2hlZF9qb2JfYXJtKGpvYik7Cj4g PiA+ID4gPiArwqDCoMKgwqDCoMKgwqBqb2JfZmVuY2UgPSAmam9iLT5kcm0uc19mZW5jZS0+Zmlu aXNoZWQ7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAod2FpdCkKPiA+ID4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkbWFfZmVuY2VfZ2V0KGpvYl9mZW5jZSk7Cj4gPiA+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCF4ZV92bV9pbl9scl9tb2RlKHZtKSkgewo+ID4gPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBCbG9jayB1c2VycHRyIGludmFs aWRhdGlvbnMgLyBCTyBldmljdGlvbgo+ID4gPiA+ID4gKi8KPiA+ID4gPiA+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBkbWFfcmVzdl9hZGRfZmVuY2UoJnZtLT5yZXN2LAo+ID4gPiA+ ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAmam9iLT5kcm0uc19mZW5jZS0KPiA+ID4gPiA+ID5maW5pc2hlZCwKPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkbWFfcmVzdl9hZGRfZmVuY2Uo JnZtLT5yZXN2LCBqb2JfZmVuY2UsCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUFfUkVTVl9VU0FH RV9CT09LS0VFUCk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8q Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIE1ha2UgaW1wbGlj aXQgc3luYyB3b3JrIGFjcm9zcyBkcml2ZXJzLAo+ID4gPiA+ID4gYXNzdW1pbmcgYWxsIGV4dGVy bmFsCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIEJPcyBhcmUg d3JpdHRlbiBhcyB3ZSBkb24ndCBwYXNzIGluIGEgcmVhZAo+ID4gPiA+ID4gLyB3cml0ZSBsaXN0 Lgo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+ID4gPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV92bV9mZW5jZV9hbGxfZXh0b2Jqcyh2 bSwgJmpvYi0KPiA+ID4gPiA+ID5kcm0uc19mZW5jZS0+ZmluaXNoZWQsCj4gPiA+ID4gPiAtCj4g PiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBETUFfUkVTVl9VU0FHRV9XUklURSk7Cj4gPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfdm1fZmVuY2VfYWxsX2V4dG9i anModm0sIGpvYl9mZW5jZSwKPiA+ID4gPiA+IERNQV9SRVNWX1VTQUdFX1dSSVRFKTsKPiA+ID4g PiA+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgZm9yIChpID0g MDsgaSA8IG51bV9zeW5jczsgaSsrKQo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHhlX3N5bmNfZW50cnlfc2lnbmFsKCZzeW5jc1tpXSwgam9iLAo+ID4gPiA+ID4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgJmpvYi0+ZHJtLnNfZmVuY2UtCj4gPiA+ID4gPiA+ZmluaXNoZWQpOwo+ID4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX3N5bmNfZW50cnlfc2lnbmFs KCZzeW5jc1tpXSwgam9iLAo+ID4gPiA+ID4gam9iX2ZlbmNlKTsKPiA+ID4gPiA+IMKgwqDCoMKg wqDCoMKgwqBpZiAoeGVfZXhlY19xdWV1ZV9pc19scihxKSkKPiA+ID4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcS0+cmluZ19vcHMtPmVtaXRfam9iKGpvYik7Cj4gPiA+ID4g PiDCoMKgwqDCoMKgwqDCoMKgaWYgKCF4ZV92bV9pbl9scl9tb2RlKHZtKSkKPiA+ID4gPiA+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9leGVjX3F1ZXVlX2xhc3RfZmVuY2Vfc2V0 KHEsIHZtLCAmam9iLQo+ID4gPiA+ID4gPmRybS5zX2ZlbmNlLT5maW5pc2hlZCk7Cj4gPiA+ID4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfZXhlY19xdWV1ZV9sYXN0X2ZlbmNl X3NldChxLCB2bSwKPiA+ID4gPiA+IGpvYl9mZW5jZSk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgeGVfc2NoZWRfam9iX3B1c2goam9iKTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqB4ZV92 bV9yZWFjdGl2YXRlX3JlYmluZCh2bSk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoIWVy ciAmJiAheGVfdm1faW5fbHJfbW9kZSh2bSkpIHsKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGlm ICgheGVfdm1faW5fbHJfbW9kZSh2bSkpIHsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgc3Bpbl9sb2NrKCZ4ZS0+dHRtLmxydV9sb2NrKTsKPiA+ID4gPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdHRtX2xydV9idWxrX21vdmVfdGFpbCgmdm0tPmxy dV9idWxrX21vdmUpOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBz cGluX3VubG9jaygmeGUtPnR0bS5scnVfbG9jayk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKg fQo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgc2tpcF9qb2JfcHV0ID0gdHJ1ZTsKPiA+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoGlmICh3YWl0KSB7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgbG9uZyB0aW1lb3V0ID0gZG1hX2ZlbmNlX3dhaXQoam9iX2ZlbmNlLAo+ID4g PiA+ID4gdHJ1ZSk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZG1hX2ZlbmNlX3B1dChqb2JfZmVuY2UpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0aW1lb3V0IDwgMCkKPiA+ID4gPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0gLUVJTlRSOwo+ID4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gwqDCoCBlcnJfcmVwaW46 Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCF4ZV92bV9pbl9scl9tb2RlKHZtKSkKPiA+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdXBfcmVhZCgmdm0tPnVzZXJw dHIubm90aWZpZXJfbG9jayk7Cj4gPiA+ID4gPiDCoMKgIGVycl9wdXRfam9iOgo+ID4gPiA+ID4g LcKgwqDCoMKgwqDCoMKgaWYgKGVycikKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChlcnIg JiYgIXNraXBfam9iX3B1dCkKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgeGVfc2NoZWRfam9iX3B1dChqb2IpOwo+ID4gPiA+ID4gwqDCoCBlcnJfZXhlYzoKPiA+ID4g PiA+IMKgwqDCoMKgwqDCoMKgwqBkcm1fZXhlY19maW5pKCZleGVjKTsKPiA+ID4gPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZXhlY19xdWV1ZS5jCj4gPiA+ID4gPiBiL2Ry aXZlcnMvZ3B1L2RybS94ZS94ZV9leGVjX3F1ZXVlLmMKPiA+ID4gPiA+IGluZGV4IDM5MTFkMTQ1 MjJlZS4uOTg3NzZkMDJkNjM0IDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L3hlL3hlX2V4ZWNfcXVldWUuYwo+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hl X2V4ZWNfcXVldWUuYwo+ID4gPiA+ID4gQEAgLTYyNSwxMCArNjI1LDcgQEAgaW50IHhlX2V4ZWNf cXVldWVfY3JlYXRlX2lvY3RsKHN0cnVjdAo+ID4gPiA+ID4gZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChYRV9JT0NUTF9EQkcoeGUsIGVj aVswXS5ndF9pZCA+PSB4ZS0KPiA+ID4gPiA+ID5pbmZvLmd0X2NvdW50KSkKPiA+ID4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiAt wqDCoMKgwqDCoMKgwqBpZiAoZWNpWzBdLmVuZ2luZV9jbGFzcyA+PQo+ID4gPiA+ID4gRFJNX1hF X0VOR0lORV9DTEFTU19WTV9CSU5EX0FTWU5DKSB7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgYm9vbCBzeW5jID0gZWNpWzBdLmVuZ2luZV9jbGFzcyA9PQo+ID4gPiA+ ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBEUk1fWEVf RU5HSU5FX0NMQVNTX1ZNX0JJTkRfU1lOQzsKPiA+ID4gPiA+IC0KPiA+ID4gPiA+ICvCoMKgwqDC oMKgwqDCoGlmIChlY2lbMF0uZW5naW5lX2NsYXNzID09Cj4gPiA+ID4gPiBEUk1fWEVfRU5HSU5F X0NMQVNTX1ZNX0JJTkQpIHsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZm9yX2VhY2hfZ3QoZ3QsIHhlLCBpZCkgewo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2V4ZWNfcXVldWUgKm5ldzsK PiA+ID4gPiA+IEBAIC02NTQsOCArNjUxLDYgQEAgaW50IHhlX2V4ZWNfcXVldWVfY3JlYXRlX2lv Y3RsKHN0cnVjdAo+ID4gPiA+ID4gZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ID4gPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhcmdzLQo+ID4g PiA+ID4gPndpZHRoLCBod2UsCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgCj4gPiA+ID4gPiBFWEVDX1FVRVVFX0ZMQUdfUEVSU0lTVEVOVCB8Cj4g PiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiA+ ID4gPiBFWEVDX1FVRVVFX0ZMQUdfVk0gfAo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzeW5jID8gMAo+ID4gPiA+ID4gOgo+ID4gPiA+ID4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiA+ID4gPiA+IEVYRUNf UVVFVUVfRkxBR19WTV9BU1lOQykgfAo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAoaWQgPwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiA+ID4gPiBFWEVDX1FVRVVFX0ZMQUdfQklORF9F TkdJTkVfQ0hJTEQgOgo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDApKTsKPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v eGUveGVfZXhlY19xdWV1ZV90eXBlcy5oCj4gPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS94ZS94 ZV9leGVjX3F1ZXVlX3R5cGVzLmgKPiA+ID4gPiA+IGluZGV4IDUyZjA5MjdkMGQ5Yi4uYzc4ZjZl OGI0MWM0IDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2V4ZWNf cXVldWVfdHlwZXMuaAo+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2V4ZWNf cXVldWVfdHlwZXMuaAo+ID4gPiA+ID4gQEAgLTc0LDggKzc0LDYgQEAgc3RydWN0IHhlX2V4ZWNf cXVldWUgewo+ID4gPiA+ID4gwqDCoCAjZGVmaW5lIEVYRUNfUVVFVUVfRkxBR19WTcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDQpCj4gPiA+ID4gPiDCoMKgIC8qIGNo aWxkIG9mIFZNIHF1ZXVlIGZvciBtdWx0aS10aWxlIFZNIGpvYnMgKi8KPiA+ID4gPiA+IMKgwqAg I2RlZmluZSBFWEVDX1FVRVVFX0ZMQUdfQklORF9FTkdJTkVfQ0hJTETCoMKgwqDCoEJJVCg1KQo+ ID4gPiA+ID4gLS8qIFZNIGpvYnMgZm9yIHRoaXMgcXVldWUgYXJlIGFzeW5jaHJvbm91cyAqLwo+ ID4gPiA+ID4gLSNkZWZpbmUgRVhFQ19RVUVVRV9GTEFHX1ZNX0FTWU5DwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgQklUKDYpCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgLyoqCj4gPiA+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgICogQGZsYWdzOiBmbGFncyBmb3IgdGhpcyBleGVjIHF1ZXVl LCBzaG91bGQKPiA+ID4gPiA+IHN0YXRpY2FsbHkgc2V0dXAgYXNpZGUgZnJvbSBiYW4KPiA+ID4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfdm0uYwo+ID4gPiA+ID4gYi9k cml2ZXJzL2dwdS9kcm0veGUveGVfdm0uYwo+ID4gPiA+ID4gaW5kZXggY2YyZWI0NGE3MWRiLi40 YjBjOTc2YzAwM2EgMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVf dm0uYwo+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3ZtLmMKPiA+ID4gPiA+ IEBAIC0xNDMzLDkgKzE0MzMsNyBAQCBzdHJ1Y3QgeGVfdm0gKnhlX3ZtX2NyZWF0ZShzdHJ1Y3QK PiA+ID4gPiA+IHhlX2RldmljZSAqeGUsIHUzMiBmbGFncykKPiA+ID4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9ndCAqZ3QgPSB0 aWxlLT5wcmltYXJ5X2d0Owo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX3ZtICptaWdyYXRlX3ZtOwo+ID4gPiA+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2V4 ZWNfcXVldWUgKnE7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHUzMiBjcmVhdGVfZmxhZ3MgPSBFWEVDX1FVRVVFX0ZMQUdfVk0KPiA+ID4g PiA+IHwKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCgoZmxhZ3MgJgo+ID4gPiA+ID4gWEVfVk1fRkxBR19BU1lO Q19ERUZBVUxUKSA/Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBFWEVDX1FVRVVFX0ZMQUdfVk1fQVNZTkMgOgo+ ID4gPiA+ID4gMCk7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHUzMiBjcmVhdGVfZmxhZ3MgPQo+ID4gPiA+ID4gRVhFQ19RVUVVRV9GTEFH X1ZNOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKCF2bS0+cHRfcm9vdFtpZF0pCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4g PiA+ID4gPiBAQCAtMTgzNSwxNiArMTgzMywxMCBAQCB4ZV92bV9iaW5kX3ZtYShzdHJ1Y3QgeGVf dm1hICp2bWEsCj4gPiA+ID4gPiBzdHJ1Y3QgeGVfZXhlY19xdWV1ZSAqcSwKPiA+ID4gPiA+IMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gRVJSX1BUUihlcnIpOwo+ID4gPiA+ID4gwqDCoCB9Cj4gPiA+ ID4gPiAtc3RhdGljIGJvb2wgeGVfdm1fc3luY19tb2RlKHN0cnVjdCB4ZV92bSAqdm0sIHN0cnVj dAo+ID4gPiA+ID4geGVfZXhlY19xdWV1ZSAqcSkKPiA+ID4gPiA+IC17Cj4gPiA+ID4gPiAtwqDC oMKgwqDCoMKgwqByZXR1cm4gcSA/ICEocS0+ZmxhZ3MgJiBFWEVDX1FVRVVFX0ZMQUdfVk1fQVNZ TkMpIDoKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAhKHZtLT5mbGFn cyAmIFhFX1ZNX0ZMQUdfQVNZTkNfREVGQVVMVCk7Cj4gPiA+ID4gPiAtfQo+ID4gPiA+ID4gLQo+ ID4gPiA+ID4gwqDCoCBzdGF0aWMgaW50IF9feGVfdm1fYmluZChzdHJ1Y3QgeGVfdm0gKnZtLCBz dHJ1Y3QgeGVfdm1hCj4gPiA+ID4gPiAqdm1hLAo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2V4ZWNfcXVldWUgKnEsIHN0 cnVjdAo+ID4gPiA+ID4geGVfc3luY19lbnRyeSAqc3luY3MsCj4gPiA+ID4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1MzIgbnVtX3N5bmNzLCBib29s IGltbWVkaWF0ZSwgYm9vbAo+ID4gPiA+ID4gZmlyc3Rfb3AsCj4gPiA+ID4gPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJvb2wgbGFzdF9vcCkKPiA+ID4g PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYm9vbCBs YXN0X29wLCBib29sIGFzeW5jKQo+ID4gPiA+ID4gwqDCoCB7Cj4gPiA+ID4gPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKg c3RydWN0IHhlX2V4ZWNfcXVldWUgKndhaXRfZXhlY19xdWV1ZSA9Cj4gPiA+ID4gPiB0b193YWl0 X2V4ZWNfcXVldWUodm0sIHEpOwo+ID4gPiA+ID4gQEAgLTE4NzAsNyArMTg2Miw3IEBAIHN0YXRp YyBpbnQgX194ZV92bV9iaW5kKHN0cnVjdCB4ZV92bQo+ID4gPiA+ID4gKnZtLCBzdHJ1Y3QgeGVf dm1hICp2bWEsCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGxhc3Rfb3ApCj4gPiA+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2V4ZWNfcXVldWVfbGFzdF9mZW5j ZV9zZXQod2FpdF9leGVjX3F1ZXVlLAo+ID4gPiA+ID4gdm0sIGZlbmNlKTsKPiA+ID4gPiA+IC3C oMKgwqDCoMKgwqDCoGlmIChsYXN0X29wICYmIHhlX3ZtX3N5bmNfbW9kZSh2bSwgcSkpCj4gPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAobGFzdF9vcCAmJiAhYXN5bmMpCj4gPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRtYV9mZW5jZV93YWl0KGZlbmNlLCB0cnVlKTsK PiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBkbWFfZmVuY2VfcHV0KGZlbmNlKTsKPiA+ID4gPiA+ IEBAIC0xODgwLDcgKzE4NzIsNyBAQCBzdGF0aWMgaW50IF9feGVfdm1fYmluZChzdHJ1Y3QgeGVf dm0KPiA+ID4gPiA+ICp2bSwgc3RydWN0IHhlX3ZtYSAqdm1hLAo+ID4gPiA+ID4gwqDCoCBzdGF0 aWMgaW50IHhlX3ZtX2JpbmQoc3RydWN0IHhlX3ZtICp2bSwgc3RydWN0IHhlX3ZtYQo+ID4gPiA+ ID4gKnZtYSwgc3RydWN0IHhlX2V4ZWNfcXVldWUgKnEsCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHhlX2JvICpibywgc3RydWN0IHhl X3N5bmNfZW50cnkKPiA+ID4gPiA+ICpzeW5jcywKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgbnVtX3N5bmNzLCBib29sIGltbWVkaWF0ZSwg Ym9vbAo+ID4gPiA+ID4gZmlyc3Rfb3AsCj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIGxhc3Rfb3ApCj4gPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIGxhc3Rfb3AsIGJvb2wgYXN5bmMpCj4g PiA+ID4gPiDCoMKgIHsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgZXJyOwo+ID4gPiA+ ID4gQEAgLTE4OTQsMTIgKzE4ODYsMTIgQEAgc3RhdGljIGludCB4ZV92bV9iaW5kKHN0cnVjdCB4 ZV92bQo+ID4gPiA+ID4gKnZtLCBzdHJ1Y3QgeGVfdm1hICp2bWEsIHN0cnVjdCB4ZV9leGVjX3F1 ZXVlCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDC oHJldHVybiBfX3hlX3ZtX2JpbmQodm0sIHZtYSwgcSwgc3luY3MsIG51bV9zeW5jcywKPiA+ID4g PiA+IGltbWVkaWF0ZSwgZmlyc3Rfb3AsCj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsYXN0X29wKTsKPiA+ID4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxhc3Rfb3As IGFzeW5jKTsKPiA+ID4gPiA+IMKgwqAgfQo+ID4gPiA+ID4gwqDCoCBzdGF0aWMgaW50IHhlX3Zt X3VuYmluZChzdHJ1Y3QgeGVfdm0gKnZtLCBzdHJ1Y3QgeGVfdm1hCj4gPiA+ID4gPiAqdm1hLAo+ ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg c3RydWN0IHhlX2V4ZWNfcXVldWUgKnEsIHN0cnVjdAo+ID4gPiA+ID4geGVfc3luY19lbnRyeSAq c3luY3MsCj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHUzMiBudW1fc3luY3MsIGJvb2wgZmlyc3Rfb3AsIGJvb2wKPiA+ID4gPiA+IGxhc3Rf b3ApCj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHUzMiBudW1fc3luY3MsIGJvb2wgZmlyc3Rfb3AsIGJvb2wKPiA+ID4gPiA+IGxhc3Rfb3As IGJvb2wgYXN5bmMpCj4gPiA+ID4gPiDCoMKgIHsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg eGVfZXhlY19xdWV1ZSAqd2FpdF9leGVjX3F1ZXVlID0KPiA+ID4gPiA+IHRvX3dhaXRfZXhlY19x dWV1ZSh2bSwgcSk7Cj4gPiA+ID4gPiBAQCAtMTkxNCw3ICsxOTA2LDcgQEAgc3RhdGljIGludCB4 ZV92bV91bmJpbmQoc3RydWN0IHhlX3ZtCj4gPiA+ID4gPiAqdm0sIHN0cnVjdCB4ZV92bWEgKnZt YSwKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqB4ZV92bWFfZGVzdHJveSh2bWEsIGZlbmNlKTsK PiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAobGFzdF9vcCkKPiA+ID4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfZXhlY19xdWV1ZV9sYXN0X2ZlbmNlX3NldCh3YWl0 X2V4ZWNfcXVldWUsCj4gPiA+ID4gPiB2bSwgZmVuY2UpOwo+ID4gPiA+ID4gLcKgwqDCoMKgwqDC oMKgaWYgKGxhc3Rfb3AgJiYgeGVfdm1fc3luY19tb2RlKHZtLCBxKSkKPiA+ID4gPiA+ICvCoMKg wqDCoMKgwqDCoGlmIChsYXN0X29wICYmICFhc3luYykKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZG1hX2ZlbmNlX3dhaXQoZmVuY2UsIHRydWUpOwo+ID4gPiA+IEl0 IGxvb2tzIGxpa2Ugd2UncmUgZHJvcHBpbmcgdGhlIGVycm9yIHJldHVybiBjb2RlIGhlcmUuCj4g PiA+ID4gCj4gPiA+ID4gCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgZG1hX2ZlbmNlX3B1dChm ZW5jZSk7Cj4gPiA+ID4gPiBAQCAtMTkyMyw3ICsxOTE1LDYgQEAgc3RhdGljIGludCB4ZV92bV91 bmJpbmQoc3RydWN0IHhlX3ZtCj4gPiA+ID4gPiAqdm0sIHN0cnVjdCB4ZV92bWEgKnZtYSwKPiA+ ID4gPiA+IMKgwqAgI2RlZmluZSBBTExfRFJNX1hFX1ZNX0NSRUFURV9GTEFHUwo+ID4gPiA+ID4g KERSTV9YRV9WTV9DUkVBVEVfRkxBR19TQ1JBVENIX1BBR0UgfCBcCj4gPiA+ID4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgCj4gPiA+ID4gPiBEUk1fWEVfVk1fQ1JFQVRFX0ZMQUdfTFJfTU9ERSB8IFwKPiA+ID4g PiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoAo+ID4gPiA+ID4gRFJNX1hFX1ZNX0NSRUFURV9GTEFHX0FTWU5DX0RF RkFVTFQgfCBcCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiA+ID4gPiBEUk1fWEVfVk1fQ1JF QVRFX0ZMQUdfRkFVTFRfTU9ERSkKPiA+ID4gPiA+IMKgwqAgaW50IHhlX3ZtX2NyZWF0ZV9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ID4gPiA+ID4gQEAgLTE5Nzcs OCArMTk2OCw2IEBAIGludCB4ZV92bV9jcmVhdGVfaW9jdGwoc3RydWN0Cj4gPiA+ID4gPiBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGZsYWdzIHw9IFhFX1ZNX0ZMQUdfU0NSQVRDSF9QQUdFOwo+ID4gPiA+ID4gwqDC oMKgwqDCoMKgwqDCoGlmIChhcmdzLT5mbGFncyAmIERSTV9YRV9WTV9DUkVBVEVfRkxBR19MUl9N T0RFKQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmbGFncyB8PSBY RV9WTV9GTEFHX0xSX01PREU7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoYXJncy0+Zmxh Z3MgJgo+ID4gPiA+ID4gRFJNX1hFX1ZNX0NSRUFURV9GTEFHX0FTWU5DX0RFRkFVTFQpCj4gPiA+ ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZmxhZ3MgfD0gWEVfVk1fRkxBR19B U1lOQ19ERUZBVUxUOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChhcmdzLT5mbGFncyAm IERSTV9YRV9WTV9DUkVBVEVfRkxBR19GQVVMVF9NT0RFKQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBmbGFncyB8PSBYRV9WTV9GTEFHX0ZBVUxUX01PREU7Cj4gPiA+ ID4gPiBAQCAtMjA2Miw3ICsyMDUxLDcgQEAgc3RhdGljIGNvbnN0IHUzMiByZWdpb25fdG9fbWVt X3R5cGVbXSA9Cj4gPiA+ID4gPiB7Cj4gPiA+ID4gPiDCoMKgIHN0YXRpYyBpbnQgeGVfdm1fcHJl ZmV0Y2goc3RydWN0IHhlX3ZtICp2bSwgc3RydWN0IHhlX3ZtYQo+ID4gPiA+ID4gKnZtYSwKPiA+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHN0cnVjdCB4ZV9leGVjX3F1ZXVlICpxLCB1MzIKPiA+ID4gPiA+IHJlZ2lvbiwKPiA+ID4gPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVj dCB4ZV9zeW5jX2VudHJ5ICpzeW5jcywgdTMyCj4gPiA+ID4gPiBudW1fc3luY3MsCj4gPiA+ID4g PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wg Zmlyc3Rfb3AsIGJvb2wgbGFzdF9vcCkKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm9vbCBmaXJzdF9vcCwgYm9vbCBsYXN0X29wLCBi b29sCj4gPiA+ID4gPiBhc3luYykKPiA+ID4gPiA+IMKgwqAgewo+ID4gPiA+ID4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCB4ZV9leGVjX3F1ZXVlICp3YWl0X2V4ZWNfcXVldWUgPQo+ID4gPiA+ID4g dG9fd2FpdF9leGVjX3F1ZXVlKHZtLCBxKTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQg ZXJyOwo+ID4gPiA+ID4gQEAgLTIwNzcsNyArMjA2Niw3IEBAIHN0YXRpYyBpbnQgeGVfdm1fcHJl ZmV0Y2goc3RydWN0IHhlX3ZtCj4gPiA+ID4gPiAqdm0sIHN0cnVjdCB4ZV92bWEgKnZtYSwKPiA+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAodm1hLT50aWxlX21hc2sgIT0gKHZtYS0+dGlsZV9w cmVzZW50ICYgfnZtYS0KPiA+ID4gPiA+ID51c20udGlsZV9pbnZhbGlkYXRlZCkpIHsKPiA+ID4g PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHhlX3ZtX2JpbmQodm0s IHZtYSwgcSwgeGVfdm1hX2JvKHZtYSksCj4gPiA+ID4gPiBzeW5jcywgbnVtX3N5bmNzLAo+ID4g PiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdHJ1ZSwgZmlyc3Rfb3AsIGxhc3Rfb3ApOwo+ID4gPiA+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdHJ1ZSwgZmlyc3Rfb3AsIGxhc3Rfb3AsCj4gPiA+ID4gPiBhc3luYyk7Cj4gPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaW50IGk7Cj4gPiA+ID4gPiBAQCAtMjQwMCw2ICsyMzg5LDggQEAgc3RhdGljIGlu dAo+ID4gPiA+ID4gdm1fYmluZF9pb2N0bF9vcHNfcGFyc2Uoc3RydWN0IHhlX3ZtICp2bSwgc3Ry dWN0Cj4gPiA+ID4gPiB4ZV9leGVjX3F1ZXVlICpxLAo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoG9wLT5xID0gcTsKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAoYXN5bmMpCj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoG9wLT5mbGFncyB8PSBYRV9WTUFfT1BfQVNZTkM7Cj4gPiA+ID4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN3aXRjaCAob3AtPmJhc2Uub3ApIHsKPiA+ID4gPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBEUk1fR1BVVkFfT1BfTUFQOgo+ ID4gPiA+ID4gQEAgLTI1MzgsNyArMjUyOSw4IEBAIHN0YXRpYyBpbnQgb3BfZXhlY3V0ZShzdHJ1 Y3QgZHJtX2V4ZWMKPiA+ID4gPiA+ICpleGVjLCBzdHJ1Y3QgeGVfdm0gKnZtLAo+ID4gPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBvcC0+c3luY3MsIG9wLT5udW1fc3luY3MsCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wLT5t YXAuaW1tZWRpYXRlIHx8Cj4gPiA+ID4gPiAheGVfdm1faW5fZmF1bHRfbW9kZSh2bSksCj4gPiA+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIG9wLT5mbGFncyAmIFhFX1ZNQV9PUF9GSVJTVCwKPiA+ID4gPiA+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBvcC0+ZmxhZ3MgJiBYRV9WTUFfT1BfTEFTVCk7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3AtPmZsYWdz ICYgWEVfVk1BX09QX0xBU1QsCj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3AtPmZsYWdzICYKPiA+ID4gPiA+ IFhFX1ZNQV9PUF9BU1lOQyk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGJyZWFrOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGNhc2UgRFJNX0dQVVZBX09QX1JF TUFQOgo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHsKPiA+ID4gPiA+IEBAIC0yNTUyLDcgKzI1 NDQsOCBAQCBzdGF0aWMgaW50IG9wX2V4ZWN1dGUoc3RydWN0IGRybV9leGVjCj4gPiA+ID4gPiAq ZXhlYywgc3RydWN0IHhlX3ZtICp2bSwKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBvcC0+bnVtX3N5bmNzLAo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IG9wLT5mbGFncyAmCj4gPiA+ID4gPiBYRV9WTUFfT1BfRklSU1QsCj4gPiA+ID4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgb3AtPmZsYWdzICYKPiA+ID4gPiA+IFhFX1ZNQV9PUF9MQVNU ICYmCj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAhcHJldiAmJiAhbmV4dCk7 Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAhcHJldiAmJiAhbmV4dCwKPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wLT5mbGFncyAmCj4gPiA+ID4gPiBY RV9WTUFfT1BfQVNZTkMpOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVycikKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ID4g PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG9wLT5y ZW1hcC51bm1hcF9kb25lID0gdHJ1ZTsKPiA+ID4gPiA+IEBAIC0yNTYzLDcgKzI1NTYsOCBAQCBz dGF0aWMgaW50IG9wX2V4ZWN1dGUoc3RydWN0IGRybV9leGVjCj4gPiA+ID4gPiAqZXhlYywgc3Ry dWN0IHhlX3ZtICp2bSwKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGVyciA9IHhlX3ZtX2JpbmQodm0sIG9wLT5yZW1hcC5wcmV2LAo+ID4g PiA+ID4gb3AtPnEsCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZV92bWFfYm8o b3AtCj4gPiA+ID4gPiA+cmVtYXAucHJldiksIG9wLT5zeW5jcywKPiA+ID4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIG9wLT5udW1fc3luY3MsIHRydWUsCj4gPiA+ID4gPiBmYWxzZSwKPiA+ ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3AtPmZsYWdzICYKPiA+ID4gPiA+IFhFX1ZN QV9PUF9MQVNUICYmICFuZXh0KTsKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3At PmZsYWdzICYKPiA+ID4gPiA+IFhFX1ZNQV9PUF9MQVNUICYmICFuZXh0LAo+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBvcC0+ZmxhZ3MgJgo+ID4gPiA+ID4gWEVfVk1BX09QX0FTWU5D KTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoG9wLT5yZW1hcC5wcmV2LT5ncHV2YS5mbGFncyAmPQo+ID4gPiA+ID4gflhFX1ZNQV9MQVNU X1JFQklORDsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmIChlcnIpCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiA+ID4gPiBAQCAt MjU3Niw3ICsyNTcwLDggQEAgc3RhdGljIGludCBvcF9leGVjdXRlKHN0cnVjdCBkcm1fZXhlYwo+ ID4gPiA+ID4gKmV4ZWMsIHN0cnVjdCB4ZV92bSAqdm0sCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB4ZV92bWFfYm8ob3AtCj4gPiA+ID4gPiA+cmVtYXAubmV4dCksCj4gPiA+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcC0+c3luY3MsIG9wLQo+ID4gPiA+ID4gPm51bV9z eW5jcywKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRydWUsIGZhbHNlLAo+ID4g PiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcC0+ZmxhZ3MgJgo+ID4gPiA+ID4gWEVfVk1B X09QX0xBU1QpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcC0+ZmxhZ3MgJgo+ ID4gPiA+ID4gWEVfVk1BX09QX0xBU1QsCj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IG9wLT5mbGFncyAmCj4gPiA+ID4gPiBYRV9WTUFfT1BfQVNZTkMpOwo+ID4gPiA+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgb3AtPnJlbWFwLm5leHQt PmdwdXZhLmZsYWdzICY9Cj4gPiA+ID4gPiB+WEVfVk1BX0xBU1RfUkVCSU5EOwo+ID4gPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVycikK PiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ID4gPiA+IEBAIC0yNTg4LDEzICsyNTgzLDE1IEBA IHN0YXRpYyBpbnQgb3BfZXhlY3V0ZShzdHJ1Y3QgZHJtX2V4ZWMKPiA+ID4gPiA+ICpleGVjLCBz dHJ1Y3QgeGVfdm0gKnZtLAo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGNhc2UgRFJNX0dQVVZB X09QX1VOTUFQOgo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIg PSB4ZV92bV91bmJpbmQodm0sIHZtYSwgb3AtPnEsIG9wLT5zeW5jcywKPiA+ID4gPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIG9wLT5udW1fc3luY3MsIG9wLT5mbGFncyAmCj4gPiA+ID4gPiBYRV9WTUFfT1BfRklS U1QsCj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wLT5mbGFncyAmCj4gPiA+ID4gPiBYRV9WTUFfT1Bf TEFTVCk7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wLT5mbGFncyAmCj4gPiA+ID4gPiBYRV9WTUFf T1BfTEFTVCwKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3AtPmZsYWdzICYKPiA+ID4gPiA+IFhFX1ZN QV9PUF9BU1lOQyk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJy ZWFrOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGNhc2UgRFJNX0dQVVZBX09QX1BSRUZFVENI Ogo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSB4ZV92bV9w cmVmZXRjaCh2bSwgdm1hLCBvcC0+cSwgb3AtCj4gPiA+ID4gPiA+cHJlZmV0Y2gucmVnaW9uLAo+ ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wLT5zeW5jcywgb3AtCj4gPiA+ID4gPiA+bnVtX3N5 bmNzLAo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wLT5mbGFncyAmCj4gPiA+ID4gPiBYRV9W TUFfT1BfRklSU1QsCj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcC0+ZmxhZ3MgJgo+ID4gPiA+ ID4gWEVfVk1BX09QX0xBU1QpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3AtPmZsYWdzICYK PiA+ID4gPiA+IFhFX1ZNQV9PUF9MQVNULAo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3AtPmZs YWdzICYKPiA+ID4gPiA+IFhFX1ZNQV9PUF9BU1lOQyk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGRlZmF1 bHQ6Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRybV93YXJuKCZ2 bS0+eGUtPmRybSwgIk5PVCBQT1NTSUJMRSIpOwo+ID4gPiA+ID4gQEAgLTI4MDgsMTYgKzI4MDUs MTYgQEAgc3RhdGljIGludAo+ID4gPiA+ID4gdm1fYmluZF9pb2N0bF9vcHNfZXhlY3V0ZShzdHJ1 Y3QgeGVfdm0gKnZtLAo+ID4gPiA+ID4gwqDCoCAjaWZkZWYgVEVTVF9WTV9BU1lOQ19PUFNfRVJS T1IKPiA+ID4gPiA+IMKgwqAgI2RlZmluZSBTVVBQT1JURURfRkxBR1PCoMKgwqDCoMKgwqBcCj4g PiA+ID4gPiAtwqDCoMKgwqDCoMKgwqAoRk9SQ0VfQVNZTkNfT1BfRVJST1IgfCBEUk1fWEVfVk1f QklORF9GTEFHX0FTWU5DIHwgXAo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgIERSTV9YRV9WTV9C SU5EX0ZMQUdfUkVBRE9OTFkgfAo+ID4gPiA+ID4gRFJNX1hFX1ZNX0JJTkRfRkxBR19JTU1FRElB VEUgfCBcCj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqAgRFJNX1hFX1ZNX0JJTkRfRkxBR19OVUxM IHwgMHhmZmZmKQo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgKEZPUkNFX0FTWU5DX09QX0VSUk9S IHwgRFJNX1hFX1ZNX0JJTkRfRkxBR19SRUFET05MWQo+ID4gPiA+ID4gfCBcCj4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqAgRFJNX1hFX1ZNX0JJTkRfRkxBR19JTU1FRElBVEUgfAo+ID4gPiA+ID4g RFJNX1hFX1ZNX0JJTkRfRkxBR19OVUxMIHwgMHhmZmZmKQo+ID4gPiA+ID4gwqDCoCAjZWxzZQo+ ID4gPiA+ID4gwqDCoCAjZGVmaW5lIFNVUFBPUlRFRF9GTEFHU8KgwqDCoMKgwqDCoFwKPiA+ID4g PiA+IC3CoMKgwqDCoMKgwqDCoChEUk1fWEVfVk1fQklORF9GTEFHX0FTWU5DIHwKPiA+ID4gPiA+ IERSTV9YRV9WTV9CSU5EX0ZMQUdfUkVBRE9OTFkgfCBcCj4gPiA+ID4gPiArwqDCoMKgwqDCoMKg wqAoRFJNX1hFX1ZNX0JJTkRfRkxBR19SRUFET05MWSB8IFwKPiA+ID4gPiA+IMKgwqDCoMKgwqDC oMKgwqAgRFJNX1hFX1ZNX0JJTkRfRkxBR19JTU1FRElBVEUgfAo+ID4gPiA+ID4gRFJNX1hFX1ZN X0JJTkRfRkxBR19OVUxMIHwgXAo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoCAweGZmZmYpCj4g PiA+ID4gPiDCoMKgICNlbmRpZgo+ID4gPiA+ID4gwqDCoCAjZGVmaW5lIFhFXzY0S19QQUdFX01B U0sgMHhmZmZmdWxsCj4gPiA+ID4gPiArI2RlZmluZSBBTExfRFJNX1hFX1NZTkNTX0ZMQUdTCj4g PiA+ID4gPiAoRFJNX1hFX1NZTkNTX0ZMQUdfV0FJVF9GT1JfT1ApCj4gPiA+ID4gPiDCoMKgICNk ZWZpbmUgTUFYX0JJTkRTwqDCoMKgwqA1MTLCoMKgwqDCoMKgLyogRklYTUU6IFBpY2tpbmcgcmFu ZG9tCj4gPiA+ID4gPiB1cHBlciBsaW1pdCAqLwo+ID4gPiA+ID4gQEAgLTI4MjksNyArMjgyNiw3 IEBAIHN0YXRpYyBpbnQKPiA+ID4gPiA+IHZtX2JpbmRfaW9jdGxfY2hlY2tfYXJncyhzdHJ1Y3Qg eGVfZGV2aWNlICp4ZSwKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgZXJyOwo+ID4gPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoGludCBpOwo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgaWYgKFhF X0lPQ1RMX0RCRyh4ZSwgYXJncy0+cGFkIHx8IGFyZ3MtPnBhZDIpIHx8Cj4gPiA+ID4gPiArwqDC oMKgwqDCoMKgwqBpZiAoWEVfSU9DVExfREJHKHhlLCBhcmdzLT5wYWQpIHx8Cj4gPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIFhFX0lPQ1RMX0RCRyh4ZSwgYXJncy0+cmVzZXJ2ZWRbMF0g fHwgYXJncy0KPiA+ID4gPiA+ID5yZXNlcnZlZFsxXSkpCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ID4gPiA+ID4gQEAgLTI4NTcsNiAr Mjg1NCwxNCBAQCBzdGF0aWMgaW50Cj4gPiA+ID4gPiB2bV9iaW5kX2lvY3RsX2NoZWNrX2FyZ3Mo c3RydWN0IHhlX2RldmljZSAqeGUsCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCpiaW5kX29wcyA9ICZhcmdzLT5iaW5kOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDC oH0KPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCphc3luYyA9ICEoYXJncy0+c3luY3MuZmxhZ3Mg Jgo+ID4gPiA+ID4gRFJNX1hFX1NZTkNTX0ZMQUdfV0FJVF9GT1JfT1ApOwo+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKFhFX0lPQ1RMX0RCRyh4ZSwgYXJncy0+c3luY3Mu ZmxhZ3MgJgo+ID4gPiA+ID4gfkFMTF9EUk1fWEVfU1lOQ1NfRkxBR1MpIHx8Cj4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqAgWEVfSU9DVExfREJHKHhlLCAhKmFzeW5jICYmIGFyZ3MtCj4g PiA+ID4gPiA+c3luY3MubnVtX3N5bmNzKSkgewo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGVyciA9IC1FSU5WQUw7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZ290byBmcmVlX2JpbmRfb3BzOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg fQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBh cmdzLT5udW1fYmluZHM7ICsraSkgewo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB1NjQgcmFuZ2UgPSAoKmJpbmRfb3BzKVtpXS5yYW5nZTsKPiA+ID4gPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTY0IGFkZHIgPSAoKmJpbmRfb3BzKVtpXS5hZGRy Owo+ID4gPiA+ID4gQEAgLTI4ODcsMTggKzI4OTIsNiBAQCBzdGF0aWMgaW50Cj4gPiA+ID4gPiB2 bV9iaW5kX2lvY3RsX2NoZWNrX2FyZ3Moc3RydWN0IHhlX2RldmljZSAqeGUsCj4gPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIGZyZWVf YmluZF9vcHM7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoaSA9PSAwKSB7Cj4gPiA+ ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCphc3lu YyA9ICEhKGZsYWdzICYKPiA+ID4gPiA+IERSTV9YRV9WTV9CSU5EX0ZMQUdfQVNZTkMpOwo+ID4g PiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAo WEVfSU9DVExfREJHKHhlLCAhKmFzeW5jICYmIGFyZ3MtCj4gPiA+ID4gPiA+bnVtX3N5bmNzKSkg ewo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZXJyID0gLUVJTlZBTDsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gZnJl ZV9iaW5kX29wczsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0g ZWxzZSBpZiAoWEVfSU9DVExfREJHKHhlLCAqYXN5bmMgIT0KPiA+ID4gPiA+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAhIShmbGFncyAmCj4gPiA+ID4gPiBEUk1fWEVfVk1fQklORF9GTEFHX0FTWU5D KSkpIHsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZXJyID0gLUVJTlZBTDsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBmcmVlX2JpbmRfb3BzOwo+ID4gPiA+ID4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ID4gPiA+IC0KPiA+ID4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKFhFX0lPQ1RMX0RCRyh4ZSwgb3AgPgo+ID4gPiA+ ID4gRFJNX1hFX1ZNX0JJTkRfT1BfUFJFRkVUQ0gpIHx8Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBYRV9JT0NUTF9EQkcoeGUsIGZsYWdzICYKPiA+ID4g PiA+IH5TVVBQT1JURURfRkxBR1MpIHx8Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBYRV9JT0NUTF9EQkcoeGUsIG9iaiAmJiBpc19udWxsKSB8fAo+ID4g PiA+ID4gQEAgLTI5NTEsNyArMjk0NCw3IEBAIHN0YXRpYyBpbnQKPiA+ID4gPiA+IHZtX2JpbmRf aW9jdGxfY2hlY2tfYXJncyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwKPiA+ID4gPiA+IMKgwqAgc3Rh dGljIGludCB2bV9iaW5kX2lvY3RsX3NpZ25hbF9mZW5jZXMoc3RydWN0IHhlX3ZtICp2bSwKPiA+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHhlX2V4ZWNfcXVldWUKPiA+ID4gPiA+ ICpxLAo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgeGVfc3luY19lbnRyeQo+ ID4gPiA+ID4gKnN5bmNzLAo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBudW1fc3lu Y3MpCj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IG51bV9zeW5jcywgYm9vbAo+ID4g PiA+ID4gYXN5bmMpCj4gPiA+ID4gPiDCoMKgIHsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgaSwg ZXJyID0gMDsKPiA+ID4gPiA+IEBAIC0yOTY3LDcgKzI5NjAsNyBAQCBzdGF0aWMgaW50Cj4gPiA+ ID4gPiB2bV9iaW5kX2lvY3RsX3NpZ25hbF9mZW5jZXMoc3RydWN0IHhlX3ZtICp2bSwKPiA+ID4g PiA+IMKgwqDCoMKgwqDCoMKgwqB4ZV9leGVjX3F1ZXVlX2xhc3RfZmVuY2Vfc2V0KHRvX3dhaXRf ZXhlY19xdWV1ZSh2bSwKPiA+ID4gPiA+IHEpLCB2bSwKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBmZW5jZSk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoeGVfdm1fc3luY19tb2RlKHZt LCBxKSkgewo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFhc3luYykgewo+ID4gPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsb25nIHRpbWVvdXQgPSBkbWFfZmVuY2Vf d2FpdChmZW5jZSwgdHJ1ZSk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmICh0aW1lb3V0IDwgMCkKPiA+ID4gPiA+IEBAIC0zMDAxLDcgKzI5OTQsNyBAQCBpbnQg eGVfdm1fYmluZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZQo+ID4gPiA+ID4gKmRldiwgdm9pZCAq ZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlKQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGlm IChlcnIpCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBl cnI7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoWEVfSU9DVExfREJHKHhlLCBhcmdzLT5w YWQgfHwgYXJncy0+cGFkMikgfHwKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChYRV9JT0NU TF9EQkcoeGUsIGFyZ3MtPnBhZCkgfHwKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg WEVfSU9DVExfREJHKHhlLCBhcmdzLT5yZXNlcnZlZFswXSB8fCBhcmdzLQo+ID4gPiA+ID4gPnJl c2VydmVkWzFdKSkKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiBAQCAtMzAxNiwxMiArMzAwOSw2IEBAIGludCB4ZV92bV9i aW5kX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlCj4gPiA+ID4gPiAqZGV2LCB2b2lkICpkYXRhLCBz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSAtRUlOVkFMOwo+ID4gPiA+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBwdXRfZXhlY19xdWV1 ZTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4g LQo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChYRV9JT0NUTF9E QkcoeGUsIGFyZ3MtPm51bV9iaW5kcyAmJiBhc3luYwo+ID4gPiA+ID4gIT0KPiA+ID4gPiA+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAhIShxLT5mbGFncyAmCj4gPiA+ID4gPiBFWEVDX1FVRVVFX0ZMQUdfVk1fQVNZTkMpKSkg ewo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBlcnIgPSAtRUlOVkFMOwo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBnb3RvIHB1dF9leGVjX3F1ZXVlOwo+ID4gPiA+ID4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgdm0gPSB4ZV92bV9sb29rdXAoeGVmLCBhcmdzLT52bV9pZCk7 Cj4gPiA+ID4gPiBAQCAtMzAzMCwxNCArMzAxNyw2IEBAIGludCB4ZV92bV9iaW5kX2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlCj4gPiA+ID4gPiAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGUpCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8g cHV0X2V4ZWNfcXVldWU7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gLcKg wqDCoMKgwqDCoMKgaWYgKCFhcmdzLT5leGVjX3F1ZXVlX2lkKSB7Cj4gPiA+ID4gPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKFhFX0lPQ1RMX0RCRyh4ZSwgYXJncy0+bnVtX2Jp bmRzICYmIGFzeW5jCj4gPiA+ID4gPiAhPQo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICEhKHZtLT5mbGFncyAm Cj4gPiA+ID4gPiBYRV9WTV9GTEFHX0FTWU5DX0RFRkFVTFQpKSkgewo+ID4gPiA+ID4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSAtRUlOVkFMOwo+ ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBn b3RvIHB1dF92bTsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4g PiA+ID4gPiAtwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gPiAtCj4gPiA+ID4gPiDCoMKgwqDCoMKg wqDCoMKgZXJyID0gZG93bl93cml0ZV9raWxsYWJsZSgmdm0tPmxvY2spOwo+ID4gPiA+ID4gwqDC oMKgwqDCoMKgwqDCoGlmIChlcnIpCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGdvdG8gcHV0X3ZtOwo+ID4gPiA+ID4gQEAgLTMxMjcsMTYgKzMxMDYsMTYgQEAgaW50 IHhlX3ZtX2JpbmRfaW9jdGwoc3RydWN0Cj4gPiA+ID4gPiBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+ID4gPiA+IC3C oMKgwqDCoMKgwqDCoGlmIChhcmdzLT5udW1fc3luY3MpIHsKPiA+ID4gPiA+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBzeW5jcyA9IGtjYWxsb2MoYXJncy0+bnVtX3N5bmNzLAo+ID4g PiA+ID4gc2l6ZW9mKCpzeW5jcyksIEdGUF9LRVJORUwpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgaWYgKGFyZ3MtPnN5bmNzLm51bV9zeW5jcykgewo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHN5bmNzID0ga2NhbGxvYyhhcmdzLT5zeW5jcy5udW1fc3luY3MsCj4g PiA+ID4gPiBzaXplb2YoKnN5bmNzKSwgR0ZQX0tFUk5FTCk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghc3luY3MpIHsKPiA+ID4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IC1FTk9NRU07Cj4gPiA+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3Rv IHB1dF9vYmo7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqBzeW5jc191 c2VyID0gdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPnN5bmNzKTsKPiA+ID4gPiA+IC3CoMKgwqDCoMKg wqDCoGZvciAobnVtX3N5bmNzID0gMDsgbnVtX3N5bmNzIDwgYXJncy0+bnVtX3N5bmNzOwo+ID4g PiA+ID4gbnVtX3N5bmNzKyspIHsKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHN5bmNzX3VzZXIg PSB1NjRfdG9fdXNlcl9wdHIoYXJncy0+c3luY3Muc3luY3MpOwo+ID4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgZm9yIChudW1fc3luY3MgPSAwOyBudW1fc3luY3MgPCBhcmdzLQo+ID4gPiA+ID4gPnN5 bmNzLm51bV9zeW5jczsgbnVtX3N5bmNzKyspIHsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZXJyID0geGVfc3luY19lbnRyeV9wYXJzZSh4ZSwgeGVmLAo+ID4gPiA+ ID4gJnN5bmNzW251bV9zeW5jc10sCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Cj4gPiA+ID4gPiAmc3luY3NfdXNlcltudW1fc3luY3NdLAo+ID4gPiA+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoAo+ID4gPiA+ID4gKHhlX3ZtX2luX2xyX21vZGUodm0pID8KPiA+ID4gPiA+ IEBAIC0zMjEwLDcgKzMxODksOCBAQCBpbnQgeGVfdm1fYmluZF9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZQo+ID4gPiA+ID4gKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlKQo+ ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHZtX2JpbmRfaW9jdGxfb3BzX3Vud2luZCh2bSwgb3Bz LCBhcmdzLT5udW1fYmluZHMpOwo+ID4gPiA+ID4gwqDCoCBmcmVlX3N5bmNzOgo+ID4gPiA+ID4g wqDCoMKgwqDCoMKgwqDCoGlmIChlcnIgPT0gLUVOT0RBVEEpCj4gPiA+ID4gPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0gdm1fYmluZF9pb2N0bF9zaWduYWxfZmVuY2VzKHZt LCBxLAo+ID4gPiA+ID4gc3luY3MsIG51bV9zeW5jcyk7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZXJyID0gdm1fYmluZF9pb2N0bF9zaWduYWxfZmVuY2VzKHZtLCBx LAo+ID4gPiA+ID4gc3luY3MsIG51bV9zeW5jcywKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN5bmMpOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDC oHdoaWxlIChudW1fc3luY3MtLSkKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgeGVfc3luY19lbnRyeV9jbGVhbnVwKCZzeW5jc1tudW1fc3luY3NdKTsKPiA+ID4gPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfdm1fdHlwZXMuaAo+ID4gPiA+ID4g Yi9kcml2ZXJzL2dwdS9kcm0veGUveGVfdm1fdHlwZXMuaAo+ID4gPiA+ID4gaW5kZXggMjNhYmRm ZDg2MjJmLi5jZThiOWJkZTdlOWMgMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0veGUveGVfdm1fdHlwZXMuaAo+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hl X3ZtX3R5cGVzLmgKPiA+ID4gPiA+IEBAIC0xNjcsMTMgKzE2NywxMiBAQCBzdHJ1Y3QgeGVfdm0g ewo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoCAqLwo+ID4gPiA+ID4gwqDCoCAjZGVmaW5lIFhF X1ZNX0ZMQUdfNjRLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oEJJVCgwKQo+ID4gPiA+ID4gwqDCoCAjZGVmaW5lIFhFX1ZNX0ZMQUdfTFJfTU9ERcKgwqDCoMKg wqDCoMKgwqDCoMKgwqBCSVQoMSkKPiA+ID4gPiA+IC0jZGVmaW5lIFhFX1ZNX0ZMQUdfQVNZTkNf REVGQVVMVMKgwqDCoMKgwqDCoMKgQklUKDIpCj4gPiA+ID4gPiAtI2RlZmluZSBYRV9WTV9GTEFH X01JR1JBVElPTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCSVQoMykKPiA+ID4gPiA+IC0jZGVmaW5l IFhFX1ZNX0ZMQUdfU0NSQVRDSF9QQUdFwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBC SVQoNCkKPiA+ID4gPiA+IC0jZGVmaW5lIFhFX1ZNX0ZMQUdfRkFVTFRfTU9ERcKgwqDCoMKgwqDC oMKgwqDCoMKgQklUKDUpCj4gPiA+ID4gPiAtI2RlZmluZSBYRV9WTV9GTEFHX0JBTk5FRMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCSVQoNikKPiA+ID4gPiA+IC0jZGVmaW5lIFhFX1ZNX0ZM QUdfVElMRV9JRChmbGFncynCoMKgwqDCoMKgwqBGSUVMRF9HRVQoR0VOTUFTSyg4LAo+ID4gPiA+ ID4gNyksIGZsYWdzKQo+ID4gPiA+ID4gLSNkZWZpbmUgWEVfVk1fRkxBR19TRVRfVElMRV9JRCh0 aWxlKcKgwqDCoEZJRUxEX1BSRVAoR0VOTUFTSyg4LAo+ID4gPiA+ID4gNyksICh0aWxlKS0+aWQp Cj4gPiA+ID4gPiArI2RlZmluZSBYRV9WTV9GTEFHX01JR1JBVElPTsKgwqDCoMKgwqDCoMKgwqDC oMKgwqBCSVQoMikKPiA+ID4gPiA+ICsjZGVmaW5lIFhFX1ZNX0ZMQUdfU0NSQVRDSF9QQUdFwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCSVQoMykKPiA+ID4gPiA+ICsjZGVmaW5lIFhF X1ZNX0ZMQUdfRkFVTFRfTU9ERcKgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDQpCj4gPiA+ID4gPiAr I2RlZmluZSBYRV9WTV9GTEFHX0JBTk5FRMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCSVQo NSkKPiA+ID4gPiA+ICsjZGVmaW5lIFhFX1ZNX0ZMQUdfVElMRV9JRChmbGFncynCoMKgwqDCoMKg wqBGSUVMRF9HRVQoR0VOTUFTSyg3LAo+ID4gPiA+ID4gNiksIGZsYWdzKQo+ID4gPiA+ID4gKyNk ZWZpbmUgWEVfVk1fRkxBR19TRVRfVElMRV9JRCh0aWxlKcKgwqDCoEZJRUxEX1BSRVAoR0VOTUFT Syg3LAo+ID4gPiA+ID4gNiksICh0aWxlKS0+aWQpCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKg dW5zaWduZWQgbG9uZyBmbGFnczsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqAvKiogQGNvbXBv c2l0ZV9mZW5jZV9jdHg6IGNvbnRleHQgY29tcG9zaXRlIGZlbmNlICovCj4gPiA+ID4gPiBAQCAt Mzg1LDYgKzM4NCw4IEBAIGVudW0geGVfdm1hX29wX2ZsYWdzIHsKPiA+ID4gPiA+IMKgwqDCoMKg wqDCoMKgwqBYRV9WTUFfT1BfUFJFVl9DT01NSVRURUTCoMKgwqDCoMKgwqDCoMKgPSBCSVQoMyks Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgLyoqIEBYRV9WTUFfT1BfTkVYVF9DT01NSVRURUQ6 IE5leHQgVk1BIG9wZXJhdGlvbgo+ID4gPiA+ID4gY29tbWl0dGVkICovCj4gPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgWEVfVk1BX09QX05FWFRfQ09NTUlUVEVEwqDCoMKgwqDCoMKgwqDCoD0gQklU KDQpLAo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgLyoqIEBYRV9WTUFfT1BfQVNZTkM6IG9wZXJh dGlvbiBpcyBhc3luYyAqLwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgWEVfVk1BX09QX0FTWU5D wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gQklUKDUpLAo+ID4gPiA+ID4gwqDC oCB9Owo+ID4gPiA+ID4gwqDCoCAvKiogc3RydWN0IHhlX3ZtYV9vcCAtIFZNQSBvcGVyYXRpb24g Ki8KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL3hlX2RybS5oCj4gPiA+ ID4gPiBiL2luY2x1ZGUvdWFwaS9kcm0veGVfZHJtLmgKPiA+ID4gPiA+IGluZGV4IGViMDNhNDlj MTdhMS4uZmQ4MTcyZmUyZDlhIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvaW5jbHVkZS91YXBpL2Ry bS94ZV9kcm0uaAo+ID4gPiA+ID4gKysrIGIvaW5jbHVkZS91YXBpL2RybS94ZV9kcm0uaAo+ID4g PiA+ID4gQEAgLTE0MSw4ICsxNDEsNyBAQCBzdHJ1Y3QgZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0 YW5jZSB7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgICogS2VybmVsIG9ubHkgY2xhc3NlcyAo bm90IGFjdHVhbCBoYXJkd2FyZSBlbmdpbmUKPiA+ID4gPiA+IGNsYXNzKS4gVXNlZCBmb3IKPiA+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqAgKiBjcmVhdGluZyBvcmRlcmVkIHF1ZXVlcyBvZiBWTSBi aW5kIG9wZXJhdGlvbnMuCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgICovCj4gPiA+ID4gPiAt I2RlZmluZSBEUk1fWEVfRU5HSU5FX0NMQVNTX1ZNX0JJTkRfQVNZTkPCoMKgwqDCoMKgwqA1Cj4g PiA+ID4gPiAtI2RlZmluZSBEUk1fWEVfRU5HSU5FX0NMQVNTX1ZNX0JJTkRfU1lOQ8KgwqDCoMKg wqDCoMKgNgo+ID4gPiA+ID4gKyNkZWZpbmUgRFJNX1hFX0VOR0lORV9DTEFTU19WTV9CSU5EwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgNQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoF9fdTE2IGVu Z2luZV9jbGFzczsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBfX3UxNiBlbmdpbmVfaW5zdGFu Y2U7Cj4gPiA+ID4gPiBAQCAtNjYwLDcgKzY1OSw2IEBAIHN0cnVjdCBkcm1feGVfdm1fY3JlYXRl IHsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqAgKiBzdGlsbCBlbmFibGUgcmVjb3ZlcmFibGUg cGFnZWZhdWx0cyBpZiBzdXBwb3J0ZWQKPiA+ID4gPiA+IGJ5IHRoZSBkZXZpY2UuCj4gPiA+ID4g PiDCoMKgwqDCoMKgwqDCoMKgICovCj4gPiA+ID4gPiDCoMKgICNkZWZpbmUgRFJNX1hFX1ZNX0NS RUFURV9GTEFHX0xSX01PREXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDEgPDwKPiA+ ID4gPiA+IDEpCj4gPiA+ID4gPiAtI2RlZmluZSBEUk1fWEVfVk1fQ1JFQVRFX0ZMQUdfQVNZTkNf REVGQVVMVMKgwqDCoMKgKDEgPDwgMikKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqAvKgo+ID4g PiA+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIERSTV9YRV9WTV9DUkVBVEVfRkxBR19GQVVMVF9NT0RF IHJlcXVpcmVzIGFsc28KPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqAgKiBEUk1fWEVfVk1fQ1JF QVRFX0ZMQUdfTFJfTU9ERS4gSXQgYWxsb3dzIG1lbW9yeSB0bwo+ID4gPiA+ID4gYmUgYWxsb2Nh dGVkCj4gPiA+ID4gPiBAQCAtNjY4LDcgKzY2Niw3IEBAIHN0cnVjdCBkcm1feGVfdm1fY3JlYXRl IHsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqAgKiBUaGUgeGUgZHJpdmVyIGludGVybmFsbHkg dXNlcyByZWNvdmVyYWJsZQo+ID4gPiA+ID4gcGFnZWZhdWx0cyB0byBpbXBsZW1lbnQKPiA+ID4g PiA+IMKgwqDCoMKgwqDCoMKgwqAgKiB0aGlzLgo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoCAq Lwo+ID4gPiA+ID4gLSNkZWZpbmUgRFJNX1hFX1ZNX0NSRUFURV9GTEFHX0ZBVUxUX01PREXCoMKg wqDCoMKgwqDCoCgxIDw8IDMpCj4gPiA+ID4gPiArI2RlZmluZSBEUk1fWEVfVk1fQ1JFQVRFX0ZM QUdfRkFVTFRfTU9ERcKgwqDCoMKgwqDCoMKgKDEgPDwgMikKPiA+ID4gPiA+IMKgwqDCoMKgwqDC oMKgwqAvKiogQGZsYWdzOiBGbGFncyAqLwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoF9fdTMy IGZsYWdzOwo+ID4gPiA+ID4gQEAgLTc3NiwxMiArNzc0LDExIEBAIHN0cnVjdCBkcm1feGVfdm1f YmluZF9vcCB7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgX191MzIgb3A7Cj4gPiA+ID4gPiDC oMKgICNkZWZpbmUgRFJNX1hFX1ZNX0JJTkRfRkxBR19SRUFET05MWcKgKDEgPDwgMCkKPiA+ID4g PiA+IC0jZGVmaW5lIERSTV9YRV9WTV9CSU5EX0ZMQUdfQVNZTkPCoMKgwqDCoMKgwqAoMSA8PCAx KQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoC8qCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKg ICogVmFsaWQgb24gYSBmYXVsdGluZyBWTSBvbmx5LCBkbyB0aGUgTUFQIG9wZXJhdGlvbgo+ID4g PiA+ID4gaW1tZWRpYXRlbHkgcmF0aGVyCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgICogdGhh biBkZWZlcnJpbmcgdGhlIE1BUCB0byB0aGUgcGFnZSBmYXVsdCBoYW5kbGVyLgo+ID4gPiA+ID4g wqDCoMKgwqDCoMKgwqDCoCAqLwo+ID4gPiA+ID4gLSNkZWZpbmUgRFJNX1hFX1ZNX0JJTkRfRkxB R19JTU1FRElBVEXCoMKgKDEgPDwgMikKPiA+ID4gPiA+ICsjZGVmaW5lIERSTV9YRV9WTV9CSU5E X0ZMQUdfSU1NRURJQVRFwqDCoCgxIDw8IDEpCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgLyoK PiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqAgKiBXaGVuIHRoZSBOVUxMIGZsYWcgaXMgc2V0LCB0 aGUgcGFnZSB0YWJsZXMgYXJlCj4gPiA+ID4gPiBzZXR1cCB3aXRoIGEgc3BlY2lhbAo+ID4gPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoCAqIGJpdCB3aGljaCBpbmRpY2F0ZXMgd3JpdGVzIGFyZSBkcm9w cGVkIGFuZCBhbGwKPiA+ID4gPiA+IHJlYWRzIHJldHVybiB6ZXJvLsKgIEluCj4gPiA+ID4gPiBA QCAtNzg5LDcgKzc4Niw3IEBAIHN0cnVjdCBkcm1feGVfdm1fYmluZF9vcCB7Cj4gPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgICogb3BlcmF0aW9ucywgdGhlIEJPIGhhbmRsZSBNQlosIGFuZCB0aGUg Qk8gb2Zmc2V0Cj4gPiA+ID4gPiBNQlouIFRoaXMgZmxhZyBpcwo+ID4gPiA+ID4gwqDCoMKgwqDC oMKgwqDCoCAqIGludGVuZGVkIHRvIGltcGxlbWVudCBWSyBzcGFyc2UgYmluZGluZ3MuCj4gPiA+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgICovCj4gPiA+ID4gPiAtI2RlZmluZSBEUk1fWEVfVk1fQklO RF9GTEFHX05VTEzCoMKgwqDCoMKgwqDCoCgxIDw8IDMpCj4gPiA+ID4gPiArI2RlZmluZSBEUk1f WEVfVk1fQklORF9GTEFHX05VTEzCoMKgwqDCoMKgwqDCoCgxIDw8IDIpCj4gPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgLyoqIEBmbGFnczogQmluZCBmbGFncyAqLwo+ID4gPiA+ID4gwqDCoMKgwqDC oMKgwqDCoF9fdTMyIGZsYWdzOwo+ID4gPiA+ID4gQEAgLTgwNyw2ICs4MDQsMjcgQEAgc3RydWN0 IGRybV94ZV92bV9iaW5kX29wIHsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBfX3U2NCByZXNl cnZlZFszXTsKPiA+ID4gPiA+IMKgwqAgfTsKPiA+ID4gPiA+ICsvKioKPiA+ID4gPiA+ICsgKiBz dHJ1Y3QgZHJtX3hlX3N5bmNzIC0gSW4gLyBvdXQgc3luY3MgZm9yIElPQ1RMcy4KPiA+ID4gPiA+ ICsgKi8KPiA+ID4gPiA+ICtzdHJ1Y3QgZHJtX3hlX3N5bmNzIHsKPiA+ID4gPiA+ICvCoMKgwqDC oMKgwqDCoC8qKiBAbnVtX3N5bmNzOiBhbW91bnQgb2Ygc3luY3MgdG8gd2FpdCBvbiAqLwo+ID4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgX191MzIgbnVtX3N5bmNzOwo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgLyoKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqIEJsb2NrIGlu IElPQ1RMIHVudGlsIG9wZXJhdGlvbiBjb21wbGV0ZSwgbnVtX3N5bmNzCj4gPiA+ID4gPiBNQlog aWYgc2V0Lgo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgICovCj4gPiA+ID4gPiArI2RlZmluZSBE Uk1fWEVfU1lOQ1NfRkxBR19XQUlUX0ZPUl9PUCAoMSA8PCAwKQo+ID4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgLyoqIEBmbGFnczogU3luYyBmbGFncyAqLwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg X191MzIgZmxhZ3M7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAvKiogQHN5 bmNzOiBwb2ludGVyIHRvIHN0cnVjdCBkcm1feGVfc3luYyBhcnJheSAqLwo+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgX191NjQgc3luY3M7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArwqDCoMKgwqDC oMKgwqAvKiogQHJlc2VydmVkOiBSZXNlcnZlZCAqLwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg X191NjQgcmVzZXJ2ZWRbMl07Cj4gPiA+ID4gPiArfTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+IMKg wqAgc3RydWN0IGRybV94ZV92bV9iaW5kIHsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqAvKiog QGV4dGVuc2lvbnM6IFBvaW50ZXIgdG8gdGhlIGZpcnN0IGV4dGVuc2lvbgo+ID4gPiA+ID4gc3Ry dWN0LCBpZiBhbnkgKi8KPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBfX3U2NCBleHRlbnNpb25z Owo+ID4gPiA+ID4gQEAgLTgzOCwxNCArODU2LDggQEAgc3RydWN0IGRybV94ZV92bV9iaW5kIHsK PiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgX191NjQgdmVjdG9yX29m X2JpbmRzOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoH07Cj4gPiA+ID4gPiAtwqDCoMKgwqDC oMKgwqAvKiogQHBhZDogTUJaICovCj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqBfX3UzMiBwYWQy Owo+ID4gPiA+ID4gLQo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgLyoqIEBudW1fc3luY3M6IGFt b3VudCBvZiBzeW5jcyB0byB3YWl0IG9uICovCj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqBfX3Uz MiBudW1fc3luY3M7Cj4gPiA+ID4gPiAtCj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqAvKiogQHN5 bmNzOiBwb2ludGVyIHRvIHN0cnVjdCBkcm1feGVfc3luYyBhcnJheSAqLwo+ID4gPiA+ID4gLcKg wqDCoMKgwqDCoMKgX191NjQgc3luY3M7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAvKiogQHN5 bmNzOiBzeW5jcyBmb3IgYmluZCAqLwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGRy bV94ZV9zeW5jcyBzeW5jczsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlc2VydmVk OiBSZXNlcnZlZCAqLwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoF9fdTY0IHJlc2VydmVkWzJd Owo+ID4gPiA+ID4gQEAgLTk3NCwxNCArOTg2LDE0IEBAIHN0cnVjdCBkcm1feGVfZXhlYyB7Cj4g PiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgLyoqIEBleHRlbnNpb25zOiBQb2ludGVyIHRvIHRoZSBm aXJzdCBleHRlbnNpb24KPiA+ID4gPiA+IHN0cnVjdCwgaWYgYW55ICovCj4gPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgX191NjQgZXh0ZW5zaW9uczsKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoC8q KiBAcGFkOiBNQlogKi8KPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoF9fdTMyIHBhZDsKPiA+ID4g PiA+ICsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqAvKiogQGV4ZWNfcXVldWVfaWQ6IEV4ZWMg cXVldWUgSUQgZm9yIHRoZSBiYXRjaAo+ID4gPiA+ID4gYnVmZmVyICovCj4gPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgX191MzIgZXhlY19xdWV1ZV9pZDsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDC oC8qKiBAbnVtX3N5bmNzOiBBbW91bnQgb2Ygc3RydWN0IGRybV94ZV9zeW5jIGluCj4gPiA+ID4g PiBhcnJheS4gKi8KPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoF9fdTMyIG51bV9zeW5jczsKPiA+ ID4gPiA+IC0KPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoC8qKiBAc3luY3M6IFBvaW50ZXIgdG8g c3RydWN0IGRybV94ZV9zeW5jIGFycmF5LiAqLwo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgX191 NjQgc3luY3M7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAvKiogQHN5bmNzOiBzeW5jcyBmb3Ig ZXhlYyAqLwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGRybV94ZV9zeW5jcyBzeW5j czsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqAvKioKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKg wqAgKiBAYWRkcmVzczogYWRkcmVzcyBvZiBiYXRjaCBidWZmZXIgaWYKPiA+ID4gPiA+IG51bV9i YXRjaF9idWZmZXIgPT0gMSBvciBhbgo+ID4gPiA+ID4gQEAgLTk5NSw4ICsxMDA3LDggQEAgc3Ry dWN0IGRybV94ZV9leGVjIHsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+ID4gPiA+ IMKgwqDCoMKgwqDCoMKgwqBfX3UxNiBudW1fYmF0Y2hfYnVmZmVyOwo+ID4gPiA+ID4gLcKgwqDC oMKgwqDCoMKgLyoqIEBwYWQ6IE1CWiAqLwo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgX191MTYg cGFkWzNdOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgLyoqIEBwYWQyOiBNQlogKi8KPiA+ID4g PiA+ICvCoMKgwqDCoMKgwqDCoF9fdTE2IHBhZDJbM107Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgLyoqIEByZXNlcnZlZDogUmVzZXJ2ZWQgKi8KPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBf X3U2NCByZXNlcnZlZFsyXTsKCg==