Received: by 2002:a05:6358:111d:b0:dc:6189:e246 with SMTP id f29csp4223432rwi; Wed, 2 Nov 2022 08:12:11 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5bIVwgBsTQ9VkwjUWZGsMW9ifkRFqGB9qPzvXFWHXmb11NWR+Z2hK8Y/rKN/YHM1U0OLca X-Received: by 2002:a63:1f53:0:b0:46f:ea8b:d746 with SMTP id q19-20020a631f53000000b0046fea8bd746mr8571366pgm.144.1667401931185; Wed, 02 Nov 2022 08:12:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1667401931; cv=none; d=google.com; s=arc-20160816; b=ecIDMzynzpmVXeKyERmfUFW234INjljFBdetInpx1S/Xbqu8fTg5JipzuqIrLbHnOR iSc5xUjOzVi0DGfaVAKLRPBNDJiSefpsxNTxsg/qMHhAs6/AMD5Jx5cBxQpY6l6UuD04 881G/11SISyHYYBrQmmH6DC1U6AkjLP3W65VNpjmqobNoqT3TkhLeO205kJb/W5q4Kry 2MyzpFVTonbZ0FnEKNj0YRqVj0I6MgWmy8P87h3vp70MJ5asqnE9McvENQJxMSUKysvl d1gXk19N8SvtjHYRBKINCajPXUQoHeOOtPIUvzBqAJS7sR9bxSmXfjc/hHoBmPZZ8te7 DZPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:date:cc:to:from:subject:message-id :dkim-signature; bh=e0gCd6NRXcbsIxgKwRcY3QvIFBh3NvUBW/sgrzV3nbY=; b=HJ8jU7t3AjF7mAE8pX207Hu+nQ5tyz6WMu/F/7eVbxcv3BaCNIJdifLCNyuigrNRT8 JK1Z9+UXCMCBVd7Vl4UfXF9LV54pUCYf6gfaqIPE9xgZbMrQQ2tTn9e/FEuF1T1uLriF +4zp5pRB0UlEhMIZIws9ZADOQZrXiUNogt9vIXsz9Dz3SV/qb5WA75H7E3CqBW/V2RWD RvQ+b7BnKNRdKqA4Jp4YAgXPEnhR7ul5UI0JhK8WdgRHPkbcdkJqZztilVSNJm0Z/+lu uYF8eL0yb5cZgYIml28SDcA4y+7PYPn0B5eM7W9tMpSGsIWE4P66eyfKp2Q+wNND3MDe PhsA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@dylanvanassche.be header.s=MBO0001 header.b=bFWcyFgJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=dylanvanassche.be Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s3-20020a17090aba0300b00213054baa79si2019075pjr.0.2022.11.02.08.11.55; Wed, 02 Nov 2022 08:12:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@dylanvanassche.be header.s=MBO0001 header.b=bFWcyFgJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=dylanvanassche.be Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230379AbiKBO1M (ORCPT + 98 others); Wed, 2 Nov 2022 10:27:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58066 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229823AbiKBO1K (ORCPT ); Wed, 2 Nov 2022 10:27:10 -0400 Received: from mout-p-101.mailbox.org (mout-p-101.mailbox.org [IPv6:2001:67c:2050:0:465::101]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 148AF2A266; Wed, 2 Nov 2022 07:27:04 -0700 (PDT) Received: from smtp102.mailbox.org (smtp102.mailbox.org [IPv6:2001:67c:2050:b231:465::102]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4N2Tjb3dFPz9sSd; Wed, 2 Nov 2022 15:26:59 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dylanvanassche.be; s=MBO0001; t=1667399219; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=e0gCd6NRXcbsIxgKwRcY3QvIFBh3NvUBW/sgrzV3nbY=; b=bFWcyFgJK0qZy2u/FfZnSyPacMukV0Wtll4o+ZiG8Q+wyvEWfI1TLxFwqccT3YIBYole7I CwdSrMLYqGFM+BxR95n/rcXVfAuFVhGoDyiSLkgTxv+Nn8tW7lTrgnJkk/wBFPAonEHYSO tnbegr4WRLNgUTmIgKkXGCh5XoE6F9dObI1XnOdbwbj/eWPD2wtxdh32Z8jczC1jDBWjvw J51dnMdjGIGczlE24BtZMxN66kAtx+/gBaxSK2icB2/a3e99W7i2TCAVY1itlSuhlug3GM R3B9vron5teJ8NKX/unABqMUNNVj42gaRpNV+04fs5SazyqeBFgD9ACE88siHA== Message-ID: Subject: Re: [PATCH v4 1/2] leds: flash: add driver to support flash LED module in QCOM PMICs From: Dylan Van Assche To: Fenglin Wu , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, krzysztof.kozlowski@linaro.org, Pavel Machek , Gene Chen , Jacek Anaszewski , linux-leds@vger.kernel.org Cc: quic_collinsd@quicinc.com, quic_subbaram@quicinc.com, Luca Weiss Date: Wed, 02 Nov 2022 15:26:56 +0100 In-Reply-To: <54442085-5e72-dd12-2eed-3cda261fcbe0@quicinc.com> References: <20221025073802.2662564-1-quic_fenglinw@quicinc.com> <20221025073802.2662564-2-quic_fenglinw@quicinc.com> <0212be2972991ef2803c7f92c01217443def3dfd.camel@dylanvanassche.be> <578b6d6c-7a66-949c-c18f-3a962f9d37ff@quicinc.com> <54442085-5e72-dd12-2eed-3cda261fcbe0@quicinc.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Rspamd-Queue-Id: 4N2Tjb3dFPz9sSd X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgRmVuZ2xpbiwKCgpPbiBXZWQsIDIwMjItMTEtMDIgYXQgMTk6MDYgKzA4MDAsIEZlbmdsaW4g V3Ugd3JvdGU6Cj4gCj4gCj4gT24gMjAyMi8xMS8yIDE2OjE0LCBEeWxhbiBWYW4gQXNzY2hlIHdy b3RlOgo+ID4gCj4gPiBIaSBGZW5nbGluLAo+ID4gCj4gPiA+IEhpIER5bGFuLAo+ID4gPiAKPiA+ ID4gCj4gPiA+IE9uIDIwMjIvMTEvMiAxOjM5LCBEeWxhbiBWYW4gQXNzY2hlIHdyb3RlOgo+ID4g PiA+IAo+ID4gPiA+IEhpIEZlbmdsaW4sCj4gPiA+ID4gCj4gPiA+ID4gPiBPbiAyMDIyLzEwLzMx IDE4OjM0LCBEeWxhbiBWYW4gQXNzY2hlIHdyb3RlOgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4g SGkgRmVuZ2xpbiwKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFRoYW5rcyBmb3Igc3VibWl0dGlu ZyB0aGVzZSBwYXRjaGVzISBUaGV5IGFyZSByZWFsbHkgbmljZSEKPiA+ID4gPiA+ID4gSSB0ZXN0 ZWQgdGhlc2UgcGF0Y2hlcyBvbiBhbiBTRE04NDUgYmFzZWQgZGV2aWNlIGFzIHRoZQo+ID4gPiA+ ID4gPiBkb3duc3RyZWFtCj4gPiA+ID4gPiA+IGRyaXZlciBpcyB0aGUgc2FtZSBmb3IgdGhlIFBN STg5OTggY29tcGFyZWQgdG8gdGhlCj4gPiA+ID4gPiA+IG1lbnRpb25lZAo+ID4gPiA+ID4gPiBQ TUlDcwo+ID4gPiA+ID4gPiBpbgo+ID4gPiA+ID4gPiB0aGlzIHBhdGNoc2VyaWVzLgo+ID4gPiA+ ID4gPiAKPiA+ID4gPiA+ID4gVGVzdGVkLWJ5OiBEeWxhbiBWYW4gQXNzY2hlIDxtZUBkeWxhbnZh bmFzc2NoZS5iZT4gIwo+ID4gPiA+ID4gPiBzZG04NDUtCj4gPiA+ID4gPiA+IHNoaWZ0LQo+ID4g PiA+ID4gPiBheG9sb3RsICsgcG1pODk5OAo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+IFRoYW5rcyBm b3IgdGVzdGluZyB0aGUgcGF0Y2ggYXQgeW91ciBzaWRlLCBEeWxhbiEKPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiA+ID4gQWRkIGluaXRpYWwgZHJpdmVyIHRvIHN1cHBvcnQgZmxhc2ggTEVEIG1vZHVs ZSBmb3VuZCBpbgo+ID4gPiA+ID4gPiA+ID4gUXVhbGNvbW0KPiA+ID4gPiA+ID4gPiA+IFRlY2hu b2xvZ2llcywgSW5jLiBQTUlDcy4gVGhlIGZsYXNoIG1vZHVsZSBjYW4gaGF2ZSAzCj4gPiA+ID4g PiA+ID4gPiBvciA0Cj4gPiA+ID4gPiA+ID4gPiBjaGFubmVscwo+ID4gPiA+ID4gPiA+ID4gYW5k IGVhY2ggY2hhbm5lbCBjYW4gYmUgY29udHJvbGxlZCBpbmRlcGVkZW50bHkgYW5kCj4gPiA+ID4g PiA+ID4gPiBzdXBwb3J0Cj4gPiA+ID4gPiA+ID4gPiBmdWxsID4KPiA+ID4gPiA+ID4gPiA+IHNj YWxlCj4gPiA+ID4gPiA+ID4gPiBjdXJyZW50IHVwIHRvIDEuNSBBLiBJdCBhbHNvIHN1cHBvcnRz IGNvbm5lY3RpbmcgdHdvCj4gPiA+ID4gPiA+ID4gPiBjaGFubmVscyA+Cj4gPiA+ID4gPiA+ID4g PiB0b2dldGhlcgo+ID4gPiA+ID4gPiA+ID4gdG8gc3VwcGx5IG9uZSBMRUQgY29tcG9uZW50IHdp dGggZnVsbCBzY2FsZSBjdXJyZW50IHVwCj4gPiA+ID4gPiA+ID4gPiB0byAyCj4gPiA+ID4gPiA+ ID4gPiBBLgo+ID4gPiA+ID4gPiA+ID4gSW4gPgo+ID4gPiA+ID4gPiA+ID4gdGhhdAo+ID4gPiA+ ID4gPiA+ID4gY2FzZSwgdGhlIGN1cnJlbnQgd2lsbCBiZSBzcGxpdCBvbiBlYWNoIGNoYW5uZWwK PiA+ID4gPiA+ID4gPiA+IHN5bW1ldHJpY2FsbHkKPiA+ID4gPiA+ID4gPiA+IGFuZAo+ID4gPiA+ ID4gPiA+ID4gdGhlCj4gPiA+ID4gPiA+ID4gPiBjaGFubmVscyB3aWxsIGJlIGVuYWJsZWQgYW5k IGRpc2FibGVkIGF0IHRoZSBzYW1lIHRpbWUuCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4g PiA+IFNpZ25lZC1vZmYtYnk6IEZlbmdsaW4gV3UgPHF1aWNfZmVuZ2xpbndAcXVpY2luYy5jb20+ Cj4gPiA+ID4gPiA+ID4gPiBUZXN0ZWQtYnk6IEx1Y2EgV2Vpc3MgPGx1Y2Eud2Vpc3NAZmFpcnBo b25lLmNvbT4gIyA+Cj4gPiA+ID4gPiA+ID4gPiBzbTcyMjUtCj4gPiA+ID4gPiA+ID4gPiBmYWly cGhvbmUtZnA0ICsgcG02MTUwbAo+ID4gPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ID4gPiDC oMKgwqDCoGRyaXZlcnMvbGVkcy9mbGFzaC9LY29uZmlnwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg IDE1ICsKPiA+ID4gPiA+ID4gPiA+IMKgwqDCoMKgZHJpdmVycy9sZWRzL2ZsYXNoL01ha2VmaWxl wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+ID4gPiA+ID4gPiA+ID4gwqDCoMKgwqBkcml2 ZXJzL2xlZHMvZmxhc2gvbGVkcy1xY29tLWZsYXNoLmMgfCA3MDAgPgo+ID4gPiA+ID4gPiA+ID4g KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ID4gPiA+ID4gPiDCoMKgwqDCoDMgZmls ZXMgY2hhbmdlZCwgNzE2IGluc2VydGlvbnMoKykKPiA+ID4gPiA+ID4gPiA+IMKgwqDCoMKgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbGVkcy9mbGFzaC9sZWRzLXFjb20tCj4gPiA+ID4gPiA+ ID4gPiBmbGFzaC5jCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2xlZHMvZmxhc2gvS2NvbmZpZwo+ID4gPiA+ID4gPiA+ID4gYi9kcml2ZXJzL2xl ZHMvZmxhc2gvS2NvbmZpZwo+ID4gPiA+ID4gPiA+ID4gaW5kZXggZDNlYjY4OWIxOTNjLi5mMzZh NjA0MDkyOTAgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2xlZHMvZmxhc2gv S2NvbmZpZwo+ID4gPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9sZWRzL2ZsYXNoL0tjb25maWcK PiA+ID4gPiA+ID4gPiA+IEBAIC02MSw2ICs2MSwyMSBAQCBjb25maWcgTEVEU19NVDYzNjAKPiA+ ID4gPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJbmRlcGVuZGVudCBjdXJyZW50 IHNvdXJjZXMgc3VwcGx5IGZvcgo+ID4gPiA+ID4gPiA+ID4gZWFjaAo+ID4gPiA+ID4gPiA+ID4g Zmxhc2gKPiA+ID4gPiA+ID4gPiA+IExFRCA+Cj4gPiA+ID4gPiA+ID4gPiBzdXBwb3J0IHRvcmNo Cj4gPiA+ID4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYW5kIHN0cm9iZSBtb2Rl Lgo+ID4gPiA+ID4gPiA+ID4gwqDCoMKgIAo+ID4gPiA+ID4gPiA+ID4gK2NvbmZpZyBMRURTX1FD T01fRkxBU0gKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHRyaXN0YXRlICJMRUQgc3Vw cG9ydCBmb3IgZmxhc2ggbW9kdWxlIGluc2lkZQo+ID4gPiA+ID4gPiA+ID4gUXVhbGNvbW0KPiA+ ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBUZWNobm9sb2dpZXMsIEluYy4gUE1JQyIK PiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGRlcGVuZHMgb24gTUZEX1NQTUlfUE1JQyB8 fCBDT01QSUxFX1RFU1QKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGRlcGVuZHMgb24g TEVEU19DTEFTUyAmJiBPRgo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgZGVwZW5kcyBv biBWNEwyX0ZMQVNIX0xFRF9DTEFTUyB8fAo+ID4gPiA+ID4gPiA+ID4gIVY0TDJfRkxBU0hfTEVE X0NMQVNTCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBzZWxlY3QgUkVHTUFQCj4gPiA+ ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBoZWxwCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDC oMKgwqDCoCBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBmbGFzaAo+ID4gPiA+ ID4gPiA+ID4gbW9kdWxlCj4gPiA+ID4gPiA+ID4gPiBmb3VuZCBpbgo+ID4gPiA+ID4gPiA+ID4g PiBRdWFsY29tbQo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAgVGVjaG5vbG9naWVz LCBJbmMuIFBNSUNzLiBUaGUgZmxhc2ggbW9kdWxlCj4gPiA+ID4gPiA+ID4gPiBjYW4KPiA+ID4g PiA+ID4gPiA+IGhhdmUgMwo+ID4gPiA+ID4gPiA+ID4gb3IKPiA+ID4gPiA+ID4gPiA+IDQgPiBm bGFzaCBMRUQKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgIGNoYW5uZWxzIGFuZCBl YWNoIGNoYW5uZWwgaXMgcHJvZ3JhbW1hYmxlIHRvCj4gPiA+ID4gPiA+ID4gPiBzdXBwb3J0Cj4g PiA+ID4gPiA+ID4gPiB1cAo+ID4gPiA+ID4gPiA+ID4gdG8gPiAxLjUgQSBmdWxsCj4gPiA+ID4g PiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCBzY2FsZSBjdXJyZW50LiBJdCBhbHNvIHN1cHBvcnRz IGNvbm5lY3RpbmcKPiA+ID4gPiA+ID4gPiA+IHR3bwo+ID4gPiA+ID4gPiA+ID4gY2hhbm5lbHMn Cj4gPiA+ID4gPiA+ID4gPiA+IG91dHB1dCB0b2dldGhlcgo+ID4gPiA+ID4gPiA+ID4gK8KgwqDC oMKgwqDCoMKgwqAgdG8gc3VwcGx5IG9uZSBMRUQgY29tcG9uZW50IHRvIGFjaGlldmUKPiA+ID4g PiA+ID4gPiA+IGN1cnJlbnQgdXAKPiA+ID4gPiA+ID4gPiA+IHRvCj4gPiA+ID4gPiA+ID4gPiAy IEEuCj4gPiA+ID4gPiA+ID4gPiA+IEluIHN1Y2ggY2FzZSwKPiA+ID4gPiA+ID4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgIHRoZSB0b3RhbCBMRUQgY3VycmVudHdpbGwgYmUgc3BsaXQKPiA+ID4gPiA+ ID4gPiA+IHN5bW1ldHJpY2FsbHkKPiA+ID4gPiA+ID4gPiA+IG9uCj4gPiA+ID4gPiA+ID4gPiBl YWNoCj4gPiA+ID4gPiA+ID4gPiA+IGNoYW5uZWwgYW5kCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKg wqDCoMKgwqDCoCB0aGV5IHdpbGwgYmUgZW5hYmxlZC9kaXNhYmxlZCBhdCB0aGUgc2FtZQo+ID4g PiA+ID4gPiA+ID4gdGltZS4KPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+IMKgwqDC oMKgY29uZmlnIExFRFNfUlQ0NTA1Cj4gPiA+ID4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdHJpc3RhdGUgIkxFRCBzdXBwb3J0IGZvciBSVDQ1MDUgZmxhc2hsaWdodAo+ID4gPiA+ID4g PiA+ID4gY29udHJvbGxlciIKPiA+ID4gPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk ZXBlbmRzIG9uIEkyQyAmJiBPRgo+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bGVkcy9mbGFzaC9NYWtlZmlsZSA+Cj4gPiA+ID4gPiA+ID4gPiBiL2RyaXZlcnMvbGVkcy9mbGFz aC9NYWtlZmlsZQo+ID4gPiA+ID4gPiA+ID4gaW5kZXggMGFjYmRkYzBiOTFiLi44YTYwOTkzZjFh MjUgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2xlZHMvZmxhc2gvTWFrZWZp bGUKPiA+ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvbGVkcy9mbGFzaC9NYWtlZmlsZQo+ID4g PiA+ID4gPiA+ID4gQEAgLTYsNiArNiw3IEBAIG9iai0kKENPTkZJR19MRURTX0FTMzY0NUEpwqDC oMKgwqDCoMKgKz0KPiA+ID4gPiA+ID4gPiA+IGxlZHMtCj4gPiA+ID4gPiA+ID4gPiBhczM2NDVh Lm8KPiA+ID4gPiA+ID4gPiA+IMKgwqDCoMKgb2JqLSQoQ09ORklHX0xFRFNfS1REMjY5MinCoMKg wqDCoMKgKz0gbGVkcy1rdGQyNjkyLm8KPiA+ID4gPiA+ID4gPiA+IMKgwqDCoMKgb2JqLSQoQ09O RklHX0xFRFNfTE0zNjAxWCnCoMKgwqDCoMKgKz0gbGVkcy1sbTM2MDF4Lm8KPiA+ID4gPiA+ID4g PiA+IMKgwqDCoMKgb2JqLSQoQ09ORklHX0xFRFNfTUFYNzc2OTMpwqDCoMKgwqArPSBsZWRzLW1h eDc3NjkzLm8KPiA+ID4gPiA+ID4gPiA+ICtvYmotJChDT05GSUdfTEVEU19RQ09NX0ZMQVNIKcKg wqArPSBsZWRzLXFjb20tZmxhc2gubwo+ID4gPiA+ID4gPiA+ID4gwqDCoMKgwqBvYmotJChDT05G SUdfTEVEU19SVDQ1MDUpwqDCoMKgwqDCoMKgKz0gbGVkcy1ydDQ1MDUubwo+ID4gPiA+ID4gPiA+ ID4gwqDCoMKgwqBvYmotJChDT05GSUdfTEVEU19SVDg1MTUpwqDCoMKgwqDCoMKgKz0gbGVkcy1y dDg1MTUubwo+ID4gPiA+ID4gPiA+ID4gwqDCoMKgwqBvYmotJChDT05GSUdfTEVEU19TR00zMTQw KcKgwqDCoMKgwqArPSBsZWRzLXNnbTMxNDAubwo+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbGVkcy9mbGFzaC9sZWRzLXFjb20tZmxhc2guYyA+Cj4gPiA+ID4gPiA+ID4gPiBi L2RyaXZlcnMvbGVkcy9mbGFzaC9sZWRzLXFjb20tZmxhc2guYwo+ID4gPiA+ID4gPiA+ID4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gPiA+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uYTlm Y2Y2MTYwMGMzCj4gPiA+ID4gPiA+ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ID4gPiA+ID4gPiAr KysgYi9kcml2ZXJzL2xlZHMvZmxhc2gvbGVkcy1xY29tLWZsYXNoLmMKPiA+ID4gPiA+ID4gPiA+ IEBAIC0wLDAgKzEsNzAwIEBACj4gPiA+ID4gPiA+ID4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAtb25seQo+ID4gPiA+ID4gPiA+ID4gKy8qCj4gPiA+ID4gPiA+ID4gPiAr ICogQ29weXJpZ2h0IChjKSAyMDIyIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuCj4g PiA+ID4gPiA+ID4gPiBBbGwKPiA+ID4gPiA+ID4gPiA+IHJpZ2h0cwo+ID4gPiA+ID4gPiA+ID4g PiByZXNlcnZlZC4KPiA+ID4gPiA+ID4gPiA+ICsgKi8KPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvYml0ZmllbGQuaD4KPiA+ID4gPiA+ID4gPiA+ICsj aW5jbHVkZSA8bGludXgvYml0cy5oPgo+ID4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9s ZWRzLmg+Cj4gPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2xlZC1jbGFzcy1mbGFzaC5o Pgo+ID4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiA+ID4gPiA+ID4g PiA+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gPiA+ID4gPiA+ID4gPiAr I2luY2x1ZGUgPGxpbnV4L3Byb3BlcnR5Lmg+Cj4gPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPGxp bnV4L3JlZ21hcC5oPgo+ID4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxtZWRpYS92NGwyLWZsYXNo LWxlZC1jbGFzcy5oPgo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gKy8qIHJlZ2lz dGVycyBkZWZpbml0aW9ucyAqLwo+ID4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgRkxBU0hfVFlQRV9S RUfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgwNAo+ID4gPiA+ID4gPiA+ID4g KyNkZWZpbmUgRkxBU0hfVFlQRV9WQUzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg MHgxOAo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgRkxBU0hfU1VC VFlQRV9SRUfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgwNQo+ID4gPiA+ID4gPiA+ID4g KyNkZWZpbmUgRkxBU0hfU1VCVFlQRV8zQ0hfVkFMwqDCoMKgwqDCoMKgwqDCoMKgwqAweDA0Cj4g PiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBQTUk4OTk4IGhhcyBhbHNvIGEgMyBjaGFubmVsIGZsYXNo IHN1YnR5cGUsIGJ1dCByZXBvcnRzCj4gPiA+ID4gPiA+IDB4MDMgYXMKPiA+ID4gPiA+ID4gc3Vi dHlwZS4gVGhlIGRyaXZlciB3b24ndCBwcm9iZSBiZWNhdXNlIG9mIHRoaXMgc2luY2UgdGhlCj4g PiA+ID4gPiA+IHN1YnR5cGUKPiA+ID4gPiA+ID4gZGlkCj4gPiA+ID4gPiA+IG5vdCBtYXRjaC4g Q2hhbmdpbmcgdGhpcyB2YWx1ZSB0byAweDAzIG1hZGUgdGhpcyBkcml2ZXIKPiA+ID4gPiA+ID4g d29yayBvbgo+ID4gPiA+ID4gPiBTRE04NDUKPiA+ID4gPiA+ID4gYmFzZWQgZGV2aWNlIGFzIHdl bGwgd2l0aCBQTUk4OTk4LiBXb3VsZCB5b3UgY29uc2lkZXIKPiA+ID4gPiA+ID4gc3VwcG9ydGlu Zwo+ID4gPiA+ID4gPiBTRE04NDUrUE1JODk5OCBhcyB3ZWxsPwo+ID4gPiA+ID4gPiAKPiA+ID4g PiA+IEkganVzdCBkb3VibGUgY2hlY2tlZCwgZmxhc2ggbW9kdWxlIGluIFBNSTg5OTggKHdpdGgg c3VidHlwZQo+ID4gPiA+ID4gMHgzKQo+ID4gPiA+ID4gaGFzCj4gPiA+ID4gPiB2ZXJ5IHNpbWls YXIgcmVnaXN0ZXIgZGVmaW5pdGlvbiBhcyB0aGUgZmxhc2ggbW9kdWxlIGluCj4gPiA+ID4gPiBQ TTgxNTBDCj4gPiA+ID4gPiAod2l0aAo+ID4gPiA+ID4gc3VidHlwZSAweDQpIHRoYXQgdGhlIGRy aXZlciBpcyBpbnRlbmRlZCB0byBzdXBwb3J0LCBpdCdzCj4gPiA+ID4gPiBnb29kCj4gPiA+ID4g PiBrbm93Cj4gPiA+ID4gPiB0aGF0Cj4gPiA+ID4gPiBpdCdzIDk5JSB3b3JrLgo+ID4gPiA+ID4g SSBjYW4gYWRkIHRoZSAweDMgc3VidHlwZSBzdXBwb3J0IGJ1dCB0aGUgb25seSBwcm9ibGVtIGlz IEkKPiA+ID4gPiA+IGNvdWxkbid0Cj4gPiA+ID4gPiBmaW5kIGEgZGV2aWNlIHdpdGggUE1JODk5 OCB0byB0ZXN0IGl0IG91dC4gV291bGQgaXQgYmUgZ29vZAo+ID4gPiA+ID4gaWYgSQo+ID4gPiA+ ID4gYWRkCj4gPiA+ID4gPiB0aGUKPiA+ID4gPiA+IHN1cHBvcnQgYW5kIHJlbHkgb24geW91ciB0 ZXN0IHJlc3VsdD8KPiA+ID4gPiAKPiA+ID4gPiBTdXJlISBJIGFscmVhZHkgaGF2ZSBhIGJyYW5j aCBsb2NhbGx5IHRvIHRlc3QgeW91ciBwYXRjaGVzLAo+ID4gPiA+IGhhcHB5Cj4gPiA+ID4gdG8K PiA+ID4gPiBoZWxwISBJIGhhdmUgYW4gU0RNODQ1IGRldmljZSBoZXJlIHdpdGggUE1JODk5OCB3 aXRoIDIgTEVEczoKPiA+ID4gPiBjb2xkCj4gPiA+ID4gYW5kCj4gPiA+ID4gd2FybSB3aGl0ZS4K PiA+ID4gPiAKPiA+ID4gVGhhbmsgeW91IGZvciB0aGUgaGVscCEKPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiA+ID4gKyNkZWZpbmUgRkxBU0hfU1VCVFlQRV80Q0hfVkFMwqDCoMKgwqDCoMKgwqDCoMKg wqAweDA3Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArI2RlZmluZSBGTEFTSF9U SU1FUl9FTl9CSVTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJJVCg3KQo+ID4gPiA+ID4gPiA+ ID4gKyNkZWZpbmUgRkxBU0hfVElNRVJfVkFMX01BU0vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgR0VO TUFTSyg2LCAwKQo+ID4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgRkxBU0hfVElNRVJfU1RFUF9NU8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoDEwCj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4g PiArI2RlZmluZSBGTEFTSF9TVFJPQkVfSFdfU1dfU0VMX0JJVMKgwqDCoMKgwqBCSVQoMikKPiA+ ID4gPiA+ID4gPiA+ICsjZGVmaW5lIFNXX1NUUk9CRV9WQUzCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAwCj4gPiA+ID4gPiA+ID4gPiArI2RlZmluZSBIV19TVFJPQkVfVkFMwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMQo+ID4gPiA+ID4gPiA+ID4gKyNkZWZp bmUgRkxBU0hfSFdfU1RST0JFX1RSSUdHRVJfU0VMX0JJVMKgwqDCoMKgwqDCoMKgwqBCSVQoMSkK PiA+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIFNUUk9CRV9MRVZFTF9UUklHR0VSX1ZBTMKgwqDCoMKg wqDCoMKgMAo+ID4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgU1RST0JFX0VER0VfVFJJR0dFUl9WQUzC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDEKPiA+ID4gPiA+ID4gPiA+ICsjZGVmaW5l IEZMQVNIX1NUUk9CRV9QT0xBUklUWV9CSVTCoMKgwqDCoMKgwqBCSVQoMCkKPiA+ID4gPiA+ID4g PiA+ICsjZGVmaW5lIFNUUk9CRV9BQ1RJVkVfSElHSF9WQUzCoMKgwqDCoMKgwqDCoMKgwqAxCj4g PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArI2RlZmluZSBGTEFTSF9JUkVTX01BU0tf NENIwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDApCj4gPiA+ID4gPiA+ID4gPiArI2RlZmlu ZSBGTEFTSF9JUkVTX01BU0tfM0NIwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgR0VOTUFTSygxLCAw KQo+ID4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgRkxBU0hfSVJFU18xMlA1TUFfVkFMwqDCoMKgwqDC oMKgwqDCoMKgwqAwCj4gPiA+ID4gPiA+ID4gPiArI2RlZmluZSBGTEFTSF9JUkVTXzVNQV9WQUxf NENIwqDCoMKgwqDCoMKgwqDCoMKgMQo+ID4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgRkxBU0hfSVJF U181TUFfVkFMXzNDSMKgwqDCoMKgwqDCoMKgwqDCoDMKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gPiA+ICsvKiBjb25zdGFudHMgKi8KPiA+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIEZMQVNI X0NVUlJFTlRfTUFYX1VBwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDE1MDAwMDAKPiA+ID4gPiA+ID4g PiA+ICsjZGVmaW5lIFRPUkNIX0NVUlJFTlRfTUFYX1VBwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDUw MDAwMAo+ID4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgRkxBU0hfVE9UQUxfQ1VSUkVOVF9NQVhfVUHC oMKgwqDCoMKgMjAwMDAwMAo+ID4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgRkxBU0hfQ1VSUkVOVF9E RUZBVUxUX1VBwqDCoMKgwqDCoMKgwqAxMDAwMDAwCj4gPiA+ID4gPiA+ID4gPiArI2RlZmluZSBU T1JDSF9DVVJSRU5UX0RFRkFVTFRfVUHCoMKgwqDCoMKgwqDCoDIwMDAwMAo+ID4gPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgVE9SQ0hfSVJFU19VQcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoDUwMDAKPiA+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIEZMQVNI X0lSRVNfVUHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAxMjUwMAo+ID4gPiA+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgRkxBU0hfVElNRU9VVF9NQVhfVVPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgMTI4MDAwMAo+ID4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgRkxB U0hfVElNRU9VVF9TVEVQX1VTwqDCoMKgwqDCoMKgwqDCoMKgwqAxMDAwMAo+ID4gPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiA+ID4gK2VudW0gaHdfdHlwZSB7Cj4gPiA+ID4gPiA+ID4gPiArwqDC oMKgwqDCoMKgwqBRQ09NX01WRkxBU0hfM0NILAo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgUUNPTV9NVkZMQVNIXzRDSCwKPiA+ID4gPiA+ID4gPiA+ICt9Owo+ID4gPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiA+ID4gK2VudW0gbGVkX21vZGUgewo+ID4gPiA+ID4gPiA+ID4gK8KgwqDC oMKgwqDCoMKgRkxBU0hfTU9ERSwKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoFRPUkNI X01PREUsCj4gPiA+ID4gPiA+ID4gPiArfTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4g PiA+ICtlbnVtIGxlZF9zdHJvYmUgewo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgU1df U1RST0JFLAo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgSFdfU1RST0JFLAo+ID4gPiA+ ID4gPiA+ID4gK307Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArZW51bSB7Cj4g PiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBSRUdfU1RBVFVTMSwKPiA+ID4gPiA+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoFJFR19TVEFUVVMyLAo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgUkVHX1NUQVRVUzMsCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBSRUdfQ0hBTl9U SU1FUiwKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoFJFR19JVEFSR0VULAo+ID4gPiA+ ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgUkVHX01PRFVMRV9FTiwKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoFJFR19JUkVTT0xVVElPTiwKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKg wqDCoFJFR19DSEFOX1NUUk9CRSwKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoFJFR19D SEFOX0VOLAo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgUkVHX01BWF9DT1VOVCwKPiA+ ID4gPiA+ID4gPiA+ICt9Owo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK3N0cnVj dCByZWdfZmllbGQgbXZmbGFzaF8zY2hfcmVnc1tSRUdfTUFYX0NPVU5UXSA9IHsKPiA+ID4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoFJFR19GSUVMRCgweDA4LCAwLCA3KSzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKgo+ID4gPiA+ID4gPiA+ID4gc3RhdHVzMcKgwqDCoMKg wqDCoCovCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBSRUdfRklFTEQoMHgwOSwgMCwg NykswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+ID4gPiA+ID4gPiA+ID4g c3RhdHVzMsKgwqDCoMKgwqDCoCovCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBSRUdf RklFTEQoMHgwYSwgMCwgNykswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+ ID4gPiA+ID4gPiA+ID4gc3RhdHVzM8KgwqDCoMKgwqDCoCovCj4gPiA+ID4gPiA+ID4gPiArwqDC oMKgwqDCoMKgwqBSRUdfRklFTERfSUQoMHg0MCwgMCwgNywgMywgMSkswqDCoMKgwqDCoMKgwqDC oCAvKgo+ID4gPiA+ID4gPiA+ID4gY2hhbl90aW1lcsKgwqDCoCovCj4gPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqBSRUdfRklFTERfSUQoMHg0MywgMCwgNiwgMywgMSkswqDCoMKgwqDCoMKg wqDCoCAvKgo+ID4gPiA+ID4gPiA+ID4gaXRhcmdldMKgwqDCoMKgwqDCoCovCj4gPiA+ID4gPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqBSRUdfRklFTEQoMHg0NiwgNywgNykswqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+ID4gPiA+ID4gPiA+ID4gbW9kdWxlX2VuwqDCoMKgwqAq Lwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgUkVHX0ZJRUxEKDB4NDcsIDAsIDUpLMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPiA+ID4gPiA+ID4gPiA+IGlyZXNv bHV0aW9uwqDCoCovCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBSRUdfRklFTERfSUQo MHg0OSwgMCwgMiwgMywgMSkswqDCoMKgwqDCoMKgwqDCoCAvKgo+ID4gPiA+ID4gPiA+ID4gY2hh bl9zdHJvYmXCoMKgKi8KPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoFJFR19GSUVMRCgw eDRjLCAwLCAyKSzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4gPiA+ID4g PiA+ID4gPiBjaGFuX2VuwqDCoMKgwqDCoMKgKi8KPiA+ID4gPiA+ID4gPiA+ICt9Owo+ID4gPiA+ ID4gPiAKPiA+ID4gPiA+ID4gVGhlc2UgcmVnaXN0ZXJzIG1hcCBwZXJmZWN0bHkgZm9yIFNETTg0 NSB3aXRoIFBNSTg5OTggYXMKPiA+ID4gPiA+ID4gd2VsbCwKPiA+ID4gPiA+ID4gYWRkaW5nCj4g PiA+ID4gPiA+IHN1cHBvcnQgZm9yIHRoaXMgc3VidHlwZSAoMHgwMykgd291bGQgYmUgZ3JlYXQu Cj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK3N0cnVjdCBy ZWdfZmllbGQgbXZmbGFzaF80Y2hfcmVnc1tSRUdfTUFYX0NPVU5UXSA9IHsKPiA+ID4gPiA+ID4g PiA+ICvCoMKgwqDCoMKgwqDCoFJFR19GSUVMRCgweDA2LCAwLCA3KSzCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAvKgo+ID4gPiA+ID4gPiA+ID4gc3RhdHVzMcKgwqDCoMKgwqDC oCovCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBSRUdfRklFTEQoMHgwNywgMCwgNiks wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoKPiA+ID4gPiA+ID4gPiA+IHN0 YXR1czLCoMKgwqDCoMKgwqAqLwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgUkVHX0ZJ RUxEKDB4MDksIDAsIDcpLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4g PiA+ID4gPiA+ID4gPiBzdGF0dXMzwqDCoMKgwqDCoMKgKi8KPiA+ID4gPiA+ID4gPiA+ICvCoMKg wqDCoMKgwqDCoFJFR19GSUVMRF9JRCgweDNlLCAwLCA3LCA0LCAxKSzCoMKgwqDCoMKgwqDCoMKg wqAvKgo+ID4gPiA+ID4gPiA+ID4gY2hhbl90aW1lcsKgwqDCoCovCj4gPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqBSRUdfRklFTERfSUQoMHg0MiwgMCwgNiwgNCwgMSkswqDCoMKgwqDCoMKg wqDCoMKgLyoKPiA+ID4gPiA+ID4gPiA+IGl0YXJnZXTCoMKgwqDCoMKgwqAqLwo+ID4gPiA+ID4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgUkVHX0ZJRUxEKDB4NDYsIDcsIDcpLMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4gPiA+ID4gPiA+ID4gPiBtb2R1bGVfZW7CoMKgwqDC oCovCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBSRUdfRklFTEQoMHg0OSwgMCwgMyks wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoKPiA+ID4gPiA+ID4gPiA+IGly ZXNvbHV0aW9uwqDCoCovCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBSRUdfRklFTERf SUQoMHg0YSwgMCwgNiwgNCwgMSkswqDCoMKgwqDCoMKgwqDCoMKgLyoKPiA+ID4gPiA+ID4gPiA+ IGNoYW5fc3Ryb2JlwqDCoCovCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBSRUdfRklF TEQoMHg0ZSwgMCwgMykswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoKPiA+ ID4gPiA+ID4gPiA+IGNoYW5fZW7CoMKgwqDCoMKgwqAqLwo+ID4gPiA+ID4gPiA+ID4gK307Cj4g PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArc3RydWN0IHFjb21fZmxhc2hfbGVkIHsK PiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBxY29tX2ZsYXNoX2NoaXDCoMKg wqDCoMKgwqDCoMKgwqDCoCpjaGlwOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3Ry dWN0IGxlZF9jbGFzc2Rldl9mbGFzaMKgwqDCoMKgwqDCoMKgZmxhc2g7Cj4gPiA+ID4gPiA+ID4g PiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9mbGFzaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCp2NGwyX2ZsYXNoOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgdTMywqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1h eF9mbGFzaF9jdXJyZQo+ID4gPiA+ID4gPiA+ID4gbnRfbQo+ID4gPiA+ID4gPiA+ID4gYTsKPiA+ ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHUzMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtYXhfdG9yY2hfY3VycmUKPiA+ID4gPiA+ ID4gPiA+IG50X20KPiA+ID4gPiA+ID4gPiA+IGE7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDC oMKgwqB1MzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgbWF4X3RpbWVvdXRfbXM7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqB1 MzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZmxhc2hfY3VycmVudF9tCj4gPiA+ID4gPiA+ID4gPiBhOwo+ID4gPiA+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgdTMywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGZsYXNoX3RpbWVvdXRfbQo+ID4gPiA+ID4gPiA+ID4gczsKPiA+ID4g PiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHU4wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKmNoYW5faWQ7Cj4gPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqB1OMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNoYW5fY291bnQ7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDC oMKgwqBib29swqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBlbmFibGVkOwo+ID4gPiA+ID4gPiA+ID4gK307Cj4gPiA+ID4gPiA+ID4gPiArCj4g PiA+ID4gPiA+ID4gPiArc3RydWN0IHFjb21fZmxhc2hfY2hpcCB7Cj4gPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcWNvbV9mbGFzaF9sZWTCoMKgwqAqbGVkczsKPiA+ID4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCByZWdtYXBfZmllbGTCoMKgwqDCoAo+ID4gPiA+ ID4gPiA+ID4gKnJfZmllbGRzW1JFR19NQVhfQ09VTlRdOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDC oMKgwqDCoMKgc3RydWN0IGRldmljZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqZGV2Owo+ID4gPiA+ ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IG11dGV4wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgbG9jazsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGVudW0gaHdfdHlwZcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGh3X3R5cGU7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKg wqB1OMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGVkc19jb3Vu dDsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHU4wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtYXhfY2hhbm5lbHM7Cj4gPiA+ID4gPiA+ID4gPiArwqDC oMKgwqDCoMKgwqB1OMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Y2hhbl9lbl9iaXRzOwo+ID4gPiA+ID4gPiA+ID4gK307Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ ID4gPiA+ID4gPiArc3RhdGljIGludCBzZXRfZmxhc2hfbW9kdWxlX2VuKHN0cnVjdCBxY29tX2Zs YXNoX2xlZAo+ID4gPiA+ID4gPiA+ID4gKmxlZCwKPiA+ID4gPiA+ID4gPiA+IGJvb2wKPiA+ID4g PiA+ID4gPiA+IGVuKQo+ID4gPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDC oMKgwqDCoHN0cnVjdCBxY29tX2ZsYXNoX2NoaXAgKmNoaXA9IGxlZC0+Y2hpcDsKPiA+ID4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHU4IGxlZF9tYXNrID0gMCwgdmFsOwo+ID4gPiA+ID4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgaW50IGksIHJjOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IGxlZC0+Y2hhbl9jb3VudDsgaSsr KQo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxlZF9tYXNr IHw9IEJJVChsZWQtPmNoYW5faWRbaV0gLSAxKTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoG11dGV4X2xvY2soJmNoaXAtPmxvY2spOwo+ID4gPiA+ID4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKGVuKQo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNoaXAtPmNoYW5fZW5fYml0cyB8PSBsZWRfbWFzazsKPiA+ID4g PiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGVsc2UKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBjaGlwLT5jaGFuX2VuX2JpdHMgJj0gfmxlZF9tYXNrOwo+ID4g PiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgdmFsID0gISFjaGlw LT5jaGFuX2VuX2JpdHM7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqByYyA9IHJlZ21h cF9maWVsZF93cml0ZShjaGlwLQo+ID4gPiA+ID4gPiA+ID4gPiByX2ZpZWxkc1tSRUdfTU9EVUxF X0VOXSwKPiA+ID4gPiA+ID4gPiA+IHZhbCk7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKg wqBpZiAocmMgPCAwKQo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGRldl9lcnIoY2hpcC0+ZGV2LCAid3JpdGUgbW9kdWxlX2VuCj4gPiA+ID4gPiA+ID4gPiBm YWlsZWQsCj4gPiA+ID4gPiA+ID4gPiByYz0lZFxuIiwgPiByYyk7Cj4gPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2soJmNoaXAtPmxvY2spOwo+ID4gPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIHJjOwo+ID4gPiA+ID4gPiA+ ID4gK30KPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW50IHNldF9m bGFzaF9jdXJyZW50KHN0cnVjdCBxY29tX2ZsYXNoX2xlZAo+ID4gPiA+ID4gPiA+ID4gKmxlZCwK PiA+ID4gPiA+ID4gPiA+IHUzMiA+Cj4gPiA+ID4gPiA+ID4gPiBjdXJyZW50X21hLCBlbnVtIGxl ZF9tb2RlIG1vZGUpCj4gPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgc3RydWN0IHFjb21fZmxhc2hfY2hpcCAqY2hpcD0gbGVkLT5jaGlwOwo+ID4gPiA+ID4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgdTMyIGl0YXJnX3VhID0gY3VycmVudF9tYSAqIDEwMDAgLyBs ZWQtCj4gPiA+ID4gPiA+ID4gPiA+Y2hhbl9jb3VudAo+ID4gPiA+ID4gPiA+ID4gKyAxOwo+ID4g PiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgdTMyIGlyZXNfdWEgPSAobW9kZSA9PUZMQVNIX01P REUpID8KPiA+ID4gPiA+ID4gPiA+IEZMQVNIX0lSRVNfVUEgOgo+ID4gPiA+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gPiA+IFRPUkNIX0lSRVNfVUE7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDC oMKgwqB1OCB2YWwsIHNoaWZ0LCBpcmVzX21hc2sgPTAsIGlyZXNfdmFsID0gMCwKPiA+ID4gPiA+ ID4gPiA+IGNoYW5faWQ7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpbnQgaSwgcmM7 Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAvKgo+ID4g PiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgICogU3BsaXQgdGhlIGN1cnJlbnQgYWNyb3NzIHRo ZSBjaGFubmVscyBhbmQKPiA+ID4gPiA+ID4gPiA+IHNldAo+ID4gPiA+ID4gPiA+ID4gdGhlCj4g PiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgKiBJUkVTT0xVVElPTiBhbmQgSVRBUkdFVCBy ZWdpc3RlcnMKPiA+ID4gPiA+ID4gPiA+IGFjY29yZGluZ2x5Lgo+ID4gPiA+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgICovCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAw OyBpIDwgbGVkLT5jaGFuX2NvdW50OyBpKyspIHsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFuX2lkID0gbGVkLT5jaGFuX2lkW2ldOwo+ID4gPiA+ID4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChpdGFyZ191YSA8IGlyZXNf dWEpCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHZhbCA9IDA7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZWxzZQo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB2YWwgPSBpdGFyZ191YSAvIGlyZXNfdWEgLSAxOwo+ID4gPiA+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJjID0gcmVnbWFwX2ZpZWxkc193cml0ZShjaGlwLQo+ID4gPiA+ID4gPiA+ID4gPiByX2ZpZWxk c1tSRUdfSVRBUkdFVF0sID4gY2hhbl9pZCAtIDEsIHZhbCk7Cj4gPiA+ID4gPiA+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJjIDwgMCkKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJucmM7Cj4g PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKGNoaXAtPmh3X3R5cGUgPT0gUUNPTV9NVkZMQVNIXzNDSCkKPiA+ID4gPiA+ID4g PiA+IHsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgc2hpZnQgPSAoY2hhbl9pZCAtIDEpICogMjsKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaXJlc19tYXNrIHw9 Cj4gPiA+ID4gPiA+ID4gPiBGTEFTSF9JUkVTX01BU0tfM0NIIDw8Cj4gPiA+ID4gPiA+ID4gPiBz aGlmdDsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaXJlc192YWwgfD0gKChtb2RlID09Cj4gPiA+ID4gPiA+ID4gPiBGTEFTSF9N T0RFKSA/Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoRkxBU0hfSVJFU18xMlA1TUFfVkFMCj4gPiA+ ID4gPiA+ID4gPiA8PAo+ID4gPiA+ID4gPiA+ID4gc2hpZnQpIDoKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoChGTEFTSF9JUkVTXzVNQV9WQUxfM0NICj4gPiA+ID4gPiA+ID4gPiA8PAo+ID4gPiA+ID4g PiA+ID4gc2hpZnQpKTsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB9IGVsc2UgaWYgKGNoaXAtPmh3X3R5cGUgPT0KPiA+ID4gPiA+ID4gPiA+IFFDT01fTVZG TEFTSF80Q0gpIHsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc2hpZnQgPSBjaGFuX2lkIC0gMTsKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaXJlc19tYXNrIHw9 Cj4gPiA+ID4gPiA+ID4gPiBGTEFTSF9JUkVTX01BU0tfNENIIDw8Cj4gPiA+ID4gPiA+ID4gPiBz aGlmdDsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaXJlc192YWwgfD0gKChtb2RlID09Cj4gPiA+ID4gPiA+ID4gPiBGTEFTSF9N T0RFKSA/Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoRkxBU0hfSVJFU18xMlA1TUFfVkFMCj4gPiA+ ID4gPiA+ID4gPiA8PAo+ID4gPiA+ID4gPiA+ID4gc2hpZnQpIDoKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoChGTEFTSF9JUkVTXzVNQV9WQUxfNENICj4gPiA+ID4gPiA+ID4gPiA8PAo+ID4gPiA+ID4g PiA+ID4gc2hpZnQpKTsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB9Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gPiByZWdtYXBfZmllbGRfdXBk YXRlX2JpdHMoY2hpcC0KPiA+ID4gPiA+ID4gPiA+ID4gcl9maWVsZHNbUkVHX0lSRVNPTFVUSU9O XSwgaXJlc19tYXNrLCA+IGlyZXNfdmFsKTsKPiA+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArc3RhdGljIGludCBzZXRfZmxhc2hfdGltZW91dChzdHJ1 Y3QgcWNvbV9mbGFzaF9sZWQKPiA+ID4gPiA+ID4gPiA+ICpsZWQsCj4gPiA+ID4gPiA+ID4gPiB1 MzIgPgo+ID4gPiA+ID4gPiA+ID4gdGltZW91dF9tcykKPiA+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcWNvbV9mbGFzaF9jaGlwICpjaGlwPSBs ZWQtPmNoaXA7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqB1OCB2YWwsIGNoYW5faWQ7 Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpbnQgcmMsIGk7Cj4gPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAvKiBzZXQgU0FGRVRZX1RJTUVSIGZv ciBhbGwgdGhlIGNoYW5uZWxzCj4gPiA+ID4gPiA+ID4gPiBjb25uZWN0ZWQKPiA+ID4gPiA+ID4g PiA+IHRvCj4gPiA+ID4gPiA+ID4gPiB0aGUgPgo+ID4gPiA+ID4gPiA+ID4gc2FtZSBMRUQgKi8K PiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHRpbWVvdXRfbXMgPSBtaW5fdCh1MzIsIHRp bWVvdXRfbXMsIGxlZC0KPiA+ID4gPiA+ID4gPiA+ID4gbWF4X3RpbWVvdXRfbXMpOwo+ID4gPiA+ ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IGxlZC0+Y2hhbl9jb3VudDsg aSsrKSB7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hh bl9pZCA9IGxlZC0+Y2hhbl9pZFtpXTsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB2YWwgPSB0aW1lb3V0X21zIC8gRkxBU0hfVElNRVJfU1RFUF9NUzsKPiA+ ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YWwgPSBjbGFtcF90 KHU4LCB2YWwsIDAsCj4gPiA+ID4gPiA+ID4gPiBGTEFTSF9USU1FUl9WQUxfTUFTSyk7Cj4gPiA+ ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRpbWVvdXRfbXMp Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHZhbCB8PSBGTEFTSF9USU1FUl9FTl9CSVQ7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmMgPSA+IHJlZ21hcF9m aWVsZHNfd3JpdGUoY2hpcC0KPiA+ID4gPiA+ID4gPiA+ID4gcl9maWVsZHNbUkVHX0NIQU5fVElN RVJdLCBjaGFuX2lkIC0gMSwgPiB2YWwpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmIChyYyA8IDApCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybnJjOwo+ID4gPiA+ID4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiA+ID4gK3N0YXRpYyBpbnQgc2V0X2ZsYXNoX3N0cm9iZShzdHJ1Y3QgcWNv bV9mbGFzaF9sZWQKPiA+ID4gPiA+ID4gPiA+ICpsZWQsCj4gPiA+ID4gPiA+ID4gPiBlbnVtID4K PiA+ID4gPiA+ID4gPiA+IGxlZF9zdHJvYmUgc3Ryb2JlLCBib29sIHN0YXRlKQo+ID4gPiA+ID4g PiA+ID4gK3sKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBxY29tX2ZsYXNo X2NoaXAgKmNoaXA9IGxlZC0+Y2hpcDsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHU4 IG1hc2ssIHZhbCwgY2hhbl9pZCA9IDAsY2hhbl9tYXNrID0gMDsKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoGludCByYywgaTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoC8qIFNldCBTVyBzdHJvYmUgY29uZmlnIGZvciBhbGwgY2hhbm5lbHMK PiA+ID4gPiA+ID4gPiA+IGNvbm5lY3RlZAo+ID4gPiA+ID4gPiA+ID4gdG8KPiA+ID4gPiA+ID4g PiA+IHRoZQo+ID4gPiA+ID4gPiA+ID4gTEVEID4gKi8KPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDC oMKgwqDCoGZvciAoaSA9IDA7IGkgPCBsZWQtPmNoYW5fY291bnQ7IGkrKykgewo+ID4gPiA+ID4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYW5faWQgPSBsZWQtPmNoYW5f aWRbaV07Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KHN0cm9iZSA9PSBTV19TVFJPQkUpCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZhbCA9Cj4gPiA+ID4gPiA+ID4gPiBGSUVMRF9Q UkVQKEZMQVNIX1NUUk9CRV9IV19TV19TRUxfQklULCA+Cj4gPiA+ID4gPiA+ID4gPiBTV19TVFJP QkVfVkFMKTsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBl bHNlCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHZhbCA9Cj4gPiA+ID4gPiA+ID4gPiBGSUVMRF9QUkVQKEZMQVNIX1NUUk9CRV9I V19TV19TRUxfQklULCA+Cj4gPiA+ID4gPiA+ID4gPiBIV19TVFJPQkVfVkFMKTsKPiA+ID4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2 YWwgfD0KPiA+ID4gPiA+ID4gPiA+IEZJRUxEX1BSRVAoRkxBU0hfSFdfU1RST0JFX1RSSUdHRVJf U0VMX0JJVCwKPiA+ID4gPiA+ID4gPiA+ID4gU1RST0JFX0xFVkVMX1RSSUdHRVJfVkFMKSB8Cj4g PiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoEZJRUxEX1BSRVAoRkxBU0hfU1RST0JFX1BPTEFSSVQKPiA+ID4gPiA+ID4gPiA+IFlfQkkK PiA+ID4gPiA+ID4gPiA+IFQsID4KPiA+ID4gPiA+ID4gPiA+IFNUUk9CRV9BQ1RJVkVfSElHSF9W QUwpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJjID0g PiByZWdtYXBfZmllbGRzX3dyaXRlKGNoaXAtCj4gPiA+ID4gPiA+ID4gPiA+IHJfZmllbGRzW1JF R19DSEFOX1NUUk9CRV0sIGNoYW5faWQgLSAxLCA+IHZhbCk7Cj4gPiA+ID4gPiA+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJjIDwgMCkKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJucmM7Cj4g PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY2hhbl9tYXNrIHw9IEJJVChjaGFuX2lkIC0gMSk7Cj4gPiA+ID4gPiA+ID4gPiArwqDC oMKgwqDCoMKgwqB9Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDC oMKgwqAvKiBlbmFibGUvZGlzYWJsZSBmbGFzaCBjaGFubmVscyAqLwo+ID4gPiA+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgbWFzayA9IGNoYW5fbWFzazsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDC oMKgwqDCoHZhbCA9IHN0YXRlID8gbWFzayA6IDA7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDC oMKgwqByYyA9IHJlZ21hcF9maWVsZF91cGRhdGVfYml0cyhjaGlwLQo+ID4gPiA+ID4gPiA+ID4g PiByX2ZpZWxkc1tSRUdfQ0hBTl9FTl0sCj4gPiA+ID4gPiA+ID4gPiA+IG1hc2ssIHZhbCk7Cj4g PiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAocmMgPCAwKQo+ID4gPiA+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiByYzsKPiA+ID4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGxlZC0+ZW5hYmxlZCA9IHN0YXRlOwo+ ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gPiA+ID4gPiA+ID4gPiAr fQo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK3N0YXRpYyBpbnQgcWNvbV9mbGFz aF9icmlnaHRuZXNzX3NldChzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+IGxlZF9jbGFzc2Rldl9mbGFz aAo+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ICpmbGVkX2NkZXYsIHUzMiBicmln aHRuZXNzKQo+ID4gPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDC oHN0cnVjdCBxY29tX2ZsYXNoX2xlZCAqbGVkID0KPiA+ID4gPiA+ID4gPiA+IGNvbnRhaW5lcl9v ZihmbGVkX2NkZXYsCj4gPiA+ID4gPiA+ID4gPiBzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+ID4gcWNv bV9mbGFzaF9sZWQsIGZsYXNoKTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoGxlZC0+Zmxhc2hfY3VycmVudF9tYSA9IG1pbl90KHUzMiwgbGVkLQo+ID4g PiA+ID4gPiA+ID4gPiBtYXhfZmxhc2hfY3VycmVudF9tYSwgPiBicmlnaHRuZXNzIC8gMTAwMCk7 Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiA+ID4gPiA+ID4gPiA+ ICt9Cj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBUaGlzIGRvZXNuJ3Qgc2VlbSB0byB3b3JrIGlu IHRvcmNoIG1vZGUgZm9yIG1lIG9uIFBNSTg5OTguCj4gPiA+ID4gPiA+IElmCj4gPiA+ID4gPiA+ IHRoZQo+ID4gPiA+ID4gPiBicmlnaHRuZXNzIGlzIDAsIHRoZSB0b3JjaCBpcyBPRkYgYXMgZXhw ZWN0ZWQsIGJ1dCB3aGVuIHRoZQo+ID4gPiA+ID4gPiB0b3JjaAo+ID4gPiA+ID4gPiBpcwo+ID4g PiA+ID4gPiBPTiwgeW91IGNhbm5vdCBjb250cm9sIHRoZSBicmlnaHRuZXNzLiBUaGUgYnJpZ2h0 bmVzcyBpcwo+ID4gPiA+ID4gPiB0aGUKPiA+ID4gPiA+ID4gc2FtZQo+ID4gPiA+ID4gPiBmb3IK PiA+ID4gPiA+ID4gWzEsIDI1NV0uIElmIHRoZSBoYXJkd2FyZSBjYW5ub3QgY2hhbmdlIHRoZSBi cmlnaHRuZXNzIGluCj4gPiA+ID4gPiA+IHRvcmNoCj4gPiA+ID4gPiA+IG1vZGUsCj4gPiA+ID4g PiA+IGl0IHdvdWxkIGJlIG5pY2UgdG8gcmVwb3J0IGEgbWF4X2JyaWdodG5lc3MgdmFsdWUgb2Yg MQo+ID4gPiA+ID4gPiBpbnN0ZWFkCj4gPiA+ID4gPiA+IG9mCj4gPiA+ID4gPiA+IDI1NQo+ID4g PiA+ID4gPiBmb3IgdXNlcnNwYWNlLiBUaGlzIGNvdWxkIGJlIGEgbGltaXRhdGlvbiBvZiB0aGUg UE1JODk5OCwKPiA+ID4gPiA+ID4gbm90Cj4gPiA+ID4gPiA+IHN1cmUuCj4gPiA+ID4gPiA+IERv IHlvdSBoYXZlIGFueSBpbnNpZ2h0cyBoZXJlPyBUaGlzIGRyaXZlciBpcyBhbHJlYWR5IDk5JQo+ ID4gPiA+ID4gPiB3b3JraW5nCj4gPiA+ID4gPiA+IGZvcgo+ID4gPiA+ID4gPiBTRE04NDUrUE1J ODk5OC4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IEZsYXNoIG1vZGUgd29ya3MgZ3JlYXQsIHRp bWVvdXQgJiBicmlnaHRuZXNzIGNhbiBiZQo+ID4gPiA+ID4gPiBjb25maWd1cmVkCj4gPiA+ID4g PiA+IGp1c3QKPiA+ID4gPiA+ID4gZmluZS4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiAKPiA+ID4g PiA+IEhlcmUsIGZ1bmN0aW9uIHFjb21fZmxhc2hfYnJpZ2h0bmVzc19zZXQoKSBpcyB1c2VkIGZv cgo+ID4gPiA+ID4gc2V0dGluZwo+ID4gPiA+ID4gYnJpZ2h0bmVzcyBpbiBmbGFzaCBtb2RlIGFu ZCBpdCB3YXMgc3VwcG9zZWQgdG8gYmUgd29ya2luZwo+ID4gPiA+ID4gd2l0aAo+ID4gPiA+ID4g Zm9sbG93aW5nIGNvbW1hbmRzIGNvbWJpbmF0aW9uOgo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqBlY2hvIHh4eCA+IGZsYXNoX2JyaWdodG5lc3MKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgZWNobyAxID4gZmxhc2hfc3Ryb2JlwqAgKHlvdSB3aWxsIG5lZWQgdG8gdG9nZ2xlCj4g PiA+ID4gPiBmbGFzaF9zdHJvYmUKPiA+ID4gPiA+IHdoZW4geW91Cj4gPiA+ID4gPiBlbmFibGlu ZyBpdCBhZ2FpbikKPiA+ID4gPiA+IAo+ID4gPiA+ID4gQ2FuIHlvdSBjaGVjayBpZiB5b3UgY2Fu IHNlZSB0aGUgYnJpZ2h0bmVzcyBjaGFuZ2UgaW4gZmxhc2gKPiA+ID4gPiA+IG1vZGUKPiA+ID4g PiA+IHdoZW4KPiA+ID4gPiA+IHlvdSB1cGRhdGluZyB0aGUgZmxhc2hfYnJpZ2h0bmVzcyB2YWx1 ZSB3aXRoIHRoZXNlIGNvbW1hbmRzPwo+ID4gPiA+ID4gCj4gPiA+ID4gPiBZb3UgY2FuIGVjaG8g YW55IHZhbHVlIGJldHdlZW4gWzAsIG1heF9mbGFzaF9icmlnaHRuZXNzXSBpbnRvCj4gPiA+ID4g PiB0aGUKPiA+ID4gPiA+IGZsYXNoX2JyaWdodG5lc3MsIHRoZXJlIGlzIGEgIm1heF9mbGFzaF9i cmlnaHRuZXNzIiBzeXNmcwo+ID4gPiA+ID4gbm9kZQo+ID4gPiA+ID4gYW5kCj4gPiA+ID4gPiB0 aGUKPiA+ID4gPiA+IHZhbHVlIGNvbWVzIGZyb20gRFQgcHJvcGVydHkgImZsYXNoLW1heC1taWNy b2FtcCIsIGV4LiBteQo+ID4gPiA+ID4gZHRzaQo+ID4gPiA+ID4gbm9kZQo+ID4gPiA+ID4gaGFz Cj4gPiA+ID4gPiAiZmxhc2gtbWF4LW1pY3JvYW1wID0gPDIwMDAwMDA+OyIgZGVmaW5lZCBzbyBJ IGFtIGhhdmluZwo+ID4gPiA+ID4gZm9sbG93aW5nCj4gPiA+ID4gPiB2YWx1ZQo+ID4gPiA+ID4g Zm9yIG1heF9mbGFzaF9icmlnaHRuZXNzOgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBrYWxhbWE6L3N5 cy9jbGFzcy9sZWRzL3doaXRlOmZsYXNoLTAgIyBjYXQKPiA+ID4gPiA+IG1heF9mbGFzaF9icmln aHRuZXNzCj4gPiA+ID4gPiAyMDAwMDAwCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEFuZCBieSBkZWZh dWx0IGZsYXNoIG1vZGUgdXNlcyAxMjUwMHVBIHJlc29sdXRpb24gc28geW91Cj4gPiA+ID4gPiB3 b24ndAo+ID4gPiA+ID4gc2VlCj4gPiA+ID4gPiBicmlnaHRuZXNzIGNoYW5nZSB3aGVuIHlvdSB1 cGRhdGUgaXQgd2l0aCB2YWx1ZXMgYmV0d2VlbiBbMSwKPiA+ID4gPiA+IDEyNTAwXS4KPiA+ID4g PiAKPiA+ID4gPiBZZXMsIHRoaXMgd29ya3MgcGVyZmVjdGx5IGZpbmUgb24gUE1JODk5OC4gSSBj YW4gYWRqdXN0IHRoZQo+ID4gPiA+IGZsYXNoCj4gPiA+ID4gYnJpZ2h0bmVzcyBhbmQgZmxhc2gg dGltZW91dCBwZXJmZWN0bHkuCj4gPiA+ID4gCj4gPiA+ID4gPiAKPiA+ID4gPiA+IElmIHlvdSB3 YW50IHRvIHVwZGF0ZSB0aGUgYnJpZ2h0bmVzcyBmb3IgdG9yY2ggbm9kZSwgeW91IGNhbgo+ID4g PiA+ID4gZGlyZWN0bHkKPiA+ID4gPiA+IHVwZGF0ZSB0aGUgImJyaWdodG5lc3MiIG5vZGUgd2l0 aCB2YWx1ZXMgYmV0d2VlbiBbMCwgMjU1XSwKPiA+ID4gPiA+IGFuZAo+ID4gPiA+ID4gaXQncwo+ ID4gPiA+ID4gbWFwcGluZyB0byB0aGUgdG9yY2ggY3VycmVudCBiZXR3ZWVuIFswLCBsZWQtbWF4 LW1pY3JvYW1wXS4KPiA+ID4gPiA+ICJsZWQtbWF4LW1pY3JvYW1wIiBpcyBhbHNvIGhhcyB2YWx1 ZSBjb21pbmcgZnJvbSB0aGUgRFQKPiA+ID4gPiA+IHByb3BlcnR5Lgo+ID4gPiA+ID4gCj4gPiA+ ID4gPiBUaGlzIHdvcmtlZCBhdCBteSBzaWRlIG9uIGJvdGggcG04MTUwQyBhbmQgcG04NTUwLkkg dGhpbmsgaXQKPiA+ID4gPiA+IHNob3VsZAo+ID4gPiA+ID4gd29yawo+ID4gPiA+ID4gb24gUE1J ODk5OCBhcyB3ZWxsIGJlY2F1c2UgdGhlIGZsYXNoIG1vZHVsZSBpbiBpdCBpcyB2ZXJ5Cj4gPiA+ ID4gPiBzaW1pbGFyCj4gPiA+ID4gPiB0bwo+ID4gPiA+ID4gdGhlCj4gPiA+ID4gPiBvbmUgaW4g UE04MTUwYy4gTGV0IG1lIGtub3cgaWYgeW91IHN0aWxsIHNlZSBzdWNoIGlzc3VlcyBhdAo+ID4g PiA+ID4geW91cgo+ID4gPiA+ID4gc2lkZS4KPiA+ID4gPiA+IFRoYW5rcwo+ID4gPiA+IAo+ID4g PiA+IE9ubHkgaGVyZSBJIGhhdmUgYW4gaXNzdWUgd2l0aCBQTUk4OTk4OiB0aGUgImJyaWdodG5l c3MiIG5vZGVzCj4gPiA+ID4gc2hvdWxkCj4gPiA+ID4gY2hhbmdlIHRoZSBicmlnaHRuZXNzIG9m IHRoZSB0b3JjaCwgYnV0IGl0IGRvZXNuJ3QgbWFrZSBhCj4gPiA+ID4gZGlmZmVyZW5jZQo+ID4g PiA+IGhlcmUuIFdoZW4gSSBkbzoKPiA+ID4gPiAKPiA+ID4gPiAtIGVjaG8gMCA+IGJyaWdodG5l c3MgLS0+IExFRCB0dXJucyBPRkYKPiA+ID4gPiAtIGVjaG8gMjU1ID4gYnJpZ2h0bmVzcyAtLT4g TEVEIHR1cm5zIE9OCj4gPiA+ID4gLSBlY2hvIDEwMCA+IGJyaWdodG5lc3MgLS0+IExFRCBpcyBz dGlsbCBPTiwgYnV0IGJyaWdodG5lc3MgaXMKPiA+ID4gPiB0aGUKPiA+ID4gPiBzYW1lCj4gPiA+ ID4gYXMgd2l0aCAyNTUuCj4gPiA+ID4gCj4gPiA+ID4gQ291bGQgaXQgYmUgdGhhdCBQTUk4OTk4 IGlzIHNsaWdodGx5IGRpZmZlcmVudCBoZXJlIHRoYW4gd2l0aAo+ID4gPiA+IFBNODE1MGMKPiA+ ID4gPiBmb3IgZXhhbXBsZT8gTWF5YmUgaXQgZG9lc24ndCBzdXBwb3J0IGJyaWdodG5lc3MgZm9y IHRvcmNoPwo+ID4gPiA+IAo+ID4gPiA+IEhlcmUncyBteSBEVFM6Cj4gPiA+ID4gCj4gPiA+ID4g KlBNSTg5OTgqCj4gPiA+ID4gCj4gPiA+ID4gcG1pODk5OF9mbGFzaDogbGVkLWNvbnRyb2xsZXJA ZDMwMCB7Cj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgY29tcGF0aWJsZSA9ICJxY29tLHBtNjE1 MGwtZmxhc2gtbGVkIiwgInFjb20sc3BtaS0KPiA+ID4gPiBmbGFzaC0KPiA+ID4gPiBsZWQiOwo+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoHJlZyA9IDwweGQzMDA+Owo+ID4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoHN0YXR1cyA9ICJkaXNhYmxlZCI7Cj4gPiA+ID4gfTsKPiA+ID4gPiAKPiA+ID4g PiAqU0RNODQ1IFNISUZUIGF4b2xvdGwqCj4gPiA+ID4gCj4gPiA+ID4gJnBtaTg5OThfZmxhc2gg ewo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoHN0YXR1cyA9ICJva2F5IjsKPiA+ID4gPiAKPiA+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqBsZWQtMCB7Cj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX0ZMQVNIOwo+ID4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb2xvciA9IDxMRURfQ09MT1JfSURfV0hJ VEU+Owo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsZWQtc291cmNl cyA9IDwxPjsKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGVkLW1h eC1taWNyb2FtcCA9IDwxODAwMDA+Owo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBmbGFzaC1tYXgtbWljcm9hbXAgPSA8MTAwMDAwMD47Cj4gPiA+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZsYXNoLW1heC10aW1lb3V0LXVzID0gPDEyODAwMDA+ Owo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoH07Cj4gPiA+ID4gCj4gPiA+ID4gwqDCoMKgwqDC oMKgwqDCoMKgbGVkLTEgewo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9GTEFTSDsKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY29sb3IgPSA8TEVEX0NPTE9SX0lEX1lFTExPVz47Cj4gPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxlZC1zb3VyY2VzID0gPDI+Owo+ID4g PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsZWQtbWF4LW1pY3JvYW1wID0g PDE4MDAwMD47Cj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZsYXNo LW1heC1taWNyb2FtcCA9IDwxMDAwMDAwPjsKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZmxhc2gtbWF4LXRpbWVvdXQtdXMgPSA8MTI4MDAwMD47Cj4gPiA+ID4gwqDC oMKgwqDCoMKgwqDCoMKgfTsKPiA+ID4gPiB9Owo+ID4gPiA+IAo+ID4gPiBUaGFuayB5b3UgZm9y IGdldHRpbmcgYmFjayBhbGwgdGhlIGRldGFpbHMuIFRoZSBkZXZpY2V0cmVlIG5vZGUKPiA+ID4g bG9va3MKPiA+ID4gZ29vZCB0byBtZS4KPiA+ID4gCj4gPiA+IEkgY2hlY2tlZCBhZ2FpbiBhbmQg Y29uZmlybWVkIHRoYXQgdGhlIGZsYXNoIG1vZHVsZXMgaW4gUE1JODk5OAo+ID4gPiBhbmQKPiA+ ID4gUE04MTUwQyBoYXZlIHRoZSBzYW1lIHJlZ2lzdGVyIGRlZmluaXRpb24gZm9yIElUQVJHRVR4 ICgweEQzNDMgKwo+ID4gPiB4KQo+ID4gPiBhbmQKPiA+ID4gSVJFU09MVVRJT04gKDB4RDM0Nyks IHRoZXNlIGFyZSB0aGUgb25seSAyIHNldHRpbmdzIHdvdWxkIGltcGFjdAo+ID4gPiBMRUQKPiA+ ID4gYnJpZ2h0bmVzcywgYW5kIGluIHRvcmNoIG1vZGUsIElSRVNPTFVUSU9OIGlzIGZpeGVkIHRv IDVtQSBhbmQKPiA+ID4gb25seQo+ID4gPiBJVEFSR0VUIGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHku Cj4gPiA+IAo+ID4gPiBJIHVwZGF0ZWQgbXkgd29ya3NwYWNlIHRvIHVzZSB0aGUgc2FtZSBjdXJy ZW50IGZvciB0b3JjaCBtb2RlIGFzCj4gPiA+IHlvdXIKPiA+ID4gc2V0dGluZ3MgaW4gZGV2aWNl dHJlZSBhbmQgdHJpZWQgYWdhaW4gb24gbXkgUE04MTUwQyBkZXZpY2UsSQo+ID4gPiBjb3VsZAo+ ID4gPiBub3RpY2UgdGhlIGJyaWdodG5lc3MgY2hhbmdlIHdoZW4gZWNob2luZyBkaWZmZXJlbnQg dmFsdWVzIHRvIHRoZQo+ID4gPiBicmlnaHRuZXNzIHN5c2ZzIG5vZGUsIGhvd2V2ZXIsIHdoZW4g SSB1cGRhdGluZyB2YWx1ZXMgYmV0d2Vlbgo+ID4gPiAyNTUKPiA+ID4gYW5kCj4gPiA+IDIwMCwg aXQgd2Fzbid0IGEgdmVyeSBub3RpY2VhYmxlIGJyaWdodG5lc3MgY2hhbmdlIHdpdGggbmFrZWQK PiA+ID4gZXlzLAo+ID4gPiBidXQgSQo+ID4gPiBjb3VsZCBzZWUgdGhlIElUUkFHRVR4IHJlZ2lz dGVyIGNoYW5nZWQgYWNjb3JkaW5nbHkgd2hlbiByZWFkaW5nCj4gPiA+IGl0cwo+ID4gPiB2YWx1 ZSBiYWNrIGZyb20gdGhlIHJlZ21hcCBkZWJ1Z2ZzIG5vZGUuCj4gPiA+IAo+ID4gPiBDYW4geW91 IHRyeSB0aGUgc2FtZSBhbmQgc2VlIGlmIHRoZSByZWdpc3RlciBnb3QgdXBkYXRlZAo+ID4gPiBh Y2NvcmRpbmdseQo+ID4gPiB3aGVuIHlvdSB1cGRhdGluZyBicmlnaHRuZXNzIHZhbHVlcz8gSWYg eWVzLCBJIHdvdWxkIHdvbmRlciBpZgo+ID4gPiB0aGUKPiA+ID4gTEVECj4gPiA+IGNvbXBvbmVu dCBvbiB5b3VyIGRldmljZSBoYXMgdXBwZXIgY3VycmVudCBsaW1pdCBpbiB0b3JjaCBtb2RlCj4g PiA+IGNsb3NlCj4gPiA+IHRvCj4gPiA+ICgxMDAgLyAyNTUgKSAqIDE4MG1BIHNvIHlvdSB0aGF0 IHlvdSBjYW4ndCBvYnNlcnZlIHRoZSBicmlnaHRuZXNzCj4gPiA+IGNoYW5nZQo+ID4gPiB3aGVu IHVwZGF0aW5nIGJldHdlZW4gMTAwIHRvIDI1NS4gQW5vdGhlciBlYXNpZXIgdGhpbmcgdG8gdHJ5 LAo+ID4gPiBjYW4KPiA+ID4geW91Cj4gPiA+IGVjaG8gYSBsb3dlciBicmlnaHRuZXNzIHZhbHVl LCBzdWNoIGFzIDEwLCB0byBzZWUgaWYgeW91IGNhbgo+ID4gPiBub3RpY2UKPiA+ID4gdGhlCj4g PiA+IGJyaWdodG5lc3MgY2hhbmdlPwo+ID4gPiAKPiA+IAo+ID4gQWhhISBJdCBkb2VzIHNlZW0g dG8gd29yayBwYXJ0aWFsbHkhCj4gPiAKPiA+IEkgdHJpZWQgaXQgd2l0aCBicmlnaHRuZXNzIDAg LS0+IDI1NSAtLT4gMS4gVGhpcyBvcmRlciBrZWVwcyB0aGUKPiA+IGhpZ2hlc3QgYnJpZ2h0bmVz cyBhdCBhbGwgdGltZXMsIG1hdGNoaW5nIDI1NS4gVGhlIG90aGVyIHdheQo+ID4gYXJvdW5kOiAw Cj4gPiAtLT4gMSAtLT4gMjU1IGtlZXBzIHRoZSBsb3dlc3QgYnJpZ2h0bmVzcywgbWF0Y2hpbmcg MS4KPiA+IENoYW5naW5nIHRoZSBicmlnaHRuZXNzIG9ubHkgd29ya3MgaWYgdGhlIExFRCB3YXMg dHVybmVkIE9GRiBmaXJzdDoKPiA+IAo+ID4gMCAtLT4gMjU1IC0tPiAwIC0tPiAxCj4gPiAwIC0t PiAxIC0tPiAwIC0tPiAyNTUKPiA+IAo+ID4gYm90aCB3b3JrIGZpbmUsIHZlcmlmaWVkIGl0IHdp dGggdGhlIGZvbGxvd2luZyBzaGVsbCBjb21tYW5kcwo+ID4gKGFzc3VtZWQKPiA+IHRoYXQgdGhl IExFRCB3YXMgdHVybmVkIE9GRiB0byBzdGFydCk6Cj4gPiAKPiA+IGVjaG8gMSA+IGJyaWdodG5l c3MgJiYgc2xlZXAgMyAmJiBlY2hvIDAgPiBicmlnaHRuZXNzICYmIGVjaG8gMjU1ID4KPiA+IGJy aWdodG5lc3MKPiA+IGVjaG8gMjU1ID4gYnJpZ2h0bmVzcyAmJiBzbGVlcCAzICYmwqAgZWNobyAw ID4gYnJpZ2h0bmVzcyAmJiBlY2hvIDEKPiA+ID4KPiA+IGJyaWdodG5lc3MKPiA+IAo+ID4gTWF5 YmUgYSByZWdpc3RlciBuZWVkcyB0byBiZSByZXNldCB3aGVuIHRoZSBicmlnaHRuZXNzIGNoYW5n ZXM/Cj4gPiAKPiAKPiBIaSBEeWxhbiwKPiAKPiBXb3VsZCB5b3UgbWluZCB0byBoZWxwIG1lIHRl c3RpbmcgdGhpcyBzbWFsbCBjaGFuZ2Ugb24gUE1JODk5OD8gSXQgCj4gc2ltcGx5IHRvZ2dsZXMg dGhlIENIQU5ORUxfRU4gYml0IHdoZW4gdXBkYXRpbmcgTEVEIGJyaWdodG5lc3MuIElmIGl0Cj4g d29ya3MsIEkgd2lsbCBhZGQgaXQgc3BlY2lmaWNhbGx5IGZvciBQTUk4OTk4IGluIHBhdGNoIHY1 Lgo+IAo+IEBAIC0yNDEsOCArMjQzLDIxIEBAIHN0YXRpYyBpbnQgc2V0X2ZsYXNoX3N0cm9iZShz dHJ1Y3QKPiBxY29tX2ZsYXNoX2xlZCAKPiAqbGVkLCBlbnVtIGxlZF9zdHJvYmUgcwo+IHRyb2Jl LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNoYW5fbWFzayB8PSBCSVQoY2hh bl9pZCAtIDEpOwo+IMKgwqDCoMKgwqDCoMKgwqAgfQo+IAo+IC3CoMKgwqDCoMKgwqAgLyogZW5h YmxlL2Rpc2FibGUgZmxhc2ggY2hhbm5lbHMgKi8KPiDCoMKgwqDCoMKgwqDCoMKgIG1hc2sgPSBj aGFuX21hc2s7Cj4gK8KgwqDCoMKgwqDCoCAvKgo+ICvCoMKgwqDCoMKgwqDCoCAqIEZvciBmbGFz aCBtb2R1bGUgaW5zaWRlIFBNSTg5OTgsIGlmIHN0cm9iZSh0cnVlKSBpcyBjYWxsZWQKPiB3aGVu Cj4gK8KgwqDCoMKgwqDCoMKgICogdGhlIExFRCBpcyBhbHJlYWR5IGVuYWJsZWQsIGRpc2FibGUg dGhlIGNoYW5uZWwgMXN0IGFuZAo+IHRoZW4KPiArwqDCoMKgwqDCoMKgwqAgKiBlbmFibGUgaXQg YWdhaW4uwqAgVGhpcyBjb3VsZCBoYXBwZW4gd2hlbiB1cGRhdGluZyBMRUQKPiBicmlnaHRuZXNz Cj4gK8KgwqDCoMKgwqDCoMKgICogYWZ0ZXIgTEVEIGlzIHR1cm5lZCBvbi4KPiArwqDCoMKgwqDC oMKgwqAgKi8KPiArwqDCoMKgwqDCoMKgIGlmIChsZWQtPmVuYWJsZWQgJiYgKGxlZC0+ZW5hYmxl ZCA9PSBzdGF0ZSkpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByYyA9IAo+IHJl Z21hcF9maWVsZF91cGRhdGVfYml0cyhjaGlwLT5yX2ZpZWxkc1tSRUdfQ0hBTl9FTl0sIG1hc2ss IDApOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyYyA8IDApCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByYzsKPiArwqDC oMKgwqDCoMKgIH0KPiArCj4gK8KgwqDCoMKgwqDCoCAvKiBlbmFibGUvZGlzYWJsZSBmbGFzaCBj aGFubmVscyAqLwo+IMKgwqDCoMKgwqDCoMKgwqAgdmFsID0gc3RhdGUgPyBtYXNrIDogMDsKPiDC oMKgwqDCoMKgwqDCoMKgIHJjID0gcmVnbWFwX2ZpZWxkX3VwZGF0ZV9iaXRzKGNoaXAtPnJfZmll bGRzW1JFR19DSEFOX0VOXSwgCj4gbWFzaywgdmFsKTsKPiDCoMKgwqDCoMKgwqDCoMKgIGlmIChy YyA8IDApCj4gCj4gVGhhbmtzCj4gRmVuZ2xpbiBXdQoKV2l0aCB0aGlzIGNoYW5nZSBJIGNhbiBp bmRlZWQgY2hhbmdlIHRoZSBicmlnaHRuZXNzLgpIb3dldmVyLCBpdCB3b3JrcyBub3cgNTAlIG9m IHRoZSB0aW1lOgoKLSBlY2hvIDI1NSA+IGJyaWdodG5lc3MgLS0+IExFRCB0dXJucyBPTiwgbWF4 IGJyaWdodG5lc3M6IDI1NQotIGVjaG8gMSA+IGJyaWdodG5lc3MgLS0+IExFRCB0dXJucyBPRkYK LSBlY2hvIDEgPiBicmlnaHRuZXNzIC0tPiBMRUQgdHVybnMgT04sIG1pbiBicmlnaHRuZXNzOiAx CgpUaGlzIGJlaGF2aW9yIGRpZG4ndCBvY2N1ciBiZWZvcmUgSSBhcHBsaWVkIHRoaXMgY2hhbmdl LgpJIGhhZCBhIGxvb2sgYXQgdGhlIGNoYW5nZSBidXQgSSBjYW5ub3QgcmVhbGx5IHBpbnBvaW50 IHdoeSB0aGlzIGlzCmhhcHBlbmluZy4uLgoKS2luZCByZWdhcmRzLApEeWxhbiBWYW4gQXNzY2hl Cgo+IAo+ID4gPiA+IAo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4g PiArc3RhdGljIGludCBxY29tX2ZsYXNoX3RpbWVvdXRfc2V0KHN0cnVjdAo+ID4gPiA+ID4gPiA+ ID4gbGVkX2NsYXNzZGV2X2ZsYXNoID4KPiA+ID4gPiA+ID4gPiA+ICpmbGVkX2NkZXYsIHUzMiB0 aW1lb3V0KQo+ID4gPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDC oHN0cnVjdCBxY29tX2ZsYXNoX2xlZCAqbGVkID0KPiA+ID4gPiA+ID4gPiA+IGNvbnRhaW5lcl9v ZihmbGVkX2NkZXYsCj4gPiA+ID4gPiA+ID4gPiBzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+ID4gcWNv bV9mbGFzaF9sZWQsIGZsYXNoKTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoGxlZC0+Zmxhc2hfdGltZW91dF9tcyA9IHRpbWVvdXQgLyAxMDAwOwo+ID4g PiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gPiA+ID4gPiA+ID4gPiArfQo+ ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK3N0YXRpYyBpbnQgcWNvbV9mbGFzaF9z dHJvYmVfc2V0KHN0cnVjdAo+ID4gPiA+ID4gPiA+ID4gbGVkX2NsYXNzZGV2X2ZsYXNoCj4gPiA+ ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gKmZsZWRfY2RldiwgYm9vbCBzdGF0ZSkKPiA+ ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcWNv bV9mbGFzaF9sZWQgKmxlZCA9Cj4gPiA+ID4gPiA+ID4gPiBjb250YWluZXJfb2YoZmxlZF9jZGV2 LAo+ID4gPiA+ID4gPiA+ID4gc3RydWN0Cj4gPiA+ID4gPiA+ID4gPiA+IHFjb21fZmxhc2hfbGVk LCBmbGFzaCk7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpbnQgcmM7Cj4gPiA+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqByYyA9IHNldF9mbGFzaF9j dXJyZW50KGxlZCwgbGVkLQo+ID4gPiA+ID4gPiA+ID4gPmZsYXNoX2N1cnJlbnRfbWEsCj4gPiA+ ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gRkxBU0hfTU9ERSk7Cj4gPiA+ID4gPiA+ID4g PiArwqDCoMKgwqDCoMKgwqBpZiAocmMgPCAwKQo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiByYzsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHJjID0gc2V0X2ZsYXNoX3RpbWVvdXQobGVkLCBsZWQtCj4g PiA+ID4gPiA+ID4gPiA+Zmxhc2hfdGltZW91dF9tcyk7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKg wqDCoMKgwqBpZiAocmMgPCAwKQo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybiByYzsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoHJjID0gc2V0X2ZsYXNoX21vZHVsZV9lbihsZWQsIHN0YXRlKTsKPiA+ID4g PiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChyYyA8IDApCj4gPiA+ID4gPiA+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJjOwo+ID4gPiA+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIHNldF9mbGFzaF9zdHJvYmUobGVk LFNXX1NUUk9CRSwgc3RhdGUpOwo+ID4gPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gPiA+ICsK PiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW50IHFjb21fZmxhc2hfc3Ryb2JlX2dldChzdHJ1Y3QK PiA+ID4gPiA+ID4gPiA+IGxlZF9jbGFzc2Rldl9mbGFzaAo+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gPiA+ICpmbGVkX2NkZXYsIGJvb2wgKnN0YXRlKQo+ID4gPiA+ID4gPiA+ID4gK3sK PiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBxY29tX2ZsYXNoX2xlZCAqbGVk ID0KPiA+ID4gPiA+ID4gPiA+IGNvbnRhaW5lcl9vZihmbGVkX2NkZXYsCj4gPiA+ID4gPiA+ID4g PiBzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+ID4gcWNvbV9mbGFzaF9sZWQsIGZsYXNoKTsKPiA+ID4g PiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCpzdGF0ZSA9IGxlZC0+ ZW5hYmxlZDsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ID4gPiA+ ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW50 IHFjb21fZmxhc2hfZmF1bHRfZ2V0KHN0cnVjdAo+ID4gPiA+ID4gPiA+ID4gbGVkX2NsYXNzZGV2 X2ZsYXNoCj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gKmZsZWRfY2RldiwgdTMy ICpmYXVsdCkKPiA+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgcWNvbV9mbGFzaF9sZWQgKmxlZCA9Cj4gPiA+ID4gPiA+ID4gPiBjb250YWluZXJf b2YoZmxlZF9jZGV2LAo+ID4gPiA+ID4gPiA+ID4gc3RydWN0Cj4gPiA+ID4gPiA+ID4gPiA+IHFj b21fZmxhc2hfbGVkLCBmbGFzaCk7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgcWNvbV9mbGFzaF9jaGlwICpjaGlwPSBsZWQtPmNoaXA7Cj4gPiA+ID4gPiA+ID4gPiArwqDC oMKgwqDCoMKgwqB1OCBzaGlmdCwgY2hhbl9pZCA9IDAsIGNoYW5fbWFzayA9IDA7Cj4gPiA+ID4g PiA+ID4gPiArwqDCoMKgwqDCoMKgwqB1OCBvdF9tYXNrID0gMCwgb2NfbWFzayA9IDAsIHV2X21h c2sgPSAwOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgdTMyIHZhbCwgZmF1bHRfc3Rz ID0gMDsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGludCBpLCByYzsKPiA+ID4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHJjID0gcmVnbWFwX2ZpZWxk X3JlYWQoY2hpcC0KPiA+ID4gPiA+ID4gPiA+ID5yX2ZpZWxkc1tSRUdfU1RBVFVTMV0sCj4gPiA+ ID4gPiA+ID4gPiAmdmFsKTsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChyYyA8 IDApCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IHJjOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgZm9y IChpID0gMDsgaSA8IGxlZC0+Y2hhbl9jb3VudDsgaSsrKSB7Cj4gPiA+ID4gPiA+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhbl9pZCA9IGxlZC0+Y2hhbl9pZFtpXTsKPiA+ ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzaGlmdCA9IChjaGFu X2lkIC0gMSkgKiAyOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmICh2YWwgJiBCSVQoc2hpZnQpKQo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmYXVsdF9zdHMgfD0KPiA+ID4gPiA+ID4g PiA+IExFRF9GQVVMVF9TSE9SVF9DSVJDVUlUOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNoYW5fbWFzayB8PSBCSVQoY2hhbl9pZCAtIDEpOwo+ID4gPiA+ ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgcmMgPSByZWdtYXBfZmllbGRfcmVhZChjaGlwLQo+ID4gPiA+ID4g PiA+ID4gPnJfZmllbGRzW1JFR19TVEFUVVMyXSwKPiA+ID4gPiA+ID4gPiA+ICZ2YWwpOwo+ID4g PiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHJjIDwgMCkKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmM7Cj4gPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoY2hpcC0+aHdfdHlwZSA9PSBRQ09N X01WRkxBU0hfM0NIKSB7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgb3RfbWFzayA9IDB4MGY7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgb2NfbWFzayA9IDB4ZTA7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgdXZfbWFzayA9IDB4MTA7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKg wqDCoMKgwqB9IGVsc2UgaWYgKGNoaXAtPmh3X3R5cGUgPT0gUUNPTV9NVkZMQVNIXzRDSCkgewo+ ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG90X21hc2sgPSAw eDcwOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG9jX21h c2sgPSAweDBlOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHV2X21hc2sgPSAweDAxOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHZhbCAmIG90X21h c2spCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZmF1bHRf c3RzIHw9Cj4gPiA+ID4gPiA+ID4gPiBMRURfRkFVTFRfT1ZFUl9URU1QRVJBVFVSRTsKPiA+ID4g PiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmICh2YWwgJiBvY19tYXNrKQo+ID4gPiA+ID4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZhdWx0X3N0cyB8PSBMRURfRkFVTFRf T1ZFUl9DVVJSRU5UOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHZhbCAmIHV2 X21hc2spCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZmF1 bHRfc3RzIHw9IExFRF9GQVVMVF9JTlBVVF9WT0xUQUdFOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4g PiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgcmMgPSByZWdtYXBfZmllbGRfcmVhZChjaGlwLQo+ ID4gPiA+ID4gPiA+ID4gPnJfZmllbGRzW1JFR19TVEFUVVMzXSwKPiA+ID4gPiA+ID4gPiA+ICZ2 YWwpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHJjIDwgMCkKPiA+ID4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmM7Cj4gPiA+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoY2hpcC0+aHdfdHlw ZSA9PSBRQ09NX01WRkxBU0hfM0NIKSB7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKHZhbCAmIGNoYW5fbWFzaykKPiA+ID4gPiA+ID4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZmF1bHRfc3RzIHw9IExF RF9GQVVMVF9USU1FT1VUOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgfSBlbHNlIGlm IChjaGlwLT5od190eXBlID09IFFDT01fTVZGTEFTSF80Q0gpIHsKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgbGVkLT5jaGFuX2Nv dW50OyBpKyspIHsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY2hhbl9pZCA9IGxlZC0+Y2hhbl9pZFtpXTsKPiA+ID4gPiA+ID4g PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2hpZnQg PSAoY2hhbl9pZCAtIDEpICogMjsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHZhbCAmIEJJVChzaGlmdCkpCj4gPiA+ID4g PiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBmYXVsdF9zdHMgfD0KPiA+ID4gPiA+ID4gPiA+IExFRF9GQVVMVF9USU1F T1VUOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoH0KPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCpmYXVsdCA9IGZhdWx0X3N0czsKPiA+ID4gPiA+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ID4gPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW50IHFjb21fZmxhc2hfbGVkX2JyaWdodG5l c3Nfc2V0KHN0cnVjdAo+ID4gPiA+ID4gPiA+ID4gbGVkX2NsYXNzZGV2ID4KPiA+ID4gPiA+ID4g PiA+ICpsZWRfY2RldiwKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbnVt Cj4gPiA+ID4gPiA+ID4gPiBsZWRfYnJpZ2h0bmVzcwo+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4g PiA+ID4gPiA+IGJyaWdodG5lc3MpCj4gPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgc3RydWN0IGxlZF9jbGFzc2Rldl9mbGFzaCAqZmxlZF9jZGV2ID0KPiA+ ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250YWluZXJfb2Yo bGVkX2NkZXYsIHN0cnVjdAo+ID4gPiA+ID4gPiA+ID4gbGVkX2NsYXNzZGV2X2ZsYXNoLCA+Cj4g PiA+ID4gPiA+ID4gPiBsZWRfY2Rldik7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgcWNvbV9mbGFzaF9sZWQgKmxlZCA9Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY29udGFpbmVyX29mKGZsZWRfY2Rldiwgc3RydWN0Cj4gPiA+ID4g PiA+ID4gPiBxY29tX2ZsYXNoX2xlZCwKPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g PiBmbGFzaCk7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqB1MzIgY3VycmVudF9tYSA9 IGJyaWdodG5lc3MgKiBsZWQtCj4gPiA+ID4gPiA+ID4gPiA+IG1heF90b3JjaF9jdXJyZW50X21h Cj4gPiA+ID4gPiA+ID4gPiAvID4KPiA+ID4gPiA+ID4gPiA+IExFRF9GVUxMOwo+ID4gPiA+ID4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgYm9vbCBlbmFibGUgPSAhIWJyaWdodG5lc3M7Cj4gPiA+ID4g PiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpbnQgcmM7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4g PiA+ID4gPiArwqDCoMKgwqDCoMKgwqByYyA9IHNldF9mbGFzaF9jdXJyZW50KGxlZCwgY3VycmVu dF9tYSwKPiA+ID4gPiA+ID4gPiA+IFRPUkNIX01PREUpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDC oMKgwqDCoMKgaWYgKHJjIDwgMCkKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gcmM7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqAvKiBkaXNhYmxlIGZsYXNoIHRpbWVvdXQgZm9ydG9yY2ggTEVEICovCj4g PiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqByYyA9IHNldF9mbGFzaF90aW1lb3V0KGxlZCwg MCk7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAocmMgPCAwKQo+ID4gPiA+ID4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiByYzsKPiA+ID4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHJjID0gc2V0X2ZsYXNoX21v ZHVsZV9lbihsZWQsIGVuYWJsZSk7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAo cmMgPCAwKQo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dHVybiByYzsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDC oHJldHVybiBzZXRfZmxhc2hfc3Ryb2JlKGxlZCxTV19TVFJPQkUsIGVuYWJsZSk7Cj4gPiA+ID4g PiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgbGVkX2ZsYXNoX29wcyBxY29tX2ZsYXNoX29wcyA9IHsKPiA+ID4gPiA+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoC5mbGFzaF9icmlnaHRuZXNzX3NldCA9Cj4gPiA+ID4gPiA+ID4gPiBx Y29tX2ZsYXNoX2JyaWdodG5lc3Nfc2V0LAo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg LnN0cm9iZV9zZXQgPSBxY29tX2ZsYXNoX3N0cm9iZV9zZXQsCj4gPiA+ID4gPiA+ID4gPiArwqDC oMKgwqDCoMKgwqAuc3Ryb2JlX2dldCA9IHFjb21fZmxhc2hfc3Ryb2JlX2dldCwKPiA+ID4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoC50aW1lb3V0X3NldCA9IHFjb21fZmxhc2hfdGltZW91dF9z ZXQsCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAuZmF1bHRfZ2V0ID0gcWNvbV9mbGFz aF9mYXVsdF9nZXQsCj4gPiA+ID4gPiA+ID4gPiArfTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gPiA+ICsjaWYgSVNfRU5BQkxFRChDT05GSUdfVjRMMl9GTEFTSF9MRURfQ0xBU1MpCj4g PiA+ID4gPiA+ID4gPiArc3RhdGljIGludCBxY29tX2ZsYXNoX2V4dGVybmFsX3N0cm9iZV9zZXQo c3RydWN0Cj4gPiA+ID4gPiA+ID4gPiB2NGwyX2ZsYXNoID4KPiA+ID4gPiA+ID4gPiA+ICp2NGwy X2ZsYXNoLCBib29sIGVuYWJsZSkKPiA+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbGVkX2NsYXNzZGV2X2ZsYXNoICpmbGFzaCA9IHY0bDJfZmxh c2gtCj4gPiA+ID4gPiA+ID4gPiA+IGZsZWRfY2RldjsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDC oMKgwqDCoHN0cnVjdCBxY29tX2ZsYXNoX2xlZCAqbGVkID0KPiA+ID4gPiA+ID4gPiA+IGNvbnRh aW5lcl9vZihmbGFzaCwKPiA+ID4gPiA+ID4gPiA+IHN0cnVjdAo+ID4gPiA+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gPiA+IHFjb21fZmxhc2hfbGVkLCBmbGFzaCk7Cj4gPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqBpbnQgcmM7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqByYyA9IHNldF9mbGFzaF9tb2R1bGVfZW4obGVkLCBlbmFibGUpOwo+ID4g PiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHJjIDwgMCkKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmM7Cj4gPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoZW5hYmxlKQo+ID4gPiA+ID4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBzZXRfZmxhc2hfc3Ryb2Jl KGxlZCwgSFdfU1RST0JFLAo+ID4gPiA+ID4gPiA+ID4gdHJ1ZSk7Cj4gPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqBlbHNlCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIHNldF9mbGFzaF9zdHJvYmUobGVkLCBTV19TVFJPQkUsCj4gPiA+ID4g PiA+ID4gPiBmYWxzZSk7Cj4gPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ID4gKwo+ID4g PiA+ID4gPiA+ID4gK3N0YXRpYyBlbnVtIGxlZF9icmlnaHRuZXNzCj4gPiA+ID4gPiA+ID4gPiBx Y29tX2ZsYXNoX2ludGVuc2l0eV90b19sZWRfYnJpZ2h0bmVzcygKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9mbGFzaCAqdjRsMl9mbGFz aCwgczMyCj4gPiA+ID4gPiA+ID4gPiBpbnRlbnNpdHkpCj4gPiA+ID4gPiA+ID4gPiArewo+ID4g PiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGxlZF9jbGFzc2Rldl9mbGFzaCAqZmxh c2ggPSB2NGwyX2ZsYXNoLQo+ID4gPiA+ID4gPiA+ID4gPiBmbGVkX2NkZXY7Cj4gPiA+ID4gPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcWNvbV9mbGFzaF9sZWQgKmxlZCA9Cj4gPiA+ID4g PiA+ID4gPiBjb250YWluZXJfb2YoZmxhc2gsCj4gPiA+ID4gPiA+ID4gPiBzdHJ1Y3QKPiA+ID4g PiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBxY29tX2ZsYXNoX2xlZCwgZmxhc2gpOwo+ID4g PiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgdTMyIGN1cnJlbnRfbWEgPSBpbnRlbnNpdHkvIDEw MDA7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBjdXJy ZW50X21hID0gbWluX3QodTMyLCBjdXJyZW50X21hLCA+IGxlZC0KPiA+ID4gPiA+ID4gPiA+ID4g bWF4X3RvcmNoX2N1cnJlbnRfbWEpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYg KCFjdXJyZW50X21hKQo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldHVybiBMRURfT0ZGOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgcmV0dXJuIGN1cnJlbnRfbWEgKiBMRURfRlVMTC8gbGVkLQo+ID4gPiA+ID4g PiA+ID4gPiBtYXhfdG9yY2hfY3VycmVudF9tYTsKPiA+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArc3RhdGljIHMzMgo+ID4gPiA+ID4gPiA+ID4gcWNv bV9mbGFzaF9icmlnaHRuZXNzX3RvX2xlZF9pbnRlbnNpdHkoc3RydWN0Cj4gPiA+ID4gPiA+ID4g PiB2NGwyX2ZsYXNoID4gKnY0bDJfZmxhc2gsCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZW51bQo+ID4gPiA+ID4gPiA+ID4gbGVkX2JyaWdodG5lc3MKPiA+ID4gPiA+ID4g PiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBicmlnaHRuZXNzKQo+ID4gPiA+ID4gPiA+ID4gK3sKPiA+ ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBsZWRfY2xhc3NkZXZfZmxhc2ggKmZs YXNoID0gdjRsMl9mbGFzaC0KPiA+ID4gPiA+ID4gPiA+ID4gZmxlZF9jZGV2Owo+ID4gPiA+ID4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHFjb21fZmxhc2hfbGVkICpsZWQgPQo+ID4gPiA+ ID4gPiA+ID4gY29udGFpbmVyX29mKGZsYXNoLAo+ID4gPiA+ID4gPiA+ID4gc3RydWN0Cj4gPiA+ ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gcWNvbV9mbGFzaF9sZWQsIGZsYXNoKTsKPiA+ ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAoYnJp Z2h0bmVzcyAqIGxlZC0+bWF4X3RvcmNoX2N1cnJlbnRfbWEKPiA+ID4gPiA+ID4gPiA+ICoKPiA+ ID4gPiA+ID4gPiA+IDEwMDApCj4gPiA+ID4gPiA+ID4gPiAvID4KPiA+ID4gPiA+ID4gPiA+IExF RF9GVUxMOwo+ID4gPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4g PiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfZmxhc2hfb3BzIHFjb21fdjRsMl9mbGFzaF9v cHMKPiA+ID4gPiA+ID4gPiA+ID0gewo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgLmV4 dGVybmFsX3N0cm9iZV9zZXQgPQo+ID4gPiA+ID4gPiA+ID4gcWNvbV9mbGFzaF9leHRlcm5hbF9z dHJvYmVfc2V0LAo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgLmludGVuc2l0eV90b19s ZWRfYnJpZ2h0bmVzcz0gPgo+ID4gPiA+ID4gPiA+ID4gcWNvbV9mbGFzaF9pbnRlbnNpdHlfdG9f bGVkX2JyaWdodG5lc3MsCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAubGVkX2JyaWdo dG5lc3NfdG9faW50ZW5zaXR5PSA+Cj4gPiA+ID4gPiA+ID4gPiBxY29tX2ZsYXNoX2JyaWdodG5l c3NfdG9fbGVkX2ludGVuc2l0eSwKPiA+ID4gPiA+ID4gPiA+ICt9Owo+ID4gPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiA+ID4gK3N0YXRpYyBpbnQgcWNvbV9mbGFzaF92NGwyX2luaXQoc3RydWN0 IHFjb21fZmxhc2hfbGVkCj4gPiA+ID4gPiA+ID4gPiAqbGVkLAo+ID4gPiA+ID4gPiA+ID4gc3Ry dWN0Cj4gPiA+ID4gPiA+ID4gPiA+IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSkKPiA+ID4gPiA+ID4g PiA+ICt7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9mbGFzaF9j b25maWcgdjRsMl9jZmcgPSB7MH07Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgbGVkX2ZsYXNoX3NldHRpbmcgKnMgPQo+ID4gPiA+ID4gPiA+ID4gJnY0bDJfY2ZnLmludGVu c2l0eTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGlm ICghKGxlZC0+Zmxhc2gubGVkX2NkZXYuZmxhZ3MgJgo+ID4gPiA+ID4gPiA+ID4gTEVEX0RFVl9D QVBfRkxBU0gpKQo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgcy0+bWluID0gcy0+c3RlcCA9IFRPUkNIX0lSRVNfVUEgKiBsZWQtCj4gPiA+ID4gPiA+ID4g PiA+Y2hhbl9jb3VudDsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHMtPm1heCA9IGxl ZC0+bWF4X3RvcmNoX2N1cnJlbnRfbWEgKiAxMDAwOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgcy0+dmFsID0gbWluX3QodTMyLCBzLT5tYXgsCj4gPiA+ID4gPiA+ID4gPiBUT1JDSF9D VVJSRU5UX0RFRkFVTFRfVUEpOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgc3Ryc2NweSh2NGwyX2NmZy5kZXZfbmFtZSwgPmxlZC0KPiA+ID4gPiA+ID4g PiA+ID4gZmxhc2gubGVkX2NkZXYuZGV2LQo+ID4gPiA+ID4gPiA+ID4gPiBrb2JqLm5hbWUsCj4g PiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2l6ZW9mKHY0bDJfY2ZnCj4gPiA+ ID4gPiA+ID4gPiAuZGV2Cj4gPiA+ID4gPiA+ID4gPiBfbmFtCj4gPiA+ID4gPiA+ID4gPiBlKSk7 Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqB2NGwyX2NmZy5oYXNfZXh0ZXJuYWxfc3Ry b2JlPSAxOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgdjRsMl9jZmcuZmxhc2hfZmF1 bHRzID0gTEVEX0ZBVUxUX0lOUFVUX1ZPTFRBR0UKPiA+ID4gPiA+ID4gPiA+IHwgPgo+ID4gPiA+ ID4gPiA+ID4gTEVEX0ZBVUxUX09WRVJfQ1VSUkVOVCB8Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgTEVEX0ZBVUxUX1NIT1JUX0NJUkNVSVQgfAo+ID4gPiA+ ID4gPiA+ID4gTEVEX0ZBVUxUX09WRVJfVEVNUEVSQVRVUkUgPiB8IExFRF9GQVVMVF9USU1FT1VU Owo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgbGVkLT52 NGwyX2ZsYXNoID0gdjRsMl9mbGFzaF9pbml0KGxlZC0+Y2hpcC0KPiA+ID4gPiA+ID4gPiA+ID5k ZXYsCj4gPiA+ID4gPiA+ID4gPiBmd25vZGUsID4KPiA+ID4gPiA+ID4gPiA+ICZsZWQtPmZsYXNo LAo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCZxY29tX3Y0bDJfZmxhcwo+ ID4gPiA+ID4gPiA+ID4gaF9vcAo+ID4gPiA+ID4gPiA+ID4gcywgPgo+ID4gPiA+ID4gPiA+ID4g JnY0bDJfY2ZnKTsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBQVFJfRVJS X09SX1pFUk8obGVkLT52NGwyX2ZsYXNoKTsKPiA+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ ID4gPiArIyBlbHNlCj4gPiA+ID4gPiA+ID4gPiArc3RhdGljIGludCBxY29tX2ZsYXNoX3Y0bDJf aW5pdChzdHJ1Y3QgcWNvbV9mbGFzaF9sZWQKPiA+ID4gPiA+ID4gPiA+ICpsZWQsCj4gPiA+ID4g PiA+ID4gPiBzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+ID4gZndub2RlX2hhbmRsZSAqZndub2RlKQo+ ID4gPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAw Owo+ID4gPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gPiA+ICsjZW5kaWYKPiA+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW50IHFjb21fZmxhc2hfcmVnaXN0ZXJfbGVk X2RldmljZShzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+IGRldmljZQo+ID4gPiA+ID4gPiA+ID4gKnBh cmVudCwKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgZndub2RlX2hhbmRsZSAqbm9kZSwgc3RydWN0Cj4gPiA+ID4gPiA+ID4gPiBxY29tX2ZsYXNo X2xlZCA+Cj4gPiA+ID4gPiA+ID4gPiAqbGVkKQo+ID4gPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBxY29tX2ZsYXNoX2NoaXAgKmNoaXA9IGxlZC0+ Y2hpcDsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBsZWRfaW5pdF9kYXRh IGluaXRfZGF0YTsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBsZWRfY2xh c3NkZXZfZmxhc2ggKmZsYXNoOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0 IGxlZF9mbGFzaF9zZXR0aW5nICpzOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgdTMy IGNvdW50LCB2YWw7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqB1MzIgY2hhbm5lbHNb NF07Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpbnQgaSwgcmM7Cj4gPiA+ID4gPiA+ ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBmbGFzaCA9ICZsZWQtPmZsYXNo Owo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgY291bnQgPSBmd25vZGVfcHJvcGVydHlf Y291bnRfdTMyKG5vZGUsICJsZWQtCj4gPiA+ID4gPiA+ID4gPiBzb3VyY2VzIik7Cj4gPiA+ID4g PiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoY291bnQgPD0gMCkgewo+ID4gPiA+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9lcnIoY2hpcC0+ZGV2LCAiTm8gbGVk LXNvdXJjZXMKPiA+ID4gPiA+ID4gPiA+IHNwZWNpZmllZFxuIik7Cj4gPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FTk9ERVY7Cj4gPiA+ID4gPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqBpZiAoY291bnQgPiBjaGlwLT5tYXhfY2hhbm5lbHMpIHsKPiA+ID4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZfZXJyKGNoaXAtPmRldiwg ImxlZC1zb3VyY2VzIGNvdW50Cj4gPiA+ID4gPiA+ID4gPiAldQo+ID4gPiA+ID4gPiA+ID4gZXhj ZWVkcyA+Cj4gPiA+ID4gPiA+ID4gPiBtYXhpbXVtIGNoYW5uZWwgY291bnQgJXVcbiIsCj4gPiA+ ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBjb3VudCwgY2hpcC0KPiA+ID4gPiA+ID4gPiA+ID5tYXhfY2hhbm5l bHMpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVy biAtRUlOVkFMOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgcmMgPSBmd25vZGVfcHJvcGVydHlf cmVhZF91MzJfYXJyYXkobm9kZSwgImxlZC0KPiA+ID4gPiA+ID4gPiA+IHNvdXJjZXMiLCA+Cj4g PiA+ID4gPiA+ID4gPiBjaGFubmVscywgY291bnQpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgaWYgKHJjIDwgMCkgewo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRldl9lcnIoY2hpcC0+ZGV2LCAiZ2V0IGxlZC1zb3VyY2VzCj4gPiA+ID4gPiA+ ID4gPiBmYWlsZWQsCj4gPiA+ID4gPiA+ID4gPiByYz0lZFxuIiwgPiByYyk7Cj4gPiA+ID4gPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJjOwo+ID4gPiA+ID4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgbGVkLT5jaGFuX2NvdW50ID0gY291bnQ7Cj4gPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqBsZWQtPmNoYW5faWQgPSBkZXZtX2tjYWxsb2MoY2hpcC0+ZGV2LCBjb3Vu dCwKPiA+ID4gPiA+ID4gPiA+IHNpemVvZih1OCksID4KPiA+ID4gPiA+ID4gPiA+IEdGUF9LRVJO RUwpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFsZWQtPmNoYW5faWQpCj4g PiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FTk9N RU07Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBmb3Ig KGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmIChjaGFubmVsc1tpXSA+IGNoaXAtPm1heF9jaGFubmVscykgewo+ ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBkZXZfZXJyKGNoaXAtPmRldiwgImxlZC1zb3VyY2UKPiA+ID4gPiA+ID4gPiA+IG91dAo+ ID4gPiA+ID4gPiA+ID4gb2YKPiA+ID4gPiA+ID4gPiA+IEhXID4KPiA+ID4gPiA+ID4gPiA+IHN1 cHBvcnQgcmFuZ2UgWzEtJXVdXG4iLAo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNoaXAtCj4gPiA+ID4gPiA+ID4gPiA+IG1heF9jaGFubmVscyk7Cj4gPiA+ID4gPiA+ID4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybi1F SU5WQUw7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGxlZC0+Y2hhbl9pZFtpXSA9IGNoYW5uZWxzW2ldOwo+ID4gPiA+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgcmMgPSBmd25vZGVfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgImxlZC1tYXgtCj4gPiA+ ID4gPiA+ID4gPiBtaWNyb2FtcCIsCj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4g JnZhbCk7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAocmMgPCAwKSB7Cj4gPiA+ ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X2VycihjaGlwLT5k ZXYsICJHZXQgbGVkLW1heC0KPiA+ID4gPiA+ID4gPiA+IG1pY3JvYW1wCj4gPiA+ID4gPiA+ID4g PiBmYWlsZWQsID4KPiA+ID4gPiA+ID4gPiA+IHJjPSVkXG4iLCByYyk7Cj4gPiA+ID4gPiA+ID4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJjOwo+ID4gPiA+ID4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgaWYgKCF2YWwpIHsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBkZXZfZXJyKGNoaXAtPmRldiwgImxlZC1tYXgtbWljcm9hbXAKPiA+ID4g PiA+ID4gPiA+IHNob3VsZG4ndAo+ID4gPiA+ID4gPiA+ID4gYmUgPgo+ID4gPiA+ID4gPiA+ID4g MFxuIik7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gPiA+ ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqB2YWwgPSBtaW5fdCh1MzIsIHZh bCwgVE9SQ0hfQ1VSUkVOVF9NQVhfVUEgKiA+Cj4gPiA+ID4gPiA+ID4gPiBsZWQtCj4gPiA+ID4g PiA+ID4gPiA+IGNoYW5fY291bnQpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgbGVk LT5tYXhfdG9yY2hfY3VycmVudF9tYSA9IHZhbCAvIDEwMDA7Cj4gPiA+ID4gPiA+ID4gPiArCj4g PiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoZndub2RlX3Byb3BlcnR5X3ByZXNlbnQo bm9kZSwgImZsYXNoLW1heC0KPiA+ID4gPiA+ID4gPiA+IG1pY3JvYW1wIikpIHsKPiA+ID4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmbGFzaC0+bGVkX2NkZXYuZmxh Z3MgfD0KPiA+ID4gPiA+ID4gPiA+IExFRF9ERVZfQ0FQX0ZMQVNIOwo+ID4gPiA+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJjID0gZndub2RlX3Byb3BlcnR5X3JlYWRf dTMyKG5vZGUsID4KPiA+ID4gPiA+ID4gPiA+ICJmbGFzaC0KPiA+ID4gPiA+ID4gPiA+IG1heC0K PiA+ID4gPiA+ID4gPiA+IG1pY3JvYW1wIiwgJnZhbCk7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJjIDwgMCkgewo+ID4gPiA+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZfZXJyKGNoaXAt PmRldiwgIkdldCBmbGFzaC0KPiA+ID4gPiA+ID4gPiA+IG1heC0KPiA+ID4gPiA+ID4gPiA+IG1p Y3JvYW1wCj4gPiA+ID4gPiA+ID4gPiA+IGZhaWxlZCwgcmM9JWRcbiIsIHJjKTsKPiA+ID4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJucmM7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHZhbCA9IG1pbl90KHUzMiwgdmFsLAo+ID4gPiA+ID4gPiA+ID4gRkxBU0hfQ1VSUkVO VF9NQVhfVUEKPiA+ID4gPiA+ID4gPiA+ICogPgo+ID4gPiA+ID4gPiA+ID4gbGVkLQo+ID4gPiA+ ID4gPiA+ID4gPiBjaGFuX2NvdW50KTsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB2YWwgPSBtaW5fdCh1MzIsIHZhbCwKPiA+ID4gPiA+ID4gPiA+IEZMQVNI X1RPVEFMX0NVUlJFTlRfTUFYX1VBKTsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBzID0gJmZsYXNoLT5icmlnaHRuZXNzOwo+ID4gPiA+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHMtPm1pbiA9IHMtPnN0ZXAgPSBGTEFTSF9JUkVT X1VBICogbGVkLQo+ID4gPiA+ID4gPiA+ID4gPiBjaGFuX2NvdW50Owo+ID4gPiA+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHMtPm1heCA9IHZhbDsKPiA+ID4gPiA+ID4g PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzLT52YWwgPSBtaW5fdCh1MzIsIHZh bCwKPiA+ID4gPiA+ID4gPiA+IEZMQVNIX0NVUlJFTlRfREVGQVVMVF9VQSk7Cj4gPiA+ID4gPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGVkLT5tYXhfZmxhc2hfY3VycmVu dF9tYSA9IHZhbCAvIDEwMDA7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgbGVkLT5mbGFzaF9jdXJyZW50X21hID0gcy0+dmFsIC8gMTAwMDsKPiA+ID4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBy YyA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCA+Cj4gPiA+ID4gPiA+ID4gPiAiZmxh c2gtCj4gPiA+ID4gPiA+ID4gPiBtYXgtCj4gPiA+ID4gPiA+ID4gPiB0aW1lb3V0LXVzIiwgJnZh bCk7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJj IDwgMCkgewo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBkZXZfZXJyKGNoaXAtPmRldiwgIkdldCBmbGFzaC0KPiA+ID4gPiA+ID4g PiA+IG1heC0KPiA+ID4gPiA+ID4gPiA+IHRpbWVvdXQtCj4gPiA+ID4gPiA+ID4gPiB1cyA+IGZh aWxlZCwgcmM9JWRcbiIsIHJjKTsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJucmM7Cj4gPiA+ID4gPiA+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZhbCA9IG1pbl90KHUzMiwgdmFs LAo+ID4gPiA+ID4gPiA+ID4gRkxBU0hfVElNRU9VVF9NQVhfVVMpOwo+ID4gPiA+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHMgPSAmZmxhc2gtPnRpbWVvdXQ7Cj4gPiA+ ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcy0+bWluID0gcy0+c3Rl cCA9Cj4gPiA+ID4gPiA+ID4gPiBGTEFTSF9USU1FT1VUX1NURVBfVVM7Cj4gPiA+ID4gPiA+ID4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcy0+dmFsID0gcy0+bWF4ID0gdmFsOwo+ ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxlZC0+bWF4X3Rp bWVvdXRfbXMgPSBsZWQtCj4gPiA+ID4gPiA+ID4gPiA+Zmxhc2hfdGltZW91dF9tcwo+ID4gPiA+ ID4gPiA+ID4gPQo+ID4gPiA+ID4gPiA+ID4gdmFsIC8KPiA+ID4gPiA+ID4gPiA+ID4gMTAwMDsK PiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBmbGFzaC0+b3BzID0gJnFjb21fZmxhc2hfb3BzOwo+ID4gPiA+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgZmxhc2gtPmxlZF9jZGV2LmJyaWdodG5lc3Nfc2V0X2Jsb2NraW5nID0gPgo+ID4gPiA+ ID4gPiA+ID4gcWNvbV9mbGFzaF9sZWRfYnJpZ2h0bmVzc19zZXQ7Cj4gPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqBpbml0X2RhdGEuZndub2RlID0gbm9kZTsKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoGluaXRfZGF0YS5kZXZpY2VuYW1lID0gTlVMTDsKPiA+ID4gPiA+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoGluaXRfZGF0YS5kZWZhdWx0X2xhYmVsID0gTlVMTDsKPiA+ID4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGluaXRfZGF0YS5kZXZuYW1lX21hbmRhdG9yeSA9IGZhbHNl Owo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgcmMgPQo+ID4gPiA+ID4gPiA+ID4gZGV2 bV9sZWRfY2xhc3NkZXZfZmxhc2hfcmVnaXN0ZXJfZXh0KHBhcmVudCwKPiA+ID4gPiA+ID4gPiA+ IGZsYXNoLCA+Cj4gPiA+ID4gPiA+ID4gPiAmaW5pdF9kYXRhKTsKPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoGlmIChyYyA8IDApIHsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkZXZfZXJyKGNoaXAtPmRldiwgIlJlZ2lzdGVyIGZsYXNoIExFRAo+ ID4gPiA+ID4gPiA+ID4gY2xhc3NkZXYKPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g PiBmYWlsZWQsIHJjPSVkXG4iLCByYyk7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJjOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg fQo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJu IHFjb21fZmxhc2hfdjRsMl9pbml0KGxlZCwgbm9kZSk7Cj4gPiA+ID4gPiA+ID4gPiArfQo+ID4g PiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK3N0YXRpYyBpbnQgcWNvbV9mbGFzaF9sZWRf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZQo+ID4gPiA+ID4gPiA+ID4gKnBkZXYpCj4gPiA+ ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHFjb21f Zmxhc2hfY2hpcCAqY2hpcDsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBx Y29tX2ZsYXNoX2xlZCAqbGVkOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0 IGZ3bm9kZV9oYW5kbGUgKmNoaWxkOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3Ry dWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKg wqDCoHN0cnVjdCByZWdtYXAgKm1hcDsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHN0 cnVjdCByZWdfZmllbGQgKnJlZ3M7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpbnQg Y291bnQsIGksIHJjOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgdTMyIHZhbCwgcmVn X2Jhc2U7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBj aGlwID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpjaGlwKSwKPiA+ID4gPiA+ID4gPiA+IEdG UF9LRVJORUwpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFjaGlwKQo+ID4g PiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRU5PTUVN Owo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgbWFwID0g ZGV2X2dldF9yZWdtYXAoZGV2LT5wYXJlbnQsIE5VTEwpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDC oMKgwqDCoMKgaWYgKCFtYXApIHsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQgcGFyZW50Cj4gPiA+ID4gPiA+ ID4gPiByZWdtYXBcbiIpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgcmMgPSBmd25v ZGVfcHJvcGVydHlfcmVhZF91MzIoZGV2LT5md25vZGUsCj4gPiA+ID4gPiA+ID4gPiAicmVnIiwK PiA+ID4gPiA+ID4gPiA+ICZyZWdfYmFzZSk7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKg wqBpZiAocmMgPCAwKSB7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IHJlZ2lzdGVyCj4gPiA+ID4gPiA+ID4g PiBiYXNlCj4gPiA+ID4gPiA+ID4gPiBhZGRyZXNzLAo+ID4gPiA+ID4gPiA+ID4gPiByYz0lZFxu IiwgcmMpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dHVybiByYzsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoH0KPiA+ID4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHJjID0gcmVnbWFwX3JlYWQobWFwLCBy ZWdfYmFzZSArCj4gPiA+ID4gPiA+ID4gPiBGTEFTSF9UWVBFX1JFRywKPiA+ID4gPiA+ID4gPiA+ ICZ2YWwpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHJjIDwgMCkgewo+ID4g PiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9lcnIoZGV2LCAi UmVhZCBmbGFzaCBtb2R1bGUgdHlwZQo+ID4gPiA+ID4gPiA+ID4gZmFpbGVkLCA+Cj4gPiA+ID4g PiA+ID4gPiByYz0lZFxuIiwgcmMpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHJldHVybiByYzsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoH0K PiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmICh2YWwg IT0gRkxBU0hfVFlQRV9WQUwpewo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRldl9lcnIoZGV2LCAidHlwZSAlI3ggaXMgbm90IGEgZmxhc2gKPiA+ID4gPiA+ ID4gPiA+IG1vZHVsZVxuIiwgPgo+ID4gPiA+ID4gPiA+ID4gdmFsKTsKPiA+ID4gPiA+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVOT0RFVjsKPiA+ID4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoH0KPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoHJjID0gcmVnbWFwX3JlYWQobWFwLCByZWdfYmFzZSArCj4gPiA+ID4g PiA+ID4gPiBGTEFTSF9TVUJUWVBFX1JFRywKPiA+ID4gPiA+ID4gPiA+ICZ2YWwpOwo+ID4gPiA+ ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHJjIDwgMCkgewo+ID4gPiA+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9lcnIoZGV2LCAiUmVhZCBmbGFzaCBtb2R1 bGUgc3VidHlwZQo+ID4gPiA+ID4gPiA+ID4gZmFpbGVkLAo+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gPiA+IHJjPSVkXG4iLCByYyk7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJjOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgfQo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYg KHZhbCA9PSBGTEFTSF9TVUJUWVBFXzNDSF9WQUwpIHsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGlwLT5od190eXBlID0gUUNPTV9NVkZMQVNIXzNDSDsK PiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGlwLT5tYXhf Y2hhbm5lbHMgPSAzOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJlZ3MgPSBtdmZsYXNoXzNjaF9yZWdzOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgfSBlbHNlIGlmICh2YWwgPT0gRkxBU0hfU1VCVFlQRV80Q0hfVkFMKSB7Cj4gPiA+ID4gPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hpcC0+aHdfdHlwZSA9IFFDT01f TVZGTEFTSF80Q0g7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY2hpcC0+bWF4X2NoYW5uZWxzID0gNDsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZWdzID0gbXZmbGFzaF80Y2hfcmVnczsKPiA+ID4gPiA+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoH0gZWxzZSB7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGV2X2VycihkZXYsICJmbGFzaCBzdWJ0eXBlICUjeCBpcyBub3QKPiA+ ID4gPiA+ID4gPiA+IHlldAo+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IHN1cHBv cnRlZFxuIiwgdmFsKTsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gLUVOT0RFVjsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoH0KPiA+ ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7 IGkgPCBSRUdfTUFYX0NPVU5UOyBpKyspCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcmVnc1tpXS5yZWcgKz0gcmVnX2Jhc2U7Cj4gPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqByYyA9IGRldm1fcmVnbWFwX2ZpZWxkX2J1 bGtfYWxsb2MoZGV2LCBtYXAsCj4gPiA+ID4gPiA+ID4gPiBjaGlwLQo+ID4gPiA+ID4gPiA+ID4g PiByX2ZpZWxkcywKPiA+ID4gPiA+ID4gPiA+ID4gcmVncywgUkVHX01BWF9DT1VOVCk7Cj4gPiA+ ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAocmMgPCAwKSB7Cj4gPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gYWxs b2MgcmVnbWFwCj4gPiA+ID4gPiA+ID4gPiBmaWxlZCwKPiA+ID4gPiA+ID4gPiA+IHJjPSVkXG4i LCA+IHJjKTsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gcmM7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBjaGlwLT5kZXYgPSBkZXY7Cj4gPiA+ ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBjaGlw KTsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoG11dGV4X2luaXQoJmNoaXAtPmxvY2sp Owo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgY291bnQgPSBkZXZpY2VfZ2V0X2NoaWxk X25vZGVfY291bnQoZGV2KTsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChjb3Vu dCA9PSAwIHx8IGNvdW50ID4gY2hpcC0+bWF4X2NoYW5uZWxzKSB7Cj4gPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X2VycihkZXYsICJObyBjaGlsZCBvciBj aGlsZCBjb3VudAo+ID4gPiA+ID4gPiA+ID4gZXhjZWVkcwo+ID4gPiA+ID4gPiA+ID4gJWRcbiIs ID4gY2hpcC0+bWF4X2NoYW5uZWxzKTsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKg wqDCoH0KPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGNo aXAtPmxlZHMgPSBkZXZtX2tjYWxsb2MoZGV2LCBjb3VudCwKPiA+ID4gPiA+ID4gPiA+IHNpemVv ZigqY2hpcC0KPiA+ID4gPiA+ID4gPiA+ID4gbGVkcyksCj4gPiA+ID4gPiA+ID4gPiA+IEdGUF9L RVJORUwpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFjaGlwLT5sZWRzKQo+ ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRU5P TUVNOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgZGV2 aWNlX2Zvcl9lYWNoX2NoaWxkX25vZGUoZGV2LCBjaGlsZCkgewo+ID4gPiA+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxlZCA9ICZjaGlwLT5sZWRzW2NoaXAtPmxlZHNf Y291bnRdOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxl ZC0+Y2hpcCA9IGNoaXA7Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcmMgPQo+ID4gPiA+ID4gPiA+ID4gcWNvbV9mbGFzaF9yZWdpc3Rlcl9sZWRfZGV2aWNl KGRldiwKPiA+ID4gPiA+ID4gPiA+IGNoaWxkLAo+ID4gPiA+ID4gPiA+ID4gbGVkKTsKPiA+ID4g PiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocmMgPCAwKQo+ID4g PiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBnb3RvIHJlbGVhc2U7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hpcC0+bGVkc19jb3VudCsrOwo+ID4gPiA+ID4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gPiA+ID4gPiA+ID4gPiArcmVsZWFzZToKPiA+ID4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHdoaWxlIChjaGlwLT5sZWRzICYmIGNoaXAtPmxlZHNfY291 bnQtLSkKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2NGwy X2ZsYXNoX3JlbGVhc2UoY2hpcC0+bGVkc1tjaGlwLQo+ID4gPiA+ID4gPiA+ID4gPiBsZWRzX2Nv dW50XS52NGwyXz4gZmxhc2gpOwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJu IHJjOwo+ID4gPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ ICtzdGF0aWMgaW50IHFjb21fZmxhc2hfbGVkX3JlbW92ZShzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+ IHBsYXRmb3JtX2RldmljZQo+ID4gPiA+ID4gPiA+ID4gKnBkZXYpCj4gPiA+ID4gPiA+ID4gPiAr ewo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHFjb21fZmxhc2hfY2hpcCAq Y2hpcD0KPiA+ID4gPiA+ID4gPiA+IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+ID4gPiA+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgd2hpbGUgKGNoaXAtPmxl ZHNfY291bnQtLSkKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB2NGwyX2ZsYXNoX3JlbGVhc2UoY2hpcC0+bGVkc1tjaGlwLQo+ID4gPiA+ID4gPiA+ID4gPiBs ZWRzX2NvdW50XS52NGwyXz4gZmxhc2gpOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgbXV0ZXhfZGVzdHJveSgmY2hpcC0+bG9jayk7Cj4gPiA+ID4gPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiA+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2Vf aWQKPiA+ID4gPiA+ID4gPiA+IHFjb21fZmxhc2hfbGVkX21hdGNoX3RhYmxlW10KPiA+ID4gPiA+ ID4gPiA+ID0gewo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgeyAuY29tcGF0aWJsZSA9 ICJxY29tLHNwbWktZmxhc2gtbGVkIiB9LAo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg eyB9Cj4gPiA+ID4gPiA+ID4gPiArfTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBxY29tX2ZsYXNoX2xlZF9kcml2ZXIgPQo+ ID4gPiA+ID4gPiA+ID4gewo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgLmRyaXZlciA9 IHsKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAubmFtZSA9 ICJsZWRzLXFjb20tZmxhc2giLAo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoC5vZl9tYXRjaF90YWJsZSA9Cj4gPiA+ID4gPiA+ID4gPiBxY29tX2ZsYXNoX2xl ZF9tYXRjaF90YWJsZSwKPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoH0sCj4gPiA+ID4g PiA+ID4gPiArwqDCoMKgwqDCoMKgwqAucHJvYmUgPSBxY29tX2ZsYXNoX2xlZF9wcm9iZSwKPiA+ ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoC5yZW1vdmUgPSBxY29tX2ZsYXNoX2xlZF9yZW1v dmUsCj4gPiA+ID4gPiA+ID4gPiArfTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHFjb21fZmxhc2hfbGVkX2RyaXZlcik7Cj4gPiA+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJRQ09NIEZsYXNo IExFRCBkcml2ZXIiKTsKPiA+ID4gPiA+ID4gPiA+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7Cj4g PiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBLaW5kIHJlZ2FyZHMsCj4gPiA+ID4gPiA+IER5bGFuIFZh biBBc3NjaGUKPiA+ID4gPiAKPiA+ID4gPiBLaW5kIHJlZ2FyZHMsCj4gPiA+ID4gRHlsYW4gVmFu IEFzc2NoZQo+ID4gPiA+IAo+ID4gCj4gPiBLaW5kIHJlZ2FyZHMsCj4gPiBEeWxhbiBWYW4gQXNz Y2hlCj4gPiAKCg==