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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 9141FC4167B for ; Wed, 6 Dec 2023 05:28:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ACa+aVPIoPBedXd2F4feiB1wHHtIbKjxD300y5jhDHc=; b=G9ol5joqMKxwOg Uiu+av7Jj7WdnFK7J78Skx5GuT0GN4mBxlT9M9s5jhQxQ4BqhHdpKZLK8nyYgzgG6S5MQhXw/5Irx SAzHNeFcBvop5DywaIqBjE7miv6Moznl+RO9DOLQiAw9giNtZn8orI2dKiEEAcinUmi/yHszLL0Uv BNSr81oQVC0xPdbMbZnb9FwpKt/uyO9WDpL9ba6n5OHsDjBN6evjBa1jksMBs/EfbCY8CHlMyLb8p Ys4OIYGFuKKLaH5gMImTr9CuMpt56kufE9d7mds+gUzSg8KByjbLYRHRaR+aJUjg0hqWIMmtnqyK/ OihZ28Bsr2b6e4Mk4aVw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rAkSE-0096Jg-0A; Wed, 06 Dec 2023 05:28:14 +0000 Received: from perceval.ideasonboard.com ([213.167.242.64]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rAkS8-0096I9-14; Wed, 06 Dec 2023 05:28:12 +0000 Received: from [192.168.1.104] (unknown [103.251.226.73]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id DA8C0720; Wed, 6 Dec 2023 06:27:22 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1701840444; bh=YRiYeo2dyhHEt0TiTp0b+bV3hFMhhteapJiitU/A0l0=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=C6AEjbqgTjpgbfFkdd3rgjO8+24e2zes7OSPGfIpvMAMaNKUEwJthOCI9LczABi+o CWmIatOJ+QdlvrqEpYu5EUpKDd+8/BjOcSxG6pq8Uj9g0RpbQ918hxFck57UkEN6B9 JWXS7DjTyTcr2QXc81aOunWbpfi72qze8NkPALvA= Message-ID: <6a8566c0-bd26-4ec1-9f7d-d58bbed8411c@ideasonboard.com> Date: Wed, 6 Dec 2023 10:57:59 +0530 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: Re: [PATCH v3 1/4] staging: vc04_services: Drop vchiq_log_error() in favour of dev_err To: Stefan Wahren , linux-staging@lists.linux.dev, linux-rpi-kernel@lists.infradead.org, linux-media@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: Stefan Wahren , Greg Kroah-Hartman , Dan Carpenter , Kieran Bingham , "Ricardo B . Marliere" References: <20231205084157.73819-1-umang.jain@ideasonboard.com> <20231205084157.73819-2-umang.jain@ideasonboard.com> Content-Language: en-US From: Umang Jain In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231205_212808_661728_5A68B581 X-CRM114-Status: GOOD ( 20.51 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgU3RlZmFuCgpPbiAxMi82LzIzIDE6MDIgQU0sIFN0ZWZhbiBXYWhyZW4gd3JvdGU6Cj4gSGkg VW1hbmcsCj4KPiBBbSAwNS4xMi4yMyB1bSAwOTo0MSBzY2hyaWViIFVtYW5nIEphaW46Cj4+IERy b3AgdmNoaXFfbG9nX2Vycm9yKCkgbWFjcm8gd2hpY2ggd3JhcHMgZGV2X2RiZygpLiBJbnRyb2R1 Y2UgdGhlIHVzYWdlCj4+IG9mIGRldl9lcnIoKSBkaXJlY3RseS4KPiBzb3JyeSwgaSBtaXNzZWQg dG8gcmV2aWV3IHRoZSBsYXN0IGNoYW5nZS4gU28gdGhlIGNoYW5nZSB3b24ndCBiZSB0aGF0Cj4g dHJpdmlhbC4KCkFsbCB0aGUgY2hhbmdlcyB5b3Ugc2FpZCBhcmUgdmFsaWQgYW5kIEkgaGF2ZSB0 YWtlbiBhIG5vdGUgb2YgaXQuCgpIb3dldmVyLCBJIHRoaW5rIGl0IHdvdWxkIGJlc3QgdGhhdCBp ZiB3ZSBjYW4gYWRkcmVzcyB0aGVtIGluIGEgc2VwYXJhdGUgCnNlcmllcyBvbiB0b3Agb2YgdGhp cyAoYW5kIEkgd2lsbCBkbyBpdCkuIEl0IHdvdWxkIHNlZW0gdG8gYmUgCnN0cmVhbWxpbmVkIG9u IHRvcCBvZiB0aGlzLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBVbWFuZyBKYWluIDx1bWFuZy5qYWlu QGlkZWFzb25ib2FyZC5jb20+Cj4+IC0tLQo+PiDCoCAuLi4vaW50ZXJmYWNlL3ZjaGlxX2FybS92 Y2hpcV9hcm0uY8KgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA1MCArKysrLS0tLQo+PiDCoCAuLi4v aW50ZXJmYWNlL3ZjaGlxX2FybS92Y2hpcV9jb25uZWN0ZWQuY8KgwqDCoMKgIHzCoMKgIDYgKy0K Pj4gwqAgLi4uL2ludGVyZmFjZS92Y2hpcV9hcm0vdmNoaXFfY29yZS5jwqDCoMKgwqDCoMKgwqDC oMKgIHwgMTEzICsrKysrKysrKy0tLS0tLS0tLQo+PiDCoCAuLi4vaW50ZXJmYWNlL3ZjaGlxX2Fy bS92Y2hpcV9jb3JlLmjCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNCAtCj4+IMKgIC4uLi9pbnRl cmZhY2UvdmNoaXFfYXJtL3ZjaGlxX2Rldi5jwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQ1ICsr KystLS0KPj4gwqAgNSBmaWxlcyBjaGFuZ2VkLCAxMDEgaW5zZXJ0aW9ucygrKSwgMTE3IGRlbGV0 aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IAo+PiBhL2RyaXZlcnMvc3RhZ2luZy92YzA0X3NlcnZp Y2VzL2ludGVyZmFjZS92Y2hpcV9hcm0vdmNoaXFfYXJtLmMgCj4+IGIvZHJpdmVycy9zdGFnaW5n L3ZjMDRfc2VydmljZXMvaW50ZXJmYWNlL3ZjaGlxX2FybS92Y2hpcV9hcm0uYwo+PiBpbmRleCA3 OTc4ZmI2ZGM0ZmIuLmI0MDM0MDBlZGQ4ZSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9zdGFnaW5n L3ZjMDRfc2VydmljZXMvaW50ZXJmYWNlL3ZjaGlxX2FybS92Y2hpcV9hcm0uYwo+PiArKysgYi9k cml2ZXJzL3N0YWdpbmcvdmMwNF9zZXJ2aWNlcy9pbnRlcmZhY2UvdmNoaXFfYXJtL3ZjaGlxX2Fy bS5jCj4+IEBAIC02ODMsOCArNjgzLDcgQEAgaW50IHZjaGlxX2luaXRpYWxpc2Uoc3RydWN0IHZj aGlxX2luc3RhbmNlIAo+PiAqKmluc3RhbmNlX291dCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHVz bGVlcF9yYW5nZSg1MDAsIDYwMCk7Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgIGlmIChp ID09IFZDSElRX0lOSVRfUkVUUklFUykgewo+PiAtwqDCoMKgwqDCoMKgwqAgdmNoaXFfbG9nX2Vy cm9yKHN0YXRlLT5kZXYsIFZDSElRX0NPUkUsICIlczogdmlkZW9jb3JlIG5vdCAKPj4gaW5pdGlh bGl6ZWRcbiIsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19mdW5jX18pOwo+ PiArwqDCoMKgwqDCoMKgwqAgZGV2X2VycihzdGF0ZS0+ZGV2LCAiY29yZTogJXM6IFZpZGVvY29y ZSBub3QgaW5pdGlhbGl6ZWRcbiIsIAo+PiBfX2Z1bmNfXyk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDC oCByZXQgPSAtRU5PVENPTk47Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWxlZDsKPj4g wqDCoMKgwqDCoCB9IGVsc2UgaWYgKGkgPiAwKSB7Cj4+IEBAIC02OTQsOCArNjkzLDcgQEAgaW50 IHZjaGlxX2luaXRpYWxpc2Uoc3RydWN0IHZjaGlxX2luc3RhbmNlIAo+PiAqKmluc3RhbmNlX291 dCkKPj4KPj4gwqDCoMKgwqDCoCBpbnN0YW5jZSA9IGt6YWxsb2Moc2l6ZW9mKCppbnN0YW5jZSks IEdGUF9LRVJORUwpOwo+PiDCoMKgwqDCoMKgIGlmICghaW5zdGFuY2UpIHsKPj4gLcKgwqDCoMKg wqDCoMKgIHZjaGlxX2xvZ19lcnJvcihzdGF0ZS0+ZGV2LCBWQ0hJUV9DT1JFLAo+PiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIlczogZXJyb3IgYWxsb2NhdGluZyB2Y2hpcSBpbnN0 YW5jZVxuIiwgX19mdW5jX18pOwo+PiArwqDCoMKgwqDCoMKgwqAgZGV2X2VycihzdGF0ZS0+ZGV2 LCAiY29yZTogJXM6IENhbm5vdCBhbGxvY2F0ZSB2Y2hpcSAKPj4gaW5zdGFuY2VcbiIsIF9fZnVu Y19fKTsKPiBwbGVhc2UgZHJvcCBiZWNhdXNlIGt6YWxsb2MgYWxyZWFkeSByZXBvcnQgc3VjaCBl cnJvcnMKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FTk9NRU07Cj4+IMKgwqDCoMKgwqDC oMKgwqDCoCBnb3RvIGZhaWxlZDsKPj4gwqDCoMKgwqDCoCB9Cj4+IEBAIC05NjcsOCArOTY1LDcg QEAgdmNoaXFfYmxvY2tpbmdfYnVsa190cmFuc2ZlcihzdHJ1Y3QgCj4+IHZjaGlxX2luc3RhbmNl ICppbnN0YW5jZSwgdW5zaWduZWQgaW50IGhhbmRsCj4+IMKgwqDCoMKgwqAgfSBlbHNlIHsKPj4g wqDCoMKgwqDCoMKgwqDCoMKgIHdhaXRlciA9IGt6YWxsb2Moc2l6ZW9mKCp3YWl0ZXIpLCBHRlBf S0VSTkVMKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghd2FpdGVyKSB7Cj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHZjaGlxX2xvZ19lcnJvcihzZXJ2aWNlLT5zdGF0ZS0+ZGV2LCBWQ0hJ UV9DT1JFLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIiVzIC0g b3V0IG9mIG1lbW9yeSIsIF9fZnVuY19fKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2 X2VycihzZXJ2aWNlLT5zdGF0ZS0+ZGV2LCAiY29yZTogJXM6IC0gT3V0IG9mIAo+PiBtZW1vcnlc biIsIF9fZnVuY19fKTsKPiBkaXR0bwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gLUVOT01FTTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDCoCB9Cj4+IEBA IC0xMjkwLDggKzEyODcsOCBAQCB2Y2hpcV9rZWVwYWxpdmVfdmNoaXFfY2FsbGJhY2soc3RydWN0 IAo+PiB2Y2hpcV9pbnN0YW5jZSAqaW5zdGFuY2UsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZjaGlxX2hlYWRlciAqaGVhZGVyLAo+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBzZXJ2aWNlX3Vz ZXIsIHZvaWQgKmJ1bGtfdXNlcikKPj4gwqAgewo+PiAtwqDCoMKgIHZjaGlxX2xvZ19lcnJvcihp bnN0YW5jZS0+c3RhdGUtPmRldiwgVkNISVFfU1VTUEVORCwKPj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgIiVzIGNhbGxiYWNrIHJlYXNvbiAlZCIsIF9fZnVuY19fLCByZWFzb24pOwo+PiArwqDC oMKgIGRldl9lcnIoaW5zdGFuY2UtPnN0YXRlLT5kZXYsICJzdXNwZW5kOiAlczogY2FsbGJhY2sg cmVhc29uICVkXG4iLAo+PiArwqDCoMKgwqDCoMKgwqAgX19mdW5jX18sIHJlYXNvbik7Cj4+IMKg wqDCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgIH0KPj4KPj4gQEAgLTEzMTUsMjIgKzEzMTIsMjAgQEAg dmNoaXFfa2VlcGFsaXZlX3RocmVhZF9mdW5jKHZvaWQgKnYpCj4+Cj4+IMKgwqDCoMKgwqAgcmV0 ID0gdmNoaXFfaW5pdGlhbGlzZSgmaW5zdGFuY2UpOwo+PiDCoMKgwqDCoMKgIGlmIChyZXQpIHsK Pj4gLcKgwqDCoMKgwqDCoMKgIHZjaGlxX2xvZ19lcnJvcihzdGF0ZS0+ZGV2LCBWQ0hJUV9TVVNQ RU5ELAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIlcyB2Y2hpcV9pbml0aWFs aXNlIGZhaWxlZCAlZCIsIF9fZnVuY19fLCByZXQpOwo+PiArwqDCoMKgwqDCoMKgwqAgZGV2X2Vy cihzdGF0ZS0+ZGV2LCAic3VzcGVuZDogJXM6IHZjaGlxX2luaXRpYWxpc2UgZmFpbGVkIAo+PiAl ZFxuIiwgX19mdW5jX18sIHJldCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGV4aXQ7Cj4+ IMKgwqDCoMKgwqAgfQo+Pgo+PiDCoMKgwqDCoMKgIHN0YXR1cyA9IHZjaGlxX2Nvbm5lY3QoaW5z dGFuY2UpOwo+PiDCoMKgwqDCoMKgIGlmIChzdGF0dXMpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHZj aGlxX2xvZ19lcnJvcihzdGF0ZS0+ZGV2LCBWQ0hJUV9TVVNQRU5ELAo+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICIlcyB2Y2hpcV9jb25uZWN0IGZhaWxlZCAlZCIsIF9fZnVuY19f LCBzdGF0dXMpOwo+PiArwqDCoMKgwqDCoMKgwqAgZGV2X2VycihzdGF0ZS0+ZGV2LCAic3VzcGVu ZDogJXM6IHZjaGlxX2Nvbm5lY3QgZmFpbGVkIAo+PiAlZFxuIiwgX19mdW5jX18sIHN0YXR1cyk7 Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIHNodXRkb3duOwo+PiDCoMKgwqDCoMKgIH0KPj4K Pj4gwqDCoMKgwqDCoCBzdGF0dXMgPSB2Y2hpcV9hZGRfc2VydmljZShpbnN0YW5jZSwgJnBhcmFt cywgJmthX2hhbmRsZSk7Cj4+IMKgwqDCoMKgwqAgaWYgKHN0YXR1cykgewo+PiAtwqDCoMKgwqDC oMKgwqAgdmNoaXFfbG9nX2Vycm9yKHN0YXRlLT5kZXYsIFZDSElRX1NVU1BFTkQsCj4+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIiVzIHZjaGlxX29wZW5fc2VydmljZSBmYWlsZWQg JWQiLCBfX2Z1bmNfXywgc3RhdHVzKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGRldl9lcnIoc3RhdGUt PmRldiwgInN1c3BlbmQ6ICVzOiB2Y2hpcV9vcGVuX3NlcnZpY2UgZmFpbGVkIAo+PiAlZFxuIiwK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19mdW5jX18sIHN0YXR1cyk7Cj4+IMKgwqDCoMKg wqDCoMKgwqDCoCBnb3RvIHNodXRkb3duOwo+PiDCoMKgwqDCoMKgIH0KPj4KPj4gQEAgLTEzMzgs OCArMTMzMyw3IEBAIHZjaGlxX2tlZXBhbGl2ZV90aHJlYWRfZnVuYyh2b2lkICp2KQo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgbG9uZyByYyA9IDAsIHVjID0gMDsKPj4KPj4gwqDCoMKgwqDCoMKgwqDC oMKgIGlmICh3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoJmFybV9zdGF0ZS0+a2Ff ZXZ0KSkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2Y2hpcV9sb2dfZXJyb3Ioc3RhdGUt PmRldiwgVkNISVFfU1VTUEVORCwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICIlcyBpbnRlcnJ1cHRlZCIsIF9fZnVuY19fKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZGV2X2VycihzdGF0ZS0+ZGV2LCAic3VzcGVuZDogJXM6IGludGVycnVwdGVkXG4iLCAK Pj4gX19mdW5jX18pOwo+IEkgdGhpbmsgdGhpcyBpc24ndCBhbiBlcnJvciBhbmQgd2Ugc2hvdWxk IHVzZSBkZXZfZGJnIGhlcmUuCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZsdXNoX3Np Z25hbHMoY3VycmVudCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiBAQCAtMTM1OSwxNiArMTM1MywxNSBAQCB2Y2hpcV9r ZWVwYWxpdmVfdGhyZWFkX2Z1bmModm9pZCAqdikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgYXRvbWljX2luYygmYXJtX3N0YXRlLT5rYV91c2VfYWNrX2NvdW50KTsKPj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc3RhdHVzID0gdmNoaXFfdXNlX3NlcnZpY2UoaW5zdGFuY2UsIGth X2hhbmRsZSk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChzdGF0dXMpIHsKPj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2Y2hpcV9sb2dfZXJyb3Ioc3RhdGUtPmRl diwgVkNISVFfU1VTUEVORCwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgIiVzIHZjaGlxX3VzZV9zZXJ2aWNlIGVycm9yICVkIiwgX19mdW5jX18sIAo+ PiBzdGF0dXMpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9lcnIoc3Rh dGUtPmRldiwgInN1c3BlbmQ6ICVzOiB2Y2hpcV91c2Vfc2VydmljZSAKPj4gZXJyb3IgJWRcbiIs Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2Z1bmNfXywgc3Rh dHVzKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgwqDCoMKg wqAgfQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgd2hpbGUgKHJjLS0pIHsKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RhdHVzID0gdmNoaXFfcmVsZWFzZV9zZXJ2aWNlKGluc3RhbmNlLCBr YV9oYW5kbGUpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoc3RhdHVzKSB7Cj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmNoaXFfbG9nX2Vycm9yKHN0YXRlLT5k ZXYsIFZDSElRX1NVU1BFTkQsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICIlcyB2Y2hpcV9yZWxlYXNlX3NlcnZpY2UgZXJyb3IgJWQiLCBfX2Z1bmNf XywKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Rh dHVzKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKHN0YXRlLT5k ZXYsICJzdXNwZW5kOiAlczogCj4+IHZjaGlxX3JlbGVhc2Vfc2VydmljZSBlcnJvciAlZFxuIiwK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZnVuY19fLCBzdGF0 dXMpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqDCoMKgwqDC oCB9Cj4+IMKgwqDCoMKgwqAgfQo+PiBAQCAtMTQwMyw3ICsxMzk2LDcgQEAgdmNoaXFfdXNlX2lu dGVybmFsKHN0cnVjdCB2Y2hpcV9zdGF0ZSAqc3RhdGUsIAo+PiBzdHJ1Y3QgdmNoaXFfc2Vydmlj ZSAqc2VydmljZSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZXJ2aWNlLT5jbGll bnRfaWQpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZW50aXR5X3VjID0gJnNlcnZpY2UtPnNlcnZp Y2VfdXNlX2NvdW50Owo+PiDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCB2 Y2hpcV9sb2dfZXJyb3Ioc3RhdGUtPmRldiwgVkNISVFfU1VTUEVORCwgIiVzIG51bGwgc2Vydmlj ZSAKPj4gcHRyIiwgX19mdW5jX18pOwo+PiArwqDCoMKgwqDCoMKgwqAgZGV2X2VycihzdGF0ZS0+ ZGV2LCAic3VzcGVuZDogJXM6IG51bGwgc2VydmljZSBwdHJcbiIsIAo+PiBfX2Z1bmNfXyk7Cj4g SW5zdGVhZCBvZiBkZXZfZXJyKCkgaSB3b3VsZCBzdWdnZXN0IGEgV0FSTigpIGhlcmUKPj4gwqDC oMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FSU5WQUw7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3Rv IG91dDsKPj4gwqDCoMKgwqDCoCB9Cj4+IEBAIC0xNjg2LDEwICsxNjc5LDEwIEBAIHZjaGlxX2No ZWNrX3NlcnZpY2Uoc3RydWN0IHZjaGlxX3NlcnZpY2UgCj4+ICpzZXJ2aWNlKQo+PiDCoMKgwqDC oMKgIHJlYWRfdW5sb2NrX2JoKCZhcm1fc3RhdGUtPnN1c3BfcmVzX2xvY2spOwo+Pgo+PiDCoMKg wqDCoMKgIGlmIChyZXQpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHZjaGlxX2xvZ19lcnJvcihzZXJ2 aWNlLT5zdGF0ZS0+ZGV2LCBWQ0hJUV9TVVNQRU5ELAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICIlcyBFUlJPUiAtICVwNGNjOiVkIHNlcnZpY2UgY291bnQgJWQsIHN0YXRlIGNv dW50IAo+PiAlZCIsIF9fZnVuY19fLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICZzZXJ2aWNlLT5iYXNlLmZvdXJjYywgc2VydmljZS0+Y2xpZW50X2lkLAo+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNlcnZpY2UtPnNlcnZpY2VfdXNlX2NvdW50LCAKPj4gYXJt X3N0YXRlLT52aWRlb2NvcmVfdXNlX2NvdW50KTsKPj4gK8KgwqDCoMKgwqDCoMKgIGRldl9lcnIo c2VydmljZS0+c3RhdGUtPmRldiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgInN1c3BlbmQ6 ICVzOsKgICVwNGNjOiVkIHNlcnZpY2UgY291bnQgJWQsIHN0YXRlIGNvdW50IAo+PiAlZFxuIiwK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19mdW5jX18sICZzZXJ2aWNlLT5iYXNlLmZvdXJj Yywgc2VydmljZS0+Y2xpZW50X2lkLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZXJ2aWNl LT5zZXJ2aWNlX3VzZV9jb3VudCwgCj4+IGFybV9zdGF0ZS0+dmlkZW9jb3JlX3VzZV9jb3VudCk7 Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB2Y2hpcV9kdW1wX3NlcnZpY2VfdXNlX3N0YXRlKHNlcnZp Y2UtPnN0YXRlKTsKPj4gwqDCoMKgwqDCoCB9Cj4+IMKgIG91dDoKPj4gQEAgLTE3MjIsOSArMTcx NSw4IEBAIHZvaWQgdmNoaXFfcGxhdGZvcm1fY29ubl9zdGF0ZV9jaGFuZ2VkKHN0cnVjdCAKPj4g dmNoaXFfc3RhdGUgKnN0YXRlLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKHZvaWQgKilzdGF0ZSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRocmVhZG5hbWUpOwo+PiDCoMKg wqDCoMKgIGlmIChJU19FUlIoYXJtX3N0YXRlLT5rYV90aHJlYWQpKSB7Cj4+IC3CoMKgwqDCoMKg wqDCoCB2Y2hpcV9sb2dfZXJyb3Ioc3RhdGUtPmRldiwgVkNISVFfU1VTUEVORCwKPj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAidmNoaXE6IEZBVEFMOiBjb3VsZG4ndCBjcmVhdGUg dGhyZWFkICVzIiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0aHJlYWRuYW1l KTsKPj4gK8KgwqDCoMKgwqDCoMKgIGRldl9lcnIoc3RhdGUtPmRldiwgInN1c3BlbmQ6IENvdWxk bid0IGNyZWF0ZSB0aHJlYWQgJXNcbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRocmVh ZG5hbWUpOwo+PiDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB3YWtl X3VwX3Byb2Nlc3MoYXJtX3N0YXRlLT5rYV90aHJlYWQpOwo+PiDCoMKgwqDCoMKgIH0KPj4gZGlm ZiAtLWdpdCAKPj4gYS9kcml2ZXJzL3N0YWdpbmcvdmMwNF9zZXJ2aWNlcy9pbnRlcmZhY2UvdmNo aXFfYXJtL3ZjaGlxX2Nvbm5lY3RlZC5jIAo+PiBiL2RyaXZlcnMvc3RhZ2luZy92YzA0X3NlcnZp Y2VzL2ludGVyZmFjZS92Y2hpcV9hcm0vdmNoaXFfY29ubmVjdGVkLmMKPj4gaW5kZXggMjFmOWZh MWExNzEzLi4zY2FkMTNmMDllMzcgMTAwNjQ0Cj4+IC0tLSAKPj4gYS9kcml2ZXJzL3N0YWdpbmcv dmMwNF9zZXJ2aWNlcy9pbnRlcmZhY2UvdmNoaXFfYXJtL3ZjaGlxX2Nvbm5lY3RlZC5jCj4+ICsr KyAKPj4gYi9kcml2ZXJzL3N0YWdpbmcvdmMwNF9zZXJ2aWNlcy9pbnRlcmZhY2UvdmNoaXFfYXJt L3ZjaGlxX2Nvbm5lY3RlZC5jCj4+IEBAIC0zOSw5ICszOSw5IEBAIHZvaWQgdmNoaXFfYWRkX2Nv bm5lY3RlZF9jYWxsYmFjayhzdHJ1Y3QgCj4+IHZjaGlxX2RldmljZSAqZGV2aWNlLCB2b2lkICgq Y2FsbGJhY2spKAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgY2FsbGJhY2soKTsKPj4gwqDCoMKgwqDC oCB9IGVsc2Ugewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGdfbnVtX2RlZmVycmVkX2NhbGxi YWNrcyA+PSBNQVhfQ0FMTEJBQ0tTKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZjaGlx X2xvZ19lcnJvcigmZGV2aWNlLT5kZXYsIFZDSElRX0NPUkUsCj4+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiVGhlcmUgYWxyZWFkeSAlZCBjYWxsYmFjayByZWdpc3Rl cmVkIC0gcGxlYXNlIAo+PiBpbmNyZWFzZSBNQVhfQ0FMTEJBQ0tTIiwKPj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdfbnVtX2RlZmVycmVkX2NhbGxiYWNrcyk7Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9lcnIoJmRldmljZS0+ZGV2LAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJjb3JlOiBUaGVyZSBhbHJlYWR5ICVkIGNhbGxiYWNr IHJlZ2lzdGVyZWQgLSBwbGVhc2UgCj4+IGluY3JlYXNlIE1BWF9DQUxMQkFDS1NcbiIsCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ19udW1fZGVmZXJyZWRfY2FsbGJhY2tzKTsK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGdfZGVmZXJyZWRfY2FsbGJhY2tbZ19udW1fZGVmZXJyZWRfY2FsbGJhY2tzXSA9Cj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2FsbGJhY2s7Cj4+IGRpZmYgLS1naXQg Cj4+IGEvZHJpdmVycy9zdGFnaW5nL3ZjMDRfc2VydmljZXMvaW50ZXJmYWNlL3ZjaGlxX2FybS92 Y2hpcV9jb3JlLmMgCj4+IGIvZHJpdmVycy9zdGFnaW5nL3ZjMDRfc2VydmljZXMvaW50ZXJmYWNl L3ZjaGlxX2FybS92Y2hpcV9jb3JlLmMKPj4gaW5kZXggZTAwMjJhY2I0YzU4Li42M2Y0MTI4MTVh MzIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy92YzA0X3NlcnZpY2VzL2ludGVyZmFj ZS92Y2hpcV9hcm0vdmNoaXFfY29yZS5jCj4+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy92YzA0X3Nl cnZpY2VzL2ludGVyZmFjZS92Y2hpcV9hcm0vdmNoaXFfY29yZS5jCj4+IEBAIC03NDEsMTAgKzc0 MSwxMCBAQCBwcm9jZXNzX2ZyZWVfZGF0YV9tZXNzYWdlKHN0cnVjdCB2Y2hpcV9zdGF0ZSAKPj4g KnN0YXRlLCB1MzIgKnNlcnZpY2VfZm91bmQsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCBjb21wbGV0ZSgmcXVvdGEtPnF1b3RhX2V2ZW50KTsKPj4gwqDC oMKgwqDCoCB9IGVsc2UgaWYgKGNvdW50ID09IDApIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHZjaGlx X2xvZ19lcnJvcihzdGF0ZS0+ZGV2LCBWQ0hJUV9DT1JFLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICJzZXJ2aWNlICVkIG1lc3NhZ2VfdXNlX2NvdW50PSVkIChoZWFkZXIgJXBL LCBtc2dpZCAKPj4gJXgsIGhlYWRlci0+bXNnaWQgJXgsIGhlYWRlci0+c2l6ZSAleCkiLAo+PiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvcnQsIHF1b3RhLT5tZXNzYWdlX3VzZV9j b3VudCwgaGVhZGVyLCBtc2dpZCwgCj4+IGhlYWRlci0+bXNnaWQsCj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaGVhZGVyLT5zaXplKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGRldl9l cnIoc3RhdGUtPmRldiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImNvcmU6IHNlcnZpY2Ug JWQgbWVzc2FnZV91c2VfY291bnQ9JWQgKGhlYWRlciAlcEssIAo+PiBtc2dpZCAleCwgaGVhZGVy LT5tc2dpZCAleCwgaGVhZGVyLT5zaXplICV4KVxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcG9ydCwgcXVvdGEtPm1lc3NhZ2VfdXNlX2NvdW50LCBoZWFkZXIsIG1zZ2lkLAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBoZWFkZXItPm1zZ2lkLCBoZWFkZXItPnNpemUpOwo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgV0FSTigxLCAiaW52YWxpZCBtZXNzYWdlIHVzZSBjb3VudFxuIik7Cj4+ IMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgIGlmICghQklUU0VUX0lTX1NFVChzZXJ2aWNlX2Zv dW5kLCBwb3J0KSkgewo+PiBAQCAtNzY2LDkgKzc2Niw5IEBAIHByb2Nlc3NfZnJlZV9kYXRhX21l c3NhZ2Uoc3RydWN0IHZjaGlxX3N0YXRlIAo+PiAqc3RhdGUsIHUzMiAqc2VydmljZV9mb3VuZCwK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmNoaXFfbG9nX3RyYWNlKHN0YXRlLT5kZXYs IFZDSElRX0NPUkUsICIlZDogcGZxOiVkIAo+PiAleEAlcEsgLSBzbG90X3VzZS0+JWQiLAo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RhdGUtPmlkLCBwb3J0 LCBoZWFkZXItPnNpemUsIGhlYWRlciwgY291bnQgLSAxKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKg IH0gZWxzZSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZjaGlxX2xvZ19lcnJvcihzdGF0 ZS0+ZGV2LCBWQ0hJUV9DT1JFLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgInNlcnZpY2UgJWQgc2xvdF91c2VfY291bnQ9JWQgKGhlYWRlciAlcEssIG1zZ2lkIAo+ PiAleCwgaGVhZGVyLT5tc2dpZCAleCwgaGVhZGVyLT5zaXplICV4KSIsCj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwb3J0LCBjb3VudCwgaGVhZGVyLCBtc2dpZCwg aGVhZGVyLT5tc2dpZCwgCj4+IGhlYWRlci0+c2l6ZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGRldl9lcnIoc3RhdGUtPmRldiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAiY29yZTogc2VydmljZSAlZCBzbG90X3VzZV9jb3VudD0lZCAoaGVhZGVyICVwSywgCj4+IG1z Z2lkICV4LCBoZWFkZXItPm1zZ2lkICV4LCBoZWFkZXItPnNpemUgJXgpXG4iLAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvcnQsIGNvdW50LCBoZWFkZXIsIG1zZ2lkLCBoZWFk ZXItPm1zZ2lkLCAKPj4gaGVhZGVyLT5zaXplKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgV0FSTigxLCAiYmFkIHNsb3QgdXNlIGNvdW50XG4iKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKg IH0KPj4gwqDCoMKgwqDCoCB9Cj4+IEBAIC04MzEsOSArODMxLDkgQEAgcHJvY2Vzc19mcmVlX3F1 ZXVlKHN0cnVjdCB2Y2hpcV9zdGF0ZSAqc3RhdGUsIHUzMiAKPj4gKnNlcnZpY2VfZm91bmQsCj4+ Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvcyArPSBjYWxjX3N0cmlkZShoZWFkZXIt PnNpemUpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocG9zID4gVkNISVFfU0xP VF9TSVpFKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmNoaXFfbG9nX2Vy cm9yKHN0YXRlLT5kZXYsIFZDSElRX0NPUkUsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICJwZnEgLSBwb3MgJXg6IGhlYWRlciAlcEssIG1zZ2lkICV4 LCAKPj4gaGVhZGVyLT5tc2dpZCAleCwgaGVhZGVyLT5zaXplICV4IiwKPj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcG9zLCBoZWFkZXIsIG1zZ2lkLCBo ZWFkZXItPm1zZ2lkLCAKPj4gaGVhZGVyLT5zaXplKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBkZXZfZXJyKHN0YXRlLT5kZXYsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAiY29yZTogcGZxIC0gcG9zICV4OiBoZWFkZXIgJXBLLCBtc2dpZCAl eCwgCj4+IGhlYWRlci0+bXNnaWQgJXgsIGhlYWRlci0+c2l6ZSAleFxuIiwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvcywgaGVhZGVyLCBtc2dpZCwgaGVhZGVy LT5tc2dpZCwgaGVhZGVyLT5zaXplKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBXQVJOKDEsICJpbnZhbGlkIHNsb3QgcG9zaXRpb25cbiIpOwo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IEBAIC0xMTY3LDggKzEx NjcsOCBAQCBxdWV1ZV9tZXNzYWdlX3N5bmMoc3RydWN0IHZjaGlxX3N0YXRlICpzdGF0ZSwgCj4+ IHN0cnVjdCB2Y2hpcV9zZXJ2aWNlICpzZXJ2aWNlLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaW50 IG9sZG1zZ2lkID0gaGVhZGVyLT5tc2dpZDsKPj4KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChv bGRtc2dpZCAhPSBWQ0hJUV9NU0dJRF9QQURESU5HKQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB2Y2hpcV9sb2dfZXJyb3Ioc3RhdGUtPmRldiwgVkNISVFfQ09SRSwgIiVkOiBxbXMgLSBtc2dp ZCAKPj4gJXgsIG5vdCBQQURESU5HIiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHN0YXRlLT5pZCwgb2xkbXNnaWQpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBkZXZfZXJyKHN0YXRlLT5kZXYsICJjb3JlOiAlZDogcW1zIC0gbXNnaWQgJXgsIG5vdCAKPj4g UEFERElOR1xuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdGF0ZS0+aWQs IG9sZG1zZ2lkKTsKPj4gwqDCoMKgwqDCoCB9Cj4+Cj4+IMKgwqDCoMKgwqAgdmNoaXFfbG9nX2Rl YnVnKHN0YXRlLT5kZXYsIFZDSElRX1NZTkMsCj4+IEBAIC0xNjE2LDEwICsxNjE2LDEwIEBAIHBh cnNlX21lc3NhZ2Uoc3RydWN0IHZjaGlxX3N0YXRlICpzdGF0ZSwgCj4+IHN0cnVjdCB2Y2hpcV9o ZWFkZXIgKmhlYWRlcikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4KPj4gwqDCoMKgwqDCoMKg wqDCoMKgIGlmICghc2VydmljZSkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2Y2hpcV9s b2dfZXJyb3Ioc3RhdGUtPmRldiwgVkNISVFfQ09SRSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICIlZDogcHJzICVzQCVwSyAoJWQtPiVkKSAtIGludmFsaWQvY2xv c2VkIAo+PiBzZXJ2aWNlICVkIiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0YXRlLT5pZCwgbXNnX3R5cGVfc3RyKHR5cGUpLCBoZWFkZXIsIHJlbW90ZXBvcnQs Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsb2NhbHBvcnQsIGxv Y2FscG9ydCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9lcnIoc3RhdGUtPmRldiwK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiY29yZTogJWQ6IHBycyAlc0AlcEsg KCVkLT4lZCkgLSBpbnZhbGlkL2Nsb3NlZCAKPj4gc2VydmljZSAlZFxuIiwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdGF0ZS0+aWQsIG1zZ190eXBlX3N0cih0eXBlKSwgaGVh ZGVyLCByZW1vdGVwb3J0LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvY2Fs cG9ydCwgbG9jYWxwb3J0KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBza2lw X21lc3NhZ2U7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBi cmVhazsKPj4gQEAgLTE2NDAsOSArMTY0MCw4IEBAIHBhcnNlX21lc3NhZ2Uoc3RydWN0IHZjaGlx X3N0YXRlICpzdGF0ZSwgc3RydWN0IAo+PiB2Y2hpcV9oZWFkZXIgKmhlYWRlcikKPj4KPj4gwqDC oMKgwqDCoCBpZiAoKCh1bnNpZ25lZCBsb25nKWhlYWRlciAmIFZDSElRX1NMT1RfTUFTSykgKwo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgY2FsY19zdHJpZGUoc2l6ZSkgPiBWQ0hJUV9TTE9UX1NJWkUp IHsKPj4gLcKgwqDCoMKgwqDCoMKgIHZjaGlxX2xvZ19lcnJvcihzdGF0ZS0+ZGV2LCBWQ0hJUV9D T1JFLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJoZWFkZXIgJXBLIChtc2dp ZCAleCkgLSBzaXplICV4IHRvbyBiaWcgZm9yIHNsb3QiLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGhlYWRlciwgKHVuc2lnbmVkIGludCltc2dpZCwgKHVuc2lnbmVkIGludClz aXplKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGRldl9lcnIoc3RhdGUtPmRldiwgImNvcmU6IGhlYWRl ciAlcEsgKG1zZ2lkICV4KSAtIHNpemUgJXggCj4+IHRvbyBiaWcgZm9yIHNsb3RcbiIsCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGhlYWRlciwgKHVuc2lnbmVkIGludCltc2dpZCwgKHVuc2ln bmVkIGludClzaXplKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIFdBUk4oMSwgIm92ZXJzaXplZCBm b3Igc2xvdFxuIik7Cj4+IMKgwqDCoMKgwqAgfQo+Pgo+PiBAQCAtMTY2OCw4ICsxNjY3LDggQEAg cGFyc2VfbWVzc2FnZShzdHJ1Y3QgdmNoaXFfc3RhdGUgKnN0YXRlLCBzdHJ1Y3QgCj4+IHZjaGlx X2hlYWRlciAqaGVhZGVyKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZXRfc2Vydmlj ZV9zdGF0ZShzZXJ2aWNlLCBWQ0hJUV9TUlZTVEFURV9PUEVOKTsKPj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgY29tcGxldGUoJnNlcnZpY2UtPnJlbW92ZV9ldmVudCk7Cj4+IMKgwqDCoMKg wqDCoMKgwqDCoCB9IGVsc2Ugewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2Y2hpcV9sb2df ZXJyb3Ioc3RhdGUtPmRldiwgVkNISVFfQ09SRSwgIk9QRU5BQ0sgCj4+IHJlY2VpdmVkIGluIHN0 YXRlICVzIiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNydnN0 YXRlX25hbWVzW3NlcnZpY2UtPnNydnN0YXRlXSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGRldl9lcnIoc3RhdGUtPmRldiwgImNvcmU6IE9QRU5BQ0sgcmVjZWl2ZWQgaW4gc3RhdGUgJXNc biIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3J2c3RhdGVfbmFtZXNbc2Vy dmljZS0+c3J2c3RhdGVdKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDCoMKg wqDCoMKgIGJyZWFrOwo+PiDCoMKgwqDCoMKgIGNhc2UgVkNISVFfTVNHX0NMT1NFOgo+PiBAQCAt MTc0MCwxMSArMTczOSwxMCBAQCBwYXJzZV9tZXNzYWdlKHN0cnVjdCB2Y2hpcV9zdGF0ZSAqc3Rh dGUsIAo+PiBzdHJ1Y3QgdmNoaXFfaGVhZGVyICpoZWFkZXIpCj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKChpbnQpKHF1ZXVl LT5yZW1vdGVfaW5zZXJ0IC0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBx dWV1ZS0+bG9jYWxfaW5zZXJ0KSA+PSAwKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdmNoaXFfbG9nX2Vycm9yKHN0YXRlLT5kZXYsIFZDSElRX0NPUkUsCj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIlZDogcHJzICVzQCVwSyAo JWQtPiVkKSB1bmV4cGVjdGVkIAo+PiAocmk9JWQsbGk9JWQpIiwKPj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RhdGUtPmlkLCBtc2dfdHlwZV9zdHIo dHlwZSksIGhlYWRlciwgCj4+IHJlbW90ZXBvcnQsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvY2FscG9ydCwgcXVldWUtPnJlbW90ZV9pbnNlcnQs Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHF1ZXVl LT5sb2NhbF9pbnNlcnQpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9l cnIoc3RhdGUtPmRldiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICJjb3JlOiAlZDogcHJzICVzQCVwSyAoJWQtPiVkKSB1bmV4cGVjdGVkIAo+PiAocmk9JWQsbGk9 JWQpXG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RhdGUt PmlkLCBtc2dfdHlwZV9zdHIodHlwZSksIGhlYWRlciwgcmVtb3RlcG9ydCwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvY2FscG9ydCwgcXVldWUtPnJlbW90ZV9p bnNlcnQsIAo+PiBxdWV1ZS0+bG9jYWxfaW5zZXJ0KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBtdXRleF91bmxvY2soJnNlcnZpY2UtPmJ1bGtfbXV0ZXgpOwo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB9Cj4+IEBAIC0xNzkwLDggKzE3ODgsOCBAQCBwYXJzZV9tZXNzYWdlKHN0cnVj dCB2Y2hpcV9zdGF0ZSAqc3RhdGUsIHN0cnVjdCAKPj4gdmNoaXFfaGVhZGVyICpoZWFkZXIpCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCB2Y2hpcV9sb2dfdHJhY2Uoc3RhdGUtPmRldiwgVkNISVFfQ09S RSwgIiVkOiBwcnMgCj4+IFBBVVNFQCVwSywleCIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3RhdGUtPmlkLCBoZWFkZXIsIHNpemUpOwo+PiDCoMKgwqDCoMKgwqDCoMKg wqAgaWYgKHN0YXRlLT5jb25uX3N0YXRlID09IFZDSElRX0NPTk5TVEFURV9QQVVTRUQpIHsKPj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmNoaXFfbG9nX2Vycm9yKHN0YXRlLT5kZXYsIFZDSElR X0NPUkUsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiJWQ6IFBB VVNFIHJlY2VpdmVkIGluIHN0YXRlIFBBVVNFRCIsIHN0YXRlLT5pZCk7Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRldl9lcnIoc3RhdGUtPmRldiwgImNvcmU6ICVkOiBQQVVTRSByZWNlaXZl ZCBpbiBzdGF0ZSAKPj4gUEFVU0VEXG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHN0YXRlLT5pZCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiDC oMKgwqDCoMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHN0YXRlLT5jb25u X3N0YXRlICE9IFZDSElRX0NPTk5TVEFURV9QQVVTRV9TRU5UKSB7Cj4+IEBAIC0xODIxLDggKzE4 MTksOCBAQCBwYXJzZV9tZXNzYWdlKHN0cnVjdCB2Y2hpcV9zdGF0ZSAqc3RhdGUsIHN0cnVjdCAK Pj4gdmNoaXFfaGVhZGVyICpoZWFkZXIpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4K Pj4gwqDCoMKgwqDCoCBkZWZhdWx0Ogo+PiAtwqDCoMKgwqDCoMKgwqAgdmNoaXFfbG9nX2Vycm9y KHN0YXRlLT5kZXYsIFZDSElRX0NPUkUsICIlZDogcHJzIGludmFsaWQgCj4+IG1zZ2lkICV4QCVw SywleCIsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RhdGUtPmlkLCBtc2dp ZCwgaGVhZGVyLCBzaXplKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGRldl9lcnIoc3RhdGUtPmRldiwg ImNvcmU6ICVkOiBwcnMgaW52YWxpZCBtc2dpZCAleEAlcEssJXhcbiIsCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0YXRlLT5pZCwgbXNnaWQsIGhlYWRlciwgc2l6ZSk7Cj4+IMKgwqDCoMKg wqDCoMKgwqDCoCBXQVJOKDEsICJpbnZhbGlkIG1lc3NhZ2VcbiIpOwo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgYnJlYWs7Cj4+IMKgwqDCoMKgwqAgfQo+PiBAQCAtMTkzMiw3ICsxOTMwLDcgQEAgaGFu ZGxlX3BvbGwoc3RydWN0IHZjaGlxX3N0YXRlICpzdGF0ZSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqIHNpbmNlIHRoZSBQQVVTRSBzaG91bGQgaGF2ZSBmbHVzaGVkCj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiB0aHJvdWdoIG91dHN0YW5kaW5nIG1lc3NhZ2VzLgo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHZjaGlxX2xvZ19lcnJvcihzdGF0ZS0+ZGV2LCBWQ0hJUV9DT1JFLCAiRmFpbGVkIHRvIHNl bmQgCj4+IFJFU1VNRSBtZXNzYWdlIik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9l cnIoc3RhdGUtPmRldiwgImNvcmU6IEZhaWxlZCB0byBzZW5kIFJFU1VNRSAKPj4gbWVzc2FnZVxu Iik7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsK Pj4gwqDCoMKgwqDCoCBkZWZhdWx0Ogo+PiBAQCAtMjAzMiwxMCArMjAzMCwxMCBAQCBzeW5jX2Z1 bmModm9pZCAqdikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHNlcnZpY2UgPSBmaW5kX3NlcnZpY2Vf YnlfcG9ydChzdGF0ZSwgbG9jYWxwb3J0KTsKPj4KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgh c2VydmljZSkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2Y2hpcV9sb2dfZXJyb3Ioc3Rh dGUtPmRldiwgVkNISVFfU1lOQywKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICIlZDogc2YgJXNAJXBLICglZC0+JWQpIC0gaW52YWxpZC9jbG9zZWQgc2VydmljZSAK Pj4gJWQiLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RhdGUt PmlkLCBtc2dfdHlwZV9zdHIodHlwZSksIGhlYWRlciwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJlbW90ZXBvcnQsIGxvY2FscG9ydCwgbG9jYWxwb3J0KTsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X2VycihzdGF0ZS0+ZGV2LAo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICJzeW5jOiAlZDogc2YgJXNAJXBLICglZC0+JWQpIC0gaW52 YWxpZC9jbG9zZWQgCj4+IHNlcnZpY2UgJWRcbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RhdGUtPmlkLCBtc2dfdHlwZV9zdHIodHlwZSksIGhlYWRlciwgcmVtb3RlcG9y dCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsb2NhbHBvcnQsIGxvY2FscG9y dCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlbGVhc2VfbWVzc2FnZV9zeW5jKHN0 YXRlLCBoZWFkZXIpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4g wqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gQEAgLTIwNzcsMTUgKzIwNzUsMTUgQEAgc3luY19mdW5j KHZvaWQgKnYpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHNlcnZpY2Ut PnNydnN0YXRlID09IFZDSElRX1NSVlNUQVRFX09QRU5TWU5DKSkgewo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChtYWtlX3NlcnZpY2VfY2FsbGJhY2soc2VydmljZSwg Cj4+IFZDSElRX01FU1NBR0VfQVZBSUxBQkxFLCBoZWFkZXIsCj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE5VTEwpID09IC1F QUdBSU4pCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2Y2hpcV9s b2dfZXJyb3Ioc3RhdGUtPmRldiwgVkNISVFfU1lOQywKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAic3luY2hyb25vdXMgY2FsbGJhY2sg dG8gc2VydmljZSAlZCAKPj4gcmV0dXJucyAtRUFHQUlOIiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsb2NhbHBvcnQpOwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X2VycihzdGF0ZS0+ZGV2LAo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAic3luYzog ZXJyb3I6IHN5bmNocm9ub3VzIGNhbGxiYWNrIHRvIAo+PiBzZXJ2aWNlICVkIHJldHVybnMgLUVB R0FJTlxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgbG9jYWxwb3J0KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGRlZmF1 bHQ6Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZjaGlxX2xvZ19lcnJvcihzdGF0ZS0+ZGV2 LCBWQ0hJUV9TWU5DLCAiJWQ6IHNmIAo+PiB1bmV4cGVjdGVkIG1zZ2lkICV4QCVwSywleCIsCj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdGF0ZS0+aWQsIG1zZ2lk LCBoZWFkZXIsIHNpemUpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKHN0YXRl LT5kZXYsICJzeW5jOiBlcnJvcjogJWQ6IHNmIHVuZXhwZWN0ZWQgCj4+IG1zZ2lkICV4QCVwSywl eFxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdGF0ZS0+aWQsIG1zZ2lk LCBoZWFkZXIsIHNpemUpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWxlYXNlX21l c3NhZ2Vfc3luYyhzdGF0ZSwgaGVhZGVyKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YnJlYWs7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IEBAIC0yMTE4LDggKzIxMTYsOCBAQCB2 Y2hpcV9pbml0X3Nsb3RzKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAKPj4gKm1lbV9iYXNlLCBp bnQgbWVtX3NpemUpCj4+IMKgwqDCoMKgwqAgbnVtX3Nsb3RzIC09IGZpcnN0X2RhdGFfc2xvdDsK Pj4KPj4gwqDCoMKgwqDCoCBpZiAobnVtX3Nsb3RzIDwgNCkgewo+PiAtwqDCoMKgwqDCoMKgwqAg dmNoaXFfbG9nX2Vycm9yKGRldiwgVkNISVFfQ09SRSwgIiVzIC0gaW5zdWZmaWNpZW50IG1lbW9y eSAKPj4gJXggYnl0ZXMiLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZnVu Y19fLCBtZW1fc2l6ZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKGRldiwgImNvcmU6ICVz OiBJbnN1ZmZpY2llbnQgbWVtb3J5ICV4IGJ5dGVzXG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBfX2Z1bmNfXywgbWVtX3NpemUpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5V TEw7Cj4+IMKgwqDCoMKgwqAgfQo+Pgo+PiBAQCAtMjUwMCwxMSArMjQ5OCwxMCBAQCB2Y2hpcV9v cGVuX3NlcnZpY2VfaW50ZXJuYWwoc3RydWN0IAo+PiB2Y2hpcV9zZXJ2aWNlICpzZXJ2aWNlLCBp bnQgY2xpZW50X2lkKQo+PiDCoMKgwqDCoMKgIH0gZWxzZSBpZiAoKHNlcnZpY2UtPnNydnN0YXRl ICE9IFZDSElRX1NSVlNUQVRFX09QRU4pICYmCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAo c2VydmljZS0+c3J2c3RhdGUgIT0gVkNISVFfU1JWU1RBVEVfT1BFTlNZTkMpKSB7Cj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAoc2VydmljZS0+c3J2c3RhdGUgIT0gVkNISVFfU1JWU1RBVEVfQ0xP U0VXQUlUKQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2Y2hpcV9sb2dfZXJyb3Ioc2Vydmlj ZS0+c3RhdGUtPmRldiwgVkNISVFfQ09SRSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICIlZDogb3NpIC0gc3J2c3RhdGUgPSAlcyAocmVmICV1KSIsCj4+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZXJ2aWNlLT5zdGF0ZS0+aWQsCj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcnZzdGF0ZV9uYW1lc1tz ZXJ2aWNlLT5zcnZzdGF0ZV0sCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBrcmVmX3JlYWQoJnNlcnZpY2UtPnJlZl9jb3VudCkpOwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBkZXZfZXJyKHNlcnZpY2UtPnN0YXRlLT5kZXYsCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgImNvcmU6ICVkOiBvc2kgLSBzcnZzdGF0ZSA9ICVzIChyZWYgJXUpXG4i LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNlcnZpY2UtPnN0YXRlLT5pZCwg c3J2c3RhdGVfbmFtZXNbc2VydmljZS0+c3J2c3RhdGVdLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGtyZWZfcmVhZCgmc2VydmljZS0+cmVmX2NvdW50KSk7Cj4+IMKgwqDCoMKg wqDCoMKgwqDCoCBzdGF0dXMgPSAtRUlOVkFMOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgVkNISVFf U0VSVklDRV9TVEFUU19JTkMoc2VydmljZSwgZXJyb3JfY291bnQpOwo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgdmNoaXFfcmVsZWFzZV9zZXJ2aWNlX2ludGVybmFsKHNlcnZpY2UpOwo+PiBAQCAtMjU2 NSw5ICsyNTYyLDkgQEAgcmVsZWFzZV9zZXJ2aWNlX21lc3NhZ2VzKHN0cnVjdCB2Y2hpcV9zZXJ2 aWNlIAo+PiAqc2VydmljZSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwb3MgKz0gY2FsY19zdHJpZGUoaGVhZGVyLT5zaXplKTsK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHBvcyA+IFZDSElRX1NMT1RfU0laRSkg ewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZjaGlxX2xvZ19lcnJvcihzdGF0 ZS0+ZGV2LCBWQ0hJUV9DT1JFLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAiZnNpIC0gcG9zICV4OiBoZWFkZXIgJXBLLCBtc2dpZCAleCwgCj4+IGhl YWRlci0+bXNnaWQgJXgsIGhlYWRlci0+c2l6ZSAleCIsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvcywgaGVhZGVyLCBtc2dpZCwgaGVhZGVyLT5t c2dpZCwgCj4+IGhlYWRlci0+c2l6ZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZGV2X2VycihzdGF0ZS0+ZGV2LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgImNvcmU6IGZzaSAtIHBvcyAleDogaGVhZGVyICVwSywgbXNnaWQgJXgsIAo+PiBo ZWFkZXItPm1zZ2lkICV4LCBoZWFkZXItPnNpemUgJXhcbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwb3MsIGhlYWRlciwgbXNnaWQsIGhlYWRlci0+bXNnaWQs IGhlYWRlci0+c2l6ZSk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgV0FS TigxLCAiaW52YWxpZCBzbG90IHBvc2l0aW9uXG4iKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiBAQCAtMjYyMSw4ICsyNjE4LDggQEAg Y2xvc2Vfc2VydmljZV9jb21wbGV0ZShzdHJ1Y3QgdmNoaXFfc2VydmljZSAKPj4gKnNlcnZpY2Us IGludCBmYWlsc3RhdGUpCj4+IMKgwqDCoMKgwqAgY2FzZSBWQ0hJUV9TUlZTVEFURV9MSVNURU5J Tkc6Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gwqDCoMKgwqDCoCBkZWZhdWx0Ogo+ PiAtwqDCoMKgwqDCoMKgwqAgdmNoaXFfbG9nX2Vycm9yKHNlcnZpY2UtPnN0YXRlLT5kZXYsIFZD SElRX0NPUkUsICIlcygleCkgCj4+IGNhbGxlZCBpbiBzdGF0ZSAlcyIsCj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgX19mdW5jX18sIHNlcnZpY2UtPmhhbmRsZSwgCj4+IHNydnN0 YXRlX25hbWVzW3NlcnZpY2UtPnNydnN0YXRlXSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBkZXZfZXJy KHNlcnZpY2UtPnN0YXRlLT5kZXYsICJjb3JlOiAoJXgpIGNhbGxlZCBpbiBzdGF0ZSAlc1xuIiwK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2VydmljZS0+aGFuZGxlLCBzcnZzdGF0ZV9uYW1l c1tzZXJ2aWNlLT5zcnZzdGF0ZV0pOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgV0FSTigxLCAiJXMg aW4gdW5leHBlY3RlZCBzdGF0ZVxuIiwgX19mdW5jX18pOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0dXJuIC1FSU5WQUw7Cj4+IMKgwqDCoMKgwqAgfQo+PiBAQCAtMjY3Nyw4ICsyNjc0LDggQEAg dmNoaXFfY2xvc2Vfc2VydmljZV9pbnRlcm5hbChzdHJ1Y3QgCj4+IHZjaGlxX3NlcnZpY2UgKnNl cnZpY2UsIGludCBjbG9zZV9yZWN2ZCkKPj4gwqDCoMKgwqDCoCBjYXNlIFZDSElRX1NSVlNUQVRF X0xJU1RFTklORzoKPj4gwqDCoMKgwqDCoCBjYXNlIFZDSElRX1NSVlNUQVRFX0NMT1NFV0FJVDoK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChjbG9zZV9yZWN2ZCkgewo+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB2Y2hpcV9sb2dfZXJyb3Ioc3RhdGUtPmRldiwgVkNISVFfQ09SRSwgIiVzKDEp IGNhbGxlZCBpbiAKPj4gc3RhdGUgJXMiLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgX19mdW5jX18sIHNydnN0YXRlX25hbWVzW3NlcnZpY2UtPnNydnN0YXRlXSk7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9lcnIoc3RhdGUtPmRldiwgImNvcmU6ICgx KSBjYWxsZWQgaW4gc3RhdGUgJXNcbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgc3J2c3RhdGVfbmFtZXNbc2VydmljZS0+c3J2c3RhdGVdKTsKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIH0gZWxzZSBpZiAoaXNfc2VydmVyKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmIChzZXJ2aWNlLT5zcnZzdGF0ZSA9PSBWQ0hJUV9TUlZTVEFURV9MSVNURU5JTkcpIHsKPj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdGF0dXMgPSAtRUlOVkFMOwo+PiBA QCAtMjc2NSw4ICsyNzYyLDggQEAgdmNoaXFfY2xvc2Vfc2VydmljZV9pbnRlcm5hbChzdHJ1Y3Qg Cj4+IHZjaGlxX3NlcnZpY2UgKnNlcnZpY2UsIGludCBjbG9zZV9yZWN2ZCkKPj4gwqDCoMKgwqDC oMKgwqDCoMKgIGJyZWFrOwo+Pgo+PiDCoMKgwqDCoMKgIGRlZmF1bHQ6Cj4+IC3CoMKgwqDCoMKg wqDCoCB2Y2hpcV9sb2dfZXJyb3Ioc3RhdGUtPmRldiwgVkNISVFfQ09SRSwgIiVzKCVkKSBjYWxs ZWQgaW4gCj4+IHN0YXRlICVzIiwgX19mdW5jX18sCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgY2xvc2VfcmVjdmQsIHNydnN0YXRlX25hbWVzW3NlcnZpY2UtPnNydnN0YXRlXSk7 Cj4+ICvCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKHN0YXRlLT5kZXYsICJjb3JlOiAoJWQpIGNhbGxl ZCBpbiBzdGF0ZSAlc1xuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2xvc2VfcmVjdmQs IHNydnN0YXRlX25hbWVzW3NlcnZpY2UtPnNydnN0YXRlXSk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBicmVhazsKPj4gwqDCoMKgwqDCoCB9Cj4+Cj4+IEBAIC0yODA1LDggKzI4MDIsOCBAQCB2Y2hp cV9mcmVlX3NlcnZpY2VfaW50ZXJuYWwoc3RydWN0IAo+PiB2Y2hpcV9zZXJ2aWNlICpzZXJ2aWNl KQo+PiDCoMKgwqDCoMKgIGNhc2UgVkNISVFfU1JWU1RBVEVfQ0xPU0VXQUlUOgo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgYnJlYWs7Cj4+IMKgwqDCoMKgwqAgZGVmYXVsdDoKPj4gLcKgwqDCoMKgwqDC oMKgIHZjaGlxX2xvZ19lcnJvcihzdGF0ZS0+ZGV2LCBWQ0hJUV9DT1JFLCAiJWQ6IGZzaSAtICgl ZCkgaW4gCj4+IHN0YXRlICVzIiwgc3RhdGUtPmlkLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHNlcnZpY2UtPmxvY2FscG9ydCwgc3J2c3RhdGVfbmFtZXNbc2VydmljZS0+c3J2 c3RhdGVdKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGRldl9lcnIoc3RhdGUtPmRldiwgImNvcmU6ICVk OiBmc2kgLSAoJWQpIGluIHN0YXRlICVzXG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz dGF0ZS0+aWQsIHNlcnZpY2UtPmxvY2FscG9ydCwgCj4+IHNydnN0YXRlX25hbWVzW3NlcnZpY2Ut PnNydnN0YXRlXSk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+IMKgwqDCoMKgwqAg fQo+Pgo+PiBkaWZmIC0tZ2l0IAo+PiBhL2RyaXZlcnMvc3RhZ2luZy92YzA0X3NlcnZpY2VzL2lu dGVyZmFjZS92Y2hpcV9hcm0vdmNoaXFfY29yZS5oIAo+PiBiL2RyaXZlcnMvc3RhZ2luZy92YzA0 X3NlcnZpY2VzL2ludGVyZmFjZS92Y2hpcV9hcm0vdmNoaXFfY29yZS5oCj4+IGluZGV4IDU2NGI1 YzcwNzI2Ny4uZDdkY2QxN2U0YmZmIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvdmMw NF9zZXJ2aWNlcy9pbnRlcmZhY2UvdmNoaXFfYXJtL3ZjaGlxX2NvcmUuaAo+PiArKysgYi9kcml2 ZXJzL3N0YWdpbmcvdmMwNF9zZXJ2aWNlcy9pbnRlcmZhY2UvdmNoaXFfYXJtL3ZjaGlxX2NvcmUu aAo+PiBAQCAtNTMsMTAgKzUzLDYgQEAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyICpsb2dfY2F0 ZWdvcnlfc3RyKGVudW0gCj4+IHZjaGlxX2xvZ19jYXRlZ29yeSBjKQo+PiDCoMKgwqDCoMKgIHJl dHVybiBzdHJpbmdzW2NdOwo+PiDCoCB9Owo+Pgo+PiAtI2lmbmRlZiB2Y2hpcV9sb2dfZXJyb3IK Pj4gLSNkZWZpbmUgdmNoaXFfbG9nX2Vycm9yKGRldiwgY2F0LCBmbXQsIC4uLikgXAo+PiAtwqDC oMKgIGRvIHsgZGV2X2RiZyhkZXYsICIlcyBlcnJvcjogIiBmbXQsIGxvZ19jYXRlZ29yeV9zdHIo Y2F0KSwgCj4+ICMjX19WQV9BUkdTX18pOyB9IHdoaWxlICgwKQo+PiAtI2VuZGlmCj4+IMKgICNp Zm5kZWYgdmNoaXFfbG9nX3dhcm5pbmcKPj4gwqAgI2RlZmluZSB2Y2hpcV9sb2dfd2FybmluZyhk ZXYsIGNhdCwgZm10LCAuLi4pIFwKPj4gwqDCoMKgwqDCoCBkbyB7IGRldl9kYmcoZGV2LCAiJXMg d2FybmluZzogIiBmbXQsIGxvZ19jYXRlZ29yeV9zdHIoY2F0KSwgCj4+ICMjX19WQV9BUkdTX18p OyB9IHdoaWxlICgwKQo+PiBkaWZmIC0tZ2l0IAo+PiBhL2RyaXZlcnMvc3RhZ2luZy92YzA0X3Nl cnZpY2VzL2ludGVyZmFjZS92Y2hpcV9hcm0vdmNoaXFfZGV2LmMgCj4+IGIvZHJpdmVycy9zdGFn aW5nL3ZjMDRfc2VydmljZXMvaW50ZXJmYWNlL3ZjaGlxX2FybS92Y2hpcV9kZXYuYwo+PiBpbmRl eCAzMDdhMmQ3NmNiYjcuLmJhMjg3Y2I0Yzg3YiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9zdGFn aW5nL3ZjMDRfc2VydmljZXMvaW50ZXJmYWNlL3ZjaGlxX2FybS92Y2hpcV9kZXYuYwo+PiArKysg Yi9kcml2ZXJzL3N0YWdpbmcvdmMwNF9zZXJ2aWNlcy9pbnRlcmZhY2UvdmNoaXFfYXJtL3ZjaGlx X2Rldi5jCj4+IEBAIC0yNzEsOSArMjcxLDkgQEAgc3RhdGljIGludCB2Y2hpcV9pb2NfZGVxdWV1 ZV9tZXNzYWdlKHN0cnVjdCAKPj4gdmNoaXFfaW5zdGFuY2UgKmluc3RhbmNlLAo+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSAtRUZBVUxUOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg fQo+PiDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCB2Y2hpcV9sb2dfZXJy b3Ioc2VydmljZS0+c3RhdGUtPmRldiwgVkNISVFfQVJNLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICJoZWFkZXIgJXBLOiBidWZzaXplICV4IDwgc2l6ZSAleCIsCj4+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGVhZGVyLCBhcmdzLT5idWZzaXplLCBoZWFkZXIt PnNpemUpOwo+PiArwqDCoMKgwqDCoMKgwqAgZGV2X2VycihzZXJ2aWNlLT5zdGF0ZS0+ZGV2LAo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiYXJtOiBoZWFkZXIgJXBLOiBidWZzaXplICV4IDwg c2l6ZSAleFxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGVhZGVyLCBhcmdzLT5idWZz aXplLCBoZWFkZXItPnNpemUpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgV0FSTigxLCAiaW52YWxp ZCBzaXplXG4iKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FTVNHU0laRTsKPj4gwqDC oMKgwqDCoCB9Cj4+IEBAIC0zMTgsOCArMzE4LDggQEAgc3RhdGljIGludCB2Y2hpcV9pcnFfcXVl dWVfYnVsa190eF9yeChzdHJ1Y3QgCj4+IHZjaGlxX2luc3RhbmNlICppbnN0YW5jZSwKPj4gwqDC oMKgwqDCoMKgwqDCoMKgIH0KPj4gbXV0ZXhfdW5sb2NrKCZpbnN0YW5jZS0+YnVsa193YWl0ZXJf bGlzdF9tdXRleCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIXdhaXRlcikgewo+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB2Y2hpcV9sb2dfZXJyb3Ioc2VydmljZS0+c3RhdGUtPmRldiwg VkNISVFfQVJNLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIm5v IGJ1bGtfd2FpdGVyIGZvdW5kIGZvciBwaWQgJWQiLCBjdXJyZW50LT5waWQpOwo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKHNlcnZpY2UtPnN0YXRlLT5kZXYsCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImFybTogbm8gYnVsa193YWl0ZXIgZm91bmQgZm9yIHBp ZCAlZFxuIiwgCj4+IGN1cnJlbnQtPnBpZCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldCA9IC1FU1JDSDsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IEBAIC01MDEsMTAgKzUwMSwxMCBAQCBzdGF0aWMgaW50 IHZjaGlxX2lvY19hd2FpdF9jb21wbGV0aW9uKHN0cnVjdCAKPj4gdmNoaXFfaW5zdGFuY2UgKmlu c3RhbmNlLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtc2dsZW4gPSBoZWFkZXItPnNp emUgKyBzaXplb2Yoc3RydWN0IHZjaGlxX2hlYWRlcik7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC8qIFRoaXMgbXVzdCBiZSBhIFZDSElRLXN0eWxlIHNlcnZpY2UgKi8KPj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGFyZ3MtPm1zZ2J1ZnNpemUgPCBtc2dsZW4pIHsKPj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2Y2hpcV9sb2dfZXJyb3Ioc2VydmljZS0+ c3RhdGUtPmRldiwgVkNISVFfQVJNLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAiaGVhZGVyICVwSzogbXNnYnVmc2l6ZSAleCA8IG1zZ2xlbiAleCIs Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGhlYWRl ciwgYXJncy0+bXNnYnVmc2l6ZSwgbXNnbGVuKTsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgV0FSTigxLCAiaW52YWxpZCBtZXNzYWdlIHNpemVcbiIp Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9lcnIoc2VydmljZS0+c3Rh dGUtPmRldiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJhcm06 IGhlYWRlciAlcEs6IG1zZ2J1ZnNpemUgJXggPCBtc2dsZW4gJXhcbiIsCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoZWFkZXIsIGFyZ3MtPm1zZ2J1ZnNpemUsIG1z Z2xlbik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgV0FSTigxLCAiaW52YWxp ZCBtZXNzYWdlIHNpemVcbiIpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmIChyZXQgPT0gMCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldCA9IC1FTVNHU0laRTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBicmVhazsKPj4gQEAgLTYxOCw5ICs2MTgsOSBAQCB2Y2hpcV9pb2N0bChzdHJ1Y3QgZmlsZSAq ZmlsZSwgdW5zaWduZWQgaW50IGNtZCwgCj4+IHVuc2lnbmVkIGxvbmcgYXJnKQo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmMgPSBtdXRleF9sb2NrX2tpbGxh YmxlKCZpbnN0YW5jZS0+c3RhdGUtPm11dGV4KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChy Yykgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2Y2hpcV9sb2dfZXJyb3IoaW5zdGFuY2Ut PnN0YXRlLT5kZXYsIFZDSElRX0FSTSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICJ2Y2hpcTogY29ubmVjdDogY291bGQgbm90IGxvY2sgbXV0ZXggZm9yIHN0YXRl IAo+PiAlZDogJWQiLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aW5zdGFuY2UtPnN0YXRlLT5pZCwgcmMpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZf ZXJyKGluc3RhbmNlLT5zdGF0ZS0+ZGV2LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICJhcm06IHZjaGlxOiBjb25uZWN0OiBjb3VsZCBub3QgbG9jayBtdXRleCBmb3Igc3RhdGUg Cj4+ICVkOiAlZFxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnN0YW5j ZS0+c3RhdGUtPmlkLCByYyk7Cj4gSSB0aGluayB0aGlzIHNob3VsZCBiZSBkZXZfZGJnCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FSU5UUjsKPj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgYnJlYWs7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IEBAIC02MzAsOCAr NjMwLDggQEAgdmNoaXFfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQs IAo+PiB1bnNpZ25lZCBsb25nIGFyZykKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghc3RhdHVz KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnN0YW5jZS0+Y29ubmVjdGVkID0gMTsK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2UKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmNo aXFfbG9nX2Vycm9yKGluc3RhbmNlLT5zdGF0ZS0+ZGV2LCBWQ0hJUV9BUk0sCj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAidmNoaXE6IGNvdWxkIG5vdCBjb25uZWN0 OiAlZCIsIHN0YXR1cyk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9lcnIoaW5zdGFu Y2UtPnN0YXRlLT5kZXYsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImFybTog dmNoaXE6IGNvdWxkIG5vdCBjb25uZWN0OiAlZFxuIiwgc3RhdHVzKTsKPj4gwqDCoMKgwqDCoMKg wqDCoMKgIGJyZWFrOwo+Pgo+PiDCoMKgwqDCoMKgIGNhc2UgVkNISVFfSU9DX0NSRUFURV9TRVJW SUNFOiB7Cj4+IEBAIC03MDAsMTMgKzcwMCwxMyBAQCB2Y2hpcV9pb2N0bChzdHJ1Y3QgZmlsZSAq ZmlsZSwgdW5zaWduZWQgaW50IAo+PiBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQo+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZjaGlxX3VzZV9zZXJ2aWNlX2ludGVybmFsKHNl cnZpY2UpIDoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2Y2hpcV9yZWxl YXNlX3NlcnZpY2VfaW50ZXJuYWwoc2VydmljZSk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChyZXQpIHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2Y2hpcV9s b2dfZXJyb3IoaW5zdGFuY2UtPnN0YXRlLT5kZXYsIFZDSElRX1NVU1BFTkQsCj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIlczogY21kICVzIHJldHVy bmVkIGVycm9yICVsZCBmb3Igc2VydmljZSAKPj4gJXA0Y2M6JTAzZCIsCj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZnVuY19fLCAoY21kID09IFZD SElRX0lPQ19VU0VfU0VSVklDRSkgPwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAiVkNISVFfSU9DX1VTRV9TRVJWSUNFIiA6Cj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJWQ0hJUV9JT0NfUkVMRUFTRV9T RVJWSUNFIiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0LCAmc2VydmljZS0+YmFzZS5mb3VyY2MsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNlcnZpY2UtPmNsaWVudF9pZCk7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X2VycihpbnN0YW5jZS0+c3RhdGUtPmRldiwKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJzdXNwZW5kOiBjbWQgJXMg cmV0dXJuZWQgZXJyb3IgJWxkIGZvciBzZXJ2aWNlIAo+PiAlcDRjYzolMDNkXG4iLAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGNtZCA9PSBWQ0hJUV9JT0NfVVNF X1NFUlZJQ0UpID8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJW Q0hJUV9JT0NfVVNFX1NFUlZJQ0UiIDoKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICJWQ0hJUV9JT0NfUkVMRUFTRV9TRVJWSUNFIiwKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCwgJnNlcnZpY2UtPmJhc2UuZm91cmNjLAo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2VydmljZS0+Y2xpZW50X2lk KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg fSBlbHNlIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVJTlZBTDsKPj4g QEAgLTExNzMsOCArMTE3Myw3IEBAIHN0YXRpYyBpbnQgdmNoaXFfb3BlbihzdHJ1Y3QgaW5vZGUg Kmlub2RlLCAKPj4gc3RydWN0IGZpbGUgKmZpbGUpCj4+IMKgwqDCoMKgwqAgdmNoaXFfbG9nX2Rl YnVnKHN0YXRlLT5kZXYsIFZDSElRX0FSTSwgInZjaGlxX29wZW4iKTsKPj4KPj4gwqDCoMKgwqDC oCBpZiAoIXN0YXRlKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCB2Y2hpcV9sb2dfZXJyb3Ioc3RhdGUt PmRldiwgVkNISVFfQVJNLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJ2Y2hp cSBoYXMgbm8gY29ubmVjdGlvbiB0byBWaWRlb0NvcmUiKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGRl dl9lcnIoc3RhdGUtPmRldiwgImFybTogdmNoaXEgaGFzIG5vIGNvbm5lY3Rpb24gdG8gCj4+IFZp ZGVvQ29yZVxuIik7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT1RDT05OOwo+PiDC oMKgwqDCoMKgIH0KPj4KPgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK